From 632e9445f3fa9016af6e3ae4dbb1216a5b49365b Mon Sep 17 00:00:00 2001 From: Zacharias Steinmetz Date: Mon, 12 Dec 2022 16:22:36 +0100 Subject: [PATCH 01/35] `as_OpenSpecy()` for v1.0 - finalized functions - added unit tests --- R/as_OpenSpecy.R | 5 +-- tests/testthat/test-as_OpenSpecy.R | 67 ++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 tests/testthat/test-as_OpenSpecy.R diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index a565ad13..b3162326 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -37,7 +37,6 @@ #' @seealso #' seealso. #' -#' @importFrom magrittr %>% #' @importFrom data.table as.data.table #' @export as_OpenSpecy <- function(x, ...) { @@ -205,6 +204,6 @@ OpenSpecy <- function(x, ...) { #' @export gen_grid <- function(x) { base <- sqrt(x) - expand.grid(x = 1:ceiling(base), y = 1:ceiling(base))[1:x,] %>% - as.data.table + expand.grid(x = 1:ceiling(base), y = 1:ceiling(base))[1:x,] |> + as.data.table() } diff --git a/tests/testthat/test-as_OpenSpecy.R b/tests/testthat/test-as_OpenSpecy.R new file mode 100644 index 00000000..293c1513 --- /dev/null +++ b/tests/testthat/test-as_OpenSpecy.R @@ -0,0 +1,67 @@ +library(data.table) + +df <- read_extdata("raman_hdpe.csv") |> read.csv() + +test_that("as_OpenSpecy() generates OpenSpecy objects", { + expect_silent(OpenSpecy(df)) + + expect_silent(osf <- as_OpenSpecy(df)) + expect_silent(ost <- data.table(df) |> as_OpenSpecy()) + expect_silent(osl <- list(df$Wavelength, df[2]) |> as_OpenSpecy()) + expect_silent(OpenSpecy(osf)) + + expect_s3_class(osf, "OpenSpecy") + expect_s3_class(ost, "OpenSpecy") + expect_s3_class(osl, "OpenSpecy") + + expect_equal(names(osf), c("wavenumber", "spectra", "metadata")) + expect_equal(names(ost), c("wavenumber", "spectra", "metadata")) + expect_equal(names(osl), c("wavenumber", "spectra", "metadata")) + + expect_equal(OpenSpecy(df), OpenSpecy(osf)) + expect_equal(ost, osf) + + expect_true(is_OpenSpecy(osf)) + expect_true(is_OpenSpecy(ost)) + expect_true(is_OpenSpecy(osl)) + expect_false(is_OpenSpecy(df)) +}) + +test_that("as_OpenSpecy() handles errors correctly", { + expect_silent(as_OpenSpecy(df$Wavelength, + as.data.frame(df$Absorbance))) + expect_error(as_OpenSpecy(df$Wavelength, + df$Absorbance)) + + expect_error(as_OpenSpecy(df$Wavelength)) + expect_error(as_OpenSpecy(as.character(df$Wavelength), + as.data.frame(df$Absorbance))) + expect_error(as_OpenSpecy(df$Wavelength, + as.data.frame(df$Absorbance[-1]))) + + expect_warning(as_OpenSpecy(data.frame(x = df$Wavelength, + abs = df$Absorbance))) + expect_warning(as_OpenSpecy(data.frame(wav = df$Wavelength, + y = df$Absorbance))) + + expect_error(as_OpenSpecy(df$Wavelength, + as.data.frame(df$Absorbance), + coords = "")) + expect_error(as_OpenSpecy(df$Wavelength, + as.data.frame(df$Absorbance), + coords = df)) + expect_error(as_OpenSpecy(df$Wavelength, + as.data.frame(df$Absorbance), + metadata = "")) +}) + +test_that("OpenSpecy objects are read correctly", { + os <- as_OpenSpecy(df) + + expect_equal(range(os$wavenumber) |> round(2), c(150.92, 2998.49)) + expect_equal(range(os$spectra) |> round(2), c(3264.21, 41238.90)) + expect_length(os$wavenumber, 1095) + expect_equal(os$metadata$x, 1) + expect_equal(os$metadata$y, 1) + expect_equal(os$metadata$license, "CC BY-NC") +}) From 47012dfa1259f23a79782695e95b7ab8a444fc85 Mon Sep 17 00:00:00 2001 From: Zacharias Steinmetz Date: Tue, 13 Dec 2022 11:12:59 +0100 Subject: [PATCH 02/35] Added metadata details from `io_spec.R` --- R/as_OpenSpecy.R | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index b3162326..a9056cda 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -18,6 +18,68 @@ #' spectral file formats so there may be bugs in the file conversion. #' Please contact us if you identify any. #' +#' The \code{metadata} argument may contain a named list with the following +#' details (\code{*} = minimum recommended): +#' +#' \tabular{ll}{ +#' \code{file_name*}: \tab The file name, defaults to +#' \code{\link[base]{basename}()} if not specified\cr +#' \code{user_name*}: \tab User name, e.g. "Win Cowger"\cr +#' \code{contact_info}: \tab Contact information, e.g. "1-513-673-8956, +#' wincowger@@gmail.com"\cr +#' \code{organization}: \tab Affiliation, e.g. "University of California, +#' Riverside"\cr +#' \code{citation}: \tab Data citation, e.g. "Primpke, S., Wirth, M., Lorenz, +#' C., & Gerdts, G. (2018). Reference database design for the automated analysis +#' of microplastic samples based on Fourier transform infrared (FTIR) +#' spectroscopy. \emph{Analytical and Bioanalytical Chemistry}. +#' \doi{10.1007/s00216-018-1156-x}"\cr +#' \code{spectrum_type*}: \tab Raman or FTIR\cr +#' \code{spectrum_identity*}: \tab Material/polymer analyzed, e.g. +#' "Polystyrene"\cr +#' \code{material_form}: \tab Form of the material analyzed, e.g. textile fiber, +#' rubber band, sphere, granule \cr +#' \code{material_phase}: \tab Phase of the material analyzed (liquid, gas, +#' solid) \cr +#' \code{material_producer}: \tab Producer of the material analyzed, +#' e.g. Dow \cr +#' \code{material_purity}: \tab Purity of the material analyzed, e.g. 99.98\% +#' \cr +#' \code{material_quality}: \tab Quality of the material analyzed, e.g. +#' consumer product, manufacturer material, analytical standard, +#' environmental sample \cr +#' \code{material_color}: \tab Color of the material analyzed, +#' e.g. blue, #0000ff, (0, 0, 255) \cr +#' \code{material_other}: \tab Other material description, e.g. 5 µm diameter +#' fibers, 1 mm spherical particles \cr +#' \code{cas_number}: \tab CAS number, e.g. 9003-53-6 \cr +#' \code{instrument_used}: \tab Instrument used, e.g. Horiba LabRam \cr +#' \code{instrument_accessories}: \tab Instrument accessories, e.g. +#' Focal Plane Array, CCD\cr +#' \code{instrument_mode}: \tab Instrument modes/settings, e.g. +#' transmission, reflectance \cr +#' \code{spectral_resolution}: \tab Spectral resolution, e.g. 4/cm \cr +#' \code{laser_light_used}: \tab Wavelength of the laser/light used, e.g. +#' 785 nm \cr +#' \code{number_of_accumulations}: \tab Number of accumulations, e.g 5 \cr +#' \code{total_acquisition_time_s}: \tab Total acquisition time (s), e.g. 10 s +#' \cr +#' \code{data_processing_procedure}: \tab Data processing procedure, +#' e.g. spikefilter, baseline correction, none \cr +#' \code{level_of_confidence_in_identification}: \tab Level of confidence in +#' identification, e.g. 99\% \cr +#' \code{other_info}: \tab Other information \cr +#' \code{license}: \tab The license of the shared spectrum; defaults to +#' \code{"CC BY-NC"} (see +#' \url{https://creativecommons.org/licenses/by-nc/4.0/} for details). Any other +#' creative commons license is allowed, for example, CC0 or CC BY \cr +#' \code{session_id}: \tab A unique user and session identifier; populated +#' automatically with \code{paste(digest(Sys.info()), digest(sessionInfo()), +#' sep = "/")}\cr +#' \code{file_id}: \tab A unique file identifier; populated automatically +#' with \code{digest(object[c("wavenumber", "spectra")])}\cr +#' } +#' #' @param x x. #' @param spectra spectra. #' @param metadata file = NULL. From 1e05906e01ec613291d5b95726cd60bdd2facfea Mon Sep 17 00:00:00 2001 From: Zacharias Steinmetz Date: Tue, 13 Dec 2022 15:26:24 +0100 Subject: [PATCH 03/35] `io_spec()` for v1.0 - finalized I/O functions for new OpenSpecy format - added test routines and sample files - updated some documentation already --- NAMESPACE | 2 - R/io_spec.R | 124 +-- R/raman_hdpe.R | 14 +- inst/extdata/raman_hdpe.json | 1 + inst/extdata/raman_hdpe.rds | Bin 0 -> 5583 bytes inst/extdata/raman_hdpe.yml | 1941 +++++++++++++++++++++++++++++++++ man/io_spec.Rd | 93 +- man/raman_hdpe.Rd | 14 +- tests/testthat/test-io_spec.R | 109 +- 9 files changed, 2044 insertions(+), 254 deletions(-) create mode 100644 inst/extdata/raman_hdpe.json create mode 100644 inst/extdata/raman_hdpe.rds create mode 100644 inst/extdata/raman_hdpe.yml diff --git a/NAMESPACE b/NAMESPACE index 48d1c961..baa42cad 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -27,7 +27,6 @@ export(adj_intens) export(adj_neg) export(adj_res) export(as_OpenSpecy) -export(c_spec) export(check_lib) export(combine_OpenSpecy) export(conform_res) @@ -65,7 +64,6 @@ importFrom(data.table,.SD) importFrom(data.table,as.data.table) importFrom(data.table,data.table) importFrom(data.table,fread) -importFrom(data.table,rbindlist) importFrom(data.table,transpose) importFrom(digest,digest) importFrom(dplyr,arrange) diff --git a/R/io_spec.R b/R/io_spec.R index 46caa480..2ae8acfc 100644 --- a/R/io_spec.R +++ b/R/io_spec.R @@ -7,92 +7,42 @@ #' or .rds. #' #' @details +#' reference to qs #' -#' The \code{metadata} argument may contain a named list with the following -#' details (\code{*} = minimum recommended): -#' -#' \tabular{ll}{ -#' \code{file_name*}: \tab The file name, defaults to -#' \code{\link[base]{basename}()} if not specified\cr -#' \code{user_name*}: \tab User name, e.g. "Win Cowger"\cr -#' \code{contact_info}: \tab Contact information, e.g. "1-513-673-8956, -#' wincowger@@gmail.com"\cr -#' \code{organization}: \tab Affiliation, e.g. "University of California, -#' Riverside"\cr -#' \code{citation}: \tab Data citation, e.g. "Primpke, S., Wirth, M., Lorenz, -#' C., & Gerdts, G. (2018). Reference database design for the automated analysis -#' of microplastic samples based on Fourier transform infrared (FTIR) -#' spectroscopy. \emph{Analytical and Bioanalytical Chemistry}. -#' \doi{10.1007/s00216-018-1156-x}"\cr -#' \code{spectrum_type*}: \tab Raman or FTIR\cr -#' \code{spectrum_identity*}: \tab Material/polymer analyzed, e.g. -#' "Polystyrene"\cr -#' \code{material_form}: \tab Form of the material analyzed, e.g. textile fiber, -#' rubber band, sphere, granule \cr -#' \code{material_phase}: \tab Phase of the material analyzed (liquid, gas, -#' solid) \cr -#' \code{material_producer}: \tab Producer of the material analyzed, -#' e.g. Dow \cr -#' \code{material_purity}: \tab Purity of the material analyzed, e.g. 99.98\% -#' \cr -#' \code{material_quality}: \tab Quality of the material analyzed, e.g. -#' consumer product, manufacturer material, analytical standard, -#' environmental sample \cr -#' \code{material_color}: \tab Color of the material analyzed, -#' e.g. blue, #0000ff, (0, 0, 255) \cr -#' \code{material_other}: \tab Other material description, e.g. 5 µm diameter -#' fibers, 1 mm spherical particles \cr -#' \code{cas_number}: \tab CAS number, e.g. 9003-53-6 \cr -#' \code{instrument_used}: \tab Instrument used, e.g. Horiba LabRam \cr -#' \code{instrument_accessories}: \tab Instrument accessories, e.g. -#' Focal Plane Array, CCD\cr -#' \code{instrument_mode}: \tab Instrument modes/settings, e.g. -#' transmission, reflectance \cr -#' \code{spectral_resolution}: \tab Spectral resolution, e.g. 4/cm \cr -#' \code{laser_light_used}: \tab Wavelength of the laser/light used, e.g. -#' 785 nm \cr -#' \code{number_of_accumulations}: \tab Number of accumulations, e.g 5 \cr -#' \code{total_acquisition_time_s}: \tab Total acquisition time (s), e.g. 10 s -#' \cr -#' \code{data_processing_procedure}: \tab Data processing procedure, -#' e.g. spikefilter, baseline correction, none \cr -#' \code{level_of_confidence_in_identification}: \tab Level of confidence in -#' identification, e.g. 99\% \cr -#' \code{other_info}: \tab Other information \cr -#' \code{license}: \tab The license of the shared spectrum; defaults to -#' \code{"CC BY-NC"} (see -#' \url{https://creativecommons.org/licenses/by-nc/4.0/} for details). Any other -#' creative commons license is allowed, for example, CC0 or CC BY \cr -#' \code{session_id}: \tab A unique user and session identifier; populated -#' automatically with \code{paste(digest(Sys.info()), digest(sessionInfo()), -#' sep = "/")}\cr -#' \code{file_id}: \tab A unique file identifier; populated automatically -#' with \code{digest(object[c("wavenumber", "spectra")])}\cr -#' } -#' -#' @param x a list object of class \code{OpenSpecy}. +#' @param x a list object of class \code{\link{OpenSpecy}}. #' @param file file to be read from or written to. #' @param share defaults to \code{NULL}; needed to share spectra with the #' Open Specy community; see \code{\link{share_spec}()} for details. #' @param method submethod to be used for reading text files; defaults to #' \code{\link[data.table]{fread}()} but \code{\link[utils]{read.csv}()} works #' as well. +#' @param digits number of significant digits to use when formatting numeric +#' values; defaults to \code{\link[base]{getOption}("digits")}. #' @param \ldots further arguments passed to the submethods. #' #' @return -#' All \code{read_*()} functions return data frames containing two columns -#' named \code{"wavenumber"} and \code{"intensity"}. +#' \code{read_spec()} returns a list object of class \code{\link{OpenSpecy}()} +#' containing spectral data. #' #' @examples -#' read_text(read_extdata("raman_hdpe.csv")) -#' read_asp(read_extdata("ftir_ldpe_soil.asp")) -#' read_opus(read_extdata("ftir_ps.0")) +#' read_spec(read_extdata("raman_hdpe.yml")) +#' read_spec(read_extdata("raman_hdpe.json")) +#' read_spec(read_extdata("raman_hdpe.rds")) +#' +#' \dontrun{ +#' write_spec(raman_hdpe, "raman_hdpe.yml") +#' write_spec(raman_hdpe, "raman_hdpe.json") +#' write_spec(raman_hdpe, "raman_hdpe.rds") +#' } #' #' @author #' Zacharias Steinmetz, Win Cowger #' #' @seealso -#' \code{\link[hyperSpec]{read.jdx}()}; \code{\link[hyperSpec]{read.spc}()}; +#' \code{\link{OpenSpecy}()} +#' \code{\link[base]{saveRDS}()}; \code{\link[base]{readRDS}()}; +#' \code{\link[yaml]{write_yaml}()}; \code{\link[yaml]{read_yaml}()}; +#' \code{\link[jsonlite]{write_json}()}; \code{\link[jsonlite]{read_json}()}; #' #' @importFrom magrittr %>% #' @importFrom data.table data.table as.data.table fread @@ -113,12 +63,14 @@ write_spec.default <- function(x, ...) { #' @importFrom yaml write_yaml #' @importFrom jsonlite write_json #' @export -write_spec.OpenSpecy <- function(x, file, method = NULL, ...) { +write_spec.OpenSpecy <- function(x, file, method = NULL, + digits = getOption("digits"), + ...) { if (is.null(method)) { if (grepl("(\\.yaml$)|(\\.yml$)", file, ignore.case = T)) { - write_yaml(x, file = file, ...) + write_yaml(x, file = file, precision = digits, ...) } else if (grepl("\\.json$", file, ignore.case = T)) { - write_json(x, path = file, dataframe = "columns", ...) + write_json(x, path = file, dataframe = "columns", digits = digits, ...) } else if (grepl("\\.rds$", file, ignore.case = T)) { saveRDS(x, file = file, ...) } else { @@ -142,15 +94,15 @@ read_spec <- function(file, share = NULL, method = NULL, ...) { os <- as_OpenSpecy(yml$wavenumber, spectra = as.data.table(yml$spectra), - coords = as.data.table(yml$coords), - metadata = as.data.table(yml$metadata)) + metadata = as.data.table(yml$metadata), + coords = NULL) } else if (grepl("\\.json$", file, ignore.case = T)) { jsn <- read_json(file, simplifyVector = T, ...) os <- as_OpenSpecy(jsn$wavenumber, spectra = as.data.table(jsn$spectra), - coords = as.data.table(jsn$coords), - metadata = as.data.table(jsn$metadata)) + metadata = as.data.table(jsn$metadata), + coords = NULL) } else if (grepl("\\.rds$", file, ignore.case = T)) { os <- readRDS(file, ...) } else { @@ -160,28 +112,10 @@ read_spec <- function(file, share = NULL, method = NULL, ...) { } else { io <- do.call(method, list(file, ...)) - os <- OpenSpecy(io) + os <- OpenSpecy(io, coords = NULL) } if (!is.null(share)) share_spec(os, file = file, share = share) return(os) } - -#' @rdname io_spec -#' -#' @importFrom data.table rbindlist -#' @export -c_spec <- function(...) { - cin <- c(...) - - lst <- tapply(cin, names(cin), FUN = function(x) unname((x))) - - as_OpenSpecy( - x = lst$wavenumber[[1]], - # TODO: Probably should add a check to make sure all the wavenumbers are - # aligned before doing this. - spectra = as.data.table(lst$spectra), - metadata = rbindlist(lst$metadata, fill = T) - ) -} diff --git a/R/raman_hdpe.R b/R/raman_hdpe.R index 60843897..5dad233d 100644 --- a/R/raman_hdpe.R +++ b/R/raman_hdpe.R @@ -1,17 +1,21 @@ #' @title Sample Raman spectrum #' #' @description -#' Raman spectrum of high-density polyethylene (HDPE). +#' Raman spectrum of high-density polyethylene (HDPE) provided by +#' Horiba Scientific. #' #' @format -#' A data table containing 964 rows and 2 columns: +#' An threepart list of class \code{\link{OpenSpecy}} containing: #' \tabular{ll}{ -#' \code{wavenumber}: \tab spectral wavenumber [1/cm] \cr -#' \code{intensity}: \tab absorbance values [-] \cr +#' \code{wavenumber}: \tab spectral wavenumbers [1/cm] (vector of 964 rows) \cr +#' \code{spectra}: \tab absorbance values [-] +#' (a \code{\link[data.table]{data.table}} with 964 rows and 1 column) \cr +#' \code{metadata}: \tab spectral metadata \cr #' } #' #' @examples -#' data("raman_hdpe") +#' data(raman_hdpe) +#' print(raman_hdpe) #' #' @author #' Win Cowger diff --git a/inst/extdata/raman_hdpe.json b/inst/extdata/raman_hdpe.json new file mode 100644 index 00000000..3b86314d --- /dev/null +++ b/inst/extdata/raman_hdpe.json @@ -0,0 +1 @@ +{"wavenumber":[301.04,304.632,308.221,311.81,315.398,318.983,322.566,326.15,329.732,333.311,336.889,340.467,344.042,347.618,351.19,354.76,358.332,361.9,365.466,369.031,372.597,376.16,379.721,383.28,386.839,390.396,393.951,397.505,401.058,404.61,408.16,411.708,415.256,418.801,422.346,425.887,429.429,432.97,436.507,440.044,443.581,447.116,450.647,454.18,457.708,461.238,464.764,468.291,471.815,475.339,478.859,482.379,485.899,489.416,492.931,496.447,499.96,503.471,506.981,510.489,513.999,517.503,521.009,524.51,528.014,531.513,535.014,538.51,542.008,545.502,548.997,552.488,555.979,559.469,562.955,566.442,569.928,573.411,576.894,580.376,583.854,587.331,590.811,594.286,597.759,601.231,604.705,608.174,611.642,615.109,618.574,622.038,625.503,628.966,632.426,635.884,639.342,642.798,646.252,649.706,653.158,656.608,660.058,663.506,666.953,670.398,673.842,677.285,680.727,684.165,687.602,691.04,694.476,697.911,701.345,704.775,708.204,711.634,715.063,718.49,721.912,725.336,728.76,732.18,735.599,739.018,742.434,745.849,749.265,752.675,756.088,759.498,762.906,766.313,769.719,773.124,776.527,779.929,783.33,786.729,790.127,793.524,796.919,800.312,803.705,807.097,810.485,813.874,817.262,820.647,824.032,827.416,830.797,834.179,837.557,840.936,844.312,847.688,851.061,854.433,857.806,861.175,864.543,867.91,871.278,874.642,878.005,881.367,884.728,888.087,891.445,894.802,898.157,901.511,904.864,908.216,911.567,914.914,918.262,921.609,924.954,928.296,931.639,934.981,938.32,941.659,944.995,948.332,951.665,954.999,958.33,961.66,964.991,968.318,971.644,974.971,978.295,981.617,984.94,988.258,991.578,994.896,998.212,1001.53,1004.84,1008.15,1011.46,1014.77,1018.08,1021.39,1024.7,1028,1031.3,1034.61,1037.91,1041.21,1044.51,1047.8,1051.1,1054.39,1057.68,1060.98,1064.27,1067.56,1070.84,1074.13,1077.42,1080.7,1083.98,1087.27,1090.55,1093.83,1097.1,1100.38,1103.65,1106.93,1110.2,1113.47,1116.74,1120.01,1123.28,1126.55,1129.81,1133.08,1136.34,1139.6,1142.86,1146.12,1149.37,1152.63,1155.89,1159.14,1162.39,1165.64,1168.89,1172.14,1175.39,1178.64,1181.88,1185.12,1188.37,1191.61,1194.85,1198.09,1201.32,1204.56,1207.79,1211.03,1214.26,1217.49,1220.72,1223.95,1227.18,1230.4,1233.63,1236.85,1240.07,1243.3,1246.52,1249.74,1252.95,1256.17,1259.38,1262.6,1265.81,1269.02,1272.23,1275.44,1278.65,1281.85,1285.06,1288.26,1291.46,1294.67,1297.87,1301.07,1304.26,1307.46,1310.66,1313.85,1317.04,1320.23,1323.42,1326.61,1329.8,1332.99,1336.17,1339.36,1342.54,1345.72,1348.9,1352.08,1355.26,1358.44,1361.61,1364.79,1367.96,1371.13,1374.3,1377.47,1380.64,1383.81,1386.97,1390.14,1393.3,1396.47,1399.63,1402.79,1405.95,1409.1,1412.26,1415.41,1418.57,1421.72,1424.87,1428.02,1431.17,1434.32,1437.47,1440.61,1443.76,1446.9,1450.04,1453.18,1456.32,1459.46,1462.59,1465.73,1468.87,1472,1475.13,1478.26,1481.4,1484.52,1487.65,1490.78,1493.9,1497.03,1500.15,1503.27,1506.39,1509.51,1512.63,1515.74,1518.86,1521.97,1525.09,1528.2,1531.31,1534.42,1537.53,1540.64,1543.74,1546.85,1549.95,1553.05,1556.16,1559.26,1562.36,1565.45,1568.55,1571.65,1574.74,1577.83,1580.92,1584.02,1587.11,1590.19,1593.28,1596.37,1599.45,1602.54,1605.62,1608.7,1611.78,1614.86,1617.94,1621.02,1624.09,1627.17,1630.24,1633.31,1636.38,1639.45,1642.52,1645.59,1648.65,1651.72,1654.78,1657.85,1660.91,1663.97,1667.03,1670.09,1673.15,1676.2,1679.26,1682.31,1685.36,1688.41,1691.46,1694.51,1697.56,1700.61,1703.65,1706.7,1709.74,1712.78,1715.83,1718.86,1721.9,1724.94,1727.98,1731.01,1734.05,1737.08,1740.11,1743.14,1746.17,1749.2,1752.23,1755.25,1758.28,1761.3,1764.33,1767.35,1770.37,1773.39,1776.41,1779.42,1782.44,1785.46,1788.47,1791.48,1794.49,1797.5,1800.51,1803.52,1806.53,1809.53,1812.54,1815.54,1818.54,1821.54,1824.55,1827.55,1830.54,1833.54,1836.54,1839.53,1842.52,1845.51,1848.51,1851.5,1854.49,1857.48,1860.46,1863.45,1866.43,1869.41,1872.4,1875.38,1878.36,1881.34,1884.32,1887.29,1890.27,1893.24,1896.22,1899.19,1902.16,1905.13,1908.1,1911.07,1914.03,1917,1919.96,1922.93,1925.89,1928.85,1931.81,1934.77,1937.43,1940.4,1943.36,1946.33,1949.3,1952.27,1955.23,1958.19,1961.16,1964.12,1967.08,1970.04,1972.99,1975.95,1978.91,1981.86,1984.82,1987.77,1990.72,1993.67,1996.62,1999.57,2002.52,2005.46,2008.41,2011.35,2014.29,2017.24,2020.18,2023.12,2026.05,2028.99,2031.93,2034.87,2037.8,2040.73,2043.66,2046.6,2049.52,2052.45,2055.38,2058.31,2061.23,2064.16,2067.08,2070,2072.93,2075.85,2078.77,2081.68,2084.6,2087.52,2090.43,2093.34,2096.26,2099.17,2102.08,2104.99,2107.9,2110.81,2113.71,2116.62,2119.52,2122.43,2125.33,2128.23,2131.13,2134.03,2136.93,2139.82,2142.72,2145.61,2148.51,2151.4,2154.29,2157.18,2160.07,2162.96,2165.85,2168.73,2171.62,2174.5,2177.39,2180.27,2183.15,2186.03,2188.91,2191.79,2194.67,2197.54,2200.42,2203.29,2206.16,2209.03,2211.9,2214.77,2217.64,2220.51,2223.38,2226.24,2229.11,2231.97,2234.83,2237.69,2240.55,2243.41,2246.27,2249.13,2251.98,2254.84,2257.69,2260.54,2263.39,2266.25,2269.1,2271.94,2274.79,2277.64,2280.49,2283.33,2286.17,2289.02,2291.86,2294.7,2297.54,2300.38,2303.21,2306.05,2308.89,2311.72,2314.55,2317.39,2320.22,2323.05,2325.88,2328.7,2331.53,2334.36,2337.18,2340.01,2342.83,2345.65,2348.47,2351.29,2354.11,2356.93,2359.75,2362.56,2365.38,2368.19,2371,2373.82,2376.63,2379.44,2382.25,2385.05,2387.86,2390.67,2393.47,2396.28,2399.08,2401.88,2404.68,2407.48,2410.28,2413.08,2415.87,2418.67,2421.46,2424.26,2427.05,2429.84,2432.63,2435.42,2438.21,2441,2443.79,2446.57,2449.36,2452.14,2454.92,2457.7,2460.48,2463.26,2466.04,2468.82,2471.6,2474.37,2477.15,2479.92,2482.69,2485.47,2488.24,2491.01,2493.77,2496.54,2499.31,2502.07,2504.84,2507.6,2510.37,2513.13,2515.89,2518.65,2521.41,2524.16,2526.92,2529.68,2532.43,2535.19,2537.94,2540.69,2543.44,2546.19,2548.94,2551.69,2554.44,2557.18,2559.93,2562.67,2565.42,2568.16,2570.9,2573.64,2576.38,2579.11,2581.85,2584.59,2587.32,2590.06,2592.79,2595.52,2598.25,2600.98,2603.72,2606.44,2609.17,2611.9,2614.62,2617.35,2620.07,2622.79,2625.51,2628.23,2630.95,2633.67,2636.39,2639.11,2641.82,2644.54,2647.25,2649.96,2652.68,2655.39,2658.1,2660.81,2663.51,2666.22,2668.93,2671.63,2674.34,2677.04,2679.74,2682.44,2685.14,2687.84,2690.54,2693.24,2695.94,2698.63,2701.33,2704.02,2706.71,2709.41,2712.1,2714.79,2717.47,2720.16,2722.85,2725.53,2728.22,2730.9,2733.59,2736.27,2738.95,2741.63,2744.31,2746.99,2749.67,2752.34,2755.02,2757.69,2760.37,2763.04,2765.71,2768.38,2771.05,2773.72,2776.39,2779.06,2781.72,2784.39,2787.05,2789.71,2792.38,2795.04,2797.7,2800.36,2803.02,2805.68,2808.33,2810.99,2813.64,2816.3,2818.95,2821.6,2824.25,2826.9,2829.55,2832.2,2834.85,2837.49,2840.14,2842.78,2845.43,2848.07,2850.71,2853.35,2855.99,2858.63,2861.27,2863.91,2866.54,2869.18,2871.81,2874.45,2877.08,2879.71,2882.34,2884.97,2887.6,2890.23,2892.86,2895.48,2898.11,2900.73,2903.35,2905.97,2908.6,2911.22,2913.84,2916.46,2919.07,2921.69,2924.31,2926.92,2929.54,2932.15,2934.76,2937.37,2939.98,2942.59,2945.2,2947.81,2950.42,2953.02,2955.63,2958.23,2960.83,2963.44,2966.04,2968.64,2971.24,2973.83,2976.43,2979.03,2981.63,2984.22,2986.81,2989.41,2992,2994.59,2997.18,2999.77,3002.36,3004.95,3007.53,3010.12,3012.7,3015.29,3017.87,3020.45,3023.04,3025.62,3028.2,3030.77,3033.35,3035.93,3038.5,3041.08,3043.65,3046.23,3048.8,3051.37,3053.94,3056.51,3059.08,3061.65,3064.21,3066.78,3069.35,3071.91,3074.47,3077.04,3079.6,3082.16,3084.72,3087.28,3089.83,3092.39,3094.95,3097.5,3100.06,3102.61,3105.16,3107.72,3110.27,3112.82,3115.37,3117.91,3120.46,3123.01,3125.56,3128.1,3130.64,3133.19,3135.73,3138.27,3140.81,3143.35,3145.89,3148.43,3150.96,3153.5,3156.03,3158.57,3161.1,3163.64,3166.17,3168.7,3171.23,3173.76,3175.3,3177.84,3180.38,3182.91,3185.45,3187.99,3190.52,3193.06,3195.59,3198.12],"spectra":{"intensity":[26,50,48,45,46,42,45,44,48,46,48,44,49,52,48,53,52,46,41,50,62,57,52,45,55,42,52,44,62,57,50,59,48,47,59,58,58,74,69,78,67,73,59,72,65,53,65,63,61,56,47,52,53,58,58,43,54,55,50,47,55,58,50,47,44,55,56,58,54,52,45,64,62,62,57,55,49,65,62,53,55,59,73,63,63,67,77,74,74,79,66,66,67,60,59,48,44,57,61,59,48,59,59,43,50,49,61,58,64,74,49,64,55,55,62,52,62,55,65,54,52,66,54,54,54,60,55,56,53,61,63,53,50,62,62,70,63,61,55,56,70,62,66,60,56,67,57,64,56,51,56,59,61,53,68,64,51,60,62,62,76,65,53,68,53,51,57,53,63,60,74,59,73,51,74,65,64,59,70,61,42,71,66,52,70,67,58,65,64,66,75,59,60,64,63,68,61,53,60,67,57,74,59,64,69,76,59,65,65,75,86,78,70,76,84,78,69,66,83,90,96,128,143,101,81,76,72,85,79,83,67,79,64,80,72,74,70,81,79,82,95,119,148,94,80,71,82,76,76,76,82,73,66,80,79,101,71,83,75,66,72,76,68,88,81,66,67,68,81,67,69,78,68,64,81,83,78,74,67,64,82,72,79,65,84,76,87,75,76,87,82,101,128,200,143,105,101,87,77,88,76,79,95,76,67,82,82,70,82,72,88,66,68,71,84,74,100,83,69,91,81,77,84,75,86,71,92,94,77,93,93,110,112,103,106,110,125,123,169,178,166,129,117,116,127,136,143,127,114,101,85,93,98,87,97,94,95,85,94,93,85,93,74,75,81,105,95,105,105,103,86,85,102,75,72,89,96,92,86,85,90,100,91,88,98,83,84,93,97,71,73,88,78,84,90,97,89,88,86,89,89,89,89,96,98,103,94,91,98,108,80,100,88,101,104,91,96,98,102,96,100,82,87,107,94,105,96,105,106,110,96,88,98,94,99,85,99,93,91,96,94,103,100,106,86,105,100,90,102,100,100,121,121,107,97,94,116,105,100,98,102,107,110,100,107,101,114,106,109,115,116,108,114,112,110,112,108,107,109,109,105,102,107,111,109,108,112,108,102,105,110,108,95,107,99,106,110,115,107,100,108,107,107,113,93,113,124,119,109,101,109,120,112,108,111,116,97,106,114,116,125,109,103,114,122,122,106,124,105,120,105,118,114,105,118,115,112,116,112,132,116,106,115,113,108,136,131,123,108,120,131,121,126,124,137,130,129,119,126,136,135,135,130,130,124,126,122,131,120,140,120,138,128,127,131,146,133,141,124,123,137,131,127,128,123,135,123,121,128,141,136,136,119,114,122,127,135,138,126,125,118,121,129,133,137,131,118,142,103,113,123,110,135,128,133,121,131,118,115,122,124,114,120,136,129,123,119,119,118,114,116,116,120,108,113,114,129,116,110,109,118,103,121,120,108,108,119,130,104,107,95,110,96,117,109,111,111,112,113,112,101,110,107,96,99,105,101,99,103,97,96,108,107,103,103,112,103,115,108,107,102,108,103,102,98,102,98,105,107,95,103,112,112,105,99,105,112,99,99,106,101,97,102,99,99,102,95,109,96,100,99,103,117,100,106,110,96,97,105,98,100,90,94,107,101,92,96,106,105,76,93,104,101,104,95,95,93,81,104,96,101,98,91,103,85,100,87,87,98,100,100,95,114,96,105,106,81,96,104,103,89,108,92,89,96,81,91,100,102,103,99,119,104,97,99,128,116,126,123,130,121,132,115,111,109,102,96,108,104,82,100,107,97,81,100,101,98,98,100,102,97,95,90,93,102,95,103,106,102,99,101,117,101,104,114,112,119,106,116,131,132,148,169,200,303,378,452,489,465,431,388,356,333,318,305,308,305,335,407,576,816,664,494,393,352,318,322,321,308,279,254,257,238,222,214,219,199,207,212,226,206,181,186,162,148,107,119,110,113,101,109,114,105,107,94,91,97,101,87,108,95,103,95,94,96,89,89,105,94,79,85,99,93,84,77,95,92,73,89,98,72,80,81,98,87,81,86,92,85,86,92,86,82,87,86,93,87,88,87,81,82,90,76,90,83,80,75,82,83,76,74,84,83,73,74,77,77,77,81,80,77,75,68,69,77,77,73,74,81,75,68,73,75,76,77,75,77,71,77,71,71,75,75,67]},"metadata":{"x":[1],"y":[1],"user_name":["Win Cowger"],"spectrum_type":["Raman"],"spectrum_identity":["HDPE"],"organization":["Horiba Scientific"],"license":["CC BY-NC"],"session_id":["5728ddde4f649fd71f6f487fc5ad8d80/dc85257201307a131e71d9ec24aaccbf"],"file_id":["cb06ce2846b119d932fb6696479a445b"]}} diff --git a/inst/extdata/raman_hdpe.rds b/inst/extdata/raman_hdpe.rds new file mode 100644 index 0000000000000000000000000000000000000000..b6766cf89fd43196aa9d08eb4ffff8d26ca374b7 GIT binary patch literal 5583 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 literal 0 HcmV?d00001 diff --git a/inst/extdata/raman_hdpe.yml b/inst/extdata/raman_hdpe.yml new file mode 100644 index 00000000..5d04a7d2 --- /dev/null +++ b/inst/extdata/raman_hdpe.yml @@ -0,0 +1,1941 @@ +wavenumber: +- 301.04 +- 304.632 +- 308.221 +- 311.81 +- 315.398 +- 318.983 +- 322.566 +- 326.15 +- 329.732 +- 333.311 +- 336.889 +- 340.467 +- 344.042 +- 347.618 +- 351.19 +- 354.76 +- 358.332 +- 361.9 +- 365.466 +- 369.031 +- 372.597 +- 376.16 +- 379.721 +- 383.28 +- 386.839 +- 390.396 +- 393.951 +- 397.505 +- 401.058 +- 404.61 +- 408.16 +- 411.708 +- 415.256 +- 418.801 +- 422.346 +- 425.887 +- 429.429 +- 432.97 +- 436.507 +- 440.044 +- 443.581 +- 447.116 +- 450.647 +- 454.18 +- 457.708 +- 461.238 +- 464.764 +- 468.291 +- 471.815 +- 475.339 +- 478.859 +- 482.379 +- 485.899 +- 489.416 +- 492.931 +- 496.447 +- 499.96 +- 503.471 +- 506.981 +- 510.489 +- 513.999 +- 517.503 +- 521.009 +- 524.51 +- 528.014 +- 531.513 +- 535.014 +- 538.51 +- 542.008 +- 545.502 +- 548.997 +- 552.488 +- 555.979 +- 559.469 +- 562.955 +- 566.442 +- 569.928 +- 573.411 +- 576.894 +- 580.376 +- 583.854 +- 587.331 +- 590.811 +- 594.286 +- 597.759 +- 601.231 +- 604.705 +- 608.174 +- 611.642 +- 615.109 +- 618.574 +- 622.038 +- 625.503 +- 628.966 +- 632.426 +- 635.884 +- 639.342 +- 642.798 +- 646.252 +- 649.706 +- 653.158 +- 656.608 +- 660.058 +- 663.506 +- 666.953 +- 670.398 +- 673.842 +- 677.285 +- 680.727 +- 684.165 +- 687.602 +- 691.04 +- 694.476 +- 697.911 +- 701.345 +- 704.775 +- 708.204 +- 711.634 +- 715.063 +- 718.49 +- 721.912 +- 725.336 +- 728.76 +- 732.18 +- 735.599 +- 739.018 +- 742.434 +- 745.849 +- 749.265 +- 752.675 +- 756.088 +- 759.498 +- 762.906 +- 766.313 +- 769.719 +- 773.124 +- 776.527 +- 779.929 +- 783.33 +- 786.729 +- 790.127 +- 793.524 +- 796.919 +- 800.312 +- 803.705 +- 807.097 +- 810.485 +- 813.874 +- 817.262 +- 820.647 +- 824.032 +- 827.416 +- 830.797 +- 834.179 +- 837.557 +- 840.936 +- 844.312 +- 847.688 +- 851.061 +- 854.433 +- 857.806 +- 861.175 +- 864.543 +- 867.91 +- 871.278 +- 874.642 +- 878.005 +- 881.367 +- 884.728 +- 888.087 +- 891.445 +- 894.802 +- 898.157 +- 901.511 +- 904.864 +- 908.216 +- 911.567 +- 914.914 +- 918.262 +- 921.609 +- 924.954 +- 928.296 +- 931.639 +- 934.981 +- 938.32 +- 941.659 +- 944.995 +- 948.332 +- 951.665 +- 954.999 +- 958.33 +- 961.66 +- 964.991 +- 968.318 +- 971.644 +- 974.971 +- 978.295 +- 981.617 +- 984.94 +- 988.258 +- 991.578 +- 994.896 +- 998.212 +- 1001.53 +- 1004.84 +- 1008.15 +- 1011.46 +- 1014.77 +- 1018.08 +- 1021.39 +- 1024.7 +- 1028.0 +- 1031.3 +- 1034.61 +- 1037.91 +- 1041.21 +- 1044.51 +- 1047.8 +- 1051.1 +- 1054.39 +- 1057.68 +- 1060.98 +- 1064.27 +- 1067.56 +- 1070.84 +- 1074.13 +- 1077.42 +- 1080.7 +- 1083.98 +- 1087.27 +- 1090.55 +- 1093.83 +- 1097.1 +- 1100.38 +- 1103.65 +- 1106.93 +- 1110.2 +- 1113.47 +- 1116.74 +- 1120.01 +- 1123.28 +- 1126.55 +- 1129.81 +- 1133.08 +- 1136.34 +- 1139.6 +- 1142.86 +- 1146.12 +- 1149.37 +- 1152.63 +- 1155.89 +- 1159.14 +- 1162.39 +- 1165.64 +- 1168.89 +- 1172.14 +- 1175.39 +- 1178.64 +- 1181.88 +- 1185.12 +- 1188.37 +- 1191.61 +- 1194.85 +- 1198.09 +- 1201.32 +- 1204.56 +- 1207.79 +- 1211.03 +- 1214.26 +- 1217.49 +- 1220.72 +- 1223.95 +- 1227.18 +- 1230.4 +- 1233.63 +- 1236.85 +- 1240.07 +- 1243.3 +- 1246.52 +- 1249.74 +- 1252.95 +- 1256.17 +- 1259.38 +- 1262.6 +- 1265.81 +- 1269.02 +- 1272.23 +- 1275.44 +- 1278.65 +- 1281.85 +- 1285.06 +- 1288.26 +- 1291.46 +- 1294.67 +- 1297.87 +- 1301.07 +- 1304.26 +- 1307.46 +- 1310.66 +- 1313.85 +- 1317.04 +- 1320.23 +- 1323.42 +- 1326.61 +- 1329.8 +- 1332.99 +- 1336.17 +- 1339.36 +- 1342.54 +- 1345.72 +- 1348.9 +- 1352.08 +- 1355.26 +- 1358.44 +- 1361.61 +- 1364.79 +- 1367.96 +- 1371.13 +- 1374.3 +- 1377.47 +- 1380.64 +- 1383.81 +- 1386.97 +- 1390.14 +- 1393.3 +- 1396.47 +- 1399.63 +- 1402.79 +- 1405.95 +- 1409.1 +- 1412.26 +- 1415.41 +- 1418.57 +- 1421.72 +- 1424.87 +- 1428.02 +- 1431.17 +- 1434.32 +- 1437.47 +- 1440.61 +- 1443.76 +- 1446.9 +- 1450.04 +- 1453.18 +- 1456.32 +- 1459.46 +- 1462.59 +- 1465.73 +- 1468.87 +- 1472.0 +- 1475.13 +- 1478.26 +- 1481.4 +- 1484.52 +- 1487.65 +- 1490.78 +- 1493.9 +- 1497.03 +- 1500.15 +- 1503.27 +- 1506.39 +- 1509.51 +- 1512.63 +- 1515.74 +- 1518.86 +- 1521.97 +- 1525.09 +- 1528.2 +- 1531.31 +- 1534.42 +- 1537.53 +- 1540.64 +- 1543.74 +- 1546.85 +- 1549.95 +- 1553.05 +- 1556.16 +- 1559.26 +- 1562.36 +- 1565.45 +- 1568.55 +- 1571.65 +- 1574.74 +- 1577.83 +- 1580.92 +- 1584.02 +- 1587.11 +- 1590.19 +- 1593.28 +- 1596.37 +- 1599.45 +- 1602.54 +- 1605.62 +- 1608.7 +- 1611.78 +- 1614.86 +- 1617.94 +- 1621.02 +- 1624.09 +- 1627.17 +- 1630.24 +- 1633.31 +- 1636.38 +- 1639.45 +- 1642.52 +- 1645.59 +- 1648.65 +- 1651.72 +- 1654.78 +- 1657.85 +- 1660.91 +- 1663.97 +- 1667.03 +- 1670.09 +- 1673.15 +- 1676.2 +- 1679.26 +- 1682.31 +- 1685.36 +- 1688.41 +- 1691.46 +- 1694.51 +- 1697.56 +- 1700.61 +- 1703.65 +- 1706.7 +- 1709.74 +- 1712.78 +- 1715.83 +- 1718.86 +- 1721.9 +- 1724.94 +- 1727.98 +- 1731.01 +- 1734.05 +- 1737.08 +- 1740.11 +- 1743.14 +- 1746.17 +- 1749.2 +- 1752.23 +- 1755.25 +- 1758.28 +- 1761.3 +- 1764.33 +- 1767.35 +- 1770.37 +- 1773.39 +- 1776.41 +- 1779.42 +- 1782.44 +- 1785.46 +- 1788.47 +- 1791.48 +- 1794.49 +- 1797.5 +- 1800.51 +- 1803.52 +- 1806.53 +- 1809.53 +- 1812.54 +- 1815.54 +- 1818.54 +- 1821.54 +- 1824.55 +- 1827.55 +- 1830.54 +- 1833.54 +- 1836.54 +- 1839.53 +- 1842.52 +- 1845.51 +- 1848.51 +- 1851.5 +- 1854.49 +- 1857.48 +- 1860.46 +- 1863.45 +- 1866.43 +- 1869.41 +- 1872.4 +- 1875.38 +- 1878.36 +- 1881.34 +- 1884.32 +- 1887.29 +- 1890.27 +- 1893.24 +- 1896.22 +- 1899.19 +- 1902.16 +- 1905.13 +- 1908.1 +- 1911.07 +- 1914.03 +- 1917.0 +- 1919.96 +- 1922.93 +- 1925.89 +- 1928.85 +- 1931.81 +- 1934.77 +- 1937.43 +- 1940.4 +- 1943.36 +- 1946.33 +- 1949.3 +- 1952.27 +- 1955.23 +- 1958.19 +- 1961.16 +- 1964.12 +- 1967.08 +- 1970.04 +- 1972.99 +- 1975.95 +- 1978.91 +- 1981.86 +- 1984.82 +- 1987.77 +- 1990.72 +- 1993.67 +- 1996.62 +- 1999.57 +- 2002.52 +- 2005.46 +- 2008.41 +- 2011.35 +- 2014.29 +- 2017.24 +- 2020.18 +- 2023.12 +- 2026.05 +- 2028.99 +- 2031.93 +- 2034.87 +- 2037.8 +- 2040.73 +- 2043.66 +- 2046.6 +- 2049.52 +- 2052.45 +- 2055.38 +- 2058.31 +- 2061.23 +- 2064.16 +- 2067.08 +- 2070.0 +- 2072.93 +- 2075.85 +- 2078.77 +- 2081.68 +- 2084.6 +- 2087.52 +- 2090.43 +- 2093.34 +- 2096.26 +- 2099.17 +- 2102.08 +- 2104.99 +- 2107.9 +- 2110.81 +- 2113.71 +- 2116.62 +- 2119.52 +- 2122.43 +- 2125.33 +- 2128.23 +- 2131.13 +- 2134.03 +- 2136.93 +- 2139.82 +- 2142.72 +- 2145.61 +- 2148.51 +- 2151.4 +- 2154.29 +- 2157.18 +- 2160.07 +- 2162.96 +- 2165.85 +- 2168.73 +- 2171.62 +- 2174.5 +- 2177.39 +- 2180.27 +- 2183.15 +- 2186.03 +- 2188.91 +- 2191.79 +- 2194.67 +- 2197.54 +- 2200.42 +- 2203.29 +- 2206.16 +- 2209.03 +- 2211.9 +- 2214.77 +- 2217.64 +- 2220.51 +- 2223.38 +- 2226.24 +- 2229.11 +- 2231.97 +- 2234.83 +- 2237.69 +- 2240.55 +- 2243.41 +- 2246.27 +- 2249.13 +- 2251.98 +- 2254.84 +- 2257.69 +- 2260.54 +- 2263.39 +- 2266.25 +- 2269.1 +- 2271.94 +- 2274.79 +- 2277.64 +- 2280.49 +- 2283.33 +- 2286.17 +- 2289.02 +- 2291.86 +- 2294.7 +- 2297.54 +- 2300.38 +- 2303.21 +- 2306.05 +- 2308.89 +- 2311.72 +- 2314.55 +- 2317.39 +- 2320.22 +- 2323.05 +- 2325.88 +- 2328.7 +- 2331.53 +- 2334.36 +- 2337.18 +- 2340.01 +- 2342.83 +- 2345.65 +- 2348.47 +- 2351.29 +- 2354.11 +- 2356.93 +- 2359.75 +- 2362.56 +- 2365.38 +- 2368.19 +- 2371.0 +- 2373.82 +- 2376.63 +- 2379.44 +- 2382.25 +- 2385.05 +- 2387.86 +- 2390.67 +- 2393.47 +- 2396.28 +- 2399.08 +- 2401.88 +- 2404.68 +- 2407.48 +- 2410.28 +- 2413.08 +- 2415.87 +- 2418.67 +- 2421.46 +- 2424.26 +- 2427.05 +- 2429.84 +- 2432.63 +- 2435.42 +- 2438.21 +- 2441.0 +- 2443.79 +- 2446.57 +- 2449.36 +- 2452.14 +- 2454.92 +- 2457.7 +- 2460.48 +- 2463.26 +- 2466.04 +- 2468.82 +- 2471.6 +- 2474.37 +- 2477.15 +- 2479.92 +- 2482.69 +- 2485.47 +- 2488.24 +- 2491.01 +- 2493.77 +- 2496.54 +- 2499.31 +- 2502.07 +- 2504.84 +- 2507.6 +- 2510.37 +- 2513.13 +- 2515.89 +- 2518.65 +- 2521.41 +- 2524.16 +- 2526.92 +- 2529.68 +- 2532.43 +- 2535.19 +- 2537.94 +- 2540.69 +- 2543.44 +- 2546.19 +- 2548.94 +- 2551.69 +- 2554.44 +- 2557.18 +- 2559.93 +- 2562.67 +- 2565.42 +- 2568.16 +- 2570.9 +- 2573.64 +- 2576.38 +- 2579.11 +- 2581.85 +- 2584.59 +- 2587.32 +- 2590.06 +- 2592.79 +- 2595.52 +- 2598.25 +- 2600.98 +- 2603.72 +- 2606.44 +- 2609.17 +- 2611.9 +- 2614.62 +- 2617.35 +- 2620.07 +- 2622.79 +- 2625.51 +- 2628.23 +- 2630.95 +- 2633.67 +- 2636.39 +- 2639.11 +- 2641.82 +- 2644.54 +- 2647.25 +- 2649.96 +- 2652.68 +- 2655.39 +- 2658.1 +- 2660.81 +- 2663.51 +- 2666.22 +- 2668.93 +- 2671.63 +- 2674.34 +- 2677.04 +- 2679.74 +- 2682.44 +- 2685.14 +- 2687.84 +- 2690.54 +- 2693.24 +- 2695.94 +- 2698.63 +- 2701.33 +- 2704.02 +- 2706.71 +- 2709.41 +- 2712.1 +- 2714.79 +- 2717.47 +- 2720.16 +- 2722.85 +- 2725.53 +- 2728.22 +- 2730.9 +- 2733.59 +- 2736.27 +- 2738.95 +- 2741.63 +- 2744.31 +- 2746.99 +- 2749.67 +- 2752.34 +- 2755.02 +- 2757.69 +- 2760.37 +- 2763.04 +- 2765.71 +- 2768.38 +- 2771.05 +- 2773.72 +- 2776.39 +- 2779.06 +- 2781.72 +- 2784.39 +- 2787.05 +- 2789.71 +- 2792.38 +- 2795.04 +- 2797.7 +- 2800.36 +- 2803.02 +- 2805.68 +- 2808.33 +- 2810.99 +- 2813.64 +- 2816.3 +- 2818.95 +- 2821.6 +- 2824.25 +- 2826.9 +- 2829.55 +- 2832.2 +- 2834.85 +- 2837.49 +- 2840.14 +- 2842.78 +- 2845.43 +- 2848.07 +- 2850.71 +- 2853.35 +- 2855.99 +- 2858.63 +- 2861.27 +- 2863.91 +- 2866.54 +- 2869.18 +- 2871.81 +- 2874.45 +- 2877.08 +- 2879.71 +- 2882.34 +- 2884.97 +- 2887.6 +- 2890.23 +- 2892.86 +- 2895.48 +- 2898.11 +- 2900.73 +- 2903.35 +- 2905.97 +- 2908.6 +- 2911.22 +- 2913.84 +- 2916.46 +- 2919.07 +- 2921.69 +- 2924.31 +- 2926.92 +- 2929.54 +- 2932.15 +- 2934.76 +- 2937.37 +- 2939.98 +- 2942.59 +- 2945.2 +- 2947.81 +- 2950.42 +- 2953.02 +- 2955.63 +- 2958.23 +- 2960.83 +- 2963.44 +- 2966.04 +- 2968.64 +- 2971.24 +- 2973.83 +- 2976.43 +- 2979.03 +- 2981.63 +- 2984.22 +- 2986.81 +- 2989.41 +- 2992.0 +- 2994.59 +- 2997.18 +- 2999.77 +- 3002.36 +- 3004.95 +- 3007.53 +- 3010.12 +- 3012.7 +- 3015.29 +- 3017.87 +- 3020.45 +- 3023.04 +- 3025.62 +- 3028.2 +- 3030.77 +- 3033.35 +- 3035.93 +- 3038.5 +- 3041.08 +- 3043.65 +- 3046.23 +- 3048.8 +- 3051.37 +- 3053.94 +- 3056.51 +- 3059.08 +- 3061.65 +- 3064.21 +- 3066.78 +- 3069.35 +- 3071.91 +- 3074.47 +- 3077.04 +- 3079.6 +- 3082.16 +- 3084.72 +- 3087.28 +- 3089.83 +- 3092.39 +- 3094.95 +- 3097.5 +- 3100.06 +- 3102.61 +- 3105.16 +- 3107.72 +- 3110.27 +- 3112.82 +- 3115.37 +- 3117.91 +- 3120.46 +- 3123.01 +- 3125.56 +- 3128.1 +- 3130.64 +- 3133.19 +- 3135.73 +- 3138.27 +- 3140.81 +- 3143.35 +- 3145.89 +- 3148.43 +- 3150.96 +- 3153.5 +- 3156.03 +- 3158.57 +- 3161.1 +- 3163.64 +- 3166.17 +- 3168.7 +- 3171.23 +- 3173.76 +- 3175.3 +- 3177.84 +- 3180.38 +- 3182.91 +- 3185.45 +- 3187.99 +- 3190.52 +- 3193.06 +- 3195.59 +- 3198.12 +spectra: + intensity: + - 26 + - 50 + - 48 + - 45 + - 46 + - 42 + - 45 + - 44 + - 48 + - 46 + - 48 + - 44 + - 49 + - 52 + - 48 + - 53 + - 52 + - 46 + - 41 + - 50 + - 62 + - 57 + - 52 + - 45 + - 55 + - 42 + - 52 + - 44 + - 62 + - 57 + - 50 + - 59 + - 48 + - 47 + - 59 + - 58 + - 58 + - 74 + - 69 + - 78 + - 67 + - 73 + - 59 + - 72 + - 65 + - 53 + - 65 + - 63 + - 61 + - 56 + - 47 + - 52 + - 53 + - 58 + - 58 + - 43 + - 54 + - 55 + - 50 + - 47 + - 55 + - 58 + - 50 + - 47 + - 44 + - 55 + - 56 + - 58 + - 54 + - 52 + - 45 + - 64 + - 62 + - 62 + - 57 + - 55 + - 49 + - 65 + - 62 + - 53 + - 55 + - 59 + - 73 + - 63 + - 63 + - 67 + - 77 + - 74 + - 74 + - 79 + - 66 + - 66 + - 67 + - 60 + - 59 + - 48 + - 44 + - 57 + - 61 + - 59 + - 48 + - 59 + - 59 + - 43 + - 50 + - 49 + - 61 + - 58 + - 64 + - 74 + - 49 + - 64 + - 55 + - 55 + - 62 + - 52 + - 62 + - 55 + - 65 + - 54 + - 52 + - 66 + - 54 + - 54 + - 54 + - 60 + - 55 + - 56 + - 53 + - 61 + - 63 + - 53 + - 50 + - 62 + - 62 + - 70 + - 63 + - 61 + - 55 + - 56 + - 70 + - 62 + - 66 + - 60 + - 56 + - 67 + - 57 + - 64 + - 56 + - 51 + - 56 + - 59 + - 61 + - 53 + - 68 + - 64 + - 51 + - 60 + - 62 + - 62 + - 76 + - 65 + - 53 + - 68 + - 53 + - 51 + - 57 + - 53 + - 63 + - 60 + - 74 + - 59 + - 73 + - 51 + - 74 + - 65 + - 64 + - 59 + - 70 + - 61 + - 42 + - 71 + - 66 + - 52 + - 70 + - 67 + - 58 + - 65 + - 64 + - 66 + - 75 + - 59 + - 60 + - 64 + - 63 + - 68 + - 61 + - 53 + - 60 + - 67 + - 57 + - 74 + - 59 + - 64 + - 69 + - 76 + - 59 + - 65 + - 65 + - 75 + - 86 + - 78 + - 70 + - 76 + - 84 + - 78 + - 69 + - 66 + - 83 + - 90 + - 96 + - 128 + - 143 + - 101 + - 81 + - 76 + - 72 + - 85 + - 79 + - 83 + - 67 + - 79 + - 64 + - 80 + - 72 + - 74 + - 70 + - 81 + - 79 + - 82 + - 95 + - 119 + - 148 + - 94 + - 80 + - 71 + - 82 + - 76 + - 76 + - 76 + - 82 + - 73 + - 66 + - 80 + - 79 + - 101 + - 71 + - 83 + - 75 + - 66 + - 72 + - 76 + - 68 + - 88 + - 81 + - 66 + - 67 + - 68 + - 81 + - 67 + - 69 + - 78 + - 68 + - 64 + - 81 + - 83 + - 78 + - 74 + - 67 + - 64 + - 82 + - 72 + - 79 + - 65 + - 84 + - 76 + - 87 + - 75 + - 76 + - 87 + - 82 + - 101 + - 128 + - 200 + - 143 + - 105 + - 101 + - 87 + - 77 + - 88 + - 76 + - 79 + - 95 + - 76 + - 67 + - 82 + - 82 + - 70 + - 82 + - 72 + - 88 + - 66 + - 68 + - 71 + - 84 + - 74 + - 100 + - 83 + - 69 + - 91 + - 81 + - 77 + - 84 + - 75 + - 86 + - 71 + - 92 + - 94 + - 77 + - 93 + - 93 + - 110 + - 112 + - 103 + - 106 + - 110 + - 125 + - 123 + - 169 + - 178 + - 166 + - 129 + - 117 + - 116 + - 127 + - 136 + - 143 + - 127 + - 114 + - 101 + - 85 + - 93 + - 98 + - 87 + - 97 + - 94 + - 95 + - 85 + - 94 + - 93 + - 85 + - 93 + - 74 + - 75 + - 81 + - 105 + - 95 + - 105 + - 105 + - 103 + - 86 + - 85 + - 102 + - 75 + - 72 + - 89 + - 96 + - 92 + - 86 + - 85 + - 90 + - 100 + - 91 + - 88 + - 98 + - 83 + - 84 + - 93 + - 97 + - 71 + - 73 + - 88 + - 78 + - 84 + - 90 + - 97 + - 89 + - 88 + - 86 + - 89 + - 89 + - 89 + - 89 + - 96 + - 98 + - 103 + - 94 + - 91 + - 98 + - 108 + - 80 + - 100 + - 88 + - 101 + - 104 + - 91 + - 96 + - 98 + - 102 + - 96 + - 100 + - 82 + - 87 + - 107 + - 94 + - 105 + - 96 + - 105 + - 106 + - 110 + - 96 + - 88 + - 98 + - 94 + - 99 + - 85 + - 99 + - 93 + - 91 + - 96 + - 94 + - 103 + - 100 + - 106 + - 86 + - 105 + - 100 + - 90 + - 102 + - 100 + - 100 + - 121 + - 121 + - 107 + - 97 + - 94 + - 116 + - 105 + - 100 + - 98 + - 102 + - 107 + - 110 + - 100 + - 107 + - 101 + - 114 + - 106 + - 109 + - 115 + - 116 + - 108 + - 114 + - 112 + - 110 + - 112 + - 108 + - 107 + - 109 + - 109 + - 105 + - 102 + - 107 + - 111 + - 109 + - 108 + - 112 + - 108 + - 102 + - 105 + - 110 + - 108 + - 95 + - 107 + - 99 + - 106 + - 110 + - 115 + - 107 + - 100 + - 108 + - 107 + - 107 + - 113 + - 93 + - 113 + - 124 + - 119 + - 109 + - 101 + - 109 + - 120 + - 112 + - 108 + - 111 + - 116 + - 97 + - 106 + - 114 + - 116 + - 125 + - 109 + - 103 + - 114 + - 122 + - 122 + - 106 + - 124 + - 105 + - 120 + - 105 + - 118 + - 114 + - 105 + - 118 + - 115 + - 112 + - 116 + - 112 + - 132 + - 116 + - 106 + - 115 + - 113 + - 108 + - 136 + - 131 + - 123 + - 108 + - 120 + - 131 + - 121 + - 126 + - 124 + - 137 + - 130 + - 129 + - 119 + - 126 + - 136 + - 135 + - 135 + - 130 + - 130 + - 124 + - 126 + - 122 + - 131 + - 120 + - 140 + - 120 + - 138 + - 128 + - 127 + - 131 + - 146 + - 133 + - 141 + - 124 + - 123 + - 137 + - 131 + - 127 + - 128 + - 123 + - 135 + - 123 + - 121 + - 128 + - 141 + - 136 + - 136 + - 119 + - 114 + - 122 + - 127 + - 135 + - 138 + - 126 + - 125 + - 118 + - 121 + - 129 + - 133 + - 137 + - 131 + - 118 + - 142 + - 103 + - 113 + - 123 + - 110 + - 135 + - 128 + - 133 + - 121 + - 131 + - 118 + - 115 + - 122 + - 124 + - 114 + - 120 + - 136 + - 129 + - 123 + - 119 + - 119 + - 118 + - 114 + - 116 + - 116 + - 120 + - 108 + - 113 + - 114 + - 129 + - 116 + - 110 + - 109 + - 118 + - 103 + - 121 + - 120 + - 108 + - 108 + - 119 + - 130 + - 104 + - 107 + - 95 + - 110 + - 96 + - 117 + - 109 + - 111 + - 111 + - 112 + - 113 + - 112 + - 101 + - 110 + - 107 + - 96 + - 99 + - 105 + - 101 + - 99 + - 103 + - 97 + - 96 + - 108 + - 107 + - 103 + - 103 + - 112 + - 103 + - 115 + - 108 + - 107 + - 102 + - 108 + - 103 + - 102 + - 98 + - 102 + - 98 + - 105 + - 107 + - 95 + - 103 + - 112 + - 112 + - 105 + - 99 + - 105 + - 112 + - 99 + - 99 + - 106 + - 101 + - 97 + - 102 + - 99 + - 99 + - 102 + - 95 + - 109 + - 96 + - 100 + - 99 + - 103 + - 117 + - 100 + - 106 + - 110 + - 96 + - 97 + - 105 + - 98 + - 100 + - 90 + - 94 + - 107 + - 101 + - 92 + - 96 + - 106 + - 105 + - 76 + - 93 + - 104 + - 101 + - 104 + - 95 + - 95 + - 93 + - 81 + - 104 + - 96 + - 101 + - 98 + - 91 + - 103 + - 85 + - 100 + - 87 + - 87 + - 98 + - 100 + - 100 + - 95 + - 114 + - 96 + - 105 + - 106 + - 81 + - 96 + - 104 + - 103 + - 89 + - 108 + - 92 + - 89 + - 96 + - 81 + - 91 + - 100 + - 102 + - 103 + - 99 + - 119 + - 104 + - 97 + - 99 + - 128 + - 116 + - 126 + - 123 + - 130 + - 121 + - 132 + - 115 + - 111 + - 109 + - 102 + - 96 + - 108 + - 104 + - 82 + - 100 + - 107 + - 97 + - 81 + - 100 + - 101 + - 98 + - 98 + - 100 + - 102 + - 97 + - 95 + - 90 + - 93 + - 102 + - 95 + - 103 + - 106 + - 102 + - 99 + - 101 + - 117 + - 101 + - 104 + - 114 + - 112 + - 119 + - 106 + - 116 + - 131 + - 132 + - 148 + - 169 + - 200 + - 303 + - 378 + - 452 + - 489 + - 465 + - 431 + - 388 + - 356 + - 333 + - 318 + - 305 + - 308 + - 305 + - 335 + - 407 + - 576 + - 816 + - 664 + - 494 + - 393 + - 352 + - 318 + - 322 + - 321 + - 308 + - 279 + - 254 + - 257 + - 238 + - 222 + - 214 + - 219 + - 199 + - 207 + - 212 + - 226 + - 206 + - 181 + - 186 + - 162 + - 148 + - 107 + - 119 + - 110 + - 113 + - 101 + - 109 + - 114 + - 105 + - 107 + - 94 + - 91 + - 97 + - 101 + - 87 + - 108 + - 95 + - 103 + - 95 + - 94 + - 96 + - 89 + - 89 + - 105 + - 94 + - 79 + - 85 + - 99 + - 93 + - 84 + - 77 + - 95 + - 92 + - 73 + - 89 + - 98 + - 72 + - 80 + - 81 + - 98 + - 87 + - 81 + - 86 + - 92 + - 85 + - 86 + - 92 + - 86 + - 82 + - 87 + - 86 + - 93 + - 87 + - 88 + - 87 + - 81 + - 82 + - 90 + - 76 + - 90 + - 83 + - 80 + - 75 + - 82 + - 83 + - 76 + - 74 + - 84 + - 83 + - 73 + - 74 + - 77 + - 77 + - 77 + - 81 + - 80 + - 77 + - 75 + - 68 + - 69 + - 77 + - 77 + - 73 + - 74 + - 81 + - 75 + - 68 + - 73 + - 75 + - 76 + - 77 + - 75 + - 77 + - 71 + - 77 + - 71 + - 71 + - 75 + - 75 + - 67 +metadata: + x: 1 + 'y': 1 + user_name: Win Cowger + spectrum_type: Raman + spectrum_identity: HDPE + organization: Horiba Scientific + license: CC BY-NC + session_id: 5728ddde4f649fd71f6f487fc5ad8d80/dc85257201307a131e71d9ec24aaccbf + file_id: cb06ce2846b119d932fb6696479a445b diff --git a/man/io_spec.Rd b/man/io_spec.Rd index d4448819..369b9398 100644 --- a/man/io_spec.Rd +++ b/man/io_spec.Rd @@ -5,21 +5,18 @@ \alias{write_spec.default} \alias{write_spec.OpenSpecy} \alias{read_spec} -\alias{c_spec} \title{Read and write spectral data} \usage{ write_spec(x, ...) \method{write_spec}{default}(x, ...) -\method{write_spec}{OpenSpecy}(x, file, method = NULL, ...) +\method{write_spec}{OpenSpecy}(x, file, method = NULL, digits = getOption("digits"), ...) read_spec(file, share = NULL, method = NULL, ...) - -c_spec(...) } \arguments{ -\item{x}{a list object of class \code{OpenSpecy}.} +\item{x}{a list object of class \code{\link{OpenSpecy}}.} \item{file}{file to be read from or written to.} @@ -27,90 +24,42 @@ c_spec(...) \code{\link[data.table]{fread}()} but \code{\link[utils]{read.csv}()} works as well.} +\item{digits}{number of significant digits to use when formatting numeric +values; defaults to \code{\link[base]{getOption}("digits")}.} + \item{share}{defaults to \code{NULL}; needed to share spectra with the Open Specy community; see \code{\link{share_spec}()} for details.} \item{\ldots}{further arguments passed to the submethods.} } \value{ -All \code{read_*()} functions return data frames containing two columns -named \code{"wavenumber"} and \code{"intensity"}. +\code{read_spec()} returns a list object of class \code{\link{OpenSpecy}()} +containing spectral data. } \description{ Functions for reading and writing spectral data from Open Specy .yaml, .json, or .rds. } \details{ -The \code{metadata} argument may contain a named list with the following -details (\code{*} = minimum recommended): - -\tabular{ll}{ -\code{file_name*}: \tab The file name, defaults to -\code{\link[base]{basename}()} if not specified\cr -\code{user_name*}: \tab User name, e.g. "Win Cowger"\cr -\code{contact_info}: \tab Contact information, e.g. "1-513-673-8956, -wincowger@gmail.com"\cr -\code{organization}: \tab Affiliation, e.g. "University of California, -Riverside"\cr -\code{citation}: \tab Data citation, e.g. "Primpke, S., Wirth, M., Lorenz, -C., & Gerdts, G. (2018). Reference database design for the automated analysis -of microplastic samples based on Fourier transform infrared (FTIR) -spectroscopy. \emph{Analytical and Bioanalytical Chemistry}. -\doi{10.1007/s00216-018-1156-x}"\cr -\code{spectrum_type*}: \tab Raman or FTIR\cr -\code{spectrum_identity*}: \tab Material/polymer analyzed, e.g. -"Polystyrene"\cr -\code{material_form}: \tab Form of the material analyzed, e.g. textile fiber, -rubber band, sphere, granule \cr -\code{material_phase}: \tab Phase of the material analyzed (liquid, gas, -solid) \cr -\code{material_producer}: \tab Producer of the material analyzed, -e.g. Dow \cr -\code{material_purity}: \tab Purity of the material analyzed, e.g. 99.98\% -\cr -\code{material_quality}: \tab Quality of the material analyzed, e.g. -consumer product, manufacturer material, analytical standard, -environmental sample \cr -\code{material_color}: \tab Color of the material analyzed, -e.g. blue, #0000ff, (0, 0, 255) \cr -\code{material_other}: \tab Other material description, e.g. 5 µm diameter -fibers, 1 mm spherical particles \cr -\code{cas_number}: \tab CAS number, e.g. 9003-53-6 \cr -\code{instrument_used}: \tab Instrument used, e.g. Horiba LabRam \cr -\code{instrument_accessories}: \tab Instrument accessories, e.g. -Focal Plane Array, CCD\cr -\code{instrument_mode}: \tab Instrument modes/settings, e.g. -transmission, reflectance \cr -\code{spectral_resolution}: \tab Spectral resolution, e.g. 4/cm \cr -\code{laser_light_used}: \tab Wavelength of the laser/light used, e.g. -785 nm \cr -\code{number_of_accumulations}: \tab Number of accumulations, e.g 5 \cr -\code{total_acquisition_time_s}: \tab Total acquisition time (s), e.g. 10 s -\cr -\code{data_processing_procedure}: \tab Data processing procedure, -e.g. spikefilter, baseline correction, none \cr -\code{level_of_confidence_in_identification}: \tab Level of confidence in -identification, e.g. 99\% \cr -\code{other_info}: \tab Other information \cr -\code{license}: \tab The license of the shared spectrum; defaults to -\code{"CC BY-NC"} (see -\url{https://creativecommons.org/licenses/by-nc/4.0/} for details). Any other -creative commons license is allowed, for example, CC0 or CC BY \cr -\code{session_id}: \tab A unique user and session identifier; populated -automatically with \code{paste(digest(Sys.info()), digest(sessionInfo()), -sep = "/")}\cr -\code{file_id}: \tab A unique file identifier; populated automatically -with \code{digest(object[c("wavenumber", "spectra")])}\cr -} +reference to qs } \examples{ -read_text(read_extdata("raman_hdpe.csv")) -read_asp(read_extdata("ftir_ldpe_soil.asp")) -read_opus(read_extdata("ftir_ps.0")) +read_spec(read_extdata("raman_hdpe.yml")) +read_spec(read_extdata("raman_hdpe.json")) +read_spec(read_extdata("raman_hdpe.rds")) + +\dontrun{ +write_spec(raman_hdpe, "raman_hdpe.yml") +write_spec(raman_hdpe, "raman_hdpe.json") +write_spec(raman_hdpe, "raman_hdpe.rds") +} } \seealso{ -\code{\link[hyperSpec]{read.jdx}()}; \code{\link[hyperSpec]{read.spc}()}; +\code{\link{OpenSpecy}()} +\code{\link[base]{saveRDS}()}; \code{\link[base]{readRDS}()}; +\code{\link[yaml]{write_yaml}()}; \code{\link[yaml]{read_yaml}()}; +\code{\link[jsonlite]{write_json}()}; \code{\link[jsonlite]{read_json}()}; } \author{ Zacharias Steinmetz, Win Cowger diff --git a/man/raman_hdpe.Rd b/man/raman_hdpe.Rd index e2e3b319..3a390ce6 100644 --- a/man/raman_hdpe.Rd +++ b/man/raman_hdpe.Rd @@ -5,17 +5,21 @@ \alias{raman_hdpe} \title{Sample Raman spectrum} \format{ -A data table containing 964 rows and 2 columns: +An threepart list of class \code{\link{OpenSpecy}} containing: \tabular{ll}{ -\code{wavenumber}: \tab spectral wavenumber [1/cm] \cr -\code{intensity}: \tab absorbance values [-] \cr +\code{wavenumber}: \tab spectral wavenumbers [1/cm] (vector of 964 rows) \cr +\code{spectra}: \tab absorbance values [-] + (a \code{\link[data.table]{data.table}} with 964 rows and 1 column) \cr +\code{metadata}: \tab spectral metadata \cr } } \description{ -Raman spectrum of high-density polyethylene (HDPE). +Raman spectrum of high-density polyethylene (HDPE) provided by +Horiba Scientific. } \examples{ -data("raman_hdpe") +data(raman_hdpe) +print(raman_hdpe) } \references{ diff --git a/tests/testthat/test-io_spec.R b/tests/testthat/test-io_spec.R index cb5187d7..c089cc5c 100644 --- a/tests/testthat/test-io_spec.R +++ b/tests/testthat/test-io_spec.R @@ -6,90 +6,49 @@ library(data.table) test_that("extdata files are present", { ed <- read_extdata() - expect_true(any(grepl("\\.asp$", ed))) - expect_true(any(grepl("\\.csv$", ed))) - expect_true(any(grepl("\\.0$", ed))) - expect_true(any(grepl("\\.jdx$", ed))) - expect_true(any(grepl("\\.spa$", ed))) - expect_true(any(grepl("\\.spc$", ed))) + expect_true(any(grepl("\\.yml$", ed))) + expect_true(any(grepl("\\.json$", ed))) + expect_true(any(grepl("\\.rds$", ed))) }) -test_that("read_text() gives expected output", { - expect_silent(csv <- read_text(read_extdata("raman_hdpe.csv"))) - expect_warning( - expect_message(read_text(read_extdata("raman_hdpe.csv"), share = tmp)) - ) - expect_silent( - dtf <- read_text(read_extdata("raman_hdpe.csv"), method = "fread") - ) - expect_error(read_text(read_extdata("ftir_pva_without_header.csv"), - method = "read.csv")) - expect_warning( - expect_warning( - read_text(read_extdata("ftir_pva_without_header.csv"), - method = "read.csv", header = F) - ) - ) - expect_warning( - expect_warning( - read_text(read_extdata("ftir_pva_without_header.csv")) - ) - ) - expect_s3_class(csv, "OpenSpecy") - expect_equal(length(csv$wavenumber), 1095) - expect_equal(round(range(csv$wavenumber), 1), c(150.9, 2998.5)) - expect_equal(round(range(csv$spectra[[1]]), 1), c(3264.2, 41238.9)) - expect_equal(csv, dtf) -}) +test_that("write_spec() works without errors", { + expect_silent(write_spec(raman_hdpe, file.path(tmp, "test.yml"))) + expect_silent(write_spec(raman_hdpe, file.path(tmp, "test.json"))) + expect_silent(write_spec(raman_hdpe, file.path(tmp, "test.rds"))) -test_that("read_asp() gives expected output", { - expect_silent(asp <- read_asp(read_extdata("ftir_ldpe_soil.asp"))) - expect_error(read_asp(read_extdata("raman_hdpe.csv"))) - expect_s3_class(asp, "OpenSpecy") - expect_equal(length(asp$wavenumber), 1798) - expect_equal(round(range(asp$wavenumber), 1), c(650.4, 3999.4)) - expect_equal(round(range(asp$spectra[[1]]), 4), c(0.0010, 0.5182)) + expect_error(write_spec(as.data.frame(raman_hdpe), + file.path(tmp, "test.yml"))) + expect_error(write_spec(raman_hdpe, file.path(tmp, "test.csv"))) }) -test_that("read_spa() gives expected output", { - expect_silent(spa <- read_spa(read_extdata("ftir_polyethylene_reflectance_adjustment_not_working.spa"))) - expect_error(read_spa(read_extdata("raman_hdpe.csv"))) - expect_s3_class(spa, "OpenSpecy") - expect_equal(length(spa$wavenumber), 1738) - expect_equal(round(range(spa$wavenumber), 1), c(649.9, 3999.8)) - expect_equal(round(range(spa$spectra[[1]]), 2), c(61.51, 102.88)) -}) +test_that("read_spec() gives expected output", { + expect_silent(yml <- read_spec(read_extdata("raman_hdpe.yml"))) + expect_silent(jsn <- read_spec(read_extdata("raman_hdpe.json"))) + expect_silent(rds <- read_spec(read_extdata("raman_hdpe.rds"))) -test_that("read_jdx() gives expected output", { - expect_match(capture_messages( - suppressWarnings(jdx <- read_jdx(read_extdata("fitr_nitrocellulose.jdx"), - encoding = "latin1")) - ), "JDX file inconsistency.*" - ) - expect_error(read_jdx(read_extdata("throws_error_raman_1000002.jdx"))) - expect_error(read_jdx(read_extdata("raman_hdpe.csv"))) - expect_s3_class(jdx, "OpenSpecy") - expect_equal(length(jdx$wavenumber), 7154) - expect_equal(round(range(jdx$wavenumber), 1), c(599.9, 7499.0)) - expect_equal(round(range(jdx$spectra[[1]]), 4), c(0.0106, 0.6989)) -}) + expect_error(read_spec(read_extdata("raman_hdpe.csv"))) -test_that("read_spc() gives expected output", { - expect_silent(spc <- read_spc(read_extdata("raman_atacamit.spc"))) - expect_error(read_spc(read_extdata("raman_hdpe.csv"))) - expect_s3_class(spc, "OpenSpecy") - expect_equal(length(spc$wavenumber), 559) - expect_equal(round(range(spc$wavenumber), 1), c(117.8, 1050.0)) - expect_equal(round(range(spc$spectra[[1]]), 2), c(0.08, 585.51)) + expect_s3_class(yml, "OpenSpecy") + expect_s3_class(jsn, "OpenSpecy") + expect_s3_class(rds, "OpenSpecy") + + expect_equal(jsn, yml) + expect_equal(rds, raman_hdpe) + expect_equal(jsn[1:2], raman_hdpe[1:2]) + expect_equal(yml[1:2], raman_hdpe[1:2]) + + expect_message(read_spec(read_extdata("raman_hdpe.yml"), share = tmp)) }) -test_that("read_opus() gives expected output", { - expect_silent(opus <- read_opus(read_extdata("ftir_ps.0"))) - expect_error(read_opus(read_extdata("raman_hdpe.csv"))) - expect_s3_class(opus, "OpenSpecy") - expect_equal(length(opus), 2126) - expect_equal(round(range(opus$wavenumber), 1), c(399.2, 4497.5)) - expect_equal(round(range(opus$spectra[[1]]), 4), c(0.0130, 0.6112)) +test_that("read_spec() and write_spec() work nicely together", { + expect_silent(yml <- read_spec(file.path(tmp, "test.yml"))) + expect_silent(jsn <- read_spec(file.path(tmp, "test.json"))) + expect_silent(rds <- read_spec(file.path(tmp, "test.rds"))) + + expect_equal(jsn, yml) + expect_equal(rds, raman_hdpe) + expect_equal(jsn[1:2], raman_hdpe[1:2]) + expect_equal(yml[1:2], raman_hdpe[1:2]) }) # Tidy up From f353c78bb0d1366c856550119e0094834f632b82 Mon Sep 17 00:00:00 2001 From: Zacharias Steinmetz Date: Tue, 13 Dec 2022 15:47:34 +0100 Subject: [PATCH 04/35] Tidy imports --- R/io_spec.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/R/io_spec.R b/R/io_spec.R index 2ae8acfc..e397f0f5 100644 --- a/R/io_spec.R +++ b/R/io_spec.R @@ -44,8 +44,6 @@ #' \code{\link[yaml]{write_yaml}()}; \code{\link[yaml]{read_yaml}()}; #' \code{\link[jsonlite]{write_json}()}; \code{\link[jsonlite]{read_json}()}; #' -#' @importFrom magrittr %>% -#' @importFrom data.table data.table as.data.table fread #' @export write_spec <- function(x, ...) { UseMethod("write_spec") @@ -86,6 +84,7 @@ write_spec.OpenSpecy <- function(x, file, method = NULL, #' #' @importFrom yaml read_yaml #' @importFrom jsonlite read_json +#' @importFrom data.table as.data.table #' @export read_spec <- function(file, share = NULL, method = NULL, ...) { if (is.null(method)) { From 649a8f302d3cc41301f04c4bda54c4f9d1db8c05 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Wed, 21 Dec 2022 12:49:14 -0500 Subject: [PATCH 05/35] adding documentation --- R/as_OpenSpecy.R | 40 +++++++++++++------- man/as_OpenSpecy.Rd | 90 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 107 insertions(+), 23 deletions(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index a9056cda..39d6d62c 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -7,15 +7,16 @@ #' possible. #' #' @details -#' \code{as_OpenSpecy()} converts spectral datasets to a threepart list, -#' one with a vector of the wavenumbers of the spectra, +#' \code{as_OpenSpecy()} converts spectral datasets to a three part list, +#' the first with a vector of the wavenumbers of the spectra, #' the second with a \code{data.table} of all spectral intensities ordered as #' columns, #' the third item is another \code{data.table} with any metadata the user #' provides or is harvested from the files themselves. Currently metadata #' harvesting from jdx and opus files are supported as well as the two #' Open Specy write formats yaml and json. There are many unique iterations of -#' spectral file formats so there may be bugs in the file conversion. +#' spectral file formats so there may be bugs in the file conversion if using proprietary formats like spa, spc, .0 +#' but we are doing the best we can to prevent them. #' Please contact us if you identify any. #' #' The \code{metadata} argument may contain a named list with the following @@ -80,18 +81,31 @@ #' with \code{digest(object[c("wavenumber", "spectra")])}\cr #' } #' -#' @param x x. -#' @param spectra spectra. -#' @param metadata file = NULL. -#' @param coords coords = "gen_grid". +#' @param x depending on the method, a list with all Open Specy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format. +#' @param spectra spectral intensities formatted as a data.table with one column per spectrum. +#' @param metadata metadata for each spectrum with one row per spectrum, see details. +#' @param coords spatial coordinates for the spectra. #' @param colnames cols. +#' @param n number of spectra to generate the spatial coordinate grid with. #' @param \ldots args. #' #' @return -#' return -#' +#' \code{as_OpenSpecy()} and \code{OpenSpecy()} returns three part lists described in details. +#' \code{is_OpenSpecy()} returns TRUE if the object is an OpenSpecy and FALSE if not. +#' \code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data. +#' #' @examples -#' c() +#' data("raman_hdpe") #Read in an example spectrum for Raman HDPE. +#' +#' #Inspect the spectra +#' raman_hdpe #See how Open Specy objects print. +#' raman_hdpe$wavenumber #Look at just the wavenumbers of the spectra. +#' raman_hdpe$spectra #Look at just the spectral intensities data.table. +#' raman_hdpe$metadata $Look at just the metadata of the spectra. +#' +#' is_OpenSpecy(raman_hdpe) #Test that the spectrum is formatted as an Open Specy object. +#' gen_grid(n = 5) #Create a spatial grid for spectra when there isn't one specified by the data. +#' #' #' @author #' Zacharias Steinmetz, Win Cowger @@ -264,8 +278,8 @@ OpenSpecy <- function(x, ...) { #' @rdname as_OpenSpecy #' #' @export -gen_grid <- function(x) { - base <- sqrt(x) - expand.grid(x = 1:ceiling(base), y = 1:ceiling(base))[1:x,] |> +gen_grid <- function(n) { + base <- sqrt(n) + expand.grid(x = 1:ceiling(base), y = 1:ceiling(base))[1:n,] |> as.data.table() } diff --git a/man/as_OpenSpecy.Rd b/man/as_OpenSpecy.Rd index 302c3646..8e7cef27 100644 --- a/man/as_OpenSpecy.Rd +++ b/man/as_OpenSpecy.Rd @@ -40,42 +40,112 @@ is_OpenSpecy(x) OpenSpecy(x, ...) -gen_grid(x) +gen_grid(n) } \arguments{ -\item{x}{x.} +\item{x}{depending on the method, a list with all Open Specy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format.} \item{colnames}{cols.} -\item{spectra}{spectra.} +\item{spectra}{spectral intensities formatted as a data.table with one column per spectrum.} -\item{metadata}{file = NULL.} +\item{metadata}{metadata for each spectrum with one row per spectrum, see details.} -\item{coords}{coords = "gen_grid".} +\item{coords}{spatial coordinates for the spectra.} + +\item{n}{number of spectra to generate the spatial coordinate grid with.} \item{\ldots}{args.} } \value{ -return +\code{as_OpenSpecy()} and \code{OpenSpecy()} returns three part lists described in details. +\code{is_OpenSpecy()} returns TRUE if the object is an OpenSpecy and FALSE if not. +\code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data. } \description{ Functions to check if an object is an Open Specy spectrum, or coerce it if possible. } \details{ -\code{as_OpenSpecy()} converts spectral datasets to a threepart list, -one with a vector of the wavenumbers of the spectra, +\code{as_OpenSpecy()} converts spectral datasets to a three part list, +the first with a vector of the wavenumbers of the spectra, the second with a \code{data.table} of all spectral intensities ordered as columns, the third item is another \code{data.table} with any metadata the user provides or is harvested from the files themselves. Currently metadata harvesting from jdx and opus files are supported as well as the two Open Specy write formats yaml and json. There are many unique iterations of -spectral file formats so there may be bugs in the file conversion. +spectral file formats so there may be bugs in the file conversion if using proprietary formats like spa, spc, .0 +but we are doing the best we can to prevent them. Please contact us if you identify any. + +The \code{metadata} argument may contain a named list with the following +details (\code{*} = minimum recommended): + +\tabular{ll}{ +\code{file_name*}: \tab The file name, defaults to +\code{\link[base]{basename}()} if not specified\cr +\code{user_name*}: \tab User name, e.g. "Win Cowger"\cr +\code{contact_info}: \tab Contact information, e.g. "1-513-673-8956, +wincowger@gmail.com"\cr +\code{organization}: \tab Affiliation, e.g. "University of California, +Riverside"\cr +\code{citation}: \tab Data citation, e.g. "Primpke, S., Wirth, M., Lorenz, +C., & Gerdts, G. (2018). Reference database design for the automated analysis +of microplastic samples based on Fourier transform infrared (FTIR) +spectroscopy. \emph{Analytical and Bioanalytical Chemistry}. +\doi{10.1007/s00216-018-1156-x}"\cr +\code{spectrum_type*}: \tab Raman or FTIR\cr +\code{spectrum_identity*}: \tab Material/polymer analyzed, e.g. +"Polystyrene"\cr +\code{material_form}: \tab Form of the material analyzed, e.g. textile fiber, +rubber band, sphere, granule \cr +\code{material_phase}: \tab Phase of the material analyzed (liquid, gas, +solid) \cr +\code{material_producer}: \tab Producer of the material analyzed, +e.g. Dow \cr +\code{material_purity}: \tab Purity of the material analyzed, e.g. 99.98\% +\cr +\code{material_quality}: \tab Quality of the material analyzed, e.g. +consumer product, manufacturer material, analytical standard, +environmental sample \cr +\code{material_color}: \tab Color of the material analyzed, +e.g. blue, #0000ff, (0, 0, 255) \cr +\code{material_other}: \tab Other material description, e.g. 5 µm diameter +fibers, 1 mm spherical particles \cr +\code{cas_number}: \tab CAS number, e.g. 9003-53-6 \cr +\code{instrument_used}: \tab Instrument used, e.g. Horiba LabRam \cr +\code{instrument_accessories}: \tab Instrument accessories, e.g. +Focal Plane Array, CCD\cr +\code{instrument_mode}: \tab Instrument modes/settings, e.g. +transmission, reflectance \cr +\code{spectral_resolution}: \tab Spectral resolution, e.g. 4/cm \cr +\code{laser_light_used}: \tab Wavelength of the laser/light used, e.g. +785 nm \cr +\code{number_of_accumulations}: \tab Number of accumulations, e.g 5 \cr +\code{total_acquisition_time_s}: \tab Total acquisition time (s), e.g. 10 s +\cr +\code{data_processing_procedure}: \tab Data processing procedure, +e.g. spikefilter, baseline correction, none \cr +\code{level_of_confidence_in_identification}: \tab Level of confidence in +identification, e.g. 99\% \cr +\code{other_info}: \tab Other information \cr +\code{license}: \tab The license of the shared spectrum; defaults to +\code{"CC BY-NC"} (see +\url{https://creativecommons.org/licenses/by-nc/4.0/} for details). Any other +creative commons license is allowed, for example, CC0 or CC BY \cr +\code{session_id}: \tab A unique user and session identifier; populated +automatically with \code{paste(digest(Sys.info()), digest(sessionInfo()), +sep = "/")}\cr +\code{file_id}: \tab A unique file identifier; populated automatically +with \code{digest(object[c("wavenumber", "spectra")])}\cr +} } \examples{ -c() +data("raman_hdpe") #Read in an example spectrum for Raman HDPE. +raman_hdpe #See how Open Specy objects print. +is_OpenSpecy(raman_hdpe) #Test that the spectrum is formatted as an Open Specy object. + } \seealso{ From ec02b2238d52760a04028520c52239c6c7b829f3 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Wed, 21 Dec 2022 13:29:14 -0500 Subject: [PATCH 06/35] allow user to specify session_id to improve reproducibility. --- R/as_OpenSpecy.R | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index 39d6d62c..14279681 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -103,7 +103,14 @@ #' raman_hdpe$spectra #Look at just the spectral intensities data.table. #' raman_hdpe$metadata $Look at just the metadata of the spectra. #' -#' is_OpenSpecy(raman_hdpe) #Test that the spectrum is formatted as an Open Specy object. +#' #Demonstrate compatibility in creating an Open Specy from its components. +#' created_OpenSpecy <- as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")]) +#' identical(as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")]), raman_hdpe) +#' +#' #Test that the spectrum is formatted as an Open Specy object. +#' is_OpenSpecy(raman_hdpe) +#' +#' #Create an artificial spatial grid #' gen_grid(n = 5) #Create a spatial grid for spectra when there isn't one specified by the data. #' #' @@ -209,6 +216,7 @@ as_OpenSpecy.default <- function(x, spectra, total_acquisition_time_s = NULL, data_processing_procedure = NULL, level_of_confidence_in_identification = NULL, + session_id = NULL, other_info = NULL, license = "CC BY-NC"), coords = "gen_grid", @@ -243,9 +251,14 @@ as_OpenSpecy.default <- function(x, spectra, if (!is.null(metadata)) { if (inherits(metadata, c("data.frame", "list"))) { obj$metadata <- cbind(obj$metadata, as.data.table(metadata)) - obj$metadata$session_id <- paste(digest(Sys.info()), - digest(sessionInfo()), - sep = "/") + if(is.null(metadata$session_id)){ + obj$metadata$session_id <- paste(digest(Sys.info()), + digest(sessionInfo()), + sep = "/") + } + else{ + obj$metadata$session_id <- metadata$session_id + } if(!c("file_id") %in% names(obj$metadata)) { obj$metadata$file_id = digest(obj[c("wavenumber", "spectra")]) } From d6115bbb2f01a801f1934e39c34189aa2865d3d4 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Wed, 21 Dec 2022 13:38:38 -0500 Subject: [PATCH 07/35] update documentation --- R/as_OpenSpecy.R | 22 ++++++++++++++++------ man/as_OpenSpecy.Rd | 32 ++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index 14279681..42a20e08 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -98,21 +98,31 @@ #' data("raman_hdpe") #Read in an example spectrum for Raman HDPE. #' #' #Inspect the spectra -#' raman_hdpe #See how Open Specy objects print. +#' raman_hdpe #See how OpenSpecy objects print. #' raman_hdpe$wavenumber #Look at just the wavenumbers of the spectra. #' raman_hdpe$spectra #Look at just the spectral intensities data.table. #' raman_hdpe$metadata $Look at just the metadata of the spectra. #' -#' #Demonstrate compatibility in creating an Open Specy from its components. -#' created_OpenSpecy <- as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")]) -#' identical(as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")]), raman_hdpe) +#' #Demonstrate compatibility in creating an OpenSpecy from its components. +#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$metadata == raman_hdpe$metadata +#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$spectra == raman_hdpe$spectra +#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$wavenumber == raman_hdpe$wavenumber +#' +#' #Demonstrate creating a list and transforming to OpenSpecy +#' as_OpenSpecy(list(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])) +#' +#' #If you try to produce an OpenSpecy using an OpenSpecy it will just return the same object. +#' as_OpenSpecy(raman_hdpe) +#' +#' #Method for creating an OpenSpecy from a data.frame +#' as_OpenSpecy(x = data.frame(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra$intensity)) #' #' #Test that the spectrum is formatted as an Open Specy object. -#' is_OpenSpecy(raman_hdpe) +#' is_OpenSpecy(raman_hdpe) #should be TRUE +#' is_OpenSpecy(raman_hdpe$spectra) #should be FALSE #' #' #Create an artificial spatial grid #' gen_grid(n = 5) #Create a spatial grid for spectra when there isn't one specified by the data. -#' #' #' @author #' Zacharias Steinmetz, Win Cowger diff --git a/man/as_OpenSpecy.Rd b/man/as_OpenSpecy.Rd index 8e7cef27..e864119f 100644 --- a/man/as_OpenSpecy.Rd +++ b/man/as_OpenSpecy.Rd @@ -30,8 +30,8 @@ as_OpenSpecy(x, ...) spectral_resolution = NULL, laser_light_used = NULL, number_of_accumulations = NULL, total_acquisition_time_s = NULL, data_processing_procedure = NULL, - level_of_confidence_in_identification = NULL, other_info = NULL, license = - "CC BY-NC"), + level_of_confidence_in_identification = NULL, session_id = NULL, other_info = NULL, + license = "CC BY-NC"), coords = "gen_grid", ... ) @@ -143,9 +143,33 @@ with \code{digest(object[c("wavenumber", "spectra")])}\cr } \examples{ data("raman_hdpe") #Read in an example spectrum for Raman HDPE. -raman_hdpe #See how Open Specy objects print. -is_OpenSpecy(raman_hdpe) #Test that the spectrum is formatted as an Open Specy object. +#Inspect the spectra +raman_hdpe #See how OpenSpecy objects print. +raman_hdpe$wavenumber #Look at just the wavenumbers of the spectra. +raman_hdpe$spectra #Look at just the spectral intensities data.table. +raman_hdpe$metadata $Look at just the metadata of the spectra. + +#Demonstrate compatibility in creating an OpenSpecy from its components. +as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$metadata == raman_hdpe$metadata +as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$spectra == raman_hdpe$spectra +as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$wavenumber == raman_hdpe$wavenumber + +#Demonstrate creating a list and transforming to OpenSpecy +as_OpenSpecy(list(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])) + +#If you try to produce an OpenSpecy using an OpenSpecy it will just return the same object. +as_OpenSpecy(raman_hdpe) + +#Method for creating an OpenSpecy from a data.frame +as_OpenSpecy(x = data.frame(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra$intensity)) + +#Test that the spectrum is formatted as an Open Specy object. +is_OpenSpecy(raman_hdpe) #should be TRUE +is_OpenSpecy(raman_hdpe$spectra) #should be FALSE + +#Create an artificial spatial grid +gen_grid(n = 5) #Create a spatial grid for spectra when there isn't one specified by the data. } \seealso{ From b21394336aeabba10ca2f1b30564fae74fc1f422 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 06:16:02 -0500 Subject: [PATCH 08/35] Open Specy's are not going to be equal if they are generated at different times because of the session id. --- tests/testthat/test-as_OpenSpecy.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-as_OpenSpecy.R b/tests/testthat/test-as_OpenSpecy.R index 293c1513..0e3e878e 100644 --- a/tests/testthat/test-as_OpenSpecy.R +++ b/tests/testthat/test-as_OpenSpecy.R @@ -19,7 +19,7 @@ test_that("as_OpenSpecy() generates OpenSpecy objects", { expect_equal(names(osl), c("wavenumber", "spectra", "metadata")) expect_equal(OpenSpecy(df), OpenSpecy(osf)) - expect_equal(ost, osf) + expect_equal(ost$spectra, osf$spectra) expect_true(is_OpenSpecy(osf)) expect_true(is_OpenSpecy(ost)) From e8c5c57fac730de232944c18a6abd1446376d20a Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 06:25:14 -0500 Subject: [PATCH 09/35] make session id an option. --- R/as_OpenSpecy.R | 13 +++++-------- tests/testthat/test-as_OpenSpecy.R | 2 ++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index 42a20e08..673b53a4 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -104,9 +104,9 @@ #' raman_hdpe$metadata $Look at just the metadata of the spectra. #' #' #Demonstrate compatibility in creating an OpenSpecy from its components. -#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$metadata == raman_hdpe$metadata -#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$spectra == raman_hdpe$spectra -#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$wavenumber == raman_hdpe$wavenumber +#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$metadata == raman_hdpe$metadata +#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$spectra == raman_hdpe$spectra +#' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$wavenumber == raman_hdpe$wavenumber #' #' #Demonstrate creating a list and transforming to OpenSpecy #' as_OpenSpecy(list(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])) @@ -226,10 +226,10 @@ as_OpenSpecy.default <- function(x, spectra, total_acquisition_time_s = NULL, data_processing_procedure = NULL, level_of_confidence_in_identification = NULL, - session_id = NULL, other_info = NULL, license = "CC BY-NC"), coords = "gen_grid", + session_id = F, ...) { if (!is.numeric(x) && !is.complex(x) && !is.logical(x)) stop("'x' must be numeric or logical", call. = F) @@ -261,14 +261,11 @@ as_OpenSpecy.default <- function(x, spectra, if (!is.null(metadata)) { if (inherits(metadata, c("data.frame", "list"))) { obj$metadata <- cbind(obj$metadata, as.data.table(metadata)) - if(is.null(metadata$session_id)){ + if(session_id){ obj$metadata$session_id <- paste(digest(Sys.info()), digest(sessionInfo()), sep = "/") } - else{ - obj$metadata$session_id <- metadata$session_id - } if(!c("file_id") %in% names(obj$metadata)) { obj$metadata$file_id = digest(obj[c("wavenumber", "spectra")]) } diff --git a/tests/testthat/test-as_OpenSpecy.R b/tests/testthat/test-as_OpenSpecy.R index 0e3e878e..eeee61c6 100644 --- a/tests/testthat/test-as_OpenSpecy.R +++ b/tests/testthat/test-as_OpenSpecy.R @@ -20,6 +20,8 @@ test_that("as_OpenSpecy() generates OpenSpecy objects", { expect_equal(OpenSpecy(df), OpenSpecy(osf)) expect_equal(ost$spectra, osf$spectra) + expect_equal(ost$wavenumber, osf$wavenumber) + expect_equal(ost$metadata, osf$metadata) expect_true(is_OpenSpecy(osf)) expect_true(is_OpenSpecy(ost)) From b89df720462fefeb28899937797931e6355f0ea2 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 06:30:18 -0500 Subject: [PATCH 10/35] add docs --- man/as_OpenSpecy.Rd | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/man/as_OpenSpecy.Rd b/man/as_OpenSpecy.Rd index e864119f..4563c90b 100644 --- a/man/as_OpenSpecy.Rd +++ b/man/as_OpenSpecy.Rd @@ -30,9 +30,10 @@ as_OpenSpecy(x, ...) spectral_resolution = NULL, laser_light_used = NULL, number_of_accumulations = NULL, total_acquisition_time_s = NULL, data_processing_procedure = NULL, - level_of_confidence_in_identification = NULL, session_id = NULL, other_info = NULL, - license = "CC BY-NC"), + level_of_confidence_in_identification = NULL, other_info = NULL, license = + "CC BY-NC"), coords = "gen_grid", + session_id = F, ... ) @@ -151,9 +152,9 @@ raman_hdpe$spectra #Look at just the spectral intensities data.table. raman_hdpe$metadata $Look at just the metadata of the spectra. #Demonstrate compatibility in creating an OpenSpecy from its components. -as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$metadata == raman_hdpe$metadata -as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$spectra == raman_hdpe$spectra -as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])$wavenumber == raman_hdpe$wavenumber +as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$metadata == raman_hdpe$metadata +as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$spectra == raman_hdpe$spectra +as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$wavenumber == raman_hdpe$wavenumber #Demonstrate creating a list and transforming to OpenSpecy as_OpenSpecy(list(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")])) From 4cae565a961b668fb6ffa7f95fdf6819981cb908 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 06:47:19 -0500 Subject: [PATCH 11/35] add intensity units to metadata, we can use this to auto correct spectra when the metadata is present. --- R/as_OpenSpecy.R | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index 673b53a4..f06dae39 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -1,6 +1,6 @@ #' @rdname as_OpenSpecy #' -#' @title Coerce to Open Specy +#' @title OpenSpecy object opperations #' #' @description #' Functions to check if an object is an Open Specy spectrum, or coerce it if @@ -14,10 +14,7 @@ #' the third item is another \code{data.table} with any metadata the user #' provides or is harvested from the files themselves. Currently metadata #' harvesting from jdx and opus files are supported as well as the two -#' Open Specy write formats yaml and json. There are many unique iterations of -#' spectral file formats so there may be bugs in the file conversion if using proprietary formats like spa, spc, .0 -#' but we are doing the best we can to prevent them. -#' Please contact us if you identify any. +#' Open Specy write formats yaml and json. #' #' The \code{metadata} argument may contain a named list with the following #' details (\code{*} = minimum recommended): @@ -59,6 +56,8 @@ #' Focal Plane Array, CCD\cr #' \code{instrument_mode}: \tab Instrument modes/settings, e.g. #' transmission, reflectance \cr +#' \code{intensity_units*}: \tab Units of the intensity values for the spectrum, options +#' transmittance, reflectance, absorbance \cr #' \code{spectral_resolution}: \tab Spectral resolution, e.g. 4/cm \cr #' \code{laser_light_used}: \tab Wavelength of the laser/light used, e.g. #' 785 nm \cr @@ -85,14 +84,15 @@ #' @param spectra spectral intensities formatted as a data.table with one column per spectrum. #' @param metadata metadata for each spectrum with one row per spectrum, see details. #' @param coords spatial coordinates for the spectra. -#' @param colnames cols. +#' @param session_id TRUE or FALSE whether to add a session ID to the metadata. The session ID is based on current session info so metadata of the same spectra will not return equal if session info changes. Sometimes that is desirable. +#' @param colnames names of the wavenumber column and spectra column, makes assumptions based on column names or placement if NULL. #' @param n number of spectra to generate the spatial coordinate grid with. -#' @param \ldots args. +#' @param \ldots additional arguments. #' #' @return -#' \code{as_OpenSpecy()} and \code{OpenSpecy()} returns three part lists described in details. -#' \code{is_OpenSpecy()} returns TRUE if the object is an OpenSpecy and FALSE if not. -#' \code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data. +#' \code{as_OpenSpecy()} and \code{OpenSpecy()} returns three part lists described in details. \cr +#' \code{is_OpenSpecy()} returns TRUE if the object is an OpenSpecy and FALSE if not.\cr +#' \code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data.\cr #' #' @examples #' data("raman_hdpe") #Read in an example spectrum for Raman HDPE. @@ -101,7 +101,7 @@ #' raman_hdpe #See how OpenSpecy objects print. #' raman_hdpe$wavenumber #Look at just the wavenumbers of the spectra. #' raman_hdpe$spectra #Look at just the spectral intensities data.table. -#' raman_hdpe$metadata $Look at just the metadata of the spectra. +#' raman_hdpe$metadata #Look at just the metadata of the spectra. #' #' #Demonstrate compatibility in creating an OpenSpecy from its components. #' as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$metadata == raman_hdpe$metadata @@ -122,7 +122,7 @@ #' is_OpenSpecy(raman_hdpe$spectra) #should be FALSE #' #' #Create an artificial spatial grid -#' gen_grid(n = 5) #Create a spatial grid for spectra when there isn't one specified by the data. +#' gen_grid(n = 5) #' #' @author #' Zacharias Steinmetz, Win Cowger @@ -220,6 +220,7 @@ as_OpenSpecy.default <- function(x, spectra, instrument_used = NULL, instrument_accessories = NULL, instrument_mode = NULL, + intensity_units = NULL, spectral_resolution = NULL, laser_light_used = NULL, number_of_accumulations = NULL, From 44588167087f0a6a7fa1c2c8f59910bd3bfc40ea Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 06:50:09 -0500 Subject: [PATCH 12/35] Call things OpenSpecy if referring to the object type or Open Specy if something else. --- R/as_OpenSpecy.R | 8 ++++---- man/as_OpenSpecy.Rd | 35 ++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index f06dae39..5c5e4da8 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -3,7 +3,7 @@ #' @title OpenSpecy object opperations #' #' @description -#' Functions to check if an object is an Open Specy spectrum, or coerce it if +#' Functions to check if an object is an OpenSpecy, or coerce it if #' possible. #' #' @details @@ -14,7 +14,7 @@ #' the third item is another \code{data.table} with any metadata the user #' provides or is harvested from the files themselves. Currently metadata #' harvesting from jdx and opus files are supported as well as the two -#' Open Specy write formats yaml and json. +#' OpenSpecy write formats yaml and json. #' #' The \code{metadata} argument may contain a named list with the following #' details (\code{*} = minimum recommended): @@ -80,7 +80,7 @@ #' with \code{digest(object[c("wavenumber", "spectra")])}\cr #' } #' -#' @param x depending on the method, a list with all Open Specy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format. +#' @param x depending on the method, a list with all OpenSpecy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format. #' @param spectra spectral intensities formatted as a data.table with one column per spectrum. #' @param metadata metadata for each spectrum with one row per spectrum, see details. #' @param coords spatial coordinates for the spectra. @@ -117,7 +117,7 @@ #' #Method for creating an OpenSpecy from a data.frame #' as_OpenSpecy(x = data.frame(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra$intensity)) #' -#' #Test that the spectrum is formatted as an Open Specy object. +#' #Test that the spectrum is formatted as an OpenSpecy object. #' is_OpenSpecy(raman_hdpe) #should be TRUE #' is_OpenSpecy(raman_hdpe$spectra) #should be FALSE #' diff --git a/man/as_OpenSpecy.Rd b/man/as_OpenSpecy.Rd index 4563c90b..1ffc50c3 100644 --- a/man/as_OpenSpecy.Rd +++ b/man/as_OpenSpecy.Rd @@ -9,7 +9,7 @@ \alias{is_OpenSpecy} \alias{OpenSpecy} \alias{gen_grid} -\title{Coerce to Open Specy} +\title{OpenSpecy object opperations} \usage{ as_OpenSpecy(x, ...) @@ -27,11 +27,11 @@ as_OpenSpecy(x, ...) = NULL, material_phase = NULL, material_producer = NULL, material_purity = NULL, material_quality = NULL, material_color = NULL, material_other = NULL, cas_number = NULL, instrument_used = NULL, instrument_accessories = NULL, instrument_mode = NULL, - spectral_resolution = NULL, laser_light_used = NULL, number_of_accumulations = NULL, - total_acquisition_time_s = NULL, - data_processing_procedure = NULL, - level_of_confidence_in_identification = NULL, other_info = NULL, license = - "CC BY-NC"), + intensity_units = NULL, spectral_resolution = NULL, laser_light_used = NULL, + number_of_accumulations = NULL, + total_acquisition_time_s = NULL, + data_processing_procedure = NULL, level_of_confidence_in_identification = NULL, + other_info = NULL, license = "CC BY-NC"), coords = "gen_grid", session_id = F, ... @@ -46,7 +46,7 @@ gen_grid(n) \arguments{ \item{x}{depending on the method, a list with all Open Specy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format.} -\item{colnames}{cols.} +\item{colnames}{names of the wavenumber column and spectra column, makes assumptions based on column names or placement if NULL.} \item{spectra}{spectral intensities formatted as a data.table with one column per spectrum.} @@ -54,14 +54,16 @@ gen_grid(n) \item{coords}{spatial coordinates for the spectra.} +\item{session_id}{TRUE or FALSE whether to add a session ID to the metadata. The session ID is based on current session info so metadata of the same spectra will not return equal if session info changes. Sometimes that is desirable.} + \item{n}{number of spectra to generate the spatial coordinate grid with.} -\item{\ldots}{args.} +\item{\ldots}{additional arguments.} } \value{ -\code{as_OpenSpecy()} and \code{OpenSpecy()} returns three part lists described in details. -\code{is_OpenSpecy()} returns TRUE if the object is an OpenSpecy and FALSE if not. -\code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data. +\code{as_OpenSpecy()} and \code{OpenSpecy()} returns three part lists described in details. \cr +\code{is_OpenSpecy()} returns TRUE if the object is an OpenSpecy and FALSE if not.\cr +\code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data.\cr } \description{ Functions to check if an object is an Open Specy spectrum, or coerce it if @@ -75,10 +77,7 @@ columns, the third item is another \code{data.table} with any metadata the user provides or is harvested from the files themselves. Currently metadata harvesting from jdx and opus files are supported as well as the two -Open Specy write formats yaml and json. There are many unique iterations of -spectral file formats so there may be bugs in the file conversion if using proprietary formats like spa, spc, .0 -but we are doing the best we can to prevent them. -Please contact us if you identify any. +Open Specy write formats yaml and json. The \code{metadata} argument may contain a named list with the following details (\code{*} = minimum recommended): @@ -120,6 +119,8 @@ fibers, 1 mm spherical particles \cr Focal Plane Array, CCD\cr \code{instrument_mode}: \tab Instrument modes/settings, e.g. transmission, reflectance \cr +\code{intensity_units*}: \tab Units of the intensity values for the spectrum, options +transmittance, reflectance, absorbance \cr \code{spectral_resolution}: \tab Spectral resolution, e.g. 4/cm \cr \code{laser_light_used}: \tab Wavelength of the laser/light used, e.g. 785 nm \cr @@ -149,7 +150,7 @@ data("raman_hdpe") #Read in an example spectrum for Raman HDPE. raman_hdpe #See how OpenSpecy objects print. raman_hdpe$wavenumber #Look at just the wavenumbers of the spectra. raman_hdpe$spectra #Look at just the spectral intensities data.table. -raman_hdpe$metadata $Look at just the metadata of the spectra. +raman_hdpe$metadata #Look at just the metadata of the spectra. #Demonstrate compatibility in creating an OpenSpecy from its components. as_OpenSpecy(x = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra, metadata = raman_hdpe$metadata[,-c("x", "y")], coords = raman_hdpe$metadata[,c("x", "y")])$metadata == raman_hdpe$metadata @@ -170,7 +171,7 @@ is_OpenSpecy(raman_hdpe) #should be TRUE is_OpenSpecy(raman_hdpe$spectra) #should be FALSE #Create an artificial spatial grid -gen_grid(n = 5) #Create a spatial grid for spectra when there isn't one specified by the data. +gen_grid(n = 5) } \seealso{ From 0a96aab75aa0b648e4c0ebadc451ed926f6a5396 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 06:51:51 -0500 Subject: [PATCH 13/35] update documentation. --- man/as_OpenSpecy.Rd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/man/as_OpenSpecy.Rd b/man/as_OpenSpecy.Rd index 1ffc50c3..194b5544 100644 --- a/man/as_OpenSpecy.Rd +++ b/man/as_OpenSpecy.Rd @@ -44,7 +44,7 @@ OpenSpecy(x, ...) gen_grid(n) } \arguments{ -\item{x}{depending on the method, a list with all Open Specy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format.} +\item{x}{depending on the method, a list with all OpenSpecy parameters, a vector with the wavenumbers for all spectra, or a data.frame with a full spectrum in the classic Open Specy format.} \item{colnames}{names of the wavenumber column and spectra column, makes assumptions based on column names or placement if NULL.} @@ -66,7 +66,7 @@ gen_grid(n) \code{gen_grid()} returns a \code{data.table} with x y coordinates to use for generating a spatial grid for the spectra if one is not specified in the data.\cr } \description{ -Functions to check if an object is an Open Specy spectrum, or coerce it if +Functions to check if an object is an OpenSpecy, or coerce it if possible. } \details{ @@ -77,7 +77,7 @@ columns, the third item is another \code{data.table} with any metadata the user provides or is harvested from the files themselves. Currently metadata harvesting from jdx and opus files are supported as well as the two -Open Specy write formats yaml and json. +OpenSpecy write formats yaml and json. The \code{metadata} argument may contain a named list with the following details (\code{*} = minimum recommended): @@ -166,7 +166,7 @@ as_OpenSpecy(raman_hdpe) #Method for creating an OpenSpecy from a data.frame as_OpenSpecy(x = data.frame(wavenumber = raman_hdpe$wavenumber, spectra = raman_hdpe$spectra$intensity)) -#Test that the spectrum is formatted as an Open Specy object. +#Test that the spectrum is formatted as an OpenSpecy object. is_OpenSpecy(raman_hdpe) #should be TRUE is_OpenSpecy(raman_hdpe$spectra) #should be FALSE From 9568f2c7a49790ed6e667ec58e5e227836eeb01c Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 07:04:04 -0500 Subject: [PATCH 14/35] merge with previous updates. --- R/as_OpenSpecy.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/as_OpenSpecy.R b/R/as_OpenSpecy.R index 5c5e4da8..13d5d749 100644 --- a/R/as_OpenSpecy.R +++ b/R/as_OpenSpecy.R @@ -1,6 +1,6 @@ #' @rdname as_OpenSpecy #' -#' @title OpenSpecy object opperations +#' @title OpenSpecy object operations #' #' @description #' Functions to check if an object is an OpenSpecy, or coerce it if From 07b82e02dd938ada15d7663df9f1ba7135010eaf Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 07:42:52 -0500 Subject: [PATCH 15/35] add errors check tests update docs. --- R/io_spec.R | 22 ++++++++++++++-------- R/read_ext.R | 16 +++++++++++----- man/as_OpenSpecy.Rd | 2 +- man/io_spec.Rd | 16 +++++++++++----- man/read_ext.Rd | 16 +++++++++++----- 5 files changed, 48 insertions(+), 24 deletions(-) diff --git a/R/io_spec.R b/R/io_spec.R index e397f0f5..7f1dae25 100644 --- a/R/io_spec.R +++ b/R/io_spec.R @@ -3,14 +3,16 @@ #' @title Read and write spectral data #' #' @description -#' Functions for reading and writing spectral data from Open Specy .yaml, .json, -#' or .rds. +#' Functions for reading and writing spectral data to and from OpenSpecy format. +#' Currently supported formats are .yaml, .json, or .rds. #' #' @details -#' reference to qs +#' Due to floating point number errors there may be some differences in the precision +#' of the numbers returned if using multiple devices for json and yaml files +#' but the numbers should be nearly identical. readRDS should return the exact same object every time. #' #' @param x a list object of class \code{\link{OpenSpecy}}. -#' @param file file to be read from or written to. +#' @param file file path to be read from or written to. If writing, files will be written as the type designated in the file name. #' @param share defaults to \code{NULL}; needed to share spectra with the #' Open Specy community; see \code{\link{share_spec}()} for details. #' @param method submethod to be used for reading text files; defaults to @@ -21,15 +23,19 @@ #' @param \ldots further arguments passed to the submethods. #' #' @return -#' \code{read_spec()} returns a list object of class \code{\link{OpenSpecy}()} +#' \code{read_spec()} reads data formatted as an OpenSpecy object and returns a list object of class \code{\link{OpenSpecy}()} +#' containing spectral data. \cr +#' \code{write_spec()} writes a file for an object of class \code{\link{OpenSpecy}()} #' containing spectral data. #' #' @examples #' read_spec(read_extdata("raman_hdpe.yml")) #' read_spec(read_extdata("raman_hdpe.json")) #' read_spec(read_extdata("raman_hdpe.rds")) -#' +#' #' \dontrun{ +#' data(raman_hdpe) +#' #Specify the file type you want to write to using the extension at the end of the file name. #' write_spec(raman_hdpe, "raman_hdpe.yml") #' write_spec(raman_hdpe, "raman_hdpe.json") #' write_spec(raman_hdpe, "raman_hdpe.rds") @@ -72,7 +78,7 @@ write_spec.OpenSpecy <- function(x, file, method = NULL, } else if (grepl("\\.rds$", file, ignore.case = T)) { saveRDS(x, file = file, ...) } else { - stop("unknown file type: specify a method to write custom formats", + stop("unknown file type: specify a method to write custom formats or provide one of the supported .yml, .json, or .rds formats as the file extension", call. = F) } } else { @@ -105,7 +111,7 @@ read_spec <- function(file, share = NULL, method = NULL, ...) { } else if (grepl("\\.rds$", file, ignore.case = T)) { os <- readRDS(file, ...) } else { - stop("unknown file type: specify a method to read custom formats", + stop("unknown file type: specify a method to read custom formats or provide files of one of the supported file types .yml, .json, .rds", call. = F) } } else { diff --git a/R/read_ext.R b/R/read_ext.R index 64b31041..a1b2cfbd 100644 --- a/R/read_ext.R +++ b/R/read_ext.R @@ -1,10 +1,12 @@ #' @rdname read_ext #' -#' @title Read spectral data from external files +#' @title Read spectral data #' #' @description #' Functions for reading spectral data types including .asp, .jdx, -#' .spc, .spa, .0, and .csv. +#' .spc, .spa, .0, and .csv. Currently supported reading formats are .0, .asp, .spc, .csv, .spa, .zip, .yaml, .json, and .rds. +#' If a zip file, the function supports any of the files listed above or additionally map files in .dat and .hdr format. +#' Proprietary file formats like .0, .asp, and .spa are poorly supported but will likely still work in most cases. #' #' @details #' \code{read_spc()} and \code{read_jdx()} are just a wrapper around the @@ -101,9 +103,13 @@ #' named \code{"wavenumber"} and \code{"intensity"}. #' #' @examples -#' read_text(read_extdata("raman_hdpe.csv")) -#' read_asp(read_extdata("ftir_ldpe_soil.asp")) -#' read_opus(read_extdata("ftir_ps.0")) +#' read_any(read_extdata("raman_hdpe.csv")) +#' read_any(read_extdata("raman_atacamit.spc")) +#' read_any(read_extdata("CA_tiny_map.zip")) +#' read_any(read_extdata("ftir_nitrocellulose.jdx")) +#' read_any(read_extdata("ftir_ldpe_soil.asp")) +#' read_any(read_extdata("testdata_zipped.zip")) +#' read_any(read_extdata("ftir_ps.0")) #' #' @author #' Zacharias Steinmetz, Win Cowger diff --git a/man/as_OpenSpecy.Rd b/man/as_OpenSpecy.Rd index 194b5544..b2a24e0e 100644 --- a/man/as_OpenSpecy.Rd +++ b/man/as_OpenSpecy.Rd @@ -9,7 +9,7 @@ \alias{is_OpenSpecy} \alias{OpenSpecy} \alias{gen_grid} -\title{OpenSpecy object opperations} +\title{OpenSpecy object operations} \usage{ as_OpenSpecy(x, ...) diff --git a/man/io_spec.Rd b/man/io_spec.Rd index 369b9398..44fed340 100644 --- a/man/io_spec.Rd +++ b/man/io_spec.Rd @@ -18,7 +18,7 @@ read_spec(file, share = NULL, method = NULL, ...) \arguments{ \item{x}{a list object of class \code{\link{OpenSpecy}}.} -\item{file}{file to be read from or written to.} +\item{file}{file path to be read from or written to. If writing, files will be written as the type designated in the file name.} \item{method}{submethod to be used for reading text files; defaults to \code{\link[data.table]{fread}()} but \code{\link[utils]{read.csv}()} works @@ -33,15 +33,19 @@ Open Specy community; see \code{\link{share_spec}()} for details.} \item{\ldots}{further arguments passed to the submethods.} } \value{ -\code{read_spec()} returns a list object of class \code{\link{OpenSpecy}()} +\code{read_spec()} reads data formatted as an OpenSpecy object and returns a list object of class \code{\link{OpenSpecy}()} +containing spectral data. \cr +\code{write_spec()} writes a file for an object of class \code{\link{OpenSpecy}()} containing spectral data. } \description{ -Functions for reading and writing spectral data from Open Specy .yaml, .json, -or .rds. +Functions for reading and writing spectral data to and from OpenSpecy format. +Currently supported formats are .yaml, .json, or .rds. } \details{ -reference to qs +Due to floating point number errors there may be some differences in the precision +of the numbers returned if using multiple devices for json and yaml files +but the numbers should be nearly identical. readRDS should return the exact same object every time. } \examples{ read_spec(read_extdata("raman_hdpe.yml")) @@ -49,6 +53,8 @@ read_spec(read_extdata("raman_hdpe.json")) read_spec(read_extdata("raman_hdpe.rds")) \dontrun{ +data(raman_hdpe) +#Specify the file type you want to write to using the extension at the end of the file name. write_spec(raman_hdpe, "raman_hdpe.yml") write_spec(raman_hdpe, "raman_hdpe.json") write_spec(raman_hdpe, "raman_hdpe.rds") diff --git a/man/read_ext.Rd b/man/read_ext.Rd index 9da71f51..ff2f49b0 100644 --- a/man/read_ext.Rd +++ b/man/read_ext.Rd @@ -8,7 +8,7 @@ \alias{read_jdx} \alias{read_spc} \alias{read_extdata} -\title{Read spectral data from external files} +\title{Read spectral data} \usage{ read_any(file, share = NULL) @@ -124,7 +124,9 @@ named \code{"wavenumber"} and \code{"intensity"}. } \description{ Functions for reading spectral data types including .asp, .jdx, -.spc, .spa, .0, and .csv. +.spc, .spa, .0, and .csv. Currently supported reading formats are .0, .asp, .spc, .csv, .spa, .zip, .yaml, .json, and .rds. +If a zip file, the function supports any of the files listed above or additionally map files in .dat and .hdr format. +Proprietary file formats like .0, .asp, and .spa are poorly supported but will likely still work in most cases. } \details{ \code{read_spc()} and \code{read_jdx()} are just a wrapper around the @@ -206,9 +208,13 @@ with \code{digest(object[c("wavenumber", "spectra")])}\cr } } \examples{ -read_text(read_extdata("raman_hdpe.csv")) -read_asp(read_extdata("ftir_ldpe_soil.asp")) -read_opus(read_extdata("ftir_ps.0")) +read_any(read_extdata("raman_hdpe.csv")) +read_any(read_extdata("raman_atacamit.spc")) +read_any(read_extdata("CA_tiny_map.zip")) +read_any(read_extdata("ftir_nitrocellulose.jdx")) +read_any(read_extdata("ftir_ldpe_soil.asp")) +read_any(read_extdata("testdata_zipped.zip")) +read_any(read_extdata("ftir_ps.0")) } \seealso{ From f54b75c5815cbb4313ca8bc3d4d8659304218306 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 07:56:15 -0500 Subject: [PATCH 16/35] add Zacharias --- R/raman_hdpe.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/raman_hdpe.R b/R/raman_hdpe.R index 5dad233d..e255091b 100644 --- a/R/raman_hdpe.R +++ b/R/raman_hdpe.R @@ -18,10 +18,10 @@ #' print(raman_hdpe) #' #' @author -#' Win Cowger +#' Zacharias Steinmetz, Win Cowger #' #' @references -#' Cowger W, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, +#' Cowger W, Steinmetz Z, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, #' De Frond H, Deshpande AD, Hemabessiere L, Lee E, Mill L, et al. (2020). #' “Critical Review of Processing and Classification Techniques for Images and #' Spectra in Microplastic Research.” \emph{Applied Spectroscopy}, From 8a4b42c0cd78ad9bf40a83b10777226e0ca54a7e Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 07:58:34 -0500 Subject: [PATCH 17/35] update docs --- man/raman_hdpe.Rd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/raman_hdpe.Rd b/man/raman_hdpe.Rd index 3a390ce6..3dace7d1 100644 --- a/man/raman_hdpe.Rd +++ b/man/raman_hdpe.Rd @@ -23,13 +23,13 @@ print(raman_hdpe) } \references{ -Cowger W, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, +Cowger W, Steinmetz Z, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, De Frond H, Deshpande AD, Hemabessiere L, Lee E, Mill L, et al. (2020). “Critical Review of Processing and Classification Techniques for Images and Spectra in Microplastic Research.” \emph{Applied Spectroscopy}, \strong{74}(9), 989–1010. \doi{10.1177/0003702820929064}. } \author{ -Win Cowger +Zacharias Steinmetz, Win Cowger } \keyword{data} From a6e9d93b38c5d1385aed0418063ab31c9b7bac0e Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Thu, 22 Dec 2022 08:29:55 -0500 Subject: [PATCH 18/35] add packagedown documentation --- .Rbuildignore | 3 +++ .github/workflows/pkgdown.yaml | 46 ++++++++++++++++++++++++++++++++++ .gitignore | 1 + DESCRIPTION | 3 ++- _pkgdown.yml | 5 ++++ man/OpenSpecy-package.Rd | 1 + 6 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/pkgdown.yaml create mode 100644 _pkgdown.yml diff --git a/.Rbuildignore b/.Rbuildignore index 30a1020c..53aaa071 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -10,3 +10,6 @@ google-analytics.js droptoken.rds ^cran-comments\.md$ ^CRAN-RELEASE$ +^_pkgdown\.yml$ +^docs$ +^pkgdown$ diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml new file mode 100644 index 00000000..087f0b05 --- /dev/null +++ b/.github/workflows/pkgdown.yaml @@ -0,0 +1,46 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + release: + types: [published] + workflow_dispatch: + +name: pkgdown + +jobs: + pkgdown: + runs-on: ubuntu-latest + # Only restrict concurrency for non-PR jobs + concurrency: + group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v3 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::pkgdown, local::. + needs: website + + - name: Build site + run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + shell: Rscript {0} + + - name: Deploy to GitHub pages 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4.4.1 + with: + clean: false + branch: gh-pages + folder: docs diff --git a/.gitignore b/.gitignore index e9c1d972..a5fff210 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ docs/ # ignore old datasets but don't remove inst/shiny/ +docs diff --git a/DESCRIPTION b/DESCRIPTION index e3d6dd03..8c942667 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -35,7 +35,8 @@ Description: Raman and (FT)IR spectral analysis tool for plastic particles and Analyzed spectra can be shared with the Open Specy community. A Shiny app is available via run_app() or online at . -URL: https://github.com/wincowgerDEV/OpenSpecy-package/ +URL: https://github.com/wincowgerDEV/OpenSpecy-package/, + http://wincowger.com/OpenSpecy-package/ BugReports: https://github.com/wincowgerDEV/OpenSpecy-package/issues/ License: CC BY 4.0 Encoding: UTF-8 diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 00000000..e4781cad --- /dev/null +++ b/_pkgdown.yml @@ -0,0 +1,5 @@ +url: http://wincowger.com/OpenSpecy-package/ +template: + bootstrap: 5 + bootswatch: cerulean + diff --git a/man/OpenSpecy-package.Rd b/man/OpenSpecy-package.Rd index 15bb36e5..dfd6f8c0 100644 --- a/man/OpenSpecy-package.Rd +++ b/man/OpenSpecy-package.Rd @@ -47,6 +47,7 @@ Background Subtraction Algorithm for Biomedical Raman Spectroscopy.” Useful links: \itemize{ \item \url{https://github.com/wincowgerDEV/OpenSpecy-package/} + \item \url{http://wincowger.com/OpenSpecy-package/} \item Report bugs at \url{https://github.com/wincowgerDEV/OpenSpecy-package/issues/} } From ee16a98558c9494fd561cc871b59ba5e2946d43e Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Fri, 23 Dec 2022 07:50:29 -0500 Subject: [PATCH 19/35] move files --- _pkgdown.yml | 1 - vignettes/{images => }/analyzeplot.png | Bin .../{images => }/baselinecorrectionpoly.jpg | Bin vignettes/{images => }/deselection.jpg | Bin vignettes/{images => }/download.jpg | Bin vignettes/{images => }/flowchart.png | Bin vignettes/{images => }/googletranslate.jpg | Bin vignettes/{images => }/horiba-1.png | Bin vignettes/{images => }/horiba-2.png | Bin vignettes/{images => }/horiba-3.png | Bin vignettes/{images => }/horiba-4.png | Bin vignettes/{images => }/horiba-5.png | Bin vignettes/{images => }/hoverexample.jpg | Bin .../{images => }/intensityadjustment.jpg | Bin vignettes/{images => }/mainpage.jpg | Bin vignettes/{images => }/matches.jpg | Bin vignettes/{images => }/matchplot.png | Bin vignettes/{images => }/metadatainput.jpg | Bin vignettes/{images => }/preprocessplot.png | Bin vignettes/{images => }/rangeselection.jpg | Bin vignettes/{images => }/regiontomatch.jpg | Bin vignettes/{images => }/removetoolexample.jpg | Bin vignettes/{images => }/samplefile.jpg | Bin vignettes/{images => }/selectionmetadata.jpg | Bin vignettes/{images => }/sharemetadata.jpg | Bin vignettes/{images => }/smoothing.jpg | Bin vignettes/{images => }/smoothingpoly.jpg | Bin vignettes/sop.Rmd | 58 +- vignettes/sop.html | 981 ------------------ vignettes/{images => }/spectragryph-1.png | Bin vignettes/{images => }/spectragryph-2.png | Bin vignettes/{images => }/spectrumtoanalyze.jpg | Bin vignettes/{images => }/spectrumtype.jpg | Bin vignettes/{images => }/toolexample.jpg | Bin vignettes/{images => }/uploadfile.jpg | Bin 35 files changed, 29 insertions(+), 1011 deletions(-) rename vignettes/{images => }/analyzeplot.png (100%) rename vignettes/{images => }/baselinecorrectionpoly.jpg (100%) rename vignettes/{images => }/deselection.jpg (100%) rename vignettes/{images => }/download.jpg (100%) rename vignettes/{images => }/flowchart.png (100%) rename vignettes/{images => }/googletranslate.jpg (100%) rename vignettes/{images => }/horiba-1.png (100%) rename vignettes/{images => }/horiba-2.png (100%) rename vignettes/{images => }/horiba-3.png (100%) rename vignettes/{images => }/horiba-4.png (100%) rename vignettes/{images => }/horiba-5.png (100%) rename vignettes/{images => }/hoverexample.jpg (100%) rename vignettes/{images => }/intensityadjustment.jpg (100%) rename vignettes/{images => }/mainpage.jpg (100%) rename vignettes/{images => }/matches.jpg (100%) rename vignettes/{images => }/matchplot.png (100%) rename vignettes/{images => }/metadatainput.jpg (100%) rename vignettes/{images => }/preprocessplot.png (100%) rename vignettes/{images => }/rangeselection.jpg (100%) rename vignettes/{images => }/regiontomatch.jpg (100%) rename vignettes/{images => }/removetoolexample.jpg (100%) rename vignettes/{images => }/samplefile.jpg (100%) rename vignettes/{images => }/selectionmetadata.jpg (100%) rename vignettes/{images => }/sharemetadata.jpg (100%) rename vignettes/{images => }/smoothing.jpg (100%) rename vignettes/{images => }/smoothingpoly.jpg (100%) delete mode 100644 vignettes/sop.html rename vignettes/{images => }/spectragryph-1.png (100%) rename vignettes/{images => }/spectragryph-2.png (100%) rename vignettes/{images => }/spectrumtoanalyze.jpg (100%) rename vignettes/{images => }/spectrumtype.jpg (100%) rename vignettes/{images => }/toolexample.jpg (100%) rename vignettes/{images => }/uploadfile.jpg (100%) diff --git a/_pkgdown.yml b/_pkgdown.yml index e4781cad..c4c150e4 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,5 +1,4 @@ url: http://wincowger.com/OpenSpecy-package/ template: bootstrap: 5 - bootswatch: cerulean diff --git a/vignettes/images/analyzeplot.png b/vignettes/analyzeplot.png similarity index 100% rename from vignettes/images/analyzeplot.png rename to vignettes/analyzeplot.png diff --git a/vignettes/images/baselinecorrectionpoly.jpg b/vignettes/baselinecorrectionpoly.jpg similarity index 100% rename from vignettes/images/baselinecorrectionpoly.jpg rename to vignettes/baselinecorrectionpoly.jpg diff --git a/vignettes/images/deselection.jpg b/vignettes/deselection.jpg similarity index 100% rename from vignettes/images/deselection.jpg rename to vignettes/deselection.jpg diff --git a/vignettes/images/download.jpg b/vignettes/download.jpg similarity index 100% rename from vignettes/images/download.jpg rename to vignettes/download.jpg diff --git a/vignettes/images/flowchart.png b/vignettes/flowchart.png similarity index 100% rename from vignettes/images/flowchart.png rename to vignettes/flowchart.png diff --git a/vignettes/images/googletranslate.jpg b/vignettes/googletranslate.jpg similarity index 100% rename from vignettes/images/googletranslate.jpg rename to vignettes/googletranslate.jpg diff --git a/vignettes/images/horiba-1.png b/vignettes/horiba-1.png similarity index 100% rename from vignettes/images/horiba-1.png rename to vignettes/horiba-1.png diff --git a/vignettes/images/horiba-2.png b/vignettes/horiba-2.png similarity index 100% rename from vignettes/images/horiba-2.png rename to vignettes/horiba-2.png diff --git a/vignettes/images/horiba-3.png b/vignettes/horiba-3.png similarity index 100% rename from vignettes/images/horiba-3.png rename to vignettes/horiba-3.png diff --git a/vignettes/images/horiba-4.png b/vignettes/horiba-4.png similarity index 100% rename from vignettes/images/horiba-4.png rename to vignettes/horiba-4.png diff --git a/vignettes/images/horiba-5.png b/vignettes/horiba-5.png similarity index 100% rename from vignettes/images/horiba-5.png rename to vignettes/horiba-5.png diff --git a/vignettes/images/hoverexample.jpg b/vignettes/hoverexample.jpg similarity index 100% rename from vignettes/images/hoverexample.jpg rename to vignettes/hoverexample.jpg diff --git a/vignettes/images/intensityadjustment.jpg b/vignettes/intensityadjustment.jpg similarity index 100% rename from vignettes/images/intensityadjustment.jpg rename to vignettes/intensityadjustment.jpg diff --git a/vignettes/images/mainpage.jpg b/vignettes/mainpage.jpg similarity index 100% rename from vignettes/images/mainpage.jpg rename to vignettes/mainpage.jpg diff --git a/vignettes/images/matches.jpg b/vignettes/matches.jpg similarity index 100% rename from vignettes/images/matches.jpg rename to vignettes/matches.jpg diff --git a/vignettes/images/matchplot.png b/vignettes/matchplot.png similarity index 100% rename from vignettes/images/matchplot.png rename to vignettes/matchplot.png diff --git a/vignettes/images/metadatainput.jpg b/vignettes/metadatainput.jpg similarity index 100% rename from vignettes/images/metadatainput.jpg rename to vignettes/metadatainput.jpg diff --git a/vignettes/images/preprocessplot.png b/vignettes/preprocessplot.png similarity index 100% rename from vignettes/images/preprocessplot.png rename to vignettes/preprocessplot.png diff --git a/vignettes/images/rangeselection.jpg b/vignettes/rangeselection.jpg similarity index 100% rename from vignettes/images/rangeselection.jpg rename to vignettes/rangeselection.jpg diff --git a/vignettes/images/regiontomatch.jpg b/vignettes/regiontomatch.jpg similarity index 100% rename from vignettes/images/regiontomatch.jpg rename to vignettes/regiontomatch.jpg diff --git a/vignettes/images/removetoolexample.jpg b/vignettes/removetoolexample.jpg similarity index 100% rename from vignettes/images/removetoolexample.jpg rename to vignettes/removetoolexample.jpg diff --git a/vignettes/images/samplefile.jpg b/vignettes/samplefile.jpg similarity index 100% rename from vignettes/images/samplefile.jpg rename to vignettes/samplefile.jpg diff --git a/vignettes/images/selectionmetadata.jpg b/vignettes/selectionmetadata.jpg similarity index 100% rename from vignettes/images/selectionmetadata.jpg rename to vignettes/selectionmetadata.jpg diff --git a/vignettes/images/sharemetadata.jpg b/vignettes/sharemetadata.jpg similarity index 100% rename from vignettes/images/sharemetadata.jpg rename to vignettes/sharemetadata.jpg diff --git a/vignettes/images/smoothing.jpg b/vignettes/smoothing.jpg similarity index 100% rename from vignettes/images/smoothing.jpg rename to vignettes/smoothing.jpg diff --git a/vignettes/images/smoothingpoly.jpg b/vignettes/smoothingpoly.jpg similarity index 100% rename from vignettes/images/smoothingpoly.jpg rename to vignettes/smoothingpoly.jpg diff --git a/vignettes/sop.Rmd b/vignettes/sop.Rmd index 15e98411..decabf3b 100644 --- a/vignettes/sop.Rmd +++ b/vignettes/sop.Rmd @@ -57,7 +57,7 @@ run_app() Then click the **Upload File** tab at the top of the page. ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/mainpage.jpg") +knitr::include_graphics("mainpage.jpg") ``` Accessibility is extremely important to us and we are making strives to improve @@ -69,13 +69,13 @@ easily translate the app. We know that not all languages will be fully supported but we will continue to try and improve the translations. ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/googletranslate.jpg") +knitr::include_graphics("googletranslate.jpg") ``` ## Download a test dataset ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/samplefile.jpg") +knitr::include_graphics("samplefile.jpg") ``` If you don't have your own data to use right away, that is ok. You can @@ -92,7 +92,7 @@ data("raman_hdpe") ## Choose whether to share your uploaded data or not ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/uploadfile.jpg") +knitr::include_graphics("uploadfile.jpg") ``` Before uploading, indicate if you would like to share the @@ -165,7 +165,7 @@ from the **Intensity Adjustment** selection. ## Intensity Adjustment ```{r, fig.align='center', echo=FALSE} -knitr::include_graphics("images/intensityadjustment.jpg") +knitr::include_graphics("intensityadjustment.jpg") ``` Open Specy assumes that intensity units are in absorbance units but @@ -191,7 +191,7 @@ head(raman_adj) ## Share metadata on known spectra ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/metadatainput.jpg") +knitr::include_graphics("metadatainput.jpg") ``` To share metadata about your spectrum, click the metadata input button. @@ -210,7 +210,7 @@ and metadata is sent to an [open-access online repository](https://osf.io/rjg3c/). ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/sharemetadata.jpg") +knitr::include_graphics("sharemetadata.jpg") ``` All inputs from the metadata (described below) are input to a @@ -249,7 +249,7 @@ your parameters for processing the spectrum. ## Preprocess Spectra Plot ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/preprocessplot.png") +knitr::include_graphics("preprocessplot.png") ``` The preprocess spectra plot shows the uploaded spectra in comparison to @@ -262,7 +262,7 @@ high intensities and non-peak regions should have low intensities. ## Preprocessing Tools ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/smoothing.jpg") +knitr::include_graphics("smoothing.jpg") ``` When the slider is green for the tool type, that means that that tool is being @@ -270,7 +270,7 @@ used to preprocess the spectrum. If the slider is clicked blank, the cog button to the right will disappear to indicate that the tool is no longer being used. ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/deselection.jpg") +knitr::include_graphics("deselection.jpg") ``` If the cog button is clicked, any functions associated with that tool will be @@ -279,7 +279,7 @@ displayed and can be manipulated to process the spectrum. ## Smoothing Polynomial ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/smoothingpoly.jpg") +knitr::include_graphics("smoothingpoly.jpg") ``` The first step of the Open Specy preprocessing routing is spectral @@ -338,7 +338,7 @@ head(raman_smooth) ## Baseline Correction Polynomial ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/baselinecorrectionpoly.jpg") +knitr::include_graphics("baselinecorrectionpoly.jpg") ``` The second step of Open Specy's preprocessing routine is baseline @@ -387,7 +387,7 @@ head(raman_bgc) ## Spectral Range ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/rangeselection.jpg") +knitr::include_graphics("rangeselection.jpg") ``` The final step of preprocessing is restricting the spectral range. @@ -405,7 +405,7 @@ removing noise and influence from less relevant spectral data. ## Download Data ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/download.jpg") +knitr::include_graphics("download.jpg") ``` After you have the preprocessing parameters set, we recommend that you @@ -431,7 +431,7 @@ parameters below. ## Spectrum Type ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/spectrumtype.jpg") +knitr::include_graphics("spectrumtype.jpg") ``` The spectra type input on the "Match spectra" tab specifies the type of @@ -442,7 +442,7 @@ the Raman library to make the match. ## Spectrum To Analyze ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/spectrumtoanalyze.jpg") +knitr::include_graphics("spectrumtoanalyze.jpg") ``` The spectra to analyze input specifies if the tool will match the @@ -453,7 +453,7 @@ Preprocess Spectra Tab). ## Region To Match ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/regiontomatch.jpg") +knitr::include_graphics("regiontomatch.jpg") ``` The region to match input specifies if the "Full Spectrum" will match @@ -469,7 +469,7 @@ interpretation of the match, this is not the best approach. ## Match Table ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/matches.jpg") +knitr::include_graphics("matches.jpg") ``` The selectable table shows the top material matches returned by the tool, @@ -507,7 +507,7 @@ match_spec(raman_bgc, library = spec_lib, which = "raman") ## Selection Metadata ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/selectionmetadata.jpg") +knitr::include_graphics("selectionmetadata.jpg") ``` Whatever match is selected from the match table may have additional @@ -526,7 +526,7 @@ find_spec(sample_name == 5381, library = spec_lib, which = "raman") ## Match Plot ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/matchplot.png") +knitr::include_graphics("matchplot.png") ``` This plot is dynamically updated by selecting matches from the match @@ -615,21 +615,21 @@ these low, medium, and high density PE samples all look relatively similar (figures courtesy of Bridget O\'Donnell, Horiba Scientific): ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-1.png") +knitr::include_graphics("horiba-1.png") ``` But, a closer look at the 1450 cm^-1^ band reveals clear differences: ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-2.png") +knitr::include_graphics("horiba-2.png") ``` When you overlay them, you start to see differences in other spectral regions too: ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-3.png") +knitr::include_graphics("horiba-3.png") ``` So, the question is, how do we deal with samples that are very similar @@ -659,14 +659,14 @@ distinguishable compared to the PE results above (nylon 6, 6-6, 6-9, bottom): ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-4.png") +knitr::include_graphics("horiba-4.png") ``` The differences are even more pronounced when you overlay the spectra: ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-5.png") +knitr::include_graphics("horiba-5.png") ``` ### What to do when matches aren't making sense @@ -694,26 +694,26 @@ knitr::include_graphics("images/horiba-5.png") into the console. ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/spectragryph-1.png") +knitr::include_graphics("spectragryph-1.png") ``` 3. Click File, Save/export data, save data as, and save it as an spc file. ¸ ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/spectragryph-2.png") +knitr::include_graphics("spectragryph-2.png") ``` 4. Then upload that .spc file to Open Specy. ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/uploadfile.jpg") +knitr::include_graphics("uploadfile.jpg") ``` ## Conceptual diagram of data flow through Open Specy ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/flowchart.png") +knitr::include_graphics("flowchart.png") ``` # References diff --git a/vignettes/sop.html b/vignettes/sop.html deleted file mode 100644 index a1445a82..00000000 --- a/vignettes/sop.html +++ /dev/null @@ -1,981 +0,0 @@ - - - - - - - - - - - - - - - -Standard Operating Procedure - - - - - - - - - - - - - - - - - - - - - - - - - - -

Standard Operating Procedure

-

Jessica Meyers, Jeremy Conkle, Win Cowger, -Zacharias Steinmetz, Andrew Gray, Chelsea Rochman, Sebastian Primpke, -Jennifer Lynch, Hannah Hapich, Hannah De Frond, Keenan Munno, Bridget -O’Donnell

-

2022-10-27

- - - -

Open Specy Raman and (FT)IR spectral analysis tool for plastic -particles and other environmental samples. Supported features include -reading spectral data files (.asp, .csv, .jdx, .spc, .spa, .0), -smoothing spectral intensities with smooth_intens(), -correcting background with subtr_bg(), and identifying -spectra using an onboard reference library. Analyzed spectra can be -shared with the Open Specy community. A Shiny app is available via -run_app() or online at https://openanalysis.org/openspecy/.

-

This document outlines a common workflow for using Open Specy and -highlights some topics that users are often requesting a tutorial on. If -the document is followed sequentially from beginning to end, the user -will have a better understanding of every procedure involved in using -Open Specy as a tool for interpreting spectra. It takes approximately 45 -minutes to read through and follow along with this standard operating -procedure the first time. Afterward, knowledgeable users should be able -to thoroughly analyze individual spectra at an average speed of 1 -min-1.

-
-

Getting started

-
library(OpenSpecy)
-
-
-

Viewing and Sharing Spectra

-

To get started with the Open Specy user interface, access https://openanalysis.org/openspecy/ -or start the Shiny GUI directly from R typing

-
run_app()
-

Then click the Upload File tab at the top of the -page.

-

-

Accessibility is extremely important to us and we are making strives -to improve the accessibility of Open Specy for all spectroscopists. -Please reach out if you have ideas for improvement.

-

We added a Google translate plugin to all pages in the app so that -you can easily translate the app. We know that not all languages will be -fully supported but we will continue to try and improve the -translations.

-

-
-

Download a test dataset

-

-

If you don’t have your own data to use right away, that is ok. You -can download test data to try out the tool by clicking on the test data -button. A .csv file of HDPE Raman spectrum will download on your -computer. This file can also be used as a template for formatting .csv -data into an Open Specy accepted format. The following line of code does -the same:

-
data("raman_hdpe")
-
-
-

Choose whether to share your uploaded data or not

-

-

Before uploading, indicate if you would like to share the uploaded -data or not using the slider. If selected, any data uploaded to the tool -will automatically be shared under CC-BY 4.0 -license and will be available for researchers and other ventures to -use to improve spectral analysis, build machine learning tools, etc. -Some users may choose not to share if they need to keep their data -private. If switched off, none of the uploaded data will be stored or -shared in Open Specy.

-
-
-

Upload/Read Data

-

Open Specy allows for upload of .csv, .asp, .jdx, .0, .spc, and .spa -files. .csv files should always load correctly but the other file types -are still in beta development, though most of the time these files work -perfectly. It is best practice to cross check files in the proprietary -software they came from and Open Specy before use in Open Specy. Due to -the complexity of these file types, we haven’t been able to make them -fully compatible yet. If your file is not working, please contact the -administrator and share the file so that we can get it to work.

-

For the most consistent results, files should be converted to .csv -format before uploading to Open Specy. The specific steps to converting -your instrument’s native files to .csv can be found in its software -manual or you can check out Spectragryph, which -supports many spectral file conversions (see Mini Tutorial section: File -conversion in Spectragryph to Open Specy accepted format).

-

If uploading a .csv file, label the column with the wavenumbers -wavenumber and name the column with the intensities -intensity.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sample data raman_hdpe
wavenumberintensity
301.04026
304.63250
308.22148
311.81045
315.39846
318.98342
-

Wavenumber units must be cm-1. Any other columns are not -used by the software. Always keep a copy of the original file before -alteration to preserve metadata and raw data for your records.

-

To upload data, click Browse and choose one of your -files to upload, or drag and drop your file into the gray box. At this -time you can only upload one file at a time.

-

Upon upload and throughout the analysis, intensity values are min-max -normalized (Equation 1).

-\[\frac{x - \mathrm{min}(x)}{\mathrm{min}(x) -- \mathrm{max}(x)}\] -

-Equation 1: Max-Min Normalization -

-

The following R functions from the Open Specy package will also read -in spectral data accordingly:

-
read_text(".csv")
-read_asp(".asp")
-read_opus(".0")
-
-
-

Viewing Spectra Plot

-

After spectral data are uploaded, it will appear in the main window. -This plot is selectable, zoomable, and provides information on hover. -You can also save a .png file of the plot view using the camera icon at -the top right when you hover over the plot. This plot will change the -view based on updates from the Intensity Adjustment -selection.

-
-
-

Intensity Adjustment

-

-

Open Specy assumes that intensity units are in absorbance units but -Open Specy can adjust reflectance or transmittance spectra to absorbance -units using this selection in the upload file tab. The transmittance -adjustment uses the \(\log_{10} 1/T\) -calculation which does not correct for system or particle -characteristics. The reflectance adjustment use the Kubelka-Munk -equation \(\frac{(1-R)^2}{2R}\). If -none is selected, Open Specy assumes that the uploaded data is an -absorbance spectrum and does not apply an adjustment.

-

This is the respective R code:

-
library(magrittr)
-
-raman_adj <- raman_hdpe %>%
-  adj_intens()
-
-head(raman_adj)
-#>    wavenumber  intensity
-#> 1:    301.040 0.00000000
-#> 2:    304.632 0.03037975
-#> 3:    308.221 0.02784810
-#> 4:    311.810 0.02405063
-#> 5:    315.398 0.02531646
-#> 6:    318.983 0.02025316
-
-
-

Share metadata on known spectra

-

-

To share metadata about your spectrum, click the metadata input -button. When sharing data, please provide as much metadata as you can. -Metadata helps make shared data as useful as possible. Metadata inputs -each have examples provided in the input. The examples disappear when -the box is clicked and will not be saved if nothing is input by the -user. Mandatory inputs are marked with a red asterisk. If these inputs -are not filled, the data will be considered uninterpretable and will be -discarded. Inputs left blank will be left blank in the metadata sheet -and interpreted as “unknown” or “not applicable”. To share metadata, -click the share data button at the bottom of the metadata inputs.

-

When the user clicks the Share Data button their -current uploaded data and metadata is sent to an open-access online repository.

-

-

All inputs from the metadata (described below) are input to a -metadata sheet. The metadata sheet is given the same unique name as the -data, but it ends with “_form”. The exact same data is saved as would be -downloaded using the download data button (described below). All high -quality uploaded data with metadata will eventually be reviewed by -spectroscopy experts and added to the internal library if it passes -review. If multiple files are going to be uploaded with metadata, the -cells will also stay filled with the last input after the share data -button is clicked. Just upload the next dataset and change the metadata -inputs that are different. If more than 50 files will be shared at once, -you can contact the website administrator to get a bulk upload sheet for -more rapid upload.

-

Type

-
share_spec(raman_hdpe,
-           metadata = c(user_name = "Win Cowger",
-                        contact_info = "wincowger@gmail.com",
-                        spectrum_type = "Raman",
-                        spectrum_identity = "HDPE")
-           )
-

to share your spectral data from the R console.

-
-
-
-

Preprocessing

-

After uploading data, you can preprocess the data using baseline -correction, smoothing, and range selection and save your preprocessed -data. Go to the Preprocess Spectrum tab to select your -parameters for processing the spectrum.

-
-

Preprocess Spectra Plot

-

-

The preprocess spectra plot shows the uploaded spectra in comparison -to the processed spectra that has been processed using the processing -inputs on the page. It will automatically update with any new slider -inputs. This allows the user to tune the inputs to optimize the signal -to noise ratio. The goal with preprocessing is to make peak regions have -high intensities and non-peak regions should have low intensities.

-
-
-

Preprocessing Tools

-

-

When the slider is green for the tool type, that means that that tool -is being used to preprocess the spectrum. If the slider is clicked -blank, the cog button to the right will disappear to indicate that the -tool is no longer being used.

-

-

If the cog button is clicked, any functions associated with that tool -will be displayed and can be manipulated to process the spectrum.

-
-
-

Smoothing Polynomial

-

-

The first step of the Open Specy preprocessing routing is spectral -smoothing. The goal of this function is to increase the signal to noise -ratio (S/N) without distorting the shape or relative size of the peaks. -The value on the slider is the polynomial order of the Savitzky-Golay -(SG) filter. The SG filter is fit to a moving window of 11 data -points where the center point in the window is replaced with the -polynomial estimate. The number of data points in the window is not user -adjustable. Higher numbers lead to more wiggly fits and thus less -smooth, lower numbers lead to more smooth fits, a 7th order polynomial -will make the spectrum have almost no smoothing. If smoothing is set to -0 then no smoothing is conducted on the spectrum. When smoothing is done -well, peak shapes and relative heights should not change. Typically a -3rd order polynomial (3 on the slider) works to increase the signal to -noise without distortion, but if the spectrum is noisy, decrease -polynomial order and if it is already smooth, increase the polynomial -order to the maximum (7). Examples of smoothing below:

-
- -

Sample raman_hdpe spectrum with -different smoothing polynomials (p) from Cowger et al. (2020).

-
-

The different degrees of smoothing were achieved with the following R -commands:

-
smooth_intens(raman_hdpe, p = 1)
-smooth_intens(raman_hdpe, p = 4)
-

The intensity-adjusted sample spectrum raman_adj is -smoothed accordingly:

-
raman_smooth <- raman_adj %>% 
-  smooth_intens()
-
-head(raman_smooth)
-#>    wavenumber  intensity
-#> 1:    301.040 0.00000000
-#> 2:    304.632 0.01568318
-#> 3:    308.221 0.02461353
-#> 4:    311.810 0.02828915
-#> 5:    315.398 0.02820811
-#> 6:    318.983 0.02586852
-
-
-

Baseline Correction Polynomial

-

-

The second step of Open Specy’s preprocessing routine is baseline -correction. The goal of baseline correction is to get all non-peak -regions of the spectra to zero absorbance. The higher the polynomial -order, the more wiggly the fit to the baseline. If the baseline is not -very wiggly, a more wiggly fit could remove peaks which is not desired. -The baseline correction algorithm used in Open Specy is called -“iModPolyfit” (Zhao et al. 2007). This algorithm iteratively fits -polynomial equations of the specified order to the whole spectrum. -During the first fit iteration, peak regions will often be above the -baseline fit. The data in the peak region is removed from the fit to -make sure that the baseline is less likely to fit to the peaks. The -iterative fitting terminates once the difference between the new and -previous fit is small. An example of a good baseline fit below.

-
- -

Sample raman_hdpe spectrum with -different degrees of background subtraction (Cowger et al., 2020).

-
-

The smoothed sample spectrum raman_smooth is -background-corrected as follows:

-
raman_bgc <- raman_smooth %>% 
-  subtr_bg()
-
-head(raman_bgc)
-#>    wavenumber   intensity
-#> 1:    301.040 0.000000000
-#> 2:    304.632 0.000000000
-#> 3:    308.221 0.006298355
-#> 4:    311.810 0.008146146
-#> 5:    315.398 0.007025667
-#> 6:    318.983 0.004412447
-
-
-

Spectral Range

-

-

The final step of preprocessing is restricting the spectral range. -Sometimes the instrument operates with high noise at the ends of the -spectrum and sometimes the baseline fit can produce distortions at the -ends of the spectrum, both can be removed using this routine. You should -look into the signal to noise ratio of your specific instrument by -wavelength to determine what wavelength ranges to use. Distortions due -to baseline fit can be assessed from looking at the preprocess spectra -plot. Additionally, you can restrict the range to examine a single peak -or a subset of peaks of interests. This function allows users to isolate -peaks of interest for matching, while removing noise and influence from -less relevant spectral data.

-
-
-

Download Data

-

-

After you have the preprocessing parameters set, we recommend that -you download the preprocessed data for your records. The download data -button will append the uploaded data to three columns created by the -preprocessing parameters. “Wavelength” and “Absorbance” are columns from -the data uploaded by the user. “NormalizedIntensity” is the max-min -normalized value (Equation 1) of the “Absorbance”. “Smoothed” is the -Savitzky-Golay filter specified by the slider explained above. -“BaselineRemoved” is the smoothed and baseline corrected value that is -visible on the center plot.

-
-
-
-

Matching

-

After uploading data and preprocessing it (if desired) you can now -identify the spectrum. To identify the spectrum go to the Match -Spectrum tab.

-

You will see your spectrum and the top matches, but before looking at -matches, you need to check the three selectable parameters below.

-
-

Spectrum Type

-

-

The spectra type input on the “Match spectra” tab specifies the type -of spectra (Raman or FTIR) that the user has uploaded and wants to match -to. This input will tell the website whether to use the FTIR library or -the Raman library to make the match.

-
-
-

Spectrum To Analyze

-

-

The spectra to analyze input specifies if the tool will match the -Uploaded spectra (unaltered by the inputs on the -Preprocess Spectra tab) or the Processed -Spectra (manipulated by the inputs in the Preprocess Spectra -Tab).

-
-
-

Region To Match

-

-

The region to match input specifies if the “Full Spectrum” will match -the entire range of the spectra (including non peak regions) in the -reference database. This is the most intuitive match. Or should the -Peaks Only match just the peak regions in the reference -database. This is an advanced feature proposed in Renner et al. (2017). -This can be a less intuitive approach but in cases where there are few -peaks and high baseline interference, it could be the best option. In -cases where non-peak regions are important for the interpretation of the -match, this is not the best approach.

-
-
-

Match Table

-

-

The selectable table shows the top material matches returned by the -tool, their Pearson’s r value, and the organization they were provided -by. When rows are selected their spectra are added to the match plot. -The spectrum being matched and reference library are determined by the -previously mentioned parameters. During the matching process, one final -cleaning step happens using a simple minimum subtraction algorithm -(Equation 2) which in many cases will allow unprocessed spectra to -remove subtle baseline, but will not harm the spectra which has no -baseline. Then, these aligned data are tested for correlation using the -Pearson’s r. The Pearson’s r is used as a match quality indicator and -the spectra from the top 1000 best matches are returned from the -library. You can restrict the libraries which are displayed in the table -by clicking the box that says All under the -Organization column.

-

Similarly you can restrict the range of Pearson's r values or search -for specific material types.

-\[\mathrm{for~each}~peak~group^{1,n}: x - -\mathrm{min}(x)\] -

-Equation 2: Minimum Subtraction -

-

The same table can be returned using the Open Specy library commands -in the R console.

-
# Fetch current spectral library from https://osf.io/x7dpz/
-get_lib()
-# Load library into global environment
-spec_lib <- load_lib()
-# Match spectrum with library and retrieve meta data
-match_spec(raman_bgc, library = spec_lib, which = "raman")
-
-
-

Selection Metadata

-

-

Whatever match is selected from the match table may have additional -metadata about it. That metadata will be displayed below the plot. Some -of this metadata may assist you in interpreting the spectra. For -example, if the spectra has metadata which says it is a liquid and you -are analyzing a solid particle, that spectrum may not be the best -match.

-

The R command for manual metadata selection using -sample_name == 5381 as example is:

-
find_spec(sample_name == 5381, library = spec_lib, which = "raman")
-
-
-

Match Plot

-

-

This plot is dynamically updated by selecting matches from the match -table. The red spectrum is the spectrum that you selected from the -reference library and the white spectrum is the spectrum that you are -trying to identify. Whenever a new dataset is uploaded, the plot and -data table in this tab will be updated. These plots can be saved as a -.png by clicking the camera button at the top of the plot.

-
-
-

How to interpret the reported matches

-

There are several important things to consider when interpreting a -spectral match including the library source, the Pearson’s r, and other -metrics.

-
-

The library source

-

When you click on a spectrum, all of the metadata that we have in -Open Specy about that source will be displayed in a metadata window -below to the matches table. Each library has different methodologies -used to develop it. It is useful to read up on the library sources from -the literature that they came from. E.g. Chabuka et al. 2020 focuses on -weathered plastics, so matching to it may suggest that your spectrum is -of a weathered polymer. Primpke et al. 2018 only has a spectral range up -to 2000, so some polymers may be difficult to differentiate with it. -Make sure to cite the libraries that you use during your search when you -publish your results. The authors were kind enough to make their data -open access so that it could be used in Open Specy and we should return -the favor by citing them.

-
-
-

Pearson’s r

-

Correlation values are used to identify the closest matches available -in the current Open Specy spectral libraries to improve material -identification and reduce sample processing times. Pearson’s r values -range from 0 - 1 with 0 being a completely different spectrum and 1 -being an exact match. Some general guidelines that we have observed from -using Open Specy. If no matches are > ~0.3 the material may require -additional processing or may not exist in the Open Specy library. -Correlation values are not the only metric you should use to assess your -spectra’s match to a material in the library, matches need to make -sense.

-
-
-

Things to consider beyond correlation

-

Peak position and height similarities are more important than -correlation and need to be assessed manually. Peak position correlates -with specific bond types. Peak height correlates to the concentration of -a compound. Therefore, peak height and peak position should match as -closely as possible to the matched spectrum. When there are peaks that -exist in the spectra you are trying to interpret that do not exist in -the match, there may be additional materials to identify. In this case, -restrict the preprocessing range to just the unidentified peak and try -to identify it as an additional component (see also https://www.compoundchem.com/2015/02/05/irspectroscopy/).

-

Also, check the match metadata to see if the match makes sense. -Example: A single fiber cannot be a “cotton blend” since there would be -no other fibers to make up the rest of the blend. Example: Cellophane -does not degrade into fibers, so a match for a fiber to cellophane -wouldn’t make sense. Example: You are analyzing a particle at room -temperature, but the matched material is liquid at room temperature. The -material may be a component of the particle but it cannot be the whole -particle.

-
-
-

How specific do you need to be in the material type of the -match?

-

You can choose to be specific about how you classify a substance -(e.g. polyester, cellophane) or more general (e.g. synthetic, -semi-synthetic, natural, etc.). The choice depends on your research -question. Using more general groups can speed up analysis time but will -decrease the information you have for interpretation. To identify -materials more generally, you can often clump the identities provided by -Open Specy to suit your needs. For example, matches to “polyester” and -“polypropylene” could be clumped to the category “plastic”.

-
-
-

How to differentiate between similar spectra?

-

One common challenge is differentiating between LDPE and HDPE. But, -even with a low resolution instrument (MacroRAM, 2 cm-1 -pixel-1), you can still see some differences. From a wide -view, these low, medium, and high density PE samples all look relatively -similar (figures courtesy of Bridget O'Donnell, Horiba Scientific):

-

-

But, a closer look at the 1450 cm-1 band reveals clear -differences:

-

-

When you overlay them, you start to see differences in other spectral -regions too:

-

-

So, the question is, how do we deal with samples that are very -similar with only subtle differences? Usually, researchers will use MVA -techniques after they’ve collected multiple reference spectra of known -samples (LDPE and HDPE in this case). They can then develop models and -apply them to distinguish between different types of PE. With a -reference database like Open Specy, this is complicated by the fact that -researchers are measuring samples on different instruments with -correspondingly different spectral responses and spectral resolutions. -That makes it even more difficult to accurately match definitively to -LDPE and HDPE as opposed to generic ‘PE’.

-

One possibility is to place more emphasis (from a computational -perspective) on the bands that show the most difference (the triplet at -1450 cm-1) by restricting the range used to match in Open -Specy.

-

The other, much simpler option is to just match any PE hit to generic -‘PE’ and not specifically HDPE or LDPE.

-

Another challenge is in differentiating between types of nylons. But, -Raman has a pretty easy time distinguishing nylons. These spectra were -recorded of a series of nylons and the differences are much more -distinguishable compared to the PE results above (nylon 6, 6-6, 6-9, -6-10, and 6-12 top to bottom):

-

-

The differences are even more pronounced when you overlay the -spectra:

-

-
-
-

What to do when matches aren’t making sense

-
    -
  1. Double check that the baseline correction and smoothing parameters -result in the best preprocessing of the data.
  2. -
  3. Try reprocessing your spectrum, but limit it to specific peak -regions with a higher signal to noise ratio.
  4. -
  5. Restrict the spectral range to include or exclude questionable peaks -or peaks that were not present in the previous matches.
  6. -
  7. Restrict the spectral range to exclude things like CO2 -(2200 cm-1) or H2O (~1600 cm-1) in -spikes in the IR spectrum.
  8. -
  9. If nothing above works to determine a quality match, you may need to -measure the spectrum of your material again or use another spectral -analysis tool.
  10. -
-
-
-
-
-

Mini Tutorials

-
-

File Conversion in SpectraGryph to Open Specy Accepted Format

-
    -
  1. Download Spectragryph from https://www.effemm2.de/spectragryph/down.html

  2. -
  3. Open Spectragryph and upload your file by dragging and dropping -it into the console.

  4. -
-

-
    -
  1. Click File, Save/export data, save data as, and save it as an spc -file. ¸
  2. -
-

-
    -
  1. Then upload that .spc file to Open Specy.
  2. -
-

-
-
-

Conceptual diagram of data flow through Open Specy

-

-
-
-
-

References

-

Chabuka BK, Kalivas JH (2020). “Application of a Hybrid Fusion -Classification Process for Identification of Microplastics Based on -Fourier Transform Infrared Spectroscopy.” Applied Spectroscopy, -74(9), 1167–1183. doi: 10.1177/0003702820923993.

-

Cowger W, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, -De Frond H, Deshpande AD, Hemabessiere L, Lee E, Mill L, et al. (2020). -“Critical Review of Processing and Classification Techniques for Images -and Spectra in Microplastic Research.” Applied Spectroscopy, -74(9), 989–1010. doi: 10.1177/0003702820929064.

-

Cowger W, Steinmetz Z, Gray A, Munno K, Lynch J, Hapich H, Primpke S, -De Frond H, Rochman C, Herodotou O (2021). “Microplastic Spectral -Classification Needs an Open Source Community: Open Specy to the -Rescue!” Analytical Chemistry, 93(21), -7543–7548. doi: 10.1021/acs.analchem.1c00123.

-

Primpke S, Wirth M, Lorenz C, Gerdts G (2018). “Reference Database -Design for the Automated Analysis of Microplastic Samples Based on -Fourier Transform Infrared (FTIR) Spectroscopy.” Analytical and -Bioanalytical Chemistry, 410(21), 5131–5141. doi: -10.1007/s00216-018-1156-x.

-

Renner G, Schmidt TC, Schram J (2017). “A New Chemometric Approach -for Automatic Identification of Microplastics from Environmental -Compartments Based on FT-IR Spectroscopy.” Analytical -Chemistry, 89(22), 12045–12053. doi: 10.1021/acs.analchem.7b02472.

-

Savitzky A, Golay MJ (1964). “Smoothing and Differentiation of Data -by Simplified Least Squares Procedures.” Analytical Chemistry, -36(8), 1627–1639.

-

Zhao J, Lui H, McLean DI, Zeng H (2007). “Automated Autofluorescence -Background Subtraction Algorithm for Biomedical Raman Spectroscopy.” -Applied Spectroscopy, 61(11), 1225–1232. doi: -10.1366/000370207782597003.

-
- - - - - - - - - - - diff --git a/vignettes/images/spectragryph-1.png b/vignettes/spectragryph-1.png similarity index 100% rename from vignettes/images/spectragryph-1.png rename to vignettes/spectragryph-1.png diff --git a/vignettes/images/spectragryph-2.png b/vignettes/spectragryph-2.png similarity index 100% rename from vignettes/images/spectragryph-2.png rename to vignettes/spectragryph-2.png diff --git a/vignettes/images/spectrumtoanalyze.jpg b/vignettes/spectrumtoanalyze.jpg similarity index 100% rename from vignettes/images/spectrumtoanalyze.jpg rename to vignettes/spectrumtoanalyze.jpg diff --git a/vignettes/images/spectrumtype.jpg b/vignettes/spectrumtype.jpg similarity index 100% rename from vignettes/images/spectrumtype.jpg rename to vignettes/spectrumtype.jpg diff --git a/vignettes/images/toolexample.jpg b/vignettes/toolexample.jpg similarity index 100% rename from vignettes/images/toolexample.jpg rename to vignettes/toolexample.jpg diff --git a/vignettes/images/uploadfile.jpg b/vignettes/uploadfile.jpg similarity index 100% rename from vignettes/images/uploadfile.jpg rename to vignettes/uploadfile.jpg From 39b71cf3f11130b38673a7d85ac25c6b658e8e67 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Fri, 23 Dec 2022 07:51:36 -0500 Subject: [PATCH 20/35] move files --- _pkgdown.yml | 1 - vignettes/{images => }/analyzeplot.png | Bin .../{images => }/baselinecorrectionpoly.jpg | Bin vignettes/{images => }/deselection.jpg | Bin vignettes/{images => }/download.jpg | Bin vignettes/{images => }/flowchart.png | Bin vignettes/{images => }/googletranslate.jpg | Bin vignettes/{images => }/horiba-1.png | Bin vignettes/{images => }/horiba-2.png | Bin vignettes/{images => }/horiba-3.png | Bin vignettes/{images => }/horiba-4.png | Bin vignettes/{images => }/horiba-5.png | Bin vignettes/{images => }/hoverexample.jpg | Bin .../{images => }/intensityadjustment.jpg | Bin vignettes/{images => }/mainpage.jpg | Bin vignettes/{images => }/matches.jpg | Bin vignettes/{images => }/matchplot.png | Bin vignettes/{images => }/metadatainput.jpg | Bin vignettes/{images => }/preprocessplot.png | Bin vignettes/{images => }/rangeselection.jpg | Bin vignettes/{images => }/regiontomatch.jpg | Bin vignettes/{images => }/removetoolexample.jpg | Bin vignettes/{images => }/samplefile.jpg | Bin vignettes/{images => }/selectionmetadata.jpg | Bin vignettes/{images => }/sharemetadata.jpg | Bin vignettes/{images => }/smoothing.jpg | Bin vignettes/{images => }/smoothingpoly.jpg | Bin vignettes/sop.Rmd | 58 +- vignettes/sop.html | 981 ------------------ vignettes/{images => }/spectragryph-1.png | Bin vignettes/{images => }/spectragryph-2.png | Bin vignettes/{images => }/spectrumtoanalyze.jpg | Bin vignettes/{images => }/spectrumtype.jpg | Bin vignettes/{images => }/toolexample.jpg | Bin vignettes/{images => }/uploadfile.jpg | Bin 35 files changed, 29 insertions(+), 1011 deletions(-) rename vignettes/{images => }/analyzeplot.png (100%) rename vignettes/{images => }/baselinecorrectionpoly.jpg (100%) rename vignettes/{images => }/deselection.jpg (100%) rename vignettes/{images => }/download.jpg (100%) rename vignettes/{images => }/flowchart.png (100%) rename vignettes/{images => }/googletranslate.jpg (100%) rename vignettes/{images => }/horiba-1.png (100%) rename vignettes/{images => }/horiba-2.png (100%) rename vignettes/{images => }/horiba-3.png (100%) rename vignettes/{images => }/horiba-4.png (100%) rename vignettes/{images => }/horiba-5.png (100%) rename vignettes/{images => }/hoverexample.jpg (100%) rename vignettes/{images => }/intensityadjustment.jpg (100%) rename vignettes/{images => }/mainpage.jpg (100%) rename vignettes/{images => }/matches.jpg (100%) rename vignettes/{images => }/matchplot.png (100%) rename vignettes/{images => }/metadatainput.jpg (100%) rename vignettes/{images => }/preprocessplot.png (100%) rename vignettes/{images => }/rangeselection.jpg (100%) rename vignettes/{images => }/regiontomatch.jpg (100%) rename vignettes/{images => }/removetoolexample.jpg (100%) rename vignettes/{images => }/samplefile.jpg (100%) rename vignettes/{images => }/selectionmetadata.jpg (100%) rename vignettes/{images => }/sharemetadata.jpg (100%) rename vignettes/{images => }/smoothing.jpg (100%) rename vignettes/{images => }/smoothingpoly.jpg (100%) delete mode 100644 vignettes/sop.html rename vignettes/{images => }/spectragryph-1.png (100%) rename vignettes/{images => }/spectragryph-2.png (100%) rename vignettes/{images => }/spectrumtoanalyze.jpg (100%) rename vignettes/{images => }/spectrumtype.jpg (100%) rename vignettes/{images => }/toolexample.jpg (100%) rename vignettes/{images => }/uploadfile.jpg (100%) diff --git a/_pkgdown.yml b/_pkgdown.yml index e4781cad..c4c150e4 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,5 +1,4 @@ url: http://wincowger.com/OpenSpecy-package/ template: bootstrap: 5 - bootswatch: cerulean diff --git a/vignettes/images/analyzeplot.png b/vignettes/analyzeplot.png similarity index 100% rename from vignettes/images/analyzeplot.png rename to vignettes/analyzeplot.png diff --git a/vignettes/images/baselinecorrectionpoly.jpg b/vignettes/baselinecorrectionpoly.jpg similarity index 100% rename from vignettes/images/baselinecorrectionpoly.jpg rename to vignettes/baselinecorrectionpoly.jpg diff --git a/vignettes/images/deselection.jpg b/vignettes/deselection.jpg similarity index 100% rename from vignettes/images/deselection.jpg rename to vignettes/deselection.jpg diff --git a/vignettes/images/download.jpg b/vignettes/download.jpg similarity index 100% rename from vignettes/images/download.jpg rename to vignettes/download.jpg diff --git a/vignettes/images/flowchart.png b/vignettes/flowchart.png similarity index 100% rename from vignettes/images/flowchart.png rename to vignettes/flowchart.png diff --git a/vignettes/images/googletranslate.jpg b/vignettes/googletranslate.jpg similarity index 100% rename from vignettes/images/googletranslate.jpg rename to vignettes/googletranslate.jpg diff --git a/vignettes/images/horiba-1.png b/vignettes/horiba-1.png similarity index 100% rename from vignettes/images/horiba-1.png rename to vignettes/horiba-1.png diff --git a/vignettes/images/horiba-2.png b/vignettes/horiba-2.png similarity index 100% rename from vignettes/images/horiba-2.png rename to vignettes/horiba-2.png diff --git a/vignettes/images/horiba-3.png b/vignettes/horiba-3.png similarity index 100% rename from vignettes/images/horiba-3.png rename to vignettes/horiba-3.png diff --git a/vignettes/images/horiba-4.png b/vignettes/horiba-4.png similarity index 100% rename from vignettes/images/horiba-4.png rename to vignettes/horiba-4.png diff --git a/vignettes/images/horiba-5.png b/vignettes/horiba-5.png similarity index 100% rename from vignettes/images/horiba-5.png rename to vignettes/horiba-5.png diff --git a/vignettes/images/hoverexample.jpg b/vignettes/hoverexample.jpg similarity index 100% rename from vignettes/images/hoverexample.jpg rename to vignettes/hoverexample.jpg diff --git a/vignettes/images/intensityadjustment.jpg b/vignettes/intensityadjustment.jpg similarity index 100% rename from vignettes/images/intensityadjustment.jpg rename to vignettes/intensityadjustment.jpg diff --git a/vignettes/images/mainpage.jpg b/vignettes/mainpage.jpg similarity index 100% rename from vignettes/images/mainpage.jpg rename to vignettes/mainpage.jpg diff --git a/vignettes/images/matches.jpg b/vignettes/matches.jpg similarity index 100% rename from vignettes/images/matches.jpg rename to vignettes/matches.jpg diff --git a/vignettes/images/matchplot.png b/vignettes/matchplot.png similarity index 100% rename from vignettes/images/matchplot.png rename to vignettes/matchplot.png diff --git a/vignettes/images/metadatainput.jpg b/vignettes/metadatainput.jpg similarity index 100% rename from vignettes/images/metadatainput.jpg rename to vignettes/metadatainput.jpg diff --git a/vignettes/images/preprocessplot.png b/vignettes/preprocessplot.png similarity index 100% rename from vignettes/images/preprocessplot.png rename to vignettes/preprocessplot.png diff --git a/vignettes/images/rangeselection.jpg b/vignettes/rangeselection.jpg similarity index 100% rename from vignettes/images/rangeselection.jpg rename to vignettes/rangeselection.jpg diff --git a/vignettes/images/regiontomatch.jpg b/vignettes/regiontomatch.jpg similarity index 100% rename from vignettes/images/regiontomatch.jpg rename to vignettes/regiontomatch.jpg diff --git a/vignettes/images/removetoolexample.jpg b/vignettes/removetoolexample.jpg similarity index 100% rename from vignettes/images/removetoolexample.jpg rename to vignettes/removetoolexample.jpg diff --git a/vignettes/images/samplefile.jpg b/vignettes/samplefile.jpg similarity index 100% rename from vignettes/images/samplefile.jpg rename to vignettes/samplefile.jpg diff --git a/vignettes/images/selectionmetadata.jpg b/vignettes/selectionmetadata.jpg similarity index 100% rename from vignettes/images/selectionmetadata.jpg rename to vignettes/selectionmetadata.jpg diff --git a/vignettes/images/sharemetadata.jpg b/vignettes/sharemetadata.jpg similarity index 100% rename from vignettes/images/sharemetadata.jpg rename to vignettes/sharemetadata.jpg diff --git a/vignettes/images/smoothing.jpg b/vignettes/smoothing.jpg similarity index 100% rename from vignettes/images/smoothing.jpg rename to vignettes/smoothing.jpg diff --git a/vignettes/images/smoothingpoly.jpg b/vignettes/smoothingpoly.jpg similarity index 100% rename from vignettes/images/smoothingpoly.jpg rename to vignettes/smoothingpoly.jpg diff --git a/vignettes/sop.Rmd b/vignettes/sop.Rmd index 15e98411..decabf3b 100644 --- a/vignettes/sop.Rmd +++ b/vignettes/sop.Rmd @@ -57,7 +57,7 @@ run_app() Then click the **Upload File** tab at the top of the page. ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/mainpage.jpg") +knitr::include_graphics("mainpage.jpg") ``` Accessibility is extremely important to us and we are making strives to improve @@ -69,13 +69,13 @@ easily translate the app. We know that not all languages will be fully supported but we will continue to try and improve the translations. ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/googletranslate.jpg") +knitr::include_graphics("googletranslate.jpg") ``` ## Download a test dataset ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/samplefile.jpg") +knitr::include_graphics("samplefile.jpg") ``` If you don't have your own data to use right away, that is ok. You can @@ -92,7 +92,7 @@ data("raman_hdpe") ## Choose whether to share your uploaded data or not ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/uploadfile.jpg") +knitr::include_graphics("uploadfile.jpg") ``` Before uploading, indicate if you would like to share the @@ -165,7 +165,7 @@ from the **Intensity Adjustment** selection. ## Intensity Adjustment ```{r, fig.align='center', echo=FALSE} -knitr::include_graphics("images/intensityadjustment.jpg") +knitr::include_graphics("intensityadjustment.jpg") ``` Open Specy assumes that intensity units are in absorbance units but @@ -191,7 +191,7 @@ head(raman_adj) ## Share metadata on known spectra ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/metadatainput.jpg") +knitr::include_graphics("metadatainput.jpg") ``` To share metadata about your spectrum, click the metadata input button. @@ -210,7 +210,7 @@ and metadata is sent to an [open-access online repository](https://osf.io/rjg3c/). ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/sharemetadata.jpg") +knitr::include_graphics("sharemetadata.jpg") ``` All inputs from the metadata (described below) are input to a @@ -249,7 +249,7 @@ your parameters for processing the spectrum. ## Preprocess Spectra Plot ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/preprocessplot.png") +knitr::include_graphics("preprocessplot.png") ``` The preprocess spectra plot shows the uploaded spectra in comparison to @@ -262,7 +262,7 @@ high intensities and non-peak regions should have low intensities. ## Preprocessing Tools ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/smoothing.jpg") +knitr::include_graphics("smoothing.jpg") ``` When the slider is green for the tool type, that means that that tool is being @@ -270,7 +270,7 @@ used to preprocess the spectrum. If the slider is clicked blank, the cog button to the right will disappear to indicate that the tool is no longer being used. ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/deselection.jpg") +knitr::include_graphics("deselection.jpg") ``` If the cog button is clicked, any functions associated with that tool will be @@ -279,7 +279,7 @@ displayed and can be manipulated to process the spectrum. ## Smoothing Polynomial ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/smoothingpoly.jpg") +knitr::include_graphics("smoothingpoly.jpg") ``` The first step of the Open Specy preprocessing routing is spectral @@ -338,7 +338,7 @@ head(raman_smooth) ## Baseline Correction Polynomial ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/baselinecorrectionpoly.jpg") +knitr::include_graphics("baselinecorrectionpoly.jpg") ``` The second step of Open Specy's preprocessing routine is baseline @@ -387,7 +387,7 @@ head(raman_bgc) ## Spectral Range ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/rangeselection.jpg") +knitr::include_graphics("rangeselection.jpg") ``` The final step of preprocessing is restricting the spectral range. @@ -405,7 +405,7 @@ removing noise and influence from less relevant spectral data. ## Download Data ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/download.jpg") +knitr::include_graphics("download.jpg") ``` After you have the preprocessing parameters set, we recommend that you @@ -431,7 +431,7 @@ parameters below. ## Spectrum Type ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/spectrumtype.jpg") +knitr::include_graphics("spectrumtype.jpg") ``` The spectra type input on the "Match spectra" tab specifies the type of @@ -442,7 +442,7 @@ the Raman library to make the match. ## Spectrum To Analyze ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/spectrumtoanalyze.jpg") +knitr::include_graphics("spectrumtoanalyze.jpg") ``` The spectra to analyze input specifies if the tool will match the @@ -453,7 +453,7 @@ Preprocess Spectra Tab). ## Region To Match ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/regiontomatch.jpg") +knitr::include_graphics("regiontomatch.jpg") ``` The region to match input specifies if the "Full Spectrum" will match @@ -469,7 +469,7 @@ interpretation of the match, this is not the best approach. ## Match Table ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/matches.jpg") +knitr::include_graphics("matches.jpg") ``` The selectable table shows the top material matches returned by the tool, @@ -507,7 +507,7 @@ match_spec(raman_bgc, library = spec_lib, which = "raman") ## Selection Metadata ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/selectionmetadata.jpg") +knitr::include_graphics("selectionmetadata.jpg") ``` Whatever match is selected from the match table may have additional @@ -526,7 +526,7 @@ find_spec(sample_name == 5381, library = spec_lib, which = "raman") ## Match Plot ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/matchplot.png") +knitr::include_graphics("matchplot.png") ``` This plot is dynamically updated by selecting matches from the match @@ -615,21 +615,21 @@ these low, medium, and high density PE samples all look relatively similar (figures courtesy of Bridget O\'Donnell, Horiba Scientific): ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-1.png") +knitr::include_graphics("horiba-1.png") ``` But, a closer look at the 1450 cm^-1^ band reveals clear differences: ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-2.png") +knitr::include_graphics("horiba-2.png") ``` When you overlay them, you start to see differences in other spectral regions too: ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-3.png") +knitr::include_graphics("horiba-3.png") ``` So, the question is, how do we deal with samples that are very similar @@ -659,14 +659,14 @@ distinguishable compared to the PE results above (nylon 6, 6-6, 6-9, bottom): ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-4.png") +knitr::include_graphics("horiba-4.png") ``` The differences are even more pronounced when you overlay the spectra: ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/horiba-5.png") +knitr::include_graphics("horiba-5.png") ``` ### What to do when matches aren't making sense @@ -694,26 +694,26 @@ knitr::include_graphics("images/horiba-5.png") into the console. ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/spectragryph-1.png") +knitr::include_graphics("spectragryph-1.png") ``` 3. Click File, Save/export data, save data as, and save it as an spc file. ¸ ```{r, fig.align="center", out.width="98%", echo=FALSE} -knitr::include_graphics("images/spectragryph-2.png") +knitr::include_graphics("spectragryph-2.png") ``` 4. Then upload that .spc file to Open Specy. ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/uploadfile.jpg") +knitr::include_graphics("uploadfile.jpg") ``` ## Conceptual diagram of data flow through Open Specy ```{r, fig.align="center", echo=FALSE} -knitr::include_graphics("images/flowchart.png") +knitr::include_graphics("flowchart.png") ``` # References diff --git a/vignettes/sop.html b/vignettes/sop.html deleted file mode 100644 index a1445a82..00000000 --- a/vignettes/sop.html +++ /dev/null @@ -1,981 +0,0 @@ - - - - - - - - - - - - - - - -Standard Operating Procedure - - - - - - - - - - - - - - - - - - - - - - - - - - -

Standard Operating Procedure

-

Jessica Meyers, Jeremy Conkle, Win Cowger, -Zacharias Steinmetz, Andrew Gray, Chelsea Rochman, Sebastian Primpke, -Jennifer Lynch, Hannah Hapich, Hannah De Frond, Keenan Munno, Bridget -O’Donnell

-

2022-10-27

- - - -

Open Specy Raman and (FT)IR spectral analysis tool for plastic -particles and other environmental samples. Supported features include -reading spectral data files (.asp, .csv, .jdx, .spc, .spa, .0), -smoothing spectral intensities with smooth_intens(), -correcting background with subtr_bg(), and identifying -spectra using an onboard reference library. Analyzed spectra can be -shared with the Open Specy community. A Shiny app is available via -run_app() or online at https://openanalysis.org/openspecy/.

-

This document outlines a common workflow for using Open Specy and -highlights some topics that users are often requesting a tutorial on. If -the document is followed sequentially from beginning to end, the user -will have a better understanding of every procedure involved in using -Open Specy as a tool for interpreting spectra. It takes approximately 45 -minutes to read through and follow along with this standard operating -procedure the first time. Afterward, knowledgeable users should be able -to thoroughly analyze individual spectra at an average speed of 1 -min-1.

-
-

Getting started

-
library(OpenSpecy)
-
-
-

Viewing and Sharing Spectra

-

To get started with the Open Specy user interface, access https://openanalysis.org/openspecy/ -or start the Shiny GUI directly from R typing

-
run_app()
-

Then click the Upload File tab at the top of the -page.

-

-

Accessibility is extremely important to us and we are making strives -to improve the accessibility of Open Specy for all spectroscopists. -Please reach out if you have ideas for improvement.

-

We added a Google translate plugin to all pages in the app so that -you can easily translate the app. We know that not all languages will be -fully supported but we will continue to try and improve the -translations.

-

-
-

Download a test dataset

-

-

If you don’t have your own data to use right away, that is ok. You -can download test data to try out the tool by clicking on the test data -button. A .csv file of HDPE Raman spectrum will download on your -computer. This file can also be used as a template for formatting .csv -data into an Open Specy accepted format. The following line of code does -the same:

-
data("raman_hdpe")
-
-
-

Choose whether to share your uploaded data or not

-

-

Before uploading, indicate if you would like to share the uploaded -data or not using the slider. If selected, any data uploaded to the tool -will automatically be shared under CC-BY 4.0 -license and will be available for researchers and other ventures to -use to improve spectral analysis, build machine learning tools, etc. -Some users may choose not to share if they need to keep their data -private. If switched off, none of the uploaded data will be stored or -shared in Open Specy.

-
-
-

Upload/Read Data

-

Open Specy allows for upload of .csv, .asp, .jdx, .0, .spc, and .spa -files. .csv files should always load correctly but the other file types -are still in beta development, though most of the time these files work -perfectly. It is best practice to cross check files in the proprietary -software they came from and Open Specy before use in Open Specy. Due to -the complexity of these file types, we haven’t been able to make them -fully compatible yet. If your file is not working, please contact the -administrator and share the file so that we can get it to work.

-

For the most consistent results, files should be converted to .csv -format before uploading to Open Specy. The specific steps to converting -your instrument’s native files to .csv can be found in its software -manual or you can check out Spectragryph, which -supports many spectral file conversions (see Mini Tutorial section: File -conversion in Spectragryph to Open Specy accepted format).

-

If uploading a .csv file, label the column with the wavenumbers -wavenumber and name the column with the intensities -intensity.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sample data raman_hdpe
wavenumberintensity
301.04026
304.63250
308.22148
311.81045
315.39846
318.98342
-

Wavenumber units must be cm-1. Any other columns are not -used by the software. Always keep a copy of the original file before -alteration to preserve metadata and raw data for your records.

-

To upload data, click Browse and choose one of your -files to upload, or drag and drop your file into the gray box. At this -time you can only upload one file at a time.

-

Upon upload and throughout the analysis, intensity values are min-max -normalized (Equation 1).

-\[\frac{x - \mathrm{min}(x)}{\mathrm{min}(x) -- \mathrm{max}(x)}\] -

-Equation 1: Max-Min Normalization -

-

The following R functions from the Open Specy package will also read -in spectral data accordingly:

-
read_text(".csv")
-read_asp(".asp")
-read_opus(".0")
-
-
-

Viewing Spectra Plot

-

After spectral data are uploaded, it will appear in the main window. -This plot is selectable, zoomable, and provides information on hover. -You can also save a .png file of the plot view using the camera icon at -the top right when you hover over the plot. This plot will change the -view based on updates from the Intensity Adjustment -selection.

-
-
-

Intensity Adjustment

-

-

Open Specy assumes that intensity units are in absorbance units but -Open Specy can adjust reflectance or transmittance spectra to absorbance -units using this selection in the upload file tab. The transmittance -adjustment uses the \(\log_{10} 1/T\) -calculation which does not correct for system or particle -characteristics. The reflectance adjustment use the Kubelka-Munk -equation \(\frac{(1-R)^2}{2R}\). If -none is selected, Open Specy assumes that the uploaded data is an -absorbance spectrum and does not apply an adjustment.

-

This is the respective R code:

-
library(magrittr)
-
-raman_adj <- raman_hdpe %>%
-  adj_intens()
-
-head(raman_adj)
-#>    wavenumber  intensity
-#> 1:    301.040 0.00000000
-#> 2:    304.632 0.03037975
-#> 3:    308.221 0.02784810
-#> 4:    311.810 0.02405063
-#> 5:    315.398 0.02531646
-#> 6:    318.983 0.02025316
-
-
-

Share metadata on known spectra

-

-

To share metadata about your spectrum, click the metadata input -button. When sharing data, please provide as much metadata as you can. -Metadata helps make shared data as useful as possible. Metadata inputs -each have examples provided in the input. The examples disappear when -the box is clicked and will not be saved if nothing is input by the -user. Mandatory inputs are marked with a red asterisk. If these inputs -are not filled, the data will be considered uninterpretable and will be -discarded. Inputs left blank will be left blank in the metadata sheet -and interpreted as “unknown” or “not applicable”. To share metadata, -click the share data button at the bottom of the metadata inputs.

-

When the user clicks the Share Data button their -current uploaded data and metadata is sent to an open-access online repository.

-

-

All inputs from the metadata (described below) are input to a -metadata sheet. The metadata sheet is given the same unique name as the -data, but it ends with “_form”. The exact same data is saved as would be -downloaded using the download data button (described below). All high -quality uploaded data with metadata will eventually be reviewed by -spectroscopy experts and added to the internal library if it passes -review. If multiple files are going to be uploaded with metadata, the -cells will also stay filled with the last input after the share data -button is clicked. Just upload the next dataset and change the metadata -inputs that are different. If more than 50 files will be shared at once, -you can contact the website administrator to get a bulk upload sheet for -more rapid upload.

-

Type

-
share_spec(raman_hdpe,
-           metadata = c(user_name = "Win Cowger",
-                        contact_info = "wincowger@gmail.com",
-                        spectrum_type = "Raman",
-                        spectrum_identity = "HDPE")
-           )
-

to share your spectral data from the R console.

-
-
-
-

Preprocessing

-

After uploading data, you can preprocess the data using baseline -correction, smoothing, and range selection and save your preprocessed -data. Go to the Preprocess Spectrum tab to select your -parameters for processing the spectrum.

-
-

Preprocess Spectra Plot

-

-

The preprocess spectra plot shows the uploaded spectra in comparison -to the processed spectra that has been processed using the processing -inputs on the page. It will automatically update with any new slider -inputs. This allows the user to tune the inputs to optimize the signal -to noise ratio. The goal with preprocessing is to make peak regions have -high intensities and non-peak regions should have low intensities.

-
-
-

Preprocessing Tools

-

-

When the slider is green for the tool type, that means that that tool -is being used to preprocess the spectrum. If the slider is clicked -blank, the cog button to the right will disappear to indicate that the -tool is no longer being used.

-

-

If the cog button is clicked, any functions associated with that tool -will be displayed and can be manipulated to process the spectrum.

-
-
-

Smoothing Polynomial

-

-

The first step of the Open Specy preprocessing routing is spectral -smoothing. The goal of this function is to increase the signal to noise -ratio (S/N) without distorting the shape or relative size of the peaks. -The value on the slider is the polynomial order of the Savitzky-Golay -(SG) filter. The SG filter is fit to a moving window of 11 data -points where the center point in the window is replaced with the -polynomial estimate. The number of data points in the window is not user -adjustable. Higher numbers lead to more wiggly fits and thus less -smooth, lower numbers lead to more smooth fits, a 7th order polynomial -will make the spectrum have almost no smoothing. If smoothing is set to -0 then no smoothing is conducted on the spectrum. When smoothing is done -well, peak shapes and relative heights should not change. Typically a -3rd order polynomial (3 on the slider) works to increase the signal to -noise without distortion, but if the spectrum is noisy, decrease -polynomial order and if it is already smooth, increase the polynomial -order to the maximum (7). Examples of smoothing below:

-
- -

Sample raman_hdpe spectrum with -different smoothing polynomials (p) from Cowger et al. (2020).

-
-

The different degrees of smoothing were achieved with the following R -commands:

-
smooth_intens(raman_hdpe, p = 1)
-smooth_intens(raman_hdpe, p = 4)
-

The intensity-adjusted sample spectrum raman_adj is -smoothed accordingly:

-
raman_smooth <- raman_adj %>% 
-  smooth_intens()
-
-head(raman_smooth)
-#>    wavenumber  intensity
-#> 1:    301.040 0.00000000
-#> 2:    304.632 0.01568318
-#> 3:    308.221 0.02461353
-#> 4:    311.810 0.02828915
-#> 5:    315.398 0.02820811
-#> 6:    318.983 0.02586852
-
-
-

Baseline Correction Polynomial

-

-

The second step of Open Specy’s preprocessing routine is baseline -correction. The goal of baseline correction is to get all non-peak -regions of the spectra to zero absorbance. The higher the polynomial -order, the more wiggly the fit to the baseline. If the baseline is not -very wiggly, a more wiggly fit could remove peaks which is not desired. -The baseline correction algorithm used in Open Specy is called -“iModPolyfit” (Zhao et al. 2007). This algorithm iteratively fits -polynomial equations of the specified order to the whole spectrum. -During the first fit iteration, peak regions will often be above the -baseline fit. The data in the peak region is removed from the fit to -make sure that the baseline is less likely to fit to the peaks. The -iterative fitting terminates once the difference between the new and -previous fit is small. An example of a good baseline fit below.

-
- -

Sample raman_hdpe spectrum with -different degrees of background subtraction (Cowger et al., 2020).

-
-

The smoothed sample spectrum raman_smooth is -background-corrected as follows:

-
raman_bgc <- raman_smooth %>% 
-  subtr_bg()
-
-head(raman_bgc)
-#>    wavenumber   intensity
-#> 1:    301.040 0.000000000
-#> 2:    304.632 0.000000000
-#> 3:    308.221 0.006298355
-#> 4:    311.810 0.008146146
-#> 5:    315.398 0.007025667
-#> 6:    318.983 0.004412447
-
-
-

Spectral Range

-

-

The final step of preprocessing is restricting the spectral range. -Sometimes the instrument operates with high noise at the ends of the -spectrum and sometimes the baseline fit can produce distortions at the -ends of the spectrum, both can be removed using this routine. You should -look into the signal to noise ratio of your specific instrument by -wavelength to determine what wavelength ranges to use. Distortions due -to baseline fit can be assessed from looking at the preprocess spectra -plot. Additionally, you can restrict the range to examine a single peak -or a subset of peaks of interests. This function allows users to isolate -peaks of interest for matching, while removing noise and influence from -less relevant spectral data.

-
-
-

Download Data

-

-

After you have the preprocessing parameters set, we recommend that -you download the preprocessed data for your records. The download data -button will append the uploaded data to three columns created by the -preprocessing parameters. “Wavelength” and “Absorbance” are columns from -the data uploaded by the user. “NormalizedIntensity” is the max-min -normalized value (Equation 1) of the “Absorbance”. “Smoothed” is the -Savitzky-Golay filter specified by the slider explained above. -“BaselineRemoved” is the smoothed and baseline corrected value that is -visible on the center plot.

-
-
-
-

Matching

-

After uploading data and preprocessing it (if desired) you can now -identify the spectrum. To identify the spectrum go to the Match -Spectrum tab.

-

You will see your spectrum and the top matches, but before looking at -matches, you need to check the three selectable parameters below.

-
-

Spectrum Type

-

-

The spectra type input on the “Match spectra” tab specifies the type -of spectra (Raman or FTIR) that the user has uploaded and wants to match -to. This input will tell the website whether to use the FTIR library or -the Raman library to make the match.

-
-
-

Spectrum To Analyze

-

-

The spectra to analyze input specifies if the tool will match the -Uploaded spectra (unaltered by the inputs on the -Preprocess Spectra tab) or the Processed -Spectra (manipulated by the inputs in the Preprocess Spectra -Tab).

-
-
-

Region To Match

-

-

The region to match input specifies if the “Full Spectrum” will match -the entire range of the spectra (including non peak regions) in the -reference database. This is the most intuitive match. Or should the -Peaks Only match just the peak regions in the reference -database. This is an advanced feature proposed in Renner et al. (2017). -This can be a less intuitive approach but in cases where there are few -peaks and high baseline interference, it could be the best option. In -cases where non-peak regions are important for the interpretation of the -match, this is not the best approach.

-
-
-

Match Table

-

-

The selectable table shows the top material matches returned by the -tool, their Pearson’s r value, and the organization they were provided -by. When rows are selected their spectra are added to the match plot. -The spectrum being matched and reference library are determined by the -previously mentioned parameters. During the matching process, one final -cleaning step happens using a simple minimum subtraction algorithm -(Equation 2) which in many cases will allow unprocessed spectra to -remove subtle baseline, but will not harm the spectra which has no -baseline. Then, these aligned data are tested for correlation using the -Pearson’s r. The Pearson’s r is used as a match quality indicator and -the spectra from the top 1000 best matches are returned from the -library. You can restrict the libraries which are displayed in the table -by clicking the box that says All under the -Organization column.

-

Similarly you can restrict the range of Pearson's r values or search -for specific material types.

-\[\mathrm{for~each}~peak~group^{1,n}: x - -\mathrm{min}(x)\] -

-Equation 2: Minimum Subtraction -

-

The same table can be returned using the Open Specy library commands -in the R console.

-
# Fetch current spectral library from https://osf.io/x7dpz/
-get_lib()
-# Load library into global environment
-spec_lib <- load_lib()
-# Match spectrum with library and retrieve meta data
-match_spec(raman_bgc, library = spec_lib, which = "raman")
-
-
-

Selection Metadata

-

-

Whatever match is selected from the match table may have additional -metadata about it. That metadata will be displayed below the plot. Some -of this metadata may assist you in interpreting the spectra. For -example, if the spectra has metadata which says it is a liquid and you -are analyzing a solid particle, that spectrum may not be the best -match.

-

The R command for manual metadata selection using -sample_name == 5381 as example is:

-
find_spec(sample_name == 5381, library = spec_lib, which = "raman")
-
-
-

Match Plot

-

-

This plot is dynamically updated by selecting matches from the match -table. The red spectrum is the spectrum that you selected from the -reference library and the white spectrum is the spectrum that you are -trying to identify. Whenever a new dataset is uploaded, the plot and -data table in this tab will be updated. These plots can be saved as a -.png by clicking the camera button at the top of the plot.

-
-
-

How to interpret the reported matches

-

There are several important things to consider when interpreting a -spectral match including the library source, the Pearson’s r, and other -metrics.

-
-

The library source

-

When you click on a spectrum, all of the metadata that we have in -Open Specy about that source will be displayed in a metadata window -below to the matches table. Each library has different methodologies -used to develop it. It is useful to read up on the library sources from -the literature that they came from. E.g. Chabuka et al. 2020 focuses on -weathered plastics, so matching to it may suggest that your spectrum is -of a weathered polymer. Primpke et al. 2018 only has a spectral range up -to 2000, so some polymers may be difficult to differentiate with it. -Make sure to cite the libraries that you use during your search when you -publish your results. The authors were kind enough to make their data -open access so that it could be used in Open Specy and we should return -the favor by citing them.

-
-
-

Pearson’s r

-

Correlation values are used to identify the closest matches available -in the current Open Specy spectral libraries to improve material -identification and reduce sample processing times. Pearson’s r values -range from 0 - 1 with 0 being a completely different spectrum and 1 -being an exact match. Some general guidelines that we have observed from -using Open Specy. If no matches are > ~0.3 the material may require -additional processing or may not exist in the Open Specy library. -Correlation values are not the only metric you should use to assess your -spectra’s match to a material in the library, matches need to make -sense.

-
-
-

Things to consider beyond correlation

-

Peak position and height similarities are more important than -correlation and need to be assessed manually. Peak position correlates -with specific bond types. Peak height correlates to the concentration of -a compound. Therefore, peak height and peak position should match as -closely as possible to the matched spectrum. When there are peaks that -exist in the spectra you are trying to interpret that do not exist in -the match, there may be additional materials to identify. In this case, -restrict the preprocessing range to just the unidentified peak and try -to identify it as an additional component (see also https://www.compoundchem.com/2015/02/05/irspectroscopy/).

-

Also, check the match metadata to see if the match makes sense. -Example: A single fiber cannot be a “cotton blend” since there would be -no other fibers to make up the rest of the blend. Example: Cellophane -does not degrade into fibers, so a match for a fiber to cellophane -wouldn’t make sense. Example: You are analyzing a particle at room -temperature, but the matched material is liquid at room temperature. The -material may be a component of the particle but it cannot be the whole -particle.

-
-
-

How specific do you need to be in the material type of the -match?

-

You can choose to be specific about how you classify a substance -(e.g. polyester, cellophane) or more general (e.g. synthetic, -semi-synthetic, natural, etc.). The choice depends on your research -question. Using more general groups can speed up analysis time but will -decrease the information you have for interpretation. To identify -materials more generally, you can often clump the identities provided by -Open Specy to suit your needs. For example, matches to “polyester” and -“polypropylene” could be clumped to the category “plastic”.

-
-
-

How to differentiate between similar spectra?

-

One common challenge is differentiating between LDPE and HDPE. But, -even with a low resolution instrument (MacroRAM, 2 cm-1 -pixel-1), you can still see some differences. From a wide -view, these low, medium, and high density PE samples all look relatively -similar (figures courtesy of Bridget O'Donnell, Horiba Scientific):

-

-

But, a closer look at the 1450 cm-1 band reveals clear -differences:

-

-

When you overlay them, you start to see differences in other spectral -regions too:

-

-

So, the question is, how do we deal with samples that are very -similar with only subtle differences? Usually, researchers will use MVA -techniques after they’ve collected multiple reference spectra of known -samples (LDPE and HDPE in this case). They can then develop models and -apply them to distinguish between different types of PE. With a -reference database like Open Specy, this is complicated by the fact that -researchers are measuring samples on different instruments with -correspondingly different spectral responses and spectral resolutions. -That makes it even more difficult to accurately match definitively to -LDPE and HDPE as opposed to generic ‘PE’.

-

One possibility is to place more emphasis (from a computational -perspective) on the bands that show the most difference (the triplet at -1450 cm-1) by restricting the range used to match in Open -Specy.

-

The other, much simpler option is to just match any PE hit to generic -‘PE’ and not specifically HDPE or LDPE.

-

Another challenge is in differentiating between types of nylons. But, -Raman has a pretty easy time distinguishing nylons. These spectra were -recorded of a series of nylons and the differences are much more -distinguishable compared to the PE results above (nylon 6, 6-6, 6-9, -6-10, and 6-12 top to bottom):

-

-

The differences are even more pronounced when you overlay the -spectra:

-

-
-
-

What to do when matches aren’t making sense

-
    -
  1. Double check that the baseline correction and smoothing parameters -result in the best preprocessing of the data.
  2. -
  3. Try reprocessing your spectrum, but limit it to specific peak -regions with a higher signal to noise ratio.
  4. -
  5. Restrict the spectral range to include or exclude questionable peaks -or peaks that were not present in the previous matches.
  6. -
  7. Restrict the spectral range to exclude things like CO2 -(2200 cm-1) or H2O (~1600 cm-1) in -spikes in the IR spectrum.
  8. -
  9. If nothing above works to determine a quality match, you may need to -measure the spectrum of your material again or use another spectral -analysis tool.
  10. -
-
-
-
-
-

Mini Tutorials

-
-

File Conversion in SpectraGryph to Open Specy Accepted Format

-
    -
  1. Download Spectragryph from https://www.effemm2.de/spectragryph/down.html

  2. -
  3. Open Spectragryph and upload your file by dragging and dropping -it into the console.

  4. -
-

-
    -
  1. Click File, Save/export data, save data as, and save it as an spc -file. ¸
  2. -
-

-
    -
  1. Then upload that .spc file to Open Specy.
  2. -
-

-
-
-

Conceptual diagram of data flow through Open Specy

-

-
-
-
-

References

-

Chabuka BK, Kalivas JH (2020). “Application of a Hybrid Fusion -Classification Process for Identification of Microplastics Based on -Fourier Transform Infrared Spectroscopy.” Applied Spectroscopy, -74(9), 1167–1183. doi: 10.1177/0003702820923993.

-

Cowger W, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, -De Frond H, Deshpande AD, Hemabessiere L, Lee E, Mill L, et al. (2020). -“Critical Review of Processing and Classification Techniques for Images -and Spectra in Microplastic Research.” Applied Spectroscopy, -74(9), 989–1010. doi: 10.1177/0003702820929064.

-

Cowger W, Steinmetz Z, Gray A, Munno K, Lynch J, Hapich H, Primpke S, -De Frond H, Rochman C, Herodotou O (2021). “Microplastic Spectral -Classification Needs an Open Source Community: Open Specy to the -Rescue!” Analytical Chemistry, 93(21), -7543–7548. doi: 10.1021/acs.analchem.1c00123.

-

Primpke S, Wirth M, Lorenz C, Gerdts G (2018). “Reference Database -Design for the Automated Analysis of Microplastic Samples Based on -Fourier Transform Infrared (FTIR) Spectroscopy.” Analytical and -Bioanalytical Chemistry, 410(21), 5131–5141. doi: -10.1007/s00216-018-1156-x.

-

Renner G, Schmidt TC, Schram J (2017). “A New Chemometric Approach -for Automatic Identification of Microplastics from Environmental -Compartments Based on FT-IR Spectroscopy.” Analytical -Chemistry, 89(22), 12045–12053. doi: 10.1021/acs.analchem.7b02472.

-

Savitzky A, Golay MJ (1964). “Smoothing and Differentiation of Data -by Simplified Least Squares Procedures.” Analytical Chemistry, -36(8), 1627–1639.

-

Zhao J, Lui H, McLean DI, Zeng H (2007). “Automated Autofluorescence -Background Subtraction Algorithm for Biomedical Raman Spectroscopy.” -Applied Spectroscopy, 61(11), 1225–1232. doi: -10.1366/000370207782597003.

-
- - - - - - - - - - - diff --git a/vignettes/images/spectragryph-1.png b/vignettes/spectragryph-1.png similarity index 100% rename from vignettes/images/spectragryph-1.png rename to vignettes/spectragryph-1.png diff --git a/vignettes/images/spectragryph-2.png b/vignettes/spectragryph-2.png similarity index 100% rename from vignettes/images/spectragryph-2.png rename to vignettes/spectragryph-2.png diff --git a/vignettes/images/spectrumtoanalyze.jpg b/vignettes/spectrumtoanalyze.jpg similarity index 100% rename from vignettes/images/spectrumtoanalyze.jpg rename to vignettes/spectrumtoanalyze.jpg diff --git a/vignettes/images/spectrumtype.jpg b/vignettes/spectrumtype.jpg similarity index 100% rename from vignettes/images/spectrumtype.jpg rename to vignettes/spectrumtype.jpg diff --git a/vignettes/images/toolexample.jpg b/vignettes/toolexample.jpg similarity index 100% rename from vignettes/images/toolexample.jpg rename to vignettes/toolexample.jpg diff --git a/vignettes/images/uploadfile.jpg b/vignettes/uploadfile.jpg similarity index 100% rename from vignettes/images/uploadfile.jpg rename to vignettes/uploadfile.jpg From 3db2828e508c4953cf402fa738dfcd9af65759e9 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Fri, 23 Dec 2022 08:08:33 -0500 Subject: [PATCH 21/35] add auto --- _pkgdown.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index c4c150e4..c27a0f6c 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,4 +1,5 @@ url: http://wincowger.com/OpenSpecy-package/ template: bootstrap: 5 - +development: + mode: auto From 862e1458342f64fda3b4b54e6c5c2125267eb4fb Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Fri, 23 Dec 2022 08:38:58 -0500 Subject: [PATCH 22/35] stop ignoring doc --- .gitignore | 2 +- _pkgdown.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a5fff210..8fff916c 100644 --- a/.gitignore +++ b/.gitignore @@ -55,4 +55,4 @@ docs/ # ignore old datasets but don't remove inst/shiny/ -docs +#docs diff --git a/_pkgdown.yml b/_pkgdown.yml index c27a0f6c..1e2794d7 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -3,3 +3,4 @@ template: bootstrap: 5 development: mode: auto + From 1cb46d28abfa4c7dc33ec1990f6864e3ef559f80 Mon Sep 17 00:00:00 2001 From: "Win Cowger, PhD" Date: Fri, 23 Dec 2022 08:39:27 -0500 Subject: [PATCH 23/35] testing --- docs/.nojekyll | 1 + docs/404.html | 96 + docs/LICENSE.html | 198 + docs/articles/baselinecorrectionpoly.jpg | Bin 0 -> 23589 bytes docs/articles/deselection.jpg | Bin 0 -> 10914 bytes docs/articles/download.jpg | Bin 0 -> 14291 bytes docs/articles/flowchart.png | Bin 0 -> 47000 bytes docs/articles/googletranslate.jpg | Bin 0 -> 13483 bytes docs/articles/horiba-1.png | Bin 0 -> 38803 bytes docs/articles/horiba-2.png | Bin 0 -> 45065 bytes docs/articles/horiba-3.png | Bin 0 -> 38961 bytes docs/articles/horiba-4.png | Bin 0 -> 57215 bytes docs/articles/horiba-5.png | Bin 0 -> 64713 bytes docs/articles/index.html | 77 + docs/articles/intensityadjustment.jpg | Bin 0 -> 20192 bytes docs/articles/mainpage.jpg | Bin 0 -> 51367 bytes docs/articles/matches.jpg | Bin 0 -> 53501 bytes docs/articles/matchplot.png | Bin 0 -> 34066 bytes docs/articles/metadatainput.jpg | Bin 0 -> 33421 bytes docs/articles/preprocessplot.png | Bin 0 -> 34135 bytes docs/articles/rangeselection.jpg | Bin 0 -> 27818 bytes docs/articles/regiontomatch.jpg | Bin 0 -> 18963 bytes docs/articles/samplefile.jpg | Bin 0 -> 13011 bytes docs/articles/selectionmetadata.jpg | Bin 0 -> 25916 bytes docs/articles/sharemetadata.jpg | Bin 0 -> 14342 bytes docs/articles/smoothing.jpg | Bin 0 -> 22089 bytes docs/articles/smoothingpoly.jpg | Bin 0 -> 22336 bytes docs/articles/sop.html | 773 ++ .../sop_files/figure-html/smoothing-1.png | Bin 0 -> 91164 bytes .../sop_files/figure-html/subtraction-1.png | Bin 0 -> 81995 bytes docs/articles/spectragryph-1.png | Bin 0 -> 121319 bytes docs/articles/spectragryph-2.png | Bin 0 -> 98631 bytes docs/articles/spectrumtoanalyze.jpg | Bin 0 -> 17677 bytes docs/articles/spectrumtype.jpg | Bin 0 -> 15654 bytes docs/articles/uploadfile.jpg | Bin 0 -> 30573 bytes docs/authors.html | 133 + .../bootstrap-5.1.0/bootstrap.bundle.min.js | 7 + .../bootstrap.bundle.min.js.map | 1 + docs/deps/bootstrap-5.1.0/bootstrap.min.css | 1 + docs/deps/data-deps.txt | 4 + docs/deps/jquery-3.6.0/jquery-3.6.0.js | 10881 ++++++++++++++++ docs/deps/jquery-3.6.0/jquery-3.6.0.min.js | 2 + docs/deps/jquery-3.6.0/jquery-3.6.0.min.map | 1 + docs/index.html | 226 + docs/link.svg | 12 + docs/news/index.html | 191 + docs/pkgdown.js | 156 + docs/pkgdown.yml | 10 + docs/reference/OpenSpecy-package.html | 143 + docs/reference/Rplot001.png | Bin 0 -> 1011 bytes docs/reference/Rplot002.png | Bin 0 -> 1011 bytes docs/reference/adj_intens.html | 177 + docs/reference/as_OpenSpecy.html | 1508 +++ docs/reference/correlate_spectra.html | 201 + docs/reference/data_norm-1.png | Bin 0 -> 4831 bytes docs/reference/data_norm-2.png | Bin 0 -> 126798 bytes docs/reference/data_norm.html | 374 + docs/reference/gen_OpenSpecy.html | 122 + docs/reference/human_ts.html | 113 + docs/reference/index.html | 177 + docs/reference/io_spec.html | 232 + docs/reference/manage_lib.html | 205 + docs/reference/process_spectra-1.png | Bin 0 -> 103365 bytes docs/reference/process_spectra.html | 193 + docs/reference/raman_hdpe.html | 126 + docs/reference/read_ext.html | 292 + docs/reference/read_opus.html | 182 + docs/reference/read_opus_raw.html | 138 + docs/reference/run_app.html | 131 + docs/reference/share_spec.html | 156 + docs/reference/smooth_intens.html | 174 + docs/reference/spec_res.html | 117 + docs/reference/subtr_bg.html | 186 + docs/reference/test_lib.html | 94 + docs/search.json | 1 + docs/sitemap.xml | 87 + 76 files changed, 17899 insertions(+) create mode 100644 docs/.nojekyll create mode 100644 docs/404.html create mode 100644 docs/LICENSE.html create mode 100644 docs/articles/baselinecorrectionpoly.jpg create mode 100644 docs/articles/deselection.jpg create mode 100644 docs/articles/download.jpg create mode 100644 docs/articles/flowchart.png create mode 100644 docs/articles/googletranslate.jpg create mode 100644 docs/articles/horiba-1.png create mode 100644 docs/articles/horiba-2.png create mode 100644 docs/articles/horiba-3.png create mode 100644 docs/articles/horiba-4.png create mode 100644 docs/articles/horiba-5.png create mode 100644 docs/articles/index.html create mode 100644 docs/articles/intensityadjustment.jpg create mode 100644 docs/articles/mainpage.jpg create mode 100644 docs/articles/matches.jpg create mode 100644 docs/articles/matchplot.png create mode 100644 docs/articles/metadatainput.jpg create mode 100644 docs/articles/preprocessplot.png create mode 100644 docs/articles/rangeselection.jpg create mode 100644 docs/articles/regiontomatch.jpg create mode 100644 docs/articles/samplefile.jpg create mode 100644 docs/articles/selectionmetadata.jpg create mode 100644 docs/articles/sharemetadata.jpg create mode 100644 docs/articles/smoothing.jpg create mode 100644 docs/articles/smoothingpoly.jpg create mode 100644 docs/articles/sop.html create mode 100644 docs/articles/sop_files/figure-html/smoothing-1.png create mode 100644 docs/articles/sop_files/figure-html/subtraction-1.png create mode 100644 docs/articles/spectragryph-1.png create mode 100644 docs/articles/spectragryph-2.png create mode 100644 docs/articles/spectrumtoanalyze.jpg create mode 100644 docs/articles/spectrumtype.jpg create mode 100644 docs/articles/uploadfile.jpg create mode 100644 docs/authors.html create mode 100644 docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js create mode 100644 docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js.map create mode 100644 docs/deps/bootstrap-5.1.0/bootstrap.min.css create mode 100644 docs/deps/data-deps.txt create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.js create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.min.js create mode 100644 docs/deps/jquery-3.6.0/jquery-3.6.0.min.map create mode 100644 docs/index.html create mode 100644 docs/link.svg create mode 100644 docs/news/index.html create mode 100644 docs/pkgdown.js create mode 100644 docs/pkgdown.yml create mode 100644 docs/reference/OpenSpecy-package.html create mode 100644 docs/reference/Rplot001.png create mode 100644 docs/reference/Rplot002.png create mode 100644 docs/reference/adj_intens.html create mode 100644 docs/reference/as_OpenSpecy.html create mode 100644 docs/reference/correlate_spectra.html create mode 100644 docs/reference/data_norm-1.png create mode 100644 docs/reference/data_norm-2.png create mode 100644 docs/reference/data_norm.html create mode 100644 docs/reference/gen_OpenSpecy.html create mode 100644 docs/reference/human_ts.html create mode 100644 docs/reference/index.html create mode 100644 docs/reference/io_spec.html create mode 100644 docs/reference/manage_lib.html create mode 100644 docs/reference/process_spectra-1.png create mode 100644 docs/reference/process_spectra.html create mode 100644 docs/reference/raman_hdpe.html create mode 100644 docs/reference/read_ext.html create mode 100644 docs/reference/read_opus.html create mode 100644 docs/reference/read_opus_raw.html create mode 100644 docs/reference/run_app.html create mode 100644 docs/reference/share_spec.html create mode 100644 docs/reference/smooth_intens.html create mode 100644 docs/reference/spec_res.html create mode 100644 docs/reference/subtr_bg.html create mode 100644 docs/reference/test_lib.html create mode 100644 docs/search.json create mode 100644 docs/sitemap.xml diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ + diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 00000000..68326f92 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,96 @@ + + + + + + + +Page not found (404) • OpenSpecy + + + + + + + + + Skip to contents + + +
+
+
+ +Content not found. Please use links in the navbar. + +
+
+ + +
+ + + +
+
+ + + + + + + diff --git a/docs/LICENSE.html b/docs/LICENSE.html new file mode 100644 index 00000000..58e047c3 --- /dev/null +++ b/docs/LICENSE.html @@ -0,0 +1,198 @@ + +Attribution 4.0 International • OpenSpecy + Skip to contents + + +
+
+
+ + +
+ +

Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.

+
+

Using Creative Commons Public Licenses

+

Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.

+
+

Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC- licensed material, or material used under an exception or limitation to copyright. More considerations for licensors: wiki.creativecommons.org/Considerations_for_licensors

+
+
+

Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public: wiki.creativecommons.org/Considerations_for_licensees

+
+
+
+
+

Creative Commons Attribution 4.0 International Public License

+

By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License (“Public License”). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.

+
+

Section 1 – Definitions.

+
  1. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.

  2. +
  3. Adapter’s License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.

  4. +
  5. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.

  6. +
  7. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.

  8. +
  9. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.

  10. +
  11. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.

  12. +
  13. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.

  14. +
  15. Licensor means the individual(s) or entity(ies) granting rights under this Public License.

  16. +
  17. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.

  18. +
  19. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.

  20. +
  21. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.

  22. +
+
+

Section 2 – Scope.

+
  1. +

    License grant.

    +
    1. +

      Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:

      +
      1. reproduce and Share the Licensed Material, in whole or in part; and

      2. +
      3. produce, reproduce, and Share Adapted Material.

      4. +
    2. +
    3. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.

    4. +
    5. Term. The term of this Public License is specified in Section 6(a).

    6. +
    7. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.

    8. +
    9. +

      Downstream recipients.

      +
      1. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.

      2. +
      3. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.

      4. +
    10. +
    11. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).

    12. +
  2. +
  3. +

    Other rights.

    +
    1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.

    2. +
    3. Patent and trademark rights are not licensed under this Public License.

    4. +
    5. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.

    6. +
  4. +
+
+

Section 3 – License Conditions.

+

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

+
  1. +

    Attribution.

    +
    1. +

      If You Share the Licensed Material (including in modified form), You must:

      +
      1. +

        retain the following if it is supplied by the Licensor with the Licensed Material:

        +
        1. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);

        2. +
        3. a copyright notice;

        4. +
        5. a notice that refers to this Public License;

        6. +
        7. a notice that refers to the disclaimer of warranties;

        8. +
        9. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;

        10. +
      2. +
      3. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and

      4. +
      5. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.

      6. +
    2. +
    3. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.

    4. +
    5. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.

    6. +
    7. If You Share Adapted Material You produce, the Adapter’s License You apply must not prevent recipients of the Adapted Material from complying with this Public License.

    8. +
  2. +
+
+

Section 4 – Sui Generis Database Rights.

+

Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:

+
  1. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;

  2. +
  3. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and

  4. +
  5. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.

  6. +

For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.

+
+
+

Section 5 – Disclaimer of Warranties and Limitation of Liability.

+
  1. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.

  2. +
  3. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.

  4. +
  5. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.

  6. +
+
+

Section 6 – Term and Termination.

+
  1. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.

  2. +
  3. +

    Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:

    +
    1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or

    2. +
    3. upon express reinstatement by the Licensor.

    4. +

    For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.

    +
  4. +
  5. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.

  6. +
  7. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

  8. +
+
+

Section 7 – Other Terms and Conditions.

+
  1. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.

  2. +
  3. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.

  4. +
+
+

Section 8 – Interpretation.

+
  1. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.

  2. +
  3. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.

  4. +
  5. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.

  6. +
  7. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.

  8. +
+

Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.

+
+

Creative Commons may be contacted at creativecommons.org.

+
+
+ + +
+ + +
+ + + +
+ + + + + + + diff --git a/docs/articles/baselinecorrectionpoly.jpg b/docs/articles/baselinecorrectionpoly.jpg new file mode 100644 index 0000000000000000000000000000000000000000..949f2fbce98efe4493249d631112ca74981f0507 GIT binary patch literal 23589 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 literal 0 HcmV?d00001 diff --git a/docs/articles/deselection.jpg b/docs/articles/deselection.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7031c6009d34e5e4704483fd22538be3dc6a65be GIT binary patch literal 10914 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 CnIQfE literal 0 HcmV?d00001 diff --git a/docs/articles/download.jpg b/docs/articles/download.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11b72b34ad49dc4c65f176e8d3c56f0e8dc5ffbf GIT binary patch literal 14291 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%0Dre5|A|^TG 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 VhE*}l$O8d>$w(?nREZe{{Xgazv(Eqk literal 0 HcmV?d00001 diff --git a/docs/articles/googletranslate.jpg b/docs/articles/googletranslate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d5dc97ca218ea1a75fea59d685d496f1af5572b GIT binary patch literal 13483 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 H+Z*^l*I)U@ literal 0 HcmV?d00001 diff --git a/docs/articles/horiba-1.png b/docs/articles/horiba-1.png new file mode 100644 index 0000000000000000000000000000000000000000..dec3ab524d221bc86fefd6e7623294c671ef4005 GIT binary patch literal 38803 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 literal 0 HcmV?d00001 diff --git a/docs/articles/horiba-2.png b/docs/articles/horiba-2.png new file mode 100644 index 0000000000000000000000000000000000000000..873d0588d9fb975d49aaa693a98b99d48192191e GIT binary patch literal 45065 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 X{>8ff;ClT5fLL-cCFvTdVetO|_&Xp@ literal 0 HcmV?d00001 diff --git a/docs/articles/horiba-3.png b/docs/articles/horiba-3.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e4d090bdd3a4c58e696e0860a9b84cb5838ad5 GIT binary patch literal 38961 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 a`H^MMdT-%w@+mRk`Dv(VLu!?*BK`+~-?^^< literal 0 HcmV?d00001 diff --git a/docs/articles/horiba-4.png b/docs/articles/horiba-4.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2ac77b2323f85beb6fe6bf1b4a817e699850ce GIT binary patch literal 57215 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
  1. vHG$8^qR5YrHKvec#k0B>6LqoK;jF%z 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 P00000NkvXXu0mjfeTb&M literal 0 HcmV?d00001 diff --git a/docs/articles/horiba-5.png b/docs/articles/horiba-5.png new file mode 100644 index 0000000000000000000000000000000000000000..1e573f9431b34f238cf5adcffe007ae8fc38afbe GIT binary patch literal 64713 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 +Articles • OpenSpecy + Skip to contents + + +

    +
    +
    + +
    +

    All vignettes

    +

    + +
    Standard Operating Procedure
    +
    +
    +
    + + +
    + + + +
    + + + + + + + diff --git a/docs/articles/intensityadjustment.jpg b/docs/articles/intensityadjustment.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00749098fb851873400b31ee183852848797841d GIT binary patch literal 20192 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 az}egTJ~cl+X5R_srrz)08>QQS$o~rh3w$yF literal 0 HcmV?d00001 diff --git a/docs/articles/matchplot.png b/docs/articles/matchplot.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8d13a435a7cb3e8838e4ff823185a7b5a12efb GIT binary patch literal 34066 zcmbrFWmHvB_wEmUKpG^aySuwf8tIho?hfftDW$ulyHh|wx;qp>Qc3B%c;E3K& zx620^!Z~N}wf35GKF@DXV$@XR&`^j_AP@+eg1oc_1OlrIfxr+zVZl!@8p-@15Y!Go zEnN={GjDPiH)ktb2TO7fUl&VqOCMV+2*hV4`;)C3vp{0R(=fv?=vwbCKSVxb9PQV? za|#U&u{SzR3CfC!GDDJYUHM<#WIf%S-reKZWLWuS#4qcd#^@M0zT7n}nPf^#=;`0Q z$;uE3>~YgSy}R?X=x!N|F~L8(f35Q*huy4cbY1T%i1+`?pzdHkx^Tm4qgAp*n+v9>dh9)N73&q}A?* zU;b>^F<-C_oxsJ-q|2NZ3TK^-x^CayABsQ3-jnSeT5t2|)-9at=xE#+{(HPnj=#OT z_vY+2nY1_FwRkYEd%XU9qZ;G;sA*-~@(A^?H<8=D_FYxT6&vsHp7fvemz!OHv3ZhQ zYB|3-6g6Er=&*Ra7e1}d#n{~|ExvVU4v3vZi+b1dIQ$e!c7Fb}&7z{LXy&FL93;Az zCARx;IGV%~>_nV7AJr9MFw{}~_!OM;beM4M7eOy4p%Z*a)S*~Z{F6_X=h2l|@7o;{ z-Q^4Hp7&?x*b`9?SS{kqv85yWUAdeXwcT-zx#A^a^grC+S)O&E4p|(S{#xNIT}ftW z%F$UCh->^nN3+v5x1w)bm9DO%%!Dyos`x=LZujmuw2N1+_3#|ySMccXtE0$eJcl?2vmrIw9!ht$Ey$ zy&y9v@NvcpOHJ@&({8q$Y-sn;kM%~ohJ~aFk)hh4RZ%9wq$LMyD3hPqyV7kH3R&x8eQ3K){L^@$S#$ zh?{vV^mi|&Lvz?>>O9W%qj*odZ-@?_TJYmP+3qm8~|J?C7A{$w(b zmY{nsD-cgHMn~bXy7Q-?%C&(RVd#kI6AEeB4{4VSHLIU*%MJN9eZ`g`e<1vx*Am?a zW$SlY+I-pXVq16zBVSyF=cOh7{ps>%Q?VyigwLhm`qVWl0ohT_2EI|H{P$XXAtLv0 zYQd0JdY*F5-dF5)Q6)WsFB=?=SDk|za}SSn0^(6e85(&W(VvYsr=o@=X`UNSqF;)wy-GEza@xQrxX(HRH4J~5=J3;MiZT7^ zfw9(?ZP(sXqjs8i_Ut|@(FhJZt*7hJxJ0?1dbM7Bt86nlj;+Qgt!hFFCgo<5WgyuK~h>^K%@Y?5OjV9eNPmkF5DWV)yw znxS~;r(%~SY~AF}tGP;g^l* zQo~#x1=|J9%1i~$tnpW|Cv@N26`qdY;Z`*${sT>Pv^dq%YKVb*Zs;jS-%5AePv9`f zY|#Tlh8vIuLw5@L1#>249!N(&FNP%1vU`-Jw5HI{qxK@b)xPr^-4~_o>Igx1^O(vJ zZl2~0-Imp@h1!LkOdjI(`-FbXFi-nM*c!MIwI-e?5c9EG2d@{ex02c!;Vt}&*V%Eh zFn=j(9(Q@XqWD^)2llBllrMfr+=Xcd`-&buN=FB;Sd$}Ztgurj+Sis*ofU=S`;#;I zooB_){PvKc{q_e1O1E9IYzEi*xA!V#T|XafcK@sJ(7{>^bMN70d2-~?=nZ=Q`*t=V z`p*Hbl(d}l#9Y{xg&uDX7Or;t6s$X2dzInU1}JxSzf>aFvcJjO{ahw0U1LnQwS==9 zk#SDQG?GPkF|5MPA=tChy04^Y5%|(!b+b4ySaFqp3$=90JrT>@oM|oRl#Rj8=2BZi zdJ(C~H7{o^F?FzvQV5s+Qo-qA;hze;(g>=@2%H2rf~@XbD|<3K3W4K0j<`pAwMBRr z+Zle|WeTV!7E7`LlOqO$tJ8O!I$^^|Vb>7cd8ButT7DA)4VEZq-?21g>8MTi&1}8J zA-F!Wnx>G0BCJAG4tVt+@VIS=)ISUt9(xbWzWWxBZ+IA5m#)!vAG)=}BnbGwLkQPi zqEx36&>j8on&U!>sfj%J(n&A8@8tIv-#uXwLqq}zoQhiV z(8>;^4IGn7S_325%}bPiJXjUY7Tdz!9bf)UV3ya1 z14zn{^{lw8BdKK6wmny}MFgdO;xqzcXg>i4CYOgR0aA03Hy4B2L)3;whvz3XF2)RB zkC&~L@Y(MR;8l39_l;iTM|S4;_m6v^LX%S*XSeSNFW}~ggvZbo7+$?~K?$Efp++MuO}g2ca=;NsndRkG6?kL%-hG z(B_kmzjO2W8KB`OhAGOfl9OMhu^;iTB7|YgbeJR`S67p;b~(rd9!o*IU8p}R<9At} z(%6a4>-zq`jk@i^MKvBM+O!|223=y|RVDNq$mQj}$63z8=!L7})M2bnFNRQ}ZqFrg z=?>8^Poci)B@+2!6EHUSR&A7Oj+2T=QpBk6pgekf-;vrsCyF3*3qm>N=*TIVHDMA=$dEMb=kmVNsbOnB_g zF3#T{9_Zl2g#^6{J+EUCuIzg8A*xz7w=6zwmJi zVa!HmqcuxP0}h0#;0NLOPwjO-`gd7=5l7=HqOlhB!9A%pM!&IAk{0_Tt;n7@jo&IJ zwH{#gEh-7Z_=@1&WSI!7nq_}Kgy4)_ik+PE`=AA)$?Q2fN}+)*W(UGF7xBlj>7jTch_Jb^IX5MeRWCtnl=>XcX2W@a zf(VhBhP&RM7ot*+J|vi~GYyp*T7y%Tjr-31ho>uj_>=3R6^g}B{82GFOv%~rlD|#! zUEagj^G`2U&}33y@b_~8Hv{J`sh|agLRYs{w;&L5h=R0)mQU8vx^IBi{EgV3N%xa% z8mslYdJNWhsv6E+ckKKHbK}D0+;i5K697+>os~V=dVQm<3 ztUeY3gHY(vorTqj+r(*-(hPJ2lYGqLtkb01#m$=2-P!7w=yle4)*d9DV~D`~|K}eO z?7?1ik2_KJA>Bo_kb{#z)8|jK&(Ab4H@={=Aqj|)CKsdZn>uq{bMsb3Fww zL4l5e20tgyd`(;cm&?ryg@w+X zoILE?U{4|Bk^eaPNe+`9qNV2QZ3E$ku^rwcG{UJB`WIIMJ%Pre9i1%gSw_`l!sSa! zOM1GHuibqoxh<-reoXvwGakDrmF(*Gp!zq+hC~s|0iiHFH`O!32|WTrfo|Xw&(Vy5 z5bZ>k@V07){40TZrOx3M9))>)oeD+76!&;Nb1^PNd6rvQQxWTf<7%@b&WGwlY53md zg2Q&qf?f0WJMwl(K6uH!r0N|`-w=+Ww~;9tqfd#RCpb$Hm>P<++?g$yA1w8Z+T-f- zmEb6_1k&k@ZVKW#7Q*>`aiSK~@=ETRDK!+)NQM7pxleo+3l7rLBMkZbV^}puSb%~e zG+Mjbu+3q)K0ZEPiLHy9k56Z|QO6|kGFesh=4LW@qsBxmeXQ7aC4Kb+wI z5no?l@4Xr5yqtqeGGFDMm27M>lwT&Ilf%gKJzOv{`xsN*YEaV0MOCM4w z$^G&&Y-ev~uVo0Lyf}2*t*z|$)H_VlBsw0RruO#RF}9vY<}q7lJUqOd;Kv&T1O%|! zX+rBP*W;$eL=qwG*+y^+rz3Q^M`%WcM!3-IS49U02R%;@r#eQSsbjlt%{ZR-jYO1~ z60h9Y{86c3%jg2~F|c_^v^q(NC`9*?)E#;(rPWX}>fMq%cPUou9Vp7OOD`t)8@rfL z8@u3CYJLfBJ;7Mb{+JIce!05BhU^pa)ab)ltTh%uSe)XxI??m{_ixc$HUd=rG|%}r zI;rXDChp@rOgh!5@UUQSg2Cg8DXXi)TH{&Sj=&5R@BQ(YU!hBbkwS3qUK}%eK;h#A zpXS$fSBX%F%wJy{^7pWVoB2F4ai0?2N#oWhxW~a_h`K&JwOyyO^{i)*8y*W+omO2; z=bsY6;5G%7)XQ`lU5fB5HA6uxsI#F#l>Cu6iby#aQP|qB_*^3sM75I;wvyM=$ZHi`CQg&3+2#t&yVqJ zTRL*8&^rnbxtkjtR?W0m?b;T1cXu}f&c~gD&WUHam6Viv?$5?{c6Qp__h@NpSxvg{ z@q7NsXlpNk5RuG(&y}gBc(ZJsOX9ue3hukT#P+oN?j-l=es2R4tAkZfmLWAW)Bi^T zUm_tFEfbUdY>6`X9kz1xKVb>>p|_AwRHe~d(}Ky_^}88km4$sXw{|I=8e@^5`+sSx zxqb(7Rpa2|Bgu3vYi`Sy>Bk*ne@PLh2U+@WZ*ReQa{fJ2%$okCpa52_Yg_d@!J#a* zyiI|3j$QOO2AuE`>4da#q2iS1#KB;BE<61;px;+~@ziVau-$?Xa(Q_P9{!rO|GlRv z=g`}z#vLc-{PnEPPibN&PoDx~%SQeY=h{S7v(_yHv`zb0^AMP?OG+TC$p(?h%W!1Q z47?TBLF(V|ZR;aA#DiCqzmO;of~)WFH)$W<_V5&3uZUWH>w0UB;q%M+r1>}v5xYjT zk08!^rWpoa{;HogUsL<;eQ=l53d?c4Q%+i4jX7!z*bTq!iwg4G2-7hMJPQ*>m#y0u+>i9nG{BYt6KVO!A=98xrHyJ`m zXJ;o>B7gtqoVrQ-rj+DluD4&INyFhK^MzNNOzC60NAoL9_8>>C{aSQ8actva!6*{x z+Ia;fH2=#CgDq0^Jw*_8f{VY;v^NAsDUG@9YQ-L8HO}D2d;6NM1%=!X%2SP6nqR~w za>bsiJ5D}o2p;kYj1;Rl536$b8(&j9VQFDoY%4b z{>gP(1|ON?@uF0$>-OLa--gc*1bjnNf}vmInX@x96M~18;^dey(kL%ppbdcVCrjkt ziS|AJ#bVs)^LJ-3N%-vBXX_jR*PXBJ?d>l7hWh&YT3T9qdcF^ri;MH~%gx!DnL>US z`$tDdi^l%Pi#?B?W@g**gj^m*!60jESL#j+yHg1X39+yog9Mqy@49nX(-ZV}5Z}am z-Lub>9sK+qzOm0q+g^_Eug`01YmJSKpSi574O*(3n|b;8yhlFLsER#YtUC8R>=!1{ z($Pgp=7X1ATwH(v_&r;?>9y)un(dY0xQZciF;(&AOTjg^JGn*tU;}C6P(q1qvttqw z&q4F5)0Zz_>`%-c=vJHILVM|Q1J2TW?gxLA% zbUUgWPJAVB)_z#sad*=35cCv|Abx=D*bDe*E|BP=E@b~uea5#b3drn<0 z5NvwS{Vp3mtDz5gJ36T_zmU*fVUnnRvjZVk0;z}~1Hv0D?eYI z$>19`+Amh`<@ld~lruIlfesIgL#HAPf+Y%-&~2E+yYuE(<`+qW$va%dV%#yWoEVWD}xyM?xp9=2LkR z;QrRXf99f7&cKb4F1Y{AkI6Zt``U%b{eyf_eLW`uDybxSBQp~LY5~Kf<$T2(^Wj91 z%Q?-s*jOMTifw00c(}O(?v7iCc^&@!Ojf0R{fXUat#xQ<$mH=X-PYFD)6=t1HsSW9 z<8-0Mqz9}>CJt}iWdJSGOgGIk;}?ii@HIO-dw6ibJf@*IKR373OoH;R8!Qe~5fT3@ zhoxGx$s7?L9v&4L%~Ib3k1vq}+gMbx;HW;A{h*#FPO{GmBCb6cqMygC9YN z+)vAq?f(23PbSvg-5s=8Z3MERN5ONkZUzzw1i;*!)>u8a@~meU`29qdK$6JS5*puH zEl@Dv1mO2p>NPA>8C?JSktBAtWDe44@a=3aBKoVPsj2s$J`te2E0~M@A^wfPoTD$s z_;8`B<8r|Ok(XeeQF8_BUlJH0#`9~Isd?+`rVFh3N}2_?0H28bLBk`$Ij2? zhr@g*o^E>IXFS)r$HAiqrR^my?!SQU`}_OxOg^DI0dOI(QBVqS)4CcOZXgbW z9&h#_*f=;3LBU2w>q~X!n|_B?II6;b!76(|7R>JJ2Qm7RN&9H6&3!1IaJEzx=}#{l z1~n~hj@u{$#LnKHn3(t!1awA52Ka1#d?aRg0U^lzFKpiY+FA8 zsmy%3K<0WgxF>~EM8rt3{P6Z**NCTKn1Qe^Dhj;1m_ zhflgm(9H)qQjlaOm})vDr9lwtclk9nBx{zuUT(0Sj6lXIO8GIIlq=%zy`JbHG!Ir;(ij9Izj6!1KS&c0FMvl&0fXvb-{|Bs;r_g~-3D=PeceYQ>n zs{)_L$IIJpSUtwt!F)?##uqH8;Ud^KTgS7ZAdbo0(UDYz^Y#1yNB_QBG=K2;04D?8 zcKGA~hx%K}cH16C*S=~?=fzp+;=NmF(%P|Mh4HM}DoLh81=I=7pXiV8tYCO{Vl)a0 zN><4#SUVFVBdOnhKCx4)*-Vi_YHBJ7dk<1Bi*J}UiyiKJ6S1)<>0>-LQ{)W0ApI-P zGBYxs-2{NwmDp;(dBafbVMNAm8j@1q{QSks!J)3G2Tnk#YOXx>3^>rAKkJ#8oO1WS z5)csh{P{Bw_8_GabK78sfRn|u2XAR*rO3d<#N=s|u3=?mB}<8wG_0wu{mZLEQ$s^h zNeM*o`T2QxpQ*C4vZJG;tgNh&Q8wmIRm+Bcy~PN~PajiKQnIp+&TsC6f~m1@Kt3>J zUEJyme~0;et(uyo?np$W{+tLnv!sF0T4I4vmkD2~psS@SXEqb>$Arm$-{!x-Zi_}> zf~Q9&=&^sa+%Qck(zFZLUh;48(d;)Sp8x2?MEB2+N@=V{?UrL{0|C4zM3(V`3 zL1eg`4VoSP&h2vNuTZTs)(_@E<}_aCgm2C&nilS=nfEtXub;F?O5?j)j!NsThP zhkpP0h03US7!woAyv9{uwbz&*+<#so3&G{45GHNe@uILtLy{cQHMH-zz&A&K{w04g zF1g{do*E}QexVsj)bqte8A8PU+#rgccOTuE)1L2akn5$KWr-f$_Vdc^vuH=rBftye z>x>ir`>m=0@0VjvQ@iS@o53ofd1V7;=%hfUWA+Rsu4EalWVCjRdmz$~F20&HG%B!G z7}*J7aF3+9M+G@TV>Bx(3zSen0RcV5WjB92yMt&fs@T}rtS?+USyn^3r4(f$=qYJ8 zDcPS>t@?hg5jOXL`&PL-1qS#AD3VK%oGNwe-hO*e0pV7rD#(|L>OP+kx(0dVBaM<% z$1yJj{ICT0oSA%b8VJQdj{*I~zR)S#r-$3cp6AjD1PV}QPHnq*kc<+BV%CnM`mbNV z0`2jfnz^jL%PT5!rjF#Q4C(G|he~*fXMbc){`9HU^H5uPme+YBD?J^lmk`&m)n!|m zZ~X!!@#50b$qb$^Ajk%G>saRdjwNB~Rqn*f276p1GM@0$qwq>kGs5YcsS;rGu5!>b zHlw||@v|?|1}`?hq#vY+@BjRUsqS7MZ<_%@#31bi)u_pS(b%OA0S*cM;wHdrX^ux{ znARN&2A+kKF7oI>@I3#LUU~}hvNQ@2hDCew2nCaO>#CPKze9lvZEA&&TnfIbu;x2- z3Kywgca9-+iXGqq)UkRXY_4zia{aqDfRx^eA`5EWFNg#A{n^->vi}2mO!V(p9Gca5 z=`(K!WNK_o__4$RCE(bA`HEFXnd0U~+x_|yVgG+XOIRaTLjyK$p7_2_^kr_LYN$p( zqC{MU7FJ{1oaa$HGy2J7*R=Lh%7|ENwh_q1-96o`=@+Ex0VSIgE< zyKKRFK%ma5iUsx~(*ePynwFB{V-phJlT2pL?6psHM1a1?jMzvDeTT`i_jD|!xU7BQ z);tNc`j?t+kOYGM^dWg4Ep1=lB?%ssWea&PEG&=)-~WC0?i~OQ1`SqdA@JDuHx}`p zl*K#TmLZ;>7U0ZM)D}sl8=cmHWLkj1l!OoO1LAREx!V=wePTXdF%5>C%~66wkH4Q{ z1_i%&hfa;Sv>nxt1zk1dz8lyMTzRLVShEPu(^~N3d2V~PLE8L5ax*hMRWUW?o~?nC zchJ%PfLVN9ntZq&brP&birH{L8q*rc*iet;Vta6qQZE*l7)3S-L0IzxE z@=It;LmN%wNRopmG&ho!Kvw2nn4`P+ot$ydLLu=rCewke3aKARcWv!vKtdi)8JU>k zq$#sIbwDvR`!$Kts}^T+j|``0*^ymfqgW0KePw0kvr=$}aR%pq zPuAc8z$QF{2uNP5P;68F<=oWD%1T8AW9j*M=lO&|cYv>oN}?u7Nkv6PcQo! zF9nqkX2(;0l;%23cAetQ$r{1VZE#(YQq)V@6*!BUG6F`~o%#NPhi=baln$W|rb-1zFR&g92&aU_j^~G(TeJ8I8_o zM)Qld3MS| zcl|5)j#*PR?4;-WSMh%)4a_U+4%-BhZUaZDZDR72oO^GP3$M&{(ORVpV^?aVm0{%!`Z2o*}8(*hO zm5-g=i7e`EE)|{OCX@Z-I!te`bQlU$BOQ-bE?$1aU_EnUSbW`*){>aqB2UiA_m!GU zahp}%>j2InKT7L>DEAe;I}-l$Sv~$3YoOiyP>81tiTIH9gqqq=MKUB!&bR!J;-V?t^Tn$G|Wfak@Y*pnW#519w-QDH`jk~}#ABBb0l%sQa1x#>AuXpAPS2-@D9?E)*n z%*x8j%)HheC=>$fg);yF86|pYgS)bX=5<3=%n(HeWJM|*wT|Lp#NTUdqbpNZacYZ~ znyMn6AYOsR=*BrG_1Owt2Lm)YA{{pzuMof+OLBE!9Mh- z1C}RN>Yd}JejmS9P-p{pS*nsP=(5!teE)-N+vQUZwdm`M1W%1f^U?}&8e`Sz3t%O;1-890Q;^*mmHD2gCCf=IKLz2WGfY6vE!U)=j>4+6+4zDaxoc)m>LBpvqL4^oX*t zIWJV|fzv51#A%tLp<>2+&)+lG<_M(Xv8Z|cLo{U)QfewG!|lcR=$UkiwB@&%)~`hN z2ASp&iVV4v*B}6V!9yB;dX{osIf2E+>D?_$e9Ycup8~ z%%o4=351Tjo0|$?HxH{W)5PyU6hH6A{ZYf@GcyBlHyBXStc^Lqj(|^c-srq}xZbR( zsTtl-cN`)(WJghPRZnF`Qwq(4QXd|4Zg}t+Dl$-tp4XDa@T!%jRMga5-vnfo2*3p) zy;^dI{n=~l0l18wrHRr#Aq>91Dx<}ARq1k6VrL~CJ;mei4Q?M$1fXW z?>};y(06Kz3@WcIt8BYu_P;hPngl-pnwP*+$;1%AtY%>R?1~_222U8#(!gZ z8ssqf1t#uST45o9=iBYcAR3k&wYAx>vB`{$k{t>@<6M`8MJAlrFU=sqr({NOb z$Y5Sx&m#d_gj)o=HRG{|L*qz~VBOHT`VyKiQGp(`NUtJ>;7YC^_b1^QBPQ?_2%840 zgn%R|dh;_G_-@{Se}4eWc!qWW3jik_1hO?5NPwG9kJnOB=qwD+U!D}>H}PKN8pn5e z*Wweqj`t+`=P-lE`Ge;1n@nlw<1vOAN*FqGKC_y!C^O2l)VI#L$#%E#P1d=ovBd?4Gx=Mb483Kxw&10_(5b5*Xg1$oc zpZ*umcp;9h``>Kt;{`b0Ol)lD@8yO};G#Gd9C0B`Z+n|P(-+*BBnC~`unsXndV~Gr zBm4r7`P<|qUBPovt_glPeD0Ke=bD64WW@bD9w3ys2PYZezdf%Gv;oK;&4e9ZR4y8oaw691-AV}SEL!g04Ga}(3{s-O?o2)=242iw|Jj+Q!A>C zf47$up>c}y%12>y%q5Mzm2a$8pXJ8E!O_&zBqkz)4efOuCTa0Kw`wf>s(;?4Qu2E2 znB`P(Ezml??!m^XtM7dzO;;^!t>o0`wri*kt%aigD?__2~RtG-XJ%q);qZk`QCx-WO+XC=*MW)AT?AbX@k&?pq%b2HEg zyk&@~-TEoK&>RSt?>?xdsd*k}a{m@2Zz{RO0I*=me6_KyVRfKGGjX@V){vb|TCt}I z(mq06b)7zVmhmo9#Y*SFq#}_pS?q=8iGV zsL8`W^tuDu99QS(=O=J`pBsYZr8$yw`h`G^k4I~n7Y-l8l9*QGn@5vE**gF92R+;- z5O5Ua=bPms{jrYYzze5_Ak6Ui-zBCF0$K)(YJ896z zoa>bD!a|jT?&#rG@;nEdZo3EQW+_eUhdMlKQ_=`2^0|TKrqvR|M%9)96gP8#bhL6b-76Dy-%Twe2LvM96XXzXOmg?}WLZ*9kO;sP#{jL!rry%~B+%7ht zh#DfX)hD@-W;06{{S7&4B1t#~th@nQOJ2{76MeEn-^tNf&^RR_`+ z48pMcsCfhc&K-be5${WoDag5%upoaJ;+k0W$qk$A-hj^N*BBfT(#ax)c`Jk}@y8a-~n(U2d z4#NTdL{N&;&A>+GOoX9RUeOYoW`sNxZy|EH8Nn4JWxWyFtzmN^BiQB zR`nS3ARpptw`3_+RU0in_xJY$mIvC0db5oZ;fP%iSF4~+B0X#954;Nl%2Ylig2F>t z90&5w6C;lrnkUL$kbqdX!MIYoQ`s;v`t934(5#8J0YRQ-shlfHB3uPzUotK|4q}L1 zYpNq3{6Gj}l^wi14EY&j+@0+5V*vs%+^?nc)xOm;uQtbg;}$^p%z<|Ztu1<^rwxZ) z>|X)3Sj9H;Hw~L>)8JfHJq(>HuWYuNE&w2v#i;!Pl=>`Cyx&tufew?Dw8}68h+0ZY zBYa*PIBf4;)plC)BNyt{4(>MgByxWA`oKm)D9qgae75_906^Ss>gv50pD` z&2@FKP!ef)-IGdD$b6bMO1=!a?oB$Kk z7n7bK4BR!A$!v$H>oeQ-0Jq*$kkjG+K0A{Z&Lfq&uvk0XyYkR3TqWF%vMz zDq&`0%Sf4}u@>KiS+#!!pzrn3GN@obygIU{=!+dDiEtIme?=Ylq;+Y;COZ+BXUj3j zgp4(L7vRIB6(BO8cpCi8@&hqs%LYLArH^np5(Y0S6?P0kq-!tzzQ5Jd9&z*T> z9NNbCFqJgrw{Leq-;c{-iQNUC$-EK=voEZ&92rGIQ9?X|n2JVdZ2ub-PCj)Kc0E}f z-ZOzAhQeD-<~)Fh!>r%94+5lZJCZo7qX4P)*&FHf+@_|uJ>K7FmZ~6-N4WSYf)D`q zR}5?e=-wAHaD%2961Ft$QT>cvJ~BfwA{J-=YO{{b!`Zp%QY>5Va#G_4&q4ggb1RTa zHXaNM9bPIj@F>4P44;5oA)@kVR?Xyf1P1~L5`F+L0hfOqB6jA#_7lzl9oygS-GBpj zB`9@sg1Sm@)~B6^vOAN{tqhs+q!3SFzdB+bCLBH_2UzvW9GGOF4Kkch#pV|AO6zR& z(y9+ZZz!lIH`29iq@{>JSzn`RZ~7R0Qq5k0Uysp z@*;(h(uQQ+NJa(!)ud>g$aKAILqo&fM7DvN8c;i~u79!QUi}5#PXI{AkUiCj-bq4d zxmm_Q{#Rru)}qG#>(@0hGLmNbF!^+^3arWvepZjoG}B8VDN(FiA?~;_fo*!^m)@nM zdvOfrKRRbW;L3|rkXrjN(1&UK1&FXD&m#V7U)SafYioFVRQts%H;S_M3K$f45nb&V zQ*(Xev^6XG=zVJvWzT#3gq<@SQhX53Kroi->FGVsFM(@L0;C5@8i+W7>t>$wzMDZn znx2n6z!n2h7{LHhf@YR;>vrU`k?McJ2LC=i{Tdh$wgBJltK-#~CMxDHghYF|PNN?2jXCSITE zGP?DCVcnY&6#h0mlp71|)(=!D-!oq-~u>1o`6qL^13ILk%fdn8xV4@)g7r)I>s;Wzj#osUa=V+)2mQ~O~ z2S&#g)6}wRCiLxqOY-o4#^*rFgRzLupcCCNDJo>vA0c+XjR7gB96xk;_ICfbBIXl& zz6@QKOPD*Tnz4c^K*b)@GQ78t*Wz1f%R@Sp%2$(~jezC0nQux+h&&#D4c81?eX{We zPYP^5aNwZTirA|fbe0T!@OZ9R@a4h0jlW0j=UE9m0@;gcY2X-5RnX+c;pP{kM#m0P z!ou97j>@3((iT=uf>+JZo6fISb`3ngxbJ{M025%Sl#Fa_CT(ssE9s&u_Ym~Z__}Iq zDO&aZp;NE>i+GdIk-urv$+h9i0n5rV5Em)W4)}Xm-fpL3#mou%YV;fFH(d|k)rWT!$1ep z7aWtxEP?ZQt_gPK=T7Q`M>Ok(5}18Ns{gaeO#u5f36@ksF}+@7jcGKf@)^%HYcLX^ zI&F4$33Ryw486R(Y@^@Ya(MNDW2k_#7tzbv>>FzxBC8x156t@0hYS?c+~=GslegiXEp@<_B*b<{PmZMV1CEGjLbXX zBpjlNEHNtMs+%1{k_fal&ITUae}+l`AG>^RB?HEK^~Ccm^a!NIzxc8%GN7#lH@|5e zx)_mH8dOw&wXm*#D&^7!9PVLRVPZQN-usxG%%kl7j80s;ffeCpF!0+}eyzYc z%Cu^SD@#cmG3A+npJ&R_M7qR0#;JS`kVEB{FPYr7A1C+DZvse@sAO`*fN)3rCqxvEO&ka^cOc03_&$246WNoG*X2Qb8*r!asa zb6gENC@+0{I1LthY5gCtrL{^&M*&amW;umW-uq@@$=FdlO| zfJ=g2M!J#LGH83R>idOp47Go-GhVGn`!E!J;RBm7W6E?wY^hve8A=qned*^J=v)h0 zM@R;Sd2U{T_CkP6IsV&RKKq!<(uj~xQjg5{1)Dmn6 zMhKrv5@>~kG_E8q923TYrwOfvAv?183reU#l?QT@5cBMF@Zz z&qf;XwAZStPg~&_Ly07J0MEhII(8^sgY&#no?v^1LQYStMTw1K*@e_RZd6#Q091FD zEwy?GMhAea>u6|;sYO(njiMvYsc}gQ3w`eSRO97eth{5>>s!T|Qb3FYz z4H0saYrfVy#bUvHju=3XK71C0h-~`QzC35D;}>cxZj|;l%sl_Ob)4 z`*|N9AMV0C01fB(9g=EEtwrrX`%f70!b93aenkC!(>$d|M!1f#?=H}>kr-sgnwoH? zU^)m)=AMIL$>}D4u;WN25H!W`*v9Nzaq_YHffA#SS;^~ahoFlLX`H8QbTnXiiHg|b zyh)0Rn4JK+I$+32R&)Jx^{O0Dw6S^A-!Oz=ev!5s1jfU9*fgbjzM1bEy?@k$-k7@Y z&`TMFvI7_e@*Ef)1pulGf^u!wVKy`7i~y9l;=796p;<+d3i7+MXFm9O0PXxS0oPB_HP? zTUxJZ=#4*?r`vboODuYV`3#>wTcF%Ifb5zGBp`A0DW4VMouft+yI z=oFx%lY^@3>kHb>P`gw;d)?Ta*=k613;x5H=TG*hT^);2MarE{bv#Frej24TFfC>c zhI7!+&|cuP3jZ!j2BSMX5XtC$7D-AsK^-3DyXiP&FhLFSdiCKeMbNl>t@v3UnMw41 z=UorW>}h+~raBe5RP3Zom+>LaK{kI2;2@WWi*TPr18>#kNZzQc|2++UB0m0>0)|x5 zcGsMilNgJCo;k$VITbF|^zX4#TEC{?+0lma2`d&1IrH-w*D|Q4U9M5P6h8HEjtbNVgcgXB@ z95fZ18gyoDnN>1*kHKu_;}5bYFjcSsCJ*4)m2rAO`}=uJ7{K%Axh!C5=RDWbc$2ia zhR}22;c@dMZ6> zr!(Me&Ok{4pTrjNeunm7KQOQ4X$Pa}UrVO(X1UXv-Xv-I&SfhEf=i{;dAg2K1tq2CE{F+KQqAJEYyRq9^@3jt>AJHY@Sp!8y3=iA!ao`JRd zq)6%E?KA!bf*jadxQQP^g%?7|&@jj0?Hf602>J1euP1CjCf>Iw^bI%!8=^eSV1dDj zGoSyCkducsuIgiU+h0pdz$&(G{pDVWq9H#HB=#MrhLp*=g<4d+ zS-G2G{^j8koG{Dg_y5Au$1R&VV0ISp{qNtugYk;D0DXbsv5AQZUQ=k!*I67JHHrOX zwIHEp0?hlIx+O_?U3o=mKfjU0nSJ~vlqrgv-WvbzP{E5FmJ!yKBX)8yM~7PesHLH;lbr)<^mBx4qk#Ww^Se9mMl;lp8}hJBQweccDL(@DCzp-Lw}8(ZUNCa*N|)3EPktoN$qW z@0HuT!s8^7CA#^u_$J?m)jQY}WalcA^lQndSV;zG3z;J2YnG_iw$2&S{GF=KdTBbw zPVSCb@1rPsh>E27M>$lnIbBV*;zi6%8ZOh|jxHY2>Jl;eOJK4k^Q+MADhb$}{!Xgd2e&BMJ+J zdGLs!`D>lzNl=^@8hNQyvtmq&F3TMa7s(g4)a*)E?}h?LN$f z8rhZg=R%Kg4HNVfWtU(m@92EHj~P#xD&q5A<3sqt3bmSw6C&g2#?xB^4JRv&*v-gs zYtjYvtV&ho<&R}Xg@GvWc4f{HCmMn^eRHd>>@E}M! zGznmi4w8_tS^Xd}_F8pfM0m;C^e9A_mBoRfd=5rTcY;sGz3sKZW%?x%_@E9~@}s{{ zsFYzS$>dfhq*4W$O&WV9b88{F^UsaNW>83sS7{(40?Y-Qyp+s*;wWaU_a&LOO+O2U zE7pslt3upRw_8icHBA$H1ELr>Szg#Tsq^28LiqZm-h)5+$pp8Fgu+caFIKqoleZ#- z^ieVdMT6RB`&z<#57**0ZyAYj=nVEmZHoSjV`I>gu&?f|hkD7mCI2Bm9=xw`q}ejR zOWc&Yv4$lL4c*;3tk>Sjt2oD3&>x|QsWH*TTU5&js6FfvuKfA$q3`AYPzWrq85wWk z*kWqm)#RsQ=gqC5c9bk|GI`Z(x~*^s1SgwdXz`fY5MfN#4$y{je^S%|l0DKoQv5pT2!1?2EOoce)XX6KJl>>=_UleVz9$eF3d^IA));x6<@ifd|8MJJCY%RNgL6X(a zAxujBz;CboefW%tVZNqxFdn(aGK=;jmU6-g1-wyN zatRxJOJXHcY?5dBT7SNd#QXcFaw!VYbfTCrKKuQM*XIB!S0iFPo9k%pz{n(pbU(b~ z73vpUjb8ZJWt@Gn^B-$iItu3{+7)E^_r(3Uzbd9Fzerf|J#72=!b;Rw&w$TSQJdT3 zG+9tY6v;BA4lWfeK+12~Hqy(A@C068Rw2J;0V4~*dJJ(fa`=-P)HN%5G-^^|S_!>C zeg6W6p)XN{T}+v@!WA;Cb%%tm6lv?YvwV(!jN;QbUY&UFh3I~eW@NZ+*Dma=;zC%g z{o4}M2~>hB}j73J4B zpJ8f9+jf_gIX*9UW4H+&ocW${Cp!(%TUyd*=20g9M=dI>lsIioK8kQx$Jg{G7}KCu zdrnzzq*2Say2&2jmqghH^$T@4mdze>sf<)l$lUv+GIVJtW2KA`t7k7*zA}l{JN7uK zyi&mDj!VoVMWg+@$0s6r+BzgrYH@}0>gR|Nd2#LCv2tYxREdY%qgSE#6o zXDkAGFP-i~WV^hj+(>yayqS*~`Ps4|>{G!z0tX6%JPYCnG~zv;q8KXf!j;dM1D8rK z8#JfA{bljFY2vV6d?b^e?j%&BaW^M9sIM4L_BJ7N`pm(43uJKD;n<($i%;*VThWL+W9zB7vhiwdSn+e`SX4< zS@?-+?4xhy=lycM>SvOo-*V73@$*gR!q?)d0wN*}7U!um3olTjpD>zI_69xc*5;<0 z>EbEeA(Lk2m|)*32+CKGL7-PuELWUrs1RqaW@-FD%>Wbl`gdfqYGeR*S5FiRrwYdd zyM_s^?PGhEM8nR)>A>5}04Actp(k;yrV2`@w6xuO0?ZS2HlA8TGY4HsDC#;>CbG{( z#5BTMsTQR74O{YGj#s~wh1+Zt7QM<4w(8ky^7mQla6gY0xce&|h>B^h`pQot6z?PV zOH0c8?H;w1Q10Xz#0ee?7S_15q@0cN<<4D+^=Jz@lr@ITxL|6e^q*tHVr*KoEpLOya0(b%NMEgDs)@<68g4fPiI3(2FIZb zCYh%DuP>c&VEn`IK^zs86Th>b)*ZDwr-$Wtr#apPfe9zhM#1jQRNnVA`TD;(eWv5! z3b^6jf@_BoaQmTxu*;nDwU>wyCu2n)HD5`ANatF4p`;qu-}a&@r8gXlBFSz~46n|l zc(cgbXRS55O<-EXqi&Yz>|%OjIV|{u={nRw-Mj=&hSis|qGxD(?Xci@PA3&iJ3+#O7!x1}hP&dA zhcc3BdYx_M#frN06_%O@+#Styh9Z^vjMZ&__nr#Q`kaxJx`DaRZfO01#xkc}1({q{ zS`Ep{)buI+R{VaO?F-g=QD)cM-iw}@-=0?AtSyRLXicYo*(Z~E?2mAa6(PDuV|0Hs zOrpXo&f&j2%rUYiPKuB}5-=3-nJO&2FrhI) zim27%W?SPs*=z|dd+JiIbg>HQ_3Wnq@#NF{iQgpI5Hi{qJK7(c*sL;Wc@VyZOzUFR z*;fn1B5GPGwrYBx5rz5xkj~-e9|_af%LN=Cykz=+`1`6oRB(=Immk~ElW8`WP>WS_ zt|mVCnR;3_WS(6hNq@O%H@p)!T!Dozl@BWR!)>G zZu@KHO;c~7QqJ)#c|&)l27#XBtZe~Pf*(?RErgn8b;eCESqX9a81hIm8W2#^vR(ya zg~o_F1#1~zo)ueinB^`d^%o?aNZ#7o5xI2)7)8+fI^Bj11!`#~@!Vef4#Yh9wK~5Q z_7QsVo854>W1de(rQ^X@$4hnkh8c8hYc1s3#^EvF=~)Btm5^=CsQM zEKizY;KQ`1@;}-qUfi)P(M57g*T_YN2?_AN40R}A<~uD~Huy09#%7Q|T6EtY=h+vx zyct=t;Jl$9eJ299bz(KBc|9nUHF)g^wku^JOYK#WNbhTk^W6}%*4|o)(Nt64K73ER znU@gP?L14Q_cB>9m7{UQ7$~g53C$=1x1wEp`1(p%_pjA)cNt zvcq^@&%aez;cFx*z7Z3T&n--N&Daf2pT_Jzban8=#^w)EU6q#|WM}g*38AgwC?JH= z{b|b2?R^%(M4ijtOG`~l8xh>vxc^Si3|EV7j4>&h1ya`ZU44=?jMq|Kcc|~Bnr;C23}r#!IKVMS^f%{L|IBN z(0|Q-I3S385c0dJK$W=jYMNzT6etUb>soihWctvAk@4_vhFkfzd_fLg8;R$EZX2vFd zbE=Z-s--`YBuxL~4Ymr7#Mydn2;RxdS`z#3j-TMPy=7sNp>eI52-b)O>+*PLiPuXOuz*CiK)&0D7EHt7~Y%@;xSh_iS(;Q?r+fcV9Zn)>qe3o z)L3Jff>ac-((%2y9R|N*v_$=NP)Xzh0<1M^8^x+dbeHJ+8y)w zcX2E})6vo27rXu1bs_o+MaA^2$q_pMjz)v76e}TQKSt0eFFM&|Da)CZtTViYv9&K} znRo9~pA%$?5``{{hCMBFzs}8RwXP`{Xe>Eug24@a#j-Qy+S!h_Z$dEX9wSEdGQ7sw zfoK+S{QY|!Oe!7ThvTED;ibUkp->Z4cLq=UWpT!mwNa-E#pY+%oGWD+Wo8^Z(7Z7AyvA+`)1Y?O3Dt&Xk9sQP+hUC1t1XbX>SrnJ$ zbXBuO(aN$_wq%x3Bg;$&Dt)w9u5q=v(qYH>?-!t`y!Tm}go`cR->%X0z5d0%tfgyY zq-o^Bb$XKJ>6s&b+jGz{Uv1PlW%aJ}ZfOlw0hj7@dUBRnlx4@gKee*s*7GgVpTGBE zs4;h^H8vB`t~^eMok~wD(`OoA7G7rj$Jc6#YW3hg?fy4(PCMwHcxLDc4KLIQ*hzC;{ly-|MS0}gC8lnqEoARCLSsH1Qn5xle@SaF4U_9;4#W)CNAg1nP(&TE zbN zQhqx#FC&Hxm+W>!a3XZqiZC?A=t%=Ko?bN0nvb}!B3n!p!X1x(E{M8Y&;&c6nliN{ zpDTA3N4F}2Pg?wGRL!@f&_=fEBrR;RpF*96cG~(IDJ7U*PBz}TIYv(0)06rmX(a^t z2-wQo$pmit2?-6lx{%G?_M5S1mI%GFknWz5%-fi`=7muGuZ_inbol8TA<{`iC{ z^rjP#n49(9V5#`H?1be!_{N5NshI9Z7`}@3E^p2q%O&~6{;)GeWW4O5U`_cd<=&6L z%zmotl1k#eIDej{2_}!ip87Jsa*{WE>LU>P8MhQ{bfeS`NPR@T$k&J9t&KRq; zV}$AI1I)dJhgpj#4fPbpwGPG%{ANptBi2l#`LFQ@#JmM2Ow(B|mu3$uFPVHwr}O;A z&h&5*25fv^6T}=`<1`I@p~dZ5>3*x64vX9s*iXN?lJ4jyJUUX8h-*zO({pA)`J9}~ z6Z9F)W2V0yX$VtStYs3HFreZp6)bTJ_@Ws&_SyebBjWH7pu5}42XJJF-m7|=gdViPvHJu(Wk>pgUiP>zQOZ-{sFdClgClZ@3g=%E;BiLO;fXd6_EH}kp zivM@dyEG=90Hk1ac_T*kxR5(Gte~9VHCKH$rtlun3`jJs@daM(&oUt*jPHxcwuJ|K zWyAB2r1^r5h9*IM`tQ!OxDgG#=BGZnyGY4Ge@z$~_EYj7-VlwX=zpYvB!tj6s4U+3 z!&aqiz=y5!@Fk@VqYcw;LMYvt`#-yM1W9CdHy#ee4RY)BVeUjN7qp%zyz>yjC3!=Z zef)fU{r%+tqlE1~+)J5$xiI>A?5OqP?}KS3{eRI324kFqE$|fEi2q)jy%E|PN$x^!e~4l1-V`hK&Ds9{y zT@Z3oif<^>$`t9oK^iZiY1OA~{$xTY%#&yQZBG1P3^RP*($?%_Bl>^NH})-WTD3!{ zB{8}`z0l@j>C`CRVzLqy^qyx%eRpw?L*FJwet(Xw;9NfEEYf4tjYY_DI{i8|vGu*i zC%iGVO)GBc$!dkyVTE(bJ2mRKf18KG@j|4S;9K(|$1N?fV)xUWBPFObOiX6d)4c;; zOE?w2P2X^Tjp?`Uw0Im>+TnQ#F3E@yt_@N>x%n}mlTz*Pc=0FfWqwu4>kq4NnptAb zY?Bz1AiNL5_=!SMWK|mS40;Jfa#k4TgaqHm37O6nRXmuDI!b)E&$$l$1;0!L#*oia zUfr~rQ^i`C3~+QQQ{HWfBxdWMTo?7Nd!(kqQKaY7_wFP<`+EFhG9Tb*)m&ey*}b}{ z9F$l*>+210^xirC;KX)aSkuhS&o0_x*G}?oSAfEXa?15SxR_qjsq0?v{q4})+!5Ih zH5#PLc0T>uGq8Wlntz5{ZUc$KoPFn*bC}8WQz{yJx9U#i7spS^*bPdiu59kZ(T*F0 zQ7{^qInvm;g}fl{e`2!E1U)iH9RG=hT8H8VyNhb0Z9QiUQHpYy^^v{g4`SpJeXjU7 z)I+Lg6=gsPGxhnE{VViek>NhD{g)ibMxRgCR#qeonaM3CjmYXZhEnCozFRM(7xm&4ITI6084))^-nQ<8 zQ@zAI%XJINKq@IkZkAdOCF^1m*hxKvXEiB!&Jw(57ZI$DPgN5L3po}D7X!ihYfNkj^2s@_ zH^eB3^ylC=ribGK*I|p!fPbgs;eUzNP=;H`r>9SrsvnM){7^lY8f{YpY64^jo1X+2 zdC{MLhV2rLV6dlJZR(uu&K^8??57anBGxb~QwxUSwiY;KhBs!Jc?JKvf0x*gKlzOP z@7k{pk5YU@7=$$hHMUVvF7C#Qg!G26Ta%;`>J|L$-CzIZWON_4m@x_~hIG3Zixj%T z?-$=RMz_|vkk5BeNe&%HzVtW8i9wU_;I-RLp|kl-0twD|{f)Wz6Q!EyF&~7vQ4Cqd zu|V2!#kqGcrE@s|2 zK?=*bx74DvU?s9i_goZmo5|48c>Q;Ll(_f97|mg&ZUgVH?US>eWz)MGKcjy16|(70 zMC-|?67kOvFp+*&cH1*k7S%hB$K%SNAyz{xHk2B7|H=;?^k>C9ALKaSqe{t18m-#- zROqAk^gQU-TaPSvnfZ*aP}QDAc7%1uA~GWKaub>a!u&dSRR*>1`#28X4Z3G=UI$hG z@*^jsO50Uyq!bi!SW08B4cZQ47e5|a{qOEI`+AZgOJ{;R`(fDGJ8ViptZA%+lI~vw zo1#9K<}#{>BFFtq57v{%u`ykJf1bS`_$DW3jpKPZ`AqCwx+{;Rey>U^;Px#u+cky0 zo)mAOj^>{%xrf;$3S$i`_mjWV-UKPpS?V(CkxL;=DoZ*b3b z&&Gh>!ruwCzI+?uBebUWVy?cPO3-a(PiOf6g%hTjm`y>1_tpaIlh0zE+?(pT6WW)i zG6!Ata$b`$e8#bv_mT@nl;YP{nOmXS3OHHyCiP=+I3;n_PZlnB%#bD{d@55<{-TWtc}ofW_uYCkW~tFjX6ar`uh`dpciCp1 z&Z#K7S@8Z7%|yrjRnr2FC)J;1H6ORxA14tRgVv&NS5}gL1h6%&yT9BfSr*&g>fs5S zu!QgsB9Kd9_OY^!e|;~?38QX3b4FM=kXE3=Q0-bz>_e9em8GRV1;~w*ULp>jyJ_^k zZqTqJ;$1}QcjK(&93mVnL@kmT`fju|qR?k6gdb3AF2ik~5|f$4{dwBX^=#pT(r8L# z@dKTjt86Hyg2ZwYF70#8V~7Va;CcPo)TX%CUS%=kKTAP#YLpwTY2}G7e(^8HVV04N z8J~$bBps2_!e|0fiwv~J{E1PhH4u79Si3sywqBs-csKn#$kI6POMJMer=rG!AjZB= zS>1lnpi1|Eq&0~of*SW<|LLZ%%h77W%>55@jx-l|mfy1eOqxDF7i_3<?$2K-V-c{cmt%CUk5uvLK8+8m?k2Ts)L3l zInAD1{`&TdL#5VeXrawfVEPxWG;`&pPB7k=h#s@fcPEIg1z|}EuG}X^N3Ew!6C=0x zCD~idUjjMJUH7I|v0g<K_^s`N*H{(S!M4|Te=rvkNpdxXh& z+RC^$%^V7^Ra1ozh$F~-sPV;h+d-oU`pHeoL)_>Pe7YI9DWxts*;CjhX~}1Tm9VDY z6mM!lI!7Yx5vXA^Sw2zwv@UjEg2uJ|lQLQ@EEc<<-T7^wz|eLhbw4gWN+6z^obByU zN6!W8hgTEMTErjD$t`{iJNXA#!k*e`T9{2ri2A49OtuF<6USK_A#n7$C7sVmxZYjmbf0E$6 z8FG@$N-5m<{eEwk73IN5%v?Jvz}+L>gkH2jXF`ug(n#;P)sRE-7v{~ggXJ6}X)D$0 zOR9hDw@#QSPXFfQkQOc~)nCORD>x+2k+nm%k-k_-~$u;-o05DIw1k`z3#DwZGw+mD2tOzg43I=@Jo3A_d+E$6P0RU5UJ1C^G2%o!N=830Gi2 z*gzSB;3i*k%TYQpt|T{FPJhsR(?<5~{19}PC&RrZdz)8q1HI6aTko5wRJCS=tB(Xy zJ3|N0^t!TzLdhQlAx-gzx(+$7X}kI_t4y)c_bUunO>%wkh{?XQ*j5$@5t z_--Sb{B%uhhU$yu67r~Zxm1FfuFl6$w0=KQgxe4z=vh3q#_vhtpS<^`N6cT68))w3 zqbw!cFI|89H}gh#f1dO$n^X7)Oj8cp?YX)vT;Ewg|7SS2lI%2r{#m!a(aYh>N^k_o z+7k*a7P=Vy;R<3S<5E za)N%(^4=umbSbG5B0)*5*hTYSMvrdJxqC4XL%G!S$rD$|#0K!@X)DahH;y6sq0J=f zZ-K4`N~Pz2PdT{S#7uSwo&1BW7xjNwm?f2AUQVz7751?2SaA@W-d}J>JjVa)>iw$Y zzA3`Il+xIb#nt)Yvy4Pq2x8y-0PXtVz8CwLFN4kQpQZ}y3G;ved6tCr1*?~lTMJWc z!=yAQfkNN44C_q}7AO-EI?Cxl$F~j zNtx70C>r5zh@#QBU&nJRSr6$oul>8IrWTYfbuT;~(4eU#3WXP>nLL}a#pR>BW>>{n zJ682mOCF~=`mB)fMxlW$i(=XOv^76C!P86_r|bQ356fyO>cQ!}t=+RS#NH4j6C>F& z`hFvIN@60$;W~oT?%aeUs_vZ1B`@a(c!!bkn_Yal#Ub^+)(cfG)T`5k!5o&*XAM59 z*A@R}Ug$`OnW-(q7O_d$0~%fCHxSpQOoM6p^bWbCvCK*Su9ig%ULLqj6xOnL$8_Cw zSRF30(jCP596TwjQI?H*XUzXp0)va|Z@Z2P+;nWW@?H6dnn)VGX_AU%gIc%v<&Xlp zB2mjk-R}6qaYnK2&tvqZp9Rv4efciCo7l2_YxfZ^HRr_c(?$Xf(!8K+bM17UHSe7X z#@vR7n{R|qOjE>uJyW>(JWC<;1d)>fZlEpdZR#LRaxeCrR`#qpN>b|uhOrc(Bt9Lx za=C5Cy?l=(rzPRGTQc&Oi^Sse{FQ`+IBQ1kra{X|uMIa>l2&TGcm_@W2;z2*MD3v3+tj`+Wkr&pM3T0}r!Nw+;a zE+@+TZq0)cuc=JRrgWyfxFuh;@G*Gfu zKj>@?6KE~_@A8peW(Id18pU#=1gOK7SgAJ#0t&G#=#hT z92koT@jIR-yG3DWYL9J9wc+T7$VmITv56+e7lsUludK6n>9%c#u?rK1Z(W^yCL23E z#VnnqDmphh4_mS>@~)|Qwn3M==dZGa-2nm+h@HS8;7^}E z0id4md|szVbzCtg<{Q}O0JJwuEJtCu?7hF zn1VB3;IQ-{4J1R8z^BOaoI@wE#4b^=0mTbNEmaO=$Qgzw*~y<61>54p;K#%=g#v|T z984l!>#?>3-4NJwN2Hds{u3$~wlFy=DAMXHEpd6Rf~N%qB52&ZTg}=+#W2c85jgZ7$cP*(q2t^f(&7W!%hPQ6rJ#8rSjYp)sYaBiOLsy=$7`JzC|I= zXd9>0kPo@5%xf*sa%`OC(x-)op#ApfXVah@qPb^8QdB1_UVMV&h=tFOGVdi;^VIMM zHS|q4dRz-L*Sf-QA!VJ&qw`l0s=mXKc@zS5-Y@lhNs4!2Z`_i@Q=vCf5DICnu5+@| z(8ifE7FPjRu#Rl*HNLUdE)7!Hvnu5k2i-yS*ry6nRvjuqGQ5QC*nD9y6BAWxZ9Kfd z!FBk#u>MnlvdL#{FA+W)?xxx278s06WNsNEt;1D2H`vrG88yMonFH}xm+?7 z(f41GrhK3uZo4eRPHk1AAt{wsZP^?(42dGbV5@=Xk^v3G6}SlMxsFF$l4v+bGHEOr z)B|{d5(&0}m)v`??cCIui448#(?baIRt0LW4GEahTo_&R^j#6unK@1JR*s<-1W{BK zK9RqHtsqaWeKbFB4UP2xt$%x*x`Omc7 zq;Uush}3~_Mye6rRhs}TQbgx&|3802@TgUuXt6DF)z}FP&`HYjacc6tF!v0w?MVu{ zCREd`wuGY;LIvGkV=PIpbH&AxcURO3*fx^5`ino9L!@|8Y25ODSPO#PXhGlN3^?de zv0xhGST+S$)0I)`l7;b$BDRD!n#-IsZ>qVMWu+BO%UI=$pcIHy4I#>okeC*2RAq53 zhV1XF_bTPnI>Slax#zdtq#6WI-~*({A7HNo(cBpuWNmZWJo)BkZK=ot!| zcVqNoL21F6x`@(9oG7^vRh%F-7AG?Gd3MGV6RK`RMT8%Dn5kiD&nl2gz6YU6W0)&1Mvx?A*4(Kte{x zXUqL@18LCQDjYFQ{4#F~=&%OTcCIFx{!pKP>tGy(ODk3?xoX%UOSG|64vz=#XxL&s zG4E9G_&%E1UU{#zwZpo?<9~NtTJFv^0HKwfoCX_&eJngvPuVJ~(becwtinEP9o9-U z5-@A&hIVjnETN;-3it`-w7|Ff)=$;!l~P$3a-9<94XJ9&!n0k~oh;|*vDa&n6R{E~ z(HTFrUs|CfQm3h-MBOv1%HUsrXEk`boMv!K5S$}ANI6R$Yrue6_GI@F&%Y1_CK6 z(RmVvSUVhdV{gcxyOJ9CF*)oU?~eXqW_q9P@C-#Fepce{#&|lj<$Gm?`sTK6$%KQr z)I&*7x)aUYXWrE#iSpH^*adY1vAmsy26R$WSs!y=#4W#c=hSAJ*XkcC&gQknnB%*9 z@^W+$fK($Un{pqR%*lZG1RFd0fw(Dq%HjY1n>K@XdJ;UYa^y8a$sQjMQ*R^GWWZxJ zAY*w(w+NWdC_H`_8~y7SpN3-{tpzn=obe9hC5qAQAg{5bS!&-?gbM|deOv?Thq?T_ zCgV@L7YT29c^q9Ykzm)j%PYQ;lwSz(OhRYGE_Yx%*aB)d#@bC?lsl%O*ziteq|lkW zHpwSitmQrcTzBoHd`vWcIVQ(NwLgn@TFz5zbg^Od ze77Fj8GR!|#b;2;>aVt0xjlH|jrr-9phndQABubQ@XY#YYG2^p?Cl*H*{qD1`1Iy- zCTXfML=#Qy=vUyk|DzL%7Umf@kdJ9I>KYWNcl5yB??RWJywY44xIcDuQQ|swZ=Wsk zx>5FH{VA9^sl|7E85=v`G#DUE-R4aV;UUp*aRJRQ7kG$@ib_a4g@E)9fOr6!nGy%p z9PjDV6>_lXOV7YCZ_i&m<(-J!%$~%ZI7~rFX=rFTPKt?(dpMaV1LXGv`1tfnWmQ!% z5fM8-3c`N8ea^wEL!JX5HH|>QQ&;zM_4v=;)&srh1OPkM0&$&`loa4uYvzT z%<+w%KVL(fWG{hk$pL7&Y-~#NnW4DPe_Aw(V*rlDu?bO9MMVXG;oOA{y}kR#i6mtZ zbNxqX`S}}LTYZ2=`cW4Hkm*0=lz)ljCB6LM$Mle|eE=WofwxU>T64 zBG1g7`*$HYp#O&9Pzoo-$HU=p7z8wL<0B*bt!_5pvVcqy2cPZ*4Lj08k)PiJD3SjbER?^XG;X!gIn>B zglk}j0ML+t84l#Cj{qpB#`(WTF!Y4P!+UU5q7wo#4td1IOC7$cNl8Fw$PAQt;EzB@ zfCmCz>pi$aR2&L492_c6lWuS=z?Z}u2<6%iT1VgV78Mm$0R+;&>r-&?A2(7hp>7un zD2hU;uDSUNP{KF>Z+AUe2U-E-1qpzkCwFSE1us80HwS>zYa1Jnh_pD_`iM^ zd%sIcO2E7W311nX%eQd&Ht7U1nU_ggfEq({!)WTUfkhHY4tE=lk>{DC_Sbrok zzPtfqVZbxTg#fi-zSbO-1}U$|iX;;oEf35PfT^JZIw3APx)jq>0ltl z!Feg*b$}EIsP7h*mLNP0Tiui@Qvj0>ct?b6=u4o}fS)`P;z9IPKI>f{P0bN>k-o!$ zShayyrJo4&s5=IoPi<|jrKKg#wH%Y|lt0S1=rDT-XO-&_e)Z2NE#wp5@eK(S)*8r4_+z z0%bBt>zEiAUfCS%>^Qi%0;E{ue>M+VuxvQ)1Kj*eZkSE&PMY*_+tzJwb*}h(|Zv@{$q}&!mJt3%u>?GzY z3G~2vr?E1h86bCDDRk7-@bK{BK7TgQ)g5yAJZ=TB9(!}}jOD$OXZn_w>tNbJ>c|oI zyEs^U!D86tNI7u|LTb6ePDfG_8febX4_<8sE*RnA;Q$N*6prsGbkx=JW_M@qrA`Se zzkZ#zst06OClJwqz7zE0?bqM-6oZECUO(1dkx@`+LxE0GC}wnGA~rHIGA2fwJTX5% zzq`A8WyM5JJtOliSy#-)oN*g`I^V#^=pHD{5V}Fk8H05RphG2W&%x0zB02R~0^1X{ zJS)tJQ-6Pdw7ic?yaUZrc*>>KvUSe|=2`$egB>~&b>h#=>$C*Wm`9Q>jGB$j0r2ku z&R@QuR*JVFxwM|qVac@=@O}yblLpj|81Q}+s<4Gzlc}*=O8sq^zmBH>(QIf~7$AOT zb6o(e7EIE_WCes$VqzjCj)F{(y@ky%DX(vzy0Q%*c!1bnXt3LK6J}6CfTCPvs??RM z@hkIEe~*E+E%&F4PC9vRPS+hPlq-e4G(TTDWxcywQrQNSJb<4DBM*v^g&wFxV3OYn zXN@~J?(5Sl)#+DK#SYpw2xols{19)~2$N&(+`~@WCh_)Yw&LK@eHioTLEU(Qf3V zt2+l2?2e9W0T@xWJtkMX#t-wL3|1Mo0Sa1w=Ft`^}z`U z3Ye8aa&vU7(igYX10xUC8IV+hEQlBg0AV1!9;=7=doQ4s*3!}fe~w}h+_+F8><1Xr z>RECkqA$$K@85%5zRAPG1ITFLkHp3T!f(BPWoX<6W5&P(ahW&}W9xc&Tmb)$larJC zf147B-M|uHB1@zRWJQ3r2CoDR2COVBN{Sdje1*R0(Y5LgMF)KWD8>3Mu3wlV0OCY# zJm7nl$SfF)xVSiwQXIkm1J5I1Ai@hh+F}4-jyX^Y04x98M~qiOu4Eu=^BQyyU^sMu zR|KFgSk-%99xQ@Fc?&R~z`uhOA0JG>JAm~CYvs`r0NlQXI6<`lh3NpSevp#K-?f($ z7lYU29`FF22N0eDxGAs-dL#}4MeQ|6txXOKR<)0KGgt6CkC2w);>+FH*v)GY%Z|V6 z7AC;+5wU1S_KY|Fg?%NRfb^$Gg{2AhtRbr>NW%gf8puicN0b0xmUmd2eV5FFrmVC8THHgB@Vd0ETZ>0n`VM9ezA%{V8uId}USF-9@7#Js)m$Tb$5%~tKZo~gMe;XXc435jn zs?3(H)Xz#vNhw=bBkTuc+P1|ic6NT1PCfxF6d6fLkQS&1T@vVl?+0o0KzKMBXgarl zGPu7M0E58G`?aP`n6Q*K`36xoCNTfq|gic02eZBq%5-CME_j1SysfDLCf!=;8s; zDk>Sg=#Ix?AIQj>*ymk83^?JKt2kW3B=7Ql%8&xf|Gm8RA#%FfF7vH&SKs$tFAJ>t zfS2(3bH&mmUOG9tT(pt0@(Az)000h#^WWwF7XMA3S>0ajYw6em!tOuNssi}rjL=Vj z?Pdx-$#=umM`FE-k?7rd9DlMuLJaNFa@;Q}EdR<#2Ph4RHcHA<$p}tDSnVOxr=mvd~)sW+H&P1@K-= zfYy|yN zHrf1{mEbGDUF`m@XQH78E@?~c-XQ5G(U*ekPcis-C;WWYxC_`Y@o;mSnVA7QB|U(E zcw`v^f&f+QCg>j908EoXsdc|`0bt9rz&33A{DzoKAEc*8n}#xyJ;3%Aqot)45NHCc z6krrU6b+4!W22-01}&3^hes;AVYbf>OIY6zFeQL{nIr5Tfd|^NIN)OgFuKo;+UJ1v z4yEu{(6OR~ND-mZd<}TG2WSDAyGNG<9e3MUDlssE51?{z4^RQ)0su%VMGg7Z-|qmf z=i&Y?pBW>V8VzCM6l8ON6~6_o>SF<81Z0hQfS1LdpDy`0@KT!mF|gE>xdymHy7 zea?4?$jE#Et_zg-o7-D39@}Stg#i6u7hu7G%YJ|MLjizo zxS_GnLQ^K3CQ+adveXj?XmIeNS_*5R^)9KZswyp2XCem`^s_3Hc|~)x7btvS`T&Bw zvb2=t`Eya1zoACeuauNbqx??C1%Ou*aJ%^oHYQ-{{V9I+G;|Ws1wb-XEe0K;hj13y z(W$+ne_#Q)mwN!L$QJh_gMgb7KPZEssi=I@^xd8xSo)cQsRpAh3^+buqZK6&;#8~n z{j%?&*twzv(YRhJ7zG8Mlpj|P>aP@4U%uR5?s@>M9{_Q{4xI#<;&Ok1gqYalzh2~m zAIoPKmY(~Hvr@%7}m#iA|cV$+&pJiySBd0X59H6z!ku)2ry85q*!IYBaNz= zLWkAj0~5SRS(UfD&ZQiwYBZGw#%hPv#Qsto_$9Fy0vLZ2Bni34{R&J zjNy`x@;p-I5oBF#Wp|1`K0csyfLi3^(>k@SqO1(!TNCt_ii$&EC+h;54N$kVmMZ}6 zTTt-PmCdNm0v$4F_u^t;=(no>Qd9(XE%jh4AH^kwH$5AX5B3Lxt2Q%b$*RRKR8*oO zB3?J-GDl!JvDR3YF2ixff?KbG?oE91@!2zDf`z7zMoaN;|_L$5yI=lfj&E9?wkefiW{z6$f zLo;-TA6-s;<9pTu=mo)zDY!J~(Sf^{hOTbOd>ioZ1iq4pk|3voEovfv$xb;M&HT^Y z$71-vyW`*aF@T&A%Wp=e@AdYd(8Qj literal 0 HcmV?d00001 diff --git a/docs/articles/metadatainput.jpg b/docs/articles/metadatainput.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18e0d9f483c8834e1ef308f51534323fe60024aa GIT binary patch literal 33421 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 Xy9LOFd7^64hqL{*U~n$Vo2mZ-B~h0g literal 0 HcmV?d00001 diff --git a/docs/articles/preprocessplot.png b/docs/articles/preprocessplot.png new file mode 100644 index 0000000000000000000000000000000000000000..f95c510f89a997060a4c8ac531d3bcb8d2c02e7e GIT binary patch literal 34135 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�CVu_RCrxsz0@VQ zP;%^EXM`%4xni2a7r9WRVw2TGnl3!Jw}hi%2T|~OQYI*sckW({?)xk)8gvELk0M)T zmc3pHL2BOFuvhY(iu%~QJSz)qgmqk!dcE?=DQ;PrUmao2l%*q?T6&vE%-Fmr-JHIV zySe4L;4!SDj6L-`5{4M4;;DW=46v1ZGrY|ucN_1Dl&^O7Yh}w074PQzZv^FE@_G%O z5kg$>zN#l4uG9}6<}im>hP!TjzqA7|>?XbN=zb~7U~3(mY&w?pIjJ+95e>QK=H`ck z;F@q+xEKR;Rz?FMT-IV%Glk0v&@5@`T2IgiW4I*QL}mf#6ch(vSXdnPN7I!?ckJtnxp*!hN+NB|CEOANSi5{EHB8qf_HgAF3oBgg)Ex zPeE{U>Lzu3oA8|GiA23cN%IFt;?Pm*Y-I^^y&x+t#)}yc zs8yyAcZA}H%a^+JvzaOOsh{=j(CTePSr%OCyEmZZ6O1ddT;fq27=^u1q&@!KA;I#F zK#ILzAo>pwF*>};(O=PD#=4EJLhV6u34Q9m5;Tem#yB^Pb=X*t*r0afVuelNzv1y? znwCOQ_3gMd^8y4=JpmEgi%}tnKQv;^&&Q!+9ZOceIknX$uaLb%WuL;rL)$vuK`+V1 zX&bw&M~FLyOq)BWt!{&EV9Mt#zI;sg4Y}1m!dq%W{l2*xCI>f~tdQjSi5f;IDRp*a zcv;xd(jwK-Gj54C_(-$0IxJ}}elTMww$IX$EV+&M5(h4Q(8UPlgScSzAA4#EE1B^? zBDL5K$uDIee;qCU6GeuZoDewWVrCt#ZT5v7Slbsg3lFJZfz39gvR8 zrGvF-+5tKb05fd%egs4(s?83~L+D_YNte%H5EwR>N}Y%s3Q-W$4dt7emkOdI%UNV- zqkGm4MbT)9Dd=BE2TC_-;3f-dTC$@AOa?{3XZi|kSBwW?fn`5)e1@PQz@Q)lI}mD$ zP8|Yd{4c1o%>D7f9Txbg+F(Vva4=GU={W;YGb9k2@>$4WGTJH!G7II3abO39Q(jy< zRru$t1L*?Gz20$<_SVLO+%&gz$Oh&eei)!}lX7NywVl(lrcP zaHnU9Nz$KNC|~en?x8+~{thUMn}!+|mc9EYyJ*M^+&h#PGnt?^*@`O`X2oZ7Y7+zu z2%-ciH*oy;<6s)H65jVVGf}jY>tMK0xB&-7>k3i0xVf;^xe3y?{cjtwa3dwyaHlt# zQv;SJXg1>60|lX=S#UgJE3zSsbGZ=hDHN%O$`turNrdMmNQ4^=G47 z{LDmVC~ep{mF{;)NkCPg5Qvy8C)5&}0g0h-YslP=%)YU00S;JnLlqzh63Lyylm{%6V(gS2d2Av-r=@?FrLX84dAH=k&cW zsMDsISI)w9f2_tqn@~wU}T)K0g`HVWYis z8VusB9kJ)$DFmKoKR9h#vkH&Yf$%^A#~v%`Q<0|Z1^8nRX&2WzqaztQt{MORWJk?^ zf9*m1f{jJE-&6i)&L21g6!Nkzju+F?H03M3`1j23%KrPJ1;u?6y%3&MxbINv zW={6#wB(biLs1wJPUCpwFzAc}zH;Sv%rK&X<}=c?dmx-9P#jwCxYe=^_3i+AlRw)y z!lz890Xz&tHza|W5~^Sd;ny0apCFuikiWt(IMu`;!Qs7-&}&}*Lm__!=Nys01JWr; z4TBfzBCPM>KsNuPC^26Jj@hCy&rGNTu$7gP=y&~h6*gZVZqKH3J80S03ty|>3p?Jp zIC8udgAaPyDg5?I`M%2E-_1X;?;P|`94rKy9f$k?;SmyYxnJatXSKlu0c^%^k$C8+ zAy$@_&$^RM0EUr=Ck)@n_3!nj$;Yo>zm}`0dU(JVI`0lCmX?+RHWyl2T0k1c7h~bZ ztFzYXT251K&rJm2vK1GYbiia-h*88|ErKC{qiJ+hHAUOop<#m*5wUw+k0<2HuKENRLjS|Iy|KMmO z8&FKRwq5iF{LD{GOuRW=sRnq=fZL^|#Ulv*!_jo%NWd$6yY6|3VgZC4dk-7Mt^EBe z>YcfS3KSb3&uiFka(Q|A=-~nIG5f+kEU*KDBe$bj58&`(Vt-nzqDc6ucxZV91l}t+ zbMcG&c{VpCY4^e(JN>Vv((k;>fRSqEjXafWT9lGbaLP3D+!!qTi zaOHWUSNB4$*a<-30q&19{^x|h3DoyTb5?+rAaNS_gfu13HJ61fzuzAzKwSVv8t&j_$D3?z!3dc7`T3c0#TM!5MJ;Q#)eBa5p?v@Yn<$ye>5y9yXx|M_qJ;{*bXGV8^fo`dVLEWW1Z=2WF4$Ci^zm$tP!hKzlW?VBMU zH{L7&vkRC2Ugd3gwu8$YC|RY54&h=;r1IV3GrJx7pcQPMhV$ zzH}gM$Hf_>{2d+!=y+Y`Y!d`0PJs0QXtu1JTxjT?^@sA6)A8ZqI%!j5V@gWOmq1yY zfoft|x9)-agDAs`U*?q8ToQal(zhP+)*r1W44z-@%HZXAS0<#(jsd=*QCz z=eQNE*M7X(71*3)s-|Wl%1YWw?LW#s<13*Y;BE;>-8!64e0bq34OK>SUsndM6;Kk0 z3(?wqJ>dds1M_ce<6s4;2~k=z>fxs;!(cS2nDAAx{++KD-`LVGyTq?4tOr^U`R3@@ zQKZPvdni()0y!vLeR<_{f1&Vv(hX6c$sBWa4jzW_ac=jhEL0tWkQz zYDKj`I6co=4%&6?jOqe0>1(y7flLTc-gN=?U}JHcj-(O(Gs;0b&`*Fda_9afi_dL* zd^|cPCI_Hj16ocyHDBGQAfTlOFyjIKPe9Sby-38w$Csg`sjj|Qrcw?#I)N}j0%H>s zzw7FDTFexkt+iF_b$tbB?7X~BK#u$m2wznNSf<1PXV%Wnj+ml$ov|d4y05OU@r?k_ zQ&LirPOI~!`xjtr05kL4+#JwRT6W{5flA;%cZK;B1*rL?ZUoJtClD6sQI(nv7%&EV z!$|>xxh}`^@svOck8xTDL<^&%qrjx@I1cpN-Yt88tqABq0Lz%!K@S296mZ0!(a}{E z71}lWJ%At*LVnaqhn*-cATv)NI#W?o15{3-Ah<{GPT-XPLmf97 zDlgpHbC3RKdRc`2@Z|#F+yiyNF(7<<18{;`O}50Oqyj)L0CI$$!yjybJsS}n4U7cC zNXd9CWH{)6ZsxVDG4laC;<2(R)68-J@2=zR{Q`(J@6R^`0DAzCmKNsbfJi;Qz5!lJ z00=4o@JB1Pnsi$n_x|%ST3G?`c^w4>1tp~`;IIJem;v}}EJPqikFUO68xuSLiS`XZ ztvfwjYyr(RJ74dxS^iB+PoKeIH4lJW`5bqL05xY~N(%5BJ^_IowEs+=mFl$sw%pv% zr2VL@9N>p@0rC&Pda4H`_y4At=|X8P+tmkPz8vW92eQSo2giBW`x{VDDa^17p{1{h z1NFBa(O5(c{sD{2b`4m+v5S? zvC3OH)opjb1o8tQzr8yLLZb(C5Q?*<`eI-j24pb-f|~$pdZXE42Pi&y-Oeg3mVr73 zm53V%ufEry^T{F$Bjf3Db=P{UiZ&^5?mnlc&NSEWuRj28swsn%0T>tn00#OG zaJ@<&ujB`@2LM1IZU8<203ZPn0WbkK&{PF_2VfBV5Cc$PqRBsKIy8g)5Bf(N-5<0n znx_8;efJLP z-$vm9h|#=#G~G%D066G7!k{*Hg!zR8`GEkSAW%q3P*@5GydxwiB?6QZk^~q*T<<8j z`8wEn0suw;2*4F^2cQ6O1NZ_Q0CoU06Ri_n{pjwm@(Y1q2>e3e7XrT!_=Uj#mI$C@ zkwiQIHoEVEK%fv-;_s2la{>SW`wuz;O=BeeE`x!I1xSKp02RWg~0!=2;c&+FtC2+O>of={IBF)7x(9mM}UuuM}UWmi%*14K=`AeDPkf*;vWasXeGa& ziiv}Tg+qvki}zFH|5kPV8bF2*Py{@|!e9Yll3`$xVO;kC7|^}P#KiiM)B3aE;^7cr zVBuq9qMPMz0?<9i#>6JZ#>M(6^CN`A#v#MSBWK1JBA{T=p`@awePCc{oSZr}EpMGx zcMB+NlvK#7VEYt({w=iP-_QF~I{*_4`-fo;GPGd~EG$gCzgjTJFtNy)g&tVzcwkep zJWc98yq*UTqff^q!y*IR13Yz4hnv%HDFJnDBX4gT;A{u6_DnhRfljzV4UT&SW|XH* z`veP))hIts=4=EKyfZf@{^9s!sLd&8_~Wp<#!$&r8V5d|H|jni%f>;yqKP@1JEHfy zzn&eZu!`KkZI91F?+S$Bu_rjVgDxl6fGCBQ^7m%eR5J>9JzrAM#imL}1~6uFBR48Z z$JDDhTrJ9CTt-j)n{%6oF47%TzYe2gVjAN zc0boZ+)(T|6@*`~pHtWnwCNZ;SzfxNk6f1M{Tg_~APe3r(Nr`xuM#7JPSkSzNyxZ(e#TTUVVHa`iFWY5K9Y=svC2 z&8Db3kO|wzc_QczQe`t;PxrdY@x#QxBZw@c5#y8s^?)miEWM6Ubc9Xp4R~2ZU*NKn>1%nk@gt)ag&L=h(>`- z3a{!_^Zc6NI)X_kM|^DWWz!qut!qI0NmluD?RSO=@;Bp#5})6>`E!${=~2OIC5yrD9jCT zY)+rITbp8Xoo_06EegQxo$`6^b!R1mHOI?(X(UBK`*vOClDOB`!%A%u4Gv#B zUm3py?fTbQgLZn(EKiNbT=)b8+gL6LEAT2GAfMb^i=-n^J0Zd$$KzX%s!AwRALT3k zT#4TqUxi3*dB~~LN@vgn_kG#2xkB|7;E8pmBE~Q&`f^UjBqAxyS-q$!a_8j!b9PG_ z^`O=vjx$vq%nh=orIlNQ@|XtjHt@2Cy@fdcQa?~1jHE8k3RAdnoPt-HuA#*0mHLM; z*M$5&6Nx{qt2V+dY~$3WY&)}ieieEmEL31P`)mjFMa7a5QdZH<2<2wbku6>%>9aT? z#_GW*Fc6UAW*Xjad=<{`=2bZRV)Icj_Tm!DB;mLy|JN^G+5V^No$~9QN~=1r7sZB# zqoRn9d|*9m_-VHuHF`VWH|EieRBKF4dQ>pSaGKB+!q;k;mJ4!-v}+w+RC}groyw&O zF_dn5!425Yy|YMWJS^?)o;{X;wrVG@sMuCS30NSy-Gd#WyQf>1Lv{y*7M36Uet%ZK-fQA@|=|PxUpTzgv zd?NpI8@2|JSoVb=LpNB2=BON-?%J}OCcah@uz<#n^<&(NGN1f{xAW) zdkx^W{TK(HSYJ+(GLJctiWeIVXWz^ako%lU^}OH(0e4q*KfI{v{MLoN&^-`#M}^yn zd7lS??t=`Q8pFYv!IP(^(DUWD^nAzSxPiINm<&<7b`Txn7i9gpjQPsqNc(^^ zR?d3^cP{8}2j+GjmrU)*$P4y!Wb$#(zi5(Gb2YReVXLglpkcm4^d2K*_zqM53g!31 zuf5w^idYgt-z7#G_P5n+^0fjhzsErH@3`>pyxoaxT;%aX(<^)_TxQ^@vm1s1&3=UX$I* zORuR5H_KaXRyt`MHk<8~*S>@ME?tZ<`@S)GE)A`YS=m#bK8|}CX*jC*!m%ktaRcxe zS5lv|gl5~qZOpNPVoeXSjCfpAR2E^rLw!v74nv-i?yI5b)%XnG5;IhZpGPW$hEv@y zvDm7s$5LA6m}2>W_i>rg`zQGVg_ZobbtyZ)jZ#q$$Jpsr!9$BYRUDji$J*Wmexu1? zv`;y?;Sd?r>#1e;;Zt8nax52rEl6|5+oyvqhT+xSn$EwJMdZl`E^Q_tQI|K#uK^;s zsv)qWklvI__s{pi5ocC3SCZN-WTZ0B&pJk!5HqLD+lhH+{qL zn{tc(cnRZ-f-A&rDY0!m8KI9$?(VVZ`rXr2w|-kjjZzC)2iz3F6ze+rcn$bV7wgEC z^AW93Kdyupc+{HuV_3UOV>CEBSD1zb(eKQ|r7ibj4_b|(^7~VSuD{h^9*^v@FY8h{ zJE>LKwhYYNGnPFfW(FKJY0r`dDUj0Ze|vP+C-@xej}{rI-pR9-n>{!GZ23bF|Nb8> zZ&uHD=2Bo@6s~;YU8%fD`1eDu=dM=?p^o0(?ot8*u3r4sU^g2(ep@%FfSA#jGvSr)E#Q)ZGFcN>f-7p)wwKaXRQ^K)`bd`L4_AGCeffQb`Q1Dn1cW3dB?Sb50ze=iT7u8Z z-__gNkI&VM^-m3oc3!rg5O;5go9mq)8m(>IVBWGUX!}1M1Ka+k)g9*P@>3_+R>021 z4r=G>?S%$G=!dVrcLM7Em+-$u>mP!en*Z0LQ0Py!?otY#cGli@is)UIe3e7XrT!_=Uj#ehB;>I@-CS<3(R|VE7{| z_y3{P9tIsI#s5g{Vc?*Xj(;WC00bD=IJo$Dm{{lpoc>J!00*7^#JWL@jfIDefrDPA zMd#*laLMrSe`Mh%DJZFFS#$}lf>CxuU*~EVuMQg>u#>GQ70?|1?3@r2^9`>IZM|2|@IWxA<100>Y z$wLYjptVO*_tS#aBUa%a`Kf=+|E<@v3U}j5IJ_J=#bA^i?3$K&6v!Xpl3;+$Vik{@ zGxJQ>Ofh>qA3vpkxx))PJ949;KGJ*U z?Uzs0Vb5i0!{9`+!97xFnan8NlG?gQiwCV^uYIladna+0cUL zw5uFt45l|t|DzF*Zp$dM~ za&y6rnV*bq$bOB4!<>Y}iM5;9;KsX5_qV7s9H}x5bxPyNBzAIC9B_9?FUlnvHdK@xq&9%xn`#VT`#W*lgipZOPyW7<(G*dZ5@VTFg-YS1b&Uo>i^Ao_q=)WA_GF)71)?-F ztIRPf^Fn!BqdEngur0eRvEPbInvS>q`r}KnuaYO^moDq#UL_P$-7*{8E^@WV?CoXU zoCn}G35P`g{d$+)00=g0HWxmlmNgx|7^U&s)P~-;Ac}bO+<$O1g7J-;j}b*cjQ-3^ zE8;a9&XbH@i4IqP^|2?!brai{q@7qzIgJDV;_ZJspain=@hn->T3Jx&6+>iDx9CgJV&M8F?{wUShQHw!6F4V!CfB1K ze*o+5OTX=KyC{1;h<%(Ra&r8(<@^UXkF=drua~mYOLGly#Nf<@DM~tr{LJj&n0`rP zjOkq9D!zE&;6mL0FsO%bZSVZi>y*)t)WJQ|pKAG9!&H{lT4`xRqFx^>4a!=k9=?0~ zXsSI-PZ{O4S%RyY=rw1}qZ4#R_w^bePkRcxtwO3ClVZD73)bm#Z!TRL@uJPy+_^_A zVEc*^D3vMn?pvB(bfQ~6>{aKs!JeQh326T(q zh9AsQm4uDU#^eplj~^~TOscDAGHLm6pXn6G4nFd!o4*F=`LwmK8yBL*Ql}q>s+b zy+z~mcIV#xT>6ayMnC(jbG3tg>x#hnB4 zhu}D5makvN24UQ`-|P+lnf>{yS8Fu|^JNyuT;E#5XTy}I7YP+v8WZ&A1Ac`32OZ`) z71`+)I=V)H-)huQ{Mpgbswi-G)l4VU)mK(qx^?wwu@M=?t&^y$54me{`59OC3^4(7 zg7I6gzQ7Sh`o>Z^^3z6~X6eq<3oh;RlTbEq5EMarvo_^mChE9O_>i$P76h@xIlTu_G&93cg4ok)Gi7mr*bFXzy(J3E$U}d z`M*|6E88;2CvIAtC^_T7m%#5@b7&8{sU;(jmEW&&q2l(MT|5FhSwOM!{TWMrMOxZS z>t{xKytJ9u00D^_+gn??SOoyyEyZc7UAxl1+c zsfZ7(x?;Yfx$fsz&>w?NMn?7}B`cXy*bO&_pD zrB*i&5sIDZ+ZTbZ0YdQxArDV*Ex1IueD^%w-wpR5Bbe_+*$It-bm~<__mk}*pe+0r zjj3ed2jeTf087=fTy~mZ-^BCv&@`M z+h}T+RjY#1$GM-jq8>%lI9%mdmuYIK^WjZU9a)2^>KVxSLrR)5O(9Q9v`_x-U}V3E zUqdE)CSB~Iy~#bvgv8<4x8**hsKPnjbteYQF?GuaSB~??oK0(llF@qaQ*WVWleHTv&+qAmSkAt zGc`FnwaIPQx5$YHkMg%z`E@oHH1^uZ_LMSR=1%5dCgej%Y2Cn(@&V}dHGqtd-CW<^ zTy9+F$f$Dd(y+gaaI9j@zCxISj7+6rmtvN4<9ITwd|D{V^TO9xb;@docRNR)ly*ZV zY5mhR;2>lV<3d!pB4=B`=i7Y%dad|>xnPEa;X|1rdasA)eKePXCJgu|nzxW(*7JqP z?nbvOO{<|-o5V^vsTx-1M*8mG00V#|NB-aU{#x^3=m~S_Z3;0BrG5y+H`t!xRPaFbbv z(uvn4Lj;2BAS`#g+F*VRcR zgPd#_SsI7?*yT8u?lE4rz}HM({8dL2rUa61~Sb&A-5_HNFFl_V{_sO3O_1 zWt$DhC4F0v@JmT0X+}R&-cfBai)U6O)Ev=WoIF87^B4~L-gz8v-*Q#;S5G7vo!<{5A8=fvZ*ZJDG>P>nXmU z`h}>pheK{1=68IAY%>`jrXzOwN2T2ES>`lkI%(#831lSEZGf7bB8P_;5fVx>8D%2L z*8r;e@rzkk*E`2>(|Y-SGt6tijV{+{D%Wq-ZJI5P-W8R1i%hhJtJH1$X^XA_(_=^k z?ks7=nX>8|i6&cDQyp$-&1r1=Sk6f%?p%aInD0=66r1rB<%Pl31N;>oM1O4s^$s;< z%JI!B=MH=0GtrOVx=r5V)ZO|>*$$J~p()OQaYMT0v)P3uo6m;$nT+hJ>x(%E&iUIBPg%E;ff6)s!~LH|aHVrIX)9&R6GKYaoWxSrHU9i1%&sYXvFg z@U;|&u%sk6QmsZY8^rrByJjjD*>1h9koG2z*8!`U&MM_%>wLN(Bza~agN}3rTy18N z3tYICv^A64#qiS3JPF36zM)ZK$m3!FIV|^0sQ{OgHZky8>t;R3d0t&yyvSY@eH=s@ z*;LoOrJ3}wQ0rN7b+(9EPnnsGkhws49B>U*Yj)5caeJRUaG;4U&hHJT9AyP}j%`=S zHd7};a$xD`!+C?4*z|5;x~;C=Zf7}-#WesTZBqE~ofE=iUW9%l%`#E@47=vHLO$f( zk*#%HUnJ8r)LPa1hp1X}gJxImxV(;VHnC6d7K@tS>4-1H?&j#ZR0uQl)~ZNj!(A^iy?~@g^dC%MGRWM`!HV6SuGVaw{Q!D@dd? zPKQiXMZ1qz%)gnJ&^2l0;#sE67fuW$GF;WNb`hwFk|uU_j;Un=>Hf|l z)(z&QQd3j$#*r#>eWC#V9I6KB2*ODZX?$ZaRHJzp`o@zICgCh@t~=D=G7Dm7^m4*8hTcHVQ(YsB=k!4(9}b? zfyeoiw)K(*$JeK|2~_cW*;1V|z3=Peb+st=gt>W=2=+Jovde)Yt%Zh1G{lTNTJN*^ z+aDPpxj?;hrJBl}VLmfr26?4scdNSA-Bc6Ttc-M6p!6GXwOFKbY&zDh-UT2Da51&) z)CVpKY98*-cbkS()JR;$zT`VyNs@eroTT3shOo!=C6SSN@NqYofd-Q`;)AMf8+S_jlwVYiAPa00{AE55#H~6I< z`j2LPV??;Dq&DBxMd=k8I?;s1a3pYGd9ZTp)tkjORqN7;!K-^&wG2XKCyxp)#Xcc| z%!m8~7K~bVboWe0n|DUv4ikS(=!-6Eul#f}lqm*U^r*T!wF8G2smKvXTbqfUENQh> zG2Bk26XwZ@9;FYz$Tj%ROsGd>{ZUmfJB+rgw8>gg&4jjiOywDCb5rwg(|ppM2vK!B z`>!b|5jvs;UiV4_Rk$w{^ z>@MbIa1AJ(mGvn?2y!(yP^Y@K$yH@*mfCecWppw@&yJavSKGO|i6HsWsLo9C6h-BG z(rz{jjGvrj*A?FRrrLp;xMAVDwF|hJE|S_XlEKJN@|vu$8yMHK9$D~dl``S^&+3; zOg%oc=KfcCt&ZYh%tMWHUR<)a%tesR`dzI?EeVjWKD_(DS1|}LKd$}TjEVqMs_x6V zH{}2iFq@xNZMXV!=1ejD^o60qv_)%nnB%@~Y!0;^mlYXyF{peXK^EoA451h_QMty1jY`yatZ}I5mRqw0| zgWHsI&%#qXlxzn^bkJRmHabw%?DPcZ7CFUYX41CIR**^}w56$}Ir~;|VFV*~2Eso} z54_4X#|>O^^LjoCq4Vm+2;T}m_Ej@>`2b#ltdK9v@ zSpWcIm2J)af3@>pjt+wm6O0<3-=5Wo5ZSAXA)BoijY>$O<6LdIg8Rm_^<6oR$l>!3 zg9sFjS;zf0Jmox=Khv(?b2uR+IezsemGo8gG2*1wPab#&i|!OGdn!79*XTp?vn# zeePxjsl;5#_9Q{6L_YrxGd5UhEGI$wE!{V%#ThjhR8f?I7DW|B^afP@L2*j(Cm!D^ zsq*9G?o8TrKf5`@k2S~{3q9bQ7geS&?VW4dhWWe5mO?*vh}PUdKtgj28uT+VJPRdi zP}r%|pMw@37AGY!1^J~VIkHOSf)}O2%x9$d5Na(P4`R5LY_MC#-j!q{Aov>gv;NDD zgT4p7H03@oDeP}u_=-7)^t%#;vmUZCgPl=AX)TQ2Bj31q;Y8mZ@Tgs`0f@Bm9G3}% zomq3W>8JA+oK_FMkz59YHi-Nt%;@2iVOZ6|GUy;_m7^;2)`9yMdk&|QUEfK)$XEr# zu2V;(wB=E$siBizAeB$#lI2sWx6fE~IeSdgLjC#nVfslD&*b678wsPL7q0QnIG#;n ziv>HfW55C}csTb>mbYxJS4Na-x@NG(B7Z`lHYSjHwuz^G07=xf*|E1|Q$i)RIz6v# zJu9>lw~)jtsKo{3s<*O*L2o;V=O`#U>J@JtWgbxn>N#y<-pEJkdZSZ%Tv6rv2x?02 znx%GlKCLv^oHo^QVEpE-BZP+`GV@B#*ztr18NNPW@ zQj-@6@wl7N#=-2BUCoZ$d=2=nXoY;7vP3^K|8n44w)#{@nt{DASAYQvAFevw*l{p6 z#|-qKH6_nqAHK<8fH+%ZFs!c$RM!&iS}wAHQS%X|pqk`SPI+0yJ_uFlX~36RklvV@ zZjPD%vQFOq&VJmAe$B4r@aB2x3}ML)JLH#3r{C7NFG9byMi=Yrnm*v8NG#4Sj)>E8 zrA<4MN?wv7Ttr98dKzDH{LWc8_21MSh?7EQQVM`IfnGd<(dF6Wj-JFJJ1fmo(|foqu>l}%bzxm}B;xzBe?3n6NX;cuPg zTbzcw?#_ppr7J%#;jpt2<=X6vhp-5*_;ZP{V%rTr4tnHEQc!8Q zSy0}{O)}zP?7ov=DN2|PGd%IQxO%2Dy&?V%+mjj+J)OPtpxIe1&WV4+xgA#JBPtE@ z-rB8OYKX1Qrc;t?xUoLNMcLS$^j%UFGH)uLERrV*j{=8fB8&x&kEzBaXBb$=Lx^|A zD;kzJjI*>Wy!M)FRizv}UMdAc6sUa4b*X4)xWJ)m=4^EO)t}k+ldb{cHzety)AgIz zfRb@!p)W8CZro*4)Sp5)U3q^4kcJ2FAE#oMZeEB zc0i;(pE+`Zigc6Rq}|y)A09KaN9>eo$bHN)+i2kQ)nv~rciQ63{pM$?3u%FVFpZMW z#_ebb=1AAH?s!@H{DI zE-p@45A+H}PoOppQqC8MQuF79EOHyMG2dOyqcJk?o<)9TI^IqP@M=l`08~FG7MvyW z1pb%$_NfH49y5;;GGcN@O-X81HkIOh$-!kDpJ2@JgUU|9HP;!3h>F%!=Sods{?NCi z&r0`ZHeqaUQ*Urh59=9Jj5;LI9;265_z?9n`P`j-GL@F6Hk~3*-f>qtPn59>NX3@{ zB})WgqWjgFcSqVmb}}Jbrq=*?wA?=j;u^%E`iR?ZW|?SD!xL5S?$0 zr=fAIvG*d29pK=sa?5S6R2*Op+N3W@UjGQVCnhENBp7#z?!Qc`|Jr=pzs)~53(jJ2Wi{Hyn8)s$E@0P2^i4VfS?OwQx(Xaf4)G zj$l)_`z)u}POr@jg9%a-(vjEIB)^+#R3Vc)Udyf&o@g~ZPi`@M(@G@Lxs~4>KvEY` z%EAf{Ps#Iy%N%b!fy1u>Ai^gp<9n~vMSH$ao^tjz-hh8`%9=O-NHvUY`rN_XaZIxn zswxjx*E)_&v6vM1y z&bD{M%Ik8BcN|30@7IFXGWd_&H>faft#FM#0kHoGHt8(Jm`3wrXlnBFSBGP_->fht zj?7(_$@U}I{G9W%JUBl&CK&bUOMtH4+_Bb=2%-tb$=sWv0;DWo6s}Y`-+@0o6 znw*`Uy?3b+oj3mBV;fb!^gu`mf3y>BY;(^#RK7 z?b?+~&bU}vM432?TfJzvWx8V-i35F69eSSvnoa_~fxkr9&eT@E+vO~Vf(wDe`YO-5 z_cIw~z8wgblW5nW-p%ZuBu_CU7brJeXTZ5!O{sGQ^D|S`afHdi|dy7J>d=5b`SK7X>VZ1;%LAgCRzz|R-t$zgA z*?!27>Rp3f#KXyKavZr&65is@@%O<~pJpAlq%5r%CH!w2j4JwX-gXZe2CEIIV+XHJ zQK$Ftd7BuF_*AP*``IsH4t#=n7#ZkBn-nNEZ)7H0^dvUIqv*@>G}1g-YE;L$M_;18 z&b262XT9XWO_>wRF@JA_p<;ye+ zr$o0jI`YKwsiqktPnysJ-#xvd0__u9bnKJ@>e0@YxTUV`HoVv7{1$pX4`VF+M*Xf* z_jb9Yk*=1>ga?m)vWlJ#I|#VEG_*01ooF!DRbdw*9h8?gz}`{16p>?FC4fEW0Q7B7 zr`TRxy$0w+Pc$yGq5}X+)s=Y_pOvnBvEA~8yYs%)LNW7a$Y@xddefJ}2*XT{Fo#Du zkQ1q7@tfM2tvlo)Idz@(7Q^^9&iQz`DZMjl47H7{Gj!9`Hm=c{vLhB6g_<&Nm6g}S zcamLcxA8$dPt!DBn{1*xRv6h-RZOl~$j&u(urXwN zYmJ{7x~>=DpSl<)5bq=_td!?5{GxtXHwQKwkYs0mZv^;8>~QMkiH3K6-!*_p@iIx6 z{u&_IQT~ZRJL2&yZ(5U!LSe?t8Rvuni2rYBu4Yrh$gXA}z^{o54ir~OOVUYtyq2L!=#Z$!~gd@Aq zZZs^~uwQZ8jyuXoPA(%U^s|n0*6pZR4*fQB`A3NW)qoqeVks`G8v=LJ)hdfyb14W z?3#rL)t3ylZ(W@zL>;Nbxk_l4f2-YM7g4uFMYahRZEZ79l}mwsgG>j+b(ds|zpdG2 zk*yCChs{%cS`_5i2d|_>P%DE#M>=F~wi$z7j~n-B#ElA#$4&+NMMoH)^aG_X&T7<5 z8jH(wbq(Q*Yw=tMx4z))ooI!gSblCk^=yHpmw1L&SSW8r==<|l6Fy*8zpEGuWn`*I>|^P}dBj*rYQ+UtrP`~^G|tR@8I7t89z z(>f??)3@}}Gc3LxS;T{?MNvMXFc8lgyUUU}$Lu6U90mS}GD;)%9Hi7~G5kX2_{##S z^0665MOS*gkxlttx5XsmPR@elgW}-_@()UiJKBv!Y4iNQ_i5QbZdj|P5LUGF_i%v} zQsWG6R{BF_8DJHZ^8x%Z!RnEh``rby^&qo5`+DW-8Oa9eMy+nAF<$kAL#^BE{@CJ8xEc^ zHy53C?M-asZ!O%NokQ6B&9bw~#1-f!HnJ#pF9Gvv?hDbfVkvHS2@3b4g z`o2;J{x5Q|?VNNd!85(gP*~IEaPF(g4MSQwMXWLg)Cp zYrvbF_GvRQ@5u!iUHsTm14EgkNuw!desgUGustP{LX%5GB!!}4=)j$236!T2CiEhe zzq&XXM)-b)yXySQ2rR2AZDS5ts8=i&vL(!DyYSKknNGo?OiIfNlu0cKbe%7m@kO!i zCTp^e6*@7KQ8f^ z)90|Cb<|kk2nU_{`qFBIN%z&)aCUTBiCFKNh0LOi_Rb#nPpclWS@0p8se~L>7A0u&!Nv<^HGT!w@q0({SW8XG&~4GQw}|Q8EEPtE zZj-XQ8)X&=-kM_iDLnpKqNHro&L-B}YlT4J2}aiLA!U2}pt3&0%*-0=kgJ~Ger96- zIgJx+3P?i9B`HygkI`6YYtl^-U^9jwp->j`7ssEIHUh|=&?-u_NAX?y`3Vz7`pA^LWt>Dqu zr_itsv7)^f*8pR+eWK0>p$9kd3;3S+bo1jBG?79hE_zjtp*Q+9j~)_Kg&@ zSi_*S`kRT@N8}>FJi`Qyy67=-w^$>l@q3~~^Eb2m2y2085T>$V^Y}&TB8}fOoaH-Y zN=KM~F@x?m_Z&0moW9SmV)sQiqHSR7{DaALgt34pc@41s-5;YDf7l@XX`_h=?PT{) zbx@TB>+dg8KmB1t;UCPO>gdrnLaNvU|FH4!>WAUqnM{B8hrsgBPTu>Q`FkgS+Uog# z#Q_pMeIMW1CCUV9O9Z4}K7Mp2+XE~It!|-KN`AoAbT`Tv{jD&Q_Uw5d`Zkd4Sk;%O zsRutZ0}1n#W+?hyT5NqL^L&Ku#F-MF%CpJ;?f4a02Mw41K=SVgH<|v!9sf@@){h`} z0v+VuN=j?!vfM_e{9+kF(`w|q~ z$gZqtujmIH7v$q};v3=K&kbDi{`$hwCkuJ^MWH(CGOj?)9a-|I-bptyO5%ee7Wkjt z`;Ron*foGK{fd1E{Z=?4B&N3*PyCA8>M))2JF4Wn03c4}AHxWJg}?f^2*QfX_aOD_ zldu0#=id!~jU;`sO}WQsa@&`YxQ`zsskl#MHa*6)Z?t9l^muB`>QXmD0nR~ZsidBrD6A&f}ms+3UZ-YLIr%6X*!)GqFi%*g)nIwLR{KDn$n}Id^JC!iY z9KQhz9SJ!}sV#(d+?Z$+tW}^(iM-f<4PcjAJ0A zogk3{SGw7zyVJ?t;Fw5KMs4&^^XItJUY63iu9kY7{`lM~lJv>nPr`qqF#Z~Ch*d{S zRs_8ELt3A>+{ab63zc!m?-UlN&a;{g=D_KP8P7ODrOIc&0bNjm)uMb7%PSCPUI|5& zJiI~kCxWkq#l><_B z`wgHoN3Z&D01kIAAR*>rPzRm6K2-=2o}l+iPNnlih(2+H=Wh86Z~>HHcvw;}9DO#dn4{Pnj^DR!%zqaFG3R5)1MBcvsaZZeSLy=!b*sA2FOTi&L3c zG_Lxv!!q~b+OnSjzY)Uq?ZF_KbO8)4h3@}(wK4xOUdGMHlx)-K*QRuw4PV_4`cL=6 zKlsFd4w*K}rsL;<`Ci}pu&lipK>piMrM{z48zom+p@Kc;!T|pQ;T%Y2VzntrKcRZ` zfGzV>oG8vUU{#kiAt)iE4|cfyy_MdU?sIignI6jH#ISWSOOx5V-S%T%p}w&?h`gxf zvzehpv64=OVBA_&Z)cNJKGb>LQ1dhOP&4Waoo1W6Cb-53%ujr)N@9dhu9THsOC88D zI8?Yat{!zvVn8qHDC=u{m%8wa&+};6?NWYyX9Gf*qi|SP?0VRtwhLSEA*K zM5$SsyX&a(UD4r>jwa@CMu8J(Z)ZQ8XR<>t8wt+NVio&!`&YbmEq)ShUMpXIBo= z$kxd$?p#z#H8N?kZ_N4(vrw)AX}-PGT8w%O$uyvzuMd;4+7W#X&vJ)-gtY zQeD7eqK{7lHz($K%g&*-R#_!N5LuqoUdNVLIIihrxRWP7A(K0}ackirlo_{@qXW-^ zKh1tD5($BuR#tNdrwtA@BkhJ$;0ZXx<~XUnwNf)a!a(++ikY2H6FGfD)gyV%oGaFB zX$&SI2uHRu@6WxMj{QPp4Cmar`pW)&)-wUufZ~fA*=FW@^bQJq^E?-UxY=S+CM7TG zvs_hWw{Mov#kLS7!WBWh`Is^!+IG^>wfE;-OB6bw(#@g;`WiC7$4CzS4$E>!bC*Bn_8Z4B%ZVJA ziu$U~Fb7y5U>*K?_|Ya)+&tjiZfg#(IZ)}8&}@b_I!VeNsi^XD<#^wxv}UJoMEQM} zD2=}N{PN5~1xc^6eY#i~ltQ~E=ko57`j`q^mSIZf@x}<7eNexL(OjVYo?JDG@6%Ee zw6cm@zfTm@y5q(9x~TEWXUU(Pk(p~swAzUceIs?FlY9;hViT{b_GsJoZuzngFRi*S zkyVuV_E)+}%+o{fnyKkzR*fmb*USY)h(auyYNk54#W$-f#c||XjD)314EZ$s?(vR( z{>~C*u`-wQA@T*sA|%@OopQ3if%fh>Y-z6WQf?<0SXUmP)6i-54MuW5OhekIRvoTZ z{Kg{(r$Inj0vL$ z2v>>e@c63EWHt8$50E7Rn{C2JX+`ImYGcHr&uqPUq7zj~2@H~i8c$B9%u{e5o!~HE zTI0QWbvJ9L>U0KZK=`zx>8rbgezKg4@d-P-z>s>Bhd^aIKlxNDdB+ZO00+yauuP$C zzbW^mp#_vDGJGSj2G{^bk^THJzP(_t{zNZ-z&nHmhEKaqezP;tAwsFuIG1fwz8d-3a@z~gm zT#J33qVniEKkcyYyWhbL6y8c^Q9(joV8 zJhrgOu))Wxc-d9|#GpbriCf4#xcxSJ^Bmk%!CpBw>oPSjBqMSp>V`tA*zRTj=NtqTaoHxKU(py zma$PPl>WhQMQZYcQ_U0KlykV0UXQ*|kb)_0%QYYCXJ9V2&*WR``E6VbP zNc0FaLn^`yT1v;`v?9~8`3rk*PL+u4MvHRsm$!Hp9>jCaE5EDzv;=F1=8B6?D@GW3 zP;P+-VCl5V_!n7;DBXII%uH%sb6ltW`OjufS+!oMlBi&VJ@I`=u&%x-m69e~wi<|} z!1y~9NyZtN;@@Oity_cKFmx8h+Z;(d&P(N1FKuD;P_{4OQWF*y9`cIT(e%>L)LjwM z81*uH0+@XGkEt0=V*Fz|S4QROevacd8n(FHe0)dlUj_f|5$>Ne`tPeNKfZWk)VXhO zY|9<_zR})s>$a_;OL#POfVg-nUzlo0$JT(UVYKW)!rPMQEMmKY zyP(7LTi=*tcX?yz6i{coPRi=`(K)@$2Z{W~^9n{YzE?1{og33z<^C?s-)4Alm(rs7x+Xsek zU9XCbs;qz3k0kK^Zu$4#S=K%I!1%Y{(%M-CoAnE4`ZY-_3%eIe0R!|uYpf@Mf3+n3 zZCEA5t#$|P%uNfeJx=R<-!0eMaa!jCOlxPhu*=10?K{5+MmP zD^)C%Ay8kjn&O!i8e1XEXMk@w476LF?C0J?VTw!-TY8kJovXhJs_k<{Y%>2z`;!Xxs_85>o{J+f)w5CCY9> zY@%-a-A+>6oTgYxKS)eXuDq#)00=tNNjv(G5E0}g?20Pr~1z|vewybvuNANquzSLYi9|}d+Mb+QRB={AGW>4p?T77d-V=2 zj}sw`sY}d~a838fBSmdlVvH zzsj@g&Qx8!NioNY|H%cVxus4`NS}LY>y?}H)gJCvIla<1CRJ%k$BK-{(p;t{x!c?_ zbu`YL*~wFDz4Y{asp_xY%bbA+z%BOBT3k3g;TlbaQ<~`N)^KZBN*zi}UeEH>f zzrM~?+NxEO;V$^2->-U=)lHjQXFW_G0Oxk*Osn`P?fB#jub2voTdk*uWzcjb1)%c>2@h9ZI*HXPo%v^$UU3H{bqz{IvRh zQN2Z3bzQ~JxbJu7pJU3}HEQ5!7?PiC_)>p_ubT3z?hMDmv(u)f`R&Sl)h&4M>Ges? z1=lh?KOPk7?iZB(3s0imUQ^3?u>?dG$knF~l>BDkCdE#5KT^hFh;DUouO*bEQS)N~iVnK29a0 z^GmYcSxlc3-1)?G=Jc-yplh@U0p|0DkM}n)@cjI%Ci(f74+FDZy=Pm^zsU>?=jUHa moNvG60E6-KFEi55zcd&GitJRI|F{~sR4N@<0rVLE|C<0&!BHXr literal 0 HcmV?d00001 diff --git a/docs/articles/regiontomatch.jpg b/docs/articles/regiontomatch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6cdb4ba19258fcde42201881aaca1d20312d77a7 GIT binary patch literal 18963 zcmeHNXH-+$y4@j2FN(-HDkU_f7)t1o&=m;Mds8U^0wh2PT@X-2REm@!B1j8WKuV~h zq6pGdq_;ztCZR}C5P3np_ntS#9dEq%>;1U-GS=F2ul?=0*Pc5+zVVHDFmx~p97SH# zy$FCn005%=fP*QKp$ma%7XZ-J6$2Om0AK}}0UCgff{G~v05Kk>0bz&mH#VeTj^Ft3 z+Ns}Ihk{T44U7E7G?aB1hz8)K9P23KJOwjTj$M>-oaPt*ArCs5_UE&9Dci_+1Om7y zYeSU5y+jYNP}ay4Tz3orT+Q74Fpdxz327+_7yy%kNyDXN;4m0OS_&=;gUd<*mS`+Q z(<{Igg#!Rf01aRP2%rgg0Rez3fC4Cs6i&)?_`1}fDnM0$ssL31ssdC6{v#Ej)FKJ= z04?R+rC=~=aKf)jV7AR}P2<4BSto0l<`eStS5S{2Kyeco4@LkM@Xw@UfGUuU(@;153Qo$28QR`rCBO{7t9INPH&-+}e&x@lqR;m zwtu9#Wkp4wZ$ug@uV;IN7mhec~u9%Se>(#f^r1c%Jse`n(8ntaxOr zmf?2otV_`x@6*to*Gz$>x}GrG)$hq7P(a*bnDu_x*SYBfAVp>>jhTRdx);s~%i#>v z1vme|H#P2Ohuw+Po#aSrTP|6Dna;APtBM)YhGGR7XWEX}%a_6TJB=Tv-?`w=62s&- zAUd#zfAH?2=PNR!3C|RAlVI|gKHkZ*NdbSXIrN^Ako&nvJIWTG&UUSe#t+4qn9T}%o-FNF|7FB}24$P&Fs+zgds{&aYeh&Li-h{!mx!CHa znMwWXk%16vrxR`U5@R9yVYbNubFwoMMK4OH*Dx*0)>g=mM98(Mp#J--3iKA9LwMk`p5&7&#c>Uxz#dIV&( zN~LY~97rPky7vL#NMFP!?3-M38G~Z0&P&Lg=2V=#zHrtf6Bx53;4 zEMNs433YvoETYx{|w6x8zSC_AC2JJzBSe z@!=B@S%W{Z6jhsY~iHkWRFu+vsKpU5!3n%^O)Yb>heS4gxI5f)mz z9;PDKv%SCYU@*-3OxIrogO`dUpK3%yw6JSC-yG+PwXTc+z?C0Y)TJGr^O``@TuQ+#kv6)0| zwp)ou*L>b2R!oVqdn`8aQU1ygAIM?RU#|w(&1n>viJ6>=W)d66X%=Ggh$?18UJlhn z{LYxckj#&d8!``4eFC2spvQa`*XPe8i-O&Kj!hW)8gP6Z$m9ggyjQI$UG_eIZrFvn zyte8zn26{Mu0M@UUS5B;=xX5S7ijK!g{{n^GkHURDFlVM<9X!V*#)GT5@fO8l5IuO zZ&=W80DEy{uF~t0HK_wS?}bwQGRIW$Kv2=>y;so!F5K8yT_b{A7bU$K}?VPXDb~JBRIrEndQ{fe{DN$dF;)(dpii ztTK&wI8!3M@D;w$5dT)C7ppJqE#zXYN^UV}9sp4vGwv^b`N6NAS5p1B*CN+|3Wlx z#LLR#MNuS?`!n;^zHO~}ni1#10t?(6Aou8a8U<4%iwNJ{PSSno@c*=cZNLP-&Z^g{ zT9P`$Pc&J)D^z^kL1gL@$Mxoy6`KVI0K?2uU2x$RTcc!py0G17{j-8W$q;}+%u1O37qflX@uJQt-fY95#lRbQ{_upP}e!0WXHZm%1VdCbnY)9k=+uTfxg?zVA7cRQPOl#8f6n<*B0{P*}?|Y zLp1$jWTA|WhJf)&QK$wIq4GvPGC6tYh^TU)(d?IY#YfBz zR<_G^tm%^8o6T15UHdYAiIj6EXtK=87-pB`4uIQ}g`mAm+4}YM`HVm6`mQzJVU37r zoS))#*-~3#HXdCcsa_fTi#)Tc1;hCDtH)Wh?Pez;&v)8S@)8oGPg zQg|lN{&aTzyx9h8et%VPSHiNeU$CaS!_o1nGK3UY#pYTV31Wu)fDG-u8e|6lv3#eC=_Dlb)W{bVZ_LRfSHfXo63c*i|g{4600~iSm|o`fO#T@RM-EYLfx%$~eXOW-$>XqnZ2bZ)dLy zlI4`;9}hMvuI$j6$gigQe~JIXTI-Re;HD7PV)HmpX1pE6uJDR5!3`w6-k(9WB$gYEApGf8L?`&*elz1=_d0qbhnP#9oto@ zFR_p(d>1bGjPmz+S2T04`OQDi>fOXRJ(;l8#t;%0Ji8NgA*|g;Va@(qT+vt5`}+#f za!^Gs-AS!2)6_E~UF7$e(|0@5?@V-ccMeLuLuB0a+&(B!#X<-QVDb!&-JTW}oj^$Huz)9cytq*v_ezM1mT@49Zb2AmBe7Kx@E zhRS^KYbb*!wja7MWA`rC`qf!CiV)@m%DK{=O|zvxFPQ!zLFj}^eKh8Q!mHk5L|3&L zEJe9JZi_12a`B?i*DJFdlwLU*Nw4^Q%S19T!1FxcF2Rc>*7#+LT>-~tABxYi=|Kzv7r=6T7s8~l<9A+&bv2y4Xi>HR{5$bDwB(E*COPa!NHpa+R`5NWa zvR>-eL2Aa<41Gq1n2y*^W~(D{A3Np*tMTK)PU+{ma zmz|^$!^y!dfq{b2lZ*jT_50B-rls@TPlSrj^$YEtv4s({Nu0#CkUJq`+@Y>ESDLN{ zG++CR@JS;&V1z(&9B$O_;Rub26WLS{?(d6|ulHrqS&-q(A6Vi{)kS_>j!@g-kzsyB zD`v&H4DX-PD@*Nvmzvgy^Y6aSySZD^vs8)M8$ejx@Vjj4(Z@COruIx%tZ*88Hovds zNIq9*jEM~cRufUi&d19-VyHj55mhA)Ul=*z(;1Kd!z|To77O(Gyw{H(WmXTpNc;OIlDc&-H3_&?#!KUEq4Il-KL_SCa-j*C1&3 zn*Y(3R6d6b1zgi+NI++OqpflG203iCd?qB%zPdy9v$koPDo@#Pt$?ZVg)n`6KLv!4 z)Xm&#T_2$|JUlL1GNP0^d1BhUS!b$kVFlIDsn zzOHLzvr%XG@m9$%W4vs=6H3)+tX#TE+9W;6n~32woQfZL*wOJ&A&kRzeVO1d+%VGSKdq|81@ z(k`e3`=bb(csghZy68+k?un->?VwXj5o0wNM7C}{CI48 zxCDQ$3=h_bgej$uK5F`-?UZ($9LACzIh;P#Qg?rJ72U^Eg<2wY`Y7RS2K;gn^~XJn z@gQNp>nl5%cIAO-%33I(mTbvi@sj%}|FZ_}QF(u@w#Tt9*NSwjaXd6lVoBQNE9Cq) z+xr(2YruU&+j|Cemu*Ymq6hMzn=qr)JA}juH1xhnm+Jy4Kb%2^T++jUd{%_!&ZN=Z zF#N1?0JJU1C8~*ic@GX}*z;Wr+&=&|`VkEnn+;)?b7)va>8Cv_uv_8Umoo9?PsM=^i)!j zg>T<{4e}cqcf1x^-JZmjoEF=FHty?SiDt+D5Y`$?hRRBXTS5A#;c8Fs(||Zejj#Sxa=OD%nRs`TMJZ3rM_)Y!Oq$hOPm_!$w>7?kQ&EcS z_H*)GdBQ`h!D!nHq=IC{6iUM=DeA7th^w)U#pF}{il>i!Vg_R?V*R(?1enLJjuy*( zl_`yPGV}Y!mJ{r(ZO!akK?|ozq=ztDjmUCMPl>)vE|LA5OJsvlR@R(-AU5A}h|> zU3nzQjgIw7m3YY7h&RYLk#L=2=qT29n5&LaxnuEk;<{^~A?`LZIzvV_$&<$S#k`gm zrX7t&yLCOG6;gvl2G07t=U&=@yBq+PY;v#8qq7}YKTn^|FR>ztetubCM@Y1})|Xq` zVZ2c?6%5G>Np~NI7{e5e?qg{y;D;=`!ptf1%7tF~A zltx))rkc)tZHD&vqt#RORYO6>^8JxT%k;e~iD&vgv)yzOSx!v6jZ{(9hf0O2VHF~d*Mnnt0_GN;FhjNmi{Dqeb6K#A zx>t-GkIHds#D&TTcBM%q^tmsV$QbF7rFeqK*P#x2Agz=Q&}LiWpye|@@41k>aMlWLiV&rG#F4?ARkvEGn2>zmcQ>y#JsmV@XRV-FQX4)<5>)#Le|Y!fX3Va~+2#49`3Y?u5T81r=lb<&yA*fia+kNTn$;>es+ zdT0i1ZW{hf!d>PE0A>Ko*nD2k{jzghNs4lGz5PovwCe=hsV}YK*v_!HyAdAxtc=*? zc>m~75c$LbfXdrNiGT-GEqmLOLxPqb+eG=3my7M)r=EJQCqE$+%9ow9|Epi4Ztg>` z)Qnm>uc)5a?e!1BDn;%ZMw#Tk#JouN8@9sgDk0jcIJMaW04_`pJx$Ln{Olh41;_-? zvvqRf01=9`>8mtMd9q;^Hv40K{@Xx9yYiPOZrnO%KB*i8N<=ar3?ED}VchU|Z@8o+ z)>p#8*~<|n;pByp40Q08l$MZ^1e8?+y&ar9PQ4G0L32#}HR!nsOH zD=8^SO2H&yFeoJh>KlZ`I|M?pzJmW?&_ek-;n3cAv=dc9KMSqA(~d-j^bR^x;KQG7|c&vZ@4B7<$yLnQkdRf9Ii&U0*N5w3een)hCzP%hLcq@t?F@HuaFKI#ru1DM z9b}xL($dZjPzPrjX{fV|jI)BAv?9z!+VM~aXD7JR;bXjTzhyN=`TRznXqA8YK$RsA z6{0LbexYA!lK<`YpDBM6^&h#EFLen2`QcR{)SxOrRe-7hRRO93R0aO?6!=%^h{96p z#Q;iSc<67Snk0VuAgCq@s!4)slAxL-s3r-jNrGyUpqeD8CJCxZf@+eWnk1+u393ng cYLcLuB&a3{s!4)slAxL-s3wX3cay|_0V3ifZvX%Q literal 0 HcmV?d00001 diff --git a/docs/articles/samplefile.jpg b/docs/articles/samplefile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..426441d909e29328f5ea592ba16b04bef3595faa GIT binary patch literal 13011 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 MZ@?dXcw_WG0LP{imjD0& literal 0 HcmV?d00001 diff --git a/docs/articles/selectionmetadata.jpg b/docs/articles/selectionmetadata.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4eacaa6914080b026be46f34fed2b7c9acaaaad8 GIT binary patch literal 25916 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 VV{v=7z*!U%?;9Pb-hV#(zW@fuZO#Ay literal 0 HcmV?d00001 diff --git a/docs/articles/smoothing.jpg b/docs/articles/smoothing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61e2563e76fadee11e555b28aa53090cc3534ccf GIT binary patch literal 22089 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 + + + + + + + +Standard Operating Procedure • OpenSpecy + + + + + + + + + + Skip to contents + + +

    + + + + +
    +
    + + + +

    Open Specy Raman and (FT)IR spectral analysis tool for plastic +particles and other environmental samples. Supported features include +reading spectral data files (.asp, .csv, .jdx, .spc, .spa, .0), +smoothing spectral intensities with smooth_intens(), +correcting background with subtr_bg(), and identifying +spectra using an onboard reference library. Analyzed spectra can be +shared with the Open Specy community. A Shiny app is available via +run_app() or online at https://openanalysis.org/openspecy/.

    +

    This document outlines a common workflow for using Open Specy and +highlights some topics that users are often requesting a tutorial on. If +the document is followed sequentially from beginning to end, the user +will have a better understanding of every procedure involved in using +Open Specy as a tool for interpreting spectra. It takes approximately 45 +minutes to read through and follow along with this standard operating +procedure the first time. Afterward, knowledgeable users should be able +to thoroughly analyze individual spectra at an average speed of 1 +min-1.

    +
    +

    Getting started +

    + +
    +
    +

    Viewing and Sharing Spectra +

    +

    To get started with the Open Specy user interface, access https://openanalysis.org/openspecy/ +or start the Shiny GUI directly from R typing

    + +

    Then click the Upload File tab at the top of the +page.

    +

    +

    Accessibility is extremely important to us and we are making strives +to improve the accessibility of Open Specy for all spectroscopists. +Please reach out if you have ideas for improvement.

    +

    We added a Google translate plugin to all pages in the app so that +you can easily translate the app. We know that not all languages will be +fully supported but we will continue to try and improve the +translations.

    +

    +
    +

    Download a test dataset +

    +

    +

    If you don’t have your own data to use right away, that is ok. You +can download test data to try out the tool by clicking on the test data +button. A .csv file of HDPE Raman spectrum will download on your +computer. This file can also be used as a template for formatting .csv +data into an Open Specy accepted format. The following line of code does +the same:

    +
    +data("raman_hdpe")
    +
    +
    +

    Choose whether to share your uploaded data or not +

    +

    +

    Before uploading, indicate if you would like to share the uploaded +data or not using the slider. If selected, any data uploaded to the tool +will automatically be shared under CC-BY 4.0 +license and will be available for researchers and other ventures to +use to improve spectral analysis, build machine learning tools, etc. +Some users may choose not to share if they need to keep their data +private. If switched off, none of the uploaded data will be stored or +shared in Open Specy.

    +
    +
    +

    Upload/Read Data +

    +

    Open Specy allows for upload of .csv, .asp, .jdx, .0, .spc, and .spa +files. .csv files should always load correctly but the other file types +are still in beta development, though most of the time these files work +perfectly. It is best practice to cross check files in the proprietary +software they came from and Open Specy before use in Open Specy. Due to +the complexity of these file types, we haven’t been able to make them +fully compatible yet. If your file is not working, please contact the +administrator and share the file so that we can get it to work.

    +

    For the most consistent results, files should be converted to .csv +format before uploading to Open Specy. The specific steps to converting +your instrument’s native files to .csv can be found in its software +manual or you can check out Spectragryph, which +supports many spectral file conversions (see Mini Tutorial section: File +conversion in Spectragryph to Open Specy accepted format).

    +

    If uploading a .csv file, label the column with the wavenumbers +wavenumber and name the column with the intensities +intensity.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Sample data raman_hdpe +
    wavenumberintensity
    301.04026
    304.63250
    308.22148
    311.81045
    315.39846
    318.98342
    +

    Wavenumber units must be cm-1. Any other columns are not +used by the software. Always keep a copy of the original file before +alteration to preserve metadata and raw data for your records.

    +

    To upload data, click Browse and choose one of your +files to upload, or drag and drop your file into the gray box. At this +time you can only upload one file at a time.

    +

    Upon upload and throughout the analysis, intensity values are min-max +normalized (Equation 1).

    +\[\frac{x - \mathrm{min}(x)}{\mathrm{min}(x) +- \mathrm{max}(x)}\] +

    +Equation 1: Max-Min Normalization +

    +

    The following R functions from the Open Specy package will also read +in spectral data accordingly:

    +
    +read_text(".csv")
    +read_asp(".asp")
    +read_opus(".0")
    +
    +
    +

    Viewing Spectra Plot +

    +

    After spectral data are uploaded, it will appear in the main window. +This plot is selectable, zoomable, and provides information on hover. +You can also save a .png file of the plot view using the camera icon at +the top right when you hover over the plot. This plot will change the +view based on updates from the Intensity Adjustment +selection.

    +
    +
    +

    Intensity Adjustment +

    +

    +

    Open Specy assumes that intensity units are in absorbance units but +Open Specy can adjust reflectance or transmittance spectra to absorbance +units using this selection in the upload file tab. The transmittance +adjustment uses the \(\log_{10} 1/T\) +calculation which does not correct for system or particle +characteristics. The reflectance adjustment use the Kubelka-Munk +equation \(\frac{(1-R)^2}{2R}\). If +none is selected, Open Specy assumes that the uploaded data is an +absorbance spectrum and does not apply an adjustment.

    +

    This is the respective R code:

    +
    +library(magrittr)
    +
    +raman_adj <- raman_hdpe %>%
    +  adj_intens()
    +
    +head(raman_adj)
    +#>    wavenumber  intensity
    +#> 1:    301.040 0.00000000
    +#> 2:    304.632 0.03037975
    +#> 3:    308.221 0.02784810
    +#> 4:    311.810 0.02405063
    +#> 5:    315.398 0.02531646
    +#> 6:    318.983 0.02025316
    +
    +
    +

    Share metadata on known spectra +

    +

    +

    To share metadata about your spectrum, click the metadata input +button. When sharing data, please provide as much metadata as you can. +Metadata helps make shared data as useful as possible. Metadata inputs +each have examples provided in the input. The examples disappear when +the box is clicked and will not be saved if nothing is input by the +user. Mandatory inputs are marked with a red asterisk. If these inputs +are not filled, the data will be considered uninterpretable and will be +discarded. Inputs left blank will be left blank in the metadata sheet +and interpreted as “unknown” or “not applicable”. To share metadata, +click the share data button at the bottom of the metadata inputs.

    +

    When the user clicks the Share Data button their +current uploaded data and metadata is sent to an open-access online repository.

    +

    +

    All inputs from the metadata (described below) are input to a +metadata sheet. The metadata sheet is given the same unique name as the +data, but it ends with “_form”. The exact same data is saved as would be +downloaded using the download data button (described below). All high +quality uploaded data with metadata will eventually be reviewed by +spectroscopy experts and added to the internal library if it passes +review. If multiple files are going to be uploaded with metadata, the +cells will also stay filled with the last input after the share data +button is clicked. Just upload the next dataset and change the metadata +inputs that are different. If more than 50 files will be shared at once, +you can contact the website administrator to get a bulk upload sheet for +more rapid upload.

    +

    Type

    +
    +share_spec(raman_hdpe,
    +           metadata = c(user_name = "Win Cowger",
    +                        contact_info = "wincowger@gmail.com",
    +                        spectrum_type = "Raman",
    +                        spectrum_identity = "HDPE")
    +           )
    +

    to share your spectral data from the R console.

    +
    +
    +
    +

    Preprocessing +

    +

    After uploading data, you can preprocess the data using baseline +correction, smoothing, and range selection and save your preprocessed +data. Go to the Preprocess Spectrum tab to select your +parameters for processing the spectrum.

    +
    +

    Preprocess Spectra Plot +

    +

    +

    The preprocess spectra plot shows the uploaded spectra in comparison +to the processed spectra that has been processed using the processing +inputs on the page. It will automatically update with any new slider +inputs. This allows the user to tune the inputs to optimize the signal +to noise ratio. The goal with preprocessing is to make peak regions have +high intensities and non-peak regions should have low intensities.

    +
    +
    +

    Preprocessing Tools +

    +

    +

    When the slider is green for the tool type, that means that that tool +is being used to preprocess the spectrum. If the slider is clicked +blank, the cog button to the right will disappear to indicate that the +tool is no longer being used.

    +

    +

    If the cog button is clicked, any functions associated with that tool +will be displayed and can be manipulated to process the spectrum.

    +
    +
    +

    Smoothing Polynomial +

    +

    +

    The first step of the Open Specy preprocessing routing is spectral +smoothing. The goal of this function is to increase the signal to noise +ratio (S/N) without distorting the shape or relative size of the peaks. +The value on the slider is the polynomial order of the Savitzky-Golay +(SG) filter. The SG filter is fit to a moving window of 11 data +points where the center point in the window is replaced with the +polynomial estimate. The number of data points in the window is not user +adjustable. Higher numbers lead to more wiggly fits and thus less +smooth, lower numbers lead to more smooth fits, a 7th order polynomial +will make the spectrum have almost no smoothing. If smoothing is set to +0 then no smoothing is conducted on the spectrum. When smoothing is done +well, peak shapes and relative heights should not change. Typically a +3rd order polynomial (3 on the slider) works to increase the signal to +noise without distortion, but if the spectrum is noisy, decrease +polynomial order and if it is already smooth, increase the polynomial +order to the maximum (7). Examples of smoothing below:

    +
    +Sample `raman_hdpe` spectrum with different smoothing polynomials (p) from Cowger et al. (2020).

    +Sample raman_hdpe spectrum with different smoothing +polynomials (p) from Cowger et al. (2020). +

    +
    +

    The different degrees of smoothing were achieved with the following R +commands:

    +
    +smooth_intens(raman_hdpe, p = 1)
    +smooth_intens(raman_hdpe, p = 4)
    +

    The intensity-adjusted sample spectrum raman_adj is +smoothed accordingly:

    +
    +raman_smooth <- raman_adj %>% 
    +  smooth_intens()
    +
    +head(raman_smooth)
    +#>    wavenumber  intensity
    +#> 1:    301.040 0.00000000
    +#> 2:    304.632 0.01568318
    +#> 3:    308.221 0.02461353
    +#> 4:    311.810 0.02828915
    +#> 5:    315.398 0.02820811
    +#> 6:    318.983 0.02586852
    +
    +
    +

    Baseline Correction Polynomial +

    +

    +

    The second step of Open Specy’s preprocessing routine is baseline +correction. The goal of baseline correction is to get all non-peak +regions of the spectra to zero absorbance. The higher the polynomial +order, the more wiggly the fit to the baseline. If the baseline is not +very wiggly, a more wiggly fit could remove peaks which is not desired. +The baseline correction algorithm used in Open Specy is called +“iModPolyfit” (Zhao et al. 2007). This algorithm iteratively fits +polynomial equations of the specified order to the whole spectrum. +During the first fit iteration, peak regions will often be above the +baseline fit. The data in the peak region is removed from the fit to +make sure that the baseline is less likely to fit to the peaks. The +iterative fitting terminates once the difference between the new and +previous fit is small. An example of a good baseline fit below.

    +
    +Sample `raman_hdpe` spectrum with different degrees of background subtraction (Cowger et al., 2020).

    +Sample raman_hdpe spectrum with different degrees of +background subtraction (Cowger et al., 2020). +

    +
    +

    The smoothed sample spectrum raman_smooth is +background-corrected as follows:

    +
    +raman_bgc <- raman_smooth %>% 
    +  subtr_bg()
    +
    +head(raman_bgc)
    +#>    wavenumber   intensity
    +#> 1:    301.040 0.000000000
    +#> 2:    304.632 0.000000000
    +#> 3:    308.221 0.006298355
    +#> 4:    311.810 0.008146146
    +#> 5:    315.398 0.007025667
    +#> 6:    318.983 0.004412447
    +
    +
    +

    Spectral Range +

    +

    +

    The final step of preprocessing is restricting the spectral range. +Sometimes the instrument operates with high noise at the ends of the +spectrum and sometimes the baseline fit can produce distortions at the +ends of the spectrum, both can be removed using this routine. You should +look into the signal to noise ratio of your specific instrument by +wavelength to determine what wavelength ranges to use. Distortions due +to baseline fit can be assessed from looking at the preprocess spectra +plot. Additionally, you can restrict the range to examine a single peak +or a subset of peaks of interests. This function allows users to isolate +peaks of interest for matching, while removing noise and influence from +less relevant spectral data.

    +
    +
    +

    Download Data +

    +

    +

    After you have the preprocessing parameters set, we recommend that +you download the preprocessed data for your records. The download data +button will append the uploaded data to three columns created by the +preprocessing parameters. “Wavelength” and “Absorbance” are columns from +the data uploaded by the user. “NormalizedIntensity” is the max-min +normalized value (Equation 1) of the “Absorbance”. “Smoothed” is the +Savitzky-Golay filter specified by the slider explained above. +“BaselineRemoved” is the smoothed and baseline corrected value that is +visible on the center plot.

    +
    +
    +
    +

    Matching +

    +

    After uploading data and preprocessing it (if desired) you can now +identify the spectrum. To identify the spectrum go to the Match +Spectrum tab.

    +

    You will see your spectrum and the top matches, but before looking at +matches, you need to check the three selectable parameters below.

    +
    +

    Spectrum Type +

    +

    +

    The spectra type input on the “Match spectra” tab specifies the type +of spectra (Raman or FTIR) that the user has uploaded and wants to match +to. This input will tell the website whether to use the FTIR library or +the Raman library to make the match.

    +
    +
    +

    Spectrum To Analyze +

    +

    +

    The spectra to analyze input specifies if the tool will match the +Uploaded spectra (unaltered by the inputs on the +Preprocess Spectra tab) or the Processed +Spectra (manipulated by the inputs in the Preprocess Spectra +Tab).

    +
    +
    +

    Region To Match +

    +

    +

    The region to match input specifies if the “Full Spectrum” will match +the entire range of the spectra (including non peak regions) in the +reference database. This is the most intuitive match. Or should the +Peaks Only match just the peak regions in the reference +database. This is an advanced feature proposed in Renner et al. (2017). +This can be a less intuitive approach but in cases where there are few +peaks and high baseline interference, it could be the best option. In +cases where non-peak regions are important for the interpretation of the +match, this is not the best approach.

    +
    +
    +

    Match Table +

    +

    +

    The selectable table shows the top material matches returned by the +tool, their Pearson’s r value, and the organization they were provided +by. When rows are selected their spectra are added to the match plot. +The spectrum being matched and reference library are determined by the +previously mentioned parameters. During the matching process, one final +cleaning step happens using a simple minimum subtraction algorithm +(Equation 2) which in many cases will allow unprocessed spectra to +remove subtle baseline, but will not harm the spectra which has no +baseline. Then, these aligned data are tested for correlation using the +Pearson’s r. The Pearson’s r is used as a match quality indicator and +the spectra from the top 1000 best matches are returned from the +library. You can restrict the libraries which are displayed in the table +by clicking the box that says All under the +Organization column.

    +

    Similarly you can restrict the range of Pearson's r values or search +for specific material types.

    +\[\mathrm{for~each}~peak~group^{1,n}: x - +\mathrm{min}(x)\] +

    +Equation 2: Minimum Subtraction +

    +

    The same table can be returned using the Open Specy library commands +in the R console.

    +
    +# Fetch current spectral library from https://osf.io/x7dpz/
    +get_lib()
    +# Load library into global environment
    +spec_lib <- load_lib()
    +# Match spectrum with library and retrieve meta data
    +match_spec(raman_bgc, library = spec_lib, which = "raman")
    +
    +
    +

    Selection Metadata +

    +

    +

    Whatever match is selected from the match table may have additional +metadata about it. That metadata will be displayed below the plot. Some +of this metadata may assist you in interpreting the spectra. For +example, if the spectra has metadata which says it is a liquid and you +are analyzing a solid particle, that spectrum may not be the best +match.

    +

    The R command for manual metadata selection using +sample_name == 5381 as example is:

    +
    +find_spec(sample_name == 5381, library = spec_lib, which = "raman")
    +
    +
    +

    Match Plot +

    +

    +

    This plot is dynamically updated by selecting matches from the match +table. The red spectrum is the spectrum that you selected from the +reference library and the white spectrum is the spectrum that you are +trying to identify. Whenever a new dataset is uploaded, the plot and +data table in this tab will be updated. These plots can be saved as a +.png by clicking the camera button at the top of the plot.

    +
    +
    +

    How to interpret the reported matches +

    +

    There are several important things to consider when interpreting a +spectral match including the library source, the Pearson’s r, and other +metrics.

    +
    +

    The library source +

    +

    When you click on a spectrum, all of the metadata that we have in +Open Specy about that source will be displayed in a metadata window +below to the matches table. Each library has different methodologies +used to develop it. It is useful to read up on the library sources from +the literature that they came from. E.g. Chabuka et al. 2020 focuses on +weathered plastics, so matching to it may suggest that your spectrum is +of a weathered polymer. Primpke et al. 2018 only has a spectral range up +to 2000, so some polymers may be difficult to differentiate with it. +Make sure to cite the libraries that you use during your search when you +publish your results. The authors were kind enough to make their data +open access so that it could be used in Open Specy and we should return +the favor by citing them.

    +
    +
    +

    Pearson’s r +

    +

    Correlation values are used to identify the closest matches available +in the current Open Specy spectral libraries to improve material +identification and reduce sample processing times. Pearson’s r values +range from 0 - 1 with 0 being a completely different spectrum and 1 +being an exact match. Some general guidelines that we have observed from +using Open Specy. If no matches are > ~0.3 the material may require +additional processing or may not exist in the Open Specy library. +Correlation values are not the only metric you should use to assess your +spectra’s match to a material in the library, matches need to make +sense.

    +
    +
    +

    Things to consider beyond correlation +

    +

    Peak position and height similarities are more important than +correlation and need to be assessed manually. Peak position correlates +with specific bond types. Peak height correlates to the concentration of +a compound. Therefore, peak height and peak position should match as +closely as possible to the matched spectrum. When there are peaks that +exist in the spectra you are trying to interpret that do not exist in +the match, there may be additional materials to identify. In this case, +restrict the preprocessing range to just the unidentified peak and try +to identify it as an additional component (see also https://www.compoundchem.com/2015/02/05/irspectroscopy/).

    +

    Also, check the match metadata to see if the match makes sense. +Example: A single fiber cannot be a “cotton blend” since there would be +no other fibers to make up the rest of the blend. Example: Cellophane +does not degrade into fibers, so a match for a fiber to cellophane +wouldn’t make sense. Example: You are analyzing a particle at room +temperature, but the matched material is liquid at room temperature. The +material may be a component of the particle but it cannot be the whole +particle.

    +
    +
    +

    How specific do you need to be in the material type of the +match? +

    +

    You can choose to be specific about how you classify a substance +(e.g. polyester, cellophane) or more general (e.g. synthetic, +semi-synthetic, natural, etc.). The choice depends on your research +question. Using more general groups can speed up analysis time but will +decrease the information you have for interpretation. To identify +materials more generally, you can often clump the identities provided by +Open Specy to suit your needs. For example, matches to “polyester” and +“polypropylene” could be clumped to the category “plastic”.

    +
    +
    +

    How to differentiate between similar spectra? +

    +

    One common challenge is differentiating between LDPE and HDPE. But, +even with a low resolution instrument (MacroRAM, 2 cm-1 +pixel-1), you can still see some differences. From a wide +view, these low, medium, and high density PE samples all look relatively +similar (figures courtesy of Bridget O'Donnell, Horiba Scientific):

    +

    +

    But, a closer look at the 1450 cm-1 band reveals clear +differences:

    +

    +

    When you overlay them, you start to see differences in other spectral +regions too:

    +

    +

    So, the question is, how do we deal with samples that are very +similar with only subtle differences? Usually, researchers will use MVA +techniques after they’ve collected multiple reference spectra of known +samples (LDPE and HDPE in this case). They can then develop models and +apply them to distinguish between different types of PE. With a +reference database like Open Specy, this is complicated by the fact that +researchers are measuring samples on different instruments with +correspondingly different spectral responses and spectral resolutions. +That makes it even more difficult to accurately match definitively to +LDPE and HDPE as opposed to generic ‘PE’.

    +

    One possibility is to place more emphasis (from a computational +perspective) on the bands that show the most difference (the triplet at +1450 cm-1) by restricting the range used to match in Open +Specy.

    +

    The other, much simpler option is to just match any PE hit to generic +‘PE’ and not specifically HDPE or LDPE.

    +

    Another challenge is in differentiating between types of nylons. But, +Raman has a pretty easy time distinguishing nylons. These spectra were +recorded of a series of nylons and the differences are much more +distinguishable compared to the PE results above (nylon 6, 6-6, 6-9, +6-10, and 6-12 top to bottom):

    +

    +

    The differences are even more pronounced when you overlay the +spectra:

    +

    +
    +
    +

    What to do when matches aren’t making sense +

    +
      +
    1. Double check that the baseline correction and smoothing parameters +result in the best preprocessing of the data.
    2. +
    3. Try reprocessing your spectrum, but limit it to specific peak +regions with a higher signal to noise ratio.
    4. +
    5. Restrict the spectral range to include or exclude questionable peaks +or peaks that were not present in the previous matches.
    6. +
    7. Restrict the spectral range to exclude things like CO2 +(2200 cm-1) or H2O (~1600 cm-1) in +spikes in the IR spectrum.
    8. +
    9. If nothing above works to determine a quality match, you may need to +measure the spectrum of your material again or use another spectral +analysis tool.
    10. +
    +
    +
    +
    +
    +

    Mini Tutorials +

    +
    +

    File Conversion in SpectraGryph to Open Specy Accepted Format +

    +
      +
    1. Download Spectragryph from https://www.effemm2.de/spectragryph/down.html

    2. +
    3. Open Spectragryph and upload your file by dragging and dropping +it into the console.

    4. +
    +

    +
      +
    1. Click File, Save/export data, save data as, and save it as an spc +file. ¸
    2. +
    +

    +
      +
    1. Then upload that .spc file to Open Specy.
    2. +
    +

    +
    +
    +

    Conceptual diagram of data flow through Open Specy +

    +

    +
    +
    +
    +

    References +

    +

    Chabuka BK, Kalivas JH (2020). “Application of a Hybrid Fusion +Classification Process for Identification of Microplastics Based on +Fourier Transform Infrared Spectroscopy.” Applied Spectroscopy, +74(9), 1167–1183. doi: 10.1177/0003702820923993.

    +

    Cowger W, Gray A, Christiansen SH, Christiansen SH, Christiansen SH, +De Frond H, Deshpande AD, Hemabessiere L, Lee E, Mill L, et al. (2020). +“Critical Review of Processing and Classification Techniques for Images +and Spectra in Microplastic Research.” Applied Spectroscopy, +74(9), 989–1010. doi: 10.1177/0003702820929064.

    +

    Cowger W, Steinmetz Z, Gray A, Munno K, Lynch J, Hapich H, Primpke S, +De Frond H, Rochman C, Herodotou O (2021). “Microplastic Spectral +Classification Needs an Open Source Community: Open Specy to the +Rescue!” Analytical Chemistry, 93(21), +7543–7548. doi: 10.1021/acs.analchem.1c00123.

    +

    Primpke S, Wirth M, Lorenz C, Gerdts G (2018). “Reference Database +Design for the Automated Analysis of Microplastic Samples Based on +Fourier Transform Infrared (FTIR) Spectroscopy.” Analytical and +Bioanalytical Chemistry, 410(21), 5131–5141. doi: +10.1007/s00216-018-1156-x.

    +

    Renner G, Schmidt TC, Schram J (2017). “A New Chemometric Approach +for Automatic Identification of Microplastics from Environmental +Compartments Based on FT-IR Spectroscopy.” Analytical +Chemistry, 89(22), 12045–12053. doi: 10.1021/acs.analchem.7b02472.

    +

    Savitzky A, Golay MJ (1964). “Smoothing and Differentiation of Data +by Simplified Least Squares Procedures.” Analytical Chemistry, +36(8), 1627–1639.

    +

    Zhao J, Lui H, McLean DI, Zeng H (2007). “Automated Autofluorescence +Background Subtraction Algorithm for Biomedical Raman Spectroscopy.” +Applied Spectroscopy, 61(11), 1225–1232. doi: +10.1366/000370207782597003.

    +
    +
    +
    + + + +
    + + + +
    +
    + + + + + + + diff --git a/docs/articles/sop_files/figure-html/smoothing-1.png b/docs/articles/sop_files/figure-html/smoothing-1.png new file mode 100644 index 0000000000000000000000000000000000000000..12a50fb237e947b917cf604032c5672b8f37a176 GIT binary patch literal 91164 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

    n#`XUbzE)Tl6EZD%6wkp4dFt`~Nl*-^n`ah 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 U-WyVF8bJ>7boFyt=akR{02UhyXaE2J literal 0 HcmV?d00001 diff --git a/docs/articles/sop_files/figure-html/subtraction-1.png b/docs/articles/sop_files/figure-html/subtraction-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f943455e5f03c45d258d61e0d5b385f81f7fe1f8 GIT binary patch literal 81995 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 literal 0 HcmV?d00001 diff --git a/docs/articles/spectragryph-1.png b/docs/articles/spectragryph-1.png new file mode 100644 index 0000000000000000000000000000000000000000..485bf3e096d0d06038f8506cd31518e22cd87ad3 GIT binary patch literal 121319 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 q*+I_4K$n+8#pM_xBG+ef!14c literal 0 HcmV?d00001 diff --git a/docs/articles/spectragryph-2.png b/docs/articles/spectragryph-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5c0a254f00d869d7c4a2b404d3f0e721084a75a8 GIT binary patch literal 98631 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%0AxSv$L~DY+=9Ii!YXE8}`xG{;mJv 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

    UtE5dCx59I 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 qlb|}^0~$9Xu}_RzL!v6wMl-Lmf literal 0 HcmV?d00001 diff --git a/docs/articles/spectrumtype.jpg b/docs/articles/spectrumtype.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1327481e025ff007ba946ee6d3565ba57b287760 GIT binary patch literal 15654 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 +Authors and Citation • OpenSpecy + Skip to contents + + +

    +
    +
    + +
    +

    Authors

    + +
    • +

      Win Cowger. Maintainer, author. +

      +
    • +
    • +

      Zacharias Steinmetz. Author. +

      +
    • +
    • +

      Andrew Gray. Contributor. +

      +
    • +
    • +

      Hannah Hapich. Contributor. +

      +
    • +
    • +

      Jennifer Lynch. Contributor, data contributor. +

      +
    • +
    • +

      Hannah De Frond. Contributor, data contributor. +

      +
    • +
    • +

      Keenan Munno. Contributor, data contributor. +

      +
    • +
    • +

      Chelsea Rochman. Contributor, data contributor. +

      +
    • +
    • +

      Sebastian Primpke. Contributor, data contributor. +

      +
    • +
    • +

      Orestis Herodotou. Contributor, data contributor. +

      +
    • +
    + +
    +

    Citation

    +

    Source: DESCRIPTION

    + +

    Cowger W, Steinmetz Z (2022). +OpenSpecy: Analyze, Process, Identify, and Share Raman and (FT)IR Spectra. +https://github.com/wincowgerDEV/OpenSpecy-package/, +http://wincowger.com/OpenSpecy-package/. +

    +
    @Manual{,
    +  title = {OpenSpecy: Analyze, Process, Identify, and Share Raman and (FT)IR Spectra},
    +  author = {Win Cowger and Zacharias Steinmetz},
    +  year = {2022},
    +  note = {https://github.com/wincowgerDEV/OpenSpecy-package/,
    +http://wincowger.com/OpenSpecy-package/},
    +}
    +
    +
    + + +
    + + + +
    + + + + + + + diff --git a/docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js b/docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js new file mode 100644 index 00000000..b65b161a --- /dev/null +++ b/docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},e=e=>{const i=t(e);return i&&document.querySelector(i)?i:null},i=e=>{const i=t(e);return i?document.querySelector(i):null},n=t=>{t.dispatchEvent(new Event("transitionend"))},s=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),o=t=>s(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,r=(t,e,i)=>{Object.keys(i).forEach(n=>{const o=i[n],r=e[n],a=r&&s(r)?"element":null==(l=r)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(o).test(a))throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${o}".`)})},a=t=>!(!s(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",()=>{f.forEach(t=>t())}),f.push(e)):e()},g=t=>{"function"==typeof t&&t()},_=(t,e,i=!0)=>{if(!i)return void g(t);const s=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let o=!1;const r=({target:i})=>{i===e&&(o=!0,e.removeEventListener("transitionend",r),g(t))};e.addEventListener("transitionend",r),setTimeout(()=>{o||n(e)},s)},b=(t,e,i,n)=>{let s=t.indexOf(e);if(-1===s)return t[!i&&n?t.length-1:0];const o=t.length;return s+=i?1:-1,n&&(s=(s+o)%o),t[Math.max(0,Math.min(s,o-1))]},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,E={};let A=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},O=/^(mouseenter|mouseleave)/i,C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function k(t,e){return e&&`${e}::${A++}`||t.uidEvent||A++}function L(t){const e=k(t);return t.uidEvent=e,E[e]=E[e]||{},E[e]}function x(t,e,i=null){const n=Object.keys(t);for(let s=0,o=n.length;sfunction(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};n?n=t(n):i=t(i)}const[o,r,a]=D(e,i,n),l=L(t),c=l[a]||(l[a]={}),h=x(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=k(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s]);return null}}(t,i,n):function(t,e){return function i(n){return n.delegateTarget=t,i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function N(t,e,i,n,s){const o=x(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=D(e,i,n),a=r!==e,l=L(t),c=e.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void N(t,l,r,o,s?i:null)}c&&Object.keys(l).forEach(i=>{!function(t,e,i,n){const s=e[i]||{};Object.keys(s).forEach(o=>{if(o.includes(n)){const n=s[o];N(t,e,i,n.originalHandler,n.delegationSelector)}})}(t,l,i,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(i=>{const n=i.replace(w,"");if(!a||e.includes(n)){const e=h[i];N(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u(),s=I(e),o=e!==s,r=C.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(e,i),n(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(d,t,{get:()=>i[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},j=new Map;var M={set(t,e,i){j.has(t)||j.set(t,new Map);const n=j.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>j.has(t)&&j.get(t).get(e)||null,remove(t,e){if(!j.has(t))return;const i=j.get(t);i.delete(e),0===i.size&&j.delete(t)}};class H{constructor(t){(t=o(t))&&(this._element=t,M.set(this._element,this.constructor.DATA_KEY,this))}dispose(){M.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,i=!0){_(t,e,i)}static getInstance(t){return M.get(o(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.1.0"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return"bs."+this.NAME}static get EVENT_KEY(){return"."+this.DATA_KEY}}const B=(t,e="hide")=>{const n="click.dismiss"+t.EVENT_KEY,s=t.NAME;P.on(document,n,`[data-bs-dismiss="${s}"]`,(function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),l(this))return;const o=i(this)||this.closest("."+s);t.getOrCreateInstance(o)[e]()}))};class R extends H{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}B(R,"close"),m(R);class W extends H{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=W.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}function z(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function q(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');W.getOrCreateInstance(e).toggle()}),m(W);const F={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+q(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+q(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=z(t.dataset[i])}),e},getDataAttribute:(t,e)=>z(t.getAttribute("data-bs-"+q(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},U={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let n=t.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(e)&&i.push(n),n=n.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>t+':not([tabindex^="-"])').join(", ");return this.find(e,t).filter(t=>!l(t)&&a(t))}},$={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},V={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},K="next",X="prev",Y="left",Q="right",G={ArrowLeft:Q,ArrowRight:Y};class Z extends H{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=U.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return $}static get NAME(){return"carousel"}next(){this._slide(K)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(X)}pause(t){t||(this._isPaused=!0),U.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(n(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=U.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const i=t>e?K:X;this._slide(i,this._items[t])}_getConfig(t){return t={...$,...F.getDataAttributes(this._element),..."object"==typeof t?t:{}},r("carousel",t,V),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:Y)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},i=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};U.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",e=>t(e)),P.on(this._element,"pointerup.bs.carousel",t=>i(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",e=>t(e)),P.on(this._element,"touchmove.bs.carousel",t=>e(t)),P.on(this._element,"touchend.bs.carousel",t=>i(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=G[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?U.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===K;return b(this._items,e,i,this._config.wrap)}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),n=this._getItemIndex(U.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:n,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=U.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const i=U.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:u,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),d(o),n.classList.add(c),o.classList.add(c);const t=()=>{o.classList.remove(c,h),o.classList.add("active"),n.classList.remove("active",h,c),this._isSliding=!1,setTimeout(f,0)};this._queueCallback(t,n,!0)}else n.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,f();a&&this.cycle()}_directionToOrder(t){return[Q,Y].includes(t)?p()?t===Y?X:K:t===Y?K:X:t}_orderToDirection(t){return[K,X].includes(t)?p()?t===X?Y:Q:t===X?Q:Y:t}static carouselInterface(t,e){const i=Z.getOrCreateInstance(t,e);let{_config:n}=i;"object"==typeof e&&(n={...n,...e});const s="string"==typeof e?e:n.slide;if("number"==typeof e)i.to(e);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Z.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=i(this);if(!e||!e.classList.contains("carousel"))return;const n={...F.getDataAttributes(e),...F.getDataAttributes(this)},s=this.getAttribute("data-bs-slide-to");s&&(n.interval=!1),Z.carouselInterface(e,n),s&&Z.getInstance(e).to(s),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Z.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const t=U.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element);null!==s&&o.length&&(this._selector=s,this._triggerArray.push(i))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return J}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t,e=[];if(this._config.parent){const t=U.find(".collapse .collapse",this._config.parent);e=U.find(".show, .collapsing",this._config.parent).filter(e=>!t.includes(e))}const i=U.findOne(this._selector);if(e.length){const n=e.find(t=>i!==t);if(t=n?et.getInstance(n):null,t&&t._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;e.forEach(e=>{i!==e&&et.getOrCreateInstance(e,{toggle:!1}).hide(),t||M.set(e,"bs.collapse",null)});const n=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s="scroll"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[n]="",P.trigger(this._element,"shown.bs.collapse")},this._element,!0),this._element.style[n]=this._element[s]+"px"}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",d(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;for(let t=0;t{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")},this._element,!0)}_isShown(t=this._element){return t.classList.contains("show")}_getConfig(t){return(t={...J,...F.getDataAttributes(this._element),...t}).toggle=Boolean(t.toggle),t.parent=o(t.parent),r("collapse",t,tt),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=U.find(".collapse .collapse",this._config.parent);U.find('[data-bs-toggle="collapse"]',this._config.parent).filter(e=>!t.includes(e)).forEach(t=>{const e=i(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))})}_addAriaAndCollapsedClass(t,e){t.length&&t.forEach(t=>{e?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",e)})}static jQueryInterface(t){return this.each((function(){const e={};"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1);const i=et.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const i=e(this);U.find(i).forEach(t=>{et.getOrCreateInstance(t,{toggle:!1}).toggle()})})),m(et);var it="top",nt="bottom",st="right",ot="left",rt=[it,nt,st,ot],at=rt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),lt=[].concat(rt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),ct=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ht(t){return t?(t.nodeName||"").toLowerCase():null}function dt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ut(t){return t instanceof dt(t).Element||t instanceof Element}function ft(t){return t instanceof dt(t).HTMLElement||t instanceof HTMLElement}function pt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof dt(t).ShadowRoot||t instanceof ShadowRoot)}var mt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];ft(s)&&ht(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});ft(n)&&ht(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function gt(t){return t.split("-")[0]}var _t=Math.round;function bt(t,e){void 0===e&&(e=!1);var i=t.getBoundingClientRect(),n=1,s=1;return ft(t)&&e&&(n=i.width/t.offsetWidth||1,s=i.height/t.offsetHeight||1),{width:_t(i.width/n),height:_t(i.height/s),top:_t(i.top/s),right:_t(i.right/n),bottom:_t(i.bottom/s),left:_t(i.left/n),x:_t(i.left/n),y:_t(i.top/s)}}function vt(t){var e=bt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function yt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&pt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function wt(t){return dt(t).getComputedStyle(t)}function Et(t){return["table","td","th"].indexOf(ht(t))>=0}function At(t){return((ut(t)?t.ownerDocument:t.document)||window.document).documentElement}function Tt(t){return"html"===ht(t)?t:t.assignedSlot||t.parentNode||(pt(t)?t.host:null)||At(t)}function Ot(t){return ft(t)&&"fixed"!==wt(t).position?t.offsetParent:null}function Ct(t){for(var e=dt(t),i=Ot(t);i&&Et(i)&&"static"===wt(i).position;)i=Ot(i);return i&&("html"===ht(i)||"body"===ht(i)&&"static"===wt(i).position)?e:i||function(t){var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&ft(t)&&"fixed"===wt(t).position)return null;for(var i=Tt(t);ft(i)&&["html","body"].indexOf(ht(i))<0;){var n=wt(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function kt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var Lt=Math.max,xt=Math.min,Dt=Math.round;function St(t,e,i){return Lt(t,xt(e,i))}function Nt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function It(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var Pt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=gt(i.placement),l=kt(a),c=[ot,st].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Nt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:It(t,rt))}(s.padding,i),d=vt(o),u="y"===l?it:ot,f="y"===l?nt:st,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=Ct(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,E=St(v,w,y),A=l;i.modifiersData[n]=((e={})[A]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&yt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},jt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Mt(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,h=!0===c?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Dt(Dt(e*n)/n)||0,y:Dt(Dt(i*n)/n)||0}}(o):"function"==typeof c?c(o):o,d=h.x,u=void 0===d?0:d,f=h.y,p=void 0===f?0:f,m=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),_=ot,b=it,v=window;if(l){var y=Ct(i),w="clientHeight",E="clientWidth";y===dt(i)&&"static"!==wt(y=At(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,s===it&&(b=nt,p-=y[w]-n.height,p*=a?1:-1),s===ot&&(_=st,u-=y[E]-n.width,u*=a?1:-1)}var A,T=Object.assign({position:r},l&&jt);return a?Object.assign({},T,((A={})[b]=g?"0":"",A[_]=m?"0":"",A.transform=(v.devicePixelRatio||1)<2?"translate("+u+"px, "+p+"px)":"translate3d("+u+"px, "+p+"px, 0)",A)):Object.assign({},T,((e={})[b]=g?p+"px":"",e[_]=m?u+"px":"",e.transform="",e))}var Ht={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:gt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Mt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Mt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Bt={passive:!0},Rt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=dt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,Bt)})),a&&l.addEventListener("resize",i.update,Bt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,Bt)})),a&&l.removeEventListener("resize",i.update,Bt)}},data:{}},Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function zt(t){return t.replace(/left|right|bottom|top/g,(function(t){return Wt[t]}))}var qt={start:"end",end:"start"};function Ft(t){return t.replace(/start|end/g,(function(t){return qt[t]}))}function Ut(t){var e=dt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function $t(t){return bt(At(t)).left+Ut(t).scrollLeft}function Vt(t){var e=wt(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Kt(t,e){var i;void 0===e&&(e=[]);var n=function t(e){return["html","body","#document"].indexOf(ht(e))>=0?e.ownerDocument.body:ft(e)&&Vt(e)?e:t(Tt(e))}(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=dt(n),r=s?[o].concat(o.visualViewport||[],Vt(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Kt(Tt(r)))}function Xt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Yt(t,e){return"viewport"===e?Xt(function(t){var e=dt(t),i=At(t),n=e.visualViewport,s=i.clientWidth,o=i.clientHeight,r=0,a=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=n.offsetLeft,a=n.offsetTop)),{width:s,height:o,x:r+$t(t),y:a}}(t)):ft(e)?function(t){var e=bt(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Xt(function(t){var e,i=At(t),n=Ut(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Lt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Lt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+$t(t),l=-n.scrollTop;return"rtl"===wt(s||i).direction&&(a+=Lt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(At(t)))}function Qt(t){return t.split("-")[1]}function Gt(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?gt(s):null,r=s?Qt(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case it:e={x:a,y:i.y-n.height};break;case nt:e={x:a,y:i.y+i.height};break;case st:e={x:i.x+i.width,y:l};break;case ot:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?kt(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[h]/2-n[h]/2);break;case"end":e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Zt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,h=void 0===c?"popper":c,d=i.altBoundary,u=void 0!==d&&d,f=i.padding,p=void 0===f?0:f,m=Nt("number"!=typeof p?p:It(p,rt)),g="popper"===h?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[u?g:h],y=function(t,e,i){var n="clippingParents"===e?function(t){var e=Kt(Tt(t)),i=["absolute","fixed"].indexOf(wt(t).position)>=0&&ft(t)?Ct(t):t;return ut(i)?e.filter((function(t){return ut(t)&&yt(t,i)&&"body"!==ht(t)})):[]}(t):[].concat(e),s=[].concat(n,[i]),o=s[0],r=s.reduce((function(e,i){var n=Yt(t,i);return e.top=Lt(n.top,e.top),e.right=xt(n.right,e.right),e.bottom=xt(n.bottom,e.bottom),e.left=Lt(n.left,e.left),e}),Yt(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(ut(v)?v:v.contextElement||At(t.elements.popper),r,l),w=bt(_),E=Gt({reference:w,element:b,strategy:"absolute",placement:s}),A=Xt(Object.assign({},b,E)),T="popper"===h?A:w,O={top:y.top-T.top+m.top,bottom:T.bottom-y.bottom+m.bottom,left:y.left-T.left+m.left,right:T.right-y.right+m.right},C=t.modifiersData.offset;if("popper"===h&&C){var k=C[s];Object.keys(O).forEach((function(t){var e=[st,nt].indexOf(t)>=0?1:-1,i=[it,nt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function Jt(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?lt:l,h=Qt(n),d=h?a?at:at.filter((function(t){return Qt(t)===h})):rt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Zt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[gt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}var te={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=gt(g),b=l||(_!==g&&p?function(t){if("auto"===gt(t))return[];var e=zt(t);return[Ft(t),e,Ft(e)]}(g):[zt(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat("auto"===gt(i)?Jt(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,A=!0,T=v[0],O=0;O=0,D=x?"width":"height",S=Zt(e,{placement:C,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),N=x?L?st:ot:L?nt:it;y[D]>w[D]&&(N=zt(N));var I=zt(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[I]<=0),P.every((function(t){return t}))){T=C,A=!1;break}E.set(C,P)}if(A)for(var j=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ee(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ie(t){return[it,st,nt,ot].some((function(e){return t[e]>=0}))}var ne={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Zt(e,{elementContext:"reference"}),a=Zt(e,{altBoundary:!0}),l=ee(r,n),c=ee(a,s,o),h=ie(l),d=ie(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},se={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=lt.reduce((function(t,i){return t[i]=function(t,e,i){var n=gt(t),s=[ot,it].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[ot,st].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},oe={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=Gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},re={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=Zt(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=gt(e.placement),b=Qt(e.placement),v=!b,y=kt(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,A=e.rects.reference,T=e.rects.popper,O="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C={x:0,y:0};if(E){if(o||a){var k="y"===y?it:ot,L="y"===y?nt:st,x="y"===y?"height":"width",D=E[y],S=E[y]+g[k],N=E[y]-g[L],I=f?-T[x]/2:0,P="start"===b?A[x]:T[x],j="start"===b?-T[x]:-A[x],M=e.elements.arrow,H=f&&M?vt(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},R=B[k],W=B[L],z=St(0,A[x],H[x]),q=v?A[x]/2-I-z-R-O:P-z-R-O,F=v?-A[x]/2+I+z+W+O:j+z+W+O,U=e.elements.arrow&&Ct(e.elements.arrow),$=U?"y"===y?U.clientTop||0:U.clientLeft||0:0,V=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,K=E[y]+q-V-$,X=E[y]+F-V;if(o){var Y=St(f?xt(S,K):S,D,f?Lt(N,X):N);E[y]=Y,C[y]=Y-D}if(a){var Q="x"===y?it:ot,G="x"===y?nt:st,Z=E[w],J=Z+g[Q],tt=Z-g[G],et=St(f?xt(J,K):J,Z,f?Lt(tt,X):tt);E[w]=et,C[w]=et-Z}}e.modifiersData[n]=C}},requiresIfExists:["offset"]};function ae(t,e,i){void 0===i&&(i=!1);var n,s,o=ft(e),r=ft(e)&&function(t){var e=t.getBoundingClientRect(),i=e.width/t.offsetWidth||1,n=e.height/t.offsetHeight||1;return 1!==i||1!==n}(e),a=At(e),l=bt(t,r),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ht(e)||Vt(a))&&(c=(n=e)!==dt(n)&&ft(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Ut(n)),ft(e)?((h=bt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=$t(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}var le={placement:"bottom",modifiers:[],strategy:"absolute"};function ce(){for(var t=arguments.length,e=new Array(t),i=0;iP.on(t,"mouseover",h)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add("show"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.dropdown",t)}hide(){if(l(this._element)||!this._isShown(this._menu))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",h)),this._popper&&this._popper.destroy(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),F.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}_getConfig(t){if(t={...this.constructor.Default,...F.getDataAttributes(this._element),...t},r("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!s(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_createPopper(t){if(void 0===pe)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:s(this._config.reference)?e=o(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=fe(e,this._menu,i),n&&F.setDataAttribute(this._menu,"popper","static")}_isShown(t=this._element){return t.classList.contains("show")}_getMenuElement(){return U.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ye;if(t.classList.contains("dropstart"))return we;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?_e:ge:e?ve:be}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=U.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(a);i.length&&b(i,e,"ArrowDown"===t,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Te.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(t&&(2===t.button||"keyup"===t.type&&"Tab"!==t.key))return;const e=U.find('[data-bs-toggle="dropdown"]');for(let i=0,n=e.length;ie+t),this._setElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight",e=>e+t),this._setElementAttributes(".sticky-top","marginRight",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t)[e];t.style[e]=i(Number.parseFloat(s))+"px"})}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight")}_saveInitialAttribute(t,e){const i=t.style[e];i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=F.getDataAttribute(t,e);void 0===i?t.style.removeProperty(e):(F.removeDataAttribute(t,e),t.style[e]=i)})}_applyManipulationCallback(t,e){s(t)?e(t):U.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const Ce={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},ke={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"};class Le{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&d(this._getElement()),this._getElement().classList.add("show"),this._emulateAnimation(()=>{g(t)})):g(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),g(t)})):g(t)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_getConfig(t){return(t={...Ce,..."object"==typeof t?t:{}}).rootElement=o(t.rootElement),r("backdrop",t,ke),t}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),P.on(this._getElement(),"mousedown.bs.backdrop",()=>{g(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(P.off(this._element,"mousedown.bs.backdrop"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const xe={trapElement:null,autofocus:!0},De={trapElement:"element",autofocus:"boolean"};class Se{constructor(t){this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:t,autofocus:e}=this._config;this._isActive||(e&&t.focus(),P.off(document,".bs.focustrap"),P.on(document,"focusin.bs.focustrap",t=>this._handleFocusin(t)),P.on(document,"keydown.tab.bs.focustrap",t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,".bs.focustrap"))}_handleFocusin(t){const{target:e}=t,{trapElement:i}=this._config;if(e===document||e===i||i.contains(e))return;const n=U.focusableChildren(i);0===n.length?i.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?"backward":"forward")}_getConfig(t){return t={...xe,..."object"==typeof t?t:{}},r("focustrap",t,De),t}}const Ne={backdrop:!0,keyboard:!0,focus:!0},Ie={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"};class Pe extends H{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=U.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Oe}static get Default(){return Ne}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,"show.bs.modal",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add("modal-open"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(){if(!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),this._queueCallback(()=>this._hideModal(),this._element,t)}dispose(){[window,this._dialog].forEach(t=>P.off(t,".bs.modal")),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Le({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_getConfig(t){return t={...Ne,...F.getDataAttributes(this._element),..."object"==typeof t?t:{}},r("modal",t,Ie),t}_showElement(t){const e=this._isAnimated(),i=U.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&d(this._element),this._element.classList.add("show"),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})},this._dialog,e)}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,"hidden.bs.modal")})}_showBackdrop(t){P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:t,scrollHeight:e,style:i}=this._element,n=e>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||t.contains("modal-static")||(n||(i.overflowY="hidden"),t.add("modal-static"),this._queueCallback(()=>{t.remove("modal-static"),n||this._queueCallback(()=>{i.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;(!i&&t&&!p()||i&&!t&&p())&&(this._element.style.paddingLeft=e+"px"),(i&&!t&&!p()||!i&&t&&p())&&(this._element.style.paddingRight=e+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Pe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=i(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{a(this)&&this.focus()})}),Pe.getOrCreateInstance(e).toggle(this)})),B(Pe),m(Pe);const je={backdrop:!0,keyboard:!0,scroll:!1},Me={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class He extends H{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return"offcanvas"}static get Default(){return je}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new Oe).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),this._queueCallback(()=>{this._config.scroll||this._focustrap.activate(),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new Oe).reset(),P.trigger(this._element,"hidden.bs.offcanvas")},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(t){return t={...je,...F.getDataAttributes(this._element),..."object"==typeof t?t:{}},r("offcanvas",t,Me),t}_initializeBackDrop(){return new Le({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Se({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=He.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=i(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,"hidden.bs.offcanvas",()=>{a(this)&&this.focus()});const n=U.findOne(".offcanvas.show");n&&n!==e&&He.getInstance(n).hide(),He.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>U.find(".offcanvas.show").forEach(t=>He.getOrCreateInstance(t).show())),B(He),m(He);const Be=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Re=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,We=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,ze=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!Be.has(i)||Boolean(Re.test(t.nodeValue)||We.test(t.nodeValue));const n=e.filter(t=>t instanceof RegExp);for(let t=0,e=n.length;t{ze(t,a)||i.removeAttribute(t.nodeName)})}return n.body.innerHTML}const Fe=new Set(["sanitize","allowList","sanitizeFn"]),Ue={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},$e={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},Ve={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ke={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Xe extends H{constructor(t,e){if(void 0===pe)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Ve}static get NAME(){return"tooltip"}static get Event(){return Ke}static get DefaultType(){return Ue}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),e=c(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;const n=this.getTipElement(),s=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME);n.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this._config.animation&&n.classList.add("fade");const o="function"==typeof this._config.placement?this._config.placement.call(this,n,this._element):this._config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const{container:a}=this._config;M.set(n,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.append(n),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=fe(this._element,n,this._getPopperConfig(r)),n.classList.add("show");const l=this._resolvePossibleFunction(this._config.customClass);l&&n.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",h)});const d=this.tip.classList.contains("fade");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)},this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement();if(P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",h)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains("fade");this._queueCallback(()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");t.innerHTML=this._config.template;const e=t.children[0];return this.setContent(e),e.classList.remove("fade","show"),this.tip=e,this.tip}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(t,e,i){const n=U.findOne(i,t);e||!n?this.setElementContent(n,e):n.remove()}setElementContent(t,e){if(null!==t)return s(e)?(e=o(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML="",t.append(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=qe(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){const t=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(t)}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){return e||this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(t)}`)}_getAttachment(t){return $e[t.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this._config.selector,t=>this._enter(t)),P.on(this._element,i,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=F.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{Fe.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).container=!1===t.container?document.body:o(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),r("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=qe(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=t.getAttribute("class").match(e);null!==i&&i.length>0&&i.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(Xe);const Ye={...Xe.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},Qe={...Xe.DefaultType,content:"(string|element|function)"},Ge={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Ze extends Xe{static get Default(){return Ye}static get NAME(){return"popover"}static get Event(){return Ge}static get DefaultType(){return Qe}isWithContent(){return this.getTitle()||this._getContent()}setContent(t){this._sanitizeAndSetContent(t,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(t,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(t){return this.each((function(){const e=Ze.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(Ze);const Je={offset:10,method:"auto",target:""},ti={offset:"number",method:"string",target:"(string|element)"},ei=".nav-link, .list-group-item, .dropdown-item";class ii extends H{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Je}static get NAME(){return"scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?t:this._config.method,n="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),U.find(ei,this._config.target).map(t=>{const s=e(t),o=s?U.findOne(s):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[F[i](o).top+n,s]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){P.off(this._scrollElement,".bs.scrollspy"),super.dispose()}_getConfig(t){return(t={...Je,...F.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}}).target=o(t.target)||document.documentElement,r("scrollspy",t,ti),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),i=U.findOne(e.join(","),this._config.target);i.classList.add("active"),i.classList.contains("dropdown-item")?U.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"):U.parents(i,".nav, .list-group").forEach(t=>{U.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),U.prev(t,".nav-item").forEach(t=>{U.children(t,".nav-link").forEach(t=>t.classList.add("active"))})}),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){U.find(ei,this._config.target).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){const e=ii.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{U.find('[data-bs-spy="scroll"]').forEach(t=>new ii(t))}),m(ii);class ni extends H{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active"))return;let t;const e=i(this._element),n=this._element.closest(".nav, .list-group");if(n){const e="UL"===n.nodeName||"OL"===n.nodeName?":scope > li > .active":".active";t=U.find(e,n),t=t[t.length-1]}const s=t?P.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==s&&s.defaultPrevented)return;this._activate(this._element,n);const o=()=>{P.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const n=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?U.children(e,".active"):U.find(":scope > li > .active",e))[0],s=i&&n&&n.classList.contains("fade"),o=()=>this._transitionComplete(t,n,i);n&&s?(n.classList.remove("show"),this._queueCallback(o,t,!0)):o()}_transitionComplete(t,e,i){if(e){e.classList.remove("active");const t=U.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d(t),t.classList.contains("fade")&&t.classList.add("show");let n=t.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const e=t.closest(".dropdown");e&&U.find(".dropdown-toggle",e).forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(t){return this.each((function(){const e=ni.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||ni.getOrCreateInstance(this).show()})),m(ni);const si={animation:"boolean",autohide:"boolean",delay:"number"},oi={animation:!0,autohide:!0,delay:5e3};class ri extends H{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return si}static get Default(){return oi}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),d(this._element),this._element.classList.add("show"),this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains("show")&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing"),this._element.classList.remove("show"),P.trigger(this._element,"hidden.bs.toast")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),super.dispose()}_getConfig(t){return t={...oi,...F.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},r("toast",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"mouseout.bs.toast",t=>this._onInteraction(t,!1)),P.on(this._element,"focusin.bs.toast",t=>this._onInteraction(t,!0)),P.on(this._element,"focusout.bs.toast",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ri.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return B(ri),m(ri),{Alert:R,Button:W,Carousel:Z,Collapse:et,Dropdown:Te,Modal:Pe,Offcanvas:He,Popover:Ze,ScrollSpy:ii,Tab:ni,Toast:ri,Tooltip:Xe}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js.map b/docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js.map new file mode 100644 index 00000000..a59a60b8 --- /dev/null +++ b/docs/deps/bootstrap-5.1.0/bootstrap.bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","i","len","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","querySelectorAll","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","getOwnPropertyNames","propertyName","_queueCallback","isAnimated","[object Object]","getInstance","VERSION","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activesData","actives","container","tempActiveData","elemActive","dimension","_getDimension","style","scrollSize","triggerArrayLength","selected","triggerArray","isOpen","bottom","right","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","styles","assign","effect","_ref2","initialStyles","popper","options","strategy","margin","arrow","reference","hasOwnProperty","attribute","requires","getBasePlacement","round","includeScale","scaleX","scaleY","width","offsetWidth","height","x","y","getLayoutRect","clientRect","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","userAgent","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","roundOffsets","_ref3","dpr","devicePixelRatio","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","computeStyles$1","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data-popper-placement","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","listScrollParents","_element$ownerDocumen","getScrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","referenceElement","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_min","_max","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","DEFAULT_OPTIONS","modifiers","areValidElements","_len","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","visited","result","modifier","dep","depModifier","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","Popper","_getPopperConfig","isDisplayStatic","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_saveInitialAttribute","styleProp","scrollbarWidth","_applyManipulationCallback","_resetElementAttributes","actualValue","removeProperty","callBack","isOverflowing","className","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","_resetAdjustments","currentTarget","isModalOverflowing","isBodyOverflowing","paddingLeft","paddingRight","showEvent","Offcanvas","visibility","blur","allReadyOpen","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elName","attributeList","allowedAttributes","innerHTML","DISALLOWED_ATTRIBUTES","animation","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","prefix","floor","random","getElementById","getUID","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","getTitle","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","_handlePopperPlacementChange","_getBasicClassPrefix","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","token","tClass","Popover","_getContent","SELECTOR_LINK_ITEMS","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","spy","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n if (isElement(obj)) { // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight\n}\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback())\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n getElement,\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n getNextActiveElement,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin,\n execute,\n executeAfterTransition\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.0'\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null\n })\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nenableDismissTrigger(Alert, 'close')\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n getNextActiveElement,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n getElementFromSelector,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let actives = []\n let activesData\n\n if (this._config.parent) {\n const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)) // remove children if greater depth\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives.length) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.getOrCreateInstance(elemActive, { toggle: false }).hide()\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !this._isShown(elem)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = SelectorEngine.find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent)\n SelectorEngine.find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem))\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n })\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","import { isHTMLElement } from \"./instanceOf.js\";\nvar round = Math.round;\nexport default function getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (isHTMLElement(element) && includeScale) {\n // Fallback to 1 in case both values are `0`\n scaleX = rect.width / element.offsetWidth || 1;\n scaleY = rect.height / element.offsetHeight || 1;\n }\n\n return {\n width: round(rect.width / scaleX),\n height: round(rect.height / scaleY),\n top: round(rect.top / scaleY),\n right: round(rect.right / scaleX),\n bottom: round(rect.bottom / scaleY),\n left: round(rect.left / scaleX),\n x: round(rect.left / scaleX),\n y: round(rect.top / scaleY)\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n this._createPopper(parent)\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', noop))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', noop))\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper(parent) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i])\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._isShown()) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (event.key === ESCAPE_KEY) {\n instance.hide()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n instance.show()\n }\n\n instance._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack)\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n // Private\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.append(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n activate() {\n const { trapElement, autofocus } = this._config\n\n if (this._isActive) {\n return\n }\n\n if (autofocus) {\n trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n\n _handleFocusin(event) {\n const { target } = event\n const { trapElement } = this._config\n\n if (\n target === document ||\n target === trapElement ||\n trapElement.contains(target)\n ) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n [window, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate()\n }\n\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())\n)\n\nenableDismissTrigger(Offcanvas)\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.remove()\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
    ' +\n '
    ' +\n '
    ' +\n '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = this._resolvePossibleFunction(this._config.customClass)\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop)\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n const tip = element.children[0]\n this.setContent(tip)\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n this.tip = tip\n return this.tip\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n }\n\n _sanitizeAndSetContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!content && templateElement) {\n templateElement.remove()\n return\n }\n\n // we use append for html objects to maintain js events\n this.setElementContent(templateElement, content)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.append(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n return this._resolvePossibleFunction(title)\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(content) {\n return typeof content === 'function' ? content.call(this._element) : content\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '
    ' +\n '
    ' +\n '

    ' +\n '
    ' +\n '
    '\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n }\n\n // Private\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.target = getElement(config.target) || document.documentElement\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = SELECTOR_LINK_ITEMS.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n } else {\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both