From dd4acd6cf6e8f7e387a9857e15d0a1b20514842d Mon Sep 17 00:00:00 2001 From: mixayloff-dimaaylov <65488726+mixayloff-dimaaylov@users.noreply.github.com> Date: Sun, 23 Apr 2023 00:55:59 +0300 Subject: [PATCH] chore: Drop old installation ISO files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После перехода на новые версии компонентов кластера эти файлы устарели. С новой системой на базе Docker эти файлы не пригодятся. Вероятно, подход к созданию **самодостаточных** образов будет пересмотрен в будущих релизах. Были попытки использования Git LFS (столкнувшаяся с проблемой нехватки места), затем `git-annex` (который слишком сложен для обывателя), из-за чего осталось много лишних ссылок в соответствующих хранилищах. Удалены метаданные разрешений файлов и фильтры Git LFS, необходимые только для создания ISO-образа. --- .gitattributes | 3 - .permissions | 1231 ------ .../ca-certificates-java_20190214-4_all.deb | 1 - archives/clickhouse-client_20.5.2.7_all.deb | 1 - ...lickhouse-common-static_20.5.2.7_amd64.deb | 1 - archives/clickhouse-server_20.5.2.7_all.deb | 1 - archives/golang-go_2%3a1.7~5_amd64.deb | 1 - ...a-8-jre-headless_8u252-b9-1free1_amd64.deb | 1 - .../gosjava-jre-headless_1.8-62-7_amd64.deb | 1 - archives/grafana_6.2.5-1601016471_amd64.deb | 1 - archives/hadoop-2.6.0.tar.gz | 1 - archives/java-common_0.62-7_all.deb | 1 - archives/kafka_2.13-2.5.0.tgz | 1 - archives/lab50-archive-keyring_2.1_all.deb | 1 - .../libzookeeper-java_3.4.9-3+deb9u2_all.deb | 1 - ....15.3-1-generic_4.15.3-1.astra21_amd64.deb | 1 - ...15.3-1-hardened_4.15.3-1.astra21_amd64.deb | 1 - ...-headers-4.15.3-1_4.15.3-1.astra21_all.deb | 1 - ....15.3-2-generic_4.15.3-2.astra25_amd64.deb | 1 - ...15.3-2-hardened_4.15.3-2.astra25_amd64.deb | 1 - ...-headers-4.15.3-2_4.15.3-2.astra25_all.deb | 1 - archives/ngpsusbpackage.tar.gz | 1 - archives/novatellogreader.tar.gz | 1 - archives/zookeeper_3.4.9-3+deb9u2_all.deb | 1 - archives/zookeeperd_3.4.9-3+deb9u2_all.deb | 1 - docker-compose.yml | 4 - .../systemd/system/clickhouse-proxy.service | 11 - .../config/grafana/etc/default/grafana-server | 24 - .../config/grafana/etc/grafana/ldap.toml | 85 - .../config/grafana/var/lib/grafana/grafana.db | 1 - .../plugins/grafana-piechart-panel/.gitignore | 34 - .../grafana-piechart-panel/Gruntfile.js | 60 - .../plugins/grafana-piechart-panel/LICENSE | 21 - .../plugins/grafana-piechart-panel/README.md | 53 - .../grafana-piechart-panel/dist/README.md | 53 - .../grafana-piechart-panel/dist/editor.html | 62 - .../dist/img/piechart-donut.png | Bin 38209 -> 0 bytes .../dist/img/piechart-legend-on-graph.png | Bin 37972 -> 0 bytes .../dist/img/piechart-legend-rhs.png | Bin 41450 -> 0 bytes .../dist/img/piechart-legend-under.png | Bin 34314 -> 0 bytes .../dist/img/piechart-options.png | Bin 48400 -> 0 bytes .../dist/img/piechart_logo_large.png | Bin 3723 -> 0 bytes .../dist/img/piechart_logo_small.png | Bin 2629 -> 0 bytes .../grafana-piechart-panel/dist/legend.js | 189 - .../grafana-piechart-panel/dist/legend.js.map | 1 - .../grafana-piechart-panel/dist/module.html | 9 - .../grafana-piechart-panel/dist/module.js | 16 - .../grafana-piechart-panel/dist/module.js.map | 1 - .../dist/piechart_ctrl.js | 246 -- .../dist/piechart_ctrl.js.map | 1 - .../grafana-piechart-panel/dist/plugin.json | 37 - .../grafana-piechart-panel/dist/rendering.js | 141 - .../dist/rendering.js.map | 1 - .../dist/src/img/piechart-donut.png | Bin 38209 -> 0 bytes .../dist/src/img/piechart-legend-on-graph.png | Bin 37972 -> 0 bytes .../dist/src/img/piechart-legend-rhs.png | Bin 41450 -> 0 bytes .../dist/src/img/piechart-legend-under.png | Bin 34314 -> 0 bytes .../dist/src/img/piechart-options.png | Bin 48400 -> 0 bytes .../dist/src/img/piechart_logo_large.png | Bin 3723 -> 0 bytes .../dist/src/img/piechart_logo_small.png | Bin 2629 -> 0 bytes .../grafana-piechart-panel/package.json | 30 - .../grafana-piechart-panel/src/editor.html | 62 - .../src/img/piechart-donut.png | Bin 38209 -> 0 bytes .../src/img/piechart-legend-on-graph.png | Bin 37972 -> 0 bytes .../src/img/piechart-legend-rhs.png | Bin 41450 -> 0 bytes .../src/img/piechart-legend-under.png | Bin 34314 -> 0 bytes .../src/img/piechart-options.png | Bin 48400 -> 0 bytes .../src/img/piechart_logo_large.png | Bin 3723 -> 0 bytes .../src/img/piechart_logo_small.png | Bin 2629 -> 0 bytes .../grafana-piechart-panel/src/legend.js | 180 - .../grafana-piechart-panel/src/module.html | 9 - .../grafana-piechart-panel/src/module.js | 6 - .../src/piechart_ctrl.js | 153 - .../grafana-piechart-panel/src/plugin.json | 37 - .../grafana-piechart-panel/src/rendering.js | 124 - .../lib/grafana/plugins/livy-panel/README.md | 0 .../grafana/plugins/livy-panel/css/panel.css | 121 - .../grafana/plugins/livy-panel/editor.html | 54 - .../lib/grafana/plugins/livy-panel/filters.js | 98 - .../grafana/plugins/livy-panel/filters.js.map | 1 - .../grafana/plugins/livy-panel/livy_ctrl.js | 320 -- .../plugins/livy-panel/livy_ctrl.js.map | 1 - .../grafana/plugins/livy-panel/module.html | 58 - .../lib/grafana/plugins/livy-panel/module.js | 16 - .../grafana/plugins/livy-panel/module.js.map | 1 - .../grafana/plugins/livy-panel/plugin.json | 24 - .../grafana/var/lib/grafana/plugins/lp.tar | 1 - .../.gitignore | 4 - .../CHANGELOG.md | 108 - .../Gruntfile.js | 102 - .../vertamedia-clickhouse-datasource/LICENSE | 21 - .../README.md | 354 -- .../dist/CHANGELOG.md | 108 - .../dist/LICENSE | 21 - .../dist/README.md | 354 -- .../dist/adhoc.d.ts | 8 - .../dist/adhoc.js | 50 - .../dist/adhoc.js.map | 1 - .../dist/adhoc.ts | 46 - .../dist/clickhouse-info.js | 1414 ------- .../dist/clickhouse-info.js.map | 1 - .../dist/datasource.d.ts | 28 - .../dist/datasource.js | 173 - .../dist/datasource.js.map | 1 - .../dist/datasource.ts | 182 - .../dist/img/clickhouse_logo.svg | 1 - .../dist/mode-clickhouse.js | 192 - .../dist/mode-clickhouse.js.map | 1 - .../dist/module.d.ts | 6 - .../dist/module.js | 25 - .../dist/module.js.map | 1 - .../dist/module.ts | 12 - .../dist/partials/config.html | 21 - .../dist/partials/query.editor.html | 209 -- .../dist/plugin.json | 29 - .../dist/query_ctrl.d.ts | 56 - .../dist/query_ctrl.js | 305 -- .../dist/query_ctrl.js.map | 1 - .../dist/query_ctrl.ts | 357 -- .../dist/response_parser.d.ts | 4 - .../dist/response_parser.js | 40 - .../dist/response_parser.js.map | 1 - .../dist/response_parser.ts | 25 - .../dist/scanner.d.ts | 24 - .../dist/scanner.js | 447 --- .../dist/scanner.js.map | 1 - .../dist/scanner.ts | 524 --- .../dist/snippets/clickhouse.js | 21 - .../dist/snippets/clickhouse.js.map | 1 - .../dist/sql_query.d.ts | 25 - .../dist/sql_query.js | 332 -- .../dist/sql_query.js.map | 1 - .../dist/sql_query.ts | 377 -- .../dist/sql_series.d.ts | 14 - .../dist/sql_series.js | 143 - .../dist/sql_series.js.map | 1 - .../dist/sql_series.ts | 150 - .../karma.conf.js | 90 - .../package.json | 45 - .../specs/datasource_specs.d.ts | 0 .../specs/datasource_specs.js | 115 - .../specs/datasource_specs.js.map | 1 - .../specs/datasource_specs.ts | 110 - .../specs/lib/common.ts | 24 - .../specs/lib/context_srv_stub.ts | 5 - .../specs/lib/template_srv_stub.ts | 31 - .../specs/lib/time_srv_stub.ts | 26 - .../specs/scanner_specs.d.ts | 0 .../specs/scanner_specs.js | 215 -- .../specs/scanner_specs.js.map | 1 - .../specs/scanner_specs.ts | 450 --- .../src/adhoc.ts | 46 - .../src/clickhouse-info.js | 2132 ----------- .../src/datasource.ts | 182 - .../src/img/clickhouse_logo.svg | 1 - .../src/mode-clickhouse.js | 188 - .../src/module.ts | 12 - .../src/partials/config.html | 21 - .../src/partials/query.editor.html | 209 -- .../src/plugin.json | 29 - .../src/query_ctrl.ts | 357 -- .../src/response_parser.ts | 25 - .../src/scanner.ts | 524 --- .../src/snippets/clickhouse.js | 10 - .../src/sql_query.ts | 377 -- .../src/sql_series.ts | 150 - .../tsconfig.json | 15 - .../tslint.json | 61 - .../conf/connect-console-sink.properties | 19 - .../conf/connect-console-source.properties | 19 - .../kafka/conf/connect-distributed.properties | 51 - .../kafka/conf/connect-file-sink.properties | 20 - .../kafka/conf/connect-file-source.properties | 20 - .../etc/kafka/conf/connect-log4j.properties | 23 - .../kafka/conf/connect-standalone.properties | 37 - .../kafka/etc/kafka/conf/log4j.properties | 87 - .../kafka/etc/kafka/conf/server.properties | 129 - .../etc/kafka/conf/tools-log4j.properties | 21 - .../local/lib/systemd/system/kafka.service | 13 - .../systemd/system/novatellogreader.service | 11 - image_content/config/spark/opt/spark/LICENSE | 300 -- image_content/config/spark/opt/spark/NOTICE | 661 ---- .../spark/opt/spark/R/lib/SparkR/DESCRIPTION | 33 - .../config/spark/opt/spark/R/lib/SparkR/INDEX | 416 -- .../spark/opt/spark/R/lib/SparkR/Meta/Rd.rds | Bin 10886 -> 0 bytes .../opt/spark/R/lib/SparkR/Meta/features.rds | Bin 112 -> 0 bytes .../opt/spark/R/lib/SparkR/Meta/hsearch.rds | Bin 10624 -> 0 bytes .../opt/spark/R/lib/SparkR/Meta/links.rds | Bin 7672 -> 0 bytes .../opt/spark/R/lib/SparkR/Meta/nsInfo.rds | Bin 2703 -> 0 bytes .../opt/spark/R/lib/SparkR/Meta/package.rds | Bin 1134 -> 0 bytes .../spark/opt/spark/R/lib/SparkR/NAMESPACE | 446 --- .../spark/opt/spark/R/lib/SparkR/R/SparkR | 27 - .../spark/opt/spark/R/lib/SparkR/R/SparkR.rdb | 1 - .../spark/opt/spark/R/lib/SparkR/R/SparkR.rdx | Bin 25105 -> 0 bytes .../spark/opt/spark/R/lib/SparkR/help/AnIndex | 812 ---- .../opt/spark/R/lib/SparkR/help/SparkR.rdb | Bin 996577 -> 0 bytes .../opt/spark/R/lib/SparkR/help/SparkR.rdx | Bin 7218 -> 0 bytes .../opt/spark/R/lib/SparkR/help/aliases.rds | Bin 6414 -> 0 bytes .../opt/spark/R/lib/SparkR/help/paths.rds | Bin 2686 -> 0 bytes .../opt/spark/R/lib/SparkR/html/00Index.html | 1715 --------- .../spark/opt/spark/R/lib/SparkR/html/R.css | 97 - .../opt/spark/R/lib/SparkR/profile/general.R | 23 - .../opt/spark/R/lib/SparkR/profile/shell.R | 47 - .../R/lib/SparkR/tests/testthat/test_basic.R | 92 - .../opt/spark/R/lib/SparkR/worker/daemon.R | 55 - .../opt/spark/R/lib/SparkR/worker/worker.R | 264 -- .../config/spark/opt/spark/R/lib/sparkr.zip | 1 - .../config/spark/opt/spark/README.md | 103 - image_content/config/spark/opt/spark/RELEASE | 2 - .../config/spark/opt/spark/bin/beeline | 32 - .../config/spark/opt/spark/bin/beeline.cmd | 20 - .../spark/opt/spark/bin/find-spark-home | 41 - .../spark/opt/spark/bin/find-spark-home.cmd | 60 - .../spark/opt/spark/bin/load-spark-env.cmd | 59 - .../spark/opt/spark/bin/load-spark-env.sh | 63 - .../config/spark/opt/spark/bin/pyspark | 77 - .../config/spark/opt/spark/bin/pyspark.cmd | 23 - .../config/spark/opt/spark/bin/pyspark2.cmd | 38 - .../config/spark/opt/spark/bin/run-example | 25 - .../spark/opt/spark/bin/run-example.cmd | 24 - .../config/spark/opt/spark/bin/spark-class | 99 - .../spark/opt/spark/bin/spark-class.cmd | 23 - .../spark/opt/spark/bin/spark-class2.cmd | 72 - .../config/spark/opt/spark/bin/spark-shell | 95 - .../spark/opt/spark/bin/spark-shell.cmd | 23 - .../spark/opt/spark/bin/spark-shell2.cmd | 37 - .../config/spark/opt/spark/bin/spark-sql | 25 - .../config/spark/opt/spark/bin/spark-submit | 27 - .../spark/opt/spark/bin/spark-submit.cmd | 23 - .../spark/opt/spark/bin/spark-submit2.cmd | 27 - .../config/spark/opt/spark/bin/sparkR | 26 - .../config/spark/opt/spark/bin/sparkR.cmd | 23 - .../config/spark/opt/spark/bin/sparkR2.cmd | 26 - .../opt/spark/conf/docker.properties.template | 20 - .../opt/spark/conf/fairscheduler.xml.template | 31 - .../spark/opt/spark/conf/log4j.properties | 40 - .../opt/spark/conf/log4j.properties.template | 40 - .../spark/conf/metrics.properties.template | 170 - .../config/spark/opt/spark/conf/slaves | 19 - .../spark/opt/spark/conf/slaves.template | 19 - .../spark/opt/spark/conf/spark-defaults.conf | 65 - .../spark/conf/spark-defaults.conf.template | 27 - .../config/spark/opt/spark/conf/spark-env.sh | 72 - .../opt/spark/conf/spark-env.sh.template | 66 - .../spark/opt/spark/data/graphx/followers.txt | 8 - .../spark/opt/spark/data/graphx/users.txt | 7 - .../mllib/als/sample_movielens_ratings.txt | 1501 -------- .../spark/opt/spark/data/mllib/als/test.data | 16 - .../spark/opt/spark/data/mllib/gmm_data.txt | 2000 ---------- .../opt/spark/data/mllib/kmeans_data.txt | 6 - .../opt/spark/data/mllib/pagerank_data.txt | 6 - .../spark/opt/spark/data/mllib/pic_data.txt | 19 - .../opt/spark/data/mllib/ridge-data/lpsa.data | 67 - .../sample_binary_classification_data.txt | 100 - .../opt/spark/data/mllib/sample_fpgrowth.txt | 6 - ...sample_isotonic_regression_libsvm_data.txt | 100 - .../spark/data/mllib/sample_kmeans_data.txt | 6 - .../opt/spark/data/mllib/sample_lda_data.txt | 12 - .../data/mllib/sample_lda_libsvm_data.txt | 12 - .../spark/data/mllib/sample_libsvm_data.txt | 100 - .../mllib/sample_linear_regression_data.txt | 501 --- .../data/mllib/sample_movielens_data.txt | 1501 -------- .../sample_multiclass_classification_data.txt | 150 - .../opt/spark/data/mllib/sample_svm_data.txt | 322 -- .../data/mllib/streaming_kmeans_data_test.txt | 2 - .../opt/spark/data/streaming/AFINN-111.txt | 2477 ------------ .../spark/examples/jars/scopt_2.11-3.3.0.jar | 1 - .../jars/spark-examples_2.11-2.2.1.jar | 1 - .../org/apache/spark/examples/JavaHdfsLR.java | 159 - .../apache/spark/examples/JavaLogQuery.java | 121 - .../apache/spark/examples/JavaPageRank.java | 122 - .../apache/spark/examples/JavaSparkPi.java | 60 - .../spark/examples/JavaStatusTrackerDemo.java | 74 - .../org/apache/spark/examples/JavaTC.java | 98 - .../apache/spark/examples/JavaWordCount.java | 59 - .../ml/JavaAFTSurvivalRegressionExample.java | 82 - .../spark/examples/ml/JavaALSExample.java | 127 - .../examples/ml/JavaBinarizerExample.java | 68 - .../ml/JavaBisectingKMeansExample.java | 67 - ...avaBucketedRandomProjectionLSHExample.java | 110 - .../examples/ml/JavaBucketizerExample.java | 75 - .../examples/ml/JavaChiSqSelectorExample.java | 74 - .../examples/ml/JavaChiSquareTestExample.java | 75 - .../examples/ml/JavaCorrelationExample.java | 72 - .../ml/JavaCountVectorizerExample.java | 69 - .../spark/examples/ml/JavaDCTExample.java | 68 - ...JavaDecisionTreeClassificationExample.java | 104 - .../ml/JavaDecisionTreeRegressionExample.java | 89 - .../spark/examples/ml/JavaDocument.java | 43 - .../ml/JavaElementwiseProductExample.java | 73 - .../JavaEstimatorTransformerParamExample.java | 117 - .../examples/ml/JavaFPGrowthExample.java | 77 - .../ml/JavaGaussianMixtureExample.java | 64 - ...avaGeneralizedLinearRegressionExample.java | 83 - ...aGradientBoostedTreeClassifierExample.java | 105 - ...vaGradientBoostedTreeRegressorExample.java | 90 - .../spark/examples/ml/JavaImputerExample.java | 71 - .../examples/ml/JavaIndexToStringExample.java | 87 - .../examples/ml/JavaInteractionExample.java | 87 - .../ml/JavaIsotonicRegressionExample.java | 62 - .../spark/examples/ml/JavaKMeansExample.java | 68 - .../spark/examples/ml/JavaLDAExample.java | 69 - .../examples/ml/JavaLabeledDocument.java | 38 - ...LinearRegressionWithElasticNetExample.java | 65 - .../examples/ml/JavaLinearSVCExample.java | 54 - .../JavaLogisticRegressionSummaryExample.java | 84 - ...gisticRegressionWithElasticNetExample.java | 69 - .../examples/ml/JavaMaxAbsScalerExample.java | 73 - .../examples/ml/JavaMinHashLSHExample.java | 111 - .../examples/ml/JavaMinMaxScalerExample.java | 74 - ...delSelectionViaCrossValidationExample.java | 120 - ...lectionViaTrainValidationSplitExample.java | 87 - ...gisticRegressionWithElasticNetExample.java | 55 - ...MultilayerPerceptronClassifierExample.java | 76 - .../spark/examples/ml/JavaNGramExample.java | 66 - .../examples/ml/JavaNaiveBayesExample.java | 70 - .../examples/ml/JavaNormalizerExample.java | 74 - .../examples/ml/JavaOneHotEncoderExample.java | 79 - .../examples/ml/JavaOneVsRestExample.java | 84 - .../spark/examples/ml/JavaPCAExample.java | 70 - .../examples/ml/JavaPipelineExample.java | 88 - .../ml/JavaPolynomialExpansionExample.java | 66 - .../ml/JavaQuantileDiscretizerExample.java | 73 - .../examples/ml/JavaRFormulaExample.java | 68 - .../ml/JavaRandomForestClassifierExample.java | 101 - .../ml/JavaRandomForestRegressorExample.java | 90 - .../ml/JavaSQLTransformerExample.java | 59 - .../ml/JavaStandardScalerExample.java | 55 - .../ml/JavaStopWordsRemoverExample.java | 64 - .../examples/ml/JavaStringIndexerExample.java | 68 - .../spark/examples/ml/JavaTfIdfExample.java | 78 - .../examples/ml/JavaTokenizerExample.java | 87 - .../ml/JavaVectorAssemblerExample.java | 66 - .../examples/ml/JavaVectorIndexerExample.java | 61 - .../examples/ml/JavaVectorSlicerExample.java | 73 - .../examples/ml/JavaWord2VecExample.java | 72 - .../apache/spark/examples/mllib/JavaALS.java | 90 - .../mllib/JavaAssociationRulesExample.java | 58 - ...avaBinaryClassificationMetricsExample.java | 102 - .../mllib/JavaBisectingKMeansExample.java | 66 - .../mllib/JavaChiSqSelectorExample.java | 65 - .../mllib/JavaCorrelationsExample.java | 71 - ...JavaDecisionTreeClassificationExample.java | 79 - .../JavaDecisionTreeRegressionExample.java | 79 - .../mllib/JavaElementwiseProductExample.java | 59 - .../mllib/JavaGaussianMixtureExample.java | 68 - ...GradientBoostingClassificationExample.java | 81 - ...JavaGradientBoostingRegressionExample.java | 80 - .../mllib/JavaHypothesisTestingExample.java | 84 - ...isTestingKolmogorovSmirnovTestExample.java | 49 - .../mllib/JavaIsotonicRegressionExample.java | 74 - .../examples/mllib/JavaKMeansExample.java | 75 - .../JavaKernelDensityEstimationExample.java | 53 - .../examples/mllib/JavaLBFGSExample.java | 101 - .../JavaLatentDirichletAllocationExample.java | 82 - .../JavaLinearRegressionWithSGDExample.java | 81 - ...avaLogisticRegressionWithLBFGSExample.java | 73 - ...ultiLabelClassificationMetricsExample.java | 80 - ...ulticlassClassificationMetricsExample.java | 90 - .../examples/mllib/JavaNaiveBayesExample.java | 55 - .../spark/examples/mllib/JavaPCAExample.java | 71 - .../JavaPowerIterationClusteringExample.java | 61 - .../examples/mllib/JavaPrefixSpanExample.java | 57 - ...JavaRandomForestClassificationExample.java | 80 - .../JavaRandomForestRegressionExample.java | 80 - .../mllib/JavaRankingMetricsExample.java | 138 - .../mllib/JavaRecommendationExample.java | 75 - .../mllib/JavaRegressionMetricsExample.java | 83 - .../spark/examples/mllib/JavaSVDExample.java | 74 - .../examples/mllib/JavaSVMWithSGDExample.java | 75 - .../examples/mllib/JavaSimpleFPGrowth.java | 63 - .../mllib/JavaStratifiedSamplingExample.java | 72 - .../mllib/JavaStreamingTestExample.java | 104 - .../mllib/JavaSummaryStatisticsExample.java | 56 - .../sql/JavaSQLDataSourceExample.java | 288 -- .../examples/sql/JavaSparkSQLExample.java | 344 -- .../sql/JavaUserDefinedTypedAggregation.java | 160 - .../JavaUserDefinedUntypedAggregation.java | 132 - .../sql/hive/JavaSparkHiveExample.java | 129 - .../JavaStructuredKafkaWordCount.java | 92 - .../JavaStructuredNetworkWordCount.java | 78 - ...avaStructuredNetworkWordCountWindowed.java | 112 - .../JavaStructuredSessionization.java | 252 -- .../streaming/JavaCustomReceiver.java | 134 - .../streaming/JavaDirectKafkaWordCount.java | 93 - .../streaming/JavaFlumeEventCount.java | 69 - .../streaming/JavaKafkaWordCount.java | 87 - .../streaming/JavaNetworkWordCount.java | 73 - .../examples/streaming/JavaQueueStream.java | 71 - .../spark/examples/streaming/JavaRecord.java | 31 - .../JavaRecoverableNetworkWordCount.java | 191 - .../streaming/JavaSqlNetworkWordCount.java | 108 - .../JavaStatefulNetworkWordCount.java | 95 - .../opt/spark/examples/src/main/python/als.py | 108 - .../src/main/python/avro_inputformat.py | 91 - .../spark/examples/src/main/python/kmeans.py | 86 - .../src/main/python/logistic_regression.py | 88 - .../main/python/ml/aft_survival_regression.py | 58 - .../src/main/python/ml/als_example.py | 67 - .../src/main/python/ml/binarizer_example.py | 46 - .../python/ml/bisecting_k_means_example.py | 56 - .../bucketed_random_projection_lsh_example.py | 81 - .../src/main/python/ml/bucketizer_example.py | 46 - .../main/python/ml/chi_square_test_example.py | 52 - .../main/python/ml/chisq_selector_example.py | 47 - .../src/main/python/ml/correlation_example.py | 51 - .../python/ml/count_vectorizer_example.py | 47 - .../src/main/python/ml/cross_validator.py | 100 - .../src/main/python/ml/dataframe_example.py | 79 - .../src/main/python/ml/dct_example.py | 45 - .../decision_tree_classification_example.py | 78 - .../ml/decision_tree_regression_example.py | 75 - .../python/ml/elementwise_product_example.py | 42 - .../ml/estimator_transformer_param_example.py | 93 - .../src/main/python/ml/fpgrowth_example.py | 56 - .../python/ml/gaussian_mixture_example.py | 48 - .../generalized_linear_regression_example.py | 66 - ...radient_boosted_tree_classifier_example.py | 77 - ...gradient_boosted_tree_regressor_example.py | 74 - .../src/main/python/ml/imputer_example.py | 50 - .../main/python/ml/index_to_string_example.py | 54 - .../python/ml/isotonic_regression_example.py | 54 - .../src/main/python/ml/kmeans_example.py | 59 - .../src/main/python/ml/lda_example.py | 61 - .../ml/linear_regression_with_elastic_net.py | 54 - .../examples/src/main/python/ml/linearsvc.py | 46 - .../ml/logistic_regression_summary_example.py | 68 - .../logistic_regression_with_elastic_net.py | 55 - .../main/python/ml/max_abs_scaler_example.py | 50 - .../main/python/ml/min_hash_lsh_example.py | 81 - .../main/python/ml/min_max_scaler_example.py | 50 - ...ss_logistic_regression_with_elastic_net.py | 48 - .../multilayer_perceptron_classification.py | 58 - .../src/main/python/ml/n_gram_example.py | 44 - .../src/main/python/ml/naive_bayes_example.py | 59 - .../src/main/python/ml/normalizer_example.py | 51 - .../src/main/python/ml/one_vs_rest_example.py | 67 - .../main/python/ml/onehot_encoder_example.py | 50 - .../src/main/python/ml/pca_example.py | 45 - .../src/main/python/ml/pipeline_example.py | 69 - .../python/ml/polynomial_expansion_example.py | 45 - .../python/ml/quantile_discretizer_example.py | 48 - .../ml/random_forest_classifier_example.py | 82 - .../ml/random_forest_regressor_example.py | 74 - .../src/main/python/ml/rformula_example.py | 47 - .../src/main/python/ml/sql_transformer.py | 41 - .../main/python/ml/standard_scaler_example.py | 44 - .../python/ml/stopwords_remover_example.py | 41 - .../main/python/ml/string_indexer_example.py | 41 - .../src/main/python/ml/tf_idf_example.py | 52 - .../src/main/python/ml/tokenizer_example.py | 56 - .../main/python/ml/train_validation_split.py | 74 - .../python/ml/vector_assembler_example.py | 46 - .../main/python/ml/vector_indexer_example.py | 46 - .../main/python/ml/vector_slicer_example.py | 45 - .../src/main/python/ml/word2vec_example.py | 49 - .../binary_classification_metrics_example.py | 56 - .../python/mllib/bisecting_k_means_example.py | 45 - .../src/main/python/mllib/correlations.py | 61 - .../main/python/mllib/correlations_example.py | 48 - .../decision_tree_classification_example.py | 56 - .../mllib/decision_tree_regression_example.py | 56 - .../mllib/elementwise_product_example.py | 51 - .../src/main/python/mllib/fpgrowth_example.py | 33 - .../python/mllib/gaussian_mixture_example.py | 51 - .../python/mllib/gaussian_mixture_model.py | 74 - ...radient_boosting_classification_example.py | 56 - .../gradient_boosting_regression_example.py | 55 - .../mllib/hypothesis_testing_example.py | 65 - ...testing_kolmogorov_smirnov_test_example.py | 40 - .../mllib/isotonic_regression_example.py | 61 - .../src/main/python/mllib/k_means_example.py | 54 - .../kernel_density_estimation_example.py | 44 - .../examples/src/main/python/mllib/kmeans.py | 47 - .../latent_dirichlet_allocation_example.py | 54 - .../linear_regression_with_sgd_example.py | 54 - .../main/python/mllib/logistic_regression.py | 52 - .../logistic_regression_with_lbfgs_example.py | 54 - .../mllib/multi_class_metrics_example.py | 69 - .../mllib/multi_label_metrics_example.py | 61 - .../main/python/mllib/naive_bayes_example.py | 65 - .../main/python/mllib/normalizer_example.py | 52 - .../python/mllib/pca_rowmatrix_example.py | 46 - .../power_iteration_clustering_example.py | 44 - .../random_forest_classification_example.py | 57 - .../mllib/random_forest_regression_example.py | 57 - .../python/mllib/random_rdd_generation.py | 56 - .../python/mllib/ranking_metrics_example.py | 55 - .../python/mllib/recommendation_example.py | 52 - .../mllib/regression_metrics_example.py | 59 - .../src/main/python/mllib/sampled_rdds.py | 87 - .../python/mllib/standard_scaler_example.py | 53 - .../mllib/stratified_sampling_example.py | 38 - .../python/mllib/streaming_k_means_example.py | 66 - .../streaming_linear_regression_example.py | 62 - .../mllib/summary_statistics_example.py | 42 - .../src/main/python/mllib/svd_example.py | 48 - .../main/python/mllib/svm_with_sgd_example.py | 47 - .../src/main/python/mllib/tf_idf_example.py | 57 - .../src/main/python/mllib/word2vec.py | 51 - .../src/main/python/mllib/word2vec_example.py | 40 - .../examples/src/main/python/pagerank.py | 88 - .../src/main/python/parquet_inputformat.py | 68 - .../opt/spark/examples/src/main/python/pi.py | 46 - .../spark/examples/src/main/python/sort.py | 45 - .../examples/src/main/python/sql/basic.py | 216 -- .../src/main/python/sql/datasource.py | 213 -- .../examples/src/main/python/sql/hive.py | 96 - .../streaming/structured_kafka_wordcount.py | 90 - .../streaming/structured_network_wordcount.py | 77 - .../structured_network_wordcount_windowed.py | 102 - .../src/main/python/status_api_demo.py | 73 - .../streaming/direct_kafka_wordcount.py | 56 - .../main/python/streaming/flume_wordcount.py | 56 - .../main/python/streaming/hdfs_wordcount.py | 50 - .../main/python/streaming/kafka_wordcount.py | 56 - .../python/streaming/network_wordcount.py | 49 - .../streaming/network_wordjoinsentiments.py | 77 - .../src/main/python/streaming/queue_stream.py | 49 - .../recoverable_network_wordcount.py | 109 - .../python/streaming/sql_network_wordcount.py | 85 - .../streaming/stateful_network_wordcount.py | 61 - .../src/main/python/transitive_closure.py | 74 - .../examples/src/main/python/wordcount.py | 44 - .../examples/src/main/r/RSparkSQLExample.R | 218 -- .../examples/src/main/r/data-manipulation.R | 103 - .../opt/spark/examples/src/main/r/dataframe.R | 59 - .../opt/spark/examples/src/main/r/ml/als.R | 47 - .../examples/src/main/r/ml/bisectingKmeans.R | 45 - .../opt/spark/examples/src/main/r/ml/fpm.R | 50 - .../examples/src/main/r/ml/gaussianMixture.R | 44 - .../opt/spark/examples/src/main/r/ml/gbt.R | 65 - .../opt/spark/examples/src/main/r/ml/glm.R | 71 - .../opt/spark/examples/src/main/r/ml/isoreg.R | 44 - .../opt/spark/examples/src/main/r/ml/kmeans.R | 48 - .../opt/spark/examples/src/main/r/ml/kstest.R | 41 - .../opt/spark/examples/src/main/r/ml/lda.R | 48 - .../opt/spark/examples/src/main/r/ml/logit.R | 65 - .../opt/spark/examples/src/main/r/ml/ml.R | 65 - .../opt/spark/examples/src/main/r/ml/mlp.R | 50 - .../spark/examples/src/main/r/ml/naiveBayes.R | 43 - .../examples/src/main/r/ml/randomForest.R | 65 - .../spark/examples/src/main/r/ml/survreg.R | 46 - .../spark/examples/src/main/r/ml/svmLinear.R | 42 - .../streaming/structured_network_wordcount.R | 57 - .../src/main/resources/employees.json | 4 - .../src/main/resources/full_user.avsc | 1 - .../spark/examples/src/main/resources/kv1.txt | 500 --- .../examples/src/main/resources/people.json | 3 - .../examples/src/main/resources/people.txt | 3 - .../examples/src/main/resources/user.avsc | 8 - .../examples/src/main/resources/users.avro | Bin 334 -> 0 bytes .../examples/src/main/resources/users.parquet | Bin 615 -> 0 bytes .../apache/spark/examples/BroadcastTest.scala | 58 - .../spark/examples/DFSReadWriteTest.scala | 139 - .../spark/examples/DriverSubmissionTest.scala | 52 - .../examples/ExceptionHandlingTest.scala | 37 - .../apache/spark/examples/GroupByTest.scala | 58 - .../org/apache/spark/examples/HdfsTest.scala | 47 - .../org/apache/spark/examples/LocalALS.scala | 144 - .../apache/spark/examples/LocalFileLR.scala | 77 - .../apache/spark/examples/LocalKMeans.scala | 121 - .../org/apache/spark/examples/LocalLR.scala | 79 - .../org/apache/spark/examples/LocalPi.scala | 34 - .../org/apache/spark/examples/LogQuery.scala | 86 - .../spark/examples/MultiBroadcastTest.scala | 60 - .../examples/SimpleSkewedGroupByTest.scala | 71 - .../spark/examples/SkewedGroupByTest.scala | 62 - .../org/apache/spark/examples/SparkALS.scala | 152 - .../apache/spark/examples/SparkHdfsLR.scala | 96 - .../apache/spark/examples/SparkKMeans.scala | 106 - .../org/apache/spark/examples/SparkLR.scala | 91 - .../apache/spark/examples/SparkPageRank.scala | 85 - .../org/apache/spark/examples/SparkPi.scala | 43 - .../org/apache/spark/examples/SparkTC.scala | 75 - .../graphx/AggregateMessagesExample.scala | 72 - .../spark/examples/graphx/Analytics.scala | 157 - .../graphx/ComprehensiveExample.scala | 80 - .../graphx/ConnectedComponentsExample.scala | 68 - .../examples/graphx/LiveJournalPageRank.scala | 46 - .../examples/graphx/PageRankExample.scala | 61 - .../spark/examples/graphx/SSSPExample.scala | 69 - .../examples/graphx/SynthBenchmark.scala | 132 - .../graphx/TriangleCountingExample.scala | 70 - .../ml/AFTSurvivalRegressionExample.scala | 67 - .../apache/spark/examples/ml/ALSExample.scala | 91 - .../spark/examples/ml/BinarizerExample.scala | 51 - .../examples/ml/BisectingKMeansExample.scala | 65 - .../BucketedRandomProjectionLSHExample.scala | 91 - .../spark/examples/ml/BucketizerExample.scala | 55 - .../examples/ml/ChiSqSelectorExample.scala | 59 - .../examples/ml/ChiSquareTestExample.scala | 63 - .../examples/ml/CorrelationExample.scala | 63 - .../examples/ml/CountVectorizerExample.scala | 60 - .../apache/spark/examples/ml/DCTExample.scala | 55 - .../spark/examples/ml/DataFrameExample.scala | 102 - .../DecisionTreeClassificationExample.scala | 95 - .../examples/ml/DecisionTreeExample.scala | 347 -- .../ml/DecisionTreeRegressionExample.scala | 85 - .../examples/ml/DeveloperApiExample.scala | 188 - .../ml/ElementwiseProductExample.scala | 53 - .../ml/EstimatorTransformerParamExample.scala | 100 - .../spark/examples/ml/FPGrowthExample.scala | 67 - .../apache/spark/examples/ml/GBTExample.scala | 242 -- .../examples/ml/GaussianMixtureExample.scala | 60 - .../GeneralizedLinearRegressionExample.scala | 78 - ...GradientBoostedTreeClassifierExample.scala | 97 - .../GradientBoostedTreeRegressorExample.scala | 85 - .../spark/examples/ml/ImputerExample.scala | 56 - .../examples/ml/IndexToStringExample.scala | 72 - .../examples/ml/InteractionExample.scala | 68 - .../ml/IsotonicRegressionExample.scala | 60 - .../spark/examples/ml/KMeansExample.scala | 62 - .../apache/spark/examples/ml/LDAExample.scala | 68 - .../examples/ml/LinearRegressionExample.scala | 140 - ...inearRegressionWithElasticNetExample.scala | 62 - .../spark/examples/ml/LinearSVCExample.scala | 52 - .../ml/LogisticRegressionExample.scala | 161 - .../ml/LogisticRegressionSummaryExample.scala | 78 - ...isticRegressionWithElasticNetExample.scala | 66 - .../examples/ml/MaxAbsScalerExample.scala | 54 - .../spark/examples/ml/MinHashLSHExample.scala | 90 - .../examples/ml/MinMaxScalerExample.scala | 57 - ...elSelectionViaCrossValidationExample.scala | 120 - ...ectionViaTrainValidationSplitExample.scala | 81 - ...isticRegressionWithElasticNetExample.scala | 57 - ...ultilayerPerceptronClassifierExample.scala | 75 - .../spark/examples/ml/NGramExample.scala | 49 - .../spark/examples/ml/NaiveBayesExample.scala | 61 - .../spark/examples/ml/NormalizerExample.scala | 60 - .../examples/ml/OneHotEncoderExample.scala | 60 - .../spark/examples/ml/OneVsRestExample.scala | 79 - .../apache/spark/examples/ml/PCAExample.scala | 55 - .../spark/examples/ml/PipelineExample.scala | 93 - .../ml/PolynomialExpansionExample.scala | 54 - .../ml/QuantileDiscretizerExample.scala | 53 - .../spark/examples/ml/RFormulaExample.scala | 52 - .../ml/RandomForestClassifierExample.scala | 97 - .../examples/ml/RandomForestExample.scala | 250 -- .../ml/RandomForestRegressorExample.scala | 84 - .../examples/ml/SQLTransformerExample.scala | 46 - .../examples/ml/StandardScalerExample.scala | 53 - .../examples/ml/StopWordsRemoverExample.scala | 49 - .../examples/ml/StringIndexerExample.scala | 49 - .../spark/examples/ml/TfIdfExample.scala | 60 - .../spark/examples/ml/TokenizerExample.scala | 61 - .../examples/ml/UnaryTransformerExample.scala | 124 - .../examples/ml/VectorAssemblerExample.scala | 51 - .../examples/ml/VectorIndexerExample.scala | 55 - .../examples/ml/VectorSlicerExample.scala | 63 - .../spark/examples/ml/Word2VecExample.scala | 59 - .../spark/examples/mllib/AbstractParams.scala | 53 - .../mllib/AssociationRulesExample.scala | 55 - .../examples/mllib/BinaryClassification.scala | 156 - .../BinaryClassificationMetricsExample.scala | 104 - .../mllib/BisectingKMeansExample.scala | 60 - .../examples/mllib/ChiSqSelectorExample.scala | 61 - .../spark/examples/mllib/Correlations.scala | 93 - .../examples/mllib/CorrelationsExample.scala | 62 - .../examples/mllib/CosineSimilarity.scala | 108 - .../DecisionTreeClassificationExample.scala | 69 - .../mllib/DecisionTreeRegressionExample.scala | 68 - .../examples/mllib/DecisionTreeRunner.scala | 367 -- .../spark/examples/mllib/DenseKMeans.scala | 110 - .../mllib/ElementwiseProductExample.scala | 56 - .../examples/mllib/FPGrowthExample.scala | 83 - .../mllib/GaussianMixtureExample.scala | 57 - .../mllib/GradientBoostedTreesRunner.scala | 146 - ...radientBoostingClassificationExample.scala | 71 - .../GradientBoostingRegressionExample.scala | 68 - .../mllib/HypothesisTestingExample.scala | 80 - ...sTestingKolmogorovSmirnovTestExample.scala | 54 - .../mllib/IsotonicRegressionExample.scala | 69 - .../spark/examples/mllib/KMeansExample.scala | 56 - .../KernelDensityEstimationExample.scala | 54 - .../spark/examples/mllib/LBFGSExample.scala | 91 - .../spark/examples/mllib/LDAExample.scala | 238 -- .../LatentDirichletAllocationExample.scala | 62 - .../examples/mllib/LinearRegression.scala | 138 - .../LinearRegressionWithSGDExample.scala | 65 - .../LogisticRegressionWithLBFGSExample.scala | 69 - .../spark/examples/mllib/MovieLensALS.scala | 191 - .../mllib/MultiLabelMetricsExample.scala | 71 - .../mllib/MulticlassMetricsExample.scala | 97 - .../mllib/MultivariateSummarizer.scala | 99 - .../examples/mllib/NaiveBayesExample.scala | 53 - .../examples/mllib/NormalizerExample.scala | 57 - .../spark/examples/mllib/PCAExample.scala | 75 - .../mllib/PCAOnRowMatrixExample.scala | 60 - .../mllib/PCAOnSourceVectorExample.scala | 59 - .../mllib/PMMLModelExportExample.scala | 59 - .../PowerIterationClusteringExample.scala | 150 - .../examples/mllib/PrefixSpanExample.scala | 53 - .../RandomForestClassificationExample.scala | 69 - .../mllib/RandomForestRegressionExample.scala | 70 - .../examples/mllib/RandomRDDGeneration.scala | 61 - .../mllib/RankingMetricsExample.scala | 110 - .../mllib/RecommendationExample.scala | 69 - .../mllib/RegressionMetricsExample.scala | 74 - .../spark/examples/mllib/SVDExample.scala | 66 - .../examples/mllib/SVMWithSGDExample.scala | 70 - .../spark/examples/mllib/SampledRDDs.scala | 127 - .../spark/examples/mllib/SimpleFPGrowth.scala | 60 - .../examples/mllib/SparseNaiveBayes.scala | 103 - .../mllib/StandardScalerExample.scala | 60 - .../mllib/StratifiedSamplingExample.scala | 53 - .../mllib/StreamingKMeansExample.scala | 83 - .../StreamingLinearRegressionExample.scala | 77 - .../mllib/StreamingLogisticRegression.scala | 75 - .../examples/mllib/StreamingTestExample.scala | 92 - .../mllib/SummaryStatisticsExample.scala | 53 - .../spark/examples/mllib/TFIDFExample.scala | 66 - .../spark/examples/mllib/TallSkinnyPCA.scala | 62 - .../spark/examples/mllib/TallSkinnySVD.scala | 62 - .../examples/mllib/Word2VecExample.scala | 55 - .../pythonconverters/AvroConverters.scala | 148 - .../spark/examples/sql/RDDRelation.scala | 82 - .../examples/sql/SQLDataSourceExample.scala | 207 - .../spark/examples/sql/SparkSQLExample.scala | 275 -- .../sql/UserDefinedTypedAggregation.scala | 91 - .../sql/UserDefinedUntypedAggregation.scala | 100 - .../examples/sql/hive/SparkHiveExample.scala | 109 - .../streaming/StructuredKafkaWordCount.scala | 93 - .../StructuredNetworkWordCount.scala | 75 - .../StructuredNetworkWordCountWindowed.scala | 103 - .../streaming/StructuredSessionization.scala | 151 - .../examples/streaming/CustomReceiver.scala | 107 - .../streaming/DirectKafkaWordCount.scala | 74 - .../examples/streaming/FlumeEventCount.scala | 70 - .../streaming/FlumePollingEventCount.scala | 67 - .../examples/streaming/HdfsWordCount.scala | 57 - .../examples/streaming/KafkaWordCount.scala | 105 - .../examples/streaming/NetworkWordCount.scala | 61 - .../examples/streaming/QueueStream.scala | 55 - .../examples/streaming/RawNetworkGrep.scala | 62 - .../RecoverableNetworkWordCount.scala | 166 - .../streaming/SqlNetworkWordCount.scala | 104 - .../streaming/StatefulNetworkWordCount.scala | 76 - .../streaming/StreamingExamples.scala | 38 - .../clickstream/PageViewGenerator.scala | 113 - .../clickstream/PageViewStream.scala | 115 - .../opt/spark/jars/RoaringBitmap-0.5.11.jar | 1 - .../opt/spark/jars/antlr4-runtime-4.5.3.jar | 1 - .../jars/aopalliance-repackaged-2.4.0-b34.jar | 1 - .../spark/jars/arpack_combined_all-0.1.jar | 1 - .../spark/jars/avro-mapred-1.7.7-hadoop2.jar | 1 - .../spark/jars/breeze-macros_2.11-0.13.2.jar | 1 - .../opt/spark/jars/breeze_2.11-0.13.2.jar | 1 - .../spark/opt/spark/jars/chill-java-0.8.0.jar | 1 - .../spark/opt/spark/jars/chill_2.11-0.8.0.jar | 1 - .../opt/spark/jars/commons-codec-1.10.jar | 1 - .../opt/spark/jars/commons-compiler-3.0.0.jar | 1 - .../opt/spark/jars/commons-crypto-1.0.0.jar | 1 - .../opt/spark/jars/commons-lang3-3.5.jar | 1 - .../opt/spark/jars/commons-math3-3.4.1.jar | 1 - .../spark/opt/spark/jars/commons-net-2.2.jar | 1 - .../opt/spark/jars/compress-lzf-1.0.3.jar | 1 - .../spark/opt/spark/jars/core-1.1.2.jar | 1 - .../opt/spark/jars/hk2-api-2.4.0-b34.jar | 1 - .../opt/spark/jars/hk2-locator-2.4.0-b34.jar | 1 - .../opt/spark/jars/hk2-utils-2.4.0-b34.jar | 1 - .../spark/opt/spark/jars/httpclient-4.5.2.jar | 1 - .../spark/opt/spark/jars/httpmime-4.5.2.jar | 1 - .../config/spark/opt/spark/jars/ivy-2.4.0.jar | 1 - .../spark/jars/jackson-annotations-2.6.5.jar | 1 - .../opt/spark/jars/jackson-core-2.6.5.jar | 1 - .../opt/spark/jars/jackson-databind-2.6.5.jar | 1 - .../jars/jackson-module-paranamer-2.6.5.jar | 1 - .../jars/jackson-module-scala_2.11-2.6.5.jar | 1 - .../spark/opt/spark/jars/janino-3.0.0.jar | 1 - .../opt/spark/jars/javassist-3.18.1-GA.jar | 1 - .../spark/jars/javax.annotation-api-1.2.jar | 1 - .../opt/spark/jars/javax.inject-2.4.0-b34.jar | 1 - .../spark/jars/javax.servlet-api-3.1.0.jar | 1 - .../opt/spark/jars/javax.ws.rs-api-2.0.1.jar | 1 - .../opt/spark/jars/jcl-over-slf4j-1.7.16.jar | 1 - .../opt/spark/jars/jersey-client-2.22.2.jar | 1 - .../opt/spark/jars/jersey-common-2.22.2.jar | 1 - .../jars/jersey-container-servlet-2.22.2.jar | 1 - .../jersey-container-servlet-core-2.22.2.jar | 1 - .../opt/spark/jars/jersey-guava-2.22.2.jar | 1 - .../spark/jars/jersey-media-jaxb-2.22.2.jar | 1 - .../opt/spark/jars/jersey-server-2.22.2.jar | 1 - .../spark/opt/spark/jars/jline-2.12.1.jar | 1 - .../opt/spark/jars/json4s-ast_2.11-3.2.11.jar | 1 - .../spark/jars/json4s-core_2.11-3.2.11.jar | 1 - .../spark/jars/json4s-jackson_2.11-3.2.11.jar | 1 - .../spark/opt/spark/jars/jsr305-1.3.9.jar | 1 - .../opt/spark/jars/jtransforms-2.4.0.jar | 1 - .../opt/spark/jars/jul-to-slf4j-1.7.16.jar | 1 - .../opt/spark/jars/kryo-shaded-3.0.3.jar | 1 - .../opt/spark/jars/leveldbjni-all-1.8.jar | 1 - .../config/spark/opt/spark/jars/lz4-1.3.0.jar | 1 - .../opt/spark/jars/machinist_2.11-0.6.1.jar | 1 - .../spark/jars/macro-compat_2.11-1.1.1.jar | 1 - .../jars/mesos-1.0.0-shaded-protobuf.jar | 1 - .../opt/spark/jars/metrics-core-3.1.2.jar | 1 - .../opt/spark/jars/metrics-graphite-3.1.2.jar | 1 - .../opt/spark/jars/metrics-json-3.1.2.jar | 1 - .../opt/spark/jars/metrics-jvm-3.1.2.jar | 1 - .../spark/opt/spark/jars/minlog-1.3.0.jar | 1 - .../opt/spark/jars/netty-3.9.9.Final.jar | 1 - .../opt/spark/jars/netty-all-4.0.43.Final.jar | 1 - .../jars/novatel-streaming-assembly-1.0.jar | 1 - .../spark/opt/spark/jars/objenesis-2.1.jar | 1 - .../spark/opt/spark/jars/opencsv-2.3.jar | 1 - .../config/spark/opt/spark/jars/oro-2.0.8.jar | 1 - .../jars/osgi-resource-locator-1.0.1.jar | 1 - .../spark/opt/spark/jars/paranamer-2.6.jar | 1 - .../opt/spark/jars/parquet-column-1.8.2.jar | 1 - .../opt/spark/jars/parquet-common-1.8.2.jar | 1 - .../opt/spark/jars/parquet-encoding-1.8.2.jar | 1 - .../opt/spark/jars/parquet-format-2.3.1.jar | 1 - .../opt/spark/jars/parquet-hadoop-1.8.2.jar | 1 - .../opt/spark/jars/parquet-jackson-1.8.2.jar | 1 - .../opt/spark/jars/pmml-model-1.2.15.jar | 1 - .../opt/spark/jars/pmml-schema-1.2.15.jar | 1 - .../spark/opt/spark/jars/py4j-0.10.4.jar | 1 - .../spark/opt/spark/jars/pyrolite-4.13.jar | 1 - .../opt/spark/jars/scala-compiler-2.11.8.jar | 1 - .../opt/spark/jars/scala-library-2.11.8.jar | 1 - .../scala-parser-combinators_2.11-1.0.4.jar | 1 - .../opt/spark/jars/scala-reflect-2.11.8.jar | 1 - .../opt/spark/jars/scala-xml_2.11-1.0.2.jar | 1 - .../spark/opt/spark/jars/scalap-2.11.8.jar | 1 - .../opt/spark/jars/shapeless_2.11-2.3.2.jar | 1 - .../spark/jars/spark-catalyst_2.11-2.2.1.jar | 1 - .../opt/spark/jars/spark-core_2.11-2.2.1.jar | 1 - .../spark/jars/spark-graphx_2.11-2.2.1.jar | 1 - .../spark/jars/spark-launcher_2.11-2.2.1.jar | 1 - .../opt/spark/jars/spark-mesos_2.11-2.2.1.jar | 1 - .../jars/spark-mllib-local_2.11-2.2.1.jar | 1 - .../opt/spark/jars/spark-mllib_2.11-2.2.1.jar | 1 - .../jars/spark-network-common_2.11-2.2.1.jar | 1 - .../jars/spark-network-shuffle_2.11-2.2.1.jar | 1 - .../jars/spark-opentsdb-assembly-2.1.jar | 1 - .../opt/spark/jars/spark-repl_2.11-2.2.1.jar | 1 - .../spark/jars/spark-sketch_2.11-2.2.1.jar | 1 - .../opt/spark/jars/spark-sql_2.11-2.2.1.jar | 1 - .../spark/jars/spark-streaming_2.11-2.2.1.jar | 1 - .../opt/spark/jars/spark-tags_2.11-2.2.1.jar | 1 - .../spark/jars/spark-unsafe_2.11-2.2.1.jar | 1 - .../opt/spark/jars/spark-yarn_2.11-2.2.1.jar | 1 - .../spark/jars/spire-macros_2.11-0.13.0.jar | 1 - .../opt/spark/jars/spire_2.11-0.13.0.jar | 1 - .../spark/opt/spark/jars/stream-2.7.0.jar | 1 - .../spark/jars/univocity-parsers-2.2.1.jar | 1 - .../spark/jars/validation-api-1.1.0.Final.jar | 1 - .../opt/spark/jars/xbean-asm5-shaded-4.4.jar | 1 - .../opt/spark/licenses/LICENSE-AnchorJS.txt | 21 - .../opt/spark/licenses/LICENSE-DPark.txt | 30 - .../opt/spark/licenses/LICENSE-Mockito.txt | 21 - .../opt/spark/licenses/LICENSE-SnapTree.txt | 35 - .../opt/spark/licenses/LICENSE-antlr.txt | 8 - .../spark/opt/spark/licenses/LICENSE-boto.txt | 20 - .../spark/licenses/LICENSE-cloudpickle.txt | 28 - .../opt/spark/licenses/LICENSE-d3.min.js.txt | 26 - .../opt/spark/licenses/LICENSE-dagre-d3.txt | 19 - .../spark/opt/spark/licenses/LICENSE-f2j.txt | 8 - .../spark/licenses/LICENSE-graphlib-dot.txt | 19 - .../opt/spark/licenses/LICENSE-heapq.txt | 280 -- .../opt/spark/licenses/LICENSE-javolution.txt | 27 - .../opt/spark/licenses/LICENSE-jbcrypt.txt | 17 - .../opt/spark/licenses/LICENSE-jline.txt | 32 - .../spark/licenses/LICENSE-jpmml-model.txt | 10 - .../opt/spark/licenses/LICENSE-jquery.txt | 9 - .../licenses/LICENSE-junit-interface.txt | 24 - .../spark/opt/spark/licenses/LICENSE-kryo.txt | 10 - .../opt/spark/licenses/LICENSE-minlog.txt | 10 - .../opt/spark/licenses/LICENSE-modernizr.txt | 21 - .../opt/spark/licenses/LICENSE-netlib.txt | 49 - .../opt/spark/licenses/LICENSE-paranamer.txt | 28 - .../opt/spark/licenses/LICENSE-postgresql.txt | 24 - .../opt/spark/licenses/LICENSE-protobuf.txt | 42 - .../spark/opt/spark/licenses/LICENSE-py4j.txt | 27 - .../opt/spark/licenses/LICENSE-pyrolite.txt | 28 - .../opt/spark/licenses/LICENSE-reflectasm.txt | 10 - .../spark/licenses/LICENSE-sbt-launch-lib.txt | 26 - .../opt/spark/licenses/LICENSE-scala.txt | 30 - .../opt/spark/licenses/LICENSE-scalacheck.txt | 32 - .../opt/spark/licenses/LICENSE-scopt.txt | 21 - .../opt/spark/licenses/LICENSE-slf4j.txt | 21 - .../spark/licenses/LICENSE-sorttable.js.txt | 16 - .../opt/spark/licenses/LICENSE-spire.txt | 19 - .../opt/spark/licenses/LICENSE-xmlenc.txt | 27 - .../config/spark/opt/spark/python/.gitignore | 5 - .../config/spark/opt/spark/python/MANIFEST.in | 24 - .../config/spark/opt/spark/python/README.md | 32 - .../spark/opt/spark/python/docs/Makefile | 179 - .../opt/spark/python/docs/_static/pyspark.css | 90 - .../opt/spark/python/docs/_static/pyspark.js | 99 - .../spark/python/docs/_templates/layout.html | 6 - .../spark/opt/spark/python/docs/conf.py | 340 -- .../spark/opt/spark/python/docs/epytext.py | 30 - .../spark/opt/spark/python/docs/index.rst | 52 - .../spark/opt/spark/python/docs/make.bat | 6 - .../spark/opt/spark/python/docs/make2.bat | 243 -- .../opt/spark/python/docs/pyspark.ml.rst | 106 - .../opt/spark/python/docs/pyspark.mllib.rst | 99 - .../spark/opt/spark/python/docs/pyspark.rst | 20 - .../opt/spark/python/docs/pyspark.sql.rst | 30 - .../spark/python/docs/pyspark.streaming.rst | 31 - .../opt/spark/python/lib/PY4J_LICENSE.txt | 27 - .../opt/spark/python/lib/py4j-0.10.4-src.zip | Bin 74096 -> 0 bytes .../spark/opt/spark/python/lib/pyspark.zip | Bin 482222 -> 0 bytes .../config/spark/opt/spark/python/pylintrc | 404 -- .../opt/spark/python/pyspark/__init__.py | 115 - .../opt/spark/python/pyspark/accumulators.py | 269 -- .../opt/spark/python/pyspark/broadcast.py | 165 - .../opt/spark/python/pyspark/cloudpickle.py | 824 ---- .../spark/opt/spark/python/pyspark/conf.py | 224 -- .../spark/opt/spark/python/pyspark/context.py | 1033 ----- .../spark/opt/spark/python/pyspark/daemon.py | 180 - .../spark/opt/spark/python/pyspark/files.py | 59 - .../spark/python/pyspark/find_spark_home.py | 74 - .../spark/opt/spark/python/pyspark/heapq3.py | 889 ----- .../opt/spark/python/pyspark/java_gateway.py | 127 - .../spark/opt/spark/python/pyspark/join.py | 113 - .../opt/spark/python/pyspark/ml/__init__.py | 25 - .../spark/opt/spark/python/pyspark/ml/base.py | 118 - .../spark/python/pyspark/ml/classification.py | 1824 --------- .../opt/spark/python/pyspark/ml/clustering.py | 1156 ------ .../opt/spark/python/pyspark/ml/common.py | 138 - .../opt/spark/python/pyspark/ml/evaluation.py | 356 -- .../opt/spark/python/pyspark/ml/feature.py | 3344 ----------------- .../spark/opt/spark/python/pyspark/ml/fpm.py | 245 -- .../python/pyspark/ml/linalg/__init__.py | 1164 ------ .../spark/python/pyspark/ml/param/__init__.py | 491 --- .../ml/param/_shared_params_code_gen.py | 203 - .../spark/python/pyspark/ml/param/shared.py | 698 ---- .../opt/spark/python/pyspark/ml/pipeline.py | 254 -- .../spark/python/pyspark/ml/recommendation.py | 445 --- .../opt/spark/python/pyspark/ml/regression.py | 1749 --------- .../spark/opt/spark/python/pyspark/ml/stat.py | 154 - .../opt/spark/python/pyspark/ml/tests.py | 1792 --------- .../opt/spark/python/pyspark/ml/tuning.py | 478 --- .../spark/opt/spark/python/pyspark/ml/util.py | 285 -- .../opt/spark/python/pyspark/ml/wrapper.py | 310 -- .../spark/python/pyspark/mllib/__init__.py | 35 - .../python/pyspark/mllib/classification.py | 767 ---- .../spark/python/pyspark/mllib/clustering.py | 1055 ------ .../opt/spark/python/pyspark/mllib/common.py | 163 - .../spark/python/pyspark/mllib/evaluation.py | 549 --- .../opt/spark/python/pyspark/mllib/feature.py | 826 ---- .../opt/spark/python/pyspark/mllib/fpm.py | 204 - .../python/pyspark/mllib/linalg/__init__.py | 1376 ------- .../pyspark/mllib/linalg/distributed.py | 1383 ------- .../opt/spark/python/pyspark/mllib/random.py | 428 --- .../python/pyspark/mllib/recommendation.py | 333 -- .../spark/python/pyspark/mllib/regression.py | 841 ----- .../pyspark/mllib/stat/KernelDensity.py | 59 - .../python/pyspark/mllib/stat/__init__.py | 28 - .../python/pyspark/mllib/stat/_statistics.py | 320 -- .../python/pyspark/mllib/stat/distribution.py | 32 - .../spark/python/pyspark/mllib/stat/test.py | 82 - .../opt/spark/python/pyspark/mllib/tests.py | 1775 --------- .../opt/spark/python/pyspark/mllib/tree.py | 660 ---- .../opt/spark/python/pyspark/mllib/util.py | 528 --- .../opt/spark/python/pyspark/profiler.py | 176 - .../spark/opt/spark/python/pyspark/rdd.py | 2489 ------------ .../opt/spark/python/pyspark/rddsampler.py | 119 - .../spark/python/pyspark/resultiterable.py | 39 - .../opt/spark/python/pyspark/serializers.py | 598 --- .../spark/opt/spark/python/pyspark/shell.py | 88 - .../spark/opt/spark/python/pyspark/shuffle.py | 813 ---- .../opt/spark/python/pyspark/sql/__init__.py | 60 - .../opt/spark/python/pyspark/sql/catalog.py | 331 -- .../opt/spark/python/pyspark/sql/column.py | 544 --- .../opt/spark/python/pyspark/sql/conf.py | 86 - .../opt/spark/python/pyspark/sql/context.py | 593 --- .../opt/spark/python/pyspark/sql/dataframe.py | 1830 --------- .../opt/spark/python/pyspark/sql/functions.py | 2002 ---------- .../opt/spark/python/pyspark/sql/group.py | 229 -- .../spark/python/pyspark/sql/readwriter.py | 855 ----- .../opt/spark/python/pyspark/sql/session.py | 705 ---- .../opt/spark/python/pyspark/sql/streaming.py | 882 ----- .../opt/spark/python/pyspark/sql/tests.py | 2538 ------------- .../opt/spark/python/pyspark/sql/types.py | 1573 -------- .../opt/spark/python/pyspark/sql/utils.py | 112 - .../opt/spark/python/pyspark/sql/window.py | 237 -- .../opt/spark/python/pyspark/statcounter.py | 158 - .../spark/opt/spark/python/pyspark/status.py | 96 - .../opt/spark/python/pyspark/storagelevel.py | 71 - .../python/pyspark/streaming/__init__.py | 22 - .../spark/python/pyspark/streaming/context.py | 370 -- .../spark/python/pyspark/streaming/dstream.py | 645 ---- .../spark/python/pyspark/streaming/flume.py | 140 - .../spark/python/pyspark/streaming/kafka.py | 435 --- .../spark/python/pyspark/streaming/kinesis.py | 120 - .../python/pyspark/streaming/listener.py | 75 - .../spark/python/pyspark/streaming/tests.py | 1570 -------- .../spark/python/pyspark/streaming/util.py | 150 - .../opt/spark/python/pyspark/taskcontext.py | 90 - .../spark/opt/spark/python/pyspark/tests.py | 2341 ------------ .../spark/python/pyspark/traceback_utils.py | 78 - .../spark/opt/spark/python/pyspark/util.py | 45 - .../spark/opt/spark/python/pyspark/version.py | 1 - .../spark/opt/spark/python/pyspark/worker.py | 216 -- .../config/spark/opt/spark/python/run-tests | 24 - .../spark/opt/spark/python/run-tests.py | 218 -- .../config/spark/opt/spark/python/setup.cfg | 22 - .../config/spark/opt/spark/python/setup.py | 233 -- .../python/test_support/SimpleHTTPServer.py | 22 - .../spark/python/test_support/hello/hello.txt | 1 - .../hello/sub_hello/sub_hello.txt | 1 - .../spark/python/test_support/sql/ages.csv | 4 - .../python/test_support/sql/ages_newlines.csv | 6 - .../test_support/sql/orc_partitioned/_SUCCESS | 0 ...9af031-b970-49d6-ad39-30460a0be2c8.orc.crc | Bin 12 -> 0 bytes ...0-829af031-b970-49d6-ad39-30460a0be2c8.orc | Bin 168 -> 0 bytes ...9af031-b970-49d6-ad39-30460a0be2c8.orc.crc | Bin 12 -> 0 bytes ...0-829af031-b970-49d6-ad39-30460a0be2c8.orc | Bin 168 -> 0 bytes .../sql/parquet_partitioned/_SUCCESS | 0 .../sql/parquet_partitioned/_common_metadata | Bin 210 -> 0 bytes .../sql/parquet_partitioned/_metadata | Bin 743 -> 0 bytes .../day=1/.part-r-00008.gz.parquet.crc | Bin 12 -> 0 bytes .../month=9/day=1/part-r-00008.gz.parquet | Bin 322 -> 0 bytes .../day=25/.part-r-00002.gz.parquet.crc | Bin 12 -> 0 bytes .../day=25/.part-r-00004.gz.parquet.crc | Bin 12 -> 0 bytes .../month=10/day=25/part-r-00002.gz.parquet | Bin 343 -> 0 bytes .../month=10/day=25/part-r-00004.gz.parquet | Bin 343 -> 0 bytes .../day=26/.part-r-00005.gz.parquet.crc | Bin 12 -> 0 bytes .../month=10/day=26/part-r-00005.gz.parquet | Bin 333 -> 0 bytes .../day=1/.part-r-00007.gz.parquet.crc | Bin 12 -> 0 bytes .../month=9/day=1/part-r-00007.gz.parquet | Bin 343 -> 0 bytes .../spark/python/test_support/sql/people.json | 3 - .../python/test_support/sql/people1.json | 2 - .../python/test_support/sql/people_array.json | 13 - .../test_support/sql/streaming/text-test.txt | 2 - .../python/test_support/sql/text-test.txt | 2 - .../spark/python/test_support/userlib-0.1.zip | Bin 668 -> 0 bytes .../spark/python/test_support/userlibrary.py | 26 - .../config/spark/opt/spark/sbin/slaves.sh | 103 - .../spark/opt/spark/sbin/spark-config.sh | 33 - .../spark/opt/spark/sbin/spark-daemon.sh | 242 -- .../spark/opt/spark/sbin/spark-daemons.sh | 36 - .../config/spark/opt/spark/sbin/start-all.sh | 35 - .../opt/spark/sbin/start-history-server.sh | 34 - .../spark/opt/spark/sbin/start-master.sh | 67 - .../opt/spark/sbin/start-mesos-dispatcher.sh | 51 - .../spark/sbin/start-mesos-shuffle-service.sh | 36 - .../opt/spark/sbin/start-shuffle-service.sh | 34 - .../spark/opt/spark/sbin/start-slave.sh | 91 - .../spark/opt/spark/sbin/start-slaves.sh | 46 - .../opt/spark/sbin/start-thriftserver.sh | 56 - .../config/spark/opt/spark/sbin/stop-all.sh | 49 - .../opt/spark/sbin/stop-history-server.sh | 26 - .../spark/opt/spark/sbin/stop-master.sh | 28 - .../opt/spark/sbin/stop-mesos-dispatcher.sh | 33 - .../spark/sbin/stop-mesos-shuffle-service.sh | 26 - .../opt/spark/sbin/stop-shuffle-service.sh | 26 - .../config/spark/opt/spark/sbin/stop-slave.sh | 44 - .../spark/opt/spark/sbin/stop-slaves.sh | 28 - .../spark/opt/spark/sbin/stop-thriftserver.sh | 26 - .../spark/yarn/spark-2.2.1-yarn-shuffle.jar | 1 - .../opt/start-stream-receiver-local-2.sh | 19 - .../spark/opt/start-stream-receiver-local.sh | 18 - .../systemd/system/spark-streamer-1.service | 15 - .../systemd/system/spark-streamer-2.service | 15 - .../zookeeper/etc/zookeeper/conf/.diff.swm | Bin 12288 -> 0 bytes .../zookeeper/etc/zookeeper/conf/.diff.swn | Bin 12288 -> 0 bytes .../zookeeper/etc/zookeeper/conf/.diff.swo | Bin 12288 -> 0 bytes .../zookeeper/etc/zookeeper/conf/.diff.swp | Bin 12288 -> 0 bytes .../etc/zookeeper/conf/configuration.xsl | 24 - .../etc/zookeeper/conf/log4j.properties | 51 - .../config/zookeeper/etc/zookeeper/conf/myid | 1 - .../zookeeper/etc/zookeeper/conf/zoo.cfg | 57 - 1067 files changed, 127532 deletions(-) delete mode 100644 .permissions delete mode 120000 archives/ca-certificates-java_20190214-4_all.deb delete mode 120000 archives/clickhouse-client_20.5.2.7_all.deb delete mode 120000 archives/clickhouse-common-static_20.5.2.7_amd64.deb delete mode 120000 archives/clickhouse-server_20.5.2.7_all.deb delete mode 120000 archives/golang-go_2%3a1.7~5_amd64.deb delete mode 120000 archives/gosjava-8-jre-headless_8u252-b9-1free1_amd64.deb delete mode 120000 archives/gosjava-jre-headless_1.8-62-7_amd64.deb delete mode 120000 archives/grafana_6.2.5-1601016471_amd64.deb delete mode 120000 archives/hadoop-2.6.0.tar.gz delete mode 120000 archives/java-common_0.62-7_all.deb delete mode 120000 archives/kafka_2.13-2.5.0.tgz delete mode 120000 archives/lab50-archive-keyring_2.1_all.deb delete mode 120000 archives/libzookeeper-java_3.4.9-3+deb9u2_all.deb delete mode 120000 archives/linux-headers-4.15.3-1-generic_4.15.3-1.astra21_amd64.deb delete mode 120000 archives/linux-headers-4.15.3-1-hardened_4.15.3-1.astra21_amd64.deb delete mode 120000 archives/linux-headers-4.15.3-1_4.15.3-1.astra21_all.deb delete mode 120000 archives/linux-headers-4.15.3-2-generic_4.15.3-2.astra25_amd64.deb delete mode 120000 archives/linux-headers-4.15.3-2-hardened_4.15.3-2.astra25_amd64.deb delete mode 120000 archives/linux-headers-4.15.3-2_4.15.3-2.astra25_all.deb delete mode 120000 archives/ngpsusbpackage.tar.gz delete mode 120000 archives/novatellogreader.tar.gz delete mode 120000 archives/zookeeper_3.4.9-3+deb9u2_all.deb delete mode 120000 archives/zookeeperd_3.4.9-3+deb9u2_all.deb delete mode 100644 image_content/config/clickhouse-proxy/usr/local/lib/systemd/system/clickhouse-proxy.service delete mode 100644 image_content/config/grafana/etc/default/grafana-server delete mode 100644 image_content/config/grafana/etc/grafana/ldap.toml delete mode 120000 image_content/config/grafana/var/lib/grafana/grafana.db delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/.gitignore delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/Gruntfile.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/LICENSE delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/README.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/README.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/editor.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-donut.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-options.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/plugin.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-donut.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-on-graph.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-rhs.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-under.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-options.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart_logo_large.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart_logo_small.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/package.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/editor.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-donut.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-on-graph.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-rhs.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-under.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-options.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart_logo_large.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart_logo_small.png delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/legend.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/piechart_ctrl.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/plugin.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/rendering.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/README.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/css/panel.css delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/editor.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/livy-panel/plugin.json delete mode 120000 image_content/config/grafana/var/lib/grafana/plugins/lp.tar delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/.gitignore delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/CHANGELOG.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/Gruntfile.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/LICENSE delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/README.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/CHANGELOG.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/LICENSE delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/README.md delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/img/clickhouse_logo.svg delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/config.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/query.editor.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/plugin.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/karma.conf.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/package.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/common.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/context_srv_stub.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/template_srv_stub.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/time_srv_stub.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.d.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js.map delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/adhoc.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/clickhouse-info.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/datasource.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/img/clickhouse_logo.svg delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/mode-clickhouse.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/module.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/config.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/query.editor.html delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/plugin.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/query_ctrl.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/response_parser.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/scanner.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/snippets/clickhouse.js delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_query.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_series.ts delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tsconfig.json delete mode 100644 image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tslint.json delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-console-sink.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-console-source.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-distributed.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-file-sink.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-file-source.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-log4j.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/connect-standalone.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/log4j.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/server.properties delete mode 100644 image_content/config/kafka/etc/kafka/conf/tools-log4j.properties delete mode 100644 image_content/config/kafka/usr/local/lib/systemd/system/kafka.service delete mode 100644 image_content/config/novatellogreader/usr/local/lib/systemd/system/novatellogreader.service delete mode 100644 image_content/config/spark/opt/spark/LICENSE delete mode 100644 image_content/config/spark/opt/spark/NOTICE delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/DESCRIPTION delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/INDEX delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/Meta/Rd.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/Meta/features.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/Meta/hsearch.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/Meta/links.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/Meta/nsInfo.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/Meta/package.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/NAMESPACE delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR delete mode 120000 image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdb delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdx delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/help/AnIndex delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/help/SparkR.rdb delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/help/SparkR.rdx delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/help/aliases.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/help/paths.rds delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/html/00Index.html delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/html/R.css delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/profile/general.R delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/profile/shell.R delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/tests/testthat/test_basic.R delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/worker/daemon.R delete mode 100644 image_content/config/spark/opt/spark/R/lib/SparkR/worker/worker.R delete mode 120000 image_content/config/spark/opt/spark/R/lib/sparkr.zip delete mode 100644 image_content/config/spark/opt/spark/README.md delete mode 100644 image_content/config/spark/opt/spark/RELEASE delete mode 100755 image_content/config/spark/opt/spark/bin/beeline delete mode 100644 image_content/config/spark/opt/spark/bin/beeline.cmd delete mode 100755 image_content/config/spark/opt/spark/bin/find-spark-home delete mode 100644 image_content/config/spark/opt/spark/bin/find-spark-home.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/load-spark-env.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/load-spark-env.sh delete mode 100755 image_content/config/spark/opt/spark/bin/pyspark delete mode 100644 image_content/config/spark/opt/spark/bin/pyspark.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/pyspark2.cmd delete mode 100755 image_content/config/spark/opt/spark/bin/run-example delete mode 100644 image_content/config/spark/opt/spark/bin/run-example.cmd delete mode 100755 image_content/config/spark/opt/spark/bin/spark-class delete mode 100644 image_content/config/spark/opt/spark/bin/spark-class.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/spark-class2.cmd delete mode 100755 image_content/config/spark/opt/spark/bin/spark-shell delete mode 100644 image_content/config/spark/opt/spark/bin/spark-shell.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/spark-shell2.cmd delete mode 100755 image_content/config/spark/opt/spark/bin/spark-sql delete mode 100755 image_content/config/spark/opt/spark/bin/spark-submit delete mode 100644 image_content/config/spark/opt/spark/bin/spark-submit.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/spark-submit2.cmd delete mode 100755 image_content/config/spark/opt/spark/bin/sparkR delete mode 100644 image_content/config/spark/opt/spark/bin/sparkR.cmd delete mode 100644 image_content/config/spark/opt/spark/bin/sparkR2.cmd delete mode 100644 image_content/config/spark/opt/spark/conf/docker.properties.template delete mode 100644 image_content/config/spark/opt/spark/conf/fairscheduler.xml.template delete mode 100644 image_content/config/spark/opt/spark/conf/log4j.properties delete mode 100644 image_content/config/spark/opt/spark/conf/log4j.properties.template delete mode 100644 image_content/config/spark/opt/spark/conf/metrics.properties.template delete mode 100644 image_content/config/spark/opt/spark/conf/slaves delete mode 100644 image_content/config/spark/opt/spark/conf/slaves.template delete mode 100644 image_content/config/spark/opt/spark/conf/spark-defaults.conf delete mode 100644 image_content/config/spark/opt/spark/conf/spark-defaults.conf.template delete mode 100755 image_content/config/spark/opt/spark/conf/spark-env.sh delete mode 100755 image_content/config/spark/opt/spark/conf/spark-env.sh.template delete mode 100644 image_content/config/spark/opt/spark/data/graphx/followers.txt delete mode 100644 image_content/config/spark/opt/spark/data/graphx/users.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/als/sample_movielens_ratings.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/als/test.data delete mode 100644 image_content/config/spark/opt/spark/data/mllib/gmm_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/kmeans_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/pagerank_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/pic_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/ridge-data/lpsa.data delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_binary_classification_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_fpgrowth.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_isotonic_regression_libsvm_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_kmeans_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_lda_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_lda_libsvm_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_libsvm_data.txt delete mode 100755 image_content/config/spark/opt/spark/data/mllib/sample_linear_regression_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_movielens_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_multiclass_classification_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/sample_svm_data.txt delete mode 100644 image_content/config/spark/opt/spark/data/mllib/streaming_kmeans_data_test.txt delete mode 100644 image_content/config/spark/opt/spark/data/streaming/AFINN-111.txt delete mode 120000 image_content/config/spark/opt/spark/examples/jars/scopt_2.11-3.3.0.jar delete mode 120000 image_content/config/spark/opt/spark/examples/jars/spark-examples_2.11-2.2.1.jar delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaSparkPi.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaStatusTrackerDemo.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaTC.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaAFTSurvivalRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaALSExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBinarizerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBisectingKMeansExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketedRandomProjectionLSHExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketizerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSqSelectorExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSquareTestExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCorrelationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCountVectorizerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDCTExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeClassificationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDocument.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaElementwiseProductExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaEstimatorTransformerParamExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaFPGrowthExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGaussianMixtureExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGeneralizedLinearRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeClassifierExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeRegressorExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaImputerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIndexToStringExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaInteractionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIsotonicRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaKMeansExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLDAExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLabeledDocument.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearSVCExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionSummaryExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionWithElasticNetExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMaxAbsScalerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinHashLSHExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinMaxScalerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaCrossValidationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaTrainValidationSplitExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMulticlassLogisticRegressionWithElasticNetExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMultilayerPerceptronClassifierExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNGramExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNaiveBayesExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNormalizerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneHotEncoderExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneVsRestExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPCAExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPipelineExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPolynomialExpansionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaQuantileDiscretizerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRFormulaExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestClassifierExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestRegressorExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaSQLTransformerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStandardScalerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStopWordsRemoverExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStringIndexerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTfIdfExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTokenizerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorAssemblerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorIndexerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorSlicerExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaWord2VecExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaALS.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaAssociationRulesExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBinaryClassificationMetricsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBisectingKMeansExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaChiSqSelectorExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaCorrelationsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeClassificationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaElementwiseProductExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGaussianMixtureExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingClassificationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingKolmogorovSmirnovTestExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaIsotonicRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKMeansExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKernelDensityEstimationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLBFGSExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLatentDirichletAllocationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLinearRegressionWithSGDExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLogisticRegressionWithLBFGSExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMultiLabelClassificationMetricsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMulticlassClassificationMetricsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaNaiveBayesExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPCAExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPowerIterationClusteringExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPrefixSpanExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestClassificationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestRegressionExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRankingMetricsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRecommendationExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRegressionMetricsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVDExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVMWithSGDExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSimpleFPGrowth.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStratifiedSamplingExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStreamingTestExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSummaryStatisticsExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSQLDataSourceExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQLExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedTypedAggregation.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedUntypedAggregation.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/hive/JavaSparkHiveExample.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredKafkaWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCountWindowed.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredSessionization.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaCustomReceiver.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaDirectKafkaWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaKafkaWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaQueueStream.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecord.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecoverableNetworkWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaSqlNetworkWordCount.java delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaStatefulNetworkWordCount.java delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/als.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/avro_inputformat.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/kmeans.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/logistic_regression.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/aft_survival_regression.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/als_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/binarizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/bisecting_k_means_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/bucketed_random_projection_lsh_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/bucketizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/chi_square_test_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/chisq_selector_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/correlation_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/count_vectorizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/cross_validator.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/dataframe_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/dct_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/decision_tree_classification_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/decision_tree_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/elementwise_product_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/estimator_transformer_param_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/fpgrowth_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/gaussian_mixture_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/generalized_linear_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/gradient_boosted_tree_classifier_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/gradient_boosted_tree_regressor_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/imputer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/index_to_string_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/isotonic_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/kmeans_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/lda_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/linear_regression_with_elastic_net.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/linearsvc.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/logistic_regression_summary_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/logistic_regression_with_elastic_net.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/max_abs_scaler_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/min_hash_lsh_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/min_max_scaler_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/multiclass_logistic_regression_with_elastic_net.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/multilayer_perceptron_classification.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/n_gram_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/naive_bayes_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/normalizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/one_vs_rest_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/onehot_encoder_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/pca_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/pipeline_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/polynomial_expansion_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/quantile_discretizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/random_forest_classifier_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/random_forest_regressor_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/rformula_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/sql_transformer.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/standard_scaler_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/stopwords_remover_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/string_indexer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/tf_idf_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/tokenizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/train_validation_split.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/vector_assembler_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/vector_indexer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/vector_slicer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/ml/word2vec_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/binary_classification_metrics_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/bisecting_k_means_example.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/mllib/correlations.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/correlations_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/decision_tree_classification_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/decision_tree_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/elementwise_product_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/fpgrowth_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/gaussian_mixture_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/gaussian_mixture_model.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/gradient_boosting_classification_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/gradient_boosting_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/hypothesis_testing_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/hypothesis_testing_kolmogorov_smirnov_test_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/isotonic_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/k_means_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/kernel_density_estimation_example.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/mllib/kmeans.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/latent_dirichlet_allocation_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/linear_regression_with_sgd_example.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/mllib/logistic_regression.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/logistic_regression_with_lbfgs_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/multi_class_metrics_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/multi_label_metrics_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/naive_bayes_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/normalizer_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/pca_rowmatrix_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/power_iteration_clustering_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/random_forest_classification_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/random_forest_regression_example.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/mllib/random_rdd_generation.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/ranking_metrics_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/recommendation_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/regression_metrics_example.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/mllib/sampled_rdds.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/standard_scaler_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/stratified_sampling_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/streaming_k_means_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/streaming_linear_regression_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/summary_statistics_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/svd_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/svm_with_sgd_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/tf_idf_example.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/word2vec.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/mllib/word2vec_example.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/pagerank.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/parquet_inputformat.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/pi.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/sort.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/sql/basic.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/sql/datasource.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/sql/hive.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming/structured_kafka_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming/structured_network_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming/structured_network_wordcount_windowed.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/status_api_demo.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/direct_kafka_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/flume_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/hdfs_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/kafka_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/network_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/network_wordjoinsentiments.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/queue_stream.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/recoverable_network_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/sql_network_wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/python/streaming/stateful_network_wordcount.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/transitive_closure.py delete mode 100755 image_content/config/spark/opt/spark/examples/src/main/python/wordcount.py delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/RSparkSQLExample.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/data-manipulation.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/dataframe.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/als.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/bisectingKmeans.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/fpm.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/gaussianMixture.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/gbt.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/glm.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/isoreg.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/kmeans.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/kstest.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/lda.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/logit.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/ml.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/mlp.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/naiveBayes.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/randomForest.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/survreg.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/ml/svmLinear.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/r/streaming/structured_network_wordcount.R delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/employees.json delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/full_user.avsc delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/kv1.txt delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/people.json delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/people.txt delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/user.avsc delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/users.avro delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/resources/users.parquet delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/BroadcastTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/DFSReadWriteTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/DriverSubmissionTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ExceptionHandlingTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/HdfsTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalALS.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalFileLR.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalKMeans.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalLR.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalPi.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LogQuery.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/MultiBroadcastTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SimpleSkewedGroupByTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SkewedGroupByTest.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkALS.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkHdfsLR.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkKMeans.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkLR.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkPageRank.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkTC.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/AggregateMessagesExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/Analytics.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/ComprehensiveExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/ConnectedComponentsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/LiveJournalPageRank.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/PageRankExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/SSSPExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/SynthBenchmark.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/TriangleCountingExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/AFTSurvivalRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ALSExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BinarizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BisectingKMeansExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BucketedRandomProjectionLSHExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BucketizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ChiSqSelectorExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ChiSquareTestExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/CorrelationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/CountVectorizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DCTExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DataFrameExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DecisionTreeClassificationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DecisionTreeExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DecisionTreeRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DeveloperApiExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ElementwiseProductExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/EstimatorTransformerParamExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/FPGrowthExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GBTExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GaussianMixtureExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GeneralizedLinearRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GradientBoostedTreeClassifierExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GradientBoostedTreeRegressorExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ImputerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/IndexToStringExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/InteractionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/IsotonicRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/KMeansExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LDAExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LinearRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LinearRegressionWithElasticNetExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LinearSVCExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionSummaryExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionWithElasticNetExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MaxAbsScalerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MinHashLSHExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MinMaxScalerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaTrainValidationSplitExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MulticlassLogisticRegressionWithElasticNetExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MultilayerPerceptronClassifierExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/NGramExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/NaiveBayesExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/NormalizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/OneHotEncoderExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/OneVsRestExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/PCAExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/PipelineExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/PolynomialExpansionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/QuantileDiscretizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RFormulaExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RandomForestClassifierExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RandomForestExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RandomForestRegressorExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/SQLTransformerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/StandardScalerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/StopWordsRemoverExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/StringIndexerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/TfIdfExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/TokenizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/UnaryTransformerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/VectorAssemblerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/VectorIndexerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/VectorSlicerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/Word2VecExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/AbstractParams.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/AssociationRulesExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/BinaryClassification.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/BinaryClassificationMetricsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/BisectingKMeansExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/ChiSqSelectorExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/Correlations.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/CorrelationsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/CosineSimilarity.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DecisionTreeClassificationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DecisionTreeRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DecisionTreeRunner.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DenseKMeans.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/ElementwiseProductExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/FPGrowthExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GaussianMixtureExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GradientBoostedTreesRunner.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GradientBoostingClassificationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GradientBoostingRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/HypothesisTestingExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/HypothesisTestingKolmogorovSmirnovTestExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/IsotonicRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/KMeansExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/KernelDensityEstimationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LBFGSExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LDAExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LatentDirichletAllocationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LinearRegression.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LinearRegressionWithSGDExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LogisticRegressionWithLBFGSExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MovieLensALS.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MultiLabelMetricsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MulticlassMetricsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MultivariateSummarizer.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/NaiveBayesExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/NormalizerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PCAExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PCAOnRowMatrixExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PCAOnSourceVectorExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PMMLModelExportExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PowerIterationClusteringExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PrefixSpanExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RandomForestClassificationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RandomForestRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RandomRDDGeneration.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RankingMetricsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RecommendationExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RegressionMetricsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SVDExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SVMWithSGDExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SampledRDDs.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SimpleFPGrowth.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SparseNaiveBayes.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StandardScalerExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StratifiedSamplingExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingKMeansExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingLinearRegressionExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingLogisticRegression.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingTestExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SummaryStatisticsExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/TFIDFExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnyPCA.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnySVD.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/Word2VecExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/pythonconverters/AvroConverters.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/RDDRelation.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/SQLDataSourceExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/SparkSQLExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/UserDefinedTypedAggregation.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/UserDefinedUntypedAggregation.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/hive/SparkHiveExample.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredKafkaWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredNetworkWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredNetworkWordCountWindowed.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredSessionization.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/CustomReceiver.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/DirectKafkaWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/FlumeEventCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/FlumePollingEventCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/HdfsWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/KafkaWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/NetworkWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/QueueStream.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/RawNetworkGrep.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/RecoverableNetworkWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/SqlNetworkWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/StatefulNetworkWordCount.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/StreamingExamples.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/clickstream/PageViewGenerator.scala delete mode 100644 image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/clickstream/PageViewStream.scala delete mode 120000 image_content/config/spark/opt/spark/jars/RoaringBitmap-0.5.11.jar delete mode 120000 image_content/config/spark/opt/spark/jars/antlr4-runtime-4.5.3.jar delete mode 120000 image_content/config/spark/opt/spark/jars/aopalliance-repackaged-2.4.0-b34.jar delete mode 120000 image_content/config/spark/opt/spark/jars/arpack_combined_all-0.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/avro-mapred-1.7.7-hadoop2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/breeze-macros_2.11-0.13.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/breeze_2.11-0.13.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/chill-java-0.8.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/chill_2.11-0.8.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/commons-codec-1.10.jar delete mode 120000 image_content/config/spark/opt/spark/jars/commons-compiler-3.0.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/commons-crypto-1.0.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/commons-lang3-3.5.jar delete mode 120000 image_content/config/spark/opt/spark/jars/commons-math3-3.4.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/commons-net-2.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/compress-lzf-1.0.3.jar delete mode 120000 image_content/config/spark/opt/spark/jars/core-1.1.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/hk2-api-2.4.0-b34.jar delete mode 120000 image_content/config/spark/opt/spark/jars/hk2-locator-2.4.0-b34.jar delete mode 120000 image_content/config/spark/opt/spark/jars/hk2-utils-2.4.0-b34.jar delete mode 120000 image_content/config/spark/opt/spark/jars/httpclient-4.5.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/httpmime-4.5.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/ivy-2.4.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jackson-annotations-2.6.5.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jackson-core-2.6.5.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jackson-databind-2.6.5.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jackson-module-paranamer-2.6.5.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jackson-module-scala_2.11-2.6.5.jar delete mode 120000 image_content/config/spark/opt/spark/jars/janino-3.0.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/javassist-3.18.1-GA.jar delete mode 120000 image_content/config/spark/opt/spark/jars/javax.annotation-api-1.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/javax.inject-2.4.0-b34.jar delete mode 120000 image_content/config/spark/opt/spark/jars/javax.servlet-api-3.1.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/javax.ws.rs-api-2.0.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jcl-over-slf4j-1.7.16.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-client-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-common-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-container-servlet-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-container-servlet-core-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-guava-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-media-jaxb-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jersey-server-2.22.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jline-2.12.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/json4s-ast_2.11-3.2.11.jar delete mode 120000 image_content/config/spark/opt/spark/jars/json4s-core_2.11-3.2.11.jar delete mode 120000 image_content/config/spark/opt/spark/jars/json4s-jackson_2.11-3.2.11.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jsr305-1.3.9.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jtransforms-2.4.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/jul-to-slf4j-1.7.16.jar delete mode 120000 image_content/config/spark/opt/spark/jars/kryo-shaded-3.0.3.jar delete mode 120000 image_content/config/spark/opt/spark/jars/leveldbjni-all-1.8.jar delete mode 120000 image_content/config/spark/opt/spark/jars/lz4-1.3.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/machinist_2.11-0.6.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/macro-compat_2.11-1.1.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/mesos-1.0.0-shaded-protobuf.jar delete mode 120000 image_content/config/spark/opt/spark/jars/metrics-core-3.1.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/metrics-graphite-3.1.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/metrics-json-3.1.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/metrics-jvm-3.1.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/minlog-1.3.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/netty-3.9.9.Final.jar delete mode 120000 image_content/config/spark/opt/spark/jars/netty-all-4.0.43.Final.jar delete mode 120000 image_content/config/spark/opt/spark/jars/novatel-streaming-assembly-1.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/objenesis-2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/opencsv-2.3.jar delete mode 120000 image_content/config/spark/opt/spark/jars/oro-2.0.8.jar delete mode 120000 image_content/config/spark/opt/spark/jars/osgi-resource-locator-1.0.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/paranamer-2.6.jar delete mode 120000 image_content/config/spark/opt/spark/jars/parquet-column-1.8.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/parquet-common-1.8.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/parquet-encoding-1.8.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/parquet-format-2.3.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/parquet-hadoop-1.8.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/parquet-jackson-1.8.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/pmml-model-1.2.15.jar delete mode 120000 image_content/config/spark/opt/spark/jars/pmml-schema-1.2.15.jar delete mode 120000 image_content/config/spark/opt/spark/jars/py4j-0.10.4.jar delete mode 120000 image_content/config/spark/opt/spark/jars/pyrolite-4.13.jar delete mode 120000 image_content/config/spark/opt/spark/jars/scala-compiler-2.11.8.jar delete mode 120000 image_content/config/spark/opt/spark/jars/scala-library-2.11.8.jar delete mode 120000 image_content/config/spark/opt/spark/jars/scala-parser-combinators_2.11-1.0.4.jar delete mode 120000 image_content/config/spark/opt/spark/jars/scala-reflect-2.11.8.jar delete mode 120000 image_content/config/spark/opt/spark/jars/scala-xml_2.11-1.0.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/scalap-2.11.8.jar delete mode 120000 image_content/config/spark/opt/spark/jars/shapeless_2.11-2.3.2.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-catalyst_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-core_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-graphx_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-launcher_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-mesos_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-mllib-local_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-mllib_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-network-common_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-network-shuffle_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-opentsdb-assembly-2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-repl_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-sketch_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-sql_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-streaming_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-tags_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-unsafe_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spark-yarn_2.11-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spire-macros_2.11-0.13.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/spire_2.11-0.13.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/stream-2.7.0.jar delete mode 120000 image_content/config/spark/opt/spark/jars/univocity-parsers-2.2.1.jar delete mode 120000 image_content/config/spark/opt/spark/jars/validation-api-1.1.0.Final.jar delete mode 120000 image_content/config/spark/opt/spark/jars/xbean-asm5-shaded-4.4.jar delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-AnchorJS.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-DPark.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-Mockito.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-SnapTree.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-antlr.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-boto.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-cloudpickle.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-d3.min.js.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-dagre-d3.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-f2j.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-graphlib-dot.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-heapq.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-javolution.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-jbcrypt.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-jline.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-jpmml-model.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-jquery.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-junit-interface.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-kryo.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-minlog.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-modernizr.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-netlib.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-paranamer.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-postgresql.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-protobuf.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-py4j.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-pyrolite.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-reflectasm.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-sbt-launch-lib.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-scala.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-scalacheck.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-scopt.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-slf4j.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-sorttable.js.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-spire.txt delete mode 100644 image_content/config/spark/opt/spark/licenses/LICENSE-xmlenc.txt delete mode 100644 image_content/config/spark/opt/spark/python/.gitignore delete mode 100644 image_content/config/spark/opt/spark/python/MANIFEST.in delete mode 100644 image_content/config/spark/opt/spark/python/README.md delete mode 100644 image_content/config/spark/opt/spark/python/docs/Makefile delete mode 100644 image_content/config/spark/opt/spark/python/docs/_static/pyspark.css delete mode 100644 image_content/config/spark/opt/spark/python/docs/_static/pyspark.js delete mode 100644 image_content/config/spark/opt/spark/python/docs/_templates/layout.html delete mode 100644 image_content/config/spark/opt/spark/python/docs/conf.py delete mode 100644 image_content/config/spark/opt/spark/python/docs/epytext.py delete mode 100644 image_content/config/spark/opt/spark/python/docs/index.rst delete mode 100644 image_content/config/spark/opt/spark/python/docs/make.bat delete mode 100644 image_content/config/spark/opt/spark/python/docs/make2.bat delete mode 100644 image_content/config/spark/opt/spark/python/docs/pyspark.ml.rst delete mode 100644 image_content/config/spark/opt/spark/python/docs/pyspark.mllib.rst delete mode 100644 image_content/config/spark/opt/spark/python/docs/pyspark.rst delete mode 100644 image_content/config/spark/opt/spark/python/docs/pyspark.sql.rst delete mode 100644 image_content/config/spark/opt/spark/python/docs/pyspark.streaming.rst delete mode 100644 image_content/config/spark/opt/spark/python/lib/PY4J_LICENSE.txt delete mode 100644 image_content/config/spark/opt/spark/python/lib/py4j-0.10.4-src.zip delete mode 100644 image_content/config/spark/opt/spark/python/lib/pyspark.zip delete mode 100644 image_content/config/spark/opt/spark/python/pylintrc delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/accumulators.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/broadcast.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/cloudpickle.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/conf.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/context.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/daemon.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/files.py delete mode 100755 image_content/config/spark/opt/spark/python/pyspark/find_spark_home.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/heapq3.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/java_gateway.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/join.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/base.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/classification.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/clustering.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/common.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/evaluation.py delete mode 100755 image_content/config/spark/opt/spark/python/pyspark/ml/feature.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/fpm.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/linalg/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/param/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/param/_shared_params_code_gen.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/param/shared.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/pipeline.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/recommendation.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/regression.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/stat.py delete mode 100755 image_content/config/spark/opt/spark/python/pyspark/ml/tests.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/tuning.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/util.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/ml/wrapper.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/classification.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/clustering.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/common.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/evaluation.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/feature.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/fpm.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/linalg/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/linalg/distributed.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/random.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/recommendation.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/regression.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/stat/KernelDensity.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/stat/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/stat/_statistics.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/stat/distribution.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/stat/test.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/tests.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/tree.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/mllib/util.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/profiler.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/rdd.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/rddsampler.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/resultiterable.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/serializers.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/shell.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/shuffle.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/catalog.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/column.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/conf.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/context.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/dataframe.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/functions.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/group.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/readwriter.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/session.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/streaming.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/tests.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/types.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/utils.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/sql/window.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/statcounter.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/status.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/storagelevel.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/__init__.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/context.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/dstream.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/flume.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/kafka.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/kinesis.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/listener.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/tests.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/streaming/util.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/taskcontext.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/tests.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/traceback_utils.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/util.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/version.py delete mode 100644 image_content/config/spark/opt/spark/python/pyspark/worker.py delete mode 100755 image_content/config/spark/opt/spark/python/run-tests delete mode 100755 image_content/config/spark/opt/spark/python/run-tests.py delete mode 100644 image_content/config/spark/opt/spark/python/setup.cfg delete mode 100644 image_content/config/spark/opt/spark/python/setup.py delete mode 100644 image_content/config/spark/opt/spark/python/test_support/SimpleHTTPServer.py delete mode 100755 image_content/config/spark/opt/spark/python/test_support/hello/hello.txt delete mode 100644 image_content/config/spark/opt/spark/python/test_support/hello/sub_hello/sub_hello.txt delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/ages.csv delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/ages_newlines.csv delete mode 100755 image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/_SUCCESS delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=0/c=0/.part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc.crc delete mode 100755 image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=0/c=0/part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=1/c=1/.part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc.crc delete mode 100755 image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=1/c=1/part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/_SUCCESS delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/_common_metadata delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/_metadata delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2014/month=9/day=1/.part-r-00008.gz.parquet.crc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2014/month=9/day=1/part-r-00008.gz.parquet delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/.part-r-00002.gz.parquet.crc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/.part-r-00004.gz.parquet.crc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/part-r-00002.gz.parquet delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/part-r-00004.gz.parquet delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=26/.part-r-00005.gz.parquet.crc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=26/part-r-00005.gz.parquet delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=9/day=1/.part-r-00007.gz.parquet.crc delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=9/day=1/part-r-00007.gz.parquet delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/people.json delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/people1.json delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/people_array.json delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/streaming/text-test.txt delete mode 100644 image_content/config/spark/opt/spark/python/test_support/sql/text-test.txt delete mode 100644 image_content/config/spark/opt/spark/python/test_support/userlib-0.1.zip delete mode 100755 image_content/config/spark/opt/spark/python/test_support/userlibrary.py delete mode 100755 image_content/config/spark/opt/spark/sbin/slaves.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/spark-config.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/spark-daemon.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/spark-daemons.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-all.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-history-server.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-master.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-mesos-dispatcher.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-mesos-shuffle-service.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-shuffle-service.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-slave.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-slaves.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/start-thriftserver.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-all.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-history-server.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-master.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-mesos-dispatcher.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-mesos-shuffle-service.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-shuffle-service.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-slave.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-slaves.sh delete mode 100755 image_content/config/spark/opt/spark/sbin/stop-thriftserver.sh delete mode 120000 image_content/config/spark/opt/spark/yarn/spark-2.2.1-yarn-shuffle.jar delete mode 100755 image_content/config/spark/opt/start-stream-receiver-local-2.sh delete mode 100755 image_content/config/spark/opt/start-stream-receiver-local.sh delete mode 100644 image_content/config/spark/usr/local/lib/systemd/system/spark-streamer-1.service delete mode 100644 image_content/config/spark/usr/local/lib/systemd/system/spark-streamer-2.service delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/.diff.swm delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/.diff.swn delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/.diff.swo delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/.diff.swp delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/configuration.xsl delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/log4j.properties delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/myid delete mode 100644 image_content/config/zookeeper/etc/zookeeper/conf/zoo.cfg diff --git a/.gitattributes b/.gitattributes index 8f8577c..1003d3b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1 @@ -*.deb filter=lfs diff=lfs merge=lfs -text -*.tar.gz filter=lfs diff=lfs merge=lfs -text -*.tgz filter=lfs diff=lfs merge=lfs -text * !text !filter !merge !diff diff --git a/.permissions b/.permissions deleted file mode 100644 index 3aaf0b2..0000000 --- a/.permissions +++ /dev/null @@ -1,1231 +0,0 @@ -.gitattributes;644;user;user -.permissions;644;user;user -archives/ca-certificates-java_20190214-4_all.deb;644;user;user -archives/clickhouse-client_20.5.2.7_all.deb;644;user;user -archives/clickhouse-common-static_20.5.2.7_amd64.deb;644;user;user -archives/clickhouse-server_20.5.2.7_all.deb;644;user;user -archives/golang-go_2%3a1.7~5_amd64.deb;644;user;user -archives/gosjava-8-jre-headless_8u252-b9-1free1_amd64.deb;644;user;user -archives/gosjava-jre-headless_1.8-62-7_amd64.deb;644;user;user -archives/grafana_6.2.5-1+astra1_amd64.deb;644;user;user -archives/hadoop-2.6.0.tar.gz;644;user;user -archives/java-common_0.62-7_all.deb;644;user;user -archives/kafka_2.13-2.5.0.tgz;644;user;user -archives/lab50-archive-keyring_2.1_all.deb;644;user;user -archives/libzookeeper-java_3.4.9-3+deb9u2_all.deb;644;user;user -archives/linux-headers-4.15.3-1-generic_4.15.3-1.astra21_amd64.deb;644;user;user -archives/linux-headers-4.15.3-1-hardened_4.15.3-1.astra21_amd64.deb;644;user;user -archives/linux-headers-4.15.3-1_4.15.3-1.astra21_all.deb;644;user;user -archives/linux-headers-4.15.3-2-generic_4.15.3-2.astra25_amd64.deb;644;user;user -archives/linux-headers-4.15.3-2-hardened_4.15.3-2.astra25_amd64.deb;644;user;user -archives/linux-headers-4.15.3-2_4.15.3-2.astra25_all.deb;644;user;user -archives/ngpsusbpackage.tar.gz;644;user;user -archives/novatellogreader.tar.gz;644;user;user -archives/zookeeper_3.4.9-3+deb9u2_all.deb;644;user;user -archives/zookeeperd_3.4.9-3+deb9u2_all.deb;644;user;user -"docs/deploynment/astra/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260 Astra Linux.md";user;user -"docs/deploynment/astra/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260 \320\270\320\275\321\204\321\200\320\260\321\201\321\202\321\200\321\203\320\272\321\202\321\203\321\200\321\213 (public, astra).md";user;user -docs/deploynment/image_creation.md;644;user;user -docs/specs/database_layout/db_layout.md;644;user;user -image_content/config/clickhouse/etc/clickhouse-server/config.xml;644;root;root -image_content/config/clickhouse/etc/clickhouse-server/users.xml;644;root;root -image_content/config/clickhouse/etc/clickhouse-server/users.d/default-password.xml;644;root;root -image_content/config/clickhouse-proxy/usr/local/lib/systemd/system/clickhouse-proxy.service;644;root;root -image_content/config/clickhouse_create_queries.sh;755;root;root -image_content/config/grafana/etc/default/grafana-server;664;root;root -image_content/config/grafana/etc/grafana/grafana.ini;640;root;grafana -image_content/config/grafana/etc/grafana/ldap.toml;640;root;grafana -image_content/config/grafana/etc/grafana/provisioning/dashboards/sample.yaml;640;root;grafana -image_content/config/grafana/etc/grafana/provisioning/datasources/sample.yaml;640;root;grafana -image_content/config/grafana/home/user/satmap-panel;775;user;user -image_content/config/grafana-dashboards/ClickHouse New.json;775;user;user -"image_content/config/grafana-dashboards/\320\222\320\270\320\264\320\270\320\274\320\276\321\201\321\202\321\214 \321\201\320\277\321\203\321\202\320\275\320\270\320\272\320\276\320\262 ClickHouse.json";775;user;user -image_content/config/grafana/var/lib/grafana/grafana.db;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/.gitignore;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/Gruntfile.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/LICENSE;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/README.md;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/README.md;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/editor.html;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-donut.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-options.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js.map;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.html;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js.map;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js.map;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/plugin.json;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js.map;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-donut.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-on-graph.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-rhs.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-under.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-options.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart_logo_large.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart_logo_small.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/package.json;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/editor.html;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-donut.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-on-graph.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-rhs.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-under.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-options.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart_logo_large.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart_logo_small.png;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/legend.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.html;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/piechart_ctrl.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/plugin.json;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/rendering.js;644;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/README.md;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/css/panel.css;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/editor.html;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.html;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/plugin.json;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/lp.tar;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/satmap-panel;777;root;root -image_content/config/grafana/var/lib/grafana/plugins/satmap-panel.tgz;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/.gitignore;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/CHANGELOG.md;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/Gruntfile.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/LICENSE;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/README.md;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/CHANGELOG.md;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/LICENSE;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/README.md;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/img/clickhouse_logo.svg;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/config.html;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/query.editor.html;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/plugin.json;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/karma.conf.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/package.json;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/common.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/context_srv_stub.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/template_srv_stub.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/time_srv_stub.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.d.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js.map;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/adhoc.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/clickhouse-info.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/datasource.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/img/clickhouse_logo.svg;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/mode-clickhouse.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/module.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/config.html;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/query.editor.html;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/plugin.json;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/query_ctrl.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/response_parser.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/scanner.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/snippets/clickhouse.js;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_query.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_series.ts;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tsconfig.json;644;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tslint.json;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-console-sink.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-console-source.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-distributed.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-file-sink.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-file-source.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-log4j.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/connect-standalone.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/log4j.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/server.properties;644;root;root -image_content/config/kafka/etc/kafka/conf/tools-log4j.properties;644;root;root -image_content/config/kafka/usr/local/lib/systemd/system/kafka.service;644;root;root -image_content/config/novatellogreader/usr/local/lib/systemd/system/novatellogreader.service;644;root;root -image_content/config/spark/opt/spark/LICENSE;664;root;root -image_content/config/spark/opt/spark/NOTICE;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/DESCRIPTION;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/INDEX;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta/Rd.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta/features.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta/hsearch.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta/links.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta/nsInfo.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta/package.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/NAMESPACE;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdb;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdx;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/help/AnIndex;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/help/SparkR.rdb;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/help/SparkR.rdx;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/help/aliases.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/help/paths.rds;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/html/00Index.html;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/html/R.css;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/profile/general.R;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/profile/shell.R;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/tests/testthat/test_basic.R;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/worker/daemon.R;664;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/worker/worker.R;664;root;root -image_content/config/spark/opt/spark/R/lib/sparkr.zip;664;root;root -image_content/config/spark/opt/spark/README.md;664;root;root -image_content/config/spark/opt/spark/RELEASE;664;root;root -image_content/config/spark/opt/spark/bin/beeline;775;root;root -image_content/config/spark/opt/spark/bin/beeline.cmd;664;root;root -image_content/config/spark/opt/spark/bin/find-spark-home;775;root;root -image_content/config/spark/opt/spark/bin/find-spark-home.cmd;664;root;root -image_content/config/spark/opt/spark/bin/load-spark-env.cmd;664;root;root -image_content/config/spark/opt/spark/bin/load-spark-env.sh;664;root;root -image_content/config/spark/opt/spark/bin/pyspark;775;root;root -image_content/config/spark/opt/spark/bin/pyspark.cmd;664;root;root -image_content/config/spark/opt/spark/bin/pyspark2.cmd;664;root;root -image_content/config/spark/opt/spark/bin/run-example;775;root;root -image_content/config/spark/opt/spark/bin/run-example.cmd;664;root;root -image_content/config/spark/opt/spark/bin/spark-class;775;root;root -image_content/config/spark/opt/spark/bin/spark-class.cmd;664;root;root -image_content/config/spark/opt/spark/bin/spark-class2.cmd;664;root;root -image_content/config/spark/opt/spark/bin/spark-shell;775;root;root -image_content/config/spark/opt/spark/bin/spark-shell.cmd;664;root;root -image_content/config/spark/opt/spark/bin/spark-shell2.cmd;664;root;root -image_content/config/spark/opt/spark/bin/spark-sql;775;root;root -image_content/config/spark/opt/spark/bin/spark-submit;775;root;root -image_content/config/spark/opt/spark/bin/spark-submit.cmd;664;root;root -image_content/config/spark/opt/spark/bin/spark-submit2.cmd;664;root;root -image_content/config/spark/opt/spark/bin/sparkR;775;root;root -image_content/config/spark/opt/spark/bin/sparkR.cmd;664;root;root -image_content/config/spark/opt/spark/bin/sparkR2.cmd;664;root;root -image_content/config/spark/opt/spark/conf/docker.properties.template;664;root;root -image_content/config/spark/opt/spark/conf/fairscheduler.xml.template;664;root;root -image_content/config/spark/opt/spark/conf/log4j.properties;644;root;root -image_content/config/spark/opt/spark/conf/log4j.properties.template;664;root;root -image_content/config/spark/opt/spark/conf/metrics.properties.template;664;root;root -image_content/config/spark/opt/spark/conf/slaves;644;root;root -image_content/config/spark/opt/spark/conf/slaves.template;664;root;root -image_content/config/spark/opt/spark/conf/spark-defaults.conf;644;root;root -image_content/config/spark/opt/spark/conf/spark-defaults.conf.template;664;root;root -image_content/config/spark/opt/spark/conf/spark-env.sh;755;root;root -image_content/config/spark/opt/spark/conf/spark-env.sh.template;775;root;root -image_content/config/spark/opt/spark/data/graphx/followers.txt;664;root;root -image_content/config/spark/opt/spark/data/graphx/users.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/als/sample_movielens_ratings.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/als/test.data;664;root;root -image_content/config/spark/opt/spark/data/mllib/gmm_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/kmeans_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/pagerank_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/pic_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/ridge-data/lpsa.data;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_binary_classification_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_fpgrowth.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_isotonic_regression_libsvm_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_kmeans_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_lda_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_lda_libsvm_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_libsvm_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_linear_regression_data.txt;775;root;root -image_content/config/spark/opt/spark/data/mllib/sample_movielens_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_multiclass_classification_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/sample_svm_data.txt;664;root;root -image_content/config/spark/opt/spark/data/mllib/streaming_kmeans_data_test.txt;664;root;root -image_content/config/spark/opt/spark/data/streaming/AFINN-111.txt;664;root;root -image_content/config/spark/opt/spark/examples/jars/scopt_2.11-3.3.0.jar;664;root;root -image_content/config/spark/opt/spark/examples/jars/spark-examples_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaSparkPi.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaStatusTrackerDemo.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaTC.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaAFTSurvivalRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaALSExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBinarizerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBisectingKMeansExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketedRandomProjectionLSHExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketizerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSqSelectorExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSquareTestExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCorrelationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCountVectorizerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDCTExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeClassificationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDocument.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaElementwiseProductExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaEstimatorTransformerParamExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaFPGrowthExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGaussianMixtureExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGeneralizedLinearRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeClassifierExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeRegressorExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaImputerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIndexToStringExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaInteractionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIsotonicRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaKMeansExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLDAExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLabeledDocument.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearSVCExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionSummaryExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionWithElasticNetExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMaxAbsScalerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinHashLSHExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinMaxScalerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaCrossValidationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaTrainValidationSplitExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMulticlassLogisticRegressionWithElasticNetExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMultilayerPerceptronClassifierExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNGramExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNaiveBayesExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNormalizerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneHotEncoderExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneVsRestExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPCAExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPipelineExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPolynomialExpansionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaQuantileDiscretizerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRFormulaExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestClassifierExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestRegressorExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaSQLTransformerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStandardScalerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStopWordsRemoverExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStringIndexerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTfIdfExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTokenizerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorAssemblerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorIndexerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorSlicerExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaWord2VecExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaALS.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaAssociationRulesExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBinaryClassificationMetricsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBisectingKMeansExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaChiSqSelectorExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaCorrelationsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeClassificationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaElementwiseProductExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGaussianMixtureExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingClassificationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingKolmogorovSmirnovTestExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaIsotonicRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKMeansExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKernelDensityEstimationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLBFGSExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLatentDirichletAllocationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLinearRegressionWithSGDExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLogisticRegressionWithLBFGSExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMultiLabelClassificationMetricsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMulticlassClassificationMetricsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaNaiveBayesExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPCAExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPowerIterationClusteringExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPrefixSpanExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestClassificationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestRegressionExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRankingMetricsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRecommendationExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRegressionMetricsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVDExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVMWithSGDExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSimpleFPGrowth.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStratifiedSamplingExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStreamingTestExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSummaryStatisticsExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSQLDataSourceExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQLExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedTypedAggregation.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedUntypedAggregation.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/hive/JavaSparkHiveExample.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredKafkaWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCountWindowed.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredSessionization.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaCustomReceiver.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaDirectKafkaWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaKafkaWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaQueueStream.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecord.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecoverableNetworkWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaSqlNetworkWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaStatefulNetworkWordCount.java;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/als.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/avro_inputformat.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/kmeans.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/logistic_regression.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/aft_survival_regression.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/als_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/binarizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/bisecting_k_means_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/bucketed_random_projection_lsh_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/bucketizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/chi_square_test_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/chisq_selector_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/correlation_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/count_vectorizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/cross_validator.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/dataframe_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/dct_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/decision_tree_classification_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/decision_tree_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/elementwise_product_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/estimator_transformer_param_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/fpgrowth_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/gaussian_mixture_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/generalized_linear_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/gradient_boosted_tree_classifier_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/gradient_boosted_tree_regressor_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/imputer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/index_to_string_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/isotonic_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/kmeans_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/lda_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/linear_regression_with_elastic_net.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/linearsvc.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/logistic_regression_summary_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/logistic_regression_with_elastic_net.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/max_abs_scaler_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/min_hash_lsh_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/min_max_scaler_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/multiclass_logistic_regression_with_elastic_net.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/multilayer_perceptron_classification.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/n_gram_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/naive_bayes_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/normalizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/one_vs_rest_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/onehot_encoder_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/pca_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/pipeline_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/polynomial_expansion_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/quantile_discretizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/random_forest_classifier_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/random_forest_regressor_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/rformula_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/sql_transformer.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/standard_scaler_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/stopwords_remover_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/string_indexer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/tf_idf_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/tokenizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/train_validation_split.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/vector_assembler_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/vector_indexer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/vector_slicer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml/word2vec_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/binary_classification_metrics_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/bisecting_k_means_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/correlations.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/correlations_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/decision_tree_classification_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/decision_tree_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/elementwise_product_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/fpgrowth_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/gaussian_mixture_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/gaussian_mixture_model.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/gradient_boosting_classification_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/gradient_boosting_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/hypothesis_testing_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/hypothesis_testing_kolmogorov_smirnov_test_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/isotonic_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/k_means_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/kernel_density_estimation_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/kmeans.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/latent_dirichlet_allocation_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/linear_regression_with_sgd_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/logistic_regression.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/logistic_regression_with_lbfgs_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/multi_class_metrics_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/multi_label_metrics_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/naive_bayes_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/normalizer_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/pca_rowmatrix_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/power_iteration_clustering_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/random_forest_classification_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/random_forest_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/random_rdd_generation.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/ranking_metrics_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/recommendation_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/regression_metrics_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/sampled_rdds.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/standard_scaler_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/stratified_sampling_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/streaming_k_means_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/streaming_linear_regression_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/summary_statistics_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/svd_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/svm_with_sgd_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/tf_idf_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/word2vec.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib/word2vec_example.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/pagerank.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/parquet_inputformat.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/pi.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sort.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/basic.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/datasource.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/hive.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming/structured_kafka_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming/structured_network_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming/structured_network_wordcount_windowed.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/status_api_demo.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/direct_kafka_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/flume_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/hdfs_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/kafka_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/network_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/network_wordjoinsentiments.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/queue_stream.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/recoverable_network_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/sql_network_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming/stateful_network_wordcount.py;664;root;root -image_content/config/spark/opt/spark/examples/src/main/python/transitive_closure.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/wordcount.py;775;root;root -image_content/config/spark/opt/spark/examples/src/main/r/RSparkSQLExample.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/data-manipulation.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/dataframe.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/als.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/bisectingKmeans.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/fpm.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/gaussianMixture.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/gbt.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/glm.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/isoreg.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/kmeans.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/kstest.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/lda.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/logit.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/ml.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/mlp.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/naiveBayes.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/randomForest.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/survreg.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml/svmLinear.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/r/streaming/structured_network_wordcount.R;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/employees.json;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/full_user.avsc;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/kv1.txt;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/people.json;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/people.txt;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/user.avsc;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/users.avro;664;root;root -image_content/config/spark/opt/spark/examples/src/main/resources/users.parquet;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/BroadcastTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/DFSReadWriteTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/DriverSubmissionTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ExceptionHandlingTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/GroupByTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/HdfsTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalALS.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalFileLR.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalKMeans.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalLR.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LocalPi.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/LogQuery.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/MultiBroadcastTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SimpleSkewedGroupByTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SkewedGroupByTest.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkALS.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkHdfsLR.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkKMeans.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkLR.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkPageRank.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/SparkTC.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/AggregateMessagesExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/Analytics.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/ComprehensiveExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/ConnectedComponentsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/LiveJournalPageRank.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/PageRankExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/SSSPExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/SynthBenchmark.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx/TriangleCountingExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/AFTSurvivalRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ALSExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BinarizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BisectingKMeansExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BucketedRandomProjectionLSHExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/BucketizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ChiSqSelectorExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ChiSquareTestExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/CorrelationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/CountVectorizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DCTExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DataFrameExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DecisionTreeClassificationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DecisionTreeExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DecisionTreeRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/DeveloperApiExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ElementwiseProductExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/EstimatorTransformerParamExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/FPGrowthExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GBTExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GaussianMixtureExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GeneralizedLinearRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GradientBoostedTreeClassifierExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/GradientBoostedTreeRegressorExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ImputerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/IndexToStringExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/InteractionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/IsotonicRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/KMeansExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LDAExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LinearRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LinearRegressionWithElasticNetExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LinearSVCExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionSummaryExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/LogisticRegressionWithElasticNetExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MaxAbsScalerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MinHashLSHExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MinMaxScalerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaTrainValidationSplitExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MulticlassLogisticRegressionWithElasticNetExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/MultilayerPerceptronClassifierExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/NGramExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/NaiveBayesExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/NormalizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/OneHotEncoderExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/OneVsRestExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/PCAExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/PipelineExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/PolynomialExpansionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/QuantileDiscretizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RFormulaExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RandomForestClassifierExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RandomForestExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/RandomForestRegressorExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/SQLTransformerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/StandardScalerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/StopWordsRemoverExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/StringIndexerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/TfIdfExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/TokenizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/UnaryTransformerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/VectorAssemblerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/VectorIndexerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/VectorSlicerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml/Word2VecExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/AbstractParams.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/AssociationRulesExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/BinaryClassification.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/BinaryClassificationMetricsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/BisectingKMeansExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/ChiSqSelectorExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/Correlations.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/CorrelationsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/CosineSimilarity.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DecisionTreeClassificationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DecisionTreeRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DecisionTreeRunner.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/DenseKMeans.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/ElementwiseProductExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/FPGrowthExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GaussianMixtureExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GradientBoostedTreesRunner.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GradientBoostingClassificationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/GradientBoostingRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/HypothesisTestingExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/HypothesisTestingKolmogorovSmirnovTestExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/IsotonicRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/KMeansExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/KernelDensityEstimationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LBFGSExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LDAExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LatentDirichletAllocationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LinearRegression.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LinearRegressionWithSGDExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/LogisticRegressionWithLBFGSExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MovieLensALS.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MultiLabelMetricsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MulticlassMetricsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/MultivariateSummarizer.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/NaiveBayesExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/NormalizerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PCAExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PCAOnRowMatrixExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PCAOnSourceVectorExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PMMLModelExportExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PowerIterationClusteringExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/PrefixSpanExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RandomForestClassificationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RandomForestRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RandomRDDGeneration.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RankingMetricsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RecommendationExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/RegressionMetricsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SVDExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SVMWithSGDExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SampledRDDs.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SimpleFPGrowth.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SparseNaiveBayes.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StandardScalerExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StratifiedSamplingExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingKMeansExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingLinearRegressionExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingLogisticRegression.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/StreamingTestExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/SummaryStatisticsExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/TFIDFExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnyPCA.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/TallSkinnySVD.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib/Word2VecExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/pythonconverters/AvroConverters.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/RDDRelation.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/SQLDataSourceExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/SparkSQLExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/UserDefinedTypedAggregation.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/UserDefinedUntypedAggregation.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/hive/SparkHiveExample.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredKafkaWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredNetworkWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredNetworkWordCountWindowed.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredSessionization.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/CustomReceiver.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/DirectKafkaWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/FlumeEventCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/FlumePollingEventCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/HdfsWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/KafkaWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/NetworkWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/QueueStream.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/RawNetworkGrep.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/RecoverableNetworkWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/SqlNetworkWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/StatefulNetworkWordCount.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/StreamingExamples.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/clickstream/PageViewGenerator.scala;664;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/clickstream/PageViewStream.scala;664;root;root -image_content/config/spark/opt/spark/jars/RoaringBitmap-0.5.11.jar;664;root;root -image_content/config/spark/opt/spark/jars/antlr4-runtime-4.5.3.jar;664;root;root -image_content/config/spark/opt/spark/jars/aopalliance-repackaged-2.4.0-b34.jar;664;root;root -image_content/config/spark/opt/spark/jars/arpack_combined_all-0.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/avro-mapred-1.7.7-hadoop2.jar;664;root;root -image_content/config/spark/opt/spark/jars/breeze-macros_2.11-0.13.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/breeze_2.11-0.13.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/chill-java-0.8.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/chill_2.11-0.8.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/commons-codec-1.10.jar;664;root;root -image_content/config/spark/opt/spark/jars/commons-compiler-3.0.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/commons-crypto-1.0.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/commons-lang3-3.5.jar;664;root;root -image_content/config/spark/opt/spark/jars/commons-math3-3.4.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/commons-net-2.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/compress-lzf-1.0.3.jar;664;root;root -image_content/config/spark/opt/spark/jars/core-1.1.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/hk2-api-2.4.0-b34.jar;664;root;root -image_content/config/spark/opt/spark/jars/hk2-locator-2.4.0-b34.jar;664;root;root -image_content/config/spark/opt/spark/jars/hk2-utils-2.4.0-b34.jar;664;root;root -image_content/config/spark/opt/spark/jars/httpclient-4.5.2.jar;664;user;user -image_content/config/spark/opt/spark/jars/httpmime-4.5.2.jar;664;user;user -image_content/config/spark/opt/spark/jars/ivy-2.4.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/jackson-annotations-2.6.5.jar;664;root;root -image_content/config/spark/opt/spark/jars/jackson-core-2.6.5.jar;664;root;root -image_content/config/spark/opt/spark/jars/jackson-databind-2.6.5.jar;664;root;root -image_content/config/spark/opt/spark/jars/jackson-module-paranamer-2.6.5.jar;664;root;root -image_content/config/spark/opt/spark/jars/jackson-module-scala_2.11-2.6.5.jar;664;root;root -image_content/config/spark/opt/spark/jars/janino-3.0.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/javassist-3.18.1-GA.jar;664;root;root -image_content/config/spark/opt/spark/jars/javax.annotation-api-1.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/javax.inject-2.4.0-b34.jar;664;root;root -image_content/config/spark/opt/spark/jars/javax.servlet-api-3.1.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/javax.ws.rs-api-2.0.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/jcl-over-slf4j-1.7.16.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-client-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-common-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-container-servlet-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-container-servlet-core-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-guava-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-media-jaxb-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jersey-server-2.22.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/jline-2.12.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/json4s-ast_2.11-3.2.11.jar;664;root;root -image_content/config/spark/opt/spark/jars/json4s-core_2.11-3.2.11.jar;664;root;root -image_content/config/spark/opt/spark/jars/json4s-jackson_2.11-3.2.11.jar;664;root;root -image_content/config/spark/opt/spark/jars/jsr305-1.3.9.jar;664;root;root -image_content/config/spark/opt/spark/jars/jtransforms-2.4.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/jul-to-slf4j-1.7.16.jar;664;root;root -image_content/config/spark/opt/spark/jars/kryo-shaded-3.0.3.jar;664;root;root -image_content/config/spark/opt/spark/jars/leveldbjni-all-1.8.jar;664;root;root -image_content/config/spark/opt/spark/jars/lz4-1.3.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/machinist_2.11-0.6.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/macro-compat_2.11-1.1.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/mesos-1.0.0-shaded-protobuf.jar;664;root;root -image_content/config/spark/opt/spark/jars/metrics-core-3.1.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/metrics-graphite-3.1.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/metrics-json-3.1.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/metrics-jvm-3.1.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/minlog-1.3.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/netty-3.9.9.Final.jar;664;root;root -image_content/config/spark/opt/spark/jars/netty-all-4.0.43.Final.jar;664;root;root -image_content/config/spark/opt/spark/jars/novatel-streaming-assembly-1.0.jar;664;user;user -image_content/config/spark/opt/spark/jars/objenesis-2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/opencsv-2.3.jar;664;root;root -image_content/config/spark/opt/spark/jars/oro-2.0.8.jar;664;root;root -image_content/config/spark/opt/spark/jars/osgi-resource-locator-1.0.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/paranamer-2.6.jar;664;root;root -image_content/config/spark/opt/spark/jars/parquet-column-1.8.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/parquet-common-1.8.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/parquet-encoding-1.8.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/parquet-format-2.3.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/parquet-hadoop-1.8.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/parquet-jackson-1.8.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/pmml-model-1.2.15.jar;664;root;root -image_content/config/spark/opt/spark/jars/pmml-schema-1.2.15.jar;664;root;root -image_content/config/spark/opt/spark/jars/py4j-0.10.4.jar;664;root;root -image_content/config/spark/opt/spark/jars/pyrolite-4.13.jar;664;root;root -image_content/config/spark/opt/spark/jars/scala-compiler-2.11.8.jar;664;root;root -image_content/config/spark/opt/spark/jars/scala-library-2.11.8.jar;664;root;root -image_content/config/spark/opt/spark/jars/scala-parser-combinators_2.11-1.0.4.jar;664;root;root -image_content/config/spark/opt/spark/jars/scala-reflect-2.11.8.jar;664;root;root -image_content/config/spark/opt/spark/jars/scala-xml_2.11-1.0.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/scalap-2.11.8.jar;664;root;root -image_content/config/spark/opt/spark/jars/shapeless_2.11-2.3.2.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-catalyst_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-core_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-graphx_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-launcher_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-mesos_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-mllib-local_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-mllib_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-network-common_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-network-shuffle_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-opentsdb-assembly-2.1.jar;644;root;root -image_content/config/spark/opt/spark/jars/spark-repl_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-sketch_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-sql_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-streaming_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-tags_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-unsafe_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spark-yarn_2.11-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/spire-macros_2.11-0.13.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/spire_2.11-0.13.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/stream-2.7.0.jar;664;root;root -image_content/config/spark/opt/spark/jars/univocity-parsers-2.2.1.jar;664;root;root -image_content/config/spark/opt/spark/jars/validation-api-1.1.0.Final.jar;664;root;root -image_content/config/spark/opt/spark/jars/xbean-asm5-shaded-4.4.jar;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-AnchorJS.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-DPark.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-Mockito.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-SnapTree.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-antlr.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-boto.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-cloudpickle.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-d3.min.js.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-dagre-d3.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-f2j.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-graphlib-dot.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-heapq.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-javolution.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-jbcrypt.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-jline.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-jpmml-model.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-jquery.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-junit-interface.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-kryo.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-minlog.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-modernizr.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-netlib.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-paranamer.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-postgresql.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-protobuf.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-py4j.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-pyrolite.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-reflectasm.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-sbt-launch-lib.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-scala.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-scalacheck.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-scopt.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-slf4j.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-sorttable.js.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-spire.txt;664;root;root -image_content/config/spark/opt/spark/licenses/LICENSE-xmlenc.txt;664;root;root -image_content/config/spark/opt/spark/python/.gitignore;664;root;root -image_content/config/spark/opt/spark/python/MANIFEST.in;664;root;root -image_content/config/spark/opt/spark/python/README.md;664;root;root -image_content/config/spark/opt/spark/python/docs/Makefile;664;root;root -image_content/config/spark/opt/spark/python/docs/_static/pyspark.css;664;root;root -image_content/config/spark/opt/spark/python/docs/_static/pyspark.js;664;root;root -image_content/config/spark/opt/spark/python/docs/_templates/layout.html;664;root;root -image_content/config/spark/opt/spark/python/docs/conf.py;664;root;root -image_content/config/spark/opt/spark/python/docs/epytext.py;664;root;root -image_content/config/spark/opt/spark/python/docs/index.rst;664;root;root -image_content/config/spark/opt/spark/python/docs/make.bat;664;root;root -image_content/config/spark/opt/spark/python/docs/make2.bat;664;root;root -image_content/config/spark/opt/spark/python/docs/pyspark.ml.rst;664;root;root -image_content/config/spark/opt/spark/python/docs/pyspark.mllib.rst;664;root;root -image_content/config/spark/opt/spark/python/docs/pyspark.rst;664;root;root -image_content/config/spark/opt/spark/python/docs/pyspark.sql.rst;664;root;root -image_content/config/spark/opt/spark/python/docs/pyspark.streaming.rst;664;root;root -image_content/config/spark/opt/spark/python/lib/PY4J_LICENSE.txt;664;root;root -image_content/config/spark/opt/spark/python/lib/py4j-0.10.4-src.zip;664;root;root -image_content/config/spark/opt/spark/python/lib/pyspark.zip;664;root;root -image_content/config/spark/opt/spark/python/pylintrc;664;root;root -image_content/config/spark/opt/spark/python/pyspark/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/accumulators.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/broadcast.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/cloudpickle.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/conf.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/context.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/daemon.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/files.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/find_spark_home.py;775;root;root -image_content/config/spark/opt/spark/python/pyspark/heapq3.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/java_gateway.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/join.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/base.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/classification.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/clustering.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/common.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/evaluation.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/feature.py;775;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/fpm.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/linalg/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/param/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/param/_shared_params_code_gen.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/param/shared.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/pipeline.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/recommendation.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/regression.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/stat.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/tests.py;775;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/tuning.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/util.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/wrapper.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/classification.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/clustering.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/common.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/evaluation.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/feature.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/fpm.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/linalg/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/linalg/distributed.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/random.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/recommendation.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/regression.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/stat/KernelDensity.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/stat/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/stat/_statistics.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/stat/distribution.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/stat/test.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/tests.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/tree.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/util.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/profiler.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/rdd.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/rddsampler.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/resultiterable.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/serializers.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/shell.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/shuffle.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/catalog.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/column.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/conf.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/context.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/dataframe.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/functions.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/group.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/readwriter.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/session.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/streaming.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/tests.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/types.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/utils.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/sql/window.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/statcounter.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/status.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/storagelevel.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/__init__.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/context.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/dstream.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/flume.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/kafka.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/kinesis.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/listener.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/tests.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming/util.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/taskcontext.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/tests.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/traceback_utils.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/util.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/version.py;664;root;root -image_content/config/spark/opt/spark/python/pyspark/worker.py;664;root;root -image_content/config/spark/opt/spark/python/run-tests;775;root;root -image_content/config/spark/opt/spark/python/run-tests.py;775;root;root -image_content/config/spark/opt/spark/python/setup.cfg;664;root;root -image_content/config/spark/opt/spark/python/setup.py;664;root;root -image_content/config/spark/opt/spark/python/test_support/SimpleHTTPServer.py;664;root;root -image_content/config/spark/opt/spark/python/test_support/hello/hello.txt;775;root;root -image_content/config/spark/opt/spark/python/test_support/hello/sub_hello/sub_hello.txt;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/ages.csv;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/ages_newlines.csv;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/_SUCCESS;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=0/c=0/.part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=0/c=0/part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=1/c=1/.part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=1/c=1/part-r-00000-829af031-b970-49d6-ad39-30460a0be2c8.orc;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/_SUCCESS;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/_common_metadata;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/_metadata;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2014/month=9/day=1/.part-r-00008.gz.parquet.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2014/month=9/day=1/part-r-00008.gz.parquet;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/.part-r-00002.gz.parquet.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/.part-r-00004.gz.parquet.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/part-r-00002.gz.parquet;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25/part-r-00004.gz.parquet;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=26/.part-r-00005.gz.parquet.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=26/part-r-00005.gz.parquet;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=9/day=1/.part-r-00007.gz.parquet.crc;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=9/day=1/part-r-00007.gz.parquet;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/people.json;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/people1.json;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/people_array.json;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/streaming/text-test.txt;664;root;root -image_content/config/spark/opt/spark/python/test_support/sql/text-test.txt;664;root;root -image_content/config/spark/opt/spark/python/test_support/userlib-0.1.zip;664;root;root -image_content/config/spark/opt/spark/python/test_support/userlibrary.py;775;root;root -image_content/config/spark/opt/spark/sbin/slaves.sh;775;root;root -image_content/config/spark/opt/spark/sbin/spark-config.sh;775;root;root -image_content/config/spark/opt/spark/sbin/spark-daemon.sh;775;root;root -image_content/config/spark/opt/spark/sbin/spark-daemons.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-all.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-history-server.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-master.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-mesos-dispatcher.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-mesos-shuffle-service.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-shuffle-service.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-slave.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-slaves.sh;775;root;root -image_content/config/spark/opt/spark/sbin/start-thriftserver.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-all.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-history-server.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-master.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-mesos-dispatcher.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-mesos-shuffle-service.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-shuffle-service.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-slave.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-slaves.sh;775;root;root -image_content/config/spark/opt/spark/sbin/stop-thriftserver.sh;775;root;root -image_content/config/spark/opt/spark/yarn/spark-2.2.1-yarn-shuffle.jar;664;root;root -image_content/config/spark/opt/start-stream-receiver-local.sh;755;root;root -image_content/config/spark/opt/start-stream-receiver-local-2.sh;755;root;root -image_content/config/spark/usr/local/lib/systemd/system/spark-streamer-1.service;644;root;root -image_content/config/spark/usr/local/lib/systemd/system/spark-streamer-2.service;644;root;root -image_content/config/zookeeper/etc/zookeeper/conf/.diff.swm;600;root;root -image_content/config/zookeeper/etc/zookeeper/conf/.diff.swn;600;root;root -image_content/config/zookeeper/etc/zookeeper/conf/.diff.swo;600;root;root -image_content/config/zookeeper/etc/zookeeper/conf/.diff.swp;600;root;root -image_content/config/zookeeper/etc/zookeeper/conf/configuration.xsl;644;root;root -image_content/config/zookeeper/etc/zookeeper/conf/log4j.properties;644;root;root -image_content/config/zookeeper/etc/zookeeper/conf/myid;644;root;root -image_content/config/zookeeper/etc/zookeeper/conf/zoo.cfg;644;root;root -.;755;user;user -archives;755;user;user -docs/deploynment/astra;755;user;user -docs/deploynment;755;user;user -docs/specs/database_layout;755;user;user -image_content/config/clickhouse/etc/clickhouse-server;755;root;root -image_content/config/clickhouse/etc/clickhouse-server/users.d;755;root;root -image_content/config/clickhouse-proxy/usr/local/lib/systemd/system;755;root;root -image_content/config;755;user;user -image_content/config/grafana/etc/default;755;root;root -image_content/config/grafana/etc/grafana;755;root;root -image_content/config/grafana/etc/grafana/provisioning/dashboards;755;root;grafana -image_content/config/grafana/etc/grafana/provisioning/datasources;755;root;grafana -image_content/config/grafana/home/user;755;root;root -image_content/config/grafana/var/lib/grafana;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/livy-panel;777;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/livy-panel/css;777;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/livy-panel;777;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins;755;grafana;grafana -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/img;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/img;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/snippets;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src;755;root;root -image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource;755;root;root -image_content/config/grafana-dashboards;755;user;user -image_content/config/kafka/etc/kafka/conf;755;root;root -image_content/config/kafka/usr/local/lib/systemd/system;755;root;root -image_content/config/novatellogreader/usr/local/lib/systemd/system;755;root;root -image_content/config/spark/opt/spark;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/Meta;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/R;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/help;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/html;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/profile;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/tests/testthat;775;root;root -image_content/config/spark/opt/spark/R/lib/SparkR/worker;775;root;root -image_content/config/spark/opt/spark/R/lib;775;root;root -image_content/config/spark/opt/spark;775;root;root -image_content/config/spark/opt/spark/bin;775;root;root -image_content/config/spark/opt/spark/conf;775;root;root -image_content/config/spark/opt/spark/data/graphx;775;root;root -image_content/config/spark/opt/spark/data/mllib/als;775;root;root -image_content/config/spark/opt/spark/data/mllib;775;root;root -image_content/config/spark/opt/spark/data/mllib/ridge-data;775;root;root -image_content/config/spark/opt/spark/data/mllib;775;root;root -image_content/config/spark/opt/spark/data/streaming;775;root;root -image_content/config/spark/opt/spark/examples/jars;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/hive;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/ml;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/mllib;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/sql/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/python;775;root;root -image_content/config/spark/opt/spark/examples/src/main/r;775;root;root -image_content/config/spark/opt/spark/examples/src/main/r/ml;775;root;root -image_content/config/spark/opt/spark/examples/src/main/r/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/resources;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/graphx;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/ml;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/mllib;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/pythonconverters;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/hive;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming;775;root;root -image_content/config/spark/opt/spark/examples/src/main/scala/org/apache/spark/examples/streaming/clickstream;775;root;root -image_content/config/spark/opt/spark/jars;777;root;root -image_content/config/spark/opt/spark/licenses;775;root;root -image_content/config/spark/opt/spark/python;775;root;root -image_content/config/spark/opt/spark/python/docs;775;root;root -image_content/config/spark/opt/spark/python/docs/_static;775;root;root -image_content/config/spark/opt/spark/python/docs/_templates;775;root;root -image_content/config/spark/opt/spark/python/docs;775;root;root -image_content/config/spark/opt/spark/python/lib;775;root;root -image_content/config/spark/opt/spark/python;775;root;root -image_content/config/spark/opt/spark/python/pyspark;775;root;root -image_content/config/spark/opt/spark/python/pyspark/ml;775;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/linalg;775;root;root -image_content/config/spark/opt/spark/python/pyspark/ml/param;775;root;root -image_content/config/spark/opt/spark/python/pyspark/ml;775;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib;775;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/linalg;775;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib;775;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib/stat;775;root;root -image_content/config/spark/opt/spark/python/pyspark/mllib;775;root;root -image_content/config/spark/opt/spark/python/pyspark;775;root;root -image_content/config/spark/opt/spark/python/pyspark/sql;775;root;root -image_content/config/spark/opt/spark/python/pyspark;775;root;root -image_content/config/spark/opt/spark/python/pyspark/streaming;775;root;root -image_content/config/spark/opt/spark/python/pyspark;775;root;root -image_content/config/spark/opt/spark/python;775;root;root -image_content/config/spark/opt/spark/python/test_support;775;root;root -image_content/config/spark/opt/spark/python/test_support/hello;775;root;root -image_content/config/spark/opt/spark/python/test_support/hello/sub_hello;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=0/c=0;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/orc_partitioned/b=1/c=1;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2014/month=9/day=1;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=25;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=10/day=26;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/parquet_partitioned/year=2015/month=9/day=1;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql/streaming;775;root;root -image_content/config/spark/opt/spark/python/test_support/sql;775;root;root -image_content/config/spark/opt/spark/python/test_support;775;root;root -image_content/config/spark/opt/spark/sbin;775;root;root -image_content/config/spark/opt/spark/yarn;775;root;root -image_content/config/spark/opt;755;root;root -image_content/config/spark/usr/local/lib/systemd/system;755;root;root -image_content/config/zookeeper/etc/zookeeper/conf;755;root;root diff --git a/archives/ca-certificates-java_20190214-4_all.deb b/archives/ca-certificates-java_20190214-4_all.deb deleted file mode 120000 index 7873ba7..0000000 --- a/archives/ca-certificates-java_20190214-4_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/mv/j6/SHA256E-s15840--49dd9cb808fc7008b8ca5b3f52c1d8ac278fc9cb21b64c8f83ae89338c800252.deb/SHA256E-s15840--49dd9cb808fc7008b8ca5b3f52c1d8ac278fc9cb21b64c8f83ae89338c800252.deb \ No newline at end of file diff --git a/archives/clickhouse-client_20.5.2.7_all.deb b/archives/clickhouse-client_20.5.2.7_all.deb deleted file mode 120000 index 76d9832..0000000 --- a/archives/clickhouse-client_20.5.2.7_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/9K/K1/SHA256E-s68030--b25cf268ecfb8d4b22017d8413593e5d1370ec55093338227c4c22ee30b2b5c8.deb/SHA256E-s68030--b25cf268ecfb8d4b22017d8413593e5d1370ec55093338227c4c22ee30b2b5c8.deb \ No newline at end of file diff --git a/archives/clickhouse-common-static_20.5.2.7_amd64.deb b/archives/clickhouse-common-static_20.5.2.7_amd64.deb deleted file mode 120000 index 76f3f01..0000000 --- a/archives/clickhouse-common-static_20.5.2.7_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/Pp/M5/SHA256E-s120753494--0a1c7d16544777e79d831ae1f9f7f3a0ff1df57d1ef6bc9351e345ce5b36a795.deb/SHA256E-s120753494--0a1c7d16544777e79d831ae1f9f7f3a0ff1df57d1ef6bc9351e345ce5b36a795.deb \ No newline at end of file diff --git a/archives/clickhouse-server_20.5.2.7_all.deb b/archives/clickhouse-server_20.5.2.7_all.deb deleted file mode 120000 index c955619..0000000 --- a/archives/clickhouse-server_20.5.2.7_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/m2/wm/SHA256E-s84578--63fb6c7a03f617deac625968f018fa541910cf0291db33c6c1fcd0bad9242f5a.deb/SHA256E-s84578--63fb6c7a03f617deac625968f018fa541910cf0291db33c6c1fcd0bad9242f5a.deb \ No newline at end of file diff --git a/archives/golang-go_2%3a1.7~5_amd64.deb b/archives/golang-go_2%3a1.7~5_amd64.deb deleted file mode 120000 index 179a453..0000000 --- a/archives/golang-go_2%3a1.7~5_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/WJ/mw/SHA256E-s22718--76af54419a1a81f1a09f1cfc9d44ce6845c431bdbcfe77bbc371063303c3331c.deb/SHA256E-s22718--76af54419a1a81f1a09f1cfc9d44ce6845c431bdbcfe77bbc371063303c3331c.deb \ No newline at end of file diff --git a/archives/gosjava-8-jre-headless_8u252-b9-1free1_amd64.deb b/archives/gosjava-8-jre-headless_8u252-b9-1free1_amd64.deb deleted file mode 120000 index 1a4c5a2..0000000 --- a/archives/gosjava-8-jre-headless_8u252-b9-1free1_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/93/JG/SHA256E-s26939394--fba06f586428c138fe4f23ed9fde6ee3bc216fe59ea62f7c01f5b1bfe1170b3c.deb/SHA256E-s26939394--fba06f586428c138fe4f23ed9fde6ee3bc216fe59ea62f7c01f5b1bfe1170b3c.deb \ No newline at end of file diff --git a/archives/gosjava-jre-headless_1.8-62-7_amd64.deb b/archives/gosjava-jre-headless_1.8-62-7_amd64.deb deleted file mode 120000 index c8a81f5..0000000 --- a/archives/gosjava-jre-headless_1.8-62-7_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/vF/KQ/SHA256E-s10816--c0d0d9b7a8edd2b2c7fdfc670e16afb7f3ff7a47a91b79cc1bb6053afff26a47.deb/SHA256E-s10816--c0d0d9b7a8edd2b2c7fdfc670e16afb7f3ff7a47a91b79cc1bb6053afff26a47.deb \ No newline at end of file diff --git a/archives/grafana_6.2.5-1601016471_amd64.deb b/archives/grafana_6.2.5-1601016471_amd64.deb deleted file mode 120000 index 1843c24..0000000 --- a/archives/grafana_6.2.5-1601016471_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/ZX/MK/SHA256E-s58646064--e6f2cca5720a4f43c55ac6531fff091474a7c2e2b540a78f8b7346a43e86464d.deb/SHA256E-s58646064--e6f2cca5720a4f43c55ac6531fff091474a7c2e2b540a78f8b7346a43e86464d.deb \ No newline at end of file diff --git a/archives/hadoop-2.6.0.tar.gz b/archives/hadoop-2.6.0.tar.gz deleted file mode 120000 index 147ad1d..0000000 --- a/archives/hadoop-2.6.0.tar.gz +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/0k/M9/SHA256E-s195257604--7a2ef6e7f468afcae95d0f7214816033c7e5c7982454061ccb117896d58d279f.tar.gz/SHA256E-s195257604--7a2ef6e7f468afcae95d0f7214816033c7e5c7982454061ccb117896d58d279f.tar.gz \ No newline at end of file diff --git a/archives/java-common_0.62-7_all.deb b/archives/java-common_0.62-7_all.deb deleted file mode 120000 index 952f24b..0000000 --- a/archives/java-common_0.62-7_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/VW/9V/SHA256E-s14324--1c39895480eaa89107c738cd753589e1f1af008be0010dfa36a3fc780329044c.deb/SHA256E-s14324--1c39895480eaa89107c738cd753589e1f1af008be0010dfa36a3fc780329044c.deb \ No newline at end of file diff --git a/archives/kafka_2.13-2.5.0.tgz b/archives/kafka_2.13-2.5.0.tgz deleted file mode 120000 index f67faec..0000000 --- a/archives/kafka_2.13-2.5.0.tgz +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/j4/F4/SHA256E-s61459093--112b00678428595ff871a96215e9fd2c36d042220c29b1e91275988e623c6f70.0.tgz/SHA256E-s61459093--112b00678428595ff871a96215e9fd2c36d042220c29b1e91275988e623c6f70.0.tgz \ No newline at end of file diff --git a/archives/lab50-archive-keyring_2.1_all.deb b/archives/lab50-archive-keyring_2.1_all.deb deleted file mode 120000 index bc3177c..0000000 --- a/archives/lab50-archive-keyring_2.1_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/jG/gw/SHA256E-s3404--0aa6e598a5d0114ed91cb690f76275d7a480e620bd0bc445c564f0ae90fb8d65.deb/SHA256E-s3404--0aa6e598a5d0114ed91cb690f76275d7a480e620bd0bc445c564f0ae90fb8d65.deb \ No newline at end of file diff --git a/archives/libzookeeper-java_3.4.9-3+deb9u2_all.deb b/archives/libzookeeper-java_3.4.9-3+deb9u2_all.deb deleted file mode 120000 index 7991791..0000000 --- a/archives/libzookeeper-java_3.4.9-3+deb9u2_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/zK/6F/SHA256E-s1360094--c42db707dd13720abcc43b727ee6f4b2cb18bd68e124c8278dcb8ab120b04ccc.deb/SHA256E-s1360094--c42db707dd13720abcc43b727ee6f4b2cb18bd68e124c8278dcb8ab120b04ccc.deb \ No newline at end of file diff --git a/archives/linux-headers-4.15.3-1-generic_4.15.3-1.astra21_amd64.deb b/archives/linux-headers-4.15.3-1-generic_4.15.3-1.astra21_amd64.deb deleted file mode 120000 index 944c550..0000000 --- a/archives/linux-headers-4.15.3-1-generic_4.15.3-1.astra21_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/KK/v2/SHA256E-s1130296--4aa9eb9d8f4bd1a976cfb2e99ff873ad6682206c9d09f7ac77a3e635a33169d4.deb/SHA256E-s1130296--4aa9eb9d8f4bd1a976cfb2e99ff873ad6682206c9d09f7ac77a3e635a33169d4.deb \ No newline at end of file diff --git a/archives/linux-headers-4.15.3-1-hardened_4.15.3-1.astra21_amd64.deb b/archives/linux-headers-4.15.3-1-hardened_4.15.3-1.astra21_amd64.deb deleted file mode 120000 index 8e61b37..0000000 --- a/archives/linux-headers-4.15.3-1-hardened_4.15.3-1.astra21_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/q6/vP/SHA256E-s1796166--e35845e24490c00abe1f3769a4d586835c395a147e208c7b7990cc83f19bbed2.deb/SHA256E-s1796166--e35845e24490c00abe1f3769a4d586835c395a147e208c7b7990cc83f19bbed2.deb \ No newline at end of file diff --git a/archives/linux-headers-4.15.3-1_4.15.3-1.astra21_all.deb b/archives/linux-headers-4.15.3-1_4.15.3-1.astra21_all.deb deleted file mode 120000 index 770662a..0000000 --- a/archives/linux-headers-4.15.3-1_4.15.3-1.astra21_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/JF/zM/SHA256E-s11187722--bcd153987690e57d581ccc5138b4365fb8e437834d696935f35f3cdb719c5a52.deb/SHA256E-s11187722--bcd153987690e57d581ccc5138b4365fb8e437834d696935f35f3cdb719c5a52.deb \ No newline at end of file diff --git a/archives/linux-headers-4.15.3-2-generic_4.15.3-2.astra25_amd64.deb b/archives/linux-headers-4.15.3-2-generic_4.15.3-2.astra25_amd64.deb deleted file mode 120000 index 89db977..0000000 --- a/archives/linux-headers-4.15.3-2-generic_4.15.3-2.astra25_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/4W/P1/SHA256E-s1336288--2a0f21a966354d82b1f31654ca1b711d6772f19c69333d2d39e7e706342188d3.deb/SHA256E-s1336288--2a0f21a966354d82b1f31654ca1b711d6772f19c69333d2d39e7e706342188d3.deb \ No newline at end of file diff --git a/archives/linux-headers-4.15.3-2-hardened_4.15.3-2.astra25_amd64.deb b/archives/linux-headers-4.15.3-2-hardened_4.15.3-2.astra25_amd64.deb deleted file mode 120000 index 560e57c..0000000 --- a/archives/linux-headers-4.15.3-2-hardened_4.15.3-2.astra25_amd64.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/pf/35/SHA256E-s1999640--b8b32e2d07a0b18838cd2d7567cba2869ede76921fee59161672ad09c464027f.deb/SHA256E-s1999640--b8b32e2d07a0b18838cd2d7567cba2869ede76921fee59161672ad09c464027f.deb \ No newline at end of file diff --git a/archives/linux-headers-4.15.3-2_4.15.3-2.astra25_all.deb b/archives/linux-headers-4.15.3-2_4.15.3-2.astra25_all.deb deleted file mode 120000 index a051337..0000000 --- a/archives/linux-headers-4.15.3-2_4.15.3-2.astra25_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/Q5/8k/SHA256E-s11277624--91d77f7aaafe028ac2f5faf97d09cdef35142ea89b9462a487fd214ca84ffe22.deb/SHA256E-s11277624--91d77f7aaafe028ac2f5faf97d09cdef35142ea89b9462a487fd214ca84ffe22.deb \ No newline at end of file diff --git a/archives/ngpsusbpackage.tar.gz b/archives/ngpsusbpackage.tar.gz deleted file mode 120000 index 6cd3adb..0000000 --- a/archives/ngpsusbpackage.tar.gz +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/jm/xz/SHA256E-s2564--9dd7c2cb9e49bdd5d7a489626cb89fa7e7f885e7158f39d8b80bad0e0fd4d0ca.tar.gz/SHA256E-s2564--9dd7c2cb9e49bdd5d7a489626cb89fa7e7f885e7158f39d8b80bad0e0fd4d0ca.tar.gz \ No newline at end of file diff --git a/archives/novatellogreader.tar.gz b/archives/novatellogreader.tar.gz deleted file mode 120000 index de21dbd..0000000 --- a/archives/novatellogreader.tar.gz +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/vz/gq/SHA256E-s52396045--5bb0fec469bb47664dece7d347b6390b05ae300d2f4226597fee00b6cda8ed28.tar.gz/SHA256E-s52396045--5bb0fec469bb47664dece7d347b6390b05ae300d2f4226597fee00b6cda8ed28.tar.gz \ No newline at end of file diff --git a/archives/zookeeper_3.4.9-3+deb9u2_all.deb b/archives/zookeeper_3.4.9-3+deb9u2_all.deb deleted file mode 120000 index b4518b9..0000000 --- a/archives/zookeeper_3.4.9-3+deb9u2_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/p2/1Q/SHA256E-s141954--879b7395fc219b508ff714e4f7d93e6f74fcfb99f09da359c794bd91b4724997.deb/SHA256E-s141954--879b7395fc219b508ff714e4f7d93e6f74fcfb99f09da359c794bd91b4724997.deb \ No newline at end of file diff --git a/archives/zookeeperd_3.4.9-3+deb9u2_all.deb b/archives/zookeeperd_3.4.9-3+deb9u2_all.deb deleted file mode 120000 index a3e5a8f..0000000 --- a/archives/zookeeperd_3.4.9-3+deb9u2_all.deb +++ /dev/null @@ -1 +0,0 @@ -../.git/annex/objects/W0/0j/SHA256E-s44154--8f5ae097b916bf6214f624f85f02b6988eef0479c279d97ca95fc1e3c1939681.deb/SHA256E-s44154--8f5ae097b916bf6214f624f85f02b6988eef0479c279d97ca95fc1e3c1939681.deb \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 1ebb965..8e66b82 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -57,10 +57,6 @@ services: environment: KAFKA_HOST: 'ionosphere-iif-kafka' CH_HOST: 'ionosphere-iif-clickhouse' - volumes: - - type: bind - source: ./image_content/config/spark/opt/spark/conf/log4j.properties - target: /spark/conf/log4j.properties depends_on: - kafka - clickhouse diff --git a/image_content/config/clickhouse-proxy/usr/local/lib/systemd/system/clickhouse-proxy.service b/image_content/config/clickhouse-proxy/usr/local/lib/systemd/system/clickhouse-proxy.service deleted file mode 100644 index b774103..0000000 --- a/image_content/config/clickhouse-proxy/usr/local/lib/systemd/system/clickhouse-proxy.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Process to access ClickHouse data with postprocessing -After=clickhouse-server - -[Service] -Type=simple -WorkingDirectory=/opt/clickhouse-proxy -ExecStart=/opt/clickhouse-proxy/.venv/clickhouse-proxy-env/bin/python3 /opt/clickhouse-proxy/clickhouse-proxy.py - -[Install] -WantedBy=multi-user.target diff --git a/image_content/config/grafana/etc/default/grafana-server b/image_content/config/grafana/etc/default/grafana-server deleted file mode 100644 index eb77e62..0000000 --- a/image_content/config/grafana/etc/default/grafana-server +++ /dev/null @@ -1,24 +0,0 @@ -GRAFANA_USER=grafana - -GRAFANA_GROUP=grafana - -GRAFANA_HOME=/usr/share/grafana - -LOG_DIR=/var/log/grafana - -DATA_DIR=/var/lib/grafana - -MAX_OPEN_FILES=10000 - -CONF_DIR=/etc/grafana - -CONF_FILE=/etc/grafana/grafana.ini - -RESTART_ON_UPGRADE=true - -PLUGINS_DIR=/var/lib/grafana/plugins - -PROVISIONING_CFG_DIR=/etc/grafana/provisioning - -# Only used on systemd systems -PID_FILE_DIR=/var/run/grafana diff --git a/image_content/config/grafana/etc/grafana/ldap.toml b/image_content/config/grafana/etc/grafana/ldap.toml deleted file mode 100644 index 305929b..0000000 --- a/image_content/config/grafana/etc/grafana/ldap.toml +++ /dev/null @@ -1,85 +0,0 @@ -# To troubleshoot and get more log info enable ldap debug logging in grafana.ini -# [log] -# filters = ldap:debug - -[[servers]] -# Ldap server host (specify multiple hosts space separated) -host = "127.0.0.1" -# Default port is 389 or 636 if use_ssl = true -port = 389 -# Set to true if ldap server supports TLS -use_ssl = false -# Set to true if connect ldap server with STARTTLS pattern (create connection in insecure, then upgrade to secure connection with TLS) -start_tls = false -# set to true if you want to skip ssl cert validation -ssl_skip_verify = false -# set to the path to your root CA certificate or leave unset to use system defaults -# root_ca_cert = /path/to/certificate.crt - -# Search user bind dn -bind_dn = "cn=admin,dc=grafana,dc=org" -# Search user bind password -# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;""" -bind_password = 'grafana' - -# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)" -search_filter = "(cn=%s)" - -# An array of base dns to search through -search_base_dns = ["dc=grafana,dc=org"] - -# In POSIX LDAP schemas, without memberOf attribute a secondary query must be made for groups. -# This is done by enabling group_search_filter below. You must also set member_of= "cn" -# in [servers.attributes] below. - -# Users with nested/recursive group membership and an LDAP server that supports LDAP_MATCHING_RULE_IN_CHAIN -# can set group_search_filter, group_search_filter_user_attribute, group_search_base_dns and member_of -# below in such a way that the user's recursive group membership is considered. -# -# Nested Groups + Active Directory (AD) Example: -# -# AD groups store the Distinguished Names (DNs) of members, so your filter must -# recursively search your groups for the authenticating user's DN. For example: -# -# group_search_filter = "(member:1.2.840.113556.1.4.1941:=%s)" -# group_search_filter_user_attribute = "distinguishedName" -# group_search_base_dns = ["ou=groups,dc=grafana,dc=org"] -# -# [servers.attributes] -# ... -# member_of = "distinguishedName" - -## Group search filter, to retrieve the groups of which the user is a member (only set if memberOf attribute is not available) -# group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))" -## Group search filter user attribute defines what user attribute gets substituted for %s in group_search_filter. -## Defaults to the value of username in [server.attributes] -## Valid options are any of your values in [servers.attributes] -## If you are using nested groups you probably want to set this and member_of in -## [servers.attributes] to "distinguishedName" -# group_search_filter_user_attribute = "distinguishedName" -## An array of the base DNs to search through for groups. Typically uses ou=groups -# group_search_base_dns = ["ou=groups,dc=grafana,dc=org"] - -# Specify names of the ldap attributes your ldap uses -[servers.attributes] -name = "givenName" -surname = "sn" -username = "cn" -member_of = "memberOf" -email = "email" - -# Map ldap groups to grafana org roles -[[servers.group_mappings]] -group_dn = "cn=admins,dc=grafana,dc=org" -org_role = "Admin" -# The Grafana organization database id, optional, if left out the default org (id 1) will be used -# org_id = 1 - -[[servers.group_mappings]] -group_dn = "cn=users,dc=grafana,dc=org" -org_role = "Editor" - -[[servers.group_mappings]] -# If you want to match all (or no ldap groups) then you can use wildcard -group_dn = "*" -org_role = "Viewer" diff --git a/image_content/config/grafana/var/lib/grafana/grafana.db b/image_content/config/grafana/var/lib/grafana/grafana.db deleted file mode 120000 index 6ee0f50..0000000 --- a/image_content/config/grafana/var/lib/grafana/grafana.db +++ /dev/null @@ -1 +0,0 @@ -../../../../../../.git/annex/objects/mw/5K/SHA256E-s1887232--b06ed6ec5d36cb30dc49fab961d48af4bf8b8f01a1a7c500f3267b94d41368ee.db/SHA256E-s1887232--b06ed6ec5d36cb30dc49fab961d48af4bf8b8f01a1a7c500f3267b94d41368ee.db \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/.gitignore b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/.gitignore deleted file mode 100644 index 00448a2..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -node_modules -npm-debug.log -coverage/ -.aws-config.json -awsconfig -/emails/dist -/public_gen -/tmp -vendor/phantomjs/phantomjs - -docs/AWS_S3_BUCKET -docs/GIT_BRANCH -docs/VERSION -docs/GITCOMMIT -docs/changed-files -docs/changed-files - -# locally required config files -public/css/*.min.css - -# Editor junk -*.sublime-workspace -*.swp -.idea/ -*.iml - -/data/* -/bin/* - -conf/custom.ini -fig.yml -profile.cov -grafana -.notouch diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/Gruntfile.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/Gruntfile.js deleted file mode 100644 index e53beae..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/Gruntfile.js +++ /dev/null @@ -1,60 +0,0 @@ -module.exports = function(grunt) { - - require('load-grunt-tasks')(grunt); - - grunt.loadNpmTasks('grunt-execute'); - grunt.loadNpmTasks('grunt-contrib-clean'); - - grunt.initConfig({ - - clean: ["dist"], - - copy: { - src_to_dist: { - cwd: 'src', - expand: true, - src: ['**/*', '!**/*.js', '!**/*.scss'], - dest: 'dist' - }, - img_to_dist: { - cwd: 'src', - expand: true, - src: ['img/*'], - dest: 'dist/src/' - }, - pluginDef: { - expand: true, - src: [ 'plugin.json', 'README.md' ], - dest: 'dist', - } - }, - - watch: { - rebuild_all: { - files: ['src/**/*', 'plugin.json'], - tasks: ['default'], - options: {spawn: false} - }, - }, - - babel: { - options: { - sourceMap: true, - presets: ["es2015"], - plugins: ['transform-es2015-modules-systemjs', "transform-es2015-for-of"], - }, - dist: { - files: [{ - cwd: 'src', - expand: true, - src: ['*.js'], - dest: 'dist', - ext:'.js' - }] - }, - }, - - }); - - grunt.registerTask('default', ['clean', 'copy:src_to_dist', 'copy:img_to_dist', 'copy:pluginDef', 'babel']); -}; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/LICENSE b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/LICENSE deleted file mode 100644 index 4644c8c..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Grafana - -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. diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/README.md b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/README.md deleted file mode 100644 index 1778f52..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/README.md +++ /dev/null @@ -1,53 +0,0 @@ -Use the new grafana-cli tool to install piechart-panel from the commandline: - -``` -grafana-cli plugins install grafana-piechart-panel -``` - -The plugin will be installed into your grafana plugins directory; the default is /var/lib/grafana/plugins if you installed the grafana package. - -More instructions on the cli tool can be found [here](http://docs.grafana.org/v3.0/plugins/installation/). - -You need the lastest grafana build for Grafana 3.0 to enable plugin support. You can get it here : http://grafana.org/download/builds.html - -## Alternative installation method - -It is also possible to clone this repo directly into your plugins directory. - -Afterwards restart grafana-server and the plugin should be automatically detected and used. - -``` -git clone https://github.com/grafana/piechart-panel.git -sudo service grafana-server restart -``` - - -## Clone into a directory of your choice - -If the plugin is cloned to a directory that is not the default plugins directory then you need to edit your grafana.ini config file (Default location is at /etc/grafana/grafana.ini) and add this: - -```ini -[plugin.piechart] -path = /home/your/clone/dir/piechart-panel -``` - -Note that if you clone it into the grafana plugins directory you do not need to add the above config option. That is only -if you want to place the plugin in a directory outside the standard plugins directory. Be aware that grafana-server -needs read access to the directory. - -# Changelog - -## 1.1.4 -* Add support for combining small slices (https://github.com/grafana/piechart-panel/pull/43) -* Add option to show percentage in legend https://github.com/grafana/piechart-panel/pull/41 - -## 1.0.2 - -* Add piechart piece divider setting -* Remove Unused code -* Adds fontsize option for labels on graph -* Only show the displaied piechart value in legend -* Add possibility to pick stat to use for piechart - -## 1.1.4 -* Add support diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/README.md b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/README.md deleted file mode 100644 index 1778f52..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/README.md +++ /dev/null @@ -1,53 +0,0 @@ -Use the new grafana-cli tool to install piechart-panel from the commandline: - -``` -grafana-cli plugins install grafana-piechart-panel -``` - -The plugin will be installed into your grafana plugins directory; the default is /var/lib/grafana/plugins if you installed the grafana package. - -More instructions on the cli tool can be found [here](http://docs.grafana.org/v3.0/plugins/installation/). - -You need the lastest grafana build for Grafana 3.0 to enable plugin support. You can get it here : http://grafana.org/download/builds.html - -## Alternative installation method - -It is also possible to clone this repo directly into your plugins directory. - -Afterwards restart grafana-server and the plugin should be automatically detected and used. - -``` -git clone https://github.com/grafana/piechart-panel.git -sudo service grafana-server restart -``` - - -## Clone into a directory of your choice - -If the plugin is cloned to a directory that is not the default plugins directory then you need to edit your grafana.ini config file (Default location is at /etc/grafana/grafana.ini) and add this: - -```ini -[plugin.piechart] -path = /home/your/clone/dir/piechart-panel -``` - -Note that if you clone it into the grafana plugins directory you do not need to add the above config option. That is only -if you want to place the plugin in a directory outside the standard plugins directory. Be aware that grafana-server -needs read access to the directory. - -# Changelog - -## 1.1.4 -* Add support for combining small slices (https://github.com/grafana/piechart-panel/pull/43) -* Add option to show percentage in legend https://github.com/grafana/piechart-panel/pull/41 - -## 1.0.2 - -* Add piechart piece divider setting -* Remove Unused code -* Adds fontsize option for labels on graph -* Only show the displaied piechart value in legend -* Add possibility to pick stat to use for piechart - -## 1.1.4 -* Add support diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/editor.html b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/editor.html deleted file mode 100644 index 6fd689b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/editor.html +++ /dev/null @@ -1,62 +0,0 @@ -
-
-
General
-
- Type -
- -
-
-
- Unit -
-
-
-
- Value -
- -
-
-
- Divider width - -
-
- -
-
Legend
- -
- Position -
- -
-
-
- Font size -
- -
-
- - -
- -
-
Combine
-
- Threshold: - - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice). -
-
- Label - - Label text for the combined slice. -
- -
diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-donut.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-donut.png deleted file mode 100644 index 8e54878b1818390e9a64a85f95ea6cf191093121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38209 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 U9(vjFSE2lp{?&^GD2KoQ1yf+SQvd(} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png deleted file mode 100644 index 51dfcbc9f3198216c00798282e5c3fcc1b284fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37972 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 L)7e+{*HZoi7z@?u diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png deleted file mode 100644 index 9b018c390531250defeddf0f093238f69012a6f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41450 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

hoR@X{k09*Ul_DHB2wpQ|7;FJ%LRerwKh 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 D&k=w9 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png deleted file mode 100644 index 32845115d934b2c35d279f3919d36557cb8a61b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34314 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 r@G@S~{O^x6=7D=%5Qu`Ts!X}myWsx^YhG&t diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-options.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart-options.png deleted file mode 100644 index 117962e05ff61b61972a4e1fc5c7637d00f78935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48400 zcmcG$1yq$^*Ds2q0tO%<5`u()bc3X9y1Pq|PU!{%L_kDETDrSIT0uZb>F)0Cx^w%! z=ZyQ^`+om%?mhSJ;TRjX&$IX1Yt1$1FXkdpQC{NCO`@A9C@6QNBt?}`P*8uOpj;(G zzY4EBdHVVYo=_bTQmW|a=%dpLQ}8RclbEKHik+#GtD%Dlii)|jlaq7zAzphn(eA>j&fePdR`9lCv%%JZH=6A z?Uq5_?15T*MctRTgr7bgE=EWqnm0pxPxZpE)A6T|&${Cy+dkDq>c)F+K49?l^h6F0 z1*I(G4aMIdo<`k3KL5uj6hDi<*ZkAdf4uR(zW9%C^ItFhkH7un{r?`@f4uSEFaE#0 z-<;!%^cUfjCwM&fwgjgW(I=SWiTxFR5GNcr4^}BP@GMh&Af4*P1yz-G&ZLp zvcG+yIA8p9U+fBc@8*FV5V1-6T+N+`i9dj82|fT)eY2-FS2j6{Sy$ zPp6aSiWjK{&3<^YWGVxlgui*pGplyC=^_g4<%+U->u+?qnWCRi8k`u*Y(@to~QaHz`J%98xiBQd)08Qj|_iriJatqNC~yQv(a~7_i8}972)w9Jhsv?U#KbPa z)Ar%vXzb*a6n4*pwODSuAW@2ay$5_Q419c}BO@oxA;bmxwH^U>mfv4q*d*@?hBte;?wsuT(^s&D0&NtnSRH-nSIb~(# zErDy01^kxZc4w>6dmMMCNYI5!r}fB0GL6@`JGMnIZftD$VY9QBz><&(c&N@!*p652 zcTOsWk_s$z#>vnufBW`LEl1tL!bMqA^PB6Y{u&$t> zObPTajmY-8!z`+E#>Yugoy?GgUhH(@8?hY+TU&_{{W)pTwv%;wTE`x9Ql=7(;$j*a zuE#s`CnqO;LS69!#Q6AWinJ^4(cRY?oQ#dB`n`0i!vx%Su1$)-8@VZP=9`k{=jZd2 zhH4K?d`>DZE>2DT+0gJByJ4+gf*7_mesNi8OycqJv423o>Cus(wFe?wA57H zN{9LOX!d==w&O-Dp;WYXc{w?~GD|h@n*o@;Y|-!QdZu=d@7}#DEG#T9FR#l~@$DNA zIr%i?2M8q2vAo(^@5_sG)T>vmZEW`U_8c4?Q&Lh6*GDxJ6`$HnEiLhw|9Oazw6@Om zC?SO8Ziy4!-ri0r@!=1>Ljhxt}~Mm~Ed zr>{c3KBouk(e%e&b!BDFii&?Apv>UyE7S>Z+_(V=AT0v_W>af8{pypJo8z49j~`1h z+`~msP*BvJtk6UL@gQbrXD1+tyf{C#8!DWh`tfGO_1EHVhJ4&ey{|7O98{x7IW7AL47`$Za%AjaYE(2e zd5nI(3l+MEs=7$RxOR1AxfF8Xj1}^mZ3Z{@x4$7wFB_CyU0o$6B2sP>6BDBg9T^=} zk%}?5`AkegQsa4O8&1_RH#38Sk1tl?mLL8K6|Lv_nO==s(FNsjcca~8y>9|G8|=BJ zU;_3qj*t#hg#^Lzt}cbP30Nf8jj<=NCZ?a$35kgE4eBR)dsP$^LP^_oo;MPosLd}f z;v&-J<9KaGI7~lN`%zI*(T2Aw2%W1wlCtW%_Vx@F1?A;J%BKO@#ko0ivi8o&$pn3Q z1%*MJ)*MUE2P7nC=ZBNMN^I2B3oz?hSy^6!lY@hTVi*y+pj zaeS@=CB|!OYfEi!_*^$23eC2reyHx9ORg2iXMM8%5|$E52JE$@q@?G~@27W<+08on9p=#cgBJR8G=_(V zwJ`}fb@w2{V~{sBHNir9Y)uJ^iTP(`SqKYX32utvb*3vbNf7iF|3D(e$gE$(LrM9j zQe-~`xhyYP^aMyl;rog*YVhrizPy6EG*8TJo5?S&V4JK+%W+`m=-{ATZcP}TN>5L( zQK0X=GbeS@JvTQ8UyjpiK=E>KdppY}3ih~wK-e)vO25SW{9Ti`veZ_iIXT?y znttK3HnctNI%#3ulz)-?(RI2?uP#acJv#hv5%jHkkB^T-F3dF9Z^nS-+k1#CbR*?9vCRa% zIU39!mF1}9$l0(E6cVbx*!6MbA*rgoPEN(kTa`^nhC#ltu+aBfmRbdCAVoYR`PSm$ zr0?L)h<=@y6f=FebckUL;r8y%4t(ICVx%k#2$>OY_s-AHJE3ushMGNl_RP+1bADdz z@Oz4Gjhp@N&yUJNtf26w#vYUMyD2_@a}7TCcNmRI8|)0V{wo?yzkdhD^YcG?ly>oG zc4I?66qPoz4H-7;zH!>We*IFkVCk55ST0{kOG`t;B>7WJcEX5_U}I-*Yi%th*gsew zEvwj2^bI;_=Kt4lI8AJAZJ$3EVI(Fb%#xi;N={8Ro^1|UxfA!;X%zL71kHuUmqdmsx(gjp5FnP5~NgWdxE7UB`KrE1bBE~pE#yd zZ~BumR+pBRUN|58YlwcCWf%jJNs3g|)bYH|E3o=7f&Ci*ho#aiBbtn^-?-7kIygG2 zqoC0B{X6W%k%@^q*kw+MG=A@zW;W|i^Rv6>OIbKM(;`>@OlW&fn_El?U+4wo#lJ*m zv)l8W^;DVVhto+S0hUAIA2E9~Bi`QlG4Bu(5`uqI49cGLtk5%4(`M5WbSI$zU!U+cygonrPdB6Z`HS+e_)mJa& zU#(d5^!A3udyaK?v(nLJXP^IUX(`aD$X^I^VDF}UhK-=3qa$LGg&W7JT?^heWyY&7 zFIzxq&F&~BB_$ncS7ay-5%Vh((_Wk?!smhQgg#l^- zQVjDdiQ{$FuJv$sapB_3^Hwpkvr`y<*!uf-_e9YU0KuwP>Z6#X&V}}~;!r|i8P%Qb zuoHi8ZEa;v=h`eUFNaafoj|2ji023FA&vK-VXs9ZfNN6K@bZ3Nh^<&X~Q z>gkmU)n;bWa&aBN$~tF$G!-ZGsJsxVC%k|EPe)>oO|2Z7?!Nq2sOftq;&PV$S-%Z3 zWr#u;>zC`phbqo;j~u($h}02*M4=f+(yURnn8Nmo7MZo$?~Jzx=@#( zprB52v^Db`>+h-MdO%=M`3iw!P_cfQa*?x&m0AH&4BL%6=CYSHzWr!mm)1A-imDwk1@J z+5*PDI#^&(?;~*Yj^RlhfT`4ljeOr`qw;r(^#yVj+YkL1^s4q4Ig5?UBa^8qtv|Yo zqD#rj_7$f+efUhiI&+6sV4j>@boS?zY^~?vfZ(eSv9ZK@R}6MV#1B)wwr9kYlnMzRaPD+iv`105B3t~VJOiWDE)6*>< z9;o=L8W_||gpx)_M+5a~zw2h1W;0q&yO{o?ukVXxw>)RKpU25UtXPP&D61FU6%skn>pKo#g!ir5rx|p=DN0BzPSkpqn06@J>8b*( zvl__lh~);5>$*Oo_B_hP-hO*$hmC`Sfr-iI?5OBOlODc_E)zE;r3e)cfUlF&Qypz> zbyZbJLF)UzbNdAWMgvKnotcU9EGa6o=uHoSudmD0)zMMwd+8$=L&5Q=sHh0u<@{v7 z_kMb{^J??rE<{(`8f*Jc(-NT4KoWCva!vs&RJ(4n#TpP369d<}aqSv5Lc7#_dVc=V zz2M&7-eK$V>T15=CJz`FY;;A%k3i9(9*a`kb^cXcQX(TQtt#jTT7rv<3&Xuth~e$+ z?LDeu4qV(Ys5`N-v2Di1K(Jvg)Hp3vRT_+n`1$z(?Yw^<^2o?u$$q;L4QoP~tc+7h zsgsFG$!g&16K^7#=F6zEvNFJ2Qc@Utkw5tBwY0R3kB-o7rm&+N!wNUHo@p0MT+Ir#Wh>Ly=Cy+`&K!BB1X`YWB8y!9m2E5N;XJ$^ow9edAZo@fJb5k*e=$ z-)fTi9YdEOf$A+uPPb4yE-lgzz5kFol+G&Q5b!|}m+H?8c($0xZINl z92RzP@Vj@3Z}W6ZOz$|)aIvvze|upFnJo%GpW@R}q=C;9;7z+vz5z1>t_LjM-o+)| z=WEo-!MY53rO)|EqVSu(1mF<-jtjCnIyxR9x=cbIdrN>`GQ*y}c(DchFEfA|2$lWJ zPa1`IQE~B|<1>KiI0%n}wMv^&uI$m~_0ft1A>TTqrknei?+gtMA^wxA37|xml)#RY zauu9*sAM;7Um7eR3urWq|CmLfa@p)0687}reO3qKNuTp5Zm}%p=LkdtS+%RisDlFE z=siX%Bi54ISBNapl5yAhFa<%S<(HBP>;nA!)N(PYfba4kQ4aTIsSH~m#Bf?gg$Ftd zezHuRUt8JOsB_ykS}=a$_wno3uk&q@>}XHSC+p7Ps+rkY0H76?{d7V?LMKUp(g@j2 zS$xm)^71tDw42(=0jTShTMq-@gtAwEwj*PzQ3|>7{R6&;V@e9Vo7{F2UUR?h`Yqo; z?{#-~-zSvGA6Zd0t;U41W+@cxO!-L?J|nA@^udF;P{9-P{gr;_(QtqN>v2|Ar0M<$ zLl2Lth+7!@6Bg~aK5x&q^j_v>^M1Y1S%EmIlunN%HfADzW=f5aG%`x|7&21Ml1?2O z8nPZO?-&|7+8D16z#@aNEiWlKJ(>;Wb6NXlKiiCa8#Qy)G%-m@Nr>Xhlhp#)=ngzz zLDCQt6}|m{mjlWrNGoOI8M4%reoiZWS!P}F+_q!Ce*aFQ*Q+}}(DC)X92*;(^u2_w zH2(d2A`oj-G|aD@R_XxS?x20Nxa#EO)EO^u+ATr0zd7j(${Ae?@H`=UdYR|r!Vo7g zyXfSQkgEZPySrCLMrs%v&jpbAn46lGKl^bN6kbGw>!kPLuvr4^0wf~@EhTltpgR(Y z0!xaEA=J!fZw_MH29;D>)`E1VuVPqs_kIZW_G&F#80iMEp z`)tMw@cEwR*`6*sRMuY{jQZ~`4(92}6nxzqHsc}VBJF#^4(c5hl`-tIt^^@h2Zx~d z@12~T9|-w)<*4UL%g7Kg>C%S%hO`GlDT~w6ADFmDR8)NjqS;DnW*X0*&)y;C0v!)1 zGYPK~t&q@ULxT}8S|1-DtHJySPaKSWd;}eld1cb)lrgeRug=Te&@c&*im`EOTG~9w z1w!Y0DwZ-_v9-42yc!yVklp$UXqiOm&J_~E?|=KOZrp`uAG6!)xtc#}H2aPu%0h)Q=Nn$SD+TXb zqb3uj^kz(HNAo&o7ZurCTdx6a&$`(Fg+Q;$$pV%V#0*l{|LJnEnT%O4IRVl`9RpD^ zK-+zNgcGukfx#q`UezDNs`Asd!Gg)1`L^iVNnp>*o0|&gT7}Q9oRinMtjECeA?f)0 z``um*9KlVzkdh?Gy!&!A3ZTfU2-$sk_YNIYfi9s-bN+(PX!d|6Bb)Im=fQlvzE(gF zaNWjm2@MAa2MY@eC<7qqu(LaY0&wr%J=e{NG^{J<8da{Ff<9+%`@xRzX%p~8FvyjZ zlv+Z`GSuVwTx~mIIN>`H3i?aHaWXVk0uk{=iJ;X|F*@eW9dunwi}yQceGRe7iU9#11zHVhPXqISb0l=Lu4;HS5@?w3ftOS`uE{-?+;n2xBS4C~izv4lZLaBO3j2L=G>e6hg!omBcUbIv zz$>K!@`@aKQAtToqhQvZot+)k=1;%c+K3@@mRj_x3O?)mQ5<5yGL>I@ zbD|dirhhZbc$Nx{j7%E{Dgav91{W6=lt&MjdnMWoQnAK>!IV;2AS9nXON5BGw=Zh- zD~6ma=&?uZOc2#%q!hVCH@gAiuHW0YK6~8~atu;P1ud2u8(km&UgyzD4w~hI7T|aT z;$m_9_OG$onAnQNg73A*V7g*qd6R~o=)2y!vo7@PspMdO`&$Zt{u`vo-9+wppOCoP z)9st5o8sbJL}w?wOqVB}*;^1AsvtU9_vQxH#yz4|>t7Os49cfTtD+(zB4~FAdl)&s z*z#vJj5ku|dLGuDpIk>n}0;nJB^- z+?33Fespx?v^Hdaadu3H%GK+?yE8AdK4{r))Hh_J$Z)Ua=TF5&1K13pp#cg0;PVI= zLL9eUd~mRgiOD=59Mg^%vAjXe?OgA(AK5GhzJQ;jOJtUomJ&Z1cqRmR1QHyrQk>FTwJiT9L|;shGQKqRop zsQsd1V=s41jkgmMAFkl!7);j91O3Wi=V^tVZ5Dt=q^dpH z-I1m$Z{O!pHIRi#qa4!Ll@F<@UH=ytP8u4Kjnj(b7E#afS?Fh@E>&sqC_aJS^iB|8 zW&Kv4!3wAnf?$~KtAt5^PB+Mojn#olT-vqwo<&dY=9jkl{ph;jCt>9giggfkQ&Z3A zTyy|$09*nQPf}VM=cfPLw{O9>fJdKHYP@5hiK!`*X5rMRU45F49K;1k;#gThvZ z`%yX#+_y^S)q4WT2?v!}w{G6F)F<}XoDlFw2#2p{Dy4vqks#n{YHq$XKkp2$-|o^P zGchqqPfsU8AB9^pW?ov0<}zPtWEdI9*H*4(zfzoH2x!$mZB?!(BSrbye$ z%gZ`B*-QPdDzozRL;6ir)Kp&uJR`7`wZtlR;%hxRqWLtE6wjQO6!$`im9zSaOxnOP zL%V)`cxXsAnm@X#Fo|AWFqVgvmdCA)xt`zmLiZu|Z9=wGwbg-=x(lE)qpCYlF}3%{ zU13r*Kq7Nl*VfXChWtEeI}QMCAYX^ziS1ZU1^dF+X5O!%T{IDP@l@00USxT8nFv0Ti{O%xzt0KibR+xP!~q|MA+ z04N=z(4zIrnc1JU^b>j7cM+sQ?#k=8zk!4x5^$%ayqt@jJA*9~kwxX_ z=d@n+;==1Be>sGhTiyHArbRwZ@M113YRTMQtSQU)VjE<`?d{*Kt-NVjaaiZ9QT*;~ zu6XciCv>btgL*ln=a1IAxoo&L)|HU_Q8p;Bnb*Jq6x>dw&NqNQz!{tmk%FK z&G_H)`#8mZczBJ&~fp@1KzK^&Nmn5wBy)`S46cN3koYL z4#A`|2fGy~5QuwNWF!sVO%t~0goK2G0=sd2p>V<|0bW|RXj!I6cHcLdhfSs>{gWC% z6y4pAJ$ZE(_%M3`>O1|h&b-lURHS+O?5@ARKWLvsyiQACjrGTV2oz0*vI8r}_3LMw zl$2D8MCit7#U{XV0DYW3donUI0PubHSJcAq?pX?+ag_uHAGi?IUz}JO8cr`J_}W@q zx1U`j<8!e_!d?ZU@s|p-oKj^WC1siww%|__f%m)1RjbQX;DSS#c|cPMVC(^})3cIc zy2B1;y{eyQ8LfNHs@`uzDF_9<+)$hAPBtB9eg=Y>3@ppQ=XgGtfH}(9r-NM<7lHIy zk<#G#$@z8*88~fTf|u|;)IuT^oQW!d3xUo);nGUum$}Ey4gMM5o8#c6gdYS*gpw=|WrYO<1bq6Wq}Kmv zm7aqDOMR&JvD37|bvcp1qv|;00n9B#Jhm89$XKbsAt!-^#pFewfdoKsS0JMyd ztkj;-D)Dd*vo77mEJz?eo0HZ0_96-15*Q2ctY|ePe5q_^(Ze+=8v6eI>A5^#Xp72n zqME+Gt&veNuu^a571v-ExoqB9l`zMF$sl}sAVf-yAz;^cgAg4kD#TeAG#>U3JzCOVDNs5wGpBow)fYfDE*YLRSP&ra*FdDOI znVXy6G3bJ}1yID7XJ>np#cqM30E*bppP~y24qjef;OM9+_#W@1MM&g$$AR@YR%WFE zkN~8NaA^~D^#S;}*ijCWI~$-2gJ)D+Shxhrm)hYuXLA1J?Y|GA6)@nk@?Qptv8f-XDmtw-Lq;HDXeN}>`UDXHH`6+1y_ zbA7$md3C^LeZ<|2giz&Yr%6IQ$gWqJO55k%LR8Hgp)$-eYF8NMBY)41O z719M@w`xRoeT!?_nwsXew)s8{+ityS;m36_e|=r|p?|5OuTOQ~u|-E&TU$EBbE{KL zUA?YRLs?z@-h&4rjwYxcCwt2PAgY{}*+2^eJxkTuthu29k%kN7Q3l=O)hl7(K2Qto z!ilbfPyjN)piBOr8^bjH7~*MpNgqCR!d{HseI*Fw6O30_%JZ``0Dz^XW+}W2o^EbD zyu8`E`FuP)_X!CFJoYk$)1{MmaVo2;dqXN8gJlAA5?m!96B1?@VR| zy#R<3o~xcX@ECEtDSy}1cJjjeaD(-E3nmf2+n=c)5Q4yMLqHeqTpzuogVo<&8xqD& z?q|!F-SZY{7?>0$YQq?kMjmA4YS`WP1_JZ}jKS4`b%A8LXu2jhZHD!GEx6^Ydd^Ud+<$e5T`(-Pp!^4!ls!iHTyg0xJvsl&Xt zexSijL#|Rk<_8N(CEO5#)lNDfFsMPE^FHGTqCx|v$i<6l;%GlsQ^F9-kF8m93c9xa zvuA&PXw2&>g~{Yjx^7;0^`w@Vb$m~IR(0g2JSgdRwios61o!j-FL`*&yq4SxS<&abSg;MoH;4Fii+5vh2!B-MYbuhHw*TfHwED% z)lksjd|>h68L$E%Gtf>N8yaSSSG8Mss;H=ddf4)w5Sgt61ZuUb~6bXhr(>#DpLN!~4eRuY%rH z+3B{MS)dE-uMc+h_xHmNKjoq6YZnD#IpceXqe2##KvbWbZLAx9)3T6VP9uH~-JGc9 zOQyQC!%j?pjut~iY_%sSlZ~DS;QyYQ{{DRIxXAUHxKQrXmZ6o7snpB*qG&?3?F55yMRQrzN!x`~77k(^9fTxo;0G}`S(wv4 zCkV>sMwMPxzfO1;K>Pxw%wTI)gedEoEgy0SL_E;^M$^S14Iu@q$S^H3iPCfx3Fcr%y>m zDfeSLfG|8S(uAHRXL$_}Ct-(xy$IQxNTRy8ySoS=GApZL$*}6-s;ds$cPocYr$nIDwt;doE_e#u((`TYk)$>v9%=X-L`6NYSGc)dhB$msgb5~zqUo3^L zd3yD=@sdR#cI|ITKoT{Ok6Qs#^phkof_$I-ndN1|o-%rY#o+w>jd!0YG03@}KVP5OrZzj9s`4e86G&W&Ewq3rhep5t&O<+z zJ18iBNZ|Vvn04u&b#RkiyXM8~b0$IN`}NBgRagb3ekP!oK&#TFA2{f>?RK7haoFp0}% z6f~1_-;2PM$=hY--A0R@aeg1QN=&;`oS`*C_AAdPY#dx%%Df+vpCI)?i`gaM^Tm!h zr1SV}>O0(DZZ-J9XUW~;Buyp~^KxH9E$$NTfIj2nrn%n&p8LruyI4YJ-)oe7!1mY> z@Hjd-_IKWtN3V3+PHxr{fYyzXzN|38%dxJmP@g-)%mzr_ln~SLJduKn*JJwZm{KCt z7Ce_)kxE@3D7_Cx%g@b3IuI$JV`4l&YaaP7Ug$~`Al!`%9ZGSNRq3h|>r%##;ObiUhE+~q^Wzp%x0;9vjgv7)I_yoO((IK}EF}6B`I7APU&c5h{)L z3H3VLZUIVP=F{t~{#U!So~Y3>aap9s;6zTG-6v6sES-3_?HT`8szkaSOa5;GinOx% z`O98;UvBx&m)Yswk{bdq0;~g(eeXy~Dxhs08KFE49LOdoj+Y>Xm<|b(us{5JsN$h4 zG;gAyoK^g3haVD^G%LNHM7G&{#C#1cj>x#HF*Y?##zvXoGhcvqXJq3ey!zifLDL!X z|NimmzrTNLBKyl@407=k+Q8wgEx!6ZguV((upn@jb}G9*mdom)m8 zU1nJZxwUT}stu7U6{^||+qMW2i zH-GaHCN_s931+|>I4twhlxXmaboK`fqEUNtzd|P`O;NNv%1K257I-i_96C;A93GXN zowHZ}e$AJAH&Ep6*~b5!lz-3ke|$pu*W&!+(|^42zrOhY>;3;8;(z_b|N7g%KmVz> zy=9qmnyk9E`dejGbL!j2UH}ZgKzu!I^aGZuN+*_eg#-5{DV9IX%%6{jG1wH?=nRaE zN-iBAMJe1Nw1LG|Rz8tVv7m>88n8>Az=h@kT>m@a^*>|wAH(zC5&Yjr>HjUfH?h&g zP(q+zn2nW{+z-keE#6H$bhwP;kj2Il`A}~R0T@7jFW8A2v&~`y&TVs7(3`+cr8;9A>Abt<*0Js3Ax$m_i?N^oy734I+@AVN8 z5gsS)77HS95r$g&`lP#$t+}dAWHJU{RWGS2DSZNLpOo|xn<5)~-q;Km!Ot%c7x#6@ zT3%h<6xtG$vnu0WmH=33i{K|MC@tNyP*xVcLbOnK9!e1K+-@_GsueoW{IK~vJu@O0 zoh!#)pS`A0AZ;^dTX^O2;suo-B$QwC4h!<{LqedNBji2E%2Eeyk>I(A{IKMH@h4Fj z6-{k_X_iJ|Aoqea4JPQ%P@_{v2r*wLw8>$Aj)~y%ozPtn$r~-z`u2>x3^`+<)(b+f zuQvrcxyACbRmwnn)RW$h{*VblMgi~fk<7C*uLXJSGFt(kvumDwd>$d6Y3;_|T{yS6 ze3JCT`Z4<4-29vIZydxgXea>*7u@rwLaM5|HO{LMsWb|izB_LGmNKSjqTb%;p+d)0 zEQKYQ!D2$JfDIQrC*uXZgJ$wtD@)9f4fc!M9D*KeLrQpeA>KtS@MdKVzP*UoeqrxY zURr7-IJdYe!8o@tuPlJ~2nVCA`DItaLBA8X2Dg%!*nBLnyctc#uz_!0%I@W6TT8|{ zz@jWFWYLfaC5sFeWoWpGc{7IHl_|EPIbdo%X*C}B*6Q3^&E@wCGGE<#Af4~qZ>!*j zS@hPiadPJE@P;- zbnGiK_vIOpa<3?(W91k#wSwvD5;h|Fc`~$W6k9KUUN(?x`}OOgpPQ%q;Zip$+3Sh` zQr0RE?drwa8NSI3FqFHmstoodAh(q%{UR znW{BMBVUm|S}qxjln2grQ6k<+QjJuZ1dGz84WKzKJ!OuHiBj|&0?S)XNn2YR4g*}V zd{ekFzD<6FrCaNe_U&8LMTR6*(1$uP=SD{jOuU^&nz7`3Vp&jZy$Pfs`3 z##*sZty}X+h$S?rzf31g$4E&F2*{xEUY$IYBMt>7o8uPN6Q8zO0IxtGckTCStD z&HJ_?UOPmHWrrei&Hi-(#jn#pi|ZlTSrI7G?pYLzOL@g z8&q;Ctvs7jMOrWf9+Cg-Z^FNx896U$`MK{&6Q2-WE0wSt{1@#8?+xATieHbpH58;1g`%m1CCm$z-cNax15_d zZ>bG@!Go?Y9&4_IE`mCXIT3ao^i25xTxu`s)59rJKWwndPU;o$vmIhc2T=QaAdKwZ z$j`bzcA9s3`VTak3P${e888t%>*7)wijizN6C*^@@xHA!vgn#8+dsGs&=f zI!fGNE7Jgv6{|Hpfm_h`g5mc;3{r=3<6bsm}KSbX8`8y8|UBM)ZfOd&iB5qf11Ue^sGH<1> zyj)w)bjNoFS#XoV)THf?!44Fy-x&JvH!w}_rkAj>hs6s%@&iUsxOMFJ(aP>^qPjz> zC-3d*PvvWu(aoI>H}voTl781|u&`!cYB+X`CnfDG{!Cj?L#VH<2kd^O#0*-yD2+)R z&zF16dI-ihXodMC4V{bdCFNw2tYb@#feuvEa4KSKq$r1lMahtgrNc{c5ek zUXrg@z3pC;OTY~63i|yjGhm~5%{x@&k1w>x5fBr{Zl6`g*Tq-IdXBo-gp0aweZLYC zl83CLG0ssR0s{#NjvptqQ2OzE96=jbK{lhavomx9s)Ewa$e|k9NbaYqs`~Y8an2wB zla<>OS`l6!?}~?zKEVF-YUDjK<^cm7`=VieiHw{T*&^d{pAm&D?B=Gh@{2BzO_1DY z(XQSC>u0s=dTaZyCERXq9@=-;t}D^2^eTsv2<}V?Q%K_@N23vSVcl?KS;5M}l4v&x zZz|OmVO{<~lw!E(`6+0y);2n{;Xwq<`sTOIK&2HrKcb9mD=R9R-*%%=I)?6^?#-?G zR7KiQ(kBixNA|?TIsyW=Ful-!>xi19c%Sfz{CObUUgNf%Tv_QKm=&m;1U)kQ|=NnX)dmb{SDF-(GB`hI?ZM&0ij?`nFZr!|f{pzcp>-eM;K!;oQ((ydNDU~OFE5>nHg&yIb=C})1LqSB>Ml} zNp9rPrvLMM|NB7r%S%jvn`NMtFk4bj5P!rNW zE$2(q*Bz!Q$WyjxP;{I-Gj{BArIdhw@S!k)>L!$$%Lfk_<$q&oHKA8XEx~92|UAboql0+Rn_3 z5iTw+M5XC|Gnl;4GXiKG4l{4Dn!oi!7~0#jZV+BY;W%K)Yc#rx7_#PyY!e$6rW76L z0#R_yR9!4Xl@0)9a8rY8NpyVc6B5L`513UyfZ7kfSU_@!|4Tgm$LRXUzdG<=@A!|u z{Xe+hEr3UEN?^;4Uob%d{S!T2lb9G!<`$RWb0{i6KoCjTNC<;+sT2j$m|b_n2kp+T zE;vf5GTHp&hpxw+AN zhgcDrxwgpsEeJFQA5AhOMIg;u=n2TS+wI>Y#5_3g`O`X{d%c2pk+7 zDjW<`L8(vtviZyRfh@5Ofm~$jV;5 zNqO`1AuT<<$T^2Sd4MMETA^d2y*SEk2yB=u%eZur;-{ z-B?&KrNvg2rUz>ktWQu+TW?%_rKDu91bx!AwQq7_t!(9O)z#De{Y_TY^DxMPa6*3v zP9W0XMnm#j!>W7WAFQm+iJ}ktKDz|j4s7_~D0^Bo~bIx7j|o_mVRFONDt zr`_-ptUVul;)p>WS)hAtvP(_kpg6rek571#TL;l%hSFX8&tA8__q_iJ2qsLRR_ ztLISR`RT#*k+48?Y;0E)t4e5FNN{kq<6^lYEgt&&tGw5aj!(P=%sQd6XA)E5=`p!3 zv}*ylMmyNVm7#)jbKWPSZl0cpWGq`#ug?3pK!~3>yY9lMUDMtvXn%IpwiekeE}o}d z0d2^O@V5%SNH;;_vVnwS<$G)+W9zxVKkIpvA2GIqdJT?5$_O=HLKvs-R3i z&kfAK(PBlZL7VB%q=&$}*>tkM+S{WHHnk97V9Z!K^yP`#>IfDAtA*Qe0<54eM*iFp z&R9Wj#Qi_0ec%YJ+E*%k{>;U`q5ZSD8HCxa+5)?37r}ON^O4h|uY!&z-!BF$kEh?D zk#NyaP$YYMlJUw09IjamCc{Ck?us1sh{#A4dT5yWX|(altO>>(WsBOU)O(&8`t)$MfREaDyR!A!2RKRxB+4Wo z4w+H;L61eR6=<61km5ywcV?T$6KrA>W2g5Vq;!ubL8L)oK6%@=uVCH!4 z3E|G*E|~y0ClSib_+s|h4|@_CAbt0W@Kc6MrOkv}+t#cDHQRMn^qHvqmh3A*{*!J7 z#_abI+LXf=Z~8aX)bJxD+al!K_rbFHh7?cTd^r!2wpABI8R+TLA^{%SpC!hV3c9`6 z8|ns0!~byU?nH`&i~PZ?MCdH;44I%?Vtj^-bdcHr?Zg!Z{zC-sOk=pnO651!jO8qvCmy>bpz5yKn%(zCF?K0iOrQ z#l<;N8b3N38W|cH8G@FWS~|Lsip{Q3d;78xeD7B@Ik~F7rO;N3o!r*lzk`AHcU~?v zn!oviSe5-)%5mu+-NfYE@SRO@508@qK9@qx+z7@vIDAhb-t^9BwE6=HT%1sW<8+mf#;xTt3xwqbo zQXH#$AYnQATa7wQiG8%fqE~&M9H1Y&iVEUa?_35g)b5wmvw5yh`Q4uRg6HW3Rr6P2 zQe)LyCpj4fW_tQE_yZn0JINkaccDSygof|b1odLPr{{7ro5yYIBmC6}I=q{f#r7y8 za2OS+vb)zrbZS*~cxnG|l>E^A)F3)eC@TWd>E4`MXm#?5e%h~B|=zS@4_s?JU zDCl!W;v`d*5$^&6F)#sXJ$1zD1&SZ*b8#H}J1lE~L>(TMuHTt;YYG=bg@_I|P0h?A zBf^O=-lLPh`ul+XAg$s#ViJdEyf3!Cms%Kvkg)a)4l+Mp4lI=Y#XVKAV>>@RP5w#x z@`-zLIUiEcN~rg3!F)i#pzAc>I{)=631AMFb+5153Pk?m*1)?Ag-*Odww#wWY;7({FzI%Ew8+3$@!4 zq6?Siwj1F%Zez~kmqUNtRN9_M4UxGobcWqsQ2;PIBLJ;TIbRW^NfO?@dH_MZYmTD> zd4yf;7ooMgA3~E?E-s^s8HeRudL?PdYd>GRnnZ>73Pt&v7_YKw-(*TMMbP!Tg^902 zYsqh_<9*!8d`VG@3&)>QsQmimMvb|L1$R%M7l)aYU`V0+kU!bf&}Z>n?EHIjM$mC# z%uzg)kll8TC;z88Tig>zQ#hj1-@on<1?_mMDcj0pGj|%w-O_!T$a%)%$-c zPE!U~;oxKqw36!S@s%b)?<5q37cc&-?n4&S`|MQ*mxIMzD-ZCEuSz5+d2DQ4>UCy* zKG*%*+<6AjQvrXN1s1T(Lto4T6Dek>sX3UL1!}&}d-V`~$8N`t#zu)QT$l8lFIw2| zpQm{glEh%24pE`hJJbDr@K)pvTj$dwf8c;-#1;)GuC16lEGy$2q~4z_xAkKMaNiojtHRjSC4@St%i8b7DTT3(KB326 z6<$O5`TLdDyQHY=Xc%-AGYDf3xuCxu>qr0Dsa#-gjdsmqwa&m(Ps0;}0{T}9IkA5- zJt&b4qryNzB*968=cDAV4{tX{$x?r&vWRIOc&goK%!cvRYi8k++F_?@;OWQm%F@OD z21>H$d=DiD-&q7DqdaA}S6yBG_fC)6y3|xr>M%nBv5~~$;+~RAIE`A6f0S9oMMiuL zMu%?FQ)uyuGF}2EU5^?$-&JVx`m895t}Az%6Mw+_4`9h-pglN^0yrkRg}t6W!grJ*X623r2cL`l-o2qDIZe#{0YvB}uRFG$C z1;nl6R;u%9$)j?i2ap)z~|AD^^1H`Es&?Xdw3mP)IB*qhaul(8?n*I&MyLw_=BFrc!G5;5H=Ta7m^hCH^PJ&5Rq%T`2MDp2JP;mLSChu; ze=f?5f79RJ-{W8xKeP?oP_7-CMt8N`GmCqxau2JE))@dyT-?Km(yfDJ;8> zim+iD8g-)vOg?53n`V_IB_7o$u=rES)K%tQR9h#OKF5?FRsIX zxSE87!ZkO6w^pp(nDN~5t=OCD>ON3!H8eJ+xh*HKHrXAoq+Pg1|L4Gm!(dYOCW(4k z=a@eiNtj8Xf$SaiSR)M-d1X|T+_G>C!KVXaJUr$S6%9Uj)(8h>WSrnsBOdw8^HFEi zB>C5haeV%xmQU|)nOG4EU+U^nq-lQqGpwcy9UP~rSoow^#@KQ{#g!~7lfL-8*7g1#O6SMJbq5p!abz}m-oem2Nrt8 zi@ffiKg-r9f!zTL%Be|h4TAjq0tZKj!VDXrMr(JT+s&PcJ(I_Zy zUYGQ2-CQx(QPs^ET_YtW1p>&@&491^HJ)qWxz^}9?R9XIaDAKk>q}Fy5Iudp^^7G2 zMH)!izevC(ar0&|fF&w+HbJ-o3Kqih@<%_rChBPWoy^QW7ZfC^<~Dvv(^FHEj?QZK zu|*h|tVrI0W!RWKS5w70MQ&+*oe-b&<#XMrq$I=o(*pd)09;$#YO@*+~LIGrl+i#+3zyrE~LeXyDycC z1ISNcOt`U{qx!;<6TG!w1H!P^TZ!20X6M@?WSPG_d1kW5+HCdpLDPypCkasqK~0^E zxR}nu+5O?fKjpaUKa^K+w>G&%Xmt{0q9nt=5otUGwv{2OcA*;E7i$t2^ zS8e4RCLDPE!4mT{k|@5NMtbqUE?S8b8ZDc&;(o%%$E>l7o!gf5P))U1=d9`=Su!NU z1h&>T=dPD`W{VR6G_|mj<~{FcaJ3?=czSx=a5P;HBHg)ln*H^o4URt47I5%<@$o5t zCkr^cL@wK3zea>Ef6v>D5v#{8QM^o)N`FUjV|D7R@n~A5rlvcQD~X~6nJsC)x?JnH zpA!{!U)cNShr9|}wiTf1WrFUr(Jn$ zH$HLw5&6|01FdCwo4fi!PHQVQx!dAx7IzGu#EZ+btM_DrbpU}N_zjLhhb6FKfLgR0 z&OY!KFAH*}(F7^yD%!tFqzqzI&dGUCW;ta_6f5Yk`1feWt3y~6hM-`mKw6X)1^HaI z8el=%DM=2c+Mk@>)Oul;qsGd?FG#B<(@K@?bvEGj4M%JR!8_J z`2S(<+JVV2b%s8QDtAqT}6SeEf!8{N7`5DdoPxkl!{K@D3 zQ1R|vM~tE%?d?#A8)y$Ah0CzRBKR_-fzLTqExp-F?2@)Y(s;K-~!~dBLy+X}Bge zD-RDn4-cGW#-md^6SlvFFb8qk_CbcpORMujv&?-se|%gsB!k@JeCNX=er@?4DEw!9 zd<50tx*ki8=1zRJ4NBzL*Q!iW-SLkdCx3tGS;h;TBY?HA8|}qr^$bj{DYWN)j;aMq zW`L2HjL&oN^neOsOCt8(bHf#MI{q;?RsULAkHGTI9FAhcg+Se#93>0RESlU~(Z&Cd+ zy2EiYbag{S8DEOX_-lN&{Z)?L_2*#u=We^B^a0_Jh>CplViB*v`OeuDSSYt>9No`0 zE6oA3D{L>oL%)*qUW$BctCEY0wXq`EW46I=PE0bu0c512UZ+3q-Bht=M&1SnfQmiY zV64(|rs+dkpLM*~&MO1aIe;1P!}kvJMV)5d4^gS!+s7W%nN&qb6nF0{Yinl=TNE+R zAb4bCILMkyZv2)J{o@2=Hq~RxZF|baO*&|Qe-G*b0{{W;>@>uua+=>kz~_E7s#j%4 z3t$>XW=6NuHCpa7&%a;S6xcOj0PQoQ*T%L%#OXG8NAF2kJ z1-d9U#bZ>&d!os!FIBkq8<9~;z5we;V52He)WoU?ljncQE)^=vPqM{u6 zG-SbJds@|WD3J>v|WeA$JmSJA)G^W_CD6 zPE>l20(r))jO4sNJU4S|BnEl($}JbmBcMb$+TE{nV!YbT zetNTZvZEt+?Q2R7lw|TIjwZ_isUwOG4rN6;A+;TMii>I@8U+L!1saiAaNUj!gN;T` z?rG6e@Z6srY~vzNyeDj|EjbgOfk*WTf=$BtBj2YCQG#8wGA$0`b=Hmo*0Jk_XAc3wW`MpHQ~10ZrJMu%U>ZDRJdk!%fC7ovW0~o&Xv=3Ol1A3|3n<|=pAUa5;A+b@X`KGVlh4WD-loN^ zAN2I6V0659c$TrkH)hl@Na$29EhFm)Yi0cTgNqKF0`fViZ1*6&>(mSZg3C~0G zTMD|@(b4S`BlyO~(D4imI zJ~VJo^XiLO)>nQtX);V{^Ayt%$ST79O&9Ao)hbd)jBfhegeXUMIMTcQGmi|_f~=Zi zV9tTq1KA-OSt9u`6l{~2V6N4$wrh2T|L&xW;y{c~W{I@E2Jy?TzfuB>#~jVgR|W@> z7O368GepJC{vbVVa?A}p+H<$(3Uqx^e7@X5!oxKib#2S%>qA?|f+z0A!+e6yiQ186J?ZQ}5;gy; z1+eq(JU7C&w7R+EV7eu0qw>g~2C1p5(@d*5tvgL3PmeJ+d99Q3(?q3<@=`^_fSsyi+RG$OpL_RydDt_Y7hVTDMjFc$H<2 zcK!PG-f;u2)ahAU3!a>48JdPMH7xVQs<9C|3-Z?STa%~-XK#C|r2J9NRB=T`urM>H zSoi%7tm3tW7)(^SG{qKQ#KM^G(Mpi7Z;|q0N((8 zig_YDPIkdsOZ|-+Jc&I|POI;xEB)3~Ts{|v-dplnE}8)T?SXxF`iJ~=Vj9mi^3Z+f z=c9l8z-%Jj8XtS7zhiASasQoG7dtaWxXo_q_i*#c??U&j+6mr>=$G61|5bU&muIc> zdC1&$I-J?VlJ6~vCUMV(6pPPslypt$gEm^)T*VZqL!~mK3=+=hW=vh^0|{`Q&m()2 zm?K%<93^knXe2ha<$A${_F~(Btl_XWyKi`$BiO#R?tqddidS82mW;=CvV3IVD+=wV!|{t5Guj)vWlHd5^7{on6T?QF$~ae0eiUyV~DuF!7RFC^0hM7;7X}WkyK8`r<5~qR>%Rs9U0U zIghpJiDA}P@@xG-yD^qThbpQ9+whf3?v0C6961sr&IBQVjusX^Yf8@e+!;fsW!tu0 zx->e#*;6#Hm#Qwd@TEv_j&k!2k3yyfiD+H&lOLwz{CRIP{SEyEd1K-S|5O_4>-!!k zh>5pqZq+svn)81u*PiabnZm1|{i2g~ue^{K6&1DA)>-ZMGNm~aeUN$L9ZbmzUDLYc zqCS4Znq^lP-Pc#4u#x1e|+3@EEasyiTQ-8Z))XO$K;&d<=V!{${QNrEl$)0h8N$m4+ETltjU|JNsB*z4GBnoRESu<_=tOPd zmm^4vv6VS)GQFazNls-n27-$lF~SXMwMxdhhFy|MO`!NMZA{jpHD=$=N(x;Ab+tcj zL(A*~|00}wdxT8MhqL~mU`Eq2sIPt^USlG?%_E4T?mq~b}j>+&0{pvSjHAH+f7!q@?p_gV$ z;&faM>OA8Z9cB+FQFa4JB3hlJbY7tQ19=S-(lU9UY7^B^MHyG9?XU<1C%aM?mu8o5 z$HqGIHaxRYxP|P8SK{Q0MANL4epQ*BP3D0yis7qQg(Wp06hwl8!h%9VFnssJ_MdFv zzxD;#b*wSCwvO{+N0jin%y*5D8bI7xW8tnPee1E!kr`a(0~E>INi#}@y4OX|3$FQo zmzWThV!(%I_PFy^4WnjJtfSs7oEw#VQ{cecoD5bs>R`h~TBXCRtYdj2f$fMWsp$03`a+{iuRy9OtAOG=`)T%LNeRE(e2v%~yXSYz6a{*-$F+d|z9f0_ zI$4GRzkeUtU03JjiUs-kQ16iIoX08;!IlRcpae4Ii}O|;px=bleK z%Bj52yhBbtx3Or&p2WdA*(SQf&OXSh(}aJAbocmfgioUZ8sS#Bc)C(|%8`yq z^sC@IQx9Nh0E6bEy@Ps}Z*OshkA07HYixhMypL5eU?$*s-2WSj{cWH|!NxL|X5#KsY@;+;&O zRsRJ53-m|VFwpTtx|5Fj8{BZYa8dZDIw-t;cyM3+y*QdPn46qv?T?J?kHkZiR8?W% zV!D-F%Y6p0Y(3lKKVLf1C~r`)QR;7wyA+P53OTxi+c@Ryx$ya4aaW1A>NKdnVA7XQ z;>LlRXsB4{N$w<10FQ=&@VY`IjU*lo7E>!5lAMt6CP#agMjorhiu;}pw@PdozC6*s zM5dI;0KO!eXeo9pYAI7|8B=TNWT9$wmO4_k5Oe#${la6rY42NT7gWuvCAzT8)O0N> z6&<1^2nFD^l3l3;6E{aU%yPcmcsok|L2e0nRRqkM`>XS90|NtYZf-z#<>ajJxw@n) zKM7?Os(xS5|NFP=+6!+0EuegdA$rk~B_*#L^7yJQ>zq3|p1v}CrRTl$5sR46*Z1=e z24SD8i?b_o4tH#IL9@-tFVs|2W!24Bf4D5)QwZzo=rG6p1brAlI7lkTp?Y`TLN39B zjDm&%muJCfp{#IP@z5F-6*cf?eE|9cTHwvG)*ZtRaCQTOz0zt73u-Wi5a0&hxOMAt z*8fT&k&}^z*JyCD)1fxG3%kW07|?3EI`;cNq5u~h03)cMY}bRcvMTmh!y7SSb=KzO zF|g+JNUiDh)vq(@FjB^HqWB){81Kt-TwzaJvI2$d7mfRayXHgWVTv-qqk_o;9B7*p zRrYJxyoD<{0Hgd|mTz(DKh*lI^_XT+Wq7#xYTL)-@O*4dgGo|yblQC{ye*Vs@6hIE zu^J373|e8w=K7eKAasDJKLsyH0$r5N{kgUX% ztfaPzgvT5vew659w+*=yu~UNgR3J)a<0ShoodPMRS!8uJ&kQb#NYQ{Dqd;f~|4F;& zOj9El7uS$!Hxck~pv6M*y~YiK9TH7w7=)# zrPKiW_Td86a1ud&TH|;yu_kZxBAgbLQ0f8{Fk+WrEHSaqEmX9fPS_3Fx<27EPq6u* zG@_xpUq?jTBu`GAw`=P?N|_$v-#kuqZ@f&Yv{g(L05yqm_v&Nq^iC@wm&?f!y=qMg z@%uB=(fl7RHpi=>Z@7K$9v2XH{RiT`9j;12WxAWAmMZK=Y__&Qosjo(gyXZ#ZB|y>yl46OD)zU( zMqWMIclQFSi}hy4i(0H!Hg{|4QYP8w$&z(TIH56Y-0L;i?zfXsQMm|vfO7u2c#m35q z*EX**f5W?k9VKI;>gXsSB8mqc(M4U|-T8U>M@EOoBuZ>=NIr*YEnvX(*+7+D9Y!|I zClmcahUUCt5h5V@L*UxWGd#FCSic#w!~Q@TJ_LwF7s+{Q-cN z2!W6(RUIA4p^DsG@WK}6=g;SgQMm;5z9v3-^Mm@bL`}OvGcD;2r6B2PuK-i5ao10| zq6LrNz`s}rOw01JuI}@utL^2N0iM7vE0UOfQ7~LBjsrC-stMlqgHddGG!&+;M0u&q zfghUD>74IsseO&#oc(gjr8<5;Me`HWFN*;h${P|?nw0v)cSWZy{t$#q6%9-hWNRra z8}fKOJ<756($>?n<>`=9!}i)Flj}Bd)X<0ve*zyLBy87UxfAW|n<@0h3;852?R-&} z;!20zT0!?go=%xw>=UKVbf?zP2-Bxc3ehdG$6m@?#9aL5vm!|UeQb+L{>=@IHzJYz zudT#9l{q6?rEe{aN!nZwOMs*(pd9IE5n~X2`#u#>GoduZUMi2Ve*XcYP9THoOUal> z5JHQZX!6FGIM7(blkm*;(T$e=wx0d%G+vi2?MkUem}go%ef3SZ(LJ1q?+#K(mJ(%C zQZ&E;E8@5DmnXRtnHd>IFY;s@ zRfcG}6m@;K2RH~*^)o!06+!Fm)bC}<6PzHVkjm5@?bl~pePfJbtA9mUhhogx0pquK zboAFT&mL>S|uj7iyHB z(bL^DOH>==s;q>A?xcCD-g+>MT1L%)orobC^-HD<4FP6bmaoN~A??&EI(qYHDj7c- z>pM^Ocph>Xa+B!`5gz0%8g`S9v&=BVw}mxzdnmk+rTx`&5V;1Y9v5j7D$VAlUx zgLf)0CHgo3xdSLY^CyA?MH4u+u6ak_SmIFO-^fz;OoV|QqFSycC} zLrgvoTcmkxX_UszU906Nxod@nzLxqbQ9O4@XU$4q4SkI?Y^-pI8x=!9BDi0^cIx(5 zjo7x&WSD+V_hqb5|3|a4M#}k57xbeUsrx{w)78v5fO^LKUxkploDn7r-j}fM1 zYIDC=ZlnKGll*8dP{Uhf`7><&!?OGL|LA`<%!5W$*l(I;(d&^g2XIkz;8D9${YNAc zsVd1~VTS%D)(x+y80!}Zj{d1mK4A7-yDE#8`tsh1xms&fQ`Yo<|I5q4*Fvx9Zctdf zT2$~7+Hk+uTV~ZY_U?1;e_#DG-*{3lNjAse-Qu96AVY!!&i}qyXYnUAs5i~fS?_9n z?5;ZH4RI$CYfRmKE*m=copf=}W7uC8AwF|TWaj%F=buI{N3O2~~x zoAgXoqhi~;=qQJiIYkBOUL^lr(Nlk{kff@R#>+I5s$0J|P=#-k=<8a}BLMH`KjJAt z8CjlpyJk~)3nRlEe{2_La_?r0#%~7Q;2TwbZ#<2g&sPYEBf5mM_kh5+*M4vr@C~&UG@^gF?`K^+y8-AY{EOy6t zbJla6&m7Amxc>XO*T@}e1><{6!ljf!w5?hI7b!?!zKnba(sNHw(dueP521RJJMo3! ze>FZ+sg3yWX= z&lZ2{_v;^ILAoWZjErAd#xr{z=m$wrkybWPz@%Z0T#hlso~HL0T{S$Ql*?=L%1us?<6&s|-6j))J$OsjaCA`u@r)WXp?8 z<0>>F2lEwLV7oY8*4ZQT`U0DaLskHRi;FGxI=oQ=xeS~;#rFsf8B}(hdVo^>V>i>wd>XLf57@*Et{ICxg$tLRw)kX!=#wy#H z8fik-t>J>v&@Mgqlk6pnN|FiEH4}D{DL$w<;hvYFzk$608xdFJca<|xWhOLL0b{3E z4j>#ZOL(N4_N4B$t)$s60qlvKys?7c+D(HPK}W}cV2eiV5_^FUtkn`Y&z|OKlv#5s zgizW?3LNa;Nmn{PF-^;V`7lDaajV`oBs8=u6AGw51tk?=SIFJl--jp($W%No?_>5_T8cX^SzuaXWNe+EUx2R52f(cuzUiHepfTQC26Szq zfD22{>0duTc<1B|F59W08ieMFszU=$?Q%=~2+~d~&{JM3xDcnyzJUoEE zhltqNC`@p1k;nr_3UG;bc0rQQl8}~}W*1e}<@`}Khj9{ijxM<_U1_}p`TDR zAhR1AM#}$)VRW=OEo%x0UIanYr+OrfTBZ z`}4JqG+n(~hrJy6k$@#*V^9(!v+L`o1%QwkkU0Z z(M1qK!fUTVefnQLFaknXUoE!P1D>M7(KQqi2K=!Pgu3-67f}X8DGJvSv8d1CjVGt4 zs4al)RMg!IfBCR+{5WJAL+y{;hRycpJT~kBx zrNo5bmi67(>p8`0XudBWw%QEgv}^=o4sx$9zoC?IXCW}* zh?$jDjXiES_sA;+MKlD(x{*JwYY9=x%`a!PWquXdX;gOqBP&~JAFyf9(67NM4nU@= zi@OgC9$M3uXy-h_1TD?Po?g?yLTiaoLvN0Xf~;EWq};ROoZ1s*iN*>)vA$~TlZqNx}{ zJ~2e+Ok6JHqsXGl-bU}#kgV~lBD27$73cNdAc9Rf{lr^~st3*+>VA|KmX;9kQMc&9 zCwwy?G*sSAL`3At5gze9$ss3k@zz7@s#+7xq%(+D8hH`*PfY!fz(gEbf0Zz4fxSJ; zrl5omg|R4#sIR1WrX%0K$Km+(+$>qY#p%~r=wj(G&4eIXgL-IcDnvwvI7OpHBK7T0 zT1FaM$Es~@#l`*o{aXzqga;A}#I3Am9vi+u(FeR8GZ_cJ^z#8O1QQplno&_f)_jFr z0=%)Xz)tF@`i_Fe`)(svLc=(A4ig6l4e|flLaQecS?@+f?+eq8EVINMa~mU@KDOTB z+n8@r-$Z7ZM`tj#@(yh9|EDC&l25`wL?iL72L@5=h*9Jn*~fY*tWV-{lDN|u5@}>n z5#N^E$5qJ%BP-OeZ+(Vm0pQ{8;!r%#mYm7wh0^*Rzfn{>pNOnLfrqT0n) z?IIF*l&B)ltgKvJ%Tu>zntfi)BkLj_)=JOQ(GfK@H69+9CN@eoyUX)y+Mc-d3D)?{ zaJZper`w@m45@SZ)`-|$PSzf-2uuGhtMh+nACh67m~ryBREYD+Dyw1ZQRW`7)YvL`8VxDZ&fEPK~XPHKwb{HTnE(0 zTim&Uwov%G)rxeL;n>yGwCG=7a&SxgMA@4SkgeAHO{Zm8&791eRuCfv2{BM;@W;if zs^~z-CzCG1ix&p{4LVsmEfzRD|nEA$_KJ~FmQm3AL zmNR_zWp1E-?ETK#Q*7BXCM+f?_J4P}Oufy+$wKSFjI1Y*Z}ME=wv;h-Y7p3CHr4Mt z>FRF14ZeGJq_{C$K*%$Shg4`~IlZpCi2+LA>R)9JLSIalYr zot-A!ygDcSi7ZDnrgMMpI>qHmCp{RkDdJ(+3U>u)@#~svQJE$}a-#Y1`V`?sI##sfk3^zb3tojIf8@rIEE;aJ}BrQ7<^B{?+Cac3F@OfqGC!*Q_gBo)&e!`ob8ATH$en~wKn2<;W zTNbq|8o?HpxSGfz_Or9MpOa9jPP_cQRFbapa2P~+M;9(LolB5*r!WMCS#f^8Mb8@5 zqeqs9g$b|K1VL+f=$WZnaB-Mq+jOyfAKKAI-9E3|D`ww|8rKLxva|oKYz4?q#tI4t z&d%op`7iTV;#iy=99|IxKArvMvJZg3G(N9!V3RzI$y;APdCMwLpxS72RDTJUwGyv0 zyVBLexM7_FG7WE{MJd~-`t?ac=BU2bA?7!kp0Z<$N29mmA?Tb5GD^=fr)j`@dD`S6!C@M*z~?d}EF%m8c5u{-xSjsum60l{>{auC#tXEnivliE{Gq)Y_96 zh%fQ?r$%6UwMn-&dt+nh9oC%FfrWAzf8I+Vex{+c_+0K$2>G!O-cXrhHc*8wOP7kK1L8Nt^m#-5MQBiX#DlH{tZAoRyfozCr_jP6)x0T`);mf~hRlI}p zi=1DtOHjE|AIQ_z(B_ldm7R+ zwMYHY4jmBV*|Z$agUn93jO;!rroGdNHbjo@3m9h?mEU;iYqG7p2F3$sqcS$-(Ta7$ zw3!T&&tXdy&uJeG-$_qCAO`*=eev3#Z>c78ZqCg;*V5{0mKBFvN6-b+hCDFci+k;U z^%7IR_A+6Y>UU;$cN$t+uksyBolvXr?;ZcE1$a43+8T&!tMPf@vuRKAK#IaMo?CJ% z+S=zwdOk40Jxwr8d#Wf5{zs~hatredph4y$>FE=`2#TY1$khpRsk$Ci8CpK27G{0U zS=yWFZFtdpWt8`_ZZX01RR(lLW%+-;1%&1Qe2DzrJ(PP!I=j8yY}6UO8o!F8=jD8K z%L%rnK<++R?!&(-(Ki@PW-`fLD-w}6hJ(#co~Z&9y*K_}bdhM%i@XLS53 zQD*1<)UrI}Ym}>YvnN=M6pn$OiqyG}!8qVwNR5kmXu#V*r_o-!cOm93E)kKD`Ux>H z3b~J9nfU2biw&2wbjR=CO*aF?GM}58m;fsskSoH%J~o?`mI2%`Z~osx_^xFg|7UcL zE=LFw_!wBGsJ_}P5%1sIJ2>PQ74`g(sXkO)ydByGBwqL{i&TL*4QifZ9eKqe*tXX$ zC61FMCHReOEkgo9rK%;IRcL5uymDmWQidAl=DNDN9;iLLy_MnP?Ym{{O_OzPP=9MR zc|y6nzdfZz74>U$bY*4f-?2Q^9228#W)@$N^hol>LltY-)Zr%V+AeJm%ssCucnhaz zU0TWZ-`muiA!~2YVjx=r)VmD=jT?twGBPZaV|>9C^=$e3fm8@wcNy+(?x-RIl^G2U zlUq(BTQ7!sVa@e=dzw~_A?rn+Xh}(4UakBz8HLwzloG@75xpX{%VogOMTW{>L)Ujc z#3&MkI5ez8q7HO-qlBxwh(AHj?+wwi9?6*XZ=s%Qsm2rdw>7VZfwCn zph;ajsN4E*w)Xz+5X`=@2w6fRBC1&$Ai|tJ&C_aV3#eUMrFKygOv^%v#3taDOXoRfZ&n$wc4A_%=PK-n4`>I06tiXo4Qfqe;SXIjxwe}+2hOjMi?)bzX)QoWltOBPZrS&ejE4SPrmRtQ|C zOD=kNX1agKtf)y!Ny2Kcv?M}tPv+*v7sHO`>AxQj!~@i+piZ8Heb3r`|EXoYy8WK^ z@N*}g#Y6j|znaeS@@6tY5U&6!OFiQs3>cBf*N5G!&oc|VP8e~{(ZAa-bj&=toc?z* zfq5O`<@W4sd$+)(a0WS_&cf2w^|w{5H#gr8Dys&5-Nsv-G5q%Z2K*&k+D~bF_NH8t z02~foSu3MCqJH=d3$&{1GkUh=!@unp=oAw@cYoy_jg~CPUG6Q$z`khO)ll9+PEO9@ zCIT)VaW{>z_k0|IUSX=XD!@yW>nR*tK$41Pc-X1J$>riGBw ztL^3q_Yl=QP&`fYg<>4tEU?v{gjs_5O7G@a{W}lQo{vwuQdYWCT)=tKcy_pKwDMQ( zG=NYSq@oj7eV05lo_oXhN^H(eGNm$!llTvX6@`X9M@t)sAkjzR)vI}zB%bD-_C)X! z*y?&WDN(9796wHYhJk?KUe9w!vPkY4as{PoC~MR2CTlGh{$Q6_WA{tHYd3325s;Ir zmT0PIX+3@Z3;LDR=wvFF*DzDrI@>N;vFJ_aO4_^R{J&-5=hMgikX-QQKYoSgi^B=w zt8@QH+9#(EzsPXf&u3A;i_mV?MMq2=9V@2(KZN4CPh)2_%2(``)f>N-ZZ*1au(PA1 zeuY@}j_~_4sWTq?Kjwn((jmSQOaR2<^JyBZO9ri?a!RIjEd@Ksr0)d3_2_oJJjn)t z3wy#wPxbVnoeN?A{^HrzLYk;88O)fD?UShZ9b+l?Y|Q&p(u3l^3|0@u!IAQMtyd7I(W6GZMeLEvLPEoM@vtC zbv_g^QgR6o98AhvWCFi0QCwCdA81vB0y<8w=37`8b~M#?n)|;8_KeRJ88^4zJ||oD zFY5p-yBkP#U($Py57_s)&xaI+zNDUa$j-r)o(g477i*JQY#`^w59)|JB37`;KRcuw zPD+b&VPUr3e6mf4LrO$Q*w=^)H~Zix(JnpDH!iX;<+<7~?}NnKnI?O{R4@Xw=Fy`h zUi%C&7^=jF-^H_~{wL5TaNK}qd`TgA4EVn0L*Ue7jNbTL?PC1B|FMG!SdScsdO zo1%#14%kc+TRy_(A^CTzp4Z}!ISmf@ZJRGInlIha z)OabsbTa8EssBjmM)Bo&r`4+G0r)PgKFO>l?awcr(UBRmd-vqai9xXd^D77s`5WvC z_MREf^&$v^TUlPzu753`_p(Yj6n&7ERKSjsiPPygD5?RRJO4OR4Uq|*jU8qy-Vj=f zgV7p3RfvMf_rP}idkqZ=<65)TFJT72IS90kYzkGh$*lX#oO%BzL@P_6!*LEJ*e`<`UJ806b< z8*Ql~g^iHaye}Qr#hm!N!bjlRymepb+vsRVTbl}1loGz=osqBX_1J1%ipoELNPa2# zXyw~F1cw4a9vF@SE6e2lPbl?mfVSmaH<`RaEgg|6V4oovB^Ajs2T1fia(4z67KLIZ zySu+2>-ZJ|hsNs5ubp6vjVDnsB&MeIeIp~kGOa)*yDX)jN$m#;B`4Dc zB;Hu7-UvWNN>f`+#%ebe;&Za}1?P+Hugi-plJ|~-bQT3ET=_F*##L{^5hdeVUP3V5 zeT9bH=kd{1{EPYa+ep)>Yo+y7yxw5Y+xxmU1aV6r z)5QbP_ix!ncY;0xTA_u_;9^RvqgurG>hkCUgtH_?nj%yL9Ub%n2aC$fjJ#0?jSAC*MBz97&?5rzF%OIeQ(*<_hzyPRrGG-S8_(6AV-H| zr{AB_+#0#J(bQ#Q^^2dM7io#2mTo#R$(*v?{@!J2*~Wx_(-uGR{pL*H0QEa+YAWQD zUh`%1KIxE_nI<%EN2Pa>^TjtG}G5 z3l&S=N2d!AP+(62$4wCA=R%Z=5*5MK!Khx~YvJ(&-+DSBdH^zL%N?iY7f1nbiKV>d zj>!J{%(hScM2OrPP=6L84C1sDd)tWb0vqud^6B+$o4dYOI2$QTU+c)!xSK9qq8+rU)@OXXeGN!A=fgZ zAW$k3LWp41(orj&c%33y2;@)*s8_+rIK?RR*fdNZ6QE6$mr4oVU0!DV_)46NlqEqnr`xTO1YQ<0x z;5f~v+-%Rv*;VL@r%coN@4>K)F_CditA)g{VaS*respBWAFdYaN~Qn;)C~^M~I~|4#L@sd%<*+F>sF z&Ti;8kMm;g1RI?nduXZlc6TolNQfC+f%Oz(1Z+XLr<|ie#x2@WQ z^UVH4xT~3F1@D_VzPtLCD64sIe{FGJ|ezy&)Bk_v#BH%w?EOO9XP^qkk$HyhyK}@XI}t;#pze{X-e(4p!-u^oPrzTc+~Xlr zG8!r&hKd9UQDxyPjIBaHox zgF!PcJY`MH{W}L`bk{U*JfL+jz4cvAU;MvIE9dij1wjd$pN1E+=}mT3_*++%!~7*V zE%8F7T-Q@4-r)pNx-g-ubNL(?o=I1x*oveL>f&vtW+%&JBGnG%D%7FzHrq~cYmo_OML>UCT={=4_etB=*>0v)V zp*L?FSGskYy~(a#j}Hv&bke7R#_;s=-L}j2`0&7#!;Psz|NQj$EjFk(N9I@y=aldL zOGr*PFo2gq$AkSUr|q=3Cs~og(T+65uGi|j?PgqDtQETIfWWtJ1K%RPuCad2KpOAAp0#Ea+q4zJ^>6MP@Jx%B_ca**dP3R;(>8I7|; zn0sGbT%hPfYMAxnih$Rjmtz&|HWryl1?!m+0zb+ADwHrfEMKPr4JI-DlpptQ$a{0c8cW%4HJe zUKtuj)hx|LGmPx2RXFo>{w~r=!y_g}S@hrO6 zb+L}+p{1bfDm;o`n92P3!)2TN^eMG$nXR^ViEblIvkqD=a3dF)Yso#q#0|&jbhFP@ z<#vO|?qV>8yuUPSgs4Bpqs3jAhc#cG7Ti5+@NQ%PVK?Z8VT2?WwYt|Qw8_1vzE$Wn z&!1wm^m7z`f$XZAIyNTp02YkX(*)J*P$ALF{5W0BCI|=zKqR1!G&N5<(tH}gBfcKL za@E{;b}Ot*;2gR1vR#Spn!X`J8IwRsWz1NCit2as^GC6~dlTcA6)Z0URq@rdo?B`? z*SdG_%Qelcke?1;)cn{{iP70RjZ3t)8=Hk$YA1VX(Vu-g+PhBEC%7GcG=0>#E$9}w zkhBj8wSpJ>Kb3P8_}(`StEn`eZPgd(x#xA+uGBh8_6gQQ^h#s3i>!HPd0#QV{drB} z_b(sE?}xUP+0N*8RJbqin|Iu#i&<0jIW;U6H-KzetUlqmn3(d{oAn1c2Zv;{!5A)sO6{|d&TFvI$M?@2oVDga*xdaX7~oVc$_v}Q@0YTi1bgX|q6_5|$*KUn^dG}$i% z(mo|Wff3dHq(qRPvvY7rn?M#qc+szQXr}gIHpfS2jzILKM*ZOwf&T+qzJLF78l+a! z$ojbM28Zn4M1F>@>uY#ko`)=T-69nL$?6l^tp>?Z0{Le9I?bZ#x`QDY9e(T2wpaSc z)~``Y$GQo5dOweM7S3Mi-G0DK+jcc>5-O>ul0CFGnM<^>oJ)%ddAWehr;GVg*f4oj zZQb6TfJMlJuFpo|(`5I?<64RWA@RLzC5As1mi6{3Q8hKklsZb*^47*n**bYNP>RuT zR#fG*?{s4M;oZIsP{R%4(RUD@R{HmE;OXhELo;2gYTiqD5$N)JdgLKSXBvb0rXL=R zXGlrGd76}z1R^2t$YH@SDMOGW(+W!bKYe{=R8(Ks?*JlQigb$ul2W3yFn}N+p@0lX zcXx+?G=d-^Eg>NcC7l9)N^%&ahVJf`csKgqb=UoJ=L>5gGtN0@?`J>pi-cq;kc%U^ zp2sOc@0vIzDUs@AmqK=YAJggNBC19RksO$$Ciu@ae{{3Ik#&P@0EQ|wzWbO*UL+>Q z@mkY{w=9OD{QAb?2Vh7fD!Kh!{(DD~BYKe;W1K5w;kqb+FG=a%jbZ0b?(Hh< zP^(6XybTS5yb_$378ttE$4~rTXbe8t!bwjNJ&ddUz{elM{5x7-){vV<8A6&RcTFmo ztg0QkDiyUu@_cM@5UIr6_S=z)>UK0H5!6TP-6Y4Tyh2Q{`beF5Rs~gj7^#pIA);hr z&DeuMu6=<-e{RcW_0<=Tds!70f(xn-`$zUGYJ!(vY+U_VUaNYc>)k0E(_H7netH^q za`_b-8yjGOnVIMAG_t=}ysyDtL=nmQ#?;nkbQd75_e>j(NTM{69MA5UIAH{~+mLfF zM>a?GEbWJd;i7fnz;v%_F66C#r1ZxxU-H!pKp|3@XF13dCzl-_9sRmc2w<;4B%!Qz z3kI`>h!3Cf0^gQgx0ok`_5mMFv?CwilmqN&Y@nyST)p#5T$d0y)`265pZ|M9mQUyL z@i)+ax24ZecR4QVBm!v(k1XXh_|s2%AH;8F$a9a9!hPKVq+4?5S;^=heQF@4;*`qU z-U$bDn593dJG8?z(M&%rVquYQDii}v%5>n8uS6Pxt7I+zNW_~s)vABHV^A;5DOvj` zCo#{^f_&Ltx`>#wME+~r=BJ&-*>2u6ju}yWk}KR_Rn0WXu%i7TIGbv?IdpE><;mmF zdm~2OZgdXXPF8!*ClkV(>7*2}($ff&0=V;h->-SlUp=OOLmb)ZpB{rF(J3l?Uo8|Z zY^2Wz(M<^xHlJ60sOb~#KOh^6pU}5u=w-%{UPt_~Ur(6i^SnD;ZM)QDKbe|}G(tAz zBUyN8r}Xr(bQDYa9}0W(dI{mkd(Ql&R{WUcTXV}9@@4zh45q_)9F>a2uaXFFBaNzr zxFfS(lZrS}CvK+YJy3}4{-l@yf)T4)g-e@@KoAwd$7lWS>C;5JSG7WN!t~-kv*V_F$v^6OkEf z?8U!qVt~Z;aitJNOMEx`Hji|S4G{idutBZ;t}NWcgsaK<&#Tv6rNtqG(+-qMx2A@cz9C`-B+6o&^lSL;f`x_ zyskVw_%yNu>8O%?k|YbkRW)jd4b$v7^5{(1(Zq+1+66;wM8dDrp2bsR$?T=5)j%2S zr-G9hMSQdFz2BiwJyGqOf(`M}_5;rzb{>*X zCV$X3Gd%I!WM6zIcLji>1*%ervMv*7yaGA*u_WBphuS`R5d0n*|BxL2n2bKK2Cr7jvSUl`<4;mAc=c=1DQVKA zGAzz^+ftG@(^kk7tlrF5?27>=WU}28XTSCHtAi~$AzXAH&QePA5DFgN80Xl=E||H5 zRwO8rD2#y0r&|c*_|lVao#-EWI|u!lRQEy&lxxoJzp6Y6LTd)xyX)vqq4_puobjpn z`62nmjvxaX*`kq_6mj^RN_MggV`T%wz#p$kED~`*Hs8SWeH9{ zSNpBe0giDyghhZtQo-m;Zoh5^HxTc5&A!NAD;L`%`{SE);$9VJtr8Tt&MAJw3~0Cc z3{%5|%Tncf$CQ_YqgT>xCG9|7&pBE>vy^RZ9guk>(C5wEaGr8F$wy)CzGws$Nlm29lM`&6Q*>mJ96G&nL7BDV78Yd@6pt+rZM`GV@fCg5D|{jtmuL!R zWqjMTmUG_~wR+Kkc_ktBR5qFNzM6{>V{1XFZ$xF`hBFmPMIsm#-Gv2PVE7ato-N=|N47WVqJmn6<_GCf#) z2z6XeY~d%xN~MQDmp)Jl`t|OpA^Mdfi$UcV*~oSier+z@z4{$dwKW}e`&$74RXoF% zWDo;##|hijmXG{-j}Wg}?%#nNC)SJ<@iCRq6p(dA*b<>0V+-XU8#7gJJzcE%(DRe> z%+9c`?^$&jcl!~$Th}~4h9WgN|1i}f$RLN_M!oy2geC?AGnQ`K<$8RH;Vo}~Dp3sY z`mI9tH#K%_5D1-v0_@qV}&d2>)gpsqcp0hE%J2s!vT{6865(Biq#E%qPMSSGCDST%b|0{yG zoFMVPBD;Dg&LxM8@ezvm%Ka&VXTqHUira>8xJA`BIAvct^k;)Jm8No_($Du$A5V&N zvkGm4GNWk&R*&@B6;3Hf) zL8DP9+MN5Y1rtK^a*t1S=_&Qh5A06PdS^*muEBzdwmQ9lR++eCcE!kqQ5ooL!lj30 z21@zvxi>M2raJWQgpqIL`%XU+5ggmdW|3o)((Co7|gF6 zLBjutPy{GkKjR?$fH`aUE{=Fy=hOWP)f&Ao@zQC22n!qKX~!w?T_B>u%F|Wp^Sq+@ z~9j z_07(V%kGX!OUo$OGI;>$!Zzs;Nhn;R+G@Cy%3ev_ld@)sjqb)GWf*Lqa#AGuc{B&< z?b|(JuvsA3AS@NxnWc><`*zgOUE^2$AbTF;Cp$|F*4@8%Fn=JQ&!BH^WU#>_N8@g} zX1ILEyp|T$PtHGT=9`CU86}-~;*g7Nn!LB;Br&qFaG4rg*PlrRRQFb1`MnUCPLHN1 z_`0obzku+BJSuC}NKY5RMQJddpKP^_crcbY(_lR1qIvmJT8$n;^330Z(Cmp1r|K^q z_l09js;8X~$&NfW1;F*<@ovdTKeAKq+{ZiJ66z|D3L+!Zi3+pSyT6+;j(As3@b;8q zXEI6wtMrU`lPj3Xz{j63x>a=i)bz7P>$F;!>kKd_(w3x5advFDqk~L=P$3lUM z-Wb!$?X#u+EOhT%`dM=exc_xXZ{DUDxh@O{%kc83?YL*z2YqY{tz9qzM)Sh8d_ zwR6n98z|#uY^DqUSXOiOeZ(m~tR%8@8MjG%^hor&9Jl$B{N>wFGCnFYEQqJjm*#@X zYR7;B!oHZDpWTWVUgXPW74B_a1wS)R<_oimB}4W7qU1Y4M%DZLU3E0FJmVGy6?uq( z&|%*btr^G5{|sQ(%!*I+XA<7P8t^o;yN4(0Wgc`U&0zdotn51BT_DDlg+UJc*o)oQ zS?-WQA}cFtdq>Ww=)yy*fL7Fqa;wl_^(-CR^%md1{M-^DixiS)@SuirmAC-v9JiS+yr<1|*_sEVO6QW?S;qUs7u1+){+7;CG6M?p| z_$1f37Ad{KVPRCc;bC1t;7(qPUf57g*WrocJLb|D(kQ7&>yoZVd2GYCnOSbu0?WSL zxC;5G@tlJaeQ-e#$N@MH(@R8{4+sc&7hAZV^%=?44K+a=RMMJP$P%cg>j=`F0uqtkAkjhIl<KD$NsQqDk?UEWA47EKAf z_giVL0L_4&rO7|AVFBX`V+*&3j@Ow#itE-nl6p%B3@k0fkrtb!6Jccc89a7@+Rd+- z8Gn8E->mCyRtew5aq7+2`%exGa&jd?et43Sotd6RumMP>zEC1JCl}W&!+jQ`FHn~C zA0p_P`)q9RY`oHI4&1KZUd-5x3@!Z~LG|yowc+)Ne*tJK|CA%5$jobE`9%dEQZ=eu(<#Yg_vQpPfE8~)dDTRlA= zpNq|LVYUYkF0bCx1UtOS#|OZnfp~)BLWiEHS#O*?BmAfr z1&lI$?*H2*UP-`D0q8eCJdP3)x5AIRKDGg^n%3ZOAe!Kehf+f#Yisi~5ngiSvXB{i z(a!*R)GJVUo0#s25zI_QrK(dtNzhW=N=HXoxsNg3C#$JxTGQinH}mZGYgFEV_UVBv zfE@(xV3Q$DnHG4MSk~nLeC`FK|7NYZR&50lW6#suOw4>p-}t`kDVrBVkIe}P22v%6 z3}9xt)$+A|LnaV-wV&0?p~s9sb*)kdAS#R(=1<>}lHFu2NBkff=I5^h;g9M>AQo1s zV+-$)MQGL!C$g>qzhs{G@687=S63c-VyRjS0>~py?8b<2U1nxxPR=c<{jVlXlrUH# zMm<<`t^$=h;+8{;H>!LhP^h5btIS>3Z?+Z|4*EPmaF#d#uzPA0o;#G<4$hVMJD0Q@ zIo1ksaQwRBCHwbPpa7!Mqa}uH_V-sK2evcLPEN_mG_q<@VPSw1l;!Ok-@W+OBC^Y= zcI9`^YmV0&_jEHIQh&AO0)S$1alg&ugU0_|2&O+OGROQpJda)gC$S|7HkNaYvH`F#-DxCzo&*d?qSwFVVEhN`^eAE^ z&vD*)PEWyb`|CuH7zzjwRHZY|&5=#c!C*Hb)HhTPaa&b?X4a)3p&P24zFF49gi9TS zQ%??M%Y*EWtlMlzVHyCC)poU+sj26N4Ty+0?-SSYl*I-zGA`cX(wW+ak@Ys>!XN;7 ziyngR_SV!_43lWOac~U^al~|EJ6md?bL|Wn{XiX`oV=_pVK;di%J^o#Q}VKVk2pMR zb;vLS9Lw7k)+_zM7iyy<1E3xW_77Y|rdF*>h;VT|me&#nnsqWbs`_kefur!zF z(SiVanK_hS;d^_#%G%KBmc zo5oegY62iLSrv3nT5zDemk1E6K@`tlnP~ij2GWMg^?My)zW|M6mAIVE%}w`dKX^&W z#b~oc-NJ_qfU|Z43`9UzQ!DrcNls4D2kaCi?{?kN2;4S)HK}hI;N32QPG$}+rLH|T z5YDo)0`|#5j`OezBHP}90rc(;QRj!H-DoD3ITeN1OP)Z+|Kl_yYJBoeU z=XZB;UsgZozAcmR*8XwIl)bmlS~+;EjaTP0%|HfLMLboP=eoz*AG`E$uM_y*@vLyB zxub0XzU=aRqhz$<%6&#CPr2T4+P0d$r`vPx{fcMs;Tzqm*ncHVG>{g)y2$XX|7}#3 z+TVA%hO&a9AlY*nlZla~j#5=6C}xokdB zQS_Q3M`GyvP&O!(n1SD9H!)_Vnde`wV)b zatDYh^UPTP&0MnVH1+kb*ExCX6GMZ8C!hLXo$lSWt6dt&mj3|sVRie>6H?=Pt3&>+ z?P?$bXAJP*ZsCLu zkBkft4?h|C#EK^c93XXcybM$g^lY~PBx?)nDlpImbTHdOh_Qf5Y1${jK?}i8pFf}b zRbj=&%`eP@on|Z}S0+GeO~t|c8(BYUWw9?Wt;ovC%gf4+6ZoI_pVSgc0qazE-nU|o z^RCAtfIz}q@>bmXcoXQx0^3kSR7Z5bAq@fLl@B1&NTZ)T3ToLMNwMFYs;871=_=B{ zJ{PXquRQ?rA;KkJzZ$gfn@*>jbj-FyQqBOAq6KY_?a5ljF**8Fv5iU zl7#@c_7$iK=a>n_Uwy6FVO>HvRSu!euu4W;gd`M!JyGBF;{;zOH%^ zY7KagCC9~;pQh{6OZqi5HC^?tq3j#amQ!n;ft(c>d?jTh>g((8Y-IvVNJdYSa4->R zwx0no5FqF5S~qLmsVizVEc7Cg+k0^?6p(Sm?M}1HjCX1l^5R&5h%y@v@n$HiDItRo zx&e((KrqEPAI_FRNKAa=hr0fC!dpyGNuWD0;s@QKOE-i6@5skIm0vzlQ6 z%Q2AbfJ6Wn2*b1a{x_}=&xYl35G_=dYYGV^VbrPeX$N6e%+Bd3Uk#l2z086wEnGX%; z>%F~2yv>tKj%{%JG%N#j74L}eZWDqPAk|MV&cJyxuYS-kx`Km)!zk*u*-n{W?W)?{ z(<55ye;vV=uB4)p4#w^0M~wUVo1$!#$a^uIOn1m!gT69Njg>8Y=GM=A#Q|9DKsR^` zu?)U92tc;B2ysxuYI9B3DM3zcHZ(h@$&{6qtBA*|Gi-Uw3$Y6QRpYCOk%QuU< z^~$Fc814)Lzv>b)BWdU?N2DEsk=cP^f#OM{a~9FV5bjev6|hvk{%hh zf)vYMNl6L7;&)hyemE{9fVvg%Xa0@-3VMZ&T0;X}p(lK3gFFw`Ef=*@w{`BQmuC=v_&V z9OnT4?SN%U>k6}zxfR$@j@ldJh-g^7z#;ANegUBVbRfzJ57J| zJ?74KKF}XrrHU^aD@z3|lvG(N-Hc05h}LP@D0%*L%MKruc?N{#(_S1fUO!4w0%%Ks zxH-~8JwDO>f*yNTtD8PMcy`Jk%L%@xt(oeVq`?n0#3aw^CUhWRTzRaJ zyJeKNQpi)14{*a)SgA6P|J5No?%h{}dT-xe?Jf5~?3yo$JMY0K0sf0v3ds5bCnm1u z;|V_SAk}vQa&q3qLzUguEDS4kNa)5$c2GfJMm#=$_4Qd0T@T16yyQZRyT@Cl(Sk$9 z9T#0oD#KQ;nwpuOUWQ4tr12!X-K z=6ImY=VW*E7EN?VSuOwzS6Z_Ly!m1NJ~;Tv^x+R|0tP>mZr_uc0hy0^chvM-B|z#q zB}3lsf3<*E;!FohT4Oog@$OrbYh^lmdQ+dd8E3pUQqgwxzN@jB=8^pX>G6R^$O<^C zlg*J$kJzrMI_{n21D|497qP5JWihE#gK-=hZ}P18aD zS*MdzgEFMru`OgdcewzSOT@s>YP@UUYq}IdbUh8&c`rVT;eTyAlM*}M@xM;_{F#ED z{ve*#4n!#Xrm_y>FA`v1FajKY?wcQ=%pF3Zw)C-_%72WOTn~<5w`ZrOZZ?BB8i-AB zn@EvCkeyn}(z5$tK%5e2j7uTxb{Y%?X|%)-4#6Q)Qonr;e5l9pLDrQigEQ)1(^ORS zsZ(Kxa9C*=_EzP?|0b?_tQi6`3IRRC9>?d$DNW!o|9>)9$zcLDYr(kRR{C>GBrg$4 z3JPZ{lGnh>`Iu)i<^PUTPs*&Kl!1tWw)PiIT0l?+S{c!D+5Ybo!3m4HeH%=1^=ce4 z+g8Bge3v{&ASntAWc?&=9kBzMaSziYt7oJJJ2MM|NO=c^F=?D|xB*LE(@pCImIy|M zkwB3sJY3vyzGk6(nj_)6ezV{1v}3JI7W?PKgtIrbH`#7M0fD~pg}+x8yW3f%DoN`t zrN2QUJ}!KB%s2+5Y1j5WpGhQj&3RKr?bGG5!5f~YrSvrZOKV;54%kK3H<8BSSvA{j zuFYqCjRN*{4~4k5TZ8dxGwZF&id8>KdpNM&JUN|H0mIjqNpvr(k zHBMDe!&Z>$bXx7D1VThbC%9$zAddBDXfG0$sIg%=|4>Fi^JbZ<&8Q60`;7D~Idxmj z`LWay=FzG#c7UBYOer~jNfkszMP*@EfQO6wh2IqagzBR_IF|f!&2ug5oFpA+;UH_5cxBO(ZS} zZF_w5#wH0A8^WH?10f3gdDQSyc@sEvm0g`6YIIm8>qiD3%`|Nab#OTN_WAZ9co`c^ zbubfem+jK>S#d%1{r8JscrL69&FC^2*TvROnGVUz-xCjrUvmgV+`Z}I*nc2Pk1N(l zsc8HlvqX%}q({A5G}oM6WOnIRcN%SO_p~monyD2h_=DRX)${j`%9@ba`*PC-Rm!X% z{jd)0q+{lD7$k8Fc4v^Mtc`od7rSm5 zOnhbV5;>KCH4;g=6b+c_-rV?n`*y4n@w};&tTe^RKv!@24EkK4hlC^Qq#D!P=jYq$ z{Gne0vtssSs=Qk8@2a_i%}Hzz^2yX+Oj3klpZvEeuI(Mg8}<7zh;B=dcrq}?U~5FT zui@_!_T`bo4O~1aqEXqKV1C)AkyEART<7j~@O9cV{q*3y>TbD0UKY^*`uo8N7qbPl z6^q~ED`Fm7+T*p&$XU2yX1@3w#k=mE78AT>oItT`dXw9(J0qocg;pxO)7=P3t3u3q zYv1fAMTypL(y0w}&q$cnZx}!=GZd2fQosd<6$glIQG7+y=7?@G+tMD5ZSe*mMqMnM zy!3_@7t(Cv&ElXpU3pIEOYijsjFWB=5rH81P22H5V^W16b-xT}7K4`Nsz^qoJGkvMgJcc-9F#)m~Ni z!Jwqdvy-gi)nYM^``>@-c4q-v6x*4|&{h5p3#cUvEwwuanI4|!L`e=OZt7Z+N7W;R zyRP`4CSO(TM#cG0Wv4+KjD;=gq%kYd;XhfG|6W0@*cJm+te3UVL)n*I#GOM*K;f?E a;dN&68J%muz6S8Igeb_Wz>1{}0{;g*&{#JB diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png deleted file mode 100644 index 21b7ab40145bdd8dd7fc08bfb4612a1c37d8bf5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3723 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 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js deleted file mode 100644 index e26e142..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js +++ /dev/null @@ -1,189 +0,0 @@ -'use strict'; - -System.register(['angular', 'app/core/utils/kbn', 'jquery', 'jquery.flot', 'jquery.flot.time'], function (_export, _context) { - "use strict"; - - var angular, kbn, $; - return { - setters: [function (_angular) { - angular = _angular.default; - }, function (_appCoreUtilsKbn) { - kbn = _appCoreUtilsKbn.default; - }, function (_jquery) { - $ = _jquery.default; - }, function (_jqueryFlot) {}, function (_jqueryFlotTime) {}], - execute: function () { - //import _ from 'lodash'; - angular.module('grafana.directives').directive('piechartLegend', function (popoverSrv, $timeout) { - return { - link: function link(scope, elem) { - var $container = $('

'); - var firstRender = true; - var ctrl = scope.ctrl; - var panel = ctrl.panel; - var data; - var seriesList; - var i; - - ctrl.events.on('render', function () { - data = ctrl.series; - if (data) { - for (var i in data) { - data[i].color = ctrl.data[i].color; - } - render(); - } - }); - - function getSeriesIndexForElement(el) { - return el.parents('[data-series-index]').data('series-index'); - } - - function toggleSeries(e) { - var el = $(e.currentTarget); - var index = getSeriesIndexForElement(el); - var seriesInfo = seriesList[index]; - ctrl.toggleSeries(seriesInfo, e); - } - - function sortLegend(e) { - var el = $(e.currentTarget); - var stat = el.data('stat'); - - if (stat !== panel.legend.sort) { - panel.legend.sortDesc = null; - } - - // if already sort ascending, disable sorting - if (panel.legend.sortDesc === false) { - panel.legend.sort = null; - panel.legend.sortDesc = null; - render(); - return; - } - - panel.legend.sortDesc = !panel.legend.sortDesc; - panel.legend.sort = stat; - render(); - } - - function openColorSelector(e) { - // if we clicked inside poup container ignore click - if ($(e.target).parents('.popover').length) { - return; - } - - var el = $(e.currentTarget).find('.fa-minus'); - var index = getSeriesIndexForElement(el); - var series = seriesList[index]; - - $timeout(function () { - popoverSrv.show({ - element: el[0], - position: 'bottom center', - template: '', - model: { - series: series, - toggleAxis: function toggleAxis() {}, - colorSelected: function colorSelected(color) { - ctrl.changeSeriesColor(series, color); - } - } - }); - }); - } - - function render() { - if (panel.legendType === 'On graph') { - $container.empty(); - return; - } - - if (firstRender) { - elem.append($container); - $container.on('click', '.graph-legend-icon', openColorSelector); - $container.on('click', 'th', sortLegend); - firstRender = false; - } - - seriesList = data; - - $container.empty(); - - var showValues = panel.legend.values || panel.legend.percentage; - var tableLayout = (panel.legendType === 'Under graph' || panel.legendType === 'Right side') && showValues; - - $container.toggleClass('graph-legend-table', tableLayout); - - if (tableLayout) { - var header = ''; - if (panel.legend.values) { - header += 'values'; - } - if (panel.legend.percentage) { - header += 'percentage'; - } - header += ''; - $container.append($(header)); - } - - if (panel.legend.sort) { - seriesList = _.sortBy(seriesList, function (series) { - return series.stats[panel.legend.sort]; - }); - if (panel.legend.sortDesc) { - seriesList = seriesList.reverse(); - } - } - - if (panel.legend.percentage) { - var total = 0; - for (i = 0; i < seriesList.length; i++) { - total += seriesList[i].stats[ctrl.panel.valueName]; - } - } - - for (i = 0; i < seriesList.length; i++) { - var series = seriesList[i]; - - // ignore empty series - if (panel.legend.hideEmpty && series.allIsNull) { - continue; - } - // ignore series excluded via override - if (!series.legend) { - continue; - } - - var html = '
'; - html += ''; - html += ''; - html += ''; - - html += ''; - html += '' + series.label + ''; - html += ''; - - if (showValues && tableLayout) { - var value = series.formatValue(series.stats[ctrl.panel.valueName]); - if (panel.legend.values) { - html += '
' + value + '
'; - } - if (total) { - var pvalue = (value / total * 100).toFixed(2) + '%'; - html += '
' + pvalue + '
'; - } - } - - html += '
'; - $container.append($(html)); - } - } - } - }; - }); - } - }; -}); -//# sourceMappingURL=legend.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js.map b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js.map deleted file mode 100644 index 4383aa4..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/legend.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/legend.js"],"names":["angular","kbn","$","module","directive","popoverSrv","$timeout","link","scope","elem","$container","firstRender","ctrl","panel","data","seriesList","i","events","on","series","color","render","getSeriesIndexForElement","el","parents","toggleSeries","e","currentTarget","index","seriesInfo","sortLegend","stat","legend","sort","sortDesc","openColorSelector","target","length","find","show","element","position","template","model","toggleAxis","colorSelected","changeSeriesColor","legendType","empty","append","showValues","values","percentage","tableLayout","toggleClass","header","_","sortBy","stats","reverse","total","valueName","hideEmpty","allIsNull","html","label","value","formatValue","pvalue","toFixed"],"mappings":"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","file":"legend.js","sourcesContent":["import angular from 'angular';\n//import _ from 'lodash';\nimport kbn from 'app/core/utils/kbn';\nimport $ from 'jquery';\nimport 'jquery.flot';\nimport 'jquery.flot.time';\n\nangular.module('grafana.directives').directive('piechartLegend', function(popoverSrv, $timeout) {\n return {\n link: function(scope, elem) {\n var $container = $('
');\n var firstRender = true;\n var ctrl = scope.ctrl;\n var panel = ctrl.panel;\n var data;\n var seriesList;\n var i;\n\n ctrl.events.on('render', function() {\n data = ctrl.series;\n if (data) {\n for(var i in data) {\n data[i].color = ctrl.data[i].color;\n }\n render();\n }\n });\n\n function getSeriesIndexForElement(el) {\n return el.parents('[data-series-index]').data('series-index');\n }\n\n function toggleSeries(e) {\n var el = $(e.currentTarget);\n var index = getSeriesIndexForElement(el);\n var seriesInfo = seriesList[index];\n ctrl.toggleSeries(seriesInfo, e);\n }\n\n function sortLegend(e) {\n var el = $(e.currentTarget);\n var stat = el.data('stat');\n\n if (stat !== panel.legend.sort) { panel.legend.sortDesc = null; }\n\n // if already sort ascending, disable sorting\n if (panel.legend.sortDesc === false) {\n panel.legend.sort = null;\n panel.legend.sortDesc = null;\n render();\n return;\n }\n\n panel.legend.sortDesc = !panel.legend.sortDesc;\n panel.legend.sort = stat;\n render();\n }\n\n function openColorSelector(e) {\n // if we clicked inside poup container ignore click\n if ($(e.target).parents('.popover').length) {\n return;\n }\n\n var el = $(e.currentTarget).find('.fa-minus');\n var index = getSeriesIndexForElement(el);\n var series = seriesList[index];\n\n $timeout(function() {\n popoverSrv.show({\n element: el[0],\n position: 'bottom center',\n template: '',\n model: {\n series: series,\n toggleAxis: function() {},\n colorSelected: function(color) {\n ctrl.changeSeriesColor(series, color);\n }\n },\n });\n });\n }\n\n function render() {\n if(panel.legendType === 'On graph') {\n $container.empty();\n return;\n }\n\n if (firstRender) {\n elem.append($container);\n $container.on('click', '.graph-legend-icon', openColorSelector);\n $container.on('click', 'th', sortLegend);\n firstRender = false;\n }\n\n seriesList = data;\n\n $container.empty();\n\n var showValues = panel.legend.values || panel.legend.percentage;\n var tableLayout = (\n panel.legendType === 'Under graph' ||\n panel.legendType === 'Right side'\n ) && showValues;\n\n\n $container.toggleClass('graph-legend-table', tableLayout);\n\n if (tableLayout) {\n var header = '';\n if (panel.legend.values) {\n header += 'values';\n }\n if (panel.legend.percentage) {\n header += 'percentage';\n }\n header += '';\n $container.append($(header));\n }\n\n if (panel.legend.sort) {\n seriesList = _.sortBy(seriesList, function(series) {\n return series.stats[panel.legend.sort];\n });\n if (panel.legend.sortDesc) {\n seriesList = seriesList.reverse();\n }\n }\n\n if (panel.legend.percentage) {\n var total = 0;\n for (i = 0; i < seriesList.length; i++) {\n total += seriesList[i].stats[ctrl.panel.valueName];\n }\n }\n\n for (i = 0; i < seriesList.length; i++) {\n var series = seriesList[i];\n\n // ignore empty series\n if (panel.legend.hideEmpty && series.allIsNull) {\n continue;\n }\n // ignore series excluded via override\n if (!series.legend) {\n continue;\n }\n\n var html = '
';\n html += '';\n html += '';\n html += '';\n\n html += '';\n html += '' + series.label + '';\n html += '';\n\n if (showValues && tableLayout) {\n var value = series.formatValue(series.stats[ctrl.panel.valueName]);\n if (panel.legend.values) {\n html += '
' + value + '
';\n }\n if (total) {\n var pvalue = ((value / total) * 100).toFixed(2) + '%';\n html += '
' + pvalue +'
';\n }\n }\n\n html += '
';\n $container.append($(html));\n }\n }\n }\n };\n});\n\n\n"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.html b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.html deleted file mode 100644 index c8524b3..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.html +++ /dev/null @@ -1,9 +0,0 @@ -
-
-
-
-
-
-
- - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js deleted file mode 100644 index 9e4be67..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -System.register(['./piechart_ctrl'], function (_export, _context) { - "use strict"; - - var PieChartCtrl; - return { - setters: [function (_piechart_ctrl) { - PieChartCtrl = _piechart_ctrl.PieChartCtrl; - }], - execute: function () { - _export('PanelCtrl', PieChartCtrl); - } - }; -}); -//# sourceMappingURL=module.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js.map b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js.map deleted file mode 100644 index 2945416..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/module.js"],"names":["PieChartCtrl"],"mappings":";;;;;;;;AAAQA,kB,kBAAAA,Y;;;2BAGNA,Y","file":"module.js","sourcesContent":["import {PieChartCtrl} from './piechart_ctrl';\n\nexport {\n PieChartCtrl as PanelCtrl\n};\n\n"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js deleted file mode 100644 index 98f6b12..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js +++ /dev/null @@ -1,246 +0,0 @@ -'use strict'; - -System.register(['app/plugins/sdk', 'lodash', 'app/core/utils/kbn', 'app/core/time_series', './rendering', './legend'], function (_export, _context) { - "use strict"; - - var MetricsPanelCtrl, _, kbn, TimeSeries, rendering, legend, _createClass, PieChartCtrl; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _possibleConstructorReturn(self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - } - - return { - setters: [function (_appPluginsSdk) { - MetricsPanelCtrl = _appPluginsSdk.MetricsPanelCtrl; - }, function (_lodash) { - _ = _lodash.default; - }, function (_appCoreUtilsKbn) { - kbn = _appCoreUtilsKbn.default; - }, function (_appCoreTime_series) { - TimeSeries = _appCoreTime_series.default; - }, function (_rendering) { - rendering = _rendering.default; - }, function (_legend) { - legend = _legend.default; - }], - execute: function () { - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - _export('PieChartCtrl', PieChartCtrl = function (_MetricsPanelCtrl) { - _inherits(PieChartCtrl, _MetricsPanelCtrl); - - function PieChartCtrl($scope, $injector, $rootScope) { - _classCallCheck(this, PieChartCtrl); - - var _this = _possibleConstructorReturn(this, (PieChartCtrl.__proto__ || Object.getPrototypeOf(PieChartCtrl)).call(this, $scope, $injector)); - - _this.$rootScope = $rootScope; - - var panelDefaults = { - pieType: 'pie', - legend: { - show: true, // disable/enable legend - values: true - }, - links: [], - datasource: null, - maxDataPoints: 3, - interval: null, - targets: [{}], - cacheTimeout: null, - nullPointMode: 'connected', - legendType: 'Under graph', - aliasColors: {}, - format: 'short', - valueName: 'current', - strokeWidth: 1, - fontSize: '80%', - combine: { - threshold: 0.0, - label: 'Others' - } - }; - - _.defaults(_this.panel, panelDefaults); - _.defaults(_this.panel.legend, panelDefaults.legend); - - _this.events.on('render', _this.onRender.bind(_this)); - _this.events.on('data-received', _this.onDataReceived.bind(_this)); - _this.events.on('data-error', _this.onDataError.bind(_this)); - _this.events.on('data-snapshot-load', _this.onDataReceived.bind(_this)); - _this.events.on('init-edit-mode', _this.onInitEditMode.bind(_this)); - return _this; - } - - _createClass(PieChartCtrl, [{ - key: 'onInitEditMode', - value: function onInitEditMode() { - this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2); - this.unitFormats = kbn.getUnitFormats(); - } - }, { - key: 'setUnitFormat', - value: function setUnitFormat(subItem) { - this.panel.format = subItem.value; - this.render(); - } - }, { - key: 'onDataError', - value: function onDataError() { - this.series = []; - this.render(); - } - }, { - key: 'changeSeriesColor', - value: function changeSeriesColor(series, color) { - series.color = color; - this.panel.aliasColors[series.alias] = series.color; - this.render(); - } - }, { - key: 'onRender', - value: function onRender() { - this.data = this.parseSeries(this.series); - } - }, { - key: 'parseSeries', - value: function parseSeries(series) { - var _this2 = this; - - return _.map(this.series, function (serie, i) { - return { - label: serie.alias, - data: serie.stats[_this2.panel.valueName], - color: _this2.panel.aliasColors[serie.alias] || _this2.$rootScope.colors[i] - }; - }); - } - }, { - key: 'onDataReceived', - value: function onDataReceived(dataList) { - this.series = dataList.map(this.seriesHandler.bind(this)); - this.data = this.parseSeries(this.series); - this.render(this.data); - } - }, { - key: 'seriesHandler', - value: function seriesHandler(seriesData) { - var series = new TimeSeries({ - datapoints: seriesData.datapoints, - alias: seriesData.target - }); - - series.flotpairs = series.getFlotPairs(this.panel.nullPointMode); - return series; - } - }, { - key: 'getDecimalsForValue', - value: function getDecimalsForValue(value) { - if (_.isNumber(this.panel.decimals)) { - return { decimals: this.panel.decimals, scaledDecimals: null }; - } - - var delta = value / 2; - var dec = -Math.floor(Math.log(delta) / Math.LN10); - - var magn = Math.pow(10, -dec); - var norm = delta / magn; // norm is between 1.0 and 10.0 - var size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - // reduce starting decimals if not needed - if (Math.floor(value) === value) { - dec = 0; - } - - var result = {}; - result.decimals = Math.max(0, dec); - result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2; - - return result; - } - }, { - key: 'formatValue', - value: function formatValue(value) { - var decimalInfo = this.getDecimalsForValue(value); - var formatFunc = kbn.valueFormats[this.panel.format]; - if (formatFunc) { - return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals); - } - return value; - } - }, { - key: 'link', - value: function link(scope, elem, attrs, ctrl) { - rendering(scope, elem, attrs, ctrl); - } - }]); - - return PieChartCtrl; - }(MetricsPanelCtrl)); - - _export('PieChartCtrl', PieChartCtrl); - - PieChartCtrl.templateUrl = 'module.html'; - } - }; -}); -//# sourceMappingURL=piechart_ctrl.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js.map b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js.map deleted file mode 100644 index c03d0cd..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/piechart_ctrl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/piechart_ctrl.js"],"names":["MetricsPanelCtrl","_","kbn","TimeSeries","rendering","legend","PieChartCtrl","$scope","$injector","$rootScope","panelDefaults","pieType","show","values","links","datasource","maxDataPoints","interval","targets","cacheTimeout","nullPointMode","legendType","aliasColors","format","valueName","strokeWidth","fontSize","combine","threshold","label","defaults","panel","events","on","onRender","bind","onDataReceived","onDataError","onInitEditMode","addEditorTab","unitFormats","getUnitFormats","subItem","value","render","series","color","alias","data","parseSeries","map","serie","i","stats","colors","dataList","seriesHandler","seriesData","datapoints","target","flotpairs","getFlotPairs","isNumber","decimals","scaledDecimals","delta","dec","Math","floor","log","LN10","magn","pow","norm","size","result","max","decimalInfo","getDecimalsForValue","formatFunc","valueFormats","scope","elem","attrs","ctrl","templateUrl"],"mappings":"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","file":"piechart_ctrl.js","sourcesContent":["import {MetricsPanelCtrl} from 'app/plugins/sdk';\nimport _ from 'lodash';\nimport kbn from 'app/core/utils/kbn';\nimport TimeSeries from 'app/core/time_series';\nimport rendering from './rendering';\nimport legend from './legend';\n\nexport class PieChartCtrl extends MetricsPanelCtrl {\n\n constructor($scope, $injector, $rootScope) {\n super($scope, $injector);\n this.$rootScope = $rootScope;\n\n var panelDefaults = {\n pieType: 'pie',\n legend: {\n show: true, // disable/enable legend\n values: true\n },\n links: [],\n datasource: null,\n maxDataPoints: 3,\n interval: null,\n targets: [{}],\n cacheTimeout: null,\n nullPointMode: 'connected',\n legendType: 'Under graph',\n aliasColors: {},\n format: 'short',\n valueName: 'current',\n strokeWidth: 1,\n fontSize: '80%',\n\t combine: {\n\t threshold: 0.0,\n\t label: 'Others'\n\t }\n };\n\n _.defaults(this.panel, panelDefaults);\n _.defaults(this.panel.legend, panelDefaults.legend);\n\n this.events.on('render', this.onRender.bind(this));\n this.events.on('data-received', this.onDataReceived.bind(this));\n this.events.on('data-error', this.onDataError.bind(this));\n this.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n this.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n }\n\n onInitEditMode() {\n this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2);\n this.unitFormats = kbn.getUnitFormats();\n }\n\n setUnitFormat(subItem) {\n this.panel.format = subItem.value;\n this.render();\n }\n\n onDataError() {\n this.series = [];\n this.render();\n }\n\n changeSeriesColor(series, color) {\n series.color = color;\n this.panel.aliasColors[series.alias] = series.color;\n this.render();\n }\n\n onRender() {\n this.data = this.parseSeries(this.series);\n }\n\n parseSeries(series) {\n return _.map(this.series, (serie, i) => {\n return {\n label: serie.alias,\n data: serie.stats[this.panel.valueName],\n color: this.panel.aliasColors[serie.alias] || this.$rootScope.colors[i]\n };\n });\n }\n\n onDataReceived(dataList) {\n this.series = dataList.map(this.seriesHandler.bind(this));\n this.data = this.parseSeries(this.series);\n this.render(this.data);\n }\n\n seriesHandler(seriesData) {\n var series = new TimeSeries({\n datapoints: seriesData.datapoints,\n alias: seriesData.target\n });\n\n series.flotpairs = series.getFlotPairs(this.panel.nullPointMode);\n return series;\n }\n\n getDecimalsForValue(value) {\n if (_.isNumber(this.panel.decimals)) {\n return { decimals: this.panel.decimals, scaledDecimals: null };\n }\n\n var delta = value / 2;\n var dec = -Math.floor(Math.log(delta) / Math.LN10);\n\n var magn = Math.pow(10, -dec);\n var norm = delta / magn; // norm is between 1.0 and 10.0\n var size;\n\n if (norm < 1.5) {\n size = 1;\n } else if (norm < 3) {\n size = 2;\n // special case for 2.5, requires an extra decimal\n if (norm > 2.25) {\n size = 2.5;\n ++dec;\n }\n } else if (norm < 7.5) {\n size = 5;\n } else {\n size = 10;\n }\n\n size *= magn;\n\n // reduce starting decimals if not needed\n if (Math.floor(value) === value) { dec = 0; }\n\n var result = {};\n result.decimals = Math.max(0, dec);\n result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2;\n\n return result;\n }\n\n formatValue(value) {\n var decimalInfo = this.getDecimalsForValue(value);\n var formatFunc = kbn.valueFormats[this.panel.format];\n if (formatFunc) {\n return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals);\n }\n return value;\n }\n\n link(scope, elem, attrs, ctrl) {\n rendering(scope, elem, attrs, ctrl);\n }\n}\n\nPieChartCtrl.templateUrl = 'module.html';\n"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/plugin.json b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/plugin.json deleted file mode 100644 index b3bab38..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/plugin.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "type": "panel", - "name": "Pie Chart", - "id": "grafana-piechart-panel", - - "info": { - "description": "Pie chart panel for grafana", - "author": { - "name": "Raintank Inc.", - "url": "http://raintank.io" - }, - "keywords": ["piechart", "panel"], - "logos": { - "small": "src/img/piechart_logo_small.png", - "large": "src/img/piechart_logo_large.png" - }, - "links": [ - {"name": "Project site", "url": "https://github.com/grafana/piechart-panel"}, - {"name": "Blog Post", "url": "https://blog.raintank.io/friends-dont-let-friends-abuse-pie-charts/"}, - {"name": "MIT License", "url": "https://github.com/grafana/piechart-panel/blob/master/LICENSE"} - ], - "screenshots": [ - {"name": "Donut!", "path": "src/img/piechart-donut.png"}, - {"name": "Legend on the graph", "path": "src/img/piechart-legend-on-graph.png"}, - {"name": "Legend to the right", "path": "src/img/piechart-legend-rhs.png"}, - {"name": "Legend underneath", "path": "src/img/piechart-legend-under.png"}, - {"name": "Piechart options", "path": "src/img/piechart-options.png"} - ], - "version": "1.1.4", - "updated": "2016-09-26" - }, - - "dependencies": { - "grafanaVersion": "3.x.x", - "plugins": [ ] - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js deleted file mode 100644 index 44f144f..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; - -System.register(['lodash', 'jquery', 'jquery.flot', 'jquery.flot.pie'], function (_export, _context) { - "use strict"; - - var _, $; - - function link(scope, elem, attrs, ctrl) { - var data, panel; - elem = elem.find('.piechart-panel'); - var $tooltip = $('
'); - - ctrl.events.on('render', function () { - render(); - ctrl.renderingCompleted(); - }); - - function setElementHeight() { - try { - var height = ctrl.height || panel.height || ctrl.row.height; - if (_.isString(height)) { - height = parseInt(height.replace('px', ''), 10); - } - - height -= 5; // padding - height -= panel.title ? 24 : 9; // subtract panel title bar - - elem.css('height', height + 'px'); - - return true; - } catch (e) { - // IE throws errors sometimes - return false; - } - } - - function formatter(label, slice) { - return "
" + label + "
" + Math.round(slice.percent) + "%
"; - } - - function addPieChart() { - var width = elem.width(); - var height = elem.height(); - - var size = Math.min(width, height); - - var plotCanvas = $('
'); - var plotCss = { - top: '10px', - margin: 'auto', - position: 'relative', - height: size - 20 + 'px' - }; - - plotCanvas.css(plotCss); - - var $panelContainer = elem.parents('.panel-container'); - var backgroundColor = $panelContainer.css('background-color'); - - var options = { - legend: { - show: false - }, - series: { - pie: { - show: true, - stroke: { - color: backgroundColor, - width: parseFloat(ctrl.panel.strokeWidth).toFixed(1) - }, - label: { - show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph', - formatter: formatter - }, - highlight: { - opacity: 0.0 - }, - combine: { - threshold: ctrl.panel.combine.threshold, - label: ctrl.panel.combine.label - } - } - }, - grid: { - hoverable: true, - clickable: false - } - }; - - if (panel.pieType === 'donut') { - options.series.pie.innerRadius = 0.5; - } - - elem.html(plotCanvas); - - $.plot(plotCanvas, ctrl.data, options); - plotCanvas.bind("plothover", function (event, pos, item) { - if (!item) { - $tooltip.detach(); - return; - } - - var body; - var percent = parseFloat(item.series.percent).toFixed(2); - var formatted = ctrl.formatValue(item.series.data[0][1]); - - body = '
'; - body += '
' + item.series.label + ': ' + formatted; - body += " (" + percent + "%)" + '
'; - body += "
"; - - $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY); - }); - } - - function render() { - if (!ctrl.data) { - return; - } - - data = ctrl.data; - panel = ctrl.panel; - - if (setElementHeight()) { - addPieChart(); - } - } - } - - _export('default', link); - - return { - setters: [function (_lodash) { - _ = _lodash.default; - }, function (_jquery) { - $ = _jquery.default; - }, function (_jqueryFlot) {}, function (_jqueryFlotPie) {}], - execute: function () {} - }; -}); -//# sourceMappingURL=rendering.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js.map b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js.map deleted file mode 100644 index 5580eaf..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/rendering.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/rendering.js"],"names":["link","scope","elem","attrs","ctrl","data","panel","find","$tooltip","$","events","on","render","renderingCompleted","setElementHeight","height","row","_","isString","parseInt","replace","title","css","e","formatter","label","slice","fontSize","color","Math","round","percent","addPieChart","width","size","min","plotCanvas","plotCss","top","margin","position","$panelContainer","parents","backgroundColor","options","legend","show","series","pie","stroke","parseFloat","strokeWidth","toFixed","legendType","highlight","opacity","combine","threshold","grid","hoverable","clickable","pieType","innerRadius","html","plot","bind","event","pos","item","detach","body","formatted","formatValue","place_tt","pageX","pageY"],"mappings":"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","file":"rendering.js","sourcesContent":["import _ from 'lodash';\nimport $ from 'jquery';\nimport 'jquery.flot';\nimport 'jquery.flot.pie';\n\nexport default function link(scope, elem, attrs, ctrl) {\n var data, panel;\n elem = elem.find('.piechart-panel');\n var $tooltip = $('
');\n\n ctrl.events.on('render', function() {\n render();\n ctrl.renderingCompleted();\n });\n\n function setElementHeight() {\n try {\n var height = ctrl.height || panel.height || ctrl.row.height;\n if (_.isString(height)) {\n height = parseInt(height.replace('px', ''), 10);\n }\n\n height -= 5; // padding\n height -= panel.title ? 24 : 9; // subtract panel title bar\n\n elem.css('height', height + 'px');\n\n return true;\n } catch(e) { // IE throws errors sometimes\n return false;\n }\n }\n\n function formatter(label, slice) {\n return \"
\" + label + \"
\" + Math.round(slice.percent) + \"%
\";\n }\n\n function addPieChart() {\n var width = elem.width();\n var height = elem.height();\n\n var size = Math.min(width, height);\n\n var plotCanvas = $('
');\n var plotCss = {\n top: '10px',\n margin: 'auto',\n position: 'relative',\n height: (size - 20) + 'px'\n };\n\n plotCanvas.css(plotCss);\n\n var $panelContainer = elem.parents('.panel-container');\n var backgroundColor = $panelContainer.css('background-color');\n\n var options = {\n legend: {\n show: false\n },\n series: {\n pie: {\n show: true,\n stroke: {\n color: backgroundColor,\n width: parseFloat(ctrl.panel.strokeWidth).toFixed(1)\n },\n label: {\n show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph',\n formatter: formatter\n },\n highlight: {\n opacity: 0.0\n },\n\t\t combine: {\n\t\t threshold: ctrl.panel.combine.threshold,\n\t\t\tlabel: ctrl.panel.combine.label\n\t\t }\n }\n },\n grid: {\n hoverable: true,\n clickable: false\n }\n };\n\n if (panel.pieType === 'donut') {\n options.series.pie.innerRadius = 0.5;\n }\n\n elem.html(plotCanvas);\n\n $.plot(plotCanvas, ctrl.data, options);\n plotCanvas.bind(\"plothover\", function (event, pos, item) {\n if (!item) {\n $tooltip.detach();\n return;\n }\n\n var body;\n var percent = parseFloat(item.series.percent).toFixed(2);\n var formatted = ctrl.formatValue(item.series.data[0][1]);\n\n body = '
';\n body += '
' + item.series.label + ': ' + formatted;\n body += \" (\" + percent + \"%)\" + '
';\n body += \"
\";\n\n $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY);\n });\n }\n\n function render() {\n if (!ctrl.data) { return; }\n\n data = ctrl.data;\n panel = ctrl.panel;\n\n if (setElementHeight()) {\n addPieChart();\n }\n }\n}\n\n"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-donut.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-donut.png deleted file mode 100644 index 8e54878b1818390e9a64a85f95ea6cf191093121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38209 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 U9(vjFSE2lp{?&^GD2KoQ1yf+SQvd(} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-on-graph.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-on-graph.png deleted file mode 100644 index 51dfcbc9f3198216c00798282e5c3fcc1b284fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37972 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 L)7e+{*HZoi7z@?u diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-rhs.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-rhs.png deleted file mode 100644 index 9b018c390531250defeddf0f093238f69012a6f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41450 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

hoR@X{k09*Ul_DHB2wpQ|7;FJ%LRerwKh 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 D&k=w9 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-under.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-legend-under.png deleted file mode 100644 index 32845115d934b2c35d279f3919d36557cb8a61b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34314 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 r@G@S~{O^x6=7D=%5Qu`Ts!X}myWsx^YhG&t diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-options.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart-options.png deleted file mode 100644 index 117962e05ff61b61972a4e1fc5c7637d00f78935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48400 zcmcG$1yq$^*Ds2q0tO%<5`u()bc3X9y1Pq|PU!{%L_kDETDrSIT0uZb>F)0Cx^w%! z=ZyQ^`+om%?mhSJ;TRjX&$IX1Yt1$1FXkdpQC{NCO`@A9C@6QNBt?}`P*8uOpj;(G zzY4EBdHVVYo=_bTQmW|a=%dpLQ}8RclbEKHik+#GtD%Dlii)|jlaq7zAzphn(eA>j&fePdR`9lCv%%JZH=6A z?Uq5_?15T*MctRTgr7bgE=EWqnm0pxPxZpE)A6T|&${Cy+dkDq>c)F+K49?l^h6F0 z1*I(G4aMIdo<`k3KL5uj6hDi<*ZkAdf4uR(zW9%C^ItFhkH7un{r?`@f4uSEFaE#0 z-<;!%^cUfjCwM&fwgjgW(I=SWiTxFR5GNcr4^}BP@GMh&Af4*P1yz-G&ZLp zvcG+yIA8p9U+fBc@8*FV5V1-6T+N+`i9dj82|fT)eY2-FS2j6{Sy$ zPp6aSiWjK{&3<^YWGVxlgui*pGplyC=^_g4<%+U->u+?qnWCRi8k`u*Y(@to~QaHz`J%98xiBQd)08Qj|_iriJatqNC~yQv(a~7_i8}972)w9Jhsv?U#KbPa z)Ar%vXzb*a6n4*pwODSuAW@2ay$5_Q419c}BO@oxA;bmxwH^U>mfv4q*d*@?hBte;?wsuT(^s&D0&NtnSRH-nSIb~(# zErDy01^kxZc4w>6dmMMCNYI5!r}fB0GL6@`JGMnIZftD$VY9QBz><&(c&N@!*p652 zcTOsWk_s$z#>vnufBW`LEl1tL!bMqA^PB6Y{u&$t> zObPTajmY-8!z`+E#>Yugoy?GgUhH(@8?hY+TU&_{{W)pTwv%;wTE`x9Ql=7(;$j*a zuE#s`CnqO;LS69!#Q6AWinJ^4(cRY?oQ#dB`n`0i!vx%Su1$)-8@VZP=9`k{=jZd2 zhH4K?d`>DZE>2DT+0gJByJ4+gf*7_mesNi8OycqJv423o>Cus(wFe?wA57H zN{9LOX!d==w&O-Dp;WYXc{w?~GD|h@n*o@;Y|-!QdZu=d@7}#DEG#T9FR#l~@$DNA zIr%i?2M8q2vAo(^@5_sG)T>vmZEW`U_8c4?Q&Lh6*GDxJ6`$HnEiLhw|9Oazw6@Om zC?SO8Ziy4!-ri0r@!=1>Ljhxt}~Mm~Ed zr>{c3KBouk(e%e&b!BDFii&?Apv>UyE7S>Z+_(V=AT0v_W>af8{pypJo8z49j~`1h z+`~msP*BvJtk6UL@gQbrXD1+tyf{C#8!DWh`tfGO_1EHVhJ4&ey{|7O98{x7IW7AL47`$Za%AjaYE(2e zd5nI(3l+MEs=7$RxOR1AxfF8Xj1}^mZ3Z{@x4$7wFB_CyU0o$6B2sP>6BDBg9T^=} zk%}?5`AkegQsa4O8&1_RH#38Sk1tl?mLL8K6|Lv_nO==s(FNsjcca~8y>9|G8|=BJ zU;_3qj*t#hg#^Lzt}cbP30Nf8jj<=NCZ?a$35kgE4eBR)dsP$^LP^_oo;MPosLd}f z;v&-J<9KaGI7~lN`%zI*(T2Aw2%W1wlCtW%_Vx@F1?A;J%BKO@#ko0ivi8o&$pn3Q z1%*MJ)*MUE2P7nC=ZBNMN^I2B3oz?hSy^6!lY@hTVi*y+pj zaeS@=CB|!OYfEi!_*^$23eC2reyHx9ORg2iXMM8%5|$E52JE$@q@?G~@27W<+08on9p=#cgBJR8G=_(V zwJ`}fb@w2{V~{sBHNir9Y)uJ^iTP(`SqKYX32utvb*3vbNf7iF|3D(e$gE$(LrM9j zQe-~`xhyYP^aMyl;rog*YVhrizPy6EG*8TJo5?S&V4JK+%W+`m=-{ATZcP}TN>5L( zQK0X=GbeS@JvTQ8UyjpiK=E>KdppY}3ih~wK-e)vO25SW{9Ti`veZ_iIXT?y znttK3HnctNI%#3ulz)-?(RI2?uP#acJv#hv5%jHkkB^T-F3dF9Z^nS-+k1#CbR*?9vCRa% zIU39!mF1}9$l0(E6cVbx*!6MbA*rgoPEN(kTa`^nhC#ltu+aBfmRbdCAVoYR`PSm$ zr0?L)h<=@y6f=FebckUL;r8y%4t(ICVx%k#2$>OY_s-AHJE3ushMGNl_RP+1bADdz z@Oz4Gjhp@N&yUJNtf26w#vYUMyD2_@a}7TCcNmRI8|)0V{wo?yzkdhD^YcG?ly>oG zc4I?66qPoz4H-7;zH!>We*IFkVCk55ST0{kOG`t;B>7WJcEX5_U}I-*Yi%th*gsew zEvwj2^bI;_=Kt4lI8AJAZJ$3EVI(Fb%#xi;N={8Ro^1|UxfA!;X%zL71kHuUmqdmsx(gjp5FnP5~NgWdxE7UB`KrE1bBE~pE#yd zZ~BumR+pBRUN|58YlwcCWf%jJNs3g|)bYH|E3o=7f&Ci*ho#aiBbtn^-?-7kIygG2 zqoC0B{X6W%k%@^q*kw+MG=A@zW;W|i^Rv6>OIbKM(;`>@OlW&fn_El?U+4wo#lJ*m zv)l8W^;DVVhto+S0hUAIA2E9~Bi`QlG4Bu(5`uqI49cGLtk5%4(`M5WbSI$zU!U+cygonrPdB6Z`HS+e_)mJa& zU#(d5^!A3udyaK?v(nLJXP^IUX(`aD$X^I^VDF}UhK-=3qa$LGg&W7JT?^heWyY&7 zFIzxq&F&~BB_$ncS7ay-5%Vh((_Wk?!smhQgg#l^- zQVjDdiQ{$FuJv$sapB_3^Hwpkvr`y<*!uf-_e9YU0KuwP>Z6#X&V}}~;!r|i8P%Qb zuoHi8ZEa;v=h`eUFNaafoj|2ji023FA&vK-VXs9ZfNN6K@bZ3Nh^<&X~Q z>gkmU)n;bWa&aBN$~tF$G!-ZGsJsxVC%k|EPe)>oO|2Z7?!Nq2sOftq;&PV$S-%Z3 zWr#u;>zC`phbqo;j~u($h}02*M4=f+(yURnn8Nmo7MZo$?~Jzx=@#( zprB52v^Db`>+h-MdO%=M`3iw!P_cfQa*?x&m0AH&4BL%6=CYSHzWr!mm)1A-imDwk1@J z+5*PDI#^&(?;~*Yj^RlhfT`4ljeOr`qw;r(^#yVj+YkL1^s4q4Ig5?UBa^8qtv|Yo zqD#rj_7$f+efUhiI&+6sV4j>@boS?zY^~?vfZ(eSv9ZK@R}6MV#1B)wwr9kYlnMzRaPD+iv`105B3t~VJOiWDE)6*>< z9;o=L8W_||gpx)_M+5a~zw2h1W;0q&yO{o?ukVXxw>)RKpU25UtXPP&D61FU6%skn>pKo#g!ir5rx|p=DN0BzPSkpqn06@J>8b*( zvl__lh~);5>$*Oo_B_hP-hO*$hmC`Sfr-iI?5OBOlODc_E)zE;r3e)cfUlF&Qypz> zbyZbJLF)UzbNdAWMgvKnotcU9EGa6o=uHoSudmD0)zMMwd+8$=L&5Q=sHh0u<@{v7 z_kMb{^J??rE<{(`8f*Jc(-NT4KoWCva!vs&RJ(4n#TpP369d<}aqSv5Lc7#_dVc=V zz2M&7-eK$V>T15=CJz`FY;;A%k3i9(9*a`kb^cXcQX(TQtt#jTT7rv<3&Xuth~e$+ z?LDeu4qV(Ys5`N-v2Di1K(Jvg)Hp3vRT_+n`1$z(?Yw^<^2o?u$$q;L4QoP~tc+7h zsgsFG$!g&16K^7#=F6zEvNFJ2Qc@Utkw5tBwY0R3kB-o7rm&+N!wNUHo@p0MT+Ir#Wh>Ly=Cy+`&K!BB1X`YWB8y!9m2E5N;XJ$^ow9edAZo@fJb5k*e=$ z-)fTi9YdEOf$A+uPPb4yE-lgzz5kFol+G&Q5b!|}m+H?8c($0xZINl z92RzP@Vj@3Z}W6ZOz$|)aIvvze|upFnJo%GpW@R}q=C;9;7z+vz5z1>t_LjM-o+)| z=WEo-!MY53rO)|EqVSu(1mF<-jtjCnIyxR9x=cbIdrN>`GQ*y}c(DchFEfA|2$lWJ zPa1`IQE~B|<1>KiI0%n}wMv^&uI$m~_0ft1A>TTqrknei?+gtMA^wxA37|xml)#RY zauu9*sAM;7Um7eR3urWq|CmLfa@p)0687}reO3qKNuTp5Zm}%p=LkdtS+%RisDlFE z=siX%Bi54ISBNapl5yAhFa<%S<(HBP>;nA!)N(PYfba4kQ4aTIsSH~m#Bf?gg$Ftd zezHuRUt8JOsB_ykS}=a$_wno3uk&q@>}XHSC+p7Ps+rkY0H76?{d7V?LMKUp(g@j2 zS$xm)^71tDw42(=0jTShTMq-@gtAwEwj*PzQ3|>7{R6&;V@e9Vo7{F2UUR?h`Yqo; z?{#-~-zSvGA6Zd0t;U41W+@cxO!-L?J|nA@^udF;P{9-P{gr;_(QtqN>v2|Ar0M<$ zLl2Lth+7!@6Bg~aK5x&q^j_v>^M1Y1S%EmIlunN%HfADzW=f5aG%`x|7&21Ml1?2O z8nPZO?-&|7+8D16z#@aNEiWlKJ(>;Wb6NXlKiiCa8#Qy)G%-m@Nr>Xhlhp#)=ngzz zLDCQt6}|m{mjlWrNGoOI8M4%reoiZWS!P}F+_q!Ce*aFQ*Q+}}(DC)X92*;(^u2_w zH2(d2A`oj-G|aD@R_XxS?x20Nxa#EO)EO^u+ATr0zd7j(${Ae?@H`=UdYR|r!Vo7g zyXfSQkgEZPySrCLMrs%v&jpbAn46lGKl^bN6kbGw>!kPLuvr4^0wf~@EhTltpgR(Y z0!xaEA=J!fZw_MH29;D>)`E1VuVPqs_kIZW_G&F#80iMEp z`)tMw@cEwR*`6*sRMuY{jQZ~`4(92}6nxzqHsc}VBJF#^4(c5hl`-tIt^^@h2Zx~d z@12~T9|-w)<*4UL%g7Kg>C%S%hO`GlDT~w6ADFmDR8)NjqS;DnW*X0*&)y;C0v!)1 zGYPK~t&q@ULxT}8S|1-DtHJySPaKSWd;}eld1cb)lrgeRug=Te&@c&*im`EOTG~9w z1w!Y0DwZ-_v9-42yc!yVklp$UXqiOm&J_~E?|=KOZrp`uAG6!)xtc#}H2aPu%0h)Q=Nn$SD+TXb zqb3uj^kz(HNAo&o7ZurCTdx6a&$`(Fg+Q;$$pV%V#0*l{|LJnEnT%O4IRVl`9RpD^ zK-+zNgcGukfx#q`UezDNs`Asd!Gg)1`L^iVNnp>*o0|&gT7}Q9oRinMtjECeA?f)0 z``um*9KlVzkdh?Gy!&!A3ZTfU2-$sk_YNIYfi9s-bN+(PX!d|6Bb)Im=fQlvzE(gF zaNWjm2@MAa2MY@eC<7qqu(LaY0&wr%J=e{NG^{J<8da{Ff<9+%`@xRzX%p~8FvyjZ zlv+Z`GSuVwTx~mIIN>`H3i?aHaWXVk0uk{=iJ;X|F*@eW9dunwi}yQceGRe7iU9#11zHVhPXqISb0l=Lu4;HS5@?w3ftOS`uE{-?+;n2xBS4C~izv4lZLaBO3j2L=G>e6hg!omBcUbIv zz$>K!@`@aKQAtToqhQvZot+)k=1;%c+K3@@mRj_x3O?)mQ5<5yGL>I@ zbD|dirhhZbc$Nx{j7%E{Dgav91{W6=lt&MjdnMWoQnAK>!IV;2AS9nXON5BGw=Zh- zD~6ma=&?uZOc2#%q!hVCH@gAiuHW0YK6~8~atu;P1ud2u8(km&UgyzD4w~hI7T|aT z;$m_9_OG$onAnQNg73A*V7g*qd6R~o=)2y!vo7@PspMdO`&$Zt{u`vo-9+wppOCoP z)9st5o8sbJL}w?wOqVB}*;^1AsvtU9_vQxH#yz4|>t7Os49cfTtD+(zB4~FAdl)&s z*z#vJj5ku|dLGuDpIk>n}0;nJB^- z+?33Fespx?v^Hdaadu3H%GK+?yE8AdK4{r))Hh_J$Z)Ua=TF5&1K13pp#cg0;PVI= zLL9eUd~mRgiOD=59Mg^%vAjXe?OgA(AK5GhzJQ;jOJtUomJ&Z1cqRmR1QHyrQk>FTwJiT9L|;shGQKqRop zsQsd1V=s41jkgmMAFkl!7);j91O3Wi=V^tVZ5Dt=q^dpH z-I1m$Z{O!pHIRi#qa4!Ll@F<@UH=ytP8u4Kjnj(b7E#afS?Fh@E>&sqC_aJS^iB|8 zW&Kv4!3wAnf?$~KtAt5^PB+Mojn#olT-vqwo<&dY=9jkl{ph;jCt>9giggfkQ&Z3A zTyy|$09*nQPf}VM=cfPLw{O9>fJdKHYP@5hiK!`*X5rMRU45F49K;1k;#gThvZ z`%yX#+_y^S)q4WT2?v!}w{G6F)F<}XoDlFw2#2p{Dy4vqks#n{YHq$XKkp2$-|o^P zGchqqPfsU8AB9^pW?ov0<}zPtWEdI9*H*4(zfzoH2x!$mZB?!(BSrbye$ z%gZ`B*-QPdDzozRL;6ir)Kp&uJR`7`wZtlR;%hxRqWLtE6wjQO6!$`im9zSaOxnOP zL%V)`cxXsAnm@X#Fo|AWFqVgvmdCA)xt`zmLiZu|Z9=wGwbg-=x(lE)qpCYlF}3%{ zU13r*Kq7Nl*VfXChWtEeI}QMCAYX^ziS1ZU1^dF+X5O!%T{IDP@l@00USxT8nFv0Ti{O%xzt0KibR+xP!~q|MA+ z04N=z(4zIrnc1JU^b>j7cM+sQ?#k=8zk!4x5^$%ayqt@jJA*9~kwxX_ z=d@n+;==1Be>sGhTiyHArbRwZ@M113YRTMQtSQU)VjE<`?d{*Kt-NVjaaiZ9QT*;~ zu6XciCv>btgL*ln=a1IAxoo&L)|HU_Q8p;Bnb*Jq6x>dw&NqNQz!{tmk%FK z&G_H)`#8mZczBJ&~fp@1KzK^&Nmn5wBy)`S46cN3koYL z4#A`|2fGy~5QuwNWF!sVO%t~0goK2G0=sd2p>V<|0bW|RXj!I6cHcLdhfSs>{gWC% z6y4pAJ$ZE(_%M3`>O1|h&b-lURHS+O?5@ARKWLvsyiQACjrGTV2oz0*vI8r}_3LMw zl$2D8MCit7#U{XV0DYW3donUI0PubHSJcAq?pX?+ag_uHAGi?IUz}JO8cr`J_}W@q zx1U`j<8!e_!d?ZU@s|p-oKj^WC1siww%|__f%m)1RjbQX;DSS#c|cPMVC(^})3cIc zy2B1;y{eyQ8LfNHs@`uzDF_9<+)$hAPBtB9eg=Y>3@ppQ=XgGtfH}(9r-NM<7lHIy zk<#G#$@z8*88~fTf|u|;)IuT^oQW!d3xUo);nGUum$}Ey4gMM5o8#c6gdYS*gpw=|WrYO<1bq6Wq}Kmv zm7aqDOMR&JvD37|bvcp1qv|;00n9B#Jhm89$XKbsAt!-^#pFewfdoKsS0JMyd ztkj;-D)Dd*vo77mEJz?eo0HZ0_96-15*Q2ctY|ePe5q_^(Ze+=8v6eI>A5^#Xp72n zqME+Gt&veNuu^a571v-ExoqB9l`zMF$sl}sAVf-yAz;^cgAg4kD#TeAG#>U3JzCOVDNs5wGpBow)fYfDE*YLRSP&ra*FdDOI znVXy6G3bJ}1yID7XJ>np#cqM30E*bppP~y24qjef;OM9+_#W@1MM&g$$AR@YR%WFE zkN~8NaA^~D^#S;}*ijCWI~$-2gJ)D+Shxhrm)hYuXLA1J?Y|GA6)@nk@?Qptv8f-XDmtw-Lq;HDXeN}>`UDXHH`6+1y_ zbA7$md3C^LeZ<|2giz&Yr%6IQ$gWqJO55k%LR8Hgp)$-eYF8NMBY)41O z719M@w`xRoeT!?_nwsXew)s8{+ityS;m36_e|=r|p?|5OuTOQ~u|-E&TU$EBbE{KL zUA?YRLs?z@-h&4rjwYxcCwt2PAgY{}*+2^eJxkTuthu29k%kN7Q3l=O)hl7(K2Qto z!ilbfPyjN)piBOr8^bjH7~*MpNgqCR!d{HseI*Fw6O30_%JZ``0Dz^XW+}W2o^EbD zyu8`E`FuP)_X!CFJoYk$)1{MmaVo2;dqXN8gJlAA5?m!96B1?@VR| zy#R<3o~xcX@ECEtDSy}1cJjjeaD(-E3nmf2+n=c)5Q4yMLqHeqTpzuogVo<&8xqD& z?q|!F-SZY{7?>0$YQq?kMjmA4YS`WP1_JZ}jKS4`b%A8LXu2jhZHD!GEx6^Ydd^Ud+<$e5T`(-Pp!^4!ls!iHTyg0xJvsl&Xt zexSijL#|Rk<_8N(CEO5#)lNDfFsMPE^FHGTqCx|v$i<6l;%GlsQ^F9-kF8m93c9xa zvuA&PXw2&>g~{Yjx^7;0^`w@Vb$m~IR(0g2JSgdRwios61o!j-FL`*&yq4SxS<&abSg;MoH;4Fii+5vh2!B-MYbuhHw*TfHwED% z)lksjd|>h68L$E%Gtf>N8yaSSSG8Mss;H=ddf4)w5Sgt61ZuUb~6bXhr(>#DpLN!~4eRuY%rH z+3B{MS)dE-uMc+h_xHmNKjoq6YZnD#IpceXqe2##KvbWbZLAx9)3T6VP9uH~-JGc9 zOQyQC!%j?pjut~iY_%sSlZ~DS;QyYQ{{DRIxXAUHxKQrXmZ6o7snpB*qG&?3?F55yMRQrzN!x`~77k(^9fTxo;0G}`S(wv4 zCkV>sMwMPxzfO1;K>Pxw%wTI)gedEoEgy0SL_E;^M$^S14Iu@q$S^H3iPCfx3Fcr%y>m zDfeSLfG|8S(uAHRXL$_}Ct-(xy$IQxNTRy8ySoS=GApZL$*}6-s;ds$cPocYr$nIDwt;doE_e#u((`TYk)$>v9%=X-L`6NYSGc)dhB$msgb5~zqUo3^L zd3yD=@sdR#cI|ITKoT{Ok6Qs#^phkof_$I-ndN1|o-%rY#o+w>jd!0YG03@}KVP5OrZzj9s`4e86G&W&Ewq3rhep5t&O<+z zJ18iBNZ|Vvn04u&b#RkiyXM8~b0$IN`}NBgRagb3ekP!oK&#TFA2{f>?RK7haoFp0}% z6f~1_-;2PM$=hY--A0R@aeg1QN=&;`oS`*C_AAdPY#dx%%Df+vpCI)?i`gaM^Tm!h zr1SV}>O0(DZZ-J9XUW~;Buyp~^KxH9E$$NTfIj2nrn%n&p8LruyI4YJ-)oe7!1mY> z@Hjd-_IKWtN3V3+PHxr{fYyzXzN|38%dxJmP@g-)%mzr_ln~SLJduKn*JJwZm{KCt z7Ce_)kxE@3D7_Cx%g@b3IuI$JV`4l&YaaP7Ug$~`Al!`%9ZGSNRq3h|>r%##;ObiUhE+~q^Wzp%x0;9vjgv7)I_yoO((IK}EF}6B`I7APU&c5h{)L z3H3VLZUIVP=F{t~{#U!So~Y3>aap9s;6zTG-6v6sES-3_?HT`8szkaSOa5;GinOx% z`O98;UvBx&m)Yswk{bdq0;~g(eeXy~Dxhs08KFE49LOdoj+Y>Xm<|b(us{5JsN$h4 zG;gAyoK^g3haVD^G%LNHM7G&{#C#1cj>x#HF*Y?##zvXoGhcvqXJq3ey!zifLDL!X z|NimmzrTNLBKyl@407=k+Q8wgEx!6ZguV((upn@jb}G9*mdom)m8 zU1nJZxwUT}stu7U6{^||+qMW2i zH-GaHCN_s931+|>I4twhlxXmaboK`fqEUNtzd|P`O;NNv%1K257I-i_96C;A93GXN zowHZ}e$AJAH&Ep6*~b5!lz-3ke|$pu*W&!+(|^42zrOhY>;3;8;(z_b|N7g%KmVz> zy=9qmnyk9E`dejGbL!j2UH}ZgKzu!I^aGZuN+*_eg#-5{DV9IX%%6{jG1wH?=nRaE zN-iBAMJe1Nw1LG|Rz8tVv7m>88n8>Az=h@kT>m@a^*>|wAH(zC5&Yjr>HjUfH?h&g zP(q+zn2nW{+z-keE#6H$bhwP;kj2Il`A}~R0T@7jFW8A2v&~`y&TVs7(3`+cr8;9A>Abt<*0Js3Ax$m_i?N^oy734I+@AVN8 z5gsS)77HS95r$g&`lP#$t+}dAWHJU{RWGS2DSZNLpOo|xn<5)~-q;Km!Ot%c7x#6@ zT3%h<6xtG$vnu0WmH=33i{K|MC@tNyP*xVcLbOnK9!e1K+-@_GsueoW{IK~vJu@O0 zoh!#)pS`A0AZ;^dTX^O2;suo-B$QwC4h!<{LqedNBji2E%2Eeyk>I(A{IKMH@h4Fj z6-{k_X_iJ|Aoqea4JPQ%P@_{v2r*wLw8>$Aj)~y%ozPtn$r~-z`u2>x3^`+<)(b+f zuQvrcxyACbRmwnn)RW$h{*VblMgi~fk<7C*uLXJSGFt(kvumDwd>$d6Y3;_|T{yS6 ze3JCT`Z4<4-29vIZydxgXea>*7u@rwLaM5|HO{LMsWb|izB_LGmNKSjqTb%;p+d)0 zEQKYQ!D2$JfDIQrC*uXZgJ$wtD@)9f4fc!M9D*KeLrQpeA>KtS@MdKVzP*UoeqrxY zURr7-IJdYe!8o@tuPlJ~2nVCA`DItaLBA8X2Dg%!*nBLnyctc#uz_!0%I@W6TT8|{ zz@jWFWYLfaC5sFeWoWpGc{7IHl_|EPIbdo%X*C}B*6Q3^&E@wCGGE<#Af4~qZ>!*j zS@hPiadPJE@P;- zbnGiK_vIOpa<3?(W91k#wSwvD5;h|Fc`~$W6k9KUUN(?x`}OOgpPQ%q;Zip$+3Sh` zQr0RE?drwa8NSI3FqFHmstoodAh(q%{UR znW{BMBVUm|S}qxjln2grQ6k<+QjJuZ1dGz84WKzKJ!OuHiBj|&0?S)XNn2YR4g*}V zd{ekFzD<6FrCaNe_U&8LMTR6*(1$uP=SD{jOuU^&nz7`3Vp&jZy$Pfs`3 z##*sZty}X+h$S?rzf31g$4E&F2*{xEUY$IYBMt>7o8uPN6Q8zO0IxtGckTCStD z&HJ_?UOPmHWrrei&Hi-(#jn#pi|ZlTSrI7G?pYLzOL@g z8&q;Ctvs7jMOrWf9+Cg-Z^FNx896U$`MK{&6Q2-WE0wSt{1@#8?+xATieHbpH58;1g`%m1CCm$z-cNax15_d zZ>bG@!Go?Y9&4_IE`mCXIT3ao^i25xTxu`s)59rJKWwndPU;o$vmIhc2T=QaAdKwZ z$j`bzcA9s3`VTak3P${e888t%>*7)wijizN6C*^@@xHA!vgn#8+dsGs&=f zI!fGNE7Jgv6{|Hpfm_h`g5mc;3{r=3<6bsm}KSbX8`8y8|UBM)ZfOd&iB5qf11Ue^sGH<1> zyj)w)bjNoFS#XoV)THf?!44Fy-x&JvH!w}_rkAj>hs6s%@&iUsxOMFJ(aP>^qPjz> zC-3d*PvvWu(aoI>H}voTl781|u&`!cYB+X`CnfDG{!Cj?L#VH<2kd^O#0*-yD2+)R z&zF16dI-ihXodMC4V{bdCFNw2tYb@#feuvEa4KSKq$r1lMahtgrNc{c5ek zUXrg@z3pC;OTY~63i|yjGhm~5%{x@&k1w>x5fBr{Zl6`g*Tq-IdXBo-gp0aweZLYC zl83CLG0ssR0s{#NjvptqQ2OzE96=jbK{lhavomx9s)Ewa$e|k9NbaYqs`~Y8an2wB zla<>OS`l6!?}~?zKEVF-YUDjK<^cm7`=VieiHw{T*&^d{pAm&D?B=Gh@{2BzO_1DY z(XQSC>u0s=dTaZyCERXq9@=-;t}D^2^eTsv2<}V?Q%K_@N23vSVcl?KS;5M}l4v&x zZz|OmVO{<~lw!E(`6+0y);2n{;Xwq<`sTOIK&2HrKcb9mD=R9R-*%%=I)?6^?#-?G zR7KiQ(kBixNA|?TIsyW=Ful-!>xi19c%Sfz{CObUUgNf%Tv_QKm=&m;1U)kQ|=NnX)dmb{SDF-(GB`hI?ZM&0ij?`nFZr!|f{pzcp>-eM;K!;oQ((ydNDU~OFE5>nHg&yIb=C})1LqSB>Ml} zNp9rPrvLMM|NB7r%S%jvn`NMtFk4bj5P!rNW zE$2(q*Bz!Q$WyjxP;{I-Gj{BArIdhw@S!k)>L!$$%Lfk_<$q&oHKA8XEx~92|UAboql0+Rn_3 z5iTw+M5XC|Gnl;4GXiKG4l{4Dn!oi!7~0#jZV+BY;W%K)Yc#rx7_#PyY!e$6rW76L z0#R_yR9!4Xl@0)9a8rY8NpyVc6B5L`513UyfZ7kfSU_@!|4Tgm$LRXUzdG<=@A!|u z{Xe+hEr3UEN?^;4Uob%d{S!T2lb9G!<`$RWb0{i6KoCjTNC<;+sT2j$m|b_n2kp+T zE;vf5GTHp&hpxw+AN zhgcDrxwgpsEeJFQA5AhOMIg;u=n2TS+wI>Y#5_3g`O`X{d%c2pk+7 zDjW<`L8(vtviZyRfh@5Ofm~$jV;5 zNqO`1AuT<<$T^2Sd4MMETA^d2y*SEk2yB=u%eZur;-{ z-B?&KrNvg2rUz>ktWQu+TW?%_rKDu91bx!AwQq7_t!(9O)z#De{Y_TY^DxMPa6*3v zP9W0XMnm#j!>W7WAFQm+iJ}ktKDz|j4s7_~D0^Bo~bIx7j|o_mVRFONDt zr`_-ptUVul;)p>WS)hAtvP(_kpg6rek571#TL;l%hSFX8&tA8__q_iJ2qsLRR_ ztLISR`RT#*k+48?Y;0E)t4e5FNN{kq<6^lYEgt&&tGw5aj!(P=%sQd6XA)E5=`p!3 zv}*ylMmyNVm7#)jbKWPSZl0cpWGq`#ug?3pK!~3>yY9lMUDMtvXn%IpwiekeE}o}d z0d2^O@V5%SNH;;_vVnwS<$G)+W9zxVKkIpvA2GIqdJT?5$_O=HLKvs-R3i z&kfAK(PBlZL7VB%q=&$}*>tkM+S{WHHnk97V9Z!K^yP`#>IfDAtA*Qe0<54eM*iFp z&R9Wj#Qi_0ec%YJ+E*%k{>;U`q5ZSD8HCxa+5)?37r}ON^O4h|uY!&z-!BF$kEh?D zk#NyaP$YYMlJUw09IjamCc{Ck?us1sh{#A4dT5yWX|(altO>>(WsBOU)O(&8`t)$MfREaDyR!A!2RKRxB+4Wo z4w+H;L61eR6=<61km5ywcV?T$6KrA>W2g5Vq;!ubL8L)oK6%@=uVCH!4 z3E|G*E|~y0ClSib_+s|h4|@_CAbt0W@Kc6MrOkv}+t#cDHQRMn^qHvqmh3A*{*!J7 z#_abI+LXf=Z~8aX)bJxD+al!K_rbFHh7?cTd^r!2wpABI8R+TLA^{%SpC!hV3c9`6 z8|ns0!~byU?nH`&i~PZ?MCdH;44I%?Vtj^-bdcHr?Zg!Z{zC-sOk=pnO651!jO8qvCmy>bpz5yKn%(zCF?K0iOrQ z#l<;N8b3N38W|cH8G@FWS~|Lsip{Q3d;78xeD7B@Ik~F7rO;N3o!r*lzk`AHcU~?v zn!oviSe5-)%5mu+-NfYE@SRO@508@qK9@qx+z7@vIDAhb-t^9BwE6=HT%1sW<8+mf#;xTt3xwqbo zQXH#$AYnQATa7wQiG8%fqE~&M9H1Y&iVEUa?_35g)b5wmvw5yh`Q4uRg6HW3Rr6P2 zQe)LyCpj4fW_tQE_yZn0JINkaccDSygof|b1odLPr{{7ro5yYIBmC6}I=q{f#r7y8 za2OS+vb)zrbZS*~cxnG|l>E^A)F3)eC@TWd>E4`MXm#?5e%h~B|=zS@4_s?JU zDCl!W;v`d*5$^&6F)#sXJ$1zD1&SZ*b8#H}J1lE~L>(TMuHTt;YYG=bg@_I|P0h?A zBf^O=-lLPh`ul+XAg$s#ViJdEyf3!Cms%Kvkg)a)4l+Mp4lI=Y#XVKAV>>@RP5w#x z@`-zLIUiEcN~rg3!F)i#pzAc>I{)=631AMFb+5153Pk?m*1)?Ag-*Odww#wWY;7({FzI%Ew8+3$@!4 zq6?Siwj1F%Zez~kmqUNtRN9_M4UxGobcWqsQ2;PIBLJ;TIbRW^NfO?@dH_MZYmTD> zd4yf;7ooMgA3~E?E-s^s8HeRudL?PdYd>GRnnZ>73Pt&v7_YKw-(*TMMbP!Tg^902 zYsqh_<9*!8d`VG@3&)>QsQmimMvb|L1$R%M7l)aYU`V0+kU!bf&}Z>n?EHIjM$mC# z%uzg)kll8TC;z88Tig>zQ#hj1-@on<1?_mMDcj0pGj|%w-O_!T$a%)%$-c zPE!U~;oxKqw36!S@s%b)?<5q37cc&-?n4&S`|MQ*mxIMzD-ZCEuSz5+d2DQ4>UCy* zKG*%*+<6AjQvrXN1s1T(Lto4T6Dek>sX3UL1!}&}d-V`~$8N`t#zu)QT$l8lFIw2| zpQm{glEh%24pE`hJJbDr@K)pvTj$dwf8c;-#1;)GuC16lEGy$2q~4z_xAkKMaNiojtHRjSC4@St%i8b7DTT3(KB326 z6<$O5`TLdDyQHY=Xc%-AGYDf3xuCxu>qr0Dsa#-gjdsmqwa&m(Ps0;}0{T}9IkA5- zJt&b4qryNzB*968=cDAV4{tX{$x?r&vWRIOc&goK%!cvRYi8k++F_?@;OWQm%F@OD z21>H$d=DiD-&q7DqdaA}S6yBG_fC)6y3|xr>M%nBv5~~$;+~RAIE`A6f0S9oMMiuL zMu%?FQ)uyuGF}2EU5^?$-&JVx`m895t}Az%6Mw+_4`9h-pglN^0yrkRg}t6W!grJ*X623r2cL`l-o2qDIZe#{0YvB}uRFG$C z1;nl6R;u%9$)j?i2ap)z~|AD^^1H`Es&?Xdw3mP)IB*qhaul(8?n*I&MyLw_=BFrc!G5;5H=Ta7m^hCH^PJ&5Rq%T`2MDp2JP;mLSChu; ze=f?5f79RJ-{W8xKeP?oP_7-CMt8N`GmCqxau2JE))@dyT-?Km(yfDJ;8> zim+iD8g-)vOg?53n`V_IB_7o$u=rES)K%tQR9h#OKF5?FRsIX zxSE87!ZkO6w^pp(nDN~5t=OCD>ON3!H8eJ+xh*HKHrXAoq+Pg1|L4Gm!(dYOCW(4k z=a@eiNtj8Xf$SaiSR)M-d1X|T+_G>C!KVXaJUr$S6%9Uj)(8h>WSrnsBOdw8^HFEi zB>C5haeV%xmQU|)nOG4EU+U^nq-lQqGpwcy9UP~rSoow^#@KQ{#g!~7lfL-8*7g1#O6SMJbq5p!abz}m-oem2Nrt8 zi@ffiKg-r9f!zTL%Be|h4TAjq0tZKj!VDXrMr(JT+s&PcJ(I_Zy zUYGQ2-CQx(QPs^ET_YtW1p>&@&491^HJ)qWxz^}9?R9XIaDAKk>q}Fy5Iudp^^7G2 zMH)!izevC(ar0&|fF&w+HbJ-o3Kqih@<%_rChBPWoy^QW7ZfC^<~Dvv(^FHEj?QZK zu|*h|tVrI0W!RWKS5w70MQ&+*oe-b&<#XMrq$I=o(*pd)09;$#YO@*+~LIGrl+i#+3zyrE~LeXyDycC z1ISNcOt`U{qx!;<6TG!w1H!P^TZ!20X6M@?WSPG_d1kW5+HCdpLDPypCkasqK~0^E zxR}nu+5O?fKjpaUKa^K+w>G&%Xmt{0q9nt=5otUGwv{2OcA*;E7i$t2^ zS8e4RCLDPE!4mT{k|@5NMtbqUE?S8b8ZDc&;(o%%$E>l7o!gf5P))U1=d9`=Su!NU z1h&>T=dPD`W{VR6G_|mj<~{FcaJ3?=czSx=a5P;HBHg)ln*H^o4URt47I5%<@$o5t zCkr^cL@wK3zea>Ef6v>D5v#{8QM^o)N`FUjV|D7R@n~A5rlvcQD~X~6nJsC)x?JnH zpA!{!U)cNShr9|}wiTf1WrFUr(Jn$ zH$HLw5&6|01FdCwo4fi!PHQVQx!dAx7IzGu#EZ+btM_DrbpU}N_zjLhhb6FKfLgR0 z&OY!KFAH*}(F7^yD%!tFqzqzI&dGUCW;ta_6f5Yk`1feWt3y~6hM-`mKw6X)1^HaI z8el=%DM=2c+Mk@>)Oul;qsGd?FG#B<(@K@?bvEGj4M%JR!8_J z`2S(<+JVV2b%s8QDtAqT}6SeEf!8{N7`5DdoPxkl!{K@D3 zQ1R|vM~tE%?d?#A8)y$Ah0CzRBKR_-fzLTqExp-F?2@)Y(s;K-~!~dBLy+X}Bge zD-RDn4-cGW#-md^6SlvFFb8qk_CbcpORMujv&?-se|%gsB!k@JeCNX=er@?4DEw!9 zd<50tx*ki8=1zRJ4NBzL*Q!iW-SLkdCx3tGS;h;TBY?HA8|}qr^$bj{DYWN)j;aMq zW`L2HjL&oN^neOsOCt8(bHf#MI{q;?RsULAkHGTI9FAhcg+Se#93>0RESlU~(Z&Cd+ zy2EiYbag{S8DEOX_-lN&{Z)?L_2*#u=We^B^a0_Jh>CplViB*v`OeuDSSYt>9No`0 zE6oA3D{L>oL%)*qUW$BctCEY0wXq`EW46I=PE0bu0c512UZ+3q-Bht=M&1SnfQmiY zV64(|rs+dkpLM*~&MO1aIe;1P!}kvJMV)5d4^gS!+s7W%nN&qb6nF0{Yinl=TNE+R zAb4bCILMkyZv2)J{o@2=Hq~RxZF|baO*&|Qe-G*b0{{W;>@>uua+=>kz~_E7s#j%4 z3t$>XW=6NuHCpa7&%a;S6xcOj0PQoQ*T%L%#OXG8NAF2kJ z1-d9U#bZ>&d!os!FIBkq8<9~;z5we;V52He)WoU?ljncQE)^=vPqM{u6 zG-SbJds@|WD3J>v|WeA$JmSJA)G^W_CD6 zPE>l20(r))jO4sNJU4S|BnEl($}JbmBcMb$+TE{nV!YbT zetNTZvZEt+?Q2R7lw|TIjwZ_isUwOG4rN6;A+;TMii>I@8U+L!1saiAaNUj!gN;T` z?rG6e@Z6srY~vzNyeDj|EjbgOfk*WTf=$BtBj2YCQG#8wGA$0`b=Hmo*0Jk_XAc3wW`MpHQ~10ZrJMu%U>ZDRJdk!%fC7ovW0~o&Xv=3Ol1A3|3n<|=pAUa5;A+b@X`KGVlh4WD-loN^ zAN2I6V0659c$TrkH)hl@Na$29EhFm)Yi0cTgNqKF0`fViZ1*6&>(mSZg3C~0G zTMD|@(b4S`BlyO~(D4imI zJ~VJo^XiLO)>nQtX);V{^Ayt%$ST79O&9Ao)hbd)jBfhegeXUMIMTcQGmi|_f~=Zi zV9tTq1KA-OSt9u`6l{~2V6N4$wrh2T|L&xW;y{c~W{I@E2Jy?TzfuB>#~jVgR|W@> z7O368GepJC{vbVVa?A}p+H<$(3Uqx^e7@X5!oxKib#2S%>qA?|f+z0A!+e6yiQ186J?ZQ}5;gy; z1+eq(JU7C&w7R+EV7eu0qw>g~2C1p5(@d*5tvgL3PmeJ+d99Q3(?q3<@=`^_fSsyi+RG$OpL_RydDt_Y7hVTDMjFc$H<2 zcK!PG-f;u2)ahAU3!a>48JdPMH7xVQs<9C|3-Z?STa%~-XK#C|r2J9NRB=T`urM>H zSoi%7tm3tW7)(^SG{qKQ#KM^G(Mpi7Z;|q0N((8 zig_YDPIkdsOZ|-+Jc&I|POI;xEB)3~Ts{|v-dplnE}8)T?SXxF`iJ~=Vj9mi^3Z+f z=c9l8z-%Jj8XtS7zhiASasQoG7dtaWxXo_q_i*#c??U&j+6mr>=$G61|5bU&muIc> zdC1&$I-J?VlJ6~vCUMV(6pPPslypt$gEm^)T*VZqL!~mK3=+=hW=vh^0|{`Q&m()2 zm?K%<93^knXe2ha<$A${_F~(Btl_XWyKi`$BiO#R?tqddidS82mW;=CvV3IVD+=wV!|{t5Guj)vWlHd5^7{on6T?QF$~ae0eiUyV~DuF!7RFC^0hM7;7X}WkyK8`r<5~qR>%Rs9U0U zIghpJiDA}P@@xG-yD^qThbpQ9+whf3?v0C6961sr&IBQVjusX^Yf8@e+!;fsW!tu0 zx->e#*;6#Hm#Qwd@TEv_j&k!2k3yyfiD+H&lOLwz{CRIP{SEyEd1K-S|5O_4>-!!k zh>5pqZq+svn)81u*PiabnZm1|{i2g~ue^{K6&1DA)>-ZMGNm~aeUN$L9ZbmzUDLYc zqCS4Znq^lP-Pc#4u#x1e|+3@EEasyiTQ-8Z))XO$K;&d<=V!{${QNrEl$)0h8N$m4+ETltjU|JNsB*z4GBnoRESu<_=tOPd zmm^4vv6VS)GQFazNls-n27-$lF~SXMwMxdhhFy|MO`!NMZA{jpHD=$=N(x;Ab+tcj zL(A*~|00}wdxT8MhqL~mU`Eq2sIPt^USlG?%_E4T?mq~b}j>+&0{pvSjHAH+f7!q@?p_gV$ z;&faM>OA8Z9cB+FQFa4JB3hlJbY7tQ19=S-(lU9UY7^B^MHyG9?XU<1C%aM?mu8o5 z$HqGIHaxRYxP|P8SK{Q0MANL4epQ*BP3D0yis7qQg(Wp06hwl8!h%9VFnssJ_MdFv zzxD;#b*wSCwvO{+N0jin%y*5D8bI7xW8tnPee1E!kr`a(0~E>INi#}@y4OX|3$FQo zmzWThV!(%I_PFy^4WnjJtfSs7oEw#VQ{cecoD5bs>R`h~TBXCRtYdj2f$fMWsp$03`a+{iuRy9OtAOG=`)T%LNeRE(e2v%~yXSYz6a{*-$F+d|z9f0_ zI$4GRzkeUtU03JjiUs-kQ16iIoX08;!IlRcpae4Ii}O|;px=bleK z%Bj52yhBbtx3Or&p2WdA*(SQf&OXSh(}aJAbocmfgioUZ8sS#Bc)C(|%8`yq z^sC@IQx9Nh0E6bEy@Ps}Z*OshkA07HYixhMypL5eU?$*s-2WSj{cWH|!NxL|X5#KsY@;+;&O zRsRJ53-m|VFwpTtx|5Fj8{BZYa8dZDIw-t;cyM3+y*QdPn46qv?T?J?kHkZiR8?W% zV!D-F%Y6p0Y(3lKKVLf1C~r`)QR;7wyA+P53OTxi+c@Ryx$ya4aaW1A>NKdnVA7XQ z;>LlRXsB4{N$w<10FQ=&@VY`IjU*lo7E>!5lAMt6CP#agMjorhiu;}pw@PdozC6*s zM5dI;0KO!eXeo9pYAI7|8B=TNWT9$wmO4_k5Oe#${la6rY42NT7gWuvCAzT8)O0N> z6&<1^2nFD^l3l3;6E{aU%yPcmcsok|L2e0nRRqkM`>XS90|NtYZf-z#<>ajJxw@n) zKM7?Os(xS5|NFP=+6!+0EuegdA$rk~B_*#L^7yJQ>zq3|p1v}CrRTl$5sR46*Z1=e z24SD8i?b_o4tH#IL9@-tFVs|2W!24Bf4D5)QwZzo=rG6p1brAlI7lkTp?Y`TLN39B zjDm&%muJCfp{#IP@z5F-6*cf?eE|9cTHwvG)*ZtRaCQTOz0zt73u-Wi5a0&hxOMAt z*8fT&k&}^z*JyCD)1fxG3%kW07|?3EI`;cNq5u~h03)cMY}bRcvMTmh!y7SSb=KzO zF|g+JNUiDh)vq(@FjB^HqWB){81Kt-TwzaJvI2$d7mfRayXHgWVTv-qqk_o;9B7*p zRrYJxyoD<{0Hgd|mTz(DKh*lI^_XT+Wq7#xYTL)-@O*4dgGo|yblQC{ye*Vs@6hIE zu^J373|e8w=K7eKAasDJKLsyH0$r5N{kgUX% ztfaPzgvT5vew659w+*=yu~UNgR3J)a<0ShoodPMRS!8uJ&kQb#NYQ{Dqd;f~|4F;& zOj9El7uS$!Hxck~pv6M*y~YiK9TH7w7=)# zrPKiW_Td86a1ud&TH|;yu_kZxBAgbLQ0f8{Fk+WrEHSaqEmX9fPS_3Fx<27EPq6u* zG@_xpUq?jTBu`GAw`=P?N|_$v-#kuqZ@f&Yv{g(L05yqm_v&Nq^iC@wm&?f!y=qMg z@%uB=(fl7RHpi=>Z@7K$9v2XH{RiT`9j;12WxAWAmMZK=Y__&Qosjo(gyXZ#ZB|y>yl46OD)zU( zMqWMIclQFSi}hy4i(0H!Hg{|4QYP8w$&z(TIH56Y-0L;i?zfXsQMm|vfO7u2c#m35q z*EX**f5W?k9VKI;>gXsSB8mqc(M4U|-T8U>M@EOoBuZ>=NIr*YEnvX(*+7+D9Y!|I zClmcahUUCt5h5V@L*UxWGd#FCSic#w!~Q@TJ_LwF7s+{Q-cN z2!W6(RUIA4p^DsG@WK}6=g;SgQMm;5z9v3-^Mm@bL`}OvGcD;2r6B2PuK-i5ao10| zq6LrNz`s}rOw01JuI}@utL^2N0iM7vE0UOfQ7~LBjsrC-stMlqgHddGG!&+;M0u&q zfghUD>74IsseO&#oc(gjr8<5;Me`HWFN*;h${P|?nw0v)cSWZy{t$#q6%9-hWNRra z8}fKOJ<756($>?n<>`=9!}i)Flj}Bd)X<0ve*zyLBy87UxfAW|n<@0h3;852?R-&} z;!20zT0!?go=%xw>=UKVbf?zP2-Bxc3ehdG$6m@?#9aL5vm!|UeQb+L{>=@IHzJYz zudT#9l{q6?rEe{aN!nZwOMs*(pd9IE5n~X2`#u#>GoduZUMi2Ve*XcYP9THoOUal> z5JHQZX!6FGIM7(blkm*;(T$e=wx0d%G+vi2?MkUem}go%ef3SZ(LJ1q?+#K(mJ(%C zQZ&E;E8@5DmnXRtnHd>IFY;s@ zRfcG}6m@;K2RH~*^)o!06+!Fm)bC}<6PzHVkjm5@?bl~pePfJbtA9mUhhogx0pquK zboAFT&mL>S|uj7iyHB z(bL^DOH>==s;q>A?xcCD-g+>MT1L%)orobC^-HD<4FP6bmaoN~A??&EI(qYHDj7c- z>pM^Ocph>Xa+B!`5gz0%8g`S9v&=BVw}mxzdnmk+rTx`&5V;1Y9v5j7D$VAlUx zgLf)0CHgo3xdSLY^CyA?MH4u+u6ak_SmIFO-^fz;OoV|QqFSycC} zLrgvoTcmkxX_UszU906Nxod@nzLxqbQ9O4@XU$4q4SkI?Y^-pI8x=!9BDi0^cIx(5 zjo7x&WSD+V_hqb5|3|a4M#}k57xbeUsrx{w)78v5fO^LKUxkploDn7r-j}fM1 zYIDC=ZlnKGll*8dP{Uhf`7><&!?OGL|LA`<%!5W$*l(I;(d&^g2XIkz;8D9${YNAc zsVd1~VTS%D)(x+y80!}Zj{d1mK4A7-yDE#8`tsh1xms&fQ`Yo<|I5q4*Fvx9Zctdf zT2$~7+Hk+uTV~ZY_U?1;e_#DG-*{3lNjAse-Qu96AVY!!&i}qyXYnUAs5i~fS?_9n z?5;ZH4RI$CYfRmKE*m=copf=}W7uC8AwF|TWaj%F=buI{N3O2~~x zoAgXoqhi~;=qQJiIYkBOUL^lr(Nlk{kff@R#>+I5s$0J|P=#-k=<8a}BLMH`KjJAt z8CjlpyJk~)3nRlEe{2_La_?r0#%~7Q;2TwbZ#<2g&sPYEBf5mM_kh5+*M4vr@C~&UG@^gF?`K^+y8-AY{EOy6t zbJla6&m7Amxc>XO*T@}e1><{6!ljf!w5?hI7b!?!zKnba(sNHw(dueP521RJJMo3! ze>FZ+sg3yWX= z&lZ2{_v;^ILAoWZjErAd#xr{z=m$wrkybWPz@%Z0T#hlso~HL0T{S$Ql*?=L%1us?<6&s|-6j))J$OsjaCA`u@r)WXp?8 z<0>>F2lEwLV7oY8*4ZQT`U0DaLskHRi;FGxI=oQ=xeS~;#rFsf8B}(hdVo^>V>i>wd>XLf57@*Et{ICxg$tLRw)kX!=#wy#H z8fik-t>J>v&@Mgqlk6pnN|FiEH4}D{DL$w<;hvYFzk$608xdFJca<|xWhOLL0b{3E z4j>#ZOL(N4_N4B$t)$s60qlvKys?7c+D(HPK}W}cV2eiV5_^FUtkn`Y&z|OKlv#5s zgizW?3LNa;Nmn{PF-^;V`7lDaajV`oBs8=u6AGw51tk?=SIFJl--jp($W%No?_>5_T8cX^SzuaXWNe+EUx2R52f(cuzUiHepfTQC26Szq zfD22{>0duTc<1B|F59W08ieMFszU=$?Q%=~2+~d~&{JM3xDcnyzJUoEE zhltqNC`@p1k;nr_3UG;bc0rQQl8}~}W*1e}<@`}Khj9{ijxM<_U1_}p`TDR zAhR1AM#}$)VRW=OEo%x0UIanYr+OrfTBZ z`}4JqG+n(~hrJy6k$@#*V^9(!v+L`o1%QwkkU0Z z(M1qK!fUTVefnQLFaknXUoE!P1D>M7(KQqi2K=!Pgu3-67f}X8DGJvSv8d1CjVGt4 zs4al)RMg!IfBCR+{5WJAL+y{;hRycpJT~kBx zrNo5bmi67(>p8`0XudBWw%QEgv}^=o4sx$9zoC?IXCW}* zh?$jDjXiES_sA;+MKlD(x{*JwYY9=x%`a!PWquXdX;gOqBP&~JAFyf9(67NM4nU@= zi@OgC9$M3uXy-h_1TD?Po?g?yLTiaoLvN0Xf~;EWq};ROoZ1s*iN*>)vA$~TlZqNx}{ zJ~2e+Ok6JHqsXGl-bU}#kgV~lBD27$73cNdAc9Rf{lr^~st3*+>VA|KmX;9kQMc&9 zCwwy?G*sSAL`3At5gze9$ss3k@zz7@s#+7xq%(+D8hH`*PfY!fz(gEbf0Zz4fxSJ; zrl5omg|R4#sIR1WrX%0K$Km+(+$>qY#p%~r=wj(G&4eIXgL-IcDnvwvI7OpHBK7T0 zT1FaM$Es~@#l`*o{aXzqga;A}#I3Am9vi+u(FeR8GZ_cJ^z#8O1QQplno&_f)_jFr z0=%)Xz)tF@`i_Fe`)(svLc=(A4ig6l4e|flLaQecS?@+f?+eq8EVINMa~mU@KDOTB z+n8@r-$Z7ZM`tj#@(yh9|EDC&l25`wL?iL72L@5=h*9Jn*~fY*tWV-{lDN|u5@}>n z5#N^E$5qJ%BP-OeZ+(Vm0pQ{8;!r%#mYm7wh0^*Rzfn{>pNOnLfrqT0n) z?IIF*l&B)ltgKvJ%Tu>zntfi)BkLj_)=JOQ(GfK@H69+9CN@eoyUX)y+Mc-d3D)?{ zaJZper`w@m45@SZ)`-|$PSzf-2uuGhtMh+nACh67m~ryBREYD+Dyw1ZQRW`7)YvL`8VxDZ&fEPK~XPHKwb{HTnE(0 zTim&Uwov%G)rxeL;n>yGwCG=7a&SxgMA@4SkgeAHO{Zm8&791eRuCfv2{BM;@W;if zs^~z-CzCG1ix&p{4LVsmEfzRD|nEA$_KJ~FmQm3AL zmNR_zWp1E-?ETK#Q*7BXCM+f?_J4P}Oufy+$wKSFjI1Y*Z}ME=wv;h-Y7p3CHr4Mt z>FRF14ZeGJq_{C$K*%$Shg4`~IlZpCi2+LA>R)9JLSIalYr zot-A!ygDcSi7ZDnrgMMpI>qHmCp{RkDdJ(+3U>u)@#~svQJE$}a-#Y1`V`?sI##sfk3^zb3tojIf8@rIEE;aJ}BrQ7<^B{?+Cac3F@OfqGC!*Q_gBo)&e!`ob8ATH$en~wKn2<;W zTNbq|8o?HpxSGfz_Or9MpOa9jPP_cQRFbapa2P~+M;9(LolB5*r!WMCS#f^8Mb8@5 zqeqs9g$b|K1VL+f=$WZnaB-Mq+jOyfAKKAI-9E3|D`ww|8rKLxva|oKYz4?q#tI4t z&d%op`7iTV;#iy=99|IxKArvMvJZg3G(N9!V3RzI$y;APdCMwLpxS72RDTJUwGyv0 zyVBLexM7_FG7WE{MJd~-`t?ac=BU2bA?7!kp0Z<$N29mmA?Tb5GD^=fr)j`@dD`S6!C@M*z~?d}EF%m8c5u{-xSjsum60l{>{auC#tXEnivliE{Gq)Y_96 zh%fQ?r$%6UwMn-&dt+nh9oC%FfrWAzf8I+Vex{+c_+0K$2>G!O-cXrhHc*8wOP7kK1L8Nt^m#-5MQBiX#DlH{tZAoRyfozCr_jP6)x0T`);mf~hRlI}p zi=1DtOHjE|AIQ_z(B_ldm7R+ zwMYHY4jmBV*|Z$agUn93jO;!rroGdNHbjo@3m9h?mEU;iYqG7p2F3$sqcS$-(Ta7$ zw3!T&&tXdy&uJeG-$_qCAO`*=eev3#Z>c78ZqCg;*V5{0mKBFvN6-b+hCDFci+k;U z^%7IR_A+6Y>UU;$cN$t+uksyBolvXr?;ZcE1$a43+8T&!tMPf@vuRKAK#IaMo?CJ% z+S=zwdOk40Jxwr8d#Wf5{zs~hatredph4y$>FE=`2#TY1$khpRsk$Ci8CpK27G{0U zS=yWFZFtdpWt8`_ZZX01RR(lLW%+-;1%&1Qe2DzrJ(PP!I=j8yY}6UO8o!F8=jD8K z%L%rnK<++R?!&(-(Ki@PW-`fLD-w}6hJ(#co~Z&9y*K_}bdhM%i@XLS53 zQD*1<)UrI}Ym}>YvnN=M6pn$OiqyG}!8qVwNR5kmXu#V*r_o-!cOm93E)kKD`Ux>H z3b~J9nfU2biw&2wbjR=CO*aF?GM}58m;fsskSoH%J~o?`mI2%`Z~osx_^xFg|7UcL zE=LFw_!wBGsJ_}P5%1sIJ2>PQ74`g(sXkO)ydByGBwqL{i&TL*4QifZ9eKqe*tXX$ zC61FMCHReOEkgo9rK%;IRcL5uymDmWQidAl=DNDN9;iLLy_MnP?Ym{{O_OzPP=9MR zc|y6nzdfZz74>U$bY*4f-?2Q^9228#W)@$N^hol>LltY-)Zr%V+AeJm%ssCucnhaz zU0TWZ-`muiA!~2YVjx=r)VmD=jT?twGBPZaV|>9C^=$e3fm8@wcNy+(?x-RIl^G2U zlUq(BTQ7!sVa@e=dzw~_A?rn+Xh}(4UakBz8HLwzloG@75xpX{%VogOMTW{>L)Ujc z#3&MkI5ez8q7HO-qlBxwh(AHj?+wwi9?6*XZ=s%Qsm2rdw>7VZfwCn zph;ajsN4E*w)Xz+5X`=@2w6fRBC1&$Ai|tJ&C_aV3#eUMrFKygOv^%v#3taDOXoRfZ&n$wc4A_%=PK-n4`>I06tiXo4Qfqe;SXIjxwe}+2hOjMi?)bzX)QoWltOBPZrS&ejE4SPrmRtQ|C zOD=kNX1agKtf)y!Ny2Kcv?M}tPv+*v7sHO`>AxQj!~@i+piZ8Heb3r`|EXoYy8WK^ z@N*}g#Y6j|znaeS@@6tY5U&6!OFiQs3>cBf*N5G!&oc|VP8e~{(ZAa-bj&=toc?z* zfq5O`<@W4sd$+)(a0WS_&cf2w^|w{5H#gr8Dys&5-Nsv-G5q%Z2K*&k+D~bF_NH8t z02~foSu3MCqJH=d3$&{1GkUh=!@unp=oAw@cYoy_jg~CPUG6Q$z`khO)ll9+PEO9@ zCIT)VaW{>z_k0|IUSX=XD!@yW>nR*tK$41Pc-X1J$>riGBw ztL^3q_Yl=QP&`fYg<>4tEU?v{gjs_5O7G@a{W}lQo{vwuQdYWCT)=tKcy_pKwDMQ( zG=NYSq@oj7eV05lo_oXhN^H(eGNm$!llTvX6@`X9M@t)sAkjzR)vI}zB%bD-_C)X! z*y?&WDN(9796wHYhJk?KUe9w!vPkY4as{PoC~MR2CTlGh{$Q6_WA{tHYd3325s;Ir zmT0PIX+3@Z3;LDR=wvFF*DzDrI@>N;vFJ_aO4_^R{J&-5=hMgikX-QQKYoSgi^B=w zt8@QH+9#(EzsPXf&u3A;i_mV?MMq2=9V@2(KZN4CPh)2_%2(``)f>N-ZZ*1au(PA1 zeuY@}j_~_4sWTq?Kjwn((jmSQOaR2<^JyBZO9ri?a!RIjEd@Ksr0)d3_2_oJJjn)t z3wy#wPxbVnoeN?A{^HrzLYk;88O)fD?UShZ9b+l?Y|Q&p(u3l^3|0@u!IAQMtyd7I(W6GZMeLEvLPEoM@vtC zbv_g^QgR6o98AhvWCFi0QCwCdA81vB0y<8w=37`8b~M#?n)|;8_KeRJ88^4zJ||oD zFY5p-yBkP#U($Py57_s)&xaI+zNDUa$j-r)o(g477i*JQY#`^w59)|JB37`;KRcuw zPD+b&VPUr3e6mf4LrO$Q*w=^)H~Zix(JnpDH!iX;<+<7~?}NnKnI?O{R4@Xw=Fy`h zUi%C&7^=jF-^H_~{wL5TaNK}qd`TgA4EVn0L*Ue7jNbTL?PC1B|FMG!SdScsdO zo1%#14%kc+TRy_(A^CTzp4Z}!ISmf@ZJRGInlIha z)OabsbTa8EssBjmM)Bo&r`4+G0r)PgKFO>l?awcr(UBRmd-vqai9xXd^D77s`5WvC z_MREf^&$v^TUlPzu753`_p(Yj6n&7ERKSjsiPPygD5?RRJO4OR4Uq|*jU8qy-Vj=f zgV7p3RfvMf_rP}idkqZ=<65)TFJT72IS90kYzkGh$*lX#oO%BzL@P_6!*LEJ*e`<`UJ806b< z8*Ql~g^iHaye}Qr#hm!N!bjlRymepb+vsRVTbl}1loGz=osqBX_1J1%ipoELNPa2# zXyw~F1cw4a9vF@SE6e2lPbl?mfVSmaH<`RaEgg|6V4oovB^Ajs2T1fia(4z67KLIZ zySu+2>-ZJ|hsNs5ubp6vjVDnsB&MeIeIp~kGOa)*yDX)jN$m#;B`4Dc zB;Hu7-UvWNN>f`+#%ebe;&Za}1?P+Hugi-plJ|~-bQT3ET=_F*##L{^5hdeVUP3V5 zeT9bH=kd{1{EPYa+ep)>Yo+y7yxw5Y+xxmU1aV6r z)5QbP_ix!ncY;0xTA_u_;9^RvqgurG>hkCUgtH_?nj%yL9Ub%n2aC$fjJ#0?jSAC*MBz97&?5rzF%OIeQ(*<_hzyPRrGG-S8_(6AV-H| zr{AB_+#0#J(bQ#Q^^2dM7io#2mTo#R$(*v?{@!J2*~Wx_(-uGR{pL*H0QEa+YAWQD zUh`%1KIxE_nI<%EN2Pa>^TjtG}G5 z3l&S=N2d!AP+(62$4wCA=R%Z=5*5MK!Khx~YvJ(&-+DSBdH^zL%N?iY7f1nbiKV>d zj>!J{%(hScM2OrPP=6L84C1sDd)tWb0vqud^6B+$o4dYOI2$QTU+c)!xSK9qq8+rU)@OXXeGN!A=fgZ zAW$k3LWp41(orj&c%33y2;@)*s8_+rIK?RR*fdNZ6QE6$mr4oVU0!DV_)46NlqEqnr`xTO1YQ<0x z;5f~v+-%Rv*;VL@r%coN@4>K)F_CditA)g{VaS*respBWAFdYaN~Qn;)C~^M~I~|4#L@sd%<*+F>sF z&Ti;8kMm;g1RI?nduXZlc6TolNQfC+f%Oz(1Z+XLr<|ie#x2@WQ z^UVH4xT~3F1@D_VzPtLCD64sIe{FGJ|ezy&)Bk_v#BH%w?EOO9XP^qkk$HyhyK}@XI}t;#pze{X-e(4p!-u^oPrzTc+~Xlr zG8!r&hKd9UQDxyPjIBaHox zgF!PcJY`MH{W}L`bk{U*JfL+jz4cvAU;MvIE9dij1wjd$pN1E+=}mT3_*++%!~7*V zE%8F7T-Q@4-r)pNx-g-ubNL(?o=I1x*oveL>f&vtW+%&JBGnG%D%7FzHrq~cYmo_OML>UCT={=4_etB=*>0v)V zp*L?FSGskYy~(a#j}Hv&bke7R#_;s=-L}j2`0&7#!;Psz|NQj$EjFk(N9I@y=aldL zOGr*PFo2gq$AkSUr|q=3Cs~og(T+65uGi|j?PgqDtQETIfWWtJ1K%RPuCad2KpOAAp0#Ea+q4zJ^>6MP@Jx%B_ca**dP3R;(>8I7|; zn0sGbT%hPfYMAxnih$Rjmtz&|HWryl1?!m+0zb+ADwHrfEMKPr4JI-DlpptQ$a{0c8cW%4HJe zUKtuj)hx|LGmPx2RXFo>{w~r=!y_g}S@hrO6 zb+L}+p{1bfDm;o`n92P3!)2TN^eMG$nXR^ViEblIvkqD=a3dF)Yso#q#0|&jbhFP@ z<#vO|?qV>8yuUPSgs4Bpqs3jAhc#cG7Ti5+@NQ%PVK?Z8VT2?WwYt|Qw8_1vzE$Wn z&!1wm^m7z`f$XZAIyNTp02YkX(*)J*P$ALF{5W0BCI|=zKqR1!G&N5<(tH}gBfcKL za@E{;b}Ot*;2gR1vR#Spn!X`J8IwRsWz1NCit2as^GC6~dlTcA6)Z0URq@rdo?B`? z*SdG_%Qelcke?1;)cn{{iP70RjZ3t)8=Hk$YA1VX(Vu-g+PhBEC%7GcG=0>#E$9}w zkhBj8wSpJ>Kb3P8_}(`StEn`eZPgd(x#xA+uGBh8_6gQQ^h#s3i>!HPd0#QV{drB} z_b(sE?}xUP+0N*8RJbqin|Iu#i&<0jIW;U6H-KzetUlqmn3(d{oAn1c2Zv;{!5A)sO6{|d&TFvI$M?@2oVDga*xdaX7~oVc$_v}Q@0YTi1bgX|q6_5|$*KUn^dG}$i% z(mo|Wff3dHq(qRPvvY7rn?M#qc+szQXr}gIHpfS2jzILKM*ZOwf&T+qzJLF78l+a! z$ojbM28Zn4M1F>@>uY#ko`)=T-69nL$?6l^tp>?Z0{Le9I?bZ#x`QDY9e(T2wpaSc z)~``Y$GQo5dOweM7S3Mi-G0DK+jcc>5-O>ul0CFGnM<^>oJ)%ddAWehr;GVg*f4oj zZQb6TfJMlJuFpo|(`5I?<64RWA@RLzC5As1mi6{3Q8hKklsZb*^47*n**bYNP>RuT zR#fG*?{s4M;oZIsP{R%4(RUD@R{HmE;OXhELo;2gYTiqD5$N)JdgLKSXBvb0rXL=R zXGlrGd76}z1R^2t$YH@SDMOGW(+W!bKYe{=R8(Ks?*JlQigb$ul2W3yFn}N+p@0lX zcXx+?G=d-^Eg>NcC7l9)N^%&ahVJf`csKgqb=UoJ=L>5gGtN0@?`J>pi-cq;kc%U^ zp2sOc@0vIzDUs@AmqK=YAJggNBC19RksO$$Ciu@ae{{3Ik#&P@0EQ|wzWbO*UL+>Q z@mkY{w=9OD{QAb?2Vh7fD!Kh!{(DD~BYKe;W1K5w;kqb+FG=a%jbZ0b?(Hh< zP^(6XybTS5yb_$378ttE$4~rTXbe8t!bwjNJ&ddUz{elM{5x7-){vV<8A6&RcTFmo ztg0QkDiyUu@_cM@5UIr6_S=z)>UK0H5!6TP-6Y4Tyh2Q{`beF5Rs~gj7^#pIA);hr z&DeuMu6=<-e{RcW_0<=Tds!70f(xn-`$zUGYJ!(vY+U_VUaNYc>)k0E(_H7netH^q za`_b-8yjGOnVIMAG_t=}ysyDtL=nmQ#?;nkbQd75_e>j(NTM{69MA5UIAH{~+mLfF zM>a?GEbWJd;i7fnz;v%_F66C#r1ZxxU-H!pKp|3@XF13dCzl-_9sRmc2w<;4B%!Qz z3kI`>h!3Cf0^gQgx0ok`_5mMFv?CwilmqN&Y@nyST)p#5T$d0y)`265pZ|M9mQUyL z@i)+ax24ZecR4QVBm!v(k1XXh_|s2%AH;8F$a9a9!hPKVq+4?5S;^=heQF@4;*`qU z-U$bDn593dJG8?z(M&%rVquYQDii}v%5>n8uS6Pxt7I+zNW_~s)vABHV^A;5DOvj` zCo#{^f_&Ltx`>#wME+~r=BJ&-*>2u6ju}yWk}KR_Rn0WXu%i7TIGbv?IdpE><;mmF zdm~2OZgdXXPF8!*ClkV(>7*2}($ff&0=V;h->-SlUp=OOLmb)ZpB{rF(J3l?Uo8|Z zY^2Wz(M<^xHlJ60sOb~#KOh^6pU}5u=w-%{UPt_~Ur(6i^SnD;ZM)QDKbe|}G(tAz zBUyN8r}Xr(bQDYa9}0W(dI{mkd(Ql&R{WUcTXV}9@@4zh45q_)9F>a2uaXFFBaNzr zxFfS(lZrS}CvK+YJy3}4{-l@yf)T4)g-e@@KoAwd$7lWS>C;5JSG7WN!t~-kv*V_F$v^6OkEf z?8U!qVt~Z;aitJNOMEx`Hji|S4G{idutBZ;t}NWcgsaK<&#Tv6rNtqG(+-qMx2A@cz9C`-B+6o&^lSL;f`x_ zyskVw_%yNu>8O%?k|YbkRW)jd4b$v7^5{(1(Zq+1+66;wM8dDrp2bsR$?T=5)j%2S zr-G9hMSQdFz2BiwJyGqOf(`M}_5;rzb{>*X zCV$X3Gd%I!WM6zIcLji>1*%ervMv*7yaGA*u_WBphuS`R5d0n*|BxL2n2bKK2Cr7jvSUl`<4;mAc=c=1DQVKA zGAzz^+ftG@(^kk7tlrF5?27>=WU}28XTSCHtAi~$AzXAH&QePA5DFgN80Xl=E||H5 zRwO8rD2#y0r&|c*_|lVao#-EWI|u!lRQEy&lxxoJzp6Y6LTd)xyX)vqq4_puobjpn z`62nmjvxaX*`kq_6mj^RN_MggV`T%wz#p$kED~`*Hs8SWeH9{ zSNpBe0giDyghhZtQo-m;Zoh5^HxTc5&A!NAD;L`%`{SE);$9VJtr8Tt&MAJw3~0Cc z3{%5|%Tncf$CQ_YqgT>xCG9|7&pBE>vy^RZ9guk>(C5wEaGr8F$wy)CzGws$Nlm29lM`&6Q*>mJ96G&nL7BDV78Yd@6pt+rZM`GV@fCg5D|{jtmuL!R zWqjMTmUG_~wR+Kkc_ktBR5qFNzM6{>V{1XFZ$xF`hBFmPMIsm#-Gv2PVE7ato-N=|N47WVqJmn6<_GCf#) z2z6XeY~d%xN~MQDmp)Jl`t|OpA^Mdfi$UcV*~oSier+z@z4{$dwKW}e`&$74RXoF% zWDo;##|hijmXG{-j}Wg}?%#nNC)SJ<@iCRq6p(dA*b<>0V+-XU8#7gJJzcE%(DRe> z%+9c`?^$&jcl!~$Th}~4h9WgN|1i}f$RLN_M!oy2geC?AGnQ`K<$8RH;Vo}~Dp3sY z`mI9tH#K%_5D1-v0_@qV}&d2>)gpsqcp0hE%J2s!vT{6865(Biq#E%qPMSSGCDST%b|0{yG zoFMVPBD;Dg&LxM8@ezvm%Ka&VXTqHUira>8xJA`BIAvct^k;)Jm8No_($Du$A5V&N zvkGm4GNWk&R*&@B6;3Hf) zL8DP9+MN5Y1rtK^a*t1S=_&Qh5A06PdS^*muEBzdwmQ9lR++eCcE!kqQ5ooL!lj30 z21@zvxi>M2raJWQgpqIL`%XU+5ggmdW|3o)((Co7|gF6 zLBjutPy{GkKjR?$fH`aUE{=Fy=hOWP)f&Ao@zQC22n!qKX~!w?T_B>u%F|Wp^Sq+@ z~9j z_07(V%kGX!OUo$OGI;>$!Zzs;Nhn;R+G@Cy%3ev_ld@)sjqb)GWf*Lqa#AGuc{B&< z?b|(JuvsA3AS@NxnWc><`*zgOUE^2$AbTF;Cp$|F*4@8%Fn=JQ&!BH^WU#>_N8@g} zX1ILEyp|T$PtHGT=9`CU86}-~;*g7Nn!LB;Br&qFaG4rg*PlrRRQFb1`MnUCPLHN1 z_`0obzku+BJSuC}NKY5RMQJddpKP^_crcbY(_lR1qIvmJT8$n;^330Z(Cmp1r|K^q z_l09js;8X~$&NfW1;F*<@ovdTKeAKq+{ZiJ66z|D3L+!Zi3+pSyT6+;j(As3@b;8q zXEI6wtMrU`lPj3Xz{j63x>a=i)bz7P>$F;!>kKd_(w3x5advFDqk~L=P$3lUM z-Wb!$?X#u+EOhT%`dM=exc_xXZ{DUDxh@O{%kc83?YL*z2YqY{tz9qzM)Sh8d_ zwR6n98z|#uY^DqUSXOiOeZ(m~tR%8@8MjG%^hor&9Jl$B{N>wFGCnFYEQqJjm*#@X zYR7;B!oHZDpWTWVUgXPW74B_a1wS)R<_oimB}4W7qU1Y4M%DZLU3E0FJmVGy6?uq( z&|%*btr^G5{|sQ(%!*I+XA<7P8t^o;yN4(0Wgc`U&0zdotn51BT_DDlg+UJc*o)oQ zS?-WQA}cFtdq>Ww=)yy*fL7Fqa;wl_^(-CR^%md1{M-^DixiS)@SuirmAC-v9JiS+yr<1|*_sEVO6QW?S;qUs7u1+){+7;CG6M?p| z_$1f37Ad{KVPRCc;bC1t;7(qPUf57g*WrocJLb|D(kQ7&>yoZVd2GYCnOSbu0?WSL zxC;5G@tlJaeQ-e#$N@MH(@R8{4+sc&7hAZV^%=?44K+a=RMMJP$P%cg>j=`F0uqtkAkjhIl<KD$NsQqDk?UEWA47EKAf z_giVL0L_4&rO7|AVFBX`V+*&3j@Ow#itE-nl6p%B3@k0fkrtb!6Jccc89a7@+Rd+- z8Gn8E->mCyRtew5aq7+2`%exGa&jd?et43Sotd6RumMP>zEC1JCl}W&!+jQ`FHn~C zA0p_P`)q9RY`oHI4&1KZUd-5x3@!Z~LG|yowc+)Ne*tJK|CA%5$jobE`9%dEQZ=eu(<#Yg_vQpPfE8~)dDTRlA= zpNq|LVYUYkF0bCx1UtOS#|OZnfp~)BLWiEHS#O*?BmAfr z1&lI$?*H2*UP-`D0q8eCJdP3)x5AIRKDGg^n%3ZOAe!Kehf+f#Yisi~5ngiSvXB{i z(a!*R)GJVUo0#s25zI_QrK(dtNzhW=N=HXoxsNg3C#$JxTGQinH}mZGYgFEV_UVBv zfE@(xV3Q$DnHG4MSk~nLeC`FK|7NYZR&50lW6#suOw4>p-}t`kDVrBVkIe}P22v%6 z3}9xt)$+A|LnaV-wV&0?p~s9sb*)kdAS#R(=1<>}lHFu2NBkff=I5^h;g9M>AQo1s zV+-$)MQGL!C$g>qzhs{G@687=S63c-VyRjS0>~py?8b<2U1nxxPR=c<{jVlXlrUH# zMm<<`t^$=h;+8{;H>!LhP^h5btIS>3Z?+Z|4*EPmaF#d#uzPA0o;#G<4$hVMJD0Q@ zIo1ksaQwRBCHwbPpa7!Mqa}uH_V-sK2evcLPEN_mG_q<@VPSw1l;!Ok-@W+OBC^Y= zcI9`^YmV0&_jEHIQh&AO0)S$1alg&ugU0_|2&O+OGROQpJda)gC$S|7HkNaYvH`F#-DxCzo&*d?qSwFVVEhN`^eAE^ z&vD*)PEWyb`|CuH7zzjwRHZY|&5=#c!C*Hb)HhTPaa&b?X4a)3p&P24zFF49gi9TS zQ%??M%Y*EWtlMlzVHyCC)poU+sj26N4Ty+0?-SSYl*I-zGA`cX(wW+ak@Ys>!XN;7 ziyngR_SV!_43lWOac~U^al~|EJ6md?bL|Wn{XiX`oV=_pVK;di%J^o#Q}VKVk2pMR zb;vLS9Lw7k)+_zM7iyy<1E3xW_77Y|rdF*>h;VT|me&#nnsqWbs`_kefur!zF z(SiVanK_hS;d^_#%G%KBmc zo5oegY62iLSrv3nT5zDemk1E6K@`tlnP~ij2GWMg^?My)zW|M6mAIVE%}w`dKX^&W z#b~oc-NJ_qfU|Z43`9UzQ!DrcNls4D2kaCi?{?kN2;4S)HK}hI;N32QPG$}+rLH|T z5YDo)0`|#5j`OezBHP}90rc(;QRj!H-DoD3ITeN1OP)Z+|Kl_yYJBoeU z=XZB;UsgZozAcmR*8XwIl)bmlS~+;EjaTP0%|HfLMLboP=eoz*AG`E$uM_y*@vLyB zxub0XzU=aRqhz$<%6&#CPr2T4+P0d$r`vPx{fcMs;Tzqm*ncHVG>{g)y2$XX|7}#3 z+TVA%hO&a9AlY*nlZla~j#5=6C}xokdB zQS_Q3M`GyvP&O!(n1SD9H!)_Vnde`wV)b zatDYh^UPTP&0MnVH1+kb*ExCX6GMZ8C!hLXo$lSWt6dt&mj3|sVRie>6H?=Pt3&>+ z?P?$bXAJP*ZsCLu zkBkft4?h|C#EK^c93XXcybM$g^lY~PBx?)nDlpImbTHdOh_Qf5Y1${jK?}i8pFf}b zRbj=&%`eP@on|Z}S0+GeO~t|c8(BYUWw9?Wt;ovC%gf4+6ZoI_pVSgc0qazE-nU|o z^RCAtfIz}q@>bmXcoXQx0^3kSR7Z5bAq@fLl@B1&NTZ)T3ToLMNwMFYs;871=_=B{ zJ{PXquRQ?rA;KkJzZ$gfn@*>jbj-FyQqBOAq6KY_?a5ljF**8Fv5iU zl7#@c_7$iK=a>n_Uwy6FVO>HvRSu!euu4W;gd`M!JyGBF;{;zOH%^ zY7KagCC9~;pQh{6OZqi5HC^?tq3j#amQ!n;ft(c>d?jTh>g((8Y-IvVNJdYSa4->R zwx0no5FqF5S~qLmsVizVEc7Cg+k0^?6p(Sm?M}1HjCX1l^5R&5h%y@v@n$HiDItRo zx&e((KrqEPAI_FRNKAa=hr0fC!dpyGNuWD0;s@QKOE-i6@5skIm0vzlQ6 z%Q2AbfJ6Wn2*b1a{x_}=&xYl35G_=dYYGV^VbrPeX$N6e%+Bd3Uk#l2z086wEnGX%; z>%F~2yv>tKj%{%JG%N#j74L}eZWDqPAk|MV&cJyxuYS-kx`Km)!zk*u*-n{W?W)?{ z(<55ye;vV=uB4)p4#w^0M~wUVo1$!#$a^uIOn1m!gT69Njg>8Y=GM=A#Q|9DKsR^` zu?)U92tc;B2ysxuYI9B3DM3zcHZ(h@$&{6qtBA*|Gi-Uw3$Y6QRpYCOk%QuU< z^~$Fc814)Lzv>b)BWdU?N2DEsk=cP^f#OM{a~9FV5bjev6|hvk{%hh zf)vYMNl6L7;&)hyemE{9fVvg%Xa0@-3VMZ&T0;X}p(lK3gFFw`Ef=*@w{`BQmuC=v_&V z9OnT4?SN%U>k6}zxfR$@j@ldJh-g^7z#;ANegUBVbRfzJ57J| zJ?74KKF}XrrHU^aD@z3|lvG(N-Hc05h}LP@D0%*L%MKruc?N{#(_S1fUO!4w0%%Ks zxH-~8JwDO>f*yNTtD8PMcy`Jk%L%@xt(oeVq`?n0#3aw^CUhWRTzRaJ zyJeKNQpi)14{*a)SgA6P|J5No?%h{}dT-xe?Jf5~?3yo$JMY0K0sf0v3ds5bCnm1u z;|V_SAk}vQa&q3qLzUguEDS4kNa)5$c2GfJMm#=$_4Qd0T@T16yyQZRyT@Cl(Sk$9 z9T#0oD#KQ;nwpuOUWQ4tr12!X-K z=6ImY=VW*E7EN?VSuOwzS6Z_Ly!m1NJ~;Tv^x+R|0tP>mZr_uc0hy0^chvM-B|z#q zB}3lsf3<*E;!FohT4Oog@$OrbYh^lmdQ+dd8E3pUQqgwxzN@jB=8^pX>G6R^$O<^C zlg*J$kJzrMI_{n21D|497qP5JWihE#gK-=hZ}P18aD zS*MdzgEFMru`OgdcewzSOT@s>YP@UUYq}IdbUh8&c`rVT;eTyAlM*}M@xM;_{F#ED z{ve*#4n!#Xrm_y>FA`v1FajKY?wcQ=%pF3Zw)C-_%72WOTn~<5w`ZrOZZ?BB8i-AB zn@EvCkeyn}(z5$tK%5e2j7uTxb{Y%?X|%)-4#6Q)Qonr;e5l9pLDrQigEQ)1(^ORS zsZ(Kxa9C*=_EzP?|0b?_tQi6`3IRRC9>?d$DNW!o|9>)9$zcLDYr(kRR{C>GBrg$4 z3JPZ{lGnh>`Iu)i<^PUTPs*&Kl!1tWw)PiIT0l?+S{c!D+5Ybo!3m4HeH%=1^=ce4 z+g8Bge3v{&ASntAWc?&=9kBzMaSziYt7oJJJ2MM|NO=c^F=?D|xB*LE(@pCImIy|M zkwB3sJY3vyzGk6(nj_)6ezV{1v}3JI7W?PKgtIrbH`#7M0fD~pg}+x8yW3f%DoN`t zrN2QUJ}!KB%s2+5Y1j5WpGhQj&3RKr?bGG5!5f~YrSvrZOKV;54%kK3H<8BSSvA{j zuFYqCjRN*{4~4k5TZ8dxGwZF&id8>KdpNM&JUN|H0mIjqNpvr(k zHBMDe!&Z>$bXx7D1VThbC%9$zAddBDXfG0$sIg%=|4>Fi^JbZ<&8Q60`;7D~Idxmj z`LWay=FzG#c7UBYOer~jNfkszMP*@EfQO6wh2IqagzBR_IF|f!&2ug5oFpA+;UH_5cxBO(ZS} zZF_w5#wH0A8^WH?10f3gdDQSyc@sEvm0g`6YIIm8>qiD3%`|Nab#OTN_WAZ9co`c^ zbubfem+jK>S#d%1{r8JscrL69&FC^2*TvROnGVUz-xCjrUvmgV+`Z}I*nc2Pk1N(l zsc8HlvqX%}q({A5G}oM6WOnIRcN%SO_p~monyD2h_=DRX)${j`%9@ba`*PC-Rm!X% z{jd)0q+{lD7$k8Fc4v^Mtc`od7rSm5 zOnhbV5;>KCH4;g=6b+c_-rV?n`*y4n@w};&tTe^RKv!@24EkK4hlC^Qq#D!P=jYq$ z{Gne0vtssSs=Qk8@2a_i%}Hzz^2yX+Oj3klpZvEeuI(Mg8}<7zh;B=dcrq}?U~5FT zui@_!_T`bo4O~1aqEXqKV1C)AkyEART<7j~@O9cV{q*3y>TbD0UKY^*`uo8N7qbPl z6^q~ED`Fm7+T*p&$XU2yX1@3w#k=mE78AT>oItT`dXw9(J0qocg;pxO)7=P3t3u3q zYv1fAMTypL(y0w}&q$cnZx}!=GZd2fQosd<6$glIQG7+y=7?@G+tMD5ZSe*mMqMnM zy!3_@7t(Cv&ElXpU3pIEOYijsjFWB=5rH81P22H5V^W16b-xT}7K4`Nsz^qoJGkvMgJcc-9F#)m~Ni z!Jwqdvy-gi)nYM^``>@-c4q-v6x*4|&{h5p3#cUvEwwuanI4|!L`e=OZt7Z+N7W;R zyRP`4CSO(TM#cG0Wv4+KjD;=gq%kYd;XhfG|6W0@*cJm+te3UVL)n*I#GOM*K;f?E a;dN&68J%muz6S8Igeb_Wz>1{}0{;g*&{#JB diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart_logo_large.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/dist/src/img/piechart_logo_large.png deleted file mode 100644 index 21b7ab40145bdd8dd7fc08bfb4612a1c37d8bf5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3723 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 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/package.json b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/package.json deleted file mode 100644 index 45b5171..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "piechart-panel", - "private": true, - "version": "1.0.0", - "description": "", - "repository": { - "type": "git", - "url": "git+https://github.com/grafana/piechart-panel.git" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "grunt": "~0.4.5", - "babel": "~6.5.1", - "grunt-babel": "~6.0.0", - "grunt-contrib-copy": "~0.8.2", - "grunt-contrib-watch": "^0.6.1", - "grunt-contrib-uglify": "~0.11.0", - "grunt-systemjs-builder": "^0.2.5", - "load-grunt-tasks": "~3.2.0", - "grunt-execute": "~0.2.2", - "grunt-contrib-clean": "~0.6.0" - }, - "dependencies": { - "babel-plugin-transform-es2015-modules-systemjs": "^6.5.0", - "babel-plugin-transform-es2015-for-of": "^6.5.0", - "babel-preset-es2015": "^6.5.0", - "lodash": "~4.17.19" - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/editor.html b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/editor.html deleted file mode 100644 index 6fd689b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/editor.html +++ /dev/null @@ -1,62 +0,0 @@ -

-
-
General
-
- Type -
- -
-
-
- Unit -
-
-
-
- Value -
- -
-
-
- Divider width - -
-
- -
-
Legend
- -
- Position -
- -
-
-
- Font size -
- -
-
- - -
- -
-
Combine
-
- Threshold: - - Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will combine all slices 3% or less into one slice). -
-
- Label - - Label text for the combined slice. -
- -
diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-donut.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-donut.png deleted file mode 100644 index 8e54878b1818390e9a64a85f95ea6cf191093121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38209 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 U9(vjFSE2lp{?&^GD2KoQ1yf+SQvd(} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-on-graph.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-on-graph.png deleted file mode 100644 index 51dfcbc9f3198216c00798282e5c3fcc1b284fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37972 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 L)7e+{*HZoi7z@?u diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-rhs.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-rhs.png deleted file mode 100644 index 9b018c390531250defeddf0f093238f69012a6f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41450 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
'); - var firstRender = true; - var ctrl = scope.ctrl; - var panel = ctrl.panel; - var data; - var seriesList; - var i; - - ctrl.events.on('render', function() { - data = ctrl.series; - if (data) { - for(var i in data) { - data[i].color = ctrl.data[i].color; - } - render(); - } - }); - - function getSeriesIndexForElement(el) { - return el.parents('[data-series-index]').data('series-index'); - } - - function toggleSeries(e) { - var el = $(e.currentTarget); - var index = getSeriesIndexForElement(el); - var seriesInfo = seriesList[index]; - ctrl.toggleSeries(seriesInfo, e); - } - - function sortLegend(e) { - var el = $(e.currentTarget); - var stat = el.data('stat'); - - if (stat !== panel.legend.sort) { panel.legend.sortDesc = null; } - - // if already sort ascending, disable sorting - if (panel.legend.sortDesc === false) { - panel.legend.sort = null; - panel.legend.sortDesc = null; - render(); - return; - } - - panel.legend.sortDesc = !panel.legend.sortDesc; - panel.legend.sort = stat; - render(); - } - - function openColorSelector(e) { - // if we clicked inside poup container ignore click - if ($(e.target).parents('.popover').length) { - return; - } - - var el = $(e.currentTarget).find('.fa-minus'); - var index = getSeriesIndexForElement(el); - var series = seriesList[index]; - - $timeout(function() { - popoverSrv.show({ - element: el[0], - position: 'bottom center', - template: '', - model: { - series: series, - toggleAxis: function() {}, - colorSelected: function(color) { - ctrl.changeSeriesColor(series, color); - } - }, - }); - }); - } - - function render() { - if(panel.legendType === 'On graph') { - $container.empty(); - return; - } - - if (firstRender) { - elem.append($container); - $container.on('click', '.graph-legend-icon', openColorSelector); - $container.on('click', 'th', sortLegend); - firstRender = false; - } - - seriesList = data; - - $container.empty(); - - var showValues = panel.legend.values || panel.legend.percentage; - var tableLayout = ( - panel.legendType === 'Under graph' || - panel.legendType === 'Right side' - ) && showValues; - - - $container.toggleClass('graph-legend-table', tableLayout); - - if (tableLayout) { - var header = ''; - if (panel.legend.values) { - header += 'values'; - } - if (panel.legend.percentage) { - header += 'percentage'; - } - header += ''; - $container.append($(header)); - } - - if (panel.legend.sort) { - seriesList = _.sortBy(seriesList, function(series) { - return series.stats[panel.legend.sort]; - }); - if (panel.legend.sortDesc) { - seriesList = seriesList.reverse(); - } - } - - if (panel.legend.percentage) { - var total = 0; - for (i = 0; i < seriesList.length; i++) { - total += seriesList[i].stats[ctrl.panel.valueName]; - } - } - - for (i = 0; i < seriesList.length; i++) { - var series = seriesList[i]; - - // ignore empty series - if (panel.legend.hideEmpty && series.allIsNull) { - continue; - } - // ignore series excluded via override - if (!series.legend) { - continue; - } - - var html = '
'; - html += ''; - html += ''; - html += ''; - - html += ''; - html += '' + series.label + ''; - html += ''; - - if (showValues && tableLayout) { - var value = series.formatValue(series.stats[ctrl.panel.valueName]); - if (panel.legend.values) { - html += '
' + value + '
'; - } - if (total) { - var pvalue = ((value / total) * 100).toFixed(2) + '%'; - html += '
' + pvalue +'
'; - } - } - - html += '
'; - $container.append($(html)); - } - } - } - }; -}); - - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.html b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.html deleted file mode 100644 index c8524b3..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.html +++ /dev/null @@ -1,9 +0,0 @@ -
-
-
-
-
-
-
- - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.js deleted file mode 100644 index b278df7..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/module.js +++ /dev/null @@ -1,6 +0,0 @@ -import {PieChartCtrl} from './piechart_ctrl'; - -export { - PieChartCtrl as PanelCtrl -}; - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/piechart_ctrl.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/piechart_ctrl.js deleted file mode 100644 index c2e28fe..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/piechart_ctrl.js +++ /dev/null @@ -1,153 +0,0 @@ -import {MetricsPanelCtrl} from 'app/plugins/sdk'; -import _ from 'lodash'; -import kbn from 'app/core/utils/kbn'; -import TimeSeries from 'app/core/time_series'; -import rendering from './rendering'; -import legend from './legend'; - -export class PieChartCtrl extends MetricsPanelCtrl { - - constructor($scope, $injector, $rootScope) { - super($scope, $injector); - this.$rootScope = $rootScope; - - var panelDefaults = { - pieType: 'pie', - legend: { - show: true, // disable/enable legend - values: true - }, - links: [], - datasource: null, - maxDataPoints: 3, - interval: null, - targets: [{}], - cacheTimeout: null, - nullPointMode: 'connected', - legendType: 'Under graph', - aliasColors: {}, - format: 'short', - valueName: 'current', - strokeWidth: 1, - fontSize: '80%', - combine: { - threshold: 0.0, - label: 'Others' - } - }; - - _.defaults(this.panel, panelDefaults); - _.defaults(this.panel.legend, panelDefaults.legend); - - this.events.on('render', this.onRender.bind(this)); - this.events.on('data-received', this.onDataReceived.bind(this)); - this.events.on('data-error', this.onDataError.bind(this)); - this.events.on('data-snapshot-load', this.onDataReceived.bind(this)); - this.events.on('init-edit-mode', this.onInitEditMode.bind(this)); - } - - onInitEditMode() { - this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2); - this.unitFormats = kbn.getUnitFormats(); - } - - setUnitFormat(subItem) { - this.panel.format = subItem.value; - this.render(); - } - - onDataError() { - this.series = []; - this.render(); - } - - changeSeriesColor(series, color) { - series.color = color; - this.panel.aliasColors[series.alias] = series.color; - this.render(); - } - - onRender() { - this.data = this.parseSeries(this.series); - } - - parseSeries(series) { - return _.map(this.series, (serie, i) => { - return { - label: serie.alias, - data: serie.stats[this.panel.valueName], - color: this.panel.aliasColors[serie.alias] || this.$rootScope.colors[i] - }; - }); - } - - onDataReceived(dataList) { - this.series = dataList.map(this.seriesHandler.bind(this)); - this.data = this.parseSeries(this.series); - this.render(this.data); - } - - seriesHandler(seriesData) { - var series = new TimeSeries({ - datapoints: seriesData.datapoints, - alias: seriesData.target - }); - - series.flotpairs = series.getFlotPairs(this.panel.nullPointMode); - return series; - } - - getDecimalsForValue(value) { - if (_.isNumber(this.panel.decimals)) { - return { decimals: this.panel.decimals, scaledDecimals: null }; - } - - var delta = value / 2; - var dec = -Math.floor(Math.log(delta) / Math.LN10); - - var magn = Math.pow(10, -dec); - var norm = delta / magn; // norm is between 1.0 and 10.0 - var size; - - if (norm < 1.5) { - size = 1; - } else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25) { - size = 2.5; - ++dec; - } - } else if (norm < 7.5) { - size = 5; - } else { - size = 10; - } - - size *= magn; - - // reduce starting decimals if not needed - if (Math.floor(value) === value) { dec = 0; } - - var result = {}; - result.decimals = Math.max(0, dec); - result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2; - - return result; - } - - formatValue(value) { - var decimalInfo = this.getDecimalsForValue(value); - var formatFunc = kbn.valueFormats[this.panel.format]; - if (formatFunc) { - return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals); - } - return value; - } - - link(scope, elem, attrs, ctrl) { - rendering(scope, elem, attrs, ctrl); - } -} - -PieChartCtrl.templateUrl = 'module.html'; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/plugin.json b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/plugin.json deleted file mode 100644 index b3bab38..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/plugin.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "type": "panel", - "name": "Pie Chart", - "id": "grafana-piechart-panel", - - "info": { - "description": "Pie chart panel for grafana", - "author": { - "name": "Raintank Inc.", - "url": "http://raintank.io" - }, - "keywords": ["piechart", "panel"], - "logos": { - "small": "src/img/piechart_logo_small.png", - "large": "src/img/piechart_logo_large.png" - }, - "links": [ - {"name": "Project site", "url": "https://github.com/grafana/piechart-panel"}, - {"name": "Blog Post", "url": "https://blog.raintank.io/friends-dont-let-friends-abuse-pie-charts/"}, - {"name": "MIT License", "url": "https://github.com/grafana/piechart-panel/blob/master/LICENSE"} - ], - "screenshots": [ - {"name": "Donut!", "path": "src/img/piechart-donut.png"}, - {"name": "Legend on the graph", "path": "src/img/piechart-legend-on-graph.png"}, - {"name": "Legend to the right", "path": "src/img/piechart-legend-rhs.png"}, - {"name": "Legend underneath", "path": "src/img/piechart-legend-under.png"}, - {"name": "Piechart options", "path": "src/img/piechart-options.png"} - ], - "version": "1.1.4", - "updated": "2016-09-26" - }, - - "dependencies": { - "grafanaVersion": "3.x.x", - "plugins": [ ] - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/rendering.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/rendering.js deleted file mode 100644 index 018ccd7..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/rendering.js +++ /dev/null @@ -1,124 +0,0 @@ -import _ from 'lodash'; -import $ from 'jquery'; -import 'jquery.flot'; -import 'jquery.flot.pie'; - -export default function link(scope, elem, attrs, ctrl) { - var data, panel; - elem = elem.find('.piechart-panel'); - var $tooltip = $('
'); - - ctrl.events.on('render', function() { - render(); - ctrl.renderingCompleted(); - }); - - function setElementHeight() { - try { - var height = ctrl.height || panel.height || ctrl.row.height; - if (_.isString(height)) { - height = parseInt(height.replace('px', ''), 10); - } - - height -= 5; // padding - height -= panel.title ? 24 : 9; // subtract panel title bar - - elem.css('height', height + 'px'); - - return true; - } catch(e) { // IE throws errors sometimes - return false; - } - } - - function formatter(label, slice) { - return "
" + label + "
" + Math.round(slice.percent) + "%
"; - } - - function addPieChart() { - var width = elem.width(); - var height = elem.height(); - - var size = Math.min(width, height); - - var plotCanvas = $('
'); - var plotCss = { - top: '10px', - margin: 'auto', - position: 'relative', - height: (size - 20) + 'px' - }; - - plotCanvas.css(plotCss); - - var $panelContainer = elem.parents('.panel-container'); - var backgroundColor = $panelContainer.css('background-color'); - - var options = { - legend: { - show: false - }, - series: { - pie: { - show: true, - stroke: { - color: backgroundColor, - width: parseFloat(ctrl.panel.strokeWidth).toFixed(1) - }, - label: { - show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph', - formatter: formatter - }, - highlight: { - opacity: 0.0 - }, - combine: { - threshold: ctrl.panel.combine.threshold, - label: ctrl.panel.combine.label - } - } - }, - grid: { - hoverable: true, - clickable: false - } - }; - - if (panel.pieType === 'donut') { - options.series.pie.innerRadius = 0.5; - } - - elem.html(plotCanvas); - - $.plot(plotCanvas, ctrl.data, options); - plotCanvas.bind("plothover", function (event, pos, item) { - if (!item) { - $tooltip.detach(); - return; - } - - var body; - var percent = parseFloat(item.series.percent).toFixed(2); - var formatted = ctrl.formatValue(item.series.data[0][1]); - - body = '
'; - body += '
' + item.series.label + ': ' + formatted; - body += " (" + percent + "%)" + '
'; - body += "
"; - - $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY); - }); - } - - function render() { - if (!ctrl.data) { return; } - - data = ctrl.data; - panel = ctrl.panel; - - if (setElementHeight()) { - addPieChart(); - } - } -} - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/README.md b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/css/panel.css b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/css/panel.css deleted file mode 100644 index af3fa05..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/css/panel.css +++ /dev/null @@ -1,121 +0,0 @@ -.server-state { - float: right; - position: relative; - padding-left: 7px; - margin-top: 7px; -} - -.server-state-icon { - margin-top: 12px; - font-size: 14px; - padding: 0px; -} - -.server-state-online, -.server-state-success { - color: #18a718; -} - -.server-state-pending, -.server-state-connecting { - color: #797979; -} - -.server-state-error, -.server-state-offline { - color: #ff2323; -} - -.job-state { - display: inline-block; - padding: 2px 4px; - font-size: 10.998px; - font-weight: bold; - line-height: 14px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0,0,0,0.25); - white-space: nowrap; - vertical-align: baseline; - background-color: #999; - border-radius: 3px; - text-transform: uppercase; -} - -.job-state-not_started, -.job-state-shutting_down { - background-color: #999; -} - -.job-state-starting, -.job-state-idle { - background-color: #338bb8; -} - -.job-state-running, -.job-state-busy { - background-color: #f89406; -} - -.job-state-error, -.job-state-dead { - background-color: #b94a48; -} - -.job-state-success { - background-color: #468847; -} - -.jobs { - overflow-y: auto; -} - -.controls { - height: 50px; -} - -.jobs table { - width: 100%; -} - -.jobs td { - line-height: 1.4; - text-align: left; - padding: 2px 4px; - white-space: nowrap; -} - -.jobs td:first-child { - width: 35px; - font-size: 13px; - text-align: center; -} - -.jobs td:last-child { - text-align: right; -} - -.jobs .no-jobs td, -.jobs .jobs-header td { - font-size: 13px; - text-align: left; -} - -.jobs-header td { - font-weight: bold; - border-top: 0; -} - -.started { - display: block; -} - -.started-date { - font-size: 12px; - color: #797979; -} - -.started-time { - font-size: 15px; - display: block; -} - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/editor.html b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/editor.html deleted file mode 100644 index 1181845..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/editor.html +++ /dev/null @@ -1,54 +0,0 @@ -
-
-
Настройки задач
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
-
Настройки исполнения
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
- - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js deleted file mode 100644 index 8a2503c..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js +++ /dev/null @@ -1,98 +0,0 @@ -'use strict'; - -System.register(['moment', 'lodash'], function (_export, _context) { - "use strict"; - - var moment, _, filters; - - return { - setters: [function (_moment) { - moment = _moment.default; - }, function (_lodash) { - _ = _lodash.default; - }], - execute: function () { - filters = angular.module('grafana.filters'); - - - filters.filter('calendar', function () { - return function (date) { - return moment(date).calendar(); - }; - }); - - filters.filter('dateFormat', function () { - return function (date, format) { - return moment(date).format(format); - }; - }); - - filters.filter('duration', function () { - return function (ms) { - var seconds = ms / 1000; - - return [parseInt(seconds / 60 / 60), parseInt(seconds / 60 % 60), parseInt(seconds % 60)].join(":").replace(/\b(\d)\b/g, "0$1"); - }; - }); - - filters.filter('startedAt', function () { - return function (batch) { - var timestamp = _.get(batch, 'rm.startedTime'); - - if (timestamp) { - return new Date(timestamp); - } - }; - }); - - filters.filter('serverState', function () { - var states = { - 'online': 'Доступен', - 'connecting': 'Подключение', - 'offline': 'Недоступен', - 'success': 'Успешно', - 'error': 'Ошибка', - 'pending': 'Отправка запроса' - }; - - return function (input) { - return states.hasOwnProperty(input) ? states[input] : input; - }; - }); - - filters.filter('serverStateIcon', function () { - var states = { - 'online': 'fa fa-circle', - 'connecting': 'fa fa-circle', - 'offline': 'fa fa-circle', - 'success': 'fa fa-check-circle', - 'error': 'fa fa-times-circle', - 'pending': 'fa fa-spinner fa-spin' - }; - - return function (input) { - return states.hasOwnProperty(input) ? states[input] : input; - }; - }); - - filters.filter('jobState', function () { - var states = { - 'not_started': 'Не запущена', - 'starting': 'Запускается', - 'running': 'Выполняется', - 'idle': 'Бездействует', - 'busy': 'Выполняется', - 'shutting_down': 'Завершается', - 'error': 'Ошибка', - 'dead': 'Остановлена', - 'success': 'Выполнена' - }; - - return function (input) { - return states.hasOwnProperty(input) ? states[input] : input; - }; - }); - } - }; -}); -//# sourceMappingURL=filters.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js.map b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js.map deleted file mode 100644 index 327b508..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/filters.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/filters.js"],"names":["moment","_","filters","angular","module","filter","date","calendar","format","ms","seconds","parseInt","join","replace","batch","timestamp","get","Date","states","input","hasOwnProperty"],"mappings":";;;;;;;;;AAAOA,kB;;AACAC,a;;;AAEHC,mB,GAAUC,QAAQC,MAAR,CAAe,iBAAf,C;;;AAEdF,oBAAQG,MAAR,CAAe,UAAf,EAA2B;AAAA,uBAAM,UAACC,IAAD;AAAA,2BAAUN,OAAOM,IAAP,EAAaC,QAAb,EAAV;AAAA,iBAAN;AAAA,aAA3B;;AAEAL,oBAAQG,MAAR,CAAe,YAAf,EAA6B;AAAA,uBAAM,UAACC,IAAD,EAAOE,MAAP;AAAA,2BAAkBR,OAAOM,IAAP,EAAaE,MAAb,CAAoBA,MAApB,CAAlB;AAAA,iBAAN;AAAA,aAA7B;;AAEAN,oBAAQG,MAAR,CAAe,UAAf,EAA2B;AAAA,uBAAM,UAACI,EAAD,EAAQ;AACrC,wBAAIC,UAAUD,KAAK,IAAnB;;AAEA,2BAAO,CACHE,SAASD,UAAU,EAAV,GAAe,EAAxB,CADG,EAEHC,SAASD,UAAU,EAAV,GAAe,EAAxB,CAFG,EAGHC,SAASD,UAAU,EAAnB,CAHG,EAKFE,IALE,CAKG,GALH,EAMFC,OANE,CAMM,WANN,EAMmB,KANnB,CAAP;AAOH,iBAV0B;AAAA,aAA3B;;AAYAX,oBAAQG,MAAR,CAAe,WAAf,EAA4B,YAAW;AACnC,uBAAO,UAACS,KAAD,EAAW;AACd,wBAAIC,YAAYd,EAAEe,GAAF,CAAMF,KAAN,EAAa,gBAAb,CAAhB;;AAEA,wBAAIC,SAAJ,EAAe;AACX,+BAAO,IAAIE,IAAJ,CAASF,SAAT,CAAP;AACH;AACJ,iBAND;AAOH,aARD;;AAUAb,oBAAQG,MAAR,CAAe,aAAf,EAA8B,YAAW;AACrC,oBAAIa,SAAS;AACT,8BAAU,UADD;AAET,kCAAc,aAFL;AAGT,+BAAW,YAHF;AAIT,+BAAW,SAJF;AAKT,6BAAS,QALA;AAMT,+BAAW;AANF,iBAAb;;AASA,uBAAO,UAACC,KAAD;AAAA,2BAAWD,OAAOE,cAAP,CAAsBD,KAAtB,IAA+BD,OAAOC,KAAP,CAA/B,GAA+CA,KAA1D;AAAA,iBAAP;AACH,aAXD;;AAaAjB,oBAAQG,MAAR,CAAe,iBAAf,EAAkC,YAAW;AACzC,oBAAIa,SAAS;AACT,8BAAU,cADD;AAET,kCAAc,cAFL;AAGT,+BAAW,cAHF;AAIT,+BAAW,oBAJF;AAKT,6BAAS,oBALA;AAMT,+BAAW;AANF,iBAAb;;AASA,uBAAO,UAACC,KAAD;AAAA,2BAAWD,OAAOE,cAAP,CAAsBD,KAAtB,IAA+BD,OAAOC,KAAP,CAA/B,GAA+CA,KAA1D;AAAA,iBAAP;AACH,aAXD;;AAaAjB,oBAAQG,MAAR,CAAe,UAAf,EAA2B,YAAW;AAClC,oBAAIa,SAAS;AACT,mCAAe,aADN;AAET,gCAAY,aAFH;AAGT,+BAAW,aAHF;AAIT,4BAAQ,cAJC;AAKT,4BAAQ,aALC;AAMT,qCAAiB,aANR;AAOT,6BAAS,QAPA;AAQT,4BAAQ,aARC;AAST,+BAAW;AATF,iBAAb;;AAYA,uBAAO,UAACC,KAAD;AAAA,2BAAWD,OAAOE,cAAP,CAAsBD,KAAtB,IAA+BD,OAAOC,KAAP,CAA/B,GAA+CA,KAA1D;AAAA,iBAAP;AACH,aAdD","file":"filters.js","sourcesContent":["import moment from 'moment'\r\nimport _ from 'lodash'\r\n\r\nlet filters = angular.module('grafana.filters');\r\n\r\nfilters.filter('calendar', () => (date) => moment(date).calendar());\r\n\r\nfilters.filter('dateFormat', () => (date, format) => moment(date).format(format));\r\n\r\nfilters.filter('duration', () => (ms) => {\r\n let seconds = ms / 1000;\r\n\r\n return [\r\n parseInt(seconds / 60 / 60),\r\n parseInt(seconds / 60 % 60),\r\n parseInt(seconds % 60)\r\n ]\r\n .join(\":\")\r\n .replace(/\\b(\\d)\\b/g, \"0$1\");\r\n})\r\n\r\nfilters.filter('startedAt', function() {\r\n return (batch) => {\r\n var timestamp = _.get(batch, 'rm.startedTime');\r\n\r\n if (timestamp) {\r\n return new Date(timestamp);\r\n }\r\n };\r\n});\r\n\r\nfilters.filter('serverState', function() {\r\n var states = {\r\n 'online': 'Доступен',\r\n 'connecting': 'Подключение',\r\n 'offline': 'Недоступен',\r\n 'success': 'Успешно',\r\n 'error': 'Ошибка',\r\n 'pending': 'Отправка запроса'\r\n };\r\n\r\n return (input) => states.hasOwnProperty(input) ? states[input] : input;\r\n});\r\n\r\nfilters.filter('serverStateIcon', function() {\r\n var states = {\r\n 'online': 'fa fa-circle',\r\n 'connecting': 'fa fa-circle',\r\n 'offline': 'fa fa-circle',\r\n 'success': 'fa fa-check-circle',\r\n 'error': 'fa fa-times-circle',\r\n 'pending': 'fa fa-spinner fa-spin'\r\n };\r\n\r\n return (input) => states.hasOwnProperty(input) ? states[input] : input;\r\n});\r\n\r\nfilters.filter('jobState', function() {\r\n var states = {\r\n 'not_started': 'Не запущена',\r\n 'starting': 'Запускается',\r\n 'running': 'Выполняется',\r\n 'idle': 'Бездействует',\r\n 'busy': 'Выполняется',\r\n 'shutting_down': 'Завершается',\r\n 'error': 'Ошибка',\r\n 'dead': 'Остановлена',\r\n 'success': 'Выполнена'\r\n };\r\n\r\n return (input) => states.hasOwnProperty(input) ? states[input] : input;\r\n});"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js deleted file mode 100644 index bff625c..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js +++ /dev/null @@ -1,320 +0,0 @@ -'use strict'; - -System.register(['app/plugins/sdk', 'lodash'], function (_export, _context) { - "use strict"; - - var PanelCtrl, _, _typeof, _createClass, panelDefaults, LivyCtrl; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _possibleConstructorReturn(self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; - } - - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - } - - return { - setters: [function (_appPluginsSdk) { - PanelCtrl = _appPluginsSdk.PanelCtrl; - }, function (_lodash) { - _ = _lodash.default; - }], - execute: function () { - _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - panelDefaults = { - rmServer: 'http://mesos-host:5050', - livyServer: 'http://livy-host:8999', - submitJar: 'hdfs:///path/to/file.jar', - jobClassName: 'com.full.job.ClassName', - satTemplateVar: 'sat', - showJobList: true, - driverMemory: '1g', - driverCores: 2, - executorMemory: '2g', - executorCores: 2, - numExecutors: 3, - dynamicAllocation: false - }; - - _export('LivyCtrl', LivyCtrl = function (_PanelCtrl) { - _inherits(LivyCtrl, _PanelCtrl); - - function LivyCtrl($scope, $injector, $http) { - _classCallCheck(this, LivyCtrl); - - var _this = _possibleConstructorReturn(this, (LivyCtrl.__proto__ || Object.getPrototypeOf(LivyCtrl)).call(this, $scope, $injector)); - - _.defaults(_this.panel, panelDefaults); - - _this.$http = $http; - _this.serverState = 'connecting'; - _this.events.on('init-edit-mode', _this.onInitEditMode.bind(_this)); - - _this.livyJobs = []; - _this.frameworks = []; - _this.skipCleanupIds = []; - - _this.updateJobs(); - return _this; - } - - _createClass(LivyCtrl, [{ - key: 'onInitEditMode', - value: function onInitEditMode() { - this.addEditorTab('Options', 'public/plugins/livy-panel/editor.html', 2); - } - }, { - key: '_cleanupStorage', - value: function _cleanupStorage(activeIds) { - activeIds = _.concat(activeIds, this.skipCleanupIds); - this.skipCleanupIds = []; - - _(localStorage).keys().filter(function (k) { - return k.startsWith('livy'); - }).differenceWith(activeIds, function (a, b) { - return a == 'livy-' + b; - }).each(function (k) { - return localStorage.removeItem(k); - }); - } - }, { - key: '_makeLivyJobModel', - value: function _makeLivyJobModel(session) { - return { - id: session.id, - appId: session.appId, - sparkUiUrl: session.appInfo.sparkUiUrl, - state: session.state, - args: JSON.parse(localStorage.getItem('livy-' + session.id)) - }; - } - }, { - key: '_makeFrameworkModel', - value: function _makeFrameworkModel(framework) { - var startTime = framework.registered_time * 1000; - var endTime = framework.unregistered_time * 1000; - - var tasks = _.concat(framework.tasks, framework.completed_tasks, framework.unreachable_tasks); - var labels = _.chain(tasks).find('labels').get('labels').flatten().mapKeys('key').mapValues('value').value(); - - var taskStats = _.countBy(tasks, 'state'); - - var _getState = function _getState() { - if (framework.active) { - return framework.tasks.length > 0 ? 'running' : 'idle'; - } else if (framework.unregistered_time > 0) { - if (taskStats['TASK_FAILED'] > 0) return 'error'; - if (taskStats['TASK_KILLED'] > 0) return 'dead'; - - return 'success'; - } - - return 'not_started'; - }; - - return { - id: framework.id, - idx: framework.id.slice(-4), - name: framework.name, - startTime: startTime, - endTime: endTime, - isRunning: endTime == 0, - isComplete: endTime > 0, - totalTime: (endTime || new Date().getTime()) - startTime, - activeTasks: (taskStats['TASK_RUNNING'] || 0) + (taskStats['TASK_STARTING'] || 0), - failedTasks: taskStats['TASK_FAILED'] || 0, - killedTasks: taskStats['TASK_KILLED'] || 0, - finishedTasks: taskStats['TASK_FINISHED'] || 0, - resources: framework.resources, - state: _getState(), - args: labels - }; - } - }, { - key: 'updateJobs', - value: function updateJobs() { - var _this2 = this; - - if (this.panel.showJobList) { - var batches = this.$http.get(this.panel.livyServer + '/batches'); - var frameworks = this.$http.get(this.panel.rmServer + '/frameworks'); - - batches.then(function (response) { - var ids = _.map(response.data.sessions, 'id'); - _this2._cleanupStorage(ids); - _this2.livyJobs = _.map(response.data.sessions, _this2._makeLivyJobModel); - _this2.serverState = 'online'; - }, function (error) { - return _this2.serverState = 'offline'; - }); - - frameworks.then(function (response) { - var active = _(response.data.frameworks).orderBy('registered_time', 'desc').map(_this2._makeFrameworkModel); - var completed = _(response.data.completed_frameworks).orderBy('unregistered_time', 'desc').map(_this2._makeFrameworkModel); - _this2.frameworks = _.concat(active.value(), completed.value()); - }, function (error) { - return _this2.serverState = 'offline'; - }); - } else { - this.$http.get(this.panel.livyServer + '/ping').then(function (response) { - return _this2.serverState = 'online'; - }, function (error) { - return _this2.serverState = 'offline'; - }); - } - - this.$timeout(function () { - return _this2.updateJobs(); - }, 3000); - } - }, { - key: 'canSubmit', - value: function canSubmit() { - return _typeof(this.dashboard.time.from) === "object" && this.serverState === 'online' && this.requestState !== 'pending'; - } - }, { - key: 'submitJob', - value: function submitJob() { - var _this3 = this; - - var _escapeLabel = function _escapeLabel(v) { - return _.toString(v).replace(/,/g, '\\,').replace(/:/g, '\\:'); - }; - var _makeLabel = function _makeLabel(v, k) { - return _escapeLabel(k) + ':' + _escapeLabel(v); - }; - - var args = { - timeFrom: this.dashboard.time.from.format('x'), - timeTo: this.dashboard.time.to.format('x'), - sat: _.find(this.dashboard.templating.list, { name: this.panel.satTemplateVar }).current.value - }; - - var options = { - "file": this.panel.submitJar, - "className": this.panel.jobClassName, - "driverMemory": this.panel.driverMemory, - "driverCores": this.panel.driverCores, - "executorMemory": this.panel.executorMemory, - "executorCores": this.panel.executorCores, - "numExecutors": this.panel.numExecutors, - "conf": { - "spark.dynamicAllocation.enabled": this.panel.dynamicAllocation, - "spark.mesos.task.labels": _.map(args, _makeLabel).join(',') - }, - "args": _.values(args) - }; - - var request = this.$http.post(this.panel.livyServer + '/batches', options); - - this.serverState = 'pending'; - - request.then(function (response) { - _this3.serverState = 'success'; - - if (response.data.id) { - args.submitted = new Date().getTime(); - _this3.livyJobs.push(_this3._makeLivyJobModel(response.data)); - _this3.skipCleanupIds.push(response.data.id); - localStorage.setItem("livy-" + response.data.id, JSON.stringify(args)); - } - }, function (error) { - return _this3.serverState = 'error'; - }); - } - }, { - key: 'killBatch', - value: function killBatch(id) { - var _this4 = this; - - var request = this.$http.delete(this.panel.livyServer + '/batches/' + id); - this.serverState = 'pending'; - request.then(function (response) { - return _this4.serverState = 'success'; - }, function (error) { - return _this4.serverState = 'error'; - }); - } - }, { - key: 'killSession', - value: function killSession(id) { - var _this5 = this; - - var request = this.$http.delete(this.panel.livyServer + '/sessions/' + id); - this.serverState = 'pending'; - request.then(function (response) { - return _this5.serverState = 'success'; - }, function (error) { - return _this5.serverState = 'error'; - }); - } - }, { - key: 'killFramework', - value: function killFramework(id) { - var _this6 = this; - - var request = this.$http.post(this.panel.rmServer + '/master/teardown', "frameworkId=" + id); - this.serverState = 'pending'; - request.then(function (response) { - return _this6.serverState = 'success'; - }, function (error) { - return _this6.serverState = 'error'; - }); - } - }]); - - return LivyCtrl; - }(PanelCtrl)); - - _export('LivyCtrl', LivyCtrl); - - LivyCtrl.templateUrl = 'module.html'; - } - }; -}); -//# sourceMappingURL=livy_ctrl.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js.map b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js.map deleted file mode 100644 index f75f56b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/livy_ctrl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/livy_ctrl.js"],"names":["PanelCtrl","_","panelDefaults","rmServer","livyServer","submitJar","jobClassName","satTemplateVar","showJobList","driverMemory","driverCores","executorMemory","executorCores","numExecutors","dynamicAllocation","LivyCtrl","$scope","$injector","$http","defaults","panel","serverState","events","on","onInitEditMode","bind","livyJobs","frameworks","skipCleanupIds","updateJobs","addEditorTab","activeIds","concat","localStorage","keys","filter","k","startsWith","differenceWith","a","b","each","removeItem","session","id","appId","sparkUiUrl","appInfo","state","args","JSON","parse","getItem","framework","startTime","registered_time","endTime","unregistered_time","tasks","completed_tasks","unreachable_tasks","labels","chain","find","get","flatten","mapKeys","mapValues","value","taskStats","countBy","_getState","active","length","idx","slice","name","isRunning","isComplete","totalTime","Date","getTime","activeTasks","failedTasks","killedTasks","finishedTasks","resources","batches","then","ids","map","response","data","sessions","_cleanupStorage","_makeLivyJobModel","orderBy","_makeFrameworkModel","completed","completed_frameworks","$timeout","dashboard","time","from","requestState","_escapeLabel","toString","v","replace","_makeLabel","timeFrom","format","timeTo","to","sat","templating","list","current","options","join","values","request","post","submitted","push","setItem","stringify","delete","templateUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAQA,e,kBAAAA,S;;AACDC,O;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEDC,mB,GAAgB;AACpBC,kBAAU,wBADU;AAEpBC,oBAAY,uBAFQ;AAGpBC,mBAAW,0BAHS;AAIpBC,sBAAc,wBAJM;AAKpBC,wBAAgB,KALI;AAMpBC,qBAAa,IANO;AAOpBC,sBAAc,IAPM;AAQpBC,qBAAa,CARO;AASpBC,wBAAgB,IATI;AAUpBC,uBAAe,CAVK;AAWpBC,sBAAc,CAXM;AAYpBC,2BAAmB;AAZC,O;;0BAeTC,Q;;;AACX,0BAAYC,MAAZ,EAAoBC,SAApB,EAA+BC,KAA/B,EAAsC;AAAA;;AAAA,0HAC9BF,MAD8B,EACtBC,SADsB;;AAEpChB,YAAEkB,QAAF,CAAW,MAAKC,KAAhB,EAAuBlB,aAAvB;;AAEA,gBAAKgB,KAAL,GAAaA,KAAb;AACA,gBAAKG,WAAL,GAAmB,YAAnB;AACA,gBAAKC,MAAL,CAAYC,EAAZ,CAAe,gBAAf,EAAiC,MAAKC,cAAL,CAAoBC,IAApB,OAAjC;;AAEA,gBAAKC,QAAL,GAAgB,EAAhB;AACA,gBAAKC,UAAL,GAAkB,EAAlB;AACA,gBAAKC,cAAL,GAAsB,EAAtB;;AAEA,gBAAKC,UAAL;AAZoC;AAarC;;;;2CAEgB;AACf,iBAAKC,YAAL,CAAkB,SAAlB,EAA6B,uCAA7B,EAAsE,CAAtE;AACD;;;0CAEeC,S,EAAW;AACzBA,wBAAY9B,EAAE+B,MAAF,CAASD,SAAT,EAAoB,KAAKH,cAAzB,CAAZ;AACA,iBAAKA,cAAL,GAAsB,EAAtB;;AAEA3B,cAAEgC,YAAF,EACGC,IADH,GAEGC,MAFH,CAEU;AAAA,qBAAKC,EAAEC,UAAF,CAAa,MAAb,CAAL;AAAA,aAFV,EAGGC,cAHH,CAGkBP,SAHlB,EAG6B,UAACQ,CAAD,EAAIC,CAAJ;AAAA,qBAAUD,KAAK,UAAUC,CAAzB;AAAA,aAH7B,EAIGC,IAJH,CAIQ;AAAA,qBAAKR,aAAaS,UAAb,CAAwBN,CAAxB,CAAL;AAAA,aAJR;AAKD;;;4CAEiBO,O,EAAS;AACzB,mBAAO;AACLC,kBAAID,QAAQC,EADP;AAELC,qBAAOF,QAAQE,KAFV;AAGLC,0BAAYH,QAAQI,OAAR,CAAgBD,UAHvB;AAILE,qBAAOL,QAAQK,KAJV;AAKLC,oBAAMC,KAAKC,KAAL,CAAWlB,aAAamB,OAAb,CAAqB,UAAUT,QAAQC,EAAvC,CAAX;AALD,aAAP;AAOD;;;8CAEmBS,S,EAAW;AAC7B,gBAAIC,YAAYD,UAAUE,eAAV,GAA4B,IAA5C;AACA,gBAAIC,UAAUH,UAAUI,iBAAV,GAA8B,IAA5C;;AAEA,gBAAIC,QAAQzD,EAAE+B,MAAF,CAASqB,UAAUK,KAAnB,EAA0BL,UAAUM,eAApC,EAAqDN,UAAUO,iBAA/D,CAAZ;AACA,gBAAIC,SAAS5D,EAAE6D,KAAF,CAAQJ,KAAR,EACVK,IADU,CACL,QADK,EACKC,GADL,CACS,QADT,EACmBC,OADnB,GAEVC,OAFU,CAEF,KAFE,EAEKC,SAFL,CAEe,OAFf,EAGVC,KAHU,EAAb;;AAKA,gBAAIC,YAAYpE,EAAEqE,OAAF,CAAUZ,KAAV,EAAiB,OAAjB,CAAhB;;AAEA,gBAAIa,YAAY,SAAZA,SAAY,GAAM;AACpB,kBAAIlB,UAAUmB,MAAd,EAAsB;AAClB,uBAAOnB,UAAUK,KAAV,CAAgBe,MAAhB,GAAyB,CAAzB,GAA6B,SAA7B,GAAyC,MAAhD;AACH,eAFD,MAGK,IAAIpB,UAAUI,iBAAV,GAA8B,CAAlC,EAAqC;AACtC,oBAAIY,UAAU,aAAV,IAA2B,CAA/B,EAAkC,OAAO,OAAP;AAClC,oBAAIA,UAAU,aAAV,IAA2B,CAA/B,EAAkC,OAAO,MAAP;;AAElC,uBAAO,SAAP;AACH;;AAED,qBAAO,aAAP;AACD,aAZD;;AAcA,mBAAO;AACLzB,kBAAIS,UAAUT,EADT;AAEL8B,mBAAKrB,UAAUT,EAAV,CAAa+B,KAAb,CAAmB,CAAC,CAApB,CAFA;AAGLC,oBAAMvB,UAAUuB,IAHX;AAILtB,yBAAWA,SAJN;AAKLE,uBAASA,OALJ;AAMLqB,yBAAWrB,WAAW,CANjB;AAOLsB,0BAAYtB,UAAU,CAPjB;AAQLuB,yBAAW,CAACvB,WAAY,IAAIwB,IAAJ,EAAD,CAAaC,OAAb,EAAZ,IAAsC3B,SAR5C;AASL4B,2BAAa,CAACb,UAAU,cAAV,KAA6B,CAA9B,KAAoCA,UAAU,eAAV,KAA8B,CAAlE,CATR;AAULc,2BAAad,UAAU,aAAV,KAA4B,CAVpC;AAWLe,2BAAaf,UAAU,aAAV,KAA4B,CAXpC;AAYLgB,6BAAehB,UAAU,eAAV,KAA8B,CAZxC;AAaLiB,yBAAWjC,UAAUiC,SAbhB;AAcLtC,qBAAOuB,WAdF;AAeLtB,oBAAMY;AAfD,aAAP;AAiBD;;;uCAEY;AAAA;;AACX,gBAAI,KAAKzC,KAAL,CAAWZ,WAAf,EAA4B;AAC1B,kBAAI+E,UAAU,KAAKrE,KAAL,CAAW8C,GAAX,CAAe,KAAK5C,KAAL,CAAWhB,UAAX,GAAwB,UAAvC,CAAd;AACA,kBAAIuB,aAAa,KAAKT,KAAL,CAAW8C,GAAX,CAAe,KAAK5C,KAAL,CAAWjB,QAAX,GAAsB,aAArC,CAAjB;;AAEAoF,sBAAQC,IAAR,CACE,oBAAY;AACV,oBAAIC,MAAMxF,EAAEyF,GAAF,CAAMC,SAASC,IAAT,CAAcC,QAApB,EAA8B,IAA9B,CAAV;AACA,uBAAKC,eAAL,CAAqBL,GAArB;AACA,uBAAK/D,QAAL,GAAgBzB,EAAEyF,GAAF,CAAMC,SAASC,IAAT,CAAcC,QAApB,EAA8B,OAAKE,iBAAnC,CAAhB;AACA,uBAAK1E,WAAL,GAAmB,QAAnB;AACD,eANH,EAOE;AAAA,uBAAS,OAAKA,WAAL,GAAmB,SAA5B;AAAA,eAPF;;AASAM,yBAAW6D,IAAX,CAAgB,oBAAY;AAC1B,oBAAIhB,SAASvE,EAAE0F,SAASC,IAAT,CAAcjE,UAAhB,EAA4BqE,OAA5B,CAAoC,iBAApC,EAAuD,MAAvD,EAA+DN,GAA/D,CAAmE,OAAKO,mBAAxE,CAAb;AACA,oBAAIC,YAAYjG,EAAE0F,SAASC,IAAT,CAAcO,oBAAhB,EAAsCH,OAAtC,CAA8C,mBAA9C,EAAmE,MAAnE,EAA2EN,GAA3E,CAA+E,OAAKO,mBAApF,CAAhB;AACA,uBAAKtE,UAAL,GAAkB1B,EAAE+B,MAAF,CAASwC,OAAOJ,KAAP,EAAT,EAAyB8B,UAAU9B,KAAV,EAAzB,CAAlB;AACD,eAJD,EAIG;AAAA,uBAAS,OAAK/C,WAAL,GAAmB,SAA5B;AAAA,eAJH;AAKD,aAlBD,MAmBK;AACH,mBAAKH,KAAL,CAAW8C,GAAX,CAAe,KAAK5C,KAAL,CAAWhB,UAAX,GAAwB,OAAvC,EAAgDoF,IAAhD,CAAqD;AAAA,uBAAY,OAAKnE,WAAL,GAAmB,QAA/B;AAAA,eAArD,EAA8F;AAAA,uBAAS,OAAKA,WAAL,GAAmB,SAA5B;AAAA,eAA9F;AACD;;AAED,iBAAK+E,QAAL,CAAc;AAAA,qBAAM,OAAKvE,UAAL,EAAN;AAAA,aAAd,EAAuC,IAAvC;AACD;;;sCAEW;AACV,mBAAO,QAAO,KAAKwE,SAAL,CAAeC,IAAf,CAAoBC,IAA3B,MAAqC,QAArC,IAAiD,KAAKlF,WAAL,KAAqB,QAAtE,IAAkF,KAAKmF,YAAL,KAAsB,SAA/G;AACD;;;sCAEW;AAAA;;AACV,gBAAIC,eAAe,SAAfA,YAAe;AAAA,qBAAKxG,EAAEyG,QAAF,CAAWC,CAAX,EAAcC,OAAd,CAAsB,IAAtB,EAA4B,KAA5B,EAAmCA,OAAnC,CAA2C,IAA3C,EAAiD,KAAjD,CAAL;AAAA,aAAnB;AACA,gBAAIC,aAAa,SAAbA,UAAa,CAACF,CAAD,EAAIvE,CAAJ;AAAA,qBAAUqE,aAAarE,CAAb,IAAkB,GAAlB,GAAwBqE,aAAaE,CAAb,CAAlC;AAAA,aAAjB;;AAEA,gBAAI1D,OAAO;AACT6D,wBAAU,KAAKT,SAAL,CAAeC,IAAf,CAAoBC,IAApB,CAAyBQ,MAAzB,CAAgC,GAAhC,CADD;AAETC,sBAAQ,KAAKX,SAAL,CAAeC,IAAf,CAAoBW,EAApB,CAAuBF,MAAvB,CAA8B,GAA9B,CAFC;AAGTG,mBAAKjH,EAAE8D,IAAF,CAAO,KAAKsC,SAAL,CAAec,UAAf,CAA0BC,IAAjC,EAAuC,EAACxC,MAAM,KAAKxD,KAAL,CAAWb,cAAlB,EAAvC,EAA0E8G,OAA1E,CAAkFjD;AAH9E,aAAX;;AAMA,gBAAIkD,UAAU;AACZ,sBAAQ,KAAKlG,KAAL,CAAWf,SADP;AAEZ,2BAAa,KAAKe,KAAL,CAAWd,YAFZ;AAGZ,8BAAgB,KAAKc,KAAL,CAAWX,YAHf;AAIZ,6BAAe,KAAKW,KAAL,CAAWV,WAJd;AAKZ,gCAAkB,KAAKU,KAAL,CAAWT,cALjB;AAMZ,+BAAiB,KAAKS,KAAL,CAAWR,aANhB;AAOZ,8BAAgB,KAAKQ,KAAL,CAAWP,YAPf;AAQZ,sBAAQ;AACN,mDAAmC,KAAKO,KAAL,CAAWN,iBADxC;AAEN,2CAA2Bb,EAAEyF,GAAF,CAAMzC,IAAN,EAAY4D,UAAZ,EAAwBU,IAAxB,CAA6B,GAA7B;AAFrB,eARI;AAYZ,sBAAQtH,EAAEuH,MAAF,CAASvE,IAAT;AAZI,aAAd;;AAeD,gBAAIwE,UAAU,KAAKvG,KAAL,CAAWwG,IAAX,CAAgB,KAAKtG,KAAL,CAAWhB,UAAX,GAAwB,UAAxC,EAAoDkH,OAApD,CAAd;;AAEC,iBAAKjG,WAAL,GAAmB,SAAnB;;AAEAoG,oBAAQjC,IAAR,CACE,oBAAY;AACV,qBAAKnE,WAAL,GAAmB,SAAnB;;AAEA,kBAAIsE,SAASC,IAAT,CAAchD,EAAlB,EAAsB;AACpBK,qBAAK0E,SAAL,GAAkB,IAAI3C,IAAJ,EAAD,CAAaC,OAAb,EAAjB;AACA,uBAAKvD,QAAL,CAAckG,IAAd,CAAmB,OAAK7B,iBAAL,CAAuBJ,SAASC,IAAhC,CAAnB;AACA,uBAAKhE,cAAL,CAAoBgG,IAApB,CAAyBjC,SAASC,IAAT,CAAchD,EAAvC;AACAX,6BAAa4F,OAAb,CAAqB,UAAUlC,SAASC,IAAT,CAAchD,EAA7C,EAAiDM,KAAK4E,SAAL,CAAe7E,IAAf,CAAjD;AACD;AACF,aAVH,EAWE;AAAA,qBAAS,OAAK5B,WAAL,GAAmB,OAA5B;AAAA,aAXF;AAYD;;;oCAESuB,E,EAAI;AAAA;;AACZ,gBAAI6E,UAAU,KAAKvG,KAAL,CAAW6G,MAAX,CAAkB,KAAK3G,KAAL,CAAWhB,UAAX,GAAwB,WAAxB,GAAsCwC,EAAxD,CAAd;AACA,iBAAKvB,WAAL,GAAmB,SAAnB;AACAoG,oBAAQjC,IAAR,CAAa;AAAA,qBAAY,OAAKnE,WAAL,GAAmB,SAA/B;AAAA,aAAb,EAAuD;AAAA,qBAAS,OAAKA,WAAL,GAAmB,OAA5B;AAAA,aAAvD;AACD;;;sCAEWuB,E,EAAI;AAAA;;AACd,gBAAI6E,UAAU,KAAKvG,KAAL,CAAW6G,MAAX,CAAkB,KAAK3G,KAAL,CAAWhB,UAAX,GAAwB,YAAxB,GAAuCwC,EAAzD,CAAd;AACA,iBAAKvB,WAAL,GAAmB,SAAnB;AACAoG,oBAAQjC,IAAR,CAAa;AAAA,qBAAY,OAAKnE,WAAL,GAAmB,SAA/B;AAAA,aAAb,EAAuD;AAAA,qBAAS,OAAKA,WAAL,GAAmB,OAA5B;AAAA,aAAvD;AACD;;;wCAEauB,E,EAAI;AAAA;;AAChB,gBAAI6E,UAAU,KAAKvG,KAAL,CAAWwG,IAAX,CAAgB,KAAKtG,KAAL,CAAWjB,QAAX,GAAsB,kBAAtC,EAA0D,iBAAiByC,EAA3E,CAAd;AACA,iBAAKvB,WAAL,GAAmB,SAAnB;AACAoG,oBAAQjC,IAAR,CAAa;AAAA,qBAAY,OAAKnE,WAAL,GAAmB,SAA/B;AAAA,aAAb,EAAuD;AAAA,qBAAS,OAAKA,WAAL,GAAmB,OAA5B;AAAA,aAAvD;AACD;;;;QAhL2BrB,S;;;;AAmL9Be,eAASiH,WAAT,GAAuB,aAAvB","file":"livy_ctrl.js","sourcesContent":["import {PanelCtrl} from 'app/plugins/sdk';\r\nimport _ from 'lodash'\r\n\r\nconst panelDefaults = {\r\n rmServer: 'http://mesos-host:5050',\r\n livyServer: 'http://livy-host:8999',\r\n submitJar: 'hdfs:///path/to/file.jar',\r\n jobClassName: 'com.full.job.ClassName',\r\n satTemplateVar: 'sat',\r\n showJobList: true,\r\n driverMemory: '1g',\r\n driverCores: 2,\r\n executorMemory: '2g',\r\n executorCores: 2,\r\n numExecutors: 3,\r\n dynamicAllocation: false\r\n};\r\n\r\nexport class LivyCtrl extends PanelCtrl {\r\n constructor($scope, $injector, $http) {\r\n super($scope, $injector);\r\n _.defaults(this.panel, panelDefaults);\r\n\r\n this.$http = $http;\r\n this.serverState = 'connecting';\r\n this.events.on('init-edit-mode', this.onInitEditMode.bind(this));\r\n\r\n this.livyJobs = [];\r\n this.frameworks = [];\r\n this.skipCleanupIds = [];\r\n\r\n this.updateJobs();\r\n }\r\n\r\n onInitEditMode() {\r\n this.addEditorTab('Options', 'public/plugins/livy-panel/editor.html', 2);\r\n }\r\n\r\n _cleanupStorage(activeIds) {\r\n activeIds = _.concat(activeIds, this.skipCleanupIds);\r\n this.skipCleanupIds = [];\r\n\r\n _(localStorage)\r\n .keys()\r\n .filter(k => k.startsWith('livy'))\r\n .differenceWith(activeIds, (a, b) => a == 'livy-' + b)\r\n .each(k => localStorage.removeItem(k));\r\n }\r\n\r\n _makeLivyJobModel(session) {\r\n return {\r\n id: session.id,\r\n appId: session.appId,\r\n sparkUiUrl: session.appInfo.sparkUiUrl,\r\n state: session.state,\r\n args: JSON.parse(localStorage.getItem('livy-' + session.id))\r\n }\r\n }\r\n\r\n _makeFrameworkModel(framework) {\r\n let startTime = framework.registered_time * 1000;\r\n let endTime = framework.unregistered_time * 1000;\r\n\r\n let tasks = _.concat(framework.tasks, framework.completed_tasks, framework.unreachable_tasks);\r\n let labels = _.chain(tasks)\r\n .find('labels').get('labels').flatten()\r\n .mapKeys('key').mapValues('value')\r\n .value();\r\n\r\n let taskStats = _.countBy(tasks, 'state');\r\n\r\n let _getState = () => {\r\n if (framework.active) {\r\n return framework.tasks.length > 0 ? 'running' : 'idle';\r\n }\r\n else if (framework.unregistered_time > 0) {\r\n if (taskStats['TASK_FAILED'] > 0) return 'error';\r\n if (taskStats['TASK_KILLED'] > 0) return 'dead';\r\n\r\n return 'success';\r\n }\r\n\r\n return 'not_started';\r\n };\r\n\r\n return {\r\n id: framework.id,\r\n idx: framework.id.slice(-4),\r\n name: framework.name,\r\n startTime: startTime,\r\n endTime: endTime,\r\n isRunning: endTime == 0,\r\n isComplete: endTime > 0,\r\n totalTime: (endTime || (new Date()).getTime()) - startTime,\r\n activeTasks: (taskStats['TASK_RUNNING'] || 0) + (taskStats['TASK_STARTING'] || 0),\r\n failedTasks: taskStats['TASK_FAILED'] || 0,\r\n killedTasks: taskStats['TASK_KILLED'] || 0,\r\n finishedTasks: taskStats['TASK_FINISHED'] || 0,\r\n resources: framework.resources,\r\n state: _getState(),\r\n args: labels,\r\n }\r\n }\r\n\r\n updateJobs() {\r\n if (this.panel.showJobList) {\r\n let batches = this.$http.get(this.panel.livyServer + '/batches');\r\n let frameworks = this.$http.get(this.panel.rmServer + '/frameworks');\r\n\r\n batches.then(\r\n response => {\r\n let ids = _.map(response.data.sessions, 'id');\r\n this._cleanupStorage(ids);\r\n this.livyJobs = _.map(response.data.sessions, this._makeLivyJobModel);\r\n this.serverState = 'online';\r\n },\r\n error => this.serverState = 'offline');\r\n\r\n frameworks.then(response => {\r\n let active = _(response.data.frameworks).orderBy('registered_time', 'desc').map(this._makeFrameworkModel);\r\n let completed = _(response.data.completed_frameworks).orderBy('unregistered_time', 'desc').map(this._makeFrameworkModel);\r\n this.frameworks = _.concat(active.value(), completed.value());\r\n }, error => this.serverState = 'offline');\r\n }\r\n else {\r\n this.$http.get(this.panel.livyServer + '/ping').then(response => this.serverState = 'online', error => this.serverState = 'offline');\r\n }\r\n\r\n this.$timeout(() => this.updateJobs(), 3000);\r\n }\r\n\r\n canSubmit() {\r\n return typeof(this.dashboard.time.from) === \"object\" && this.serverState === 'online' && this.requestState !== 'pending';\r\n }\r\n\r\n submitJob() {\r\n let _escapeLabel = v => _.toString(v).replace(/,/g, '\\\\,').replace(/:/g, '\\\\:');\r\n let _makeLabel = (v, k) => _escapeLabel(k) + ':' + _escapeLabel(v);\r\n\r\n let args = {\r\n timeFrom: this.dashboard.time.from.format('x'),\r\n timeTo: this.dashboard.time.to.format('x'),\r\n sat: _.find(this.dashboard.templating.list, {name: this.panel.satTemplateVar}).current.value,\r\n };\r\n\r\n let options = {\r\n \"file\": this.panel.submitJar,\r\n \"className\": this.panel.jobClassName,\r\n \"driverMemory\": this.panel.driverMemory,\r\n \"driverCores\": this.panel.driverCores,\r\n \"executorMemory\": this.panel.executorMemory,\r\n \"executorCores\": this.panel.executorCores,\r\n \"numExecutors\": this.panel.numExecutors,\r\n \"conf\": {\r\n \"spark.dynamicAllocation.enabled\": this.panel.dynamicAllocation,\r\n \"spark.mesos.task.labels\": _.map(args, _makeLabel).join(',')\r\n },\r\n \"args\": _.values(args)\r\n };\r\n\r\n \tlet request = this.$http.post(this.panel.livyServer + '/batches', options);\r\n\r\n this.serverState = 'pending';\r\n\r\n request.then(\r\n response => {\r\n this.serverState = 'success';\r\n\r\n if (response.data.id) {\r\n args.submitted = (new Date()).getTime();\r\n this.livyJobs.push(this._makeLivyJobModel(response.data));\r\n this.skipCleanupIds.push(response.data.id);\r\n localStorage.setItem(\"livy-\" + response.data.id, JSON.stringify(args));\r\n }\r\n },\r\n error => this.serverState = 'error');\r\n }\r\n\r\n killBatch(id) {\r\n let request = this.$http.delete(this.panel.livyServer + '/batches/' + id);\r\n this.serverState = 'pending';\r\n request.then(response => this.serverState = 'success', error => this.serverState = 'error');\r\n }\r\n\r\n killSession(id) {\r\n let request = this.$http.delete(this.panel.livyServer + '/sessions/' + id);\r\n this.serverState = 'pending';\r\n request.then(response => this.serverState = 'success', error => this.serverState = 'error');\r\n }\r\n\r\n killFramework(id) {\r\n let request = this.$http.post(this.panel.rmServer + '/master/teardown', \"frameworkId=\" + id);\r\n this.serverState = 'pending';\r\n request.then(response => this.serverState = 'success', error => this.serverState = 'error');\r\n }\r\n}\r\n\r\nLivyCtrl.templateUrl = 'module.html';\r\n"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.html b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.html deleted file mode 100644 index fbabd99..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.html +++ /dev/null @@ -1,58 +0,0 @@ -
- - {{ctrl.serverState | serverState}} - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -
Задачи расчета
Нет задач
{{job.id}}{{job.state | jobState}} - {{job.appId}} - {{job.args.sat}} {{job.args.timeFrom}} {{job.args.timeTo}} - - -
Кластер
{{job.idx}}{{job.state | jobState}} - {{job.name}} {{job.args.sat}} - {{job.finishedTasks}} - {{job.activeTasks}} - {{job.killedTasks}} - {{job.failedTasks}} - - {{job.totalTime | duration}} - ({{job.resources.cpus}} CPU / {{job.resources.mem}} MB) - ({{job.endTime | calendar}}) - - -
-
\ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js deleted file mode 100644 index 102eef7..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -System.register(['./livy_ctrl', './filters', './css/panel.css!'], function (_export, _context) { - "use strict"; - - var LivyCtrl; - return { - setters: [function (_livy_ctrl) { - LivyCtrl = _livy_ctrl.LivyCtrl; - }, function (_filters) {}, function (_cssPanelCss) {}], - execute: function () { - _export('PanelCtrl', LivyCtrl); - } - }; -}); -//# sourceMappingURL=module.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js.map b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js.map deleted file mode 100644 index df84618..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/module.js"],"names":["LivyCtrl"],"mappings":";;;;;;;;AAAQA,c,cAAAA,Q;;;2BAONA,Q","file":"module.js","sourcesContent":["import {LivyCtrl} from './livy_ctrl';\r\n\r\nimport './filters'\r\n\r\nimport './css/panel.css!'\r\n\r\nexport {\r\n LivyCtrl as PanelCtrl\r\n};"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/plugin.json b/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/plugin.json deleted file mode 100644 index 8869fed..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/livy-panel/plugin.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "panel", - "name": "Livy", - "id": "livy-panel", - "css": { - "dark": "css/dark.css", - "light": "css/light.css" - }, - "info": { - "description": "Интерфейс задач Livy", - "author": { - "name": "Алексей Саварцов", - "url": "http://infocom-s.ru" - }, - "keywords": ["spark", "livy"], - "version": "1.0.0", - "updated": "2017-03-20" - }, - - "dependencies": { - "grafanaVersion": "3.x.x", - "plugins": [ ] - } -} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/lp.tar b/image_content/config/grafana/var/lib/grafana/plugins/lp.tar deleted file mode 120000 index a89aeb8..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/lp.tar +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../.git/annex/objects/XV/Fk/SHA256E-s40960--23409321cbf08f2cb810d9227f9a8bbe76db3deccc5621df0887a2c3e22b7e24.tar/SHA256E-s40960--23409321cbf08f2cb810d9227f9a8bbe76db3deccc5621df0887a2c3e22b7e24.tar \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/.gitignore b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/.gitignore deleted file mode 100644 index f7df84e..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -npm-debug.log -yarn.lock -package-lock.json \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/CHANGELOG.md b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/CHANGELOG.md deleted file mode 100644 index f786cc6..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/CHANGELOG.md +++ /dev/null @@ -1,108 +0,0 @@ -# 1.4.2 (2018-03-18) - -## Fixes - -* support `UNION ALL` statements -* proper format for `LIMIT N,M` construction (thx to @shankerwangmiao) -* update `Show Help` section with $unescape description - - -# 1.4.1 (2018-03-12) - -## New Features - -* $unescape - unescapes variable value by removing single quotes. Used for multiple-value string variables: "SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5" - -## Fixes - -* labmda-operator `->` no more breaks while reformatting query - - -# 1.4.0 (2018-03-08) - -## New Features - -Ad-hoc filters support: -* If there is an Ad-hoc variable, plugin will fetch all columns of all tables of all databases (except system database) as tags. -So in dropdown menu will be options like `database.table.column` -* If there are ENUM columns, plugin will fetch their options and use them as tag values -* Plugin will apply Ad-hoc filters to all queries on the dashboard if their settings `$database` and `$table` are the same -as Ad-hoc's `database.table` -* There are no option to apply OR operator for multiple Ad-hoc filters - see grafana/grafana#10918 -* There are no option to use IN operator for Ad-hoc filters due to Grafana limitations - -# 1.3.1 (2018-02-12) - -## Fixes - -* support array indexing int AST - - -# 1.3.0 (2018-02-07) - -## New Features -* columns autocompletion in ace-editor - -# 1.2.7 (2018-01-05) - -## Fixes - -* properly format query with reserved names -* fix #31 - - -# 1.2.6 (2017-12-13) - -## Fixes -* allow rounding with `round` option both time filters: $from and $to - - -# 1.2.5 (2017-12-05) - -## Fixes -* support template variables with different `text` and `value` values [#27](https://github.com/Vertamedia/clickhouse-grafana/issues/27) -* fix visual glitches [#29](https://github.com/Vertamedia/clickhouse-grafana/issues/29) - - -# 1.2.4 (2017-11-22) - -## Fixes -* apply proper value formatting for table format - - -# 1.2.3 (2017-11-20) - -## Fixes -* commit generated files - - -# 1.2.2 (2017-11-20) - -## Fixes -* fix error with absent `getCollapsedText` [#24](https://github.com/Vertamedia/clickhouse-grafana/issues/24) -* suppress errors while parsing AST [#24](https://github.com/Vertamedia/clickhouse-grafana/issues/24) -* show generated SQL in textarea [#24](https://github.com/Vertamedia/clickhouse-grafana/issues/24) -* do not round timestamp after converting [#25](https://github.com/Vertamedia/clickhouse-grafana/issues/25) -* increase max-height of query editor - - -# 1.2.1 (2017-11-17) - -## Fixes -* add forgotten completions -* process NULL values [#19](https://github.com/Vertamedia/clickhouse-grafana/issues/19) -* sort by key value in `$columns` macro [#16](https://github.com/Vertamedia/clickhouse-grafana/issues/16) - - -# 1.2.0 (2017-11-15) - -## New Features -* Ace editor -* ClickHouse function completion (thx to https://github.com/smi2/tabix.ui) - - -# 1.1.0 (2017-11-13) - -## New Features -* Allow `UInt32` as Timestamp column [#15](https://github.com/Vertamedia/clickhouse-grafana/issues/15) -* Add `Format as Table` format [#17](https://github.com/Vertamedia/clickhouse-grafana/issues/17) \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/Gruntfile.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/Gruntfile.js deleted file mode 100644 index 409080b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/Gruntfile.js +++ /dev/null @@ -1,102 +0,0 @@ -module.exports = function(grunt) { - require('load-grunt-tasks')(grunt); - - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-typescript'); - grunt.loadNpmTasks('grunt-contrib-watch'); - - grunt.initConfig({ - clean: ["dist"], - - copy: { - dist_js: { - expand: true, - cwd: 'src', - src: ['**/*.ts', '**/*.js', '**/*.d.ts'], - dest: 'dist' - }, - dist_html: { - expand: true, - flatten: true, - cwd: 'src/partials', - src: ['*.html'], - dest: 'dist/partials/' - }, - dist_css: { - expand: true, - flatten: true, - cwd: 'src/css', - src: ['*.css'], - dest: 'dist/css/' - }, - dist_img: { - expand: true, - flatten: true, - cwd: 'src/img', - src: ['*.*'], - dest: 'dist/img/' - }, - dist_statics: { - expand: true, - flatten: true, - src: ['src/plugin.json', 'LICENSE', 'README.md', 'CHANGELOG.md'], - dest: 'dist/' - } - }, - - babel: { - options: { - sourceMap: true, - presets: ['es2015'] - }, - dist: { - options: { - plugins: ['transform-es2015-modules-systemjs', 'transform-es2015-for-of'] - }, - files: [{ - cwd: 'src', - expand: true, - src: ['**/*.js'], - dest: 'dist', - ext:'.js' - }] - } - }, - - typescript: { - build: { - src: ['dist/**/*.ts', '!**/*.d.ts'], - dest: 'dist', - options: { - module: 'system', - target: 'es5', - rootDir: 'dist/', - declaration: true, - emitDecoratorMetadata: true, - experimentalDecorators: true, - sourceMap: true, - noImplicitAny: false - } - } - }, - - watch: { - files: ['src/**/*.ts', 'src/**/*.js', 'src/**/*.html', 'src/**/*.css', 'src/img/*.*', 'src/plugin.json', 'README.md', 'CHANGELOG.md'], - tasks: ['default'], - options: { - debounceDelay: 250 - } - } - }); - - grunt.registerTask('default', [ - 'clean', - 'copy:dist_js', - 'typescript:build', - 'babel', - 'copy:dist_html', - 'copy:dist_css', - 'copy:dist_img', - 'copy:dist_statics' - ]); -}; \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/LICENSE b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/LICENSE deleted file mode 100644 index 5455e76..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Vertamedia - -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. \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/README.md b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/README.md deleted file mode 100644 index 2837c6b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/README.md +++ /dev/null @@ -1,354 +0,0 @@ -# ClickHouse datasource for Grafana 4.6+ - -ClickHouse datasource plugin provides a support for [ClickHouse](https://clickhouse.yandex) as a backend database. - -### Quick start -Install from [grafana.net](https://grafana.net/plugins/vertamedia-clickhouse-datasource) - -OR - -Copy files to your [Grafana plugin directory](http://docs.grafana.org/plugins/installation/#grafana-plugin-directory). Restart Grafana, check datasources list at http://your.grafana.instance/datasources/new, choose ClickHouse option. - -### Features: - - * Access to CH via HTTP - * Query setup - * Raw SQL editor - * Query formatting - * Macros support - * Additional functions - * Templates - * Table view - * SingleStat view - * Ad-hoc filters - - -### Access to CH via HTTP -Page configuration is standard - -![settings](https://cloud.githubusercontent.com/assets/2902918/25473216/3ebd20fc-2b37-11e7-9743-fbbf2c5bdd3f.png) - - -There is a small feature - ClickHouse treats HTTP Basic Authentication credentials as a database user and will try to run queries using its name. - -#### [CHProxy](https://github.com/Vertamedia/chproxy) (optional) -Using of [CHProxy](https://github.com/Vertamedia/chproxy) will bring additional features: -* Easily setup `HTTPS` access to ClickHouse as shown [here](https://github.com/Vertamedia/chproxy#authorize-users-by-passwords-via-https) -to provide secure access. -* Limit concurrency and execution time for requests from `Grafana` as shown [here](https://github.com/Vertamedia/chproxy#spread-selects-from-reporting-apps-among-cluster-nodes) -to prevent `ClickHouse` overloading from `Grafana`. -* Protection against request bursts for dashboards with numerous graphs. `CHProxy` allows to queue requests and execute them sequentially. -To learn more - read about params `max_queue_size` and `max_queue_time` at [CHProxy](https://github.com/Vertamedia/chproxy) page. -* Response caching for the most frequent queries as shown [here](https://github.com/Vertamedia/chproxy#caching). -`Caching` will protect `ClickHouse` from excessive refreshes and will be optimal option for popular dashboards. ->> Hint - if you need to cache requests like `last 24h` where timestamp changes constantly then try to use `Round` option at `Raw Editor` - - -### Query setup - -Query setup interface: - -![query editor image](https://user-images.githubusercontent.com/2902918/32498037-2e9df438-c3d7-11e7-90de-73957c20cf6d.png) - -First row `FROM` contains two options: database and table. Table values depends on selected database. -Second row contains selectors for time filtering: -* Column:Date ([EventDate](https://clickhouse.yandex/reference_en.html#Date)) - is mandatory for [MergeTree](https://clickhouse.yandex/reference_en.html#MergeTree) tables -* Column:DateTime ([DateTime](https://clickhouse.yandex/reference_en.html#DateTime)) or Column:TimeStamp (UInt32). - -> Plugin will try to detect date columns automatically - -> Column:DateTime or Column:TimeStamp are required for time-based macros and functions, because all analytics is based on these values - -Button `Go to Query` is just a toggler to Raw SQL Editor - -### Raw SQL Editor - -Raw Editor allows custom SQL queries to be written: - -![raw editor image](https://user-images.githubusercontent.com/2902918/32843338-337f2efc-ca28-11e7-9bde-ec65faa3cdc9.png) - - -Raw Editor allows to type queries, get info about functions and macroses, format queries as Clickhouse do. -Under the Editor you can find a raw query (all macros and functions have already been replaced) which will be sent directly to ClickHouse. - -### Macros - -Plugin supports the following marcos: - -* $table - replaced with selected table name from Query Builder -* $timeCol - replaced with Date:Col value from Query Builder -* $dateTimeCol - replaced with Column:DateTime or Column:TimeStamp value from Query Builder -* $from - replaced with timestamp/1000 value of selected "Time Range:From" -* $to - replaced with timestamp/1000 value of selected "Time Range:To" -* $interval - replaced with selected "Group by time interval" value (as a number of seconds) -* $timeFilter - replaced with currently selected "Time Range". - Require Column:Date and Column:DateTime or Column:TimeStamp to be selected -* $timeSeries - replaced with special ClickHouse construction to convert results as time-series data. Use it as "SELECT $timeSeries...". -* $unescape - unescapes variable value by removing single quotes. Used for multiple-value string variables: "SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5" -Require Column:DateTime or Column:TimeStamp to be selected - -A description of macros is available by typing their names in Raw Editor - -### Functions - -Functions are just templates of SQL queries and you can check the final query at [Raw SQL Editor mode](https://github.com/Vertamedia/clickhouse-grafana/blob/master/README.md#raw-sql-editor). -If some additional complexity is needed - just copy raw sql into Raw Editor and make according changes. Remember that macros are still available to use. - -There are some limits in function use because of poor query analysis: -* Column:Date and Column:DateTime or Column:TimeStamp must be set in Query Builder -* Query must begins from function name -* Only one function can be used per query - - - -Plugin supports the following functions: - -#### $rate(cols...) - converts query results as "change rate per interval" - -Example usage: -``` -$rate(countIf(Type = 200) AS good, countIf(Type != 200) AS bad) FROM requests -``` - -Query will be transformed into: -``` -SELECT - t, - good / runningDifference(t / 1000) AS goodRate, - bad / runningDifference(t / 1000) AS badRate -FROM -( - SELECT - (intDiv(toUInt32(EventTime), 60)) * 1000 AS t, - countIf(Type = 200) AS good, - countIf(Type != 200) AS bad - FROM requests - WHERE ((EventDate >= toDate(1482796747)) AND (EventDate <= toDate(1482853383))) AND ((EventTime >= toDateTime(1482796747)) AND (EventTime <= toDateTime(1482853383))) - GROUP BY t - ORDER BY t ASC -) -``` ---- - -#### $columns(key, value) - query values as array of [key, value], where key will be used as label - -Example usage: -``` -$columns(OSName, count(*) c) FROM requests -``` - -Query will be transformed into: -``` -SELECT - t, - groupArray((OSName, c)) AS groupArr -FROM -( - SELECT - (intDiv(toUInt32(EventTime), 60) * 60) * 1000 AS t, - OSName, - count(*) AS c - FROM requests - ANY INNER JOIN oses USING (OS) - WHERE ((EventDate >= toDate(1482796627)) AND (EventDate <= toDate(1482853383))) AND ((EventTime >= toDateTime(1482796627)) AND (EventTime <= toDateTime(1482853383))) - GROUP BY - t, - OSName - ORDER BY - t ASC, - OSName ASC -) -GROUP BY t -ORDER BY t ASC -``` - -This will help to build the next graph: - -![req_by_os image](https://cloud.githubusercontent.com/assets/2902918/21719222/2feabf30-d425-11e6-9042-9d290ef07884.png) - ---- - -#### $rateColumns(key, value) - is a combination of $columns and $rate - -Example usage: -``` -$rateColumns(OS, count(*) c) FROM requests -``` - -Query will be transformed into: -``` -SELECT - t, - arrayMap(lambda(tuple(a), (a.1, a.2 / runningDifference(t / 1000))), groupArr) -FROM -( - SELECT - t, - groupArray((OS, c)) AS groupArr - FROM - ( - SELECT - (intDiv(toUInt32(EventTime), 60) * 60) * 1000 AS t, - OS, - count(*) AS c - FROM requests - WHERE ((EventDate >= toDate(1482796867)) AND (EventDate <= toDate(1482853383))) AND ((EventTime >= toDateTime(1482796867)) AND (EventTime <= toDateTime(1482853383))) - GROUP BY - t, - OS - ORDER BY - t ASC, - OS ASC - ) - GROUP BY t - ORDER BY t ASC -) - -``` - -### Working with panels - -#### Piechart (https://grafana.com/plugins/grafana-piechart-panel) - -Remember that piechart plugin is not welcome for using in grafana - see https://grafana.com/blog/2015/12/04/friends-dont-let-friends-abuse-pie-charts - -![top5things](https://cloud.githubusercontent.com/assets/2902918/25392562/9fadb202-29e1-11e7-95ca-5b0d2921c592.png) - -To create "Top 5" diagram we will need two queries: one for 'Top 5' rows and one for 'Other' row. - -Top5: -``` -SELECT - 1, /* fake timestamp value */ - groupArray((UserName, Reqs)) -FROM -( - SELECT - UserName, - sum(Reqs) AS Reqs - FROM requests - GROUP BY UserName - ORDER BY Reqs desc - LIMIT 5 -) -``` - -Other: -``` -SELECT - 1, /* fake timestamp value */ - tuple(tuple('Other', sum(Reqs))) -FROM -( - SELECT - UserName, - sum(Reqs) AS Reqs - FROM requests - GROUP BY UserName - ORDER BY Reqs desc - LIMIT 5,10000000000000 /* select some ridiculous number after first 5 */ -) -``` - -### Table (https://grafana.com/plugins/table) - -There are no any tricks in displaying time-series data. But to display some summary we will need to fake timestamp data: - -``` -SELECT - rand() Time, /* fake timestamp value */ - UserName, - sum(Reqs) as Reqs -FROM requests -GROUP BY - UserName -ORDER BY - Reqs -``` - -Better to hide `Time` column at `Options` tab while editing panel - - -### Vertical histogram (https://grafana.com/plugins/graph) - -![vertical histogram](https://cloud.githubusercontent.com/assets/2902918/25392561/9f3777e0-29e1-11e7-8b23-2ea9ae46a029.png) - -To make vertical histogram from graph panel we will need to edit some settings: -* Display -> Draw Modes -> Bars -* Axes -> X-Axis -> Mode -> Series - -And use next query: -``` -$columns( - Size, - sum(Items) Items) -FROM some_table -``` - -// It is also possible to use query without macros - -### Ad-hoc filters - -If there is an Ad-hoc variable, plugin will fetch all columns of all tables of all databases (except system database) as tags. -So in dropdown menu will be options like `database.table.column`. If there are ENUM columns, -plugin will fetch their options and use them as tag values. - -Plugin will apply Ad-hoc filters to all queries on the dashboard if their settings `$database` and `$table` are the same -as Ad-hoc's `database.table` - -![ad-hoc](https://user-images.githubusercontent.com/2902918/37139531-ed67f222-22b6-11e8-8815-9268850f16fb.png) - -> There are no option to apply OR operator for multiple Ad-hoc filters - see grafana/grafana#10918 - -> There are no option to use IN operator for Ad-hoc filters due to Grafana limitations - -### Millisecond resolution - -If your data has timestamp with millisecond resolution, you can use Column:TimeStampMs type with UInt64 column as your time column. -Template variables like `$from`, `$to` or `$interval` will also have a unit of millisecond. - -### Time range dependent variable values - -If you wish to have your dashboard variables to depend on selected time range, you need to set such varable to refresh on time range change. -After doing this, you can use `$from` and `$to` in your queries. Notice that in this case `$from` and `$to` will always be -milliseconds. - -Example: - -``` -SELECT DISTINCT(UserName) FROM requests WHERE EventTime BETWEEN toDateTime($from/1000) AND toDateTime($to/1000) -``` - -### FAQ - -> Time series last point is not the real last point - -Plugin extrapolates last datapoint if timerange is `last N` to avoid displaying of constantly decreasing graphs -when timestamp in table is rounded to minute or bigger. -If it so then in 99% cases last datapoint will be much less than previous one, because last minute is not finished yet. -That's why plugin checks prev datapoints and tries to predict last datapoint value just as it was already written into db. - -> Why no alerts support? - -Alerts feature requires changes in `Grafana`'s backend, which can't be extended for now. `Grafana`'s maintainers are working on this feature. - - -### Contribute - -Since we developed this plugin only for internal needs we don't have some of Grafana's features: - -* Alerts (this feature requires additional changes at backend and can't be solved by js-plugin) -* Annotations -* Labels - -We know that code quality needs a tons of improvements and unit-tests. We will continue working on this. -If you have any idea for an improvement or found a bug do not hesitate to open an issue or submit a pull request. -We will appreciate any help from the community which will make working with such amazing products as ClickHouse and Grafana more convenient. - - -Plugin creation was inspired by great [grafana-sqldb-datasource](https://github.com/sraoss/grafana-sqldb-datasource) - -License -------- -MIT License, please see [LICENSE](https://github.com/Vertamedia/clickhouse-grafana/blob/master/LICENSE) for details. - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/CHANGELOG.md b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/CHANGELOG.md deleted file mode 100644 index f786cc6..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/CHANGELOG.md +++ /dev/null @@ -1,108 +0,0 @@ -# 1.4.2 (2018-03-18) - -## Fixes - -* support `UNION ALL` statements -* proper format for `LIMIT N,M` construction (thx to @shankerwangmiao) -* update `Show Help` section with $unescape description - - -# 1.4.1 (2018-03-12) - -## New Features - -* $unescape - unescapes variable value by removing single quotes. Used for multiple-value string variables: "SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5" - -## Fixes - -* labmda-operator `->` no more breaks while reformatting query - - -# 1.4.0 (2018-03-08) - -## New Features - -Ad-hoc filters support: -* If there is an Ad-hoc variable, plugin will fetch all columns of all tables of all databases (except system database) as tags. -So in dropdown menu will be options like `database.table.column` -* If there are ENUM columns, plugin will fetch their options and use them as tag values -* Plugin will apply Ad-hoc filters to all queries on the dashboard if their settings `$database` and `$table` are the same -as Ad-hoc's `database.table` -* There are no option to apply OR operator for multiple Ad-hoc filters - see grafana/grafana#10918 -* There are no option to use IN operator for Ad-hoc filters due to Grafana limitations - -# 1.3.1 (2018-02-12) - -## Fixes - -* support array indexing int AST - - -# 1.3.0 (2018-02-07) - -## New Features -* columns autocompletion in ace-editor - -# 1.2.7 (2018-01-05) - -## Fixes - -* properly format query with reserved names -* fix #31 - - -# 1.2.6 (2017-12-13) - -## Fixes -* allow rounding with `round` option both time filters: $from and $to - - -# 1.2.5 (2017-12-05) - -## Fixes -* support template variables with different `text` and `value` values [#27](https://github.com/Vertamedia/clickhouse-grafana/issues/27) -* fix visual glitches [#29](https://github.com/Vertamedia/clickhouse-grafana/issues/29) - - -# 1.2.4 (2017-11-22) - -## Fixes -* apply proper value formatting for table format - - -# 1.2.3 (2017-11-20) - -## Fixes -* commit generated files - - -# 1.2.2 (2017-11-20) - -## Fixes -* fix error with absent `getCollapsedText` [#24](https://github.com/Vertamedia/clickhouse-grafana/issues/24) -* suppress errors while parsing AST [#24](https://github.com/Vertamedia/clickhouse-grafana/issues/24) -* show generated SQL in textarea [#24](https://github.com/Vertamedia/clickhouse-grafana/issues/24) -* do not round timestamp after converting [#25](https://github.com/Vertamedia/clickhouse-grafana/issues/25) -* increase max-height of query editor - - -# 1.2.1 (2017-11-17) - -## Fixes -* add forgotten completions -* process NULL values [#19](https://github.com/Vertamedia/clickhouse-grafana/issues/19) -* sort by key value in `$columns` macro [#16](https://github.com/Vertamedia/clickhouse-grafana/issues/16) - - -# 1.2.0 (2017-11-15) - -## New Features -* Ace editor -* ClickHouse function completion (thx to https://github.com/smi2/tabix.ui) - - -# 1.1.0 (2017-11-13) - -## New Features -* Allow `UInt32` as Timestamp column [#15](https://github.com/Vertamedia/clickhouse-grafana/issues/15) -* Add `Format as Table` format [#17](https://github.com/Vertamedia/clickhouse-grafana/issues/17) \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/LICENSE b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/LICENSE deleted file mode 100644 index 5455e76..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Vertamedia - -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. \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/README.md b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/README.md deleted file mode 100644 index 2837c6b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/README.md +++ /dev/null @@ -1,354 +0,0 @@ -# ClickHouse datasource for Grafana 4.6+ - -ClickHouse datasource plugin provides a support for [ClickHouse](https://clickhouse.yandex) as a backend database. - -### Quick start -Install from [grafana.net](https://grafana.net/plugins/vertamedia-clickhouse-datasource) - -OR - -Copy files to your [Grafana plugin directory](http://docs.grafana.org/plugins/installation/#grafana-plugin-directory). Restart Grafana, check datasources list at http://your.grafana.instance/datasources/new, choose ClickHouse option. - -### Features: - - * Access to CH via HTTP - * Query setup - * Raw SQL editor - * Query formatting - * Macros support - * Additional functions - * Templates - * Table view - * SingleStat view - * Ad-hoc filters - - -### Access to CH via HTTP -Page configuration is standard - -![settings](https://cloud.githubusercontent.com/assets/2902918/25473216/3ebd20fc-2b37-11e7-9743-fbbf2c5bdd3f.png) - - -There is a small feature - ClickHouse treats HTTP Basic Authentication credentials as a database user and will try to run queries using its name. - -#### [CHProxy](https://github.com/Vertamedia/chproxy) (optional) -Using of [CHProxy](https://github.com/Vertamedia/chproxy) will bring additional features: -* Easily setup `HTTPS` access to ClickHouse as shown [here](https://github.com/Vertamedia/chproxy#authorize-users-by-passwords-via-https) -to provide secure access. -* Limit concurrency and execution time for requests from `Grafana` as shown [here](https://github.com/Vertamedia/chproxy#spread-selects-from-reporting-apps-among-cluster-nodes) -to prevent `ClickHouse` overloading from `Grafana`. -* Protection against request bursts for dashboards with numerous graphs. `CHProxy` allows to queue requests and execute them sequentially. -To learn more - read about params `max_queue_size` and `max_queue_time` at [CHProxy](https://github.com/Vertamedia/chproxy) page. -* Response caching for the most frequent queries as shown [here](https://github.com/Vertamedia/chproxy#caching). -`Caching` will protect `ClickHouse` from excessive refreshes and will be optimal option for popular dashboards. ->> Hint - if you need to cache requests like `last 24h` where timestamp changes constantly then try to use `Round` option at `Raw Editor` - - -### Query setup - -Query setup interface: - -![query editor image](https://user-images.githubusercontent.com/2902918/32498037-2e9df438-c3d7-11e7-90de-73957c20cf6d.png) - -First row `FROM` contains two options: database and table. Table values depends on selected database. -Second row contains selectors for time filtering: -* Column:Date ([EventDate](https://clickhouse.yandex/reference_en.html#Date)) - is mandatory for [MergeTree](https://clickhouse.yandex/reference_en.html#MergeTree) tables -* Column:DateTime ([DateTime](https://clickhouse.yandex/reference_en.html#DateTime)) or Column:TimeStamp (UInt32). - -> Plugin will try to detect date columns automatically - -> Column:DateTime or Column:TimeStamp are required for time-based macros and functions, because all analytics is based on these values - -Button `Go to Query` is just a toggler to Raw SQL Editor - -### Raw SQL Editor - -Raw Editor allows custom SQL queries to be written: - -![raw editor image](https://user-images.githubusercontent.com/2902918/32843338-337f2efc-ca28-11e7-9bde-ec65faa3cdc9.png) - - -Raw Editor allows to type queries, get info about functions and macroses, format queries as Clickhouse do. -Under the Editor you can find a raw query (all macros and functions have already been replaced) which will be sent directly to ClickHouse. - -### Macros - -Plugin supports the following marcos: - -* $table - replaced with selected table name from Query Builder -* $timeCol - replaced with Date:Col value from Query Builder -* $dateTimeCol - replaced with Column:DateTime or Column:TimeStamp value from Query Builder -* $from - replaced with timestamp/1000 value of selected "Time Range:From" -* $to - replaced with timestamp/1000 value of selected "Time Range:To" -* $interval - replaced with selected "Group by time interval" value (as a number of seconds) -* $timeFilter - replaced with currently selected "Time Range". - Require Column:Date and Column:DateTime or Column:TimeStamp to be selected -* $timeSeries - replaced with special ClickHouse construction to convert results as time-series data. Use it as "SELECT $timeSeries...". -* $unescape - unescapes variable value by removing single quotes. Used for multiple-value string variables: "SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5" -Require Column:DateTime or Column:TimeStamp to be selected - -A description of macros is available by typing their names in Raw Editor - -### Functions - -Functions are just templates of SQL queries and you can check the final query at [Raw SQL Editor mode](https://github.com/Vertamedia/clickhouse-grafana/blob/master/README.md#raw-sql-editor). -If some additional complexity is needed - just copy raw sql into Raw Editor and make according changes. Remember that macros are still available to use. - -There are some limits in function use because of poor query analysis: -* Column:Date and Column:DateTime or Column:TimeStamp must be set in Query Builder -* Query must begins from function name -* Only one function can be used per query - - - -Plugin supports the following functions: - -#### $rate(cols...) - converts query results as "change rate per interval" - -Example usage: -``` -$rate(countIf(Type = 200) AS good, countIf(Type != 200) AS bad) FROM requests -``` - -Query will be transformed into: -``` -SELECT - t, - good / runningDifference(t / 1000) AS goodRate, - bad / runningDifference(t / 1000) AS badRate -FROM -( - SELECT - (intDiv(toUInt32(EventTime), 60)) * 1000 AS t, - countIf(Type = 200) AS good, - countIf(Type != 200) AS bad - FROM requests - WHERE ((EventDate >= toDate(1482796747)) AND (EventDate <= toDate(1482853383))) AND ((EventTime >= toDateTime(1482796747)) AND (EventTime <= toDateTime(1482853383))) - GROUP BY t - ORDER BY t ASC -) -``` ---- - -#### $columns(key, value) - query values as array of [key, value], where key will be used as label - -Example usage: -``` -$columns(OSName, count(*) c) FROM requests -``` - -Query will be transformed into: -``` -SELECT - t, - groupArray((OSName, c)) AS groupArr -FROM -( - SELECT - (intDiv(toUInt32(EventTime), 60) * 60) * 1000 AS t, - OSName, - count(*) AS c - FROM requests - ANY INNER JOIN oses USING (OS) - WHERE ((EventDate >= toDate(1482796627)) AND (EventDate <= toDate(1482853383))) AND ((EventTime >= toDateTime(1482796627)) AND (EventTime <= toDateTime(1482853383))) - GROUP BY - t, - OSName - ORDER BY - t ASC, - OSName ASC -) -GROUP BY t -ORDER BY t ASC -``` - -This will help to build the next graph: - -![req_by_os image](https://cloud.githubusercontent.com/assets/2902918/21719222/2feabf30-d425-11e6-9042-9d290ef07884.png) - ---- - -#### $rateColumns(key, value) - is a combination of $columns and $rate - -Example usage: -``` -$rateColumns(OS, count(*) c) FROM requests -``` - -Query will be transformed into: -``` -SELECT - t, - arrayMap(lambda(tuple(a), (a.1, a.2 / runningDifference(t / 1000))), groupArr) -FROM -( - SELECT - t, - groupArray((OS, c)) AS groupArr - FROM - ( - SELECT - (intDiv(toUInt32(EventTime), 60) * 60) * 1000 AS t, - OS, - count(*) AS c - FROM requests - WHERE ((EventDate >= toDate(1482796867)) AND (EventDate <= toDate(1482853383))) AND ((EventTime >= toDateTime(1482796867)) AND (EventTime <= toDateTime(1482853383))) - GROUP BY - t, - OS - ORDER BY - t ASC, - OS ASC - ) - GROUP BY t - ORDER BY t ASC -) - -``` - -### Working with panels - -#### Piechart (https://grafana.com/plugins/grafana-piechart-panel) - -Remember that piechart plugin is not welcome for using in grafana - see https://grafana.com/blog/2015/12/04/friends-dont-let-friends-abuse-pie-charts - -![top5things](https://cloud.githubusercontent.com/assets/2902918/25392562/9fadb202-29e1-11e7-95ca-5b0d2921c592.png) - -To create "Top 5" diagram we will need two queries: one for 'Top 5' rows and one for 'Other' row. - -Top5: -``` -SELECT - 1, /* fake timestamp value */ - groupArray((UserName, Reqs)) -FROM -( - SELECT - UserName, - sum(Reqs) AS Reqs - FROM requests - GROUP BY UserName - ORDER BY Reqs desc - LIMIT 5 -) -``` - -Other: -``` -SELECT - 1, /* fake timestamp value */ - tuple(tuple('Other', sum(Reqs))) -FROM -( - SELECT - UserName, - sum(Reqs) AS Reqs - FROM requests - GROUP BY UserName - ORDER BY Reqs desc - LIMIT 5,10000000000000 /* select some ridiculous number after first 5 */ -) -``` - -### Table (https://grafana.com/plugins/table) - -There are no any tricks in displaying time-series data. But to display some summary we will need to fake timestamp data: - -``` -SELECT - rand() Time, /* fake timestamp value */ - UserName, - sum(Reqs) as Reqs -FROM requests -GROUP BY - UserName -ORDER BY - Reqs -``` - -Better to hide `Time` column at `Options` tab while editing panel - - -### Vertical histogram (https://grafana.com/plugins/graph) - -![vertical histogram](https://cloud.githubusercontent.com/assets/2902918/25392561/9f3777e0-29e1-11e7-8b23-2ea9ae46a029.png) - -To make vertical histogram from graph panel we will need to edit some settings: -* Display -> Draw Modes -> Bars -* Axes -> X-Axis -> Mode -> Series - -And use next query: -``` -$columns( - Size, - sum(Items) Items) -FROM some_table -``` - -// It is also possible to use query without macros - -### Ad-hoc filters - -If there is an Ad-hoc variable, plugin will fetch all columns of all tables of all databases (except system database) as tags. -So in dropdown menu will be options like `database.table.column`. If there are ENUM columns, -plugin will fetch their options and use them as tag values. - -Plugin will apply Ad-hoc filters to all queries on the dashboard if their settings `$database` and `$table` are the same -as Ad-hoc's `database.table` - -![ad-hoc](https://user-images.githubusercontent.com/2902918/37139531-ed67f222-22b6-11e8-8815-9268850f16fb.png) - -> There are no option to apply OR operator for multiple Ad-hoc filters - see grafana/grafana#10918 - -> There are no option to use IN operator for Ad-hoc filters due to Grafana limitations - -### Millisecond resolution - -If your data has timestamp with millisecond resolution, you can use Column:TimeStampMs type with UInt64 column as your time column. -Template variables like `$from`, `$to` or `$interval` will also have a unit of millisecond. - -### Time range dependent variable values - -If you wish to have your dashboard variables to depend on selected time range, you need to set such varable to refresh on time range change. -After doing this, you can use `$from` and `$to` in your queries. Notice that in this case `$from` and `$to` will always be -milliseconds. - -Example: - -``` -SELECT DISTINCT(UserName) FROM requests WHERE EventTime BETWEEN toDateTime($from/1000) AND toDateTime($to/1000) -``` - -### FAQ - -> Time series last point is not the real last point - -Plugin extrapolates last datapoint if timerange is `last N` to avoid displaying of constantly decreasing graphs -when timestamp in table is rounded to minute or bigger. -If it so then in 99% cases last datapoint will be much less than previous one, because last minute is not finished yet. -That's why plugin checks prev datapoints and tries to predict last datapoint value just as it was already written into db. - -> Why no alerts support? - -Alerts feature requires changes in `Grafana`'s backend, which can't be extended for now. `Grafana`'s maintainers are working on this feature. - - -### Contribute - -Since we developed this plugin only for internal needs we don't have some of Grafana's features: - -* Alerts (this feature requires additional changes at backend and can't be solved by js-plugin) -* Annotations -* Labels - -We know that code quality needs a tons of improvements and unit-tests. We will continue working on this. -If you have any idea for an improvement or found a bug do not hesitate to open an issue or submit a pull request. -We will appreciate any help from the community which will make working with such amazing products as ClickHouse and Grafana more convenient. - - -Plugin creation was inspired by great [grafana-sqldb-datasource](https://github.com/sraoss/grafana-sqldb-datasource) - -License -------- -MIT License, please see [LICENSE](https://github.com/Vertamedia/clickhouse-grafana/blob/master/LICENSE) for details. - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.d.ts deleted file mode 100644 index 8979250..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -export default class AdhocCtrl { - tagKeys: any[]; - tagValues: any[]; - /** @ngInject */ - constructor(); - GetTagKeys(datasource: any): any; - GetTagValues(options: any): Promise; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js deleted file mode 100644 index 930f486..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js +++ /dev/null @@ -1,50 +0,0 @@ -System.register([], function(exports_1) { - var columnsQuery, regexEnum, AdhocCtrl; - return { - setters:[], - execute: function() { - columnsQuery = "SELECT database, table, name, type FROM system.columns where database != 'system' ORDER BY database, table"; - regexEnum = /'(?:[^']+|'')+'/gmi; - AdhocCtrl = (function () { - /** @ngInject */ - function AdhocCtrl() { - this.tagKeys = []; - this.tagValues = []; - } - AdhocCtrl.prototype.GetTagKeys = function (datasource) { - var self = this; - if (this.tagKeys.length > 0) { - return Promise.resolve(this.tagKeys); - } - return datasource.metricFindQuery(columnsQuery) - .then(function (response) { - response.forEach(function (item) { - var text = item.database + '.' + item.table + '.' + item.name; - var value = item.name; - self.tagKeys.push({ text: text, value: value }); - if (item.type.slice(0, 4) === 'Enum') { - var options = item.type.match(regexEnum); - if (options.length > 0) { - self.tagValues[text] = []; - options.forEach(function (o) { - self.tagValues[text].push({ text: o, value: o }); - }); - } - } - }); - return Promise.resolve(self.tagKeys); - }); - }; - AdhocCtrl.prototype.GetTagValues = function (options) { - if (this.tagValues.hasOwnProperty(options.key)) { - return Promise.resolve(this.tagValues[options.key]); - } - return Promise.resolve([]); - }; - return AdhocCtrl; - })(); - exports_1("default", AdhocCtrl); - } - } -}); -//# sourceMappingURL=adhoc.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js.map deleted file mode 100644 index 54f2ac4..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"adhoc.js","sourceRoot":"","sources":["adhoc.ts"],"names":["AdhocCtrl","AdhocCtrl.constructor","AdhocCtrl.GetTagKeys","AdhocCtrl.GetTagValues"],"mappings":";QAAM,YAAY,EACZ,SAAS;;;;YADT,YAAY,GAAG,4GAA4G,CAAC;YAC5H,SAAS,GAAG,oBAAoB,CAAC;YAEvC;gBAIIA,gBAAgBA;gBAChBA;oBACIC,IAAIA,CAACA,OAAOA,GAAGA,EAAEA,CAACA;oBAClBA,IAAIA,CAACA,SAASA,GAAGA,EAAEA,CAACA;gBACxBA,CAACA;gBAEDD,8BAAUA,GAAVA,UAAWA,UAAeA;oBACtBE,IAAIA,IAAIA,GAAGA,IAAIA,CAACA;oBAChBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAC1BA,MAAMA,CAACA,OAAOA,CAACA,OAAOA,CAACA,IAAIA,CAACA,OAAOA,CAACA,CAACA;oBACzCA,CAACA;oBACDA,MAAMA,CAACA,UAAUA,CAACA,eAAeA,CAACA,YAAYA,CAACA;yBAC1CA,IAAIA,CAACA,UAASA,QAAQA;wBACnB,QAAQ,CAAC,OAAO,CAAC,UAAS,IAAI;4BAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;4BAC9D,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;4BACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;4BAC9C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;gCACnC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gCACzC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oCACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oCAC1B,OAAO,CAAC,OAAO,CAAC,UAAS,CAAC;wCACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,CAAA;oCAClD,CAAC,CAAC,CAAA;gCACN,CAAC;4BACL,CAAC;wBACJ,CAAC,CAAC,CAAC;wBACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzC,CAAC,CAACA,CAACA;gBAEXA,CAACA;gBAEDF,gCAAYA,GAAZA,UAAaA,OAAOA;oBAChBG,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,CAACA,cAAcA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA,CAACA;wBAC7CA,MAAMA,CAACA,OAAOA,CAACA,OAAOA,CAACA,IAAIA,CAACA,SAASA,CAACA,OAAOA,CAACA,GAAGA,CAACA,CAACA,CAACA;oBACxDA,CAACA;oBACDA,MAAMA,CAACA,OAAOA,CAACA,OAAOA,CAACA,EAAEA,CAACA,CAAAA;gBAC9BA,CAACA;gBACLH,gBAACA;YAADA,CAACA,AA1CD,IA0CC;YA1CD,+BA0CC,CAAA"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.ts deleted file mode 100644 index 803578d..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/adhoc.ts +++ /dev/null @@ -1,46 +0,0 @@ -const columnsQuery = "SELECT database, table, name, type FROM system.columns where database != 'system' ORDER BY database, table"; -const regexEnum = /'(?:[^']+|'')+'/gmi; - -export default class AdhocCtrl { - tagKeys: any[]; - tagValues: any[]; - - /** @ngInject */ - constructor() { - this.tagKeys = []; - this.tagValues = []; - } - - GetTagKeys(datasource: any){ - var self = this; - if (this.tagKeys.length > 0) { - return Promise.resolve(this.tagKeys); - } - return datasource.metricFindQuery(columnsQuery) - .then(function(response){ - response.forEach(function(item){ - let text = item.database + '.' + item.table + '.' + item.name; - let value = item.name; - self.tagKeys.push({text: text, value: value}); - if (item.type.slice(0, 4) === 'Enum') { - let options = item.type.match(regexEnum); - if (options.length > 0) { - self.tagValues[text] = []; - options.forEach(function(o) { - self.tagValues[text].push({text: o, value: o}) - }) - } - } - }); - return Promise.resolve(self.tagKeys); - }); - - } - - GetTagValues(options){ - if (this.tagValues.hasOwnProperty(options.key)) { - return Promise.resolve(this.tagValues[options.key]); - } - return Promise.resolve([]) - } -} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js deleted file mode 100644 index 3b2909b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js +++ /dev/null @@ -1,1414 +0,0 @@ -"use strict"; - -System.register([], function (_export, _context) { - "use strict"; - - return { - setters: [], - execute: function () { - // jshint ignore: start - // jscs: disable - - ace.define("ace/mode/clickhouse_info", ["require", "exports", "module"], function (require, exports, module) { - "use strict"; - - var p = {}; - p.Keywords = ["SELECT", "CASE", "THEN", "DISTINCT", "INSERT", "UPDATE", "DELETE", "WHERE", "AND", "OR", "OFFSET", "HAVING", "AS", "GLOBAL", "FROM", "WHEN", "ELSE", "END", "TYPE", "LEFT", "RIGHT", "USING", "JOIN", "ON", "OUTER", "DESC", "ASC", "UNION", "CREATE", "TABLE", "PRIMARY", "KEY", "FOREIGN", "NOT", "REFERENCES", "DEFAULT", "INNER", "CROSS", "NATURAL", "DATABASE", "DROP", "GRANT", "ANY", "BETWEEN", "ATTACH", "DETACH", "CAST", "WITH", "BIT_AND", "BIT_OR", "BIT_XOR", "DESCRIBE", "OPTIMIZE", "PREWHERE", "TOTALS", "DATABASES", "PROCESSLIST", "SHOW", "LIMIT", "IF", "IF NOT EXISTS", "IF EXISTS", "GROUP", "ORDER", "BY", "IN", "FORMAT", "GROUP BY", "ORDER BY", "UNION ALL"]; - p.DataTypes = ["int", "numeric", "decimal", "date", "varchar", "char", "bigint", "float", "double", "bit", "binary", "text", "set", "timestamp", "uint8", "uint16", "uint32", "uint64", "int8", "int16", "int32", "int64", "float32", "float64", "datetime", "enum8", "enum16", "array", "tuple", "string"]; - p.Constants = ["true", "false", "NULL"]; - p.Funcs = ["IPv4NumToString", "IPv4NumToStringClassC", "IPv4StringToNum", "IPv6NumToString", "IPv6StringToNum", "MD5", "OSHierarchy", "OSIn", "OSToRoot", "SEHierarchy", "SEIn", "SEToRoot", "SHA1", "SHA224", "SHA256", "URLHash", "URLHierarchy", "URLPathHierarchy", "abs", "alphaTokens", "appendTrailingCharIfAbsent", "argMax", "argMin", "argMinIf", "arrayAll", "arrayCount", "arrayElement", "arrayEnumerate", "arrayEnumerateUniq", "arrayExists", "arrayFilter", "arrayFirst", "arrayJoin", "arrayMap", "arraySum", "avg", "avgIf", "bitAnd", "bitNot", "bitOr", "bitShiftLeft", "bitShiftRight", "bitXor", "bitmaskToArray", "bitmaskToList", "ceil", "cityHash64", "coalesce", "concat", "corr", "corrIf", "count", "countEqual", "countIf", "countIf", "covarPop", "covarPopIf", "covarSamp", "covarSampIf", "cutFragment", "cutQueryString", "cutQueryStringAndFragment", "cutToFirstSignificantSubdomain", "cutURLParameter", "cutWWW", "dictGetDate", "dictGetDateTime", "dictGetFloat32", "dictGetFloat64", "dictGetHierarchy", "dictGetInt16", "dictGetInt32", "dictGetInt64", "dictGetInt8", "dictGetString", "dictGetUInt16", "dictGetUInt32", "dictGetUInt64", "dictGetUInt8", "dictHas", "dictIsIn", "divide", "domainWithoutWWW", "empty", "extract", "extractAll", "extractURLParameter", "extractURLParameterNames", "extractURLParameters", "first", "firstSignificantSubdomain", "floor", "groupArray", "groupUniqArray", "halfMD5", "has", "hex", "ifnull", "indexOf", "intDiv", "intDivOrZero", "intHash32", "intHash64", "isnull", "last", "lcase", "length", "lengthUTF8", "like", "lower", "lowerUTF8", "match", "max", "median", "medianIf", "mid", "min", "minus", "modulo", "multiply", "negate", "notEmpty", "notLike", "now", "now", "nvl", "plus", "position", "positionUTF8", "quantile", "quantileDeterministic", "quantileExact", "quantileExactWeighted", "quantileTDigest", "quantileTiming", "quantileTimingWeighted", "quantiles", "quantilesIf", "quantilesTimingArrayIf", "quantilesTimingIf", "queryString", "queryStringAndFragment", "rand", "rand64", "range", "rank", "regionHierarchy", "regionIn", "regionToContinent", "regionToCountry", "regionToName", "regionToPopulation", "reinterpretAsDate", "reinterpretAsDateTime", "reinterpretAsFloat32", "reinterpretAsFloat64", "reinterpretAsInt16", "reinterpretAsInt32", "reinterpretAsInt64", "reinterpretAsInt8", "reinterpretAsString", "reinterpretAsUInt16", "reinterpretAsUInt32", "reinterpretAsUInt64", "reinterpretAsUInt8", "replaceAll", "replaceOne", "replaceRegexpOne", "reverse", "reverseUTF8", "round", "round", "roundAge", "roundDuration", "roundToExp2", "sequenceCount", "sequenceMatch", "sipHash128", "sipHash64", "splitByChar", "splitByString", "stddevPop", "stddevPopIf", "stddevSamp", "stddevSampIf", "substring", "substringUTF8", "sum", "sumArray", "sumArrayIf", "sumIf", "timeSlot", "toDate", "toDateTime", "toDayOfMonth", "toDayOfWeek", "toFixedString", "toFloat32", "toFloat64", "toHour", "toInt16", "toInt32", "toInt64", "toInt8", "toMinute", "toMonday", "toMonth", "toRelativeDayNum", "toRelativeHourNum", "toRelativeMinuteNum", "toRelativeMonthNum", "toRelativeSecondNum", "toRelativeWeekNum", "toRelativeYearNum", "toSecond", "toStartOfFiveMinute", "toStartOfHour", "toStartOfMinute", "toStartOfMonth", "toStartOfQuarter", "toStartOfYear", "toString", "toStringCutToZero", "toTime", "toUInt16", "toUInt32", "toUInt64", "toUInt8", "toYear", "today", "topLevelDomain", "ucase", "unhex", "uniq", "uniqArray", "uniqArrayIf", "uniqArrayIf", "uniqCombined", "uniqCombinedIf", "uniqExact", "uniqExactIf", "uniqHLL12", "uniqUpTo", "upper", "upperUTF8", "varPop", "varPopIf", "varSamp", "varSampIf", "yesterday"]; - p.Macros = ["$table", "$timeCol", "$dateTimeCol", "$from", "$to", "$interval", "$timeFilter", "$timeSeries", "$rate", "$columns", "$rateColumns", "$unescape"]; - p.KeywordsRe = function () { - return this.re(p.Keywords); - }; - p.ConstantsRe = function () { - return this.re(p.Constants); - }; - p.FunctionsRe = function () { - return this.re(p.Funcs).concat(this.re(p.Macros)); - }; - p.DataTypesRe = function () { - return this.re(p.DataTypes); - }; - p.FunctionsCompletions = function () { - return [{ - "name": "corr", - "def": "corr(x, y)", - "docText": "Calculates the Pearson correlation coefficient: Σ((x - x̅)(y - y̅)) / sqrt(Σ((x - x̅)2) * Σ((y - y̅)2))." - }, { - "name": "stddevPop", - "def": "stddevPop(x)", - "docText": "The result is equal to the square root of `varPop(x)`." - }, { - "name": "varPop", - "def": "varPop(x, y)", - "docText": "Calculates the value of `Σ((x - x̅)(y - y̅)) / n`." - }, { - "name": "argMin", - "def": "argMin(arg, val)", - "docText": "Calculates the `arg` value for a minimal `val` value. If there are several different values of `arg` for minimal values of `val`, the first of these values encountered is output." - }, { - "name": "quantileExactWeighted", - "def": "quantileExactWeighted(level)(x, weight)", - "docText": "Computes the level quantile exactly. In this case, each value is taken into account with the weight weight - as if it is present weight once. The arguments of the function can be considered as histograms, where the value \"x\" corresponds to the \"column\" of the histogram of the height weight, and the function itself can be considered as the summation of histograms.\n" + "\n" + "The algorithm is a hash table. Because of this, in case the transmitted values ​​are often repeated, the function consumes less RAM than the quantileExact. You can use this function instead of quantileExact, specifying the number 1 as the weight." - }, { - "name": "min", - "def": "min(v)", - "docText": "Minimal execution speed in rows per second. Checked on every data block when `timeout_before_checking_execution_speed` expires. If the execution speed is lower, an exception is thrown." - }, { - "name": "varSamp", - "def": "varSamp(x)", - "docText": "Calculates the amount Σ((x - x̅)2) / (n - 1), where 'n' is the sample size and 'x̅' is the average value of 'x'.\n" + "\n" + "It represents an unbiased estimate of the variance of a random variable, if the values passed to the function are a sample of this random amount.\n" + "\n" + "Returns Float64. If n <= 1, it returns +∞." - }, { - "name": "anyLast", - "def": "anyLast(x)", - "docText": "Selects the last value encountered. \n" + "\n" + " The result is just as indeterminate as for the `any` function." - }, { - "name": "argMax", - "def": "argMax(arg, val)", - "docText": "Calculates the `arg` value for a maximum `val` value. If there are several different values of `arg` for maximum values of `val`, the first of these values encountered is output." - }, { - "name": "count", - "def": "count()", - "docText": "Counts the number of rows. " - }, { - "name": "any", - "def": "any(x)", - "docText": "Selects the last value encountered. \n" + "\n" + " The result is just as indeterminate as for the `any` function." - }, { - "name": "avg", - "def": "avg(x)", - "docText": "Calculates the average. \n" + "\n" + " Only works for numbers. \n" + "\n" + " The result is always Float64." - }, { - "name": "sequenceMatch", - "def": "sequenceMatch(pattern)(time, cond1, cond2, ...)", - "docText": "Pattern matching for event chains.\n" + "\n" + "'pattern' is a string containing a pattern to match. The pattern is similar to a regular expression. 'time' is the event time of the DateTime type. 'cond1, cond2 ...' are from one to 32 arguments of the UInt8 type that indicate whether an event condition was met.\n" + "\n" + "The function collects a sequence of events in RAM. Then it checks whether this sequence matches the pattern. It returns UInt8 - 0 if the pattern isn't matched, or 1 if it matches.\n" + "\n" + "Example: sequenceMatch('(?1).*(?2)')(EventTime, URL LIKE '%company%', URL LIKE '%cart%') - whether there was a chain of events in which pages with the address in company were visited earlier than pages with the address in cart." - }, { - "name": "stddevSamp", - "def": "stddevSamp(x)", - "docText": "The result is equal to the square root of `varSamp(x)`." - }, { - "name": "medianDeterministic", - "def": "medianDeterministic(x, determinator)", - "docText": "This function works similarly to the `median` function - it approximates the median." - }, { - "name": "quantilesTimingWeighted", - "def": "quantilesTimingWeighted(level1, level2, ...)(x, weight)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianTimingWeighted` function." - }, { - "name": "uniq", - "def": "uniq(N)(x)", - "docText": "Calculates the number of different argument values, if it is less than or equal to N. \n" + "\n" + " If the number of different argument values is greater than N, it returns N + 1." - }, { - "name": "covarSamp", - "def": "covarSamp(x, y)", - "docText": "Calculates the value of `Σ((x - x̅)(y - y̅)) / (n - 1)`. " + "Returns Float64. If n <= 1, it returns +∞." - }, { - "name": "max", - "def": "max(v)", - "docText": "Maximum number of bytes (uncompressed data) that can be passed to a remote server or saved in a temporary table when using GLOBAL IN." - }, { - "name": "quantileTDigest", - "def": "quantileTDigest(level)(x)", - "docText": "t-digest" - }, { - "name": "quantilesTiming", - "def": "quantilesTiming(level1, level2, ...)(x, weight)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianTimingWeighted` function." - }, { - "name": "quantiles", - "def": "quantiles(level1, level2, ...)(x, determinator)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function." - }, { - "name": "quantile", - "def": "quantile(level1, level2, ...)(x, determinator)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function." - }, { - "name": "groupArray", - "def": "groupArray(x)", - "docText": "Creates an array of argument values. \n" + "\n" + " Values can be added to the array in any (indeterminate) order. \n" + "\n" + " In some cases, you can rely on the order of execution. This applies to cases when SELECT comes from a subquery that uses ORDER BY." - }, { - "name": "sum", - "def": "sum(x)", - "docText": "Calculates the sum. \n" + "\n" + " Only works for numbers." - }, { - "name": "median", - "def": "median(x, weight)", - "docText": "Differs from the `medianTiming` function in that it has a second argument - `weights`. Weight is a non-negative integer. \n" + "\n" + " The result is calculated as if the `x` value were passed `weight` number of times to the `medianTiming` function." - }, { - "name": "quantileTiming", - "def": "quantileTiming(level)(x, weight)", - "docText": "Calculates the quantile of `level` using the same algorithm as the `medianTimingWeighted` function." - }, { - "name": "quantileTimingWeighted", - "def": "quantileTimingWeighted(level)(x, weight)", - "docText": "Calculates the quantile of `level` using the same algorithm as the `medianTimingWeighted` function." - }, { - "name": "groupUniqArray", - "def": "groupUniqArray(x)", - "docText": "Creates an array from different argument values. Memory consumption is the same as for the `uniqExact` function." - }, { - "name": "uniqHLL12", - "def": "uniqHLL12(x)", - "docText": "Uses the HyperLogLog algorithm to approximate the number of different values of the argument. " - }, { - "name": "covarPop", - "def": "covarPop(x, y)", - "docText": "Calculates the value of `Σ((x - x̅)(y - y̅)) / n`." - }, { - "name": "sequenceCount", - "def": "sequenceCount(pattern)(time, cond1, cond2, ...)", - "docText": "sequenceMatch" - }, { - "name": "quantileDeterministic", - "def": "quantileDeterministic(level)(x, determinator)", - "docText": "Calculates the quantile of `level` using the same algorithm as the `medianDeterministic` function." - }, { - "name": "quantileExact", - "def": "quantileExact(level)(x, weight)", - "docText": "" - }, { - "name": "quantilesDeterministic", - "def": "quantilesDeterministic(level1, level2, ...)(x, determinator)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function." - }, { - "name": "medianTiming", - "def": "medianTiming(x, weight)", - "docText": "Differs from the `medianTiming` function in that it has a second argument - `weights`." - }, { - "name": "medianTimingWeighted", - "def": "medianTimingWeighted(x, weight)", - "docText": "Differs from the `medianTiming` function in that it has a second argument - `weights`." - }, { - "name": "uniqExact", - "def": "uniqExact(x)", - "docText": "Calculates the number of different values of the argument, exactly. \n" + "\n" + " There is no reason to fear approximations, so it`s better to use the `uniq` function. \n" + "\n" + " You should use the `uniqExact` function if you definitely need an exact result. " - }, { - "name": "uniqCombined", - "def": "uniqCombined(x)", - "docText": "" - }, { - "name": "uniqCombinedIf", - "def": "uniqCombinedIf(x,v)", - "docText": "" - }, { - "name": "uniqUpTo", - "def": "uniqUpTo(N)(x)", - "docText": "Calculates the number of different argument values, if it is less than or equal to N. \n" + "\n" + " If the number of different argument values is greater than N, it returns N + 1." - }, { - "name": "substring", - "def": "substring(s, offset, length)", - "docText": "The same as `substring`, but for Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception)." - }, { - "name": "notLike", - "def": "notLike(haystack, pattern), haystack NOT LIKE pattern operator", - "docText": "The same thing as `like`, but negative." - }, { - "name": "hostName", - "def": "hostName()", - "docText": "Returns a string with the name of the host that this function was performed on. For distributed processing, this is the name of the remote server host, if the function is performed on a remote server." - }, { - "name": "globalNotIn", - "def": "globalNotIn(v)", - "docText": "See the section `IN operators`." - }, { - "name": "or", - "def": "or(v)", - "docText": "The same thing as `max_temporary_columns`, but without counting constant columns. \n" + "\n" + " Note that constant columns are formed fairly often when running a query, but they require approximately zero computing resources." - }, { - "name": "extractAll", - "def": "extractAll(haystack, pattern)", - "docText": "Extracts all the fragments of a string using a regular expression. If `haystack` doesn`t match the `pattern` regex, an empty string is returned. Returns an array of strings consisting of all matches to the regex." - }, { - "name": "arrayFirst", - "def": "arrayFirst(func, arr1, ...)", - "docText": "Returns the index of the first element in the `arr1` array for which `func` returns something other than 0." - }, { - "name": "arrayExists", - "def": "arrayExists([func,] arr1, ...)", - "docText": "Returns 1 if there is at least one element in `arr` for which `func` returns something other than 0. Otherwise, it returns 0." - }, { - "name": "arrayCount", - "def": "arrayCount([func,] arr1, ...)", - "docText": "Returns the number of elements in `arr` for which `func` returns something other than 0. If `func` is not specified, it returns the number of non-zero items in the array." - }, { - "name": "arrayMap", - "def": "arrayMap(func, arr1, ...)", - "docText": "Returns an array obtained from the original application of the `func` function to each element in the `arr` array." - }, { - "name": "now", - "def": "now(v)", - "docText": "If the parameter is true, INSERT operation will skip columns with unknown names from input. \n" + "\n" + " Otherwise, an exception will be generated, it is default behavior. \n" + "\n" + " The parameter works only for JSONEachRow and TSKV input formats." - }, { - "name": "intDiv", - "def": "intDiv(a, b)", - "docText": "Differs from `intDiv` in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one." - }, { - "name": "topLevelDomain", - "def": "topLevelDomain(v)", - "docText": "Selects the top-level domain. Example: .ru." - }, { - "name": "intHash32", - "def": "intHash32(v)", - "docText": "Calculates a 32-bit hash code from any type of integer. \n" + "\n" + " This is a relatively fast non-cryptographic hash function of average quality for numbers." - }, { - "name": "replaceOne", - "def": "replaceOne(haystack, pattern, replacement)", - "docText": "Replaces the first occurrence, if it exists, of the `pattern` substring in `haystack` with the `replacement` substring. \n" + "\n" + " Hereafter, `pattern` and `replacement` must be constants." - }, { - "name": "cityHash64", - "def": "cityHash64(v)", - "docText": "Calculates CityHash64 from a string or a similar hash function for any number of any type of arguments. \n" + "\n" + " For String-type arguments, CityHash is used. This is a fast non-cryptographic hash function for strings with decent quality" - }, { - "name": "OSToRoot", - "def": "OSToRoot(v)", - "docText": "Accepts a UInt8 number - the ID of the operating system from the Yandex.Metrica dictionary. If any OS matches the passed number, it returns a UInt8 number - the ID of the corresponding root OS (for example, it converts Windows Vista to Windows). Otherwise, returns 0." - }, { - "name": "sipHash128", - "def": "sipHash128(v)", - "docText": "Calculates SipHash from a string. \n" + "\n" + " Accepts a String-type argument. Returns FixedString(16). \n" + "\n" + " Differs from sipHash64 in that the final xor-folding state is only done up to 128 bits." - }, { - "name": "SHA1", - "def": "SHA1(v)", - "docText": "Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32)." - }, { - "name": "asin", - "def": "asin(x)", - "docText": "The arc sine." - }, { - "name": "SHA256", - "def": "SHA256(v)", - "docText": "Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32)." - }, { - "name": "MD5", - "def": "MD5(v)", - "docText": "Calculates the MD5 from a string and returns the resulting set of bytes as FixedString(16)." - }, { - "name": "bitmaskToList", - "def": "bitmaskToList(num)", - "docText": "Accepts an integer. Returns a string containing the list of powers of two that total the source number when summed. They are comma-separated without spaces in text format, in ascending order." - }, { - "name": "array", - "def": "array(v)", - "docText": "The -`Array` suffix can be appended to any aggregate function. In this case, the aggregate function takes arguments of the `Array(T)` type (arrays) instead of `T` type arguments. If the aggregate function accepts multiple arguments, this must be arrays of equal lengths. " - }, { - "name": "dictGetStringOrDefault", - "def": "dictGetStringOrDefault(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "greaterOrEquals", - "def": "greaterOrEquals(v)", - "docText": "" - }, { - "name": "e", - "def": "e(v)", - "docText": "What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw." - }, { - "name": "runningDifference", - "def": "runningDifference(x)", - "docText": "Calculates the difference between consecutive values in the data block. \n" + "\n" + " Result of the function depends on the order of the data in the blocks. \n" + "\n" + " It works only inside of the each processed block of data. Data splitting in the blocks is not explicitly controlled by the user. " - }, { - "name": "not", - "def": "not(v)", - "docText": "See the section `IN operators`." - }, { - "name": "intHash64", - "def": "intHash64(v)", - "docText": "Calculates a 64-bit hash code from any type of integer. \n" + "\n" + " It works faster than intHash32. Average quality." - }, { - "name": "acos", - "def": "acos(x)", - "docText": "The arc cosine." - }, { - "name": "dictGetString", - "def": "dictGetString(v)", - "docText": "" - }, { - "name": "and", - "def": "and(x, determinator)", - "docText": "This function works similarly to the `median` function - it approximates the median. However, in contrast to `median`, the result is deterministic and does not depend on the order of query execution. \n" + "\n" + " To achieve this, the function takes a second argument - the `determinator`. " - }, { - "name": "dictGetDate", - "def": "dictGetDate(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "dictGetFloat32", - "def": "dictGetFloat32(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "dictGetInt8", - "def": "dictGetInt8(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "dictGetUInt32", - "def": "dictGetUInt32(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "OSIn", - "def": "OSIn(lhs, rhs)", - "docText": "Checks whether the `lhs` operating system belongs to the `rhs` operating system." - }, { - "name": "arrayFirstIndex", - "def": "arrayFirstIndex(func, arr1, ...)", - "docText": "Returns the index of the first element in the `arr1` array for which `func` returns something other than 0." - }, { - "name": "ceil", - "def": "ceil(x[, N])", - "docText": "Returns the smallest round number that is greater than or equal to `x`. In every other way, it is the same as the `floor` function (see above)." - }, { - "name": "fragment", - "def": "fragment(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, { - "name": "dictGetUInt8", - "def": "dictGetUInt8(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "dictHas", - "def": "dictHas(v)", - "docText": "dictHas('dict_name', id) check the presence of a key in the dictionary. Returns a value of type UInt8, equal to 0, if there is no key and 1 if there is a key." - }, { - "name": "arraySum", - "def": "arraySum([func,] arr1, ...)", - "docText": "Returns the sum of the `func` values. If the function is omitted, it just returns the sum of the array elements." - }, { - "name": "emptyArrayDateTime", - "def": "emptyArrayDateTime(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "intDivOrZero", - "def": "intDivOrZero(a, b)", - "docText": "Differs from `intDiv` in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one." - }, { - "name": "SEHierarchy", - "def": "SEHierarchy(v)", - "docText": "Accepts a UInt8 number - the ID of the search engine from the Yandex.Metrica dictionary. Returns an array with a hierarchy of search engines. Similar to the `regionHierarchy` function." - }, { - "name": "regionToContinent", - "def": "regionToContinent(id[, geobase])", - "docText": "Converts a region to a continent. In every other way, this function is the same as `regionToCity`. \n" + "\n" + " Example: `regionToContinent(toUInt32(213)) = 10001` converts Moscow (213) to Eurasia (10001)." - }, { - "name": "dictGetInt32", - "def": "dictGetInt32(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "toInt8", - "def": "toInt8(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "materialize", - "def": "materialize(x)", - "docText": "Turns a constant into a full column containing just one value. \n" + "\n" + " In ClickHouse, full columns and constants are represented differently in memory. Functions work differently for constant arguments and normal arguments (different code is executed), although the result is almost always the same. This function is for debugging this behavior." - }, { - "name": "regionToCountry", - "def": "regionToCountry(id[, geobase])", - "docText": "Converts a region to a country. In every other way, this function is the same as `regionToCity`. \n" + "\n" + " Example: `regionToCountry(toUInt32(213)) = 225` converts Moscow (213) to Russia (225)." - }, { - "name": "dictGetDateTime", - "def": "dictGetDateTime(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "xor", - "def": "xor(v)", - "docText": "" - }, { - "name": "regionToCity", - "def": "regionToCity(id[, geobase])", - "docText": "Accepts a UInt32 number - the region ID from the Yandex geobase. If this region is a city or part of a city, it returns the region ID for the appropriate city. Otherwise, returns 0." - }, { - "name": "dictGetFloat64", - "def": "dictGetFloat64(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "timeSlot", - "def": "timeSlot(StartTime, Duration)", - "docText": "For a time interval starting at `StartTime` and continuing for `Duration` seconds, it returns an array of moments in time, consisting of points from this interval rounded down to the half hour." - }, { - "name": "toTime", - "def": "toTime(v)", - "docText": "Converts a date with time to the date of the start of the Unix Epoch, while preserving the time." - }, { - "name": "log2", - "def": "log2(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the binary logarithm of the argument." - }, { - "name": "toRelativeHourNum", - "def": "toRelativeHourNum(v)", - "docText": "Converts a date with time or date to the number of the hour, starting from a certain fixed point in the past." - }, { - "name": "toRelativeDayNum", - "def": "toRelativeDayNum(v)", - "docText": "Converts a date with time or date to the number of the day, starting from a certain fixed point in the past." - }, { - "name": "toRelativeWeekNum", - "def": "toRelativeWeekNum(v)", - "docText": "Converts a date with time or date to the number of the week, starting from a certain fixed point in the past." - }, { - "name": "splitByString", - "def": "splitByString(separator, s)", - "docText": "The same as above, but it uses a string of multiple characters as the separator. The string must be non-empty." - }, { - "name": "currentDatabase", - "def": "currentDatabase()", - "docText": "Returns the name of the current database. \n" + "\n" + " You can use this function in table engine parameters in a CREATE TABLE query where you need to specify the database." - }, { - "name": "toRelativeMonthNum", - "def": "toRelativeMonthNum(v)", - "docText": "Converts a date with time or date to the number of the month, starting from a certain fixed point in the past." - }, { - "name": "visibleWidth", - "def": "visibleWidth(x)", - "docText": "Calculates the approximate width when outputting values to the console in text format (tab-separated). This function is used by the system for implementing Pretty formats." - }, { - "name": "bitShiftRight", - "def": "bitShiftRight(a, b)", - "docText": "" - }, { - "name": "toRelativeYearNum", - "def": "toRelativeYearNum(v)", - "docText": "Converts a date with time or date to the number of the year, starting from a certain fixed point in the past." - }, { - "name": "toStartOfHour", - "def": "toStartOfHour(v)", - "docText": "Rounds down a date with time to the start of the hour." - }, { - "name": "halfMD5", - "def": "halfMD5(v)", - "docText": "Calculates the MD5 from a string. Then it takes the first 8 bytes of the hash and interprets them as UInt64 in big endian." - }, { - "name": "toStartOfFiveMinute", - "def": "toStartOfFiveMinute(v)", - "docText": "Rounds down a date with time to the start of the 5 minute (00:00, 00:05, 00:10...)." - }, { - "name": "toUInt16OrZero", - "def": "toUInt16OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument." - }, { - "name": "toMonday", - "def": "toMonday(v)", - "docText": "Rounds down a date or date with time to the nearest Monday. \n" + "\n" + " Returns the date." - }, { - "name": "IPv6NumToString", - "def": "IPv6NumToString(x)", - "docText": "Accepts a FixedString(16) value containing the IPv6 address in binary format. Returns a string containing this address in text format. " - }, { - "name": "indexOf", - "def": "indexOf(arr, x)", - "docText": "Returns the index of the `x` element (starting from 1) if it is in the array, or 0 if it is not." - }, { - "name": "today", - "def": "today(v)", - "docText": "Accepts zero arguments and returns the current date at one of the moments of request execution. \n" + "\n" + " The same as `toDate(now())`." - }, { - "name": "emptyArrayToSingle", - "def": "emptyArrayToSingle(v)", - "docText": "Accepts an empty array as argument and returns an array of one element equal to the default value." - }, { - "name": "sleep", - "def": "sleep(seconds)", - "docText": "Sleeps `seconds` seconds on each data block. You can specify an integer or a floating-point number." - }, { - "name": "extract", - "def": "extract(params, name)", - "docText": "Parses the string in double quotes. The value is unescaped. If unescaping failed, it returns an empty string. Examples: " - }, { - "name": "emptyArrayInt8", - "def": "emptyArrayInt8(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "regionToName", - "def": "regionToName(id[, lang])", - "docText": "Accepts a UInt32 number - the region ID from the Yandex geobase. A string with the name of the language can be passed as a second argument. Supported languages are: ru, en, ua, uk, by, kz, tr. If the second argument is omitted, the language `ru` is used. " - }, { - "name": "concat", - "def": "concat(arr[, separator])", - "docText": "Concatenates strings from the array elements, using `separator` as the separator. \n" + "\n" + " `separator` is a string constant, an optional parameter. By default it is an empty string. \n" + "\n" + " Returns a string." - }, { - "name": "convertCharset", - "def": "convertCharset(s, from, to)", - "docText": "Returns a string with the data `s` (encoded as `from` charset) that was converted to the `to` charset." - }, { - "name": "toMonth", - "def": "toMonth(v)", - "docText": "Converts a date or date with time to a UInt8 number containing the month number (1-12)." - }, { - "name": "IPv6StringToNum", - "def": "IPv6StringToNum(s)", - "docText": "The reverse function of IPv6NumToString. If the IPv6 address has an invalid format, it returns a string of null bytes. \n" + "\n" + " HEX can be uppercase or lowercase." - }, { - "name": "emptyArrayString", - "def": "emptyArrayString(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "uptime", - "def": "uptime()", - "docText": "Returns server's uptime in seconds." - }, { - "name": "blockSize", - "def": "blockSize()", - "docText": "Gets the size of the block. \n" + "\n" + " In ClickHouse, queries are always run on blocks (sets of column parts). This function allows getting the size of the block that you called it for." - }, { - "name": "toInt64OrZero", - "def": "toInt64OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "pathFull", - "def": "pathFull(v)", - "docText": "Selects the path, but including query-string and fragment. Example: /top/news.html?page=2#comments" - }, { - "name": "emptyArrayDate", - "def": "emptyArrayDate(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "emptyArrayInt64", - "def": "emptyArrayInt64(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "toInt32OrZero", - "def": "toInt32OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "greater", - "def": "greater(v)", - "docText": "" - }, { - "name": "emptyArrayInt32", - "def": "emptyArrayInt32(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "toString", - "def": "toString(str)", - "docText": "Accepts a FixedString(16) value containing the UUID in the binary format. Returns a readable string containing the UUID in the text format." - }, { - "name": "greatest", - "def": "greatest(a, b)", - "docText": "Returns the greatest element of a and b." - }, { - "name": "emptyArrayUInt64", - "def": "emptyArrayUInt64(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "emptyArrayUInt32", - "def": "emptyArrayUInt32(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "formatReadableSize", - "def": "formatReadableSize(x)", - "docText": "Gets a size (number of bytes). Returns a string that contains rounded size with the suffix (KiB, MiB etc.).\n" + "\n" + "Example:\n" + "\n" + "SELECT\n" + " arrayJoin([1, 1024, 1024*1024, 192851925]) AS f_bytes,\n" + " formatReadableSize(filesize_bytes) AS filesize\n" + "┌─f_bytes-─┬─filesize───┐\n" + "│ 1 │ 1.00 B │\n" + "│ 1024 │ 1.00 KiB │\n" + "│ 1048576 │ 1.00 MiB │\n" + "│192851925 │ 183.92 MiB │\n" + "└──────────┴────────────┘\n" - }, { - "name": "toInt16OrZero", - "def": "toInt16OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "emptyArrayUInt8", - "def": "emptyArrayUInt8(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "protocol", - "def": "protocol(v)", - "docText": "Selects the protocol. Examples: http, ftp, mailto, magnet..." - }, { - "name": "regionToPopulation", - "def": "regionToPopulation(id[, geobase])", - "docText": "Gets the population for a region. \n" + "\n" + " The population can be recorded in files with the geobase. See the section `External dictionaries`. \n" + "\n" + " If the population is not recorded for the region, it returns 0. \n" + "\n" + " In the Yandex geobase, the population might be recorded for child regions, but not for parent regions." - }, { - "name": "notIn", - "def": "notIn(v)", - "docText": "See the section `IN operators`." - }, { - "name": "position", - "def": "position(haystack, needle)", - "docText": "The same as `position`, but the position is returned in Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + "\n" + " There's also positionCaseInsensitiveUTF8 function." - }, { - "name": "arrayElement", - "def": "arrayElement(arr, n), arr[n] operator", - "docText": "Get the element with the index `n` from the array `arr`. \n" + "\n" + " `n` should be any integer type. \n" + "\n" + " Indexes in an array begin from one. \n" + "\n" + " Negative indexes are supported - in this case, it selects the corresponding element numbered from the end. " - }, { - "name": "toStringCutToZero", - "def": "toStringCutToZero(s)", - "docText": "Accepts a String or FixedString argument. Returns a String that is cut to a first null byte occurrence." - }, { - "name": "log", - "def": "log(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the decimal logarithm of the argument." - }, { - "name": "SEIn", - "def": "SEIn(lhs, rhs)", - "docText": "Checks whether the `lhs` search engine belongs to the `rhs` search engine." - }, { - "name": "replicate", - "def": "replicate(v)", - "docText": "Create a MergeTree table with a different name. Move all the data from the directory with the ReplicatedMergeTree table data to the new table`s data directory." - }, { - "name": "sipHash64", - "def": "sipHash64(v)", - "docText": "Calculates SipHash from a string. \n" + "\n" + " Accepts a String-type argument. Returns UInt64. \n" + "\n" + " SipHash is a cryptographic hash function. It works at least three times faster than MD5. For more information, see https://131002.net/siphash/" - }, { - "name": "emptyArrayUInt16", - "def": "emptyArrayUInt16(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "hex", - "def": "hex(str)", - "docText": "Accepts a string containing any number of hexadecimal digits, and returns a string containing the corresponding bytes. Supports both uppercase and lowercase letters A-F. The number of hexadecimal digits doesn`t have to be even." - }, { - "name": "regionToDistrict", - "def": "regionToDistrict(id[, geobase])", - "docText": "Converts a region to a federal district (type 4 in the geobase). In every other way, this function is the same as `regionToCity`. " - }, { - "name": "arrayFilter", - "def": "arrayFilter(func, arr1, ...)", - "docText": "Returns an array containing only the elements in `arr1` for which `func` returns something other than 0. \n" + "\n" + " Examples: \n" + "\n" + " SELECT arrayFilter(x -> x LIKE `%World%`, [`Hello`, `abc World`]) AS res " - }, { - "name": "toStartOfQuarter", - "def": "toStartOfQuarter(v)", - "docText": "Rounds down a date or date with time to the first day of the quarter. \n" + "\n" + " The first day of the quarter is either 1 January, 1 April, 1 July, or 1 October. Returns the date." - }, { - "name": "divide", - "def": "divide(a, b), a / b operator", - "docText": "Calculates the quotient of the numbers. The result type is always a floating-point type. \n" + "\n" + " It is not integer division. For integer division, use the `intDiv` function. \n" + "\n" + " When dividing by zero you get `inf`, `-inf`, or `nan`." - }, { - "name": "reverseUTF8", - "def": "reverseUTF8(v)", - "docText": "Reverses a sequence of Unicode code points, assuming that the string contains a set of bytes representing a UTF-8 text. Otherwise, it does something else (it doesn`t throw an exception)." - }, { - "name": "toDate", - "def": "toDate(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "emptyArrayFloat64", - "def": "emptyArrayFloat64(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "abs", - "def": "abs(s, c)", - "docText": "If the `s` string is non-empty and does not contain the `c` character at the end, it appends the `c` character to the end." - }, { - "name": "yesterday", - "def": "yesterday(v)", - "docText": "Accepts zero arguments and returns yesterday`s date at one of the moments of request execution. \n" + "\n" + " The same as `today() - 1`." - }, { - "name": "toMinute", - "def": "toMinute(v)", - "docText": "Converts a date with time to a UInt8 number containing the number of the minute of the hour (0-59)." - }, { - "name": "bitXor", - "def": "bitXor(a, b)", - "docText": "" - }, { - "name": "minus", - "def": "minus(a, b), a - b operator", - "docText": "Calculates the difference. The result is always signed. \n" + "\n" + " You can also calculate whole numbers from a date or date with time. The idea is the same - see above for `plus`." - }, { - "name": "toDateTime", - "def": "toDateTime(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "modulo", - "def": "modulo(a, b), a % b operator", - "docText": "Calculates the remainder after division. \n" + "\n" + " If arguments are floating-point numbers, they are pre-converted to integers by dropping the decimal portion. The remainder is taken in the same sense as in C++. Truncated division is used for negative numbers. \n" + "\n" + " An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one." - }, { - "name": "bitmaskToArray", - "def": "bitmaskToArray(num)", - "docText": "Accepts an integer. Returns an array of UInt64 numbers containing the list of powers of two that total the source number when summed. Numbers in the array are in ascending order." - }, { - "name": "negate", - "def": "negate(a), -a operator", - "docText": "Calculates a number with the reverse sign. The result is always signed." - }, { - "name": "emptyArrayFloat32", - "def": "emptyArrayFloat32(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "range", - "def": "range(N)", - "docText": "Returns an array of numbers from 0 to N-1. \n" + "\n" + " Just in case, an exception is thrown if arrays with a total length of more than 100,000,000 elements are created in a data block." - }, { - "name": "arrayAll", - "def": "arrayAll([func,] arr1, ...)", - "docText": "Returns 1 if `func` returns something other than 0 for all the elements in `arr`. Otherwise, it returns 0." - }, { - "name": "toInt32", - "def": "toInt32(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "unhex", - "def": "unhex(str)", - "docText": "Accepts a string containing any number of hexadecimal digits, and returns a string containing the corresponding bytes. Supports both uppercase and lowercase letters A-F. The number of hexadecimal digits doesn`t have to be even. If it is odd, the last digit is interpreted as the younger half of the 00-0F byte. If the argument string contains anything other than hexadecimal digits, some implementation-defined result is returned (an exception isn`t thrown). \n" + "\n" + " If you want to convert the result to a number, you can use the functions `reverse` and `reinterpretAsType`." - }, { - "name": "toFloat64", - "def": "toFloat64(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "bitAnd", - "def": "bitAnd(a, b)", - "docText": "" - }, { - "name": "toStartOfYear", - "def": "toStartOfYear(v)", - "docText": "Rounds down a date or date with time to the first day of the year. \n" + "\n" + " Returns the date." - }, { - "name": "bitOr", - "def": "bitOr(a, b)", - "docText": "" - }, { - "name": "SEToRoot", - "def": "SEToRoot(v)", - "docText": "Accepts a UInt8 number - the ID of the search engine from the Yandex.Metrica dictionary. If any search engine matches the passed number, it returns a UInt8 number - the ID of the corresponding root search engine (for example, it converts Yandex.Images to Yandex). Otherwise, returns 0." - }, { - "name": "toRelativeMinuteNum", - "def": "toRelativeMinuteNum(v)", - "docText": "Converts a date with time or date to the number of the minute, starting from a certain fixed point in the past." - }, { - "name": "visitParamExtractInt", - "def": "visitParamExtractInt(params, name)", - "docText": "The same as for Int64." - }, { - "name": "emptyArrayInt16", - "def": "emptyArrayInt16(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, { - "name": "visitParamExtractString", - "def": "visitParamExtractString(params, name)", - "docText": "Parses the string in double quotes. The value is unescaped. If unescaping failed, it returns an empty string. " - }, { - "name": "arrayEnumerateUniq", - "def": "arrayEnumerateUniq(arr, ...)", - "docText": "Returns an array the same size as the source array, indicating for each element what its position is among elements with the same value. " - }, { - "name": "visitParamExtractUInt", - "def": "visitParamExtractUInt(params, name)", - "docText": "Parses UInt64 from the value of the field named `name`. If this is a string field, it tries to parse a number from the beginning of the string. If the field doesn`t exist, or it exists but doesn`t contain a number, it returns 0." - }, { - "name": "toTypeName", - "def": "toTypeName(x)", - "docText": "Gets the type name. Returns a string containing the type name of the passed argument." - }, { - "name": "empty", - "def": "empty(v)", - "docText": "Accepts an empty array as argument and returns an array of one element equal to the default value." - }, { - "name": "multiply", - "def": "multiply(a, b), a * b operator", - "docText": "Calculates the product of the numbers." - }, { - "name": "has", - "def": "has('database', 'table', 'column')", - "docText": "Accepts constant String columns - database name, table name and column name. Returns constant UInt8 value, equal to 1 if column exists, otherwise 0.\n" + "\n" + " If table doesn't exist than exception is thrown. \n" + "\n" + " For elements of nested data structure function checks existence of column. For nested data structure 0 is returned." - }, { - "name": "bitNot", - "def": "bitNot(a)", - "docText": "" - }, { - "name": "lessOrEquals", - "def": "lessOrEquals(v)", - "docText": "greaterOrEquals, >= operator" - }, { - "name": "reinterpretAsInt64", - "def": "reinterpretAsInt64(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "IPv4NumToString", - "def": "IPv4NumToString(num)", - "docText": "Similar to IPv4NumToString, but using `xxx` instead of the last octet. " - }, { - "name": "bitShiftLeft", - "def": "bitShiftLeft(a, b)", - "docText": "" - }, { - "name": "dictGetInt16", - "def": "dictGetInt16(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "toUInt32OrZero", - "def": "toUInt32OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "regionIn", - "def": "regionIn(lhs, rhs[, geobase])", - "docText": "Checks whether a `lhs` region belongs to a `rhs` region. Returns a UInt8 number equal to 1 if it belongs, or 0 if it doesn`t belong. \n" + "\n" + " The relationship is reflexive - any region also belongs to itself." - }, { - "name": "reinterpretAsUInt8", - "def": "reinterpretAsUInt8(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "dictIsIn", - "def": "dictIsIn(v)", - "docText": "`dictIsIn(`dict_name`, child_id, ancestor_id)` \n" + "\n" + " - For the `dict_name` hierarchical dictionary, finds out whether the `child_id` key is located inside `ancestor_id` (or matches `ancestor_id`). Returns UInt8." - }, { - "name": "toSecond", - "def": "toSecond(v)", - "docText": "Converts a date with time to a UInt8 number containing the number of the second in the minute (0-59). \n" + "\n" + " Leap seconds are not accounted for." - }, { - "name": "least", - "def": "least(a, b)", - "docText": "Returns the least element of a and b." - }, { - "name": "countEqual", - "def": "countEqual(arr, x)", - "docText": "Returns the number of elements in the array equal to `x`. Equivalent to arrayCount(elem -> elem = x, arr)." - }, { - "name": "IPv4StringToNum", - "def": "IPv4StringToNum(s)", - "docText": "The reverse function of IPv4NumToString. If the IPv4 address has an invalid format, it returns 0." - }, { - "name": "replaceRegexpAll", - "def": "replaceRegexpAll(haystack, pattern, replacement)", - "docText": "This does the same thing, but replaces all the occurrences" - }, { - "name": "SHA224", - "def": "SHA224(v)", - "docText": "Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32). \n" + "\n" + " The function works fairly slowly (SHA-1 processes about 5 million short strings per second per processor core, while SHA-224 and SHA-256 process about 2.2 million). " - }, { - "name": "URLHash", - "def": "URLHash(url[, N])", - "docText": "A fast, decent-quality non-cryptographic hash function for a string obtained from a URL using some type of normalization. \n" + "\n" + " URLHash(s) - Calculates a hash from a string without one of the trailing symbols /,? or # at the end, if present" - }, { - "name": "equals", - "def": "equals(v)", - "docText": "

greaterOrEquals, >= operator

" - }, { - "name": "plus", - "def": "plus(a, b), a + b operator", - "docText": "Calculates the sum of the numbers. \n" + "\n" + " You can also add whole numbers with a date or date and time. In the case of a date, adding a whole number means adding the corresponding number of days. For a date with time, it means adding the corresponding number of seconds." - }, { - "name": "less", - "def": "less(v)", - "docText": "

greaterOrEquals, >= operator

" - }, { - "name": "regionHierarchy", - "def": "regionHierarchy(id[, geobase])", - "docText": "Accepts a UInt32 number - the region ID from the Yandex geobase. Returns an array of region IDs consisting of the passed region and all parents along the chain. \n" + "\n" + " Example: `regionHierarchy(toUInt32(213)) = [213,1,3,225,10001,10000]`." - }, { - "name": "toUInt64OrZero", - "def": "toUInt64OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "rowNumberInAllBlocks", - "def": "rowNumberInAllBlocks()", - "docText": "Returns an incremental row number within all blocks that were processed by this function." - }, { - "name": "toDayOfWeek", - "def": "toDayOfWeek(v)", - "docText": "Converts a date or date with time to a UInt8 number containing the number of the day of the week (Monday is 1, and Sunday is 7)." - }, { - "name": "bar", - "def": "bar(v)", - "docText": "Allows building a unicode-art diagram. \n" + "\n" + " bar(x, min, max, width) - Draws a band with a width proportional to (x - min) and equal to `width` characters when x" - }, { - "name": "if", - "def": "if(v)", - "docText": "The suffix -`If` can be appended to the name of any aggregate function. In this case, the aggregate function accepts an extra argument - a condition (Uint8 type). " - }, { - "name": "regionToArea", - "def": "regionToArea(id[, geobase])", - "docText": "Converts a region to an area (type 5 in the geobase). In every other way, this function is the same as `regionToCity`." - }, { - "name": "dictGetUInt16", - "def": "dictGetUInt16(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "toUInt8", - "def": "toUInt8(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toUInt16", - "def": "toUInt16(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "path", - "def": "path(URL)", - "docText": "- The same thing, but without the protocol and host in the result. The / element (root) is not included." - }, { - "name": "extractURLParameters", - "def": "extractURLParameters(URL)", - "docText": "- Gets an array of name=value strings corresponding to the URL parameters. The values are not decoded in any way." - }, { - "name": "OSHierarchy", - "def": "OSHierarchy(v)", - "docText": "Accepts a UInt8 number - the ID of the operating system from the Yandex.Metrica dictionary. Returns an array with a hierarchy of operating systems. Similar to the `regionHierarchy` function." - }, { - "name": "cutQueryStringAndFragment", - "def": "cutQueryStringAndFragment(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, { - "name": "timeSlots", - "def": "timeSlots(StartTime, Duration)", - "docText": "For a time interval starting at `StartTime` and continuing for `Duration` seconds, it returns an array of moments in time, consisting of points from this interval rounded down to the half hour. \n" + "\n" + " For example, `timeSlots(toDateTime(`2012-01-01 12:20:00`), toUInt32(600)) = [toDateTime(`2012-01-01 12:00:00`), toDateTime(`2012-01-01 12:30:00`)]`. \n" + "\n" + " This is necessary for searching for pageviews in the corresponding session." - }, { - "name": "toUInt32", - "def": "toUInt32(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toStartOfMinute", - "def": "toStartOfMinute(v)", - "docText": "Rounds down a date with time to the start of the minute." - }, { - "name": "version", - "def": "version()", - "docText": "Returns server's version as a string." - }, { - "name": "toUInt64", - "def": "toUInt64(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toInt16", - "def": "toInt16(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "reinterpretAsInt16", - "def": "reinterpretAsInt16(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "toInt64", - "def": "toInt64(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toFixedString", - "def": "toFixedString(s, N)", - "docText": "Converts a String type argument to a FixedString(N) type (a string with fixed length N). N must be a constant. If the string has fewer bytes than N, it is passed with null bytes to the right. If the string has more bytes than N, an exception is thrown." - }, { - "name": "toFloat32", - "def": "toFloat32(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "dictGetHierarchy", - "def": "dictGetHierarchy(v)", - "docText": "`dictGetHierarchy(`dict_name`, id)` \n" + "\n" + " - For the `dict_name` hierarchical dictionary, returns an array of dictionary keys starting from `id` and continuing along the chain of parent elements. Returns Array(UInt64)." - }, { - "name": "dictGetInt64", - "def": "dictGetInt64(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "CAST", - "def": "CAST(x, t)", - "docText": "Casts `x` to the `t` data type. \n" + "\n" + " The syntax `CAST(x AS t)` is also supported. \n" - }, { - "name": "toRelativeSecondNum", - "def": "toRelativeSecondNum(v)", - "docText": "Converts a date with time or date to the number of the second, starting from a certain fixed point in the past." - }, { - "name": "toUInt8OrZero", - "def": "toUInt8OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toStartOfMonth", - "def": "toStartOfMonth(v)", - "docText": "Rounds down a date or date with time to the first day of the month. \n" + "\n" + " Returns the date." - }, { - "name": "rand64", - "def": "rand64(v)", - "docText": "Returns a pseudo-random UInt64 number, evenly distributed among all UInt64-type numbers. \n" + "\n" + " Uses a linear congruential generator." - }, { - "name": "toInt8OrZero", - "def": "toInt8OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toFloat32OrZero", - "def": "toFloat32OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "toYear", - "def": "toYear(v)", - "docText": "Converts a date or date with time to a UInt16 number containing the year number (AD)." - }, { - "name": "atan", - "def": "atan(x)", - "docText": "The arc tangent." - }, { - "name": "toFloat64OrZero", - "def": "toFloat64OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, { - "name": "arrayEnumerate", - "def": "arrayEnumerate(arr, ...)", - "docText": "Returns an array the same size as the source array, indicating for each element what its position is among elements with the same value." - }, { - "name": "toDayOfMonth", - "def": "toDayOfMonth(v)", - "docText": "Converts a date or date with time to a UInt8 number containing the number of the day of the month (1-31)." - }, { - "name": "dictGetUInt64", - "def": "dictGetUInt64(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, { - "name": "IPv4NumToStringClassC", - "def": "IPv4NumToStringClassC(num)", - "docText": "Similar to IPv4NumToString, but using `xxx` instead of the last octet. " - }, { - "name": "reinterpretAsString", - "def": "reinterpretAsString(v)", - "docText": "This function accepts a number or date or date with time, and returns a string containing bytes representing the corresponding value in host order (little endian). Null bytes are dropped from the end. For example, a UInt32 type value of 255 is a string that is one byte long." - }, { - "name": "toHour", - "def": "toHour(v)", - "docText": "Converts a date with time to a UInt8 number containing the number of the hour in 24-hour time (0-23). \n" + "\n" + " This function assumes that if clocks are moved ahead, it is by one hour and occurs at 2 a.m., and if clocks are moved back, it is by one hour and occurs at 3 a.m. (which is not always true - even in Moscow the clocks were once changed at a different time)." - }, { - "name": "ignore", - "def": "ignore(...)", - "docText": "A function that accepts any arguments and always returns 0. \n" + "\n" + " However, the argument is still calculated. This can be used for benchmarks." - }, { - "name": "arrayJoin", - "def": "arrayJoin(v)", - "docText": "This is a very unusual function.\n" + "\n" + "Normal functions don't change a set of rows, but just change the values in each row (map). Aggregate functions compress a set of rows (fold or reduce). The 'arrayJoin' function takes each row and generates a set of rows (unfold).\n" + "\n" + "This function takes an array as an argument, and propagates the source row to multiple rows for the number of elements in the array. All the values in columns are simply copied, except the values in the column where this function is applied - it is replaced with the corresponding array value.\n" + "\n" + "A query can use multiple 'arrayJoin' functions. In this case, the transformation is performed multiple times.\n" + "\n" + "Note the ARRAY JOIN syntax in the SELECT query, which provides broader possibilities." - }, { - "name": "length", - "def": "length(v)", - "docText": "Returns the length of a string in Unicode code points (not in characters), assuming that the string contains a set of bytes that make up UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + "\n" + " The result type is UInt64." - }, { - "name": "tuple", - "def": "tuple(tuple, n), operator x.N", - "docText": "A function that allows getting columns from a tuple. \n" + "\n" + " `N` is the column index, starting from 1. `N` must be a constant. `N` must be a strict postive integer no greater than the size of the tuple. \n" + "\n" + " There is no cost to execute the function." - }, { - "name": "extractURLParameterNames", - "def": "extractURLParameterNames(URL)", - "docText": "- Gets an array of name=value strings corresponding to the names of URL parameters. The values are not decoded in any way." - }, { - "name": "tupleElement", - "def": "tupleElement(tuple, n), operator x.N", - "docText": "A function that allows getting columns from a tuple. \n" + "\n" + " `N` is the column index, starting from 1. `N` must be a constant. `N` must be a strict postive integer no greater than the size of the tuple. \n" + "\n" + " There is no cost to execute the function." - }, { - "name": "in", - "def": "in(v)", - "docText": "What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw." - }, { - "name": "globalIn", - "def": "globalIn(v)", - "docText": "See the section `IN operators`." - }, { - "name": "isFinite", - "def": "isFinite(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is not infinite and not a NaN, otherwise 0." - }, { - "name": "isNaN", - "def": "isNaN(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is a NaN, otherwise 0." - }, { - "name": "isInfinite", - "def": "isInfinite(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is infinite, otherwise 0. \n" + "\n" + " Note that 0 is returned for a NaN." - }, { - "name": "transform", - "def": "transform(v)", - "docText": "Transforms a value according to the explicitly defined mapping of some elements to other ones. \n" + "\n" + " There are two variations of this function: \n" + "\n" + " 1. `transform(x, array_from, array_to, default)` " - }, { - "name": "rand", - "def": "rand(v)", - "docText": "Returns a pseudo-random UInt64 number, evenly distributed among all UInt64-type numbers. \n" + "\n" + " Uses a linear congruential generator." - }, { - "name": "reinterpretAsUInt16", - "def": "reinterpretAsUInt16(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "pi", - "def": "pi(v)", - "docText": "Maximum pipeline depth. Corresponds to the number of transformations that each data block goes through during query processing. Counted within the limits of a single server. If the pipeline depth is greater, an exception is thrown. By default, 1000." - }, { - "name": "reinterpretAsUInt32", - "def": "reinterpretAsUInt32(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "reinterpretAsUInt64", - "def": "reinterpretAsUInt64(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "reinterpretAsInt8", - "def": "reinterpretAsInt8(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "upperUTF8", - "def": "upperUTF8(v)", - "docText": "Converts a string to uppercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. So for Turkish the result might not be exactly correct. " - }, { - "name": "reinterpretAsInt32", - "def": "reinterpretAsInt32(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "reinterpretAsFloat32", - "def": "reinterpretAsFloat32(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "reinterpretAsFloat64", - "def": "reinterpretAsFloat64(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "reinterpretAsDate", - "def": "reinterpretAsDate(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "reinterpretAsDateTime", - "def": "reinterpretAsDateTime(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, { - "name": "roundToExp2", - "def": "roundToExp2(num)", - "docText": "Accepts a number. If the number is less than one, it returns 0. Otherwise, it rounds the number down to the nearest (whole non-negative) degree of two." - }, { - "name": "upper", - "def": "upper(v)", - "docText": "Converts a string to uppercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. So for Turkish the result might not be exactly correct." - }, { - "name": "positionUTF8", - "def": "positionUTF8(haystack, needle)", - "docText": "The same as `position`, but the position is returned in Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + "\n" + " There's also positionCaseInsensitiveUTF8 function." - }, { - "name": "roundDuration", - "def": "roundDuration(num)", - "docText": "Accepts a number. If the number is less than one, it returns 0. Otherwise, it rounds the number down to numbers from the set: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. This function is specific to Yandex.Metrica and used for implementing the report on session length." - }, { - "name": "roundAge", - "def": "roundAge(num)", - "docText": "Accepts a number. If the number is less than 18, it returns 0. Otherwise, it rounds the number down to numbers from the set: 18, 25, 35, 45. This function is specific to Yandex.Metrica and used for implementing the report on user age." - }, { - "name": "round", - "def": "round(num)", - "docText": "Accepts a number. If the number is less than 18, it returns 0. Otherwise, it rounds the number down to numbers from the set: 18, 25, 35, 45. This function is specific to Yandex.Metrica and used for implementing the report on user age." - }, { - "name": "floor", - "def": "floor(x[, N])", - "docText": "Returns a rounder number that is less than or equal to `x`." - }, { - "name": "notEmpty", - "def": "notEmpty(v)", - "docText": "Returns 0 for an empty array, or 1 for a non-empty array. \n" + "\n" + " The result type is UInt8. \n" + "\n" + " The function also works for strings." - }, { - "name": "lengthUTF8", - "def": "lengthUTF8(v)", - "docText": "Returns the length of a string in Unicode code points (not in characters), assuming that the string contains a set of bytes that make up UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + "\n" + " The result type is UInt64." - }, { - "name": "lower", - "def": "lower(v)", - "docText": "Converts a string to lowercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. " - }, { - "name": "lowerUTF8", - "def": "lowerUTF8(v)", - "docText": "Converts a string to lowercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. " - }, { - "name": "reverse", - "def": "reverse(v)", - "docText": "Reverses a sequence of Unicode code points, assuming that the string contains a set of bytes representing a UTF-8 text. Otherwise, it does something else (it doesn`t throw an exception)." - }, { - "name": "URLPathHierarchy", - "def": "URLPathHierarchy(URL)", - "docText": "- The same thing, but without the protocol and host in the result. The / element (root) is not included. " - }, { - "name": "substringUTF8", - "def": "substringUTF8(s, offset, length)", - "docText": "The same as `substring`, but for Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception)." - }, { - "name": "appendTrailingCharIfAbsent", - "def": "appendTrailingCharIfAbsent(s, c)", - "docText": "If the `s` string is non-empty and does not contain the `c` character at the end, it appends the `c` character to the end." - }, { - "name": "alphaTokens", - "def": "alphaTokens(s)", - "docText": "Selects substrings of consecutive bytes from the range a-z and A-Z. \n" + "\n" + " Returns an array of selected substrings." - }, { - "name": "splitByChar", - "def": "splitByChar(separator, s)", - "docText": "Splits a string into substrings, using `separator` as the separator. \n" + "\n" + " `separator` must be a string constant consisting of exactly one character. \n" + "\n" + " Returns an array of selected substrings" - }, { - "name": "arrayStringConcat", - "def": "arrayStringConcat(arr[, separator])", - "docText": "Concatenates strings from the array elements, using `separator` as the separator. \n" + "\n" + " `separator` is a string constant, an optional parameter. By default it is an empty string. \n" + "\n" + " Returns a string." - }, { - "name": "replaceAll", - "def": "replaceAll(haystack, pattern, replacement)", - "docText": "Replaces all occurrences of the `pattern` substring in `haystack` with the `replacement` substring." - }, { - "name": "replaceRegexpOne", - "def": "replaceRegexpOne(haystack, pattern, replacement)", - "docText": "Replacement using the `pattern` regular expression. A re2 regular expression. Replaces only the first occurrence, if it exists. \n" + "\n" + " A pattern can be specified as `replacement`. " - }, { - "name": "cbrt", - "def": "cbrt(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the cubic root of the argument." - }, { - "name": "match", - "def": "match(pattern)(time, cond1, cond2, ...)", - "docText": "Pattern matching for event chains. \n" + "\n" + " `pattern` is a string containing a pattern to match. The pattern is similar to a regular expression." - }, { - "name": "cutURLParameter", - "def": "cutURLParameter(URL, name)", - "docText": "Removes the URL parameter named `name`, if present. This function works under the assumption that the parameter name is encoded in the URL exactly the same way as in the passed argument." - }, { - "name": "like", - "def": "like(haystack, pattern), haystack NOT LIKE pattern operator", - "docText": "The same thing as `like`, but negative." - }, { - "name": "domain", - "def": "domain(v)", - "docText": "- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \n" + "\n" + " For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`." - }, { - "name": "domainWithoutWWW", - "def": "domainWithoutWWW(v)", - "docText": "- Selects the domain and removes no more than one `www.` from the beginning of it, if present." - }, { - "name": "firstSignificantSubdomain", - "def": "firstSignificantSubdomain(v)", - "docText": "- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \n" + "\n" + " For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`." - }, { - "name": "queryString", - "def": "queryString(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, { - "name": "queryStringAndFragment", - "def": "queryStringAndFragment(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, { - "name": "extractURLParameter", - "def": "extractURLParameter(URL)", - "docText": "- Gets an array of name=value strings corresponding to the names of URL parameters. The values are not decoded in any way." - }, { - "name": "URLHierarchy", - "def": "URLHierarchy(URL)", - "docText": "- Gets an array containing the URL trimmed to the `/`, `?` characters in the path and query-string. Consecutive separator characters are counted as one. The cut is made in the position after all the consecutive separator characters. Example:" - }, { - "name": "cutToFirstSignificantSubdomain", - "def": "cutToFirstSignificantSubdomain(v)", - "docText": "- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \n" + "\n" + " For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`." - }, { - "name": "cutWWW", - "def": "cutWWW(v)", - "docText": "Removes no more than one `www.` from the beginning of the URL`s domain, if present." - }, { - "name": "cutQueryString", - "def": "cutQueryString(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, { - "name": "cutFragment", - "def": "cutFragment(v)", - "docText": "Removes the fragment identifier. The number sign is also removed." - }, { - "name": "visitParamHas", - "def": "visitParamHas(params, name)", - "docText": "Checks whether there is a field with the `name` name." - }, { - "name": "visitParamExtractFloat", - "def": "visitParamExtractFloat(params, name)", - "docText": "The same as for Float64." - }, { - "name": "visitParamExtractBool", - "def": "visitParamExtractBool(params, name)", - "docText": "Parses a true/false value. The result is UInt8." - }, { - "name": "visitParamExtractRaw", - "def": "visitParamExtractRaw(params, name)", - "docText": "Returns the value of a field, including separators." - }, { - "name": "exp", - "def": "exp(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 10 in power of x." - }, { - "name": "exp2", - "def": "exp2(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 2 in power of x." - }, { - "name": "exp10", - "def": "exp10(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 10 in power of x." - }, { - "name": "tgamma", - "def": "tgamma(x)", - "docText": "Gamma function." - }, { - "name": "log10", - "def": "log10(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the decimal logarithm of the argument." - }, { - "name": "sqrt", - "def": "sqrt(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the square root of the argument." - }, { - "name": "erf", - "def": "erf(v)", - "docText": "What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw." - }, { - "name": "erfc", - "def": "erfc(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 1 - erf(x), but without loss of precision for large `x` values." - }, { - "name": "lgamma", - "def": "lgamma(x)", - "docText": "The logarithm of the gamma function." - }, { - "name": "sin", - "def": "sin(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is infinite, otherwise 0. \n" + "\n" + " Note that 0 is returned for a NaN." - }, { - "name": "cos", - "def": "cos(x)", - "docText": "The arc cosine." - }, { - "name": "tan", - "def": "tan(x)", - "docText": "The arc tangent." - }, { - "name": "pow", - "def": "pow(x, y)", - "docText": "x in power of y." - }]; - }; - - p.MacrosCompletions = function () { - return [{ - "name": "$table", - "def": "$table", - "docText": "Replaced with selected table name from Query Builder" - }, { - "name": "$timeCol", - "def": "$timeCol", - "docText": "Replaced with `Date:Col` value from Query Builder" - }, { - "name": "$dateTimeCol", - "def": "$dateTimeCol", - "docText": "Replaced with `Column:DateTime` or `Column:TimeStamp` value from Query Builder" - }, { - "name": "$from", - "def": "$from", - "docText": "Replaced with timestamp/1000 value of selected `Time Range:From`" - }, { - "name": "$to", - "def": "$to", - "docText": "Replaced with timestamp/1000 value of selected `Time Range:To`" - }, { - "name": "$interval", - "def": "$interval", - "docText": "Replaced with selected `Group by time interval` value (as a number of seconds)" - }, { - "name": "$timeFilter", - "def": "$timeFilter", - "docText": "Replaced with currently selected `Time Range`. Requires `Column:Date` and `Column:DateTime` or `Column:TimeStamp` to be selected" - }, { - "name": "$timeSeries", - "def": "$timeSeries", - "docText": "Replaced with special ClickHouse construction to convert results as time-series data. Use it as `SELECT $timeSeries...`. Require `Column:DateTime` or `Column:TimeStamp` to be selected" - }, { - "name": "$rate", - "def": "$rate(cols...)", - "docText": "Converts query results as `change rate per interval`. Can be used to display changes-per-second." + "\n" + "Example:\n $rate(countIf(Type = 200) AS good, countIf(Type != 200) AS bad) FROM requests" - }, { - "name": "$columns", - "def": "$columns(key, value)", - "docText": "Query values as array of [key, value], where key will be used as label. Can be used to display multiple lines at graph" + "\n" + "Example:\n $columns(OSName, count(*) c) FROM requests" - }, { - "name": "$rateColumns", - "def": "$rateColumns(key, value)", - "docText": "Is a combination of `$columns` and `$rate` ." + "\n" + "Example:\n $rateColumns(OS, count(*) c) FROM requests" - }, { - "name": "$unescape", - "def": "$unescape($variable)", - "docText": "Unescapes variable value by removing single quotes" + "\n" + "Example:\n SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5" - }]; - }; - - p.re = function (list) { - return list.join("|"); - }; - - exports.ClickhouseInfo = p; - }); - } - }; -}); -//# sourceMappingURL=clickhouse-info.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js.map deleted file mode 100644 index 242e190..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/clickhouse-info.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/clickhouse-info.js"],"names":["ace","define","require","exports","module","p","Keywords","DataTypes","Constants","Funcs","Macros","KeywordsRe","re","ConstantsRe","FunctionsRe","concat","DataTypesRe","FunctionsCompletions","MacrosCompletions","list","join","ClickhouseInfo"],"mappings":"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","file":"clickhouse-info.js","sourcesContent":["// jshint ignore: start\r\n// jscs: disable\r\n\r\nace.define(\"ace/mode/clickhouse_info\", [\"require\", \"exports\", \"module\"], function (require, exports, module) {\r\n \"use strict\";\r\n\r\n var p = {};\r\n p.Keywords = [\r\n \"SELECT\",\r\n \"CASE\",\r\n \"THEN\",\r\n \"DISTINCT\",\r\n \"INSERT\",\r\n \"UPDATE\",\r\n \"DELETE\",\r\n \"WHERE\",\r\n \"AND\",\r\n \"OR\",\r\n \"OFFSET\",\r\n \"HAVING\",\r\n \"AS\",\r\n \"GLOBAL\",\r\n \"FROM\",\r\n \"WHEN\",\r\n \"ELSE\",\r\n \"END\",\r\n \"TYPE\",\r\n \"LEFT\",\r\n \"RIGHT\",\r\n \"USING\",\r\n \"JOIN\",\r\n \"ON\",\r\n \"OUTER\",\r\n \"DESC\",\r\n \"ASC\",\r\n \"UNION\",\r\n \"CREATE\",\r\n \"TABLE\",\r\n \"PRIMARY\",\r\n \"KEY\",\r\n \"FOREIGN\",\r\n \"NOT\",\r\n \"REFERENCES\",\r\n \"DEFAULT\",\r\n \"INNER\",\r\n \"CROSS\",\r\n \"NATURAL\",\r\n \"DATABASE\",\r\n \"DROP\",\r\n \"GRANT\",\r\n \"ANY\",\r\n \"BETWEEN\",\r\n \"ATTACH\",\r\n \"DETACH\",\r\n \"CAST\",\r\n \"WITH\",\r\n \"BIT_AND\",\r\n \"BIT_OR\",\r\n \"BIT_XOR\",\r\n \"DESCRIBE\",\r\n \"OPTIMIZE\",\r\n \"PREWHERE\",\r\n \"TOTALS\",\r\n \"DATABASES\",\r\n \"PROCESSLIST\",\r\n \"SHOW\",\r\n \"LIMIT\",\r\n \"IF\",\r\n \"IF NOT EXISTS\",\r\n \"IF EXISTS\",\r\n \"GROUP\",\r\n \"ORDER\",\r\n \"BY\",\r\n \"IN\",\r\n \"FORMAT\",\r\n \"GROUP BY\",\r\n \"ORDER BY\",\r\n \"UNION ALL\"\r\n ];\r\n p.DataTypes = [\r\n \"int\",\r\n \"numeric\",\r\n \"decimal\",\r\n \"date\",\r\n \"varchar\",\r\n \"char\",\r\n \"bigint\",\r\n \"float\",\r\n \"double\",\r\n \"bit\",\r\n \"binary\",\r\n \"text\",\r\n \"set\",\r\n \"timestamp\",\r\n \"uint8\",\r\n \"uint16\",\r\n \"uint32\",\r\n \"uint64\",\r\n \"int8\",\r\n \"int16\",\r\n \"int32\",\r\n \"int64\",\r\n \"float32\",\r\n \"float64\",\r\n \"datetime\",\r\n \"enum8\",\r\n \"enum16\",\r\n \"array\",\r\n \"tuple\",\r\n \"string\"\r\n ];\r\n p.Constants = [\r\n \"true\",\r\n \"false\",\r\n \"NULL\"\r\n ];\r\n p.Funcs = [\r\n \"IPv4NumToString\", \"IPv4NumToStringClassC\", \"IPv4StringToNum\", \"IPv6NumToString\", \"IPv6StringToNum\",\r\n \"MD5\", \"OSHierarchy\", \"OSIn\", \"OSToRoot\", \"SEHierarchy\", \"SEIn\", \"SEToRoot\", \"SHA1\", \"SHA224\", \"SHA256\",\r\n \"URLHash\", \"URLHierarchy\", \"URLPathHierarchy\", \"abs\", \"alphaTokens\", \"appendTrailingCharIfAbsent\",\r\n \"argMax\", \"argMin\", \"argMinIf\", \"arrayAll\", \"arrayCount\", \"arrayElement\", \"arrayEnumerate\", \"arrayEnumerateUniq\",\r\n \"arrayExists\", \"arrayFilter\", \"arrayFirst\", \"arrayJoin\", \"arrayMap\", \"arraySum\", \"avg\", \"avgIf\",\r\n \"bitAnd\", \"bitNot\", \"bitOr\", \"bitShiftLeft\", \"bitShiftRight\", \"bitXor\", \"bitmaskToArray\", \"bitmaskToList\",\r\n \"ceil\", \"cityHash64\", \"coalesce\", \"concat\", \"corr\", \"corrIf\", \"count\", \"countEqual\", \"countIf\", \"countIf\",\r\n \"covarPop\", \"covarPopIf\", \"covarSamp\", \"covarSampIf\", \"cutFragment\", \"cutQueryString\", \"cutQueryStringAndFragment\",\r\n \"cutToFirstSignificantSubdomain\", \"cutURLParameter\", \"cutWWW\", \"dictGetDate\", \"dictGetDateTime\", \"dictGetFloat32\",\r\n \"dictGetFloat64\", \"dictGetHierarchy\", \"dictGetInt16\", \"dictGetInt32\", \"dictGetInt64\", \"dictGetInt8\", \"dictGetString\",\r\n \"dictGetUInt16\", \"dictGetUInt32\", \"dictGetUInt64\", \"dictGetUInt8\", \"dictHas\", \"dictIsIn\", \"divide\", \"domainWithoutWWW\",\r\n \"empty\", \"extract\", \"extractAll\", \"extractURLParameter\", \"extractURLParameterNames\", \"extractURLParameters\",\r\n \"first\", \"firstSignificantSubdomain\", \"floor\", \"groupArray\", \"groupUniqArray\", \"halfMD5\", \"has\", \"hex\", \"ifnull\",\r\n \"indexOf\", \"intDiv\", \"intDivOrZero\", \"intHash32\", \"intHash64\", \"isnull\", \"last\", \"lcase\", \"length\", \"lengthUTF8\",\r\n \"like\", \"lower\", \"lowerUTF8\", \"match\", \"max\", \"median\", \"medianIf\", \"mid\", \"min\", \"minus\", \"modulo\", \"multiply\",\r\n \"negate\", \"notEmpty\", \"notLike\", \"now\", \"now\", \"nvl\", \"plus\", \"position\", \"positionUTF8\", \"quantile\",\r\n \"quantileDeterministic\", \"quantileExact\", \"quantileExactWeighted\", \"quantileTDigest\", \"quantileTiming\",\r\n \"quantileTimingWeighted\", \"quantiles\", \"quantilesIf\", \"quantilesTimingArrayIf\", \"quantilesTimingIf\", \"queryString\",\r\n \"queryStringAndFragment\", \"rand\", \"rand64\", \"range\", \"rank\", \"regionHierarchy\", \"regionIn\", \"regionToContinent\",\r\n \"regionToCountry\", \"regionToName\", \"regionToPopulation\", \"reinterpretAsDate\", \"reinterpretAsDateTime\", \"reinterpretAsFloat32\",\r\n \"reinterpretAsFloat64\", \"reinterpretAsInt16\", \"reinterpretAsInt32\", \"reinterpretAsInt64\", \"reinterpretAsInt8\", \"reinterpretAsString\",\r\n \"reinterpretAsUInt16\", \"reinterpretAsUInt32\", \"reinterpretAsUInt64\", \"reinterpretAsUInt8\", \"replaceAll\", \"replaceOne\",\r\n \"replaceRegexpOne\", \"reverse\", \"reverseUTF8\", \"round\", \"round\", \"roundAge\", \"roundDuration\", \"roundToExp2\", \"sequenceCount\",\r\n \"sequenceMatch\", \"sipHash128\", \"sipHash64\", \"splitByChar\", \"splitByString\", \"stddevPop\", \"stddevPopIf\", \"stddevSamp\",\r\n \"stddevSampIf\", \"substring\", \"substringUTF8\", \"sum\", \"sumArray\", \"sumArrayIf\", \"sumIf\", \"timeSlot\", \"toDate\", \"toDateTime\",\r\n \"toDayOfMonth\", \"toDayOfWeek\", \"toFixedString\", \"toFloat32\", \"toFloat64\", \"toHour\", \"toInt16\", \"toInt32\", \"toInt64\", \"toInt8\",\r\n \"toMinute\", \"toMonday\", \"toMonth\", \"toRelativeDayNum\", \"toRelativeHourNum\", \"toRelativeMinuteNum\", \"toRelativeMonthNum\",\r\n \"toRelativeSecondNum\", \"toRelativeWeekNum\", \"toRelativeYearNum\", \"toSecond\", \"toStartOfFiveMinute\", \"toStartOfHour\",\r\n \"toStartOfMinute\", \"toStartOfMonth\", \"toStartOfQuarter\", \"toStartOfYear\", \"toString\", \"toStringCutToZero\", \"toTime\", \"toUInt16\",\r\n \"toUInt32\", \"toUInt64\", \"toUInt8\", \"toYear\", \"today\", \"topLevelDomain\", \"ucase\", \"unhex\", \"uniq\", \"uniqArray\", \"uniqArrayIf\",\r\n \"uniqArrayIf\", \"uniqCombined\", \"uniqCombinedIf\", \"uniqExact\", \"uniqExactIf\", \"uniqHLL12\", \"uniqUpTo\", \"upper\", \"upperUTF8\", \"varPop\", \"varPopIf\",\r\n \"varSamp\", \"varSampIf\", \"yesterday\"\r\n ];\r\n p.Macros = [\r\n \"$table\",\r\n \"$timeCol\",\r\n \"$dateTimeCol\",\r\n \"$from\",\r\n \"$to\",\r\n \"$interval\",\r\n \"$timeFilter\",\r\n \"$timeSeries\",\r\n \"$rate\",\r\n \"$columns\",\r\n \"$rateColumns\",\r\n \"$unescape\"\r\n ];\r\n p.KeywordsRe = function () {\r\n return this.re(p.Keywords)\r\n };\r\n p.ConstantsRe = function () {\r\n return this.re(p.Constants)\r\n };\r\n p.FunctionsRe = function () {\r\n return this.re(p.Funcs).concat(this.re(p.Macros))\r\n };\r\n p.DataTypesRe = function () {\r\n return this.re(p.DataTypes);\r\n };\r\n p.FunctionsCompletions = function () {\r\n return [\r\n {\r\n \"name\": \"corr\",\r\n \"def\": \"corr(x, y)\",\r\n \"docText\": \"Calculates the Pearson correlation coefficient: Σ((x - x̅)(y - y̅)) / sqrt(Σ((x - x̅)2) * Σ((y - y̅)2)).\"\r\n },\r\n {\r\n \"name\": \"stddevPop\",\r\n \"def\": \"stddevPop(x)\",\r\n \"docText\": \"The result is equal to the square root of `varPop(x)`.\"\r\n },\r\n {\r\n \"name\": \"varPop\",\r\n \"def\": \"varPop(x, y)\",\r\n \"docText\": \"Calculates the value of `Σ((x - x̅)(y - y̅)) / n`.\"\r\n },\r\n {\r\n \"name\": \"argMin\",\r\n \"def\": \"argMin(arg, val)\",\r\n \"docText\": \"Calculates the `arg` value for a minimal `val` value. If there are several different values of `arg` for minimal values of `val`, the first of these values encountered is output.\"\r\n },\r\n {\r\n \"name\": \"quantileExactWeighted\",\r\n \"def\": \"quantileExactWeighted(level)(x, weight)\",\r\n \"docText\": \"Computes the level quantile exactly. In this case, each value is taken into account with the weight weight - as if it is present weight once. The arguments of the function can be considered as histograms, where the value \\\"x\\\" corresponds to the \\\"column\\\" of the histogram of the height weight, and the function itself can be considered as the summation of histograms.\\n\" +\r\n \"\\n\" +\r\n \"The algorithm is a hash table. Because of this, in case the transmitted values ​​are often repeated, the function consumes less RAM than the quantileExact. You can use this function instead of quantileExact, specifying the number 1 as the weight.\"\r\n },\r\n {\r\n \"name\": \"min\",\r\n \"def\": \"min(v)\",\r\n \"docText\": \"Minimal execution speed in rows per second. Checked on every data block when `timeout_before_checking_execution_speed` expires. If the execution speed is lower, an exception is thrown.\"\r\n },\r\n {\r\n \"name\": \"varSamp\",\r\n \"def\": \"varSamp(x)\",\r\n \"docText\": \"Calculates the amount Σ((x - x̅)2) / (n - 1), where 'n' is the sample size and 'x̅' is the average value of 'x'.\\n\" +\r\n \"\\n\" +\r\n \"It represents an unbiased estimate of the variance of a random variable, if the values passed to the function are a sample of this random amount.\\n\" +\r\n \"\\n\" +\r\n \"Returns Float64. If n <= 1, it returns +∞.\"\r\n },\r\n {\r\n \"name\": \"anyLast\",\r\n \"def\": \"anyLast(x)\",\r\n \"docText\": \"Selects the last value encountered. \\n\" +\r\n \"\\n\" +\r\n \" The result is just as indeterminate as for the `any` function.\"\r\n },\r\n {\r\n \"name\": \"argMax\",\r\n \"def\": \"argMax(arg, val)\",\r\n \"docText\": \"Calculates the `arg` value for a maximum `val` value. If there are several different values of `arg` for maximum values of `val`, the first of these values encountered is output.\"\r\n },\r\n {\r\n \"name\": \"count\",\r\n \"def\": \"count()\",\r\n \"docText\": \"Counts the number of rows. \"\r\n },\r\n {\r\n \"name\": \"any\",\r\n \"def\": \"any(x)\",\r\n \"docText\": \"Selects the last value encountered. \\n\" +\r\n \"\\n\" +\r\n \" The result is just as indeterminate as for the `any` function.\"\r\n },\r\n {\r\n \"name\": \"avg\",\r\n \"def\": \"avg(x)\",\r\n \"docText\": \"Calculates the average. \\n\" +\r\n \"\\n\" +\r\n \" Only works for numbers. \\n\" +\r\n \"\\n\" +\r\n \" The result is always Float64.\"\r\n },\r\n {\r\n \"name\": \"sequenceMatch\",\r\n \"def\": \"sequenceMatch(pattern)(time, cond1, cond2, ...)\",\r\n \"docText\": \"Pattern matching for event chains.\\n\" +\r\n \"\\n\" +\r\n \"'pattern' is a string containing a pattern to match. The pattern is similar to a regular expression. 'time' is the event time of the DateTime type. 'cond1, cond2 ...' are from one to 32 arguments of the UInt8 type that indicate whether an event condition was met.\\n\" +\r\n \"\\n\" +\r\n \"The function collects a sequence of events in RAM. Then it checks whether this sequence matches the pattern. It returns UInt8 - 0 if the pattern isn't matched, or 1 if it matches.\\n\" +\r\n \"\\n\" +\r\n \"Example: sequenceMatch('(?1).*(?2)')(EventTime, URL LIKE '%company%', URL LIKE '%cart%') - whether there was a chain of events in which pages with the address in company were visited earlier than pages with the address in cart.\"\r\n },\r\n {\r\n \"name\": \"stddevSamp\",\r\n \"def\": \"stddevSamp(x)\",\r\n \"docText\": \"The result is equal to the square root of `varSamp(x)`.\"\r\n },\r\n {\r\n \"name\": \"medianDeterministic\",\r\n \"def\": \"medianDeterministic(x, determinator)\",\r\n \"docText\": \"This function works similarly to the `median` function - it approximates the median.\"\r\n },\r\n {\r\n \"name\": \"quantilesTimingWeighted\",\r\n \"def\": \"quantilesTimingWeighted(level1, level2, ...)(x, weight)\",\r\n \"docText\": \"Calculates the quantiles of all specified levels using the same algorithm as the `medianTimingWeighted` function.\"\r\n },\r\n {\r\n \"name\": \"uniq\",\r\n \"def\": \"uniq(N)(x)\",\r\n \"docText\": \"Calculates the number of different argument values, if it is less than or equal to N. \\n\" +\r\n \"\\n\" +\r\n \" If the number of different argument values is greater than N, it returns N + 1.\"\r\n },\r\n {\r\n \"name\": \"covarSamp\",\r\n \"def\": \"covarSamp(x, y)\",\r\n \"docText\": \"Calculates the value of `Σ((x - x̅)(y - y̅)) / (n - 1)`. \" +\r\n \"Returns Float64. If n <= 1, it returns +∞.\"\r\n },\r\n {\r\n \"name\": \"max\",\r\n \"def\": \"max(v)\",\r\n \"docText\": \"Maximum number of bytes (uncompressed data) that can be passed to a remote server or saved in a temporary table when using GLOBAL IN.\"\r\n },\r\n {\r\n \"name\": \"quantileTDigest\",\r\n \"def\": \"quantileTDigest(level)(x)\",\r\n \"docText\": \"t-digest\"\r\n },\r\n {\r\n \"name\": \"quantilesTiming\",\r\n \"def\": \"quantilesTiming(level1, level2, ...)(x, weight)\",\r\n \"docText\": \"Calculates the quantiles of all specified levels using the same algorithm as the `medianTimingWeighted` function.\"\r\n },\r\n {\r\n \"name\": \"quantiles\",\r\n \"def\": \"quantiles(level1, level2, ...)(x, determinator)\",\r\n \"docText\": \"Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function.\"\r\n },\r\n {\r\n \"name\": \"quantile\",\r\n \"def\": \"quantile(level1, level2, ...)(x, determinator)\",\r\n \"docText\": \"Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function.\"\r\n },\r\n {\r\n \"name\": \"groupArray\",\r\n \"def\": \"groupArray(x)\",\r\n \"docText\": \"Creates an array of argument values. \\n\" +\r\n \"\\n\" +\r\n \" Values can be added to the array in any (indeterminate) order. \\n\" +\r\n \"\\n\" +\r\n \" In some cases, you can rely on the order of execution. This applies to cases when SELECT comes from a subquery that uses ORDER BY.\"\r\n },\r\n {\r\n \"name\": \"sum\",\r\n \"def\": \"sum(x)\",\r\n \"docText\": \"Calculates the sum. \\n\" +\r\n \"\\n\" +\r\n \" Only works for numbers.\"\r\n },\r\n {\r\n \"name\": \"median\",\r\n \"def\": \"median(x, weight)\",\r\n \"docText\": \"Differs from the `medianTiming` function in that it has a second argument - `weights`. Weight is a non-negative integer. \\n\" +\r\n \"\\n\" +\r\n \" The result is calculated as if the `x` value were passed `weight` number of times to the `medianTiming` function.\"\r\n },\r\n {\r\n \"name\": \"quantileTiming\",\r\n \"def\": \"quantileTiming(level)(x, weight)\",\r\n \"docText\": \"Calculates the quantile of `level` using the same algorithm as the `medianTimingWeighted` function.\"\r\n },\r\n {\r\n \"name\": \"quantileTimingWeighted\",\r\n \"def\": \"quantileTimingWeighted(level)(x, weight)\",\r\n \"docText\": \"Calculates the quantile of `level` using the same algorithm as the `medianTimingWeighted` function.\"\r\n },\r\n {\r\n \"name\": \"groupUniqArray\",\r\n \"def\": \"groupUniqArray(x)\",\r\n \"docText\": \"Creates an array from different argument values. Memory consumption is the same as for the `uniqExact` function.\"\r\n },\r\n {\r\n \"name\": \"uniqHLL12\",\r\n \"def\": \"uniqHLL12(x)\",\r\n \"docText\": \"Uses the HyperLogLog algorithm to approximate the number of different values of the argument. \"\r\n },\r\n {\r\n \"name\": \"covarPop\",\r\n \"def\": \"covarPop(x, y)\",\r\n \"docText\": \"Calculates the value of `Σ((x - x̅)(y - y̅)) / n`.\"\r\n },\r\n {\r\n \"name\": \"sequenceCount\",\r\n \"def\": \"sequenceCount(pattern)(time, cond1, cond2, ...)\",\r\n \"docText\": \"sequenceMatch\"\r\n },\r\n {\r\n \"name\": \"quantileDeterministic\",\r\n \"def\": \"quantileDeterministic(level)(x, determinator)\",\r\n \"docText\": \"Calculates the quantile of `level` using the same algorithm as the `medianDeterministic` function.\"\r\n },\r\n {\r\n \"name\": \"quantileExact\",\r\n \"def\": \"quantileExact(level)(x, weight)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"quantilesDeterministic\",\r\n \"def\": \"quantilesDeterministic(level1, level2, ...)(x, determinator)\",\r\n \"docText\": \"Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function.\"\r\n },\r\n {\r\n \"name\": \"medianTiming\",\r\n \"def\": \"medianTiming(x, weight)\",\r\n \"docText\": \"Differs from the `medianTiming` function in that it has a second argument - `weights`.\"\r\n },\r\n {\r\n \"name\": \"medianTimingWeighted\",\r\n \"def\": \"medianTimingWeighted(x, weight)\",\r\n \"docText\": \"Differs from the `medianTiming` function in that it has a second argument - `weights`.\"\r\n },\r\n {\r\n \"name\": \"uniqExact\",\r\n \"def\": \"uniqExact(x)\",\r\n \"docText\": \"Calculates the number of different values of the argument, exactly. \\n\" +\r\n \"\\n\" +\r\n \" There is no reason to fear approximations, so it`s better to use the `uniq` function. \\n\" +\r\n \"\\n\" +\r\n \" You should use the `uniqExact` function if you definitely need an exact result. \"\r\n },\r\n {\r\n \"name\": \"uniqCombined\",\r\n \"def\": \"uniqCombined(x)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"uniqCombinedIf\",\r\n \"def\": \"uniqCombinedIf(x,v)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"uniqUpTo\",\r\n \"def\": \"uniqUpTo(N)(x)\",\r\n \"docText\": \"Calculates the number of different argument values, if it is less than or equal to N. \\n\" +\r\n \"\\n\" +\r\n \" If the number of different argument values is greater than N, it returns N + 1.\"\r\n },\r\n {\r\n \"name\": \"substring\",\r\n \"def\": \"substring(s, offset, length)\",\r\n \"docText\": \"The same as `substring`, but for Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception).\"\r\n },\r\n {\r\n \"name\": \"notLike\",\r\n \"def\": \"notLike(haystack, pattern), haystack NOT LIKE pattern operator\",\r\n \"docText\": \"The same thing as `like`, but negative.\"\r\n },\r\n {\r\n \"name\": \"hostName\",\r\n \"def\": \"hostName()\",\r\n \"docText\": \"Returns a string with the name of the host that this function was performed on. For distributed processing, this is the name of the remote server host, if the function is performed on a remote server.\"\r\n },\r\n {\r\n \"name\": \"globalNotIn\",\r\n \"def\": \"globalNotIn(v)\",\r\n \"docText\": \"See the section `IN operators`.\"\r\n },\r\n {\r\n \"name\": \"or\",\r\n \"def\": \"or(v)\",\r\n \"docText\": \"The same thing as `max_temporary_columns`, but without counting constant columns. \\n\" +\r\n \"\\n\" +\r\n \" Note that constant columns are formed fairly often when running a query, but they require approximately zero computing resources.\"\r\n },\r\n {\r\n \"name\": \"extractAll\",\r\n \"def\": \"extractAll(haystack, pattern)\",\r\n \"docText\": \"Extracts all the fragments of a string using a regular expression. If `haystack` doesn`t match the `pattern` regex, an empty string is returned. Returns an array of strings consisting of all matches to the regex.\"\r\n },\r\n {\r\n \"name\": \"arrayFirst\",\r\n \"def\": \"arrayFirst(func, arr1, ...)\",\r\n \"docText\": \"Returns the index of the first element in the `arr1` array for which `func` returns something other than 0.\"\r\n },\r\n {\r\n \"name\": \"arrayExists\",\r\n \"def\": \"arrayExists([func,] arr1, ...)\",\r\n \"docText\": \"Returns 1 if there is at least one element in `arr` for which `func` returns something other than 0. Otherwise, it returns 0.\"\r\n },\r\n {\r\n \"name\": \"arrayCount\",\r\n \"def\": \"arrayCount([func,] arr1, ...)\",\r\n \"docText\": \"Returns the number of elements in `arr` for which `func` returns something other than 0. If `func` is not specified, it returns the number of non-zero items in the array.\"\r\n },\r\n {\r\n \"name\": \"arrayMap\",\r\n \"def\": \"arrayMap(func, arr1, ...)\",\r\n \"docText\": \"Returns an array obtained from the original application of the `func` function to each element in the `arr` array.\"\r\n },\r\n {\r\n \"name\": \"now\",\r\n \"def\": \"now(v)\",\r\n \"docText\": \"If the parameter is true, INSERT operation will skip columns with unknown names from input. \\n\" +\r\n \"\\n\" +\r\n \" Otherwise, an exception will be generated, it is default behavior. \\n\" +\r\n \"\\n\" +\r\n \" The parameter works only for JSONEachRow and TSKV input formats.\"\r\n },\r\n {\r\n \"name\": \"intDiv\",\r\n \"def\": \"intDiv(a, b)\",\r\n \"docText\": \"Differs from `intDiv` in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one.\"\r\n },\r\n {\r\n \"name\": \"topLevelDomain\",\r\n \"def\": \"topLevelDomain(v)\",\r\n \"docText\": \"Selects the top-level domain. Example: .ru.\"\r\n },\r\n {\r\n \"name\": \"intHash32\",\r\n \"def\": \"intHash32(v)\",\r\n \"docText\": \"Calculates a 32-bit hash code from any type of integer. \\n\" +\r\n \"\\n\" +\r\n \" This is a relatively fast non-cryptographic hash function of average quality for numbers.\"\r\n },\r\n {\r\n \"name\": \"replaceOne\",\r\n \"def\": \"replaceOne(haystack, pattern, replacement)\",\r\n \"docText\": \"Replaces the first occurrence, if it exists, of the `pattern` substring in `haystack` with the `replacement` substring. \\n\" +\r\n \"\\n\" +\r\n \" Hereafter, `pattern` and `replacement` must be constants.\"\r\n },\r\n {\r\n \"name\": \"cityHash64\",\r\n \"def\": \"cityHash64(v)\",\r\n \"docText\": \"Calculates CityHash64 from a string or a similar hash function for any number of any type of arguments. \\n\" +\r\n \"\\n\" +\r\n \" For String-type arguments, CityHash is used. This is a fast non-cryptographic hash function for strings with decent quality\"\r\n },\r\n {\r\n \"name\": \"OSToRoot\",\r\n \"def\": \"OSToRoot(v)\",\r\n \"docText\": \"Accepts a UInt8 number - the ID of the operating system from the Yandex.Metrica dictionary. If any OS matches the passed number, it returns a UInt8 number - the ID of the corresponding root OS (for example, it converts Windows Vista to Windows). Otherwise, returns 0.\"\r\n },\r\n {\r\n \"name\": \"sipHash128\",\r\n \"def\": \"sipHash128(v)\",\r\n \"docText\": \"Calculates SipHash from a string. \\n\" +\r\n \"\\n\" +\r\n \" Accepts a String-type argument. Returns FixedString(16). \\n\" +\r\n \"\\n\" +\r\n \" Differs from sipHash64 in that the final xor-folding state is only done up to 128 bits.\"\r\n },\r\n {\r\n \"name\": \"SHA1\",\r\n \"def\": \"SHA1(v)\",\r\n \"docText\": \"Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32).\"\r\n },\r\n {\r\n \"name\": \"asin\",\r\n \"def\": \"asin(x)\",\r\n \"docText\": \"The arc sine.\"\r\n },\r\n {\r\n \"name\": \"SHA256\",\r\n \"def\": \"SHA256(v)\",\r\n \"docText\": \"Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32).\"\r\n },\r\n {\r\n \"name\": \"MD5\",\r\n \"def\": \"MD5(v)\",\r\n \"docText\": \"Calculates the MD5 from a string and returns the resulting set of bytes as FixedString(16).\"\r\n },\r\n {\r\n \"name\": \"bitmaskToList\",\r\n \"def\": \"bitmaskToList(num)\",\r\n \"docText\": \"Accepts an integer. Returns a string containing the list of powers of two that total the source number when summed. They are comma-separated without spaces in text format, in ascending order.\"\r\n },\r\n {\r\n \"name\": \"array\",\r\n \"def\": \"array(v)\",\r\n \"docText\": \"The -`Array` suffix can be appended to any aggregate function. In this case, the aggregate function takes arguments of the `Array(T)` type (arrays) instead of `T` type arguments. If the aggregate function accepts multiple arguments, this must be arrays of equal lengths. \"\r\n },\r\n {\r\n \"name\": \"dictGetStringOrDefault\",\r\n \"def\": \"dictGetStringOrDefault(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"greaterOrEquals\",\r\n \"def\": \"greaterOrEquals(v)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"e\",\r\n \"def\": \"e(v)\",\r\n \"docText\": \"What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw.\"\r\n },\r\n {\r\n \"name\": \"runningDifference\",\r\n \"def\": \"runningDifference(x)\",\r\n \"docText\": \"Calculates the difference between consecutive values in the data block. \\n\" +\r\n \"\\n\" +\r\n \" Result of the function depends on the order of the data in the blocks. \\n\" +\r\n \"\\n\" +\r\n \" It works only inside of the each processed block of data. Data splitting in the blocks is not explicitly controlled by the user. \"\r\n },\r\n {\r\n \"name\": \"not\",\r\n \"def\": \"not(v)\",\r\n \"docText\": \"See the section `IN operators`.\"\r\n },\r\n {\r\n \"name\": \"intHash64\",\r\n \"def\": \"intHash64(v)\",\r\n \"docText\": \"Calculates a 64-bit hash code from any type of integer. \\n\" +\r\n \"\\n\" +\r\n \" It works faster than intHash32. Average quality.\"\r\n },\r\n {\r\n \"name\": \"acos\",\r\n \"def\": \"acos(x)\",\r\n \"docText\": \"The arc cosine.\"\r\n },\r\n {\r\n \"name\": \"dictGetString\",\r\n \"def\": \"dictGetString(v)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"and\",\r\n \"def\": \"and(x, determinator)\",\r\n \"docText\": \"This function works similarly to the `median` function - it approximates the median. However, in contrast to `median`, the result is deterministic and does not depend on the order of query execution. \\n\" +\r\n \"\\n\" +\r\n \" To achieve this, the function takes a second argument - the `determinator`. \"\r\n },\r\n {\r\n \"name\": \"dictGetDate\",\r\n \"def\": \"dictGetDate(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"dictGetFloat32\",\r\n \"def\": \"dictGetFloat32(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"dictGetInt8\",\r\n \"def\": \"dictGetInt8(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"dictGetUInt32\",\r\n \"def\": \"dictGetUInt32(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"OSIn\",\r\n \"def\": \"OSIn(lhs, rhs)\",\r\n \"docText\": \"Checks whether the `lhs` operating system belongs to the `rhs` operating system.\"\r\n },\r\n {\r\n \"name\": \"arrayFirstIndex\",\r\n \"def\": \"arrayFirstIndex(func, arr1, ...)\",\r\n \"docText\": \"Returns the index of the first element in the `arr1` array for which `func` returns something other than 0.\"\r\n },\r\n {\r\n \"name\": \"ceil\",\r\n \"def\": \"ceil(x[, N])\",\r\n \"docText\": \"Returns the smallest round number that is greater than or equal to `x`. In every other way, it is the same as the `floor` function (see above).\"\r\n },\r\n {\r\n \"name\": \"fragment\",\r\n \"def\": \"fragment(v)\",\r\n \"docText\": \"Removes the query-string and fragment identifier. The question mark and number sign are also removed.\"\r\n },\r\n {\r\n \"name\": \"dictGetUInt8\",\r\n \"def\": \"dictGetUInt8(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"dictHas\",\r\n \"def\": \"dictHas(v)\",\r\n \"docText\": \"dictHas('dict_name', id) check the presence of a key in the dictionary. Returns a value of type UInt8, equal to 0, if there is no key and 1 if there is a key.\"\r\n },\r\n {\r\n \"name\": \"arraySum\",\r\n \"def\": \"arraySum([func,] arr1, ...)\",\r\n \"docText\": \"Returns the sum of the `func` values. If the function is omitted, it just returns the sum of the array elements.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayDateTime\",\r\n \"def\": \"emptyArrayDateTime(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"intDivOrZero\",\r\n \"def\": \"intDivOrZero(a, b)\",\r\n \"docText\": \"Differs from `intDiv` in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one.\"\r\n },\r\n {\r\n \"name\": \"SEHierarchy\",\r\n \"def\": \"SEHierarchy(v)\",\r\n \"docText\": \"Accepts a UInt8 number - the ID of the search engine from the Yandex.Metrica dictionary. Returns an array with a hierarchy of search engines. Similar to the `regionHierarchy` function.\"\r\n },\r\n {\r\n \"name\": \"regionToContinent\",\r\n \"def\": \"regionToContinent(id[, geobase])\",\r\n \"docText\": \"Converts a region to a continent. In every other way, this function is the same as `regionToCity`. \\n\" +\r\n \"\\n\" +\r\n \" Example: `regionToContinent(toUInt32(213)) = 10001` converts Moscow (213) to Eurasia (10001).\"\r\n },\r\n {\r\n \"name\": \"dictGetInt32\",\r\n \"def\": \"dictGetInt32(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"toInt8\",\r\n \"def\": \"toInt8(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"materialize\",\r\n \"def\": \"materialize(x)\",\r\n \"docText\": \"Turns a constant into a full column containing just one value. \\n\" +\r\n \"\\n\" +\r\n \" In ClickHouse, full columns and constants are represented differently in memory. Functions work differently for constant arguments and normal arguments (different code is executed), although the result is almost always the same. This function is for debugging this behavior.\"\r\n },\r\n {\r\n \"name\": \"regionToCountry\",\r\n \"def\": \"regionToCountry(id[, geobase])\",\r\n \"docText\": \"Converts a region to a country. In every other way, this function is the same as `regionToCity`. \\n\" +\r\n \"\\n\" +\r\n \" Example: `regionToCountry(toUInt32(213)) = 225` converts Moscow (213) to Russia (225).\"\r\n },\r\n {\r\n \"name\": \"dictGetDateTime\",\r\n \"def\": \"dictGetDateTime(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"xor\",\r\n \"def\": \"xor(v)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"regionToCity\",\r\n \"def\": \"regionToCity(id[, geobase])\",\r\n \"docText\": \"Accepts a UInt32 number - the region ID from the Yandex geobase. If this region is a city or part of a city, it returns the region ID for the appropriate city. Otherwise, returns 0.\"\r\n },\r\n {\r\n \"name\": \"dictGetFloat64\",\r\n \"def\": \"dictGetFloat64(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"timeSlot\",\r\n \"def\": \"timeSlot(StartTime, Duration)\",\r\n \"docText\": \"For a time interval starting at `StartTime` and continuing for `Duration` seconds, it returns an array of moments in time, consisting of points from this interval rounded down to the half hour.\"\r\n },\r\n {\r\n \"name\": \"toTime\",\r\n \"def\": \"toTime(v)\",\r\n \"docText\": \"Converts a date with time to the date of the start of the Unix Epoch, while preserving the time.\"\r\n },\r\n {\r\n \"name\": \"log2\",\r\n \"def\": \"log2(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to the binary logarithm of the argument.\"\r\n },\r\n {\r\n \"name\": \"toRelativeHourNum\",\r\n \"def\": \"toRelativeHourNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the hour, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"toRelativeDayNum\",\r\n \"def\": \"toRelativeDayNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the day, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"toRelativeWeekNum\",\r\n \"def\": \"toRelativeWeekNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the week, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"splitByString\",\r\n \"def\": \"splitByString(separator, s)\",\r\n \"docText\": \"The same as above, but it uses a string of multiple characters as the separator. The string must be non-empty.\"\r\n },\r\n {\r\n \"name\": \"currentDatabase\",\r\n \"def\": \"currentDatabase()\",\r\n \"docText\": \"Returns the name of the current database. \\n\" +\r\n \"\\n\" +\r\n \" You can use this function in table engine parameters in a CREATE TABLE query where you need to specify the database.\"\r\n },\r\n {\r\n \"name\": \"toRelativeMonthNum\",\r\n \"def\": \"toRelativeMonthNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the month, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"visibleWidth\",\r\n \"def\": \"visibleWidth(x)\",\r\n \"docText\": \"Calculates the approximate width when outputting values to the console in text format (tab-separated). This function is used by the system for implementing Pretty formats.\"\r\n },\r\n {\r\n \"name\": \"bitShiftRight\",\r\n \"def\": \"bitShiftRight(a, b)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"toRelativeYearNum\",\r\n \"def\": \"toRelativeYearNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the year, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"toStartOfHour\",\r\n \"def\": \"toStartOfHour(v)\",\r\n \"docText\": \"Rounds down a date with time to the start of the hour.\"\r\n },\r\n {\r\n \"name\": \"halfMD5\",\r\n \"def\": \"halfMD5(v)\",\r\n \"docText\": \"Calculates the MD5 from a string. Then it takes the first 8 bytes of the hash and interprets them as UInt64 in big endian.\"\r\n },\r\n {\r\n \"name\": \"toStartOfFiveMinute\",\r\n \"def\": \"toStartOfFiveMinute(v)\",\r\n \"docText\": \"Rounds down a date with time to the start of the 5 minute (00:00, 00:05, 00:10...).\"\r\n },\r\n {\r\n \"name\": \"toUInt16OrZero\",\r\n \"def\": \"toUInt16OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument.\"\r\n },\r\n {\r\n \"name\": \"toMonday\",\r\n \"def\": \"toMonday(v)\",\r\n \"docText\": \"Rounds down a date or date with time to the nearest Monday. \\n\" +\r\n \"\\n\" +\r\n \" Returns the date.\"\r\n },\r\n {\r\n \"name\": \"IPv6NumToString\",\r\n \"def\": \"IPv6NumToString(x)\",\r\n \"docText\": \"Accepts a FixedString(16) value containing the IPv6 address in binary format. Returns a string containing this address in text format. \"\r\n },\r\n {\r\n \"name\": \"indexOf\",\r\n \"def\": \"indexOf(arr, x)\",\r\n \"docText\": \"Returns the index of the `x` element (starting from 1) if it is in the array, or 0 if it is not.\"\r\n },\r\n {\r\n \"name\": \"today\",\r\n \"def\": \"today(v)\",\r\n \"docText\": \"Accepts zero arguments and returns the current date at one of the moments of request execution. \\n\" +\r\n \"\\n\" +\r\n \" The same as `toDate(now())`.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayToSingle\",\r\n \"def\": \"emptyArrayToSingle(v)\",\r\n \"docText\": \"Accepts an empty array as argument and returns an array of one element equal to the default value.\"\r\n },\r\n {\r\n \"name\": \"sleep\",\r\n \"def\": \"sleep(seconds)\",\r\n \"docText\": \"Sleeps `seconds` seconds on each data block. You can specify an integer or a floating-point number.\"\r\n },\r\n {\r\n \"name\": \"extract\",\r\n \"def\": \"extract(params, name)\",\r\n \"docText\": \"Parses the string in double quotes. The value is unescaped. If unescaping failed, it returns an empty string. Examples: \"\r\n },\r\n {\r\n \"name\": \"emptyArrayInt8\",\r\n \"def\": \"emptyArrayInt8(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"regionToName\",\r\n \"def\": \"regionToName(id[, lang])\",\r\n \"docText\": \"Accepts a UInt32 number - the region ID from the Yandex geobase. A string with the name of the language can be passed as a second argument. Supported languages are: ru, en, ua, uk, by, kz, tr. If the second argument is omitted, the language `ru` is used. \"\r\n },\r\n {\r\n \"name\": \"concat\",\r\n \"def\": \"concat(arr[, separator])\",\r\n \"docText\": \"Concatenates strings from the array elements, using `separator` as the separator. \\n\" +\r\n \"\\n\" +\r\n \" `separator` is a string constant, an optional parameter. By default it is an empty string. \\n\" +\r\n \"\\n\" +\r\n \" Returns a string.\"\r\n },\r\n {\r\n \"name\": \"convertCharset\",\r\n \"def\": \"convertCharset(s, from, to)\",\r\n \"docText\": \"Returns a string with the data `s` (encoded as `from` charset) that was converted to the `to` charset.\"\r\n },\r\n {\r\n \"name\": \"toMonth\",\r\n \"def\": \"toMonth(v)\",\r\n \"docText\": \"Converts a date or date with time to a UInt8 number containing the month number (1-12).\"\r\n },\r\n {\r\n \"name\": \"IPv6StringToNum\",\r\n \"def\": \"IPv6StringToNum(s)\",\r\n \"docText\": \"The reverse function of IPv6NumToString. If the IPv6 address has an invalid format, it returns a string of null bytes. \\n\" +\r\n \"\\n\" +\r\n \" HEX can be uppercase or lowercase.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayString\",\r\n \"def\": \"emptyArrayString(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"uptime\",\r\n \"def\": \"uptime()\",\r\n \"docText\": \"Returns server's uptime in seconds.\"\r\n },\r\n {\r\n \"name\": \"blockSize\",\r\n \"def\": \"blockSize()\",\r\n \"docText\": \"Gets the size of the block. \\n\" +\r\n \"\\n\" +\r\n \" In ClickHouse, queries are always run on blocks (sets of column parts). This function allows getting the size of the block that you called it for.\"\r\n },\r\n {\r\n \"name\": \"toInt64OrZero\",\r\n \"def\": \"toInt64OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"pathFull\",\r\n \"def\": \"pathFull(v)\",\r\n \"docText\": \"Selects the path, but including query-string and fragment. Example: /top/news.html?page=2#comments\"\r\n },\r\n {\r\n \"name\": \"emptyArrayDate\",\r\n \"def\": \"emptyArrayDate(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayInt64\",\r\n \"def\": \"emptyArrayInt64(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"toInt32OrZero\",\r\n \"def\": \"toInt32OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"greater\",\r\n \"def\": \"greater(v)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"emptyArrayInt32\",\r\n \"def\": \"emptyArrayInt32(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"toString\",\r\n \"def\": \"toString(str)\",\r\n \"docText\": \"Accepts a FixedString(16) value containing the UUID in the binary format. Returns a readable string containing the UUID in the text format.\"\r\n },\r\n {\r\n \"name\": \"greatest\",\r\n \"def\": \"greatest(a, b)\",\r\n \"docText\": \"Returns the greatest element of a and b.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayUInt64\",\r\n \"def\": \"emptyArrayUInt64(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayUInt32\",\r\n \"def\": \"emptyArrayUInt32(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"formatReadableSize\",\r\n \"def\": \"formatReadableSize(x)\",\r\n \"docText\": \"Gets a size (number of bytes). Returns a string that contains rounded size with the suffix (KiB, MiB etc.).\\n\" +\r\n \"\\n\" +\r\n \"Example:\\n\" +\r\n \"\\n\" +\r\n \"SELECT\\n\" +\r\n \" arrayJoin([1, 1024, 1024*1024, 192851925]) AS f_bytes,\\n\" +\r\n \" formatReadableSize(filesize_bytes) AS filesize\\n\" +\r\n \"┌─f_bytes-─┬─filesize───┐\\n\" +\r\n \"│ 1 │ 1.00 B │\\n\" +\r\n \"│ 1024 │ 1.00 KiB │\\n\" +\r\n \"│ 1048576 │ 1.00 MiB │\\n\" +\r\n \"│192851925 │ 183.92 MiB │\\n\" +\r\n \"└──────────┴────────────┘\\n\"\r\n },\r\n {\r\n \"name\": \"toInt16OrZero\",\r\n \"def\": \"toInt16OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"emptyArrayUInt8\",\r\n \"def\": \"emptyArrayUInt8(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"protocol\",\r\n \"def\": \"protocol(v)\",\r\n \"docText\": \"Selects the protocol. Examples: http, ftp, mailto, magnet...\"\r\n },\r\n {\r\n \"name\": \"regionToPopulation\",\r\n \"def\": \"regionToPopulation(id[, geobase])\",\r\n \"docText\": \"Gets the population for a region. \\n\" +\r\n \"\\n\" +\r\n \" The population can be recorded in files with the geobase. See the section `External dictionaries`. \\n\" +\r\n \"\\n\" +\r\n \" If the population is not recorded for the region, it returns 0. \\n\" +\r\n \"\\n\" +\r\n \" In the Yandex geobase, the population might be recorded for child regions, but not for parent regions.\"\r\n },\r\n {\r\n \"name\": \"notIn\",\r\n \"def\": \"notIn(v)\",\r\n \"docText\": \"See the section `IN operators`.\"\r\n },\r\n {\r\n \"name\": \"position\",\r\n \"def\": \"position(haystack, needle)\",\r\n \"docText\": \"The same as `position`, but the position is returned in Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \\n\" +\r\n \"\\n\" +\r\n \" There's also positionCaseInsensitiveUTF8 function.\"\r\n },\r\n {\r\n \"name\": \"arrayElement\",\r\n \"def\": \"arrayElement(arr, n), arr[n] operator\",\r\n \"docText\": \"Get the element with the index `n` from the array `arr`. \\n\" +\r\n \"\\n\" +\r\n \" `n` should be any integer type. \\n\" +\r\n \"\\n\" +\r\n \" Indexes in an array begin from one. \\n\" +\r\n \"\\n\" +\r\n \" Negative indexes are supported - in this case, it selects the corresponding element numbered from the end. \"\r\n },\r\n {\r\n \"name\": \"toStringCutToZero\",\r\n \"def\": \"toStringCutToZero(s)\",\r\n \"docText\": \"Accepts a String or FixedString argument. Returns a String that is cut to a first null byte occurrence.\"\r\n },\r\n {\r\n \"name\": \"log\",\r\n \"def\": \"log(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to the decimal logarithm of the argument.\"\r\n },\r\n {\r\n \"name\": \"SEIn\",\r\n \"def\": \"SEIn(lhs, rhs)\",\r\n \"docText\": \"Checks whether the `lhs` search engine belongs to the `rhs` search engine.\"\r\n },\r\n {\r\n \"name\": \"replicate\",\r\n \"def\": \"replicate(v)\",\r\n \"docText\": \"Create a MergeTree table with a different name. Move all the data from the directory with the ReplicatedMergeTree table data to the new table`s data directory.\"\r\n },\r\n {\r\n \"name\": \"sipHash64\",\r\n \"def\": \"sipHash64(v)\",\r\n \"docText\": \"Calculates SipHash from a string. \\n\" +\r\n \"\\n\" +\r\n \" Accepts a String-type argument. Returns UInt64. \\n\" +\r\n \"\\n\" +\r\n \" SipHash is a cryptographic hash function. It works at least three times faster than MD5. For more information, see https://131002.net/siphash/\"\r\n },\r\n {\r\n \"name\": \"emptyArrayUInt16\",\r\n \"def\": \"emptyArrayUInt16(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"hex\",\r\n \"def\": \"hex(str)\",\r\n \"docText\": \"Accepts a string containing any number of hexadecimal digits, and returns a string containing the corresponding bytes. Supports both uppercase and lowercase letters A-F. The number of hexadecimal digits doesn`t have to be even.\"\r\n },\r\n {\r\n \"name\": \"regionToDistrict\",\r\n \"def\": \"regionToDistrict(id[, geobase])\",\r\n \"docText\": \"Converts a region to a federal district (type 4 in the geobase). In every other way, this function is the same as `regionToCity`. \"\r\n },\r\n {\r\n \"name\": \"arrayFilter\",\r\n \"def\": \"arrayFilter(func, arr1, ...)\",\r\n \"docText\": \"Returns an array containing only the elements in `arr1` for which `func` returns something other than 0. \\n\" +\r\n \"\\n\" +\r\n \" Examples: \\n\" +\r\n \"\\n\" +\r\n \" SELECT arrayFilter(x -> x LIKE `%World%`, [`Hello`, `abc World`]) AS res \"\r\n },\r\n {\r\n \"name\": \"toStartOfQuarter\",\r\n \"def\": \"toStartOfQuarter(v)\",\r\n \"docText\": \"Rounds down a date or date with time to the first day of the quarter. \\n\" +\r\n \"\\n\" +\r\n \" The first day of the quarter is either 1 January, 1 April, 1 July, or 1 October. Returns the date.\"\r\n },\r\n {\r\n \"name\": \"divide\",\r\n \"def\": \"divide(a, b), a / b operator\",\r\n \"docText\": \"Calculates the quotient of the numbers. The result type is always a floating-point type. \\n\" +\r\n \"\\n\" +\r\n \" It is not integer division. For integer division, use the `intDiv` function. \\n\" +\r\n \"\\n\" +\r\n \" When dividing by zero you get `inf`, `-inf`, or `nan`.\"\r\n },\r\n {\r\n \"name\": \"reverseUTF8\",\r\n \"def\": \"reverseUTF8(v)\",\r\n \"docText\": \"Reverses a sequence of Unicode code points, assuming that the string contains a set of bytes representing a UTF-8 text. Otherwise, it does something else (it doesn`t throw an exception).\"\r\n },\r\n {\r\n \"name\": \"toDate\",\r\n \"def\": \"toDate(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"emptyArrayFloat64\",\r\n \"def\": \"emptyArrayFloat64(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"abs\",\r\n \"def\": \"abs(s, c)\",\r\n \"docText\": \"If the `s` string is non-empty and does not contain the `c` character at the end, it appends the `c` character to the end.\"\r\n },\r\n {\r\n \"name\": \"yesterday\",\r\n \"def\": \"yesterday(v)\",\r\n \"docText\": \"Accepts zero arguments and returns yesterday`s date at one of the moments of request execution. \\n\" +\r\n \"\\n\" +\r\n \" The same as `today() - 1`.\"\r\n },\r\n {\r\n \"name\": \"toMinute\",\r\n \"def\": \"toMinute(v)\",\r\n \"docText\": \"Converts a date with time to a UInt8 number containing the number of the minute of the hour (0-59).\"\r\n },\r\n {\r\n \"name\": \"bitXor\",\r\n \"def\": \"bitXor(a, b)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"minus\",\r\n \"def\": \"minus(a, b), a - b operator\",\r\n \"docText\": \"Calculates the difference. The result is always signed. \\n\" +\r\n \"\\n\" +\r\n \" You can also calculate whole numbers from a date or date with time. The idea is the same - see above for `plus`.\"\r\n },\r\n {\r\n \"name\": \"toDateTime\",\r\n \"def\": \"toDateTime(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"modulo\",\r\n \"def\": \"modulo(a, b), a % b operator\",\r\n \"docText\": \"Calculates the remainder after division. \\n\" +\r\n \"\\n\" +\r\n \" If arguments are floating-point numbers, they are pre-converted to integers by dropping the decimal portion. The remainder is taken in the same sense as in C++. Truncated division is used for negative numbers. \\n\" +\r\n \"\\n\" +\r\n \" An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one.\"\r\n },\r\n {\r\n \"name\": \"bitmaskToArray\",\r\n \"def\": \"bitmaskToArray(num)\",\r\n \"docText\": \"Accepts an integer. Returns an array of UInt64 numbers containing the list of powers of two that total the source number when summed. Numbers in the array are in ascending order.\"\r\n },\r\n {\r\n \"name\": \"negate\",\r\n \"def\": \"negate(a), -a operator\",\r\n \"docText\": \"Calculates a number with the reverse sign. The result is always signed.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayFloat32\",\r\n \"def\": \"emptyArrayFloat32(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"range\",\r\n \"def\": \"range(N)\",\r\n \"docText\": \"Returns an array of numbers from 0 to N-1. \\n\" +\r\n \"\\n\" +\r\n \" Just in case, an exception is thrown if arrays with a total length of more than 100,000,000 elements are created in a data block.\"\r\n },\r\n {\r\n \"name\": \"arrayAll\",\r\n \"def\": \"arrayAll([func,] arr1, ...)\",\r\n \"docText\": \"Returns 1 if `func` returns something other than 0 for all the elements in `arr`. Otherwise, it returns 0.\"\r\n },\r\n {\r\n \"name\": \"toInt32\",\r\n \"def\": \"toInt32(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"unhex\",\r\n \"def\": \"unhex(str)\",\r\n \"docText\": \"Accepts a string containing any number of hexadecimal digits, and returns a string containing the corresponding bytes. Supports both uppercase and lowercase letters A-F. The number of hexadecimal digits doesn`t have to be even. If it is odd, the last digit is interpreted as the younger half of the 00-0F byte. If the argument string contains anything other than hexadecimal digits, some implementation-defined result is returned (an exception isn`t thrown). \\n\" +\r\n \"\\n\" +\r\n \" If you want to convert the result to a number, you can use the functions `reverse` and `reinterpretAsType`.\"\r\n },\r\n {\r\n \"name\": \"toFloat64\",\r\n \"def\": \"toFloat64(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"bitAnd\",\r\n \"def\": \"bitAnd(a, b)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"toStartOfYear\",\r\n \"def\": \"toStartOfYear(v)\",\r\n \"docText\": \"Rounds down a date or date with time to the first day of the year. \\n\" +\r\n \"\\n\" +\r\n \" Returns the date.\"\r\n },\r\n {\r\n \"name\": \"bitOr\",\r\n \"def\": \"bitOr(a, b)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"SEToRoot\",\r\n \"def\": \"SEToRoot(v)\",\r\n \"docText\": \"Accepts a UInt8 number - the ID of the search engine from the Yandex.Metrica dictionary. If any search engine matches the passed number, it returns a UInt8 number - the ID of the corresponding root search engine (for example, it converts Yandex.Images to Yandex). Otherwise, returns 0.\"\r\n },\r\n {\r\n \"name\": \"toRelativeMinuteNum\",\r\n \"def\": \"toRelativeMinuteNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the minute, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"visitParamExtractInt\",\r\n \"def\": \"visitParamExtractInt(params, name)\",\r\n \"docText\": \"The same as for Int64.\"\r\n },\r\n {\r\n \"name\": \"emptyArrayInt16\",\r\n \"def\": \"emptyArrayInt16(v)\",\r\n \"docText\": \"Accepts zero arguments and returns an empty array of the appropriate type.\"\r\n },\r\n {\r\n \"name\": \"visitParamExtractString\",\r\n \"def\": \"visitParamExtractString(params, name)\",\r\n \"docText\": \"Parses the string in double quotes. The value is unescaped. If unescaping failed, it returns an empty string. \"\r\n },\r\n {\r\n \"name\": \"arrayEnumerateUniq\",\r\n \"def\": \"arrayEnumerateUniq(arr, ...)\",\r\n \"docText\": \"Returns an array the same size as the source array, indicating for each element what its position is among elements with the same value. \"\r\n },\r\n {\r\n \"name\": \"visitParamExtractUInt\",\r\n \"def\": \"visitParamExtractUInt(params, name)\",\r\n \"docText\": \"Parses UInt64 from the value of the field named `name`. If this is a string field, it tries to parse a number from the beginning of the string. If the field doesn`t exist, or it exists but doesn`t contain a number, it returns 0.\"\r\n },\r\n {\r\n \"name\": \"toTypeName\",\r\n \"def\": \"toTypeName(x)\",\r\n \"docText\": \"Gets the type name. Returns a string containing the type name of the passed argument.\"\r\n },\r\n {\r\n \"name\": \"empty\",\r\n \"def\": \"empty(v)\",\r\n \"docText\": \"Accepts an empty array as argument and returns an array of one element equal to the default value.\"\r\n },\r\n {\r\n \"name\": \"multiply\",\r\n \"def\": \"multiply(a, b), a * b operator\",\r\n \"docText\": \"Calculates the product of the numbers.\"\r\n },\r\n {\r\n \"name\": \"has\",\r\n \"def\": \"has('database', 'table', 'column')\",\r\n \"docText\": \"Accepts constant String columns - database name, table name and column name. Returns constant UInt8 value, equal to 1 if column exists, otherwise 0.\\n\" +\r\n \"\\n\" +\r\n \" If table doesn't exist than exception is thrown. \\n\" +\r\n \"\\n\" +\r\n \" For elements of nested data structure function checks existence of column. For nested data structure 0 is returned.\"\r\n },\r\n {\r\n \"name\": \"bitNot\",\r\n \"def\": \"bitNot(a)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"lessOrEquals\",\r\n \"def\": \"lessOrEquals(v)\",\r\n \"docText\": \"greaterOrEquals, >= operator\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsInt64\",\r\n \"def\": \"reinterpretAsInt64(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"IPv4NumToString\",\r\n \"def\": \"IPv4NumToString(num)\",\r\n \"docText\": \"Similar to IPv4NumToString, but using `xxx` instead of the last octet. \"\r\n },\r\n {\r\n \"name\": \"bitShiftLeft\",\r\n \"def\": \"bitShiftLeft(a, b)\",\r\n \"docText\": \"\"\r\n },\r\n {\r\n \"name\": \"dictGetInt16\",\r\n \"def\": \"dictGetInt16(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"toUInt32OrZero\",\r\n \"def\": \"toUInt32OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"regionIn\",\r\n \"def\": \"regionIn(lhs, rhs[, geobase])\",\r\n \"docText\": \"Checks whether a `lhs` region belongs to a `rhs` region. Returns a UInt8 number equal to 1 if it belongs, or 0 if it doesn`t belong. \\n\" +\r\n \"\\n\" +\r\n \" The relationship is reflexive - any region also belongs to itself.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsUInt8\",\r\n \"def\": \"reinterpretAsUInt8(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"dictIsIn\",\r\n \"def\": \"dictIsIn(v)\",\r\n \"docText\": \"`dictIsIn(`dict_name`, child_id, ancestor_id)` \\n\" +\r\n \"\\n\" +\r\n \" - For the `dict_name` hierarchical dictionary, finds out whether the `child_id` key is located inside `ancestor_id` (or matches `ancestor_id`). Returns UInt8.\"\r\n },\r\n {\r\n \"name\": \"toSecond\",\r\n \"def\": \"toSecond(v)\",\r\n \"docText\": \"Converts a date with time to a UInt8 number containing the number of the second in the minute (0-59). \\n\" +\r\n \"\\n\" +\r\n \" Leap seconds are not accounted for.\"\r\n },\r\n {\r\n \"name\": \"least\",\r\n \"def\": \"least(a, b)\",\r\n \"docText\": \"Returns the least element of a and b.\"\r\n },\r\n {\r\n \"name\": \"countEqual\",\r\n \"def\": \"countEqual(arr, x)\",\r\n \"docText\": \"Returns the number of elements in the array equal to `x`. Equivalent to arrayCount(elem -> elem = x, arr).\"\r\n },\r\n {\r\n \"name\": \"IPv4StringToNum\",\r\n \"def\": \"IPv4StringToNum(s)\",\r\n \"docText\": \"The reverse function of IPv4NumToString. If the IPv4 address has an invalid format, it returns 0.\"\r\n },\r\n {\r\n \"name\": \"replaceRegexpAll\",\r\n \"def\": \"replaceRegexpAll(haystack, pattern, replacement)\",\r\n \"docText\": \"This does the same thing, but replaces all the occurrences\"\r\n },\r\n {\r\n \"name\": \"SHA224\",\r\n \"def\": \"SHA224(v)\",\r\n \"docText\": \"Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32). \\n\" +\r\n \"\\n\" +\r\n \" The function works fairly slowly (SHA-1 processes about 5 million short strings per second per processor core, while SHA-224 and SHA-256 process about 2.2 million). \"\r\n },\r\n {\r\n \"name\": \"URLHash\",\r\n \"def\": \"URLHash(url[, N])\",\r\n \"docText\": \"A fast, decent-quality non-cryptographic hash function for a string obtained from a URL using some type of normalization. \\n\" +\r\n \"\\n\" +\r\n \" URLHash(s) - Calculates a hash from a string without one of the trailing symbols /,? or # at the end, if present\"\r\n },\r\n {\r\n \"name\": \"equals\",\r\n \"def\": \"equals(v)\",\r\n \"docText\": \"

greaterOrEquals, >= operator

\"\r\n },\r\n {\r\n \"name\": \"plus\",\r\n \"def\": \"plus(a, b), a + b operator\",\r\n \"docText\": \"Calculates the sum of the numbers. \\n\" +\r\n \"\\n\" +\r\n \" You can also add whole numbers with a date or date and time. In the case of a date, adding a whole number means adding the corresponding number of days. For a date with time, it means adding the corresponding number of seconds.\"\r\n },\r\n {\r\n \"name\": \"less\",\r\n \"def\": \"less(v)\",\r\n \"docText\": \"

greaterOrEquals, >= operator

\"\r\n },\r\n {\r\n \"name\": \"regionHierarchy\",\r\n \"def\": \"regionHierarchy(id[, geobase])\",\r\n \"docText\": \"Accepts a UInt32 number - the region ID from the Yandex geobase. Returns an array of region IDs consisting of the passed region and all parents along the chain. \\n\" +\r\n \"\\n\" +\r\n \" Example: `regionHierarchy(toUInt32(213)) = [213,1,3,225,10001,10000]`.\"\r\n },\r\n {\r\n \"name\": \"toUInt64OrZero\",\r\n \"def\": \"toUInt64OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"rowNumberInAllBlocks\",\r\n \"def\": \"rowNumberInAllBlocks()\",\r\n \"docText\": \"Returns an incremental row number within all blocks that were processed by this function.\"\r\n },\r\n {\r\n \"name\": \"toDayOfWeek\",\r\n \"def\": \"toDayOfWeek(v)\",\r\n \"docText\": \"Converts a date or date with time to a UInt8 number containing the number of the day of the week (Monday is 1, and Sunday is 7).\"\r\n },\r\n {\r\n \"name\": \"bar\",\r\n \"def\": \"bar(v)\",\r\n \"docText\": \"Allows building a unicode-art diagram. \\n\" +\r\n \"\\n\" +\r\n \" bar(x, min, max, width) - Draws a band with a width proportional to (x - min) and equal to `width` characters when x\"\r\n },\r\n {\r\n \"name\": \"if\",\r\n \"def\": \"if(v)\",\r\n \"docText\": \"The suffix -`If` can be appended to the name of any aggregate function. In this case, the aggregate function accepts an extra argument - a condition (Uint8 type). \"\r\n },\r\n {\r\n \"name\": \"regionToArea\",\r\n \"def\": \"regionToArea(id[, geobase])\",\r\n \"docText\": \"Converts a region to an area (type 5 in the geobase). In every other way, this function is the same as `regionToCity`.\"\r\n },\r\n {\r\n \"name\": \"dictGetUInt16\",\r\n \"def\": \"dictGetUInt16(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"toUInt8\",\r\n \"def\": \"toUInt8(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toUInt16\",\r\n \"def\": \"toUInt16(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"path\",\r\n \"def\": \"path(URL)\",\r\n \"docText\": \"- The same thing, but without the protocol and host in the result. The / element (root) is not included.\"\r\n },\r\n {\r\n \"name\": \"extractURLParameters\",\r\n \"def\": \"extractURLParameters(URL)\",\r\n \"docText\": \"- Gets an array of name=value strings corresponding to the URL parameters. The values are not decoded in any way.\"\r\n },\r\n {\r\n \"name\": \"OSHierarchy\",\r\n \"def\": \"OSHierarchy(v)\",\r\n \"docText\": \"Accepts a UInt8 number - the ID of the operating system from the Yandex.Metrica dictionary. Returns an array with a hierarchy of operating systems. Similar to the `regionHierarchy` function.\"\r\n },\r\n {\r\n \"name\": \"cutQueryStringAndFragment\",\r\n \"def\": \"cutQueryStringAndFragment(v)\",\r\n \"docText\": \"Removes the query-string and fragment identifier. The question mark and number sign are also removed.\"\r\n },\r\n {\r\n \"name\": \"timeSlots\",\r\n \"def\": \"timeSlots(StartTime, Duration)\",\r\n \"docText\": \"For a time interval starting at `StartTime` and continuing for `Duration` seconds, it returns an array of moments in time, consisting of points from this interval rounded down to the half hour. \\n\" +\r\n \"\\n\" +\r\n \" For example, `timeSlots(toDateTime(`2012-01-01 12:20:00`), toUInt32(600)) = [toDateTime(`2012-01-01 12:00:00`), toDateTime(`2012-01-01 12:30:00`)]`. \\n\" +\r\n \"\\n\" +\r\n \" This is necessary for searching for pageviews in the corresponding session.\"\r\n },\r\n {\r\n \"name\": \"toUInt32\",\r\n \"def\": \"toUInt32(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toStartOfMinute\",\r\n \"def\": \"toStartOfMinute(v)\",\r\n \"docText\": \"Rounds down a date with time to the start of the minute.\"\r\n },\r\n {\r\n \"name\": \"version\",\r\n \"def\": \"version()\",\r\n \"docText\": \"Returns server's version as a string.\"\r\n },\r\n {\r\n \"name\": \"toUInt64\",\r\n \"def\": \"toUInt64(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toInt16\",\r\n \"def\": \"toInt16(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"reinterpretAsInt16\",\r\n \"def\": \"reinterpretAsInt16(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"toInt64\",\r\n \"def\": \"toInt64(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toFixedString\",\r\n \"def\": \"toFixedString(s, N)\",\r\n \"docText\": \"Converts a String type argument to a FixedString(N) type (a string with fixed length N). N must be a constant. If the string has fewer bytes than N, it is passed with null bytes to the right. If the string has more bytes than N, an exception is thrown.\"\r\n },\r\n {\r\n \"name\": \"toFloat32\",\r\n \"def\": \"toFloat32(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"dictGetHierarchy\",\r\n \"def\": \"dictGetHierarchy(v)\",\r\n \"docText\": \"`dictGetHierarchy(`dict_name`, id)` \\n\" +\r\n \"\\n\" +\r\n \" - For the `dict_name` hierarchical dictionary, returns an array of dictionary keys starting from `id` and continuing along the chain of parent elements. Returns Array(UInt64).\"\r\n },\r\n {\r\n \"name\": \"dictGetInt64\",\r\n \"def\": \"dictGetInt64(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"CAST\",\r\n \"def\": \"CAST(x, t)\",\r\n \"docText\": \"Casts `x` to the `t` data type. \\n\" +\r\n \"\\n\" +\r\n \" The syntax `CAST(x AS t)` is also supported. \\n\"\r\n },\r\n {\r\n \"name\": \"toRelativeSecondNum\",\r\n \"def\": \"toRelativeSecondNum(v)\",\r\n \"docText\": \"Converts a date with time or date to the number of the second, starting from a certain fixed point in the past.\"\r\n },\r\n {\r\n \"name\": \"toUInt8OrZero\",\r\n \"def\": \"toUInt8OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toStartOfMonth\",\r\n \"def\": \"toStartOfMonth(v)\",\r\n \"docText\": \"Rounds down a date or date with time to the first day of the month. \\n\" +\r\n \"\\n\" +\r\n \" Returns the date.\"\r\n },\r\n {\r\n \"name\": \"rand64\",\r\n \"def\": \"rand64(v)\",\r\n \"docText\": \"Returns a pseudo-random UInt64 number, evenly distributed among all UInt64-type numbers. \\n\" +\r\n \"\\n\" +\r\n \" Uses a linear congruential generator.\"\r\n },\r\n {\r\n \"name\": \"toInt8OrZero\",\r\n \"def\": \"toInt8OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toFloat32OrZero\",\r\n \"def\": \"toFloat32OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"toYear\",\r\n \"def\": \"toYear(v)\",\r\n \"docText\": \"Converts a date or date with time to a UInt16 number containing the year number (AD).\"\r\n },\r\n {\r\n \"name\": \"atan\",\r\n \"def\": \"atan(x)\",\r\n \"docText\": \"The arc tangent.\"\r\n },\r\n {\r\n \"name\": \"toFloat64OrZero\",\r\n \"def\": \"toFloat64OrZero(v)\",\r\n \"docText\": \"Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. \"\r\n },\r\n {\r\n \"name\": \"arrayEnumerate\",\r\n \"def\": \"arrayEnumerate(arr, ...)\",\r\n \"docText\": \"Returns an array the same size as the source array, indicating for each element what its position is among elements with the same value.\"\r\n },\r\n {\r\n \"name\": \"toDayOfMonth\",\r\n \"def\": \"toDayOfMonth(v)\",\r\n \"docText\": \"Converts a date or date with time to a UInt8 number containing the number of the day of the month (1-31).\"\r\n },\r\n {\r\n \"name\": \"dictGetUInt64\",\r\n \"def\": \"dictGetUInt64(v)\",\r\n \"docText\": \"dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition.\"\r\n },\r\n {\r\n \"name\": \"IPv4NumToStringClassC\",\r\n \"def\": \"IPv4NumToStringClassC(num)\",\r\n \"docText\": \"Similar to IPv4NumToString, but using `xxx` instead of the last octet. \"\r\n },\r\n {\r\n \"name\": \"reinterpretAsString\",\r\n \"def\": \"reinterpretAsString(v)\",\r\n \"docText\": \"This function accepts a number or date or date with time, and returns a string containing bytes representing the corresponding value in host order (little endian). Null bytes are dropped from the end. For example, a UInt32 type value of 255 is a string that is one byte long.\"\r\n },\r\n {\r\n \"name\": \"toHour\",\r\n \"def\": \"toHour(v)\",\r\n \"docText\": \"Converts a date with time to a UInt8 number containing the number of the hour in 24-hour time (0-23). \\n\" +\r\n \"\\n\" +\r\n \" This function assumes that if clocks are moved ahead, it is by one hour and occurs at 2 a.m., and if clocks are moved back, it is by one hour and occurs at 3 a.m. (which is not always true - even in Moscow the clocks were once changed at a different time).\"\r\n },\r\n {\r\n \"name\": \"ignore\",\r\n \"def\": \"ignore(...)\",\r\n \"docText\": \"A function that accepts any arguments and always returns 0. \\n\" +\r\n \"\\n\" +\r\n \" However, the argument is still calculated. This can be used for benchmarks.\"\r\n },\r\n {\r\n \"name\": \"arrayJoin\",\r\n \"def\": \"arrayJoin(v)\",\r\n \"docText\": \"This is a very unusual function.\\n\" +\r\n \"\\n\" +\r\n \"Normal functions don't change a set of rows, but just change the values in each row (map). Aggregate functions compress a set of rows (fold or reduce). The 'arrayJoin' function takes each row and generates a set of rows (unfold).\\n\" +\r\n \"\\n\" +\r\n \"This function takes an array as an argument, and propagates the source row to multiple rows for the number of elements in the array. All the values in columns are simply copied, except the values in the column where this function is applied - it is replaced with the corresponding array value.\\n\" +\r\n \"\\n\" +\r\n \"A query can use multiple 'arrayJoin' functions. In this case, the transformation is performed multiple times.\\n\" +\r\n \"\\n\" +\r\n \"Note the ARRAY JOIN syntax in the SELECT query, which provides broader possibilities.\"\r\n },\r\n {\r\n \"name\": \"length\",\r\n \"def\": \"length(v)\",\r\n \"docText\": \"Returns the length of a string in Unicode code points (not in characters), assuming that the string contains a set of bytes that make up UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \\n\" +\r\n \"\\n\" +\r\n \" The result type is UInt64.\"\r\n },\r\n {\r\n \"name\": \"tuple\",\r\n \"def\": \"tuple(tuple, n), operator x.N\",\r\n \"docText\": \"A function that allows getting columns from a tuple. \\n\" +\r\n \"\\n\" +\r\n \" `N` is the column index, starting from 1. `N` must be a constant. `N` must be a strict postive integer no greater than the size of the tuple. \\n\" +\r\n \"\\n\" +\r\n \" There is no cost to execute the function.\"\r\n },\r\n {\r\n \"name\": \"extractURLParameterNames\",\r\n \"def\": \"extractURLParameterNames(URL)\",\r\n \"docText\": \"- Gets an array of name=value strings corresponding to the names of URL parameters. The values are not decoded in any way.\"\r\n },\r\n {\r\n \"name\": \"tupleElement\",\r\n \"def\": \"tupleElement(tuple, n), operator x.N\",\r\n \"docText\": \"A function that allows getting columns from a tuple. \\n\" +\r\n \"\\n\" +\r\n \" `N` is the column index, starting from 1. `N` must be a constant. `N` must be a strict postive integer no greater than the size of the tuple. \\n\" +\r\n \"\\n\" +\r\n \" There is no cost to execute the function.\"\r\n },\r\n {\r\n \"name\": \"in\",\r\n \"def\": \"in(v)\",\r\n \"docText\": \"What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw.\"\r\n },\r\n {\r\n \"name\": \"globalIn\",\r\n \"def\": \"globalIn(v)\",\r\n \"docText\": \"See the section `IN operators`.\"\r\n },\r\n {\r\n \"name\": \"isFinite\",\r\n \"def\": \"isFinite(x)\",\r\n \"docText\": \"Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is not infinite and not a NaN, otherwise 0.\"\r\n },\r\n {\r\n \"name\": \"isNaN\",\r\n \"def\": \"isNaN(x)\",\r\n \"docText\": \"Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is a NaN, otherwise 0.\"\r\n },\r\n {\r\n \"name\": \"isInfinite\",\r\n \"def\": \"isInfinite(x)\",\r\n \"docText\": \"Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is infinite, otherwise 0. \\n\" +\r\n \"\\n\" +\r\n \" Note that 0 is returned for a NaN.\"\r\n },\r\n {\r\n \"name\": \"transform\",\r\n \"def\": \"transform(v)\",\r\n \"docText\": \"Transforms a value according to the explicitly defined mapping of some elements to other ones. \\n\" +\r\n \"\\n\" +\r\n \" There are two variations of this function: \\n\" +\r\n \"\\n\" +\r\n \" 1. `transform(x, array_from, array_to, default)` \"\r\n },\r\n {\r\n \"name\": \"rand\",\r\n \"def\": \"rand(v)\",\r\n \"docText\": \"Returns a pseudo-random UInt64 number, evenly distributed among all UInt64-type numbers. \\n\" +\r\n \"\\n\" +\r\n \" Uses a linear congruential generator.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsUInt16\",\r\n \"def\": \"reinterpretAsUInt16(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"pi\",\r\n \"def\": \"pi(v)\",\r\n \"docText\": \"Maximum pipeline depth. Corresponds to the number of transformations that each data block goes through during query processing. Counted within the limits of a single server. If the pipeline depth is greater, an exception is thrown. By default, 1000.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsUInt32\",\r\n \"def\": \"reinterpretAsUInt32(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsUInt64\",\r\n \"def\": \"reinterpretAsUInt64(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsInt8\",\r\n \"def\": \"reinterpretAsInt8(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"upperUTF8\",\r\n \"def\": \"upperUTF8(v)\",\r\n \"docText\": \"Converts a string to uppercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. So for Turkish the result might not be exactly correct. \"\r\n },\r\n {\r\n \"name\": \"reinterpretAsInt32\",\r\n \"def\": \"reinterpretAsInt32(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsFloat32\",\r\n \"def\": \"reinterpretAsFloat32(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsFloat64\",\r\n \"def\": \"reinterpretAsFloat64(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsDate\",\r\n \"def\": \"reinterpretAsDate(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"reinterpretAsDateTime\",\r\n \"def\": \"reinterpretAsDateTime(v)\",\r\n \"docText\": \"Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch.\"\r\n },\r\n {\r\n \"name\": \"roundToExp2\",\r\n \"def\": \"roundToExp2(num)\",\r\n \"docText\": \"Accepts a number. If the number is less than one, it returns 0. Otherwise, it rounds the number down to the nearest (whole non-negative) degree of two.\"\r\n },\r\n {\r\n \"name\": \"upper\",\r\n \"def\": \"upper(v)\",\r\n \"docText\": \"Converts a string to uppercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. So for Turkish the result might not be exactly correct.\"\r\n },\r\n {\r\n \"name\": \"positionUTF8\",\r\n \"def\": \"positionUTF8(haystack, needle)\",\r\n \"docText\": \"The same as `position`, but the position is returned in Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \\n\" +\r\n \"\\n\" +\r\n \" There's also positionCaseInsensitiveUTF8 function.\"\r\n },\r\n {\r\n \"name\": \"roundDuration\",\r\n \"def\": \"roundDuration(num)\",\r\n \"docText\": \"Accepts a number. If the number is less than one, it returns 0. Otherwise, it rounds the number down to numbers from the set: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. This function is specific to Yandex.Metrica and used for implementing the report on session length.\"\r\n },\r\n {\r\n \"name\": \"roundAge\",\r\n \"def\": \"roundAge(num)\",\r\n \"docText\": \"Accepts a number. If the number is less than 18, it returns 0. Otherwise, it rounds the number down to numbers from the set: 18, 25, 35, 45. This function is specific to Yandex.Metrica and used for implementing the report on user age.\"\r\n },\r\n {\r\n \"name\": \"round\",\r\n \"def\": \"round(num)\",\r\n \"docText\": \"Accepts a number. If the number is less than 18, it returns 0. Otherwise, it rounds the number down to numbers from the set: 18, 25, 35, 45. This function is specific to Yandex.Metrica and used for implementing the report on user age.\"\r\n },\r\n {\r\n \"name\": \"floor\",\r\n \"def\": \"floor(x[, N])\",\r\n \"docText\": \"Returns a rounder number that is less than or equal to `x`.\"\r\n },\r\n {\r\n \"name\": \"notEmpty\",\r\n \"def\": \"notEmpty(v)\",\r\n \"docText\": \"Returns 0 for an empty array, or 1 for a non-empty array. \\n\" +\r\n \"\\n\" +\r\n \" The result type is UInt8. \\n\" +\r\n \"\\n\" +\r\n \" The function also works for strings.\"\r\n },\r\n {\r\n \"name\": \"lengthUTF8\",\r\n \"def\": \"lengthUTF8(v)\",\r\n \"docText\": \"Returns the length of a string in Unicode code points (not in characters), assuming that the string contains a set of bytes that make up UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \\n\" +\r\n \"\\n\" +\r\n \" The result type is UInt64.\"\r\n },\r\n {\r\n \"name\": \"lower\",\r\n \"def\": \"lower(v)\",\r\n \"docText\": \"Converts a string to lowercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. \"\r\n },\r\n {\r\n \"name\": \"lowerUTF8\",\r\n \"def\": \"lowerUTF8(v)\",\r\n \"docText\": \"Converts a string to lowercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. \"\r\n },\r\n {\r\n \"name\": \"reverse\",\r\n \"def\": \"reverse(v)\",\r\n \"docText\": \"Reverses a sequence of Unicode code points, assuming that the string contains a set of bytes representing a UTF-8 text. Otherwise, it does something else (it doesn`t throw an exception).\"\r\n },\r\n {\r\n \"name\": \"URLPathHierarchy\",\r\n \"def\": \"URLPathHierarchy(URL)\",\r\n \"docText\": \"- The same thing, but without the protocol and host in the result. The / element (root) is not included. \"\r\n },\r\n {\r\n \"name\": \"substringUTF8\",\r\n \"def\": \"substringUTF8(s, offset, length)\",\r\n \"docText\": \"The same as `substring`, but for Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception).\"\r\n },\r\n {\r\n \"name\": \"appendTrailingCharIfAbsent\",\r\n \"def\": \"appendTrailingCharIfAbsent(s, c)\",\r\n \"docText\": \"If the `s` string is non-empty and does not contain the `c` character at the end, it appends the `c` character to the end.\"\r\n },\r\n {\r\n \"name\": \"alphaTokens\",\r\n \"def\": \"alphaTokens(s)\",\r\n \"docText\": \"Selects substrings of consecutive bytes from the range a-z and A-Z. \\n\" +\r\n \"\\n\" +\r\n \" Returns an array of selected substrings.\"\r\n },\r\n {\r\n \"name\": \"splitByChar\",\r\n \"def\": \"splitByChar(separator, s)\",\r\n \"docText\": \"Splits a string into substrings, using `separator` as the separator. \\n\" +\r\n \"\\n\" +\r\n \" `separator` must be a string constant consisting of exactly one character. \\n\" +\r\n \"\\n\" +\r\n \" Returns an array of selected substrings\"\r\n },\r\n {\r\n \"name\": \"arrayStringConcat\",\r\n \"def\": \"arrayStringConcat(arr[, separator])\",\r\n \"docText\": \"Concatenates strings from the array elements, using `separator` as the separator. \\n\" +\r\n \"\\n\" +\r\n \" `separator` is a string constant, an optional parameter. By default it is an empty string. \\n\" +\r\n \"\\n\" +\r\n \" Returns a string.\"\r\n },\r\n {\r\n \"name\": \"replaceAll\",\r\n \"def\": \"replaceAll(haystack, pattern, replacement)\",\r\n \"docText\": \"Replaces all occurrences of the `pattern` substring in `haystack` with the `replacement` substring.\"\r\n },\r\n {\r\n \"name\": \"replaceRegexpOne\",\r\n \"def\": \"replaceRegexpOne(haystack, pattern, replacement)\",\r\n \"docText\": \"Replacement using the `pattern` regular expression. A re2 regular expression. Replaces only the first occurrence, if it exists. \\n\" +\r\n \"\\n\" +\r\n \" A pattern can be specified as `replacement`. \"\r\n },\r\n {\r\n \"name\": \"cbrt\",\r\n \"def\": \"cbrt(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to the cubic root of the argument.\"\r\n },\r\n {\r\n \"name\": \"match\",\r\n \"def\": \"match(pattern)(time, cond1, cond2, ...)\",\r\n \"docText\": \"Pattern matching for event chains. \\n\" +\r\n \"\\n\" +\r\n \" `pattern` is a string containing a pattern to match. The pattern is similar to a regular expression.\"\r\n },\r\n {\r\n \"name\": \"cutURLParameter\",\r\n \"def\": \"cutURLParameter(URL, name)\",\r\n \"docText\": \"Removes the URL parameter named `name`, if present. This function works under the assumption that the parameter name is encoded in the URL exactly the same way as in the passed argument.\"\r\n },\r\n {\r\n \"name\": \"like\",\r\n \"def\": \"like(haystack, pattern), haystack NOT LIKE pattern operator\",\r\n \"docText\": \"The same thing as `like`, but negative.\"\r\n },\r\n {\r\n \"name\": \"domain\",\r\n \"def\": \"domain(v)\",\r\n \"docText\": \"- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \\n\" +\r\n \"\\n\" +\r\n \" For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`.\"\r\n },\r\n {\r\n \"name\": \"domainWithoutWWW\",\r\n \"def\": \"domainWithoutWWW(v)\",\r\n \"docText\": \"- Selects the domain and removes no more than one `www.` from the beginning of it, if present.\"\r\n },\r\n {\r\n \"name\": \"firstSignificantSubdomain\",\r\n \"def\": \"firstSignificantSubdomain(v)\",\r\n \"docText\": \"- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \\n\" +\r\n \"\\n\" +\r\n \" For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`.\"\r\n },\r\n {\r\n \"name\": \"queryString\",\r\n \"def\": \"queryString(v)\",\r\n \"docText\": \"Removes the query-string and fragment identifier. The question mark and number sign are also removed.\"\r\n },\r\n {\r\n \"name\": \"queryStringAndFragment\",\r\n \"def\": \"queryStringAndFragment(v)\",\r\n \"docText\": \"Removes the query-string and fragment identifier. The question mark and number sign are also removed.\"\r\n },\r\n {\r\n \"name\": \"extractURLParameter\",\r\n \"def\": \"extractURLParameter(URL)\",\r\n \"docText\": \"- Gets an array of name=value strings corresponding to the names of URL parameters. The values are not decoded in any way.\"\r\n },\r\n {\r\n \"name\": \"URLHierarchy\",\r\n \"def\": \"URLHierarchy(URL)\",\r\n \"docText\": \"- Gets an array containing the URL trimmed to the `/`, `?` characters in the path and query-string. Consecutive separator characters are counted as one. The cut is made in the position after all the consecutive separator characters. Example:\"\r\n },\r\n {\r\n \"name\": \"cutToFirstSignificantSubdomain\",\r\n \"def\": \"cutToFirstSignificantSubdomain(v)\",\r\n \"docText\": \"- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \\n\" +\r\n \"\\n\" +\r\n \" For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`.\"\r\n },\r\n {\r\n \"name\": \"cutWWW\",\r\n \"def\": \"cutWWW(v)\",\r\n \"docText\": \"Removes no more than one `www.` from the beginning of the URL`s domain, if present.\"\r\n },\r\n {\r\n \"name\": \"cutQueryString\",\r\n \"def\": \"cutQueryString(v)\",\r\n \"docText\": \"Removes the query-string and fragment identifier. The question mark and number sign are also removed.\"\r\n },\r\n {\r\n \"name\": \"cutFragment\",\r\n \"def\": \"cutFragment(v)\",\r\n \"docText\": \"Removes the fragment identifier. The number sign is also removed.\"\r\n },\r\n {\r\n \"name\": \"visitParamHas\",\r\n \"def\": \"visitParamHas(params, name)\",\r\n \"docText\": \"Checks whether there is a field with the `name` name.\"\r\n },\r\n {\r\n \"name\": \"visitParamExtractFloat\",\r\n \"def\": \"visitParamExtractFloat(params, name)\",\r\n \"docText\": \"The same as for Float64.\"\r\n },\r\n {\r\n \"name\": \"visitParamExtractBool\",\r\n \"def\": \"visitParamExtractBool(params, name)\",\r\n \"docText\": \"Parses a true/false value. The result is UInt8.\"\r\n },\r\n {\r\n \"name\": \"visitParamExtractRaw\",\r\n \"def\": \"visitParamExtractRaw(params, name)\",\r\n \"docText\": \"Returns the value of a field, including separators.\"\r\n },\r\n {\r\n \"name\": \"exp\",\r\n \"def\": \"exp(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to 10 in power of x.\"\r\n },\r\n {\r\n \"name\": \"exp2\",\r\n \"def\": \"exp2(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to 2 in power of x.\"\r\n },\r\n {\r\n \"name\": \"exp10\",\r\n \"def\": \"exp10(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to 10 in power of x.\"\r\n },\r\n {\r\n \"name\": \"tgamma\",\r\n \"def\": \"tgamma(x)\",\r\n \"docText\": \"Gamma function.\"\r\n },\r\n {\r\n \"name\": \"log10\",\r\n \"def\": \"log10(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to the decimal logarithm of the argument.\"\r\n },\r\n {\r\n \"name\": \"sqrt\",\r\n \"def\": \"sqrt(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to the square root of the argument.\"\r\n },\r\n {\r\n \"name\": \"erf\",\r\n \"def\": \"erf(v)\",\r\n \"docText\": \"What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw.\"\r\n },\r\n {\r\n \"name\": \"erfc\",\r\n \"def\": \"erfc(x)\",\r\n \"docText\": \"Accepts a numeric argument and returns a Float64 number close to 1 - erf(x), but without loss of precision for large `x` values.\"\r\n },\r\n {\r\n \"name\": \"lgamma\",\r\n \"def\": \"lgamma(x)\",\r\n \"docText\": \"The logarithm of the gamma function.\"\r\n },\r\n {\r\n \"name\": \"sin\",\r\n \"def\": \"sin(x)\",\r\n \"docText\": \"Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is infinite, otherwise 0. \\n\" +\r\n \"\\n\" +\r\n \" Note that 0 is returned for a NaN.\"\r\n },\r\n {\r\n \"name\": \"cos\",\r\n \"def\": \"cos(x)\",\r\n \"docText\": \"The arc cosine.\"\r\n },\r\n {\r\n \"name\": \"tan\",\r\n \"def\": \"tan(x)\",\r\n \"docText\": \"The arc tangent.\"\r\n },\r\n {\r\n \"name\": \"pow\",\r\n \"def\": \"pow(x, y)\",\r\n \"docText\": \"x in power of y.\"\r\n }\r\n ]\r\n };\r\n\r\n p.MacrosCompletions = function () {\r\n return [\r\n {\r\n \"name\": \"$table\",\r\n \"def\": \"$table\",\r\n \"docText\": \"Replaced with selected table name from Query Builder\"\r\n },\r\n {\r\n \"name\": \"$timeCol\",\r\n \"def\": \"$timeCol\",\r\n \"docText\": \"Replaced with `Date:Col` value from Query Builder\"\r\n },\r\n {\r\n \"name\": \"$dateTimeCol\",\r\n \"def\": \"$dateTimeCol\",\r\n \"docText\": \"Replaced with `Column:DateTime` or `Column:TimeStamp` value from Query Builder\"\r\n },\r\n {\r\n \"name\": \"$from\",\r\n \"def\": \"$from\",\r\n \"docText\": \"Replaced with timestamp/1000 value of selected `Time Range:From`\"\r\n },\r\n {\r\n \"name\": \"$to\",\r\n \"def\": \"$to\",\r\n \"docText\": \"Replaced with timestamp/1000 value of selected `Time Range:To`\"\r\n },\r\n {\r\n \"name\": \"$interval\",\r\n \"def\": \"$interval\",\r\n \"docText\": \"Replaced with selected `Group by time interval` value (as a number of seconds)\"\r\n },\r\n {\r\n \"name\": \"$timeFilter\",\r\n \"def\": \"$timeFilter\",\r\n \"docText\": \"Replaced with currently selected `Time Range`. Requires `Column:Date` and `Column:DateTime` or `Column:TimeStamp` to be selected\"\r\n },\r\n {\r\n \"name\": \"$timeSeries\",\r\n \"def\": \"$timeSeries\",\r\n \"docText\": \"Replaced with special ClickHouse construction to convert results as time-series data. Use it as `SELECT $timeSeries...`. Require `Column:DateTime` or `Column:TimeStamp` to be selected\"\r\n },\r\n {\r\n \"name\": \"$rate\",\r\n \"def\": \"$rate(cols...)\",\r\n \"docText\": \"Converts query results as `change rate per interval`. Can be used to display changes-per-second.\" +\r\n \"\\n\" +\r\n \"Example:\\n $rate(countIf(Type = 200) AS good, countIf(Type != 200) AS bad) FROM requests\"\r\n },\r\n {\r\n \"name\": \"$columns\",\r\n \"def\": \"$columns(key, value)\",\r\n \"docText\": \"Query values as array of [key, value], where key will be used as label. Can be used to display multiple lines at graph\" +\r\n \"\\n\" +\r\n \"Example:\\n $columns(OSName, count(*) c) FROM requests\"\r\n },\r\n {\r\n \"name\": \"$rateColumns\",\r\n \"def\": \"$rateColumns(key, value)\",\r\n \"docText\": \"Is a combination of `$columns` and `$rate` .\" +\r\n \"\\n\" +\r\n \"Example:\\n $rateColumns(OS, count(*) c) FROM requests\"\r\n },\r\n {\r\n \"name\": \"$unescape\",\r\n \"def\": \"$unescape($variable)\",\r\n \"docText\": \"Unescapes variable value by removing single quotes\" +\r\n \"\\n\" +\r\n \"Example:\\n SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5\"\r\n }\r\n ];\r\n };\r\n\r\n p.re = function (list) {\r\n return list.join(\"|\")\r\n };\r\n\r\n exports.ClickhouseInfo = p;\r\n});"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.d.ts deleted file mode 100644 index ee92930..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -/// -import AdhocCtrl from './adhoc'; -export declare class ClickHouseDatasource { - private $q; - private backendSrv; - private templateSrv; - type: string; - name: string; - supportMetrics: boolean; - url: string; - directUrl: string; - basicAuth: any; - withCredentials: any; - usePOST: boolean; - addCorsHeader: boolean; - responseParser: any; - adhocCtrl: AdhocCtrl; - /** @ngInject */ - constructor(instanceSettings: any, $q: any, backendSrv: any, templateSrv: any); - _request(query: any): any; - query(options: any): any; - metricFindQuery(query: any, options?: any): any; - testDatasource(): any; - _seriesQuery(query: any): any; - targetContainsTemplate(target: any): any; - getTagKeys(): any; - getTagValues(options: any): Promise; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js deleted file mode 100644 index 64ecb81..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js +++ /dev/null @@ -1,173 +0,0 @@ -/// -System.register(['lodash', './sql_series', './sql_query', './response_parser', './adhoc'], function(exports_1) { - var lodash_1, sql_series_1, sql_query_1, response_parser_1, adhoc_1; - var ClickHouseDatasource; - return { - setters:[ - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }, - function (sql_series_1_1) { - sql_series_1 = sql_series_1_1; - }, - function (sql_query_1_1) { - sql_query_1 = sql_query_1_1; - }, - function (response_parser_1_1) { - response_parser_1 = response_parser_1_1; - }, - function (adhoc_1_1) { - adhoc_1 = adhoc_1_1; - }], - execute: function() { - ClickHouseDatasource = (function () { - /** @ngInject */ - function ClickHouseDatasource(instanceSettings, $q, backendSrv, templateSrv) { - this.$q = $q; - this.backendSrv = backendSrv; - this.templateSrv = templateSrv; - this.type = 'clickhouse'; - this.name = instanceSettings.name; - this.supportMetrics = true; - this.responseParser = new response_parser_1.default(); - this.url = instanceSettings.url; - this.directUrl = instanceSettings.directUrl; - this.basicAuth = instanceSettings.basicAuth; - this.withCredentials = instanceSettings.withCredentials; - this.addCorsHeader = instanceSettings.jsonData.addCorsHeader; - this.usePOST = instanceSettings.jsonData.usePOST; - this.adhocCtrl = new adhoc_1.default(); - } - ClickHouseDatasource.prototype._request = function (query) { - var options = { - url: this.url - }; - if (this.usePOST) { - options.method = 'POST'; - options.data = query; - } - else { - options.method = 'GET'; - options.url += '/?query=' + encodeURIComponent(query); - } - if (this.basicAuth || this.withCredentials) { - options.withCredentials = true; - } - options.headers = options.headers || {}; - if (this.basicAuth) { - options.headers.Authorization = this.basicAuth; - } - if (this.addCorsHeader) { - if (this.usePOST) { - options.url += "?add_http_cors_header=1"; - } - else { - options.url += "&add_http_cors_header=1"; - } - } - return this.backendSrv.datasourceRequest(options).then(function (result) { - return result.data; - }); - }; - ; - ClickHouseDatasource.prototype.query = function (options) { - var _this = this; - var queries = [], q, adhocFilters = this.templateSrv.getAdhocFilters(this.name); - lodash_1.default.map(options.targets, function (target) { - if (!target.hide && target.query) { - var queryModel = new sql_query_1.default(target, _this.templateSrv, options); - q = queryModel.replace(options, adhocFilters); - queries.push(q); - } - }); - // No valid targets, return the empty result to save a round trip. - if (lodash_1.default.isEmpty(queries)) { - var d = this.$q.defer(); - d.resolve({ data: [] }); - return d.promise; - } - var allQueryPromise = lodash_1.default.map(queries, function (query) { - return _this._seriesQuery(query); - }); - return this.$q.all(allQueryPromise).then(function (responses) { - var result = [], i = 0; - lodash_1.default.each(responses, function (response) { - var target = options.targets[i]; - i++; - if (!response || !response.rows) { - return; - } - var sqlSeries = new sql_series_1.default({ - series: response.data, - meta: response.meta, - tillNow: options.rangeRaw.to === 'now', - from: sql_query_1.default.convertTimestamp(options.range.from, target.dateTimeType), - to: sql_query_1.default.convertTimestamp(options.range.to, target.dateTimeType) - }); - if (target.format === 'table') { - lodash_1.default.each(sqlSeries.toTable(), function (data) { - result.push(data); - }); - } - else { - lodash_1.default.each(sqlSeries.toTimeSeries(), function (data) { - result.push(data); - }); - } - }); - return { data: result }; - }); - }; - ; - ClickHouseDatasource.prototype.metricFindQuery = function (query, options) { - var interpolated; - try { - var scopedVars = {}; - if (options && options.range) { - scopedVars['from'] = { - text: options.range.from.valueOf(), - value: options.range.from.valueOf() - }; - scopedVars['to'] = { - text: options.range.to.valueOf(), - value: options.range.to.valueOf() - }; - } - interpolated = this.templateSrv.replace(query, scopedVars, sql_query_1.default.interpolateQueryExpr); - } - catch (err) { - return this.$q.reject(err); - } - return this._seriesQuery(interpolated) - .then(lodash_1.default.curry(this.responseParser.parse)(query)); - }; - ; - ClickHouseDatasource.prototype.testDatasource = function () { - return this.metricFindQuery('SELECT 1').then(function () { - return { status: "success", message: "Data source is working", title: "Success" }; - }); - }; - ; - ClickHouseDatasource.prototype._seriesQuery = function (query) { - query = query.replace(/(?:\r\n|\r|\n)/g, ' '); - query += ' FORMAT JSON'; - return this._request(query); - }; - ; - ClickHouseDatasource.prototype.targetContainsTemplate = function (target) { - return this.templateSrv.variableExists(target.expr); - }; - ; - ClickHouseDatasource.prototype.getTagKeys = function () { - return this.adhocCtrl.GetTagKeys(this); - }; - ClickHouseDatasource.prototype.getTagValues = function (options) { - return this.adhocCtrl.GetTagValues(options); - }; - return ClickHouseDatasource; - })(); - exports_1("ClickHouseDatasource", ClickHouseDatasource); - } - } -}); -//# sourceMappingURL=datasource.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js.map deleted file mode 100644 index 0788e1b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"datasource.js","sourceRoot":"","sources":["datasource.ts"],"names":["ClickHouseDatasource","ClickHouseDatasource.constructor","ClickHouseDatasource._request","ClickHouseDatasource.query","ClickHouseDatasource.metricFindQuery","ClickHouseDatasource.testDatasource","ClickHouseDatasource._seriesQuery","ClickHouseDatasource.targetContainsTemplate","ClickHouseDatasource.getTagKeys","ClickHouseDatasource.getTagValues"],"mappings":"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"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.ts deleted file mode 100644 index 9989b6f..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/datasource.ts +++ /dev/null @@ -1,182 +0,0 @@ -/// - -import _ from 'lodash'; - -import SqlSeries from './sql_series'; -import SqlQuery from './sql_query'; -import ResponseParser from './response_parser'; -import AdhocCtrl from './adhoc'; - -export class ClickHouseDatasource { - type: string; - name: string; - supportMetrics: boolean; - url: string; - directUrl: string; - basicAuth: any; - withCredentials: any; - usePOST: boolean; - addCorsHeader: boolean; - responseParser: any; - adhocCtrl: AdhocCtrl; - - /** @ngInject */ - constructor(instanceSettings, - private $q, - private backendSrv, - private templateSrv) { - this.type = 'clickhouse'; - this.name = instanceSettings.name; - this.supportMetrics = true; - this.responseParser = new ResponseParser(); - this.url = instanceSettings.url; - this.directUrl = instanceSettings.directUrl; - this.basicAuth = instanceSettings.basicAuth; - this.withCredentials = instanceSettings.withCredentials; - this.addCorsHeader = instanceSettings.jsonData.addCorsHeader; - this.usePOST = instanceSettings.jsonData.usePOST; - this.adhocCtrl = new AdhocCtrl(); - } - - _request(query) { - let options: any = { - url: this.url - }; - - if (this.usePOST) { - options.method = 'POST'; - options.data = query; - } else { - options.method = 'GET'; - options.url += '/?query=' + encodeURIComponent(query); - } - - if (this.basicAuth || this.withCredentials) { - options.withCredentials = true; - } - - options.headers = options.headers || {}; - if (this.basicAuth) { - options.headers.Authorization = this.basicAuth; - } - - if (this.addCorsHeader) { - if (this.usePOST) { - options.url += "?add_http_cors_header=1"; - } else { - options.url += "&add_http_cors_header=1"; - } - } - - return this.backendSrv.datasourceRequest(options).then(result => { - return result.data; - }); - }; - - query(options) { - var queries = [], q, - adhocFilters = this.templateSrv.getAdhocFilters(this.name); - - _.map(options.targets, (target) => { - if (!target.hide && target.query) { - var queryModel = new SqlQuery(target, this.templateSrv, options); - q = queryModel.replace(options, adhocFilters); - queries.push(q); - } - }); - - // No valid targets, return the empty result to save a round trip. - if (_.isEmpty(queries)) { - var d = this.$q.defer(); - d.resolve({data: []}); - return d.promise; - } - - var allQueryPromise = _.map(queries, query => { - return this._seriesQuery(query); - }); - - - return this.$q.all(allQueryPromise).then((responses): any => { - var result = [], i = 0; - _.each(responses, (response) => { - var target = options.targets[i]; - i++; - if (!response || !response.rows) { - return; - } - - var sqlSeries = new SqlSeries({ - series: response.data, - meta: response.meta, - tillNow: options.rangeRaw.to === 'now', - from: SqlQuery.convertTimestamp(options.range.from, target.dateTimeType), - to: SqlQuery.convertTimestamp(options.range.to, target.dateTimeType) - }); - if (target.format === 'table') { - _.each(sqlSeries.toTable(), (data) => { - result.push(data); - }); - } else { - _.each(sqlSeries.toTimeSeries(), (data) => { - result.push(data); - }); - } - }); - return {data: result}; - }); - }; - - metricFindQuery(query, options?: any) { - var interpolated; - try { - var scopedVars = {}; - - if (options && options.range) { - scopedVars['from'] = { - text: options.range.from.valueOf(), - value: options.range.from.valueOf() - } - - scopedVars['to'] = { - text: options.range.to.valueOf(), - value: options.range.to.valueOf() - } - } - - interpolated = this.templateSrv.replace(query, scopedVars, SqlQuery.interpolateQueryExpr); - } catch (err) { - return this.$q.reject(err); - } - - return this._seriesQuery(interpolated) - .then(_.curry(this.responseParser.parse)(query)); - }; - - testDatasource() { - return this.metricFindQuery('SELECT 1').then( - () => { - return {status: "success", message: "Data source is working", title: "Success"}; - }); - }; - - _seriesQuery(query) { - query = query.replace(/(?:\r\n|\r|\n)/g, ' '); - query += ' FORMAT JSON'; - return this._request(query); - }; - - - targetContainsTemplate(target) { - return this.templateSrv.variableExists(target.expr); - }; - - getTagKeys() { - return this.adhocCtrl.GetTagKeys(this); - - } - - getTagValues(options) { - return this.adhocCtrl.GetTagValues(options); - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/img/clickhouse_logo.svg b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/img/clickhouse_logo.svg deleted file mode 100644 index 3ab95fe..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/img/clickhouse_logo.svg +++ /dev/null @@ -1 +0,0 @@ -Clickhouse \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js deleted file mode 100644 index 4d0cc50..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js +++ /dev/null @@ -1,192 +0,0 @@ -"use strict"; - -System.register([], function (_export, _context) { - "use strict"; - - return { - setters: [], - execute: function () { - // jshint ignore: start - // jscs: disable - - ace.define("ace/mode/clickhouse_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var ClickhouseInfo = require("./clickhouse_info").ClickhouseInfo; - - var ClickHouseHighlightRules = function ClickHouseHighlightRules() { - var keywords = ClickhouseInfo.KeywordsRe(), - builtinConstants = ClickhouseInfo.ConstantsRe(), - builtinFunctions = ClickhouseInfo.FunctionsRe(), - dataTypes = ClickhouseInfo.DataTypesRe(); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants, - "storage.type": dataTypes - }, "identifier", true); - - this.$rules = { - "start": [{ - token: "comment", - regex: "--.*$" - }, { - token: "comment.block", - start: "```", - end: "```" - }, { - token: "string", // ' string - regex: "'.*?'" - }, { - token: "variable", - regex: "\\$\\w+" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\?|:" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "paren.lparen", - regex: "[\\(]" - }, { - token: "paren.rparen", - regex: "[\\)]" - }, { - token: "text", - regex: "\\s+" - }] - }; - this.normalizeRules(); - }; - - oop.inherits(ClickHouseHighlightRules, TextHighlightRules); - - exports.ClickHouseHighlightRules = ClickHouseHighlightRules; - }); - - ace.define("ace/mode/clickhouse_completions", ["require", "exports", "module", "ace/token_iterator", "ace/lib/lang"], function (require, exports, module) { - "use strict"; - - var lang = require("../lib/lang"), - ClickhouseInfo = require("./clickhouse_info").ClickhouseInfo; - - var keyWordsCompletions = ClickhouseInfo.Keywords.map(function (word) { - return { - caption: word, - value: word, - meta: "keyword", - score: Number.MAX_VALUE - }; - }); - - var constantCompletions = ClickhouseInfo.Constants.map(function (word) { - return { - caption: word, - value: word, - meta: "constant", - score: Number.MAX_VALUE - }; - }); - - var macrosCompletions = ClickhouseInfo.MacrosCompletions().map(function (item) { - return { - caption: item.name, - value: item.name, - docHTML: convertToHTML(item), - meta: "macros", - score: Number.MAX_VALUE - }; - }); - - var functionsCompletions = ClickhouseInfo.FunctionsCompletions().map(function (item) { - return { - caption: item.name, - value: item.name + "()", - docHTML: convertToHTML(item), - meta: "function", - score: Number.MAX_VALUE - }; - }); - - function wrapText(str, len) { - len = len || 90; - var lines = []; - var space_index = 0; - var line_start = 0; - var next_line_end = len; - var line = ""; - for (var i = 0; i < str.length; i++) { - if (str[i] === ' ') { - space_index = i; - } else if (i >= next_line_end && space_index !== 0) { - line = str.slice(line_start, space_index); - lines.push(line); - line_start = space_index + 1; - next_line_end = i + len; - space_index = 0; - } - } - line = str.slice(line_start); - lines.push(line); - return lines.join(" 
"); - } - - function convertMarkDownTags(text) { - text = text.replace(/```(.+)```/, "
$1
"); - text = text.replace(/`([^`]+)`/, "$1"); - return text; - } - - function convertToHTML(item) { - var docText = lang.escapeHTML(item.docText); - docText = convertMarkDownTags(wrapText(docText, 90)); - return ["", lang.escapeHTML(item.def), "", "
", docText, "
 "].join(""); - } - - var ClickhouseCompletions = function ClickhouseCompletions() {}; - - (function () { - this.getCompletions = function (state, session, pos, prefix, callback) { - var completions = keyWordsCompletions.concat(functionsCompletions).concat(constantCompletions); - completions = completions.concat(macrosCompletions); - callback(null, completions); - }; - }).call(ClickhouseCompletions.prototype); - - exports.ClickhouseCompletions = ClickhouseCompletions; - }); - - ace.define("ace/mode/clickhouse", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/clickhouse_highlight_rules"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var ClickHouseHighlightRules = require("./clickhouse_highlight_rules").ClickHouseHighlightRules; - var ClickhouseCompletions = require("./clickhouse_completions").ClickhouseCompletions; - - var Mode = function Mode() { - this.HighlightRules = ClickHouseHighlightRules; - this.$completer = new ClickhouseCompletions(); - // replace keyWordCompleter - this.completer = this.$completer; - }; - - oop.inherits(Mode, TextMode); - - (function () { - this.$id = "ace/mode/clickhouse"; - }).call(Mode.prototype); - - exports.Mode = Mode; - }); - } - }; -}); -//# sourceMappingURL=mode-clickhouse.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js.map deleted file mode 100644 index 0fe92a4..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/mode-clickhouse.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/mode-clickhouse.js"],"names":["ace","define","require","exports","module","oop","TextHighlightRules","ClickhouseInfo","ClickHouseHighlightRules","keywords","KeywordsRe","builtinConstants","ConstantsRe","builtinFunctions","FunctionsRe","dataTypes","DataTypesRe","keywordMapper","createKeywordMapper","$rules","token","regex","start","end","normalizeRules","inherits","lang","keyWordsCompletions","Keywords","map","word","caption","value","meta","score","Number","MAX_VALUE","constantCompletions","Constants","macrosCompletions","MacrosCompletions","item","name","docHTML","convertToHTML","functionsCompletions","FunctionsCompletions","wrapText","str","len","lines","space_index","line_start","next_line_end","line","i","length","slice","push","join","convertMarkDownTags","text","replace","docText","escapeHTML","def","ClickhouseCompletions","getCompletions","state","session","pos","prefix","callback","completions","concat","call","prototype","TextMode","Mode","HighlightRules","$completer","completer","$id"],"mappings":"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","file":"mode-clickhouse.js","sourcesContent":["// jshint ignore: start\r\n// jscs: disable\r\n\r\nace.define(\"ace/mode/clickhouse_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (require, exports, module) {\r\n \"use strict\";\r\n\r\n var oop = require(\"../lib/oop\");\r\n var TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\r\n var ClickhouseInfo = require(\"./clickhouse_info\").ClickhouseInfo;\r\n\r\n var ClickHouseHighlightRules = function () {\r\n var keywords = ClickhouseInfo.KeywordsRe(),\r\n builtinConstants = ClickhouseInfo.ConstantsRe(),\r\n builtinFunctions = ClickhouseInfo.FunctionsRe(),\r\n dataTypes = ClickhouseInfo.DataTypesRe();\r\n\r\n var keywordMapper = this.createKeywordMapper({\r\n \"support.function\": builtinFunctions,\r\n \"keyword\": keywords,\r\n \"constant.language\": builtinConstants,\r\n \"storage.type\": dataTypes\r\n }, \"identifier\", true);\r\n\r\n this.$rules = {\r\n \"start\": [{\r\n token: \"comment\",\r\n regex: \"--.*$\"\r\n }, {\r\n token: \"comment.block\",\r\n start: \"```\",\r\n end: \"```\"\r\n }, {\r\n token: \"string\", // ' string\r\n regex: \"'.*?'\"\r\n }, {\r\n token: \"variable\",\r\n regex: \"\\\\$\\\\w+\"\r\n }, {\r\n token: \"keyword.operator\",\r\n regex: \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=|\\\\?|:\"\r\n }, {\r\n token: \"constant.numeric\", // float\r\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\r\n }, {\r\n token: keywordMapper,\r\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\r\n }, {\r\n token: \"paren.lparen\",\r\n regex: \"[\\\\(]\"\r\n }, {\r\n token: \"paren.rparen\",\r\n regex: \"[\\\\)]\"\r\n }, {\r\n token: \"text\",\r\n regex: \"\\\\s+\"\r\n }]\r\n };\r\n this.normalizeRules();\r\n };\r\n\r\n oop.inherits(ClickHouseHighlightRules, TextHighlightRules);\r\n\r\n exports.ClickHouseHighlightRules = ClickHouseHighlightRules;\r\n});\r\n\r\nace.define(\"ace/mode/clickhouse_completions\", [\"require\", \"exports\", \"module\", \"ace/token_iterator\", \"ace/lib/lang\"], function (require, exports, module) {\r\n \"use strict\";\r\n\r\n var lang = require(\"../lib/lang\"),\r\n ClickhouseInfo = require(\"./clickhouse_info\").ClickhouseInfo;\r\n\r\n var keyWordsCompletions = ClickhouseInfo.Keywords.map(function (word) {\r\n return {\r\n caption: word,\r\n value: word,\r\n meta: \"keyword\",\r\n score: Number.MAX_VALUE\r\n }\r\n });\r\n\r\n var constantCompletions = ClickhouseInfo.Constants.map(function (word) {\r\n return {\r\n caption: word,\r\n value: word,\r\n meta: \"constant\",\r\n score: Number.MAX_VALUE\r\n };\r\n });\r\n\r\n var macrosCompletions = ClickhouseInfo.MacrosCompletions().map(function (item) {\r\n return {\r\n caption: item.name,\r\n value: item.name,\r\n docHTML: convertToHTML(item),\r\n meta: \"macros\",\r\n score: Number.MAX_VALUE\r\n };\r\n });\r\n\r\n\r\n var functionsCompletions = ClickhouseInfo.FunctionsCompletions().map(function (item) {\r\n return {\r\n caption: item.name,\r\n value: item.name+\"()\",\r\n docHTML: convertToHTML(item),\r\n meta: \"function\",\r\n score: Number.MAX_VALUE\r\n };\r\n });\r\n\r\n function wrapText(str, len) {\r\n len = len || 90;\r\n var lines = [];\r\n var space_index = 0;\r\n var line_start = 0;\r\n var next_line_end = len;\r\n var line = \"\";\r\n for (var i = 0; i < str.length; i++) {\r\n if (str[i] === ' ') {\r\n space_index = i;\r\n } else if (i >= next_line_end && space_index !== 0) {\r\n line = str.slice(line_start, space_index);\r\n lines.push(line);\r\n line_start = space_index + 1;\r\n next_line_end = i + len;\r\n space_index = 0;\r\n }\r\n }\r\n line = str.slice(line_start);\r\n lines.push(line);\r\n return lines.join(\" 
\");\r\n }\r\n\r\n function convertMarkDownTags(text) {\r\n text = text.replace(/```(.+)```/, \"
$1
\");\r\n text = text.replace(/`([^`]+)`/, \"$1\");\r\n return text;\r\n }\r\n\r\n function convertToHTML(item) {\r\n var docText = lang.escapeHTML(item.docText);\r\n docText = convertMarkDownTags(wrapText(docText, 90));\r\n return [\r\n \"\", lang.escapeHTML(item.def), \"\", \"
\", docText, \"
 \"\r\n ].join(\"\");\r\n }\r\n\r\n var ClickhouseCompletions = function () {\r\n };\r\n\r\n (function () {\r\n this.getCompletions = function (state, session, pos, prefix, callback) {\r\n var completions = keyWordsCompletions.concat(functionsCompletions).concat(constantCompletions);\r\n completions = completions.concat(macrosCompletions);\r\n callback(null, completions);\r\n };\r\n\r\n }).call(ClickhouseCompletions.prototype);\r\n\r\n exports.ClickhouseCompletions = ClickhouseCompletions;\r\n});\r\n\r\n\r\nace.define(\"ace/mode/clickhouse\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/clickhouse_highlight_rules\"], function (require, exports, module) {\r\n \"use strict\";\r\n\r\n var oop = require(\"../lib/oop\");\r\n var TextMode = require(\"./text\").Mode;\r\n var ClickHouseHighlightRules = require(\"./clickhouse_highlight_rules\").ClickHouseHighlightRules;\r\n var ClickhouseCompletions = require(\"./clickhouse_completions\").ClickhouseCompletions;\r\n\r\n\r\n var Mode = function () {\r\n this.HighlightRules = ClickHouseHighlightRules;\r\n this.$completer = new ClickhouseCompletions();\r\n // replace keyWordCompleter\r\n this.completer = this.$completer;\r\n };\r\n\r\n oop.inherits(Mode, TextMode);\r\n\r\n (function () {\r\n this.$id = \"ace/mode/clickhouse\";\r\n }).call(Mode.prototype);\r\n\r\n exports.Mode = Mode;\r\n});\r\n\r\n"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.d.ts deleted file mode 100644 index a51a6c1..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ClickHouseDatasource } from './datasource'; -import { SqlQueryCtrl } from './query_ctrl'; -declare class SqlConfigCtrl { - static templateUrl: string; -} -export { ClickHouseDatasource as Datasource, SqlQueryCtrl as QueryCtrl, SqlConfigCtrl as ConfigCtrl }; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js deleted file mode 100644 index 81ace39..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js +++ /dev/null @@ -1,25 +0,0 @@ -System.register(['./datasource', './query_ctrl'], function(exports_1) { - var datasource_1, query_ctrl_1; - var SqlConfigCtrl; - return { - setters:[ - function (datasource_1_1) { - datasource_1 = datasource_1_1; - }, - function (query_ctrl_1_1) { - query_ctrl_1 = query_ctrl_1_1; - }], - execute: function() { - SqlConfigCtrl = (function () { - function SqlConfigCtrl() { - } - SqlConfigCtrl.templateUrl = 'partials/config.html'; - return SqlConfigCtrl; - })(); - exports_1("Datasource", datasource_1.ClickHouseDatasource); - exports_1("QueryCtrl", query_ctrl_1.SqlQueryCtrl); - exports_1("ConfigCtrl", SqlConfigCtrl); - } - } -}); -//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js.map deleted file mode 100644 index 7f28d2a..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"module.js","sourceRoot":"","sources":["module.ts"],"names":["SqlConfigCtrl","SqlConfigCtrl.constructor"],"mappings":";;;;;;;;;;;;YAGA;gBAAAA;gBAEAC,CAACA;gBADQD,yBAAWA,GAAGA,sBAAsBA,CAACA;gBAC9CA,oBAACA;YAADA,CAACA,AAFD,IAEC;YAGyB,0DAAU;YAClB,iDAAS;YACR,sCAAU"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.ts deleted file mode 100644 index 17708c1..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {ClickHouseDatasource} from './datasource'; -import {SqlQueryCtrl} from './query_ctrl'; - -class SqlConfigCtrl { - static templateUrl = 'partials/config.html'; -} - -export { - ClickHouseDatasource as Datasource, - SqlQueryCtrl as QueryCtrl, - SqlConfigCtrl as ConfigCtrl, -}; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/config.html b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/config.html deleted file mode 100644 index 47d03ab..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/config.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -

Additional

- -
- - - -
- -
- - -
diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/query.editor.html b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/query.editor.html deleted file mode 100644 index b66c237..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/partials/query.editor.html +++ /dev/null @@ -1,209 +0,0 @@ - - -
- - -
- -
-
-
- - - - -
- -
-
-
-
- -
-
- -
- -
- -
- -
- - - - Select - DateTime - or UInt32 column for binding with Grafana's range selector - -
- -
- - -
- -
-
-
-
- -
- -
- -
- -
-
- - - - Leave blank for auto handling based on time range and panel width - -
-
- -
- -
-
- -
- - - - Set rounding for `$from` and `$to` timestamps.
- For example, if set `1m` - both `$from` and `$to` will be rounded to beginning of minute.
- It will make all requests similar during one minute which is good for caching. -
-
- -
-
-
-
- -
-
- -
- -
-
- -
- -
- -
- -
- -
- -
-
- -
-
-
{{ctrl.target.rawQuery}}
-
- -
-
-Macros
-
-$table - replaced with selected table name from Query Builder
-$timeCol - replaced with Date:Col value from Query Builder
-$dateTimeCol - replaced with Column:DateTime or Column:TimeStamp value from Query Builder
-$from - replaced with timestamp/1000 value of selected "Time Range:From"
-$to - replaced with timestamp/1000 value of selected "Time Range:To"
-$interval - replaced with selected "Group by time interval" value (as a number of seconds)
-$timeFilter - replaced with currently selected "Time Range".
-            Require Column:Date and Column:DateTime or Column:TimeStamp to be selected
-$timeSeries - replaced with special ClickHouse construction to convert results as time-series data.
-            Use it as "SELECT $timeSeries...". Require Column:DateTime or Column:TimeStamp to be selected
-$unescape - unescapes variable value by removing single quotes.
-            Used for multiple-value string variables: "SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5"
-A description of macros is available by typing their names in Raw Editor
-
-
-Functions (Only one function per query allowed)
-
-$rate(cols...) - function to convert query results as "change rate per interval".
-Example usage: $rate(countIf(Type = 200) * 60 AS good, countIf(Type != 200) * 60 AS bad) FROM requests
-
-$columns(key, value) - function to query values as array of [key, value], where key would be used as label.
-Example usage: $columns(Type, count() c) FROM requests
-
-$rateColumns(key, value) - is an combination of $columns and $rate.
-Example usage: $rateColumns(Type, count() c) FROM requests
-		
-
-
- -
diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/plugin.json b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/plugin.json deleted file mode 100644 index 8d6ce7b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/plugin.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "id": "vertamedia-clickhouse-datasource", - "type": "datasource", - "name": "ClickHouse", - - "metrics": true, - "annotations": false, - "alerting": false, - - "info": { - "description": "ClickHouse datasource for Grafana", - "author": { - "name": "Vertamedia", - "url": "https://vertamedia.com/" - }, - "keywords": ["clickhouse"], - "logos": { - "small": "img/clickhouse_logo.svg", - "large": "img/clickhouse_logo.svg" - }, - "links": [ - { - "name": "GitHub", - "url": "https://github.com/Vertamedia/clickhouse-grafana" - } - ], - "version": "1.4.2" - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.d.ts deleted file mode 100644 index 029b6a7..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -/// -import SqlQuery from './sql_query'; -import { QueryCtrl } from 'app/plugins/sdk'; -declare class SqlQueryCtrl extends QueryCtrl { - private uiSegmentSrv; - static templateUrl: string; - queryModel: SqlQuery; - databaseSegment: any; - dateTimeType: any; - dateColDataTypeSegment: any; - dateTimeColDataTypeSegment: any; - tableSegment: any; - formats: any[]; - panel: any; - datasource: any; - target: any; - resolutions: any; - scanner: any; - editMode: boolean; - textareaHeight: any; - dateTimeTypeOptions: any; - completerCache: any[]; - tableLoading: boolean; - datetimeLoading: boolean; - dateLoading: boolean; - showLastQuerySQL: boolean; - showHelp: boolean; - /** @ngInject **/ - constructor($scope: any, $injector: any, templateSrv: any, uiSegmentSrv: any); - getCollapsedText(): any; - fakeSegment(value: any): any; - getDateColDataTypeSegments(): any; - dateColDataTypeChanged(): void; - dateTimeTypeChanged(): void; - getDateTimeColDataTypeSegments(): any; - dateTimeColDataTypeChanged(): void; - toggleEditorMode(): void; - toggleEdit(e: any, editMode: boolean): void; - getCompleter(): SqlQueryCtrl; - getCompletions(editor: any, session: any, pos: any, prefix: any, callback: any): void; - static _convertToHTML(item: any): string; - getDatabaseSegments(): any; - databaseChanged(): void; - getTableSegments(): any; - tableChanged(): void; - formatQuery(): void; - toQueryMode(): void; - format(): any; - getScanner(): any; - handleQueryError(err: any): any[]; - queryColumns(): any; - querySegment(type: string): any; - applySegment(dst: any, src: any): void; - buildExploreQuery(type: any): any; -} -export { SqlQueryCtrl }; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js deleted file mode 100644 index 86defc9..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js +++ /dev/null @@ -1,305 +0,0 @@ -/// -System.register(['jquery', 'lodash', './clickhouse-info', './mode-clickhouse', './snippets/clickhouse', './sql_query', 'app/plugins/sdk', './scanner'], function(exports_1) { - var __extends = (this && this.__extends) || function (d, b) { - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - var jquery_1, lodash_1, sql_query_1, sdk_1, scanner_1; - var defaultQuery, SqlQueryCtrl; - return { - setters:[ - function (jquery_1_1) { - jquery_1 = jquery_1_1; - }, - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }, - function (_1) {}, - function (_2) {}, - function (_3) {}, - function (sql_query_1_1) { - sql_query_1 = sql_query_1_1; - }, - function (sdk_1_1) { - sdk_1 = sdk_1_1; - }, - function (scanner_1_1) { - scanner_1 = scanner_1_1; - }], - execute: function() { - defaultQuery = "SELECT $timeSeries as t, count() FROM $table WHERE $timeFilter GROUP BY t ORDER BY t"; - SqlQueryCtrl = (function (_super) { - __extends(SqlQueryCtrl, _super); - /** @ngInject **/ - function SqlQueryCtrl($scope, $injector, templateSrv, uiSegmentSrv) { - _super.call(this, $scope, $injector); - this.uiSegmentSrv = uiSegmentSrv; - this.queryModel = new sql_query_1.default(this.target, templateSrv, this.panel.scopedVars); - this.databaseSegment = uiSegmentSrv.newSegment(this.target.database || { fake: true, value: '-- database --' }); - this.tableSegment = uiSegmentSrv.newSegment(this.target.table || { fake: true, value: '-- table --' }); - this.dateColDataTypeSegment = uiSegmentSrv.newSegment(this.target.dateColDataType || { fake: true, value: '-- date : col --' }); - this.dateTimeColDataTypeSegment = uiSegmentSrv.newSegment(this.target.dateTimeColDataType || { fake: true, value: '-- dateTime : col --' }); - this.resolutions = lodash_1.default.map([1, 2, 3, 4, 5, 10], function (f) { - return { factor: f, label: '1/' + f }; - }); - this.completerCache = []; - this.dateTimeTypeOptions = [ - { text: 'Column:DateTime', value: 'DATETIME' }, - { text: 'Column:TimeStamp', value: 'TIMESTAMP' }, - { text: 'Column:TimeStampMs', value: 'TIMESTAMPMS' }, - ]; - this.formats = [ - { text: 'Time series', value: 'time_series' }, - { text: 'Table', value: 'table' }, - ]; - this.target.format = this.target.format || 'time_series'; - this.target.dateTimeType = this.target.dateTimeType || this.dateTimeTypeOptions[0].value; - this.target.round = this.target.round || "0s"; - this.target.intervalFactor = this.target.intervalFactor || 1; - this.target.query = this.target.query || defaultQuery; - this.target.formattedQuery = this.target.formattedQuery || this.target.query; - this.scanner = new scanner_1.default(this.target.query); - if (this.target.query === defaultQuery) { - this.target.query = this.format(); - } - } - SqlQueryCtrl.prototype.getCollapsedText = function () { - return this.target.query; - }; - SqlQueryCtrl.prototype.fakeSegment = function (value) { - return this.uiSegmentSrv.newSegment({ fake: true, value: value }); - }; - SqlQueryCtrl.prototype.getDateColDataTypeSegments = function () { - var target = this.target; - target.dateLoading = true; - return this.querySegment('DATE').then(function (response) { - target.dateLoading = false; - return response; - }); - }; - SqlQueryCtrl.prototype.dateColDataTypeChanged = function () { - this.target.dateColDataType = this.dateColDataTypeSegment.value; - }; - SqlQueryCtrl.prototype.dateTimeTypeChanged = function () { - var self = this; - this.getDateTimeColDataTypeSegments().then(function (segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateTimeColDataTypeSegment, segments[0]); - self.dateTimeColDataTypeChanged(); - }); - }; - SqlQueryCtrl.prototype.getDateTimeColDataTypeSegments = function () { - var target = this.target; - target.datetimeLoading = true; - return this.querySegment(target.dateTimeType).then(function (response) { - target.datetimeLoading = false; - return response; - }); - }; - SqlQueryCtrl.prototype.dateTimeColDataTypeChanged = function () { - this.target.dateTimeColDataType = this.dateTimeColDataTypeSegment.value; - }; - SqlQueryCtrl.prototype.toggleEditorMode = function () { - this.target.rawQuery = !this.target.rawQuery; - }; - SqlQueryCtrl.prototype.toggleEdit = function (e, editMode) { - if (editMode) { - this.editMode = true; - this.textareaHeight = "height: " + jquery_1.default(e.currentTarget).outerHeight() + "px;"; - return; - } - if (this.editMode === true) { - this.editMode = false; - this.refresh(); - } - }; - SqlQueryCtrl.prototype.getCompleter = function () { - return this; - }; - SqlQueryCtrl.prototype.getCompletions = function (editor, session, pos, prefix, callback) { - if (this.target.database === undefined || this.target.table === undefined) { - callback(null, []); - return; - } - var self = this; - var key = self.target.database + '.' + self.target.table; - if (self.completerCache[key]) { - callback(null, self.completerCache[key]); - return; - } - self.queryColumns().then(function (response) { - self.completerCache[key] = response.map(function (item) { - return { - caption: item.text, - value: item.text, - meta: key, - docHTML: SqlQueryCtrl._convertToHTML(item), - }; - }); - callback(null, self.completerCache[key]); - }); - }; - SqlQueryCtrl._convertToHTML = function (item) { - var desc = item.value, space_index = 0, start = 0, line = "", next_line_end = 60, lines = []; - for (var i = 0; i < desc.length; i++) { - if (desc[i] === ' ') { - space_index = i; - } - else if (i >= next_line_end && space_index !== 0) { - line = desc.slice(start, space_index); - lines.push(line); - start = space_index + 1; - next_line_end = i + 60; - space_index = 0; - } - } - line = desc.slice(start); - lines.push(line); - return ["", item.text, "", "
", lines.join(" 
")].join(""); - }; - SqlQueryCtrl.prototype.getDatabaseSegments = function () { - return this.querySegment('DATABASES'); - }; - SqlQueryCtrl.prototype.databaseChanged = function () { - this.target.database = this.databaseSegment.value; - this.applySegment(this.tableSegment, this.fakeSegment('-- table : col --')); - this.applySegment(this.dateColDataTypeSegment, this.fakeSegment('-- date : col --')); - this.applySegment(this.dateTimeColDataTypeSegment, this.fakeSegment('-- dateTime : col --')); - }; - SqlQueryCtrl.prototype.getTableSegments = function () { - var target = this.target; - target.tableLoading = true; - return this.querySegment('TABLES').then(function (response) { - target.tableLoading = false; - return response; - }); - }; - SqlQueryCtrl.prototype.tableChanged = function () { - this.target.table = this.tableSegment.value; - this.applySegment(this.dateColDataTypeSegment, this.fakeSegment('-- date : col --')); - this.applySegment(this.dateTimeColDataTypeSegment, this.fakeSegment('-- dateTime : col --')); - var self = this; - this.getDateColDataTypeSegments().then(function (segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateColDataTypeSegment, segments[0]); - self.dateColDataTypeChanged(); - }); - this.getDateTimeColDataTypeSegments().then(function (segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateTimeColDataTypeSegment, segments[0]); - self.dateTimeColDataTypeChanged(); - }); - }; - SqlQueryCtrl.prototype.formatQuery = function () { - this.target.query = this.format(); - this.toggleEdit({}, false); - }; - SqlQueryCtrl.prototype.toQueryMode = function () { - this.toggleEditorMode(); - this.refresh(); - }; - SqlQueryCtrl.prototype.format = function () { - try { - return this.getScanner().Format(); - } - catch (err) { - console.log("Parse error: ", err); - return this.getScanner().raw(); - } - }; - SqlQueryCtrl.prototype.getScanner = function () { - if (this.scanner.raw() !== this.target.query) { - this.scanner = new scanner_1.default(this.target.query); - } - return this.scanner; - }; - SqlQueryCtrl.prototype.handleQueryError = function (err) { - this.error = err.message || 'Failed to issue metric query'; - return []; - }; - SqlQueryCtrl.prototype.queryColumns = function () { - var query = this.buildExploreQuery('COLUMNS'); - return this.datasource.metricFindQuery(query); - }; - SqlQueryCtrl.prototype.querySegment = function (type) { - var query = this.buildExploreQuery(type); - return this.datasource.metricFindQuery(query) - .then(this.uiSegmentSrv.transformToSegments(false)) - .catch(this.handleQueryError.bind(this)); - }; - SqlQueryCtrl.prototype.applySegment = function (dst, src) { - dst.value = src.value; - dst.html = src.html || src.value; - dst.fake = src.fake === undefined ? false : src.fake; - }; - SqlQueryCtrl.prototype.buildExploreQuery = function (type) { - var query; - switch (type) { - case 'TABLES': - query = 'SELECT name ' + - 'FROM system.tables ' + - 'WHERE database = \'' + this.target.database + '\' ' + - 'ORDER BY name'; - break; - case 'DATE': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'Date\' ' + - 'ORDER BY name'; - break; - case 'DATETIME': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type LIKE \'DateTime%\' ' + - 'ORDER BY name'; - break; - case 'TIMESTAMP': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'UInt32\' ' + - 'ORDER BY name'; - break; - case 'TIMESTAMPMS': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'UInt64\' ' + - 'ORDER BY name'; - break; - case 'DATABASES': - query = 'SELECT name ' + - 'FROM system.databases ' + - 'ORDER BY name'; - break; - case 'COLUMNS': - query = 'SELECT name text, type value ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\''; - break; - } - return query; - }; - ; - SqlQueryCtrl.templateUrl = 'partials/query.editor.html'; - return SqlQueryCtrl; - })(sdk_1.QueryCtrl); - exports_1("SqlQueryCtrl", SqlQueryCtrl); - } - } -}); -//# sourceMappingURL=query_ctrl.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js.map deleted file mode 100644 index 07fa260..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"query_ctrl.js","sourceRoot":"","sources":["query_ctrl.ts"],"names":["SqlQueryCtrl","SqlQueryCtrl.constructor","SqlQueryCtrl.getCollapsedText","SqlQueryCtrl.fakeSegment","SqlQueryCtrl.getDateColDataTypeSegments","SqlQueryCtrl.dateColDataTypeChanged","SqlQueryCtrl.dateTimeTypeChanged","SqlQueryCtrl.getDateTimeColDataTypeSegments","SqlQueryCtrl.dateTimeColDataTypeChanged","SqlQueryCtrl.toggleEditorMode","SqlQueryCtrl.toggleEdit","SqlQueryCtrl.getCompleter","SqlQueryCtrl.getCompletions","SqlQueryCtrl._convertToHTML","SqlQueryCtrl.getDatabaseSegments","SqlQueryCtrl.databaseChanged","SqlQueryCtrl.getTableSegments","SqlQueryCtrl.tableChanged","SqlQueryCtrl.formatQuery","SqlQueryCtrl.toQueryMode","SqlQueryCtrl.format","SqlQueryCtrl.getScanner","SqlQueryCtrl.handleQueryError","SqlQueryCtrl.queryColumns","SqlQueryCtrl.querySegment","SqlQueryCtrl.applySegment","SqlQueryCtrl.buildExploreQuery"],"mappings":"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"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.ts deleted file mode 100644 index 9ebf95e..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/query_ctrl.ts +++ /dev/null @@ -1,357 +0,0 @@ -/// - -import $ from 'jquery'; -import _ from 'lodash'; -import './clickhouse-info'; -import './mode-clickhouse'; -import './snippets/clickhouse'; -import SqlQuery from './sql_query'; -import {QueryCtrl} from 'app/plugins/sdk'; -import Scanner from './scanner'; - -const defaultQuery = "SELECT $timeSeries as t, count() FROM $table WHERE $timeFilter GROUP BY t ORDER BY t"; - -class SqlQueryCtrl extends QueryCtrl { - static templateUrl = 'partials/query.editor.html'; - - queryModel: SqlQuery; - databaseSegment: any; - - dateTimeType: any; - dateColDataTypeSegment: any; - dateTimeColDataTypeSegment: any; - tableSegment: any; - formats: any[]; - - panel: any; - datasource: any; - target: any; - resolutions: any; - scanner: any; - editMode: boolean; - textareaHeight: any; - dateTimeTypeOptions: any; - - completerCache: any[]; - - tableLoading: boolean; - datetimeLoading: boolean; - dateLoading: boolean; - - showLastQuerySQL: boolean; - showHelp: boolean; - - /** @ngInject **/ - constructor($scope, $injector, templateSrv, private uiSegmentSrv) { - super($scope, $injector); - - this.queryModel = new SqlQuery(this.target, templateSrv, this.panel.scopedVars); - - this.databaseSegment = uiSegmentSrv.newSegment( - this.target.database || {fake: true, value: '-- database --'} - ); - - this.tableSegment = uiSegmentSrv.newSegment( - this.target.table || {fake: true, value: '-- table --'} - ); - - this.dateColDataTypeSegment = uiSegmentSrv.newSegment( - this.target.dateColDataType || {fake: true, value: '-- date : col --'} - ); - - this.dateTimeColDataTypeSegment = uiSegmentSrv.newSegment( - this.target.dateTimeColDataType || {fake: true, value: '-- dateTime : col --'} - ); - - this.resolutions = _.map([1,2,3,4,5,10], function(f) { - return {factor: f, label: '1/' + f}; - }); - - this.completerCache = []; - - this.dateTimeTypeOptions = [ - {text: 'Column:DateTime', value: 'DATETIME'}, - {text: 'Column:TimeStamp', value: 'TIMESTAMP'}, - {text: 'Column:TimeStampMs', value: 'TIMESTAMPMS'}, - ]; - - this.formats = [ - {text: 'Time series', value: 'time_series'}, - {text: 'Table', value: 'table'}, - ]; - - this.target.format = this.target.format || 'time_series'; - this.target.dateTimeType = this.target.dateTimeType || this.dateTimeTypeOptions[0].value; - this.target.round = this.target.round || "0s"; - this.target.intervalFactor = this.target.intervalFactor || 1; - this.target.query = this.target.query || defaultQuery; - this.target.formattedQuery = this.target.formattedQuery || this.target.query; - this.scanner = new Scanner(this.target.query); - if (this.target.query === defaultQuery) { - this.target.query = this.format(); - } - } - - getCollapsedText() { - return this.target.query; - } - - fakeSegment(value) { - return this.uiSegmentSrv.newSegment({fake: true, value: value}); - } - - getDateColDataTypeSegments() { - var target = this.target; - target.dateLoading = true; - return this.querySegment('DATE').then(function(response){ - target.dateLoading = false; - return response; - }); - } - - dateColDataTypeChanged() { - this.target.dateColDataType = this.dateColDataTypeSegment.value; - } - - dateTimeTypeChanged() { - var self = this; - this.getDateTimeColDataTypeSegments().then(function(segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateTimeColDataTypeSegment, segments[0]); - self.dateTimeColDataTypeChanged(); - }); - } - - getDateTimeColDataTypeSegments() { - var target = this.target; - target.datetimeLoading = true; - return this.querySegment(target.dateTimeType).then(function(response){ - target.datetimeLoading = false; - return response; - }); - } - - dateTimeColDataTypeChanged() { - this.target.dateTimeColDataType = this.dateTimeColDataTypeSegment.value; - } - - toggleEditorMode() { - this.target.rawQuery = !this.target.rawQuery; - } - - toggleEdit(e: any, editMode: boolean) { - if (editMode) { - this.editMode = true; - this.textareaHeight = "height: " + $(e.currentTarget).outerHeight() + "px;"; - return; - } - - if ( this.editMode === true ) { - this.editMode = false; - this.refresh(); - } - } - - getCompleter() { - return this; - } - - getCompletions(editor, session, pos, prefix, callback) { - if (this.target.database === undefined || this.target.table === undefined) { - callback(null, []); - return; - } - - let self = this; - let key = self.target.database + '.' + self.target.table; - if (self.completerCache[key]) { - callback(null, self.completerCache[key]); - return; - } - - self.queryColumns().then(function(response){ - self.completerCache[key] = response.map(function (item) { - return { - caption: item.text, - value: item.text, - meta: key, - docHTML: SqlQueryCtrl._convertToHTML(item), - }; - }); - callback(null, self.completerCache[key]); - }); - } - - static _convertToHTML(item: any) { - var desc = item.value, - space_index = 0, - start = 0, - line = "", - next_line_end = 60, - lines = []; - for (var i = 0; i < desc.length; i++) { - if (desc[i] === ' ') { - space_index = i; - } else if (i >= next_line_end && space_index !== 0) { - line = desc.slice(start, space_index); - lines.push(line); - start = space_index + 1; - next_line_end = i + 60; - space_index = 0; - } - } - line = desc.slice(start); - lines.push(line); - return ["", item.text, "", "
", lines.join(" 
")].join(""); - } - - getDatabaseSegments() { - return this.querySegment('DATABASES'); - } - - databaseChanged() { - this.target.database = this.databaseSegment.value; - this.applySegment(this.tableSegment, this.fakeSegment('-- table : col --')); - this.applySegment(this.dateColDataTypeSegment, this.fakeSegment('-- date : col --')); - this.applySegment(this.dateTimeColDataTypeSegment, this.fakeSegment('-- dateTime : col --')); - } - - getTableSegments() { - var target = this.target; - target.tableLoading = true; - return this.querySegment('TABLES').then(function(response){ - target.tableLoading = false; - return response; - }); - } - - tableChanged() { - this.target.table = this.tableSegment.value; - this.applySegment(this.dateColDataTypeSegment, this.fakeSegment('-- date : col --')); - this.applySegment(this.dateTimeColDataTypeSegment, this.fakeSegment('-- dateTime : col --')); - - var self = this; - this.getDateColDataTypeSegments().then(function(segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateColDataTypeSegment, segments[0]); - self.dateColDataTypeChanged(); - }); - this.getDateTimeColDataTypeSegments().then(function(segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateTimeColDataTypeSegment, segments[0]); - self.dateTimeColDataTypeChanged(); - }); - } - - formatQuery() { - this.target.query = this.format(); - this.toggleEdit({}, false); - } - - toQueryMode() { - this.toggleEditorMode(); - this.refresh(); - } - - format() { - try { - return this.getScanner().Format(); - } catch (err) { - console.log("Parse error: ", err); - return this.getScanner().raw(); - } - } - - getScanner() { - if (this.scanner.raw() !== this.target.query) { - this.scanner = new Scanner(this.target.query); - } - return this.scanner; - } - - handleQueryError(err) { - this.error = err.message || 'Failed to issue metric query'; - return []; - } - - queryColumns() { - var query = this.buildExploreQuery('COLUMNS'); - return this.datasource.metricFindQuery(query) - } - - querySegment(type: string) { - var query = this.buildExploreQuery(type); - return this.datasource.metricFindQuery(query) - .then(this.uiSegmentSrv.transformToSegments(false)) - .catch(this.handleQueryError.bind(this)); - } - - applySegment(dst, src) { - dst.value = src.value; - dst.html = src.html || src.value; - dst.fake = src.fake === undefined ? false : src.fake; - } - - buildExploreQuery(type) { - var query; - switch (type){ - case 'TABLES': - query = 'SELECT name ' + - 'FROM system.tables ' + - 'WHERE database = \'' + this.target.database + '\' ' + - 'ORDER BY name'; - break; - case 'DATE': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'Date\' ' + - 'ORDER BY name'; - break; - case 'DATETIME': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type LIKE \'DateTime%\' ' + - 'ORDER BY name'; - break; - case 'TIMESTAMP': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'UInt32\' ' + - 'ORDER BY name'; - break; - case 'TIMESTAMPMS': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'UInt64\' ' + - 'ORDER BY name'; - break; - case 'DATABASES': - query = 'SELECT name ' + - 'FROM system.databases ' + - 'ORDER BY name'; - break; - case 'COLUMNS': - query = 'SELECT name text, type value ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\''; - break; - } - return query; - }; -} -export {SqlQueryCtrl}; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.d.ts deleted file mode 100644 index 8871d08..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -export default class ResponseParser { - parse(query: any, results: any): any[]; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js deleted file mode 100644 index 5003ff0..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js +++ /dev/null @@ -1,40 +0,0 @@ -System.register(['lodash'], function(exports_1) { - var lodash_1; - var ResponseParser; - return { - setters:[ - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }], - execute: function() { - ResponseParser = (function () { - function ResponseParser() { - } - ResponseParser.prototype.parse = function (query, results) { - if (!results || results.data.length === 0) { - return []; - } - var sqlResults = results.data; - var res = []; - lodash_1.default.each(sqlResults, function (r) { - if (!lodash_1.default.isObject(r)) { - res.push({ text: r }); - return; - } - var keys = Object.keys(r); - if (keys.length > 1) { - res.push(r); - } - else { - res.push({ text: r[keys[0]] }); - } - }); - return res; - }; - return ResponseParser; - })(); - exports_1("default", ResponseParser); - } - } -}); -//# sourceMappingURL=response_parser.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js.map deleted file mode 100644 index 09e5cd3..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"response_parser.js","sourceRoot":"","sources":["response_parser.ts"],"names":["ResponseParser","ResponseParser.constructor","ResponseParser.parse"],"mappings":";;;;;;;;;YAGA;gBAAAA;gBAqBAC,CAACA;gBApBCD,8BAAKA,GAALA,UAAMA,KAAKA,EAAEA,OAAOA;oBAClBE,EAAEA,CAACA,CAACA,CAACA,OAAOA,IAAIA,OAAOA,CAACA,IAAIA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBAACA,MAAMA,CAACA,EAAEA,CAACA;oBAACA,CAACA;oBAEzDA,IAAIA,UAAUA,GAAGA,OAAOA,CAACA,IAAIA,CAACA;oBAC9BA,IAAIA,GAAGA,GAAGA,EAAEA,CAACA;oBACbA,gBAACA,CAACA,IAAIA,CAACA,UAAUA,EAAEA,UAAAA,CAACA;wBAChBA,EAAEA,CAACA,CAACA,CAACA,gBAACA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA;4BACjBA,GAAGA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,EAAEA,CAACA,CAACA;4BACtBA,MAAMA,CAAAA;wBACVA,CAACA;wBACDA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;wBAC1BA,EAAEA,CAACA,CAACA,IAAIA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;4BAClBA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;wBAChBA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,GAAGA,CAACA,IAAIA,CAACA,EAAEA,IAAIA,EAAEA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA,EAACA,CAACA,CAACA;wBAClCA,CAACA;oBACLA,CAACA,CAACA,CAACA;oBAEHA,MAAMA,CAACA,GAAGA,CAAAA;gBACZA,CAACA;gBACHF,qBAACA;YAADA,CAACA,AArBD,IAqBC;YArBD,oCAqBC,CAAA"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.ts deleted file mode 100644 index 5137d2f..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/response_parser.ts +++ /dev/null @@ -1,25 +0,0 @@ -/// -import _ from 'lodash'; - -export default class ResponseParser { - parse(query, results) { - if (!results || results.data.length === 0) { return []; } - - var sqlResults = results.data; - var res = []; - _.each(sqlResults, r => { - if (!_.isObject(r)) { - res.push({ text: r }); - return - } - let keys = Object.keys(r); - if (keys.length > 1) { - res.push(r); - } else { - res.push({ text: r[keys[0]]}); - } - }); - - return res - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.d.ts deleted file mode 100644 index 6df9029..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -export default class Scanner { - tree: any; - rootToken: any; - token: any; - skipSpace: boolean; - re: any; - expectedNext: boolean; - _sOriginal: any; - _s: any; - /** @ngInject */ - constructor(s: any); - raw(): any; - expect(token: any): void; - isToken(token: any): boolean; - expectNext(): void; - next(): boolean; - _next(): boolean; - Format(): string; - Print(ast: any): string; - push(argument: any): void; - setRoot(token: any): void; - isExpectedNext(): boolean; - toAST(): any; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js deleted file mode 100644 index 2145273..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js +++ /dev/null @@ -1,447 +0,0 @@ -System.register(['lodash'], function(exports_1) { - var lodash_1; - var Scanner, wsRe, commentRe, idRe, intRe, powerIntRe, floatRe, stringRe, binaryOpRe, statementRe, joinsRe, macroFuncRe, condRe, inRe, closureRe, specCharsRe, macroRe, skipSpaceRe, builtInFuncRe, operatorRe, dataTypeRe, wsOnlyRe, commentOnlyRe, idOnlyRe, closureOnlyRe, macroFuncOnlyRe, statementOnlyRe, joinsOnlyRe, operatorOnlyRe, dataTypeOnlyRe, builtInFuncOnlyRe, macroOnlyRe, inOnlyRe, condOnlyRe, numOnlyRe, stringOnlyRe, skipSpaceOnlyRe, binaryOnlyRe, tokenRe, tabSize, newLine; - function isSkipSpace(token) { - return skipSpaceOnlyRe.test(token); - } - function isCond(token) { - return condOnlyRe.test(token); - } - function isIn(token) { - return inOnlyRe.test(token); - } - function isJoin(token) { - return joinsOnlyRe.test(token); - } - function isWS(token) { - return wsOnlyRe.test(token); - } - function isMacroFunc(token) { - return macroFuncOnlyRe.test(token); - } - function isMacro(token) { - return macroOnlyRe.test(token); - } - function isComment(token) { - return commentOnlyRe.test(token); - } - function isID(token) { - return idOnlyRe.test(token); - } - function isStatement(token) { - return statementOnlyRe.test(token); - } - function isOperator(token) { - return operatorOnlyRe.test(token); - } - function isDataType(token) { - return dataTypeOnlyRe.test(token); - } - function isBuiltInFunc(token) { - return builtInFuncOnlyRe.test(token); - } - function isClosureChars(token) { - return closureOnlyRe.test(token); - } - function isNum(token) { - return numOnlyRe.test(token); - } - function isString(token) { - return stringOnlyRe.test(token); - } - function isBinary(token) { - return binaryOnlyRe.test(token); - } - function printItems(items, tab, separator) { - if (tab === void 0) { tab = ''; } - if (separator === void 0) { separator = ''; } - var result = ''; - if (lodash_1.default.isArray(items)) { - if (items.length === 1) { - result += ' ' + items[0]; - } - else { - result += newLine; - items.forEach(function (item, i) { - result += tab + tabSize + item; - if (i !== items.length - 1) { - result += separator; - result += newLine; - } - }); - } - } - else { - result = newLine + '(' + newLine + print(items, tab + tabSize) + newLine + ')'; - } - return result; - } - function toAST(s) { - var scanner = new Scanner(s); - return scanner.toAST(); - } - function isSet(obj, prop) { - return obj.hasOwnProperty(prop) && !lodash_1.default.isEmpty(obj[prop]); - } - function isClosured(argument) { - return (argument.match(/\(/g) || []).length === (argument.match(/\)/g) || []).length; - } - function betweenBraces(query) { - var openBraces = 1, subQuery = ''; - for (var i = 0; i < query.length; i++) { - if (query.charAt(i) === '(') { - openBraces++; - } - if (query.charAt(i) === ')') { - if (openBraces === 1) { - subQuery = query.substring(0, i); - break; - } - openBraces--; - } - } - return subQuery; - } - // see https://clickhouse.yandex/reference_ru.html#SELECT - function print(AST, tab) { - if (tab === void 0) { tab = ''; } - var result = ''; - if (isSet(AST, '$rate')) { - result += tab + '$rate('; - result += printItems(AST.$rate, tab, ',') + ')'; - } - if (isSet(AST, '$columns')) { - result += tab + '$columns('; - result += printItems(AST.$columns, tab, ',') + ')'; - } - if (isSet(AST, '$rateColumns')) { - result += tab + '$rateColumns('; - result += printItems(AST.$rateColumns, tab, ',') + ')'; - } - if (isSet(AST, 'select')) { - result += tab + 'SELECT'; - result += printItems(AST.select, tab, ','); - } - if (isSet(AST, 'from')) { - result += newLine + tab + 'FROM'; - result += printItems(AST.from, tab); - } - if (isSet(AST, 'join')) { - result += tab + newLine + AST.join.type.toUpperCase() + - printItems(AST.join.source, tab) + - ' USING ' + printItems(AST.join.using, tab, ','); - } - if (isSet(AST, 'prewhere')) { - result += newLine + tab + 'PREWHERE'; - result += printItems(AST.prewhere, tab); - } - if (isSet(AST, 'where')) { - result += newLine + tab + 'WHERE'; - result += printItems(AST.where, tab); - } - if (isSet(AST, 'group by')) { - result += newLine + tab + 'GROUP BY'; - result += printItems(AST['group by'], tab, ','); - } - if (isSet(AST, 'having')) { - result += newLine + tab + 'HAVING'; - result += printItems(AST.having, tab); - } - if (isSet(AST, 'order by')) { - result += newLine + tab + 'ORDER BY'; - result += printItems(AST['order by'], tab, ','); - } - if (isSet(AST, 'limit')) { - result += newLine + tab + 'LIMIT'; - result += printItems(AST.limit, tab, ','); - } - if (isSet(AST, 'union all')) { - AST['union all'].forEach(function (v) { - result += newLine + newLine + tab + 'UNION ALL' + newLine + newLine; - result += print(v, tab); - }); - } - if (isSet(AST, 'format')) { - result += newLine + tab + 'FORMAT'; - result += printItems(AST.format, tab); - } - return result; - } - return { - setters:[ - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }], - execute: function() { - Scanner = (function () { - /** @ngInject */ - function Scanner(s) { - this._sOriginal = s; - this.token = null; - } - Scanner.prototype.raw = function () { - return this._sOriginal; - }; - ; - Scanner.prototype.expect = function (token) { - this.expectNext(); - if (!this.isToken(token)) { - throw ("expecting [" + token + "], but got [" + this.token + "] at [" + this._s + "]"); - } - }; - ; - Scanner.prototype.isToken = function (token) { - return lodash_1.default.toUpper(token) === lodash_1.default.toUpper(this.token); - }; - ; - Scanner.prototype.expectNext = function () { - if (!this.next()) { - throw ("expecting additional token at the end of query [" + this._sOriginal + "]"); - } - }; - ; - Scanner.prototype.next = function () { - while (this._next()) { - if (this.skipSpace && isWS(this.token)) { - // skip whitespace - continue; - } - if (isComment(this.token)) { - // skip comment - continue; - } - return true; - } - return false; - }; - ; - Scanner.prototype._next = function () { - if (this._s.length === 0) { - return false; - } - var r = this.re.exec(this._s); - if (r === null) { - throw ("cannot find next token in [" + this._s + "]"); - } - this.token = r[0]; - this._s = this._s.substring(this.token.length); - return true; - }; - ; - Scanner.prototype.Format = function () { - return print(this.toAST()); - }; - ; - Scanner.prototype.Print = function (ast) { - return print(ast); - }; - Scanner.prototype.push = function (argument) { - this.tree[this.rootToken].push(argument); - this.expectedNext = false; - }; - Scanner.prototype.setRoot = function (token) { - this.rootToken = token.toLowerCase(); - this.tree[this.rootToken] = []; - this.expectedNext = true; - }; - Scanner.prototype.isExpectedNext = function () { - var v = this.expectedNext; - this.expectedNext = false; - return v; - }; - Scanner.prototype.toAST = function () { - this._s = this._sOriginal; - this.tree = {}; - this.setRoot('root'); - this.expectedNext = false; - this.skipSpace = true; - this.re = new RegExp("^(?:" + tokenRe + ")", 'i'); - var subQuery = '', argument = ''; - while (this.next()) { - if (!this.isExpectedNext() && isStatement(this.token) && !this.tree.hasOwnProperty(lodash_1.default.toLower(this.token))) { - if (!isClosured(argument)) { - argument += this.token; - continue; - } - if (argument.length > 0) { - this.push(argument); - argument = ''; - } - this.setRoot(this.token); - } - else if (this.token === ',' && isClosured(argument)) { - this.push(argument); - argument = ''; - this.expectedNext = true; - } - else if (isClosureChars(this.token) && this.rootToken === 'from') { - subQuery = betweenBraces(this._s); - this.tree[this.rootToken] = toAST(subQuery); - this._s = this._s.substring(subQuery.length + 1); - } - else if (isMacroFunc(this.token)) { - var func = this.token; - if (!this.next()) { - throw ("wrong function signature for `" + func + "` at [" + this._s + "]"); - } - subQuery = betweenBraces(this._s); - var subAST = toAST(subQuery); - if (isSet(subAST, 'root')) { - this.tree[func] = subAST['root'].map(function (item) { - return item; - }); - } - else { - this.tree[func] = subAST; - } - this._s = this._s.substring(subQuery.length + 1); - // macro funcs are used instead of SELECT statement - this.tree['select'] = []; - } - else if (isIn(this.token)) { - argument += ' ' + this.token; - if (!this.next()) { - throw ("wrong in signature for `" + argument + "` at [" + this._s + "]"); - } - if (isClosureChars(this.token)) { - subQuery = betweenBraces(this._s); - var subAST = toAST(subQuery); - if (isSet(subAST, 'root')) { - argument += ' (' + subAST['root'].map(function (item) { - return item; - }); - argument = argument + ')'; - } - else { - argument += ' (' + newLine + print(subAST, tabSize) + ')'; - this.push(argument); - argument = ''; - } - this._s = this._s.substring(subQuery.length + 1); - } - else { - argument += ' ' + this.token; - } - } - else if (isCond(this.token) && (this.rootToken === 'where' || this.rootToken === 'prewhere')) { - if (isClosured(argument)) { - this.push(argument); - argument = this.token; - } - else { - argument += ' ' + this.token; - } - } - else if (isJoin(this.token)) { - var joinType = this.token, source = void 0; - if (!this.next()) { - throw ("wrong join signature for `" + joinType + "` at [" + this._s + "]"); - } - if (isClosureChars(this.token)) { - subQuery = betweenBraces(this._s); - source = toAST(subQuery); - this._s = this._s.substring(subQuery.length + 1); - } - else { - source = [this.token]; - } - this.expect('using'); - this.tree['join'] = { type: joinType, source: source, using: [] }; - while (this.next()) { - if (isStatement(this.token)) { - if (argument !== '') { - this.push(argument); - argument = ''; - } - this.setRoot(this.token); - break; - } - if (!isID(this.token)) { - continue; - } - this.tree['join'].using.push(this.token); - } - } - else if (this.rootToken === 'union all') { - var statement = 'union all'; - this._s = this.token + ' ' + this._s; - var subQueryPos = this._s.toLowerCase().indexOf(statement); - while (subQueryPos !== -1) { - var subQuery_1 = this._s.substring(0, subQueryPos); - var ast_1 = toAST(subQuery_1); - this.tree[statement].push(ast_1); - this._s = this._s.substring(subQueryPos + statement.length, this._s.length); - subQueryPos = this._s.toLowerCase().indexOf(statement); - } - var ast = toAST(this._s); - this._s = ''; - this.tree[statement].push(ast); - } - else if (isClosureChars(this.token) || this.token === '.') { - argument += this.token; - } - else if (this.token === ',') { - argument += this.token + ' '; - } - else { - argument += (argument === '' || isSkipSpace(argument[argument.length - 1])) - ? this.token - : ' ' + this.token; - } - } - if (argument !== '') { - this.push(argument); - } - return this.tree; - }; - ; - return Scanner; - })(); - exports_1("default", Scanner); - wsRe = "\\s+", commentRe = "--[^\n]*|/\\*(?:[^*]|\\*[^/])*\\*/", idRe = "[a-zA-Z_][a-zA-Z_0-9]*", intRe = "\\d+", powerIntRe = "\\d+e\\d+", floatRe = "\\d+\\.\\d*|\\d*\\.\\d+|\\d+[eE][-+]\\d+", stringRe = "('[^']*')|(`[^`]*`)", binaryOpRe = "=>|\\|\\||>=|<=|==|!=|<>|->|[-+/%*=<>\\.!]", statementRe = "(select|from|where|having|order by|group by|limit|format|prewhere|union all)", joinsRe = "(any inner join|any left join|all inner join|all left join" + - "|global any inner join|global any left join|global all inner join|global all left join)", macroFuncRe = "(\\$rateColumns|\\$rate|\\$columns)", condRe = "\\b(or|and)\\b", inRe = "\\b(global in|global not in|not in|in)\\b", closureRe = "[\\(\\)\\[\\]]", specCharsRe = "[,?:]", macroRe = "\\$[A-Za-z0-9_$]+", skipSpaceRe = "[\\(\\.! \\[]", builtInFuncRe = "\\b(avg|countIf|first|last|max|min|sum|sumIf|ucase|lcase|mid|round|rank|now|" + - "coalesce|ifnull|isnull|nvl|count|timeSlot|yesterday|today|now|toRelativeSecondNum|" + - "toRelativeMinuteNum|toRelativeHourNum|toRelativeDayNum|toRelativeWeekNum|toRelativeMonthNum|" + - "toRelativeYearNum|toTime|toStartOfHour|toStartOfFiveMinute|toStartOfMinute|toStartOfYear|" + - "toStartOfQuarter|toStartOfMonth|toMonday|toSecond|toMinute|toHour|toDayOfWeek|toDayOfMonth|" + - "toMonth|toYear|toFixedString|toStringCutToZero|reinterpretAsString|reinterpretAsDate|" + - "reinterpretAsDateTime|reinterpretAsFloat32|reinterpretAsFloat64|reinterpretAsInt8|" + - "reinterpretAsInt16|reinterpretAsInt32|reinterpretAsInt64|reinterpretAsUInt8|" + - "reinterpretAsUInt16|reinterpretAsUInt32|reinterpretAsUInt64|toUInt8|toUInt16|toUInt32|" + - "toUInt64|toInt8|toInt16|toInt32|toInt64|toFloat32|toFloat64|toDate|toDateTime|toString|" + - "bitAnd|bitOr|bitXor|bitNot|bitShiftLeft|bitShiftRight|abs|negate|modulo|intDivOrZero|" + - "intDiv|divide|multiply|minus|plus|empty|notEmpty|length|lengthUTF8|lower|upper|lowerUTF8|" + - "upperUTF8|reverse|reverseUTF8|concat|substring|substringUTF8|appendTrailingCharIfAbsent|" + - "position|positionUTF8|match|extract|extractAll|like|notLike|replaceOne|replaceAll|" + - "replaceRegexpOne|range|arrayElement|has|indexOf|countEqual|arrayEnumerate|arrayEnumerateUniq|" + - "arrayJoin|arrayMap|arrayFilter|arrayExists|arrayCount|arrayAll|arrayFirst|arraySum|splitByChar|" + - "splitByString|alphaTokens|domainWithoutWWW|topLevelDomain|firstSignificantSubdomain|" + - "cutToFirstSignificantSubdomain|queryString|URLPathHierarchy|URLHierarchy|extractURLParameterNames|" + - "extractURLParameters|extractURLParameter|queryStringAndFragment|cutWWW|cutQueryString|" + - "cutFragment|cutQueryStringAndFragment|cutURLParameter|IPv4NumToString|IPv4StringToNum|" + - "IPv4NumToStringClassC|IPv6NumToString|IPv6StringToNum|rand|rand64|halfMD5|MD5|sipHash64|" + - "sipHash128|cityHash64|intHash32|intHash64|SHA1|SHA224|SHA256|URLHash|hex|unhex|bitmaskToList|" + - "bitmaskToArray|floor|ceil|round|roundToExp2|roundDuration|roundAge|regionToCountry|" + - "regionToContinent|regionToPopulation|regionIn|regionHierarchy|regionToName|OSToRoot|OSIn|" + - "OSHierarchy|SEToRoot|SEIn|SEHierarchy|dictGetUInt8|dictGetUInt16|dictGetUInt32|" + - "dictGetUInt64|dictGetInt8|dictGetInt16|dictGetInt32|dictGetInt64|dictGetFloat32|" + - "dictGetFloat64|dictGetDate|dictGetDateTime|dictGetString|dictGetHierarchy|dictHas|dictIsIn|" + - "argMin|argMax|uniqCombined|uniqHLL12|uniqExact|uniqExactIf|groupArray|groupUniqArray|quantile|" + - "quantileDeterministic|quantileTiming|quantileTimingWeighted|quantileExact|" + - "quantileExactWeighted|quantileTDigest|median|quantiles|varSamp|varPop|stddevSamp|stddevPop|" + - "covarSamp|covarPop|corr|sequenceMatch|sequenceCount|uniqUpTo|avgIf|" + - "quantilesTimingIf|argMinIf|uniqArray|sumArray|quantilesTimingArrayIf|uniqArrayIf|medianIf|" + - "quantilesIf|varSampIf|varPopIf|stddevSampIf|stddevPopIf|covarSampIf|covarPopIf|corrIf|" + - "uniqArrayIf|sumArrayIf|uniq)\\b", operatorRe = "\\b(select|group by|order by|from|where|limit|offset|having|as|" + - "when|else|end|type|left|right|on|outer|desc|asc|primary|key|between|" + - "foreign|not|null|inner|cross|natural|database|prewhere|using|global|in)\\b", dataTypeRe = "\\b(int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + - "money|real|number|integer|" + - "uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|datetime|enum8|enum16|" + - "array|tuple|string)\\b", wsOnlyRe = new RegExp("^(?:" + wsRe + ")$"), commentOnlyRe = new RegExp("^(?:" + commentRe + ")$"), idOnlyRe = new RegExp("^(?:" + idRe + ")$"), closureOnlyRe = new RegExp("^(?:" + closureRe + ")$"), macroFuncOnlyRe = new RegExp("^(?:" + macroFuncRe + ")$"), statementOnlyRe = new RegExp("^(?:" + statementRe + ")$", 'i'), joinsOnlyRe = new RegExp("^(?:" + joinsRe + ")$", 'i'), operatorOnlyRe = new RegExp("^(?:" + operatorRe + ")$", 'i'), dataTypeOnlyRe = new RegExp("^(?:" + dataTypeRe + ")$"), builtInFuncOnlyRe = new RegExp("^(?:" + builtInFuncRe + ")$"), macroOnlyRe = new RegExp("^(?:" + macroRe + ")$", 'i'), inOnlyRe = new RegExp("^(?:" + inRe + ")$", 'i'), condOnlyRe = new RegExp("^(?:" + condRe + ")$", 'i'), numOnlyRe = new RegExp("^(?:" + [powerIntRe, intRe, floatRe].join("|") + ")$"), stringOnlyRe = new RegExp("^(?:" + stringRe + ")$"), skipSpaceOnlyRe = new RegExp("^(?:" + skipSpaceRe + ")$"), binaryOnlyRe = new RegExp("^(?:" + binaryOpRe + ")$"); - tokenRe = [statementRe, macroFuncRe, joinsRe, inRe, wsRe, commentRe, idRe, stringRe, powerIntRe, floatRe, intRe, - binaryOpRe, closureRe, specCharsRe, macroRe].join("|"); - tabSize = ' ', newLine = '\n'; - } - } -}); -//# sourceMappingURL=scanner.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js.map deleted file mode 100644 index fac0df2..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scanner.js","sourceRoot":"","sources":["scanner.ts"],"names":["isSkipSpace","isCond","isIn","isJoin","isWS","isMacroFunc","isMacro","isComment","isID","isStatement","isOperator","isDataType","isBuiltInFunc","isClosureChars","isNum","isString","isBinary","printItems","toAST","isSet","isClosured","betweenBraces","print","Scanner","Scanner.constructor","Scanner.raw","Scanner.expect","Scanner.isToken","Scanner.expectNext","Scanner.next","Scanner._next","Scanner.Format","Scanner.Print","Scanner.push","Scanner.setRoot","Scanner.isExpectedNext","Scanner.toAST"],"mappings":";;iBAiPI,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,KAAK,EACL,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EAEP,WAAW,EACX,MAAM,EACN,IAAI,EACJ,SAAS,EACT,WAAW,EACX,OAAO,EACP,WAAW,EAEX,aAAa,EAkCb,UAAU,EAGV,UAAU,EAKV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,aAAa,EACb,eAAe,EACf,eAAe,EACf,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EAEZ,OAAO,EAuEP,OAAO,EACP,OAAO;IArEX,qBAAqB,KAAK;QACtBA,MAAMA,CAACA,eAAeA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACvCA,CAACA;IAED,gBAAgB,KAAK;QACjBC,MAAMA,CAACA,UAAUA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IAClCA,CAACA;IAED,cAAc,KAAK;QACfC,MAAMA,CAACA,QAAQA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IAChCA,CAACA;IAED,gBAAgB,KAAK;QACjBC,MAAMA,CAACA,WAAWA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACnCA,CAACA;IAED,cAAc,KAAK;QACfC,MAAMA,CAACA,QAAQA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IAChCA,CAACA;IAED,qBAAqB,KAAK;QACtBC,MAAMA,CAACA,eAAeA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACvCA,CAACA;IAED,iBAAiB,KAAK;QAClBC,MAAMA,CAACA,WAAWA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACnCA,CAACA;IAED,mBAAmB,KAAK;QACpBC,MAAMA,CAACA,aAAaA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACrCA,CAACA;IAED,cAAc,KAAK;QACfC,MAAMA,CAACA,QAAQA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IAChCA,CAACA;IAED,qBAAqB,KAAK;QACtBC,MAAMA,CAACA,eAAeA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACvCA,CAACA;IAED,oBAAoB,KAAK;QACrBC,MAAMA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACtCA,CAACA;IAED,oBAAoB,KAAK;QACrBC,MAAMA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACtCA,CAACA;IAED,uBAAuB,KAAK;QACxBC,MAAMA,CAACA,iBAAiBA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACzCA,CAACA;IAED,wBAAwB,KAAK;QACzBC,MAAMA,CAACA,aAAaA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACrCA,CAACA;IAED,eAAe,KAAK;QAChBC,MAAMA,CAACA,SAASA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACjCA,CAACA;IAED,kBAAkB,KAAK;QACnBC,MAAMA,CAACA,YAAYA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAED,kBAAkB,KAAK;QACnBC,MAAMA,CAACA,YAAYA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;IACpCA,CAACA;IAKD,oBAAoB,KAAK,EAAE,GAAQ,EAAE,SAAc;QAAxBC,mBAAQA,GAARA,QAAQA;QAAEA,yBAAcA,GAAdA,cAAcA;QAC/CA,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;QAChBA,EAAEA,CAACA,CAACA,gBAACA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;YACnBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;gBACrBA,MAAMA,IAAIA,GAAGA,GAAGA,KAAKA,CAACA,CAACA,CAACA,CAACA;YAC7BA,CAACA;YAACA,IAAIA,CAACA,CAACA;gBACJA,MAAMA,IAAIA,OAAOA,CAACA;gBAClBA,KAAKA,CAACA,OAAOA,CAACA,UAAUA,IAAIA,EAAEA,CAACA;oBAC3B,MAAM,IAAI,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC;oBAC/B,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACzB,MAAM,IAAI,SAAS,CAAC;wBACpB,MAAM,IAAI,OAAO,CAAC;oBACtB,CAAC;gBACL,CAAC,CAACA,CAACA;YACPA,CAACA;QACLA,CAACA;QAACA,IAAIA,CAACA,CAACA;YACJA,MAAMA,GAAGA,OAAOA,GAAGA,GAAGA,GAAGA,OAAOA,GAAGA,KAAKA,CAACA,KAAKA,EAAEA,GAAGA,GAAGA,OAAOA,CAACA,GAAGA,OAAOA,GAAGA,GAAGA,CAACA;QACnFA,CAACA;QAEDA,MAAMA,CAACA,MAAMA,CAACA;IAClBA,CAACA;IAED,eAAe,CAAC;QACZC,IAAIA,OAAOA,GAAGA,IAAIA,OAAOA,CAACA,CAACA,CAACA,CAACA;QAC7BA,MAAMA,CAACA,OAAOA,CAACA,KAAKA,EAAEA,CAACA;IAC3BA,CAACA;IAED,eAAe,GAAG,EAAE,IAAI;QACpBC,MAAMA,CAACA,GAAGA,CAACA,cAAcA,CAACA,IAAIA,CAACA,IAAIA,CAACA,gBAACA,CAACA,OAAOA,CAACA,GAAGA,CAACA,IAAIA,CAACA,CAACA,CAACA;IAC7DA,CAACA;IAED,oBAAoB,QAAQ;QACxBC,MAAMA,CAACA,CAACA,QAAQA,CAACA,KAAKA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,CAACA,CAACA,MAAMA,KAAKA,CAACA,QAAQA,CAACA,KAAKA,CAACA,KAAKA,CAACA,IAAIA,EAAEA,CAACA,CAACA,MAAMA,CAACA;IACzFA,CAACA;IAED,uBAAuB,KAAK;QACxBC,IAAIA,UAAUA,GAAGA,CAACA,EAAEA,QAAQA,GAAGA,EAAEA,CAACA;QAClCA,GAAGA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,CAACA,EAAEA,CAACA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,CAACA,EAAEA,EAAEA,CAACA;YACpCA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA;gBAC1BA,UAAUA,EAAEA,CAACA;YACjBA,CAACA;YACDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA;gBAC1BA,EAAEA,CAACA,CAACA,UAAUA,KAAKA,CAACA,CAACA,CAACA,CAACA;oBACnBA,QAAQA,GAAGA,KAAKA,CAACA,SAASA,CAACA,CAACA,EAAEA,CAACA,CAACA,CAACA;oBACjCA,KAAKA,CAACA;gBACVA,CAACA;gBACDA,UAAUA,EAAEA,CAACA;YACjBA,CAACA;QACLA,CAACA;QACDA,MAAMA,CAACA,QAAQA,CAACA;IACpBA,CAACA;IAED,yDAAyD;IACzD,eAAe,GAAG,EAAE,GAAQ;QAARC,mBAAQA,GAARA,QAAQA;QACxBA,IAAIA,MAAMA,GAAGA,EAAEA,CAACA;QAChBA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;YACtBA,MAAMA,IAAIA,GAAGA,GAAGA,QAAQA,CAACA;YACzBA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;QACpDA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,UAAUA,CAACA,CAACA,CAACA,CAACA;YACzBA,MAAMA,IAAIA,GAAGA,GAAGA,WAAWA,CAACA;YAC5BA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,QAAQA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;QACvDA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,cAAcA,CAACA,CAACA,CAACA,CAACA;YAC7BA,MAAMA,IAAIA,GAAGA,GAAGA,eAAeA,CAACA;YAChCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,YAAYA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,GAAGA,GAAGA,CAACA;QAC3DA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACvBA,MAAMA,IAAIA,GAAGA,GAAGA,QAAQA,CAACA;YACzBA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;QAC/CA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACrBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,MAAMA,CAACA;YACjCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,IAAIA,EAAEA,GAAGA,CAACA,CAACA;QACxCA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA;YACrBA,MAAMA,IAAIA,GAAGA,GAAGA,OAAOA,GAAGA,GAAGA,CAACA,IAAIA,CAACA,IAAIA,CAACA,WAAWA,EAAEA;gBACjDA,UAAUA,CAACA,GAAGA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,GAAGA,CAACA;gBAChCA,SAASA,GAAGA,UAAUA,CAACA,GAAGA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;QACzDA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,UAAUA,CAACA,CAACA,CAACA,CAACA;YACzBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,UAAUA,CAACA;YACrCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,QAAQA,EAAEA,GAAGA,CAACA,CAACA;QAC5CA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;YACtBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,OAAOA,CAACA;YAClCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,GAAGA,CAACA,CAACA;QACzCA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,UAAUA,CAACA,CAACA,CAACA,CAACA;YACzBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,UAAUA,CAACA;YACrCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,UAAUA,CAACA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;QACpDA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACvBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,QAAQA,CAACA;YACnCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,GAAGA,CAACA,CAACA;QAC1CA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,UAAUA,CAACA,CAACA,CAACA,CAACA;YACzBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,UAAUA,CAACA;YACrCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,UAAUA,CAACA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;QACpDA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,OAAOA,CAACA,CAACA,CAACA,CAACA;YACtBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,OAAOA,CAACA;YAClCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,KAAKA,EAAEA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;QAC9CA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,WAAWA,CAACA,CAACA,CAACA,CAACA;YAC1BA,GAAGA,CAACA,WAAWA,CAACA,CAACA,OAAOA,CAACA,UAAUA,CAACA;gBAChC,MAAM,IAAI,OAAO,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC3B,CAAC,CAACA,CAAAA;QACNA,CAACA;QAEDA,EAAEA,CAACA,CAACA,KAAKA,CAACA,GAAGA,EAAEA,QAAQA,CAACA,CAACA,CAACA,CAACA;YACvBA,MAAMA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,QAAQA,CAACA;YACnCA,MAAMA,IAAIA,UAAUA,CAACA,GAAGA,CAACA,MAAMA,EAAEA,GAAGA,CAACA,CAACA;QAC1CA,CAACA;QAEDA,MAAMA,CAACA,MAAMA,CAACA;IAClBA,CAACA;;;;;;;YAzgBD;gBAWIC,gBAAgBA;gBAChBA,iBAAYA,CAACA;oBACTC,IAAIA,CAACA,UAAUA,GAAGA,CAACA,CAACA;oBACpBA,IAAIA,CAACA,KAAKA,GAAGA,IAAIA,CAACA;gBACtBA,CAACA;gBAEDD,qBAAGA,GAAHA;oBACIE,MAAMA,CAACA,IAAIA,CAACA,UAAUA,CAACA;gBAC3BA,CAACA;;gBAEDF,wBAAMA,GAANA,UAAOA,KAAKA;oBACRG,IAAIA,CAACA,UAAUA,EAAEA,CAACA;oBAClBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,OAAOA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACvBA,MAAKA,CAACA,aAAaA,GAAGA,KAAKA,GAAGA,cAAcA,GAAGA,IAAIA,CAACA,KAAKA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,GAAGA,CAACA,CAACA;oBAC1FA,CAACA;gBACLA,CAACA;;gBAEDH,yBAAOA,GAAPA,UAAQA,KAAKA;oBACTI,MAAMA,CAACA,gBAACA,CAACA,OAAOA,CAACA,KAAKA,CAACA,KAAKA,gBAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;gBACtDA,CAACA;;gBAEDJ,4BAAUA,GAAVA;oBACIK,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;wBACfA,MAAKA,CAACA,kDAAkDA,GAAGA,IAAIA,CAACA,UAAUA,GAAGA,GAAGA,CAACA,CAACA;oBACtFA,CAACA;gBACLA,CAACA;;gBAEDL,sBAAIA,GAAJA;oBACIM,OAAOA,IAAIA,CAACA,KAAKA,EAAEA,EAAEA,CAACA;wBAClBA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,IAAIA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BACrCA,kBAAkBA;4BAClBA,QAAQA,CAACA;wBACbA,CAACA;wBACDA,EAAEA,CAACA,CAACA,SAASA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BACxBA,eAAeA;4BACfA,QAAQA,CAACA;wBACbA,CAACA;wBACDA,MAAMA,CAACA,IAAIA,CAACA;oBAChBA,CAACA;oBACDA,MAAMA,CAACA,KAAKA,CAACA;gBACjBA,CAACA;;gBAEDN,uBAAKA,GAALA;oBACIO,EAAEA,CAACA,CAACA,IAAIA,CAACA,EAAEA,CAACA,MAAMA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBACvBA,MAAMA,CAACA,KAAKA,CAACA;oBACjBA,CAACA;oBACDA,IAAIA,CAACA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,IAAIA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;oBAC9BA,EAAEA,CAACA,CAACA,CAACA,KAAKA,IAAIA,CAACA,CAACA,CAACA;wBACbA,MAAKA,CAACA,6BAA6BA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,GAAGA,CAACA,CAACA;oBACzDA,CAACA;oBAEDA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA,CAACA,CAACA;oBAClBA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,IAAIA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA;oBAC/CA,MAAMA,CAACA,IAAIA,CAACA;gBAChBA,CAACA;;gBAEDP,wBAAMA,GAANA;oBACIQ,MAAMA,CAACA,KAAKA,CAACA,IAAIA,CAACA,KAAKA,EAAEA,CAACA,CAACA;gBAC/BA,CAACA;;gBAEDR,uBAAKA,GAALA,UAAMA,GAAGA;oBACLS,MAAMA,CAACA,KAAKA,CAACA,GAAGA,CAACA,CAAAA;gBACrBA,CAACA;gBAEDT,sBAAIA,GAAJA,UAAKA,QAAQA;oBACTU,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;oBACzCA,IAAIA,CAACA,YAAYA,GAAGA,KAAKA,CAACA;gBAC9BA,CAACA;gBAEDV,yBAAOA,GAAPA,UAAQA,KAAKA;oBACTW,IAAIA,CAACA,SAASA,GAAGA,KAAKA,CAACA,WAAWA,EAAEA,CAACA;oBACrCA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,SAASA,CAACA,GAAGA,EAAEA,CAACA;oBAC/BA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,CAACA;gBAC7BA,CAACA;gBAEDX,gCAAcA,GAAdA;oBACIY,IAAIA,CAACA,GAAGA,IAAIA,CAACA,YAAYA,CAACA;oBAC1BA,IAAIA,CAACA,YAAYA,GAAGA,KAAKA,CAACA;oBAC1BA,MAAMA,CAACA,CAACA,CAAAA;gBACZA,CAACA;gBAEDZ,uBAAKA,GAALA;oBACIa,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,UAAUA,CAACA;oBAC1BA,IAAIA,CAACA,IAAIA,GAAGA,EAAEA,CAACA;oBACfA,IAAIA,CAACA,OAAOA,CAACA,MAAMA,CAACA,CAACA;oBACrBA,IAAIA,CAACA,YAAYA,GAAGA,KAAKA,CAACA;oBAC1BA,IAAIA,CAACA,SAASA,GAAGA,IAAIA,CAACA;oBACtBA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,MAAMA,CAACA,MAAMA,GAAGA,OAAOA,GAAGA,GAAGA,EAAEA,GAAGA,CAACA,CAACA;oBAClDA,IAAIA,QAAQA,GAAGA,EAAEA,EACbA,QAAQA,GAAGA,EAAEA,CAACA;oBAElBA,OAAOA,IAAIA,CAACA,IAAIA,EAAEA,EAAEA,CAACA;wBACjBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,cAAcA,EAAEA,IAAIA,WAAWA,CAACA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,cAAcA,CAACA,gBAACA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA,CAACA;4BACxGA,EAAEA,CAACA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gCACxBA,QAAQA,IAAIA,IAAIA,CAACA,KAAKA,CAACA;gCACvBA,QAAQA,CAAAA;4BACZA,CAACA;4BACDA,EAAEA,CAACA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;gCACtBA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gCACpBA,QAAQA,GAAGA,EAAEA,CAACA;4BAClBA,CAACA;4BACDA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;wBAC7BA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,GAAGA,IAAIA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;4BAClDA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;4BACpBA,QAAQA,GAAGA,EAAEA,CAACA;4BACdA,IAAIA,CAACA,YAAYA,GAAGA,IAAIA,CAACA;wBAC7BA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,IAAIA,CAACA,SAASA,KAAKA,MAAMA,CAACA,CAACA,CAACA;4BAC/DA,QAAQA,GAAGA,aAAaA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;4BAClCA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,SAASA,CAACA,GAAGA,KAAKA,CAACA,QAAQA,CAACA,CAACA;4BAC5CA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;wBACrDA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,WAAWA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BAC/BA,IAAIA,IAAIA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;4BACtBA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;gCACfA,MAAKA,CAACA,gCAAgCA,GAAGA,IAAIA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,GAAGA,CAACA,CAACA;4BAC9EA,CAACA;4BAEDA,QAAQA,GAAGA,aAAaA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;4BAClCA,IAAIA,MAAMA,GAAGA,KAAKA,CAACA,QAAQA,CAACA,CAACA;4BAC7BA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA;gCACxBA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,CAACA,GAAGA,CAACA,UAAUA,IAAIA;oCAC/C,MAAM,CAAC,IAAI,CAAC;gCAChB,CAAC,CAACA,CAACA;4BACPA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,IAAIA,CAACA,IAAIA,CAACA,IAAIA,CAACA,GAAGA,MAAMA,CAACA;4BAC7BA,CAACA;4BACDA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;4BAEjDA,mDAAmDA;4BACnDA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,GAAGA,EAAEA,CAACA;wBAC7BA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BACxBA,QAAQA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;4BAC7BA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;gCACfA,MAAKA,CAACA,0BAA0BA,GAAGA,QAAQA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,GAAGA,CAACA,CAACA;4BAC5EA,CAACA;4BAEDA,EAAEA,CAACA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCAC7BA,QAAQA,GAAGA,aAAaA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;gCAClCA,IAAIA,MAAMA,GAAGA,KAAKA,CAACA,QAAQA,CAACA,CAACA;gCAC7BA,EAAEA,CAACA,CAACA,KAAKA,CAACA,MAAMA,EAAEA,MAAMA,CAACA,CAACA,CAACA,CAACA;oCACxBA,QAAQA,IAAIA,IAAIA,GAAGA,MAAMA,CAACA,MAAMA,CAACA,CAACA,GAAGA,CAACA,UAAUA,IAAIA;wCAChD,MAAM,CAAC,IAAI,CAAC;oCAChB,CAAC,CAACA,CAACA;oCACHA,QAAQA,GAAGA,QAAQA,GAAGA,GAAGA,CAACA;gCAC9BA,CAACA;gCAACA,IAAIA,CAACA,CAACA;oCACJA,QAAQA,IAAIA,IAAIA,GAAGA,OAAOA,GAAGA,KAAKA,CAACA,MAAMA,EAAEA,OAAOA,CAACA,GAAGA,GAAGA,CAACA;oCAC1DA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;oCACpBA,QAAQA,GAAGA,EAAEA,CAACA;gCAClBA,CAACA;gCACDA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;4BACrDA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,QAAQA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;4BACjCA,CAACA;wBACLA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,CAACA,IAAIA,CAACA,SAASA,KAAKA,OAAOA,IAAIA,IAAIA,CAACA,SAASA,KAAKA,UAAUA,CAACA,CAACA,CAACA,CAACA;4BAC3FA,EAAEA,CAACA,CAACA,UAAUA,CAACA,QAAQA,CAACA,CAACA,CAACA,CAACA;gCACvBA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;gCACpBA,QAAQA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;4BAC1BA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,QAAQA,IAAIA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;4BACjCA,CAACA;wBACLA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,MAAMA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;4BAC1BA,IAAIA,QAAQA,GAAGA,IAAIA,CAACA,KAAKA,EAAEA,MAAMA,SAAAA,CAACA;4BAClCA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,EAAEA,CAACA,CAACA,CAACA;gCACfA,MAAKA,CAACA,4BAA4BA,GAAGA,QAAQA,GAAGA,QAAQA,GAAGA,IAAIA,CAACA,EAAEA,GAAGA,GAAGA,CAACA,CAACA;4BAC9EA,CAACA;4BAEDA,EAAEA,CAACA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;gCAC7BA,QAAQA,GAAGA,aAAaA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;gCAClCA,MAAMA,GAAGA,KAAKA,CAACA,QAAQA,CAACA,CAACA;gCACzBA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA;4BACrDA,CAACA;4BAACA,IAAIA,CAACA,CAACA;gCACJA,MAAMA,GAAGA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;4BAC1BA,CAACA;4BAEDA,IAAIA,CAACA,MAAMA,CAACA,OAAOA,CAACA,CAACA;4BACrBA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA,GAAGA,EAACA,IAAIA,EAAEA,QAAQA,EAAEA,MAAMA,EAAEA,MAAMA,EAAEA,KAAKA,EAAEA,EAAEA,EAACA,CAACA;4BAChEA,OAAOA,IAAIA,CAACA,IAAIA,EAAEA,EAAEA,CAACA;gCACjBA,EAAEA,CAACA,CAACA,WAAWA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;oCAC1BA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,EAAEA,CAACA,CAACA,CAACA;wCAClBA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;wCACpBA,QAAQA,GAAGA,EAAEA,CAACA;oCAClBA,CAACA;oCACDA,IAAIA,CAACA,OAAOA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;oCACzBA,KAAKA,CAACA;gCACVA,CAACA;gCACDA,EAAEA,CAACA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;oCACpBA,QAAQA,CAACA;gCACbA,CAACA;gCACDA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,KAAKA,CAACA,IAAIA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;4BAC7CA,CAACA;wBACLA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,SAASA,KAAKA,WAAWA,CAACA,CAACA,CAACA;4BACxCA,IAAIA,SAASA,GAAGA,WAAWA,CAACA;4BAC5BA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,GAAGA,IAAIA,CAACA,EAAEA,CAACA;4BACrCA,IAAIA,WAAWA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,WAAWA,EAAEA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA;4BAC3DA,OAAOA,WAAWA,KAAKA,CAACA,CAACA,EAAEA,CAACA;gCACxBA,IAAIA,UAAQA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,CAACA,EAAEA,WAAWA,CAACA,CAACA;gCACjDA,IAAIA,KAAGA,GAAGA,KAAKA,CAACA,UAAQA,CAACA,CAACA;gCAC1BA,IAAIA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,IAAIA,CAACA,KAAGA,CAACA,CAACA;gCAC/BA,IAAIA,CAACA,EAAEA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,SAASA,CAACA,WAAWA,GAAGA,SAASA,CAACA,MAAMA,EAAEA,IAAIA,CAACA,EAAEA,CAACA,MAAMA,CAACA,CAACA;gCAC5EA,WAAWA,GAAGA,IAAIA,CAACA,EAAEA,CAACA,WAAWA,EAAEA,CAACA,OAAOA,CAACA,SAASA,CAACA,CAACA;4BAC3DA,CAACA;4BACDA,IAAIA,GAAGA,GAAGA,KAAKA,CAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA;4BACzBA,IAAIA,CAACA,EAAEA,GAAGA,EAAEA,CAACA;4BACbA,IAAIA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA,IAAIA,CAACA,GAAGA,CAACA,CAACA;wBACnCA,CAACA;wBACDA,IAAIA,CAACA,EAAEA,CAACA,CAACA,cAAcA,CAACA,IAAIA,CAACA,KAAKA,CAACA,IAAIA,IAAIA,CAACA,KAAKA,KAAKA,GAAGA,CAACA,CAACA,CAACA;4BACxDA,QAAQA,IAAIA,IAAIA,CAACA,KAAKA,CAACA;wBAC3BA,CAACA;wBAACA,IAAIA,CAACA,EAAEA,CAACA,CAACA,IAAIA,CAACA,KAAKA,KAAKA,GAAGA,CAACA,CAACA,CAACA;4BAC5BA,QAAQA,IAAIA,IAAIA,CAACA,KAAKA,GAAGA,GAAGA,CAACA;wBACjCA,CAACA;wBAACA,IAAIA,CAACA,CAACA;4BACJA,QAAQA,IAAIA,CAACA,QAAQA,KAAKA,EAAEA,IAAIA,WAAWA,CAACA,QAAQA,CAACA,QAAQA,CAACA,MAAMA,GAAGA,CAACA,CAACA,CAACA,CAACA;kCACrEA,IAAIA,CAACA,KAAKA;kCACVA,GAAGA,GAAGA,IAAIA,CAACA,KAAKA,CAACA;wBAC3BA,CAACA;oBACLA,CAACA;oBAEDA,EAAEA,CAACA,CAACA,QAAQA,KAAKA,EAAEA,CAACA,CAACA,CAACA;wBAClBA,IAAIA,CAACA,IAAIA,CAACA,QAAQA,CAACA,CAACA;oBACxBA,CAACA;oBACDA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA;gBACrBA,CAACA;;gBACLb,cAACA;YAADA,CAACA,AA7OD,IA6OC;YA7OD,6BA6OC,CAAA;YAEG,IAAI,GAAG,MAAM,EACb,SAAS,GAAG,oCAAoC,EAChD,IAAI,GAAG,wBAAwB,EAC/B,KAAK,GAAG,MAAM,EACd,UAAU,GAAG,WAAW,EACxB,OAAO,GAAG,0CAA0C,EACpD,QAAQ,GAAG,qBAAqB,EAChC,UAAU,GAAG,4CAA4C,EACzD,WAAW,GAAG,8EAA8E,EAC5F,OAAO,GAAG,4DAA4D;gBAClE,yFAAyF,EAC7F,WAAW,GAAG,qCAAqC,EACnD,MAAM,GAAG,gBAAgB,EACzB,IAAI,GAAG,2CAA2C,EAClD,SAAS,GAAG,gBAAgB,EAC5B,WAAW,GAAG,OAAO,EACrB,OAAO,GAAG,mBAAmB,EAC7B,WAAW,GAAG,eAAe,EAE7B,aAAa,GAAG,8EAA8E;gBAC1F,oFAAoF;gBACpF,8FAA8F;gBAC9F,2FAA2F;gBAC3F,6FAA6F;gBAC7F,uFAAuF;gBACvF,oFAAoF;gBACpF,8EAA8E;gBAC9E,wFAAwF;gBACxF,yFAAyF;gBACzF,uFAAuF;gBACvF,2FAA2F;gBAC3F,0FAA0F;gBAC1F,oFAAoF;gBACpF,+FAA+F;gBAC/F,iGAAiG;gBACjG,sFAAsF;gBACtF,oGAAoG;gBACpG,wFAAwF;gBACxF,wFAAwF;gBACxF,0FAA0F;gBAC1F,+FAA+F;gBAC/F,qFAAqF;gBACrF,2FAA2F;gBAC3F,iFAAiF;gBACjF,kFAAkF;gBAClF,6FAA6F;gBAC7F,gGAAgG;gBAChG,4EAA4E;gBAC5E,6FAA6F;gBAC7F,qEAAqE;gBACrE,4FAA4F;gBAC5F,wFAAwF;gBACxF,iCAAiC,EACrC,UAAU,GAAG,iEAAiE;gBAC1E,sEAAsE;gBACtE,4EAA4E,EAChF,UAAU,GAAG,8FAA8F;gBACvG,4BAA4B;gBAC5B,0FAA0F;gBAC1F,wBAAwB,EAE5B,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,EAC3C,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EACrD,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,EAC3C,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EACrD,eAAe,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,EACzD,eAAe,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,EAAE,GAAG,CAAC,EAC9D,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,EAAE,GAAG,CAAC,EACtD,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,EAAE,GAAG,CAAC,EAC5D,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EACvD,iBAAiB,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,EAC7D,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,EAAE,GAAG,CAAC,EACtD,QAAQ,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAChD,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG,CAAC,EACpD,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAC9E,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,EACnD,eAAe,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,EACzD,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;YAEtD,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK;gBAC/G,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAsEvD,OAAO,GAAG,MAAM,EAChB,OAAO,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.ts deleted file mode 100644 index 6892d3d..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/scanner.ts +++ /dev/null @@ -1,524 +0,0 @@ -import _ from 'lodash'; - -export default class Scanner { - tree: any; - rootToken: any; - token: any; - skipSpace: boolean; - re: any; - expectedNext: boolean; - - _sOriginal: any; - _s: any; - - /** @ngInject */ - constructor(s) { - this._sOriginal = s; - this.token = null; - } - - raw() { - return this._sOriginal; - }; - - expect(token) { - this.expectNext(); - if (!this.isToken(token)) { - throw("expecting [" + token + "], but got [" + this.token + "] at [" + this._s + "]"); - } - }; - - isToken(token) { - return _.toUpper(token) === _.toUpper(this.token); - }; - - expectNext() { - if (!this.next()) { - throw("expecting additional token at the end of query [" + this._sOriginal + "]"); - } - }; - - next() { - while (this._next()) { - if (this.skipSpace && isWS(this.token)) { - // skip whitespace - continue; - } - if (isComment(this.token)) { - // skip comment - continue; - } - return true; - } - return false; - }; - - _next() { - if (this._s.length === 0) { - return false; - } - let r = this.re.exec(this._s); - if (r === null) { - throw("cannot find next token in [" + this._s + "]"); - } - - this.token = r[0]; - this._s = this._s.substring(this.token.length); - return true; - }; - - Format() { - return print(this.toAST()); - }; - - Print(ast) { - return print(ast) - } - - push(argument) { - this.tree[this.rootToken].push(argument); - this.expectedNext = false; - } - - setRoot(token) { - this.rootToken = token.toLowerCase(); - this.tree[this.rootToken] = []; - this.expectedNext = true; - } - - isExpectedNext(): boolean { - let v = this.expectedNext; - this.expectedNext = false; - return v - } - - toAST() { - this._s = this._sOriginal; - this.tree = {}; - this.setRoot('root'); - this.expectedNext = false; - this.skipSpace = true; - this.re = new RegExp("^(?:" + tokenRe + ")", 'i'); - let subQuery = '', - argument = ''; - - while (this.next()) { - if (!this.isExpectedNext() && isStatement(this.token) && !this.tree.hasOwnProperty(_.toLower(this.token))) { - if (!isClosured(argument)) { - argument += this.token; - continue - } - if (argument.length > 0) { - this.push(argument); - argument = ''; - } - this.setRoot(this.token); - } - else if (this.token === ',' && isClosured(argument)) { - this.push(argument); - argument = ''; - this.expectedNext = true; - } - else if (isClosureChars(this.token) && this.rootToken === 'from') { - subQuery = betweenBraces(this._s); - this.tree[this.rootToken] = toAST(subQuery); - this._s = this._s.substring(subQuery.length + 1); - } - else if (isMacroFunc(this.token)) { - let func = this.token; - if (!this.next()) { - throw("wrong function signature for `" + func + "` at [" + this._s + "]"); - } - - subQuery = betweenBraces(this._s); - let subAST = toAST(subQuery); - if (isSet(subAST, 'root')) { - this.tree[func] = subAST['root'].map(function (item) { - return item; - }); - } else { - this.tree[func] = subAST; - } - this._s = this._s.substring(subQuery.length + 1); - - // macro funcs are used instead of SELECT statement - this.tree['select'] = []; - } - else if (isIn(this.token)) { - argument += ' ' + this.token; - if (!this.next()) { - throw("wrong in signature for `" + argument + "` at [" + this._s + "]"); - } - - if (isClosureChars(this.token)) { - subQuery = betweenBraces(this._s); - let subAST = toAST(subQuery); - if (isSet(subAST, 'root')) { - argument += ' (' + subAST['root'].map(function (item) { - return item; - }); - argument = argument + ')'; - } else { - argument += ' (' + newLine + print(subAST, tabSize) + ')'; - this.push(argument); - argument = ''; - } - this._s = this._s.substring(subQuery.length + 1); - } else { - argument += ' ' + this.token; - } - } - else if (isCond(this.token) && (this.rootToken === 'where' || this.rootToken === 'prewhere')) { - if (isClosured(argument)) { - this.push(argument); - argument = this.token; - } else { - argument += ' ' + this.token; - } - } - else if (isJoin(this.token)) { - let joinType = this.token, source; - if (!this.next()) { - throw("wrong join signature for `" + joinType + "` at [" + this._s + "]"); - } - - if (isClosureChars(this.token)) { - subQuery = betweenBraces(this._s); - source = toAST(subQuery); - this._s = this._s.substring(subQuery.length + 1); - } else { - source = [this.token]; - } - - this.expect('using'); - this.tree['join'] = {type: joinType, source: source, using: []}; - while (this.next()) { - if (isStatement(this.token)) { - if (argument !== '') { - this.push(argument); - argument = ''; - } - this.setRoot(this.token); - break; - } - if (!isID(this.token)) { - continue; - } - this.tree['join'].using.push(this.token); - } - } else if (this.rootToken === 'union all') { - let statement = 'union all'; - this._s = this.token + ' ' + this._s; - let subQueryPos = this._s.toLowerCase().indexOf(statement); - while (subQueryPos !== -1) { - let subQuery = this._s.substring(0, subQueryPos); - let ast = toAST(subQuery); - this.tree[statement].push(ast); - this._s = this._s.substring(subQueryPos + statement.length, this._s.length); - subQueryPos = this._s.toLowerCase().indexOf(statement); - } - let ast = toAST(this._s); - this._s = ''; - this.tree[statement].push(ast); - } - else if (isClosureChars(this.token) || this.token === '.') { - argument += this.token; - } else if (this.token === ',') { - argument += this.token + ' '; - } else { - argument += (argument === '' || isSkipSpace(argument[argument.length - 1])) - ? this.token - : ' ' + this.token; - } - } - - if (argument !== '') { - this.push(argument); - } - return this.tree; - }; -} - -let wsRe = "\\s+", - commentRe = "--[^\n]*|/\\*(?:[^*]|\\*[^/])*\\*/", - idRe = "[a-zA-Z_][a-zA-Z_0-9]*", - intRe = "\\d+", - powerIntRe = "\\d+e\\d+", - floatRe = "\\d+\\.\\d*|\\d*\\.\\d+|\\d+[eE][-+]\\d+", - stringRe = "('[^']*')|(`[^`]*`)", - binaryOpRe = "=>|\\|\\||>=|<=|==|!=|<>|->|[-+/%*=<>\\.!]", - statementRe = "(select|from|where|having|order by|group by|limit|format|prewhere|union all)", - joinsRe = "(any inner join|any left join|all inner join|all left join" + - "|global any inner join|global any left join|global all inner join|global all left join)", - macroFuncRe = "(\\$rateColumns|\\$rate|\\$columns)", - condRe = "\\b(or|and)\\b", - inRe = "\\b(global in|global not in|not in|in)\\b", - closureRe = "[\\(\\)\\[\\]]", - specCharsRe = "[,?:]", - macroRe = "\\$[A-Za-z0-9_$]+", - skipSpaceRe = "[\\(\\.! \\[]", - - builtInFuncRe = "\\b(avg|countIf|first|last|max|min|sum|sumIf|ucase|lcase|mid|round|rank|now|" + - "coalesce|ifnull|isnull|nvl|count|timeSlot|yesterday|today|now|toRelativeSecondNum|" + - "toRelativeMinuteNum|toRelativeHourNum|toRelativeDayNum|toRelativeWeekNum|toRelativeMonthNum|" + - "toRelativeYearNum|toTime|toStartOfHour|toStartOfFiveMinute|toStartOfMinute|toStartOfYear|" + - "toStartOfQuarter|toStartOfMonth|toMonday|toSecond|toMinute|toHour|toDayOfWeek|toDayOfMonth|" + - "toMonth|toYear|toFixedString|toStringCutToZero|reinterpretAsString|reinterpretAsDate|" + - "reinterpretAsDateTime|reinterpretAsFloat32|reinterpretAsFloat64|reinterpretAsInt8|" + - "reinterpretAsInt16|reinterpretAsInt32|reinterpretAsInt64|reinterpretAsUInt8|" + - "reinterpretAsUInt16|reinterpretAsUInt32|reinterpretAsUInt64|toUInt8|toUInt16|toUInt32|" + - "toUInt64|toInt8|toInt16|toInt32|toInt64|toFloat32|toFloat64|toDate|toDateTime|toString|" + - "bitAnd|bitOr|bitXor|bitNot|bitShiftLeft|bitShiftRight|abs|negate|modulo|intDivOrZero|" + - "intDiv|divide|multiply|minus|plus|empty|notEmpty|length|lengthUTF8|lower|upper|lowerUTF8|" + - "upperUTF8|reverse|reverseUTF8|concat|substring|substringUTF8|appendTrailingCharIfAbsent|" + - "position|positionUTF8|match|extract|extractAll|like|notLike|replaceOne|replaceAll|" + - "replaceRegexpOne|range|arrayElement|has|indexOf|countEqual|arrayEnumerate|arrayEnumerateUniq|" + - "arrayJoin|arrayMap|arrayFilter|arrayExists|arrayCount|arrayAll|arrayFirst|arraySum|splitByChar|" + - "splitByString|alphaTokens|domainWithoutWWW|topLevelDomain|firstSignificantSubdomain|" + - "cutToFirstSignificantSubdomain|queryString|URLPathHierarchy|URLHierarchy|extractURLParameterNames|" + - "extractURLParameters|extractURLParameter|queryStringAndFragment|cutWWW|cutQueryString|" + - "cutFragment|cutQueryStringAndFragment|cutURLParameter|IPv4NumToString|IPv4StringToNum|" + - "IPv4NumToStringClassC|IPv6NumToString|IPv6StringToNum|rand|rand64|halfMD5|MD5|sipHash64|" + - "sipHash128|cityHash64|intHash32|intHash64|SHA1|SHA224|SHA256|URLHash|hex|unhex|bitmaskToList|" + - "bitmaskToArray|floor|ceil|round|roundToExp2|roundDuration|roundAge|regionToCountry|" + - "regionToContinent|regionToPopulation|regionIn|regionHierarchy|regionToName|OSToRoot|OSIn|" + - "OSHierarchy|SEToRoot|SEIn|SEHierarchy|dictGetUInt8|dictGetUInt16|dictGetUInt32|" + - "dictGetUInt64|dictGetInt8|dictGetInt16|dictGetInt32|dictGetInt64|dictGetFloat32|" + - "dictGetFloat64|dictGetDate|dictGetDateTime|dictGetString|dictGetHierarchy|dictHas|dictIsIn|" + - "argMin|argMax|uniqCombined|uniqHLL12|uniqExact|uniqExactIf|groupArray|groupUniqArray|quantile|" + - "quantileDeterministic|quantileTiming|quantileTimingWeighted|quantileExact|" + - "quantileExactWeighted|quantileTDigest|median|quantiles|varSamp|varPop|stddevSamp|stddevPop|" + - "covarSamp|covarPop|corr|sequenceMatch|sequenceCount|uniqUpTo|avgIf|" + - "quantilesTimingIf|argMinIf|uniqArray|sumArray|quantilesTimingArrayIf|uniqArrayIf|medianIf|" + - "quantilesIf|varSampIf|varPopIf|stddevSampIf|stddevPopIf|covarSampIf|covarPopIf|corrIf|" + - "uniqArrayIf|sumArrayIf|uniq)\\b", - operatorRe = "\\b(select|group by|order by|from|where|limit|offset|having|as|" + - "when|else|end|type|left|right|on|outer|desc|asc|primary|key|between|" + - "foreign|not|null|inner|cross|natural|database|prewhere|using|global|in)\\b", - dataTypeRe = "\\b(int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + - "money|real|number|integer|" + - "uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|datetime|enum8|enum16|" + - "array|tuple|string)\\b", - - wsOnlyRe = new RegExp("^(?:" + wsRe + ")$"), - commentOnlyRe = new RegExp("^(?:" + commentRe + ")$"), - idOnlyRe = new RegExp("^(?:" + idRe + ")$"), - closureOnlyRe = new RegExp("^(?:" + closureRe + ")$"), - macroFuncOnlyRe = new RegExp("^(?:" + macroFuncRe + ")$"), - statementOnlyRe = new RegExp("^(?:" + statementRe + ")$", 'i'), - joinsOnlyRe = new RegExp("^(?:" + joinsRe + ")$", 'i'), - operatorOnlyRe = new RegExp("^(?:" + operatorRe + ")$", 'i'), - dataTypeOnlyRe = new RegExp("^(?:" + dataTypeRe + ")$"), - builtInFuncOnlyRe = new RegExp("^(?:" + builtInFuncRe + ")$"), - macroOnlyRe = new RegExp("^(?:" + macroRe + ")$", 'i'), - inOnlyRe = new RegExp("^(?:" + inRe + ")$", 'i'), - condOnlyRe = new RegExp("^(?:" + condRe + ")$", 'i'), - numOnlyRe = new RegExp("^(?:" + [powerIntRe, intRe, floatRe].join("|") + ")$"), - stringOnlyRe = new RegExp("^(?:" + stringRe + ")$"), - skipSpaceOnlyRe = new RegExp("^(?:" + skipSpaceRe + ")$"), - binaryOnlyRe = new RegExp("^(?:" + binaryOpRe + ")$"); - -var tokenRe = [statementRe, macroFuncRe, joinsRe, inRe, wsRe, commentRe, idRe, stringRe, powerIntRe, floatRe, intRe, - binaryOpRe, closureRe, specCharsRe, macroRe].join("|"); - -function isSkipSpace(token) { - return skipSpaceOnlyRe.test(token); -} - -function isCond(token) { - return condOnlyRe.test(token); -} - -function isIn(token) { - return inOnlyRe.test(token); -} - -function isJoin(token) { - return joinsOnlyRe.test(token); -} - -function isWS(token) { - return wsOnlyRe.test(token); -} - -function isMacroFunc(token) { - return macroFuncOnlyRe.test(token); -} - -function isMacro(token) { - return macroOnlyRe.test(token); -} - -function isComment(token) { - return commentOnlyRe.test(token); -} - -function isID(token) { - return idOnlyRe.test(token); -} - -function isStatement(token) { - return statementOnlyRe.test(token); -} - -function isOperator(token) { - return operatorOnlyRe.test(token); -} - -function isDataType(token) { - return dataTypeOnlyRe.test(token); -} - -function isBuiltInFunc(token) { - return builtInFuncOnlyRe.test(token); -} - -function isClosureChars(token) { - return closureOnlyRe.test(token); -} - -function isNum(token) { - return numOnlyRe.test(token); -} - -function isString(token) { - return stringOnlyRe.test(token); -} - -function isBinary(token) { - return binaryOnlyRe.test(token); -} - -var tabSize = ' ', // 4 spaces - newLine = '\n'; - -function printItems(items, tab = '', separator = '') { - var result = ''; - if (_.isArray(items)) { - if (items.length === 1) { - result += ' ' + items[0]; - } else { - result += newLine; - items.forEach(function (item, i) { - result += tab + tabSize + item; - if (i !== items.length - 1) { - result += separator; - result += newLine; - } - }); - } - } else { - result = newLine + '(' + newLine + print(items, tab + tabSize) + newLine + ')'; - } - - return result; -} - -function toAST(s) { - var scanner = new Scanner(s); - return scanner.toAST(); -} - -function isSet(obj, prop) { - return obj.hasOwnProperty(prop) && !_.isEmpty(obj[prop]); -} - -function isClosured(argument) { - return (argument.match(/\(/g) || []).length === (argument.match(/\)/g) || []).length; -} - -function betweenBraces(query) { - var openBraces = 1, subQuery = ''; - for (var i = 0; i < query.length; i++) { - if (query.charAt(i) === '(') { - openBraces++; - } - if (query.charAt(i) === ')') { - if (openBraces === 1) { - subQuery = query.substring(0, i); - break; - } - openBraces--; - } - } - return subQuery; -} - -// see https://clickhouse.yandex/reference_ru.html#SELECT -function print(AST, tab = '') { - var result = ''; - if (isSet(AST, '$rate')) { - result += tab + '$rate('; - result += printItems(AST.$rate, tab, ',') + ')'; - } - - if (isSet(AST, '$columns')) { - result += tab + '$columns('; - result += printItems(AST.$columns, tab, ',') + ')'; - } - - if (isSet(AST, '$rateColumns')) { - result += tab + '$rateColumns('; - result += printItems(AST.$rateColumns, tab, ',') + ')'; - } - - if (isSet(AST, 'select')) { - result += tab + 'SELECT'; - result += printItems(AST.select, tab, ','); - } - - if (isSet(AST, 'from')) { - result += newLine + tab + 'FROM'; - result += printItems(AST.from, tab); - } - - if (isSet(AST, 'join')) { - result += tab + newLine + AST.join.type.toUpperCase() + - printItems(AST.join.source, tab) + - ' USING ' + printItems(AST.join.using, tab, ','); - } - - if (isSet(AST, 'prewhere')) { - result += newLine + tab + 'PREWHERE'; - result += printItems(AST.prewhere, tab); - } - - if (isSet(AST, 'where')) { - result += newLine + tab + 'WHERE'; - result += printItems(AST.where, tab); - } - - if (isSet(AST, 'group by')) { - result += newLine + tab + 'GROUP BY'; - result += printItems(AST['group by'], tab, ','); - } - - if (isSet(AST, 'having')) { - result += newLine + tab + 'HAVING'; - result += printItems(AST.having, tab); - } - - if (isSet(AST, 'order by')) { - result += newLine + tab + 'ORDER BY'; - result += printItems(AST['order by'], tab, ','); - } - - if (isSet(AST, 'limit')) { - result += newLine + tab + 'LIMIT'; - result += printItems(AST.limit, tab, ','); - } - - if (isSet(AST, 'union all')) { - AST['union all'].forEach(function (v) { - result += newLine + newLine + tab + 'UNION ALL' + newLine + newLine; - result += print(v, tab) - }) - } - - if (isSet(AST, 'format')) { - result += newLine + tab + 'FORMAT'; - result += printItems(AST.format, tab); - } - - return result; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js deleted file mode 100644 index 84317d6..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; - -System.register([], function (_export, _context) { - "use strict"; - - return { - setters: [], - execute: function () { - // jshint ignore: start - // jscs: disable - ace.define("ace/snippets/clickhouse", ["require", "exports", "module"], function (require, exports, module) { - "use strict"; - - exports.snippets = []; - - exports.scope = "clickhouse"; - }); - } - }; -}); -//# sourceMappingURL=clickhouse.js.map diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js.map deleted file mode 100644 index 1a0ab1e..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/snippets/clickhouse.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/snippets/clickhouse.js"],"names":["ace","define","require","exports","module","snippets","scope"],"mappings":";;;;;;;;AAAA;AACA;AACAA,gBAAIC,MAAJ,CAAW,yBAAX,EAAqC,CAAC,SAAD,EAAW,SAAX,EAAqB,QAArB,CAArC,EAAqE,UAASC,OAAT,EAAkBC,OAAlB,EAA2BC,MAA3B,EAAmC;AACpG;;AAEAD,wBAAQE,QAAR,GAAmB,EAAnB;;AAGAF,wBAAQG,KAAR,GAAgB,YAAhB;AACH,aAPD","file":"clickhouse.js","sourcesContent":["// jshint ignore: start\r\n// jscs: disable\r\nace.define(\"ace/snippets/clickhouse\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\r\n \"use strict\";\r\n\r\n exports.snippets = [\r\n ];\r\n\r\n exports.scope = \"clickhouse\";\r\n});"]} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.d.ts deleted file mode 100644 index c36cfb6..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/// -export default class SqlQuery { - target: any; - templateSrv: any; - options: any; - /** @ngInject */ - constructor(target: any, templateSrv?: any, options?: any); - replace(options: any, adhocFilters: any): any; - static columns(query: string): string; - static _columns(key: string, value: string, fromQuery: string): string; - static rateColumns(query: string): string; - static rate(query: string, ast: any): string; - static _fromIndex(query: string): number; - static _rate(args: any, fromQuery: string): string; - static _applyTimeFilter(query: string): string; - static getTimeSeries(dateTimeType: string): string; - static getTimeFilter(isToNow: boolean, dateTimeType: string): string; - static convertTimestamp(date: any, dateTimeType: string): number; - static round(date: any, round: string): any; - static convertInterval(interval: any, intervalFactor: any, dateTimeType: string): number; - static interpolateQueryExpr(value: any, variable: any, defaultFormatFn: any): any; - static clickhouseOperator(value: any): any; - static clickhouseEscape(value: any, variable: any): any; - static unescape(query: any): any; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js deleted file mode 100644 index 17c74e4..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js +++ /dev/null @@ -1,332 +0,0 @@ -/// -System.register(['lodash', 'app/core/utils/datemath', 'moment', './scanner'], function(exports_1) { - var lodash_1, dateMath, moment_1, scanner_1; - var durationSplitRegexp, SqlQuery; - return { - setters:[ - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }, - function (dateMath_1) { - dateMath = dateMath_1; - }, - function (moment_1_1) { - moment_1 = moment_1_1; - }, - function (scanner_1_1) { - scanner_1 = scanner_1_1; - }], - execute: function() { - durationSplitRegexp = /(\d+)(ms|s|m|h|d|w|M|y)/; - SqlQuery = (function () { - /** @ngInject */ - function SqlQuery(target, templateSrv, options) { - this.target = target; - this.templateSrv = templateSrv; - this.options = options; - } - SqlQuery.prototype.replace = function (options, adhocFilters) { - var self = this, query = this.target.query, scanner = new scanner_1.default(query), dateTimeType = this.target.dateTimeType ? this.target.dateTimeType : 'DATETIME', from = SqlQuery.convertTimestamp(SqlQuery.round(this.options.range.from, this.target.round), dateTimeType), to = SqlQuery.convertTimestamp(SqlQuery.round(this.options.range.to, this.target.round), dateTimeType), timeSeries = SqlQuery.getTimeSeries(dateTimeType), timeFilter = SqlQuery.getTimeFilter(this.options.rangeRaw.to === 'now', dateTimeType), i = this.templateSrv.replace(this.target.interval, options.scopedVars) || options.interval, interval = SqlQuery.convertInterval(i, this.target.intervalFactor || 1, dateTimeType); - try { - var ast = scanner.toAST(); - if (adhocFilters.length > 0) { - if (!ast.hasOwnProperty('where')) { - ast.where = []; - } - adhocFilters.forEach(function (af) { - var parts = af.key.split('.'); - if (parts.length < 3) { - console.log("adhoc filters: filter " + af.key + "` has wrong format"); - return; - } - if (self.target.database != parts[0] || self.target.table != parts[1]) { - return; - } - var operator = SqlQuery.clickhouseOperator(af.operator); - var cond = parts[2] + " " + operator + " " + af.value; - if (ast.where.length > 0) { - // OR is not implemented - // @see https://github.com/grafana/grafana/issues/10918 - cond = "AND " + cond; - } - ast.where.push(cond); - }); - } - query = scanner.Print(ast); - if (ast.hasOwnProperty('$columns') && !lodash_1.default.isEmpty(ast['$columns'])) { - query = SqlQuery.columns(query); - } - else if (ast.hasOwnProperty('$rateColumns') && !lodash_1.default.isEmpty(ast['$rateColumns'])) { - query = SqlQuery.rateColumns(query); - } - else if (ast.hasOwnProperty('$rate') && !lodash_1.default.isEmpty(ast['$rate'])) { - query = SqlQuery.rate(query, ast); - } - } - catch (err) { - console.log('AST parser error: ', err.message); - } - query = this.templateSrv.replace(query, options.scopedVars, SqlQuery.interpolateQueryExpr); - query = SqlQuery.unescape(query); - this.target.rawQuery = query - .replace(/\$timeSeries/g, timeSeries) - .replace(/\$timeFilter/g, timeFilter) - .replace(/\$table/g, this.target.database + '.' + this.target.table) - .replace(/\$from/g, from) - .replace(/\$to/g, to) - .replace(/\$dateCol/g, this.target.dateColDataType) - .replace(/\$dateTimeCol/g, this.target.dateTimeColDataType) - .replace(/\$interval/g, interval) - .replace(/(?:\r\n|\r|\n)/g, ' '); - return this.target.rawQuery; - }; - // $columns(query) - SqlQuery.columns = function (query) { - if (query.slice(0, 9) === '$columns(') { - var fromIndex = SqlQuery._fromIndex(query); - var args = query.slice(9, fromIndex) - .trim() // rm spaces - .slice(0, -1), // cut ending brace - scanner = new scanner_1.default(args), ast = scanner.toAST(); - var root = ast['root']; - if (root.length !== 2) { - throw { message: 'Amount of arguments must equal 2 for $columns func. Parsed arguments are: ' + root.join(', ') }; - } - query = SqlQuery._columns(root[0], root[1], query.slice(fromIndex)); - } - return query; - }; - SqlQuery._columns = function (key, value, fromQuery) { - if (key.slice(-1) === ')' || value.slice(-1) === ')') { - throw { message: 'Some of passed arguments are without aliases: ' + key + ', ' + value }; - } - var keyAlias = key.trim().split(' ').pop(), valueAlias = value.trim().split(' ').pop(), havingIndex = fromQuery.toLowerCase().indexOf('having'), having = "", aliasRegex = /%(\w+)/g, concatExpr = ""; - if (key.match(/^'.*'$/) && key.match(aliasRegex)) { - concatExpr = 'concat(' + key.replace(aliasRegex, "', $1, '").replace(/, ''/g, '') + ')'; - key = keyAlias = lodash_1.default.uniq(key.match(aliasRegex).map(function (k) { return k.slice(1); })).join(', '); - } - if (havingIndex !== -1) { - having = fromQuery.slice(havingIndex, fromQuery.length); - fromQuery = fromQuery.slice(0, havingIndex); - } - fromQuery = SqlQuery._applyTimeFilter(fromQuery); - return 'SELECT ' + - 't' + - ', groupArray((' + (concatExpr || keyAlias) + ', ' + valueAlias + ')) as groupArr' + - ' FROM (' + - ' SELECT $timeSeries as t' + - ', ' + key + - ', ' + value + ' ' + - fromQuery + - ' GROUP BY t, ' + keyAlias + - ' ' + having + - ' ORDER BY t, ' + keyAlias + - ') ' + - 'GROUP BY t ' + - 'ORDER BY t'; - }; - // $rateColumns(query) - SqlQuery.rateColumns = function (query) { - if (query.slice(0, 13) === '$rateColumns(') { - var fromIndex = SqlQuery._fromIndex(query); - var args = query.slice(13, fromIndex) - .trim() // rm spaces - .slice(0, -1), // cut ending brace - scanner = new scanner_1.default(args), ast = scanner.toAST(); - var root = ast['root']; - if (root.length !== 2) { - throw { message: 'Amount of arguments must equal 2 for $columns func. Parsed arguments are: ' + root.join(', ') }; - } - query = SqlQuery._columns(root[0], root[1], query.slice(fromIndex)); - query = 'SELECT t' + - ', arrayMap(a -> (a.1, a.2/runningDifference( t/1000 )), groupArr)' + - ' FROM (' + - query + - ')'; - } - return query; - }; - // $rate(query) - SqlQuery.rate = function (query, ast) { - if (query.slice(0, 6) === '$rate(') { - var fromIndex = SqlQuery._fromIndex(query); - if (ast.$rate.length < 1) { - throw { message: 'Amount of arguments must be > 0 for $rate func. Parsed arguments are: ' + ast.$rate.join(', ') }; - } - query = SqlQuery._rate(ast['$rate'], query.slice(fromIndex)); - } - return query; - }; - SqlQuery._fromIndex = function (query) { - var fromIndex = query.toLowerCase().indexOf('from'); - if (fromIndex === -1) { - throw { message: 'Could not find FROM-statement at: ' + query }; - } - return fromIndex; - }; - SqlQuery._rate = function (args, fromQuery) { - var aliases = []; - lodash_1.default.each(args, function (arg) { - if (arg.slice(-1) === ')') { - throw { message: 'Argument "' + arg + '" cant be used without alias' }; - } - aliases.push(arg.trim().split(' ').pop()); - }); - var rateColums = []; - lodash_1.default.each(aliases, function (a) { - rateColums.push(a + '/runningDifference(t/1000) ' + a + 'Rate'); - }); - fromQuery = SqlQuery._applyTimeFilter(fromQuery); - return 'SELECT ' + '' + - 't' + - ', ' + rateColums.join(',') + - ' FROM (' + - ' SELECT $timeSeries as t' + - ', ' + args.join(',') + - ' ' + fromQuery + - ' GROUP BY t' + - ' ORDER BY t' + - ')'; - }; - SqlQuery._applyTimeFilter = function (query) { - if (query.toLowerCase().indexOf('where') !== -1) { - query = query.replace(/where/i, 'WHERE $timeFilter AND '); - } - else { - query += ' WHERE $timeFilter'; - } - return query; - }; - SqlQuery.getTimeSeries = function (dateTimeType) { - if (dateTimeType === 'DATETIME') { - return '(intDiv(toUInt32($dateTimeCol), $interval) * $interval) * 1000'; - } - if (dateTimeType === 'TIMESTAMPMS') { - return 'intDiv($dateTimeCol, $interval) * $interval'; - } - return '(intDiv($dateTimeCol, $interval) * $interval) * 1000'; - }; - SqlQuery.getTimeFilter = function (isToNow, dateTimeType) { - var dateCol = function (t) { - if (dateTimeType === 'TIMESTAMPMS') { - t = t + '/1000'; - } - return 'toDate(' + t + ')'; - }; - var dateTimeCol = function (t) { - if (dateTimeType === 'DATETIME') { - return 'toDateTime(' + t + ')'; - } - return t; - }; - if (isToNow) { - return '$dateCol >= ' + dateCol('$from') + ' AND $dateTimeCol >= ' + dateTimeCol('$from'); - } - return '$dateCol BETWEEN ' + dateCol('$from') + ' AND ' + dateCol('$to') + ' AND $dateTimeCol BETWEEN ' + dateTimeCol('$from') + ' AND ' + dateTimeCol('$to'); - }; - // date is a moment object - SqlQuery.convertTimestamp = function (date, dateTimeType) { - //return date.format("'Y-MM-DD HH:mm:ss'") - if (lodash_1.default.isString(date)) { - date = dateMath.parse(date, true); - } - return Math.floor(dateTimeType === 'TIMESTAMPMS' ? date.valueOf() : date.valueOf() / 1000); - }; - SqlQuery.round = function (date, round) { - if (round === "" || round === undefined || round === "0s") { - return date; - } - if (lodash_1.default.isString(date)) { - date = dateMath.parse(date, true); - } - var coeff = SqlQuery.convertInterval(round, 1, 'TIMESTAMPMS'); - var rounded = Math.floor(date.valueOf() / coeff) * coeff; - return moment_1.default(rounded); - }; - SqlQuery.convertInterval = function (interval, intervalFactor, dateTimeType) { - var m = interval.match(durationSplitRegexp); - if (m === null) { - throw { message: 'Received duration is invalid: ' + interval }; - } - var dur = moment_1.default.duration(parseInt(m[1]), m[2]); - var sec = dur.asSeconds(); - if (dateTimeType === 'TIMESTAMPMS') { - return Math.ceil((sec * 1000 || 1) * intervalFactor); - } - if (sec < 1) { - sec = 1; - } - return Math.ceil(sec * intervalFactor); - }; - SqlQuery.interpolateQueryExpr = function (value, variable, defaultFormatFn) { - // if no `multiselect` or `include all` - do not escape - if (!variable.multi && !variable.includeAll) { - return value; - } - if (typeof value === 'string') { - return SqlQuery.clickhouseEscape(value, variable); - } - var escapedValues = lodash_1.default.map(value, function (v) { - return SqlQuery.clickhouseEscape(v, variable); - }); - return escapedValues.join(','); - }; - SqlQuery.clickhouseOperator = function (value) { - switch (value) { - case "=": - case "!=": - case ">": - case "<": - return value; - case "=~": - return "LIKE"; - case "!~": - return "NOT LIKE"; - default: - console.log("adhoc filters: got unsupported operator `" + value + "`"); - return value; - } - }; - SqlQuery.clickhouseEscape = function (value, variable) { - var isDigit = true; - // if at least one of options is not digit - lodash_1.default.each(variable.options, function (opt) { - if (opt.value === '$__all') { - return true; - } - if (!opt.value.match(/^\d+$/)) { - isDigit = false; - return false; - } - return true; - }); - if (isDigit) { - return value; - } - else { - return "'" + value.replace(/[\\']/g, '\\$&') + "'"; - } - }; - SqlQuery.unescape = function (query) { - var macros = '$unescape('; - var openMacros = query.indexOf(macros); - while (openMacros !== -1) { - var closeMacros = query.indexOf(')', openMacros); - if (closeMacros === -1) { - throw { message: 'unable to find closing brace for $unescape macros: ' + query.substring(0, openMacros) }; - } - var arg = query.substring(openMacros + macros.length, closeMacros) - .trim(); - arg = arg.replace(/[']+/g, ''); - query = query.substring(0, openMacros) + arg + query.substring(closeMacros + 1, query.length); - openMacros = query.indexOf('$unescape('); - } - return query; - }; - return SqlQuery; - })(); - exports_1("default", SqlQuery); - } - } -}); -//# sourceMappingURL=sql_query.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js.map deleted file mode 100644 index 17419ae..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sql_query.js","sourceRoot":"","sources":["sql_query.ts"],"names":["SqlQuery","SqlQuery.constructor","SqlQuery.replace","SqlQuery.columns","SqlQuery._columns","SqlQuery.rateColumns","SqlQuery.rate","SqlQuery._fromIndex","SqlQuery._rate","SqlQuery._applyTimeFilter","SqlQuery.getTimeSeries","SqlQuery.getTimeFilter","SqlQuery.convertTimestamp","SqlQuery.round","SqlQuery.convertInterval","SqlQuery.interpolateQueryExpr","SqlQuery.clickhouseOperator","SqlQuery.clickhouseEscape","SqlQuery.unescape"],"mappings":"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"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.ts deleted file mode 100644 index 5867d4a..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_query.ts +++ /dev/null @@ -1,377 +0,0 @@ -/// - -import _ from 'lodash'; -import * as dateMath from 'app/core/utils/datemath'; -import moment from 'moment'; -import Scanner from './scanner'; - -var durationSplitRegexp = /(\d+)(ms|s|m|h|d|w|M|y)/; - -export default class SqlQuery { - target: any; - templateSrv: any; - options: any; - - /** @ngInject */ - constructor(target, templateSrv?, options?) { - this.target = target; - this.templateSrv = templateSrv; - this.options = options; - } - - replace(options, adhocFilters) { - var self = this, - query = this.target.query, - scanner = new Scanner(query), - dateTimeType = this.target.dateTimeType ? this.target.dateTimeType : 'DATETIME', - from = SqlQuery.convertTimestamp(SqlQuery.round(this.options.range.from, this.target.round), dateTimeType), - to = SqlQuery.convertTimestamp(SqlQuery.round(this.options.range.to, this.target.round), dateTimeType), - timeSeries = SqlQuery.getTimeSeries(dateTimeType), - timeFilter = SqlQuery.getTimeFilter(this.options.rangeRaw.to === 'now', dateTimeType), - i = this.templateSrv.replace(this.target.interval, options.scopedVars) || options.interval, - interval = SqlQuery.convertInterval(i, this.target.intervalFactor || 1, dateTimeType); - try { - let ast = scanner.toAST(); - if (adhocFilters.length > 0) { - if (!ast.hasOwnProperty('where')) { - ast.where = []; - } - adhocFilters.forEach(function(af) { - let parts = af.key.split('.'); - if (parts.length < 3) { - console.log("adhoc filters: filter " + af.key + "` has wrong format"); - return - } - if (self.target.database != parts[0] || self.target.table != parts[1]) { - return - } - let operator = SqlQuery.clickhouseOperator(af.operator); - let cond = parts[2] + " " + operator + " " + af.value; - if (ast.where.length > 0) { - // OR is not implemented - // @see https://github.com/grafana/grafana/issues/10918 - cond = "AND " + cond - } - ast.where.push(cond) - }); - } - query = scanner.Print(ast); - if (ast.hasOwnProperty('$columns') && !_.isEmpty(ast['$columns'])) { - query = SqlQuery.columns(query); - } else if (ast.hasOwnProperty('$rateColumns') && !_.isEmpty(ast['$rateColumns'])) { - query = SqlQuery.rateColumns(query); - } else if (ast.hasOwnProperty('$rate') && !_.isEmpty(ast['$rate'])) { - query = SqlQuery.rate(query, ast); - } - } catch (err) { - console.log('AST parser error: ', err.message) - } - - query = this.templateSrv.replace(query, options.scopedVars, SqlQuery.interpolateQueryExpr); - query = SqlQuery.unescape(query); - this.target.rawQuery = query - .replace(/\$timeSeries/g, timeSeries) - .replace(/\$timeFilter/g, timeFilter) - .replace(/\$table/g, this.target.database + '.' + this.target.table) - .replace(/\$from/g, from) - .replace(/\$to/g, to) - .replace(/\$dateCol/g, this.target.dateColDataType) - .replace(/\$dateTimeCol/g, this.target.dateTimeColDataType) - .replace(/\$interval/g, interval) - .replace(/(?:\r\n|\r|\n)/g, ' '); - return this.target.rawQuery; - } - - // $columns(query) - static columns(query: string): string { - if (query.slice(0, 9) === '$columns(') { - var fromIndex = SqlQuery._fromIndex(query); - var args = query.slice(9,fromIndex) - .trim() // rm spaces - .slice(0, -1), // cut ending brace - scanner = new Scanner(args), - ast = scanner.toAST(); - var root = ast['root']; - - if (root.length !== 2) { - throw {message: 'Amount of arguments must equal 2 for $columns func. Parsed arguments are: ' + root.join(', ')}; - } - - query = SqlQuery._columns(root[0], root[1], query.slice(fromIndex)); - } - - return query; - } - - static _columns(key: string, value: string, fromQuery: string): string { - if (key.slice(-1) === ')' || value.slice(-1) === ')') { - throw {message: 'Some of passed arguments are without aliases: ' + key + ', ' + value}; - } - - var keyAlias = key.trim().split(' ').pop(), - valueAlias = value.trim().split(' ').pop(), - havingIndex = fromQuery.toLowerCase().indexOf('having'), - having = "", - aliasRegex = /%(\w+)/g, - concatExpr = ""; - - if (key.match(/^'.*'$/) && key.match(aliasRegex)) { - concatExpr = 'concat(' + key.replace(aliasRegex, "', $1, '").replace(/, ''/g, '') + ')'; - key = keyAlias = _.uniq(key.match(aliasRegex).map(k => k.slice(1))).join(', '); - } - - if (havingIndex !== -1) { - having = fromQuery.slice(havingIndex, fromQuery.length); - fromQuery = fromQuery.slice(0, havingIndex); - } - fromQuery = SqlQuery._applyTimeFilter(fromQuery); - - return 'SELECT ' + - 't' + - ', groupArray((' + (concatExpr || keyAlias) + ', ' + valueAlias + ')) as groupArr' + - ' FROM (' + - ' SELECT $timeSeries as t' + - ', ' + key + - ', ' + value + ' ' + - fromQuery + - ' GROUP BY t, ' + keyAlias + - ' ' + having + - ' ORDER BY t, ' + keyAlias + - ') ' + - 'GROUP BY t ' + - 'ORDER BY t'; - } - - // $rateColumns(query) - static rateColumns(query: string): string { - if (query.slice(0, 13) === '$rateColumns(') { - var fromIndex = SqlQuery._fromIndex(query); - var args = query.slice(13,fromIndex) - .trim() // rm spaces - .slice(0, -1), // cut ending brace - scanner = new Scanner(args), - ast = scanner.toAST(); - var root = ast['root']; - - if (root.length !== 2) { - throw {message: 'Amount of arguments must equal 2 for $columns func. Parsed arguments are: ' + root.join(', ')}; - } - - query = SqlQuery._columns(root[0], root[1], query.slice(fromIndex)); - query = 'SELECT t' + - ', arrayMap(a -> (a.1, a.2/runningDifference( t/1000 )), groupArr)' + - ' FROM (' + - query + - ')'; - } - - return query; - } - - // $rate(query) - static rate(query: string, ast: any): string { - if (query.slice(0, 6) === '$rate(') { - var fromIndex = SqlQuery._fromIndex(query); - if (ast.$rate.length < 1) { - throw {message: 'Amount of arguments must be > 0 for $rate func. Parsed arguments are: ' + ast.$rate.join(', ')}; - } - - query = SqlQuery._rate(ast['$rate'], query.slice(fromIndex)); - } - - return query; - } - - static _fromIndex(query: string): number { - var fromIndex = query.toLowerCase().indexOf('from'); - if (fromIndex === -1) { - throw {message: 'Could not find FROM-statement at: ' + query}; - } - return fromIndex; - } - - static _rate(args, fromQuery: string): string { - var aliases = []; - _.each(args, function(arg){ - if (arg.slice(-1) === ')') { - throw {message: 'Argument "' + arg + '" cant be used without alias'}; - } - aliases.push(arg.trim().split(' ').pop()); - }); - - var rateColums = []; - _.each(aliases, function(a){ - rateColums.push(a + '/runningDifference(t/1000) ' + a + 'Rate'); - }); - - fromQuery = SqlQuery._applyTimeFilter(fromQuery); - return 'SELECT ' + '' + - 't' + - ', ' + rateColums.join(',') + - ' FROM (' + - ' SELECT $timeSeries as t' + - ', ' + args.join(',') + - ' ' + fromQuery + - ' GROUP BY t' + - ' ORDER BY t' + - ')'; - } - - static _applyTimeFilter(query: string): string { - if ( query.toLowerCase().indexOf('where') !== -1 ) { - query = query.replace(/where/i, 'WHERE $timeFilter AND '); - } else { - query += ' WHERE $timeFilter'; - } - - return query; - } - - static getTimeSeries(dateTimeType: string): string { - if (dateTimeType === 'DATETIME') { - return '(intDiv(toUInt32($dateTimeCol), $interval) * $interval) * 1000'; - } - - if (dateTimeType === 'TIMESTAMPMS') { - return 'intDiv($dateTimeCol, $interval) * $interval'; - } - - return '(intDiv($dateTimeCol, $interval) * $interval) * 1000' - } - - static getTimeFilter(isToNow: boolean, dateTimeType: string): string { - var dateCol = function (t: string): string { - if (dateTimeType === 'TIMESTAMPMS') { - t = t + '/1000'; - } - - return 'toDate(' + t + ')'; - }; - - var dateTimeCol = function (t: string): string { - if (dateTimeType === 'DATETIME') { - return 'toDateTime('+ t +')'; - } - return t - }; - - if (isToNow) { - return '$dateCol >= ' + dateCol('$from') + ' AND $dateTimeCol >= ' + dateTimeCol('$from'); - } - - return '$dateCol BETWEEN ' + dateCol('$from') + ' AND ' + dateCol('$to') + ' AND $dateTimeCol BETWEEN ' + dateTimeCol('$from') + ' AND ' + dateTimeCol('$to'); - } - - // date is a moment object - static convertTimestamp(date: any, dateTimeType: string) { - //return date.format("'Y-MM-DD HH:mm:ss'") - if (_.isString(date)) { - date = dateMath.parse(date, true); - } - - return Math.floor(dateTimeType === 'TIMESTAMPMS' ? date.valueOf() : date.valueOf() / 1000); - } - - static round(date: any, round: string): any { - if (round === "" || round === undefined || round === "0s" ) { - return date; - } - - if (_.isString(date)) { - date = dateMath.parse(date, true); - } - - let coeff = SqlQuery.convertInterval(round, 1, 'TIMESTAMPMS'); - let rounded = Math.floor(date.valueOf() / coeff) * coeff; - return moment(rounded); - } - - static convertInterval(interval, intervalFactor, dateTimeType: string) { - var m = interval.match(durationSplitRegexp); - if (m === null) { - throw {message: 'Received duration is invalid: ' + interval}; - } - - var dur = moment.duration(parseInt(m[1]), m[2]); - var sec = dur.asSeconds(); - - if (dateTimeType === 'TIMESTAMPMS') { - return Math.ceil((sec * 1000 || 1) * intervalFactor); - } - - if (sec < 1) { - sec = 1; - } - - return Math.ceil(sec * intervalFactor); - } - - static interpolateQueryExpr (value, variable, defaultFormatFn) { - // if no `multiselect` or `include all` - do not escape - if (!variable.multi && !variable.includeAll) { - return value; - } - if (typeof value === 'string') { - return SqlQuery.clickhouseEscape(value, variable); - } - let escapedValues = _.map(value, function(v){ - return SqlQuery.clickhouseEscape(v, variable); - }); - return escapedValues.join(','); - } - - static clickhouseOperator(value) { - switch (value){ - case "=": - case "!=": - case ">": - case "<": - return value; - case "=~": - return "LIKE"; - case "!~": - return "NOT LIKE"; - default: - console.log("adhoc filters: got unsupported operator `" + value + "`"); - return value - } - } - - static clickhouseEscape(value, variable) { - var isDigit = true; - // if at least one of options is not digit - _.each(variable.options, function(opt): boolean{ - if (opt.value === '$__all') { - return true; - } - if (!opt.value.match(/^\d+$/)) { - isDigit = false; - return false; - } - return true - }); - - if (isDigit) { - return value; - } else { - return "'" + value.replace(/[\\']/g, '\\$&') + "'"; - } - } - - static unescape(query) { - let macros = '$unescape('; - let openMacros = query.indexOf(macros); - while (openMacros !== -1) { - let closeMacros = query.indexOf(')', openMacros); - if(closeMacros === -1) { - throw {message: 'unable to find closing brace for $unescape macros: ' + query.substring(0, openMacros)}; - } - let arg = query.substring(openMacros+macros.length, closeMacros) - .trim(); - arg = arg.replace(/[']+/g, ''); - query = query.substring(0, openMacros) + arg + query.substring(closeMacros+1, query.length); - openMacros = query.indexOf('$unescape('); - } - return query - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.d.ts deleted file mode 100644 index a98d2bf..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export default class SqlSeries { - series: any; - meta: any; - tillNow: any; - from: any; - to: any; - /** @ngInject */ - constructor(options: any); - toTable(): any; - toTimeSeries(): any; - extrapolate(datapoints: any): any; - static _toJSType(type: any): string; - static _formatValue(value: any): any; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js deleted file mode 100644 index a873865..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js +++ /dev/null @@ -1,143 +0,0 @@ -System.register(['lodash'], function(exports_1) { - var lodash_1; - var SqlSeries; - return { - setters:[ - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }], - execute: function() { - SqlSeries = (function () { - /** @ngInject */ - function SqlSeries(options) { - this.series = options.series; - this.meta = options.meta; - this.tillNow = options.tillNow; - this.from = options.from; - this.to = options.to; - } - SqlSeries.prototype.toTable = function () { - var self = this, data = []; - if (this.series.length === 0) { - return data; - } - var columns = []; - lodash_1.default.each(self.meta, function (col) { - columns.push({ "text": col.name, "type": SqlSeries._toJSType(col.type) }); - }); - var rows = []; - lodash_1.default.each(self.series, function (ser) { - var r = []; - lodash_1.default.each(ser, function (v) { - r.push(SqlSeries._formatValue(v)); - }); - rows.push(r); - }); - data.push({ - "columns": columns, - "rows": rows, - "type": "table" - }); - return data; - }; - SqlSeries.prototype.toTimeSeries = function () { - var self = this, timeSeries = []; - if (self.series.length === 0) { - return timeSeries; - } - // timeCol have to be the first column always - var timeCol = self.meta[0], metrics = {}, intervals = [], t; - lodash_1.default.each(self.series, function (series) { - t = SqlSeries._formatValue(series[timeCol.name]); - intervals.push(t); - // rm time value from series - delete series[timeCol.name]; - lodash_1.default.each(series, function (val, key) { - if (lodash_1.default.isArray(val)) { - lodash_1.default.each(val, function (arr) { - (metrics[arr[0]] = metrics[arr[0]] || {})[t] = arr[1]; - }); - } - else { - (metrics[key] = metrics[key] || {})[t] = val; - } - }); - }); - lodash_1.default.each(metrics, function (v, k) { - var datapoints = []; - lodash_1.default.each(intervals, function (interval) { - if (metrics[k][interval] === undefined) { - metrics[k][interval] = null; - } - datapoints.push([SqlSeries._formatValue(metrics[k][interval]), interval]); - }); - timeSeries.push({ target: k, datapoints: self.extrapolate(datapoints) }); - }); - return timeSeries; - }; - ; - SqlSeries.prototype.extrapolate = function (datapoints) { - if (datapoints.length < 10 || (!this.tillNow && datapoints[0][0] !== 0)) { - return datapoints; - } - // Duration between first/last samples and boundary of range. - var durationToStart = datapoints[0][1] / 1000 - this.from, durationToEnd = this.to - datapoints[datapoints.length - 1][1] / 1000; - // If the first/last samples are close to the boundaries of the range, - // extrapolate the result. - var sampledInterval = (datapoints[datapoints.length - 1][1] - datapoints[0][1]) / 1000, averageDurationBetweenSamples = sampledInterval / (datapoints.length - 1); - var diff; - // close to left border and value is 0 because of runningDifference function - if (durationToStart < averageDurationBetweenSamples && datapoints[0][0] === 0) { - diff = ((datapoints[1][0] - datapoints[2][0]) / datapoints[1][0]) * 0.1; - diff %= 1; - if (isNaN(diff)) { - diff = 0; - } - datapoints[0][0] = datapoints[1][0] * (1 + diff); - } - if (durationToEnd < averageDurationBetweenSamples) { - diff = ((datapoints[datapoints.length - 2][0] - datapoints[datapoints.length - 3][0]) / datapoints[datapoints.length - 2][0]) * 0.1; - diff %= 1; - if (isNaN(diff)) { - diff = 0; - } - datapoints[datapoints.length - 1][0] = datapoints[datapoints.length - 2][0] * (1 + diff); - } - return datapoints; - }; - ; - SqlSeries._toJSType = function (type) { - switch (type) { - case 'UInt8': - case 'UInt16': - case 'UInt32': - case 'UInt64': - case 'Int8': - case 'Int16': - case 'Int32': - case 'Int64': - return "number"; - default: - return "string"; - } - }; - SqlSeries._formatValue = function (value) { - if (value === null) { - return value; - } - var numeric = Number(value); - if (isNaN(numeric)) { - return value; - } - else { - return numeric; - } - }; - ; - return SqlSeries; - })(); - exports_1("default", SqlSeries); - } - } -}); -//# sourceMappingURL=sql_series.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js.map deleted file mode 100644 index e6e234a..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sql_series.js","sourceRoot":"","sources":["sql_series.ts"],"names":["SqlSeries","SqlSeries.constructor","SqlSeries.toTable","SqlSeries.toTimeSeries","SqlSeries.extrapolate","SqlSeries._toJSType","SqlSeries._formatValue"],"mappings":"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0BA;oBAC1BA,IAAIA,eAAeA,GAAGA,CAACA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAACA,IAAIA,EAC9EA,6BAA6BA,GAAGA,eAAeA,GAAGA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA;oBAE5EA,IAAIA,IAAIA,CAACA;oBACTA,4EAA4EA;oBAC5EA,EAAEA,CAACA,CAACA,eAAeA,GAAGA,6BAA6BA,IAAIA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,KAAKA,CAACA,CAACA,CAACA,CAACA;wBAC5EA,IAAIA,GAAGA,CAACA,CAACA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,GAAGA,CAACA;wBACxEA,IAAIA,IAAIA,CAACA,CAACA;wBACVA,EAAEA,CAACA,CAACA,KAAKA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;4BACdA,IAAIA,GAAGA,CAACA,CAACA;wBACbA,CAACA;wBACDA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA;oBACrDA,CAACA;oBAEDA,EAAEA,CAACA,CAACA,aAAaA,GAAGA,6BAA6BA,CAACA,CAACA,CAACA;wBAChDA,IAAIA,GAAGA,CAACA,CAACA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,GAAGA,CAACA;wBAC9HA,IAAIA,IAAIA,CAACA,CAACA;wBACVA,EAAEA,CAACA,CAACA,KAAKA,CAACA,IAAIA,CAACA,CAACA,CAACA,CAACA;4BACdA,IAAIA,GAAGA,CAACA,CAACA;wBACbA,CAACA;wBACDA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,UAAUA,CAACA,UAAUA,CAACA,MAAMA,GAACA,CAACA,CAACA,CAACA,CAACA,CAACA,GAAGA,CAACA,CAACA,GAAGA,IAAIA,CAACA,CAACA;oBACzFA,CAACA;oBAEDA,MAAMA,CAACA,UAAUA,CAACA;gBACtBA,CAACA;;gBAEMJ,mBAASA,GAAhBA,UAAiBA,IAAQA;oBACrBK,MAAMA,CAACA,CAACA,IAAIA,CAACA,CAACA,CAACA;wBACXA,KAAKA,OAAOA,CAACA;wBACbA,KAAKA,QAAQA,CAACA;wBACdA,KAAKA,QAAQA,CAACA;wBACdA,KAAKA,QAAQA,CAACA;wBACdA,KAAKA,MAAMA,CAACA;wBACZA,KAAKA,OAAOA,CAACA;wBACbA,KAAKA,OAAOA,CAACA;wBACbA,KAAKA,OAAOA;4BACRA,MAAMA,CAACA,QAAQA,CAACA;wBACpBA;4BACIA,MAAMA,CAACA,QAAQA,CAAAA;oBACvBA,CAACA;gBACLA,CAACA;gBAEML,sBAAYA,GAAnBA,UAAoBA,KAASA;oBACzBM,EAAEA,CAACA,CAACA,KAAKA,KAAKA,IAAIA,CAACA,CAACA,CAACA;wBACjBA,MAAMA,CAACA,KAAKA,CAAAA;oBAChBA,CAACA;oBAEDA,IAAIA,OAAOA,GAAGA,MAAMA,CAACA,KAAKA,CAACA,CAACA;oBAC5BA,EAAEA,CAACA,CAACA,KAAKA,CAACA,OAAOA,CAACA,CAACA,CAACA,CAACA;wBACjBA,MAAMA,CAACA,KAAKA,CAAAA;oBAChBA,CAACA;oBAACA,IAAIA,CAACA,CAACA;wBACJA,MAAMA,CAACA,OAAOA,CAAAA;oBAClBA,CAACA;gBACLA,CAACA;;gBACLN,gBAACA;YAADA,CAACA,AAnJD,IAmJC;YAnJD,+BAmJC,CAAA"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.ts deleted file mode 100644 index bb7487b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/dist/sql_series.ts +++ /dev/null @@ -1,150 +0,0 @@ -import _ from 'lodash'; - -export default class SqlSeries { - series: any; - meta: any; - tillNow: any; - from: any; - to: any; - - /** @ngInject */ - constructor(options) { - this.series = options.series; - this.meta = options.meta; - this.tillNow = options.tillNow; - this.from = options.from; - this.to = options.to; - } - - toTable():any { - let self = this, data = []; - if (this.series.length === 0) { - return data; - } - - let columns = []; - _.each(self.meta, function(col) { - columns.push({"text": col.name, "type": SqlSeries._toJSType(col.type)}) - }); - - let rows = []; - _.each(self.series, function (ser) { - let r = []; - _.each(ser, function (v) { - r.push(SqlSeries._formatValue(v)) - }); - rows.push(r) - }); - - data.push({ - "columns": columns, - "rows": rows, - "type": "table" - }); - - return data - } - - toTimeSeries():any { - let self = this, timeSeries = []; - if (self.series.length === 0) { - return timeSeries; - } - - // timeCol have to be the first column always - let timeCol = self.meta[0], metrics = {}, intervals = [], t; - _.each(self.series, function(series) { - t = SqlSeries._formatValue(series[timeCol.name]); - intervals.push(t); - // rm time value from series - delete series[timeCol.name]; - _.each(series, function(val, key) { - if (_.isArray(val)) { - _.each(val, function(arr) { - (metrics[arr[0]] = metrics[arr[0]] || {})[t] = arr[1]; - }); - } else { - (metrics[key] = metrics[key] || {})[t] = val; - } - }); - }); - - _.each(metrics, function(v, k) { - let datapoints = []; - _.each(intervals, function(interval) { - if (metrics[k][interval] === undefined) { - metrics[k][interval] = null; - } - datapoints.push([SqlSeries._formatValue(metrics[k][interval]), interval]); - }); - timeSeries.push({target: k, datapoints: self.extrapolate(datapoints)}); - }); - return timeSeries; - }; - - extrapolate(datapoints) { - if (datapoints.length < 10 || (!this.tillNow && datapoints[0][0] !== 0)) { - return datapoints; - } - - // Duration between first/last samples and boundary of range. - let durationToStart = datapoints[0][1]/1000 - this.from, - durationToEnd = this.to - datapoints[datapoints.length-1][1]/1000; - - // If the first/last samples are close to the boundaries of the range, - // extrapolate the result. - let sampledInterval = (datapoints[datapoints.length-1][1] - datapoints[0][1])/1000, - averageDurationBetweenSamples = sampledInterval / (datapoints.length-1); - - let diff; - // close to left border and value is 0 because of runningDifference function - if (durationToStart < averageDurationBetweenSamples && datapoints[0][0] === 0) { - diff = ((datapoints[1][0] - datapoints[2][0]) / datapoints[1][0]) * 0.1; - diff %= 1; - if (isNaN(diff)) { - diff = 0; - } - datapoints[0][0] = datapoints[1][0] * (1 + diff); - } - - if (durationToEnd < averageDurationBetweenSamples) { - diff = ((datapoints[datapoints.length-2][0] - datapoints[datapoints.length-3][0]) / datapoints[datapoints.length-2][0]) * 0.1; - diff %= 1; - if (isNaN(diff)) { - diff = 0; - } - datapoints[datapoints.length-1][0] = datapoints[datapoints.length-2][0] * (1 + diff); - } - - return datapoints; - }; - - static _toJSType(type:any):string { - switch (type) { - case 'UInt8': - case 'UInt16': - case 'UInt32': - case 'UInt64': - case 'Int8': - case 'Int16': - case 'Int32': - case 'Int64': - return "number"; - default: - return "string" - } - } - - static _formatValue(value:any) { - if (value === null) { - return value - } - - let numeric = Number(value); - if (isNaN(numeric)) { - return value - } else { - return numeric - } - }; -} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/karma.conf.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/karma.conf.js deleted file mode 100644 index 4cacfaa..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/karma.conf.js +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; -module.exports = function(config) { - config.set({ - frameworks: ['systemjs', 'mocha', 'expect', 'sinon'], - - files: [ - 'specs/*specs.ts', - 'specs/**/*specs.ts', - 'specs/lib/*.ts', - { pattern: 'src/**/*.ts', included: false }, - { pattern: 'node_modules/grafana-sdk-mocks/**/*.ts', included: false }, - { pattern: 'node_modules/grafana-sdk-mocks/**/*.js', included: false }, - { pattern: 'node_modules/typescript/lib/typescript.js', included: false }, - { pattern: 'node_modules/systemjs-plugin-css/css.js', included: false }, - { pattern: 'node_modules/lodash/lodash.js', included: false }, - { pattern: 'node_modules/moment/moment.js', included: false }, - { pattern: 'node_modules/q/q.js', included: false } - ], - - systemjs: { - // // SystemJS configuration specifically for tests, added after your config file. - // // Good for adding test libraries and mock modules - config: { - // Set path for third-party libraries as modules - paths: { - 'systemjs': 'node_modules/systemjs/dist/system.js', - 'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js', - 'lodash': 'node_modules/lodash/lodash.js', - 'moment': 'node_modules/moment/moment.js', - 'q': 'node_modules/q/q.js', - 'typescript': 'node_modules/typescript/lib/typescript.js', - 'plugin-typescript': 'node_modules/plugin-typescript/lib/plugin.js', - 'css': 'node_modules/systemjs-plugin-css/css.js', - 'app/': 'node_modules/grafana-sdk-mocks/app/' - }, - - map: { - 'plugin-typescript': 'node_modules/plugin-typescript/lib/', - css: 'node_modules/systemjs-plugin-css/css.js', - 'typescript': 'node_modules/typescript/', - 'app/core/utils/kbn': 'node_modules/grafana-sdk-mocks/app/core/utils/kbn.js' - }, - - packages: { - 'plugin-typescript': { - 'main': 'plugin.js' - }, - 'typescript': { - 'main': 'lib/typescript.js', - 'meta': { - 'lib/typescript.js': { - 'exports': 'ts' - } - } - }, - 'app': { - 'defaultExtension': 'ts', - 'meta': { - '*.js': { - 'loader': 'typescript' - } - } - }, - 'src': { - 'defaultExtension': 'ts', - meta: { - '*.css': { loader: 'css' } - } - }, - 'specs': { - 'defaultExtension': 'ts', - 'meta': { - '*.js': { - 'loader': 'typescript' - } - } - } - }, - - transpiler: 'plugin-typescript' - } - }, - - reporters: ['dots'], - - logLevel: config.LOG_INFO, - - browsers: ['PhantomJS'] - }); -}; \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/package.json b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/package.json deleted file mode 100644 index e86c32b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "vertamedia-clickhouse", - "version": "1.4.2", - "description": "ClickHouse datasource for Grafana", - "scripts": { - "build": "grunt", - "test": "./node_modules/karma/bin/karma start" - }, - "author": "Vertamedia", - "license": "MIT", - "dependencies": { - "babel-plugin-transform-es2015-for-of": "^6.6.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-preset-es2015": "^6.24.1", - "lodash": "^4.17.4", - "moment": "^2.18.1", - "q": "^1.5.1", - "brace": "^0.10.0", - "systemjs": "^0.19.47" - }, - "devDependencies": { - "@types/lodash": "^4.14.83", - "babel": "^6.23.0", - "grafana-sdk-mocks": "github:grafana/grafana-sdk-mocks", - "grunt": "^1.0.1", - "grunt-babel": "~6.0.0", - "grunt-contrib-clean": "^1.1.0", - "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-watch": "^1.0.0", - "grunt-systemjs-builder": "^1.0.0", - "grunt-typescript": "^0.8.0", - "karma": "^1.7.1", - "karma-chrome-launcher": "^2.2.0", - "karma-expect": "^1.1.3", - "karma-mocha": "^1.3.0", - "karma-phantomjs-launcher": "^1.0.4", - "karma-sinon": "^1.0.5", - "karma-systemjs": "^0.16.0", - "load-grunt-tasks": "3.5.2", - "mocha": "^1.21.5", - "plugin-typescript": "^7.1.1", - "sinon": "^3.3.0", - "systemjs-plugin-css": "^0.1.35" - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js deleted file mode 100644 index 239d1cd..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js +++ /dev/null @@ -1,115 +0,0 @@ -System.register(["lodash", "test/lib/common", "./../sql_series"], function (exports_1, context_1) { - "use strict"; - var __moduleName = context_1 && context_1.id; - var lodash_1, common_1, sql_series_1; - return { - setters: [ - function (lodash_1_1) { - lodash_1 = lodash_1_1; - }, - function (common_1_1) { - common_1 = common_1_1; - }, - function (sql_series_1_1) { - sql_series_1 = sql_series_1_1; - } - ], - execute: function () { - common_1.describe("clickhouse sql series:", function () { - common_1.describe("SELECT $timeseries response", function () { - var response = { - "meta": [ - { - "name": "t" - }, - { - "name": "good" - }, - { - "name": "bad" - } - ], - "data": [ - { - "t": "1485443760000", - "good": 26070, - "bad": 17 - }, - { - "t": "1485443820000", - "good": 24824, - "bad": 12 - }, - { - "t": "1485443880000", - "good": 25268, - "bad": 17 - } - ], - }; - var sqlSeries = new sql_series_1.default({ - series: response.data, - meta: response.meta, - table: '', - }); - var timeSeries = sqlSeries.getTimeSeries(); - common_1.it("expects two results", function () { - common_1.expect(lodash_1.default.size(timeSeries)).to.be(2); - }); - common_1.it("should get three datapoints", function () { - common_1.expect(lodash_1.default.size(timeSeries[0].datapoints)).to.be(3); - common_1.expect(lodash_1.default.size(timeSeries[1].datapoints)).to.be(3); - }); - }); - common_1.describe("SELECT $columns response", function () { - var response = { - "meta": [ - { - "name": "t", - "type": "UInt64" - }, - { - "name": "requests", - "type": "Array(Tuple(String, Float64))" - } - ], - "data": [ - { - "t": "1485445140000", - "requests": [["Chrome", null], ["Edge", null], ["Firefox", null]] - }, - { - "t": "1485445200000", - "requests": [["Chrome", 1], ["Edge", 4], ["Firefox", 7]] - }, - { - "t": "1485445260000", - "requests": [["Chrome", 2], ["Chromium", 5], ["Edge", 8], ["Firefox", 11]] - }, - { - "t": "1485445320000", - "requests": [["Chrome", 3], ["Chromium", 6], ["Edge", 9], ["Firefox", 12]] - } - ] - }; - var sqlSeries = new sql_series_1.default({ - series: response.data, - meta: response.meta, - table: '', - }); - var timeSeries = sqlSeries.getTimeSeries(); - common_1.it("expects four results", function () { - common_1.expect(lodash_1.default.size(timeSeries)).to.be(4); - }); - common_1.it("should get three datapoints", function () { - common_1.expect(lodash_1.default.size(timeSeries[0].datapoints)).to.be(4); - common_1.expect(lodash_1.default.size(timeSeries[1].datapoints)).to.be(4); - common_1.expect(lodash_1.default.size(timeSeries[2].datapoints)).to.be(4); - common_1.expect(lodash_1.default.size(timeSeries[3].datapoints)).to.be(4); - }); - }); - }); - } - }; -}); -//# sourceMappingURL=datasource_specs.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js.map deleted file mode 100644 index 2c46cdc..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"datasource_specs.js","sourceRoot":"","sources":["../../../../../../public/app/plugins/datasource/vertamedia-clickhouse-datasource/specs/datasource_specs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;YAIA,iBAAQ,CAAC,wBAAwB,EAAE;gBAC/B,iBAAQ,CAAC,6BAA6B,EAAE;oBACpC,IAAI,QAAQ,GAAG;wBACX,MAAM,EACN;4BACI;gCACI,MAAM,EAAE,GAAG;6BACd;4BACD;gCACI,MAAM,EAAE,MAAM;6BACjB;4BACD;gCACI,MAAM,EAAE,KAAK;6BAChB;yBACJ;wBACD,MAAM,EACN;4BACI;gCACI,GAAG,EAAE,eAAe;gCACpB,MAAM,EAAE,KAAK;gCACb,KAAK,EAAE,EAAE;6BACZ;4BACD;gCACI,GAAG,EAAE,eAAe;gCACpB,MAAM,EAAE,KAAK;gCACb,KAAK,EAAE,EAAE;6BACZ;4BACD;gCACI,GAAG,EAAE,eAAe;gCACpB,MAAM,EAAE,KAAK;gCACb,KAAK,EAAE,EAAE;6BACZ;yBACJ;qBACJ,CAAC;oBAEF,IAAI,SAAS,GAAG,IAAI,oBAAS,CAAC;wBAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI;wBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,KAAK,EAAE,EAAE;qBACZ,CAAC,CAAC;oBACH,IAAI,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;oBAC3C,WAAE,CAAC,qBAAqB,EAAE;wBACtB,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,CAAC,CAAC,CAAC;oBAEH,WAAE,CAAC,6BAA6B,EAAE;wBAC9B,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAClD,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,iBAAQ,CAAC,0BAA0B,EAAE;oBACjC,IAAI,QAAQ,GAAG;wBACX,MAAM,EACF;4BACI;gCACI,MAAM,EAAE,GAAG;gCACX,MAAM,EAAE,QAAQ;6BACnB;4BACD;gCACI,MAAM,EAAE,UAAU;gCAClB,MAAM,EAAE,+BAA+B;6BAC1C;yBACJ;wBAEL,MAAM,EACF;4BACI;gCACI,GAAG,EAAE,eAAe;gCACpB,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAC,IAAI,CAAC,EAAC,CAAC,MAAM,EAAC,IAAI,CAAC,EAAC,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC;6BAC/D;4BACD;gCACI,GAAG,EAAE,eAAe;gCACpB,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC,EAAC,CAAC,MAAM,EAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC;6BACtD;4BACD;gCACI,GAAG,EAAE,eAAe;gCACpB,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,CAAC,CAAC,EAAC,CAAC,MAAM,EAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC;6BACtE;4BACD;gCACI,GAAG,EAAE,eAAe;gCACpB,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC,EAAC,CAAC,UAAU,EAAC,CAAC,CAAC,EAAC,CAAC,MAAM,EAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC;6BACtE;yBACJ;qBACR,CAAC;oBAEF,IAAI,SAAS,GAAG,IAAI,oBAAS,CAAC;wBAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI;wBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,KAAK,EAAE,EAAE;qBACZ,CAAC,CAAC;oBACH,IAAI,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;oBAE3C,WAAE,CAAC,sBAAsB,EAAE;wBACvB,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxC,CAAC,CAAC,CAAC;oBAEH,WAAE,CAAC,6BAA6B,EAAE;wBAC9B,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAClD,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAClD,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAClD,eAAM,CAAC,gBAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACtD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YAEP,CAAC,CAAC,CAAC;QACH,CAAC"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.ts deleted file mode 100644 index 7f87705..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/datasource_specs.ts +++ /dev/null @@ -1,110 +0,0 @@ -import _ from 'lodash'; -import {describe, it, expect} from './lib/common'; -import SqlSeries from '../src/sql_series'; - -describe("clickhouse sql series:", () => { - describe("SELECT $timeseries response", () => { - var response = { - "meta": - [ - { - "name": "t" - }, - { - "name": "good" - }, - { - "name": "bad" - } - ], - "data": - [ - { - "t": "1485443760000", - "good": 26070, - "bad": 17 - }, - { - "t": "1485443820000", - "good": 24824, - "bad": 12 - }, - { - "t": "1485443880000", - "good": 25268, - "bad": 17 - } - ], - }; - - var sqlSeries = new SqlSeries({ - series: response.data, - meta: response.meta, - table: '', - }); - var timeSeries = sqlSeries.toTimeSeries(); - it("expects two results", () => { - expect(_.size(timeSeries)).to.be(2); - }); - - it("should get three datapoints", () => { - expect(_.size(timeSeries[0].datapoints)).to.be(3); - expect(_.size(timeSeries[1].datapoints)).to.be(3); - }); - }); - - describe("SELECT $columns response", () => { - var response = { - "meta": - [ - { - "name": "t", - "type": "UInt64" - }, - { - "name": "requests", - "type": "Array(Tuple(String, Float64))" - } - ], - - "data": - [ - { - "t": "1485445140000", - "requests": [["Chrome",null],["Edge",null],["Firefox",null]] - }, - { - "t": "1485445200000", - "requests": [["Chrome",1],["Edge",4],["Firefox",7]] - }, - { - "t": "1485445260000", - "requests": [["Chrome",2],["Chromium",5],["Edge",8],["Firefox",11]] - }, - { - "t": "1485445320000", - "requests": [["Chrome",3],["Chromium",6],["Edge",9],["Firefox",12]] - } - ] - }; - - var sqlSeries = new SqlSeries({ - series: response.data, - meta: response.meta, - table: '', - }); - var timeSeries = sqlSeries.toTimeSeries(); - - it("expects four results", () => { - expect(_.size(timeSeries)).to.be(4); - }); - - it("should get three datapoints", () => { - expect(_.size(timeSeries[0].datapoints)).to.be(4); - expect(_.size(timeSeries[1].datapoints)).to.be(4); - expect(_.size(timeSeries[2].datapoints)).to.be(4); - expect(_.size(timeSeries[3].datapoints)).to.be(4); - }); - }); - -}); diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/common.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/common.ts deleted file mode 100644 index 8bd214a..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/common.ts +++ /dev/null @@ -1,24 +0,0 @@ -/// - -var _global = (window); -var beforeEach = _global.beforeEach; -var before = _global.before; -var describe = _global.describe; -var it = _global.it; -var sinon = _global.sinon; -var expect = _global.expect; - -var angularMocks = { - module: _global.module, - inject: _global.inject, -}; - -export { - beforeEach, - before, - describe, - it, - sinon, - expect, - angularMocks, -}; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/context_srv_stub.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/context_srv_stub.ts deleted file mode 100644 index 949853e..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/context_srv_stub.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default class ContextSrvStub { - hasRole() { - return true; - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/template_srv_stub.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/template_srv_stub.ts deleted file mode 100644 index 9ca2249..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/template_srv_stub.ts +++ /dev/null @@ -1,31 +0,0 @@ -import _ from 'lodash'; - -export default class TemplateSrvStub { - variables = []; - templateSettings = { interpolate : /\[\[([\s\S]+?)\]\]/g }; - data = {}; - - replace(text) { - return _.template(text, this.templateSettings)(this.data); - } - - getAdhocFilters() { - return []; - } - - variableExists() { - return false; - } - - highlightVariablesAsHtml(str) { - return str; - } - - setGrafanaVariable(name, value) { - this.data[name] = value; - } - - init() {} - fillVariableValuesForUrl() {} - updateTemplateData() {} -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/time_srv_stub.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/time_srv_stub.ts deleted file mode 100644 index 3af12b5..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/lib/time_srv_stub.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {sinon} from '../lib/common'; -import dateMath from 'app/core/utils/datemath'; - -export default class TimeSrvStub { - init = sinon.spy(); - time = { from: 'now-1h', to: 'now'}; - - timeRange(parse) { - if (parse === false) { - return this.time; - } - - return { - from : dateMath.parse(this.time.from, false), - to : dateMath.parse(this.time.to, true) - }; - } - - replace(target) { - return target; - } - - setTime(time) { - this.time = time; - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.d.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.d.ts deleted file mode 100644 index e69de29..0000000 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js deleted file mode 100644 index bfd036b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js +++ /dev/null @@ -1,215 +0,0 @@ -System.register(["test/lib/common", "./../scanner"], function (exports_1, context_1) { - "use strict"; - var __moduleName = context_1 && context_1.id; - var common_1, scanner_1; - return { - setters: [ - function (common_1_1) { - common_1 = common_1_1; - }, - function (scanner_1_1) { - scanner_1 = scanner_1_1; - } - ], - execute: function () { - common_1.describe("scanner:", function () { - common_1.describe("highlight", function () { - var query = "SELECT $timeSeries as t, count() FROM $table WHERE $timeFilter GROUP BY t ORDER BY t", expectedHighlight = 'SELECT ' + - '$timeSeries as t, ' + - 'count() FROM $table' + - ' WHERE $timeFilter' + - ' GROUP BY t ORDER BY t'; - var scanner = new scanner_1.default(query); - common_1.it("expects equality", function () { - common_1.expect(scanner.Highlight()).to.be(expectedHighlight); - }); - }); - common_1.describe("AST case 1", function () { - var query = "SELECT EventDate, col1, col2, toUInt32(col1 > 0 ? col2/col1*10000 : 0)/100 AS percent " + - "FROM ( SELECT EventDate, col1, countIf(col2 GLOBAL IN some_table) AS col2_shared, " + - "count() AS col_count, uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared, " + - "uniqCombined(col3) AS unique_col3 FROM general_table_all PREWHERE Event IN ('type1') " + - "AND EventDate <= '2016-12-20' WHERE (EventDate, col1) GLOBAL IN some_table GROUP BY " + - "EventDate, col1) GLOBAL ANY LEFT JOIN ( SELECT EventDate, col1, countIf(col2 GLOBAL IN some_table) " + - "AS col2_shared, count() AS col_count, uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared, " + - "uniqCombined(col3) AS unique_col3 FROM general_table_all PREWHERE Event IN ('type2') " + - "AND EventDate <= '2016-12-20' WHERE (EventDate, col1) GLOBAL IN some_table " + - "AND col4 GLOBAL IN some_table GROUP BY EventDate, col1) USING EventDate, col1 " + - "ORDER BY EventDate, col1 FORMAT CSVWithNames", scanner = new scanner_1.default(query); - var expectedAST = { - "root": [], - "select": [ - "EventDate", - "col1", - "col2", - "toUInt32(col1 > 0 ? col2 / col1 * 10000 : 0) / 100 AS percent" - ], - "from": { - "root": [], - "select": [ - "EventDate", - "col1", - "countIf(col2 GLOBAL IN some_table) AS col2_shared", - "count() AS col_count", - "uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared", - "uniqCombined(col3) AS unique_col3" - ], - "from": [ - "general_table_all" - ], - "prewhere": [ - "Event IN ('type1')", - "AND EventDate <= '2016-12-20'" - ], - "where": [ - "(EventDate, col1) GLOBAL IN some_table" - ], - "group by": [ - "EventDate", - "col1" - ] - }, - "join": { - "type": "GLOBAL ANY LEFT JOIN", - "source": { - "root": [], - "select": [ - "EventDate", - "col1", - "countIf(col2 GLOBAL IN some_table) AS col2_shared", - "count() AS col_count", - "uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared", - "uniqCombined(col3) AS unique_col3" - ], - "from": [ - "general_table_all" - ], - "prewhere": [ - "Event IN ('type2')", - "AND EventDate <= '2016-12-20'" - ], - "where": [ - "(EventDate, col1) GLOBAL IN some_table", - "AND col4 GLOBAL IN some_table" - ], - "group by": [ - "EventDate", - "col1" - ] - }, - "using": [ - "EventDate", - "col1", - "EventDate", - "col1" - ] - }, - "format": [ - "CSVWithNames" - ] - }; - common_1.it("expects equality", function () { - common_1.expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - common_1.describe("AST case 2", function () { - var query = "$rateColumns((AppType = '' ? 'undefined' : AppType) type, sum(Hits) hits) " + - "FROM table_all WHERE Event = 'request' AND (-1 IN ($template) OR col IN ($template)) HAVING hits > $interval", scanner = new scanner_1.default(query); - var expectedAST = { - "root": [], - "$rateColumns": [ - "(AppType = '' ? 'undefined' : AppType) type", - "sum(Hits) hits" - ], - "select": [], - "from": [ - "table_all" - ], - "where": [ - "Event = 'request'", - "AND(- 1 IN ($template) OR col IN ($template))" - ], - "having": [ - "hits > $interval" - ] - }; - common_1.it("expects equality", function () { - common_1.expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - common_1.describe("AST case 3", function () { - var query = "SELECT $timeSeries as t, count() AS `SMALL` FROM db.table " + - "WHERE W0 <= 400 AND LastEvent>=1 AND $timeFilter GROUP BY t ORDER BY t", scanner = new scanner_1.default(query); - var expectedAST = { - "root": [], - "select": [ - "$timeSeries as t", - "count() AS `SMALL`" - ], - "from": [ - "db.table" - ], - "where": [ - "W0 <= 400", - "AND LastEvent >= 1", - "AND $timeFilter" - ], - "group by": [ - "t" - ], - "order by": [ - "t" - ] - }; - common_1.it("expects equality", function () { - common_1.expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - common_1.describe("AST case 4", function () { - var query = "SELECT LogTime, Entity, Message FROM $table " + - "ANY LEFT JOIN (SELECT * FROM default.log_events) USING EventCode " + - "WHERE $timeFilter ORDER BY LogTime DESC LIMIT $__limit", scanner = new scanner_1.default(query); - var expectedAST = { - "root": [], - "select": [ - "LogTime", - "Entity", - "Message" - ], - "from": [ - "$table" - ], - "join": { - "type": "ANY LEFT JOIN", - "source": { - "root": [], - "select": [ - "*" - ], - "from": [ - "default.log_events" - ] - }, - "using": [ - "EventCode" - ] - }, - "where": [ - "$timeFilter" - ], - "order by": [ - "LogTime DESC" - ], - "limit": [ - "$__limit" - ] - }; - common_1.it("expects equality", function () { - common_1.expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - }); - } - }; -}); -//# sourceMappingURL=scanner_specs.js.map \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js.map b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js.map deleted file mode 100644 index 2b34349..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scanner_specs.js","sourceRoot":"","sources":["../../../../../../public/app/plugins/datasource/vertamedia-clickhouse-datasource/specs/scanner_specs.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.ts deleted file mode 100644 index 058f079..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/specs/scanner_specs.ts +++ /dev/null @@ -1,450 +0,0 @@ -import {describe, it, expect} from './lib/common'; -import Scanner from '../src/scanner'; - -describe("scanner:", () => { - describe("AST case 1", () => { - let query = "SELECT EventDate, col1, col2, toUInt32(col1 > 0 ? col2/col1*10000 : 0)/100 AS percent " + - "FROM ( SELECT EventDate, col1, countIf(col2 GLOBAL IN some_table) AS col2_shared, " + - "count() AS col_count, uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared, " + - "uniqCombined(col3) AS unique_col3 FROM general_table_all PREWHERE Event IN ('type1') " + - "AND EventDate <= '2016-12-20' WHERE (EventDate, col1) GLOBAL IN some_table GROUP BY " + - "EventDate, col1) GLOBAL ANY LEFT JOIN ( SELECT EventDate, col1, countIf(col2 GLOBAL IN some_table) " + - "AS col2_shared, count() AS col_count, uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared, " + - "uniqCombined(col3) AS unique_col3 FROM general_table_all PREWHERE Event IN ('type2') " + - "AND EventDate <= '2016-12-20' WHERE (EventDate, col1) GLOBAL IN some_table " + - "AND col4 GLOBAL IN some_table GROUP BY EventDate, col1) USING EventDate, col1 " + - "ORDER BY EventDate, col1 FORMAT CSVWithNames", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "EventDate", - "col1", - "col2", - "toUInt32(col1 > 0 ? col2 / col1 * 10000 : 0) / 100 AS percent" - ], - "from": { - "root": [], - "select": [ - "EventDate", - "col1", - "countIf(col2 GLOBAL IN some_table) AS col2_shared", - "count() AS col_count", - "uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared", - "uniqCombined(col3) AS unique_col3" - ], - "from": [ - "general_table_all" - ], - "prewhere": [ - "Event IN ('type1')", - "AND EventDate <= '2016-12-20'" - ], - "where": [ - "(EventDate, col1) GLOBAL IN some_table" - ], - "group by": [ - "EventDate", - "col1" - ] - }, - "join": { - "type": "GLOBAL ANY LEFT JOIN", - "source": { - "root": [], - "select": [ - "EventDate", - "col1", - "countIf(col2 GLOBAL IN some_table) AS col2_shared", - "count() AS col_count", - "uniqCombinedIf(col3, col3 GLOBAL IN some_table) AS col3_shared", - "uniqCombined(col3) AS unique_col3" - ], - "from": [ - "general_table_all" - ], - "prewhere": [ - "Event IN ('type2')", - "AND EventDate <= '2016-12-20'" - ], - "where": [ - "(EventDate, col1) GLOBAL IN some_table", - "AND col4 GLOBAL IN some_table" - ], - "group by": [ - "EventDate", - "col1" - ] - }, - "using": [ - "EventDate", - "col1", - ] - }, - "order by": [ - "EventDate", - "col1" - ], - "format": [ - "CSVWithNames" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 2", () => { - let query = "$rateColumns((AppType = '' ? 'undefined' : AppType) type, sum(Hits) hits) " + - "FROM table_all WHERE Event = 'request' AND (-1 IN ($template) OR col IN ($template)) HAVING hits > $interval", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "$rateColumns": [ - "(AppType = '' ? 'undefined' : AppType) type", - "sum(Hits) hits" - ], - "select": [], - "from": [ - "table_all" - ], - "where": [ - "Event = 'request'", - "AND(- 1 IN ($template) OR col IN ($template))" - ], - "having": [ - "hits > $interval" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 3", () => { - let query = "SELECT $timeSeries as t, count() AS `SMALL` FROM db.table " + - "WHERE W0 <= 400 AND LastEvent>=1 AND $timeFilter GROUP BY t ORDER BY t", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "$timeSeries as t", - "count() AS `SMALL`" - ], - "from": [ - "db.table" - ], - "where": [ - "W0 <= 400", - "AND LastEvent >= 1", - "AND $timeFilter" - ], - "group by": [ - "t" - ], - "order by": [ - "t" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - - describe("AST case 4", () => { - let query = "SELECT LogTime, Entity, Message FROM $table " + - "ANY LEFT JOIN (SELECT * FROM default.log_events) USING EventCode " + - "WHERE $timeFilter ORDER BY LogTime DESC LIMIT $__limit", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "LogTime", - "Entity", - "Message" - ], - "from": [ - "$table" - ], - "join": { - "type": "ANY LEFT JOIN", - "source": { - "root": [], - "select": [ - "*" - ], - "from": [ - "default.log_events" - ] - }, - "using": [ - "EventCode" - ] - }, - "where": [ - "$timeFilter" - ], - "order by": [ - "LogTime DESC" - ], - "limit": [ - "$__limit" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 5", () => { - let query = "SELECT select FROM $table", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "select" - ], - "from": [ - "$table" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 6", () => { - let query = "SELECT 1, select FROM $table", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "1", - "select" - ], - "from": [ - "$table" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 7", () => { - let query = "SELECT t, countIf(Format='1') FROM $table", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "t", - "countIf(Format = '1')" - ], - "from": [ - "$table" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 8", () => { - let query = "SELECT from FROM from", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "from" - ], - "from": [ - "from" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 9", () => { - let query = "SELECT" + - " t, groupArray((process_name, duration)) as groupArr " + - " FROM (" + - " SELECT" + - " (intDiv(toUInt32(event_datetime), 5) * 5) * 1000 as t," + - " process_name," + - " quantile(0.95)(duration) duration" + - " FROM xx " + - " WHERE event_date >= toDate(1514966917) AND event_datetime >= toDateTime(1514966917)" + - " GROUP BY t, process_name ORDER BY t, process_name" + - ") GROUP BY t ORDER BY t FORMAT JSON", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "t", - "groupArray((process_name, duration)) as groupArr" - ], - "from": { - "root": [], - "select": [ - "(intDiv(toUInt32(event_datetime), 5) * 5) * 1000 as t", - "process_name", - "quantile(0.95)(duration) duration" - ], - "from": [ - "xx" - ], - "where": [ - "event_date >= toDate(1514966917)", - "AND event_datetime >= toDateTime(1514966917)", - ], - "group by": [ - "t", - "process_name" - ], - "order by": [ - "t", - "process_name" - ] - }, - "group by": [ - "t" - ], - "order by": [ - "t" - ], - "format": [ - "JSON" - ] - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 10(array)", () => { - let query = "SELECT count() FROM $table WHERE type[1] = 'key' AND zone['City'] = 'Kyiv'", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "count()" - ], - "from": [ - "$table" - ], - "where": [ - "type[1] = 'key'", - "AND zone['City'] = 'Kyiv'", - ], - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 11(union all)", () => { - let query = "SELECT a, b FROM table1 UNION ALL select c, d from table2 UNION ALL select e, f from table3", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "a", - "b" - ], - "from": [ - "table1" - ], - "union all": [ - { - "root": [], - "select": [ - "c", - "d" - ], - "from": [ - "table2" - ], - }, - { - "root": [], - "select": [ - "e", - "f" - ], - "from": [ - "table3" - ], - } - ], - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); - - describe("AST case 12(union all closure)", () => { - let query = "SELECT * FROM (select c, d from table2 UNION ALL select e, f from table3) ORDER BY c", - scanner = new Scanner(query); - - let expectedAST = { - "root": [], - "select": [ - "*" - ], - "from": { - "root": [], - "select": [ - "c", - "d" - ], - "from": [ - "table2" - ], - "union all": [ - { - "root": [], - "select": [ - "e", - "f" - ], - "from": [ - "table3" - ], - } - ], - }, - "order by": [ - "c" - ], - }; - - it("expects equality", () => { - expect(scanner.toAST()).to.eql(expectedAST); - }); - }); -}); diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/adhoc.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/adhoc.ts deleted file mode 100644 index 803578d..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/adhoc.ts +++ /dev/null @@ -1,46 +0,0 @@ -const columnsQuery = "SELECT database, table, name, type FROM system.columns where database != 'system' ORDER BY database, table"; -const regexEnum = /'(?:[^']+|'')+'/gmi; - -export default class AdhocCtrl { - tagKeys: any[]; - tagValues: any[]; - - /** @ngInject */ - constructor() { - this.tagKeys = []; - this.tagValues = []; - } - - GetTagKeys(datasource: any){ - var self = this; - if (this.tagKeys.length > 0) { - return Promise.resolve(this.tagKeys); - } - return datasource.metricFindQuery(columnsQuery) - .then(function(response){ - response.forEach(function(item){ - let text = item.database + '.' + item.table + '.' + item.name; - let value = item.name; - self.tagKeys.push({text: text, value: value}); - if (item.type.slice(0, 4) === 'Enum') { - let options = item.type.match(regexEnum); - if (options.length > 0) { - self.tagValues[text] = []; - options.forEach(function(o) { - self.tagValues[text].push({text: o, value: o}) - }) - } - } - }); - return Promise.resolve(self.tagKeys); - }); - - } - - GetTagValues(options){ - if (this.tagValues.hasOwnProperty(options.key)) { - return Promise.resolve(this.tagValues[options.key]); - } - return Promise.resolve([]) - } -} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/clickhouse-info.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/clickhouse-info.js deleted file mode 100644 index 20342a9..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/clickhouse-info.js +++ /dev/null @@ -1,2132 +0,0 @@ -// jshint ignore: start -// jscs: disable - -ace.define("ace/mode/clickhouse_info", ["require", "exports", "module"], function (require, exports, module) { - "use strict"; - - var p = {}; - p.Keywords = [ - "SELECT", - "CASE", - "THEN", - "DISTINCT", - "INSERT", - "UPDATE", - "DELETE", - "WHERE", - "AND", - "OR", - "OFFSET", - "HAVING", - "AS", - "GLOBAL", - "FROM", - "WHEN", - "ELSE", - "END", - "TYPE", - "LEFT", - "RIGHT", - "USING", - "JOIN", - "ON", - "OUTER", - "DESC", - "ASC", - "UNION", - "CREATE", - "TABLE", - "PRIMARY", - "KEY", - "FOREIGN", - "NOT", - "REFERENCES", - "DEFAULT", - "INNER", - "CROSS", - "NATURAL", - "DATABASE", - "DROP", - "GRANT", - "ANY", - "BETWEEN", - "ATTACH", - "DETACH", - "CAST", - "WITH", - "BIT_AND", - "BIT_OR", - "BIT_XOR", - "DESCRIBE", - "OPTIMIZE", - "PREWHERE", - "TOTALS", - "DATABASES", - "PROCESSLIST", - "SHOW", - "LIMIT", - "IF", - "IF NOT EXISTS", - "IF EXISTS", - "GROUP", - "ORDER", - "BY", - "IN", - "FORMAT", - "GROUP BY", - "ORDER BY", - "UNION ALL" - ]; - p.DataTypes = [ - "int", - "numeric", - "decimal", - "date", - "varchar", - "char", - "bigint", - "float", - "double", - "bit", - "binary", - "text", - "set", - "timestamp", - "uint8", - "uint16", - "uint32", - "uint64", - "int8", - "int16", - "int32", - "int64", - "float32", - "float64", - "datetime", - "enum8", - "enum16", - "array", - "tuple", - "string" - ]; - p.Constants = [ - "true", - "false", - "NULL" - ]; - p.Funcs = [ - "IPv4NumToString", "IPv4NumToStringClassC", "IPv4StringToNum", "IPv6NumToString", "IPv6StringToNum", - "MD5", "OSHierarchy", "OSIn", "OSToRoot", "SEHierarchy", "SEIn", "SEToRoot", "SHA1", "SHA224", "SHA256", - "URLHash", "URLHierarchy", "URLPathHierarchy", "abs", "alphaTokens", "appendTrailingCharIfAbsent", - "argMax", "argMin", "argMinIf", "arrayAll", "arrayCount", "arrayElement", "arrayEnumerate", "arrayEnumerateUniq", - "arrayExists", "arrayFilter", "arrayFirst", "arrayJoin", "arrayMap", "arraySum", "avg", "avgIf", - "bitAnd", "bitNot", "bitOr", "bitShiftLeft", "bitShiftRight", "bitXor", "bitmaskToArray", "bitmaskToList", - "ceil", "cityHash64", "coalesce", "concat", "corr", "corrIf", "count", "countEqual", "countIf", "countIf", - "covarPop", "covarPopIf", "covarSamp", "covarSampIf", "cutFragment", "cutQueryString", "cutQueryStringAndFragment", - "cutToFirstSignificantSubdomain", "cutURLParameter", "cutWWW", "dictGetDate", "dictGetDateTime", "dictGetFloat32", - "dictGetFloat64", "dictGetHierarchy", "dictGetInt16", "dictGetInt32", "dictGetInt64", "dictGetInt8", "dictGetString", - "dictGetUInt16", "dictGetUInt32", "dictGetUInt64", "dictGetUInt8", "dictHas", "dictIsIn", "divide", "domainWithoutWWW", - "empty", "extract", "extractAll", "extractURLParameter", "extractURLParameterNames", "extractURLParameters", - "first", "firstSignificantSubdomain", "floor", "groupArray", "groupUniqArray", "halfMD5", "has", "hex", "ifnull", - "indexOf", "intDiv", "intDivOrZero", "intHash32", "intHash64", "isnull", "last", "lcase", "length", "lengthUTF8", - "like", "lower", "lowerUTF8", "match", "max", "median", "medianIf", "mid", "min", "minus", "modulo", "multiply", - "negate", "notEmpty", "notLike", "now", "now", "nvl", "plus", "position", "positionUTF8", "quantile", - "quantileDeterministic", "quantileExact", "quantileExactWeighted", "quantileTDigest", "quantileTiming", - "quantileTimingWeighted", "quantiles", "quantilesIf", "quantilesTimingArrayIf", "quantilesTimingIf", "queryString", - "queryStringAndFragment", "rand", "rand64", "range", "rank", "regionHierarchy", "regionIn", "regionToContinent", - "regionToCountry", "regionToName", "regionToPopulation", "reinterpretAsDate", "reinterpretAsDateTime", "reinterpretAsFloat32", - "reinterpretAsFloat64", "reinterpretAsInt16", "reinterpretAsInt32", "reinterpretAsInt64", "reinterpretAsInt8", "reinterpretAsString", - "reinterpretAsUInt16", "reinterpretAsUInt32", "reinterpretAsUInt64", "reinterpretAsUInt8", "replaceAll", "replaceOne", - "replaceRegexpOne", "reverse", "reverseUTF8", "round", "round", "roundAge", "roundDuration", "roundToExp2", "sequenceCount", - "sequenceMatch", "sipHash128", "sipHash64", "splitByChar", "splitByString", "stddevPop", "stddevPopIf", "stddevSamp", - "stddevSampIf", "substring", "substringUTF8", "sum", "sumArray", "sumArrayIf", "sumIf", "timeSlot", "toDate", "toDateTime", - "toDayOfMonth", "toDayOfWeek", "toFixedString", "toFloat32", "toFloat64", "toHour", "toInt16", "toInt32", "toInt64", "toInt8", - "toMinute", "toMonday", "toMonth", "toRelativeDayNum", "toRelativeHourNum", "toRelativeMinuteNum", "toRelativeMonthNum", - "toRelativeSecondNum", "toRelativeWeekNum", "toRelativeYearNum", "toSecond", "toStartOfFiveMinute", "toStartOfHour", - "toStartOfMinute", "toStartOfMonth", "toStartOfQuarter", "toStartOfYear", "toString", "toStringCutToZero", "toTime", "toUInt16", - "toUInt32", "toUInt64", "toUInt8", "toYear", "today", "topLevelDomain", "ucase", "unhex", "uniq", "uniqArray", "uniqArrayIf", - "uniqArrayIf", "uniqCombined", "uniqCombinedIf", "uniqExact", "uniqExactIf", "uniqHLL12", "uniqUpTo", "upper", "upperUTF8", "varPop", "varPopIf", - "varSamp", "varSampIf", "yesterday" - ]; - p.Macros = [ - "$table", - "$timeCol", - "$dateTimeCol", - "$from", - "$to", - "$interval", - "$timeFilter", - "$timeSeries", - "$rate", - "$columns", - "$rateColumns", - "$unescape" - ]; - p.KeywordsRe = function () { - return this.re(p.Keywords) - }; - p.ConstantsRe = function () { - return this.re(p.Constants) - }; - p.FunctionsRe = function () { - return this.re(p.Funcs).concat(this.re(p.Macros)) - }; - p.DataTypesRe = function () { - return this.re(p.DataTypes); - }; - p.FunctionsCompletions = function () { - return [ - { - "name": "corr", - "def": "corr(x, y)", - "docText": "Calculates the Pearson correlation coefficient: Σ((x - x̅)(y - y̅)) / sqrt(Σ((x - x̅)2) * Σ((y - y̅)2))." - }, - { - "name": "stddevPop", - "def": "stddevPop(x)", - "docText": "The result is equal to the square root of `varPop(x)`." - }, - { - "name": "varPop", - "def": "varPop(x, y)", - "docText": "Calculates the value of `Σ((x - x̅)(y - y̅)) / n`." - }, - { - "name": "argMin", - "def": "argMin(arg, val)", - "docText": "Calculates the `arg` value for a minimal `val` value. If there are several different values of `arg` for minimal values of `val`, the first of these values encountered is output." - }, - { - "name": "quantileExactWeighted", - "def": "quantileExactWeighted(level)(x, weight)", - "docText": "Computes the level quantile exactly. In this case, each value is taken into account with the weight weight - as if it is present weight once. The arguments of the function can be considered as histograms, where the value \"x\" corresponds to the \"column\" of the histogram of the height weight, and the function itself can be considered as the summation of histograms.\n" + - "\n" + - "The algorithm is a hash table. Because of this, in case the transmitted values ​​are often repeated, the function consumes less RAM than the quantileExact. You can use this function instead of quantileExact, specifying the number 1 as the weight." - }, - { - "name": "min", - "def": "min(v)", - "docText": "Minimal execution speed in rows per second. Checked on every data block when `timeout_before_checking_execution_speed` expires. If the execution speed is lower, an exception is thrown." - }, - { - "name": "varSamp", - "def": "varSamp(x)", - "docText": "Calculates the amount Σ((x - x̅)2) / (n - 1), where 'n' is the sample size and 'x̅' is the average value of 'x'.\n" + - "\n" + - "It represents an unbiased estimate of the variance of a random variable, if the values passed to the function are a sample of this random amount.\n" + - "\n" + - "Returns Float64. If n <= 1, it returns +∞." - }, - { - "name": "anyLast", - "def": "anyLast(x)", - "docText": "Selects the last value encountered. \n" + - "\n" + - " The result is just as indeterminate as for the `any` function." - }, - { - "name": "argMax", - "def": "argMax(arg, val)", - "docText": "Calculates the `arg` value for a maximum `val` value. If there are several different values of `arg` for maximum values of `val`, the first of these values encountered is output." - }, - { - "name": "count", - "def": "count()", - "docText": "Counts the number of rows. " - }, - { - "name": "any", - "def": "any(x)", - "docText": "Selects the last value encountered. \n" + - "\n" + - " The result is just as indeterminate as for the `any` function." - }, - { - "name": "avg", - "def": "avg(x)", - "docText": "Calculates the average. \n" + - "\n" + - " Only works for numbers. \n" + - "\n" + - " The result is always Float64." - }, - { - "name": "sequenceMatch", - "def": "sequenceMatch(pattern)(time, cond1, cond2, ...)", - "docText": "Pattern matching for event chains.\n" + - "\n" + - "'pattern' is a string containing a pattern to match. The pattern is similar to a regular expression. 'time' is the event time of the DateTime type. 'cond1, cond2 ...' are from one to 32 arguments of the UInt8 type that indicate whether an event condition was met.\n" + - "\n" + - "The function collects a sequence of events in RAM. Then it checks whether this sequence matches the pattern. It returns UInt8 - 0 if the pattern isn't matched, or 1 if it matches.\n" + - "\n" + - "Example: sequenceMatch('(?1).*(?2)')(EventTime, URL LIKE '%company%', URL LIKE '%cart%') - whether there was a chain of events in which pages with the address in company were visited earlier than pages with the address in cart." - }, - { - "name": "stddevSamp", - "def": "stddevSamp(x)", - "docText": "The result is equal to the square root of `varSamp(x)`." - }, - { - "name": "medianDeterministic", - "def": "medianDeterministic(x, determinator)", - "docText": "This function works similarly to the `median` function - it approximates the median." - }, - { - "name": "quantilesTimingWeighted", - "def": "quantilesTimingWeighted(level1, level2, ...)(x, weight)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianTimingWeighted` function." - }, - { - "name": "uniq", - "def": "uniq(N)(x)", - "docText": "Calculates the number of different argument values, if it is less than or equal to N. \n" + - "\n" + - " If the number of different argument values is greater than N, it returns N + 1." - }, - { - "name": "covarSamp", - "def": "covarSamp(x, y)", - "docText": "Calculates the value of `Σ((x - x̅)(y - y̅)) / (n - 1)`. " + - "Returns Float64. If n <= 1, it returns +∞." - }, - { - "name": "max", - "def": "max(v)", - "docText": "Maximum number of bytes (uncompressed data) that can be passed to a remote server or saved in a temporary table when using GLOBAL IN." - }, - { - "name": "quantileTDigest", - "def": "quantileTDigest(level)(x)", - "docText": "t-digest" - }, - { - "name": "quantilesTiming", - "def": "quantilesTiming(level1, level2, ...)(x, weight)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianTimingWeighted` function." - }, - { - "name": "quantiles", - "def": "quantiles(level1, level2, ...)(x, determinator)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function." - }, - { - "name": "quantile", - "def": "quantile(level1, level2, ...)(x, determinator)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function." - }, - { - "name": "groupArray", - "def": "groupArray(x)", - "docText": "Creates an array of argument values. \n" + - "\n" + - " Values can be added to the array in any (indeterminate) order. \n" + - "\n" + - " In some cases, you can rely on the order of execution. This applies to cases when SELECT comes from a subquery that uses ORDER BY." - }, - { - "name": "sum", - "def": "sum(x)", - "docText": "Calculates the sum. \n" + - "\n" + - " Only works for numbers." - }, - { - "name": "median", - "def": "median(x, weight)", - "docText": "Differs from the `medianTiming` function in that it has a second argument - `weights`. Weight is a non-negative integer. \n" + - "\n" + - " The result is calculated as if the `x` value were passed `weight` number of times to the `medianTiming` function." - }, - { - "name": "quantileTiming", - "def": "quantileTiming(level)(x, weight)", - "docText": "Calculates the quantile of `level` using the same algorithm as the `medianTimingWeighted` function." - }, - { - "name": "quantileTimingWeighted", - "def": "quantileTimingWeighted(level)(x, weight)", - "docText": "Calculates the quantile of `level` using the same algorithm as the `medianTimingWeighted` function." - }, - { - "name": "groupUniqArray", - "def": "groupUniqArray(x)", - "docText": "Creates an array from different argument values. Memory consumption is the same as for the `uniqExact` function." - }, - { - "name": "uniqHLL12", - "def": "uniqHLL12(x)", - "docText": "Uses the HyperLogLog algorithm to approximate the number of different values of the argument. " - }, - { - "name": "covarPop", - "def": "covarPop(x, y)", - "docText": "Calculates the value of `Σ((x - x̅)(y - y̅)) / n`." - }, - { - "name": "sequenceCount", - "def": "sequenceCount(pattern)(time, cond1, cond2, ...)", - "docText": "sequenceMatch" - }, - { - "name": "quantileDeterministic", - "def": "quantileDeterministic(level)(x, determinator)", - "docText": "Calculates the quantile of `level` using the same algorithm as the `medianDeterministic` function." - }, - { - "name": "quantileExact", - "def": "quantileExact(level)(x, weight)", - "docText": "" - }, - { - "name": "quantilesDeterministic", - "def": "quantilesDeterministic(level1, level2, ...)(x, determinator)", - "docText": "Calculates the quantiles of all specified levels using the same algorithm as the `medianDeterministic` function." - }, - { - "name": "medianTiming", - "def": "medianTiming(x, weight)", - "docText": "Differs from the `medianTiming` function in that it has a second argument - `weights`." - }, - { - "name": "medianTimingWeighted", - "def": "medianTimingWeighted(x, weight)", - "docText": "Differs from the `medianTiming` function in that it has a second argument - `weights`." - }, - { - "name": "uniqExact", - "def": "uniqExact(x)", - "docText": "Calculates the number of different values of the argument, exactly. \n" + - "\n" + - " There is no reason to fear approximations, so it`s better to use the `uniq` function. \n" + - "\n" + - " You should use the `uniqExact` function if you definitely need an exact result. " - }, - { - "name": "uniqCombined", - "def": "uniqCombined(x)", - "docText": "" - }, - { - "name": "uniqCombinedIf", - "def": "uniqCombinedIf(x,v)", - "docText": "" - }, - { - "name": "uniqUpTo", - "def": "uniqUpTo(N)(x)", - "docText": "Calculates the number of different argument values, if it is less than or equal to N. \n" + - "\n" + - " If the number of different argument values is greater than N, it returns N + 1." - }, - { - "name": "substring", - "def": "substring(s, offset, length)", - "docText": "The same as `substring`, but for Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception)." - }, - { - "name": "notLike", - "def": "notLike(haystack, pattern), haystack NOT LIKE pattern operator", - "docText": "The same thing as `like`, but negative." - }, - { - "name": "hostName", - "def": "hostName()", - "docText": "Returns a string with the name of the host that this function was performed on. For distributed processing, this is the name of the remote server host, if the function is performed on a remote server." - }, - { - "name": "globalNotIn", - "def": "globalNotIn(v)", - "docText": "See the section `IN operators`." - }, - { - "name": "or", - "def": "or(v)", - "docText": "The same thing as `max_temporary_columns`, but without counting constant columns. \n" + - "\n" + - " Note that constant columns are formed fairly often when running a query, but they require approximately zero computing resources." - }, - { - "name": "extractAll", - "def": "extractAll(haystack, pattern)", - "docText": "Extracts all the fragments of a string using a regular expression. If `haystack` doesn`t match the `pattern` regex, an empty string is returned. Returns an array of strings consisting of all matches to the regex." - }, - { - "name": "arrayFirst", - "def": "arrayFirst(func, arr1, ...)", - "docText": "Returns the index of the first element in the `arr1` array for which `func` returns something other than 0." - }, - { - "name": "arrayExists", - "def": "arrayExists([func,] arr1, ...)", - "docText": "Returns 1 if there is at least one element in `arr` for which `func` returns something other than 0. Otherwise, it returns 0." - }, - { - "name": "arrayCount", - "def": "arrayCount([func,] arr1, ...)", - "docText": "Returns the number of elements in `arr` for which `func` returns something other than 0. If `func` is not specified, it returns the number of non-zero items in the array." - }, - { - "name": "arrayMap", - "def": "arrayMap(func, arr1, ...)", - "docText": "Returns an array obtained from the original application of the `func` function to each element in the `arr` array." - }, - { - "name": "now", - "def": "now(v)", - "docText": "If the parameter is true, INSERT operation will skip columns with unknown names from input. \n" + - "\n" + - " Otherwise, an exception will be generated, it is default behavior. \n" + - "\n" + - " The parameter works only for JSONEachRow and TSKV input formats." - }, - { - "name": "intDiv", - "def": "intDiv(a, b)", - "docText": "Differs from `intDiv` in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one." - }, - { - "name": "topLevelDomain", - "def": "topLevelDomain(v)", - "docText": "Selects the top-level domain. Example: .ru." - }, - { - "name": "intHash32", - "def": "intHash32(v)", - "docText": "Calculates a 32-bit hash code from any type of integer. \n" + - "\n" + - " This is a relatively fast non-cryptographic hash function of average quality for numbers." - }, - { - "name": "replaceOne", - "def": "replaceOne(haystack, pattern, replacement)", - "docText": "Replaces the first occurrence, if it exists, of the `pattern` substring in `haystack` with the `replacement` substring. \n" + - "\n" + - " Hereafter, `pattern` and `replacement` must be constants." - }, - { - "name": "cityHash64", - "def": "cityHash64(v)", - "docText": "Calculates CityHash64 from a string or a similar hash function for any number of any type of arguments. \n" + - "\n" + - " For String-type arguments, CityHash is used. This is a fast non-cryptographic hash function for strings with decent quality" - }, - { - "name": "OSToRoot", - "def": "OSToRoot(v)", - "docText": "Accepts a UInt8 number - the ID of the operating system from the Yandex.Metrica dictionary. If any OS matches the passed number, it returns a UInt8 number - the ID of the corresponding root OS (for example, it converts Windows Vista to Windows). Otherwise, returns 0." - }, - { - "name": "sipHash128", - "def": "sipHash128(v)", - "docText": "Calculates SipHash from a string. \n" + - "\n" + - " Accepts a String-type argument. Returns FixedString(16). \n" + - "\n" + - " Differs from sipHash64 in that the final xor-folding state is only done up to 128 bits." - }, - { - "name": "SHA1", - "def": "SHA1(v)", - "docText": "Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32)." - }, - { - "name": "asin", - "def": "asin(x)", - "docText": "The arc sine." - }, - { - "name": "SHA256", - "def": "SHA256(v)", - "docText": "Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32)." - }, - { - "name": "MD5", - "def": "MD5(v)", - "docText": "Calculates the MD5 from a string and returns the resulting set of bytes as FixedString(16)." - }, - { - "name": "bitmaskToList", - "def": "bitmaskToList(num)", - "docText": "Accepts an integer. Returns a string containing the list of powers of two that total the source number when summed. They are comma-separated without spaces in text format, in ascending order." - }, - { - "name": "array", - "def": "array(v)", - "docText": "The -`Array` suffix can be appended to any aggregate function. In this case, the aggregate function takes arguments of the `Array(T)` type (arrays) instead of `T` type arguments. If the aggregate function accepts multiple arguments, this must be arrays of equal lengths. " - }, - { - "name": "dictGetStringOrDefault", - "def": "dictGetStringOrDefault(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "greaterOrEquals", - "def": "greaterOrEquals(v)", - "docText": "" - }, - { - "name": "e", - "def": "e(v)", - "docText": "What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw." - }, - { - "name": "runningDifference", - "def": "runningDifference(x)", - "docText": "Calculates the difference between consecutive values in the data block. \n" + - "\n" + - " Result of the function depends on the order of the data in the blocks. \n" + - "\n" + - " It works only inside of the each processed block of data. Data splitting in the blocks is not explicitly controlled by the user. " - }, - { - "name": "not", - "def": "not(v)", - "docText": "See the section `IN operators`." - }, - { - "name": "intHash64", - "def": "intHash64(v)", - "docText": "Calculates a 64-bit hash code from any type of integer. \n" + - "\n" + - " It works faster than intHash32. Average quality." - }, - { - "name": "acos", - "def": "acos(x)", - "docText": "The arc cosine." - }, - { - "name": "dictGetString", - "def": "dictGetString(v)", - "docText": "" - }, - { - "name": "and", - "def": "and(x, determinator)", - "docText": "This function works similarly to the `median` function - it approximates the median. However, in contrast to `median`, the result is deterministic and does not depend on the order of query execution. \n" + - "\n" + - " To achieve this, the function takes a second argument - the `determinator`. " - }, - { - "name": "dictGetDate", - "def": "dictGetDate(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "dictGetFloat32", - "def": "dictGetFloat32(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "dictGetInt8", - "def": "dictGetInt8(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "dictGetUInt32", - "def": "dictGetUInt32(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "OSIn", - "def": "OSIn(lhs, rhs)", - "docText": "Checks whether the `lhs` operating system belongs to the `rhs` operating system." - }, - { - "name": "arrayFirstIndex", - "def": "arrayFirstIndex(func, arr1, ...)", - "docText": "Returns the index of the first element in the `arr1` array for which `func` returns something other than 0." - }, - { - "name": "ceil", - "def": "ceil(x[, N])", - "docText": "Returns the smallest round number that is greater than or equal to `x`. In every other way, it is the same as the `floor` function (see above)." - }, - { - "name": "fragment", - "def": "fragment(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, - { - "name": "dictGetUInt8", - "def": "dictGetUInt8(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "dictHas", - "def": "dictHas(v)", - "docText": "dictHas('dict_name', id) check the presence of a key in the dictionary. Returns a value of type UInt8, equal to 0, if there is no key and 1 if there is a key." - }, - { - "name": "arraySum", - "def": "arraySum([func,] arr1, ...)", - "docText": "Returns the sum of the `func` values. If the function is omitted, it just returns the sum of the array elements." - }, - { - "name": "emptyArrayDateTime", - "def": "emptyArrayDateTime(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "intDivOrZero", - "def": "intDivOrZero(a, b)", - "docText": "Differs from `intDiv` in that it returns zero when dividing by zero or when dividing a minimal negative number by minus one." - }, - { - "name": "SEHierarchy", - "def": "SEHierarchy(v)", - "docText": "Accepts a UInt8 number - the ID of the search engine from the Yandex.Metrica dictionary. Returns an array with a hierarchy of search engines. Similar to the `regionHierarchy` function." - }, - { - "name": "regionToContinent", - "def": "regionToContinent(id[, geobase])", - "docText": "Converts a region to a continent. In every other way, this function is the same as `regionToCity`. \n" + - "\n" + - " Example: `regionToContinent(toUInt32(213)) = 10001` converts Moscow (213) to Eurasia (10001)." - }, - { - "name": "dictGetInt32", - "def": "dictGetInt32(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "toInt8", - "def": "toInt8(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "materialize", - "def": "materialize(x)", - "docText": "Turns a constant into a full column containing just one value. \n" + - "\n" + - " In ClickHouse, full columns and constants are represented differently in memory. Functions work differently for constant arguments and normal arguments (different code is executed), although the result is almost always the same. This function is for debugging this behavior." - }, - { - "name": "regionToCountry", - "def": "regionToCountry(id[, geobase])", - "docText": "Converts a region to a country. In every other way, this function is the same as `regionToCity`. \n" + - "\n" + - " Example: `regionToCountry(toUInt32(213)) = 225` converts Moscow (213) to Russia (225)." - }, - { - "name": "dictGetDateTime", - "def": "dictGetDateTime(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "xor", - "def": "xor(v)", - "docText": "" - }, - { - "name": "regionToCity", - "def": "regionToCity(id[, geobase])", - "docText": "Accepts a UInt32 number - the region ID from the Yandex geobase. If this region is a city or part of a city, it returns the region ID for the appropriate city. Otherwise, returns 0." - }, - { - "name": "dictGetFloat64", - "def": "dictGetFloat64(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "timeSlot", - "def": "timeSlot(StartTime, Duration)", - "docText": "For a time interval starting at `StartTime` and continuing for `Duration` seconds, it returns an array of moments in time, consisting of points from this interval rounded down to the half hour." - }, - { - "name": "toTime", - "def": "toTime(v)", - "docText": "Converts a date with time to the date of the start of the Unix Epoch, while preserving the time." - }, - { - "name": "log2", - "def": "log2(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the binary logarithm of the argument." - }, - { - "name": "toRelativeHourNum", - "def": "toRelativeHourNum(v)", - "docText": "Converts a date with time or date to the number of the hour, starting from a certain fixed point in the past." - }, - { - "name": "toRelativeDayNum", - "def": "toRelativeDayNum(v)", - "docText": "Converts a date with time or date to the number of the day, starting from a certain fixed point in the past." - }, - { - "name": "toRelativeWeekNum", - "def": "toRelativeWeekNum(v)", - "docText": "Converts a date with time or date to the number of the week, starting from a certain fixed point in the past." - }, - { - "name": "splitByString", - "def": "splitByString(separator, s)", - "docText": "The same as above, but it uses a string of multiple characters as the separator. The string must be non-empty." - }, - { - "name": "currentDatabase", - "def": "currentDatabase()", - "docText": "Returns the name of the current database. \n" + - "\n" + - " You can use this function in table engine parameters in a CREATE TABLE query where you need to specify the database." - }, - { - "name": "toRelativeMonthNum", - "def": "toRelativeMonthNum(v)", - "docText": "Converts a date with time or date to the number of the month, starting from a certain fixed point in the past." - }, - { - "name": "visibleWidth", - "def": "visibleWidth(x)", - "docText": "Calculates the approximate width when outputting values to the console in text format (tab-separated). This function is used by the system for implementing Pretty formats." - }, - { - "name": "bitShiftRight", - "def": "bitShiftRight(a, b)", - "docText": "" - }, - { - "name": "toRelativeYearNum", - "def": "toRelativeYearNum(v)", - "docText": "Converts a date with time or date to the number of the year, starting from a certain fixed point in the past." - }, - { - "name": "toStartOfHour", - "def": "toStartOfHour(v)", - "docText": "Rounds down a date with time to the start of the hour." - }, - { - "name": "halfMD5", - "def": "halfMD5(v)", - "docText": "Calculates the MD5 from a string. Then it takes the first 8 bytes of the hash and interprets them as UInt64 in big endian." - }, - { - "name": "toStartOfFiveMinute", - "def": "toStartOfFiveMinute(v)", - "docText": "Rounds down a date with time to the start of the 5 minute (00:00, 00:05, 00:10...)." - }, - { - "name": "toUInt16OrZero", - "def": "toUInt16OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument." - }, - { - "name": "toMonday", - "def": "toMonday(v)", - "docText": "Rounds down a date or date with time to the nearest Monday. \n" + - "\n" + - " Returns the date." - }, - { - "name": "IPv6NumToString", - "def": "IPv6NumToString(x)", - "docText": "Accepts a FixedString(16) value containing the IPv6 address in binary format. Returns a string containing this address in text format. " - }, - { - "name": "indexOf", - "def": "indexOf(arr, x)", - "docText": "Returns the index of the `x` element (starting from 1) if it is in the array, or 0 if it is not." - }, - { - "name": "today", - "def": "today(v)", - "docText": "Accepts zero arguments and returns the current date at one of the moments of request execution. \n" + - "\n" + - " The same as `toDate(now())`." - }, - { - "name": "emptyArrayToSingle", - "def": "emptyArrayToSingle(v)", - "docText": "Accepts an empty array as argument and returns an array of one element equal to the default value." - }, - { - "name": "sleep", - "def": "sleep(seconds)", - "docText": "Sleeps `seconds` seconds on each data block. You can specify an integer or a floating-point number." - }, - { - "name": "extract", - "def": "extract(params, name)", - "docText": "Parses the string in double quotes. The value is unescaped. If unescaping failed, it returns an empty string. Examples: " - }, - { - "name": "emptyArrayInt8", - "def": "emptyArrayInt8(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "regionToName", - "def": "regionToName(id[, lang])", - "docText": "Accepts a UInt32 number - the region ID from the Yandex geobase. A string with the name of the language can be passed as a second argument. Supported languages are: ru, en, ua, uk, by, kz, tr. If the second argument is omitted, the language `ru` is used. " - }, - { - "name": "concat", - "def": "concat(arr[, separator])", - "docText": "Concatenates strings from the array elements, using `separator` as the separator. \n" + - "\n" + - " `separator` is a string constant, an optional parameter. By default it is an empty string. \n" + - "\n" + - " Returns a string." - }, - { - "name": "convertCharset", - "def": "convertCharset(s, from, to)", - "docText": "Returns a string with the data `s` (encoded as `from` charset) that was converted to the `to` charset." - }, - { - "name": "toMonth", - "def": "toMonth(v)", - "docText": "Converts a date or date with time to a UInt8 number containing the month number (1-12)." - }, - { - "name": "IPv6StringToNum", - "def": "IPv6StringToNum(s)", - "docText": "The reverse function of IPv6NumToString. If the IPv6 address has an invalid format, it returns a string of null bytes. \n" + - "\n" + - " HEX can be uppercase or lowercase." - }, - { - "name": "emptyArrayString", - "def": "emptyArrayString(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "uptime", - "def": "uptime()", - "docText": "Returns server's uptime in seconds." - }, - { - "name": "blockSize", - "def": "blockSize()", - "docText": "Gets the size of the block. \n" + - "\n" + - " In ClickHouse, queries are always run on blocks (sets of column parts). This function allows getting the size of the block that you called it for." - }, - { - "name": "toInt64OrZero", - "def": "toInt64OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "pathFull", - "def": "pathFull(v)", - "docText": "Selects the path, but including query-string and fragment. Example: /top/news.html?page=2#comments" - }, - { - "name": "emptyArrayDate", - "def": "emptyArrayDate(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "emptyArrayInt64", - "def": "emptyArrayInt64(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "toInt32OrZero", - "def": "toInt32OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "greater", - "def": "greater(v)", - "docText": "" - }, - { - "name": "emptyArrayInt32", - "def": "emptyArrayInt32(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "toString", - "def": "toString(str)", - "docText": "Accepts a FixedString(16) value containing the UUID in the binary format. Returns a readable string containing the UUID in the text format." - }, - { - "name": "greatest", - "def": "greatest(a, b)", - "docText": "Returns the greatest element of a and b." - }, - { - "name": "emptyArrayUInt64", - "def": "emptyArrayUInt64(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "emptyArrayUInt32", - "def": "emptyArrayUInt32(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "formatReadableSize", - "def": "formatReadableSize(x)", - "docText": "Gets a size (number of bytes). Returns a string that contains rounded size with the suffix (KiB, MiB etc.).\n" + - "\n" + - "Example:\n" + - "\n" + - "SELECT\n" + - " arrayJoin([1, 1024, 1024*1024, 192851925]) AS f_bytes,\n" + - " formatReadableSize(filesize_bytes) AS filesize\n" + - "┌─f_bytes-─┬─filesize───┐\n" + - "│ 1 │ 1.00 B │\n" + - "│ 1024 │ 1.00 KiB │\n" + - "│ 1048576 │ 1.00 MiB │\n" + - "│192851925 │ 183.92 MiB │\n" + - "└──────────┴────────────┘\n" - }, - { - "name": "toInt16OrZero", - "def": "toInt16OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "emptyArrayUInt8", - "def": "emptyArrayUInt8(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "protocol", - "def": "protocol(v)", - "docText": "Selects the protocol. Examples: http, ftp, mailto, magnet..." - }, - { - "name": "regionToPopulation", - "def": "regionToPopulation(id[, geobase])", - "docText": "Gets the population for a region. \n" + - "\n" + - " The population can be recorded in files with the geobase. See the section `External dictionaries`. \n" + - "\n" + - " If the population is not recorded for the region, it returns 0. \n" + - "\n" + - " In the Yandex geobase, the population might be recorded for child regions, but not for parent regions." - }, - { - "name": "notIn", - "def": "notIn(v)", - "docText": "See the section `IN operators`." - }, - { - "name": "position", - "def": "position(haystack, needle)", - "docText": "The same as `position`, but the position is returned in Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + - "\n" + - " There's also positionCaseInsensitiveUTF8 function." - }, - { - "name": "arrayElement", - "def": "arrayElement(arr, n), arr[n] operator", - "docText": "Get the element with the index `n` from the array `arr`. \n" + - "\n" + - " `n` should be any integer type. \n" + - "\n" + - " Indexes in an array begin from one. \n" + - "\n" + - " Negative indexes are supported - in this case, it selects the corresponding element numbered from the end. " - }, - { - "name": "toStringCutToZero", - "def": "toStringCutToZero(s)", - "docText": "Accepts a String or FixedString argument. Returns a String that is cut to a first null byte occurrence." - }, - { - "name": "log", - "def": "log(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the decimal logarithm of the argument." - }, - { - "name": "SEIn", - "def": "SEIn(lhs, rhs)", - "docText": "Checks whether the `lhs` search engine belongs to the `rhs` search engine." - }, - { - "name": "replicate", - "def": "replicate(v)", - "docText": "Create a MergeTree table with a different name. Move all the data from the directory with the ReplicatedMergeTree table data to the new table`s data directory." - }, - { - "name": "sipHash64", - "def": "sipHash64(v)", - "docText": "Calculates SipHash from a string. \n" + - "\n" + - " Accepts a String-type argument. Returns UInt64. \n" + - "\n" + - " SipHash is a cryptographic hash function. It works at least three times faster than MD5. For more information, see https://131002.net/siphash/" - }, - { - "name": "emptyArrayUInt16", - "def": "emptyArrayUInt16(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "hex", - "def": "hex(str)", - "docText": "Accepts a string containing any number of hexadecimal digits, and returns a string containing the corresponding bytes. Supports both uppercase and lowercase letters A-F. The number of hexadecimal digits doesn`t have to be even." - }, - { - "name": "regionToDistrict", - "def": "regionToDistrict(id[, geobase])", - "docText": "Converts a region to a federal district (type 4 in the geobase). In every other way, this function is the same as `regionToCity`. " - }, - { - "name": "arrayFilter", - "def": "arrayFilter(func, arr1, ...)", - "docText": "Returns an array containing only the elements in `arr1` for which `func` returns something other than 0. \n" + - "\n" + - " Examples: \n" + - "\n" + - " SELECT arrayFilter(x -> x LIKE `%World%`, [`Hello`, `abc World`]) AS res " - }, - { - "name": "toStartOfQuarter", - "def": "toStartOfQuarter(v)", - "docText": "Rounds down a date or date with time to the first day of the quarter. \n" + - "\n" + - " The first day of the quarter is either 1 January, 1 April, 1 July, or 1 October. Returns the date." - }, - { - "name": "divide", - "def": "divide(a, b), a / b operator", - "docText": "Calculates the quotient of the numbers. The result type is always a floating-point type. \n" + - "\n" + - " It is not integer division. For integer division, use the `intDiv` function. \n" + - "\n" + - " When dividing by zero you get `inf`, `-inf`, or `nan`." - }, - { - "name": "reverseUTF8", - "def": "reverseUTF8(v)", - "docText": "Reverses a sequence of Unicode code points, assuming that the string contains a set of bytes representing a UTF-8 text. Otherwise, it does something else (it doesn`t throw an exception)." - }, - { - "name": "toDate", - "def": "toDate(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "emptyArrayFloat64", - "def": "emptyArrayFloat64(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "abs", - "def": "abs(s, c)", - "docText": "If the `s` string is non-empty and does not contain the `c` character at the end, it appends the `c` character to the end." - }, - { - "name": "yesterday", - "def": "yesterday(v)", - "docText": "Accepts zero arguments and returns yesterday`s date at one of the moments of request execution. \n" + - "\n" + - " The same as `today() - 1`." - }, - { - "name": "toMinute", - "def": "toMinute(v)", - "docText": "Converts a date with time to a UInt8 number containing the number of the minute of the hour (0-59)." - }, - { - "name": "bitXor", - "def": "bitXor(a, b)", - "docText": "" - }, - { - "name": "minus", - "def": "minus(a, b), a - b operator", - "docText": "Calculates the difference. The result is always signed. \n" + - "\n" + - " You can also calculate whole numbers from a date or date with time. The idea is the same - see above for `plus`." - }, - { - "name": "toDateTime", - "def": "toDateTime(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "modulo", - "def": "modulo(a, b), a % b operator", - "docText": "Calculates the remainder after division. \n" + - "\n" + - " If arguments are floating-point numbers, they are pre-converted to integers by dropping the decimal portion. The remainder is taken in the same sense as in C++. Truncated division is used for negative numbers. \n" + - "\n" + - " An exception is thrown when dividing by zero or when dividing a minimal negative number by minus one." - }, - { - "name": "bitmaskToArray", - "def": "bitmaskToArray(num)", - "docText": "Accepts an integer. Returns an array of UInt64 numbers containing the list of powers of two that total the source number when summed. Numbers in the array are in ascending order." - }, - { - "name": "negate", - "def": "negate(a), -a operator", - "docText": "Calculates a number with the reverse sign. The result is always signed." - }, - { - "name": "emptyArrayFloat32", - "def": "emptyArrayFloat32(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "range", - "def": "range(N)", - "docText": "Returns an array of numbers from 0 to N-1. \n" + - "\n" + - " Just in case, an exception is thrown if arrays with a total length of more than 100,000,000 elements are created in a data block." - }, - { - "name": "arrayAll", - "def": "arrayAll([func,] arr1, ...)", - "docText": "Returns 1 if `func` returns something other than 0 for all the elements in `arr`. Otherwise, it returns 0." - }, - { - "name": "toInt32", - "def": "toInt32(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "unhex", - "def": "unhex(str)", - "docText": "Accepts a string containing any number of hexadecimal digits, and returns a string containing the corresponding bytes. Supports both uppercase and lowercase letters A-F. The number of hexadecimal digits doesn`t have to be even. If it is odd, the last digit is interpreted as the younger half of the 00-0F byte. If the argument string contains anything other than hexadecimal digits, some implementation-defined result is returned (an exception isn`t thrown). \n" + - "\n" + - " If you want to convert the result to a number, you can use the functions `reverse` and `reinterpretAsType`." - }, - { - "name": "toFloat64", - "def": "toFloat64(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "bitAnd", - "def": "bitAnd(a, b)", - "docText": "" - }, - { - "name": "toStartOfYear", - "def": "toStartOfYear(v)", - "docText": "Rounds down a date or date with time to the first day of the year. \n" + - "\n" + - " Returns the date." - }, - { - "name": "bitOr", - "def": "bitOr(a, b)", - "docText": "" - }, - { - "name": "SEToRoot", - "def": "SEToRoot(v)", - "docText": "Accepts a UInt8 number - the ID of the search engine from the Yandex.Metrica dictionary. If any search engine matches the passed number, it returns a UInt8 number - the ID of the corresponding root search engine (for example, it converts Yandex.Images to Yandex). Otherwise, returns 0." - }, - { - "name": "toRelativeMinuteNum", - "def": "toRelativeMinuteNum(v)", - "docText": "Converts a date with time or date to the number of the minute, starting from a certain fixed point in the past." - }, - { - "name": "visitParamExtractInt", - "def": "visitParamExtractInt(params, name)", - "docText": "The same as for Int64." - }, - { - "name": "emptyArrayInt16", - "def": "emptyArrayInt16(v)", - "docText": "Accepts zero arguments and returns an empty array of the appropriate type." - }, - { - "name": "visitParamExtractString", - "def": "visitParamExtractString(params, name)", - "docText": "Parses the string in double quotes. The value is unescaped. If unescaping failed, it returns an empty string. " - }, - { - "name": "arrayEnumerateUniq", - "def": "arrayEnumerateUniq(arr, ...)", - "docText": "Returns an array the same size as the source array, indicating for each element what its position is among elements with the same value. " - }, - { - "name": "visitParamExtractUInt", - "def": "visitParamExtractUInt(params, name)", - "docText": "Parses UInt64 from the value of the field named `name`. If this is a string field, it tries to parse a number from the beginning of the string. If the field doesn`t exist, or it exists but doesn`t contain a number, it returns 0." - }, - { - "name": "toTypeName", - "def": "toTypeName(x)", - "docText": "Gets the type name. Returns a string containing the type name of the passed argument." - }, - { - "name": "empty", - "def": "empty(v)", - "docText": "Accepts an empty array as argument and returns an array of one element equal to the default value." - }, - { - "name": "multiply", - "def": "multiply(a, b), a * b operator", - "docText": "Calculates the product of the numbers." - }, - { - "name": "has", - "def": "has('database', 'table', 'column')", - "docText": "Accepts constant String columns - database name, table name and column name. Returns constant UInt8 value, equal to 1 if column exists, otherwise 0.\n" + - "\n" + - " If table doesn't exist than exception is thrown. \n" + - "\n" + - " For elements of nested data structure function checks existence of column. For nested data structure 0 is returned." - }, - { - "name": "bitNot", - "def": "bitNot(a)", - "docText": "" - }, - { - "name": "lessOrEquals", - "def": "lessOrEquals(v)", - "docText": "greaterOrEquals, >= operator" - }, - { - "name": "reinterpretAsInt64", - "def": "reinterpretAsInt64(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "IPv4NumToString", - "def": "IPv4NumToString(num)", - "docText": "Similar to IPv4NumToString, but using `xxx` instead of the last octet. " - }, - { - "name": "bitShiftLeft", - "def": "bitShiftLeft(a, b)", - "docText": "" - }, - { - "name": "dictGetInt16", - "def": "dictGetInt16(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "toUInt32OrZero", - "def": "toUInt32OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "regionIn", - "def": "regionIn(lhs, rhs[, geobase])", - "docText": "Checks whether a `lhs` region belongs to a `rhs` region. Returns a UInt8 number equal to 1 if it belongs, or 0 if it doesn`t belong. \n" + - "\n" + - " The relationship is reflexive - any region also belongs to itself." - }, - { - "name": "reinterpretAsUInt8", - "def": "reinterpretAsUInt8(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "dictIsIn", - "def": "dictIsIn(v)", - "docText": "`dictIsIn(`dict_name`, child_id, ancestor_id)` \n" + - "\n" + - " - For the `dict_name` hierarchical dictionary, finds out whether the `child_id` key is located inside `ancestor_id` (or matches `ancestor_id`). Returns UInt8." - }, - { - "name": "toSecond", - "def": "toSecond(v)", - "docText": "Converts a date with time to a UInt8 number containing the number of the second in the minute (0-59). \n" + - "\n" + - " Leap seconds are not accounted for." - }, - { - "name": "least", - "def": "least(a, b)", - "docText": "Returns the least element of a and b." - }, - { - "name": "countEqual", - "def": "countEqual(arr, x)", - "docText": "Returns the number of elements in the array equal to `x`. Equivalent to arrayCount(elem -> elem = x, arr)." - }, - { - "name": "IPv4StringToNum", - "def": "IPv4StringToNum(s)", - "docText": "The reverse function of IPv4NumToString. If the IPv4 address has an invalid format, it returns 0." - }, - { - "name": "replaceRegexpAll", - "def": "replaceRegexpAll(haystack, pattern, replacement)", - "docText": "This does the same thing, but replaces all the occurrences" - }, - { - "name": "SHA224", - "def": "SHA224(v)", - "docText": "Calculates SHA-1, SHA-224, or SHA-256 from a string and returns the resulting set of bytes as FixedString(20), FixedString(28), or FixedString(32). \n" + - "\n" + - " The function works fairly slowly (SHA-1 processes about 5 million short strings per second per processor core, while SHA-224 and SHA-256 process about 2.2 million). " - }, - { - "name": "URLHash", - "def": "URLHash(url[, N])", - "docText": "A fast, decent-quality non-cryptographic hash function for a string obtained from a URL using some type of normalization. \n" + - "\n" + - " URLHash(s) - Calculates a hash from a string without one of the trailing symbols /,? or # at the end, if present" - }, - { - "name": "equals", - "def": "equals(v)", - "docText": "

greaterOrEquals, >= operator

" - }, - { - "name": "plus", - "def": "plus(a, b), a + b operator", - "docText": "Calculates the sum of the numbers. \n" + - "\n" + - " You can also add whole numbers with a date or date and time. In the case of a date, adding a whole number means adding the corresponding number of days. For a date with time, it means adding the corresponding number of seconds." - }, - { - "name": "less", - "def": "less(v)", - "docText": "

greaterOrEquals, >= operator

" - }, - { - "name": "regionHierarchy", - "def": "regionHierarchy(id[, geobase])", - "docText": "Accepts a UInt32 number - the region ID from the Yandex geobase. Returns an array of region IDs consisting of the passed region and all parents along the chain. \n" + - "\n" + - " Example: `regionHierarchy(toUInt32(213)) = [213,1,3,225,10001,10000]`." - }, - { - "name": "toUInt64OrZero", - "def": "toUInt64OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "rowNumberInAllBlocks", - "def": "rowNumberInAllBlocks()", - "docText": "Returns an incremental row number within all blocks that were processed by this function." - }, - { - "name": "toDayOfWeek", - "def": "toDayOfWeek(v)", - "docText": "Converts a date or date with time to a UInt8 number containing the number of the day of the week (Monday is 1, and Sunday is 7)." - }, - { - "name": "bar", - "def": "bar(v)", - "docText": "Allows building a unicode-art diagram. \n" + - "\n" + - " bar(x, min, max, width) - Draws a band with a width proportional to (x - min) and equal to `width` characters when x" - }, - { - "name": "if", - "def": "if(v)", - "docText": "The suffix -`If` can be appended to the name of any aggregate function. In this case, the aggregate function accepts an extra argument - a condition (Uint8 type). " - }, - { - "name": "regionToArea", - "def": "regionToArea(id[, geobase])", - "docText": "Converts a region to an area (type 5 in the geobase). In every other way, this function is the same as `regionToCity`." - }, - { - "name": "dictGetUInt16", - "def": "dictGetUInt16(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "toUInt8", - "def": "toUInt8(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toUInt16", - "def": "toUInt16(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "path", - "def": "path(URL)", - "docText": "- The same thing, but without the protocol and host in the result. The / element (root) is not included." - }, - { - "name": "extractURLParameters", - "def": "extractURLParameters(URL)", - "docText": "- Gets an array of name=value strings corresponding to the URL parameters. The values are not decoded in any way." - }, - { - "name": "OSHierarchy", - "def": "OSHierarchy(v)", - "docText": "Accepts a UInt8 number - the ID of the operating system from the Yandex.Metrica dictionary. Returns an array with a hierarchy of operating systems. Similar to the `regionHierarchy` function." - }, - { - "name": "cutQueryStringAndFragment", - "def": "cutQueryStringAndFragment(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, - { - "name": "timeSlots", - "def": "timeSlots(StartTime, Duration)", - "docText": "For a time interval starting at `StartTime` and continuing for `Duration` seconds, it returns an array of moments in time, consisting of points from this interval rounded down to the half hour. \n" + - "\n" + - " For example, `timeSlots(toDateTime(`2012-01-01 12:20:00`), toUInt32(600)) = [toDateTime(`2012-01-01 12:00:00`), toDateTime(`2012-01-01 12:30:00`)]`. \n" + - "\n" + - " This is necessary for searching for pageviews in the corresponding session." - }, - { - "name": "toUInt32", - "def": "toUInt32(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toStartOfMinute", - "def": "toStartOfMinute(v)", - "docText": "Rounds down a date with time to the start of the minute." - }, - { - "name": "version", - "def": "version()", - "docText": "Returns server's version as a string." - }, - { - "name": "toUInt64", - "def": "toUInt64(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toInt16", - "def": "toInt16(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "reinterpretAsInt16", - "def": "reinterpretAsInt16(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "toInt64", - "def": "toInt64(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toFixedString", - "def": "toFixedString(s, N)", - "docText": "Converts a String type argument to a FixedString(N) type (a string with fixed length N). N must be a constant. If the string has fewer bytes than N, it is passed with null bytes to the right. If the string has more bytes than N, an exception is thrown." - }, - { - "name": "toFloat32", - "def": "toFloat32(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "dictGetHierarchy", - "def": "dictGetHierarchy(v)", - "docText": "`dictGetHierarchy(`dict_name`, id)` \n" + - "\n" + - " - For the `dict_name` hierarchical dictionary, returns an array of dictionary keys starting from `id` and continuing along the chain of parent elements. Returns Array(UInt64)." - }, - { - "name": "dictGetInt64", - "def": "dictGetInt64(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "CAST", - "def": "CAST(x, t)", - "docText": "Casts `x` to the `t` data type. \n" + - "\n" + - " The syntax `CAST(x AS t)` is also supported. \n" - }, - { - "name": "toRelativeSecondNum", - "def": "toRelativeSecondNum(v)", - "docText": "Converts a date with time or date to the number of the second, starting from a certain fixed point in the past." - }, - { - "name": "toUInt8OrZero", - "def": "toUInt8OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toStartOfMonth", - "def": "toStartOfMonth(v)", - "docText": "Rounds down a date or date with time to the first day of the month. \n" + - "\n" + - " Returns the date." - }, - { - "name": "rand64", - "def": "rand64(v)", - "docText": "Returns a pseudo-random UInt64 number, evenly distributed among all UInt64-type numbers. \n" + - "\n" + - " Uses a linear congruential generator." - }, - { - "name": "toInt8OrZero", - "def": "toInt8OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toFloat32OrZero", - "def": "toFloat32OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "toYear", - "def": "toYear(v)", - "docText": "Converts a date or date with time to a UInt16 number containing the year number (AD)." - }, - { - "name": "atan", - "def": "atan(x)", - "docText": "The arc tangent." - }, - { - "name": "toFloat64OrZero", - "def": "toFloat64OrZero(v)", - "docText": "Functions for converting between numbers, strings (but not fixed strings), dates, and dates with times. All these functions accept one argument. " - }, - { - "name": "arrayEnumerate", - "def": "arrayEnumerate(arr, ...)", - "docText": "Returns an array the same size as the source array, indicating for each element what its position is among elements with the same value." - }, - { - "name": "toDayOfMonth", - "def": "toDayOfMonth(v)", - "docText": "Converts a date or date with time to a UInt8 number containing the number of the day of the month (1-31)." - }, - { - "name": "dictGetUInt64", - "def": "dictGetUInt64(v)", - "docText": "dictGetT('dict_name', 'attr_name', id) Gets the value of the 'attr_name' attribute from the 'dict_name' dictionary by the 'id' key. 'dict_name' and 'attr_name' are constant strings. 'id' must be UInt64. If the 'id' key is not in the dictionary, it returns the default value set in the dictionary definition." - }, - { - "name": "IPv4NumToStringClassC", - "def": "IPv4NumToStringClassC(num)", - "docText": "Similar to IPv4NumToString, but using `xxx` instead of the last octet. " - }, - { - "name": "reinterpretAsString", - "def": "reinterpretAsString(v)", - "docText": "This function accepts a number or date or date with time, and returns a string containing bytes representing the corresponding value in host order (little endian). Null bytes are dropped from the end. For example, a UInt32 type value of 255 is a string that is one byte long." - }, - { - "name": "toHour", - "def": "toHour(v)", - "docText": "Converts a date with time to a UInt8 number containing the number of the hour in 24-hour time (0-23). \n" + - "\n" + - " This function assumes that if clocks are moved ahead, it is by one hour and occurs at 2 a.m., and if clocks are moved back, it is by one hour and occurs at 3 a.m. (which is not always true - even in Moscow the clocks were once changed at a different time)." - }, - { - "name": "ignore", - "def": "ignore(...)", - "docText": "A function that accepts any arguments and always returns 0. \n" + - "\n" + - " However, the argument is still calculated. This can be used for benchmarks." - }, - { - "name": "arrayJoin", - "def": "arrayJoin(v)", - "docText": "This is a very unusual function.\n" + - "\n" + - "Normal functions don't change a set of rows, but just change the values in each row (map). Aggregate functions compress a set of rows (fold or reduce). The 'arrayJoin' function takes each row and generates a set of rows (unfold).\n" + - "\n" + - "This function takes an array as an argument, and propagates the source row to multiple rows for the number of elements in the array. All the values in columns are simply copied, except the values in the column where this function is applied - it is replaced with the corresponding array value.\n" + - "\n" + - "A query can use multiple 'arrayJoin' functions. In this case, the transformation is performed multiple times.\n" + - "\n" + - "Note the ARRAY JOIN syntax in the SELECT query, which provides broader possibilities." - }, - { - "name": "length", - "def": "length(v)", - "docText": "Returns the length of a string in Unicode code points (not in characters), assuming that the string contains a set of bytes that make up UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + - "\n" + - " The result type is UInt64." - }, - { - "name": "tuple", - "def": "tuple(tuple, n), operator x.N", - "docText": "A function that allows getting columns from a tuple. \n" + - "\n" + - " `N` is the column index, starting from 1. `N` must be a constant. `N` must be a strict postive integer no greater than the size of the tuple. \n" + - "\n" + - " There is no cost to execute the function." - }, - { - "name": "extractURLParameterNames", - "def": "extractURLParameterNames(URL)", - "docText": "- Gets an array of name=value strings corresponding to the names of URL parameters. The values are not decoded in any way." - }, - { - "name": "tupleElement", - "def": "tupleElement(tuple, n), operator x.N", - "docText": "A function that allows getting columns from a tuple. \n" + - "\n" + - " `N` is the column index, starting from 1. `N` must be a constant. `N` must be a strict postive integer no greater than the size of the tuple. \n" + - "\n" + - " There is no cost to execute the function." - }, - { - "name": "in", - "def": "in(v)", - "docText": "What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw." - }, - { - "name": "globalIn", - "def": "globalIn(v)", - "docText": "See the section `IN operators`." - }, - { - "name": "isFinite", - "def": "isFinite(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is not infinite and not a NaN, otherwise 0." - }, - { - "name": "isNaN", - "def": "isNaN(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is a NaN, otherwise 0." - }, - { - "name": "isInfinite", - "def": "isInfinite(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is infinite, otherwise 0. \n" + - "\n" + - " Note that 0 is returned for a NaN." - }, - { - "name": "transform", - "def": "transform(v)", - "docText": "Transforms a value according to the explicitly defined mapping of some elements to other ones. \n" + - "\n" + - " There are two variations of this function: \n" + - "\n" + - " 1. `transform(x, array_from, array_to, default)` " - }, - { - "name": "rand", - "def": "rand(v)", - "docText": "Returns a pseudo-random UInt64 number, evenly distributed among all UInt64-type numbers. \n" + - "\n" + - " Uses a linear congruential generator." - }, - { - "name": "reinterpretAsUInt16", - "def": "reinterpretAsUInt16(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "pi", - "def": "pi(v)", - "docText": "Maximum pipeline depth. Corresponds to the number of transformations that each data block goes through during query processing. Counted within the limits of a single server. If the pipeline depth is greater, an exception is thrown. By default, 1000." - }, - { - "name": "reinterpretAsUInt32", - "def": "reinterpretAsUInt32(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "reinterpretAsUInt64", - "def": "reinterpretAsUInt64(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "reinterpretAsInt8", - "def": "reinterpretAsInt8(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "upperUTF8", - "def": "upperUTF8(v)", - "docText": "Converts a string to uppercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. So for Turkish the result might not be exactly correct. " - }, - { - "name": "reinterpretAsInt32", - "def": "reinterpretAsInt32(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "reinterpretAsFloat32", - "def": "reinterpretAsFloat32(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "reinterpretAsFloat64", - "def": "reinterpretAsFloat64(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "reinterpretAsDate", - "def": "reinterpretAsDate(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "reinterpretAsDateTime", - "def": "reinterpretAsDateTime(v)", - "docText": "Functions accept a string and interpret the bytes placed at the beginning of the string as a number in host order (little endian). If the string isn't long enough, the functions work as if the string is padded with the necessary number of null bytes. If the string is longer than needed, the extra bytes are ignored. A date is interpreted as the number of days since the beginning of the Unix Epoch, and a date with time is interpreted as the number of seconds since the beginning of the Unix Epoch." - }, - { - "name": "roundToExp2", - "def": "roundToExp2(num)", - "docText": "Accepts a number. If the number is less than one, it returns 0. Otherwise, it rounds the number down to the nearest (whole non-negative) degree of two." - }, - { - "name": "upper", - "def": "upper(v)", - "docText": "Converts a string to uppercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. So for Turkish the result might not be exactly correct." - }, - { - "name": "positionUTF8", - "def": "positionUTF8(haystack, needle)", - "docText": "The same as `position`, but the position is returned in Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + - "\n" + - " There's also positionCaseInsensitiveUTF8 function." - }, - { - "name": "roundDuration", - "def": "roundDuration(num)", - "docText": "Accepts a number. If the number is less than one, it returns 0. Otherwise, it rounds the number down to numbers from the set: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. This function is specific to Yandex.Metrica and used for implementing the report on session length." - }, - { - "name": "roundAge", - "def": "roundAge(num)", - "docText": "Accepts a number. If the number is less than 18, it returns 0. Otherwise, it rounds the number down to numbers from the set: 18, 25, 35, 45. This function is specific to Yandex.Metrica and used for implementing the report on user age." - }, - { - "name": "round", - "def": "round(num)", - "docText": "Accepts a number. If the number is less than 18, it returns 0. Otherwise, it rounds the number down to numbers from the set: 18, 25, 35, 45. This function is specific to Yandex.Metrica and used for implementing the report on user age." - }, - { - "name": "floor", - "def": "floor(x[, N])", - "docText": "Returns a rounder number that is less than or equal to `x`." - }, - { - "name": "notEmpty", - "def": "notEmpty(v)", - "docText": "Returns 0 for an empty array, or 1 for a non-empty array. \n" + - "\n" + - " The result type is UInt8. \n" + - "\n" + - " The function also works for strings." - }, - { - "name": "lengthUTF8", - "def": "lengthUTF8(v)", - "docText": "Returns the length of a string in Unicode code points (not in characters), assuming that the string contains a set of bytes that make up UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception). \n" + - "\n" + - " The result type is UInt64." - }, - { - "name": "lower", - "def": "lower(v)", - "docText": "Converts a string to lowercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. " - }, - { - "name": "lowerUTF8", - "def": "lowerUTF8(v)", - "docText": "Converts a string to lowercase, assuming the string contains a set of bytes that make up a UTF-8 encoded text. It doesn`t detect the language. " - }, - { - "name": "reverse", - "def": "reverse(v)", - "docText": "Reverses a sequence of Unicode code points, assuming that the string contains a set of bytes representing a UTF-8 text. Otherwise, it does something else (it doesn`t throw an exception)." - }, - { - "name": "URLPathHierarchy", - "def": "URLPathHierarchy(URL)", - "docText": "- The same thing, but without the protocol and host in the result. The / element (root) is not included. " - }, - { - "name": "substringUTF8", - "def": "substringUTF8(s, offset, length)", - "docText": "The same as `substring`, but for Unicode code points. Works under the assumption that the string contains a set of bytes representing a UTF-8 encoded text. If this assumption is not met, it returns some result (it doesn`t throw an exception)." - }, - { - "name": "appendTrailingCharIfAbsent", - "def": "appendTrailingCharIfAbsent(s, c)", - "docText": "If the `s` string is non-empty and does not contain the `c` character at the end, it appends the `c` character to the end." - }, - { - "name": "alphaTokens", - "def": "alphaTokens(s)", - "docText": "Selects substrings of consecutive bytes from the range a-z and A-Z. \n" + - "\n" + - " Returns an array of selected substrings." - }, - { - "name": "splitByChar", - "def": "splitByChar(separator, s)", - "docText": "Splits a string into substrings, using `separator` as the separator. \n" + - "\n" + - " `separator` must be a string constant consisting of exactly one character. \n" + - "\n" + - " Returns an array of selected substrings" - }, - { - "name": "arrayStringConcat", - "def": "arrayStringConcat(arr[, separator])", - "docText": "Concatenates strings from the array elements, using `separator` as the separator. \n" + - "\n" + - " `separator` is a string constant, an optional parameter. By default it is an empty string. \n" + - "\n" + - " Returns a string." - }, - { - "name": "replaceAll", - "def": "replaceAll(haystack, pattern, replacement)", - "docText": "Replaces all occurrences of the `pattern` substring in `haystack` with the `replacement` substring." - }, - { - "name": "replaceRegexpOne", - "def": "replaceRegexpOne(haystack, pattern, replacement)", - "docText": "Replacement using the `pattern` regular expression. A re2 regular expression. Replaces only the first occurrence, if it exists. \n" + - "\n" + - " A pattern can be specified as `replacement`. " - }, - { - "name": "cbrt", - "def": "cbrt(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the cubic root of the argument." - }, - { - "name": "match", - "def": "match(pattern)(time, cond1, cond2, ...)", - "docText": "Pattern matching for event chains. \n" + - "\n" + - " `pattern` is a string containing a pattern to match. The pattern is similar to a regular expression." - }, - { - "name": "cutURLParameter", - "def": "cutURLParameter(URL, name)", - "docText": "Removes the URL parameter named `name`, if present. This function works under the assumption that the parameter name is encoded in the URL exactly the same way as in the passed argument." - }, - { - "name": "like", - "def": "like(haystack, pattern), haystack NOT LIKE pattern operator", - "docText": "The same thing as `like`, but negative." - }, - { - "name": "domain", - "def": "domain(v)", - "docText": "- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \n" + - "\n" + - " For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`." - }, - { - "name": "domainWithoutWWW", - "def": "domainWithoutWWW(v)", - "docText": "- Selects the domain and removes no more than one `www.` from the beginning of it, if present." - }, - { - "name": "firstSignificantSubdomain", - "def": "firstSignificantSubdomain(v)", - "docText": "- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \n" + - "\n" + - " For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`." - }, - { - "name": "queryString", - "def": "queryString(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, - { - "name": "queryStringAndFragment", - "def": "queryStringAndFragment(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, - { - "name": "extractURLParameter", - "def": "extractURLParameter(URL)", - "docText": "- Gets an array of name=value strings corresponding to the names of URL parameters. The values are not decoded in any way." - }, - { - "name": "URLHierarchy", - "def": "URLHierarchy(URL)", - "docText": "- Gets an array containing the URL trimmed to the `/`, `?` characters in the path and query-string. Consecutive separator characters are counted as one. The cut is made in the position after all the consecutive separator characters. Example:" - }, - { - "name": "cutToFirstSignificantSubdomain", - "def": "cutToFirstSignificantSubdomain(v)", - "docText": "- Selects the part of the domain that includes top-level subdomains up to the `first significant subdomain` (see the explanation above). \n" + - "\n" + - " For example, cutToFirstSignificantSubdomain(`https://news.yandex.com.tr/`) = `yandex.com.tr`." - }, - { - "name": "cutWWW", - "def": "cutWWW(v)", - "docText": "Removes no more than one `www.` from the beginning of the URL`s domain, if present." - }, - { - "name": "cutQueryString", - "def": "cutQueryString(v)", - "docText": "Removes the query-string and fragment identifier. The question mark and number sign are also removed." - }, - { - "name": "cutFragment", - "def": "cutFragment(v)", - "docText": "Removes the fragment identifier. The number sign is also removed." - }, - { - "name": "visitParamHas", - "def": "visitParamHas(params, name)", - "docText": "Checks whether there is a field with the `name` name." - }, - { - "name": "visitParamExtractFloat", - "def": "visitParamExtractFloat(params, name)", - "docText": "The same as for Float64." - }, - { - "name": "visitParamExtractBool", - "def": "visitParamExtractBool(params, name)", - "docText": "Parses a true/false value. The result is UInt8." - }, - { - "name": "visitParamExtractRaw", - "def": "visitParamExtractRaw(params, name)", - "docText": "Returns the value of a field, including separators." - }, - { - "name": "exp", - "def": "exp(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 10 in power of x." - }, - { - "name": "exp2", - "def": "exp2(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 2 in power of x." - }, - { - "name": "exp10", - "def": "exp10(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 10 in power of x." - }, - { - "name": "tgamma", - "def": "tgamma(x)", - "docText": "Gamma function." - }, - { - "name": "log10", - "def": "log10(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the decimal logarithm of the argument." - }, - { - "name": "sqrt", - "def": "sqrt(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to the square root of the argument." - }, - { - "name": "erf", - "def": "erf(v)", - "docText": "What to do when the amount of data exceeds one of the limits: `throw` or `break`. By default, throw." - }, - { - "name": "erfc", - "def": "erfc(x)", - "docText": "Accepts a numeric argument and returns a Float64 number close to 1 - erf(x), but without loss of precision for large `x` values." - }, - { - "name": "lgamma", - "def": "lgamma(x)", - "docText": "The logarithm of the gamma function." - }, - { - "name": "sin", - "def": "sin(x)", - "docText": "Accepts Float32 and Float64 and returns UInt8 equal to 1 if the argument is infinite, otherwise 0. \n" + - "\n" + - " Note that 0 is returned for a NaN." - }, - { - "name": "cos", - "def": "cos(x)", - "docText": "The arc cosine." - }, - { - "name": "tan", - "def": "tan(x)", - "docText": "The arc tangent." - }, - { - "name": "pow", - "def": "pow(x, y)", - "docText": "x in power of y." - } - ] - }; - - p.MacrosCompletions = function () { - return [ - { - "name": "$table", - "def": "$table", - "docText": "Replaced with selected table name from Query Builder" - }, - { - "name": "$timeCol", - "def": "$timeCol", - "docText": "Replaced with `Date:Col` value from Query Builder" - }, - { - "name": "$dateTimeCol", - "def": "$dateTimeCol", - "docText": "Replaced with `Column:DateTime` or `Column:TimeStamp` value from Query Builder" - }, - { - "name": "$from", - "def": "$from", - "docText": "Replaced with timestamp/1000 value of selected `Time Range:From`" - }, - { - "name": "$to", - "def": "$to", - "docText": "Replaced with timestamp/1000 value of selected `Time Range:To`" - }, - { - "name": "$interval", - "def": "$interval", - "docText": "Replaced with selected `Group by time interval` value (as a number of seconds)" - }, - { - "name": "$timeFilter", - "def": "$timeFilter", - "docText": "Replaced with currently selected `Time Range`. Requires `Column:Date` and `Column:DateTime` or `Column:TimeStamp` to be selected" - }, - { - "name": "$timeSeries", - "def": "$timeSeries", - "docText": "Replaced with special ClickHouse construction to convert results as time-series data. Use it as `SELECT $timeSeries...`. Require `Column:DateTime` or `Column:TimeStamp` to be selected" - }, - { - "name": "$rate", - "def": "$rate(cols...)", - "docText": "Converts query results as `change rate per interval`. Can be used to display changes-per-second." + - "\n" + - "Example:\n $rate(countIf(Type = 200) AS good, countIf(Type != 200) AS bad) FROM requests" - }, - { - "name": "$columns", - "def": "$columns(key, value)", - "docText": "Query values as array of [key, value], where key will be used as label. Can be used to display multiple lines at graph" + - "\n" + - "Example:\n $columns(OSName, count(*) c) FROM requests" - }, - { - "name": "$rateColumns", - "def": "$rateColumns(key, value)", - "docText": "Is a combination of `$columns` and `$rate` ." + - "\n" + - "Example:\n $rateColumns(OS, count(*) c) FROM requests" - }, - { - "name": "$unescape", - "def": "$unescape($variable)", - "docText": "Unescapes variable value by removing single quotes" + - "\n" + - "Example:\n SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5" - } - ]; - }; - - p.re = function (list) { - return list.join("|") - }; - - exports.ClickhouseInfo = p; -}); \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/datasource.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/datasource.ts deleted file mode 100644 index 9989b6f..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/datasource.ts +++ /dev/null @@ -1,182 +0,0 @@ -/// - -import _ from 'lodash'; - -import SqlSeries from './sql_series'; -import SqlQuery from './sql_query'; -import ResponseParser from './response_parser'; -import AdhocCtrl from './adhoc'; - -export class ClickHouseDatasource { - type: string; - name: string; - supportMetrics: boolean; - url: string; - directUrl: string; - basicAuth: any; - withCredentials: any; - usePOST: boolean; - addCorsHeader: boolean; - responseParser: any; - adhocCtrl: AdhocCtrl; - - /** @ngInject */ - constructor(instanceSettings, - private $q, - private backendSrv, - private templateSrv) { - this.type = 'clickhouse'; - this.name = instanceSettings.name; - this.supportMetrics = true; - this.responseParser = new ResponseParser(); - this.url = instanceSettings.url; - this.directUrl = instanceSettings.directUrl; - this.basicAuth = instanceSettings.basicAuth; - this.withCredentials = instanceSettings.withCredentials; - this.addCorsHeader = instanceSettings.jsonData.addCorsHeader; - this.usePOST = instanceSettings.jsonData.usePOST; - this.adhocCtrl = new AdhocCtrl(); - } - - _request(query) { - let options: any = { - url: this.url - }; - - if (this.usePOST) { - options.method = 'POST'; - options.data = query; - } else { - options.method = 'GET'; - options.url += '/?query=' + encodeURIComponent(query); - } - - if (this.basicAuth || this.withCredentials) { - options.withCredentials = true; - } - - options.headers = options.headers || {}; - if (this.basicAuth) { - options.headers.Authorization = this.basicAuth; - } - - if (this.addCorsHeader) { - if (this.usePOST) { - options.url += "?add_http_cors_header=1"; - } else { - options.url += "&add_http_cors_header=1"; - } - } - - return this.backendSrv.datasourceRequest(options).then(result => { - return result.data; - }); - }; - - query(options) { - var queries = [], q, - adhocFilters = this.templateSrv.getAdhocFilters(this.name); - - _.map(options.targets, (target) => { - if (!target.hide && target.query) { - var queryModel = new SqlQuery(target, this.templateSrv, options); - q = queryModel.replace(options, adhocFilters); - queries.push(q); - } - }); - - // No valid targets, return the empty result to save a round trip. - if (_.isEmpty(queries)) { - var d = this.$q.defer(); - d.resolve({data: []}); - return d.promise; - } - - var allQueryPromise = _.map(queries, query => { - return this._seriesQuery(query); - }); - - - return this.$q.all(allQueryPromise).then((responses): any => { - var result = [], i = 0; - _.each(responses, (response) => { - var target = options.targets[i]; - i++; - if (!response || !response.rows) { - return; - } - - var sqlSeries = new SqlSeries({ - series: response.data, - meta: response.meta, - tillNow: options.rangeRaw.to === 'now', - from: SqlQuery.convertTimestamp(options.range.from, target.dateTimeType), - to: SqlQuery.convertTimestamp(options.range.to, target.dateTimeType) - }); - if (target.format === 'table') { - _.each(sqlSeries.toTable(), (data) => { - result.push(data); - }); - } else { - _.each(sqlSeries.toTimeSeries(), (data) => { - result.push(data); - }); - } - }); - return {data: result}; - }); - }; - - metricFindQuery(query, options?: any) { - var interpolated; - try { - var scopedVars = {}; - - if (options && options.range) { - scopedVars['from'] = { - text: options.range.from.valueOf(), - value: options.range.from.valueOf() - } - - scopedVars['to'] = { - text: options.range.to.valueOf(), - value: options.range.to.valueOf() - } - } - - interpolated = this.templateSrv.replace(query, scopedVars, SqlQuery.interpolateQueryExpr); - } catch (err) { - return this.$q.reject(err); - } - - return this._seriesQuery(interpolated) - .then(_.curry(this.responseParser.parse)(query)); - }; - - testDatasource() { - return this.metricFindQuery('SELECT 1').then( - () => { - return {status: "success", message: "Data source is working", title: "Success"}; - }); - }; - - _seriesQuery(query) { - query = query.replace(/(?:\r\n|\r|\n)/g, ' '); - query += ' FORMAT JSON'; - return this._request(query); - }; - - - targetContainsTemplate(target) { - return this.templateSrv.variableExists(target.expr); - }; - - getTagKeys() { - return this.adhocCtrl.GetTagKeys(this); - - } - - getTagValues(options) { - return this.adhocCtrl.GetTagValues(options); - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/img/clickhouse_logo.svg b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/img/clickhouse_logo.svg deleted file mode 100644 index 3ab95fe..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/img/clickhouse_logo.svg +++ /dev/null @@ -1 +0,0 @@ -Clickhouse \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/mode-clickhouse.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/mode-clickhouse.js deleted file mode 100644 index 79f7873..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/mode-clickhouse.js +++ /dev/null @@ -1,188 +0,0 @@ -// jshint ignore: start -// jscs: disable - -ace.define("ace/mode/clickhouse_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var ClickhouseInfo = require("./clickhouse_info").ClickhouseInfo; - - var ClickHouseHighlightRules = function () { - var keywords = ClickhouseInfo.KeywordsRe(), - builtinConstants = ClickhouseInfo.ConstantsRe(), - builtinFunctions = ClickhouseInfo.FunctionsRe(), - dataTypes = ClickhouseInfo.DataTypesRe(); - - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants, - "storage.type": dataTypes - }, "identifier", true); - - this.$rules = { - "start": [{ - token: "comment", - regex: "--.*$" - }, { - token: "comment.block", - start: "```", - end: "```" - }, { - token: "string", // ' string - regex: "'.*?'" - }, { - token: "variable", - regex: "\\$\\w+" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\?|:" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "paren.lparen", - regex: "[\\(]" - }, { - token: "paren.rparen", - regex: "[\\)]" - }, { - token: "text", - regex: "\\s+" - }] - }; - this.normalizeRules(); - }; - - oop.inherits(ClickHouseHighlightRules, TextHighlightRules); - - exports.ClickHouseHighlightRules = ClickHouseHighlightRules; -}); - -ace.define("ace/mode/clickhouse_completions", ["require", "exports", "module", "ace/token_iterator", "ace/lib/lang"], function (require, exports, module) { - "use strict"; - - var lang = require("../lib/lang"), - ClickhouseInfo = require("./clickhouse_info").ClickhouseInfo; - - var keyWordsCompletions = ClickhouseInfo.Keywords.map(function (word) { - return { - caption: word, - value: word, - meta: "keyword", - score: Number.MAX_VALUE - } - }); - - var constantCompletions = ClickhouseInfo.Constants.map(function (word) { - return { - caption: word, - value: word, - meta: "constant", - score: Number.MAX_VALUE - }; - }); - - var macrosCompletions = ClickhouseInfo.MacrosCompletions().map(function (item) { - return { - caption: item.name, - value: item.name, - docHTML: convertToHTML(item), - meta: "macros", - score: Number.MAX_VALUE - }; - }); - - - var functionsCompletions = ClickhouseInfo.FunctionsCompletions().map(function (item) { - return { - caption: item.name, - value: item.name+"()", - docHTML: convertToHTML(item), - meta: "function", - score: Number.MAX_VALUE - }; - }); - - function wrapText(str, len) { - len = len || 90; - var lines = []; - var space_index = 0; - var line_start = 0; - var next_line_end = len; - var line = ""; - for (var i = 0; i < str.length; i++) { - if (str[i] === ' ') { - space_index = i; - } else if (i >= next_line_end && space_index !== 0) { - line = str.slice(line_start, space_index); - lines.push(line); - line_start = space_index + 1; - next_line_end = i + len; - space_index = 0; - } - } - line = str.slice(line_start); - lines.push(line); - return lines.join(" 
"); - } - - function convertMarkDownTags(text) { - text = text.replace(/```(.+)```/, "
$1
"); - text = text.replace(/`([^`]+)`/, "$1"); - return text; - } - - function convertToHTML(item) { - var docText = lang.escapeHTML(item.docText); - docText = convertMarkDownTags(wrapText(docText, 90)); - return [ - "", lang.escapeHTML(item.def), "", "
", docText, "
 " - ].join(""); - } - - var ClickhouseCompletions = function () { - }; - - (function () { - this.getCompletions = function (state, session, pos, prefix, callback) { - var completions = keyWordsCompletions.concat(functionsCompletions).concat(constantCompletions); - completions = completions.concat(macrosCompletions); - callback(null, completions); - }; - - }).call(ClickhouseCompletions.prototype); - - exports.ClickhouseCompletions = ClickhouseCompletions; -}); - - -ace.define("ace/mode/clickhouse", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/clickhouse_highlight_rules"], function (require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var ClickHouseHighlightRules = require("./clickhouse_highlight_rules").ClickHouseHighlightRules; - var ClickhouseCompletions = require("./clickhouse_completions").ClickhouseCompletions; - - - var Mode = function () { - this.HighlightRules = ClickHouseHighlightRules; - this.$completer = new ClickhouseCompletions(); - // replace keyWordCompleter - this.completer = this.$completer; - }; - - oop.inherits(Mode, TextMode); - - (function () { - this.$id = "ace/mode/clickhouse"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); - diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/module.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/module.ts deleted file mode 100644 index 17708c1..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {ClickHouseDatasource} from './datasource'; -import {SqlQueryCtrl} from './query_ctrl'; - -class SqlConfigCtrl { - static templateUrl = 'partials/config.html'; -} - -export { - ClickHouseDatasource as Datasource, - SqlQueryCtrl as QueryCtrl, - SqlConfigCtrl as ConfigCtrl, -}; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/config.html b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/config.html deleted file mode 100644 index 47d03ab..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/config.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -

Additional

- -
- - - -
- -
- - -
diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/query.editor.html b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/query.editor.html deleted file mode 100644 index b66c237..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/partials/query.editor.html +++ /dev/null @@ -1,209 +0,0 @@ - - -
- - -
- -
-
-
- - - - -
- -
-
-
-
- -
-
- -
- -
- -
- -
- - - - Select - DateTime - or UInt32 column for binding with Grafana's range selector - -
- -
- - -
- -
-
-
-
- -
- -
- -
- -
-
- - - - Leave blank for auto handling based on time range and panel width - -
-
- -
- -
-
- -
- - - - Set rounding for `$from` and `$to` timestamps.
- For example, if set `1m` - both `$from` and `$to` will be rounded to beginning of minute.
- It will make all requests similar during one minute which is good for caching. -
-
- -
-
-
-
- -
-
- -
- -
-
- -
- -
- -
- -
- -
- -
-
- -
-
-
{{ctrl.target.rawQuery}}
-
- -
-
-Macros
-
-$table - replaced with selected table name from Query Builder
-$timeCol - replaced with Date:Col value from Query Builder
-$dateTimeCol - replaced with Column:DateTime or Column:TimeStamp value from Query Builder
-$from - replaced with timestamp/1000 value of selected "Time Range:From"
-$to - replaced with timestamp/1000 value of selected "Time Range:To"
-$interval - replaced with selected "Group by time interval" value (as a number of seconds)
-$timeFilter - replaced with currently selected "Time Range".
-            Require Column:Date and Column:DateTime or Column:TimeStamp to be selected
-$timeSeries - replaced with special ClickHouse construction to convert results as time-series data.
-            Use it as "SELECT $timeSeries...". Require Column:DateTime or Column:TimeStamp to be selected
-$unescape - unescapes variable value by removing single quotes.
-            Used for multiple-value string variables: "SELECT $unescape($column) FROM requests WHERE $unescape($column) = 5"
-A description of macros is available by typing their names in Raw Editor
-
-
-Functions (Only one function per query allowed)
-
-$rate(cols...) - function to convert query results as "change rate per interval".
-Example usage: $rate(countIf(Type = 200) * 60 AS good, countIf(Type != 200) * 60 AS bad) FROM requests
-
-$columns(key, value) - function to query values as array of [key, value], where key would be used as label.
-Example usage: $columns(Type, count() c) FROM requests
-
-$rateColumns(key, value) - is an combination of $columns and $rate.
-Example usage: $rateColumns(Type, count() c) FROM requests
-		
-
-
- -
diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/plugin.json b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/plugin.json deleted file mode 100644 index 8d6ce7b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/plugin.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "id": "vertamedia-clickhouse-datasource", - "type": "datasource", - "name": "ClickHouse", - - "metrics": true, - "annotations": false, - "alerting": false, - - "info": { - "description": "ClickHouse datasource for Grafana", - "author": { - "name": "Vertamedia", - "url": "https://vertamedia.com/" - }, - "keywords": ["clickhouse"], - "logos": { - "small": "img/clickhouse_logo.svg", - "large": "img/clickhouse_logo.svg" - }, - "links": [ - { - "name": "GitHub", - "url": "https://github.com/Vertamedia/clickhouse-grafana" - } - ], - "version": "1.4.2" - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/query_ctrl.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/query_ctrl.ts deleted file mode 100644 index 9ebf95e..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/query_ctrl.ts +++ /dev/null @@ -1,357 +0,0 @@ -/// - -import $ from 'jquery'; -import _ from 'lodash'; -import './clickhouse-info'; -import './mode-clickhouse'; -import './snippets/clickhouse'; -import SqlQuery from './sql_query'; -import {QueryCtrl} from 'app/plugins/sdk'; -import Scanner from './scanner'; - -const defaultQuery = "SELECT $timeSeries as t, count() FROM $table WHERE $timeFilter GROUP BY t ORDER BY t"; - -class SqlQueryCtrl extends QueryCtrl { - static templateUrl = 'partials/query.editor.html'; - - queryModel: SqlQuery; - databaseSegment: any; - - dateTimeType: any; - dateColDataTypeSegment: any; - dateTimeColDataTypeSegment: any; - tableSegment: any; - formats: any[]; - - panel: any; - datasource: any; - target: any; - resolutions: any; - scanner: any; - editMode: boolean; - textareaHeight: any; - dateTimeTypeOptions: any; - - completerCache: any[]; - - tableLoading: boolean; - datetimeLoading: boolean; - dateLoading: boolean; - - showLastQuerySQL: boolean; - showHelp: boolean; - - /** @ngInject **/ - constructor($scope, $injector, templateSrv, private uiSegmentSrv) { - super($scope, $injector); - - this.queryModel = new SqlQuery(this.target, templateSrv, this.panel.scopedVars); - - this.databaseSegment = uiSegmentSrv.newSegment( - this.target.database || {fake: true, value: '-- database --'} - ); - - this.tableSegment = uiSegmentSrv.newSegment( - this.target.table || {fake: true, value: '-- table --'} - ); - - this.dateColDataTypeSegment = uiSegmentSrv.newSegment( - this.target.dateColDataType || {fake: true, value: '-- date : col --'} - ); - - this.dateTimeColDataTypeSegment = uiSegmentSrv.newSegment( - this.target.dateTimeColDataType || {fake: true, value: '-- dateTime : col --'} - ); - - this.resolutions = _.map([1,2,3,4,5,10], function(f) { - return {factor: f, label: '1/' + f}; - }); - - this.completerCache = []; - - this.dateTimeTypeOptions = [ - {text: 'Column:DateTime', value: 'DATETIME'}, - {text: 'Column:TimeStamp', value: 'TIMESTAMP'}, - {text: 'Column:TimeStampMs', value: 'TIMESTAMPMS'}, - ]; - - this.formats = [ - {text: 'Time series', value: 'time_series'}, - {text: 'Table', value: 'table'}, - ]; - - this.target.format = this.target.format || 'time_series'; - this.target.dateTimeType = this.target.dateTimeType || this.dateTimeTypeOptions[0].value; - this.target.round = this.target.round || "0s"; - this.target.intervalFactor = this.target.intervalFactor || 1; - this.target.query = this.target.query || defaultQuery; - this.target.formattedQuery = this.target.formattedQuery || this.target.query; - this.scanner = new Scanner(this.target.query); - if (this.target.query === defaultQuery) { - this.target.query = this.format(); - } - } - - getCollapsedText() { - return this.target.query; - } - - fakeSegment(value) { - return this.uiSegmentSrv.newSegment({fake: true, value: value}); - } - - getDateColDataTypeSegments() { - var target = this.target; - target.dateLoading = true; - return this.querySegment('DATE').then(function(response){ - target.dateLoading = false; - return response; - }); - } - - dateColDataTypeChanged() { - this.target.dateColDataType = this.dateColDataTypeSegment.value; - } - - dateTimeTypeChanged() { - var self = this; - this.getDateTimeColDataTypeSegments().then(function(segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateTimeColDataTypeSegment, segments[0]); - self.dateTimeColDataTypeChanged(); - }); - } - - getDateTimeColDataTypeSegments() { - var target = this.target; - target.datetimeLoading = true; - return this.querySegment(target.dateTimeType).then(function(response){ - target.datetimeLoading = false; - return response; - }); - } - - dateTimeColDataTypeChanged() { - this.target.dateTimeColDataType = this.dateTimeColDataTypeSegment.value; - } - - toggleEditorMode() { - this.target.rawQuery = !this.target.rawQuery; - } - - toggleEdit(e: any, editMode: boolean) { - if (editMode) { - this.editMode = true; - this.textareaHeight = "height: " + $(e.currentTarget).outerHeight() + "px;"; - return; - } - - if ( this.editMode === true ) { - this.editMode = false; - this.refresh(); - } - } - - getCompleter() { - return this; - } - - getCompletions(editor, session, pos, prefix, callback) { - if (this.target.database === undefined || this.target.table === undefined) { - callback(null, []); - return; - } - - let self = this; - let key = self.target.database + '.' + self.target.table; - if (self.completerCache[key]) { - callback(null, self.completerCache[key]); - return; - } - - self.queryColumns().then(function(response){ - self.completerCache[key] = response.map(function (item) { - return { - caption: item.text, - value: item.text, - meta: key, - docHTML: SqlQueryCtrl._convertToHTML(item), - }; - }); - callback(null, self.completerCache[key]); - }); - } - - static _convertToHTML(item: any) { - var desc = item.value, - space_index = 0, - start = 0, - line = "", - next_line_end = 60, - lines = []; - for (var i = 0; i < desc.length; i++) { - if (desc[i] === ' ') { - space_index = i; - } else if (i >= next_line_end && space_index !== 0) { - line = desc.slice(start, space_index); - lines.push(line); - start = space_index + 1; - next_line_end = i + 60; - space_index = 0; - } - } - line = desc.slice(start); - lines.push(line); - return ["", item.text, "", "
", lines.join(" 
")].join(""); - } - - getDatabaseSegments() { - return this.querySegment('DATABASES'); - } - - databaseChanged() { - this.target.database = this.databaseSegment.value; - this.applySegment(this.tableSegment, this.fakeSegment('-- table : col --')); - this.applySegment(this.dateColDataTypeSegment, this.fakeSegment('-- date : col --')); - this.applySegment(this.dateTimeColDataTypeSegment, this.fakeSegment('-- dateTime : col --')); - } - - getTableSegments() { - var target = this.target; - target.tableLoading = true; - return this.querySegment('TABLES').then(function(response){ - target.tableLoading = false; - return response; - }); - } - - tableChanged() { - this.target.table = this.tableSegment.value; - this.applySegment(this.dateColDataTypeSegment, this.fakeSegment('-- date : col --')); - this.applySegment(this.dateTimeColDataTypeSegment, this.fakeSegment('-- dateTime : col --')); - - var self = this; - this.getDateColDataTypeSegments().then(function(segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateColDataTypeSegment, segments[0]); - self.dateColDataTypeChanged(); - }); - this.getDateTimeColDataTypeSegments().then(function(segments) { - if (segments.length === 0) { - return; - } - self.applySegment(self.dateTimeColDataTypeSegment, segments[0]); - self.dateTimeColDataTypeChanged(); - }); - } - - formatQuery() { - this.target.query = this.format(); - this.toggleEdit({}, false); - } - - toQueryMode() { - this.toggleEditorMode(); - this.refresh(); - } - - format() { - try { - return this.getScanner().Format(); - } catch (err) { - console.log("Parse error: ", err); - return this.getScanner().raw(); - } - } - - getScanner() { - if (this.scanner.raw() !== this.target.query) { - this.scanner = new Scanner(this.target.query); - } - return this.scanner; - } - - handleQueryError(err) { - this.error = err.message || 'Failed to issue metric query'; - return []; - } - - queryColumns() { - var query = this.buildExploreQuery('COLUMNS'); - return this.datasource.metricFindQuery(query) - } - - querySegment(type: string) { - var query = this.buildExploreQuery(type); - return this.datasource.metricFindQuery(query) - .then(this.uiSegmentSrv.transformToSegments(false)) - .catch(this.handleQueryError.bind(this)); - } - - applySegment(dst, src) { - dst.value = src.value; - dst.html = src.html || src.value; - dst.fake = src.fake === undefined ? false : src.fake; - } - - buildExploreQuery(type) { - var query; - switch (type){ - case 'TABLES': - query = 'SELECT name ' + - 'FROM system.tables ' + - 'WHERE database = \'' + this.target.database + '\' ' + - 'ORDER BY name'; - break; - case 'DATE': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'Date\' ' + - 'ORDER BY name'; - break; - case 'DATETIME': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type LIKE \'DateTime%\' ' + - 'ORDER BY name'; - break; - case 'TIMESTAMP': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'UInt32\' ' + - 'ORDER BY name'; - break; - case 'TIMESTAMPMS': - query = 'SELECT name ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\' AND ' + - 'type = \'UInt64\' ' + - 'ORDER BY name'; - break; - case 'DATABASES': - query = 'SELECT name ' + - 'FROM system.databases ' + - 'ORDER BY name'; - break; - case 'COLUMNS': - query = 'SELECT name text, type value ' + - 'FROM system.columns ' + - 'WHERE database = \'' + this.target.database + '\' AND ' + - 'table = \'' + this.target.table + '\''; - break; - } - return query; - }; -} -export {SqlQueryCtrl}; diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/response_parser.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/response_parser.ts deleted file mode 100644 index 5137d2f..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/response_parser.ts +++ /dev/null @@ -1,25 +0,0 @@ -/// -import _ from 'lodash'; - -export default class ResponseParser { - parse(query, results) { - if (!results || results.data.length === 0) { return []; } - - var sqlResults = results.data; - var res = []; - _.each(sqlResults, r => { - if (!_.isObject(r)) { - res.push({ text: r }); - return - } - let keys = Object.keys(r); - if (keys.length > 1) { - res.push(r); - } else { - res.push({ text: r[keys[0]]}); - } - }); - - return res - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/scanner.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/scanner.ts deleted file mode 100644 index 6892d3d..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/scanner.ts +++ /dev/null @@ -1,524 +0,0 @@ -import _ from 'lodash'; - -export default class Scanner { - tree: any; - rootToken: any; - token: any; - skipSpace: boolean; - re: any; - expectedNext: boolean; - - _sOriginal: any; - _s: any; - - /** @ngInject */ - constructor(s) { - this._sOriginal = s; - this.token = null; - } - - raw() { - return this._sOriginal; - }; - - expect(token) { - this.expectNext(); - if (!this.isToken(token)) { - throw("expecting [" + token + "], but got [" + this.token + "] at [" + this._s + "]"); - } - }; - - isToken(token) { - return _.toUpper(token) === _.toUpper(this.token); - }; - - expectNext() { - if (!this.next()) { - throw("expecting additional token at the end of query [" + this._sOriginal + "]"); - } - }; - - next() { - while (this._next()) { - if (this.skipSpace && isWS(this.token)) { - // skip whitespace - continue; - } - if (isComment(this.token)) { - // skip comment - continue; - } - return true; - } - return false; - }; - - _next() { - if (this._s.length === 0) { - return false; - } - let r = this.re.exec(this._s); - if (r === null) { - throw("cannot find next token in [" + this._s + "]"); - } - - this.token = r[0]; - this._s = this._s.substring(this.token.length); - return true; - }; - - Format() { - return print(this.toAST()); - }; - - Print(ast) { - return print(ast) - } - - push(argument) { - this.tree[this.rootToken].push(argument); - this.expectedNext = false; - } - - setRoot(token) { - this.rootToken = token.toLowerCase(); - this.tree[this.rootToken] = []; - this.expectedNext = true; - } - - isExpectedNext(): boolean { - let v = this.expectedNext; - this.expectedNext = false; - return v - } - - toAST() { - this._s = this._sOriginal; - this.tree = {}; - this.setRoot('root'); - this.expectedNext = false; - this.skipSpace = true; - this.re = new RegExp("^(?:" + tokenRe + ")", 'i'); - let subQuery = '', - argument = ''; - - while (this.next()) { - if (!this.isExpectedNext() && isStatement(this.token) && !this.tree.hasOwnProperty(_.toLower(this.token))) { - if (!isClosured(argument)) { - argument += this.token; - continue - } - if (argument.length > 0) { - this.push(argument); - argument = ''; - } - this.setRoot(this.token); - } - else if (this.token === ',' && isClosured(argument)) { - this.push(argument); - argument = ''; - this.expectedNext = true; - } - else if (isClosureChars(this.token) && this.rootToken === 'from') { - subQuery = betweenBraces(this._s); - this.tree[this.rootToken] = toAST(subQuery); - this._s = this._s.substring(subQuery.length + 1); - } - else if (isMacroFunc(this.token)) { - let func = this.token; - if (!this.next()) { - throw("wrong function signature for `" + func + "` at [" + this._s + "]"); - } - - subQuery = betweenBraces(this._s); - let subAST = toAST(subQuery); - if (isSet(subAST, 'root')) { - this.tree[func] = subAST['root'].map(function (item) { - return item; - }); - } else { - this.tree[func] = subAST; - } - this._s = this._s.substring(subQuery.length + 1); - - // macro funcs are used instead of SELECT statement - this.tree['select'] = []; - } - else if (isIn(this.token)) { - argument += ' ' + this.token; - if (!this.next()) { - throw("wrong in signature for `" + argument + "` at [" + this._s + "]"); - } - - if (isClosureChars(this.token)) { - subQuery = betweenBraces(this._s); - let subAST = toAST(subQuery); - if (isSet(subAST, 'root')) { - argument += ' (' + subAST['root'].map(function (item) { - return item; - }); - argument = argument + ')'; - } else { - argument += ' (' + newLine + print(subAST, tabSize) + ')'; - this.push(argument); - argument = ''; - } - this._s = this._s.substring(subQuery.length + 1); - } else { - argument += ' ' + this.token; - } - } - else if (isCond(this.token) && (this.rootToken === 'where' || this.rootToken === 'prewhere')) { - if (isClosured(argument)) { - this.push(argument); - argument = this.token; - } else { - argument += ' ' + this.token; - } - } - else if (isJoin(this.token)) { - let joinType = this.token, source; - if (!this.next()) { - throw("wrong join signature for `" + joinType + "` at [" + this._s + "]"); - } - - if (isClosureChars(this.token)) { - subQuery = betweenBraces(this._s); - source = toAST(subQuery); - this._s = this._s.substring(subQuery.length + 1); - } else { - source = [this.token]; - } - - this.expect('using'); - this.tree['join'] = {type: joinType, source: source, using: []}; - while (this.next()) { - if (isStatement(this.token)) { - if (argument !== '') { - this.push(argument); - argument = ''; - } - this.setRoot(this.token); - break; - } - if (!isID(this.token)) { - continue; - } - this.tree['join'].using.push(this.token); - } - } else if (this.rootToken === 'union all') { - let statement = 'union all'; - this._s = this.token + ' ' + this._s; - let subQueryPos = this._s.toLowerCase().indexOf(statement); - while (subQueryPos !== -1) { - let subQuery = this._s.substring(0, subQueryPos); - let ast = toAST(subQuery); - this.tree[statement].push(ast); - this._s = this._s.substring(subQueryPos + statement.length, this._s.length); - subQueryPos = this._s.toLowerCase().indexOf(statement); - } - let ast = toAST(this._s); - this._s = ''; - this.tree[statement].push(ast); - } - else if (isClosureChars(this.token) || this.token === '.') { - argument += this.token; - } else if (this.token === ',') { - argument += this.token + ' '; - } else { - argument += (argument === '' || isSkipSpace(argument[argument.length - 1])) - ? this.token - : ' ' + this.token; - } - } - - if (argument !== '') { - this.push(argument); - } - return this.tree; - }; -} - -let wsRe = "\\s+", - commentRe = "--[^\n]*|/\\*(?:[^*]|\\*[^/])*\\*/", - idRe = "[a-zA-Z_][a-zA-Z_0-9]*", - intRe = "\\d+", - powerIntRe = "\\d+e\\d+", - floatRe = "\\d+\\.\\d*|\\d*\\.\\d+|\\d+[eE][-+]\\d+", - stringRe = "('[^']*')|(`[^`]*`)", - binaryOpRe = "=>|\\|\\||>=|<=|==|!=|<>|->|[-+/%*=<>\\.!]", - statementRe = "(select|from|where|having|order by|group by|limit|format|prewhere|union all)", - joinsRe = "(any inner join|any left join|all inner join|all left join" + - "|global any inner join|global any left join|global all inner join|global all left join)", - macroFuncRe = "(\\$rateColumns|\\$rate|\\$columns)", - condRe = "\\b(or|and)\\b", - inRe = "\\b(global in|global not in|not in|in)\\b", - closureRe = "[\\(\\)\\[\\]]", - specCharsRe = "[,?:]", - macroRe = "\\$[A-Za-z0-9_$]+", - skipSpaceRe = "[\\(\\.! \\[]", - - builtInFuncRe = "\\b(avg|countIf|first|last|max|min|sum|sumIf|ucase|lcase|mid|round|rank|now|" + - "coalesce|ifnull|isnull|nvl|count|timeSlot|yesterday|today|now|toRelativeSecondNum|" + - "toRelativeMinuteNum|toRelativeHourNum|toRelativeDayNum|toRelativeWeekNum|toRelativeMonthNum|" + - "toRelativeYearNum|toTime|toStartOfHour|toStartOfFiveMinute|toStartOfMinute|toStartOfYear|" + - "toStartOfQuarter|toStartOfMonth|toMonday|toSecond|toMinute|toHour|toDayOfWeek|toDayOfMonth|" + - "toMonth|toYear|toFixedString|toStringCutToZero|reinterpretAsString|reinterpretAsDate|" + - "reinterpretAsDateTime|reinterpretAsFloat32|reinterpretAsFloat64|reinterpretAsInt8|" + - "reinterpretAsInt16|reinterpretAsInt32|reinterpretAsInt64|reinterpretAsUInt8|" + - "reinterpretAsUInt16|reinterpretAsUInt32|reinterpretAsUInt64|toUInt8|toUInt16|toUInt32|" + - "toUInt64|toInt8|toInt16|toInt32|toInt64|toFloat32|toFloat64|toDate|toDateTime|toString|" + - "bitAnd|bitOr|bitXor|bitNot|bitShiftLeft|bitShiftRight|abs|negate|modulo|intDivOrZero|" + - "intDiv|divide|multiply|minus|plus|empty|notEmpty|length|lengthUTF8|lower|upper|lowerUTF8|" + - "upperUTF8|reverse|reverseUTF8|concat|substring|substringUTF8|appendTrailingCharIfAbsent|" + - "position|positionUTF8|match|extract|extractAll|like|notLike|replaceOne|replaceAll|" + - "replaceRegexpOne|range|arrayElement|has|indexOf|countEqual|arrayEnumerate|arrayEnumerateUniq|" + - "arrayJoin|arrayMap|arrayFilter|arrayExists|arrayCount|arrayAll|arrayFirst|arraySum|splitByChar|" + - "splitByString|alphaTokens|domainWithoutWWW|topLevelDomain|firstSignificantSubdomain|" + - "cutToFirstSignificantSubdomain|queryString|URLPathHierarchy|URLHierarchy|extractURLParameterNames|" + - "extractURLParameters|extractURLParameter|queryStringAndFragment|cutWWW|cutQueryString|" + - "cutFragment|cutQueryStringAndFragment|cutURLParameter|IPv4NumToString|IPv4StringToNum|" + - "IPv4NumToStringClassC|IPv6NumToString|IPv6StringToNum|rand|rand64|halfMD5|MD5|sipHash64|" + - "sipHash128|cityHash64|intHash32|intHash64|SHA1|SHA224|SHA256|URLHash|hex|unhex|bitmaskToList|" + - "bitmaskToArray|floor|ceil|round|roundToExp2|roundDuration|roundAge|regionToCountry|" + - "regionToContinent|regionToPopulation|regionIn|regionHierarchy|regionToName|OSToRoot|OSIn|" + - "OSHierarchy|SEToRoot|SEIn|SEHierarchy|dictGetUInt8|dictGetUInt16|dictGetUInt32|" + - "dictGetUInt64|dictGetInt8|dictGetInt16|dictGetInt32|dictGetInt64|dictGetFloat32|" + - "dictGetFloat64|dictGetDate|dictGetDateTime|dictGetString|dictGetHierarchy|dictHas|dictIsIn|" + - "argMin|argMax|uniqCombined|uniqHLL12|uniqExact|uniqExactIf|groupArray|groupUniqArray|quantile|" + - "quantileDeterministic|quantileTiming|quantileTimingWeighted|quantileExact|" + - "quantileExactWeighted|quantileTDigest|median|quantiles|varSamp|varPop|stddevSamp|stddevPop|" + - "covarSamp|covarPop|corr|sequenceMatch|sequenceCount|uniqUpTo|avgIf|" + - "quantilesTimingIf|argMinIf|uniqArray|sumArray|quantilesTimingArrayIf|uniqArrayIf|medianIf|" + - "quantilesIf|varSampIf|varPopIf|stddevSampIf|stddevPopIf|covarSampIf|covarPopIf|corrIf|" + - "uniqArrayIf|sumArrayIf|uniq)\\b", - operatorRe = "\\b(select|group by|order by|from|where|limit|offset|having|as|" + - "when|else|end|type|left|right|on|outer|desc|asc|primary|key|between|" + - "foreign|not|null|inner|cross|natural|database|prewhere|using|global|in)\\b", - dataTypeRe = "\\b(int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + - "money|real|number|integer|" + - "uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|datetime|enum8|enum16|" + - "array|tuple|string)\\b", - - wsOnlyRe = new RegExp("^(?:" + wsRe + ")$"), - commentOnlyRe = new RegExp("^(?:" + commentRe + ")$"), - idOnlyRe = new RegExp("^(?:" + idRe + ")$"), - closureOnlyRe = new RegExp("^(?:" + closureRe + ")$"), - macroFuncOnlyRe = new RegExp("^(?:" + macroFuncRe + ")$"), - statementOnlyRe = new RegExp("^(?:" + statementRe + ")$", 'i'), - joinsOnlyRe = new RegExp("^(?:" + joinsRe + ")$", 'i'), - operatorOnlyRe = new RegExp("^(?:" + operatorRe + ")$", 'i'), - dataTypeOnlyRe = new RegExp("^(?:" + dataTypeRe + ")$"), - builtInFuncOnlyRe = new RegExp("^(?:" + builtInFuncRe + ")$"), - macroOnlyRe = new RegExp("^(?:" + macroRe + ")$", 'i'), - inOnlyRe = new RegExp("^(?:" + inRe + ")$", 'i'), - condOnlyRe = new RegExp("^(?:" + condRe + ")$", 'i'), - numOnlyRe = new RegExp("^(?:" + [powerIntRe, intRe, floatRe].join("|") + ")$"), - stringOnlyRe = new RegExp("^(?:" + stringRe + ")$"), - skipSpaceOnlyRe = new RegExp("^(?:" + skipSpaceRe + ")$"), - binaryOnlyRe = new RegExp("^(?:" + binaryOpRe + ")$"); - -var tokenRe = [statementRe, macroFuncRe, joinsRe, inRe, wsRe, commentRe, idRe, stringRe, powerIntRe, floatRe, intRe, - binaryOpRe, closureRe, specCharsRe, macroRe].join("|"); - -function isSkipSpace(token) { - return skipSpaceOnlyRe.test(token); -} - -function isCond(token) { - return condOnlyRe.test(token); -} - -function isIn(token) { - return inOnlyRe.test(token); -} - -function isJoin(token) { - return joinsOnlyRe.test(token); -} - -function isWS(token) { - return wsOnlyRe.test(token); -} - -function isMacroFunc(token) { - return macroFuncOnlyRe.test(token); -} - -function isMacro(token) { - return macroOnlyRe.test(token); -} - -function isComment(token) { - return commentOnlyRe.test(token); -} - -function isID(token) { - return idOnlyRe.test(token); -} - -function isStatement(token) { - return statementOnlyRe.test(token); -} - -function isOperator(token) { - return operatorOnlyRe.test(token); -} - -function isDataType(token) { - return dataTypeOnlyRe.test(token); -} - -function isBuiltInFunc(token) { - return builtInFuncOnlyRe.test(token); -} - -function isClosureChars(token) { - return closureOnlyRe.test(token); -} - -function isNum(token) { - return numOnlyRe.test(token); -} - -function isString(token) { - return stringOnlyRe.test(token); -} - -function isBinary(token) { - return binaryOnlyRe.test(token); -} - -var tabSize = ' ', // 4 spaces - newLine = '\n'; - -function printItems(items, tab = '', separator = '') { - var result = ''; - if (_.isArray(items)) { - if (items.length === 1) { - result += ' ' + items[0]; - } else { - result += newLine; - items.forEach(function (item, i) { - result += tab + tabSize + item; - if (i !== items.length - 1) { - result += separator; - result += newLine; - } - }); - } - } else { - result = newLine + '(' + newLine + print(items, tab + tabSize) + newLine + ')'; - } - - return result; -} - -function toAST(s) { - var scanner = new Scanner(s); - return scanner.toAST(); -} - -function isSet(obj, prop) { - return obj.hasOwnProperty(prop) && !_.isEmpty(obj[prop]); -} - -function isClosured(argument) { - return (argument.match(/\(/g) || []).length === (argument.match(/\)/g) || []).length; -} - -function betweenBraces(query) { - var openBraces = 1, subQuery = ''; - for (var i = 0; i < query.length; i++) { - if (query.charAt(i) === '(') { - openBraces++; - } - if (query.charAt(i) === ')') { - if (openBraces === 1) { - subQuery = query.substring(0, i); - break; - } - openBraces--; - } - } - return subQuery; -} - -// see https://clickhouse.yandex/reference_ru.html#SELECT -function print(AST, tab = '') { - var result = ''; - if (isSet(AST, '$rate')) { - result += tab + '$rate('; - result += printItems(AST.$rate, tab, ',') + ')'; - } - - if (isSet(AST, '$columns')) { - result += tab + '$columns('; - result += printItems(AST.$columns, tab, ',') + ')'; - } - - if (isSet(AST, '$rateColumns')) { - result += tab + '$rateColumns('; - result += printItems(AST.$rateColumns, tab, ',') + ')'; - } - - if (isSet(AST, 'select')) { - result += tab + 'SELECT'; - result += printItems(AST.select, tab, ','); - } - - if (isSet(AST, 'from')) { - result += newLine + tab + 'FROM'; - result += printItems(AST.from, tab); - } - - if (isSet(AST, 'join')) { - result += tab + newLine + AST.join.type.toUpperCase() + - printItems(AST.join.source, tab) + - ' USING ' + printItems(AST.join.using, tab, ','); - } - - if (isSet(AST, 'prewhere')) { - result += newLine + tab + 'PREWHERE'; - result += printItems(AST.prewhere, tab); - } - - if (isSet(AST, 'where')) { - result += newLine + tab + 'WHERE'; - result += printItems(AST.where, tab); - } - - if (isSet(AST, 'group by')) { - result += newLine + tab + 'GROUP BY'; - result += printItems(AST['group by'], tab, ','); - } - - if (isSet(AST, 'having')) { - result += newLine + tab + 'HAVING'; - result += printItems(AST.having, tab); - } - - if (isSet(AST, 'order by')) { - result += newLine + tab + 'ORDER BY'; - result += printItems(AST['order by'], tab, ','); - } - - if (isSet(AST, 'limit')) { - result += newLine + tab + 'LIMIT'; - result += printItems(AST.limit, tab, ','); - } - - if (isSet(AST, 'union all')) { - AST['union all'].forEach(function (v) { - result += newLine + newLine + tab + 'UNION ALL' + newLine + newLine; - result += print(v, tab) - }) - } - - if (isSet(AST, 'format')) { - result += newLine + tab + 'FORMAT'; - result += printItems(AST.format, tab); - } - - return result; -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/snippets/clickhouse.js b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/snippets/clickhouse.js deleted file mode 100644 index 153c8ff..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/snippets/clickhouse.js +++ /dev/null @@ -1,10 +0,0 @@ -// jshint ignore: start -// jscs: disable -ace.define("ace/snippets/clickhouse",["require","exports","module"], function(require, exports, module) { - "use strict"; - - exports.snippets = [ - ]; - - exports.scope = "clickhouse"; -}); \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_query.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_query.ts deleted file mode 100644 index 5867d4a..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_query.ts +++ /dev/null @@ -1,377 +0,0 @@ -/// - -import _ from 'lodash'; -import * as dateMath from 'app/core/utils/datemath'; -import moment from 'moment'; -import Scanner from './scanner'; - -var durationSplitRegexp = /(\d+)(ms|s|m|h|d|w|M|y)/; - -export default class SqlQuery { - target: any; - templateSrv: any; - options: any; - - /** @ngInject */ - constructor(target, templateSrv?, options?) { - this.target = target; - this.templateSrv = templateSrv; - this.options = options; - } - - replace(options, adhocFilters) { - var self = this, - query = this.target.query, - scanner = new Scanner(query), - dateTimeType = this.target.dateTimeType ? this.target.dateTimeType : 'DATETIME', - from = SqlQuery.convertTimestamp(SqlQuery.round(this.options.range.from, this.target.round), dateTimeType), - to = SqlQuery.convertTimestamp(SqlQuery.round(this.options.range.to, this.target.round), dateTimeType), - timeSeries = SqlQuery.getTimeSeries(dateTimeType), - timeFilter = SqlQuery.getTimeFilter(this.options.rangeRaw.to === 'now', dateTimeType), - i = this.templateSrv.replace(this.target.interval, options.scopedVars) || options.interval, - interval = SqlQuery.convertInterval(i, this.target.intervalFactor || 1, dateTimeType); - try { - let ast = scanner.toAST(); - if (adhocFilters.length > 0) { - if (!ast.hasOwnProperty('where')) { - ast.where = []; - } - adhocFilters.forEach(function(af) { - let parts = af.key.split('.'); - if (parts.length < 3) { - console.log("adhoc filters: filter " + af.key + "` has wrong format"); - return - } - if (self.target.database != parts[0] || self.target.table != parts[1]) { - return - } - let operator = SqlQuery.clickhouseOperator(af.operator); - let cond = parts[2] + " " + operator + " " + af.value; - if (ast.where.length > 0) { - // OR is not implemented - // @see https://github.com/grafana/grafana/issues/10918 - cond = "AND " + cond - } - ast.where.push(cond) - }); - } - query = scanner.Print(ast); - if (ast.hasOwnProperty('$columns') && !_.isEmpty(ast['$columns'])) { - query = SqlQuery.columns(query); - } else if (ast.hasOwnProperty('$rateColumns') && !_.isEmpty(ast['$rateColumns'])) { - query = SqlQuery.rateColumns(query); - } else if (ast.hasOwnProperty('$rate') && !_.isEmpty(ast['$rate'])) { - query = SqlQuery.rate(query, ast); - } - } catch (err) { - console.log('AST parser error: ', err.message) - } - - query = this.templateSrv.replace(query, options.scopedVars, SqlQuery.interpolateQueryExpr); - query = SqlQuery.unescape(query); - this.target.rawQuery = query - .replace(/\$timeSeries/g, timeSeries) - .replace(/\$timeFilter/g, timeFilter) - .replace(/\$table/g, this.target.database + '.' + this.target.table) - .replace(/\$from/g, from) - .replace(/\$to/g, to) - .replace(/\$dateCol/g, this.target.dateColDataType) - .replace(/\$dateTimeCol/g, this.target.dateTimeColDataType) - .replace(/\$interval/g, interval) - .replace(/(?:\r\n|\r|\n)/g, ' '); - return this.target.rawQuery; - } - - // $columns(query) - static columns(query: string): string { - if (query.slice(0, 9) === '$columns(') { - var fromIndex = SqlQuery._fromIndex(query); - var args = query.slice(9,fromIndex) - .trim() // rm spaces - .slice(0, -1), // cut ending brace - scanner = new Scanner(args), - ast = scanner.toAST(); - var root = ast['root']; - - if (root.length !== 2) { - throw {message: 'Amount of arguments must equal 2 for $columns func. Parsed arguments are: ' + root.join(', ')}; - } - - query = SqlQuery._columns(root[0], root[1], query.slice(fromIndex)); - } - - return query; - } - - static _columns(key: string, value: string, fromQuery: string): string { - if (key.slice(-1) === ')' || value.slice(-1) === ')') { - throw {message: 'Some of passed arguments are without aliases: ' + key + ', ' + value}; - } - - var keyAlias = key.trim().split(' ').pop(), - valueAlias = value.trim().split(' ').pop(), - havingIndex = fromQuery.toLowerCase().indexOf('having'), - having = "", - aliasRegex = /%(\w+)/g, - concatExpr = ""; - - if (key.match(/^'.*'$/) && key.match(aliasRegex)) { - concatExpr = 'concat(' + key.replace(aliasRegex, "', $1, '").replace(/, ''/g, '') + ')'; - key = keyAlias = _.uniq(key.match(aliasRegex).map(k => k.slice(1))).join(', '); - } - - if (havingIndex !== -1) { - having = fromQuery.slice(havingIndex, fromQuery.length); - fromQuery = fromQuery.slice(0, havingIndex); - } - fromQuery = SqlQuery._applyTimeFilter(fromQuery); - - return 'SELECT ' + - 't' + - ', groupArray((' + (concatExpr || keyAlias) + ', ' + valueAlias + ')) as groupArr' + - ' FROM (' + - ' SELECT $timeSeries as t' + - ', ' + key + - ', ' + value + ' ' + - fromQuery + - ' GROUP BY t, ' + keyAlias + - ' ' + having + - ' ORDER BY t, ' + keyAlias + - ') ' + - 'GROUP BY t ' + - 'ORDER BY t'; - } - - // $rateColumns(query) - static rateColumns(query: string): string { - if (query.slice(0, 13) === '$rateColumns(') { - var fromIndex = SqlQuery._fromIndex(query); - var args = query.slice(13,fromIndex) - .trim() // rm spaces - .slice(0, -1), // cut ending brace - scanner = new Scanner(args), - ast = scanner.toAST(); - var root = ast['root']; - - if (root.length !== 2) { - throw {message: 'Amount of arguments must equal 2 for $columns func. Parsed arguments are: ' + root.join(', ')}; - } - - query = SqlQuery._columns(root[0], root[1], query.slice(fromIndex)); - query = 'SELECT t' + - ', arrayMap(a -> (a.1, a.2/runningDifference( t/1000 )), groupArr)' + - ' FROM (' + - query + - ')'; - } - - return query; - } - - // $rate(query) - static rate(query: string, ast: any): string { - if (query.slice(0, 6) === '$rate(') { - var fromIndex = SqlQuery._fromIndex(query); - if (ast.$rate.length < 1) { - throw {message: 'Amount of arguments must be > 0 for $rate func. Parsed arguments are: ' + ast.$rate.join(', ')}; - } - - query = SqlQuery._rate(ast['$rate'], query.slice(fromIndex)); - } - - return query; - } - - static _fromIndex(query: string): number { - var fromIndex = query.toLowerCase().indexOf('from'); - if (fromIndex === -1) { - throw {message: 'Could not find FROM-statement at: ' + query}; - } - return fromIndex; - } - - static _rate(args, fromQuery: string): string { - var aliases = []; - _.each(args, function(arg){ - if (arg.slice(-1) === ')') { - throw {message: 'Argument "' + arg + '" cant be used without alias'}; - } - aliases.push(arg.trim().split(' ').pop()); - }); - - var rateColums = []; - _.each(aliases, function(a){ - rateColums.push(a + '/runningDifference(t/1000) ' + a + 'Rate'); - }); - - fromQuery = SqlQuery._applyTimeFilter(fromQuery); - return 'SELECT ' + '' + - 't' + - ', ' + rateColums.join(',') + - ' FROM (' + - ' SELECT $timeSeries as t' + - ', ' + args.join(',') + - ' ' + fromQuery + - ' GROUP BY t' + - ' ORDER BY t' + - ')'; - } - - static _applyTimeFilter(query: string): string { - if ( query.toLowerCase().indexOf('where') !== -1 ) { - query = query.replace(/where/i, 'WHERE $timeFilter AND '); - } else { - query += ' WHERE $timeFilter'; - } - - return query; - } - - static getTimeSeries(dateTimeType: string): string { - if (dateTimeType === 'DATETIME') { - return '(intDiv(toUInt32($dateTimeCol), $interval) * $interval) * 1000'; - } - - if (dateTimeType === 'TIMESTAMPMS') { - return 'intDiv($dateTimeCol, $interval) * $interval'; - } - - return '(intDiv($dateTimeCol, $interval) * $interval) * 1000' - } - - static getTimeFilter(isToNow: boolean, dateTimeType: string): string { - var dateCol = function (t: string): string { - if (dateTimeType === 'TIMESTAMPMS') { - t = t + '/1000'; - } - - return 'toDate(' + t + ')'; - }; - - var dateTimeCol = function (t: string): string { - if (dateTimeType === 'DATETIME') { - return 'toDateTime('+ t +')'; - } - return t - }; - - if (isToNow) { - return '$dateCol >= ' + dateCol('$from') + ' AND $dateTimeCol >= ' + dateTimeCol('$from'); - } - - return '$dateCol BETWEEN ' + dateCol('$from') + ' AND ' + dateCol('$to') + ' AND $dateTimeCol BETWEEN ' + dateTimeCol('$from') + ' AND ' + dateTimeCol('$to'); - } - - // date is a moment object - static convertTimestamp(date: any, dateTimeType: string) { - //return date.format("'Y-MM-DD HH:mm:ss'") - if (_.isString(date)) { - date = dateMath.parse(date, true); - } - - return Math.floor(dateTimeType === 'TIMESTAMPMS' ? date.valueOf() : date.valueOf() / 1000); - } - - static round(date: any, round: string): any { - if (round === "" || round === undefined || round === "0s" ) { - return date; - } - - if (_.isString(date)) { - date = dateMath.parse(date, true); - } - - let coeff = SqlQuery.convertInterval(round, 1, 'TIMESTAMPMS'); - let rounded = Math.floor(date.valueOf() / coeff) * coeff; - return moment(rounded); - } - - static convertInterval(interval, intervalFactor, dateTimeType: string) { - var m = interval.match(durationSplitRegexp); - if (m === null) { - throw {message: 'Received duration is invalid: ' + interval}; - } - - var dur = moment.duration(parseInt(m[1]), m[2]); - var sec = dur.asSeconds(); - - if (dateTimeType === 'TIMESTAMPMS') { - return Math.ceil((sec * 1000 || 1) * intervalFactor); - } - - if (sec < 1) { - sec = 1; - } - - return Math.ceil(sec * intervalFactor); - } - - static interpolateQueryExpr (value, variable, defaultFormatFn) { - // if no `multiselect` or `include all` - do not escape - if (!variable.multi && !variable.includeAll) { - return value; - } - if (typeof value === 'string') { - return SqlQuery.clickhouseEscape(value, variable); - } - let escapedValues = _.map(value, function(v){ - return SqlQuery.clickhouseEscape(v, variable); - }); - return escapedValues.join(','); - } - - static clickhouseOperator(value) { - switch (value){ - case "=": - case "!=": - case ">": - case "<": - return value; - case "=~": - return "LIKE"; - case "!~": - return "NOT LIKE"; - default: - console.log("adhoc filters: got unsupported operator `" + value + "`"); - return value - } - } - - static clickhouseEscape(value, variable) { - var isDigit = true; - // if at least one of options is not digit - _.each(variable.options, function(opt): boolean{ - if (opt.value === '$__all') { - return true; - } - if (!opt.value.match(/^\d+$/)) { - isDigit = false; - return false; - } - return true - }); - - if (isDigit) { - return value; - } else { - return "'" + value.replace(/[\\']/g, '\\$&') + "'"; - } - } - - static unescape(query) { - let macros = '$unescape('; - let openMacros = query.indexOf(macros); - while (openMacros !== -1) { - let closeMacros = query.indexOf(')', openMacros); - if(closeMacros === -1) { - throw {message: 'unable to find closing brace for $unescape macros: ' + query.substring(0, openMacros)}; - } - let arg = query.substring(openMacros+macros.length, closeMacros) - .trim(); - arg = arg.replace(/[']+/g, ''); - query = query.substring(0, openMacros) + arg + query.substring(closeMacros+1, query.length); - openMacros = query.indexOf('$unescape('); - } - return query - } -} diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_series.ts b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_series.ts deleted file mode 100644 index bb7487b..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/src/sql_series.ts +++ /dev/null @@ -1,150 +0,0 @@ -import _ from 'lodash'; - -export default class SqlSeries { - series: any; - meta: any; - tillNow: any; - from: any; - to: any; - - /** @ngInject */ - constructor(options) { - this.series = options.series; - this.meta = options.meta; - this.tillNow = options.tillNow; - this.from = options.from; - this.to = options.to; - } - - toTable():any { - let self = this, data = []; - if (this.series.length === 0) { - return data; - } - - let columns = []; - _.each(self.meta, function(col) { - columns.push({"text": col.name, "type": SqlSeries._toJSType(col.type)}) - }); - - let rows = []; - _.each(self.series, function (ser) { - let r = []; - _.each(ser, function (v) { - r.push(SqlSeries._formatValue(v)) - }); - rows.push(r) - }); - - data.push({ - "columns": columns, - "rows": rows, - "type": "table" - }); - - return data - } - - toTimeSeries():any { - let self = this, timeSeries = []; - if (self.series.length === 0) { - return timeSeries; - } - - // timeCol have to be the first column always - let timeCol = self.meta[0], metrics = {}, intervals = [], t; - _.each(self.series, function(series) { - t = SqlSeries._formatValue(series[timeCol.name]); - intervals.push(t); - // rm time value from series - delete series[timeCol.name]; - _.each(series, function(val, key) { - if (_.isArray(val)) { - _.each(val, function(arr) { - (metrics[arr[0]] = metrics[arr[0]] || {})[t] = arr[1]; - }); - } else { - (metrics[key] = metrics[key] || {})[t] = val; - } - }); - }); - - _.each(metrics, function(v, k) { - let datapoints = []; - _.each(intervals, function(interval) { - if (metrics[k][interval] === undefined) { - metrics[k][interval] = null; - } - datapoints.push([SqlSeries._formatValue(metrics[k][interval]), interval]); - }); - timeSeries.push({target: k, datapoints: self.extrapolate(datapoints)}); - }); - return timeSeries; - }; - - extrapolate(datapoints) { - if (datapoints.length < 10 || (!this.tillNow && datapoints[0][0] !== 0)) { - return datapoints; - } - - // Duration between first/last samples and boundary of range. - let durationToStart = datapoints[0][1]/1000 - this.from, - durationToEnd = this.to - datapoints[datapoints.length-1][1]/1000; - - // If the first/last samples are close to the boundaries of the range, - // extrapolate the result. - let sampledInterval = (datapoints[datapoints.length-1][1] - datapoints[0][1])/1000, - averageDurationBetweenSamples = sampledInterval / (datapoints.length-1); - - let diff; - // close to left border and value is 0 because of runningDifference function - if (durationToStart < averageDurationBetweenSamples && datapoints[0][0] === 0) { - diff = ((datapoints[1][0] - datapoints[2][0]) / datapoints[1][0]) * 0.1; - diff %= 1; - if (isNaN(diff)) { - diff = 0; - } - datapoints[0][0] = datapoints[1][0] * (1 + diff); - } - - if (durationToEnd < averageDurationBetweenSamples) { - diff = ((datapoints[datapoints.length-2][0] - datapoints[datapoints.length-3][0]) / datapoints[datapoints.length-2][0]) * 0.1; - diff %= 1; - if (isNaN(diff)) { - diff = 0; - } - datapoints[datapoints.length-1][0] = datapoints[datapoints.length-2][0] * (1 + diff); - } - - return datapoints; - }; - - static _toJSType(type:any):string { - switch (type) { - case 'UInt8': - case 'UInt16': - case 'UInt32': - case 'UInt64': - case 'Int8': - case 'Int16': - case 'Int32': - case 'Int64': - return "number"; - default: - return "string" - } - } - - static _formatValue(value:any) { - if (value === null) { - return value - } - - let numeric = Number(value); - if (isNaN(numeric)) { - return value - } else { - return numeric - } - }; -} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tsconfig.json b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tsconfig.json deleted file mode 100644 index 491451f..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compileOnSave": false, - "compilerOptions": { - "target": "ES5", - "module": "system", - "sourceMap": true, - "declaration": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "noImplicitAny": false - }, - "exclude": [ - "node_modules" - ] -} \ No newline at end of file diff --git a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tslint.json b/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tslint.json deleted file mode 100644 index 260e820..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/vertamedia-clickhouse-datasource/tslint.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "rules": { - "class-name": true, - "comment-format": [false, "check-space"], - "curly": true, - "eofline": true, - "forin": false, - "indent": [true, "spaces"], - "label-position": true, - "label-undefined": true, - "max-line-length": [true, 140], - "member-access": false, - "no-arg": true, - "no-bitwise": true, - "no-console": [true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-construct": true, - "no-debugger": true, - "no-duplicate-key": true, - "no-duplicate-variable": true, - "no-empty": false, - "no-eval": true, - "no-inferrable-types": true, - "no-shadowed-variable": false, - "no-string-literal": false, - "no-switch-case-fall-through": false, - "no-trailing-whitespace": true, - "no-unused-expression": false, - "no-unused-variable": false, - "no-unreachable": true, - "no-use-before-declare": true, - "no-var-keyword": false, - "object-literal-sort-keys": false, - "one-line": [true, - "check-open-brace", - "check-catch", - "check-else" - ], - "radix": false, - "semicolon": true, - "triple-equals": [true, "allow-null-check"], - "typedef-whitespace": [true, { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }], - "variable-name": [true, "ban-keywords"], - "whitespace": [true, - "check-branch", - "check-decl", - "check-type" - ] - } -} \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-console-sink.properties b/image_content/config/kafka/etc/kafka/conf/connect-console-sink.properties deleted file mode 100644 index e240a8f..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-console-sink.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -name=local-console-sink -connector.class=org.apache.kafka.connect.file.FileStreamSinkConnector -tasks.max=1 -topics=connect-test \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-console-source.properties b/image_content/config/kafka/etc/kafka/conf/connect-console-source.properties deleted file mode 100644 index d0e2069..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-console-source.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -name=local-console-source -connector.class=org.apache.kafka.connect.file.FileStreamSourceConnector -tasks.max=1 -topic=connect-test \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-distributed.properties b/image_content/config/kafka/etc/kafka/conf/connect-distributed.properties deleted file mode 100644 index 931b853..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-distributed.properties +++ /dev/null @@ -1,51 +0,0 @@ -## -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -## - -# These are defaults. This file just demonstrates how to override some settings. -bootstrap.servers=localhost:9092 - -# unique name for the cluster, used in forming the Connect cluster group. Note that this must not conflict with consumer group IDs -group.id=connect-cluster - -# The converters specify the format of data in Kafka and how to translate it into Connect data. Every Connect user will -# need to configure these based on the format they want their data in when loaded from or stored into Kafka -key.converter=org.apache.kafka.connect.json.JsonConverter -value.converter=org.apache.kafka.connect.json.JsonConverter -# Converter-specific settings can be passed in by prefixing the Converter's setting with the converter we want to apply -# it to -key.converter.schemas.enable=true -value.converter.schemas.enable=true - -# The internal converter used for offsets and config data is configurable and must be specified, but most users will -# always want to use the built-in default. Offset and config data is never visible outside of Kafka Connect in this format. -internal.key.converter=org.apache.kafka.connect.json.JsonConverter -internal.value.converter=org.apache.kafka.connect.json.JsonConverter -internal.key.converter.schemas.enable=false -internal.value.converter.schemas.enable=false - -# Topic to use for storing offsets. This topic should have many partitions and be replicated. -offset.storage.topic=connect-offsets - -# Topic to use for storing connector and task configurations; note that this should be a single partition, highly replicated topic. -# You may need to manually create the topic to ensure single partition for the config topic as auto created topics may have multiple partitions. -config.storage.topic=connect-configs - -# Topic to use for storing statuses. This topic can have multiple partitions and should be replicated. -status.storage.topic=connect-status - -# Flush much faster than normal, which is useful for testing/debugging -offset.flush.interval.ms=10000 \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-file-sink.properties b/image_content/config/kafka/etc/kafka/conf/connect-file-sink.properties deleted file mode 100644 index 594ccc6..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-file-sink.properties +++ /dev/null @@ -1,20 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -name=local-file-sink -connector.class=FileStreamSink -tasks.max=1 -file=test.sink.txt -topics=connect-test \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-file-source.properties b/image_content/config/kafka/etc/kafka/conf/connect-file-source.properties deleted file mode 100644 index 599cf4c..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-file-source.properties +++ /dev/null @@ -1,20 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -name=local-file-source -connector.class=FileStreamSource -tasks.max=1 -file=test.txt -topic=connect-test \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-log4j.properties b/image_content/config/kafka/etc/kafka/conf/connect-log4j.properties deleted file mode 100644 index 158daed..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-log4j.properties +++ /dev/null @@ -1,23 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -log4j.rootLogger=INFO, stdout - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c:%L)%n - -log4j.logger.org.apache.zookeeper=ERROR -log4j.logger.org.I0Itec.zkclient=ERROR \ No newline at end of file diff --git a/image_content/config/kafka/etc/kafka/conf/connect-standalone.properties b/image_content/config/kafka/etc/kafka/conf/connect-standalone.properties deleted file mode 100644 index 8760590..0000000 --- a/image_content/config/kafka/etc/kafka/conf/connect-standalone.properties +++ /dev/null @@ -1,37 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -# These are defaults. This file just demonstrates how to override some settings. -bootstrap.servers=localhost:9092 - -# The converters specify the format of data in Kafka and how to translate it into Connect data. Every Connect user will -# need to configure these based on the format they want their data in when loaded from or stored into Kafka -key.converter=org.apache.kafka.connect.json.JsonConverter -value.converter=org.apache.kafka.connect.json.JsonConverter -# Converter-specific settings can be passed in by prefixing the Converter's setting with the converter we want to apply -# it to -key.converter.schemas.enable=true -value.converter.schemas.enable=true - -# The internal converter used for offsets and config data is configurable and must be specified, but most users will -# always want to use the built-in default. Offset and config data is never visible outside of Kafka Connect in this format. -internal.key.converter=org.apache.kafka.connect.json.JsonConverter -internal.value.converter=org.apache.kafka.connect.json.JsonConverter -internal.key.converter.schemas.enable=false -internal.value.converter.schemas.enable=false - -offset.storage.file.filename=/tmp/connect.offsets -# Flush much faster than normal, which is useful for testing/debugging -offset.flush.interval.ms=10000 diff --git a/image_content/config/kafka/etc/kafka/conf/log4j.properties b/image_content/config/kafka/etc/kafka/conf/log4j.properties deleted file mode 100644 index 4d2dec5..0000000 --- a/image_content/config/kafka/etc/kafka/conf/log4j.properties +++ /dev/null @@ -1,87 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -log4j.rootLogger=ERROR, stdout - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n - -log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender -log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH -log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log -log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n - -log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender -log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH -log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log -log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n - -log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender -log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH -log4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log -log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n - -log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender -log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH -log4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log -log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n - -log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender -log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH -log4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log -log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n - -log4j.appender.authorizerAppender=org.apache.log4j.DailyRollingFileAppender -log4j.appender.authorizerAppender.DatePattern='.'yyyy-MM-dd-HH -log4j.appender.authorizerAppender.File=${kafka.logs.dir}/kafka-authorizer.log -log4j.appender.authorizerAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.authorizerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n - -# Turn on all our debugging info -#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG, kafkaAppender -#log4j.logger.kafka.client.ClientUtils=DEBUG, kafkaAppender -#log4j.logger.kafka.perf=DEBUG, kafkaAppender -#log4j.logger.kafka.perf.ProducerPerformance$ProducerThread=DEBUG, kafkaAppender -#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUG -log4j.logger.kafka=ERROR, kafkaAppender - -log4j.logger.kafka.network.RequestChannel$=WARN, requestAppender -log4j.additivity.kafka.network.RequestChannel$=false - -#log4j.logger.kafka.network.Processor=TRACE, requestAppender -#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender -#log4j.additivity.kafka.server.KafkaApis=false -log4j.logger.kafka.request.logger=WARN, requestAppender -log4j.additivity.kafka.request.logger=false - -log4j.logger.kafka.controller=TRACE, controllerAppender -log4j.additivity.kafka.controller=false - -log4j.logger.kafka.log.LogCleaner=ERROR, cleanerAppender -log4j.additivity.kafka.log.LogCleaner=false - -log4j.logger.state.change.logger=TRACE, stateChangeAppender -log4j.additivity.state.change.logger=false - -#Change this to debug to get the actual audit log for authorizer. -log4j.logger.kafka.authorizer.logger=WARN, authorizerAppender -log4j.additivity.kafka.authorizer.logger=false - diff --git a/image_content/config/kafka/etc/kafka/conf/server.properties b/image_content/config/kafka/etc/kafka/conf/server.properties deleted file mode 100644 index 4c53973..0000000 --- a/image_content/config/kafka/etc/kafka/conf/server.properties +++ /dev/null @@ -1,129 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# see kafka.server.KafkaConfig for additional details and defaults - -############################# Server Basics ############################# - -# The id of the broker. This must be set to a unique integer for each broker. -broker.id=0 - -############################# Socket Server Settings ############################# - -# The address the socket server listens on. It will get the value returned from -# java.net.InetAddress.getCanonicalHostName() if not configured. -# FORMAT: -# listeners = security_protocol://host_name:port -# EXAMPLE: -# listeners = PLAINTEXT://your.host.name:9092 -#listeners=PLAINTEXT://:9092 - -# Hostname and port the broker will advertise to producers and consumers. If not set, -# it uses the value for "listeners" if configured. Otherwise, it will use the value -# returned from java.net.InetAddress.getCanonicalHostName(). -#advertised.listeners=PLAINTEXT://your.host.name:9092 - -# The number of threads handling network requests -num.network.threads=3 - -# The number of threads doing disk I/O -num.io.threads=8 - -# The send buffer (SO_SNDBUF) used by the socket server -socket.send.buffer.bytes=102400 - -# The receive buffer (SO_RCVBUF) used by the socket server -socket.receive.buffer.bytes=102400 - -# The maximum size of a request that the socket server will accept (protection against OOM) -socket.request.max.bytes=104857600 - - -############################# Log Basics ############################# - -# A comma seperated list of directories under which to store log files -log.dirs=/data/kafka-logs - -# The default number of log partitions per topic. More partitions allow greater -# parallelism for consumption, but this will also result in more files across -# the brokers. -num.partitions=1 - -# The number of threads per data directory to be used for log recovery at startup and flushing at shutdown. -# This value is recommended to be increased for installations with data dirs located in RAID array. -num.recovery.threads.per.data.dir=1 - -############################# Internal Topic Settings ############################# -# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state" -# For anything other than development testing, a value greater than 1 is recommended to ensure availability such as 3. -offsets.topic.replication.factor=1 -transaction.state.log.replication.factor=1 -transaction.state.log.min.isr=1 - -############################# Log Flush Policy ############################# - -# Messages are immediately written to the filesystem but by default we only fsync() to sync -# the OS cache lazily. The following configurations control the flush of data to disk. -# There are a few important trade-offs here: -# 1. Durability: Unflushed data may be lost if you are not using replication. -# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush. -# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to exceessive seeks. -# The settings below allow one to configure the flush policy to flush data after a period of time or -# every N messages (or both). This can be done globally and overridden on a per-topic basis. - -# The number of messages to accept before forcing a flush of data to disk -#log.flush.interval.messages=10000 - -# The maximum amount of time a message can sit in a log before we force a flush -#log.flush.interval.ms=1000 - -############################# Log Retention Policy ############################# - -# The following configurations control the disposal of log segments. The policy can -# be set to delete segments after a period of time, or after a given size has accumulated. -# A segment will be deleted whenever *either* of these criteria are met. Deletion always happens -# from the end of the log. - -log.cleaner.enable=true - -log.cleanup.policy=delete - -# The minimum age of a log file to be eligible for deletion -log.retention.hours=24 - -# A size-based retention policy for logs. Segments are pruned from the log as long as the remaining -# segments don't drop below log.retention.bytes. -log.retention.bytes=1073741824 - -# The maximum size of a log segment file. When this size is reached a new log segment will be created. -log.segment.bytes=1073741824 - -# The interval at which log segments are checked to see if they can be deleted according -# to the retention policies -log.retention.check.interval.ms=300000 - -############################# Zookeeper ############################# - -# Zookeeper connection string (see zookeeper docs for details). -# This is a comma separated host:port pairs, each corresponding to a zk -# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002". -# You can also append an optional chroot string to the urls to specify the -# root directory for all kafka znodes. -zookeeper.connect=localhost:2181 - -# Timeout in ms for connecting to zookeeper -zookeeper.connection.timeout.ms=6000 - -delete.topic.enable=true - diff --git a/image_content/config/kafka/etc/kafka/conf/tools-log4j.properties b/image_content/config/kafka/etc/kafka/conf/tools-log4j.properties deleted file mode 100644 index b19e343..0000000 --- a/image_content/config/kafka/etc/kafka/conf/tools-log4j.properties +++ /dev/null @@ -1,21 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. - -log4j.rootLogger=WARN, stderr - -log4j.appender.stderr=org.apache.log4j.ConsoleAppender -log4j.appender.stderr.layout=org.apache.log4j.PatternLayout -log4j.appender.stderr.layout.ConversionPattern=[%d] %p %m (%c)%n -log4j.appender.stderr.Target=System.err diff --git a/image_content/config/kafka/usr/local/lib/systemd/system/kafka.service b/image_content/config/kafka/usr/local/lib/systemd/system/kafka.service deleted file mode 100644 index 73d721b..0000000 --- a/image_content/config/kafka/usr/local/lib/systemd/system/kafka.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Requires=zookeeper.service -After=zookeeper.service - -[Service] -Type=simple -User=kafka -ExecStart=/opt/kafka/bin/kafka-server-start.sh /etc/kafka/conf/server.properties -ExecStop=/opt/kafka/bin/kafka-server-stop.sh -Restart=on-abnormal - -[Install] -WantedBy=multi-user.target diff --git a/image_content/config/novatellogreader/usr/local/lib/systemd/system/novatellogreader.service b/image_content/config/novatellogreader/usr/local/lib/systemd/system/novatellogreader.service deleted file mode 100644 index ebd35c8..0000000 --- a/image_content/config/novatellogreader/usr/local/lib/systemd/system/novatellogreader.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=NovAtelLogReader -Requires=kafka.service -After=kafka.service - -[Service] -Type=simple -ExecStart=/opt/NovAtelLogReader/NovAtelLogReader - -[Install] -WantedBy=multi-user.target diff --git a/image_content/config/spark/opt/spark/LICENSE b/image_content/config/spark/opt/spark/LICENSE deleted file mode 100644 index 66a2e8f..0000000 --- a/image_content/config/spark/opt/spark/LICENSE +++ /dev/null @@ -1,300 +0,0 @@ - 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. - - -======================================================================= -Apache Spark Subcomponents: - -The Apache Spark project contains subcomponents with separate copyright -notices and license terms. Your use of the source code for the these -subcomponents is subject to the terms and conditions of the following -licenses. - - -======================================================================== -For heapq (pyspark/heapq3.py): -======================================================================== - -See license/LICENSE-heapq.txt - -======================================================================== -For SnapTree: -======================================================================== - -See license/LICENSE-SnapTree.txt - -======================================================================== -For jbcrypt: -======================================================================== - -See license/LICENSE-jbcrypt.txt - -======================================================================== -BSD-style licenses -======================================================================== - -The following components are provided under a BSD-style license. See project link for details. -The text of each license is also included at licenses/LICENSE-[project].txt. - - (BSD 3 Clause) netlib core (com.github.fommil.netlib:core:1.1.2 - https://github.com/fommil/netlib-java/core) - (BSD 3 Clause) JPMML-Model (org.jpmml:pmml-model:1.2.7 - https://github.com/jpmml/jpmml-model) - (BSD License) AntLR Parser Generator (antlr:antlr:2.7.7 - http://www.antlr.org/) - (BSD License) ANTLR 4.5.2-1 (org.antlr:antlr4:4.5.2-1 - http://wwww.antlr.org/) - (BSD licence) ANTLR ST4 4.0.4 (org.antlr:ST4:4.0.4 - http://www.stringtemplate.org) - (BSD licence) ANTLR StringTemplate (org.antlr:stringtemplate:3.2.1 - http://www.stringtemplate.org) - (BSD License) Javolution (javolution:javolution:5.5.1 - http://javolution.org) - (BSD) JLine (jline:jline:0.9.94 - http://jline.sourceforge.net) - (BSD) ParaNamer Core (com.thoughtworks.paranamer:paranamer:2.3 - http://paranamer.codehaus.org/paranamer) - (BSD) ParaNamer Core (com.thoughtworks.paranamer:paranamer:2.6 - http://paranamer.codehaus.org/paranamer) - (BSD 3 Clause) Scala (http://www.scala-lang.org/download/#License) - (Interpreter classes (all .scala files in repl/src/main/scala - except for Main.Scala, SparkHelper.scala and ExecutorClassLoader.scala), - and for SerializableMapWrapper in JavaUtils.scala) - (BSD-like) Scala Actors library (org.scala-lang:scala-actors:2.11.8 - http://www.scala-lang.org/) - (BSD-like) Scala Compiler (org.scala-lang:scala-compiler:2.11.8 - http://www.scala-lang.org/) - (BSD-like) Scala Compiler (org.scala-lang:scala-reflect:2.11.8 - http://www.scala-lang.org/) - (BSD-like) Scala Library (org.scala-lang:scala-library:2.11.8 - http://www.scala-lang.org/) - (BSD-like) Scalap (org.scala-lang:scalap:2.11.8 - http://www.scala-lang.org/) - (BSD-style) scalacheck (org.scalacheck:scalacheck_2.11:1.10.0 - http://www.scalacheck.org) - (BSD-style) spire (org.spire-math:spire_2.11:0.7.1 - http://spire-math.org) - (BSD-style) spire-macros (org.spire-math:spire-macros_2.11:0.7.1 - http://spire-math.org) - (New BSD License) Kryo (com.esotericsoftware:kryo:3.0.3 - https://github.com/EsotericSoftware/kryo) - (New BSD License) MinLog (com.esotericsoftware:minlog:1.3.0 - https://github.com/EsotericSoftware/minlog) - (New BSD license) Protocol Buffer Java API (com.google.protobuf:protobuf-java:2.5.0 - http://code.google.com/p/protobuf) - (New BSD license) Protocol Buffer Java API (org.spark-project.protobuf:protobuf-java:2.4.1-shaded - http://code.google.com/p/protobuf) - (The BSD License) Fortran to Java ARPACK (net.sourceforge.f2j:arpack_combined_all:0.1 - http://f2j.sourceforge.net) - (The BSD License) xmlenc Library (xmlenc:xmlenc:0.52 - http://xmlenc.sourceforge.net) - (The New BSD License) Py4J (net.sf.py4j:py4j:0.10.4 - http://py4j.sourceforge.net/) - (Two-clause BSD-style license) JUnit-Interface (com.novocode:junit-interface:0.10 - http://github.com/szeiger/junit-interface/) - (BSD licence) sbt and sbt-launch-lib.bash - (BSD 3 Clause) d3.min.js (https://github.com/mbostock/d3/blob/master/LICENSE) - (BSD 3 Clause) DPark (https://github.com/douban/dpark/blob/master/LICENSE) - (BSD 3 Clause) CloudPickle (https://github.com/cloudpipe/cloudpickle/blob/master/LICENSE) - -======================================================================== -MIT licenses -======================================================================== - -The following components are provided under the MIT License. See project link for details. -The text of each license is also included at licenses/LICENSE-[project].txt. - - (MIT License) JCL 1.1.1 implemented over SLF4J (org.slf4j:jcl-over-slf4j:1.7.5 - http://www.slf4j.org) - (MIT License) JUL to SLF4J bridge (org.slf4j:jul-to-slf4j:1.7.5 - http://www.slf4j.org) - (MIT License) SLF4J API Module (org.slf4j:slf4j-api:1.7.5 - http://www.slf4j.org) - (MIT License) SLF4J LOG4J-12 Binding (org.slf4j:slf4j-log4j12:1.7.5 - http://www.slf4j.org) - (MIT License) pyrolite (org.spark-project:pyrolite:2.0.1 - http://pythonhosted.org/Pyro4/) - (MIT License) scopt (com.github.scopt:scopt_2.11:3.2.0 - https://github.com/scopt/scopt) - (The MIT License) Mockito (org.mockito:mockito-core:1.9.5 - http://www.mockito.org) - (MIT License) jquery (https://jquery.org/license/) - (MIT License) AnchorJS (https://github.com/bryanbraun/anchorjs) - (MIT License) graphlib-dot (https://github.com/cpettitt/graphlib-dot) - (MIT License) dagre-d3 (https://github.com/cpettitt/dagre-d3) - (MIT License) sorttable (https://github.com/stuartlangridge/sorttable) - (MIT License) boto (https://github.com/boto/boto/blob/develop/LICENSE) - (MIT License) datatables (http://datatables.net/license) - (MIT License) mustache (https://github.com/mustache/mustache/blob/master/LICENSE) - (MIT License) cookies (http://code.google.com/p/cookies/wiki/License) - (MIT License) blockUI (http://jquery.malsup.com/block/) - (MIT License) RowsGroup (http://datatables.net/license/mit) - (MIT License) jsonFormatter (http://www.jqueryscript.net/other/jQuery-Plugin-For-Pretty-JSON-Formatting-jsonFormatter.html) - (MIT License) modernizr (https://github.com/Modernizr/Modernizr/blob/master/LICENSE) - (MIT License) machinist (https://github.com/typelevel/machinist) diff --git a/image_content/config/spark/opt/spark/NOTICE b/image_content/config/spark/opt/spark/NOTICE deleted file mode 100644 index f4b64b5..0000000 --- a/image_content/config/spark/opt/spark/NOTICE +++ /dev/null @@ -1,661 +0,0 @@ -Apache Spark -Copyright 2014 and onwards The Apache Software Foundation. - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - - -======================================================================== -Common Development and Distribution License 1.0 -======================================================================== - -The following components are provided under the Common Development and Distribution License 1.0. See project link for details. - - (CDDL 1.0) Glassfish Jasper (org.mortbay.jetty:jsp-2.1:6.1.14 - http://jetty.mortbay.org/project/modules/jsp-2.1) - (CDDL 1.0) JAX-RS (https://jax-rs-spec.java.net/) - (CDDL 1.0) Servlet Specification 2.5 API (org.mortbay.jetty:servlet-api-2.5:6.1.14 - http://jetty.mortbay.org/project/modules/servlet-api-2.5) - (CDDL 1.0) (GPL2 w/ CPE) javax.annotation API (https://glassfish.java.net/nonav/public/CDDL+GPL.html) - (COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0) (GNU General Public Library) Streaming API for XML (javax.xml.stream:stax-api:1.0-2 - no url defined) - (Common Development and Distribution License (CDDL) v1.0) JavaBeans Activation Framework (JAF) (javax.activation:activation:1.1 - http://java.sun.com/products/javabeans/jaf/index.jsp) - -======================================================================== -Common Development and Distribution License 1.1 -======================================================================== - -The following components are provided under the Common Development and Distribution License 1.1. See project link for details. - - (CDDL 1.1) (GPL2 w/ CPE) org.glassfish.hk2 (https://hk2.java.net) - (CDDL 1.1) (GPL2 w/ CPE) JAXB API bundle for GlassFish V3 (javax.xml.bind:jaxb-api:2.2.2 - https://jaxb.dev.java.net/) - (CDDL 1.1) (GPL2 w/ CPE) JAXB RI (com.sun.xml.bind:jaxb-impl:2.2.3-1 - http://jaxb.java.net/) - (CDDL 1.1) (GPL2 w/ CPE) Jersey 2 (https://jersey.java.net) - -======================================================================== -Common Public License 1.0 -======================================================================== - -The following components are provided under the Common Public 1.0 License. See project link for details. - - (Common Public License Version 1.0) JUnit (junit:junit-dep:4.10 - http://junit.org) - (Common Public License Version 1.0) JUnit (junit:junit:3.8.1 - http://junit.org) - (Common Public License Version 1.0) JUnit (junit:junit:4.8.2 - http://junit.org) - -======================================================================== -Eclipse Public License 1.0 -======================================================================== - -The following components are provided under the Eclipse Public License 1.0. See project link for details. - - (Eclipse Public License v1.0) Eclipse JDT Core (org.eclipse.jdt:core:3.1.1 - http://www.eclipse.org/jdt/) - -======================================================================== -Mozilla Public License 1.0 -======================================================================== - -The following components are provided under the Mozilla Public License 1.0. See project link for details. - - (GPL) (LGPL) (MPL) JTransforms (com.github.rwl:jtransforms:2.4.0 - http://sourceforge.net/projects/jtransforms/) - (Mozilla Public License Version 1.1) jamon-runtime (org.jamon:jamon-runtime:2.3.1 - http://www.jamon.org/jamon-runtime/) - - - -======================================================================== -NOTICE files -======================================================================== - -The following NOTICEs are pertain to software distributed with this project. - - -// ------------------------------------------------------------------ -// NOTICE file corresponding to the section 4d of The Apache License, -// Version 2.0, in this case for -// ------------------------------------------------------------------ - -Apache Avro -Copyright 2009-2013 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Apache Commons Codec -Copyright 2002-2009 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - --------------------------------------------------------------------------------- -src/test/org/apache/commons/codec/language/DoubleMetaphoneTest.java contains -test data from http://aspell.sourceforge.net/test/batch0.tab. - -Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org). Verbatim copying -and distribution of this entire article is permitted in any medium, -provided this notice is preserved. --------------------------------------------------------------------------------- - -Apache HttpComponents HttpClient -Copyright 1999-2011 The Apache Software Foundation - -This project contains annotations derived from JCIP-ANNOTATIONS -Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net - -Apache HttpComponents HttpCore -Copyright 2005-2011 The Apache Software Foundation - -Curator Recipes -Copyright 2011-2014 The Apache Software Foundation - -Curator Framework -Copyright 2011-2014 The Apache Software Foundation - -Curator Client -Copyright 2011-2014 The Apache Software Foundation - -Apache Geronimo -Copyright 2003-2008 The Apache Software Foundation - -Activation 1.1 -Copyright 2003-2007 The Apache Software Foundation - -Apache Commons Lang -Copyright 2001-2014 The Apache Software Foundation - -This product includes software from the Spring Framework, -under the Apache License 2.0 (see: StringUtils.containsWhitespace()) - -Apache log4j -Copyright 2007 The Apache Software Foundation - -# Compress LZF - -This library contains efficient implementation of LZF compression format, -as well as additional helper classes that build on JDK-provided gzip (deflat) -codec. - -## Licensing - -Library is licensed under Apache License 2.0, as per accompanying LICENSE file. - -## Credit - -Library has been written by Tatu Saloranta (tatu.saloranta@iki.fi). -It was started at Ning, inc., as an official Open Source process used by -platform backend, but after initial versions has been developed outside of -Ning by supporting community. - -Other contributors include: - -* Jon Hartlaub (first versions of streaming reader/writer; unit tests) -* Cedrik Lime: parallel LZF implementation - -Various community members have contributed bug reports, and suggested minor -fixes; these can be found from file "VERSION.txt" in SCM. - -Objenesis -Copyright 2006-2009 Joe Walnes, Henri Tremblay, Leonardo Mesquita - -Apache Commons Net -Copyright 2001-2010 The Apache Software Foundation - - The Netty Project - ================= - -Please visit the Netty web site for more information: - - * http://netty.io/ - -Copyright 2011 The Netty Project - -The Netty Project licenses this file to you 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. - -Also, please refer to each LICENSE..txt file, which is located in -the 'license' directory of the distribution file, for the license terms of the -components that this product depends on. - -------------------------------------------------------------------------------- -This product contains the extensions to Java Collections Framework which has -been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene: - - * LICENSE: - * license/LICENSE.jsr166y.txt (Public Domain) - * HOMEPAGE: - * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/ - * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/ - -This product contains a modified version of Robert Harder's Public Domain -Base64 Encoder and Decoder, which can be obtained at: - - * LICENSE: - * license/LICENSE.base64.txt (Public Domain) - * HOMEPAGE: - * http://iharder.sourceforge.net/current/java/base64/ - -This product contains a modified version of 'JZlib', a re-implementation of -zlib in pure Java, which can be obtained at: - - * LICENSE: - * license/LICENSE.jzlib.txt (BSD Style License) - * HOMEPAGE: - * http://www.jcraft.com/jzlib/ - -This product optionally depends on 'Protocol Buffers', Google's data -interchange format, which can be obtained at: - - * LICENSE: - * license/LICENSE.protobuf.txt (New BSD License) - * HOMEPAGE: - * http://code.google.com/p/protobuf/ - -This product optionally depends on 'SLF4J', a simple logging facade for Java, -which can be obtained at: - - * LICENSE: - * license/LICENSE.slf4j.txt (MIT License) - * HOMEPAGE: - * http://www.slf4j.org/ - -This product optionally depends on 'Apache Commons Logging', a logging -framework, which can be obtained at: - - * LICENSE: - * license/LICENSE.commons-logging.txt (Apache License 2.0) - * HOMEPAGE: - * http://commons.apache.org/logging/ - -This product optionally depends on 'Apache Log4J', a logging framework, -which can be obtained at: - - * LICENSE: - * license/LICENSE.log4j.txt (Apache License 2.0) - * HOMEPAGE: - * http://logging.apache.org/log4j/ - -This product optionally depends on 'JBoss Logging', a logging framework, -which can be obtained at: - - * LICENSE: - * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1) - * HOMEPAGE: - * http://anonsvn.jboss.org/repos/common/common-logging-spi/ - -This product optionally depends on 'Apache Felix', an open source OSGi -framework implementation, which can be obtained at: - - * LICENSE: - * license/LICENSE.felix.txt (Apache License 2.0) - * HOMEPAGE: - * http://felix.apache.org/ - -This product optionally depends on 'Webbit', a Java event based -WebSocket and HTTP server: - - * LICENSE: - * license/LICENSE.webbit.txt (BSD License) - * HOMEPAGE: - * https://github.com/joewalnes/webbit - -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers, as well as supported -commercially by FasterXML.com. - -Jackson core and extension components may be licensed under different licenses. -To find the details that apply to this artifact see the accompanying LICENSE file. -For more information, including possible other licensing options, contact -FasterXML.com (http://fasterxml.com). - -## Credits - -A list of contributors may be found from CREDITS file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. - -Jackson core and extension components may licensed under different licenses. -To find the details that apply to this artifact see the accompanying LICENSE file. -For more information, including possible other licensing options, contact -FasterXML.com (http://fasterxml.com). - -mesos -Copyright 2014 The Apache Software Foundation - -Apache Thrift -Copyright 2006-2010 The Apache Software Foundation. - - Apache Ant - Copyright 1999-2013 The Apache Software Foundation - - The task is based on code Copyright (c) 2002, Landmark - Graphics Corp that has been kindly donated to the Apache Software - Foundation. - -Apache Commons IO -Copyright 2002-2012 The Apache Software Foundation - -Apache Commons Math -Copyright 2001-2013 The Apache Software Foundation - -=============================================================================== - -The inverse error function implementation in the Erf class is based on CUDA -code developed by Mike Giles, Oxford-Man Institute of Quantitative Finance, -and published in GPU Computing Gems, volume 2, 2010. -=============================================================================== - -The BracketFinder (package org.apache.commons.math3.optimization.univariate) -and PowellOptimizer (package org.apache.commons.math3.optimization.general) -classes are based on the Python code in module "optimize.py" (version 0.5) -developed by Travis E. Oliphant for the SciPy library (http://www.scipy.org/) -Copyright © 2003-2009 SciPy Developers. -=============================================================================== - -The LinearConstraint, LinearObjectiveFunction, LinearOptimizer, -RelationShip, SimplexSolver and SimplexTableau classes in package -org.apache.commons.math3.optimization.linear include software developed by -Benjamin McCann (http://www.benmccann.com) and distributed with -the following copyright: Copyright 2009 Google Inc. -=============================================================================== - -This product includes software developed by the -University of Chicago, as Operator of Argonne National -Laboratory. -The LevenbergMarquardtOptimizer class in package -org.apache.commons.math3.optimization.general includes software -translated from the lmder, lmpar and qrsolv Fortran routines -from the Minpack package -Minpack Copyright Notice (1999) University of Chicago. All rights reserved -=============================================================================== - -The GraggBulirschStoerIntegrator class in package -org.apache.commons.math3.ode.nonstiff includes software translated -from the odex Fortran routine developed by E. Hairer and G. Wanner. -Original source copyright: -Copyright (c) 2004, Ernst Hairer -=============================================================================== - -The EigenDecompositionImpl class in package -org.apache.commons.math3.linear includes software translated -from some LAPACK Fortran routines. Original source copyright: -Copyright (c) 1992-2008 The University of Tennessee. All rights reserved. -=============================================================================== - -The MersenneTwister class in package org.apache.commons.math3.random -includes software translated from the 2002-01-26 version of -the Mersenne-Twister generator written in C by Makoto Matsumoto and Takuji -Nishimura. Original source copyright: -Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, -All rights reserved -=============================================================================== - -The LocalizedFormatsTest class in the unit tests is an adapted version of -the OrekitMessagesTest class from the orekit library distributed under the -terms of the Apache 2 licence. Original source copyright: -Copyright 2010 CS Systèmes d'Information -=============================================================================== - -The HermiteInterpolator class and its corresponding test have been imported from -the orekit library distributed under the terms of the Apache 2 licence. Original -source copyright: -Copyright 2010-2012 CS Systèmes d'Information -=============================================================================== - -The creation of the package "o.a.c.m.analysis.integration.gauss" was inspired -by an original code donated by Sébastien Brisard. -=============================================================================== - -The complete text of licenses and disclaimers associated with the the original -sources enumerated above at the time of code translation are in the LICENSE.txt -file. - -This product currently only contains code developed by authors -of specific components, as identified by the source code files; -if such notes are missing files have been created by -Tatu Saloranta. - -For additional credits (generally to people who reported problems) -see CREDITS file. - -Apache Commons Lang -Copyright 2001-2011 The Apache Software Foundation - -Apache Commons Compress -Copyright 2002-2012 The Apache Software Foundation - -Apache Commons CLI -Copyright 2001-2009 The Apache Software Foundation - -Google Guice - Extensions - Servlet -Copyright 2006-2011 Google, Inc. - -Google Guice - Core Library -Copyright 2006-2011 Google, Inc. - -Apache Jakarta HttpClient -Copyright 1999-2007 The Apache Software Foundation - -Apache Hive -Copyright 2008-2013 The Apache Software Foundation - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by The JDBM Project -(http://jdbm.sourceforge.net/). - -This product includes/uses ANTLR (http://www.antlr.org/), -Copyright (c) 2003-2011, Terrence Parr. - -This product includes/uses StringTemplate (http://www.stringtemplate.org/), -Copyright (c) 2011, Terrence Parr. - -This product includes/uses ASM (http://asm.ow2.org/), -Copyright (c) 2000-2007 INRIA, France Telecom. - -This product includes/uses JLine (http://jline.sourceforge.net/), -Copyright (c) 2002-2006, Marc Prud'hommeaux . - -This product includes/uses SQLLine (http://sqlline.sourceforge.net), -Copyright (c) 2002, 2003, 2004, 2005 Marc Prud'hommeaux . - -This product includes/uses SLF4J (http://www.slf4j.org/), -Copyright (c) 2004-2010 QOS.ch - -This product includes/uses Bootstrap (http://twitter.github.com/bootstrap/), -Copyright (c) 2012 Twitter, Inc. - -This product includes/uses Glyphicons (http://glyphicons.com/), -Copyright (c) 2010 - 2012 Jan Kovarík - -This product includes DataNucleus (http://www.datanucleus.org/) -Copyright 2008-2008 DataNucleus - -This product includes Guava (http://code.google.com/p/guava-libraries/) -Copyright (C) 2006 Google Inc. - -This product includes JavaEWAH (http://code.google.com/p/javaewah/) -Copyright (C) 2011 Google Inc. - -Apache Commons Pool -Copyright 1999-2009 The Apache Software Foundation - -========================================================================= -== NOTICE file corresponding to section 4(d) of the Apache License, == -== Version 2.0, in this case for the DataNucleus distribution. == -========================================================================= - -=================================================================== -This product includes software developed by many individuals, -including the following: -=================================================================== -Erik Bengtson -Andy Jefferson - -=================================================================== -This product has included contributions from some individuals, -including the following: -=================================================================== - -=================================================================== -This product has included contributions from some individuals, -including the following: -=================================================================== -Joerg von Frantzius -Thomas Marti -Barry Haddow -Marco Schulze -Ralph Ullrich -David Ezzio -Brendan de Beer -David Eaves -Martin Taal -Tony Lai -Roland Szabo -Marcus Mennemeier -Xuan Baldauf -Eric Sultan - -=================================================================== -This product also includes software developed by the TJDO project -(http://tjdo.sourceforge.net/). -=================================================================== - -=================================================================== -This product includes software developed by many individuals, -including the following: -=================================================================== -Andy Jefferson -Erik Bengtson -Joerg von Frantzius -Marco Schulze - -=================================================================== -This product has included contributions from some individuals, -including the following: -=================================================================== -Barry Haddow -Ralph Ullrich -David Ezzio -Brendan de Beer -David Eaves -Martin Taal -Tony Lai -Roland Szabo -Anton Troshin (Timesten) - -=================================================================== -This product also includes software developed by the Apache Commons project -(http://commons.apache.org/). -=================================================================== - -Apache Java Data Objects (JDO) -Copyright 2005-2006 The Apache Software Foundation - -========================================================================= -== NOTICE file corresponding to section 4(d) of the Apache License, == -== Version 2.0, in this case for the Apache Derby distribution. == -========================================================================= - -Apache Derby -Copyright 2004-2008 The Apache Software Foundation - -Portions of Derby were originally developed by -International Business Machines Corporation and are -licensed to the Apache Software Foundation under the -"Software Grant and Corporate Contribution License Agreement", -informally known as the "Derby CLA". -The following copyright notice(s) were affixed to portions of the code -with which this file is now or was at one time distributed -and are placed here unaltered. - -(C) Copyright 1997,2004 International Business Machines Corporation. All rights reserved. - -(C) Copyright IBM Corp. 2003. - -The portion of the functionTests under 'nist' was originally -developed by the National Institute of Standards and Technology (NIST), -an agency of the United States Department of Commerce, and adapted by -International Business Machines Corporation in accordance with the NIST -Software Acknowledgment and Redistribution document at -http://www.itl.nist.gov/div897/ctg/sql_form.htm - -Apache Commons Collections -Copyright 2001-2008 The Apache Software Foundation - -Apache Commons Configuration -Copyright 2001-2008 The Apache Software Foundation - -Apache Jakarta Commons Digester -Copyright 2001-2006 The Apache Software Foundation - -Apache Commons BeanUtils -Copyright 2000-2008 The Apache Software Foundation - -Apache Avro Mapred API -Copyright 2009-2013 The Apache Software Foundation - -Apache Avro IPC -Copyright 2009-2013 The Apache Software Foundation - - -Vis.js -Copyright 2010-2015 Almende B.V. - -Vis.js is dual licensed under both - - * The Apache 2.0 License - http://www.apache.org/licenses/LICENSE-2.0 - - and - - * The MIT License - http://opensource.org/licenses/MIT - -Vis.js may be distributed under either license. - - -Vis.js uses and redistributes the following third-party libraries: - -- component-emitter - https://github.com/component/emitter - The MIT License - -- hammer.js - http://hammerjs.github.io/ - The MIT License - -- moment.js - http://momentjs.com/ - The MIT License - -- keycharm - https://github.com/AlexDM0/keycharm - The MIT License - -=============================================================================== - -The CSS style for the navigation sidebar of the documentation was originally -submitted by Óscar Nájera for the scikit-learn project. The scikit-learn project -is distributed under the 3-Clause BSD license. -=============================================================================== - -For CSV functionality: - -/* - * Copyright 2014 Databricks - * - * 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. - */ - -/* - * Copyright 2015 Ayasdi Inc - * - * 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. - */ - - -=============================================================================== -For dev/sparktestsupport/toposort.py: - -Copyright 2014 True Blade Systems, Inc. - -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. diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/DESCRIPTION b/image_content/config/spark/opt/spark/R/lib/SparkR/DESCRIPTION deleted file mode 100644 index 5553751..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/DESCRIPTION +++ /dev/null @@ -1,33 +0,0 @@ -Package: SparkR -Type: Package -Version: 2.2.1 -Title: R Frontend for Apache Spark -Description: Provides an R Frontend for Apache Spark. -Authors@R: c(person("Shivaram", "Venkataraman", role = c("aut", "cre"), - email = "shivaram@cs.berkeley.edu"), - person("Xiangrui", "Meng", role = "aut", - email = "meng@databricks.com"), - person("Felix", "Cheung", role = "aut", - email = "felixcheung@apache.org"), - person(family = "The Apache Software Foundation", role = c("aut", "cph"))) -License: Apache License (== 2.0) -URL: http://www.apache.org/ http://spark.apache.org/ -BugReports: http://spark.apache.org/contributing.html -Depends: R (>= 3.0), methods -Suggests: knitr, rmarkdown, testthat, e1071, survival -Collate: 'schema.R' 'generics.R' 'jobj.R' 'column.R' 'group.R' 'RDD.R' - 'pairRDD.R' 'DataFrame.R' 'SQLContext.R' 'WindowSpec.R' - 'backend.R' 'broadcast.R' 'catalog.R' 'client.R' 'context.R' - 'deserialize.R' 'functions.R' 'install.R' 'jvm.R' - 'mllib_classification.R' 'mllib_clustering.R' 'mllib_fpm.R' - 'mllib_recommendation.R' 'mllib_regression.R' 'mllib_stat.R' - 'mllib_tree.R' 'mllib_utils.R' 'serialize.R' 'sparkR.R' - 'stats.R' 'streaming.R' 'types.R' 'utils.R' 'window.R' -RoxygenNote: 6.0.1 -VignetteBuilder: knitr -Author: Shivaram Venkataraman [aut, cre], - Xiangrui Meng [aut], - Felix Cheung [aut], - The Apache Software Foundation [aut, cph] -Maintainer: Shivaram Venkataraman -Built: R 3.4.2; ; 2017-11-25 00:01:26 UTC; unix diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/INDEX b/image_content/config/spark/opt/spark/R/lib/SparkR/INDEX deleted file mode 100644 index 0713479..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/INDEX +++ /dev/null @@ -1,416 +0,0 @@ -%in% Match a column with given values. -AFTSurvivalRegressionModel-class - S4 class that represents a - AFTSurvivalRegressionModel -ALSModel-class S4 class that represents an ALSModel -BisectingKMeansModel-class - S4 class that represents a BisectingKMeansModel -FPGrowthModel-class S4 class that represents a FPGrowthModel -GBTClassificationModel-class - S4 class that represents a - GBTClassificationModel -GBTRegressionModel-class - S4 class that represents a GBTRegressionModel -GaussianMixtureModel-class - S4 class that represents a GaussianMixtureModel -GeneralizedLinearRegressionModel-class - S4 class that represents a generalized linear - model -GroupedData-class S4 class that represents a GroupedData -IsotonicRegressionModel-class - S4 class that represents an - IsotonicRegressionModel -KMeansModel-class S4 class that represents a KMeansModel -KSTest-class S4 class that represents an KSTest -LDAModel-class S4 class that represents an LDAModel -LinearSVCModel-class S4 class that represents an LinearSVCModel -LogisticRegressionModel-class - S4 class that represents an - LogisticRegressionModel -MultilayerPerceptronClassificationModel-class - S4 class that represents a - MultilayerPerceptronClassificationModel -NaiveBayesModel-class S4 class that represents a NaiveBayesModel -RandomForestClassificationModel-class - S4 class that represents a - RandomForestClassificationModel -RandomForestRegressionModel-class - S4 class that represents a - RandomForestRegressionModel -SparkDataFrame-class S4 class that represents a SparkDataFrame -StreamingQuery-class S4 class that represents a StreamingQuery -WindowSpec-class S4 class that represents a WindowSpec -abs abs -acos acos -add_months add_months -agg summarize -alias alias -approxCountDistinct Returns the approximate number of distinct - items in a group -approxQuantile Calculates the approximate quantiles of - numerical columns of a SparkDataFrame -arrange Arrange Rows by Variables -array_contains array_contains -as.data.frame Download data from a SparkDataFrame into a R - data.frame -asc A set of operations working with SparkDataFrame - columns -ascii ascii -asin asin -atan atan -atan2 atan2 -attach,SparkDataFrame-method - Attach SparkDataFrame to R search path -avg avg -awaitTermination awaitTermination -base64 base64 -between between -bin bin -bitwiseNOT bitwiseNOT -bround bround -cache Cache -cacheTable Cache Table -cancelJobGroup Cancel active jobs for the specified group -cast Casts the column to a different data type. -cbrt cbrt -ceil Computes the ceiling of the given value -checkpoint checkpoint -clearCache Clear Cache -clearJobGroup Clear current job group ID and its description -coalesce Coalesce -collect Collects all the elements of a SparkDataFrame - and coerces them into an R data.frame. -colnames Column Names of SparkDataFrame -coltypes coltypes -column S4 class that represents a SparkDataFrame - column -concat concat -concat_ws concat_ws -conv conv -corr corr -cos cos -cosh cosh -count Count -countDistinct Count Distinct Values -cov cov -covar_pop covar_pop -crc32 crc32 -createDataFrame Create a SparkDataFrame -createExternalTable (Deprecated) Create an external table -createOrReplaceTempView - Creates a temporary view using the given name. -createTable Creates a table based on the dataset in a data - source -crossJoin CrossJoin -crosstab Computes a pair-wise frequency table of the - given columns -cume_dist cume_dist -currentDatabase Returns the current default database -dapply dapply -dapplyCollect dapplyCollect -date_add date_add -date_format date_format -date_sub date_sub -datediff datediff -dayofmonth dayofmonth -dayofyear dayofyear -decode decode -dense_rank dense_rank -describe summary -dim Returns the dimensions of SparkDataFrame -distinct Distinct -drop drop -dropDuplicates dropDuplicates -dropTempTable (Deprecated) Drop Temporary Table -dropTempView Drops the temporary view with the given view - name in the catalog. -dropna A set of SparkDataFrame functions working with - NA values -dtypes DataTypes -encode encode -endsWith endsWith -except except -exp exp -explain Explain -explode explode -expm1 expm1 -expr expr -factorial factorial -filter Filter -first Return the first row of a SparkDataFrame -fitted Get fitted result from a k-means model -floor floor -format_number format_number -format_string format_string -freqItems Finding frequent items for columns, possibly - with false positives -from_json from_json -from_unixtime from_unixtime -from_utc_timestamp from_utc_timestamp -gapply gapply -gapplyCollect gapplyCollect -generateAliasesForIntersectedCols - Creates a list of columns by replacing the - intersected ones with aliases -getNumPartitions getNumPartitions -glm,formula,ANY,SparkDataFrame-method - Generalized Linear Models (R-compliant) -greatest greatest -group_by GroupBy -hash hash -hashCode Compute the hashCode of an object -head Head -hex hex -hint hint -histogram Compute histogram statistics for given column -hour hour -hypot hypot -ifelse ifelse -initcap initcap -insertInto insertInto -install.spark Download and Install Apache Spark to a Local - Directory -instr instr -intersect Intersect -isActive isActive -isLocal isLocal -isStreaming isStreaming -isnan is.nan -join Join -kurtosis kurtosis -lag lag -last last -lastProgress lastProgress -last_day last_day -lead lead -least least -length length -levenshtein levenshtein -limit Limit -listColumns Returns a list of columns for the given - table/view in the specified database -listDatabases Returns a list of databases available -listFunctions Returns a list of functions registered in the - specified database -listTables Returns a list of tables or views in the - specified database -lit lit -locate locate -log log -log10 log10 -log1p log1p -log2 log2 -lower lower -lpad lpad -ltrim ltrim -max max -md5 md5 -mean mean -merge Merges two data frames -min min -minute minute -monotonically_increasing_id - monotonically_increasing_id -month month -months_between months_between -mutate Mutate -nanvl nanvl -ncol Returns the number of columns in a - SparkDataFrame -negate negate -next_day next_day -nrow Returns the number of rows in a SparkDataFrame -ntile ntile -orderBy Ordering Columns in a WindowSpec -otherwise otherwise -over over -partitionBy partitionBy -percent_rank percent_rank -persist Persist -pivot Pivot a column of the GroupedData and perform - the specified aggregation. -pmod pmod -posexplode posexplode -predict Makes predictions from a MLlib model -print.jobj Print a JVM object reference. -print.structField Print a Spark StructField. -print.structType Print a Spark StructType. -printSchema Print Schema of a SparkDataFrame -quarter quarter -queryName queryName -rand rand -randn randn -randomSplit randomSplit -rangeBetween rangeBetween -rank rank -rbind Union two or more SparkDataFrames -read.df Load a SparkDataFrame -read.jdbc Create a SparkDataFrame representing the - database table accessible via JDBC URL -read.json Create a SparkDataFrame from a JSON file. -read.ml Load a fitted MLlib model from the input path. -read.orc Create a SparkDataFrame from an ORC file. -read.parquet Create a SparkDataFrame from a Parquet file. -read.stream Load a streaming SparkDataFrame -read.text Create a SparkDataFrame from a text file. -recoverPartitions Recovers all the partitions in the directory of - a table and update the catalog -refreshByPath Invalidates and refreshes all the cached data - and metadata for SparkDataFrame containing path -refreshTable Invalidates and refreshes all the cached data - and metadata of the given table -regexp_extract regexp_extract -regexp_replace regexp_replace -registerTempTable (Deprecated) Register Temporary Table -rename rename -repartition Repartition -reverse reverse -rint rint -round round -row_number row_number -rowsBetween rowsBetween -rpad rpad -rtrim rtrim -sample Sample -sampleBy Returns a stratified sample without replacement -saveAsTable Save the contents of the SparkDataFrame to a - data source as a table -schema Get schema object -sd sd -second second -select Select -selectExpr SelectExpr -setCheckpointDir Set checkpoint directory -setCurrentDatabase Sets the current default database -setJobGroup Assigns a group ID to all the jobs started by - this thread until the group ID is set to a - different value or cleared. -setLogLevel Set new log level -sha1 sha1 -sha2 sha2 -shiftLeft shiftLeft -shiftRight shiftRight -shiftRightUnsigned shiftRightUnsigned -show show -showDF showDF -signum signum -sin sin -sinh sinh -size size -skewness skewness -sort_array sort_array -soundex soundex -spark.addFile Add a file or directory to be downloaded with - this Spark job on every node. -spark.als Alternating Least Squares (ALS) for - Collaborative Filtering -spark.bisectingKmeans Bisecting K-Means Clustering Model -spark.fpGrowth FP-growth -spark.gaussianMixture Multivariate Gaussian Mixture Model (GMM) -spark.gbt Gradient Boosted Tree Model for Regression and - Classification -spark.getSparkFiles Get the absolute path of a file added through - spark.addFile. -spark.getSparkFilesRootDirectory - Get the root directory that contains files - added through spark.addFile. -spark.glm Generalized Linear Models -spark.isoreg Isotonic Regression Model -spark.kmeans K-Means Clustering Model -spark.kstest (One-Sample) Kolmogorov-Smirnov Test -spark.lapply Run a function over a list of elements, - distributing the computations with Spark -spark.lda Latent Dirichlet Allocation -spark.logit Logistic Regression Model -spark.mlp Multilayer Perceptron Classification Model -spark.naiveBayes Naive Bayes Models -spark.randomForest Random Forest Model for Regression and - Classification -spark.survreg Accelerated Failure Time (AFT) Survival - Regression Model -spark.svmLinear Linear SVM Model -sparkR.callJMethod Call Java Methods -sparkR.callJStatic Call Static Java Methods -sparkR.conf Get Runtime Config from the current active - SparkSession -sparkR.init (Deprecated) Initialize a new Spark Context -sparkR.newJObject Create Java Objects -sparkR.session Get the existing SparkSession or initialize a - new SparkSession. -sparkR.session.stop Stop the Spark Session and Spark Context -sparkR.uiWebUrl Get the URL of the SparkUI instance for the - current active SparkSession -sparkR.version Get version of Spark on which this application - is running -sparkRHive.init (Deprecated) Initialize a new HiveContext -sparkRSQL.init (Deprecated) Initialize a new SQLContext -spark_partition_id Return the partition ID as a column -sql SQL Query -sqrt sqrt -startsWith startsWith -status status -stddev_pop stddev_pop -stddev_samp stddev_samp -stopQuery stopQuery -storageLevel StorageLevel -str Compactly display the structure of a dataset -struct struct -structField structField -structType structType -subset Subset -substr substr -substring_index substring_index -sum sum -sumDistinct sumDistinct -tableNames Table Names -tableToDF Create a SparkDataFrame from a SparkSQL table - or view -tables Tables -take Take the first NUM rows of a SparkDataFrame and - return the results as a R data.frame -tan tan -tanh tanh -toDegrees toDegrees -toJSON toJSON -toRadians toRadians -to_date to_date -to_json to_json -to_timestamp to_timestamp -to_utc_timestamp to_utc_timestamp -translate translate -trim trim -unbase64 unbase64 -uncacheTable Uncache Table -unhex unhex -union Return a new SparkDataFrame containing the - union of rows -unix_timestamp unix_timestamp -unpersist Unpersist -upper upper -var var -var_pop var_pop -var_samp var_samp -weekofyear weekofyear -when when -window window -windowOrderBy windowOrderBy -windowPartitionBy windowPartitionBy -with Evaluate a R expression in an environment - constructed from a SparkDataFrame -withColumn WithColumn -write.df Save the contents of SparkDataFrame to a data - source. -write.jdbc Save the content of SparkDataFrame to an - external database table via JDBC. -write.json Save the contents of SparkDataFrame as a JSON - file -write.ml Saves the MLlib model to the input path -write.orc Save the contents of SparkDataFrame as an ORC - file, preserving the schema. -write.parquet Save the contents of SparkDataFrame as a - Parquet file, preserving the schema. -write.stream Write the streaming SparkDataFrame to a data - source. -write.text Save the content of SparkDataFrame in a text - file at the specified path. -year year diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/Rd.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/Rd.rds deleted file mode 100644 index 2eba7df0e179a7845c79d6fe7fccf7056acbb04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10886 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 MsLNyM9za0;4+`)*xc~qF diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/features.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/features.rds deleted file mode 100644 index 46ed4f72687641b60f0270aca5fd2b40253af1b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmb2|=3oE==I#ec2?+^F32BK*2}x{*t&J?o0^ALmVr+g2Ym*XkGA1NVN?AC2&YYAL z*^^jOR8^y9y;vqOTXoi~WiuruW=a|wFr0OGk$BeojIXYnafh|>dX=pj`i9GITxLD- Omz`lnmuF`k&>{duttf>6 diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/hsearch.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/hsearch.rds deleted file mode 100644 index 5d50cb7ce7002663dd9a5f55573edc974d44f887..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10624 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 wKGg>oivR!s diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/links.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/links.rds deleted file mode 100644 index 93c02f0a09c1d402d7c943c30dea46c0e15eb87b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7672 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 diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/nsInfo.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/Meta/nsInfo.rds deleted file mode 100644 index 58a1d9a71dcf85b43affaa2baf46edfe9b89ca84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2703 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 A(*OVf diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/NAMESPACE b/image_content/config/spark/opt/spark/R/lib/SparkR/NAMESPACE deleted file mode 100644 index 44e39c4..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/NAMESPACE +++ /dev/null @@ -1,446 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Imports from base R -# Do not include stats:: "rpois", "runif" - causes error at runtime -importFrom("methods", "setGeneric", "setMethod", "setOldClass") -importFrom("methods", "is", "new", "signature", "show") -importFrom("stats", "gaussian", "setNames") -importFrom("utils", "download.file", "object.size", "packageVersion", "tail", "untar") - -# Disable native libraries till we figure out how to package it -# See SPARKR-7839 -#useDynLib(SparkR, stringHashCode) - -# S3 methods exported -export("sparkR.session") -export("sparkR.init") -export("sparkR.stop") -export("sparkR.session.stop") -export("sparkR.conf") -export("sparkR.version") -export("sparkR.uiWebUrl") -export("print.jobj") - -export("sparkR.newJObject") -export("sparkR.callJMethod") -export("sparkR.callJStatic") - -export("install.spark") - -export("sparkRSQL.init", - "sparkRHive.init") - -# MLlib integration -exportMethods("glm", - "spark.glm", - "predict", - "summary", - "spark.kmeans", - "fitted", - "spark.mlp", - "spark.naiveBayes", - "spark.survreg", - "spark.lda", - "spark.posterior", - "spark.perplexity", - "spark.isoreg", - "spark.gaussianMixture", - "spark.als", - "spark.kstest", - "spark.logit", - "spark.randomForest", - "spark.gbt", - "spark.bisectingKmeans", - "spark.svmLinear", - "spark.fpGrowth", - "spark.freqItemsets", - "spark.associationRules") - -# Job group lifecycle management methods -export("setJobGroup", - "clearJobGroup", - "cancelJobGroup") - -# Export Utility methods -export("setLogLevel") - -exportClasses("SparkDataFrame") - -exportMethods("arrange", - "as.data.frame", - "attach", - "cache", - "checkpoint", - "coalesce", - "collect", - "colnames", - "colnames<-", - "coltypes", - "coltypes<-", - "columns", - "count", - "cov", - "corr", - "covar_samp", - "covar_pop", - "createOrReplaceTempView", - "crossJoin", - "crosstab", - "dapply", - "dapplyCollect", - "describe", - "dim", - "distinct", - "drop", - "dropDuplicates", - "dropna", - "dtypes", - "except", - "explain", - "fillna", - "filter", - "first", - "freqItems", - "gapply", - "gapplyCollect", - "getNumPartitions", - "group_by", - "groupBy", - "head", - "hint", - "insertInto", - "intersect", - "isLocal", - "isStreaming", - "join", - "limit", - "merge", - "mutate", - "na.omit", - "names", - "names<-", - "ncol", - "nrow", - "orderBy", - "persist", - "printSchema", - "randomSplit", - "rbind", - "registerTempTable", - "rename", - "repartition", - "sample", - "sample_frac", - "sampleBy", - "saveAsParquetFile", - "saveAsTable", - "saveDF", - "schema", - "select", - "selectExpr", - "show", - "showDF", - "storageLevel", - "subset", - "summarize", - "summary", - "take", - "toJSON", - "transform", - "union", - "unionAll", - "unique", - "unpersist", - "where", - "with", - "withColumn", - "withColumnRenamed", - "write.df", - "write.jdbc", - "write.json", - "write.orc", - "write.parquet", - "write.stream", - "write.text", - "write.ml") - -exportClasses("Column") - -exportMethods("%in%", - "abs", - "acos", - "add_months", - "alias", - "approxCountDistinct", - "approxQuantile", - "array_contains", - "asc", - "ascii", - "asin", - "atan", - "atan2", - "avg", - "base64", - "between", - "bin", - "bitwiseNOT", - "bround", - "cast", - "cbrt", - "ceil", - "ceiling", - "column", - "concat", - "concat_ws", - "contains", - "conv", - "cos", - "cosh", - "count", - "countDistinct", - "crc32", - "hash", - "cume_dist", - "date_add", - "date_format", - "date_sub", - "datediff", - "dayofmonth", - "dayofyear", - "decode", - "dense_rank", - "desc", - "encode", - "endsWith", - "exp", - "explode", - "expm1", - "expr", - "factorial", - "first", - "floor", - "format_number", - "format_string", - "from_json", - "from_unixtime", - "from_utc_timestamp", - "getField", - "getItem", - "greatest", - "hex", - "histogram", - "hour", - "hypot", - "ifelse", - "initcap", - "instr", - "isNaN", - "isNotNull", - "isNull", - "is.nan", - "isnan", - "kurtosis", - "lag", - "last", - "last_day", - "lead", - "least", - "length", - "levenshtein", - "like", - "lit", - "locate", - "log", - "log10", - "log1p", - "log2", - "lower", - "lpad", - "ltrim", - "max", - "md5", - "mean", - "min", - "minute", - "monotonically_increasing_id", - "month", - "months_between", - "n", - "n_distinct", - "nanvl", - "negate", - "next_day", - "ntile", - "otherwise", - "over", - "percent_rank", - "pmod", - "posexplode", - "quarter", - "rand", - "randn", - "rank", - "regexp_extract", - "regexp_replace", - "reverse", - "rint", - "rlike", - "round", - "row_number", - "rpad", - "rtrim", - "second", - "sha1", - "sha2", - "shiftLeft", - "shiftRight", - "shiftRightUnsigned", - "sd", - "sign", - "signum", - "sin", - "sinh", - "size", - "skewness", - "sort_array", - "soundex", - "spark_partition_id", - "stddev", - "stddev_pop", - "stddev_samp", - "struct", - "sqrt", - "startsWith", - "substr", - "substring_index", - "sum", - "sumDistinct", - "tan", - "tanh", - "toDegrees", - "toRadians", - "to_date", - "to_json", - "to_timestamp", - "to_utc_timestamp", - "translate", - "trim", - "unbase64", - "unhex", - "unix_timestamp", - "upper", - "var", - "variance", - "var_pop", - "var_samp", - "weekofyear", - "when", - "window", - "year") - -exportClasses("GroupedData") -exportMethods("agg") -exportMethods("pivot") - -export("as.DataFrame", - "cacheTable", - "clearCache", - "createDataFrame", - "createExternalTable", - "createTable", - "currentDatabase", - "dropTempTable", - "dropTempView", - "jsonFile", - "listColumns", - "listDatabases", - "listFunctions", - "listTables", - "loadDF", - "parquetFile", - "read.df", - "read.jdbc", - "read.json", - "read.orc", - "read.parquet", - "read.stream", - "read.text", - "recoverPartitions", - "refreshByPath", - "refreshTable", - "setCheckpointDir", - "setCurrentDatabase", - "spark.lapply", - "spark.addFile", - "spark.getSparkFilesRootDirectory", - "spark.getSparkFiles", - "sql", - "str", - "tableToDF", - "tableNames", - "tables", - "uncacheTable", - "print.summary.GeneralizedLinearRegressionModel", - "read.ml", - "print.summary.KSTest", - "print.summary.RandomForestRegressionModel", - "print.summary.RandomForestClassificationModel", - "print.summary.GBTRegressionModel", - "print.summary.GBTClassificationModel") - -export("structField", - "structField.jobj", - "structField.character", - "print.structField", - "structType", - "structType.jobj", - "structType.structField", - "print.structType") - -exportClasses("WindowSpec") - -export("partitionBy", - "rowsBetween", - "rangeBetween") - -export("windowPartitionBy", - "windowOrderBy") - -exportClasses("StreamingQuery") - -export("awaitTermination", - "isActive", - "lastProgress", - "queryName", - "status", - "stopQuery") - - -S3method(print, jobj) -S3method(print, structField) -S3method(print, structType) -S3method(print, summary.GeneralizedLinearRegressionModel) -S3method(print, summary.KSTest) -S3method(print, summary.RandomForestRegressionModel) -S3method(print, summary.RandomForestClassificationModel) -S3method(print, summary.GBTRegressionModel) -S3method(print, summary.GBTClassificationModel) -S3method(structField, character) -S3method(structField, jobj) -S3method(structType, jobj) -S3method(structType, structField) diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR b/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR deleted file mode 100644 index 3b65e3c..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR +++ /dev/null @@ -1,27 +0,0 @@ -# File share/R/nspackloader.R -# Part of the R package, http://www.R-project.org -# -# Copyright (C) 1995-2012 The R Core Team -# -# 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. -# -# 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. -# -# A copy of the GNU General Public License is available at -# http://www.r-project.org/Licenses/ - -local({ - info <- loadingNamespaceInfo() - pkg <- info$pkgname - ns <- .getNamespace(as.name(pkg)) - if (is.null(ns)) - stop("cannot find namespace environment for ", pkg, domain = NA); - dbbase <- file.path(info$libname, pkg, "R", pkg) - lazyLoad(dbbase, ns, filter = function(n) n != ".__NAMESPACE__.") -}) diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdb b/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdb deleted file mode 120000 index c23f080..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdb +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../.git/annex/objects/M9/mV/SHA256E-s1106995--5f8cb41049eceb00429c84946d7494a9f707aee22cb009f56474358935dc7363.rdb/SHA256E-s1106995--5f8cb41049eceb00429c84946d7494a9f707aee22cb009f56474358935dc7363.rdb \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdx b/image_content/config/spark/opt/spark/R/lib/SparkR/R/SparkR.rdx deleted file mode 100644 index ad92eb244497426b9fa64e6164599113a3428173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25105 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
R)~Yk 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

jHA#!U{^Tc+Z=z2PP0%q~3GM5pkjY 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

kDF;sn|LkqEf%cA!m#I7!KwI2V=>7gI@?% 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%0D)^&{#{FCbN-u2nu)Mi3sa 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 c7;4gqoA$$woj602 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 z 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%0AwtNyf{~ychnEigDcgkc3VI(~-p(u)y z=D<;#2@Sqi5X)+p+e(sS8gStH796;4cR^@N(EF~rpHv|@+M4K4Cv@t@B=@%d)iXj1 zw3!hU6uki08lt5QIdJ_#1GXNQSIK5pZUeoF%tB0OGK^;`8R5PNGmA2d2Xn-EW)g-N zH6lJ3863EFbeo9(I7AiW|24v#XT{Og?c%Uu``~Y>C_atc+qXr|@81^uNL~2;Y%}p} zl#Uk&UHxq*U{T@!|om z7GVVGs%m96f~W1co~|O@?+1-feyzo%>~_l?e%IyLI|=WcZ5E-W-Sm^&8$(>={vc?( zkd7Ks7}pIgLe0Xha#m(H9lmdPR%UfNmKPUUVSW^z-0k?aNFhOAnCk7{VsKoZ@QFTM zVW2aJ4Sp&|i`Yz%J^j!{jSW^Qwdptq27ko0vfR)MBO7kjZ9VwoXOBe`X;l(H6OG zF&+Lb18dBlJp$_yDpeVUNpC^^#^i?hV3vu1iwKMBT?*aef!Jo=Ej3FVUvRZVnzwD6 zDfR&tiQ&by^Oh(^L|}i~l#EjL%f#CNvy0Dfo72QU@b6h*h+BlZRPJ|Y8kFSWXjj$d z=B4(N#tUuQpfuULgebJQIJ%N|JK=WsOVS5=uXPgKzv}zVB%Ad2lgWbiONJiU zO3dJiSk`?WhclItiyG9y^_Jfm?w)YVoemTSk81BRzh`s^W-*IhV^t#6-w3~4xxGQ{ zFkQ;~0)Y_g%J`O_Hp_no-Kh)J?=ut@x$rA0}4_7K;|Uv6)@ zb$Esqahe;~{V~Xo{O(~HrantE_ed!Z55_n+bBk}Z7hJ@f#_rB91SWF5E0nPw4HuyJ z9G$sNG-uuo!@A8{R!>CO3$Lvlys^;kub+A7x1=JAbB7?_nU zg*#Rh@h4fEp^sU3+c+oteHRH4F21iS&E*4PxL^&{rZt&1Q!JX3brruUA(BkLFhD&> zVzcLe+}jIzp+j-i6+?(Jgd(j?am6QK-|1T;0zGK)l`oh|vrGa}yKTasP)QTx5P5KO zX|InNW!Ln(7iH7hF(sZjrx(s(y1Uz7j%sd6${!4~e?5OwKEUm92tj*&Cwlyg=ZpMB zNT-eZq)w`%`{-x$msXk1R6}f=(})O#0k+Ia>n_wB|KNT#t6e7177^P|NPoM^Upr-y z&qcrB!}F>YkP5d;?9hl`k&l`+nWR_8>M?UXns!+xZ2a>jhmLDS5K6+Tp$owfHi<-?Ri>ASg__=b1x3z3%zJ0+YOUpKKLPZTI` zqY))DgUJZ>0~Ac(B~+=`EYzd;5%pi+*39rC=FhxpzWTVE7(Y=mFKMHzk^V{5?n4Dv z-p?cMt-+$JDyy^}trnivqiKY>AGcH=>`I(0UbUsAYG8&3na3Tp&yd&|O=CC@DOALE z)fX4(D21BvXl1uAkByxWS$@5{oBJF3BDWY@V7w)a^C~P*{|S~+#giG-361|%CzSqM zC#wEaCrY*cYsZl=_wInv0XnuP*0}QTOH!!HD3dbn^dY(Hr{94dc4|NW;xE_*V=4oWpJgZW9eFSx#3} zepkndw&NYh~6z#I^?>+vs?lvxF*J)`^@DEo=~c=dRn zmls+gFFjLfdP}$@s(Z7CH}lGI+kX06j|nEI6oM3>Qpi{83mm?8TcJxv78)9(OL~A_ z-|cvvMj>HQm>TRaXmC7|=n4vj{6HHU{#1?*v6&Ei>ZzJKJM6DiWC2DQ{2G?hqPfV` zL@4h!zf$0LtC^^bU*r$7e&{z6>yP}?N1J48r0&&wMEq7k*D2?fB({xXMDv!IeCTnf zZ^PYD>h%{jhcO}9WWY&nM`_+p%|-XT>+!CEf;G^DX{mkl4)rBXPlG{6X3Gz`>>m+z z^z*bN-x<ITedyLhUwq@SbBpN+EzEq*NMnz$kFwY2B#k>!7`FUFOM z6#SMgZWB6SK;h&T9Fru$JpbW7+Bf)D^w4X6m8}De+vk0Z)UElyw^B%BE=XhqxejMx zOJW%G!=dWp2{aK^MfU!sXl`B0f2D=nYnA;Iqr7$e$yCg=>!{YPa9fRVTiutsZYMCm z>o%@b3;7?B8z9>}?ThDLp3b#+!_&Wlx@AUQUbrNZh+t=i<>|C5RiS@`+H1NQl(0nY zHn+~r{o+!ufw|g@*ob-c^l8Ha)huHTdJd6^NTzgxq?35A4<1;)|nT-Kf$aE#;7>(pC6TJ;v|WywAoBj1|uAtg(Z5* z8QtP7(RTF~FAhp00&S>|ygU023CFrbwqH1S(6wp3S4a{Kl;pf1wQSNCFXq{m3g4PM zB}E`;3-y&R&HV8qJm8lpU5Ly>q=zZ(2lUpa_(viSF=GlJWmwvx7}Q=&Mw z@>{fVwzLRwh3RZw<5ZV)9ke^b6%nsJgAb=yF5*@gnFDp`tIFGKB&zeC`Y?>=DX{}6 zliHu;!QCIr>R#{&29Zx3Rtnaczf8QB4pV+FJH|-X;yvhrg;JP`FL|W$hqES}SuGja zO4g-_+>Nj!up3RPvTxdPTsUWQ{UOs(;1&D_SB?V(oDP^}G=kIw=N=3}^2P?UaBJ`H zW+G1=FEa9?qg0Yyqa)m3y~E3}{Tk)nph<@W9tXxT>OSBby?;jYv^fop#)!i2t$c?^ zw(*0|qdbOqPUHrm2e(qW5xq3_^Q4FgbxpXmNlR%h(_rH(vyar83$P(bvzTlUw=wQyHFbaW}cI7C21uaHf^m|QSDaH-&yWjWkmR>RWsAE z``c5q0)Ac1iV^#Fg579ujaP4f;`OC!nbR+y(!cu&MA>|gw)m3m#Fs-Ry{g156xV_z z-9p@1M#;zN!HhCHV#g~jRmW7mkC<--^T_}2T~M%;c%k~KMYiUK3PK?foW1>o1a@2# zyKedQ+znYGsAOy9V8(tgB8~#4CMQzsgvRUws$X>+Z|&^t+!PYYCG@}YFw!AT_F)jccpiIp z+vsJ_zJ^hfjU3aUqqs1Wxkgi*RpQ=IU1Zmptz{Xl9MG=i`M=8)P8&9Q+GrIooHLzQ)aoUOEl`r z9`j@3bMxPhf-c~2Xf5h8{9J@uv-_;IEBgMX<0!enXJss#f|OL}K7Pnb)osZ-mesH2 zV&z0il;dju^4N1bRS$Q7?`faA!g!VF;^U3aS;h0ppG|w;DHl=Rc1K(a#fpi6{oXjb z!q@f=0?^60hT?FZv`U4%&8gnzx-SOo526Daa_vz))@k1bCOQa^HB5=TD&$pMI@~Zv zYlZcpJLPOpFt@w58Y9pSovpNv-gZLS{tQl?Wv$<4bo0~LiP`u1iWHV-j#Z`l7M3N) zYuNm{t!Tks$Ilzx(a;~bDGa!j-9Dwo0tc#;4rKM;8E&JdE!!+m=qgsIKT=N%EsB<# z6`D4s`JARxPyQ0ME}ysJ6}5iyn{yzYD!v!(_RK-$<6CFi(TE`1iJxUtkjWEbwOsK? zTec%nADxcI3_T~3@!IH0OY-A!9_0|JCO1GploARQd3yk*|E9P)zs;6#rhJQ{Mx9rb zaONv{|MGb9W+rBay^gY31SVPK+KBPSMu&ik(Vbi&oJGMz(Zy2Z^BP zeCJdyZFrX2Pny3lNKaQ9pjhlBfeai{$46T3_4thFgZD~Pi>vpDwNf0yPB zogHpSrpoith1uWqAc_fsne z&qX3KRn-+3+$L$zX2Wd>nO>s^)Onab+3Yy0O(E}G0rvKEfV*XQP$v9Xj&Wx54kx97 zr*uhNCObGrrTyerj*waA_a;1<{^~2)7*L zHl4k53|_^39|}QZ11iqYytW#XeY@bHWemgmh7isf(}zdw$KtDgYr2K{t;V&eY@Jl^M|4|;!|$&~WK`ffLZ1ZM%&17>x(LRrmKk=83$14D-r84J zVYCPPrfRyx9#^|!-U`5gb9jm8g;iGr#uspoq@EeteuJKEBEg3Et(c?67vqIwz>U+j zLYq8)76Vu)0wR?{C0Qs#1HS{gXO?!;(j=Ko!(J&b`QQNp@MkU5{`9dDN>{dF^94A@ zXd8f&;(h23PUOM7au8wu?GJok)!pQsy>gw|d&&5#O9R2V#9eNLd6iCPXP&lxh}$G^ z9aAy>T*1wTn2Gy?9mOJ4f-xo@y~2Bb1{s472meoKEH~BsUB3VFO8_9vpQVGpKyV}w z=<+u^!aY-ilOKN-aA!i&R+afSTS5Ji)$p+g+cMA~rT8s7rs_Pg5s9K$Mo^Y~1!esN zT(8HDJK|6t`Z{%9tAX&Qgsc)g??$rrrOzS{i#^gx9H0lWFBNOU%8yrVp?FQR0On$~ z7`s9{<0`rHC*GiWV|TjJY5xaf_hzeo#h$WiTJ|QjF8CeIWDqWIO!#o#L{asTve*cV z^O!hbd%nw|q1BgP<+$MJ*!@zxWJ9brLwKYYjT<%2(9Z_U%H{v_6MA@@st=gW`cw6v z*lGTNR*hJr6;A5*Obq)|oC7G&Ja{Vpgt0pKC`7<&9(j|Z=Y!Mo_LU0vY$hIy_&HKL zGH5nL4yc|?Z7(QEB7bXR&$ww#q!SQ( znYFaK7{lGRWaleFyw@Giyxk>fL5^CCh_{Sz11B&8KYb9A44*AA(CqKo%SEd{*7-WO z1CKst*suvWeDADlTd7#jDQ6#kImc#ZEe zhVL73)UCvx7?@{AX0SrlRQxZ0fRBLJjC;#tqSAZ$W78UAvxD5F*{nIsk{vU6=nz5E zKlZXascozJ{qd2F`g%>PrPwHoY+DN+>id!5bm?e=v*}DVW{H720_$F+SRuS0U?`3LGT|BMc=6B6qJKt13s5jY=?OCK|&p|p3Xkcc{Th%-_l z6y=hKf2Q??b$bPtY+p#ot4|mKGY50BtkLBJOJIf}9lIvQTNpZ9f{xF!JEQO3Fcb7y zAMS5#Nj~*1#Bm{n9G^Rgu`B3tCdK;;SYW%#zoSWKBdq{nJ(#Rw1A?X;d;wuiaf*7p zT|&;0apv(cYL!r<#ttGm>l_AdUFEXiR~2L`y#qBE-2&)?q5*}`%4&I|o<6dAptmdm zl*1oJ0Tnpk;yG%ic$We5u?r9!7s_HFR{6y5K#(>-bLpR;4HGqv ztarv41`hKEET!(l5oB_Noftxb9%&8CHi$}FU=lR&@m>NV0t^ZkKsF#qp&6cig}x0t z*$mljEcLq_+Iyktzr}t+s^Y-!KqAoh5%5Fcq{-8Y*}jEDtQSIhm!j`_FZ5cn@X~GRbi_cpo$^n~DzS4ZZ|7hQN%w;XXR}AmUnD6+m5bae(y<(mqt2C2N^_y3OE@8?yblXUmM1X*P=AX+AzS zS=OX@BEJKtvBj|scs(c(UQdpY?+Zv&dI(LhInSU+3>KlFI3&i}(C0w$?gF#fNcTj* z>j`?WpH$?Ua|67d^i_g!{d{fvl2zj!O$r_3iUzclu-Hq4t?*ltTU`8+O}zX!_LLmk z$H|6YL4b6;?Qs@vIoc@&{FrhSloL`w>Jfv^%A+RXpkH@#2IF?~nRF@IvMF@K$K2xz ztNk1#zerVFa3c9nn3AJapp8ivtVMhQ?cgjW{rc}-4Z|`71K=1 z(0(O`?FN87FTmCFdoMbV2@Q;E7xdkoVwh;cC+8TC64%!QJ7hpI-v6a!V+%>L@B+*E zBrJf~^8yT|YrXZ()Cm1KUO?WY8rifmEKXL zXDoF~u_tz+c`j|*eU+5b;#En8%Q8Uff%zp@WIw71NdVxVvoI;~?)Ia?^BkmG%CnRu zah;HHV*fdY`(MdhebF_DvD8fiY>c6$yuCN#3{yc5cdC}f7J8MEi9-g-R{#qEDTQAF z(&E>iO(wue;TJMgvz;kI`qT`+m8+^?P#q78I?g}~Y63vbNWBHNhOm(-oqi}KTrZ#D zvMNdMH?U$sQ`3+H2(L*7E?lK|8XH1v>kwF1Uv$t(yq!nqXhD9F<6*K4Mj3oVuBx|d zkc~;_5nWLD#Q_3vKbG=#-54{>1u@*!uo!FUVLlx?VYH+Zf(C|2O&6r$6aeo5Az;IH z`!n#tJjhPPUrm-(6$5IC_{!&_ zvPmWe^8XQfR~+= zgZt1Zw1p;uu@7PhEh{IMu)7KcrP4hHl1HLuA$g?HJqD6T2r8Bwg%>CG`>i*Ex|+jN zNbLh(?cfb`n;7FWOBV70A{$X949lb@WKuyD8=~B81qwl!>8x=Z7fl|x#{+>0Aiu5} zi-Vgi5*&M3(H#zEOj}}46sQ7!U4Q8YT~0=|+WE)jde~U;Z zfI|Vnj(#LY*VvoN@85yE&t-rDYpCou=9w6r0cJn2|4IxRCbuxRzq4NxfFY|pP` zx7`{djiu*6QM{4iQSS=;atFcppwX{`ACQ8zz0-~kxpKIy1I+`}(7|GG?KUZpYab4U zwAE+>(vtr}GCC8Pb)(Gg;1M;XM9FlZ(>HSi4)lJF;ek{Gq!%+BOqBpH4uNSLS?LQ~ z;fa3FdvN(7<|1i&8-sSPTBYw4eAOJV(*}|fe3~JK`8Zs0i1&BS@Sxb5f^>X9!X7y^ zi;@x&dr6&#;J4Q=GjI|8{?G_%7QPaO%=&fB>>t`j#8Knz4KR&Ekrv_9N&%Bb#8pb? z(zvDQl-`w)uf%LIG#H-i$qODXNGpu=VmOJQzh6c`E+eIP(;9v=yLYMBDfM;Vpgr_~ zFNbiP&kW*+C0chVvVCIBt72_<%v{_Nfh}f0!Rjm=M;6%}$mm-Mt0VsG_kzh#V-CX_ zFHskNM7GHOUI{YQv;`m^&_Ra)7zo1#-6=aegbRK_-?j{sg$@4jbLS=o(WG7(jv}?lWE)YUj z5Lm9-wg^yYSMTE9;a)a29=qvH>)&)k6be>ij~VI*2Dt)#Twusm-cvRWeLp3%CQK|d z$6o(>GN0zVO&q%Hd`LoS8`{UvhHx6$guc1rwN9%Xw@jM-XEjml!Zp~v@4)H7t)ojc zE2F)&i*|ZZA=v%Z2S4J`%5B8~=eXCd+zUcnerC0oTVu~$)_Qp=1}+u3P_-ojr)Q<} zN!!k)BHM{NrF809d0+o}YH}s_GOckIv~r5T3qm#e2!tq2Nxv_&F%r6)o>~Zz8w=LI zO-=qAy2SC5Kzi!ogDoLhiJt3YRNQsn2a z!zb5SYk$M6_5Q0Kdjp#C@ndS+*;2zp1@}Rk*P#rpB?-y(-Sy1D-r|^Tp4(>)CF^TH zzn+Ttb)hniKZ*@Oy2@zJV&6YL@DK|>Ui(?EdAbAL?!Sf+|6jUY^u*5FDXU2q(;YM- z1lkZe;eY|hZ8f2AM3r2LT4r6S9u!|b^t~?l;)r)+Xt+&$G?N=z=r*HDUkT}b^YYr4(B(BVZ_KwxnY=|@${j( zd=XMkIkh2E{EJA`txv64gm&lXmV)*?dvZ>^c}f5vN2mu zm5g%87wH7wlePc)hKm0|I{M?eslBGd`||C=wNjN@L+vwrbU_mfD5yJ1@USP-%WXk6 zt>1A|epBa5zU>C;TqN0mf74B%)8c%l()z`(3$ujM#G|1D_g|z$CgX54>NpYi!-umA z&jlJ47g)x`JFJvnt?o%Lk0ZJUFuz~>Fnle3OR=q5^t}8phq% zqHM$!mpx+EM|RK4g)vyY!cMR8>%eO{(dXu-RQ-qV;-Wo^kHcau&)ugNaTQ8>Xs3dT zwus9C?YQ4pa_!8N6w8E5Zwn?&rue2+lMA&5x6-?cvTjW+`sciB3blsEGq8ONI-fDu zX5~{qiZ9r|u;m%9dqhb-)bL)JI8Yu)EAcV+Vt8N5&8=P1)U0c@Z#PxUS$|Br@CA6m zWE5J3PDJjvO^TZd{Tf#a=k@yIhJmaDjR8Vq%5BI!#I zC;KD)L;)E2gil_pbPVUUpGY(+2bu1CI`}Il;-i1~Z1fcJouLv&H-bgwSTXCPi8Cgc z+h<7H=k8m?7;3q z0^-QewYSp_msd!Fss_iyzA?`YPDPAf2&C)GT*U0=&*aYbAmNziV0jJ5|wr?%DeQ!#jdpmL;1;#c2VJYqjI% z+Q0A>Wp%&Dv`U6E90(FA62p! zFIp6YG}hQu7icTMYa9yqd%-{7-L7`x>6+ioO9rXmgih|cv?-BH1?=6 z=M^aOIwUAO%`%Tt^I9ld?E-*oT5ZmQx|Msr?rb%ro*T#armBG;xKBg+IdkT@_-^4VJ2Qc-42w6bEf6fXr?RSZ1P-z75!WQUQ!7hFCvD07XUhd{9b2>;+B)3;SRwoLMe)TQZNK(dU1QV9A``A5=ue5j4`$PP%0?q$vjXOjA|^ z-Z=2gVlrA(^Jn>ye_kF*9MdM#scj-uA(0senEe9k9?bA~yb^von{w=D5}An2A%)Rl z2!)%P2Ktm_N4BNN2H7!~<|V6`jKJ4;7RuPqaJ^DH7J@^GF6%?HI4PmA7X`y}{^{4< zWmiSUM6~;rG`BubNjdUE(n|uGp`d^E=6+~{x!tLvsOf9SEc{Pcth4RUVAGp-SS2F2 z$!q)E^47abF?BeJ+VFrV{+5*v%$y5yJ^qZ5#p9Yt!X)QX>vC}z0;nR>Dx-6L!+1Yt z;qOv)`HHF}Lyi_$Fo9(5G1(B&3{`^gxVbCcnBM1e{9EV_pKQET@u7Vms?9YNa7l~V zq$URa6Of6-|GkP~53}8BLEk1DM)F@5D*Z@V1S+8r%1TN~3#NJwHH-HFdjrCe_%ZT_ zu%THIFx5Mp+!@+CNqqSpJa_4_JZ?)X>8Mi<{FqO1;kqp&`HZtJNx#Z-;rfX|g2&{9 z@}g(+eXxxzggh?BAkqHGfL!3UN~DmKmXIQi)MlD3|F7$$uI7_#2AqJD(5(r6!gxI8 zc%)v_og0FyIEBbUS-5qSi%2mad|<#|E-oWD>UeP2-#oKh>+4DMPvz?bT(kMkMYy<} zxCHc8v>T+mc(G})P(%PoZtNe#qNv@|bk9~oBs9`UVR5*2DKi% z#Q|=6yHc0I-&4H5gPF9&YwH0$9t6RujH*~5?%9G#`tG6DRmvii{J4-b?m+J!fR2wn zHDh~HNg`1pR(tF3uHbRsf@U{kOk@ayNcPz zR}~{TvgHogOaR{lG%>VlIZ#ed>KQq6vlKPl^nI}aVKhC!)RgoccgdIk_9gU0EB zYyk}zcKPdb1qKIhe$*qaq-R=i*SQ;hu`_^bjzlhYPMAlI>&WO10*3HkIH`3}@5s_! zDQZS$BSQLsp?zw6iFfHraMTsuPq`iI2;YHBU@~3BrU{}j!3s>CbtjR4fKjth%dt{u zKLQZC^gl+&o;~%=nH||xGsd5^p}kOj*bdbjhHPU*XUh|U+ZfBq zM*a||4;K$UO*qSLk9a@y&E^Ma_(nMyAm#X{J43>;RZgb;h4>TiZbABiV8!Pt7RWF) z*a@&zB;T)H~DSa zxylNk))HU-vnMo-Y(z zmW~O~)bLlLWv(7EnHb}ig7y48%KV@|K(D||8=g&jMLilbUs)-cXIFCWWDRt1JWMCh=h#SYsUi!j2j~D!B@hK z8sDCzxO+h*<>LO6_5i{CpS0(d6P}LkOYo*h`N`D1z_b>9rkw2~NUZf+K-y~j{MOsr zu9`A{%5GG#J*m?<@_ObEr|puNZ!^Y6AE>PyT%C4to*AHoi_H6LBcP5`v8=q*Z^;QC z=6w=|1R;|{BVt|xh-ZVXe~H=*BM}`L&vEPDKrzQqPUnttp%2Wk3*z5_V`7`1gE}8a z1|04xm=`%x#elm(fL8_cOd0+jv~*HysjV-;r!EFr%Z+iqoaK3C5a_ubkvamktedzbt6tZ2PC*aduN*-=atzs z&vX|je2!9om}msZkTc*)v60OQ&+CH7juhzahSp|FRvpK+DFdB@4$!3%8j0vFhz2X1 zBME3NE+^QvvLxsL_nQ+=g6>BFSEBqh?cOiKsW5ZfZK4JZPlyN62Rn1XwTodRf^+3K zgMKPE<$w^0QDry9$tPlA&N8#cR{aQ7DnX|S7V!de*GL02LH0xk!UanCVCawsQK@e{ zBT39aa=-OH?Y-0NPzez70Dl_{185Ll0aO@(nawrm=YJDg=H@BSD@nKl>a);Rcnoq2 zI)tw>U#Sg!ook#C)u{v6fY4xAZ~Qjfl6Vk6QqM-lGm^1(OKG9q1YZ{rwm~w3yuwH^ z_ii$w)2f7%9o9VkL7t+f?ODu$3Q4iC@rMDF?JAf^O-NhxMwCygSfwI~^u2}%K+=Oj zQ30wT+P_yg$bZow-qa7@Cd=gc>gh6JxU?SkUaI+4dW6&#MGFOQ)AXIyCnY%hR zLo!4 zQp`rX&eI7}?fuKRh(>%+={7dmwulwl-x?4J^bh=HpIvPb&j5ElsE~pBUkuS!#6xcO z88PI}&{f1kVra82J=S_&OVY2*Z{{N%U~#j6;c1|s0`zti=RhCB>Uf0f9H~9j#0npk z-u9E0ms*gSL&8S29&y4upyyTPK)Mftb=%p~ihLM9~A+Pi6>7A`s*? zT;v=!1V#;m`OT^9c%{P!xBL7BeP__lp!AE8LL3N(TQ-Oa!r?v)q$z;UCIZTK_&pE*JR4wxf|AgN^|Uj%g!+HnROgJMPTFB*OSh53EgrZx8F3TFFL zACFF(jwt4uCn~cTox5r*=ttchIQyURFgDyOgN)G7 zV@S;ZImz@c3w+@9?!brBm8p4d8TL+&W!?rev;50Y;S(NE1>p!d6Jx;SOe?={WOJXL ze%)w`BFF*M6XF##oSxGLU(7WfXbm9TmT^+O1{2?M@pE^Ri||%ZdBJzCKj!}^POJaX zfy^`0ZDnrywPp$X?Gk(mNP5QARp{j6|B?X04U#~+l~A8n^w7+P$a;8FU3s=Zb9o)9 zb$H$}S&i3IY<($4vWf7Is*& zmD%C{ zhqQi=734SDYX+-tZbT1637#+?rn0AO!fuy=lyri9_Dv-_04ug zMbj)Ls{BRHBHWC&qoq1Yr)P3L!G+ds8myAdWi1PT{~msI8}q2(E^FpIVdAWH%;3CP zZdSWLQI+X<_@P1EaJ?e)kow_Ej91^%Wo*Y-%8}3bZC9qY zhNe!BDM$U=p@^z8l(ZJe{ScyV!}Nd5aS3)qqnuZp6SV(hjw}Bkb6m+W?%^{k?JcN@ zsxr^}Q_rU-S6A47{{5l<{QEP6L`silA-fcl7vAVYZ%qI5@7LNQ>i-pe1n08$1>)cT zwgPpT4eU}>fb3FSq9}~=R-Cr-s>;+r}d++(;~f_ghJ?+`V)xW4z)H}eQ1{` zR=+!R_&KAXWwai@K6-jCA&zFd`g!ij@_uo5f=QURyHA8nn^;kl;_@B~O^CSTxMae@ z>|w*5@hh={oMcdu_)y{`*|A?ks~;7Hd+T2(`d3~;?%&&H)f$RRUJX0DOu2k0`POb_ zan*u5I!(T)wRB(q-O6hI{=G|Sf$k(~(Uimy!s=7^y1Eu`l9Nu=p9dJZ*z+X)6|sdI7_ z24zE^ytpWv)3)zDE$$gI?yn~i_rj*jrNgyp!LFS}!ZCcg_a>a{OnSm7FYwJWy_U@v z>&?prPvcz4;29Fhs2E4vw(siuf6MiT&Rv$uv`qVXzOH3ALbt^mr2n*#Sr^{%3Y_V7 ztR;9Cti>05MRisZavfN29o4T>R6MUWG<~?d{t4z#ZbWh$*Jcs9maYm)H@ww$U}3@4 zpjEZT=g3dLswtqMy)QjJOzfs*zoN}6YP>DTim!NTTwc0we0cAc?s+-r6iq@dTPsX& zTLtO?cjx!9u-C=~uk1aw_NRAcJ2z)9eF3V;W4C80JIuxde0u2jyP$Vmmf3 zJ=DxD#-_g5yAC;4Hi``RtG*(-;qp8kx}`pC|9jid>yE4N{j{ko#onueq}*gvAuEyokvY!-D&-qtQO9)0CKj#68yXYr~V;K5vCD8R_UgtIzdJo#NJ8gabE9U_3`KoE;WAD8p*r#zp zp5HM}qis#Oj@7q}qg5)^o=WXOhAQ1NEc@ac8p}WyAAgw+j|HJxNl}{5MCpD(x?{E8 z^)JT@4#kr^XB5w@wu}k%6Qn!(CU2COo&5ITr}r8Due9|;!X@#%7(si>ylG41rY>i# zfm~YRCou(7M~-^?YUsLA7jetzw0~zP=!Q5lL%_0(I#akaNt((1JVI*c8=vFbdRK{F z%E-3y5TOVR-N!Sc{cP9P&|b>3{qeSXg-lum8>^U5yChzxy@E@&dp)~AKiins~rvusF?8g}bHYq7-2WEyE4JYK9;4{O{9Zzt%rb4{$E(u%-MRs6av zzFIyhH`b$_ob^rkh`uzlvptQewuDx0qcu8H$8k;*K5k&TN4Jx0BzUU(n77s#Yn9UV zC3gJPM<3m3+ogTzDbp6q`oaQmE#wTkMI&+t{AP34&@?9j{gxQH;eu~PW$0nQh(WH5*wiVhUpaRP9=wMuIIj;P95!F&1Yo;2iE@gD(!KKr{$r~ zc)iL=;gMd$r_}a#EjCSKQ_NHG=;!w-_GLvroHmhovHe{^Mr>k{~>pJ zki_Gq%VT$8QGMU&+*!~q+SzKu_{yj7g*3zVeFJk`Z>UHApiGRY>cM`L8>~A+@5ilJ zPSln*ueeU!of}$`n(KWEYP#^#%YDJWVfnf`7Y3Tp_L3_~tYFtKnlCijZW>HIcxZs* zjwmoGucIw+fn%p?VEs|DRyWOVji-2?XQ}bRz!QH&Y@nmQ(t41^|KpBLH6<^|Lox#B zZDS|^XVOLLtdxWDko`}a2%zIGTwQ6>@YKwBlZ1c5$`wb{PKFa?GYAnbIlbq>TiI1A zXKzl=dE6kdf&)+)m{< zt^p2gtx_mF#Br%Hz!qrVtvxXP&o1XvThu)(z4kZaiPSDTSXF+-OoGfT+}A1pqyoE|^@tPd|C3aZ zj`&Y1(8w=Lok79?Qh{+wsy=+o*8xkz7d^9v;B_vWE2P-!*&(_q8uE94>_0+5Ef5MS zMvi5aShmVfd{5prS;<-3hiGi6ibMpci#^TeJ^TqeN_5kwVbP&Ez* zb|bGm+5oGG8y9n3J6_uy$`kh$xn!P2vE#t1ka~2=XH-wfyfJ{uB$nktDp*YlA+)`Y zbDF?7wY?U3pq+DFd?1(bNYq=ao#_=N4!e*AfMy*wn{reJ6_((%on%waspyLJJAgfP zb^9@=b#*WY^9qlPr?4olZ*y>NqwmDZ0Nl6a1U7fxN`=9p5ai8AR75=55Nif@{N_^2 zvQCarIj{moSFp^V4>JXnL5vx~&FlGz5bG0TzDP&77?Gu5xw6|x74BU1Bm{KQ*L;A| z4P%jrH-1aW(9979IM$u;%}((Y@0FEbELu5q=avt@0zqjp!*a$plb4Jy|I@cY^XXMx zcw*47;CB*80Bs@8qs>D2kqk}|QgTy}ih6(-^JSi9T)m0WYMLHSHe|&7w6edATaPv$ z*_vbDT?*`~@35zibz|;H7~8Kpj36wClIV#@ll%-bN4`c#mqo3S5(Dk98F9$Gz$Vfk z^lU+7imhO!9Kuw8r7)h+pV(>ci4<`s?wX>5|%wd42(xI01b% z8Q94>p6|J#q$A0o#L=TqyLhf{Ky2#K4_v2FY()p1spm!E;PZ1$pey1tb`s|I+#VR* z)4O{qf)N}6z3T)I^pK;oi?GX6r~J~w0}=Xo-kxX;md+SL9crdkT&RvxF}%#+egoLq zSsum-o*CHV}2d&{ZuF*iqK^LqQ-?=`XQ z7c#S=&N%74k33SMG&;b|jZ-_*1^z8aVcY6%6;n7^2o(g^CRk`3o!c0?R2cHS!ErL7 zD5IS~hx95b#=2QZ#lobp@i83$M&JX}fpQv_60=q8h>Rp24mmjT1=uZt1_aqh+_~(f_lmJ~StL)V$9egHx30FOGsnA-r zNaP+H|1b@?A|b&M7FMc0T^|9n{V#C@#`bFUs@D1QccK z=NJm?P8Nj`cY)EIR|44WL^qKl>HB&Rys7j)<)Izc;zSGb9+>~X3I=>QKrqOUIQq?O zQ%k96-HzZM+EktZEawmY=?3t#A@jIju#?ISRlDc3Z&@C^%(;f`zg}u~bucU@qlfhh zCzv8sUKXQTlc1?ub< z&MDsdKr=yel#%04Zl|e{%fL;9hE`w%7KVWQz`pa)7qSvV)2gCi1bfK->&*P&e0&x( zze3O}pHEoB(;M@c2z~dn+g)mO|AFED5ZQ@{&Mx+*SgR+Bdq*U{`5 zHdq#-`-+mUT%nH*e5n7D4an|g0~Sp~yGu{~{aM!LN#wiU8SQ zs;JHOHzXVE6E)yaY?bkCo7Q7fg2pwPBf6d3E(P=#QhH-qNIJM9|0f+xiV6H*r2|Yz zI;bl(_NFkKD;QbyF3p7lAGU1~qQ&@y|5B&pfLTDto3Fe0$fWN;DLi?v2 zm;vQrqYM%jO@i-fI^sR#Cx1+DY?E*YcksGYKujQ7l!9K0F-X!DpLW} zUCCZS;*f7ZV-VdJbC1=?NW(ZNm#DZ@%zY@V*U~Y|M_rE2_>3A7I-nySkOaU*IYT73 zU+tZsDszaMaW}(5fle~WuyPQa?lGY2SPWKCilugF!Dd; zz!GZyKsn$-1wx;%?q>DB4!}pgAyIOv_z@c>YF{g31RlB2J(mVY@WjEZ95fywk>!`A zI1KTA`_1r<5WLpPFYEYxuPAp&y~h=W)TjSV zIRH0swU!Jh2h-uVFN4afm1*dE?ZE%;Xa$CEq?l2()9`*7(%BHAuN+`DA%T0L}7c?^@Y(Dy5I3E9l`Z~4{pzV9Y9o$=Fq3#<%j9N`C_ z9qGLMMYn7PYQnT~5&mt6cP}8Ah(>ATpt-*`+@XL;;kkm&2`LAd=%cvz4@VYyg`xRB z%(4r(`}_TfQlvZt!5`=bI!M)DyTzm8>_181f*<}4VL(7AM!HwLDIL?d@gp`P-*2{1@H%7X*sdl@Dn|t6Lp{iWgSC?npoyy+`Q9jy_hBU zh6q(2(dgp-2$Ze`Q5KD!+MB@@vp+?!@6kp)V!nBkyd2SixFdUnr|3-=Ze4?8T`a|0 z>&1FgRixjm%~s}~SC*xvpcx9XcscVrm%++Tzv26?{mGv{E7F>>xq4?hz1VLP zgUHi-@!$ zyUTVq8Gm4ws(W+poRy7Ak93KmU1jM#M0%^p!XJfK9Cz#?G_pSRBHitsV?)_$?pQQ| zx~F$YQ)4$9uJ@SRP*ovK;nYXCs8ffzfwPpA`iXoDIK&Io2!3g%GeOt&)mulOrjP%L zDPtVDl_lYR@QZtd)6>eG?h8htqN=X5ns3WGR`pZm5nh3d^qMT5(E{fRDn}G3cHGyt z7{rd3J4?5+)X6L#nhMOnIR341WT{Z(55x4OZIO=}7ac+Ump*giMfSoDiYfa@V8ILr zk2DQodO!V{o;nEAC%#m|c=UkyJ5oi506R6BgRiSohS4vjUj-YPB2DoXs3kqg&2&#w zj=m4e3g7KevTb>AVtew`@urK!U;5$aHj|du@{$h42IeS#R?la$wCCk3I#<8=bvI&p zmlH)RCXOSRtR5g1;Mi>1sBP~1y-vi+r!nB8xD)9xOg6$=#3eT3PE%iiHLK+))ttnm zOnbt(;tUh!e?-9q}C93d{)V9H$z`dv*M@Andc$VfjwR6}uYqpxITGi#e&PAWIT zBAc=@w|{TTw6nK-wSyZdGsini z87R}vk=vHga5K%sL;d1PDR+qeb=|_P?$z3e_6*1p5tR8}UTa-6YGO20=300BL@(u> z@K_t|-x-i0-qqLq`tyr+tR;PCTi$(m{bP{-xCG>1zWz%^Y#6jv9tLV&uKpBlrSS*g z+#v4t8+UC;UL#({Pb#-wFY#U{)$4@E!jyU)xqEriinXsb#H<>q zw?q%Oxkd1;bFDuf2jndbE*J}<3dZw#lU;glpGXFr__rM)+`apZyN`XGH7V)29{PJF z&aBG!!7b8_hJEswFK_J;%Cls>G8f;U0q@Xpay~DYAWv7c&|y)zX9yyF zD0%0V=?O#}M4&6G8}cLTn;-M}RBBeQTT@_QLCg{I4ElZB$Bi2Nw> z$AG$I{g zlWkuQwxbOh0{9=EZfP@A8KSg>--2n*m-CcyO3%9Xz1+4KjxO&3x~a?7Fu_FT6pAkS zuZ5#3YhPt8V3F9%3EwFX{~~@*RydK8O&#N(LsbeTts(ML$v>VikAG=0UCT{Q#a+6{ zL4`$iKtGPz`Pv)j(#Z7+#Db=V)bks#Y` zv$-|t_E&ob{g=(yEB-Xixj|UQDcL$wKHYK3VqMZ}AKNMHncs$_zpxzTs|yM<9Iy0` zSI&GtWIZZvOj#Kc5n5x(g?D(8;^P)Yyv%i6DUzpD$9(_0;ts-}?7~GqpWn=ot-@Vt zLOkCzv&sxg%{vP+;Ou*0h%&RH8QK5&w+KSWIU!hb!XjdHt4=&nUAkxW#>z1_YW|oc zd;P?Jjx|*C(2nvg&Wt7R!B&a*t4K9oJYVwL7pdBYo4j+&eAvLObrK$z&dD$sVxXonEE-IAG zxiXi0Y5T$zxfLN5hQh}1ir_5aY}P#!2bg)CXmG0YBF)NaYo=ob24y_5#*9&vWXZ!R z-!_wIG<&3MGcG=H|0LD9k-qbp@{|VWBy#B}P(V>qT%#%bTw}D#D{$P`6oHE8`qlZw z<4q+PZ`2u$Q^{z*a>(85+d}Ees)%!)Bo?jlhg5cwW^2SZT>(9Lw+%-}07w&(?Kqv7 zNAL0oS-tm<;+%i1D`oP~Sh6j4$9}`(ddv4^C+rfXGko%AVIqCa#FC9+*{G4MU^xcb zP9o(j9@XD78+DCvWH(FpDBJS&Nhh}5M>?`Kc%V}INpuL7|1O#9_jVMqGc0PZeRUjE zMeMIB<8!Dx=*R=7oqOjEWgaRYR^EQV>PF?dRWQvnT*HKQz0tId@c6+gDLkkdfS)G~ z>g3GYWHZn^`>%6iC^1{d&8P?cQupEr1FXuoo{w`X~578im5k5U21EQdNKCRgbQB1kGJ8ty;j2qxlAJg+Fo0ljcpOg?F~v zSC7)+n~V<)0mIUW^}uoc&fmwC?3=`F#Jn=QiX*K+l+WfP3|_D7gmMI(*X;7|87Kxi z@%oYuqI2k)iQ|Oj5NNUkWM`Dt6r#ZSGN$_{81V((GInCHAO?j4gHMC9$VEEh7$8jf zCs++O;ZAp6C{_#*cI83YZTs_0xry*o zD&?<}Cql*hkT)HTNS!KMi=M=FqJ!ohJsW`33+@k4t)nGt7llS)5>uClUf}nugveRj zTqMAzzuX@gb7KMfW(!^(;QXF>*7{U+&>{5sE8OsMl|e(uXGJ7-o7#i|USW8^_*n~> z(VqOvNMTQJg{{})4``^Lyc;t96I?I86fDy8IKeS@iB-_z#^Oto|j_>2^0v9 zl1}mvXU161b;JAIXZY#+9N^5Qf^{&lS|vNU8Pe1UqMuJU-w}8LSNiE?x12Dl{|gu5 zH_t#tPQsUR$yTBcyV0M!b7N;N=6_!C!}h4KA<$g?4>YI1J4r4m@&gDM$As|fC7=r! z%~%v$>%LN2D^8uxSd6WtDzD#g1zTg;JMq#icRY^=espH=+_u6nTEQv0AS%U{(n$hX z#C--3>Xnn-)jWSh({IWn$eIp`23sq7x2gKTu}LF?f7Lw;T1ec1DVG z!rORGb;RiMPWeCfm?k=ibdWXurD`Z-O^3IHtm#(I4vy3ci#lvMcH=m|4Fx|1aNGXE z+!1Xyl!&Y4s|ujkKm<{CBCP_}bg&P5+;KFY1zIby3}_p4=ha2#0#vo>9@S>vvk+%S zOv!x?IP*IImytoy0^rOk;1qaowVyzoneca>M@YR%;Hqv9Tz2IXmPe5spJ*r}H{u(V zfS3N4Hu=8ntcNq`+teA93{fRaW12;n}`;0R(NyI^+aSyxPr~Gt`YR4QEOxY za3;LQ)9Y3oqXc$!0%sJVU+@{!ESwkVAj>14f_uw21l1=_$!G#B_(KP(`+B%j!@vXG z!*{W9#?UK(OzLFsfk{1#QyJW&cKoGvK}7Fyb?Xcq1`$?8=suZ3g~8m|z`n@K7^vf& z*kU)1wHw)K;Yl$YK~!1rMWwGa)aMm$*zW*IsL;6Adtk&6>^zUlD$y&r^}gwWI3^;W z3BvR9?vkT6#n@)h!k^!_aBu`I{5fRIJb3PX-R*8LUn~YtpW7&nP<8-+~D~zJ;wn_pP%uV)a_3ixG@5nDG-s5&biS^u?r%9S~_orkhO9fLfnEaDYAK%))Eo zJM#{EI_m^-Cj{<0iU5#wQ^SVo$efQBiE0!F1o|fU8CMS9Qgw2I3nHlS>SZq-SRwiR zd4>jg(+S^0Ms?L^B!KWk-DG_~RkPA3lBRDH zVkf|LUx9ijgzxbv#;%yfwgTA#FtAs%g*OI>9C6M!t#UzZM$1~1>9R0K294OA`y>HW z6U`x5g4l@-P8~2t^sEe5+8hjn*a`4~fkj6Fv}a#sVW+hpi%bJQ??m~y=KLn3SKTgc-_T%dj@DT)_aIH zgXRj+W_Zhc+N^pFcR&}(H=`hc%GrvYockQmW_-_L6OzVE`$@K7VW8(cUt|YG`oyzg zaW1wzUevdAnB&2~r#|tD_Z#F>N2G%s>d5y;c+3Cz)D2g#n)a}N0iQZ77bzUb!l8JO zPaW$3i)?^G9t zsGud5Ej=bHHbE2W;3Ky%hi8=nwE0mLXc`o%J$&S{rX?tVHdn*f>Cu*henfHKkH8W1 zBj9DXQT3jVOa~%X56dCXKxyi!D|or)OUeT{a)6aSaX?J z+%U~VAutZ>Wu!%ME(yU?G@=EavtyMH8oQN^XpO6L&-?9C3`aa;HBM>$y1XHuI>=wR z_o=gn(QP7Kbz0D3CFfZ}K6UUhTlZr)^}y5aiiRCPv>EIDVlBYTU~FPz1YME?RBth3 z>P7%LpYgUf7auGLEt~6&R{0PeC1WOkm#6@Xy6!9782L--S#r>kUc3zMpCD?$qF5oY z-bJ{!10yZ|<^#VTyZOi`t1l7hHbLDIxUIBM1XoWS^!EDh^_oHCYU{{a9B0u7{PySW zfK3j5#tXuQ%<9~&_pF(_EdPovb}V?AW#4;XIfqkP3yh&QK=nbUOXa`6mJO&i#3m4T z&~eZWWBW|oB+xEW6Q$jDg4Re_0hGpR&fDA!@Wi;V8(bl68dO1YVZV3QUP>|j0`6yc z;X=C6PM)C?pSJ?n#h-TYp3|26wEk?PEVlI;23~=x5=tNfRPgJR7@)UEdIY`Kj>gpcX~1-PL8*`Gaq1q z_zCdlToQ%`E?{VfMsTc!^4Ag*yqQ6@4LQHwt+4`;Xwl3HjN(p`3=OGi_N*bGtQ-%L zi7?)~a2*AOFM$OBUn@C%1eyJfSg;$G!E2(*TIKj=@EyFd^txH{{Q!PeZKvCOwRacE z(s!R#W`sK@a5^bG|G(g89aQiOph^~Ip#K{4Q7*CdSirRI7tR{x20gKjcE*dZ#4(3| z2i=?4*EGl+uQ!*fW#c*aU(lMQ2u0DF<(TJO!{42rZ+0N_+gR8)Ldd4AxNITcFW{wn z8Z5o;!_dJr+Y&y5QFxsDkAVQe_z1!kI9p*n<4$^!xC)amg z7r8I_L{=u9!vbWun>Swe_&~057I<-!gf8(6`;#Z-D+EWrJ^7ly(wgU8)AASo@N_S} zKJ*=Po~y6Z_#EU2!#s~9WqnY zj)m*J*wo41zwUEI1}pZdDPn>@a29|ghYl(NH_vkPoa+AoE_)qj|l&VgT> zx?_|=ks!TyfS3Kp0ghfS&}_xuyOp+1Z=6)%fpWiDw-x8V&ANX;n{~^sHksKyVW;w3 z$&ywPsNCJ9_5e&Jh|}J5p337x4N+AXrTrNcT@$TlD#whtLz_~0 z`SBwRQoly~uSKqLmuH_s_P_Y=X?}gFd3n|RkufP+i0`Xnk>S_*z1t0~vmjiC#%3~C z`Jas<-cEsavAL!sniFWO4EtDTv)&8*Eh-#C?fyGyYy+GDUA%$5ce|x7jsk4Yw{8b+ zf=t(IPUG84yfm*DvM%@k?opKm74B(@!kS^5*f*tqgWu!!u9^=us^@Z|14|Es4Y*6sA6O{6W)a$yr4MYmHKalm-ppEAEuUys4pzy_ky$9b zz1$m8x?2}8Jab#w;0aoq3emj$?v(`}R~Q)Rae0l>rt#Zz(Qvcr#bwLSp<~%XGA_hz z#o)8ty%)3oW9MHAm%P|*+7LTO?57LF+eeVj*^cY+>Ww)pt)AGlkwD~fMFe#Pyg=H?YmWh zpFcir9Fjv%o3H=MpFiY*0er5p8#S@(^psLm4D-kCAuUYZ#AFhqfqLv3u>uaghYDrd z96T~Sx_9u`WXB7MBFM;voJPk9EjV1ua!kI=rgF`B{Co&71(VDsqXA6J2_AA-=yan_ zb-HJ+~~$#UML=IwN9taMQ^v8EFG8STkue?+(9Au!_~ChsmFfK`uQ z(SxWf3TF(GbB7KyFoa*Z7r)sd`$^aJB^@~0NU|-*V|l7C`zx}(q#CerQY?7>U8)aH z`DoDE?ORYBg|keyDe$%T$4)%oK)J7{aD^X5!oo{8*F(5&>c1a(0xp;52DAmvF@wBf z1=XXIJ_Huho_#i{8Ol}Tl>e-rJ#{8B?QZl%z~clnF}p zOKA;oEeYpqyNwHL5~8EHv(}&_ndw9?H^4vW(H_%X&o3mM2=+pvFJw10w%_;$&O0V+ zL`F{dWfgf`4dE9g+tx-?_Rg(t3j92<*t{A3)HI4ZI&G8j>c$HSTHbXN%QQ9O%~700 z(XM@JyV};XHbI&=T8wt}VUlY}nk+3Th4-Xy*U5Q(MrfmBCmMwt$$Gl`5u|eXwPb!w z?B6`6#9O13bmBMr@uK=B&u_q}TC|w7VP1RXqp8nN2Y>IN`JJGvxvR?%T7D_zHEi%= zyNw!ZSB%E$EZ{Za(fX2D%D@Gvw2}P-wP*BS=YY_(bR|dm5vBBVwj6S`R`u5UkUeRE z_FfGuL*K=P<3|5kX*zC$sn+wkMz!Hhe&8pkVb5{Cq;3nlRn7(;>4jbhuVcKbqmOMgzfJdW^h}ose9hB_c#D6TvyA72yClh*r{qJEVW0IK+^zBSyGfRM0T3vI zGF0>4v+nJLyY45=_%{n&hLtH>I2(^zcV4oYx49b>Riqn9`QiDkB#~fGEj4r~ogM1x z=%}3J-!8a_|D~WS`Y5_Ax0TO7@6kjtf1-AH6sPgIHTv$iiF=Mz7arCt+5?&FNBapr zOMiU`xURx4FrydaN5z33wqVDf)WjOqALS-CEbFhO_@aO(W#~v=P9afN67u*qwJ}F~ z$|%R!k#)toEag*)%-7kg$y7zUoft=PZE#T z4kbj_!61X|(#h&I_EUU{*tOU%B2!Y1+lGHW9$Mgh3+W{POMt=a22dnOC{T7+|DNij z{>+i!^=iL+Z3bNlaU4QoFyOL39hvnd2|z>!@}@MyO$D7aD_W;=Rne2V7nJ4rDxe@5 z)BWShD=9?BRx-ywDh?B#p}79y2q5>PQVj&m=8ol*@bUgl?%;O!#jl+N@f1bCeYmA0 zX~og?ol#5bkfX~@bHZLP@B@-t@SuqzBG0Hu#3t%05@5TQo0e~&^)e_aOv-ZO za~J&lmp?=6LoH^~6a{C&^N3lgwJLpL+YrDSMc@Yh!AP(s>iW#6DuvF}rKD#ya0zJS z-+K=ENsB^Kc8yDSq{kzC0%yIZEE9U`MdPGq9-lbR+}q5=~IpZZLN>CdO#*FsPmMn45>#0 zKEO9v&8*&-S=&bVE6{uvArLidp4I=1 zh{HY!P9d=UQQ(g`D9!%>pOTlr-ITc_BB+afq(qMA z*5aUU)&&44SYc>gN_kn*{h0xo8RYtVjAmlCLym7jKe)$|y#KHy@;#QkPt4e`t)rU6 zc9Tt=bqw`cb9F81OC1Pp`Q{~3Ab|A-G=ChSpIb`i$tH)Ia4|pD+>vbL_mddaK^y5< z_$^X@Q#Ix|t;u6T3DR%@iCE`Cc7FzvGO!H7l-yL~S$#ae5S^O}}@k5tQyST&9*WTcgG zE(u!zUeRFeKGdqbkQOX{??GOQ1RSswBhJOAs356ENGgBsj3zWiowP*g{eEL|)k9$m z2hE8|G6jU;@&WH)zMI&SW$s0GfLp5jCMW@JDamJ4mO3nN=NV5a`eW51{-j)pu><&E zN1vfVK3Mc0kPns{^1R5m68N^A0$$IqQrA$F|i*m;{~MgLwl9$ zQ&fd?8uA%oV`*Hm`iyPAgG6nL_fTvGSliz(LZR3UOc0x)k~5P%;`@i8cn0Js%J#a+ zwL1j2(Dfk5hWGcNH=weOeF4$B!Q64^Int)2i9u+s8dT=<4|T^S(4fE!z()9y!I$^3 z*Wi?2EDa-*Ck1e_<#a+8LXsFi)?(Cs?TEmAHQ$E=F4&WVD4zCt)gWK82h{*ddOQF% zy+V~vgX-inU0TnWTJ`Hg>$ApZLmtEYt0#9fP!5x)-!F&yQ4z6qU%a*KVUHI8|F7wN8n zb(*COFx>g0%gRY_eUOidZ`ja7=|lo(*Cyg17mVZLM_AL3HRbqUzZWKj+n$%?+f4>8 zj*BLF0ABW|BbLS=m|?-=gv_vn?;$g+9x^b)X4F$G9EOSuhX{x6kvHJ5Ill_Ew-2qf z8KTK&$2eV2_yK`QYzR!=(nkMDK#+H-w>I+;yL!Mi^+y6to(sApII2pJfMq+lV#>1a zOwfwf(E5V{Hxo3yf7uzVQW*c0itGBVLN^_tNq{;5nv^2=LVYo@q+fR@w$EB^DO^(S z^|(u@0Zg)HU%u3XdQZ5ryEQ{y4Oruz!wI#dq*iHzfdF|THz^=l(A{F0_!MH3psZlM z(%)OISrkEG6hVOY2^q|UM6Y1zLBBTgdl#Ngs*j9V{cV^k0z1h=(|}Ea8x65ZL}G#^ zfF+^3Vdr>Qi)2MGukWT(&l-QRBV=&`!c~bH{KM=^!axAPB*@P2%CppK1(5a`Ns808 zH9-M2$c#$UV&Fs^k9`dFmO()8L+}R4A;z@wFWPj3JlnO19j1!(bPmOB6oKVmeg^bY z2OeAw%Fn=g5Arj(qJJfT{EYW2--u}iL9>SPGXRnK&)Hmi8(&#c7gV#I0$68v!yeyfN9vWV%*i zNbgbz~%R@C(;{K~+qTk<3)%(Z-)bKqYt(F<;IuT#gUeu$K zej#$1I;xP!Q3POt(?N~TMTQFMF;9t#@8KjGqd8w7Ww<@`I_Rk;KZW2V#XX#S^$$)W z-@{1~$O_9gVtbbC7-!;7w%vmJrkA{u+O!^CE0@Kr%Mm$t2Z2Kg*jrIeoT`5j6!P;B zFB5~$OQ0GRQ2obh7sTR%AqXJF|KLRkEMhX|KD=7DhNX$i$ERXCh23LGczMVW3pgQk zvE113b4!8}>gNQ@YLFEc8~V!#l=~w(#4oi`pb(9K7yu_vJ`XhlI5~#`n&Q6@4NNv? zEL8BsSw`O&5%rV+Oh)zI1*^9hOfaIqbd5iNf^os80&p9As(Zv;2>>P-7_mprvCfv) zV7MYqVNIhV1R^w zCsFU=B)ACxPJ$T_fRlPi$jwpg&Ou;Vz4IWu{u!DPh{hdnZ>G5hkdhYh$2kqi0YU{b z%kIei`!S?Y82joqbyZOqo+24N^lGR9O*52RnG9@NU?Q_5>YxJ?%!lY?d^?zKXt!aZ zHF^LxyE)BynyU{U854E`H$*2vJ_{4}drs}8oR6wt>_8teo|IS#pV_X_0mIy%4$D`R z`tsNik_-VsE<~qT_n@+P^bMes)qqZ-g6Z#1Z5gb#tB+sEI$S^v7e)yPAI4yny#I;C zDlzafykDE-eI@#x7r|#Rlq`M27{M-4-|5t?&3ph2e2D?z z`w)9n4jwn5GojFwUH3jq&?C3D-@`?;=krkGTIcrrEec|ye742KpZui^Mjd4mJ2xxq zUWK7~gRi*U%f)h#0nKX5yY=1^mi49+SZJg2MDIg%66jVCos_tzlf{qkuom{DB_{Y= z?zT9^Khq98-G8VD(aB0Mox?B~ROGK(7O0p3_N#uc;mHt8iW-te_j&_z%=-iU>| zQ5b;z0BVPW0h}Z~2X9@Ld{hWdf+~Qjv%3|@8;epVRerQfhB{6Rd1KFj***kVe1XOPc9)BaHtzlMUiQMy&j2B|i{!nTvZR6P>3}GeOpqV= zlL=U3t!Au7Id4^Y`Cq(8toL^mDE-CJ3bU^gT6nDwk|tXQ2Gn;l{k??IYDXR8l>d{l zku|TE&W72RFgNYfG0BQr>iIPGQMsIJ(ghM_$8ml!Lz3@B(KqEqk4*Rr8TPslH9sc2 zEo1zZdcZd!8WYnq?rfpHhX3$Beal5piJy<;?yt?;#Ovvi>#wuU`dSyWw$sK%Sj8*9 z^V?Y|-($;Pedn2B`h`edk552mHRN%hwyV)H%bn#aUZPM~3!hEzXS@~ZK7c+LXubWz zYs9l{+}ZB7mMX2lA?_Nspzl^p)mm42`_;&1c0R}JoKHRx3ZXC%o+a%4oBhQVwe9WY z^G?jA{!=NaAi30!nU2+LnvSQg3 zyJrtoAGr@$PP=Io4S%BR|6se1C!iT(N8_^K+Et}zF+l!U$Wya?A!m5r$S4P%b(xBQ zIcogYW_76lX6~=2)Y}wUKO6hwrzXwUR4WM*iRs7@l>+%>F9HND6N@qjXf`Q`2iLqs zd1lwi)CK0B1?-xNUn9vN?!R&Tm$n;$h;Hb@hnIr`GAPV)v!^*g+OD4U&v0~R>Yf_^ z84{w*RM?;A4J-tuliAl~-$*S?;ozQ90RpM754Ki(^uei;`k^B=vZMyGTyW^x!(Som z?~oD|<wgHp-!+_?dc_@!i)tO|9(Nt~Ugg9KpSfohb&dFwtQ=FxpnVCkqmU)M$sc~*5pY?L z*W9T@=V;jM|E;BE#zijAmUCi9)%|AYN4?1?bz1Roi?Ybl&y=6z+nSN%m=y>{Xr}{) zH*F1_ZLME5RJ04GWbg2jOPr%! zYnWLJ4jbgTaxg`(RcJDQMq^(+>?*YniRyvh0aZ~erT zq5H36jp)ZRlDkHjEEDMgm&E118KtW8FZq=8ozLdEB!|tFguJHHSt{rEz4Kdd7ZCgj)Koc-*HT8*OBz(fEzpM}!kSszZk0 z;>BX7WBu`|{`Evy% zE{k_wI7Ap+a|S;y9Ap(c@a3pFarfVKYuF@hHRj4Bkuba2DkbU9r#I~isFcA*ly%5b zXNzYlkKPPhU^XDO@-+KL8-%HPc6hC!=_H=mA#vf=jc>l#JaHV@R7+(tkYq@bF0SXB zWBn8n^=`j55x2f0)9o#ZqvAK5_m7*X7zL`t4w^Y%d(2BIqofYjCT@;z7feTfD+nH2 z9DC#E#lOG%)%k{9N~iXW-damMI~z5*W1#Eg7*iE-;>nRa@;T8zYRs&&%djMP@(jDW70jM3MpGX~So-mjEn$^=1!BvQq z^dJuj{|7lMe_`L#yo53)6JLD!O~bBjsa=tMuJe^8UoVsfq}C^CUMV3gi!5*a1SWEf z1%fU2srgZ#te~kPrhI++*pSe~cc?=rp|-P@!U!gHfbERq@6>=jkI;$`M5m_mtkDSZ ztmABL3vE4Yv!Tb`7omH>N4z*5neG+xgTf9}p^@(~ZOD(_a=tUxa3Tr%1QT;6^4H2f z_j`~Oo@%RNyUAKG`y7cp4@uN!Roj5cPyH7kvSK+y3&!3wAFkJsgycrZz#_OUdzjA1 z{uPD`JJA?hz6k#4w=c7o4{6nDx?je`*zlVD2>67A9IhI=eE5LK?^BtNU-3{UgXuM-|;M1QGl^dtO3nr?UILHCDY z*wyYcBKs50j~p_NmXiy5~eF8>SqDh!0Y> zo_K)41n0O@)*puhfn_l)V14nFG7x1JVL^Vj3x9t<+=r2MI8#h|4*{ngCjz#z(Jrv) z^dwzDZbE-ic;D-AkS;z9?pu%hdg8~fv|Flpnd65FYo8v(&aw-XjOvHBJfJ<3>tEJO zXvk#4nJmza`KWK@v zice(Q>91*+e&7h#uFo*~Htas*_%e?9?UCMh3oW{44kO`TevCgN^rz>!zV%Mqj85xs zO%^_j5AYCk*8aWo_h16WDQ5~xKcbw_zl>W>e_mDFR&cid;n~RcrHs7q!<`v%!QM+K zieBY^+kNBGU-D2zwJ_=1qT<(C=*OWMw#Jo?brEE zmp01O>SS!i!IvcU;ij;`kBB9<;tL)&T@LgTyTvOC&HO`L5SDa=F@O+ z`!0|^XX7=~Ll{9VL1rObfv@nJU8jmwefi^%*0$rDl$xP+t<(N3)SMN`Cr>`o!xO=^ zTvy%J1lmPoG=F;h+=BZtCyyAakCANRiJAA_cN0#Y^WKt=j4RPXTxGGvc`w@@+_}+S z8+TVG)YB?6>h(Dpr|q%PzS5JK^FSCt^Y0SnG4fE{n{(sgY&#gNvrKI@1>w0#);(!+ zRX=2UtNjQ3oP;-is$8BF{NXQ-#=Gr_3G(^->42YeMC!wJ0Digg^~%Ygz2lZf>#T5P zr=JU*=JYPtH=!wkwnEoTRro*dm=AL1Q><7wZju-xBjd}j`z%^4FK-EDZ-7?EA+{;o z6WDrb=!77gYb;|-ad#0t!L^Tc`Q%pYWW!iM;38(h{m)2kPR40RHDd8!-xK%PO8hbyu+XUpqkCkizRo$|Yx zl8Z_h8l#eE15s}bcl%wAl)4UK*>h<26C@A)RxQxF-?>C9-i{NbiTIozUc}h>%d`ng zkUtIYmu!z*@{CV$Fs zvjdc4B=v@DWDqm{bapQyyjHY*_|at3I>$lVV=TMUH6)ilGY&4v$BV8{CFqiV9#A~_ zLGgOteK0f03g+P*Gg={9OxZBcup%{fxU7%en8MjPTu(J0hS}Ui?#f)>9Hax-Pd(c6 zSqi&$t7NmW$h0aZ5AGbKKZPet$%@Mp#}Ae~>;Jc9X;I#VTw1U>p(t z$3T4RF81<;xau;^G;Lg_n9YjiBy7JdE+NMwOUOg>ngJ#M%7K^lXD~mv(`qGreAlj# zSUfuAFPu4%pRE4)X7_1ECi9_Z3`nWmb(t zoYDeoaZgo>teGgEC0J4@VwT3pV^-zSB}&FHG2g3YlI8M{T80IQ1&myt37Eo?c;??R z5vu2#x!>++)0blbwM_Aqnom{OeYkw|KoSKAm&eTduW)(z;?WBw6O)l7!_}U$1d+6o zNGL64@;Tnaw&3BKj33Dl-#m%({iLU;hE^H#UOG;FgL3s!p9oSp;_B z?>Vi3qH4&yk9CSthnx&tkvJui7$9KYoTLOm5@36yWHcu!>kc7RlOu8b>H2IuQe;(2 zn|<9LgB`fffYlK4paDS*$}}~OU|J7V$$H5(;n$!OzOHs2(LF0#fs$pjWDXKiK+>)X zWQ#rRK-|1ukE)tj>Q={r_h@(+SWcqD(Slz*#tj>{E1tXPuM_(uh(<9RI**qEB4QA! zo{2w%PBhu0BS|&V38;;qSA06AN_~+;!}saAl3esFkCBrbC&QT+rcfY*h!84b;>QT- z&9}O*ppz}$uTjbY3x5pDuItb`F)IE3>_WJl2eLGfPYZA@MKH3h)lN107{nc zMgf~hKD^AEY}bdUk`PaX1S4~>o!&M5QnmI~Jl zKxB-I+#p-1<|g@nMaCfF>!mYiPAbTD`~QxZQwBZZf0xU4L$5dThk5PAD=5~1jeicr z)u+u*R`t%JH-JDE-?4<$3{-p#!cRKPd zB;ky=NwTH@J1G6PRu(?|-&$FiQ4;jkJ^pEB;qNw5nMBTd7V-5gx*ftIN7HtP+9_Sm z+G#fxBkg6NfO%?=$=WM{zpm&1sMkjNw$?k8nSjV7oa> zkQGA!U7XPS$E8laP{~>3swOHOlr0ZPBT&l#KZ^ud59CX*iZ}#p*C?(-?tP3|0K*Di z$@P_n0d5%f8wh5&ii$)@1wj5{)(IPS`Niah8~6y-RvP~K`JiK^({}|U0M%*kSv@!c z6bj|aJien5@v-s~gK6fJIEK)@qNEt1hOfuoeTG2}439C8nwJks>oI=_GG8-dk3~WG z@<+JqSnn(WNCz=7c}&Df?!3=8|09+q(1T4QJ?P>c&?AhlM#csQsLL%m4;o}Gx`o|(#2lKE2jct=^4~& z?1^`F6b50#$J7M+j*xg0Ib73Ru?Duql|YP`DLc=BIcE4=$c$xuf?e2`FPlU728_f7*aXzF_@ zi}DvFWgSq1To=R(@lP4As`i=_zc8z9xM?g^J3GiVmxj)OUT0t)Uk|EPhL7RbqfSzQ zG)VzkJ2m&jLa)nvFenGr7VMzzezUHEa^``K19IkpjsxY)104s-nMZaX#OLU0m6y^WyYX;KVTahMFMKAC3(6xUN3l%p9Qzmbh1apBo#fuqg20tl;8*+ zCAgKz&u%|^PoK7V!K_%qw`fu)zdW<(a|nJDK13tsh&&rMp9BTQ1gQ4RX$KO6W^wCr z9V;v5Qf5#!$G`!lEZ*`U=y}(3l32pGL#i#XYyjJjatg09dd_r z{|lIp1p)I9Bk%i4(Hz!bFduCnkWKy{%Fa5fs;}$!G}6)y0s;ckDIE$30@6r`h?Jys z2?EloNVjx@fOJVWNOyNPNZqxMzvsTsxbO46W88nvIXG~$&)RFvwfA?<`T26##ae)b z4(ODCQp$FKsx5xY?a!E4(<4YAp;!qZHcfyQGuDg;dnW=o?l@+!*&rJgGT8scK28=31i@}CyF*SxR4Sf(T#>yKk5ngMs>b!+OCdMiv6k)<` zGvWoPdHjWZ+iT44K)8cy_rY>Dg)L_pA7FF`CCU6u z1hFb_@`m3+Niv}YT>Grru@e8;j|Vh=b7W+(T8VTDAR*k58Ujf3gsA3EK`QIFPz5E7 zG!G67Nb}&Zurhv9h%_$@;bOu}lKd&(_M|)6)bT0l6toz;yApLqVl5#9rOeQwK_Nd; zlguC&R5yXytrglBCdEe!K=Z4wu&>+zXdVnH0L_D(9stdQJO>1tM}UFmO&kDdUX^4X z!5jk3W1-bL*eGr8Bd~Mr5CIMa#X2nqF-U&HQ8C|8N@g;(DlNYWh0u4EVO-6PTut-bN;04S!woBr8FFhI}4e>;2zI-H0>+J9DmNdQcH1SLnxGc+k^p+n{SU`S!L z{6>jR~2PLYQTvRIQij)U%NKWi+-Wf6T;pLywy$P@<36R7njDO_3|Td-sl7F2Rlu9eElj_ zW1vm(#lG33EjT)W`3&DuLK!nc-B10FN6n_-db4`V4^FHe-&Iiud zjIB&&R>X!nzT@^->bn)G@TY!I#19b+{h?(YOf6H;I^PD(I!}Rq^b{9U?`u$6q%d=Sb3c?FUW3TtTL5A!+`T@BPu)y|mlaB~>C^`SLdwmv7VhC083&5VdddcU1 z^hWQ$Ufz(PNbJUW5Ee2lep86W?{c)WdQ3cikwH-Z1^nYj#oINUi)>;>rQ*`(hkOYS z!V;JE!>G>yM@H>q&$;C|Q?%AD*+pxhQ!01Tu~XNcTnA=+`#wuMN}%?_SpSZOJ9~Na z)-`At*GxUGt?T9Q?{u1YZu-v-UqEme`9pIT<4_ zbX<5RTb+;c8L{M!Sj3LkwTCTrD!B8FJPY^>i|nXmj8{`#U(OaMPAU2(FI3H@{^kK7 zj@+aX!To-7%i-M9mKxXJByY^>&ZB|@taQ9whKOrVW``HYg6kLV)H`@VRdx{+Jm zoMwkPe8`HK`gy)Cb4^Cy^Rs@%Dhq!%$k3NDZ|0YEI@{UZEzWPfpE5uYRQ+EBLD>N0 z9OPV`@elYcfs}7$7Lh3YDK!@#P{5T0v*yG+wiviO3P~~1K!bY_@D}OOkHxgf_C`jE zSYB@uV+}D;-RyNQG_QuXObe2^l6bMJ)x z;U}|=6cUwS(JNysvC|hO!4wasDl^&V^~2_0hqJ+9u2WNK<7duXb;d3xa)h6CU~Ve-8l=x!4&W%e5y_tzenN@k6^%WeZ_bFbK1U)escFLF>x4O z=MC@ARXJNW&sTTl=aqZgGOmdv-m@XBp$zM$VoF5!!rSNfHPeTBH)1wlFmT5YwM%oS zYwNt{pSruuyJ>9t!qGk% zNv}QYw?n9%2oa5;%Ifg&aJ}BZ>oGJHJwiDR6=2ohGQM_5r&JQz35np(wa%OMUdHVH zpq(5vZ5#fe{C(K!`2n|N|I2}gbDzg=9B-UA$^?Y%1TPQU`UIM@5Z80oRV>=k_$URG zM2a0BD*l*cAPj7M&NrPgBKtVe{MYrRyjFv5g>XK_#OpLGRP{>QiB?s;j%LQJu~tO?QY_!0?d2u?*@H?#n`MOuuD2Gah5(IqtMC zHoh8x7csHp#XpM_`zjN{SKH`nYc?=VR<&RsTbO@pDaLv05UBc+EN^tQutETw=oa zlf|34E$_Z!q+|Iw9lELIZ^xP1!}qF~ESG!au2#RE{R%(B9^p3P7C5ebbK2vxw>NAO zE#3KX>!$Us!=h?mUM=DDbz!x!Tk>|{s;>`;-~QKu+!RJ*_umu+ogOU=$hB6eQB24o zXW`#;&>OBr^JF9!+3wJ*Whu=w70M}^PSIUtDYyIbou6!w+4at(H^gYwDdKp9`Zm)Y z!Ji_cRXVcH3)WgJoH3KXGQO#^&-gybPB-=~&&PJ3|^TIZ^qnB-S6gmY`)ta50YBCZX$1lDq zZYW5<5HRC=t!`PilD>$={;q}d4s*U=Xz4< zc!E8@($ICBYCEL}-SjFLeP8^Zx^a?d34THKGJ6bPDWgt3SAc}5?0wd1QpJ`d-NcdI zuE*E?X+mzBmVzKx8=u4>^`n44kLumG$SBY{)@8Uj!v}DPOG-}lh+T5t7Ml;Ug|gsV zEg(~}a|epMXl7|zwY1auD&$X=lSlQ{Rc|&_)Z37td!orac#v4;w>_D#7{yGMGGU9L zTXVs>)`eR3HbuKoJA!aC1xU}dijJnMV;q)xxWNVX%{s){Uqr|w;&fj#5N z7c7Cs(-S2MmHp*g9A`pV$ICA3?Y0W@X5TFBik*wAShlYC5(v}|7>sU6Gkkx`AUiOaa48LQy-JaOx;YnZu`&5$P{u1Kc zuts`Fa;oP%f&ILL)9)Jrp*3l$P0rHgwaep2HbuDyqy(L)BRCJATK1XMZ5o(Fy35|Y z^iDeJcs*v~X!RvLhnk)!DP4qm;NC4OL0@=nFPhCaS2b-9)3M1(IKR-| zY?;^6t>wSr`RtF#x2%85qfQLUDtZMu5uN+mlRTWU`pP}h)r(XQa3!n*Wn?Dboy<9E zrLB~$Gs$h`--QXrSatS&ogSG+SATOcMRPpj;>&y>0ctx}H5bgI^$W_c7~6*7llPl` zNU#};_8&iI;d~>-7?Wd|)JY#rQj+$iXQT(69>u*dB7YqE z_p0$ltqTp&|>P~jjS!8w2&`OlpBn``h5K48^O`L zx|x2wA&d?Y26$&5?e@1VRA?W1HwlwC25i9-weRjA?)FB?~6R@;Q;*sgA|X}__}B-LVk@iu33Gd-_pWJ zaqe}V{%IwiHk{lwyu zX9aL31p<$|tWAlW1f&QZSe+szl?8jLdNxFjw)dXPNJWU42jivCxt@+|Ia1P%BNPUJ+X5m zjBCbSlv`Ta{8+EN7g>~uat!O=f{&i$&)&;k(qH5Ut@EXn$Ma@eApbI)IPEG1z4U{@bS@BNPkM74*{}$x)I9jpvb5-<&bV!s`5ZKdmE7R;aP`1x!EOSLvuZ z^>uEY1*2z3`GfQaQOh`uOSoXO1pcD-bt5Q&{H7n=5rK;+z}IP=V`MMxwt{G}v4ZuU zlv@G%Xu6`X<*aYcsf+AaOllh~I7br+w9JV0iGvzNE9LAeVGO?LE{ckfewUPh9SLKPnizrKB$lnec6~B+IyML!;Gna*_+Mkp+-*VLE>u$4fxdL{bRp3lMe_dvf!XAX^9S|vk~YK z08eER`Ed^cGTUuejQrhe?7Fosk@uw2yrAJXC8quQ{$BrML0!~wlxj)9a(z@f^9d_SH#4lFE?^a0 z&5Y-k%xa;F+eFpU^$e_MS^dJ5qt{n~rXqgRc$2T@skRNN4r6=1$c)Hrw$BJ&vO0Kk z+xc#Dx_^|J%Wf!sDdIr^&7D){g7-S#$?=+VC72H)u%YkbZx78%(F~trQk7e&n$o?U$LAT9zkyled78J3 zx))~>*iYf7=c5Kd*%lia2-_QAjMQ~yQ1vk~t{v=$6jbIh;*i}hL?8@ejFj%}Jd6e(zXXqT)zfO!;kAt8 zRllIzFKca}!@nb#??qCq>_VsrS#9~aw9EG@L-7N*&C0a%3j4)}unb4xQgT2QxR_3bbH62t)0L5kd<}Zj&hobn(-hp-B~n0!EPu2%bSE zyv$ZNMr91bC@3w{EAS3M`r!_Q-v?E|3jPi5$N`xp$oln4+} zW){BbN6QPJ)y`+r4q6<4u%2UN!8A$70&YmwbB!MFY=0pH%LoJ~7^kFVoVNNYr0=lso z4q8RB*mxH$ICh()rP$;r4Q_FSF5gs)FeMyox38Ws;VigC&SZx1#0w2w_SpW%pDWFBashKz!6Y`Xo5k7A~c+l#;H66({W}(2cI|Y>MCkR=_Q6jBa4- z^{VBdLbiJ!XIpusI@y%TZ?yDXfv+93wpIpAs4sxWuF!BU5JzP@$n zH9=yWK6tRt_BzYN;`g||Xp78_xoC~tWYJr}EgJ}Azy0J16HF2|$Q7Kv$VeVK&01^E zB`klpzG_(J`)T{#vGOv|XFS(1Y2T@TPh}WAZ_OHgjqE9tjeNEuYYmPzzC(jl*!yphv=5o zn%elHfe4{KU>{bT5OTs38nQj6PLFgR!;XtGfux&!S{sy0M6 zxwwq?hc>(<4brupbc;m8`qTR@dTiHJF~~f_Rw@vxW^u&sVco{s_-C+OENQp;Z1?(-+*5&}|4d}vDv#9a z(6Ca8$1b!H>m2j$(lalT1Q2&-ria45$gtJWB1bVWZAw>M?cZ){9# z0Q5z8l3p=^at68T^)K9v!TzJO@$VUN93kCvq3(j(KCe&67ev2KMRUn~C?t)XwZP=HaBkKkif}F8=;ghvZcI$r6 z?Dc3}4K!iB?{^rYhO8;pN-k^J(mpA9TIxidcS_GZ7v#-LZ1gO4`AvSv5GAMRf&SFweNKDw5aKkOV3`FN&;7~m0pa^fq`M21DF>h+a zzOx2y4{n!MZckJ@Qj+YCSY&IaaPwvR46G6@;ivbF70uTy0CHk$BzD|lN2x{wY zUtB+^>2X2gHq~8H*hu(===@OdlOmz#-C;hXl2Gg{TxDwIL)}kuiq*5o0l?;JdT{zz z|81SY)N1PX3g^5Hv!CiYYsXoLMcT_wLTAL7$NQhy)AZ5HibV1c+E*P~X_bA()I#OC zo?vIC4R^KCPm&-Mi|gY$+U_fp{-C@oCs=KfR5K2l0&i_3P*FIsqjQv~n{B{~{GAb53lex#_~bypYXP_E|;G*8h{NT;j4#xt&>1IPj`$xzi%eAF&Fq zNW55f;}m7wTN`q5WVSC*FKax=*neeCBbql+8$@KTvPal(^-+^?fYor&;AeQ&+y0B6 zuYGiE$RhZd!^}&RMC~lgrq*0g#+5Tb`5R3&&mR=V6s^x}dHC7y%=3LOfULOsMzGQ_kk?gEbL$+e;*TO3>+=OnCrlkz44Bv?C7oK1#(YOT&ma_>*9vN3#3{5E7 zuyW0&ONUN+jP;N@3?FO7C07qe=-RuD_u%qcr<|vrf9=U;dJ50kT>90j(4pA(;+|FE zq0ibY>vJB~P~+}<3g3r360AfCLqG8bhNp77T`tCa%k}6dPkc>07}B~H`k_wg*0r|D zi9-EBdgPm6qU1KpWaY;X9tQ$)`LF)dbantEU7mOnShFqBk$&9AAu^I`Ad@n=7(zd% zm9@+zjz2}<=uWPzn^=v-IY+@AgRF@dAHMn{^$)7aui62(2f_EOmQYTlcf33*=BFff zh2|tnD+~uY1a4-{+9b~ArUd2`jyQcI?wSuz>8D9D&> zFgcrz#YbJk8_5;mjQ*i#Ig~(fg!2IIkN5;lBX|FeM3xE{8U1jUlx+^@f$*29MJbG-2F zSGoqIkNGYd4ms|*$%VX*Y<)u=N4^rTZdh0PBV^~nE&5Ghh;EptAMF0^7xjK;BIKVr><*&oHf7GW=Uwn=@<4@NuNV$rkcZx8RWlja`N7MmAMRl|ps!efe*lGNxzw=94S?);7m{jybgPL=wA% zB7$5Ptgiy?lsm%Cv%bBs@~TX;W^_`O1GO|lgHE4)n@pW|mx{LDS>XUHMRDhZP~Xwt zf94(gj1&FhQWrBDtgyPq-e4T!&b=`rBFKDSdsyYdqhe=V8+%v<89`c|%jg7zrydIq z3- zU9hd3r$^(~4pfgz%VWzg8$FZ`meqK!N8VjaDeo3F5qp<|eg&DM=gi%fOX?f>c#3wT zKjxi4;Q!ex{gU3ZYpjB3DLtq@8?2kQXyRo;hmnE#Ks7Q)rk&68`~tIga2-z(r|y3h z+O;)Zno$vae6=d-t#IJBu^%bV@S_w(^s`5-E>42Q3>+w^#N&V1{1IQafyzfIHRTb{ zyCdpOwC`0kk&2gT$ovx`B#J(oY4~+NBd{p1QMB9f&aeR^hv$H-yvn@m!MUo{5ih)= zq>>y)rSh!ax{@1>8INL#;wq%LE$qEo92fJTlfIfx#%O49AD6fQcSU=0jD$L^*FsJ#c|k__W(5 zipcI*bcLqU?4=iA<=Desd0w^wVve!+B_QVX-|6l%t&KGylmkVae$DFBvkff_YR_KC z%uELzLU?0=^6W=y{+=PAfcIK35v^hTWRk@xWi;P7u->5Jj}np4=Hi3j3+Uw`lxBh% zfSJ>*zA?I@@)=abfvG@gdZGH+-Kbf2s|VBANM(io_mUAUP{nmSj+2F=XMJ{gV!fgP z$~%I99iY6;Hnbp;_aR=Oc%l~(|Eq6}pa!_er);oPv~2sfs?=g^dvqY&t>(kSo>zde z#6Q`jgJ2D;h{iqvyELcNwnE;8VnDOTsl#BkO2E2(f6a_O9&rR*BfkOHNJSs~K`ts? z`%Zwf^@#+BtXk*+AH7rufg%ps{Ar>j`h}gtOe4#^j%oIRX`~+fG5E!z)$rmLnx-txT)UgU#^RvaVxXbk!;fTlbK^NlQq zY3<(ZF?!jz8Op`l^xCQOKIc3FsH}$QrvAMT$OQrCeVgEA1NcY=P-v-;-C!`Vijb{C z#-JVG1Kwb0d*U5}*aOrb%okWUbh@Nxut2fY7)^qxIp98H&3O?CnEuiWK2L`PTOu4~ z>5~Nkte-nilhr^aFl8MI>p#AcWCHMD$^P|?^i~}_{4d|g9?-%M^NpnHmFR)_Mq*ZB z7ydqad{hCSS0%g+krqIH3->Iyb*l~(0`p=qa{!Dt7#|4Z?ZpgXyfGhnYB_)Vn5U@# z!+0ale2NAbZ^*#T#gx=%1UN{d%zP&L2jdM7-~fsC-FlzrpL&sTdC}^Y=84+59VDU< zLXMHBuvbL&$G|rdu^aM@>^XIYd?S&e(}R2?pV?6U^^HX2)4weI4VXFIKFne0jiJAQ za*yY}nG^0J_3jB4GX(G+ltBKA&M{2zevM!aulpi!A}e*f;w~q~<;e;!j+InLjjW#- zK;crFk{XWa(e}exOLPcI&zb=IbnSxWh8E-5>8l{mAV_FYabFF%WGAm^j4h&W*bQ*1 z3e(MQ_8p0dIeQpI4$ho7&5)Jdy&7}_fMRX}KxW?t9hvnHSdMpRNoPSXNw z-mwnhYt9%%=q@L;+US6-yeY1F29yEMBJN8CyQM$$6uEr@kU2-&hl8BlE)X&YL;#56 zjY+nINo^Q0LObH)^nZEwg$6EvY3I~`gnoNz5rwVVwn|~ydpPf_}9WX-q@@M zxU^0;H}sGQyj|>J;nHBYV!QuU(Q!BxXyG6%Geb0Q)6^jF!??rCTfv$SJ!i4oVr3t* zQRiRTkpBzcEe`XLTmuAhW-NsWVD;FR7TEXaf!=J=aHk=0`z55K7ix>3C8g*MIuVWhj2NNS>iw8DzECQ+f&91EJw`^<-&SZ&RVHINs0Ng#;ygdli@YWbm1&nBtw*1#Nk{7jKs^hP1o$D2?+X*L zGsX@SQuygQ&B@dtf;X6f5Y8JMa1Bhth z7D?qptu!b(Z;@}^pcB+wpqX}1bhQC%1FHW8YYtWnte!|I(ZC>aSw<(l-Fy0YuY&xY zBd}=g$#DTIjY=0#w_&6l@Zl;iTUt%AG}kaAQ!&>CJku}*vH2^#ax0aA_)I7OaV zi;YyEi9?}|0uX`iQm=;=FpA7#lBTv@quekDP&xQpwsy0x-1DGXhW9?dKD+c-~?9*Fun(_JE>gjPXf9Q&~qR+$>3B3!1C_> z#7qPL|A;^o$4P&K759{8&nPwaKOW-<Rpy3A<_KFBpaVQ!Vx6sX%+8wR< z1FytS+k;$L%=UpG93pDBi+1YKTA_gZqC|>zJy6Qc04VksHNtyjx?xb{B7<29FZ1Ly zLHKSTbcp3mmb0|Nd&G;@ol@sGbWAxe{FZ$}rd=p7mV(^}xLX2vw;|PINk#~mLkfHy zG8;gBI*R%ZMj7DbfHR3-KL(tfAs%Pms0(w6E)YTvv|ob#U_8~Zp7{jAcq2W!t4O7L zy*y|LVZ0sCbbX>rb6>>-Bp{XzauG#=Q)dE9FIA`j*a3Wp1qkD<8@R;t4uR5O-hJRI z;j+~66 zHMCn5du-#`V=OS(7nrwP_*jtvq78-3Y7yk+XeEI`@o2H=SBG*A$P4&(C_TQrC{?u_ zfk560KEs1tKfmon5Q2+lk_rjr&_~2#u)&lR4}fL}<7RNvpieq_vlslm2({x0xLt+; zyuqLH2DQMwKFFp~paz)Pn_0tv1q#&p2NQwjmjy42P8I~Q6eT)bm3pANN?=@DdbSVU zYML(a*w;nk{K;?rdyBcx`~50PETnqA$3K(Gy%d!<$_6Z%^bfIEAB;-6k{Pz9Pitih0r!M68Xh>Aye1scwXzRgpQrRUh` z&Z)d`v|HdS51AUL--rfSMWp$93BI*vupiXB`MB?TGdH*`e;`KS!G1wT*~Ka zlJ}LO4|-i%9JF$+O+h_(&JuZi*Em8|?AIGV;}dxIv)q`R9-qoIqn(vO`YjFcB**ny zWr}_a6Y6Bs8o@dM2rY+7m~5QaY!uD1Ak_w=h63juf377LQ{+5&XDv}VD^3B%W@5RHf|G_lt)EKlj_IMc z{U3F5`#t0LmTdxAb>0RufA5hF9i=$83uoNY5xC}~PY-CgA%2ceDQ9Ests{SaEMG>H z^}^;y9m(;A5Cy{_>xqtmzr~==bQuuo95+vgiIu1uImbeSwnst^axU13SjSgOvPJJJ zM_kG4D?U9#tQ__95m}<&kl)fBzom?hCvelNUAa`eDISRzDPK7+Ij_%&-m$?^bF`SZ zoS+okU0F)|*1p_$PNVMwv?ZJ1P1GILs`_u^i;kG%7Mu#w^A3MTZ*1GXWBK=A_a1L7 zX&9()tJ<8JPsp?#c$nH{m#9w63779E#3SO3Wc3-A?FgJMd6eGX=4f&6zBQj@+ldjX zBD3&V<;gMc`lBjm#)+}#x7gL_MP1c#r zgpRfpo{|)%nH$q#jovJ$lwbPIgRH^J|0Qei*Ei?f_ezsiyKl07jVSIDPmH7*cce-$J zhfkoK!M5hKG#TKV1MAFcxc0@Y*!vt8C^XL_>v=1!DyJDlB8JPTZTpK#P<6<4j^u0~ zcuwA$U0K$8WOhuv+}Z8?ZE72K%EEVUd+bkkUYby-ZQNA5do`&y=?w0Yme=CR%5N724tc_=b@_kU6{i- z4fEz@c@FPOZ+Ny&%uYp3rF;2h^ZoEi9ZMLSNA1!4K`M3J#p;&R z#}n2R57LhgM=>m~8Jkj4J%MTF&FWo3!tJPa&DQ#qlI3l0g}cW0fp-DRxheBh^)>DL z1QnE!)nlSZu><$b&>qU~`$G5&lp8{L{PR4bTV@wY!PEN@2iytKn^=e3@N>QmEFZ2; zRg9&-o+U^m^xd;;ob|XOWE-E7tT3oC9yPHlZM*hUUACBiRnGK*+EuLWEa_PS~cQ*QozvKf~IHPUcCHWi0$mE$f%J!dMkCB=ZhV+aIxz@ z<=T`3{A43YVYAo2Z-S@NCe0>CFq8MS9cK?3%i}&6UxqGx+gvhO5l!gB?)i{nL&W%8 z*iTe(=QE3S-}@GuB<|(U>PbY$HPmT+{UKRKsML>=!iEp0lMbX-MH8+B5Z@x#e0BDo zzt%E*Jz6o+BtNk`0&BrzpawvAyd`NtXe$UuY)n@sk5F1~ESTX&Bo-Dlzv!Iwu7^ zN^*5Xrqtm$s8k>;Dix#_H{ZSyQAJHitpzx$DMBP zh4GXx6h0l^TC1whE*^X*vULC34gPwfqXYd;_*nqmVn*Z5k(}5g?`;>3d|h31yv7gv z8e?P7MHEkYdO~QXW?qPSAMnVn(%W1K{_@B-FR<}eu>p_#-LL0m&nj_vdyLfQKQxk< zV6FM_D>h?&0r{MBzPB49M**tU$a_+Zp5ekgktlxkcs0+cSk$`4mf-=7e6A@~0X;6m zv6eK^Z=c2`fUG>)nU=6uyYG7ff0;&{Eix2kDiATkvGXMWjZWLi$^nOp0ZK^e=seMh00e4KlVLXJ^? znCCEjhHtRRqD{rgOZkslBRX6$Vg}L!E>VC#A`-~aNsEv0v0e?|7n)v>--tojQDgrD z-}vJg&K>!NxpX7(@qsbUr7Kp0mq%oxm=C|$Q778c!;_4X>z945BHjj+b%;sV?p|py zd6mt+U>N!0w-@LQ6WMS>%aZzsM(*o7U9ee`rMC{z$e#eCK*re!9b{Ddc$!KimprEGC>5nui6nXY3Kvmsto*d@j6sWbN(oH8gyWe2n5(jj|;rF574{; zkG%EYc;p4krgZ<}k$3!XS$F(0@Baq3Ce~`C5V!-aFq(&k)EJduCe1u$y#1&(oFxk=zy#$$1hA zx^?`zcK8HRhcT;ByPs9E4Ke}NLMcLYnh|r$N=u{9s|iaG^uEAa zmk;0stDk?rc5r@ED1+`GFnsfR*kpf}ZpYbX_xd-U>b=z;GMXd_rb{&siE^m=)PH8 zhRP=##kwyP6}ZvIO;Dri%M z#8uGe3=>y@M`CnRWdg&w6yS#-?@0t}sq)aS@B!UFKw=A*CI%UGZAVTOI3%JyW+ApK z$zb}W1foQ&B(7*h{Pq8UBY)HYaOB!W9c}YntqY1-cDTxjan<%*M8V@!mT3fcF1V;F4Gd)K%fCeBGUsM+!F|aiz_~ z4^K7CwUYNo^dg;r_6NY>5QQ8}dVnMclYV^YOYv3eg@gTZ^e*T4UGT0DuKPYPVgPl< z5up?U9EDH%a&(a0>|~9|;veYyr-n%3H$pCn=$Td1+y+G*V*in{u;;TRe^{`3v!K>z zj5I6+JmNr|ai=u)W2x+_EA&Y%WR~u>U&dxzK)*r7A-HtZzx+s&1NF!l-M~wOdYt0~Fj@T|3>))SEZqoy!_XD#;h~6J6=4Sxe11Fm~ zxDT)Q-8%yOV+ceJcmoiX+?xxaEr29=-Mh$CyLEv5EMl0|234>PpceQ*pba97wRqR8 z_ZPK*2%#3xp%X+GHmdD^h14PV*DMjB&4F1WKw<#1#EN^6S>m*Dk;wxOHBA{mdHO)oDcy^BfDw{2*ao;l0D@^9G9*r-Bm*e zJ%7CthxY=Fjv=o^aJ~St06Om>uS7tZ0A7jFkXNFUuExG&K%D&k!o{0p9++1m;@qU@f>=KgHvev3NRR z`H65tuEqdFAV;s5EC6LdEUA2D=B=7gjd8dQ&Nu62fJoWs+W){KkCmi3>mAt1B+it1 z;Rm4CK!KfrgMbTk7%;O$ctB+Ez(+A};z9rL&Fd|6wSki&7)j{Wn+qthQSfcVOD^F< zSt`~8(^g3HI?(Kg91;Z3 zg1vfk0U;I~Z+wxocrmg5lFxgc)rMHRRm~R{w-O!%-3e5er>#aHI?-?Ox(7#Fz`M4DXBLX7;SY%Ft1 zp(z!?A6NGuiw8TOP6wpw0EfiVBCKT`a0`f(wD5@q@>e!0K}cEHG|Jq7ZnG5lyWvQf(( zRC6!v7{C(Rn8DI-rnL_O3Tpvi2|<(vX5f>$*yyJW&YLh<$c{B7>U}n@?lzz`6r7j4 zLohE6L`w6!Fm^_8{n(_S8ss{%7Y#oaK5jS{!pOrQ5_5SlsX;NIZ`j+GtPO1Idsp{ z*Rog+Taz@hlRd#RnrBMUR?s*axS=RMr04}$g~(|ct6WF9pS7bk8b_1WjZ(MOPDlM0x3l2VcfE)mp{kN!BN-4*Y)qic55l!WNW?zv(o2o z@xC6V)sIAM{bCbrMm_0L!uy#&BSM8+L@uu@ivhLKRV|&O@rZjqid-=`O6k?GU@@Oo zN0GnRE8$0!-_C*=qxCY@`4v0Z`Fi7*%X?&2&$3;sjiy#Tv|_^EO9?BSHT=feBs%W% zu-^Io7eW4hE(##X^}_1%0fIb_x}p5lof4k6{^>lfD3#IUMJUg4e=xSuqe&p&cL_5Dva< zv`ihlA6O z0|KG0rRtOx36?dpY39!c8gsN!xmol8cFXa&o8O}YNgsrSZWb^je?8-pT>AQQmwn!P zckQ|2g9j4~E31NbZi*O~9gG7mdy#I|$4}_)N$SczT$U6z7;Lp$4u7_sa?cP&l$Vn! z1M7u{p~}Fgs^$4Lwgd;g8or56Au&DoTb^6R!tssL=tD}S4eNF-n~*k|F!%R!7i#i* z96q;oG)(DUxY5?cTZ~Ns(Vg; zPT7-oxU`0Gpe6@%gdGP^E)rct?|%phZ{v)PBl@{mz(s4+|27LmsV;RHByhmb5cRzo@iM=k-d5En!$GW$Jv8Z!h}rY2QFRewN~mk z=Z}s1+Quj}z4z#LrNy~s{f9W+P@SunTR#6ebukOFj82WVA)Oij#i6{J$cyYeSc9O8 zs*f|Xw3*+il&Ct2_&iq77waIj36E>Djr*Y`ek|&MKZoHN@20CtWrB2UGSb$U)&lOe zA1ws(Ex2E!4A0qCjgj+FOL6JmP#3=vC2~-=$eEpP=zpr7>l~2`-vH-{`)f9~plpxe z3FjO5y8E{j$6Do2QQsm_6!u1q)b2UOeOG$#9fO;dE!i|YXOX7k%WiQpOGkI4(c7RI z8HIvx9yQ#Zrc-Sm@Gxywrs#92T-sLT)*17|0#w&8cZsL8!wOpMUL^2(E2rV@l!^m& zzG*_SuKC40<=jJ=Yr?5c-D;iLlS;n@>q&VR}L6{DK>MiDYsf4RF{Aia9^7~_c>PtR>7;$=A7N7 z9}0uklbbqBx@y29a9^jb8SC&1D^pDjzYb@b(l@nb-YI&}Z7=U_g8N!)+_{2eq=7l` z;5U({x`JdRfLq}HR=U|LG3m+!9i3E2S(i4m&coIg$=wImz$0vlNyZNF2t2};m}G1N zkHL9riAmQ9kjIv|V5O>w;g{kkbb_MZSLAzIcJv_K-rdN92frgY)fglr4RkD5L}d(; zkpMb+WNwU6fGG;2oEu|^FoPJ0F`ik*&>Qu^i6RgBottamQMp5eBM6J&#pv82!V!co z!C!LJtB|f8;4b)XXxW!+t9`d^3Ms7tPry&2&9^teQ*dABUHAF+3iuZMEl1UubiD(< z2Y=5|H7;6NYGU}+c%dU{dfjN?J*dtCIas-K)LkA{?np)g$m7Z#>B<4aU%8v>%1U2% z+Y^)467T>#!maG0W0Z#&Wya-!6=ATY%}o`?vZjfL0)JcCFReT^G5jjLY#r{Xe_{F^ zV{T8~lIASXvAG?UGe|}n=-5$-${CIx*tw3!O)Vx}1)vBnhL(9LFN?(_wG6C*N4RcB zGD^TB@CeuKNJbHO49?TK9qBp&^0;odW2LEy5j4aKyZ6!%liDnhgNB%7q=6hX#3UmD zFdV&jAfW~ z9Rh3MzD}Yumf>A1QB4fL49{t-p(<{Vc9PaCa20$tI!BOGf=FzKoQ ztKb1n60VEzD=Se=48I638J6(6Nk@vaz%6iJJ1Td+AQ@?39z2X4^(np}83~}{#635@ zAYI!)$2k;ke6a^F>_y^>r-mBgb_s5<&x@ypNSCrpa04NaOWCBW z02GC=m$EZ=jNN!Thl+(06W@aSdW6A!*4g9T5TndGd-L@@cz_2eT-RgL^#||_{EVY| z{MyP@6C+qixs#QqdgnoN7RbRu3du+VIao*`83|zU3n{K2ut2gl9EcHcv=**3#-xs> zPEce&cW)nv;j;yP`H4bPpTtCwT67>r09GBDxXg#GHCwxl{b^Tv%Ci<}l`I2%4*ooZ zE8SETz1N@gIK53=T|)bLB)%4o8Lu$uT5}*qz!6Jdv3sK#?l5gi(ovXlL75{NcfNYr z#G{CvpZQR2t6f%Yv5tJ-XtTa@UDa---c9+aa#X36zsO4YPS)FMUoW?%rmEgnFRQmV z*VV41R4IEam(3|^;`S@UWbQIu8d_oG-SgIS+_bTer0BW4+W32$YU9(lTQ>Y9N5X3V h{En{?{0!@ex`o>wGlIp8Uv%)yG@25={|`_&CJ@V{OF94m diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/help/SparkR.rdx b/image_content/config/spark/opt/spark/R/lib/SparkR/help/SparkR.rdx deleted file mode 100644 index 0abfd784a6633a110b8929074244457b9c607e69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7218 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≈O)AYVAf4&S* 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 diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/help/aliases.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/help/aliases.rds deleted file mode 100644 index 35997b38dde5d9ed65e84d74bc5d7ad78e8e77e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6414 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 diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/help/paths.rds b/image_content/config/spark/opt/spark/R/lib/SparkR/help/paths.rds deleted file mode 100644 index 9729fda0dc6f682c4df4bcdec92b1c4c34f1992f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2686 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 diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/html/00Index.html b/image_content/config/spark/opt/spark/R/lib/SparkR/html/00Index.html deleted file mode 100644 index aea7686..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/html/00Index.html +++ /dev/null @@ -1,1715 +0,0 @@ - - -R: R Frontend for Apache Spark - - - -

R Frontend for Apache Spark - -

-
-

Documentation for package ‘SparkR’ version 2.2.1

- - - -

Help Pages

- - -

-A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -Y -misc -

- - -

-- A --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
absabs
abs-methodabs
acosacos
acos-methodacos
add_monthsadd_months
add_months-methodadd_months
AFTSurvivalRegressionModel-classS4 class that represents a AFTSurvivalRegressionModel
aggsummarize
agg-methodsummarize
aliasalias
alias-methodalias
ALSModel-classS4 class that represents an ALSModel
approxCountDistinctReturns the approximate number of distinct items in a group
approxCountDistinct-methodReturns the approximate number of distinct items in a group
approxQuantileCalculates the approximate quantiles of numerical columns of a SparkDataFrame
approxQuantile-methodCalculates the approximate quantiles of numerical columns of a SparkDataFrame
arrangeArrange Rows by Variables
arrange-methodArrange Rows by Variables
array_containsarray_contains
array_contains-methodarray_contains
as.data.frameDownload data from a SparkDataFrame into a R data.frame
as.data.frame-methodDownload data from a SparkDataFrame into a R data.frame
as.DataFrameCreate a SparkDataFrame
as.DataFrame.defaultCreate a SparkDataFrame
ascA set of operations working with SparkDataFrame columns
asciiascii
ascii-methodascii
asinasin
asin-methodasin
associationRules-methodFP-growth
atanatan
atan-methodatan
atan2atan2
atan2-methodatan2
attachAttach SparkDataFrame to R search path
attach-methodAttach SparkDataFrame to R search path
avgavg
avg-methodavg
awaitTerminationawaitTermination
awaitTermination-methodawaitTermination
- -

-- B --

- - - - - - - - - - - - - - - - - - - - - - - - -
base64base64
base64-methodbase64
betweenbetween
between-methodbetween
binbin
bin-methodbin
BisectingKMeansModel-classS4 class that represents a BisectingKMeansModel
bitwiseNOTbitwiseNOT
bitwiseNOT-methodbitwiseNOT
broundbround
bround-methodbround
- -

-- C --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cacheCache
cache-methodCache
cacheTableCache Table
cacheTable.defaultCache Table
cancelJobGroupCancel active jobs for the specified group
cancelJobGroup.defaultCancel active jobs for the specified group
castCasts the column to a different data type.
cast-methodCasts the column to a different data type.
cbrtcbrt
cbrt-methodcbrt
ceilComputes the ceiling of the given value
ceil-methodComputes the ceiling of the given value
ceilingComputes the ceiling of the given value
ceiling-methodComputes the ceiling of the given value
checkpointcheckpoint
checkpoint-methodcheckpoint
clearCacheClear Cache
clearCache.defaultClear Cache
clearJobGroupClear current job group ID and its description
clearJobGroup.defaultClear current job group ID and its description
coalesceCoalesce
coalesce-methodCoalesce
collectCollects all the elements of a SparkDataFrame and coerces them into an R data.frame.
collect-methodCollects all the elements of a SparkDataFrame and coerces them into an R data.frame.
colnamesColumn Names of SparkDataFrame
colnames-methodColumn Names of SparkDataFrame
colnames<-Column Names of SparkDataFrame
colnames<--methodColumn Names of SparkDataFrame
coltypescoltypes
coltypes-methodcoltypes
coltypes<-coltypes
coltypes<--methodcoltypes
columnS4 class that represents a SparkDataFrame column
Column-classS4 class that represents a SparkDataFrame column
column-methodS4 class that represents a SparkDataFrame column
columnfunctionsA set of operations working with SparkDataFrame columns
columnsColumn Names of SparkDataFrame
columns-methodColumn Names of SparkDataFrame
concatconcat
concat-methodconcat
concat_wsconcat_ws
concat_ws-methodconcat_ws
containsA set of operations working with SparkDataFrame columns
convconv
conv-methodconv
corrcorr
corr-methodcorr
coscos
cos-methodcos
coshcosh
cosh-methodcosh
countCount
count-methodCount
count-methodReturns the number of rows in a SparkDataFrame
countDistinctCount Distinct Values
countDistinct-methodCount Distinct Values
covcov
cov-methodcov
covar_popcovar_pop
covar_pop-methodcovar_pop
covar_sampcov
covar_samp-methodcov
crc32crc32
crc32-methodcrc32
createDataFrameCreate a SparkDataFrame
createDataFrame.defaultCreate a SparkDataFrame
createExternalTable(Deprecated) Create an external table
createExternalTable.default(Deprecated) Create an external table
createOrReplaceTempViewCreates a temporary view using the given name.
createOrReplaceTempView-methodCreates a temporary view using the given name.
createTableCreates a table based on the dataset in a data source
crossJoinCrossJoin
crossJoin-methodCrossJoin
crosstabComputes a pair-wise frequency table of the given columns
crosstab-methodComputes a pair-wise frequency table of the given columns
cume_distcume_dist
cume_dist-methodcume_dist
currentDatabaseReturns the current default database
- -

-- D --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dapplydapply
dapply-methoddapply
dapplyCollectdapplyCollect
dapplyCollect-methoddapplyCollect
datediffdatediff
datediff-methoddatediff
date_adddate_add
date_add-methoddate_add
date_formatdate_format
date_format-methoddate_format
date_subdate_sub
date_sub-methoddate_sub
dayofmonthdayofmonth
dayofmonth-methoddayofmonth
dayofyeardayofyear
dayofyear-methoddayofyear
decodedecode
decode-methoddecode
dense_rankdense_rank
dense_rank-methoddense_rank
descA set of operations working with SparkDataFrame columns
describesummary
describe-methodsummary
dimReturns the dimensions of SparkDataFrame
dim-methodReturns the dimensions of SparkDataFrame
distinctDistinct
distinct-methodDistinct
dropdrop
drop-methoddrop
dropDuplicatesdropDuplicates
dropDuplicates-methoddropDuplicates
dropnaA set of SparkDataFrame functions working with NA values
dropna-methodA set of SparkDataFrame functions working with NA values
dropTempTable(Deprecated) Drop Temporary Table
dropTempTable.default(Deprecated) Drop Temporary Table
dropTempViewDrops the temporary view with the given view name in the catalog.
dtypesDataTypes
dtypes-methodDataTypes
- -

-- E --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
encodeencode
encode-methodencode
endsWithendsWith
endsWith-methodendsWith
exceptexcept
except-methodexcept
expexp
exp-methodexp
explainExplain
explain-methodExplain
explodeexplode
explode-methodexplode
expm1expm1
expm1-methodexpm1
exprexpr
expr-methodexpr
- -

-- F --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
factorialfactorial
factorial-methodfactorial
fillnaA set of SparkDataFrame functions working with NA values
fillna-methodA set of SparkDataFrame functions working with NA values
filterFilter
filter-methodFilter
firstReturn the first row of a SparkDataFrame
first-methodReturn the first row of a SparkDataFrame
fittedGet fitted result from a k-means model
fitted-methodGet fitted result from a k-means model
fitted-methodBisecting K-Means Clustering Model
floorfloor
floor-methodfloor
format_numberformat_number
format_number-methodformat_number
format_stringformat_string
format_string-methodformat_string
FPGrowthModel-classS4 class that represents a FPGrowthModel
freqItemsFinding frequent items for columns, possibly with false positives
freqItems-methodFinding frequent items for columns, possibly with false positives
freqItemsets-methodFP-growth
from_jsonfrom_json
from_json-methodfrom_json
from_unixtimefrom_unixtime
from_unixtime-methodfrom_unixtime
from_utc_timestampfrom_utc_timestamp
from_utc_timestamp-methodfrom_utc_timestamp
- -

-- G --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
gapplygapply
gapply-methodgapply
gapplyCollectgapplyCollect
gapplyCollect-methodgapplyCollect
GaussianMixtureModel-classS4 class that represents a GaussianMixtureModel
GBTClassificationModel-classS4 class that represents a GBTClassificationModel
GBTRegressionModel-classS4 class that represents a GBTRegressionModel
GeneralizedLinearRegressionModel-classS4 class that represents a generalized linear model
generateAliasesForIntersectedColsCreates a list of columns by replacing the intersected ones with aliases
getFieldA set of operations working with SparkDataFrame columns
getItemA set of operations working with SparkDataFrame columns
getNumPartitionsgetNumPartitions
getNumPartitions-methodgetNumPartitions
glmGeneralized Linear Models (R-compliant)
glm-methodGeneralized Linear Models (R-compliant)
greatestgreatest
greatest-methodgreatest
groupByGroupBy
groupBy-methodGroupBy
groupedDataS4 class that represents a GroupedData
GroupedData-classS4 class that represents a GroupedData
group_byGroupBy
group_by-methodGroupBy
- -

-- H --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hashhash
hash-methodhash
hashCodeCompute the hashCode of an object
headHead
head-methodHead
hexhex
hex-methodhex
hinthint
hint-methodhint
histogramCompute histogram statistics for given column
histogram-methodCompute histogram statistics for given column
hourhour
hour-methodhour
hypothypot
hypot-methodhypot
- -

-- I --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ifelseifelse
ifelse-methodifelse
initcapinitcap
initcap-methodinitcap
insertIntoinsertInto
insertInto-methodinsertInto
install.sparkDownload and Install Apache Spark to a Local Directory
instrinstr
instr-methodinstr
intersectIntersect
intersect-methodIntersect
is.nanis.nan
is.nan-methodis.nan
isActiveisActive
isActive-methodisActive
isLocalisLocal
isLocal-methodisLocal
isNaNA set of operations working with SparkDataFrame columns
isnanis.nan
isnan-methodis.nan
isNotNullA set of operations working with SparkDataFrame columns
isNullA set of operations working with SparkDataFrame columns
IsotonicRegressionModel-classS4 class that represents an IsotonicRegressionModel
isStreamingisStreaming
isStreaming-methodisStreaming
- -

-- J --

- - - - - - - - - - -
joinJoin
join-methodJoin
jsonFileCreate a SparkDataFrame from a JSON file.
jsonFile.defaultCreate a SparkDataFrame from a JSON file.
- -

-- K --

- - - - - - - - - - -
KMeansModel-classS4 class that represents a KMeansModel
KSTest-classS4 class that represents an KSTest
kurtosiskurtosis
kurtosis-methodkurtosis
- -

-- L --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
laglag
lag-methodlag
lastlast
last-methodlast
lastProgresslastProgress
lastProgress-methodlastProgress
last_daylast_day
last_day-methodlast_day
LDAModel-classS4 class that represents an LDAModel
leadlead
lead-methodlead
leastleast
least-methodleast
lengthlength
length-methodlength
levenshteinlevenshtein
levenshtein-methodlevenshtein
likeA set of operations working with SparkDataFrame columns
limitLimit
limit-methodLimit
LinearSVCModel-classS4 class that represents an LinearSVCModel
listColumnsReturns a list of columns for the given table/view in the specified database
listDatabasesReturns a list of databases available
listFunctionsReturns a list of functions registered in the specified database
listTablesReturns a list of tables or views in the specified database
litlit
lit-methodlit
loadDFLoad a SparkDataFrame
loadDF.defaultLoad a SparkDataFrame
locatelocate
locate-methodlocate
loglog
log-methodlog
log10log10
log10-methodlog10
log1plog1p
log1p-methodlog1p
log2log2
log2-methodlog2
LogisticRegressionModel-classS4 class that represents an LogisticRegressionModel
lowerlower
lower-methodlower
lpadlpad
lpad-methodlpad
ltrimltrim
ltrim-methodltrim
- -

-- M --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
maxmax
max-methodmax
md5md5
md5-methodmd5
meanmean
mean-methodmean
mergeMerges two data frames
merge-methodMerges two data frames
minmin
min-methodmin
minuteminute
minute-methodminute
monotonically_increasing_idmonotonically_increasing_id
monotonically_increasing_id-methodmonotonically_increasing_id
monthmonth
month-methodmonth
months_betweenmonths_between
months_between-methodmonths_between
MultilayerPerceptronClassificationModel-classS4 class that represents a MultilayerPerceptronClassificationModel
mutateMutate
mutate-methodMutate
- -

-- N --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
nCount
n-methodCount
na.omitA set of SparkDataFrame functions working with NA values
na.omit-methodA set of SparkDataFrame functions working with NA values
NaiveBayesModel-classS4 class that represents a NaiveBayesModel
namesColumn Names of SparkDataFrame
names-methodColumn Names of SparkDataFrame
names<-Column Names of SparkDataFrame
names<--methodColumn Names of SparkDataFrame
nanvlnanvl
nanvl-methodnanvl
ncolReturns the number of columns in a SparkDataFrame
ncol-methodReturns the number of columns in a SparkDataFrame
negatenegate
negate-methodnegate
next_daynext_day
next_day-methodnext_day
nrowReturns the number of rows in a SparkDataFrame
nrow-methodReturns the number of rows in a SparkDataFrame
ntilentile
ntile-methodntile
n_distinctCount Distinct Values
n_distinct-methodCount Distinct Values
- -

-- O --

- - - - - - - - - - - - - - - - -
orderByOrdering Columns in a WindowSpec
orderBy-methodArrange Rows by Variables
orderBy-methodOrdering Columns in a WindowSpec
otherwiseotherwise
otherwise-methodotherwise
overover
over-methodover
- -

-- P --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
parquetFileCreate a SparkDataFrame from a Parquet file.
parquetFile.defaultCreate a SparkDataFrame from a Parquet file.
partitionBypartitionBy
partitionBy-methodpartitionBy
percent_rankpercent_rank
percent_rank-methodpercent_rank
persistPersist
persist-methodPersist
pivotPivot a column of the GroupedData and perform the specified aggregation.
pivot-methodPivot a column of the GroupedData and perform the specified aggregation.
pmodpmod
pmod-methodpmod
posexplodeposexplode
posexplode-methodposexplode
predictMakes predictions from a MLlib model
predict-methodAlternating Least Squares (ALS) for Collaborative Filtering
predict-methodBisecting K-Means Clustering Model
predict-methodFP-growth
predict-methodMultivariate Gaussian Mixture Model (GMM)
predict-methodGradient Boosted Tree Model for Regression and Classification
predict-methodGeneralized Linear Models
predict-methodIsotonic Regression Model
predict-methodK-Means Clustering Model
predict-methodLogistic Regression Model
predict-methodMultilayer Perceptron Classification Model
predict-methodNaive Bayes Models
predict-methodRandom Forest Model for Regression and Classification
predict-methodAccelerated Failure Time (AFT) Survival Regression Model
predict-methodLinear SVM Model
print.jobjPrint a JVM object reference.
print.structFieldPrint a Spark StructField.
print.structTypePrint a Spark StructType.
print.summary.GBTClassificationModelGradient Boosted Tree Model for Regression and Classification
print.summary.GBTRegressionModelGradient Boosted Tree Model for Regression and Classification
print.summary.GeneralizedLinearRegressionModelGeneralized Linear Models
print.summary.KSTest(One-Sample) Kolmogorov-Smirnov Test
print.summary.RandomForestClassificationModelRandom Forest Model for Regression and Classification
print.summary.RandomForestRegressionModelRandom Forest Model for Regression and Classification
printSchemaPrint Schema of a SparkDataFrame
printSchema-methodPrint Schema of a SparkDataFrame
- -

-- Q --

- - - - - - - - - - -
quarterquarter
quarter-methodquarter
queryNamequeryName
queryName-methodqueryName
- -

-- R --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
randrand
rand-methodrand
randnrandn
randn-methodrandn
RandomForestClassificationModel-classS4 class that represents a RandomForestClassificationModel
RandomForestRegressionModel-classS4 class that represents a RandomForestRegressionModel
randomSplitrandomSplit
randomSplit-methodrandomSplit
rangeBetweenrangeBetween
rangeBetween-methodrangeBetween
rankrank
rank-methodrank
rbindUnion two or more SparkDataFrames
rbind-methodUnion two or more SparkDataFrames
read.dfLoad a SparkDataFrame
read.df.defaultLoad a SparkDataFrame
read.jdbcCreate a SparkDataFrame representing the database table accessible via JDBC URL
read.jsonCreate a SparkDataFrame from a JSON file.
read.json.defaultCreate a SparkDataFrame from a JSON file.
read.mlLoad a fitted MLlib model from the input path.
read.orcCreate a SparkDataFrame from an ORC file.
read.parquetCreate a SparkDataFrame from a Parquet file.
read.parquet.defaultCreate a SparkDataFrame from a Parquet file.
read.streamLoad a streaming SparkDataFrame
read.textCreate a SparkDataFrame from a text file.
read.text.defaultCreate a SparkDataFrame from a text file.
recoverPartitionsRecovers all the partitions in the directory of a table and update the catalog
refreshByPathInvalidates and refreshes all the cached data and metadata for SparkDataFrame containing path
refreshTableInvalidates and refreshes all the cached data and metadata of the given table
regexp_extractregexp_extract
regexp_extract-methodregexp_extract
regexp_replaceregexp_replace
regexp_replace-methodregexp_replace
registerTempTable(Deprecated) Register Temporary Table
registerTempTable-method(Deprecated) Register Temporary Table
renamerename
rename-methodrename
repartitionRepartition
repartition-methodRepartition
reversereverse
reverse-methodreverse
rintrint
rint-methodrint
rlikeA set of operations working with SparkDataFrame columns
roundround
round-methodround
rowsBetweenrowsBetween
rowsBetween-methodrowsBetween
row_numberrow_number
row_number-methodrow_number
rpadrpad
rpad-methodrpad
rtrimrtrim
rtrim-methodrtrim
- -

-- S --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sampleSample
sample-methodSample
sampleByReturns a stratified sample without replacement
sampleBy-methodReturns a stratified sample without replacement
sample_fracSample
sample_frac-methodSample
saveAsParquetFileSave the contents of SparkDataFrame as a Parquet file, preserving the schema.
saveAsParquetFile-methodSave the contents of SparkDataFrame as a Parquet file, preserving the schema.
saveAsTableSave the contents of the SparkDataFrame to a data source as a table
saveAsTable-methodSave the contents of the SparkDataFrame to a data source as a table
saveDFSave the contents of SparkDataFrame to a data source.
saveDF-methodSave the contents of SparkDataFrame to a data source.
schemaGet schema object
schema-methodGet schema object
sdsd
sd-methodsd
secondsecond
second-methodsecond
selectSelect
select-methodSelect
selectExprSelectExpr
selectExpr-methodSelectExpr
setCheckpointDirSet checkpoint directory
setCurrentDatabaseSets the current default database
setJobGroupAssigns a group ID to all the jobs started by this thread until the group ID is set to a different value or cleared.
setJobGroup.defaultAssigns a group ID to all the jobs started by this thread until the group ID is set to a different value or cleared.
setLogLevelSet new log level
sha1sha1
sha1-methodsha1
sha2sha2
sha2-methodsha2
shiftLeftshiftLeft
shiftLeft-methodshiftLeft
shiftRightshiftRight
shiftRight-methodshiftRight
shiftRightUnsignedshiftRightUnsigned
shiftRightUnsigned-methodshiftRightUnsigned
showshow
show-methodshow
showDFshowDF
showDF-methodshowDF
signsignum
sign-methodsignum
signumsignum
signum-methodsignum
sinsin
sin-methodsin
sinhsinh
sinh-methodsinh
sizesize
size-methodsize
skewnessskewness
skewness-methodskewness
sort_arraysort_array
sort_array-methodsort_array
soundexsoundex
soundex-methodsoundex
spark.addFileAdd a file or directory to be downloaded with this Spark job on every node.
spark.alsAlternating Least Squares (ALS) for Collaborative Filtering
spark.als-methodAlternating Least Squares (ALS) for Collaborative Filtering
spark.associationRulesFP-growth
spark.associationRules-methodFP-growth
spark.bisectingKmeansBisecting K-Means Clustering Model
spark.bisectingKmeans-methodBisecting K-Means Clustering Model
spark.fpGrowthFP-growth
spark.fpGrowth-methodFP-growth
spark.freqItemsetsFP-growth
spark.freqItemsets-methodFP-growth
spark.gaussianMixtureMultivariate Gaussian Mixture Model (GMM)
spark.gaussianMixture-methodMultivariate Gaussian Mixture Model (GMM)
spark.gbtGradient Boosted Tree Model for Regression and Classification
spark.gbt-methodGradient Boosted Tree Model for Regression and Classification
spark.getSparkFilesGet the absolute path of a file added through spark.addFile.
spark.getSparkFilesRootDirectoryGet the root directory that contains files added through spark.addFile.
spark.glmGeneralized Linear Models
spark.glm-methodGeneralized Linear Models
spark.isoregIsotonic Regression Model
spark.isoreg-methodIsotonic Regression Model
spark.kmeansK-Means Clustering Model
spark.kmeans-methodK-Means Clustering Model
spark.kstest(One-Sample) Kolmogorov-Smirnov Test
spark.kstest-method(One-Sample) Kolmogorov-Smirnov Test
spark.lapplyRun a function over a list of elements, distributing the computations with Spark
spark.ldaLatent Dirichlet Allocation
spark.lda-methodLatent Dirichlet Allocation
spark.logitLogistic Regression Model
spark.logit-methodLogistic Regression Model
spark.mlpMultilayer Perceptron Classification Model
spark.mlp-methodMultilayer Perceptron Classification Model
spark.naiveBayesNaive Bayes Models
spark.naiveBayes-methodNaive Bayes Models
spark.perplexityLatent Dirichlet Allocation
spark.perplexity-methodLatent Dirichlet Allocation
spark.posteriorLatent Dirichlet Allocation
spark.posterior-methodLatent Dirichlet Allocation
spark.randomForestRandom Forest Model for Regression and Classification
spark.randomForest-methodRandom Forest Model for Regression and Classification
spark.survregAccelerated Failure Time (AFT) Survival Regression Model
spark.survreg-methodAccelerated Failure Time (AFT) Survival Regression Model
spark.svmLinearLinear SVM Model
spark.svmLinear-methodLinear SVM Model
SparkDataFrame-classS4 class that represents a SparkDataFrame
sparkR.callJMethodCall Java Methods
sparkR.callJStaticCall Static Java Methods
sparkR.confGet Runtime Config from the current active SparkSession
sparkR.init(Deprecated) Initialize a new Spark Context
sparkR.newJObjectCreate Java Objects
sparkR.sessionGet the existing SparkSession or initialize a new SparkSession.
sparkR.session.stopStop the Spark Session and Spark Context
sparkR.stopStop the Spark Session and Spark Context
sparkR.uiWebUrlGet the URL of the SparkUI instance for the current active SparkSession
sparkR.versionGet version of Spark on which this application is running
sparkRHive.init(Deprecated) Initialize a new HiveContext
sparkRSQL.init(Deprecated) Initialize a new SQLContext
spark_partition_idReturn the partition ID as a column
spark_partition_id-methodReturn the partition ID as a column
sqlSQL Query
sql.defaultSQL Query
sqrtsqrt
sqrt-methodsqrt
startsWithstartsWith
startsWith-methodstartsWith
statusstatus
status-methodstatus
stddevsd
stddev-methodsd
stddev_popstddev_pop
stddev_pop-methodstddev_pop
stddev_sampstddev_samp
stddev_samp-methodstddev_samp
stopQuerystopQuery
stopQuery-methodstopQuery
storageLevelStorageLevel
storageLevel-methodStorageLevel
strCompactly display the structure of a dataset
str-methodCompactly display the structure of a dataset
StreamingQuery-classS4 class that represents a StreamingQuery
structstruct
struct-methodstruct
structFieldstructField
structField.characterstructField
structField.jobjstructField
structTypestructType
structType.jobjstructType
structType.structFieldstructType
subsetSubset
subset-methodSubset
substrsubstr
substr-methodsubstr
substring_indexsubstring_index
substring_index-methodsubstring_index
sumsum
sum-methodsum
sumDistinctsumDistinct
sumDistinct-methodsumDistinct
summarizesummarize
summarize-methodsummarize
summarysummary
summary-methodAlternating Least Squares (ALS) for Collaborative Filtering
summary-methodBisecting K-Means Clustering Model
summary-methodMultivariate Gaussian Mixture Model (GMM)
summary-methodGradient Boosted Tree Model for Regression and Classification
summary-methodGeneralized Linear Models
summary-methodIsotonic Regression Model
summary-methodK-Means Clustering Model
summary-method(One-Sample) Kolmogorov-Smirnov Test
summary-methodLatent Dirichlet Allocation
summary-methodLogistic Regression Model
summary-methodMultilayer Perceptron Classification Model
summary-methodNaive Bayes Models
summary-methodRandom Forest Model for Regression and Classification
summary-methodAccelerated Failure Time (AFT) Survival Regression Model
summary-methodLinear SVM Model
summary-methodsummary
- -

-- T --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tableNamesTable Names
tableNames.defaultTable Names
tablesTables
tables.defaultTables
tableToDFCreate a SparkDataFrame from a SparkSQL table or view
takeTake the first NUM rows of a SparkDataFrame and return the results as a R data.frame
take-methodTake the first NUM rows of a SparkDataFrame and return the results as a R data.frame
tantan
tan-methodtan
tanhtanh
tanh-methodtanh
toDegreestoDegrees
toDegrees-methodtoDegrees
toJSONtoJSON
toJSON-methodtoJSON
toRadianstoRadians
toRadians-methodtoRadians
to_dateto_date
to_date-methodto_date
to_jsonto_json
to_json-methodto_json
to_timestampto_timestamp
to_timestamp-methodto_timestamp
to_utc_timestampto_utc_timestamp
to_utc_timestamp-methodto_utc_timestamp
transformMutate
transform-methodMutate
translatetranslate
translate-methodtranslate
trimtrim
trim-methodtrim
- -

-- U --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
unbase64unbase64
unbase64-methodunbase64
uncacheTableUncache Table
uncacheTable.defaultUncache Table
unhexunhex
unhex-methodunhex
unionReturn a new SparkDataFrame containing the union of rows
union-methodReturn a new SparkDataFrame containing the union of rows
unionAllReturn a new SparkDataFrame containing the union of rows
unionAll-methodReturn a new SparkDataFrame containing the union of rows
uniqueDistinct
unique-methodDistinct
unix_timestampunix_timestamp
unix_timestamp-methodunix_timestamp
unpersistUnpersist
unpersist-methodUnpersist
upperupper
upper-methodupper
- -

-- V --

- - - - - - - - - - - - - - - - - - -
varvar
var-methodvar
variancevar
variance-methodvar
var_popvar_pop
var_pop-methodvar_pop
var_sampvar_samp
var_samp-methodvar_samp
- -

-- W --

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
weekofyearweekofyear
weekofyear-methodweekofyear
whenwhen
when-methodwhen
whereFilter
where-methodFilter
windowwindow
window-methodwindow
windowOrderBywindowOrderBy
windowOrderBy-methodwindowOrderBy
windowPartitionBywindowPartitionBy
windowPartitionBy-methodwindowPartitionBy
WindowSpec-classS4 class that represents a WindowSpec
withEvaluate a R expression in an environment constructed from a SparkDataFrame
with-methodEvaluate a R expression in an environment constructed from a SparkDataFrame
withColumnWithColumn
withColumn-methodWithColumn
withColumnRenamedrename
withColumnRenamed-methodrename
write.dfSave the contents of SparkDataFrame to a data source.
write.df-methodSave the contents of SparkDataFrame to a data source.
write.jdbcSave the content of SparkDataFrame to an external database table via JDBC.
write.jdbc-methodSave the content of SparkDataFrame to an external database table via JDBC.
write.jsonSave the contents of SparkDataFrame as a JSON file
write.json-methodSave the contents of SparkDataFrame as a JSON file
write.mlSaves the MLlib model to the input path
write.ml-methodAlternating Least Squares (ALS) for Collaborative Filtering
write.ml-methodBisecting K-Means Clustering Model
write.ml-methodFP-growth
write.ml-methodMultivariate Gaussian Mixture Model (GMM)
write.ml-methodGradient Boosted Tree Model for Regression and Classification
write.ml-methodGeneralized Linear Models
write.ml-methodIsotonic Regression Model
write.ml-methodK-Means Clustering Model
write.ml-methodLatent Dirichlet Allocation
write.ml-methodLogistic Regression Model
write.ml-methodMultilayer Perceptron Classification Model
write.ml-methodNaive Bayes Models
write.ml-methodRandom Forest Model for Regression and Classification
write.ml-methodAccelerated Failure Time (AFT) Survival Regression Model
write.ml-methodLinear SVM Model
write.orcSave the contents of SparkDataFrame as an ORC file, preserving the schema.
write.orc-methodSave the contents of SparkDataFrame as an ORC file, preserving the schema.
write.parquetSave the contents of SparkDataFrame as a Parquet file, preserving the schema.
write.parquet-methodSave the contents of SparkDataFrame as a Parquet file, preserving the schema.
write.streamWrite the streaming SparkDataFrame to a data source.
write.stream-methodWrite the streaming SparkDataFrame to a data source.
write.textSave the content of SparkDataFrame in a text file at the specified path.
write.text-methodSave the content of SparkDataFrame in a text file at the specified path.
- -

-- Y --

- - - - - - -
yearyear
year-methodyear
- -

-- misc --

- - - - - - - - - - - - - - - - - - - - - - - - - - -
$Select
$-methodSelect
$<-Select
$<--methodSelect
%in%Match a column with given values.
%in%-methodMatch a column with given values.
[Subset
[-methodSubset
[[Subset
[[-methodSubset
[[<-Subset
[[<--methodSubset
- diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/html/R.css b/image_content/config/spark/opt/spark/R/lib/SparkR/html/R.css deleted file mode 100644 index f10f5ea..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/html/R.css +++ /dev/null @@ -1,97 +0,0 @@ -body { - background: white; - color: black; -} - -a:link { - background: white; - color: blue; -} - -a:visited { - background: white; - color: rgb(50%, 0%, 50%); -} - -h1 { - background: white; - color: rgb(55%, 55%, 55%); - font-family: monospace; - font-size: x-large; - text-align: center; -} - -h2 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-size: large; - text-align: center; -} - -h3 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-size: large; -} - -h4 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-style: italic; - font-size: large; -} - -h5 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; -} - -h6 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-style: italic; -} - -img.toplogo { - width: 4em; - vertical-align: middle; -} - -img.arrow { - width: 30px; - height: 30px; - border: 0; -} - -span.acronym { - font-size: small; -} - -span.env { - font-family: monospace; -} - -span.file { - font-family: monospace; -} - -span.option{ - font-family: monospace; -} - -span.pkg { - font-weight: bold; -} - -span.samp{ - font-family: monospace; -} - -div.vignettes a:hover { - background: rgb(85%, 85%, 85%); -} diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/profile/general.R b/image_content/config/spark/opt/spark/R/lib/SparkR/profile/general.R deleted file mode 100644 index 8c75c19..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/profile/general.R +++ /dev/null @@ -1,23 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -.First <- function() { - packageDir <- Sys.getenv("SPARKR_PACKAGE_DIR") - dirs <- strsplit(packageDir, ",")[[1]] - .libPaths(c(dirs, .libPaths())) - Sys.setenv(NOAWT = 1) -} diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/profile/shell.R b/image_content/config/spark/opt/spark/R/lib/SparkR/profile/shell.R deleted file mode 100644 index 8a8111a..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/profile/shell.R +++ /dev/null @@ -1,47 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -.First <- function() { - home <- Sys.getenv("SPARK_HOME") - .libPaths(c(file.path(home, "R", "lib"), .libPaths())) - Sys.setenv(NOAWT = 1) - - # Make sure SparkR package is the last loaded one - old <- getOption("defaultPackages") - options(defaultPackages = c(old, "SparkR")) - - spark <- SparkR::sparkR.session() - assign("spark", spark, envir = .GlobalEnv) - sc <- SparkR:::callJStatic("org.apache.spark.sql.api.r.SQLUtils", "getJavaSparkContext", spark) - assign("sc", sc, envir = .GlobalEnv) - sparkVer <- SparkR:::callJMethod(sc, "version") - cat("\n Welcome to") - cat("\n") - cat(" ____ __", "\n") - cat(" / __/__ ___ _____/ /__", "\n") - cat(" _\\ \\/ _ \\/ _ `/ __/ '_/", "\n") - cat(" /___/ .__/\\_,_/_/ /_/\\_\\") - if (nchar(sparkVer) == 0) { - cat("\n") - } else { - cat(" version ", sparkVer, "\n") - } - cat(" /_/", "\n") - cat("\n") - - cat("\n SparkSession available as 'spark'.\n") -} diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/tests/testthat/test_basic.R b/image_content/config/spark/opt/spark/R/lib/SparkR/tests/testthat/test_basic.R deleted file mode 100644 index 823d26f..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/tests/testthat/test_basic.R +++ /dev/null @@ -1,92 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -context("basic tests for CRAN") - -test_that("create DataFrame from list or data.frame", { - sparkR.session(master = sparkRTestMaster, enableHiveSupport = FALSE, - sparkConfig = sparkRTestConfig) - - i <- 4 - df <- createDataFrame(data.frame(dummy = 1:i)) - expect_equal(count(df), i) - - l <- list(list(a = 1, b = 2), list(a = 3, b = 4)) - df <- createDataFrame(l) - expect_equal(columns(df), c("a", "b")) - - a <- 1:3 - b <- c("a", "b", "c") - ldf <- data.frame(a, b) - df <- createDataFrame(ldf) - expect_equal(columns(df), c("a", "b")) - expect_equal(dtypes(df), list(c("a", "int"), c("b", "string"))) - expect_equal(count(df), 3) - ldf2 <- collect(df) - expect_equal(ldf$a, ldf2$a) - - mtcarsdf <- createDataFrame(mtcars) - expect_equivalent(collect(mtcarsdf), mtcars) - - bytes <- as.raw(c(1, 2, 3)) - df <- createDataFrame(list(list(bytes))) - expect_equal(collect(df)[[1]][[1]], bytes) - - sparkR.session.stop() -}) - -test_that("spark.glm and predict", { - sparkR.session(master = sparkRTestMaster, enableHiveSupport = FALSE, - sparkConfig = sparkRTestConfig) - - training <- suppressWarnings(createDataFrame(iris)) - # gaussian family - model <- spark.glm(training, Sepal_Width ~ Sepal_Length + Species) - prediction <- predict(model, training) - expect_equal(typeof(take(select(prediction, "prediction"), 1)$prediction), "double") - vals <- collect(select(prediction, "prediction")) - rVals <- predict(glm(Sepal.Width ~ Sepal.Length + Species, data = iris), iris) - expect_true(all(abs(rVals - vals) < 1e-6), rVals - vals) - - # Gamma family - x <- runif(100, -1, 1) - y <- rgamma(100, rate = 10 / exp(0.5 + 1.2 * x), shape = 10) - df <- as.DataFrame(as.data.frame(list(x = x, y = y))) - model <- glm(y ~ x, family = Gamma, df) - out <- capture.output(print(summary(model))) - expect_true(any(grepl("Dispersion parameter for gamma family", out))) - - # tweedie family - model <- spark.glm(training, Sepal_Width ~ Sepal_Length + Species, - family = "tweedie", var.power = 1.2, link.power = 0.0) - prediction <- predict(model, training) - expect_equal(typeof(take(select(prediction, "prediction"), 1)$prediction), "double") - vals <- collect(select(prediction, "prediction")) - - # manual calculation of the R predicted values to avoid dependence on statmod - #' library(statmod) - #' rModel <- glm(Sepal.Width ~ Sepal.Length + Species, data = iris, - #' family = tweedie(var.power = 1.2, link.power = 0.0)) - #' print(coef(rModel)) - - rCoef <- c(0.6455409, 0.1169143, -0.3224752, -0.3282174) - rVals <- exp(as.numeric(model.matrix(Sepal.Width ~ Sepal.Length + Species, - data = iris) %*% rCoef)) - expect_true(all(abs(rVals - vals) < 1e-5), rVals - vals) - - sparkR.session.stop() -}) diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/worker/daemon.R b/image_content/config/spark/opt/spark/R/lib/SparkR/worker/daemon.R deleted file mode 100644 index 3a318b7..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/worker/daemon.R +++ /dev/null @@ -1,55 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Worker daemon - -rLibDir <- Sys.getenv("SPARKR_RLIBDIR") -connectionTimeout <- as.integer(Sys.getenv("SPARKR_BACKEND_CONNECTION_TIMEOUT", "6000")) -dirs <- strsplit(rLibDir, ",")[[1]] -script <- file.path(dirs[[1]], "SparkR", "worker", "worker.R") - -# preload SparkR package, speedup worker -.libPaths(c(dirs, .libPaths())) -suppressPackageStartupMessages(library(SparkR)) - -port <- as.integer(Sys.getenv("SPARKR_WORKER_PORT")) -inputCon <- socketConnection( - port = port, open = "rb", blocking = TRUE, timeout = connectionTimeout) - -while (TRUE) { - ready <- socketSelect(list(inputCon)) - if (ready) { - port <- SparkR:::readInt(inputCon) - # There is a small chance that it could be interrupted by signal, retry one time - if (length(port) == 0) { - port <- SparkR:::readInt(inputCon) - if (length(port) == 0) { - cat("quitting daemon\n") - quit(save = "no") - } - } - p <- parallel:::mcfork() - if (inherits(p, "masterProcess")) { - close(inputCon) - Sys.setenv(SPARKR_WORKER_PORT = port) - try(source(script)) - # Set SIGUSR1 so that child can exit - tools::pskill(Sys.getpid(), tools::SIGUSR1) - parallel:::mcexit(0L) - } - } -} diff --git a/image_content/config/spark/opt/spark/R/lib/SparkR/worker/worker.R b/image_content/config/spark/opt/spark/R/lib/SparkR/worker/worker.R deleted file mode 100644 index 03e7450..0000000 --- a/image_content/config/spark/opt/spark/R/lib/SparkR/worker/worker.R +++ /dev/null @@ -1,264 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Worker class - -# Get current system time -currentTimeSecs <- function() { - as.numeric(Sys.time()) -} - -# Get elapsed time -elapsedSecs <- function() { - proc.time()[3] -} - -compute <- function(mode, partition, serializer, deserializer, key, - colNames, computeFunc, inputData) { - if (mode > 0) { - if (deserializer == "row") { - # Transform the list of rows into a data.frame - # Note that the optional argument stringsAsFactors for rbind is - # available since R 3.2.4. So we set the global option here. - oldOpt <- getOption("stringsAsFactors") - options(stringsAsFactors = FALSE) - - # Handle binary data types - if ("raw" %in% sapply(inputData[[1]], class)) { - inputData <- SparkR:::rbindRaws(inputData) - } else { - inputData <- do.call(rbind.data.frame, inputData) - } - - options(stringsAsFactors = oldOpt) - - names(inputData) <- colNames - } else { - # Check to see if inputData is a valid data.frame - stopifnot(deserializer == "byte") - stopifnot(class(inputData) == "data.frame") - } - - if (mode == 2) { - output <- computeFunc(key, inputData) - } else { - output <- computeFunc(inputData) - } - if (serializer == "row") { - # Transform the result data.frame back to a list of rows - output <- split(output, seq(nrow(output))) - } else { - # Serialize the ouput to a byte array - stopifnot(serializer == "byte") - } - } else { - output <- computeFunc(partition, inputData) - } - return (output) -} - -outputResult <- function(serializer, output, outputCon) { - if (serializer == "byte") { - SparkR:::writeRawSerialize(outputCon, output) - } else if (serializer == "row") { - SparkR:::writeRowSerialize(outputCon, output) - } else { - # write lines one-by-one with flag - lapply(output, function(line) SparkR:::writeString(outputCon, line)) - } -} - -# Constants -specialLengths <- list(END_OF_STERAM = 0L, TIMING_DATA = -1L) - -# Timing R process boot -bootTime <- currentTimeSecs() -bootElap <- elapsedSecs() - -rLibDir <- Sys.getenv("SPARKR_RLIBDIR") -connectionTimeout <- as.integer(Sys.getenv("SPARKR_BACKEND_CONNECTION_TIMEOUT", "6000")) -dirs <- strsplit(rLibDir, ",")[[1]] -# Set libPaths to include SparkR package as loadNamespace needs this -# TODO: Figure out if we can avoid this by not loading any objects that require -# SparkR namespace -.libPaths(c(dirs, .libPaths())) -suppressPackageStartupMessages(library(SparkR)) - -port <- as.integer(Sys.getenv("SPARKR_WORKER_PORT")) -inputCon <- socketConnection( - port = port, blocking = TRUE, open = "rb", timeout = connectionTimeout) -outputCon <- socketConnection( - port = port, blocking = TRUE, open = "wb", timeout = connectionTimeout) - -# read the index of the current partition inside the RDD -partition <- SparkR:::readInt(inputCon) - -deserializer <- SparkR:::readString(inputCon) -serializer <- SparkR:::readString(inputCon) - -# Include packages as required -packageNames <- unserialize(SparkR:::readRaw(inputCon)) -for (pkg in packageNames) { - suppressPackageStartupMessages(library(as.character(pkg), character.only = TRUE)) -} - -# read function dependencies -funcLen <- SparkR:::readInt(inputCon) -computeFunc <- unserialize(SparkR:::readRawLen(inputCon, funcLen)) -env <- environment(computeFunc) -parent.env(env) <- .GlobalEnv # Attach under global environment. - -# Timing init envs for computing -initElap <- elapsedSecs() - -# Read and set broadcast variables -numBroadcastVars <- SparkR:::readInt(inputCon) -if (numBroadcastVars > 0) { - for (bcast in seq(1:numBroadcastVars)) { - bcastId <- SparkR:::readInt(inputCon) - value <- unserialize(SparkR:::readRaw(inputCon)) - SparkR:::setBroadcastValue(bcastId, value) - } -} - -# Timing broadcast -broadcastElap <- elapsedSecs() -# Initial input timing -inputElap <- broadcastElap - -# If -1: read as normal RDD; if >= 0, treat as pairwise RDD and treat the int -# as number of partitions to create. -numPartitions <- SparkR:::readInt(inputCon) - -# 0 - RDD mode, 1 - dapply mode, 2 - gapply mode -mode <- SparkR:::readInt(inputCon) - -if (mode > 0) { - colNames <- SparkR:::readObject(inputCon) -} - -isEmpty <- SparkR:::readInt(inputCon) -computeInputElapsDiff <- 0 -outputComputeElapsDiff <- 0 - -if (isEmpty != 0) { - if (numPartitions == -1) { - if (deserializer == "byte") { - # Now read as many characters as described in funcLen - data <- SparkR:::readDeserialize(inputCon) - } else if (deserializer == "string") { - data <- as.list(readLines(inputCon)) - } else if (deserializer == "row" && mode == 2) { - dataWithKeys <- SparkR:::readMultipleObjectsWithKeys(inputCon) - keys <- dataWithKeys$keys - data <- dataWithKeys$data - } else if (deserializer == "row") { - data <- SparkR:::readMultipleObjects(inputCon) - } - - # Timing reading input data for execution - inputElap <- elapsedSecs() - if (mode > 0) { - if (mode == 1) { - output <- compute(mode, partition, serializer, deserializer, NULL, - colNames, computeFunc, data) - } else { - # gapply mode - for (i in 1:length(data)) { - # Timing reading input data for execution - inputElap <- elapsedSecs() - output <- compute(mode, partition, serializer, deserializer, keys[[i]], - colNames, computeFunc, data[[i]]) - computeElap <- elapsedSecs() - outputResult(serializer, output, outputCon) - outputElap <- elapsedSecs() - computeInputElapsDiff <- computeInputElapsDiff + (computeElap - inputElap) - outputComputeElapsDiff <- outputComputeElapsDiff + (outputElap - computeElap) - } - } - } else { - output <- compute(mode, partition, serializer, deserializer, NULL, - colNames, computeFunc, data) - } - if (mode != 2) { - # Not a gapply mode - computeElap <- elapsedSecs() - outputResult(serializer, output, outputCon) - outputElap <- elapsedSecs() - computeInputElapsDiff <- computeElap - inputElap - outputComputeElapsDiff <- outputElap - computeElap - } - } else { - if (deserializer == "byte") { - # Now read as many characters as described in funcLen - data <- SparkR:::readDeserialize(inputCon) - } else if (deserializer == "string") { - data <- readLines(inputCon) - } else if (deserializer == "row") { - data <- SparkR:::readMultipleObjects(inputCon) - } - # Timing reading input data for execution - inputElap <- elapsedSecs() - - res <- new.env() - - # Step 1: hash the data to an environment - hashTupleToEnvir <- function(tuple) { - # NOTE: execFunction is the hash function here - hashVal <- computeFunc(tuple[[1]]) - bucket <- as.character(hashVal %% numPartitions) - acc <- res[[bucket]] - # Create a new accumulator - if (is.null(acc)) { - acc <- SparkR:::initAccumulator() - } - SparkR:::addItemToAccumulator(acc, tuple) - res[[bucket]] <- acc - } - invisible(lapply(data, hashTupleToEnvir)) - # Timing computing - computeElap <- elapsedSecs() - - # Step 2: write out all of the environment as key-value pairs. - for (name in ls(res)) { - SparkR:::writeInt(outputCon, 2L) - SparkR:::writeInt(outputCon, as.integer(name)) - # Truncate the accumulator list to the number of elements we have - length(res[[name]]$data) <- res[[name]]$counter - SparkR:::writeRawSerialize(outputCon, res[[name]]$data) - } - # Timing output - outputElap <- elapsedSecs() - computeInputElapsDiff <- computeElap - inputElap - outputComputeElapsDiff <- outputElap - computeElap - } -} - -# Report timing -SparkR:::writeInt(outputCon, specialLengths$TIMING_DATA) -SparkR:::writeDouble(outputCon, bootTime) -SparkR:::writeDouble(outputCon, initElap - bootElap) # init -SparkR:::writeDouble(outputCon, broadcastElap - initElap) # broadcast -SparkR:::writeDouble(outputCon, inputElap - broadcastElap) # input -SparkR:::writeDouble(outputCon, computeInputElapsDiff) # compute -SparkR:::writeDouble(outputCon, outputComputeElapsDiff) # output - -# End of output -SparkR:::writeInt(outputCon, specialLengths$END_OF_STERAM) - -close(outputCon) -close(inputCon) diff --git a/image_content/config/spark/opt/spark/R/lib/sparkr.zip b/image_content/config/spark/opt/spark/R/lib/sparkr.zip deleted file mode 120000 index 32fb01d..0000000 --- a/image_content/config/spark/opt/spark/R/lib/sparkr.zip +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../.git/annex/objects/f2/8g/SHA256E-s1716041--3411b956bc65451250bec11aac696a273a953d29552b9e23c6e329076c8f28a5.zip/SHA256E-s1716041--3411b956bc65451250bec11aac696a273a953d29552b9e23c6e329076c8f28a5.zip \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/README.md b/image_content/config/spark/opt/spark/README.md deleted file mode 100644 index 1e521a7..0000000 --- a/image_content/config/spark/opt/spark/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# Apache Spark - -Spark is a fast and general cluster computing system for Big Data. It provides -high-level APIs in Scala, Java, Python, and R, and an optimized engine that -supports general computation graphs for data analysis. It also supports a -rich set of higher-level tools including Spark SQL for SQL and DataFrames, -MLlib for machine learning, GraphX for graph processing, -and Spark Streaming for stream processing. - - - - -## Online Documentation - -You can find the latest Spark documentation, including a programming -guide, on the [project web page](http://spark.apache.org/documentation.html). -This README file only contains basic setup instructions. - -## Building Spark - -Spark is built using [Apache Maven](http://maven.apache.org/). -To build Spark and its example programs, run: - - build/mvn -DskipTests clean package - -(You do not need to do this if you downloaded a pre-built package.) - -You can build Spark using more than one thread by using the -T option with Maven, see ["Parallel builds in Maven 3"](https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3). -More detailed documentation is available from the project site, at -["Building Spark"](http://spark.apache.org/docs/latest/building-spark.html). - -For general development tips, including info on developing Spark using an IDE, see ["Useful Developer Tools"](http://spark.apache.org/developer-tools.html). - -## Interactive Scala Shell - -The easiest way to start using Spark is through the Scala shell: - - ./bin/spark-shell - -Try the following command, which should return 1000: - - scala> sc.parallelize(1 to 1000).count() - -## Interactive Python Shell - -Alternatively, if you prefer Python, you can use the Python shell: - - ./bin/pyspark - -And run the following command, which should also return 1000: - - >>> sc.parallelize(range(1000)).count() - -## Example Programs - -Spark also comes with several sample programs in the `examples` directory. -To run one of them, use `./bin/run-example [params]`. For example: - - ./bin/run-example SparkPi - -will run the Pi example locally. - -You can set the MASTER environment variable when running examples to submit -examples to a cluster. This can be a mesos:// or spark:// URL, -"yarn" to run on YARN, and "local" to run -locally with one thread, or "local[N]" to run locally with N threads. You -can also use an abbreviated class name if the class is in the `examples` -package. For instance: - - MASTER=spark://host:7077 ./bin/run-example SparkPi - -Many of the example programs print usage help if no params are given. - -## Running Tests - -Testing first requires [building Spark](#building-spark). Once Spark is built, tests -can be run using: - - ./dev/run-tests - -Please see the guidance on how to -[run tests for a module, or individual tests](http://spark.apache.org/developer-tools.html#individual-tests). - -## A Note About Hadoop Versions - -Spark uses the Hadoop core library to talk to HDFS and other Hadoop-supported -storage systems. Because the protocols have changed in different versions of -Hadoop, you must build Spark against the same version that your cluster runs. - -Please refer to the build documentation at -["Specifying the Hadoop Version"](http://spark.apache.org/docs/latest/building-spark.html#specifying-the-hadoop-version) -for detailed guidance on building for a particular distribution of Hadoop, including -building for particular Hive and Hive Thriftserver distributions. - -## Configuration - -Please refer to the [Configuration Guide](http://spark.apache.org/docs/latest/configuration.html) -in the online documentation for an overview on how to configure Spark. - -## Contributing - -Please review the [Contribution to Spark guide](http://spark.apache.org/contributing.html) -for information on how to get started contributing to the project. diff --git a/image_content/config/spark/opt/spark/RELEASE b/image_content/config/spark/opt/spark/RELEASE deleted file mode 100644 index 1e5b9dc..0000000 --- a/image_content/config/spark/opt/spark/RELEASE +++ /dev/null @@ -1,2 +0,0 @@ -Spark 2.2.1 built for Hadoop 2.6.5 -Build flags: -Psparkr -Phadoop-provided -Pyarn -Pmesos -DzincPort=3038 diff --git a/image_content/config/spark/opt/spark/bin/beeline b/image_content/config/spark/opt/spark/bin/beeline deleted file mode 100755 index 0585346..0000000 --- a/image_content/config/spark/opt/spark/bin/beeline +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# -# Shell script for starting BeeLine - -# Enter posix mode for bash -set -o posix - -# Figure out if SPARK_HOME is set -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -CLASS="org.apache.hive.beeline.BeeLine" -exec "${SPARK_HOME}/bin/spark-class" $CLASS "$@" diff --git a/image_content/config/spark/opt/spark/bin/beeline.cmd b/image_content/config/spark/opt/spark/bin/beeline.cmd deleted file mode 100644 index 2d39369..0000000 --- a/image_content/config/spark/opt/spark/bin/beeline.cmd +++ /dev/null @@ -1,20 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -cmd /V /E /C "%~dp0spark-class.cmd" org.apache.hive.beeline.BeeLine %* diff --git a/image_content/config/spark/opt/spark/bin/find-spark-home b/image_content/config/spark/opt/spark/bin/find-spark-home deleted file mode 100755 index fa78407..0000000 --- a/image_content/config/spark/opt/spark/bin/find-spark-home +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Attempts to find a proper value for SPARK_HOME. Should be included using "source" directive. - -FIND_SPARK_HOME_PYTHON_SCRIPT="$(cd "$(dirname "$0")"; pwd)/find_spark_home.py" - -# Short cirtuit if the user already has this set. -if [ ! -z "${SPARK_HOME}" ]; then - exit 0 -elif [ ! -f "$FIND_SPARK_HOME_PYTHON_SCRIPT" ]; then - # If we are not in the same directory as find_spark_home.py we are not pip installed so we don't - # need to search the different Python directories for a Spark installation. - # Note only that, if the user has pip installed PySpark but is directly calling pyspark-shell or - # spark-submit in another directory we want to use that version of PySpark rather than the - # pip installed version of PySpark. - export SPARK_HOME="$(cd "$(dirname "$0")"/..; pwd)" -else - # We are pip installed, use the Python script to resolve a reasonable SPARK_HOME - # Default to standard python interpreter unless told otherwise - if [[ -z "$PYSPARK_DRIVER_PYTHON" ]]; then - PYSPARK_DRIVER_PYTHON="${PYSPARK_PYTHON:-"python"}" - fi - export SPARK_HOME=$($PYSPARK_DRIVER_PYTHON "$FIND_SPARK_HOME_PYTHON_SCRIPT") -fi diff --git a/image_content/config/spark/opt/spark/bin/find-spark-home.cmd b/image_content/config/spark/opt/spark/bin/find-spark-home.cmd deleted file mode 100644 index 6f5009c..0000000 --- a/image_content/config/spark/opt/spark/bin/find-spark-home.cmd +++ /dev/null @@ -1,60 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem Path to Python script finding SPARK_HOME -set FIND_SPARK_HOME_PYTHON_SCRIPT=%~dp0find_spark_home.py - -rem Default to standard python interpreter unless told otherwise -set PYTHON_RUNNER=python -rem If PYSPARK_DRIVER_PYTHON is set, it overwrites the python version -if not "x%PYSPARK_DRIVER_PYTHON%"=="x" ( - set PYTHON_RUNNER=%PYSPARK_DRIVER_PYTHON% -) -rem If PYSPARK_PYTHON is set, it overwrites the python version -if not "x%PYSPARK_PYTHON%"=="x" ( - set PYTHON_RUNNER=%PYSPARK_PYTHON% -) - -rem If there is python installed, trying to use the root dir as SPARK_HOME -where %PYTHON_RUNNER% > nul 2>&1 -if %ERRORLEVEL% neq 0 ( - if not exist %PYTHON_RUNNER% ( - if "x%SPARK_HOME%"=="x" ( - echo Missing Python executable '%PYTHON_RUNNER%', defaulting to '%~dp0..' for SPARK_HOME ^ -environment variable. Please install Python or specify the correct Python executable in ^ -PYSPARK_DRIVER_PYTHON or PYSPARK_PYTHON environment variable to detect SPARK_HOME safely. - set SPARK_HOME=%~dp0.. - ) - ) -) - -rem Only attempt to find SPARK_HOME if it is not set. -if "x%SPARK_HOME%"=="x" ( - if not exist "%FIND_SPARK_HOME_PYTHON_SCRIPT%" ( - rem If we are not in the same directory as find_spark_home.py we are not pip installed so we don't - rem need to search the different Python directories for a Spark installation. - rem Note only that, if the user has pip installed PySpark but is directly calling pyspark-shell or - rem spark-submit in another directory we want to use that version of PySpark rather than the - rem pip installed version of PySpark. - set SPARK_HOME=%~dp0.. - ) else ( - rem We are pip installed, use the Python script to resolve a reasonable SPARK_HOME - for /f "delims=" %%i in ('%PYTHON_RUNNER% %FIND_SPARK_HOME_PYTHON_SCRIPT%') do set SPARK_HOME=%%i - ) -) diff --git a/image_content/config/spark/opt/spark/bin/load-spark-env.cmd b/image_content/config/spark/opt/spark/bin/load-spark-env.cmd deleted file mode 100644 index da28f15..0000000 --- a/image_content/config/spark/opt/spark/bin/load-spark-env.cmd +++ /dev/null @@ -1,59 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This script loads spark-env.cmd if it exists, and ensures it is only loaded once. -rem spark-env.cmd is loaded from SPARK_CONF_DIR if set, or within the current directory's -rem conf/ subdirectory. - -if [%SPARK_ENV_LOADED%] == [] ( - set SPARK_ENV_LOADED=1 - - if not [%SPARK_CONF_DIR%] == [] ( - set user_conf_dir=%SPARK_CONF_DIR% - ) else ( - set user_conf_dir=..\conf - ) - - call :LoadSparkEnv -) - -rem Setting SPARK_SCALA_VERSION if not already set. - -set ASSEMBLY_DIR2="%SPARK_HOME%\assembly\target\scala-2.11" -set ASSEMBLY_DIR1="%SPARK_HOME%\assembly\target\scala-2.10" - -if [%SPARK_SCALA_VERSION%] == [] ( - - if exist %ASSEMBLY_DIR2% if exist %ASSEMBLY_DIR1% ( - echo "Presence of build for both scala versions(SCALA 2.10 and SCALA 2.11) detected." - echo "Either clean one of them or, set SPARK_SCALA_VERSION=2.11 in spark-env.cmd." - exit 1 - ) - if exist %ASSEMBLY_DIR2% ( - set SPARK_SCALA_VERSION=2.11 - ) else ( - set SPARK_SCALA_VERSION=2.10 - ) -) -exit /b 0 - -:LoadSparkEnv -if exist "%user_conf_dir%\spark-env.cmd" ( - call "%user_conf_dir%\spark-env.cmd" -) diff --git a/image_content/config/spark/opt/spark/bin/load-spark-env.sh b/image_content/config/spark/opt/spark/bin/load-spark-env.sh deleted file mode 100644 index 8a2f709..0000000 --- a/image_content/config/spark/opt/spark/bin/load-spark-env.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# This script loads spark-env.sh if it exists, and ensures it is only loaded once. -# spark-env.sh is loaded from SPARK_CONF_DIR if set, or within the current directory's -# conf/ subdirectory. - -# Figure out where Spark is installed -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -if [ -z "$SPARK_ENV_LOADED" ]; then - export SPARK_ENV_LOADED=1 - - # Returns the parent of the directory this script lives in. - parent_dir="${SPARK_HOME}" - - user_conf_dir="${SPARK_CONF_DIR:-"$parent_dir"/conf}" - - if [ -f "${user_conf_dir}/spark-env.sh" ]; then - # Promote all variable declarations to environment (exported) variables - set -a - . "${user_conf_dir}/spark-env.sh" - set +a - fi -fi - -# Setting SPARK_SCALA_VERSION if not already set. - -if [ -z "$SPARK_SCALA_VERSION" ]; then - - ASSEMBLY_DIR2="${SPARK_HOME}/assembly/target/scala-2.11" - ASSEMBLY_DIR1="${SPARK_HOME}/assembly/target/scala-2.10" - - if [[ -d "$ASSEMBLY_DIR2" && -d "$ASSEMBLY_DIR1" ]]; then - echo -e "Presence of build for both scala versions(SCALA 2.10 and SCALA 2.11) detected." 1>&2 - echo -e 'Either clean one of them or, export SPARK_SCALA_VERSION=2.11 in spark-env.sh.' 1>&2 - exit 1 - fi - - if [ -d "$ASSEMBLY_DIR2" ]; then - export SPARK_SCALA_VERSION="2.11" - else - export SPARK_SCALA_VERSION="2.10" - fi -fi diff --git a/image_content/config/spark/opt/spark/bin/pyspark b/image_content/config/spark/opt/spark/bin/pyspark deleted file mode 100755 index 98387c2..0000000 --- a/image_content/config/spark/opt/spark/bin/pyspark +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -source "${SPARK_HOME}"/bin/load-spark-env.sh -export _SPARK_CMD_USAGE="Usage: ./bin/pyspark [options]" - -# In Spark 2.0, IPYTHON and IPYTHON_OPTS are removed and pyspark fails to launch if either option -# is set in the user's environment. Instead, users should set PYSPARK_DRIVER_PYTHON=ipython -# to use IPython and set PYSPARK_DRIVER_PYTHON_OPTS to pass options when starting the Python driver -# (e.g. PYSPARK_DRIVER_PYTHON_OPTS='notebook'). This supports full customization of the IPython -# and executor Python executables. - -# Fail noisily if removed options are set -if [[ -n "$IPYTHON" || -n "$IPYTHON_OPTS" ]]; then - echo "Error in pyspark startup:" - echo "IPYTHON and IPYTHON_OPTS are removed in Spark 2.0+. Remove these from the environment and set PYSPARK_DRIVER_PYTHON and PYSPARK_DRIVER_PYTHON_OPTS instead." - exit 1 -fi - -# Default to standard python interpreter unless told otherwise -if [[ -z "$PYSPARK_DRIVER_PYTHON" ]]; then - PYSPARK_DRIVER_PYTHON="${PYSPARK_PYTHON:-"python"}" -fi - -WORKS_WITH_IPYTHON=$(python -c 'import sys; print(sys.version_info >= (2, 7, 0))') - -# Determine the Python executable to use for the executors: -if [[ -z "$PYSPARK_PYTHON" ]]; then - if [[ $PYSPARK_DRIVER_PYTHON == *ipython* && ! $WORKS_WITH_IPYTHON ]]; then - echo "IPython requires Python 2.7+; please install python2.7 or set PYSPARK_PYTHON" 1>&2 - exit 1 - else - PYSPARK_PYTHON=python - fi -fi -export PYSPARK_PYTHON - -# Add the PySpark classes to the Python path: -export PYTHONPATH="${SPARK_HOME}/python/:$PYTHONPATH" -export PYTHONPATH="${SPARK_HOME}/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH" - -# Load the PySpark shell.py script when ./pyspark is used interactively: -export OLD_PYTHONSTARTUP="$PYTHONSTARTUP" -export PYTHONSTARTUP="${SPARK_HOME}/python/pyspark/shell.py" - -# For pyspark tests -if [[ -n "$SPARK_TESTING" ]]; then - unset YARN_CONF_DIR - unset HADOOP_CONF_DIR - export PYTHONHASHSEED=0 - exec "$PYSPARK_DRIVER_PYTHON" -m "$1" - exit -fi - -export PYSPARK_DRIVER_PYTHON -export PYSPARK_DRIVER_PYTHON_OPTS -exec "${SPARK_HOME}"/bin/spark-submit pyspark-shell-main --name "PySparkShell" "$@" diff --git a/image_content/config/spark/opt/spark/bin/pyspark.cmd b/image_content/config/spark/opt/spark/bin/pyspark.cmd deleted file mode 100644 index 36f28be..0000000 --- a/image_content/config/spark/opt/spark/bin/pyspark.cmd +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This is the entry point for running PySpark. To avoid polluting the -rem environment, it just launches a new cmd to do the real work. - -cmd /V /E /C "%~dp0pyspark2.cmd" %* diff --git a/image_content/config/spark/opt/spark/bin/pyspark2.cmd b/image_content/config/spark/opt/spark/bin/pyspark2.cmd deleted file mode 100644 index 9d01da1..0000000 --- a/image_content/config/spark/opt/spark/bin/pyspark2.cmd +++ /dev/null @@ -1,38 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem Figure out where the Spark framework is installed -call "%~dp0find-spark-home.cmd" - -call "%SPARK_HOME%\bin\load-spark-env.cmd" -set _SPARK_CMD_USAGE=Usage: bin\pyspark.cmd [options] - -rem Figure out which Python to use. -if "x%PYSPARK_DRIVER_PYTHON%"=="x" ( - set PYSPARK_DRIVER_PYTHON=python - if not [%PYSPARK_PYTHON%] == [] set PYSPARK_DRIVER_PYTHON=%PYSPARK_PYTHON% -) - -set PYTHONPATH=%SPARK_HOME%\python;%PYTHONPATH% -set PYTHONPATH=%SPARK_HOME%\python\lib\py4j-0.10.4-src.zip;%PYTHONPATH% - -set OLD_PYTHONSTARTUP=%PYTHONSTARTUP% -set PYTHONSTARTUP=%SPARK_HOME%\python\pyspark\shell.py - -call "%SPARK_HOME%\bin\spark-submit2.cmd" pyspark-shell-main --name "PySparkShell" %* diff --git a/image_content/config/spark/opt/spark/bin/run-example b/image_content/config/spark/opt/spark/bin/run-example deleted file mode 100755 index 4ba5399..0000000 --- a/image_content/config/spark/opt/spark/bin/run-example +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -export _SPARK_CMD_USAGE="Usage: ./bin/run-example [options] example-class [example args]" -exec "${SPARK_HOME}"/bin/spark-submit run-example "$@" diff --git a/image_content/config/spark/opt/spark/bin/run-example.cmd b/image_content/config/spark/opt/spark/bin/run-example.cmd deleted file mode 100644 index 4a919f8..0000000 --- a/image_content/config/spark/opt/spark/bin/run-example.cmd +++ /dev/null @@ -1,24 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem Figure out where the Spark framework is installed -call "%~dp0find-spark-home.cmd" - -set _SPARK_CMD_USAGE=Usage: ./bin/run-example [options] example-class [example args] -cmd /V /E /C "%~dp0spark-submit.cmd" run-example %* diff --git a/image_content/config/spark/opt/spark/bin/spark-class b/image_content/config/spark/opt/spark/bin/spark-class deleted file mode 100755 index 65d3b96..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-class +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -. "${SPARK_HOME}"/bin/load-spark-env.sh - -# Find the java binary -if [ -n "${JAVA_HOME}" ]; then - RUNNER="${JAVA_HOME}/bin/java" -else - if [ "$(command -v java)" ]; then - RUNNER="java" - else - echo "JAVA_HOME is not set" >&2 - exit 1 - fi -fi - -# Find Spark jars. -if [ -d "${SPARK_HOME}/jars" ]; then - SPARK_JARS_DIR="${SPARK_HOME}/jars" -else - SPARK_JARS_DIR="${SPARK_HOME}/assembly/target/scala-$SPARK_SCALA_VERSION/jars" -fi - -if [ ! -d "$SPARK_JARS_DIR" ] && [ -z "$SPARK_TESTING$SPARK_SQL_TESTING" ]; then - echo "Failed to find Spark jars directory ($SPARK_JARS_DIR)." 1>&2 - echo "You need to build Spark with the target \"package\" before running this program." 1>&2 - exit 1 -else - LAUNCH_CLASSPATH="$SPARK_JARS_DIR/*" -fi - -# Add the launcher build dir to the classpath if requested. -if [ -n "$SPARK_PREPEND_CLASSES" ]; then - LAUNCH_CLASSPATH="${SPARK_HOME}/launcher/target/scala-$SPARK_SCALA_VERSION/classes:$LAUNCH_CLASSPATH" -fi - -# For tests -if [[ -n "$SPARK_TESTING" ]]; then - unset YARN_CONF_DIR - unset HADOOP_CONF_DIR -fi - -# The launcher library will print arguments separated by a NULL character, to allow arguments with -# characters that would be otherwise interpreted by the shell. Read that in a while loop, populating -# an array that will be used to exec the final command. -# -# The exit code of the launcher is appended to the output, so the parent shell removes it from the -# command array and checks the value to see if the launcher succeeded. -build_command() { - "$RUNNER" -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@" - printf "%d\0" $? -} - -# Turn off posix mode since it does not allow process substitution -set +o posix -CMD=() -while IFS= read -d '' -r ARG; do - CMD+=("$ARG") -done < <(build_command "$@") - -COUNT=${#CMD[@]} -LAST=$((COUNT - 1)) -LAUNCHER_EXIT_CODE=${CMD[$LAST]} - -# Certain JVM failures result in errors being printed to stdout (instead of stderr), which causes -# the code that parses the output of the launcher to get confused. In those cases, check if the -# exit code is an integer, and if it's not, handle it as a special error case. -if ! [[ $LAUNCHER_EXIT_CODE =~ ^[0-9]+$ ]]; then - echo "${CMD[@]}" | head -n-1 1>&2 - exit 1 -fi - -if [ $LAUNCHER_EXIT_CODE != 0 ]; then - exit $LAUNCHER_EXIT_CODE -fi - -CMD=("${CMD[@]:0:$LAST}") -exec "${CMD[@]}" diff --git a/image_content/config/spark/opt/spark/bin/spark-class.cmd b/image_content/config/spark/opt/spark/bin/spark-class.cmd deleted file mode 100644 index 96d0cda..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-class.cmd +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This is the entry point for running a Spark class. To avoid polluting -rem the environment, it just launches a new cmd to do the real work. - -cmd /V /E /C "%~dp0spark-class2.cmd" %* diff --git a/image_content/config/spark/opt/spark/bin/spark-class2.cmd b/image_content/config/spark/opt/spark/bin/spark-class2.cmd deleted file mode 100644 index 400fbd7..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-class2.cmd +++ /dev/null @@ -1,72 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem Figure out where the Spark framework is installed -call "%~dp0find-spark-home.cmd" - -call "%SPARK_HOME%\bin\load-spark-env.cmd" - -rem Test that an argument was given -if "x%1"=="x" ( - echo Usage: spark-class ^ [^] - exit /b 1 -) - -rem Find Spark jars. -if exist "%SPARK_HOME%\jars" ( - set SPARK_JARS_DIR="%SPARK_HOME%\jars" -) else ( - set SPARK_JARS_DIR="%SPARK_HOME%\assembly\target\scala-%SPARK_SCALA_VERSION%\jars" -) - -if not exist "%SPARK_JARS_DIR%"\ ( - echo Failed to find Spark jars directory. - echo You need to build Spark before running this program. - exit /b 1 -) - -set LAUNCH_CLASSPATH=%SPARK_JARS_DIR%\* - -rem Add the launcher build dir to the classpath if requested. -if not "x%SPARK_PREPEND_CLASSES%"=="x" ( - set LAUNCH_CLASSPATH="%SPARK_HOME%\launcher\target\scala-%SPARK_SCALA_VERSION%\classes;%LAUNCH_CLASSPATH%" -) - -rem Figure out where java is. -set RUNNER=java -if not "x%JAVA_HOME%"=="x" ( - set RUNNER=%JAVA_HOME%\bin\java -) else ( - where /q "%RUNNER%" - if ERRORLEVEL 1 ( - echo Java not found and JAVA_HOME environment variable is not set. - echo Install Java and set JAVA_HOME to point to the Java installation directory. - exit /b 1 - ) -) - -rem The launcher library prints the command to be executed in a single line suitable for being -rem executed by the batch interpreter. So read all the output of the launcher into a variable. -set LAUNCHER_OUTPUT=%temp%\spark-class-launcher-output-%RANDOM%.txt -"%RUNNER%" -Xmx128m -cp "%LAUNCH_CLASSPATH%" org.apache.spark.launcher.Main %* > %LAUNCHER_OUTPUT% -for /f "tokens=*" %%i in (%LAUNCHER_OUTPUT%) do ( - set SPARK_CMD=%%i -) -del %LAUNCHER_OUTPUT% -%SPARK_CMD% diff --git a/image_content/config/spark/opt/spark/bin/spark-shell b/image_content/config/spark/opt/spark/bin/spark-shell deleted file mode 100755 index 421f36c..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-shell +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# -# Shell script for starting the Spark Shell REPL - -cygwin=false -case "$(uname)" in - CYGWIN*) cygwin=true;; -esac - -# Enter posix mode for bash -set -o posix - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -export _SPARK_CMD_USAGE="Usage: ./bin/spark-shell [options]" - -# SPARK-4161: scala does not assume use of the java classpath, -# so we need to add the "-Dscala.usejavacp=true" flag manually. We -# do this specifically for the Spark shell because the scala REPL -# has its own class loader, and any additional classpath specified -# through spark.driver.extraClassPath is not automatically propagated. -SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Dscala.usejavacp=true" - -function main() { - if $cygwin; then - # Workaround for issue involving JLine and Cygwin - # (see http://sourceforge.net/p/jline/bugs/40/). - # If you're using the Mintty terminal emulator in Cygwin, may need to set the - # "Backspace sends ^H" setting in "Keys" section of the Mintty options - # (see https://github.com/sbt/sbt/issues/562). - stty -icanon min 1 -echo > /dev/null 2>&1 - export SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Djline.terminal=unix" - "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@" - stty icanon echo > /dev/null 2>&1 - else - export SPARK_SUBMIT_OPTS - "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@" - fi -} - -# Copy restore-TTY-on-exit functions from Scala script so spark-shell exits properly even in -# binary distribution of Spark where Scala is not installed -exit_status=127 -saved_stty="" - -# restore stty settings (echo in particular) -function restoreSttySettings() { - stty $saved_stty - saved_stty="" -} - -function onExit() { - if [[ "$saved_stty" != "" ]]; then - restoreSttySettings - fi - exit $exit_status -} - -# to reenable echo if we are interrupted before completing. -trap onExit INT - -# save terminal settings -saved_stty=$(stty -g 2>/dev/null) -# clear on error so we don't later try to restore them -if [[ ! $? ]]; then - saved_stty="" -fi - -main "$@" - -# record the exit status lest it be overwritten: -# then reenable echo and propagate the code. -exit_status=$? -onExit - diff --git a/image_content/config/spark/opt/spark/bin/spark-shell.cmd b/image_content/config/spark/opt/spark/bin/spark-shell.cmd deleted file mode 100644 index 8e670f0..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-shell.cmd +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This is the entry point for running Spark shell. To avoid polluting the -rem environment, it just launches a new cmd to do the real work. - -cmd /V /E /C "%~dp0spark-shell2.cmd" %* diff --git a/image_content/config/spark/opt/spark/bin/spark-shell2.cmd b/image_content/config/spark/opt/spark/bin/spark-shell2.cmd deleted file mode 100644 index 7ebfe58..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-shell2.cmd +++ /dev/null @@ -1,37 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem Figure out where the Spark framework is installed -call "%~dp0find-spark-home.cmd" - -set _SPARK_CMD_USAGE=Usage: .\bin\spark-shell.cmd [options] - -rem SPARK-4161: scala does not assume use of the java classpath, -rem so we need to add the "-Dscala.usejavacp=true" flag manually. We -rem do this specifically for the Spark shell because the scala REPL -rem has its own class loader, and any additional classpath specified -rem through spark.driver.extraClassPath is not automatically propagated. -if "x%SPARK_SUBMIT_OPTS%"=="x" ( - set SPARK_SUBMIT_OPTS=-Dscala.usejavacp=true - goto run_shell -) -set SPARK_SUBMIT_OPTS="%SPARK_SUBMIT_OPTS% -Dscala.usejavacp=true" - -:run_shell -"%SPARK_HOME%\bin\spark-submit2.cmd" --class org.apache.spark.repl.Main --name "Spark shell" %* diff --git a/image_content/config/spark/opt/spark/bin/spark-sql b/image_content/config/spark/opt/spark/bin/spark-sql deleted file mode 100755 index b08b944..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-sql +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -export _SPARK_CMD_USAGE="Usage: ./bin/spark-sql [options] [cli option]" -exec "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver "$@" diff --git a/image_content/config/spark/opt/spark/bin/spark-submit b/image_content/config/spark/opt/spark/bin/spark-submit deleted file mode 100755 index 4e9d361..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-submit +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -# disable randomized hash for string in Python 3.3+ -export PYTHONHASHSEED=0 - -exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "$@" diff --git a/image_content/config/spark/opt/spark/bin/spark-submit.cmd b/image_content/config/spark/opt/spark/bin/spark-submit.cmd deleted file mode 100644 index 0a06736..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-submit.cmd +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This is the entry point for running Spark submit. To avoid polluting the -rem environment, it just launches a new cmd to do the real work. - -cmd /V /E /C "%~dp0spark-submit2.cmd" %* diff --git a/image_content/config/spark/opt/spark/bin/spark-submit2.cmd b/image_content/config/spark/opt/spark/bin/spark-submit2.cmd deleted file mode 100644 index 58d6ed3..0000000 --- a/image_content/config/spark/opt/spark/bin/spark-submit2.cmd +++ /dev/null @@ -1,27 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This is the entry point for running Spark submit. To avoid polluting the -rem environment, it just launches a new cmd to do the real work. - -rem disable randomized hash for string in Python 3.3+ -set PYTHONHASHSEED=0 - -set CLASS=org.apache.spark.deploy.SparkSubmit -"%~dp0spark-class2.cmd" %CLASS% %* diff --git a/image_content/config/spark/opt/spark/bin/sparkR b/image_content/config/spark/opt/spark/bin/sparkR deleted file mode 100755 index 29ab10d..0000000 --- a/image_content/config/spark/opt/spark/bin/sparkR +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -if [ -z "${SPARK_HOME}" ]; then - source "$(dirname "$0")"/find-spark-home -fi - -source "${SPARK_HOME}"/bin/load-spark-env.sh -export _SPARK_CMD_USAGE="Usage: ./bin/sparkR [options]" -exec "${SPARK_HOME}"/bin/spark-submit sparkr-shell-main "$@" diff --git a/image_content/config/spark/opt/spark/bin/sparkR.cmd b/image_content/config/spark/opt/spark/bin/sparkR.cmd deleted file mode 100644 index a96a714..0000000 --- a/image_content/config/spark/opt/spark/bin/sparkR.cmd +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem This is the entry point for running SparkR. To avoid polluting the -rem environment, it just launches a new cmd to do the real work. - -cmd /V /E /C "%~dp0sparkR2.cmd" %* diff --git a/image_content/config/spark/opt/spark/bin/sparkR2.cmd b/image_content/config/spark/opt/spark/bin/sparkR2.cmd deleted file mode 100644 index fd7187c..0000000 --- a/image_content/config/spark/opt/spark/bin/sparkR2.cmd +++ /dev/null @@ -1,26 +0,0 @@ -@echo off - -rem -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. -rem - -rem Figure out where the Spark framework is installed -call "%~dp0find-spark-home.cmd" - -call "%SPARK_HOME%\bin\load-spark-env.cmd" - - -call "%SPARK_HOME%\bin\spark-submit2.cmd" sparkr-shell-main %* diff --git a/image_content/config/spark/opt/spark/conf/docker.properties.template b/image_content/config/spark/opt/spark/conf/docker.properties.template deleted file mode 100644 index 55cb094..0000000 --- a/image_content/config/spark/opt/spark/conf/docker.properties.template +++ /dev/null @@ -1,20 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -spark.mesos.executor.docker.image: -spark.mesos.executor.docker.volumes: /usr/local/lib:/host/usr/local/lib:ro -spark.mesos.executor.home: /opt/spark diff --git a/image_content/config/spark/opt/spark/conf/fairscheduler.xml.template b/image_content/config/spark/opt/spark/conf/fairscheduler.xml.template deleted file mode 100644 index 385b2e7..0000000 --- a/image_content/config/spark/opt/spark/conf/fairscheduler.xml.template +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - FAIR - 1 - 2 - - - FIFO - 2 - 3 - - diff --git a/image_content/config/spark/opt/spark/conf/log4j.properties b/image_content/config/spark/opt/spark/conf/log4j.properties deleted file mode 100644 index 2039ec3..0000000 --- a/image_content/config/spark/opt/spark/conf/log4j.properties +++ /dev/null @@ -1,40 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Set everything to be logged to the console -log4j.rootCategory=WARN, console -log4j.appender.console=org.apache.log4j.ConsoleAppender -log4j.appender.console.target=System.err -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n - -# Set the default spark-shell log level to WARN. When running the spark-shell, the -# log level for this class is used to overwrite the root logger's log level, so that -# the user can have different defaults for the shell and regular Spark apps. -log4j.logger.org.apache.spark.repl.Main=WARN - -# Settings to quiet third party logs that are too verbose -log4j.logger.org.spark_project.jetty=WARN -log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR -log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN -log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN -log4j.logger.org.apache.parquet=ERROR -log4j.logger.parquet=ERROR - -# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support -log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL -log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR diff --git a/image_content/config/spark/opt/spark/conf/log4j.properties.template b/image_content/config/spark/opt/spark/conf/log4j.properties.template deleted file mode 100644 index ec1aa18..0000000 --- a/image_content/config/spark/opt/spark/conf/log4j.properties.template +++ /dev/null @@ -1,40 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Set everything to be logged to the console -log4j.rootCategory=INFO, console -log4j.appender.console=org.apache.log4j.ConsoleAppender -log4j.appender.console.target=System.err -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n - -# Set the default spark-shell log level to WARN. When running the spark-shell, the -# log level for this class is used to overwrite the root logger's log level, so that -# the user can have different defaults for the shell and regular Spark apps. -log4j.logger.org.apache.spark.repl.Main=WARN - -# Settings to quiet third party logs that are too verbose -log4j.logger.org.spark_project.jetty=WARN -log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR -log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO -log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO -log4j.logger.org.apache.parquet=ERROR -log4j.logger.parquet=ERROR - -# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support -log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL -log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR diff --git a/image_content/config/spark/opt/spark/conf/metrics.properties.template b/image_content/config/spark/opt/spark/conf/metrics.properties.template deleted file mode 100644 index aeb76c9..0000000 --- a/image_content/config/spark/opt/spark/conf/metrics.properties.template +++ /dev/null @@ -1,170 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# syntax: [instance].sink|source.[name].[options]=[value] - -# This file configures Spark's internal metrics system. The metrics system is -# divided into instances which correspond to internal components. -# Each instance can be configured to report its metrics to one or more sinks. -# Accepted values for [instance] are "master", "worker", "executor", "driver", -# and "applications". A wildcard "*" can be used as an instance name, in -# which case all instances will inherit the supplied property. -# -# Within an instance, a "source" specifies a particular set of grouped metrics. -# there are two kinds of sources: -# 1. Spark internal sources, like MasterSource, WorkerSource, etc, which will -# collect a Spark component's internal state. Each instance is paired with a -# Spark source that is added automatically. -# 2. Common sources, like JvmSource, which will collect low level state. -# These can be added through configuration options and are then loaded -# using reflection. -# -# A "sink" specifies where metrics are delivered to. Each instance can be -# assigned one or more sinks. -# -# The sink|source field specifies whether the property relates to a sink or -# source. -# -# The [name] field specifies the name of source or sink. -# -# The [options] field is the specific property of this source or sink. The -# source or sink is responsible for parsing this property. -# -# Notes: -# 1. To add a new sink, set the "class" option to a fully qualified class -# name (see examples below). -# 2. Some sinks involve a polling period. The minimum allowed polling period -# is 1 second. -# 3. Wildcard properties can be overridden by more specific properties. -# For example, master.sink.console.period takes precedence over -# *.sink.console.period. -# 4. A metrics specific configuration -# "spark.metrics.conf=${SPARK_HOME}/conf/metrics.properties" should be -# added to Java properties using -Dspark.metrics.conf=xxx if you want to -# customize metrics system. You can also put the file in ${SPARK_HOME}/conf -# and it will be loaded automatically. -# 5. The MetricsServlet sink is added by default as a sink in the master, -# worker and driver, and you can send HTTP requests to the "/metrics/json" -# endpoint to get a snapshot of all the registered metrics in JSON format. -# For master, requests to the "/metrics/master/json" and -# "/metrics/applications/json" endpoints can be sent separately to get -# metrics snapshots of the master instance and applications. This -# MetricsServlet does not have to be configured. - -## List of available common sources and their properties. - -# org.apache.spark.metrics.source.JvmSource -# Note: Currently, JvmSource is the only available common source. -# It can be added to an instance by setting the "class" option to its -# fully qualified class name (see examples below). - -## List of available sinks and their properties. - -# org.apache.spark.metrics.sink.ConsoleSink -# Name: Default: Description: -# period 10 Poll period -# unit seconds Unit of the poll period - -# org.apache.spark.metrics.sink.CSVSink -# Name: Default: Description: -# period 10 Poll period -# unit seconds Unit of the poll period -# directory /tmp Where to store CSV files - -# org.apache.spark.metrics.sink.GangliaSink -# Name: Default: Description: -# host NONE Hostname or multicast group of the Ganglia server, -# must be set -# port NONE Port of the Ganglia server(s), must be set -# period 10 Poll period -# unit seconds Unit of the poll period -# ttl 1 TTL of messages sent by Ganglia -# dmax 0 Lifetime in seconds of metrics (0 never expired) -# mode multicast Ganglia network mode ('unicast' or 'multicast') - -# org.apache.spark.metrics.sink.JmxSink - -# org.apache.spark.metrics.sink.MetricsServlet -# Name: Default: Description: -# path VARIES* Path prefix from the web server root -# sample false Whether to show entire set of samples for histograms -# ('false' or 'true') -# -# * Default path is /metrics/json for all instances except the master. The -# master has two paths: -# /metrics/applications/json # App information -# /metrics/master/json # Master information - -# org.apache.spark.metrics.sink.GraphiteSink -# Name: Default: Description: -# host NONE Hostname of the Graphite server, must be set -# port NONE Port of the Graphite server, must be set -# period 10 Poll period -# unit seconds Unit of the poll period -# prefix EMPTY STRING Prefix to prepend to every metric's name -# protocol tcp Protocol ("tcp" or "udp") to use - -## Examples -# Enable JmxSink for all instances by class name -#*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink - -# Enable ConsoleSink for all instances by class name -#*.sink.console.class=org.apache.spark.metrics.sink.ConsoleSink - -# Polling period for the ConsoleSink -#*.sink.console.period=10 -# Unit of the polling period for the ConsoleSink -#*.sink.console.unit=seconds - -# Polling period for the ConsoleSink specific for the master instance -#master.sink.console.period=15 -# Unit of the polling period for the ConsoleSink specific for the master -# instance -#master.sink.console.unit=seconds - -# Enable CsvSink for all instances by class name -#*.sink.csv.class=org.apache.spark.metrics.sink.CsvSink - -# Polling period for the CsvSink -#*.sink.csv.period=1 -# Unit of the polling period for the CsvSink -#*.sink.csv.unit=minutes - -# Polling directory for CsvSink -#*.sink.csv.directory=/tmp/ - -# Polling period for the CsvSink specific for the worker instance -#worker.sink.csv.period=10 -# Unit of the polling period for the CsvSink specific for the worker instance -#worker.sink.csv.unit=minutes - -# Enable Slf4jSink for all instances by class name -#*.sink.slf4j.class=org.apache.spark.metrics.sink.Slf4jSink - -# Polling period for the Slf4JSink -#*.sink.slf4j.period=1 -# Unit of the polling period for the Slf4jSink -#*.sink.slf4j.unit=minutes - -# Enable JvmSource for instance master, worker, driver and executor -#master.source.jvm.class=org.apache.spark.metrics.source.JvmSource - -#worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource - -#driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource - -#executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource diff --git a/image_content/config/spark/opt/spark/conf/slaves b/image_content/config/spark/opt/spark/conf/slaves deleted file mode 100644 index 60982dc..0000000 --- a/image_content/config/spark/opt/spark/conf/slaves +++ /dev/null @@ -1,19 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# A Spark Worker will be started on each of the machines listed below. -st9-ape-ionosphere2c-2 diff --git a/image_content/config/spark/opt/spark/conf/slaves.template b/image_content/config/spark/opt/spark/conf/slaves.template deleted file mode 100644 index be42a63..0000000 --- a/image_content/config/spark/opt/spark/conf/slaves.template +++ /dev/null @@ -1,19 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# A Spark Worker will be started on each of the machines listed below. -localhost \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/conf/spark-defaults.conf b/image_content/config/spark/opt/spark/conf/spark-defaults.conf deleted file mode 100644 index 251ea92..0000000 --- a/image_content/config/spark/opt/spark/conf/spark-defaults.conf +++ /dev/null @@ -1,65 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# -# Default system properties included when running spark-submit. -# This is useful for setting default environmental settings. -# Example: -# spark.master spark://master:7077 -# spark.eventLog.enabled true -# spark.eventLog.dir hdfs://namenode:8021/directory -# spark.serializer org.apache.spark.serializer.KryoSerializer -# spark.driver.memory 5g -# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" -spark.serializer org.apache.spark.serializer.KryoSerializer -spark.driver.memory 2g -spark.executor.memory 2g -spark.executor.cores 4 -spark.task.cpus 2 -spark.task.maxFailures 2 -spark.cores.max 12 -spark.local.dir /data/spark -spark.dynamicAllocation.maxExecutors 3 -spark.dynamicAllocation.executorIdleTimeout 240s -spark.dynamicAllocation.cachedExecutorIdleTimeout 3600s -spark.io.compression.codec lzf -# spark.speculation true -spark.shuffle.manager sort -spark.dynamicAllocation.enabled true -spark.shuffle.service.enabled true -spark.shuffle.compress true -spark.shuffle.spill.compress true -# spark.executor.extraClassPath /usr/lib/hadoop/lib/hadoop-lzo.jar:/etc/hbase/conf #:/opt/hdfs/jars/* -# spark.driver.extraClassPath /usr/lib/hadoop/lib/hadoop-lzo.jar:/etc/hbase/conf #:/opt/hdfs/jars/* -spark.ui.showConsoleProgress false -spark.streaming.receiver.writeAheadLog.enable false -spark.streaming.unpersist true -spark.streaming.stopGracefullyOnShutdown false -spark.streaming.ui.retainedBatches 10 -spark.ui.retainedJobs 10 -spark.ui.retainedStages 10 -spark.worker.ui.retainedExecutors 10 -spark.worker.ui.retainedDrivers 10 -spark.sql.ui.retainedExecutions 10 -spark.worker.cleanup.enabled=true -spark.worker.cleanup.appDataTtl=43200 -spark.cleaner.ttl=43200 -spark.eventLog.enabled false -# spark.eventLog.dir hdfs://st9-ape-ionosphere2m.ncfu.net:8020/spark -# spark.history.fs.logDirectory hdfs://st9-ape-ionosphere2m.ncfu.net:8020/spark -# spark.jars /usr/lib/hbase/hbase-client.jar,/usr/lib/hbase/hbase-server.jar,/usr/lib/hbase/hbase-common.jar,/usr/lib/hbase/hbase-protocol.jar,/usr/lib/hbase/hbase-hadoop-compat.jar,/usr/lib/hadoop/hadoop-annotations.jar,/usr/lib/hbase/lib/htrace-core.jar,/etc/hbase/conf/hbase-site.xml -spark.executor.extraJavaOptions=-Dlog4j.configuration=file:///opt/spark/conf/log4j.properties -spark.driver.extraJavaOptions=-Dlog4j.configuration=file:///opt/spark/conf/log4j.properties - diff --git a/image_content/config/spark/opt/spark/conf/spark-defaults.conf.template b/image_content/config/spark/opt/spark/conf/spark-defaults.conf.template deleted file mode 100644 index 19cba6e..0000000 --- a/image_content/config/spark/opt/spark/conf/spark-defaults.conf.template +++ /dev/null @@ -1,27 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# Default system properties included when running spark-submit. -# This is useful for setting default environmental settings. - -# Example: -# spark.master spark://master:7077 -# spark.eventLog.enabled true -# spark.eventLog.dir hdfs://namenode:8021/directory -# spark.serializer org.apache.spark.serializer.KryoSerializer -# spark.driver.memory 5g -# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" diff --git a/image_content/config/spark/opt/spark/conf/spark-env.sh b/image_content/config/spark/opt/spark/conf/spark-env.sh deleted file mode 100755 index 541d14a..0000000 --- a/image_content/config/spark/opt/spark/conf/spark-env.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# This file is sourced when running various Spark programs. -# Copy it as spark-env.sh and edit that to configure Spark for your site. - -# Options read when launching programs locally with -# ./bin/run-example or ./bin/spark-submit -# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files -# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node -# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program -# - SPARK_CLASSPATH, default classpath entries to append - -# Options read by executors and drivers running inside the cluster -# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node -# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program -# - SPARK_CLASSPATH, default classpath entries to append -# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data -# - MESOS_NATIVE_JAVA_LIBRARY, to point to your libmesos.so if you use Mesos - -# Options read in YARN client mode -# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files -# - SPARK_EXECUTOR_INSTANCES, Number of executors to start (Default: 2) -# - SPARK_EXECUTOR_CORES, Number of cores for the executors (Default: 1). -# - SPARK_EXECUTOR_MEMORY, Memory per Executor (e.g. 1000M, 2G) (Default: 1G) -# - SPARK_DRIVER_MEMORY, Memory for Driver (e.g. 1000M, 2G) (Default: 1G) - -# Options for the daemons used in the standalone deploy mode -# - SPARK_MASTER_HOST, to bind the master to a different IP address or hostname -# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master -# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y") -# - SPARK_WORKER_CORES, to set the number of cores to use on this machine -# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g) -# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker -# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node -# - SPARK_WORKER_DIR, to set the working directory of worker processes -# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y") -# - SPARK_DAEMON_MEMORY, to allocate to the master, worker and history server themselves (default: 1g). -# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y") -# - SPARK_SHUFFLE_OPTS, to set config properties only for the external shuffle service (e.g. "-Dx=y") -# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y") -# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers - -# SPARK_MASTER_HOST=st9-ape-ionosphere2c-1.ncfu.net - -# Generic options for the daemons used in the standalone deploy mode -# - SPARK_CONF_DIR Alternate conf dir. (Default: ${SPARK_HOME}/conf) -# - SPARK_LOG_DIR Where log files are stored. (Default: ${SPARK_HOME}/logs) -# - SPARK_PID_DIR Where the pid file is stored. (Default: /tmp) -# - SPARK_IDENT_STRING A string representing this instance of spark. (Default: $USER) -# - SPARK_NICENESS The scheduling priority for daemons. (Default: 0) -# - SPARK_NO_DAEMONIZE Run the proposed command in the foreground. It will not output a PID file. - -# HADOOP_CONF_DIR=/etc/hadoop/conf.ion -# LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native -SPARK_DIST_CLASSPATH=$(hadoop classpath):/opt/spark/jars/* #:/usr/share/java/* diff --git a/image_content/config/spark/opt/spark/conf/spark-env.sh.template b/image_content/config/spark/opt/spark/conf/spark-env.sh.template deleted file mode 100755 index 5c1e876..0000000 --- a/image_content/config/spark/opt/spark/conf/spark-env.sh.template +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env bash - -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -# This file is sourced when running various Spark programs. -# Copy it as spark-env.sh and edit that to configure Spark for your site. - -# Options read when launching programs locally with -# ./bin/run-example or ./bin/spark-submit -# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files -# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node -# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program -# - SPARK_CLASSPATH, default classpath entries to append - -# Options read by executors and drivers running inside the cluster -# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node -# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program -# - SPARK_CLASSPATH, default classpath entries to append -# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data -# - MESOS_NATIVE_JAVA_LIBRARY, to point to your libmesos.so if you use Mesos - -# Options read in YARN client mode -# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files -# - SPARK_EXECUTOR_INSTANCES, Number of executors to start (Default: 2) -# - SPARK_EXECUTOR_CORES, Number of cores for the executors (Default: 1). -# - SPARK_EXECUTOR_MEMORY, Memory per Executor (e.g. 1000M, 2G) (Default: 1G) -# - SPARK_DRIVER_MEMORY, Memory for Driver (e.g. 1000M, 2G) (Default: 1G) - -# Options for the daemons used in the standalone deploy mode -# - SPARK_MASTER_HOST, to bind the master to a different IP address or hostname -# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master -# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y") -# - SPARK_WORKER_CORES, to set the number of cores to use on this machine -# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g) -# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker -# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node -# - SPARK_WORKER_DIR, to set the working directory of worker processes -# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y") -# - SPARK_DAEMON_MEMORY, to allocate to the master, worker and history server themselves (default: 1g). -# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y") -# - SPARK_SHUFFLE_OPTS, to set config properties only for the external shuffle service (e.g. "-Dx=y") -# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y") -# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers - -# Generic options for the daemons used in the standalone deploy mode -# - SPARK_CONF_DIR Alternate conf dir. (Default: ${SPARK_HOME}/conf) -# - SPARK_LOG_DIR Where log files are stored. (Default: ${SPARK_HOME}/logs) -# - SPARK_PID_DIR Where the pid file is stored. (Default: /tmp) -# - SPARK_IDENT_STRING A string representing this instance of spark. (Default: $USER) -# - SPARK_NICENESS The scheduling priority for daemons. (Default: 0) -# - SPARK_NO_DAEMONIZE Run the proposed command in the foreground. It will not output a PID file. diff --git a/image_content/config/spark/opt/spark/data/graphx/followers.txt b/image_content/config/spark/opt/spark/data/graphx/followers.txt deleted file mode 100644 index 7bb8e90..0000000 --- a/image_content/config/spark/opt/spark/data/graphx/followers.txt +++ /dev/null @@ -1,8 +0,0 @@ -2 1 -4 1 -1 2 -6 3 -7 3 -7 6 -6 7 -3 7 diff --git a/image_content/config/spark/opt/spark/data/graphx/users.txt b/image_content/config/spark/opt/spark/data/graphx/users.txt deleted file mode 100644 index 982d19d..0000000 --- a/image_content/config/spark/opt/spark/data/graphx/users.txt +++ /dev/null @@ -1,7 +0,0 @@ -1,BarackObama,Barack Obama -2,ladygaga,Goddess of Love -3,jeresig,John Resig -4,justinbieber,Justin Bieber -6,matei_zaharia,Matei Zaharia -7,odersky,Martin Odersky -8,anonsys diff --git a/image_content/config/spark/opt/spark/data/mllib/als/sample_movielens_ratings.txt b/image_content/config/spark/opt/spark/data/mllib/als/sample_movielens_ratings.txt deleted file mode 100644 index 0889142..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/als/sample_movielens_ratings.txt +++ /dev/null @@ -1,1501 +0,0 @@ -0::2::3::1424380312 -0::3::1::1424380312 -0::5::2::1424380312 -0::9::4::1424380312 -0::11::1::1424380312 -0::12::2::1424380312 -0::15::1::1424380312 -0::17::1::1424380312 -0::19::1::1424380312 -0::21::1::1424380312 -0::23::1::1424380312 -0::26::3::1424380312 -0::27::1::1424380312 -0::28::1::1424380312 -0::29::1::1424380312 -0::30::1::1424380312 -0::31::1::1424380312 -0::34::1::1424380312 -0::37::1::1424380312 -0::41::2::1424380312 -0::44::1::1424380312 -0::45::2::1424380312 -0::46::1::1424380312 -0::47::1::1424380312 -0::48::1::1424380312 -0::50::1::1424380312 -0::51::1::1424380312 -0::54::1::1424380312 -0::55::1::1424380312 -0::59::2::1424380312 -0::61::2::1424380312 -0::64::1::1424380312 -0::67::1::1424380312 -0::68::1::1424380312 -0::69::1::1424380312 -0::71::1::1424380312 -0::72::1::1424380312 -0::77::2::1424380312 -0::79::1::1424380312 -0::83::1::1424380312 -0::87::1::1424380312 -0::89::2::1424380312 -0::91::3::1424380312 -0::92::4::1424380312 -0::94::1::1424380312 -0::95::2::1424380312 -0::96::1::1424380312 -0::98::1::1424380312 -0::99::1::1424380312 -1::2::2::1424380312 -1::3::1::1424380312 -1::4::2::1424380312 -1::6::1::1424380312 -1::9::3::1424380312 -1::12::1::1424380312 -1::13::1::1424380312 -1::14::1::1424380312 -1::16::1::1424380312 -1::19::1::1424380312 -1::21::3::1424380312 -1::27::1::1424380312 -1::28::3::1424380312 -1::33::1::1424380312 -1::36::2::1424380312 -1::37::1::1424380312 -1::40::1::1424380312 -1::41::2::1424380312 -1::43::1::1424380312 -1::44::1::1424380312 -1::47::1::1424380312 -1::50::1::1424380312 -1::54::1::1424380312 -1::56::2::1424380312 -1::57::1::1424380312 -1::58::1::1424380312 -1::60::1::1424380312 -1::62::4::1424380312 -1::63::1::1424380312 -1::67::1::1424380312 -1::68::4::1424380312 -1::70::2::1424380312 -1::72::1::1424380312 -1::73::1::1424380312 -1::74::2::1424380312 -1::76::1::1424380312 -1::77::3::1424380312 -1::78::1::1424380312 -1::81::1::1424380312 -1::82::1::1424380312 -1::85::3::1424380312 -1::86::2::1424380312 -1::88::2::1424380312 -1::91::1::1424380312 -1::92::2::1424380312 -1::93::1::1424380312 -1::94::2::1424380312 -1::96::1::1424380312 -1::97::1::1424380312 -2::4::3::1424380312 -2::6::1::1424380312 -2::8::5::1424380312 -2::9::1::1424380312 -2::10::1::1424380312 -2::12::3::1424380312 -2::13::1::1424380312 -2::15::2::1424380312 -2::18::2::1424380312 -2::19::4::1424380312 -2::22::1::1424380312 -2::26::1::1424380312 -2::28::1::1424380312 -2::34::4::1424380312 -2::35::1::1424380312 -2::37::5::1424380312 -2::38::1::1424380312 -2::39::5::1424380312 -2::40::4::1424380312 -2::47::1::1424380312 -2::50::1::1424380312 -2::52::2::1424380312 -2::54::1::1424380312 -2::55::1::1424380312 -2::57::2::1424380312 -2::58::2::1424380312 -2::59::1::1424380312 -2::61::1::1424380312 -2::62::1::1424380312 -2::64::1::1424380312 -2::65::1::1424380312 -2::66::3::1424380312 -2::68::1::1424380312 -2::71::3::1424380312 -2::76::1::1424380312 -2::77::1::1424380312 -2::78::1::1424380312 -2::80::1::1424380312 -2::83::5::1424380312 -2::85::1::1424380312 -2::87::2::1424380312 -2::88::1::1424380312 -2::89::4::1424380312 -2::90::1::1424380312 -2::92::4::1424380312 -2::93::5::1424380312 -3::0::1::1424380312 -3::1::1::1424380312 -3::2::1::1424380312 -3::7::3::1424380312 -3::8::3::1424380312 -3::9::1::1424380312 -3::14::1::1424380312 -3::15::1::1424380312 -3::16::1::1424380312 -3::18::4::1424380312 -3::19::1::1424380312 -3::24::3::1424380312 -3::26::1::1424380312 -3::29::3::1424380312 -3::33::1::1424380312 -3::34::3::1424380312 -3::35::1::1424380312 -3::36::3::1424380312 -3::37::1::1424380312 -3::38::2::1424380312 -3::43::1::1424380312 -3::44::1::1424380312 -3::46::1::1424380312 -3::47::1::1424380312 -3::51::5::1424380312 -3::52::3::1424380312 -3::56::1::1424380312 -3::58::1::1424380312 -3::60::3::1424380312 -3::62::1::1424380312 -3::65::2::1424380312 -3::66::1::1424380312 -3::67::1::1424380312 -3::68::2::1424380312 -3::70::1::1424380312 -3::72::2::1424380312 -3::76::3::1424380312 -3::79::3::1424380312 -3::80::4::1424380312 -3::81::1::1424380312 -3::83::1::1424380312 -3::84::1::1424380312 -3::86::1::1424380312 -3::87::2::1424380312 -3::88::4::1424380312 -3::89::1::1424380312 -3::91::1::1424380312 -3::94::3::1424380312 -4::1::1::1424380312 -4::6::1::1424380312 -4::8::1::1424380312 -4::9::1::1424380312 -4::10::1::1424380312 -4::11::1::1424380312 -4::12::1::1424380312 -4::13::1::1424380312 -4::14::2::1424380312 -4::15::1::1424380312 -4::17::1::1424380312 -4::20::1::1424380312 -4::22::1::1424380312 -4::23::1::1424380312 -4::24::1::1424380312 -4::29::4::1424380312 -4::30::1::1424380312 -4::31::1::1424380312 -4::34::1::1424380312 -4::35::1::1424380312 -4::36::1::1424380312 -4::39::2::1424380312 -4::40::3::1424380312 -4::41::4::1424380312 -4::43::2::1424380312 -4::44::1::1424380312 -4::45::1::1424380312 -4::46::1::1424380312 -4::47::1::1424380312 -4::49::2::1424380312 -4::50::1::1424380312 -4::51::1::1424380312 -4::52::4::1424380312 -4::54::1::1424380312 -4::55::1::1424380312 -4::60::3::1424380312 -4::61::1::1424380312 -4::62::4::1424380312 -4::63::3::1424380312 -4::65::1::1424380312 -4::67::2::1424380312 -4::69::1::1424380312 -4::70::4::1424380312 -4::71::1::1424380312 -4::73::1::1424380312 -4::78::1::1424380312 -4::84::1::1424380312 -4::85::1::1424380312 -4::87::3::1424380312 -4::88::3::1424380312 -4::89::2::1424380312 -4::96::1::1424380312 -4::97::1::1424380312 -4::98::1::1424380312 -4::99::1::1424380312 -5::0::1::1424380312 -5::1::1::1424380312 -5::4::1::1424380312 -5::5::1::1424380312 -5::8::1::1424380312 -5::9::3::1424380312 -5::10::2::1424380312 -5::13::3::1424380312 -5::15::1::1424380312 -5::19::1::1424380312 -5::20::3::1424380312 -5::21::2::1424380312 -5::23::3::1424380312 -5::27::1::1424380312 -5::28::1::1424380312 -5::29::1::1424380312 -5::31::1::1424380312 -5::36::3::1424380312 -5::38::2::1424380312 -5::39::1::1424380312 -5::42::1::1424380312 -5::48::3::1424380312 -5::49::4::1424380312 -5::50::3::1424380312 -5::51::1::1424380312 -5::52::1::1424380312 -5::54::1::1424380312 -5::55::5::1424380312 -5::56::3::1424380312 -5::58::1::1424380312 -5::60::1::1424380312 -5::61::1::1424380312 -5::64::3::1424380312 -5::65::2::1424380312 -5::68::4::1424380312 -5::70::1::1424380312 -5::71::1::1424380312 -5::72::1::1424380312 -5::74::1::1424380312 -5::79::1::1424380312 -5::81::2::1424380312 -5::84::1::1424380312 -5::85::1::1424380312 -5::86::1::1424380312 -5::88::1::1424380312 -5::90::4::1424380312 -5::91::2::1424380312 -5::95::2::1424380312 -5::99::1::1424380312 -6::0::1::1424380312 -6::1::1::1424380312 -6::2::3::1424380312 -6::5::1::1424380312 -6::6::1::1424380312 -6::9::1::1424380312 -6::10::1::1424380312 -6::15::2::1424380312 -6::16::2::1424380312 -6::17::1::1424380312 -6::18::1::1424380312 -6::20::1::1424380312 -6::21::1::1424380312 -6::22::1::1424380312 -6::24::1::1424380312 -6::25::5::1424380312 -6::26::1::1424380312 -6::28::1::1424380312 -6::30::1::1424380312 -6::33::1::1424380312 -6::38::1::1424380312 -6::39::1::1424380312 -6::43::4::1424380312 -6::44::1::1424380312 -6::45::1::1424380312 -6::48::1::1424380312 -6::49::1::1424380312 -6::50::1::1424380312 -6::53::1::1424380312 -6::54::1::1424380312 -6::55::1::1424380312 -6::56::1::1424380312 -6::58::4::1424380312 -6::59::1::1424380312 -6::60::1::1424380312 -6::61::3::1424380312 -6::63::3::1424380312 -6::66::1::1424380312 -6::67::3::1424380312 -6::68::1::1424380312 -6::69::1::1424380312 -6::71::2::1424380312 -6::73::1::1424380312 -6::75::1::1424380312 -6::77::1::1424380312 -6::79::1::1424380312 -6::81::1::1424380312 -6::84::1::1424380312 -6::85::3::1424380312 -6::86::1::1424380312 -6::87::1::1424380312 -6::88::1::1424380312 -6::89::1::1424380312 -6::91::2::1424380312 -6::94::1::1424380312 -6::95::2::1424380312 -6::96::1::1424380312 -7::1::1::1424380312 -7::2::2::1424380312 -7::3::1::1424380312 -7::4::1::1424380312 -7::7::1::1424380312 -7::10::1::1424380312 -7::11::2::1424380312 -7::14::2::1424380312 -7::15::1::1424380312 -7::16::1::1424380312 -7::18::1::1424380312 -7::21::1::1424380312 -7::22::1::1424380312 -7::23::1::1424380312 -7::25::5::1424380312 -7::26::1::1424380312 -7::29::4::1424380312 -7::30::1::1424380312 -7::31::3::1424380312 -7::32::1::1424380312 -7::33::1::1424380312 -7::35::1::1424380312 -7::37::2::1424380312 -7::39::3::1424380312 -7::40::2::1424380312 -7::42::2::1424380312 -7::44::1::1424380312 -7::45::2::1424380312 -7::47::4::1424380312 -7::48::1::1424380312 -7::49::1::1424380312 -7::53::1::1424380312 -7::54::1::1424380312 -7::55::1::1424380312 -7::56::1::1424380312 -7::59::1::1424380312 -7::61::2::1424380312 -7::62::3::1424380312 -7::63::2::1424380312 -7::66::1::1424380312 -7::67::3::1424380312 -7::74::1::1424380312 -7::75::1::1424380312 -7::76::3::1424380312 -7::77::1::1424380312 -7::81::1::1424380312 -7::82::1::1424380312 -7::84::2::1424380312 -7::85::4::1424380312 -7::86::1::1424380312 -7::92::2::1424380312 -7::96::1::1424380312 -7::97::1::1424380312 -7::98::1::1424380312 -8::0::1::1424380312 -8::2::4::1424380312 -8::3::2::1424380312 -8::4::2::1424380312 -8::5::1::1424380312 -8::7::1::1424380312 -8::9::1::1424380312 -8::11::1::1424380312 -8::15::1::1424380312 -8::18::1::1424380312 -8::19::1::1424380312 -8::21::1::1424380312 -8::29::5::1424380312 -8::31::3::1424380312 -8::33::1::1424380312 -8::35::1::1424380312 -8::36::1::1424380312 -8::40::2::1424380312 -8::44::1::1424380312 -8::45::1::1424380312 -8::50::1::1424380312 -8::51::1::1424380312 -8::52::5::1424380312 -8::53::5::1424380312 -8::54::1::1424380312 -8::55::1::1424380312 -8::56::1::1424380312 -8::58::4::1424380312 -8::60::3::1424380312 -8::62::4::1424380312 -8::64::1::1424380312 -8::67::3::1424380312 -8::69::1::1424380312 -8::71::1::1424380312 -8::72::3::1424380312 -8::77::3::1424380312 -8::78::1::1424380312 -8::79::1::1424380312 -8::83::1::1424380312 -8::85::5::1424380312 -8::86::1::1424380312 -8::88::1::1424380312 -8::90::1::1424380312 -8::92::2::1424380312 -8::95::4::1424380312 -8::96::3::1424380312 -8::97::1::1424380312 -8::98::1::1424380312 -8::99::1::1424380312 -9::2::3::1424380312 -9::3::1::1424380312 -9::4::1::1424380312 -9::5::1::1424380312 -9::6::1::1424380312 -9::7::5::1424380312 -9::9::1::1424380312 -9::12::1::1424380312 -9::14::3::1424380312 -9::15::1::1424380312 -9::19::1::1424380312 -9::21::1::1424380312 -9::22::1::1424380312 -9::24::1::1424380312 -9::25::1::1424380312 -9::26::1::1424380312 -9::30::3::1424380312 -9::32::4::1424380312 -9::35::2::1424380312 -9::36::2::1424380312 -9::37::2::1424380312 -9::38::1::1424380312 -9::39::1::1424380312 -9::43::3::1424380312 -9::49::5::1424380312 -9::50::3::1424380312 -9::53::1::1424380312 -9::54::1::1424380312 -9::58::1::1424380312 -9::59::1::1424380312 -9::60::1::1424380312 -9::61::1::1424380312 -9::63::3::1424380312 -9::64::3::1424380312 -9::68::1::1424380312 -9::69::1::1424380312 -9::70::3::1424380312 -9::71::1::1424380312 -9::73::2::1424380312 -9::75::1::1424380312 -9::77::2::1424380312 -9::81::2::1424380312 -9::82::1::1424380312 -9::83::1::1424380312 -9::84::1::1424380312 -9::86::1::1424380312 -9::87::4::1424380312 -9::88::1::1424380312 -9::90::3::1424380312 -9::94::2::1424380312 -9::95::3::1424380312 -9::97::2::1424380312 -9::98::1::1424380312 -10::0::3::1424380312 -10::2::4::1424380312 -10::4::3::1424380312 -10::7::1::1424380312 -10::8::1::1424380312 -10::10::1::1424380312 -10::13::2::1424380312 -10::14::1::1424380312 -10::16::2::1424380312 -10::17::1::1424380312 -10::18::1::1424380312 -10::21::1::1424380312 -10::22::1::1424380312 -10::24::1::1424380312 -10::25::3::1424380312 -10::28::1::1424380312 -10::35::1::1424380312 -10::36::1::1424380312 -10::37::1::1424380312 -10::38::1::1424380312 -10::39::1::1424380312 -10::40::4::1424380312 -10::41::2::1424380312 -10::42::3::1424380312 -10::43::1::1424380312 -10::49::3::1424380312 -10::50::1::1424380312 -10::51::1::1424380312 -10::52::1::1424380312 -10::55::2::1424380312 -10::56::1::1424380312 -10::58::1::1424380312 -10::63::1::1424380312 -10::66::1::1424380312 -10::67::2::1424380312 -10::68::1::1424380312 -10::75::1::1424380312 -10::77::1::1424380312 -10::79::1::1424380312 -10::86::1::1424380312 -10::89::3::1424380312 -10::90::1::1424380312 -10::97::1::1424380312 -10::98::1::1424380312 -11::0::1::1424380312 -11::6::2::1424380312 -11::9::1::1424380312 -11::10::1::1424380312 -11::11::1::1424380312 -11::12::1::1424380312 -11::13::4::1424380312 -11::16::1::1424380312 -11::18::5::1424380312 -11::19::4::1424380312 -11::20::1::1424380312 -11::21::1::1424380312 -11::22::1::1424380312 -11::23::5::1424380312 -11::25::1::1424380312 -11::27::5::1424380312 -11::30::5::1424380312 -11::32::5::1424380312 -11::35::3::1424380312 -11::36::2::1424380312 -11::37::2::1424380312 -11::38::4::1424380312 -11::39::1::1424380312 -11::40::1::1424380312 -11::41::1::1424380312 -11::43::2::1424380312 -11::45::1::1424380312 -11::47::1::1424380312 -11::48::5::1424380312 -11::50::4::1424380312 -11::51::3::1424380312 -11::59::1::1424380312 -11::61::1::1424380312 -11::62::1::1424380312 -11::64::1::1424380312 -11::66::4::1424380312 -11::67::1::1424380312 -11::69::5::1424380312 -11::70::1::1424380312 -11::71::3::1424380312 -11::72::3::1424380312 -11::75::3::1424380312 -11::76::1::1424380312 -11::77::1::1424380312 -11::78::1::1424380312 -11::79::5::1424380312 -11::80::3::1424380312 -11::81::4::1424380312 -11::82::1::1424380312 -11::86::1::1424380312 -11::88::1::1424380312 -11::89::1::1424380312 -11::90::4::1424380312 -11::94::2::1424380312 -11::97::3::1424380312 -11::99::1::1424380312 -12::2::1::1424380312 -12::4::1::1424380312 -12::6::1::1424380312 -12::7::3::1424380312 -12::8::1::1424380312 -12::14::1::1424380312 -12::15::2::1424380312 -12::16::4::1424380312 -12::17::5::1424380312 -12::18::2::1424380312 -12::21::1::1424380312 -12::22::2::1424380312 -12::23::3::1424380312 -12::24::1::1424380312 -12::25::1::1424380312 -12::27::5::1424380312 -12::30::2::1424380312 -12::31::4::1424380312 -12::35::5::1424380312 -12::38::1::1424380312 -12::41::1::1424380312 -12::44::2::1424380312 -12::45::1::1424380312 -12::50::4::1424380312 -12::51::1::1424380312 -12::52::1::1424380312 -12::53::1::1424380312 -12::54::1::1424380312 -12::56::2::1424380312 -12::57::1::1424380312 -12::60::1::1424380312 -12::63::1::1424380312 -12::64::5::1424380312 -12::66::3::1424380312 -12::67::1::1424380312 -12::70::1::1424380312 -12::72::1::1424380312 -12::74::1::1424380312 -12::75::1::1424380312 -12::77::1::1424380312 -12::78::1::1424380312 -12::79::3::1424380312 -12::82::2::1424380312 -12::83::1::1424380312 -12::84::1::1424380312 -12::85::1::1424380312 -12::86::1::1424380312 -12::87::1::1424380312 -12::88::1::1424380312 -12::91::3::1424380312 -12::92::1::1424380312 -12::94::4::1424380312 -12::95::2::1424380312 -12::96::1::1424380312 -12::98::2::1424380312 -13::0::1::1424380312 -13::3::1::1424380312 -13::4::2::1424380312 -13::5::1::1424380312 -13::6::1::1424380312 -13::12::1::1424380312 -13::14::2::1424380312 -13::15::1::1424380312 -13::17::1::1424380312 -13::18::3::1424380312 -13::20::1::1424380312 -13::21::1::1424380312 -13::22::1::1424380312 -13::26::1::1424380312 -13::27::1::1424380312 -13::29::3::1424380312 -13::31::1::1424380312 -13::33::1::1424380312 -13::40::2::1424380312 -13::43::2::1424380312 -13::44::1::1424380312 -13::45::1::1424380312 -13::49::1::1424380312 -13::51::1::1424380312 -13::52::2::1424380312 -13::53::3::1424380312 -13::54::1::1424380312 -13::62::1::1424380312 -13::63::2::1424380312 -13::64::1::1424380312 -13::68::1::1424380312 -13::71::1::1424380312 -13::72::3::1424380312 -13::73::1::1424380312 -13::74::3::1424380312 -13::77::2::1424380312 -13::78::1::1424380312 -13::79::2::1424380312 -13::83::3::1424380312 -13::85::1::1424380312 -13::86::1::1424380312 -13::87::2::1424380312 -13::88::2::1424380312 -13::90::1::1424380312 -13::93::4::1424380312 -13::94::1::1424380312 -13::98::1::1424380312 -13::99::1::1424380312 -14::1::1::1424380312 -14::3::3::1424380312 -14::4::1::1424380312 -14::5::1::1424380312 -14::6::1::1424380312 -14::7::1::1424380312 -14::9::1::1424380312 -14::10::1::1424380312 -14::11::1::1424380312 -14::12::1::1424380312 -14::13::1::1424380312 -14::14::3::1424380312 -14::15::1::1424380312 -14::16::1::1424380312 -14::17::1::1424380312 -14::20::1::1424380312 -14::21::1::1424380312 -14::24::1::1424380312 -14::25::2::1424380312 -14::27::1::1424380312 -14::28::1::1424380312 -14::29::5::1424380312 -14::31::3::1424380312 -14::34::1::1424380312 -14::36::1::1424380312 -14::37::2::1424380312 -14::39::2::1424380312 -14::40::1::1424380312 -14::44::1::1424380312 -14::45::1::1424380312 -14::47::3::1424380312 -14::48::1::1424380312 -14::49::1::1424380312 -14::51::1::1424380312 -14::52::5::1424380312 -14::53::3::1424380312 -14::54::1::1424380312 -14::55::1::1424380312 -14::56::1::1424380312 -14::62::4::1424380312 -14::63::5::1424380312 -14::67::3::1424380312 -14::68::1::1424380312 -14::69::3::1424380312 -14::71::1::1424380312 -14::72::4::1424380312 -14::73::1::1424380312 -14::76::5::1424380312 -14::79::1::1424380312 -14::82::1::1424380312 -14::83::1::1424380312 -14::88::1::1424380312 -14::93::3::1424380312 -14::94::1::1424380312 -14::95::2::1424380312 -14::96::4::1424380312 -14::98::1::1424380312 -15::0::1::1424380312 -15::1::4::1424380312 -15::2::1::1424380312 -15::5::2::1424380312 -15::6::1::1424380312 -15::7::1::1424380312 -15::13::1::1424380312 -15::14::1::1424380312 -15::15::1::1424380312 -15::17::2::1424380312 -15::19::2::1424380312 -15::22::2::1424380312 -15::23::2::1424380312 -15::25::1::1424380312 -15::26::3::1424380312 -15::27::1::1424380312 -15::28::2::1424380312 -15::29::1::1424380312 -15::32::1::1424380312 -15::33::2::1424380312 -15::34::1::1424380312 -15::35::2::1424380312 -15::36::1::1424380312 -15::37::1::1424380312 -15::39::1::1424380312 -15::42::1::1424380312 -15::46::5::1424380312 -15::48::2::1424380312 -15::50::2::1424380312 -15::51::1::1424380312 -15::52::1::1424380312 -15::58::1::1424380312 -15::62::1::1424380312 -15::64::3::1424380312 -15::65::2::1424380312 -15::72::1::1424380312 -15::73::1::1424380312 -15::74::1::1424380312 -15::79::1::1424380312 -15::80::1::1424380312 -15::81::1::1424380312 -15::82::2::1424380312 -15::85::1::1424380312 -15::87::1::1424380312 -15::91::2::1424380312 -15::96::1::1424380312 -15::97::1::1424380312 -15::98::3::1424380312 -16::2::1::1424380312 -16::5::3::1424380312 -16::6::2::1424380312 -16::7::1::1424380312 -16::9::1::1424380312 -16::12::1::1424380312 -16::14::1::1424380312 -16::15::1::1424380312 -16::19::1::1424380312 -16::21::2::1424380312 -16::29::4::1424380312 -16::30::2::1424380312 -16::32::1::1424380312 -16::34::1::1424380312 -16::36::1::1424380312 -16::38::1::1424380312 -16::46::1::1424380312 -16::47::3::1424380312 -16::48::1::1424380312 -16::49::1::1424380312 -16::50::1::1424380312 -16::51::5::1424380312 -16::54::5::1424380312 -16::55::1::1424380312 -16::56::2::1424380312 -16::57::1::1424380312 -16::60::1::1424380312 -16::63::2::1424380312 -16::65::1::1424380312 -16::67::1::1424380312 -16::72::1::1424380312 -16::74::1::1424380312 -16::80::1::1424380312 -16::81::1::1424380312 -16::82::1::1424380312 -16::85::5::1424380312 -16::86::1::1424380312 -16::90::5::1424380312 -16::91::1::1424380312 -16::93::1::1424380312 -16::94::3::1424380312 -16::95::2::1424380312 -16::96::3::1424380312 -16::98::3::1424380312 -16::99::1::1424380312 -17::2::1::1424380312 -17::3::1::1424380312 -17::6::1::1424380312 -17::10::4::1424380312 -17::11::1::1424380312 -17::13::2::1424380312 -17::17::5::1424380312 -17::19::1::1424380312 -17::20::5::1424380312 -17::22::4::1424380312 -17::28::1::1424380312 -17::29::1::1424380312 -17::33::1::1424380312 -17::34::1::1424380312 -17::35::2::1424380312 -17::37::1::1424380312 -17::38::1::1424380312 -17::45::1::1424380312 -17::46::5::1424380312 -17::47::1::1424380312 -17::49::3::1424380312 -17::51::1::1424380312 -17::55::5::1424380312 -17::56::3::1424380312 -17::57::1::1424380312 -17::58::1::1424380312 -17::59::1::1424380312 -17::60::1::1424380312 -17::63::1::1424380312 -17::66::1::1424380312 -17::68::4::1424380312 -17::69::1::1424380312 -17::70::1::1424380312 -17::72::1::1424380312 -17::73::3::1424380312 -17::78::1::1424380312 -17::79::1::1424380312 -17::82::2::1424380312 -17::84::1::1424380312 -17::90::5::1424380312 -17::91::3::1424380312 -17::92::1::1424380312 -17::93::1::1424380312 -17::94::4::1424380312 -17::95::2::1424380312 -17::97::1::1424380312 -18::1::1::1424380312 -18::4::3::1424380312 -18::5::2::1424380312 -18::6::1::1424380312 -18::7::1::1424380312 -18::10::1::1424380312 -18::11::4::1424380312 -18::12::2::1424380312 -18::13::1::1424380312 -18::15::1::1424380312 -18::18::1::1424380312 -18::20::1::1424380312 -18::21::2::1424380312 -18::22::1::1424380312 -18::23::2::1424380312 -18::25::1::1424380312 -18::26::1::1424380312 -18::27::1::1424380312 -18::28::5::1424380312 -18::29::1::1424380312 -18::31::1::1424380312 -18::32::1::1424380312 -18::36::1::1424380312 -18::38::5::1424380312 -18::39::5::1424380312 -18::40::1::1424380312 -18::42::1::1424380312 -18::43::1::1424380312 -18::44::4::1424380312 -18::46::1::1424380312 -18::47::1::1424380312 -18::48::1::1424380312 -18::51::2::1424380312 -18::55::1::1424380312 -18::56::1::1424380312 -18::57::1::1424380312 -18::62::1::1424380312 -18::63::1::1424380312 -18::66::3::1424380312 -18::67::1::1424380312 -18::70::1::1424380312 -18::75::1::1424380312 -18::76::3::1424380312 -18::77::1::1424380312 -18::80::3::1424380312 -18::81::3::1424380312 -18::82::1::1424380312 -18::83::5::1424380312 -18::84::1::1424380312 -18::97::1::1424380312 -18::98::1::1424380312 -18::99::2::1424380312 -19::0::1::1424380312 -19::1::1::1424380312 -19::2::1::1424380312 -19::4::1::1424380312 -19::6::2::1424380312 -19::11::1::1424380312 -19::12::1::1424380312 -19::14::1::1424380312 -19::23::1::1424380312 -19::26::1::1424380312 -19::31::1::1424380312 -19::32::4::1424380312 -19::33::1::1424380312 -19::34::1::1424380312 -19::37::1::1424380312 -19::38::1::1424380312 -19::41::1::1424380312 -19::43::1::1424380312 -19::45::1::1424380312 -19::48::1::1424380312 -19::49::1::1424380312 -19::50::2::1424380312 -19::53::2::1424380312 -19::54::3::1424380312 -19::55::1::1424380312 -19::56::2::1424380312 -19::58::1::1424380312 -19::61::1::1424380312 -19::62::1::1424380312 -19::63::1::1424380312 -19::64::1::1424380312 -19::65::1::1424380312 -19::69::2::1424380312 -19::72::1::1424380312 -19::74::3::1424380312 -19::76::1::1424380312 -19::78::1::1424380312 -19::79::1::1424380312 -19::81::1::1424380312 -19::82::1::1424380312 -19::84::1::1424380312 -19::86::1::1424380312 -19::87::2::1424380312 -19::90::4::1424380312 -19::93::1::1424380312 -19::94::4::1424380312 -19::95::2::1424380312 -19::96::1::1424380312 -19::98::4::1424380312 -20::0::1::1424380312 -20::1::1::1424380312 -20::2::2::1424380312 -20::4::2::1424380312 -20::6::1::1424380312 -20::8::1::1424380312 -20::12::1::1424380312 -20::21::2::1424380312 -20::22::5::1424380312 -20::24::2::1424380312 -20::25::1::1424380312 -20::26::1::1424380312 -20::29::2::1424380312 -20::30::2::1424380312 -20::32::2::1424380312 -20::39::1::1424380312 -20::40::1::1424380312 -20::41::2::1424380312 -20::45::2::1424380312 -20::48::1::1424380312 -20::50::1::1424380312 -20::51::3::1424380312 -20::53::3::1424380312 -20::55::1::1424380312 -20::57::2::1424380312 -20::60::1::1424380312 -20::61::1::1424380312 -20::64::1::1424380312 -20::66::1::1424380312 -20::70::2::1424380312 -20::72::1::1424380312 -20::73::2::1424380312 -20::75::4::1424380312 -20::76::1::1424380312 -20::77::4::1424380312 -20::78::1::1424380312 -20::79::1::1424380312 -20::84::2::1424380312 -20::85::2::1424380312 -20::88::3::1424380312 -20::89::1::1424380312 -20::90::3::1424380312 -20::91::1::1424380312 -20::92::2::1424380312 -20::93::1::1424380312 -20::94::4::1424380312 -20::97::1::1424380312 -21::0::1::1424380312 -21::2::4::1424380312 -21::3::1::1424380312 -21::7::2::1424380312 -21::11::1::1424380312 -21::12::1::1424380312 -21::13::1::1424380312 -21::14::3::1424380312 -21::17::1::1424380312 -21::19::1::1424380312 -21::20::1::1424380312 -21::21::1::1424380312 -21::22::1::1424380312 -21::23::1::1424380312 -21::24::1::1424380312 -21::27::1::1424380312 -21::29::5::1424380312 -21::30::2::1424380312 -21::38::1::1424380312 -21::40::2::1424380312 -21::43::3::1424380312 -21::44::1::1424380312 -21::45::1::1424380312 -21::46::1::1424380312 -21::48::1::1424380312 -21::51::1::1424380312 -21::53::5::1424380312 -21::54::1::1424380312 -21::55::1::1424380312 -21::56::1::1424380312 -21::58::3::1424380312 -21::59::3::1424380312 -21::64::1::1424380312 -21::66::1::1424380312 -21::68::1::1424380312 -21::71::1::1424380312 -21::73::1::1424380312 -21::74::4::1424380312 -21::80::1::1424380312 -21::81::1::1424380312 -21::83::1::1424380312 -21::84::1::1424380312 -21::85::3::1424380312 -21::87::4::1424380312 -21::89::2::1424380312 -21::92::2::1424380312 -21::96::3::1424380312 -21::99::1::1424380312 -22::0::1::1424380312 -22::3::2::1424380312 -22::5::2::1424380312 -22::6::2::1424380312 -22::9::1::1424380312 -22::10::1::1424380312 -22::11::1::1424380312 -22::13::1::1424380312 -22::14::1::1424380312 -22::16::1::1424380312 -22::18::3::1424380312 -22::19::1::1424380312 -22::22::5::1424380312 -22::25::1::1424380312 -22::26::1::1424380312 -22::29::3::1424380312 -22::30::5::1424380312 -22::32::4::1424380312 -22::33::1::1424380312 -22::35::1::1424380312 -22::36::3::1424380312 -22::37::1::1424380312 -22::40::1::1424380312 -22::41::3::1424380312 -22::44::1::1424380312 -22::45::2::1424380312 -22::48::1::1424380312 -22::51::5::1424380312 -22::55::1::1424380312 -22::56::2::1424380312 -22::60::3::1424380312 -22::61::1::1424380312 -22::62::4::1424380312 -22::63::1::1424380312 -22::65::1::1424380312 -22::66::1::1424380312 -22::68::4::1424380312 -22::69::4::1424380312 -22::70::3::1424380312 -22::71::1::1424380312 -22::74::5::1424380312 -22::75::5::1424380312 -22::78::1::1424380312 -22::80::3::1424380312 -22::81::1::1424380312 -22::82::1::1424380312 -22::84::1::1424380312 -22::86::1::1424380312 -22::87::3::1424380312 -22::88::5::1424380312 -22::90::2::1424380312 -22::92::3::1424380312 -22::95::2::1424380312 -22::96::2::1424380312 -22::98::4::1424380312 -22::99::1::1424380312 -23::0::1::1424380312 -23::2::1::1424380312 -23::4::1::1424380312 -23::6::2::1424380312 -23::10::4::1424380312 -23::12::1::1424380312 -23::13::4::1424380312 -23::14::1::1424380312 -23::15::1::1424380312 -23::18::4::1424380312 -23::22::2::1424380312 -23::23::4::1424380312 -23::24::1::1424380312 -23::25::1::1424380312 -23::26::1::1424380312 -23::27::5::1424380312 -23::28::1::1424380312 -23::29::1::1424380312 -23::30::4::1424380312 -23::32::5::1424380312 -23::33::2::1424380312 -23::36::3::1424380312 -23::37::1::1424380312 -23::38::1::1424380312 -23::39::1::1424380312 -23::43::1::1424380312 -23::48::5::1424380312 -23::49::5::1424380312 -23::50::4::1424380312 -23::53::1::1424380312 -23::55::5::1424380312 -23::57::1::1424380312 -23::59::1::1424380312 -23::60::1::1424380312 -23::61::1::1424380312 -23::64::4::1424380312 -23::65::5::1424380312 -23::66::2::1424380312 -23::67::1::1424380312 -23::68::3::1424380312 -23::69::1::1424380312 -23::72::1::1424380312 -23::73::3::1424380312 -23::77::1::1424380312 -23::82::2::1424380312 -23::83::1::1424380312 -23::84::1::1424380312 -23::85::1::1424380312 -23::87::3::1424380312 -23::88::1::1424380312 -23::95::2::1424380312 -23::97::1::1424380312 -24::4::1::1424380312 -24::6::3::1424380312 -24::7::1::1424380312 -24::10::2::1424380312 -24::12::1::1424380312 -24::15::1::1424380312 -24::19::1::1424380312 -24::24::1::1424380312 -24::27::3::1424380312 -24::30::5::1424380312 -24::31::1::1424380312 -24::32::3::1424380312 -24::33::1::1424380312 -24::37::1::1424380312 -24::39::1::1424380312 -24::40::1::1424380312 -24::42::1::1424380312 -24::43::3::1424380312 -24::45::2::1424380312 -24::46::1::1424380312 -24::47::1::1424380312 -24::48::1::1424380312 -24::49::1::1424380312 -24::50::1::1424380312 -24::52::5::1424380312 -24::57::1::1424380312 -24::59::4::1424380312 -24::63::4::1424380312 -24::65::1::1424380312 -24::66::1::1424380312 -24::67::1::1424380312 -24::68::3::1424380312 -24::69::5::1424380312 -24::71::1::1424380312 -24::72::4::1424380312 -24::77::4::1424380312 -24::78::1::1424380312 -24::80::1::1424380312 -24::82::1::1424380312 -24::84::1::1424380312 -24::86::1::1424380312 -24::87::1::1424380312 -24::88::2::1424380312 -24::89::1::1424380312 -24::90::5::1424380312 -24::91::1::1424380312 -24::92::1::1424380312 -24::94::2::1424380312 -24::95::1::1424380312 -24::96::5::1424380312 -24::98::1::1424380312 -24::99::1::1424380312 -25::1::3::1424380312 -25::2::1::1424380312 -25::7::1::1424380312 -25::9::1::1424380312 -25::12::3::1424380312 -25::16::3::1424380312 -25::17::1::1424380312 -25::18::1::1424380312 -25::20::1::1424380312 -25::22::1::1424380312 -25::23::1::1424380312 -25::26::2::1424380312 -25::29::1::1424380312 -25::30::1::1424380312 -25::31::2::1424380312 -25::33::4::1424380312 -25::34::3::1424380312 -25::35::2::1424380312 -25::36::1::1424380312 -25::37::1::1424380312 -25::40::1::1424380312 -25::41::1::1424380312 -25::43::1::1424380312 -25::47::4::1424380312 -25::50::1::1424380312 -25::51::1::1424380312 -25::53::1::1424380312 -25::56::1::1424380312 -25::58::2::1424380312 -25::64::2::1424380312 -25::67::2::1424380312 -25::68::1::1424380312 -25::70::1::1424380312 -25::71::4::1424380312 -25::73::1::1424380312 -25::74::1::1424380312 -25::76::1::1424380312 -25::79::1::1424380312 -25::82::1::1424380312 -25::84::2::1424380312 -25::85::1::1424380312 -25::91::3::1424380312 -25::92::1::1424380312 -25::94::1::1424380312 -25::95::1::1424380312 -25::97::2::1424380312 -26::0::1::1424380312 -26::1::1::1424380312 -26::2::1::1424380312 -26::3::1::1424380312 -26::4::4::1424380312 -26::5::2::1424380312 -26::6::3::1424380312 -26::7::5::1424380312 -26::13::3::1424380312 -26::14::1::1424380312 -26::16::1::1424380312 -26::18::3::1424380312 -26::20::1::1424380312 -26::21::3::1424380312 -26::22::5::1424380312 -26::23::5::1424380312 -26::24::5::1424380312 -26::27::1::1424380312 -26::31::1::1424380312 -26::35::1::1424380312 -26::36::4::1424380312 -26::40::1::1424380312 -26::44::1::1424380312 -26::45::2::1424380312 -26::47::1::1424380312 -26::48::1::1424380312 -26::49::3::1424380312 -26::50::2::1424380312 -26::52::1::1424380312 -26::54::4::1424380312 -26::55::1::1424380312 -26::57::3::1424380312 -26::58::1::1424380312 -26::61::1::1424380312 -26::62::2::1424380312 -26::66::1::1424380312 -26::68::4::1424380312 -26::71::1::1424380312 -26::73::4::1424380312 -26::76::1::1424380312 -26::81::3::1424380312 -26::85::1::1424380312 -26::86::3::1424380312 -26::88::5::1424380312 -26::91::1::1424380312 -26::94::5::1424380312 -26::95::1::1424380312 -26::96::1::1424380312 -26::97::1::1424380312 -27::0::1::1424380312 -27::9::1::1424380312 -27::10::1::1424380312 -27::18::4::1424380312 -27::19::3::1424380312 -27::20::1::1424380312 -27::22::2::1424380312 -27::24::2::1424380312 -27::25::1::1424380312 -27::27::3::1424380312 -27::28::1::1424380312 -27::29::1::1424380312 -27::31::1::1424380312 -27::33::3::1424380312 -27::40::1::1424380312 -27::42::1::1424380312 -27::43::1::1424380312 -27::44::3::1424380312 -27::45::1::1424380312 -27::51::3::1424380312 -27::52::1::1424380312 -27::55::3::1424380312 -27::57::1::1424380312 -27::59::1::1424380312 -27::60::1::1424380312 -27::61::1::1424380312 -27::64::1::1424380312 -27::66::3::1424380312 -27::68::1::1424380312 -27::70::1::1424380312 -27::71::2::1424380312 -27::72::1::1424380312 -27::75::3::1424380312 -27::78::1::1424380312 -27::80::3::1424380312 -27::82::1::1424380312 -27::83::3::1424380312 -27::86::1::1424380312 -27::87::2::1424380312 -27::90::1::1424380312 -27::91::1::1424380312 -27::92::1::1424380312 -27::93::1::1424380312 -27::94::2::1424380312 -27::95::1::1424380312 -27::98::1::1424380312 -28::0::3::1424380312 -28::1::1::1424380312 -28::2::4::1424380312 -28::3::1::1424380312 -28::6::1::1424380312 -28::7::1::1424380312 -28::12::5::1424380312 -28::13::2::1424380312 -28::14::1::1424380312 -28::15::1::1424380312 -28::17::1::1424380312 -28::19::3::1424380312 -28::20::1::1424380312 -28::23::3::1424380312 -28::24::3::1424380312 -28::27::1::1424380312 -28::29::1::1424380312 -28::33::1::1424380312 -28::34::1::1424380312 -28::36::1::1424380312 -28::38::2::1424380312 -28::39::2::1424380312 -28::44::1::1424380312 -28::45::1::1424380312 -28::49::4::1424380312 -28::50::1::1424380312 -28::52::1::1424380312 -28::54::1::1424380312 -28::56::1::1424380312 -28::57::3::1424380312 -28::58::1::1424380312 -28::59::1::1424380312 -28::60::1::1424380312 -28::62::3::1424380312 -28::63::1::1424380312 -28::65::1::1424380312 -28::75::1::1424380312 -28::78::1::1424380312 -28::81::5::1424380312 -28::82::4::1424380312 -28::83::1::1424380312 -28::85::1::1424380312 -28::88::2::1424380312 -28::89::4::1424380312 -28::90::1::1424380312 -28::92::5::1424380312 -28::94::1::1424380312 -28::95::2::1424380312 -28::98::1::1424380312 -28::99::1::1424380312 -29::3::1::1424380312 -29::4::1::1424380312 -29::5::1::1424380312 -29::7::2::1424380312 -29::9::1::1424380312 -29::10::3::1424380312 -29::11::1::1424380312 -29::13::3::1424380312 -29::14::1::1424380312 -29::15::1::1424380312 -29::17::3::1424380312 -29::19::3::1424380312 -29::22::3::1424380312 -29::23::4::1424380312 -29::25::1::1424380312 -29::29::1::1424380312 -29::31::1::1424380312 -29::32::4::1424380312 -29::33::2::1424380312 -29::36::2::1424380312 -29::38::3::1424380312 -29::39::1::1424380312 -29::42::1::1424380312 -29::46::5::1424380312 -29::49::3::1424380312 -29::51::2::1424380312 -29::59::1::1424380312 -29::61::1::1424380312 -29::62::1::1424380312 -29::67::1::1424380312 -29::68::3::1424380312 -29::69::1::1424380312 -29::70::1::1424380312 -29::74::1::1424380312 -29::75::1::1424380312 -29::79::2::1424380312 -29::80::1::1424380312 -29::81::2::1424380312 -29::83::1::1424380312 -29::85::1::1424380312 -29::86::1::1424380312 -29::90::4::1424380312 -29::93::1::1424380312 -29::94::4::1424380312 -29::97::1::1424380312 -29::99::1::1424380312 diff --git a/image_content/config/spark/opt/spark/data/mllib/als/test.data b/image_content/config/spark/opt/spark/data/mllib/als/test.data deleted file mode 100644 index e476cc2..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/als/test.data +++ /dev/null @@ -1,16 +0,0 @@ -1,1,5.0 -1,2,1.0 -1,3,5.0 -1,4,1.0 -2,1,5.0 -2,2,1.0 -2,3,5.0 -2,4,1.0 -3,1,1.0 -3,2,5.0 -3,3,1.0 -3,4,5.0 -4,1,1.0 -4,2,5.0 -4,3,1.0 -4,4,5.0 diff --git a/image_content/config/spark/opt/spark/data/mllib/gmm_data.txt b/image_content/config/spark/opt/spark/data/mllib/gmm_data.txt deleted file mode 100644 index 934ee4a..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/gmm_data.txt +++ /dev/null @@ -1,2000 +0,0 @@ - 2.59470454e+00 2.12298217e+00 - 1.15807024e+00 -1.46498723e-01 - 2.46206638e+00 6.19556894e-01 - -5.54845070e-01 -7.24700066e-01 - -3.23111426e+00 -1.42579084e+00 - 3.02978115e+00 7.87121753e-01 - 1.97365907e+00 1.15914704e+00 - -6.44852101e+00 -3.18154314e+00 - 1.30963349e+00 1.62866434e-01 - 4.26482541e+00 2.15547996e+00 - 3.79927257e+00 1.50572445e+00 - 4.17452609e-01 -6.74032760e-01 - 4.21117627e-01 4.45590255e-01 - -2.80425571e+00 -7.77150554e-01 - 2.55928797e+00 7.03954218e-01 - 1.32554059e+00 -9.46663152e-01 - -3.39691439e+00 -1.49005743e+00 - -2.26542270e-01 3.60052515e-02 - 1.04994198e+00 5.29825685e-01 - -1.51566882e+00 -1.86264432e-01 - -3.27928172e-01 -7.60859110e-01 - -3.18054866e-01 3.97719805e-01 - 1.65579418e-01 -3.47232033e-01 - 6.47162333e-01 4.96059961e-02 - -2.80776647e-01 4.79418757e-01 - 7.45069752e-01 1.20790281e-01 - 2.13604102e-01 1.59542555e-01 - -3.08860224e+00 -1.43259870e+00 - 8.97066497e-01 1.10206801e+00 - -2.23918874e-01 -1.07267267e+00 - 2.51525708e+00 2.84761973e-01 - 9.98052532e-01 1.08333783e+00 - 1.76705588e+00 8.18866778e-01 - 5.31555163e-02 -1.90111151e-01 - -2.17405059e+00 7.21854582e-02 - -2.13772505e+00 -3.62010387e-01 - 2.95974057e+00 1.31602381e+00 - 2.74053561e+00 1.61781757e+00 - 6.68135448e-01 2.86586009e-01 - 2.82323739e+00 1.74437257e+00 - 8.11540288e-01 5.50744478e-01 - 4.10050897e-01 5.10668402e-03 - 9.58626136e-01 -3.49633680e-01 - 4.66599798e+00 1.49964894e+00 - 4.94507794e-01 2.58928077e-01 - -2.36029742e+00 -1.61042909e+00 - -4.99306804e-01 -8.04984769e-01 - 1.07448510e+00 9.39605828e-01 - -1.80448949e+00 -1.05983264e+00 - -3.22353821e-01 1.73612093e-01 - 1.85418702e+00 1.15640643e+00 - 6.93794163e-01 6.59993560e-01 - 1.99399102e+00 1.44547123e+00 - 3.38866124e+00 1.23379290e+00 - -4.24067720e+00 -1.22264282e+00 - 6.03230201e-02 2.95232729e-01 - -3.59341813e+00 -7.17453726e-01 - 4.87447372e-01 -2.00733911e-01 - 1.20149195e+00 4.07880197e-01 - -2.13331464e+00 -4.58518077e-01 - -3.84091083e+00 -1.71553950e+00 - -5.37279250e-01 2.64822629e-02 - -2.10155227e+00 -1.32558103e+00 - -1.71318897e+00 -7.12098563e-01 - -1.46280695e+00 -1.84868337e-01 - -3.59785325e+00 -1.54832434e+00 - -5.77528081e-01 -5.78580857e-01 - 3.14734283e-01 5.80184639e-01 - -2.71164714e+00 -1.19379432e+00 - 1.09634489e+00 7.20143887e-01 - -3.05527722e+00 -1.47774064e+00 - 6.71753586e-01 7.61350020e-01 - 3.98294144e+00 1.54166484e+00 - -3.37220384e+00 -2.21332064e+00 - 1.81222914e+00 7.41212752e-01 - 2.71458282e-01 1.36329078e-01 - -3.97815359e-01 1.16766886e-01 - -1.70192814e+00 -9.75851571e-01 - -3.46803804e+00 -1.09965988e+00 - -1.69649627e+00 -5.76045801e-01 - -1.02485636e-01 -8.81841246e-01 - -3.24194667e-02 2.55429276e-01 - -2.75343168e+00 -1.51366320e+00 - -2.78676702e+00 -5.22360489e-01 - 1.70483164e+00 1.19769805e+00 - 4.92022579e-01 3.24944706e-01 - 2.48768464e+00 1.00055363e+00 - 4.48786400e-01 7.63902870e-01 - 2.93862696e+00 1.73809968e+00 - -3.55019305e+00 -1.97875558e+00 - 1.74270784e+00 6.90229224e-01 - 5.13391994e-01 4.58374016e-01 - 1.78379499e+00 9.08026381e-01 - 1.75814147e+00 7.41449784e-01 - -2.30687792e-01 3.91009729e-01 - 3.92271353e+00 1.44006290e+00 - 2.93361679e-01 -4.99886375e-03 - 2.47902690e-01 -7.49542503e-01 - -3.97675355e-01 1.36824887e-01 - 3.56535953e+00 1.15181329e+00 - 3.22425301e+00 1.28702383e+00 - -2.94192478e-01 -2.42382557e-01 - 8.02068864e-01 -1.51671475e-01 - 8.54133530e-01 -4.89514885e-02 - -1.64316316e-01 -5.34642346e-01 - -6.08485405e-01 -2.10332352e-01 - -2.18940059e+00 -1.07024952e+00 - -1.71586960e+00 -2.83333492e-02 - 1.70200448e-01 -3.28031178e-01 - -1.97210346e+00 -5.39948532e-01 - 2.19500160e+00 1.05697170e+00 - -1.76239935e+00 -1.09377438e+00 - 1.68314744e+00 6.86491164e-01 - -2.99852288e+00 -1.46619067e+00 - -2.23769560e+00 -9.15008355e-01 - 9.46887516e-01 5.58410503e-01 - 5.02153123e-01 1.63851235e-01 - -9.70297062e-01 3.14625374e-01 - -1.29405593e+00 -8.20994131e-01 - 2.72516079e+00 7.85839947e-01 - 1.45788024e+00 3.37487353e-01 - -4.36292749e-01 -5.42150480e-01 - 2.21304711e+00 1.25254042e+00 - -1.20810271e-01 4.79632898e-01 - -3.30884511e+00 -1.50607586e+00 - -6.55882455e+00 -1.94231256e+00 - -3.17033630e+00 -9.94678930e-01 - 1.42043617e+00 7.28808957e-01 - -1.57546099e+00 -1.10320497e+00 - -3.22748754e+00 -1.64174579e+00 - 2.96776017e-03 -3.16191512e-02 - -2.25986054e+00 -6.13123197e-01 - 2.49434243e+00 7.73069183e-01 - 9.08494049e-01 -1.53926853e-01 - -2.80559090e+00 -1.37474221e+00 - 4.75224286e-01 2.53153674e-01 - 4.37644006e+00 8.49116998e-01 - 2.27282959e+00 6.16568202e-01 - 1.16006880e+00 1.65832798e-01 - -1.67163193e+00 -1.22555386e+00 - -1.38231118e+00 -7.29575504e-01 - -3.49922750e+00 -2.26446675e+00 - -3.73780110e-01 -1.90657869e-01 - 1.68627679e+00 1.05662987e+00 - -3.28891792e+00 -1.11080334e+00 - -2.59815798e+00 -1.51410198e+00 - -2.61203309e+00 -6.00143552e-01 - 6.58964943e-01 4.47216094e-01 - -2.26711381e+00 -7.26512923e-01 - -5.31429009e-02 -1.97925341e-02 - 3.19749807e+00 9.20425476e-01 - -1.37595787e+00 -6.58062732e-01 - 8.09900278e-01 -3.84286160e-01 - -5.07741280e+00 -1.97683808e+00 - -2.99764250e+00 -1.50753777e+00 - -9.87671815e-01 -4.63255889e-01 - 1.65390765e+00 6.73806615e-02 - 5.51252659e+00 2.69842267e+00 - -2.23724309e+00 -4.77624004e-01 - 4.99726228e+00 1.74690949e+00 - 1.75859162e-01 -1.49350995e-01 - 4.13382789e+00 1.31735161e+00 - 2.69058117e+00 4.87656923e-01 - 1.07180318e+00 1.01426954e+00 - 3.37216869e+00 1.05955377e+00 - -2.95006781e+00 -1.57048303e+00 - -2.46401648e+00 -8.37056374e-01 - 1.19012962e-01 7.54702770e-01 - 3.34142539e+00 4.81938295e-01 - 2.92643913e+00 1.04301050e+00 - 2.89697751e+00 1.37551442e+00 - -1.03094242e+00 2.20903962e-01 - -5.13914589e+00 -2.23355387e+00 - -8.81680780e-01 1.83590000e-01 - 2.82334775e+00 1.26650464e+00 - -2.81042540e-01 -3.26370240e-01 - 2.97995487e+00 8.34569452e-01 - -1.39857135e+00 -1.15798385e+00 - 4.27186506e+00 9.04253702e-01 - 6.98684517e-01 7.91167305e-01 - 3.52233095e+00 1.29976473e+00 - 2.21448029e+00 2.73213379e-01 - -3.13505683e-01 -1.20593774e-01 - 3.70571571e+00 1.06220876e+00 - 9.83881041e-01 5.67713803e-01 - -2.17897705e+00 2.52925205e-01 - 1.38734039e+00 4.61287066e-01 - -1.41181602e+00 -1.67248955e-02 - -1.69974639e+00 -7.17812071e-01 - -2.01005793e-01 -7.49662056e-01 - 1.69016336e+00 3.24687979e-01 - -2.03250179e+00 -2.76108460e-01 - 3.68776848e-01 4.12536941e-01 - 7.66238259e-01 -1.84750637e-01 - -2.73989147e-01 -1.72817250e-01 - -2.18623745e+00 -2.10906798e-01 - -1.39795625e-01 3.26066094e-02 - -2.73826912e-01 -6.67586097e-02 - -1.57880654e+00 -4.99395900e-01 - 4.55950908e+00 2.29410489e+00 - -7.36479631e-01 -1.57861857e-01 - 1.92082888e+00 1.05843391e+00 - 4.29192810e+00 1.38127810e+00 - 1.61852879e+00 1.95871986e-01 - -1.95027403e+00 -5.22448168e-01 - -1.67446281e+00 -9.41497162e-01 - 6.07097859e-01 3.44178029e-01 - -3.44004683e+00 -1.49258461e+00 - 2.72114752e+00 6.00728991e-01 - 8.80685522e-01 -2.53243336e-01 - 1.39254928e+00 3.42988512e-01 - 1.14194836e-01 -8.57945694e-02 - -1.49387332e+00 -7.60860481e-01 - -1.98053285e+00 -4.86039865e-01 - 3.56008568e+00 1.08438692e+00 - 2.27833961e-01 1.09441881e+00 - -1.16716710e+00 -6.54778242e-01 - 2.02156613e+00 5.42075758e-01 - 1.08429178e+00 -7.67420693e-01 - 6.63058455e-01 4.61680991e-01 - -1.06201537e+00 1.38862846e-01 - 3.08701875e+00 8.32580273e-01 - -4.96558108e-01 -2.47031257e-01 - 7.95109987e-01 7.59314147e-02 - -3.39903524e-01 8.71565566e-03 - 8.68351357e-01 4.78358641e-01 - 1.48750819e+00 7.63257420e-01 - -4.51224101e-01 -4.44056898e-01 - -3.02734750e-01 -2.98487961e-01 - 5.46846609e-01 7.02377629e-01 - 1.65129778e+00 3.74008231e-01 - -7.43336512e-01 3.95723531e-01 - -5.88446605e-01 -6.47520211e-01 - 3.58613167e+00 1.95024937e+00 - 3.11718883e+00 8.37984715e-01 - 1.80919244e+00 9.62644986e-01 - 5.43856371e-02 -5.86297543e-01 - -1.95186766e+00 -1.02624212e-01 - 8.95628057e-01 5.91812281e-01 - 4.97691627e-02 5.31137156e-01 - -1.07633113e+00 -2.47392788e-01 - -1.17257986e+00 -8.68528265e-01 - -8.19227665e-02 5.80579434e-03 - -2.86409787e-01 1.95812924e-01 - 1.10582671e+00 7.42853240e-01 - 4.06429774e+00 1.06557476e+00 - -3.42521792e+00 -7.74327139e-01 - 1.28468671e+00 6.20431661e-01 - 6.01201008e-01 -1.16799728e-01 - -1.85058727e-01 -3.76235293e-01 - 5.44083324e+00 2.98490868e+00 - 2.69273070e+00 7.83901153e-01 - 1.88938036e-01 -4.83222152e-01 - 1.05667256e+00 -2.57003165e-01 - 2.99711662e-01 -4.33131912e-01 - 7.73689216e-02 -1.78738364e-01 - 9.58326279e-01 6.38325706e-01 - -3.97727049e-01 2.27314759e-01 - 3.36098175e+00 1.12165237e+00 - 1.77804871e+00 6.46961933e-01 - -2.86945546e+00 -1.00395518e+00 - 3.03494815e+00 7.51814612e-01 - -1.43658194e+00 -3.55432244e-01 - -3.08455105e+00 -1.51535106e+00 - -1.55841975e+00 3.93454820e-02 - 7.96073412e-01 -3.11036969e-01 - -9.84125401e-01 -1.02064649e+00 - -7.75688143e+00 -3.65219926e+00 - 1.53816429e+00 7.65926670e-01 - -4.92712738e-01 2.32244240e-02 - -1.93166919e+00 -1.07701304e+00 - 2.03029875e-02 -7.54055699e-01 - 2.52177489e+00 1.01544979e+00 - 3.65109048e-01 -9.48328494e-01 - -1.28849143e-01 2.51947174e-01 - -1.02428075e+00 -9.37767116e-01 - -3.04179748e+00 -9.97926994e-01 - -2.51986980e+00 -1.69117413e+00 - -1.24900838e+00 -4.16179917e-01 - 2.77943992e+00 1.22842327e+00 - -4.37434557e+00 -1.70182693e+00 - -1.60019319e+00 -4.18345639e-01 - -1.67613646e+00 -9.44087262e-01 - -9.00843245e-01 8.26378089e-02 - 3.29770621e-01 -9.07870444e-01 - -2.84650535e+00 -9.00155396e-01 - 1.57111705e+00 7.07432268e-01 - 1.24948552e+00 1.04812849e-01 - 1.81440558e+00 9.53545082e-01 - -1.74915794e+00 -1.04606288e+00 - 1.20593269e+00 -1.12607147e-02 - 1.36004919e-01 -1.09828044e+00 - 2.57480693e-01 3.34941541e-01 - 7.78775385e-01 -5.32494732e-01 - -1.79155126e+00 -6.29994129e-01 - -1.75706839e+00 -8.35100126e-01 - 4.29512012e-01 7.81426910e-02 - 3.08349370e-01 -1.27359861e-01 - 1.05560329e+00 4.55150640e-01 - 1.95662574e+00 1.17593217e+00 - 8.77376632e-01 6.57866662e-01 - 7.71311255e-01 9.15134334e-02 - -6.36978275e+00 -2.55874241e+00 - -2.98335339e+00 -1.59567024e+00 - -3.67104587e-01 1.85315291e-01 - 1.95347407e+00 -7.15503113e-02 - 8.45556363e-01 6.51256415e-02 - 9.42868521e-01 3.56647624e-01 - 2.99321875e+00 1.07505254e+00 - -2.91030538e-01 -3.77637183e-01 - 1.62870918e+00 3.37563671e-01 - 2.05773173e-01 3.43337416e-01 - -8.40879199e-01 -1.35600767e-01 - 1.38101624e+00 5.99253495e-01 - -6.93715607e+00 -2.63580662e+00 - -1.04423404e+00 -8.32865050e-01 - 1.33448476e+00 1.04863475e+00 - 6.01675207e-01 1.98585194e-01 - 2.31233993e+00 7.98628331e-01 - 1.85201313e-01 -1.76070247e+00 - 1.92006354e+00 8.45737582e-01 - 1.06320415e+00 2.93426068e-01 - -1.20360141e+00 -1.00301288e+00 - 1.95926629e+00 6.26643532e-01 - 6.04483978e-02 5.72643059e-01 - -1.04568563e+00 -5.91021496e-01 - 2.62300678e+00 9.50997831e-01 - -4.04610275e-01 3.73150879e-01 - 2.26371902e+00 8.73627529e-01 - 2.12545313e+00 7.90640352e-01 - 7.72181917e-03 1.65718952e-02 - 1.00422340e-01 -2.05562936e-01 - -1.22989802e+00 -1.01841681e-01 - 3.09064082e+00 1.04288010e+00 - 5.18274167e+00 1.34749259e+00 - -8.32075153e-01 -1.97592029e-01 - 3.84126764e-02 5.58171345e-01 - 4.99560727e-01 -4.26154438e-02 - 4.79071151e+00 2.19728942e+00 - -2.78437968e+00 -1.17812590e+00 - -2.22804226e+00 -4.31174255e-01 - 8.50762292e-01 -1.06445261e-01 - 1.10812830e+00 -2.59118812e-01 - -2.91450155e-01 6.42802679e-01 - -1.38631532e-01 -5.88585623e-01 - -5.04120983e-01 -2.17094915e-01 - 3.41410820e+00 1.67897767e+00 - -2.23697326e+00 -6.62735244e-01 - -3.55961064e-01 -1.27647226e-01 - -3.55568274e+00 -2.49011369e+00 - -8.77586408e-01 -9.38268065e-03 - 1.52382384e-01 -5.62155760e-01 - 1.55885574e-01 1.07617069e-01 - -8.37129973e-01 -5.22259081e-01 - -2.92741750e+00 -1.35049428e+00 - -3.54670781e-01 5.69205952e-02 - 2.21030255e+00 1.34689986e+00 - 1.60787722e+00 5.75984706e-01 - 1.32294221e+00 5.31577509e-01 - 7.05672928e-01 3.34241244e-01 - 1.41406179e+00 1.15783408e+00 - -6.92172228e-01 -2.84817896e-01 - 3.28358655e-01 -2.66910083e-01 - 1.68013644e-01 -4.28016549e-02 - 2.07365974e+00 7.76496211e-01 - -3.92974907e-01 2.46796730e-01 - -5.76078636e-01 3.25676963e-01 - -1.82547204e-01 -5.06410543e-01 - 3.04754906e+00 1.16174496e+00 - -3.01090632e+00 -1.09195183e+00 - -1.44659696e+00 -6.87838682e-01 - 2.11395861e+00 9.10495785e-01 - 1.40962871e+00 1.13568678e+00 - -1.66653234e-01 -2.10012503e-01 - 3.17456029e+00 9.74502922e-01 - 2.15944820e+00 8.62807189e-01 - -3.45418719e+00 -1.33647548e+00 - -3.41357732e+00 -8.47048920e-01 - -3.06702448e-01 -6.64280634e-01 - -2.86930714e-01 -1.35268264e-01 - -3.15835557e+00 -5.43439253e-01 - 2.49541440e-01 -4.71733570e-01 - 2.71933912e+00 4.13308399e-01 - -2.43787038e+00 -1.08050547e+00 - -4.90234490e-01 -6.64069865e-01 - 8.99524451e-02 5.76180541e-01 - 5.00500404e+00 2.12125521e+00 - -1.73107940e-01 -2.28506575e-02 - 5.44938858e-01 -1.29523352e-01 - 5.13526842e+00 1.68785993e+00 - 1.70228304e+00 1.02601138e+00 - 3.58957507e+00 1.54396196e+00 - 1.85615738e+00 4.92916197e-01 - 2.55772147e+00 7.88438908e-01 - -1.57008279e+00 -4.17377300e-01 - -1.42548604e+00 -3.63684860e-01 - -8.52026118e-01 2.72052686e-01 - -5.10563077e+00 -2.35665994e+00 - -2.95517031e+00 -1.84945297e+00 - -2.91947959e+00 -1.66016784e+00 - -4.21462387e+00 -1.41131535e+00 - 6.59901121e-01 4.87156314e-01 - -9.75352532e-01 -4.50231285e-01 - -5.94084444e-01 -1.16922670e+00 - 7.50554615e-01 -9.83692552e-01 - 1.07054926e+00 2.77143030e-01 - -3.88079578e-01 -4.17737309e-02 - -9.59373733e-01 -8.85454886e-01 - -7.53560665e-02 -5.16223870e-02 - 9.84108158e-01 -5.89290700e-02 - 1.87272961e-01 -4.34238391e-01 - 6.86509981e-01 -3.15116460e-01 - -1.07762538e+00 6.58984161e-02 - 6.09266592e-01 6.91808473e-02 - -8.30529954e-01 -7.00454791e-01 - -9.13179464e-01 -6.31712891e-01 - 7.68744851e-01 1.09840676e+00 - -1.07606690e+00 -8.78390282e-01 - -1.71038184e+00 -5.73606033e-01 - 8.75982765e-01 3.66343143e-01 - -7.04919009e-01 -8.49182590e-01 - -1.00274668e+00 -7.99573611e-01 - -1.05562848e+00 -5.84060076e-01 - 4.03490015e+00 1.28679206e+00 - -3.53484804e+00 -1.71381255e+00 - 2.31527363e-01 1.04179397e-01 - -3.58592392e-02 3.74895739e-01 - 3.92253428e+00 1.81852726e+00 - -7.27384249e-01 -6.45605128e-01 - 4.65678097e+00 2.41379899e+00 - 1.16750534e+00 7.60718205e-01 - 1.15677059e+00 7.96225550e-01 - -1.42920261e+00 -4.66946295e-01 - 3.71148192e+00 1.88060191e+00 - 2.44052407e+00 3.84472199e-01 - -1.64535035e+00 -8.94530036e-01 - -3.69608753e+00 -1.36402754e+00 - 2.24419208e+00 9.69744889e-01 - 2.54822427e+00 1.22613039e+00 - 3.77484909e-01 -5.98521878e-01 - -3.61521175e+00 -1.11123912e+00 - 3.28113127e+00 1.52551775e+00 - -3.51030902e+00 -1.53913980e+00 - -2.44874505e+00 -6.30246005e-01 - -3.42516153e-01 -5.07352665e-01 - 1.09110502e+00 6.36821628e-01 - -2.49434967e+00 -8.02827146e-01 - 1.41763139e+00 -3.46591820e-01 - 1.61108619e+00 5.93871102e-01 - 3.97371717e+00 1.35552499e+00 - -1.33437177e+00 -2.83908670e-01 - -1.41606483e+00 -1.76402601e-01 - 2.23945322e-01 -1.77157065e-01 - 2.60271569e+00 2.40778251e-01 - -2.82213895e-02 1.98255474e-01 - 4.20727940e+00 1.31490863e+00 - 3.36944889e+00 1.57566635e+00 - 3.53049396e+00 1.73579350e+00 - -1.29170202e+00 -1.64196290e+00 - 9.27295604e-01 9.98808036e-01 - 1.75321843e-01 -2.83267817e-01 - -2.19069578e+00 -1.12814358e+00 - 1.66606031e+00 7.68006933e-01 - -7.13826035e-01 5.20881684e-02 - -3.43821888e+00 -2.36137021e+00 - -5.93210310e-01 1.21843813e-01 - -4.09800822e+00 -1.39893953e+00 - 2.74110954e+00 1.52728606e+00 - 1.72652512e+00 -1.25435113e-01 - 1.97722357e+00 6.40667481e-01 - 4.18635780e-01 3.57018509e-01 - -1.78303569e+00 -2.11864764e-01 - -3.52809366e+00 -2.58794450e-01 - -4.72407090e+00 -1.63870734e+00 - 1.73917807e+00 8.73251829e-01 - 4.37979356e-01 8.49210569e-01 - 3.93791881e+00 1.76269490e+00 - 2.79065411e+00 1.04019042e+00 - -8.47426142e-01 -3.40136892e-01 - -4.24389181e+00 -1.80253120e+00 - -1.86675870e+00 -7.64558265e-01 - 9.46212675e-01 -7.77681445e-02 - -2.82448462e+00 -1.33592449e+00 - -2.57938567e+00 -1.56554690e+00 - -2.71615767e+00 -6.27667233e-01 - -1.55999166e+00 -5.81013466e-01 - -4.24696864e-01 -7.44673250e-01 - 1.67592970e+00 7.68164292e-01 - 8.48455216e-01 -6.05681126e-01 - 6.12575454e+00 1.65607584e+00 - 1.38207327e+00 2.39261863e-01 - 3.13364450e+00 1.17154698e+00 - 1.71694858e+00 1.26744905e+00 - -1.61746367e+00 -8.80098073e-01 - -8.52196756e-01 -9.27299728e-01 - -1.51562462e-01 -8.36552490e-02 - -7.04792753e-01 -1.24726713e-02 - -3.35265757e+00 -1.82176312e+00 - 3.32173170e-01 -1.33405580e-01 - 4.95841013e-01 4.58292712e-01 - 1.57713955e+00 7.79272991e-01 - 2.09743109e+00 9.23542557e-01 - 3.90450311e-03 -8.42873164e-01 - 2.59519038e+00 7.56479591e-01 - -5.77643976e-01 -2.36401904e-01 - -5.22310654e-01 1.34187830e-01 - -2.22096086e+00 -7.75507719e-01 - 1.35907831e+00 7.80197510e-01 - 3.80355868e+00 1.16983476e+00 - 3.82746596e+00 1.31417718e+00 - 3.30451183e+00 1.55398159e+00 - -3.42917814e-01 -8.62281222e-02 - -2.59093020e+00 -9.29883526e-01 - 1.40928562e+00 1.08398346e+00 - 1.54400137e-01 3.35881092e-01 - 1.59171586e+00 1.18855802e+00 - -5.25164002e-01 -1.03104220e-01 - 2.20067959e+00 1.37074713e+00 - 6.97860830e-01 6.27718548e-01 - -4.59743507e-01 1.36061163e-01 - -1.04691963e-01 -2.16271727e-01 - -1.08905573e+00 -5.95510769e-01 - -1.00826983e+00 -5.38509162e-02 - -3.16402719e+00 -1.33414216e+00 - 1.47870874e-01 1.75234619e-01 - -2.57078234e-01 7.03316889e-02 - 1.81073945e+00 4.26901462e-01 - 2.65476530e+00 6.74217273e-01 - 1.27539811e+00 6.22914081e-01 - -3.76750499e-01 -1.20629449e+00 - 1.00177595e+00 -1.40660091e-01 - -2.98919265e+00 -1.65145013e+00 - -2.21557682e+00 -8.11123452e-01 - -3.22635378e+00 -1.65639056e+00 - -2.72868553e+00 -1.02812087e+00 - 1.26042797e+00 8.49005248e-01 - -9.38318534e-01 -9.87588651e-01 - 3.38013194e-01 -1.00237461e-01 - 1.91175691e+00 8.48716369e-01 - 4.30244344e-01 6.05539915e-02 - 2.21783435e+00 3.03268204e-01 - 1.78019576e+00 1.27377108e+00 - 1.59733274e+00 4.40674687e-02 - 3.97428484e+00 2.20881566e+00 - -2.41108677e+00 -6.01410418e-01 - -2.50796499e+00 -5.71169866e-01 - -3.71957427e+00 -1.38195726e+00 - -1.57992670e+00 1.32068593e-01 - -1.35278851e+00 -6.39349270e-01 - 1.23075932e+00 2.40445409e-01 - 1.35606530e+00 4.33180078e-01 - 9.60968518e-02 2.26734255e-01 - 6.22975063e-01 5.03431915e-02 - -1.47624851e+00 -3.60568238e-01 - -2.49337808e+00 -1.15083052e+00 - 2.15717792e+00 1.03071559e+00 - -3.07814376e-02 1.38700314e-02 - 4.52049499e-02 -4.86409775e-01 - 2.58231061e+00 1.14327809e-01 - 1.10999138e+00 -5.18568405e-01 - -2.19426443e-01 -5.37505538e-01 - -4.44740298e-01 6.78099955e-01 - 4.03379080e+00 1.49825720e+00 - -5.13182408e-01 -4.90201950e-01 - -6.90139716e-01 1.63875126e-01 - -8.17281461e-01 2.32155064e-01 - -2.92357619e-01 -8.02573544e-01 - -1.80769841e+00 -7.58907326e-01 - 2.16981590e+00 1.06728873e+00 - 1.98995203e-01 -6.84176682e-02 - -2.39546753e+00 -2.92873789e-01 - -4.24251021e+00 -1.46255564e+00 - -5.01411291e-01 -5.95712813e-03 - 2.68085809e+00 1.42883780e+00 - -4.13289873e+00 -1.62729388e+00 - 1.87957843e+00 3.63341638e-01 - -1.15270744e+00 -3.03563774e-01 - -4.43994248e+00 -2.97323905e+00 - -7.17067733e-01 -7.08349542e-01 - -3.28870393e+00 -1.19263863e+00 - -7.55325944e-01 -5.12703329e-01 - -2.07291938e+00 -2.65025085e-01 - -7.50073814e-01 -1.70771041e-01 - -8.77381404e-01 -5.47417325e-01 - -5.33725862e-01 5.15837119e-01 - 8.45056431e-01 2.82125560e-01 - -1.59598637e+00 -1.38743235e+00 - 1.41362902e+00 1.06407789e+00 - 1.02584504e+00 -3.68219466e-01 - -1.04644488e+00 -1.48769392e-01 - 2.66990191e+00 8.57633492e-01 - -1.84251857e+00 -9.82430175e-01 - 9.71404204e-01 -2.81934209e-01 - -2.50177989e+00 -9.21260335e-01 - -1.31060074e+00 -5.84488113e-01 - -2.12129400e-01 -3.06244708e-02 - -5.28933882e+00 -2.50663129e+00 - 1.90220541e+00 1.08662918e+00 - -3.99366086e-02 -6.87178973e-01 - -4.93417342e-01 4.37354182e-01 - 2.13494486e+00 1.37679569e+00 - 2.18396765e+00 5.81023868e-01 - -3.07866587e+00 -1.45384974e+00 - 6.10894119e-01 -4.17050124e-01 - -1.88766952e+00 -8.86160058e-01 - 3.34527253e+00 1.78571260e+00 - 6.87769059e-01 -5.01157336e-01 - 2.60470837e+00 1.45853560e+00 - -6.49315691e-01 -9.16112805e-01 - -1.29817687e+00 -2.15924339e-01 - -1.20100409e-03 -4.03137422e-01 - -1.36471594e+00 -6.93266356e-01 - 1.38682062e+00 7.15131598e-01 - 2.47830103e+00 1.24862305e+00 - -2.78288147e+00 -1.03329235e+00 - -7.33443403e-01 -6.11041652e-01 - -4.12745671e-01 -5.96133390e-02 - -2.58632336e+00 -4.51557058e-01 - -1.16570367e+00 -1.27065510e+00 - 2.76187104e+00 2.21895451e-01 - -3.80443767e+00 -1.66319902e+00 - 9.84658633e-01 6.81475569e-01 - 9.33814584e-01 -4.89335563e-02 - -4.63427997e-01 1.72989539e-01 - 1.82401546e+00 3.60164021e-01 - -5.36521077e-01 -8.08691351e-01 - -1.37367030e+00 -1.02126160e+00 - -3.70310682e+00 -1.19840844e+00 - -1.51894242e+00 -3.89510223e-01 - -3.67347940e-01 -3.25540516e-02 - -1.00988595e+00 1.82802194e-01 - 2.01622795e+00 7.86367901e-01 - 1.02440231e+00 8.79780360e-01 - -3.05971480e+00 -8.40901527e-01 - 2.73909457e+00 1.20558628e+00 - 2.39559056e+00 1.10786694e+00 - 1.65471544e+00 7.33824651e-01 - 2.18546787e+00 6.41168955e-01 - 1.47152266e+00 3.91839132e-01 - 1.45811155e+00 5.21820495e-01 - -4.27531469e-02 -3.52343068e-03 - -9.54948010e-01 -1.52313876e-01 - 7.57151215e-01 -5.68728854e-03 - -8.46205751e-01 -7.54580229e-01 - 4.14493548e+00 1.45532780e+00 - 4.58688968e-01 -4.54012803e-02 - -1.49295381e+00 -4.57471758e-01 - 1.80020351e+00 8.13724973e-01 - -5.82727738e+00 -2.18269581e+00 - -2.09017809e+00 -1.18305177e+00 - -2.31628303e+00 -7.21600235e-01 - -8.09679091e-01 -1.49101752e-01 - 8.88005605e-01 8.57940857e-01 - -1.44148219e+00 -3.10926299e-01 - 3.68828186e-01 -3.08848059e-01 - -6.63267389e-01 -8.58950139e-02 - -1.14702569e+00 -6.32147854e-01 - -1.51741715e+00 -8.53330564e-01 - -1.33903718e+00 -1.45875547e-01 - 4.12485387e+00 1.85620435e+00 - -2.42353639e+00 -2.92669850e-01 - 1.88708583e+00 9.35984730e-01 - 2.15585179e+00 6.30469051e-01 - -1.13627973e-01 -1.62554045e-01 - 2.04540494e+00 1.36599834e+00 - 2.81591381e+00 1.60897941e+00 - 3.02736260e-02 3.83255815e-03 - 7.97634013e-02 -2.82035099e-01 - -3.24607473e-01 -5.30065956e-01 - -3.91862894e+00 -1.94083334e+00 - 1.56360901e+00 7.93882743e-01 - -1.03905772e+00 6.25590229e-01 - 2.54746492e+00 1.64233560e+00 - -4.80774423e-01 -8.92298032e-02 - 9.06979990e-02 1.05020427e+00 - -2.47521290e+00 -1.78275982e-01 - -3.91871729e-01 3.80285423e-01 - 1.00658382e+00 4.58947483e-01 - 4.68102941e-01 1.02992741e+00 - 4.44242568e-01 2.89870239e-01 - 3.29684452e+00 1.44677474e+00 - -2.24983007e+00 -9.65574499e-01 - -3.54453926e-01 -3.99020325e-01 - -3.87429665e+00 -1.90079739e+00 - 2.02656674e+00 1.12444894e+00 - 3.77011621e+00 1.43200852e+00 - 1.61259275e+00 4.65417399e-01 - 2.28725434e+00 6.79181395e-01 - 2.75421009e+00 2.27327345e+00 - -2.40894409e+00 -1.03926359e+00 - 1.52996651e-01 -2.73373046e-02 - -2.63218977e+00 -7.22802821e-01 - 2.77688169e+00 1.15310186e+00 - 1.18832341e+00 4.73457165e-01 - -2.35536326e+00 -1.08034554e+00 - -5.84221627e-01 1.03505984e-02 - 2.96730300e+00 1.33478306e+00 - -8.61947692e-01 6.09137051e-02 - 8.22343921e-01 -8.14155286e-02 - 1.75809015e+00 1.07921470e+00 - 1.19501279e+00 1.05309972e+00 - -1.75901792e+00 9.75320161e-02 - 1.64398635e+00 9.54384323e-01 - -2.21878052e-01 -3.64847144e-01 - -2.03128968e+00 -8.57866419e-01 - 1.86750633e+00 7.08524487e-01 - 8.03972976e-01 3.47404314e-01 - 3.41203749e+00 1.39810900e+00 - 4.22397681e-01 -6.41440488e-01 - -4.88493360e+00 -1.58967816e+00 - -1.67649284e-01 -1.08485915e-01 - 2.11489023e+00 1.50506158e+00 - -1.81639929e+00 -3.85542192e-01 - 2.24044819e-01 -1.45100577e-01 - -3.39262411e+00 -1.44394324e+00 - 1.68706599e+00 2.29199618e-01 - -1.94093257e+00 -1.65975814e-01 - 8.28143367e-01 5.92109281e-01 - -8.29587998e-01 -9.57130831e-01 - -1.50011401e+00 -8.36802092e-01 - 2.40770449e+00 9.32820177e-01 - 7.41391309e-02 3.12878473e-01 - 1.87745264e-01 6.19231425e-01 - 9.57622692e-01 -2.20640033e-01 - 3.18479243e+00 1.02986233e+00 - 2.43133846e+00 8.41302677e-01 - -7.09963834e-01 1.99718943e-01 - -2.88253498e-01 -3.62772094e-01 - 5.14052574e+00 1.79304595e+00 - -3.27930993e+00 -1.29177973e+00 - -1.16723536e+00 1.29519656e-01 - 1.04801056e+00 3.41508300e-01 - -3.99256195e+00 -2.51176471e+00 - -7.62824318e-01 -6.84242153e-01 - 2.71524986e-02 5.35157164e-02 - 3.26430102e+00 1.34887262e+00 - -1.72357766e+00 -4.94524388e-01 - -3.81149536e+00 -1.28121944e+00 - 3.36919354e+00 1.10672075e+00 - -3.14841757e+00 -7.10713767e-01 - -3.16463676e+00 -7.58558435e-01 - -2.44745969e+00 -1.08816514e+00 - 2.79173264e-01 -2.19652051e-02 - 4.15309883e-01 6.07502790e-01 - -9.51007417e-01 -5.83976336e-01 - -1.47929839e+00 -8.39850409e-01 - 2.38335703e+00 6.16055149e-01 - -7.47749031e-01 -5.56164928e-01 - -3.65643622e-01 -5.06684411e-01 - -1.76634163e+00 -7.86382097e-01 - 6.76372222e-01 -3.06592181e-01 - -1.33505058e+00 -1.18301441e-01 - 3.59660179e+00 2.00424178e+00 - -7.88912762e-02 8.71956146e-02 - 1.22656397e+00 1.18149583e+00 - 4.24919729e+00 1.20082355e+00 - 2.94607456e+00 1.00676505e+00 - 7.46061275e-02 4.41761753e-02 - -2.47738025e-02 1.92737701e-01 - -2.20509316e-01 -3.79163193e-01 - -3.50222190e-01 3.58727299e-01 - -3.64788014e+00 -1.36107312e+00 - 3.56062799e+00 9.27032742e-01 - 1.04317289e+00 6.08035970e-01 - 4.06718718e-01 3.00628051e-01 - 4.33158086e+00 2.25860714e+00 - 2.13917145e-01 -1.72757967e-01 - -1.40637998e+00 -1.14119465e+00 - 3.61554872e+00 1.87797348e+00 - 1.01726871e+00 5.70255097e-01 - -7.04902551e-01 2.16444147e-01 - -2.51492186e+00 -8.52997369e-01 - 1.85097530e+00 1.15124496e+00 - -8.67569714e-01 -3.05682432e-01 - 8.07550858e-01 5.88901608e-01 - 1.85186755e-01 -1.94589367e-01 - -1.23378238e+00 -7.84128347e-01 - -1.22713161e+00 -4.21218235e-01 - 2.97751165e-01 2.81055275e-01 - 4.77703554e+00 1.66265524e+00 - 2.51549669e+00 7.49980674e-01 - 2.76510822e-01 1.40456909e-01 - 1.98740905e+00 -1.79608212e-01 - 9.35429145e-01 8.44344180e-01 - -1.20854492e+00 -5.00598453e-01 - 2.29936219e+00 8.10236668e-01 - 6.92555544e-01 -2.65891331e-01 - -1.58050994e+00 2.31237821e-01 - -1.50864880e+00 -9.49661690e-01 - -1.27689206e+00 -7.18260016e-01 - -3.12517127e+00 -1.75587113e+00 - 8.16062912e-02 -6.56551804e-01 - -5.02479939e-01 -4.67162543e-01 - -5.47435788e+00 -2.47799576e+00 - 1.95872901e-02 5.80874076e-01 - -1.59064958e+00 -6.34554756e-01 - -3.77521478e+00 -1.74301790e+00 - 5.89628224e-01 8.55736553e-01 - -1.81903543e+00 -7.50011008e-01 - 1.38557775e+00 3.71490991e-01 - 9.70032652e-01 -7.11356016e-01 - 2.63539625e-01 -4.20994771e-01 - 2.12154222e+00 8.19081400e-01 - -6.56977937e-01 -1.37810098e-01 - 8.91309581e-01 2.77864361e-01 - -7.43693195e-01 -1.46293770e-01 - 2.24447769e+00 4.00911438e-01 - -2.25169262e-01 2.04148801e-02 - 1.68744684e+00 9.47573007e-01 - 2.73086373e-01 3.30877195e-01 - 5.54294414e+00 2.14198009e+00 - -8.49238733e-01 3.65603298e-02 - 2.39685712e+00 1.17951039e+00 - -2.58230528e+00 -5.52116673e-01 - 2.79785277e+00 2.88833717e-01 - -1.96576188e-01 1.11652123e+00 - -4.69383301e-01 1.96496282e-01 - -1.95011845e+00 -6.15235169e-01 - 1.03379890e-02 2.33701239e-01 - 4.18933607e-01 2.77939814e-01 - -1.18473337e+00 -4.10051126e-01 - -7.61499744e-01 -1.43658094e+00 - -1.65586092e+00 -3.41615303e-01 - -5.58523700e-02 -5.21837080e-01 - -2.40331088e+00 -2.64521583e-01 - 2.24925206e+00 6.79843335e-02 - 1.46360479e+00 1.04271443e+00 - -3.09255443e+00 -1.82548953e+00 - 2.11325841e+00 1.14996627e+00 - -8.70657797e-01 1.02461839e-01 - -5.71056521e-01 9.71232588e-02 - -3.37870752e+00 -1.54091877e+00 - 1.03907189e+00 -1.35661392e-01 - 8.40057486e-01 6.12172413e-02 - -1.30998234e+00 -1.34077226e+00 - 7.53744974e-01 1.49447350e-01 - 9.13995056e-01 -1.81227962e-01 - 2.28386229e-01 3.74498520e-01 - 2.54829151e-01 -2.88802704e-01 - 1.61709009e+00 2.09319193e-01 - -1.12579380e+00 -5.95955338e-01 - -2.69610726e+00 -2.76222736e-01 - -2.63773329e+00 -7.84491970e-01 - -2.62167427e+00 -1.54792874e+00 - -4.80639856e-01 -1.30582102e-01 - -1.26130891e+00 -8.86841840e-01 - -1.24951950e+00 -1.18182622e+00 - -1.40107574e+00 -9.13695575e-01 - 4.99872179e-01 4.69014702e-01 - -2.03550193e-02 -1.48859738e-01 - -1.50189069e+00 -2.97714278e-02 - -2.07846113e+00 -7.29937809e-01 - -5.50576792e-01 -7.03151525e-01 - -3.88069238e+00 -1.63215295e+00 - 2.97032988e+00 6.43571144e-01 - -1.85999273e-01 1.18107620e+00 - 1.79249709e+00 6.65356160e-01 - 2.68842472e+00 1.35703255e+00 - 1.07675417e+00 1.39845588e-01 - 8.01226349e-01 2.11392275e-01 - 9.64329379e-01 3.96146195e-01 - -8.22529511e-01 1.96080831e-01 - 1.92481841e+00 4.62985744e-01 - 3.69756927e-01 3.77135799e-01 - 1.19807835e+00 8.87715050e-01 - -1.01363587e+00 -2.48151636e-01 - 8.53071010e-01 4.96887868e-01 - -3.41120553e+00 -1.35401843e+00 - -2.64787381e+00 -1.08690563e+00 - -1.11416759e+00 -4.43848915e-01 - 1.46242648e+00 6.17106076e-02 - -7.52968881e-01 -9.20972209e-01 - -1.22492228e+00 -5.40327617e-01 - 1.08001827e+00 5.29593785e-01 - -2.58706464e-01 1.13022085e-01 - -4.27394011e-01 1.17864354e-02 - -3.20728413e+00 -1.71224737e-01 - 1.71398530e+00 8.68885893e-01 - 2.12067866e+00 1.45092772e+00 - 4.32782616e-01 -3.34117769e-01 - 7.80084374e-01 -1.35100217e-01 - -2.05547729e+00 -4.70217750e-01 - 2.38379736e+00 1.09186058e+00 - -2.80825477e+00 -1.03320187e+00 - 2.63434576e+00 1.15671733e+00 - -1.60936214e+00 1.91843035e-01 - -5.02298769e+00 -2.32820708e+00 - 1.90349195e+00 1.45215416e+00 - 3.00232888e-01 3.24412586e-01 - -2.46503943e+00 -1.19550010e+00 - 1.06304233e+00 2.20136246e-01 - -2.99101388e+00 -1.58299318e+00 - 2.30071719e+00 1.12881362e+00 - -2.37587247e+00 -8.08298336e-01 - 7.27006308e-01 3.80828984e-01 - 2.61199061e+00 1.56473491e+00 - 8.33936357e-01 -1.42189425e-01 - 3.13291605e+00 1.77771210e+00 - 2.21917371e+00 5.68427075e-01 - 2.38867649e+00 9.06637262e-01 - -6.92959466e+00 -3.57682881e+00 - 2.57904824e+00 5.93959108e-01 - 2.71452670e+00 1.34436199e+00 - 4.39988761e+00 2.13124672e+00 - 5.71783077e-01 5.08346173e-01 - -3.65399429e+00 -1.18192861e+00 - 4.46176453e-01 3.75685594e-02 - -2.97501495e+00 -1.69459236e+00 - 1.60855728e+00 9.20930014e-01 - -1.44270290e+00 -1.93922306e-01 - 1.67624229e+00 1.66233866e+00 - -1.42579598e+00 -1.44990145e-01 - 1.19923176e+00 4.58490278e-01 - -9.00068460e-01 5.09701825e-02 - -1.69391694e+00 -7.60070300e-01 - -1.36576440e+00 -5.24244256e-01 - -1.03016748e+00 -3.44625878e-01 - 2.40519313e+00 1.09947587e+00 - 1.50365433e+00 1.06464802e+00 - -1.07609727e+00 -3.68897187e-01 - 2.44969069e+00 1.28486192e+00 - -1.25610307e+00 -1.14644789e+00 - 2.05962899e+00 4.31162369e-01 - -7.15886908e-01 -6.11587804e-02 - -6.92354119e-01 -7.85019920e-01 - -1.63016508e+00 -5.96944975e-01 - 1.90352536e+00 1.28197457e+00 - -4.01535243e+00 -1.81934488e+00 - -1.07534435e+00 -2.10544784e-01 - 3.25500866e-01 7.69603661e-01 - 2.18443365e+00 6.59773335e-01 - 8.80856790e-01 6.39505913e-01 - -2.23956372e-01 -4.65940132e-01 - -1.06766519e+00 -5.38388505e-03 - 7.25556863e-01 -2.91123488e-01 - -4.69451411e-01 7.89182650e-02 - 2.58146587e+00 1.29653243e+00 - 1.53747468e-01 7.69239075e-01 - -4.61152262e-01 -4.04151413e-01 - 1.48183517e+00 8.10079506e-01 - -1.83402614e+00 -1.36939322e+00 - 1.49315501e+00 7.95225425e-01 - 1.41922346e+00 1.05582774e-01 - 1.57473493e-01 9.70795657e-01 - -2.67603254e+00 -7.48562280e-01 - -8.49156216e-01 -6.05762529e-03 - 1.12944274e+00 3.67741591e-01 - 1.94228071e-01 5.28188141e-01 - -3.65610158e-01 4.05851838e-01 - -1.98839111e+00 -1.38452764e+00 - 2.73765752e+00 8.24150530e-01 - 7.63728641e-01 3.51617707e-01 - 5.78307267e+00 1.68103612e+00 - 2.27547227e+00 3.60876164e-01 - -3.50681697e+00 -1.74429984e+00 - 4.01241184e+00 1.26227829e+00 - 2.44946343e+00 9.06119057e-01 - -2.96638941e+00 -9.01532322e-01 - 1.11267643e+00 -3.43333381e-01 - -6.61868994e-01 -3.44666391e-01 - -8.34917179e-01 5.69478372e-01 - -1.91888454e+00 -3.03791075e-01 - 1.50397636e+00 8.31961240e-01 - 6.12260198e+00 2.16851807e+00 - 1.34093127e+00 8.86649385e-01 - 1.48748519e+00 8.26273697e-01 - 7.62243068e-01 2.64841396e-01 - -2.17604986e+00 -3.54219958e-01 - 2.64708640e-01 -4.38136718e-02 - 1.44725372e+00 1.18499914e-01 - -6.71259446e-01 -1.19526851e-01 - 2.40134595e-01 -8.90042323e-02 - -3.57238199e+00 -1.23166201e+00 - -3.77626645e+00 -1.19533443e+00 - -3.81101035e-01 -4.94160532e-01 - -3.02758757e+00 -1.18436066e+00 - 2.59116298e-01 1.38023047e+00 - 4.17900116e+00 1.12065959e+00 - 1.54598848e+00 2.89806755e-01 - 1.00656475e+00 1.76974511e-01 - -4.15730234e-01 -6.22681694e-01 - -6.00903565e-01 -1.43256959e-01 - -6.03652508e-01 -5.09936379e-01 - -1.94096658e+00 -9.48789544e-01 - -1.74464105e+00 -8.50491590e-01 - 1.17652544e+00 1.88118317e+00 - 2.35507776e+00 1.44000205e+00 - 2.63067924e+00 1.06692988e+00 - 2.88805386e+00 1.23924715e+00 - 8.27595008e-01 5.75364692e-01 - 3.91384216e-01 9.72781920e-02 - -1.03866816e+00 -1.37567768e+00 - -1.34777969e+00 -8.40266025e-02 - -4.12904508e+00 -1.67618340e+00 - 1.27918111e+00 3.52085961e-01 - 4.15361174e-01 6.28896189e-01 - -7.00539496e-01 4.80447955e-02 - -1.62332639e+00 -5.98236485e-01 - 1.45957300e+00 1.00305154e+00 - -3.06875603e+00 -1.25897545e+00 - -1.94708176e+00 4.85143006e-01 - 3.55744156e+00 -1.07468822e+00 - 1.21602223e+00 1.28768827e-01 - 1.89093098e+00 -4.70835659e-01 - -6.55759125e+00 2.70114082e+00 - 8.96843535e-01 -3.98115252e-01 - 4.13450429e+00 -2.32069236e+00 - 2.37764218e+00 -1.09098890e+00 - -1.11388901e+00 6.27083097e-01 - -6.34116929e-01 4.62816387e-01 - 2.90203079e+00 -1.33589143e+00 - 3.17457598e+00 -5.13575945e-01 - -1.76362299e+00 5.71820693e-01 - 1.66103362e+00 -8.99466249e-01 - -2.53947433e+00 8.40084780e-01 - 4.36631397e-01 7.24234261e-02 - -1.87589394e+00 5.08529113e-01 - 4.49563965e+00 -9.43365992e-01 - 1.78876299e+00 -1.27076149e+00 - -1.16269107e-01 -4.55078316e-01 - 1.92966079e+00 -8.05371385e-01 - 2.20632583e+00 -9.00919345e-01 - 1.52387824e+00 -4.82391996e-01 - 8.04004564e-01 -2.73650595e-01 - -7.75326067e-01 1.07469566e+00 - 1.83226282e+00 -4.52173344e-01 - 1.25079758e-01 -3.52895417e-02 - -9.90957437e-01 8.55993130e-01 - 1.71623322e+00 -7.08691667e-01 - -2.86175924e+00 6.75160955e-01 - -8.40817853e-01 -1.00361809e-01 - 1.33393000e+00 -4.65788123e-01 - 5.29394114e-01 -5.44881619e-02 - -8.07435599e-01 8.27353370e-01 - -4.33165824e+00 1.97299638e+00 - 1.26452422e+00 -8.34070486e-01 - 1.45996394e-02 2.97736043e-01 - -1.64489287e+00 6.72839598e-01 - -5.74234578e+00 3.20975117e+00 - 2.13841341e-02 3.64514015e-01 - 6.68084924e+00 -2.27464254e+00 - -3.22881590e+00 8.01879324e-01 - 3.02534313e-01 -4.56222796e-01 - -5.84520734e+00 1.95678162e+00 - 2.81515232e+00 -1.72101318e+00 - -2.39620908e-01 2.69145522e-01 - -7.41669691e-01 -2.30283281e-01 - -2.15682714e+00 3.45313021e-01 - 1.23475788e+00 -7.32276553e-01 - -1.71816113e-01 1.20419560e-02 - 1.89174235e+00 2.27435901e-01 - -3.64511114e-01 1.72260361e-02 - -3.24143860e+00 6.50125817e-01 - -2.25707409e+00 5.66970751e-01 - 1.03901456e+00 -1.00588433e+00 - -5.09159710e+00 1.58736109e+00 - 1.45534075e+00 -5.83787452e-01 - 4.28879587e+00 -1.58006866e+00 - 8.52384427e-01 -1.11042299e+00 - 4.51431615e+00 -2.63844265e+00 - -4.33042648e+00 1.86497078e+00 - -2.13568046e+00 5.82559743e-01 - -4.42568887e+00 1.26131214e+00 - 3.15821315e+00 -1.61515905e+00 - -3.14125204e+00 8.49604386e-01 - 6.54152300e-01 -2.04624711e-01 - -3.73374317e-01 9.94187820e-02 - -3.96177282e+00 1.27245623e+00 - 9.59825199e-01 -1.15547861e+00 - 3.56902055e+00 -1.46591091e+00 - 1.55433633e-02 6.93544345e-01 - 1.15684646e+00 -4.99836352e-01 - 3.11824573e+00 -4.75900506e-01 - -8.61706369e-01 -3.50774059e-01 - 9.89057391e-01 -7.16878802e-01 - -4.94787870e+00 2.09137481e+00 - 1.37777347e+00 -1.34946349e+00 - -1.13161577e+00 8.05114754e-01 - 8.12020675e-01 -1.04849421e+00 - 4.73783881e+00 -2.26718812e+00 - 8.99579366e-01 -8.89764451e-02 - 4.78524868e+00 -2.25795843e+00 - 1.75164590e+00 -1.73822209e-01 - 1.30204590e+00 -7.26724717e-01 - -7.26526403e-01 -5.23925361e-02 - 2.01255351e+00 -1.69965366e+00 - 9.87852740e-01 -4.63577220e-01 - 2.45957762e+00 -1.29278962e+00 - -3.13817948e+00 1.64433038e+00 - -1.76302159e+00 9.62784302e-01 - -1.91106331e+00 5.81460008e-01 - -3.30883001e+00 1.30378978e+00 - 5.54376450e-01 3.78814272e-01 - 1.09982111e+00 -1.47969612e+00 - -2.61300705e-02 -1.42573464e-01 - -2.22096157e+00 7.75684440e-01 - 1.70319323e+00 -2.89738444e-01 - -1.43223842e+00 6.39284281e-01 - 2.34360959e-01 -1.64379268e-01 - -2.67147991e+00 9.46548086e-01 - 1.51131425e+00 -4.91594395e-01 - -2.48446856e+00 1.01286123e+00 - 1.50534658e-01 -2.94620246e-01 - -1.66966792e+00 1.67755508e+00 - -1.50094241e+00 3.30163095e-01 - 2.27681194e+00 -1.08064317e+00 - 2.05122965e+00 -1.15165939e+00 - -4.23509309e-01 -6.56906167e-02 - 1.80084023e+00 -1.07228556e+00 - -2.65769521e+00 1.18023206e+00 - 2.02852676e+00 -8.06793574e-02 - -4.49544185e+00 2.68200163e+00 - -7.50043216e-01 1.17079331e+00 - 6.80060893e-02 3.99055351e-01 - -3.83634635e+00 1.38406887e+00 - 3.24858545e-01 -9.25273218e-02 - -2.19895100e+00 1.47819500e+00 - -3.61569522e-01 -1.03188739e-01 - 1.12180375e-01 -9.52696354e-02 - -1.31477803e+00 1.79900570e-01 - 2.39573628e+00 -6.09739269e-01 - -1.00135700e+00 6.02837296e-01 - -4.11994589e+00 2.49599192e+00 - -1.54196236e-01 -4.84921951e-01 - 5.92569908e-01 -1.87310359e-01 - 3.85407741e+00 -1.50979925e+00 - 5.17802528e+00 -2.26032607e+00 - -1.37018916e+00 1.87111822e-01 - 8.46682996e-01 -3.56676331e-01 - -1.17559949e+00 5.29057734e-02 - -5.56475671e-02 6.79049243e-02 - 1.07851745e+00 -5.14535101e-01 - -2.71622446e+00 1.00151846e+00 - -1.08477208e+00 8.81391054e-01 - 5.50755824e-01 -5.20577727e-02 - 4.70885495e+00 -2.04220397e+00 - -1.87375336e-01 -6.16962830e-02 - 3.52097100e-01 2.21163550e-01 - 7.07929984e-01 -1.75827590e-01 - -1.22149219e+00 1.83084346e-01 - 2.58247412e+00 -6.15914898e-01 - -6.01206182e-01 -2.29832987e-01 - 9.83360449e-01 -3.75870060e-01 - -3.20027685e+00 1.35467480e+00 - 1.79178978e+00 -1.38531981e+00 - -3.30376867e-01 -1.16250192e-01 - -1.89053055e+00 5.68463567e-01 - -4.20604849e+00 1.65429681e+00 - -1.01185529e+00 1.92801240e-01 - -6.18819882e-01 5.42206996e-01 - -5.08091672e+00 2.61598591e+00 - -2.62570344e+00 2.51590658e+00 - 3.05577906e+00 -1.49090609e+00 - 2.77609677e+00 -1.37681378e+00 - -7.93515301e-02 4.28072744e-01 - -2.08359471e+00 8.94334295e-01 - 2.20163801e+00 4.01127167e-02 - -1.18145785e-01 -2.06822464e-01 - -2.74788298e-01 2.96250607e-01 - 1.59613555e+00 -3.87246203e-01 - -3.82971472e-01 -3.39716093e-02 - -4.20311307e-02 3.88529510e-01 - 1.52128574e+00 -9.33138876e-01 - -9.06584458e-01 -2.75016094e-02 - 3.56216834e+00 -9.99384622e-01 - 2.11964220e+00 -9.98749118e-02 - 4.01203480e+00 -2.03032745e+00 - -1.24171557e+00 1.97596725e-01 - -1.57230455e+00 4.14126609e-01 - -1.85484741e+00 5.40041563e-01 - 1.76329831e+00 -6.95967734e-01 - -2.29439232e-01 5.08669245e-01 - -5.45124276e+00 2.26907549e+00 - -5.71364288e-02 5.04476476e-01 - 3.12468018e+00 -1.46358879e+00 - 8.20017359e-01 6.51949028e-01 - -1.33977500e+00 2.83634232e-04 - -1.83311685e+00 1.23947117e+00 - 6.31205922e-01 1.19792164e-02 - -2.21967834e+00 6.94056232e-01 - -1.41693842e+00 9.93526233e-01 - -7.58885703e-01 6.78547347e-01 - 3.60239086e+00 -1.08644935e+00 - 6.72217073e-02 3.00036011e-02 - -3.42680958e-01 -3.48049352e-01 - 1.87546079e+00 -4.78018246e-01 - 7.00485821e-01 -3.52905383e-01 - -8.54580948e-01 8.17330861e-01 - 8.19123706e-01 -5.73927281e-01 - 2.70855639e-01 -3.08940052e-01 - -1.05059952e+00 3.27873168e-01 - 1.08282999e+00 4.84559349e-02 - -7.89899220e-01 1.22291138e+00 - -2.87939816e+00 7.17403497e-01 - -2.08429452e+00 8.87409226e-01 - 1.58409232e+00 -4.74123532e-01 - 1.26882735e+00 1.59162510e-01 - -2.53782993e+00 6.18253491e-01 - -8.92757445e-01 3.35979011e-01 - 1.31867900e+00 -1.17355054e+00 - 1.14918879e-01 -5.35184038e-01 - -1.70288738e-01 5.35868087e-02 - 4.21355121e-01 5.41848690e-02 - 2.07926943e+00 -5.72538144e-01 - 4.08788970e-01 3.77655777e-01 - -3.39631381e+00 9.84216764e-01 - 2.94170163e+00 -1.83120916e+00 - -7.94798752e-01 7.39889052e-01 - 1.46555463e+00 -4.62275563e-01 - 2.57255955e+00 -1.04671434e+00 - 8.45042540e-01 -1.96952892e-01 - -3.23526646e+00 1.60049846e+00 - 3.21948565e+00 -8.88376674e-01 - 1.43005104e+00 -9.21561086e-01 - 8.82360506e-01 2.98403872e-01 - -8.91168097e-01 1.01319072e+00 - -5.13215241e-01 -2.47182649e-01 - -1.35759444e+00 7.07450608e-02 - -4.04550983e+00 2.23534867e+00 - 1.39348883e+00 3.81637747e-01 - -2.85676418e+00 1.53240862e+00 - -1.37183120e+00 6.37977425e-02 - -3.88195859e+00 1.73887145e+00 - 1.19509776e+00 -6.25013512e-01 - -2.80062734e+00 1.79840585e+00 - 1.96558429e+00 -4.70997234e-01 - 1.93111352e+00 -9.70318441e-01 - 3.57991190e+00 -1.65065116e+00 - 2.12831714e+00 -1.11531708e+00 - -3.95661018e-01 -8.54339904e-02 - -2.41630441e+00 1.65166304e+00 - 7.55412624e-01 -1.53453579e-01 - -1.77043450e+00 1.39928715e+00 - -9.32631260e-01 8.73649199e-01 - 1.53342205e+00 -8.39569765e-01 - -6.29846924e-02 1.25023084e-01 - 3.31509049e+00 -1.10733235e+00 - -2.18957109e+00 3.07376993e-01 - -2.35740747e+00 6.47437564e-01 - -2.22142438e+00 8.47318938e-01 - -6.51401147e-01 3.48398562e-01 - 2.75763095e+00 -1.21390708e+00 - 1.12550484e+00 -5.61412847e-01 - -5.65053161e-01 6.74365205e-02 - 1.68952456e+00 -6.57566096e-01 - 8.95598401e-01 3.96738993e-01 - -1.86537066e+00 9.44129208e-01 - -2.59933294e+00 2.57423247e-01 - -6.59598267e-01 1.91828851e-02 - -2.64506676e+00 8.41783205e-01 - -1.25911802e+00 5.52425066e-01 - -1.39754507e+00 3.73689222e-01 - 5.49550729e-02 1.35071215e+00 - 3.31874811e+00 -1.05682424e+00 - 3.63159604e+00 -1.42864695e+00 - -4.45944617e+00 1.42889446e+00 - 5.87314342e-01 -4.88892988e-01 - -7.26130820e-01 1.51936106e-01 - -1.79246441e+00 6.05888105e-01 - -5.50948207e-01 6.21443081e-01 - -3.17246063e-01 1.77213880e-01 - -2.00098937e+00 1.23799074e+00 - 4.33790961e+00 -1.08490465e+00 - -2.03114114e+00 1.31613237e+00 - -6.29216542e+00 1.92406317e+00 - -1.60265624e+00 8.87947500e-01 - 8.64465062e-01 -8.37416270e-01 - -2.14273937e+00 8.05485900e-01 - -2.36844256e+00 6.17915124e-01 - -1.40429636e+00 6.78296866e-01 - 9.99019988e-01 -5.84297572e-01 - 7.38824546e-01 1.68838678e-01 - 1.45681238e+00 3.04641461e-01 - 2.15914949e+00 -3.43089227e-01 - -1.23895930e+00 1.05339864e-01 - -1.23162264e+00 6.46629863e-01 - 2.28183862e+00 -9.24157063e-01 - -4.29615882e-01 5.69130863e-01 - -1.37449121e+00 -9.12032183e-01 - -7.33890904e-01 -3.91865471e-02 - 8.41400661e-01 -4.76002200e-01 - -1.73349274e-01 -6.84143467e-02 - 3.16042891e+00 -1.32651856e+00 - -3.78244609e+00 2.38619718e+00 - -3.69634380e+00 2.22368561e+00 - 1.83766344e+00 -1.65675953e+00 - -1.63206002e+00 1.19484469e+00 - 3.68480064e-01 -5.70764494e-01 - 3.61982479e-01 1.04274409e-01 - 2.48863048e+00 -1.13285542e+00 - -2.81896488e+00 9.47958768e-01 - 5.74952901e-01 -2.75959392e-01 - 3.72783275e-01 -3.48937848e-01 - 1.95935716e+00 -1.06750415e+00 - 5.19357531e+00 -2.32070803e+00 - 4.09246149e+00 -1.89976700e+00 - -3.36666087e-01 8.17645057e-02 - 1.85453493e-01 3.76913151e-01 - -3.06458262e+00 1.34106402e+00 - -3.13796566e+00 7.00485099e-01 - 1.42964058e+00 -1.35536932e-01 - -1.23440423e-01 4.60094177e-02 - -2.86753037e+00 -5.21724160e-02 - 2.67113726e+00 -1.83746924e+00 - -1.35335062e+00 1.28238073e+00 - -2.43569899e+00 1.25998539e+00 - 1.26036740e-01 -2.35416844e-01 - -1.35725745e+00 7.37788491e-01 - -3.80897538e-01 3.30757889e-01 - 6.58694434e-01 -1.07566603e+00 - 2.11273640e+00 -9.02260632e-01 - 4.00755057e-01 -2.49229150e-02 - -1.80095812e+00 9.73099742e-01 - -2.68408372e+00 1.63737364e+00 - -2.66079826e+00 7.47289412e-01 - -9.92321439e-02 -1.49331396e-01 - 4.45678251e+00 -1.80352394e+00 - 1.35962915e+00 -1.31554389e+00 - -7.76601417e-01 -9.66173523e-02 - 1.68096348e+00 -6.27235133e-01 - 1.53081227e-01 -3.54216830e-01 - -1.54913095e+00 3.43689269e-01 - 5.29187357e-02 -6.73916964e-01 - -2.06606084e+00 8.34784242e-01 - 1.73701179e+00 -6.06467340e-01 - 1.55856757e+00 -2.58642780e-01 - 1.04349101e+00 -4.43027348e-01 - -1.02397719e+00 1.01308824e+00 - -2.13860204e-01 -4.73347361e-01 - -2.59004955e+00 1.43367853e+00 - 7.98457679e-01 2.18621627e-02 - -1.32974762e+00 4.61802208e-01 - 3.21419359e-01 2.30723316e-02 - 2.87201888e-02 6.24566672e-02 - -1.22261418e+00 6.02340363e-01 - 1.28750335e+00 -3.34839548e-02 - -9.67952623e-01 4.34470505e-01 - 2.02850324e+00 -9.05160255e-01 - -4.13946010e+00 2.33779091e+00 - -4.47508806e-01 3.06440495e-01 - -3.91543394e+00 1.68251022e+00 - -6.45193001e-01 5.29781162e-01 - -2.15518916e-02 5.07278355e-01 - -2.83356868e+00 1.00670227e+00 - 1.82989749e+00 -1.37329222e+00 - -1.09330213e+00 1.08560688e+00 - 1.90533722e+00 -1.28905879e+00 - 2.33986084e+00 2.30642626e-02 - 8.01940220e-01 -1.63986962e+00 - -4.23415165e+00 2.07530423e+00 - 9.33382522e-01 -7.62917211e-01 - -1.84033954e+00 1.07469401e+00 - -2.81938669e+00 1.07342024e+00 - -7.05169988e-01 2.13124943e-01 - 5.09598137e-01 1.32725493e-01 - -2.34558226e+00 8.62383168e-01 - -1.70322072e+00 2.70893796e-01 - 1.23652660e+00 -7.53216034e-02 - 2.84660646e+00 -3.48178304e-02 - 2.50250128e+00 -1.27770855e+00 - -1.00279469e+00 8.77194218e-01 - -4.34674121e-02 -2.12091350e-01 - -5.84151289e-01 1.50382340e-01 - -1.79024013e+00 4.24972808e-01 - -1.23434666e+00 -8.85546570e-02 - 1.36575412e+00 -6.42639880e-01 - -1.98429947e+00 2.27650336e-01 - 2.36253589e+00 -1.51340773e+00 - 8.79157643e-01 6.84142159e-01 - -2.18577755e+00 2.76526200e-01 - -3.55473434e-01 8.29976561e-01 - 1.16442595e+00 -5.97699411e-01 - -7.35528097e-01 2.40318183e-01 - -1.73702631e-01 7.33788663e-02 - -1.40451745e+00 3.24899628e-01 - -2.05434385e+00 5.68123738e-01 - 8.47876642e-01 -5.74224294e-01 - -6.91955602e-01 1.26009087e+00 - 2.56574498e+00 -1.15602581e+00 - 3.93306545e+00 -1.38398209e+00 - -2.73230251e+00 4.89062581e-01 - -1.04315474e+00 6.06335547e-01 - 1.23231431e+00 -4.46675065e-01 - -3.93035285e+00 1.43287651e+00 - -1.02132111e+00 9.58919791e-01 - -1.49425352e+00 1.06456165e+00 - -6.26485337e-01 1.03791402e+00 - -6.61772998e-01 2.63275425e-01 - -1.80940386e+00 5.70767403e-01 - 9.83720450e-01 -1.39449756e-01 - -2.24619662e+00 9.01044870e-01 - 8.94343014e-01 5.31038678e-02 - 1.95518199e-01 -2.81343295e-01 - -2.30533019e-01 -1.74478106e-01 - -2.01550361e+00 5.55958010e-01 - -4.36281469e+00 1.94374226e+00 - -5.18530457e+00 2.89278357e+00 - 2.67289101e+00 -2.98511449e-01 - -1.53566179e+00 -1.00588944e-01 - -6.09943217e-02 -1.56986047e-01 - -5.22146452e+00 1.66209208e+00 - -3.69777478e+00 2.26154873e+00 - 2.24607181e-01 -4.86934960e-01 - 2.49909450e+00 -1.03033370e+00 - -1.07841120e+00 8.22388054e-01 - -3.20697089e+00 1.09536143e+00 - 3.43524232e+00 -1.47289362e+00 - -5.65784134e-01 4.60365175e-01 - -1.76714734e+00 1.57752346e-01 - -7.77620365e-01 5.60153443e-01 - 6.34399352e-01 -5.22339836e-01 - 2.91011875e+00 -9.72623380e-01 - -1.19286824e+00 6.32370253e-01 - -2.18327609e-01 8.23953181e-01 - 3.42430842e-01 1.37098055e-01 - 1.28658034e+00 -9.11357320e-01 - 2.06914465e+00 -6.67556382e-01 - -6.69451020e-01 -6.38605102e-01 - -2.09312398e+00 1.16743634e+00 - -3.63778357e+00 1.91919157e+00 - 8.74685911e-01 -1.09931208e+00 - -3.91496791e+00 1.00808357e+00 - 1.29621330e+00 -8.32239802e-01 - 9.00222045e-01 -1.31159793e+00 - -1.12242062e+00 1.98517079e-01 - -3.71932852e-01 1.31667093e-01 - -2.23829610e+00 1.26328346e+00 - -2.08365062e+00 9.93385336e-01 - -1.91082720e+00 7.45866855e-01 - 4.38024917e+00 -2.05901118e+00 - -2.28872886e+00 6.85279335e-01 - 1.01274497e-01 -3.26227153e-01 - -5.04447572e-01 -3.18619513e-01 - 1.28537006e+00 -1.04573551e+00 - -7.83175212e-01 1.54791645e-01 - -3.89239175e+00 1.60017929e+00 - -8.87877111e-01 -1.04968005e-01 - 9.32215179e-01 -5.58691113e-01 - -6.44977127e-01 -2.23018375e-01 - 1.10141900e+00 -1.00666432e+00 - 2.92755687e-01 -1.45480350e-01 - 7.73580681e-01 -2.21150567e-01 - -1.40873709e+00 7.61548044e-01 - -8.89031805e-01 -3.48542923e-01 - 4.16844267e-01 -2.39914494e-01 - -4.64265832e-01 7.29581138e-01 - 1.99835179e+00 -7.70542813e-01 - 4.20523191e-02 -2.18783563e-01 - -6.32611758e-01 -3.09926115e-01 - 6.82912198e-02 -8.48327050e-01 - 1.92425229e+00 -1.37876951e+00 - 3.49461782e+00 -1.88354255e+00 - -3.25209026e+00 1.49809395e+00 - 6.59273182e-01 -2.37435654e-01 - -1.15517300e+00 8.46134387e-01 - 1.26756151e+00 -4.58988026e-01 - -3.99178418e+00 2.04153008e+00 - 7.05687841e-01 -6.83433306e-01 - -1.61997342e+00 8.16577004e-01 - -3.89750399e-01 4.29753250e-01 - -2.53026432e-01 4.92861432e-01 - -3.16788324e+00 4.44285524e-01 - -7.86248901e-01 1.12753716e+00 - -3.02351433e+00 1.28419015e+00 - -1.30131355e+00 1.71226678e+00 - -4.08843475e+00 1.62063214e+00 - -3.09209403e+00 1.19958520e+00 - 1.49102271e+00 -1.11834864e+00 - -3.18059348e+00 5.74587042e-01 - 2.06054867e+00 3.25797860e-03 - -3.50999200e+00 2.02412428e+00 - -8.26610023e-01 3.46528211e-01 - 2.00546034e+00 -4.07333110e-01 - -9.69941653e-01 4.80953753e-01 - 4.47925660e+00 -2.33127314e+00 - 2.03845790e+00 -9.90439915e-01 - -1.11349191e+00 4.31183918e-01 - -4.03628396e+00 1.68509679e+00 - -1.48177601e+00 7.74322088e-01 - 3.07369385e+00 -9.57465886e-01 - 2.39011286e+00 -6.44506921e-01 - 2.91561991e+00 -8.78627328e-01 - 1.10212733e+00 -4.21637388e-01 - 5.31985231e-01 -6.17445696e-01 - -6.82340929e-01 -2.93529716e-01 - 1.94290679e+00 -4.64268634e-01 - 1.92262116e+00 -7.93142835e-01 - 4.73762800e+00 -1.63654174e+00 - -3.17848641e+00 8.05791391e-01 - 4.08739432e+00 -1.80816807e+00 - -7.60648826e-01 1.24216138e-01 - -2.24716400e+00 7.90020937e-01 - 1.64284052e+00 -7.18784070e-01 - 1.04410012e-01 -7.11195880e-02 - 2.18268225e+00 -7.01767831e-01 - 2.06218013e+00 -8.70251746e-01 - -1.35266581e+00 7.08456358e-01 - -1.38157779e+00 5.14401086e-01 - -3.28326008e+00 1.20988399e+00 - 8.85358917e-01 -8.12213495e-01 - -2.34067500e+00 3.67657353e-01 - 3.96878127e+00 -1.66841450e+00 - 1.36518053e+00 -8.33436812e-01 - 5.25771988e-01 -5.06121987e-01 - -2.25948361e+00 1.30663765e+00 - -2.57662070e+00 6.32114628e-01 - -3.43134685e+00 2.38106008e+00 - 2.31571924e+00 -1.56566818e+00 - -2.95397202e+00 1.05661888e+00 - -1.35331242e+00 6.76383411e-01 - 1.40977132e+00 -1.17775938e+00 - 1.52561996e+00 -9.83147176e-01 - 2.26550832e+00 -2.10464123e-02 - 6.23371684e-01 -5.30768122e-01 - -4.42356624e-01 9.72226986e-01 - 2.31517901e+00 -1.08468105e+00 - 1.97236640e+00 -1.42016619e+00 - 3.18618687e+00 -1.45056343e+00 - -2.75880360e+00 5.40254980e-01 - -1.92916581e+00 1.45029864e-01 - 1.90022524e+00 -6.03805754e-01 - -1.05446211e+00 5.74361752e-01 - 1.45990390e+00 -9.28233993e-01 - 5.14960557e+00 -2.07564096e+00 - -7.53104842e-01 1.55876958e-01 - 8.09490983e-02 -8.58886384e-02 - -1.56894969e+00 4.53497227e-01 - 1.36944658e-01 5.60670875e-01 - -5.32635329e-01 4.40309945e-01 - 1.32507853e+00 -5.83670099e-01 - 1.20676031e+00 -8.02296831e-01 - -3.65023422e+00 1.17211368e+00 - 1.53393850e+00 -6.17771312e-01 - -3.99977129e+00 1.71415137e+00 - 5.70705058e-01 -4.60771539e-01 - -2.20608002e+00 1.07866596e+00 - -1.09040244e+00 6.77441076e-01 - -5.09886482e-01 -1.97282128e-01 - -1.58062785e+00 6.18333697e-01 - -1.53295020e+00 4.02168701e-01 - -5.18580598e-01 2.25767177e-01 - 1.59514316e+00 -2.54983617e-01 - -5.91938655e+00 2.68223782e+00 - 2.84200509e+00 -1.04685313e+00 - 1.31298664e+00 -1.16672614e+00 - -2.36660033e+00 1.81359460e+00 - 6.94163290e-02 3.76658816e-01 - 2.33973934e+00 -8.33173023e-01 - -8.24640389e-01 7.83717285e-01 - -1.02888281e+00 1.04680766e+00 - 1.34750745e+00 -5.89568160e-01 - -2.48761231e+00 7.44199284e-01 - -1.04501559e+00 4.72326911e-01 - -3.14610089e+00 1.89843692e+00 - 2.13003416e-01 5.76633620e-01 - -1.69239608e+00 5.66070021e-01 - 1.80491280e+00 -9.31701080e-01 - -6.94362572e-02 6.96026587e-01 - 1.36502578e+00 -6.85599000e-02 - -7.76764337e-01 3.64328661e-01 - -2.67322167e+00 6.80150021e-01 - 1.84338485e+00 -1.18487494e+00 - 2.88009231e+00 -1.25700411e+00 - 1.17114433e+00 -7.69727080e-01 - 2.11576167e+00 2.81502116e-01 - -1.51470088e+00 2.61553540e-01 - 1.18923669e-01 -1.17890202e-01 - 4.48359786e+00 -1.81427466e+00 - -1.27055948e+00 9.92388998e-01 - -8.00276606e-01 9.11326621e-02 - 7.51764024e-01 -1.03676498e-01 - 1.35769348e-01 -2.11470084e-01 - 2.50731332e+00 -1.12418270e+00 - -2.49752781e-01 7.81224033e-02 - -6.23037902e-01 3.16599691e-01 - -3.93772902e+00 1.37195391e+00 - 1.74256361e+00 -1.12363582e+00 - -1.49737281e+00 5.98828310e-01 - 7.75592115e-01 -4.64733802e-01 - -2.26027693e+00 1.36991118e+00 - -1.62849836e+00 7.36899107e-01 - 2.36850751e+00 -9.32126872e-01 - 5.86169745e+00 -2.49342512e+00 - -5.37092226e-01 1.23821274e+00 - 2.80535867e+00 -1.93363302e+00 - -1.77638106e+00 9.10050276e-01 - 3.02692018e+00 -1.60774676e+00 - 1.97833084e+00 -1.50636531e+00 - 9.09168906e-01 -8.83799359e-01 - 2.39769655e+00 -7.56977869e-01 - 1.47283981e+00 -1.06749890e+00 - 2.92060943e-01 -6.07040605e-01 - -2.09278201e+00 7.71858590e-01 - 7.10015905e-01 -5.42768432e-01 - -2.16826169e-01 1.56897896e-01 - 4.56288247e+00 -2.08912680e+00 - -6.63374020e-01 6.67325183e-01 - 1.80564442e+00 -9.76366134e-01 - 3.28720168e+00 -4.66575145e-01 - -1.60463695e-01 -2.58428153e-01 - 1.78590750e+00 -3.96427146e-01 - 2.75950306e+00 -1.82102856e+00 - -1.18234310e+00 6.28073320e-01 - 4.11415835e+00 -2.33551216e+00 - 1.38721004e+00 -2.77450622e-01 - -2.94903545e+00 1.74813352e+00 - 8.67290400e-01 -6.51667894e-01 - 2.70022274e+00 -8.11832480e-01 - -2.06766146e+00 8.24047249e-01 - 3.90717142e+00 -1.20155758e+00 - -2.95102809e+00 1.36667968e+00 - 6.08815147e+00 -2.60737974e+00 - 2.78576476e+00 -7.86628755e-01 - -3.26258407e+00 1.09302450e+00 - 1.59849422e+00 -1.09705202e+00 - -2.50600710e-01 1.63243175e-01 - -4.90477087e-01 -4.57729572e-01 - -1.24837181e+00 3.22157840e-01 - -2.46341049e+00 1.06517849e+00 - 9.62880751e-01 4.56962496e-01 - 3.99964487e-01 2.07472802e-01 - 6.36657705e-01 -3.46400942e-02 - 4.91231407e-02 -1.40289235e-02 - -4.66683524e-02 -3.72326100e-01 - -5.22049702e-01 -1.70440260e-01 - 5.27062938e-01 -2.32628395e-01 - -2.69440318e+00 1.18914874e+00 - 3.65087539e+00 -1.53427267e+00 - -1.16546364e-01 4.93245392e-02 - 7.55931384e-01 -3.02980139e-01 - 2.06338745e+00 -6.24841225e-01 - 1.31177908e-01 7.29338183e-01 - 1.48021784e+00 -6.39509896e-01 - -5.98656707e-01 2.84525503e-01 - -2.18611080e+00 1.79549812e+00 - -2.91673624e+00 2.15772237e-01 - -8.95591350e-01 7.68250538e-01 - 1.36139762e+00 -1.93845144e-01 - 5.45730414e+00 -2.28114404e+00 - 3.22747247e-01 9.33582332e-01 - -1.46384504e+00 1.12801186e-01 - 4.26728166e-01 -2.33481242e-01 - -1.41327270e+00 8.16103740e-01 - -2.53998067e-01 1.44906646e-01 - -1.32436467e+00 1.87556361e-01 - -3.77313086e+00 1.32896038e+00 - 3.77651731e+00 -1.76548043e+00 - -2.45297093e+00 1.32571926e+00 - -6.55900588e-01 3.56921462e-01 - 9.25558722e-01 -4.51988954e-01 - 1.20732231e+00 -3.02821614e-01 - 3.72660154e-01 -1.89365208e-01 - -1.77090939e+00 9.18087975e-01 - 3.01127567e-01 2.67965829e-01 - -1.76708900e+00 4.62069259e-01 - -2.71812099e+00 1.57233508e+00 - -5.35297633e-01 4.99231535e-01 - 1.50507631e+00 -9.85763646e-01 - 3.00424787e+00 -1.29837562e+00 - -4.99311105e-01 3.91086482e-01 - 1.30125207e+00 -1.26247924e-01 - 4.01699483e-01 -4.46909391e-01 - -1.33635257e+00 5.12068703e-01 - 1.39229757e+00 -9.10974858e-01 - -1.74229508e+00 1.49475978e+00 - -1.21489414e+00 4.04193753e-01 - -3.36537605e-01 -6.74335427e-01 - -2.79186828e-01 8.48314720e-01 - -2.03080140e+00 1.66599815e+00 - -3.53064281e-01 -7.68582906e-04 - -5.30305657e+00 2.91091546e+00 - -1.20049972e+00 8.26578358e-01 - 2.95906989e-01 2.40215920e-01 - -1.42955534e+00 4.63480310e-01 - -1.87856619e+00 8.21459385e-01 - -2.71124720e+00 1.80246843e+00 - -3.06933780e+00 1.22235760e+00 - 5.21935582e-01 -1.27298218e+00 - -1.34175797e+00 7.69018937e-01 - -1.81962785e+00 1.15528991e+00 - -3.99227550e-01 2.93821598e-01 - 1.22533179e+00 -4.73846323e-01 - -2.08068359e-01 -1.75039817e-01 - -2.03068526e+00 1.50370503e+00 - -3.27606113e+00 1.74906330e+00 - -4.37802587e-01 -2.26956048e-01 - -7.69774213e-02 -3.54922468e-01 - 6.47160749e-02 -2.07334721e-01 - -1.37791524e+00 4.43766709e-01 - 3.29846803e+00 -1.04060799e+00 - -3.63704046e+00 1.05800226e+00 - -1.26716116e+00 1.13077353e+00 - 1.98549075e+00 -1.31864807e+00 - 1.85159500e+00 -5.78629560e-01 - -1.55295206e+00 1.23655857e+00 - 6.76026255e-01 9.18824125e-02 - 1.23418960e+00 -4.68162027e-01 - 2.43186642e+00 -9.22422440e-01 - -3.18729701e+00 1.77582673e+00 - -4.02945613e+00 1.14303496e+00 - -1.92694576e-01 1.03301431e-01 - 1.89554730e+00 -4.60128096e-01 - -2.55626581e+00 1.16057084e+00 - 6.89144365e-01 -9.94982900e-01 - -4.44680606e+00 2.19751983e+00 - -3.15196193e+00 1.18762993e+00 - -1.17434977e+00 1.04534656e+00 - 8.58386984e-02 -1.03947487e+00 - 3.33354973e-01 5.54813610e-01 - -9.37631808e-01 3.33450150e-01 - -2.50232471e+00 5.39720635e-01 - 1.03611949e+00 -7.16304095e-02 - -2.05556816e-02 -3.28992265e-01 - -2.24176201e+00 1.13077506e+00 - 4.53583688e+00 -1.10710212e+00 - 4.77389762e-01 -8.99445512e-01 - -2.69075551e+00 6.83176866e-01 - -2.21779724e+00 1.16916849e+00 - -1.09669056e+00 2.10044765e-01 - -8.45367920e-01 -8.45951423e-02 - 4.37558941e-01 -6.95904256e-01 - 1.84884195e+00 -1.71205136e-01 - -8.36371957e-01 5.62862478e-01 - 1.27786531e+00 -1.33362147e+00 - 2.90684492e+00 -7.49892184e-01 - -3.38652716e+00 1.51180670e+00 - -1.30945978e+00 7.09261928e-01 - -7.50471924e-01 -5.24637889e-01 - 1.18580718e+00 -9.97943971e-04 - -7.55395645e+00 3.19273590e+00 - 1.72822535e+00 -1.20996962e+00 - 5.67374320e-01 6.19573416e-01 - -2.99163781e+00 1.79721534e+00 - 1.49862187e+00 -6.05631846e-02 - 1.79503506e+00 -4.90419706e-01 - 3.85626054e+00 -1.95396324e+00 - -9.39188410e-01 7.96498057e-01 - 2.91986664e+00 -1.29392724e+00 - -1.54265750e+00 6.40727933e-01 - 1.14919794e+00 1.20834257e-01 - 2.00936817e+00 -1.53728359e+00 - 3.72468420e+00 -1.38704612e+00 - -1.27794802e+00 3.48543179e-01 - 3.63294077e-01 5.70623314e-01 - 1.49381016e+00 -6.04500534e-01 - 2.98912256e+00 -1.72295726e+00 - -1.80833817e+00 2.94907625e-01 - -3.19669622e+00 1.31888700e+00 - 1.45889401e+00 -8.88448639e-01 - -2.80045388e+00 1.01207060e+00 - -4.78379567e+00 1.48646520e+00 - 2.25510003e+00 -7.13372461e-01 - -9.74441433e-02 -2.17766373e-01 - 2.64468496e-01 -3.60842698e-01 - -5.98821713e+00 3.20197892e+00 - 2.67030213e-01 -5.36386416e-01 - 2.24546960e+00 -8.13464649e-01 - -4.89171414e-01 3.86255031e-01 - -7.45713706e-01 6.29800380e-01 - -3.30460503e-01 3.85127284e-01 - -4.19588147e+00 1.52793198e+00 - 5.42078582e-01 -2.61642741e-02 - 4.24938513e-01 -5.72936751e-01 - 2.82717288e+00 -6.75355024e-01 - -1.44741788e+00 5.03578028e-01 - -1.65547573e+00 7.76444277e-01 - 2.20361170e+00 -1.40835680e+00 - -3.69540235e+00 2.32953767e+00 - -1.41909357e-01 2.28989778e-01 - 1.92838879e+00 -8.72525737e-01 - 1.40708100e+00 -6.81849638e-02 - 1.24988112e+00 -1.39470590e-01 - -2.39435855e+00 7.26587655e-01 - 7.03985028e-01 4.85403277e-02 - 4.05214529e+00 -9.16928318e-01 - 3.74198837e-01 -5.04192358e-01 - -8.43374127e-01 2.36064018e-01 - -3.32253349e-01 7.47840055e-01 - -6.03725210e+00 1.95173337e+00 - 4.60829865e+00 -1.51191309e+00 - -1.46247098e+00 1.11140916e+00 - -9.60111157e-01 -1.23189114e-01 - -7.49613187e-01 4.53614129e-01 - -5.77838219e-01 2.07366469e-02 - 8.07652950e-01 -5.16272662e-01 - -6.02556049e-01 5.05318649e-01 - -1.28712445e-01 2.57836512e-01 - -5.27662820e+00 2.11790737e+00 - 5.40819308e+00 -2.15366022e+00 - 9.37742513e-02 -1.60221751e-01 - 4.55902865e+00 -1.24646307e+00 - -9.06582589e-01 1.92928110e-01 - 2.99928996e+00 -8.04301218e-01 - -3.24317381e+00 1.80076061e+00 - 3.20421743e-01 8.76524679e-01 - -5.29606705e-01 -3.16717696e-01 - -1.77264560e+00 7.52686776e-01 - -1.51706824e+00 8.43755103e-01 - 1.52759111e+00 -7.86814243e-01 - 4.74845617e-01 4.21319700e-01 - 6.97829149e-01 -8.15664881e-01 - 3.09564973e+00 -1.06202469e+00 - 2.95320379e+00 -1.98963943e+00 - -4.23033224e+00 1.41013338e+00 - 1.48576206e+00 8.02908511e-02 - 4.52041627e+00 -2.04620399e+00 - 6.58403922e-01 -7.60781799e-01 - 2.10667543e-01 1.15241731e-01 - 1.77702583e+00 -8.10271859e-01 - 2.41277385e+00 -1.46972042e+00 - 1.50685525e+00 -1.99272545e-01 - 7.61665522e-01 -4.11276152e-01 - 1.18352312e+00 -9.59908608e-01 - -3.32031305e-01 8.07500132e-02 - 1.16813118e+00 -1.73095194e-01 - 1.18363346e+00 -5.41565052e-01 - 5.17702179e-01 -7.62442035e-01 - 4.57401006e-01 -1.45951115e-02 - 1.49377115e-01 2.99571605e-01 - 1.40399453e+00 -1.30160353e+00 - 5.26231567e-01 3.52783752e-01 - -1.91136514e+00 4.24228635e-01 - 1.74156701e+00 -9.92076776e-01 - -4.89323391e+00 2.32483507e+00 - 2.54011209e+00 -8.80366295e-01 - -5.56925706e-01 1.48842026e-01 - -2.35904668e+00 9.60474853e-01 - 1.42216971e+00 -4.67062761e-01 - -1.10809680e+00 7.68684300e-01 - 4.09674726e+00 -1.90795680e+00 - -2.23048923e+00 9.03812542e-01 - 6.57025763e-01 1.36514871e-01 - 2.10944145e+00 -9.78897838e-02 - 1.22552525e+00 -2.50303867e-01 - 2.84620103e-01 -5.30164020e-01 - -2.13562585e+00 1.03503056e+00 - 1.32414902e-01 -8.14190240e-03 - -5.82433561e-01 3.21020292e-01 - -5.06473247e-01 3.11530419e-01 - 1.57162465e+00 -1.20763919e+00 - -1.43155284e+00 -2.51203698e-02 - -1.47093713e+00 -1.39620999e-01 - -2.65765643e+00 1.06091403e+00 - 2.45992927e+00 -5.88815836e-01 - -1.28440162e+00 -1.99377398e-01 - 6.11257504e-01 -3.73577401e-01 - -3.46606103e-01 6.06081290e-01 - 3.76687505e+00 -8.80181424e-01 - -1.03725103e+00 1.45177517e+00 - 2.76659936e+00 -1.09361320e+00 - -3.61311296e+00 9.75032455e-01 - 3.22878655e+00 -9.69497365e-01 - 1.43560379e+00 -5.52524585e-01 - 2.94042153e+00 -1.79747037e+00 - 1.30739580e+00 2.47989248e-01 - -4.05056982e-01 1.22831715e+00 - -2.25827421e+00 2.30604626e-01 - 3.69262926e-01 4.32714650e-02 - -5.52064063e-01 6.07806340e-01 - 7.03325987e+00 -2.17956730e+00 - -2.37823835e-01 -8.28068639e-01 - -4.84279888e-01 5.67765194e-01 - -3.15863410e+00 1.02241617e+00 - -3.39561593e+00 1.36876374e+00 - -2.78482934e+00 6.81641104e-01 - -4.37604334e+00 2.23826340e+00 - -2.54049692e+00 8.22676745e-01 - 3.73264822e+00 -9.93498732e-01 - -3.49536064e+00 1.84771519e+00 - 9.81801604e-01 -5.21278776e-01 - 1.52996831e+00 -1.27386206e+00 - -9.23490293e-01 5.29099482e-01 - -2.76999461e+00 9.24831872e-01 - -3.30029834e-01 -2.49645555e-01 - -1.71156166e+00 5.44940854e-01 - -2.37009487e+00 5.83826982e-01 - -3.03216865e+00 1.04922722e+00 - -2.19539936e+00 1.37558730e+00 - 1.15350207e+00 -6.15318535e-01 - 4.62011792e+00 -2.46714517e+00 - 1.52627952e-02 -1.00618283e-01 - -1.10399342e+00 4.87413533e-01 - 3.55448194e+00 -9.10394190e-01 - -5.21890321e+00 2.44710745e+00 - 1.54289749e+00 -6.54269311e-01 - 2.67935674e+00 -9.92758863e-01 - 1.05801310e+00 2.60054285e-02 - 1.52509097e+00 -4.08768600e-01 - 3.27576917e+00 -1.28769406e+00 - 1.71008412e-01 -2.68739994e-01 - -9.83351344e-04 7.02495897e-02 - -7.60795056e-03 1.61968285e-01 - -1.80620472e+00 4.24934471e-01 - 2.32023297e-02 -2.57284559e-01 - 3.98219478e-01 -4.65361935e-01 - 6.63476988e-01 -3.29823196e-02 - 4.00154707e+00 -1.01792211e+00 - -1.50286870e+00 9.46875359e-01 - -2.22717585e+00 7.50636195e-01 - -3.47381508e-01 -6.51596975e-01 - 2.08076453e+00 -8.22800165e-01 - 2.05099963e+00 -4.00868250e-01 - 3.52576988e-02 -2.54418565e-01 - 1.57342042e+00 -7.62166492e-02 - -1.47019722e+00 3.40861172e-01 - -1.21156090e+00 3.21891246e-01 - 3.79729047e+00 -1.54350764e+00 - 1.26459678e-02 6.99203693e-01 - 1.53974177e-01 4.68643204e-01 - -1.73923561e-01 -1.26229768e-01 - 4.54644993e+00 -2.13951783e+00 - 1.46022547e-01 -4.57084165e-01 - 6.50048037e+00 -2.78872609e+00 - -1.51934912e+00 1.03216768e+00 - -3.06483575e+00 1.81101446e+00 - -2.38212125e+00 9.19559042e-01 - -1.81319611e+00 8.10545112e-01 - 1.70951294e+00 -6.10712680e-01 - 1.67974156e+00 -1.51241453e+00 - -5.94795113e+00 2.56893813e+00 - 3.62633110e-01 -7.46965304e-01 - -2.44042594e+00 8.52761797e-01 - 3.32412550e+00 -1.28439899e+00 - 4.74860766e+00 -1.72821964e+00 - 1.29072541e+00 -8.24872902e-01 - -1.69450702e+00 4.09600876e-01 - 1.29705411e+00 1.22300809e-01 - -2.63597613e+00 8.55612913e-01 - 9.28467301e-01 -2.63550114e-02 - 2.44670264e+00 -4.10123002e-01 - 1.06408206e+00 -5.03361942e-01 - 5.12384049e-02 -1.27116595e-02 - -1.06731272e+00 -1.76205029e-01 - -9.45454582e-01 3.74404917e-01 - 2.54343689e+00 -7.13810545e-01 - -2.54460335e+00 1.31590265e+00 - 1.89864233e+00 -3.98436339e-01 - -1.93990133e+00 6.01474630e-01 - -1.35938824e+00 4.00751788e-01 - 2.38567018e+00 -6.13904880e-01 - 2.18748050e-01 2.62631712e-01 - -2.01388788e+00 1.41474031e+00 - 2.74014581e+00 -1.27448105e+00 - -2.13828583e+00 1.13616144e+00 - 5.98730932e+00 -2.53430080e+00 - -1.72872795e+00 1.53702057e+00 - -2.53263962e+00 1.27342410e+00 - 1.34326968e+00 -1.99395088e-01 - 3.83352666e-01 -1.25683065e-01 - -2.35630657e+00 5.54116983e-01 - -1.94900838e+00 5.76270178e-01 - -1.36699108e+00 -3.40904824e-01 - -2.34727346e+00 -1.93054940e-02 - -3.82779777e+00 1.83025664e+00 - -4.31602080e+00 9.21605705e-01 - 5.54098133e-01 2.33991419e-01 - -4.53591188e+00 1.99833353e+00 - -3.92715909e+00 1.83231482e+00 - 3.91344440e-01 -1.11355111e-01 - 3.48576363e+00 -1.41379449e+00 - -1.42858690e+00 3.84532286e-01 - 1.79519859e+00 -9.23486448e-01 - 8.49691242e-01 -1.76551084e-01 - 1.53618138e+00 8.23835015e-02 - 5.91476520e-02 3.88296940e-02 - 1.44837346e+00 -7.24097604e-01 - -6.79008418e-01 4.04078097e-01 - 2.87555510e+00 -9.51825076e-01 - -1.12379101e+00 2.93457714e-01 - 1.45263980e+00 -6.01960544e-01 - -2.55741621e-01 9.26233518e-01 - 3.54570714e+00 -1.41521877e+00 - -1.61542388e+00 6.57844512e-01 - -3.22844269e-01 3.02823546e-01 - 1.03523913e+00 -6.92730711e-01 - 1.11084909e+00 -3.50823642e-01 - 3.41268693e+00 -1.90865862e+00 - 7.67062858e-01 -9.48792160e-01 - -5.49798016e+00 1.71139960e+00 - 1.14865798e+00 -6.12669150e-01 - -2.18256680e+00 7.78634462e-01 - 4.78857389e+00 -2.55555085e+00 - -1.85555569e+00 8.04311615e-01 - -4.22278799e+00 2.01162524e+00 - -1.56556149e+00 1.54353907e+00 - -3.11527864e+00 1.65973526e+00 - 2.66342611e+00 -1.20449402e+00 - 1.57635314e+00 -1.48716308e-01 - -6.35606865e-01 2.59701180e-01 - 1.02431976e+00 -6.76929904e-01 - 1.12973772e+00 1.49473892e-02 - -9.12758116e-01 2.21533933e-01 - -2.98014470e+00 1.71651189e+00 - 2.74016965e+00 -9.47893923e-01 - -3.47830591e+00 1.34941430e+00 - 1.74757562e+00 -3.72503752e-01 - 5.55820383e-01 -6.47992466e-01 - -1.19871928e+00 9.82429151e-01 - -2.53040133e+00 2.10671307e+00 - -1.94085605e+00 1.38938137e+00 diff --git a/image_content/config/spark/opt/spark/data/mllib/kmeans_data.txt b/image_content/config/spark/opt/spark/data/mllib/kmeans_data.txt deleted file mode 100644 index 338664f..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/kmeans_data.txt +++ /dev/null @@ -1,6 +0,0 @@ -0.0 0.0 0.0 -0.1 0.1 0.1 -0.2 0.2 0.2 -9.0 9.0 9.0 -9.1 9.1 9.1 -9.2 9.2 9.2 diff --git a/image_content/config/spark/opt/spark/data/mllib/pagerank_data.txt b/image_content/config/spark/opt/spark/data/mllib/pagerank_data.txt deleted file mode 100644 index 95755ab..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/pagerank_data.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 2 -1 3 -1 4 -2 1 -3 1 -4 1 diff --git a/image_content/config/spark/opt/spark/data/mllib/pic_data.txt b/image_content/config/spark/opt/spark/data/mllib/pic_data.txt deleted file mode 100644 index fcfef8c..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/pic_data.txt +++ /dev/null @@ -1,19 +0,0 @@ -0 1 1.0 -0 2 1.0 -0 3 1.0 -1 2 1.0 -1 3 1.0 -2 3 1.0 -3 4 0.1 -4 5 1.0 -4 15 1.0 -5 6 1.0 -6 7 1.0 -7 8 1.0 -8 9 1.0 -9 10 1.0 -10 11 1.0 -11 12 1.0 -12 13 1.0 -13 14 1.0 -14 15 1.0 diff --git a/image_content/config/spark/opt/spark/data/mllib/ridge-data/lpsa.data b/image_content/config/spark/opt/spark/data/mllib/ridge-data/lpsa.data deleted file mode 100644 index fdd16e3..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/ridge-data/lpsa.data +++ /dev/null @@ -1,67 +0,0 @@ --0.4307829,-1.63735562648104 -2.00621178480549 -1.86242597251066 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 --0.1625189,-1.98898046126935 -0.722008756122123 -0.787896192088153 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 --0.1625189,-1.57881887548545 -2.1887840293994 1.36116336875686 -1.02470580167082 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.155348103855541 --0.1625189,-2.16691708463163 -0.807993896938655 -0.787896192088153 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -0.3715636,-0.507874475300631 -0.458834049396776 -0.250631301876899 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -0.7654678,-2.03612849966376 -0.933954647105133 -1.86242597251066 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -0.8544153,-0.557312518810673 -0.208756571683607 -0.787896192088153 0.990146852537193 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.2669476,-0.929360463147704 -0.0578991819441687 0.152317365781542 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.2669476,-2.28833047634983 -0.0706369432557794 -0.116315079324086 0.80409888772376 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.2669476,0.223498042876113 -1.41471935455355 -0.116315079324086 -1.02470580167082 -0.522940888712441 -0.29928234305568 0.342627053981254 0.199211097885341 -1.3480731,0.107785900236813 -1.47221551299731 0.420949810887169 -1.02470580167082 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.687186906466865 -1.446919,0.162180092313795 -1.32557369901905 0.286633588334355 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.4701758,-1.49795329918548 -0.263601072284232 0.823898478545609 0.788388310173035 -0.522940888712441 -0.29928234305568 0.342627053981254 0.199211097885341 -1.4929041,0.796247055396743 0.0476559407005752 0.286633588334355 -1.02470580167082 -0.522940888712441 0.394013435896129 -1.04215728919298 -0.864466507337306 -1.5581446,-1.62233848461465 -0.843294091975396 -3.07127197548598 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.5993876,-0.990720665490831 0.458513517212311 0.823898478545609 1.07379746308195 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.6389967,-0.171901281967138 -0.489197399065355 -0.65357996953534 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.6956156,-1.60758252338831 -0.590700340358265 -0.65357996953534 -0.619561070667254 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -1.7137979,0.366273918511144 -0.414014962912583 -0.116315079324086 0.232904453212813 -0.522940888712441 0.971228997418125 0.342627053981254 1.26288870310799 -1.8000583,-0.710307384579833 0.211731938156277 0.152317365781542 -1.02470580167082 -0.522940888712441 -0.442797990776478 0.342627053981254 1.61744790484887 -1.8484548,-0.262791728113881 -1.16708345615721 0.420949810887169 0.0846342590816532 -0.522940888712441 0.163172393491611 0.342627053981254 1.97200710658975 -1.8946169,0.899043117369237 -0.590700340358265 0.152317365781542 -1.02470580167082 -0.522940888712441 1.28643254437683 -1.04215728919298 -0.864466507337306 -1.9242487,-0.903451690500615 1.07659722048274 0.152317365781542 1.28380453408541 -0.522940888712441 -0.442797990776478 -1.04215728919298 -0.864466507337306 -2.008214,-0.0633337899773081 -1.38088970920094 0.958214701098423 0.80409888772376 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -2.0476928,-1.15393789990757 -0.961853075398404 -0.116315079324086 -1.02470580167082 -0.522940888712441 -0.442797990776478 -1.04215728919298 -0.864466507337306 -2.1575593,0.0620203721138446 0.0657973885499142 1.22684714620405 -0.468824786336838 -0.522940888712441 1.31421001659859 1.72741139715549 -0.332627704725983 -2.1916535,-0.75731027755674 -2.92717970468456 0.018001143228728 -1.02470580167082 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.332627704725983 -2.2137539,1.11226993252773 1.06484916245061 0.555266033439982 0.877691038550889 1.89254797819741 1.43890404648442 0.342627053981254 0.376490698755783 -2.2772673,-0.468768642850639 -1.43754788774533 -1.05652863719378 0.576050411655607 -0.522940888712441 0.0120483832567209 0.342627053981254 -0.687186906466865 -2.2975726,-0.618884859896728 -1.1366360750781 -0.519263746982526 -1.02470580167082 -0.522940888712441 -0.863171185425945 3.11219574032972 1.97200710658975 -2.3272777,-0.651431999123483 0.55329161145762 -0.250631301876899 1.11210019001038 -0.522940888712441 -0.179808625688859 -1.04215728919298 -0.864466507337306 -2.5217206,0.115499102435224 -0.512233676577595 0.286633588334355 1.13650173283446 -0.522940888712441 -0.179808625688859 0.342627053981254 -0.155348103855541 -2.5533438,0.266341329949937 -0.551137885443386 -0.384947524429713 0.354857790686005 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.332627704725983 -2.5687881,1.16902610257751 0.855491905752846 2.03274448152093 1.22628985326088 1.89254797819741 2.02833774827712 3.11219574032972 2.68112551007152 -2.6567569,-0.218972367124187 0.851192298581141 0.555266033439982 -1.02470580167082 -0.522940888712441 -0.863171185425945 0.342627053981254 0.908329501367106 -2.677591,0.263121415733908 1.4142681068416 0.018001143228728 1.35980653053822 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -2.7180005,-0.0704736333296423 1.52000996595417 0.286633588334355 1.39364261119802 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.332627704725983 -2.7942279,-0.751957286017338 0.316843561689933 -1.99674219506348 0.911736065044475 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -2.8063861,-0.685277652430997 1.28214038482516 0.823898478545609 0.232904453212813 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.155348103855541 -2.8124102,-0.244991501432929 0.51882005949686 -0.384947524429713 0.823246560137838 -0.522940888712441 -0.863171185425945 0.342627053981254 0.553770299626224 -2.8419982,-0.75731027755674 2.09041984898851 1.22684714620405 1.53428167116843 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -2.8535925,1.20962937075363 -0.242882661178889 1.09253092365124 -1.02470580167082 -0.522940888712441 1.24263233939889 3.11219574032972 2.50384590920108 -2.9204698,0.570886990493502 0.58243883987948 0.555266033439982 1.16006887775962 -0.522940888712441 1.07357183940747 0.342627053981254 1.61744790484887 -2.9626924,0.719758684343624 0.984970304132004 1.09253092365124 1.52137230773457 -0.522940888712441 -0.179808625688859 0.342627053981254 -0.509907305596424 -2.9626924,-1.52406140158064 1.81975700990333 0.689582255992796 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -2.9729753,-0.132431544081234 2.68769877553723 1.09253092365124 1.53428167116843 -0.522940888712441 -0.442797990776478 0.342627053981254 -0.687186906466865 -3.0130809,0.436161292804989 -0.0834447307428255 -0.519263746982526 -1.02470580167082 1.89254797819741 1.07357183940747 0.342627053981254 1.26288870310799 -3.0373539,-0.161195191984091 -0.671900359186746 1.7641120364153 1.13650173283446 -0.522940888712441 -0.863171185425945 0.342627053981254 0.0219314970149 -3.2752562,1.39927182372944 0.513852869452676 0.689582255992796 -1.02470580167082 1.89254797819741 1.49394503405693 0.342627053981254 -0.155348103855541 -3.3375474,1.51967002306341 -0.852203755696565 0.555266033439982 -0.104527297798983 1.89254797819741 1.85927724828569 0.342627053981254 0.908329501367106 -3.3928291,0.560725834706224 1.87867703391426 1.09253092365124 1.39364261119802 -0.522940888712441 0.486423065822545 0.342627053981254 1.26288870310799 -3.4355988,1.00765532502814 1.69426310090641 1.89842825896812 1.53428167116843 -0.522940888712441 -0.863171185425945 0.342627053981254 -0.509907305596424 -3.4578927,1.10152996153577 -0.10927271844907 0.689582255992796 -1.02470580167082 1.89254797819741 1.97630171771485 0.342627053981254 1.61744790484887 -3.5160131,0.100001934217311 -1.30380956369388 0.286633588334355 0.316555063757567 -0.522940888712441 0.28786643052924 0.342627053981254 0.553770299626224 -3.5307626,0.987291634724086 -0.36279314978779 -0.922212414640967 0.232904453212813 -0.522940888712441 1.79270085261407 0.342627053981254 1.26288870310799 -3.5652984,1.07158528137575 0.606453149641961 1.7641120364153 -0.432854616994416 1.89254797819741 0.528504607720369 0.342627053981254 0.199211097885341 -3.5876769,0.180156323255198 0.188987436375017 -0.519263746982526 1.09956763075594 -0.522940888712441 0.708239632330506 0.342627053981254 0.199211097885341 -3.6309855,1.65687973755377 -0.256675483533719 0.018001143228728 -1.02470580167082 1.89254797819741 1.79270085261407 0.342627053981254 1.26288870310799 -3.6800909,0.5720085322365 0.239854450210939 -0.787896192088153 1.0605418233138 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -3.7123518,0.323806133438225 -0.606717660886078 -0.250631301876899 -1.02470580167082 1.89254797819741 0.342907418101747 0.342627053981254 0.199211097885341 -3.9843437,1.23668206715898 2.54220539083611 0.152317365781542 -1.02470580167082 1.89254797819741 1.89037692416194 0.342627053981254 1.26288870310799 -3.993603,0.180156323255198 0.154448192444669 1.62979581386249 0.576050411655607 1.89254797819741 0.708239632330506 0.342627053981254 1.79472750571931 -4.029806,1.60906277046565 1.10378605019827 0.555266033439982 -1.02470580167082 -0.522940888712441 -0.863171185425945 -1.04215728919298 -0.864466507337306 -4.1295508,1.0036214996026 0.113496885050331 -0.384947524429713 0.860016436332751 1.89254797819741 -0.863171185425945 0.342627053981254 -0.332627704725983 -4.3851468,1.25591974271076 0.577607033774471 0.555266033439982 -1.02470580167082 1.89254797819741 1.07357183940747 0.342627053981254 1.26288870310799 -4.6844434,2.09650591351268 0.625488598331018 -2.66832330782754 -1.02470580167082 1.89254797819741 1.67954222367555 0.342627053981254 0.553770299626224 -5.477509,1.30028987435881 0.338383613253713 0.555266033439982 1.00481276295349 1.89254797819741 1.24263233939889 0.342627053981254 1.97200710658975 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_binary_classification_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_binary_classification_data.txt deleted file mode 100644 index 861c70c..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_binary_classification_data.txt +++ /dev/null @@ -1,100 +0,0 @@ -0 128:51 129:159 130:253 131:159 132:50 155:48 156:238 157:252 158:252 159:252 160:237 182:54 183:227 184:253 185:252 186:239 187:233 188:252 189:57 190:6 208:10 209:60 210:224 211:252 212:253 213:252 214:202 215:84 216:252 217:253 218:122 236:163 237:252 238:252 239:252 240:253 241:252 242:252 243:96 244:189 245:253 246:167 263:51 264:238 265:253 266:253 267:190 268:114 269:253 270:228 271:47 272:79 273:255 274:168 290:48 291:238 292:252 293:252 294:179 295:12 296:75 297:121 298:21 301:253 302:243 303:50 317:38 318:165 319:253 320:233 321:208 322:84 329:253 330:252 331:165 344:7 345:178 346:252 347:240 348:71 349:19 350:28 357:253 358:252 359:195 372:57 373:252 374:252 375:63 385:253 386:252 387:195 400:198 401:253 402:190 413:255 414:253 415:196 427:76 428:246 429:252 430:112 441:253 442:252 443:148 455:85 456:252 457:230 458:25 467:7 468:135 469:253 470:186 471:12 483:85 484:252 485:223 494:7 495:131 496:252 497:225 498:71 511:85 512:252 513:145 521:48 522:165 523:252 524:173 539:86 540:253 541:225 548:114 549:238 550:253 551:162 567:85 568:252 569:249 570:146 571:48 572:29 573:85 574:178 575:225 576:253 577:223 578:167 579:56 595:85 596:252 597:252 598:252 599:229 600:215 601:252 602:252 603:252 604:196 605:130 623:28 624:199 625:252 626:252 627:253 628:252 629:252 630:233 631:145 652:25 653:128 654:252 655:253 656:252 657:141 658:37 -1 159:124 160:253 161:255 162:63 186:96 187:244 188:251 189:253 190:62 214:127 215:251 216:251 217:253 218:62 241:68 242:236 243:251 244:211 245:31 246:8 268:60 269:228 270:251 271:251 272:94 296:155 297:253 298:253 299:189 323:20 324:253 325:251 326:235 327:66 350:32 351:205 352:253 353:251 354:126 378:104 379:251 380:253 381:184 382:15 405:80 406:240 407:251 408:193 409:23 432:32 433:253 434:253 435:253 436:159 460:151 461:251 462:251 463:251 464:39 487:48 488:221 489:251 490:251 491:172 515:234 516:251 517:251 518:196 519:12 543:253 544:251 545:251 546:89 570:159 571:255 572:253 573:253 574:31 597:48 598:228 599:253 600:247 601:140 602:8 625:64 626:251 627:253 628:220 653:64 654:251 655:253 656:220 681:24 682:193 683:253 684:220 -1 125:145 126:255 127:211 128:31 152:32 153:237 154:253 155:252 156:71 180:11 181:175 182:253 183:252 184:71 209:144 210:253 211:252 212:71 236:16 237:191 238:253 239:252 240:71 264:26 265:221 266:253 267:252 268:124 269:31 293:125 294:253 295:252 296:252 297:108 322:253 323:252 324:252 325:108 350:255 351:253 352:253 353:108 378:253 379:252 380:252 381:108 406:253 407:252 408:252 409:108 434:253 435:252 436:252 437:108 462:255 463:253 464:253 465:170 490:253 491:252 492:252 493:252 494:42 518:149 519:252 520:252 521:252 522:144 546:109 547:252 548:252 549:252 550:144 575:218 576:253 577:253 578:255 579:35 603:175 604:252 605:252 606:253 607:35 631:73 632:252 633:252 634:253 635:35 659:31 660:211 661:252 662:253 663:35 -1 153:5 154:63 155:197 181:20 182:254 183:230 184:24 209:20 210:254 211:254 212:48 237:20 238:254 239:255 240:48 265:20 266:254 267:254 268:57 293:20 294:254 295:254 296:108 321:16 322:239 323:254 324:143 350:178 351:254 352:143 378:178 379:254 380:143 406:178 407:254 408:162 434:178 435:254 436:240 462:113 463:254 464:240 490:83 491:254 492:245 493:31 518:79 519:254 520:246 521:38 547:214 548:254 549:150 575:144 576:241 577:8 603:144 604:240 605:2 631:144 632:254 633:82 659:230 660:247 661:40 687:168 688:209 689:31 -1 152:1 153:168 154:242 155:28 180:10 181:228 182:254 183:100 209:190 210:254 211:122 237:83 238:254 239:162 265:29 266:254 267:248 268:25 293:29 294:255 295:254 296:103 321:29 322:254 323:254 324:109 349:29 350:254 351:254 352:109 377:29 378:254 379:254 380:109 405:29 406:255 407:254 408:109 433:29 434:254 435:254 436:109 461:29 462:254 463:254 464:63 489:29 490:254 491:254 492:28 517:29 518:254 519:254 520:28 545:29 546:254 547:254 548:35 573:29 574:254 575:254 576:109 601:6 602:212 603:254 604:109 630:203 631:254 632:178 658:155 659:254 660:190 686:32 687:199 688:104 -0 130:64 131:253 132:255 133:63 157:96 158:205 159:251 160:253 161:205 162:111 163:4 184:96 185:189 186:251 187:251 188:253 189:251 190:251 191:31 209:16 210:64 211:223 212:244 213:251 214:251 215:211 216:213 217:251 218:251 219:31 236:80 237:181 238:251 239:253 240:251 241:251 242:251 243:94 244:96 245:251 246:251 247:31 263:92 264:253 265:253 266:253 267:255 268:253 269:253 270:253 271:95 272:96 273:253 274:253 275:31 290:92 291:236 292:251 293:243 294:220 295:233 296:251 297:251 298:243 299:82 300:96 301:251 302:251 303:31 317:80 318:253 319:251 320:251 321:188 323:96 324:251 325:251 326:109 328:96 329:251 330:251 331:31 344:96 345:240 346:253 347:243 348:188 349:42 351:96 352:204 353:109 354:4 356:12 357:197 358:251 359:31 372:221 373:251 374:253 375:121 379:36 380:23 385:190 386:251 387:31 399:48 400:234 401:253 413:191 414:253 415:31 426:44 427:221 428:251 429:251 440:12 441:197 442:251 443:31 454:190 455:251 456:251 457:251 468:96 469:251 470:251 471:31 482:190 483:251 484:251 485:113 495:40 496:234 497:251 498:219 499:23 510:190 511:251 512:251 513:94 522:40 523:217 524:253 525:231 526:47 538:191 539:253 540:253 541:253 548:12 549:174 550:253 551:253 552:219 553:39 566:67 567:236 568:251 569:251 570:191 571:190 572:111 573:72 574:190 575:191 576:197 577:251 578:243 579:121 580:39 595:63 596:236 597:251 598:253 599:251 600:251 601:251 602:251 603:253 604:251 605:188 606:94 624:27 625:129 626:253 627:251 628:251 629:251 630:251 631:229 632:168 633:15 654:95 655:212 656:251 657:211 658:94 659:59 -1 159:121 160:254 161:136 186:13 187:230 188:253 189:248 190:99 213:4 214:118 215:253 216:253 217:225 218:42 241:61 242:253 243:253 244:253 245:74 268:32 269:206 270:253 271:253 272:186 273:9 296:211 297:253 298:253 299:239 300:69 324:254 325:253 326:253 327:133 351:142 352:255 353:253 354:186 355:8 378:149 379:229 380:254 381:207 382:21 405:54 406:229 407:253 408:254 409:105 433:152 434:254 435:254 436:213 437:26 460:112 461:251 462:253 463:253 464:26 487:29 488:212 489:253 490:250 491:149 514:36 515:214 516:253 517:253 518:137 542:75 543:253 544:253 545:253 546:59 570:93 571:253 572:253 573:189 574:17 598:224 599:253 600:253 601:84 625:43 626:235 627:253 628:126 629:1 653:99 654:248 655:253 656:119 682:225 683:235 684:49 -1 100:166 101:222 102:55 128:197 129:254 130:218 131:5 155:29 156:249 157:254 158:254 159:9 183:45 184:254 185:254 186:174 187:2 210:4 211:164 212:254 213:254 214:85 238:146 239:254 240:254 241:254 242:85 265:101 266:245 267:254 268:254 269:254 270:85 292:97 293:248 294:254 295:204 296:254 297:254 298:85 315:12 316:59 317:98 318:151 319:237 320:254 321:254 322:109 323:35 324:254 325:254 326:85 343:41 344:216 345:254 346:254 347:239 348:153 349:37 350:4 351:32 352:254 353:254 354:85 372:7 373:44 374:44 375:30 379:32 380:254 381:254 382:96 407:19 408:230 409:254 410:174 436:197 437:254 438:110 464:197 465:254 466:85 492:197 493:253 494:63 515:37 516:54 517:54 518:45 519:26 520:84 521:221 522:84 523:21 524:31 525:162 526:78 540:6 541:41 542:141 543:244 544:254 545:254 546:248 547:236 548:254 549:254 550:254 551:233 552:239 553:254 554:138 567:23 568:167 569:254 570:254 571:254 572:254 573:229 574:228 575:185 576:138 577:138 578:138 579:138 580:138 581:138 582:44 595:113 596:254 597:254 598:254 599:179 600:64 601:5 623:32 624:209 625:183 626:97 -0 155:53 156:255 157:253 158:253 159:253 160:124 183:180 184:253 185:251 186:251 187:251 188:251 189:145 190:62 209:32 210:217 211:241 212:253 213:251 214:251 215:251 216:251 217:253 218:107 237:37 238:251 239:251 240:253 241:251 242:251 243:251 244:251 245:253 246:107 265:166 266:251 267:251 268:253 269:251 270:96 271:148 272:251 273:253 274:107 291:73 292:253 293:253 294:253 295:253 296:130 299:110 300:253 301:255 302:108 319:73 320:251 321:251 322:251 323:251 327:109 328:251 329:253 330:107 347:202 348:251 349:251 350:251 351:225 354:6 355:129 356:251 357:253 358:107 375:150 376:251 377:251 378:251 379:71 382:115 383:251 384:251 385:253 386:107 403:253 404:251 405:251 406:173 407:20 410:217 411:251 412:251 413:253 414:107 430:182 431:255 432:253 433:216 438:218 439:253 440:253 441:182 457:63 458:221 459:253 460:251 461:215 465:84 466:236 467:251 468:251 469:77 485:109 486:251 487:253 488:251 489:215 492:11 493:160 494:251 495:251 496:96 513:109 514:251 515:253 516:251 517:137 520:150 521:251 522:251 523:251 524:71 541:109 542:251 543:253 544:251 545:35 547:130 548:253 549:251 550:251 551:173 552:20 569:110 570:253 571:255 572:253 573:98 574:150 575:253 576:255 577:253 578:164 597:109 598:251 599:253 600:251 601:251 602:251 603:251 604:253 605:251 606:35 625:93 626:241 627:253 628:251 629:251 630:251 631:251 632:216 633:112 634:5 654:103 655:253 656:251 657:251 658:251 659:251 683:124 684:251 685:225 686:71 687:71 -0 128:73 129:253 130:227 131:73 132:21 156:73 157:251 158:251 159:251 160:174 182:16 183:166 184:228 185:251 186:251 187:251 188:122 210:62 211:220 212:253 213:251 214:251 215:251 216:251 217:79 238:79 239:231 240:253 241:251 242:251 243:251 244:251 245:232 246:77 264:145 265:253 266:253 267:253 268:255 269:253 270:253 271:253 272:253 273:255 274:108 292:144 293:251 294:251 295:251 296:253 297:168 298:107 299:169 300:251 301:253 302:189 303:20 318:27 319:89 320:236 321:251 322:235 323:215 324:164 325:15 326:6 327:129 328:251 329:253 330:251 331:35 345:47 346:211 347:253 348:251 349:251 350:142 354:37 355:251 356:251 357:253 358:251 359:35 373:109 374:251 375:253 376:251 377:251 378:142 382:11 383:148 384:251 385:253 386:251 387:164 400:11 401:150 402:253 403:255 404:211 405:25 410:11 411:150 412:253 413:255 414:211 415:25 428:140 429:251 430:251 431:253 432:107 438:37 439:251 440:251 441:211 442:46 456:190 457:251 458:251 459:253 460:128 461:5 466:37 467:251 468:251 469:51 484:115 485:251 486:251 487:253 488:188 489:20 492:32 493:109 494:129 495:251 496:173 497:103 512:217 513:251 514:251 515:201 516:30 520:73 521:251 522:251 523:251 524:71 540:166 541:253 542:253 543:255 544:149 545:73 546:150 547:253 548:255 549:253 550:253 551:143 568:140 569:251 570:251 571:253 572:251 573:251 574:251 575:251 576:253 577:251 578:230 579:61 596:190 597:251 598:251 599:253 600:251 601:251 602:251 603:251 604:242 605:215 606:55 624:21 625:189 626:251 627:253 628:251 629:251 630:251 631:173 632:103 653:31 654:200 655:253 656:251 657:96 658:71 659:20 -1 155:178 156:255 157:105 182:6 183:188 184:253 185:216 186:14 210:14 211:202 212:253 213:253 214:23 238:12 239:199 240:253 241:128 242:6 266:42 267:253 268:253 269:158 294:42 295:253 296:253 297:158 322:155 323:253 324:253 325:158 350:160 351:253 352:253 353:147 378:160 379:253 380:253 381:41 405:17 406:225 407:253 408:235 409:31 433:24 434:253 435:253 436:176 461:24 462:253 463:253 464:176 489:24 490:253 491:253 492:176 517:24 518:253 519:253 520:176 545:24 546:253 547:253 548:162 573:46 574:253 575:253 576:59 601:142 602:253 603:253 604:59 629:142 630:253 631:253 632:59 657:142 658:253 659:202 660:8 685:87 686:253 687:139 -0 154:46 155:105 156:254 157:254 158:254 159:254 160:255 161:239 162:41 180:37 181:118 182:222 183:254 184:253 185:253 186:253 187:253 188:253 189:253 190:211 191:54 207:14 208:200 209:253 210:253 211:254 212:253 213:253 214:253 215:253 216:253 217:253 218:253 219:116 233:16 234:160 235:236 236:253 237:253 238:253 239:254 240:253 241:253 242:246 243:229 244:253 245:253 246:253 247:116 261:99 262:253 263:253 264:253 265:253 266:253 267:254 268:253 269:253 270:213 271:99 272:253 273:253 274:253 275:116 288:25 289:194 290:253 291:253 292:253 293:253 294:131 295:97 296:169 297:253 298:93 299:99 300:253 301:253 302:253 303:116 316:206 317:253 318:253 319:251 320:233 321:127 322:9 324:18 325:38 326:3 327:15 328:171 329:253 330:253 331:116 343:55 344:240 345:253 346:253 347:233 355:31 356:186 357:253 358:253 359:116 371:176 372:253 373:253 374:253 375:127 383:99 384:253 385:253 386:253 387:116 399:176 400:253 401:253 402:131 403:9 411:99 412:253 413:253 414:253 415:116 426:119 427:254 428:254 429:232 430:75 440:158 441:254 442:254 443:117 454:118 455:253 456:253 457:154 468:156 469:253 470:253 471:116 482:118 483:253 484:253 485:154 496:156 497:253 498:253 499:116 509:46 510:222 511:253 512:253 513:154 522:7 523:116 524:246 525:253 526:180 527:9 538:118 539:253 540:253 541:154 550:116 551:253 552:253 553:253 554:174 566:118 567:253 568:253 569:154 577:110 578:246 579:253 580:253 581:240 582:67 594:118 595:253 596:253 597:238 598:215 599:49 600:20 601:20 602:20 603:66 604:215 605:241 606:253 607:245 608:233 609:64 622:82 623:229 624:253 625:253 626:253 627:253 628:253 629:253 630:253 631:254 632:253 633:253 634:240 635:107 651:176 652:253 653:253 654:253 655:253 656:253 657:253 658:253 659:254 660:253 661:253 662:108 679:40 680:239 681:253 682:253 683:253 684:253 685:253 686:253 687:254 688:161 689:57 690:4 -0 152:56 153:105 154:220 155:254 156:63 178:18 179:166 180:233 181:253 182:253 183:253 184:236 185:209 186:209 187:209 188:77 189:18 206:84 207:253 208:253 209:253 210:253 211:253 212:254 213:253 214:253 215:253 216:253 217:172 218:8 233:57 234:238 235:253 236:253 237:253 238:253 239:253 240:254 241:253 242:253 243:253 244:253 245:253 246:119 260:14 261:238 262:253 263:253 264:253 265:253 266:253 267:253 268:179 269:196 270:253 271:253 272:253 273:253 274:238 275:12 288:33 289:253 290:253 291:253 292:253 293:253 294:248 295:134 297:18 298:83 299:237 300:253 301:253 302:253 303:14 316:164 317:253 318:253 319:253 320:253 321:253 322:128 327:57 328:119 329:214 330:253 331:94 343:57 344:248 345:253 346:253 347:253 348:126 349:14 350:4 357:179 358:253 359:248 360:56 371:175 372:253 373:253 374:240 375:190 376:28 385:179 386:253 387:253 388:173 399:209 400:253 401:253 402:178 413:92 414:253 415:253 416:208 427:211 428:254 429:254 430:179 442:135 443:255 444:209 455:209 456:253 457:253 458:90 470:134 471:253 472:208 483:209 484:253 485:253 486:178 497:2 498:142 499:253 500:208 511:209 512:253 513:253 514:214 515:35 525:30 526:253 527:253 528:208 539:165 540:253 541:253 542:253 543:215 544:36 553:163 554:253 555:253 556:164 567:18 568:172 569:253 570:253 571:253 572:214 573:127 574:7 580:72 581:232 582:253 583:171 584:17 596:8 597:182 598:253 599:253 600:253 601:253 602:162 603:56 607:64 608:240 609:253 610:253 611:14 625:7 626:173 627:253 628:253 629:253 630:253 631:245 632:241 633:239 634:239 635:246 636:253 637:225 638:14 639:1 654:18 655:59 656:138 657:224 658:253 659:253 660:254 661:253 662:253 663:253 664:240 665:96 685:37 686:104 687:192 688:255 689:253 690:253 691:182 692:73 -1 130:7 131:176 132:254 133:224 158:51 159:253 160:253 161:223 185:4 186:170 187:253 188:253 189:214 213:131 214:253 215:253 216:217 217:39 241:209 242:253 243:253 244:134 268:75 269:240 270:253 271:239 272:26 296:184 297:253 298:245 299:63 323:142 324:255 325:253 326:185 350:62 351:229 352:254 353:242 354:73 377:54 378:229 379:253 380:254 381:105 405:152 406:254 407:254 408:213 409:26 432:32 433:243 434:253 435:253 436:115 459:2 460:142 461:253 462:253 463:155 487:30 488:253 489:253 490:232 491:55 515:75 516:253 517:253 518:164 542:72 543:232 544:253 545:189 546:17 570:224 571:253 572:253 573:163 597:43 598:235 599:253 600:253 601:195 602:21 625:28 626:231 627:253 628:253 629:184 630:14 654:225 655:253 656:253 657:75 -0 155:21 156:176 157:253 158:253 159:124 182:105 183:176 184:251 185:251 186:251 187:251 188:105 208:58 209:217 210:241 211:253 212:251 213:251 214:251 215:251 216:243 217:113 218:5 235:63 236:231 237:251 238:251 239:253 240:251 241:251 242:251 243:251 244:253 245:251 246:113 263:144 264:251 265:251 266:251 267:253 268:251 269:251 270:251 271:251 272:253 273:251 274:215 290:125 291:253 292:253 293:253 294:253 295:255 296:253 297:253 298:253 299:253 300:255 301:253 302:227 303:42 318:253 319:251 320:251 321:251 322:251 323:253 324:251 325:251 326:251 327:251 328:253 329:251 330:251 331:142 345:27 346:253 347:251 348:251 349:235 350:241 351:253 352:251 353:246 354:137 355:35 356:98 357:251 358:251 359:236 360:61 372:47 373:211 374:253 375:251 376:235 377:82 378:103 379:253 380:251 381:137 384:73 385:251 386:251 387:251 388:71 399:27 400:211 401:251 402:253 403:251 404:86 407:72 408:71 409:10 412:73 413:251 414:251 415:173 416:20 427:89 428:253 429:253 430:255 431:253 432:35 440:73 441:253 442:253 443:253 444:72 454:84 455:236 456:251 457:251 458:253 459:251 460:138 468:73 469:251 470:251 471:251 472:71 481:63 482:236 483:251 484:251 485:251 486:227 487:251 488:246 489:138 490:11 494:16 495:37 496:228 497:251 498:246 499:137 500:10 509:73 510:251 511:251 512:251 513:173 514:42 515:142 516:142 517:142 518:41 522:109 523:251 524:253 525:251 526:137 537:73 538:251 539:251 540:173 541:20 549:27 550:211 551:251 552:253 553:147 554:10 565:73 566:253 567:253 568:143 575:21 576:176 577:253 578:253 579:253 593:73 594:251 595:251 596:205 597:144 603:176 604:251 605:251 606:188 607:107 621:62 622:236 623:251 624:251 625:251 626:218 627:217 628:217 629:217 630:217 631:253 632:230 633:189 634:20 650:83 651:158 652:251 653:251 654:253 655:251 656:251 657:251 658:251 659:253 660:107 679:37 680:251 681:251 682:253 683:251 684:251 685:251 686:122 687:72 688:30 -1 151:68 152:45 153:131 154:131 155:131 156:101 157:68 158:92 159:44 187:19 188:170 211:29 212:112 213:89 215:40 216:222 239:120 240:254 241:251 242:127 243:40 244:222 267:197 268:254 269:254 270:91 271:40 272:222 294:64 295:247 296:254 297:236 298:50 299:40 300:107 322:184 323:254 324:254 325:91 327:6 328:14 350:203 351:254 352:254 353:71 377:23 378:218 379:254 380:254 381:71 405:113 406:254 407:255 408:239 409:53 433:210 434:254 435:254 436:195 460:62 461:242 462:254 463:241 464:88 468:28 488:86 489:254 490:254 491:189 495:28 496:104 516:106 517:254 518:254 519:168 523:40 524:91 544:216 545:254 546:245 547:51 551:35 552:80 572:216 573:254 574:102 599:55 600:239 601:254 602:52 627:166 628:254 629:210 630:23 655:223 656:252 657:104 683:223 684:169 -0 125:29 126:170 127:255 128:255 129:141 151:29 152:198 153:255 154:255 155:255 156:226 157:255 158:86 178:141 179:255 180:255 181:170 182:29 184:86 185:255 186:255 187:141 204:29 205:226 206:255 207:198 208:57 213:226 214:255 215:255 216:226 217:114 231:29 232:255 233:255 234:114 241:141 242:170 243:114 244:255 245:255 246:141 259:226 260:255 261:170 269:29 270:57 273:141 274:255 275:226 286:57 287:255 288:170 302:114 303:255 304:198 314:226 315:255 331:170 332:255 333:57 342:255 343:226 360:255 361:170 370:255 371:170 388:114 389:198 398:255 399:226 416:86 417:255 426:198 427:255 444:86 445:255 454:114 455:255 456:57 472:86 473:255 482:29 483:255 484:226 500:141 501:255 511:170 512:255 513:170 528:226 529:198 539:29 540:226 541:255 542:170 555:29 556:255 557:114 568:29 569:226 570:255 571:141 582:57 583:226 584:226 598:141 599:255 600:255 601:170 602:86 607:29 608:86 609:226 610:255 611:226 612:29 627:86 628:198 629:255 630:255 631:255 632:255 633:255 634:255 635:255 636:255 637:255 638:141 639:29 657:29 658:114 659:170 660:170 661:170 662:170 663:170 664:86 -0 153:203 154:254 155:252 156:252 157:252 158:214 159:51 160:20 180:62 181:221 182:252 183:250 184:250 185:250 186:252 187:250 188:160 189:20 207:62 208:211 209:250 210:252 211:250 212:250 213:250 214:252 215:250 216:250 217:49 234:41 235:221 236:250 237:250 238:252 239:250 240:250 241:250 242:252 243:250 244:128 245:10 262:254 263:252 264:252 265:252 266:254 267:252 268:252 269:252 270:254 271:252 272:252 273:90 290:150 291:190 292:250 293:250 294:252 295:250 296:250 297:169 298:171 299:250 300:250 301:250 302:82 318:31 319:191 320:250 321:250 322:252 323:189 324:100 325:20 326:172 327:250 328:250 329:250 330:80 346:213 347:250 348:250 349:250 350:212 351:29 354:252 355:250 356:250 357:250 374:92 375:252 376:252 377:252 382:51 383:252 384:252 385:252 386:203 401:82 402:252 403:250 404:250 405:169 410:132 411:250 412:250 413:250 414:121 428:92 429:231 430:252 431:250 432:159 433:20 438:252 439:250 440:250 441:250 456:30 457:211 458:252 459:250 460:221 461:40 466:90 467:250 468:250 469:250 470:163 484:31 485:213 486:254 487:232 488:80 494:92 495:252 496:252 497:212 498:163 512:151 513:250 514:252 515:149 522:252 523:250 524:250 525:49 540:60 541:221 542:252 543:210 544:60 550:252 551:250 552:250 553:49 569:202 570:252 571:250 572:221 573:40 576:123 577:202 578:252 579:250 580:250 581:49 596:123 597:243 598:255 599:252 600:252 601:252 602:254 603:252 604:252 605:252 606:254 607:252 608:100 625:121 626:171 627:250 628:250 629:250 630:252 631:250 632:250 633:250 634:252 635:250 636:100 654:20 655:160 656:250 657:250 658:252 659:250 660:250 661:250 662:252 663:189 664:40 683:20 684:170 685:250 686:252 687:250 688:128 689:49 690:49 691:29 -1 98:64 99:191 100:70 125:68 126:243 127:253 128:249 129:63 152:30 153:223 154:253 155:253 156:247 157:41 179:73 180:238 181:253 182:253 183:253 184:242 206:73 207:236 208:253 209:253 210:253 211:253 212:242 234:182 235:253 236:253 237:191 238:247 239:253 240:149 262:141 263:253 264:143 265:86 266:249 267:253 268:122 290:9 291:36 292:7 293:14 294:233 295:253 296:122 322:230 323:253 324:122 350:230 351:253 352:122 378:231 379:255 380:123 406:230 407:253 408:52 433:61 434:245 435:253 461:98 462:253 463:253 468:35 469:12 489:98 490:253 491:253 494:9 495:142 496:233 497:146 517:190 518:253 519:253 520:128 521:7 522:99 523:253 524:253 525:180 544:29 545:230 546:253 547:253 548:252 549:210 550:253 551:253 552:253 553:140 571:28 572:207 573:253 574:253 575:253 576:254 577:253 578:253 579:235 580:70 581:9 599:126 600:253 601:253 602:253 603:253 604:254 605:253 606:168 607:19 627:79 628:253 629:253 630:201 631:190 632:132 633:63 634:5 -1 125:26 126:240 127:72 153:25 154:238 155:208 182:209 183:226 184:14 210:209 211:254 212:43 238:175 239:254 240:128 266:63 267:254 268:204 294:107 295:254 296:204 322:88 323:254 324:204 350:55 351:254 352:204 378:126 379:254 380:204 406:126 407:254 408:189 434:169 435:254 436:121 462:209 463:254 464:193 490:209 491:254 492:111 517:22 518:235 519:254 520:37 545:137 546:254 547:227 548:16 573:205 574:255 575:185 601:205 602:254 603:125 629:205 630:254 631:125 657:111 658:212 659:43 -0 155:62 156:91 157:213 158:255 159:228 160:91 161:12 182:70 183:230 184:253 185:253 186:253 187:253 188:253 189:152 190:7 210:246 211:253 212:253 213:253 214:253 215:253 216:253 217:253 218:106 237:21 238:247 239:253 240:253 241:253 242:253 243:253 244:253 245:208 246:24 265:156 266:253 267:253 268:253 269:253 270:253 271:253 272:253 273:195 292:88 293:238 294:253 295:253 296:253 297:221 298:253 299:253 300:253 301:195 320:230 321:253 322:253 323:253 324:198 325:40 326:177 327:253 328:253 329:195 346:56 347:156 348:251 349:253 350:189 351:182 352:15 354:86 355:240 356:253 357:210 358:28 374:213 375:253 376:253 377:156 378:3 383:205 384:253 385:253 386:106 401:121 402:252 403:253 404:135 405:3 411:46 412:253 413:253 414:106 428:28 429:212 430:253 431:248 432:23 439:42 440:253 441:253 442:106 456:197 457:253 458:234 459:70 467:42 468:253 469:253 470:106 483:11 484:202 485:253 486:187 495:58 496:253 497:210 498:27 511:107 512:253 513:253 514:40 522:53 523:227 524:253 525:195 539:107 540:253 541:253 542:40 549:47 550:227 551:253 552:231 553:58 567:107 568:253 569:253 570:40 575:5 576:131 577:222 578:253 579:231 580:59 595:14 596:204 597:253 598:226 599:222 600:73 601:58 602:58 603:170 604:253 605:253 606:227 607:58 624:197 625:253 626:253 627:253 628:253 629:253 630:253 631:253 632:253 633:238 634:58 652:33 653:179 654:241 655:253 656:253 657:253 658:253 659:250 660:116 661:14 682:75 683:179 684:253 685:151 686:89 687:86 -1 157:42 158:228 159:253 160:253 185:144 186:251 187:251 188:251 212:89 213:236 214:251 215:235 216:215 239:79 240:253 241:251 242:251 243:142 267:180 268:253 269:251 270:251 271:142 294:32 295:202 296:255 297:253 298:216 322:109 323:251 324:253 325:251 326:112 349:6 350:129 351:251 352:253 353:127 354:5 377:37 378:251 379:251 380:253 381:107 405:166 406:251 407:251 408:201 409:30 432:42 433:228 434:253 435:253 460:144 461:251 462:251 463:147 487:63 488:236 489:251 490:251 491:71 515:150 516:251 517:251 518:204 519:41 543:253 544:251 545:251 546:142 571:255 572:253 573:164 598:105 599:253 600:251 601:35 626:180 627:253 628:251 629:35 654:180 655:253 656:251 657:35 682:180 683:253 684:251 685:35 -1 128:62 129:254 130:213 156:102 157:253 158:252 159:102 160:20 184:102 185:254 186:253 187:254 188:50 212:102 213:253 214:252 215:253 216:50 240:102 241:254 242:253 243:254 244:50 268:142 269:253 270:252 271:253 272:50 295:51 296:253 297:254 298:253 299:224 300:20 323:132 324:252 325:253 326:252 327:162 351:173 352:253 353:254 354:253 355:102 378:82 379:253 380:252 381:253 382:252 383:61 406:203 407:254 408:253 409:254 410:233 433:41 434:243 435:253 436:252 437:253 438:111 461:132 462:253 463:254 464:253 465:203 488:41 489:253 490:252 491:253 492:252 493:40 515:11 516:213 517:254 518:253 519:254 520:151 543:92 544:252 545:253 546:252 547:192 548:50 570:21 571:214 572:253 573:255 574:253 575:41 598:142 599:253 600:252 601:253 602:171 625:113 626:253 627:255 628:253 629:203 630:40 653:30 654:131 655:233 656:111 -0 154:28 155:195 156:254 157:254 158:254 159:254 160:254 161:255 162:61 181:6 182:191 183:253 184:253 185:253 186:253 187:253 188:253 189:253 190:60 208:26 209:190 210:253 211:253 212:253 213:253 214:240 215:191 216:242 217:253 218:60 235:15 236:187 237:253 238:253 239:253 240:253 241:253 242:200 244:211 245:253 246:60 262:22 263:66 264:253 265:253 266:253 267:253 268:241 269:209 270:44 271:23 272:218 273:253 274:60 290:124 291:253 292:253 293:253 294:253 295:253 296:182 299:131 300:253 301:253 302:60 318:38 319:217 320:253 321:253 322:244 323:111 324:37 327:131 328:253 329:253 330:60 346:124 347:253 348:253 349:253 350:165 354:22 355:182 356:253 357:253 358:60 374:124 375:253 376:253 377:240 378:45 382:53 383:253 384:253 385:249 386:58 401:16 402:168 403:253 404:216 405:45 410:53 411:253 412:253 413:138 429:159 430:253 431:253 432:147 438:53 439:253 440:253 441:138 456:136 457:252 458:253 459:227 460:5 466:53 467:253 468:243 469:101 484:140 485:253 486:253 487:124 494:156 495:253 496:218 511:13 512:164 513:253 514:142 515:5 521:32 522:233 523:253 524:218 539:62 540:253 541:253 542:130 548:37 549:203 550:253 551:253 552:127 567:62 568:253 569:253 570:147 571:36 572:36 573:36 574:36 575:151 576:222 577:253 578:245 579:127 580:8 595:34 596:202 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:253 605:253 606:200 624:140 625:253 626:253 627:253 628:253 629:253 630:253 631:253 632:248 633:235 634:65 652:87 653:173 654:253 655:253 656:253 657:253 658:253 659:253 660:182 681:14 682:78 683:96 684:253 685:253 686:253 687:137 688:56 -0 123:8 124:76 125:202 126:254 127:255 128:163 129:37 130:2 150:13 151:182 152:253 153:253 154:253 155:253 156:253 157:253 158:23 177:15 178:179 179:253 180:253 181:212 182:91 183:218 184:253 185:253 186:179 187:109 205:105 206:253 207:253 208:160 209:35 210:156 211:253 212:253 213:253 214:253 215:250 216:113 232:19 233:212 234:253 235:253 236:88 237:121 238:253 239:233 240:128 241:91 242:245 243:253 244:248 245:114 260:104 261:253 262:253 263:110 264:2 265:142 266:253 267:90 270:26 271:199 272:253 273:248 274:63 287:1 288:173 289:253 290:253 291:29 293:84 294:228 295:39 299:72 300:251 301:253 302:215 303:29 315:36 316:253 317:253 318:203 319:13 328:82 329:253 330:253 331:170 343:36 344:253 345:253 346:164 356:11 357:198 358:253 359:184 360:6 371:36 372:253 373:253 374:82 385:138 386:253 387:253 388:35 399:128 400:253 401:253 402:47 413:48 414:253 415:253 416:35 427:154 428:253 429:253 430:47 441:48 442:253 443:253 444:35 455:102 456:253 457:253 458:99 469:48 470:253 471:253 472:35 483:36 484:253 485:253 486:164 496:16 497:208 498:253 499:211 500:17 511:32 512:244 513:253 514:175 515:4 524:44 525:253 526:253 527:156 540:171 541:253 542:253 543:29 551:30 552:217 553:253 554:188 555:19 568:171 569:253 570:253 571:59 578:60 579:217 580:253 581:253 582:70 596:78 597:253 598:253 599:231 600:48 604:26 605:128 606:249 607:253 608:244 609:94 610:15 624:8 625:151 626:253 627:253 628:234 629:101 630:121 631:219 632:229 633:253 634:253 635:201 636:80 653:38 654:232 655:253 656:253 657:253 658:253 659:253 660:253 661:253 662:201 663:66 -0 127:68 128:254 129:255 130:254 131:107 153:11 154:176 155:230 156:253 157:253 158:253 159:212 180:28 181:197 182:253 183:253 184:253 185:253 186:253 187:229 188:107 189:14 208:194 209:253 210:253 211:253 212:253 213:253 214:253 215:253 216:253 217:53 235:69 236:241 237:253 238:253 239:253 240:253 241:241 242:186 243:253 244:253 245:195 262:10 263:161 264:253 265:253 266:253 267:246 268:40 269:57 270:231 271:253 272:253 273:195 290:140 291:253 292:253 293:253 294:253 295:154 297:25 298:253 299:253 300:253 301:195 318:213 319:253 320:253 321:253 322:135 323:8 325:3 326:128 327:253 328:253 329:195 345:77 346:238 347:253 348:253 349:253 350:7 354:116 355:253 356:253 357:195 372:11 373:165 374:253 375:253 376:231 377:70 378:1 382:78 383:237 384:253 385:195 400:33 401:253 402:253 403:253 404:182 411:200 412:253 413:195 428:98 429:253 430:253 431:253 432:24 439:42 440:253 441:195 456:197 457:253 458:253 459:253 460:24 467:163 468:253 469:195 484:197 485:253 486:253 487:189 488:13 494:53 495:227 496:253 497:121 512:197 513:253 514:253 515:114 521:21 522:227 523:253 524:231 525:27 540:197 541:253 542:253 543:114 547:5 548:131 549:143 550:253 551:231 552:59 568:197 569:253 570:253 571:236 572:73 573:58 574:217 575:223 576:253 577:253 578:253 579:174 596:197 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:253 605:253 606:253 607:48 624:149 625:253 626:253 627:253 628:253 629:253 630:253 631:253 632:253 633:182 634:15 635:3 652:12 653:168 654:253 655:253 656:253 657:253 658:253 659:248 660:89 661:23 -1 157:85 158:255 159:103 160:1 185:205 186:253 187:253 188:30 213:205 214:253 215:253 216:30 240:44 241:233 242:253 243:244 244:27 268:135 269:253 270:253 271:100 296:153 297:253 298:240 299:76 323:12 324:208 325:253 326:166 351:69 352:253 353:253 354:142 378:14 379:110 380:253 381:235 382:33 406:63 407:223 408:235 409:130 434:186 435:253 436:235 437:37 461:17 462:145 463:253 464:231 465:35 489:69 490:220 491:231 492:123 516:18 517:205 518:253 519:176 520:27 543:17 544:125 545:253 546:185 547:39 571:71 572:214 573:231 574:41 599:167 600:253 601:225 602:33 626:72 627:205 628:207 629:14 653:30 654:249 655:233 656:49 681:32 682:253 683:89 -1 126:94 127:132 154:250 155:250 156:4 182:250 183:254 184:95 210:250 211:254 212:95 238:250 239:254 240:95 266:250 267:254 268:95 294:250 295:254 296:95 322:250 323:254 324:95 350:250 351:254 352:95 378:250 379:254 380:95 405:77 406:254 407:250 408:19 433:96 434:254 435:249 461:53 462:253 463:252 464:43 490:250 491:251 492:32 517:85 518:254 519:249 545:96 546:254 547:249 573:83 574:254 575:250 576:14 602:250 603:254 604:95 630:250 631:255 632:95 658:132 659:254 660:95 -1 124:32 125:253 126:31 152:32 153:251 154:149 180:32 181:251 182:188 208:32 209:251 210:188 236:32 237:251 238:228 239:59 264:32 265:253 266:253 267:95 292:28 293:236 294:251 295:114 321:127 322:251 323:251 349:127 350:251 351:251 377:48 378:232 379:251 406:223 407:253 408:159 434:221 435:251 436:158 462:142 463:251 464:158 490:64 491:251 492:242 493:55 518:64 519:251 520:253 521:161 546:64 547:253 548:255 549:221 574:16 575:181 576:253 577:220 603:79 604:253 605:236 606:63 632:213 633:251 634:126 660:96 661:251 662:126 -1 129:39 130:254 131:255 132:254 133:140 157:136 158:253 159:253 160:228 161:67 184:6 185:227 186:253 187:253 188:58 211:29 212:188 213:253 214:253 215:253 216:17 239:95 240:253 241:253 242:253 243:157 244:8 266:3 267:107 268:253 269:253 270:245 271:77 294:29 295:253 296:253 297:240 298:100 322:141 323:253 324:253 325:215 349:129 350:248 351:253 352:253 353:215 377:151 378:253 379:253 380:253 381:144 405:151 406:253 407:253 408:253 409:27 431:3 432:102 433:242 434:253 435:253 436:110 437:3 459:97 460:253 461:253 462:253 463:214 464:55 487:207 488:253 489:253 490:253 491:158 515:67 516:253 517:253 518:253 519:158 543:207 544:253 545:253 546:240 547:88 571:207 572:253 573:253 574:224 598:32 599:217 600:253 601:253 602:224 626:141 627:253 628:253 629:253 630:133 654:36 655:219 656:253 657:140 658:10 -0 123:59 124:55 149:71 150:192 151:254 152:250 153:147 154:17 176:123 177:247 178:253 179:254 180:253 181:253 182:196 183:79 184:176 185:175 186:175 187:124 188:48 203:87 204:247 205:247 206:176 207:95 208:102 209:117 210:243 211:237 212:192 213:232 214:253 215:253 216:245 217:152 218:6 230:23 231:229 232:253 233:138 238:219 239:58 241:95 242:118 243:80 244:230 245:254 246:196 247:30 258:120 259:254 260:205 261:8 266:114 272:38 273:255 274:254 275:155 276:5 286:156 287:253 288:92 301:61 302:235 303:253 304:102 314:224 315:253 316:78 330:117 331:253 332:196 333:18 342:254 343:253 344:78 358:9 359:211 360:253 361:73 370:254 371:253 372:78 387:175 388:253 389:155 398:194 399:254 400:101 415:79 416:254 417:155 426:112 427:253 428:211 429:9 443:73 444:251 445:200 454:41 455:241 456:253 457:87 471:25 472:240 473:253 483:147 484:253 485:227 486:47 499:94 500:253 501:200 511:5 512:193 513:253 514:230 515:76 527:175 528:253 529:155 540:31 541:219 542:254 543:255 544:126 545:18 553:14 554:149 555:254 556:244 557:45 569:21 570:158 571:254 572:253 573:226 574:162 575:118 576:96 577:20 578:20 579:73 580:118 581:224 582:253 583:247 584:85 598:30 599:155 600:253 601:253 602:253 603:253 604:254 605:253 606:253 607:253 608:253 609:254 610:247 611:84 627:5 628:27 629:117 630:206 631:244 632:229 633:213 634:213 635:213 636:176 637:117 638:32 659:45 660:23 -1 128:58 129:139 156:247 157:247 158:25 183:121 184:253 185:156 186:3 211:133 212:253 213:145 238:11 239:227 240:253 241:145 266:7 267:189 268:253 269:145 294:35 295:252 296:253 297:145 322:146 323:252 324:253 325:131 350:146 351:252 352:253 353:13 378:146 379:252 380:253 381:13 406:147 407:253 408:255 409:13 434:146 435:252 436:253 437:13 462:146 463:252 464:253 465:13 490:146 491:252 492:253 493:13 517:22 518:230 519:252 520:221 521:9 545:22 546:230 547:252 548:133 574:146 575:252 576:133 602:146 603:252 604:120 630:146 631:252 658:146 659:252 -1 129:28 130:247 131:255 132:165 156:47 157:221 158:252 159:252 160:164 184:177 185:252 186:252 187:252 188:164 212:177 213:252 214:252 215:223 216:78 240:177 241:252 242:252 243:197 267:114 268:236 269:252 270:235 271:42 294:5 295:148 296:252 297:252 298:230 321:14 322:135 323:252 324:252 325:252 326:230 349:78 350:252 351:252 352:252 353:252 354:162 377:78 378:252 379:252 380:252 381:252 382:9 405:78 406:252 407:252 408:252 409:252 410:9 432:32 433:200 434:252 435:252 436:252 437:105 438:3 459:10 460:218 461:252 462:252 463:252 464:105 465:8 487:225 488:252 489:252 490:252 491:240 492:69 514:44 515:237 516:252 517:252 518:228 519:85 541:59 542:218 543:252 544:252 545:225 546:93 568:65 569:208 570:252 571:252 572:252 573:175 596:133 597:252 598:252 599:252 600:225 601:68 624:133 625:252 626:252 627:244 628:54 652:133 653:252 654:252 655:48 -0 156:13 157:6 181:10 182:77 183:145 184:253 185:190 186:67 207:11 208:77 209:193 210:252 211:252 212:253 213:252 214:238 215:157 216:71 217:26 233:10 234:78 235:193 236:252 237:252 238:252 239:252 240:253 241:252 242:252 243:252 244:252 245:228 246:128 247:49 248:5 259:6 260:78 261:194 262:252 263:252 264:252 265:252 266:252 267:252 268:253 269:217 270:192 271:232 272:252 273:252 274:252 275:252 276:135 277:3 286:4 287:147 288:252 289:252 290:252 291:252 292:252 293:252 294:252 295:252 296:175 297:26 299:40 300:145 301:235 302:252 303:252 304:252 305:104 314:208 315:252 316:252 317:252 318:252 319:252 320:252 321:133 322:48 323:48 329:71 330:236 331:252 332:252 333:230 342:253 343:185 344:170 345:252 346:252 347:252 348:173 349:22 358:102 359:252 360:252 361:252 370:24 371:141 372:243 373:252 374:252 375:186 376:5 386:8 387:220 388:252 389:252 398:70 399:247 400:252 401:252 402:165 403:37 414:81 415:251 416:252 417:194 426:255 427:253 428:253 429:251 430:69 441:39 442:231 443:253 444:253 445:127 454:253 455:252 456:249 457:127 468:6 469:147 470:252 471:252 472:190 473:5 482:253 483:252 484:216 495:7 496:145 497:252 498:252 499:252 500:69 510:253 511:252 512:223 513:16 522:25 523:185 524:252 525:252 526:252 527:107 528:8 538:167 539:252 540:252 541:181 542:18 549:105 550:191 551:252 552:252 553:235 554:151 555:10 566:37 567:221 568:252 569:252 570:210 571:193 572:96 573:73 574:130 575:188 576:194 577:227 578:252 579:252 580:235 581:128 595:97 596:220 597:252 598:252 599:252 600:252 601:252 602:252 603:252 604:253 605:252 606:252 607:236 608:70 624:40 625:174 626:252 627:252 628:252 629:252 630:252 631:252 632:253 633:197 634:138 635:29 653:5 654:23 655:116 656:143 657:143 658:143 659:143 660:24 661:10 -0 127:28 128:164 129:254 130:233 131:148 132:11 154:3 155:164 156:254 157:234 158:225 159:254 160:204 182:91 183:254 184:235 185:48 186:32 187:166 188:251 189:92 208:33 209:111 210:214 211:205 212:49 215:24 216:216 217:210 235:34 236:217 237:254 238:254 239:211 244:87 245:237 246:43 262:34 263:216 264:254 265:254 266:252 267:243 268:61 272:38 273:248 274:182 290:171 291:254 292:184 293:205 294:175 295:36 301:171 302:227 317:28 318:234 319:190 320:13 321:193 322:157 329:124 330:238 331:26 345:140 346:254 347:131 349:129 350:157 357:124 358:254 359:95 373:201 374:238 375:56 377:70 378:103 385:124 386:254 387:148 400:62 401:255 402:210 413:150 414:254 415:122 428:86 429:254 430:201 431:15 440:28 441:237 442:246 443:44 456:128 457:254 458:143 468:34 469:243 470:227 484:62 485:254 486:210 496:58 497:249 498:179 512:30 513:240 514:210 524:207 525:254 526:64 541:216 542:231 543:34 551:129 552:248 553:170 554:9 569:131 570:254 571:170 577:17 578:129 579:248 580:225 581:24 597:50 598:245 599:245 600:184 601:106 602:106 603:106 604:133 605:231 606:254 607:244 608:53 626:67 627:249 628:254 629:254 630:254 631:254 632:254 633:251 634:193 635:40 655:38 656:157 657:248 658:166 659:166 660:139 661:57 -0 129:105 130:255 131:219 132:67 133:67 134:52 156:20 157:181 158:253 159:253 160:253 161:253 162:226 163:69 182:4 183:129 184:206 185:253 186:253 187:253 188:253 189:253 190:253 191:130 209:9 210:141 211:253 212:253 213:253 214:253 215:253 216:253 217:253 218:253 219:166 220:20 237:134 238:253 239:253 240:253 241:253 242:253 243:253 244:253 245:253 246:253 247:253 248:65 262:2 263:83 264:207 265:246 266:253 267:253 268:253 269:253 270:253 271:249 272:234 273:247 274:253 275:253 276:65 290:83 291:253 292:253 293:253 294:253 295:253 296:189 297:253 298:253 299:205 301:179 302:253 303:253 304:65 317:85 318:234 319:253 320:253 321:253 322:253 323:157 324:26 325:164 326:151 327:83 329:179 330:253 331:253 332:65 344:65 345:237 346:253 347:253 348:253 349:67 350:36 351:14 353:15 354:12 357:179 358:253 359:253 360:65 371:4 372:141 373:253 374:253 375:221 376:158 377:23 385:179 386:253 387:253 388:65 399:129 400:253 401:253 402:241 403:62 412:72 413:226 414:253 415:175 416:24 426:119 427:247 428:253 429:253 430:206 439:8 440:134 441:253 442:253 443:130 454:132 455:253 456:253 457:194 458:27 467:125 468:253 469:253 470:253 471:130 481:45 482:213 483:253 484:253 485:112 493:70 494:170 495:247 496:253 497:253 498:89 499:43 509:67 510:253 511:253 512:196 513:55 514:9 520:8 521:131 522:253 523:253 524:253 525:86 526:1 537:67 538:253 539:253 540:253 541:253 542:129 546:43 547:114 548:134 549:253 550:253 551:231 552:139 553:41 565:20 566:167 567:253 568:253 569:253 570:247 571:179 572:179 573:179 574:206 575:253 576:253 577:253 578:253 579:72 594:103 595:240 596:253 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:244 605:119 606:8 607:1 623:107 624:253 625:253 626:253 627:253 628:253 629:253 630:253 631:175 632:111 651:3 652:121 653:253 654:253 655:253 656:253 657:253 658:182 659:24 -0 125:22 126:183 127:252 128:254 129:252 130:252 131:252 132:76 151:85 152:85 153:168 154:250 155:250 156:252 157:250 158:250 159:250 160:250 161:71 163:43 164:85 165:14 178:107 179:252 180:250 181:250 182:250 183:250 184:252 185:250 186:250 187:250 188:250 189:210 191:127 192:250 193:146 205:114 206:237 207:252 208:250 209:250 210:250 211:250 212:252 213:250 214:250 215:250 216:250 217:210 219:127 220:250 221:250 232:107 233:237 234:250 235:252 236:250 237:250 238:250 239:74 240:41 241:41 242:41 243:41 244:217 245:34 247:127 248:250 249:250 259:15 260:148 261:252 262:252 263:254 264:238 265:105 275:128 276:252 277:252 286:15 287:140 288:250 289:250 290:250 291:167 292:111 303:127 304:250 305:250 314:43 315:250 316:250 317:250 318:250 331:127 332:250 333:250 342:183 343:250 344:250 345:250 346:110 358:57 359:210 360:250 361:250 370:252 371:250 372:250 373:110 374:7 386:85 387:250 388:250 389:250 398:254 399:252 400:252 401:83 414:86 415:252 416:252 417:217 426:252 427:250 428:250 429:138 430:14 441:15 442:140 443:250 444:250 445:41 454:252 455:250 456:250 457:250 458:41 469:43 470:250 471:250 472:250 473:41 482:252 483:250 484:250 485:250 486:181 497:183 498:250 499:250 500:250 501:41 510:76 511:250 512:250 513:250 514:250 524:177 525:252 526:250 527:250 528:110 529:7 538:36 539:224 540:252 541:252 542:252 543:219 544:43 545:43 546:43 547:7 549:15 550:43 551:183 552:252 553:255 554:252 555:126 567:85 568:250 569:250 570:250 571:252 572:250 573:250 574:250 575:111 576:86 577:140 578:250 579:250 580:250 581:252 582:222 583:83 595:42 596:188 597:250 598:250 599:252 600:250 601:250 602:250 603:250 604:252 605:250 606:250 607:250 608:250 609:126 610:83 624:127 625:250 626:250 627:252 628:250 629:250 630:250 631:250 632:252 633:250 634:250 635:137 636:83 652:21 653:41 654:217 655:252 656:250 657:250 658:250 659:250 660:217 661:41 662:41 663:14 -1 155:114 156:206 157:25 183:238 184:252 185:55 211:222 212:252 213:55 239:113 240:252 241:55 267:113 268:252 269:55 295:255 296:253 297:56 323:253 324:176 325:6 350:32 351:253 352:233 353:43 378:140 379:253 380:195 381:19 406:140 407:253 408:167 433:29 434:253 435:141 461:29 462:252 463:140 489:29 490:252 491:140 517:29 518:252 519:140 545:29 546:252 547:140 573:169 574:253 575:79 601:169 602:252 628:76 629:234 630:141 656:197 657:233 658:37 684:197 685:223 -1 127:73 128:253 129:253 130:63 155:115 156:252 157:252 158:144 183:217 184:252 185:252 186:144 210:63 211:237 212:252 213:252 214:144 238:109 239:252 240:252 241:252 266:109 267:252 268:252 269:252 294:109 295:252 296:252 297:252 322:191 323:252 324:252 325:252 349:145 350:255 351:253 352:253 353:253 376:32 377:237 378:253 379:252 380:252 381:210 404:37 405:252 406:253 407:252 408:252 409:108 432:37 433:252 434:253 435:252 436:252 437:108 460:21 461:207 462:255 463:253 464:253 465:108 489:144 490:253 491:252 492:252 493:108 516:27 517:221 518:253 519:252 520:252 521:108 544:16 545:190 546:253 547:252 548:252 549:108 573:145 574:255 575:253 576:253 577:253 601:144 602:253 603:252 604:252 605:210 629:144 630:253 631:252 632:252 633:108 657:62 658:253 659:252 660:252 661:108 -1 120:85 121:253 122:132 123:9 147:82 148:241 149:251 150:251 151:128 175:175 176:251 177:251 178:251 179:245 180:121 203:13 204:204 205:251 206:251 207:251 208:245 209:107 232:39 233:251 234:251 235:251 236:251 237:167 238:22 260:15 261:155 262:251 263:251 264:251 265:251 266:177 289:15 290:157 291:248 292:251 293:251 294:251 295:165 319:214 320:251 321:251 322:251 323:212 324:78 325:24 347:109 348:251 349:251 350:251 351:253 352:251 353:170 354:10 375:5 376:57 377:162 378:251 379:253 380:251 381:251 382:18 405:106 406:239 407:255 408:253 409:253 410:213 434:105 435:253 436:251 437:251 438:230 439:72 463:253 464:251 465:251 466:251 467:221 468:67 491:72 492:251 493:251 494:251 495:251 496:96 519:36 520:199 521:251 522:251 523:251 524:155 525:15 548:45 549:204 550:251 551:251 552:251 553:157 577:161 578:249 579:251 580:251 581:248 582:147 606:233 607:251 608:251 609:251 610:173 634:233 635:251 636:251 637:251 638:173 662:53 663:131 664:251 665:251 666:173 -1 126:15 127:200 128:255 129:90 154:42 155:254 156:254 157:173 182:42 183:254 184:254 185:199 210:26 211:237 212:254 213:221 214:12 239:213 240:254 241:231 242:17 267:213 268:254 269:199 295:213 296:254 297:199 323:213 324:254 325:96 350:20 351:232 352:254 353:33 378:84 379:254 380:229 381:17 406:168 407:254 408:203 433:8 434:217 435:254 436:187 461:84 462:254 463:254 464:48 489:195 490:254 491:254 492:37 516:20 517:233 518:254 519:212 520:4 544:132 545:254 546:254 547:82 571:9 572:215 573:254 574:254 575:116 576:46 599:55 600:254 601:254 602:254 603:254 604:121 627:113 628:254 629:254 630:254 631:254 632:40 655:12 656:163 657:254 658:185 659:58 660:1 -0 182:32 183:57 184:57 185:57 186:57 187:57 188:57 189:57 208:67 209:185 210:229 211:252 212:252 213:252 214:253 215:252 216:252 217:252 218:185 219:66 234:13 235:188 236:246 237:252 238:253 239:252 240:252 241:252 242:241 243:139 244:177 245:252 246:253 247:246 248:187 249:13 261:26 262:255 263:253 264:244 265:175 266:101 274:126 275:244 276:253 277:153 288:82 289:243 290:253 291:214 292:81 303:169 304:252 305:252 315:19 316:215 317:252 318:206 319:56 331:169 332:252 333:252 343:157 344:252 345:252 346:13 359:169 360:252 361:151 370:41 371:253 372:253 373:128 386:92 387:253 388:206 389:13 398:166 399:252 400:196 401:9 414:216 415:252 416:142 426:253 427:252 428:168 441:89 442:253 443:208 444:13 454:253 455:252 456:68 468:38 469:225 470:253 471:96 482:254 483:253 484:56 495:45 496:229 497:253 498:151 510:253 511:252 512:81 522:70 523:225 524:252 525:227 538:216 539:252 540:168 548:29 549:134 550:253 551:252 552:186 553:31 566:91 567:252 568:243 569:125 573:51 574:114 575:113 576:210 577:252 578:253 579:151 580:19 595:157 596:253 597:253 598:254 599:253 600:253 601:253 602:254 603:253 604:244 605:175 606:51 623:19 624:122 625:196 626:197 627:221 628:196 629:196 630:197 631:121 632:56 655:25 -0 127:42 128:235 129:255 130:84 153:15 154:132 155:208 156:253 157:253 158:171 159:108 180:6 181:177 182:253 183:253 184:253 185:253 186:253 187:242 188:110 208:151 209:253 210:253 211:253 212:253 213:253 214:253 215:253 216:139 235:48 236:208 237:253 238:253 239:253 240:253 241:253 242:253 243:253 244:139 263:85 264:253 265:253 266:253 267:253 268:236 269:156 270:184 271:253 272:148 273:6 290:7 291:141 292:253 293:253 294:253 295:253 296:27 298:170 299:253 300:253 301:74 318:19 319:253 320:253 321:253 322:253 323:253 324:27 326:170 327:253 328:253 329:74 345:16 346:186 347:253 348:253 349:253 350:242 351:105 352:4 354:170 355:253 356:253 357:94 358:1 373:141 374:253 375:253 376:253 377:242 378:100 382:170 383:253 384:253 385:253 386:8 401:141 402:253 403:253 404:253 405:224 410:170 411:253 412:253 413:253 414:8 428:12 429:158 430:253 431:253 432:230 433:51 438:18 439:237 440:253 441:253 442:8 456:76 457:253 458:253 459:218 460:61 467:236 468:253 469:253 470:8 484:76 485:253 486:253 487:168 495:110 496:253 497:132 498:3 512:76 513:253 514:253 515:168 521:20 522:174 523:239 524:147 525:5 539:5 540:155 541:253 542:253 543:168 548:102 549:170 550:253 551:253 552:139 567:3 568:128 569:253 570:253 571:228 572:179 573:179 574:179 575:179 576:245 577:253 578:253 579:219 580:41 596:76 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:253 605:253 606:253 607:163 624:39 625:199 626:253 627:253 628:253 629:253 630:253 631:253 632:253 633:253 634:170 635:9 653:36 654:219 655:253 656:253 657:253 658:253 659:253 660:224 661:65 662:22 -1 156:202 157:253 158:69 184:253 185:252 186:121 212:253 213:252 214:69 240:253 241:252 242:69 267:106 268:253 269:231 270:37 295:179 296:255 297:196 322:17 323:234 324:253 325:92 350:93 351:252 352:253 353:92 378:93 379:252 380:253 381:92 406:93 407:252 408:232 409:8 434:208 435:253 436:116 462:207 463:252 464:116 490:207 491:252 492:32 517:57 518:244 519:252 545:122 546:252 547:252 573:185 574:253 575:253 601:184 602:252 603:252 629:101 630:252 631:252 657:13 658:173 659:252 660:43 686:9 687:232 688:116 -1 156:73 157:253 158:253 159:253 160:124 184:73 185:251 186:251 187:251 188:251 212:99 213:251 214:251 215:251 216:225 240:253 241:251 242:251 243:251 244:71 266:79 267:180 268:253 269:251 270:251 271:173 272:20 294:110 295:253 296:255 297:253 298:216 322:109 323:251 324:253 325:251 326:215 350:109 351:251 352:253 353:251 354:215 378:109 379:251 380:253 381:251 382:137 406:109 407:251 408:253 409:251 410:35 433:37 434:253 435:253 436:255 437:253 438:35 461:140 462:251 463:251 464:253 465:168 466:15 488:125 489:246 490:251 491:251 492:190 493:15 516:144 517:251 518:251 519:251 520:180 543:53 544:221 545:251 546:251 547:251 548:51 571:125 572:253 573:253 574:253 575:201 598:105 599:253 600:251 601:251 602:188 603:30 626:180 627:253 628:251 629:251 630:142 654:180 655:253 656:251 657:235 658:82 682:180 683:253 684:251 685:215 -1 124:111 125:255 126:48 152:162 153:253 154:237 155:63 180:206 181:253 182:253 183:183 208:87 209:217 210:253 211:205 237:90 238:253 239:238 240:60 265:37 266:225 267:253 268:89 294:206 295:253 296:159 322:206 323:253 324:226 350:206 351:253 352:226 378:206 379:253 380:226 406:206 407:253 408:226 434:206 435:253 436:226 462:206 463:253 464:226 490:206 491:253 492:226 518:206 519:253 520:237 521:45 546:206 547:253 548:253 549:109 574:173 575:253 576:253 577:109 602:69 603:253 604:253 605:109 630:64 631:248 632:253 633:109 659:112 660:253 661:109 -0 99:70 100:255 101:165 102:114 127:122 128:253 129:253 130:253 131:120 155:165 156:253 157:253 158:253 159:234 160:52 183:99 184:253 185:253 186:253 187:253 188:228 189:26 209:60 210:168 211:238 212:202 213:174 214:253 215:253 216:253 217:127 235:91 236:81 237:1 238:215 239:128 240:28 241:12 242:181 243:253 244:253 245:175 246:3 262:18 263:204 264:253 265:77 270:7 271:253 272:253 273:253 274:54 289:54 290:248 291:253 292:253 293:143 298:1 299:127 300:253 301:253 302:188 317:104 318:253 319:253 320:253 321:20 327:81 328:249 329:253 330:191 345:192 346:253 347:253 348:218 349:5 356:203 357:253 358:208 359:21 372:56 373:237 374:253 375:250 376:100 384:104 385:253 386:253 387:75 400:76 401:253 402:253 403:224 412:119 413:253 414:253 415:75 428:80 429:253 430:253 431:103 439:4 440:241 441:253 442:218 443:32 456:213 457:253 458:253 459:103 467:125 468:253 469:253 470:191 484:213 485:253 486:253 487:103 494:3 495:176 496:253 497:253 498:135 512:213 513:253 514:253 515:103 521:9 522:162 523:253 524:253 525:226 526:37 540:179 541:253 542:253 543:135 548:46 549:157 550:253 551:253 552:253 553:63 568:23 569:188 570:253 571:249 572:179 573:179 574:179 575:179 576:233 577:253 578:253 579:233 580:156 581:10 597:51 598:235 599:253 600:253 601:253 602:253 603:253 604:253 605:251 606:232 607:120 626:16 627:124 628:253 629:253 630:253 631:253 632:152 633:104 -1 124:29 125:197 126:255 127:84 152:85 153:251 154:253 155:83 180:86 181:253 182:254 183:253 208:85 209:251 210:253 211:251 236:86 237:253 238:254 239:253 240:169 264:85 265:251 266:253 267:251 268:168 292:86 293:253 294:254 295:253 296:169 320:28 321:196 322:253 323:251 324:168 349:169 350:254 351:253 352:169 377:168 378:253 379:251 380:168 405:169 406:254 407:253 408:169 433:168 434:253 435:251 436:168 462:254 463:253 464:254 465:139 490:253 491:251 492:253 493:251 518:254 519:253 520:254 521:253 522:57 546:253 547:251 548:253 549:251 550:168 574:198 575:253 576:254 577:253 578:114 602:85 603:251 604:253 605:251 630:85 631:253 632:254 633:253 658:28 659:83 660:196 661:83 -1 159:31 160:210 161:253 162:163 187:198 188:252 189:252 190:162 213:10 214:86 215:242 216:252 217:252 218:66 241:164 242:252 243:252 244:252 245:188 246:8 268:53 269:242 270:252 271:252 272:225 273:14 296:78 297:252 298:252 299:252 300:204 323:56 324:231 325:252 326:252 327:212 328:35 351:157 352:252 353:252 354:252 355:37 377:8 378:132 379:253 380:252 381:252 382:230 383:24 405:45 406:252 407:253 408:252 409:154 410:55 427:7 428:55 433:107 434:253 435:255 436:228 437:53 454:15 455:24 456:23 460:110 461:242 462:252 463:228 464:59 482:57 483:83 487:88 488:247 489:252 490:252 491:140 514:15 515:189 516:252 517:252 518:252 542:74 543:252 544:252 545:238 546:90 570:178 571:252 572:252 573:189 597:40 598:217 599:252 600:252 601:59 625:75 626:252 627:252 628:252 629:85 630:61 653:62 654:239 655:252 656:156 657:14 682:178 683:252 684:14 -1 131:159 132:255 133:122 158:167 159:228 160:253 161:121 185:64 186:236 187:251 188:205 189:110 212:48 213:158 214:251 215:251 216:178 217:39 240:190 241:251 242:251 243:251 267:96 268:253 269:253 270:253 271:153 295:194 296:251 297:251 298:211 299:74 322:80 323:174 324:251 325:251 326:140 327:47 349:16 350:181 351:253 352:251 353:219 354:23 377:64 378:251 379:253 380:251 381:204 382:19 405:223 406:253 407:255 408:233 409:48 431:20 432:174 433:244 434:251 435:253 436:109 437:31 459:96 460:189 461:251 462:251 463:126 464:31 486:24 487:106 488:251 489:235 490:188 491:100 514:96 515:251 516:251 517:228 518:59 542:255 543:253 544:253 545:213 546:36 569:100 570:253 571:251 572:251 573:85 574:23 596:32 597:127 598:253 599:235 600:126 601:15 624:104 625:251 626:253 627:240 628:79 652:83 653:193 654:253 655:220 -0 153:92 154:191 155:178 156:253 157:242 158:141 159:104 160:29 180:26 181:253 182:252 183:252 184:252 185:253 186:252 187:252 188:252 189:108 190:19 206:57 207:123 208:222 209:253 210:252 211:252 212:252 213:168 214:224 215:252 216:252 217:253 218:84 233:176 234:243 235:252 236:252 237:253 238:252 239:252 240:252 242:19 243:153 244:252 245:253 246:209 247:25 259:10 260:128 261:255 262:253 263:244 264:225 265:114 266:194 267:253 268:178 272:163 273:254 274:253 275:168 287:85 288:252 289:253 290:189 291:56 294:19 295:133 296:9 300:38 301:253 302:252 303:168 314:19 315:191 316:252 317:194 318:19 329:253 330:252 331:234 332:22 342:107 343:252 344:252 345:13 357:253 358:252 359:252 360:128 370:169 371:253 372:241 385:141 386:253 387:253 388:140 397:19 398:225 399:252 400:139 413:66 414:252 415:252 416:139 425:29 426:252 427:252 428:52 441:29 442:252 443:252 444:139 453:29 454:252 455:252 456:28 469:29 470:252 471:252 472:40 481:141 482:253 483:253 484:91 497:154 498:253 499:168 509:66 510:252 511:252 512:165 525:253 526:252 527:168 537:19 538:224 539:252 540:252 552:126 553:253 554:252 555:80 566:169 567:252 568:252 569:214 570:38 579:126 580:249 581:253 582:151 583:6 594:26 595:223 596:253 597:254 598:253 599:128 600:29 604:13 605:41 606:216 607:253 608:253 609:226 610:38 623:122 624:252 625:253 626:252 627:252 628:252 629:169 630:169 631:169 632:206 633:253 634:252 635:252 636:202 637:38 651:19 652:56 653:168 654:224 655:252 656:252 657:253 658:252 659:252 660:252 661:253 662:233 663:130 664:6 682:94 683:139 684:190 685:153 686:252 687:164 688:139 689:28 690:22 -1 128:53 129:250 130:255 131:25 156:167 157:253 158:253 159:25 182:3 183:123 184:247 185:253 186:253 187:25 210:9 211:253 212:253 213:253 214:253 215:25 238:9 239:253 240:253 241:253 242:253 243:25 266:9 267:253 268:253 269:253 270:180 271:13 294:9 295:253 296:253 297:253 298:104 322:9 323:253 324:253 325:253 326:104 350:15 351:253 352:253 353:253 354:104 378:184 379:253 380:253 381:228 382:68 406:184 407:253 408:253 409:182 433:103 434:251 435:253 436:253 437:12 461:106 462:253 463:253 464:253 465:8 488:24 489:238 490:253 491:253 492:253 493:8 516:27 517:253 518:253 519:253 520:253 521:8 544:27 545:253 546:253 547:253 548:253 549:8 572:27 573:253 574:253 575:253 576:177 577:4 600:160 601:253 602:253 603:253 604:87 628:202 629:253 630:253 631:219 632:54 656:81 657:253 658:247 659:51 -0 122:63 123:176 124:253 125:253 126:159 127:113 128:63 150:140 151:253 152:252 153:252 154:252 155:252 156:241 157:100 158:66 177:54 178:227 179:253 180:252 181:252 182:252 183:252 184:253 185:252 186:239 187:181 188:57 204:38 205:224 206:252 207:253 208:226 209:246 210:252 211:252 212:253 213:252 214:252 215:252 216:252 217:108 218:3 232:57 233:252 234:252 235:253 236:27 237:88 238:112 239:112 240:112 241:112 242:142 243:252 244:252 245:253 246:152 247:31 260:198 261:253 262:253 263:79 270:32 271:153 272:253 273:255 274:253 275:196 287:76 288:246 289:252 290:127 299:3 300:106 301:253 302:252 303:214 304:28 315:194 316:252 317:252 318:112 329:143 330:252 331:252 332:193 343:225 344:252 345:217 346:37 357:38 358:234 359:252 360:223 370:63 371:240 372:252 373:84 386:146 387:252 388:223 398:114 399:253 400:228 401:47 414:147 415:253 416:253 417:112 426:159 427:252 428:195 442:225 443:252 444:252 445:112 454:253 455:252 456:195 470:225 471:252 472:230 473:25 482:159 483:252 484:202 485:10 497:92 498:243 499:252 500:208 510:113 511:252 512:252 513:161 524:79 525:253 526:252 527:220 528:37 538:114 539:253 540:253 541:253 542:174 543:63 550:26 551:128 552:253 553:255 554:253 555:133 566:12 567:228 568:252 569:252 570:252 571:241 572:100 573:85 574:76 576:85 577:131 578:231 579:252 580:252 581:253 582:129 583:6 595:97 596:208 597:252 598:252 599:253 600:252 601:252 602:246 603:197 604:253 605:252 606:252 607:252 608:220 609:133 610:6 624:19 625:99 626:239 627:253 628:252 629:252 630:252 631:252 632:253 633:252 634:245 635:223 636:99 654:63 655:112 656:112 657:221 658:252 659:252 660:253 661:127 662:87 -0 153:12 154:136 155:254 156:255 157:195 158:115 159:3 180:6 181:175 182:253 183:196 184:160 185:252 186:253 187:15 208:130 209:253 210:234 211:4 213:27 214:205 215:232 216:40 235:54 236:246 237:253 238:68 242:24 243:243 244:106 262:3 263:134 264:235 265:99 266:4 271:132 272:247 273:77 290:56 291:253 292:62 299:23 300:233 301:129 318:179 319:183 320:4 328:182 329:220 345:21 346:232 347:59 356:95 357:232 358:21 373:128 374:183 385:228 386:85 401:187 402:124 413:228 414:186 429:187 430:124 441:228 442:104 457:187 458:124 469:169 470:184 485:187 486:124 497:203 498:150 513:187 514:124 524:10 525:220 526:39 541:187 542:155 552:111 553:201 569:129 570:228 571:7 579:12 580:181 581:76 598:234 599:166 600:9 606:24 607:209 608:106 626:139 627:250 628:167 629:11 630:2 631:11 632:11 633:129 634:227 635:90 636:11 655:95 656:247 657:253 658:178 659:253 660:253 661:244 662:86 684:47 685:175 686:253 687:232 688:149 689:40 -1 128:255 129:253 130:57 156:253 157:251 158:225 159:56 183:169 184:254 185:253 186:254 187:84 211:168 212:253 213:251 214:253 215:83 238:85 239:253 240:254 241:253 242:169 266:85 267:251 268:253 269:251 270:56 294:141 295:253 296:254 297:253 322:253 323:251 324:253 325:251 350:254 351:253 352:254 353:253 378:253 379:251 380:253 381:251 406:254 407:253 408:254 409:196 433:114 434:253 435:251 436:253 437:83 461:169 462:254 463:253 464:226 465:56 489:168 490:253 491:251 492:168 516:85 517:253 518:254 519:253 544:85 545:251 546:253 547:251 572:254 573:253 574:254 575:253 600:253 601:251 602:253 603:251 628:254 629:253 630:254 631:253 656:139 657:251 658:253 659:138 -0 151:23 152:167 153:208 154:254 155:255 156:129 157:19 179:151 180:253 181:253 182:253 183:253 184:253 185:209 186:26 207:181 208:253 209:253 210:253 211:227 212:181 213:253 214:207 215:22 235:227 236:253 237:253 238:253 239:92 240:38 241:226 242:253 243:129 244:2 263:193 264:253 265:253 266:248 267:62 269:50 270:253 271:253 272:45 291:170 292:253 293:253 294:135 297:12 298:208 299:253 300:119 318:16 319:232 320:253 321:253 322:21 326:60 327:253 328:185 346:164 347:253 348:253 349:224 350:14 354:14 355:217 356:247 357:62 373:3 374:193 375:253 376:250 377:64 383:199 384:253 385:179 401:67 402:253 403:253 404:205 411:98 412:253 413:188 429:151 430:253 431:245 432:43 439:63 440:250 441:188 457:151 458:253 459:243 468:244 469:222 470:22 485:151 486:253 487:217 496:244 497:253 498:115 512:3 513:195 514:253 515:134 524:156 525:253 526:150 541:140 542:253 543:134 552:239 553:253 554:139 569:44 570:253 571:134 579:53 580:246 581:237 582:32 597:8 598:200 599:229 600:40 606:25 607:225 608:253 609:188 626:120 627:250 628:230 629:58 630:17 632:12 633:42 634:213 635:253 636:238 637:84 655:151 656:253 657:253 658:217 659:179 660:206 661:253 662:253 663:196 664:118 683:18 684:58 685:145 686:152 687:253 688:214 689:145 690:74 691:7 -1 130:24 131:150 132:233 133:38 156:14 157:89 158:253 159:254 160:254 161:71 183:78 184:203 185:254 186:254 187:254 188:232 189:77 190:54 191:8 209:12 210:155 211:240 212:254 213:223 214:76 215:254 216:254 217:254 218:254 219:68 235:3 236:101 237:216 238:254 239:227 240:122 241:26 242:110 243:254 244:254 245:254 246:184 247:100 262:46 263:222 264:254 265:254 266:179 267:48 270:181 271:254 272:254 273:146 274:6 288:2 289:145 290:248 291:254 292:182 293:111 294:4 297:3 298:250 299:254 300:206 301:3 315:6 316:144 317:254 318:254 319:171 325:125 326:254 327:252 328:80 342:6 343:142 344:254 345:179 346:95 347:4 352:61 353:246 354:254 355:150 370:64 371:254 372:177 373:14 380:124 381:254 382:246 383:32 398:108 399:97 400:15 407:24 408:226 409:254 410:116 435:177 436:255 437:254 438:5 463:196 464:254 465:99 466:1 490:3 491:199 492:254 493:79 518:129 519:254 520:254 521:23 546:178 547:254 548:192 549:8 550:3 551:43 573:11 574:198 575:254 576:128 577:66 578:130 579:225 595:137 596:202 597:106 598:84 599:84 600:84 601:112 602:254 603:254 604:254 605:254 606:212 607:151 623:172 624:254 625:254 626:254 627:254 628:254 629:254 630:254 631:254 632:254 633:162 634:75 651:12 652:106 653:177 654:254 655:254 656:254 657:235 658:135 659:100 660:17 661:2 -0 125:120 126:253 127:253 128:63 151:38 152:131 153:246 154:252 155:252 156:203 157:15 179:222 180:252 181:252 182:252 183:252 184:166 185:38 205:4 206:107 207:253 208:252 209:252 210:252 211:252 212:253 213:224 214:137 215:26 233:107 234:252 235:253 236:252 237:220 238:128 239:252 240:253 241:252 242:252 243:239 244:140 261:170 262:253 263:255 264:168 267:79 268:192 269:253 270:253 271:253 272:253 273:255 274:90 288:51 289:243 290:252 291:215 292:33 296:12 297:74 298:233 299:252 300:252 301:253 302:195 303:19 316:166 317:252 318:252 319:31 326:43 327:149 328:195 329:253 330:252 331:177 332:19 343:57 344:234 345:252 346:252 357:237 358:252 359:252 360:180 361:13 371:85 372:252 373:252 374:173 385:50 386:237 387:252 388:252 389:112 399:226 400:253 401:240 402:63 414:163 415:253 416:253 417:112 426:38 427:234 428:252 429:176 442:85 443:252 444:252 445:158 454:113 455:252 456:252 457:84 470:19 471:209 472:252 473:252 482:207 483:252 484:252 485:84 498:10 499:203 500:252 501:236 510:253 511:252 512:252 513:84 526:85 527:252 528:252 529:112 538:114 539:253 540:253 541:146 553:51 554:159 555:253 556:240 557:63 566:75 567:243 568:252 569:249 570:146 579:57 580:85 581:238 582:252 583:252 584:99 595:116 596:252 597:252 598:252 599:198 600:197 601:165 602:57 603:57 604:57 605:182 606:197 607:234 608:252 609:253 610:233 611:164 612:19 623:28 624:84 625:180 626:252 627:253 628:252 629:252 630:252 631:252 632:253 633:252 634:252 635:252 636:252 637:225 638:71 653:13 654:112 655:253 656:252 657:252 658:252 659:252 660:253 661:252 662:252 663:157 664:112 -1 127:155 128:253 129:126 155:253 156:251 157:141 158:4 183:253 184:251 185:251 186:31 211:253 212:251 213:251 214:31 239:253 240:251 241:251 242:31 267:255 268:253 269:253 270:31 293:8 294:131 295:253 296:251 297:235 298:27 321:64 322:251 323:253 324:251 325:126 349:64 350:251 351:253 352:251 353:126 377:64 378:251 379:253 380:251 381:126 405:64 406:253 407:255 408:221 433:182 434:251 435:253 436:200 460:64 461:236 462:251 463:253 464:62 487:8 488:158 489:251 490:251 491:169 492:8 515:32 516:251 517:251 518:251 519:158 543:32 544:253 545:253 546:253 547:159 571:32 572:251 573:251 574:251 575:39 599:32 600:251 601:251 602:251 627:32 628:251 629:251 630:251 631:100 655:32 656:251 657:251 658:251 -0 101:88 102:127 103:5 126:19 127:58 128:20 129:14 130:217 131:19 152:7 153:146 154:247 155:253 156:235 157:27 158:84 159:81 180:126 181:253 182:164 183:19 184:15 187:156 188:9 208:214 209:222 210:34 215:234 216:58 235:59 236:254 237:116 243:235 244:58 263:141 264:251 265:72 271:151 272:140 291:224 292:233 299:136 300:223 319:254 320:218 327:136 328:253 347:254 348:135 355:136 356:253 374:23 375:255 376:114 383:137 384:231 402:98 403:254 404:122 411:136 412:155 430:98 431:254 432:106 439:166 440:155 458:98 459:254 460:128 467:234 468:193 486:98 487:254 488:135 494:61 495:248 496:118 515:255 516:238 517:18 521:13 522:224 523:254 524:58 543:201 544:253 545:128 546:2 548:5 549:150 550:253 551:167 552:9 571:18 572:226 573:253 574:49 575:31 576:156 577:253 578:228 579:13 600:147 601:253 602:243 603:241 604:254 605:227 606:43 628:5 629:126 630:245 631:253 632:231 633:46 -0 127:37 128:141 129:156 130:156 131:194 132:194 133:47 153:11 154:132 155:239 156:253 157:253 158:253 159:253 160:254 161:181 180:25 181:172 182:253 183:235 184:167 185:78 186:93 187:174 188:254 189:247 190:54 207:26 208:210 209:253 210:237 211:90 216:201 217:253 218:78 235:192 236:253 237:237 238:58 244:156 245:253 246:78 262:141 263:254 264:235 265:53 269:19 270:5 272:156 273:254 274:78 289:46 290:254 291:253 292:92 296:17 297:226 298:217 299:49 300:148 301:253 302:78 317:165 318:254 319:239 320:24 324:20 325:253 326:253 327:58 328:18 329:115 330:24 344:37 345:248 346:254 347:91 352:2 353:117 354:250 355:163 356:91 372:77 373:253 374:254 375:39 382:196 383:253 384:173 400:159 401:254 402:218 403:15 410:77 411:254 412:255 413:61 428:234 429:253 430:113 438:21 439:226 440:254 441:135 455:25 456:240 457:253 458:68 467:195 468:254 469:135 483:79 484:253 485:253 495:195 496:254 497:135 511:79 512:253 513:253 514:76 523:195 524:254 525:99 540:212 541:254 542:209 543:9 550:10 551:209 552:196 553:15 568:54 569:253 570:254 571:137 572:36 576:2 577:20 578:168 579:253 580:60 596:28 597:235 598:254 599:253 600:199 601:124 602:79 603:79 604:167 605:253 606:253 607:185 608:30 625:15 626:117 627:217 628:253 629:253 630:253 631:254 632:253 633:240 634:109 635:12 655:27 656:126 657:208 658:253 659:193 660:147 661:40 -0 154:32 155:134 156:218 157:254 158:254 159:254 160:217 161:84 176:44 177:208 178:215 179:156 180:35 181:119 182:236 183:246 184:136 185:91 186:69 187:151 188:249 189:246 190:78 203:44 204:230 205:254 206:254 207:254 208:254 209:254 210:196 211:48 216:60 217:224 218:210 219:24 231:118 232:254 233:202 234:19 235:201 236:254 237:181 238:9 245:35 246:233 247:168 259:193 260:223 261:34 263:59 264:163 265:236 266:15 274:140 275:205 276:8 286:60 287:254 288:176 293:38 302:54 303:237 304:80 314:59 315:254 316:93 331:131 332:200 342:59 343:240 344:24 359:79 360:214 370:59 371:234 387:67 388:248 389:54 398:59 399:234 416:235 417:58 426:60 427:235 443:79 444:255 445:59 454:59 455:251 456:66 471:79 472:250 473:54 482:59 483:254 484:108 499:146 500:214 510:5 511:203 512:187 513:3 526:4 527:188 528:199 539:118 540:254 541:57 554:96 555:254 556:117 567:16 568:237 569:224 570:14 581:14 582:187 583:206 584:8 596:88 597:252 598:186 599:16 608:16 609:187 610:252 611:125 625:100 626:254 627:237 628:94 629:24 635:13 636:214 637:254 638:166 653:3 654:57 655:215 656:248 657:241 658:235 659:197 660:137 661:137 662:137 663:231 664:238 665:155 666:25 684:57 685:155 686:246 687:254 688:254 689:254 690:254 691:147 692:36 -1 124:102 125:252 126:252 127:41 152:102 153:250 154:250 155:202 180:102 181:250 182:250 183:232 184:91 208:102 209:250 210:250 211:212 212:29 236:102 237:252 238:252 239:254 240:150 264:102 265:250 266:250 267:252 268:149 292:102 293:250 294:250 295:252 296:149 320:102 321:250 322:250 323:252 324:231 325:80 349:152 350:252 351:254 352:252 353:100 377:151 378:250 379:252 380:250 381:100 405:151 406:250 407:252 408:250 409:100 433:151 434:250 435:252 436:250 437:100 461:123 462:243 463:254 464:252 465:100 490:202 491:252 492:250 493:100 518:80 519:252 520:250 521:190 522:30 547:252 548:250 549:250 550:49 575:255 576:252 577:252 578:252 579:214 580:31 603:171 604:250 605:250 606:250 607:252 608:190 609:40 631:20 632:160 633:250 634:250 635:252 636:250 637:100 660:20 661:170 662:250 663:212 664:49 665:20 -0 124:20 125:121 126:197 127:253 128:64 151:23 152:200 153:252 154:252 155:252 156:184 157:6 178:25 179:197 180:252 181:252 182:252 183:252 184:253 185:228 186:107 187:15 205:26 206:196 207:252 208:252 209:252 210:252 211:252 212:253 213:252 214:252 215:219 216:178 217:21 233:186 234:252 235:238 236:94 237:67 238:224 239:217 240:53 241:109 242:245 243:252 244:252 245:213 246:63 260:98 261:242 262:252 263:101 266:39 267:31 270:109 271:128 272:241 273:252 274:207 275:97 287:17 288:230 289:252 290:241 291:56 300:109 301:252 302:252 303:229 304:17 314:13 315:192 316:252 317:243 318:96 328:25 329:127 330:252 331:252 332:120 342:121 343:252 344:252 345:165 357:125 358:252 359:252 360:246 361:70 370:190 371:252 372:252 373:39 385:26 386:210 387:252 388:252 389:119 398:255 399:253 400:159 414:22 415:209 416:253 417:183 426:253 427:252 428:103 443:34 444:252 445:252 454:253 455:252 456:26 471:27 472:252 473:252 482:253 483:252 484:168 485:13 499:70 500:252 501:209 510:147 511:252 512:252 513:75 526:68 527:233 528:252 529:119 538:121 539:252 540:252 541:189 542:40 552:15 553:82 554:231 555:252 556:214 557:31 566:38 567:135 568:248 569:252 570:231 571:145 572:41 573:41 574:41 575:41 576:20 577:24 578:37 579:83 580:194 581:252 582:252 583:212 584:33 596:83 597:213 598:252 599:252 600:252 601:252 602:252 603:252 604:204 605:213 606:243 607:252 608:252 609:252 610:212 611:34 625:34 626:140 627:238 628:248 629:252 630:252 631:252 632:253 633:252 634:252 635:241 636:238 637:238 638:75 656:82 657:119 658:119 659:119 660:120 661:119 662:119 663:19 -1 127:20 128:254 129:255 130:37 155:19 156:253 157:253 158:134 183:19 184:253 185:253 186:246 187:125 211:76 212:253 213:253 214:253 215:158 239:207 240:253 241:253 242:253 243:158 267:207 268:253 269:253 270:253 271:158 294:48 295:223 296:253 297:253 298:243 299:106 322:141 323:253 324:253 325:253 326:113 349:65 350:237 351:253 352:253 353:253 354:36 377:76 378:253 379:253 380:253 381:253 382:36 405:76 406:253 407:253 408:253 409:253 410:36 433:76 434:253 435:253 436:253 437:118 438:4 460:4 461:148 462:253 463:253 464:253 465:103 488:10 489:253 490:253 491:253 492:253 493:103 516:10 517:253 518:253 519:253 520:173 521:7 544:10 545:253 546:253 547:253 548:168 572:143 573:253 574:253 575:239 576:49 600:198 601:253 602:253 603:234 615:140 628:198 629:253 630:253 631:234 656:198 657:253 658:253 659:234 -0 235:40 236:37 238:7 239:77 240:137 241:136 242:136 243:136 244:136 245:40 246:6 261:16 262:135 263:254 264:233 266:152 267:215 268:96 269:140 270:155 271:118 272:230 273:254 274:158 275:68 288:19 289:164 290:254 291:114 294:235 295:140 301:99 302:230 303:254 304:186 305:14 315:70 316:226 317:242 318:121 322:104 323:195 324:38 330:33 331:179 332:253 333:140 342:41 343:241 344:198 345:43 359:24 360:209 361:223 370:164 371:250 372:66 388:136 389:253 398:254 399:158 416:136 417:215 426:255 427:76 442:5 443:127 444:246 445:133 454:254 455:122 469:5 470:150 471:247 472:91 473:9 482:254 483:165 495:13 496:79 497:194 498:216 499:84 510:111 511:251 512:87 519:16 520:25 521:40 522:107 523:186 524:213 525:117 526:25 538:14 539:185 540:235 541:142 542:23 546:91 547:157 548:231 549:207 550:126 551:49 569:143 570:195 571:255 572:254 573:254 574:244 575:157 576:76 599:39 600:39 601:39 602:33 -1 128:166 129:255 130:187 131:6 156:165 157:253 158:253 159:13 183:15 184:191 185:253 186:253 187:13 211:49 212:253 213:253 214:253 215:13 239:141 240:253 241:253 242:169 243:4 266:4 267:189 268:253 269:249 270:53 294:69 295:253 296:253 297:246 322:69 323:253 324:253 325:246 350:118 351:253 352:253 353:124 378:206 379:253 380:231 381:21 405:66 406:241 407:253 408:199 433:105 434:253 435:253 436:89 460:3 461:228 462:253 463:252 464:86 488:111 489:253 490:253 491:205 516:166 517:253 518:253 519:75 543:43 544:249 545:253 546:193 547:9 570:4 571:160 572:253 573:253 574:184 598:37 599:253 600:253 601:253 602:88 626:140 627:253 628:253 629:186 630:18 654:14 655:253 656:253 657:27 -1 128:117 129:128 155:2 156:199 157:127 183:81 184:254 185:87 211:116 212:254 213:48 239:175 240:234 241:18 266:5 267:230 268:168 294:80 295:255 296:142 322:80 323:255 324:142 350:80 351:251 352:57 378:129 379:239 406:164 407:209 433:28 434:245 435:159 461:64 462:254 463:144 489:84 490:254 491:80 517:143 518:254 519:30 544:3 545:225 546:200 572:48 573:254 574:174 600:48 601:254 602:174 628:93 629:254 630:129 656:53 657:234 658:41 -1 129:159 130:142 156:11 157:220 158:141 184:78 185:254 186:141 212:111 213:254 214:109 240:196 241:221 242:15 267:26 268:221 269:159 295:63 296:254 297:159 323:178 324:254 325:93 350:7 351:191 352:254 353:97 378:42 379:255 380:254 381:41 406:42 407:254 408:195 409:10 434:141 435:255 436:78 461:11 462:202 463:254 464:59 489:86 490:254 491:254 492:59 517:142 518:254 519:248 520:52 545:142 546:254 547:195 573:142 574:254 575:164 601:142 602:254 603:77 629:142 630:254 631:131 657:77 658:172 659:5 -0 124:66 125:254 126:254 127:58 128:60 129:59 130:59 131:50 151:73 152:233 153:253 154:253 155:148 156:254 157:253 158:253 159:232 160:73 179:156 180:253 181:253 182:253 183:117 184:255 185:253 186:253 187:253 188:223 189:176 190:162 205:37 206:116 207:246 208:253 209:180 210:18 211:4 212:18 213:109 214:241 215:253 216:253 217:253 218:236 219:28 233:235 234:253 235:253 236:245 237:107 242:109 243:170 244:253 245:253 246:253 247:174 261:235 262:253 263:253 264:233 271:15 272:156 273:253 274:253 275:223 276:72 287:10 288:156 289:250 290:253 291:253 292:67 300:99 301:253 302:253 303:253 304:127 305:5 315:118 316:253 317:253 318:253 319:204 320:26 328:68 329:223 330:253 331:253 332:253 333:57 342:32 343:191 344:253 345:253 346:253 347:97 357:156 358:253 359:253 360:253 361:57 370:59 371:253 372:253 373:253 374:253 375:97 385:36 386:224 387:253 388:253 389:57 398:60 399:254 400:255 401:254 402:156 413:37 414:226 415:254 416:254 417:58 426:59 427:253 428:253 429:253 430:154 441:156 442:253 443:253 444:253 445:57 454:59 455:253 456:253 457:253 458:154 469:156 470:253 471:253 472:253 473:57 482:59 483:253 484:253 485:253 486:246 487:90 496:16 497:171 498:253 499:253 500:231 501:49 510:59 511:253 512:253 513:253 514:253 515:156 516:91 524:99 525:253 526:253 527:222 528:71 538:59 539:253 540:253 541:253 542:253 543:253 544:245 545:109 551:145 552:194 553:253 554:253 555:174 566:9 567:38 568:174 569:251 570:253 571:253 572:253 573:241 574:215 575:215 576:217 577:215 578:215 579:250 580:253 581:253 582:221 583:26 597:235 598:253 599:253 600:253 601:253 602:253 603:253 604:254 605:253 606:253 607:253 608:253 609:204 610:26 625:108 626:116 627:200 628:253 629:253 630:253 631:253 632:254 633:253 634:253 635:253 636:199 637:44 655:36 656:57 657:118 658:253 659:253 660:58 661:57 662:57 663:57 664:35 -1 129:101 130:222 131:84 157:225 158:252 159:84 184:89 185:246 186:208 187:19 212:128 213:252 214:195 239:79 240:253 241:252 242:195 267:141 268:255 269:253 270:133 294:26 295:240 296:253 297:252 298:55 322:60 323:252 324:253 325:154 326:12 349:7 350:178 351:252 352:253 353:27 377:57 378:252 379:252 380:253 381:27 405:57 406:253 407:253 408:204 409:15 433:104 434:252 435:252 436:94 460:19 461:209 462:252 463:252 488:101 489:252 490:252 491:157 516:225 517:252 518:252 519:112 544:226 545:253 546:240 547:63 572:225 573:252 574:223 600:225 601:252 602:223 628:225 629:252 630:242 631:75 656:146 657:252 658:236 659:50 -0 124:41 125:254 126:254 127:157 128:34 129:34 130:218 131:255 132:206 133:34 134:18 151:53 152:238 153:252 154:252 155:252 156:252 157:252 158:252 159:252 160:252 161:252 162:162 163:26 178:66 179:220 180:252 181:252 182:252 183:209 184:153 185:223 186:252 187:252 188:252 189:252 190:252 191:98 206:166 207:252 208:252 209:252 210:252 211:141 213:85 214:230 215:252 216:252 217:252 218:252 219:98 234:166 235:252 236:252 237:252 238:252 239:141 242:73 243:102 244:252 245:252 246:252 247:98 262:166 263:252 264:252 265:252 266:191 267:30 271:5 272:97 273:252 274:252 275:220 276:51 289:123 290:245 291:252 292:252 293:202 294:14 300:56 301:252 302:252 303:252 304:65 316:18 317:154 318:252 319:252 320:241 328:56 329:252 330:252 331:252 332:65 343:21 344:146 345:252 346:252 347:252 348:241 356:56 357:252 358:252 359:252 360:65 371:67 372:252 373:252 374:252 375:252 376:241 384:56 385:252 386:252 387:252 388:65 399:67 400:252 401:252 402:252 403:252 404:116 412:56 413:252 414:252 415:252 416:65 427:67 428:252 429:252 430:252 431:252 432:20 440:56 441:252 442:252 443:252 444:65 455:67 456:252 457:252 458:252 459:87 460:4 468:56 469:252 470:252 471:124 472:11 483:67 484:252 485:252 486:252 487:54 494:19 495:236 496:245 497:252 498:252 499:98 511:67 512:252 513:252 514:252 515:97 516:5 521:39 522:219 523:252 524:252 525:252 526:252 527:98 539:67 540:252 541:252 542:252 543:252 544:102 545:89 546:89 547:89 548:89 549:203 550:252 551:252 552:252 553:252 554:209 555:64 567:67 568:252 569:252 570:252 571:252 572:252 573:252 574:252 575:252 576:252 577:252 578:252 579:252 580:226 581:130 582:68 595:67 596:252 597:252 598:252 599:252 600:252 601:252 602:252 603:252 604:252 605:252 606:252 607:239 608:77 623:17 624:65 625:163 626:252 627:252 628:252 629:252 630:252 631:252 632:252 633:252 634:96 635:59 653:17 654:176 655:252 656:252 657:252 658:252 659:155 660:32 661:32 662:6 -0 96:56 97:247 98:121 124:24 125:242 126:245 127:122 153:231 154:253 155:253 156:104 157:12 181:90 182:253 183:253 184:254 185:221 186:120 187:120 188:85 206:67 207:75 208:36 209:11 210:56 211:222 212:254 213:253 214:253 215:253 216:245 217:207 218:36 233:86 234:245 235:249 236:105 239:44 240:224 241:230 242:253 243:253 244:253 245:253 246:214 247:10 260:8 261:191 262:253 263:143 269:29 270:119 271:119 272:158 273:253 274:253 275:94 288:15 289:253 290:226 291:48 300:4 301:183 302:253 303:248 304:56 316:42 317:253 318:178 329:179 330:253 331:184 332:14 344:164 345:253 346:178 357:179 358:253 359:163 371:61 372:254 373:254 374:179 384:76 385:254 386:254 387:164 399:60 400:253 401:253 402:178 411:29 412:206 413:253 414:253 415:40 427:60 428:253 429:253 430:178 439:120 440:253 441:253 442:245 443:13 455:60 456:253 457:253 458:178 467:120 468:253 469:239 470:63 483:60 484:253 485:253 486:178 494:14 495:238 496:253 497:179 511:18 512:190 513:253 514:231 515:70 521:43 522:184 523:253 524:253 525:74 540:86 541:253 542:253 543:239 544:134 545:8 548:56 549:163 550:253 551:253 552:213 553:35 568:16 569:253 570:253 571:253 572:253 573:240 574:239 575:239 576:247 577:253 578:253 579:210 580:27 596:4 597:59 598:204 599:253 600:253 601:253 602:253 603:253 604:254 605:253 606:250 607:110 626:31 627:122 628:253 629:253 630:253 631:253 632:255 633:217 634:98 -0 125:19 126:164 127:253 128:255 129:253 130:118 131:59 132:36 153:78 154:251 155:251 156:253 157:251 158:251 159:251 160:199 161:45 180:14 181:198 182:251 183:251 184:253 185:251 186:251 187:251 188:251 189:204 190:26 208:5 209:117 210:251 211:251 212:243 213:212 214:239 215:251 216:251 217:251 218:218 236:95 237:251 238:251 239:251 240:120 242:175 243:251 244:251 245:251 246:231 263:97 264:237 265:251 266:251 267:251 270:67 271:240 272:251 273:251 274:243 275:108 290:8 291:163 292:251 293:251 294:240 295:81 299:68 300:251 301:251 302:251 303:179 304:9 317:13 318:145 319:251 320:251 321:226 322:80 327:39 328:251 329:251 330:251 331:251 332:115 345:144 346:251 347:251 348:251 349:173 355:18 356:167 357:251 358:251 359:251 360:115 373:233 374:251 375:251 376:251 377:173 384:98 385:251 386:251 387:251 388:115 400:176 401:253 402:253 403:216 404:179 412:99 413:253 414:253 415:253 416:116 427:55 428:210 429:251 430:251 431:96 440:98 441:251 442:251 443:214 444:62 455:117 456:251 457:251 458:251 459:96 467:28 468:204 469:251 470:237 471:53 482:55 483:241 484:251 485:251 486:160 487:7 494:28 495:222 496:251 497:251 498:231 510:59 511:251 512:251 513:251 514:153 520:23 521:98 522:204 523:251 524:251 525:251 526:156 538:59 539:251 540:251 541:251 542:153 546:85 547:155 548:179 549:251 550:251 551:251 552:251 553:154 554:15 566:59 567:251 568:251 569:251 570:236 571:214 572:214 573:214 574:234 575:251 576:253 577:251 578:251 579:248 580:156 581:15 594:41 595:209 596:251 597:251 598:251 599:251 600:251 601:251 602:251 603:251 604:253 605:251 606:196 607:146 623:54 624:115 625:241 626:251 627:251 628:251 629:251 630:251 631:251 632:253 633:187 634:35 653:83 654:251 655:251 656:251 657:251 658:251 659:101 660:57 661:31 -1 129:232 130:255 131:107 156:58 157:244 158:253 159:106 184:95 185:253 186:253 187:106 212:95 213:253 214:253 215:106 240:95 241:253 242:249 243:69 268:144 269:253 270:192 295:97 296:233 297:253 298:66 323:195 324:253 325:253 326:5 350:38 351:232 352:253 353:182 354:2 377:10 378:160 379:253 380:231 381:53 405:42 406:253 407:253 408:158 433:141 434:253 435:253 436:115 460:75 461:245 462:253 463:183 464:4 487:1 488:147 489:253 490:251 491:58 515:20 516:253 517:253 518:180 543:202 544:253 545:226 546:27 571:243 572:253 573:212 598:85 599:251 600:253 601:173 626:209 627:253 628:244 629:57 654:169 655:253 656:174 -1 127:63 128:128 129:2 155:63 156:254 157:123 183:63 184:254 185:179 211:63 212:254 213:179 239:63 240:254 241:179 267:142 268:254 269:179 295:187 296:254 297:158 323:187 324:254 325:55 350:68 351:235 352:254 353:55 378:181 379:254 380:254 381:55 406:181 407:254 408:202 409:14 434:181 435:254 436:186 462:181 463:254 464:146 490:181 491:254 492:62 518:181 519:254 520:62 546:181 547:254 548:62 574:181 575:255 576:62 602:181 603:254 604:241 605:52 630:181 631:254 632:222 633:30 658:181 659:224 660:34 -1 130:131 131:255 132:184 133:15 157:99 158:247 159:253 160:182 161:15 185:124 186:253 187:253 188:253 189:38 212:9 213:171 214:253 215:253 216:140 217:1 240:47 241:253 242:253 243:251 244:117 267:43 268:219 269:253 270:253 271:153 295:78 296:253 297:253 298:253 299:84 323:97 324:253 325:253 326:244 327:74 350:69 351:243 352:253 353:253 354:183 377:10 378:168 379:253 380:253 381:215 382:34 405:31 406:253 407:253 408:253 409:129 433:107 434:253 435:253 436:242 437:67 460:24 461:204 462:253 463:253 464:187 488:95 489:253 490:253 491:201 492:25 516:239 517:253 518:253 519:176 543:119 544:251 545:253 546:253 547:138 570:30 571:212 572:253 573:252 574:165 575:8 598:193 599:253 600:253 601:222 626:193 627:253 628:253 629:189 654:193 655:253 656:201 657:27 -0 125:57 126:255 127:253 128:198 129:85 153:168 154:253 155:251 156:253 157:251 158:169 159:56 180:86 181:253 182:254 183:253 184:254 185:253 186:254 187:253 188:57 208:197 209:251 210:253 211:251 212:253 213:251 214:253 215:251 216:225 217:56 235:169 236:255 237:253 238:226 239:56 241:114 242:254 243:253 244:254 245:84 262:57 263:224 264:253 265:251 266:56 270:139 271:251 272:253 273:83 290:141 291:253 292:255 293:84 298:57 299:225 300:254 301:196 318:253 319:251 320:253 321:83 327:168 328:253 329:83 345:169 346:254 347:253 348:169 355:169 356:254 357:253 358:169 373:168 374:253 375:251 376:56 383:168 384:253 385:251 386:56 401:169 402:254 403:84 412:254 413:253 429:168 430:253 431:83 440:253 441:251 456:29 457:197 458:254 459:84 467:169 468:254 469:196 484:85 485:251 486:253 487:83 494:57 495:224 496:253 497:83 512:57 513:225 514:254 515:139 521:57 522:141 523:253 524:254 525:84 541:168 542:253 543:251 544:169 545:56 547:114 548:169 549:224 550:253 551:251 552:253 553:83 569:169 570:254 571:253 572:254 573:253 574:254 575:253 576:254 577:253 578:254 579:253 580:226 581:56 597:56 598:253 599:251 600:253 601:251 602:253 603:251 604:253 605:251 606:253 607:251 608:56 626:169 627:225 628:254 629:253 630:254 631:253 632:254 633:253 634:226 635:56 655:56 656:253 657:251 658:253 659:251 660:84 661:83 662:56 -0 127:12 128:105 129:224 130:255 131:247 132:22 155:131 156:254 157:254 158:243 159:252 160:76 182:131 183:225 184:254 185:224 186:48 187:136 208:13 209:109 210:252 211:254 212:254 213:254 214:197 215:76 235:9 236:181 237:254 238:254 239:240 240:229 241:237 242:254 243:252 244:152 245:21 262:9 263:143 264:254 265:254 266:226 267:36 269:22 270:138 271:254 272:254 273:188 289:13 290:181 291:254 292:254 293:250 294:64 298:2 299:53 300:236 301:252 302:131 317:102 318:254 319:254 320:254 321:111 328:56 329:243 330:251 331:42 344:30 345:186 346:254 347:254 348:206 349:29 357:199 358:254 359:91 372:92 373:254 374:254 375:237 376:13 385:134 386:254 387:91 400:133 401:254 402:254 403:126 413:134 414:250 415:17 428:187 429:254 430:237 431:23 441:200 442:183 456:187 457:254 458:213 467:2 468:134 469:252 470:101 484:183 485:254 486:133 495:14 496:254 497:234 498:34 512:92 513:254 514:161 522:84 523:204 524:254 525:56 540:92 541:254 542:229 549:85 550:252 551:252 552:188 553:11 568:56 569:252 570:229 575:3 576:53 577:235 578:253 579:166 597:224 598:245 599:130 600:68 601:68 602:134 603:214 604:254 605:254 606:159 625:141 626:254 627:254 628:254 629:254 630:254 631:254 632:233 633:95 634:3 653:14 654:152 655:254 656:254 657:254 658:186 659:157 660:53 -1 130:226 131:247 132:55 157:99 158:248 159:254 160:230 161:30 185:125 186:254 187:254 188:254 189:38 213:125 214:254 215:254 216:212 217:24 240:18 241:223 242:254 243:252 244:118 268:24 269:254 270:254 271:239 295:27 296:195 297:254 298:254 299:93 323:78 324:254 325:254 326:246 327:74 351:158 352:254 353:254 354:185 378:41 379:239 380:254 381:254 382:43 405:22 406:218 407:254 408:254 409:167 410:9 433:32 434:254 435:254 436:254 437:130 460:24 461:187 462:254 463:254 464:234 465:16 488:189 489:254 490:254 491:254 492:128 515:64 516:247 517:254 518:255 519:219 520:42 543:139 544:254 545:254 546:222 547:40 570:30 571:213 572:254 573:235 574:45 598:194 599:254 600:254 601:223 626:194 627:254 628:254 629:190 654:194 655:254 656:202 657:27 -1 130:166 131:253 132:124 133:53 158:140 159:251 160:251 161:180 185:125 186:246 187:251 188:251 189:51 212:32 213:190 214:251 215:251 216:251 217:103 240:21 241:174 242:251 243:251 244:251 268:73 269:176 270:253 271:253 272:201 296:149 297:251 298:251 299:251 300:71 323:27 324:228 325:251 326:251 327:157 328:10 351:180 352:253 353:251 354:251 355:142 377:27 378:180 379:231 380:253 381:251 382:96 383:41 405:89 406:253 407:253 408:255 409:211 410:25 433:217 434:251 435:251 436:253 437:107 460:21 461:221 462:251 463:251 464:242 465:92 487:32 488:190 489:251 490:251 491:251 492:103 515:202 516:251 517:251 518:251 519:122 542:53 543:255 544:253 545:253 546:221 547:51 570:180 571:253 572:251 573:251 574:142 598:180 599:253 600:251 601:251 602:142 626:180 627:253 628:251 629:157 630:82 654:180 655:253 656:147 657:10 -1 129:17 130:206 131:229 132:44 157:2 158:125 159:254 160:123 185:95 186:254 187:254 188:123 212:78 213:240 214:254 215:254 216:123 240:100 241:254 242:254 243:254 244:123 267:2 268:129 269:254 270:254 271:220 272:20 295:9 296:254 297:254 298:254 299:123 322:22 323:179 324:254 325:254 326:254 327:49 350:83 351:254 352:254 353:254 354:183 355:19 378:136 379:254 380:254 381:254 382:139 404:3 405:111 406:252 407:254 408:254 409:232 410:45 432:67 433:254 434:254 435:254 436:216 437:40 459:14 460:192 461:254 462:254 463:254 464:140 486:23 487:192 488:254 489:254 490:254 491:246 514:77 515:254 516:254 517:255 518:241 519:100 541:65 542:235 543:254 544:254 545:254 546:172 568:30 569:238 570:254 571:254 572:254 573:219 574:26 596:34 597:254 598:254 599:254 600:216 601:41 624:34 625:254 626:254 627:254 628:188 652:12 653:170 654:254 655:254 656:82 -1 130:218 131:253 132:124 157:84 158:236 159:251 160:251 184:63 185:236 186:251 187:251 188:122 212:73 213:251 214:251 215:251 216:173 240:202 241:251 242:251 243:251 244:71 267:53 268:255 269:253 270:253 271:253 272:72 295:180 296:253 297:251 298:251 299:188 300:30 323:180 324:253 325:251 326:251 327:142 350:47 351:211 352:253 353:251 354:235 355:82 377:27 378:211 379:251 380:253 381:251 382:215 405:89 406:253 407:253 408:255 409:253 410:164 433:217 434:251 435:251 436:253 437:168 438:15 460:21 461:221 462:251 463:251 464:253 465:107 487:32 488:190 489:251 490:251 491:251 492:221 493:61 515:73 516:251 517:251 518:251 519:251 520:180 543:255 544:253 545:253 546:253 547:201 570:105 571:253 572:251 573:251 574:251 575:71 598:180 599:253 600:251 601:246 602:137 603:10 626:180 627:253 628:251 629:215 654:180 655:253 656:251 657:86 -1 124:102 125:180 126:1 152:140 153:254 154:130 180:140 181:254 182:204 208:140 209:254 210:204 236:72 237:254 238:204 264:25 265:231 266:250 267:135 292:11 293:211 294:254 295:222 321:101 322:254 323:250 324:15 349:96 350:254 351:254 352:95 377:2 378:251 379:254 380:95 405:2 406:251 407:254 408:95 433:96 434:254 435:254 436:95 461:53 462:253 463:254 464:139 490:250 491:254 492:235 493:27 518:201 519:254 520:254 521:128 546:80 547:254 548:254 549:139 574:65 575:254 576:254 577:139 602:150 603:254 604:254 605:139 630:229 631:254 632:254 633:43 658:52 659:196 660:168 661:9 -0 128:87 129:208 130:249 155:27 156:212 157:254 158:195 182:118 183:225 184:254 185:254 186:232 187:147 188:46 209:115 210:248 211:254 212:254 213:254 214:254 215:254 216:230 217:148 218:12 236:18 237:250 238:254 239:245 240:226 241:254 242:254 243:254 244:254 245:254 246:148 263:92 264:205 265:254 266:250 267:101 268:20 269:194 270:254 271:254 272:254 273:254 274:229 275:53 291:152 292:254 293:254 294:94 297:14 298:124 299:187 300:254 301:254 302:254 303:213 318:95 319:252 320:254 321:206 322:15 327:3 328:6 329:51 330:231 331:254 332:94 345:50 346:246 347:254 348:254 349:20 358:200 359:254 360:96 372:21 373:184 374:254 375:254 376:147 377:2 386:200 387:254 388:96 400:177 401:254 402:254 403:218 404:33 413:16 414:211 415:254 416:96 427:11 428:219 429:254 430:251 431:92 441:84 442:254 443:232 444:44 455:101 456:254 457:254 458:141 469:162 470:254 471:231 472:42 483:235 484:254 485:227 486:42 496:51 497:238 498:254 499:213 511:235 512:254 513:199 524:160 525:254 526:229 527:52 539:235 540:254 541:199 549:10 550:84 551:150 552:253 553:254 554:147 567:235 568:254 569:213 570:20 575:17 576:63 577:158 578:254 579:254 580:254 581:155 582:12 595:122 596:248 597:254 598:204 599:98 600:42 601:177 602:180 603:200 604:254 605:254 606:253 607:213 608:82 609:10 624:203 625:254 626:254 627:254 628:254 629:254 630:254 631:254 632:251 633:219 634:94 652:35 653:221 654:254 655:254 656:254 657:254 658:254 659:217 660:95 -1 126:134 127:230 154:133 155:231 156:10 182:133 183:253 184:96 210:133 211:253 212:96 238:133 239:253 240:183 266:133 267:253 268:217 294:133 295:253 296:217 322:133 323:253 324:217 350:133 351:253 352:217 378:133 379:253 380:217 406:134 407:254 408:218 434:133 435:253 436:159 462:133 463:253 464:199 490:156 491:253 492:96 518:254 519:247 520:73 546:254 547:248 548:74 573:99 574:254 575:245 576:64 600:89 601:230 602:254 603:125 627:140 628:251 629:253 630:243 631:10 655:114 656:242 657:195 658:69 -1 125:29 126:85 127:255 128:139 153:197 154:251 155:253 156:251 181:254 182:253 183:254 184:253 209:253 210:251 211:253 212:251 237:254 238:253 239:254 240:253 265:253 266:251 267:253 268:138 293:254 294:253 295:254 296:196 321:253 322:251 323:253 324:196 349:254 350:253 351:254 352:84 377:253 378:251 379:253 380:196 405:254 406:253 407:254 408:253 433:253 434:251 435:253 436:251 461:254 462:253 463:254 464:253 489:253 490:251 491:253 492:251 517:254 518:253 519:254 520:253 545:253 546:251 547:253 548:251 573:254 574:253 575:254 576:253 601:253 602:251 603:253 604:251 629:57 630:225 631:254 632:253 658:56 659:253 660:251 -1 125:149 126:255 127:254 128:58 153:215 154:253 155:183 156:2 180:41 181:232 182:253 183:181 208:92 209:253 210:253 211:181 236:92 237:253 238:253 239:181 264:92 265:253 266:253 267:181 292:92 293:253 294:253 295:181 320:92 321:253 322:253 323:181 348:92 349:253 350:253 351:181 376:92 377:253 378:253 379:181 404:92 405:253 406:253 407:181 432:92 433:253 434:253 435:181 460:92 461:253 462:253 463:181 488:31 489:228 490:253 491:181 517:198 518:253 519:228 520:54 545:33 546:226 547:253 548:195 549:7 574:199 575:253 576:253 577:75 602:34 603:218 604:253 605:228 606:117 607:14 608:12 631:33 632:219 633:253 634:253 635:253 636:211 660:32 661:123 662:149 663:230 664:41 -1 130:79 131:203 132:141 157:51 158:240 159:240 160:140 185:88 186:252 187:252 188:140 213:197 214:252 215:252 216:140 241:197 242:252 243:252 244:140 268:147 269:253 270:253 271:253 295:38 296:234 297:252 298:242 299:89 323:113 324:252 325:252 326:223 350:16 351:207 352:252 353:252 354:129 377:16 378:203 379:253 380:252 381:220 382:37 405:29 406:253 407:255 408:253 409:56 432:19 433:181 434:252 435:253 436:176 437:6 460:166 461:252 462:252 463:228 464:52 487:10 488:203 489:252 490:252 491:126 514:63 515:178 516:252 517:252 518:173 542:114 543:253 544:253 545:225 570:238 571:252 572:252 573:99 596:7 597:135 598:253 599:252 600:176 601:19 624:29 625:252 626:253 627:252 628:55 652:13 653:189 654:253 655:204 656:25 -1 126:94 127:254 128:75 154:166 155:253 156:231 182:208 183:253 184:147 210:208 211:253 212:116 238:208 239:253 240:168 266:146 267:254 268:222 294:166 295:253 296:116 322:208 323:253 324:116 350:166 351:253 352:158 378:145 379:253 380:231 406:209 407:254 408:169 434:187 435:253 436:168 462:93 463:253 464:116 490:93 491:253 492:116 518:93 519:253 520:116 546:94 547:254 548:179 549:11 574:93 575:253 576:246 577:101 602:145 603:253 604:255 605:92 630:93 631:253 632:246 633:59 658:93 659:253 660:74 -0 127:46 128:105 129:254 130:254 131:224 132:59 133:59 134:9 155:196 156:254 157:253 158:253 159:253 160:253 161:253 162:128 182:96 183:235 184:254 185:253 186:253 187:253 188:253 189:253 190:247 191:122 208:4 209:101 210:244 211:253 212:254 213:234 214:241 215:253 216:253 217:253 218:253 219:186 220:18 236:96 237:253 238:253 239:253 240:232 241:83 242:109 243:170 244:253 245:253 246:253 247:253 248:116 264:215 265:253 266:253 267:253 268:196 271:40 272:253 273:253 274:253 275:253 276:116 290:8 291:141 292:247 293:253 294:253 295:237 296:29 299:6 300:38 301:171 302:253 303:253 304:116 317:13 318:146 319:253 320:253 321:253 322:253 323:57 329:156 330:253 331:253 332:116 345:40 346:253 347:253 348:253 349:253 350:178 351:27 357:156 358:253 359:253 360:116 372:136 373:204 374:253 375:253 376:253 377:192 378:27 385:156 386:253 387:253 388:116 399:28 400:195 401:254 402:254 403:254 404:250 405:135 412:99 413:255 414:254 415:254 416:117 427:118 428:253 429:253 430:253 431:253 432:142 439:19 440:170 441:253 442:253 443:216 444:62 454:42 455:212 456:253 457:253 458:253 459:253 460:38 466:124 467:188 468:253 469:253 470:253 471:174 482:59 483:253 484:253 485:253 486:237 487:93 488:3 491:31 492:40 493:130 494:247 495:253 496:253 497:253 498:204 499:13 510:59 511:253 512:253 513:253 514:154 518:54 519:218 520:254 521:253 522:253 523:253 524:253 525:253 526:38 538:59 539:253 540:253 541:253 542:215 543:156 544:156 545:156 546:209 547:253 548:255 549:253 550:253 551:253 552:192 553:97 554:15 566:55 567:242 568:253 569:253 570:253 571:253 572:253 573:253 574:253 575:253 576:254 577:253 578:253 579:204 580:23 595:118 596:253 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:254 605:216 606:174 607:13 623:54 624:116 625:243 626:253 627:253 628:253 629:253 630:253 631:146 632:117 633:62 653:53 654:132 655:253 656:253 657:192 658:57 659:13 -1 125:42 126:232 127:254 128:58 153:86 154:253 155:253 156:58 181:86 182:253 183:253 184:58 209:206 210:253 211:253 212:58 237:215 238:253 239:253 240:58 265:215 266:253 267:253 268:58 293:215 294:253 295:253 296:58 321:215 322:253 323:253 324:58 349:215 350:253 351:253 352:58 377:215 378:253 379:253 380:58 405:215 406:253 407:253 408:58 433:188 434:253 435:253 436:85 461:86 462:253 463:253 464:200 465:12 489:29 490:223 491:253 492:253 493:151 518:209 519:253 520:253 521:194 546:128 547:253 548:253 549:200 550:8 574:32 575:213 576:253 577:253 578:152 579:6 603:32 604:221 605:253 606:253 607:153 608:5 632:90 633:215 634:253 635:253 636:151 661:59 662:253 663:253 664:84 -1 156:60 157:229 158:38 184:187 185:254 186:78 211:121 212:252 213:254 214:78 239:197 240:254 241:206 242:6 267:197 268:254 269:202 294:27 295:218 296:233 297:62 322:117 323:254 324:195 350:203 351:254 352:195 377:64 378:244 379:254 380:195 405:79 406:254 407:255 408:161 433:79 434:254 435:254 436:65 461:79 462:254 463:241 464:52 489:79 490:254 491:189 517:79 518:254 519:189 545:79 546:254 547:189 573:79 574:254 575:189 601:79 602:254 603:194 604:5 629:35 630:219 631:254 632:72 658:34 659:223 660:195 687:129 688:195 -1 101:11 102:150 103:72 129:37 130:251 131:71 157:63 158:251 159:71 185:217 186:251 187:71 213:217 214:251 215:71 240:145 241:253 242:253 243:72 267:42 268:206 269:251 270:251 271:71 295:99 296:251 297:251 298:251 299:71 323:253 324:251 325:251 326:251 327:71 350:130 351:253 352:251 353:251 354:251 355:71 377:110 378:253 379:255 380:253 381:253 382:253 383:72 405:109 406:251 407:253 408:251 409:251 410:188 411:30 433:109 434:251 435:253 436:251 437:246 438:123 460:16 461:170 462:251 463:253 464:251 465:215 488:37 489:251 490:251 491:253 492:251 493:86 516:218 517:253 518:253 519:255 520:253 521:35 543:84 544:236 545:251 546:251 547:253 548:168 549:15 571:144 572:251 573:251 574:251 575:190 576:15 599:144 600:251 601:251 602:251 603:180 626:53 627:221 628:251 629:251 630:251 631:180 -0 127:45 128:254 129:254 130:254 131:148 132:24 133:9 154:43 155:254 156:252 157:252 158:252 159:252 160:252 161:121 162:13 181:58 182:237 183:254 184:252 185:252 186:252 187:252 188:252 189:252 190:68 208:69 209:224 210:252 211:254 212:252 213:252 214:252 215:252 216:252 217:252 218:135 219:17 235:75 236:216 237:252 238:252 239:254 240:231 241:168 242:252 243:252 244:252 245:252 246:252 247:45 262:77 263:212 264:252 265:252 266:252 267:242 268:93 269:32 270:114 271:177 272:252 273:252 274:252 275:158 276:12 289:75 290:212 291:252 292:252 293:252 294:252 295:231 299:116 300:252 301:252 302:252 303:252 304:21 316:69 317:216 318:252 319:252 320:252 321:252 322:252 323:62 327:116 328:252 329:252 330:252 331:252 332:21 344:93 345:252 346:252 347:252 348:252 349:252 350:62 355:21 356:158 357:252 358:252 359:252 360:21 371:64 372:239 373:252 374:252 375:252 376:252 377:252 378:21 384:139 385:252 386:252 387:252 388:21 398:5 399:87 400:254 401:254 402:254 403:254 404:237 405:41 411:11 412:150 413:254 414:254 415:254 416:22 425:5 426:85 427:252 428:252 429:252 430:252 431:222 432:55 439:116 440:252 441:252 442:252 443:214 444:18 453:24 454:252 455:252 456:252 457:252 458:252 459:91 466:26 467:153 468:252 469:252 470:252 471:45 481:24 482:252 483:252 484:252 485:252 486:252 487:91 492:18 493:93 494:151 495:252 496:252 497:252 498:184 499:28 509:24 510:252 511:252 512:252 513:252 514:252 515:164 516:116 517:116 518:116 519:117 520:141 521:252 522:252 523:252 524:252 525:252 526:68 537:24 538:252 539:252 540:252 541:252 542:252 543:252 544:252 545:252 546:252 547:254 548:252 549:252 550:252 551:252 552:252 553:163 554:31 565:9 566:121 567:252 568:252 569:252 570:252 571:252 572:252 573:252 574:252 575:254 576:252 577:252 578:252 579:178 580:91 581:33 594:13 595:119 596:252 597:252 598:252 599:252 600:252 601:252 602:252 603:254 604:252 605:252 606:184 607:37 623:13 624:121 625:252 626:252 627:252 628:252 629:252 630:252 631:254 632:214 633:45 634:28 652:8 653:21 654:21 655:169 656:252 657:252 658:41 659:22 660:18 -0 125:218 126:253 127:253 128:255 129:149 130:62 151:42 152:144 153:236 154:251 155:251 156:253 157:251 158:236 159:144 160:144 179:99 180:251 181:251 182:251 183:225 184:253 185:251 186:251 187:251 188:251 189:166 190:16 206:79 207:253 208:251 209:251 210:204 211:41 212:143 213:205 214:251 215:251 216:251 217:253 218:169 219:15 233:79 234:231 235:253 236:251 237:225 238:41 241:41 242:226 243:251 244:251 245:253 246:251 247:164 260:37 261:253 262:253 263:255 264:253 265:35 271:79 272:232 273:255 274:253 275:227 276:42 288:140 289:251 290:251 291:253 292:168 293:15 300:77 301:253 302:251 303:251 304:142 315:21 316:221 317:251 318:251 319:164 320:15 329:227 330:251 331:251 332:236 333:61 342:32 343:190 344:251 345:251 346:251 357:73 358:251 359:251 360:251 361:71 370:73 371:251 372:251 373:251 374:251 385:73 386:251 387:251 388:251 389:71 398:73 399:253 400:253 401:253 402:201 413:73 414:253 415:253 416:253 417:72 426:176 427:251 428:251 429:251 430:71 441:73 442:251 443:251 444:251 445:71 454:253 455:251 456:251 457:157 458:10 469:73 470:251 471:251 472:251 473:71 482:253 483:251 484:251 485:142 497:150 498:251 499:251 500:204 501:41 510:124 511:251 512:251 513:220 514:180 524:130 525:253 526:251 527:225 528:41 538:73 539:253 540:253 541:253 542:253 543:73 544:73 545:10 549:42 550:73 551:150 552:253 553:255 554:253 555:216 566:31 567:189 568:251 569:251 570:251 571:253 572:251 573:159 574:144 575:144 576:145 577:206 578:251 579:251 580:251 581:253 582:168 583:92 595:20 596:195 597:251 598:251 599:253 600:251 601:251 602:251 603:251 604:253 605:251 606:251 607:251 608:225 609:164 610:15 624:21 625:142 626:220 627:253 628:251 629:251 630:251 631:251 632:253 633:251 634:251 635:204 636:41 654:51 655:72 656:174 657:251 658:251 659:251 660:253 661:147 662:71 663:41 -0 127:60 128:96 129:96 130:48 153:16 154:171 155:228 156:253 157:251 158:220 159:51 160:32 181:127 182:251 183:251 184:253 185:251 186:251 187:251 188:251 189:80 207:24 208:182 209:236 210:251 211:211 212:189 213:236 214:251 215:251 216:251 217:242 218:193 234:100 235:194 236:251 237:251 238:211 239:35 241:71 242:173 243:251 244:251 245:253 246:240 247:158 248:19 261:64 262:253 263:255 264:253 265:205 266:19 271:40 272:218 273:255 274:253 275:253 276:91 288:16 289:186 290:251 291:253 292:247 293:110 300:39 301:233 302:251 303:251 304:188 315:16 316:189 317:251 318:251 319:205 320:110 329:48 330:220 331:251 332:220 333:48 343:72 344:251 345:251 346:251 347:158 358:51 359:251 360:251 361:232 371:190 372:251 373:251 374:251 375:59 386:32 387:251 388:251 389:251 398:96 399:253 400:253 401:253 402:95 414:32 415:253 416:253 417:193 426:214 427:251 428:251 429:204 430:23 442:52 443:251 444:251 445:94 454:253 455:251 456:251 457:109 469:48 470:221 471:251 472:219 473:47 482:253 483:251 484:251 485:70 497:234 498:251 499:251 500:188 510:253 511:251 512:251 513:188 523:40 524:158 525:253 526:251 527:172 528:70 539:191 540:253 541:253 542:253 543:96 544:24 549:12 550:174 551:253 552:253 553:255 554:221 567:71 568:251 569:251 570:251 571:253 572:205 573:190 574:190 575:190 576:191 577:197 578:251 579:251 580:231 581:221 582:93 595:16 596:126 597:236 598:251 599:253 600:251 601:251 602:251 603:251 604:253 605:251 606:251 607:140 608:47 625:67 626:188 627:189 628:188 629:188 630:188 631:188 632:189 633:188 634:109 635:4 -0 126:32 127:202 128:255 129:253 130:253 131:175 132:21 152:84 153:144 154:190 155:251 156:253 157:251 158:251 159:251 160:174 176:6 177:37 178:166 179:218 180:236 181:251 182:251 183:251 184:253 185:251 186:251 187:251 188:251 189:156 204:115 205:251 206:251 207:253 208:251 209:251 210:251 211:251 212:253 213:251 214:251 215:251 216:251 217:180 231:105 232:241 233:251 234:251 235:253 236:251 237:251 238:251 239:122 240:72 241:71 242:71 243:148 244:251 245:180 258:73 259:253 260:253 261:253 262:253 263:202 264:253 265:253 266:143 286:31 287:189 288:251 289:251 290:251 291:31 292:189 293:251 294:142 314:63 315:236 316:251 317:251 318:96 320:124 321:246 322:142 330:21 331:166 332:21 342:73 343:251 344:251 345:251 346:71 349:217 350:142 357:32 358:190 359:251 360:142 370:73 371:251 372:251 373:251 374:71 377:217 378:142 385:73 386:251 387:251 388:142 398:73 399:253 400:253 401:253 402:72 405:156 406:103 413:73 414:253 415:253 416:253 417:72 426:73 427:251 428:251 429:251 430:174 441:73 442:251 443:251 444:251 445:71 454:73 455:251 456:251 457:251 458:251 469:73 470:251 471:251 472:251 473:71 482:42 483:205 484:251 485:251 486:251 487:79 497:73 498:251 499:251 500:251 501:71 511:41 512:226 513:251 514:251 515:232 516:77 525:73 526:251 527:251 528:251 529:71 540:166 541:253 542:253 543:255 544:253 545:227 546:73 547:21 553:125 554:253 555:253 556:143 568:16 569:169 570:251 571:253 572:251 573:251 574:251 575:174 576:105 579:63 580:144 581:253 582:251 583:251 584:142 597:15 598:35 599:253 600:251 601:251 602:251 603:251 604:243 605:217 606:217 607:231 608:251 609:253 610:251 611:220 612:20 627:143 628:142 629:236 630:251 631:251 632:253 633:251 634:251 635:251 636:251 637:253 638:251 639:137 657:61 658:71 659:200 660:253 661:251 662:251 663:251 664:251 665:201 666:71 667:10 -1 130:218 131:170 132:108 157:32 158:227 159:252 160:232 185:129 186:252 187:252 188:252 212:1 213:253 214:252 215:252 216:168 240:144 241:253 242:252 243:236 244:62 268:144 269:253 270:252 271:215 296:144 297:253 298:252 299:112 323:21 324:206 325:253 326:252 327:71 351:99 352:253 353:255 354:119 378:63 379:242 380:252 381:253 382:35 406:94 407:252 408:252 409:154 410:10 433:145 434:237 435:252 436:252 461:255 462:253 463:253 464:108 487:11 488:155 489:253 490:252 491:179 492:15 514:11 515:150 516:252 517:253 518:200 519:20 542:73 543:252 544:252 545:253 546:97 569:47 570:233 571:253 572:253 596:1 597:149 598:252 599:252 600:252 624:1 625:252 626:252 627:246 628:132 652:1 653:169 654:252 655:132 -1 130:116 131:255 132:123 157:29 158:213 159:253 160:122 185:189 186:253 187:253 188:122 213:189 214:253 215:253 216:122 241:189 242:253 243:253 244:122 267:2 268:114 269:243 270:253 271:186 272:19 295:100 296:253 297:253 298:253 299:48 323:172 324:253 325:253 326:253 327:48 351:172 352:253 353:253 354:182 355:19 378:133 379:251 380:253 381:175 382:4 405:107 406:251 407:253 408:253 409:65 432:26 433:194 434:253 435:253 436:214 437:40 459:105 460:205 461:253 462:253 463:125 464:40 487:139 488:253 489:253 490:253 491:81 514:41 515:231 516:253 517:253 518:159 519:16 541:65 542:155 543:253 544:253 545:172 546:4 569:124 570:253 571:253 572:253 573:98 597:124 598:253 599:253 600:214 601:41 624:22 625:207 626:253 627:253 628:139 653:124 654:253 655:162 656:9 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_fpgrowth.txt b/image_content/config/spark/opt/spark/data/mllib/sample_fpgrowth.txt deleted file mode 100644 index c451583..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_fpgrowth.txt +++ /dev/null @@ -1,6 +0,0 @@ -r z h k p -z y x w v u t s -s x o n r -x z y m t s q e -z -x z y r q t p diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_isotonic_regression_libsvm_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_isotonic_regression_libsvm_data.txt deleted file mode 100644 index f39fe02..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_isotonic_regression_libsvm_data.txt +++ /dev/null @@ -1,100 +0,0 @@ -0.24579296 1:0.01 -0.28505864 1:0.02 -0.31208567 1:0.03 -0.35900051 1:0.04 -0.35747068 1:0.05 -0.16675166 1:0.06 -0.17491076 1:0.07 -0.04181540 1:0.08 -0.04793473 1:0.09 -0.03926568 1:0.10 -0.12952575 1:0.11 -0.00000000 1:0.12 -0.01376849 1:0.13 -0.13105558 1:0.14 -0.08873024 1:0.15 -0.12595614 1:0.16 -0.15247323 1:0.17 -0.25956145 1:0.18 -0.20040796 1:0.19 -0.19581846 1:0.20 -0.15757267 1:0.21 -0.13717491 1:0.22 -0.19020908 1:0.23 -0.19581846 1:0.24 -0.20091790 1:0.25 -0.16879143 1:0.26 -0.18510964 1:0.27 -0.20040796 1:0.28 -0.29576747 1:0.29 -0.43396226 1:0.30 -0.53391127 1:0.31 -0.52116267 1:0.32 -0.48546660 1:0.33 -0.49209587 1:0.34 -0.54156043 1:0.35 -0.59765426 1:0.36 -0.56144824 1:0.37 -0.58592555 1:0.38 -0.52983172 1:0.39 -0.50178480 1:0.40 -0.52626211 1:0.41 -0.58286588 1:0.42 -0.64660887 1:0.43 -0.68077511 1:0.44 -0.74298827 1:0.45 -0.64864865 1:0.46 -0.67261601 1:0.47 -0.65782764 1:0.48 -0.69811321 1:0.49 -0.63029067 1:0.50 -0.61601224 1:0.51 -0.63233044 1:0.52 -0.65323814 1:0.53 -0.65323814 1:0.54 -0.67363590 1:0.55 -0.67006629 1:0.56 -0.51555329 1:0.57 -0.50892402 1:0.58 -0.33299337 1:0.59 -0.36206017 1:0.60 -0.43090260 1:0.61 -0.45996940 1:0.62 -0.56348802 1:0.63 -0.54920959 1:0.64 -0.48393677 1:0.65 -0.48495665 1:0.66 -0.46965834 1:0.67 -0.45181030 1:0.68 -0.45843957 1:0.69 -0.47118817 1:0.70 -0.51555329 1:0.71 -0.58031617 1:0.72 -0.55481897 1:0.73 -0.56297807 1:0.74 -0.56603774 1:0.75 -0.57929628 1:0.76 -0.64762876 1:0.77 -0.66241713 1:0.78 -0.69301377 1:0.79 -0.65119837 1:0.80 -0.68332483 1:0.81 -0.66598674 1:0.82 -0.73890872 1:0.83 -0.73992861 1:0.84 -0.84242733 1:0.85 -0.91330954 1:0.86 -0.88016318 1:0.87 -0.90719021 1:0.88 -0.93115757 1:0.89 -0.93115757 1:0.90 -0.91942886 1:0.91 -0.92911780 1:0.92 -0.95665477 1:0.93 -0.95002550 1:0.94 -0.96940337 1:0.95 -1.00000000 1:0.96 -0.89801122 1:0.97 -0.90311066 1:0.98 -0.90362060 1:0.99 -0.83477817 1:1.0 \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_kmeans_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_kmeans_data.txt deleted file mode 100644 index 5001377..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_kmeans_data.txt +++ /dev/null @@ -1,6 +0,0 @@ -0 1:0.0 2:0.0 3:0.0 -1 1:0.1 2:0.1 3:0.1 -2 1:0.2 2:0.2 3:0.2 -3 1:9.0 2:9.0 3:9.0 -4 1:9.1 2:9.1 3:9.1 -5 1:9.2 2:9.2 3:9.2 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_lda_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_lda_data.txt deleted file mode 100644 index 2e76702..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_lda_data.txt +++ /dev/null @@ -1,12 +0,0 @@ -1 2 6 0 2 3 1 1 0 0 3 -1 3 0 1 3 0 0 2 0 0 1 -1 4 1 0 0 4 9 0 1 2 0 -2 1 0 3 0 0 5 0 2 3 9 -3 1 1 9 3 0 2 0 0 1 3 -4 2 0 3 4 5 1 1 1 4 0 -2 1 0 3 0 0 5 0 2 2 9 -1 1 1 9 2 1 2 0 0 1 3 -4 4 0 3 4 2 1 3 0 0 0 -2 8 2 0 3 0 2 0 2 7 2 -1 1 1 9 0 2 2 0 0 3 3 -4 1 0 0 4 5 1 3 0 1 0 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_lda_libsvm_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_lda_libsvm_data.txt deleted file mode 100644 index bf118d7..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_lda_libsvm_data.txt +++ /dev/null @@ -1,12 +0,0 @@ -0 1:1 2:2 3:6 4:0 5:2 6:3 7:1 8:1 9:0 10:0 11:3 -1 1:1 2:3 3:0 4:1 5:3 6:0 7:0 8:2 9:0 10:0 11:1 -2 1:1 2:4 3:1 4:0 5:0 6:4 7:9 8:0 9:1 10:2 11:0 -3 1:2 2:1 3:0 4:3 5:0 6:0 7:5 8:0 9:2 10:3 11:9 -4 1:3 2:1 3:1 4:9 5:3 6:0 7:2 8:0 9:0 10:1 11:3 -5 1:4 2:2 3:0 4:3 5:4 6:5 7:1 8:1 9:1 10:4 11:0 -6 1:2 2:1 3:0 4:3 5:0 6:0 7:5 8:0 9:2 10:2 11:9 -7 1:1 2:1 3:1 4:9 5:2 6:1 7:2 8:0 9:0 10:1 11:3 -8 1:4 2:4 3:0 4:3 5:4 6:2 7:1 8:3 9:0 10:0 11:0 -9 1:2 2:8 3:2 4:0 5:3 6:0 7:2 8:0 9:2 10:7 11:2 -10 1:1 2:1 3:1 4:9 5:0 6:2 7:2 8:0 9:0 10:3 11:3 -11 1:4 2:1 3:0 4:0 5:4 6:5 7:1 8:3 9:0 10:1 11:0 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_libsvm_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_libsvm_data.txt deleted file mode 100644 index 861c70c..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_libsvm_data.txt +++ /dev/null @@ -1,100 +0,0 @@ -0 128:51 129:159 130:253 131:159 132:50 155:48 156:238 157:252 158:252 159:252 160:237 182:54 183:227 184:253 185:252 186:239 187:233 188:252 189:57 190:6 208:10 209:60 210:224 211:252 212:253 213:252 214:202 215:84 216:252 217:253 218:122 236:163 237:252 238:252 239:252 240:253 241:252 242:252 243:96 244:189 245:253 246:167 263:51 264:238 265:253 266:253 267:190 268:114 269:253 270:228 271:47 272:79 273:255 274:168 290:48 291:238 292:252 293:252 294:179 295:12 296:75 297:121 298:21 301:253 302:243 303:50 317:38 318:165 319:253 320:233 321:208 322:84 329:253 330:252 331:165 344:7 345:178 346:252 347:240 348:71 349:19 350:28 357:253 358:252 359:195 372:57 373:252 374:252 375:63 385:253 386:252 387:195 400:198 401:253 402:190 413:255 414:253 415:196 427:76 428:246 429:252 430:112 441:253 442:252 443:148 455:85 456:252 457:230 458:25 467:7 468:135 469:253 470:186 471:12 483:85 484:252 485:223 494:7 495:131 496:252 497:225 498:71 511:85 512:252 513:145 521:48 522:165 523:252 524:173 539:86 540:253 541:225 548:114 549:238 550:253 551:162 567:85 568:252 569:249 570:146 571:48 572:29 573:85 574:178 575:225 576:253 577:223 578:167 579:56 595:85 596:252 597:252 598:252 599:229 600:215 601:252 602:252 603:252 604:196 605:130 623:28 624:199 625:252 626:252 627:253 628:252 629:252 630:233 631:145 652:25 653:128 654:252 655:253 656:252 657:141 658:37 -1 159:124 160:253 161:255 162:63 186:96 187:244 188:251 189:253 190:62 214:127 215:251 216:251 217:253 218:62 241:68 242:236 243:251 244:211 245:31 246:8 268:60 269:228 270:251 271:251 272:94 296:155 297:253 298:253 299:189 323:20 324:253 325:251 326:235 327:66 350:32 351:205 352:253 353:251 354:126 378:104 379:251 380:253 381:184 382:15 405:80 406:240 407:251 408:193 409:23 432:32 433:253 434:253 435:253 436:159 460:151 461:251 462:251 463:251 464:39 487:48 488:221 489:251 490:251 491:172 515:234 516:251 517:251 518:196 519:12 543:253 544:251 545:251 546:89 570:159 571:255 572:253 573:253 574:31 597:48 598:228 599:253 600:247 601:140 602:8 625:64 626:251 627:253 628:220 653:64 654:251 655:253 656:220 681:24 682:193 683:253 684:220 -1 125:145 126:255 127:211 128:31 152:32 153:237 154:253 155:252 156:71 180:11 181:175 182:253 183:252 184:71 209:144 210:253 211:252 212:71 236:16 237:191 238:253 239:252 240:71 264:26 265:221 266:253 267:252 268:124 269:31 293:125 294:253 295:252 296:252 297:108 322:253 323:252 324:252 325:108 350:255 351:253 352:253 353:108 378:253 379:252 380:252 381:108 406:253 407:252 408:252 409:108 434:253 435:252 436:252 437:108 462:255 463:253 464:253 465:170 490:253 491:252 492:252 493:252 494:42 518:149 519:252 520:252 521:252 522:144 546:109 547:252 548:252 549:252 550:144 575:218 576:253 577:253 578:255 579:35 603:175 604:252 605:252 606:253 607:35 631:73 632:252 633:252 634:253 635:35 659:31 660:211 661:252 662:253 663:35 -1 153:5 154:63 155:197 181:20 182:254 183:230 184:24 209:20 210:254 211:254 212:48 237:20 238:254 239:255 240:48 265:20 266:254 267:254 268:57 293:20 294:254 295:254 296:108 321:16 322:239 323:254 324:143 350:178 351:254 352:143 378:178 379:254 380:143 406:178 407:254 408:162 434:178 435:254 436:240 462:113 463:254 464:240 490:83 491:254 492:245 493:31 518:79 519:254 520:246 521:38 547:214 548:254 549:150 575:144 576:241 577:8 603:144 604:240 605:2 631:144 632:254 633:82 659:230 660:247 661:40 687:168 688:209 689:31 -1 152:1 153:168 154:242 155:28 180:10 181:228 182:254 183:100 209:190 210:254 211:122 237:83 238:254 239:162 265:29 266:254 267:248 268:25 293:29 294:255 295:254 296:103 321:29 322:254 323:254 324:109 349:29 350:254 351:254 352:109 377:29 378:254 379:254 380:109 405:29 406:255 407:254 408:109 433:29 434:254 435:254 436:109 461:29 462:254 463:254 464:63 489:29 490:254 491:254 492:28 517:29 518:254 519:254 520:28 545:29 546:254 547:254 548:35 573:29 574:254 575:254 576:109 601:6 602:212 603:254 604:109 630:203 631:254 632:178 658:155 659:254 660:190 686:32 687:199 688:104 -0 130:64 131:253 132:255 133:63 157:96 158:205 159:251 160:253 161:205 162:111 163:4 184:96 185:189 186:251 187:251 188:253 189:251 190:251 191:31 209:16 210:64 211:223 212:244 213:251 214:251 215:211 216:213 217:251 218:251 219:31 236:80 237:181 238:251 239:253 240:251 241:251 242:251 243:94 244:96 245:251 246:251 247:31 263:92 264:253 265:253 266:253 267:255 268:253 269:253 270:253 271:95 272:96 273:253 274:253 275:31 290:92 291:236 292:251 293:243 294:220 295:233 296:251 297:251 298:243 299:82 300:96 301:251 302:251 303:31 317:80 318:253 319:251 320:251 321:188 323:96 324:251 325:251 326:109 328:96 329:251 330:251 331:31 344:96 345:240 346:253 347:243 348:188 349:42 351:96 352:204 353:109 354:4 356:12 357:197 358:251 359:31 372:221 373:251 374:253 375:121 379:36 380:23 385:190 386:251 387:31 399:48 400:234 401:253 413:191 414:253 415:31 426:44 427:221 428:251 429:251 440:12 441:197 442:251 443:31 454:190 455:251 456:251 457:251 468:96 469:251 470:251 471:31 482:190 483:251 484:251 485:113 495:40 496:234 497:251 498:219 499:23 510:190 511:251 512:251 513:94 522:40 523:217 524:253 525:231 526:47 538:191 539:253 540:253 541:253 548:12 549:174 550:253 551:253 552:219 553:39 566:67 567:236 568:251 569:251 570:191 571:190 572:111 573:72 574:190 575:191 576:197 577:251 578:243 579:121 580:39 595:63 596:236 597:251 598:253 599:251 600:251 601:251 602:251 603:253 604:251 605:188 606:94 624:27 625:129 626:253 627:251 628:251 629:251 630:251 631:229 632:168 633:15 654:95 655:212 656:251 657:211 658:94 659:59 -1 159:121 160:254 161:136 186:13 187:230 188:253 189:248 190:99 213:4 214:118 215:253 216:253 217:225 218:42 241:61 242:253 243:253 244:253 245:74 268:32 269:206 270:253 271:253 272:186 273:9 296:211 297:253 298:253 299:239 300:69 324:254 325:253 326:253 327:133 351:142 352:255 353:253 354:186 355:8 378:149 379:229 380:254 381:207 382:21 405:54 406:229 407:253 408:254 409:105 433:152 434:254 435:254 436:213 437:26 460:112 461:251 462:253 463:253 464:26 487:29 488:212 489:253 490:250 491:149 514:36 515:214 516:253 517:253 518:137 542:75 543:253 544:253 545:253 546:59 570:93 571:253 572:253 573:189 574:17 598:224 599:253 600:253 601:84 625:43 626:235 627:253 628:126 629:1 653:99 654:248 655:253 656:119 682:225 683:235 684:49 -1 100:166 101:222 102:55 128:197 129:254 130:218 131:5 155:29 156:249 157:254 158:254 159:9 183:45 184:254 185:254 186:174 187:2 210:4 211:164 212:254 213:254 214:85 238:146 239:254 240:254 241:254 242:85 265:101 266:245 267:254 268:254 269:254 270:85 292:97 293:248 294:254 295:204 296:254 297:254 298:85 315:12 316:59 317:98 318:151 319:237 320:254 321:254 322:109 323:35 324:254 325:254 326:85 343:41 344:216 345:254 346:254 347:239 348:153 349:37 350:4 351:32 352:254 353:254 354:85 372:7 373:44 374:44 375:30 379:32 380:254 381:254 382:96 407:19 408:230 409:254 410:174 436:197 437:254 438:110 464:197 465:254 466:85 492:197 493:253 494:63 515:37 516:54 517:54 518:45 519:26 520:84 521:221 522:84 523:21 524:31 525:162 526:78 540:6 541:41 542:141 543:244 544:254 545:254 546:248 547:236 548:254 549:254 550:254 551:233 552:239 553:254 554:138 567:23 568:167 569:254 570:254 571:254 572:254 573:229 574:228 575:185 576:138 577:138 578:138 579:138 580:138 581:138 582:44 595:113 596:254 597:254 598:254 599:179 600:64 601:5 623:32 624:209 625:183 626:97 -0 155:53 156:255 157:253 158:253 159:253 160:124 183:180 184:253 185:251 186:251 187:251 188:251 189:145 190:62 209:32 210:217 211:241 212:253 213:251 214:251 215:251 216:251 217:253 218:107 237:37 238:251 239:251 240:253 241:251 242:251 243:251 244:251 245:253 246:107 265:166 266:251 267:251 268:253 269:251 270:96 271:148 272:251 273:253 274:107 291:73 292:253 293:253 294:253 295:253 296:130 299:110 300:253 301:255 302:108 319:73 320:251 321:251 322:251 323:251 327:109 328:251 329:253 330:107 347:202 348:251 349:251 350:251 351:225 354:6 355:129 356:251 357:253 358:107 375:150 376:251 377:251 378:251 379:71 382:115 383:251 384:251 385:253 386:107 403:253 404:251 405:251 406:173 407:20 410:217 411:251 412:251 413:253 414:107 430:182 431:255 432:253 433:216 438:218 439:253 440:253 441:182 457:63 458:221 459:253 460:251 461:215 465:84 466:236 467:251 468:251 469:77 485:109 486:251 487:253 488:251 489:215 492:11 493:160 494:251 495:251 496:96 513:109 514:251 515:253 516:251 517:137 520:150 521:251 522:251 523:251 524:71 541:109 542:251 543:253 544:251 545:35 547:130 548:253 549:251 550:251 551:173 552:20 569:110 570:253 571:255 572:253 573:98 574:150 575:253 576:255 577:253 578:164 597:109 598:251 599:253 600:251 601:251 602:251 603:251 604:253 605:251 606:35 625:93 626:241 627:253 628:251 629:251 630:251 631:251 632:216 633:112 634:5 654:103 655:253 656:251 657:251 658:251 659:251 683:124 684:251 685:225 686:71 687:71 -0 128:73 129:253 130:227 131:73 132:21 156:73 157:251 158:251 159:251 160:174 182:16 183:166 184:228 185:251 186:251 187:251 188:122 210:62 211:220 212:253 213:251 214:251 215:251 216:251 217:79 238:79 239:231 240:253 241:251 242:251 243:251 244:251 245:232 246:77 264:145 265:253 266:253 267:253 268:255 269:253 270:253 271:253 272:253 273:255 274:108 292:144 293:251 294:251 295:251 296:253 297:168 298:107 299:169 300:251 301:253 302:189 303:20 318:27 319:89 320:236 321:251 322:235 323:215 324:164 325:15 326:6 327:129 328:251 329:253 330:251 331:35 345:47 346:211 347:253 348:251 349:251 350:142 354:37 355:251 356:251 357:253 358:251 359:35 373:109 374:251 375:253 376:251 377:251 378:142 382:11 383:148 384:251 385:253 386:251 387:164 400:11 401:150 402:253 403:255 404:211 405:25 410:11 411:150 412:253 413:255 414:211 415:25 428:140 429:251 430:251 431:253 432:107 438:37 439:251 440:251 441:211 442:46 456:190 457:251 458:251 459:253 460:128 461:5 466:37 467:251 468:251 469:51 484:115 485:251 486:251 487:253 488:188 489:20 492:32 493:109 494:129 495:251 496:173 497:103 512:217 513:251 514:251 515:201 516:30 520:73 521:251 522:251 523:251 524:71 540:166 541:253 542:253 543:255 544:149 545:73 546:150 547:253 548:255 549:253 550:253 551:143 568:140 569:251 570:251 571:253 572:251 573:251 574:251 575:251 576:253 577:251 578:230 579:61 596:190 597:251 598:251 599:253 600:251 601:251 602:251 603:251 604:242 605:215 606:55 624:21 625:189 626:251 627:253 628:251 629:251 630:251 631:173 632:103 653:31 654:200 655:253 656:251 657:96 658:71 659:20 -1 155:178 156:255 157:105 182:6 183:188 184:253 185:216 186:14 210:14 211:202 212:253 213:253 214:23 238:12 239:199 240:253 241:128 242:6 266:42 267:253 268:253 269:158 294:42 295:253 296:253 297:158 322:155 323:253 324:253 325:158 350:160 351:253 352:253 353:147 378:160 379:253 380:253 381:41 405:17 406:225 407:253 408:235 409:31 433:24 434:253 435:253 436:176 461:24 462:253 463:253 464:176 489:24 490:253 491:253 492:176 517:24 518:253 519:253 520:176 545:24 546:253 547:253 548:162 573:46 574:253 575:253 576:59 601:142 602:253 603:253 604:59 629:142 630:253 631:253 632:59 657:142 658:253 659:202 660:8 685:87 686:253 687:139 -0 154:46 155:105 156:254 157:254 158:254 159:254 160:255 161:239 162:41 180:37 181:118 182:222 183:254 184:253 185:253 186:253 187:253 188:253 189:253 190:211 191:54 207:14 208:200 209:253 210:253 211:254 212:253 213:253 214:253 215:253 216:253 217:253 218:253 219:116 233:16 234:160 235:236 236:253 237:253 238:253 239:254 240:253 241:253 242:246 243:229 244:253 245:253 246:253 247:116 261:99 262:253 263:253 264:253 265:253 266:253 267:254 268:253 269:253 270:213 271:99 272:253 273:253 274:253 275:116 288:25 289:194 290:253 291:253 292:253 293:253 294:131 295:97 296:169 297:253 298:93 299:99 300:253 301:253 302:253 303:116 316:206 317:253 318:253 319:251 320:233 321:127 322:9 324:18 325:38 326:3 327:15 328:171 329:253 330:253 331:116 343:55 344:240 345:253 346:253 347:233 355:31 356:186 357:253 358:253 359:116 371:176 372:253 373:253 374:253 375:127 383:99 384:253 385:253 386:253 387:116 399:176 400:253 401:253 402:131 403:9 411:99 412:253 413:253 414:253 415:116 426:119 427:254 428:254 429:232 430:75 440:158 441:254 442:254 443:117 454:118 455:253 456:253 457:154 468:156 469:253 470:253 471:116 482:118 483:253 484:253 485:154 496:156 497:253 498:253 499:116 509:46 510:222 511:253 512:253 513:154 522:7 523:116 524:246 525:253 526:180 527:9 538:118 539:253 540:253 541:154 550:116 551:253 552:253 553:253 554:174 566:118 567:253 568:253 569:154 577:110 578:246 579:253 580:253 581:240 582:67 594:118 595:253 596:253 597:238 598:215 599:49 600:20 601:20 602:20 603:66 604:215 605:241 606:253 607:245 608:233 609:64 622:82 623:229 624:253 625:253 626:253 627:253 628:253 629:253 630:253 631:254 632:253 633:253 634:240 635:107 651:176 652:253 653:253 654:253 655:253 656:253 657:253 658:253 659:254 660:253 661:253 662:108 679:40 680:239 681:253 682:253 683:253 684:253 685:253 686:253 687:254 688:161 689:57 690:4 -0 152:56 153:105 154:220 155:254 156:63 178:18 179:166 180:233 181:253 182:253 183:253 184:236 185:209 186:209 187:209 188:77 189:18 206:84 207:253 208:253 209:253 210:253 211:253 212:254 213:253 214:253 215:253 216:253 217:172 218:8 233:57 234:238 235:253 236:253 237:253 238:253 239:253 240:254 241:253 242:253 243:253 244:253 245:253 246:119 260:14 261:238 262:253 263:253 264:253 265:253 266:253 267:253 268:179 269:196 270:253 271:253 272:253 273:253 274:238 275:12 288:33 289:253 290:253 291:253 292:253 293:253 294:248 295:134 297:18 298:83 299:237 300:253 301:253 302:253 303:14 316:164 317:253 318:253 319:253 320:253 321:253 322:128 327:57 328:119 329:214 330:253 331:94 343:57 344:248 345:253 346:253 347:253 348:126 349:14 350:4 357:179 358:253 359:248 360:56 371:175 372:253 373:253 374:240 375:190 376:28 385:179 386:253 387:253 388:173 399:209 400:253 401:253 402:178 413:92 414:253 415:253 416:208 427:211 428:254 429:254 430:179 442:135 443:255 444:209 455:209 456:253 457:253 458:90 470:134 471:253 472:208 483:209 484:253 485:253 486:178 497:2 498:142 499:253 500:208 511:209 512:253 513:253 514:214 515:35 525:30 526:253 527:253 528:208 539:165 540:253 541:253 542:253 543:215 544:36 553:163 554:253 555:253 556:164 567:18 568:172 569:253 570:253 571:253 572:214 573:127 574:7 580:72 581:232 582:253 583:171 584:17 596:8 597:182 598:253 599:253 600:253 601:253 602:162 603:56 607:64 608:240 609:253 610:253 611:14 625:7 626:173 627:253 628:253 629:253 630:253 631:245 632:241 633:239 634:239 635:246 636:253 637:225 638:14 639:1 654:18 655:59 656:138 657:224 658:253 659:253 660:254 661:253 662:253 663:253 664:240 665:96 685:37 686:104 687:192 688:255 689:253 690:253 691:182 692:73 -1 130:7 131:176 132:254 133:224 158:51 159:253 160:253 161:223 185:4 186:170 187:253 188:253 189:214 213:131 214:253 215:253 216:217 217:39 241:209 242:253 243:253 244:134 268:75 269:240 270:253 271:239 272:26 296:184 297:253 298:245 299:63 323:142 324:255 325:253 326:185 350:62 351:229 352:254 353:242 354:73 377:54 378:229 379:253 380:254 381:105 405:152 406:254 407:254 408:213 409:26 432:32 433:243 434:253 435:253 436:115 459:2 460:142 461:253 462:253 463:155 487:30 488:253 489:253 490:232 491:55 515:75 516:253 517:253 518:164 542:72 543:232 544:253 545:189 546:17 570:224 571:253 572:253 573:163 597:43 598:235 599:253 600:253 601:195 602:21 625:28 626:231 627:253 628:253 629:184 630:14 654:225 655:253 656:253 657:75 -0 155:21 156:176 157:253 158:253 159:124 182:105 183:176 184:251 185:251 186:251 187:251 188:105 208:58 209:217 210:241 211:253 212:251 213:251 214:251 215:251 216:243 217:113 218:5 235:63 236:231 237:251 238:251 239:253 240:251 241:251 242:251 243:251 244:253 245:251 246:113 263:144 264:251 265:251 266:251 267:253 268:251 269:251 270:251 271:251 272:253 273:251 274:215 290:125 291:253 292:253 293:253 294:253 295:255 296:253 297:253 298:253 299:253 300:255 301:253 302:227 303:42 318:253 319:251 320:251 321:251 322:251 323:253 324:251 325:251 326:251 327:251 328:253 329:251 330:251 331:142 345:27 346:253 347:251 348:251 349:235 350:241 351:253 352:251 353:246 354:137 355:35 356:98 357:251 358:251 359:236 360:61 372:47 373:211 374:253 375:251 376:235 377:82 378:103 379:253 380:251 381:137 384:73 385:251 386:251 387:251 388:71 399:27 400:211 401:251 402:253 403:251 404:86 407:72 408:71 409:10 412:73 413:251 414:251 415:173 416:20 427:89 428:253 429:253 430:255 431:253 432:35 440:73 441:253 442:253 443:253 444:72 454:84 455:236 456:251 457:251 458:253 459:251 460:138 468:73 469:251 470:251 471:251 472:71 481:63 482:236 483:251 484:251 485:251 486:227 487:251 488:246 489:138 490:11 494:16 495:37 496:228 497:251 498:246 499:137 500:10 509:73 510:251 511:251 512:251 513:173 514:42 515:142 516:142 517:142 518:41 522:109 523:251 524:253 525:251 526:137 537:73 538:251 539:251 540:173 541:20 549:27 550:211 551:251 552:253 553:147 554:10 565:73 566:253 567:253 568:143 575:21 576:176 577:253 578:253 579:253 593:73 594:251 595:251 596:205 597:144 603:176 604:251 605:251 606:188 607:107 621:62 622:236 623:251 624:251 625:251 626:218 627:217 628:217 629:217 630:217 631:253 632:230 633:189 634:20 650:83 651:158 652:251 653:251 654:253 655:251 656:251 657:251 658:251 659:253 660:107 679:37 680:251 681:251 682:253 683:251 684:251 685:251 686:122 687:72 688:30 -1 151:68 152:45 153:131 154:131 155:131 156:101 157:68 158:92 159:44 187:19 188:170 211:29 212:112 213:89 215:40 216:222 239:120 240:254 241:251 242:127 243:40 244:222 267:197 268:254 269:254 270:91 271:40 272:222 294:64 295:247 296:254 297:236 298:50 299:40 300:107 322:184 323:254 324:254 325:91 327:6 328:14 350:203 351:254 352:254 353:71 377:23 378:218 379:254 380:254 381:71 405:113 406:254 407:255 408:239 409:53 433:210 434:254 435:254 436:195 460:62 461:242 462:254 463:241 464:88 468:28 488:86 489:254 490:254 491:189 495:28 496:104 516:106 517:254 518:254 519:168 523:40 524:91 544:216 545:254 546:245 547:51 551:35 552:80 572:216 573:254 574:102 599:55 600:239 601:254 602:52 627:166 628:254 629:210 630:23 655:223 656:252 657:104 683:223 684:169 -0 125:29 126:170 127:255 128:255 129:141 151:29 152:198 153:255 154:255 155:255 156:226 157:255 158:86 178:141 179:255 180:255 181:170 182:29 184:86 185:255 186:255 187:141 204:29 205:226 206:255 207:198 208:57 213:226 214:255 215:255 216:226 217:114 231:29 232:255 233:255 234:114 241:141 242:170 243:114 244:255 245:255 246:141 259:226 260:255 261:170 269:29 270:57 273:141 274:255 275:226 286:57 287:255 288:170 302:114 303:255 304:198 314:226 315:255 331:170 332:255 333:57 342:255 343:226 360:255 361:170 370:255 371:170 388:114 389:198 398:255 399:226 416:86 417:255 426:198 427:255 444:86 445:255 454:114 455:255 456:57 472:86 473:255 482:29 483:255 484:226 500:141 501:255 511:170 512:255 513:170 528:226 529:198 539:29 540:226 541:255 542:170 555:29 556:255 557:114 568:29 569:226 570:255 571:141 582:57 583:226 584:226 598:141 599:255 600:255 601:170 602:86 607:29 608:86 609:226 610:255 611:226 612:29 627:86 628:198 629:255 630:255 631:255 632:255 633:255 634:255 635:255 636:255 637:255 638:141 639:29 657:29 658:114 659:170 660:170 661:170 662:170 663:170 664:86 -0 153:203 154:254 155:252 156:252 157:252 158:214 159:51 160:20 180:62 181:221 182:252 183:250 184:250 185:250 186:252 187:250 188:160 189:20 207:62 208:211 209:250 210:252 211:250 212:250 213:250 214:252 215:250 216:250 217:49 234:41 235:221 236:250 237:250 238:252 239:250 240:250 241:250 242:252 243:250 244:128 245:10 262:254 263:252 264:252 265:252 266:254 267:252 268:252 269:252 270:254 271:252 272:252 273:90 290:150 291:190 292:250 293:250 294:252 295:250 296:250 297:169 298:171 299:250 300:250 301:250 302:82 318:31 319:191 320:250 321:250 322:252 323:189 324:100 325:20 326:172 327:250 328:250 329:250 330:80 346:213 347:250 348:250 349:250 350:212 351:29 354:252 355:250 356:250 357:250 374:92 375:252 376:252 377:252 382:51 383:252 384:252 385:252 386:203 401:82 402:252 403:250 404:250 405:169 410:132 411:250 412:250 413:250 414:121 428:92 429:231 430:252 431:250 432:159 433:20 438:252 439:250 440:250 441:250 456:30 457:211 458:252 459:250 460:221 461:40 466:90 467:250 468:250 469:250 470:163 484:31 485:213 486:254 487:232 488:80 494:92 495:252 496:252 497:212 498:163 512:151 513:250 514:252 515:149 522:252 523:250 524:250 525:49 540:60 541:221 542:252 543:210 544:60 550:252 551:250 552:250 553:49 569:202 570:252 571:250 572:221 573:40 576:123 577:202 578:252 579:250 580:250 581:49 596:123 597:243 598:255 599:252 600:252 601:252 602:254 603:252 604:252 605:252 606:254 607:252 608:100 625:121 626:171 627:250 628:250 629:250 630:252 631:250 632:250 633:250 634:252 635:250 636:100 654:20 655:160 656:250 657:250 658:252 659:250 660:250 661:250 662:252 663:189 664:40 683:20 684:170 685:250 686:252 687:250 688:128 689:49 690:49 691:29 -1 98:64 99:191 100:70 125:68 126:243 127:253 128:249 129:63 152:30 153:223 154:253 155:253 156:247 157:41 179:73 180:238 181:253 182:253 183:253 184:242 206:73 207:236 208:253 209:253 210:253 211:253 212:242 234:182 235:253 236:253 237:191 238:247 239:253 240:149 262:141 263:253 264:143 265:86 266:249 267:253 268:122 290:9 291:36 292:7 293:14 294:233 295:253 296:122 322:230 323:253 324:122 350:230 351:253 352:122 378:231 379:255 380:123 406:230 407:253 408:52 433:61 434:245 435:253 461:98 462:253 463:253 468:35 469:12 489:98 490:253 491:253 494:9 495:142 496:233 497:146 517:190 518:253 519:253 520:128 521:7 522:99 523:253 524:253 525:180 544:29 545:230 546:253 547:253 548:252 549:210 550:253 551:253 552:253 553:140 571:28 572:207 573:253 574:253 575:253 576:254 577:253 578:253 579:235 580:70 581:9 599:126 600:253 601:253 602:253 603:253 604:254 605:253 606:168 607:19 627:79 628:253 629:253 630:201 631:190 632:132 633:63 634:5 -1 125:26 126:240 127:72 153:25 154:238 155:208 182:209 183:226 184:14 210:209 211:254 212:43 238:175 239:254 240:128 266:63 267:254 268:204 294:107 295:254 296:204 322:88 323:254 324:204 350:55 351:254 352:204 378:126 379:254 380:204 406:126 407:254 408:189 434:169 435:254 436:121 462:209 463:254 464:193 490:209 491:254 492:111 517:22 518:235 519:254 520:37 545:137 546:254 547:227 548:16 573:205 574:255 575:185 601:205 602:254 603:125 629:205 630:254 631:125 657:111 658:212 659:43 -0 155:62 156:91 157:213 158:255 159:228 160:91 161:12 182:70 183:230 184:253 185:253 186:253 187:253 188:253 189:152 190:7 210:246 211:253 212:253 213:253 214:253 215:253 216:253 217:253 218:106 237:21 238:247 239:253 240:253 241:253 242:253 243:253 244:253 245:208 246:24 265:156 266:253 267:253 268:253 269:253 270:253 271:253 272:253 273:195 292:88 293:238 294:253 295:253 296:253 297:221 298:253 299:253 300:253 301:195 320:230 321:253 322:253 323:253 324:198 325:40 326:177 327:253 328:253 329:195 346:56 347:156 348:251 349:253 350:189 351:182 352:15 354:86 355:240 356:253 357:210 358:28 374:213 375:253 376:253 377:156 378:3 383:205 384:253 385:253 386:106 401:121 402:252 403:253 404:135 405:3 411:46 412:253 413:253 414:106 428:28 429:212 430:253 431:248 432:23 439:42 440:253 441:253 442:106 456:197 457:253 458:234 459:70 467:42 468:253 469:253 470:106 483:11 484:202 485:253 486:187 495:58 496:253 497:210 498:27 511:107 512:253 513:253 514:40 522:53 523:227 524:253 525:195 539:107 540:253 541:253 542:40 549:47 550:227 551:253 552:231 553:58 567:107 568:253 569:253 570:40 575:5 576:131 577:222 578:253 579:231 580:59 595:14 596:204 597:253 598:226 599:222 600:73 601:58 602:58 603:170 604:253 605:253 606:227 607:58 624:197 625:253 626:253 627:253 628:253 629:253 630:253 631:253 632:253 633:238 634:58 652:33 653:179 654:241 655:253 656:253 657:253 658:253 659:250 660:116 661:14 682:75 683:179 684:253 685:151 686:89 687:86 -1 157:42 158:228 159:253 160:253 185:144 186:251 187:251 188:251 212:89 213:236 214:251 215:235 216:215 239:79 240:253 241:251 242:251 243:142 267:180 268:253 269:251 270:251 271:142 294:32 295:202 296:255 297:253 298:216 322:109 323:251 324:253 325:251 326:112 349:6 350:129 351:251 352:253 353:127 354:5 377:37 378:251 379:251 380:253 381:107 405:166 406:251 407:251 408:201 409:30 432:42 433:228 434:253 435:253 460:144 461:251 462:251 463:147 487:63 488:236 489:251 490:251 491:71 515:150 516:251 517:251 518:204 519:41 543:253 544:251 545:251 546:142 571:255 572:253 573:164 598:105 599:253 600:251 601:35 626:180 627:253 628:251 629:35 654:180 655:253 656:251 657:35 682:180 683:253 684:251 685:35 -1 128:62 129:254 130:213 156:102 157:253 158:252 159:102 160:20 184:102 185:254 186:253 187:254 188:50 212:102 213:253 214:252 215:253 216:50 240:102 241:254 242:253 243:254 244:50 268:142 269:253 270:252 271:253 272:50 295:51 296:253 297:254 298:253 299:224 300:20 323:132 324:252 325:253 326:252 327:162 351:173 352:253 353:254 354:253 355:102 378:82 379:253 380:252 381:253 382:252 383:61 406:203 407:254 408:253 409:254 410:233 433:41 434:243 435:253 436:252 437:253 438:111 461:132 462:253 463:254 464:253 465:203 488:41 489:253 490:252 491:253 492:252 493:40 515:11 516:213 517:254 518:253 519:254 520:151 543:92 544:252 545:253 546:252 547:192 548:50 570:21 571:214 572:253 573:255 574:253 575:41 598:142 599:253 600:252 601:253 602:171 625:113 626:253 627:255 628:253 629:203 630:40 653:30 654:131 655:233 656:111 -0 154:28 155:195 156:254 157:254 158:254 159:254 160:254 161:255 162:61 181:6 182:191 183:253 184:253 185:253 186:253 187:253 188:253 189:253 190:60 208:26 209:190 210:253 211:253 212:253 213:253 214:240 215:191 216:242 217:253 218:60 235:15 236:187 237:253 238:253 239:253 240:253 241:253 242:200 244:211 245:253 246:60 262:22 263:66 264:253 265:253 266:253 267:253 268:241 269:209 270:44 271:23 272:218 273:253 274:60 290:124 291:253 292:253 293:253 294:253 295:253 296:182 299:131 300:253 301:253 302:60 318:38 319:217 320:253 321:253 322:244 323:111 324:37 327:131 328:253 329:253 330:60 346:124 347:253 348:253 349:253 350:165 354:22 355:182 356:253 357:253 358:60 374:124 375:253 376:253 377:240 378:45 382:53 383:253 384:253 385:249 386:58 401:16 402:168 403:253 404:216 405:45 410:53 411:253 412:253 413:138 429:159 430:253 431:253 432:147 438:53 439:253 440:253 441:138 456:136 457:252 458:253 459:227 460:5 466:53 467:253 468:243 469:101 484:140 485:253 486:253 487:124 494:156 495:253 496:218 511:13 512:164 513:253 514:142 515:5 521:32 522:233 523:253 524:218 539:62 540:253 541:253 542:130 548:37 549:203 550:253 551:253 552:127 567:62 568:253 569:253 570:147 571:36 572:36 573:36 574:36 575:151 576:222 577:253 578:245 579:127 580:8 595:34 596:202 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:253 605:253 606:200 624:140 625:253 626:253 627:253 628:253 629:253 630:253 631:253 632:248 633:235 634:65 652:87 653:173 654:253 655:253 656:253 657:253 658:253 659:253 660:182 681:14 682:78 683:96 684:253 685:253 686:253 687:137 688:56 -0 123:8 124:76 125:202 126:254 127:255 128:163 129:37 130:2 150:13 151:182 152:253 153:253 154:253 155:253 156:253 157:253 158:23 177:15 178:179 179:253 180:253 181:212 182:91 183:218 184:253 185:253 186:179 187:109 205:105 206:253 207:253 208:160 209:35 210:156 211:253 212:253 213:253 214:253 215:250 216:113 232:19 233:212 234:253 235:253 236:88 237:121 238:253 239:233 240:128 241:91 242:245 243:253 244:248 245:114 260:104 261:253 262:253 263:110 264:2 265:142 266:253 267:90 270:26 271:199 272:253 273:248 274:63 287:1 288:173 289:253 290:253 291:29 293:84 294:228 295:39 299:72 300:251 301:253 302:215 303:29 315:36 316:253 317:253 318:203 319:13 328:82 329:253 330:253 331:170 343:36 344:253 345:253 346:164 356:11 357:198 358:253 359:184 360:6 371:36 372:253 373:253 374:82 385:138 386:253 387:253 388:35 399:128 400:253 401:253 402:47 413:48 414:253 415:253 416:35 427:154 428:253 429:253 430:47 441:48 442:253 443:253 444:35 455:102 456:253 457:253 458:99 469:48 470:253 471:253 472:35 483:36 484:253 485:253 486:164 496:16 497:208 498:253 499:211 500:17 511:32 512:244 513:253 514:175 515:4 524:44 525:253 526:253 527:156 540:171 541:253 542:253 543:29 551:30 552:217 553:253 554:188 555:19 568:171 569:253 570:253 571:59 578:60 579:217 580:253 581:253 582:70 596:78 597:253 598:253 599:231 600:48 604:26 605:128 606:249 607:253 608:244 609:94 610:15 624:8 625:151 626:253 627:253 628:234 629:101 630:121 631:219 632:229 633:253 634:253 635:201 636:80 653:38 654:232 655:253 656:253 657:253 658:253 659:253 660:253 661:253 662:201 663:66 -0 127:68 128:254 129:255 130:254 131:107 153:11 154:176 155:230 156:253 157:253 158:253 159:212 180:28 181:197 182:253 183:253 184:253 185:253 186:253 187:229 188:107 189:14 208:194 209:253 210:253 211:253 212:253 213:253 214:253 215:253 216:253 217:53 235:69 236:241 237:253 238:253 239:253 240:253 241:241 242:186 243:253 244:253 245:195 262:10 263:161 264:253 265:253 266:253 267:246 268:40 269:57 270:231 271:253 272:253 273:195 290:140 291:253 292:253 293:253 294:253 295:154 297:25 298:253 299:253 300:253 301:195 318:213 319:253 320:253 321:253 322:135 323:8 325:3 326:128 327:253 328:253 329:195 345:77 346:238 347:253 348:253 349:253 350:7 354:116 355:253 356:253 357:195 372:11 373:165 374:253 375:253 376:231 377:70 378:1 382:78 383:237 384:253 385:195 400:33 401:253 402:253 403:253 404:182 411:200 412:253 413:195 428:98 429:253 430:253 431:253 432:24 439:42 440:253 441:195 456:197 457:253 458:253 459:253 460:24 467:163 468:253 469:195 484:197 485:253 486:253 487:189 488:13 494:53 495:227 496:253 497:121 512:197 513:253 514:253 515:114 521:21 522:227 523:253 524:231 525:27 540:197 541:253 542:253 543:114 547:5 548:131 549:143 550:253 551:231 552:59 568:197 569:253 570:253 571:236 572:73 573:58 574:217 575:223 576:253 577:253 578:253 579:174 596:197 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:253 605:253 606:253 607:48 624:149 625:253 626:253 627:253 628:253 629:253 630:253 631:253 632:253 633:182 634:15 635:3 652:12 653:168 654:253 655:253 656:253 657:253 658:253 659:248 660:89 661:23 -1 157:85 158:255 159:103 160:1 185:205 186:253 187:253 188:30 213:205 214:253 215:253 216:30 240:44 241:233 242:253 243:244 244:27 268:135 269:253 270:253 271:100 296:153 297:253 298:240 299:76 323:12 324:208 325:253 326:166 351:69 352:253 353:253 354:142 378:14 379:110 380:253 381:235 382:33 406:63 407:223 408:235 409:130 434:186 435:253 436:235 437:37 461:17 462:145 463:253 464:231 465:35 489:69 490:220 491:231 492:123 516:18 517:205 518:253 519:176 520:27 543:17 544:125 545:253 546:185 547:39 571:71 572:214 573:231 574:41 599:167 600:253 601:225 602:33 626:72 627:205 628:207 629:14 653:30 654:249 655:233 656:49 681:32 682:253 683:89 -1 126:94 127:132 154:250 155:250 156:4 182:250 183:254 184:95 210:250 211:254 212:95 238:250 239:254 240:95 266:250 267:254 268:95 294:250 295:254 296:95 322:250 323:254 324:95 350:250 351:254 352:95 378:250 379:254 380:95 405:77 406:254 407:250 408:19 433:96 434:254 435:249 461:53 462:253 463:252 464:43 490:250 491:251 492:32 517:85 518:254 519:249 545:96 546:254 547:249 573:83 574:254 575:250 576:14 602:250 603:254 604:95 630:250 631:255 632:95 658:132 659:254 660:95 -1 124:32 125:253 126:31 152:32 153:251 154:149 180:32 181:251 182:188 208:32 209:251 210:188 236:32 237:251 238:228 239:59 264:32 265:253 266:253 267:95 292:28 293:236 294:251 295:114 321:127 322:251 323:251 349:127 350:251 351:251 377:48 378:232 379:251 406:223 407:253 408:159 434:221 435:251 436:158 462:142 463:251 464:158 490:64 491:251 492:242 493:55 518:64 519:251 520:253 521:161 546:64 547:253 548:255 549:221 574:16 575:181 576:253 577:220 603:79 604:253 605:236 606:63 632:213 633:251 634:126 660:96 661:251 662:126 -1 129:39 130:254 131:255 132:254 133:140 157:136 158:253 159:253 160:228 161:67 184:6 185:227 186:253 187:253 188:58 211:29 212:188 213:253 214:253 215:253 216:17 239:95 240:253 241:253 242:253 243:157 244:8 266:3 267:107 268:253 269:253 270:245 271:77 294:29 295:253 296:253 297:240 298:100 322:141 323:253 324:253 325:215 349:129 350:248 351:253 352:253 353:215 377:151 378:253 379:253 380:253 381:144 405:151 406:253 407:253 408:253 409:27 431:3 432:102 433:242 434:253 435:253 436:110 437:3 459:97 460:253 461:253 462:253 463:214 464:55 487:207 488:253 489:253 490:253 491:158 515:67 516:253 517:253 518:253 519:158 543:207 544:253 545:253 546:240 547:88 571:207 572:253 573:253 574:224 598:32 599:217 600:253 601:253 602:224 626:141 627:253 628:253 629:253 630:133 654:36 655:219 656:253 657:140 658:10 -0 123:59 124:55 149:71 150:192 151:254 152:250 153:147 154:17 176:123 177:247 178:253 179:254 180:253 181:253 182:196 183:79 184:176 185:175 186:175 187:124 188:48 203:87 204:247 205:247 206:176 207:95 208:102 209:117 210:243 211:237 212:192 213:232 214:253 215:253 216:245 217:152 218:6 230:23 231:229 232:253 233:138 238:219 239:58 241:95 242:118 243:80 244:230 245:254 246:196 247:30 258:120 259:254 260:205 261:8 266:114 272:38 273:255 274:254 275:155 276:5 286:156 287:253 288:92 301:61 302:235 303:253 304:102 314:224 315:253 316:78 330:117 331:253 332:196 333:18 342:254 343:253 344:78 358:9 359:211 360:253 361:73 370:254 371:253 372:78 387:175 388:253 389:155 398:194 399:254 400:101 415:79 416:254 417:155 426:112 427:253 428:211 429:9 443:73 444:251 445:200 454:41 455:241 456:253 457:87 471:25 472:240 473:253 483:147 484:253 485:227 486:47 499:94 500:253 501:200 511:5 512:193 513:253 514:230 515:76 527:175 528:253 529:155 540:31 541:219 542:254 543:255 544:126 545:18 553:14 554:149 555:254 556:244 557:45 569:21 570:158 571:254 572:253 573:226 574:162 575:118 576:96 577:20 578:20 579:73 580:118 581:224 582:253 583:247 584:85 598:30 599:155 600:253 601:253 602:253 603:253 604:254 605:253 606:253 607:253 608:253 609:254 610:247 611:84 627:5 628:27 629:117 630:206 631:244 632:229 633:213 634:213 635:213 636:176 637:117 638:32 659:45 660:23 -1 128:58 129:139 156:247 157:247 158:25 183:121 184:253 185:156 186:3 211:133 212:253 213:145 238:11 239:227 240:253 241:145 266:7 267:189 268:253 269:145 294:35 295:252 296:253 297:145 322:146 323:252 324:253 325:131 350:146 351:252 352:253 353:13 378:146 379:252 380:253 381:13 406:147 407:253 408:255 409:13 434:146 435:252 436:253 437:13 462:146 463:252 464:253 465:13 490:146 491:252 492:253 493:13 517:22 518:230 519:252 520:221 521:9 545:22 546:230 547:252 548:133 574:146 575:252 576:133 602:146 603:252 604:120 630:146 631:252 658:146 659:252 -1 129:28 130:247 131:255 132:165 156:47 157:221 158:252 159:252 160:164 184:177 185:252 186:252 187:252 188:164 212:177 213:252 214:252 215:223 216:78 240:177 241:252 242:252 243:197 267:114 268:236 269:252 270:235 271:42 294:5 295:148 296:252 297:252 298:230 321:14 322:135 323:252 324:252 325:252 326:230 349:78 350:252 351:252 352:252 353:252 354:162 377:78 378:252 379:252 380:252 381:252 382:9 405:78 406:252 407:252 408:252 409:252 410:9 432:32 433:200 434:252 435:252 436:252 437:105 438:3 459:10 460:218 461:252 462:252 463:252 464:105 465:8 487:225 488:252 489:252 490:252 491:240 492:69 514:44 515:237 516:252 517:252 518:228 519:85 541:59 542:218 543:252 544:252 545:225 546:93 568:65 569:208 570:252 571:252 572:252 573:175 596:133 597:252 598:252 599:252 600:225 601:68 624:133 625:252 626:252 627:244 628:54 652:133 653:252 654:252 655:48 -0 156:13 157:6 181:10 182:77 183:145 184:253 185:190 186:67 207:11 208:77 209:193 210:252 211:252 212:253 213:252 214:238 215:157 216:71 217:26 233:10 234:78 235:193 236:252 237:252 238:252 239:252 240:253 241:252 242:252 243:252 244:252 245:228 246:128 247:49 248:5 259:6 260:78 261:194 262:252 263:252 264:252 265:252 266:252 267:252 268:253 269:217 270:192 271:232 272:252 273:252 274:252 275:252 276:135 277:3 286:4 287:147 288:252 289:252 290:252 291:252 292:252 293:252 294:252 295:252 296:175 297:26 299:40 300:145 301:235 302:252 303:252 304:252 305:104 314:208 315:252 316:252 317:252 318:252 319:252 320:252 321:133 322:48 323:48 329:71 330:236 331:252 332:252 333:230 342:253 343:185 344:170 345:252 346:252 347:252 348:173 349:22 358:102 359:252 360:252 361:252 370:24 371:141 372:243 373:252 374:252 375:186 376:5 386:8 387:220 388:252 389:252 398:70 399:247 400:252 401:252 402:165 403:37 414:81 415:251 416:252 417:194 426:255 427:253 428:253 429:251 430:69 441:39 442:231 443:253 444:253 445:127 454:253 455:252 456:249 457:127 468:6 469:147 470:252 471:252 472:190 473:5 482:253 483:252 484:216 495:7 496:145 497:252 498:252 499:252 500:69 510:253 511:252 512:223 513:16 522:25 523:185 524:252 525:252 526:252 527:107 528:8 538:167 539:252 540:252 541:181 542:18 549:105 550:191 551:252 552:252 553:235 554:151 555:10 566:37 567:221 568:252 569:252 570:210 571:193 572:96 573:73 574:130 575:188 576:194 577:227 578:252 579:252 580:235 581:128 595:97 596:220 597:252 598:252 599:252 600:252 601:252 602:252 603:252 604:253 605:252 606:252 607:236 608:70 624:40 625:174 626:252 627:252 628:252 629:252 630:252 631:252 632:253 633:197 634:138 635:29 653:5 654:23 655:116 656:143 657:143 658:143 659:143 660:24 661:10 -0 127:28 128:164 129:254 130:233 131:148 132:11 154:3 155:164 156:254 157:234 158:225 159:254 160:204 182:91 183:254 184:235 185:48 186:32 187:166 188:251 189:92 208:33 209:111 210:214 211:205 212:49 215:24 216:216 217:210 235:34 236:217 237:254 238:254 239:211 244:87 245:237 246:43 262:34 263:216 264:254 265:254 266:252 267:243 268:61 272:38 273:248 274:182 290:171 291:254 292:184 293:205 294:175 295:36 301:171 302:227 317:28 318:234 319:190 320:13 321:193 322:157 329:124 330:238 331:26 345:140 346:254 347:131 349:129 350:157 357:124 358:254 359:95 373:201 374:238 375:56 377:70 378:103 385:124 386:254 387:148 400:62 401:255 402:210 413:150 414:254 415:122 428:86 429:254 430:201 431:15 440:28 441:237 442:246 443:44 456:128 457:254 458:143 468:34 469:243 470:227 484:62 485:254 486:210 496:58 497:249 498:179 512:30 513:240 514:210 524:207 525:254 526:64 541:216 542:231 543:34 551:129 552:248 553:170 554:9 569:131 570:254 571:170 577:17 578:129 579:248 580:225 581:24 597:50 598:245 599:245 600:184 601:106 602:106 603:106 604:133 605:231 606:254 607:244 608:53 626:67 627:249 628:254 629:254 630:254 631:254 632:254 633:251 634:193 635:40 655:38 656:157 657:248 658:166 659:166 660:139 661:57 -0 129:105 130:255 131:219 132:67 133:67 134:52 156:20 157:181 158:253 159:253 160:253 161:253 162:226 163:69 182:4 183:129 184:206 185:253 186:253 187:253 188:253 189:253 190:253 191:130 209:9 210:141 211:253 212:253 213:253 214:253 215:253 216:253 217:253 218:253 219:166 220:20 237:134 238:253 239:253 240:253 241:253 242:253 243:253 244:253 245:253 246:253 247:253 248:65 262:2 263:83 264:207 265:246 266:253 267:253 268:253 269:253 270:253 271:249 272:234 273:247 274:253 275:253 276:65 290:83 291:253 292:253 293:253 294:253 295:253 296:189 297:253 298:253 299:205 301:179 302:253 303:253 304:65 317:85 318:234 319:253 320:253 321:253 322:253 323:157 324:26 325:164 326:151 327:83 329:179 330:253 331:253 332:65 344:65 345:237 346:253 347:253 348:253 349:67 350:36 351:14 353:15 354:12 357:179 358:253 359:253 360:65 371:4 372:141 373:253 374:253 375:221 376:158 377:23 385:179 386:253 387:253 388:65 399:129 400:253 401:253 402:241 403:62 412:72 413:226 414:253 415:175 416:24 426:119 427:247 428:253 429:253 430:206 439:8 440:134 441:253 442:253 443:130 454:132 455:253 456:253 457:194 458:27 467:125 468:253 469:253 470:253 471:130 481:45 482:213 483:253 484:253 485:112 493:70 494:170 495:247 496:253 497:253 498:89 499:43 509:67 510:253 511:253 512:196 513:55 514:9 520:8 521:131 522:253 523:253 524:253 525:86 526:1 537:67 538:253 539:253 540:253 541:253 542:129 546:43 547:114 548:134 549:253 550:253 551:231 552:139 553:41 565:20 566:167 567:253 568:253 569:253 570:247 571:179 572:179 573:179 574:206 575:253 576:253 577:253 578:253 579:72 594:103 595:240 596:253 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:244 605:119 606:8 607:1 623:107 624:253 625:253 626:253 627:253 628:253 629:253 630:253 631:175 632:111 651:3 652:121 653:253 654:253 655:253 656:253 657:253 658:182 659:24 -0 125:22 126:183 127:252 128:254 129:252 130:252 131:252 132:76 151:85 152:85 153:168 154:250 155:250 156:252 157:250 158:250 159:250 160:250 161:71 163:43 164:85 165:14 178:107 179:252 180:250 181:250 182:250 183:250 184:252 185:250 186:250 187:250 188:250 189:210 191:127 192:250 193:146 205:114 206:237 207:252 208:250 209:250 210:250 211:250 212:252 213:250 214:250 215:250 216:250 217:210 219:127 220:250 221:250 232:107 233:237 234:250 235:252 236:250 237:250 238:250 239:74 240:41 241:41 242:41 243:41 244:217 245:34 247:127 248:250 249:250 259:15 260:148 261:252 262:252 263:254 264:238 265:105 275:128 276:252 277:252 286:15 287:140 288:250 289:250 290:250 291:167 292:111 303:127 304:250 305:250 314:43 315:250 316:250 317:250 318:250 331:127 332:250 333:250 342:183 343:250 344:250 345:250 346:110 358:57 359:210 360:250 361:250 370:252 371:250 372:250 373:110 374:7 386:85 387:250 388:250 389:250 398:254 399:252 400:252 401:83 414:86 415:252 416:252 417:217 426:252 427:250 428:250 429:138 430:14 441:15 442:140 443:250 444:250 445:41 454:252 455:250 456:250 457:250 458:41 469:43 470:250 471:250 472:250 473:41 482:252 483:250 484:250 485:250 486:181 497:183 498:250 499:250 500:250 501:41 510:76 511:250 512:250 513:250 514:250 524:177 525:252 526:250 527:250 528:110 529:7 538:36 539:224 540:252 541:252 542:252 543:219 544:43 545:43 546:43 547:7 549:15 550:43 551:183 552:252 553:255 554:252 555:126 567:85 568:250 569:250 570:250 571:252 572:250 573:250 574:250 575:111 576:86 577:140 578:250 579:250 580:250 581:252 582:222 583:83 595:42 596:188 597:250 598:250 599:252 600:250 601:250 602:250 603:250 604:252 605:250 606:250 607:250 608:250 609:126 610:83 624:127 625:250 626:250 627:252 628:250 629:250 630:250 631:250 632:252 633:250 634:250 635:137 636:83 652:21 653:41 654:217 655:252 656:250 657:250 658:250 659:250 660:217 661:41 662:41 663:14 -1 155:114 156:206 157:25 183:238 184:252 185:55 211:222 212:252 213:55 239:113 240:252 241:55 267:113 268:252 269:55 295:255 296:253 297:56 323:253 324:176 325:6 350:32 351:253 352:233 353:43 378:140 379:253 380:195 381:19 406:140 407:253 408:167 433:29 434:253 435:141 461:29 462:252 463:140 489:29 490:252 491:140 517:29 518:252 519:140 545:29 546:252 547:140 573:169 574:253 575:79 601:169 602:252 628:76 629:234 630:141 656:197 657:233 658:37 684:197 685:223 -1 127:73 128:253 129:253 130:63 155:115 156:252 157:252 158:144 183:217 184:252 185:252 186:144 210:63 211:237 212:252 213:252 214:144 238:109 239:252 240:252 241:252 266:109 267:252 268:252 269:252 294:109 295:252 296:252 297:252 322:191 323:252 324:252 325:252 349:145 350:255 351:253 352:253 353:253 376:32 377:237 378:253 379:252 380:252 381:210 404:37 405:252 406:253 407:252 408:252 409:108 432:37 433:252 434:253 435:252 436:252 437:108 460:21 461:207 462:255 463:253 464:253 465:108 489:144 490:253 491:252 492:252 493:108 516:27 517:221 518:253 519:252 520:252 521:108 544:16 545:190 546:253 547:252 548:252 549:108 573:145 574:255 575:253 576:253 577:253 601:144 602:253 603:252 604:252 605:210 629:144 630:253 631:252 632:252 633:108 657:62 658:253 659:252 660:252 661:108 -1 120:85 121:253 122:132 123:9 147:82 148:241 149:251 150:251 151:128 175:175 176:251 177:251 178:251 179:245 180:121 203:13 204:204 205:251 206:251 207:251 208:245 209:107 232:39 233:251 234:251 235:251 236:251 237:167 238:22 260:15 261:155 262:251 263:251 264:251 265:251 266:177 289:15 290:157 291:248 292:251 293:251 294:251 295:165 319:214 320:251 321:251 322:251 323:212 324:78 325:24 347:109 348:251 349:251 350:251 351:253 352:251 353:170 354:10 375:5 376:57 377:162 378:251 379:253 380:251 381:251 382:18 405:106 406:239 407:255 408:253 409:253 410:213 434:105 435:253 436:251 437:251 438:230 439:72 463:253 464:251 465:251 466:251 467:221 468:67 491:72 492:251 493:251 494:251 495:251 496:96 519:36 520:199 521:251 522:251 523:251 524:155 525:15 548:45 549:204 550:251 551:251 552:251 553:157 577:161 578:249 579:251 580:251 581:248 582:147 606:233 607:251 608:251 609:251 610:173 634:233 635:251 636:251 637:251 638:173 662:53 663:131 664:251 665:251 666:173 -1 126:15 127:200 128:255 129:90 154:42 155:254 156:254 157:173 182:42 183:254 184:254 185:199 210:26 211:237 212:254 213:221 214:12 239:213 240:254 241:231 242:17 267:213 268:254 269:199 295:213 296:254 297:199 323:213 324:254 325:96 350:20 351:232 352:254 353:33 378:84 379:254 380:229 381:17 406:168 407:254 408:203 433:8 434:217 435:254 436:187 461:84 462:254 463:254 464:48 489:195 490:254 491:254 492:37 516:20 517:233 518:254 519:212 520:4 544:132 545:254 546:254 547:82 571:9 572:215 573:254 574:254 575:116 576:46 599:55 600:254 601:254 602:254 603:254 604:121 627:113 628:254 629:254 630:254 631:254 632:40 655:12 656:163 657:254 658:185 659:58 660:1 -0 182:32 183:57 184:57 185:57 186:57 187:57 188:57 189:57 208:67 209:185 210:229 211:252 212:252 213:252 214:253 215:252 216:252 217:252 218:185 219:66 234:13 235:188 236:246 237:252 238:253 239:252 240:252 241:252 242:241 243:139 244:177 245:252 246:253 247:246 248:187 249:13 261:26 262:255 263:253 264:244 265:175 266:101 274:126 275:244 276:253 277:153 288:82 289:243 290:253 291:214 292:81 303:169 304:252 305:252 315:19 316:215 317:252 318:206 319:56 331:169 332:252 333:252 343:157 344:252 345:252 346:13 359:169 360:252 361:151 370:41 371:253 372:253 373:128 386:92 387:253 388:206 389:13 398:166 399:252 400:196 401:9 414:216 415:252 416:142 426:253 427:252 428:168 441:89 442:253 443:208 444:13 454:253 455:252 456:68 468:38 469:225 470:253 471:96 482:254 483:253 484:56 495:45 496:229 497:253 498:151 510:253 511:252 512:81 522:70 523:225 524:252 525:227 538:216 539:252 540:168 548:29 549:134 550:253 551:252 552:186 553:31 566:91 567:252 568:243 569:125 573:51 574:114 575:113 576:210 577:252 578:253 579:151 580:19 595:157 596:253 597:253 598:254 599:253 600:253 601:253 602:254 603:253 604:244 605:175 606:51 623:19 624:122 625:196 626:197 627:221 628:196 629:196 630:197 631:121 632:56 655:25 -0 127:42 128:235 129:255 130:84 153:15 154:132 155:208 156:253 157:253 158:171 159:108 180:6 181:177 182:253 183:253 184:253 185:253 186:253 187:242 188:110 208:151 209:253 210:253 211:253 212:253 213:253 214:253 215:253 216:139 235:48 236:208 237:253 238:253 239:253 240:253 241:253 242:253 243:253 244:139 263:85 264:253 265:253 266:253 267:253 268:236 269:156 270:184 271:253 272:148 273:6 290:7 291:141 292:253 293:253 294:253 295:253 296:27 298:170 299:253 300:253 301:74 318:19 319:253 320:253 321:253 322:253 323:253 324:27 326:170 327:253 328:253 329:74 345:16 346:186 347:253 348:253 349:253 350:242 351:105 352:4 354:170 355:253 356:253 357:94 358:1 373:141 374:253 375:253 376:253 377:242 378:100 382:170 383:253 384:253 385:253 386:8 401:141 402:253 403:253 404:253 405:224 410:170 411:253 412:253 413:253 414:8 428:12 429:158 430:253 431:253 432:230 433:51 438:18 439:237 440:253 441:253 442:8 456:76 457:253 458:253 459:218 460:61 467:236 468:253 469:253 470:8 484:76 485:253 486:253 487:168 495:110 496:253 497:132 498:3 512:76 513:253 514:253 515:168 521:20 522:174 523:239 524:147 525:5 539:5 540:155 541:253 542:253 543:168 548:102 549:170 550:253 551:253 552:139 567:3 568:128 569:253 570:253 571:228 572:179 573:179 574:179 575:179 576:245 577:253 578:253 579:219 580:41 596:76 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:253 605:253 606:253 607:163 624:39 625:199 626:253 627:253 628:253 629:253 630:253 631:253 632:253 633:253 634:170 635:9 653:36 654:219 655:253 656:253 657:253 658:253 659:253 660:224 661:65 662:22 -1 156:202 157:253 158:69 184:253 185:252 186:121 212:253 213:252 214:69 240:253 241:252 242:69 267:106 268:253 269:231 270:37 295:179 296:255 297:196 322:17 323:234 324:253 325:92 350:93 351:252 352:253 353:92 378:93 379:252 380:253 381:92 406:93 407:252 408:232 409:8 434:208 435:253 436:116 462:207 463:252 464:116 490:207 491:252 492:32 517:57 518:244 519:252 545:122 546:252 547:252 573:185 574:253 575:253 601:184 602:252 603:252 629:101 630:252 631:252 657:13 658:173 659:252 660:43 686:9 687:232 688:116 -1 156:73 157:253 158:253 159:253 160:124 184:73 185:251 186:251 187:251 188:251 212:99 213:251 214:251 215:251 216:225 240:253 241:251 242:251 243:251 244:71 266:79 267:180 268:253 269:251 270:251 271:173 272:20 294:110 295:253 296:255 297:253 298:216 322:109 323:251 324:253 325:251 326:215 350:109 351:251 352:253 353:251 354:215 378:109 379:251 380:253 381:251 382:137 406:109 407:251 408:253 409:251 410:35 433:37 434:253 435:253 436:255 437:253 438:35 461:140 462:251 463:251 464:253 465:168 466:15 488:125 489:246 490:251 491:251 492:190 493:15 516:144 517:251 518:251 519:251 520:180 543:53 544:221 545:251 546:251 547:251 548:51 571:125 572:253 573:253 574:253 575:201 598:105 599:253 600:251 601:251 602:188 603:30 626:180 627:253 628:251 629:251 630:142 654:180 655:253 656:251 657:235 658:82 682:180 683:253 684:251 685:215 -1 124:111 125:255 126:48 152:162 153:253 154:237 155:63 180:206 181:253 182:253 183:183 208:87 209:217 210:253 211:205 237:90 238:253 239:238 240:60 265:37 266:225 267:253 268:89 294:206 295:253 296:159 322:206 323:253 324:226 350:206 351:253 352:226 378:206 379:253 380:226 406:206 407:253 408:226 434:206 435:253 436:226 462:206 463:253 464:226 490:206 491:253 492:226 518:206 519:253 520:237 521:45 546:206 547:253 548:253 549:109 574:173 575:253 576:253 577:109 602:69 603:253 604:253 605:109 630:64 631:248 632:253 633:109 659:112 660:253 661:109 -0 99:70 100:255 101:165 102:114 127:122 128:253 129:253 130:253 131:120 155:165 156:253 157:253 158:253 159:234 160:52 183:99 184:253 185:253 186:253 187:253 188:228 189:26 209:60 210:168 211:238 212:202 213:174 214:253 215:253 216:253 217:127 235:91 236:81 237:1 238:215 239:128 240:28 241:12 242:181 243:253 244:253 245:175 246:3 262:18 263:204 264:253 265:77 270:7 271:253 272:253 273:253 274:54 289:54 290:248 291:253 292:253 293:143 298:1 299:127 300:253 301:253 302:188 317:104 318:253 319:253 320:253 321:20 327:81 328:249 329:253 330:191 345:192 346:253 347:253 348:218 349:5 356:203 357:253 358:208 359:21 372:56 373:237 374:253 375:250 376:100 384:104 385:253 386:253 387:75 400:76 401:253 402:253 403:224 412:119 413:253 414:253 415:75 428:80 429:253 430:253 431:103 439:4 440:241 441:253 442:218 443:32 456:213 457:253 458:253 459:103 467:125 468:253 469:253 470:191 484:213 485:253 486:253 487:103 494:3 495:176 496:253 497:253 498:135 512:213 513:253 514:253 515:103 521:9 522:162 523:253 524:253 525:226 526:37 540:179 541:253 542:253 543:135 548:46 549:157 550:253 551:253 552:253 553:63 568:23 569:188 570:253 571:249 572:179 573:179 574:179 575:179 576:233 577:253 578:253 579:233 580:156 581:10 597:51 598:235 599:253 600:253 601:253 602:253 603:253 604:253 605:251 606:232 607:120 626:16 627:124 628:253 629:253 630:253 631:253 632:152 633:104 -1 124:29 125:197 126:255 127:84 152:85 153:251 154:253 155:83 180:86 181:253 182:254 183:253 208:85 209:251 210:253 211:251 236:86 237:253 238:254 239:253 240:169 264:85 265:251 266:253 267:251 268:168 292:86 293:253 294:254 295:253 296:169 320:28 321:196 322:253 323:251 324:168 349:169 350:254 351:253 352:169 377:168 378:253 379:251 380:168 405:169 406:254 407:253 408:169 433:168 434:253 435:251 436:168 462:254 463:253 464:254 465:139 490:253 491:251 492:253 493:251 518:254 519:253 520:254 521:253 522:57 546:253 547:251 548:253 549:251 550:168 574:198 575:253 576:254 577:253 578:114 602:85 603:251 604:253 605:251 630:85 631:253 632:254 633:253 658:28 659:83 660:196 661:83 -1 159:31 160:210 161:253 162:163 187:198 188:252 189:252 190:162 213:10 214:86 215:242 216:252 217:252 218:66 241:164 242:252 243:252 244:252 245:188 246:8 268:53 269:242 270:252 271:252 272:225 273:14 296:78 297:252 298:252 299:252 300:204 323:56 324:231 325:252 326:252 327:212 328:35 351:157 352:252 353:252 354:252 355:37 377:8 378:132 379:253 380:252 381:252 382:230 383:24 405:45 406:252 407:253 408:252 409:154 410:55 427:7 428:55 433:107 434:253 435:255 436:228 437:53 454:15 455:24 456:23 460:110 461:242 462:252 463:228 464:59 482:57 483:83 487:88 488:247 489:252 490:252 491:140 514:15 515:189 516:252 517:252 518:252 542:74 543:252 544:252 545:238 546:90 570:178 571:252 572:252 573:189 597:40 598:217 599:252 600:252 601:59 625:75 626:252 627:252 628:252 629:85 630:61 653:62 654:239 655:252 656:156 657:14 682:178 683:252 684:14 -1 131:159 132:255 133:122 158:167 159:228 160:253 161:121 185:64 186:236 187:251 188:205 189:110 212:48 213:158 214:251 215:251 216:178 217:39 240:190 241:251 242:251 243:251 267:96 268:253 269:253 270:253 271:153 295:194 296:251 297:251 298:211 299:74 322:80 323:174 324:251 325:251 326:140 327:47 349:16 350:181 351:253 352:251 353:219 354:23 377:64 378:251 379:253 380:251 381:204 382:19 405:223 406:253 407:255 408:233 409:48 431:20 432:174 433:244 434:251 435:253 436:109 437:31 459:96 460:189 461:251 462:251 463:126 464:31 486:24 487:106 488:251 489:235 490:188 491:100 514:96 515:251 516:251 517:228 518:59 542:255 543:253 544:253 545:213 546:36 569:100 570:253 571:251 572:251 573:85 574:23 596:32 597:127 598:253 599:235 600:126 601:15 624:104 625:251 626:253 627:240 628:79 652:83 653:193 654:253 655:220 -0 153:92 154:191 155:178 156:253 157:242 158:141 159:104 160:29 180:26 181:253 182:252 183:252 184:252 185:253 186:252 187:252 188:252 189:108 190:19 206:57 207:123 208:222 209:253 210:252 211:252 212:252 213:168 214:224 215:252 216:252 217:253 218:84 233:176 234:243 235:252 236:252 237:253 238:252 239:252 240:252 242:19 243:153 244:252 245:253 246:209 247:25 259:10 260:128 261:255 262:253 263:244 264:225 265:114 266:194 267:253 268:178 272:163 273:254 274:253 275:168 287:85 288:252 289:253 290:189 291:56 294:19 295:133 296:9 300:38 301:253 302:252 303:168 314:19 315:191 316:252 317:194 318:19 329:253 330:252 331:234 332:22 342:107 343:252 344:252 345:13 357:253 358:252 359:252 360:128 370:169 371:253 372:241 385:141 386:253 387:253 388:140 397:19 398:225 399:252 400:139 413:66 414:252 415:252 416:139 425:29 426:252 427:252 428:52 441:29 442:252 443:252 444:139 453:29 454:252 455:252 456:28 469:29 470:252 471:252 472:40 481:141 482:253 483:253 484:91 497:154 498:253 499:168 509:66 510:252 511:252 512:165 525:253 526:252 527:168 537:19 538:224 539:252 540:252 552:126 553:253 554:252 555:80 566:169 567:252 568:252 569:214 570:38 579:126 580:249 581:253 582:151 583:6 594:26 595:223 596:253 597:254 598:253 599:128 600:29 604:13 605:41 606:216 607:253 608:253 609:226 610:38 623:122 624:252 625:253 626:252 627:252 628:252 629:169 630:169 631:169 632:206 633:253 634:252 635:252 636:202 637:38 651:19 652:56 653:168 654:224 655:252 656:252 657:253 658:252 659:252 660:252 661:253 662:233 663:130 664:6 682:94 683:139 684:190 685:153 686:252 687:164 688:139 689:28 690:22 -1 128:53 129:250 130:255 131:25 156:167 157:253 158:253 159:25 182:3 183:123 184:247 185:253 186:253 187:25 210:9 211:253 212:253 213:253 214:253 215:25 238:9 239:253 240:253 241:253 242:253 243:25 266:9 267:253 268:253 269:253 270:180 271:13 294:9 295:253 296:253 297:253 298:104 322:9 323:253 324:253 325:253 326:104 350:15 351:253 352:253 353:253 354:104 378:184 379:253 380:253 381:228 382:68 406:184 407:253 408:253 409:182 433:103 434:251 435:253 436:253 437:12 461:106 462:253 463:253 464:253 465:8 488:24 489:238 490:253 491:253 492:253 493:8 516:27 517:253 518:253 519:253 520:253 521:8 544:27 545:253 546:253 547:253 548:253 549:8 572:27 573:253 574:253 575:253 576:177 577:4 600:160 601:253 602:253 603:253 604:87 628:202 629:253 630:253 631:219 632:54 656:81 657:253 658:247 659:51 -0 122:63 123:176 124:253 125:253 126:159 127:113 128:63 150:140 151:253 152:252 153:252 154:252 155:252 156:241 157:100 158:66 177:54 178:227 179:253 180:252 181:252 182:252 183:252 184:253 185:252 186:239 187:181 188:57 204:38 205:224 206:252 207:253 208:226 209:246 210:252 211:252 212:253 213:252 214:252 215:252 216:252 217:108 218:3 232:57 233:252 234:252 235:253 236:27 237:88 238:112 239:112 240:112 241:112 242:142 243:252 244:252 245:253 246:152 247:31 260:198 261:253 262:253 263:79 270:32 271:153 272:253 273:255 274:253 275:196 287:76 288:246 289:252 290:127 299:3 300:106 301:253 302:252 303:214 304:28 315:194 316:252 317:252 318:112 329:143 330:252 331:252 332:193 343:225 344:252 345:217 346:37 357:38 358:234 359:252 360:223 370:63 371:240 372:252 373:84 386:146 387:252 388:223 398:114 399:253 400:228 401:47 414:147 415:253 416:253 417:112 426:159 427:252 428:195 442:225 443:252 444:252 445:112 454:253 455:252 456:195 470:225 471:252 472:230 473:25 482:159 483:252 484:202 485:10 497:92 498:243 499:252 500:208 510:113 511:252 512:252 513:161 524:79 525:253 526:252 527:220 528:37 538:114 539:253 540:253 541:253 542:174 543:63 550:26 551:128 552:253 553:255 554:253 555:133 566:12 567:228 568:252 569:252 570:252 571:241 572:100 573:85 574:76 576:85 577:131 578:231 579:252 580:252 581:253 582:129 583:6 595:97 596:208 597:252 598:252 599:253 600:252 601:252 602:246 603:197 604:253 605:252 606:252 607:252 608:220 609:133 610:6 624:19 625:99 626:239 627:253 628:252 629:252 630:252 631:252 632:253 633:252 634:245 635:223 636:99 654:63 655:112 656:112 657:221 658:252 659:252 660:253 661:127 662:87 -0 153:12 154:136 155:254 156:255 157:195 158:115 159:3 180:6 181:175 182:253 183:196 184:160 185:252 186:253 187:15 208:130 209:253 210:234 211:4 213:27 214:205 215:232 216:40 235:54 236:246 237:253 238:68 242:24 243:243 244:106 262:3 263:134 264:235 265:99 266:4 271:132 272:247 273:77 290:56 291:253 292:62 299:23 300:233 301:129 318:179 319:183 320:4 328:182 329:220 345:21 346:232 347:59 356:95 357:232 358:21 373:128 374:183 385:228 386:85 401:187 402:124 413:228 414:186 429:187 430:124 441:228 442:104 457:187 458:124 469:169 470:184 485:187 486:124 497:203 498:150 513:187 514:124 524:10 525:220 526:39 541:187 542:155 552:111 553:201 569:129 570:228 571:7 579:12 580:181 581:76 598:234 599:166 600:9 606:24 607:209 608:106 626:139 627:250 628:167 629:11 630:2 631:11 632:11 633:129 634:227 635:90 636:11 655:95 656:247 657:253 658:178 659:253 660:253 661:244 662:86 684:47 685:175 686:253 687:232 688:149 689:40 -1 128:255 129:253 130:57 156:253 157:251 158:225 159:56 183:169 184:254 185:253 186:254 187:84 211:168 212:253 213:251 214:253 215:83 238:85 239:253 240:254 241:253 242:169 266:85 267:251 268:253 269:251 270:56 294:141 295:253 296:254 297:253 322:253 323:251 324:253 325:251 350:254 351:253 352:254 353:253 378:253 379:251 380:253 381:251 406:254 407:253 408:254 409:196 433:114 434:253 435:251 436:253 437:83 461:169 462:254 463:253 464:226 465:56 489:168 490:253 491:251 492:168 516:85 517:253 518:254 519:253 544:85 545:251 546:253 547:251 572:254 573:253 574:254 575:253 600:253 601:251 602:253 603:251 628:254 629:253 630:254 631:253 656:139 657:251 658:253 659:138 -0 151:23 152:167 153:208 154:254 155:255 156:129 157:19 179:151 180:253 181:253 182:253 183:253 184:253 185:209 186:26 207:181 208:253 209:253 210:253 211:227 212:181 213:253 214:207 215:22 235:227 236:253 237:253 238:253 239:92 240:38 241:226 242:253 243:129 244:2 263:193 264:253 265:253 266:248 267:62 269:50 270:253 271:253 272:45 291:170 292:253 293:253 294:135 297:12 298:208 299:253 300:119 318:16 319:232 320:253 321:253 322:21 326:60 327:253 328:185 346:164 347:253 348:253 349:224 350:14 354:14 355:217 356:247 357:62 373:3 374:193 375:253 376:250 377:64 383:199 384:253 385:179 401:67 402:253 403:253 404:205 411:98 412:253 413:188 429:151 430:253 431:245 432:43 439:63 440:250 441:188 457:151 458:253 459:243 468:244 469:222 470:22 485:151 486:253 487:217 496:244 497:253 498:115 512:3 513:195 514:253 515:134 524:156 525:253 526:150 541:140 542:253 543:134 552:239 553:253 554:139 569:44 570:253 571:134 579:53 580:246 581:237 582:32 597:8 598:200 599:229 600:40 606:25 607:225 608:253 609:188 626:120 627:250 628:230 629:58 630:17 632:12 633:42 634:213 635:253 636:238 637:84 655:151 656:253 657:253 658:217 659:179 660:206 661:253 662:253 663:196 664:118 683:18 684:58 685:145 686:152 687:253 688:214 689:145 690:74 691:7 -1 130:24 131:150 132:233 133:38 156:14 157:89 158:253 159:254 160:254 161:71 183:78 184:203 185:254 186:254 187:254 188:232 189:77 190:54 191:8 209:12 210:155 211:240 212:254 213:223 214:76 215:254 216:254 217:254 218:254 219:68 235:3 236:101 237:216 238:254 239:227 240:122 241:26 242:110 243:254 244:254 245:254 246:184 247:100 262:46 263:222 264:254 265:254 266:179 267:48 270:181 271:254 272:254 273:146 274:6 288:2 289:145 290:248 291:254 292:182 293:111 294:4 297:3 298:250 299:254 300:206 301:3 315:6 316:144 317:254 318:254 319:171 325:125 326:254 327:252 328:80 342:6 343:142 344:254 345:179 346:95 347:4 352:61 353:246 354:254 355:150 370:64 371:254 372:177 373:14 380:124 381:254 382:246 383:32 398:108 399:97 400:15 407:24 408:226 409:254 410:116 435:177 436:255 437:254 438:5 463:196 464:254 465:99 466:1 490:3 491:199 492:254 493:79 518:129 519:254 520:254 521:23 546:178 547:254 548:192 549:8 550:3 551:43 573:11 574:198 575:254 576:128 577:66 578:130 579:225 595:137 596:202 597:106 598:84 599:84 600:84 601:112 602:254 603:254 604:254 605:254 606:212 607:151 623:172 624:254 625:254 626:254 627:254 628:254 629:254 630:254 631:254 632:254 633:162 634:75 651:12 652:106 653:177 654:254 655:254 656:254 657:235 658:135 659:100 660:17 661:2 -0 125:120 126:253 127:253 128:63 151:38 152:131 153:246 154:252 155:252 156:203 157:15 179:222 180:252 181:252 182:252 183:252 184:166 185:38 205:4 206:107 207:253 208:252 209:252 210:252 211:252 212:253 213:224 214:137 215:26 233:107 234:252 235:253 236:252 237:220 238:128 239:252 240:253 241:252 242:252 243:239 244:140 261:170 262:253 263:255 264:168 267:79 268:192 269:253 270:253 271:253 272:253 273:255 274:90 288:51 289:243 290:252 291:215 292:33 296:12 297:74 298:233 299:252 300:252 301:253 302:195 303:19 316:166 317:252 318:252 319:31 326:43 327:149 328:195 329:253 330:252 331:177 332:19 343:57 344:234 345:252 346:252 357:237 358:252 359:252 360:180 361:13 371:85 372:252 373:252 374:173 385:50 386:237 387:252 388:252 389:112 399:226 400:253 401:240 402:63 414:163 415:253 416:253 417:112 426:38 427:234 428:252 429:176 442:85 443:252 444:252 445:158 454:113 455:252 456:252 457:84 470:19 471:209 472:252 473:252 482:207 483:252 484:252 485:84 498:10 499:203 500:252 501:236 510:253 511:252 512:252 513:84 526:85 527:252 528:252 529:112 538:114 539:253 540:253 541:146 553:51 554:159 555:253 556:240 557:63 566:75 567:243 568:252 569:249 570:146 579:57 580:85 581:238 582:252 583:252 584:99 595:116 596:252 597:252 598:252 599:198 600:197 601:165 602:57 603:57 604:57 605:182 606:197 607:234 608:252 609:253 610:233 611:164 612:19 623:28 624:84 625:180 626:252 627:253 628:252 629:252 630:252 631:252 632:253 633:252 634:252 635:252 636:252 637:225 638:71 653:13 654:112 655:253 656:252 657:252 658:252 659:252 660:253 661:252 662:252 663:157 664:112 -1 127:155 128:253 129:126 155:253 156:251 157:141 158:4 183:253 184:251 185:251 186:31 211:253 212:251 213:251 214:31 239:253 240:251 241:251 242:31 267:255 268:253 269:253 270:31 293:8 294:131 295:253 296:251 297:235 298:27 321:64 322:251 323:253 324:251 325:126 349:64 350:251 351:253 352:251 353:126 377:64 378:251 379:253 380:251 381:126 405:64 406:253 407:255 408:221 433:182 434:251 435:253 436:200 460:64 461:236 462:251 463:253 464:62 487:8 488:158 489:251 490:251 491:169 492:8 515:32 516:251 517:251 518:251 519:158 543:32 544:253 545:253 546:253 547:159 571:32 572:251 573:251 574:251 575:39 599:32 600:251 601:251 602:251 627:32 628:251 629:251 630:251 631:100 655:32 656:251 657:251 658:251 -0 101:88 102:127 103:5 126:19 127:58 128:20 129:14 130:217 131:19 152:7 153:146 154:247 155:253 156:235 157:27 158:84 159:81 180:126 181:253 182:164 183:19 184:15 187:156 188:9 208:214 209:222 210:34 215:234 216:58 235:59 236:254 237:116 243:235 244:58 263:141 264:251 265:72 271:151 272:140 291:224 292:233 299:136 300:223 319:254 320:218 327:136 328:253 347:254 348:135 355:136 356:253 374:23 375:255 376:114 383:137 384:231 402:98 403:254 404:122 411:136 412:155 430:98 431:254 432:106 439:166 440:155 458:98 459:254 460:128 467:234 468:193 486:98 487:254 488:135 494:61 495:248 496:118 515:255 516:238 517:18 521:13 522:224 523:254 524:58 543:201 544:253 545:128 546:2 548:5 549:150 550:253 551:167 552:9 571:18 572:226 573:253 574:49 575:31 576:156 577:253 578:228 579:13 600:147 601:253 602:243 603:241 604:254 605:227 606:43 628:5 629:126 630:245 631:253 632:231 633:46 -0 127:37 128:141 129:156 130:156 131:194 132:194 133:47 153:11 154:132 155:239 156:253 157:253 158:253 159:253 160:254 161:181 180:25 181:172 182:253 183:235 184:167 185:78 186:93 187:174 188:254 189:247 190:54 207:26 208:210 209:253 210:237 211:90 216:201 217:253 218:78 235:192 236:253 237:237 238:58 244:156 245:253 246:78 262:141 263:254 264:235 265:53 269:19 270:5 272:156 273:254 274:78 289:46 290:254 291:253 292:92 296:17 297:226 298:217 299:49 300:148 301:253 302:78 317:165 318:254 319:239 320:24 324:20 325:253 326:253 327:58 328:18 329:115 330:24 344:37 345:248 346:254 347:91 352:2 353:117 354:250 355:163 356:91 372:77 373:253 374:254 375:39 382:196 383:253 384:173 400:159 401:254 402:218 403:15 410:77 411:254 412:255 413:61 428:234 429:253 430:113 438:21 439:226 440:254 441:135 455:25 456:240 457:253 458:68 467:195 468:254 469:135 483:79 484:253 485:253 495:195 496:254 497:135 511:79 512:253 513:253 514:76 523:195 524:254 525:99 540:212 541:254 542:209 543:9 550:10 551:209 552:196 553:15 568:54 569:253 570:254 571:137 572:36 576:2 577:20 578:168 579:253 580:60 596:28 597:235 598:254 599:253 600:199 601:124 602:79 603:79 604:167 605:253 606:253 607:185 608:30 625:15 626:117 627:217 628:253 629:253 630:253 631:254 632:253 633:240 634:109 635:12 655:27 656:126 657:208 658:253 659:193 660:147 661:40 -0 154:32 155:134 156:218 157:254 158:254 159:254 160:217 161:84 176:44 177:208 178:215 179:156 180:35 181:119 182:236 183:246 184:136 185:91 186:69 187:151 188:249 189:246 190:78 203:44 204:230 205:254 206:254 207:254 208:254 209:254 210:196 211:48 216:60 217:224 218:210 219:24 231:118 232:254 233:202 234:19 235:201 236:254 237:181 238:9 245:35 246:233 247:168 259:193 260:223 261:34 263:59 264:163 265:236 266:15 274:140 275:205 276:8 286:60 287:254 288:176 293:38 302:54 303:237 304:80 314:59 315:254 316:93 331:131 332:200 342:59 343:240 344:24 359:79 360:214 370:59 371:234 387:67 388:248 389:54 398:59 399:234 416:235 417:58 426:60 427:235 443:79 444:255 445:59 454:59 455:251 456:66 471:79 472:250 473:54 482:59 483:254 484:108 499:146 500:214 510:5 511:203 512:187 513:3 526:4 527:188 528:199 539:118 540:254 541:57 554:96 555:254 556:117 567:16 568:237 569:224 570:14 581:14 582:187 583:206 584:8 596:88 597:252 598:186 599:16 608:16 609:187 610:252 611:125 625:100 626:254 627:237 628:94 629:24 635:13 636:214 637:254 638:166 653:3 654:57 655:215 656:248 657:241 658:235 659:197 660:137 661:137 662:137 663:231 664:238 665:155 666:25 684:57 685:155 686:246 687:254 688:254 689:254 690:254 691:147 692:36 -1 124:102 125:252 126:252 127:41 152:102 153:250 154:250 155:202 180:102 181:250 182:250 183:232 184:91 208:102 209:250 210:250 211:212 212:29 236:102 237:252 238:252 239:254 240:150 264:102 265:250 266:250 267:252 268:149 292:102 293:250 294:250 295:252 296:149 320:102 321:250 322:250 323:252 324:231 325:80 349:152 350:252 351:254 352:252 353:100 377:151 378:250 379:252 380:250 381:100 405:151 406:250 407:252 408:250 409:100 433:151 434:250 435:252 436:250 437:100 461:123 462:243 463:254 464:252 465:100 490:202 491:252 492:250 493:100 518:80 519:252 520:250 521:190 522:30 547:252 548:250 549:250 550:49 575:255 576:252 577:252 578:252 579:214 580:31 603:171 604:250 605:250 606:250 607:252 608:190 609:40 631:20 632:160 633:250 634:250 635:252 636:250 637:100 660:20 661:170 662:250 663:212 664:49 665:20 -0 124:20 125:121 126:197 127:253 128:64 151:23 152:200 153:252 154:252 155:252 156:184 157:6 178:25 179:197 180:252 181:252 182:252 183:252 184:253 185:228 186:107 187:15 205:26 206:196 207:252 208:252 209:252 210:252 211:252 212:253 213:252 214:252 215:219 216:178 217:21 233:186 234:252 235:238 236:94 237:67 238:224 239:217 240:53 241:109 242:245 243:252 244:252 245:213 246:63 260:98 261:242 262:252 263:101 266:39 267:31 270:109 271:128 272:241 273:252 274:207 275:97 287:17 288:230 289:252 290:241 291:56 300:109 301:252 302:252 303:229 304:17 314:13 315:192 316:252 317:243 318:96 328:25 329:127 330:252 331:252 332:120 342:121 343:252 344:252 345:165 357:125 358:252 359:252 360:246 361:70 370:190 371:252 372:252 373:39 385:26 386:210 387:252 388:252 389:119 398:255 399:253 400:159 414:22 415:209 416:253 417:183 426:253 427:252 428:103 443:34 444:252 445:252 454:253 455:252 456:26 471:27 472:252 473:252 482:253 483:252 484:168 485:13 499:70 500:252 501:209 510:147 511:252 512:252 513:75 526:68 527:233 528:252 529:119 538:121 539:252 540:252 541:189 542:40 552:15 553:82 554:231 555:252 556:214 557:31 566:38 567:135 568:248 569:252 570:231 571:145 572:41 573:41 574:41 575:41 576:20 577:24 578:37 579:83 580:194 581:252 582:252 583:212 584:33 596:83 597:213 598:252 599:252 600:252 601:252 602:252 603:252 604:204 605:213 606:243 607:252 608:252 609:252 610:212 611:34 625:34 626:140 627:238 628:248 629:252 630:252 631:252 632:253 633:252 634:252 635:241 636:238 637:238 638:75 656:82 657:119 658:119 659:119 660:120 661:119 662:119 663:19 -1 127:20 128:254 129:255 130:37 155:19 156:253 157:253 158:134 183:19 184:253 185:253 186:246 187:125 211:76 212:253 213:253 214:253 215:158 239:207 240:253 241:253 242:253 243:158 267:207 268:253 269:253 270:253 271:158 294:48 295:223 296:253 297:253 298:243 299:106 322:141 323:253 324:253 325:253 326:113 349:65 350:237 351:253 352:253 353:253 354:36 377:76 378:253 379:253 380:253 381:253 382:36 405:76 406:253 407:253 408:253 409:253 410:36 433:76 434:253 435:253 436:253 437:118 438:4 460:4 461:148 462:253 463:253 464:253 465:103 488:10 489:253 490:253 491:253 492:253 493:103 516:10 517:253 518:253 519:253 520:173 521:7 544:10 545:253 546:253 547:253 548:168 572:143 573:253 574:253 575:239 576:49 600:198 601:253 602:253 603:234 615:140 628:198 629:253 630:253 631:234 656:198 657:253 658:253 659:234 -0 235:40 236:37 238:7 239:77 240:137 241:136 242:136 243:136 244:136 245:40 246:6 261:16 262:135 263:254 264:233 266:152 267:215 268:96 269:140 270:155 271:118 272:230 273:254 274:158 275:68 288:19 289:164 290:254 291:114 294:235 295:140 301:99 302:230 303:254 304:186 305:14 315:70 316:226 317:242 318:121 322:104 323:195 324:38 330:33 331:179 332:253 333:140 342:41 343:241 344:198 345:43 359:24 360:209 361:223 370:164 371:250 372:66 388:136 389:253 398:254 399:158 416:136 417:215 426:255 427:76 442:5 443:127 444:246 445:133 454:254 455:122 469:5 470:150 471:247 472:91 473:9 482:254 483:165 495:13 496:79 497:194 498:216 499:84 510:111 511:251 512:87 519:16 520:25 521:40 522:107 523:186 524:213 525:117 526:25 538:14 539:185 540:235 541:142 542:23 546:91 547:157 548:231 549:207 550:126 551:49 569:143 570:195 571:255 572:254 573:254 574:244 575:157 576:76 599:39 600:39 601:39 602:33 -1 128:166 129:255 130:187 131:6 156:165 157:253 158:253 159:13 183:15 184:191 185:253 186:253 187:13 211:49 212:253 213:253 214:253 215:13 239:141 240:253 241:253 242:169 243:4 266:4 267:189 268:253 269:249 270:53 294:69 295:253 296:253 297:246 322:69 323:253 324:253 325:246 350:118 351:253 352:253 353:124 378:206 379:253 380:231 381:21 405:66 406:241 407:253 408:199 433:105 434:253 435:253 436:89 460:3 461:228 462:253 463:252 464:86 488:111 489:253 490:253 491:205 516:166 517:253 518:253 519:75 543:43 544:249 545:253 546:193 547:9 570:4 571:160 572:253 573:253 574:184 598:37 599:253 600:253 601:253 602:88 626:140 627:253 628:253 629:186 630:18 654:14 655:253 656:253 657:27 -1 128:117 129:128 155:2 156:199 157:127 183:81 184:254 185:87 211:116 212:254 213:48 239:175 240:234 241:18 266:5 267:230 268:168 294:80 295:255 296:142 322:80 323:255 324:142 350:80 351:251 352:57 378:129 379:239 406:164 407:209 433:28 434:245 435:159 461:64 462:254 463:144 489:84 490:254 491:80 517:143 518:254 519:30 544:3 545:225 546:200 572:48 573:254 574:174 600:48 601:254 602:174 628:93 629:254 630:129 656:53 657:234 658:41 -1 129:159 130:142 156:11 157:220 158:141 184:78 185:254 186:141 212:111 213:254 214:109 240:196 241:221 242:15 267:26 268:221 269:159 295:63 296:254 297:159 323:178 324:254 325:93 350:7 351:191 352:254 353:97 378:42 379:255 380:254 381:41 406:42 407:254 408:195 409:10 434:141 435:255 436:78 461:11 462:202 463:254 464:59 489:86 490:254 491:254 492:59 517:142 518:254 519:248 520:52 545:142 546:254 547:195 573:142 574:254 575:164 601:142 602:254 603:77 629:142 630:254 631:131 657:77 658:172 659:5 -0 124:66 125:254 126:254 127:58 128:60 129:59 130:59 131:50 151:73 152:233 153:253 154:253 155:148 156:254 157:253 158:253 159:232 160:73 179:156 180:253 181:253 182:253 183:117 184:255 185:253 186:253 187:253 188:223 189:176 190:162 205:37 206:116 207:246 208:253 209:180 210:18 211:4 212:18 213:109 214:241 215:253 216:253 217:253 218:236 219:28 233:235 234:253 235:253 236:245 237:107 242:109 243:170 244:253 245:253 246:253 247:174 261:235 262:253 263:253 264:233 271:15 272:156 273:253 274:253 275:223 276:72 287:10 288:156 289:250 290:253 291:253 292:67 300:99 301:253 302:253 303:253 304:127 305:5 315:118 316:253 317:253 318:253 319:204 320:26 328:68 329:223 330:253 331:253 332:253 333:57 342:32 343:191 344:253 345:253 346:253 347:97 357:156 358:253 359:253 360:253 361:57 370:59 371:253 372:253 373:253 374:253 375:97 385:36 386:224 387:253 388:253 389:57 398:60 399:254 400:255 401:254 402:156 413:37 414:226 415:254 416:254 417:58 426:59 427:253 428:253 429:253 430:154 441:156 442:253 443:253 444:253 445:57 454:59 455:253 456:253 457:253 458:154 469:156 470:253 471:253 472:253 473:57 482:59 483:253 484:253 485:253 486:246 487:90 496:16 497:171 498:253 499:253 500:231 501:49 510:59 511:253 512:253 513:253 514:253 515:156 516:91 524:99 525:253 526:253 527:222 528:71 538:59 539:253 540:253 541:253 542:253 543:253 544:245 545:109 551:145 552:194 553:253 554:253 555:174 566:9 567:38 568:174 569:251 570:253 571:253 572:253 573:241 574:215 575:215 576:217 577:215 578:215 579:250 580:253 581:253 582:221 583:26 597:235 598:253 599:253 600:253 601:253 602:253 603:253 604:254 605:253 606:253 607:253 608:253 609:204 610:26 625:108 626:116 627:200 628:253 629:253 630:253 631:253 632:254 633:253 634:253 635:253 636:199 637:44 655:36 656:57 657:118 658:253 659:253 660:58 661:57 662:57 663:57 664:35 -1 129:101 130:222 131:84 157:225 158:252 159:84 184:89 185:246 186:208 187:19 212:128 213:252 214:195 239:79 240:253 241:252 242:195 267:141 268:255 269:253 270:133 294:26 295:240 296:253 297:252 298:55 322:60 323:252 324:253 325:154 326:12 349:7 350:178 351:252 352:253 353:27 377:57 378:252 379:252 380:253 381:27 405:57 406:253 407:253 408:204 409:15 433:104 434:252 435:252 436:94 460:19 461:209 462:252 463:252 488:101 489:252 490:252 491:157 516:225 517:252 518:252 519:112 544:226 545:253 546:240 547:63 572:225 573:252 574:223 600:225 601:252 602:223 628:225 629:252 630:242 631:75 656:146 657:252 658:236 659:50 -0 124:41 125:254 126:254 127:157 128:34 129:34 130:218 131:255 132:206 133:34 134:18 151:53 152:238 153:252 154:252 155:252 156:252 157:252 158:252 159:252 160:252 161:252 162:162 163:26 178:66 179:220 180:252 181:252 182:252 183:209 184:153 185:223 186:252 187:252 188:252 189:252 190:252 191:98 206:166 207:252 208:252 209:252 210:252 211:141 213:85 214:230 215:252 216:252 217:252 218:252 219:98 234:166 235:252 236:252 237:252 238:252 239:141 242:73 243:102 244:252 245:252 246:252 247:98 262:166 263:252 264:252 265:252 266:191 267:30 271:5 272:97 273:252 274:252 275:220 276:51 289:123 290:245 291:252 292:252 293:202 294:14 300:56 301:252 302:252 303:252 304:65 316:18 317:154 318:252 319:252 320:241 328:56 329:252 330:252 331:252 332:65 343:21 344:146 345:252 346:252 347:252 348:241 356:56 357:252 358:252 359:252 360:65 371:67 372:252 373:252 374:252 375:252 376:241 384:56 385:252 386:252 387:252 388:65 399:67 400:252 401:252 402:252 403:252 404:116 412:56 413:252 414:252 415:252 416:65 427:67 428:252 429:252 430:252 431:252 432:20 440:56 441:252 442:252 443:252 444:65 455:67 456:252 457:252 458:252 459:87 460:4 468:56 469:252 470:252 471:124 472:11 483:67 484:252 485:252 486:252 487:54 494:19 495:236 496:245 497:252 498:252 499:98 511:67 512:252 513:252 514:252 515:97 516:5 521:39 522:219 523:252 524:252 525:252 526:252 527:98 539:67 540:252 541:252 542:252 543:252 544:102 545:89 546:89 547:89 548:89 549:203 550:252 551:252 552:252 553:252 554:209 555:64 567:67 568:252 569:252 570:252 571:252 572:252 573:252 574:252 575:252 576:252 577:252 578:252 579:252 580:226 581:130 582:68 595:67 596:252 597:252 598:252 599:252 600:252 601:252 602:252 603:252 604:252 605:252 606:252 607:239 608:77 623:17 624:65 625:163 626:252 627:252 628:252 629:252 630:252 631:252 632:252 633:252 634:96 635:59 653:17 654:176 655:252 656:252 657:252 658:252 659:155 660:32 661:32 662:6 -0 96:56 97:247 98:121 124:24 125:242 126:245 127:122 153:231 154:253 155:253 156:104 157:12 181:90 182:253 183:253 184:254 185:221 186:120 187:120 188:85 206:67 207:75 208:36 209:11 210:56 211:222 212:254 213:253 214:253 215:253 216:245 217:207 218:36 233:86 234:245 235:249 236:105 239:44 240:224 241:230 242:253 243:253 244:253 245:253 246:214 247:10 260:8 261:191 262:253 263:143 269:29 270:119 271:119 272:158 273:253 274:253 275:94 288:15 289:253 290:226 291:48 300:4 301:183 302:253 303:248 304:56 316:42 317:253 318:178 329:179 330:253 331:184 332:14 344:164 345:253 346:178 357:179 358:253 359:163 371:61 372:254 373:254 374:179 384:76 385:254 386:254 387:164 399:60 400:253 401:253 402:178 411:29 412:206 413:253 414:253 415:40 427:60 428:253 429:253 430:178 439:120 440:253 441:253 442:245 443:13 455:60 456:253 457:253 458:178 467:120 468:253 469:239 470:63 483:60 484:253 485:253 486:178 494:14 495:238 496:253 497:179 511:18 512:190 513:253 514:231 515:70 521:43 522:184 523:253 524:253 525:74 540:86 541:253 542:253 543:239 544:134 545:8 548:56 549:163 550:253 551:253 552:213 553:35 568:16 569:253 570:253 571:253 572:253 573:240 574:239 575:239 576:247 577:253 578:253 579:210 580:27 596:4 597:59 598:204 599:253 600:253 601:253 602:253 603:253 604:254 605:253 606:250 607:110 626:31 627:122 628:253 629:253 630:253 631:253 632:255 633:217 634:98 -0 125:19 126:164 127:253 128:255 129:253 130:118 131:59 132:36 153:78 154:251 155:251 156:253 157:251 158:251 159:251 160:199 161:45 180:14 181:198 182:251 183:251 184:253 185:251 186:251 187:251 188:251 189:204 190:26 208:5 209:117 210:251 211:251 212:243 213:212 214:239 215:251 216:251 217:251 218:218 236:95 237:251 238:251 239:251 240:120 242:175 243:251 244:251 245:251 246:231 263:97 264:237 265:251 266:251 267:251 270:67 271:240 272:251 273:251 274:243 275:108 290:8 291:163 292:251 293:251 294:240 295:81 299:68 300:251 301:251 302:251 303:179 304:9 317:13 318:145 319:251 320:251 321:226 322:80 327:39 328:251 329:251 330:251 331:251 332:115 345:144 346:251 347:251 348:251 349:173 355:18 356:167 357:251 358:251 359:251 360:115 373:233 374:251 375:251 376:251 377:173 384:98 385:251 386:251 387:251 388:115 400:176 401:253 402:253 403:216 404:179 412:99 413:253 414:253 415:253 416:116 427:55 428:210 429:251 430:251 431:96 440:98 441:251 442:251 443:214 444:62 455:117 456:251 457:251 458:251 459:96 467:28 468:204 469:251 470:237 471:53 482:55 483:241 484:251 485:251 486:160 487:7 494:28 495:222 496:251 497:251 498:231 510:59 511:251 512:251 513:251 514:153 520:23 521:98 522:204 523:251 524:251 525:251 526:156 538:59 539:251 540:251 541:251 542:153 546:85 547:155 548:179 549:251 550:251 551:251 552:251 553:154 554:15 566:59 567:251 568:251 569:251 570:236 571:214 572:214 573:214 574:234 575:251 576:253 577:251 578:251 579:248 580:156 581:15 594:41 595:209 596:251 597:251 598:251 599:251 600:251 601:251 602:251 603:251 604:253 605:251 606:196 607:146 623:54 624:115 625:241 626:251 627:251 628:251 629:251 630:251 631:251 632:253 633:187 634:35 653:83 654:251 655:251 656:251 657:251 658:251 659:101 660:57 661:31 -1 129:232 130:255 131:107 156:58 157:244 158:253 159:106 184:95 185:253 186:253 187:106 212:95 213:253 214:253 215:106 240:95 241:253 242:249 243:69 268:144 269:253 270:192 295:97 296:233 297:253 298:66 323:195 324:253 325:253 326:5 350:38 351:232 352:253 353:182 354:2 377:10 378:160 379:253 380:231 381:53 405:42 406:253 407:253 408:158 433:141 434:253 435:253 436:115 460:75 461:245 462:253 463:183 464:4 487:1 488:147 489:253 490:251 491:58 515:20 516:253 517:253 518:180 543:202 544:253 545:226 546:27 571:243 572:253 573:212 598:85 599:251 600:253 601:173 626:209 627:253 628:244 629:57 654:169 655:253 656:174 -1 127:63 128:128 129:2 155:63 156:254 157:123 183:63 184:254 185:179 211:63 212:254 213:179 239:63 240:254 241:179 267:142 268:254 269:179 295:187 296:254 297:158 323:187 324:254 325:55 350:68 351:235 352:254 353:55 378:181 379:254 380:254 381:55 406:181 407:254 408:202 409:14 434:181 435:254 436:186 462:181 463:254 464:146 490:181 491:254 492:62 518:181 519:254 520:62 546:181 547:254 548:62 574:181 575:255 576:62 602:181 603:254 604:241 605:52 630:181 631:254 632:222 633:30 658:181 659:224 660:34 -1 130:131 131:255 132:184 133:15 157:99 158:247 159:253 160:182 161:15 185:124 186:253 187:253 188:253 189:38 212:9 213:171 214:253 215:253 216:140 217:1 240:47 241:253 242:253 243:251 244:117 267:43 268:219 269:253 270:253 271:153 295:78 296:253 297:253 298:253 299:84 323:97 324:253 325:253 326:244 327:74 350:69 351:243 352:253 353:253 354:183 377:10 378:168 379:253 380:253 381:215 382:34 405:31 406:253 407:253 408:253 409:129 433:107 434:253 435:253 436:242 437:67 460:24 461:204 462:253 463:253 464:187 488:95 489:253 490:253 491:201 492:25 516:239 517:253 518:253 519:176 543:119 544:251 545:253 546:253 547:138 570:30 571:212 572:253 573:252 574:165 575:8 598:193 599:253 600:253 601:222 626:193 627:253 628:253 629:189 654:193 655:253 656:201 657:27 -0 125:57 126:255 127:253 128:198 129:85 153:168 154:253 155:251 156:253 157:251 158:169 159:56 180:86 181:253 182:254 183:253 184:254 185:253 186:254 187:253 188:57 208:197 209:251 210:253 211:251 212:253 213:251 214:253 215:251 216:225 217:56 235:169 236:255 237:253 238:226 239:56 241:114 242:254 243:253 244:254 245:84 262:57 263:224 264:253 265:251 266:56 270:139 271:251 272:253 273:83 290:141 291:253 292:255 293:84 298:57 299:225 300:254 301:196 318:253 319:251 320:253 321:83 327:168 328:253 329:83 345:169 346:254 347:253 348:169 355:169 356:254 357:253 358:169 373:168 374:253 375:251 376:56 383:168 384:253 385:251 386:56 401:169 402:254 403:84 412:254 413:253 429:168 430:253 431:83 440:253 441:251 456:29 457:197 458:254 459:84 467:169 468:254 469:196 484:85 485:251 486:253 487:83 494:57 495:224 496:253 497:83 512:57 513:225 514:254 515:139 521:57 522:141 523:253 524:254 525:84 541:168 542:253 543:251 544:169 545:56 547:114 548:169 549:224 550:253 551:251 552:253 553:83 569:169 570:254 571:253 572:254 573:253 574:254 575:253 576:254 577:253 578:254 579:253 580:226 581:56 597:56 598:253 599:251 600:253 601:251 602:253 603:251 604:253 605:251 606:253 607:251 608:56 626:169 627:225 628:254 629:253 630:254 631:253 632:254 633:253 634:226 635:56 655:56 656:253 657:251 658:253 659:251 660:84 661:83 662:56 -0 127:12 128:105 129:224 130:255 131:247 132:22 155:131 156:254 157:254 158:243 159:252 160:76 182:131 183:225 184:254 185:224 186:48 187:136 208:13 209:109 210:252 211:254 212:254 213:254 214:197 215:76 235:9 236:181 237:254 238:254 239:240 240:229 241:237 242:254 243:252 244:152 245:21 262:9 263:143 264:254 265:254 266:226 267:36 269:22 270:138 271:254 272:254 273:188 289:13 290:181 291:254 292:254 293:250 294:64 298:2 299:53 300:236 301:252 302:131 317:102 318:254 319:254 320:254 321:111 328:56 329:243 330:251 331:42 344:30 345:186 346:254 347:254 348:206 349:29 357:199 358:254 359:91 372:92 373:254 374:254 375:237 376:13 385:134 386:254 387:91 400:133 401:254 402:254 403:126 413:134 414:250 415:17 428:187 429:254 430:237 431:23 441:200 442:183 456:187 457:254 458:213 467:2 468:134 469:252 470:101 484:183 485:254 486:133 495:14 496:254 497:234 498:34 512:92 513:254 514:161 522:84 523:204 524:254 525:56 540:92 541:254 542:229 549:85 550:252 551:252 552:188 553:11 568:56 569:252 570:229 575:3 576:53 577:235 578:253 579:166 597:224 598:245 599:130 600:68 601:68 602:134 603:214 604:254 605:254 606:159 625:141 626:254 627:254 628:254 629:254 630:254 631:254 632:233 633:95 634:3 653:14 654:152 655:254 656:254 657:254 658:186 659:157 660:53 -1 130:226 131:247 132:55 157:99 158:248 159:254 160:230 161:30 185:125 186:254 187:254 188:254 189:38 213:125 214:254 215:254 216:212 217:24 240:18 241:223 242:254 243:252 244:118 268:24 269:254 270:254 271:239 295:27 296:195 297:254 298:254 299:93 323:78 324:254 325:254 326:246 327:74 351:158 352:254 353:254 354:185 378:41 379:239 380:254 381:254 382:43 405:22 406:218 407:254 408:254 409:167 410:9 433:32 434:254 435:254 436:254 437:130 460:24 461:187 462:254 463:254 464:234 465:16 488:189 489:254 490:254 491:254 492:128 515:64 516:247 517:254 518:255 519:219 520:42 543:139 544:254 545:254 546:222 547:40 570:30 571:213 572:254 573:235 574:45 598:194 599:254 600:254 601:223 626:194 627:254 628:254 629:190 654:194 655:254 656:202 657:27 -1 130:166 131:253 132:124 133:53 158:140 159:251 160:251 161:180 185:125 186:246 187:251 188:251 189:51 212:32 213:190 214:251 215:251 216:251 217:103 240:21 241:174 242:251 243:251 244:251 268:73 269:176 270:253 271:253 272:201 296:149 297:251 298:251 299:251 300:71 323:27 324:228 325:251 326:251 327:157 328:10 351:180 352:253 353:251 354:251 355:142 377:27 378:180 379:231 380:253 381:251 382:96 383:41 405:89 406:253 407:253 408:255 409:211 410:25 433:217 434:251 435:251 436:253 437:107 460:21 461:221 462:251 463:251 464:242 465:92 487:32 488:190 489:251 490:251 491:251 492:103 515:202 516:251 517:251 518:251 519:122 542:53 543:255 544:253 545:253 546:221 547:51 570:180 571:253 572:251 573:251 574:142 598:180 599:253 600:251 601:251 602:142 626:180 627:253 628:251 629:157 630:82 654:180 655:253 656:147 657:10 -1 129:17 130:206 131:229 132:44 157:2 158:125 159:254 160:123 185:95 186:254 187:254 188:123 212:78 213:240 214:254 215:254 216:123 240:100 241:254 242:254 243:254 244:123 267:2 268:129 269:254 270:254 271:220 272:20 295:9 296:254 297:254 298:254 299:123 322:22 323:179 324:254 325:254 326:254 327:49 350:83 351:254 352:254 353:254 354:183 355:19 378:136 379:254 380:254 381:254 382:139 404:3 405:111 406:252 407:254 408:254 409:232 410:45 432:67 433:254 434:254 435:254 436:216 437:40 459:14 460:192 461:254 462:254 463:254 464:140 486:23 487:192 488:254 489:254 490:254 491:246 514:77 515:254 516:254 517:255 518:241 519:100 541:65 542:235 543:254 544:254 545:254 546:172 568:30 569:238 570:254 571:254 572:254 573:219 574:26 596:34 597:254 598:254 599:254 600:216 601:41 624:34 625:254 626:254 627:254 628:188 652:12 653:170 654:254 655:254 656:82 -1 130:218 131:253 132:124 157:84 158:236 159:251 160:251 184:63 185:236 186:251 187:251 188:122 212:73 213:251 214:251 215:251 216:173 240:202 241:251 242:251 243:251 244:71 267:53 268:255 269:253 270:253 271:253 272:72 295:180 296:253 297:251 298:251 299:188 300:30 323:180 324:253 325:251 326:251 327:142 350:47 351:211 352:253 353:251 354:235 355:82 377:27 378:211 379:251 380:253 381:251 382:215 405:89 406:253 407:253 408:255 409:253 410:164 433:217 434:251 435:251 436:253 437:168 438:15 460:21 461:221 462:251 463:251 464:253 465:107 487:32 488:190 489:251 490:251 491:251 492:221 493:61 515:73 516:251 517:251 518:251 519:251 520:180 543:255 544:253 545:253 546:253 547:201 570:105 571:253 572:251 573:251 574:251 575:71 598:180 599:253 600:251 601:246 602:137 603:10 626:180 627:253 628:251 629:215 654:180 655:253 656:251 657:86 -1 124:102 125:180 126:1 152:140 153:254 154:130 180:140 181:254 182:204 208:140 209:254 210:204 236:72 237:254 238:204 264:25 265:231 266:250 267:135 292:11 293:211 294:254 295:222 321:101 322:254 323:250 324:15 349:96 350:254 351:254 352:95 377:2 378:251 379:254 380:95 405:2 406:251 407:254 408:95 433:96 434:254 435:254 436:95 461:53 462:253 463:254 464:139 490:250 491:254 492:235 493:27 518:201 519:254 520:254 521:128 546:80 547:254 548:254 549:139 574:65 575:254 576:254 577:139 602:150 603:254 604:254 605:139 630:229 631:254 632:254 633:43 658:52 659:196 660:168 661:9 -0 128:87 129:208 130:249 155:27 156:212 157:254 158:195 182:118 183:225 184:254 185:254 186:232 187:147 188:46 209:115 210:248 211:254 212:254 213:254 214:254 215:254 216:230 217:148 218:12 236:18 237:250 238:254 239:245 240:226 241:254 242:254 243:254 244:254 245:254 246:148 263:92 264:205 265:254 266:250 267:101 268:20 269:194 270:254 271:254 272:254 273:254 274:229 275:53 291:152 292:254 293:254 294:94 297:14 298:124 299:187 300:254 301:254 302:254 303:213 318:95 319:252 320:254 321:206 322:15 327:3 328:6 329:51 330:231 331:254 332:94 345:50 346:246 347:254 348:254 349:20 358:200 359:254 360:96 372:21 373:184 374:254 375:254 376:147 377:2 386:200 387:254 388:96 400:177 401:254 402:254 403:218 404:33 413:16 414:211 415:254 416:96 427:11 428:219 429:254 430:251 431:92 441:84 442:254 443:232 444:44 455:101 456:254 457:254 458:141 469:162 470:254 471:231 472:42 483:235 484:254 485:227 486:42 496:51 497:238 498:254 499:213 511:235 512:254 513:199 524:160 525:254 526:229 527:52 539:235 540:254 541:199 549:10 550:84 551:150 552:253 553:254 554:147 567:235 568:254 569:213 570:20 575:17 576:63 577:158 578:254 579:254 580:254 581:155 582:12 595:122 596:248 597:254 598:204 599:98 600:42 601:177 602:180 603:200 604:254 605:254 606:253 607:213 608:82 609:10 624:203 625:254 626:254 627:254 628:254 629:254 630:254 631:254 632:251 633:219 634:94 652:35 653:221 654:254 655:254 656:254 657:254 658:254 659:217 660:95 -1 126:134 127:230 154:133 155:231 156:10 182:133 183:253 184:96 210:133 211:253 212:96 238:133 239:253 240:183 266:133 267:253 268:217 294:133 295:253 296:217 322:133 323:253 324:217 350:133 351:253 352:217 378:133 379:253 380:217 406:134 407:254 408:218 434:133 435:253 436:159 462:133 463:253 464:199 490:156 491:253 492:96 518:254 519:247 520:73 546:254 547:248 548:74 573:99 574:254 575:245 576:64 600:89 601:230 602:254 603:125 627:140 628:251 629:253 630:243 631:10 655:114 656:242 657:195 658:69 -1 125:29 126:85 127:255 128:139 153:197 154:251 155:253 156:251 181:254 182:253 183:254 184:253 209:253 210:251 211:253 212:251 237:254 238:253 239:254 240:253 265:253 266:251 267:253 268:138 293:254 294:253 295:254 296:196 321:253 322:251 323:253 324:196 349:254 350:253 351:254 352:84 377:253 378:251 379:253 380:196 405:254 406:253 407:254 408:253 433:253 434:251 435:253 436:251 461:254 462:253 463:254 464:253 489:253 490:251 491:253 492:251 517:254 518:253 519:254 520:253 545:253 546:251 547:253 548:251 573:254 574:253 575:254 576:253 601:253 602:251 603:253 604:251 629:57 630:225 631:254 632:253 658:56 659:253 660:251 -1 125:149 126:255 127:254 128:58 153:215 154:253 155:183 156:2 180:41 181:232 182:253 183:181 208:92 209:253 210:253 211:181 236:92 237:253 238:253 239:181 264:92 265:253 266:253 267:181 292:92 293:253 294:253 295:181 320:92 321:253 322:253 323:181 348:92 349:253 350:253 351:181 376:92 377:253 378:253 379:181 404:92 405:253 406:253 407:181 432:92 433:253 434:253 435:181 460:92 461:253 462:253 463:181 488:31 489:228 490:253 491:181 517:198 518:253 519:228 520:54 545:33 546:226 547:253 548:195 549:7 574:199 575:253 576:253 577:75 602:34 603:218 604:253 605:228 606:117 607:14 608:12 631:33 632:219 633:253 634:253 635:253 636:211 660:32 661:123 662:149 663:230 664:41 -1 130:79 131:203 132:141 157:51 158:240 159:240 160:140 185:88 186:252 187:252 188:140 213:197 214:252 215:252 216:140 241:197 242:252 243:252 244:140 268:147 269:253 270:253 271:253 295:38 296:234 297:252 298:242 299:89 323:113 324:252 325:252 326:223 350:16 351:207 352:252 353:252 354:129 377:16 378:203 379:253 380:252 381:220 382:37 405:29 406:253 407:255 408:253 409:56 432:19 433:181 434:252 435:253 436:176 437:6 460:166 461:252 462:252 463:228 464:52 487:10 488:203 489:252 490:252 491:126 514:63 515:178 516:252 517:252 518:173 542:114 543:253 544:253 545:225 570:238 571:252 572:252 573:99 596:7 597:135 598:253 599:252 600:176 601:19 624:29 625:252 626:253 627:252 628:55 652:13 653:189 654:253 655:204 656:25 -1 126:94 127:254 128:75 154:166 155:253 156:231 182:208 183:253 184:147 210:208 211:253 212:116 238:208 239:253 240:168 266:146 267:254 268:222 294:166 295:253 296:116 322:208 323:253 324:116 350:166 351:253 352:158 378:145 379:253 380:231 406:209 407:254 408:169 434:187 435:253 436:168 462:93 463:253 464:116 490:93 491:253 492:116 518:93 519:253 520:116 546:94 547:254 548:179 549:11 574:93 575:253 576:246 577:101 602:145 603:253 604:255 605:92 630:93 631:253 632:246 633:59 658:93 659:253 660:74 -0 127:46 128:105 129:254 130:254 131:224 132:59 133:59 134:9 155:196 156:254 157:253 158:253 159:253 160:253 161:253 162:128 182:96 183:235 184:254 185:253 186:253 187:253 188:253 189:253 190:247 191:122 208:4 209:101 210:244 211:253 212:254 213:234 214:241 215:253 216:253 217:253 218:253 219:186 220:18 236:96 237:253 238:253 239:253 240:232 241:83 242:109 243:170 244:253 245:253 246:253 247:253 248:116 264:215 265:253 266:253 267:253 268:196 271:40 272:253 273:253 274:253 275:253 276:116 290:8 291:141 292:247 293:253 294:253 295:237 296:29 299:6 300:38 301:171 302:253 303:253 304:116 317:13 318:146 319:253 320:253 321:253 322:253 323:57 329:156 330:253 331:253 332:116 345:40 346:253 347:253 348:253 349:253 350:178 351:27 357:156 358:253 359:253 360:116 372:136 373:204 374:253 375:253 376:253 377:192 378:27 385:156 386:253 387:253 388:116 399:28 400:195 401:254 402:254 403:254 404:250 405:135 412:99 413:255 414:254 415:254 416:117 427:118 428:253 429:253 430:253 431:253 432:142 439:19 440:170 441:253 442:253 443:216 444:62 454:42 455:212 456:253 457:253 458:253 459:253 460:38 466:124 467:188 468:253 469:253 470:253 471:174 482:59 483:253 484:253 485:253 486:237 487:93 488:3 491:31 492:40 493:130 494:247 495:253 496:253 497:253 498:204 499:13 510:59 511:253 512:253 513:253 514:154 518:54 519:218 520:254 521:253 522:253 523:253 524:253 525:253 526:38 538:59 539:253 540:253 541:253 542:215 543:156 544:156 545:156 546:209 547:253 548:255 549:253 550:253 551:253 552:192 553:97 554:15 566:55 567:242 568:253 569:253 570:253 571:253 572:253 573:253 574:253 575:253 576:254 577:253 578:253 579:204 580:23 595:118 596:253 597:253 598:253 599:253 600:253 601:253 602:253 603:253 604:254 605:216 606:174 607:13 623:54 624:116 625:243 626:253 627:253 628:253 629:253 630:253 631:146 632:117 633:62 653:53 654:132 655:253 656:253 657:192 658:57 659:13 -1 125:42 126:232 127:254 128:58 153:86 154:253 155:253 156:58 181:86 182:253 183:253 184:58 209:206 210:253 211:253 212:58 237:215 238:253 239:253 240:58 265:215 266:253 267:253 268:58 293:215 294:253 295:253 296:58 321:215 322:253 323:253 324:58 349:215 350:253 351:253 352:58 377:215 378:253 379:253 380:58 405:215 406:253 407:253 408:58 433:188 434:253 435:253 436:85 461:86 462:253 463:253 464:200 465:12 489:29 490:223 491:253 492:253 493:151 518:209 519:253 520:253 521:194 546:128 547:253 548:253 549:200 550:8 574:32 575:213 576:253 577:253 578:152 579:6 603:32 604:221 605:253 606:253 607:153 608:5 632:90 633:215 634:253 635:253 636:151 661:59 662:253 663:253 664:84 -1 156:60 157:229 158:38 184:187 185:254 186:78 211:121 212:252 213:254 214:78 239:197 240:254 241:206 242:6 267:197 268:254 269:202 294:27 295:218 296:233 297:62 322:117 323:254 324:195 350:203 351:254 352:195 377:64 378:244 379:254 380:195 405:79 406:254 407:255 408:161 433:79 434:254 435:254 436:65 461:79 462:254 463:241 464:52 489:79 490:254 491:189 517:79 518:254 519:189 545:79 546:254 547:189 573:79 574:254 575:189 601:79 602:254 603:194 604:5 629:35 630:219 631:254 632:72 658:34 659:223 660:195 687:129 688:195 -1 101:11 102:150 103:72 129:37 130:251 131:71 157:63 158:251 159:71 185:217 186:251 187:71 213:217 214:251 215:71 240:145 241:253 242:253 243:72 267:42 268:206 269:251 270:251 271:71 295:99 296:251 297:251 298:251 299:71 323:253 324:251 325:251 326:251 327:71 350:130 351:253 352:251 353:251 354:251 355:71 377:110 378:253 379:255 380:253 381:253 382:253 383:72 405:109 406:251 407:253 408:251 409:251 410:188 411:30 433:109 434:251 435:253 436:251 437:246 438:123 460:16 461:170 462:251 463:253 464:251 465:215 488:37 489:251 490:251 491:253 492:251 493:86 516:218 517:253 518:253 519:255 520:253 521:35 543:84 544:236 545:251 546:251 547:253 548:168 549:15 571:144 572:251 573:251 574:251 575:190 576:15 599:144 600:251 601:251 602:251 603:180 626:53 627:221 628:251 629:251 630:251 631:180 -0 127:45 128:254 129:254 130:254 131:148 132:24 133:9 154:43 155:254 156:252 157:252 158:252 159:252 160:252 161:121 162:13 181:58 182:237 183:254 184:252 185:252 186:252 187:252 188:252 189:252 190:68 208:69 209:224 210:252 211:254 212:252 213:252 214:252 215:252 216:252 217:252 218:135 219:17 235:75 236:216 237:252 238:252 239:254 240:231 241:168 242:252 243:252 244:252 245:252 246:252 247:45 262:77 263:212 264:252 265:252 266:252 267:242 268:93 269:32 270:114 271:177 272:252 273:252 274:252 275:158 276:12 289:75 290:212 291:252 292:252 293:252 294:252 295:231 299:116 300:252 301:252 302:252 303:252 304:21 316:69 317:216 318:252 319:252 320:252 321:252 322:252 323:62 327:116 328:252 329:252 330:252 331:252 332:21 344:93 345:252 346:252 347:252 348:252 349:252 350:62 355:21 356:158 357:252 358:252 359:252 360:21 371:64 372:239 373:252 374:252 375:252 376:252 377:252 378:21 384:139 385:252 386:252 387:252 388:21 398:5 399:87 400:254 401:254 402:254 403:254 404:237 405:41 411:11 412:150 413:254 414:254 415:254 416:22 425:5 426:85 427:252 428:252 429:252 430:252 431:222 432:55 439:116 440:252 441:252 442:252 443:214 444:18 453:24 454:252 455:252 456:252 457:252 458:252 459:91 466:26 467:153 468:252 469:252 470:252 471:45 481:24 482:252 483:252 484:252 485:252 486:252 487:91 492:18 493:93 494:151 495:252 496:252 497:252 498:184 499:28 509:24 510:252 511:252 512:252 513:252 514:252 515:164 516:116 517:116 518:116 519:117 520:141 521:252 522:252 523:252 524:252 525:252 526:68 537:24 538:252 539:252 540:252 541:252 542:252 543:252 544:252 545:252 546:252 547:254 548:252 549:252 550:252 551:252 552:252 553:163 554:31 565:9 566:121 567:252 568:252 569:252 570:252 571:252 572:252 573:252 574:252 575:254 576:252 577:252 578:252 579:178 580:91 581:33 594:13 595:119 596:252 597:252 598:252 599:252 600:252 601:252 602:252 603:254 604:252 605:252 606:184 607:37 623:13 624:121 625:252 626:252 627:252 628:252 629:252 630:252 631:254 632:214 633:45 634:28 652:8 653:21 654:21 655:169 656:252 657:252 658:41 659:22 660:18 -0 125:218 126:253 127:253 128:255 129:149 130:62 151:42 152:144 153:236 154:251 155:251 156:253 157:251 158:236 159:144 160:144 179:99 180:251 181:251 182:251 183:225 184:253 185:251 186:251 187:251 188:251 189:166 190:16 206:79 207:253 208:251 209:251 210:204 211:41 212:143 213:205 214:251 215:251 216:251 217:253 218:169 219:15 233:79 234:231 235:253 236:251 237:225 238:41 241:41 242:226 243:251 244:251 245:253 246:251 247:164 260:37 261:253 262:253 263:255 264:253 265:35 271:79 272:232 273:255 274:253 275:227 276:42 288:140 289:251 290:251 291:253 292:168 293:15 300:77 301:253 302:251 303:251 304:142 315:21 316:221 317:251 318:251 319:164 320:15 329:227 330:251 331:251 332:236 333:61 342:32 343:190 344:251 345:251 346:251 357:73 358:251 359:251 360:251 361:71 370:73 371:251 372:251 373:251 374:251 385:73 386:251 387:251 388:251 389:71 398:73 399:253 400:253 401:253 402:201 413:73 414:253 415:253 416:253 417:72 426:176 427:251 428:251 429:251 430:71 441:73 442:251 443:251 444:251 445:71 454:253 455:251 456:251 457:157 458:10 469:73 470:251 471:251 472:251 473:71 482:253 483:251 484:251 485:142 497:150 498:251 499:251 500:204 501:41 510:124 511:251 512:251 513:220 514:180 524:130 525:253 526:251 527:225 528:41 538:73 539:253 540:253 541:253 542:253 543:73 544:73 545:10 549:42 550:73 551:150 552:253 553:255 554:253 555:216 566:31 567:189 568:251 569:251 570:251 571:253 572:251 573:159 574:144 575:144 576:145 577:206 578:251 579:251 580:251 581:253 582:168 583:92 595:20 596:195 597:251 598:251 599:253 600:251 601:251 602:251 603:251 604:253 605:251 606:251 607:251 608:225 609:164 610:15 624:21 625:142 626:220 627:253 628:251 629:251 630:251 631:251 632:253 633:251 634:251 635:204 636:41 654:51 655:72 656:174 657:251 658:251 659:251 660:253 661:147 662:71 663:41 -0 127:60 128:96 129:96 130:48 153:16 154:171 155:228 156:253 157:251 158:220 159:51 160:32 181:127 182:251 183:251 184:253 185:251 186:251 187:251 188:251 189:80 207:24 208:182 209:236 210:251 211:211 212:189 213:236 214:251 215:251 216:251 217:242 218:193 234:100 235:194 236:251 237:251 238:211 239:35 241:71 242:173 243:251 244:251 245:253 246:240 247:158 248:19 261:64 262:253 263:255 264:253 265:205 266:19 271:40 272:218 273:255 274:253 275:253 276:91 288:16 289:186 290:251 291:253 292:247 293:110 300:39 301:233 302:251 303:251 304:188 315:16 316:189 317:251 318:251 319:205 320:110 329:48 330:220 331:251 332:220 333:48 343:72 344:251 345:251 346:251 347:158 358:51 359:251 360:251 361:232 371:190 372:251 373:251 374:251 375:59 386:32 387:251 388:251 389:251 398:96 399:253 400:253 401:253 402:95 414:32 415:253 416:253 417:193 426:214 427:251 428:251 429:204 430:23 442:52 443:251 444:251 445:94 454:253 455:251 456:251 457:109 469:48 470:221 471:251 472:219 473:47 482:253 483:251 484:251 485:70 497:234 498:251 499:251 500:188 510:253 511:251 512:251 513:188 523:40 524:158 525:253 526:251 527:172 528:70 539:191 540:253 541:253 542:253 543:96 544:24 549:12 550:174 551:253 552:253 553:255 554:221 567:71 568:251 569:251 570:251 571:253 572:205 573:190 574:190 575:190 576:191 577:197 578:251 579:251 580:231 581:221 582:93 595:16 596:126 597:236 598:251 599:253 600:251 601:251 602:251 603:251 604:253 605:251 606:251 607:140 608:47 625:67 626:188 627:189 628:188 629:188 630:188 631:188 632:189 633:188 634:109 635:4 -0 126:32 127:202 128:255 129:253 130:253 131:175 132:21 152:84 153:144 154:190 155:251 156:253 157:251 158:251 159:251 160:174 176:6 177:37 178:166 179:218 180:236 181:251 182:251 183:251 184:253 185:251 186:251 187:251 188:251 189:156 204:115 205:251 206:251 207:253 208:251 209:251 210:251 211:251 212:253 213:251 214:251 215:251 216:251 217:180 231:105 232:241 233:251 234:251 235:253 236:251 237:251 238:251 239:122 240:72 241:71 242:71 243:148 244:251 245:180 258:73 259:253 260:253 261:253 262:253 263:202 264:253 265:253 266:143 286:31 287:189 288:251 289:251 290:251 291:31 292:189 293:251 294:142 314:63 315:236 316:251 317:251 318:96 320:124 321:246 322:142 330:21 331:166 332:21 342:73 343:251 344:251 345:251 346:71 349:217 350:142 357:32 358:190 359:251 360:142 370:73 371:251 372:251 373:251 374:71 377:217 378:142 385:73 386:251 387:251 388:142 398:73 399:253 400:253 401:253 402:72 405:156 406:103 413:73 414:253 415:253 416:253 417:72 426:73 427:251 428:251 429:251 430:174 441:73 442:251 443:251 444:251 445:71 454:73 455:251 456:251 457:251 458:251 469:73 470:251 471:251 472:251 473:71 482:42 483:205 484:251 485:251 486:251 487:79 497:73 498:251 499:251 500:251 501:71 511:41 512:226 513:251 514:251 515:232 516:77 525:73 526:251 527:251 528:251 529:71 540:166 541:253 542:253 543:255 544:253 545:227 546:73 547:21 553:125 554:253 555:253 556:143 568:16 569:169 570:251 571:253 572:251 573:251 574:251 575:174 576:105 579:63 580:144 581:253 582:251 583:251 584:142 597:15 598:35 599:253 600:251 601:251 602:251 603:251 604:243 605:217 606:217 607:231 608:251 609:253 610:251 611:220 612:20 627:143 628:142 629:236 630:251 631:251 632:253 633:251 634:251 635:251 636:251 637:253 638:251 639:137 657:61 658:71 659:200 660:253 661:251 662:251 663:251 664:251 665:201 666:71 667:10 -1 130:218 131:170 132:108 157:32 158:227 159:252 160:232 185:129 186:252 187:252 188:252 212:1 213:253 214:252 215:252 216:168 240:144 241:253 242:252 243:236 244:62 268:144 269:253 270:252 271:215 296:144 297:253 298:252 299:112 323:21 324:206 325:253 326:252 327:71 351:99 352:253 353:255 354:119 378:63 379:242 380:252 381:253 382:35 406:94 407:252 408:252 409:154 410:10 433:145 434:237 435:252 436:252 461:255 462:253 463:253 464:108 487:11 488:155 489:253 490:252 491:179 492:15 514:11 515:150 516:252 517:253 518:200 519:20 542:73 543:252 544:252 545:253 546:97 569:47 570:233 571:253 572:253 596:1 597:149 598:252 599:252 600:252 624:1 625:252 626:252 627:246 628:132 652:1 653:169 654:252 655:132 -1 130:116 131:255 132:123 157:29 158:213 159:253 160:122 185:189 186:253 187:253 188:122 213:189 214:253 215:253 216:122 241:189 242:253 243:253 244:122 267:2 268:114 269:243 270:253 271:186 272:19 295:100 296:253 297:253 298:253 299:48 323:172 324:253 325:253 326:253 327:48 351:172 352:253 353:253 354:182 355:19 378:133 379:251 380:253 381:175 382:4 405:107 406:251 407:253 408:253 409:65 432:26 433:194 434:253 435:253 436:214 437:40 459:105 460:205 461:253 462:253 463:125 464:40 487:139 488:253 489:253 490:253 491:81 514:41 515:231 516:253 517:253 518:159 519:16 541:65 542:155 543:253 544:253 545:172 546:4 569:124 570:253 571:253 572:253 573:98 597:124 598:253 599:253 600:214 601:41 624:22 625:207 626:253 627:253 628:139 653:124 654:253 655:162 656:9 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_linear_regression_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_linear_regression_data.txt deleted file mode 100755 index 9aaaa42..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_linear_regression_data.txt +++ /dev/null @@ -1,501 +0,0 @@ --9.490009878824548 1:0.4551273600657362 2:0.36644694351969087 3:-0.38256108933468047 4:-0.4458430198517267 5:0.33109790358914726 6:0.8067445293443565 7:-0.2624341731773887 8:-0.44850386111659524 9:-0.07269284838169332 10:0.5658035575800715 -0.2577820163584905 1:0.8386555657374337 2:-0.1270180511534269 3:0.499812362510895 4:-0.22686625128130267 5:-0.6452430441812433 6:0.18869982177936828 7:-0.5804648622673358 8:0.651931743775642 9:-0.6555641246242951 10:0.17485476357259122 --4.438869807456516 1:0.5025608135349202 2:0.14208069682973434 3:0.16004976900412138 4:0.505019897181302 5:-0.9371635223468384 6:-0.2841601610457427 7:0.6355938616712786 8:-0.1646249064941625 9:0.9480713629917628 10:0.42681251564645817 --19.782762789614537 1:-0.0388509668871313 2:-0.4166870051763918 3:0.8997202693189332 4:0.6409836467726933 5:0.273289095712564 6:-0.26175701211620517 7:-0.2794902492677298 8:-0.1306778297187794 9:-0.08536581111046115 10:-0.05462315824828923 --7.966593841555266 1:-0.06195495876886281 2:0.6546448480299902 3:-0.6979368909424835 4:0.6677324708883314 5:-0.07938725467767771 6:-0.43885601665437957 7:-0.608071585153688 8:-0.6414531182501653 9:0.7313735926547045 10:-0.026818676347611925 --7.896274316726144 1:-0.15805658673794265 2:0.26573958270655806 3:0.3997172901343442 4:-0.3693430998846541 5:0.14324061105995334 6:-0.25797542063247825 7:0.7436291919296774 8:0.6114618853239959 9:0.2324273700703574 10:-0.25128128782199144 --8.464803554195287 1:0.39449745853945895 2:0.817229160415142 3:-0.6077058562362969 4:0.6182496334554788 5:0.2558665508269453 6:-0.07320145794330979 7:-0.38884168866510227 8:0.07981886851873865 9:0.27022202891277614 10:-0.7474843534024693 -2.1214592666251364 1:-0.005346215048158909 2:-0.9453716674280683 3:-0.9270309666195007 4:-0.032312290091389695 5:0.31010676221964206 6:-0.20846743965751569 7:0.8803449313707621 8:-0.23077831216541722 9:0.29246395759528565 10:0.5409312755478819 -1.0720117616524107 1:0.7880855916368177 2:0.19767407429003536 3:0.9520689432368168 4:-0.845829774129496 5:0.5502413918543512 6:-0.44235539500246457 7:0.7984106594591154 8:-0.2523277127589152 9:-0.1373808897290778 10:-0.3353514432305029 --13.772441561702871 1:-0.3697050572653644 2:-0.11452811582755928 3:-0.807098168238352 4:0.4903066124307711 5:-0.6582805242342049 6:0.6107814398427647 7:-0.7204208094262783 8:-0.8141063661170889 9:-0.9459402662357332 10:0.09666938346350307 --5.082010756207233 1:-0.43560342773870375 2:0.9349906440170221 3:0.8090021580031235 4:-0.3121157071110545 5:-0.9718883630945336 6:0.6191882496201251 7:0.0429886073795116 8:0.670311110015402 9:0.16692329718223786 10:0.37649213869502973 -7.887786536531237 1:0.11276440263810383 2:-0.7684997525607482 3:0.1770172737885798 4:0.7902845707138706 5:0.2529503304079441 6:-0.23483801763662826 7:0.8072501895004851 8:0.6673992021927047 9:-0.4796127376677324 10:0.9244724404994455 -14.323146365332388 1:-0.2049276879687938 2:0.1470694373531216 3:-0.48366999792166787 4:0.643491115907358 5:0.3183669486383729 6:0.22821350958477082 7:-0.023605251086149304 8:-0.2770587742156372 9:0.47596326458377436 10:0.7107229819632654 --20.057482615789212 1:-0.3205057828114841 2:0.51605972926996 3:0.45215640988181516 4:0.01712446974606241 5:0.5508198371849293 6:-0.2478254241316491 7:0.7256483175955235 8:0.39418662792516 9:-0.6797384914236382 10:0.6001217520150142 --0.8995693247765151 1:0.4508991072414843 2:0.589749448443134 3:0.6464818311502738 4:0.7005669004769028 5:0.9699584106930381 6:-0.7417466269908464 7:0.22818964839784495 8:0.08574936236270037 9:-0.6945765138377225 10:0.06915201979238828 --19.16829262296376 1:0.09798746565879424 2:-0.34288007110901964 3:0.440249350802451 4:-0.22440768392359534 5:-0.9695067570891225 6:-0.7942032659310758 7:-0.792286205517398 8:-0.6535487038528798 9:0.7952676470618951 10:-0.1622831617066689 -5.601801561245534 1:0.6949189734965766 2:-0.32697929564739403 3:-0.15359663581829275 4:-0.8951865090520432 5:0.2057889391931318 6:-0.6676656789571533 7:-0.03553655732400762 8:0.14550349954571096 9:0.034600542078191854 10:0.4223352065067103 --3.2256352187273354 1:0.35278245969741096 2:0.7022211035026023 3:0.5686638754605697 4:-0.4202155290448111 5:-0.26102723928249216 6:0.010688215941416779 7:-0.4311544807877927 8:0.9500151672991208 9:0.14380635780710693 10:-0.7549354840975826 -1.5299675726687754 1:-0.13079299081883855 2:0.0983382230287082 3:0.15347083875928424 4:0.45507300685816965 5:0.1921083467305864 6:0.6361110540492223 7:0.7675261182370992 8:-0.2543488202081907 9:0.2927051050236915 10:0.680182444769418 --0.250102447941961 1:-0.8062832278617296 2:0.8266289890474885 3:0.22684501241708888 4:0.1726291966578266 5:-0.6778773666126594 6:0.9993906921393696 7:0.1789490173139363 8:0.5584053824232391 9:0.03495894704368174 10:-0.8505720014852347 -12.792267926563595 1:-0.008461200645088818 2:-0.648273596036564 3:-0.005334477339629995 4:0.3781469006858833 5:0.30565234666790686 6:-0.2822867492866177 7:0.10175120738413801 8:0.5342432888482425 9:0.05146513075475534 10:-0.6459729964194652 -6.082192787194888 1:0.42519013450094767 2:0.09441503345243984 3:-0.07898439043103522 4:-0.32207498048636474 5:-0.9180071861219266 6:0.5951317320731633 7:0.41000814588717693 8:-0.3926260640533046 9:0.2789036768568971 10:0.13163692286014528 --7.481405271455238 1:0.03324842612749346 2:0.07055844751995122 3:-0.47199515597021113 4:-0.682690342465275 5:0.3983414713797069 6:-0.2136729393256811 7:-0.09066563475481249 8:-0.4640338194317184 9:-0.03513782089224482 10:-0.1711809802758364 -6.739533816100517 1:0.1774546460228057 2:-0.6783644553523549 3:-0.47871398278230504 4:0.02272121490463097 5:-0.5047649289302389 6:0.26479596144873896 7:-0.32045436544054096 8:0.3113047940487379 9:0.6269418147567556 10:0.9710114516962312 -3.780807062175497 1:0.01715676997104909 2:0.8975962429865936 3:-0.46594560920034134 4:0.2873623499953055 5:0.8894362304584083 6:0.17973981232418468 7:0.49105791400707743 8:-0.7359842740294882 9:0.38941133808001127 10:-0.7151884777228046 -4.564039393483412 1:0.07478785545033317 2:-0.8672651994084235 3:0.450599300176334 4:0.35104802298560056 5:0.6797318185095045 6:-0.03891997518827006 7:-0.33208695871398675 8:0.6166574577055226 9:0.5730212324012205 10:-0.4194925751047054 --0.3195679646035633 1:0.054527683864544096 2:-0.15591931640565093 3:0.9266742559542833 4:0.888522581905147 5:0.6576203900699167 6:0.6417770212400336 7:0.7509788029052338 8:-0.3104974571382815 9:0.7234744267051683 10:-0.15869049651427103 -11.290452658023497 1:0.20173310976772196 2:0.8657502566551409 3:0.9325160601080682 4:0.24570884032596263 5:-0.6546108813337841 6:-0.14020032028377583 7:-0.8825687891702743 8:-0.21420166926412865 9:-0.8600275184792756 10:-0.7990574622230739 --4.003499192090455 1:0.8325875503351796 2:-0.5956350140619129 3:0.12598048009007923 4:0.12340188733473134 5:-0.839435659309717 6:-0.16623481818728414 7:0.12028795301041662 8:-0.7994713170657952 9:0.2216721974907896 10:0.8407561415075087 --19.872991038068406 1:-0.9325810772922609 2:-0.6411471147334535 3:0.9949216290375054 4:0.483048267470493 5:-0.8736297429070232 6:-0.36222771685582544 7:0.26397860162786957 8:0.45527588775737704 9:-0.9424989711186325 10:0.6251162293059616 -10.502762149373098 1:-0.2307778924009991 2:0.6977871128979924 3:0.022830408261390822 4:0.6257738824362347 5:0.9770979848265122 6:0.09985730624684575 7:-0.9755858424230182 8:-0.689969833240031 9:-0.7294587311376761 10:0.3496326193951331 --14.328978509075442 1:0.37929821892417404 2:0.8402056881660709 3:-0.1806835799958202 4:0.766314307210441 5:0.865876513623024 6:-0.7113501219432434 7:-0.0932956557986735 8:-0.7042025810921411 9:0.47530696925672267 10:-0.4629102077669889 --16.26143027545273 1:-0.9309578475799722 2:0.7591795880911123 3:0.06296957473213705 4:0.786790093290086 5:-0.9527998391625465 6:-0.08573982501921895 7:-0.3812232026687308 8:-0.6890669703685022 9:0.25415911467755015 10:-0.07664746267502509 -11.772544195529013 1:0.3614756404325046 2:0.14508027508253818 3:0.23042774014795753 4:0.4164348685332022 5:0.4109091750657461 6:0.03853098236933272 7:0.38911994885223145 8:-0.5031309357181766 9:-0.596467768575587 10:0.17884522225228028 -14.697703557439503 1:0.24508864174863 2:0.7576193329655578 3:0.09030511120334461 4:0.9537528991778741 5:-0.7224092160621338 6:-0.34089385162121943 7:0.6924170720838818 8:0.32912306214891784 9:-0.4064624712125904 10:-0.5344662061201593 --13.976130931152703 1:0.5891192531479754 2:0.29862103742464274 3:-0.36153976712796343 4:-0.6552669564323226 5:-0.22672513691161766 6:0.3001336202535376 7:0.34490251346382617 8:0.2072633053920192 9:-0.5659371284058774 10:0.49599636156628835 --14.762758252931127 1:0.31302496164254223 2:-0.6062773982342133 3:-0.9874007658402217 4:-0.6214904627601421 5:-0.11421073677207683 6:-0.5850843421161205 7:0.1250679146774638 8:-0.7108170726393621 9:-0.6888351241194393 10:0.6077343683084389 --3.300641320608255 1:-0.1407178879203672 2:0.12960233233004925 3:-0.4236196478321872 4:0.7903078296084356 5:-0.8755754953628643 6:-0.2062360260394529 7:-0.045680124889026175 8:0.783182093429277 9:-0.02995737262668463 10:-0.33382351650328435 --15.72351561304857 1:-0.1802575775708093 2:-0.991006951265341 3:-0.9107951763247621 4:0.9069820084047908 5:-0.12691921206803047 6:-0.7087012119383593 7:-0.9179510577925369 8:0.18480349982718325 9:-0.4478459144114004 10:-0.5560585660624608 --22.949825936196074 1:0.4797855980916854 2:0.01997502546020402 3:-0.8827928315487465 4:0.2755107907750989 5:0.015544482147298977 6:0.9652687138748801 7:0.6622667860970648 8:-0.7708138539912186 9:0.17728148663006627 10:0.47818190728952925 -12.092431628826905 1:0.1358843437335564 2:0.03643446587894239 3:-0.31070823939673287 4:0.5283033206569152 5:0.3469111543845367 6:-0.5162518174930761 7:0.24270234207184016 8:0.7352292800096338 9:0.8860322286740037 10:0.6748068653962045 --23.51088409032297 1:-0.4683538422180036 2:0.1469540185936138 3:0.9113612952591796 4:-0.9838482669789823 5:0.4506466371133697 6:0.6456121712599778 7:0.8264783725578371 8:0.562664168655115 9:-0.8299281852090683 10:0.40690300256653256 -5.998186124881712 1:-0.9781302074883151 2:0.32984303335155785 3:0.7303430847899663 4:0.841481297188956 5:0.05580773881989276 6:0.7130788298702062 7:-0.218087116119847 8:-0.9889494995220598 9:0.9182854134226501 10:-0.7501751701020942 -9.852316338642547 1:0.146854160091757 2:-0.3611508707370965 3:0.3517016971654914 4:0.6187697988029395 5:-0.010768583697787548 6:0.5236725885871243 7:0.5945666964145524 8:-0.009180562740628506 9:-0.44474762415618274 10:0.41852743519493685 --5.313930756588526 1:-0.6304209277071555 2:-0.37010359785263813 3:-0.3194739026510125 4:-0.750533359080716 5:0.45500303301733114 6:-0.012727544364283805 7:-0.43941651856862274 8:0.927108876532093 9:-0.24164903158058149 10:0.44134972919002124 --4.2775224863223915 1:-0.35785764991284363 2:0.942797043714243 3:0.4539569191274251 4:-0.6944903010994341 5:-0.08357221983075225 6:0.4433049548665855 7:-0.5488972050023557 8:-0.24014623658145773 9:-0.6178118485382511 10:-0.4575463952834564 --10.57769830424322 1:0.22693864400257335 2:-0.041639691095668674 3:0.9948726461115123 4:-0.7450471554938383 5:-0.1114847126717804 6:-0.27881184842402673 7:0.029766812446276214 8:-0.3727649352432578 9:-0.7791732805568077 10:0.9425576681069683 --0.8430338600258201 1:0.4607090007225536 2:-0.6079961642969514 3:-0.5671626932935381 4:0.12784576080614185 5:-0.30766031989910236 6:-0.21232963505711555 7:0.3310463755850872 8:-0.6807682731528943 9:0.7826634145951483 10:0.0608057623636995 -13.450586257053727 1:-0.2697769964284986 2:0.07743737732312428 3:-0.8459687499864881 4:0.6091901514177853 5:-0.9464815428211699 6:0.15780407422581533 7:-0.28552052619478996 8:-0.27500859181806403 9:-0.7207541548282903 10:0.05215593729084533 -20.358241877831016 1:0.29768927445620164 2:-0.5379390525163252 3:0.6591913001003027 4:0.6635992348010928 5:0.3786594651413009 6:-0.7217135278882543 7:0.9634013908615768 8:0.03961253903778861 9:0.1335121312144949 10:0.7933944303463509 -9.800993960518852 1:0.39896823489212285 2:0.30948413101894023 3:0.08568060094378493 4:-0.7454513450113371 5:0.8054125831421357 6:-0.24464240413169347 7:-0.18294406588625112 8:-0.883455504399858 9:0.2468431033653562 10:-0.708151566382103 --21.432387764165806 1:-0.4785033857256795 2:0.520350718059089 3:-0.2988515012130126 4:-0.46260150057299754 5:0.5394344995663083 6:0.39320468081626836 7:0.1890560923345248 8:0.13123799325264507 9:0.43613839380760355 10:0.39541998419731494 --4.090570760187878 1:0.3909705814857716 2:0.9830271975811611 3:0.672523651785939 4:0.0035177223850744177 5:0.567082732451311 6:-0.2620454326881394 7:0.46622578556708105 8:0.646246879249865 9:0.4263175536668733 10:0.8982696975276223 -3.7459201216906926 1:-0.9480167656870653 2:-4.888270196095057E-4 3:0.48226844071577646 4:-0.23706663537631645 5:0.22420266627462127 6:0.2981747607694978 7:0.3893425967975348 8:0.6302701381298614 9:-0.21909113816064196 10:0.8371697958140494 -9.767952084958061 1:-0.2300790371078303 2:-0.4457883630748676 3:0.28710853302295325 4:0.7112839743052013 5:-0.8765858382640623 6:-0.6470779468607217 7:0.4369262584371727 8:-0.7175412028407337 9:0.5506733477278882 10:0.5393007189573547 -6.9802839308913365 1:0.21769855012808215 2:0.8653818331675485 3:0.2322943113578111 4:0.3760591265797468 5:0.06554014167292377 6:0.6866096712933549 7:0.866929973115441 8:-0.6462263417217329 9:0.2507247465275353 10:-0.7005877782050307 -16.014720800069103 1:0.6058055248984549 2:0.048517868234337014 3:-0.15744912875924877 4:0.32598079708869365 5:-0.587791997223768 6:-0.4636187312118474 7:0.7771908559246068 8:-0.349403853888719 9:0.229800030145503 10:-0.674614818934488 -8.417571532985823 1:-0.21164946152466801 2:-0.9981936663594053 3:0.8611869575187896 4:0.11100891297254312 5:-0.7406067304729631 6:-0.7613837395522254 7:-0.9617573325708704 8:0.5697426971647488 9:-0.5830879716990833 10:0.5951448538064159 --12.491442077546413 1:-0.19172117564625735 2:-0.12421304883392126 3:0.7095605786791346 4:0.6401582292398038 5:-0.9347790209840108 6:0.6592209285686903 7:0.702282297844389 8:-0.22765902007749528 9:-0.17746922342943816 10:0.7196663432778121 --8.605713514762092 1:0.36490454976480846 2:0.6991204480538957 3:0.6546945560337121 4:-0.032324845758738174 5:0.2453935969836043 6:0.5363119225093116 7:0.6266741350524205 8:-0.2132266305382322 9:-0.308105870487996 10:-0.08219413867616465 --10.35591860037468 1:-0.014204168485027147 2:-0.7077035677144325 3:0.024004217785642767 4:0.818971992516166 5:0.9081305263471056 6:0.808854493237229 7:-0.6474336785461867 8:-0.32559288177031465 9:-0.32850453072496055 10:-0.7035310416695784 -3.605002621628445 1:0.6085817977516599 2:0.8101072412357928 3:0.7697891508923966 4:-0.5738750389864677 5:-0.734314989863889 6:-0.7879014492215499 7:0.6884442838920775 8:-0.46131231930402383 9:-0.7730585954271005 10:-0.7819874019145132 -12.30435312415091 1:0.3283668768730639 2:-0.18316686990068187 3:0.3955614099142126 4:0.8450470350842108 5:0.3958042901611589 6:0.6578475571960676 7:-0.4395488558075096 8:0.15720430113495376 9:-0.5318362828977672 10:0.45585285255232044 -9.020048819638827 1:-0.5986521145193395 2:0.3266542215286443 3:-0.09911773729611917 4:-0.21478254478908676 5:0.6546175049764293 6:-0.1414796368932345 7:0.25802631337510085 8:-0.6773828562539816 9:-0.22038193899258718 10:-0.17465737306657902 -14.854262978981406 1:0.5293763924477841 2:-0.24658868331583683 3:0.8268631648872109 4:0.8969207203400265 5:0.03933229861213983 6:-0.6212951181360529 7:-0.36695460282178205 8:-0.5468014636386027 9:-0.3419492829414976 10:-0.8273314086998671 -5.658665647926016 1:0.9543096383762801 2:0.13230023957687176 3:-0.3071929861496465 4:-0.3646067841449696 5:0.6979929890816723 6:-0.20721664168809228 7:0.6676482547655365 8:0.944757051233543 9:0.024377296173674567 10:-0.9413728609667691 --6.930603551528371 1:0.09198647857985232 2:-0.3685113649452161 3:-0.2361728930325453 4:0.3674268130607439 5:0.27385598384498344 6:-0.7151900241735676 7:0.3310154476154119 8:-0.24328111897361682 9:0.2511378679668912 10:-0.35825141175578934 -13.361196783041926 1:0.11676665169094824 2:-0.49968608916548307 3:0.9941342810313298 4:-0.17858967215374988 5:0.1993744673440312 6:0.14596837574280297 7:-0.8245495433125194 8:-0.5637934691545672 9:-0.8589185806222286 10:-0.4923216901915597 --3.280508467210429 1:-0.9917770074538397 2:-0.1547651813493751 3:0.621733177563484 4:0.7303326279246298 5:-0.0786900332560696 6:0.9107127797641994 7:0.7104513024299466 8:-0.32858522942354407 9:0.17013652749847386 10:0.27656984316288824 -11.13509519160867 1:0.6874932143640391 2:-0.46610293161038907 3:0.8744681017967024 4:0.40900365224695956 5:-0.49770054448432055 6:-0.0635770754462921 7:-0.5705387648707747 8:-0.577988250149829 9:-0.8099463063934682 10:0.42132700180827354 --11.857350365429426 1:-0.24607974991258308 2:-0.943388538022258 3:0.8679112109377674 4:0.7779951176637694 5:-0.5802336023276593 6:-0.9093352471884992 7:0.29337797938742316 8:0.498519874589175 9:0.3493034812120912 10:-0.07307210651399076 -11.421632138263703 1:0.3911519359353859 2:-0.8154393787235621 3:0.47194271125243237 4:0.14014792298759593 5:-0.3589345913619957 6:0.7887695409762479 7:0.49962792312858895 8:-0.6402670146359797 9:-0.2314041601683119 10:-0.798901341175887 -5.194792012146463 1:0.810279303469398 2:-0.9772756877199589 3:-0.20925958437085557 4:0.8797562461102444 5:0.3211532423260066 6:0.25250279470783754 7:0.14387831263435813 8:-0.021466789385169882 9:0.18909293657271564 10:-0.5981349964027893 -12.242677118499806 1:0.3565715672082048 2:0.7366743237221687 3:0.1922233582434527 4:-0.3551925780624561 5:0.5290849503909634 6:0.7744214641246749 7:0.7277215028580597 8:-0.590440215391044 9:0.7427328184290733 10:-0.6231904162251609 -3.496172341296411 1:0.5028717258135624 2:-0.5838871888624848 3:-0.5540116561110324 4:0.8502487679795261 5:-0.7983061034328727 6:-0.3853123296389005 7:-0.1493800684643869 8:0.6008798629354264 9:-0.32299062155495406 10:-0.5827019502242026 --15.437384793431217 1:0.41994681418237345 2:0.7106426870657483 3:-0.45211033467567696 4:-0.7272406549392239 5:-0.35736594496490737 6:0.4764507578985955 7:-0.5249912641281373 8:0.8562010912051132 9:0.45927621623833637 10:-0.3701817429794385 -5.490036861541498 1:0.8414999442459015 2:0.9273442862476728 3:-0.054654787893199774 4:-0.23126134156257327 5:-0.9155048245317694 6:0.25750538376376975 7:-0.8470916763665326 8:0.9105674676753848 9:0.5026028522378054 10:-0.06650501561108468 --1.074065343287859 1:0.37484830603001607 2:-0.9858854245832975 3:0.007159356555897611 4:0.8172796295244154 5:0.519147377529164 6:0.8211049991970722 7:0.9901658817979146 8:-0.026519560032641998 9:-0.2328762488733862 10:0.43161994187258035 -2.0482082496444622 1:0.24940246021565793 2:0.47248358864259177 3:0.23833814894291105 4:-0.3449172512379757 5:0.7412869866239866 6:0.1351422898741914 7:-0.003784141556894216 8:-0.6321917152754075 9:0.8246267827865776 10:0.5057520480449009 -16.709794859608397 1:-0.5977424405191092 2:-0.13991362149785713 3:0.613487896720806 4:-0.37681525320218157 5:-0.4369592282569783 6:0.4702242879506955 7:0.07498463532645339 8:-0.9942304127133292 9:0.41304209196175257 10:0.6799250665519481 -4.598881854940949 1:-0.41212838137243835 2:0.6737124633791323 3:0.8376369191216593 4:0.2848328781926128 5:-0.17960265353296 6:0.0035488712665472377 7:-0.8355355482928055 8:-0.7439716673142398 9:-0.009043467128117433 10:0.7423272515054122 -9.566038608555402 1:-0.662329643040616 2:0.4727113884417973 3:-0.15734218732411365 4:-0.3950754785173889 5:0.13837083076070011 6:0.633261314089351 7:0.9929998062307679 8:-0.4639028424346423 9:-0.073992579817449 10:0.3413166410117088 -1.629198477883475 1:-0.2875719791707101 2:0.9395753700232541 3:-0.45090801750966314 4:-0.384528069378699 5:-0.35937736478702753 6:0.9597102694501136 7:-0.6898325123180971 8:-0.11436012866371303 9:-0.5330550575952768 10:0.24688769932037258 --7.374620970147229 1:0.16864051681940984 2:-0.08391828256018252 3:-0.8184503043836224 4:0.5461252511055263 5:0.7264676659099087 6:-0.9654384426822686 7:-0.8537533138667612 8:0.9189716013058653 9:-0.03449322582531389 10:0.5490329745887035 --0.5741704240890674 1:0.9392753294760656 2:-0.5579682000156501 3:-0.8083270703362093 4:-0.7022804026958895 5:-0.30426803430649896 6:0.8211432527140852 7:-0.8101343265051797 8:-0.0945946325760949 9:0.49546915718101814 10:0.5184327698839013 -12.583032451116004 1:0.20496323995364651 2:0.5082017540304999 3:0.2428646053751764 4:0.7101854338863274 5:-0.9619925264660094 6:0.4610134502825909 7:-0.5620669052678122 8:0.6766614078376236 9:-0.7169693435782278 10:-0.14362322382035164 --10.489157123372898 1:-0.7441633083637054 2:0.07069898351187809 3:-0.47119552972566336 4:-0.43970155900871344 5:0.43192289605353973 6:-0.0798550143899397 7:0.2111188135787776 8:0.9101748615761336 9:-0.4079984876629721 10:-0.8101424982394589 --3.811365493249739 1:0.7250263461647963 2:0.22182621035333838 3:-0.12735342714215725 4:0.26222861719040624 5:0.3928174057935714 6:0.817131411734006 7:-0.056109765698795 8:0.7908779197353637 9:-0.06768319505245768 10:0.4107045608924882 --7.604636483513961 1:0.876751634787073 2:0.04037085575852295 3:0.18142385658771398 4:0.38350565074271903 5:-0.30937664332011905 6:-0.9544807672006823 7:0.008643477632712449 8:-0.27676843472226276 9:-0.12938540988602476 10:-0.2929762262661819 --1.9889499615051784 1:-0.4243149295090465 2:0.22578711943818686 3:0.662530786460152 4:0.28592235843136105 5:0.4170345231441832 6:0.9290881132120887 7:0.5332443368002588 8:-0.33248958421809927 9:0.16273139830495942 10:0.6899022585936985 --1.99891354174786 1:-0.1732078452611825 2:0.2361029542296429 3:-0.8455867017505336 4:0.31638672033240867 5:-0.648387667144986 6:-0.7647886103837449 7:0.6910155501192978 8:-0.2665663102538198 9:-0.5980899570876459 10:-0.9165896495676276 -9.74348630903265 1:0.18934450539532244 2:-0.715110505416745 3:-0.453777527810155 4:0.2743741252197758 5:-0.8439310405443103 6:-0.533835190276116 7:-0.5911710854054728 8:0.21026462628920695 9:-0.45849607678093585 10:0.1327074179200407 -20.221961806051706 1:0.624731930687735 2:-0.39914395421723015 3:0.781887900750925 4:0.5442619051596436 5:0.16651193067479153 6:0.9064846121246533 7:-0.3643159594276202 8:-0.5182065337246469 9:-0.6785628247191553 10:0.7111152852903913 -20.456947955410897 1:-0.21923785332346513 2:0.11340668617783778 3:0.7397883986253251 4:-0.11748081084695605 5:0.06314872700777197 6:-0.7124574845946587 7:0.18043581960897104 8:-0.09023925260092103 9:-0.7256417560118238 10:-0.5038088673851804 -12.241006086129564 1:-0.15271598143132215 2:0.9038942665552285 3:-0.6168514099878155 4:-0.12219038322317011 5:0.5402785935596728 6:0.4059744401803913 7:0.258870596734184 8:0.3190881033039108 9:0.2372469007313076 10:0.367188299614863 -3.980473021620311 1:-0.9025895351376971 2:-0.03333947011476446 3:-0.8220776066161464 4:0.449117985679933 5:0.9970519437779266 6:0.27430911004640457 7:0.039081352882204046 8:-0.8621514950929796 9:-0.569587565933642 10:-0.9118346349929578 --13.420594775890757 1:0.3697979495309094 2:0.07383664120111888 3:0.7199366131785143 4:0.2118625428869032 5:-0.9015976323216077 6:-0.5298395275757712 7:-0.9517419542156635 8:0.39554920787574743 9:-0.3721957439110324 10:-0.4750272836396878 --1.052659359353786 1:0.02106845330888185 2:0.7571245678782959 3:0.8034228830223251 4:0.32968340513846917 5:-0.6510386482911554 6:0.2710115488605187 7:-0.1319580272290235 8:0.932600992666184 9:0.8260461527035414 10:-0.8507648952138052 -9.813440129324034 1:0.41048687946340134 2:0.9384639988086239 3:0.4569555844323441 4:-0.3084729082645552 5:-0.7299010284877061 6:-0.6925012997779212 7:-0.6798013915257548 8:-0.504368104320321 9:-0.6234398059664716 10:0.8633407902005543 --2.8942782378157714 1:0.5546381825677706 2:0.7959405841824887 3:0.584699836289184 4:-0.5726371777829862 5:-0.2827976152663936 6:0.138034013875719 7:-0.2935080791661324 8:-0.5323479091625714 9:0.6837641044797451 10:0.5986680812032501 -8.562937733537664 1:0.14753220510180776 2:-0.31591341855048327 3:-0.748545617199091 4:0.3251888821665734 5:0.8228589483149358 6:0.046659706976506676 7:-0.35049927996132624 8:0.2953170004605874 9:-0.6429374177050204 10:0.4624083116836044 -13.413187970975178 1:-0.7229883396779724 2:0.8876940454894067 3:-0.033794226589695775 4:0.46700071356381523 5:0.1599557295166274 6:-0.8944619785248653 7:-0.1258464584151997 8:-0.8797551785991506 9:-0.14408879184669354 10:0.11020655997336015 --5.491389764900794 1:-0.366507395597937 2:0.630480481240723 3:-0.16600801981741609 4:0.09842042773854076 5:0.30129535029579047 6:0.14102166298628882 7:-0.28131788612036623 8:0.49635295715686234 9:0.0625636989631968 10:-0.41748132718912 --10.29566593602992 1:-0.7898597726154271 2:-0.05425577320946573 3:0.5992645759265662 4:-0.4716868549309716 5:-0.020137302700854676 6:0.6216515277233232 7:-0.7295510954484412 8:-0.41443875567123967 9:-0.610576632050404 10:-0.9515988311377204 -7.084732852050431 1:0.9990215581592679 2:-0.9868954542412269 3:0.49133473382040704 4:0.7697599878561228 5:-0.34668939907967267 6:0.9777705993519483 7:0.4449043102759509 8:0.9812971199646168 9:0.6666598587737487 10:0.14398842572598514 -0.23715467505851734 1:0.21628799185444336 2:-0.4526390568867018 3:0.6558486691929235 4:0.13730688681492142 5:0.23076986155942736 6:0.7020484017619715 7:-0.12077999528458938 8:0.8306084972447003 9:-0.49337323198621563 10:-0.8270028152572872 -1.1552619549601455 1:-0.48202394020369277 2:-0.6274878708695264 3:-0.27623674153600697 4:-0.5312153415813432 5:-0.030820182786174044 6:-0.5893370965577813 7:0.6666315120904487 8:-0.36482991729570036 9:0.6065771813692735 10:0.05831057330788525 --0.20433879835596253 1:-0.4702220250018212 2:0.9123705796362889 3:-0.2045657170490376 4:-0.18922063450309534 5:-0.31431213362503163 6:0.4150130060120387 7:0.34016193625941127 8:0.8391374136299805 9:0.6884250315764333 10:-0.7916408854251566 --9.751622607785082 1:-0.0014232315621649505 2:-0.1284246813729939 3:0.5228953023175369 4:0.9688522449007109 5:-0.7857721219549156 6:-0.7812922263391038 7:-0.5916136652814756 8:0.793988610184206 9:0.7982949061274296 10:-0.592785473963741 --22.837460416919342 1:-0.17363144173810174 2:-0.3340314573781735 3:0.9351424971322297 4:-0.6430601902397572 5:-0.13363305808148818 6:-0.42446359566938585 7:-0.4093070316761178 8:-0.9302259781839204 9:0.47004365892170585 10:-0.6231289889808045 --3.6318714209289436 1:-0.8296410705737971 2:-0.6056572341069668 3:-0.2975417404042737 4:0.07134138175064741 5:-0.8966463747179154 6:-0.4112675899658855 7:0.7908013478009401 8:0.407396254566472 9:0.9227769302156879 10:0.12418427404473764 --3.8909712376010583 1:-0.6552751548581366 2:-0.5641921108932855 3:-0.6340486345063014 4:-0.5441069121131075 5:0.908720622198947 6:-0.026054643814348077 7:0.03706191653058433 8:-0.6672524338819317 9:0.7958274915288801 10:-0.19029619970124023 --10.600130341909033 1:-0.7457695999520562 2:-0.3739453132549577 3:0.01327423342620393 4:-0.08482897201178563 5:0.84573456086082 6:0.6279927575103963 7:0.014494803555804125 8:0.9420647557771027 9:-0.13484113287285893 10:0.3037405853352888 --12.094351278535258 1:0.9982796018306028 2:0.8354271779265348 3:0.46284321795736116 4:0.07693347919601745 5:-0.4753440408996932 6:-0.47098252868073787 7:0.4810729184846003 8:-0.6136990339205741 9:-0.6715833036640317 10:-0.6247058955319091 -9.936399360181602 1:0.7330323083522969 2:0.47204204993669197 3:0.3850471475752122 4:0.21483460195167958 5:0.3806220122265147 6:0.6336993433402796 7:-0.47987416364572 8:-0.195509010865196 9:-0.6561820282562041 10:-0.45300480439842894 --4.706701061062994 1:-0.847895844561626 2:-0.29946646506145114 3:0.25432868082106497 4:0.1352958872054535 5:-0.8803017974303002 6:-0.3675110562764785 7:0.10888496324899721 8:0.9620737605396772 9:-0.031046632561323895 10:-0.09466883461500908 -5.101614991255809 1:-0.5174248135588373 2:0.14394061894828014 3:0.5613709266711013 4:-0.5678634944326011 5:0.930216209978763 6:-0.6204727890080077 7:0.4133141749872311 8:0.6262685035917408 9:0.03382924477926896 10:-0.15231139191832854 --8.772667465932606 1:-0.2117605577769197 2:-0.4283897136887762 3:0.44686767473401035 4:-0.5507826261358746 5:0.237124956028401 6:0.6413157520982717 7:0.2409214827604571 8:-0.8505503638033114 9:-0.9811997368468401 10:-0.9499963936664035 --11.615775265015627 1:0.8782018665273386 2:-0.9751473570197167 3:0.6307050068521085 4:0.7012721336851997 5:0.21318736263512283 6:0.024885128053773853 7:-0.4580644243558505 8:0.1318650007251434 9:-0.9306090092992167 10:-0.5688746770986652 -19.64829023536192 1:0.14426537998360645 2:0.3557716894181753 3:-0.8577143134654568 4:0.5288643233801469 5:0.9231529738221469 6:0.975999712077738 7:0.24700404691888678 8:0.10206517527052283 9:-0.10041951294847062 10:-0.9412918491876225 -2.7409415438025486 1:-0.7404936009304737 2:-0.9792071376296605 3:-0.49510748520932113 4:0.9538460112904268 5:-0.5075114153141447 6:-0.5890791308058669 7:-0.775366087491284 8:0.4983912525892249 9:-0.2976197956132913 10:0.6791258030468514 --4.394658158733604 1:-0.41628618754613345 2:-0.1472602552309057 3:0.44136102233464025 4:0.011882653940414434 5:-0.6559502840386595 6:-0.4022529016339016 7:0.048402312931387526 8:0.8753776623326166 9:-0.8528247288266961 10:0.6593783978826002 -1.1915739133607073 1:-0.7840827624854878 2:-0.4860418508208426 3:-0.7418773161179972 4:0.129874781837924 5:-0.22631682294184796 6:0.47794208013755024 7:0.5532183426143056 8:0.11879859459306741 9:0.09927630694484524 10:-0.19268618891399636 -2.156192215438919 1:0.44325986644475646 2:-0.6057278708888592 3:0.3943381582091723 4:0.6560336238050575 5:-0.9651308100517204 6:-0.2358219003943678 7:-0.04143043460232465 8:0.8623951169233035 9:-0.4933545255502605 10:0.8990427200454263 --1.1009750789589774 1:-0.4515707618788496 2:-0.745936099912899 3:0.41307003181926794 4:0.6127760492402428 5:0.9250878169732681 6:-0.6778628527469126 7:0.42794190420905753 8:0.4943969797578971 9:0.7762709104958854 10:-0.6932349268610041 -10.04434496594037 1:-0.0995467494040092 2:-0.7766769414838959 3:-0.6608009972582911 4:0.7075788021090594 5:0.5208396359138381 6:-0.09724033794207299 7:-0.743087245352148 8:0.765372791789753 9:0.3788699859744704 10:-0.6898257995055466 -8.038039859115667 1:-0.5321510657026671 2:0.5571925538006008 3:0.747268102801854 4:0.09079641165917596 5:0.25861122989509266 6:-0.9948187479498878 7:-0.9665136866462685 8:-0.3904629432867681 9:-0.9975425877998279 10:0.32024289816988416 -5.14371929922303 1:-0.4829199170694627 2:-0.5713285263827719 3:-0.43889652467111184 4:0.18478247261988967 5:-0.27374063120041225 6:-0.8069125377696931 7:-0.15497746743367058 8:0.32448521325998714 9:-0.39397735035206227 10:0.08184957956614292 --1.6848276484379352 1:-0.39250489761445895 2:0.02730338852529557 3:0.9916055514435305 4:-0.07571433435055064 5:0.19024527726403728 6:0.6385182319185971 7:0.32480605537471297 8:0.5807543325220577 9:-0.35642510103381153 10:-0.9060482769392468 --11.640549677888826 1:0.03707410390488852 2:0.2527049166981137 3:0.4114872952854447 4:-0.8508977901757795 5:-0.42791544663481895 6:-0.9864047295390463 7:0.6023685964407528 8:0.12018443688097036 9:-0.36816249877130414 10:-0.9583147535652901 -11.672104494601319 1:-0.2416258355340175 2:0.6737553249072334 3:0.9041602191361382 4:-0.2123232797997281 5:-0.008255188002961988 6:-0.5151894064136904 7:-0.7341877977528246 8:0.624625272218277 9:-0.6261434804192929 10:-0.5710586715741532 --2.2960192492344627 1:-0.7457768645184579 2:-0.5954998103421847 3:0.5428846769211537 4:-0.6176587961491775 5:0.46222150678166574 6:0.7852238239427731 7:-0.3614580530629148 8:-0.325840253127059 9:-0.5660596710348922 10:-0.8060263366626401 -5.428302298615722 1:0.8774286357993033 2:-0.23110126319781088 3:0.6264134914476072 4:-0.143015582616014 5:0.350109539755298 6:-0.147747167834422 7:0.05020570422182824 8:-0.5469605849960337 9:0.951112567977048 10:-0.34800121380288185 --17.32672073267595 1:0.31374599099683476 2:-0.36270498808879115 3:0.7456203273799138 4:0.046239858938568856 5:-0.030136501929084014 6:-0.06596637210739509 7:-0.46829487815816484 8:-0.2054839116368734 9:-0.7006480295111763 10:-0.6886047709544985 -7.314490512652487 1:0.8745354279105222 2:-0.9270067504840309 3:0.965218170323435 4:0.12808957052353698 5:-0.5309399625085234 6:-0.5968520990090951 7:-0.667403236513185 8:0.08154410986660832 9:0.33025488397543934 10:0.03406708067839537 -4.687373993408297 1:0.6731426721418288 2:-0.7111023070261273 3:-0.9849054116048603 4:-0.12831346258317322 5:-0.04095946352836921 6:0.6967001556166801 7:0.8479895229743999 8:-0.35600791972899404 9:0.5005979045264868 10:0.6421341979636503 --6.82923852156868 1:-0.04849233571020073 2:-0.8505855619911602 3:0.2927180954190314 4:0.5780268040086791 5:-0.22322207765417268 6:-0.8436513934568071 7:-0.3906240514635124 8:0.7258714963093444 9:-0.21695043530813085 10:0.8049335285918169 --8.24622879369294 1:0.12154833675098842 2:-0.26446415445316673 3:-0.06653791221669247 4:-0.7920694887292259 5:0.6128791496627621 6:-0.6927179137980173 7:-0.24584418172709932 8:0.3557416365779935 9:0.22868636757755234 10:-0.8288196322549064 --5.090863544403131 1:-0.1535668648046895 2:-0.59868738365189 3:-0.8822518703008675 4:-0.1790505106198006 5:0.9467581256591948 6:-0.0661313762905984 7:0.31263046332923694 8:-0.03628894224569357 9:0.8969599435828515 10:-0.05386674051170348 --15.780685032623301 1:-0.2568492063716883 2:0.7740976197426315 3:-0.7829158104387535 4:0.8578846037465748 5:-0.6111039318672586 6:-0.26939268282639306 7:0.3659136640533909 8:-0.8205938562638555 9:-0.24945505706767923 10:-0.935948184861368 --3.9916779937384743 1:0.22925954469403154 2:0.18159238246979537 3:0.05607027262862396 4:-0.3376037702047998 5:-0.10630000583678934 6:-0.7148277241201622 7:-0.08327294541727137 8:0.6532439360618307 9:0.34352364313237294 10:-0.21028242388807916 -8.798748248458631 1:0.509058184822212 2:-0.17532831457577935 3:-0.6387880909085213 4:-0.966194650702529 5:0.7829797328120436 6:0.5470735549914605 7:-0.38312745239682333 8:-0.8890923931840893 9:0.6823342859396513 10:0.9231260597729121 -14.341273640964873 1:0.6996156678090684 2:0.8612833977834464 3:0.9131301694042417 4:0.5199385192744859 5:-0.32605907950755086 6:-0.9816465962348846 7:-0.5939885763232406 8:-0.7730924566676425 9:0.6367821449954114 10:0.10873812383881054 -9.75855501262469 1:0.2933324921347933 2:-0.4652534314332506 3:-0.2940640558090537 4:0.9883453215038367 5:-0.042460731786114314 6:-0.15438550895912062 7:-0.11182397625560592 8:0.7425954283250873 9:0.5063859049644963 10:0.3012211854180429 -7.695200921242407 1:0.3554353390157281 2:0.08707592690448718 3:-0.10815435665633877 4:0.05524046679762784 5:0.8000157491787581 6:0.3756193347272323 7:-0.18659830666742527 8:-0.08168623764933125 9:-0.2551379303720174 10:0.8560030587463281 -26.903524792043335 1:-0.4672678144441864 2:0.868381965588082 3:-0.04748335609643428 4:-0.0908285508827269 5:-0.22436865911994275 6:-0.953965287326564 7:0.40644848732968164 8:-0.33391575325981115 9:0.008337907338700212 10:-0.45597904754961416 -9.87318781117539 1:0.7310287890171705 2:-0.38300115058116324 3:0.5492682498036086 4:0.552016070316655 5:0.3715022458396897 6:-0.3888040017277252 7:0.21348231125683648 8:0.23219558685722874 9:-0.6271161253492459 10:-0.009137052604519136 -7.6930514050666625 1:0.48603550488592284 2:-0.9218820771919889 3:0.17678612698428053 4:0.5110501870908806 5:0.5817010201164554 6:0.4488707800038747 7:0.4977618637956498 8:0.1683214570038094 9:0.17237242672259323 10:-0.5276084644007359 -3.155413914311745 1:0.04582517188512947 2:-0.9060800653779759 3:0.049786270132956556 4:-0.4236784487542993 5:0.6293910028372613 6:-0.7370237043436467 7:-0.4599678991281728 8:0.5317111095323057 9:0.0029525239228334055 10:0.9294876800738165 --10.18815737519111 1:-0.9023553189306839 2:0.08434165073970856 3:0.7163931103395633 4:0.41749986495957914 5:-0.8190972970472759 6:-0.9996126872234177 7:0.1779075727741255 8:0.18212754689351862 9:0.24628508239298963 10:0.667589863190412 -18.585731475373457 1:-0.8399129036462931 2:-0.10024819268489127 3:-0.5011350892733817 4:-0.7299256348863585 5:-0.9412022985072928 6:-0.245064895931544 7:-0.1032512650854267 8:0.9943863256441088 9:-0.6429371028855466 10:0.062299742931960056 -8.998359297106072 1:-0.16850226855111905 2:0.7262839202089402 3:-0.04876255055071854 4:0.8948164957242868 5:-0.10720585418953132 6:0.2622719447841948 7:0.26433837506661373 8:-0.5143449147399106 9:0.17444585508955002 10:-0.813182163328944 -13.032424230011074 1:0.4014766166181287 2:-0.1710502754125871 3:-0.309850483152607 4:0.255642456909988 5:0.9949117714165621 6:0.12553772251510864 7:0.6412602805648968 8:-0.6225679446416825 9:-0.15867011477056936 10:-0.4970695349036196 --6.931030745953174 1:0.5151452174260762 2:0.10077064818539072 3:0.9515221270405545 4:-0.21551878535257907 5:0.29152528087481366 6:-0.10995497026133605 7:-0.7872786530801681 8:0.9909149980139627 9:-0.6044617953251021 10:0.4135285912642448 -15.538062451207367 1:-0.493569696351595 2:0.7280914440594639 3:-0.5399160539735497 4:0.5688018985826291 5:0.8296550361854862 6:-0.3519274619833537 7:-0.5536583684230114 8:-0.9648774930921231 9:-0.2649670832738824 10:-0.2337289004188019 -9.499729032920945 1:0.22017490770298553 2:0.7693082799289328 3:-0.7645745307823122 4:-0.4243400515554365 5:-0.7065281515163817 6:-0.9488470141298047 7:-0.7888781431404843 8:-0.38027758953310964 9:0.11329243985448345 10:-0.5636550498916204 --0.6039115764951412 1:0.3128791250125589 2:0.4690308315665288 3:-0.9819748103687955 4:0.28931283693913223 5:-0.6283983933456656 6:-0.10795935596621975 7:0.7785831799196448 8:0.4453768248295542 9:0.4055410615499917 10:-0.581108383985806 -9.682301463907875 1:0.5039970331368235 2:-0.008965105921562966 3:-0.5415225380115054 4:0.4677111860370293 5:-0.3854089758945243 6:-0.8468317339287676 7:-0.29258253017713587 8:0.7361173598968789 9:0.5722561668394952 10:0.8524030171340933 --2.8752191903928064 1:-0.45407356732165205 2:0.6563221064539377 3:-0.8938366926767671 4:0.6028173420234533 5:0.6792881349943096 6:-0.6295604812779405 7:-0.21641416912497213 8:-0.8703620515028858 9:-0.3397362922228042 10:-0.0966947467107604 --28.046018037776633 1:0.9493308195854675 2:0.3285214661535252 3:0.749300278016316 4:-0.006681618268088219 5:0.2936055273341429 6:0.0044706790416966236 7:0.5006172205470896 8:0.38751814960349473 9:0.6069735922707928 10:-0.794612882855285 -2.8752582614589373 1:-0.9443232811926943 2:0.3153126492983107 3:0.6423843271417344 4:-0.09528333043829118 5:-0.2318773828230698 6:0.32597909562645766 7:0.42808555740416065 8:0.2895959316734451 9:-0.5106491076955746 10:-0.2917418155655722 --2.203945173593806 1:-0.13844025039418084 2:-0.024638102806725293 3:0.6114514176076162 4:-0.6939316676972749 5:-0.036549673716341324 6:0.0942395290460385 7:0.7943411369475493 8:0.7025693796408046 9:-0.21822635487138853 10:-0.6045250179827362 --5.070655299509993 1:-0.8035156105848074 2:-0.5344928236067734 3:0.6105404604447127 4:-0.7538635525543969 5:0.9836765037886612 6:-0.5700253195942724 7:0.9232380985458313 8:-0.26374377078100464 9:0.9079431466301682 10:0.8404281771949533 --2.540181413836895 1:0.220453181647285 2:-0.03105792440486077 3:-0.17131282366411926 4:-0.41800060634660485 5:-0.1477564564540963 6:0.055537469469941536 7:-0.8092076926316594 8:-0.29815112444525727 9:-0.20030580647762464 10:0.337865838755971 -19.341342586351033 1:-0.32052868280788616 2:0.954507993011956 3:0.38642226954792824 4:0.9240442034609888 5:-0.46077559741256824 6:-0.7991393493824104 7:0.9396232321156679 8:-0.2486930151964184 9:-0.6256485833035617 10:0.14861843824730103 -0.31398559122529757 1:-0.4684215762946897 2:0.07873308388585198 3:-0.3589594894052015 4:0.14284662079329458 5:-0.8936272055527841 6:0.5647217242826741 7:0.49613233215723507 8:-0.501698787526992 9:-0.46710107378968724 10:0.898517179577361 -12.243117462926584 1:-0.8147610562690222 2:0.21104006948075482 3:0.42405323019132957 4:-0.667965573810795 5:-0.267026607469405 6:0.7949752815579358 7:-0.07664414977654532 8:-0.6023087644686556 9:-0.659375887511856 10:0.459735946423397 --4.623091296763939 1:0.08405646515942733 2:-0.40009448092691446 3:-0.39831245310544094 4:0.8794137836499942 5:-0.04788565812369017 6:-0.06763019434549333 7:0.41324877265674065 8:0.39746868847324146 9:-0.986729367280818 10:0.7001677710291752 --5.782162271139417 1:0.29127970805530157 2:0.6712715787317827 3:0.27575757044478477 4:0.31525054647682804 5:0.6905016168465983 6:-0.5195319089267731 7:-0.06598129860341295 8:-0.5142554034519407 9:-0.11546331150946942 10:-0.2934524891698944 --9.892155927826222 1:-0.7048583334456604 2:-0.46598491327111247 3:-0.02034722477413209 4:-0.663294196316965 5:0.4485329128582778 6:0.4553619594861118 7:0.7154814909138205 8:0.7532937661147989 9:0.020693077287389894 10:-0.23131986644633207 -0.5422764698408844 1:-0.1513298744027669 2:-0.4591544337339648 3:-0.7192219559850723 4:0.21236658135317632 5:0.12050445497328166 6:-0.42411528242712127 7:-0.15103925528861595 8:0.9032115729799512 9:-0.9228817525021624 10:0.2604090001033641 -4.187800872274017 1:0.3084355607627949 2:0.7029638272178733 3:0.34098344122299573 4:-0.5818421369891376 5:0.1332356708082485 6:0.22671316744441716 7:-0.6750469752494854 8:-0.4065302428716193 9:-0.48213803977370073 10:0.17918596677210186 -4.487701812297124 1:0.8352061350259052 2:0.2757393215770836 3:0.9310504392364667 4:0.519503546762708 5:0.5270245209143005 6:-0.08181154800488488 7:0.5148324302455536 8:-0.6680946101511949 9:0.7574060703813035 10:-0.4721334895419935 --5.150140984417682 1:0.8113709439821006 2:0.21939305063309278 3:0.02109986546311826 4:0.07450107676582762 5:0.723883853128624 6:0.5392035186380486 7:-0.1382740221237464 8:0.9990201540159807 9:0.10429329766137108 10:-0.1365266408862309 --6.544633229269576 1:-0.08278037549320039 2:0.6982730989138761 3:0.9090685953368327 4:0.6754092061339365 5:0.5889199822482736 6:0.020678619551471433 7:0.47605785660672084 8:-0.49926771127869873 9:-0.28380077002944093 10:0.5282319276258469 -7.216836352055753 1:-0.8510680074642156 2:0.42611818262128476 3:0.593607821624947 4:0.5635067468583634 5:0.2121930523769171 6:0.2708063180622071 7:-0.31491113345871735 8:0.005990053407278095 9:0.8985259402559085 10:-0.44549339042232794 -20.874246167942125 1:-0.53010692413621 2:-0.9897084749945524 3:-0.9083978261828305 4:-0.15581655583739495 5:0.9974035542095165 6:0.9894717992956665 7:-0.7287287537245402 8:0.06425127137526943 9:-0.06684164745938337 10:-0.3600621883071937 --6.556192430758147 1:-0.7655958349167471 2:-0.08083170734199419 3:-0.8540636958251198 4:-0.09994429443696973 5:0.1734809016500265 6:-0.29563180244063325 7:0.2158497607364409 8:-0.6071644305523003 9:0.8063426715403785 10:0.47092299197899345 -7.252748885335252 1:-0.36403312429467216 2:0.1237451136826817 3:-0.5756427605741237 4:0.7612833636750866 5:0.9350628314096134 6:-0.012087843264624754 7:-0.03742573515965031 8:-0.05210460803183037 9:-0.5333214800203341 10:-0.013320030179712505 --9.2679651250406 1:-0.5057250557539077 2:-0.41655319851679495 3:0.1897431234740683 4:-0.038318717640150046 5:0.9136495575471062 6:-0.8890525036858237 7:0.40859501498633377 8:-0.8746985847539293 9:-0.005836984002720369 10:0.7838036026237987 --15.732088272239245 1:-0.8546867577633044 2:-0.3003980324850013 3:0.49649883896876834 4:0.710496747220617 5:0.5848510480601048 6:0.5714826756665468 7:0.5487975165953451 8:0.5654333402837335 9:0.863539315599626 10:-0.9699410102494574 --0.20412431312519014 1:0.13323548063028934 2:-0.3030177580658542 3:-0.6358920925969869 4:0.3729380701923921 5:-0.8131818118430312 6:0.11567152703716288 7:-0.3645508535812394 8:-0.5487213252460876 9:0.5605886387366952 10:-0.8400308993051686 -10.445759684895373 1:-0.92707280355555 2:-0.9307772570299944 3:-0.11971873660640964 4:0.5140245291069254 5:0.5751145648836897 6:-0.43850910073502347 7:-0.7872208869913662 8:-0.3087975452145404 9:-0.4645849758749403 10:-0.1563641826381328 -3.349708377102383 1:-0.6334394121009499 2:-0.9008086683014112 3:-0.2678892493467009 4:0.7626514243443427 5:0.6406493676995701 6:0.3669245573649391 7:-0.052050629941784665 8:0.6713394117904852 9:-0.11458974566378233 10:-0.25949626043219576 --23.487440120936512 1:-0.5195354431261132 2:0.8080357948412571 3:0.8498613208566037 4:0.044766977500795946 5:-0.9031972948753286 6:0.284006053218262 7:0.9640004956647206 8:-0.04090127960289358 9:0.44190479952918427 10:-0.7359820144913463 --11.827072996392571 1:0.9409739656166973 2:0.17053032210347996 3:-0.5735271206214345 4:0.2713064952443933 5:-0.11725988807909005 6:0.34413389399753047 7:-0.2987734110474076 8:-0.5436538528015331 9:-0.06578668798680076 10:0.7901644743575837 --3.650649176738987 1:0.9665344025238449 2:0.1395514751689353 3:0.954697162791015 4:0.2093601878355722 5:-0.42841737775246336 6:-0.02877209657213764 7:-0.8382526163632971 8:-0.03773878779258388 9:-0.3751775119106411 10:0.6477987464528951 -0.21915863046310957 1:0.25143109618049353 2:-0.06463696557011112 3:-0.3324862332340037 4:-0.7184623449423757 5:-0.8897217937178385 6:-0.7336278194091297 7:0.8547631637534296 8:-0.7582613025929346 9:0.9080481791309838 10:0.9427850135311773 -4.813247597584681 1:-0.4564689661727537 2:-0.4315414033069003 3:0.09676404446694242 4:0.6024645727173434 5:0.20466090997530606 6:-0.09432916868838737 7:0.6402934161890248 8:0.741842551426011 9:-0.343937669190693 10:0.308871619426873 --3.0700825038127206 1:0.660084046469162 2:-0.02317305725931229 3:0.7567569356692221 4:0.2528834502236612 5:-0.3935091635208898 6:-0.9965507922509653 7:0.9065754202428946 8:0.6988037588300844 9:0.05145737657924321 10:0.4697377584426863 -9.762542323725354 1:-0.036129448543738896 2:-0.8252508992030534 3:-0.752854859129851 4:-0.9027424488033049 5:-0.4763092428375775 6:0.4832492121777574 7:-0.2935697977919014 8:-0.9197908986231211 9:0.8914359296658816 10:0.8688484670974876 -6.690913813146277 1:-0.7649833946109403 2:0.0419327356721928 3:0.5420954694310764 4:-0.7373259510045522 5:-0.9187577877864708 6:0.6431180783847401 7:-0.6272529754533058 8:-0.43356486537110106 9:0.16848266440424364 10:0.3129700315745716 -21.325049167466855 1:-0.36392795201361383 2:0.846518905511275 3:-0.26361421923150097 4:0.5140384860444887 5:-0.9147771624497878 6:-0.22044646197773576 7:0.14099760779666948 8:-0.546631395802236 9:-0.4345465263406878 10:-0.2759894364167672 -0.41237529640734055 1:0.05016964684797287 2:0.21708512805176072 3:-0.9444942733586354 4:-0.6118772896807114 5:-0.18053631846913665 6:-0.06752556529755416 7:-0.0081819952134361 8:-0.7774039956687315 9:-0.5548994336153177 10:0.7510833121912588 --15.056482974542433 1:0.6012054064354875 2:-0.6127014811673221 3:-0.8356741843949218 4:0.19830469052767397 5:-0.07726493085289698 6:-0.5756891943805014 7:-0.49010583357941884 8:0.7493759119974515 9:-0.7828994218436376 10:0.6154265137741459 --2.109441044710089 1:-0.5757976103755722 2:0.3686657403505862 3:0.5418762444017706 4:-0.5896052565388463 5:-0.1000712585735879 6:-0.8114188394866342 7:-0.5863884932327266 8:0.28289838755838015 9:0.5378646921099333 10:0.5063780890366179 --5.249715067336168 1:0.6828022788286754 2:0.9044668986252975 3:-0.6010464361571437 4:0.8416122052398811 5:-0.9846446498408039 6:-0.3777762313579811 7:0.5763775880953983 8:-0.07608009385213488 9:-0.29576023599575474 10:0.8845728751981716 -6.907770824878343 1:-0.9751352215365647 2:-0.8297271715190588 3:-0.07240311280415779 4:0.4796310183582191 5:0.358213469979769 6:0.4628020211207058 7:-0.9753405605972942 8:-0.765583403709019 9:0.5623611232648877 10:-0.14725965272406616 --9.299021854126096 1:0.8784076266914045 2:-0.8314918563417382 3:0.8701529449600536 4:-0.8070129727442199 5:0.07396877198841345 6:0.0040889707225901795 7:0.40529205456687145 8:0.6412485325027342 9:0.1443450351498905 10:0.404997568726581 -10.95643670126225 1:-0.37321642594676097 2:0.47766490569544473 3:0.9201313123144423 4:-0.649393433578801 5:-0.9084894063674787 6:-0.2547160991750408 7:0.7674649994523459 8:0.646056370118979 9:0.6014100713287893 10:-0.15130291862509182 --2.6397202393123336 1:0.3285252466844373 2:-0.2714281159811125 3:-0.5869561846815805 4:-0.5643935541712441 5:-0.7285201267315389 6:0.6502951074428092 7:0.8611880383193904 8:0.6380425291162128 9:0.5118538704085516 10:0.4012684110865874 -12.521131042032012 1:0.4843931319727355 2:0.06440853455169626 3:-0.6151259240105509 4:-0.4180928328467284 5:-0.4607061773323424 6:0.8104775289268906 7:0.3284199695768064 8:0.8425028998495565 9:-0.34822319854822825 10:0.1969239149176112 --16.151349351277112 1:0.7787909191620395 2:-0.5219981442072688 3:-0.7230569918898555 4:-0.05707801168212101 5:-0.8134225824740247 6:0.09950684183685454 7:0.6261274830059296 8:-0.9502006765164366 9:-0.6724983095526844 10:-0.600347212281825 --5.039628433467326 1:0.7680701397575322 2:0.7956844224408437 3:0.4131717201035916 4:-0.3127895385265915 5:0.7226571953995224 6:-0.06845863083031967 7:-0.1007291660029832 8:-0.9130249132342207 9:-0.4605180615474036 10:0.42093879298156 -9.007596502870785 1:-0.6562175566238462 2:0.08420074013217049 3:0.589801949672486 4:-0.11964901133703987 5:-0.8145711913860048 6:0.43854302140351065 7:0.5992967124729605 8:0.253745043289755 9:-0.10742030998120033 10:-0.5993228348160153 --12.41094640284016 1:0.31035917086763765 2:-0.8053417167237813 3:0.5754655536186164 4:-0.3645388095106201 5:-0.9135176753316416 6:-0.8690739610562535 7:-0.14039224825138197 8:-0.7112835675593987 9:0.25762942117230825 10:-0.9483300117501923 --12.130353212287929 1:-0.41404309625298485 2:-0.7695984204591535 3:-0.44569447239245275 4:-0.3168863099965644 5:-0.26669244730409036 6:-0.33484042698895755 7:-0.41062396946367685 8:-0.09075804785640385 9:0.8511367190902208 10:0.021918606255194595 --15.375857723312297 1:-0.9794952880997945 2:-0.9547237660069134 3:0.2460912345929791 4:0.3174335823329406 5:-0.23758562926743054 6:-0.113610303129287 7:0.18292675847568063 8:-0.9656446754474337 9:-0.58300134324846 10:-0.6689602908128025 --6.397510534969392 1:0.440780662587545 2:-0.03737991637410243 3:0.9506435891605849 4:0.8177486462589998 5:-0.2917628929963241 6:0.42365289098031034 7:-0.4280555544979745 8:-0.18388426864865903 9:0.5057230088452542 10:-0.1699163749308643 --9.789294452221961 1:-0.25066699970459694 2:0.1772977344415987 3:0.5913498268900952 4:0.6293756431864681 5:-0.6430441015863757 6:-0.7238519180293621 7:0.13639541626580498 8:-0.6620281401715837 9:-0.9515237061912034 10:-0.4333426289849791 --13.15333560636553 1:0.3491978525665129 2:-0.4067353159374012 3:-0.8677040612253524 4:-0.5757086910974862 5:-0.3186886816681207 6:-0.06609938943414573 7:-0.5419747642754873 8:0.9632759660044383 9:0.2673520823110991 10:0.36463236596724546 -2.2307697392937795 1:0.12285527276472785 2:0.8938323722714365 3:-0.16995870341610209 4:-0.3298643049714254 5:0.16781582791954253 6:0.42381594687105895 7:0.9245288214717629 8:-0.08709025093361689 9:-0.14227085487682722 10:-0.2888302862659746 -5.892885365508635 1:0.10116053019915738 2:-0.41641547074900154 3:-0.3750004290914961 4:-0.5619470211369917 5:0.33343039544460384 6:0.46766042657994733 7:-0.6937940929321615 8:0.7044604392055189 9:0.8879353764416567 10:-0.5490902425042639 --16.692207021311106 1:0.9117919458569854 2:0.628599902089868 3:-0.29426892743208954 4:-0.7936280881977256 5:0.8429787263741186 6:0.7932494418330283 7:0.31956207523432667 8:0.9890773145202636 9:-0.7936494627564858 10:0.9917688731048739 -10.454641756541454 1:0.3490213088098768 2:0.6103387992494194 3:0.6753935651135747 4:-0.39560763769937934 5:-0.3042308221531884 6:-0.9283481899557042 7:-0.7904038212853011 8:0.37488335848537346 9:-0.296477977723397 10:0.30894819444660304 -0.08978797103855778 1:-0.13445409764877803 2:-0.6404150831493631 3:-0.24740260669490133 4:0.031151119464385646 5:0.9207882173498612 6:-0.6146471129497393 7:-0.9736175690408087 8:-0.2673180325645341 9:0.5800384183301572 10:0.479811220263183 -1.7362099941626894 1:0.5171681395917551 2:0.6177735922313075 3:0.6446678302226738 4:-0.5731769722311459 5:-0.2686270617709168 6:-0.6048534221658814 7:0.7002124303669326 8:-0.1479765297345712 9:0.009254061109394307 10:-0.31519081920853287 --1.0349488340235453 1:0.612980711993536 2:0.05771318707554962 3:-0.10821368362160744 4:-0.8755559420458141 5:0.42566546089913326 6:-0.7966341558699277 7:-0.45253617234374466 8:-0.8289517557653971 9:-0.8968075137250837 10:-0.6325457096866376 -0.10157453780074743 1:0.9143592240573388 2:0.06419631741815457 3:-0.9961326744227916 4:-0.47174548800139715 5:-0.0821464027819967 6:-0.5495006555498168 7:-0.5627911401420294 8:-0.43426056724099005 9:0.892026786364895 10:-0.23546485121284055 --12.92222310337042 1:0.218687524173371 2:0.013626751799176162 3:-0.8372219908323961 4:0.6197296846266354 5:0.7429130827811232 6:0.48009972886541896 7:-0.35667717521227904 8:0.18337067878780533 9:-0.22935396092245197 10:0.4076715024284059 -22.923352376063196 1:-0.7522075505725567 2:-0.20686029838909326 3:-0.1386664769095396 4:0.157117595808127 5:0.9462377653889174 6:0.9182504509330662 7:0.18170057747293833 8:0.27735387813088863 9:-0.6355799944714868 10:0.9764849106195284 --6.132450015997121 1:0.2822534275343054 2:0.2625905791399692 3:-0.02565260641304068 4:0.4891221076432757 5:-0.6426178913585772 6:-0.8999539149461033 7:0.12659507663825287 8:0.5889572439755832 9:0.49107548332672857 10:0.47595749470452 --9.173693798406978 1:0.4430245286298278 2:0.9923116639471541 3:-0.5609082824097824 4:-0.36542266258313916 5:-0.5814039716882617 6:0.20413852042674874 7:0.6097541611931963 8:0.5743002479324253 9:0.4735459963431561 10:-0.053969823043886755 --5.814408490931223 1:-0.9206287328000513 2:-0.48298486023273157 3:-0.8477202041890262 4:0.5801385102362351 5:0.7146074564553095 6:-0.5987672678579339 7:0.6829077928212723 8:-0.3522788540815065 9:0.7729595638821951 10:0.5264904880591215 -6.474329501040298 1:0.6914309300550991 2:-0.4507700505202725 3:0.713821440501512 4:0.41599059910235847 5:0.507160951750409 6:0.8635615811574222 7:-0.6235518270244333 8:-0.5336201820384283 9:-0.7989630679361768 10:0.837293162455248 -6.984517471584806 1:0.16745919469723392 2:0.018033079961716103 3:-0.7339201095541323 4:0.17042828693740697 5:0.4493471632580528 6:-0.8938445962323078 7:-0.3206968104792325 8:-0.616617071238893 9:0.9327878222034172 10:-0.6575294247048245 --12.479280211451497 1:0.9769767754725367 2:0.7706430863248943 3:-0.4506244622476816 4:0.12921761745628713 5:-0.0697804449658812 6:-0.7702703569987461 7:0.017734558413919688 8:0.7216294158911261 9:0.42547357862241886 10:-0.9001915116155741 -2.8363866587728186 1:0.11478724114928918 2:-0.4679790550082039 3:0.2344912687736711 4:0.5524878060045462 5:0.5252859884051309 6:0.5080674087215156 7:0.5010449021825665 8:0.048046765816400105 9:0.06654581719548891 10:-0.5801934713347348 -4.186809777233374 1:-0.02335342201396018 2:0.9035437912091193 3:-0.9283585631882163 4:0.454351316397237 5:-0.6948564428085262 6:0.11495485234890368 7:-0.23683956078769963 8:0.6442534752881419 9:-0.013866407845647188 10:0.23369602940650736 -2.8235031660626415 1:0.5609344938188046 2:0.3449103464885612 3:0.03972169049525687 4:0.31858762565827137 5:0.4409953589124853 6:0.22836189275697016 7:-0.1497811991899889 8:-0.23248048920679265 9:-0.30066618281100177 10:-0.9247232456911632 -6.96223432848425 1:-0.8160398553437558 2:-0.8212180893749699 3:0.7728655115832999 4:0.02387973088796369 5:-0.043499804905828166 6:-0.6997726250046865 7:-0.8686633773265577 8:-0.12597318402253976 9:0.967018116368416 10:0.5951339624149812 -4.669684795838683 1:-0.32226903644852833 2:0.5465858078942492 3:0.5228467793266189 4:-0.013157722224545143 5:0.5810668818928995 6:-0.1372653090293532 7:0.6446157527288279 8:-0.06005754873230629 9:0.014302180040152379 10:0.43474245441042636 -16.112744845653285 1:0.37257742858083365 2:0.19398954512844124 3:-0.11860882189887478 4:0.6492510749703395 5:-0.41273736981203313 6:0.18643017041815835 7:0.29136917186214384 8:0.47602883023389 9:0.7126916980867937 10:0.48462508659691483 --9.196003366226202 1:-0.7263358951920722 2:-0.8503799288093836 3:-0.3120563620589105 4:0.3925562655164563 5:0.027666662972283484 6:-0.35173134138805406 7:-0.32703527910354757 8:0.3060102722285065 9:0.8609161725740202 10:0.33394557004432923 -1.242972458167591 1:-0.9029238804456814 2:-0.6392681059531908 3:0.8940879647942577 4:-0.8807357173896475 5:-0.13628130467470512 6:-0.5487534785116224 7:-0.40270307148061346 8:0.09152108686997096 9:-0.20745066734844642 10:-0.20624830574384978 -3.453659210660726 1:0.2710596844435682 2:0.6510497900145247 3:-0.2899158136103117 4:-0.13531811694554707 5:0.6965847786422426 6:0.9105343028780231 7:-0.007340232468413754 8:0.7672537187738411 9:0.3538906829188173 10:0.35387524540947646 --0.48115211266405217 1:-0.17943755364759517 2:-0.1384979591151625 3:0.8425773648797268 4:-0.43234064993405097 5:0.919754442523921 6:0.8390197802990036 7:0.43890653121452683 8:-0.7647648217789051 9:0.14770258954363835 10:-0.6681813635676657 -6.965069440749298 1:-0.9158261471030473 2:0.5228494114644282 3:-0.07760531122743153 4:0.6154296244963067 5:0.5231830145381096 6:0.4892535590799165 7:0.1987053183082137 8:0.9995670294711712 9:-0.2020375688074112 10:-0.7853579334836087 --1.6896486293598596 1:0.4638529147853421 2:0.0953805943546191 3:0.8506904243225251 4:-0.028262644692445438 5:-0.9462342015500664 6:-0.6934738957112123 7:0.601125018257533 8:-0.04871041957758315 9:-0.015245062056267411 10:0.6119856200040805 --1.763729644326212 1:0.5376618752928528 2:0.8062119856717131 3:0.44996834959923593 4:0.9917728248530817 5:0.5974717482179492 6:-0.406972851600659 7:-0.8523198502065281 8:-0.3076377139692321 9:0.9099974915864462 10:-0.43374966692373484 -9.012829566937228 1:0.6885456531832366 2:-0.0631164354373237 3:0.8394182300770314 4:0.7207913383891218 5:0.4715324450375691 6:-0.34417503908167757 7:-0.31448279255342126 8:-0.020591617987411936 9:-0.37668573574418107 10:-0.6528048324896532 --15.951512565794573 1:-0.6112828771933607 2:0.4867007149846869 3:0.863494046941478 4:-0.7292072742454481 5:0.6338749652624007 6:0.5980798993978542 7:-0.5119002889878654 8:0.8394383182101366 9:-0.1412423080445726 10:-0.15838730884968655 --0.29622788243318465 1:-0.9436253326661384 2:0.2907259958032098 3:-0.1530538226933904 4:-0.6174176535420375 5:0.8209632215649141 6:0.5060548803172731 7:0.8212448453211292 8:0.33506684706740386 9:-0.5408309869188785 10:-0.8105966349150977 --7.683213587039055 1:0.2525015766703558 2:0.6417869320191234 3:-0.7569571597336913 4:0.5265130776924394 5:-0.03992944660560949 6:0.18292946303778823 7:0.4286344960738724 8:0.9158523573288766 9:0.5039796366711773 10:0.27660486075533797 -3.9061298856792797 1:-0.6501789225392032 2:-0.6040685518173872 3:-0.6448094322678659 4:-0.2019498832769746 5:-0.5302977370883424 6:-0.010754341856880067 7:0.8791702222974846 8:-0.2283571791337704 9:0.4726320486679656 10:0.3413255179758332 -12.928385148211825 1:0.7793178379505685 2:-0.5207562047491976 3:0.37253320760898934 4:0.7540757518052998 5:-0.679378421540417 6:-0.11966022036636881 7:-0.4317798870297489 8:-0.004211291952602059 9:0.39024653887361693 10:0.45391057946097146 -5.787566514603203 1:-0.20596730554338039 2:-0.8840796727164746 3:-0.749416279057892 4:-0.5511023306046077 5:0.9941631901218697 6:-0.09907966722992234 7:0.701617914811792 8:0.9696055014561289 9:-0.7083648075748707 10:0.5781111533720358 -5.701262468657861 1:-0.7066995012593675 2:-0.6756815056791965 3:-0.5720277255842998 4:-0.09218662060241067 5:0.21494136076896653 6:-0.37012884573008153 7:-0.6828277646796448 8:-0.10038134655965236 9:-0.46253754509583356 10:-0.20813933595648115 -0.9473494330088033 1:0.6876806675510589 2:-0.9530860102792402 3:-0.4043172626863887 4:0.6696455505098386 5:0.17863581804857254 6:0.1944646561635497 7:-0.5283662172535679 8:0.4872263841818012 9:-0.2882651789318431 10:-0.06293411605141874 --2.6834375589185675 1:-0.22376759986120187 2:0.36555755546798885 3:-0.5223502955721961 4:-0.20702347869224624 5:-0.7745351063999764 6:0.22879328233099971 7:-0.5440007473902635 8:-0.6959483071829207 9:-0.131433881760733 10:0.2764225554693165 --3.2766108642276146 1:0.0304613976530983 2:-0.3148062986719251 3:0.24950420590071953 4:0.7152023826801459 5:0.9656885739650887 6:-0.3210562623763835 7:-0.7305896664502614 8:-0.49074917893875836 9:0.7802670253347352 10:0.8667409958355992 --1.1838791995691869 1:0.06642047806096318 2:0.5336148776806793 3:-0.6199614859883396 4:-0.15342280723497237 5:0.8407250402808968 6:0.7060811811107444 7:-0.2913182140909305 8:-0.5925203360011633 9:0.22644925021629692 10:0.42395071889002467 --1.5856680515554806 1:-0.8724712788102853 2:0.11445744032031424 3:0.5483166457680566 4:0.9469521544884028 5:0.2541682828467746 6:-0.436750733871873 7:-0.9001249399695319 8:-0.7555793441458385 9:0.06946992897983018 10:0.9724148045760346 --13.039928064104615 1:-0.558607026518148 2:-0.7356765018678253 3:-0.7547644426290201 4:-0.24898664843938745 5:-0.3606374046883567 6:0.5836652368902306 7:0.8497678666873467 8:0.21331875915717635 9:0.3558733809635668 10:0.9642603628738968 --17.428674570939506 1:0.8562209225926345 2:0.7077202100653552 3:0.7449487615498371 4:0.4648122665228682 5:0.20867633509077188 6:0.08516406450475422 7:0.22426604902631664 8:-0.5503074163123833 9:-0.40653248591627533 10:-0.34680731694527833 -13.886853032969585 1:-0.6354915752033683 2:-0.9132338112681755 3:-0.4816479770266455 4:0.5448417181244594 5:-0.6250746297187781 6:0.7410618768880199 7:-0.18029029550083675 8:0.777358236920447 9:0.9625064189449102 10:0.048040935468046 -15.61684729251139 1:0.2980237970192188 2:-0.8160931971814265 3:-0.29649852157138445 4:0.3896688599904572 5:-0.17552110506337826 6:0.8721328328445139 7:0.48984799668438916 8:0.9984496052876473 9:0.9665885195526289 10:0.8966559812150274 -10.33625540376971 1:0.09939495068155724 2:0.9790332181038015 3:0.9483428886275702 4:-0.5717299810793317 5:0.4876405069057712 6:0.163962913892302 7:-0.4095537988924203 8:0.8608269751255508 9:0.010028680058212114 10:0.9095786494455713 -9.706032970113723 1:0.7687898546315146 2:-0.9825109379412285 3:-0.5423211794439926 4:-0.3099509487314134 5:-0.11561305536236333 6:0.9012327035409926 7:0.5257495475790148 8:-0.33804422025989433 9:-0.144428735681567 10:0.28019332199039604 -6.189043888072968 1:0.13246655756059478 2:-0.751192382628302 3:0.2233421456265161 4:-0.1933575076984373 5:0.8681727702736863 6:-0.7656847407654899 7:0.1033145549916572 8:0.33909210370257403 9:-0.22241363302770267 10:-0.14479004187830435 --8.680225911784335 1:-0.07718769939880432 2:0.6702228057326558 3:0.6647810334933819 4:-0.05115658747070784 5:-0.850780588302118 6:-0.040961453376221924 7:-0.8407690297644956 8:0.33775829053563156 9:-0.45421556034898547 10:0.8238500771967823 --9.42898793151394 1:0.8925906426831107 2:-0.6771269725125597 3:-0.11635105688280678 4:-0.7266044201050157 5:-0.6902918845825077 6:-0.5911234800910024 7:0.49395074569300657 8:0.43660804414878274 9:0.8736983081269782 10:-0.8001177058312081 -8.486245765579415 1:0.5614295382716652 2:0.3972427851719582 3:-0.276268504977494 4:0.7803448249454739 5:-0.358957923558495 6:0.3477822689529795 7:-0.7944805581842691 8:0.8356932134547437 9:-0.4783293647580624 10:-0.2522633417723845 --1.8722161156986976 1:0.11831037290857482 2:-0.7309091607574014 3:-0.7339122716951587 4:0.2046641765436359 5:-0.9914679283125301 6:0.13518339528098555 7:-0.9760821540963867 8:-0.6080636193563043 9:0.3890502262427238 10:0.33864957953815145 -0.5122357093733743 1:-0.9555852441641726 2:0.4754771858792488 3:0.3743376249200432 4:-0.2651772997462427 5:-0.7915484529586028 6:-0.7575915279708862 7:-0.10432268807273859 8:0.021604934223709238 9:-0.6458011732912265 10:0.40773716196391674 --18.845922472898582 1:-0.6031480148285926 2:-0.8736524730197766 3:-0.311456616524979 4:0.420921703897325 5:-0.2904011177124777 6:0.6683252350591937 7:-0.3436202976676894 8:0.5023604359385605 9:-0.33056149241985633 10:0.5168854058825227 -6.492106438811399 1:0.7824832256885428 2:0.6105456307389117 3:-0.0436873997963223 4:0.46730493583332855 5:0.2057529813440686 6:0.5738310686722767 7:0.6307964411259019 8:0.6208424783086652 9:0.8931894299284251 10:0.7164648197763028 --1.6472226859532182 1:0.8854767145642171 2:-0.8175744681485637 3:-0.14894858038610903 4:0.9667400540136402 5:-0.3575837217508149 6:-0.9211342680517054 7:-0.956785876301889 8:0.6558217028031554 9:0.8014538160668165 10:-0.9475520920917395 -0.185861229793925 1:-0.8181719548530746 2:0.9990094335332504 3:-0.8195848911987829 4:0.6991933015233858 5:0.07295718417836583 6:0.5968996100546737 7:0.4871410306452193 8:0.2980483098540927 9:0.779953293728507 10:-0.7978867112395516 --5.973450525185694 1:-0.975435413991927 2:-0.7832951303253313 3:0.5098999023442101 4:0.46795978867990007 5:0.2538986807863044 6:-0.8182887550010198 7:0.8335391734637112 8:0.4286082996234335 9:-0.1726765956719154 10:0.7649845978453362 --12.773226999251197 1:-0.383327656965585 2:-0.9439560491389036 3:0.25039001869622446 4:-0.9342091044843222 5:0.8711023711291135 6:-0.6027135241543655 7:0.9456874780319795 8:-0.243290468946338 9:0.625765915285031 10:0.5160550067618355 -24.290551295953957 1:-0.8368553572749229 2:-0.5859456648150321 3:0.873779532007048 4:0.7462623178738954 5:-0.08133011570245352 6:0.36767541461776676 7:-0.33129619282275047 8:0.6104289727615573 9:0.9416581563055089 10:0.18201841676606856 -14.490247980976621 1:-0.4765937762114507 2:0.16430711839945555 3:-0.526776940706293 4:-0.6802269991653915 5:0.40748236413299344 6:-0.500290139207977 7:-0.31915972151663885 8:-0.4586068416002418 9:-0.15572660263944127 10:-0.32925702602833073 -8.377230871265601 1:0.44141613060964846 2:0.1582267687752743 3:0.8760950367284166 4:0.40434058393690364 5:-0.7063758409891474 6:-0.616055773516162 7:0.996372393127579 8:0.6142084876085476 9:-0.528320587432094 10:-0.2815909691094802 --3.2987560995836653 1:-0.4600479783378091 2:-0.04201794336103326 3:-0.8934505203905587 4:-0.44991326751905536 5:-0.5220579476363783 6:0.46060949186328703 7:0.9169289030735643 8:-0.022458426893944283 9:0.08100795210565637 10:0.5726732415540354 -0.3422568955736137 1:-0.9888686059817204 2:0.22752298580182706 3:-0.5048696915520232 4:-0.059433420464226616 5:0.7823831512651716 6:0.9865977573980389 7:0.9164100011124972 8:-0.3638554550863984 9:0.3038282907667611 10:0.4652367033461571 --8.24116881862084 1:0.7565819250331731 2:-0.3733277500524168 3:-0.8841150081071696 4:-0.922282989989148 5:-0.041520813551309876 6:0.8615967014876558 7:0.8474207144091339 8:-0.7518437864641427 9:0.45076605239968837 10:-0.48912984167595375 --4.367083147104942 1:-0.276459380002813 2:-0.957555271384241 3:-0.3761632810202544 4:-0.3897414804149022 5:-0.3133861519856074 6:0.0777990809172171 7:0.6638552243422928 8:-0.3477312155364247 9:0.5934885465182675 10:-0.5238903641193555 -1.9280240152322783 1:-0.40051093785549696 2:0.5070348672240661 3:0.7506759969575532 4:0.5042104954516786 5:0.9959688260926507 6:0.4657024999761399 7:0.910611131925299 8:0.9836517468598804 9:-0.6263172749113686 10:0.16955852322929155 -8.918138317441574 1:-0.22407391224687023 2:0.5545084933214972 3:0.6335932367683528 4:-0.2786481116648991 5:-0.9549992830441785 6:-0.5577873948545062 7:-0.960657200286197 8:0.3709573488946196 9:-0.9191180485753339 10:0.5033478020271929 --5.657796797481157 1:0.6359910361030725 2:-0.1742637774815281 3:0.39699327107265137 4:-0.9841991491194473 5:-0.622093571871533 6:-0.5433497301426455 7:-0.6731178481686009 8:0.930615153085582 9:-0.3065877908950827 10:-0.5456093749639228 -8.697079562319692 1:0.4815820396629933 2:0.1173457441514223 3:0.7313645402039386 4:0.3354835387237334 5:-0.10300554535074702 6:0.5116687640761355 7:-0.8850803659104614 8:0.10654026377571157 9:-0.864976708975602 10:0.01345035085413615 -0.033954684723234596 1:0.6703241653088159 2:-0.13447915740201166 3:0.026022550037831937 4:-0.5145659862194116 5:-0.6963587636078901 6:0.652083884947352 7:0.22644722530715278 8:0.2671580129293405 9:0.9659035105360283 10:0.9547989197693989 -7.359108382166921 1:-0.6855762478384229 2:-0.7543318537260015 3:0.4772611975128618 4:-0.5588002332845741 5:-0.24271386844336496 6:-0.28595644325868896 7:0.8732728098501104 8:-0.8026384804471058 9:0.7589508830210041 10:-0.9992933613402135 -4.953597303754355 1:0.8915633023548608 2:0.04688596266450751 3:-0.26866754730613374 4:0.16694236975718102 5:0.23465297255622608 6:0.36488427850844407 7:-0.06717041145276781 8:0.9470029805221898 9:0.32483835237272674 10:-0.7892521260150298 -0.683536559775105 1:-0.32176084249781556 2:0.5446298870866526 3:0.4095848716057642 4:-0.42579711490120187 5:0.4482850543749355 6:-0.0982243826242506 7:-0.9190317048427039 8:0.06234509402976718 9:0.21327512416175054 10:-0.38023673796734525 --28.571478869743427 1:-0.4597184465402242 2:-0.5489429386926741 3:0.33422914572951634 4:-0.15992695377395516 5:-0.7310003311728188 6:0.18241063863467488 7:-0.48385214010599453 8:0.08139879039334552 9:-0.8401239538877046 10:-0.8896372220209929 --19.884560774273424 1:0.4619217451285318 2:0.28157115824800005 3:-0.3829811521605375 4:0.5802544015450464 5:0.1117061271473403 6:-0.8926034502584623 7:-0.34862293810401956 8:0.2733254857260612 9:0.6514176550598809 10:-0.02758604919357066 --17.494200356883344 1:-0.4218585945316018 2:0.15566399304488754 3:-0.164665303422032 4:-0.8579743106885072 5:0.5651453461779163 6:-0.6582935645654426 7:-0.40838717556437576 8:-0.19258926475033356 9:0.9864284520934183 10:0.7156150246487265 --15.86200932757056 1:-0.6341453831788726 2:-0.9259180639727085 3:0.302702923864538 4:0.749555004323947 5:-0.7932989575334761 6:-0.5620972938631934 7:0.020542041027870717 8:0.11610338700447698 9:-0.7912600154897766 10:0.5108307672038874 -9.027804254487519 1:0.1746878011084212 2:-0.5872807344913673 3:0.6018547246457264 4:0.5106104933121229 5:0.7329523371170135 6:-0.40058771577765895 7:-0.48753463550174025 8:0.34308791976318 9:0.3407668956765344 10:0.5964472848798394 -15.949172086880687 1:-0.7790584545657173 2:-0.017224094786103317 3:-0.0974907790179953 4:-0.10287391996036166 5:0.6007953354774878 6:-0.7032497754397848 7:-0.36068070856329437 8:0.021391994204512432 9:-0.6509100388083549 10:-0.5410899936281377 --6.151586699415245 1:-0.5318094974022525 2:-0.830796057445983 3:0.603828597318087 4:0.6660892552257192 5:-0.18529748408390523 6:-0.47166833767648986 7:0.592915541856605 8:0.9944601563352204 9:-0.6981606574244703 10:0.34942553665003584 -2.010398523297265 1:-0.9293899922307269 2:-0.07588009904844029 3:-0.8500855420709359 4:0.12191867923536615 5:-0.528778681165414 6:0.3117086447237414 7:-0.4222963938187163 8:-0.03247894950300623 9:-0.05387792412717962 10:0.4053568741659812 --6.749023248121471 1:-0.9875370165216966 2:0.7137693455001415 3:-0.2510160963160164 4:0.8732150877079123 5:0.49658934612905314 6:-0.9817012857861731 7:-0.2045309437850289 8:0.7562713668333418 9:-0.6787434327188155 10:-0.6147932888026117 -4.452639829999693 1:-0.35256148944834176 2:0.7581152951164591 3:-0.37755890552299265 4:0.9480813371197343 5:-0.3419340388717347 6:0.3487602851799074 7:-0.5576726724270562 8:0.4899696188087421 9:0.563074979676983 10:0.7865891460062227 --4.938733988900586 1:-0.4108386466193119 2:0.3287655432069885 3:-0.5853553038038923 4:-0.6480591422742821 5:-0.4787998161299789 6:-0.5828003484675421 7:0.42835744317623003 8:0.8378098987706633 9:-0.5645180498703375 10:0.28981512694646705 --3.373242544176224 1:0.04989033652617936 2:0.6575826440927308 3:-0.24028051935833128 4:-0.6649808138961095 5:-0.6530198970442704 6:-0.19331254127919362 7:-0.6743004878881749 8:-0.7214986105015062 9:-0.30648035516261385 10:-0.6455097687924254 --3.2843694575334834 1:-0.3548536057581908 2:0.7350125943559394 3:-0.3635282827378974 4:-0.8552820154885781 5:0.9140879208466111 6:0.21870365067770892 7:-0.17738543429561382 8:-0.052851966578491005 9:-0.36066059517759097 10:-0.9020765799355679 --3.277146077677404 1:0.910961221014513 2:0.4302525202590246 3:0.11079959840001119 4:-0.3614188274820125 5:0.5080231397310961 6:0.013940825892631237 7:0.33583012240022403 8:0.5008797094229163 9:-0.663083147090173 10:-0.0865028013627418 --0.202246147968096 1:-0.4929308143227653 2:0.8374300027105082 3:0.08763999085193186 4:-0.499738438136623 5:0.5926071511295365 6:-0.5135396038023627 7:0.6946715869746543 8:-0.5184428793490325 9:0.21753085495829239 10:-0.33796308746585235 --7.1237150573506955 1:-0.8506203499039495 2:-0.6581804183622855 3:0.6484205342724825 4:0.013914696389758285 5:-0.6214530117645831 6:-0.011163110491807293 7:-0.6025372583334574 8:-0.0371573886520411 9:-0.7933455929226487 10:-0.38653838674273455 -6.298226129171093 1:0.7304191211928768 2:0.8128475475660479 3:-0.03161148630216015 4:-0.6018899317958344 5:0.19277055729934367 6:0.3002272616310928 7:0.949169758830406 8:-0.1011823256970481 9:0.16093341376629966 10:0.9596833606094763 -14.906594657519511 1:0.5053240355803015 2:0.6775698974866082 3:-0.6194771000646291 4:-0.02876927004033525 5:-0.5481504206112477 6:-0.9239150546263386 7:0.471216755072994 8:-0.0027794620943384363 9:-0.8954411386878227 10:0.8991742143686698 -2.1710965297686267 1:0.4578509053930304 2:0.9270194505165124 3:0.22470373699901236 4:0.21526179917432753 5:0.5299563895862103 6:-0.5824108997775908 7:0.03801922095671095 8:-0.5164033454609385 9:0.4370246809487237 10:0.6514133050988229 -15.05806598279517 1:0.48645077410559057 2:0.7821442063987365 3:0.1943681666933883 4:0.8289246958621577 5:-0.08034311437806041 6:0.03709694472527203 7:-0.895481297246602 8:-0.42921579749551664 9:0.5447075872378688 10:0.844397849728866 --0.4683784136986876 1:-0.5083135683360327 2:0.626070365769088 3:-0.8737725909401557 4:0.725622293853621 5:0.0018794384199978253 6:-0.9343604622552886 7:0.6655593328822609 8:0.47501755618845753 9:0.8388618477210947 10:-0.5143806767304449 -5.823027255871114 1:0.08635467091841886 2:0.6314532702073175 3:0.8862069437865836 4:0.6542025864928516 5:-0.6846784290231471 6:0.048487096050569445 7:0.30828004933669395 8:-0.49438881988995687 9:0.5706936923061823 10:0.037705651885639346 -7.03779380408974 1:-0.07193682621291098 2:-0.5816975957307158 3:-0.8426927090342973 4:-0.37504851992255306 5:0.4473129018316815 6:0.3101938194888525 7:0.6160050428837607 8:-0.913998555949695 9:0.40461966540531313 10:-0.7581141330823786 --9.770500546345563 1:-0.31358873581579894 2:0.11771478839130278 3:-0.3404842110585631 4:-0.0604362797252429 5:0.2159524972176814 6:-0.24737863017398087 7:-0.8541428610709716 8:-0.06753562283135062 9:-0.11567537916769255 10:-0.5606246203677223 -20.000154367451547 1:-0.344717847914646 2:0.8454969480099985 3:-0.58856299370874 4:0.5884510299634649 5:0.49162879631128553 6:0.7958075013181658 7:0.7781911267315837 8:-0.6780885011989877 9:0.9797694629597928 10:-0.1872163682079866 --6.239848349456753 1:0.9132793720646253 2:0.1680340663118458 3:0.01740115925682284 4:-0.26580395408599133 5:0.28551914590761074 6:-0.9939706142381568 7:-0.8740927279520219 8:-0.8731218126652498 9:-0.10993630739903892 10:-0.3069565039708746 --4.173072569004537 1:0.7864835254860851 2:-0.5614522227484218 3:-0.7718396381376464 4:0.49508673889127985 5:0.24030155936964714 6:0.8080778221819038 7:0.05395496402881128 8:-0.3045148076729973 9:-0.6134406357458853 10:0.7447268183581948 --11.328415936777782 1:-0.10183127796258096 2:0.5689039487721601 3:-0.07015335898840225 4:0.23254189629731292 5:-0.3226974656715038 6:0.2859450214054784 7:-0.4916677058012495 8:-0.27564895614732055 9:-0.9416483232894219 10:-0.7472248333434015 -8.719164753818454 1:-0.8231424386390782 2:-0.03953537069863633 3:-0.3271580541537027 4:0.892192314973022 5:-0.6759017192358232 6:-0.419591686354591 7:-0.23967385135363606 8:0.936992531568956 9:-0.12946409158671512 10:-0.9082863469271643 -22.31738046492344 1:0.37030851555335365 2:-0.06654751559177563 3:-0.5759425437665169 4:0.9179952251152963 5:0.8628921839116359 6:0.8421952184405965 7:0.9625804174561126 8:-0.03075332253237728 9:0.12227386374957994 10:-0.6243390357793757 --1.189108450798179 1:0.5681776913545951 2:0.46049028271139436 3:-0.366463711956754 4:0.025856437432560275 5:0.7547565372954261 6:0.5506193192167212 7:-0.6279807084274867 8:-0.38698884324386107 9:-0.9885778854008227 10:0.7814740172261654 -2.8767042393531965 1:-0.6841229745503388 2:0.6252203895646273 3:-0.6737644654353572 4:-0.7321040107741059 5:0.3162570540986238 6:0.6211089085315002 7:-0.33984617437403464 8:0.1227089818682312 9:0.04586594421613177 10:-0.4679977358965799 -2.783332151730615 1:-0.39148258540779013 2:-0.3037233649803406 3:0.7955133548911926 4:-0.1729544208044842 5:-0.18247049275020033 6:-0.1315085429729259 7:-4.447133918370483E-4 8:-0.805837119503338 9:0.11574866650006688 10:0.8517519041042676 --8.99205564094827 1:-0.45501536967706535 2:-0.35829694693457914 3:0.775695048377375 4:-0.25331195582275745 5:0.15524612858817055 6:0.7400717904631442 7:0.8382485596668376 8:-0.5619009369436814 9:0.4386801597659249 10:0.09960232210246622 --9.808386702564658 1:-0.987404834666963 2:-0.6732308850750186 3:0.5528285725528492 4:-0.8796302275267409 5:0.30705569958232193 6:0.8635312232105203 7:-0.14033675947074187 8:0.5516086773506235 9:-0.7487899106678442 10:0.8851518933134919 -4.948281656077033 1:0.4331269064492329 2:0.4628446087354616 3:0.33730748244242537 4:0.3473124014683382 5:-0.1707966473106064 6:0.8558057784524846 7:0.1390312032172829 8:-0.7918343112673001 9:-0.85993782695915 10:0.33563174747577107 -10.791261476321019 1:-0.5417345768902055 2:-0.06334901799780424 3:0.027652223245870466 4:-0.9881487640651161 5:-0.19441123027957707 6:0.40295156581142355 7:-0.8315553696517317 8:0.11405283165483926 9:0.5377980570161418 10:-0.24581620554740824 --0.7287230169119936 1:0.33985587202063283 2:0.6841261099887705 3:-0.9441564997438197 4:0.28660913255058906 5:-0.7597915572726905 6:-0.8535957517473378 7:0.609134673753593 8:0.29636368731717977 9:0.05791523580926916 10:0.5589907965230858 --26.805483428483072 1:0.4572552704218824 2:-0.576096954000229 3:-0.20809839485012915 4:0.9140086345619809 5:-0.5922981637492224 6:-0.8969369345510854 7:0.3741080343476908 8:-0.01854004246308416 9:0.07834089512221243 10:0.3838413057880994 --16.71909683360509 1:-0.24375714099465773 2:-0.11915875769929496 3:-0.3741442802364221 4:-0.3812947578178094 5:-0.7032156297055756 6:-0.18339122712542388 7:-0.8634662520461855 8:-0.714561692659166 9:0.020558676493369177 10:0.22804428969949986 --8.822357870425154 1:0.39332200105884363 2:0.5652370435795515 3:0.6220479966351453 4:-0.018976695481651484 5:-0.6868425195058918 6:0.2029750380170401 7:-0.5550873767310935 8:0.16864133648532342 9:-0.008843355054633628 10:0.6472547984399621 -0.36392761004065594 1:-0.9059630492963144 2:-0.41039282402227384 3:-0.006673269562094131 4:-0.4989314017618798 5:-0.17726034513032318 6:0.037764439388023874 7:0.30703957185016595 8:-0.09040426404909185 9:0.38661451965066274 10:0.1630571642147851 -7.415902871490132 1:0.188586850708651 2:-0.33013604761672566 3:0.6667976416858177 4:0.8537064956198137 5:0.03971370422819254 6:-0.43229195778759966 7:-0.9607154505216515 8:0.8413204878098277 9:0.40010565279599897 10:0.7306602852367441 --4.129456164370826 1:-0.7967510984807558 2:0.545111159425699 3:0.16038228447433012 4:0.6311115528116698 5:-0.01985759480036542 6:-0.9516543115476572 7:0.18022912194075458 8:-0.2177157123823752 9:-0.5433158910016767 10:-0.4603867691069983 --9.211066571082247 1:-0.3611235296125135 2:0.1402619601475985 3:-0.23132525512647795 4:0.5534401725834837 5:-0.34978585787763206 6:-0.24147682088922773 7:0.8089009287617064 8:-0.09075864922490862 9:-0.05759391404550773 10:0.3371306765964468 -6.52392916461972 1:0.19122050285976044 2:-0.625453376800498 3:-0.26804961781489856 4:0.9669297468261109 5:0.9142504122291741 6:0.7678963028488108 7:-0.6852943621882759 8:0.5898129788981794 9:-0.6580947533327339 10:0.46875109532259396 --12.46765638103286 1:0.35148385951742633 2:-0.5206883134357769 3:0.35436280451876345 4:-0.8837833467474128 5:0.3433887284719144 6:0.3914771858025621 7:-0.17813796710416252 8:0.6553344538056296 9:0.3721548243590813 10:0.9442185832979726 --4.937258492902948 1:0.9150659354384785 2:-0.17085510578573548 3:0.8233227233543232 4:0.2539669132090434 5:0.18955049451212935 6:-0.2833188558310358 7:-0.48483747414616496 8:0.8917378487725669 9:-0.13169122011498646 10:0.9815059855284158 --0.5233425797210233 1:0.4238363705720569 2:-0.18363058784066522 3:0.2949874786744968 4:0.12235592695567354 5:-0.9746310186182559 6:-0.8990867637441311 7:-0.8580982328464586 8:-0.7930887027205957 9:0.16757307988090275 10:0.988861929608575 --11.904986902675114 1:-0.3692990475534952 2:0.32166293883244323 3:0.3401547722249436 4:0.10009747375878408 5:0.7598877208920192 6:0.2853003389082669 7:0.22880221701675074 8:0.4521491122351502 9:0.33222018268933895 10:-0.9500018867461919 -8.324969054805921 1:-0.48086111720736513 2:0.3705524122401185 3:0.43635448766342133 4:0.6544321903349255 5:0.059000747296945155 6:0.3328036763371236 7:0.9609146376298034 8:0.5943082361322021 9:-0.3074246170581105 10:-0.6763916655761453 -0.21701641918233017 1:-0.29449708766806304 2:0.040640346437143426 3:-0.6524819533513639 4:0.37482287233702394 5:-0.29800608396043216 6:-0.537030944860492 7:0.2862394027536084 8:-0.3783043133672048 9:-0.5292179323972728 10:-0.09583783955916791 --6.84977373580439 1:0.825136109631339 2:-0.5722868691442817 3:0.11048134523744757 4:-0.5946054293068455 5:0.28061485657354823 6:0.9135611623885838 7:0.35590421873954603 8:0.8943562249941011 9:0.4183378981109729 10:0.5714160298247304 --11.039347808253828 1:-0.9620263418414967 2:0.22669065740934724 3:-0.7378036492234086 4:-0.4460191511609126 5:-0.2594476006347024 6:-0.989879976130936 7:0.762096015449097 8:0.6983868222083149 9:0.8729993459982626 10:0.3426647417451305 --5.882860061103163 1:0.5247178959769465 2:-0.6217169944869176 3:-0.13640714414758315 4:0.6608201052790283 5:0.5789945243704264 6:-0.12686057623612612 7:0.7277882307863026 8:-0.47949544949858236 9:0.9781208432412936 10:-0.8980068284379361 -23.52945433069272 1:-0.12339549394875426 2:-0.6769524283089239 3:0.9324962870874394 4:0.28956947294105206 5:-0.2957355479338608 6:0.7504385350771912 7:-0.8769262306643106 8:0.41591311300668155 9:-0.7694611231426498 10:0.9885110924181837 -19.043184423383824 1:-0.13783178628851878 2:-0.853631844645959 3:-0.12792415583066052 4:0.6936898387576049 5:0.8488563282318959 6:-0.6530521292304581 7:0.27832187660440666 8:0.09838048719062442 9:-0.5913230087557231 10:0.260839433107553 -6.83105883806984 1:-0.9085282656519695 2:0.65203708247844 3:-0.687580071985604 4:-0.045008726377529173 5:0.4762107922777967 6:0.15939259525248506 7:-0.46363191848939334 8:-0.25856682230410266 9:0.313842004143269 10:0.5042938214484851 --9.409197719620593 1:-0.34356198962701945 2:-0.06381545064099514 3:-0.9332814619122063 4:-0.2629675367181199 5:-0.03876014002851913 6:-0.4606936151803749 7:0.49272969757318563 8:0.5550196351479111 9:-0.1758425343811718 10:0.20285868144226837 --1.3101852978323116 1:-0.3740821549570985 2:-0.9788976137554464 3:-0.6078739734947245 4:-0.8007745980271539 5:0.7381298546055934 6:0.7407750458109124 7:-0.7711351008178868 8:-0.9895256155202141 9:0.35793767138197174 10:0.6589909255086295 -0.5180809608973377 1:0.19289850282287446 2:0.6301214514538145 3:-0.15311307199521518 4:-0.8607670552113709 5:-0.46422067276745316 6:-0.29812862604449464 7:0.519464836430044 8:-0.9480450997338103 9:0.973503038633444 10:-0.7843880226794626 -1.9947872601406775 1:-0.15799682110486057 2:0.22645891561571352 3:0.3141842574216682 4:-0.36086019480721676 5:-0.1429373936064291 6:0.8097261636650581 7:0.11764088861630029 8:-0.9151998265501957 9:0.6536711690904891 10:-0.17232697113157425 -12.352290000973428 1:0.8176113135335772 2:0.39342616792621987 3:0.44011948797971234 4:-0.4412435869837865 5:-0.24509203724837314 6:0.8636655043434542 7:-0.4251583124505798 8:0.2068056615503988 9:-0.3501114760443049 10:-0.23701353324739483 --2.891643319177732 1:0.7722403010820704 2:0.7994121584045861 3:0.18520464815273208 4:0.7273575609391227 5:-0.3758589216283552 6:-0.7598404862373955 7:0.5748649410179301 8:0.6897988099260968 9:0.5638920860629713 10:-0.992567809902162 -4.803737144054077 1:-0.7367711178556622 2:0.07370548192399351 3:-0.5510509754264419 4:0.11949095653894504 5:-0.7723751845800411 6:0.6450480728551136 7:-0.9508825019800493 8:-0.3250395411575804 9:-0.24913562167143777 10:-0.3617439870343031 -5.051689886526102 1:-0.09854955786627007 2:0.5298224514703289 3:-0.014996634675966236 4:-0.4462048687049027 5:0.22912790083984547 6:-0.513533454471272 7:0.1452771069237353 8:0.371152210841464 9:0.9204732090987018 10:0.7472990716905279 -3.8591142298280476 1:0.7532169023970261 2:0.8291433156934658 3:0.9255891263525324 4:0.3248663809949248 5:0.9905320652281553 6:-0.10383453745167626 7:0.8519246838852608 8:0.6024015353989258 9:-0.06958036249881938 10:0.5862142389541998 -11.30005914221598 1:0.026411858067972194 2:-0.6968445330429607 3:-0.8194566946165238 4:-0.12780659247925996 5:0.8406393783194903 6:-0.24617182945415128 7:0.30199973460219853 8:0.6062457235841974 9:-0.19314055910416927 10:-0.48313233883372964 --10.288657252388708 1:-0.7388306404020344 2:0.07753617971873439 3:-0.5735498713988352 4:0.2183581175474576 5:-0.873572721679176 6:-0.8788755575751708 7:0.7087858362905568 8:0.7126712562404713 9:-0.7607334319316799 10:-0.4627367552114916 -4.895250842405817 1:0.9772954128558484 2:0.6020087399988574 3:0.16946626176056134 4:-0.011334492807484997 5:-0.5391845039589362 6:-0.4315843612118535 7:0.9065130011032458 8:-0.4860160207844919 9:0.0921755607946162 10:-0.022200673265013515 -1.0479421939727227 1:-0.055436367433274514 2:-0.6710483362647659 3:0.9222786043047919 4:-0.22005981623386184 5:-0.8141845044113469 6:-0.31766631447334226 7:0.6067696845798944 8:-0.1445661385071555 9:0.9172271611227454 10:-0.8079554780561127 --9.754451457291598 1:0.533713237587885 2:0.6499588942067549 3:-0.49188790503368285 4:-0.6925119436487435 5:0.3345265979579788 6:-0.8117849521672496 7:0.9312055115656304 8:0.3273803451149724 9:0.7567478475677727 10:-0.6256676928549367 -5.869027126482974 1:0.7273823383600513 2:-0.2519813990388706 3:-0.8239584025397881 4:-0.13749750031735974 5:0.6142824732416132 6:0.6251630800232315 7:-0.6138240706157267 8:0.7210396245391326 9:-0.41832155201953714 10:-0.8965988320689853 -9.14234252751227 1:0.7295320896113133 2:0.6150271212503227 3:-0.9785024737101733 4:0.30006672036705506 5:0.11703528191771406 6:0.2971639460196238 7:-0.7920108995168815 8:0.32649036066184567 9:0.03522428067355543 10:-0.1766251898148803 --5.643698771141404 1:0.27360638280623983 2:-0.6124401810442446 3:0.24950528730210886 4:0.09920211684887548 5:0.7187490549286091 6:0.6212724115415782 7:0.5864634211269566 8:0.114951165007104 9:0.44859258949094283 10:-0.3768352371578665 -12.781643819428492 1:0.9144335582094396 2:-0.4579872615218674 3:-0.6521934534632468 4:0.4462086111316512 5:0.240360283350179 6:0.23974046479581124 7:0.4840439971437822 8:-0.7250363120037027 9:-0.29769496257362094 10:-0.3382859512018359 -8.393556738722923 1:-0.8263387132502396 2:0.9434824094966923 3:0.1607861709872136 4:0.15217100448798782 5:-0.6517945935711484 6:-3.354731073326178E-4 7:0.07846631386981562 8:0.687844846942889 9:0.9277854407325892 10:-0.8855380268588307 --15.348871155379253 1:-0.5734707274250155 2:-0.2526008551945753 3:0.23752094195309925 4:-0.7074613963298721 5:0.4674168537545218 6:-0.3198997855552628 7:-0.10415974108745596 8:0.5616912699671224 9:0.43742425558560694 10:0.19732530755184596 -13.138260063721448 1:-0.9415220143797984 2:0.6015431361268124 3:0.38898046240229545 4:-0.5750448371021175 5:-0.5803995196333898 6:0.11772198725731342 7:0.7512685244060366 8:-0.6683465740662857 9:0.9515652825318053 10:-0.32405935964523547 --26.736207182601724 1:-0.47083104147202404 2:0.28748860067800597 3:0.007399318769021113 4:-0.8189013750589702 5:-0.5156633937248272 6:-0.9906928746525896 7:-0.8848419810272337 8:0.2197280161306785 9:0.12855082514870197 10:-0.7862803985146845 --20.212077258958672 1:0.5609065808412279 2:-0.9201904391147984 3:0.908305865183735 4:0.9255146658282842 5:0.6871419344095282 6:0.4201876217923466 7:-0.42906289792612684 8:0.5787691868233418 9:0.7260522064761288 10:0.28251641556690554 --0.44652227528840105 1:0.37640618494870504 2:-0.20012451052963542 3:0.9420894309510319 4:0.4218728633972739 5:0.5551974480349577 6:0.07615991810462619 7:-0.12409220462011294 8:-0.22212591926375946 9:0.21160498862483723 10:-0.6092792830633924 --1.9481059746438067 1:-0.43820030250217457 2:-0.6836588417639442 3:0.733018205278934 4:-0.6564348753121718 5:0.7333385435136448 6:-0.5577457688360317 7:-0.31035811050608975 8:-0.7189201447768139 9:-0.7629842028723994 10:0.7179459779331092 -1.1951162998609508 1:0.19541555859727744 2:-0.4796785506546435 3:0.14123852670749248 4:0.7161847585887089 5:-0.2502765085719578 6:0.8815667909545981 7:-0.6418691905513725 8:0.49600147195728783 9:-0.3091837674381053 10:0.4320162841463153 --8.99125390483227 1:-0.01183888602092864 2:-0.5901829024081027 3:-0.4343074406380647 4:-0.40450313056290166 5:0.05269590196351448 6:0.733631212862198 7:0.9575176715505025 8:0.5974628692830348 9:-0.20284241796038271 10:0.9577348510907686 --7.955533026930219 1:0.6104830760481679 2:0.5915483572646505 3:0.3275427350991458 4:0.48361434056132424 5:-0.9466590639056058 6:-0.24662428438925743 7:0.9856361456534972 8:0.9434155212648045 9:0.3466736921968707 10:0.12927980558284102 --12.500773785355054 1:0.5733321361720694 2:0.39154119830075085 3:-0.9347116355607772 4:0.0920586614926524 5:-0.6959457183810456 6:0.2136579936466858 7:0.17595268059814395 8:0.8828168055200465 9:0.18934277314853398 10:0.7565908584660754 --11.43180236554046 1:0.082018621904135 2:0.9074181204118958 3:0.46125595008850273 4:0.40328845936169966 5:0.7803064691948824 6:0.20802011482729377 7:-0.41368899649077284 8:-0.8997565495498339 9:-0.1880483213318005 10:-0.15538597634233264 --5.055293333055445 1:0.4442675297698402 2:0.19045719972922193 3:0.4877438951288897 4:0.7984474402420494 5:0.3251350777349489 6:-0.18676050499673869 7:-0.2701840041572374 8:0.4486609996458524 9:0.5403637876036615 10:-0.8971614841211264 -1.0276485382241776 1:0.7953696703382547 2:-0.3245779681908927 3:-0.3507435626548021 4:0.9510986059491036 5:-0.8655491074076527 6:0.20729233888498677 7:-0.43078300089533594 8:0.19504657032168216 9:-0.3173814102187291 10:-0.042479969052890754 -9.690201571311908 1:0.16852987139559206 2:-0.2514893273405625 3:-0.9993240281686275 4:-0.2166013247997891 5:0.33294165754921234 6:-0.5824203831560628 7:-0.15253642946648616 8:0.3547892367555441 9:-0.047604356104869794 10:0.9229112136183077 -2.2591036039970347 1:-0.9919593184325572 2:0.6323551392201245 3:-0.20815293136790447 4:-0.002395046469600759 5:-0.5015903362190326 6:-0.16698803749234048 7:0.7901657583805675 8:0.33755402936964973 9:-0.3707337678548108 10:0.6995480653730146 -1.5130881908855742 1:0.973710432688613 2:0.6518972988019702 3:-0.16491318496856833 4:-0.6066757853095415 5:0.8762371591845273 6:-0.9056066630820714 7:-0.3388079327070965 8:0.3934146060660142 9:-0.8756168865642253 10:0.9522427911640303 -4.023618949132531 1:-0.14974626191548301 2:-0.5874962377709136 3:0.6780439909311404 4:-0.37291203746764356 5:0.08104034602232169 6:-0.4706923395029945 7:-0.8924577368048239 8:-0.3363784341297067 9:-0.4139746050396018 10:-0.5107600309932907 --2.8674162893420965 1:-0.7554383289076523 2:-0.1355597928418868 3:-0.3891904246986413 4:0.43949832438341785 5:-0.43859957095446833 6:0.37548094528561093 7:-0.5228633291549518 8:0.24169710795100352 9:0.7131753590746546 10:0.03458176767001042 -4.661164232198611 1:-0.12738868751385546 2:0.9446285809821182 3:-0.17981416859193433 4:-0.7535879975625193 5:-0.08594548726529161 6:-0.9983154486609989 7:-0.7272748852665216 8:-0.8197811039616518 9:0.5177610923333253 10:-0.6180731281817853 --0.12347625601866746 1:0.10820547757674692 2:0.1825421454873002 3:-0.3412486258429426 4:-0.14925445930975534 5:-0.6594599831395103 6:0.9552502376248448 7:-0.7875626067291472 8:0.3854984181307912 9:0.014303876202374832 10:-0.7300443667550689 -14.546296184422973 1:0.2459523985646046 2:0.9434777073825811 3:0.2112745925235362 4:0.7730688005214974 5:-0.13727994893203732 6:0.6140037510172511 7:0.7545298281668846 8:0.7814551909982614 9:0.0026683642139069264 10:0.5633973602849358 --19.66731861537172 1:0.9353590082406811 2:0.8768609458072838 3:0.9618210554140587 4:0.12103715737151921 5:-0.7691766106953688 6:-0.4220229608873225 7:-0.18117247651928658 8:-0.14333978019692784 9:-0.31512358142857066 10:0.4022153556528465 -18.84119697288412 1:0.4423204637505467 2:-0.4364821709544735 3:0.3935363893778452 4:-0.7750286735195999 5:-0.6981814766625978 6:0.6889512553826111 7:0.3646791168217727 8:0.0023536025493677837 9:-0.08378048150085249 10:-0.05659381771155503 -17.40329212914592 1:0.9155980216177384 2:-0.35593866074295355 3:0.44775710780914824 4:-0.42914421567532357 5:-0.2734430718503955 6:-0.8937042912745483 7:-0.3143761936611371 8:0.07805814979426184 9:-0.31386151509289784 10:0.6202932236456253 --19.402336030214553 1:0.462288625222409 2:-0.902975525942725 3:0.7442695642729447 4:0.3802724233363486 5:0.4068685903786069 6:-0.5054707879424198 7:-0.8686166000900748 8:-0.014710838968344575 9:-0.1362606460134499 10:0.8444452252816472 --3.855123203007599 1:0.5072557393175969 2:0.4626973233672753 3:-0.20910077161652119 4:0.9431415515135266 5:-0.1293690767585638 6:-0.2033835058111637 7:0.501429131658198 8:0.175133281735671 9:-0.6091682952201736 10:0.543010689352589 -1.493768355655548 1:-0.7772812666041105 2:-0.7743738591348672 3:-0.2848754060915175 4:0.3336846848765145 5:0.6219572132443736 6:-0.11144657683793624 7:0.7606913325884337 8:0.8547085151723017 9:-0.31728444617771134 10:-0.4668474022688931 --17.803626188664516 1:0.5176340000264179 2:0.23048377874011128 3:0.6162746928601832 4:0.16908590014785418 5:0.9695207469685181 6:-0.34713218673384705 7:0.8526833760069625 8:0.9895592279649763 9:0.8805561957342884 10:-0.43452438291417894 -1.4060200157931342 1:-0.41964471941333525 2:0.7738486114171979 3:-0.0964606192284374 4:-0.25351781452566025 5:-0.21065389913054244 6:-0.40490416354122916 7:-0.7696501777959646 8:-0.7710488116813146 9:-0.6777228721053572 10:-0.09381158095961428 --17.026492264209548 1:0.8367805314799452 2:0.1559190443625338 3:0.048200110551483544 4:-0.7340083467235765 5:0.2661150265782781 6:0.3881661781792165 7:0.9485287302765621 8:0.7201540574376382 9:0.8509234862656003 10:0.9658114866648093 -8.729450606651499 1:0.6404862166906327 2:0.16516090922657822 3:0.29013117743588057 4:0.37056732180613317 5:-0.3376494575302882 6:0.9012625630650577 7:-0.42150978319487 8:-0.05630249989686087 9:0.706104255632954 10:0.01935884085365225 --5.516822117602276 1:-0.5718348423045241 2:-0.2145777722920088 3:-0.09307467998835195 4:-0.7311274103678378 5:0.5272184003067053 6:-0.00528176138162495 7:0.2852826178935919 8:0.6180999884045897 9:-0.7526372151008776 10:0.20416472532830543 -13.001541259752251 1:-0.5137703877272299 2:-0.15452359837207896 3:-0.25657600903152744 4:-0.9773110735601165 5:0.0718147980090178 6:0.18965211809311744 7:0.7795354990363292 8:0.21976898743223638 9:-0.20364089221752524 10:0.33822332985943304 -18.443388694564348 1:-0.9278344397401963 2:0.2678538727090136 3:-0.46932389854374734 4:0.8494176173177825 5:0.45765527018197694 6:0.20546395745879287 7:-0.199860294349123 8:0.47798730134403256 9:-0.2279771893187592 10:-0.30836118564314274 -8.952089112152663 1:-0.7371671220953286 2:0.8160149639986789 3:-0.026630089188139028 4:0.5931015267817183 5:-0.12216243475451294 6:0.161290795125286 7:0.7423016751095652 8:-0.5212872902985852 9:5.606147011660845E-5 10:-0.409626733921443 --3.7062463981908027 1:0.5633514321449928 2:0.9914900963311462 3:0.1867799930236702 4:-0.15960235736142847 5:0.1204791067384241 6:-0.7733281422620872 7:-0.887447048141158 8:0.7931515335800692 9:0.732289882696125 10:-0.034992898370363124 --10.58331129986813 1:0.6627003739767989 2:0.10688718810947728 3:-0.49230090744757216 4:0.8936580036513948 5:0.012227929286241057 6:-0.1442038886014838 7:0.9203452040795139 8:-0.20719832624131262 9:0.29561869366253335 10:-0.08597725084864649 -9.818996211259908 1:0.580133516885796 2:0.07422424429848573 3:0.33438634998226924 4:0.26054797992533696 5:-0.8771304726537796 6:-0.9710990591964794 7:-0.1869287393875041 8:-0.6167738073093247 9:0.34401921428837245 10:0.6737600514607418 --11.87816749996684 1:-0.7193071334885193 2:0.5247127705364141 3:-0.02978727198197606 4:0.18353223007701058 5:0.40350110058596944 6:-0.36002841871228686 7:-0.20781535546501528 8:0.5517883176456557 9:-0.9938027872744732 10:0.6245061418135955 --12.198096564661412 1:0.27542314155961156 2:0.3459734388741733 3:-0.38737776987446937 4:0.6244101669171684 5:-0.7801218302490938 6:0.20444733666197523 7:-0.5667599464182904 8:-0.9462131580071358 9:0.5576565405741785 10:-0.9307557040059242 --3.6610413123521357 1:0.045569951437504086 2:0.32203961277046145 3:-0.04228927426053675 4:-0.9435304938416831 5:0.3750509710699601 6:0.21298970117620142 7:0.5491054691791977 8:0.33695088608872203 9:-0.9923500858828505 10:-0.6402707119893463 -3.782742149409224 1:0.7795250611996376 2:0.43296979846218275 3:-0.6481485005937841 4:0.3235717281667645 5:-0.8067382770768907 6:-0.06740397503468509 7:-0.2835017205434338 8:-0.5875853498478532 9:-0.25699561837680585 10:0.7813561594373908 --17.065399625876015 1:-0.01772446594568744 2:0.563282914714494 3:0.14232420381013955 4:0.031667902604941345 5:-0.7815348482900619 6:0.3657733497576803 7:0.7208326162626688 8:-0.7863253120180662 9:0.3329194167867533 10:0.6175752945608013 -16.23248797654815 1:0.2615647748812251 2:-0.6631801348538622 3:0.6420349382574477 4:-0.31980528388089846 5:0.38021930887251365 6:-0.060298437830818896 7:-0.8911652782989568 8:0.3424617259589986 9:-0.8515350749364614 10:-0.42354709676980207 --5.015963911416578 1:-0.07890564237014686 2:-0.09864377281008885 3:-0.13139943914680408 4:0.6610949669857866 5:0.06777579108221987 6:-0.26586245727222835 7:0.17443498956808612 8:-0.3129854922817781 9:-0.37913757211269505 10:0.7627186373372121 -22.647750304177556 1:-0.03666997412165163 2:0.49691867674483814 3:-0.45898559472166967 4:-0.09932248891016404 5:0.05692910907689508 6:-0.5006743461081364 7:0.9992936758550379 8:0.8252525466172065 9:0.9431711015127009 10:-0.4891497061921315 --3.731112242951253 1:0.44353490207818513 2:0.23112032838224117 3:0.4697682541445527 4:-0.7507514828346664 5:-0.06323257550543837 6:0.0997091431243109 7:0.9394036761509628 8:0.4103869738859962 9:0.6564209227640914 10:-0.5427466755921158 -0.6761872737225261 1:-0.30051626190360503 2:-0.26699232020158803 3:0.8668758741279379 4:-0.40325291744583347 5:-0.9756425738484267 6:-0.5116398654634617 7:0.16424789009043073 8:0.8034099442414044 9:0.8554935001446193 10:0.42747702930667497 -8.449247195197387 1:-0.6588765973399024 2:0.2502285196526799 3:-0.20481547024283087 4:0.3770725284683252 5:-0.169707887761277 6:-0.0804075502584003 7:-0.3580757176408007 8:-0.6042549664471129 9:0.360349278976142 10:0.15899650901110962 -27.111027963108548 1:0.7106841652047162 2:0.6853699382312817 3:-0.8076297545289823 4:0.7932321056591545 5:-0.8011085095234463 6:-0.7017292726737878 7:0.10568649778064154 8:-0.40755358264969255 9:-0.061008981132773865 10:0.08895972651409556 -27.78383192005107 1:-0.8378790218922778 2:-0.6651002504721837 3:0.021049638665430415 4:0.32994334871293196 5:-0.7981304887988308 6:-0.2947962117284566 7:0.9739408711845776 8:0.9442893181893954 9:0.010541491359981059 10:0.8332791453382604 -15.700710963871254 1:-0.538773982400854 2:-0.5966426806845984 3:0.14570292467314627 4:-0.5937791901212952 5:0.7779251136963325 6:0.9962962075803357 7:-0.4774083823748394 8:-0.02528476957876369 9:-0.17305036341254398 10:-0.6013841506503688 --12.558575788856189 1:0.03250364930617211 2:-0.6723950859659307 3:0.7090474884514901 4:0.25034305882632735 5:0.7036774024093582 6:0.622650236684523 7:0.5776881238206741 8:0.7999754726258337 9:0.21332972563833508 10:0.33849062947231645 -6.2776776518215955 1:-0.009605588630256623 2:0.5786496865369053 3:0.9208276908400748 4:-0.9477397424337148 5:0.6306053656362194 6:0.5396434662389846 7:-0.9841930450269964 8:0.5492682920407823 9:-0.020767248025529206 10:-0.8684655435686472 -6.424586997399564 1:0.861374923392324 2:0.8356037964367176 3:-0.7173479824827564 4:-0.6309584820438245 5:0.16136758138471285 6:-0.7485184163431866 7:-0.006053583829132236 8:-0.8762221084691306 9:0.19195377669247726 10:0.07259634302552964 --9.64772485466405 1:0.7568015336230662 2:-0.4221524485756756 3:0.011711847664269248 4:0.7387065048724242 5:-0.04347512566745104 6:0.06642100869974654 7:-0.6993705848315939 8:0.16312217088045422 9:-0.11975577990989916 10:-0.6188717473788392 -3.8183706502283647 1:-0.7226937936463145 2:-0.5462756960199258 3:-0.39158419906610664 4:0.014310440945434433 5:-0.9950315917350652 6:-0.1844037449550875 7:0.9023517651879036 8:0.7948752060508435 9:-0.6792702010973877 10:0.40730074403235617 -1.1585019476700562 1:0.5575546848694 2:0.8997032130006739 3:0.6088643323129037 4:0.4872893656051758 5:-0.03977520372748922 6:0.3202565433572042 7:-0.31231768645537206 8:-0.6861153669592381 9:-0.08561643820383291 10:0.522243657731251 --8.18651039877047 1:-0.809069379967462 2:-0.04827229852445103 3:0.19963602092982624 4:0.2568971171641006 5:-0.0015346733366310428 6:-0.6104625526166494 7:0.7746715041233412 8:-0.7343750018341593 9:-0.49272635466510106 10:-0.8115191199688623 --3.377690136019927 1:-0.9408187510685164 2:0.9654993263332854 3:-0.16725010447984268 4:0.2574069587853294 5:-0.6930506968932861 6:0.11124762075550176 7:0.39145805505914866 8:0.2906495128462767 9:-0.27454907309824916 10:0.9001175309434777 -12.692571815413245 1:0.7404426710258791 2:0.9060576634778448 3:0.7023712021897308 4:-0.9808126157768493 5:0.03447666475715194 6:-0.4146339211599541 7:-0.7329651749553896 8:-0.2696019807317358 9:-0.9885367164723897 10:-0.8540304023043486 -2.5111054050889354 1:0.7448154454968356 2:-0.7532143233138027 3:-0.9724617436335079 4:0.662620399592766 5:0.45517204589358307 6:0.37409736074838684 7:0.337245076577648 8:0.50951903847353 9:0.2590369923587328 10:-0.3248257475117191 --8.300340493749207 1:0.5504850435404609 2:0.5077232940244447 3:0.778859307357816 4:0.2601916883813373 5:-0.0032275666062382413 6:0.039752927221862855 7:0.19468432568826755 8:-0.2859531554546477 9:-0.4113477962970582 10:0.43272011953041667 -5.904938653193952 1:0.6622293273002955 2:0.6428891633785236 3:0.6999663090423285 4:0.9132698742913088 5:-0.3960072336866507 6:-0.14500922264286054 7:-0.4390171033743564 8:0.002067106212897185 9:-0.6079874251539117 10:-0.7131416109696531 -5.004048239623824 1:0.7212309895357449 2:0.3425199843383353 3:-0.7290323633040705 4:-0.5563097960397918 5:-0.7577898297822001 6:0.647883070472203 7:-0.23710559062843073 8:0.34398507133293954 9:-0.5440251617348038 10:-0.2971638032112218 -6.21255598077158 1:0.2498685983586959 2:-0.2586857335205359 3:-0.6380810501916263 4:0.17008841621855852 5:0.9485802018202867 6:-0.2580306792121272 7:0.032916516140567786 8:0.32950951532163675 9:-0.9291915084526683 10:0.8454021164786922 --3.741044592262687 1:0.763300390779396 2:-0.1832552896771813 3:-0.39361907876758573 4:0.9050768615040607 5:-0.8850093869496836 6:0.9302208653737598 7:-0.12972094056755412 8:-0.459442486378308 9:0.5044112394875107 10:0.1399067554681861 -7.378402183384303 1:-0.27686808475610114 2:0.12735524561214606 3:0.5216635958678004 4:-0.9418584785460469 5:0.20441570818728771 6:-0.35073421178920583 7:0.7847501694079704 8:0.3222999552829353 9:0.21025696511089764 10:-0.5813710201294744 --7.1500991588127265 1:-0.1945259148773102 2:-0.4089845159829022 3:-0.1971859124232922 4:0.9531447983295496 5:0.07996455700202221 6:0.17013529724757648 7:-0.2442095218739362 8:-0.8564146371721229 9:-0.5843910532907555 10:-0.33846471424918767 --4.288417758202577 1:0.020710986120182184 2:-0.7450564238727908 3:0.3674992023059285 4:0.46737461414601555 5:0.9411702705113052 6:-0.7257365059912877 7:0.5813280037560231 8:-0.01567531846894843 9:0.24734195293533467 10:0.6516001002566887 -5.916426037500391 1:0.8260000862135342 2:-0.11324162495165968 3:0.13061304369435334 4:0.5762591624576425 5:0.548049763999644 6:-0.9751599851764361 7:0.02828821483057764 8:-0.4113286027346803 9:0.8912856976307486 10:-0.8470910204808244 -2.431004294471012 1:0.14088576701299083 2:-0.45104190898994734 3:0.29891134031619115 4:0.955503074037666 5:0.15962522624750242 6:0.7664481093046553 7:0.051697815479792686 8:-0.3471787155014081 9:-0.8007151537631465 10:-0.5598899500902301 --16.08565904102149 1:0.3946137229565083 2:0.8443779319638349 3:0.5116855547320893 4:-0.5319339991982652 5:0.26564506849312797 6:0.18905397829944448 7:0.1976357098053687 8:0.15505612242632538 9:-0.935633748308776 10:-0.9782957013204887 -18.058440348477184 1:0.8402487524597533 2:-0.6200725197687718 3:-0.6158487677192792 4:0.0709328308135515 5:0.7501256905495493 6:0.38092209802839583 7:-0.8192579128383128 8:-0.9304002828581583 9:-0.6570300818845025 10:-0.5252554781538985 --1.0026720160736349 1:0.46122079684901474 2:-0.7609201036934166 3:-0.9372178059537293 4:-0.25391036498391006 5:-0.7487429157699828 6:0.38024314675291637 7:0.21886059803198576 8:0.027516853267765207 9:0.33483464322377765 10:0.618580130027746 --2.6688695419207162 1:-0.8775911623423445 2:-0.6647410420697879 3:0.05948516302547313 4:0.7278526664475804 5:-0.011366224409705028 6:0.33475665968289436 7:-0.6386120399761575 8:0.39609772177595115 9:-0.7872076290319412 10:-0.6195857302948329 --13.867087895158768 1:-0.9114780602695882 2:0.7997695296649912 3:0.8337252417804881 4:-0.7927267913881113 5:0.6863829853181673 6:0.4162562153517635 7:0.2659922421074139 8:-0.551994669040742 9:-0.6403900338772157 10:-0.8680387717518072 -7.826011095515239 1:-0.2881951904396949 2:-0.19317071325391022 3:-0.06581062483451183 4:-0.6074074436315555 5:-0.9434740067975405 6:0.9426572655575483 7:-0.1812629432036228 8:0.39425575292939863 9:0.5065890539615039 10:0.8969825696966649 -1.4213836206303339 1:0.6996840540120932 2:0.1283999569152492 3:-0.2537375462472613 4:0.24772110606788456 5:0.9040210381745799 6:0.47062010977660207 7:0.9697678931927365 8:-0.9215764371674713 9:-0.27541598110075793 10:0.44277003247067803 --0.973650798730175 1:-0.2121645467631068 2:-0.6770222508071349 3:-0.5733067523949165 4:0.27979529516037105 5:0.7128588235545461 6:-0.9208763636184307 7:0.14128337151047532 8:-0.002851660400375433 9:0.6943908711123281 10:-0.9201922993121072 --0.17500848560451965 1:-0.6015070903427717 2:0.7815998200409671 3:-0.9932006200204946 4:-0.3303953411379028 5:-0.3329917860768894 6:-0.2822852019877604 7:0.6834785385197197 8:-0.6458607648553825 9:-0.06171476054995373 10:0.11421513352405444 --15.310980589416289 1:-0.35290763483001486 2:-0.7263565311032778 3:-0.8688987069582226 4:-0.991098319894185 5:0.7029028082332363 6:-0.20251284356518684 7:-0.10928416773360117 8:0.307764663956116 9:0.6423143148384418 10:-0.15527637175127107 -3.260298266762908 1:-0.7817510582064782 2:0.45336200757318257 3:-0.15365670773321338 4:0.5063951567230205 5:-0.7102867196895872 6:-0.48050036620725955 7:0.9838016675169072 8:0.07854601230194436 9:-0.18953694857147863 10:0.19370072527454107 -3.846123583197846 1:0.6665586449040093 2:-0.2894063530813835 3:0.29965348483445386 4:0.23590344101670313 5:-0.7456743720187828 6:-0.4680876353446175 7:0.8106301610699425 8:0.691280702194663 9:-0.6060141408622055 10:0.34018639920235194 --10.945919657782932 1:0.7669971723591666 2:0.38702771863552776 3:-0.6664311930513411 4:-0.2817072090916286 5:-0.16955916900934387 6:-0.9425831315444453 7:0.5685476711649924 8:-0.20782258743798265 9:0.015213591474494637 10:0.8183723865760859 -9.820049725467145 1:0.9582163993327679 2:0.7503905881505508 3:0.6255110430336392 4:0.6522701954798096 5:0.09248037700932144 6:-0.2833482854986902 7:-0.9841968940607242 8:-0.9343780716625845 9:-0.605526104070818 10:0.6000165028195326 -11.398715935456183 1:0.6605086903456443 2:0.14675454515266395 3:-0.7880053589830274 4:-0.8570785944515658 5:-0.4317693974151271 6:-0.12244918233307645 7:0.9808241653220866 8:0.5455853515046201 9:0.6870972425676756 10:0.7427686762232875 --7.846310147695936 1:0.4355817642106965 2:0.7659504362110916 3:-0.3784171977305315 4:-0.5675896574776877 5:-0.20116390539973938 6:0.8775467546326667 7:-0.2824903364469842 8:0.7470660314619617 9:0.8967783051712528 10:0.7133700339519966 --1.3847391232663768 1:0.3707613476850027 2:0.6931092598460797 3:-0.7701621508103305 4:-0.5679366502518555 5:-0.7234356749703683 6:-0.8059255104944509 7:-0.8307993875388229 8:0.6133975694770035 9:-0.7399749904168824 10:-0.1534990394513953 -16.93981662267873 1:0.6552665678625891 2:0.023248457840923775 3:-0.6850641408327465 4:0.7129790774369389 5:0.04166304042825364 6:-0.7160289667702797 7:-0.4733073680976494 8:0.2720897719417634 9:0.05850741911975099 10:0.34427554125371174 -2.8497179990245116 1:0.6664937514484015 2:0.3343796939204209 3:0.2611910348746209 4:-0.13658810351647 5:-0.5821801257591224 6:0.9854683468621908 7:-0.21396555404689188 8:-0.5923272173716836 9:-0.5674796199927252 10:-0.5681633547764235 -4.981807952389501 1:0.7517426071091595 2:0.7029291090701855 3:0.7126619831046563 4:-0.9982007415355478 5:-0.7743343367502893 6:-0.9048858749551119 7:-0.8243783842398396 8:0.4936163270697016 9:-0.6835495591484724 10:0.8412758607464845 -8.508637575729951 1:0.6837354268578517 2:-0.435346907350056 3:0.6597448795477736 4:0.8870204157376871 5:-0.6938576101541436 6:0.9199495715292882 7:0.33119640706964293 8:-0.6181273221979411 9:0.12929034268333317 10:0.6855150395247027 -14.369378079132883 1:-0.9489372180887643 2:-0.6577177233364067 3:0.543899463531252 4:0.5411152154119976 5:0.43733244485250733 6:0.5927084968109424 7:0.6100068837998656 8:0.9392735722529637 9:-0.9806701698603073 10:0.3984176141500082 --6.456944198081549 1:0.8380442392342373 2:0.05166133486184443 3:-0.25864153418691704 4:-0.9506672344106888 5:0.5227275493542325 6:-0.03899736644563956 7:0.7660133053649136 8:-0.9375236703284806 9:-0.37213210747743175 10:0.0560768367274771 --10.041353112580456 1:0.5293717914660876 2:-0.35874932480194044 3:0.14403824250820763 4:-0.4106496629336782 5:-0.794648717231762 6:-0.4369956159772408 7:0.8273613210141495 8:0.9212255384858874 9:0.00409867676727993 10:-0.23796544184855795 --6.606325361718908 1:0.2765102732490652 2:0.10184669160432525 3:-0.9406443798496789 4:-0.46661976112717896 5:-0.5836573778289609 6:0.1308554421925976 7:0.05232199712543473 8:-0.4965370542771641 9:-0.3695836654343949 10:0.4874427445939513 --15.359544879832677 1:-0.8253830145927283 2:0.29683545543963885 3:-0.9790356574071053 4:0.33749594518426473 5:-0.449483349548623 6:0.1740013774913005 7:0.5737323257916764 8:0.20159372721320645 9:-0.1812760896634873 10:-0.17652712339895738 -2.1801769966756845 1:0.3664130766917151 2:-0.1929450967547921 3:-0.7834945448457515 4:-0.03806442314852432 5:-0.6167622313628849 6:0.34919852301325394 7:-0.785891329691004 8:-0.5704062599527768 9:0.9846140894872721 10:-0.548571249100203 --2.7006646885251415 1:-0.48505178676353067 2:0.06347121974094883 3:-0.3704723119141229 4:0.7407080276548548 5:0.06713252857406937 6:-0.2103524488773294 7:-0.9402467715192988 8:-0.8555624501612784 9:0.6244760190429901 10:-0.9038885681517279 -0.2105613019270259 1:-0.17125223509187282 2:-0.23328463772140529 3:-0.6497773470047024 4:0.33111604806115524 5:0.7944287248398398 6:0.5163977380074081 7:-0.025715995643062595 8:0.11762566041047462 9:0.9938658554834845 10:0.5363394203614278 --0.6433952980357234 1:-0.905126800719938 2:0.5826442985002787 3:-0.8207546276288018 4:-0.0773547002692121 5:-0.6420058913410687 6:-0.9290787206193325 7:0.21829202840889095 8:-0.7752845890678082 9:0.4533233304372326 10:0.5457315861825041 -5.622874731146287 1:0.5486636398086722 2:-0.21867854114956642 3:0.13260110994566032 4:-0.024868470628895967 5:0.9246597814546305 6:0.07490395250443149 7:-0.21327567620097132 8:-0.33970581204395867 9:-0.19408398882121713 10:0.9757334811378136 --18.27521356600463 1:-0.489685764918109 2:0.6832314342743568 3:0.9115808714640257 4:-4.680515344936964E-4 5:0.03760860984717218 6:0.4344127744883004 7:-0.30019645809377127 8:-0.48339658188341783 9:-0.5488933834939806 10:-0.4735052851773165 -5.518650144654079 1:-0.16881374315243192 2:0.22747702179774354 3:-0.8555270909193926 4:-0.6914231522703247 5:0.03618437407657238 6:-0.8404831131806643 7:0.16378525699004887 8:-0.333895928854854 9:0.23026574917978326 10:0.9409087845740918 -2.5599738684677646 1:-0.24371170373626905 2:-0.1752613047793694 3:-0.7930324885557696 4:0.17288443448968627 5:0.7233942014077801 6:0.47222694561171963 7:0.7878187692414558 8:-0.6520011755878357 9:-0.9952507460157223 10:-0.32951026378415094 --8.508663400554862 1:0.9194236423060742 2:0.9517284917259223 3:-0.18723709334016392 4:-0.24913001260985546 5:0.8818286401027424 6:0.13661210218384512 7:-0.40792517201812983 8:-0.33132907984544957 9:-0.49137388288628703 10:-0.3273925353006979 --10.233439586953153 1:0.0960128812383454 2:-0.8611756848964027 3:0.11807312551418647 4:-0.24570750746947145 5:-0.047826307143366886 6:-0.717269426008625 7:-0.2841658181308486 8:-0.31500935950449516 9:0.23183474949267713 10:-0.512986169560546 --6.3459370724834265 1:0.9537835418930307 2:0.4598546399405288 3:-0.257013655072986 4:-0.29185820894937575 5:-0.6843688281544562 6:0.8343952028925479 7:-0.9656517094615942 8:-0.447440560943553 9:-0.9510349521362857 10:0.5918946980259567 -1.114406550703455 1:-0.5721838436595965 2:0.1201917297381252 3:-0.5253701290141362 4:-0.5874011312890843 5:0.7893580092022578 6:-0.18012813622584134 7:0.4781905737504004 8:-4.6732390143988667E-4 9:-0.7965374182885014 10:-0.8515444146742359 -8.688243146888663 1:0.2245581140502393 2:-0.0697600364101425 3:-0.7661833153629154 4:-0.2289151515902894 5:-0.5643191391300282 6:0.08069861795512168 7:-0.9670317635091523 8:0.14826752863715287 9:0.9325364047311011 10:0.4071178661803092 -14.896035572185347 1:0.20630949870309911 2:-0.5738578325975092 3:0.5664829389128903 4:0.3732752326637825 5:0.04079303403038881 6:-0.6604984910400766 7:0.15136076091734352 8:-0.6244939282579305 9:-0.5236288549540624 10:0.47284992666739023 -4.396558596072123 1:0.5565602414172521 2:0.1444095747909111 3:0.028227502879770272 4:0.38297378287943773 5:-0.26739745457451725 6:-0.708209627997985 7:0.7604483272526881 8:0.8072075261139096 9:0.11460574885028274 10:-0.07669406807610635 -1.7457141275341528 1:0.3668576517164046 2:-0.5352200081463954 3:0.5853385976871426 4:-0.4482551060006992 5:-0.5676795208498786 6:0.8043295590331514 7:-0.02160829797068753 8:0.42281303847010454 9:0.027894531623162466 10:-0.541120112980032 --15.334767479922341 1:-0.036676500783341615 2:0.804758241454594 3:-0.0642091078911513 4:0.1402705435750966 5:-0.9215322030628859 6:0.7951173116514345 7:-0.994819896842561 8:0.2382406912119326 9:0.6634166177958731 10:0.7623222578718651 -5.017247792012723 1:-0.5925393497160352 2:0.48506599831456443 3:-0.5079795649118319 4:0.6668553329827696 5:-0.1103174867779837 6:0.7048535526809607 7:-0.9819230894106692 8:0.19609620625274982 9:0.5173985272313828 10:-0.11269849619148875 -6.201510810634532 1:-0.6802942101330738 2:0.898957584078176 3:0.853293387559251 4:0.6089336185656065 5:-0.9352626288322801 6:0.3208583332890447 7:-0.964481544931127 8:-0.8294773786068643 9:-0.8817311989413614 10:0.5165364663580934 -19.174935630244647 1:-0.20026105252200788 2:0.7276178994821614 3:0.7748716685190951 4:-0.7423420145576229 5:0.13147770471985032 6:-0.8382015712894606 7:0.021760992104270294 8:-0.24586987823702944 9:-0.05958177281299326 10:0.47347236224860834 --14.822152909751189 1:0.7255660700197897 2:-0.22751988933383926 3:-0.08409197084114317 4:0.072750455428638 5:0.1841692073989072 6:-0.33838406658716513 7:-0.44701963574290526 8:0.5031210959133143 9:0.09640858549693743 10:0.9857351194637847 --6.310082095945472 1:-0.7692076133438608 2:0.8533601511731044 3:0.676268298275629 4:-0.783895030001512 5:-0.8195462819549715 6:0.3963101354895673 7:-0.6254922461977397 8:-0.7521135990258581 9:-0.8032003997516024 10:0.8388672800826487 -8.853802632714807 1:0.46950948246522195 2:-0.6148693581037883 3:0.028739220735170656 4:-0.024281643566285815 5:-0.3495458137792231 6:-0.12347196435522867 7:0.5253894065203333 8:0.5100713458262918 9:0.63975795701667 10:0.08644353314625053 --10.293714040655924 1:-0.17971950768550893 2:-0.6621720204354751 3:0.888036885802737 4:-0.04977483590350751 5:-0.8964991391283221 6:0.6873490822438724 7:0.42369087852118836 8:0.48972554317650663 9:0.8617233178519317 10:-0.8348331836605276 -0.23985611568891863 1:0.050526696983213215 2:0.8544297176525815 3:0.8586358519997579 4:-0.021299752441110487 5:0.2606696929560939 6:-0.39446486150105997 7:-0.4166234435381613 8:-0.6097643266459343 9:0.46633996256010146 10:-0.22521646199731027 -21.57719950299147 1:-0.5878491135126271 2:0.802134056970349 3:-0.5471017580843434 4:0.6067966843473331 5:-0.691712219323007 6:0.7814323754276735 7:0.31689445927290016 8:-0.1668780061940922 9:0.5285692389527452 10:0.8027091025203246 --0.7836538830323514 1:0.5766794801558166 2:0.8281463568384935 3:0.5087453132796032 4:0.5212853344036532 5:0.6294700781054074 6:-0.9385097739886943 7:-0.13127371407538302 8:0.9845390503404141 9:-0.7224166213906742 10:-0.11155327354295896 -6.710413649604831 1:-0.6919803228062729 2:-0.6526904017578161 3:-0.34211291948607014 4:0.9094842803341618 5:-0.9454398661995895 6:0.3780766512494227 7:0.5823385348738088 8:0.8817830051841733 9:-0.514843382774189 10:0.32579701113259296 -5.384747201245483 1:-0.9661857672086316 2:-0.519769534339731 3:-0.4466396856529564 4:-0.4370113024678448 5:-0.6397400687811474 6:0.08225309277403725 7:-0.25936524603970756 8:-0.1711463274766858 9:-0.42848099098115755 10:-0.8096854737357237 -7.688509532916731 1:0.3892872094452817 2:-0.13306620868059982 3:-0.932974891205117 4:-0.8921357494146682 5:0.4806996560679244 6:-0.21500288444218696 7:-0.8911268070046585 8:-0.9510264953215406 9:0.1899740993687098 10:-0.43944320580463536 -2.2546997585565296 1:-0.5963883101717473 2:-0.01115153603404151 3:0.8781871380140298 4:0.7736250964135891 5:-0.7325745711528668 6:0.2518631794989008 7:0.5760249284318746 8:0.8690107952725199 9:0.02320853138646095 10:0.08570951531344417 -5.597710012706039 1:-0.5323512235815979 2:0.03366944321271936 3:0.5143537675853551 4:0.28471250955283445 5:0.4012202634439719 6:0.12032039285431151 7:-0.08108716844967812 8:0.30231384371011294 9:0.03259115565303028 10:0.9567467516929173 --12.977848725392104 1:-0.5908891529017144 2:-0.7678208242918028 3:0.8512434510178621 4:-0.14910196410347298 5:0.6250260229199651 6:0.5393378705290228 7:-0.9573580597625002 8:-0.864881502860934 9:0.4175735160503429 10:0.4872169215922426 -10.35887243981476 1:-0.09126023790482862 2:0.18852634121926526 3:-0.13523918100503107 4:0.8333842692409983 5:-0.6015442103644761 6:0.5347736461652235 7:-0.823489760471118 8:0.5562688292037381 9:-0.807478561291906 10:-0.666881464988351 -0.4250502150408626 1:0.7771717566171905 2:-0.8729202752916785 3:-0.25782888805127024 4:-0.13605474993771205 5:0.5911781118120025 6:-0.8444023967853633 7:0.6787302541469229 8:-0.5444299313083194 9:0.356121883138657 10:-0.8845333845080687 --0.8743487925900991 1:-0.9087681208947878 2:-0.292625136739453 3:-0.35113758823291774 4:-0.705933223571676 5:-0.6882289471031144 6:0.8350131255297044 7:-0.7659016065609232 8:0.11400114955653207 9:-0.9466143658505732 10:-0.5033643125229932 --5.615143641864686 1:-0.6688289820084299 2:-0.4623159855015393 3:0.012827807007503855 4:-0.44521264878006117 5:-0.5563111031201406 6:-0.6065295981983794 7:0.3806712426786838 8:-0.11317152118817408 9:0.507896127467435 10:-0.8487801189674464 --0.1829397047693725 1:0.09377558075225512 2:0.5774384503027374 3:-0.7104684187448009 4:-0.07285914169135976 5:-0.8797920488335114 6:0.6099615504974201 7:-0.8047440624324915 8:-0.6877856114263066 9:0.5843004021777447 10:0.5190581455348131 -18.479680552020344 1:0.9635517137863321 2:0.9954507816218203 3:0.11959899129360774 4:0.3753283274192787 5:-0.9386713095183621 6:0.0926833703812433 7:0.48003949462701323 8:0.9432769781973132 9:-0.9637036991931129 10:-0.4064407447273508 -1.3850645873427236 1:0.14476184437006356 2:-0.11280617018445871 3:-0.4385084538142101 4:-0.5961619435136434 5:0.419554626795412 6:-0.5047767472761191 7:0.457180284958592 8:-0.9129360314541999 9:-0.6320022059786656 10:-0.44989608519659363 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_movielens_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_movielens_data.txt deleted file mode 100644 index f0eee19..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_movielens_data.txt +++ /dev/null @@ -1,1501 +0,0 @@ -0::2::3 -0::3::1 -0::5::2 -0::9::4 -0::11::1 -0::12::2 -0::15::1 -0::17::1 -0::19::1 -0::21::1 -0::23::1 -0::26::3 -0::27::1 -0::28::1 -0::29::1 -0::30::1 -0::31::1 -0::34::1 -0::37::1 -0::41::2 -0::44::1 -0::45::2 -0::46::1 -0::47::1 -0::48::1 -0::50::1 -0::51::1 -0::54::1 -0::55::1 -0::59::2 -0::61::2 -0::64::1 -0::67::1 -0::68::1 -0::69::1 -0::71::1 -0::72::1 -0::77::2 -0::79::1 -0::83::1 -0::87::1 -0::89::2 -0::91::3 -0::92::4 -0::94::1 -0::95::2 -0::96::1 -0::98::1 -0::99::1 -1::2::2 -1::3::1 -1::4::2 -1::6::1 -1::9::3 -1::12::1 -1::13::1 -1::14::1 -1::16::1 -1::19::1 -1::21::3 -1::27::1 -1::28::3 -1::33::1 -1::36::2 -1::37::1 -1::40::1 -1::41::2 -1::43::1 -1::44::1 -1::47::1 -1::50::1 -1::54::1 -1::56::2 -1::57::1 -1::58::1 -1::60::1 -1::62::4 -1::63::1 -1::67::1 -1::68::4 -1::70::2 -1::72::1 -1::73::1 -1::74::2 -1::76::1 -1::77::3 -1::78::1 -1::81::1 -1::82::1 -1::85::3 -1::86::2 -1::88::2 -1::91::1 -1::92::2 -1::93::1 -1::94::2 -1::96::1 -1::97::1 -2::4::3 -2::6::1 -2::8::5 -2::9::1 -2::10::1 -2::12::3 -2::13::1 -2::15::2 -2::18::2 -2::19::4 -2::22::1 -2::26::1 -2::28::1 -2::34::4 -2::35::1 -2::37::5 -2::38::1 -2::39::5 -2::40::4 -2::47::1 -2::50::1 -2::52::2 -2::54::1 -2::55::1 -2::57::2 -2::58::2 -2::59::1 -2::61::1 -2::62::1 -2::64::1 -2::65::1 -2::66::3 -2::68::1 -2::71::3 -2::76::1 -2::77::1 -2::78::1 -2::80::1 -2::83::5 -2::85::1 -2::87::2 -2::88::1 -2::89::4 -2::90::1 -2::92::4 -2::93::5 -3::0::1 -3::1::1 -3::2::1 -3::7::3 -3::8::3 -3::9::1 -3::14::1 -3::15::1 -3::16::1 -3::18::4 -3::19::1 -3::24::3 -3::26::1 -3::29::3 -3::33::1 -3::34::3 -3::35::1 -3::36::3 -3::37::1 -3::38::2 -3::43::1 -3::44::1 -3::46::1 -3::47::1 -3::51::5 -3::52::3 -3::56::1 -3::58::1 -3::60::3 -3::62::1 -3::65::2 -3::66::1 -3::67::1 -3::68::2 -3::70::1 -3::72::2 -3::76::3 -3::79::3 -3::80::4 -3::81::1 -3::83::1 -3::84::1 -3::86::1 -3::87::2 -3::88::4 -3::89::1 -3::91::1 -3::94::3 -4::1::1 -4::6::1 -4::8::1 -4::9::1 -4::10::1 -4::11::1 -4::12::1 -4::13::1 -4::14::2 -4::15::1 -4::17::1 -4::20::1 -4::22::1 -4::23::1 -4::24::1 -4::29::4 -4::30::1 -4::31::1 -4::34::1 -4::35::1 -4::36::1 -4::39::2 -4::40::3 -4::41::4 -4::43::2 -4::44::1 -4::45::1 -4::46::1 -4::47::1 -4::49::2 -4::50::1 -4::51::1 -4::52::4 -4::54::1 -4::55::1 -4::60::3 -4::61::1 -4::62::4 -4::63::3 -4::65::1 -4::67::2 -4::69::1 -4::70::4 -4::71::1 -4::73::1 -4::78::1 -4::84::1 -4::85::1 -4::87::3 -4::88::3 -4::89::2 -4::96::1 -4::97::1 -4::98::1 -4::99::1 -5::0::1 -5::1::1 -5::4::1 -5::5::1 -5::8::1 -5::9::3 -5::10::2 -5::13::3 -5::15::1 -5::19::1 -5::20::3 -5::21::2 -5::23::3 -5::27::1 -5::28::1 -5::29::1 -5::31::1 -5::36::3 -5::38::2 -5::39::1 -5::42::1 -5::48::3 -5::49::4 -5::50::3 -5::51::1 -5::52::1 -5::54::1 -5::55::5 -5::56::3 -5::58::1 -5::60::1 -5::61::1 -5::64::3 -5::65::2 -5::68::4 -5::70::1 -5::71::1 -5::72::1 -5::74::1 -5::79::1 -5::81::2 -5::84::1 -5::85::1 -5::86::1 -5::88::1 -5::90::4 -5::91::2 -5::95::2 -5::99::1 -6::0::1 -6::1::1 -6::2::3 -6::5::1 -6::6::1 -6::9::1 -6::10::1 -6::15::2 -6::16::2 -6::17::1 -6::18::1 -6::20::1 -6::21::1 -6::22::1 -6::24::1 -6::25::5 -6::26::1 -6::28::1 -6::30::1 -6::33::1 -6::38::1 -6::39::1 -6::43::4 -6::44::1 -6::45::1 -6::48::1 -6::49::1 -6::50::1 -6::53::1 -6::54::1 -6::55::1 -6::56::1 -6::58::4 -6::59::1 -6::60::1 -6::61::3 -6::63::3 -6::66::1 -6::67::3 -6::68::1 -6::69::1 -6::71::2 -6::73::1 -6::75::1 -6::77::1 -6::79::1 -6::81::1 -6::84::1 -6::85::3 -6::86::1 -6::87::1 -6::88::1 -6::89::1 -6::91::2 -6::94::1 -6::95::2 -6::96::1 -7::1::1 -7::2::2 -7::3::1 -7::4::1 -7::7::1 -7::10::1 -7::11::2 -7::14::2 -7::15::1 -7::16::1 -7::18::1 -7::21::1 -7::22::1 -7::23::1 -7::25::5 -7::26::1 -7::29::4 -7::30::1 -7::31::3 -7::32::1 -7::33::1 -7::35::1 -7::37::2 -7::39::3 -7::40::2 -7::42::2 -7::44::1 -7::45::2 -7::47::4 -7::48::1 -7::49::1 -7::53::1 -7::54::1 -7::55::1 -7::56::1 -7::59::1 -7::61::2 -7::62::3 -7::63::2 -7::66::1 -7::67::3 -7::74::1 -7::75::1 -7::76::3 -7::77::1 -7::81::1 -7::82::1 -7::84::2 -7::85::4 -7::86::1 -7::92::2 -7::96::1 -7::97::1 -7::98::1 -8::0::1 -8::2::4 -8::3::2 -8::4::2 -8::5::1 -8::7::1 -8::9::1 -8::11::1 -8::15::1 -8::18::1 -8::19::1 -8::21::1 -8::29::5 -8::31::3 -8::33::1 -8::35::1 -8::36::1 -8::40::2 -8::44::1 -8::45::1 -8::50::1 -8::51::1 -8::52::5 -8::53::5 -8::54::1 -8::55::1 -8::56::1 -8::58::4 -8::60::3 -8::62::4 -8::64::1 -8::67::3 -8::69::1 -8::71::1 -8::72::3 -8::77::3 -8::78::1 -8::79::1 -8::83::1 -8::85::5 -8::86::1 -8::88::1 -8::90::1 -8::92::2 -8::95::4 -8::96::3 -8::97::1 -8::98::1 -8::99::1 -9::2::3 -9::3::1 -9::4::1 -9::5::1 -9::6::1 -9::7::5 -9::9::1 -9::12::1 -9::14::3 -9::15::1 -9::19::1 -9::21::1 -9::22::1 -9::24::1 -9::25::1 -9::26::1 -9::30::3 -9::32::4 -9::35::2 -9::36::2 -9::37::2 -9::38::1 -9::39::1 -9::43::3 -9::49::5 -9::50::3 -9::53::1 -9::54::1 -9::58::1 -9::59::1 -9::60::1 -9::61::1 -9::63::3 -9::64::3 -9::68::1 -9::69::1 -9::70::3 -9::71::1 -9::73::2 -9::75::1 -9::77::2 -9::81::2 -9::82::1 -9::83::1 -9::84::1 -9::86::1 -9::87::4 -9::88::1 -9::90::3 -9::94::2 -9::95::3 -9::97::2 -9::98::1 -10::0::3 -10::2::4 -10::4::3 -10::7::1 -10::8::1 -10::10::1 -10::13::2 -10::14::1 -10::16::2 -10::17::1 -10::18::1 -10::21::1 -10::22::1 -10::24::1 -10::25::3 -10::28::1 -10::35::1 -10::36::1 -10::37::1 -10::38::1 -10::39::1 -10::40::4 -10::41::2 -10::42::3 -10::43::1 -10::49::3 -10::50::1 -10::51::1 -10::52::1 -10::55::2 -10::56::1 -10::58::1 -10::63::1 -10::66::1 -10::67::2 -10::68::1 -10::75::1 -10::77::1 -10::79::1 -10::86::1 -10::89::3 -10::90::1 -10::97::1 -10::98::1 -11::0::1 -11::6::2 -11::9::1 -11::10::1 -11::11::1 -11::12::1 -11::13::4 -11::16::1 -11::18::5 -11::19::4 -11::20::1 -11::21::1 -11::22::1 -11::23::5 -11::25::1 -11::27::5 -11::30::5 -11::32::5 -11::35::3 -11::36::2 -11::37::2 -11::38::4 -11::39::1 -11::40::1 -11::41::1 -11::43::2 -11::45::1 -11::47::1 -11::48::5 -11::50::4 -11::51::3 -11::59::1 -11::61::1 -11::62::1 -11::64::1 -11::66::4 -11::67::1 -11::69::5 -11::70::1 -11::71::3 -11::72::3 -11::75::3 -11::76::1 -11::77::1 -11::78::1 -11::79::5 -11::80::3 -11::81::4 -11::82::1 -11::86::1 -11::88::1 -11::89::1 -11::90::4 -11::94::2 -11::97::3 -11::99::1 -12::2::1 -12::4::1 -12::6::1 -12::7::3 -12::8::1 -12::14::1 -12::15::2 -12::16::4 -12::17::5 -12::18::2 -12::21::1 -12::22::2 -12::23::3 -12::24::1 -12::25::1 -12::27::5 -12::30::2 -12::31::4 -12::35::5 -12::38::1 -12::41::1 -12::44::2 -12::45::1 -12::50::4 -12::51::1 -12::52::1 -12::53::1 -12::54::1 -12::56::2 -12::57::1 -12::60::1 -12::63::1 -12::64::5 -12::66::3 -12::67::1 -12::70::1 -12::72::1 -12::74::1 -12::75::1 -12::77::1 -12::78::1 -12::79::3 -12::82::2 -12::83::1 -12::84::1 -12::85::1 -12::86::1 -12::87::1 -12::88::1 -12::91::3 -12::92::1 -12::94::4 -12::95::2 -12::96::1 -12::98::2 -13::0::1 -13::3::1 -13::4::2 -13::5::1 -13::6::1 -13::12::1 -13::14::2 -13::15::1 -13::17::1 -13::18::3 -13::20::1 -13::21::1 -13::22::1 -13::26::1 -13::27::1 -13::29::3 -13::31::1 -13::33::1 -13::40::2 -13::43::2 -13::44::1 -13::45::1 -13::49::1 -13::51::1 -13::52::2 -13::53::3 -13::54::1 -13::62::1 -13::63::2 -13::64::1 -13::68::1 -13::71::1 -13::72::3 -13::73::1 -13::74::3 -13::77::2 -13::78::1 -13::79::2 -13::83::3 -13::85::1 -13::86::1 -13::87::2 -13::88::2 -13::90::1 -13::93::4 -13::94::1 -13::98::1 -13::99::1 -14::1::1 -14::3::3 -14::4::1 -14::5::1 -14::6::1 -14::7::1 -14::9::1 -14::10::1 -14::11::1 -14::12::1 -14::13::1 -14::14::3 -14::15::1 -14::16::1 -14::17::1 -14::20::1 -14::21::1 -14::24::1 -14::25::2 -14::27::1 -14::28::1 -14::29::5 -14::31::3 -14::34::1 -14::36::1 -14::37::2 -14::39::2 -14::40::1 -14::44::1 -14::45::1 -14::47::3 -14::48::1 -14::49::1 -14::51::1 -14::52::5 -14::53::3 -14::54::1 -14::55::1 -14::56::1 -14::62::4 -14::63::5 -14::67::3 -14::68::1 -14::69::3 -14::71::1 -14::72::4 -14::73::1 -14::76::5 -14::79::1 -14::82::1 -14::83::1 -14::88::1 -14::93::3 -14::94::1 -14::95::2 -14::96::4 -14::98::1 -15::0::1 -15::1::4 -15::2::1 -15::5::2 -15::6::1 -15::7::1 -15::13::1 -15::14::1 -15::15::1 -15::17::2 -15::19::2 -15::22::2 -15::23::2 -15::25::1 -15::26::3 -15::27::1 -15::28::2 -15::29::1 -15::32::1 -15::33::2 -15::34::1 -15::35::2 -15::36::1 -15::37::1 -15::39::1 -15::42::1 -15::46::5 -15::48::2 -15::50::2 -15::51::1 -15::52::1 -15::58::1 -15::62::1 -15::64::3 -15::65::2 -15::72::1 -15::73::1 -15::74::1 -15::79::1 -15::80::1 -15::81::1 -15::82::2 -15::85::1 -15::87::1 -15::91::2 -15::96::1 -15::97::1 -15::98::3 -16::2::1 -16::5::3 -16::6::2 -16::7::1 -16::9::1 -16::12::1 -16::14::1 -16::15::1 -16::19::1 -16::21::2 -16::29::4 -16::30::2 -16::32::1 -16::34::1 -16::36::1 -16::38::1 -16::46::1 -16::47::3 -16::48::1 -16::49::1 -16::50::1 -16::51::5 -16::54::5 -16::55::1 -16::56::2 -16::57::1 -16::60::1 -16::63::2 -16::65::1 -16::67::1 -16::72::1 -16::74::1 -16::80::1 -16::81::1 -16::82::1 -16::85::5 -16::86::1 -16::90::5 -16::91::1 -16::93::1 -16::94::3 -16::95::2 -16::96::3 -16::98::3 -16::99::1 -17::2::1 -17::3::1 -17::6::1 -17::10::4 -17::11::1 -17::13::2 -17::17::5 -17::19::1 -17::20::5 -17::22::4 -17::28::1 -17::29::1 -17::33::1 -17::34::1 -17::35::2 -17::37::1 -17::38::1 -17::45::1 -17::46::5 -17::47::1 -17::49::3 -17::51::1 -17::55::5 -17::56::3 -17::57::1 -17::58::1 -17::59::1 -17::60::1 -17::63::1 -17::66::1 -17::68::4 -17::69::1 -17::70::1 -17::72::1 -17::73::3 -17::78::1 -17::79::1 -17::82::2 -17::84::1 -17::90::5 -17::91::3 -17::92::1 -17::93::1 -17::94::4 -17::95::2 -17::97::1 -18::1::1 -18::4::3 -18::5::2 -18::6::1 -18::7::1 -18::10::1 -18::11::4 -18::12::2 -18::13::1 -18::15::1 -18::18::1 -18::20::1 -18::21::2 -18::22::1 -18::23::2 -18::25::1 -18::26::1 -18::27::1 -18::28::5 -18::29::1 -18::31::1 -18::32::1 -18::36::1 -18::38::5 -18::39::5 -18::40::1 -18::42::1 -18::43::1 -18::44::4 -18::46::1 -18::47::1 -18::48::1 -18::51::2 -18::55::1 -18::56::1 -18::57::1 -18::62::1 -18::63::1 -18::66::3 -18::67::1 -18::70::1 -18::75::1 -18::76::3 -18::77::1 -18::80::3 -18::81::3 -18::82::1 -18::83::5 -18::84::1 -18::97::1 -18::98::1 -18::99::2 -19::0::1 -19::1::1 -19::2::1 -19::4::1 -19::6::2 -19::11::1 -19::12::1 -19::14::1 -19::23::1 -19::26::1 -19::31::1 -19::32::4 -19::33::1 -19::34::1 -19::37::1 -19::38::1 -19::41::1 -19::43::1 -19::45::1 -19::48::1 -19::49::1 -19::50::2 -19::53::2 -19::54::3 -19::55::1 -19::56::2 -19::58::1 -19::61::1 -19::62::1 -19::63::1 -19::64::1 -19::65::1 -19::69::2 -19::72::1 -19::74::3 -19::76::1 -19::78::1 -19::79::1 -19::81::1 -19::82::1 -19::84::1 -19::86::1 -19::87::2 -19::90::4 -19::93::1 -19::94::4 -19::95::2 -19::96::1 -19::98::4 -20::0::1 -20::1::1 -20::2::2 -20::4::2 -20::6::1 -20::8::1 -20::12::1 -20::21::2 -20::22::5 -20::24::2 -20::25::1 -20::26::1 -20::29::2 -20::30::2 -20::32::2 -20::39::1 -20::40::1 -20::41::2 -20::45::2 -20::48::1 -20::50::1 -20::51::3 -20::53::3 -20::55::1 -20::57::2 -20::60::1 -20::61::1 -20::64::1 -20::66::1 -20::70::2 -20::72::1 -20::73::2 -20::75::4 -20::76::1 -20::77::4 -20::78::1 -20::79::1 -20::84::2 -20::85::2 -20::88::3 -20::89::1 -20::90::3 -20::91::1 -20::92::2 -20::93::1 -20::94::4 -20::97::1 -21::0::1 -21::2::4 -21::3::1 -21::7::2 -21::11::1 -21::12::1 -21::13::1 -21::14::3 -21::17::1 -21::19::1 -21::20::1 -21::21::1 -21::22::1 -21::23::1 -21::24::1 -21::27::1 -21::29::5 -21::30::2 -21::38::1 -21::40::2 -21::43::3 -21::44::1 -21::45::1 -21::46::1 -21::48::1 -21::51::1 -21::53::5 -21::54::1 -21::55::1 -21::56::1 -21::58::3 -21::59::3 -21::64::1 -21::66::1 -21::68::1 -21::71::1 -21::73::1 -21::74::4 -21::80::1 -21::81::1 -21::83::1 -21::84::1 -21::85::3 -21::87::4 -21::89::2 -21::92::2 -21::96::3 -21::99::1 -22::0::1 -22::3::2 -22::5::2 -22::6::2 -22::9::1 -22::10::1 -22::11::1 -22::13::1 -22::14::1 -22::16::1 -22::18::3 -22::19::1 -22::22::5 -22::25::1 -22::26::1 -22::29::3 -22::30::5 -22::32::4 -22::33::1 -22::35::1 -22::36::3 -22::37::1 -22::40::1 -22::41::3 -22::44::1 -22::45::2 -22::48::1 -22::51::5 -22::55::1 -22::56::2 -22::60::3 -22::61::1 -22::62::4 -22::63::1 -22::65::1 -22::66::1 -22::68::4 -22::69::4 -22::70::3 -22::71::1 -22::74::5 -22::75::5 -22::78::1 -22::80::3 -22::81::1 -22::82::1 -22::84::1 -22::86::1 -22::87::3 -22::88::5 -22::90::2 -22::92::3 -22::95::2 -22::96::2 -22::98::4 -22::99::1 -23::0::1 -23::2::1 -23::4::1 -23::6::2 -23::10::4 -23::12::1 -23::13::4 -23::14::1 -23::15::1 -23::18::4 -23::22::2 -23::23::4 -23::24::1 -23::25::1 -23::26::1 -23::27::5 -23::28::1 -23::29::1 -23::30::4 -23::32::5 -23::33::2 -23::36::3 -23::37::1 -23::38::1 -23::39::1 -23::43::1 -23::48::5 -23::49::5 -23::50::4 -23::53::1 -23::55::5 -23::57::1 -23::59::1 -23::60::1 -23::61::1 -23::64::4 -23::65::5 -23::66::2 -23::67::1 -23::68::3 -23::69::1 -23::72::1 -23::73::3 -23::77::1 -23::82::2 -23::83::1 -23::84::1 -23::85::1 -23::87::3 -23::88::1 -23::95::2 -23::97::1 -24::4::1 -24::6::3 -24::7::1 -24::10::2 -24::12::1 -24::15::1 -24::19::1 -24::24::1 -24::27::3 -24::30::5 -24::31::1 -24::32::3 -24::33::1 -24::37::1 -24::39::1 -24::40::1 -24::42::1 -24::43::3 -24::45::2 -24::46::1 -24::47::1 -24::48::1 -24::49::1 -24::50::1 -24::52::5 -24::57::1 -24::59::4 -24::63::4 -24::65::1 -24::66::1 -24::67::1 -24::68::3 -24::69::5 -24::71::1 -24::72::4 -24::77::4 -24::78::1 -24::80::1 -24::82::1 -24::84::1 -24::86::1 -24::87::1 -24::88::2 -24::89::1 -24::90::5 -24::91::1 -24::92::1 -24::94::2 -24::95::1 -24::96::5 -24::98::1 -24::99::1 -25::1::3 -25::2::1 -25::7::1 -25::9::1 -25::12::3 -25::16::3 -25::17::1 -25::18::1 -25::20::1 -25::22::1 -25::23::1 -25::26::2 -25::29::1 -25::30::1 -25::31::2 -25::33::4 -25::34::3 -25::35::2 -25::36::1 -25::37::1 -25::40::1 -25::41::1 -25::43::1 -25::47::4 -25::50::1 -25::51::1 -25::53::1 -25::56::1 -25::58::2 -25::64::2 -25::67::2 -25::68::1 -25::70::1 -25::71::4 -25::73::1 -25::74::1 -25::76::1 -25::79::1 -25::82::1 -25::84::2 -25::85::1 -25::91::3 -25::92::1 -25::94::1 -25::95::1 -25::97::2 -26::0::1 -26::1::1 -26::2::1 -26::3::1 -26::4::4 -26::5::2 -26::6::3 -26::7::5 -26::13::3 -26::14::1 -26::16::1 -26::18::3 -26::20::1 -26::21::3 -26::22::5 -26::23::5 -26::24::5 -26::27::1 -26::31::1 -26::35::1 -26::36::4 -26::40::1 -26::44::1 -26::45::2 -26::47::1 -26::48::1 -26::49::3 -26::50::2 -26::52::1 -26::54::4 -26::55::1 -26::57::3 -26::58::1 -26::61::1 -26::62::2 -26::66::1 -26::68::4 -26::71::1 -26::73::4 -26::76::1 -26::81::3 -26::85::1 -26::86::3 -26::88::5 -26::91::1 -26::94::5 -26::95::1 -26::96::1 -26::97::1 -27::0::1 -27::9::1 -27::10::1 -27::18::4 -27::19::3 -27::20::1 -27::22::2 -27::24::2 -27::25::1 -27::27::3 -27::28::1 -27::29::1 -27::31::1 -27::33::3 -27::40::1 -27::42::1 -27::43::1 -27::44::3 -27::45::1 -27::51::3 -27::52::1 -27::55::3 -27::57::1 -27::59::1 -27::60::1 -27::61::1 -27::64::1 -27::66::3 -27::68::1 -27::70::1 -27::71::2 -27::72::1 -27::75::3 -27::78::1 -27::80::3 -27::82::1 -27::83::3 -27::86::1 -27::87::2 -27::90::1 -27::91::1 -27::92::1 -27::93::1 -27::94::2 -27::95::1 -27::98::1 -28::0::3 -28::1::1 -28::2::4 -28::3::1 -28::6::1 -28::7::1 -28::12::5 -28::13::2 -28::14::1 -28::15::1 -28::17::1 -28::19::3 -28::20::1 -28::23::3 -28::24::3 -28::27::1 -28::29::1 -28::33::1 -28::34::1 -28::36::1 -28::38::2 -28::39::2 -28::44::1 -28::45::1 -28::49::4 -28::50::1 -28::52::1 -28::54::1 -28::56::1 -28::57::3 -28::58::1 -28::59::1 -28::60::1 -28::62::3 -28::63::1 -28::65::1 -28::75::1 -28::78::1 -28::81::5 -28::82::4 -28::83::1 -28::85::1 -28::88::2 -28::89::4 -28::90::1 -28::92::5 -28::94::1 -28::95::2 -28::98::1 -28::99::1 -29::3::1 -29::4::1 -29::5::1 -29::7::2 -29::9::1 -29::10::3 -29::11::1 -29::13::3 -29::14::1 -29::15::1 -29::17::3 -29::19::3 -29::22::3 -29::23::4 -29::25::1 -29::29::1 -29::31::1 -29::32::4 -29::33::2 -29::36::2 -29::38::3 -29::39::1 -29::42::1 -29::46::5 -29::49::3 -29::51::2 -29::59::1 -29::61::1 -29::62::1 -29::67::1 -29::68::3 -29::69::1 -29::70::1 -29::74::1 -29::75::1 -29::79::2 -29::80::1 -29::81::2 -29::83::1 -29::85::1 -29::86::1 -29::90::4 -29::93::1 -29::94::4 -29::97::1 -29::99::1 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_multiclass_classification_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_multiclass_classification_data.txt deleted file mode 100644 index a0d7f90..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_multiclass_classification_data.txt +++ /dev/null @@ -1,150 +0,0 @@ -1 1:-0.222222 2:0.5 3:-0.762712 4:-0.833333 -1 1:-0.555556 2:0.25 3:-0.864407 4:-0.916667 -1 1:-0.722222 2:-0.166667 3:-0.864407 4:-0.833333 -1 1:-0.722222 2:0.166667 3:-0.694915 4:-0.916667 -0 1:0.166667 2:-0.416667 3:0.457627 4:0.5 -1 1:-0.833333 3:-0.864407 4:-0.916667 -2 1:-1.32455e-07 2:-0.166667 3:0.220339 4:0.0833333 -2 1:-1.32455e-07 2:-0.333333 3:0.0169491 4:-4.03573e-08 -1 1:-0.5 2:0.75 3:-0.830508 4:-1 -0 1:0.611111 3:0.694915 4:0.416667 -0 1:0.222222 2:-0.166667 3:0.423729 4:0.583333 -1 1:-0.722222 2:-0.166667 3:-0.864407 4:-1 -1 1:-0.5 2:0.166667 3:-0.864407 4:-0.916667 -2 1:-0.222222 2:-0.333333 3:0.0508474 4:-4.03573e-08 -2 1:-0.0555556 2:-0.833333 3:0.0169491 4:-0.25 -2 1:-0.166667 2:-0.416667 3:-0.0169491 4:-0.0833333 -1 1:-0.944444 3:-0.898305 4:-0.916667 -2 1:-0.277778 2:-0.583333 3:-0.0169491 4:-0.166667 -0 1:0.111111 2:-0.333333 3:0.38983 4:0.166667 -2 1:-0.222222 2:-0.166667 3:0.0847457 4:-0.0833333 -0 1:0.166667 2:-0.333333 3:0.559322 4:0.666667 -1 1:-0.611111 2:0.0833333 3:-0.864407 4:-0.916667 -2 1:-0.333333 2:-0.583333 3:0.0169491 4:-4.03573e-08 -0 1:0.555555 2:-0.166667 3:0.661017 4:0.666667 -2 1:0.166667 3:0.186441 4:0.166667 -2 1:0.111111 2:-0.75 3:0.152542 4:-4.03573e-08 -2 1:0.166667 2:-0.25 3:0.118644 4:-4.03573e-08 -0 1:-0.0555556 2:-0.833333 3:0.355932 4:0.166667 -0 1:-0.277778 2:-0.333333 3:0.322034 4:0.583333 -2 1:-0.222222 2:-0.5 3:-0.152542 4:-0.25 -2 1:-0.111111 3:0.288136 4:0.416667 -2 1:-0.0555556 2:-0.25 3:0.186441 4:0.166667 -2 1:0.333333 2:-0.166667 3:0.355932 4:0.333333 -1 1:-0.611111 2:0.25 3:-0.898305 4:-0.833333 -0 1:0.166667 2:-0.333333 3:0.559322 4:0.75 -0 1:0.111111 2:-0.25 3:0.559322 4:0.416667 -0 1:0.833333 2:-0.166667 3:0.898305 4:0.666667 -2 1:-0.277778 2:-0.166667 3:0.186441 4:0.166667 -0 1:-0.666667 2:-0.583333 3:0.186441 4:0.333333 -1 1:-0.666667 2:-0.0833334 3:-0.830508 4:-1 -1 1:-0.166667 2:0.666667 3:-0.932203 4:-0.916667 -0 1:0.0555554 2:-0.333333 3:0.288136 4:0.416667 -1 1:-0.666667 2:-0.0833334 3:-0.830508 4:-1 -1 1:-0.833333 2:0.166667 3:-0.864407 4:-0.833333 -0 1:0.0555554 2:0.166667 3:0.491525 4:0.833333 -0 1:0.722222 2:-0.333333 3:0.728813 4:0.5 -2 1:-0.166667 2:-0.416667 3:0.0508474 4:-0.25 -2 1:0.5 3:0.254237 4:0.0833333 -0 1:0.111111 2:-0.583333 3:0.355932 4:0.5 -1 1:-0.944444 2:-0.166667 3:-0.898305 4:-0.916667 -2 1:0.277778 2:-0.25 3:0.220339 4:-4.03573e-08 -0 1:0.666667 2:-0.25 3:0.79661 4:0.416667 -0 1:0.111111 2:0.0833333 3:0.694915 4:1 -0 1:0.444444 3:0.59322 4:0.833333 -2 1:-0.0555556 2:0.166667 3:0.186441 4:0.25 -1 1:-0.833333 2:0.333333 3:-1 4:-0.916667 -1 1:-0.555556 2:0.416667 3:-0.830508 4:-0.75 -2 1:-0.333333 2:-0.5 3:0.152542 4:-0.0833333 -1 1:-1 2:-0.166667 3:-0.966102 4:-1 -1 1:-0.333333 2:0.25 3:-0.898305 4:-0.916667 -2 1:0.388889 2:-0.333333 3:0.288136 4:0.0833333 -2 1:0.277778 2:-0.166667 3:0.152542 4:0.0833333 -0 1:0.333333 2:0.0833333 3:0.59322 4:0.666667 -1 1:-0.777778 3:-0.79661 4:-0.916667 -1 1:-0.444444 2:0.416667 3:-0.830508 4:-0.916667 -0 1:0.222222 2:-0.166667 3:0.627119 4:0.75 -1 1:-0.555556 2:0.5 3:-0.79661 4:-0.916667 -1 1:-0.555556 2:0.5 3:-0.694915 4:-0.75 -2 1:-1.32455e-07 2:-0.25 3:0.254237 4:0.0833333 -1 1:-0.5 2:0.25 3:-0.830508 4:-0.916667 -0 1:0.166667 3:0.457627 4:0.833333 -2 1:0.444444 2:-0.0833334 3:0.322034 4:0.166667 -0 1:0.111111 2:0.166667 3:0.559322 4:0.916667 -1 1:-0.611111 2:0.25 3:-0.79661 4:-0.583333 -0 1:0.388889 3:0.661017 4:0.833333 -1 1:-0.722222 2:0.166667 3:-0.79661 4:-0.916667 -1 1:-0.722222 2:-0.0833334 3:-0.79661 4:-0.916667 -1 1:-0.555556 2:0.166667 3:-0.830508 4:-0.916667 -2 1:-0.666667 2:-0.666667 3:-0.220339 4:-0.25 -2 1:-0.611111 2:-0.75 3:-0.220339 4:-0.25 -2 1:0.0555554 2:-0.833333 3:0.186441 4:0.166667 -0 1:-0.166667 2:-0.416667 3:0.38983 4:0.5 -0 1:0.611111 2:0.333333 3:0.728813 4:1 -2 1:0.0555554 2:-0.25 3:0.118644 4:-4.03573e-08 -1 1:-0.666667 2:-0.166667 3:-0.864407 4:-0.916667 -1 1:-0.833333 2:-0.0833334 3:-0.830508 4:-0.916667 -0 1:0.611111 2:-0.166667 3:0.627119 4:0.25 -0 1:0.888889 2:0.5 3:0.932203 4:0.75 -2 1:0.222222 2:-0.333333 3:0.220339 4:0.166667 -1 1:-0.555556 2:0.25 3:-0.864407 4:-0.833333 -0 1:-1.32455e-07 2:-0.166667 3:0.322034 4:0.416667 -0 1:-1.32455e-07 2:-0.5 3:0.559322 4:0.0833333 -1 1:-0.611111 3:-0.932203 4:-0.916667 -1 1:-0.333333 2:0.833333 3:-0.864407 4:-0.916667 -0 1:-0.166667 2:-0.333333 3:0.38983 4:0.916667 -2 1:-0.333333 2:-0.666667 3:-0.0847458 4:-0.25 -2 1:-0.0555556 2:-0.416667 3:0.38983 4:0.25 -1 1:-0.388889 2:0.416667 3:-0.830508 4:-0.916667 -0 1:0.444444 2:-0.0833334 3:0.38983 4:0.833333 -1 1:-0.611111 2:0.333333 3:-0.864407 4:-0.916667 -0 1:0.111111 2:-0.416667 3:0.322034 4:0.416667 -0 1:0.166667 2:-0.0833334 3:0.525424 4:0.416667 -2 1:0.333333 2:-0.0833334 3:0.152542 4:0.0833333 -0 1:-0.0555556 2:-0.166667 3:0.288136 4:0.416667 -0 1:-0.166667 2:-0.416667 3:0.38983 4:0.5 -1 1:-0.611111 2:0.166667 3:-0.830508 4:-0.916667 -0 1:0.888889 2:-0.166667 3:0.728813 4:0.833333 -2 1:-0.277778 2:-0.25 3:-0.118644 4:-4.03573e-08 -2 1:-0.222222 2:-0.333333 3:0.186441 4:-4.03573e-08 -0 1:0.333333 2:-0.583333 3:0.627119 4:0.416667 -0 1:0.444444 2:-0.0833334 3:0.491525 4:0.666667 -2 1:-0.222222 2:-0.25 3:0.0847457 4:-4.03573e-08 -1 1:-0.611111 2:0.166667 3:-0.79661 4:-0.75 -2 1:-0.277778 2:-0.166667 3:0.0508474 4:-4.03573e-08 -0 1:1 2:0.5 3:0.830508 4:0.583333 -2 1:-0.333333 2:-0.666667 3:-0.0508475 4:-0.166667 -2 1:-0.277778 2:-0.416667 3:0.0847457 4:-4.03573e-08 -0 1:0.888889 2:-0.333333 3:0.932203 4:0.583333 -2 1:-0.111111 2:-0.166667 3:0.0847457 4:0.166667 -2 1:0.111111 2:-0.583333 3:0.322034 4:0.166667 -0 1:0.333333 2:0.0833333 3:0.59322 4:1 -0 1:0.222222 2:-0.166667 3:0.525424 4:0.416667 -1 1:-0.555556 2:0.5 3:-0.830508 4:-0.833333 -0 1:-0.111111 2:-0.166667 3:0.38983 4:0.416667 -0 1:0.888889 2:-0.5 3:1 4:0.833333 -1 1:-0.388889 2:0.583333 3:-0.898305 4:-0.75 -2 1:0.111111 2:0.0833333 3:0.254237 4:0.25 -0 1:0.333333 2:-0.166667 3:0.423729 4:0.833333 -1 1:-0.388889 2:0.166667 3:-0.762712 4:-0.916667 -0 1:0.333333 2:-0.0833334 3:0.559322 4:0.916667 -2 1:-0.333333 2:-0.75 3:0.0169491 4:-4.03573e-08 -1 1:-0.222222 2:1 3:-0.830508 4:-0.75 -1 1:-0.388889 2:0.583333 3:-0.762712 4:-0.75 -2 1:-0.611111 2:-1 3:-0.152542 4:-0.25 -2 1:-1.32455e-07 2:-0.333333 3:0.254237 4:-0.0833333 -2 1:-0.5 2:-0.416667 3:-0.0169491 4:0.0833333 -1 1:-0.888889 2:-0.75 3:-0.898305 4:-0.833333 -1 1:-0.666667 2:-0.0833334 3:-0.830508 4:-1 -2 1:-0.555556 2:-0.583333 3:-0.322034 4:-0.166667 -2 1:-0.166667 2:-0.5 3:0.0169491 4:-0.0833333 -1 1:-0.555556 2:0.0833333 3:-0.762712 4:-0.666667 -1 1:-0.777778 3:-0.898305 4:-0.916667 -0 1:0.388889 2:-0.166667 3:0.525424 4:0.666667 -0 1:0.222222 3:0.38983 4:0.583333 -2 1:0.333333 2:-0.0833334 3:0.254237 4:0.166667 -2 1:-0.388889 2:-0.166667 3:0.186441 4:0.166667 -0 1:-0.222222 2:-0.583333 3:0.355932 4:0.583333 -1 1:-0.611111 2:-0.166667 3:-0.79661 4:-0.916667 -1 1:-0.944444 2:-0.25 3:-0.864407 4:-0.916667 -1 1:-0.388889 2:0.166667 3:-0.830508 4:-0.75 diff --git a/image_content/config/spark/opt/spark/data/mllib/sample_svm_data.txt b/image_content/config/spark/opt/spark/data/mllib/sample_svm_data.txt deleted file mode 100644 index 7ab30bd..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/sample_svm_data.txt +++ /dev/null @@ -1,322 +0,0 @@ -1 0 2.52078447201548 0 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 12.72816758217773 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 0 0 0 0 4.745052855503306 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 0 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 0 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 0 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 0 0 2.004684436494304 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 6.857275130999357 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 10.4087817597473 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 12.72816758217773 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 4.745052855503306 0 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 0 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 0 2.52078447201548 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -0 0 2.52078447201548 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 2.061393766919624 0 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 4.745052855503306 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 2.52078447201548 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 0 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 0 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 6.857275130999357 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 4.745052855503306 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 0 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 4.745052855503306 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 0 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -0 0 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 2.061393766919624 2.619965104088255 4.745052855503306 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 0 2.52078447201548 0 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 0 0 0 -0 0 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 0 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 6.857275130999357 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -0 0 2.52078447201548 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 0 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 0 2.52078447201548 0 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 0 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 2.52078447201548 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 4.745052855503306 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 2.122974378789621 0 0 0 0 12.72816758217773 10.4087817597473 12.72816758217773 17.97228742438751 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 4.745052855503306 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 0 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 0 2.52078447201548 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 4.745052855503306 2.004684436494304 0 0 0 0 0 0 0 0 0 0 -1 0 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 0 0 0 6.857275130999357 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 4.745052855503306 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 6.857275130999357 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 0 4.745052855503306 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 0 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 4.745052855503306 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -0 0 2.52078447201548 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 4.745052855503306 2.004684436494304 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 0 2.52078447201548 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 0 0 0 2.000347299268466 2.122974378789621 0 0 6.857275130999357 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 4.745052855503306 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 2.619965104088255 0 0 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 0 0 2.061393766919624 0 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 2.061393766919624 0 0 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 6.857275130999357 0 0 0 0 0 -1 2.857738033247042 0 2.061393766919624 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 2.000347299268466 0 0 0 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 2.52078447201548 2.061393766919624 2.619965104088255 0 0 2.000347299268466 0 0 0 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 0 0 0 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 4.745052855503306 0 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 2.52078447201548 0 0 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 2.857738033247042 2.52078447201548 0 2.619965104088255 0 2.004684436494304 0 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 2.061393766919624 0 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 10.4087817597473 0 0 -0 2.857738033247042 0 2.061393766919624 2.619965104088255 0 2.004684436494304 0 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -0 2.857738033247042 0 0 2.619965104088255 0 2.004684436494304 2.000347299268466 2.122974378789621 0 0 0 0 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 2.000347299268466 0 2.228387042742021 2.228387042742023 0 0 0 0 0 0 -1 0 2.52078447201548 0 2.619965104088255 0 0 0 0 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 -1 2.857738033247042 0 0 2.619965104088255 0 0 0 2.122974378789621 2.228387042742021 2.228387042742023 0 2.055002875864414 0 0 0 0 diff --git a/image_content/config/spark/opt/spark/data/mllib/streaming_kmeans_data_test.txt b/image_content/config/spark/opt/spark/data/mllib/streaming_kmeans_data_test.txt deleted file mode 100644 index 649a0d6..0000000 --- a/image_content/config/spark/opt/spark/data/mllib/streaming_kmeans_data_test.txt +++ /dev/null @@ -1,2 +0,0 @@ -(1.0), [1.7, 0.4, 0.9] -(2.0), [2.2, 1.8, 0.0] diff --git a/image_content/config/spark/opt/spark/data/streaming/AFINN-111.txt b/image_content/config/spark/opt/spark/data/streaming/AFINN-111.txt deleted file mode 100644 index 0f6fb8e..0000000 --- a/image_content/config/spark/opt/spark/data/streaming/AFINN-111.txt +++ /dev/null @@ -1,2477 +0,0 @@ -abandon -2 -abandoned -2 -abandons -2 -abducted -2 -abduction -2 -abductions -2 -abhor -3 -abhorred -3 -abhorrent -3 -abhors -3 -abilities 2 -ability 2 -aboard 1 -absentee -1 -absentees -1 -absolve 2 -absolved 2 -absolves 2 -absolving 2 -absorbed 1 -abuse -3 -abused -3 -abuses -3 -abusive -3 -accept 1 -accepted 1 -accepting 1 -accepts 1 -accident -2 -accidental -2 -accidentally -2 -accidents -2 -accomplish 2 -accomplished 2 -accomplishes 2 -accusation -2 -accusations -2 -accuse -2 -accused -2 -accuses -2 -accusing -2 -ache -2 -achievable 1 -aching -2 -acquit 2 -acquits 2 -acquitted 2 -acquitting 2 -acrimonious -3 -active 1 -adequate 1 -admire 3 -admired 3 -admires 3 -admiring 3 -admit -1 -admits -1 -admitted -1 -admonish -2 -admonished -2 -adopt 1 -adopts 1 -adorable 3 -adore 3 -adored 3 -adores 3 -advanced 1 -advantage 2 -advantages 2 -adventure 2 -adventures 2 -adventurous 2 -affected -1 -affection 3 -affectionate 3 -afflicted -1 -affronted -1 -afraid -2 -aggravate -2 -aggravated -2 -aggravates -2 -aggravating -2 -aggression -2 -aggressions -2 -aggressive -2 -aghast -2 -agog 2 -agonise -3 -agonised -3 -agonises -3 -agonising -3 -agonize -3 -agonized -3 -agonizes -3 -agonizing -3 -agree 1 -agreeable 2 -agreed 1 -agreement 1 -agrees 1 -alarm -2 -alarmed -2 -alarmist -2 -alarmists -2 -alas -1 -alert -1 -alienation -2 -alive 1 -allergic -2 -allow 1 -alone -2 -amaze 2 -amazed 2 -amazes 2 -amazing 4 -ambitious 2 -ambivalent -1 -amuse 3 -amused 3 -amusement 3 -amusements 3 -anger -3 -angers -3 -angry -3 -anguish -3 -anguished -3 -animosity -2 -annoy -2 -annoyance -2 -annoyed -2 -annoying -2 -annoys -2 -antagonistic -2 -anti -1 -anticipation 1 -anxiety -2 -anxious -2 -apathetic -3 -apathy -3 -apeshit -3 -apocalyptic -2 -apologise -1 -apologised -1 -apologises -1 -apologising -1 -apologize -1 -apologized -1 -apologizes -1 -apologizing -1 -apology -1 -appalled -2 -appalling -2 -appease 2 -appeased 2 -appeases 2 -appeasing 2 -applaud 2 -applauded 2 -applauding 2 -applauds 2 -applause 2 -appreciate 2 -appreciated 2 -appreciates 2 -appreciating 2 -appreciation 2 -apprehensive -2 -approval 2 -approved 2 -approves 2 -ardent 1 -arrest -2 -arrested -3 -arrests -2 -arrogant -2 -ashame -2 -ashamed -2 -ass -4 -assassination -3 -assassinations -3 -asset 2 -assets 2 -assfucking -4 -asshole -4 -astonished 2 -astound 3 -astounded 3 -astounding 3 -astoundingly 3 -astounds 3 -attack -1 -attacked -1 -attacking -1 -attacks -1 -attract 1 -attracted 1 -attracting 2 -attraction 2 -attractions 2 -attracts 1 -audacious 3 -authority 1 -avert -1 -averted -1 -averts -1 -avid 2 -avoid -1 -avoided -1 -avoids -1 -await -1 -awaited -1 -awaits -1 -award 3 -awarded 3 -awards 3 -awesome 4 -awful -3 -awkward -2 -axe -1 -axed -1 -backed 1 -backing 2 -backs 1 -bad -3 -badass -3 -badly -3 -bailout -2 -bamboozle -2 -bamboozled -2 -bamboozles -2 -ban -2 -banish -1 -bankrupt -3 -bankster -3 -banned -2 -bargain 2 -barrier -2 -bastard -5 -bastards -5 -battle -1 -battles -1 -beaten -2 -beatific 3 -beating -1 -beauties 3 -beautiful 3 -beautifully 3 -beautify 3 -belittle -2 -belittled -2 -beloved 3 -benefit 2 -benefits 2 -benefitted 2 -benefitting 2 -bereave -2 -bereaved -2 -bereaves -2 -bereaving -2 -best 3 -betray -3 -betrayal -3 -betrayed -3 -betraying -3 -betrays -3 -better 2 -bias -1 -biased -2 -big 1 -bitch -5 -bitches -5 -bitter -2 -bitterly -2 -bizarre -2 -blah -2 -blame -2 -blamed -2 -blames -2 -blaming -2 -bless 2 -blesses 2 -blessing 3 -blind -1 -bliss 3 -blissful 3 -blithe 2 -block -1 -blockbuster 3 -blocked -1 -blocking -1 -blocks -1 -bloody -3 -blurry -2 -boastful -2 -bold 2 -boldly 2 -bomb -1 -boost 1 -boosted 1 -boosting 1 -boosts 1 -bore -2 -bored -2 -boring -3 -bother -2 -bothered -2 -bothers -2 -bothersome -2 -boycott -2 -boycotted -2 -boycotting -2 -boycotts -2 -brainwashing -3 -brave 2 -breakthrough 3 -breathtaking 5 -bribe -3 -bright 1 -brightest 2 -brightness 1 -brilliant 4 -brisk 2 -broke -1 -broken -1 -brooding -2 -bullied -2 -bullshit -4 -bully -2 -bullying -2 -bummer -2 -buoyant 2 -burden -2 -burdened -2 -burdening -2 -burdens -2 -calm 2 -calmed 2 -calming 2 -calms 2 -can't stand -3 -cancel -1 -cancelled -1 -cancelling -1 -cancels -1 -cancer -1 -capable 1 -captivated 3 -care 2 -carefree 1 -careful 2 -carefully 2 -careless -2 -cares 2 -cashing in -2 -casualty -2 -catastrophe -3 -catastrophic -4 -cautious -1 -celebrate 3 -celebrated 3 -celebrates 3 -celebrating 3 -censor -2 -censored -2 -censors -2 -certain 1 -chagrin -2 -chagrined -2 -challenge -1 -chance 2 -chances 2 -chaos -2 -chaotic -2 -charged -3 -charges -2 -charm 3 -charming 3 -charmless -3 -chastise -3 -chastised -3 -chastises -3 -chastising -3 -cheat -3 -cheated -3 -cheater -3 -cheaters -3 -cheats -3 -cheer 2 -cheered 2 -cheerful 2 -cheering 2 -cheerless -2 -cheers 2 -cheery 3 -cherish 2 -cherished 2 -cherishes 2 -cherishing 2 -chic 2 -childish -2 -chilling -1 -choke -2 -choked -2 -chokes -2 -choking -2 -clarifies 2 -clarity 2 -clash -2 -classy 3 -clean 2 -cleaner 2 -clear 1 -cleared 1 -clearly 1 -clears 1 -clever 2 -clouded -1 -clueless -2 -cock -5 -cocksucker -5 -cocksuckers -5 -cocky -2 -coerced -2 -collapse -2 -collapsed -2 -collapses -2 -collapsing -2 -collide -1 -collides -1 -colliding -1 -collision -2 -collisions -2 -colluding -3 -combat -1 -combats -1 -comedy 1 -comfort 2 -comfortable 2 -comforting 2 -comforts 2 -commend 2 -commended 2 -commit 1 -commitment 2 -commits 1 -committed 1 -committing 1 -compassionate 2 -compelled 1 -competent 2 -competitive 2 -complacent -2 -complain -2 -complained -2 -complains -2 -comprehensive 2 -conciliate 2 -conciliated 2 -conciliates 2 -conciliating 2 -condemn -2 -condemnation -2 -condemned -2 -condemns -2 -confidence 2 -confident 2 -conflict -2 -conflicting -2 -conflictive -2 -conflicts -2 -confuse -2 -confused -2 -confusing -2 -congrats 2 -congratulate 2 -congratulation 2 -congratulations 2 -consent 2 -consents 2 -consolable 2 -conspiracy -3 -constrained -2 -contagion -2 -contagions -2 -contagious -1 -contempt -2 -contemptuous -2 -contemptuously -2 -contend -1 -contender -1 -contending -1 -contentious -2 -contestable -2 -controversial -2 -controversially -2 -convince 1 -convinced 1 -convinces 1 -convivial 2 -cool 1 -cool stuff 3 -cornered -2 -corpse -1 -costly -2 -courage 2 -courageous 2 -courteous 2 -courtesy 2 -cover-up -3 -coward -2 -cowardly -2 -coziness 2 -cramp -1 -crap -3 -crash -2 -crazier -2 -craziest -2 -crazy -2 -creative 2 -crestfallen -2 -cried -2 -cries -2 -crime -3 -criminal -3 -criminals -3 -crisis -3 -critic -2 -criticism -2 -criticize -2 -criticized -2 -criticizes -2 -criticizing -2 -critics -2 -cruel -3 -cruelty -3 -crush -1 -crushed -2 -crushes -1 -crushing -1 -cry -1 -crying -2 -cunt -5 -curious 1 -curse -1 -cut -1 -cute 2 -cuts -1 -cutting -1 -cynic -2 -cynical -2 -cynicism -2 -damage -3 -damages -3 -damn -4 -damned -4 -damnit -4 -danger -2 -daredevil 2 -daring 2 -darkest -2 -darkness -1 -dauntless 2 -dead -3 -deadlock -2 -deafening -1 -dear 2 -dearly 3 -death -2 -debonair 2 -debt -2 -deceit -3 -deceitful -3 -deceive -3 -deceived -3 -deceives -3 -deceiving -3 -deception -3 -decisive 1 -dedicated 2 -defeated -2 -defect -3 -defects -3 -defender 2 -defenders 2 -defenseless -2 -defer -1 -deferring -1 -defiant -1 -deficit -2 -degrade -2 -degraded -2 -degrades -2 -dehumanize -2 -dehumanized -2 -dehumanizes -2 -dehumanizing -2 -deject -2 -dejected -2 -dejecting -2 -dejects -2 -delay -1 -delayed -1 -delight 3 -delighted 3 -delighting 3 -delights 3 -demand -1 -demanded -1 -demanding -1 -demands -1 -demonstration -1 -demoralized -2 -denied -2 -denier -2 -deniers -2 -denies -2 -denounce -2 -denounces -2 -deny -2 -denying -2 -depressed -2 -depressing -2 -derail -2 -derailed -2 -derails -2 -deride -2 -derided -2 -derides -2 -deriding -2 -derision -2 -desirable 2 -desire 1 -desired 2 -desirous 2 -despair -3 -despairing -3 -despairs -3 -desperate -3 -desperately -3 -despondent -3 -destroy -3 -destroyed -3 -destroying -3 -destroys -3 -destruction -3 -destructive -3 -detached -1 -detain -2 -detained -2 -detention -2 -determined 2 -devastate -2 -devastated -2 -devastating -2 -devoted 3 -diamond 1 -dick -4 -dickhead -4 -die -3 -died -3 -difficult -1 -diffident -2 -dilemma -1 -dipshit -3 -dire -3 -direful -3 -dirt -2 -dirtier -2 -dirtiest -2 -dirty -2 -disabling -1 -disadvantage -2 -disadvantaged -2 -disappear -1 -disappeared -1 -disappears -1 -disappoint -2 -disappointed -2 -disappointing -2 -disappointment -2 -disappointments -2 -disappoints -2 -disaster -2 -disasters -2 -disastrous -3 -disbelieve -2 -discard -1 -discarded -1 -discarding -1 -discards -1 -disconsolate -2 -disconsolation -2 -discontented -2 -discord -2 -discounted -1 -discouraged -2 -discredited -2 -disdain -2 -disgrace -2 -disgraced -2 -disguise -1 -disguised -1 -disguises -1 -disguising -1 -disgust -3 -disgusted -3 -disgusting -3 -disheartened -2 -dishonest -2 -disillusioned -2 -disinclined -2 -disjointed -2 -dislike -2 -dismal -2 -dismayed -2 -disorder -2 -disorganized -2 -disoriented -2 -disparage -2 -disparaged -2 -disparages -2 -disparaging -2 -displeased -2 -dispute -2 -disputed -2 -disputes -2 -disputing -2 -disqualified -2 -disquiet -2 -disregard -2 -disregarded -2 -disregarding -2 -disregards -2 -disrespect -2 -disrespected -2 -disruption -2 -disruptions -2 -disruptive -2 -dissatisfied -2 -distort -2 -distorted -2 -distorting -2 -distorts -2 -distract -2 -distracted -2 -distraction -2 -distracts -2 -distress -2 -distressed -2 -distresses -2 -distressing -2 -distrust -3 -distrustful -3 -disturb -2 -disturbed -2 -disturbing -2 -disturbs -2 -dithering -2 -dizzy -1 -dodging -2 -dodgy -2 -does not work -3 -dolorous -2 -dont like -2 -doom -2 -doomed -2 -doubt -1 -doubted -1 -doubtful -1 -doubting -1 -doubts -1 -douche -3 -douchebag -3 -downcast -2 -downhearted -2 -downside -2 -drag -1 -dragged -1 -drags -1 -drained -2 -dread -2 -dreaded -2 -dreadful -3 -dreading -2 -dream 1 -dreams 1 -dreary -2 -droopy -2 -drop -1 -drown -2 -drowned -2 -drowns -2 -drunk -2 -dubious -2 -dud -2 -dull -2 -dumb -3 -dumbass -3 -dump -1 -dumped -2 -dumps -1 -dupe -2 -duped -2 -dysfunction -2 -eager 2 -earnest 2 -ease 2 -easy 1 -ecstatic 4 -eerie -2 -eery -2 -effective 2 -effectively 2 -elated 3 -elation 3 -elegant 2 -elegantly 2 -embarrass -2 -embarrassed -2 -embarrasses -2 -embarrassing -2 -embarrassment -2 -embittered -2 -embrace 1 -emergency -2 -empathetic 2 -emptiness -1 -empty -1 -enchanted 2 -encourage 2 -encouraged 2 -encouragement 2 -encourages 2 -endorse 2 -endorsed 2 -endorsement 2 -endorses 2 -enemies -2 -enemy -2 -energetic 2 -engage 1 -engages 1 -engrossed 1 -enjoy 2 -enjoying 2 -enjoys 2 -enlighten 2 -enlightened 2 -enlightening 2 -enlightens 2 -ennui -2 -enrage -2 -enraged -2 -enrages -2 -enraging -2 -enrapture 3 -enslave -2 -enslaved -2 -enslaves -2 -ensure 1 -ensuring 1 -enterprising 1 -entertaining 2 -enthral 3 -enthusiastic 3 -entitled 1 -entrusted 2 -envies -1 -envious -2 -envy -1 -envying -1 -erroneous -2 -error -2 -errors -2 -escape -1 -escapes -1 -escaping -1 -esteemed 2 -ethical 2 -euphoria 3 -euphoric 4 -eviction -1 -evil -3 -exaggerate -2 -exaggerated -2 -exaggerates -2 -exaggerating -2 -exasperated 2 -excellence 3 -excellent 3 -excite 3 -excited 3 -excitement 3 -exciting 3 -exclude -1 -excluded -2 -exclusion -1 -exclusive 2 -excuse -1 -exempt -1 -exhausted -2 -exhilarated 3 -exhilarates 3 -exhilarating 3 -exonerate 2 -exonerated 2 -exonerates 2 -exonerating 2 -expand 1 -expands 1 -expel -2 -expelled -2 -expelling -2 -expels -2 -exploit -2 -exploited -2 -exploiting -2 -exploits -2 -exploration 1 -explorations 1 -expose -1 -exposed -1 -exposes -1 -exposing -1 -extend 1 -extends 1 -exuberant 4 -exultant 3 -exultantly 3 -fabulous 4 -fad -2 -fag -3 -faggot -3 -faggots -3 -fail -2 -failed -2 -failing -2 -fails -2 -failure -2 -failures -2 -fainthearted -2 -fair 2 -faith 1 -faithful 3 -fake -3 -fakes -3 -faking -3 -fallen -2 -falling -1 -falsified -3 -falsify -3 -fame 1 -fan 3 -fantastic 4 -farce -1 -fascinate 3 -fascinated 3 -fascinates 3 -fascinating 3 -fascist -2 -fascists -2 -fatalities -3 -fatality -3 -fatigue -2 -fatigued -2 -fatigues -2 -fatiguing -2 -favor 2 -favored 2 -favorite 2 -favorited 2 -favorites 2 -favors 2 -fear -2 -fearful -2 -fearing -2 -fearless 2 -fearsome -2 -fed up -3 -feeble -2 -feeling 1 -felonies -3 -felony -3 -fervent 2 -fervid 2 -festive 2 -fiasco -3 -fidgety -2 -fight -1 -fine 2 -fire -2 -fired -2 -firing -2 -fit 1 -fitness 1 -flagship 2 -flees -1 -flop -2 -flops -2 -flu -2 -flustered -2 -focused 2 -fond 2 -fondness 2 -fool -2 -foolish -2 -fools -2 -forced -1 -foreclosure -2 -foreclosures -2 -forget -1 -forgetful -2 -forgive 1 -forgiving 1 -forgotten -1 -fortunate 2 -frantic -1 -fraud -4 -frauds -4 -fraudster -4 -fraudsters -4 -fraudulence -4 -fraudulent -4 -free 1 -freedom 2 -frenzy -3 -fresh 1 -friendly 2 -fright -2 -frightened -2 -frightening -3 -frikin -2 -frisky 2 -frowning -1 -frustrate -2 -frustrated -2 -frustrates -2 -frustrating -2 -frustration -2 -ftw 3 -fuck -4 -fucked -4 -fucker -4 -fuckers -4 -fuckface -4 -fuckhead -4 -fucking -4 -fucktard -4 -fud -3 -fuked -4 -fuking -4 -fulfill 2 -fulfilled 2 -fulfills 2 -fuming -2 -fun 4 -funeral -1 -funerals -1 -funky 2 -funnier 4 -funny 4 -furious -3 -futile 2 -gag -2 -gagged -2 -gain 2 -gained 2 -gaining 2 -gains 2 -gallant 3 -gallantly 3 -gallantry 3 -generous 2 -genial 3 -ghost -1 -giddy -2 -gift 2 -glad 3 -glamorous 3 -glamourous 3 -glee 3 -gleeful 3 -gloom -1 -gloomy -2 -glorious 2 -glory 2 -glum -2 -god 1 -goddamn -3 -godsend 4 -good 3 -goodness 3 -grace 1 -gracious 3 -grand 3 -grant 1 -granted 1 -granting 1 -grants 1 -grateful 3 -gratification 2 -grave -2 -gray -1 -great 3 -greater 3 -greatest 3 -greed -3 -greedy -2 -green wash -3 -green washing -3 -greenwash -3 -greenwasher -3 -greenwashers -3 -greenwashing -3 -greet 1 -greeted 1 -greeting 1 -greetings 2 -greets 1 -grey -1 -grief -2 -grieved -2 -gross -2 -growing 1 -growth 2 -guarantee 1 -guilt -3 -guilty -3 -gullibility -2 -gullible -2 -gun -1 -ha 2 -hacked -1 -haha 3 -hahaha 3 -hahahah 3 -hail 2 -hailed 2 -hapless -2 -haplessness -2 -happiness 3 -happy 3 -hard -1 -hardier 2 -hardship -2 -hardy 2 -harm -2 -harmed -2 -harmful -2 -harming -2 -harms -2 -harried -2 -harsh -2 -harsher -2 -harshest -2 -hate -3 -hated -3 -haters -3 -hates -3 -hating -3 -haunt -1 -haunted -2 -haunting 1 -haunts -1 -havoc -2 -healthy 2 -heartbreaking -3 -heartbroken -3 -heartfelt 3 -heaven 2 -heavenly 4 -heavyhearted -2 -hell -4 -help 2 -helpful 2 -helping 2 -helpless -2 -helps 2 -hero 2 -heroes 2 -heroic 3 -hesitant -2 -hesitate -2 -hid -1 -hide -1 -hides -1 -hiding -1 -highlight 2 -hilarious 2 -hindrance -2 -hoax -2 -homesick -2 -honest 2 -honor 2 -honored 2 -honoring 2 -honour 2 -honoured 2 -honouring 2 -hooligan -2 -hooliganism -2 -hooligans -2 -hope 2 -hopeful 2 -hopefully 2 -hopeless -2 -hopelessness -2 -hopes 2 -hoping 2 -horrendous -3 -horrible -3 -horrific -3 -horrified -3 -hostile -2 -huckster -2 -hug 2 -huge 1 -hugs 2 -humerous 3 -humiliated -3 -humiliation -3 -humor 2 -humorous 2 -humour 2 -humourous 2 -hunger -2 -hurrah 5 -hurt -2 -hurting -2 -hurts -2 -hypocritical -2 -hysteria -3 -hysterical -3 -hysterics -3 -idiot -3 -idiotic -3 -ignorance -2 -ignorant -2 -ignore -1 -ignored -2 -ignores -1 -ill -2 -illegal -3 -illiteracy -2 -illness -2 -illnesses -2 -imbecile -3 -immobilized -1 -immortal 2 -immune 1 -impatient -2 -imperfect -2 -importance 2 -important 2 -impose -1 -imposed -1 -imposes -1 -imposing -1 -impotent -2 -impress 3 -impressed 3 -impresses 3 -impressive 3 -imprisoned -2 -improve 2 -improved 2 -improvement 2 -improves 2 -improving 2 -inability -2 -inaction -2 -inadequate -2 -incapable -2 -incapacitated -2 -incensed -2 -incompetence -2 -incompetent -2 -inconsiderate -2 -inconvenience -2 -inconvenient -2 -increase 1 -increased 1 -indecisive -2 -indestructible 2 -indifference -2 -indifferent -2 -indignant -2 -indignation -2 -indoctrinate -2 -indoctrinated -2 -indoctrinates -2 -indoctrinating -2 -ineffective -2 -ineffectively -2 -infatuated 2 -infatuation 2 -infected -2 -inferior -2 -inflamed -2 -influential 2 -infringement -2 -infuriate -2 -infuriated -2 -infuriates -2 -infuriating -2 -inhibit -1 -injured -2 -injury -2 -injustice -2 -innovate 1 -innovates 1 -innovation 1 -innovative 2 -inquisition -2 -inquisitive 2 -insane -2 -insanity -2 -insecure -2 -insensitive -2 -insensitivity -2 -insignificant -2 -insipid -2 -inspiration 2 -inspirational 2 -inspire 2 -inspired 2 -inspires 2 -inspiring 3 -insult -2 -insulted -2 -insulting -2 -insults -2 -intact 2 -integrity 2 -intelligent 2 -intense 1 -interest 1 -interested 2 -interesting 2 -interests 1 -interrogated -2 -interrupt -2 -interrupted -2 -interrupting -2 -interruption -2 -interrupts -2 -intimidate -2 -intimidated -2 -intimidates -2 -intimidating -2 -intimidation -2 -intricate 2 -intrigues 1 -invincible 2 -invite 1 -inviting 1 -invulnerable 2 -irate -3 -ironic -1 -irony -1 -irrational -1 -irresistible 2 -irresolute -2 -irresponsible 2 -irreversible -1 -irritate -3 -irritated -3 -irritating -3 -isolated -1 -itchy -2 -jackass -4 -jackasses -4 -jailed -2 -jaunty 2 -jealous -2 -jeopardy -2 -jerk -3 -jesus 1 -jewel 1 -jewels 1 -jocular 2 -join 1 -joke 2 -jokes 2 -jolly 2 -jovial 2 -joy 3 -joyful 3 -joyfully 3 -joyless -2 -joyous 3 -jubilant 3 -jumpy -1 -justice 2 -justifiably 2 -justified 2 -keen 1 -kill -3 -killed -3 -killing -3 -kills -3 -kind 2 -kinder 2 -kiss 2 -kudos 3 -lack -2 -lackadaisical -2 -lag -1 -lagged -2 -lagging -2 -lags -2 -lame -2 -landmark 2 -laugh 1 -laughed 1 -laughing 1 -laughs 1 -laughting 1 -launched 1 -lawl 3 -lawsuit -2 -lawsuits -2 -lazy -1 -leak -1 -leaked -1 -leave -1 -legal 1 -legally 1 -lenient 1 -lethargic -2 -lethargy -2 -liar -3 -liars -3 -libelous -2 -lied -2 -lifesaver 4 -lighthearted 1 -like 2 -liked 2 -likes 2 -limitation -1 -limited -1 -limits -1 -litigation -1 -litigious -2 -lively 2 -livid -2 -lmao 4 -lmfao 4 -loathe -3 -loathed -3 -loathes -3 -loathing -3 -lobby -2 -lobbying -2 -lol 3 -lonely -2 -lonesome -2 -longing -1 -loom -1 -loomed -1 -looming -1 -looms -1 -loose -3 -looses -3 -loser -3 -losing -3 -loss -3 -lost -3 -lovable 3 -love 3 -loved 3 -lovelies 3 -lovely 3 -loving 2 -lowest -1 -loyal 3 -loyalty 3 -luck 3 -luckily 3 -lucky 3 -lugubrious -2 -lunatic -3 -lunatics -3 -lurk -1 -lurking -1 -lurks -1 -mad -3 -maddening -3 -made-up -1 -madly -3 -madness -3 -mandatory -1 -manipulated -1 -manipulating -1 -manipulation -1 -marvel 3 -marvelous 3 -marvels 3 -masterpiece 4 -masterpieces 4 -matter 1 -matters 1 -mature 2 -meaningful 2 -meaningless -2 -medal 3 -mediocrity -3 -meditative 1 -melancholy -2 -menace -2 -menaced -2 -mercy 2 -merry 3 -mess -2 -messed -2 -messing up -2 -methodical 2 -mindless -2 -miracle 4 -mirth 3 -mirthful 3 -mirthfully 3 -misbehave -2 -misbehaved -2 -misbehaves -2 -misbehaving -2 -mischief -1 -mischiefs -1 -miserable -3 -misery -2 -misgiving -2 -misinformation -2 -misinformed -2 -misinterpreted -2 -misleading -3 -misread -1 -misreporting -2 -misrepresentation -2 -miss -2 -missed -2 -missing -2 -mistake -2 -mistaken -2 -mistakes -2 -mistaking -2 -misunderstand -2 -misunderstanding -2 -misunderstands -2 -misunderstood -2 -moan -2 -moaned -2 -moaning -2 -moans -2 -mock -2 -mocked -2 -mocking -2 -mocks -2 -mongering -2 -monopolize -2 -monopolized -2 -monopolizes -2 -monopolizing -2 -moody -1 -mope -1 -moping -1 -moron -3 -motherfucker -5 -motherfucking -5 -motivate 1 -motivated 2 -motivating 2 -motivation 1 -mourn -2 -mourned -2 -mournful -2 -mourning -2 -mourns -2 -mumpish -2 -murder -2 -murderer -2 -murdering -3 -murderous -3 -murders -2 -myth -1 -n00b -2 -naive -2 -nasty -3 -natural 1 -naïve -2 -needy -2 -negative -2 -negativity -2 -neglect -2 -neglected -2 -neglecting -2 -neglects -2 -nerves -1 -nervous -2 -nervously -2 -nice 3 -nifty 2 -niggas -5 -nigger -5 -no -1 -no fun -3 -noble 2 -noisy -1 -nonsense -2 -noob -2 -nosey -2 -not good -2 -not working -3 -notorious -2 -novel 2 -numb -1 -nuts -3 -obliterate -2 -obliterated -2 -obnoxious -3 -obscene -2 -obsessed 2 -obsolete -2 -obstacle -2 -obstacles -2 -obstinate -2 -odd -2 -offend -2 -offended -2 -offender -2 -offending -2 -offends -2 -offline -1 -oks 2 -ominous 3 -once-in-a-lifetime 3 -opportunities 2 -opportunity 2 -oppressed -2 -oppressive -2 -optimism 2 -optimistic 2 -optionless -2 -outcry -2 -outmaneuvered -2 -outrage -3 -outraged -3 -outreach 2 -outstanding 5 -overjoyed 4 -overload -1 -overlooked -1 -overreact -2 -overreacted -2 -overreaction -2 -overreacts -2 -oversell -2 -overselling -2 -oversells -2 -oversimplification -2 -oversimplified -2 -oversimplifies -2 -oversimplify -2 -overstatement -2 -overstatements -2 -overweight -1 -oxymoron -1 -pain -2 -pained -2 -panic -3 -panicked -3 -panics -3 -paradise 3 -paradox -1 -pardon 2 -pardoned 2 -pardoning 2 -pardons 2 -parley -1 -passionate 2 -passive -1 -passively -1 -pathetic -2 -pay -1 -peace 2 -peaceful 2 -peacefully 2 -penalty -2 -pensive -1 -perfect 3 -perfected 2 -perfectly 3 -perfects 2 -peril -2 -perjury -3 -perpetrator -2 -perpetrators -2 -perplexed -2 -persecute -2 -persecuted -2 -persecutes -2 -persecuting -2 -perturbed -2 -pesky -2 -pessimism -2 -pessimistic -2 -petrified -2 -phobic -2 -picturesque 2 -pileup -1 -pique -2 -piqued -2 -piss -4 -pissed -4 -pissing -3 -piteous -2 -pitied -1 -pity -2 -playful 2 -pleasant 3 -please 1 -pleased 3 -pleasure 3 -poised -2 -poison -2 -poisoned -2 -poisons -2 -pollute -2 -polluted -2 -polluter -2 -polluters -2 -pollutes -2 -poor -2 -poorer -2 -poorest -2 -popular 3 -positive 2 -positively 2 -possessive -2 -postpone -1 -postponed -1 -postpones -1 -postponing -1 -poverty -1 -powerful 2 -powerless -2 -praise 3 -praised 3 -praises 3 -praising 3 -pray 1 -praying 1 -prays 1 -prblm -2 -prblms -2 -prepared 1 -pressure -1 -pressured -2 -pretend -1 -pretending -1 -pretends -1 -pretty 1 -prevent -1 -prevented -1 -preventing -1 -prevents -1 -prick -5 -prison -2 -prisoner -2 -prisoners -2 -privileged 2 -proactive 2 -problem -2 -problems -2 -profiteer -2 -progress 2 -prominent 2 -promise 1 -promised 1 -promises 1 -promote 1 -promoted 1 -promotes 1 -promoting 1 -propaganda -2 -prosecute -1 -prosecuted -2 -prosecutes -1 -prosecution -1 -prospect 1 -prospects 1 -prosperous 3 -protect 1 -protected 1 -protects 1 -protest -2 -protesters -2 -protesting -2 -protests -2 -proud 2 -proudly 2 -provoke -1 -provoked -1 -provokes -1 -provoking -1 -pseudoscience -3 -punish -2 -punished -2 -punishes -2 -punitive -2 -pushy -1 -puzzled -2 -quaking -2 -questionable -2 -questioned -1 -questioning -1 -racism -3 -racist -3 -racists -3 -rage -2 -rageful -2 -rainy -1 -rant -3 -ranter -3 -ranters -3 -rants -3 -rape -4 -rapist -4 -rapture 2 -raptured 2 -raptures 2 -rapturous 4 -rash -2 -ratified 2 -reach 1 -reached 1 -reaches 1 -reaching 1 -reassure 1 -reassured 1 -reassures 1 -reassuring 2 -rebellion -2 -recession -2 -reckless -2 -recommend 2 -recommended 2 -recommends 2 -redeemed 2 -refuse -2 -refused -2 -refusing -2 -regret -2 -regretful -2 -regrets -2 -regretted -2 -regretting -2 -reject -1 -rejected -1 -rejecting -1 -rejects -1 -rejoice 4 -rejoiced 4 -rejoices 4 -rejoicing 4 -relaxed 2 -relentless -1 -reliant 2 -relieve 1 -relieved 2 -relieves 1 -relieving 2 -relishing 2 -remarkable 2 -remorse -2 -repulse -1 -repulsed -2 -rescue 2 -rescued 2 -rescues 2 -resentful -2 -resign -1 -resigned -1 -resigning -1 -resigns -1 -resolute 2 -resolve 2 -resolved 2 -resolves 2 -resolving 2 -respected 2 -responsible 2 -responsive 2 -restful 2 -restless -2 -restore 1 -restored 1 -restores 1 -restoring 1 -restrict -2 -restricted -2 -restricting -2 -restriction -2 -restricts -2 -retained -1 -retard -2 -retarded -2 -retreat -1 -revenge -2 -revengeful -2 -revered 2 -revive 2 -revives 2 -reward 2 -rewarded 2 -rewarding 2 -rewards 2 -rich 2 -ridiculous -3 -rig -1 -rigged -1 -right direction 3 -rigorous 3 -rigorously 3 -riot -2 -riots -2 -risk -2 -risks -2 -rob -2 -robber -2 -robed -2 -robing -2 -robs -2 -robust 2 -rofl 4 -roflcopter 4 -roflmao 4 -romance 2 -rotfl 4 -rotflmfao 4 -rotflol 4 -ruin -2 -ruined -2 -ruining -2 -ruins -2 -sabotage -2 -sad -2 -sadden -2 -saddened -2 -sadly -2 -safe 1 -safely 1 -safety 1 -salient 1 -sappy -1 -sarcastic -2 -satisfied 2 -save 2 -saved 2 -scam -2 -scams -2 -scandal -3 -scandalous -3 -scandals -3 -scapegoat -2 -scapegoats -2 -scare -2 -scared -2 -scary -2 -sceptical -2 -scold -2 -scoop 3 -scorn -2 -scornful -2 -scream -2 -screamed -2 -screaming -2 -screams -2 -screwed -2 -screwed up -3 -scumbag -4 -secure 2 -secured 2 -secures 2 -sedition -2 -seditious -2 -seduced -1 -self-confident 2 -self-deluded -2 -selfish -3 -selfishness -3 -sentence -2 -sentenced -2 -sentences -2 -sentencing -2 -serene 2 -severe -2 -sexy 3 -shaky -2 -shame -2 -shamed -2 -shameful -2 -share 1 -shared 1 -shares 1 -shattered -2 -shit -4 -shithead -4 -shitty -3 -shock -2 -shocked -2 -shocking -2 -shocks -2 -shoot -1 -short-sighted -2 -short-sightedness -2 -shortage -2 -shortages -2 -shrew -4 -shy -1 -sick -2 -sigh -2 -significance 1 -significant 1 -silencing -1 -silly -1 -sincere 2 -sincerely 2 -sincerest 2 -sincerity 2 -sinful -3 -singleminded -2 -skeptic -2 -skeptical -2 -skepticism -2 -skeptics -2 -slam -2 -slash -2 -slashed -2 -slashes -2 -slashing -2 -slavery -3 -sleeplessness -2 -slick 2 -slicker 2 -slickest 2 -sluggish -2 -slut -5 -smart 1 -smarter 2 -smartest 2 -smear -2 -smile 2 -smiled 2 -smiles 2 -smiling 2 -smog -2 -sneaky -1 -snub -2 -snubbed -2 -snubbing -2 -snubs -2 -sobering 1 -solemn -1 -solid 2 -solidarity 2 -solution 1 -solutions 1 -solve 1 -solved 1 -solves 1 -solving 1 -somber -2 -some kind 0 -son-of-a-bitch -5 -soothe 3 -soothed 3 -soothing 3 -sophisticated 2 -sore -1 -sorrow -2 -sorrowful -2 -sorry -1 -spam -2 -spammer -3 -spammers -3 -spamming -2 -spark 1 -sparkle 3 -sparkles 3 -sparkling 3 -speculative -2 -spirit 1 -spirited 2 -spiritless -2 -spiteful -2 -splendid 3 -sprightly 2 -squelched -1 -stab -2 -stabbed -2 -stable 2 -stabs -2 -stall -2 -stalled -2 -stalling -2 -stamina 2 -stampede -2 -startled -2 -starve -2 -starved -2 -starves -2 -starving -2 -steadfast 2 -steal -2 -steals -2 -stereotype -2 -stereotyped -2 -stifled -1 -stimulate 1 -stimulated 1 -stimulates 1 -stimulating 2 -stingy -2 -stolen -2 -stop -1 -stopped -1 -stopping -1 -stops -1 -stout 2 -straight 1 -strange -1 -strangely -1 -strangled -2 -strength 2 -strengthen 2 -strengthened 2 -strengthening 2 -strengthens 2 -stressed -2 -stressor -2 -stressors -2 -stricken -2 -strike -1 -strikers -2 -strikes -1 -strong 2 -stronger 2 -strongest 2 -struck -1 -struggle -2 -struggled -2 -struggles -2 -struggling -2 -stubborn -2 -stuck -2 -stunned -2 -stunning 4 -stupid -2 -stupidly -2 -suave 2 -substantial 1 -substantially 1 -subversive -2 -success 2 -successful 3 -suck -3 -sucks -3 -suffer -2 -suffering -2 -suffers -2 -suicidal -2 -suicide -2 -suing -2 -sulking -2 -sulky -2 -sullen -2 -sunshine 2 -super 3 -superb 5 -superior 2 -support 2 -supported 2 -supporter 1 -supporters 1 -supporting 1 -supportive 2 -supports 2 -survived 2 -surviving 2 -survivor 2 -suspect -1 -suspected -1 -suspecting -1 -suspects -1 -suspend -1 -suspended -1 -suspicious -2 -swear -2 -swearing -2 -swears -2 -sweet 2 -swift 2 -swiftly 2 -swindle -3 -swindles -3 -swindling -3 -sympathetic 2 -sympathy 2 -tard -2 -tears -2 -tender 2 -tense -2 -tension -1 -terrible -3 -terribly -3 -terrific 4 -terrified -3 -terror -3 -terrorize -3 -terrorized -3 -terrorizes -3 -thank 2 -thankful 2 -thanks 2 -thorny -2 -thoughtful 2 -thoughtless -2 -threat -2 -threaten -2 -threatened -2 -threatening -2 -threatens -2 -threats -2 -thrilled 5 -thwart -2 -thwarted -2 -thwarting -2 -thwarts -2 -timid -2 -timorous -2 -tired -2 -tits -2 -tolerant 2 -toothless -2 -top 2 -tops 2 -torn -2 -torture -4 -tortured -4 -tortures -4 -torturing -4 -totalitarian -2 -totalitarianism -2 -tout -2 -touted -2 -touting -2 -touts -2 -tragedy -2 -tragic -2 -tranquil 2 -trap -1 -trapped -2 -trauma -3 -traumatic -3 -travesty -2 -treason -3 -treasonous -3 -treasure 2 -treasures 2 -trembling -2 -tremulous -2 -tricked -2 -trickery -2 -triumph 4 -triumphant 4 -trouble -2 -troubled -2 -troubles -2 -true 2 -trust 1 -trusted 2 -tumor -2 -twat -5 -ugly -3 -unacceptable -2 -unappreciated -2 -unapproved -2 -unaware -2 -unbelievable -1 -unbelieving -1 -unbiased 2 -uncertain -1 -unclear -1 -uncomfortable -2 -unconcerned -2 -unconfirmed -1 -unconvinced -1 -uncredited -1 -undecided -1 -underestimate -1 -underestimated -1 -underestimates -1 -underestimating -1 -undermine -2 -undermined -2 -undermines -2 -undermining -2 -undeserving -2 -undesirable -2 -uneasy -2 -unemployment -2 -unequal -1 -unequaled 2 -unethical -2 -unfair -2 -unfocused -2 -unfulfilled -2 -unhappy -2 -unhealthy -2 -unified 1 -unimpressed -2 -unintelligent -2 -united 1 -unjust -2 -unlovable -2 -unloved -2 -unmatched 1 -unmotivated -2 -unprofessional -2 -unresearched -2 -unsatisfied -2 -unsecured -2 -unsettled -1 -unsophisticated -2 -unstable -2 -unstoppable 2 -unsupported -2 -unsure -1 -untarnished 2 -unwanted -2 -unworthy -2 -upset -2 -upsets -2 -upsetting -2 -uptight -2 -urgent -1 -useful 2 -usefulness 2 -useless -2 -uselessness -2 -vague -2 -validate 1 -validated 1 -validates 1 -validating 1 -verdict -1 -verdicts -1 -vested 1 -vexation -2 -vexing -2 -vibrant 3 -vicious -2 -victim -3 -victimize -3 -victimized -3 -victimizes -3 -victimizing -3 -victims -3 -vigilant 3 -vile -3 -vindicate 2 -vindicated 2 -vindicates 2 -vindicating 2 -violate -2 -violated -2 -violates -2 -violating -2 -violence -3 -violent -3 -virtuous 2 -virulent -2 -vision 1 -visionary 3 -visioning 1 -visions 1 -vitality 3 -vitamin 1 -vitriolic -3 -vivacious 3 -vociferous -1 -vulnerability -2 -vulnerable -2 -walkout -2 -walkouts -2 -wanker -3 -want 1 -war -2 -warfare -2 -warm 1 -warmth 2 -warn -2 -warned -2 -warning -3 -warnings -3 -warns -2 -waste -1 -wasted -2 -wasting -2 -wavering -1 -weak -2 -weakness -2 -wealth 3 -wealthy 2 -weary -2 -weep -2 -weeping -2 -weird -2 -welcome 2 -welcomed 2 -welcomes 2 -whimsical 1 -whitewash -3 -whore -4 -wicked -2 -widowed -1 -willingness 2 -win 4 -winner 4 -winning 4 -wins 4 -winwin 3 -wish 1 -wishes 1 -wishing 1 -withdrawal -3 -woebegone -2 -woeful -3 -won 3 -wonderful 4 -woo 3 -woohoo 3 -wooo 4 -woow 4 -worn -1 -worried -3 -worry -3 -worrying -3 -worse -3 -worsen -3 -worsened -3 -worsening -3 -worsens -3 -worshiped 3 -worst -3 -worth 2 -worthless -2 -worthy 2 -wow 4 -wowow 4 -wowww 4 -wrathful -3 -wreck -2 -wrong -2 -wronged -2 -wtf -4 -yeah 1 -yearning 1 -yeees 2 -yes 1 -youthful 2 -yucky -2 -yummy 3 -zealot -2 -zealots -2 -zealous 2 \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/examples/jars/scopt_2.11-3.3.0.jar b/image_content/config/spark/opt/spark/examples/jars/scopt_2.11-3.3.0.jar deleted file mode 120000 index 2907845..0000000 --- a/image_content/config/spark/opt/spark/examples/jars/scopt_2.11-3.3.0.jar +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../.git/annex/objects/GX/mQ/SHA256E-s121970--fbcbf3d313fe85f0bbd85f8d8456b54d419bc89f8797782d1aa66f49ca0f59e2.0.jar/SHA256E-s121970--fbcbf3d313fe85f0bbd85f8d8456b54d419bc89f8797782d1aa66f49ca0f59e2.0.jar \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/examples/jars/spark-examples_2.11-2.2.1.jar b/image_content/config/spark/opt/spark/examples/jars/spark-examples_2.11-2.2.1.jar deleted file mode 120000 index e2457cf..0000000 --- a/image_content/config/spark/opt/spark/examples/jars/spark-examples_2.11-2.2.1.jar +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../.git/annex/objects/Fm/p8/SHA256E-s1991400--4135107255472d18acb87cc3f9c1a074b64c6d581dc7151856200c41ce357409.1.jar/SHA256E-s1991400--4135107255472d18acb87cc3f9c1a074b64c6d581dc7151856200c41ce357409.1.jar \ No newline at end of file diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java deleted file mode 100644 index 362bd44..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaHdfsLR.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.function.Function; -import org.apache.spark.api.java.function.Function2; -import org.apache.spark.sql.SparkSession; - -import java.io.Serializable; -import java.util.Arrays; -import java.util.Random; -import java.util.regex.Pattern; - -/** - * Logistic regression based classification. - * - * This is an example implementation for learning how to use Spark. For more conventional use, - * please refer to org.apache.spark.ml.classification.LogisticRegression. - */ -public final class JavaHdfsLR { - - private static final int D = 10; // Number of dimensions - private static final Random rand = new Random(42); - - static void showWarning() { - String warning = "WARN: This is a naive implementation of Logistic Regression " + - "and is given as an example!\n" + - "Please use org.apache.spark.ml.classification.LogisticRegression " + - "for more conventional use."; - System.err.println(warning); - } - - static class DataPoint implements Serializable { - DataPoint(double[] x, double y) { - this.x = x; - this.y = y; - } - - double[] x; - double y; - } - - static class ParsePoint implements Function { - private static final Pattern SPACE = Pattern.compile(" "); - - @Override - public DataPoint call(String line) { - String[] tok = SPACE.split(line); - double y = Double.parseDouble(tok[0]); - double[] x = new double[D]; - for (int i = 0; i < D; i++) { - x[i] = Double.parseDouble(tok[i + 1]); - } - return new DataPoint(x, y); - } - } - - static class VectorSum implements Function2 { - @Override - public double[] call(double[] a, double[] b) { - double[] result = new double[D]; - for (int j = 0; j < D; j++) { - result[j] = a[j] + b[j]; - } - return result; - } - } - - static class ComputeGradient implements Function { - private final double[] weights; - - ComputeGradient(double[] weights) { - this.weights = weights; - } - - @Override - public double[] call(DataPoint p) { - double[] gradient = new double[D]; - for (int i = 0; i < D; i++) { - double dot = dot(weights, p.x); - gradient[i] = (1 / (1 + Math.exp(-p.y * dot)) - 1) * p.y * p.x[i]; - } - return gradient; - } - } - - public static double dot(double[] a, double[] b) { - double x = 0; - for (int i = 0; i < D; i++) { - x += a[i] * b[i]; - } - return x; - } - - public static void printWeights(double[] a) { - System.out.println(Arrays.toString(a)); - } - - public static void main(String[] args) { - - if (args.length < 2) { - System.err.println("Usage: JavaHdfsLR "); - System.exit(1); - } - - showWarning(); - - SparkSession spark = SparkSession - .builder() - .appName("JavaHdfsLR") - .getOrCreate(); - - JavaRDD lines = spark.read().textFile(args[0]).javaRDD(); - JavaRDD points = lines.map(new ParsePoint()).cache(); - int ITERATIONS = Integer.parseInt(args[1]); - - // Initialize w to a random value - double[] w = new double[D]; - for (int i = 0; i < D; i++) { - w[i] = 2 * rand.nextDouble() - 1; - } - - System.out.print("Initial w: "); - printWeights(w); - - for (int i = 1; i <= ITERATIONS; i++) { - System.out.println("On iteration " + i); - - double[] gradient = points.map( - new ComputeGradient(w) - ).reduce(new VectorSum()); - - for (int j = 0; j < D; j++) { - w[j] -= gradient[j]; - } - - } - - System.out.print("Final w: "); - printWeights(w); - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java deleted file mode 100644 index cf12de3..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaLogQuery.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import scala.Tuple2; -import scala.Tuple3; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.sql.SparkSession; - -import java.io.Serializable; -import java.util.Arrays; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Executes a roll up-style query against Apache logs. - * - * Usage: JavaLogQuery [logFile] - */ -public final class JavaLogQuery { - - public static final List exampleApacheLogs = Arrays.asList( - "10.10.10.10 - \"FRED\" [18/Jan/2013:17:56:07 +1100] \"GET http://images.com/2013/Generic.jpg " + - "HTTP/1.1\" 304 315 \"http://referall.com/\" \"Mozilla/4.0 (compatible; MSIE 7.0; " + - "Windows NT 5.1; GTB7.4; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; " + - ".NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR " + - "3.5.30729; Release=ARP)\" \"UD-1\" - \"image/jpeg\" \"whatever\" 0.350 \"-\" - \"\" 265 923 934 \"\" " + - "62.24.11.25 images.com 1358492167 - Whatup", - "10.10.10.10 - \"FRED\" [18/Jan/2013:18:02:37 +1100] \"GET http://images.com/2013/Generic.jpg " + - "HTTP/1.1\" 304 306 \"http:/referall.com\" \"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; " + - "GTB7.4; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR " + - "3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR " + - "3.5.30729; Release=ARP)\" \"UD-1\" - \"image/jpeg\" \"whatever\" 0.352 \"-\" - \"\" 256 977 988 \"\" " + - "0 73.23.2.15 images.com 1358492557 - Whatup"); - - public static final Pattern apacheLogRegex = Pattern.compile( - "^([\\d.]+) (\\S+) (\\S+) \\[([\\w\\d:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) ([\\d\\-]+) \"([^\"]+)\" \"([^\"]+)\".*"); - - /** Tracks the total query count and number of aggregate bytes for a particular group. */ - public static class Stats implements Serializable { - - private final int count; - private final int numBytes; - - public Stats(int count, int numBytes) { - this.count = count; - this.numBytes = numBytes; - } - public Stats merge(Stats other) { - return new Stats(count + other.count, numBytes + other.numBytes); - } - - public String toString() { - return String.format("bytes=%s\tn=%s", numBytes, count); - } - } - - public static Tuple3 extractKey(String line) { - Matcher m = apacheLogRegex.matcher(line); - if (m.find()) { - String ip = m.group(1); - String user = m.group(3); - String query = m.group(5); - if (!user.equalsIgnoreCase("-")) { - return new Tuple3<>(ip, user, query); - } - } - return new Tuple3<>(null, null, null); - } - - public static Stats extractStats(String line) { - Matcher m = apacheLogRegex.matcher(line); - if (m.find()) { - int bytes = Integer.parseInt(m.group(7)); - return new Stats(1, bytes); - } else { - return new Stats(1, 0); - } - } - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaLogQuery") - .getOrCreate(); - - JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext()); - - JavaRDD dataSet = (args.length == 1) ? jsc.textFile(args[0]) : jsc.parallelize(exampleApacheLogs); - - JavaPairRDD, Stats> extracted = - dataSet.mapToPair(s -> new Tuple2<>(extractKey(s), extractStats(s))); - - JavaPairRDD, Stats> counts = extracted.reduceByKey(Stats::merge); - - List, Stats>> output = counts.collect(); - for (Tuple2 t : output) { - System.out.println(t._1() + "\t" + t._2()); - } - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java deleted file mode 100644 index b5b4703..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaPageRank.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - -import scala.Tuple2; - -import com.google.common.collect.Iterables; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.function.Function2; -import org.apache.spark.sql.SparkSession; - -/** - * Computes the PageRank of URLs from an input file. Input file should - * be in format of: - * URL neighbor URL - * URL neighbor URL - * URL neighbor URL - * ... - * where URL and their neighbors are separated by space(s). - * - * This is an example implementation for learning how to use Spark. For more conventional use, - * please refer to org.apache.spark.graphx.lib.PageRank - * - * Example Usage: - *
- * bin/run-example JavaPageRank data/mllib/pagerank_data.txt 10
- * 
- */ -public final class JavaPageRank { - private static final Pattern SPACES = Pattern.compile("\\s+"); - - static void showWarning() { - String warning = "WARN: This is a naive implementation of PageRank " + - "and is given as an example! \n" + - "Please use the PageRank implementation found in " + - "org.apache.spark.graphx.lib.PageRank for more conventional use."; - System.err.println(warning); - } - - private static class Sum implements Function2 { - @Override - public Double call(Double a, Double b) { - return a + b; - } - } - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaPageRank "); - System.exit(1); - } - - showWarning(); - - SparkSession spark = SparkSession - .builder() - .appName("JavaPageRank") - .getOrCreate(); - - // Loads in input file. It should be in format of: - // URL neighbor URL - // URL neighbor URL - // URL neighbor URL - // ... - JavaRDD lines = spark.read().textFile(args[0]).javaRDD(); - - // Loads all URLs from input file and initialize their neighbors. - JavaPairRDD> links = lines.mapToPair(s -> { - String[] parts = SPACES.split(s); - return new Tuple2<>(parts[0], parts[1]); - }).distinct().groupByKey().cache(); - - // Loads all URLs with other URL(s) link to from input file and initialize ranks of them to one. - JavaPairRDD ranks = links.mapValues(rs -> 1.0); - - // Calculates and updates URL ranks continuously using PageRank algorithm. - for (int current = 0; current < Integer.parseInt(args[1]); current++) { - // Calculates URL contributions to the rank of other URLs. - JavaPairRDD contribs = links.join(ranks).values() - .flatMapToPair(s -> { - int urlCount = Iterables.size(s._1()); - List> results = new ArrayList<>(); - for (String n : s._1) { - results.add(new Tuple2<>(n, s._2() / urlCount)); - } - return results.iterator(); - }); - - // Re-calculates URL ranks based on neighbor contributions. - ranks = contribs.reduceByKey(new Sum()).mapValues(sum -> 0.15 + sum * 0.85); - } - - // Collects all URL ranks and dump them to console. - List> output = ranks.collect(); - for (Tuple2 tuple : output) { - System.out.println(tuple._1() + " has rank: " + tuple._2() + "."); - } - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaSparkPi.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaSparkPi.java deleted file mode 100644 index 37bd8ff..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaSparkPi.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.sql.SparkSession; - -import java.util.ArrayList; -import java.util.List; - -/** - * Computes an approximation to pi - * Usage: JavaSparkPi [partitions] - */ -public final class JavaSparkPi { - - public static void main(String[] args) throws Exception { - SparkSession spark = SparkSession - .builder() - .appName("JavaSparkPi") - .getOrCreate(); - - JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext()); - - int slices = (args.length == 1) ? Integer.parseInt(args[0]) : 2; - int n = 100000 * slices; - List l = new ArrayList<>(n); - for (int i = 0; i < n; i++) { - l.add(i); - } - - JavaRDD dataSet = jsc.parallelize(l, slices); - - int count = dataSet.map(integer -> { - double x = Math.random() * 2 - 1; - double y = Math.random() * 2 - 1; - return (x * x + y * y <= 1) ? 1 : 0; - }).reduce((integer, integer2) -> integer + integer2); - - System.out.println("Pi is roughly " + 4.0 * count / n); - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaStatusTrackerDemo.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaStatusTrackerDemo.java deleted file mode 100644 index b0ebedf..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaStatusTrackerDemo.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import org.apache.spark.SparkJobInfo; -import org.apache.spark.SparkStageInfo; -import org.apache.spark.api.java.JavaFutureAction; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.api.java.function.Function; -import org.apache.spark.sql.SparkSession; - -import java.util.Arrays; -import java.util.List; - -/** - * Example of using Spark's status APIs from Java. - */ -public final class JavaStatusTrackerDemo { - - public static final String APP_NAME = "JavaStatusAPIDemo"; - - public static final class IdentityWithDelay implements Function { - @Override - public T call(T x) throws Exception { - Thread.sleep(2 * 1000); // 2 seconds - return x; - } - } - - public static void main(String[] args) throws Exception { - SparkSession spark = SparkSession - .builder() - .appName(APP_NAME) - .getOrCreate(); - - JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext()); - - // Example of implementing a progress reporter for a simple job. - JavaRDD rdd = jsc.parallelize(Arrays.asList(1, 2, 3, 4, 5), 5).map( - new IdentityWithDelay<>()); - JavaFutureAction> jobFuture = rdd.collectAsync(); - while (!jobFuture.isDone()) { - Thread.sleep(1000); // 1 second - List jobIds = jobFuture.jobIds(); - if (jobIds.isEmpty()) { - continue; - } - int currentJobId = jobIds.get(jobIds.size() - 1); - SparkJobInfo jobInfo = jsc.statusTracker().getJobInfo(currentJobId); - SparkStageInfo stageInfo = jsc.statusTracker().getStageInfo(jobInfo.stageIds()[0]); - System.out.println(stageInfo.numTasks() + " tasks total: " + stageInfo.numActiveTasks() + - " active, " + stageInfo.numCompletedTasks() + " complete"); - } - - System.out.println("Job results are: " + jobFuture.get()); - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaTC.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaTC.java deleted file mode 100644 index c9ca9c9..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaTC.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Random; -import java.util.Set; - -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.api.java.function.PairFunction; -import org.apache.spark.sql.SparkSession; - -/** - * Transitive closure on a graph, implemented in Java. - * Usage: JavaTC [partitions] - */ -public final class JavaTC { - - private static final int numEdges = 200; - private static final int numVertices = 100; - private static final Random rand = new Random(42); - - static List> generateGraph() { - Set> edges = new HashSet<>(numEdges); - while (edges.size() < numEdges) { - int from = rand.nextInt(numVertices); - int to = rand.nextInt(numVertices); - Tuple2 e = new Tuple2<>(from, to); - if (from != to) { - edges.add(e); - } - } - return new ArrayList<>(edges); - } - - static class ProjectFn implements PairFunction>, - Integer, Integer> { - static final ProjectFn INSTANCE = new ProjectFn(); - - @Override - public Tuple2 call(Tuple2> triple) { - return new Tuple2<>(triple._2()._2(), triple._2()._1()); - } - } - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaTC") - .getOrCreate(); - - JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext()); - - Integer slices = (args.length > 0) ? Integer.parseInt(args[0]): 2; - JavaPairRDD tc = jsc.parallelizePairs(generateGraph(), slices).cache(); - - // Linear transitive closure: each round grows paths by one edge, - // by joining the graph's edges with the already-discovered paths. - // e.g. join the path (y, z) from the TC with the edge (x, y) from - // the graph to obtain the path (x, z). - - // Because join() joins on keys, the edges are stored in reversed order. - JavaPairRDD edges = tc.mapToPair(e -> new Tuple2<>(e._2(), e._1())); - - long oldCount; - long nextCount = tc.count(); - do { - oldCount = nextCount; - // Perform the join, obtaining an RDD of (y, (z, x)) pairs, - // then project the result to obtain the new (x, z) paths. - tc = tc.union(tc.join(edges).mapToPair(ProjectFn.INSTANCE)).distinct().cache(); - nextCount = tc.count(); - } while (nextCount != oldCount); - - System.out.println("TC has " + tc.count() + " edges."); - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java deleted file mode 100644 index f1ce1e9..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples; - -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.sql.SparkSession; - -import java.util.Arrays; -import java.util.List; -import java.util.regex.Pattern; - -public final class JavaWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - public static void main(String[] args) throws Exception { - - if (args.length < 1) { - System.err.println("Usage: JavaWordCount "); - System.exit(1); - } - - SparkSession spark = SparkSession - .builder() - .appName("JavaWordCount") - .getOrCreate(); - - JavaRDD lines = spark.read().textFile(args[0]).javaRDD(); - - JavaRDD words = lines.flatMap(s -> Arrays.asList(SPACE.split(s)).iterator()); - - JavaPairRDD ones = words.mapToPair(s -> new Tuple2<>(s, 1)); - - JavaPairRDD counts = ones.reduceByKey((i1, i2) -> i1 + i2); - - List> output = counts.collect(); - for (Tuple2 tuple : output) { - System.out.println(tuple._1() + ": " + tuple._2()); - } - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaAFTSurvivalRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaAFTSurvivalRegressionExample.java deleted file mode 100644 index 7c741ff..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaAFTSurvivalRegressionExample.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.regression.AFTSurvivalRegression; -import org.apache.spark.ml.regression.AFTSurvivalRegressionModel; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -/** - * An example demonstrating AFTSurvivalRegression. - * Run with - *
- * bin/run-example ml.JavaAFTSurvivalRegressionExample
- * 
- */ -public class JavaAFTSurvivalRegressionExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaAFTSurvivalRegressionExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(1.218, 1.0, Vectors.dense(1.560, -0.605)), - RowFactory.create(2.949, 0.0, Vectors.dense(0.346, 2.158)), - RowFactory.create(3.627, 0.0, Vectors.dense(1.380, 0.231)), - RowFactory.create(0.273, 1.0, Vectors.dense(0.520, 1.151)), - RowFactory.create(4.199, 0.0, Vectors.dense(0.795, -0.226)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("label", DataTypes.DoubleType, false, Metadata.empty()), - new StructField("censor", DataTypes.DoubleType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset training = spark.createDataFrame(data, schema); - double[] quantileProbabilities = new double[]{0.3, 0.6}; - AFTSurvivalRegression aft = new AFTSurvivalRegression() - .setQuantileProbabilities(quantileProbabilities) - .setQuantilesCol("quantiles"); - - AFTSurvivalRegressionModel model = aft.fit(training); - - // Print the coefficients, intercept and scale parameter for AFT survival regression - System.out.println("Coefficients: " + model.coefficients()); - System.out.println("Intercept: " + model.intercept()); - System.out.println("Scale: " + model.scale()); - model.transform(training).show(false); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaALSExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaALSExample.java deleted file mode 100644 index fe4d6bc..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaALSExample.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.io.Serializable; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.ml.evaluation.RegressionEvaluator; -import org.apache.spark.ml.recommendation.ALS; -import org.apache.spark.ml.recommendation.ALSModel; -// $example off$ - -public class JavaALSExample { - - // $example on$ - public static class Rating implements Serializable { - private int userId; - private int movieId; - private float rating; - private long timestamp; - - public Rating() {} - - public Rating(int userId, int movieId, float rating, long timestamp) { - this.userId = userId; - this.movieId = movieId; - this.rating = rating; - this.timestamp = timestamp; - } - - public int getUserId() { - return userId; - } - - public int getMovieId() { - return movieId; - } - - public float getRating() { - return rating; - } - - public long getTimestamp() { - return timestamp; - } - - public static Rating parseRating(String str) { - String[] fields = str.split("::"); - if (fields.length != 4) { - throw new IllegalArgumentException("Each line must contain 4 fields"); - } - int userId = Integer.parseInt(fields[0]); - int movieId = Integer.parseInt(fields[1]); - float rating = Float.parseFloat(fields[2]); - long timestamp = Long.parseLong(fields[3]); - return new Rating(userId, movieId, rating, timestamp); - } - } - // $example off$ - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaALSExample") - .getOrCreate(); - - // $example on$ - JavaRDD ratingsRDD = spark - .read().textFile("data/mllib/als/sample_movielens_ratings.txt").javaRDD() - .map(Rating::parseRating); - Dataset ratings = spark.createDataFrame(ratingsRDD, Rating.class); - Dataset[] splits = ratings.randomSplit(new double[]{0.8, 0.2}); - Dataset training = splits[0]; - Dataset test = splits[1]; - - // Build the recommendation model using ALS on the training data - ALS als = new ALS() - .setMaxIter(5) - .setRegParam(0.01) - .setUserCol("userId") - .setItemCol("movieId") - .setRatingCol("rating"); - ALSModel model = als.fit(training); - - // Evaluate the model by computing the RMSE on the test data - // Note we set cold start strategy to 'drop' to ensure we don't get NaN evaluation metrics - model.setColdStartStrategy("drop"); - Dataset predictions = model.transform(test); - - RegressionEvaluator evaluator = new RegressionEvaluator() - .setMetricName("rmse") - .setLabelCol("rating") - .setPredictionCol("prediction"); - Double rmse = evaluator.evaluate(predictions); - System.out.println("Root-mean-square error = " + rmse); - - // Generate top 10 movie recommendations for each user - Dataset userRecs = model.recommendForAllUsers(10); - // Generate top 10 user recommendations for each movie - Dataset movieRecs = model.recommendForAllItems(10); - // $example off$ - userRecs.show(); - movieRecs.show(); - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBinarizerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBinarizerExample.java deleted file mode 100644 index 3090d8f..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBinarizerExample.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.Binarizer; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaBinarizerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaBinarizerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, 0.1), - RowFactory.create(1, 0.8), - RowFactory.create(2, 0.2) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("feature", DataTypes.DoubleType, false, Metadata.empty()) - }); - Dataset continuousDataFrame = spark.createDataFrame(data, schema); - - Binarizer binarizer = new Binarizer() - .setInputCol("feature") - .setOutputCol("binarized_feature") - .setThreshold(0.5); - - Dataset binarizedDataFrame = binarizer.transform(continuousDataFrame); - - System.out.println("Binarizer output with Threshold = " + binarizer.getThreshold()); - binarizedDataFrame.show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBisectingKMeansExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBisectingKMeansExample.java deleted file mode 100644 index 8c82aaa..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBisectingKMeansExample.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.clustering.BisectingKMeans; -import org.apache.spark.ml.clustering.BisectingKMeansModel; -import org.apache.spark.ml.linalg.Vector; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - - -/** - * An example demonstrating bisecting k-means clustering. - * Run with - *
- * bin/run-example ml.JavaBisectingKMeansExample
- * 
- */ -public class JavaBisectingKMeansExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaBisectingKMeansExample") - .getOrCreate(); - - // $example on$ - // Loads data. - Dataset dataset = spark.read().format("libsvm").load("data/mllib/sample_kmeans_data.txt"); - - // Trains a bisecting k-means model. - BisectingKMeans bkm = new BisectingKMeans().setK(2).setSeed(1); - BisectingKMeansModel model = bkm.fit(dataset); - - // Evaluate clustering. - double cost = model.computeCost(dataset); - System.out.println("Within Set Sum of Squared Errors = " + cost); - - // Shows the result. - System.out.println("Cluster Centers: "); - Vector[] centers = model.clusterCenters(); - for (Vector center : centers) { - System.out.println(center); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketedRandomProjectionLSHExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketedRandomProjectionLSHExample.java deleted file mode 100644 index ff917b7..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketedRandomProjectionLSHExample.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.BucketedRandomProjectionLSH; -import org.apache.spark.ml.feature.BucketedRandomProjectionLSHModel; -import org.apache.spark.ml.linalg.Vector; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; - -import static org.apache.spark.sql.functions.col; -// $example off$ - -/** - * An example demonstrating BucketedRandomProjectionLSH. - * Run with: - * bin/run-example ml.JavaBucketedRandomProjectionLSHExample - */ -public class JavaBucketedRandomProjectionLSHExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaBucketedRandomProjectionLSHExample") - .getOrCreate(); - - // $example on$ - List dataA = Arrays.asList( - RowFactory.create(0, Vectors.dense(1.0, 1.0)), - RowFactory.create(1, Vectors.dense(1.0, -1.0)), - RowFactory.create(2, Vectors.dense(-1.0, -1.0)), - RowFactory.create(3, Vectors.dense(-1.0, 1.0)) - ); - - List dataB = Arrays.asList( - RowFactory.create(4, Vectors.dense(1.0, 0.0)), - RowFactory.create(5, Vectors.dense(-1.0, 0.0)), - RowFactory.create(6, Vectors.dense(0.0, 1.0)), - RowFactory.create(7, Vectors.dense(0.0, -1.0)) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset dfA = spark.createDataFrame(dataA, schema); - Dataset dfB = spark.createDataFrame(dataB, schema); - - Vector key = Vectors.dense(1.0, 0.0); - - BucketedRandomProjectionLSH mh = new BucketedRandomProjectionLSH() - .setBucketLength(2.0) - .setNumHashTables(3) - .setInputCol("features") - .setOutputCol("hashes"); - - BucketedRandomProjectionLSHModel model = mh.fit(dfA); - - // Feature Transformation - System.out.println("The hashed dataset where hashed values are stored in the column 'hashes':"); - model.transform(dfA).show(); - - // Compute the locality sensitive hashes for the input rows, then perform approximate - // similarity join. - // We could avoid computing hashes by passing in the already-transformed dataset, e.g. - // `model.approxSimilarityJoin(transformedA, transformedB, 1.5)` - System.out.println("Approximately joining dfA and dfB on distance smaller than 1.5:"); - model.approxSimilarityJoin(dfA, dfB, 1.5, "EuclideanDistance") - .select(col("datasetA.id").alias("idA"), - col("datasetB.id").alias("idB"), - col("EuclideanDistance")).show(); - - // Compute the locality sensitive hashes for the input rows, then perform approximate nearest - // neighbor search. - // We could avoid computing hashes by passing in the already-transformed dataset, e.g. - // `model.approxNearestNeighbors(transformedA, key, 2)` - System.out.println("Approximately searching dfA for 2 nearest neighbors of the key:"); - model.approxNearestNeighbors(dfA, key, 2).show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketizerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketizerExample.java deleted file mode 100644 index f009938..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaBucketizerExample.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.Bucketizer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaBucketizerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaBucketizerExample") - .getOrCreate(); - - // $example on$ - double[] splits = {Double.NEGATIVE_INFINITY, -0.5, 0.0, 0.5, Double.POSITIVE_INFINITY}; - - List data = Arrays.asList( - RowFactory.create(-999.9), - RowFactory.create(-0.5), - RowFactory.create(-0.3), - RowFactory.create(0.0), - RowFactory.create(0.2), - RowFactory.create(999.9) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("features", DataTypes.DoubleType, false, Metadata.empty()) - }); - Dataset dataFrame = spark.createDataFrame(data, schema); - - Bucketizer bucketizer = new Bucketizer() - .setInputCol("features") - .setOutputCol("bucketedFeatures") - .setSplits(splits); - - // Transform original data into its bucket index. - Dataset bucketedData = bucketizer.transform(dataFrame); - - System.out.println("Bucketizer output with " + (bucketizer.getSplits().length-1) + " buckets"); - bucketedData.show(); - // $example off$ - - spark.stop(); - } -} - - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSqSelectorExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSqSelectorExample.java deleted file mode 100644 index 7373896..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSqSelectorExample.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.ChiSqSelector; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaChiSqSelectorExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaChiSqSelectorExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(7, Vectors.dense(0.0, 0.0, 18.0, 1.0), 1.0), - RowFactory.create(8, Vectors.dense(0.0, 1.0, 12.0, 0.0), 0.0), - RowFactory.create(9, Vectors.dense(1.0, 0.0, 15.0, 0.1), 0.0) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()), - new StructField("clicked", DataTypes.DoubleType, false, Metadata.empty()) - }); - - Dataset df = spark.createDataFrame(data, schema); - - ChiSqSelector selector = new ChiSqSelector() - .setNumTopFeatures(1) - .setFeaturesCol("features") - .setLabelCol("clicked") - .setOutputCol("selectedFeatures"); - - Dataset result = selector.fit(df).transform(df); - - System.out.println("ChiSqSelector output with top " + selector.getNumTopFeatures() - + " features selected"); - result.show(); - - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSquareTestExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSquareTestExample.java deleted file mode 100644 index 4b39350..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaChiSquareTestExample.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.stat.ChiSquareTest; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.*; -// $example off$ - -/** - * An example for Chi-square hypothesis testing. - * Run with - *
- * bin/run-example ml.JavaChiSquareTestExample
- * 
- */ -public class JavaChiSquareTestExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaChiSquareTestExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0.0, Vectors.dense(0.5, 10.0)), - RowFactory.create(0.0, Vectors.dense(1.5, 20.0)), - RowFactory.create(1.0, Vectors.dense(1.5, 30.0)), - RowFactory.create(0.0, Vectors.dense(3.5, 30.0)), - RowFactory.create(0.0, Vectors.dense(3.5, 40.0)), - RowFactory.create(1.0, Vectors.dense(3.5, 40.0)) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("label", DataTypes.DoubleType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()), - }); - - Dataset df = spark.createDataFrame(data, schema); - Row r = ChiSquareTest.test(df, "features", "label").head(); - System.out.println("pValues: " + r.get(0).toString()); - System.out.println("degreesOfFreedom: " + r.getList(1).toString()); - System.out.println("statistics: " + r.get(2).toString()); - - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCorrelationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCorrelationExample.java deleted file mode 100644 index 2a6d62a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCorrelationExample.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.stat.Correlation; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.*; -// $example off$ - -/** - * An example for computing correlation matrix. - * Run with - *
- * bin/run-example ml.JavaCorrelationExample
- * 
- */ -public class JavaCorrelationExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaCorrelationExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(Vectors.sparse(4, new int[]{0, 3}, new double[]{1.0, -2.0})), - RowFactory.create(Vectors.dense(4.0, 5.0, 0.0, 3.0)), - RowFactory.create(Vectors.dense(6.0, 7.0, 0.0, 8.0)), - RowFactory.create(Vectors.sparse(4, new int[]{0, 3}, new double[]{9.0, 1.0})) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("features", new VectorUDT(), false, Metadata.empty()), - }); - - Dataset df = spark.createDataFrame(data, schema); - Row r1 = Correlation.corr(df, "features").head(); - System.out.println("Pearson correlation matrix:\n" + r1.get(0).toString()); - - Row r2 = Correlation.corr(df, "features", "spearman").head(); - System.out.println("Spearman correlation matrix:\n" + r2.get(0).toString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCountVectorizerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCountVectorizerExample.java deleted file mode 100644 index ac2a86c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaCountVectorizerExample.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.CountVectorizer; -import org.apache.spark.ml.feature.CountVectorizerModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.*; -// $example off$ - -public class JavaCountVectorizerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaCountVectorizerExample") - .getOrCreate(); - - // $example on$ - // Input data: Each row is a bag of words from a sentence or document. - List data = Arrays.asList( - RowFactory.create(Arrays.asList("a", "b", "c")), - RowFactory.create(Arrays.asList("a", "b", "b", "c", "a")) - ); - StructType schema = new StructType(new StructField [] { - new StructField("text", new ArrayType(DataTypes.StringType, true), false, Metadata.empty()) - }); - Dataset df = spark.createDataFrame(data, schema); - - // fit a CountVectorizerModel from the corpus - CountVectorizerModel cvModel = new CountVectorizer() - .setInputCol("text") - .setOutputCol("feature") - .setVocabSize(3) - .setMinDF(2) - .fit(df); - - // alternatively, define CountVectorizerModel with a-priori vocabulary - CountVectorizerModel cvm = new CountVectorizerModel(new String[]{"a", "b", "c"}) - .setInputCol("text") - .setOutputCol("feature"); - - cvModel.transform(df).show(false); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDCTExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDCTExample.java deleted file mode 100644 index 04546d2..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDCTExample.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.DCT; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaDCTExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaDCTExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(Vectors.dense(0.0, 1.0, -2.0, 3.0)), - RowFactory.create(Vectors.dense(-1.0, 2.0, 4.0, -7.0)), - RowFactory.create(Vectors.dense(14.0, -2.0, -5.0, 1.0)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("features", new VectorUDT(), false, Metadata.empty()), - }); - Dataset df = spark.createDataFrame(data, schema); - - DCT dct = new DCT() - .setInputCol("features") - .setOutputCol("featuresDCT") - .setInverse(false); - - Dataset dctDf = dct.transform(df); - - dctDf.select("featuresDCT").show(false); - // $example off$ - - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeClassificationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeClassificationExample.java deleted file mode 100644 index a9c6e7f..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeClassificationExample.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -// scalastyle:off println -package org.apache.spark.examples.ml; -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.classification.DecisionTreeClassifier; -import org.apache.spark.ml.classification.DecisionTreeClassificationModel; -import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator; -import org.apache.spark.ml.feature.*; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaDecisionTreeClassificationExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaDecisionTreeClassificationExample") - .getOrCreate(); - - // $example on$ - // Load the data stored in LIBSVM format as a DataFrame. - Dataset data = spark - .read() - .format("libsvm") - .load("data/mllib/sample_libsvm_data.txt"); - - // Index labels, adding metadata to the label column. - // Fit on whole dataset to include all labels in index. - StringIndexerModel labelIndexer = new StringIndexer() - .setInputCol("label") - .setOutputCol("indexedLabel") - .fit(data); - - // Automatically identify categorical features, and index them. - VectorIndexerModel featureIndexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexedFeatures") - .setMaxCategories(4) // features with > 4 distinct values are treated as continuous. - .fit(data); - - // Split the data into training and test sets (30% held out for testing). - Dataset[] splits = data.randomSplit(new double[]{0.7, 0.3}); - Dataset trainingData = splits[0]; - Dataset testData = splits[1]; - - // Train a DecisionTree model. - DecisionTreeClassifier dt = new DecisionTreeClassifier() - .setLabelCol("indexedLabel") - .setFeaturesCol("indexedFeatures"); - - // Convert indexed labels back to original labels. - IndexToString labelConverter = new IndexToString() - .setInputCol("prediction") - .setOutputCol("predictedLabel") - .setLabels(labelIndexer.labels()); - - // Chain indexers and tree in a Pipeline. - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[]{labelIndexer, featureIndexer, dt, labelConverter}); - - // Train model. This also runs the indexers. - PipelineModel model = pipeline.fit(trainingData); - - // Make predictions. - Dataset predictions = model.transform(testData); - - // Select example rows to display. - predictions.select("predictedLabel", "label", "features").show(5); - - // Select (prediction, true label) and compute test error. - MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator() - .setLabelCol("indexedLabel") - .setPredictionCol("prediction") - .setMetricName("accuracy"); - double accuracy = evaluator.evaluate(predictions); - System.out.println("Test Error = " + (1.0 - accuracy)); - - DecisionTreeClassificationModel treeModel = - (DecisionTreeClassificationModel) (model.stages()[2]); - System.out.println("Learned classification tree model:\n" + treeModel.toDebugString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeRegressionExample.java deleted file mode 100644 index cffb713..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDecisionTreeRegressionExample.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -// scalastyle:off println -package org.apache.spark.examples.ml; -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.evaluation.RegressionEvaluator; -import org.apache.spark.ml.feature.VectorIndexer; -import org.apache.spark.ml.feature.VectorIndexerModel; -import org.apache.spark.ml.regression.DecisionTreeRegressionModel; -import org.apache.spark.ml.regression.DecisionTreeRegressor; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaDecisionTreeRegressionExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaDecisionTreeRegressionExample") - .getOrCreate(); - // $example on$ - // Load the data stored in LIBSVM format as a DataFrame. - Dataset data = spark.read().format("libsvm") - .load("data/mllib/sample_libsvm_data.txt"); - - // Automatically identify categorical features, and index them. - // Set maxCategories so features with > 4 distinct values are treated as continuous. - VectorIndexerModel featureIndexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexedFeatures") - .setMaxCategories(4) - .fit(data); - - // Split the data into training and test sets (30% held out for testing). - Dataset[] splits = data.randomSplit(new double[]{0.7, 0.3}); - Dataset trainingData = splits[0]; - Dataset testData = splits[1]; - - // Train a DecisionTree model. - DecisionTreeRegressor dt = new DecisionTreeRegressor() - .setFeaturesCol("indexedFeatures"); - - // Chain indexer and tree in a Pipeline. - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[]{featureIndexer, dt}); - - // Train model. This also runs the indexer. - PipelineModel model = pipeline.fit(trainingData); - - // Make predictions. - Dataset predictions = model.transform(testData); - - // Select example rows to display. - predictions.select("label", "features").show(5); - - // Select (prediction, true label) and compute test error. - RegressionEvaluator evaluator = new RegressionEvaluator() - .setLabelCol("label") - .setPredictionCol("prediction") - .setMetricName("rmse"); - double rmse = evaluator.evaluate(predictions); - System.out.println("Root Mean Squared Error (RMSE) on test data = " + rmse); - - DecisionTreeRegressionModel treeModel = - (DecisionTreeRegressionModel) (model.stages()[1]); - System.out.println("Learned regression tree model:\n" + treeModel.toDebugString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDocument.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDocument.java deleted file mode 100644 index 6459dab..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaDocument.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import java.io.Serializable; - -/** - * Unlabeled instance type, Spark SQL can infer schema from Java Beans. - */ -@SuppressWarnings("serial") -public class JavaDocument implements Serializable { - - private long id; - private String text; - - public JavaDocument(long id, String text) { - this.id = id; - this.text = text; - } - - public long getId() { - return this.id; - } - - public String getText() { - return this.text; - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaElementwiseProductExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaElementwiseProductExample.java deleted file mode 100644 index d2e70c2..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaElementwiseProductExample.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.ElementwiseProduct; -import org.apache.spark.ml.linalg.Vector; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaElementwiseProductExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaElementwiseProductExample") - .getOrCreate(); - - // $example on$ - // Create some vector data; also works for sparse vectors - List data = Arrays.asList( - RowFactory.create("a", Vectors.dense(1.0, 2.0, 3.0)), - RowFactory.create("b", Vectors.dense(4.0, 5.0, 6.0)) - ); - - List fields = new ArrayList<>(2); - fields.add(DataTypes.createStructField("id", DataTypes.StringType, false)); - fields.add(DataTypes.createStructField("vector", new VectorUDT(), false)); - - StructType schema = DataTypes.createStructType(fields); - - Dataset dataFrame = spark.createDataFrame(data, schema); - - Vector transformingVector = Vectors.dense(0.0, 1.0, 2.0); - - ElementwiseProduct transformer = new ElementwiseProduct() - .setScalingVec(transformingVector) - .setInputCol("vector") - .setOutputCol("transformedVector"); - - // Batch transform the vectors to create new column: - transformer.transform(dataFrame).show(); - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaEstimatorTransformerParamExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaEstimatorTransformerParamExample.java deleted file mode 100644 index 9e07a0c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaEstimatorTransformerParamExample.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.classification.LogisticRegressionModel; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.param.ParamMap; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ -import org.apache.spark.sql.SparkSession; - -/** - * Java example for Estimator, Transformer, and Param. - */ -public class JavaEstimatorTransformerParamExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaEstimatorTransformerParamExample") - .getOrCreate(); - - // $example on$ - // Prepare training data. - List dataTraining = Arrays.asList( - RowFactory.create(1.0, Vectors.dense(0.0, 1.1, 0.1)), - RowFactory.create(0.0, Vectors.dense(2.0, 1.0, -1.0)), - RowFactory.create(0.0, Vectors.dense(2.0, 1.3, 1.0)), - RowFactory.create(1.0, Vectors.dense(0.0, 1.2, -0.5)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("label", DataTypes.DoubleType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset training = spark.createDataFrame(dataTraining, schema); - - // Create a LogisticRegression instance. This instance is an Estimator. - LogisticRegression lr = new LogisticRegression(); - // Print out the parameters, documentation, and any default values. - System.out.println("LogisticRegression parameters:\n" + lr.explainParams() + "\n"); - - // We may set parameters using setter methods. - lr.setMaxIter(10).setRegParam(0.01); - - // Learn a LogisticRegression model. This uses the parameters stored in lr. - LogisticRegressionModel model1 = lr.fit(training); - // Since model1 is a Model (i.e., a Transformer produced by an Estimator), - // we can view the parameters it used during fit(). - // This prints the parameter (name: value) pairs, where names are unique IDs for this - // LogisticRegression instance. - System.out.println("Model 1 was fit using parameters: " + model1.parent().extractParamMap()); - - // We may alternatively specify parameters using a ParamMap. - ParamMap paramMap = new ParamMap() - .put(lr.maxIter().w(20)) // Specify 1 Param. - .put(lr.maxIter(), 30) // This overwrites the original maxIter. - .put(lr.regParam().w(0.1), lr.threshold().w(0.55)); // Specify multiple Params. - - // One can also combine ParamMaps. - ParamMap paramMap2 = new ParamMap() - .put(lr.probabilityCol().w("myProbability")); // Change output column name - ParamMap paramMapCombined = paramMap.$plus$plus(paramMap2); - - // Now learn a new model using the paramMapCombined parameters. - // paramMapCombined overrides all parameters set earlier via lr.set* methods. - LogisticRegressionModel model2 = lr.fit(training, paramMapCombined); - System.out.println("Model 2 was fit using parameters: " + model2.parent().extractParamMap()); - - // Prepare test documents. - List dataTest = Arrays.asList( - RowFactory.create(1.0, Vectors.dense(-1.0, 1.5, 1.3)), - RowFactory.create(0.0, Vectors.dense(3.0, 2.0, -0.1)), - RowFactory.create(1.0, Vectors.dense(0.0, 2.2, -1.5)) - ); - Dataset test = spark.createDataFrame(dataTest, schema); - - // Make predictions on test documents using the Transformer.transform() method. - // LogisticRegression.transform will only use the 'features' column. - // Note that model2.transform() outputs a 'myProbability' column instead of the usual - // 'probability' column since we renamed the lr.probabilityCol parameter previously. - Dataset results = model2.transform(test); - Dataset rows = results.select("features", "label", "myProbability", "prediction"); - for (Row r: rows.collectAsList()) { - System.out.println("(" + r.get(0) + ", " + r.get(1) + ") -> prob=" + r.get(2) - + ", prediction=" + r.get(3)); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaFPGrowthExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaFPGrowthExample.java deleted file mode 100644 index 717ec21..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaFPGrowthExample.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.fpm.FPGrowth; -import org.apache.spark.ml.fpm.FPGrowthModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.*; -// $example off$ - -/** - * An example demonstrating FPGrowth. - * Run with - *
- * bin/run-example ml.JavaFPGrowthExample
- * 
- */ -public class JavaFPGrowthExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaFPGrowthExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(Arrays.asList("1 2 5".split(" "))), - RowFactory.create(Arrays.asList("1 2 3 5".split(" "))), - RowFactory.create(Arrays.asList("1 2".split(" "))) - ); - StructType schema = new StructType(new StructField[]{ new StructField( - "items", new ArrayType(DataTypes.StringType, true), false, Metadata.empty()) - }); - Dataset itemsDF = spark.createDataFrame(data, schema); - - FPGrowthModel model = new FPGrowth() - .setItemsCol("items") - .setMinSupport(0.5) - .setMinConfidence(0.6) - .fit(itemsDF); - - // Display frequent itemsets. - model.freqItemsets().show(); - - // Display generated association rules. - model.associationRules().show(); - - // transform examines the input items against all the association rules and summarize the - // consequents as prediction - model.transform(itemsDF).show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGaussianMixtureExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGaussianMixtureExample.java deleted file mode 100644 index 72bd5d0..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGaussianMixtureExample.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.clustering.GaussianMixture; -import org.apache.spark.ml.clustering.GaussianMixtureModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - - -/** - * An example demonstrating Gaussian Mixture Model. - * Run with - *
- * bin/run-example ml.JavaGaussianMixtureExample
- * 
- */ -public class JavaGaussianMixtureExample { - - public static void main(String[] args) { - - // Creates a SparkSession - SparkSession spark = SparkSession - .builder() - .appName("JavaGaussianMixtureExample") - .getOrCreate(); - - // $example on$ - // Loads data - Dataset dataset = spark.read().format("libsvm").load("data/mllib/sample_kmeans_data.txt"); - - // Trains a GaussianMixture model - GaussianMixture gmm = new GaussianMixture() - .setK(2); - GaussianMixtureModel model = gmm.fit(dataset); - - // Output the parameters of the mixture model - for (int i = 0; i < model.getK(); i++) { - System.out.printf("Gaussian %d:\nweight=%f\nmu=%s\nsigma=\n%s\n\n", - i, model.weights()[i], model.gaussians()[i].mean(), model.gaussians()[i].cov()); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGeneralizedLinearRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGeneralizedLinearRegressionExample.java deleted file mode 100644 index 3f072d1..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGeneralizedLinearRegressionExample.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; - -import org.apache.spark.ml.regression.GeneralizedLinearRegression; -import org.apache.spark.ml.regression.GeneralizedLinearRegressionModel; -import org.apache.spark.ml.regression.GeneralizedLinearRegressionTrainingSummary; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - -/** - * An example demonstrating generalized linear regression. - * Run with - *
- * bin/run-example ml.JavaGeneralizedLinearRegressionExample
- * 
- */ - -public class JavaGeneralizedLinearRegressionExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaGeneralizedLinearRegressionExample") - .getOrCreate(); - - // $example on$ - // Load training data - Dataset dataset = spark.read().format("libsvm") - .load("data/mllib/sample_linear_regression_data.txt"); - - GeneralizedLinearRegression glr = new GeneralizedLinearRegression() - .setFamily("gaussian") - .setLink("identity") - .setMaxIter(10) - .setRegParam(0.3); - - // Fit the model - GeneralizedLinearRegressionModel model = glr.fit(dataset); - - // Print the coefficients and intercept for generalized linear regression model - System.out.println("Coefficients: " + model.coefficients()); - System.out.println("Intercept: " + model.intercept()); - - // Summarize the model over the training set and print out some metrics - GeneralizedLinearRegressionTrainingSummary summary = model.summary(); - System.out.println("Coefficient Standard Errors: " - + Arrays.toString(summary.coefficientStandardErrors())); - System.out.println("T Values: " + Arrays.toString(summary.tValues())); - System.out.println("P Values: " + Arrays.toString(summary.pValues())); - System.out.println("Dispersion: " + summary.dispersion()); - System.out.println("Null Deviance: " + summary.nullDeviance()); - System.out.println("Residual Degree Of Freedom Null: " + summary.residualDegreeOfFreedomNull()); - System.out.println("Deviance: " + summary.deviance()); - System.out.println("Residual Degree Of Freedom: " + summary.residualDegreeOfFreedom()); - System.out.println("AIC: " + summary.aic()); - System.out.println("Deviance Residuals: "); - summary.residuals().show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeClassifierExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeClassifierExample.java deleted file mode 100644 index 3e9eb99..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeClassifierExample.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.classification.GBTClassificationModel; -import org.apache.spark.ml.classification.GBTClassifier; -import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator; -import org.apache.spark.ml.feature.*; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaGradientBoostedTreeClassifierExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaGradientBoostedTreeClassifierExample") - .getOrCreate(); - - // $example on$ - // Load and parse the data file, converting it to a DataFrame. - Dataset data = spark - .read() - .format("libsvm") - .load("data/mllib/sample_libsvm_data.txt"); - - // Index labels, adding metadata to the label column. - // Fit on whole dataset to include all labels in index. - StringIndexerModel labelIndexer = new StringIndexer() - .setInputCol("label") - .setOutputCol("indexedLabel") - .fit(data); - // Automatically identify categorical features, and index them. - // Set maxCategories so features with > 4 distinct values are treated as continuous. - VectorIndexerModel featureIndexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexedFeatures") - .setMaxCategories(4) - .fit(data); - - // Split the data into training and test sets (30% held out for testing) - Dataset[] splits = data.randomSplit(new double[] {0.7, 0.3}); - Dataset trainingData = splits[0]; - Dataset testData = splits[1]; - - // Train a GBT model. - GBTClassifier gbt = new GBTClassifier() - .setLabelCol("indexedLabel") - .setFeaturesCol("indexedFeatures") - .setMaxIter(10); - - // Convert indexed labels back to original labels. - IndexToString labelConverter = new IndexToString() - .setInputCol("prediction") - .setOutputCol("predictedLabel") - .setLabels(labelIndexer.labels()); - - // Chain indexers and GBT in a Pipeline. - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[] {labelIndexer, featureIndexer, gbt, labelConverter}); - - // Train model. This also runs the indexers. - PipelineModel model = pipeline.fit(trainingData); - - // Make predictions. - Dataset predictions = model.transform(testData); - - // Select example rows to display. - predictions.select("predictedLabel", "label", "features").show(5); - - // Select (prediction, true label) and compute test error. - MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator() - .setLabelCol("indexedLabel") - .setPredictionCol("prediction") - .setMetricName("accuracy"); - double accuracy = evaluator.evaluate(predictions); - System.out.println("Test Error = " + (1.0 - accuracy)); - - GBTClassificationModel gbtModel = (GBTClassificationModel)(model.stages()[2]); - System.out.println("Learned classification GBT model:\n" + gbtModel.toDebugString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeRegressorExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeRegressorExample.java deleted file mode 100644 index 769b5c3..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaGradientBoostedTreeRegressorExample.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.evaluation.RegressionEvaluator; -import org.apache.spark.ml.feature.VectorIndexer; -import org.apache.spark.ml.feature.VectorIndexerModel; -import org.apache.spark.ml.regression.GBTRegressionModel; -import org.apache.spark.ml.regression.GBTRegressor; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaGradientBoostedTreeRegressorExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaGradientBoostedTreeRegressorExample") - .getOrCreate(); - - // $example on$ - // Load and parse the data file, converting it to a DataFrame. - Dataset data = spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt"); - - // Automatically identify categorical features, and index them. - // Set maxCategories so features with > 4 distinct values are treated as continuous. - VectorIndexerModel featureIndexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexedFeatures") - .setMaxCategories(4) - .fit(data); - - // Split the data into training and test sets (30% held out for testing). - Dataset[] splits = data.randomSplit(new double[] {0.7, 0.3}); - Dataset trainingData = splits[0]; - Dataset testData = splits[1]; - - // Train a GBT model. - GBTRegressor gbt = new GBTRegressor() - .setLabelCol("label") - .setFeaturesCol("indexedFeatures") - .setMaxIter(10); - - // Chain indexer and GBT in a Pipeline. - Pipeline pipeline = new Pipeline().setStages(new PipelineStage[] {featureIndexer, gbt}); - - // Train model. This also runs the indexer. - PipelineModel model = pipeline.fit(trainingData); - - // Make predictions. - Dataset predictions = model.transform(testData); - - // Select example rows to display. - predictions.select("prediction", "label", "features").show(5); - - // Select (prediction, true label) and compute test error. - RegressionEvaluator evaluator = new RegressionEvaluator() - .setLabelCol("label") - .setPredictionCol("prediction") - .setMetricName("rmse"); - double rmse = evaluator.evaluate(predictions); - System.out.println("Root Mean Squared Error (RMSE) on test data = " + rmse); - - GBTRegressionModel gbtModel = (GBTRegressionModel)(model.stages()[1]); - System.out.println("Learned regression GBT model:\n" + gbtModel.toDebugString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaImputerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaImputerExample.java deleted file mode 100644 index ac40ccd..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaImputerExample.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.Imputer; -import org.apache.spark.ml.feature.ImputerModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.*; -// $example off$ - -import static org.apache.spark.sql.types.DataTypes.*; - -/** - * An example demonstrating Imputer. - * Run with: - * bin/run-example ml.JavaImputerExample - */ -public class JavaImputerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaImputerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(1.0, Double.NaN), - RowFactory.create(2.0, Double.NaN), - RowFactory.create(Double.NaN, 3.0), - RowFactory.create(4.0, 4.0), - RowFactory.create(5.0, 5.0) - ); - StructType schema = new StructType(new StructField[]{ - createStructField("a", DoubleType, false), - createStructField("b", DoubleType, false) - }); - Dataset df = spark.createDataFrame(data, schema); - - Imputer imputer = new Imputer() - .setInputCols(new String[]{"a", "b"}) - .setOutputCols(new String[]{"out_a", "out_b"}); - - ImputerModel model = imputer.fit(df); - model.transform(df).show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIndexToStringExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIndexToStringExample.java deleted file mode 100644 index 6965512..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIndexToStringExample.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.attribute.Attribute; -import org.apache.spark.ml.feature.IndexToString; -import org.apache.spark.ml.feature.StringIndexer; -import org.apache.spark.ml.feature.StringIndexerModel; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaIndexToStringExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaIndexToStringExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, "a"), - RowFactory.create(1, "b"), - RowFactory.create(2, "c"), - RowFactory.create(3, "a"), - RowFactory.create(4, "a"), - RowFactory.create(5, "c") - ); - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("category", DataTypes.StringType, false, Metadata.empty()) - }); - Dataset df = spark.createDataFrame(data, schema); - - StringIndexerModel indexer = new StringIndexer() - .setInputCol("category") - .setOutputCol("categoryIndex") - .fit(df); - Dataset indexed = indexer.transform(df); - - System.out.println("Transformed string column '" + indexer.getInputCol() + "' " + - "to indexed column '" + indexer.getOutputCol() + "'"); - indexed.show(); - - StructField inputColSchema = indexed.schema().apply(indexer.getOutputCol()); - System.out.println("StringIndexer will store labels in output column metadata: " + - Attribute.fromStructField(inputColSchema).toString() + "\n"); - - IndexToString converter = new IndexToString() - .setInputCol("categoryIndex") - .setOutputCol("originalCategory"); - Dataset converted = converter.transform(indexed); - - System.out.println("Transformed indexed column '" + converter.getInputCol() + "' back to " + - "original string column '" + converter.getOutputCol() + "' using labels in metadata"); - converted.select("id", "categoryIndex", "originalCategory").show(); - - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaInteractionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaInteractionExample.java deleted file mode 100644 index 3684a87..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaInteractionExample.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.ml.feature.Interaction; -import org.apache.spark.ml.feature.VectorAssembler; -import org.apache.spark.sql.*; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; - -import java.util.Arrays; -import java.util.List; - -// $example on$ -// $example off$ - -public class JavaInteractionExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaInteractionExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(1, 1, 2, 3, 8, 4, 5), - RowFactory.create(2, 4, 3, 8, 7, 9, 8), - RowFactory.create(3, 6, 1, 9, 2, 3, 6), - RowFactory.create(4, 10, 8, 6, 9, 4, 5), - RowFactory.create(5, 9, 2, 7, 10, 7, 3), - RowFactory.create(6, 1, 1, 4, 2, 8, 4) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id1", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("id2", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("id3", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("id4", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("id5", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("id6", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("id7", DataTypes.IntegerType, false, Metadata.empty()) - }); - - Dataset df = spark.createDataFrame(data, schema); - - VectorAssembler assembler1 = new VectorAssembler() - .setInputCols(new String[]{"id2", "id3", "id4"}) - .setOutputCol("vec1"); - - Dataset assembled1 = assembler1.transform(df); - - VectorAssembler assembler2 = new VectorAssembler() - .setInputCols(new String[]{"id5", "id6", "id7"}) - .setOutputCol("vec2"); - - Dataset assembled2 = assembler2.transform(assembled1).select("id1", "vec1", "vec2"); - - Interaction interaction = new Interaction() - .setInputCols(new String[]{"id1","vec1","vec2"}) - .setOutputCol("interactedCol"); - - Dataset interacted = interaction.transform(assembled2); - - interacted.show(false); - // $example off$ - - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIsotonicRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIsotonicRegressionExample.java deleted file mode 100644 index a7de8e6..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaIsotonicRegressionExample.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.ml; - -// $example on$ - -import org.apache.spark.ml.regression.IsotonicRegression; -import org.apache.spark.ml.regression.IsotonicRegressionModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - -/** - * An example demonstrating IsotonicRegression. - * Run with - *
- * bin/run-example ml.JavaIsotonicRegressionExample
- * 
- */ -public class JavaIsotonicRegressionExample { - - public static void main(String[] args) { - // Create a SparkSession. - SparkSession spark = SparkSession - .builder() - .appName("JavaIsotonicRegressionExample") - .getOrCreate(); - - // $example on$ - // Loads data. - Dataset dataset = spark.read().format("libsvm") - .load("data/mllib/sample_isotonic_regression_libsvm_data.txt"); - - // Trains an isotonic regression model. - IsotonicRegression ir = new IsotonicRegression(); - IsotonicRegressionModel model = ir.fit(dataset); - - System.out.println("Boundaries in increasing order: " + model.boundaries() + "\n"); - System.out.println("Predictions associated with the boundaries: " + model.predictions() + "\n"); - - // Makes predictions. - model.transform(dataset).show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaKMeansExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaKMeansExample.java deleted file mode 100644 index d8f948a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaKMeansExample.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.clustering.KMeansModel; -import org.apache.spark.ml.clustering.KMeans; -import org.apache.spark.ml.linalg.Vector; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - - -/** - * An example demonstrating k-means clustering. - * Run with - *
- * bin/run-example ml.JavaKMeansExample
- * 
- */ -public class JavaKMeansExample { - - public static void main(String[] args) { - // Create a SparkSession. - SparkSession spark = SparkSession - .builder() - .appName("JavaKMeansExample") - .getOrCreate(); - - // $example on$ - // Loads data. - Dataset dataset = spark.read().format("libsvm").load("data/mllib/sample_kmeans_data.txt"); - - // Trains a k-means model. - KMeans kmeans = new KMeans().setK(2).setSeed(1L); - KMeansModel model = kmeans.fit(dataset); - - // Evaluate clustering by computing Within Set Sum of Squared Errors. - double WSSSE = model.computeCost(dataset); - System.out.println("Within Set Sum of Squared Errors = " + WSSSE); - - // Shows the result. - Vector[] centers = model.clusterCenters(); - System.out.println("Cluster Centers: "); - for (Vector center: centers) { - System.out.println(center); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLDAExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLDAExample.java deleted file mode 100644 index 0e5d005..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLDAExample.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; -// $example on$ -import org.apache.spark.ml.clustering.LDA; -import org.apache.spark.ml.clustering.LDAModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -/** - * An example demonstrating LDA. - * Run with - *
- * bin/run-example ml.JavaLDAExample
- * 
- */ -public class JavaLDAExample { - - public static void main(String[] args) { - // Creates a SparkSession - SparkSession spark = SparkSession - .builder() - .appName("JavaLDAExample") - .getOrCreate(); - - // $example on$ - // Loads data. - Dataset dataset = spark.read().format("libsvm") - .load("data/mllib/sample_lda_libsvm_data.txt"); - - // Trains a LDA model. - LDA lda = new LDA().setK(10).setMaxIter(10); - LDAModel model = lda.fit(dataset); - - double ll = model.logLikelihood(dataset); - double lp = model.logPerplexity(dataset); - System.out.println("The lower bound on the log likelihood of the entire corpus: " + ll); - System.out.println("The upper bound on perplexity: " + lp); - - // Describe topics. - Dataset topics = model.describeTopics(3); - System.out.println("The topics described by their top-weighted terms:"); - topics.show(false); - - // Shows the result. - Dataset transformed = model.transform(dataset); - transformed.show(false); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLabeledDocument.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLabeledDocument.java deleted file mode 100644 index 68d1caf..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLabeledDocument.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import java.io.Serializable; - -/** - * Labeled instance type, Spark SQL can infer schema from Java Beans. - */ -@SuppressWarnings("serial") -public class JavaLabeledDocument extends JavaDocument implements Serializable { - - private double label; - - public JavaLabeledDocument(long id, String text, double label) { - super(id, text); - this.label = label; - } - - public double getLabel() { - return this.label; - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java deleted file mode 100644 index a561b6d..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.regression.LinearRegression; -import org.apache.spark.ml.regression.LinearRegressionModel; -import org.apache.spark.ml.regression.LinearRegressionTrainingSummary; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaLinearRegressionWithElasticNetExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaLinearRegressionWithElasticNetExample") - .getOrCreate(); - - // $example on$ - // Load training data. - Dataset training = spark.read().format("libsvm") - .load("data/mllib/sample_linear_regression_data.txt"); - - LinearRegression lr = new LinearRegression() - .setMaxIter(10) - .setRegParam(0.3) - .setElasticNetParam(0.8); - - // Fit the model. - LinearRegressionModel lrModel = lr.fit(training); - - // Print the coefficients and intercept for linear regression. - System.out.println("Coefficients: " - + lrModel.coefficients() + " Intercept: " + lrModel.intercept()); - - // Summarize the model over the training set and print out some metrics. - LinearRegressionTrainingSummary trainingSummary = lrModel.summary(); - System.out.println("numIterations: " + trainingSummary.totalIterations()); - System.out.println("objectiveHistory: " + Vectors.dense(trainingSummary.objectiveHistory())); - trainingSummary.residuals().show(); - System.out.println("RMSE: " + trainingSummary.rootMeanSquaredError()); - System.out.println("r2: " + trainingSummary.r2()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearSVCExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearSVCExample.java deleted file mode 100644 index a18ed1d..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearSVCExample.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.classification.LinearSVC; -import org.apache.spark.ml.classification.LinearSVCModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaLinearSVCExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaLinearSVCExample") - .getOrCreate(); - - // $example on$ - // Load training data - Dataset training = spark.read().format("libsvm") - .load("data/mllib/sample_libsvm_data.txt"); - - LinearSVC lsvc = new LinearSVC() - .setMaxIter(10) - .setRegParam(0.1); - - // Fit the model - LinearSVCModel lsvcModel = lsvc.fit(training); - - // Print the coefficients and intercept for LinearSVC - System.out.println("Coefficients: " - + lsvcModel.coefficients() + " Intercept: " + lsvcModel.intercept()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionSummaryExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionSummaryExample.java deleted file mode 100644 index dee5679..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionSummaryExample.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.classification.BinaryLogisticRegressionSummary; -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.classification.LogisticRegressionModel; -import org.apache.spark.ml.classification.LogisticRegressionTrainingSummary; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.functions; -// $example off$ - -public class JavaLogisticRegressionSummaryExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaLogisticRegressionSummaryExample") - .getOrCreate(); - - // Load training data - Dataset training = spark.read().format("libsvm") - .load("data/mllib/sample_libsvm_data.txt"); - - LogisticRegression lr = new LogisticRegression() - .setMaxIter(10) - .setRegParam(0.3) - .setElasticNetParam(0.8); - - // Fit the model - LogisticRegressionModel lrModel = lr.fit(training); - - // $example on$ - // Extract the summary from the returned LogisticRegressionModel instance trained in the earlier - // example - LogisticRegressionTrainingSummary trainingSummary = lrModel.summary(); - - // Obtain the loss per iteration. - double[] objectiveHistory = trainingSummary.objectiveHistory(); - for (double lossPerIteration : objectiveHistory) { - System.out.println(lossPerIteration); - } - - // Obtain the metrics useful to judge performance on test data. - // We cast the summary to a BinaryLogisticRegressionSummary since the problem is a binary - // classification problem. - BinaryLogisticRegressionSummary binarySummary = - (BinaryLogisticRegressionSummary) trainingSummary; - - // Obtain the receiver-operating characteristic as a dataframe and areaUnderROC. - Dataset roc = binarySummary.roc(); - roc.show(); - roc.select("FPR").show(); - System.out.println(binarySummary.areaUnderROC()); - - // Get the threshold corresponding to the maximum F-Measure and rerun LogisticRegression with - // this selected threshold. - Dataset fMeasure = binarySummary.fMeasureByThreshold(); - double maxFMeasure = fMeasure.select(functions.max("F-Measure")).head().getDouble(0); - double bestThreshold = fMeasure.where(fMeasure.col("F-Measure").equalTo(maxFMeasure)) - .select("threshold").head().getDouble(0); - lrModel.setThreshold(bestThreshold); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionWithElasticNetExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionWithElasticNetExample.java deleted file mode 100644 index 4cdec21..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaLogisticRegressionWithElasticNetExample.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.classification.LogisticRegressionModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaLogisticRegressionWithElasticNetExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaLogisticRegressionWithElasticNetExample") - .getOrCreate(); - - // $example on$ - // Load training data - Dataset training = spark.read().format("libsvm") - .load("data/mllib/sample_libsvm_data.txt"); - - LogisticRegression lr = new LogisticRegression() - .setMaxIter(10) - .setRegParam(0.3) - .setElasticNetParam(0.8); - - // Fit the model - LogisticRegressionModel lrModel = lr.fit(training); - - // Print the coefficients and intercept for logistic regression - System.out.println("Coefficients: " - + lrModel.coefficients() + " Intercept: " + lrModel.intercept()); - - // We can also use the multinomial family for binary classification - LogisticRegression mlr = new LogisticRegression() - .setMaxIter(10) - .setRegParam(0.3) - .setElasticNetParam(0.8) - .setFamily("multinomial"); - - // Fit the model - LogisticRegressionModel mlrModel = mlr.fit(training); - - // Print the coefficients and intercepts for logistic regression with multinomial family - System.out.println("Multinomial coefficients: " + lrModel.coefficientMatrix() - + "\nMultinomial intercepts: " + mlrModel.interceptVector()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMaxAbsScalerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMaxAbsScalerExample.java deleted file mode 100644 index 9f1ce46..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMaxAbsScalerExample.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.MaxAbsScaler; -import org.apache.spark.ml.feature.MaxAbsScalerModel; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ -import org.apache.spark.sql.SparkSession; - -public class JavaMaxAbsScalerExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaMaxAbsScalerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, Vectors.dense(1.0, 0.1, -8.0)), - RowFactory.create(1, Vectors.dense(2.0, 1.0, -4.0)), - RowFactory.create(2, Vectors.dense(4.0, 10.0, 8.0)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset dataFrame = spark.createDataFrame(data, schema); - - MaxAbsScaler scaler = new MaxAbsScaler() - .setInputCol("features") - .setOutputCol("scaledFeatures"); - - // Compute summary statistics and generate MaxAbsScalerModel - MaxAbsScalerModel scalerModel = scaler.fit(dataFrame); - - // rescale each feature to range [-1, 1]. - Dataset scaledData = scalerModel.transform(dataFrame); - scaledData.select("features", "scaledFeatures").show(); - // $example off$ - - spark.stop(); - } - -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinHashLSHExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinHashLSHExample.java deleted file mode 100644 index e164598..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinHashLSHExample.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.MinHashLSH; -import org.apache.spark.ml.feature.MinHashLSHModel; -import org.apache.spark.ml.linalg.Vector; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; - -import static org.apache.spark.sql.functions.col; -// $example off$ - -/** - * An example demonstrating MinHashLSH. - * Run with: - * bin/run-example ml.JavaMinHashLSHExample - */ -public class JavaMinHashLSHExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaMinHashLSHExample") - .getOrCreate(); - - // $example on$ - List dataA = Arrays.asList( - RowFactory.create(0, Vectors.sparse(6, new int[]{0, 1, 2}, new double[]{1.0, 1.0, 1.0})), - RowFactory.create(1, Vectors.sparse(6, new int[]{2, 3, 4}, new double[]{1.0, 1.0, 1.0})), - RowFactory.create(2, Vectors.sparse(6, new int[]{0, 2, 4}, new double[]{1.0, 1.0, 1.0})) - ); - - List dataB = Arrays.asList( - RowFactory.create(0, Vectors.sparse(6, new int[]{1, 3, 5}, new double[]{1.0, 1.0, 1.0})), - RowFactory.create(1, Vectors.sparse(6, new int[]{2, 3, 5}, new double[]{1.0, 1.0, 1.0})), - RowFactory.create(2, Vectors.sparse(6, new int[]{1, 2, 4}, new double[]{1.0, 1.0, 1.0})) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset dfA = spark.createDataFrame(dataA, schema); - Dataset dfB = spark.createDataFrame(dataB, schema); - - int[] indices = {1, 3}; - double[] values = {1.0, 1.0}; - Vector key = Vectors.sparse(6, indices, values); - - MinHashLSH mh = new MinHashLSH() - .setNumHashTables(5) - .setInputCol("features") - .setOutputCol("hashes"); - - MinHashLSHModel model = mh.fit(dfA); - - // Feature Transformation - System.out.println("The hashed dataset where hashed values are stored in the column 'hashes':"); - model.transform(dfA).show(); - - // Compute the locality sensitive hashes for the input rows, then perform approximate - // similarity join. - // We could avoid computing hashes by passing in the already-transformed dataset, e.g. - // `model.approxSimilarityJoin(transformedA, transformedB, 0.6)` - System.out.println("Approximately joining dfA and dfB on Jaccard distance smaller than 0.6:"); - model.approxSimilarityJoin(dfA, dfB, 0.6, "JaccardDistance") - .select(col("datasetA.id").alias("idA"), - col("datasetB.id").alias("idB"), - col("JaccardDistance")).show(); - - // Compute the locality sensitive hashes for the input rows, then perform approximate nearest - // neighbor search. - // We could avoid computing hashes by passing in the already-transformed dataset, e.g. - // `model.approxNearestNeighbors(transformedA, key, 2)` - // It may return less than 2 rows when not enough approximate near-neighbor candidates are - // found. - System.out.println("Approximately searching dfA for 2 nearest neighbors of the key:"); - model.approxNearestNeighbors(dfA, key, 2).show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinMaxScalerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinMaxScalerExample.java deleted file mode 100644 index 2757af8..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMinMaxScalerExample.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.MinMaxScaler; -import org.apache.spark.ml.feature.MinMaxScalerModel; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaMinMaxScalerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaMinMaxScalerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, Vectors.dense(1.0, 0.1, -1.0)), - RowFactory.create(1, Vectors.dense(2.0, 1.1, 1.0)), - RowFactory.create(2, Vectors.dense(3.0, 10.1, 3.0)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset dataFrame = spark.createDataFrame(data, schema); - - MinMaxScaler scaler = new MinMaxScaler() - .setInputCol("features") - .setOutputCol("scaledFeatures"); - - // Compute summary statistics and generate MinMaxScalerModel - MinMaxScalerModel scalerModel = scaler.fit(dataFrame); - - // rescale each feature to range [min, max]. - Dataset scaledData = scalerModel.transform(dataFrame); - System.out.println("Features scaled to range: [" + scaler.getMin() + ", " - + scaler.getMax() + "]"); - scaledData.select("features", "scaledFeatures").show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaCrossValidationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaCrossValidationExample.java deleted file mode 100644 index 975c65e..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaCrossValidationExample.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -// $example off$ - -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.evaluation.BinaryClassificationEvaluator; -import org.apache.spark.ml.feature.HashingTF; -import org.apache.spark.ml.feature.Tokenizer; -import org.apache.spark.ml.param.ParamMap; -import org.apache.spark.ml.tuning.CrossValidator; -import org.apache.spark.ml.tuning.CrossValidatorModel; -import org.apache.spark.ml.tuning.ParamGridBuilder; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - -/** - * Java example for Model Selection via Cross Validation. - */ -public class JavaModelSelectionViaCrossValidationExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaModelSelectionViaCrossValidationExample") - .getOrCreate(); - - // $example on$ - // Prepare training documents, which are labeled. - Dataset training = spark.createDataFrame(Arrays.asList( - new JavaLabeledDocument(0L, "a b c d e spark", 1.0), - new JavaLabeledDocument(1L, "b d", 0.0), - new JavaLabeledDocument(2L,"spark f g h", 1.0), - new JavaLabeledDocument(3L, "hadoop mapreduce", 0.0), - new JavaLabeledDocument(4L, "b spark who", 1.0), - new JavaLabeledDocument(5L, "g d a y", 0.0), - new JavaLabeledDocument(6L, "spark fly", 1.0), - new JavaLabeledDocument(7L, "was mapreduce", 0.0), - new JavaLabeledDocument(8L, "e spark program", 1.0), - new JavaLabeledDocument(9L, "a e c l", 0.0), - new JavaLabeledDocument(10L, "spark compile", 1.0), - new JavaLabeledDocument(11L, "hadoop software", 0.0) - ), JavaLabeledDocument.class); - - // Configure an ML pipeline, which consists of three stages: tokenizer, hashingTF, and lr. - Tokenizer tokenizer = new Tokenizer() - .setInputCol("text") - .setOutputCol("words"); - HashingTF hashingTF = new HashingTF() - .setNumFeatures(1000) - .setInputCol(tokenizer.getOutputCol()) - .setOutputCol("features"); - LogisticRegression lr = new LogisticRegression() - .setMaxIter(10) - .setRegParam(0.01); - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[] {tokenizer, hashingTF, lr}); - - // We use a ParamGridBuilder to construct a grid of parameters to search over. - // With 3 values for hashingTF.numFeatures and 2 values for lr.regParam, - // this grid will have 3 x 2 = 6 parameter settings for CrossValidator to choose from. - ParamMap[] paramGrid = new ParamGridBuilder() - .addGrid(hashingTF.numFeatures(), new int[] {10, 100, 1000}) - .addGrid(lr.regParam(), new double[] {0.1, 0.01}) - .build(); - - // We now treat the Pipeline as an Estimator, wrapping it in a CrossValidator instance. - // This will allow us to jointly choose parameters for all Pipeline stages. - // A CrossValidator requires an Estimator, a set of Estimator ParamMaps, and an Evaluator. - // Note that the evaluator here is a BinaryClassificationEvaluator and its default metric - // is areaUnderROC. - CrossValidator cv = new CrossValidator() - .setEstimator(pipeline) - .setEvaluator(new BinaryClassificationEvaluator()) - .setEstimatorParamMaps(paramGrid).setNumFolds(2); // Use 3+ in practice - - // Run cross-validation, and choose the best set of parameters. - CrossValidatorModel cvModel = cv.fit(training); - - // Prepare test documents, which are unlabeled. - Dataset test = spark.createDataFrame(Arrays.asList( - new JavaDocument(4L, "spark i j k"), - new JavaDocument(5L, "l m n"), - new JavaDocument(6L, "mapreduce spark"), - new JavaDocument(7L, "apache hadoop") - ), JavaDocument.class); - - // Make predictions on test documents. cvModel uses the best model found (lrModel). - Dataset predictions = cvModel.transform(test); - for (Row r : predictions.select("id", "text", "probability", "prediction").collectAsList()) { - System.out.println("(" + r.get(0) + ", " + r.get(1) + ") --> prob=" + r.get(2) - + ", prediction=" + r.get(3)); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaTrainValidationSplitExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaTrainValidationSplitExample.java deleted file mode 100644 index 9a4722b..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaModelSelectionViaTrainValidationSplitExample.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.evaluation.RegressionEvaluator; -import org.apache.spark.ml.param.ParamMap; -import org.apache.spark.ml.regression.LinearRegression; -import org.apache.spark.ml.tuning.ParamGridBuilder; -import org.apache.spark.ml.tuning.TrainValidationSplit; -import org.apache.spark.ml.tuning.TrainValidationSplitModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - -/** - * Java example demonstrating model selection using TrainValidationSplit. - * - * Run with - * {{{ - * bin/run-example ml.JavaModelSelectionViaTrainValidationSplitExample - * }}} - */ -public class JavaModelSelectionViaTrainValidationSplitExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaModelSelectionViaTrainValidationSplitExample") - .getOrCreate(); - - // $example on$ - Dataset data = spark.read().format("libsvm") - .load("data/mllib/sample_linear_regression_data.txt"); - - // Prepare training and test data. - Dataset[] splits = data.randomSplit(new double[] {0.9, 0.1}, 12345); - Dataset training = splits[0]; - Dataset test = splits[1]; - - LinearRegression lr = new LinearRegression(); - - // We use a ParamGridBuilder to construct a grid of parameters to search over. - // TrainValidationSplit will try all combinations of values and determine best model using - // the evaluator. - ParamMap[] paramGrid = new ParamGridBuilder() - .addGrid(lr.regParam(), new double[] {0.1, 0.01}) - .addGrid(lr.fitIntercept()) - .addGrid(lr.elasticNetParam(), new double[] {0.0, 0.5, 1.0}) - .build(); - - // In this case the estimator is simply the linear regression. - // A TrainValidationSplit requires an Estimator, a set of Estimator ParamMaps, and an Evaluator. - TrainValidationSplit trainValidationSplit = new TrainValidationSplit() - .setEstimator(lr) - .setEvaluator(new RegressionEvaluator()) - .setEstimatorParamMaps(paramGrid) - .setTrainRatio(0.8); // 80% for training and the remaining 20% for validation - - // Run train validation split, and choose the best set of parameters. - TrainValidationSplitModel model = trainValidationSplit.fit(training); - - // Make predictions on test data. model is the model with combination of parameters - // that performed best. - model.transform(test) - .select("features", "label", "prediction") - .show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMulticlassLogisticRegressionWithElasticNetExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMulticlassLogisticRegressionWithElasticNetExample.java deleted file mode 100644 index da410cb..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMulticlassLogisticRegressionWithElasticNetExample.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.classification.LogisticRegressionModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaMulticlassLogisticRegressionWithElasticNetExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaMulticlassLogisticRegressionWithElasticNetExample") - .getOrCreate(); - - // $example on$ - // Load training data - Dataset training = spark.read().format("libsvm") - .load("data/mllib/sample_multiclass_classification_data.txt"); - - LogisticRegression lr = new LogisticRegression() - .setMaxIter(10) - .setRegParam(0.3) - .setElasticNetParam(0.8); - - // Fit the model - LogisticRegressionModel lrModel = lr.fit(training); - - // Print the coefficients and intercept for multinomial logistic regression - System.out.println("Coefficients: \n" - + lrModel.coefficientMatrix() + " \nIntercept: " + lrModel.interceptVector()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMultilayerPerceptronClassifierExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMultilayerPerceptronClassifierExample.java deleted file mode 100644 index 43db41c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaMultilayerPerceptronClassifierExample.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.ml.classification.MultilayerPerceptronClassificationModel; -import org.apache.spark.ml.classification.MultilayerPerceptronClassifier; -import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator; -// $example off$ - -/** - * An example for Multilayer Perceptron Classification. - */ -public class JavaMultilayerPerceptronClassifierExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaMultilayerPerceptronClassifierExample") - .getOrCreate(); - - // $example on$ - // Load training data - String path = "data/mllib/sample_multiclass_classification_data.txt"; - Dataset dataFrame = spark.read().format("libsvm").load(path); - - // Split the data into train and test - Dataset[] splits = dataFrame.randomSplit(new double[]{0.6, 0.4}, 1234L); - Dataset train = splits[0]; - Dataset test = splits[1]; - - // specify layers for the neural network: - // input layer of size 4 (features), two intermediate of size 5 and 4 - // and output of size 3 (classes) - int[] layers = new int[] {4, 5, 4, 3}; - - // create the trainer and set its parameters - MultilayerPerceptronClassifier trainer = new MultilayerPerceptronClassifier() - .setLayers(layers) - .setBlockSize(128) - .setSeed(1234L) - .setMaxIter(100); - - // train the model - MultilayerPerceptronClassificationModel model = trainer.fit(train); - - // compute accuracy on the test set - Dataset result = model.transform(test); - Dataset predictionAndLabels = result.select("prediction", "label"); - MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator() - .setMetricName("accuracy"); - - System.out.println("Test set accuracy = " + evaluator.evaluate(predictionAndLabels)); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNGramExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNGramExample.java deleted file mode 100644 index 5427e46..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNGramExample.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.NGram; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaNGramExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaNGramExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, Arrays.asList("Hi", "I", "heard", "about", "Spark")), - RowFactory.create(1, Arrays.asList("I", "wish", "Java", "could", "use", "case", "classes")), - RowFactory.create(2, Arrays.asList("Logistic", "regression", "models", "are", "neat")) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField( - "words", DataTypes.createArrayType(DataTypes.StringType), false, Metadata.empty()) - }); - - Dataset wordDataFrame = spark.createDataFrame(data, schema); - - NGram ngramTransformer = new NGram().setN(2).setInputCol("words").setOutputCol("ngrams"); - - Dataset ngramDataFrame = ngramTransformer.transform(wordDataFrame); - ngramDataFrame.select("ngrams").show(false); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNaiveBayesExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNaiveBayesExample.java deleted file mode 100644 index be578dc..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNaiveBayesExample.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.classification.NaiveBayes; -import org.apache.spark.ml.classification.NaiveBayesModel; -import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -/** - * An example for Naive Bayes Classification. - */ -public class JavaNaiveBayesExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaNaiveBayesExample") - .getOrCreate(); - - // $example on$ - // Load training data - Dataset dataFrame = - spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt"); - // Split the data into train and test - Dataset[] splits = dataFrame.randomSplit(new double[]{0.6, 0.4}, 1234L); - Dataset train = splits[0]; - Dataset test = splits[1]; - - // create the trainer and set its parameters - NaiveBayes nb = new NaiveBayes(); - - // train the model - NaiveBayesModel model = nb.fit(train); - - // Select example rows to display. - Dataset predictions = model.transform(test); - predictions.show(); - - // compute accuracy on the test set - MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator() - .setLabelCol("label") - .setPredictionCol("prediction") - .setMetricName("accuracy"); - double accuracy = evaluator.evaluate(predictions); - System.out.println("Test set accuracy = " + accuracy); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNormalizerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNormalizerExample.java deleted file mode 100644 index f878c42..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaNormalizerExample.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.Normalizer; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaNormalizerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaNormalizerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, Vectors.dense(1.0, 0.1, -8.0)), - RowFactory.create(1, Vectors.dense(2.0, 1.0, -4.0)), - RowFactory.create(2, Vectors.dense(4.0, 10.0, 8.0)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("features", new VectorUDT(), false, Metadata.empty()) - }); - Dataset dataFrame = spark.createDataFrame(data, schema); - - // Normalize each Vector using $L^1$ norm. - Normalizer normalizer = new Normalizer() - .setInputCol("features") - .setOutputCol("normFeatures") - .setP(1.0); - - Dataset l1NormData = normalizer.transform(dataFrame); - l1NormData.show(); - - // Normalize each Vector using $L^\infty$ norm. - Dataset lInfNormData = - normalizer.transform(dataFrame, normalizer.p().w(Double.POSITIVE_INFINITY)); - lInfNormData.show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneHotEncoderExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneHotEncoderExample.java deleted file mode 100644 index 99af376..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneHotEncoderExample.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.OneHotEncoder; -import org.apache.spark.ml.feature.StringIndexer; -import org.apache.spark.ml.feature.StringIndexerModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaOneHotEncoderExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaOneHotEncoderExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, "a"), - RowFactory.create(1, "b"), - RowFactory.create(2, "c"), - RowFactory.create(3, "a"), - RowFactory.create(4, "a"), - RowFactory.create(5, "c") - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("category", DataTypes.StringType, false, Metadata.empty()) - }); - - Dataset df = spark.createDataFrame(data, schema); - - StringIndexerModel indexer = new StringIndexer() - .setInputCol("category") - .setOutputCol("categoryIndex") - .fit(df); - Dataset indexed = indexer.transform(df); - - OneHotEncoder encoder = new OneHotEncoder() - .setInputCol("categoryIndex") - .setOutputCol("categoryVec"); - - Dataset encoded = encoder.transform(indexed); - encoded.show(); - // $example off$ - - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneVsRestExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneVsRestExample.java deleted file mode 100644 index 82fb540..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaOneVsRestExample.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.classification.OneVsRest; -import org.apache.spark.ml.classification.OneVsRestModel; -import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - - -/** - * An example of Multiclass to Binary Reduction with One Vs Rest, - * using Logistic Regression as the base classifier. - * Run with - *
- * bin/run-example ml.JavaOneVsRestExample
- * 
- */ -public class JavaOneVsRestExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaOneVsRestExample") - .getOrCreate(); - - // $example on$ - // load data file. - Dataset inputData = spark.read().format("libsvm") - .load("data/mllib/sample_multiclass_classification_data.txt"); - - // generate the train/test split. - Dataset[] tmp = inputData.randomSplit(new double[]{0.8, 0.2}); - Dataset train = tmp[0]; - Dataset test = tmp[1]; - - // configure the base classifier. - LogisticRegression classifier = new LogisticRegression() - .setMaxIter(10) - .setTol(1E-6) - .setFitIntercept(true); - - // instantiate the One Vs Rest Classifier. - OneVsRest ovr = new OneVsRest().setClassifier(classifier); - - // train the multiclass model. - OneVsRestModel ovrModel = ovr.fit(train); - - // score the model on test data. - Dataset predictions = ovrModel.transform(test) - .select("prediction", "label"); - - // obtain evaluator. - MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator() - .setMetricName("accuracy"); - - // compute the classification error on test data. - double accuracy = evaluator.evaluate(predictions); - System.out.println("Test Error = " + (1 - accuracy)); - // $example off$ - - spark.stop(); - } - -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPCAExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPCAExample.java deleted file mode 100644 index 6951a65..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPCAExample.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.PCA; -import org.apache.spark.ml.feature.PCAModel; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaPCAExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaPCAExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(Vectors.sparse(5, new int[]{1, 3}, new double[]{1.0, 7.0})), - RowFactory.create(Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0)), - RowFactory.create(Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0)) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("features", new VectorUDT(), false, Metadata.empty()), - }); - - Dataset df = spark.createDataFrame(data, schema); - - PCAModel pca = new PCA() - .setInputCol("features") - .setOutputCol("pcaFeatures") - .setK(3) - .fit(df); - - Dataset result = pca.transform(df).select("pcaFeatures"); - result.show(false); - // $example off$ - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPipelineExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPipelineExample.java deleted file mode 100644 index 4ccd8f6..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPipelineExample.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; - -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.classification.LogisticRegression; -import org.apache.spark.ml.feature.HashingTF; -import org.apache.spark.ml.feature.Tokenizer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ -import org.apache.spark.sql.SparkSession; - -/** - * Java example for simple text document 'Pipeline'. - */ -public class JavaPipelineExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaPipelineExample") - .getOrCreate(); - - // $example on$ - // Prepare training documents, which are labeled. - Dataset training = spark.createDataFrame(Arrays.asList( - new JavaLabeledDocument(0L, "a b c d e spark", 1.0), - new JavaLabeledDocument(1L, "b d", 0.0), - new JavaLabeledDocument(2L, "spark f g h", 1.0), - new JavaLabeledDocument(3L, "hadoop mapreduce", 0.0) - ), JavaLabeledDocument.class); - - // Configure an ML pipeline, which consists of three stages: tokenizer, hashingTF, and lr. - Tokenizer tokenizer = new Tokenizer() - .setInputCol("text") - .setOutputCol("words"); - HashingTF hashingTF = new HashingTF() - .setNumFeatures(1000) - .setInputCol(tokenizer.getOutputCol()) - .setOutputCol("features"); - LogisticRegression lr = new LogisticRegression() - .setMaxIter(10) - .setRegParam(0.001); - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[] {tokenizer, hashingTF, lr}); - - // Fit the pipeline to training documents. - PipelineModel model = pipeline.fit(training); - - // Prepare test documents, which are unlabeled. - Dataset test = spark.createDataFrame(Arrays.asList( - new JavaDocument(4L, "spark i j k"), - new JavaDocument(5L, "l m n"), - new JavaDocument(6L, "spark hadoop spark"), - new JavaDocument(7L, "apache hadoop") - ), JavaDocument.class); - - // Make predictions on test documents. - Dataset predictions = model.transform(test); - for (Row r : predictions.select("id", "text", "probability", "prediction").collectAsList()) { - System.out.println("(" + r.get(0) + ", " + r.get(1) + ") --> prob=" + r.get(2) - + ", prediction=" + r.get(3)); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPolynomialExpansionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPolynomialExpansionExample.java deleted file mode 100644 index 43c636c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaPolynomialExpansionExample.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.PolynomialExpansion; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaPolynomialExpansionExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaPolynomialExpansionExample") - .getOrCreate(); - - // $example on$ - PolynomialExpansion polyExpansion = new PolynomialExpansion() - .setInputCol("features") - .setOutputCol("polyFeatures") - .setDegree(3); - - List data = Arrays.asList( - RowFactory.create(Vectors.dense(2.0, 1.0)), - RowFactory.create(Vectors.dense(0.0, 0.0)), - RowFactory.create(Vectors.dense(3.0, -1.0)) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("features", new VectorUDT(), false, Metadata.empty()), - }); - Dataset df = spark.createDataFrame(data, schema); - - Dataset polyDF = polyExpansion.transform(df); - polyDF.show(false); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaQuantileDiscretizerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaQuantileDiscretizerExample.java deleted file mode 100644 index dd20cac..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaQuantileDiscretizerExample.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.QuantileDiscretizer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaQuantileDiscretizerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaQuantileDiscretizerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, 18.0), - RowFactory.create(1, 19.0), - RowFactory.create(2, 8.0), - RowFactory.create(3, 5.0), - RowFactory.create(4, 2.2) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("hour", DataTypes.DoubleType, false, Metadata.empty()) - }); - - Dataset df = spark.createDataFrame(data, schema); - // $example off$ - // Output of QuantileDiscretizer for such small datasets can depend on the number of - // partitions. Here we force a single partition to ensure consistent results. - // Note this is not necessary for normal use cases - df = df.repartition(1); - // $example on$ - QuantileDiscretizer discretizer = new QuantileDiscretizer() - .setInputCol("hour") - .setOutputCol("result") - .setNumBuckets(3); - - Dataset result = discretizer.fit(df).transform(df); - result.show(); - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRFormulaExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRFormulaExample.java deleted file mode 100644 index 428067e..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRFormulaExample.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.RFormula; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; - -import static org.apache.spark.sql.types.DataTypes.*; -// $example off$ - -public class JavaRFormulaExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaRFormulaExample") - .getOrCreate(); - - // $example on$ - StructType schema = createStructType(new StructField[]{ - createStructField("id", IntegerType, false), - createStructField("country", StringType, false), - createStructField("hour", IntegerType, false), - createStructField("clicked", DoubleType, false) - }); - - List data = Arrays.asList( - RowFactory.create(7, "US", 18, 1.0), - RowFactory.create(8, "CA", 12, 0.0), - RowFactory.create(9, "NZ", 15, 0.0) - ); - - Dataset dataset = spark.createDataFrame(data, schema); - RFormula formula = new RFormula() - .setFormula("clicked ~ country + hour") - .setFeaturesCol("features") - .setLabelCol("label"); - Dataset output = formula.fit(dataset).transform(dataset); - output.select("features", "label").show(); - // $example off$ - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestClassifierExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestClassifierExample.java deleted file mode 100644 index da2633e..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestClassifierExample.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.classification.RandomForestClassificationModel; -import org.apache.spark.ml.classification.RandomForestClassifier; -import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator; -import org.apache.spark.ml.feature.*; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaRandomForestClassifierExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaRandomForestClassifierExample") - .getOrCreate(); - - // $example on$ - // Load and parse the data file, converting it to a DataFrame. - Dataset data = spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt"); - - // Index labels, adding metadata to the label column. - // Fit on whole dataset to include all labels in index. - StringIndexerModel labelIndexer = new StringIndexer() - .setInputCol("label") - .setOutputCol("indexedLabel") - .fit(data); - // Automatically identify categorical features, and index them. - // Set maxCategories so features with > 4 distinct values are treated as continuous. - VectorIndexerModel featureIndexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexedFeatures") - .setMaxCategories(4) - .fit(data); - - // Split the data into training and test sets (30% held out for testing) - Dataset[] splits = data.randomSplit(new double[] {0.7, 0.3}); - Dataset trainingData = splits[0]; - Dataset testData = splits[1]; - - // Train a RandomForest model. - RandomForestClassifier rf = new RandomForestClassifier() - .setLabelCol("indexedLabel") - .setFeaturesCol("indexedFeatures"); - - // Convert indexed labels back to original labels. - IndexToString labelConverter = new IndexToString() - .setInputCol("prediction") - .setOutputCol("predictedLabel") - .setLabels(labelIndexer.labels()); - - // Chain indexers and forest in a Pipeline - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[] {labelIndexer, featureIndexer, rf, labelConverter}); - - // Train model. This also runs the indexers. - PipelineModel model = pipeline.fit(trainingData); - - // Make predictions. - Dataset predictions = model.transform(testData); - - // Select example rows to display. - predictions.select("predictedLabel", "label", "features").show(5); - - // Select (prediction, true label) and compute test error - MulticlassClassificationEvaluator evaluator = new MulticlassClassificationEvaluator() - .setLabelCol("indexedLabel") - .setPredictionCol("prediction") - .setMetricName("accuracy"); - double accuracy = evaluator.evaluate(predictions); - System.out.println("Test Error = " + (1.0 - accuracy)); - - RandomForestClassificationModel rfModel = (RandomForestClassificationModel)(model.stages()[2]); - System.out.println("Learned classification forest model:\n" + rfModel.toDebugString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestRegressorExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestRegressorExample.java deleted file mode 100644 index a707845..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaRandomForestRegressorExample.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import org.apache.spark.ml.Pipeline; -import org.apache.spark.ml.PipelineModel; -import org.apache.spark.ml.PipelineStage; -import org.apache.spark.ml.evaluation.RegressionEvaluator; -import org.apache.spark.ml.feature.VectorIndexer; -import org.apache.spark.ml.feature.VectorIndexerModel; -import org.apache.spark.ml.regression.RandomForestRegressionModel; -import org.apache.spark.ml.regression.RandomForestRegressor; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off$ - -public class JavaRandomForestRegressorExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaRandomForestRegressorExample") - .getOrCreate(); - - // $example on$ - // Load and parse the data file, converting it to a DataFrame. - Dataset data = spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt"); - - // Automatically identify categorical features, and index them. - // Set maxCategories so features with > 4 distinct values are treated as continuous. - VectorIndexerModel featureIndexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexedFeatures") - .setMaxCategories(4) - .fit(data); - - // Split the data into training and test sets (30% held out for testing) - Dataset[] splits = data.randomSplit(new double[] {0.7, 0.3}); - Dataset trainingData = splits[0]; - Dataset testData = splits[1]; - - // Train a RandomForest model. - RandomForestRegressor rf = new RandomForestRegressor() - .setLabelCol("label") - .setFeaturesCol("indexedFeatures"); - - // Chain indexer and forest in a Pipeline - Pipeline pipeline = new Pipeline() - .setStages(new PipelineStage[] {featureIndexer, rf}); - - // Train model. This also runs the indexer. - PipelineModel model = pipeline.fit(trainingData); - - // Make predictions. - Dataset predictions = model.transform(testData); - - // Select example rows to display. - predictions.select("prediction", "label", "features").show(5); - - // Select (prediction, true label) and compute test error - RegressionEvaluator evaluator = new RegressionEvaluator() - .setLabelCol("label") - .setPredictionCol("prediction") - .setMetricName("rmse"); - double rmse = evaluator.evaluate(predictions); - System.out.println("Root Mean Squared Error (RMSE) on test data = " + rmse); - - RandomForestRegressionModel rfModel = (RandomForestRegressionModel)(model.stages()[1]); - System.out.println("Learned regression forest model:\n" + rfModel.toDebugString()); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaSQLTransformerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaSQLTransformerExample.java deleted file mode 100644 index 2a3d62d..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaSQLTransformerExample.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.SQLTransformer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.*; -// $example off$ - -public class JavaSQLTransformerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaSQLTransformerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, 1.0, 3.0), - RowFactory.create(2, 2.0, 5.0) - ); - StructType schema = new StructType(new StructField [] { - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("v1", DataTypes.DoubleType, false, Metadata.empty()), - new StructField("v2", DataTypes.DoubleType, false, Metadata.empty()) - }); - Dataset df = spark.createDataFrame(data, schema); - - SQLTransformer sqlTrans = new SQLTransformer().setStatement( - "SELECT *, (v1 + v2) AS v3, (v1 * v2) AS v4 FROM __THIS__"); - - sqlTrans.transform(df).show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStandardScalerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStandardScalerExample.java deleted file mode 100644 index 08ea285..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStandardScalerExample.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import org.apache.spark.ml.feature.StandardScaler; -import org.apache.spark.ml.feature.StandardScalerModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ - -public class JavaStandardScalerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaStandardScalerExample") - .getOrCreate(); - - // $example on$ - Dataset dataFrame = - spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt"); - - StandardScaler scaler = new StandardScaler() - .setInputCol("features") - .setOutputCol("scaledFeatures") - .setWithStd(true) - .setWithMean(false); - - // Compute summary statistics by fitting the StandardScaler - StandardScalerModel scalerModel = scaler.fit(dataFrame); - - // Normalize each feature to have unit standard deviation. - Dataset scaledData = scalerModel.transform(dataFrame); - scaledData.show(); - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStopWordsRemoverExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStopWordsRemoverExample.java deleted file mode 100644 index 94ead62..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStopWordsRemoverExample.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.StopWordsRemover; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaStopWordsRemoverExample { - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaStopWordsRemoverExample") - .getOrCreate(); - - // $example on$ - StopWordsRemover remover = new StopWordsRemover() - .setInputCol("raw") - .setOutputCol("filtered"); - - List data = Arrays.asList( - RowFactory.create(Arrays.asList("I", "saw", "the", "red", "balloon")), - RowFactory.create(Arrays.asList("Mary", "had", "a", "little", "lamb")) - ); - - StructType schema = new StructType(new StructField[]{ - new StructField( - "raw", DataTypes.createArrayType(DataTypes.StringType), false, Metadata.empty()) - }); - - Dataset dataset = spark.createDataFrame(data, schema); - remover.transform(dataset).show(false); - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStringIndexerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStringIndexerExample.java deleted file mode 100644 index cf9747a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaStringIndexerExample.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.StringIndexer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; - -import static org.apache.spark.sql.types.DataTypes.*; -// $example off$ - -public class JavaStringIndexerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaStringIndexerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, "a"), - RowFactory.create(1, "b"), - RowFactory.create(2, "c"), - RowFactory.create(3, "a"), - RowFactory.create(4, "a"), - RowFactory.create(5, "c") - ); - StructType schema = new StructType(new StructField[]{ - createStructField("id", IntegerType, false), - createStructField("category", StringType, false) - }); - Dataset df = spark.createDataFrame(data, schema); - - StringIndexer indexer = new StringIndexer() - .setInputCol("category") - .setOutputCol("categoryIndex"); - - Dataset indexed = indexer.fit(df).transform(df); - indexed.show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTfIdfExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTfIdfExample.java deleted file mode 100644 index b740cd0..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTfIdfExample.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.HashingTF; -import org.apache.spark.ml.feature.IDF; -import org.apache.spark.ml.feature.IDFModel; -import org.apache.spark.ml.feature.Tokenizer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off$ - -public class JavaTfIdfExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaTfIdfExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0.0, "Hi I heard about Spark"), - RowFactory.create(0.0, "I wish Java could use case classes"), - RowFactory.create(1.0, "Logistic regression models are neat") - ); - StructType schema = new StructType(new StructField[]{ - new StructField("label", DataTypes.DoubleType, false, Metadata.empty()), - new StructField("sentence", DataTypes.StringType, false, Metadata.empty()) - }); - Dataset sentenceData = spark.createDataFrame(data, schema); - - Tokenizer tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words"); - Dataset wordsData = tokenizer.transform(sentenceData); - - int numFeatures = 20; - HashingTF hashingTF = new HashingTF() - .setInputCol("words") - .setOutputCol("rawFeatures") - .setNumFeatures(numFeatures); - - Dataset featurizedData = hashingTF.transform(wordsData); - // alternatively, CountVectorizer can also be used to get term frequency vectors - - IDF idf = new IDF().setInputCol("rawFeatures").setOutputCol("features"); - IDFModel idfModel = idf.fit(featurizedData); - - Dataset rescaledData = idfModel.transform(featurizedData); - rescaledData.select("label", "features").show(); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTokenizerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTokenizerExample.java deleted file mode 100644 index a0979aa..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaTokenizerExample.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import scala.collection.mutable.WrappedArray; - -import org.apache.spark.ml.feature.RegexTokenizer; -import org.apache.spark.ml.feature.Tokenizer; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.Metadata; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; - -// col("...") is preferable to df.col("...") -import static org.apache.spark.sql.functions.callUDF; -import static org.apache.spark.sql.functions.col; -// $example off$ - -public class JavaTokenizerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaTokenizerExample") - .getOrCreate(); - - // $example on$ - List data = Arrays.asList( - RowFactory.create(0, "Hi I heard about Spark"), - RowFactory.create(1, "I wish Java could use case classes"), - RowFactory.create(2, "Logistic,regression,models,are,neat") - ); - - StructType schema = new StructType(new StructField[]{ - new StructField("id", DataTypes.IntegerType, false, Metadata.empty()), - new StructField("sentence", DataTypes.StringType, false, Metadata.empty()) - }); - - Dataset sentenceDataFrame = spark.createDataFrame(data, schema); - - Tokenizer tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words"); - - RegexTokenizer regexTokenizer = new RegexTokenizer() - .setInputCol("sentence") - .setOutputCol("words") - .setPattern("\\W"); // alternatively .setPattern("\\w+").setGaps(false); - - spark.udf().register( - "countTokens", (WrappedArray words) -> words.size(), DataTypes.IntegerType); - - Dataset tokenized = tokenizer.transform(sentenceDataFrame); - tokenized.select("sentence", "words") - .withColumn("tokens", callUDF("countTokens", col("words"))) - .show(false); - - Dataset regexTokenized = regexTokenizer.transform(sentenceDataFrame); - regexTokenized.select("sentence", "words") - .withColumn("tokens", callUDF("countTokens", col("words"))) - .show(false); - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorAssemblerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorAssemblerExample.java deleted file mode 100644 index 384e09c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorAssemblerExample.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; - -import org.apache.spark.ml.feature.VectorAssembler; -import org.apache.spark.ml.linalg.VectorUDT; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.*; -import static org.apache.spark.sql.types.DataTypes.*; -// $example off$ - -public class JavaVectorAssemblerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaVectorAssemblerExample") - .getOrCreate(); - - // $example on$ - StructType schema = createStructType(new StructField[]{ - createStructField("id", IntegerType, false), - createStructField("hour", IntegerType, false), - createStructField("mobile", DoubleType, false), - createStructField("userFeatures", new VectorUDT(), false), - createStructField("clicked", DoubleType, false) - }); - Row row = RowFactory.create(0, 18, 1.0, Vectors.dense(0.0, 10.0, 0.5), 1.0); - Dataset dataset = spark.createDataFrame(Arrays.asList(row), schema); - - VectorAssembler assembler = new VectorAssembler() - .setInputCols(new String[]{"hour", "mobile", "userFeatures"}) - .setOutputCol("features"); - - Dataset output = assembler.transform(dataset); - System.out.println("Assembled columns 'hour', 'mobile', 'userFeatures' to vector column " + - "'features'"); - output.select("features", "clicked").show(false); - // $example off$ - - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorIndexerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorIndexerExample.java deleted file mode 100644 index dd9d757..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorIndexerExample.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Map; - -import org.apache.spark.ml.feature.VectorIndexer; -import org.apache.spark.ml.feature.VectorIndexerModel; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off$ - -public class JavaVectorIndexerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaVectorIndexerExample") - .getOrCreate(); - - // $example on$ - Dataset data = spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt"); - - VectorIndexer indexer = new VectorIndexer() - .setInputCol("features") - .setOutputCol("indexed") - .setMaxCategories(10); - VectorIndexerModel indexerModel = indexer.fit(data); - - Map> categoryMaps = indexerModel.javaCategoryMaps(); - System.out.print("Chose " + categoryMaps.size() + " categorical features:"); - - for (Integer feature : categoryMaps.keySet()) { - System.out.print(" " + feature); - } - System.out.println(); - - // Create new column "indexed" with categorical values transformed to indices - Dataset indexedData = indexerModel.transform(data); - indexedData.show(); - // $example off$ - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorSlicerExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorSlicerExample.java deleted file mode 100644 index 1ae48be..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaVectorSlicerExample.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -import org.apache.spark.sql.SparkSession; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.attribute.Attribute; -import org.apache.spark.ml.attribute.AttributeGroup; -import org.apache.spark.ml.attribute.NumericAttribute; -import org.apache.spark.ml.feature.VectorSlicer; -import org.apache.spark.ml.linalg.Vectors; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.types.*; -// $example off$ - -public class JavaVectorSlicerExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaVectorSlicerExample") - .getOrCreate(); - - // $example on$ - Attribute[] attrs = { - NumericAttribute.defaultAttr().withName("f1"), - NumericAttribute.defaultAttr().withName("f2"), - NumericAttribute.defaultAttr().withName("f3") - }; - AttributeGroup group = new AttributeGroup("userFeatures", attrs); - - List data = Arrays.asList( - RowFactory.create(Vectors.sparse(3, new int[]{0, 1}, new double[]{-2.0, 2.3})), - RowFactory.create(Vectors.dense(-2.0, 2.3, 0.0)) - ); - - Dataset dataset = - spark.createDataFrame(data, (new StructType()).add(group.toStructField())); - - VectorSlicer vectorSlicer = new VectorSlicer() - .setInputCol("userFeatures").setOutputCol("features"); - - vectorSlicer.setIndices(new int[]{1}).setNames(new String[]{"f3"}); - // or slicer.setIndices(new int[]{1, 2}), or slicer.setNames(new String[]{"f2", "f3"}) - - Dataset output = vectorSlicer.transform(dataset); - output.show(false); - // $example off$ - - spark.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaWord2VecExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaWord2VecExample.java deleted file mode 100644 index fc9b459..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/ml/JavaWord2VecExample.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.ml; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.ml.feature.Word2Vec; -import org.apache.spark.ml.feature.Word2VecModel; -import org.apache.spark.ml.linalg.Vector; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.RowFactory; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.types.*; -// $example off$ - -public class JavaWord2VecExample { - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("JavaWord2VecExample") - .getOrCreate(); - - // $example on$ - // Input data: Each row is a bag of words from a sentence or document. - List data = Arrays.asList( - RowFactory.create(Arrays.asList("Hi I heard about Spark".split(" "))), - RowFactory.create(Arrays.asList("I wish Java could use case classes".split(" "))), - RowFactory.create(Arrays.asList("Logistic regression models are neat".split(" "))) - ); - StructType schema = new StructType(new StructField[]{ - new StructField("text", new ArrayType(DataTypes.StringType, true), false, Metadata.empty()) - }); - Dataset documentDF = spark.createDataFrame(data, schema); - - // Learn a mapping from words to Vectors. - Word2Vec word2Vec = new Word2Vec() - .setInputCol("text") - .setOutputCol("result") - .setVectorSize(3) - .setMinCount(0); - - Word2VecModel model = word2Vec.fit(documentDF); - Dataset result = model.transform(documentDF); - - for (Row row : result.collectAsList()) { - List text = row.getList(0); - Vector vector = (Vector) row.get(1); - System.out.println("Text: " + text + " => \nVector: " + vector + "\n"); - } - // $example off$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaALS.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaALS.java deleted file mode 100644 index 95a430f..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaALS.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.api.java.function.Function; - -import org.apache.spark.mllib.recommendation.ALS; -import org.apache.spark.mllib.recommendation.MatrixFactorizationModel; -import org.apache.spark.mllib.recommendation.Rating; - -import java.util.Arrays; -import java.util.regex.Pattern; - -import scala.Tuple2; - -/** - * Example using MLlib ALS from Java. - */ -public final class JavaALS { - - static class ParseRating implements Function { - private static final Pattern COMMA = Pattern.compile(","); - - @Override - public Rating call(String line) { - String[] tok = COMMA.split(line); - int x = Integer.parseInt(tok[0]); - int y = Integer.parseInt(tok[1]); - double rating = Double.parseDouble(tok[2]); - return new Rating(x, y, rating); - } - } - - static class FeaturesToString implements Function, String> { - @Override - public String call(Tuple2 element) { - return element._1() + "," + Arrays.toString(element._2()); - } - } - - public static void main(String[] args) { - - if (args.length < 4) { - System.err.println( - "Usage: JavaALS []"); - System.exit(1); - } - SparkConf sparkConf = new SparkConf().setAppName("JavaALS"); - int rank = Integer.parseInt(args[1]); - int iterations = Integer.parseInt(args[2]); - String outputDir = args[3]; - int blocks = -1; - if (args.length == 5) { - blocks = Integer.parseInt(args[4]); - } - - JavaSparkContext sc = new JavaSparkContext(sparkConf); - JavaRDD lines = sc.textFile(args[0]); - - JavaRDD ratings = lines.map(new ParseRating()); - - MatrixFactorizationModel model = ALS.train(ratings.rdd(), rank, iterations, 0.01, blocks); - - model.userFeatures().toJavaRDD().map(new FeaturesToString()).saveAsTextFile( - outputDir + "/userFeatures"); - model.productFeatures().toJavaRDD().map(new FeaturesToString()).saveAsTextFile( - outputDir + "/productFeatures"); - System.out.println("Final user/product features written to " + outputDir); - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaAssociationRulesExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaAssociationRulesExample.java deleted file mode 100644 index 5f43603..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaAssociationRulesExample.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.fpm.AssociationRules; -import org.apache.spark.mllib.fpm.FPGrowth; -import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset; -// $example off$ - -import org.apache.spark.SparkConf; - -public class JavaAssociationRulesExample { - - public static void main(String[] args) { - - SparkConf sparkConf = new SparkConf().setAppName("JavaAssociationRulesExample"); - JavaSparkContext sc = new JavaSparkContext(sparkConf); - - // $example on$ - JavaRDD> freqItemsets = sc.parallelize(Arrays.asList( - new FreqItemset<>(new String[] {"a"}, 15L), - new FreqItemset<>(new String[] {"b"}, 35L), - new FreqItemset<>(new String[] {"a", "b"}, 12L) - )); - - AssociationRules arules = new AssociationRules() - .setMinConfidence(0.8); - JavaRDD> results = arules.run(freqItemsets); - - for (AssociationRules.Rule rule : results.collect()) { - System.out.println( - rule.javaAntecedent() + " => " + rule.javaConsequent() + ", " + rule.confidence()); - } - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBinaryClassificationMetricsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBinaryClassificationMetricsExample.java deleted file mode 100644 index b9d0313..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBinaryClassificationMetricsExample.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.classification.LogisticRegressionModel; -import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS; -import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; - -public class JavaBinaryClassificationMetricsExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("Java Binary Classification Metrics Example"); - SparkContext sc = new SparkContext(conf); - // $example on$ - String path = "data/mllib/sample_binary_classification_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(sc, path).toJavaRDD(); - - // Split initial RDD into two... [60% training data, 40% testing data]. - JavaRDD[] splits = - data.randomSplit(new double[]{0.6, 0.4}, 11L); - JavaRDD training = splits[0].cache(); - JavaRDD test = splits[1]; - - // Run training algorithm to build the model. - LogisticRegressionModel model = new LogisticRegressionWithLBFGS() - .setNumClasses(2) - .run(training.rdd()); - - // Clear the prediction threshold so the model will return probabilities - model.clearThreshold(); - - // Compute raw scores on the test set. - JavaPairRDD predictionAndLabels = test.mapToPair(p -> - new Tuple2<>(model.predict(p.features()), p.label())); - - // Get evaluation metrics. - BinaryClassificationMetrics metrics = - new BinaryClassificationMetrics(predictionAndLabels.rdd()); - - // Precision by threshold - JavaRDD> precision = metrics.precisionByThreshold().toJavaRDD(); - System.out.println("Precision by threshold: " + precision.collect()); - - // Recall by threshold - JavaRDD recall = metrics.recallByThreshold().toJavaRDD(); - System.out.println("Recall by threshold: " + recall.collect()); - - // F Score by threshold - JavaRDD f1Score = metrics.fMeasureByThreshold().toJavaRDD(); - System.out.println("F1 Score by threshold: " + f1Score.collect()); - - JavaRDD f2Score = metrics.fMeasureByThreshold(2.0).toJavaRDD(); - System.out.println("F2 Score by threshold: " + f2Score.collect()); - - // Precision-recall curve - JavaRDD prc = metrics.pr().toJavaRDD(); - System.out.println("Precision-recall curve: " + prc.collect()); - - // Thresholds - JavaRDD thresholds = precision.map(t -> Double.parseDouble(t._1().toString())); - - // ROC Curve - JavaRDD roc = metrics.roc().toJavaRDD(); - System.out.println("ROC curve: " + roc.collect()); - - // AUPRC - System.out.println("Area under precision-recall curve = " + metrics.areaUnderPR()); - - // AUROC - System.out.println("Area under ROC = " + metrics.areaUnderROC()); - - // Save and load model - model.save(sc, "target/tmp/LogisticRegressionModel"); - LogisticRegressionModel.load(sc, "target/tmp/LogisticRegressionModel"); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBisectingKMeansExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBisectingKMeansExample.java deleted file mode 100644 index f878b55..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaBisectingKMeansExample.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -import java.util.List; -// $example off$ -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.clustering.BisectingKMeans; -import org.apache.spark.mllib.clustering.BisectingKMeansModel; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -// $example off$ - -/** - * Java example for bisecting k-means clustering. - */ -public class JavaBisectingKMeansExample { - public static void main(String[] args) { - SparkConf sparkConf = new SparkConf().setAppName("JavaBisectingKMeansExample"); - JavaSparkContext sc = new JavaSparkContext(sparkConf); - - // $example on$ - List localData = Arrays.asList( - Vectors.dense(0.1, 0.1), Vectors.dense(0.3, 0.3), - Vectors.dense(10.1, 10.1), Vectors.dense(10.3, 10.3), - Vectors.dense(20.1, 20.1), Vectors.dense(20.3, 20.3), - Vectors.dense(30.1, 30.1), Vectors.dense(30.3, 30.3) - ); - JavaRDD data = sc.parallelize(localData, 2); - - BisectingKMeans bkm = new BisectingKMeans() - .setK(4); - BisectingKMeansModel model = bkm.run(data); - - System.out.println("Compute Cost: " + model.computeCost(data)); - - Vector[] clusterCenters = model.clusterCenters(); - for (int i = 0; i < clusterCenters.length; i++) { - Vector clusterCenter = clusterCenters[i]; - System.out.println("Cluster Center " + i + ": " + clusterCenter); - } - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaChiSqSelectorExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaChiSqSelectorExample.java deleted file mode 100644 index ce354af..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaChiSqSelectorExample.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.feature.ChiSqSelector; -import org.apache.spark.mllib.feature.ChiSqSelectorModel; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -public class JavaChiSqSelectorExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaChiSqSelectorExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - JavaRDD points = MLUtils.loadLibSVMFile(jsc.sc(), - "data/mllib/sample_libsvm_data.txt").toJavaRDD().cache(); - - // Discretize data in 16 equal bins since ChiSqSelector requires categorical features - // Although features are doubles, the ChiSqSelector treats each unique value as a category - JavaRDD discretizedData = points.map(lp -> { - double[] discretizedFeatures = new double[lp.features().size()]; - for (int i = 0; i < lp.features().size(); ++i) { - discretizedFeatures[i] = Math.floor(lp.features().apply(i) / 16); - } - return new LabeledPoint(lp.label(), Vectors.dense(discretizedFeatures)); - }); - - // Create ChiSqSelector that will select top 50 of 692 features - ChiSqSelector selector = new ChiSqSelector(50); - // Create ChiSqSelector model (selecting features) - ChiSqSelectorModel transformer = selector.fit(discretizedData.rdd()); - // Filter the top 50 features from each feature vector - JavaRDD filteredData = discretizedData.map(lp -> - new LabeledPoint(lp.label(), transformer.transform(lp.features()))); - // $example off$ - - System.out.println("filtered data: "); - filteredData.foreach(System.out::println); - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaCorrelationsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaCorrelationsExample.java deleted file mode 100644 index c0fa0b3..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaCorrelationsExample.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import java.util.Arrays; - -import org.apache.spark.api.java.JavaDoubleRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.linalg.Matrix; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.stat.Statistics; -// $example off$ - -public class JavaCorrelationsExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaCorrelationsExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - JavaDoubleRDD seriesX = jsc.parallelizeDoubles( - Arrays.asList(1.0, 2.0, 3.0, 3.0, 5.0)); // a series - - // must have the same number of partitions and cardinality as seriesX - JavaDoubleRDD seriesY = jsc.parallelizeDoubles( - Arrays.asList(11.0, 22.0, 33.0, 33.0, 555.0)); - - // compute the correlation using Pearson's method. Enter "spearman" for Spearman's method. - // If a method is not specified, Pearson's method will be used by default. - Double correlation = Statistics.corr(seriesX.srdd(), seriesY.srdd(), "pearson"); - System.out.println("Correlation is: " + correlation); - - // note that each Vector is a row and not a column - JavaRDD data = jsc.parallelize( - Arrays.asList( - Vectors.dense(1.0, 10.0, 100.0), - Vectors.dense(2.0, 20.0, 200.0), - Vectors.dense(5.0, 33.0, 366.0) - ) - ); - - // calculate the correlation matrix using Pearson's method. - // Use "spearman" for Spearman's method. - // If a method is not specified, Pearson's method will be used by default. - Matrix correlMatrix = Statistics.corr(data.rdd(), "pearson"); - System.out.println(correlMatrix.toString()); - // $example off$ - - jsc.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeClassificationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeClassificationExample.java deleted file mode 100644 index 032c168..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeClassificationExample.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.HashMap; -import java.util.Map; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.tree.DecisionTree; -import org.apache.spark.mllib.tree.model.DecisionTreeModel; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -class JavaDecisionTreeClassificationExample { - - public static void main(String[] args) { - - // $example on$ - SparkConf sparkConf = new SparkConf().setAppName("JavaDecisionTreeClassificationExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - - // Load and parse the data file. - String datapath = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(jsc.sc(), datapath).toJavaRDD(); - // Split the data into training and test sets (30% held out for testing) - JavaRDD[] splits = data.randomSplit(new double[]{0.7, 0.3}); - JavaRDD trainingData = splits[0]; - JavaRDD testData = splits[1]; - - // Set parameters. - // Empty categoricalFeaturesInfo indicates all features are continuous. - int numClasses = 2; - Map categoricalFeaturesInfo = new HashMap<>(); - String impurity = "gini"; - int maxDepth = 5; - int maxBins = 32; - - // Train a DecisionTree model for classification. - DecisionTreeModel model = DecisionTree.trainClassifier(trainingData, numClasses, - categoricalFeaturesInfo, impurity, maxDepth, maxBins); - - // Evaluate model on test instances and compute test error - JavaPairRDD predictionAndLabel = - testData.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double testErr = - predictionAndLabel.filter(pl -> !pl._1().equals(pl._2())).count() / (double) testData.count(); - - System.out.println("Test Error: " + testErr); - System.out.println("Learned classification tree model:\n" + model.toDebugString()); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myDecisionTreeClassificationModel"); - DecisionTreeModel sameModel = DecisionTreeModel - .load(jsc.sc(), "target/tmp/myDecisionTreeClassificationModel"); - // $example off$ - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeRegressionExample.java deleted file mode 100644 index f222c38..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaDecisionTreeRegressionExample.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.HashMap; -import java.util.Map; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.tree.DecisionTree; -import org.apache.spark.mllib.tree.model.DecisionTreeModel; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -class JavaDecisionTreeRegressionExample { - - public static void main(String[] args) { - - // $example on$ - SparkConf sparkConf = new SparkConf().setAppName("JavaDecisionTreeRegressionExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - - // Load and parse the data file. - String datapath = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(jsc.sc(), datapath).toJavaRDD(); - // Split the data into training and test sets (30% held out for testing) - JavaRDD[] splits = data.randomSplit(new double[]{0.7, 0.3}); - JavaRDD trainingData = splits[0]; - JavaRDD testData = splits[1]; - - // Set parameters. - // Empty categoricalFeaturesInfo indicates all features are continuous. - Map categoricalFeaturesInfo = new HashMap<>(); - String impurity = "variance"; - int maxDepth = 5; - int maxBins = 32; - - // Train a DecisionTree model. - DecisionTreeModel model = DecisionTree.trainRegressor(trainingData, - categoricalFeaturesInfo, impurity, maxDepth, maxBins); - - // Evaluate model on test instances and compute test error - JavaPairRDD predictionAndLabel = - testData.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double testMSE = predictionAndLabel.mapToDouble(pl -> { - double diff = pl._1() - pl._2(); - return diff * diff; - }).mean(); - System.out.println("Test Mean Squared Error: " + testMSE); - System.out.println("Learned regression tree model:\n" + model.toDebugString()); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myDecisionTreeRegressionModel"); - DecisionTreeModel sameModel = DecisionTreeModel - .load(jsc.sc(), "target/tmp/myDecisionTreeRegressionModel"); - // $example off$ - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaElementwiseProductExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaElementwiseProductExample.java deleted file mode 100644 index 2d45c61..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaElementwiseProductExample.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -// $example off$ - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.feature.ElementwiseProduct; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -// $example off$ - -public class JavaElementwiseProductExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaElementwiseProductExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - // Create some vector data; also works for sparse vectors - JavaRDD data = jsc.parallelize(Arrays.asList( - Vectors.dense(1.0, 2.0, 3.0), Vectors.dense(4.0, 5.0, 6.0))); - Vector transformingVector = Vectors.dense(0.0, 1.0, 2.0); - ElementwiseProduct transformer = new ElementwiseProduct(transformingVector); - - // Batch transform and per-row transform give the same results: - JavaRDD transformedData = transformer.transform(data); - JavaRDD transformedData2 = data.map(transformer::transform); - // $example off$ - - System.out.println("transformedData: "); - transformedData.foreach(System.out::println); - - System.out.println("transformedData2: "); - transformedData2.foreach(System.out::println); - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGaussianMixtureExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGaussianMixtureExample.java deleted file mode 100644 index 5792e5a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGaussianMixtureExample.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; - -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.clustering.GaussianMixture; -import org.apache.spark.mllib.clustering.GaussianMixtureModel; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -// $example off$ - -public class JavaGaussianMixtureExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaGaussianMixtureExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - // Load and parse data - String path = "data/mllib/gmm_data.txt"; - JavaRDD data = jsc.textFile(path); - JavaRDD parsedData = data.map(s -> { - String[] sarray = s.trim().split(" "); - double[] values = new double[sarray.length]; - for (int i = 0; i < sarray.length; i++) { - values[i] = Double.parseDouble(sarray[i]); - } - return Vectors.dense(values); - }); - parsedData.cache(); - - // Cluster the data into two classes using GaussianMixture - GaussianMixtureModel gmm = new GaussianMixture().setK(2).run(parsedData.rdd()); - - // Save and load GaussianMixtureModel - gmm.save(jsc.sc(), "target/org/apache/spark/JavaGaussianMixtureExample/GaussianMixtureModel"); - GaussianMixtureModel sameModel = GaussianMixtureModel.load(jsc.sc(), - "target/org.apache.spark.JavaGaussianMixtureExample/GaussianMixtureModel"); - - // Output the parameters of the mixture model - for (int j = 0; j < gmm.k(); j++) { - System.out.printf("weight=%f\nmu=%s\nsigma=\n%s\n", - gmm.weights()[j], gmm.gaussians()[j].mu(), gmm.gaussians()[j].sigma()); - } - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingClassificationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingClassificationExample.java deleted file mode 100644 index 521ee96..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingClassificationExample.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.HashMap; -import java.util.Map; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.tree.GradientBoostedTrees; -import org.apache.spark.mllib.tree.configuration.BoostingStrategy; -import org.apache.spark.mllib.tree.model.GradientBoostedTreesModel; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -public class JavaGradientBoostingClassificationExample { - public static void main(String[] args) { - // $example on$ - SparkConf sparkConf = new SparkConf() - .setAppName("JavaGradientBoostedTreesClassificationExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - - // Load and parse the data file. - String datapath = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(jsc.sc(), datapath).toJavaRDD(); - // Split the data into training and test sets (30% held out for testing) - JavaRDD[] splits = data.randomSplit(new double[]{0.7, 0.3}); - JavaRDD trainingData = splits[0]; - JavaRDD testData = splits[1]; - - // Train a GradientBoostedTrees model. - // The defaultParams for Classification use LogLoss by default. - BoostingStrategy boostingStrategy = BoostingStrategy.defaultParams("Classification"); - boostingStrategy.setNumIterations(3); // Note: Use more iterations in practice. - boostingStrategy.getTreeStrategy().setNumClasses(2); - boostingStrategy.getTreeStrategy().setMaxDepth(5); - // Empty categoricalFeaturesInfo indicates all features are continuous. - Map categoricalFeaturesInfo = new HashMap<>(); - boostingStrategy.treeStrategy().setCategoricalFeaturesInfo(categoricalFeaturesInfo); - - GradientBoostedTreesModel model = GradientBoostedTrees.train(trainingData, boostingStrategy); - - // Evaluate model on test instances and compute test error - JavaPairRDD predictionAndLabel = - testData.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double testErr = - predictionAndLabel.filter(pl -> !pl._1().equals(pl._2())).count() / (double) testData.count(); - System.out.println("Test Error: " + testErr); - System.out.println("Learned classification GBT model:\n" + model.toDebugString()); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myGradientBoostingClassificationModel"); - GradientBoostedTreesModel sameModel = GradientBoostedTreesModel.load(jsc.sc(), - "target/tmp/myGradientBoostingClassificationModel"); - // $example off$ - - jsc.stop(); - } - -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingRegressionExample.java deleted file mode 100644 index b345d19..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaGradientBoostingRegressionExample.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.HashMap; -import java.util.Map; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.tree.GradientBoostedTrees; -import org.apache.spark.mllib.tree.configuration.BoostingStrategy; -import org.apache.spark.mllib.tree.model.GradientBoostedTreesModel; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -public class JavaGradientBoostingRegressionExample { - public static void main(String[] args) { - // $example on$ - SparkConf sparkConf = new SparkConf() - .setAppName("JavaGradientBoostedTreesRegressionExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - // Load and parse the data file. - String datapath = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(jsc.sc(), datapath).toJavaRDD(); - // Split the data into training and test sets (30% held out for testing) - JavaRDD[] splits = data.randomSplit(new double[]{0.7, 0.3}); - JavaRDD trainingData = splits[0]; - JavaRDD testData = splits[1]; - - // Train a GradientBoostedTrees model. - // The defaultParams for Regression use SquaredError by default. - BoostingStrategy boostingStrategy = BoostingStrategy.defaultParams("Regression"); - boostingStrategy.setNumIterations(3); // Note: Use more iterations in practice. - boostingStrategy.getTreeStrategy().setMaxDepth(5); - // Empty categoricalFeaturesInfo indicates all features are continuous. - Map categoricalFeaturesInfo = new HashMap<>(); - boostingStrategy.treeStrategy().setCategoricalFeaturesInfo(categoricalFeaturesInfo); - - GradientBoostedTreesModel model = GradientBoostedTrees.train(trainingData, boostingStrategy); - - // Evaluate model on test instances and compute test error - JavaPairRDD predictionAndLabel = - testData.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double testMSE = predictionAndLabel.mapToDouble(pl -> { - double diff = pl._1() - pl._2(); - return diff * diff; - }).mean(); - System.out.println("Test Mean Squared Error: " + testMSE); - System.out.println("Learned regression GBT model:\n" + model.toDebugString()); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myGradientBoostingRegressionModel"); - GradientBoostedTreesModel sameModel = GradientBoostedTreesModel.load(jsc.sc(), - "target/tmp/myGradientBoostingRegressionModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingExample.java deleted file mode 100644 index b48b95f..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingExample.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; - -// $example on$ -import java.util.Arrays; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.linalg.Matrices; -import org.apache.spark.mllib.linalg.Matrix; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.stat.Statistics; -import org.apache.spark.mllib.stat.test.ChiSqTestResult; -// $example off$ - -public class JavaHypothesisTestingExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaHypothesisTestingExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - // a vector composed of the frequencies of events - Vector vec = Vectors.dense(0.1, 0.15, 0.2, 0.3, 0.25); - - // compute the goodness of fit. If a second vector to test against is not supplied - // as a parameter, the test runs against a uniform distribution. - ChiSqTestResult goodnessOfFitTestResult = Statistics.chiSqTest(vec); - // summary of the test including the p-value, degrees of freedom, test statistic, - // the method used, and the null hypothesis. - System.out.println(goodnessOfFitTestResult + "\n"); - - // Create a contingency matrix ((1.0, 2.0), (3.0, 4.0), (5.0, 6.0)) - Matrix mat = Matrices.dense(3, 2, new double[]{1.0, 3.0, 5.0, 2.0, 4.0, 6.0}); - - // conduct Pearson's independence test on the input contingency matrix - ChiSqTestResult independenceTestResult = Statistics.chiSqTest(mat); - // summary of the test including the p-value, degrees of freedom... - System.out.println(independenceTestResult + "\n"); - - // an RDD of labeled points - JavaRDD obs = jsc.parallelize( - Arrays.asList( - new LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0)), - new LabeledPoint(1.0, Vectors.dense(1.0, 2.0, 0.0)), - new LabeledPoint(-1.0, Vectors.dense(-1.0, 0.0, -0.5)) - ) - ); - - // The contingency table is constructed from the raw (feature, label) pairs and used to conduct - // the independence test. Returns an array containing the ChiSquaredTestResult for every feature - // against the label. - ChiSqTestResult[] featureTestResults = Statistics.chiSqTest(obs.rdd()); - int i = 1; - for (ChiSqTestResult result : featureTestResults) { - System.out.println("Column " + i + ":"); - System.out.println(result + "\n"); // summary of the test - i++; - } - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingKolmogorovSmirnovTestExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingKolmogorovSmirnovTestExample.java deleted file mode 100644 index fe611c9..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaHypothesisTestingKolmogorovSmirnovTestExample.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import java.util.Arrays; - -import org.apache.spark.api.java.JavaDoubleRDD; -import org.apache.spark.mllib.stat.Statistics; -import org.apache.spark.mllib.stat.test.KolmogorovSmirnovTestResult; -// $example off$ - -public class JavaHypothesisTestingKolmogorovSmirnovTestExample { - public static void main(String[] args) { - - SparkConf conf = - new SparkConf().setAppName("JavaHypothesisTestingKolmogorovSmirnovTestExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - JavaDoubleRDD data = jsc.parallelizeDoubles(Arrays.asList(0.1, 0.15, 0.2, 0.3, 0.25)); - KolmogorovSmirnovTestResult testResult = - Statistics.kolmogorovSmirnovTest(data, "norm", 0.0, 1.0); - // summary of the test including the p-value, test statistic, and null hypothesis - // if our p-value indicates significance, we can reject the null hypothesis - System.out.println(testResult); - // $example off$ - - jsc.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaIsotonicRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaIsotonicRegressionExample.java deleted file mode 100644 index adebafe..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaIsotonicRegressionExample.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.mllib; - -// $example on$ - -import scala.Tuple2; -import scala.Tuple3; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.regression.IsotonicRegression; -import org.apache.spark.mllib.regression.IsotonicRegressionModel; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ -import org.apache.spark.SparkConf; - -public class JavaIsotonicRegressionExample { - public static void main(String[] args) { - SparkConf sparkConf = new SparkConf().setAppName("JavaIsotonicRegressionExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - // $example on$ - JavaRDD data = MLUtils.loadLibSVMFile( - jsc.sc(), "data/mllib/sample_isotonic_regression_libsvm_data.txt").toJavaRDD(); - - // Create label, feature, weight tuples from input data with weight set to default value 1.0. - JavaRDD> parsedData = data.map(point -> - new Tuple3<>(point.label(), point.features().apply(0), 1.0)); - - // Split data into training (60%) and test (40%) sets. - JavaRDD>[] splits = - parsedData.randomSplit(new double[]{0.6, 0.4}, 11L); - JavaRDD> training = splits[0]; - JavaRDD> test = splits[1]; - - // Create isotonic regression model from training data. - // Isotonic parameter defaults to true so it is only shown for demonstration - IsotonicRegressionModel model = new IsotonicRegression().setIsotonic(true).run(training); - - // Create tuples of predicted and real labels. - JavaPairRDD predictionAndLabel = test.mapToPair(point -> - new Tuple2<>(model.predict(point._2()), point._1())); - - // Calculate mean squared error between predicted and real labels. - double meanSquaredError = predictionAndLabel.mapToDouble(pl -> { - double diff = pl._1() - pl._2(); - return diff * diff; - }).mean(); - System.out.println("Mean Squared Error = " + meanSquaredError); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myIsotonicRegressionModel"); - IsotonicRegressionModel sameModel = - IsotonicRegressionModel.load(jsc.sc(), "target/tmp/myIsotonicRegressionModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKMeansExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKMeansExample.java deleted file mode 100644 index f172756..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKMeansExample.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; - -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.clustering.KMeans; -import org.apache.spark.mllib.clustering.KMeansModel; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -// $example off$ - -public class JavaKMeansExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaKMeansExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - // Load and parse data - String path = "data/mllib/kmeans_data.txt"; - JavaRDD data = jsc.textFile(path); - JavaRDD parsedData = data.map(s -> { - String[] sarray = s.split(" "); - double[] values = new double[sarray.length]; - for (int i = 0; i < sarray.length; i++) { - values[i] = Double.parseDouble(sarray[i]); - } - return Vectors.dense(values); - }); - parsedData.cache(); - - // Cluster the data into two classes using KMeans - int numClusters = 2; - int numIterations = 20; - KMeansModel clusters = KMeans.train(parsedData.rdd(), numClusters, numIterations); - - System.out.println("Cluster centers:"); - for (Vector center: clusters.clusterCenters()) { - System.out.println(" " + center); - } - double cost = clusters.computeCost(parsedData.rdd()); - System.out.println("Cost: " + cost); - - // Evaluate clustering by computing Within Set Sum of Squared Errors - double WSSSE = clusters.computeCost(parsedData.rdd()); - System.out.println("Within Set Sum of Squared Errors = " + WSSSE); - - // Save and load model - clusters.save(jsc.sc(), "target/org/apache/spark/JavaKMeansExample/KMeansModel"); - KMeansModel sameModel = KMeansModel.load(jsc.sc(), - "target/org/apache/spark/JavaKMeansExample/KMeansModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKernelDensityEstimationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKernelDensityEstimationExample.java deleted file mode 100644 index 41de0d9..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaKernelDensityEstimationExample.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import java.util.Arrays; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.stat.KernelDensity; -// $example off$ - -public class JavaKernelDensityEstimationExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaKernelDensityEstimationExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - // an RDD of sample data - JavaRDD data = jsc.parallelize( - Arrays.asList(1.0, 1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 5.0, 6.0, 7.0, 8.0, 9.0, 9.0)); - - // Construct the density estimator with the sample data - // and a standard deviation for the Gaussian kernels - KernelDensity kd = new KernelDensity().setSample(data).setBandwidth(3.0); - - // Find density estimates for the given values - double[] densities = kd.estimate(new double[]{-1.0, 2.0, 5.0}); - - System.out.println(Arrays.toString(densities)); - // $example off$ - - jsc.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLBFGSExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLBFGSExample.java deleted file mode 100644 index 3fdc03a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLBFGSExample.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; - -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.classification.LogisticRegressionModel; -import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.optimization.*; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; -// $example off$ - -public class JavaLBFGSExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("L-BFGS Example"); - SparkContext sc = new SparkContext(conf); - - // $example on$ - String path = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(sc, path).toJavaRDD(); - int numFeatures = data.take(1).get(0).features().size(); - - // Split initial RDD into two... [60% training data, 40% testing data]. - JavaRDD trainingInit = data.sample(false, 0.6, 11L); - JavaRDD test = data.subtract(trainingInit); - - // Append 1 into the training data as intercept. - JavaPairRDD training = data.mapToPair(p -> - new Tuple2<>(p.label(), MLUtils.appendBias(p.features()))); - training.cache(); - - // Run training algorithm to build the model. - int numCorrections = 10; - double convergenceTol = 1e-4; - int maxNumIterations = 20; - double regParam = 0.1; - Vector initialWeightsWithIntercept = Vectors.dense(new double[numFeatures + 1]); - - Tuple2 result = LBFGS.runLBFGS( - training.rdd(), - new LogisticGradient(), - new SquaredL2Updater(), - numCorrections, - convergenceTol, - maxNumIterations, - regParam, - initialWeightsWithIntercept); - Vector weightsWithIntercept = result._1(); - double[] loss = result._2(); - - LogisticRegressionModel model = new LogisticRegressionModel( - Vectors.dense(Arrays.copyOf(weightsWithIntercept.toArray(), weightsWithIntercept.size() - 1)), - (weightsWithIntercept.toArray())[weightsWithIntercept.size() - 1]); - - // Clear the default threshold. - model.clearThreshold(); - - // Compute raw scores on the test set. - JavaPairRDD scoreAndLabels = test.mapToPair(p -> - new Tuple2<>(model.predict(p.features()), p.label())); - - // Get evaluation metrics. - BinaryClassificationMetrics metrics = - new BinaryClassificationMetrics(scoreAndLabels.rdd()); - double auROC = metrics.areaUnderROC(); - - System.out.println("Loss of each step in training process"); - for (double l : loss) { - System.out.println(l); - } - System.out.println("Area under ROC = " + auROC); - // $example off$ - - sc.stop(); - } -} - diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLatentDirichletAllocationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLatentDirichletAllocationExample.java deleted file mode 100644 index 887edf8..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLatentDirichletAllocationExample.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.clustering.DistributedLDAModel; -import org.apache.spark.mllib.clustering.LDA; -import org.apache.spark.mllib.clustering.LDAModel; -import org.apache.spark.mllib.linalg.Matrix; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -// $example off$ - -public class JavaLatentDirichletAllocationExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaKLatentDirichletAllocationExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - // Load and parse the data - String path = "data/mllib/sample_lda_data.txt"; - JavaRDD data = jsc.textFile(path); - JavaRDD parsedData = data.map(s -> { - String[] sarray = s.trim().split(" "); - double[] values = new double[sarray.length]; - for (int i = 0; i < sarray.length; i++) { - values[i] = Double.parseDouble(sarray[i]); - } - return Vectors.dense(values); - }); - // Index documents with unique IDs - JavaPairRDD corpus = - JavaPairRDD.fromJavaRDD(parsedData.zipWithIndex().map(Tuple2::swap)); - corpus.cache(); - - // Cluster the documents into three topics using LDA - LDAModel ldaModel = new LDA().setK(3).run(corpus); - - // Output topics. Each is a distribution over words (matching word count vectors) - System.out.println("Learned topics (as distributions over vocab of " + ldaModel.vocabSize() - + " words):"); - Matrix topics = ldaModel.topicsMatrix(); - for (int topic = 0; topic < 3; topic++) { - System.out.print("Topic " + topic + ":"); - for (int word = 0; word < ldaModel.vocabSize(); word++) { - System.out.print(" " + topics.apply(word, topic)); - } - System.out.println(); - } - - ldaModel.save(jsc.sc(), - "target/org/apache/spark/JavaLatentDirichletAllocationExample/LDAModel"); - DistributedLDAModel sameModel = DistributedLDAModel.load(jsc.sc(), - "target/org/apache/spark/JavaLatentDirichletAllocationExample/LDAModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLinearRegressionWithSGDExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLinearRegressionWithSGDExample.java deleted file mode 100644 index 324a781..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLinearRegressionWithSGDExample.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.regression.LinearRegressionModel; -import org.apache.spark.mllib.regression.LinearRegressionWithSGD; -// $example off$ - -/** - * Example for LinearRegressionWithSGD. - */ -public class JavaLinearRegressionWithSGDExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("JavaLinearRegressionWithSGDExample"); - JavaSparkContext sc = new JavaSparkContext(conf); - - // $example on$ - // Load and parse the data - String path = "data/mllib/ridge-data/lpsa.data"; - JavaRDD data = sc.textFile(path); - JavaRDD parsedData = data.map(line -> { - String[] parts = line.split(","); - String[] features = parts[1].split(" "); - double[] v = new double[features.length]; - for (int i = 0; i < features.length - 1; i++) { - v[i] = Double.parseDouble(features[i]); - } - return new LabeledPoint(Double.parseDouble(parts[0]), Vectors.dense(v)); - }); - parsedData.cache(); - - // Building the model - int numIterations = 100; - double stepSize = 0.00000001; - LinearRegressionModel model = - LinearRegressionWithSGD.train(JavaRDD.toRDD(parsedData), numIterations, stepSize); - - // Evaluate model on training examples and compute training error - JavaPairRDD valuesAndPreds = parsedData.mapToPair(point -> - new Tuple2<>(model.predict(point.features()), point.label())); - - double MSE = valuesAndPreds.mapToDouble(pair -> { - double diff = pair._1() - pair._2(); - return diff * diff; - }).mean(); - System.out.println("training Mean Squared Error = " + MSE); - - // Save and load model - model.save(sc.sc(), "target/tmp/javaLinearRegressionWithSGDModel"); - LinearRegressionModel sameModel = LinearRegressionModel.load(sc.sc(), - "target/tmp/javaLinearRegressionWithSGDModel"); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLogisticRegressionWithLBFGSExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLogisticRegressionWithLBFGSExample.java deleted file mode 100644 index 26b8a6e..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaLogisticRegressionWithLBFGSExample.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.classification.LogisticRegressionModel; -import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS; -import org.apache.spark.mllib.evaluation.MulticlassMetrics; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -/** - * Example for LogisticRegressionWithLBFGS. - */ -public class JavaLogisticRegressionWithLBFGSExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("JavaLogisticRegressionWithLBFGSExample"); - SparkContext sc = new SparkContext(conf); - // $example on$ - String path = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(sc, path).toJavaRDD(); - - // Split initial RDD into two... [60% training data, 40% testing data]. - JavaRDD[] splits = data.randomSplit(new double[] {0.6, 0.4}, 11L); - JavaRDD training = splits[0].cache(); - JavaRDD test = splits[1]; - - // Run training algorithm to build the model. - LogisticRegressionModel model = new LogisticRegressionWithLBFGS() - .setNumClasses(10) - .run(training.rdd()); - - // Compute raw scores on the test set. - JavaPairRDD predictionAndLabels = test.mapToPair(p -> - new Tuple2<>(model.predict(p.features()), p.label())); - - // Get evaluation metrics. - MulticlassMetrics metrics = new MulticlassMetrics(predictionAndLabels.rdd()); - double accuracy = metrics.accuracy(); - System.out.println("Accuracy = " + accuracy); - - // Save and load model - model.save(sc, "target/tmp/javaLogisticRegressionWithLBFGSModel"); - LogisticRegressionModel sameModel = LogisticRegressionModel.load(sc, - "target/tmp/javaLogisticRegressionWithLBFGSModel"); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMultiLabelClassificationMetricsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMultiLabelClassificationMetricsExample.java deleted file mode 100644 index bc99dc0..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMultiLabelClassificationMetricsExample.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.evaluation.MultilabelMetrics; -import org.apache.spark.SparkConf; -// $example off$ - -public class JavaMultiLabelClassificationMetricsExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("Multilabel Classification Metrics Example"); - JavaSparkContext sc = new JavaSparkContext(conf); - // $example on$ - List> data = Arrays.asList( - new Tuple2<>(new double[]{0.0, 1.0}, new double[]{0.0, 2.0}), - new Tuple2<>(new double[]{0.0, 2.0}, new double[]{0.0, 1.0}), - new Tuple2<>(new double[]{}, new double[]{0.0}), - new Tuple2<>(new double[]{2.0}, new double[]{2.0}), - new Tuple2<>(new double[]{2.0, 0.0}, new double[]{2.0, 0.0}), - new Tuple2<>(new double[]{0.0, 1.0, 2.0}, new double[]{0.0, 1.0}), - new Tuple2<>(new double[]{1.0}, new double[]{1.0, 2.0}) - ); - JavaRDD> scoreAndLabels = sc.parallelize(data); - - // Instantiate metrics object - MultilabelMetrics metrics = new MultilabelMetrics(scoreAndLabels.rdd()); - - // Summary stats - System.out.format("Recall = %f\n", metrics.recall()); - System.out.format("Precision = %f\n", metrics.precision()); - System.out.format("F1 measure = %f\n", metrics.f1Measure()); - System.out.format("Accuracy = %f\n", metrics.accuracy()); - - // Stats by labels - for (int i = 0; i < metrics.labels().length - 1; i++) { - System.out.format("Class %1.1f precision = %f\n", metrics.labels()[i], metrics.precision( - metrics.labels()[i])); - System.out.format("Class %1.1f recall = %f\n", metrics.labels()[i], metrics.recall( - metrics.labels()[i])); - System.out.format("Class %1.1f F1 score = %f\n", metrics.labels()[i], metrics.f1Measure( - metrics.labels()[i])); - } - - // Micro stats - System.out.format("Micro recall = %f\n", metrics.microRecall()); - System.out.format("Micro precision = %f\n", metrics.microPrecision()); - System.out.format("Micro F1 measure = %f\n", metrics.microF1Measure()); - - // Hamming loss - System.out.format("Hamming loss = %f\n", metrics.hammingLoss()); - - // Subset accuracy - System.out.format("Subset accuracy = %f\n", metrics.subsetAccuracy()); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMulticlassClassificationMetricsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMulticlassClassificationMetricsExample.java deleted file mode 100644 index 0367038..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaMulticlassClassificationMetricsExample.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.classification.LogisticRegressionModel; -import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS; -import org.apache.spark.mllib.evaluation.MulticlassMetrics; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -import org.apache.spark.mllib.linalg.Matrix; -// $example off$ -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; - -public class JavaMulticlassClassificationMetricsExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("Multi class Classification Metrics Example"); - SparkContext sc = new SparkContext(conf); - // $example on$ - String path = "data/mllib/sample_multiclass_classification_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(sc, path).toJavaRDD(); - - // Split initial RDD into two... [60% training data, 40% testing data]. - JavaRDD[] splits = data.randomSplit(new double[]{0.6, 0.4}, 11L); - JavaRDD training = splits[0].cache(); - JavaRDD test = splits[1]; - - // Run training algorithm to build the model. - LogisticRegressionModel model = new LogisticRegressionWithLBFGS() - .setNumClasses(3) - .run(training.rdd()); - - // Compute raw scores on the test set. - JavaPairRDD predictionAndLabels = test.mapToPair(p -> - new Tuple2<>(model.predict(p.features()), p.label())); - - // Get evaluation metrics. - MulticlassMetrics metrics = new MulticlassMetrics(predictionAndLabels.rdd()); - - // Confusion matrix - Matrix confusion = metrics.confusionMatrix(); - System.out.println("Confusion matrix: \n" + confusion); - - // Overall statistics - System.out.println("Accuracy = " + metrics.accuracy()); - - // Stats by labels - for (int i = 0; i < metrics.labels().length; i++) { - System.out.format("Class %f precision = %f\n", metrics.labels()[i],metrics.precision( - metrics.labels()[i])); - System.out.format("Class %f recall = %f\n", metrics.labels()[i], metrics.recall( - metrics.labels()[i])); - System.out.format("Class %f F1 score = %f\n", metrics.labels()[i], metrics.fMeasure( - metrics.labels()[i])); - } - - //Weighted stats - System.out.format("Weighted precision = %f\n", metrics.weightedPrecision()); - System.out.format("Weighted recall = %f\n", metrics.weightedRecall()); - System.out.format("Weighted F1 score = %f\n", metrics.weightedFMeasure()); - System.out.format("Weighted false positive rate = %f\n", metrics.weightedFalsePositiveRate()); - - // Save and load model - model.save(sc, "target/tmp/LogisticRegressionModel"); - LogisticRegressionModel sameModel = LogisticRegressionModel.load(sc, - "target/tmp/LogisticRegressionModel"); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaNaiveBayesExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaNaiveBayesExample.java deleted file mode 100644 index d80dbe8..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaNaiveBayesExample.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import scala.Tuple2; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.classification.NaiveBayes; -import org.apache.spark.mllib.classification.NaiveBayesModel; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ -import org.apache.spark.SparkConf; - -public class JavaNaiveBayesExample { - public static void main(String[] args) { - SparkConf sparkConf = new SparkConf().setAppName("JavaNaiveBayesExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - // $example on$ - String path = "data/mllib/sample_libsvm_data.txt"; - JavaRDD inputData = MLUtils.loadLibSVMFile(jsc.sc(), path).toJavaRDD(); - JavaRDD[] tmp = inputData.randomSplit(new double[]{0.6, 0.4}); - JavaRDD training = tmp[0]; // training set - JavaRDD test = tmp[1]; // test set - NaiveBayesModel model = NaiveBayes.train(training.rdd(), 1.0); - JavaPairRDD predictionAndLabel = - test.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double accuracy = - predictionAndLabel.filter(pl -> pl._1().equals(pl._2())).count() / (double) test.count(); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myNaiveBayesModel"); - NaiveBayesModel sameModel = NaiveBayesModel.load(jsc.sc(), "target/tmp/myNaiveBayesModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPCAExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPCAExample.java deleted file mode 100644 index 0a7dc62..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPCAExample.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -import java.util.List; -// $example off$ - -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.linalg.Matrix; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.linalg.distributed.RowMatrix; -// $example off$ - -/** - * Example for compute principal components on a 'RowMatrix'. - */ -public class JavaPCAExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("PCA Example"); - SparkContext sc = new SparkContext(conf); - JavaSparkContext jsc = JavaSparkContext.fromSparkContext(sc); - - // $example on$ - List data = Arrays.asList( - Vectors.sparse(5, new int[] {1, 3}, new double[] {1.0, 7.0}), - Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0), - Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0) - ); - - JavaRDD rows = jsc.parallelize(data); - - // Create a RowMatrix from JavaRDD. - RowMatrix mat = new RowMatrix(rows.rdd()); - - // Compute the top 4 principal components. - // Principal components are stored in a local dense matrix. - Matrix pc = mat.computePrincipalComponents(4); - - // Project the rows to the linear space spanned by the top 4 principal components. - RowMatrix projected = mat.multiply(pc); - // $example off$ - Vector[] collectPartitions = (Vector[])projected.rows().collect(); - System.out.println("Projected vector of principal component:"); - for (Vector vector : collectPartitions) { - System.out.println("\t" + vector); - } - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPowerIterationClusteringExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPowerIterationClusteringExample.java deleted file mode 100644 index 5155f18..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPowerIterationClusteringExample.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import java.util.Arrays; - -import scala.Tuple3; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import org.apache.spark.mllib.clustering.PowerIterationClustering; -import org.apache.spark.mllib.clustering.PowerIterationClusteringModel; -// $example off$ - -/** - * Java example for graph clustering using power iteration clustering (PIC). - */ -public class JavaPowerIterationClusteringExample { - public static void main(String[] args) { - SparkConf sparkConf = new SparkConf().setAppName("JavaPowerIterationClusteringExample"); - JavaSparkContext sc = new JavaSparkContext(sparkConf); - - @SuppressWarnings("unchecked") - // $example on$ - JavaRDD> similarities = sc.parallelize(Arrays.asList( - new Tuple3<>(0L, 1L, 0.9), - new Tuple3<>(1L, 2L, 0.9), - new Tuple3<>(2L, 3L, 0.9), - new Tuple3<>(3L, 4L, 0.1), - new Tuple3<>(4L, 5L, 0.9))); - - PowerIterationClustering pic = new PowerIterationClustering() - .setK(2) - .setMaxIterations(10); - PowerIterationClusteringModel model = pic.run(similarities); - - for (PowerIterationClustering.Assignment a: model.assignments().toJavaRDD().collect()) { - System.out.println(a.id() + " -> " + a.cluster()); - } - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPrefixSpanExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPrefixSpanExample.java deleted file mode 100644 index 1634075..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaPrefixSpanExample.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -import java.util.List; -// $example off$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import org.apache.spark.mllib.fpm.PrefixSpan; -import org.apache.spark.mllib.fpm.PrefixSpanModel; -// $example off$ -import org.apache.spark.SparkConf; - -public class JavaPrefixSpanExample { - - public static void main(String[] args) { - - SparkConf sparkConf = new SparkConf().setAppName("JavaPrefixSpanExample"); - JavaSparkContext sc = new JavaSparkContext(sparkConf); - - // $example on$ - JavaRDD>> sequences = sc.parallelize(Arrays.asList( - Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3)), - Arrays.asList(Arrays.asList(1), Arrays.asList(3, 2), Arrays.asList(1, 2)), - Arrays.asList(Arrays.asList(1, 2), Arrays.asList(5)), - Arrays.asList(Arrays.asList(6)) - ), 2); - PrefixSpan prefixSpan = new PrefixSpan() - .setMinSupport(0.5) - .setMaxPatternLength(5); - PrefixSpanModel model = prefixSpan.run(sequences); - for (PrefixSpan.FreqSequence freqSeq: model.freqSequences().toJavaRDD().collect()) { - System.out.println(freqSeq.javaSequence() + ", " + freqSeq.freq()); - } - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestClassificationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestClassificationExample.java deleted file mode 100644 index 6998ce2..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestClassificationExample.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.HashMap; -import java.util.Map; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.tree.RandomForest; -import org.apache.spark.mllib.tree.model.RandomForestModel; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -public class JavaRandomForestClassificationExample { - public static void main(String[] args) { - // $example on$ - SparkConf sparkConf = new SparkConf().setAppName("JavaRandomForestClassificationExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - // Load and parse the data file. - String datapath = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(jsc.sc(), datapath).toJavaRDD(); - // Split the data into training and test sets (30% held out for testing) - JavaRDD[] splits = data.randomSplit(new double[]{0.7, 0.3}); - JavaRDD trainingData = splits[0]; - JavaRDD testData = splits[1]; - - // Train a RandomForest model. - // Empty categoricalFeaturesInfo indicates all features are continuous. - Integer numClasses = 2; - Map categoricalFeaturesInfo = new HashMap<>(); - Integer numTrees = 3; // Use more in practice. - String featureSubsetStrategy = "auto"; // Let the algorithm choose. - String impurity = "gini"; - Integer maxDepth = 5; - Integer maxBins = 32; - Integer seed = 12345; - - RandomForestModel model = RandomForest.trainClassifier(trainingData, numClasses, - categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins, - seed); - - // Evaluate model on test instances and compute test error - JavaPairRDD predictionAndLabel = - testData.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double testErr = - predictionAndLabel.filter(pl -> !pl._1().equals(pl._2())).count() / (double) testData.count(); - System.out.println("Test Error: " + testErr); - System.out.println("Learned classification forest model:\n" + model.toDebugString()); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myRandomForestClassificationModel"); - RandomForestModel sameModel = RandomForestModel.load(jsc.sc(), - "target/tmp/myRandomForestClassificationModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestRegressionExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestRegressionExample.java deleted file mode 100644 index 4a0f55f..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRandomForestRegressionExample.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.HashMap; -import java.util.Map; - -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.tree.RandomForest; -import org.apache.spark.mllib.tree.model.RandomForestModel; -import org.apache.spark.mllib.util.MLUtils; -import org.apache.spark.SparkConf; -// $example off$ - -public class JavaRandomForestRegressionExample { - public static void main(String[] args) { - // $example on$ - SparkConf sparkConf = new SparkConf().setAppName("JavaRandomForestRegressionExample"); - JavaSparkContext jsc = new JavaSparkContext(sparkConf); - // Load and parse the data file. - String datapath = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(jsc.sc(), datapath).toJavaRDD(); - // Split the data into training and test sets (30% held out for testing) - JavaRDD[] splits = data.randomSplit(new double[]{0.7, 0.3}); - JavaRDD trainingData = splits[0]; - JavaRDD testData = splits[1]; - - // Set parameters. - // Empty categoricalFeaturesInfo indicates all features are continuous. - Map categoricalFeaturesInfo = new HashMap<>(); - int numTrees = 3; // Use more in practice. - String featureSubsetStrategy = "auto"; // Let the algorithm choose. - String impurity = "variance"; - int maxDepth = 4; - int maxBins = 32; - int seed = 12345; - // Train a RandomForest model. - RandomForestModel model = RandomForest.trainRegressor(trainingData, - categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins, seed); - - // Evaluate model on test instances and compute test error - JavaPairRDD predictionAndLabel = - testData.mapToPair(p -> new Tuple2<>(model.predict(p.features()), p.label())); - double testMSE = predictionAndLabel.mapToDouble(pl -> { - double diff = pl._1() - pl._2(); - return diff * diff; - }).mean(); - System.out.println("Test Mean Squared Error: " + testMSE); - System.out.println("Learned regression forest model:\n" + model.toDebugString()); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myRandomForestRegressionModel"); - RandomForestModel sameModel = RandomForestModel.load(jsc.sc(), - "target/tmp/myRandomForestRegressionModel"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRankingMetricsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRankingMetricsExample.java deleted file mode 100644 index dc9970d..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRankingMetricsExample.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.*; - -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.evaluation.RegressionMetrics; -import org.apache.spark.mllib.evaluation.RankingMetrics; -import org.apache.spark.mllib.recommendation.ALS; -import org.apache.spark.mllib.recommendation.MatrixFactorizationModel; -import org.apache.spark.mllib.recommendation.Rating; -// $example off$ -import org.apache.spark.SparkConf; - -public class JavaRankingMetricsExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("Java Ranking Metrics Example"); - JavaSparkContext sc = new JavaSparkContext(conf); - // $example on$ - String path = "data/mllib/sample_movielens_data.txt"; - JavaRDD data = sc.textFile(path); - JavaRDD ratings = data.map(line -> { - String[] parts = line.split("::"); - return new Rating(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Double - .parseDouble(parts[2]) - 2.5); - }); - ratings.cache(); - - // Train an ALS model - MatrixFactorizationModel model = ALS.train(JavaRDD.toRDD(ratings), 10, 10, 0.01); - - // Get top 10 recommendations for every user and scale ratings from 0 to 1 - JavaRDD> userRecs = model.recommendProductsForUsers(10).toJavaRDD(); - JavaRDD> userRecsScaled = userRecs.map(t -> { - Rating[] scaledRatings = new Rating[t._2().length]; - for (int i = 0; i < scaledRatings.length; i++) { - double newRating = Math.max(Math.min(t._2()[i].rating(), 1.0), 0.0); - scaledRatings[i] = new Rating(t._2()[i].user(), t._2()[i].product(), newRating); - } - return new Tuple2<>(t._1(), scaledRatings); - }); - JavaPairRDD userRecommended = JavaPairRDD.fromJavaRDD(userRecsScaled); - - // Map ratings to 1 or 0, 1 indicating a movie that should be recommended - JavaRDD binarizedRatings = ratings.map(r -> { - double binaryRating; - if (r.rating() > 0.0) { - binaryRating = 1.0; - } else { - binaryRating = 0.0; - } - return new Rating(r.user(), r.product(), binaryRating); - }); - - // Group ratings by common user - JavaPairRDD> userMovies = binarizedRatings.groupBy(Rating::user); - - // Get true relevant documents from all user ratings - JavaPairRDD> userMoviesList = userMovies.mapValues(docs -> { - List products = new ArrayList<>(); - for (Rating r : docs) { - if (r.rating() > 0.0) { - products.add(r.product()); - } - } - return products; - }); - - // Extract the product id from each recommendation - JavaPairRDD> userRecommendedList = userRecommended.mapValues(docs -> { - List products = new ArrayList<>(); - for (Rating r : docs) { - products.add(r.product()); - } - return products; - }); - JavaRDD, List>> relevantDocs = userMoviesList.join( - userRecommendedList).values(); - - // Instantiate the metrics object - RankingMetrics metrics = RankingMetrics.of(relevantDocs); - - // Precision and NDCG at k - Integer[] kVector = {1, 3, 5}; - for (Integer k : kVector) { - System.out.format("Precision at %d = %f\n", k, metrics.precisionAt(k)); - System.out.format("NDCG at %d = %f\n", k, metrics.ndcgAt(k)); - } - - // Mean average precision - System.out.format("Mean average precision = %f\n", metrics.meanAveragePrecision()); - - // Evaluate the model using numerical ratings and regression metrics - JavaRDD> userProducts = - ratings.map(r -> new Tuple2<>(r.user(), r.product())); - - JavaPairRDD, Object> predictions = JavaPairRDD.fromJavaRDD( - model.predict(JavaRDD.toRDD(userProducts)).toJavaRDD().map(r -> - new Tuple2<>(new Tuple2<>(r.user(), r.product()), r.rating()))); - JavaRDD> ratesAndPreds = - JavaPairRDD.fromJavaRDD(ratings.map(r -> - new Tuple2, Object>( - new Tuple2<>(r.user(), r.product()), - r.rating()) - )).join(predictions).values(); - - // Create regression metrics object - RegressionMetrics regressionMetrics = new RegressionMetrics(ratesAndPreds.rdd()); - - // Root mean squared error - System.out.format("RMSE = %f\n", regressionMetrics.rootMeanSquaredError()); - - // R-squared - System.out.format("R-squared = %f\n", regressionMetrics.r2()); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRecommendationExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRecommendationExample.java deleted file mode 100644 index 1ee68da..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRecommendationExample.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.recommendation.ALS; -import org.apache.spark.mllib.recommendation.MatrixFactorizationModel; -import org.apache.spark.mllib.recommendation.Rating; -import org.apache.spark.SparkConf; -// $example off$ - -public class JavaRecommendationExample { - public static void main(String[] args) { - // $example on$ - SparkConf conf = new SparkConf().setAppName("Java Collaborative Filtering Example"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // Load and parse the data - String path = "data/mllib/als/test.data"; - JavaRDD data = jsc.textFile(path); - JavaRDD ratings = data.map(s -> { - String[] sarray = s.split(","); - return new Rating(Integer.parseInt(sarray[0]), - Integer.parseInt(sarray[1]), - Double.parseDouble(sarray[2])); - }); - - // Build the recommendation model using ALS - int rank = 10; - int numIterations = 10; - MatrixFactorizationModel model = ALS.train(JavaRDD.toRDD(ratings), rank, numIterations, 0.01); - - // Evaluate the model on rating data - JavaRDD> userProducts = - ratings.map(r -> new Tuple2<>(r.user(), r.product())); - JavaPairRDD, Double> predictions = JavaPairRDD.fromJavaRDD( - model.predict(JavaRDD.toRDD(userProducts)).toJavaRDD() - .map(r -> new Tuple2<>(new Tuple2<>(r.user(), r.product()), r.rating())) - ); - JavaRDD> ratesAndPreds = JavaPairRDD.fromJavaRDD( - ratings.map(r -> new Tuple2<>(new Tuple2<>(r.user(), r.product()), r.rating()))) - .join(predictions).values(); - double MSE = ratesAndPreds.mapToDouble(pair -> { - double err = pair._1() - pair._2(); - return err * err; - }).mean(); - System.out.println("Mean Squared Error = " + MSE); - - // Save and load model - model.save(jsc.sc(), "target/tmp/myCollaborativeFilter"); - MatrixFactorizationModel sameModel = MatrixFactorizationModel.load(jsc.sc(), - "target/tmp/myCollaborativeFilter"); - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRegressionMetricsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRegressionMetricsExample.java deleted file mode 100644 index 00033b5..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaRegressionMetricsExample.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.*; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.regression.LinearRegressionModel; -import org.apache.spark.mllib.regression.LinearRegressionWithSGD; -import org.apache.spark.mllib.evaluation.RegressionMetrics; -import org.apache.spark.SparkConf; -// $example off$ - -public class JavaRegressionMetricsExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("Java Regression Metrics Example"); - JavaSparkContext sc = new JavaSparkContext(conf); - // $example on$ - // Load and parse the data - String path = "data/mllib/sample_linear_regression_data.txt"; - JavaRDD data = sc.textFile(path); - JavaRDD parsedData = data.map(line -> { - String[] parts = line.split(" "); - double[] v = new double[parts.length - 1]; - for (int i = 1; i < parts.length; i++) { - v[i - 1] = Double.parseDouble(parts[i].split(":")[1]); - } - return new LabeledPoint(Double.parseDouble(parts[0]), Vectors.dense(v)); - }); - parsedData.cache(); - - // Building the model - int numIterations = 100; - LinearRegressionModel model = LinearRegressionWithSGD.train(JavaRDD.toRDD(parsedData), - numIterations); - - // Evaluate model on training examples and compute training error - JavaPairRDD valuesAndPreds = parsedData.mapToPair(point -> - new Tuple2<>(model.predict(point.features()), point.label())); - - // Instantiate metrics object - RegressionMetrics metrics = new RegressionMetrics(valuesAndPreds.rdd()); - - // Squared error - System.out.format("MSE = %f\n", metrics.meanSquaredError()); - System.out.format("RMSE = %f\n", metrics.rootMeanSquaredError()); - - // R-squared - System.out.format("R Squared = %f\n", metrics.r2()); - - // Mean absolute error - System.out.format("MAE = %f\n", metrics.meanAbsoluteError()); - - // Explained variance - System.out.format("Explained Variance = %f\n", metrics.explainedVariance()); - - // Save and load model - model.save(sc.sc(), "target/tmp/LogisticRegressionModel"); - LinearRegressionModel sameModel = LinearRegressionModel.load(sc.sc(), - "target/tmp/LogisticRegressionModel"); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVDExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVDExample.java deleted file mode 100644 index 802be39..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVDExample.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -import java.util.List; -// $example off$ - -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; -// $example on$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.linalg.Matrix; -import org.apache.spark.mllib.linalg.SingularValueDecomposition; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.linalg.distributed.RowMatrix; -// $example off$ - -/** - * Example for SingularValueDecomposition. - */ -public class JavaSVDExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("SVD Example"); - SparkContext sc = new SparkContext(conf); - JavaSparkContext jsc = JavaSparkContext.fromSparkContext(sc); - - // $example on$ - List data = Arrays.asList( - Vectors.sparse(5, new int[] {1, 3}, new double[] {1.0, 7.0}), - Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0), - Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0) - ); - - JavaRDD rows = jsc.parallelize(data); - - // Create a RowMatrix from JavaRDD. - RowMatrix mat = new RowMatrix(rows.rdd()); - - // Compute the top 5 singular values and corresponding singular vectors. - SingularValueDecomposition svd = mat.computeSVD(5, true, 1.0E-9d); - RowMatrix U = svd.U(); // The U factor is a RowMatrix. - Vector s = svd.s(); // The singular values are stored in a local dense vector. - Matrix V = svd.V(); // The V factor is a local dense matrix. - // $example off$ - Vector[] collectPartitions = (Vector[]) U.rows().collect(); - System.out.println("U factor is:"); - for (Vector vector : collectPartitions) { - System.out.println("\t" + vector); - } - System.out.println("Singular values are: " + s); - System.out.println("V factor is:\n" + V); - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVMWithSGDExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVMWithSGDExample.java deleted file mode 100644 index 866a221..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSVMWithSGDExample.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.SparkContext; - -// $example on$ -import scala.Tuple2; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.classification.SVMModel; -import org.apache.spark.mllib.classification.SVMWithSGD; -import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics; -import org.apache.spark.mllib.regression.LabeledPoint; -import org.apache.spark.mllib.util.MLUtils; -// $example off$ - -/** - * Example for SVMWithSGD. - */ -public class JavaSVMWithSGDExample { - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("JavaSVMWithSGDExample"); - SparkContext sc = new SparkContext(conf); - // $example on$ - String path = "data/mllib/sample_libsvm_data.txt"; - JavaRDD data = MLUtils.loadLibSVMFile(sc, path).toJavaRDD(); - - // Split initial RDD into two... [60% training data, 40% testing data]. - JavaRDD training = data.sample(false, 0.6, 11L); - training.cache(); - JavaRDD test = data.subtract(training); - - // Run training algorithm to build the model. - int numIterations = 100; - SVMModel model = SVMWithSGD.train(training.rdd(), numIterations); - - // Clear the default threshold. - model.clearThreshold(); - - // Compute raw scores on the test set. - JavaRDD> scoreAndLabels = test.map(p -> - new Tuple2<>(model.predict(p.features()), p.label())); - - // Get evaluation metrics. - BinaryClassificationMetrics metrics = - new BinaryClassificationMetrics(JavaRDD.toRDD(scoreAndLabels)); - double auROC = metrics.areaUnderROC(); - - System.out.println("Area under ROC = " + auROC); - - // Save and load model - model.save(sc, "target/tmp/javaSVMWithSGDModel"); - SVMModel sameModel = SVMModel.load(sc, "target/tmp/javaSVMWithSGDModel"); - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSimpleFPGrowth.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSimpleFPGrowth.java deleted file mode 100644 index f9198e7..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSimpleFPGrowth.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import java.util.Arrays; -import java.util.List; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.mllib.fpm.AssociationRules; -import org.apache.spark.mllib.fpm.FPGrowth; -import org.apache.spark.mllib.fpm.FPGrowthModel; -// $example off$ - -import org.apache.spark.SparkConf; - -public class JavaSimpleFPGrowth { - - public static void main(String[] args) { - SparkConf conf = new SparkConf().setAppName("FP-growth Example"); - JavaSparkContext sc = new JavaSparkContext(conf); - - // $example on$ - JavaRDD data = sc.textFile("data/mllib/sample_fpgrowth.txt"); - - JavaRDD> transactions = data.map(line -> Arrays.asList(line.split(" "))); - - FPGrowth fpg = new FPGrowth() - .setMinSupport(0.2) - .setNumPartitions(10); - FPGrowthModel model = fpg.run(transactions); - - for (FPGrowth.FreqItemset itemset: model.freqItemsets().toJavaRDD().collect()) { - System.out.println("[" + itemset.javaItems() + "], " + itemset.freq()); - } - - double minConfidence = 0.8; - for (AssociationRules.Rule rule - : model.generateAssociationRules(minConfidence).toJavaRDD().collect()) { - System.out.println( - rule.javaAntecedent() + " => " + rule.javaConsequent() + ", " + rule.confidence()); - } - // $example off$ - - sc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStratifiedSamplingExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStratifiedSamplingExample.java deleted file mode 100644 index 286b95c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStratifiedSamplingExample.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import com.google.common.collect.ImmutableMap; -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; - -// $example on$ -import java.util.*; - -import scala.Tuple2; - -import org.apache.spark.api.java.JavaPairRDD; -// $example off$ - -public class JavaStratifiedSamplingExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaStratifiedSamplingExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - @SuppressWarnings("unchecked") - // $example on$ - List> list = Arrays.asList( - new Tuple2<>(1, 'a'), - new Tuple2<>(1, 'b'), - new Tuple2<>(2, 'c'), - new Tuple2<>(2, 'd'), - new Tuple2<>(2, 'e'), - new Tuple2<>(3, 'f') - ); - - JavaPairRDD data = jsc.parallelizePairs(list); - - // specify the exact fraction desired from each key Map - ImmutableMap fractions = ImmutableMap.of(1, 0.1, 2, 0.6, 3, 0.3); - - // Get an approximate sample from each stratum - JavaPairRDD approxSample = data.sampleByKey(false, fractions); - // Get an exact sample from each stratum - JavaPairRDD exactSample = data.sampleByKeyExact(false, fractions); - // $example off$ - - System.out.println("approxSample size is " + approxSample.collect().size()); - for (Tuple2 t : approxSample.collect()) { - System.out.println(t._1() + " " + t._2()); - } - - System.out.println("exactSample size is " + exactSample.collect().size()); - for (Tuple2 t : exactSample.collect()) { - System.out.println(t._1() + " " + t._2()); - } - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStreamingTestExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStreamingTestExample.java deleted file mode 100644 index 4be702c..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaStreamingTestExample.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -// $example on$ -import org.apache.spark.mllib.stat.test.BinarySample; -import org.apache.spark.mllib.stat.test.StreamingTest; -import org.apache.spark.mllib.stat.test.StreamingTestResult; -// $example off$ -import org.apache.spark.SparkConf; -import org.apache.spark.streaming.Duration; -import org.apache.spark.streaming.Seconds; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; -import org.apache.spark.util.Utils; - - -/** - * Perform streaming testing using Welch's 2-sample t-test on a stream of data, where the data - * stream arrives as text files in a directory. Stops when the two groups are statistically - * significant (p-value < 0.05) or after a user-specified timeout in number of batches is exceeded. - * - * The rows of the text files must be in the form `Boolean, Double`. For example: - * false, -3.92 - * true, 99.32 - * - * Usage: - * JavaStreamingTestExample - * - * To run on your local machine using the directory `dataDir` with 5 seconds between each batch and - * a timeout after 100 insignificant batches, call: - * $ bin/run-example mllib.JavaStreamingTestExample dataDir 5 100 - * - * As you add text files to `dataDir` the significance test wil continually update every - * `batchDuration` seconds until the test becomes significant (p-value < 0.05) or the number of - * batches processed exceeds `numBatchesTimeout`. - */ -public class JavaStreamingTestExample { - - private static int timeoutCounter = 0; - - public static void main(String[] args) throws Exception { - if (args.length != 3) { - System.err.println("Usage: JavaStreamingTestExample " + - " "); - System.exit(1); - } - - String dataDir = args[0]; - Duration batchDuration = Seconds.apply(Long.parseLong(args[1])); - int numBatchesTimeout = Integer.parseInt(args[2]); - - SparkConf conf = new SparkConf().setMaster("local").setAppName("StreamingTestExample"); - JavaStreamingContext ssc = new JavaStreamingContext(conf, batchDuration); - - ssc.checkpoint(Utils.createTempDir(System.getProperty("java.io.tmpdir"), "spark").toString()); - - // $example on$ - JavaDStream data = ssc.textFileStream(dataDir).map(line -> { - String[] ts = line.split(","); - boolean label = Boolean.parseBoolean(ts[0]); - double value = Double.parseDouble(ts[1]); - return new BinarySample(label, value); - }); - - StreamingTest streamingTest = new StreamingTest() - .setPeacePeriod(0) - .setWindowSize(0) - .setTestMethod("welch"); - - JavaDStream out = streamingTest.registerStream(data); - out.print(); - // $example off$ - - // Stop processing if test becomes significant or we time out - timeoutCounter = numBatchesTimeout; - - out.foreachRDD(rdd -> { - timeoutCounter -= 1; - boolean anySignificant = !rdd.filter(v -> v.pValue() < 0.05).isEmpty(); - if (timeoutCounter <= 0 || anySignificant) { - rdd.context().stop(); - } - }); - - ssc.start(); - ssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSummaryStatisticsExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSummaryStatisticsExample.java deleted file mode 100644 index 278706b..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/mllib/JavaSummaryStatisticsExample.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.mllib; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -// $example on$ -import java.util.Arrays; - -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.mllib.linalg.Vector; -import org.apache.spark.mllib.linalg.Vectors; -import org.apache.spark.mllib.stat.MultivariateStatisticalSummary; -import org.apache.spark.mllib.stat.Statistics; -// $example off$ - -public class JavaSummaryStatisticsExample { - public static void main(String[] args) { - - SparkConf conf = new SparkConf().setAppName("JavaSummaryStatisticsExample"); - JavaSparkContext jsc = new JavaSparkContext(conf); - - // $example on$ - JavaRDD mat = jsc.parallelize( - Arrays.asList( - Vectors.dense(1.0, 10.0, 100.0), - Vectors.dense(2.0, 20.0, 200.0), - Vectors.dense(3.0, 30.0, 300.0) - ) - ); // an RDD of Vectors - - // Compute column summary statistics. - MultivariateStatisticalSummary summary = Statistics.colStats(mat.rdd()); - System.out.println(summary.mean()); // a dense vector containing the mean value for each column - System.out.println(summary.variance()); // column-wise variance - System.out.println(summary.numNonzeros()); // number of nonzeros in each column - // $example off$ - - jsc.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSQLDataSourceExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSQLDataSourceExample.java deleted file mode 100644 index 95859c5..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSQLDataSourceExample.java +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql; - -// $example on:schema_merging$ -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -// $example off:schema_merging$ -import java.util.Properties; - -// $example on:basic_parquet_example$ -import org.apache.spark.api.java.function.MapFunction; -import org.apache.spark.sql.Encoders; -// $example on:schema_merging$ -// $example on:json_dataset$ -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off:json_dataset$ -// $example off:schema_merging$ -// $example off:basic_parquet_example$ -import org.apache.spark.sql.SparkSession; - -public class JavaSQLDataSourceExample { - - // $example on:schema_merging$ - public static class Square implements Serializable { - private int value; - private int square; - - // Getters and setters... - // $example off:schema_merging$ - public int getValue() { - return value; - } - - public void setValue(int value) { - this.value = value; - } - - public int getSquare() { - return square; - } - - public void setSquare(int square) { - this.square = square; - } - // $example on:schema_merging$ - } - // $example off:schema_merging$ - - // $example on:schema_merging$ - public static class Cube implements Serializable { - private int value; - private int cube; - - // Getters and setters... - // $example off:schema_merging$ - public int getValue() { - return value; - } - - public void setValue(int value) { - this.value = value; - } - - public int getCube() { - return cube; - } - - public void setCube(int cube) { - this.cube = cube; - } - // $example on:schema_merging$ - } - // $example off:schema_merging$ - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("Java Spark SQL data sources example") - .config("spark.some.config.option", "some-value") - .getOrCreate(); - - runBasicDataSourceExample(spark); - runBasicParquetExample(spark); - runParquetSchemaMergingExample(spark); - runJsonDatasetExample(spark); - runJdbcDatasetExample(spark); - - spark.stop(); - } - - private static void runBasicDataSourceExample(SparkSession spark) { - // $example on:generic_load_save_functions$ - Dataset usersDF = spark.read().load("examples/src/main/resources/users.parquet"); - usersDF.select("name", "favorite_color").write().save("namesAndFavColors.parquet"); - // $example off:generic_load_save_functions$ - // $example on:manual_load_options$ - Dataset peopleDF = - spark.read().format("json").load("examples/src/main/resources/people.json"); - peopleDF.select("name", "age").write().format("parquet").save("namesAndAges.parquet"); - // $example off:manual_load_options$ - // $example on:direct_sql$ - Dataset sqlDF = - spark.sql("SELECT * FROM parquet.`examples/src/main/resources/users.parquet`"); - // $example off:direct_sql$ - // $example on:write_sorting_and_bucketing$ - peopleDF.write().bucketBy(42, "name").sortBy("age").saveAsTable("people_bucketed"); - // $example off:write_sorting_and_bucketing$ - // $example on:write_partitioning$ - usersDF - .write() - .partitionBy("favorite_color") - .format("parquet") - .save("namesPartByColor.parquet"); - // $example off:write_partitioning$ - // $example on:write_partition_and_bucket$ - peopleDF - .write() - .partitionBy("favorite_color") - .bucketBy(42, "name") - .saveAsTable("people_partitioned_bucketed"); - // $example off:write_partition_and_bucket$ - - spark.sql("DROP TABLE IF EXISTS people_bucketed"); - spark.sql("DROP TABLE IF EXISTS people_partitioned_bucketed"); - } - - private static void runBasicParquetExample(SparkSession spark) { - // $example on:basic_parquet_example$ - Dataset peopleDF = spark.read().json("examples/src/main/resources/people.json"); - - // DataFrames can be saved as Parquet files, maintaining the schema information - peopleDF.write().parquet("people.parquet"); - - // Read in the Parquet file created above. - // Parquet files are self-describing so the schema is preserved - // The result of loading a parquet file is also a DataFrame - Dataset parquetFileDF = spark.read().parquet("people.parquet"); - - // Parquet files can also be used to create a temporary view and then used in SQL statements - parquetFileDF.createOrReplaceTempView("parquetFile"); - Dataset namesDF = spark.sql("SELECT name FROM parquetFile WHERE age BETWEEN 13 AND 19"); - Dataset namesDS = namesDF.map( - (MapFunction) row -> "Name: " + row.getString(0), - Encoders.STRING()); - namesDS.show(); - // +------------+ - // | value| - // +------------+ - // |Name: Justin| - // +------------+ - // $example off:basic_parquet_example$ - } - - private static void runParquetSchemaMergingExample(SparkSession spark) { - // $example on:schema_merging$ - List squares = new ArrayList<>(); - for (int value = 1; value <= 5; value++) { - Square square = new Square(); - square.setValue(value); - square.setSquare(value * value); - squares.add(square); - } - - // Create a simple DataFrame, store into a partition directory - Dataset squaresDF = spark.createDataFrame(squares, Square.class); - squaresDF.write().parquet("data/test_table/key=1"); - - List cubes = new ArrayList<>(); - for (int value = 6; value <= 10; value++) { - Cube cube = new Cube(); - cube.setValue(value); - cube.setCube(value * value * value); - cubes.add(cube); - } - - // Create another DataFrame in a new partition directory, - // adding a new column and dropping an existing column - Dataset cubesDF = spark.createDataFrame(cubes, Cube.class); - cubesDF.write().parquet("data/test_table/key=2"); - - // Read the partitioned table - Dataset mergedDF = spark.read().option("mergeSchema", true).parquet("data/test_table"); - mergedDF.printSchema(); - - // The final schema consists of all 3 columns in the Parquet files together - // with the partitioning column appeared in the partition directory paths - // root - // |-- value: int (nullable = true) - // |-- square: int (nullable = true) - // |-- cube: int (nullable = true) - // |-- key: int (nullable = true) - // $example off:schema_merging$ - } - - private static void runJsonDatasetExample(SparkSession spark) { - // $example on:json_dataset$ - // A JSON dataset is pointed to by path. - // The path can be either a single text file or a directory storing text files - Dataset people = spark.read().json("examples/src/main/resources/people.json"); - - // The inferred schema can be visualized using the printSchema() method - people.printSchema(); - // root - // |-- age: long (nullable = true) - // |-- name: string (nullable = true) - - // Creates a temporary view using the DataFrame - people.createOrReplaceTempView("people"); - - // SQL statements can be run by using the sql methods provided by spark - Dataset namesDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19"); - namesDF.show(); - // +------+ - // | name| - // +------+ - // |Justin| - // +------+ - - // Alternatively, a DataFrame can be created for a JSON dataset represented by - // a Dataset storing one JSON object per string. - List jsonData = Arrays.asList( - "{\"name\":\"Yin\",\"address\":{\"city\":\"Columbus\",\"state\":\"Ohio\"}}"); - Dataset anotherPeopleDataset = spark.createDataset(jsonData, Encoders.STRING()); - Dataset anotherPeople = spark.read().json(anotherPeopleDataset); - anotherPeople.show(); - // +---------------+----+ - // | address|name| - // +---------------+----+ - // |[Columbus,Ohio]| Yin| - // +---------------+----+ - // $example off:json_dataset$ - } - - private static void runJdbcDatasetExample(SparkSession spark) { - // $example on:jdbc_dataset$ - // Note: JDBC loading and saving can be achieved via either the load/save or jdbc methods - // Loading data from a JDBC source - Dataset jdbcDF = spark.read() - .format("jdbc") - .option("url", "jdbc:postgresql:dbserver") - .option("dbtable", "schema.tablename") - .option("user", "username") - .option("password", "password") - .load(); - - Properties connectionProperties = new Properties(); - connectionProperties.put("user", "username"); - connectionProperties.put("password", "password"); - Dataset jdbcDF2 = spark.read() - .jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties); - - // Saving data to a JDBC source - jdbcDF.write() - .format("jdbc") - .option("url", "jdbc:postgresql:dbserver") - .option("dbtable", "schema.tablename") - .option("user", "username") - .option("password", "password") - .save(); - - jdbcDF2.write() - .jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties); - - // Specifying create table column data types on write - jdbcDF.write() - .option("createTableColumnTypes", "name CHAR(64), comments VARCHAR(1024)") - .jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties); - // $example off:jdbc_dataset$ - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQLExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQLExample.java deleted file mode 100644 index 8605852..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaSparkSQLExample.java +++ /dev/null @@ -1,344 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql; - -// $example on:programmatic_schema$ -import java.util.ArrayList; -import java.util.List; -// $example off:programmatic_schema$ -// $example on:create_ds$ -import java.util.Arrays; -import java.util.Collections; -import java.io.Serializable; -// $example off:create_ds$ - -// $example on:schema_inferring$ -// $example on:programmatic_schema$ -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.api.java.function.Function; -// $example off:programmatic_schema$ -// $example on:create_ds$ -import org.apache.spark.api.java.function.MapFunction; -// $example on:create_df$ -// $example on:run_sql$ -// $example on:programmatic_schema$ -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -// $example off:programmatic_schema$ -// $example off:create_df$ -// $example off:run_sql$ -import org.apache.spark.sql.Encoder; -import org.apache.spark.sql.Encoders; -// $example off:create_ds$ -// $example off:schema_inferring$ -import org.apache.spark.sql.RowFactory; -// $example on:init_session$ -import org.apache.spark.sql.SparkSession; -// $example off:init_session$ -// $example on:programmatic_schema$ -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off:programmatic_schema$ -import org.apache.spark.sql.AnalysisException; - -// $example on:untyped_ops$ -// col("...") is preferable to df.col("...") -import static org.apache.spark.sql.functions.col; -// $example off:untyped_ops$ - -public class JavaSparkSQLExample { - // $example on:create_ds$ - public static class Person implements Serializable { - private String name; - private int age; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - } - // $example off:create_ds$ - - public static void main(String[] args) throws AnalysisException { - // $example on:init_session$ - SparkSession spark = SparkSession - .builder() - .appName("Java Spark SQL basic example") - .config("spark.some.config.option", "some-value") - .getOrCreate(); - // $example off:init_session$ - - runBasicDataFrameExample(spark); - runDatasetCreationExample(spark); - runInferSchemaExample(spark); - runProgrammaticSchemaExample(spark); - - spark.stop(); - } - - private static void runBasicDataFrameExample(SparkSession spark) throws AnalysisException { - // $example on:create_df$ - Dataset df = spark.read().json("examples/src/main/resources/people.json"); - - // Displays the content of the DataFrame to stdout - df.show(); - // +----+-------+ - // | age| name| - // +----+-------+ - // |null|Michael| - // | 30| Andy| - // | 19| Justin| - // +----+-------+ - // $example off:create_df$ - - // $example on:untyped_ops$ - // Print the schema in a tree format - df.printSchema(); - // root - // |-- age: long (nullable = true) - // |-- name: string (nullable = true) - - // Select only the "name" column - df.select("name").show(); - // +-------+ - // | name| - // +-------+ - // |Michael| - // | Andy| - // | Justin| - // +-------+ - - // Select everybody, but increment the age by 1 - df.select(col("name"), col("age").plus(1)).show(); - // +-------+---------+ - // | name|(age + 1)| - // +-------+---------+ - // |Michael| null| - // | Andy| 31| - // | Justin| 20| - // +-------+---------+ - - // Select people older than 21 - df.filter(col("age").gt(21)).show(); - // +---+----+ - // |age|name| - // +---+----+ - // | 30|Andy| - // +---+----+ - - // Count people by age - df.groupBy("age").count().show(); - // +----+-----+ - // | age|count| - // +----+-----+ - // | 19| 1| - // |null| 1| - // | 30| 1| - // +----+-----+ - // $example off:untyped_ops$ - - // $example on:run_sql$ - // Register the DataFrame as a SQL temporary view - df.createOrReplaceTempView("people"); - - Dataset sqlDF = spark.sql("SELECT * FROM people"); - sqlDF.show(); - // +----+-------+ - // | age| name| - // +----+-------+ - // |null|Michael| - // | 30| Andy| - // | 19| Justin| - // +----+-------+ - // $example off:run_sql$ - - // $example on:global_temp_view$ - // Register the DataFrame as a global temporary view - df.createGlobalTempView("people"); - - // Global temporary view is tied to a system preserved database `global_temp` - spark.sql("SELECT * FROM global_temp.people").show(); - // +----+-------+ - // | age| name| - // +----+-------+ - // |null|Michael| - // | 30| Andy| - // | 19| Justin| - // +----+-------+ - - // Global temporary view is cross-session - spark.newSession().sql("SELECT * FROM global_temp.people").show(); - // +----+-------+ - // | age| name| - // +----+-------+ - // |null|Michael| - // | 30| Andy| - // | 19| Justin| - // +----+-------+ - // $example off:global_temp_view$ - } - - private static void runDatasetCreationExample(SparkSession spark) { - // $example on:create_ds$ - // Create an instance of a Bean class - Person person = new Person(); - person.setName("Andy"); - person.setAge(32); - - // Encoders are created for Java beans - Encoder personEncoder = Encoders.bean(Person.class); - Dataset javaBeanDS = spark.createDataset( - Collections.singletonList(person), - personEncoder - ); - javaBeanDS.show(); - // +---+----+ - // |age|name| - // +---+----+ - // | 32|Andy| - // +---+----+ - - // Encoders for most common types are provided in class Encoders - Encoder integerEncoder = Encoders.INT(); - Dataset primitiveDS = spark.createDataset(Arrays.asList(1, 2, 3), integerEncoder); - Dataset transformedDS = primitiveDS.map( - (MapFunction) value -> value + 1, - integerEncoder); - transformedDS.collect(); // Returns [2, 3, 4] - - // DataFrames can be converted to a Dataset by providing a class. Mapping based on name - String path = "examples/src/main/resources/people.json"; - Dataset peopleDS = spark.read().json(path).as(personEncoder); - peopleDS.show(); - // +----+-------+ - // | age| name| - // +----+-------+ - // |null|Michael| - // | 30| Andy| - // | 19| Justin| - // +----+-------+ - // $example off:create_ds$ - } - - private static void runInferSchemaExample(SparkSession spark) { - // $example on:schema_inferring$ - // Create an RDD of Person objects from a text file - JavaRDD peopleRDD = spark.read() - .textFile("examples/src/main/resources/people.txt") - .javaRDD() - .map(line -> { - String[] parts = line.split(","); - Person person = new Person(); - person.setName(parts[0]); - person.setAge(Integer.parseInt(parts[1].trim())); - return person; - }); - - // Apply a schema to an RDD of JavaBeans to get a DataFrame - Dataset peopleDF = spark.createDataFrame(peopleRDD, Person.class); - // Register the DataFrame as a temporary view - peopleDF.createOrReplaceTempView("people"); - - // SQL statements can be run by using the sql methods provided by spark - Dataset teenagersDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19"); - - // The columns of a row in the result can be accessed by field index - Encoder stringEncoder = Encoders.STRING(); - Dataset teenagerNamesByIndexDF = teenagersDF.map( - (MapFunction) row -> "Name: " + row.getString(0), - stringEncoder); - teenagerNamesByIndexDF.show(); - // +------------+ - // | value| - // +------------+ - // |Name: Justin| - // +------------+ - - // or by field name - Dataset teenagerNamesByFieldDF = teenagersDF.map( - (MapFunction) row -> "Name: " + row.getAs("name"), - stringEncoder); - teenagerNamesByFieldDF.show(); - // +------------+ - // | value| - // +------------+ - // |Name: Justin| - // +------------+ - // $example off:schema_inferring$ - } - - private static void runProgrammaticSchemaExample(SparkSession spark) { - // $example on:programmatic_schema$ - // Create an RDD - JavaRDD peopleRDD = spark.sparkContext() - .textFile("examples/src/main/resources/people.txt", 1) - .toJavaRDD(); - - // The schema is encoded in a string - String schemaString = "name age"; - - // Generate the schema based on the string of schema - List fields = new ArrayList<>(); - for (String fieldName : schemaString.split(" ")) { - StructField field = DataTypes.createStructField(fieldName, DataTypes.StringType, true); - fields.add(field); - } - StructType schema = DataTypes.createStructType(fields); - - // Convert records of the RDD (people) to Rows - JavaRDD rowRDD = peopleRDD.map((Function) record -> { - String[] attributes = record.split(","); - return RowFactory.create(attributes[0], attributes[1].trim()); - }); - - // Apply the schema to the RDD - Dataset peopleDataFrame = spark.createDataFrame(rowRDD, schema); - - // Creates a temporary view using the DataFrame - peopleDataFrame.createOrReplaceTempView("people"); - - // SQL can be run over a temporary view created using DataFrames - Dataset results = spark.sql("SELECT name FROM people"); - - // The results of SQL queries are DataFrames and support all the normal RDD operations - // The columns of a row in the result can be accessed by field index or by field name - Dataset namesDS = results.map( - (MapFunction) row -> "Name: " + row.getString(0), - Encoders.STRING()); - namesDS.show(); - // +-------------+ - // | value| - // +-------------+ - // |Name: Michael| - // | Name: Andy| - // | Name: Justin| - // +-------------+ - // $example off:programmatic_schema$ - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedTypedAggregation.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedTypedAggregation.java deleted file mode 100644 index 78e9011..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedTypedAggregation.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql; - -// $example on:typed_custom_aggregation$ -import java.io.Serializable; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Encoder; -import org.apache.spark.sql.Encoders; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.TypedColumn; -import org.apache.spark.sql.expressions.Aggregator; -// $example off:typed_custom_aggregation$ - -public class JavaUserDefinedTypedAggregation { - - // $example on:typed_custom_aggregation$ - public static class Employee implements Serializable { - private String name; - private long salary; - - // Constructors, getters, setters... - // $example off:typed_custom_aggregation$ - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public long getSalary() { - return salary; - } - - public void setSalary(long salary) { - this.salary = salary; - } - // $example on:typed_custom_aggregation$ - } - - public static class Average implements Serializable { - private long sum; - private long count; - - // Constructors, getters, setters... - // $example off:typed_custom_aggregation$ - public Average() { - } - - public Average(long sum, long count) { - this.sum = sum; - this.count = count; - } - - public long getSum() { - return sum; - } - - public void setSum(long sum) { - this.sum = sum; - } - - public long getCount() { - return count; - } - - public void setCount(long count) { - this.count = count; - } - // $example on:typed_custom_aggregation$ - } - - public static class MyAverage extends Aggregator { - // A zero value for this aggregation. Should satisfy the property that any b + zero = b - public Average zero() { - return new Average(0L, 0L); - } - // Combine two values to produce a new value. For performance, the function may modify `buffer` - // and return it instead of constructing a new object - public Average reduce(Average buffer, Employee employee) { - long newSum = buffer.getSum() + employee.getSalary(); - long newCount = buffer.getCount() + 1; - buffer.setSum(newSum); - buffer.setCount(newCount); - return buffer; - } - // Merge two intermediate values - public Average merge(Average b1, Average b2) { - long mergedSum = b1.getSum() + b2.getSum(); - long mergedCount = b1.getCount() + b2.getCount(); - b1.setSum(mergedSum); - b1.setCount(mergedCount); - return b1; - } - // Transform the output of the reduction - public Double finish(Average reduction) { - return ((double) reduction.getSum()) / reduction.getCount(); - } - // Specifies the Encoder for the intermediate value type - public Encoder bufferEncoder() { - return Encoders.bean(Average.class); - } - // Specifies the Encoder for the final output value type - public Encoder outputEncoder() { - return Encoders.DOUBLE(); - } - } - // $example off:typed_custom_aggregation$ - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("Java Spark SQL user-defined Datasets aggregation example") - .getOrCreate(); - - // $example on:typed_custom_aggregation$ - Encoder employeeEncoder = Encoders.bean(Employee.class); - String path = "examples/src/main/resources/employees.json"; - Dataset ds = spark.read().json(path).as(employeeEncoder); - ds.show(); - // +-------+------+ - // | name|salary| - // +-------+------+ - // |Michael| 3000| - // | Andy| 4500| - // | Justin| 3500| - // | Berta| 4000| - // +-------+------+ - - MyAverage myAverage = new MyAverage(); - // Convert the function to a `TypedColumn` and give it a name - TypedColumn averageSalary = myAverage.toColumn().name("average_salary"); - Dataset result = ds.select(averageSalary); - result.show(); - // +--------------+ - // |average_salary| - // +--------------+ - // | 3750.0| - // +--------------+ - // $example off:typed_custom_aggregation$ - spark.stop(); - } - -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedUntypedAggregation.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedUntypedAggregation.java deleted file mode 100644 index 6da60a1..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/JavaUserDefinedUntypedAggregation.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql; - -// $example on:untyped_custom_aggregation$ -import java.util.ArrayList; -import java.util.List; - -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.expressions.MutableAggregationBuffer; -import org.apache.spark.sql.expressions.UserDefinedAggregateFunction; -import org.apache.spark.sql.types.DataType; -import org.apache.spark.sql.types.DataTypes; -import org.apache.spark.sql.types.StructField; -import org.apache.spark.sql.types.StructType; -// $example off:untyped_custom_aggregation$ - -public class JavaUserDefinedUntypedAggregation { - - // $example on:untyped_custom_aggregation$ - public static class MyAverage extends UserDefinedAggregateFunction { - - private StructType inputSchema; - private StructType bufferSchema; - - public MyAverage() { - List inputFields = new ArrayList<>(); - inputFields.add(DataTypes.createStructField("inputColumn", DataTypes.LongType, true)); - inputSchema = DataTypes.createStructType(inputFields); - - List bufferFields = new ArrayList<>(); - bufferFields.add(DataTypes.createStructField("sum", DataTypes.LongType, true)); - bufferFields.add(DataTypes.createStructField("count", DataTypes.LongType, true)); - bufferSchema = DataTypes.createStructType(bufferFields); - } - // Data types of input arguments of this aggregate function - public StructType inputSchema() { - return inputSchema; - } - // Data types of values in the aggregation buffer - public StructType bufferSchema() { - return bufferSchema; - } - // The data type of the returned value - public DataType dataType() { - return DataTypes.DoubleType; - } - // Whether this function always returns the same output on the identical input - public boolean deterministic() { - return true; - } - // Initializes the given aggregation buffer. The buffer itself is a `Row` that in addition to - // standard methods like retrieving a value at an index (e.g., get(), getBoolean()), provides - // the opportunity to update its values. Note that arrays and maps inside the buffer are still - // immutable. - public void initialize(MutableAggregationBuffer buffer) { - buffer.update(0, 0L); - buffer.update(1, 0L); - } - // Updates the given aggregation buffer `buffer` with new input data from `input` - public void update(MutableAggregationBuffer buffer, Row input) { - if (!input.isNullAt(0)) { - long updatedSum = buffer.getLong(0) + input.getLong(0); - long updatedCount = buffer.getLong(1) + 1; - buffer.update(0, updatedSum); - buffer.update(1, updatedCount); - } - } - // Merges two aggregation buffers and stores the updated buffer values back to `buffer1` - public void merge(MutableAggregationBuffer buffer1, Row buffer2) { - long mergedSum = buffer1.getLong(0) + buffer2.getLong(0); - long mergedCount = buffer1.getLong(1) + buffer2.getLong(1); - buffer1.update(0, mergedSum); - buffer1.update(1, mergedCount); - } - // Calculates the final result - public Double evaluate(Row buffer) { - return ((double) buffer.getLong(0)) / buffer.getLong(1); - } - } - // $example off:untyped_custom_aggregation$ - - public static void main(String[] args) { - SparkSession spark = SparkSession - .builder() - .appName("Java Spark SQL user-defined DataFrames aggregation example") - .getOrCreate(); - - // $example on:untyped_custom_aggregation$ - // Register the function to access it - spark.udf().register("myAverage", new MyAverage()); - - Dataset df = spark.read().json("examples/src/main/resources/employees.json"); - df.createOrReplaceTempView("employees"); - df.show(); - // +-------+------+ - // | name|salary| - // +-------+------+ - // |Michael| 3000| - // | Andy| 4500| - // | Justin| 3500| - // | Berta| 4000| - // +-------+------+ - - Dataset result = spark.sql("SELECT myAverage(salary) as average_salary FROM employees"); - result.show(); - // +--------------+ - // |average_salary| - // +--------------+ - // | 3750.0| - // +--------------+ - // $example off:untyped_custom_aggregation$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/hive/JavaSparkHiveExample.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/hive/JavaSparkHiveExample.java deleted file mode 100644 index 575a463..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/hive/JavaSparkHiveExample.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql.hive; - -// $example on:spark_hive$ -import java.io.File; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import org.apache.spark.api.java.function.MapFunction; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Encoders; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -// $example off:spark_hive$ - -public class JavaSparkHiveExample { - - // $example on:spark_hive$ - public static class Record implements Serializable { - private int key; - private String value; - - public int getKey() { - return key; - } - - public void setKey(int key) { - this.key = key; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - } - // $example off:spark_hive$ - - public static void main(String[] args) { - // $example on:spark_hive$ - // warehouseLocation points to the default location for managed databases and tables - String warehouseLocation = new File("spark-warehouse").getAbsolutePath(); - SparkSession spark = SparkSession - .builder() - .appName("Java Spark Hive Example") - .config("spark.sql.warehouse.dir", warehouseLocation) - .enableHiveSupport() - .getOrCreate(); - - spark.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING) USING hive"); - spark.sql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src"); - - // Queries are expressed in HiveQL - spark.sql("SELECT * FROM src").show(); - // +---+-------+ - // |key| value| - // +---+-------+ - // |238|val_238| - // | 86| val_86| - // |311|val_311| - // ... - - // Aggregation queries are also supported. - spark.sql("SELECT COUNT(*) FROM src").show(); - // +--------+ - // |count(1)| - // +--------+ - // | 500 | - // +--------+ - - // The results of SQL queries are themselves DataFrames and support all normal functions. - Dataset sqlDF = spark.sql("SELECT key, value FROM src WHERE key < 10 ORDER BY key"); - - // The items in DataFrames are of type Row, which lets you to access each column by ordinal. - Dataset stringsDS = sqlDF.map( - (MapFunction) row -> "Key: " + row.get(0) + ", Value: " + row.get(1), - Encoders.STRING()); - stringsDS.show(); - // +--------------------+ - // | value| - // +--------------------+ - // |Key: 0, Value: val_0| - // |Key: 0, Value: val_0| - // |Key: 0, Value: val_0| - // ... - - // You can also use DataFrames to create temporary views within a SparkSession. - List records = new ArrayList<>(); - for (int key = 1; key < 100; key++) { - Record record = new Record(); - record.setKey(key); - record.setValue("val_" + key); - records.add(record); - } - Dataset recordsDF = spark.createDataFrame(records, Record.class); - recordsDF.createOrReplaceTempView("records"); - - // Queries can then join DataFrames data with data stored in Hive. - spark.sql("SELECT * FROM records r JOIN src s ON r.key = s.key").show(); - // +---+------+---+------+ - // |key| value|key| value| - // +---+------+---+------+ - // | 2| val_2| 2| val_2| - // | 2| val_2| 2| val_2| - // | 4| val_4| 4| val_4| - // ... - // $example off:spark_hive$ - - spark.stop(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredKafkaWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredKafkaWordCount.java deleted file mode 100644 index 4e02719..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredKafkaWordCount.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.sql.streaming; - -import org.apache.spark.api.java.function.FlatMapFunction; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Encoders; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.streaming.StreamingQuery; - -import java.util.Arrays; - -/** - * Consumes messages from one or more topics in Kafka and does wordcount. - * Usage: JavaStructuredKafkaWordCount - * The Kafka "bootstrap.servers" configuration. A - * comma-separated list of host:port. - * There are three kinds of type, i.e. 'assign', 'subscribe', - * 'subscribePattern'. - * |- Specific TopicPartitions to consume. Json string - * | {"topicA":[0,1],"topicB":[2,4]}. - * |- The topic list to subscribe. A comma-separated list of - * | topics. - * |- The pattern used to subscribe to topic(s). - * | Java regex string. - * |- Only one of "assign, "subscribe" or "subscribePattern" options can be - * | specified for Kafka source. - * Different value format depends on the value of 'subscribe-type'. - * - * Example: - * `$ bin/run-example \ - * sql.streaming.JavaStructuredKafkaWordCount host1:port1,host2:port2 \ - * subscribe topic1,topic2` - */ -public final class JavaStructuredKafkaWordCount { - - public static void main(String[] args) throws Exception { - if (args.length < 3) { - System.err.println("Usage: JavaStructuredKafkaWordCount " + - " "); - System.exit(1); - } - - String bootstrapServers = args[0]; - String subscribeType = args[1]; - String topics = args[2]; - - SparkSession spark = SparkSession - .builder() - .appName("JavaStructuredKafkaWordCount") - .getOrCreate(); - - // Create DataSet representing the stream of input lines from kafka - Dataset lines = spark - .readStream() - .format("kafka") - .option("kafka.bootstrap.servers", bootstrapServers) - .option(subscribeType, topics) - .load() - .selectExpr("CAST(value AS STRING)") - .as(Encoders.STRING()); - - // Generate running word count - Dataset wordCounts = lines.flatMap( - (FlatMapFunction) x -> Arrays.asList(x.split(" ")).iterator(), - Encoders.STRING()).groupBy("value").count(); - - // Start running the query that prints the running counts to the console - StreamingQuery query = wordCounts.writeStream() - .outputMode("complete") - .format("console") - .start(); - - query.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCount.java deleted file mode 100644 index 3af7869..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCount.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql.streaming; - -import org.apache.spark.api.java.function.FlatMapFunction; -import org.apache.spark.sql.*; -import org.apache.spark.sql.streaming.StreamingQuery; - -import java.util.Arrays; - -/** - * Counts words in UTF8 encoded, '\n' delimited text received from the network. - * - * Usage: JavaStructuredNetworkWordCount - * and describe the TCP server that Structured Streaming - * would connect to receive data. - * - * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example sql.streaming.JavaStructuredNetworkWordCount - * localhost 9999` - */ -public final class JavaStructuredNetworkWordCount { - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaStructuredNetworkWordCount "); - System.exit(1); - } - - String host = args[0]; - int port = Integer.parseInt(args[1]); - - SparkSession spark = SparkSession - .builder() - .appName("JavaStructuredNetworkWordCount") - .getOrCreate(); - - // Create DataFrame representing the stream of input lines from connection to host:port - Dataset lines = spark - .readStream() - .format("socket") - .option("host", host) - .option("port", port) - .load(); - - // Split the lines into words - Dataset words = lines.as(Encoders.STRING()).flatMap( - (FlatMapFunction) x -> Arrays.asList(x.split(" ")).iterator(), - Encoders.STRING()); - - // Generate running word count - Dataset wordCounts = words.groupBy("value").count(); - - // Start running the query that prints the running counts to the console - StreamingQuery query = wordCounts.writeStream() - .outputMode("complete") - .format("console") - .start(); - - query.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCountWindowed.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCountWindowed.java deleted file mode 100644 index 93ec5e2..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredNetworkWordCountWindowed.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql.streaming; - -import org.apache.spark.api.java.function.FlatMapFunction; -import org.apache.spark.sql.*; -import org.apache.spark.sql.streaming.StreamingQuery; -import scala.Tuple2; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; - -/** - * Counts words in UTF8 encoded, '\n' delimited text received from the network over a - * sliding window of configurable duration. Each line from the network is tagged - * with a timestamp that is used to determine the windows into which it falls. - * - * Usage: JavaStructuredNetworkWordCountWindowed - * [] - * and describe the TCP server that Structured Streaming - * would connect to receive data. - * gives the size of window, specified as integer number of seconds - * gives the amount of time successive windows are offset from one another, - * given in the same units as above. should be less than or equal to - * . If the two are equal, successive windows have no overlap. If - * is not provided, it defaults to . - * - * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example sql.streaming.JavaStructuredNetworkWordCountWindowed - * localhost 9999 []` - * - * One recommended , pair is 10, 5 - */ -public final class JavaStructuredNetworkWordCountWindowed { - - public static void main(String[] args) throws Exception { - if (args.length < 3) { - System.err.println("Usage: JavaStructuredNetworkWordCountWindowed " + - " []"); - System.exit(1); - } - - String host = args[0]; - int port = Integer.parseInt(args[1]); - int windowSize = Integer.parseInt(args[2]); - int slideSize = (args.length == 3) ? windowSize : Integer.parseInt(args[3]); - if (slideSize > windowSize) { - System.err.println(" must be less than or equal to "); - } - String windowDuration = windowSize + " seconds"; - String slideDuration = slideSize + " seconds"; - - SparkSession spark = SparkSession - .builder() - .appName("JavaStructuredNetworkWordCountWindowed") - .getOrCreate(); - - // Create DataFrame representing the stream of input lines from connection to host:port - Dataset lines = spark - .readStream() - .format("socket") - .option("host", host) - .option("port", port) - .option("includeTimestamp", true) - .load(); - - // Split the lines into words, retaining timestamps - Dataset words = lines - .as(Encoders.tuple(Encoders.STRING(), Encoders.TIMESTAMP())) - .flatMap((FlatMapFunction, Tuple2>) t -> { - List> result = new ArrayList<>(); - for (String word : t._1.split(" ")) { - result.add(new Tuple2<>(word, t._2)); - } - return result.iterator(); - }, - Encoders.tuple(Encoders.STRING(), Encoders.TIMESTAMP()) - ).toDF("word", "timestamp"); - - // Group the data by window and word and compute the count of each group - Dataset windowedCounts = words.groupBy( - functions.window(words.col("timestamp"), windowDuration, slideDuration), - words.col("word") - ).count().orderBy("window"); - - // Start running the query that prints the windowed word counts to the console - StreamingQuery query = windowedCounts.writeStream() - .outputMode("complete") - .format("console") - .option("truncate", "false") - .start(); - - query.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredSessionization.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredSessionization.java deleted file mode 100644 index 6b8e655..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/sql/streaming/JavaStructuredSessionization.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.spark.examples.sql.streaming; - -import org.apache.spark.api.java.function.FlatMapFunction; -import org.apache.spark.api.java.function.MapFunction; -import org.apache.spark.api.java.function.MapGroupsWithStateFunction; -import org.apache.spark.sql.*; -import org.apache.spark.sql.streaming.GroupState; -import org.apache.spark.sql.streaming.GroupStateTimeout; -import org.apache.spark.sql.streaming.StreamingQuery; - -import java.io.Serializable; -import java.sql.Timestamp; -import java.util.*; - -/** - * Counts words in UTF8 encoded, '\n' delimited text received from the network. - *

- * Usage: JavaStructuredNetworkWordCount - * and describe the TCP server that Structured Streaming - * would connect to receive data. - *

- * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example sql.streaming.JavaStructuredSessionization - * localhost 9999` - */ -public final class JavaStructuredSessionization { - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaStructuredSessionization "); - System.exit(1); - } - - String host = args[0]; - int port = Integer.parseInt(args[1]); - - SparkSession spark = SparkSession - .builder() - .appName("JavaStructuredSessionization") - .getOrCreate(); - - // Create DataFrame representing the stream of input lines from connection to host:port - Dataset lines = spark - .readStream() - .format("socket") - .option("host", host) - .option("port", port) - .option("includeTimestamp", true) - .load(); - - FlatMapFunction linesToEvents = - new FlatMapFunction() { - @Override - public Iterator call(LineWithTimestamp lineWithTimestamp) throws Exception { - ArrayList eventList = new ArrayList(); - for (String word : lineWithTimestamp.getLine().split(" ")) { - eventList.add(new Event(word, lineWithTimestamp.getTimestamp())); - } - return eventList.iterator(); - } - }; - - // Split the lines into words, treat words as sessionId of events - Dataset events = lines - .withColumnRenamed("value", "line") - .as(Encoders.bean(LineWithTimestamp.class)) - .flatMap(linesToEvents, Encoders.bean(Event.class)); - - // Sessionize the events. Track number of events, start and end timestamps of session, and - // and report session updates. - // - // Step 1: Define the state update function - MapGroupsWithStateFunction stateUpdateFunc = - new MapGroupsWithStateFunction() { - @Override public SessionUpdate call( - String sessionId, Iterator events, GroupState state) - throws Exception { - // If timed out, then remove session and send final update - if (state.hasTimedOut()) { - SessionUpdate finalUpdate = new SessionUpdate( - sessionId, state.get().calculateDuration(), state.get().getNumEvents(), true); - state.remove(); - return finalUpdate; - - } else { - // Find max and min timestamps in events - long maxTimestampMs = Long.MIN_VALUE; - long minTimestampMs = Long.MAX_VALUE; - int numNewEvents = 0; - while (events.hasNext()) { - Event e = events.next(); - long timestampMs = e.getTimestamp().getTime(); - maxTimestampMs = Math.max(timestampMs, maxTimestampMs); - minTimestampMs = Math.min(timestampMs, minTimestampMs); - numNewEvents += 1; - } - SessionInfo updatedSession = new SessionInfo(); - - // Update start and end timestamps in session - if (state.exists()) { - SessionInfo oldSession = state.get(); - updatedSession.setNumEvents(oldSession.numEvents + numNewEvents); - updatedSession.setStartTimestampMs(oldSession.startTimestampMs); - updatedSession.setEndTimestampMs(Math.max(oldSession.endTimestampMs, maxTimestampMs)); - } else { - updatedSession.setNumEvents(numNewEvents); - updatedSession.setStartTimestampMs(minTimestampMs); - updatedSession.setEndTimestampMs(maxTimestampMs); - } - state.update(updatedSession); - // Set timeout such that the session will be expired if no data received for 10 seconds - state.setTimeoutDuration("10 seconds"); - return new SessionUpdate( - sessionId, state.get().calculateDuration(), state.get().getNumEvents(), false); - } - } - }; - - // Step 2: Apply the state update function to the events streaming Dataset grouped by sessionId - Dataset sessionUpdates = events - .groupByKey( - new MapFunction() { - @Override public String call(Event event) throws Exception { - return event.getSessionId(); - } - }, Encoders.STRING()) - .mapGroupsWithState( - stateUpdateFunc, - Encoders.bean(SessionInfo.class), - Encoders.bean(SessionUpdate.class), - GroupStateTimeout.ProcessingTimeTimeout()); - - // Start running the query that prints the session updates to the console - StreamingQuery query = sessionUpdates - .writeStream() - .outputMode("update") - .format("console") - .start(); - - query.awaitTermination(); - } - - /** - * User-defined data type representing the raw lines with timestamps. - */ - public static class LineWithTimestamp implements Serializable { - private String line; - private Timestamp timestamp; - - public Timestamp getTimestamp() { return timestamp; } - public void setTimestamp(Timestamp timestamp) { this.timestamp = timestamp; } - - public String getLine() { return line; } - public void setLine(String sessionId) { this.line = sessionId; } - } - - /** - * User-defined data type representing the input events - */ - public static class Event implements Serializable { - private String sessionId; - private Timestamp timestamp; - - public Event() { } - public Event(String sessionId, Timestamp timestamp) { - this.sessionId = sessionId; - this.timestamp = timestamp; - } - - public Timestamp getTimestamp() { return timestamp; } - public void setTimestamp(Timestamp timestamp) { this.timestamp = timestamp; } - - public String getSessionId() { return sessionId; } - public void setSessionId(String sessionId) { this.sessionId = sessionId; } - } - - /** - * User-defined data type for storing a session information as state in mapGroupsWithState. - */ - public static class SessionInfo implements Serializable { - private int numEvents = 0; - private long startTimestampMs = -1; - private long endTimestampMs = -1; - - public int getNumEvents() { return numEvents; } - public void setNumEvents(int numEvents) { this.numEvents = numEvents; } - - public long getStartTimestampMs() { return startTimestampMs; } - public void setStartTimestampMs(long startTimestampMs) { - this.startTimestampMs = startTimestampMs; - } - - public long getEndTimestampMs() { return endTimestampMs; } - public void setEndTimestampMs(long endTimestampMs) { this.endTimestampMs = endTimestampMs; } - - public long calculateDuration() { return endTimestampMs - startTimestampMs; } - - @Override public String toString() { - return "SessionInfo(numEvents = " + numEvents + - ", timestamps = " + startTimestampMs + " to " + endTimestampMs + ")"; - } - } - - /** - * User-defined data type representing the update information returned by mapGroupsWithState. - */ - public static class SessionUpdate implements Serializable { - private String id; - private long durationMs; - private int numEvents; - private boolean expired; - - public SessionUpdate() { } - - public SessionUpdate(String id, long durationMs, int numEvents, boolean expired) { - this.id = id; - this.durationMs = durationMs; - this.numEvents = numEvents; - this.expired = expired; - } - - public String getId() { return id; } - public void setId(String id) { this.id = id; } - - public long getDurationMs() { return durationMs; } - public void setDurationMs(long durationMs) { this.durationMs = durationMs; } - - public int getNumEvents() { return numEvents; } - public void setNumEvents(int numEvents) { this.numEvents = numEvents; } - - public boolean isExpired() { return expired; } - public void setExpired(boolean expired) { this.expired = expired; } - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaCustomReceiver.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaCustomReceiver.java deleted file mode 100644 index 47692ec..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaCustomReceiver.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import com.google.common.io.Closeables; - -import org.apache.spark.SparkConf; -import org.apache.spark.storage.StorageLevel; -import org.apache.spark.streaming.Duration; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaPairDStream; -import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; -import org.apache.spark.streaming.receiver.Receiver; -import scala.Tuple2; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.net.ConnectException; -import java.net.Socket; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.regex.Pattern; - -/** - * Custom Receiver that receives data over a socket. Received bytes is interpreted as - * text and \n delimited lines are considered as records. They are then counted and printed. - * - * Usage: JavaCustomReceiver - * is the Spark master URL. In local mode, should be 'local[n]' with n > 1. - * and of the TCP server that Spark Streaming would connect to receive data. - * - * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example org.apache.spark.examples.streaming.JavaCustomReceiver localhost 9999` - */ - -public class JavaCustomReceiver extends Receiver { - private static final Pattern SPACE = Pattern.compile(" "); - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaCustomReceiver "); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - - // Create the context with a 1 second batch size - SparkConf sparkConf = new SparkConf().setAppName("JavaCustomReceiver"); - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, new Duration(1000)); - - // Create an input stream with the custom receiver on target ip:port and count the - // words in input stream of \n delimited text (eg. generated by 'nc') - JavaReceiverInputDStream lines = ssc.receiverStream( - new JavaCustomReceiver(args[0], Integer.parseInt(args[1]))); - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - JavaPairDStream wordCounts = words.mapToPair(s -> new Tuple2<>(s, 1)) - .reduceByKey((i1, i2) -> i1 + i2); - - wordCounts.print(); - ssc.start(); - ssc.awaitTermination(); - } - - // ============= Receiver code that receives data over a socket ============== - - String host = null; - int port = -1; - - public JavaCustomReceiver(String host_ , int port_) { - super(StorageLevel.MEMORY_AND_DISK_2()); - host = host_; - port = port_; - } - - @Override - public void onStart() { - // Start the thread that receives data over a connection - new Thread(this::receive).start(); - } - - @Override - public void onStop() { - // There is nothing much to do as the thread calling receive() - // is designed to stop by itself isStopped() returns false - } - - /** Create a socket connection and receive data until receiver is stopped */ - private void receive() { - try { - Socket socket = null; - BufferedReader reader = null; - try { - // connect to the server - socket = new Socket(host, port); - reader = new BufferedReader( - new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); - // Until stopped or connection broken continue reading - String userInput; - while (!isStopped() && (userInput = reader.readLine()) != null) { - System.out.println("Received data '" + userInput + "'"); - store(userInput); - } - } finally { - Closeables.close(reader, /* swallowIOException = */ true); - Closeables.close(socket, /* swallowIOException = */ true); - } - // Restart in an attempt to connect again when server is active again - restart("Trying to connect again"); - } catch(ConnectException ce) { - // restart if could not connect to server - restart("Could not connect", ce); - } catch(Throwable t) { - restart("Error receiving data", t); - } - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaDirectKafkaWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaDirectKafkaWordCount.java deleted file mode 100644 index 5e5ae62..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaDirectKafkaWordCount.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Arrays; -import java.util.Map; -import java.util.Set; -import java.util.regex.Pattern; - -import scala.Tuple2; - -import kafka.serializer.StringDecoder; - -import org.apache.spark.SparkConf; -import org.apache.spark.streaming.api.java.*; -import org.apache.spark.streaming.kafka.KafkaUtils; -import org.apache.spark.streaming.Durations; - -/** - * Consumes messages from one or more topics in Kafka and does wordcount. - * Usage: JavaDirectKafkaWordCount - * is a list of one or more Kafka brokers - * is a list of one or more kafka topics to consume from - * - * Example: - * $ bin/run-example streaming.JavaDirectKafkaWordCount broker1-host:port,broker2-host:port \ - * topic1,topic2 - */ - -public final class JavaDirectKafkaWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaDirectKafkaWordCount \n" + - " is a list of one or more Kafka brokers\n" + - " is a list of one or more kafka topics to consume from\n\n"); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - - String brokers = args[0]; - String topics = args[1]; - - // Create context with a 2 seconds batch interval - SparkConf sparkConf = new SparkConf().setAppName("JavaDirectKafkaWordCount"); - JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, Durations.seconds(2)); - - Set topicsSet = new HashSet<>(Arrays.asList(topics.split(","))); - Map kafkaParams = new HashMap<>(); - kafkaParams.put("metadata.broker.list", brokers); - - // Create direct kafka stream with brokers and topics - JavaPairInputDStream messages = KafkaUtils.createDirectStream( - jssc, - String.class, - String.class, - StringDecoder.class, - StringDecoder.class, - kafkaParams, - topicsSet - ); - - // Get the lines, split them into words, count the words and print - JavaDStream lines = messages.map(Tuple2::_2); - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - JavaPairDStream wordCounts = words.mapToPair(s -> new Tuple2<>(s, 1)) - .reduceByKey((i1, i2) -> i1 + i2); - wordCounts.print(); - - // Start the computation - jssc.start(); - jssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java deleted file mode 100644 index 0c65104..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import org.apache.spark.SparkConf; -import org.apache.spark.streaming.*; -import org.apache.spark.streaming.api.java.*; -import org.apache.spark.streaming.flume.FlumeUtils; -import org.apache.spark.streaming.flume.SparkFlumeEvent; - -/** - * Produces a count of events received from Flume. - * - * This should be used in conjunction with an AvroSink in Flume. It will start - * an Avro server on at the request host:port address and listen for requests. - * Your Flume AvroSink should be pointed to this address. - * - * Usage: JavaFlumeEventCount - * is the host the Flume receiver will be started on - a receiver - * creates a server and listens for flume events. - * is the port the Flume receiver will listen on. - * - * To run this example: - * `$ bin/run-example org.apache.spark.examples.streaming.JavaFlumeEventCount ` - */ -public final class JavaFlumeEventCount { - private JavaFlumeEventCount() { - } - - public static void main(String[] args) throws Exception { - if (args.length != 2) { - System.err.println("Usage: JavaFlumeEventCount "); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - - String host = args[0]; - int port = Integer.parseInt(args[1]); - - Duration batchInterval = new Duration(2000); - SparkConf sparkConf = new SparkConf().setAppName("JavaFlumeEventCount"); - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, batchInterval); - JavaReceiverInputDStream flumeStream = - FlumeUtils.createStream(ssc, host, port); - - flumeStream.count(); - - flumeStream.count().map(in -> "Received " + in + " flume events.").print(); - - ssc.start(); - ssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaKafkaWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaKafkaWordCount.java deleted file mode 100644 index ce5acdc..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaKafkaWordCount.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import java.util.regex.Pattern; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.streaming.Duration; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaPairDStream; -import org.apache.spark.streaming.api.java.JavaPairReceiverInputDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; -import org.apache.spark.streaming.kafka.KafkaUtils; - -/** - * Consumes messages from one or more topics in Kafka and does wordcount. - * - * Usage: JavaKafkaWordCount - * is a list of one or more zookeeper servers that make quorum - * is the name of kafka consumer group - * is a list of one or more kafka topics to consume from - * is the number of threads the kafka consumer should use - * - * To run this example: - * `$ bin/run-example org.apache.spark.examples.streaming.JavaKafkaWordCount zoo01,zoo02, \ - * zoo03 my-consumer-group topic1,topic2 1` - */ - -public final class JavaKafkaWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - private JavaKafkaWordCount() { - } - - public static void main(String[] args) throws Exception { - if (args.length < 4) { - System.err.println("Usage: JavaKafkaWordCount "); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - SparkConf sparkConf = new SparkConf().setAppName("JavaKafkaWordCount"); - // Create the context with 2 seconds batch size - JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, new Duration(2000)); - - int numThreads = Integer.parseInt(args[3]); - Map topicMap = new HashMap<>(); - String[] topics = args[2].split(","); - for (String topic: topics) { - topicMap.put(topic, numThreads); - } - - JavaPairReceiverInputDStream messages = - KafkaUtils.createStream(jssc, args[0], args[1], topicMap); - - JavaDStream lines = messages.map(Tuple2::_2); - - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - - JavaPairDStream wordCounts = words.mapToPair(s -> new Tuple2<>(s, 1)) - .reduceByKey((i1, i2) -> i1 + i2); - - wordCounts.print(); - jssc.start(); - jssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java deleted file mode 100644 index b217672..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaNetworkWordCount.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.util.Arrays; -import java.util.regex.Pattern; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.StorageLevels; -import org.apache.spark.streaming.Durations; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaPairDStream; -import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; - -/** - * Counts words in UTF8 encoded, '\n' delimited text received from the network every second. - * - * Usage: JavaNetworkWordCount - * and describe the TCP server that Spark Streaming would connect to receive data. - * - * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example org.apache.spark.examples.streaming.JavaNetworkWordCount localhost 9999` - */ -public final class JavaNetworkWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaNetworkWordCount "); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - - // Create the context with a 1 second batch size - SparkConf sparkConf = new SparkConf().setAppName("JavaNetworkWordCount"); - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1)); - - // Create a JavaReceiverInputDStream on target ip:port and count the - // words in input stream of \n delimited text (eg. generated by 'nc') - // Note that no duplication in storage level only for running locally. - // Replication necessary in distributed scenario for fault tolerance. - JavaReceiverInputDStream lines = ssc.socketTextStream( - args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER); - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - JavaPairDStream wordCounts = words.mapToPair(s -> new Tuple2<>(s, 1)) - .reduceByKey((i1, i2) -> i1 + i2); - - wordCounts.print(); - ssc.start(); - ssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaQueueStream.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaQueueStream.java deleted file mode 100644 index e86f8ab..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaQueueStream.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.streaming.Duration; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaPairDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; - -public final class JavaQueueStream { - private JavaQueueStream() { - } - - public static void main(String[] args) throws Exception { - - StreamingExamples.setStreamingLogLevels(); - SparkConf sparkConf = new SparkConf().setAppName("JavaQueueStream"); - - // Create the context - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, new Duration(1000)); - - // Create the queue through which RDDs can be pushed to - // a QueueInputDStream - - // Create and push some RDDs into the queue - List list = new ArrayList<>(); - for (int i = 0; i < 1000; i++) { - list.add(i); - } - - Queue> rddQueue = new LinkedList<>(); - for (int i = 0; i < 30; i++) { - rddQueue.add(ssc.sparkContext().parallelize(list)); - } - - // Create the QueueInputDStream and use it do some processing - JavaDStream inputStream = ssc.queueStream(rddQueue); - JavaPairDStream mappedStream = inputStream.mapToPair( - i -> new Tuple2<>(i % 10, 1)); - JavaPairDStream reducedStream = mappedStream.reduceByKey( - (i1, i2) -> i1 + i2); - - reducedStream.print(); - ssc.start(); - ssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecord.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecord.java deleted file mode 100644 index e63697a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecord.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -/** Java Bean class to be used with the example JavaSqlNetworkWordCount. */ -public class JavaRecord implements java.io.Serializable { - private String word; - - public String getWord() { - return word; - } - - public void setWord(String word) { - this.word = word; - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecoverableNetworkWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecoverableNetworkWordCount.java deleted file mode 100644 index 45a876d..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaRecoverableNetworkWordCount.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.io.File; -import java.nio.charset.Charset; -import java.util.Arrays; -import java.util.List; -import java.util.regex.Pattern; - -import scala.Tuple2; - -import com.google.common.io.Files; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaSparkContext; -import org.apache.spark.api.java.function.*; -import org.apache.spark.broadcast.Broadcast; -import org.apache.spark.streaming.Durations; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaPairDStream; -import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; -import org.apache.spark.util.LongAccumulator; - -/** - * Use this singleton to get or register a Broadcast variable. - */ -class JavaWordBlacklist { - - private static volatile Broadcast> instance = null; - - public static Broadcast> getInstance(JavaSparkContext jsc) { - if (instance == null) { - synchronized (JavaWordBlacklist.class) { - if (instance == null) { - List wordBlacklist = Arrays.asList("a", "b", "c"); - instance = jsc.broadcast(wordBlacklist); - } - } - } - return instance; - } -} - -/** - * Use this singleton to get or register an Accumulator. - */ -class JavaDroppedWordsCounter { - - private static volatile LongAccumulator instance = null; - - public static LongAccumulator getInstance(JavaSparkContext jsc) { - if (instance == null) { - synchronized (JavaDroppedWordsCounter.class) { - if (instance == null) { - instance = jsc.sc().longAccumulator("WordsInBlacklistCounter"); - } - } - } - return instance; - } -} - -/** - * Counts words in text encoded with UTF8 received from the network every second. This example also - * shows how to use lazily instantiated singleton instances for Accumulator and Broadcast so that - * they can be registered on driver failures. - * - * Usage: JavaRecoverableNetworkWordCount - * and describe the TCP server that Spark Streaming would connect to receive - * data. directory to HDFS-compatible file system which checkpoint data - * file to which the word counts will be appended - * - * and must be absolute paths - * - * To run this on your local machine, you need to first run a Netcat server - * - * `$ nc -lk 9999` - * - * and run the example as - * - * `$ ./bin/run-example org.apache.spark.examples.streaming.JavaRecoverableNetworkWordCount \ - * localhost 9999 ~/checkpoint/ ~/out` - * - * If the directory ~/checkpoint/ does not exist (e.g. running for the first time), it will create - * a new StreamingContext (will print "Creating new context" to the console). Otherwise, if - * checkpoint data exists in ~/checkpoint/, then it will create StreamingContext from - * the checkpoint data. - * - * Refer to the online documentation for more details. - */ -public final class JavaRecoverableNetworkWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - private static JavaStreamingContext createContext(String ip, - int port, - String checkpointDirectory, - String outputPath) { - - // If you do not see this printed, that means the StreamingContext has been loaded - // from the new checkpoint - System.out.println("Creating new context"); - File outputFile = new File(outputPath); - if (outputFile.exists()) { - outputFile.delete(); - } - SparkConf sparkConf = new SparkConf().setAppName("JavaRecoverableNetworkWordCount"); - // Create the context with a 1 second batch size - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1)); - ssc.checkpoint(checkpointDirectory); - - // Create a socket stream on target ip:port and count the - // words in input stream of \n delimited text (eg. generated by 'nc') - JavaReceiverInputDStream lines = ssc.socketTextStream(ip, port); - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - JavaPairDStream wordCounts = words.mapToPair(s -> new Tuple2<>(s, 1)) - .reduceByKey((i1, i2) -> i1 + i2); - - wordCounts.foreachRDD((rdd, time) -> { - // Get or register the blacklist Broadcast - Broadcast> blacklist = - JavaWordBlacklist.getInstance(new JavaSparkContext(rdd.context())); - // Get or register the droppedWordsCounter Accumulator - LongAccumulator droppedWordsCounter = - JavaDroppedWordsCounter.getInstance(new JavaSparkContext(rdd.context())); - // Use blacklist to drop words and use droppedWordsCounter to count them - String counts = rdd.filter(wordCount -> { - if (blacklist.value().contains(wordCount._1())) { - droppedWordsCounter.add(wordCount._2()); - return false; - } else { - return true; - } - }).collect().toString(); - String output = "Counts at time " + time + " " + counts; - System.out.println(output); - System.out.println("Dropped " + droppedWordsCounter.value() + " word(s) totally"); - System.out.println("Appending to " + outputFile.getAbsolutePath()); - Files.append(output + "\n", outputFile, Charset.defaultCharset()); - }); - - return ssc; - } - - public static void main(String[] args) throws Exception { - if (args.length != 4) { - System.err.println("You arguments were " + Arrays.asList(args)); - System.err.println( - "Usage: JavaRecoverableNetworkWordCount \n" + - " . and describe the TCP server that Spark\n" + - " Streaming would connect to receive data. directory to\n" + - " HDFS-compatible file system which checkpoint data file to which\n" + - " the word counts will be appended\n" + - "\n" + - "In local mode, should be 'local[n]' with n > 1\n" + - "Both and must be absolute paths"); - System.exit(1); - } - - String ip = args[0]; - int port = Integer.parseInt(args[1]); - String checkpointDirectory = args[2]; - String outputPath = args[3]; - - // Function to create JavaStreamingContext without any output operations - // (used to detect the new context) - Function0 createContextFunc = - () -> createContext(ip, port, checkpointDirectory, outputPath); - - JavaStreamingContext ssc = - JavaStreamingContext.getOrCreate(checkpointDirectory, createContextFunc); - ssc.start(); - ssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaSqlNetworkWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaSqlNetworkWordCount.java deleted file mode 100644 index 948d1a2..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaSqlNetworkWordCount.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.util.Arrays; -import java.util.regex.Pattern; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.JavaRDD; -import org.apache.spark.sql.Dataset; -import org.apache.spark.sql.Row; -import org.apache.spark.sql.SparkSession; -import org.apache.spark.api.java.StorageLevels; -import org.apache.spark.streaming.Durations; -import org.apache.spark.streaming.api.java.JavaDStream; -import org.apache.spark.streaming.api.java.JavaReceiverInputDStream; -import org.apache.spark.streaming.api.java.JavaStreamingContext; - -/** - * Use DataFrames and SQL to count words in UTF8 encoded, '\n' delimited text received from the - * network every second. - * - * Usage: JavaSqlNetworkWordCount - * and describe the TCP server that Spark Streaming would connect to receive data. - * - * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example org.apache.spark.examples.streaming.JavaSqlNetworkWordCount localhost 9999` - */ -public final class JavaSqlNetworkWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaNetworkWordCount "); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - - // Create the context with a 1 second batch size - SparkConf sparkConf = new SparkConf().setAppName("JavaSqlNetworkWordCount"); - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1)); - - // Create a JavaReceiverInputDStream on target ip:port and count the - // words in input stream of \n delimited text (eg. generated by 'nc') - // Note that no duplication in storage level only for running locally. - // Replication necessary in distributed scenario for fault tolerance. - JavaReceiverInputDStream lines = ssc.socketTextStream( - args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER); - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - - // Convert RDDs of the words DStream to DataFrame and run SQL query - words.foreachRDD((rdd, time) -> { - SparkSession spark = JavaSparkSessionSingleton.getInstance(rdd.context().getConf()); - - // Convert JavaRDD[String] to JavaRDD[bean class] to DataFrame - JavaRDD rowRDD = rdd.map(word -> { - JavaRecord record = new JavaRecord(); - record.setWord(word); - return record; - }); - Dataset wordsDataFrame = spark.createDataFrame(rowRDD, JavaRecord.class); - - // Creates a temporary view using the DataFrame - wordsDataFrame.createOrReplaceTempView("words"); - - // Do word count on table using SQL and print it - Dataset wordCountsDataFrame = - spark.sql("select word, count(*) as total from words group by word"); - System.out.println("========= " + time + "========="); - wordCountsDataFrame.show(); - }); - - ssc.start(); - ssc.awaitTermination(); - } -} - -/** Lazily instantiated singleton instance of SparkSession */ -class JavaSparkSessionSingleton { - private static transient SparkSession instance = null; - public static SparkSession getInstance(SparkConf sparkConf) { - if (instance == null) { - instance = SparkSession - .builder() - .config(sparkConf) - .getOrCreate(); - } - return instance; - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaStatefulNetworkWordCount.java b/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaStatefulNetworkWordCount.java deleted file mode 100644 index 9d8bd7f..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/java/org/apache/spark/examples/streaming/JavaStatefulNetworkWordCount.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ - -package org.apache.spark.examples.streaming; - -import java.util.Arrays; -import java.util.List; -import java.util.regex.Pattern; - -import scala.Tuple2; - -import org.apache.spark.SparkConf; -import org.apache.spark.api.java.function.*; -import org.apache.spark.api.java.JavaPairRDD; -import org.apache.spark.api.java.Optional; -import org.apache.spark.api.java.StorageLevels; -import org.apache.spark.streaming.Durations; -import org.apache.spark.streaming.State; -import org.apache.spark.streaming.StateSpec; -import org.apache.spark.streaming.api.java.*; - -/** - * Counts words cumulatively in UTF8 encoded, '\n' delimited text received from the network every - * second starting with initial value of word count. - * Usage: JavaStatefulNetworkWordCount - * and describe the TCP server that Spark Streaming would connect to receive - * data. - *

- * To run this on your local machine, you need to first run a Netcat server - * `$ nc -lk 9999` - * and then run the example - * `$ bin/run-example - * org.apache.spark.examples.streaming.JavaStatefulNetworkWordCount localhost 9999` - */ -public class JavaStatefulNetworkWordCount { - private static final Pattern SPACE = Pattern.compile(" "); - - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.err.println("Usage: JavaStatefulNetworkWordCount "); - System.exit(1); - } - - StreamingExamples.setStreamingLogLevels(); - - // Create the context with a 1 second batch size - SparkConf sparkConf = new SparkConf().setAppName("JavaStatefulNetworkWordCount"); - JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(1)); - ssc.checkpoint("."); - - // Initial state RDD input to mapWithState - @SuppressWarnings("unchecked") - List> tuples = - Arrays.asList(new Tuple2<>("hello", 1), new Tuple2<>("world", 1)); - JavaPairRDD initialRDD = ssc.sparkContext().parallelizePairs(tuples); - - JavaReceiverInputDStream lines = ssc.socketTextStream( - args[0], Integer.parseInt(args[1]), StorageLevels.MEMORY_AND_DISK_SER_2); - - JavaDStream words = lines.flatMap(x -> Arrays.asList(SPACE.split(x)).iterator()); - - JavaPairDStream wordsDstream = words.mapToPair(s -> new Tuple2<>(s, 1)); - - // Update the cumulative count function - Function3, State, Tuple2> mappingFunc = - (word, one, state) -> { - int sum = one.orElse(0) + (state.exists() ? state.get() : 0); - Tuple2 output = new Tuple2<>(word, sum); - state.update(sum); - return output; - }; - - // DStream made of get cumulative counts that get updated in every batch - JavaMapWithStateDStream> stateDstream = - wordsDstream.mapWithState(StateSpec.function(mappingFunc).initialState(initialRDD)); - - stateDstream.print(); - ssc.start(); - ssc.awaitTermination(); - } -} diff --git a/image_content/config/spark/opt/spark/examples/src/main/python/als.py b/image_content/config/spark/opt/spark/examples/src/main/python/als.py deleted file mode 100755 index 6d32418..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/python/als.py +++ /dev/null @@ -1,108 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -""" -This is an example implementation of ALS for learning how to use Spark. Please refer to -pyspark.ml.recommendation.ALS for more conventional use. - -This example requires numpy (http://www.numpy.org/) -""" -from __future__ import print_function - -import sys - -import numpy as np -from numpy.random import rand -from numpy import matrix -from pyspark.sql import SparkSession - -LAMBDA = 0.01 # regularization -np.random.seed(42) - - -def rmse(R, ms, us): - diff = R - ms * us.T - return np.sqrt(np.sum(np.power(diff, 2)) / (M * U)) - - -def update(i, mat, ratings): - uu = mat.shape[0] - ff = mat.shape[1] - - XtX = mat.T * mat - Xty = mat.T * ratings[i, :].T - - for j in range(ff): - XtX[j, j] += LAMBDA * uu - - return np.linalg.solve(XtX, Xty) - - -if __name__ == "__main__": - - """ - Usage: als [M] [U] [F] [iterations] [partitions]" - """ - - print("""WARN: This is a naive implementation of ALS and is given as an - example. Please use pyspark.ml.recommendation.ALS for more - conventional use.""", file=sys.stderr) - - spark = SparkSession\ - .builder\ - .appName("PythonALS")\ - .getOrCreate() - - sc = spark.sparkContext - - M = int(sys.argv[1]) if len(sys.argv) > 1 else 100 - U = int(sys.argv[2]) if len(sys.argv) > 2 else 500 - F = int(sys.argv[3]) if len(sys.argv) > 3 else 10 - ITERATIONS = int(sys.argv[4]) if len(sys.argv) > 4 else 5 - partitions = int(sys.argv[5]) if len(sys.argv) > 5 else 2 - - print("Running ALS with M=%d, U=%d, F=%d, iters=%d, partitions=%d\n" % - (M, U, F, ITERATIONS, partitions)) - - R = matrix(rand(M, F)) * matrix(rand(U, F).T) - ms = matrix(rand(M, F)) - us = matrix(rand(U, F)) - - Rb = sc.broadcast(R) - msb = sc.broadcast(ms) - usb = sc.broadcast(us) - - for i in range(ITERATIONS): - ms = sc.parallelize(range(M), partitions) \ - .map(lambda x: update(x, usb.value, Rb.value)) \ - .collect() - # collect() returns a list, so array ends up being - # a 3-d array, we take the first 2 dims for the matrix - ms = matrix(np.array(ms)[:, :, 0]) - msb = sc.broadcast(ms) - - us = sc.parallelize(range(U), partitions) \ - .map(lambda x: update(x, msb.value, Rb.value.T)) \ - .collect() - us = matrix(np.array(us)[:, :, 0]) - usb = sc.broadcast(us) - - error = rmse(R, ms, us) - print("Iteration %d:" % i) - print("\nRMSE: %5.4f\n" % error) - - spark.stop() diff --git a/image_content/config/spark/opt/spark/examples/src/main/python/avro_inputformat.py b/image_content/config/spark/opt/spark/examples/src/main/python/avro_inputformat.py deleted file mode 100644 index 4422f9e..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/python/avro_inputformat.py +++ /dev/null @@ -1,91 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -from __future__ import print_function - -import sys - -from functools import reduce -from pyspark.sql import SparkSession - -""" -Read data file users.avro in local Spark distro: - -$ cd $SPARK_HOME -$ ./bin/spark-submit --driver-class-path /path/to/example/jar \ -> ./examples/src/main/python/avro_inputformat.py \ -> examples/src/main/resources/users.avro -{u'favorite_color': None, u'name': u'Alyssa', u'favorite_numbers': [3, 9, 15, 20]} -{u'favorite_color': u'red', u'name': u'Ben', u'favorite_numbers': []} - -To read name and favorite_color fields only, specify the following reader schema: - -$ cat examples/src/main/resources/user.avsc -{"namespace": "example.avro", - "type": "record", - "name": "User", - "fields": [ - {"name": "name", "type": "string"}, - {"name": "favorite_color", "type": ["string", "null"]} - ] -} - -$ ./bin/spark-submit --driver-class-path /path/to/example/jar \ -> ./examples/src/main/python/avro_inputformat.py \ -> examples/src/main/resources/users.avro examples/src/main/resources/user.avsc -{u'favorite_color': None, u'name': u'Alyssa'} -{u'favorite_color': u'red', u'name': u'Ben'} -""" -if __name__ == "__main__": - if len(sys.argv) != 2 and len(sys.argv) != 3: - print(""" - Usage: avro_inputformat [reader_schema_file] - - Run with example jar: - ./bin/spark-submit --driver-class-path /path/to/example/jar \ - /path/to/examples/avro_inputformat.py [reader_schema_file] - Assumes you have Avro data stored in . Reader schema can be optionally specified - in [reader_schema_file]. - """, file=sys.stderr) - exit(-1) - - path = sys.argv[1] - - spark = SparkSession\ - .builder\ - .appName("AvroKeyInputFormat")\ - .getOrCreate() - - sc = spark.sparkContext - - conf = None - if len(sys.argv) == 3: - schema_rdd = sc.textFile(sys.argv[2], 1).collect() - conf = {"avro.schema.input.key": reduce(lambda x, y: x + y, schema_rdd)} - - avro_rdd = sc.newAPIHadoopFile( - path, - "org.apache.avro.mapreduce.AvroKeyInputFormat", - "org.apache.avro.mapred.AvroKey", - "org.apache.hadoop.io.NullWritable", - keyConverter="org.apache.spark.examples.pythonconverters.AvroWrapperToJavaConverter", - conf=conf) - output = avro_rdd.map(lambda x: x[0]).collect() - for k in output: - print(k) - - spark.stop() diff --git a/image_content/config/spark/opt/spark/examples/src/main/python/kmeans.py b/image_content/config/spark/opt/spark/examples/src/main/python/kmeans.py deleted file mode 100755 index 92e0a3a..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/python/kmeans.py +++ /dev/null @@ -1,86 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -""" -The K-means algorithm written from scratch against PySpark. In practice, -one may prefer to use the KMeans algorithm in ML, as shown in -examples/src/main/python/ml/kmeans_example.py. - -This example requires NumPy (http://www.numpy.org/). -""" -from __future__ import print_function - -import sys - -import numpy as np -from pyspark.sql import SparkSession - - -def parseVector(line): - return np.array([float(x) for x in line.split(' ')]) - - -def closestPoint(p, centers): - bestIndex = 0 - closest = float("+inf") - for i in range(len(centers)): - tempDist = np.sum((p - centers[i]) ** 2) - if tempDist < closest: - closest = tempDist - bestIndex = i - return bestIndex - - -if __name__ == "__main__": - - if len(sys.argv) != 4: - print("Usage: kmeans ", file=sys.stderr) - exit(-1) - - print("""WARN: This is a naive implementation of KMeans Clustering and is given - as an example! Please refer to examples/src/main/python/ml/kmeans_example.py for an - example on how to use ML's KMeans implementation.""", file=sys.stderr) - - spark = SparkSession\ - .builder\ - .appName("PythonKMeans")\ - .getOrCreate() - - lines = spark.read.text(sys.argv[1]).rdd.map(lambda r: r[0]) - data = lines.map(parseVector).cache() - K = int(sys.argv[2]) - convergeDist = float(sys.argv[3]) - - kPoints = data.takeSample(False, K, 1) - tempDist = 1.0 - - while tempDist > convergeDist: - closest = data.map( - lambda p: (closestPoint(p, kPoints), (p, 1))) - pointStats = closest.reduceByKey( - lambda p1_c1, p2_c2: (p1_c1[0] + p2_c2[0], p1_c1[1] + p2_c2[1])) - newPoints = pointStats.map( - lambda st: (st[0], st[1][0] / st[1][1])).collect() - - tempDist = sum(np.sum((kPoints[iK] - p) ** 2) for (iK, p) in newPoints) - - for (iK, p) in newPoints: - kPoints[iK] = p - - print("Final centers: " + str(kPoints)) - - spark.stop() diff --git a/image_content/config/spark/opt/spark/examples/src/main/python/logistic_regression.py b/image_content/config/spark/opt/spark/examples/src/main/python/logistic_regression.py deleted file mode 100755 index 01c9384..0000000 --- a/image_content/config/spark/opt/spark/examples/src/main/python/logistic_regression.py +++ /dev/null @@ -1,88 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -""" -A logistic regression implementation that uses NumPy (http://www.numpy.org) -to act on batches of input data using efficient matrix operations. - -In practice, one may prefer to use the LogisticRegression algorithm in -ML, as shown in examples/src/main/python/ml/logistic_regression_with_elastic_net.py. -""" -from __future__ import print_function - -import sys - -import numpy as np -from pyspark.sql import SparkSession - - -D = 10 # Number of dimensions - - -# Read a batch of points from the input file into a NumPy matrix object. We operate on batches to -# make further computations faster. -# The data file contains lines of the form

-[Up] -[Top] -

hoR@X{k09*Ul_DHB2wpQ|7;FJ%LRerwKh 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 D&k=w9 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-under.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-legend-under.png deleted file mode 100644 index 32845115d934b2c35d279f3919d36557cb8a61b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34314 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 r@G@S~{O^x6=7D=%5Qu`Ts!X}myWsx^YhG&t diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-options.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart-options.png deleted file mode 100644 index 117962e05ff61b61972a4e1fc5c7637d00f78935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48400 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 a;dN&68J%muz6S8Igeb_Wz>1{}0{;g*&{#JB diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart_logo_large.png b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/img/piechart_logo_large.png deleted file mode 100644 index 21b7ab40145bdd8dd7fc08bfb4612a1c37d8bf5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3723 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 diff --git a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/legend.js b/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/legend.js deleted file mode 100644 index 10d2c53..0000000 --- a/image_content/config/grafana/var/lib/grafana/plugins/grafana-piechart-panel/src/legend.js +++ /dev/null @@ -1,180 +0,0 @@ -import angular from 'angular'; -//import _ from 'lodash'; -import kbn from 'app/core/utils/kbn'; -import $ from 'jquery'; -import 'jquery.flot'; -import 'jquery.flot.time'; - -angular.module('grafana.directives').directive('piechartLegend', function(popoverSrv, $timeout) { - return { - link: function(scope, elem) { - var $container = $('