β Error occurred:<\/strong><\/p>\",\n \"\", current_error, \"<\/p>\",\n \"
π‘ Need help? Check the Help tab for detailed documentation.<\/p>\",\n \"<\/div>\"\n )))\n }\n \n # Check current state\n has_candidates <- !is.null(input$candidate_file)\n has_pedigree <- !is.null(input$pedigree_file)\n has_kinship_threshold <- !is.null(input$thresh) && input$thresh < 1\n has_traits <- trait_counter() > 0 && any(sapply(1:trait_counter(), function(i) !is.null(input[[paste0(\"trait_file_\", i)]])))\n has_ocs_results <- !is.null(ocs_results_reactive())\n \n # Build step-by-step guide\n steps <- c()\n \n # Step 1: Candidates\n if (has_candidates) {\n steps <- c(steps, \"
β
Step 1:<\/strong> Upload your candidate list to begin the analysis<\/p>\")\n } else {\n steps <- c(steps, \"Step 1:<\/strong> Upload your candidate list to begin the analysis<\/p>\")\n }\n \n # Step 2: Pedigree\n if (has_pedigree) {\n steps <- c(steps, \"β
Step 2:<\/strong> Upload your pedigree file for kinship calculations<\/p>\")\n } else {\n steps <- c(steps, \"Step 2:<\/strong> Upload your pedigree file for kinship calculations<\/p>\")\n }\n \n # Step 3: Kinship threshold\n if (has_pedigree) {\n steps <- c(steps, \"βοΈ Step 3:<\/strong> Set your kinship threshold (optional)<\/p>\")\n } else {\n steps <- c(steps, \"Step 3:<\/strong> Set your kinship threshold (optional)<\/p>\")\n }\n \n # Step 4: Traits\n if (has_traits) {\n steps <- c(steps, \"β
Step 4:<\/strong> Add trait files and weights for breeding value analysis<\/p>\")\n } else {\n steps <- c(steps, \"Step 4:<\/strong> Add trait files and weights for breeding value analysis<\/p>\")\n }\n \n # Step 5: OCS\n if (has_ocs_results) {\n steps <- c(steps, \"β
Step 5:<\/strong> Configure OCS parameters and run analysis<\/p>\")\n } else {\n steps <- c(steps, \"Step 5:<\/strong> Configure OCS parameters and run analysis<\/p>\")\n }\n \n # Add completion message if all steps are done\n if (has_ocs_results) {\n steps <- c(steps, \n \"π Analysis Complete!<\/strong><\/p>\",\n \"Final Step:<\/strong> Export your results using the download button below<\/p>\",\n \"Great job! Results are ready for review and export<\/p>\"\n )\n }\n \n HTML(paste(steps, collapse = \"\"))\n })\n \n observeEvent(input$add_trait, {\n trait_counter(trait_counter() + 1)\n })\n \n observeEvent(input$remove_trait, {\n if (trait_counter() > 1) {\n trait_counter(trait_counter() - 1)\n }\n })\n \n output$trait_inputs <- renderUI({\n create_trait_inputs(trait_counter())\n })\n \n # OCS trait inputs\n output$ocs_trait_inputs <- renderUI({\n req(input$ocs_trait_counter)\n create_ocs_trait_inputs(input$ocs_trait_counter)\n })\n \n candidates_data <- reactive({\n req(input$candidate_file)\n read_candidates(input$candidate_file)\n })\n \n pedigree_data <- reactiveVal(NULL)\n \n observeEvent(input$pedigree_file, {\n req(candidates_data())\n males <- candidates_data()$males\n females <- candidates_data()$females\n \n tryCatch({\n raw_ped <- readr::read_table(input$pedigree_file$datapath)\n final_ped <- clean_pedigree(raw_ped)\n kinship_res <- compute_kinship_matrix(final_ped, males, females)\n \n output$quadrants_table <- DT::renderDT({\n datatable(kinship_res$quads, options = list(ordering = FALSE, dom = \"t\"), rownames = TRUE) %>%\n formatStyle(colnames(kinship_res$quads), styleEqual(\n kinship_res$quads[1, ], c(\"lightgreen\", \"yellow\", \"orange\", \"coral\")\n ))\n })\n \n pedigree_data(list(results = kinship_res$results, quads = kinship_res$quads))\n \n error_message(\"\") # Clear any previous errors\n output$message1 <- renderText(\"β
Kinship matrix generated successfully.\")\n }, error = function(e) {\n error_message(paste0(\"Error processing pedigree: \", e$message))\n output$message1 <- renderText(\n paste0(\"β Error processing pedigree: Make sure your pedigree is clean and valid.\\n\",\n \"Original error: \", e$message)\n )\n })\n })\n \n observe({\n req(candidates_data())\n ebv_res <- process_ebvs(trait_counter(), input)\n req(ebv_res)\n \n joint_ebvs <- ebv_res$joint_ebvs\n rel_weights <- ebv_res$rel_weights\n weight_total <- ebv_res$weight_total\n \n ebv_cols <- paste0(\"EBV.\", seq_along(rel_weights))\n # Ensure EBV columns are numeric for matrix multiplication\n joint_ebvs[ebv_cols] <- lapply(joint_ebvs[ebv_cols], as.numeric)\n joint_ebvs$index_val <- as.vector(as.matrix(joint_ebvs[ebv_cols]) %*% rel_weights)\n \n cands <- candidates_data()$candidates\n males <- candidates_data()$males\n females <- candidates_data()$females\n \n cand_ebv <- left_join(cands, joint_ebvs, by = c(\"id\" = \"ID\")) %>%\n select(id, sex, index_val)\n \n m_ebv <- filter(cand_ebv, id %in% males) %>% select(id, index_val)\n f_ebv <- filter(cand_ebv, id %in% females) %>% select(id, index_val)\n \n ebv_matrix <- outer(m_ebv$index_val, f_ebv$index_val, function(x, y) round((x + y) / 2, 2))\n rownames(ebv_matrix) <- m_ebv$id\n colnames(ebv_matrix) <- f_ebv$id\n \n ebv_quads <- tibble(\n Data = \"EBV\",\n Q25 = quantile(ebv_matrix, 0.25),\n Q50 = quantile(ebv_matrix, 0.50),\n Q75 = quantile(ebv_matrix, 0.75),\n Q100 = quantile(ebv_matrix, 1.00)\n ) %>% column_to_rownames(\"Data\")\n \n quads_combined <- if (!is.null(pedigree_data())) {\n bind_rows(pedigree_data()$quads, ebv_quads)\n } else {\n ebv_quads\n }\n \n output$quadrants_table <- DT::renderDT({\n datatable(quads_combined, options = list(ordering = FALSE, dom = \"t\"), rownames = TRUE) %>%\n formatStyle(\"Q25\", backgroundColor = \"coral\") %>%\n formatStyle(\"Q50\", backgroundColor = \"orange\") %>%\n formatStyle(\"Q75\", backgroundColor = \"yellow\") %>%\n formatStyle(\"Q100\", backgroundColor = \"lightgreen\")\n })\n \n ebv_results <- as_tibble(ebv_matrix, rownames = \"Male\") %>%\n pivot_longer(-Male, names_to = \"Female\", values_to = \"EBV\")\n \n full_results <- if (!is.null(pedigree_data())) {\n left_join(pedigree_data()$results, ebv_results, by = c(\"Female\", \"Male\"))\n } else {\n relocate(mutate(ebv_results, Kinship = NA), Kinship, .after = EBV)\n }\n \n # For table: filter out crosses with EBV <=0 or kinship >= threshold\n filt_results_table <- full_results %>%\n filter(EBV > 0, (is.na(Kinship) | Kinship < input$thresh))\n \n # For Excel: mask EBVs for invalid crosses as NA (blank in Excel)\n filt_results_matrix <- full_results %>%\n mutate(EBV = ifelse(EBV <= 0 | (!is.na(Kinship) & Kinship >= input$thresh), NA, EBV))\n \n # Store results for download handler\n ebv_results_reactive(list(\n filt_results_table = filt_results_table,\n filt_results_matrix = filt_results_matrix,\n full_results = full_results,\n ebv_quads = ebv_quads\n ))\n \n output$matrix <- DT::renderDT({\n datatable(filt_results_table, rownames = TRUE) %>%\n formatStyle(\"EBV\", styleInterval(\n unlist(ebv_quads[1, c(\"Q25\", \"Q50\", \"Q75\")]),\n c(\"coral\", \"orange\", \"yellow\", \"lightgreen\")\n ))\n })\n \n output$message2 <- renderText(\n if (abs(weight_total - 1) > 1e-6)\n paste(\"β οΈ Warning: Trait weights do not sum to 1 (total =\", round(weight_total, 4), \")\")\n else\n \"β
EBV matrix generated successfully.\"\n )\n \n output$download_all_results <- downloadHandler(\n filename = function() {\n paste0(\"AlloMate_Complete_Results-\", Sys.Date(), \".xlsx\")\n },\n content = function(file) {\n wb <- openxlsx::createWorkbook()\n \n # Add comprehensive README worksheet\n openxlsx::addWorksheet(wb, \"README\")\n readme_text <- c(\n \"π AlloMate Complete Results Report\",\n \"\",\n \"This Excel file contains all results from your AlloMate analysis:\",\n \"\",\n \"π Worksheets included:\",\n \"1. README - This overview and explanation\",\n \"2. Filtered Results - Crosses meeting criteria (positive EBVs, kinship below threshold)\",\n \"3. EBV Matrix - Complete matrix view with masked values\",\n \"4. OCS Candidates - Selected candidates from Optimum Contribution Selection\",\n \"5. Mating Plan - Recommended mating pairs from OCS\",\n \"6. Parameters - Analysis parameters used\",\n \"\",\n \"π Data Details:\",\n \"- Filtered Results: Only crosses with positive EBVs and kinship below threshold\",\n \"- EBV Matrix: All possible crosses with values masked for failed criteria\",\n \"- OCS Results: Available only after running Optimum Contribution Selection\",\n \"\",\n \"π
Generated on:\", as.character(Sys.Date())\n )\n openxlsx::writeData(wb, \"README\", readme_text)\n \n # Add kinship/EBV results if available\n ebv_results <- ebv_results_reactive()\n if (!is.null(ebv_results)) {\n openxlsx::addWorksheet(wb, \"Filtered Results\")\n openxlsx::writeData(wb, \"Filtered Results\", ebv_results$filt_results_table, rowNames = TRUE)\n \n openxlsx::addWorksheet(wb, \"EBV Matrix\")\n m_ids <- unique(ebv_results$full_results$Male)\n f_ids <- unique(ebv_results$full_results$Female)\n mat_for_excel <- matrix(NA_real_, nrow = length(m_ids), ncol = length(f_ids),\n dimnames = list(m_ids, f_ids))\n \n for (i in seq_len(nrow(ebv_results$filt_results_matrix))) {\n m <- ebv_results$filt_results_matrix$Male[i]\n f <- ebv_results$filt_results_matrix$Female[i]\n val <- ebv_results$filt_results_matrix$EBV[i]\n mat_for_excel[m, f] <- val\n }\n openxlsx::writeData(wb, \"EBV Matrix\", mat_for_excel, rowNames = TRUE)\n }\n \n # Add OCS results if available\n if (exists(\"ocs_results_reactive\") && !is.null(ocs_results_reactive())) {\n results <- ocs_results_reactive()\n formatted_results <- format_ocs_results(results)\n \n openxlsx::addWorksheet(wb, \"OCS Candidates\")\n openxlsx::writeData(wb, \"OCS Candidates\", formatted_results$candidate_table, rowNames = FALSE)\n \n openxlsx::addWorksheet(wb, \"Mating Plan\")\n openxlsx::writeData(wb, \"Mating Plan\", formatted_results$mating_table, rowNames = FALSE)\n }\n \n # Add parameters worksheet\n openxlsx::addWorksheet(wb, \"Parameters\")\n params_data <- data.frame(\n Parameter = c(\"Kinship Threshold\", \"Desired Inbreeding Rate\", \"Number of Offspring\", \"Analysis Date\"),\n Value = c(\n as.character(input$thresh),\n as.character(input$inbreeding_rate),\n as.character(input$num_offspring),\n as.character(Sys.Date())\n )\n )\n openxlsx::writeData(wb, \"Parameters\", params_data, rowNames = FALSE)\n \n openxlsx::saveWorkbook(wb, file, overwrite = TRUE)\n }\n )\n })\n \n #### OCS Server Logic ####\n \n observeEvent(input$run_ocs_btn, {\n req(input$pedigree_file, input$candidate_file)\n \n # Check if any OCS implementation is available (optiSel or custom fallback)\n if ((!exists(\"optisel_available\") || !optisel_available) && \n (!exists(\"custom_ocs_available\") || !custom_ocs_available)) {\n showModal(modalDialog(\n title = \"OCS Functionality Not Available\",\n \"Neither optiSel nor the custom OCS fallback could be loaded. \n Please check that all required packages are installed and restart the app.\",\n easyClose = TRUE\n ))\n return(NULL)\n }\n \n tryCatch({\n ped_data <- read.table(input$pedigree_file$datapath, header = TRUE)\n candidates <- read.table(input$candidate_file$datapath, header = TRUE)\n \n final_ped <- clean_pedigree(ped_data)\n kinship_matrix <- if (exists(\"kinship2_available\") && kinship2_available) {\n kinship2::kinship(final_ped)\n } else {\n fallback_kinship(final_ped)\n }\n \n ebv_result <- process_ebvs(trait_counter(), input)\n if (is.null(ebv_result) || abs(ebv_result$weight_total - 1) > 1e-6) {\n showModal(modalDialog(\n title = \"Invalid Weights\",\n \"Weights must sum to 1.\",\n easyClose = TRUE\n ))\n return(NULL)\n }\n \n joint_ebvs <- calculate_index(ebv_result$joint_ebvs, ebv_result$rel_weights)\n candidates <- left_join(candidates, joint_ebvs, by = c(\"id\" = \"ID\"))\n \n results <- run_ocs(\n candidates_df = candidates,\n kinship_matrix = kinship_matrix,\n ebv_index = candidates$index_val,\n desired_inbreeding_rate = input$inbreeding_rate,\n num_offspring = input$num_offspring\n )\n \n ocs_results_reactive(results)\n \n error_message(\"\") # Clear any previous errors\n \n # Format results for display\n formatted_results <- format_ocs_results(results)\n \n output$ocs_candidate_table <- DT::renderDT({\n formatted_results$candidate_table\n })\n \n # Switch to OCS tab to show results\n updateTabsetPanel(session, \"main_tabs\", selected = \"Optimum Contribution Selection\")\n \n }, error = function(e) {\n error_message(paste0(\"Error running OCS: \", e$message))\n showModal(modalDialog(\n title = \"Error\",\n paste(\"β Error running OCS:\", e$message),\n easyClose = TRUE\n ))\n })\n })\n \n output$ocs_mating_table <- DT::renderDT({\n req(ocs_results_reactive())\n results <- ocs_results_reactive()\n formatted_results <- format_ocs_results(results)\n formatted_results$mating_table %>%\n datatable(\n options = list(pageLength = 10, autoWidth = TRUE),\n rownames = FALSE\n )\n })\n \n #### R Code Display and Download ####\n \n # HTML escape function for code display\n htmlEscape <- function(text) {\n text <- gsub(\"&\", \"&\", text)\n text <- gsub(\"<\", \"<\", text)\n text <- gsub(\">\", \">\", text)\n text <- gsub('\"', \""\", text)\n text <- gsub(\"'\", \"'\", text)\n return(text)\n }\n \n # Function to read and format R code files\n format_r_code_content <- function() {\n # Define the R files to include\n r_files <- c(\n \"global.R\" = \"Global Setup and Package Loading\",\n \"R/load_functions.R\" = \"Function Loading Logic\", \n \"R/utils.R\" = \"Data Processing Functions\",\n \"R/ocs_helpers.R\" = \"OCS Calculation Functions\",\n \"R/ui_helpers.R\" = \"UI Helper Functions\",\n \"R/optsel_fallback.R\" = \"Custom OCS Implementation\"\n )\n \n # Determine the base path\n base_path <- if (app_dir) \".\" else \"app\"\n \n # Read and format each file\n formatted_sections <- list()\n \n for (file_path in names(r_files)) {\n full_path <- file.path(base_path, file_path)\n \n if (file.exists(full_path)) {\n tryCatch({\n file_content <- readLines(full_path, warn = FALSE, encoding = \"UTF-8\")\n file_content <- paste(file_content, collapse = \"\\n\")\n \n # Create formatted section\n section_html <- paste0(\n '
',\n '
π ', r_files[file_path], '<\/h4>',\n '',\n '
File:<\/strong> ', file_path, ' ',\n 'Lines:<\/strong> ', length(strsplit(file_content, \"\\n\")[[1]]), ' ',\n 'Description:<\/strong> ', r_files[file_path],\n '<\/div>',\n '', \n htmlEscape(file_content),\n '<\/code><\/pre>',\n '<\/div>'\n )\n \n formatted_sections[[file_path]] <- section_html\n }, error = function(e) {\n formatted_sections[[file_path]] <- paste0(\n '',\n '
β Error reading file<\/h4>',\n ' Could not read file: ', file_path, '<\/p>',\n '
Error: ', e$message, '<\/p>',\n '<\/div>'\n )\n })\n } else {\n formatted_sections[[file_path]] <- paste0(\n '
',\n '
β File not found<\/h4>',\n ' File not found: ', file_path, '<\/p>',\n '<\/div>'\n )\n }\n }\n \n # Create setup instructions\n setup_instructions <- paste0(\n '
',\n '
π Setup Instructions<\/h4>',\n ' To run this analysis independently in R:<\/strong><\/p>',\n '',\n 'Install required packages:<\/strong> ',\n 'install.packages(c(\"tidyverse\", \"shiny\", \"DT\", \"openxlsx\", \"quadprog\", \"kinship2\", \"optiSel\"))<\/code><\/li>',\n 'Load the code files:<\/strong> Copy the code sections above into separate .R files<\/li>',\n 'Prepare your data:<\/strong> Ensure your input files match the expected format<\/li>',\n 'Run the analysis:<\/strong> Execute the functions in the order shown above<\/li>',\n '<\/ol>',\n 'Note:<\/strong> The custom OCS fallback will be used if optiSel is not available.<\/p>',\n '<\/div>'\n )\n \n # Combine all sections\n full_content <- paste0(\n '',\n '
𧬠AlloMate R Code Implementation<\/h1>',\n ' This page contains all the R code needed to implement the AlloMate analysis independently. ',\n 'The code is organized by function and includes all necessary data processing, kinship calculations, ',\n 'and optimum contribution selection algorithms.<\/p>',\n setup_instructions,\n paste(formatted_sections, collapse = \"\"),\n '<\/div>'\n )\n \n return(full_content)\n }\n \n # Render R code content\n output$r_code_content <- renderUI({\n HTML(format_r_code_content())\n })\n \n # Download R code functionality\n output$download_r_code <- downloadHandler(\n filename = function() {\n paste0(\"allomate_complete_script_\", format(Sys.Date(), \"%Y%m%d\"), \".R\")\n },\n content = function(file) {\n # Define the R files to include\n r_files <- c(\n \"global.R\" = \"# Global Setup and Package Loading\",\n \"R/load_functions.R\" = \"# Function Loading Logic\", \n \"R/utils.R\" = \"# Data Processing Functions\",\n \"R/ocs_helpers.R\" = \"# OCS Calculation Functions\",\n \"R/ui_helpers.R\" = \"# UI Helper Functions\",\n \"R/optsel_fallback.R\" = \"# Custom OCS Implementation\"\n )\n \n # Determine the base path\n base_path <- if (app_dir) \".\" else \"app\"\n \n # Create the complete script\n script_lines <- c(\n \"# AlloMate Complete R Script\",\n \"# Generated on:\", as.character(Sys.Date()),\n \"# This script contains all functions needed to run AlloMate analysis independently\",\n \"\",\n \"# =============================================================================\",\n \"# SETUP INSTRUCTIONS\",\n \"# =============================================================================\",\n \"# 1. Install required packages:\",\n \"# install.packages(c('tidyverse', 'shiny', 'DT', 'openxlsx', 'quadprog', 'kinship2', 'optiSel'))\",\n \"# 2. Load required libraries:\",\n \"# library(tidyverse)\",\n \"# library(openxlsx)\",\n \"# library(quadprog)\",\n \"# library(kinship2)\",\n \"# library(optiSel)\",\n \"# 3. Run this script to load all functions\",\n \"# 4. Use the functions as demonstrated in the comments\",\n \"\",\n \"# =============================================================================\",\n \"# FUNCTION DEFINITIONS\",\n \"# =============================================================================\",\n \"\"\n )\n \n for (file_path in names(r_files)) {\n full_path <- file.path(base_path, file_path)\n \n if (file.exists(full_path)) {\n tryCatch({\n file_content <- readLines(full_path, warn = FALSE, encoding = \"UTF-8\")\n \n # Add section header\n script_lines <- c(script_lines, \n paste0(\"# \", \"=\", strrep(\"=\", 70)),\n r_files[file_path],\n paste0(\"# \", \"=\", strrep(\"=\", 70)),\n \"\",\n file_content,\n \"\",\n \"\"\n )\n }, error = function(e) {\n script_lines <- c(script_lines,\n paste0(\"# Error reading file: \", file_path),\n paste0(\"# \", e$message),\n \"\",\n \"\"\n )\n })\n } else {\n script_lines <- c(script_lines,\n paste0(\"# File not found: \", file_path),\n \"\",\n \"\"\n )\n }\n }\n \n # Add usage example\n script_lines <- c(script_lines,\n \"# =============================================================================\",\n \"# USAGE EXAMPLE\",\n \"# =============================================================================\",\n \"# \",\n \"# # Load your data\",\n \"# candidates <- read.table('your_candidates.txt', header = TRUE)\",\n \"# pedigree <- read.table('your_pedigree.txt', header = TRUE)\",\n \"# \",\n \"# # Process data\",\n \"# candidates_data <- read_candidates(list(datapath = 'your_candidates.txt'))\",\n \"# final_ped <- clean_pedigree(pedigree)\",\n \"# kinship_matrix <- compute_kinship_matrix(final_ped, candidates_data$males, candidates_data$females)\",\n \"# \",\n \"# # Run OCS analysis\",\n \"# results <- run_ocs(candidates_df = candidates, kinship_matrix = kinship_matrix$results,\",\n \"# ebv_index = your_ebv_values, desired_inbreeding_rate = 0.05, num_offspring = 100)\",\n \"# \",\n \"# # View results\",\n \"# print(results)\",\n \"\"\n )\n \n # Write to file\n writeLines(script_lines, file)\n }\n )\n \n\n}","type":"text"},{"name":"ui.R","content":"library(shiny)\nlibrary(shinyjs)\nlibrary(DT)\n\nui <- function(request) {\n fluidPage(\n useShinyjs(), # enables shinyjs functions\n \n # Custom CSS for better help content styling\n tags$head(\n tags$style(HTML(\"\n .help-content h1 {\n color: #2c3e50;\n border-bottom: 3px solid #3498db;\n padding-bottom: 10px;\n margin-top: 30px;\n margin-bottom: 20px;\n }\n \n .help-content h2 {\n color: #34495e;\n border-left: 4px solid #3498db;\n padding-left: 15px;\n margin-top: 25px;\n margin-bottom: 15px;\n }\n \n .help-content h3 {\n color: #2c3e50;\n margin-top: 20px;\n margin-bottom: 10px;\n }\n \n .help-content h4, .help-content h5, .help-content h6 {\n color: #34495e;\n margin-top: 15px;\n margin-bottom: 8px;\n }\n \n .help-content p {\n margin-bottom: 12px;\n text-align: justify;\n }\n \n .help-content ul, .help-content ol {\n margin-bottom: 15px;\n padding-left: 25px;\n }\n \n .help-content li {\n margin-bottom: 5px;\n }\n \n .help-content code {\n background-color: #f8f9fa;\n color: #e74c3c;\n padding: 2px 6px;\n border-radius: 3px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n }\n \n .help-content pre {\n background-color: #2c3e50;\n color: #ecf0f1;\n padding: 15px;\n border-radius: 5px;\n overflow-x: auto;\n margin: 15px 0;\n }\n \n .help-content pre code {\n background-color: transparent;\n color: inherit;\n padding: 0;\n }\n \n .help-content a {\n color: #3498db;\n text-decoration: none;\n border-bottom: 1px solid transparent;\n transition: border-bottom 0.3s ease;\n }\n \n .help-content a:hover {\n border-bottom: 1px solid #3498db;\n }\n \n .help-content hr {\n border: none;\n border-top: 2px solid #bdc3c7;\n margin: 25px 0;\n }\n \n .help-content blockquote {\n border-left: 4px solid #3498db;\n padding-left: 15px;\n margin: 15px 0;\n font-style: italic;\n color: #7f8c8d;\n }\n \n .help-content .emoji {\n font-size: 1.2em;\n margin-right: 5px;\n }\n \n .toc-container {\n background-color: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 8px;\n padding: 20px;\n margin-bottom: 25px;\n }\n \n .toc-container h3 {\n margin-top: 0;\n color: #495057;\n border-bottom: 2px solid #007bff;\n padding-bottom: 10px;\n }\n \n .toc-link {\n color: #495057;\n text-decoration: none;\n display: block;\n padding: 3px 0;\n transition: color 0.3s ease;\n }\n \n .toc-link:hover {\n color: #007bff;\n text-decoration: underline;\n }\n \n .help-content {\n scroll-behavior: smooth;\n }\n \n .r-code-content h1 {\n color: #2c3e50;\n border-bottom: 3px solid #3498db;\n padding-bottom: 10px;\n margin-top: 30px;\n margin-bottom: 20px;\n }\n \n .r-code-content h2 {\n color: #34495e;\n border-left: 4px solid #3498db;\n padding-left: 15px;\n margin-top: 25px;\n margin-bottom: 15px;\n }\n \n .r-code-content h3 {\n color: #2c3e50;\n margin-top: 20px;\n margin-bottom: 10px;\n }\n \n .r-code-content .code-section {\n background-color: #f8f9fa;\n border: 1px solid #dee2e6;\n border-radius: 8px;\n padding: 20px;\n margin: 15px 0;\n }\n \n .r-code-content .code-section h4 {\n color: #495057;\n margin-top: 0;\n margin-bottom: 15px;\n border-bottom: 1px solid #dee2e6;\n padding-bottom: 8px;\n }\n \n .r-code-content pre {\n background-color: #2c3e50;\n color: #ecf0f1;\n padding: 15px;\n border-radius: 5px;\n overflow-x: auto;\n margin: 10px 0;\n font-size: 12px;\n line-height: 1.4;\n }\n \n .r-code-content pre code {\n background-color: transparent;\n color: inherit;\n padding: 0;\n }\n \n .r-code-content .file-info {\n background-color: #e3f2fd;\n border: 1px solid #2196f3;\n padding: 10px;\n border-radius: 5px;\n margin-bottom: 15px;\n font-size: 12px;\n }\n \n .r-code-content .setup-instructions {\n background-color: #fff3cd;\n border: 1px solid #ffeaa7;\n padding: 15px;\n border-radius: 5px;\n margin: 20px 0;\n }\n \n .r-code-content .setup-instructions h4 {\n color: #856404;\n margin-top: 0;\n }\n \n .r-code-content .setup-instructions ul {\n margin-bottom: 0;\n }\n \"))\n ),\n \n # JavaScript for smooth scrolling and TOC functionality\n tags$script(HTML(\"\n $(document).ready(function() {\n // Smooth scrolling for TOC links\n $('.toc-link').on('click', function(e) {\n e.preventDefault();\n var target = $(this).attr('href');\n var $target = $(target);\n if ($target.length) {\n $('.help-content').animate({\n scrollTop: $target.offset().top - 100\n }, 800);\n }\n });\n });\n \")),\n \n ## βββ Flex container with banner and AlloMate hex βββββββββββββββββββββββββββ\n div(\n style = \"display: flex; align-items: center; justify-content: space-between; margin-bottom: 15px;\",\n \n # AlloMate hex (right)\n tags$img(\n src = \"allomate.png\",\n height = \"120px\",\n style = \"margin-left: 20px;\"\n ),\n \n # Logos banner (left)\n tags$img(\n src = \"logos.png\",\n style = \"width: 70%; height: auto;\"\n )\n ),\n \n sidebarLayout(\n sidebarPanel(\n \n # Dynamic startup guide and feedback\n div(\n id = \"startup_guide\",\n style = \"background-color: #ffffff; border: 1px solid #dee2e6; padding: 10px; margin-bottom: 15px; border-radius: 5px;\",\n h4(\"π Getting Started\"),\n htmlOutput(\"dynamic_guide\"),\n verbatimTextOutput(\"package_status_text\"),\n conditionalPanel(\n condition = \"output.webr_detected\",\n div(\n style = \"background-color: #fff3cd; border: 1px solid #ffeaa7; padding: 8px; margin-top: 10px; border-radius: 3px;\",\n p(\"π WebR environment detected. Custom OCS fallback will be used since optiSel is not available in WebR.\")\n )\n ),\n div(\n style = \"text-align: center; margin-top: 15px; padding-top: 10px; border-top: 1px solid #dee2e6;\",\n actionButton(\"help_btn\", \"β Help\", \n style = \"background-color: #007bff; color: white; border: none; padding: 8px 16px; border-radius: 5px;\")\n )\n ),\n \n wellPanel(\n style = \"background-color: #e3f2fd; border: 2px solid #2196f3; padding: 15px; margin-bottom: 20px; border-radius: 8px;\",\n h4(\"𧬠Core Data Inputs\", style = \"color: #1565c0; margin-bottom: 15px; border-bottom: 1px solid #2196f3; padding-bottom: 8px;\"),\n p(\"These inputs are used by both Index Generation and OCS calculations:\", style = \"color: #6c757d; font-size: 12px; margin-bottom: 15px;\"),\n \n h5(\"Estimate progeny genetic merit\"),\n \n fileInput(\"candidate_file\", \"Upload list of candidates\",\n accept = c(\".csv\", \".txt\")),\n \n h5(\"Calculate kinship matrix\"),\n fileInput(\"pedigree_file\", \"Upload pedigree file\", accept = \".txt\"),\n \n h5(\"Set kinship threshold\"),\n numericInput(\"thresh\", \"Max kinship allowed between mates:\",\n value = 1, min = 0, max = 1, step = 0.1),\n ),\n \n wellPanel(\n style = \"background-color: #ffebee; border: 2px solid #f44336; padding: 15px; margin-bottom: 20px; border-radius: 8px;\",\n h4(\"βοΈ Weighted EBVs\", style = \"color: #c62828; margin-bottom: 15px; border-bottom: 1px solid #f44336; padding-bottom: 8px;\"),\n p(\"Define traits and their relative importance for breeding decisions:\", style = \"color: #6c757d; font-size: 12px; margin-bottom: 15px;\"),\n \n h5(\"Traits (EBVs and weights)\"),\n uiOutput(\"trait_inputs\"),\n \n fluidRow(\n column(6, actionButton(\"add_trait\", \"β Add trait\")),\n column(6, actionButton(\"remove_trait\", \"β Remove trait\"))\n ),\n p(\"π‘ Note: Adding or removing traits will require re-uploading files.\", \n style = \"color: #6c757d; font-size: 11px; font-style: italic; margin-top: 8px;\"),\n ),\n \n wellPanel(\n style = \"background-color: #fff3cd; border: 2px solid #ffeaa7; padding: 15px; margin-bottom: 20px; border-radius: 8px;\",\n h4(\"π― Optimum Contribution Selection\", style = \"color: #856404; margin-bottom: 15px; border-bottom: 1px solid #ffeaa7; padding-bottom: 8px;\"),\n p(\"Configure breeding objectives and constraints:\", style = \"color: #6c757d; font-size: 12px; margin-bottom: 15px;\"),\n \n h5(\"Breeding Objectives\"),\n numericInput(\"inbreeding_rate\", \"Desired Inbreeding Rate\", \n value = 0.05, min = 0.01, max = 0.2, step = 0.01),\n numericInput(\"num_offspring\", \"Number of Offspring\", \n value = 100, min = 10, step = 1),\n \n actionButton(\"run_ocs_btn\", \"Run OCS\", \n style = \"margin-top: 15px; width: 100%; background-color: #856404; color: white; border: none; padding: 10px; border-radius: 5px;\")\n ),\n \n wellPanel(\n style = \"background-color: #d4edda; border: 2px solid #c3e6cb; padding: 15px; margin-bottom: 20px; border-radius: 8px;\",\n h4(\"π Export Results\", style = \"color: #155724; margin-bottom: 15px; border-bottom: 1px solid #c3e6cb; padding-bottom: 8px;\"),\n p(\"Download all results in a single Excel file with multiple tabs:\", style = \"color: #6c757d; font-size: 12px; margin-bottom: 15px;\"),\n downloadButton(\"download_all_results\", \"π₯ Export All Results\", \n style = \"width: 100%; background-color: #28a745; color: white; border: none; padding: 10px; border-radius: 5px; margin-bottom: 10px;\"),\n actionButton(\"view_r_code_btn\", \"π View R Code\", \n style = \"width: 100%; background-color: #17a2b8; color: white; border: none; padding: 10px; border-radius: 5px;\")\n )\n ),\n mainPanel(\n tabsetPanel(\n id = \"main_tabs\",\n tabPanel(\"Kinship and EBV\",\n verbatimTextOutput(\"message1\"),\n \n verbatimTextOutput(\"message2\"),\n \n DTOutput(\"quadrants_table\"),\n DTOutput(\"matrix\")\n ),\n tabPanel(\"Optimum Contribution Selection\",\n DTOutput(\"ocs_candidate_table\"),\n br(),\n DTOutput(\"ocs_mating_table\")\n ),\n tabPanel(\"R Code\",\n div(\n style = \"padding: 20px; background-color: #f8f9fa; border-radius: 8px; margin: 10px 0; max-height: 80vh; overflow-y: auto; position: relative;\",\n div(\n style = \"background-color: white; padding: 25px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);\",\n div(\n style = \"text-align: center; margin-bottom: 25px; padding-bottom: 15px; border-bottom: 2px solid #007bff;\",\n h2(\"π R Code Implementation\", style = \"color: #007bff; margin-bottom: 10px;\"),\n p(\"Complete R code for implementing AlloMate analysis independently\", style = \"color: #666; font-size: 16px;\")\n ),\n div(\n style = \"text-align: center; margin-bottom: 20px;\",\n downloadButton(\"download_r_code\", \"π₯ Download Complete R Script\", \n style = \"background-color: #28a745; color: white; border: none; padding: 12px 24px; border-radius: 5px; font-size: 14px;\")\n ),\n div(\n style = \"line-height: 1.6; font-size: 14px;\",\n htmlOutput(\"r_code_content\")\n )\n )\n )\n ),\n tabPanel(\"Help\",\n div(\n style = \"padding: 20px; background-color: #f8f9fa; border-radius: 8px; margin: 10px 0; max-height: 80vh; overflow-y: auto; position: relative;\",\n div(\n style = \"background-color: white; padding: 25px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);\",\n div(\n style = \"text-align: center; margin-bottom: 25px; padding-bottom: 15px; border-bottom: 2px solid #007bff;\",\n h2(\"π AlloMate Documentation\", style = \"color: #007bff; margin-bottom: 10px;\"),\n p(\"Complete user guide and technical documentation\", style = \"color: #666; font-size: 16px;\")\n ),\n div(\n style = \"line-height: 1.6; font-size: 14px;\",\n htmlOutput(\"help_content\")\n ),\n div(\n style = \"text-align: center; margin-top: 30px; padding-top: 20px; border-top: 1px solid #dee2e6;\",\n actionButton(\"back_to_top\", \"β¬οΈ Back to Top\", \n style = \"background-color: #6c757d; color: white; border: none; padding: 8px 16px; border-radius: 5px;\")\n )\n )\n )\n )\n )\n )\n )\n )\n}","type":"text"},{"name":"R/load_functions.R","content":"# Load All Functions\n# This file sources all function files in the correct order\n\n# Initialize variables if they don't exist (for standalone usage)\nif (!exists(\"optisel_available\")) {\n optisel_available <<- FALSE\n}\nif (!exists(\"kinship2_available\")) {\n kinship2_available <<- FALSE\n}\n\n# Use the global app_dir variable set in global.R, or determine it if not available\nif (exists(\"app_dir\")) {\n # Use existing app_dir variable\n} else {\n # Check if we're in the app directory or project root\n if (dir.exists(\"R\") && dir.exists(\"www\")) {\n app_dir <- TRUE\n } else if (dir.exists(\"app\") && dir.exists(\"scripts\")) {\n app_dir <- FALSE\n } else {\n app_dir <- FALSE\n }\n}\n\n# Check if we're in a Shiny server environment\nis_shiny_server <- grepl(\"^/home/web_user/\", getwd()) || grepl(\"^/tmp/\", getwd()) || grepl(\"^/var/folders/\", getwd())\n\n# Load utility functions (data processing, file handling)\nif (app_dir) {\n source(\"R/utils.R\")\n} else {\n source(\"app/R/utils.R\")\n}\n\n# Load OCS helper functions\nif (app_dir) {\n source(\"R/ocs_helpers.R\")\n} else {\n source(\"app/R/ocs_helpers.R\")\n}\n\n# Load UI helper functions\nif (app_dir) {\n source(\"R/ui_helpers.R\")\n} else {\n source(\"app/R/ui_helpers.R\")\n}\n\n# Load custom OCS fallback (if not already loaded)\nif (!exists(\"custom_candes\")) {\n if (is_shiny_server) {\n # In Shiny server environment, look for fallback in R directory\n fallback_path <- \"R/optsel_fallback.R\"\n } else {\n # Normal environment\n if (app_dir) {\n fallback_path <- \"R/optsel_fallback.R\"\n } else {\n fallback_path <- \"scripts/optsel_fallback.R\"\n }\n }\n \n if (file.exists(fallback_path)) {\n source(fallback_path)\n \n # Verify that the fallback functions were loaded\n if (exists(\"custom_candes\") && exists(\"custom_opticont\") && exists(\"custom_noffspring\") && exists(\"custom_matings\")) {\n # Set the flag to indicate fallback is available\n custom_ocs_available <<- TRUE\n \n # Only create function aliases if optiSel is not available\n # (optiSel functions are locked bindings and cannot be overwritten)\n if (!exists(\"optisel_available\") || !optisel_available) {\n candes <<- custom_candes\n opticont <<- custom_opticont\n noffspring <<- custom_noffspring\n matings <<- custom_matings\n }\n }\n }\n} else {\n # If functions already exist, make sure the flag is set and create aliases\n if (exists(\"custom_candes\") && exists(\"custom_opticont\") && exists(\"custom_noffspring\") && exists(\"custom_matings\")) {\n custom_ocs_available <<- TRUE\n \n # Only create function aliases if optiSel is not available\n # (optiSel functions are locked bindings and cannot be overwritten)\n if (!exists(\"optisel_available\") || !optisel_available) {\n candes <<- custom_candes\n opticont <<- custom_opticont\n noffspring <<- custom_noffspring\n matings <<- custom_matings\n }\n }\n}\n\n\n","type":"text"},{"name":"R/ocs_helpers.R","content":"# OCS (Optimum Contribution Selection) Functions\n# Functions for running OCS analysis with either optiSel or custom fallback\n\n#' Run OCS analysis with unified interface\n#' @param candidates_df Candidates data frame with id, sex, and index_val columns\n#' @param kinship_matrix Kinship matrix for all individuals\n#' @param ebv_index Vector of breeding value indices\n#' @param desired_inbreeding_rate Target inbreeding rate constraint\n#' @param num_offspring Number of offspring to allocate\n#' @return List with Candidate and Mating results\nrun_ocs <- function(candidates_df, kinship_matrix, ebv_index, desired_inbreeding_rate, num_offspring) {\n # Check if OCS functions are available (either optiSel or custom fallback)\n if (!exists(\"candes\") || !exists(\"opticont\") || !exists(\"noffspring\") || !exists(\"matings\")) {\n stop(\"β OCS functions are not available. Neither optiSel nor custom fallback could be loaded.\")\n }\n \n # Check if we're using custom fallback\n using_fallback <- exists(\"custom_ocs_available\") && custom_ocs_available && !optisel_available\n \n phen <- data.frame(\n Indiv = candidates_df$id,\n Sex = ifelse(candidates_df$sex == \"M\", \"male\", \"female\"),\n BV = ebv_index,\n isCandidate = TRUE,\n stringsAsFactors = FALSE\n )\n candidate_ids <- candidates_df$id\n sKin <- kinship_matrix[candidate_ids, candidate_ids]\n rownames(sKin) <- candidate_ids\n colnames(sKin) <- candidate_ids\n \n cand <- candes(phen = phen, pKin = sKin)\n con <- list(ub.pKin = desired_inbreeding_rate)\n Offspring <- opticont(method = \"max.BV\", cand = cand, con = con)\n \n # Check if solution is valid (only needed for real optiSel package)\n if (exists(\"optisel_available\") && optisel_available && \"summary\" %in% names(Offspring)) {\n # Check if any constraints failed (OK = FALSE)\n failed_constraints <- Offspring$summary[Offspring$summary$OK == FALSE & !is.na(Offspring$summary$OK), ]\n if (nrow(failed_constraints) > 0) {\n constraint_names <- paste(failed_constraints$Name, collapse = \", \")\n stop(paste(\"β OCS optimization failed: Constraints not met:\", constraint_names,\n \"Try increasing the inbreeding rate threshold or check your kinship matrix.\"))\n }\n }\n \n # Guard against empty or invalid solution (infeasible constraint)\n # Check BEFORE extracting columns to catch all edge cases\n if (is.null(Offspring$parent) || nrow(Offspring$parent) == 0) {\n stop(paste0(\"β No feasible OCS solution found under the current inbreeding constraint (ub.pKin = \", \n desired_inbreeding_rate, \"). \",\n \"This typically means your candidate population is too closely related to meet this target. \",\n \"Try increasing the inbreeding rate threshold (e.g., 0.10 or higher) or reducing the number of offspring.\"))\n }\n \n Candidate <- Offspring$parent[, c(\"Indiv\", \"Sex\", \"oc\")]\n \n # Additional check: verify non-zero contributions\n if (nrow(Candidate) == 0 || all(Candidate$oc == 0)) {\n stop(paste0(\"β No feasible OCS solution found under the current inbreeding constraint (ub.pKin = \", \n desired_inbreeding_rate, \"). \",\n \"This typically means your candidate population is too closely related to meet this target. \",\n \"Try increasing the inbreeding rate threshold (e.g., 0.10 or higher) or reducing the number of offspring.\"))\n }\n \n # Safe to call noffspring now that Candidate has valid data\n Candidate$n <- noffspring(Candidate, num_offspring)$nOff\n Candidate <- filter(Candidate, n > 0)\n if (length(unique(Candidate$Sex)) < 2) {\n stop(\"β OCS resulted in only one sex being selected. Cannot generate mating pairs.\")\n }\n \n # For real optiSel package, subset kinship matrix to match selected candidates\n if (exists(\"optisel_available\") && optisel_available) {\n selected_ids <- Candidate$Indiv\n sKin_subset <- sKin[selected_ids, selected_ids]\n # optiSel matings function expects the Candidate data frame, not phenotype data\n Mating <- matings(Candidate, Kin = sKin_subset)\n \n # optiSel doesn't include kinship values in mating results, so add them manually\n if (nrow(Mating) > 0 && !\"Kin\" %in% names(Mating)) {\n kinship_values <- numeric(nrow(Mating))\n for (i in seq_len(nrow(Mating))) {\n sire <- Mating$Sire[i]\n dam <- Mating$Dam[i]\n # Use the full kinship matrix since we have original IDs\n kinship_values[i] <- sKin[sire, dam]\n }\n Mating$Kin <- kinship_values\n }\n } else {\n # Custom fallback already handles this correctly\n Mating <- matings(Candidate, Kin = sKin)\n }\n list(Candidate = Candidate, Mating = Mating)\n}\n\n#' Validate OCS inputs before running analysis\n#' @param candidates_df Candidates data frame\n#' @param kinship_matrix Kinship matrix\n#' @param ebv_index Breeding value indices\n#' @param desired_inbreeding_rate Target inbreeding rate\n#' @param num_offspring Number of offspring\n#' @return TRUE if valid, throws error if invalid\nvalidate_ocs_inputs <- function(candidates_df, kinship_matrix, ebv_index, \n desired_inbreeding_rate, num_offspring) {\n # Check candidates data\n if (is.null(candidates_df) || nrow(candidates_df) == 0) {\n stop(\"β No candidates provided\")\n }\n \n required_cols <- c(\"id\", \"sex\")\n missing_cols <- setdiff(required_cols, names(candidates_df))\n if (length(missing_cols) > 0) {\n stop(paste(\"β Missing required columns in candidates:\", paste(missing_cols, collapse = \", \")))\n }\n \n # Check sex balance\n n_males <- sum(candidates_df$sex == \"M\")\n n_females <- sum(candidates_df$sex == \"F\")\n if (n_males == 0 || n_females == 0) {\n stop(\"β Need both males and females for OCS analysis\")\n }\n \n # Check kinship matrix\n if (is.null(kinship_matrix) || nrow(kinship_matrix) == 0) {\n stop(\"β Kinship matrix is empty or invalid\")\n }\n \n # Check EBV indices\n if (is.null(ebv_index) || length(ebv_index) != nrow(candidates_df)) {\n stop(\"β EBV indices must match number of candidates\")\n }\n \n # Check parameters\n if (desired_inbreeding_rate <= 0 || desired_inbreeding_rate > 1) {\n stop(\"β Desired inbreeding rate must be between 0 and 1\")\n }\n \n if (num_offspring <= 0 || num_offspring %% 1 != 0) {\n stop(\"β Number of offspring must be a positive integer\")\n }\n \n TRUE\n}\n\n#' Format OCS results for display\n#' @param results OCS results list\n#' @return Formatted results for UI display\nformat_ocs_results <- function(results) {\n # Format candidate table\n candidate_table <- results$Candidate %>%\n select(Indiv, Sex, oc, n) %>%\n mutate(`Optimal Contribution (%)` = round(oc * 100, 1)) %>%\n rename(`ID` = Indiv, `# of offspring` = n) %>%\n select(ID, Sex, `Optimal Contribution (%)`, `# of offspring`)\n \n # Format mating table - handle different column naming schemes\n mating_df <- results$Mating\n \n # Check and standardize column names (optiSel vs custom implementation)\n if (\"Sire\" %in% names(mating_df)) {\n mating_df <- mating_df %>% rename(Male = Sire)\n }\n if (\"Dam\" %in% names(mating_df)) {\n mating_df <- mating_df %>% rename(Female = Dam)\n }\n if (\"Kin\" %in% names(mating_df)) {\n mating_df <- mating_df %>% rename(Kinship = Kin)\n } else if (\"kinship\" %in% names(mating_df)) {\n mating_df <- mating_df %>% rename(Kinship = kinship)\n } else if (\"coeff\" %in% names(mating_df)) {\n mating_df <- mating_df %>% rename(Kinship = coeff)\n } else {\n # If no kinship column found, add a placeholder\n mating_df$Kinship <- NA\n }\n \n mating_table <- mating_df %>% mutate_all(as.character)\n \n # Calculate summary statistics - handle different kinship column names\n kinship_values <- NA\n if (\"Kin\" %in% names(results$Mating)) {\n kinship_values <- results$Mating$Kin\n } else if (\"kinship\" %in% names(results$Mating)) {\n kinship_values <- results$Mating$kinship\n } else if (\"coeff\" %in% names(results$Mating)) {\n kinship_values <- results$Mating$coeff\n } else if (\"Kinship\" %in% names(mating_df)) {\n kinship_values <- mating_df$Kinship\n }\n \n summary_stats <- list(\n n_candidates = nrow(results$Candidate),\n n_males = sum(results$Candidate$Sex == \"male\"),\n n_females = sum(results$Candidate$Sex == \"female\"),\n n_matings = nrow(results$Mating),\n total_offspring = sum(results$Candidate$n),\n mean_kinship = if (all(is.na(kinship_values))) NA else mean(kinship_values, na.rm = TRUE),\n mean_contribution = mean(results$Candidate$oc)\n )\n \n list(\n candidate_table = candidate_table,\n mating_table = mating_table,\n summary_stats = summary_stats\n )\n}\n\n#' Create Excel workbook with OCS results\n#' @param results OCS results list\n#' @param params OCS parameters used\n#' @return Workbook object ready for saving\ncreate_ocs_workbook <- function(results, params = NULL) {\n wb <- openxlsx::createWorkbook()\n \n # Add README sheet\n openxlsx::addWorksheet(wb, \"README\")\n readme_text <- c(\n \"Optimum Contribution Selection Results\",\n \"\",\n paste(\"Generated:\", Sys.Date()),\n \"\",\n \"Parameters used:\",\n if (!is.null(params)) {\n c(\n paste(\"- Target inbreeding rate:\", params$inbreeding_rate),\n paste(\"- Number of offspring:\", params$num_offspring),\n paste(\"- Implementation:\", if (exists(\"custom_ocs_available\") && custom_ocs_available) \"Custom fallback\" else \"optiSel\")\n )\n } else {\n \"Parameters not recorded\"\n },\n \"\",\n \"Sheets included:\",\n \"1. Optimal Contributions - Selected candidates and their contributions\",\n \"2. Mating Plan - Optimal mate pairings to minimize inbreeding\",\n \"\",\n \"The patterns in your genetic data have been thoroughly analyzed.\"\n )\n openxlsx::writeData(wb, \"README\", readme_text)\n \n # Add optimal contributions\n openxlsx::addWorksheet(wb, \"Optimal Contributions\")\n contrib_df <- results$Candidate %>%\n select(Indiv, Sex, oc, n) %>%\n mutate(`Contribution (%)` = round(oc * 100, 2)) %>%\n rename(`ID` = Indiv, `# Offspring` = n)\n openxlsx::writeData(wb, \"Optimal Contributions\", contrib_df)\n \n # Add mating plan\n openxlsx::addWorksheet(wb, \"Mating Plan\")\n \n # Handle different column naming schemes for mating results\n mating_export <- results$Mating\n \n # Standardize kinship column name\n if (\"Kin\" %in% names(mating_export)) {\n mating_export <- mating_export %>% mutate(Kinship = round(Kin, 4))\n } else if (\"kinship\" %in% names(mating_export)) {\n mating_export <- mating_export %>% mutate(Kinship = round(kinship, 4))\n } else if (\"coeff\" %in% names(mating_export)) {\n mating_export <- mating_export %>% mutate(Kinship = round(coeff, 4))\n } else {\n mating_export$Kinship <- NA\n }\n \n # Select and rename columns based on what's available\n if (all(c(\"Sire\", \"Dam\") %in% names(mating_export))) {\n mating_df <- mating_export %>%\n select(Sire, Dam, Kinship, n) %>%\n rename(`# Matings` = n)\n } else if (all(c(\"Male\", \"Female\") %in% names(mating_export))) {\n mating_df <- mating_export %>%\n select(Male, Female, Kinship, n) %>%\n rename(`# Matings` = n)\n } else {\n # Fallback if column names are different\n mating_df <- mating_export %>%\n rename(`# Matings` = n)\n }\n openxlsx::writeData(wb, \"Mating Plan\", mating_df)\n \n wb\n}\n","type":"text"},{"name":"R/optsel_fallback.R","content":"# Custom OCS Implementation Functions\n# Note: All required packages are loaded in global.R\n\n#### Custom OCS Implementation Functions ####\n\n#' Fallback optimization when quadprog is not available\n#' Uses a simple gradient-based approach to find optimal contributions\nfallback_optimization <- function(bv_vec, K, male_idx, female_idx, target_kinship, lambda) {\n n <- length(bv_vec)\n \n # Initialize with equal contributions\n oc <- rep(1/n, n)\n \n # Ensure sex balance constraints\n oc[male_idx] <- oc[male_idx] * 0.5 / sum(oc[male_idx])\n oc[female_idx] <- oc[female_idx] * 0.5 / sum(oc[female_idx])\n \n # Simple gradient descent optimization\n max_iter <- 1000\n learning_rate <- 0.01\n tolerance <- 1e-6\n \n for (iter in 1:max_iter) {\n # Calculate gradient: -BV + lambda * 2 * K * oc\n grad <- -bv_vec + 2 * lambda * K %*% oc\n \n # Project gradient to maintain constraints\n # Remove component that would violate sex balance\n male_grad_mean <- mean(grad[male_idx])\n female_grad_mean <- mean(grad[female_idx])\n \n grad[male_idx] <- grad[male_idx] - male_grad_mean\n grad[female_idx] <- grad[female_idx] - female_grad_mean\n \n # Update contributions\n oc_new <- oc - learning_rate * grad\n \n # Ensure non-negativity\n oc_new <- pmax(oc_new, 0)\n \n # Re-normalize to maintain sex balance\n if (sum(oc_new[male_idx]) > 0) {\n oc_new[male_idx] <- oc_new[male_idx] * 0.5 / sum(oc_new[male_idx])\n }\n if (sum(oc_new[female_idx]) > 0) {\n oc_new[female_idx] <- oc_new[female_idx] * 0.5 / sum(oc_new[female_idx])\n }\n \n # Check convergence\n if (max(abs(oc_new - oc)) < tolerance) {\n break\n }\n \n oc <- oc_new\n }\n \n return(oc)\n}\n\n#' Create candidate object similar to optiSel::candes\n#' This structures data for optimization algorithms\ncustom_candes <- function(phen, pKin, quiet = FALSE) {\n # Validate inputs with Shadow Broker precision\n if(!all(c(\"Indiv\", \"Sex\", \"BV\", \"isCandidate\") %in% names(phen))) {\n stop(\"β phen must contain columns: Indiv, Sex, BV, isCandidate\")\n }\n \n # Extract candidates only\n candidates <- phen %>% filter(isCandidate == TRUE)\n \n # Calculate current population parameters\n mean_bv <- mean(candidates$BV, na.rm = TRUE)\n var_bv <- var(candidates$BV, na.rm = TRUE)\n \n # Structure the data as the Shadow Broker would organize her archives\n cand_obj <- list(\n phen = phen,\n candidates = candidates,\n n_candidates = nrow(candidates),\n n_males = sum(candidates$Sex == \"male\"),\n n_females = sum(candidates$Sex == \"female\"),\n kinship = pKin,\n current = data.frame(\n Name = \"BV\",\n Type = \"trait\",\n Val = mean_bv,\n Var = var_bv\n )\n )\n \n if(!quiet) {\n\n }\n \n class(cand_obj) <- \"custom_candes\"\n return(cand_obj)\n}\n\n#' Custom implementation of optiSel::opticont\n#' Uses quadratic programming to solve OCS problem\ncustom_opticont <- function(method, cand, con, quiet = FALSE) {\n # Extract method components (e.g., \"max.BV\" -> maximize BV)\n optimize_direction <- substr(method, 1, 3)\n target_trait <- substr(method, 5, nchar(method))\n \n if(target_trait != \"BV\") {\n stop(\"β Currently only BV optimization is supported\")\n }\n \n candidates <- cand$candidates\n n <- nrow(candidates)\n \n # Separate males and females for proper contribution allocation\n male_idx <- which(candidates$Sex == \"male\")\n female_idx <- which(candidates$Sex == \"female\")\n n_males <- length(male_idx)\n n_females <- length(female_idx)\n \n # Extract kinship matrix for candidates\n candidate_ids <- candidates$Indiv\n K <- cand$kinship[candidate_ids, candidate_ids]\n \n # Set up optimization problem\n # We need to maximize BV while constraining average kinship\n # Decision variables: contributions (c) for each candidate\n \n # Objective: maximize sum(c_i * BV_i)\n # For quadprog, we minimize -sum(c_i * BV_i)\n bv_vec <- candidates$BV\n \n # Quadratic term: minimize c'Kc (average kinship in next generation)\n # Linear term: -2 * BV' (to maximize BV)\n \n # Build constraint matrix for quadprog\n # Constraints:\n # 1. sum(c_males) = 0.5\n # 2. sum(c_females) = 0.5\n # 3. c_i >= 0 for all i\n # 4. Average kinship <= threshold\n \n # For quadprog: min(-d'b + 1/2 b'Db) s.t. A'b >= b0\n \n # Scale the problem for numerical stability\n lambda <- 100 # Weight for kinship penalty\n \n if(!is.null(con$ub.pKin)) {\n target_kinship <- con$ub.pKin\n } else {\n target_kinship <- mean(K[upper.tri(K)]) # Current mean kinship\n }\n \n # Use penalty method for constrained optimization\n # Minimize: -BV + lambda * Kinship\n Dmat <- 2 * lambda * K\n dvec <- bv_vec\n \n # Constraint matrix\n # Each row of Amat represents a constraint\n Amat <- matrix(0, n, n + 2)\n \n # Sum of male contributions = 0.5\n Amat[male_idx, 1] <- 1\n # Sum of female contributions = 0.5 \n Amat[female_idx, 2] <- 1\n # Non-negativity constraints\n diag(Amat[, 3:(n+2)]) <- 1\n \n # Right-hand side\n bvec <- c(0.5, 0.5, rep(0, n))\n \n # Try to use quadprog if available, otherwise use fallback optimization\n tryCatch({\n if (requireNamespace(\"quadprog\", quietly = TRUE)) {\n # Use quadprog if available\n # Make Dmat positive definite if needed\n eigen_decomp <- eigen(Dmat)\n if(any(eigen_decomp$values < 1e-8)) {\n Dmat <- Dmat + diag(1e-6, n)\n }\n \n sol <- quadprog::solve.QP(Dmat, dvec, Amat, bvec, meq = 2)\n oc <- sol$solution\n } else {\n # Fallback: Simple gradient-based optimization\n oc <- fallback_optimization(bv_vec, K, male_idx, female_idx, target_kinship, lambda)\n }\n \n # Normalize to ensure sum = 1\n oc <- oc / sum(oc)\n \n # Create output similar to optiSel\n parent_df <- candidates %>%\n mutate(oc = oc) %>%\n select(Indiv, Sex, oc)\n \n # Calculate expected kinship in next generation\n mean_kinship_next <- as.numeric(t(oc) %*% K %*% oc)\n \n if(!quiet) {\n \n }\n \n result <- list(\n parent = parent_df,\n mean.kin = mean_kinship_next,\n mean.bv = sum(oc * bv_vec),\n info = \"Optimization successful\"\n )\n \n class(result) <- \"custom_opticont\"\n return(result)\n \n }, error = function(e) {\n stop(paste(\"β Optimization failed:\", e$message))\n })\n}\n\n#' Calculate number of offspring from optimum contributions\n#' Replicates optiSel::noffspring functionality\ncustom_noffspring <- function(Candidate, N) {\n # Validate input\n if(!all(c(\"Indiv\", \"Sex\", \"oc\") %in% names(Candidate))) {\n stop(\"β Candidate must contain columns: Indiv, Sex, oc\")\n }\n \n # Calculate raw offspring numbers\n # Each individual contributes to N * oc offspring\n raw_offspring <- N * Candidate$oc\n \n # Round while maintaining sum constraints\n males <- Candidate$Sex == \"male\"\n females <- Candidate$Sex == \"female\"\n \n nOff <- numeric(nrow(Candidate))\n \n # Smart rounding to maintain exact totals\n if(sum(males) > 0) {\n male_raw <- raw_offspring[males]\n male_int <- floor(male_raw)\n male_frac <- male_raw - male_int\n \n # Add extra offspring to males with highest fractional parts\n n_extra_males <- N/2 - sum(male_int)\n if(n_extra_males > 0) {\n top_males <- order(male_frac, decreasing = TRUE)[1:min(n_extra_males, length(male_frac))]\n male_int[top_males] <- male_int[top_males] + 1\n }\n nOff[males] <- male_int\n }\n \n if(sum(females) > 0) {\n female_raw <- raw_offspring[females]\n female_int <- floor(female_raw)\n female_frac <- female_raw - female_int\n \n # Add extra offspring to females with highest fractional parts\n n_extra_females <- N/2 - sum(female_int)\n if(n_extra_females > 0) {\n top_females <- order(female_frac, decreasing = TRUE)[1:min(n_extra_females, length(female_frac))]\n female_int[top_females] <- female_int[top_females] + 1\n }\n nOff[females] <- female_int\n }\n \n result <- data.frame(\n Indiv = Candidate$Indiv,\n nOff = nOff\n )\n \n return(result)\n}\n\n#' Mate allocation algorithm\n#' Replicates optiSel::matings functionality\ncustom_matings <- function(Candidate, Kin, quiet = FALSE) {\n # Extract candidates with offspring\n active_candidates <- Candidate %>% filter(n > 0)\n \n males <- active_candidates %>% filter(Sex == \"male\")\n females <- active_candidates %>% filter(Sex == \"female\")\n \n if(nrow(males) == 0 || nrow(females) == 0) {\n stop(\"β Need at least one male and one female with n > 0\")\n }\n \n # Get kinship submatrix for active candidates\n male_ids <- males$Indiv\n female_ids <- females$Indiv\n \n K_mf <- Kin[male_ids, female_ids, drop = FALSE]\n \n # Initialize mating list\n matings_list <- list()\n \n # Track remaining matings needed\n males_remaining <- males$n\n females_remaining <- females$n\n \n # Minimum kinship mating algorithm\n # Iteratively select minimum kinship pairs\n iter <- 0\n total_matings <- sum(males$n)\n \n while(sum(males_remaining) > 0 && sum(females_remaining) > 0) {\n iter <- iter + 1\n \n # Find available pairs (those with remaining matings)\n avail_m <- which(males_remaining > 0)\n avail_f <- which(females_remaining > 0)\n \n if(length(avail_m) == 0 || length(avail_f) == 0) break\n \n # Get kinships for available pairs\n K_avail <- K_mf[avail_m, avail_f, drop = FALSE]\n \n # Add small penalty for repeated matings to encourage diversity\n # This mimics the alpha parameter in optiSel\n penalty_matrix <- matrix(0, length(avail_m), length(avail_f))\n for(i in seq_along(matings_list)) {\n m_idx <- which(male_ids[avail_m] == matings_list[[i]]$Sire)\n f_idx <- which(female_ids[avail_f] == matings_list[[i]]$Dam)\n if(length(m_idx) > 0 && length(f_idx) > 0) {\n penalty_matrix[m_idx, f_idx] <- penalty_matrix[m_idx, f_idx] + 0.001\n }\n }\n \n K_adjusted <- K_avail + penalty_matrix\n \n # Find minimum kinship pair\n min_idx <- which.min(K_adjusted)\n min_coords <- arrayInd(min_idx, dim(K_adjusted))\n \n sel_male_idx <- avail_m[min_coords[1]]\n sel_female_idx <- avail_f[min_coords[2]]\n \n # Record mating\n matings_list[[iter]] <- data.frame(\n Sire = male_ids[sel_male_idx],\n Dam = female_ids[sel_female_idx],\n Kin = K_mf[sel_male_idx, sel_female_idx],\n n = 1,\n stringsAsFactors = FALSE\n )\n \n # Update remaining counts\n males_remaining[sel_male_idx] <- males_remaining[sel_male_idx] - 1\n females_remaining[sel_female_idx] <- females_remaining[sel_female_idx] - 1\n }\n \n # Combine matings (aggregate multiple matings of same pair)\n matings_df <- bind_rows(matings_list) %>%\n group_by(Sire, Dam) %>%\n summarise(\n n = sum(n),\n Kin = first(Kin),\n .groups = \"drop\"\n ) %>%\n arrange(Kin)\n \n # Calculate mean inbreeding coefficient of offspring\n mean_inbreeding <- sum(matings_df$Kin * matings_df$n) / sum(matings_df$n)\n \n if(!quiet) {\n\n }\n \n # Add attributes similar to optiSel\n attr(matings_df, \"objval\") <- mean_inbreeding\n attr(matings_df, \"info\") <- \"Minimum kinship mating\"\n \n return(matings_df)\n}\n\n#' Main OCS function combining all steps\nrun_custom_ocs <- function(candidates_df, kinship_matrix, ebv_index, \n desired_inbreeding_rate, num_offspring) {\n \n # Prepare phenotype data in required format\n phen <- data.frame(\n Indiv = candidates_df$id,\n Sex = ifelse(candidates_df$sex == \"M\", \"male\", \"female\"),\n BV = ebv_index,\n isCandidate = TRUE,\n stringsAsFactors = FALSE\n )\n \n # Ensure kinship matrix has correct dimensions and names\n candidate_ids <- candidates_df$id\n sKin <- kinship_matrix[candidate_ids, candidate_ids]\n rownames(sKin) <- candidate_ids\n colnames(sKin) <- candidate_ids\n \n # Step 1: Create candidate object\n cand <- custom_candes(phen = phen, pKin = sKin)\n \n # Step 2: Run optimization\n con <- list(ub.pKin = desired_inbreeding_rate)\n offspring_result <- custom_opticont(method = \"max.BV\", cand = cand, con = con)\n \n # Step 3: Calculate number of offspring\n Candidate <- offspring_result$parent\n offspring_counts <- custom_noffspring(Candidate, num_offspring)\n Candidate$n <- offspring_counts$nOff\n \n # Filter candidates with offspring\n Candidate <- filter(Candidate, n > 0)\n \n # Validate we have both sexes\n if(length(unique(Candidate$Sex)) < 2) {\n stop(\"β OCS resulted in only one sex being selected. Adjust parameters.\")\n }\n \n # Step 4: Mate allocation\n Mating <- custom_matings(Candidate, Kin = sKin)\n \n list(Candidate = Candidate, Mating = Mating)\n}\n","type":"text"},{"name":"R/ui_helpers.R","content":"# UI Helper Functions\n# Functions for UI elements, reactive values, and display formatting\n\n#' Create dynamic trait input UI\n#' @param n Number of traits\n#' @return UI elements for trait inputs\ncreate_trait_inputs <- function(n) {\n tagList(\n lapply(seq_len(n), function(i) {\n wellPanel(\n fileInput(paste0(\"trait_file_\", i), paste(\"EBVs for trait\", i)),\n numericInput(paste0(\"trait_weight_\", i), paste(\"Relative weight for Trait\", i),\n value = round(1 / n, 3), min = 0, max = 1, step = 0.01)\n )\n })\n )\n}\n\n#' Create OCS trait input UI\n#' @param n Number of traits\n#' @return UI elements for OCS trait inputs\ncreate_ocs_trait_inputs <- function(n) {\n lapply(1:n, function(i) {\n fluidRow(\n column(6, fileInput(paste0(\"ocs_trait_file_\", i), paste(\"Upload EBV File\", i))),\n column(6, numericInput(paste0(\"ocs_trait_weight_\", i), paste(\"Weight for Trait\", i),\n value = round(1 / n, 2), min = 0, max = 1, step = 0.01))\n )\n })\n}\n\n#' Generate package status text\n#' @return Formatted status text for display\ngenerate_package_status <- function() {\n status_text <- \"\"\n \n if (exists(\"is_webr\") && is_webr) {\n status_text <- paste(status_text, \"π WebR environment detected\\n\", sep = \"\")\n }\n \n if (exists(\"optisel_available\") && optisel_available) {\n status_text <- paste(status_text, \"β
optiSel package is available - OCS functionality enabled\", sep = \"\")\n } else if (exists(\"custom_ocs_available\") && custom_ocs_available) {\n status_text <- paste(status_text, \"β
Custom OCS fallback is available - OCS functionality enabled\", sep = \"\")\n if (exists(\"is_webr\") && is_webr) {\n status_text <- paste(status_text, \"\\nπ¦ Using custom implementation (optiSel not available in WebR)\", sep = \"\")\n } else {\n status_text <- paste(status_text, \"\\nπ¦ Using custom implementation (optiSel not installed)\", sep = \"\")\n }\n } else {\n status_text <- paste(status_text, \"β OCS functionality not available - Neither optiSel nor fallback could be loaded\", sep = \"\")\n }\n \n status_text\n}\n\n#' Check if WebR is detected\n#' @return TRUE if WebR environment detected\nis_webr_environment <- function() {\n exists(\"is_webr\") && is_webr\n}\n\n#' Format kinship and EBV results for display\n#' @param kinship_results Kinship analysis results\n#' @param ebv_results EBV analysis results\n#' @param thresh Kinship threshold\n#' @return Formatted results for display\nformat_kinship_ebv_results <- function(kinship_results, ebv_results, thresh) {\n # Combine kinship and EBV results\n if (!is.null(kinship_results) && !is.null(ebv_results)) {\n full_results <- left_join(kinship_results$results, ebv_results$results, \n by = c(\"Female\", \"Male\"))\n } else if (!is.null(ebv_results)) {\n full_results <- relocate(mutate(ebv_results$results, Kinship = NA), Kinship, .after = EBV)\n } else {\n return(NULL)\n }\n \n # Filter results for table display\n filt_results_table <- full_results %>%\n filter(EBV > 0, (is.na(Kinship) | Kinship < thresh))\n \n # Filter results for matrix display (mask invalid crosses as NA)\n filt_results_matrix <- full_results %>%\n mutate(EBV = ifelse(EBV <= 0 | (!is.na(Kinship) & Kinship >= thresh), NA, EBV))\n \n list(\n table_results = filt_results_table,\n matrix_results = filt_results_matrix,\n full_results = full_results\n )\n}\n\n#' Create Excel workbook for kinship and EBV results\n#' @param table_results Filtered table results\n#' @param matrix_results Matrix results with masked values\n#' @param full_results Complete results\n#' @return Workbook object ready for saving\ncreate_kinship_ebv_workbook <- function(table_results, matrix_results, full_results) {\n wb <- openxlsx::createWorkbook()\n \n # Add README worksheet\n openxlsx::addWorksheet(wb, \"README\")\n readme_text <- c(\n \"This Excel file contains two data sheets generated by the app:\",\n \"\",\n \"1. Filtered Results - Table:\",\n \" - Only crosses with positive EBVs and kinship below the selected threshold are included.\",\n \" - Crosses failing these criteria are completely removed from this table.\",\n \"\",\n \"2. EBV Matrix - Masked:\",\n \" - Shows all possible male-female crosses with EBV values.\",\n \" - EBVs for crosses with negative values or kinship above the threshold are blank (hidden) in the matrix.\",\n \"\",\n \"This distinction allows detailed matrix views while keeping the filtered table clean for analysis.\"\n )\n openxlsx::writeData(wb, \"README\", readme_text)\n \n # Add filtered results\n openxlsx::addWorksheet(wb, \"Filtered Results\")\n openxlsx::writeData(wb, \"Filtered Results\", table_results, rowNames = TRUE)\n \n # Add EBV matrix\n openxlsx::addWorksheet(wb, \"EBV Matrix\")\n \n # Convert to matrix format for Excel\n m_ids <- unique(full_results$Male)\n f_ids <- unique(full_results$Female)\n mat_for_excel <- matrix(NA_real_, nrow = length(m_ids), ncol = length(f_ids),\n dimnames = list(m_ids, f_ids))\n \n for (i in seq_len(nrow(matrix_results))) {\n m <- matrix_results$Male[i]\n f <- matrix_results$Female[i]\n val <- matrix_results$EBV[i]\n mat_for_excel[m, f] <- val\n }\n \n openxlsx::writeData(wb, \"EBV Matrix\", mat_for_excel, rowNames = TRUE)\n \n wb\n}\n\n#' Validate file uploads\n#' @param file Uploaded file object\n#' @param required_cols Required column names\n#' @param file_type Type of file for error messages\n#' @return TRUE if valid, throws error if invalid\nvalidate_file_upload <- function(file, required_cols = NULL, file_type = \"file\") {\n if (is.null(file)) {\n stop(paste(\"β No\", file_type, \"uploaded\"))\n }\n \n if (file$size == 0) {\n stop(paste(\"β\", file_type, \"file is empty\"))\n }\n \n # Try to read the file\n tryCatch({\n df <- readr::read_table(file$datapath)\n if (nrow(df) == 0) {\n stop(paste(\"β\", file_type, \"file contains no data\"))\n }\n \n # Check required columns if specified\n if (!is.null(required_cols)) {\n missing_cols <- setdiff(required_cols, names(df))\n if (length(missing_cols) > 0) {\n stop(paste(\"β\", file_type, \"missing required columns:\", paste(missing_cols, collapse = \", \")))\n }\n }\n \n TRUE\n }, error = function(e) {\n stop(paste(\"β Error reading\", file_type, \":\", e$message))\n })\n}\n\n#' Generate user feedback messages\n#' @param success Whether operation was successful\n#' @param message Success or error message\n#' @param operation Type of operation performed\n#' @return Formatted feedback message\ngenerate_feedback <- function(success, message, operation) {\n if (success) {\n paste0(\"β
\", operation, \" completed successfully: \", message)\n } else {\n paste0(\"β \", operation, \" failed: \", message)\n }\n}\n","type":"text"},{"name":"R/utils.R","content":"# Data Processing Functions\n# Functions for reading, cleaning, and processing input data\n\n# Fallback functions for when kinship2 is not available\nfallback_fixParents <- function(id, sire, dam, sex, missid = \"0\") {\n # Simple fallback - just return the data as is\n data.frame(id = id, dadid = sire, momid = dam, sex = sex, stringsAsFactors = FALSE)\n}\n\nfallback_pedigree <- function(id, dadid, momid, sex, missid = \"0\") {\n # Simple fallback - return a list with the pedigree data\n list(id = id, dadid = dadid, momid = momid, sex = sex)\n}\n\nfallback_kinship <- function(ped) {\n # Simple fallback - return identity matrix\n # This is a very basic approximation\n n <- length(ped$id)\n matrix(0.5, n, n, dimnames = list(ped$id, ped$id))\n}\n\n#' Read and process candidate files\n#' @param file Uploaded file object\n#' @return List with candidates data frame and male/female ID vectors\nread_candidates <- function(file) {\n df <- readr::read_table(file$datapath)\n list(\n candidates = df,\n males = filter(df, sex == \"M\") %>% pull(id),\n females = filter(df, sex == \"F\") %>% pull(id)\n )\n}\n\n#' Clean and validate pedigree data\n#' @param ped Raw pedigree data frame\n#' @return Cleaned pedigree object for kinship calculation\nclean_pedigree <- function(ped) {\n final_ped <- ped %>%\n mutate(across(c(id, sire, dam), as.factor)) %>%\n mutate(sex = case_when(id %in% sire ~ 0, id %in% dam ~ 1, TRUE ~ 2)) %>%\n {\n # Fix messy parents (same logic as original)\n messy_parents <- setdiff(intersect(.$sire, .$dam), 0) %>% as.data.frame() %>% rename(id = 1)\n parents_fixed <- .\n parents_fixed$sire[parents_fixed$sire %in% messy_parents$id] <- 0\n parents_fixed$dam[parents_fixed$dam %in% messy_parents$id] <- 0\n parents_fixed\n } %>%\n {\n # Remove duplicates (same as original)\n doubled <- table(.$id)[table(.$id) > 1] %>% names()\n .[!.$id %in% doubled, ]\n } %>%\n {\n # Remove circular dependencies (same as original)\n circdep <- .\n circdep$id <- as.character(circdep$id)\n circdep$sire <- as.character(circdep$sire)\n circdep$dam <- as.character(circdep$dam)\n circdep <- circdep[circdep$id == circdep$sire | circdep$id == circdep$dam, ]\n .[!.$id %in% circdep$id, ]\n } %>%\n with(., if (exists(\"kinship2_available\") && kinship2_available) {\n kinship2::fixParents(id, sire, dam, sex, missid = \"0\")\n } else {\n fallback_fixParents(id, sire, dam, sex, missid = \"0\")\n }) %>%\n with(., if (exists(\"kinship2_available\") && kinship2_available) {\n kinship2::pedigree(id, dadid, momid, sex, missid = \"0\")\n } else {\n fallback_pedigree(id, dadid, momid, sex, missid = \"0\")\n })\n \n return(final_ped)\n}\n\n#' Compute kinship matrix and statistics\n#' @param ped Pedigree object\n#' @param males Vector of male IDs\n#' @param females Vector of female IDs\n#' @return List with kinship results, quartiles, and matrix\ncompute_kinship_matrix <- function(ped, males, females) {\n kinship_matrix <- if (exists(\"kinship2_available\") && kinship2_available) {\n kinship2::kinship(ped)\n } else {\n fallback_kinship(ped)\n }\n kin_mat_sel <- kinship_matrix[males, females]\n \n kin_quads <- tibble(\n Data = \"Kinship\",\n Q25 = quantile(kin_mat_sel, 0.25),\n Q50 = quantile(kin_mat_sel, 0.50),\n Q75 = quantile(kin_mat_sel, 0.75),\n Q100 = quantile(kin_mat_sel, 1.00)\n ) %>% column_to_rownames(\"Data\")\n \n kinship_results <- as_tibble(kin_mat_sel, rownames = \"Male\") %>%\n pivot_longer(-Male, names_to = \"Female\", values_to = \"Kinship\")\n \n list(results = kinship_results, quads = kin_quads, matrix = kin_mat_sel)\n}\n\n#' Process EBV files and combine with weights\n#' @param trait_counter Number of traits\n#' @param input Shiny input object\n#' @param prefix Prefix for input names (for OCS-specific inputs)\n#' @return List with combined EBVs, weights, and total\nprocess_ebvs <- function(trait_counter, input, prefix = \"\") {\n ebv_inputs <- list()\n for (i in seq_len(trait_counter)) {\n file_i <- input[[paste0(prefix, \"trait_file_\", i)]]\n weight_i <- input[[paste0(prefix, \"trait_weight_\", i)]]\n if (!is.null(file_i) && !is.null(weight_i)) {\n df_raw <- readr::read_table(file_i$datapath)\n if (!\"ID\" %in% names(df_raw)) names(df_raw)[1] <- \"ID\"\n if (!\"EBV\" %in% names(df_raw)) names(df_raw)[2] <- \"EBV\"\n # Ensure EBV column is numeric\n df_raw$EBV <- as.numeric(df_raw$EBV)\n ebv_inputs <- append(ebv_inputs, list(select(df_raw, ID, EBV), weight_i))\n }\n }\n \n if (length(ebv_inputs) >= 2 && length(ebv_inputs) %% 2 == 0) {\n rel_weights <- unlist(ebv_inputs[seq(2, length(ebv_inputs), by = 2)])\n weight_total <- sum(rel_weights)\n ebv_dfs <- ebv_inputs[seq(1, length(ebv_inputs), by = 2)]\n ebv_dfs <- purrr::imap(ebv_dfs, ~ rename(.x, !!paste0(\"EBV.\", .y) := EBV))\n \n joint_ebvs <- purrr::reduce(ebv_dfs, full_join, by = \"ID\") %>%\n mutate(across(starts_with(\"EBV.\"), ~ replace_na(.x, 0)))\n \n list(joint_ebvs = joint_ebvs, rel_weights = rel_weights, weight_total = weight_total)\n } else {\n NULL\n }\n}\n\n#' Calculate breeding value index from multiple traits\n#' @param joint_ebvs Combined EBV data frame\n#' @param rel_weights Vector of trait weights\n#' @return Data frame with calculated index values\ncalculate_index <- function(joint_ebvs, rel_weights) {\n ebv_cols <- grep(\"^EBV\\\\.\", names(joint_ebvs))\n # Ensure EBV columns are numeric\n joint_ebvs[ebv_cols] <- lapply(joint_ebvs[ebv_cols], as.numeric)\n joint_ebvs$index_val <- as.vector(as.matrix(joint_ebvs[ebv_cols]) %*% rel_weights)\n joint_ebvs\n}\n","type":"text"},{"name":"README.md","content":"# AlloMate - Genetic Breeding Optimization App\n\n## 𧬠Overview\n\nAlloMate is a Shiny web application for genetic breeding optimization using Optimum Contribution Selection (OCS). The app helps breeders make informed decisions about mate selection and breeding strategies by analyzing kinship relationships and breeding values.\n\n## π Features\n\n### Core Functionality\n- **Kinship Analysis**: Calculate and visualize kinship relationships between potential mates\n- **EBV Processing**: Combine multiple breeding value traits with user-defined weights\n- **Optimum Contribution Selection**: Optimize breeding contributions while controlling inbreeding\n- **Mating Plan Generation**: Create optimal mating pairs to minimize inbreeding\n- **Excel Export**: Download comprehensive results in Excel format\n\n### Technical Features\n- **Dual Implementation**: Works with both optiSel package and custom fallback\n- **WebR Compatible**: Runs in web browsers without server installation\n- **Modular Design**: Clean, organized codebase for easy maintenance\n- **Robust Error Handling**: Comprehensive validation and user feedback\n\n## π Project Structure\n\n```\nAlloMate/\nβββ app/ # Shiny application\nβ βββ global.R # Shared code (packages, global variables)\nβ βββ ui.R # User interface code\nβ βββ server.R # Server logic and reactivity\nβ βββ R/ # Helper functions and modules\nβ β βββ utils.R # Data processing and utility functions\nβ β βββ ocs_helpers.R # OCS analysis functions\nβ β βββ ui_helpers.R # UI helper functions\nβ β βββ load_functions.R # Function loader\nβ βββ www/ # Static resources\nβ βββ allomate.png\nβ βββ logos.png\nβββ scripts/ # Custom implementations and utilities\nβ βββ optsel_fallback.R # Custom OCS fallback implementation\nβ βββ validate_ocs_logic.R # OCS logic validation\nβ βββ compare_ocs_results.R # Results comparison\nβ βββ ... # Other utility scripts\nβββ data/ # Sample data files\nβ βββ candidates_2024_10_29.txt\nβ βββ pedigree_with_family.txt\nβ βββ weight_ebvs_for_app_with_family.txt\nβ βββ length_ebvs_for_app_with_family.txt\nβββ README.md\n```\n\n## π οΈ Installation\n\n### Prerequisites\n- R (version 4.0 or higher)\n- Required R packages (automatically installed):\n - shiny, readr, dplyr, tidyr, purrr, kinship2, DT, tibble, openxlsx, quadprog\n\n### Local Installation\n1. Clone or download the repository\n2. Open R or RStudio\n3. Set working directory to the AlloMate folder\n4. Run the app:\n ```r\n shiny::runApp(\"app\")\n ```\n\n### Package Installation\nThe app automatically handles package installation when it starts up:\n\n#### How it Works\n1. **global.R** runs once when the Shiny app starts\n2. It checks for all required packages and installs missing ones\n3. For `optiSel` specifically, it tries CRAN first, then Bioconductor if needed\n4. Installation status is displayed in the app interface\n\n#### Troubleshooting Package Installation\n\n**If optiSel Installation Fails:**\n\n**Option 1: Manual Installation (Recommended)**\n```r\n# Try CRAN first\ninstall.packages(\"optiSel\")\n\n# If that fails, try Bioconductor\nif (!require(BiocManager, quietly = TRUE)) {\n install.packages(\"BiocManager\")\n}\nBiocManager::install(\"optiSel\")\n```\n\n**Option 2: Check System Requirements**\n- Ensure you have write permissions to your R library directory\n- Check that you have sufficient disk space\n- Verify your internet connection\n\n**Option 3: Update R and Packages**\n```r\n# Update R to latest version\n# Then update all packages\nupdate.packages(ask = FALSE)\n```\n\n### WebR Deployment\nThe app is compatible with WebR environments and will automatically use the custom OCS fallback when optiSel is not available.\n\n## π Usage\n\n### 1. Upload Data\n- **Candidates File**: Upload a text file with columns `id` and `sex` (M/F)\n- **Pedigree File**: Upload a text file with columns `id`, `sire`, and `dam`\n- **EBV Files**: Upload breeding value files with columns `ID` and `EBV`\n\n### 2. Configure Analysis\n- **Traits**: Add multiple EBV traits with relative weights (must sum to 1)\n- **Kinship Threshold**: Set maximum allowed kinship between mates\n- **OCS Parameters**: Set desired inbreeding rate and number of offspring\n\n### 3. View Results\n- **Kinship Matrix**: Visualize kinship relationships with color coding\n- **EBV Matrix**: View combined breeding values for potential crosses\n- **OCS Results**: See optimal candidate contributions and mating plan\n\n### 4. Export Results\n- Download comprehensive Excel files with all results\n- Includes README sheets explaining the analysis\n\n## π§ Technical Details\n\n### OCS Implementation\nThe app uses a dual implementation approach:\n\n#### Local Environment (optiSel Available)\n1. App tries to install and load optiSel\n2. If successful, uses native optiSel functions\n3. Status shows: \"β
optiSel package is available - OCS functionality enabled\"\n\n#### WebR Environment (optiSel Not Available)\n1. App detects optiSel installation failure\n2. Automatically loads custom OCS fallback from `scripts/optsel_fallback.R`\n3. Creates function aliases: `candes`, `opticont`, `noffspring`, `matings`\n4. Status shows: \"β
Custom OCS fallback is available - OCS functionality enabled\"\n\n#### Complete Failure (Neither Available)\n1. Shows error message: \"β OCS functionality not available\"\n2. OCS button shows modal explaining the issue\n3. User can still use EBV matrix functionality\n\n### Data Processing\n- Automatic pedigree cleaning and validation\n- Kinship matrix calculation using kinship2\n- Multi-trait EBV combination with weights\n- Comprehensive error handling and validation\n\n### Performance\n- **Small datasets** (<100 candidates): Fast, comparable to optiSel\n- **Medium datasets** (100-500 candidates): Reasonable performance\n- **Large datasets** (>500 candidates): May be slower than optiSel\n\n\n\n## π Sample Results\n\nWith the provided sample data:\n- **84 candidates** (63 males, 21 females)\n- **66 candidates selected** for breeding\n- **97 optimal mating pairs** generated\n- **Mean offspring inbreeding**: 0.0053\n- **Expected genetic gain**: +0.0557 (improved from -0.0290 baseline)\n\n## π Troubleshooting\n\n### Common Issues\n\n1. **\"Package not available\" error**\n - The app will automatically use the custom fallback\n - Check console messages for details\n\n2. **\"No valid EBV files\" error**\n - Ensure EBV files have correct column names (ID, EBV)\n - Check that trait weights sum to 1.0\n\n3. **\"Only one sex selected\" error**\n - Adjust EBV scaling or kinship constraints\n - Check candidate file sex coding (M/F)\n\n4. **\"Optimization failed\" error**\n - Check kinship matrix condition\n - Consider data scaling or constraint adjustment\n\n5. **\"Requested package not found in webR binary repo\"**\n - This indicates the app is trying to use WebR installation methods\n - The app has been updated to handle this automatically\n\n6. **\"Permission denied\"**\n - You don't have write access to the R library directory\n - Run R as administrator or change library location\n\n### Debug Mode\nEnable verbose output by checking the R console for detailed messages during analysis.\n\n## ποΈ Code Organization\n\n### Function Structure\nThe app uses an organized functions structure to improve code maintainability, reusability, and clarity:\n\n#### Function Categories\n1. **Data Processing Functions** (`app/R/utils.R`)\n - Handle all data input, cleaning, and processing operations\n - Functions: `read_candidates()`, `clean_pedigree()`, `compute_kinship_matrix()`, `process_ebvs()`, `calculate_index()`\n\n2. **OCS Functions** (`app/R/ocs_helpers.R`)\n - Handle all Optimum Contribution Selection operations\n - Functions: `run_ocs()`, `validate_ocs_inputs()`, `format_ocs_results()`, `create_ocs_workbook()`\n\n3. **UI Helper Functions** (`app/R/ui_helpers.R`)\n - Handle UI elements, reactive values, and display formatting\n - Functions: `create_trait_inputs()`, `generate_package_status()`, `format_kinship_ebv_results()`, `validate_file_upload()`\n\n4. **Function Loader** (`app/R/load_functions.R`)\n - Centralized loading of all function files in the correct order\n\n### Benefits of Organization\n- **Maintainability**: Functions grouped by purpose, easy to locate and modify\n- **Reusability**: Functions can be used across different parts of the app\n- **Testing**: Individual function files can be tested separately\n- **Documentation**: Each function file has clear documentation\n- **Collaboration**: Multiple developers can work on different function files\n\n## π€ Contributing\n\n### Code Organization\n- Follow the established project structure\n- Add new functions to appropriate R/ files\n- Update documentation for new features\n- Test thoroughly before submitting\n\n### Development Guidelines\n- Use Roxygen2 comments for all functions\n- Follow R naming conventions\n- Include error handling and validation\n- Test with both optiSel and fallback implementations\n\n### Function Documentation\nAll functions include Roxygen2 documentation with:\n- Parameter descriptions\n- Return value details\n- Usage examples\n- Error handling information\n\n## π License\n\nThis project is developed for genetic breeding optimization research and applications.\n\n## π Acknowledgments\n\n- Built with R and Shiny\n- Uses kinship2 for pedigree analysis\n- Custom OCS implementation for WebR compatibility\n- Sample data provided for testing and demonstration\n\n## π Support\n\nFor questions or issues:\n1. Check the troubleshooting section\n2. Examine the console output for error details\n3. Review the app documentation and help section\n\n---\n\n**AlloMate** - Making genetic breeding optimization accessible and efficient! π§¬β¨","type":"text"},{"name":"global.R","content":"# Global.R - Simple package setup\n# This file runs once when the Shiny app starts\n\n# Check if we're in the app directory or project root\nif (dir.exists(\"R\") && dir.exists(\"www\")) {\n app_dir <<- TRUE # Make it global so other functions can access it\n} else if (dir.exists(\"app\") && dir.exists(\"scripts\")) {\n app_dir <<- FALSE # Make it global so other functions can access it\n} else {\n app_dir <<- FALSE # Make it global so other functions can access it\n}\n\n# Check if we're in a Shiny server environment (temporary directory)\nis_shiny_server <- grepl(\"^/home/web_user/\", getwd()) || grepl(\"^/tmp/\", getwd()) || grepl(\"^/var/folders/\", getwd())\n\n# Load required packages (skip if not available)\n# Load non-tidyverse packages first\nrequired_packages <- c(\"shiny\", \"shinyjs\", \"DT\", \"openxlsx\")\n\n# Try to load quadprog (optional - we have fallback)\nquadprog_available <- FALSE\ntryCatch({\n if (!require(quadprog, quietly = TRUE)) {\n install.packages(\"quadprog\", repos = \"https://cran.rstudio.com/\", quiet = TRUE)\n }\n library(quadprog, quietly = TRUE)\n quadprog_available <- TRUE\n}, error = function(e) {\n warning(paste(\"Package quadprog not available (will use fallback optimization):\", e$message))\n})\n\n# Try to load kinship2 (optional - we have fallback)\nkinship2_available <- FALSE\ntryCatch({\n if (!require(kinship2, quietly = TRUE)) {\n install.packages(\"kinship2\", repos = \"https://cran.rstudio.com/\", quiet = TRUE)\n }\n library(kinship2, quietly = TRUE)\n kinship2_available <- TRUE\n}, error = function(e) {\n warning(paste(\"Package kinship2 not available (will use fallback):\", e$message))\n})\n\n# Load non-tidyverse packages first\nfor (pkg in required_packages) {\n tryCatch({\n library(pkg, character.only = TRUE)\n message(paste(\"β
Loaded package:\", pkg))\n }, error = function(e) {\n warning(paste(\"Package\", pkg, \"not available:\", e$message))\n })\n}\n\n# Load tidyverse last to avoid masking issues\ntryCatch({\n library(tidyverse)\n message(\"β
Loaded tidyverse package\")\n}, error = function(e) {\n warning(paste(\"Package tidyverse not available:\", e$message))\n})\n\n# Detect WebR environment\nis_webr <- exists(\"webr\") && !is.null(webr)\n\n# Try to install and load optiSel - with custom fallback\noptisel_available <- FALSE\ncustom_ocs_available <- FALSE\n\ntryCatch({\n if (!require(optiSel, quietly = TRUE)) {\n install.packages(\"optiSel\", repos = \"https://cran.rstudio.com/\", quiet = TRUE)\n }\n library(optiSel)\n optisel_available <- TRUE\n message(\"β
optiSel loaded successfully\")\n}, error = function(e) {\n message(\"β οΈ optiSel not available - loading custom OCS fallback\")\n \n # Load all organized functions (which includes the fallback)\n tryCatch({\n # Determine correct path based on current directory\n if (app_dir) {\n functions_path <- \"R/load_functions.R\"\n } else {\n functions_path <- \"app/R/load_functions.R\"\n }\n \n # Check if the functions file exists before sourcing\n if (!file.exists(functions_path)) {\n stop(paste(\"Functions file not found at:\", functions_path))\n }\n \n source(functions_path)\n \n # Check if the fallback functions were loaded and flag was set\n if (exists(\"custom_ocs_available\") && custom_ocs_available) {\n message(\"β
Custom OCS fallback loaded successfully\")\n message(\"π¦ OCS functionality enabled via custom fallback\")\n } else {\n message(\"β οΈ Custom OCS fallback not available after loading functions\")\n }\n }, error = function(func_error) {\n message(\"β Could not load organized functions:\", func_error$message)\n })\n})\n\n# Set global flags for app behavior\nocs_available <- optisel_available || custom_ocs_available\n\nmessage(\"π AlloMate app startup complete!\")\n","type":"text"},{"name":"www/allomate.png","content":"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\nqfD111/P+6dFh2giz+9973vx5X16mt8xLZB4KDMBQn5m1PnekT6s9mPilauvvroj2CuvvNIN\nDw93tGySC+l2gprUKcsyYbe4K5dTHHZsaXpyym57Nz3eVbMU8tOc6VMhv6qz+AkEHU0wpyCg\ng1ehD0vuqpO6XFiXM8hJt9rKQ9E9wdeuXZtJUxTyN27cmNi+NFQ/y2vLL7zwwsTqnuWGdAeC\n73znOy5PI1Cy9Lvuuus48JkluGf70mUumqNG8y/xt7F152gSal2fr/l8MGptxKPZCBDys3HO\n/V70i18zFWdZNJNpp/eZ7tfke/og+dOf/jQzlmpt2inkp3UWf6YhdTdZtZBv++m4TE25+j6b\nkb/jFZa4oB1Uab613hK34nTP3xtuuCFenSPxCyvusgkVP/axjzn9G3pRX2cVXrWvJCff0+9g\nHXTJquiuJSGWr3/96+7FF18Msepe1Fmvs9tuu82LulCJbAX22d9wncFv3EaWv43t/e+///54\ngtr2S/AMAukLEPLTN879HjSDfD9mkb/ssss6Pjs/ODjozjnnHDvDne1LXhOw6LZWWZ01mrR7\n2mt2fRskltrrTgcQ6qWancnvPOQreKc56Z4aqxYP2EGVeo9n8vXHWff9pXQuoPf/Rz/60c5X\n8HjJ8847L7Pa6cCoziwnUbIM+atXr3aa6yS0oktwdIkJE2MtvecU7DTTPqVYAup3hXsmoe2s\n3zVSSycKOCDWmRdLpSOQbeJJpw1stc8C+oCv22plXTRUv5vQriH7lYTvn95Jm3fs2HHoyHcn\ny/eyzHRtyibdS/tMvnPlSqmr4foK+TU7C5DeoYeZkD9oeBoxsNSiyyt0Hf7/Z+884OQ4y/v/\n7l6XZFnFRXI9WXLvvSIXjI0NGBtiMMXE4IQSWogDIeFPJ4WS5AMkhPBJIIFASIjBYEKo7r3b\nkqtcZFvNRbKsdrqyu//nO6e5m9vbMrM7874zs89jr3Zvd+Ytv2nv76kuSkG2OuY07AdpwmU/\nD94PJPO0JcRvxuGyD/42w6UOOOAAJ/fSdo4LOSTIfk2eFJX2EECh5OKZ396ode92ECC58je/\n+c3Yy362M6a070v1mauuukpLT6b9QOV4fEryc3xwbU2NRart0nnM7fjjj49E8knSh0XfttiM\nyx8dGzEjWNiTZNMAKKXGto+gTAjZkbgRl2NKiNfo+JGJwFMmhB1XVWPUzVbNexUoIf9EmUWs\n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\ndt5557kTly1bZldddZX98ccfxWfE3pwWIMjP6cfHzSOQOwLxQb4P7GfOnBkN7nOnNNwpAggg\ngAACCCBQPgIPPfSQaQag//znP8Ve8J133nEBvQ56+OGH7bDDDrPq1atbtWrV7LLLLrOjjz7a\nna+gf8yYMcXmxc7cFiDIz+3nx90jkFMCBPY59bi4WQQQQAABBBDIAgG1dFQN/H//+1/75Zdf\n3B1NnjzZrr76alu+fHn0DtUcX2mPPfawFi1aRLf//vvv9swzz9iUKVOi21auXBldZyV8AvTJ\nD98zpUQIZKVAGKb/y0pYbgoBBBBAAAEEQi2gpvaRSMRWrFhhN9xwg/3www/RGnsF86effror\n/5o1a9xyk002ccv169fb6NGjbdiwYbZgwQK3rWnTpm7Gos6dO7vv/AinAEF+OJ8rpUIAAQQQ\nQAABBBBAAIEQCPTo0cOGDBliS5YssZdeeilaoo4dO9qBBx4Y/e772X/66aeu5n748OE2f/58\nt3+nnXYyVbh069bNKlWqFD2HlXAKEOSH87lSKgQQQAABBBBAAAEEEMhxAdXAX3vttS7A90Vp\n2LCh3Xnnnbb77rv7TW65//7728iRI001+tddd53b1qRJE+vTp491797dKlcu3FP7119/tU03\n3bRQHnwJh0DhJx2OMlEKBBBAAAEEEEAAAQQQQCDnBb799lt7//33XTmqVv2rfnbp0qXWuHHj\njcrWoUMHq1mzZnT7oEGDXM3/EUccsVGAP336dGvfvr29+uqr0eNZCY8AQX54niUlQQABBBBA\nAAEEEEAAgRwWUJP7P//8M1qCtm3buinvnnzySVPQrrRq1SrTiPvxSX3x/Qj62jdr1qyNgntt\n17R6Z555pmnwPY20TwqfAB0yEj/TN4PNHRPvyuzWfv36uQzVR4aEAAIIIIAAAggggAAC+SWw\nevVqN0DeuHHjXNCtYP3www93wf0WW2wRxdAo+V27djXV7teqVctef/11q1OnTnS/VhS4H3XU\nUbZw4UK3vXfv3jZgwAA3ld7XX39telmgJv16kaCm/E888YTVrVu3UB6pftF0yb169Ur19FTO\nOzg4qSCVE8N+DkF+4idcbkG+vzzBvpdgiQACCCCAAAIIIIBAfghoWrurrrrKvv/++40K3LJl\nS3v66afNN9PXAS+88IINHDjQHatR9y+77LKNzlOwreBeLwWUqlWr5l4G/Pjjj9FjDzroIBs8\n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\n16m5T5swbzNgCr30H30kyEItIhTwhz4x9V7oHzEFRAABBBBAAAEEckrAzxKlm9ZI+bFJTeX9\n6Pf6OzY26QWB0pdffmnffvtt7K5C6xqh36fYKe/Uj18vCJSmTJniD0l7qeA+z6bCKwjQDt7w\n0TopTQFq8tMEjDm9IFinZj8GhFUEEEAAAQQQQAABBNIR8MG3as6LSpq/XiPpf/PNNy5YP+CA\nA9x89Tpete4aYV+D7GkwPA2Cp6nvlKpVq2bjxo1z63oR0L59e7ce/0P5anA9pbPPPts233xz\nt657UssAXS/2ZYLbmcIPau5TQOOUhAKVEm5lYyYEIkEm9NnPhCR5IIAAAggggAACCOSVgIJ7\nzU2vPvOavu6RRx7ZaOC8WBANsHfUUUe5TW3btnXH+/1qst+lSxfTKPm77babPffcc26X+tsr\nsNfgeQry1Xy/efPm/rTosm/fvvbqq6/a1ltvbW+88YZVr149ui8TK/S5z4QiecQKUJMfq5HZ\n9YIgO2r2M2tKbggggAACCCCAAAI5LqAB8W666SY3h7yC7kRJze7Hjh3rdmle+gkTJriAfKut\ntkp0uKk2XzXus2bNcv3sFeirn7zSFlts4frVa5C+H3/80fWd33HHHV1gr5H1Fbj/+eefVlBQ\n4Pr0161b152npvkagd+/FLjssstsr732cvsy8YOa+0wokkciAWryE6mUzbZIkC01+2VjS64I\nIIAAAggggAACOSKgpu2vvfaam2v+3nvvTXjX9913n911112F9qnp/X//+1/X5L7Qjg1fvv76\nazvyyCNdwN66dWsbMWJE9LCFCxe62nxNhafp7l544YXovgsuuMDefPNN911N8NX8XteaPHmy\nezmgHRphf9iwYRmpxafmPkrPShkJUJNfRrAJsi0ItlGznwCGTQgggAACCCCAAAL5I6DgWX3k\nFVAXNaq9+tGriXyNGjXshBNOsM8//9zWrl1r48ePd7XpasIfn1TLr9p8BfsK6hXoa3o7JdXm\nq0++8lm8eLFrlu/nrteI/GpdoBH61aR/zpw5bjC+lStXWqVKleySSy6xQYMGpT1FHjX38U+M\n72UlQJBfVrJF51sQ7CLYL9qHPQgggAACCCCAAAIhFtCUdxqNXrXqmqs+UVKArT7yajKvWn2l\nqVOnunMU6Ks23g+gF3t+06ZNbeTIkW6T+vX36NEjulv97Z944gn7448/3MsAvWBQEK+XDd27\n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\nPPKIDR48eKPB8DQNnqaW80G+Ttb0dl27dnUB/J577ulq/RNlesIJJ9i0adPcHPaqzVd/+9ik\nbgAaoE99/TUlXmzSSwH129cLCr1ISCYpuKfmPhkpjslXAWry8/XJl77cBcEp1OyX3o0zEEAA\nAQQQQACBMhcoKCiwOXPmuOuof7umnotPTz/9tN14440uaFf/+QsuuMBNbzd16tTodHiayk61\n70qatm7BggU2Y8YM++GHH2yPPfawxo0bx2fr+urrxYJq5BWwH3bYYYWO0bR66gpQpcrGoYcG\n8Lvooos2ejFQKIMNX6i5T6TCNgQ2FqAmf2MTtiQnEAkOo2Y/OSuOQgABBBBAAAEEylTg559/\ntgceeMANfte6deuNrqUm9/vvv78b7O6MM86wa665JnrMs88+a9dee637Pnz4cDcvvd/57bff\nWpcuXWz9+vXWqlUr07GJUs+ePU0j51euXNneeecd22qrrRIdltI2au5TYuOkPBbY+HVaHmNQ\n9FIJFARHU7NfKjIORgABBBBAAAEEykZA/dvbt29vDRo0cE3xly9fbqpB90n96x966CH39eab\nb3Yj6Pt9atr/+OOPu2nvNHe9n+5O+2vXru2a2k+fPt00OJ8CfY3AH5800v6HH35oZ599th1w\nwAEJB+mLP6ek79TclyTEfgQSC/zVFifxPrYikIxAJDjIf0Jfs6/+X7GJ0fhjNVhHAAEEEEAA\ngYoWmDx5sl155ZUu0H/jjTfcYHe6J02T55Nq53faaSf/1S19U3r1zY9PF154oWmkfM13r7+F\n/Ij4sceplcDrr78euynldWruU6bjRAScADX5/CJkSqAgyIia/Uxpkg8CCCCAAAIIIJCCgJrK\njx8/3s1Pr9r9fffd1+Wi5vNPPvmk/frrr6Y++OqTr1p6JQ24N2nSJNfU/rLLLttovvotttjC\n9cn/4osvXG2+Ru/fcccd3bmZ/EHNfSY1ySufBSrlc+Epe5kKRILcQ1+z7wX79evnVqnZ9yIs\nEUAAAQQQQKAiBNatW2cazG7RokUuiFdt/mabbeZuZdiwYW7qPH3RQHga2f6jjz6yr776yu3X\nFHoK8hMljY7fuXNn10JAA/vdcccdiQ5LaRs19ymxcRICRQpQk18kDTvSFCgIzqdmP01ETkcA\nAQQQQAABBOIFNNK9ms3/61//csH27NmzoyPaq9m9pql76623XBP9TTbZxPxAfJqLfu7cufb1\n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\nrBGgJj9rHgU3kiGBSJAPNfsZwiQbBBBAAAEEEEhPQKPeq2++avVVu67a/C233DKaqUawHzly\npPt+zz33JBzNXs311WxfSdPhqRuAkkbY//nnn61BgwaFWgi4nSn8UHCve9AyT1JBUE5VFmlJ\nQiA0AtTkh+ZRUpANAgXBkpp9fh0QQAABBBBAICsEVJuvfvdqdq8p7ypXruym1/M316JFC1ON\nvOa5L6o2f7vttrOPPvrIFixY4Kba06j5muteXQC23npr22STTXx2KS2puU+JjZMQyFoBgvys\nfTTcWJoCBcH5BPtpInI6AggggAACCKQvoEBefe81Ld6XX37pRtHXvPRKCtRVG6/56rVs2rSp\n7bzzzhtddPvtt7fnnnvO9fHXSPvpBva6AMH9RsxsQCAUAjTXD8VjpBBJCESCY2jGnwQUhyCA\nAAIIIIBA0QJff/21aX55zWFfmnT//fdHB80799xz7fLLL4+ermb3GnRP/fYV4I8dO9bV+EcP\n2LCyZs2ajAX3NMuP1+U7AuERIMgPz7OkJMkJRILDCPaTs+IoBBBAAAEEENggoGnqhg4dai+/\n/LL9+eefNm7cOFfrXhTQW2+95UbVV9N6pVWrVrm++cuWLTPV4qtvfuyUeTfddJM9+uij7th/\n//vf5s9zGzL0gz73GYIkGwSyXIAgP8sfELdXZgKRIGeC/TLjJWMEEEAAAQRyX0B96CdOnOgC\n+oKCAhfcq1Rt2rSxO+64w/WHjy/l22+/bUOGDHHN79X/fvLkya7/vI4bPny4O0/rZ511ll11\n1VVadWnx4sXWqVMn16R/n332iQ7G5/ensyS4T0ePcxHIPQGC/Nx7ZtxxZgUiQXYE+5k1JTcE\nEEAAAQRyXmDu3Lk2YMAA++KLLwqVRYH77bffvlFzfQXzCu4/+eST6PFqgn/rrbe6fvfauHr1\nalebv3TpUtfs/vXXX7d69epFj7/33ntt6tSp1q9fP2vVqlV0e6orBPepynEeArktQJCf28+P\nu8+cQCTIimA/c57khAACCCCAQM4KLFmyxLp162ZqWq856dX/vnbt2vbYY4+5bVWqVLFnn33W\ndt11V1fGUaNG2Q03/O/PCE2Zp0Dd74+FePDBB+22225zm84880w3t33s/kysE9xnQpE8EMhd\nAYL83H123HnZCESCbP/3f+myuUbW5Ko/QJT69u2bNffEjSCAAAIIIFDRAtddd50988wzbv55\njYqvaeqUNOBejx493FR4vXr1Mh2nNGPGDLf9gAMOsP79+9tuu+3mtif68euvv7pm+RpJv1at\nWvbxxx8nOiylbQT3KbFxEgKhE6gauhJRIATSE4gEp/tP6IN9jawbmwj2YzVYRwABBBDIVwFN\nZ6ekgN4H+PrerFkzNwq+Bt97//33tcml5s2b2wcffGA1a9b0m4pcatC9Sy+91F555RXTKPuZ\nSAT3mVAkDwTCI0CQH55nSUkyKxAJsvMfgv3M2pIbAggggAACFS6g6eh+//33aH/52Btavny5\n+6pm+/GpTp06btMWW2xRaFcyAb4/4YQTTjB90k0E9+kKcj4C4RQgyA/nc6VUmROIBFn5D8F+\n5lzJCQEEEEAAgYwJrF271mrUqJFUfgqM77vvPvvwww9ds/umTZvaNddcY23bto2er9HzR48e\nbS+88ILrm7/vvvu6fXPmzHFz2OvLnnvuGT2+vFcI7stbnOshkFsC9MnPrefF3Va8QCS4hdAH\n+56ZPvtegiUCCCCAQDYKqKb98ssvd9PUaRT7o48+utjbfOmll9y0dZoaLzZpxPw777zTunbt\n6jarKf4ZZ5zh1vXy4LzzzrMffvjBxo8f7+a733bbbd20eptttllsNmW+TnBf5sRcAIFQCBDk\nh+IxUogKEIgE1yTYrwB4LokAAgggkL8CGu1ezeQVlCu99dZbLgDXesuWLe3555/XaqH07bff\nmqas22GHHeyggw4yDXynWngF9J9++qmpf72SmuEriK9bt677PmzYMDclnvsS80M1/nqhUL9+\n/ZitZbtKcF+2vuSOQNgEqoStQJQHgXISKAiuMyj46EVZx+AT6qQ/LvSpVKmSW7Zu3TrU5aVw\nCCCAAALZJaCa9yuuuMKuvPJKN5Wdbyqv6e0mTpzoatdPPvlk22+//Qrd+KRJk6xnz56u1l15\nTJkyxfT/sIceesgdq0D/zz//dIPmqY/+ihUr3Dz2ykTH/fHHH26fXiAce+yxdskll9hFF13k\nztHo+7fccov961//sscff9y9SNA5/gVEoRtJ8Yv+3ztw4EAbOnSoLVy4MMVccuq0guBuewcf\n/Y01N/iQEEAgBQEFKCQEEEhfIBJkQc1++o7kgAACCCCAwEYC6nOvWnjV5NerV89ef/1122ST\nTdxxCswVWCdqOq8+9N27d3fBus903Lhxpn74PmnwveOOO85Nj1elShX30qBRo0ZutwL4xx57\nzI466ii7/fbb7fvvv7dHH33Unn76afdiwefhl6effrpde+21/mvKS2ruU6bjRAQQCASoyefX\nAIHMCBQE2eits16cdQw+oU7U7If68VI4BBBAIOsEqlat6gL19957z1avXu1q8/faay93n+oz\nX716dddn/uGHH3bN7lXDr6Qm+PPnz3cBvL43adLEzWOvdZ/0gqBBgwZuQD3V6q9cudJNk6f9\n3333nRUUFLjzVXOvJvxTp051A/Y1bNjQTjzxROvcubPbtm7dOvv666/tnHPOSbk2n5p7/1RY\nIoBAOgLU5Kejx7kIFC0QCXZRs1+0D3sQQAABBBAolcCqVausU6dOrlm8+s2/8cYbpjnnldav\nX++a1ytAP/DAA+2///1vNO958+a5EfJ1TFH99nWwAnb10VdtvvrpN27c2DSwn6a6W7BgQTS/\nFi1auPnt1dRfxyppQL8BAwa49QkTJtiOO+7o1pP9Qc19slIchwACyQhQk5+MEscgUHqBguAU\navZL78YZCCCAAAIIJBRQbb3S5MmT3eB5m2++ue29995um2rjp02bZrNnz3Y19+3btzeNgK+0\n5ZZbuiD9yy+/tMWLF9vuu+/uBuFzO2N+6PgxY8a4/vbqAnDYYYe5lwjqi68m/arB32mnnVyN\n/y677FKotl773nzzTdeiQGMH+OA/JvuEq9TcJ2RhIwIIpCnw19CkaWbC6QggUKRAJNijFjMK\n+EOf7rnnHtNHAwTpQ0IAAQQQQCCTAqecckp09HvV1qt23yc/7au+DxkyxG92Sw2W5wNv/X8q\nUdKLAf/SYOzYsab+/EoazV8tBJTiB/bTtlmzZtkdd9yhVdf/v1q1am69uB8K7nv16uU+Ws+D\nVBCU8eANH62TEECgDAWoyS9DXLJGIEagIFinZj8GhFUEEEAAAQRKK6AAWrX27777rmk0/Fq1\natm+++7rstGAfOoT/80335imzdNUd9ttt53bV7t2bTdo3vTp0+3HH3+0Vq1aJazN1/GjR492\ntfnLly93/e2VwbPPPuuCfo3Qf8ghh7hB/nSNESNGuFH/9bJB/f3VZ9+3OHAXjvtBzX0cCF8R\nQKBMBFTDSEIAgfIXiASXpM9++btzRQQQQACBHBNQ0D58+PDoNHcKpj/44ANXCjXF10j7fmT9\nr776yo488ki3b//993cj4fviql99ly5dXNP74vrmn3rqqfbhhx+6Zv0abE/prrvusvvuu8+t\n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\nkwa6O++881w/fL8tdo779u3bu+b4fp/OP/roo12/fG174oknTDX+iZKa5vvr6hxNfeen0lNz\nfI2mP3HiRHfqqaeean//+98TZVPqbQruNV2qlnmSCoJyKrDXkoQAAggUK8DAe8XysBMBBDYI\nRIKl/4Q+2NcfjrFJ0zyREEAAgWwUqF27trstBdQKzlUTr49q699++22375BDDikU4Gvjbrvt\n5kbK1/R2S5cudcf5Hzpfwbv/t0+19UUF+YMGDXL9/DWl3ujRo936AQcc4F4QTJ061WfpXjKo\nFUG6ieA+XUHORwCBfBDIXHupfNCijAggEAkI1AJItQmhTwr29dG8zfqQEEAAgWwTaNCggbsl\nTV+nQNun/v37+1X371j0S8xKrVq13Ledd945Zutfqxo4TyPkK2laPD9q/l97//dTA+WpT79e\nGigtWLDAnnrqKfMBftOmTe3RRx819d/Xy4NUk4J7tUjQJ09q7wsCq4M3fLROQgABBJIWoE9+\n0lQciAACMQIFwboCff3F1jH4hDrpD0p99AeqlvTZD/XjpnAI5JSA5qtX/3ulbt26uenttK7p\n7jS13bx580y1/JqSbvvtt9culzR6/uDBg13tv4L8uXPnuu1+znv9e6dp9l566SX7448/XL/z\nj73jAAAojUlEQVR+tQhIlBTo9+jRw7bddls3Or6ufcQRR5imytPLBg3Kl2rSv7n0uU9Vj/MQ\nQCBfBVJ/pZqvYpQbAQQSCUSCjaFvxu8LztR7XoIlAghUtMBPP/1kah6vdPfdd1vXrl2jt6Qg\n//jjj3ff99hjD3v66adNNf6jRo2yO+64wzT6fnzSNHba52v5Fbyr/37VqlVd3/p0Avb4axX3\nXcE9fe6LE2IfAgggULQANflF27AHAQSSFygIDqVmP3kvjkQAAQQyIrDpppva8OHDbf369aZA\nXjX2PqlGXTX2c+bMsUWLFrm+9xoYb/z48fb777+7wzSv/TbbbGOLFy9231Wjr5r/zp07u+/a\npz75qs1Xq4FOnTr57MtkSc19mbCSKQII5JkANfl59sApLgLlJBAJrkPNfjlhcxkEEMhvAQXk\napav/urXXXddIQwF+ccee2yhbdWrV7eTTz7ZevbsaU2aNHH7pkyZYueee66tXbvWfVdg76fN\nU2sAtQrQ9HgaKb9Ro0aF8svEF2ruM6FIHggggMBfAtTk85uAAAJlIVAQZErNflnIkicCCCAQ\n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","type":"binary"},{"name":"www/logos.png","content":"iVBORw0KGgoAAAANSUhEUgAABbYAAADVCAYAAACLx6ayAAAATmVYSWZNTQAqAAAACAAEARoA\nBQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAAhMAAwAAAAEAAQAAAAAAAAAAAGAA\nAAABAAAAYAAAAAF3Bd/nAABAAElEQVR4AeydBWAU1xaG/xD34AQSCO7u7tpSpNS9UKUGdXlt\nqRvUvdSpQEuN4u7uJHhCiLt7yDvnbmbZ3axGSFLOfW+zM3eufjOzZf85+1+nEkqQJASEgBAQ\nAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACQqCWEKhTS8YpwxQCQkAICAEhIASEgBAQAkJA\nCAgBISAEhIAQEAJCQAgIASGgCIiwLReCEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJC\nQAjUKgIibNeq0yWDFQJCQAgIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBEbblGhACQkAI\nCAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIgVpFQITtWnW6ZLBCQAgIASEgBISAEBACQkAI\nCAEhIASEgBAQAkJACAgBISDCtlwDQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASFQ\nqwiIsF2rTpcMVggIASEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAERNiWa0AICAEhIASE\ngBAQAkJACAgBISAEhIAQEAJCQAgIASEgBGoVARG2a9XpksEKASEgBISAEBACQkAICAEhIASE\ngBAQAkJACAgBISAEhIAI23INCAEhIASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBIRArSIg\nwnatOl0yWCEgBISAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEGFbrgEhIASEgBAQAkJA\nCAgBISAEhIAQEAJCQAgIASEgBISAEKhVBETYrlWnSwYrBISAEBACQkAICAEhIASEgBAQAkJA\nCAgBISAEhIAQEAIibMs1IASEgBAQAkJACAgBISAEhIAQEAJCQAgIASEgBISAEBACtYqACNu1\n6nTJYIWAEBACQkAICAEhIASEgBAQAkJACAgBISAEhIAQEAJCQIRtuQaEgBAQAkJACAgBISAE\nhIAQEAJCQAgIASEgBISAEBACQqBWEXCpVaOVwQoBISAEhIAQEAJCwITAhfwC5MYmoCAlFXnx\n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","type":"binary"}]
diff --git a/docs/AlloMate/edit/index.html b/docs/AlloMate/edit/index.html
new file mode 100644
index 0000000..a0190f6
--- /dev/null
+++ b/docs/AlloMate/edit/index.html
@@ -0,0 +1,11 @@
+
+
+
+
Redirect to editable app
+
+
+
+
diff --git a/docs/AlloMate/index.html b/docs/AlloMate/index.html
new file mode 100644
index 0000000..2440421
--- /dev/null
+++ b/docs/AlloMate/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
Shiny App
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/shinylive-sw.js b/docs/shinylive-sw.js
new file mode 100644
index 0000000..18d0460
--- /dev/null
+++ b/docs/shinylive-sw.js
@@ -0,0 +1,2375 @@
+// Shinylive 0.9.1
+// Copyright 2024 Posit, PBC
+var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {
+ get: (a2, b) => (typeof require !== "undefined" ? require : a2)[b]
+}) : x2)(function(x2) {
+ if (typeof require !== "undefined")
+ return require.apply(this, arguments);
+ throw Error('Dynamic require of "' + x2 + '" is not supported');
+});
+
+// src/assets/shinylive-inject-socket.txt
+var shinylive_inject_socket_default = '// src/messageportwebsocket.ts\nvar MessagePortWebSocket = class extends EventTarget {\n constructor(port) {\n super();\n this.readyState = 0;\n this.addEventListener("open", (e) => {\n if (this.onopen) {\n this.onopen(e);\n }\n });\n this.addEventListener("message", (e) => {\n if (this.onmessage) {\n this.onmessage(e);\n }\n });\n this.addEventListener("error", (e) => {\n if (this.onerror) {\n this.onerror(e);\n }\n });\n this.addEventListener("close", (e) => {\n if (this.onclose) {\n this.onclose(e);\n }\n });\n this._port = port;\n port.addEventListener("message", this._onMessage.bind(this));\n port.start();\n }\n // Call on the server side of the connection, to tell the client that\n // the connection has been established.\n accept() {\n if (this.readyState !== 0) {\n return;\n }\n this.readyState = 1;\n this._port.postMessage({ type: "open" });\n }\n send(data) {\n if (this.readyState === 0) {\n throw new DOMException(\n "Can\'t send messages while WebSocket is in CONNECTING state",\n "InvalidStateError"\n );\n }\n if (this.readyState > 1) {\n return;\n }\n this._port.postMessage({ type: "message", value: { data } });\n }\n close(code, reason) {\n if (this.readyState > 1) {\n return;\n }\n this.readyState = 2;\n this._port.postMessage({ type: "close", value: { code, reason } });\n this.readyState = 3;\n this.dispatchEvent(new CloseEvent("close", { code, reason }));\n }\n _onMessage(e) {\n const event = e.data;\n switch (event.type) {\n case "open":\n if (this.readyState === 0) {\n this.readyState = 1;\n this.dispatchEvent(new Event("open"));\n return;\n }\n break;\n case "message":\n if (this.readyState === 1) {\n this.dispatchEvent(new MessageEvent("message", { ...event.value }));\n return;\n }\n break;\n case "close":\n if (this.readyState < 3) {\n this.readyState = 3;\n this.dispatchEvent(new CloseEvent("close", { ...event.value }));\n return;\n }\n break;\n }\n this._reportError(\n `Unexpected event \'${event.type}\' while in readyState ${this.readyState}`,\n 1002\n );\n }\n _reportError(message, code) {\n this.dispatchEvent(new ErrorEvent("error", { message }));\n if (typeof code === "number") {\n this.close(code, message);\n }\n }\n};\n\n// src/shinylive-inject-socket.ts\nwindow.Shiny.createSocket = function() {\n const channel = new MessageChannel();\n window.parent.postMessage(\n {\n type: "openChannel",\n // Infer app name from path: "/foo/app_abc123/"" => "app_abc123"\n appName: window.location.pathname.replace(\n new RegExp(".*/([^/]+)/$"),\n "$1"\n ),\n path: "/websocket/"\n },\n "*",\n [channel.port2]\n );\n return new MessagePortWebSocket(channel.port1);\n};\n';
+
+// src/utils.ts
+function sleep(ms) {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
+function dirname(path) {
+ if (path === "/" || path === "") {
+ return "";
+ }
+ return path.replace(/[/]?[^/]+[/]?$/, "");
+}
+function uint8ArrayToString(buf) {
+ let result = "";
+ for (let i = 0; i < buf.length; i++) {
+ result += String.fromCharCode(buf[i]);
+ }
+ return result;
+}
+
+// node_modules/webr/dist/webr.mjs
+var sn = Object.create;
+var Zr = Object.defineProperty;
+var nn = Object.getOwnPropertyDescriptor;
+var on = Object.getOwnPropertyNames;
+var an = Object.getPrototypeOf;
+var ln = Object.prototype.hasOwnProperty;
+var B = ((s) => typeof __require < "u" ? __require : typeof Proxy < "u" ? new Proxy(s, { get: (e, t) => (typeof __require < "u" ? __require : e)[t] }) : s)(function(s) {
+ if (typeof __require < "u")
+ return __require.apply(this, arguments);
+ throw new Error('Dynamic require of "' + s + '" is not supported');
+});
+var S = (s, e) => () => (e || s((e = { exports: {} }).exports, e), e.exports);
+var cn = (s, e, t, r) => {
+ if (e && typeof e == "object" || typeof e == "function")
+ for (let n of on(e))
+ !ln.call(s, n) && n !== t && Zr(s, n, { get: () => e[n], enumerable: !(r = nn(e, n)) || r.enumerable });
+ return s;
+};
+var oe = (s, e, t) => (t = s != null ? sn(an(s)) : {}, cn(e || !s || !s.__esModule ? Zr(t, "default", { value: s, enumerable: true }) : t, s));
+var fr = (s, e, t) => {
+ if (!e.has(s))
+ throw TypeError("Cannot " + t);
+};
+var a = (s, e, t) => (fr(s, e, "read from private field"), t ? t.call(s) : e.get(s));
+var u = (s, e, t) => {
+ if (e.has(s))
+ throw TypeError("Cannot add the same private member more than once");
+ e instanceof WeakSet ? e.add(s) : e.set(s, t);
+};
+var d = (s, e, t, r) => (fr(s, e, "write to private field"), r ? r.call(s, t) : e.set(s, t), t);
+var E = (s, e, t) => (fr(s, e, "access private method"), t);
+var He = S((C) => {
+ "use strict";
+ Object.defineProperty(C, "__esModule", { value: true });
+ C.getUint64 = C.getInt64 = C.setInt64 = C.setUint64 = C.UINT32_MAX = void 0;
+ C.UINT32_MAX = 4294967295;
+ function fn(s, e, t) {
+ let r = t / 4294967296, n = t;
+ s.setUint32(e, r), s.setUint32(e + 4, n);
+ }
+ C.setUint64 = fn;
+ function Rn(s, e, t) {
+ let r = Math.floor(t / 4294967296), n = t;
+ s.setUint32(e, r), s.setUint32(e + 4, n);
+ }
+ C.setInt64 = Rn;
+ function mn(s, e) {
+ let t = s.getInt32(e), r = s.getUint32(e + 4);
+ return t * 4294967296 + r;
+ }
+ C.getInt64 = mn;
+ function gn(s, e) {
+ let t = s.getUint32(e), r = s.getUint32(e + 4);
+ return t * 4294967296 + r;
+ }
+ C.getUint64 = gn;
+});
+var Ot = S((M) => {
+ "use strict";
+ var _r, Sr, kr;
+ Object.defineProperty(M, "__esModule", { value: true });
+ M.utf8DecodeTD = M.TEXT_DECODER_THRESHOLD = M.utf8DecodeJs = M.utf8EncodeTE = M.TEXT_ENCODER_THRESHOLD = M.utf8EncodeJs = M.utf8Count = void 0;
+ var ps = He(), At = (typeof process > "u" || ((_r = process == null ? void 0 : process.env) === null || _r === void 0 ? void 0 : _r.TEXT_ENCODING) !== "never") && typeof TextEncoder < "u" && typeof TextDecoder < "u";
+ function bn(s) {
+ let e = s.length, t = 0, r = 0;
+ for (; r < e; ) {
+ let n = s.charCodeAt(r++);
+ if (n & 4294967168)
+ if (!(n & 4294965248))
+ t += 2;
+ else {
+ if (n >= 55296 && n <= 56319 && r < e) {
+ let o = s.charCodeAt(r);
+ (o & 64512) === 56320 && (++r, n = ((n & 1023) << 10) + (o & 1023) + 65536);
+ }
+ n & 4294901760 ? t += 4 : t += 3;
+ }
+ else {
+ t++;
+ continue;
+ }
+ }
+ return t;
+ }
+ M.utf8Count = bn;
+ function wn(s, e, t) {
+ let r = s.length, n = t, o = 0;
+ for (; o < r; ) {
+ let i = s.charCodeAt(o++);
+ if (i & 4294967168)
+ if (!(i & 4294965248))
+ e[n++] = i >> 6 & 31 | 192;
+ else {
+ if (i >= 55296 && i <= 56319 && o < r) {
+ let l = s.charCodeAt(o);
+ (l & 64512) === 56320 && (++o, i = ((i & 1023) << 10) + (l & 1023) + 65536);
+ }
+ i & 4294901760 ? (e[n++] = i >> 18 & 7 | 240, e[n++] = i >> 12 & 63 | 128, e[n++] = i >> 6 & 63 | 128) : (e[n++] = i >> 12 & 15 | 224, e[n++] = i >> 6 & 63 | 128);
+ }
+ else {
+ e[n++] = i;
+ continue;
+ }
+ e[n++] = i & 63 | 128;
+ }
+ }
+ M.utf8EncodeJs = wn;
+ var ze = At ? new TextEncoder() : void 0;
+ M.TEXT_ENCODER_THRESHOLD = At ? typeof process < "u" && ((Sr = process == null ? void 0 : process.env) === null || Sr === void 0 ? void 0 : Sr.TEXT_ENCODING) !== "force" ? 200 : 0 : ps.UINT32_MAX;
+ function xn(s, e, t) {
+ e.set(ze.encode(s), t);
+ }
+ function vn(s, e, t) {
+ ze.encodeInto(s, e.subarray(t));
+ }
+ M.utf8EncodeTE = ze != null && ze.encodeInto ? vn : xn;
+ var En = 4096;
+ function Pn(s, e, t) {
+ let r = e, n = r + t, o = [], i = "";
+ for (; r < n; ) {
+ let l = s[r++];
+ if (!(l & 128))
+ o.push(l);
+ else if ((l & 224) === 192) {
+ let p = s[r++] & 63;
+ o.push((l & 31) << 6 | p);
+ } else if ((l & 240) === 224) {
+ let p = s[r++] & 63, D = s[r++] & 63;
+ o.push((l & 31) << 12 | p << 6 | D);
+ } else if ((l & 248) === 240) {
+ let p = s[r++] & 63, D = s[r++] & 63, b = s[r++] & 63, j = (l & 7) << 18 | p << 12 | D << 6 | b;
+ j > 65535 && (j -= 65536, o.push(j >>> 10 & 1023 | 55296), j = 56320 | j & 1023), o.push(j);
+ } else
+ o.push(l);
+ o.length >= En && (i += String.fromCharCode(...o), o.length = 0);
+ }
+ return o.length > 0 && (i += String.fromCharCode(...o)), i;
+ }
+ M.utf8DecodeJs = Pn;
+ var Tn = At ? new TextDecoder() : null;
+ M.TEXT_DECODER_THRESHOLD = At ? typeof process < "u" && ((kr = process == null ? void 0 : process.env) === null || kr === void 0 ? void 0 : kr.TEXT_DECODER) !== "force" ? 200 : 0 : ps.UINT32_MAX;
+ function _n(s, e, t) {
+ let r = s.subarray(e, e + t);
+ return Tn.decode(r);
+ }
+ M.utf8DecodeTD = _n;
+});
+var Dr = S((It) => {
+ "use strict";
+ Object.defineProperty(It, "__esModule", { value: true });
+ It.ExtData = void 0;
+ var Mr = class {
+ constructor(e, t) {
+ this.type = e, this.data = t;
+ }
+ };
+ It.ExtData = Mr;
+});
+var Ct = S((Ut) => {
+ "use strict";
+ Object.defineProperty(Ut, "__esModule", { value: true });
+ Ut.DecodeError = void 0;
+ var we = class extends Error {
+ constructor(e) {
+ super(e);
+ let t = Object.create(we.prototype);
+ Object.setPrototypeOf(this, t), Object.defineProperty(this, "name", { configurable: true, enumerable: false, value: we.name });
+ }
+ };
+ Ut.DecodeError = we;
+});
+var Wr = S((_) => {
+ "use strict";
+ Object.defineProperty(_, "__esModule", { value: true });
+ _.timestampExtension = _.decodeTimestampExtension = _.decodeTimestampToTimeSpec = _.encodeTimestampExtension = _.encodeDateToTimeSpec = _.encodeTimeSpecToTimestamp = _.EXT_TIMESTAMP = void 0;
+ var Sn = Ct(), ds = He();
+ _.EXT_TIMESTAMP = -1;
+ var kn = 4294967296 - 1, Mn = 17179869184 - 1;
+ function hs({ sec: s, nsec: e }) {
+ if (s >= 0 && e >= 0 && s <= Mn)
+ if (e === 0 && s <= kn) {
+ let t = new Uint8Array(4);
+ return new DataView(t.buffer).setUint32(0, s), t;
+ } else {
+ let t = s / 4294967296, r = s & 4294967295, n = new Uint8Array(8), o = new DataView(n.buffer);
+ return o.setUint32(0, e << 2 | t & 3), o.setUint32(4, r), n;
+ }
+ else {
+ let t = new Uint8Array(12), r = new DataView(t.buffer);
+ return r.setUint32(0, e), (0, ds.setInt64)(r, 4, s), t;
+ }
+ }
+ _.encodeTimeSpecToTimestamp = hs;
+ function ys(s) {
+ let e = s.getTime(), t = Math.floor(e / 1e3), r = (e - t * 1e3) * 1e6, n = Math.floor(r / 1e9);
+ return { sec: t + n, nsec: r - n * 1e9 };
+ }
+ _.encodeDateToTimeSpec = ys;
+ function fs(s) {
+ if (s instanceof Date) {
+ let e = ys(s);
+ return hs(e);
+ } else
+ return null;
+ }
+ _.encodeTimestampExtension = fs;
+ function Rs(s) {
+ let e = new DataView(s.buffer, s.byteOffset, s.byteLength);
+ switch (s.byteLength) {
+ case 4:
+ return { sec: e.getUint32(0), nsec: 0 };
+ case 8: {
+ let t = e.getUint32(0), r = e.getUint32(4), n = (t & 3) * 4294967296 + r, o = t >>> 2;
+ return { sec: n, nsec: o };
+ }
+ case 12: {
+ let t = (0, ds.getInt64)(e, 4), r = e.getUint32(0);
+ return { sec: t, nsec: r };
+ }
+ default:
+ throw new Sn.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${s.length}`);
+ }
+ }
+ _.decodeTimestampToTimeSpec = Rs;
+ function ms(s) {
+ let e = Rs(s);
+ return new Date(e.sec * 1e3 + e.nsec / 1e6);
+ }
+ _.decodeTimestampExtension = ms;
+ _.timestampExtension = { type: _.EXT_TIMESTAMP, encode: fs, decode: ms };
+});
+var Bt = S((Nt) => {
+ "use strict";
+ Object.defineProperty(Nt, "__esModule", { value: true });
+ Nt.ExtensionCodec = void 0;
+ var jt = Dr(), Dn = Wr(), Xe = class {
+ constructor() {
+ this.builtInEncoders = [], this.builtInDecoders = [], this.encoders = [], this.decoders = [], this.register(Dn.timestampExtension);
+ }
+ register({ type: e, encode: t, decode: r }) {
+ if (e >= 0)
+ this.encoders[e] = t, this.decoders[e] = r;
+ else {
+ let n = 1 + e;
+ this.builtInEncoders[n] = t, this.builtInDecoders[n] = r;
+ }
+ }
+ tryToEncode(e, t) {
+ for (let r = 0; r < this.builtInEncoders.length; r++) {
+ let n = this.builtInEncoders[r];
+ if (n != null) {
+ let o = n(e, t);
+ if (o != null) {
+ let i = -1 - r;
+ return new jt.ExtData(i, o);
+ }
+ }
+ }
+ for (let r = 0; r < this.encoders.length; r++) {
+ let n = this.encoders[r];
+ if (n != null) {
+ let o = n(e, t);
+ if (o != null) {
+ let i = r;
+ return new jt.ExtData(i, o);
+ }
+ }
+ }
+ return e instanceof jt.ExtData ? e : null;
+ }
+ decode(e, t, r) {
+ let n = t < 0 ? this.builtInDecoders[-1 - t] : this.decoders[t];
+ return n ? n(e, t, r) : new jt.ExtData(t, e);
+ }
+ };
+ Nt.ExtensionCodec = Xe;
+ Xe.defaultCodec = new Xe();
+});
+var Ar = S((xe) => {
+ "use strict";
+ Object.defineProperty(xe, "__esModule", { value: true });
+ xe.createDataView = xe.ensureUint8Array = void 0;
+ function gs(s) {
+ return s instanceof Uint8Array ? s : ArrayBuffer.isView(s) ? new Uint8Array(s.buffer, s.byteOffset, s.byteLength) : s instanceof ArrayBuffer ? new Uint8Array(s) : Uint8Array.from(s);
+ }
+ xe.ensureUint8Array = gs;
+ function Wn(s) {
+ if (s instanceof ArrayBuffer)
+ return new DataView(s);
+ let e = gs(s);
+ return new DataView(e.buffer, e.byteOffset, e.byteLength);
+ }
+ xe.createDataView = Wn;
+});
+var Ir = S((J) => {
+ "use strict";
+ Object.defineProperty(J, "__esModule", { value: true });
+ J.Encoder = J.DEFAULT_INITIAL_BUFFER_SIZE = J.DEFAULT_MAX_DEPTH = void 0;
+ var Ge = Ot(), An = Bt(), bs = He(), On = Ar();
+ J.DEFAULT_MAX_DEPTH = 100;
+ J.DEFAULT_INITIAL_BUFFER_SIZE = 2048;
+ var Or = class {
+ constructor(e = An.ExtensionCodec.defaultCodec, t = void 0, r = J.DEFAULT_MAX_DEPTH, n = J.DEFAULT_INITIAL_BUFFER_SIZE, o = false, i = false, l = false, p = false) {
+ this.extensionCodec = e, this.context = t, this.maxDepth = r, this.initialBufferSize = n, this.sortKeys = o, this.forceFloat32 = i, this.ignoreUndefined = l, this.forceIntegerToFloat = p, this.pos = 0, this.view = new DataView(new ArrayBuffer(this.initialBufferSize)), this.bytes = new Uint8Array(this.view.buffer);
+ }
+ reinitializeState() {
+ this.pos = 0;
+ }
+ encodeSharedRef(e) {
+ return this.reinitializeState(), this.doEncode(e, 1), this.bytes.subarray(0, this.pos);
+ }
+ encode(e) {
+ return this.reinitializeState(), this.doEncode(e, 1), this.bytes.slice(0, this.pos);
+ }
+ doEncode(e, t) {
+ if (t > this.maxDepth)
+ throw new Error(`Too deep objects in depth ${t}`);
+ e == null ? this.encodeNil() : typeof e == "boolean" ? this.encodeBoolean(e) : typeof e == "number" ? this.encodeNumber(e) : typeof e == "string" ? this.encodeString(e) : this.encodeObject(e, t);
+ }
+ ensureBufferSizeToWrite(e) {
+ let t = this.pos + e;
+ this.view.byteLength < t && this.resizeBuffer(t * 2);
+ }
+ resizeBuffer(e) {
+ let t = new ArrayBuffer(e), r = new Uint8Array(t), n = new DataView(t);
+ r.set(this.bytes), this.view = n, this.bytes = r;
+ }
+ encodeNil() {
+ this.writeU8(192);
+ }
+ encodeBoolean(e) {
+ e === false ? this.writeU8(194) : this.writeU8(195);
+ }
+ encodeNumber(e) {
+ Number.isSafeInteger(e) && !this.forceIntegerToFloat ? e >= 0 ? e < 128 ? this.writeU8(e) : e < 256 ? (this.writeU8(204), this.writeU8(e)) : e < 65536 ? (this.writeU8(205), this.writeU16(e)) : e < 4294967296 ? (this.writeU8(206), this.writeU32(e)) : (this.writeU8(207), this.writeU64(e)) : e >= -32 ? this.writeU8(224 | e + 32) : e >= -128 ? (this.writeU8(208), this.writeI8(e)) : e >= -32768 ? (this.writeU8(209), this.writeI16(e)) : e >= -2147483648 ? (this.writeU8(210), this.writeI32(e)) : (this.writeU8(211), this.writeI64(e)) : this.forceFloat32 ? (this.writeU8(202), this.writeF32(e)) : (this.writeU8(203), this.writeF64(e));
+ }
+ writeStringHeader(e) {
+ if (e < 32)
+ this.writeU8(160 + e);
+ else if (e < 256)
+ this.writeU8(217), this.writeU8(e);
+ else if (e < 65536)
+ this.writeU8(218), this.writeU16(e);
+ else if (e < 4294967296)
+ this.writeU8(219), this.writeU32(e);
+ else
+ throw new Error(`Too long string: ${e} bytes in UTF-8`);
+ }
+ encodeString(e) {
+ if (e.length > Ge.TEXT_ENCODER_THRESHOLD) {
+ let n = (0, Ge.utf8Count)(e);
+ this.ensureBufferSizeToWrite(5 + n), this.writeStringHeader(n), (0, Ge.utf8EncodeTE)(e, this.bytes, this.pos), this.pos += n;
+ } else {
+ let n = (0, Ge.utf8Count)(e);
+ this.ensureBufferSizeToWrite(5 + n), this.writeStringHeader(n), (0, Ge.utf8EncodeJs)(e, this.bytes, this.pos), this.pos += n;
+ }
+ }
+ encodeObject(e, t) {
+ let r = this.extensionCodec.tryToEncode(e, this.context);
+ if (r != null)
+ this.encodeExtension(r);
+ else if (Array.isArray(e))
+ this.encodeArray(e, t);
+ else if (ArrayBuffer.isView(e))
+ this.encodeBinary(e);
+ else if (typeof e == "object")
+ this.encodeMap(e, t);
+ else
+ throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`);
+ }
+ encodeBinary(e) {
+ let t = e.byteLength;
+ if (t < 256)
+ this.writeU8(196), this.writeU8(t);
+ else if (t < 65536)
+ this.writeU8(197), this.writeU16(t);
+ else if (t < 4294967296)
+ this.writeU8(198), this.writeU32(t);
+ else
+ throw new Error(`Too large binary: ${t}`);
+ let r = (0, On.ensureUint8Array)(e);
+ this.writeU8a(r);
+ }
+ encodeArray(e, t) {
+ let r = e.length;
+ if (r < 16)
+ this.writeU8(144 + r);
+ else if (r < 65536)
+ this.writeU8(220), this.writeU16(r);
+ else if (r < 4294967296)
+ this.writeU8(221), this.writeU32(r);
+ else
+ throw new Error(`Too large array: ${r}`);
+ for (let n of e)
+ this.doEncode(n, t + 1);
+ }
+ countWithoutUndefined(e, t) {
+ let r = 0;
+ for (let n of t)
+ e[n] !== void 0 && r++;
+ return r;
+ }
+ encodeMap(e, t) {
+ let r = Object.keys(e);
+ this.sortKeys && r.sort();
+ let n = this.ignoreUndefined ? this.countWithoutUndefined(e, r) : r.length;
+ if (n < 16)
+ this.writeU8(128 + n);
+ else if (n < 65536)
+ this.writeU8(222), this.writeU16(n);
+ else if (n < 4294967296)
+ this.writeU8(223), this.writeU32(n);
+ else
+ throw new Error(`Too large map object: ${n}`);
+ for (let o of r) {
+ let i = e[o];
+ this.ignoreUndefined && i === void 0 || (this.encodeString(o), this.doEncode(i, t + 1));
+ }
+ }
+ encodeExtension(e) {
+ let t = e.data.length;
+ if (t === 1)
+ this.writeU8(212);
+ else if (t === 2)
+ this.writeU8(213);
+ else if (t === 4)
+ this.writeU8(214);
+ else if (t === 8)
+ this.writeU8(215);
+ else if (t === 16)
+ this.writeU8(216);
+ else if (t < 256)
+ this.writeU8(199), this.writeU8(t);
+ else if (t < 65536)
+ this.writeU8(200), this.writeU16(t);
+ else if (t < 4294967296)
+ this.writeU8(201), this.writeU32(t);
+ else
+ throw new Error(`Too large extension object: ${t}`);
+ this.writeI8(e.type), this.writeU8a(e.data);
+ }
+ writeU8(e) {
+ this.ensureBufferSizeToWrite(1), this.view.setUint8(this.pos, e), this.pos++;
+ }
+ writeU8a(e) {
+ let t = e.length;
+ this.ensureBufferSizeToWrite(t), this.bytes.set(e, this.pos), this.pos += t;
+ }
+ writeI8(e) {
+ this.ensureBufferSizeToWrite(1), this.view.setInt8(this.pos, e), this.pos++;
+ }
+ writeU16(e) {
+ this.ensureBufferSizeToWrite(2), this.view.setUint16(this.pos, e), this.pos += 2;
+ }
+ writeI16(e) {
+ this.ensureBufferSizeToWrite(2), this.view.setInt16(this.pos, e), this.pos += 2;
+ }
+ writeU32(e) {
+ this.ensureBufferSizeToWrite(4), this.view.setUint32(this.pos, e), this.pos += 4;
+ }
+ writeI32(e) {
+ this.ensureBufferSizeToWrite(4), this.view.setInt32(this.pos, e), this.pos += 4;
+ }
+ writeF32(e) {
+ this.ensureBufferSizeToWrite(4), this.view.setFloat32(this.pos, e), this.pos += 4;
+ }
+ writeF64(e) {
+ this.ensureBufferSizeToWrite(8), this.view.setFloat64(this.pos, e), this.pos += 8;
+ }
+ writeU64(e) {
+ this.ensureBufferSizeToWrite(8), (0, bs.setUint64)(this.view, this.pos, e), this.pos += 8;
+ }
+ writeI64(e) {
+ this.ensureBufferSizeToWrite(8), (0, bs.setInt64)(this.view, this.pos, e), this.pos += 8;
+ }
+ };
+ J.Encoder = Or;
+});
+var ws = S((Lt) => {
+ "use strict";
+ Object.defineProperty(Lt, "__esModule", { value: true });
+ Lt.encode = void 0;
+ var In = Ir(), Un = {};
+ function Cn(s, e = Un) {
+ return new In.Encoder(e.extensionCodec, e.context, e.maxDepth, e.initialBufferSize, e.sortKeys, e.forceFloat32, e.ignoreUndefined, e.forceIntegerToFloat).encodeSharedRef(s);
+ }
+ Lt.encode = Cn;
+});
+var xs = S((Ft) => {
+ "use strict";
+ Object.defineProperty(Ft, "__esModule", { value: true });
+ Ft.prettyByte = void 0;
+ function jn(s) {
+ return `${s < 0 ? "-" : ""}0x${Math.abs(s).toString(16).padStart(2, "0")}`;
+ }
+ Ft.prettyByte = jn;
+});
+var vs = S((qt) => {
+ "use strict";
+ Object.defineProperty(qt, "__esModule", { value: true });
+ qt.CachedKeyDecoder = void 0;
+ var Nn = Ot(), Bn = 16, Ln = 16, Ur = class {
+ constructor(e = Bn, t = Ln) {
+ this.maxKeyLength = e, this.maxLengthPerKey = t, this.hit = 0, this.miss = 0, this.caches = [];
+ for (let r = 0; r < this.maxKeyLength; r++)
+ this.caches.push([]);
+ }
+ canBeCached(e) {
+ return e > 0 && e <= this.maxKeyLength;
+ }
+ find(e, t, r) {
+ let n = this.caches[r - 1];
+ e:
+ for (let o of n) {
+ let i = o.bytes;
+ for (let l = 0; l < r; l++)
+ if (i[l] !== e[t + l])
+ continue e;
+ return o.str;
+ }
+ return null;
+ }
+ store(e, t) {
+ let r = this.caches[e.length - 1], n = { bytes: e, str: t };
+ r.length >= this.maxLengthPerKey ? r[Math.random() * r.length | 0] = n : r.push(n);
+ }
+ decode(e, t, r) {
+ let n = this.find(e, t, r);
+ if (n != null)
+ return this.hit++, n;
+ this.miss++;
+ let o = (0, Nn.utf8DecodeJs)(e, t, r), i = Uint8Array.prototype.slice.call(e, t, t + r);
+ return this.store(i, o), o;
+ }
+ };
+ qt.CachedKeyDecoder = Ur;
+});
+var Vt = S((Q) => {
+ "use strict";
+ Object.defineProperty(Q, "__esModule", { value: true });
+ Q.Decoder = Q.DataViewIndexOutOfBoundsError = void 0;
+ var Cr = xs(), Fn = Bt(), ce = He(), jr = Ot(), Nr = Ar(), qn = vs(), K = Ct(), Vn = (s) => {
+ let e = typeof s;
+ return e === "string" || e === "number";
+ }, $e = -1, Lr = new DataView(new ArrayBuffer(0)), Jn = new Uint8Array(Lr.buffer);
+ Q.DataViewIndexOutOfBoundsError = (() => {
+ try {
+ Lr.getInt8(0);
+ } catch (s) {
+ return s.constructor;
+ }
+ throw new Error("never reached");
+ })();
+ var Es = new Q.DataViewIndexOutOfBoundsError("Insufficient data"), Hn = new qn.CachedKeyDecoder(), Br = class {
+ constructor(e = Fn.ExtensionCodec.defaultCodec, t = void 0, r = ce.UINT32_MAX, n = ce.UINT32_MAX, o = ce.UINT32_MAX, i = ce.UINT32_MAX, l = ce.UINT32_MAX, p = Hn) {
+ this.extensionCodec = e, this.context = t, this.maxStrLength = r, this.maxBinLength = n, this.maxArrayLength = o, this.maxMapLength = i, this.maxExtLength = l, this.keyDecoder = p, this.totalPos = 0, this.pos = 0, this.view = Lr, this.bytes = Jn, this.headByte = $e, this.stack = [];
+ }
+ reinitializeState() {
+ this.totalPos = 0, this.headByte = $e, this.stack.length = 0;
+ }
+ setBuffer(e) {
+ this.bytes = (0, Nr.ensureUint8Array)(e), this.view = (0, Nr.createDataView)(this.bytes), this.pos = 0;
+ }
+ appendBuffer(e) {
+ if (this.headByte === $e && !this.hasRemaining(1))
+ this.setBuffer(e);
+ else {
+ let t = this.bytes.subarray(this.pos), r = (0, Nr.ensureUint8Array)(e), n = new Uint8Array(t.length + r.length);
+ n.set(t), n.set(r, t.length), this.setBuffer(n);
+ }
+ }
+ hasRemaining(e) {
+ return this.view.byteLength - this.pos >= e;
+ }
+ createExtraByteError(e) {
+ let { view: t, pos: r } = this;
+ return new RangeError(`Extra ${t.byteLength - r} of ${t.byteLength} byte(s) found at buffer[${e}]`);
+ }
+ decode(e) {
+ this.reinitializeState(), this.setBuffer(e);
+ let t = this.doDecodeSync();
+ if (this.hasRemaining(1))
+ throw this.createExtraByteError(this.pos);
+ return t;
+ }
+ *decodeMulti(e) {
+ for (this.reinitializeState(), this.setBuffer(e); this.hasRemaining(1); )
+ yield this.doDecodeSync();
+ }
+ async decodeAsync(e) {
+ let t = false, r;
+ for await (let l of e) {
+ if (t)
+ throw this.createExtraByteError(this.totalPos);
+ this.appendBuffer(l);
+ try {
+ r = this.doDecodeSync(), t = true;
+ } catch (p) {
+ if (!(p instanceof Q.DataViewIndexOutOfBoundsError))
+ throw p;
+ }
+ this.totalPos += this.pos;
+ }
+ if (t) {
+ if (this.hasRemaining(1))
+ throw this.createExtraByteError(this.totalPos);
+ return r;
+ }
+ let { headByte: n, pos: o, totalPos: i } = this;
+ throw new RangeError(`Insufficient data in parsing ${(0, Cr.prettyByte)(n)} at ${i} (${o} in the current buffer)`);
+ }
+ decodeArrayStream(e) {
+ return this.decodeMultiAsync(e, true);
+ }
+ decodeStream(e) {
+ return this.decodeMultiAsync(e, false);
+ }
+ async *decodeMultiAsync(e, t) {
+ let r = t, n = -1;
+ for await (let o of e) {
+ if (t && n === 0)
+ throw this.createExtraByteError(this.totalPos);
+ this.appendBuffer(o), r && (n = this.readArraySize(), r = false, this.complete());
+ try {
+ for (; yield this.doDecodeSync(), --n !== 0; )
+ ;
+ } catch (i) {
+ if (!(i instanceof Q.DataViewIndexOutOfBoundsError))
+ throw i;
+ }
+ this.totalPos += this.pos;
+ }
+ }
+ doDecodeSync() {
+ e:
+ for (; ; ) {
+ let e = this.readHeadByte(), t;
+ if (e >= 224)
+ t = e - 256;
+ else if (e < 192)
+ if (e < 128)
+ t = e;
+ else if (e < 144) {
+ let n = e - 128;
+ if (n !== 0) {
+ this.pushMapState(n), this.complete();
+ continue e;
+ } else
+ t = {};
+ } else if (e < 160) {
+ let n = e - 144;
+ if (n !== 0) {
+ this.pushArrayState(n), this.complete();
+ continue e;
+ } else
+ t = [];
+ } else {
+ let n = e - 160;
+ t = this.decodeUtf8String(n, 0);
+ }
+ else if (e === 192)
+ t = null;
+ else if (e === 194)
+ t = false;
+ else if (e === 195)
+ t = true;
+ else if (e === 202)
+ t = this.readF32();
+ else if (e === 203)
+ t = this.readF64();
+ else if (e === 204)
+ t = this.readU8();
+ else if (e === 205)
+ t = this.readU16();
+ else if (e === 206)
+ t = this.readU32();
+ else if (e === 207)
+ t = this.readU64();
+ else if (e === 208)
+ t = this.readI8();
+ else if (e === 209)
+ t = this.readI16();
+ else if (e === 210)
+ t = this.readI32();
+ else if (e === 211)
+ t = this.readI64();
+ else if (e === 217) {
+ let n = this.lookU8();
+ t = this.decodeUtf8String(n, 1);
+ } else if (e === 218) {
+ let n = this.lookU16();
+ t = this.decodeUtf8String(n, 2);
+ } else if (e === 219) {
+ let n = this.lookU32();
+ t = this.decodeUtf8String(n, 4);
+ } else if (e === 220) {
+ let n = this.readU16();
+ if (n !== 0) {
+ this.pushArrayState(n), this.complete();
+ continue e;
+ } else
+ t = [];
+ } else if (e === 221) {
+ let n = this.readU32();
+ if (n !== 0) {
+ this.pushArrayState(n), this.complete();
+ continue e;
+ } else
+ t = [];
+ } else if (e === 222) {
+ let n = this.readU16();
+ if (n !== 0) {
+ this.pushMapState(n), this.complete();
+ continue e;
+ } else
+ t = {};
+ } else if (e === 223) {
+ let n = this.readU32();
+ if (n !== 0) {
+ this.pushMapState(n), this.complete();
+ continue e;
+ } else
+ t = {};
+ } else if (e === 196) {
+ let n = this.lookU8();
+ t = this.decodeBinary(n, 1);
+ } else if (e === 197) {
+ let n = this.lookU16();
+ t = this.decodeBinary(n, 2);
+ } else if (e === 198) {
+ let n = this.lookU32();
+ t = this.decodeBinary(n, 4);
+ } else if (e === 212)
+ t = this.decodeExtension(1, 0);
+ else if (e === 213)
+ t = this.decodeExtension(2, 0);
+ else if (e === 214)
+ t = this.decodeExtension(4, 0);
+ else if (e === 215)
+ t = this.decodeExtension(8, 0);
+ else if (e === 216)
+ t = this.decodeExtension(16, 0);
+ else if (e === 199) {
+ let n = this.lookU8();
+ t = this.decodeExtension(n, 1);
+ } else if (e === 200) {
+ let n = this.lookU16();
+ t = this.decodeExtension(n, 2);
+ } else if (e === 201) {
+ let n = this.lookU32();
+ t = this.decodeExtension(n, 4);
+ } else
+ throw new K.DecodeError(`Unrecognized type byte: ${(0, Cr.prettyByte)(e)}`);
+ this.complete();
+ let r = this.stack;
+ for (; r.length > 0; ) {
+ let n = r[r.length - 1];
+ if (n.type === 0)
+ if (n.array[n.position] = t, n.position++, n.position === n.size)
+ r.pop(), t = n.array;
+ else
+ continue e;
+ else if (n.type === 1) {
+ if (!Vn(t))
+ throw new K.DecodeError("The type of key must be string or number but " + typeof t);
+ if (t === "__proto__")
+ throw new K.DecodeError("The key __proto__ is not allowed");
+ n.key = t, n.type = 2;
+ continue e;
+ } else if (n.map[n.key] = t, n.readCount++, n.readCount === n.size)
+ r.pop(), t = n.map;
+ else {
+ n.key = null, n.type = 1;
+ continue e;
+ }
+ }
+ return t;
+ }
+ }
+ readHeadByte() {
+ return this.headByte === $e && (this.headByte = this.readU8()), this.headByte;
+ }
+ complete() {
+ this.headByte = $e;
+ }
+ readArraySize() {
+ let e = this.readHeadByte();
+ switch (e) {
+ case 220:
+ return this.readU16();
+ case 221:
+ return this.readU32();
+ default: {
+ if (e < 160)
+ return e - 144;
+ throw new K.DecodeError(`Unrecognized array type byte: ${(0, Cr.prettyByte)(e)}`);
+ }
+ }
+ }
+ pushMapState(e) {
+ if (e > this.maxMapLength)
+ throw new K.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);
+ this.stack.push({ type: 1, size: e, key: null, readCount: 0, map: {} });
+ }
+ pushArrayState(e) {
+ if (e > this.maxArrayLength)
+ throw new K.DecodeError(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);
+ this.stack.push({ type: 0, size: e, array: new Array(e), position: 0 });
+ }
+ decodeUtf8String(e, t) {
+ var r;
+ if (e > this.maxStrLength)
+ throw new K.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);
+ if (this.bytes.byteLength < this.pos + t + e)
+ throw Es;
+ let n = this.pos + t, o;
+ return this.stateIsMapKey() && (!((r = this.keyDecoder) === null || r === void 0) && r.canBeCached(e)) ? o = this.keyDecoder.decode(this.bytes, n, e) : e > jr.TEXT_DECODER_THRESHOLD ? o = (0, jr.utf8DecodeTD)(this.bytes, n, e) : o = (0, jr.utf8DecodeJs)(this.bytes, n, e), this.pos += t + e, o;
+ }
+ stateIsMapKey() {
+ return this.stack.length > 0 ? this.stack[this.stack.length - 1].type === 1 : false;
+ }
+ decodeBinary(e, t) {
+ if (e > this.maxBinLength)
+ throw new K.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);
+ if (!this.hasRemaining(e + t))
+ throw Es;
+ let r = this.pos + t, n = this.bytes.subarray(r, r + e);
+ return this.pos += t + e, n;
+ }
+ decodeExtension(e, t) {
+ if (e > this.maxExtLength)
+ throw new K.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);
+ let r = this.view.getInt8(this.pos + t), n = this.decodeBinary(e, t + 1);
+ return this.extensionCodec.decode(n, r, this.context);
+ }
+ lookU8() {
+ return this.view.getUint8(this.pos);
+ }
+ lookU16() {
+ return this.view.getUint16(this.pos);
+ }
+ lookU32() {
+ return this.view.getUint32(this.pos);
+ }
+ readU8() {
+ let e = this.view.getUint8(this.pos);
+ return this.pos++, e;
+ }
+ readI8() {
+ let e = this.view.getInt8(this.pos);
+ return this.pos++, e;
+ }
+ readU16() {
+ let e = this.view.getUint16(this.pos);
+ return this.pos += 2, e;
+ }
+ readI16() {
+ let e = this.view.getInt16(this.pos);
+ return this.pos += 2, e;
+ }
+ readU32() {
+ let e = this.view.getUint32(this.pos);
+ return this.pos += 4, e;
+ }
+ readI32() {
+ let e = this.view.getInt32(this.pos);
+ return this.pos += 4, e;
+ }
+ readU64() {
+ let e = (0, ce.getUint64)(this.view, this.pos);
+ return this.pos += 8, e;
+ }
+ readI64() {
+ let e = (0, ce.getInt64)(this.view, this.pos);
+ return this.pos += 8, e;
+ }
+ readF32() {
+ let e = this.view.getFloat32(this.pos);
+ return this.pos += 4, e;
+ }
+ readF64() {
+ let e = this.view.getFloat64(this.pos);
+ return this.pos += 8, e;
+ }
+ };
+ Q.Decoder = Br;
+});
+var Fr = S((H) => {
+ "use strict";
+ Object.defineProperty(H, "__esModule", { value: true });
+ H.decodeMulti = H.decode = H.defaultDecodeOptions = void 0;
+ var Ps = Vt();
+ H.defaultDecodeOptions = {};
+ function zn(s, e = H.defaultDecodeOptions) {
+ return new Ps.Decoder(e.extensionCodec, e.context, e.maxStrLength, e.maxBinLength, e.maxArrayLength, e.maxMapLength, e.maxExtLength).decode(s);
+ }
+ H.decode = zn;
+ function Xn(s, e = H.defaultDecodeOptions) {
+ return new Ps.Decoder(e.extensionCodec, e.context, e.maxStrLength, e.maxBinLength, e.maxArrayLength, e.maxMapLength, e.maxExtLength).decodeMulti(s);
+ }
+ H.decodeMulti = Xn;
+});
+var Ss = S((re) => {
+ "use strict";
+ Object.defineProperty(re, "__esModule", { value: true });
+ re.ensureAsyncIterable = re.asyncIterableFromStream = re.isAsyncIterable = void 0;
+ function Ts(s) {
+ return s[Symbol.asyncIterator] != null;
+ }
+ re.isAsyncIterable = Ts;
+ function Gn(s) {
+ if (s == null)
+ throw new Error("Assertion Failure: value must not be null nor undefined");
+ }
+ async function* _s(s) {
+ let e = s.getReader();
+ try {
+ for (; ; ) {
+ let { done: t, value: r } = await e.read();
+ if (t)
+ return;
+ Gn(r), yield r;
+ }
+ } finally {
+ e.releaseLock();
+ }
+ }
+ re.asyncIterableFromStream = _s;
+ function $n(s) {
+ return Ts(s) ? s : _s(s);
+ }
+ re.ensureAsyncIterable = $n;
+});
+var Ms = S((z) => {
+ "use strict";
+ Object.defineProperty(z, "__esModule", { value: true });
+ z.decodeStream = z.decodeMultiStream = z.decodeArrayStream = z.decodeAsync = void 0;
+ var qr = Vt(), Vr = Ss(), Jt = Fr();
+ async function Kn(s, e = Jt.defaultDecodeOptions) {
+ let t = (0, Vr.ensureAsyncIterable)(s);
+ return new qr.Decoder(e.extensionCodec, e.context, e.maxStrLength, e.maxBinLength, e.maxArrayLength, e.maxMapLength, e.maxExtLength).decodeAsync(t);
+ }
+ z.decodeAsync = Kn;
+ function Qn(s, e = Jt.defaultDecodeOptions) {
+ let t = (0, Vr.ensureAsyncIterable)(s);
+ return new qr.Decoder(e.extensionCodec, e.context, e.maxStrLength, e.maxBinLength, e.maxArrayLength, e.maxMapLength, e.maxExtLength).decodeArrayStream(t);
+ }
+ z.decodeArrayStream = Qn;
+ function ks(s, e = Jt.defaultDecodeOptions) {
+ let t = (0, Vr.ensureAsyncIterable)(s);
+ return new qr.Decoder(e.extensionCodec, e.context, e.maxStrLength, e.maxBinLength, e.maxArrayLength, e.maxMapLength, e.maxExtLength).decodeStream(t);
+ }
+ z.decodeMultiStream = ks;
+ function Zn(s, e = Jt.defaultDecodeOptions) {
+ return ks(s, e);
+ }
+ z.decodeStream = Zn;
+});
+var zt = S((h) => {
+ "use strict";
+ Object.defineProperty(h, "__esModule", { value: true });
+ h.decodeTimestampExtension = h.encodeTimestampExtension = h.decodeTimestampToTimeSpec = h.encodeTimeSpecToTimestamp = h.encodeDateToTimeSpec = h.EXT_TIMESTAMP = h.ExtData = h.ExtensionCodec = h.Encoder = h.DataViewIndexOutOfBoundsError = h.DecodeError = h.Decoder = h.decodeStream = h.decodeMultiStream = h.decodeArrayStream = h.decodeAsync = h.decodeMulti = h.decode = h.encode = void 0;
+ var Yn = ws();
+ Object.defineProperty(h, "encode", { enumerable: true, get: function() {
+ return Yn.encode;
+ } });
+ var Ds = Fr();
+ Object.defineProperty(h, "decode", { enumerable: true, get: function() {
+ return Ds.decode;
+ } });
+ Object.defineProperty(h, "decodeMulti", { enumerable: true, get: function() {
+ return Ds.decodeMulti;
+ } });
+ var Ht = Ms();
+ Object.defineProperty(h, "decodeAsync", { enumerable: true, get: function() {
+ return Ht.decodeAsync;
+ } });
+ Object.defineProperty(h, "decodeArrayStream", { enumerable: true, get: function() {
+ return Ht.decodeArrayStream;
+ } });
+ Object.defineProperty(h, "decodeMultiStream", { enumerable: true, get: function() {
+ return Ht.decodeMultiStream;
+ } });
+ Object.defineProperty(h, "decodeStream", { enumerable: true, get: function() {
+ return Ht.decodeStream;
+ } });
+ var Ws = Vt();
+ Object.defineProperty(h, "Decoder", { enumerable: true, get: function() {
+ return Ws.Decoder;
+ } });
+ Object.defineProperty(h, "DataViewIndexOutOfBoundsError", { enumerable: true, get: function() {
+ return Ws.DataViewIndexOutOfBoundsError;
+ } });
+ var eo = Ct();
+ Object.defineProperty(h, "DecodeError", { enumerable: true, get: function() {
+ return eo.DecodeError;
+ } });
+ var to = Ir();
+ Object.defineProperty(h, "Encoder", { enumerable: true, get: function() {
+ return to.Encoder;
+ } });
+ var ro = Bt();
+ Object.defineProperty(h, "ExtensionCodec", { enumerable: true, get: function() {
+ return ro.ExtensionCodec;
+ } });
+ var so = Dr();
+ Object.defineProperty(h, "ExtData", { enumerable: true, get: function() {
+ return so.ExtData;
+ } });
+ var ve = Wr();
+ Object.defineProperty(h, "EXT_TIMESTAMP", { enumerable: true, get: function() {
+ return ve.EXT_TIMESTAMP;
+ } });
+ Object.defineProperty(h, "encodeDateToTimeSpec", { enumerable: true, get: function() {
+ return ve.encodeDateToTimeSpec;
+ } });
+ Object.defineProperty(h, "encodeTimeSpecToTimestamp", { enumerable: true, get: function() {
+ return ve.encodeTimeSpecToTimestamp;
+ } });
+ Object.defineProperty(h, "decodeTimestampToTimeSpec", { enumerable: true, get: function() {
+ return ve.decodeTimestampToTimeSpec;
+ } });
+ Object.defineProperty(h, "encodeTimestampExtension", { enumerable: true, get: function() {
+ return ve.encodeTimestampExtension;
+ } });
+ Object.defineProperty(h, "decodeTimestampExtension", { enumerable: true, get: function() {
+ return ve.decodeTimestampExtension;
+ } });
+});
+var I = class extends Error {
+ constructor(e) {
+ super(e), this.name = this.constructor.name, Object.setPrototypeOf(this, new.target.prototype);
+ }
+};
+var A = class extends I {
+};
+var P = class extends I {
+};
+var m = typeof process < "u" && process.release && process.release.name === "node";
+var Rr;
+if (globalThis.document)
+ Rr = (s) => new Promise((e, t) => {
+ let r = document.createElement("script");
+ r.src = s, r.onload = () => e(), r.onerror = t, document.head.appendChild(r);
+ });
+else if (globalThis.importScripts)
+ Rr = async (s) => {
+ try {
+ globalThis.importScripts(s);
+ } catch (e) {
+ if (e instanceof TypeError)
+ await Promise.resolve().then(() => oe(B(s)));
+ else
+ throw e;
+ }
+ };
+else if (m)
+ Rr = async (s) => {
+ let e = (await Promise.resolve().then(() => oe(B("path")))).default;
+ await Promise.resolve().then(() => oe(B(e.resolve(s))));
+ };
+else
+ throw new I("Cannot determine runtime environment");
+var c = {};
+function es(s) {
+ Object.keys(s).forEach((e) => c._free(s[e]));
+}
+var N = { null: 0, symbol: 1, pairlist: 2, closure: 3, environment: 4, promise: 5, call: 6, special: 7, builtin: 8, string: 9, logical: 10, integer: 13, double: 14, complex: 15, character: 16, dots: 17, any: 18, list: 19, expression: 20, bytecode: 21, pointer: 22, weakref: 23, raw: 24, s4: 25, new: 30, free: 31, function: 99 };
+function mr(s) {
+ return !!s && typeof s == "object" && Object.keys(N).includes(s.type);
+}
+function Ce(s) {
+ return !!s && typeof s == "object" && "re" in s && "im" in s;
+}
+function je(s) {
+ return c._Rf_protect(L(s)), s;
+}
+function w(s, e) {
+ return c._Rf_protect(L(s)), ++e.n, s;
+}
+function ts(s) {
+ let e = c._malloc(4);
+ return c._R_ProtectWithIndex(L(s), e), { loc: c.getValue(e, "i32"), ptr: e };
+}
+function rs(s) {
+ c._Rf_unprotect(1), c._free(s.ptr);
+}
+function ss(s, e) {
+ return c._R_Reprotect(L(s), e.loc), s;
+}
+function T(s) {
+ c._Rf_unprotect(s);
+}
+function gr(s, e, t) {
+ c._Rf_defineVar(L(e), L(t), L(s));
+}
+function br(s, e) {
+ let t = {}, r = { n: 0 };
+ try {
+ let n = new Be(e);
+ w(n, r), t.code = c.allocateUTF8(s);
+ let o = c._R_ParseEvalString(t.code, n.ptr);
+ return y.wrap(o);
+ } finally {
+ es(t), T(r.n);
+ }
+}
+function Ne(s, e) {
+ return c.getWasmTableEntry(c.GOT.ffi_safe_eval.value)(L(s), L(e));
+}
+var un = /* @__PURE__ */ new WeakMap();
+function ns(s, e) {
+ return un.set(s, e), s;
+}
+function L(s) {
+ return Tt(s) ? s.ptr : s;
+}
+function le(s, e) {
+ if (c._TYPEOF(s.ptr) !== N[e])
+ throw new Error(`Unexpected object type "${s.type()}" when expecting type "${e}"`);
+}
+function as(s) {
+ if (mr(s))
+ return new (is(s.type))(s);
+ if (s && typeof s == "object" && "type" in s && s.type === "null")
+ return new Pt();
+ if (s === null)
+ return new Y({ type: "logical", names: null, values: [null] });
+ if (typeof s == "boolean")
+ return new Y(s);
+ if (typeof s == "number")
+ return new fe(s);
+ if (typeof s == "string")
+ return new F(s);
+ if (Ce(s))
+ return new Fe(s);
+ if (ArrayBuffer.isView(s) || s instanceof ArrayBuffer)
+ return new qe(s);
+ if (Array.isArray(s))
+ return dn(s);
+ if (typeof s == "object")
+ return ee.fromObject(s);
+ throw new Error("Robj construction for this JS object is not yet supported");
+}
+function dn(s) {
+ let e = { n: 0 };
+ if (s.every((r) => r && typeof r == "object" && !Tt(r) && !Ce(r))) {
+ let r = s, n = r.every((i) => Object.keys(i).filter((l) => !Object.keys(r[0]).includes(l)).length === 0 && Object.keys(r[0]).filter((l) => !Object.keys(i).includes(l)).length === 0), o = r.every((i) => Object.values(i).every((l) => cs(l) || ls(l)));
+ if (n && o)
+ return ee.fromD3(r);
+ }
+ if (s.every((r) => typeof r == "boolean" || r === null))
+ return new Y(s);
+ if (s.every((r) => typeof r == "number" || r === null))
+ return new fe(s);
+ if (s.every((r) => typeof r == "string" || r === null))
+ return new F(s);
+ try {
+ let r = new q([new U("c"), ...s]);
+ return w(r, e), r.eval();
+ } finally {
+ T(e.n);
+ }
+}
+var x = class {
+ constructor(e) {
+ this.ptr = e;
+ }
+ type() {
+ let e = c._TYPEOF(this.ptr);
+ return Object.keys(N).find((r) => N[r] === e);
+ }
+};
+var Re;
+var vt;
+var ae = class extends x {
+ constructor(t) {
+ if (!(t instanceof x))
+ return as(t);
+ super(t.ptr);
+ u(this, Re);
+ }
+ static wrap(t) {
+ let r = c._TYPEOF(t), n = Object.keys(N)[Object.values(N).indexOf(r)];
+ return new (is(n))(new x(t));
+ }
+ get [Symbol.toStringTag]() {
+ return `RObject:${this.type()}`;
+ }
+ static getPersistentObject(t) {
+ return k[t];
+ }
+ getPropertyValue(t) {
+ return this[t];
+ }
+ inspect() {
+ br(".Internal(inspect(x))", { x: this });
+ }
+ isNull() {
+ return c._TYPEOF(this.ptr) === N.null;
+ }
+ isNa() {
+ try {
+ let t = br("is.na(x)", { x: this });
+ return je(t), t.toBoolean();
+ } finally {
+ T(1);
+ }
+ }
+ isUnbound() {
+ return this.ptr === k.unboundValue.ptr;
+ }
+ attrs() {
+ return ie.wrap(c._ATTRIB(this.ptr));
+ }
+ class() {
+ let t = { n: 0 }, r = new q([new U("class"), this]);
+ w(r, t);
+ try {
+ return r.eval();
+ } finally {
+ T(t.n);
+ }
+ }
+ setNames(t) {
+ let r;
+ if (t === null)
+ r = k.null;
+ else if (Array.isArray(t) && t.every((n) => typeof n == "string" || n === null))
+ r = new F(t);
+ else
+ throw new Error("Argument to setNames must be null or an Array of strings or null");
+ return c._Rf_setAttrib(this.ptr, k.namesSymbol.ptr, r.ptr), this;
+ }
+ names() {
+ let t = F.wrap(c._Rf_getAttrib(this.ptr, k.namesSymbol.ptr));
+ return t.isNull() ? null : t.toArray();
+ }
+ includes(t) {
+ let r = this.names();
+ return r && r.includes(t);
+ }
+ toJs(t = { depth: 0 }, r = 1) {
+ throw new Error("This R object cannot be converted to JS");
+ }
+ subset(t) {
+ return E(this, Re, vt).call(this, t, k.bracketSymbol.ptr);
+ }
+ get(t) {
+ return E(this, Re, vt).call(this, t, k.bracket2Symbol.ptr);
+ }
+ getDollar(t) {
+ return E(this, Re, vt).call(this, t, k.dollarSymbol.ptr);
+ }
+ pluck(...t) {
+ let r = ts(k.null);
+ try {
+ let n = (i, l) => {
+ let p = i.get(l);
+ return ss(p, r);
+ }, o = t.reduce(n, this);
+ return o.isNull() ? void 0 : o;
+ } finally {
+ rs(r);
+ }
+ }
+ set(t, r) {
+ let n = { n: 0 };
+ try {
+ let o = new ae(t);
+ w(o, n);
+ let i = new ae(r);
+ w(i, n);
+ let l = new U("[[<-"), p = c._Rf_lang4(l.ptr, this.ptr, o.ptr, i.ptr);
+ return w(p, n), ae.wrap(Ne(p, k.baseEnv));
+ } finally {
+ T(n.n);
+ }
+ }
+ static getMethods(t) {
+ let r = /* @__PURE__ */ new Set(), n = t;
+ do
+ Object.getOwnPropertyNames(n).map((o) => r.add(o));
+ while (n = Object.getPrototypeOf(n));
+ return [...r.keys()].filter((o) => typeof t[o] == "function");
+ }
+};
+var y = ae;
+Re = /* @__PURE__ */ new WeakSet(), vt = function(t, r) {
+ let n = { n: 0 };
+ try {
+ let o = new ae(t);
+ w(o, n);
+ let i = c._Rf_lang3(r, this.ptr, o.ptr);
+ return w(i, n), ae.wrap(Ne(i, k.baseEnv));
+ } finally {
+ T(n.n);
+ }
+};
+var Pt = class extends y {
+ constructor() {
+ return super(new x(c.getValue(c._R_NilValue, "*"))), this;
+ }
+ toJs() {
+ return { type: "null" };
+ }
+};
+var U = class extends y {
+ constructor(e) {
+ if (e instanceof x) {
+ le(e, "symbol"), super(e);
+ return;
+ }
+ let t = c.allocateUTF8(e);
+ try {
+ super(new x(c._Rf_install(t)));
+ } finally {
+ c._free(t);
+ }
+ }
+ toJs() {
+ let e = this.toObject();
+ return { type: "symbol", printname: e.printname, symvalue: e.symvalue, internal: e.internal };
+ }
+ toObject() {
+ return { printname: this.printname().isUnbound() ? null : this.printname().toString(), symvalue: this.symvalue().isUnbound() ? null : this.symvalue().ptr, internal: this.internal().isNull() ? null : this.internal().ptr };
+ }
+ toString() {
+ return this.printname().toString();
+ }
+ printname() {
+ return Je.wrap(c._PRINTNAME(this.ptr));
+ }
+ symvalue() {
+ return y.wrap(c._SYMVALUE(this.ptr));
+ }
+ internal() {
+ return y.wrap(c._INTERNAL(this.ptr));
+ }
+};
+var ie = class extends y {
+ constructor(e) {
+ if (e instanceof x)
+ return le(e, "pairlist"), super(e), this;
+ let t = { n: 0 };
+ try {
+ let { names: r, values: n } = me(e), o = ie.wrap(c._Rf_allocList(n.length));
+ w(o, t);
+ for (let [i, l] = [0, o]; !l.isNull(); [i, l] = [i + 1, l.cdr()])
+ l.setcar(new y(n[i]));
+ o.setNames(r), super(o);
+ } finally {
+ T(t.n);
+ }
+ }
+ get length() {
+ return this.toArray().length;
+ }
+ toArray(e = { depth: 1 }) {
+ return this.toJs(e).values;
+ }
+ toObject({ allowDuplicateKey: e = true, allowEmptyKey: t = false, depth: r = -1 } = {}) {
+ let n = this.entries({ depth: r }), o = n.map(([i]) => i);
+ if (!e && new Set(o).size !== o.length)
+ throw new Error("Duplicate key when converting pairlist without allowDuplicateKey enabled");
+ if (!t && o.some((i) => !i))
+ throw new Error("Empty or null key when converting pairlist without allowEmptyKey enabled");
+ return Object.fromEntries(n.filter((i, l) => n.findIndex((p) => p[0] === i[0]) === l));
+ }
+ entries(e = { depth: 1 }) {
+ let t = this.toJs(e);
+ return t.values.map((r, n) => [t.names ? t.names[n] : null, r]);
+ }
+ toJs(e = { depth: 0 }, t = 1) {
+ let r = [], n = false, o = [];
+ for (let l = this; !l.isNull(); l = l.cdr()) {
+ let p = l.tag();
+ p.isNull() ? r.push("") : (n = true, r.push(p.toString())), e.depth && t >= e.depth ? o.push(l.car()) : o.push(l.car().toJs(e, t + 1));
+ }
+ return { type: "pairlist", names: n ? r : null, values: o };
+ }
+ includes(e) {
+ return e in this.toObject();
+ }
+ setcar(e) {
+ c._SETCAR(this.ptr, e.ptr);
+ }
+ car() {
+ return y.wrap(c._CAR(this.ptr));
+ }
+ cdr() {
+ return y.wrap(c._CDR(this.ptr));
+ }
+ tag() {
+ return y.wrap(c._TAG(this.ptr));
+ }
+};
+var q = class extends y {
+ constructor(e) {
+ if (e instanceof x)
+ return le(e, "call"), super(e), this;
+ let t = { n: 0 };
+ try {
+ let { values: r } = me(e), n = r.map((i) => w(new y(i), t)), o = q.wrap(c._Rf_allocVector(N.call, r.length));
+ w(o, t);
+ for (let [i, l] = [0, o]; !l.isNull(); [i, l] = [i + 1, l.cdr()])
+ l.setcar(n[i]);
+ super(o);
+ } finally {
+ T(t.n);
+ }
+ }
+ setcar(e) {
+ c._SETCAR(this.ptr, e.ptr);
+ }
+ car() {
+ return y.wrap(c._CAR(this.ptr));
+ }
+ cdr() {
+ return y.wrap(c._CDR(this.ptr));
+ }
+ eval() {
+ return c.webr.evalR(this, { env: k.baseEnv });
+ }
+ capture(e = {}) {
+ return c.webr.captureR(this, e);
+ }
+ deparse() {
+ let e = { n: 0 };
+ try {
+ let t = c._Rf_lang2(new U("deparse1").ptr, c._Rf_lang2(new U("quote").ptr, this.ptr));
+ w(t, e);
+ let r = F.wrap(Ne(t, k.baseEnv));
+ return w(r, e), r.toString();
+ } finally {
+ T(e.n);
+ }
+ }
+};
+var Ve = class extends y {
+ constructor(e, t = null) {
+ if (e instanceof x) {
+ if (le(e, "list"), super(e), t) {
+ if (t.length !== this.length)
+ throw new Error("Can't construct named `RList`. Supplied `names` must be the same length as the list.");
+ this.setNames(t);
+ }
+ return this;
+ }
+ let r = { n: 0 };
+ try {
+ let n = me(e), o = c._Rf_allocVector(N.list, n.values.length);
+ w(o, r), n.values.forEach((l, p) => {
+ c._SET_VECTOR_ELT(o, p, new y(l).ptr);
+ });
+ let i = t || n.names;
+ if (i && i.length !== n.values.length)
+ throw new Error("Can't construct named `RList`. Supplied `names` must be the same length as the list.");
+ y.wrap(o).setNames(i), super(new x(o));
+ } finally {
+ T(r.n);
+ }
+ }
+ get length() {
+ return c._LENGTH(this.ptr);
+ }
+ isDataFrame() {
+ let e = ie.wrap(c._ATTRIB(this.ptr)).get("class");
+ return !e.isNull() && e.toArray().includes("data.frame");
+ }
+ toArray(e = { depth: 1 }) {
+ return this.toJs(e).values;
+ }
+ toObject({ allowDuplicateKey: e = true, allowEmptyKey: t = false, depth: r = -1 } = {}) {
+ let n = this.entries({ depth: r }), o = n.map(([i]) => i);
+ if (!e && new Set(o).size !== o.length)
+ throw new Error("Duplicate key when converting list without allowDuplicateKey enabled");
+ if (!t && o.some((i) => !i))
+ throw new Error("Empty or null key when converting list without allowEmptyKey enabled");
+ return Object.fromEntries(n.filter((i, l) => n.findIndex((p) => p[0] === i[0]) === l));
+ }
+ toD3() {
+ if (!this.isDataFrame())
+ throw new Error("Can't convert R list object to D3 format. Object must be of class 'data.frame'.");
+ return this.entries().reduce((t, r) => (r[1].forEach((n, o) => t[o] = Object.assign(t[o] || {}, { [r[0]]: n })), t), []);
+ }
+ entries(e = { depth: -1 }) {
+ let t = this.toJs(e);
+ return this.isDataFrame() && e.depth < 0 && (t.values = t.values.map((r) => r.toArray())), t.values.map((r, n) => [t.names ? t.names[n] : null, r]);
+ }
+ toJs(e = { depth: 0 }, t = 1) {
+ return { type: "list", names: this.names(), values: [...Array(this.length).keys()].map((r) => e.depth && t >= e.depth ? this.get(r + 1) : this.get(r + 1).toJs(e, t + 1)) };
+ }
+};
+var ee = class extends Ve {
+ constructor(e) {
+ if (e instanceof x) {
+ if (super(e), !this.isDataFrame())
+ throw new Error("Can't construct `RDataFrame`. Supplied R object is not a `data.frame`.");
+ return this;
+ }
+ return ee.fromObject(e);
+ }
+ static fromObject(e) {
+ let { names: t, values: r } = me(e), n = { n: 0 };
+ try {
+ let o = !!t && t.length > 0 && t.every((l) => l), i = r.length > 0 && r.every((l) => Array.isArray(l) || ArrayBuffer.isView(l) || l instanceof ArrayBuffer);
+ if (o && i) {
+ let l = r, p = l.every((b) => b.length === l[0].length), D = l.every((b) => cs(b[0]) || ls(b[0]));
+ if (p && D) {
+ let b = new Ve({ type: "list", names: t, values: l.map((rn) => as(rn)) });
+ w(b, n);
+ let j = new q([new U("as.data.frame"), b]);
+ return w(j, n), new ee(j.eval());
+ }
+ }
+ } finally {
+ T(n.n);
+ }
+ throw new Error("Can't construct `data.frame`. Source object is not eligible.");
+ }
+ static fromD3(e) {
+ return this.fromObject(Object.fromEntries(Object.keys(e[0]).map((t) => [t, e.map((r) => r[t])])));
+ }
+};
+var ye = class extends y {
+ exec(...e) {
+ let t = { n: 0 };
+ try {
+ let r = new q([this, ...e]);
+ return w(r, t), r.eval();
+ } finally {
+ T(t.n);
+ }
+ }
+ capture(e = {}, ...t) {
+ let r = { n: 0 };
+ try {
+ let n = new q([this, ...t]);
+ return w(n, r), n.capture(e);
+ } finally {
+ T(r.n);
+ }
+ }
+};
+var Je = class extends y {
+ constructor(e) {
+ if (e instanceof x) {
+ le(e, "string"), super(e);
+ return;
+ }
+ let t = c.allocateUTF8(e);
+ try {
+ super(new x(c._Rf_mkChar(t)));
+ } finally {
+ c._free(t);
+ }
+ }
+ toString() {
+ return c.UTF8ToString(c._R_CHAR(this.ptr));
+ }
+ toJs() {
+ return { type: "string", value: this.toString() };
+ }
+};
+var Be = class extends y {
+ constructor(e = {}) {
+ if (e instanceof x)
+ return le(e, "environment"), super(e), this;
+ let t = 0;
+ try {
+ let { names: r, values: n } = me(e), o = je(c._R_NewEnv(k.globalEnv.ptr, 0, 0));
+ ++t, n.forEach((i, l) => {
+ let p = r ? r[l] : null;
+ if (!p)
+ throw new Error("Can't create object in new environment with empty symbol name");
+ let D = new U(p), b = je(new y(i));
+ try {
+ gr(o, D, b);
+ } finally {
+ T(1);
+ }
+ }), super(new x(o));
+ } finally {
+ T(t);
+ }
+ }
+ ls(e = false, t = true) {
+ return F.wrap(c._R_lsInternal3(this.ptr, Number(e), Number(t))).toArray();
+ }
+ bind(e, t) {
+ let r = new U(e), n = je(new y(t));
+ try {
+ gr(this, r, n);
+ } finally {
+ T(1);
+ }
+ }
+ names() {
+ return this.ls(true, true);
+ }
+ frame() {
+ return y.wrap(c._FRAME(this.ptr));
+ }
+ subset(e) {
+ if (typeof e == "number")
+ throw new Error("Object of type environment is not subsettable");
+ return this.getDollar(e);
+ }
+ toObject({ depth: e = -1 } = {}) {
+ let t = this.names();
+ return Object.fromEntries([...Array(t.length).keys()].map((r) => {
+ let n = this.getDollar(t[r]);
+ return [t[r], e < 0 ? n : n.toJs({ depth: e })];
+ }));
+ }
+ toJs(e = { depth: 0 }, t = 1) {
+ let r = this.names(), n = [...Array(r.length).keys()].map((o) => e.depth && t >= e.depth ? this.getDollar(r[o]) : this.getDollar(r[o]).toJs(e, t + 1));
+ return { type: "environment", names: r, values: n };
+ }
+};
+var te = class extends y {
+ constructor(e, t, r) {
+ if (e instanceof x)
+ return le(e, t), super(e), this;
+ let n = { n: 0 };
+ try {
+ let { names: o, values: i } = me(e), l = c._Rf_allocVector(N[t], i.length);
+ w(l, n), i.forEach(r(l)), y.wrap(l).setNames(o), super(new x(l));
+ } finally {
+ T(n.n);
+ }
+ }
+ get length() {
+ return c._LENGTH(this.ptr);
+ }
+ get(e) {
+ return super.get(e);
+ }
+ subset(e) {
+ return super.subset(e);
+ }
+ getDollar() {
+ throw new Error("$ operator is invalid for atomic vectors");
+ }
+ detectMissing() {
+ let e = { n: 0 };
+ try {
+ let t = c._Rf_lang2(new U("is.na").ptr, this.ptr);
+ w(t, e);
+ let r = Y.wrap(Ne(t, k.baseEnv));
+ w(r, e);
+ let n = r.toTypedArray();
+ return Array.from(n).map((o) => !!o);
+ } finally {
+ T(e.n);
+ }
+ }
+ toArray() {
+ let e = this.toTypedArray();
+ return this.detectMissing().map((t, r) => t ? null : e[r]);
+ }
+ toObject({ allowDuplicateKey: e = true, allowEmptyKey: t = false } = {}) {
+ let r = this.entries(), n = r.map(([o]) => o);
+ if (!e && new Set(n).size !== n.length)
+ throw new Error("Duplicate key when converting atomic vector without allowDuplicateKey enabled");
+ if (!t && n.some((o) => !o))
+ throw new Error("Empty or null key when converting atomic vector without allowEmptyKey enabled");
+ return Object.fromEntries(r.filter((o, i) => r.findIndex((l) => l[0] === o[0]) === i));
+ }
+ entries() {
+ let e = this.toArray(), t = this.names();
+ return e.map((r, n) => [t ? t[n] : null, r]);
+ }
+ toJs() {
+ return { type: this.type(), names: this.names(), values: this.toArray() };
+ }
+};
+var _t;
+var wr = class extends te {
+ constructor(e) {
+ super(e, "logical", a(wr, _t));
+ }
+ getBoolean(e) {
+ return this.get(e).toArray()[0];
+ }
+ toBoolean() {
+ if (this.length !== 1)
+ throw new Error("Can't convert atomic vector of length > 1 to a scalar JS value");
+ let e = this.getBoolean(1);
+ if (e === null)
+ throw new Error("Can't convert missing value `NA` to a JS boolean");
+ return e;
+ }
+ toTypedArray() {
+ return new Int32Array(c.HEAP32.subarray(c._LOGICAL(this.ptr) / 4, c._LOGICAL(this.ptr) / 4 + this.length));
+ }
+ toArray() {
+ let e = this.toTypedArray();
+ return this.detectMissing().map((t, r) => t ? null : !!e[r]);
+ }
+};
+var Y = wr;
+_t = /* @__PURE__ */ new WeakMap(), u(Y, _t, (e) => {
+ let t = c._LOGICAL(e), r = c.getValue(c._R_NaInt, "i32");
+ return (n, o) => {
+ c.setValue(t + 4 * o, n === null ? r : !!n, "i32");
+ };
+});
+var St;
+var xr = class extends te {
+ constructor(e) {
+ super(e, "integer", a(xr, St));
+ }
+ getNumber(e) {
+ return this.get(e).toArray()[0];
+ }
+ toNumber() {
+ if (this.length !== 1)
+ throw new Error("Can't convert atomic vector of length > 1 to a scalar JS value");
+ let e = this.getNumber(1);
+ if (e === null)
+ throw new Error("Can't convert missing value `NA` to a JS number");
+ return e;
+ }
+ toTypedArray() {
+ return new Int32Array(c.HEAP32.subarray(c._INTEGER(this.ptr) / 4, c._INTEGER(this.ptr) / 4 + this.length));
+ }
+};
+var Et = xr;
+St = /* @__PURE__ */ new WeakMap(), u(Et, St, (e) => {
+ let t = c._INTEGER(e), r = c.getValue(c._R_NaInt, "i32");
+ return (n, o) => {
+ c.setValue(t + 4 * o, n === null ? r : Math.round(Number(n)), "i32");
+ };
+});
+var kt;
+var vr = class extends te {
+ constructor(e) {
+ super(e, "double", a(vr, kt));
+ }
+ getNumber(e) {
+ return this.get(e).toArray()[0];
+ }
+ toNumber() {
+ if (this.length !== 1)
+ throw new Error("Can't convert atomic vector of length > 1 to a scalar JS value");
+ let e = this.getNumber(1);
+ if (e === null)
+ throw new Error("Can't convert missing value `NA` to a JS number");
+ return e;
+ }
+ toTypedArray() {
+ return new Float64Array(c.HEAPF64.subarray(c._REAL(this.ptr) / 8, c._REAL(this.ptr) / 8 + this.length));
+ }
+};
+var fe = vr;
+kt = /* @__PURE__ */ new WeakMap(), u(fe, kt, (e) => {
+ let t = c._REAL(e), r = c.getValue(c._R_NaReal, "double");
+ return (n, o) => {
+ c.setValue(t + 8 * o, n === null ? r : n, "double");
+ };
+});
+var Mt;
+var Er = class extends te {
+ constructor(e) {
+ super(e, "complex", a(Er, Mt));
+ }
+ getComplex(e) {
+ return this.get(e).toArray()[0];
+ }
+ toComplex() {
+ if (this.length !== 1)
+ throw new Error("Can't convert atomic vector of length > 1 to a scalar JS value");
+ let e = this.getComplex(1);
+ if (e === null)
+ throw new Error("Can't convert missing value `NA` to a JS object");
+ return e;
+ }
+ toTypedArray() {
+ return new Float64Array(c.HEAPF64.subarray(c._COMPLEX(this.ptr) / 8, c._COMPLEX(this.ptr) / 8 + 2 * this.length));
+ }
+ toArray() {
+ let e = this.toTypedArray();
+ return this.detectMissing().map((t, r) => t ? null : { re: e[2 * r], im: e[2 * r + 1] });
+ }
+};
+var Fe = Er;
+Mt = /* @__PURE__ */ new WeakMap(), u(Fe, Mt, (e) => {
+ let t = c._COMPLEX(e), r = c.getValue(c._R_NaReal, "double");
+ return (n, o) => {
+ c.setValue(t + 8 * (2 * o), n === null ? r : n.re, "double"), c.setValue(t + 8 * (2 * o + 1), n === null ? r : n.im, "double");
+ };
+});
+var Dt;
+var Pr = class extends te {
+ constructor(e) {
+ super(e, "character", a(Pr, Dt));
+ }
+ getString(e) {
+ return this.get(e).toArray()[0];
+ }
+ toString() {
+ if (this.length !== 1)
+ throw new Error("Can't convert atomic vector of length > 1 to a scalar JS value");
+ let e = this.getString(1);
+ if (e === null)
+ throw new Error("Can't convert missing value `NA` to a JS string");
+ return e;
+ }
+ toTypedArray() {
+ return new Uint32Array(c.HEAPU32.subarray(c._STRING_PTR(this.ptr) / 4, c._STRING_PTR(this.ptr) / 4 + this.length));
+ }
+ toArray() {
+ return this.detectMissing().map((e, t) => e ? null : c.UTF8ToString(c._R_CHAR(c._STRING_ELT(this.ptr, t))));
+ }
+};
+var F = Pr;
+Dt = /* @__PURE__ */ new WeakMap(), u(F, Dt, (e) => (t, r) => {
+ t === null ? c._SET_STRING_ELT(e, r, k.naString.ptr) : c._SET_STRING_ELT(e, r, new Je(t).ptr);
+});
+var Wt;
+var Tr = class extends te {
+ constructor(e) {
+ e instanceof ArrayBuffer && (e = new Uint8Array(e)), super(e, "raw", a(Tr, Wt));
+ }
+ getNumber(e) {
+ return this.get(e).toArray()[0];
+ }
+ toNumber() {
+ if (this.length !== 1)
+ throw new Error("Can't convert atomic vector of length > 1 to a scalar JS value");
+ let e = this.getNumber(1);
+ if (e === null)
+ throw new Error("Can't convert missing value `NA` to a JS number");
+ return e;
+ }
+ toTypedArray() {
+ return new Uint8Array(c.HEAPU8.subarray(c._RAW(this.ptr), c._RAW(this.ptr) + this.length));
+ }
+};
+var qe = Tr;
+Wt = /* @__PURE__ */ new WeakMap(), u(qe, Wt, (e) => {
+ let t = c._RAW(e);
+ return (r, n) => {
+ c.setValue(t + n, Number(r), "i8");
+ };
+});
+function me(s) {
+ return mr(s) ? s : Array.isArray(s) || ArrayBuffer.isView(s) ? { names: null, values: s } : s && typeof s == "object" && !Ce(s) ? { names: Object.keys(s), values: Object.values(s) } : { names: null, values: [s] };
+}
+function is(s) {
+ let e = { object: y, null: Pt, symbol: U, pairlist: ie, closure: ye, environment: Be, call: q, special: ye, builtin: ye, string: Je, logical: Y, integer: Et, double: fe, complex: Fe, character: F, list: Ve, raw: qe, function: ye, dataframe: ee };
+ return s in e ? e[s] : y;
+}
+function Tt(s) {
+ return s instanceof y;
+}
+function ls(s) {
+ let e = ["logical", "integer", "double", "complex", "character"];
+ return Tt(s) && e.includes(s.type()) || Tt(s) && s.isNa();
+}
+function cs(s) {
+ return s === null || typeof s == "number" || typeof s == "boolean" || typeof s == "string" || Ce(s);
+}
+var k;
+var Os = oe(zt());
+var no = new TextEncoder();
+var X;
+var G;
+var Ke;
+var Jr;
+X = /* @__PURE__ */ new WeakMap(), G = /* @__PURE__ */ new WeakMap(), Ke = /* @__PURE__ */ new WeakSet(), Jr = function() {
+ a(this, X).push(new Promise((e) => {
+ a(this, G).push(e);
+ }));
+};
+function Qe(s, e, t) {
+ return Us({ type: "response", data: { uuid: s, resp: e } }, t);
+}
+function Us(s, e) {
+ return e && ns(s, e), s;
+}
+var Te;
+var Ze;
+Te = /* @__PURE__ */ new WeakMap(), Ze = /* @__PURE__ */ new WeakMap();
+var Bs = oe(zt());
+var lo = new TextDecoder("utf-8");
+var _e;
+var Se;
+var Ye;
+var et;
+var ke;
+_e = /* @__PURE__ */ new WeakMap(), Se = /* @__PURE__ */ new WeakMap(), Ye = /* @__PURE__ */ new WeakMap(), et = /* @__PURE__ */ new WeakMap(), ke = /* @__PURE__ */ new WeakMap();
+var zr = new Int32Array(new ArrayBuffer(4));
+m && (globalThis.Worker = B("worker_threads").Worker);
+var Me;
+var Zt;
+var Vs;
+var rt;
+Me = /* @__PURE__ */ new WeakMap(), Zt = /* @__PURE__ */ new WeakSet(), Vs = function(t) {
+ m ? (t.on("message", (r) => {
+ a(this, rt).call(this, t, r);
+ }), t.on("error", (r) => {
+ console.error(r), this.reject(new A("An error occurred initialising the webR SharedBufferChannel worker."));
+ })) : (t.onmessage = (r) => a(this, rt).call(this, t, r.data), t.onerror = (r) => {
+ console.error(r), this.reject(new A("An error occurred initialising the webR SharedBufferChannel worker."));
+ });
+}, rt = /* @__PURE__ */ new WeakMap();
+var ue;
+var st;
+var pe;
+var nt;
+ue = /* @__PURE__ */ new WeakMap(), st = /* @__PURE__ */ new WeakMap(), pe = /* @__PURE__ */ new WeakMap(), nt = /* @__PURE__ */ new WeakMap();
+var sr = oe(zt());
+m && (globalThis.Worker = B("worker_threads").Worker);
+var De;
+var de;
+var We;
+var er;
+var Js;
+var tr;
+var Hs;
+var rr;
+var zs;
+var ot;
+De = /* @__PURE__ */ new WeakMap(), de = /* @__PURE__ */ new WeakMap(), We = /* @__PURE__ */ new WeakMap(), er = /* @__PURE__ */ new WeakSet(), Js = async function(t) {
+ d(this, de, await navigator.serviceWorker.register(t)), await navigator.serviceWorker.ready, window.addEventListener("beforeunload", () => {
+ var n;
+ (n = a(this, de)) == null || n.unregister();
+ });
+ let r = await new Promise((n) => {
+ navigator.serviceWorker.addEventListener("message", function o(i) {
+ i.data.type === "registration-successful" && (navigator.serviceWorker.removeEventListener("message", o), n(i.data.clientId));
+ }), this.activeRegistration().postMessage({ type: "register-client-main" });
+ });
+ return navigator.serviceWorker.addEventListener("message", (n) => {
+ E(this, tr, Hs).call(this, n);
+ }), r;
+}, tr = /* @__PURE__ */ new WeakSet(), Hs = async function(t) {
+ if (t.data.type === "request") {
+ let r = t.data.data, n = a(this, De).get(r);
+ if (!n)
+ throw new P("Request not found during service worker XHR request");
+ switch (a(this, De).delete(r), n.type) {
+ case "read": {
+ let o = await this.inputQueue.get();
+ this.activeRegistration().postMessage({ type: "wasm-webr-fetch-response", uuid: r, response: Qe(r, o) });
+ break;
+ }
+ case "interrupt": {
+ let o = a(this, We);
+ this.activeRegistration().postMessage({ type: "wasm-webr-fetch-response", uuid: r, response: Qe(r, o) }), this.inputQueue.reset(), d(this, We, false);
+ break;
+ }
+ default:
+ throw new P(`Unsupported request type '${n.type}'.`);
+ }
+ return;
+ }
+}, rr = /* @__PURE__ */ new WeakSet(), zs = function(t) {
+ m ? (t.on("message", (r) => {
+ a(this, ot).call(this, t, r);
+ }), t.on("error", (r) => {
+ console.error(r), this.reject(new A("An error occurred initialising the webR ServiceWorkerChannel worker."));
+ })) : (t.onmessage = (r) => a(this, ot).call(this, t, r.data), t.onerror = (r) => {
+ console.error(r), this.reject(new A("An error occurred initialising the webR ServiceWorkerChannel worker."));
+ });
+}, ot = /* @__PURE__ */ new WeakMap();
+var Ae;
+var at;
+var it;
+var lt;
+var ct;
+var ut;
+Ae = /* @__PURE__ */ new WeakMap(), at = /* @__PURE__ */ new WeakMap(), it = /* @__PURE__ */ new WeakMap(), lt = /* @__PURE__ */ new WeakMap(), ct = /* @__PURE__ */ new WeakMap(), ut = /* @__PURE__ */ new WeakMap();
+m && (globalThis.Worker = B("worker_threads").Worker);
+var Oe;
+var nr;
+var Xs;
+var dt;
+Oe = /* @__PURE__ */ new WeakMap(), nr = /* @__PURE__ */ new WeakSet(), Xs = function(t) {
+ m ? (t.on("message", (r) => {
+ a(this, dt).call(this, t, r);
+ }), t.on("error", (r) => {
+ console.error(r), this.reject(new A("An error occurred initialising the webR PostMessageChannel worker."));
+ })) : (t.onmessage = (r) => a(this, dt).call(this, t, r.data), t.onerror = (r) => {
+ console.error(r), this.reject(new A("An error occurred initialising the webR PostMessageChannel worker."));
+ });
+}, dt = /* @__PURE__ */ new WeakMap();
+var Ie;
+var Ue;
+var ht;
+var he;
+var or;
+Ie = /* @__PURE__ */ new WeakMap(), Ue = /* @__PURE__ */ new WeakMap(), ht = /* @__PURE__ */ new WeakMap(), he = /* @__PURE__ */ new WeakMap(), or = /* @__PURE__ */ new WeakMap();
+var O = { Automatic: 0, SharedArrayBuffer: 1, ServiceWorker: 2, PostMessage: 3 };
+var $s = m ? __dirname + "/" : "https://webr.r-wasm.org/v0.4.2/";
+var Ks = "https://repo.r-wasm.org";
+var Kr = "0.4.2";
+var yt;
+var ft;
+var Rt;
+var mt;
+var gt;
+var ar;
+var ir;
+var lr;
+var cr;
+var ur;
+var pr;
+var Ys;
+yt = /* @__PURE__ */ new WeakMap(), ft = /* @__PURE__ */ new WeakMap(), Rt = /* @__PURE__ */ new WeakMap(), mt = /* @__PURE__ */ new WeakMap(), gt = /* @__PURE__ */ new WeakMap(), ar = /* @__PURE__ */ new WeakMap(), ir = /* @__PURE__ */ new WeakMap(), lr = /* @__PURE__ */ new WeakMap(), cr = /* @__PURE__ */ new WeakMap(), ur = /* @__PURE__ */ new WeakMap(), pr = /* @__PURE__ */ new WeakSet(), Ys = async function() {
+ for (; ; ) {
+ let e = await this.webR.read();
+ switch (e.type) {
+ case "stdout":
+ a(this, yt).call(this, e.data);
+ break;
+ case "stderr":
+ a(this, ft).call(this, e.data);
+ break;
+ case "prompt":
+ a(this, Rt).call(this, e.data);
+ break;
+ case "canvas":
+ e.data.event === "canvasImage" ? a(this, mt).call(this, e.data.image) : e.data.event === "canvasNewPage" && a(this, gt).call(this);
+ break;
+ case "closed":
+ return;
+ default:
+ console.warn(`Unhandled output type for webR Console: ${e.type}.`);
+ }
+ }
+};
+var yo = { FONTCONFIG_PATH: "/etc/fonts", R_HOME: "/usr/lib/R", R_ENABLE_JIT: "0", WEBR: "1", WEBR_VERSION: Kr };
+var en = { RArgs: [], REnv: yo, baseUrl: $s, serviceWorkerUrl: "", repoUrl: Ks, homedir: "/home/web_user", interactive: true, channelType: O.Automatic, createLazyFilesystem: true };
+var R;
+var bt;
+var yr;
+var tn;
+R = /* @__PURE__ */ new WeakMap(), bt = /* @__PURE__ */ new WeakMap(), yr = /* @__PURE__ */ new WeakSet(), tn = async function() {
+ for (; ; ) {
+ let e = await a(this, R).readSystem();
+ switch (e.type) {
+ case "setTimeoutWasm":
+ setTimeout((t, r) => {
+ this.invokeWasmFunction(t, ...r);
+ }, e.data.delay, e.data.ptr, e.data.args);
+ break;
+ case "console.log":
+ console.log(e.data);
+ break;
+ case "console.warn":
+ console.warn(e.data);
+ break;
+ case "console.error":
+ console.error(e.data);
+ break;
+ case "close":
+ a(this, R).close();
+ break;
+ default:
+ throw new I("Unknown system message type `" + e.type + "`");
+ }
+ }
+};
+var g;
+var f;
+var wt;
+g = /* @__PURE__ */ new WeakMap(), f = /* @__PURE__ */ new WeakMap(), wt = /* @__PURE__ */ new WeakMap();
+
+// src/messageporthttp.ts
+async function fetchASGI(client, resource, init, filter = (bodyChunk) => bodyChunk) {
+ if (typeof resource === "string" || typeof init !== "undefined") {
+ resource = new Request(resource, init);
+ }
+ const channel = new MessageChannel();
+ const clientPort = channel.port1;
+ client.postMessage(
+ {
+ type: "makeRequest",
+ scope: reqToASGI(resource)
+ },
+ [channel.port2]
+ );
+ const blob = await resource.blob();
+ if (!blob.size) {
+ clientPort.postMessage({
+ type: "http.request",
+ more_body: false
+ });
+ } else {
+ const reader = blob.stream().getReader();
+ try {
+ while (true) {
+ const { value: theChunk, done } = await reader.read();
+ clientPort.postMessage({
+ type: "http.request",
+ body: theChunk,
+ more_body: !done
+ });
+ if (done) {
+ break;
+ }
+ }
+ } finally {
+ reader.releaseLock();
+ }
+ }
+ return new Promise((resolve) => {
+ let streamController;
+ const readableStream = new ReadableStream({
+ start(controller) {
+ streamController = controller;
+ },
+ cancel(reason) {
+ }
+ });
+ let response;
+ clientPort.addEventListener("message", (event) => {
+ const msg = event.data;
+ if (msg.type === "http.response.start") {
+ response = asgiToRes(msg, readableStream);
+ resolve(response);
+ } else if (msg.type === "http.response.body") {
+ if (msg.body) {
+ streamController.enqueue(filter(msg.body, response));
+ }
+ if (!msg.more_body) {
+ streamController.close();
+ clientPort.close();
+ }
+ } else {
+ throw new Error("Unexpected event type from clientPort: " + msg.type);
+ }
+ });
+ clientPort.start();
+ });
+}
+function headersToASGI(headers) {
+ const result = [];
+ for (const [key, value] of headers.entries()) {
+ result.push([key, value]);
+ }
+ return result;
+}
+function reqToASGI(req) {
+ const url = new URL(req.url);
+ return {
+ type: "http",
+ asgi: {
+ version: "3.0",
+ spec_version: "2.1"
+ },
+ http_version: "1.1",
+ method: req.method,
+ scheme: url.protocol.replace(/:$/, ""),
+ path: url.pathname,
+ query_string: url.search.replace(/^\?/, ""),
+ root_path: "",
+ headers: headersToASGI(req.headers)
+ };
+}
+function asgiToRes(res, body) {
+ return new Response(body, {
+ headers: res.headers,
+ status: res.status
+ });
+}
+
+// src/shinylive-sw.ts
+var useCaching = false;
+var cacheName = "::shinyliveServiceworker";
+var version = "v9";
+function addCoiHeaders(resp) {
+ const headers = new Headers(resp.headers);
+ headers.set("Cross-Origin-Embedder-Policy", "credentialless");
+ headers.set("Cross-Origin-Resource-Policy", "cross-origin");
+ headers.set("Cross-Origin-Opener-Policy", "same-origin");
+ return new Response(resp.body, {
+ status: resp.status,
+ statusText: resp.statusText,
+ headers
+ });
+}
+self.addEventListener("install", (event) => {
+ event.waitUntil(
+ Promise.all([self.skipWaiting(), caches.open(version + cacheName)])
+ );
+});
+self.addEventListener("activate", function(event) {
+ event.waitUntil(
+ (async () => {
+ await self.clients.claim();
+ const keys = await caches.keys();
+ return Promise.all(
+ keys.filter(function(key) {
+ return key.indexOf(version + cacheName) !== 0;
+ }).map(function(key) {
+ return caches.delete(key);
+ })
+ );
+ })()
+ );
+});
+self.addEventListener("fetch", function(event) {
+ const request = event.request;
+ const url = new URL(request.url);
+ if (self.location.origin !== url.origin)
+ return;
+ if (url.pathname == "/esbuild")
+ return;
+ const base_path = dirname(self.location.pathname);
+ if (url.pathname == `${base_path}/shinylive-inject-socket.js`) {
+ event.respondWith(
+ new Response(shinylive_inject_socket_default, {
+ headers: { "Content-Type": "text/javascript" },
+ status: 200
+ })
+ );
+ return;
+ }
+ const coiRequested = url.searchParams.get("coi") === "1" || request.referrer.includes("coi=1");
+ const appPathRegex = /.*\/(app_[^/]+\/)/;
+ const m_appPath = appPathRegex.exec(url.pathname);
+ if (m_appPath) {
+ event.respondWith(
+ (async () => {
+ let pollCount = 5;
+ while (!apps[m_appPath[1]]) {
+ if (pollCount == 0) {
+ return new Response(
+ `Couldn't find parent page for ${url}. This may be because the Service Worker has updated. Try reloading the page.`,
+ {
+ status: 404
+ }
+ );
+ }
+ console.log("App URL not registered. Waiting 50ms.");
+ await sleep(50);
+ pollCount--;
+ }
+ url.pathname = url.pathname.replace(appPathRegex, "/");
+ const isAppRoot = url.pathname === "/";
+ const filter = isAppRoot ? injectSocketFilter : identityFilter;
+ const blob = await request.blob();
+ const resp = await fetchASGI(
+ apps[m_appPath[1]],
+ new Request(url.toString(), {
+ method: request.method,
+ headers: request.headers,
+ body: request.method === "GET" || request.method === "HEAD" ? void 0 : blob,
+ credentials: request.credentials,
+ cache: request.cache,
+ redirect: request.redirect,
+ referrer: request.referrer
+ }),
+ void 0,
+ filter
+ );
+ if (coiRequested) {
+ return addCoiHeaders(resp);
+ } else {
+ return resp;
+ }
+ })()
+ );
+ return;
+ }
+ if (request.method !== "GET") {
+ return;
+ }
+ if (useCaching) {
+ event.respondWith(
+ (async () => {
+ const cachedResponse = await caches.match(request);
+ if (cachedResponse) {
+ return cachedResponse;
+ }
+ try {
+ const networkResponse = addCoiHeaders(await fetch(request));
+ const baseUrl = self.location.origin + dirname(self.location.pathname);
+ if (request.url.startsWith(baseUrl + "/shinylive/") || request.url === baseUrl + "/favicon.ico") {
+ const cache = await caches.open(version + cacheName);
+ await cache.put(request, networkResponse.clone());
+ }
+ return networkResponse;
+ } catch {
+ return new Response("Failed to find in cache, or fetch.", {
+ status: 404
+ });
+ }
+ })()
+ );
+ return;
+ }
+ if (coiRequested) {
+ event.respondWith(
+ (async () => {
+ const resp = await fetch(request);
+ return addCoiHeaders(resp);
+ })()
+ );
+ }
+});
+var apps = {};
+(async () => {
+ const allClients = await self.clients.matchAll();
+ for (const client of allClients) {
+ client.postMessage({
+ type: "serviceworkerStart"
+ });
+ }
+})();
+self.addEventListener("message", (event) => {
+ const msg = event.data;
+ if (msg.type === "configureProxyPath") {
+ const path = msg.path;
+ const port = event.ports[0];
+ apps[path] = port;
+ }
+});
+function identityFilter(bodyChunk, response) {
+ return bodyChunk;
+}
+function injectSocketFilter(bodyChunk, response) {
+ const contentType = response.headers.get("content-type");
+ if (contentType && /^text\/html(;|$)/.test(contentType)) {
+ const bodyChunkStr = uint8ArrayToString(bodyChunk);
+ const base_path = dirname(self.location.pathname);
+ const newStr = bodyChunkStr.replace(
+ /<\/head>/,
+ `
+
+
+
+
+
+
+
+
+
+
+