Introduction

This document outlines the analyses from Study 1 and 2 in Is it me or my smartphone? Investigating predictors of nomophobia and smartphone dependency (Ruiz Pardo & Minda, October 2021 preprint, <>). The rising prevalence of smartphones has prompted research about how they can impact cognitive abilities. Therefore, the purpose of this study was to investigate what individual differences can predict people’s smartphone depenency and nomophobia. To do do, we examined a variety of individual difference measures: impulsiveness, depression, stress, anxiety, personality (big five), self-esteem, emotional intelligence, and self regulation. Additionally, participant’s gender, age, and age of first smartphone were recorded.

Two studies were used to compare university students (study 1) to the general population (study 2). Each study asked three key questions… all related to how age may play a role in people’s typical smartphone use and whether or not individual differences were significant predictors of smartphone dependency and nomophobia (i.e., cohort differences).

Criterion measures (2):

  • Nomophobia (NMPQ; Yildirim and Correia 2015)

  • Smartphone Attachment and Dependency Inventory (SAD; Ward et al.,

Predictor measures (6):

  • Barratt Impulsiveness Scale-Brief (BIS-brief; Steinberg et al. 2013)

  • Depression, Anxiety, and Stress Scale (DASS-21; Lovibond and Lovibond 1995)

  • International Personality Item Pool NEO (IPIP-NEO-60; Maples-Keller et al. 2019)

  • Rosenberg Self-Esteem Scale (RSES). Cite: (Rosenberg 1965)

  • Schutte Self-Report Emotional Intelligence Test (SSEIT; Schutte et al. 1998)

  • Self-Regulation Scale (SRS; Schwarzer et al. 1999)

Demographic & Smartphone Use measure (1):

  • Smartphone use questionnaire (designed for the present study, revised from Ruiz Pardo & Minda, 2021)

Procedure

LOI/consent > Questionnaires in the same random assignment: Demographics, SUQ, NMP-Q, SRS, SAD, DASS-21, BIS-Brief, SSEIT, RSES, IPIP-NEO-60 > debriefing > UWO ethics > approx 40 min in total.

Hypotheses

All sig predictors of nomophobia

All sig predictors of smartphone dependency

Analysis Prep

Load Libraries

Before importing the raw data, the required libraries were loaded.

Additional Functions

Rounding p-values

This rounding function was adapted from Dr. Emily Nielsen’s Rpubs. The function (“p_round(x)”) was created to assess and print p-values. If \(p \ge .005\), the function will display “$p = $” and the value rounded to two decimal places. If $ .0005 p <.005\(, the function will display “\)p = $" and the value rounded to three decimal places. If \(p < .0005\), the function will display “\(p < .001\)”. (click to expand)


p_round <- function(x){
  if(x > .005)
    {x1 = (paste("= ", gsub("0\\.","\\.", round(x, digits = 2)), sep = ''))
  }  
  else if(x == .005){x1 = (paste("=", gsub("0\\.","\\.", 0.01)))
  }
  else if(x > .0005 & x < .005)
    {x1 = (paste("= ", gsub("0\\.","\\.", round(x, digits = 3)), sep = ''))
  }  
  else if(x == .0005){x1 = (paste("=", gsub("0\\.","\\.", 0.001)))
  }
  else{x1 = (paste("<", gsub("0\\.","\\.", 0.001)))
  } 
  (x1)
}

Flatten Correlation Output

The following takes a correlation output and flattens it to a long format. Originally from STHDA’s “Correlation matrix : Formatting and visualization” (http://www.sthda.com/english/wiki/correlation-matrix-formatting-and-visualization#.YW4IOfbtntM.link).

# ++++++++++++++++++++++++++++
# flattenCorrMatrix
# ++++++++++++++++++++++++++++
# cormat : matrix of the correlation coefficients
# pmat : matrix of the correlation p-values
flattenCorrMatrix <- function(cormat, pmat) {
  ut <- upper.tri(cormat)
  data.frame(
    row = rownames(cormat)[row(cormat)[ut]],
    column = rownames(cormat)[col(cormat)[ut]],
    cor  =(cormat)[ut],
    p = pmat[ut]
    )
}

Import Raw Data Files

There are two raw data files for the analyses.

Study 1

  1. Study 1 - Survey Data

    • csv file exported from Qualtrics
    • data collected online

Study 2

  1. Study 2 - Survey Data

    • csv file exported from Qualtrics
    • data collected in-person

NOTE: To avoid confusion, the naming convention for the two studies was as follows for all data, analyses, visualizations, etc.: Study 1 = “SONA” and Study 2 = “Mturk”

1. Study 1 Data: SONA

First, the raw data was imported.

# this will import the raw excel data file for study 1
  # this file has been anonymized, so any identifiable information has been removed
SONA_raw <- read.csv("SONA_survey_data(oct19)-final.csv", header = TRUE)

After importing the raw data, the file is cleaned by removing participants based on several criteria:

  • Testing Data: experimenter data (i.e., testing prior to data collection), any irrelevant rows

  • Incomplete Data: participants who did not complete the study

    • 4 did not finish
  • No consent: participants who did not consent to the study

    • 7 did not consent
  • Unnecessary Variables: columns which are not relevant to the analyses (e.g., distribution type, distribution language)

# clean the data
SONA_raw_temp <- 
  # start with removing experimenter and irrelevant rows from the data
    # there is no need to count the ps removed at this stage 
  SONA_raw %>% 
  # remove row 1 & 2 -- not data
  slice(3:nrow(SONA_raw)) %>% 
  # remove testing data
  filter(DistributionChannel != "test") %>% 

  # next, remove ps w/ incomplete data -- include only thos who have finished (i.e., "1")
  filter(Finished == 1) %>% 
  
  # remove any ps who did not consent to the study
  filter(Q1.2 == 1) %>% 
  
  # remove any ps who did not report being at least 18 or older
  filter(!Q2.1 <17) %>% 
  
    # remove p w/ age "2"
    filter(!Q2.1 == 2) %>% 

  # remove unnecessary columns
    # should be done after others since columns used to filter
  select(-c(Status:IPAddress, ResponseId:ExternalReference, DistributionChannel:Q1.2, SC0))

Additionally, a “participant” column was added to denote the participant ID, the columns were renamed for easier reference, any unclear or inappropriate responses (e.g., non-numeric response for items requiring a numeric response) were removed, and all variables were formatted as numeric or factor as appropriate. Lastly, any questionnaire scores were calculated.

# add a participant column to data
SONA_data_temp <- 
  cbind(data.frame("participant" = c(1:nrow(SONA_raw_temp))), SONA_raw_temp)

SONA_data <- 
  # change data file type to tibble
  as.tibble(SONA_data_temp) %>% 
  # rename columns...
  dplyr::rename(duration_sec = Duration..in.seconds., age = Q2.1, gender = Q2.2, genderO = Q2.3, lang = Q2.4, langO = Q2.5, prof = Q2.6, live = Q2.7, liveO = Q2.8, edu = Q2.9, employ = Q2.10, employ_FT = Q2.10_1, employ_PT = Q2.10_2, employ_SE = Q2.10_3, employ_UE = Q2.10_4, employ_student = Q2.10_5, employ_retired = Q2.10_6, employ_unable = Q2.10_7, employ_PNTS = Q2.10_8, industry = Q2.11, industryO = Q2.12, industry_student = Q2.11_1, industry_goods = Q2.11_2, industry_utilities = Q2.11_3, industry_const = Q2.11_4, industry_manuf = Q2.11_5, industry_service = Q2.11_6, industry_finance_realtor = Q2.11_7, industry_tech = Q2.11_8, industry_business = Q2.11_9, industry_educ = Q2.11_10, industry_health = Q2.11_11, industry_info_culture = Q2.11_12, industry_accomod = Q2.11_13, industry_public_admin = Q2.11_14, industry_other = Q2.11_15, industry_DNA = Q2.11_16,
              # smartphone questions
                # frequency of use
                phone_for_work = Q2.13, specific_app = Q2.14, age_first_phone = Q3.1, app_most_used = Q3.2, app_most_usedO = Q3.3, app_most_used_overall = Q3.4, 
                
                # iphone questions -- ST
                iphone = Q4.1, ST = Q4.2, ST_app_most_used = Q4.4, ST_app_most_usedO = Q4.5, ST_app_text_mess = Q4.6, ST_app_most_used_overall = Q4.7, ST_weekly_tot_hours = Q4.8, ST_daily_pickups = Q4.9, ST_daily_not = Q4.10, 
              
                # comfort level qs
                com_gen = Q5.1_1, com_unattended = Q5.1_2, com_leave_with_others = Q5.1_3, com_locked = Q5.1_4, com_room_task = Q5.1_5, 
              
                #privacy qs
                passcode = Q6.1, passcode_others = Q6.2, passcode_relation = Q6.3, passcode_relation_parents = Q6.3_1, passcode_relation_other_fam = Q6.3_2, passcode_relation_sig_other = Q6.3_3, passcode_relation_friend = Q6.3_4, passcode_relation_work = Q6.3_5, passcode_relation_other = Q6.3_6, passcode_relation_DNA = Q6.3_7, passcode_relation_overall = Q6.4, other_use = Q6.5, other_room = Q6.6, 
              
                # distraction qs
                dist_daily = Q7.1_1, dist_study = Q7.1_2, dist_device = Q7.2, dist_deviceO = Q7.3, dist_device_studywork = Q7.4, dist_device_studyworkO = Q7.5, 
                dist_device_social = Q7.6, dist_device_socialO = Q7.7,
              
                # location & power qs
                pow_not_using = Q8.1_1, pow_notifications_on = Q8.1_2, pow_vibrate = Q8.1_3, pow_study = Q8.1_4, pow_exam = Q8.1_5, pow_lec = Q8.1_6, pow_work = Q8.1_7, pow_meeting = Q8.1_8, pow_sleep = Q8.1_9, 
                loc_typical = Q8.2, loc_study = Q8.3, loc_exam = Q8.4, loc_lec = Q8.5, loc_work = Q8.6, loc_meeting = Q8.7, loc_social = Q8.8,  
              
                # exploratory qs
                communicate = Q9.1, communicateO = Q9.2, phone_use = Q9.3, phone_useO = Q9.4, phone_value = Q9.5, phantom = Q9.6,  
              
              # Questionnaires
                # Nomophobia -- criterion - no subscales
                NMPQ_1 = Q10.1_1, NMPQ_2 = Q10.1_2, NMPQ_3 = Q10.1_3, NMPQ_4 = Q10.1_4, NMPQ_5 = Q10.1_5, NMPQ_6 = Q10.1_6, NMPQ_7 = Q10.1_7, NMPQ_8 = Q10.1_8, NMPQ_9 = Q10.1_9, NMPQ_10 = Q10.2_1, NMPQ_11 = Q10.2_2, NMPQ_12 = Q10.2_3, NMPQ_13 = Q10.2_4, NMPQ_14 = Q10.2_5, NMPQ_15 = Q10.2_6, NMPQ_16 = Q10.2_7, NMPQ_17 = Q10.2_8, NMPQ_18 = Q10.2_9, NMPQ_19 = Q10.2_10, NMPQ_20 = Q10.2_11, 
                
                # SRS -- predictor - no subscales
                # rev coded = 5, 7, 9
                SRS_1 = Q11.1_1, SRS_2 = Q11.1_2, SRS_3 = Q11.1_3, SRS_4 = Q11.1_4, SRS_5 = Q11.1_5, SRS_6 = Q11.1_6, SRS_7 = Q11.1_7, SRS_8 = Q11.1_8, SRS_9 = Q11.1_9, SRS_10 = Q11.1_10, 
              
                # SAD -- predictor - 4 subscales based on Ruiz Pardo & Minda, 2021
                # dependence (1-3), accessibility (5-7), emotional attachment (8-11), distractibility (12-13)
                SAD_dep_1 = Q12.1_1, SAD_dep_2 = Q12.1_2, SAD_dep_3 = Q12.1_3, SAD_4 = Q12.1_4, SAD_access_5 = Q12.1_5, SAD_access_6 = Q12.1_6, SAD_access_7 = Q12.1_7, SAD_ea_8 = Q12.1_8, SAD_ea_9 = Q12.1_9, SAD_ea_10 = Q12.1_10, SAD_ea_11 = Q12.1_11, SAD_dist_12 = Q12.1_12, SAD_dist_13 = Q12.1_13, 
              
                # DASS-21 -- predictor - 3 subscales 
                # depression (3, 5, 10, 13, 16, 17, 21), anxiety (2, 4, 7, 9, 15, 19, 20), stress (1, 6, 8, 11, 12, 14, 18)
                DASS_D_3 = Q13.1_3, DASS_D_5 = Q13.1_5, DASS_D_10 = Q13.1_10, DASS_D_13 = Q13.1_13, DASS_D_16 = Q13.1_16, DASS_D_17 = Q13.1_17, DASS_D_21 = Q13.1_21, DASS_A_2 = Q13.1_2, DASS_A_4 = Q13.1_4, DASS_A_7 = Q13.1_7, DASS_A_9 = Q13.1_9, DASS_A_15 = Q13.1_15, DASS_A_19 = Q13.1_19, DASS_A_20 = Q13.1_20, DASS_S_1 = Q13.1_1, DASS_S_6 = Q13.1_6, DASS_S_8 = Q13.1_8, DASS_S_11 = Q13.1_11, DASS_S_12 = Q13.1_12, DASS_S_14 = Q13.1_14, DASS_S_18 = Q13.1_18,
              
                # BIS-brief -- predictor - no subscales
                # rev coded = 1, 4, 5, 6
                BIS_1 = Q14.1_1, BIS_2 = Q14.1_2, BIS_3 = Q14.1_3, BIS_4 = Q14.1_4, BIS_5 = Q14.1_5, BIS_6 = Q14.1_6, BIS_7 = Q14.1_7, BIS_8 = Q14.1_8,
              
                # SSEIT - predictor - no subscales
                # rev coded = 5, 28, 33
                SSEIT_1 = Q15.1_1, SSEIT_2 = Q15.1_2, SSEIT_3 = Q15.1_3, SSEIT_4 = Q15.1_4, SSEIT_5 = Q15.1_5, SSEIT_6 = Q15.1_6, SSEIT_7 = Q15.1_7, SSEIT_8 = Q15.1_8, SSEIT_9 = Q15.1_9, SSEIT_10 = Q15.1_10, SSEIT_11 = Q15.1_11, SSEIT_12 = Q15.1_12, SSEIT_13 = Q15.1_13, SSEIT_14 = Q15.1_14, SSEIT_15 = Q15.1_15, SSEIT_16 = Q15.1_16, SSEIT_17 = Q15.1_17, SSEIT_18 = Q15.1_18, SSEIT_19 = Q15.1_19, SSEIT_20 = Q15.1_20, SSEIT_21 = Q15.1_21, SSEIT_22 = Q15.1_22, SSEIT_23 = Q15.1_23, SSEIT_24 = Q15.1_24, SSEIT_25 = Q15.1_25, SSEIT_26 = Q15.1_26, SSEIT_27 = Q15.1_27, SSEIT_28 = Q15.1_28, SSEIT_29 = Q15.1_29, SSEIT_30 = Q15.1_30, SSEIT_31 = Q15.1_31, SSEIT_32 = Q15.1_32, SSEIT_33 = Q15.1_33,
              
                # RSES - predictor - no subscales
                # rev coded = 3, 5, 8, 9, 10
                RSES_1 = Q16.1_1, RSES_2 = Q16.1_2, RSES_3 = Q16.1_3, RSES_4 = Q16.1_4, RSES_5 = Q16.1_5, RSES_6 = Q16.1_6, RSES_7 = Q16.1_7, RSES_8 = Q16.1_8, RSES_9 = Q16.1_9, RSES_10 = Q16.1_10,
                
                # IPIP-NEO-60 - predictor - 5 subscales
                # Neuroticism (1-12), Extraversion (13-24), Openness (25-36), Agreeableness (37-48), Conscientiousness (49-60)
                # rev coded = 9-12; 16; 28, 30-34m 36; 39, 40, 43-46; 52, 58-60
                NEO_N_1 = Q17.1_1, NEO_N_2 = Q17.1_2, NEO_N_3 = Q17.1_3, NEO_N_4 = Q17.1_4, NEO_N_5 = Q17.1_5, NEO_N_6 = Q17.1_6, NEO_N_7 = Q17.1_7, NEO_N_8 = Q17.1_8, NEO_N_9 = Q17.1_9, NEO_N_10 = Q17.1_10, NEO_N_11 = Q17.1_11, NEO_N_12 = Q17.1_12, NEO_E_13 = Q17.1_13, NEO_E_14 = Q17.1_14, NEO_E_15 = Q17.1_15, NEO_E_16 = Q17.1_16, NEO_E_17 = Q17.1_17, NEO_E_18 = Q17.1_18, NEO_E_19 = Q17.1_19, NEO_E_20 = Q17.1_20, NEO_E_21 = Q17.1_21, NEO_E_22 = Q17.1_22, NEO_E_23 = Q17.1_23, NEO_E_24 = Q17.1_24, NEO_O_25 = Q17.1_25, NEO_O_26 = Q17.1_26, NEO_O_27 = Q17.1_27, NEO_O_28 = Q17.1_28, NEO_O_29 = Q17.1_29, NEO_O_30 = Q17.1_30, NEO_O_31 = Q17.1_31, NEO_O_32 = Q17.1_32, NEO_O_33 = Q17.1_33, NEO_O_34 = Q17.1_34, NEO_O_35 = Q17.1_35, NEO_O_36 = Q17.1_36, NEO_A_37 = Q17.1_37, NEO_A_38 = Q17.1_38, NEO_A_39 = Q17.1_39, NEO_A_40 = Q17.1_40, NEO_A_41 = Q17.1_41, NEO_A_42 = Q17.1_42, NEO_A_43 = Q17.1_43, NEO_A_44 = Q17.1_44, NEO_A_45 = Q17.1_45, NEO_A_46 = Q17.1_46, NEO_A_47 = Q17.1_47, NEO_A_48 = Q17.1_48, NEO_C_49 = Q17.1_49, NEO_C_50 = Q17.1_50, NEO_C_51 = Q17.1_51, NEO_C_52 = Q17.1_52, NEO_C_53 = Q17.1_53, NEO_C_54 = Q17.1_54, NEO_C_55 = Q17.1_55, NEO_C_56 = Q17.1_56, NEO_C_57 = Q17.1_57, NEO_C_58 = Q17.1_58, NEO_C_59 = Q17.1_59, NEO_C_60 = Q17.1_60
                ) %>% 
  
# replace unclear/inappropriate responses
  # remove non-numeric responses to "age_first_phone"
    # this will force all non-numeric value to "NA"
  mutate(age_first_phone = as.numeric(age_first_phone)) %>% 
  
  # change variables to numeric or factor as needed 
  # demographic qs
  mutate(age = as.numeric(age), age = as.numeric(age), gender = factor(gender, levels = c(1:4), labels = c("Male", "Female", "Other", "Prefer not to say")), lang = factor(lang, levels = c(1:2), labels = c("English", "Other")), prof = factor(prof, levels = c(1:3), labels = c("Low", "Moderate", "High")), live = factor(live, levels = c(1:11), labels = c("North America", "Central America", "South America", "Europe", "Africa", "Asia", "Australia", "Pacific Islander", "Caribbean Islands", "Other", "Prefer not to say")), edu = factor(edu, levels = c(1:9), labels = c("some high school", "high school or equivalent", "some college, no degree", "associate degree", "bachelor’s degree", "master’s degree", "professional degree", "doctorate or higher", "Prefer not to say")), 
         # employ = factor(employ, levels = c(1:8), labels = c("full-time", "patt-time", "self-employed", "unemployed", "student", "retired", "unable to work", "Prefer not to say")), industry = factor(industry, levels = c(1:16), labels = c("student", "goods-producing sector", "utilities", "construction", "manufacturing", "services-producing sector", "finance, insurance, real estate, rental and leasing", "professional, scientific and technical services", "business, building and other support services", "educational services", "health care and social assistance", "information, culture and recreation", "accommodation and food services", "public administration", "other", "does not apply to me")), 

  # phone use -- general         
phone_for_work = factor(phone_for_work, levels = c(1:3), labels = c("yes", "no", "does not apply to me")), specific_app = factor(specific_app, levels = c(1:3), labels = c("yes", "no", "does not apply to me")), app_most_used = factor(app_most_used, levels = c(1:5), labels = c("Games", "Social Networking", "Entertainment", "Business/Productivity", "Other")), 

  # phone use -- iphone / ST
iphone = factor(iphone, levels = c(1:2), labels = c("yes", "no")), ST = factor(ST, levels = c(1:3), labels = c("had ST", "ST new", "no ST")), ST_app_most_used = factor(ST_app_most_used, levels = c(1:5), labels = c("Games", "Social Networking", "Entertainment", "Business/Productivity", "Other")), ST_app_text_mess = as.numeric(ST_app_text_mess), ST_weekly_tot_hours = as.numeric(ST_weekly_tot_hours),  ST_daily_pickups = as.numeric(ST_daily_pickups), ST_daily_not = as.numeric(ST_daily_not), 

  # comfort level qs
com_gen = as.numeric(com_gen), com_unattended = as.numeric(com_unattended), com_leave_with_others = as.numeric(com_leave_with_others), com_locked = as.numeric(com_locked), com_room_task = as.numeric(com_room_task),
  # privacy qs
passcode = factor(passcode, levels = c(1:2), labels = c("yes", "no")), passcode_others = factor(passcode_others, levels = c(1:2), labels = c("yes", "no")), passcode_relation = factor(passcode_relation, levels = c(1:7), labels = c("parents", "other family", "significant other", "friends", "co-worker / supervisor", "other", "DNA")), other_use = factor(other_use, levels = c(1:4), labels = c("Yes, only in my presence.", "Yes, depending on the individual and only in my presence.", "Yes, depending on the individual and does not need to be in my presence.", "No")), other_room = factor(other_room, levels = c(1:2), labels = c("yes", "no")), 

  # dustraction qs
dist_daily = as.numeric(dist_daily), dist_study = as.numeric(dist_study), dist_device = factor(dist_device, levels = c(1:5), labels = c("Computer", "Phone", "iPad/Tablet", "Smartwatch", "Other")), dist_device_studywork = factor(dist_device_studywork, levels = c(1:5), labels = c("Computer", "Phone", "iPad/Tablet", "Smartwatch", "Other")), dist_device_social = factor(dist_device_social, levels = c(1:5), labels = c("Computer", "Phone", "iPad/Tablet", "Smartwatch", "Other")), 

  # location & power questions
pow_not_using = as.numeric(pow_not_using), pow_notifications_on = as.numeric(pow_notifications_on), pow_vibrate = as.numeric(pow_vibrate), pow_study = as.numeric(pow_study), pow_exam = as.numeric(pow_exam), pow_lec = as.numeric(pow_lec), pow_work = as.numeric(pow_work), pow_meeting = as.numeric(pow_meeting), pow_sleep = as.numeric(pow_sleep), loc_typical = factor(loc_typical, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_study = factor(loc_study, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_exam = factor(loc_exam, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_lec = factor(loc_lec, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_work = factor(loc_work, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_meeting = factor(loc_meeting, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_social = factor(loc_social, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), 

  # exploratory qs
communicate = factor(communicate, levels = c(1:4), labels = c("Family", "Friends", "Work", "Other")), phone_use = factor(phone_use, levels = c(1:5), labels = c("Calling/Texting", "Social Media", "Games", "Email", "Other")), phone_value = factor(phone_value, levels = c(1:4), labels = c("$0-$20", "$21-$40", "$41-$60", ">$60")), phantom = factor(phantom, levels = c(1:2), labels = c("yes", "no")), 
         ) %>% 
  mutate_at(vars(starts_with("employ_")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("industry_")),funs(as.numeric)) %>% 
  
  mutate_at(vars(starts_with("NMPQ")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("SRS")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("SAD")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("DASS")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("BIS")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("SSEIT")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("RSES")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("NEO")),funs(as.numeric)) %>% 
  
  # reverse code items...
    # this REPLACES original items with new reverse-coded values
    # the subtraction is made based on the likert scale
      # so if the scale is 1-4, then it should be 5-score
  # for SRS: 5, 7, 9
  mutate(SRS_5 = 5-SRS_5) %>% 
  mutate(SRS_7 = 5-SRS_7) %>% 
  mutate(SRS_9 = 5-SRS_9) %>% 
  # for BIS: 1, 4, 5, 6
  mutate(BIS_1 = 5-BIS_1) %>% 
  mutate(BIS_4 = 5-BIS_4) %>% 
  mutate(BIS_5 = 5-BIS_5) %>% 
  mutate(BIS_6 = 5-BIS_6) %>% 
  # for SSEIT: 5, 28, 33
  mutate(SSEIT_5 = 6-SSEIT_5) %>% 
  mutate(SSEIT_28 = 6-SSEIT_28) %>% 
  mutate(SSEIT_33 = 6-SSEIT_33) %>% 
  # for RSES: 3, 5, 8, 9, 10
  mutate(RSES_3 = 5-RSES_3) %>% 
  mutate(RSES_5 = 5-RSES_5) %>% 
  mutate(RSES_8 = 5-RSES_8) %>% 
  mutate(RSES_9 = 5-RSES_9) %>% 
  mutate(RSES_10 = 5-RSES_10) %>% 
  # for NEO: 9-12; 16; 28, 30-34, 36; 39, 40, 43-46; 52, 58-60
  mutate(NEO_N_9 = 6-NEO_N_9) %>% 
  mutate(NEO_N_10 = 6-NEO_N_10) %>% 
  mutate(NEO_N_11 = 6-NEO_N_11) %>% 
  mutate(NEO_N_12 = 6-NEO_N_12) %>% 
  
  mutate(NEO_E_16 = 6-NEO_E_16) %>% 
  
  mutate(NEO_O_28 = 6-NEO_O_28) %>% 
  mutate(NEO_O_30 = 6-NEO_O_30) %>% 
  mutate(NEO_O_31 = 6-NEO_O_31) %>% 
  mutate(NEO_O_32 = 6-NEO_O_32) %>% 
  mutate(NEO_O_33 = 6-NEO_O_33) %>% 
  mutate(NEO_O_34 = 6-NEO_O_34) %>% 
  mutate(NEO_O_36 = 6-NEO_O_36) %>% 
  
  mutate(NEO_A_39 = 6-NEO_A_39) %>% 
  mutate(NEO_A_40 = 6-NEO_A_40) %>% 
  mutate(NEO_A_43 = 6-NEO_A_43) %>% 
  mutate(NEO_A_44 = 6-NEO_A_44) %>% 
  mutate(NEO_A_45 = 6-NEO_A_45) %>% 
  mutate(NEO_A_46 = 6-NEO_A_46) %>% 
  
  mutate(NEO_C_52 = 6-NEO_C_52) %>% 
  mutate(NEO_C_58 = 6-NEO_C_58) %>% 
  mutate(NEO_C_59 = 6-NEO_C_59) %>% 
  mutate(NEO_C_60 = 6-NEO_C_60) %>% 
  
  # add scores for each questionnaire... rowwise() %>% dplyr::mutate(SAD_score = sum(c_across(SAD_1:SAD_13)))
  # for each p....
  # get NMPQ score -- SUM
  rowwise() %>% dplyr::mutate(NMPQ_sum = sum(c_across(NMPQ_1:NMPQ_20))) %>% 
  
  # get SRS score -- SUM
  rowwise() %>% dplyr::mutate(SRS_sum = sum(c_across(SRS_1:SRS_10))) %>% 
  
  # get SAD score -- SUM
    # overall (1-13)
    rowwise() %>% dplyr::mutate(SAD_sum = sum(c_across(starts_with("SAD")))) %>%
    # dependency (1-3)
    rowwise() %>% dplyr::mutate(SAD_dep_sum = sum(c_across(SAD_dep_1:SAD_dep_3))) %>%
    # accessibility (5-7)
    rowwise() %>% dplyr::mutate(SAD_access_sum = sum(c_across(SAD_access_5:SAD_access_7))) %>%
    # emotional attachment (8-11)
    rowwise() %>% dplyr::mutate(SAD_ea_sum = sum(c_across(SAD_ea_8:SAD_ea_11))) %>%
    # distractibility (12-13)
    rowwise() %>% dplyr::mutate(SAD_dist_sum = sum(c_across(SAD_dist_12:SAD_dist_13))) %>%
  
  # get DASS score -- SUM
    # depression (3, 5, 10, 13, 16, 17, 21)
    rowwise() %>% dplyr::mutate(DASS_D_sum = sum(c_across(starts_with("DASS_D")))) %>% 
    # anxiety (2, 4, 7, 9, 15, 19, 20)
    rowwise() %>% dplyr::mutate(DASS_A_sum = sum(c_across(starts_with("DASS_A")))) %>% 
    # stress (1, 6, 8, 11, 12, 14, 18)
    rowwise() %>% dplyr::mutate(DASS_S_sum = sum(c_across(starts_with("DASS_S")))) %>% 
  
  
  # get BIS score -- SUM
  rowwise() %>% dplyr::mutate(BIS_sum = sum(c_across(starts_with("BIS")))) %>% 
  
  # get SSEIT score -- SUM
  rowwise() %>% dplyr::mutate(SSEIT_sum = sum(c_across(starts_with("SSEIT")))) %>% 
  
  # get RSES score -- SUM
  rowwise() %>% dplyr::mutate(RSES_sum = sum(c_across(starts_with("RSES")))) %>% 
  
  # get NEO score -- SUM
    # Neuroticism (1-12) 
    rowwise() %>% dplyr::mutate(NEO_N_sum = sum(c_across(starts_with("NEO_N")))) %>% 
    # Extraversion (13-24)
    rowwise() %>% dplyr::mutate(NEO_E_sum = sum(c_across(starts_with("NEO_E")))) %>% 
    # Openness (25-36)
    rowwise() %>% dplyr::mutate(NEO_O_sum = sum(c_across(starts_with("NEO_O")))) %>% 
    # Agreeableness (37-48)
    rowwise() %>% dplyr::mutate(NEO_A_sum = sum(c_across(starts_with("NEO_A")))) %>% 
    # Conscientiousness (49-60)
    rowwise() %>% dplyr::mutate(NEO_C_sum = sum(c_across(starts_with("NEO_C"))))
  
  # example to get measn: get NMPQ score -- MEAN
  # rowwise() %>% dplyr::mutate(mean(c_across(NMPQ_1:NMPQ_20))) %>% 

# export final data file
  write.csv(SONA_data,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/SONA_data(oct28).csv", row.names = FALSE)

2. Study 2 Data: Mturk

First, the raw data was imported.

# this will import the raw excel data file for study 1
  # this file has been anonymized, so any identifiable information has been removed
Mturk_raw <- read.csv("Mturk_survey_data(oct19)-final.csv", header = TRUE)

After importing the raw data, the file is cleaned by removing participants based on several criteria:

  • Testing Data: experimenter data (i.e., testing prior to data collection), any irrelevant rows

  • Incomplete Data: participants who did not complete the study

    • 75 did not finish
  • No consent: participants who did not consent to the study

    • 7 did not consent
  • Unnecessary Variables: columns which are not relevant to the analyses (e.g., distribution type, distribution language)

# clean the data
Mturk_raw_temp <- 
  # start with removing experimenter and irrelevant rows from the data
    # there is no need to count the ps removed at this stage 
  Mturk_raw %>% 
  # remove row 1 & 2 -- not data
  slice(3:nrow(Mturk_raw)) %>% 
  # remove testing data
  filter(DistributionChannel != "test") %>% 

  # next, remove ps w/ incomplete data -- include only thos who have finished (i.e., "1")
  filter(Finished == 1) %>% 
  
  # remove any ps who did not consent to the study
  filter(Q1.2 == 1) %>% 
  
  # remove any ps who did not report being at least 18 or older
  filter(Q2.1 >17) %>% 

  # remove unnecessary columns
    # should be done after others since columns used to filter
  select(-c(Status:IPAddress, ResponseId:ExternalReference, DistributionChannel:Q1.2, SC0))

Additionally, a “participant” column was added to denote the participant ID, the columns were renamed for easier reference, any unclear or inappropriate responses (e.g., non-numeric response for items requiring a numeric response) were removed, and all variables were formatted as numeric or factor as appropriate. Lastly, any questionnaire scores were calculated.

# add a participant column to data
Mturk_data_temp <- 
  cbind(data.frame("participant" = c(1:nrow(Mturk_raw_temp))), Mturk_raw_temp)

Mturk_data <- 
  # change data file type to tibble 
  as.tibble(Mturk_data_temp) %>% 
  # rename columns...
  dplyr::rename(duration_sec = Duration..in.seconds., age = Q2.1, gender = Q2.2, genderO = Q2.3, lang = Q2.4, langO = Q2.5, prof = Q2.6, live = Q2.7, liveO = Q2.8, edu = Q2.9, employ = Q2.10, employ_FT = Q2.10_1, employ_PT = Q2.10_2, employ_SE = Q2.10_3, employ_UE = Q2.10_4, employ_student = Q2.10_5, employ_retired = Q2.10_6, employ_unable = Q2.10_7, employ_PNTS = Q2.10_8, industry = Q2.11, industryO = Q2.12, industry_student = Q2.11_1, industry_goods = Q2.11_2, industry_utilities = Q2.11_3, industry_const = Q2.11_4, industry_manuf = Q2.11_5, industry_service = Q2.11_6, industry_finance_realtor = Q2.11_7, industry_tech = Q2.11_8, industry_business = Q2.11_9, industry_educ = Q2.11_10, industry_health = Q2.11_11, industry_info_culture = Q2.11_12, industry_accomod = Q2.11_13, industry_public_admin = Q2.11_14, industry_other = Q2.11_15, industry_DNA = Q2.11_16,
              # smartphone questions
                # frequency of use
                phone_for_work = Q2.13, specific_app = Q2.14, age_first_phone = Q3.1, app_most_used = Q3.2, app_most_usedO = Q3.3, app_most_used_overall = Q3.4, 
                
                # iphone questions -- ST
                iphone = Q4.1, ST = Q4.2, ST_app_most_used = Q4.4, ST_app_most_usedO = Q4.5, ST_app_text_mess = Q4.6, ST_app_most_used_overall = Q4.7, ST_weekly_tot_hours = Q4.8, ST_daily_pickups = Q4.9, ST_daily_not = Q4.10, 
              
                # comfort level qs
                com_gen = Q5.1_1, com_unattended = Q5.1_2, com_leave_with_others = Q5.1_3, com_locked = Q5.1_4, com_room_task = Q5.1_5, 
              
                #privacy qs
                passcode = Q6.1, passcode_others = Q6.2, passcode_relation = Q6.3, passcode_relation_parents = Q6.3_1, passcode_relation_other_fam = Q6.3_2, passcode_relation_sig_other = Q6.3_3, passcode_relation_friend = Q6.3_4, passcode_relation_work = Q6.3_5, passcode_relation_other = Q6.3_6, passcode_relation_DNA = Q6.3_7, passcode_relation_overall = Q6.4, other_use = Q6.5, other_room = Q6.6,  
              
                # distraction qs
                dist_daily = Q7.1_1, dist_study = Q7.1_2, dist_device = Q7.2, dist_deviceO = Q7.3, dist_device_studywork = Q7.4, dist_device_studyworkO = Q7.5, 
                dist_device_social = Q7.6, dist_device_socialO = Q7.7,
              
                # location & power qs
                pow_not_using = Q8.1_1, pow_notifications_on = Q8.1_2, pow_vibrate = Q8.1_3, pow_study = Q8.1_4, pow_exam = Q8.1_5, pow_lec = Q8.1_6, pow_work = Q8.1_7, pow_meeting = Q8.1_8, pow_sleep = Q8.1_9, 
                loc_typical = Q8.2, loc_study = Q8.3, loc_exam = Q8.4, loc_lec = Q8.5, loc_work = Q8.6, loc_meeting = Q8.7, loc_social = Q8.8,  
              
                # exploratory qs
                communicate = Q9.1, communicateO = Q9.2, phone_use = Q9.3, phone_useO = Q9.4, phone_value = Q9.5, phantom = Q9.6,  
              
              # Questionnaires
                # Nomophobia -- criterion - no subscales
                NMPQ_1 = Q10.1_1, NMPQ_2 = Q10.1_2, NMPQ_3 = Q10.1_3, NMPQ_4 = Q10.1_4, NMPQ_5 = Q10.1_5, NMPQ_6 = Q10.1_6, NMPQ_7 = Q10.1_7, NMPQ_8 = Q10.1_8, NMPQ_9 = Q10.1_9, NMPQ_10 = Q10.2_1, NMPQ_11 = Q10.2_2, NMPQ_12 = Q10.2_3, NMPQ_13 = Q10.2_4, NMPQ_14 = Q10.2_5, NMPQ_15 = Q10.2_6, NMPQ_16 = Q10.2_7, NMPQ_17 = Q10.2_8, NMPQ_18 = Q10.2_9, NMPQ_19 = Q10.2_10, NMPQ_20 = Q10.2_11, 
                
                # SRS -- predictor - no subscales
                # rev coded = 5, 7, 9
                SRS_1 = Q11.1_1, SRS_2 = Q11.1_2, SRS_3 = Q11.1_3, SRS_4 = Q11.1_4, SRS_5 = Q11.1_5, SRS_6 = Q11.1_6, SRS_7 = Q11.1_7, SRS_8 = Q11.1_8, SRS_9 = Q11.1_9, SRS_10 = Q11.1_10, 
              
                # SAD -- predictor - 4 subscales based on Ruiz Pardo & Minda, 2021
                # dependence (1-3), accessibility (5-7), emotional attachment (8-11), distractibility (12-13)
                SAD_dep_1 = Q12.1_1, SAD_dep_2 = Q12.1_2, SAD_dep_3 = Q12.1_3, SAD_4 = Q12.1_4, SAD_access_5 = Q12.1_5, SAD_access_6 = Q12.1_6, SAD_access_7 = Q12.1_7, SAD_ea_8 = Q12.1_8, SAD_ea_9 = Q12.1_9, SAD_ea_10 = Q12.1_10, SAD_ea_11 = Q12.1_11, SAD_dist_12 = Q12.1_12, SAD_dist_13 = Q12.1_13, 
              
                # DASS-21 -- predictor - 3 subscales 
                # depression (3, 5, 10, 13, 16, 17, 21), anxiety (2, 4, 7, 9, 15, 19, 20), stress (1, 6, 8, 11, 12, 14, 18)
                DASS_D_3 = Q13.1_3, DASS_D_5 = Q13.1_5, DASS_D_10 = Q13.1_10, DASS_D_13 = Q13.1_13, DASS_D_16 = Q13.1_16, DASS_D_17 = Q13.1_17, DASS_D_21 = Q13.1_21, DASS_A_2 = Q13.1_2, DASS_A_4 = Q13.1_4, DASS_A_7 = Q13.1_7, DASS_A_9 = Q13.1_9, DASS_A_15 = Q13.1_15, DASS_A_19 = Q13.1_19, DASS_A_20 = Q13.1_20, DASS_S_1 = Q13.1_1, DASS_S_6 = Q13.1_6, DASS_S_8 = Q13.1_8, DASS_S_11 = Q13.1_11, DASS_S_12 = Q13.1_12, DASS_S_14 = Q13.1_14, DASS_S_18 = Q13.1_18,
              
                # BIS-brief -- predictor - no subscales
                # rev coded = 1, 4, 5, 6
                BIS_1 = Q14.1_1, BIS_2 = Q14.1_2, BIS_3 = Q14.1_3, BIS_4 = Q14.1_4, BIS_5 = Q14.1_5, BIS_6 = Q14.1_6, BIS_7 = Q14.1_7, BIS_8 = Q14.1_8,
              
                # SSEIT - predictor - no subscales
                # rev coded = 5, 28, 33
                SSEIT_1 = Q15.1_1, SSEIT_2 = Q15.1_2, SSEIT_3 = Q15.1_3, SSEIT_4 = Q15.1_4, SSEIT_5 = Q15.1_5, SSEIT_6 = Q15.1_6, SSEIT_7 = Q15.1_7, SSEIT_8 = Q15.1_8, SSEIT_9 = Q15.1_9, SSEIT_10 = Q15.1_10, SSEIT_11 = Q15.1_11, SSEIT_12 = Q15.1_12, SSEIT_13 = Q15.1_13, SSEIT_14 = Q15.1_14, SSEIT_15 = Q15.1_15, SSEIT_16 = Q15.1_16, SSEIT_17 = Q15.1_17, SSEIT_18 = Q15.1_18, SSEIT_19 = Q15.1_19, SSEIT_20 = Q15.1_20, SSEIT_21 = Q15.1_21, SSEIT_22 = Q15.1_22, SSEIT_23 = Q15.1_23, SSEIT_24 = Q15.1_24, SSEIT_25 = Q15.1_25, SSEIT_26 = Q15.1_26, SSEIT_27 = Q15.1_27, SSEIT_28 = Q15.1_28, SSEIT_29 = Q15.1_29, SSEIT_30 = Q15.1_30, SSEIT_31 = Q15.1_31, SSEIT_32 = Q15.1_32, SSEIT_33 = Q15.1_33,
              
                # RSES - predictor - no subscales
                # rev coded = 3, 5, 8, 9, 10
                RSES_1 = Q16.1_1, RSES_2 = Q16.1_2, RSES_3 = Q16.1_3, RSES_4 = Q16.1_4, RSES_5 = Q16.1_5, RSES_6 = Q16.1_6, RSES_7 = Q16.1_7, RSES_8 = Q16.1_8, RSES_9 = Q16.1_9, RSES_10 = Q16.1_10,
                
                # IPIP-NEO-60 - predictor - 5 subscales
                # Neuroticism (1-12), Extraversion (13-24), Openness (25-36), Agreeableness (37-48), Conscientiousness (49-60)
                # rev coded = 9-12; 16; 28, 30-34m 36; 39, 40, 43-46; 52, 58-60
                NEO_N_1 = Q17.1_1, NEO_N_2 = Q17.1_2, NEO_N_3 = Q17.1_3, NEO_N_4 = Q17.1_4, NEO_N_5 = Q17.1_5, NEO_N_6 = Q17.1_6, NEO_N_7 = Q17.1_7, NEO_N_8 = Q17.1_8, NEO_N_9 = Q17.1_9, NEO_N_10 = Q17.1_10, NEO_N_11 = Q17.1_11, NEO_N_12 = Q17.1_12, NEO_E_13 = Q17.1_13, NEO_E_14 = Q17.1_14, NEO_E_15 = Q17.1_15, NEO_E_16 = Q17.1_16, NEO_E_17 = Q17.1_17, NEO_E_18 = Q17.1_18, NEO_E_19 = Q17.1_19, NEO_E_20 = Q17.1_20, NEO_E_21 = Q17.1_21, NEO_E_22 = Q17.1_22, NEO_E_23 = Q17.1_23, NEO_E_24 = Q17.1_24, NEO_O_25 = Q17.1_25, NEO_O_26 = Q17.1_26, NEO_O_27 = Q17.1_27, NEO_O_28 = Q17.1_28, NEO_O_29 = Q17.1_29, NEO_O_30 = Q17.1_30, NEO_O_31 = Q17.1_31, NEO_O_32 = Q17.1_32, NEO_O_33 = Q17.1_33, NEO_O_34 = Q17.1_34, NEO_O_35 = Q17.1_35, NEO_O_36 = Q17.1_36, NEO_A_37 = Q17.1_37, NEO_A_38 = Q17.1_38, NEO_A_39 = Q17.1_39, NEO_A_40 = Q17.1_40, NEO_A_41 = Q17.1_41, NEO_A_42 = Q17.1_42, NEO_A_43 = Q17.1_43, NEO_A_44 = Q17.1_44, NEO_A_45 = Q17.1_45, NEO_A_46 = Q17.1_46, NEO_A_47 = Q17.1_47, NEO_A_48 = Q17.1_48, NEO_C_49 = Q17.1_49, NEO_C_50 = Q17.1_50, NEO_C_51 = Q17.1_51, NEO_C_52 = Q17.1_52, NEO_C_53 = Q17.1_53, NEO_C_54 = Q17.1_54, NEO_C_55 = Q17.1_55, NEO_C_56 = Q17.1_56, NEO_C_57 = Q17.1_57, NEO_C_58 = Q17.1_58, NEO_C_59 = Q17.1_59, NEO_C_60 = Q17.1_60
                ) %>% 
  
# replace unclear/inappropriate responses
  # remove non-numeric responses to "age_first_phone"
    # this will force all non-numeric value to "NA"
  mutate(age_first_phone = as.numeric(age_first_phone)) %>% 
  
  # change variables to numeric or factor as needed
  # demographic qs
  mutate(age = as.numeric(age), age = as.numeric(age), gender = factor(gender, levels = c(1:4), labels = c("Male", "Female", "Other", "Prefer not to say")), lang = factor(lang, levels = c(1:2), labels = c("English", "Other")), prof = factor(prof, levels = c(1:3), labels = c("Low", "Moderate", "High")), live = factor(live, levels = c(1:11), labels = c("North America", "Central America", "South America", "Europe", "Africa", "Asia", "Australia", "Pacific Islander", "Caribbean Islands", "Other", "Prefer not to say")), edu = factor(edu, levels = c(1:9), labels = c("some high school", "high school or equivalent", "some college, no degree", "associate degree", "bachelor’s degree", "master’s degree", "professional degree", "doctorate or higher", "Prefer not to say")), 
         
         # employ = factor(employ, levels = c(1:8), labels = c("full-time", "patt-time", "self-employed", "unemployed", "student", "retired", "unable to work", "Prefer not to say")), industry = factor(industry, levels = c(1:16), labels = c("student", "goods-producing sector", "utilities", "construction", "manufacturing", "services-producing sector", "finance, insurance, real estate, rental and leasing", "professional, scientific and technical services", "business, building and other support services", "educational services", "health care and social assistance", "information, culture and recreation", "accommodation and food services", "public administration", "other", "does not apply to me")), 

  # phone use -- general         
phone_for_work = factor(phone_for_work, levels = c(1:3), labels = c("yes", "no", "does not apply to me")), specific_app = factor(specific_app, levels = c(1:3), labels = c("yes", "no", "does not apply to me")), app_most_used = factor(app_most_used, levels = c(1:5), labels = c("Games", "Social Networking", "Entertainment", "Business/Productivity", "Other")), 

  # phone use -- iphone / ST
iphone = factor(iphone, levels = c(1:2), labels = c("yes", "no")), ST = factor(ST, levels = c(1:3), labels = c("had ST", "ST new", "no ST")), ST_app_most_used = factor(ST_app_most_used, levels = c(1:5), labels = c("Games", "Social Networking", "Entertainment", "Business/Productivity", "Other")), ST_app_text_mess = as.numeric(ST_app_text_mess), ST_weekly_tot_hours = as.numeric(ST_weekly_tot_hours),  ST_daily_pickups = as.numeric(ST_daily_pickups), ST_daily_not = as.numeric(ST_daily_not), 

  # comfort level qs
com_gen = as.numeric(com_gen), com_unattended = as.numeric(com_unattended), com_leave_with_others = as.numeric(com_leave_with_others), com_locked = as.numeric(com_locked), com_room_task = as.numeric(com_room_task),
  # privacy qs
passcode = factor(passcode, levels = c(1:2), labels = c("yes", "no")), passcode_others = factor(passcode_others, levels = c(1:2), labels = c("yes", "no")), passcode_relation = factor(passcode_relation, levels = c(1:7), labels = c("parents", "other family", "significant other", "friends", "co-worker / supervisor", "other", "DNA")), other_use = factor(other_use, levels = c(1:4), labels = c("Yes, only in my presence.", "Yes, depending on the individual and only in my presence.", "Yes, depending on the individual and does not need to be in my presence.", "No")), other_room = factor(other_room, levels = c(1:2), labels = c("yes", "no")), 

  # dustraction qs
dist_daily = as.numeric(dist_daily), dist_study = as.numeric(dist_study), dist_device = factor(dist_device, levels = c(1:5), labels = c("Computer", "Phone", "iPad/Tablet", "Smartwatch", "Other")), dist_device_studywork = factor(dist_device_studywork, levels = c(1:5), labels = c("Computer", "Phone", "iPad/Tablet", "Smartwatch", "Other")), dist_device_social = factor(dist_device_social, levels = c(1:5), labels = c("Computer", "Phone", "iPad/Tablet", "Smartwatch", "Other")), 

  # location & power questions
pow_not_using = as.numeric(pow_not_using), pow_notifications_on = as.numeric(pow_notifications_on), pow_vibrate = as.numeric(pow_vibrate), pow_study = as.numeric(pow_study), pow_exam = as.numeric(pow_exam), pow_lec = as.numeric(pow_lec), pow_work = as.numeric(pow_work), pow_meeting = as.numeric(pow_meeting), pow_sleep = as.numeric(pow_sleep), loc_typical = factor(loc_typical, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_study = factor(loc_study, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_exam = factor(loc_exam, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_lec = factor(loc_lec, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_work = factor(loc_work, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_meeting = factor(loc_meeting, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), loc_social = factor(loc_social, levels = c(1:3), labels = c("On my desk", "In my pocket or bag", "In another room")), 

  # exploratory qs
communicate = factor(communicate, levels = c(1:4), labels = c("Family", "Friends", "Work", "Other")), phone_use = factor(phone_use, levels = c(1:5), labels = c("Calling/Texting", "Social Media", "Games", "Email", "Other")), phone_value = factor(phone_value, levels = c(1:4), labels = c("$0-$20", "$21-$40", "$41-$60", ">$60")), phantom = factor(phantom, levels = c(1:2), labels = c("yes", "no")), 
         ) %>% 
  mutate_at(vars(starts_with("employ_")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("industry_")),funs(as.numeric)) %>% 
  
  mutate_at(vars(starts_with("NMPQ")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("SRS")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("SAD")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("DASS")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("BIS")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("SSEIT")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("RSES")),funs(as.numeric)) %>% 
  mutate_at(vars(starts_with("NEO")),funs(as.numeric)) %>% 
  
  # reverse code items...
    # this REPLACES original items with new reverse-coded values
    # the subtraction is made based on the likert scale
      # so if the scale is 1-4, then it should be 5-score
  # for SRS: 5, 7, 9
  mutate(SRS_5 = 5-SRS_5) %>% 
  mutate(SRS_7 = 5-SRS_7) %>% 
  mutate(SRS_9 = 5-SRS_9) %>% 
  # for BIS: 1, 4, 5, 6
  mutate(BIS_1 = 5-BIS_1) %>% 
  mutate(BIS_4 = 5-BIS_4) %>% 
  mutate(BIS_5 = 5-BIS_5) %>% 
  mutate(BIS_6 = 5-BIS_6) %>% 
  # for SSEIT: 5, 28, 33
  mutate(SSEIT_5 = 6-SSEIT_5) %>% 
  mutate(SSEIT_28 = 6-SSEIT_28) %>% 
  mutate(SSEIT_33 = 6-SSEIT_33) %>% 
  # for RSES: 3, 5, 8, 9, 10
  mutate(RSES_3 = 5-RSES_3) %>% 
  mutate(RSES_5 = 5-RSES_5) %>% 
  mutate(RSES_8 = 5-RSES_8) %>% 
  mutate(RSES_9 = 5-RSES_9) %>% 
  mutate(RSES_10 = 5-RSES_10) %>% 
  # for NEO: 9-12; 16; 28, 30-34, 36; 39, 40, 43-46; 52, 58-60
  mutate(NEO_N_9 = 6-NEO_N_9) %>% 
  mutate(NEO_N_10 = 6-NEO_N_10) %>% 
  mutate(NEO_N_11 = 6-NEO_N_11) %>% 
  mutate(NEO_N_12 = 6-NEO_N_12) %>% 
  
  mutate(NEO_E_16 = 6-NEO_E_16) %>% 
  
  mutate(NEO_O_28 = 6-NEO_O_28) %>% 
  mutate(NEO_O_30 = 6-NEO_O_30) %>% 
  mutate(NEO_O_31 = 6-NEO_O_31) %>% 
  mutate(NEO_O_32 = 6-NEO_O_32) %>% 
  mutate(NEO_O_33 = 6-NEO_O_33) %>% 
  mutate(NEO_O_34 = 6-NEO_O_34) %>% 
  mutate(NEO_O_36 = 6-NEO_O_36) %>% 
  
  mutate(NEO_A_39 = 6-NEO_A_39) %>% 
  mutate(NEO_A_40 = 6-NEO_A_40) %>% 
  mutate(NEO_A_43 = 6-NEO_A_43) %>% 
  mutate(NEO_A_44 = 6-NEO_A_44) %>% 
  mutate(NEO_A_45 = 6-NEO_A_45) %>% 
  mutate(NEO_A_46 = 6-NEO_A_46) %>% 
  
  mutate(NEO_C_52 = 6-NEO_C_52) %>% 
  mutate(NEO_C_58 = 6-NEO_C_58) %>% 
  mutate(NEO_C_59 = 6-NEO_C_59) %>% 
  mutate(NEO_C_60 = 6-NEO_C_60) %>% 
  
  # add scores for each questionnaire... rowwise() %>% dplyr::mutate(SAD_score = sum(c_across(SAD_1:SAD_13)))
  # for each p....
  # get NMPQ score -- SUM
  rowwise() %>% dplyr::mutate(NMPQ_sum = sum(c_across(NMPQ_1:NMPQ_20))) %>% 
  
  # get SRS score -- SUM
  rowwise() %>% dplyr::mutate(SRS_sum = sum(c_across(SRS_1:SRS_10))) %>% 
  
  # get SAD score -- SUM
    # overall (1-13)
    rowwise() %>% dplyr::mutate(SAD_sum = sum(c_across(starts_with("SAD")))) %>%
    # dependency (1-3)
    rowwise() %>% dplyr::mutate(SAD_dep_sum = sum(c_across(SAD_dep_1:SAD_dep_3))) %>%
    # accessibility (5-7)
    rowwise() %>% dplyr::mutate(SAD_access_sum = sum(c_across(SAD_access_5:SAD_access_7))) %>%
    # emotional attachment (8-11)
    rowwise() %>% dplyr::mutate(SAD_ea_sum = sum(c_across(SAD_ea_8:SAD_ea_11))) %>%
    # distractibility (12-13)
    rowwise() %>% dplyr::mutate(SAD_dist_sum = sum(c_across(SAD_dist_12:SAD_dist_13))) %>%
  
  # get DASS score -- SUM
    # depression (3, 5, 10, 13, 16, 17, 21)
    rowwise() %>% dplyr::mutate(DASS_D_sum = sum(c_across(starts_with("DASS_D")))) %>% 
    # anxiety (2, 4, 7, 9, 15, 19, 20)
    rowwise() %>% dplyr::mutate(DASS_A_sum = sum(c_across(starts_with("DASS_A")))) %>% 
    # stress (1, 6, 8, 11, 12, 14, 18)
    rowwise() %>% dplyr::mutate(DASS_S_sum = sum(c_across(starts_with("DASS_S")))) %>% 
  
  
  # get BIS score -- SUM
  rowwise() %>% dplyr::mutate(BIS_sum = sum(c_across(starts_with("BIS")))) %>% 
  
  # get SSEIT score -- SUM
  rowwise() %>% dplyr::mutate(SSEIT_sum = sum(c_across(starts_with("SSEIT")))) %>% 
  
  # get RSES score -- SUM
  rowwise() %>% dplyr::mutate(RSES_sum = sum(c_across(starts_with("RSES")))) %>% 
  
  # get NEO score -- SUM
    # Neuroticism (1-12) 
    rowwise() %>% dplyr::mutate(NEO_N_sum = sum(c_across(starts_with("NEO_N")))) %>% 
    # Extraversion (13-24)
    rowwise() %>% dplyr::mutate(NEO_E_sum = sum(c_across(starts_with("NEO_E")))) %>% 
    # Openness (25-36)
    rowwise() %>% dplyr::mutate(NEO_O_sum = sum(c_across(starts_with("NEO_O")))) %>% 
    # Agreeableness (37-48)
    rowwise() %>% dplyr::mutate(NEO_A_sum = sum(c_across(starts_with("NEO_A")))) %>% 
    # Conscientiousness (49-60)
    rowwise() %>% dplyr::mutate(NEO_C_sum = sum(c_across(starts_with("NEO_C"))))
  
  # example to get measn: get NMPQ score -- MEAN
  # rowwise() %>% dplyr::mutate(mean(c_across(NMPQ_1:NMPQ_20))) %>% 

# export final data file
  write.csv(Mturk_data,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/Mturk_data(oct28).csv", row.names = FALSE)

Descriptive Statistics

NOMINAL (study 1 & study 2)

Demographic & Typical Smartphone Use


# output is a list of tibbles, each with: $xxx = var name, x = level(s), n = count, pct = percentage

## FOR SONA DATA
sona_nom_demo <- 
  SONA_data %>% 
  # get subset of data with only nominal vars
  select(gender, lang, prof, live, edu, 
         phone_for_work, specific_app, app_most_used, iphone, ST, ST_app_most_used, passcode, passcode_others, starts_with("passcode_relation_"), other_use, other_room, dist_device, dist_device_studywork, dist_device_social, loc_typical:loc_social, communicate, phone_use, phone_value, phantom) %>% 
  # get freq & proportion for each var
  purrr::map(~ count(tibble(x = .x), x) %>% 
               mutate(pct = (n / sum(n) * 100)))

# make list into 1 long data frame to show as table...
sona_nom_demo_t <- 
  # this keeps the var name in the 1st column (using-- .id = "tib")
  map_dfr(sona_nom_demo, bind_rows, .id = "tib")

# for the employ and industry counts
  # employ
  sona_nom_demo_employ <- 
    SONA_data %>% 
    select(starts_with("employ_")) %>% 
    purrr::map(~ count(tibble(x = .x), x) %>% 
                 mutate(pct = (n / sum(n) * 100)))
  
  sona_nom_demo_employ_t <- 
    # this keeps the var name in the 1st column (using-- .id = "tib")
    map_dfr(sona_nom_demo_employ, bind_rows, .id = "tib")
  #industry
  sona_nom_demo_industry <- 
    SONA_data %>% 
    select(starts_with("industry_")) %>% 
    purrr::map(~ count(tibble(x = .x), x) %>% 
                 mutate(pct = (n / sum(n) * 100)))
  
  sona_nom_demo_industry_t <- 
    # this keeps the var name in the 1st column (using-- .id = "tib")
    map_dfr(sona_nom_demo_industry, bind_rows, .id = "tib")

## FOR MTURK DATA
mturk_nom_demo <- 
  Mturk_data %>% 
  # get subset of data with only nominal vars
  select(gender, lang, prof, live, edu, 
         phone_for_work, specific_app, app_most_used, iphone, ST, ST_app_most_used, passcode, passcode_others, starts_with("passcode_relation_"), other_use, other_room, dist_device, dist_device_studywork, dist_device_social, loc_typical:loc_social, communicate, phone_use, phone_value, phantom) %>% 
  # get freq & proportion for each var
  purrr::map(~ count(tibble(x = .x), x) %>% 
               mutate(pct = (n / sum(n) * 100)))

# make list into 1 long data frame to show as table...
mturk_nom_demo_t <- 
  # this keeps the var name in the 1st column (using-- .id = "tib")
  map_dfr(mturk_nom_demo, bind_rows, .id = "tib")

# for the employ and industry counts
  # employ
  mturk_nom_demo_employ <- 
    Mturk_data %>% 
    select(starts_with("employ_")) %>% 
    purrr::map(~ count(tibble(x = .x), x) %>% 
                 mutate(pct = (n / sum(n) * 100)))
  
  mturk_nom_demo_employ_t <- 
    # this keeps the var name in the 1st column (using-- .id = "tib")
    map_dfr(mturk_nom_demo_employ, bind_rows, .id = "tib")
  #industry
  mturk_nom_demo_industry <- 
    Mturk_data %>% 
    select(starts_with("industry_")) %>% 
    purrr::map(~ count(tibble(x = .x), x) %>% 
                 mutate(pct = (n / sum(n) * 100)))
  
  mturk_nom_demo_industry_t <- 
    # this keeps the var name in the 1st column (using-- .id = "tib")
    map_dfr(mturk_nom_demo_industry, bind_rows, .id = "tib")
# SONA
kable(sona_nom_demo_t, caption = "Frequency & percentage for nominal vars STUDY 1 - SONA.", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars STUDY 1 - SONA.
Var level n %
1 gender Male 114 47.5000000
2 gender Female 126 52.5000000
3 lang English 190 79.1666667
4 lang Other 50 20.8333333
5 prof Moderate 21 8.7500000
6 prof High 219 91.2500000
7 live North America 236 98.3333333
8 live Asia 3 1.2500000
9 live Other 1 0.4166667
10 edu some high school 12 5.0000000
11 edu high school or equivalent 127 52.9166667
12 edu some college, no degree 79 32.9166667
13 edu associate degree 1 0.4166667
14 edu bachelor’s degree 14 5.8333333
15 edu master’s degree 1 0.4166667
16 edu Prefer not to say 6 2.5000000
17 phone_for_work yes 97 40.4166667
18 phone_for_work no 68 28.3333333
19 phone_for_work does not apply to me 75 31.2500000
20 specific_app yes 76 31.6666667
21 specific_app no 79 32.9166667
22 specific_app does not apply to me 85 35.4166667
23 app_most_used Games 6 2.5000000
24 app_most_used Social Networking 181 75.4166667
25 app_most_used Entertainment 46 19.1666667
26 app_most_used Business/Productivity 2 0.8333333
27 app_most_used Other 5 2.0833333
28 iphone yes 209 87.0833333
29 iphone no 31 12.9166667
30 ST had ST 175 72.9166667
31 ST ST new 10 4.1666667
32 ST no ST 24 10.0000000
33 ST NA 31 12.9166667
34 ST_app_most_used Games 6 2.5000000
35 ST_app_most_used Social Networking 129 53.7500000
36 ST_app_most_used Entertainment 34 14.1666667
37 ST_app_most_used Business/Productivity 1 0.4166667
38 ST_app_most_used Other 4 1.6666667
39 ST_app_most_used NA 66 27.5000000
40 passcode yes 233 97.0833333
41 passcode no 7 2.9166667
42 passcode_others yes 154 64.1666667
43 passcode_others no 79 32.9166667
44 passcode_others NA 7 2.9166667
45 passcode_relation_parents 194 80.8333333
46 passcode_relation_parents 1 46 19.1666667
47 passcode_relation_other_fam 199 82.9166667
48 passcode_relation_other_fam 1 41 17.0833333
49 passcode_relation_sig_other 178 74.1666667
50 passcode_relation_sig_other 1 62 25.8333333
51 passcode_relation_friend 119 49.5833333
52 passcode_relation_friend 1 121 50.4166667
53 passcode_relation_work 239 99.5833333
54 passcode_relation_work 1 1 0.4166667
55 passcode_relation_other 239 99.5833333
56 passcode_relation_other 1 1 0.4166667
57 passcode_relation_DNA 240 100.0000000
58 passcode_relation_overall 239 99.5833333
59 passcode_relation_overall boyfriend 1 0.4166667
60 other_use Yes, only in my presence. 51 21.2500000
61 other_use Yes, depending on the individual and only in my presence. 113 47.0833333
62 other_use Yes, depending on the individual and does not need to be in my presence. 68 28.3333333
63 other_use No 8 3.3333333
64 other_room yes 173 72.0833333
65 other_room no 67 27.9166667
66 dist_device Computer 27 11.2500000
67 dist_device Phone 205 85.4166667
68 dist_device iPad/Tablet 6 2.5000000
69 dist_device Smartwatch 2 0.8333333
70 dist_device_studywork Computer 37 15.4166667
71 dist_device_studywork Phone 196 81.6666667
72 dist_device_studywork iPad/Tablet 4 1.6666667
73 dist_device_studywork Smartwatch 2 0.8333333
74 dist_device_studywork Other 1 0.4166667
75 dist_device_social Computer 8 3.3333333
76 dist_device_social Phone 227 94.5833333
77 dist_device_social iPad/Tablet 1 0.4166667
78 dist_device_social Smartwatch 3 1.2500000
79 dist_device_social Other 1 0.4166667
80 loc_typical On my desk 90 37.5000000
81 loc_typical In my pocket or bag 149 62.0833333
82 loc_typical In another room 1 0.4166667
83 loc_study On my desk 153 63.7500000
84 loc_study In my pocket or bag 33 13.7500000
85 loc_study In another room 11 4.5833333
86 loc_study NA 43 17.9166667
87 loc_exam On my desk 4 1.6666667
88 loc_exam In my pocket or bag 174 72.5000000
89 loc_exam In another room 18 7.5000000
90 loc_exam NA 44 18.3333333
91 loc_lec On my desk 76 31.6666667
92 loc_lec In my pocket or bag 118 49.1666667
93 loc_lec In another room 4 1.6666667
94 loc_lec NA 42 17.5000000
95 loc_work On my desk 105 43.7500000
96 loc_work In my pocket or bag 105 43.7500000
97 loc_work In another room 18 7.5000000
98 loc_work NA 12 5.0000000
99 loc_meeting On my desk 25 10.4166667
100 loc_meeting In my pocket or bag 179 74.5833333
101 loc_meeting In another room 11 4.5833333
102 loc_meeting NA 25 10.4166667
103 loc_social On my desk 43 17.9166667
104 loc_social In my pocket or bag 192 80.0000000
105 loc_social In another room 4 1.6666667
106 loc_social NA 1 0.4166667
107 communicate Family 17 7.0833333
108 communicate Friends 219 91.2500000
109 communicate Work 2 0.8333333
110 communicate Other 2 0.8333333
111 phone_use Calling/Texting 55 22.9166667
112 phone_use Social Media 170 70.8333333
113 phone_use Games 6 2.5000000
114 phone_use Email 1 0.4166667
115 phone_use Other 8 3.3333333
116 phone_value $0-$20 78 32.5000000
117 phone_value $21-$40 46 19.1666667
118 phone_value $41-$60 42 17.5000000
119 phone_value >$60 74 30.8333333
120 phantom yes 210 87.5000000
121 phantom no 30 12.5000000

kable(sona_nom_demo_employ_t, caption = "Frequency & percentage for nominal vars STUDY 1 - SONA(Employment Status).", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars STUDY 1 - SONA(Employment Status).
Var level n %
1 employ_FT 1 3 1.2500000
2 employ_FT NA 237 98.7500000
3 employ_PT 1 44 18.3333333
4 employ_PT NA 196 81.6666667
5 employ_SE 1 9 3.7500000
6 employ_SE NA 231 96.2500000
7 employ_UE 1 37 15.4166667
8 employ_UE NA 203 84.5833333
9 employ_student 1 198 82.5000000
10 employ_student NA 42 17.5000000
11 employ_retired NA 240 100.0000000
12 employ_unable 1 2 0.8333333
13 employ_unable NA 238 99.1666667
14 employ_PNTS 1 1 0.4166667
15 employ_PNTS NA 239 99.5833333

kable(sona_nom_demo_industry_t, caption = "Frequency & percentage for nominal vars STUDY 1 - SONA (Industry).", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars STUDY 1 - SONA (Industry).
Var level n %
1 industry_student 1 219 91.2500000
2 industry_student NA 21 8.7500000
3 industry_goods 1 2 0.8333333
4 industry_goods NA 238 99.1666667
5 industry_utilities 1 1 0.4166667
6 industry_utilities NA 239 99.5833333
7 industry_const 1 2 0.8333333
8 industry_const NA 238 99.1666667
9 industry_manuf NA 240 100.0000000
10 industry_service 1 13 5.4166667
11 industry_service NA 227 94.5833333
12 industry_finance_realtor 1 6 2.5000000
13 industry_finance_realtor NA 234 97.5000000
14 industry_tech 1 3 1.2500000
15 industry_tech NA 237 98.7500000
16 industry_business 1 8 3.3333333
17 industry_business NA 232 96.6666667
18 industry_educ 1 4 1.6666667
19 industry_educ NA 236 98.3333333
20 industry_health 1 8 3.3333333
21 industry_health NA 232 96.6666667
22 industry_info_culture 1 4 1.6666667
23 industry_info_culture NA 236 98.3333333
24 industry_accomod 1 9 3.7500000
25 industry_accomod NA 231 96.2500000
26 industry_public_admin NA 240 100.0000000
27 industry_other 1 6 2.5000000
28 industry_other NA 234 97.5000000
29 industry_DNA 1 3 1.2500000
30 industry_DNA NA 237 98.7500000

kable(plyr::count(as.factor(SONA_data$langO)), caption = "Frequency & percentage for language other var STUDY 1 - SONA.", align = rep('crcc'), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for language other var STUDY 1 - SONA.
x freq
1 190
2 arabic 1
3 Arabic 1
4 Arabic 2
5 Bengali 1
6 Cantonese 2
7 chinese 6
8 Chinese 10
9 Chinese - Sichuan dialect 1
10 farsi 1
11 Farsi 2
12 filipino 1
13 Gujarati 2
14 Korean 5
15 Kurdish 1
16 Mandarin 3
17 mandarin 1
18 Mandarin 1
19 Mandarin Chinese 1
20 Persian 1
21 Polish 1
22 Romanian 1
23 Spanish 2
24 Turkish 1
25 Urdu 1
26 Vietnamese 1


# MTURK
kable(mturk_nom_demo_t, caption = "Frequency & percentage for nominal vars STUDY 2 - mturk.", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars STUDY 2 - mturk.
Var level n %
1 gender Male 311 61.5841584
2 gender Female 190 37.6237624
3 gender Other 2 0.3960396
4 gender Prefer not to say 2 0.3960396
5 lang English 484 95.8415842
6 lang Other 21 4.1584158
7 prof Low 8 1.5841584
8 prof Moderate 87 17.2277228
9 prof High 410 81.1881188
10 live North America 303 60.0000000
11 live Central America 23 4.5544554
12 live South America 34 6.7326733
13 live Europe 16 3.1683168
14 live Africa 1 0.1980198
15 live Asia 115 22.7722772
16 live Australia 3 0.5940594
17 live Pacific Islander 3 0.5940594
18 live Other 4 0.7920792
19 live Prefer not to say 3 0.5940594
20 edu some high school 1 0.1980198
21 edu high school or equivalent 41 8.1188119
22 edu some college, no degree 74 14.6534653
23 edu associate degree 37 7.3267327
24 edu bachelor’s degree 281 55.6435644
25 edu master’s degree 59 11.6831683
26 edu professional degree 8 1.5841584
27 edu doctorate or higher 2 0.3960396
28 edu Prefer not to say 2 0.3960396
29 phone_for_work yes 356 70.4950495
30 phone_for_work no 130 25.7425743
31 phone_for_work does not apply to me 19 3.7623762
32 specific_app yes 291 57.6237624
33 specific_app no 190 37.6237624
34 specific_app does not apply to me 24 4.7524752
35 app_most_used Games 40 7.9207921
36 app_most_used Social Networking 279 55.2475248
37 app_most_used Entertainment 107 21.1881188
38 app_most_used Business/Productivity 51 10.0990099
39 app_most_used Other 28 5.5445545
40 iphone yes 248 49.1089109
41 iphone no 257 50.8910891
42 ST had ST 162 32.0792079
43 ST ST new 35 6.9306931
44 ST no ST 51 10.0990099
45 ST NA 257 50.8910891
46 ST_app_most_used Games 14 2.7722772
47 ST_app_most_used Social Networking 96 19.0099010
48 ST_app_most_used Entertainment 34 6.7326733
49 ST_app_most_used Business/Productivity 11 2.1782178
50 ST_app_most_used Other 6 1.1881188
51 ST_app_most_used NA 344 68.1188119
52 passcode yes 431 85.3465347
53 passcode no 74 14.6534653
54 passcode_others yes 195 38.6138614
55 passcode_others no 236 46.7326733
56 passcode_others NA 74 14.6534653
57 passcode_relation_parents 427 84.5544554
58 passcode_relation_parents 1 78 15.4455446
59 passcode_relation_other_fam 447 88.5148515
60 passcode_relation_other_fam 1 58 11.4851485
61 passcode_relation_sig_other 425 84.1584158
62 passcode_relation_sig_other 1 80 15.8415842
63 passcode_relation_friend 425 84.1584158
64 passcode_relation_friend 1 80 15.8415842
65 passcode_relation_work 484 95.8415842
66 passcode_relation_work 1 21 4.1584158
67 passcode_relation_other 500 99.0099010
68 passcode_relation_other 1 5 0.9900990
69 passcode_relation_DNA 503 99.6039604
70 passcode_relation_DNA 1 2 0.3960396
71 passcode_relation_overall 501 99.2079208
72 passcode_relation_overall 123456 2 0.3960396
73 passcode_relation_overall Under the Screen Security section tap Screen lock 1 0.1980198
74 passcode_relation_overall whatsapp 1 0.1980198
75 other_use Yes, only in my presence. 199 39.4059406
76 other_use Yes, depending on the individual and only in my presence. 175 34.6534653
77 other_use Yes, depending on the individual and does not need to be in my presence. 77 15.2475248
78 other_use No 54 10.6930693
79 other_room yes 290 57.4257426
80 other_room no 215 42.5742574
81 dist_device Computer 125 24.7524752
82 dist_device Phone 315 62.3762376
83 dist_device iPad/Tablet 32 6.3366337
84 dist_device Smartwatch 18 3.5643564
85 dist_device Other 15 2.9702970
86 dist_device_studywork Computer 146 28.9108911
87 dist_device_studywork Phone 301 59.6039604
88 dist_device_studywork iPad/Tablet 28 5.5445545
89 dist_device_studywork Smartwatch 15 2.9702970
90 dist_device_studywork Other 15 2.9702970
91 dist_device_social Computer 74 14.6534653
92 dist_device_social Phone 388 76.8316832
93 dist_device_social iPad/Tablet 19 3.7623762
94 dist_device_social Smartwatch 12 2.3762376
95 dist_device_social Other 12 2.3762376
96 loc_typical On my desk 274 54.2574257
97 loc_typical In my pocket or bag 209 41.3861386
98 loc_typical In another room 17 3.3663366
99 loc_typical NA 5 0.9900990
100 loc_study On my desk 10 1.9801980
101 loc_study In my pocket or bag 6 1.1881188
102 loc_study In another room 3 0.5940594
103 loc_study NA 486 96.2376238
104 loc_exam On my desk 3 0.5940594
105 loc_exam In my pocket or bag 11 2.1782178
106 loc_exam In another room 5 0.9900990
107 loc_exam NA 486 96.2376238
108 loc_lec On my desk 5 0.9900990
109 loc_lec In my pocket or bag 12 2.3762376
110 loc_lec In another room 2 0.3960396
111 loc_lec NA 486 96.2376238
112 loc_work On my desk 286 56.6336634
113 loc_work In my pocket or bag 184 36.4356436
114 loc_work In another room 31 6.1386139
115 loc_work NA 4 0.7920792
116 loc_meeting On my desk 117 23.1683168
117 loc_meeting In my pocket or bag 316 62.5742574
118 loc_meeting In another room 55 10.8910891
119 loc_meeting NA 17 3.3663366
120 loc_social On my desk 105 20.7920792
121 loc_social In my pocket or bag 371 73.4653465
122 loc_social In another room 23 4.5544554
123 loc_social NA 6 1.1881188
124 communicate Family 219 43.3663366
125 communicate Friends 233 46.1386139
126 communicate Work 49 9.7029703
127 communicate Other 4 0.7920792
128 phone_use Calling/Texting 217 42.9702970
129 phone_use Social Media 223 44.1584158
130 phone_use Games 27 5.3465347
131 phone_use Email 25 4.9504950
132 phone_use Other 13 2.5742574
133 phone_value $0-$20 130 25.7425743
134 phone_value $21-$40 175 34.6534653
135 phone_value $41-$60 77 15.2475248
136 phone_value >$60 123 24.3564356
137 phantom yes 363 71.8811881
138 phantom no 142 28.1188119

kable(mturk_nom_demo_employ_t, caption = "Frequency & percentage for nominal vars STUDY 2 - mturk(Employment Status).", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars STUDY 2 - mturk(Employment Status).
Var level n %
1 employ_FT 1 385 76.237624
2 employ_FT NA 120 23.762376
3 employ_PT 1 34 6.732673
4 employ_PT NA 471 93.267327
5 employ_SE 1 85 16.831683
6 employ_SE NA 420 83.168317
7 employ_UE 1 23 4.554455
8 employ_UE NA 482 95.445545
9 employ_student 1 19 3.762376
10 employ_student NA 486 96.237624
11 employ_retired 1 9 1.782178
12 employ_retired NA 496 98.217822
13 employ_unable 1 9 1.782178
14 employ_unable NA 496 98.217822
15 employ_PNTS 1 5 0.990099
16 employ_PNTS NA 500 99.009901

kable(mturk_nom_demo_industry_t, caption = "Frequency & percentage for nominal vars STUDY 2 - mturk (Industry).", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars STUDY 2 - mturk (Industry).
Var level n %
1 industry_student 1 28 5.544555
2 industry_student NA 477 94.455445
3 industry_goods 1 21 4.158416
4 industry_goods NA 484 95.841584
5 industry_utilities 1 14 2.772277
6 industry_utilities NA 491 97.227723
7 industry_const 1 32 6.336634
8 industry_const NA 473 93.663366
9 industry_manuf 1 83 16.435644
10 industry_manuf NA 422 83.564356
11 industry_service 1 58 11.485148
12 industry_service NA 447 88.514852
13 industry_finance_realtor 1 66 13.069307
14 industry_finance_realtor NA 439 86.930693
15 industry_tech 1 100 19.801980
16 industry_tech NA 405 80.198020
17 industry_business 1 22 4.356436
18 industry_business NA 483 95.643564
19 industry_educ 1 41 8.118812
20 industry_educ NA 464 91.881188
21 industry_health 1 36 7.128713
22 industry_health NA 469 92.871287
23 industry_info_culture 1 59 11.683168
24 industry_info_culture NA 446 88.316832
25 industry_accomod 1 18 3.564356
26 industry_accomod NA 487 96.435644
27 industry_public_admin 1 18 3.564356
28 industry_public_admin NA 487 96.435644
29 industry_other 1 25 4.950495
30 industry_other NA 480 95.049505
31 industry_DNA 1 15 2.970297
32 industry_DNA NA 490 97.029703

kable(plyr::count(as.factor(Mturk_data$langO)), caption = "Frequency & percentage for language other var STUDY 2 - mturk", align = rep('crcc'), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for language other var STUDY 2 - mturk
x freq
1 484
2 German 1
3 italian 2
4 malayalam 1
5 Malayalam 1
6 MALAYALAM 1
7 portuguese 2
8 Portuguese 3
9 tamil 3
10 Tamil 4
11 TAMIL 1
12 Turkish 1
13 Urdu 1


# export tables as csv files
  write.csv(sona_nom_demo_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_nom_demo_t(oct28).csv", row.names = FALSE)
  write.csv(sona_nom_demo_employ_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_nom_demo_employ_t(oct28).csv", row.names = FALSE)
  write.csv(sona_nom_demo_industry_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_nom_demo_industry_t(oct28).csv", row.names = FALSE)
  write.csv(plyr::count(as.factor(SONA_data$langO)),"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_nom_demo_employ_t(oct28).csv", row.names = FALSE)

  write.csv(mturk_nom_demo_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_nom_demo_t(oct28).csv", row.names = FALSE)
  write.csv(mturk_nom_demo_employ_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_nom_demo_employ_t(oct28).csv", row.names = FALSE)
  write.csv(mturk_nom_demo_industry_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_nom_demo_industry_t(oct28).csv", row.names = FALSE)
  write.csv(plyr::count(as.factor(Mturk_data$langO)),"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_nom_demo_employ_t(oct28).csv", row.names = FALSE)

Questionnaires (levels)

Tables


# output is a list of tibbles, each with: $xxx = var name, x = level(s), n = count, pct = percentage

## FOR STUDY 1 DATA -- SONA
sona_nom_ques_all <- 
  SONA_data %>% 
  # get subset of data with only nominal vars
  select(ends_with("_sum")) %>% 
  # divide sum scores into L>M>H
   # details provided for 1st instance... 
  mutate(NMPQ_sum = # name of var, this replaces existing b/c its the same
           cut(NMPQ_sum, # state var 
               breaks = c(20, 43, 67, 91, 115, 140), # this is providing a seq from 20 >> 140, with breaks of 40 (40 det by breaking up the range into 3: 140-20 = 120, 120/3 = 40)
               labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% # state the new labels for the levels
  mutate(SAD_sum = cut(SAD_sum, breaks = c(7, 23, 40, 57, 74, 91), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SAD_dep_sum = cut(SAD_dep_sum, breaks = c(3, 6, 10, 14, 18, 21), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SAD_ea_sum = cut(SAD_ea_sum, breaks = c(4, 8, 13, 18, 23, 28), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SAD_access_sum = cut(SAD_access_sum, breaks = c(3, 6, 10, 14, 18, 21), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>%
  mutate(SAD_dist_sum = cut(SAD_dist_sum, breaks = c(2, 4, 6, 8, 11, 14), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(BIS_sum = cut(BIS_sum, breaks = c(8, 12, 17, 22, 27, 32), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_N_sum = cut(NEO_N_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_E_sum = cut(NEO_E_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_O_sum = cut(NEO_O_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_A_sum = cut(NEO_A_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_C_sum = cut(NEO_C_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>%
  mutate(RSES_sum = cut(RSES_sum, breaks = c(10, 15, 21, 27, 33, 40), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SRS_sum = cut(SRS_sum, breaks = c(10, 15, 21, 27, 33, 40), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SSEIT_sum = cut(SSEIT_sum, breaks = c(33, 59, 86, 113, 140, 165), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(DASS_D_sum = cut(DASS_D_sum, breaks = c(0, 9, 13, 20, 27, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(DASS_A_sum = cut(DASS_A_sum, breaks = c(0, 7, 9, 14, 19, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(DASS_S_sum = cut(DASS_S_sum, breaks = c(0, 14, 18, 25, 33, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  # mutate(DASS_D_sum = cut(DASS_D_sum, breaks = c(0, 8, 17, 26, 35, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  # mutate(DASS_A_sum = cut(DASS_A_sum, breaks = c(0, 8, 17, 26, 35, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  # mutate(DASS_S_sum = cut(DASS_S_sum, breaks = c(0, 8, 17, 26, 35, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T))
  # get freq & proportion for each var
  purrr::map(~ count(tibble(x = .x), x) %>% 
               mutate(pct = (n / sum(n) * 100)))

# make list into 1 long data frame to show as table...
sona_nom_ques_all_t <- 
  # this keeps the var name in the 1st column (using-- .id = "tib")
  map_dfr(sona_nom_ques_all, bind_rows, .id = "tib")


## FOR STUDY 2 DATA -- MTURK
mturk_nom_ques_all <- 
  Mturk_data %>% 
  # get subset of data with only nominal vars
  select(ends_with("_sum")) %>% 
  # divide sum scores into L>M>H
   # details provided for 1st instance... 
  mutate(NMPQ_sum = # name of var, this replaces existing b/c its the same
           cut(NMPQ_sum, # state var 
               breaks = c(20, 43, 67, 91, 115, 140), # this is providing a seq from 20 >> 140, with breaks of 40 (40 det by breaking up the range into 3: 140-20 = 120, 120/3 = 40)
               labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% # state the new labels for the levels
  mutate(SAD_sum = cut(SAD_sum, breaks = c(7, 23, 40, 57, 74, 91), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SAD_dep_sum = cut(SAD_dep_sum, breaks = c(3, 6, 10, 14, 18, 21), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SAD_ea_sum = cut(SAD_ea_sum, breaks = c(4, 8, 13, 18, 23, 28), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SAD_access_sum = cut(SAD_access_sum, breaks = c(3, 6, 10, 14, 18, 21), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>%
  mutate(SAD_dist_sum = cut(SAD_dist_sum, breaks = c(2, 4, 6, 8, 11, 14), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(BIS_sum = cut(BIS_sum, breaks = c(8, 12, 17, 22, 27, 32), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_N_sum = cut(NEO_N_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_E_sum = cut(NEO_E_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_O_sum = cut(NEO_O_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_A_sum = cut(NEO_A_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(NEO_C_sum = cut(NEO_C_sum, breaks = c(12, 21, 31, 41, 51, 60), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>%
  mutate(RSES_sum = cut(RSES_sum, breaks = c(10, 15, 21, 27, 33, 40), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SRS_sum = cut(SRS_sum, breaks = c(10, 15, 21, 27, 33, 40), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(SSEIT_sum = cut(SSEIT_sum, breaks = c(33, 59, 86, 113, 140, 165), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(DASS_D_sum = cut(DASS_D_sum, breaks = c(0, 9, 13, 20, 27, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(DASS_A_sum = cut(DASS_A_sum, breaks = c(0, 7, 9, 14, 19, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  mutate(DASS_S_sum = cut(DASS_S_sum, breaks = c(0, 14, 18, 25, 33, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  # mutate(DASS_D_sum = cut(DASS_D_sum, breaks = c(0, 8, 17, 26, 35, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  # mutate(DASS_A_sum = cut(DASS_A_sum, breaks = c(0, 8, 17, 26, 35, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T)) %>% 
  # mutate(DASS_S_sum = cut(DASS_S_sum, breaks = c(0, 8, 17, 26, 35, 42), labels = c("Low", "Mild", "Moderate", "High", "Very High"), include.lowest = T))
  # get freq & proportion for each var
  purrr::map(~ count(tibble(x = .x), x) %>% 
               mutate(pct = (n / sum(n) * 100)))

# make list into 1 long data frame to show as table...
mturk_nom_ques_all_t <- 
  # this keeps the var name in the 1st column (using-- .id = "tib")
  map_dfr(mturk_nom_ques_all, bind_rows, .id = "tib")
kable(sona_nom_ques_all_t, caption = "Frequency & percentage for nominal vars - ques- STUDY 1 - SONA.", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  footnote(general = "There was no task completed during study 1.") %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars - ques- STUDY 1 - SONA.
Var level n %
1 NMPQ_sum Low 7 2.9166667
2 NMPQ_sum Mild 36 15.0000000
3 NMPQ_sum Moderate 86 35.8333333
4 NMPQ_sum High 84 35.0000000
5 NMPQ_sum Very High 27 11.2500000
6 SRS_sum Low 4 1.6666667
7 SRS_sum Mild 24 10.0000000
8 SRS_sum Moderate 124 51.6666667
9 SRS_sum High 74 30.8333333
10 SRS_sum Very High 14 5.8333333
11 SAD_sum Low 5 2.0833333
12 SAD_sum Mild 14 5.8333333
13 SAD_sum Moderate 83 34.5833333
14 SAD_sum High 111 46.2500000
15 SAD_sum Very High 27 11.2500000
16 SAD_dep_sum Low 25 10.4166667
17 SAD_dep_sum Mild 39 16.2500000
18 SAD_dep_sum Moderate 75 31.2500000
19 SAD_dep_sum High 80 33.3333333
20 SAD_dep_sum Very High 21 8.7500000
21 SAD_access_sum Low 8 3.3333333
22 SAD_access_sum Mild 31 12.9166667
23 SAD_access_sum Moderate 85 35.4166667
24 SAD_access_sum High 85 35.4166667
25 SAD_access_sum Very High 31 12.9166667
26 SAD_ea_sum Low 6 2.5000000
27 SAD_ea_sum Mild 31 12.9166667
28 SAD_ea_sum Moderate 96 40.0000000
29 SAD_ea_sum High 87 36.2500000
30 SAD_ea_sum Very High 20 8.3333333
31 SAD_dist_sum Low 11 4.5833333
32 SAD_dist_sum Mild 16 6.6666667
33 SAD_dist_sum Moderate 44 18.3333333
34 SAD_dist_sum High 102 42.5000000
35 SAD_dist_sum Very High 67 27.9166667
36 DASS_D_sum Low 186 77.5000000
37 DASS_D_sum Mild 31 12.9166667
38 DASS_D_sum Moderate 21 8.7500000
39 DASS_D_sum High 2 0.8333333
40 DASS_A_sum Low 163 67.9166667
41 DASS_A_sum Mild 35 14.5833333
42 DASS_A_sum Moderate 40 16.6666667
43 DASS_A_sum High 2 0.8333333
44 DASS_S_sum Low 228 95.0000000
45 DASS_S_sum Mild 12 5.0000000
46 BIS_sum Low 18 7.5000000
47 BIS_sum Mild 100 41.6666667
48 BIS_sum Moderate 96 40.0000000
49 BIS_sum High 24 10.0000000
50 BIS_sum Very High 2 0.8333333
51 SSEIT_sum Low 1 0.4166667
52 SSEIT_sum Mild 5 2.0833333
53 SSEIT_sum Moderate 48 20.0000000
54 SSEIT_sum High 163 67.9166667
55 SSEIT_sum Very High 23 9.5833333
56 RSES_sum Low 28 11.6666667
57 RSES_sum Mild 61 25.4166667
58 RSES_sum Moderate 121 50.4166667
59 RSES_sum High 26 10.8333333
60 RSES_sum Very High 4 1.6666667
61 NEO_N_sum Low 7 2.9166667
62 NEO_N_sum Mild 57 23.7500000
63 NEO_N_sum Moderate 124 51.6666667
64 NEO_N_sum High 48 20.0000000
65 NEO_N_sum Very High 4 1.6666667
66 NEO_E_sum Low 1 0.4166667
67 NEO_E_sum Mild 15 6.2500000
68 NEO_E_sum Moderate 89 37.0833333
69 NEO_E_sum High 101 42.0833333
70 NEO_E_sum Very High 34 14.1666667
71 NEO_O_sum Mild 9 3.7500000
72 NEO_O_sum Moderate 106 44.1666667
73 NEO_O_sum High 106 44.1666667
74 NEO_O_sum Very High 19 7.9166667
75 NEO_A_sum Mild 5 2.0833333
76 NEO_A_sum Moderate 71 29.5833333
77 NEO_A_sum High 110 45.8333333
78 NEO_A_sum Very High 54 22.5000000
79 NEO_C_sum Mild 17 7.0833333
80 NEO_C_sum Moderate 123 51.2500000
81 NEO_C_sum High 93 38.7500000
82 NEO_C_sum Very High 7 2.9166667
Note:
There was no task completed during study 1.

kable(mturk_nom_ques_all_t, caption = "Frequency & percentage for nominal vars - ques- STUDY 2 - MTURK", align = rep('crcc'), col.names = c("Var", "level" ,"n", "%"), row.names = TRUE) %>% 
  footnote(general = "There was no task completed during study 2.") %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic()
Frequency & percentage for nominal vars - ques- STUDY 2 - MTURK
Var level n %
1 NMPQ_sum Low 38 7.5247525
2 NMPQ_sum Mild 62 12.2772277
3 NMPQ_sum Moderate 125 24.7524752
4 NMPQ_sum High 198 39.2079208
5 NMPQ_sum Very High 82 16.2376238
6 SRS_sum Low 3 0.5940594
7 SRS_sum Mild 22 4.3564356
8 SRS_sum Moderate 183 36.2376238
9 SRS_sum High 183 36.2376238
10 SRS_sum Very High 114 22.5742574
11 SAD_sum Low 21 4.1584158
12 SAD_sum Mild 68 13.4653465
13 SAD_sum Moderate 126 24.9504950
14 SAD_sum High 196 38.8118812
15 SAD_sum Very High 94 18.6138614
16 SAD_dep_sum Low 63 12.4752475
17 SAD_dep_sum Mild 72 14.2574257
18 SAD_dep_sum Moderate 119 23.5643564
19 SAD_dep_sum High 194 38.4158416
20 SAD_dep_sum Very High 57 11.2871287
21 SAD_access_sum Low 40 7.9207921
22 SAD_access_sum Mild 54 10.6930693
23 SAD_access_sum Moderate 129 25.5445545
24 SAD_access_sum High 213 42.1782178
25 SAD_access_sum Very High 69 13.6633663
26 SAD_ea_sum Low 41 8.1188119
27 SAD_ea_sum Mild 67 13.2673267
28 SAD_ea_sum Moderate 138 27.3267327
29 SAD_ea_sum High 170 33.6633663
30 SAD_ea_sum Very High 89 17.6237624
31 SAD_dist_sum Low 82 16.2376238
32 SAD_dist_sum Mild 62 12.2772277
33 SAD_dist_sum Moderate 89 17.6237624
34 SAD_dist_sum High 174 34.4554455
35 SAD_dist_sum Very High 98 19.4059406
36 DASS_D_sum Low 278 55.0495050
37 DASS_D_sum Mild 100 19.8019802
38 DASS_D_sum Moderate 119 23.5643564
39 DASS_D_sum High 8 1.5841584
40 DASS_A_sum Low 258 51.0891089
41 DASS_A_sum Mild 39 7.7227723
42 DASS_A_sum Moderate 116 22.9702970
43 DASS_A_sum High 88 17.4257426
44 DASS_A_sum Very High 4 0.7920792
45 DASS_S_sum Low 408 80.7920792
46 DASS_S_sum Mild 79 15.6435644
47 DASS_S_sum Moderate 18 3.5643564
48 BIS_sum Low 150 29.7029703
49 BIS_sum Mild 175 34.6534653
50 BIS_sum Moderate 161 31.8811881
51 BIS_sum High 18 3.5643564
52 BIS_sum Very High 1 0.1980198
53 SSEIT_sum Low 1 0.1980198
54 SSEIT_sum Mild 17 3.3663366
55 SSEIT_sum Moderate 131 25.9405941
56 SSEIT_sum High 295 58.4158416
57 SSEIT_sum Very High 61 12.0792079
58 RSES_sum Low 89 17.6237624
59 RSES_sum Mild 118 23.3663366
60 RSES_sum Moderate 218 43.1683168
61 RSES_sum High 44 8.7128713
62 RSES_sum Very High 36 7.1287129
63 NEO_N_sum Low 94 18.6138614
64 NEO_N_sum Mild 113 22.3762376
65 NEO_N_sum Moderate 228 45.1485149
66 NEO_N_sum High 64 12.6732673
67 NEO_N_sum Very High 6 1.1881188
68 NEO_E_sum Low 16 3.1683168
69 NEO_E_sum Mild 76 15.0495050
70 NEO_E_sum Moderate 172 34.0594059
71 NEO_E_sum High 205 40.5940594
72 NEO_E_sum Very High 36 7.1287129
73 NEO_O_sum Mild 42 8.3168317
74 NEO_O_sum Moderate 284 56.2376238
75 NEO_O_sum High 141 27.9207921
76 NEO_O_sum Very High 38 7.5247525
77 NEO_A_sum Low 1 0.1980198
78 NEO_A_sum Mild 16 3.1683168
79 NEO_A_sum Moderate 256 50.6930693
80 NEO_A_sum High 138 27.3267327
81 NEO_A_sum Very High 94 18.6138614
82 NEO_C_sum Mild 15 2.9702970
83 NEO_C_sum Moderate 235 46.5346535
84 NEO_C_sum High 190 37.6237624
85 NEO_C_sum Very High 65 12.8712871
Note:
There was no task completed during study 2.

# export table as csv file
  write.csv(sona_nom_ques_all_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_nom_ques_all_t(oct28).csv", row.names = FALSE)
  write.csv(mturk_nom_ques_all_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_nom_ques_all_t(oct28).csv", row.names = FALSE)

Stacked Bar Plots

Show the questionnaire data as a stacked bar plot for each study for visualization comparison.

# FOR SAD OVERALL ONLY

# create color pallet for stacked bar plots
# stacked_colours <- c("#7E1044", "#981570", "#6B138B", "#491296", "#170FA7")

stacked_colours <- c("#98410B", "#F0803C", "#3F826D", "#08605F", "#414535")

# Study 1
# Make data file
sona_nom_ques_stack_data <- 
  sona_nom_ques_all_t %>% 
  select(-n) %>% 
  mutate_at("tib", str_replace, "_sum", "") %>%  # remove "_sum" from factor
  # remove SAD subscales
  filter(!tib == "SAD_dep") %>% 
  filter(!tib == "SAD_ea") %>% 
  filter(!tib == "SAD_access") %>% 
  filter(!tib == "SAD_dist")

sona_nom_ques_stack_plot <- 
  ggplot(sona_nom_ques_stack_data, aes(fill=factor(x, levels = c("Very High", "High", "Moderate", "Mild", "Low")), y=pct, x=tib)) + 
    geom_bar(position="stack", stat="identity") +
    scale_x_discrete(limits = c("NMPQ", "SAD", "BIS", "NEO_O", "NEO_C", "NEO_E", "NEO_A", "NEO_N", "RSES", "SRS", "SSEIT", "DASS_D", "DASS_A", "DASS_S"), labels = c("NMPQ"="NMPQ", "SAD"="SAD", "BIS"="BIS", "NEO_O"="NEO: O", "NEO_C"="NEO: C", "NEO_E"="NEO: E", "NEO_A"="NEO: A", "NEO_N"="NEO: N", "RSES"="RSES", "SRS"="SRS", "SSEIT"="SSEIT", "DASS_D"="DASS: D", "DASS_A"="DASS: A", "DASS_S"="DASS: S")) +
    scale_fill_manual(values=stacked_colours) + 
    # geom_text(aes(label = round(pct,0)), size = 3, hjust = 0.5, vjust = 0, position = "stack") +
    # add labels
    labs(
       # title = "Stacked Barplot for Questionnaire Scores: Study 1",
       # subtitle = "x",
       # caption = "Note: ",
       x = "Measure", 
       y = "Proportion (%)",
       fill = "Level"
       ) + 
    theme_classic() +
    # add specific formatting
    theme(plot.title = element_text(color = "black", size = 14, face = "bold"),
        plot.subtitle = element_text(color = "black", size = 13),
        plot.caption = element_text(hjust = 0, size = 12, face = "italic"),
        text = element_text(size = 13), 
        axis.ticks.x = element_blank(), 
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
        axis.text = element_text(color = "black"))

# show plot
sona_nom_ques_stack_plot


# Study 2
# Make data file
mturk_nom_ques_stack_data <- 
  mturk_nom_ques_all_t %>% 
  select(-n) %>% 
  mutate_at("tib", str_replace, "_sum", "") %>%  # remove "_sum" from factor
  # remove SAD subscales
  filter(!tib == "SAD_dep") %>% 
  filter(!tib == "SAD_ea") %>% 
  filter(!tib == "SAD_access") %>% 
  filter(!tib == "SAD_dist")

mturk_nom_ques_stack_plot <- 
  ggplot(mturk_nom_ques_stack_data, aes(fill=factor(x, levels = c("Very High", "High", "Moderate", "Mild", "Low")), y=pct, x=tib)) + 
    geom_bar(position="stack", stat="identity") +
    scale_x_discrete(limits = c("NMPQ", "SAD", "BIS", "NEO_O", "NEO_C", "NEO_E", "NEO_A", "NEO_N", "RSES", "SRS", "SSEIT", "DASS_D", "DASS_A", "DASS_S"), labels = c("NMPQ"="NMPQ", "SAD"="SAD", "BIS"="BIS", "NEO_O"="NEO: O", "NEO_C"="NEO: C", "NEO_E"="NEO: E", "NEO_A"="NEO: A", "NEO_N"="NEO: N", "RSES"="RSES", "SRS"="SRS", "SSEIT"="SSEIT", "DASS_D"="DASS: D", "DASS_A"="DASS: A", "DASS_S"="DASS: S")) +
    scale_fill_manual(values=stacked_colours) + 
    # geom_text(aes(label = round(pct,0)), size = 3, hjust = 0.5, vjust = 0, position = "stack") +
    # add labels
    labs(
       # title = "Stacked Barplot for Questionnaire Scores: Study 2",
       # subtitle = "x",
       # caption = "Note: ",
       x = "Measure", 
       y = "Proportion (%)",
       fill = "Level"
       ) + 
    theme_classic() +
    # add specific formatting
    theme(plot.title = element_text(color = "black", size = 14, face = "bold"),
        plot.subtitle = element_text(color = "black", size = 13),
        plot.caption = element_text(hjust = 0, size = 12, face = "italic"),
        text = element_text(size = 13), 
        axis.ticks.x = element_blank(), 
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
        axis.text = element_text(color = "black"))

# show plot
mturk_nom_ques_stack_plot

# export plots
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_nom_ques_stack_plot(oct28)", plot = sona_nom_ques_stack_plot, device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_nom_ques_stack_plot(oct28)", plot = mturk_nom_ques_stack_plot, device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

# FOR ALL SUBSCALES + SAD OVERALL

# create color pallet for stacked bar plots
stacked_colours_exp <- c("#98410B", "#F0803C", "#3F826D", "#08605F", "#414535")

# Study 1
# Make data file
sona_nom_ques_stack_exp_data <- 
  sona_nom_ques_all_t %>% 
  select(-n) %>% 
  mutate_at("tib", str_replace, "_sum", "") # remove "_sum" from factor
  # filter(!tib == "SAD") %>%  # remove SAD general

sona_nom_ques_stack_exp_plot <- 
  ggplot(sona_nom_ques_stack_exp_data, aes(fill=factor(x, levels = c("Very High", "High", "Moderate", "Mild", "Low")), y=pct, x=tib)) + 
    geom_bar(position="stack", stat="identity") +
    scale_x_discrete(limits = c("NMPQ", "SAD", "SAD_dep", "SAD_ea", "SAD_access", "SAD_dist", "BIS", "NEO_O", "NEO_C", "NEO_E", "NEO_A", "NEO_N", "RSES", "SRS", "SSEIT", "DASS_D", "DASS_A", "DASS_S"), labels = c("NMPQ"="NMPQ", "SAD"="SAD", "BIS"="BIS", "NEO_O"="NEO: O", "NEO_C"="NEO: C", "NEO_E"="NEO: E", "NEO_A"="NEO: A", "NEO_N"="NEO: N", "RSES"="RSES", "SRS"="SRS", "SSEIT"="SSEIT", "DASS_D"="DASS: D", "DASS_A"="DASS: A", "DASS_S"="DASS: S")) + 
    # geom_text(aes(label = round(pct,0)), size = 3, hjust = 0.5, vjust = 0, position = "stack") +
    # add labels
    labs(
       title = "Stacked Barplot for Questionnaire Scores: Study 1 -- ALL Exploratory",
       # subtitle = "x",
       # caption = "Note: ",
       x = "Measure", 
       y = "Proportion (%)",
       fill = "Level"
       ) + 
    theme_classic() +
    # add specific formatting
    theme(plot.title = element_text(color = "black", size = 14, face = "bold"),
        plot.subtitle = element_text(color = "black", size = 13),
        plot.caption = element_text(hjust = 0, size = 12, face = "italic"),
        text = element_text(size = 13), 
        axis.ticks.x = element_blank(), 
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
        axis.text = element_text(color = "black"))

# show plot
sona_nom_ques_stack_exp_plot


# Study 2
# Make data file
mturk_nom_ques_stack_exp_data <- 
  mturk_nom_ques_all_t %>% 
  select(-n) %>% 
  mutate_at("tib", str_replace, "_sum", "") # remove "_sum" from factor
  # filter(!tib == "SAD") %>%  # remove SAD general

mturk_nom_ques_stack_exp_plot <- 
  ggplot(mturk_nom_ques_stack_exp_data, aes(fill=factor(x, levels = c("Very High", "High", "Moderate", "Mild", "Low")), y=pct, x=tib)) + 
    geom_bar(position="stack", stat="identity") +
    scale_x_discrete(limits = c("NMPQ", "SAD", "SAD_dep", "SAD_ea", "SAD_access", "SAD_dist", "BIS", "NEO_O", "NEO_C", "NEO_E", "NEO_A", "NEO_N", "RSES", "SRS", "SSEIT", "DASS_D", "DASS_A", "DASS_S"), labels = c("NMPQ"="NMPQ", "SAD"="SAD", "BIS"="BIS", "NEO_O"="NEO: O", "NEO_C"="NEO: C", "NEO_E"="NEO: E", "NEO_A"="NEO: A", "NEO_N"="NEO: N", "RSES"="RSES", "SRS"="SRS", "SSEIT"="SSEIT", "DASS_D"="DASS: D", "DASS_A"="DASS: A", "DASS_S"="DASS: S")) + 
    # geom_text(aes(label = round(pct,0)), size = 3, hjust = 0.5, vjust = 0, position = "stack") +
    # add labels
    labs(
       title = "Stacked Barplot for Questionnaire Scores: Study 2 -- ALL Exploratory",
       # subtitle = "x",
       # caption = "Note: ",
       x = "Measure", 
       y = "Proportion (%)",
       fill = "Level"
       ) + 
    theme_classic() +
    # add specific formatting
    theme(plot.title = element_text(color = "black", size = 14, face = "bold"),
        plot.subtitle = element_text(color = "black", size = 13),
        plot.caption = element_text(hjust = 0, size = 12, face = "italic"),
        text = element_text(size = 13), 
        axis.ticks.x = element_blank(), 
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
        axis.text = element_text(color = "black"))

# show plot
mturk_nom_ques_stack_exp_plot

# export plots
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_nom_ques_stack_exp_plot(oct28)", plot = sona_nom_ques_stack_exp_plot, device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_nom_ques_stack_exp_plot(oct28)", plot = mturk_nom_ques_stack_exp_plot, device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

CONTINUOUS data (pilot & main)

Demographic & Typical Smartphone Use

## FOR SONA
sona_cont_demo <- 
  SONA_data %>% 
  # select continuous vars
  select(age, age_first_phone, ST_weekly_tot_hours:ST_daily_not, com_gen:com_room_task, dist_daily, dist_study, pow_not_using:pow_sleep) %>% 
  # apply describe fn for: n  mean   sd median trimmed  mad min max range  skew kurtosis   se
  psych::describe()

## FOR MTURK
mturk_cont_demo <- 
  Mturk_data %>% 
  # select continuous vars
  select(age, age_first_phone, ST_weekly_tot_hours:ST_daily_not, com_gen:com_room_task, dist_daily, dist_study, pow_not_using:pow_sleep) %>% 
  # apply describe fn for: n  mean   sd median trimmed  mad min max range  skew kurtosis   se
  psych::describe()
# show all with kable 
## SONA
kable(sona_cont_demo, caption = "Descriptive statistics for continuous vars - STUDY 1 - SONA", align = rep('crcc'), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic() 
Descriptive statistics for continuous vars - STUDY 1 - SONA
vars n mean sd median trimmed mad min max range skew kurtosis se
age 1 240 19.291667 2.196977 19 18.906250 1.4826 17 42 25 5.4163685 47.1638207 0.1418143
age_first_phone 2 240 13.170833 2.037305 13 13.177083 1.4826 7 25 18 0.5762169 4.6074785 0.1315074
ST_weekly_tot_hours 3 174 19.523678 19.244227 10 16.168714 8.8956 2 75 73 1.3555478 0.7717960 1.4589011
ST_daily_pickups 4 175 126.280000 161.059910 94 95.404255 66.7170 1 1306 1305 4.1568352 21.7944571 12.1749848
ST_daily_not 5 175 222.548571 219.552017 180 187.000000 139.3644 5 1931 1926 3.8290616 22.8882623 16.5965725
com_gen 6 240 3.808333 1.798632 4 3.833333 2.9652 1 7 6 -0.0527964 -1.1977960 0.1161012
com_unattended 7 240 3.712500 1.880491 4 3.687500 2.9652 1 7 6 0.0749738 -1.2427677 0.1213851
com_leave_with_others 8 240 3.579167 1.852846 3 3.552083 2.9652 1 7 6 0.1249584 -1.2759083 0.1196007
com_locked 9 240 5.445833 1.596670 6 5.697917 1.4826 1 7 6 -1.1886413 0.7694822 0.1030646
com_room_task 10 240 4.762500 1.773188 5 4.901042 1.4826 1 7 6 -0.5772299 -0.7324053 0.1144588
dist_daily 11 240 5.883333 1.357966 6 6.130208 1.4826 1 7 6 -1.5064133 2.1283299 0.0876563
dist_study 12 240 3.708333 2.034826 3 3.635417 2.9652 1 7 6 0.2570851 -1.3566423 0.1313474
pow_not_using 13 240 3.337500 2.137200 3 3.197917 2.9652 1 7 6 0.3809293 -1.3957052 0.1379557
pow_notifications_on 14 240 5.033333 1.822378 6 5.234375 1.4826 1 7 6 -0.7307107 -0.6131207 0.1176340
pow_vibrate 15 240 5.262500 1.893020 6 5.526042 1.4826 1 7 6 -0.9273508 -0.4058821 0.1221939
pow_study 16 198 5.237374 1.639988 6 5.431250 1.4826 1 7 6 -0.8965055 -0.2430940 0.1165489
pow_exam 17 198 2.333333 1.830370 1 2.000000 0.0000 1 7 6 1.2688986 0.3357456 0.1300787
pow_lec 18 198 5.585859 1.467136 6 5.818750 1.4826 1 7 6 -1.2619849 0.9292651 0.1042648
pow_work 19 240 5.466667 1.448897 6 5.656250 1.4826 1 7 6 -1.0641316 0.3857319 0.0935259
pow_meeting 20 240 4.070833 1.974519 4 4.088542 2.9652 1 7 6 -0.0395616 -1.3252132 0.1274547
pow_sleep 21 240 5.308333 1.853622 6 5.588542 1.4826 1 7 6 -1.1047394 -0.0154955 0.1196508

## MTURK
kable(mturk_cont_demo, caption = "Descriptive statistics for continuous vars - STUDY 2 - MTURK", align = rep('crcc'), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic() 
Descriptive statistics for continuous vars - STUDY 2 - MTURK
vars n mean sd median trimmed mad min max range skew kurtosis se
age 1 505 34.176238 9.999138 31.0 32.632099 7.4130 18.0 69 51.0 1.3860606 1.5732548 0.4449558
age_first_phone 2 505 37.980000 166.497525 21.0 21.920988 5.9304 2.0 2012 2010.0 11.2199805 125.8396767 7.4090426
ST_weekly_tot_hours 3 161 12.093168 15.897543 7.0 8.744186 4.4478 1.0 145 144.0 4.7196505 31.2038203 1.2529019
ST_daily_pickups 4 162 44.746914 102.317209 21.0 26.007692 13.3434 2.0 1107 1105.0 7.7651389 72.2610502 8.0387992
ST_daily_not 5 162 160.367284 148.390734 101.5 140.707692 124.5384 2.5 757 754.5 1.1835390 1.4041257 11.6586771
com_gen 6 505 4.049505 1.978938 4.0 4.061728 2.9652 1.0 7 6.0 -0.0930562 -1.3356833 0.0880616
com_unattended 7 505 3.679208 2.018777 4.0 3.612346 2.9652 1.0 7 6.0 0.1259784 -1.3642733 0.0898344
com_leave_with_others 8 505 3.514851 2.008977 3.0 3.437037 2.9652 1.0 7 6.0 0.2054496 -1.3665436 0.0893983
com_locked 9 505 5.338614 1.651777 6.0 5.577778 1.4826 1.0 7 6.0 -1.0059877 0.1744308 0.0735031
com_room_task 10 505 4.562376 1.825897 5.0 4.681482 1.4826 1.0 7 6.0 -0.5428155 -0.8274297 0.0812513
dist_daily 11 505 4.499010 1.747021 5.0 4.575309 1.4826 1.0 7 6.0 -0.4885664 -0.8460976 0.0777414
dist_study 12 505 3.318812 2.185664 2.0 3.158025 1.4826 1.0 7 6.0 0.3531052 -1.4378461 0.0972608
pow_not_using 13 505 3.459406 2.089950 3.0 3.345679 2.9652 1.0 7 6.0 0.2652943 -1.3984467 0.0930016
pow_notifications_on 14 505 5.190099 1.629192 6.0 5.404938 1.4826 1.0 7 6.0 -0.9828771 0.1326688 0.0724981
pow_vibrate 15 505 4.996040 1.823563 6.0 5.197531 1.4826 1.0 7 6.0 -0.8131320 -0.4420760 0.0811475
pow_study 16 19 5.578947 1.346427 6.0 5.647059 1.4826 3.0 7 4.0 -0.5468857 -0.9825520 0.3088915
pow_exam 17 19 4.631579 1.920953 5.0 4.705882 1.4826 1.0 7 6.0 -0.4353807 -1.2832642 0.4406967
pow_lec 18 19 5.263158 1.851189 6.0 5.411765 1.4826 1.0 7 6.0 -1.1618756 0.3016434 0.4246919
pow_work 19 505 5.540594 1.423595 6.0 5.748148 1.4826 1.0 7 6.0 -1.1814237 1.1641249 0.0633491
pow_meeting 20 505 4.895049 1.791424 5.0 5.064197 1.4826 1.0 7 6.0 -0.6755025 -0.5803137 0.0797173
pow_sleep 21 505 5.437624 1.651289 6.0 5.713580 1.4826 1.0 7 6.0 -1.2268137 0.7212494 0.0734814

# export tables as csv files
write.csv(sona_cont_demo,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_cont_demo(oct28).csv", row.names = T)

write.csv(mturk_cont_demo,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_cont_demo(oct28).csv", row.names = T)

Questionnaires

## FOR SONA
sona_cont_ques <- 
  SONA_data %>% 
  # select continuous vars
  select(starts_with("NMPQ"), starts_with("SRS"), starts_with("SAD"), starts_with("DASS"), starts_with("BIS"), starts_with("SSEIT"), starts_with("RSES"), starts_with("NEO")) %>% 
  # apply describe fn for: n  mean   sd median trimmed  mad min max range  skew kurtosis   se
  psych::describe()

## FOR MTURK
mturk_cont_ques <- 
  Mturk_data %>% 
  # select continuous vars
  select(starts_with("NMPQ"), starts_with("SRS"), starts_with("SAD"), starts_with("DASS"), starts_with("BIS"), starts_with("SSEIT"), starts_with("RSES"), starts_with("NEO")) %>% 
  # apply describe fn for: n  mean   sd median trimmed  mad min max range  skew kurtosis   se
  psych::describe()
# show all with kable 
## SONA
kable(sona_cont_ques, caption = "Descriptive statistics for questionnaires - STUDY 1 - SONA", align = rep('crcc'), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic() 
Descriptive statistics for questionnaires - STUDY 1 - SONA
vars n mean sd median trimmed mad min max range skew kurtosis se
NMPQ_1 1 240 4.6333333 1.5628176 5.0 4.7239583 1.4826 1 7 6 -0.5546012 -0.3963184 0.1008794
NMPQ_2 2 240 5.4083333 1.2968958 6.0 5.5677083 1.4826 1 7 6 -1.1857798 1.4939168 0.0837143
NMPQ_3 3 240 4.2916667 1.6662831 4.0 4.3229167 1.4826 1 7 6 -0.2058734 -0.9189510 0.1075581
NMPQ_4 4 240 5.2041667 1.4303872 6.0 5.3541667 1.4826 1 7 6 -0.9489913 0.5321203 0.0923311
NMPQ_5 5 240 4.1375000 1.7790770 4.0 4.1458333 1.4826 1 7 6 -0.1092650 -1.0783173 0.1148389
NMPQ_6 6 240 3.5958333 1.7688564 4.0 3.5520833 2.9652 1 7 6 0.1788387 -1.0695255 0.1141792
NMPQ_7 7 240 4.3875000 1.6854813 5.0 4.4739583 1.4826 1 7 6 -0.4405439 -0.7476440 0.1087974
NMPQ_8 8 240 4.3750000 1.7599092 5.0 4.4166667 1.4826 1 7 6 -0.3160297 -0.9738900 0.1136016
NMPQ_9 9 240 5.1166667 1.5561100 5.0 5.2968750 1.4826 1 7 6 -0.8569090 0.2121639 0.1004465
NMPQ_10 10 240 4.6041667 1.5703794 5.0 4.7135417 1.4826 1 7 6 -0.5919725 -0.4185462 0.1013676
NMPQ_11 11 240 4.9708333 1.5828525 5.0 5.1197917 1.4826 1 7 6 -0.6898711 -0.2576809 0.1021727
NMPQ_12 12 240 4.6916667 1.5019977 5.0 4.8229167 1.4826 1 7 6 -0.6937925 -0.1015623 0.0969535
NMPQ_13 13 240 4.8208333 1.5541762 5.0 4.9427083 1.4826 1 7 6 -0.6540960 -0.2468093 0.1003216
NMPQ_14 14 240 4.9500000 1.4513015 5.0 5.0833333 1.4826 1 7 6 -0.8375474 0.1346325 0.0936811
NMPQ_15 15 240 4.3583333 1.7030410 5.0 4.3697917 1.4826 1 7 6 -0.1503339 -1.0813947 0.1099308
NMPQ_16 16 240 3.1958333 1.7135881 3.0 3.0729167 1.4826 1 7 6 0.4263693 -0.7897426 0.1106116
NMPQ_17 17 240 3.6791667 1.7287815 3.5 3.6614583 2.2239 1 7 6 0.1358321 -0.9757487 0.1115924
NMPQ_18 18 240 3.9750000 1.7112109 4.0 4.0208333 1.4826 1 7 6 -0.1409506 -1.0016452 0.1104582
NMPQ_19 19 240 3.6833333 1.7737431 4.0 3.6770833 2.9652 1 7 6 0.0611937 -1.1743649 0.1144946
NMPQ_20 20 240 3.8958333 1.8231379 4.0 3.9010417 1.4826 1 7 6 -0.0855913 -1.0730102 0.1176830
NMPQ_sum 21 240 87.9750000 22.4568251 89.0 88.6927083 21.4977 20 140 120 -0.3767653 0.3604556 1.4495818
SRS_1 22 240 2.9916667 0.8078675 3.0 3.0572917 0.0000 1 4 3 -0.6013877 0.0265380 0.0521476
SRS_2 23 240 2.7291667 0.8011389 3.0 2.7447917 1.4826 1 4 3 -0.2560508 -0.3704818 0.0517133
SRS_3 24 240 2.8291667 0.7598608 3.0 2.8541667 0.0000 1 4 3 -0.4471246 0.0553488 0.0490488
SRS_4 25 240 3.1541667 0.6824023 3.0 3.2135417 0.0000 1 4 3 -0.5160039 0.3291114 0.0440489
SRS_5 26 240 2.4083333 0.8181603 2.0 2.3854167 1.4826 1 4 3 0.2258091 -0.4632397 0.0528120
SRS_6 27 240 2.6875000 0.7419371 3.0 2.6770833 0.0000 1 4 3 -0.2278723 -0.1989583 0.0478918
SRS_7 28 240 2.0500000 0.8063555 2.0 2.0104167 1.4826 1 4 3 0.3867063 -0.3987605 0.0520500
SRS_8 29 240 2.7041667 0.7974747 3.0 2.7187500 1.4826 1 4 3 -0.2619945 -0.3460868 0.0514768
SRS_9 30 240 2.3041667 0.8551978 2.0 2.2864583 1.4826 1 4 3 0.0982279 -0.6944265 0.0552028
SRS_10 31 240 2.5083333 0.7653132 3.0 2.5208333 1.4826 1 4 3 -0.0836566 -0.3856831 0.0494008
SRS_sum 32 240 26.3666667 4.4031813 26.0 26.4114583 4.4478 10 39 29 -0.2017195 0.7388282 0.2842241
SAD_dep_1 33 240 4.7125000 1.7005568 5.0 4.8593750 1.4826 1 7 6 -0.7330209 -0.3297001 0.1097705
SAD_dep_2 34 240 4.2708333 1.7349422 5.0 4.3437500 1.4826 1 7 6 -0.3608595 -0.8490900 0.1119900
SAD_dep_3 35 240 4.0166667 1.8990565 4.0 4.0364583 2.9652 1 7 6 -0.1624970 -1.1808819 0.1225836
SAD_4 36 240 4.7750000 1.6285245 5.0 4.9114583 1.4826 1 7 6 -0.6496662 -0.2970324 0.1051208
SAD_access_5 37 240 4.2458333 1.8001579 4.0 4.2864583 2.9652 1 7 6 -0.2312465 -1.0249841 0.1161997
SAD_access_6 38 240 4.4958333 1.6184034 5.0 4.5833333 1.4826 1 7 6 -0.5144971 -0.5479850 0.1044675
SAD_access_7 39 240 5.3625000 1.3834988 6.0 5.5416667 1.4826 1 7 6 -1.0887045 1.1891885 0.0893045
SAD_ea_8 40 240 3.8083333 1.6857554 4.0 3.8229167 1.4826 1 7 6 -0.0328597 -1.0656862 0.1088150
SAD_ea_9 41 240 4.4500000 1.5703849 5.0 4.5260417 1.4826 1 7 6 -0.4600102 -0.5187517 0.1013679
SAD_ea_10 42 240 4.7208333 1.4264328 5.0 4.8437500 1.4826 1 7 6 -0.6926873 0.1172655 0.0920758
SAD_ea_11 43 240 4.7875000 1.3290486 5.0 4.8489583 1.4826 1 7 6 -0.5565427 0.4181962 0.0857897
SAD_dist_12 44 240 4.6625000 1.5054469 5.0 4.7708333 1.4826 1 7 6 -0.5829356 -0.2587305 0.0971762
SAD_dist_13 45 240 4.9791667 1.4006810 5.0 5.1197917 1.4826 1 7 6 -0.9547708 0.6061696 0.0904136
SAD_sum 46 240 59.2875000 13.7854393 60.0 60.0104167 11.8608 13 91 78 -0.6258436 0.9193452 0.8898463
SAD_dep_sum 47 240 13.0000000 4.5647366 13.0 13.2447917 4.4478 3 21 18 -0.3879531 -0.4534349 0.2946525
SAD_access_sum 48 240 14.1041667 3.9220415 14.0 14.3177083 4.4478 3 21 18 -0.5417486 0.2150910 0.2531667
SAD_ea_sum 49 240 17.7666667 4.6270685 18.0 18.0104167 4.4478 4 28 24 -0.4824763 0.2767665 0.2986760
SAD_dist_sum 50 240 9.6416667 2.5737517 10.0 9.8333333 2.9652 2 14 12 -0.6830871 0.2471243 0.1661350
DASS_S_1 51 240 1.2291667 0.8089350 1.0 1.1979167 0.0000 0 3 3 0.3667204 -0.2720591 0.0522165
DASS_A_2 52 240 1.1916667 0.8896977 1.0 1.1562500 1.4826 0 3 3 0.1865441 -0.8467164 0.0574297
DASS_D_3 53 240 0.8250000 0.7886485 1.0 0.7447917 1.4826 0 3 3 0.6738481 -0.1134913 0.0509070
DASS_A_4 54 240 0.5791667 0.7935299 0.0 0.4479167 0.0000 0 3 3 1.1414707 0.3204723 0.0512221
DASS_D_5 55 240 1.4458333 0.8612918 1.0 1.4322917 1.4826 0 3 3 0.0691180 -0.6590652 0.0555961
DASS_S_6 56 240 1.1083333 0.8363683 1.0 1.0677083 1.4826 0 3 3 0.3515392 -0.5066854 0.0539873
DASS_A_7 57 240 0.5083333 0.7317753 0.0 0.3593750 0.0000 0 3 3 1.3748488 1.3683725 0.0472359
DASS_S_8 58 240 0.9875000 0.8938715 1.0 0.9166667 1.4826 0 3 3 0.4793273 -0.7096192 0.0576992
DASS_A_9 59 240 0.9708333 0.9165969 1.0 0.9010417 1.4826 0 3 3 0.4467919 -0.9126361 0.0591661
DASS_D_10 60 240 1.0083333 0.9147406 1.0 0.9218750 1.4826 0 3 3 0.5389287 -0.6158918 0.0590463
DASS_S_11 61 240 1.1250000 0.8390321 1.0 1.0885417 1.4826 0 3 3 0.3134748 -0.5622096 0.0541593
DASS_S_12 62 240 1.1625000 0.8646050 1.0 1.1145833 1.4826 0 3 3 0.3408496 -0.5680930 0.0558100
DASS_D_13 63 240 1.0791667 0.8066041 1.0 1.0156250 0.0000 0 3 3 0.6189097 0.1347322 0.0520661
DASS_S_14 64 240 0.9458333 0.7930024 1.0 0.8906250 1.4826 0 3 3 0.4968199 -0.2896751 0.0511881
DASS_A_15 65 240 0.8041667 0.8378989 1.0 0.7083333 1.4826 0 3 3 0.7605846 -0.2091454 0.0540861
DASS_D_16 66 240 0.8458333 0.8757444 1.0 0.7447917 1.4826 0 3 3 0.7485097 -0.3000785 0.0565291
DASS_D_17 67 240 0.7125000 0.8943395 0.0 0.5729167 0.0000 0 3 3 1.0460243 0.1071675 0.0577294
DASS_S_18 68 240 0.8041667 0.8527480 1.0 0.7135417 1.4826 0 3 3 0.7049093 -0.4719511 0.0550446
DASS_A_19 69 240 0.8458333 0.8612918 1.0 0.7552083 1.4826 0 3 3 0.6904726 -0.4039024 0.0555961
DASS_A_20 70 240 0.6916667 0.8057932 0.0 0.5989583 0.0000 0 3 3 0.7532099 -0.6284447 0.0520137
DASS_D_21 71 240 0.6791667 0.8781300 0.0 0.5364583 0.0000 0 3 3 1.1095164 0.2796753 0.0566830
DASS_D_sum 72 240 6.5958333 4.6391980 6.5 6.1510417 5.1891 0 21 21 0.8009745 0.2402705 0.2994589
DASS_A_sum 73 240 5.5916667 3.8333394 5.0 5.3958333 4.4478 0 17 17 0.4005132 -0.7342841 0.2474410
DASS_S_sum 74 240 7.3625000 4.0722875 7.0 7.2760417 4.4478 0 18 18 0.2077570 -0.3786219 0.2628650
BIS_1 75 240 2.2458333 0.8245598 2.0 2.2343750 1.4826 1 4 3 0.1456260 -0.6029615 0.0532251
BIS_2 76 240 2.1375000 0.7934420 2.0 2.1197917 1.4826 1 4 3 0.2528329 -0.4645146 0.0512165
BIS_3 77 240 2.0875000 0.8312981 2.0 2.0364583 1.4826 1 4 3 0.4459447 -0.3312258 0.0536601
BIS_4 78 240 2.1500000 0.7560080 2.0 2.1197917 0.0000 1 4 3 0.4987330 0.1684318 0.0488001
BIS_5 79 240 2.6000000 0.7642646 3.0 2.5885417 1.4826 1 4 3 -0.1411267 -0.3419178 0.0493331
BIS_6 80 240 2.1333333 0.7424187 2.0 2.1250000 0.0000 1 4 3 0.2722497 -0.2074721 0.0479229
BIS_7 81 240 2.0541667 0.8138339 2.0 2.0156250 1.4826 1 4 3 0.3651574 -0.4736800 0.0525328
BIS_8 82 240 2.3291667 0.7948470 2.0 2.3177083 1.4826 1 4 3 0.2433764 -0.3547932 0.0513072
BIS_sum 83 240 17.7375000 3.7564241 18.0 17.6510417 4.4478 8 31 23 0.2550941 0.2700315 0.2424761
SSEIT_1 84 240 3.7541667 0.8593464 4.0 3.8333333 0.0000 1 5 4 -0.8881397 0.8898084 0.0554706
SSEIT_2 85 240 3.7833333 0.8302173 4.0 3.8541667 0.0000 1 5 4 -0.9792154 1.3196187 0.0535903
SSEIT_3 86 240 3.6208333 0.9340062 4.0 3.6718750 1.4826 1 5 4 -0.5970465 -0.1030607 0.0602898
SSEIT_4 87 240 3.8250000 0.9343514 4.0 3.9166667 1.4826 1 5 4 -0.6904725 0.2081065 0.0603121
SSEIT_5 88 240 3.6000000 1.0969719 4.0 3.6822917 1.4826 1 5 4 -0.6802834 -0.3443269 0.0708092
SSEIT_6 89 240 3.8791667 0.8809842 4.0 3.9739583 0.0000 1 5 4 -0.7881307 0.4182796 0.0568673
SSEIT_7 90 240 3.7125000 0.8706332 4.0 3.7604167 1.4826 1 5 4 -0.5116870 0.1640800 0.0561991
SSEIT_8 91 240 3.7250000 0.9806709 4.0 3.8177083 1.4826 1 5 4 -0.7041408 0.2031156 0.0633020
SSEIT_9 92 240 3.9500000 0.8268507 4.0 4.0416667 0.0000 1 5 4 -1.0573977 1.6073330 0.0533730
SSEIT_10 93 240 3.6208333 0.9777778 4.0 3.6875000 1.4826 1 5 4 -0.6596889 0.0290126 0.0631153
SSEIT_11 94 240 3.3708333 1.1091024 3.5 3.4010417 0.7413 1 5 4 -0.2880241 -0.7426565 0.0715923
SSEIT_12 95 240 3.3833333 0.9478744 3.0 3.3750000 1.4826 1 5 4 -0.2371045 -0.5957027 0.0611850
SSEIT_13 96 240 3.5750000 0.9388188 4.0 3.6302083 1.4826 1 5 4 -0.5790710 0.1666124 0.0606005
SSEIT_14 97 240 3.9583333 0.8811920 4.0 4.0625000 0.0000 1 5 4 -1.0886983 1.5489357 0.0568807
SSEIT_15 98 240 3.6458333 0.9482330 4.0 3.7187500 0.7413 1 5 4 -0.7428813 0.3197924 0.0612082
SSEIT_16 99 240 3.8291667 0.8383981 4.0 3.8958333 0.0000 1 5 4 -0.7332296 0.5630996 0.0541184
SSEIT_17 100 240 3.8500000 0.8349079 4.0 3.9114583 0.0000 1 5 4 -0.7891027 0.9038198 0.0538931
SSEIT_18 101 240 4.0000000 0.8182029 4.0 4.0729167 0.0000 1 5 4 -1.0041060 1.8344596 0.0528148
SSEIT_19 102 240 3.4958333 0.9681018 4.0 3.5208333 1.4826 1 5 4 -0.4015926 -0.4217825 0.0624907
SSEIT_20 103 240 3.8333333 0.7851481 4.0 3.8802083 0.0000 1 5 4 -0.6819949 0.6011769 0.0506811
SSEIT_21 104 240 3.3541667 0.9700447 4.0 3.3854167 1.4826 1 5 4 -0.4501433 -0.3193233 0.0626161
SSEIT_22 105 240 3.8125000 0.8041797 4.0 3.8697917 0.0000 1 5 4 -0.9011383 1.2813923 0.0519096
SSEIT_23 106 240 3.7375000 0.9604360 4.0 3.8385417 0.0000 1 5 4 -0.9267194 0.6913098 0.0619959
SSEIT_24 107 240 4.1208333 0.8014000 4.0 4.2031250 1.4826 1 5 4 -0.8019806 0.6303605 0.0517301
SSEIT_25 108 240 3.7541667 0.9021032 4.0 3.8489583 0.0000 1 5 4 -0.9307807 0.9281106 0.0582305
SSEIT_26 109 240 3.4333333 1.0040365 4.0 3.4427083 1.4826 1 5 4 -0.2994517 -0.6868561 0.0648103
SSEIT_27 110 240 3.4333333 0.8652601 4.0 3.4687500 1.4826 1 5 4 -0.4125653 -0.1074251 0.0558523
SSEIT_28 111 240 3.5875000 0.9982464 4.0 3.6250000 1.4826 1 5 4 -0.3913403 -0.6554922 0.0644365
SSEIT_29 112 240 3.5541667 0.9446963 4.0 3.5989583 1.4826 1 5 4 -0.5853861 -0.0395016 0.0609799
SSEIT_30 113 240 4.0208333 0.8050464 4.0 4.1041667 0.0000 1 5 4 -0.8519652 0.8834906 0.0519655
SSEIT_31 114 240 3.7875000 0.8633943 4.0 3.8645833 0.0000 1 5 4 -0.8617859 0.8921882 0.0557319
SSEIT_32 115 240 3.8750000 0.8538615 4.0 3.9479167 0.0000 1 5 4 -0.7241083 0.4765148 0.0551165
SSEIT_33 116 240 3.5041667 1.0628686 4.0 3.5468750 1.4826 1 5 4 -0.5001373 -0.6023394 0.0686079
SSEIT_sum 117 240 122.3875000 16.4872161 124.0 123.3229167 12.6021 45 160 115 -0.7864116 1.8855300 1.0642452
RSES_1 118 240 1.8625000 0.7216395 2.0 1.7968750 0.0000 1 4 3 0.6094128 0.3344134 0.0465816
RSES_2 119 240 1.8791667 0.6830152 2.0 1.8229167 0.0000 1 4 3 0.5471371 0.5496631 0.0440884
RSES_3 120 240 2.0875000 0.7952855 2.0 2.0416667 0.0000 1 4 3 0.4900505 -0.0696325 0.0513355
RSES_4 121 240 2.0291667 0.6684643 2.0 2.0104167 0.0000 1 4 3 0.3856914 0.4062236 0.0431492
RSES_5 122 240 2.1708333 0.8078999 2.0 2.1510417 1.4826 1 4 3 0.2517108 -0.4794614 0.0521497
RSES_6 123 240 2.0916667 0.7374709 2.0 2.0781250 0.0000 1 4 3 0.2916032 -0.1948101 0.0476035
RSES_7 124 240 2.2416667 0.7761706 2.0 2.2395833 1.4826 1 4 3 0.1980403 -0.3681761 0.0501016
RSES_8 125 240 2.8250000 0.7336788 3.0 2.8333333 0.0000 1 4 3 -0.3499848 0.0042358 0.0473588
RSES_9 126 240 2.6625000 0.7753053 3.0 2.6770833 0.0000 1 4 3 -0.3604462 -0.1945849 0.0500457
RSES_10 127 240 2.5000000 0.8283674 3.0 2.5156250 1.4826 1 4 3 -0.2199080 -0.5665100 0.0534709
RSES_sum 128 240 22.3500000 4.9620316 23.0 22.4739583 4.4478 10 40 30 -0.1077398 0.3600781 0.3202978
NEO_N_1 129 240 3.8666667 1.0139886 4.0 4.0104167 0.0000 1 5 4 -1.1235922 0.9799712 0.0654527
NEO_N_2 130 240 3.5541667 1.1594542 4.0 3.6250000 1.4826 1 5 4 -0.4758223 -0.7707457 0.0748424
NEO_N_3 131 240 2.8416667 1.1961992 3.0 2.8177083 1.4826 1 5 4 0.1299800 -1.0092634 0.0772143
NEO_N_4 132 240 2.4666667 1.1816826 2.0 2.3802083 1.4826 1 5 4 0.5110443 -0.6819719 0.0762773
NEO_N_5 133 240 3.1500000 1.1177533 3.0 3.1406250 1.4826 1 5 4 -0.1169002 -0.9524097 0.0721507
NEO_N_6 134 240 2.7583333 1.1714586 3.0 2.7239583 1.4826 1 5 4 0.2570463 -0.9067204 0.0756173
NEO_N_7 135 240 2.8625000 1.1865045 3.0 2.8541667 1.4826 1 5 4 0.0559131 -1.0257078 0.0765885
NEO_N_8 136 240 2.7875000 1.1610169 3.0 2.7968750 1.4826 1 5 4 -0.0141598 -1.0446122 0.0749433
NEO_N_9 137 240 3.2458333 0.9691817 3.0 3.2031250 1.4826 1 5 4 0.1000913 -0.6613634 0.0625604
NEO_N_10 138 240 2.9083333 1.0589000 3.0 2.8750000 1.4826 1 5 4 0.2241768 -0.8793075 0.0683517
NEO_N_11 139 240 2.6750000 1.0443111 2.0 2.6822917 1.4826 1 5 4 0.3013570 -0.9077998 0.0674100
NEO_N_12 140 240 2.6750000 1.0362670 2.5 2.6770833 0.7413 1 5 4 0.2713607 -0.7637941 0.0668907
NEO_E_13 141 240 3.6250000 1.0672963 4.0 3.7135417 1.4826 1 5 4 -0.6959267 -0.1262620 0.0688937
NEO_E_14 142 240 3.7875000 0.8919972 4.0 3.8697917 0.0000 1 5 4 -0.6661520 0.1100950 0.0575782
NEO_E_15 143 240 3.4583333 1.2701651 4.0 3.5677083 1.4826 1 5 4 -0.4621452 -0.8547105 0.0819888
NEO_E_16 144 240 3.2708333 1.1632371 3.0 3.3177083 1.4826 1 5 4 -0.3137624 -0.7839538 0.0750866
NEO_E_17 145 240 3.3708333 0.9462452 3.0 3.3541667 1.4826 1 5 4 -0.1146328 -0.6691973 0.0610799
NEO_E_18 146 240 3.3916667 0.9835112 4.0 3.3958333 1.4826 1 5 4 -0.2893285 -0.5549224 0.0634854
NEO_E_19 147 240 3.2791667 1.0355518 3.0 3.2656250 1.4826 1 5 4 -0.2133789 -0.8216811 0.0668446
NEO_E_20 148 240 3.1375000 1.0677127 3.0 3.0989583 1.4826 1 5 4 0.0341812 -0.8823526 0.0689206
NEO_E_21 149 240 3.9708333 0.8887861 4.0 4.0885417 0.0000 1 5 4 -1.0829265 1.3185158 0.0573709
NEO_E_22 150 240 3.8208333 1.0335296 4.0 3.9375000 1.4826 1 5 4 -0.8393657 0.1338900 0.0667140
NEO_E_23 151 240 3.9166667 0.9859544 4.0 4.0468750 1.4826 1 5 4 -0.8771859 0.3379919 0.0636431
NEO_E_24 152 240 3.7541667 0.9905322 4.0 3.8437500 1.4826 1 5 4 -0.6795086 -0.0600569 0.0639386
NEO_O_25 153 240 3.8666667 0.9973465 4.0 3.9791667 1.4826 1 5 4 -0.6902206 -0.1325231 0.0643784
NEO_O_26 154 240 3.9041667 1.0405901 4.0 4.0364583 1.4826 1 5 4 -0.8075556 0.0099263 0.0671698
NEO_O_27 155 240 3.7166667 1.1548213 4.0 3.8333333 1.4826 1 5 4 -0.6699250 -0.4175729 0.0745434
NEO_O_28 156 240 3.9000000 1.2094468 4.0 4.0572917 1.4826 1 5 4 -0.8122626 -0.4508389 0.0780695
NEO_O_29 157 240 3.4000000 1.1007795 4.0 3.4270833 1.4826 1 5 4 -0.3276276 -0.7988374 0.0710550
NEO_O_30 158 240 3.5291667 1.0781121 4.0 3.5781250 1.4826 1 5 4 -0.4241525 -0.6392063 0.0695918
NEO_O_31 159 240 2.4541667 0.9495558 2.0 2.4062500 1.4826 1 5 4 0.6273255 0.0439058 0.0612936
NEO_O_32 160 240 2.9833333 1.1014128 3.0 2.9322917 1.4826 1 5 4 0.2011329 -0.9789600 0.0710959
NEO_O_33 161 240 3.7208333 1.1357556 4.0 3.8333333 1.4826 1 5 4 -0.6699984 -0.3799326 0.0733127
NEO_O_34 162 240 3.7000000 1.0754001 4.0 3.7812500 1.4826 1 5 4 -0.5117858 -0.5716129 0.0694168
NEO_O_35 163 240 3.1875000 1.1362467 3.0 3.2343750 1.4826 1 5 4 -0.3014980 -0.6121613 0.0733444
NEO_O_36 164 240 3.5833333 1.4176611 4.0 3.7291667 1.4826 1 5 4 -0.5150961 -1.0777893 0.0915096
NEO_A_37 165 240 3.5291667 0.9974776 4.0 3.5833333 0.0000 1 5 4 -0.7727624 -0.0694604 0.0643869
NEO_A_38 166 240 3.6458333 0.9304155 4.0 3.7187500 0.0000 1 5 4 -0.7993154 0.4840701 0.0600581
NEO_A_39 167 240 3.8291667 1.0746135 4.0 3.9375000 1.4826 1 5 4 -0.6458574 -0.4659596 0.0693660
NEO_A_40 168 240 3.9916667 1.0469788 4.0 4.1302083 1.4826 1 5 4 -0.8112524 -0.2867509 0.0675822
NEO_A_41 169 240 4.1083333 0.8658643 4.0 4.2135417 1.4826 1 5 4 -0.8635544 0.3776972 0.0558913
NEO_A_42 170 240 4.1625000 0.8499631 4.0 4.2760417 1.4826 1 5 4 -1.0463594 1.1171112 0.0548649
NEO_A_43 171 240 3.8416667 1.0823485 4.0 3.9531250 1.4826 1 5 4 -0.7099900 -0.4165580 0.0698653
NEO_A_44 172 240 3.6250000 1.1282786 4.0 3.6770833 1.4826 1 5 4 -0.3279883 -1.0486458 0.0728301
NEO_A_45 173 240 3.6666667 1.1191250 4.0 3.7343750 1.4826 1 5 4 -0.3739012 -0.9180642 0.0722392
NEO_A_46 174 240 2.8375000 1.1510637 3.0 2.7864583 1.4826 1 5 4 0.3508045 -0.8445593 0.0743008
NEO_A_47 175 240 3.8416667 0.9978708 4.0 3.9583333 1.4826 1 5 4 -0.8890219 0.3357461 0.0644123
NEO_A_48 176 240 4.0958333 0.9391437 4.0 4.2343750 1.4826 1 5 4 -1.0353082 0.6864888 0.0606215
NEO_C_49 177 240 3.5083333 0.8677951 4.0 3.5364583 1.4826 1 5 4 -0.4463068 -0.1400536 0.0560159
NEO_C_50 178 240 3.7083333 0.8619898 4.0 3.7760417 0.0000 1 5 4 -0.6938774 0.3900470 0.0556412
NEO_C_51 179 240 3.5208333 1.1051341 4.0 3.5781250 1.4826 1 5 4 -0.5155241 -0.6307845 0.0713361
NEO_C_52 180 240 3.0250000 1.2406133 3.0 3.0312500 1.4826 1 5 4 -0.0209320 -1.1292615 0.0800812
NEO_C_53 181 240 3.9541667 0.7987853 4.0 4.0260417 0.0000 1 5 4 -0.8012413 0.8185973 0.0515614
NEO_C_54 182 240 2.0291667 0.8934814 2.0 1.9479167 1.4826 1 5 4 0.6092761 -0.1895782 0.0576740
NEO_C_55 183 240 3.8583333 0.9129091 4.0 3.9479167 1.4826 1 5 4 -0.8360742 0.7278260 0.0589280
NEO_C_56 184 240 4.0416667 0.9138253 4.0 4.1666667 1.4826 2 5 3 -0.8024425 -0.0936861 0.0589872
NEO_C_57 185 240 3.8000000 0.8783781 4.0 3.8750000 0.0000 1 5 4 -0.6359643 0.1539995 0.0566991
NEO_C_58 186 240 2.5041667 1.0862315 2.0 2.4583333 1.4826 1 5 4 0.5062675 -0.6553987 0.0701159
NEO_C_59 187 240 3.1375000 1.0948004 3.0 3.1302083 1.4826 1 5 4 -0.1199934 -0.7980528 0.0706691
NEO_C_60 188 240 3.2666667 1.1332431 3.0 3.2812500 1.4826 1 5 4 -0.2407709 -0.9245075 0.0731505
NEO_N_sum 189 240 35.7916667 7.2934840 36.0 35.8072917 7.4130 16 57 41 -0.0001701 0.0508250 0.4707924
NEO_E_sum 190 240 42.7833333 7.5258921 43.0 42.8958333 7.4130 17 60 43 -0.2477822 0.0345163 0.4857942
NEO_O_sum 191 240 41.9458333 6.4237712 42.0 41.8802083 7.4130 26 60 34 0.1009092 -0.4695492 0.4146526
NEO_A_sum 192 240 45.1750000 6.8671341 45.0 45.2656250 7.4130 28 60 32 -0.1262515 -0.8654505 0.4432716
NEO_C_sum 193 240 40.3541667 5.8841308 40.0 40.3489583 5.9304 25 55 30 -0.0071121 -0.3502920 0.3798190

## MTURK
kable(mturk_cont_ques, caption = "Descriptive statistics for questionnaires - STUDY 1 - MTURK", align = rep('crcc'), row.names = TRUE) %>% 
  kable_styling(bootstrap_options = "striped", "hover", full_width = F) %>%
  kable_classic() 
Descriptive statistics for questionnaires - STUDY 1 - MTURK
vars n mean sd median trimmed mad min max range skew kurtosis se
NMPQ_1 1 505 4.564356 1.7481047 5 4.6592593 1.4826 1 7 6 -0.5053812 -0.7564556 0.0777896
NMPQ_2 2 505 4.946535 1.6254160 5 5.1135802 1.4826 1 7 6 -0.8352502 -0.0453865 0.0723301
NMPQ_3 3 505 4.400000 1.8165902 5 4.4913580 1.4826 1 7 6 -0.4208833 -0.8897788 0.0808372
NMPQ_4 4 505 4.988119 1.6317343 5 5.1753086 1.4826 1 7 6 -0.9134702 0.1266639 0.0726112
NMPQ_5 5 505 4.300990 1.8464087 5 4.3827160 1.4826 1 7 6 -0.4181650 -0.9919509 0.0821641
NMPQ_6 6 505 4.019802 1.9240551 4 4.0246914 2.9652 1 7 6 -0.1097694 -1.2024132 0.0856193
NMPQ_7 7 505 4.443564 1.7731695 5 4.5358025 1.4826 1 7 6 -0.4591665 -0.8030854 0.0789050
NMPQ_8 8 505 4.594059 1.7982477 5 4.6987654 1.4826 1 7 6 -0.5041377 -0.8548189 0.0800210
NMPQ_9 9 505 4.988119 1.6047602 5 5.1679012 1.4826 1 7 6 -0.8863148 0.1163296 0.0714109
NMPQ_10 10 505 4.570297 1.7860540 5 4.6839506 1.4826 1 7 6 -0.5110330 -0.7903171 0.0794784
NMPQ_11 11 505 4.839604 1.7066676 5 4.9950617 1.4826 1 7 6 -0.7060817 -0.4071257 0.0759457
NMPQ_12 12 505 4.732673 1.7176205 5 4.8691358 1.4826 1 7 6 -0.6451227 -0.5006782 0.0764331
NMPQ_13 13 505 4.762376 1.7351897 5 4.9012346 1.4826 1 7 6 -0.6403446 -0.5490660 0.0772149
NMPQ_14 14 505 4.873267 1.7251001 5 5.0296296 1.4826 1 7 6 -0.7323623 -0.4661023 0.0767659
NMPQ_15 15 505 4.465346 1.7647584 5 4.5604938 1.4826 1 7 6 -0.5134764 -0.7900441 0.0785307
NMPQ_16 16 505 3.853465 1.9523879 4 3.8345679 2.9652 1 7 6 -0.0643546 -1.2606793 0.0868801
NMPQ_17 17 505 4.039604 1.9826669 4 4.0543210 2.9652 1 7 6 -0.2056528 -1.2818544 0.0882275
NMPQ_18 18 505 4.138614 1.9056604 4 4.1728395 2.9652 1 7 6 -0.2376239 -1.1313384 0.0848008
NMPQ_19 19 505 4.388119 1.8246160 5 4.4839506 1.4826 1 7 6 -0.4515612 -0.9053164 0.0811943
NMPQ_20 20 505 4.136634 1.9362725 5 4.1703704 1.4826 1 7 6 -0.2582731 -1.1814585 0.0861630
NMPQ_sum 21 505 90.045545 27.1725802 95 92.3456790 26.6868 20 140 120 -0.6690097 -0.2654139 1.2091639
SRS_1 22 505 3.243564 0.7677032 3 3.3333333 1.4826 1 4 3 -0.7586386 0.0349536 0.0341623
SRS_2 23 505 3.079208 0.8669776 3 3.1580247 1.4826 1 4 3 -0.5903255 -0.4860296 0.0385800
SRS_3 24 505 3.112871 0.7824543 3 3.1728395 1.4826 1 4 3 -0.5217096 -0.3357595 0.0348188
SRS_4 25 505 3.178218 0.7867459 3 3.2641975 1.4826 1 4 3 -0.7386502 0.1090677 0.0350097
SRS_5 26 505 2.540594 0.9974350 3 2.5506173 1.4826 1 4 3 -0.0877478 -1.0518842 0.0443853
SRS_6 27 505 3.138614 0.7871702 3 3.2049383 1.4826 1 4 3 -0.5651665 -0.3233032 0.0350286
SRS_7 28 505 2.483168 0.9657908 2 2.4790123 1.4826 1 4 3 0.0079474 -0.9720493 0.0429771
SRS_8 29 505 3.023762 0.8748184 3 3.0962963 1.4826 1 4 3 -0.5250024 -0.5469121 0.0389289
SRS_9 30 505 2.556436 1.0026172 3 2.5703704 1.4826 1 4 3 0.0044330 -1.0867102 0.0446159
SRS_10 31 505 3.079208 0.8028121 3 3.1432099 1.4826 1 4 3 -0.5566046 -0.2454258 0.0357247
SRS_sum 32 505 29.435644 5.2990263 29 29.2790123 4.4478 14 40 26 0.2270166 -0.3040975 0.2358036
SAD_dep_1 33 505 4.465346 1.8277206 5 4.5679012 1.4826 1 7 6 -0.4574013 -0.9176665 0.0813325
SAD_dep_2 34 505 4.580198 1.8110124 5 4.7160494 1.4826 1 7 6 -0.5983697 -0.6715725 0.0805890
SAD_dep_3 35 505 4.219802 1.9254983 5 4.2740741 1.4826 1 7 6 -0.2858511 -1.1226121 0.0856835
SAD_4 36 505 4.800000 1.7754946 5 4.9728395 1.4826 1 7 6 -0.7202116 -0.4306089 0.0790085
SAD_access_5 37 505 4.576238 1.7521613 5 4.6962963 1.4826 1 7 6 -0.5773884 -0.6234456 0.0779702
SAD_access_6 38 505 4.685149 1.7095313 5 4.8074074 1.4826 1 7 6 -0.6182911 -0.5578879 0.0760731
SAD_access_7 39 505 4.902970 1.6703801 5 5.0716049 1.4826 1 7 6 -0.8001256 -0.1734047 0.0743309
SAD_ea_8 40 505 3.825743 2.0092373 4 3.7827160 2.9652 1 7 6 0.0220541 -1.3186785 0.0894099
SAD_ea_9 41 505 4.633663 1.6968854 5 4.7506173 1.4826 1 7 6 -0.5857290 -0.4837387 0.0755104
SAD_ea_10 42 505 4.554455 1.6919232 5 4.6518519 1.4826 1 7 6 -0.5314689 -0.5622305 0.0752896
SAD_ea_11 43 505 4.857426 1.5037880 5 4.9777778 1.4826 1 7 6 -0.6865616 0.1142011 0.0669177
SAD_dist_12 44 505 3.988119 1.9241205 4 3.9851852 2.9652 1 7 6 -0.0849200 -1.2296710 0.0856222
SAD_dist_13 45 505 4.459406 1.7869777 5 4.5604938 1.4826 1 7 6 -0.4646885 -0.7900502 0.0795195
SAD_sum 46 505 58.548515 17.3201106 62 59.8222222 16.3086 13 91 78 -0.5905283 -0.4150254 0.7707348
SAD_dep_sum 47 505 13.265346 4.9216971 14 13.6518519 5.9304 3 21 18 -0.5848943 -0.6365966 0.2190126
SAD_access_sum 48 505 14.164356 4.4103410 15 14.6000000 4.4478 3 21 18 -0.7854445 0.0064499 0.1962576
SAD_ea_sum 49 505 17.871287 5.6485413 19 18.2469136 5.9304 4 28 24 -0.5069485 -0.4373834 0.2513568
SAD_dist_sum 50 505 8.447525 3.3371583 9 8.6123457 2.9652 2 14 12 -0.3695057 -0.8118146 0.1485016
DASS_S_1 51 505 1.245545 1.0015390 1 1.1827160 1.4826 0 3 3 0.2525289 -1.0448443 0.0445679
DASS_A_2 52 505 1.104950 1.0703782 1 1.0074074 1.4826 0 3 3 0.4595636 -1.1093384 0.0476312
DASS_D_3 53 505 1.035644 1.0758518 1 0.9209877 1.4826 0 3 3 0.5304872 -1.0962444 0.0478748
DASS_A_4 54 505 1.013861 1.0717355 1 0.8938272 1.4826 0 3 3 0.5226723 -1.1323773 0.0476916
DASS_D_5 55 505 1.241584 1.0933844 1 1.1777778 1.4826 0 3 3 0.3032826 -1.2406066 0.0486550
DASS_S_6 56 505 1.154455 1.0596799 1 1.0691358 1.4826 0 3 3 0.2993682 -1.2449872 0.0471551
DASS_A_7 57 505 1.029703 1.0769542 1 0.9135802 1.4826 0 3 3 0.5309201 -1.1067861 0.0479238
DASS_S_8 58 505 1.069307 1.0489737 1 0.9629630 1.4826 0 3 3 0.4795507 -1.0643653 0.0466787
DASS_A_9 59 505 1.041584 1.0802398 1 0.9283951 1.4826 0 3 3 0.5303249 -1.0997192 0.0480700
DASS_D_10 60 505 1.087129 1.0966818 1 0.9851852 1.4826 0 3 3 0.4762453 -1.1713573 0.0488017
DASS_S_11 61 505 1.225743 1.0711451 1 1.1580247 1.4826 0 3 3 0.3360643 -1.1625126 0.0476653
DASS_S_12 62 505 1.211881 1.0238512 1 1.1407407 1.4826 0 3 3 0.2552893 -1.1359823 0.0455608
DASS_D_13 63 505 1.144554 1.0355272 1 1.0567901 1.4826 0 3 3 0.3514923 -1.1245246 0.0460804
DASS_S_14 64 505 1.106931 1.0543050 1 1.0098765 1.4826 0 3 3 0.4556559 -1.0701359 0.0469160
DASS_A_15 65 505 1.000000 1.0856203 1 0.8765432 1.4826 0 3 3 0.5850144 -1.0754439 0.0483095
DASS_D_16 66 505 1.146535 1.1401375 1 1.0592593 1.4826 0 3 3 0.3853317 -1.3355721 0.0507355
DASS_D_17 67 505 1.089109 1.1100105 1 0.9876543 1.4826 0 3 3 0.4931934 -1.1765343 0.0493948
DASS_S_18 68 505 1.186139 1.0713652 1 1.1086420 1.4826 0 3 3 0.3602118 -1.1654761 0.0476751
DASS_A_19 69 505 1.085149 1.0665724 1 0.9827160 1.4826 0 3 3 0.4279789 -1.1718465 0.0474618
DASS_A_20 70 505 0.980198 1.0725674 1 0.8518519 1.4826 0 3 3 0.6266105 -0.9926589 0.0477286
DASS_D_21 71 505 1.053465 1.0961299 1 0.9432099 1.4826 0 3 3 0.4898527 -1.1908113 0.0487771
DASS_D_sum 72 505 7.798020 6.5875360 8 7.4617284 10.3782 0 21 21 0.1521353 -1.4033567 0.2931415
DASS_A_sum 73 505 7.255446 6.3901039 7 6.8962963 8.8956 0 21 21 0.2340703 -1.4345546 0.2843559
DASS_S_sum 74 505 8.200000 6.1764401 9 7.9802469 8.8956 0 21 21 0.0841834 -1.2884914 0.2748480
BIS_1 75 505 1.869307 0.7471829 2 1.8098765 1.4826 1 4 3 0.5290557 -0.1328825 0.0332492
BIS_2 76 505 2.005941 1.0069029 2 1.8839506 1.4826 1 4 3 0.6282720 -0.7591601 0.0448066
BIS_3 77 505 1.584158 0.9136023 1 1.4049383 0.0000 1 4 3 1.3947740 0.7571790 0.0406548
BIS_4 78 505 1.893069 0.7820224 2 1.8271605 1.4826 1 4 3 0.5858528 -0.1128193 0.0347995
BIS_5 79 505 1.950495 0.8234682 2 1.8839506 1.4826 1 4 3 0.5596606 -0.2730471 0.0366439
BIS_6 80 505 1.871287 0.7901096 2 1.8098765 1.4826 1 4 3 0.5201732 -0.4477796 0.0351594
BIS_7 81 505 2.100990 1.0614544 2 2.0024691 1.4826 1 4 3 0.4941504 -1.0381764 0.0472341
BIS_8 82 505 2.200000 1.0204263 2 2.1259259 1.4826 1 4 3 0.3766058 -0.9972775 0.0454084
BIS_sum 83 505 15.475248 4.3784149 16 15.4543210 5.9304 8 30 22 0.0683769 -0.7761368 0.1948369
SSEIT_1 84 505 3.792079 0.9227808 4 3.8987654 0.0000 1 5 4 -0.9696272 0.9837409 0.0410632
SSEIT_2 85 505 3.760396 0.9301049 4 3.8419753 1.4826 1 5 4 -0.5873088 0.0492575 0.0413891
SSEIT_3 86 505 3.803960 0.9402719 4 3.8962963 1.4826 1 5 4 -0.6172669 -0.0149486 0.0418416
SSEIT_4 87 505 3.821782 0.9469672 4 3.9185185 1.4826 1 5 4 -0.6331003 -0.0258016 0.0421395
SSEIT_5 88 505 3.061386 1.3010199 3 3.0765432 1.4826 1 5 4 -0.0541515 -1.1598166 0.0578946
SSEIT_6 89 505 3.728713 0.9757310 4 3.8148148 1.4826 1 5 4 -0.5891896 -0.0060122 0.0434195
SSEIT_7 90 505 3.619802 0.9311646 4 3.6691358 1.4826 1 5 4 -0.3576021 -0.2325471 0.0414363
SSEIT_8 91 505 3.641584 1.0099964 4 3.7160494 1.4826 1 5 4 -0.5437956 -0.1288949 0.0449442
SSEIT_9 92 505 3.865346 0.9331245 4 3.9679012 1.4826 1 5 4 -0.7689138 0.3279414 0.0415235
SSEIT_10 93 505 3.699010 1.0486665 4 3.7901235 1.4826 1 5 4 -0.6349140 -0.1813406 0.0466650
SSEIT_11 94 505 3.473267 1.0928058 4 3.5259259 1.4826 1 5 4 -0.4143750 -0.5482673 0.0486292
SSEIT_12 95 505 3.546535 1.0645407 4 3.6148148 1.4826 1 5 4 -0.5004904 -0.3049000 0.0473714
SSEIT_13 96 505 3.489109 1.1039163 4 3.5530864 1.4826 1 5 4 -0.4758992 -0.4864657 0.0491236
SSEIT_14 97 505 3.897030 0.8848881 4 3.9777778 1.4826 1 5 4 -0.7074343 0.3229228 0.0393770
SSEIT_15 98 505 3.716832 0.9496312 4 3.7950617 1.4826 1 5 4 -0.6877414 0.1172100 0.0422580
SSEIT_16 99 505 3.728713 0.9858459 4 3.8222222 1.4826 1 5 4 -0.6660221 0.1577178 0.0438696
SSEIT_17 100 505 3.835644 0.9400253 4 3.9283951 1.4826 1 5 4 -0.6416661 0.0267044 0.0418306
SSEIT_18 101 505 3.863366 0.9569838 4 3.9703704 1.4826 1 5 4 -0.7015757 0.0253834 0.0425852
SSEIT_19 102 505 3.845545 0.9448613 4 3.9506173 1.4826 1 5 4 -0.7315879 0.1919795 0.0420458
SSEIT_20 103 505 3.833663 0.9129011 4 3.9111111 1.4826 1 5 4 -0.6977479 0.4028583 0.0406236
SSEIT_21 104 505 3.798020 0.9547272 4 3.8913580 1.4826 1 5 4 -0.6404780 -0.0081469 0.0424848
SSEIT_22 105 505 3.885149 0.9143245 4 3.9827160 1.4826 1 5 4 -0.8447071 0.6515975 0.0406869
SSEIT_23 106 505 3.706931 1.0144059 4 3.7925926 1.4826 1 5 4 -0.6209127 -0.1213563 0.0451405
SSEIT_24 107 505 3.966337 0.9262783 4 4.0666667 1.4826 1 5 4 -0.7407871 0.1150190 0.0412188
SSEIT_25 108 505 3.869307 0.9208500 4 3.9654321 1.4826 1 5 4 -0.7133853 0.1862798 0.0409773
SSEIT_26 109 505 3.415842 1.0752199 4 3.4592593 1.4826 1 5 4 -0.3651378 -0.4759906 0.0478467
SSEIT_27 110 505 3.659406 0.9463986 4 3.7135802 1.4826 1 5 4 -0.3709604 -0.4016210 0.0421142
SSEIT_28 111 505 3.154455 1.3539716 3 3.1925926 1.4826 1 5 4 -0.1037021 -1.2136499 0.0602509
SSEIT_29 112 505 3.536634 0.9955977 4 3.5777778 1.4826 1 5 4 -0.4320238 -0.3676381 0.0443035
SSEIT_30 113 505 3.829703 0.9567580 4 3.9333333 1.4826 1 5 4 -0.8089982 0.5059584 0.0425752
SSEIT_31 114 505 3.734653 0.9348240 4 3.8148148 1.4826 1 5 4 -0.6155669 0.0956510 0.0415991
SSEIT_32 115 505 3.772277 0.9352148 4 3.8617284 1.4826 1 5 4 -0.7259941 0.2495079 0.0416165
SSEIT_33 116 505 3.140594 1.2917764 3 3.1753086 1.4826 1 5 4 -0.0965767 -1.1608460 0.0574833
SSEIT_sum 117 505 121.493069 17.7078488 124 122.0913580 16.3086 56 165 109 -0.3676759 0.1002348 0.7879889
RSES_1 118 505 2.077228 0.9880116 2 1.9728395 1.4826 1 4 3 0.6462974 -0.5891529 0.0439659
RSES_2 119 505 2.089109 0.9728355 2 1.9876543 1.4826 1 4 3 0.6734661 -0.4827028 0.0432906
RSES_3 120 505 2.241584 1.0470354 2 2.1777778 1.4826 1 4 3 0.3043745 -1.1211891 0.0465925
RSES_4 121 505 2.156436 0.9307805 2 2.0716049 1.4826 1 4 3 0.4669367 -0.6213323 0.0414192
RSES_5 122 505 2.318812 1.0612879 2 2.2740741 1.4826 1 4 3 0.2347269 -1.1785906 0.0472267
RSES_6 123 505 2.168317 1.0164257 2 2.0864198 1.4826 1 4 3 0.5085230 -0.8394929 0.0452303
RSES_7 124 505 2.213861 0.9929343 2 2.1432099 1.4826 1 4 3 0.4617087 -0.8093873 0.0441850
RSES_8 125 505 2.554455 1.0125722 3 2.5679012 1.4826 1 4 3 -0.0793964 -1.0947990 0.0450589
RSES_9 126 505 2.354455 1.0498984 2 2.3185185 1.4826 1 4 3 0.1193552 -1.2051048 0.0467199
RSES_10 127 505 2.308911 1.0501416 2 2.2617284 1.4826 1 4 3 0.2018106 -1.1774662 0.0467307
RSES_sum 128 505 22.483168 6.9522331 23 22.3160494 5.9304 10 40 30 0.2166436 0.2107325 0.3093703
NEO_N_1 129 505 3.140594 1.3620551 3 3.1753086 1.4826 1 5 4 -0.2733209 -1.2198453 0.0606107
NEO_N_2 130 505 2.980198 1.3391258 3 2.9753086 1.4826 1 5 4 -0.0431307 -1.2205718 0.0595903
NEO_N_3 131 505 2.544554 1.3223112 2 2.4444444 1.4826 1 5 4 0.3612465 -1.1113756 0.0588421
NEO_N_4 132 505 2.510891 1.3701684 2 2.4024691 1.4826 1 5 4 0.3698651 -1.2358449 0.0609717
NEO_N_5 133 505 2.732673 1.3965028 3 2.6666667 1.4826 1 5 4 0.1722621 -1.2900416 0.0621436
NEO_N_6 134 505 2.588119 1.4228358 2 2.4864198 1.4826 1 5 4 0.3478859 -1.2670919 0.0633154
NEO_N_7 135 505 2.924752 1.3548418 3 2.9061728 1.4826 1 5 4 -0.0644485 -1.2603014 0.0602897
NEO_N_8 136 505 2.706931 1.3646804 2 2.6345679 1.4826 1 5 4 0.2617591 -1.2116097 0.0607275
NEO_N_9 137 505 2.853465 1.2321394 3 2.8172840 1.4826 1 5 4 0.1777958 -0.9521002 0.0548295
NEO_N_10 138 505 2.392079 1.0730911 2 2.3111111 1.4826 1 5 4 0.6456664 -0.2479501 0.0477519
NEO_N_11 139 505 2.326733 1.0811233 2 2.2444444 1.4826 1 5 4 0.5484074 -0.4684476 0.0481094
NEO_N_12 140 505 2.429703 1.1071148 2 2.3456790 1.4826 1 5 4 0.5670356 -0.3566171 0.0492660
NEO_E_13 141 505 3.419802 1.2384402 4 3.5209877 1.4826 1 5 4 -0.4575453 -0.7591977 0.0551099
NEO_E_14 142 505 3.572277 1.1440078 4 3.6641975 1.4826 1 5 4 -0.6137964 -0.4507612 0.0509077
NEO_E_15 143 505 2.986139 1.3115051 3 2.9827160 1.4826 1 5 4 -0.0851026 -1.1469255 0.0583612
NEO_E_16 144 505 2.578218 1.2175636 2 2.5160494 1.4826 1 5 4 0.2987422 -0.9538210 0.0541809
NEO_E_17 145 505 3.261386 1.1831296 3 3.3160494 1.4826 1 5 4 -0.3207268 -0.8202461 0.0526486
NEO_E_18 146 505 3.229703 1.2419219 3 3.2864198 1.4826 1 5 4 -0.2727122 -0.9066137 0.0552648
NEO_E_19 147 505 3.439604 1.0619762 4 3.4814815 1.4826 1 5 4 -0.4671121 -0.4890003 0.0472573
NEO_E_20 148 505 3.334653 1.1533625 3 3.3876543 1.4826 1 5 4 -0.3343134 -0.6982579 0.0513240
NEO_E_21 149 505 3.344555 1.1426504 3 3.4074074 1.4826 1 5 4 -0.3807442 -0.5589036 0.0508473
NEO_E_22 150 505 3.304950 1.1977472 3 3.3604938 1.4826 1 5 4 -0.2694294 -0.8530508 0.0532991
NEO_E_23 151 505 3.566337 1.0983643 4 3.6395062 1.4826 1 5 4 -0.5092585 -0.4585487 0.0488766
NEO_E_24 152 505 3.716832 1.0987971 4 3.8197531 1.4826 1 5 4 -0.6248266 -0.3281563 0.0488958
NEO_O_25 153 505 3.736634 1.1001193 4 3.8518519 1.4826 1 5 4 -0.7166199 -0.1432410 0.0489547
NEO_O_26 154 505 3.560396 1.0878185 4 3.6271605 1.4826 1 5 4 -0.4407955 -0.4945831 0.0484073
NEO_O_27 155 505 3.825743 1.0898753 4 3.9580247 1.4826 1 5 4 -0.8448939 0.0643924 0.0484988
NEO_O_28 156 505 3.580198 1.3880170 4 3.7234568 1.4826 1 5 4 -0.5122420 -1.1135767 0.0617659
NEO_O_29 157 505 3.429703 1.1354274 4 3.4962963 1.4826 1 5 4 -0.4067464 -0.5471411 0.0505259
NEO_O_30 158 505 3.007921 1.2116894 3 3.0098765 1.4826 1 5 4 0.0850591 -0.9447354 0.0539195
NEO_O_31 159 505 2.530693 1.0576387 2 2.4839506 1.4826 1 5 4 0.4166833 -0.4349744 0.0470643
NEO_O_32 160 505 2.930693 1.2187151 3 2.9135802 1.4826 1 5 4 0.0337074 -1.0342183 0.0542321
NEO_O_33 161 505 3.253465 1.3180346 3 3.3160494 1.4826 1 5 4 -0.1660403 -1.2001412 0.0586518
NEO_O_34 162 505 3.304950 1.2669781 3 3.3654321 1.4826 1 5 4 -0.1873982 -1.0734291 0.0563798
NEO_O_35 163 505 3.433663 1.3540267 4 3.5407407 1.4826 1 5 4 -0.4533491 -0.9732405 0.0602534
NEO_O_36 164 505 3.089109 1.5072511 3 3.1111111 1.4826 1 5 4 0.0118876 -1.4548961 0.0670718
NEO_A_37 165 505 3.500990 1.1668788 4 3.6024691 1.4826 1 5 4 -0.6604444 -0.4177379 0.0519254
NEO_A_38 166 505 3.447525 1.1293869 4 3.5382716 1.4826 1 5 4 -0.6245546 -0.2875373 0.0502571
NEO_A_39 167 505 3.613861 1.3316231 4 3.7432099 1.4826 1 5 4 -0.4986807 -1.0150923 0.0592565
NEO_A_40 168 505 3.516832 1.3916609 4 3.6444444 1.4826 1 5 4 -0.4600423 -1.1305739 0.0619281
NEO_A_41 169 505 3.774257 1.0353526 4 3.8740741 1.4826 1 5 4 -0.6321565 -0.2159256 0.0460726
NEO_A_42 170 505 3.782178 1.0255076 4 3.8839506 1.4826 1 5 4 -0.6801183 -0.1080691 0.0456345
NEO_A_43 171 505 3.657426 1.3226766 4 3.7827160 1.4826 1 5 4 -0.5310095 -1.0261259 0.0588583
NEO_A_44 172 505 3.479208 1.3642485 4 3.5975309 1.4826 1 5 4 -0.4243405 -1.0941698 0.0607083
NEO_A_45 173 505 3.336634 1.4006605 3 3.4197531 1.4826 1 5 4 -0.1829143 -1.3078405 0.0623286
NEO_A_46 174 505 2.714851 1.1843378 3 2.6543210 1.4826 1 5 4 0.3414601 -0.7832162 0.0527023
NEO_A_47 175 505 3.851485 1.0726223 4 3.9802469 1.4826 1 5 4 -0.7429187 -0.0933843 0.0477311
NEO_A_48 176 505 3.851485 1.0233983 4 3.9753086 1.4826 1 5 4 -0.7983974 0.1774896 0.0455406
NEO_C_49 177 505 3.801980 0.9740665 4 3.8962963 1.4826 1 5 4 -0.5999320 -0.1603921 0.0433454
NEO_C_50 178 505 3.817822 0.9952662 4 3.9234568 1.4826 1 5 4 -0.7152479 0.0282972 0.0442888
NEO_C_51 179 505 3.572277 1.1405337 4 3.6493827 1.4826 1 5 4 -0.4821251 -0.6344332 0.0507531
NEO_C_52 180 505 3.255445 1.3613482 3 3.3185185 1.4826 1 5 4 -0.1704848 -1.2328377 0.0605792
NEO_C_53 181 505 4.015842 0.9083751 4 4.1234568 1.4826 1 5 4 -0.7919462 0.1479149 0.0404222
NEO_C_54 182 505 2.439604 1.3096164 2 2.3308642 1.4826 1 5 4 0.4382540 -1.0513209 0.0582772
NEO_C_55 183 505 3.994059 0.9849887 4 4.1283951 1.4826 1 5 4 -0.8211508 0.0029880 0.0438314
NEO_C_56 184 505 3.786139 1.0048523 4 3.8913580 1.4826 1 5 4 -0.6997765 0.0775830 0.0447153
NEO_C_57 185 505 3.801980 1.0372028 4 3.9259259 1.4826 1 5 4 -0.8873011 0.3700760 0.0461549
NEO_C_58 186 505 3.184158 1.3524473 3 3.2296296 1.4826 1 5 4 -0.1244468 -1.2235857 0.0601831
NEO_C_59 187 505 3.431683 1.3377109 4 3.5283951 1.4826 1 5 4 -0.3181664 -1.1756431 0.0595274
NEO_C_60 188 505 3.471287 1.3843181 4 3.5876543 1.4826 1 5 4 -0.4242954 -1.1378074 0.0616013
NEO_N_sum 189 505 32.130693 9.6803448 34 32.4962963 8.8956 12 59 47 -0.2934942 -0.6153351 0.4307697
NEO_E_sum 190 505 39.754455 9.1366991 41 40.2691358 8.8956 12 60 48 -0.4859173 -0.1793039 0.4065778
NEO_O_sum 191 505 39.683168 6.8971047 38 39.1925926 5.9304 24 59 35 0.5720891 -0.3385599 0.3069171
NEO_A_sum 192 505 42.526733 7.8109977 41 42.1925926 7.4130 21 60 39 0.3360591 -0.7909585 0.3475848
NEO_C_sum 193 505 42.572277 6.7851980 42 42.3580247 7.4130 25 57 32 0.2555865 -0.7168260 0.3019373

# export tables as csv files
write.csv(sona_cont_ques,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_cont_ques(oct28).csv", row.names = T)

write.csv(mturk_cont_ques,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_cont_ques(oct28).csv", row.names = T)

Analyses

Assumption Tests

All assumptions were met for the correlation analysis. Click here to see the assumption tests.

The assumptions for a correlation analysis were tested. There were two assumptions: (1) Linearity and (2) Normality.

  1. Linearity was visually inspected from the scatter plots (see plots in the “Figures: Scatter Plots” section).

  2. Normality was tested using (a) the Shapiro-Wilk normality test and

    1. visually inspected using a normality plot.
    • The Shapiro-Wilk normality test will show two values (i.e., W and p) and each test uses the following hypotheses: HN: the data are normally distributed and HA: the data are not normally distributed.

    • The normality plots used were Q-Q plots (quantile-quantile plots), which draw the correlation between a given sample and the theoretical normal distribution.

(a) Shapiro-Wilk Normality Test

The table depicts the results of the Shapiro-Wilks normality test for each measure. (click to see code)

# create a table to show results of all normality tests
corrs_reg_norm_test_sona_all <- 
  as.data.frame(cbind(c("NMPQ", "SAD", "SAD_dep", "SAD_access", "SAD_ea", "SAD_dist", "age", "SRS", "DASS_D", 
                        "DASS_A", "DASS_S", "BIS", "SSEIT", "RSES", "NEO_N", "NEO_E", "NEO_O", "NEO_A", "NEO_C"), 
                 rbind(c(shapiro.test(SONA_data$NMPQ_sum)$statistic, shapiro.test(SONA_data$NMPQ_sum)$p.value), # W & p-value for NMPQ_sum
                 c(shapiro.test(SONA_data$SAD_sum)$statistic, shapiro.test(SONA_data$SAD_sum)$p.value), # W & p-value for SAD_sum
                 c(shapiro.test(SONA_data$SAD_dep_sum)$statistic, shapiro.test(SONA_data$SAD_dep_sum)$p.value), # W & p-value for SAD_dep_sum
                 c(shapiro.test(SONA_data$SAD_access_sum)$statistic, shapiro.test(SONA_data$SAD_access_sum)$p.value), # W & p-value for SAD_access_sum
                 c(shapiro.test(SONA_data$SAD_ea_sum)$statistic, shapiro.test(SONA_data$SAD_ea_sum)$p.value), # W & p-value for SAD_ea_sum
                 c(shapiro.test(SONA_data$SAD_dist_sum)$statistic, shapiro.test(SONA_data$SAD_dist_sum)$p.value), # W & p-value for SAD_dist_sum
                 c(shapiro.test(SONA_data$age)$statistic, shapiro.test(SONA_data$age)$p.value), # W & p-value for age
                 c(shapiro.test(SONA_data$SRS_sum)$statistic, shapiro.test(SONA_data$SRS_sum)$p.value), # W & p-value for SRS_sum
                 c(shapiro.test(SONA_data$DASS_D_sum)$statistic, shapiro.test(SONA_data$DASS_D_sum)$p.value), # W & p-value for DASS_D_sum
                 c(shapiro.test(SONA_data$DASS_A_sum)$statistic, shapiro.test(SONA_data$DASS_A_sum)$p.value), # W & p-value for DASS_A_sum
                 c(shapiro.test(SONA_data$DASS_S_sum)$statistic, shapiro.test(SONA_data$DASS_S_sum)$p.value), # W & p-value for DASS_S_sum
                 c(shapiro.test(SONA_data$BIS_sum)$statistic, shapiro.test(SONA_data$BIS_sum)$p.value), # W & p-value for BIS_sum
                 c(shapiro.test(SONA_data$SSEIT_sum)$statistic, shapiro.test(SONA_data$SSEIT_sum)$p.value), # W & p-value for SSEIT_sum
                 c(shapiro.test(SONA_data$RSES_sum)$statistic, shapiro.test(SONA_data$RSES_sum)$p.value), # W & p-value for RSES_sum
                 c(shapiro.test(SONA_data$NEO_N_sum)$statistic, shapiro.test(SONA_data$NEO_N_sum)$p.value), # W & p-value for NEO_N_sum
                 c(shapiro.test(SONA_data$NEO_E_sum)$statistic, shapiro.test(SONA_data$NEO_E_sum)$p.value), # W & p-value for NEO_E_sum
                 c(shapiro.test(SONA_data$NEO_O_sum)$statistic, shapiro.test(SONA_data$NEO_O_sum)$p.value), # W & p-value for NEO_O_sum
                 c(shapiro.test(SONA_data$NEO_A_sum)$statistic, shapiro.test(SONA_data$NEO_A_sum)$p.value), # W & p-value for NEO_A_sum
                 c(shapiro.test(SONA_data$NEO_C_sum)$statistic, shapiro.test(SONA_data$NEO_C_sum)$p.value) # W & p-value for NEO_C_sum
                 )))
  colnames(corrs_reg_norm_test_sona_all) <- c("Measure", "W", "p")
  # make cols numeric & round to 3 decimals
  corrs_reg_norm_test_sona_all$W <- as.numeric(corrs_reg_norm_test_sona_all$W) %>% round(.,3)
  corrs_reg_norm_test_sona_all$p <- as.numeric(corrs_reg_norm_test_sona_all$p) %>% round(.,3)

corrs_reg_norm_test_mturk_all <- 
  as.data.frame(cbind(c("NMPQ", "SAD", "SAD_dep", "SAD_access", "SAD_ea", "SAD_dist", "age", "SRS", "DASS_D", 
                        "DASS_A", "DASS_S", "BIS", "SSEIT", "RSES", "NEO_N", "NEO_E", "NEO_O", "NEO_A", "NEO_C"), 
                 rbind(c(shapiro.test(Mturk_data$NMPQ_sum)$statistic, shapiro.test(Mturk_data$NMPQ_sum)$p.value), # W & p-value for NMPQ_sum
                 c(shapiro.test(Mturk_data$SAD_sum)$statistic, shapiro.test(Mturk_data$SAD_sum)$p.value), # W & p-value for SAD_sum
                 c(shapiro.test(Mturk_data$SAD_dep_sum)$statistic, shapiro.test(Mturk_data$SAD_dep_sum)$p.value), # W & p-value for SAD_dep_sum
                 c(shapiro.test(Mturk_data$SAD_access_sum)$statistic, shapiro.test(Mturk_data$SAD_access_sum)$p.value), # W & p-value for SAD_access_sum
                 c(shapiro.test(Mturk_data$SAD_ea_sum)$statistic, shapiro.test(Mturk_data$SAD_ea_sum)$p.value), # W & p-value for SAD_ea_sum
                 c(shapiro.test(Mturk_data$SAD_dist_sum)$statistic, shapiro.test(Mturk_data$SAD_dist_sum)$p.value), # W & p-value for SAD_dist_sum
                 c(shapiro.test(Mturk_data$age)$statistic, shapiro.test(Mturk_data$age)$p.value), # W & p-value for age
                 c(shapiro.test(Mturk_data$SRS_sum)$statistic, shapiro.test(Mturk_data$SRS_sum)$p.value), # W & p-value for SRS_sum
                 c(shapiro.test(Mturk_data$DASS_D_sum)$statistic, shapiro.test(Mturk_data$DASS_D_sum)$p.value), # W & p-value for DASS_D_sum
                 c(shapiro.test(Mturk_data$DASS_A_sum)$statistic, shapiro.test(Mturk_data$DASS_A_sum)$p.value), # W & p-value for DASS_A_sum
                 c(shapiro.test(Mturk_data$DASS_S_sum)$statistic, shapiro.test(Mturk_data$DASS_S_sum)$p.value), # W & p-value for DASS_S_sum
                 c(shapiro.test(Mturk_data$BIS_sum)$statistic, shapiro.test(Mturk_data$BIS_sum)$p.value), # W & p-value for BIS_sum
                 c(shapiro.test(Mturk_data$SSEIT_sum)$statistic, shapiro.test(Mturk_data$SSEIT_sum)$p.value), # W & p-value for SSEIT_sum
                 c(shapiro.test(Mturk_data$RSES_sum)$statistic, shapiro.test(Mturk_data$RSES_sum)$p.value), # W & p-value for RSES_sum
                 c(shapiro.test(Mturk_data$NEO_N_sum)$statistic, shapiro.test(Mturk_data$NEO_N_sum)$p.value), # W & p-value for NEO_N_sum
                 c(shapiro.test(Mturk_data$NEO_E_sum)$statistic, shapiro.test(Mturk_data$NEO_E_sum)$p.value), # W & p-value for NEO_E_sum
                 c(shapiro.test(Mturk_data$NEO_O_sum)$statistic, shapiro.test(Mturk_data$NEO_O_sum)$p.value), # W & p-value for NEO_O_sum
                 c(shapiro.test(Mturk_data$NEO_A_sum)$statistic, shapiro.test(Mturk_data$NEO_A_sum)$p.value), # W & p-value for NEO_A_sum
                 c(shapiro.test(Mturk_data$NEO_C_sum)$statistic, shapiro.test(Mturk_data$NEO_C_sum)$p.value) # W & p-value for NEO_C_sum
                 )))
  colnames(corrs_reg_norm_test_mturk_all) <- c("Measure", "W", "p")
  # make cols numeric & round to 3 decimals
  corrs_reg_norm_test_mturk_all$W <- as.numeric(corrs_reg_norm_test_mturk_all$W) %>% round(.,3)
  corrs_reg_norm_test_mturk_all$p <- as.numeric(corrs_reg_norm_test_mturk_all$p) %>% round(.,3)
  
# join into 1 large table
corrs_reg_norm_tests_t <- cbind(corrs_reg_norm_test_sona_all, corrs_reg_norm_test_mturk_all[,2:3])

As seen in the table, most measures showed a significant result, indicating non-normality. The visual inspection of the Q-Q plots was completed next.

# show table using kable
kable(corrs_reg_norm_tests_t, caption = "Shapiro-Wilks Normality Test for All Measures", align = rep('lcccc')) %>% 
  kable_paper(full_width = F) %>%
  add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  pack_rows("Criterion(s)", 1, 6) %>%
  # column_spec(1, width = "10em") %>% 
  pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Shapiro-Wilks Normality Test for All Measures
SONA
Mturk
Measure W p W p
Criterion(s)
NMPQ 0.986 0.017 0.952 0
SAD 0.973 0.000 0.958 0
SAD_dep 0.966 0.000 0.935 0
SAD_access 0.968 0.000 0.936 0
SAD_ea 0.977 0.001 0.964 0
SAD_dist 0.950 0.000 0.951 0
Predictor(s)
age 0.558 0.000 0.866 0
SRS 0.985 0.013 0.971 0
DASS_D 0.936 0.000 0.890 0
DASS_A 0.954 0.000 0.879 0
DASS_S 0.981 0.002 0.924 0
BIS 0.989 0.056 0.971 0
SSEIT 0.963 0.000 0.987 0
RSES 0.980 0.002 0.959 0
NEO_N 0.995 0.647 0.963 0
NEO_E 0.990 0.089 0.978 0
NEO_O 0.991 0.121 0.962 0
NEO_A 0.979 0.001 0.956 0
NEO_C 0.995 0.546 0.974 0
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

(b) Q-Q Plots

Overall, the Q-Q plots show the data for all measures except age and age of first smartphone did fall along or close to the line. The age measures were not expected to be normally distributed; therefore, the analysis was completed for each measure. (click to see code)

# SONA - All
grid.arrange(ggqqplot(SONA_data$NMPQ_sum, ylab = "NMPQ"),
             ggqqplot(SONA_data$SAD_sum, ylab = "SAD"),
             ggqqplot(SONA_data$SAD_dep_sum, ylab = "SAD_dep"),
             ggqqplot(SONA_data$SAD_access_sum, ylab = "SAD_access"),
             ggqqplot(SONA_data$SAD_ea_sum, ylab = "SAD_ea"),
             ggqqplot(SONA_data$SAD_dist_sum, ylab = "SAD_dist"),
             ggqqplot(SONA_data$age, ylab = "age"),
             ggqqplot(SONA_data$SRS_sum, ylab = "SRS"),
             ggqqplot(SONA_data$DASS_D_sum, ylab = "DASS_D"),
             ggqqplot(SONA_data$DASS_A_sum, ylab = "DASS_A"),
             ggqqplot(SONA_data$DASS_S_sum, ylab = "DASS_S"),
             ggqqplot(SONA_data$BIS_sum, ylab = "BIS"),
             ggqqplot(SONA_data$SSEIT_sum, ylab = "SSEIT"),
             ggqqplot(SONA_data$RSES_sum, ylab = "RSES"),
             ggqqplot(SONA_data$NEO_N_sum, ylab = "NEO_N"),
             ggqqplot(SONA_data$NEO_E_sum, ylab = "NEO_E"),
             ggqqplot(SONA_data$NEO_O_sum, ylab = "NEO_O"),
             ggqqplot(SONA_data$NEO_A_sum, ylab = "NEO_A"),
             ggqqplot(SONA_data$NEO_C_sum, ylab = "NEO_C"),
             nrow = 4,
             top = text_grob("Q-Q Plots For SONA - ALL", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to the line.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

# for MTURK - ALL
grid.arrange(ggqqplot(Mturk_data$NMPQ_sum, ylab = "NMPQ"),
             ggqqplot(Mturk_data$SAD_sum, ylab = "SAD"),
             ggqqplot(Mturk_data$SAD_dep_sum, ylab = "SAD_dep"),
             ggqqplot(Mturk_data$SAD_access_sum, ylab = "SAD_access"),
             ggqqplot(Mturk_data$SAD_ea_sum, ylab = "SAD_ea"),
             ggqqplot(Mturk_data$SAD_dist_sum, ylab = "SAD_dist"),
             ggqqplot(Mturk_data$age, ylab = "age"),
             ggqqplot(Mturk_data$SRS_sum, ylab = "SRS"),
             ggqqplot(Mturk_data$DASS_D_sum, ylab = "DASS_D"),
             ggqqplot(Mturk_data$DASS_A_sum, ylab = "DASS_A"),
             ggqqplot(Mturk_data$DASS_S_sum, ylab = "DASS_S"),
             ggqqplot(Mturk_data$BIS_sum, ylab = "BIS"),
             ggqqplot(Mturk_data$SSEIT_sum, ylab = "SSEIT"),
             ggqqplot(Mturk_data$RSES_sum, ylab = "RSES"),
             ggqqplot(Mturk_data$NEO_N_sum, ylab = "NEO_N"),
             ggqqplot(Mturk_data$NEO_E_sum, ylab = "NEO_E"),
             ggqqplot(Mturk_data$NEO_O_sum, ylab = "NEO_O"),
             ggqqplot(Mturk_data$NEO_A_sum, ylab = "NEO_A"),
             ggqqplot(Mturk_data$NEO_C_sum, ylab = "NEO_C"),
             nrow = 4,
             top = text_grob("Q-Q Plots For Mturk - ALL", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to the line.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

(c) Histogram Plots

Overall, the Q-Q plots show the data for all measures except age and age of first smartphone did fall along or close to the line. The age measures were not expected to be normally distributed; therefore, the analysis was completed for each measure. (click to see code)

# SONA - All
grid.arrange(qplot(SONA_data$NMPQ_sum, main = "NMPQ", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
               # qplot(SONA_data$NMPQ_sum, geom = "density"),
             qplot(SONA_data$SAD_sum, main = "SAD", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$SAD_dep_sum, main = "SAD_dep", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$SAD_access_sum, main = "SAD_access", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$SAD_ea_sum, main = "SAD_ea", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$SAD_dist_sum, main = "SAD_dist", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$age, main = "age", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$SRS_sum, main = "SRS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$DASS_D_sum, main = "DASS_D", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$DASS_A_sum, main = "DASS_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$DASS_S_sum, main = "DASS_S", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$BIS_sum, main = "BIS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$SSEIT_sum, main = "SSEIT", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$RSES_sum, main = "RSES", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$NEO_N_sum, main = "NEO_N", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$NEO_E_sum, main = "NEO_E", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$NEO_O_sum, main = "NEO_O", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$NEO_A_sum, main = "NEO_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(SONA_data$NEO_C_sum, main = "NEO_C", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             nrow = 4,
             top = text_grob("Histogram For SONA Data - ALL", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to a normal curve.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

# for MTURK - ALL
grid.arrange(qplot(Mturk_data$NMPQ_sum, main = "NMPQ", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
               # qplot(Mturk_data$NMPQ_sum, geom = "density"),
             qplot(Mturk_data$SAD_sum, main = "SAD", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$SAD_dep_sum, main = "SAD_dep", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$SAD_access_sum, main = "SAD_access", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$SAD_ea_sum, main = "SAD_ea", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$SAD_dist_sum, main = "SAD_dist", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$age, main = "age", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$SRS_sum, main = "SRS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$DASS_D_sum, main = "DASS_D", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$DASS_A_sum, main = "DASS_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$DASS_S_sum, main = "DASS_S", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$BIS_sum, main = "BIS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$SSEIT_sum, main = "SSEIT", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$RSES_sum, main = "RSES", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$NEO_N_sum, main = "NEO_N", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$NEO_E_sum, main = "NEO_E", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$NEO_O_sum, main = "NEO_O", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$NEO_A_sum, main = "NEO_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot(Mturk_data$NEO_C_sum, main = "NEO_C", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             nrow = 4,
             top = text_grob("Histogram For Mturk Data - ALL", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to a normal curve.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

Correlations

Get correlations b/w all cont vars for (1) all data and (2) ST data only.

All Data

All data collected was analyzed. This was done for 240SONA ps and 505 Mturk ps. ####

Study 1: SONA

sona_corr <- 
  SONA_data %>% 
  # select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, ends_with("_sum")) %>%
  select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, 
         NMPQ_sum, 
         SAD_sum, SAD_dep_sum, SAD_ea_sum, SAD_access_sum, SAD_dist_sum, # add or remove the SAD subscales / overall
         BIS_sum, NEO_O_sum, NEO_C_sum, NEO_E_sum, NEO_A_sum, NEO_N_sum, RSES_sum, SRS_sum, SSEIT_sum, DASS_D_sum, DASS_A_sum, DASS_S_sum) %>% 
  as.matrix() %>% 
  Hmisc::rcorr(type = c("pearson"))

# create new pilot_corr to shown only lower triangle... 
sona_corr2 <- sona_corr
# round to 4 decimals... 
sona_corr2$r <- round(sona_corr2$r, 4)
sona_corr2$P <- round(sona_corr2$P, 4)
sona_corr2$n <- round(sona_corr2$n, 4)
# remove upper triangle form r, p, and n
sona_corr2$r[upper.tri(sona_corr2$r)] <- "-"
sona_corr2$P[upper.tri(sona_corr2$P)] <- "-"
sona_corr2$n[upper.tri(sona_corr2$n)] <- "-"

# show corr table with flattenCorr

kable(flattenCorrMatrix(sona_corr$r, sona_corr$P), caption = "SONA Study - Correlation: Flat") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - Correlation: Flat
row column cor p
age age_first_phone 0.4300488 0.0000000
age com_gen -0.0599132 0.3554048
age_first_phone com_gen 0.0215331 0.7399748
age com_unattended 0.0183562 0.7772438
age_first_phone com_unattended 0.0074128 0.9090465
com_gen com_unattended 0.4017642 0.0000000
age com_leave_with_others 0.0117777 0.8559655
age_first_phone com_leave_with_others 0.0191250 0.7681750
com_gen com_leave_with_others 0.5682967 0.0000000
com_unattended com_leave_with_others 0.6171960 0.0000000
age com_locked 0.0069082 0.9152143
age_first_phone com_locked -0.0633861 0.3281580
com_gen com_locked -0.1784642 0.0055608
com_unattended com_locked -0.1536191 0.0172383
com_leave_with_others com_locked -0.1951349 0.0023936
age com_room_task -0.0240317 0.7110788
age_first_phone com_room_task 0.0008542 0.9894970
com_gen com_room_task 0.3293886 0.0000002
com_unattended com_room_task 0.4198734 0.0000000
com_leave_with_others com_room_task 0.3999034 0.0000000
com_locked com_room_task 0.0257332 0.6916322
age dist_daily -0.1596456 0.0132786
age_first_phone dist_daily -0.1394654 0.0307823
com_gen dist_daily 0.0730332 0.2597325
com_unattended dist_daily 0.1211658 0.0609024
com_leave_with_others dist_daily 0.0402706 0.5346888
com_locked dist_daily 0.2035550 0.0015231
com_room_task dist_daily 0.0788017 0.2238670
age dist_study -0.0304961 0.6382929
age_first_phone dist_study -0.0535348 0.4090199
com_gen dist_study -0.1113694 0.0851276
com_unattended dist_study -0.1455671 0.0241102
com_leave_with_others dist_study -0.1070472 0.0980326
com_locked dist_study -0.0808652 0.2119347
com_room_task dist_study -0.1514769 0.0188754
dist_daily dist_study 0.2723053 0.0000189
age NMPQ_sum 0.0093923 0.8849095
age_first_phone NMPQ_sum -0.0411515 0.5257823
com_gen NMPQ_sum -0.1420353 0.0278012
com_unattended NMPQ_sum -0.1826748 0.0045235
com_leave_with_others NMPQ_sum -0.1949332 0.0024191
com_locked NMPQ_sum 0.1766327 0.0060751
com_room_task NMPQ_sum -0.1548200 0.0163758
dist_daily NMPQ_sum 0.2413819 0.0001594
dist_study NMPQ_sum 0.2220665 0.0005290
age SAD_sum 0.0274749 0.6719326
age_first_phone SAD_sum -0.0583682 0.3679698
com_gen SAD_sum -0.1258482 0.0515106
com_unattended SAD_sum -0.1367342 0.0342453
com_leave_with_others SAD_sum -0.1913247 0.0029198
com_locked SAD_sum 0.2473563 0.0001078
com_room_task SAD_sum -0.1610043 0.0125051
dist_daily SAD_sum 0.3377313 0.0000001
dist_study SAD_sum 0.1791606 0.0053757
NMPQ_sum SAD_sum 0.7625426 0.0000000
age SAD_dep_sum 0.0567414 0.3814926
age_first_phone SAD_dep_sum -0.0350934 0.5885129
com_gen SAD_dep_sum -0.1620583 0.0119327
com_unattended SAD_dep_sum -0.1589033 0.0137187
com_leave_with_others SAD_dep_sum -0.2325118 0.0002800
com_locked SAD_dep_sum 0.2083905 0.0011653
com_room_task SAD_dep_sum -0.2362370 0.0002216
dist_daily SAD_dep_sum 0.2598712 0.0000460
dist_study SAD_dep_sum 0.1382921 0.0322315
NMPQ_sum SAD_dep_sum 0.6813126 0.0000000
SAD_sum SAD_dep_sum 0.8510905 0.0000000
age SAD_ea_sum 0.0482939 0.4564567
age_first_phone SAD_ea_sum -0.0303744 0.6396346
com_gen SAD_ea_sum -0.0853338 0.1876752
com_unattended SAD_ea_sum -0.1452699 0.0244036
com_leave_with_others SAD_ea_sum -0.1110620 0.0859978
com_locked SAD_ea_sum 0.1897067 0.0031734
com_room_task SAD_ea_sum -0.0802177 0.2156287
dist_daily SAD_ea_sum 0.2087366 0.0011429
dist_study SAD_ea_sum 0.1269488 0.0494873
NMPQ_sum SAD_ea_sum 0.5726592 0.0000000
SAD_sum SAD_ea_sum 0.8217898 0.0000000
SAD_dep_sum SAD_ea_sum 0.5384308 0.0000000
age SAD_access_sum -0.0040263 0.9505232
age_first_phone SAD_access_sum -0.1122011 0.0828085
com_gen SAD_access_sum -0.0956170 0.1396905
com_unattended SAD_access_sum -0.0730763 0.2594502
com_leave_with_others SAD_access_sum -0.1540071 0.0169554
com_locked SAD_access_sum 0.1996798 0.0018795
com_room_task SAD_access_sum -0.1059259 0.1016225
dist_daily SAD_access_sum 0.2788222 0.0000116
dist_study SAD_access_sum 0.1369898 0.0339077
NMPQ_sum SAD_access_sum 0.6630604 0.0000000
SAD_sum SAD_access_sum 0.8084499 0.0000000
SAD_dep_sum SAD_access_sum 0.6060057 0.0000000
SAD_ea_sum SAD_access_sum 0.5514611 0.0000000
age SAD_dist_sum -0.0369365 0.5690682
age_first_phone SAD_dist_sum 0.0173090 0.7896461
com_gen SAD_dist_sum -0.0447252 0.4904412
com_unattended SAD_dist_sum -0.0161877 0.8029846
com_leave_with_others SAD_dist_sum -0.0677277 0.2960432
com_locked SAD_dist_sum 0.1927820 0.0027073
com_room_task SAD_dist_sum -0.0764851 0.2378228
dist_daily SAD_dist_sum 0.3818491 0.0000000
dist_study SAD_dist_sum 0.1756978 0.0063537
NMPQ_sum SAD_dist_sum 0.4194250 0.0000000
SAD_sum SAD_dist_sum 0.6585923 0.0000000
SAD_dep_sum SAD_dist_sum 0.4259424 0.0000000
SAD_ea_sum SAD_dist_sum 0.5276916 0.0000000
SAD_access_sum SAD_dist_sum 0.3680577 0.0000000
age BIS_sum 0.0240188 0.7112273
age_first_phone BIS_sum -0.0619101 0.3395692
com_gen BIS_sum -0.0830296 0.1999170
com_unattended BIS_sum -0.0296826 0.6472819
com_leave_with_others BIS_sum -0.0177417 0.7845156
com_locked BIS_sum -0.0941162 0.1460410
com_room_task BIS_sum -0.0156805 0.8090371
dist_daily BIS_sum 0.0472866 0.4659137
dist_study BIS_sum 0.2362691 0.0002211
NMPQ_sum BIS_sum 0.0346417 0.5933242
SAD_sum BIS_sum 0.0825858 0.2023398
SAD_dep_sum BIS_sum 0.0915046 0.1576119
SAD_ea_sum BIS_sum 0.0455693 0.4822828
SAD_access_sum BIS_sum 0.0197556 0.7607588
SAD_dist_sum BIS_sum 0.1079446 0.0952328
age NEO_O_sum 0.0106113 0.8700966
age_first_phone NEO_O_sum 0.0464285 0.4740539
com_gen NEO_O_sum 0.0650061 0.3159216
com_unattended NEO_O_sum 0.0755997 0.2433149
com_leave_with_others NEO_O_sum 0.0448314 0.4894105
com_locked NEO_O_sum 0.1023098 0.1139118
com_room_task NEO_O_sum 0.1219217 0.0592972
dist_daily NEO_O_sum 0.2223091 0.0005214
dist_study NEO_O_sum -0.0361045 0.5778073
NMPQ_sum NEO_O_sum -0.0605416 0.3503728
SAD_sum NEO_O_sum -0.0186757 0.7734712
SAD_dep_sum NEO_O_sum -0.1476851 0.0221057
SAD_ea_sum NEO_O_sum -0.0268915 0.6785069
SAD_access_sum NEO_O_sum 0.0699757 0.2802655
SAD_dist_sum NEO_O_sum 0.1324435 0.0403514
BIS_sum NEO_O_sum 0.0254176 0.6952244
age NEO_C_sum 0.0385834 0.5519552
age_first_phone NEO_C_sum 0.0378626 0.5594144
com_gen NEO_C_sum 0.0479522 0.4596525
com_unattended NEO_C_sum 0.0754146 0.2444740
com_leave_with_others NEO_C_sum 0.0340683 0.5994572
com_locked NEO_C_sum 0.1189557 0.0658020
com_room_task NEO_C_sum 0.0273445 0.6734001
dist_daily NEO_C_sum 0.0004800 0.9940978
dist_study NEO_C_sum -0.1070064 0.0981616
NMPQ_sum NEO_C_sum -0.0029408 0.9638511
SAD_sum NEO_C_sum -0.0335509 0.6050159
SAD_dep_sum NEO_C_sum -0.0909739 0.1600454
SAD_ea_sum NEO_C_sum -0.0161619 0.8032928
SAD_access_sum NEO_C_sum 0.0498851 0.4417387
SAD_dist_sum NEO_C_sum -0.0023599 0.9709883
BIS_sum NEO_C_sum -0.6874698 0.0000000
NEO_O_sum NEO_C_sum 0.0455627 0.4823461
age NEO_E_sum -0.0951073 0.1418231
age_first_phone NEO_E_sum -0.1162831 0.0721532
com_gen NEO_E_sum 0.2432736 0.0001410
com_unattended NEO_E_sum 0.1490207 0.0209172
com_leave_with_others NEO_E_sum 0.1914719 0.0028977
com_locked NEO_E_sum 0.1226303 0.0578243
com_room_task NEO_E_sum 0.1369061 0.0340179
dist_daily NEO_E_sum 0.2050855 0.0014002
dist_study NEO_E_sum 0.0382056 0.5558583
NMPQ_sum NEO_E_sum 0.0323498 0.6180083
SAD_sum NEO_E_sum 0.0368995 0.5694550
SAD_dep_sum NEO_E_sum -0.0446987 0.4906988
SAD_ea_sum NEO_E_sum 0.0845724 0.1916580
SAD_access_sum NEO_E_sum 0.0442860 0.4947153
SAD_dist_sum NEO_E_sum 0.1106772 0.0870972
BIS_sum NEO_E_sum -0.2004918 0.0017990
NEO_O_sum NEO_E_sum 0.3003354 0.0000022
NEO_C_sum NEO_E_sum 0.4089694 0.0000000
age NEO_A_sum 0.1463623 0.0233400
age_first_phone NEO_A_sum 0.1243601 0.0543551
com_gen NEO_A_sum 0.2239333 0.0004731
com_unattended NEO_A_sum 0.1199072 0.0636545
com_leave_with_others NEO_A_sum 0.1781255 0.0056529
com_locked NEO_A_sum 0.0924528 0.1533337
com_room_task NEO_A_sum 0.1717988 0.0076427
dist_daily NEO_A_sum 0.1637237 0.0110752
dist_study NEO_A_sum -0.1541330 0.0168645
NMPQ_sum NEO_A_sum 0.0376060 0.5620811
SAD_sum NEO_A_sum -0.0137490 0.8321877
SAD_dep_sum NEO_A_sum -0.0537918 0.4067714
SAD_ea_sum NEO_A_sum -0.0764009 0.2383416
SAD_access_sum NEO_A_sum 0.0771512 0.2337488
SAD_dist_sum NEO_A_sum 0.0362321 0.5764635
BIS_sum NEO_A_sum -0.2752500 0.0000152
NEO_O_sum NEO_A_sum 0.3069601 0.0000012
NEO_C_sum NEO_A_sum 0.3607763 0.0000000
NEO_E_sum NEO_A_sum 0.2104222 0.0010395
age NEO_N_sum 0.1411576 0.0287903
age_first_phone NEO_N_sum 0.0823756 0.2034948
com_gen NEO_N_sum -0.0805619 0.2136596
com_unattended NEO_N_sum 0.0035464 0.9564141
com_leave_with_others NEO_N_sum -0.0520289 0.4223424
com_locked NEO_N_sum -0.0024103 0.9703695
com_room_task NEO_N_sum -0.0258418 0.6903971
dist_daily NEO_N_sum 0.0651281 0.3150124
dist_study NEO_N_sum 0.0897709 0.1656661
NMPQ_sum NEO_N_sum 0.2438789 0.0001355
SAD_sum NEO_N_sum 0.2365534 0.0002172
SAD_dep_sum NEO_N_sum 0.1818527 0.0047112
SAD_ea_sum NEO_N_sum 0.1627066 0.0115921
SAD_access_sum NEO_N_sum 0.2412295 0.0001610
SAD_dist_sum NEO_N_sum 0.1598343 0.0131687
BIS_sum NEO_N_sum 0.3391693 0.0000001
NEO_O_sum NEO_N_sum 0.0322652 0.6189275
NEO_C_sum NEO_N_sum -0.3168889 0.0000005
NEO_E_sum NEO_N_sum -0.3320323 0.0000001
NEO_A_sum NEO_N_sum 0.0474295 0.4645651
age RSES_sum -0.0259072 0.6896541
age_first_phone RSES_sum 0.0102024 0.8750602
com_gen RSES_sum -0.1096555 0.0900712
com_unattended RSES_sum -0.0541899 0.4033028
com_leave_with_others RSES_sum -0.0253261 0.6962669
com_locked RSES_sum -0.1349066 0.0367428
com_room_task RSES_sum -0.0594664 0.3590108
dist_daily RSES_sum -0.0417275 0.5199998
dist_study RSES_sum -0.0321157 0.6205549
NMPQ_sum RSES_sum 0.0967666 0.1349705
SAD_sum RSES_sum 0.0919870 0.1554243
SAD_dep_sum RSES_sum 0.0964267 0.1363531
SAD_ea_sum RSES_sum 0.0589719 0.3630277
SAD_access_sum RSES_sum 0.1140016 0.0779619
SAD_dist_sum RSES_sum -0.0088131 0.8919623
BIS_sum RSES_sum 0.1212277 0.0607696
NEO_O_sum RSES_sum -0.0508590 0.4328646
NEO_C_sum RSES_sum -0.2283918 0.0003611
NEO_E_sum RSES_sum -0.4019877 0.0000000
NEO_A_sum RSES_sum 0.0254546 0.6948027
NEO_N_sum RSES_sum 0.4484059 0.0000000
age SRS_sum -0.1278829 0.0478225
age_first_phone SRS_sum 0.0046487 0.9428873
com_gen SRS_sum 0.2514077 0.0000822
com_unattended SRS_sum 0.1244597 0.0541608
com_leave_with_others SRS_sum 0.1954156 0.0023585
com_locked SRS_sum -0.0078757 0.9033941
com_room_task SRS_sum 0.1607153 0.0126662
dist_daily SRS_sum -0.0949802 0.1423588
dist_study SRS_sum -0.1962918 0.0022518
NMPQ_sum SRS_sum -0.1750881 0.0065414
SAD_sum SRS_sum -0.1568388 0.0150107
SAD_dep_sum SRS_sum -0.1623732 0.0117661
SAD_ea_sum SRS_sum -0.0705365 0.2764192
SAD_access_sum SRS_sum -0.1001034 0.1219633
SAD_dist_sum SRS_sum -0.1725915 0.0073631
BIS_sum SRS_sum -0.4909803 0.0000000
NEO_O_sum SRS_sum -0.0287322 0.6578487
NEO_C_sum SRS_sum 0.3799657 0.0000000
NEO_E_sum SRS_sum 0.2641515 0.0000340
NEO_A_sum SRS_sum 0.0555717 0.3914002
NEO_N_sum SRS_sum -0.3925108 0.0000000
RSES_sum SRS_sum -0.2805139 0.0000102
age SSEIT_sum 0.0712568 0.2715323
age_first_phone SSEIT_sum 0.0327748 0.6133972
com_gen SSEIT_sum 0.2080908 0.0011850
com_unattended SSEIT_sum 0.1662271 0.0098884
com_leave_with_others SSEIT_sum 0.1410947 0.0288623
com_locked SSEIT_sum 0.1978097 0.0020774
com_room_task SSEIT_sum 0.1253856 0.0523814
dist_daily SSEIT_sum 0.2859003 0.0000068
dist_study SSEIT_sum 0.0088705 0.8912624
NMPQ_sum SSEIT_sum 0.1239614 0.0551391
SAD_sum SSEIT_sum 0.1921045 0.0028043
SAD_dep_sum SSEIT_sum 0.0704950 0.2767029
SAD_ea_sum SSEIT_sum 0.1551991 0.0161115
SAD_access_sum SSEIT_sum 0.2023550 0.0016262
SAD_dist_sum SSEIT_sum 0.2417069 0.0001561
BIS_sum SSEIT_sum -0.2918925 0.0000042
NEO_O_sum SSEIT_sum 0.3667766 0.0000000
NEO_C_sum SSEIT_sum 0.4292255 0.0000000
NEO_E_sum SSEIT_sum 0.6081244 0.0000000
NEO_A_sum SSEIT_sum 0.4076831 0.0000000
NEO_N_sum SSEIT_sum -0.1474491 0.0223217
RSES_sum SSEIT_sum -0.3134390 0.0000007
SRS_sum SSEIT_sum 0.2389500 0.0001864
age DASS_D_sum 0.0148984 0.8183923
age_first_phone DASS_D_sum 0.0024662 0.9696826
com_gen DASS_D_sum -0.1131201 0.0803051
com_unattended DASS_D_sum -0.0037829 0.9535104
com_leave_with_others DASS_D_sum -0.0885041 0.1717428
com_locked DASS_D_sum -0.0699043 0.2807577
com_room_task DASS_D_sum -0.1007284 0.1196388
dist_daily DASS_D_sum -0.0413880 0.5234046
dist_study DASS_D_sum 0.0384320 0.5535183
NMPQ_sum DASS_D_sum 0.0691010 0.2863358
SAD_sum DASS_D_sum 0.1322150 0.0407008
SAD_dep_sum DASS_D_sum 0.0484072 0.4553999
SAD_ea_sum DASS_D_sum 0.1782271 0.0056251
SAD_access_sum DASS_D_sum 0.1432873 0.0264409
SAD_dist_sum DASS_D_sum 0.0452892 0.4849813
BIS_sum DASS_D_sum 0.2956870 0.0000031
NEO_O_sum DASS_D_sum 0.0189184 0.7706088
NEO_C_sum DASS_D_sum -0.2775303 0.0000128
NEO_E_sum DASS_D_sum -0.2851010 0.0000072
NEO_A_sum DASS_D_sum -0.1094061 0.0908093
NEO_N_sum DASS_D_sum 0.4298114 0.0000000
RSES_sum DASS_D_sum 0.4907444 0.0000000
SRS_sum DASS_D_sum -0.3507570 0.0000000
SSEIT_sum DASS_D_sum -0.2993032 0.0000023
age DASS_A_sum 0.0395386 0.5421467
age_first_phone DASS_A_sum -0.0290693 0.6540926
com_gen DASS_A_sum -0.1922405 0.0027846
com_unattended DASS_A_sum -0.0180951 0.7803317
com_leave_with_others DASS_A_sum -0.1132487 0.0799600
com_locked DASS_A_sum -0.1348823 0.0367770
com_room_task DASS_A_sum -0.1503658 0.0197765
dist_daily DASS_A_sum -0.1305603 0.0433079
dist_study DASS_A_sum 0.1868945 0.0036621
NMPQ_sum DASS_A_sum 0.0907227 0.1612071
SAD_sum DASS_A_sum 0.0939981 0.1465501
SAD_dep_sum DASS_A_sum 0.0480624 0.4586206
SAD_ea_sum DASS_A_sum 0.1326045 0.0401067
SAD_access_sum DASS_A_sum 0.0679631 0.2943643
SAD_dist_sum DASS_A_sum 0.0614436 0.3432281
BIS_sum DASS_A_sum 0.3240650 0.0000003
NEO_O_sum DASS_A_sum -0.0630913 0.3304175
NEO_C_sum DASS_A_sum -0.2363803 0.0002196
NEO_E_sum DASS_A_sum -0.2519562 0.0000792
NEO_A_sum DASS_A_sum -0.2622369 0.0000390
NEO_N_sum DASS_A_sum 0.3372589 0.0000001
RSES_sum DASS_A_sum 0.3130846 0.0000007
SRS_sum DASS_A_sum -0.3002108 0.0000022
SSEIT_sum DASS_A_sum -0.3449853 0.0000000
DASS_D_sum DASS_A_sum 0.6219328 0.0000000
age DASS_S_sum 0.1625733 0.0116614
age_first_phone DASS_S_sum 0.0489886 0.4499977
com_gen DASS_S_sum -0.0664499 0.3052704
com_unattended DASS_S_sum 0.0469953 0.4686686
com_leave_with_others DASS_S_sum -0.0174053 0.7885037
com_locked DASS_S_sum -0.0667873 0.3028163
com_room_task DASS_S_sum -0.0575602 0.3746487
dist_daily DASS_S_sum -0.0354474 0.5847543
dist_study DASS_S_sum 0.0951173 0.1417809
NMPQ_sum DASS_S_sum 0.1495273 0.0204810
SAD_sum DASS_S_sum 0.2020555 0.0016529
SAD_dep_sum DASS_S_sum 0.0853075 0.1878117
SAD_ea_sum DASS_S_sum 0.2536518 0.0000706
SAD_access_sum DASS_S_sum 0.1705261 0.0081112
SAD_dist_sum DASS_S_sum 0.1525665 0.0180265
BIS_sum DASS_S_sum 0.3265384 0.0000002
NEO_O_sum DASS_S_sum 0.0880843 0.1737929
NEO_C_sum DASS_S_sum -0.2433805 0.0001400
NEO_E_sum DASS_S_sum -0.1820056 0.0046758
NEO_A_sum DASS_S_sum -0.0700556 0.2797154
NEO_N_sum DASS_S_sum 0.5105424 0.0000000
RSES_sum DASS_S_sum 0.3492234 0.0000000
SRS_sum DASS_S_sum -0.3511598 0.0000000
SSEIT_sum DASS_S_sum -0.1804562 0.0050461
DASS_D_sum DASS_S_sum 0.7315613 0.0000000
DASS_A_sum DASS_S_sum 0.7262390 0.0000000

# print tables using kable
kable(as.data.frame(format(sona_corr2$r, scientific = FALSE)), caption = "SONA Study - Correlation: r values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - Correlation: r values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 1 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.43 1 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen -0.0599 0.0215 1 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 0.0184 0.0074 0.4018 1 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 0.0118 0.0191 0.5683 0.6172 1 - - - - - - - - - - - - - - - - - - - - - -
com_locked 0.0069 -0.0634 -0.1785 -0.1536 -0.1951 1 - - - - - - - - - - - - - - - - - - - - -
com_room_task -0.024 9e-04 0.3294 0.4199 0.3999 0.0257 1 - - - - - - - - - - - - - - - - - - - -
dist_daily -0.1596 -0.1395 0.073 0.1212 0.0403 0.2036 0.0788 1 - - - - - - - - - - - - - - - - - - -
dist_study -0.0305 -0.0535 -0.1114 -0.1456 -0.107 -0.0809 -0.1515 0.2723 1 - - - - - - - - - - - - - - - - - -
NMPQ_sum 0.0094 -0.0412 -0.142 -0.1827 -0.1949 0.1766 -0.1548 0.2414 0.2221 1 - - - - - - - - - - - - - - - - -
SAD_sum 0.0275 -0.0584 -0.1258 -0.1367 -0.1913 0.2474 -0.161 0.3377 0.1792 0.7625 1 - - - - - - - - - - - - - - - -
SAD_dep_sum 0.0567 -0.0351 -0.1621 -0.1589 -0.2325 0.2084 -0.2362 0.2599 0.1383 0.6813 0.8511 1 - - - - - - - - - - - - - - -
SAD_ea_sum 0.0483 -0.0304 -0.0853 -0.1453 -0.1111 0.1897 -0.0802 0.2087 0.1269 0.5727 0.8218 0.5384 1 - - - - - - - - - - - - - -
SAD_access_sum -0.004 -0.1122 -0.0956 -0.0731 -0.154 0.1997 -0.1059 0.2788 0.137 0.6631 0.8084 0.606 0.5515 1 - - - - - - - - - - - - -
SAD_dist_sum -0.0369 0.0173 -0.0447 -0.0162 -0.0677 0.1928 -0.0765 0.3818 0.1757 0.4194 0.6586 0.4259 0.5277 0.3681 1 - - - - - - - - - - - -
BIS_sum 0.024 -0.0619 -0.083 -0.0297 -0.0177 -0.0941 -0.0157 0.0473 0.2363 0.0346 0.0826 0.0915 0.0456 0.0198 0.1079 1 - - - - - - - - - - -
NEO_O_sum 0.0106 0.0464 0.065 0.0756 0.0448 0.1023 0.1219 0.2223 -0.0361 -0.0605 -0.0187 -0.1477 -0.0269 0.07 0.1324 0.0254 1 - - - - - - - - - -
NEO_C_sum 0.0386 0.0379 0.048 0.0754 0.0341 0.119 0.0273 5e-04 -0.107 -0.0029 -0.0336 -0.091 -0.0162 0.0499 -0.0024 -0.6875 0.0456 1 - - - - - - - - -
NEO_E_sum -0.0951 -0.1163 0.2433 0.149 0.1915 0.1226 0.1369 0.2051 0.0382 0.0323 0.0369 -0.0447 0.0846 0.0443 0.1107 -0.2005 0.3003 0.409 1 - - - - - - - -
NEO_A_sum 0.1464 0.1244 0.2239 0.1199 0.1781 0.0925 0.1718 0.1637 -0.1541 0.0376 -0.0137 -0.0538 -0.0764 0.0772 0.0362 -0.2753 0.307 0.3608 0.2104 1 - - - - - - -
NEO_N_sum 0.1412 0.0824 -0.0806 0.0035 -0.052 -0.0024 -0.0258 0.0651 0.0898 0.2439 0.2366 0.1819 0.1627 0.2412 0.1598 0.3392 0.0323 -0.3169 -0.332 0.0474 1 - - - - - -
RSES_sum -0.0259 0.0102 -0.1097 -0.0542 -0.0253 -0.1349 -0.0595 -0.0417 -0.0321 0.0968 0.092 0.0964 0.059 0.114 -0.0088 0.1212 -0.0509 -0.2284 -0.402 0.0255 0.4484 1 - - - - -
SRS_sum -0.1279 0.0046 0.2514 0.1245 0.1954 -0.0079 0.1607 -0.095 -0.1963 -0.1751 -0.1568 -0.1624 -0.0705 -0.1001 -0.1726 -0.491 -0.0287 0.38 0.2642 0.0556 -0.3925 -0.2805 1 - - - -
SSEIT_sum 0.0713 0.0328 0.2081 0.1662 0.1411 0.1978 0.1254 0.2859 0.0089 0.124 0.1921 0.0705 0.1552 0.2024 0.2417 -0.2919 0.3668 0.4292 0.6081 0.4077 -0.1474 -0.3134 0.2389 1 - - -
DASS_D_sum 0.0149 0.0025 -0.1131 -0.0038 -0.0885 -0.0699 -0.1007 -0.0414 0.0384 0.0691 0.1322 0.0484 0.1782 0.1433 0.0453 0.2957 0.0189 -0.2775 -0.2851 -0.1094 0.4298 0.4907 -0.3508 -0.2993 1 - -
DASS_A_sum 0.0395 -0.0291 -0.1922 -0.0181 -0.1132 -0.1349 -0.1504 -0.1306 0.1869 0.0907 0.094 0.0481 0.1326 0.068 0.0614 0.3241 -0.0631 -0.2364 -0.252 -0.2622 0.3373 0.3131 -0.3002 -0.345 0.6219 1 -
DASS_S_sum 0.1626 0.049 -0.0664 0.047 -0.0174 -0.0668 -0.0576 -0.0354 0.0951 0.1495 0.2021 0.0853 0.2537 0.1705 0.1526 0.3265 0.0881 -0.2434 -0.182 -0.0701 0.5105 0.3492 -0.3512 -0.1805 0.7316 0.7262 1
  

kable(as.data.frame(format(sona_corr2$P, scientific = FALSE)), caption = "SONA Study - Correlation: p values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - Correlation: p values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age NA - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0 NA - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 0.3554 0.74 NA - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 0.7772 0.909 0 NA - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 0.856 0.7682 0 0 NA - - - - - - - - - - - - - - - - - - - - - -
com_locked 0.9152 0.3282 0.0056 0.0172 0.0024 NA - - - - - - - - - - - - - - - - - - - - -
com_room_task 0.7111 0.9895 0 0 0 0.6916 NA - - - - - - - - - - - - - - - - - - - -
dist_daily 0.0133 0.0308 0.2597 0.0609 0.5347 0.0015 0.2239 NA - - - - - - - - - - - - - - - - - - -
dist_study 0.6383 0.409 0.0851 0.0241 0.098 0.2119 0.0189 0 NA - - - - - - - - - - - - - - - - - -
NMPQ_sum 0.8849 0.5258 0.0278 0.0045 0.0024 0.0061 0.0164 2e-04 5e-04 NA - - - - - - - - - - - - - - - - -
SAD_sum 0.6719 0.368 0.0515 0.0342 0.0029 1e-04 0.0125 0 0.0054 0 NA - - - - - - - - - - - - - - - -
SAD_dep_sum 0.3815 0.5885 0.0119 0.0137 3e-04 0.0012 2e-04 0 0.0322 0 0 NA - - - - - - - - - - - - - - -
SAD_ea_sum 0.4565 0.6396 0.1877 0.0244 0.086 0.0032 0.2156 0.0011 0.0495 0 0 0 NA - - - - - - - - - - - - - -
SAD_access_sum 0.9505 0.0828 0.1397 0.2595 0.017 0.0019 0.1016 0 0.0339 0 0 0 0 NA - - - - - - - - - - - - -
SAD_dist_sum 0.5691 0.7896 0.4904 0.803 0.296 0.0027 0.2378 0 0.0064 0 0 0 0 0 NA - - - - - - - - - - - -
BIS_sum 0.7112 0.3396 0.1999 0.6473 0.7845 0.146 0.809 0.4659 2e-04 0.5933 0.2023 0.1576 0.4823 0.7608 0.0952 NA - - - - - - - - - - -
NEO_O_sum 0.8701 0.4741 0.3159 0.2433 0.4894 0.1139 0.0593 5e-04 0.5778 0.3504 0.7735 0.0221 0.6785 0.2803 0.0404 0.6952 NA - - - - - - - - - -
NEO_C_sum 0.552 0.5594 0.4597 0.2445 0.5995 0.0658 0.6734 0.9941 0.0982 0.9639 0.605 0.16 0.8033 0.4417 0.971 0 0.4823 NA - - - - - - - - -
NEO_E_sum 0.1418 0.0722 1e-04 0.0209 0.0029 0.0578 0.034 0.0014 0.5559 0.618 0.5695 0.4907 0.1917 0.4947 0.0871 0.0018 0 0 NA - - - - - - - -
NEO_A_sum 0.0233 0.0544 5e-04 0.0637 0.0057 0.1533 0.0076 0.0111 0.0169 0.5621 0.8322 0.4068 0.2383 0.2337 0.5765 0 0 0 0.001 NA - - - - - - -
NEO_N_sum 0.0288 0.2035 0.2137 0.9564 0.4223 0.9704 0.6904 0.315 0.1657 1e-04 2e-04 0.0047 0.0116 2e-04 0.0132 0 0.6189 0 0 0.4646 NA - - - - - -
RSES_sum 0.6897 0.8751 0.0901 0.4033 0.6963 0.0367 0.359 0.52 0.6206 0.135 0.1554 0.1364 0.363 0.078 0.892 0.0608 0.4329 4e-04 0 0.6948 0 NA - - - - -
SRS_sum 0.0478 0.9429 1e-04 0.0542 0.0024 0.9034 0.0127 0.1424 0.0023 0.0065 0.015 0.0118 0.2764 0.122 0.0074 0 0.6578 0 0 0.3914 0 0 NA - - - -
SSEIT_sum 0.2715 0.6134 0.0012 0.0099 0.0289 0.0021 0.0524 0 0.8913 0.0551 0.0028 0.2767 0.0161 0.0016 2e-04 0 0 0 0 0 0.0223 0 2e-04 NA - - -
DASS_D_sum 0.8184 0.9697 0.0803 0.9535 0.1717 0.2808 0.1196 0.5234 0.5535 0.2863 0.0407 0.4554 0.0056 0.0264 0.485 0 0.7706 0 0 0.0908 0 0 0 0 NA - -
DASS_A_sum 0.5421 0.6541 0.0028 0.7803 0.08 0.0368 0.0198 0.0433 0.0037 0.1612 0.1466 0.4586 0.0401 0.2944 0.3432 0 0.3304 2e-04 1e-04 0 0 0 0 0 0 NA -
DASS_S_sum 0.0117 0.45 0.3053 0.4687 0.7885 0.3028 0.3746 0.5848 0.1418 0.0205 0.0017 0.1878 1e-04 0.0081 0.018 0 0.1738 1e-04 0.0047 0.2797 0 0 0 0.005 0 0 NA

kable(as.data.frame(format(sona_corr2$n, scientific = FALSE)), caption = "SONA Study - Correlation: n values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - Correlation: n values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 240 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 240 240 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 240 240 240 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 240 240 240 240 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 240 240 240 240 240 - - - - - - - - - - - - - - - - - - - - - -
com_locked 240 240 240 240 240 240 - - - - - - - - - - - - - - - - - - - - -
com_room_task 240 240 240 240 240 240 240 - - - - - - - - - - - - - - - - - - - -
dist_daily 240 240 240 240 240 240 240 240 - - - - - - - - - - - - - - - - - - -
dist_study 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - - - - - - - -
NMPQ_sum 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - - - - - - -
SAD_sum 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - - - - - -
SAD_dep_sum 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - - - - -
SAD_ea_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - - - -
SAD_access_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - - -
SAD_dist_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - - -
BIS_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - - -
NEO_O_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - - -
NEO_C_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - - -
NEO_E_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - - -
NEO_A_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - - -
NEO_N_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - - -
RSES_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - - -
SRS_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - - -
SSEIT_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - - -
DASS_D_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 - -
DASS_A_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 -
DASS_S_sum 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240

# create new matrix for r & p vals with different col names
  # get age, age_first_phone, dist_daily, and all ques data (21 = SAD overall--not used)
sona_corr_r <- sona_corr$r[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(sona_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(sona_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  
sona_corr_p <- sona_corr$P[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(sona_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(sona_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")


# create colour pallet for corr matrix
# corr_colours <- c("#7E1044", "#981570", "#F3F5F7", "#491296", "#170FA7")
corr_colours <- c("#98410B", "#F0803C", "#DDA448", "#F7F7FF", "#3F826D", "#08605F", "#414535")

# all vars included
corr_plot_sona_all <- {
  corrplot(sona_corr$r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = sona_corr$P, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .5, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# with all SAD subscales
corr_plot_sona_ques_all <- {
  corrplot(sona_corr_r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = sona_corr_p, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# final -- with SAD overall only
corr_plot_sona_ques_final <- {
  corrplot(sona_corr_r[c(1,2,7:19), c(1,2,7:19)], method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = sona_corr_p[c(1,2,7:19), c(1,2,7:19)], sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_sona_all(oct28)", plot = replayPlot(corr_plot_sona_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_sona_ques_all(oct28)", plot = replayPlot(corr_plot_sona_ques_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_sona_ques_final(oct28)", plot = replayPlot(corr_plot_sona_ques_final), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

# export csv files of R values & p values
  write.csv(sona_corr$r,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_corr_rvals(oct28).csv", row.names = T)
  
  write.csv(sona_corr$P,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_corr_pvals(oct28).csv", row.names = T)

Study 2: Mturk

mturk_corr <- 
  Mturk_data %>% 
  # select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, ends_with("_sum")) %>%
  select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, 
         NMPQ_sum, 
         SAD_sum, SAD_dep_sum, SAD_ea_sum, SAD_access_sum, SAD_dist_sum, # add or remove the SAD subscales / overall
         BIS_sum, NEO_O_sum, NEO_C_sum, NEO_E_sum, NEO_A_sum, NEO_N_sum, RSES_sum, SRS_sum, SSEIT_sum, DASS_D_sum, DASS_A_sum, DASS_S_sum) %>% 
  as.matrix() %>% 
  Hmisc::rcorr(type = c("pearson"))

# create new pilot_corr to shown only lower triangle... 
mturk_corr2 <- mturk_corr
# round to 4 decimals... 
mturk_corr2$r <- round(mturk_corr2$r, 4)
mturk_corr2$P <- round(mturk_corr2$P, 4)
mturk_corr2$n <- round(mturk_corr2$n, 4)
# remove upper triangle form r, p, and n
mturk_corr2$r[upper.tri(mturk_corr2$r)] <- "-"
mturk_corr2$P[upper.tri(mturk_corr2$P)] <- "-"
mturk_corr2$n[upper.tri(mturk_corr2$n)] <- "-"

# show corr table with flattenCorr

kable(flattenCorrMatrix(mturk_corr$r, mturk_corr$P), caption = "MTURK Study - Correlation: Flat") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - Correlation: Flat
row column cor p
age age_first_phone 0.1152701 0.0095253
age com_gen -0.1992789 0.0000064
age_first_phone com_gen -0.0207049 0.6425176
age com_unattended -0.2682833 0.0000000
age_first_phone com_unattended -0.0277585 0.5336988
com_gen com_unattended 0.6317465 0.0000000
age com_leave_with_others -0.2622209 0.0000000
age_first_phone com_leave_with_others -0.0245583 0.5819123
com_gen com_leave_with_others 0.6179141 0.0000000
com_unattended com_leave_with_others 0.7350103 0.0000000
age com_locked -0.1409302 0.0014982
age_first_phone com_locked 0.0210407 0.6371326
com_gen com_locked -0.0955808 0.0317528
com_unattended com_locked -0.1958468 0.0000093
com_leave_with_others com_locked -0.1590704 0.0003324
age com_room_task -0.1115064 0.0121620
age_first_phone com_room_task -0.0392236 0.3790793
com_gen com_room_task 0.5067979 0.0000000
com_unattended com_room_task 0.5964662 0.0000000
com_leave_with_others com_room_task 0.5570108 0.0000000
com_locked com_room_task -0.1422099 0.0013546
age dist_daily -0.3131918 0.0000000
age_first_phone dist_daily 0.0041442 0.9259842
com_gen dist_daily 0.3412001 0.0000000
com_unattended dist_daily 0.3323936 0.0000000
com_leave_with_others dist_daily 0.3478189 0.0000000
com_locked dist_daily 0.1118473 0.0118991
com_room_task dist_daily 0.2881640 0.0000000
age dist_study -0.3420285 0.0000000
age_first_phone dist_study 0.0239547 0.5912273
com_gen dist_study 0.4514006 0.0000000
com_unattended dist_study 0.5416987 0.0000000
com_leave_with_others dist_study 0.5861214 0.0000000
com_locked dist_study 0.0706124 0.1129975
com_room_task dist_study 0.3830527 0.0000000
dist_daily dist_study 0.4700815 0.0000000
age NMPQ_sum -0.2567735 0.0000000
age_first_phone NMPQ_sum 0.0065218 0.8837656
com_gen NMPQ_sum 0.2623418 0.0000000
com_unattended NMPQ_sum 0.2545792 0.0000000
com_leave_with_others NMPQ_sum 0.3254167 0.0000000
com_locked NMPQ_sum 0.2452234 0.0000000
com_room_task NMPQ_sum 0.1689246 0.0001367
dist_daily NMPQ_sum 0.5175468 0.0000000
dist_study NMPQ_sum 0.5143775 0.0000000
age SAD_sum -0.2976407 0.0000000
age_first_phone SAD_sum -0.0016625 0.9702710
com_gen SAD_sum 0.3296294 0.0000000
com_unattended SAD_sum 0.2689651 0.0000000
com_leave_with_others SAD_sum 0.3434096 0.0000000
com_locked SAD_sum 0.2139692 0.0000012
com_room_task SAD_sum 0.1795750 0.0000494
dist_daily SAD_sum 0.5376784 0.0000000
dist_study SAD_sum 0.5286169 0.0000000
NMPQ_sum SAD_sum 0.8691721 0.0000000
age SAD_dep_sum -0.2448318 0.0000000
age_first_phone SAD_dep_sum 0.0082084 0.8540087
com_gen SAD_dep_sum 0.2948498 0.0000000
com_unattended SAD_dep_sum 0.2252527 0.0000003
com_leave_with_others SAD_dep_sum 0.2787308 0.0000000
com_locked SAD_dep_sum 0.1631873 0.0002307
com_room_task SAD_dep_sum 0.1262124 0.0045027
dist_daily SAD_dep_sum 0.4716996 0.0000000
dist_study SAD_dep_sum 0.4556352 0.0000000
NMPQ_sum SAD_dep_sum 0.8122230 0.0000000
SAD_sum SAD_dep_sum 0.9161922 0.0000000
age SAD_ea_sum -0.3223664 0.0000000
age_first_phone SAD_ea_sum 0.0016167 0.9710907
com_gen SAD_ea_sum 0.3694184 0.0000000
com_unattended SAD_ea_sum 0.3186166 0.0000000
com_leave_with_others SAD_ea_sum 0.3681343 0.0000000
com_locked SAD_ea_sum 0.1828880 0.0000356
com_room_task SAD_ea_sum 0.2065290 0.0000029
dist_daily SAD_ea_sum 0.4707792 0.0000000
dist_study SAD_ea_sum 0.5285391 0.0000000
NMPQ_sum SAD_ea_sum 0.7623385 0.0000000
SAD_sum SAD_ea_sum 0.9032741 0.0000000
SAD_dep_sum SAD_ea_sum 0.7437688 0.0000000
age SAD_access_sum -0.1625391 0.0002445
age_first_phone SAD_access_sum -0.0081724 0.8546415
com_gen SAD_access_sum 0.1547900 0.0004814
com_unattended SAD_access_sum 0.1006440 0.0237078
com_leave_with_others SAD_access_sum 0.1668916 0.0001648
com_locked SAD_access_sum 0.2472758 0.0000000
com_room_task SAD_access_sum 0.0370379 0.4062309
dist_daily SAD_access_sum 0.4188661 0.0000000
dist_study SAD_access_sum 0.3205921 0.0000000
NMPQ_sum SAD_access_sum 0.7600923 0.0000000
SAD_sum SAD_access_sum 0.8529878 0.0000000
SAD_dep_sum SAD_access_sum 0.7722094 0.0000000
SAD_ea_sum SAD_access_sum 0.6466162 0.0000000
age SAD_dist_sum -0.3470620 0.0000000
age_first_phone SAD_dist_sum -0.0202373 0.6500480
com_gen SAD_dist_sum 0.3863118 0.0000000
com_unattended SAD_dist_sum 0.3517954 0.0000000
com_leave_with_others SAD_dist_sum 0.4506256 0.0000000
com_locked SAD_dist_sum 0.1031158 0.0204668
com_room_task SAD_dist_sum 0.3177774 0.0000000
dist_daily SAD_dist_sum 0.5269001 0.0000000
dist_study SAD_dist_sum 0.6153073 0.0000000
NMPQ_sum SAD_dist_sum 0.6443373 0.0000000
SAD_sum SAD_dist_sum 0.7888812 0.0000000
SAD_dep_sum SAD_dist_sum 0.6389310 0.0000000
SAD_ea_sum SAD_dist_sum 0.7346070 0.0000000
SAD_access_sum SAD_dist_sum 0.5137395 0.0000000
age BIS_sum -0.2431553 0.0000000
age_first_phone BIS_sum -0.0082234 0.8537438
com_gen BIS_sum 0.2232944 0.0000004
com_unattended BIS_sum 0.4291903 0.0000000
com_leave_with_others BIS_sum 0.4516855 0.0000000
com_locked BIS_sum -0.1325832 0.0028335
com_room_task BIS_sum 0.2888952 0.0000000
dist_daily BIS_sum 0.3219655 0.0000000
dist_study BIS_sum 0.5275567 0.0000000
NMPQ_sum BIS_sum 0.2789264 0.0000000
SAD_sum BIS_sum 0.3288891 0.0000000
SAD_dep_sum BIS_sum 0.2784614 0.0000000
SAD_ea_sum BIS_sum 0.2982723 0.0000000
SAD_access_sum BIS_sum 0.1768891 0.0000642
SAD_dist_sum BIS_sum 0.4885262 0.0000000
age NEO_O_sum 0.1331245 0.0027217
age_first_phone NEO_O_sum 0.0291156 0.5138796
com_gen NEO_O_sum -0.2770840 0.0000000
com_unattended NEO_O_sum -0.3688361 0.0000000
com_leave_with_others NEO_O_sum -0.3544968 0.0000000
com_locked NEO_O_sum 0.0850217 0.0562172
com_room_task NEO_O_sum -0.2486216 0.0000000
dist_daily NEO_O_sum -0.1401570 0.0015917
dist_study NEO_O_sum -0.4660624 0.0000000
NMPQ_sum NEO_O_sum -0.2138432 0.0000012
SAD_sum NEO_O_sum -0.2624147 0.0000000
SAD_dep_sum NEO_O_sum -0.2390357 0.0000001
SAD_ea_sum NEO_O_sum -0.2699038 0.0000000
SAD_access_sum NEO_O_sum -0.1280221 0.0039557
SAD_dist_sum NEO_O_sum -0.3525210 0.0000000
BIS_sum NEO_O_sum -0.3689202 0.0000000
age NEO_C_sum 0.3149069 0.0000000
age_first_phone NEO_C_sum 0.0209876 0.6379831
com_gen NEO_C_sum -0.1810588 0.0000427
com_unattended NEO_C_sum -0.3043721 0.0000000
com_leave_with_others NEO_C_sum -0.3324210 0.0000000
com_locked NEO_C_sum 0.1444843 0.0011302
com_room_task NEO_C_sum -0.2254174 0.0000003
dist_daily NEO_C_sum -0.2576367 0.0000000
dist_study NEO_C_sum -0.4369764 0.0000000
NMPQ_sum NEO_C_sum -0.0920886 0.0385740
SAD_sum NEO_C_sum -0.1613790 0.0002711
SAD_dep_sum NEO_C_sum -0.1229692 0.0056566
SAD_ea_sum NEO_C_sum -0.1683429 0.0001442
SAD_access_sum NEO_C_sum 0.0084537 0.8496958
SAD_dist_sum NEO_C_sum -0.3949571 0.0000000
BIS_sum NEO_C_sum -0.6698270 0.0000000
NEO_O_sum NEO_C_sum 0.3036323 0.0000000
age NEO_E_sum -0.0974948 0.0284725
age_first_phone NEO_E_sum -0.0277797 0.5333873
com_gen NEO_E_sum 0.3068363 0.0000000
com_unattended NEO_E_sum 0.1376061 0.0019391
com_leave_with_others NEO_E_sum 0.1578014 0.0003713
com_locked NEO_E_sum 0.1298914 0.0034544
com_room_task NEO_E_sum 0.1027269 0.0209496
dist_daily NEO_E_sum 0.0756853 0.0893118
dist_study NEO_E_sum 0.2664280 0.0000000
NMPQ_sum NEO_E_sum 0.3023222 0.0000000
SAD_sum NEO_E_sum 0.2957975 0.0000000
SAD_dep_sum NEO_E_sum 0.2482318 0.0000000
SAD_ea_sum NEO_E_sum 0.3412425 0.0000000
SAD_access_sum NEO_E_sum 0.2270591 0.0000003
SAD_dist_sum NEO_E_sum 0.2186135 0.0000007
BIS_sum NEO_E_sum -0.0533212 0.2316474
NEO_O_sum NEO_E_sum -0.0714501 0.1087775
NEO_C_sum NEO_E_sum 0.2783141 0.0000000
age NEO_A_sum 0.3499926 0.0000000
age_first_phone NEO_A_sum 0.0095476 0.8305254
com_gen NEO_A_sum -0.2731724 0.0000000
com_unattended NEO_A_sum -0.3896453 0.0000000
com_leave_with_others NEO_A_sum -0.4210423 0.0000000
com_locked NEO_A_sum 0.0578119 0.1946223
com_room_task NEO_A_sum -0.1984662 0.0000070
dist_daily NEO_A_sum -0.2112281 0.0000017
dist_study NEO_A_sum -0.5851432 0.0000000
NMPQ_sum NEO_A_sum -0.2647259 0.0000000
SAD_sum NEO_A_sum -0.3044065 0.0000000
SAD_dep_sum NEO_A_sum -0.2514306 0.0000000
SAD_ea_sum NEO_A_sum -0.3340294 0.0000000
SAD_access_sum NEO_A_sum -0.1347004 0.0024186
SAD_dist_sum NEO_A_sum -0.4440743 0.0000000
BIS_sum NEO_A_sum -0.5432258 0.0000000
NEO_O_sum NEO_A_sum 0.5151080 0.0000000
NEO_C_sum NEO_A_sum 0.5829223 0.0000000
NEO_E_sum NEO_A_sum -0.0809224 0.0692202
age NEO_N_sum -0.2397601 0.0000000
age_first_phone NEO_N_sum 0.0286193 0.5210836
com_gen NEO_N_sum 0.1276778 0.0040549
com_unattended NEO_N_sum 0.3120163 0.0000000
com_leave_with_others NEO_N_sum 0.3427017 0.0000000
com_locked NEO_N_sum -0.0033936 0.9393610
com_room_task NEO_N_sum 0.2590695 0.0000000
dist_daily NEO_N_sum 0.3727406 0.0000000
dist_study NEO_N_sum 0.4382150 0.0000000
NMPQ_sum NEO_N_sum 0.3401242 0.0000000
SAD_sum NEO_N_sum 0.3845639 0.0000000
SAD_dep_sum NEO_N_sum 0.3377203 0.0000000
SAD_ea_sum NEO_N_sum 0.3191194 0.0000000
SAD_access_sum NEO_N_sum 0.2560302 0.0000000
SAD_dist_sum NEO_N_sum 0.4762090 0.0000000
BIS_sum NEO_N_sum 0.5765723 0.0000000
NEO_O_sum NEO_N_sum -0.2903720 0.0000000
NEO_C_sum NEO_N_sum -0.6089177 0.0000000
NEO_E_sum NEO_N_sum -0.3294030 0.0000000
NEO_A_sum NEO_N_sum -0.4461611 0.0000000
age RSES_sum -0.2166900 0.0000009
age_first_phone RSES_sum -0.0463808 0.2982211
com_gen RSES_sum 0.1271870 0.0042002
com_unattended RSES_sum 0.1462151 0.0009830
com_leave_with_others RSES_sum 0.1439597 0.0011787
com_locked RSES_sum -0.0141026 0.7518907
com_room_task RSES_sum 0.1664290 0.0001720
dist_daily RSES_sum 0.0844968 0.0577594
dist_study RSES_sum 0.2059450 0.0000031
NMPQ_sum RSES_sum 0.1023403 0.0214395
SAD_sum RSES_sum 0.1460603 0.0009954
SAD_dep_sum RSES_sum 0.1173804 0.0082810
SAD_ea_sum RSES_sum 0.1591752 0.0003293
SAD_access_sum RSES_sum 0.0573266 0.1984010
SAD_dist_sum RSES_sum 0.2166912 0.0000009
BIS_sum RSES_sum 0.2625560 0.0000000
NEO_O_sum RSES_sum -0.1005793 0.0237982
NEO_C_sum RSES_sum -0.3249502 0.0000000
NEO_E_sum RSES_sum -0.1528406 0.0005681
NEO_A_sum RSES_sum -0.2379877 0.0000001
NEO_N_sum RSES_sum 0.3857729 0.0000000
age SRS_sum 0.2904433 0.0000000
age_first_phone SRS_sum 0.0130523 0.7698290
com_gen SRS_sum -0.1186133 0.0076231
com_unattended SRS_sum -0.1922309 0.0000136
com_leave_with_others SRS_sum -0.2423433 0.0000000
com_locked SRS_sum 0.0858012 0.0539897
com_room_task SRS_sum -0.1568199 0.0004043
dist_daily SRS_sum -0.3238002 0.0000000
dist_study SRS_sum -0.3904458 0.0000000
NMPQ_sum SRS_sum -0.2522255 0.0000000
SAD_sum SRS_sum -0.3485457 0.0000000
SAD_dep_sum SRS_sum -0.2844839 0.0000000
SAD_ea_sum SRS_sum -0.3252558 0.0000000
SAD_access_sum SRS_sum -0.1598778 0.0003096
SAD_dist_sum SRS_sum -0.5386157 0.0000000
BIS_sum SRS_sum -0.6122693 0.0000000
NEO_O_sum SRS_sum 0.2777230 0.0000000
NEO_C_sum SRS_sum 0.6469792 0.0000000
NEO_E_sum SRS_sum 0.2538790 0.0000000
NEO_A_sum SRS_sum 0.4803300 0.0000000
NEO_N_sum SRS_sum -0.6544501 0.0000000
RSES_sum SRS_sum -0.3492303 0.0000000
age SSEIT_sum 0.0684685 0.1243844
age_first_phone SSEIT_sum 0.0249982 0.5751655
com_gen SSEIT_sum 0.1281130 0.0039298
com_unattended SSEIT_sum 0.0019913 0.9643960
com_leave_with_others SSEIT_sum 0.0069607 0.8760050
com_locked SSEIT_sum 0.1903230 0.0000166
com_room_task SSEIT_sum 0.0137440 0.7580003
dist_daily SSEIT_sum 0.0577066 0.1954373
dist_study SSEIT_sum -0.0480549 0.2811021
NMPQ_sum SSEIT_sum 0.2396931 0.0000000
SAD_sum SSEIT_sum 0.2175114 0.0000008
SAD_dep_sum SSEIT_sum 0.1685359 0.0001417
SAD_ea_sum SSEIT_sum 0.2447649 0.0000000
SAD_access_sum SSEIT_sum 0.2261382 0.0000003
SAD_dist_sum SSEIT_sum 0.0322182 0.4700435
BIS_sum SSEIT_sum -0.3259352 0.0000000
NEO_O_sum SSEIT_sum 0.2500836 0.0000000
NEO_C_sum SSEIT_sum 0.5797669 0.0000000
NEO_E_sum SSEIT_sum 0.5447708 0.0000000
NEO_A_sum SSEIT_sum 0.3882565 0.0000000
NEO_N_sum SSEIT_sum -0.4071724 0.0000000
RSES_sum SSEIT_sum -0.2340695 0.0000001
SRS_sum SSEIT_sum 0.5027334 0.0000000
age DASS_D_sum -0.3413734 0.0000000
age_first_phone DASS_D_sum -0.0457253 0.3051095
com_gen DASS_D_sum 0.3765500 0.0000000
com_unattended DASS_D_sum 0.4610583 0.0000000
com_leave_with_others DASS_D_sum 0.4943770 0.0000000
com_locked DASS_D_sum 0.0940061 0.0346891
com_room_task DASS_D_sum 0.3467990 0.0000000
dist_daily DASS_D_sum 0.4320280 0.0000000
dist_study DASS_D_sum 0.6557449 0.0000000
NMPQ_sum DASS_D_sum 0.4653782 0.0000000
SAD_sum DASS_D_sum 0.5168254 0.0000000
SAD_dep_sum DASS_D_sum 0.4348713 0.0000000
SAD_ea_sum DASS_D_sum 0.4974917 0.0000000
SAD_access_sum DASS_D_sum 0.3269694 0.0000000
SAD_dist_sum DASS_D_sum 0.6182126 0.0000000
BIS_sum DASS_D_sum 0.5720959 0.0000000
NEO_O_sum DASS_D_sum -0.4136964 0.0000000
NEO_C_sum DASS_D_sum -0.5794489 0.0000000
NEO_E_sum DASS_D_sum 0.0063608 0.8866152
NEO_A_sum DASS_D_sum -0.5979259 0.0000000
NEO_N_sum DASS_D_sum 0.6680898 0.0000000
RSES_sum DASS_D_sum 0.4263575 0.0000000
SRS_sum DASS_D_sum -0.5427926 0.0000000
SSEIT_sum DASS_D_sum -0.2217423 0.0000005
age DASS_A_sum -0.3652333 0.0000000
age_first_phone DASS_A_sum -0.0362944 0.4157241
com_gen DASS_A_sum 0.4411488 0.0000000
com_unattended DASS_A_sum 0.4956217 0.0000000
com_leave_with_others DASS_A_sum 0.5642206 0.0000000
com_locked DASS_A_sum 0.0807031 0.0699803
com_room_task DASS_A_sum 0.3529379 0.0000000
dist_daily DASS_A_sum 0.4236448 0.0000000
dist_study DASS_A_sum 0.7421144 0.0000000
NMPQ_sum DASS_A_sum 0.5294467 0.0000000
SAD_sum DASS_A_sum 0.5928547 0.0000000
SAD_dep_sum DASS_A_sum 0.5098626 0.0000000
SAD_ea_sum DASS_A_sum 0.5827145 0.0000000
SAD_access_sum DASS_A_sum 0.3653758 0.0000000
SAD_dist_sum DASS_A_sum 0.6880797 0.0000000
BIS_sum DASS_A_sum 0.5969497 0.0000000
NEO_O_sum DASS_A_sum -0.4473584 0.0000000
NEO_C_sum DASS_A_sum -0.5352169 0.0000000
NEO_E_sum DASS_A_sum 0.1785400 0.0000547
NEO_A_sum DASS_A_sum -0.6225484 0.0000000
NEO_N_sum DASS_A_sum 0.5805995 0.0000000
RSES_sum DASS_A_sum 0.3354409 0.0000000
SRS_sum DASS_A_sum -0.5127237 0.0000000
SSEIT_sum DASS_A_sum -0.1088303 0.0144103
DASS_D_sum DASS_A_sum 0.8593110 0.0000000
age DASS_S_sum -0.3075764 0.0000000
age_first_phone DASS_S_sum 0.0541507 0.2244568
com_gen DASS_S_sum 0.3494967 0.0000000
com_unattended DASS_S_sum 0.4532564 0.0000000
com_leave_with_others DASS_S_sum 0.4877037 0.0000000
com_locked DASS_S_sum 0.0902008 0.0427525
com_room_task DASS_S_sum 0.3357213 0.0000000
dist_daily DASS_S_sum 0.4656930 0.0000000
dist_study DASS_S_sum 0.6788551 0.0000000
NMPQ_sum DASS_S_sum 0.5241917 0.0000000
SAD_sum DASS_S_sum 0.5692090 0.0000000
SAD_dep_sum DASS_S_sum 0.4992664 0.0000000
SAD_ea_sum DASS_S_sum 0.5245261 0.0000000
SAD_access_sum DASS_S_sum 0.3788605 0.0000000
SAD_dist_sum DASS_S_sum 0.6523476 0.0000000
BIS_sum DASS_S_sum 0.5845331 0.0000000
NEO_O_sum DASS_S_sum -0.3782456 0.0000000
NEO_C_sum DASS_S_sum -0.5273599 0.0000000
NEO_E_sum DASS_S_sum 0.0892276 0.0450517
NEO_A_sum DASS_S_sum -0.5840085 0.0000000
NEO_N_sum DASS_S_sum 0.6803168 0.0000000
RSES_sum DASS_S_sum 0.3741466 0.0000000
SRS_sum DASS_S_sum -0.5363289 0.0000000
SSEIT_sum DASS_S_sum -0.1390122 0.0017398
DASS_D_sum DASS_S_sum 0.8718889 0.0000000
DASS_A_sum DASS_S_sum 0.8920808 0.0000000

# print tables using kable
kable(as.data.frame(format(mturk_corr2$r, scientific = FALSE)), caption = "MTURK Study - Correlation: r values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - Correlation: r values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 1 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.1153 1 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen -0.1993 -0.0207 1 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended -0.2683 -0.0278 0.6317 1 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others -0.2622 -0.0246 0.6179 0.735 1 - - - - - - - - - - - - - - - - - - - - - -
com_locked -0.1409 0.021 -0.0956 -0.1958 -0.1591 1 - - - - - - - - - - - - - - - - - - - - -
com_room_task -0.1115 -0.0392 0.5068 0.5965 0.557 -0.1422 1 - - - - - - - - - - - - - - - - - - - -
dist_daily -0.3132 0.0041 0.3412 0.3324 0.3478 0.1118 0.2882 1 - - - - - - - - - - - - - - - - - - -
dist_study -0.342 0.024 0.4514 0.5417 0.5861 0.0706 0.3831 0.4701 1 - - - - - - - - - - - - - - - - - -
NMPQ_sum -0.2568 0.0065 0.2623 0.2546 0.3254 0.2452 0.1689 0.5175 0.5144 1 - - - - - - - - - - - - - - - - -
SAD_sum -0.2976 -0.0017 0.3296 0.269 0.3434 0.214 0.1796 0.5377 0.5286 0.8692 1 - - - - - - - - - - - - - - - -
SAD_dep_sum -0.2448 0.0082 0.2948 0.2253 0.2787 0.1632 0.1262 0.4717 0.4556 0.8122 0.9162 1 - - - - - - - - - - - - - - -
SAD_ea_sum -0.3224 0.0016 0.3694 0.3186 0.3681 0.1829 0.2065 0.4708 0.5285 0.7623 0.9033 0.7438 1 - - - - - - - - - - - - - -
SAD_access_sum -0.1625 -0.0082 0.1548 0.1006 0.1669 0.2473 0.037 0.4189 0.3206 0.7601 0.853 0.7722 0.6466 1 - - - - - - - - - - - - -
SAD_dist_sum -0.3471 -0.0202 0.3863 0.3518 0.4506 0.1031 0.3178 0.5269 0.6153 0.6443 0.7889 0.6389 0.7346 0.5137 1 - - - - - - - - - - - -
BIS_sum -0.2432 -0.0082 0.2233 0.4292 0.4517 -0.1326 0.2889 0.322 0.5276 0.2789 0.3289 0.2785 0.2983 0.1769 0.4885 1 - - - - - - - - - - -
NEO_O_sum 0.1331 0.0291 -0.2771 -0.3688 -0.3545 0.085 -0.2486 -0.1402 -0.4661 -0.2138 -0.2624 -0.239 -0.2699 -0.128 -0.3525 -0.3689 1 - - - - - - - - - -
NEO_C_sum 0.3149 0.021 -0.1811 -0.3044 -0.3324 0.1445 -0.2254 -0.2576 -0.437 -0.0921 -0.1614 -0.123 -0.1683 0.0085 -0.395 -0.6698 0.3036 1 - - - - - - - - -
NEO_E_sum -0.0975 -0.0278 0.3068 0.1376 0.1578 0.1299 0.1027 0.0757 0.2664 0.3023 0.2958 0.2482 0.3412 0.2271 0.2186 -0.0533 -0.0715 0.2783 1 - - - - - - - -
NEO_A_sum 0.35 0.0095 -0.2732 -0.3896 -0.421 0.0578 -0.1985 -0.2112 -0.5851 -0.2647 -0.3044 -0.2514 -0.334 -0.1347 -0.4441 -0.5432 0.5151 0.5829 -0.0809 1 - - - - - - -
NEO_N_sum -0.2398 0.0286 0.1277 0.312 0.3427 -0.0034 0.2591 0.3727 0.4382 0.3401 0.3846 0.3377 0.3191 0.256 0.4762 0.5766 -0.2904 -0.6089 -0.3294 -0.4462 1 - - - - - -
RSES_sum -0.2167 -0.0464 0.1272 0.1462 0.144 -0.0141 0.1664 0.0845 0.2059 0.1023 0.1461 0.1174 0.1592 0.0573 0.2167 0.2626 -0.1006 -0.325 -0.1528 -0.238 0.3858 1 - - - - -
SRS_sum 0.2904 0.0131 -0.1186 -0.1922 -0.2423 0.0858 -0.1568 -0.3238 -0.3904 -0.2522 -0.3485 -0.2845 -0.3253 -0.1599 -0.5386 -0.6123 0.2777 0.647 0.2539 0.4803 -0.6545 -0.3492 1 - - - -
SSEIT_sum 0.0685 0.025 0.1281 0.002 0.007 0.1903 0.0137 0.0577 -0.0481 0.2397 0.2175 0.1685 0.2448 0.2261 0.0322 -0.3259 0.2501 0.5798 0.5448 0.3883 -0.4072 -0.2341 0.5027 1 - - -
DASS_D_sum -0.3414 -0.0457 0.3766 0.4611 0.4944 0.094 0.3468 0.432 0.6557 0.4654 0.5168 0.4349 0.4975 0.327 0.6182 0.5721 -0.4137 -0.5794 0.0064 -0.5979 0.6681 0.4264 -0.5428 -0.2217 1 - -
DASS_A_sum -0.3652 -0.0363 0.4411 0.4956 0.5642 0.0807 0.3529 0.4236 0.7421 0.5294 0.5929 0.5099 0.5827 0.3654 0.6881 0.5969 -0.4474 -0.5352 0.1785 -0.6225 0.5806 0.3354 -0.5127 -0.1088 0.8593 1 -
DASS_S_sum -0.3076 0.0542 0.3495 0.4533 0.4877 0.0902 0.3357 0.4657 0.6789 0.5242 0.5692 0.4993 0.5245 0.3789 0.6523 0.5845 -0.3782 -0.5274 0.0892 -0.584 0.6803 0.3741 -0.5363 -0.139 0.8719 0.8921 1
  

kable(as.data.frame(format(mturk_corr2$P, scientific = FALSE)), caption = "MTURK Study - Correlation: p values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - Correlation: p values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age NA - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.0095 NA - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 0 0.6425 NA - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 0 0.5337 0 NA - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 0 0.5819 0 0 NA - - - - - - - - - - - - - - - - - - - - - -
com_locked 0.0015 0.6371 0.0318 0 3e-04 NA - - - - - - - - - - - - - - - - - - - - -
com_room_task 0.0122 0.3791 0 0 0 0.0014 NA - - - - - - - - - - - - - - - - - - - -
dist_daily 0 0.926 0 0 0 0.0119 0 NA - - - - - - - - - - - - - - - - - - -
dist_study 0 0.5912 0 0 0 0.113 0 0 NA - - - - - - - - - - - - - - - - - -
NMPQ_sum 0 0.8838 0 0 0 0 1e-04 0 0 NA - - - - - - - - - - - - - - - - -
SAD_sum 0 0.9703 0 0 0 0 0 0 0 0 NA - - - - - - - - - - - - - - - -
SAD_dep_sum 0 0.854 0 0 0 2e-04 0.0045 0 0 0 0 NA - - - - - - - - - - - - - - -
SAD_ea_sum 0 0.9711 0 0 0 0 0 0 0 0 0 0 NA - - - - - - - - - - - - - -
SAD_access_sum 2e-04 0.8546 5e-04 0.0237 2e-04 0 0.4062 0 0 0 0 0 0 NA - - - - - - - - - - - - -
SAD_dist_sum 0 0.65 0 0 0 0.0205 0 0 0 0 0 0 0 0 NA - - - - - - - - - - - -
BIS_sum 0 0.8537 0 0 0 0.0028 0 0 0 0 0 0 0 1e-04 0 NA - - - - - - - - - - -
NEO_O_sum 0.0027 0.5139 0 0 0 0.0562 0 0.0016 0 0 0 0 0 0.004 0 0 NA - - - - - - - - - -
NEO_C_sum 0 0.638 0 0 0 0.0011 0 0 0 0.0386 3e-04 0.0057 1e-04 0.8497 0 0 0 NA - - - - - - - - -
NEO_E_sum 0.0285 0.5334 0 0.0019 4e-04 0.0035 0.0209 0.0893 0 0 0 0 0 0 0 0.2316 0.1088 0 NA - - - - - - - -
NEO_A_sum 0 0.8305 0 0 0 0.1946 0 0 0 0 0 0 0 0.0024 0 0 0 0 0.0692 NA - - - - - - -
NEO_N_sum 0 0.5211 0.0041 0 0 0.9394 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA - - - - - -
RSES_sum 0 0.2982 0.0042 0.001 0.0012 0.7519 2e-04 0.0578 0 0.0214 0.001 0.0083 3e-04 0.1984 0 0 0.0238 0 6e-04 0 0 NA - - - - -
SRS_sum 0 0.7698 0.0076 0 0 0.054 4e-04 0 0 0 0 0 0 3e-04 0 0 0 0 0 0 0 0 NA - - - -
SSEIT_sum 0.1244 0.5752 0.0039 0.9644 0.876 0 0.758 0.1954 0.2811 0 0 1e-04 0 0 0.47 0 0 0 0 0 0 0 0 NA - - -
DASS_D_sum 0 0.3051 0 0 0 0.0347 0 0 0 0 0 0 0 0 0 0 0 0 0.8866 0 0 0 0 0 NA - -
DASS_A_sum 0 0.4157 0 0 0 0.07 0 0 0 0 0 0 0 0 0 0 0 0 1e-04 0 0 0 0 0.0144 0 NA -
DASS_S_sum 0 0.2245 0 0 0 0.0428 0 0 0 0 0 0 0 0 0 0 0 0 0.0451 0 0 0 0 0.0017 0 0 NA

kable(as.data.frame(format(mturk_corr2$n, scientific = FALSE)), caption = "MTURK Study - Correlation: n values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - Correlation: n values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 505 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 505 505 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 505 505 505 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 505 505 505 505 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 505 505 505 505 505 - - - - - - - - - - - - - - - - - - - - - -
com_locked 505 505 505 505 505 505 - - - - - - - - - - - - - - - - - - - - -
com_room_task 505 505 505 505 505 505 505 - - - - - - - - - - - - - - - - - - - -
dist_daily 505 505 505 505 505 505 505 505 - - - - - - - - - - - - - - - - - - -
dist_study 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - - - - - - - -
NMPQ_sum 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - - - - - - -
SAD_sum 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - - - - - -
SAD_dep_sum 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - - - - -
SAD_ea_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - - - -
SAD_access_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - - -
SAD_dist_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - - -
BIS_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - - -
NEO_O_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - - -
NEO_C_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - - -
NEO_E_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - - -
NEO_A_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - - -
NEO_N_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - - -
RSES_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - - -
SRS_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - - -
SSEIT_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - - -
DASS_D_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 - -
DASS_A_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 -
DASS_S_sum 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505 505

# create new matrix for r & p vals with different col names
  # get age, age_first_phone, dist_daily, and all ques data (21 = SAD overall--not used)
mturk_corr_r <- mturk_corr$r[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(mturk_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(mturk_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  
mturk_corr_p <- mturk_corr$P[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(mturk_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(mturk_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")


# create colour pallet for corr matrix
# corr_colours <- c("#7E1044", "#981570", "#F3F5F7", "#491296", "#170FA7")
corr_colours <- c("#98410B", "#F0803C", "#DDA448", "#F7F7FF", "#3F826D", "#08605F", "#414535")

# all vars included
corr_plot_mturk_all <- {
  corrplot(mturk_corr$r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = mturk_corr$P, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .5, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# with all SAD subscales
corr_plot_mturk_ques_all <- {
  corrplot(mturk_corr_r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = mturk_corr_p, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# final -- with SAD overall only
corr_plot_mturk_ques_final <- {
  corrplot(mturk_corr_r[c(1,2,7:19), c(1,2,7:19)], method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = mturk_corr_p[c(1,2,7:19), c(1,2,7:19)], sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_mturk_all(oct28)", plot = replayPlot(corr_plot_mturk_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_mturk_ques_all(oct28)", plot = replayPlot(corr_plot_mturk_ques_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_mturk_ques_final(oct28)", plot = replayPlot(corr_plot_mturk_ques_final), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

# export csv files of R values & p values 
  write.csv(mturk_corr$r,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_corr_rvals(oct28).csv", row.names = T)
  
  write.csv(mturk_corr$P,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_corr_pvals(oct28).csv", row.names = T)

Regressions

A regression analysis was completed to investigate which measure was a significant predictor of nomophobia (NMPQ) and smartphone dependency (SAD: Dep.).

The Linear models were as follows:

  • \(NMPQ = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)
  • \(SAD = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)
  • \(SAD: Dep. = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)
  • \(SAD: Access. = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)
  • \(SAD: EA = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)
  • \(SAD: Dist. = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

All Data

Study 1: SONA

NMPQ

This regression used the following formula: \(NMPQ = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 226) = 2.8478559, p = .001, R2 = 0.14
# run lm
sona_reg_NMPQ <- lm(data = SONA_data, formula = NMPQ_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(sona_reg_NMPQ)

Call:
lm(formula = NMPQ_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = SONA_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-61.225 -13.624  -0.002  14.614  55.358 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 83.73122   32.30362   2.592  0.01016 * 
age         -0.64849    0.67399  -0.962  0.33700   
BIS_sum     -0.47233    0.57083  -0.827  0.40886   
NEO_O_sum   -0.59817    0.24687  -2.423  0.01618 * 
NEO_C_sum   -0.03698    0.36866  -0.100  0.92018   
NEO_E_sum    0.21302    0.26232   0.812  0.41763   
NEO_A_sum   -0.07458    0.24882  -0.300  0.76466   
NEO_N_sum    0.70429    0.25400   2.773  0.00602 **
RSES_sum     0.19876    0.36088   0.551  0.58234   
SRS_sum     -0.92889    0.38813  -2.393  0.01752 * 
SSEIT_sum    0.31572    0.12283   2.570  0.01080 * 
DASS_D_sum  -0.49156    0.48685  -1.010  0.31373   
DASS_A_sum   0.26087    0.58044   0.449  0.65354   
DASS_S_sum   0.53740    0.64578   0.832  0.40619   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.41 on 226 degrees of freedom
Multiple R-squared:  0.1408,    Adjusted R-squared:  0.09133 
F-statistic: 2.848 on 13 and 226 DF,  p-value: 0.000816
# use this to plot assumption plots (e.g., q-q)
# plot(sona_reg_NMPQ)

# summary(lm(data = SONA_data, formula = NMPQ_sum ~ NEO_O_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

# create table depicting main stats to export later
sona_reg_NMPQ_t <- 
      rbind(tidy(sona_reg_NMPQ), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(sona_reg_NMPQ)$fstatistic[2], summary(sona_reg_NMPQ)$r.squared, nrow(sona_reg_NMPQ$model)), 
             "std.error" = c(summary(sona_reg_NMPQ)$fstatistic[3], summary(sona_reg_NMPQ)$adj.r.squared, NA), 
             "statistic" = c(summary(sona_reg_NMPQ)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(sona_reg_NMPQ)$fstatistic[1], summary(sona_reg_NMPQ)$fstatistic[2], summary(sona_reg_NMPQ)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(sona_reg_NMPQ_t, caption = "Multiple Regression Model Predicting NMPQ Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting NMPQ Score
term estimate std.error statistic p.value
(Intercept) 83.731 32.304 2.592 0.010
age -0.648 0.674 -0.962 0.337
BIS_sum -0.472 0.571 -0.827 0.409
NEO_O_sum -0.598 0.247 -2.423 0.016
NEO_C_sum -0.037 0.369 -0.100 0.920
NEO_E_sum 0.213 0.262 0.812 0.418
NEO_A_sum -0.075 0.249 -0.300 0.765
NEO_N_sum 0.704 0.254 2.773 0.006
RSES_sum 0.199 0.361 0.551 0.582
SRS_sum -0.929 0.388 -2.393 0.018
SSEIT_sum 0.316 0.123 2.570 0.011
DASS_D_sum -0.492 0.487 -1.010 0.314
DASS_A_sum 0.261 0.580 0.449 0.654
DASS_S_sum 0.537 0.646 0.832 0.406
f_stat 13.000 226.000 2.848 0.001
R2/Adj.R2 0.141 0.091
N 240.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
# reg_colours <- c("#7E1044", "#170FA7", "black", "red", "purple", "grey", "yellow")
# reg_colours <- c("#98410B", "#F0803C", "#DDA448", "#858585", "#3F826D", "#08605F", "#414535") # orange >green
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
sona_reg_NMPQ_plot <- 
  sjPlot::plot_model(model = sona_reg_NMPQ, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (SONA)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     #axis.lim = c(-.25,.25)
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
sona_reg_NMPQ_plot

# this plots the non-standardized betas
  # sjPlot::plot_model(sona_reg_NMPQ, type = "est") #ither otpions: c("est", "eff", "pred", "int", "std", "std2", "slope", "resid", "diag")
# plot the table using sjPlot
  # sjPlot::tab_model(sona_reg_NMPQ, show.stat = T, show.std = T)

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_reg_NMPQ_plot(oct28)", plot = sona_reg_NMPQ_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)


# export csv files of lm table
  write.csv(sona_reg_NMPQ_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_reg_NMPQ_t(oct28).csv", row.names = T)
SAD - Overall

This regression used the following formula: \(SAD = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 226) = 3.5779788, p < .001, R2 = 0.17
# run lm
sona_reg_SAD <- lm(data = SONA_data, formula = SAD_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(sona_reg_SAD)

Call:
lm(formula = SAD_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = SONA_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-37.297  -6.629   0.473   8.260  35.114 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 42.691221  19.481636   2.191   0.0294 *  
age         -0.279862   0.406469  -0.689   0.4918    
BIS_sum     -0.004475   0.344256  -0.013   0.9896    
NEO_O_sum   -0.313319   0.148883  -2.104   0.0364 *  
NEO_C_sum   -0.012606   0.222330  -0.057   0.9548    
NEO_E_sum   -0.007554   0.158202  -0.048   0.9620    
NEO_A_sum   -0.240820   0.150056  -1.605   0.1099    
NEO_N_sum    0.311012   0.153184   2.030   0.0435 *  
RSES_sum     0.141384   0.217641   0.650   0.5166    
SRS_sum     -0.392246   0.234072  -1.676   0.0952 .  
SSEIT_sum    0.324132   0.074075   4.376 1.85e-05 ***
DASS_D_sum   0.006256   0.293607   0.021   0.9830    
DASS_A_sum  -0.162021   0.350049  -0.463   0.6439    
DASS_S_sum   0.566880   0.389455   1.456   0.1469    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 12.91 on 226 degrees of freedom
Multiple R-squared:  0.1707,    Adjusted R-squared:  0.123 
F-statistic: 3.578 on 13 and 226 DF,  p-value: 3.999e-05
# create table depicting main stats to export later
sona_reg_SAD_t <- 
      rbind(tidy(sona_reg_SAD), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(sona_reg_SAD)$fstatistic[2], summary(sona_reg_SAD)$r.squared, nrow(sona_reg_SAD$model)), 
             "std.error" = c(summary(sona_reg_SAD)$fstatistic[3], summary(sona_reg_SAD)$adj.r.squared, NA), 
             "statistic" = c(summary(sona_reg_SAD)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(sona_reg_SAD)$fstatistic[1], summary(sona_reg_SAD)$fstatistic[2], summary(sona_reg_SAD)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(sona_reg_SAD_t, caption = "Multiple Regression Model Predicting SAD Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD Score
term estimate std.error statistic p.value
(Intercept) 42.691 19.482 2.191 0.029
age -0.280 0.406 -0.689 0.492
BIS_sum -0.004 0.344 -0.013 0.990
NEO_O_sum -0.313 0.149 -2.104 0.036
NEO_C_sum -0.013 0.222 -0.057 0.955
NEO_E_sum -0.008 0.158 -0.048 0.962
NEO_A_sum -0.241 0.150 -1.605 0.110
NEO_N_sum 0.311 0.153 2.030 0.043
RSES_sum 0.141 0.218 0.650 0.517
SRS_sum -0.392 0.234 -1.676 0.095
SSEIT_sum 0.324 0.074 4.376 0.000
DASS_D_sum 0.006 0.294 0.021 0.983
DASS_A_sum -0.162 0.350 -0.463 0.644
DASS_S_sum 0.567 0.389 1.456 0.147
f_stat 13.000 226.000 3.578 0.000
R2/Adj.R2 0.171 0.123
N 240.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
sona_reg_SAD_plot <- 
  sjPlot::plot_model(model = sona_reg_SAD, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (SONA)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
sona_reg_SAD_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_reg_SAD_plot(oct28)", plot = sona_reg_SAD_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)


# export csv files of lm table
  write.csv(sona_reg_SAD_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_reg_SAD_t(oct28).csv", row.names = T)
SAD - Dependency

This regression used the following formula: \(SAD: Dep = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 226) = 2.3475007, p = .01, R2 = 0.12
# run lm
sona_reg_SAD_dep <- lm(data = SONA_data, formula = SAD_dep_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(sona_reg_SAD_dep)

Call:
lm(formula = SAD_dep_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = SONA_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.9026  -2.4888  -0.0599   3.1104  10.0122 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)   
(Intercept) 14.302299   6.648998   2.151  0.03253 * 
age          0.032077   0.138726   0.231  0.81735   
BIS_sum     -0.015189   0.117493  -0.129  0.89725   
NEO_O_sum   -0.162854   0.050813  -3.205  0.00155 **
NEO_C_sum   -0.059042   0.075880  -0.778  0.43733   
NEO_E_sum    0.001822   0.053994   0.034  0.97312   
NEO_A_sum   -0.054659   0.051213  -1.067  0.28698   
NEO_N_sum    0.081183   0.052281   1.553  0.12186   
RSES_sum     0.072668   0.074280   0.978  0.32897   
SRS_sum     -0.148618   0.079888  -1.860  0.06414 . 
SSEIT_sum    0.077291   0.025281   3.057  0.00250 **
DASS_D_sum  -0.054670   0.100207  -0.546  0.58590   
DASS_A_sum  -0.010934   0.119470  -0.092  0.92716   
DASS_S_sum   0.041328   0.132919   0.311  0.75615   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.406 on 226 degrees of freedom
Multiple R-squared:  0.119, Adjusted R-squared:  0.06829 
F-statistic: 2.348 on 13 and 226 DF,  p-value: 0.005912
# create table depicting main stats to export later
sona_reg_SAD_dep_t <- 
      rbind(tidy(sona_reg_SAD_dep), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(sona_reg_SAD_dep)$fstatistic[2], summary(sona_reg_SAD_dep)$r.squared, nrow(sona_reg_SAD_dep$model)), 
             "std.error" = c(summary(sona_reg_SAD_dep)$fstatistic[3], summary(sona_reg_SAD_dep)$adj.r.squared, NA), 
             "statistic" = c(summary(sona_reg_SAD_dep)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(sona_reg_SAD_dep)$fstatistic[1], summary(sona_reg_SAD_dep)$fstatistic[2], summary(sona_reg_SAD_dep)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(sona_reg_SAD_dep_t, caption = "Multiple Regression Model Predicting SAD_dep Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_dep Score
term estimate std.error statistic p.value
(Intercept) 14.302 6.649 2.151 0.033
age 0.032 0.139 0.231 0.817
BIS_sum -0.015 0.117 -0.129 0.897
NEO_O_sum -0.163 0.051 -3.205 0.002
NEO_C_sum -0.059 0.076 -0.778 0.437
NEO_E_sum 0.002 0.054 0.034 0.973
NEO_A_sum -0.055 0.051 -1.067 0.287
NEO_N_sum 0.081 0.052 1.553 0.122
RSES_sum 0.073 0.074 0.978 0.329
SRS_sum -0.149 0.080 -1.860 0.064
SSEIT_sum 0.077 0.025 3.057 0.003
DASS_D_sum -0.055 0.100 -0.546 0.586
DASS_A_sum -0.011 0.119 -0.092 0.927
DASS_S_sum 0.041 0.133 0.311 0.756
f_stat 13.000 226.000 2.348 0.006
R2/Adj.R2 0.119 0.068
N 240.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
sona_reg_SAD_dep_plot <- 
  sjPlot::plot_model(model = sona_reg_SAD_dep, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (SONA)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
sona_reg_SAD_dep_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_reg_SAD_dep_plot(oct28)", plot = sona_reg_SAD_dep_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)


# export csv files of lm table
  write.csv(sona_reg_SAD_dep_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_reg_SAD_dep_t(oct28).csv", row.names = T)
SAD - Accessibility

This regression used the following formula: \(SAD: Access. = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 226) = 2.9346619, p = .001, R2 = 0.14
# run lm
sona_reg_SAD_access <- lm(data = SONA_data, formula = SAD_access_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(sona_reg_SAD_access)

Call:
lm(formula = SAD_access_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = SONA_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-13.4838  -2.3200   0.0367   2.6640   8.0595 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.55612    5.62970   0.632 0.528240    
age         -0.13052    0.11746  -1.111 0.267677    
BIS_sum      0.01550    0.09948   0.156 0.876335    
NEO_O_sum   -0.02323    0.04302  -0.540 0.589826    
NEO_C_sum    0.06474    0.06425   1.008 0.314660    
NEO_E_sum   -0.01722    0.04572  -0.377 0.706720    
NEO_A_sum   -0.03191    0.04336  -0.736 0.462526    
NEO_N_sum    0.11242    0.04427   2.540 0.011772 *  
RSES_sum     0.04233    0.06289   0.673 0.501570    
SRS_sum     -0.05747    0.06764  -0.850 0.396412    
SSEIT_sum    0.07465    0.02141   3.487 0.000586 ***
DASS_D_sum   0.06362    0.08484   0.750 0.454139    
DASS_A_sum  -0.03573    0.10116  -0.353 0.724228    
DASS_S_sum   0.07077    0.11254   0.629 0.530125    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.731 on 226 degrees of freedom
Multiple R-squared:  0.1444,    Adjusted R-squared:  0.09521 
F-statistic: 2.935 on 13 and 226 DF,  p-value: 0.0005736
# create table depicting main stats to export later
sona_reg_SAD_access_t <- 
      rbind(tidy(sona_reg_SAD_access), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(sona_reg_SAD_access)$fstatistic[2], summary(sona_reg_SAD_access)$r.squared, nrow(sona_reg_SAD_access$model)), 
             "std.error" = c(summary(sona_reg_SAD_access)$fstatistic[3], summary(sona_reg_SAD_access)$adj.r.squared, NA), 
             "statistic" = c(summary(sona_reg_SAD_access)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(sona_reg_SAD_access)$fstatistic[1], summary(sona_reg_SAD_access)$fstatistic[2], summary(sona_reg_SAD_access)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(sona_reg_SAD_access_t, caption = "Multiple Regression Model Predicting SAD_access Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_access Score
term estimate std.error statistic p.value
(Intercept) 3.556 5.630 0.632 0.528
age -0.131 0.117 -1.111 0.268
BIS_sum 0.015 0.099 0.156 0.876
NEO_O_sum -0.023 0.043 -0.540 0.590
NEO_C_sum 0.065 0.064 1.008 0.315
NEO_E_sum -0.017 0.046 -0.377 0.707
NEO_A_sum -0.032 0.043 -0.736 0.463
NEO_N_sum 0.112 0.044 2.540 0.012
RSES_sum 0.042 0.063 0.673 0.502
SRS_sum -0.057 0.068 -0.850 0.396
SSEIT_sum 0.075 0.021 3.487 0.001
DASS_D_sum 0.064 0.085 0.750 0.454
DASS_A_sum -0.036 0.101 -0.353 0.724
DASS_S_sum 0.071 0.113 0.629 0.530
f_stat 13.000 226.000 2.935 0.001
R2/Adj.R2 0.144 0.095
N 240.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
sona_reg_SAD_access_plot <- 
  sjPlot::plot_model(model = sona_reg_SAD_access, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (SONA)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
sona_reg_SAD_access_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_reg_SAD_access_plot(oct28)", plot = sona_reg_SAD_access_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)


# export csv files of lm table
  write.csv(sona_reg_SAD_access_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_reg_SAD_access_t(oct28).csv", row.names = T)
SAD - Emotional Attachement

This regression used the following formula: \(SAD: EA = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 226) = 3.2315141, p < .001, R2 = 0.16
# run lm
sona_reg_SAD_ea <- lm(data = SONA_data, formula = SAD_ea_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(sona_reg_SAD_ea)

Call:
lm(formula = SAD_ea_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = SONA_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-15.5397  -2.4464  -0.0422   3.0712  10.6453 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 12.52232    6.59371   1.899  0.05882 . 
age          0.01487    0.13757   0.108  0.91399   
BIS_sum     -0.05729    0.11652  -0.492  0.62342   
NEO_O_sum   -0.09854    0.05039  -1.956  0.05175 . 
NEO_C_sum   -0.02254    0.07525  -0.300  0.76482   
NEO_E_sum    0.05133    0.05354   0.959  0.33876   
NEO_A_sum   -0.11645    0.05079  -2.293  0.02277 * 
NEO_N_sum    0.05385    0.05185   1.039  0.30006   
RSES_sum     0.02985    0.07366   0.405  0.68564   
SRS_sum     -0.03245    0.07922  -0.410  0.68250   
SSEIT_sum    0.08298    0.02507   3.310  0.00109 **
DASS_D_sum   0.06592    0.09937   0.663  0.50779   
DASS_A_sum  -0.09150    0.11848  -0.772  0.44075   
DASS_S_sum   0.30741    0.13181   2.332  0.02057 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.369 on 226 degrees of freedom
Multiple R-squared:  0.1567,    Adjusted R-squared:  0.1082 
F-statistic: 3.232 on 13 and 226 DF,  p-value: 0.0001694
# create table depicting main stats to export later
sona_reg_SAD_ea_t <- 
      rbind(tidy(sona_reg_SAD_ea), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(sona_reg_SAD_ea)$fstatistic[2], summary(sona_reg_SAD_ea)$r.squared, nrow(sona_reg_SAD_ea$model)), 
             "std.error" = c(summary(sona_reg_SAD_ea)$fstatistic[3], summary(sona_reg_SAD_ea)$adj.r.squared, NA), 
             "statistic" = c(summary(sona_reg_SAD_ea)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(sona_reg_SAD_ea)$fstatistic[1], summary(sona_reg_SAD_ea)$fstatistic[2], summary(sona_reg_SAD_ea)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(sona_reg_SAD_ea_t, caption = "Multiple Regression Model Predicting SAD_ea Score", align = rep('lcccc'), digits = 4) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_ea Score
term estimate std.error statistic p.value
(Intercept) 12.5223 6.5937 1.8991 0.0588
age 0.0149 0.1376 0.1081 0.9140
BIS_sum -0.0573 0.1165 -0.4917 0.6234
NEO_O_sum -0.0985 0.0504 -1.9556 0.0517
NEO_C_sum -0.0225 0.0752 -0.2995 0.7648
NEO_E_sum 0.0513 0.0535 0.9586 0.3388
NEO_A_sum -0.1165 0.0508 -2.2929 0.0228
NEO_N_sum 0.0539 0.0518 1.0387 0.3001
RSES_sum 0.0299 0.0737 0.4053 0.6856
SRS_sum -0.0324 0.0792 -0.4096 0.6825
SSEIT_sum 0.0830 0.0251 3.3097 0.0011
DASS_D_sum 0.0659 0.0994 0.6633 0.5078
DASS_A_sum -0.0915 0.1185 -0.7723 0.4407
DASS_S_sum 0.3074 0.1318 2.3321 0.0206
f_stat 13.0000 226.0000 3.2315 0.0002
R2/Adj.R2 0.1567 0.1082
N 240.0000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
sona_reg_SAD_ea_plot <- 
  sjPlot::plot_model(model = sona_reg_SAD_ea, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (SONA)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
sona_reg_SAD_ea_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_reg_SAD_ea_plot(oct28)", plot = sona_reg_SAD_ea_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)


# export csv files of lm table
  write.csv(sona_reg_SAD_ea_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_reg_SAD_ea_t(oct28).csv", row.names = T)
SAD - Distractibility

This regression used the following formula: \(SAD: Dist = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 226) = 3.3724433, p < .001, R2 = 0.16
# run lm
sona_reg_SAD_dist <- lm(data = SONA_data, formula = SAD_dist_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(sona_reg_SAD_dist)

Call:
lm(formula = SAD_dist_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = SONA_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.5548 -1.2844  0.1908  1.6459  5.2641 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.699303   3.655199   1.833 0.068146 .  
age         -0.143765   0.076263  -1.885 0.060696 .  
BIS_sum      0.049786   0.064590   0.771 0.441630    
NEO_O_sum    0.004503   0.027934   0.161 0.872065    
NEO_C_sum    0.024427   0.041714   0.586 0.558747    
NEO_E_sum   -0.009767   0.029682  -0.329 0.742414    
NEO_A_sum   -0.029430   0.028154  -1.045 0.296997    
NEO_N_sum    0.037296   0.028741   1.298 0.195724    
RSES_sum    -0.009578   0.040834  -0.235 0.814771    
SRS_sum     -0.106371   0.043917  -2.422 0.016220 *  
SSEIT_sum    0.054260   0.013898   3.904 0.000125 ***
DASS_D_sum  -0.055450   0.055087  -1.007 0.315211    
DASS_A_sum  -0.001039   0.065677  -0.016 0.987388    
DASS_S_sum   0.111389   0.073071   1.524 0.128806    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.422 on 226 degrees of freedom
Multiple R-squared:  0.1625,    Adjusted R-squared:  0.1143 
F-statistic: 3.372 on 13 and 226 DF,  p-value: 9.438e-05
# create table depicting main stats to export later
sona_reg_SAD_dist_t <- 
      rbind(tidy(sona_reg_SAD_dist), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(sona_reg_SAD_dist)$fstatistic[2], summary(sona_reg_SAD_dist)$r.squared, nrow(sona_reg_SAD_dist$model)), 
             "std.error" = c(summary(sona_reg_SAD_dist)$fstatistic[3], summary(sona_reg_SAD_dist)$adj.r.squared, NA), 
             "statistic" = c(summary(sona_reg_SAD_dist)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(sona_reg_SAD_dist)$fstatistic[1], summary(sona_reg_SAD_dist)$fstatistic[2], summary(sona_reg_SAD_dist)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(sona_reg_SAD_dist_t, caption = "Multiple Regression Model Predicting SAD_dist Score", align = rep('lcccc'), digits = 4) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_dist Score
term estimate std.error statistic p.value
(Intercept) 6.6993 3.6552 1.8328 0.0681
age -0.1438 0.0763 -1.8851 0.0607
BIS_sum 0.0498 0.0646 0.7708 0.4416
NEO_O_sum 0.0045 0.0279 0.1612 0.8721
NEO_C_sum 0.0244 0.0417 0.5856 0.5587
NEO_E_sum -0.0098 0.0297 -0.3291 0.7424
NEO_A_sum -0.0294 0.0282 -1.0453 0.2970
NEO_N_sum 0.0373 0.0287 1.2977 0.1957
RSES_sum -0.0096 0.0408 -0.2345 0.8148
SRS_sum -0.1064 0.0439 -2.4221 0.0162
SSEIT_sum 0.0543 0.0139 3.9041 0.0001
DASS_D_sum -0.0555 0.0551 -1.0066 0.3152
DASS_A_sum -0.0010 0.0657 -0.0158 0.9874
DASS_S_sum 0.1114 0.0731 1.5244 0.1288
f_stat 13.0000 226.0000 3.3724 0.0001
R2/Adj.R2 0.1625 0.1143
N 240.0000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
sona_reg_SAD_dist_plot <- 
  sjPlot::plot_model(model = sona_reg_SAD_dist, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (SONA)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
sona_reg_SAD_dist_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/sona_reg_SAD_dist_plot(oct28)", plot = sona_reg_SAD_dist_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)


# export csv files of lm table
  write.csv(sona_reg_SAD_dist_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_reg_SAD_dist_t(oct28).csv", row.names = T)

Study 2: Mturk

NMPQ

This regression used the following formula: \(NMPQ = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 491) = 32.109364, p < .001, R2 = 0.46
# run lm
mturk_reg_NMPQ <- lm(data = Mturk_data, formula = NMPQ_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(mturk_reg_NMPQ)

Call:
lm(formula = NMPQ_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-70.609  -9.827   0.464  11.456  59.484 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -7.64067   17.32345  -0.441 0.659364    
age         -0.23127    0.10179  -2.272 0.023522 *  
BIS_sum      0.10695    0.31844   0.336 0.737115    
NEO_O_sum   -0.14219    0.16051  -0.886 0.376129    
NEO_C_sum    0.85822    0.23524   3.648 0.000292 ***
NEO_E_sum    0.42582    0.14199   2.999 0.002847 ** 
NEO_A_sum   -0.04721    0.18202  -0.259 0.795471    
NEO_N_sum    0.70104    0.16466   4.257 2.48e-05 ***
RSES_sum    -0.28655    0.14833  -1.932 0.053958 .  
SRS_sum     -0.87975    0.26569  -3.311 0.000997 ***
SSEIT_sum    0.44977    0.08105   5.549 4.71e-08 ***
DASS_D_sum   0.40794    0.32461   1.257 0.209461    
DASS_A_sum   0.73845    0.37551   1.967 0.049799 *  
DASS_S_sum   0.57946    0.39398   1.471 0.141993    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.24 on 491 degrees of freedom
Multiple R-squared:  0.4595,    Adjusted R-squared:  0.4452 
F-statistic: 32.11 on 13 and 491 DF,  p-value: < 2.2e-16
# create table depicting main stats to export later
mturk_reg_NMPQ_t <- 
      rbind(tidy(mturk_reg_NMPQ), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(mturk_reg_NMPQ)$fstatistic[2], summary(mturk_reg_NMPQ)$r.squared, nrow(mturk_reg_NMPQ$model)), 
             "std.error" = c(summary(mturk_reg_NMPQ)$fstatistic[3], summary(mturk_reg_NMPQ)$adj.r.squared, NA), 
             "statistic" = c(summary(mturk_reg_NMPQ)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(mturk_reg_NMPQ)$fstatistic[1], summary(mturk_reg_NMPQ)$fstatistic[2], summary(mturk_reg_NMPQ)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(mturk_reg_NMPQ_t, caption = "Multiple Regression Model Predicting NMPQ Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "mturk" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting NMPQ Score
term estimate std.error statistic p.value
(Intercept) -7.641 17.323 -0.441 0.659
age -0.231 0.102 -2.272 0.024
BIS_sum 0.107 0.318 0.336 0.737
NEO_O_sum -0.142 0.161 -0.886 0.376
NEO_C_sum 0.858 0.235 3.648 0.000
NEO_E_sum 0.426 0.142 2.999 0.003
NEO_A_sum -0.047 0.182 -0.259 0.795
NEO_N_sum 0.701 0.165 4.257 0.000
RSES_sum -0.287 0.148 -1.932 0.054
SRS_sum -0.880 0.266 -3.311 0.001
SSEIT_sum 0.450 0.081 5.549 0.000
DASS_D_sum 0.408 0.325 1.257 0.209
DASS_A_sum 0.738 0.376 1.967 0.050
DASS_S_sum 0.579 0.394 1.471 0.142
f_stat 13.000 491.000 32.109 0.000
R2/Adj.R2 0.460 0.445
N 505.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
mturk_reg_NMPQ_plot <- 
  sjPlot::plot_model(model = mturk_reg_NMPQ, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (Mturk)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
mturk_reg_NMPQ_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_reg_NMPQ_plot(oct28)", plot = mturk_reg_NMPQ_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)

  
# export csv files of lm table
  write.csv(mturk_reg_NMPQ_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_reg_NMPQ_t(oct28).csv", row.names = T)
SAD - Overall

This regression used the following formula: \(SAD = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 491) = 43.6071508, p < .001, R2 = 0.54
# run lm
mturk_reg_SAD <- lm(data = Mturk_data, formula = SAD_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(mturk_reg_SAD)

Call:
lm(formula = SAD_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-48.848  -6.418   0.259   7.606  30.793 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 13.23237   10.23239   1.293  0.19656    
age         -0.15343    0.06013  -2.552  0.01102 *  
BIS_sum     -0.07438    0.18809  -0.395  0.69269    
NEO_O_sum   -0.19260    0.09481  -2.031  0.04275 *  
NEO_C_sum    0.39212    0.13895   2.822  0.00496 ** 
NEO_E_sum    0.26211    0.08387   3.125  0.00188 ** 
NEO_A_sum    0.02920    0.10751   0.272  0.78605    
NEO_N_sum    0.39806    0.09726   4.093 4.98e-05 ***
RSES_sum    -0.12812    0.08762  -1.462  0.14430    
SRS_sum     -0.95980    0.15693  -6.116 1.96e-09 ***
SSEIT_sum    0.33966    0.04788   7.094 4.56e-12 ***
DASS_D_sum   0.20670    0.19174   1.078  0.28154    
DASS_A_sum   0.68778    0.22180   3.101  0.00204 ** 
DASS_S_sum   0.17965    0.23271   0.772  0.44049    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.95 on 491 degrees of freedom
Multiple R-squared:  0.5359,    Adjusted R-squared:  0.5236 
F-statistic: 43.61 on 13 and 491 DF,  p-value: < 2.2e-16
# create table depicting main stats to export later
mturk_reg_SAD_t <- 
      rbind(tidy(mturk_reg_SAD), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(mturk_reg_SAD)$fstatistic[2], summary(mturk_reg_SAD)$r.squared, nrow(mturk_reg_SAD$model)), 
             "std.error" = c(summary(mturk_reg_SAD)$fstatistic[3], summary(mturk_reg_SAD)$adj.r.squared, NA), 
             "statistic" = c(summary(mturk_reg_SAD)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(mturk_reg_SAD)$fstatistic[1], summary(mturk_reg_SAD)$fstatistic[2], summary(mturk_reg_SAD)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(mturk_reg_SAD_t, caption = "Multiple Regression Model Predicting SAD Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "mturk" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD Score
term estimate std.error statistic p.value
(Intercept) 13.232 10.232 1.293 0.197
age -0.153 0.060 -2.552 0.011
BIS_sum -0.074 0.188 -0.395 0.693
NEO_O_sum -0.193 0.095 -2.031 0.043
NEO_C_sum 0.392 0.139 2.822 0.005
NEO_E_sum 0.262 0.084 3.125 0.002
NEO_A_sum 0.029 0.108 0.272 0.786
NEO_N_sum 0.398 0.097 4.093 0.000
RSES_sum -0.128 0.088 -1.462 0.144
SRS_sum -0.960 0.157 -6.116 0.000
SSEIT_sum 0.340 0.048 7.094 0.000
DASS_D_sum 0.207 0.192 1.078 0.282
DASS_A_sum 0.688 0.222 3.101 0.002
DASS_S_sum 0.180 0.233 0.772 0.440
f_stat 13.000 491.000 43.607 0.000
R2/Adj.R2 0.536 0.524
N 505.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
mturk_reg_SAD_plot <- 
  sjPlot::plot_model(model = mturk_reg_SAD, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (Mturk)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
mturk_reg_SAD_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_reg_SAD_plot(oct28)", plot = mturk_reg_SAD_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)

  
# export csv files of lm table
  write.csv(mturk_reg_SAD_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_reg_SAD_t(oct28).csv", row.names = T)
SAD - Dependency

This regression used the following formula: \(SAD_dep = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 491) = 24.0268599, p < .001, R2 = 0.39
# run lm
mturk_reg_SAD_dep <- lm(data = Mturk_data, formula = SAD_dep_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(mturk_reg_SAD_dep)

Call:
lm(formula = SAD_dep_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = Mturk_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.6332  -2.2595   0.2762   2.3108  10.9460 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.955791   3.336644   0.286 0.774652    
age         -0.040241   0.019606  -2.052 0.040652 *  
BIS_sum     -0.006676   0.061335  -0.109 0.913370    
NEO_O_sum   -0.060116   0.030916  -1.945 0.052402 .  
NEO_C_sum    0.127500   0.045308   2.814 0.005088 ** 
NEO_E_sum    0.066252   0.027349   2.422 0.015776 *  
NEO_A_sum    0.028183   0.035058   0.804 0.421851    
NEO_N_sum    0.106815   0.031715   3.368 0.000817 ***
RSES_sum    -0.036435   0.028570  -1.275 0.202813    
SRS_sum     -0.193096   0.051174  -3.773 0.000181 ***
SSEIT_sum    0.063808   0.015612   4.087  5.1e-05 ***
DASS_D_sum  -0.004418   0.062523  -0.071 0.943701    
DASS_A_sum   0.179083   0.072326   2.476 0.013620 *  
DASS_S_sum   0.117970   0.075884   1.555 0.120685    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.898 on 491 degrees of freedom
Multiple R-squared:  0.3888,    Adjusted R-squared:  0.3726 
F-statistic: 24.03 on 13 and 491 DF,  p-value: < 2.2e-16
# create table depicting main stats to export later
mturk_reg_SAD_dep_t <- 
      rbind(tidy(mturk_reg_SAD_dep), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(mturk_reg_SAD_dep)$fstatistic[2], summary(mturk_reg_SAD_dep)$r.squared, nrow(mturk_reg_SAD_dep$model)), 
             "std.error" = c(summary(mturk_reg_SAD_dep)$fstatistic[3], summary(mturk_reg_SAD_dep)$adj.r.squared, NA), 
             "statistic" = c(summary(mturk_reg_SAD_dep)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(mturk_reg_SAD_dep)$fstatistic[1], summary(mturk_reg_SAD_dep)$fstatistic[2], summary(mturk_reg_SAD_dep)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(mturk_reg_SAD_dep_t, caption = "Multiple Regression Model Predicting SAD_dep Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "mturk" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_dep Score
term estimate std.error statistic p.value
(Intercept) 0.956 3.337 0.286 0.775
age -0.040 0.020 -2.052 0.041
BIS_sum -0.007 0.061 -0.109 0.913
NEO_O_sum -0.060 0.031 -1.945 0.052
NEO_C_sum 0.128 0.045 2.814 0.005
NEO_E_sum 0.066 0.027 2.422 0.016
NEO_A_sum 0.028 0.035 0.804 0.422
NEO_N_sum 0.107 0.032 3.368 0.001
RSES_sum -0.036 0.029 -1.275 0.203
SRS_sum -0.193 0.051 -3.773 0.000
SSEIT_sum 0.064 0.016 4.087 0.000
DASS_D_sum -0.004 0.063 -0.071 0.944
DASS_A_sum 0.179 0.072 2.476 0.014
DASS_S_sum 0.118 0.076 1.555 0.121
f_stat 13.000 491.000 24.027 0.000
R2/Adj.R2 0.389 0.373
N 505.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
mturk_reg_SAD_dep_plot <- 
  sjPlot::plot_model(model = mturk_reg_SAD_dep, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (Mturk)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
mturk_reg_SAD_dep_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_reg_SAD_dep_plot(oct28)", plot = mturk_reg_SAD_dep_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)

  
# export csv files of lm table
  write.csv(mturk_reg_SAD_dep_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_reg_SAD_dep_t(oct28).csv", row.names = T)
SAD - Accessibility

This regression used the following formula: \(SAD_access = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 491) = 15.3007298, p < .001, R2 = 0.29
# run lm
mturk_reg_SAD_access <- lm(data = Mturk_data, formula = SAD_access_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(mturk_reg_SAD_access)

Call:
lm(formula = SAD_access_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-13.235  -2.023   0.375   2.393   9.456 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3.26598    3.22644  -1.012 0.311914    
age         -0.02738    0.01896  -1.444 0.149389    
BIS_sum      0.03868    0.05931   0.652 0.514642    
NEO_O_sum   -0.01248    0.02989  -0.418 0.676449    
NEO_C_sum    0.17894    0.04381   4.084 5.16e-05 ***
NEO_E_sum    0.05025    0.02645   1.900 0.057980 .  
NEO_A_sum    0.01773    0.03390   0.523 0.601136    
NEO_N_sum    0.11401    0.03067   3.718 0.000224 ***
RSES_sum    -0.04355    0.02763  -1.576 0.115607    
SRS_sum     -0.11141    0.04948  -2.251 0.024804 *  
SSEIT_sum    0.05552    0.01510   3.678 0.000261 ***
DASS_D_sum   0.06866    0.06046   1.136 0.256623    
DASS_A_sum   0.06017    0.06994   0.860 0.389996    
DASS_S_sum   0.09398    0.07338   1.281 0.200891    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.77 on 491 degrees of freedom
Multiple R-squared:  0.2883,    Adjusted R-squared:  0.2695 
F-statistic:  15.3 on 13 and 491 DF,  p-value: < 2.2e-16
# create table depicting main stats to export later
mturk_reg_SAD_access_t <- 
      rbind(tidy(mturk_reg_SAD_access), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(mturk_reg_SAD_access)$fstatistic[2], summary(mturk_reg_SAD_access)$r.squared, nrow(mturk_reg_SAD_access$model)), 
             "std.error" = c(summary(mturk_reg_SAD_access)$fstatistic[3], summary(mturk_reg_SAD_access)$adj.r.squared, NA), 
             "statistic" = c(summary(mturk_reg_SAD_access)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(mturk_reg_SAD_access)$fstatistic[1], summary(mturk_reg_SAD_access)$fstatistic[2], summary(mturk_reg_SAD_access)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(mturk_reg_SAD_access_t, caption = "Multiple Regression Model Predicting SAD_access Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "mturk" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_access Score
term estimate std.error statistic p.value
(Intercept) -3.266 3.226 -1.012 0.312
age -0.027 0.019 -1.444 0.149
BIS_sum 0.039 0.059 0.652 0.515
NEO_O_sum -0.012 0.030 -0.418 0.676
NEO_C_sum 0.179 0.044 4.084 0.000
NEO_E_sum 0.050 0.026 1.900 0.058
NEO_A_sum 0.018 0.034 0.523 0.601
NEO_N_sum 0.114 0.031 3.718 0.000
RSES_sum -0.044 0.028 -1.576 0.116
SRS_sum -0.111 0.049 -2.251 0.025
SSEIT_sum 0.056 0.015 3.678 0.000
DASS_D_sum 0.069 0.060 1.136 0.257
DASS_A_sum 0.060 0.070 0.860 0.390
DASS_S_sum 0.094 0.073 1.281 0.201
f_stat 13.000 491.000 15.301 0.000
R2/Adj.R2 0.288 0.269
N 505.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
mturk_reg_SAD_access_plot <- 
  sjPlot::plot_model(model = mturk_reg_SAD_access, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (Mturk)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
mturk_reg_SAD_access_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_reg_SAD_access_plot(oct28)", plot = mturk_reg_SAD_access_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)

  
# export csv files of lm table
  write.csv(mturk_reg_SAD_access_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_reg_SAD_access_t(oct28).csv", row.names = T)
SAD - Emotional Attachment

This regression used the following formula: \(SAD_ea = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 491) = 42.7396262, p < .001, R2 = 0.53
# run lm
mturk_reg_SAD_ea <- lm(data = Mturk_data, formula = SAD_ea_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(mturk_reg_SAD_ea)

Call:
lm(formula = SAD_ea_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-15.406  -2.307   0.234   2.349  12.112 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  8.790959   3.354981   2.620 0.009058 ** 
age         -0.052280   0.019714  -2.652 0.008261 ** 
BIS_sum     -0.098030   0.061672  -1.590 0.112582    
NEO_O_sum   -0.069942   0.031086  -2.250 0.024893 *  
NEO_C_sum    0.052487   0.045557   1.152 0.249839    
NEO_E_sum    0.096066   0.027499   3.493 0.000520 ***
NEO_A_sum   -0.045495   0.035251  -1.291 0.197453    
NEO_N_sum    0.090811   0.031889   2.848 0.004588 ** 
RSES_sum    -0.006332   0.028727  -0.220 0.825630    
SRS_sum     -0.333303   0.051455  -6.478 2.27e-10 ***
SSEIT_sum    0.132213   0.015698   8.422 4.09e-16 ***
DASS_D_sum   0.093128   0.062867   1.481 0.139154    
DASS_A_sum   0.274020   0.072723   3.768 0.000185 ***
DASS_S_sum  -0.085472   0.076301  -1.120 0.263178    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.92 on 491 degrees of freedom
Multiple R-squared:  0.5309,    Adjusted R-squared:  0.5184 
F-statistic: 42.74 on 13 and 491 DF,  p-value: < 2.2e-16
# create table depicting main stats to export later
mturk_reg_SAD_ea_t <- 
      rbind(tidy(mturk_reg_SAD_ea), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(mturk_reg_SAD_ea)$fstatistic[2], summary(mturk_reg_SAD_ea)$r.squared, nrow(mturk_reg_SAD_ea$model)), 
             "std.error" = c(summary(mturk_reg_SAD_ea)$fstatistic[3], summary(mturk_reg_SAD_ea)$adj.r.squared, NA), 
             "statistic" = c(summary(mturk_reg_SAD_ea)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(mturk_reg_SAD_ea)$fstatistic[1], summary(mturk_reg_SAD_ea)$fstatistic[2], summary(mturk_reg_SAD_ea)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(mturk_reg_SAD_ea_t, caption = "Multiple Regression Model Predicting SAD_ea Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "mturk" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_ea Score
term estimate std.error statistic p.value
(Intercept) 8.791 3.355 2.620 0.009
age -0.052 0.020 -2.652 0.008
BIS_sum -0.098 0.062 -1.590 0.113
NEO_O_sum -0.070 0.031 -2.250 0.025
NEO_C_sum 0.052 0.046 1.152 0.250
NEO_E_sum 0.096 0.027 3.493 0.001
NEO_A_sum -0.045 0.035 -1.291 0.197
NEO_N_sum 0.091 0.032 2.848 0.005
RSES_sum -0.006 0.029 -0.220 0.826
SRS_sum -0.333 0.051 -6.478 0.000
SSEIT_sum 0.132 0.016 8.422 0.000
DASS_D_sum 0.093 0.063 1.481 0.139
DASS_A_sum 0.274 0.073 3.768 0.000
DASS_S_sum -0.085 0.076 -1.120 0.263
f_stat 13.000 491.000 42.740 0.000
R2/Adj.R2 0.531 0.518
N 505.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
mturk_reg_SAD_ea_plot <- 
  sjPlot::plot_model(model = mturk_reg_SAD_ea, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (Mturk)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
mturk_reg_SAD_ea_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_reg_SAD_ea_plot(oct28)", plot = mturk_reg_SAD_ea_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)

  
# export csv files of lm table
  write.csv(mturk_reg_SAD_ea_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_reg_SAD_ea_t(oct28).csv", row.names = T)
SAD - Distractibility

This regression used the following formula: \(SAD_dist = age + BIS + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SRS + SSEIT + DASS: D + DASS: A + DASS: S\)

Results indicate that:

  • over all model was significant, F(13, 491) = 60.8601971, p < .001, R2 = 0.62
# run lm
mturk_reg_SAD_dist <- lm(data = Mturk_data, formula = SAD_dist_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum)

# show summary of lm
summary(mturk_reg_SAD_dist)

Call:
lm(formula = SAD_dist_sum ~ age + BIS_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SRS_sum + 
    SSEIT_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum, data = Mturk_data)

Residuals:
   Min     1Q Median     3Q    Max 
-7.848 -1.325  0.077  1.411  7.510 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  8.816919   1.790808   4.923 1.16e-06 ***
age         -0.021940   0.010523  -2.085 0.037582 *  
BIS_sum     -0.001808   0.032919  -0.055 0.956233    
NEO_O_sum   -0.049463   0.016593  -2.981 0.003015 ** 
NEO_C_sum   -0.025952   0.024317  -1.067 0.286391    
NEO_E_sum    0.050035   0.014678   3.409 0.000706 ***
NEO_A_sum    0.006152   0.018816   0.327 0.743842    
NEO_N_sum    0.031955   0.017022   1.877 0.061069 .  
RSES_sum    -0.020690   0.015334  -1.349 0.177872    
SRS_sum     -0.256086   0.027466  -9.324  < 2e-16 ***
SSEIT_sum    0.055437   0.008379   6.616 9.66e-11 ***
DASS_D_sum   0.034926   0.033557   1.041 0.298479    
DASS_A_sum   0.133196   0.038818   3.431 0.000651 ***
DASS_S_sum   0.027792   0.040728   0.682 0.495324    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.092 on 491 degrees of freedom
Multiple R-squared:  0.6171,    Adjusted R-squared:  0.6069 
F-statistic: 60.86 on 13 and 491 DF,  p-value: < 2.2e-16
# create table depicting main stats to export later
mturk_reg_SAD_dist_t <- 
      rbind(tidy(mturk_reg_SAD_dist), # use tidy() in broom package
      tibble("term" = c("f_stat", "R2/Adj.R2", "N"), 
             "estimate" = c(summary(mturk_reg_SAD_dist)$fstatistic[2], summary(mturk_reg_SAD_dist)$r.squared, nrow(mturk_reg_SAD_dist$model)), 
             "std.error" = c(summary(mturk_reg_SAD_dist)$fstatistic[3], summary(mturk_reg_SAD_dist)$adj.r.squared, NA), 
             "statistic" = c(summary(mturk_reg_SAD_dist)$fstatistic[1], rep(NA, 2)), 
             "p.value" = c(pf(summary(mturk_reg_SAD_dist)$fstatistic[1], summary(mturk_reg_SAD_dist)$fstatistic[2], summary(mturk_reg_SAD_dist)$fstatistic[3], lower.tail = F), rep(NA, 2))
             )
      )

# remove NA from kable tables
options(knitr.kable.NA = '') 

# show kable table
kable(mturk_reg_SAD_dist_t, caption = "Multiple Regression Model Predicting SAD_dist Score", align = rep('lcccc'), digits =3) %>% 
  kable_paper(full_width = F) %>%
  # add_header_above(c(" ", "mturk" = 2, "Mturk" = 2)) %>%
  # pack_rows("Criterion(s)", 1, 6) %>%
  # # column_spec(1, width = "10em") %>% 
  # pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Multiple Regression Model Predicting SAD_dist Score
term estimate std.error statistic p.value
(Intercept) 8.817 1.791 4.923 0.000
age -0.022 0.011 -2.085 0.038
BIS_sum -0.002 0.033 -0.055 0.956
NEO_O_sum -0.049 0.017 -2.981 0.003
NEO_C_sum -0.026 0.024 -1.067 0.286
NEO_E_sum 0.050 0.015 3.409 0.001
NEO_A_sum 0.006 0.019 0.327 0.744
NEO_N_sum 0.032 0.017 1.877 0.061
RSES_sum -0.021 0.015 -1.349 0.178
SRS_sum -0.256 0.027 -9.324 0.000
SSEIT_sum 0.055 0.008 6.616 0.000
DASS_D_sum 0.035 0.034 1.041 0.298
DASS_A_sum 0.133 0.039 3.431 0.001
DASS_S_sum 0.028 0.041 0.682 0.495
f_stat 13.000 491.000 60.860 0.000
R2/Adj.R2 0.617 0.607
N 505.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

# reset NA vals in kable tables to "NA"
options(knitr.kable.NA = NA) 

# make colour pal
reg_colours <- c("#414535", "#08605F", "#3F826D", "#858585", "#DDA448", "#F0803C", "#98410B" ) # green > orange

# plot lm
  # plot standardized betas to compare cooefficients
mturk_reg_SAD_dist_plot <- 
  sjPlot::plot_model(model = mturk_reg_SAD_dist, # lm output 
                     # title = c("Standardized beta Coefficients for Multiple Regression Model Predicting NMPQ Score (Mturk)"),
                     title = "", # to remove title
                     type = "std", # type "std" = standardized betas
                     #sort.est = T, # sort based on betas (highest on top)
                     wrap.title = 55, # char length of each title line
                     # axis.labels = c("INSERT PRED NAMES")
                     grid.breaks = .25, # x-axis breaks 
                     #se = T # use se instead of CI
                     colors = reg_colours,
                     show.values = T, # show betas
                     show.p = T, # show * for sig p
                     value.offset = 0.40, # offset to beta labels
                     value.size = 3, # size of beta labels
                     digits = 2, # num decimals in beta labels
                     dot.size = 2.5, line.size = 1.5, 
                     vline.color = "black",
                     group.terms = c(1, 2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 7, 7),
                     axis.labels = c("DASS: S", "DASS: A", "DASS: D", "SSEIT", "SRS", "RSES", "NEO: N", "NEO: A", "NEO: E", "NEO: C", "NEO: O", "BIS", "Age"), 
                     axis.title = "Standardized Beta Coefficient", 
                     width = .5
                     ) +
    font_size(offset.x = 10) +
    font_size(base.theme = theme_classic())

# show plot
mturk_reg_SAD_dist_plot

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/mturk_reg_SAD_dist_plot(oct28)", plot = mturk_reg_SAD_dist_plot, device = "jpeg", height = 6.5, width = 5, units = "in", dpi = 1000)

  
# export csv files of lm table
  write.csv(mturk_reg_SAD_dist_t,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_reg_SAD_dist_t(oct28).csv", row.names = T)

Exploratory Analyses: Assessing Screen Time

This data only included ps who reported both having an iPhone (SONA = 209; Mturk = 248) and had ST activated prior to the study (SONA = 175 ; Mturk = 162) rather than the total sample (SONA = 240; Mturk = 505).

Assumption Tests

All assumptions were met for the correlation analysis. Click here to see the assumption tests.

The assumptions for a correlation analysis were tested. There were two assumptions: (1) Linearity and (2) Normality.

  1. Linearity was visually inspected from the scatter plots (see plots in the “Figures: Scatter Plots” section).

  2. Normality was tested using (a) the Shapiro-Wilk normality test and

    1. visually inspected using a normality plot.
    • The Shapiro-Wilk normality test will show two values (i.e., W and p) and each test uses the following hypotheses: HN: the data are normally distributed and HA: the data are not normally distributed.

    • The normality plots used were Q-Q plots (quantile-quantile plots), which draw the correlation between a given sample and the theoretical normal distribution.

(a) Shapiro-Wilk Normality Test

The table depicts the results of the Shapiro-Wilks normality test for each measure. (click to see code)

# create a table to show results of all normality tests
corrs_reg_norm_test_sona_ST <- 
  as.data.frame(cbind(c("NMPQ", "SAD", "SAD_dep", "SAD_access", "SAD_ea", "SAD_dist", "age", "SRS", "DASS_D", 
                        "DASS_A", "DASS_S", "BIS", "SSEIT", "RSES", "NEO_N", "NEO_E", "NEO_O", "NEO_A", "NEO_C"), 
                 rbind(c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$NMPQ_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$NMPQ_sum)$p.value), # W & p-value for NMPQ_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_sum)$p.value), # W & p-value for SAD_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_dep_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_dep_sum)$p.value), # W & p-value for SAD_dep_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_access_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_access_sum)$p.value), # W & p-value for SAD_access_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_ea_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_ea_sum)$p.value), # W & p-value for SAD_ea_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_dist_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SAD_dist_sum)$p.value), # W & p-value for SAD_dist_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$age)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$age)$p.value), # W & p-value for age
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SRS_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SRS_sum)$p.value), # W & p-value for SRS_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$DASS_D_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$DASS_D_sum)$p.value), # W & p-value for DASS_D_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$DASS_A_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$DASS_A_sum)$p.value), # W & p-value for DASS_A_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$DASS_S_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$DASS_S_sum)$p.value), # W & p-value for DASS_S_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$BIS_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$BIS_sum)$p.value), # W & p-value for BIS_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$SSEIT_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$SSEIT_sum)$p.value), # W & p-value for SSEIT_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$RSES_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$RSES_sum)$p.value), # W & p-value for RSES_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_N_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_N_sum)$p.value), # W & p-value for NEO_N_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_E_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_E_sum)$p.value), # W & p-value for NEO_E_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_O_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_O_sum)$p.value), # W & p-value for NEO_O_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_A_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_A_sum)$p.value), # W & p-value for NEO_A_sum
                 c(shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_C_sum)$statistic, shapiro.test((SONA_data %>% filter(ST == "had ST"))$NEO_C_sum)$p.value) # W & p-value for NEO_C_sum
                 )))
  colnames(corrs_reg_norm_test_sona_ST) <- c("Measure", "W", "p")
  # make cols numeric & round to 3 decimals
  corrs_reg_norm_test_sona_ST$W <- as.numeric(corrs_reg_norm_test_sona_ST$W) %>% round(.,3)
  corrs_reg_norm_test_sona_ST$p <- as.numeric(corrs_reg_norm_test_sona_ST$p) %>% round(.,3)

corrs_reg_norm_test_mturk_ST <- 
  as.data.frame(cbind(c("NMPQ", "SAD", "SAD_dep", "SAD_access", "SAD_ea", "SAD_dist", "age", "SRS", "DASS_D", 
                        "DASS_A", "DASS_S", "BIS", "SSEIT", "RSES", "NEO_N", "NEO_E", "NEO_O", "NEO_A", "NEO_C"), 
                 rbind(c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NMPQ_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NMPQ_sum)$p.value), # W & p-value for NMPQ_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_sum)$p.value), # W & p-value for SAD_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_dep_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_dep_sum)$p.value), # W & p-value for SAD_dep_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_access_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_access_sum)$p.value), # W & p-value for SAD_access_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_ea_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_ea_sum)$p.value), # W & p-value for SAD_ea_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_dist_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SAD_dist_sum)$p.value), # W & p-value for SAD_dist_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$age)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$age)$p.value), # W & p-value for age
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SRS_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SRS_sum)$p.value), # W & p-value for SRS_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$DASS_D_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$DASS_D_sum)$p.value), # W & p-value for DASS_D_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$DASS_A_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$DASS_A_sum)$p.value), # W & p-value for DASS_A_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$DASS_S_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$DASS_S_sum)$p.value), # W & p-value for DASS_S_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$BIS_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$BIS_sum)$p.value), # W & p-value for BIS_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SSEIT_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$SSEIT_sum)$p.value), # W & p-value for SSEIT_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$RSES_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$RSES_sum)$p.value), # W & p-value for RSES_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_N_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_N_sum)$p.value), # W & p-value for NEO_N_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_E_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_E_sum)$p.value), # W & p-value for NEO_E_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_O_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_O_sum)$p.value), # W & p-value for NEO_O_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_A_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_A_sum)$p.value), # W & p-value for NEO_A_sum
                 c(shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_C_sum)$statistic, shapiro.test((Mturk_data %>% filter(ST == "had ST"))$NEO_C_sum)$p.value) # W & p-value for NEO_C_sum
                 )))
  colnames(corrs_reg_norm_test_mturk_ST) <- c("Measure", "W", "p")
  # make cols numeric & round to 3 decimals
  corrs_reg_norm_test_mturk_ST$W <- as.numeric(corrs_reg_norm_test_mturk_ST$W) %>% round(.,3)
  corrs_reg_norm_test_mturk_ST$p <- as.numeric(corrs_reg_norm_test_mturk_ST$p) %>% round(.,3)
  
# join into 1 large table
corrs_reg_norm_tests_ST_t <- cbind(corrs_reg_norm_test_sona_ST, corrs_reg_norm_test_mturk_ST[,2:3])

As seen in the table, most measures showed a significant result, indicating non-normality. The visual inspection of the Q-Q plots was completed next.

# show table using kable
kable(corrs_reg_norm_tests_ST_t, caption = "Shapiro-Wilks Normality Test for All Measures -- ST Data only", align = rep('lcccc')) %>% 
  kable_paper(full_width = F) %>%
  add_header_above(c(" ", "SONA" = 2, "Mturk" = 2)) %>%
  pack_rows("Criterion(s)", 1, 6) %>%
  # column_spec(1, width = "10em") %>% 
  pack_rows("Predictor(s)", 7, 19) %>%
  footnote(general = "Normality is met for non-significant p-values (i.e., greater than 0.05).") %>% 
  column_spec(c(4), border_left = T) %>% 
  kable_classic()
Shapiro-Wilks Normality Test for All Measures -- ST Data only
SONA
Mturk
Measure W p W p
Criterion(s)
NMPQ 0.986 0.084 0.914 0.000
SAD 0.967 0.000 0.930 0.000
SAD_dep 0.958 0.000 0.917 0.000
SAD_access 0.959 0.000 0.893 0.000
SAD_ea 0.970 0.001 0.917 0.000
SAD_dist 0.942 0.000 0.903 0.000
Predictor(s)
age 0.743 0.000 0.782 0.000
SRS 0.973 0.002 0.947 0.000
DASS_D 0.939 0.000 0.903 0.000
DASS_A 0.954 0.000 0.903 0.000
DASS_S 0.977 0.005 0.919 0.000
BIS 0.983 0.036 0.965 0.000
SSEIT 0.961 0.000 0.981 0.028
RSES 0.973 0.002 0.901 0.000
NEO_N 0.990 0.261 0.897 0.000
NEO_E 0.986 0.083 0.955 0.000
NEO_O 0.988 0.130 0.943 0.000
NEO_A 0.974 0.002 0.915 0.000
NEO_C 0.993 0.552 0.960 0.000
Note:
Normality is met for non-significant p-values (i.e., greater than 0.05).

(b) Q-Q Plots

Overall, the Q-Q plots show the data for all measures except age and age of first smartphone did fall along or close to the line. The age measures were not expected to be normally distributed; therefore, the analysis was completed for each measure. (click to see code)

# SONA - All
grid.arrange(ggqqplot((SONA_data %>% filter(ST == "had ST"))$NMPQ_sum, ylab = "NMPQ"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SAD_sum, ylab = "SAD"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SAD_dep_sum, ylab = "SAD_dep"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SAD_access_sum, ylab = "SAD_access"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SAD_ea_sum, ylab = "SAD_ea"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SAD_dist_sum, ylab = "SAD_dist"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$age, ylab = "age"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SRS_sum, ylab = "SRS"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$DASS_D_sum, ylab = "DASS_D"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$DASS_A_sum, ylab = "DASS_A"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$DASS_S_sum, ylab = "DASS_S"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$BIS_sum, ylab = "BIS"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$SSEIT_sum, ylab = "SSEIT"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$RSES_sum, ylab = "RSES"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$NEO_N_sum, ylab = "NEO_N"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$NEO_E_sum, ylab = "NEO_E"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$NEO_O_sum, ylab = "NEO_O"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$NEO_A_sum, ylab = "NEO_A"),
             ggqqplot((SONA_data %>% filter(ST == "had ST"))$NEO_C_sum, ylab = "NEO_C"),
             nrow = 4,
             top = text_grob("Q-Q Plots For SONA - ST", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to the line.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

# for MTURK - ALL
grid.arrange(ggqqplot((Mturk_data %>% filter(ST == "had ST"))$NMPQ_sum, ylab = "NMPQ"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SAD_sum, ylab = "SAD"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SAD_dep_sum, ylab = "SAD_dep"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SAD_access_sum, ylab = "SAD_access"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SAD_ea_sum, ylab = "SAD_ea"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SAD_dist_sum, ylab = "SAD_dist"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$age, ylab = "age"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SRS_sum, ylab = "SRS"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$DASS_D_sum, ylab = "DASS_D"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$DASS_A_sum, ylab = "DASS_A"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$DASS_S_sum, ylab = "DASS_S"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$BIS_sum, ylab = "BIS"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$SSEIT_sum, ylab = "SSEIT"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$RSES_sum, ylab = "RSES"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$NEO_N_sum, ylab = "NEO_N"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$NEO_E_sum, ylab = "NEO_E"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$NEO_O_sum, ylab = "NEO_O"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$NEO_A_sum, ylab = "NEO_A"),
             ggqqplot((Mturk_data %>% filter(ST == "had ST"))$NEO_C_sum, ylab = "NEO_C"),
             nrow = 4,
             top = text_grob("Q-Q Plots For Mturk - ST", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to the line.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

(c) Histogram Plots

Overall, the Q-Q plots show the data for all measures except age and age of first smartphone did fall along or close to the line. The age measures were not expected to be normally distributed; therefore, the analysis was completed for each measure. (click to see code)

# SONA - ST
grid.arrange(qplot((SONA_data %>% filter(ST == "had ST"))$NMPQ_sum, main = "NMPQ", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
               # qplot((SONA_data %>% filter(ST == "had ST"))$NMPQ_sum, geom = "density"),
             qplot((SONA_data %>% filter(ST == "had ST"))$SAD_sum, main = "SAD", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$SAD_dep_sum, main = "SAD_dep", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$SAD_access_sum, main = "SAD_access", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$SAD_ea_sum, main = "SAD_ea", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$SAD_dist_sum, main = "SAD_dist", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$age, main = "age", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$SRS_sum, main = "SRS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$DASS_D_sum, main = "DASS_D", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$DASS_A_sum, main = "DASS_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$DASS_S_sum, main = "DASS_S", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$BIS_sum, main = "BIS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$SSEIT_sum, main = "SSEIT", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$RSES_sum, main = "RSES", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$NEO_N_sum, main = "NEO_N", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$NEO_E_sum, main = "NEO_E", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$NEO_O_sum, main = "NEO_O", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$NEO_A_sum, main = "NEO_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((SONA_data %>% filter(ST == "had ST"))$NEO_C_sum, main = "NEO_C", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             nrow = 4,
             top = text_grob("Histogram For SONA Data - ST", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to a normal curve.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

# for MTURK - ST
grid.arrange(qplot((Mturk_data %>% filter(ST == "had ST"))$NMPQ_sum, main = "NMPQ", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
               # qplot((Mturk_data %>% filter(ST == "had ST"))$NMPQ_sum, geom = "density"),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SAD_sum, main = "SAD", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SAD_dep_sum, main = "SAD_dep", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SAD_access_sum, main = "SAD_access", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SAD_ea_sum, main = "SAD_ea", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SAD_dist_sum, main = "SAD_dist", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$age, main = "age", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SRS_sum, main = "SRS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$DASS_D_sum, main = "DASS_D", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$DASS_A_sum, main = "DASS_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$DASS_S_sum, main = "DASS_S", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$BIS_sum, main = "BIS", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$SSEIT_sum, main = "SSEIT", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$RSES_sum, main = "RSES", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$NEO_N_sum, main = "NEO_N", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$NEO_E_sum, main = "NEO_E", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$NEO_O_sum, main = "NEO_O", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$NEO_A_sum, main = "NEO_A", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             qplot((Mturk_data %>% filter(ST == "had ST"))$NEO_C_sum, main = "NEO_C", ylab = "freq", xlab = "Score", binwidth = 1) + theme_classic() + theme(axis.text = element_text(colour = "black")),
             nrow = 4,
             top = text_grob("Histogram For Mturk Data - ST", 
                             face = "bold"), 
             bottom = text_grob("Normality is met for plots were data falls along or close to a normal curve.", 
                                face = "italic", 
                                x = 0.05, 
                                hjust = 0)
             )

Correlations

This data only included ps who reported both having an iPhone (SONA = 209; Mturk = 248) and had ST activated prior to the study (SONA = 175 ; Mturk = 162) rather than the total sample (SONA = 240; Mturk = 505).

Study 1: SONA

sona_ST_corr <- 
  SONA_data %>% 
  filter(ST == "had ST") %>% 
  # select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, ends_with("_sum")) %>%
  select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, 
         NMPQ_sum, 
         SAD_sum, SAD_dep_sum, SAD_ea_sum, SAD_access_sum, SAD_dist_sum, # add or remove the SAD subscales / overall
         BIS_sum, NEO_O_sum, NEO_C_sum, NEO_E_sum, NEO_A_sum, NEO_N_sum, RSES_sum, SRS_sum, SSEIT_sum, DASS_D_sum, DASS_A_sum, DASS_S_sum) %>% 
  as.matrix() %>% 
  Hmisc::rcorr(type = c("pearson"))

# create new pilot_corr to shown only lower triangle... 
sona_ST_corr2 <- sona_ST_corr
# round to 4 decimals... 
sona_ST_corr2$r <- round(sona_ST_corr2$r, 4)
sona_ST_corr2$P <- round(sona_ST_corr2$P, 4)
sona_ST_corr2$n <- round(sona_ST_corr2$n, 4)
# remove upper triangle form r, p, and n
sona_ST_corr2$r[upper.tri(sona_ST_corr2$r)] <- "-"
sona_ST_corr2$P[upper.tri(sona_ST_corr2$P)] <- "-"
sona_ST_corr2$n[upper.tri(sona_ST_corr2$n)] <- "-"

# show corr table with flattenCorr

kable(flattenCorrMatrix(sona_ST_corr$r, sona_ST_corr$P), caption = "SONA Study - ST - Correlation: Flat") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - ST - Correlation: Flat
row column cor p
age age_first_phone 0.1688723 0.0254811
age com_gen 0.0972295 0.2005302
age_first_phone com_gen 0.1648607 0.0292416
age com_unattended 0.1962586 0.0092408
age_first_phone com_unattended 0.0996381 0.1895507
com_gen com_unattended 0.3953597 0.0000001
age com_leave_with_others 0.1942871 0.0099848
age_first_phone com_leave_with_others 0.1313528 0.0831496
com_gen com_leave_with_others 0.5685787 0.0000000
com_unattended com_leave_with_others 0.6045518 0.0000000
age com_locked -0.1294428 0.0877689
age_first_phone com_locked -0.1620136 0.0321894
com_gen com_locked -0.1791602 0.0176773
com_unattended com_locked -0.1014291 0.1816762
com_leave_with_others com_locked -0.2107763 0.0051126
age com_room_task 0.0853554 0.2613931
age_first_phone com_room_task 0.0625501 0.4108859
com_gen com_room_task 0.3753834 0.0000003
com_unattended com_room_task 0.4602589 0.0000000
com_leave_with_others com_room_task 0.4362201 0.0000000
com_locked com_room_task 0.0285460 0.7076613
age dist_daily -0.0703934 0.3546055
age_first_phone dist_daily -0.1634567 0.0306652
com_gen dist_daily 0.0969812 0.2016877
com_unattended dist_daily 0.0908530 0.2318005
com_leave_with_others dist_daily 0.0176549 0.8166183
com_locked dist_daily 0.2120712 0.0048406
com_room_task dist_daily 0.0327543 0.6669711
age dist_study -0.0236268 0.7562893
age_first_phone dist_study -0.0402072 0.5972956
com_gen dist_study -0.1208710 0.1110791
com_unattended dist_study -0.1910365 0.0113275
com_leave_with_others dist_study -0.1691085 0.0252732
com_locked dist_study -0.0846563 0.2653339
com_room_task dist_study -0.2249017 0.0027690
dist_daily dist_study 0.3409685 0.0000039
age NMPQ_sum 0.0472854 0.5343418
age_first_phone NMPQ_sum -0.0795809 0.2951583
com_gen NMPQ_sum -0.0955740 0.2083388
com_unattended NMPQ_sum -0.2068664 0.0060189
com_leave_with_others NMPQ_sum -0.1879610 0.0127415
com_locked NMPQ_sum 0.1846129 0.0144548
com_room_task NMPQ_sum -0.1976222 0.0087553
dist_daily NMPQ_sum 0.2577841 0.0005729
dist_study NMPQ_sum 0.2776287 0.0001994
age SAD_sum -0.0576671 0.4484340
age_first_phone SAD_sum -0.1399986 0.0646246
com_gen SAD_sum -0.0834805 0.2720527
com_unattended SAD_sum -0.1350661 0.0747285
com_leave_with_others SAD_sum -0.1831861 0.0152441
com_locked SAD_sum 0.2493271 0.0008767
com_room_task SAD_sum -0.1761044 0.0197430
dist_daily SAD_sum 0.3406136 0.0000040
dist_study SAD_sum 0.2576632 0.0005765
NMPQ_sum SAD_sum 0.7570728 0.0000000
age SAD_dep_sum -0.0315556 0.6784690
age_first_phone SAD_dep_sum -0.0890978 0.2409803
com_gen SAD_dep_sum -0.1372909 0.0700230
com_unattended SAD_dep_sum -0.1705544 0.0240322
com_leave_with_others SAD_dep_sum -0.2377604 0.0015334
com_locked SAD_dep_sum 0.1913094 0.0112089
com_room_task SAD_dep_sum -0.2763838 0.0002136
dist_daily SAD_dep_sum 0.2472923 0.0009692
dist_study SAD_dep_sum 0.2105099 0.0051702
NMPQ_sum SAD_dep_sum 0.6707269 0.0000000
SAD_sum SAD_dep_sum 0.8425951 0.0000000
age SAD_ea_sum -0.0871586 0.2514145
age_first_phone SAD_ea_sum -0.0979790 0.1970651
com_gen SAD_ea_sum -0.0653270 0.3903852
com_unattended SAD_ea_sum -0.1541136 0.0417200
com_leave_with_others SAD_ea_sum -0.1032765 0.1738084
com_locked SAD_ea_sum 0.1956892 0.0094504
com_room_task SAD_ea_sum -0.0718206 0.3449100
dist_daily SAD_ea_sum 0.2348180 0.0017603
dist_study SAD_ea_sum 0.2019989 0.0073460
NMPQ_sum SAD_ea_sum 0.5849794 0.0000000
SAD_sum SAD_ea_sum 0.8175759 0.0000000
SAD_dep_sum SAD_ea_sum 0.5009174 0.0000000
age SAD_access_sum 0.0299549 0.6939391
age_first_phone SAD_access_sum -0.1660057 0.0281229
com_gen SAD_access_sum -0.0888762 0.2421573
com_unattended SAD_access_sum -0.0651298 0.3918202
com_leave_with_others SAD_access_sum -0.1573667 0.0375417
com_locked SAD_access_sum 0.2253985 0.0027081
com_room_task SAD_access_sum -0.1247957 0.0998668
dist_daily SAD_access_sum 0.3008648 0.0000522
dist_study SAD_access_sum 0.1841305 0.0147176
NMPQ_sum SAD_access_sum 0.6641953 0.0000000
SAD_sum SAD_access_sum 0.8123703 0.0000000
SAD_dep_sum SAD_access_sum 0.6148846 0.0000000
SAD_ea_sum SAD_access_sum 0.5492330 0.0000000
age SAD_dist_sum -0.1110425 0.1434796
age_first_phone SAD_dist_sum -0.0676824 0.3734881
com_gen SAD_dist_sum 0.0495967 0.5145287
com_unattended SAD_dist_sum 0.0078958 0.9174038
com_leave_with_others SAD_dist_sum -0.0252533 0.7400942
com_locked SAD_dist_sum 0.1931676 0.0104304
com_room_task SAD_dist_sum -0.0534328 0.4825013
dist_daily SAD_dist_sum 0.3618681 0.0000009
dist_study SAD_dist_sum 0.2122725 0.0047995
NMPQ_sum SAD_dist_sum 0.3570847 0.0000012
SAD_sum SAD_dist_sum 0.6418540 0.0000000
SAD_dep_sum SAD_dist_sum 0.4022527 0.0000000
SAD_ea_sum SAD_dist_sum 0.5371919 0.0000000
SAD_access_sum SAD_dist_sum 0.3453312 0.0000029
age BIS_sum 0.0618765 0.4159527
age_first_phone BIS_sum -0.0862467 0.2564274
com_gen BIS_sum -0.0022480 0.9764460
com_unattended BIS_sum -0.0122131 0.8725565
com_leave_with_others BIS_sum -0.0285823 0.7073068
com_locked BIS_sum -0.1393615 0.0658632
com_room_task BIS_sum -0.0044090 0.9538217
dist_daily BIS_sum 0.0558306 0.4630409
dist_study BIS_sum 0.2369060 0.0015964
NMPQ_sum BIS_sum 0.0661642 0.3843270
SAD_sum BIS_sum 0.1333432 0.0785456
SAD_dep_sum BIS_sum 0.1658938 0.0282306
SAD_ea_sum BIS_sum 0.0775315 0.3078088
SAD_access_sum BIS_sum 0.0399414 0.5997238
SAD_dist_sum BIS_sum 0.1206317 0.1117933
age NEO_O_sum 0.0729699 0.3372245
age_first_phone NEO_O_sum -0.0219482 0.7731163
com_gen NEO_O_sum 0.0383700 0.6141665
com_unattended NEO_O_sum 0.1256026 0.0976765
com_leave_with_others NEO_O_sum 0.0658477 0.3866101
com_locked NEO_O_sum 0.1044306 0.1690228
com_room_task NEO_O_sum 0.1158949 0.1266841
dist_daily NEO_O_sum 0.2042253 0.0067097
dist_study NEO_O_sum -0.0437646 0.5652390
NMPQ_sum NEO_O_sum -0.0854043 0.2611191
SAD_sum NEO_O_sum -0.0518662 0.4954490
SAD_dep_sum NEO_O_sum -0.1587019 0.0359319
SAD_ea_sum NEO_O_sum -0.0330323 0.6643157
SAD_access_sum NEO_O_sum 0.0000346 0.9996374
SAD_dist_sum NEO_O_sum 0.1140937 0.1327321
BIS_sum NEO_O_sum 0.0068489 0.9283239
age NEO_C_sum 0.0075447 0.9210645
age_first_phone NEO_C_sum 0.0467311 0.5391493
com_gen NEO_C_sum -0.0528792 0.4870560
com_unattended NEO_C_sum 0.0356694 0.6393345
com_leave_with_others NEO_C_sum -0.0051054 0.9465379
com_locked NEO_C_sum 0.1805264 0.0168162
com_room_task NEO_C_sum 0.0363486 0.6329642
dist_daily NEO_C_sum -0.0270101 0.7227290
dist_study NEO_C_sum -0.1276374 0.0923216
NMPQ_sum NEO_C_sum -0.0504330 0.5074547
SAD_sum NEO_C_sum -0.1309741 0.0840495
SAD_dep_sum NEO_C_sum -0.2111299 0.0050370
SAD_ea_sum NEO_C_sum -0.0836134 0.2712875
SAD_access_sum NEO_C_sum -0.0176174 0.8170004
SAD_dist_sum NEO_C_sum -0.0317457 0.6766403
BIS_sum NEO_C_sum -0.6902587 0.0000000
NEO_O_sum NEO_C_sum 0.0823753 0.2784728
age NEO_E_sum 0.0507162 0.5050703
age_first_phone NEO_E_sum -0.0601106 0.4294080
com_gen NEO_E_sum 0.1739198 0.0213450
com_unattended NEO_E_sum 0.1012908 0.1822756
com_leave_with_others NEO_E_sum 0.1266477 0.0948961
com_locked NEO_E_sum 0.2079020 0.0057659
com_room_task NEO_E_sum 0.1762302 0.0196540
dist_daily NEO_E_sum 0.2447902 0.0010951
dist_study NEO_E_sum 0.0245084 0.7474974
NMPQ_sum NEO_E_sum 0.0838447 0.2699592
SAD_sum NEO_E_sum 0.0710299 0.3502605
SAD_dep_sum NEO_E_sum -0.0383420 0.6144253
SAD_ea_sum NEO_E_sum 0.1172171 0.1223815
SAD_access_sum NEO_E_sum 0.0690751 0.3637121
SAD_dist_sum NEO_E_sum 0.1484915 0.0498595
BIS_sum NEO_E_sum -0.1619068 0.0323046
NEO_O_sum NEO_E_sum 0.3887823 0.0000001
NEO_C_sum NEO_E_sum 0.3619939 0.0000009
age NEO_A_sum 0.0153008 0.8407210
age_first_phone NEO_A_sum 0.0334214 0.6606047
com_gen NEO_A_sum 0.2735258 0.0002497
com_unattended NEO_A_sum 0.1949777 0.0097184
com_leave_with_others NEO_A_sum 0.2501818 0.0008404
com_locked NEO_A_sum 0.0884671 0.2443402
com_room_task NEO_A_sum 0.1999953 0.0079640
dist_daily NEO_A_sum 0.1560412 0.0391995
dist_study NEO_A_sum -0.1535253 0.0425158
NMPQ_sum NEO_A_sum -0.0142654 0.8513703
SAD_sum NEO_A_sum -0.1156601 0.1274601
SAD_dep_sum NEO_A_sum -0.1289943 0.0888828
SAD_ea_sum NEO_A_sum -0.1474464 0.0515095
SAD_access_sum NEO_A_sum -0.0172594 0.8206562
SAD_dist_sum NEO_A_sum -0.0439335 0.5637371
BIS_sum NEO_A_sum -0.2728845 0.0002585
NEO_O_sum NEO_A_sum 0.2340391 0.0018253
NEO_C_sum NEO_A_sum 0.3789149 0.0000002
NEO_E_sum NEO_A_sum 0.2879350 0.0001116
age NEO_N_sum 0.0584415 0.4423535
age_first_phone NEO_N_sum 0.0179703 0.8134012
com_gen NEO_N_sum -0.0274404 0.7184965
com_unattended NEO_N_sum 0.0346750 0.6487089
com_leave_with_others NEO_N_sum 0.0188598 0.8043471
com_locked NEO_N_sum -0.0456978 0.5481684
com_room_task NEO_N_sum -0.0258273 0.7344055
dist_daily NEO_N_sum 0.1884676 0.0124984
dist_study NEO_N_sum 0.1506377 0.0466089
NMPQ_sum NEO_N_sum 0.2009244 0.0076719
SAD_sum NEO_N_sum 0.2196188 0.0034981
SAD_dep_sum NEO_N_sum 0.2156473 0.0041556
SAD_ea_sum NEO_N_sum 0.1382264 0.0681179
SAD_access_sum NEO_N_sum 0.1802215 0.0170052
SAD_dist_sum NEO_N_sum 0.1654218 0.0286888
BIS_sum NEO_N_sum 0.3827954 0.0000002
NEO_O_sum NEO_N_sum -0.0029449 0.9691465
NEO_C_sum NEO_N_sum -0.3445181 0.0000030
NEO_E_sum NEO_N_sum -0.2358217 0.0016797
NEO_A_sum NEO_N_sum -0.0283753 0.7093309
age RSES_sum -0.0860646 0.2574366
age_first_phone RSES_sum -0.0193382 0.7994873
com_gen RSES_sum -0.0800603 0.2922492
com_unattended RSES_sum -0.0342580 0.6526565
com_leave_with_others RSES_sum 0.0428018 0.5738332
com_locked RSES_sum -0.1370273 0.0705677
com_room_task RSES_sum -0.0490359 0.5193015
dist_daily RSES_sum -0.0539158 0.4785461
dist_study RSES_sum -0.0427553 0.5742503
NMPQ_sum RSES_sum 0.0193572 0.7992948
SAD_sum RSES_sum 0.0132049 0.8623052
SAD_dep_sum RSES_sum 0.0627251 0.4095756
SAD_ea_sum RSES_sum -0.0109395 0.8857503
SAD_access_sum RSES_sum 0.0393978 0.6047023
SAD_dist_sum RSES_sum -0.0938683 0.2166102
BIS_sum RSES_sum 0.0796187 0.2949279
NEO_O_sum RSES_sum -0.1264470 0.0954251
NEO_C_sum RSES_sum -0.1746016 0.0208334
NEO_E_sum RSES_sum -0.3750939 0.0000003
NEO_A_sum RSES_sum 0.0132418 0.8619248
NEO_N_sum RSES_sum 0.3909726 0.0000001
age SRS_sum 0.0075466 0.9210443
age_first_phone SRS_sum 0.1490404 0.0490108
com_gen SRS_sum 0.2207372 0.0033307
com_unattended SRS_sum 0.1074086 0.1571282
com_leave_with_others SRS_sum 0.1798413 0.0172434
com_locked SRS_sum 0.0624479 0.4116525
com_room_task SRS_sum 0.2341012 0.0018201
dist_daily SRS_sum -0.0927670 0.2220738
dist_study SRS_sum -0.2087932 0.0055557
NMPQ_sum SRS_sum -0.1374102 0.0697778
SAD_sum SRS_sum -0.1044563 0.1689176
SAD_dep_sum SRS_sum -0.1526780 0.0436843
SAD_ea_sum SRS_sum 0.0030769 0.9677644
SAD_access_sum SRS_sum -0.0783656 0.3026176
SAD_dist_sum SRS_sum -0.1022358 0.1782088
BIS_sum SRS_sum -0.5099163 0.0000000
NEO_O_sum SRS_sum -0.0028289 0.9703619
NEO_C_sum SRS_sum 0.4028258 0.0000000
NEO_E_sum SRS_sum 0.2636880 0.0004221
NEO_A_sum SRS_sum 0.1433851 0.0583570
NEO_N_sum SRS_sum -0.3624753 0.0000008
RSES_sum SRS_sum -0.2578226 0.0005718
age SSEIT_sum 0.0956789 0.2078375
age_first_phone SSEIT_sum -0.0066587 0.9303093
com_gen SSEIT_sum 0.1988311 0.0083439
com_unattended SSEIT_sum 0.2297235 0.0022268
com_leave_with_others SSEIT_sum 0.1495985 0.0481601
com_locked SSEIT_sum 0.2074733 0.0058694
com_room_task SSEIT_sum 0.1809906 0.0165321
dist_daily SSEIT_sum 0.2922581 0.0000869
dist_study SSEIT_sum -0.0059561 0.9376463
NMPQ_sum SSEIT_sum 0.1490683 0.0489679
SAD_sum SSEIT_sum 0.1795944 0.0173996
SAD_dep_sum SSEIT_sum 0.0761272 0.3166793
SAD_ea_sum SSEIT_sum 0.1537579 0.0421996
SAD_access_sum SSEIT_sum 0.1706472 0.0239544
SAD_dist_sum SSEIT_sum 0.2126047 0.0047324
BIS_sum SSEIT_sum -0.3249205 0.0000115
NEO_O_sum SSEIT_sum 0.3231261 0.0000129
NEO_C_sum SSEIT_sum 0.4476251 0.0000000
NEO_E_sum SSEIT_sum 0.6627682 0.0000000
NEO_A_sum SSEIT_sum 0.4246705 0.0000000
NEO_N_sum SSEIT_sum -0.1552224 0.0402541
RSES_sum SSEIT_sum -0.3723920 0.0000004
SRS_sum SSEIT_sum 0.2743378 0.0002389
age DASS_D_sum -0.0903063 0.2346328
age_first_phone DASS_D_sum -0.0432292 0.5700109
com_gen DASS_D_sum -0.1213869 0.1095515
com_unattended DASS_D_sum -0.0061240 0.9358925
com_leave_with_others DASS_D_sum -0.1054170 0.1650111
com_locked DASS_D_sum -0.0697907 0.3587508
com_room_task DASS_D_sum -0.1338476 0.0774122
dist_daily DASS_D_sum 0.0832252 0.2735268
dist_study DASS_D_sum 0.0755236 0.3205428
NMPQ_sum DASS_D_sum 0.1466795 0.0527488
SAD_sum DASS_D_sum 0.2113490 0.0049907
SAD_dep_sum DASS_D_sum 0.1110309 0.1435217
SAD_ea_sum DASS_D_sum 0.2452921 0.0010687
SAD_access_sum DASS_D_sum 0.1719059 0.0229200
SAD_dist_sum DASS_D_sum 0.1575485 0.0373190
BIS_sum DASS_D_sum 0.2842977 0.0001373
NEO_O_sum DASS_D_sum 0.0138485 0.8556656
NEO_C_sum DASS_D_sum -0.2341519 0.0018158
NEO_E_sum DASS_D_sum -0.1703873 0.0241729
NEO_A_sum DASS_D_sum -0.1300026 0.0863942
NEO_N_sum DASS_D_sum 0.3664640 0.0000006
RSES_sum DASS_D_sum 0.4671225 0.0000000
SRS_sum DASS_D_sum -0.4385616 0.0000000
SSEIT_sum DASS_D_sum -0.2628663 0.0004406
age DASS_A_sum -0.0024082 0.9747676
age_first_phone DASS_A_sum -0.0677533 0.3729863
com_gen DASS_A_sum -0.2261453 0.0026188
com_unattended DASS_A_sum 0.0005977 0.9937363
com_leave_with_others DASS_A_sum -0.1253224 0.0984327
com_locked DASS_A_sum -0.1179529 0.1200366
com_room_task DASS_A_sum -0.1405900 0.0634920
dist_daily DASS_A_sum -0.0110142 0.8849760
dist_study DASS_A_sum 0.2158005 0.0041283
NMPQ_sum DASS_A_sum 0.1243944 0.1009703
SAD_sum DASS_A_sum 0.1644917 0.0296102
SAD_dep_sum DASS_A_sum 0.1032357 0.1739791
SAD_ea_sum DASS_A_sum 0.1845370 0.0144959
SAD_access_sum DASS_A_sum 0.1038354 0.1714785
SAD_dist_sum DASS_A_sum 0.1718918 0.0229314
BIS_sum DASS_A_sum 0.3639482 0.0000007
NEO_O_sum DASS_A_sum 0.0097789 0.8978022
NEO_C_sum DASS_A_sum -0.2408140 0.0013264
NEO_E_sum DASS_A_sum -0.2013718 0.0075347
NEO_A_sum DASS_A_sum -0.2485367 0.0009116
NEO_N_sum DASS_A_sum 0.3338642 0.0000063
RSES_sum DASS_A_sum 0.2918566 0.0000890
SRS_sum DASS_A_sum -0.3468354 0.0000026
SSEIT_sum DASS_A_sum -0.2543605 0.0006818
DASS_D_sum DASS_A_sum 0.6037017 0.0000000
age DASS_S_sum 0.1138081 0.1337110
age_first_phone DASS_S_sum -0.0226106 0.7664626
com_gen DASS_S_sum -0.0653934 0.3899025
com_unattended DASS_S_sum 0.0666367 0.3809333
com_leave_with_others DASS_S_sum -0.0325064 0.6693422
com_locked DASS_S_sum -0.0428174 0.5736936
com_room_task DASS_S_sum -0.0061985 0.9351151
dist_daily DASS_S_sum 0.1117847 0.1408064
dist_study DASS_S_sum 0.1298221 0.0868355
NMPQ_sum DASS_S_sum 0.1964029 0.0091883
SAD_sum DASS_S_sum 0.2717917 0.0002743
SAD_dep_sum DASS_S_sum 0.1633149 0.0308121
SAD_ea_sum DASS_S_sum 0.2959500 0.0000700
SAD_access_sum DASS_S_sum 0.2026123 0.0071656
SAD_dist_sum DASS_S_sum 0.2313847 0.0020636
BIS_sum DASS_S_sum 0.3627733 0.0000008
NEO_O_sum DASS_S_sum 0.1012432 0.1824820
NEO_C_sum DASS_S_sum -0.2507247 0.0008180
NEO_E_sum DASS_S_sum -0.1007336 0.1847048
NEO_A_sum DASS_S_sum -0.1013780 0.1818974
NEO_N_sum DASS_S_sum 0.4868650 0.0000000
RSES_sum DASS_S_sum 0.2896199 0.0001013
SRS_sum DASS_S_sum -0.3798852 0.0000002
SSEIT_sum DASS_S_sum -0.1588421 0.0357664
DASS_D_sum DASS_S_sum 0.7248841 0.0000000
DASS_A_sum DASS_S_sum 0.7222178 0.0000000

# print tables using kable
kable(as.data.frame(format(sona_ST_corr2$r, scientific = FALSE)), caption = "SONA Study - ST - Correlation: r values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - ST - Correlation: r values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 1 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.1689 1 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 0.0972 0.1649 1 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 0.1963 0.0996 0.3954 1 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 0.1943 0.1314 0.5686 0.6046 1 - - - - - - - - - - - - - - - - - - - - - -
com_locked -0.1294 -0.162 -0.1792 -0.1014 -0.2108 1 - - - - - - - - - - - - - - - - - - - - -
com_room_task 0.0854 0.0626 0.3754 0.4603 0.4362 0.0285 1 - - - - - - - - - - - - - - - - - - - -
dist_daily -0.0704 -0.1635 0.097 0.0909 0.0177 0.2121 0.0328 1 - - - - - - - - - - - - - - - - - - -
dist_study -0.0236 -0.0402 -0.1209 -0.191 -0.1691 -0.0847 -0.2249 0.341 1 - - - - - - - - - - - - - - - - - -
NMPQ_sum 0.0473 -0.0796 -0.0956 -0.2069 -0.188 0.1846 -0.1976 0.2578 0.2776 1 - - - - - - - - - - - - - - - - -
SAD_sum -0.0577 -0.14 -0.0835 -0.1351 -0.1832 0.2493 -0.1761 0.3406 0.2577 0.7571 1 - - - - - - - - - - - - - - - -
SAD_dep_sum -0.0316 -0.0891 -0.1373 -0.1706 -0.2378 0.1913 -0.2764 0.2473 0.2105 0.6707 0.8426 1 - - - - - - - - - - - - - - -
SAD_ea_sum -0.0872 -0.098 -0.0653 -0.1541 -0.1033 0.1957 -0.0718 0.2348 0.202 0.585 0.8176 0.5009 1 - - - - - - - - - - - - - -
SAD_access_sum 0.03 -0.166 -0.0889 -0.0651 -0.1574 0.2254 -0.1248 0.3009 0.1841 0.6642 0.8124 0.6149 0.5492 1 - - - - - - - - - - - - -
SAD_dist_sum -0.111 -0.0677 0.0496 0.0079 -0.0253 0.1932 -0.0534 0.3619 0.2123 0.3571 0.6419 0.4023 0.5372 0.3453 1 - - - - - - - - - - - -
BIS_sum 0.0619 -0.0862 -0.0022 -0.0122 -0.0286 -0.1394 -0.0044 0.0558 0.2369 0.0662 0.1333 0.1659 0.0775 0.0399 0.1206 1 - - - - - - - - - - -
NEO_O_sum 0.073 -0.0219 0.0384 0.1256 0.0658 0.1044 0.1159 0.2042 -0.0438 -0.0854 -0.0519 -0.1587 -0.033 0 0.1141 0.0068 1 - - - - - - - - - -
NEO_C_sum 0.0075 0.0467 -0.0529 0.0357 -0.0051 0.1805 0.0363 -0.027 -0.1276 -0.0504 -0.131 -0.2111 -0.0836 -0.0176 -0.0317 -0.6903 0.0824 1 - - - - - - - - -
NEO_E_sum 0.0507 -0.0601 0.1739 0.1013 0.1266 0.2079 0.1762 0.2448 0.0245 0.0838 0.071 -0.0383 0.1172 0.0691 0.1485 -0.1619 0.3888 0.362 1 - - - - - - - -
NEO_A_sum 0.0153 0.0334 0.2735 0.195 0.2502 0.0885 0.2 0.156 -0.1535 -0.0143 -0.1157 -0.129 -0.1474 -0.0173 -0.0439 -0.2729 0.234 0.3789 0.2879 1 - - - - - - -
NEO_N_sum 0.0584 0.018 -0.0274 0.0347 0.0189 -0.0457 -0.0258 0.1885 0.1506 0.2009 0.2196 0.2156 0.1382 0.1802 0.1654 0.3828 -0.0029 -0.3445 -0.2358 -0.0284 1 - - - - - -
RSES_sum -0.0861 -0.0193 -0.0801 -0.0343 0.0428 -0.137 -0.049 -0.0539 -0.0428 0.0194 0.0132 0.0627 -0.0109 0.0394 -0.0939 0.0796 -0.1264 -0.1746 -0.3751 0.0132 0.391 1 - - - - -
SRS_sum 0.0075 0.149 0.2207 0.1074 0.1798 0.0624 0.2341 -0.0928 -0.2088 -0.1374 -0.1045 -0.1527 0.0031 -0.0784 -0.1022 -0.5099 -0.0028 0.4028 0.2637 0.1434 -0.3625 -0.2578 1 - - - -
SSEIT_sum 0.0957 -0.0067 0.1988 0.2297 0.1496 0.2075 0.181 0.2923 -0.006 0.1491 0.1796 0.0761 0.1538 0.1706 0.2126 -0.3249 0.3231 0.4476 0.6628 0.4247 -0.1552 -0.3724 0.2743 1 - - -
DASS_D_sum -0.0903 -0.0432 -0.1214 -0.0061 -0.1054 -0.0698 -0.1338 0.0832 0.0755 0.1467 0.2113 0.111 0.2453 0.1719 0.1575 0.2843 0.0138 -0.2342 -0.1704 -0.13 0.3665 0.4671 -0.4386 -0.2629 1 - -
DASS_A_sum -0.0024 -0.0678 -0.2261 6e-04 -0.1253 -0.118 -0.1406 -0.011 0.2158 0.1244 0.1645 0.1032 0.1845 0.1038 0.1719 0.3639 0.0098 -0.2408 -0.2014 -0.2485 0.3339 0.2919 -0.3468 -0.2544 0.6037 1 -
DASS_S_sum 0.1138 -0.0226 -0.0654 0.0666 -0.0325 -0.0428 -0.0062 0.1118 0.1298 0.1964 0.2718 0.1633 0.2959 0.2026 0.2314 0.3628 0.1012 -0.2507 -0.1007 -0.1014 0.4869 0.2896 -0.3799 -0.1588 0.7249 0.7222 1
  

kable(as.data.frame(format(sona_ST_corr2$P, scientific = FALSE)), caption = "SONA Stud - STy - Correlation: p values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Stud - STy - Correlation: p values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age NA - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.0255 NA - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 0.2005 0.0292 NA - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 0.0092 0.1896 0 NA - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 0.01 0.0831 0 0 NA - - - - - - - - - - - - - - - - - - - - - -
com_locked 0.0878 0.0322 0.0177 0.1817 0.0051 NA - - - - - - - - - - - - - - - - - - - - -
com_room_task 0.2614 0.4109 0 0 0 0.7077 NA - - - - - - - - - - - - - - - - - - - -
dist_daily 0.3546 0.0307 0.2017 0.2318 0.8166 0.0048 0.667 NA - - - - - - - - - - - - - - - - - - -
dist_study 0.7563 0.5973 0.1111 0.0113 0.0253 0.2653 0.0028 0 NA - - - - - - - - - - - - - - - - - -
NMPQ_sum 0.5343 0.2952 0.2083 0.006 0.0127 0.0145 0.0088 6e-04 2e-04 NA - - - - - - - - - - - - - - - - -
SAD_sum 0.4484 0.0646 0.2721 0.0747 0.0152 9e-04 0.0197 0 6e-04 0 NA - - - - - - - - - - - - - - - -
SAD_dep_sum 0.6785 0.241 0.07 0.024 0.0015 0.0112 2e-04 0.001 0.0052 0 0 NA - - - - - - - - - - - - - - -
SAD_ea_sum 0.2514 0.1971 0.3904 0.0417 0.1738 0.0095 0.3449 0.0018 0.0073 0 0 0 NA - - - - - - - - - - - - - -
SAD_access_sum 0.6939 0.0281 0.2422 0.3918 0.0375 0.0027 0.0999 1e-04 0.0147 0 0 0 0 NA - - - - - - - - - - - - -
SAD_dist_sum 0.1435 0.3735 0.5145 0.9174 0.7401 0.0104 0.4825 0 0.0048 0 0 0 0 0 NA - - - - - - - - - - - -
BIS_sum 0.416 0.2564 0.9764 0.8726 0.7073 0.0659 0.9538 0.463 0.0016 0.3843 0.0785 0.0282 0.3078 0.5997 0.1118 NA - - - - - - - - - - -
NEO_O_sum 0.3372 0.7731 0.6142 0.0977 0.3866 0.169 0.1267 0.0067 0.5652 0.2611 0.4954 0.0359 0.6643 0.9996 0.1327 0.9283 NA - - - - - - - - - -
NEO_C_sum 0.9211 0.5391 0.4871 0.6393 0.9465 0.0168 0.633 0.7227 0.0923 0.5075 0.084 0.005 0.2713 0.817 0.6766 0 0.2785 NA - - - - - - - - -
NEO_E_sum 0.5051 0.4294 0.0213 0.1823 0.0949 0.0058 0.0197 0.0011 0.7475 0.27 0.3503 0.6144 0.1224 0.3637 0.0499 0.0323 0 0 NA - - - - - - - -
NEO_A_sum 0.8407 0.6606 2e-04 0.0097 8e-04 0.2443 0.008 0.0392 0.0425 0.8514 0.1275 0.0889 0.0515 0.8207 0.5637 3e-04 0.0018 0 1e-04 NA - - - - - - -
NEO_N_sum 0.4424 0.8134 0.7185 0.6487 0.8043 0.5482 0.7344 0.0125 0.0466 0.0077 0.0035 0.0042 0.0681 0.017 0.0287 0 0.9691 0 0.0017 0.7093 NA - - - - - -
RSES_sum 0.2574 0.7995 0.2922 0.6527 0.5738 0.0706 0.5193 0.4785 0.5743 0.7993 0.8623 0.4096 0.8858 0.6047 0.2166 0.2949 0.0954 0.0208 0 0.8619 0 NA - - - - -
SRS_sum 0.921 0.049 0.0033 0.1571 0.0172 0.4117 0.0018 0.2221 0.0056 0.0698 0.1689 0.0437 0.9678 0.3026 0.1782 0 0.9704 0 4e-04 0.0584 0 6e-04 NA - - - -
SSEIT_sum 0.2078 0.9303 0.0083 0.0022 0.0482 0.0059 0.0165 1e-04 0.9376 0.049 0.0174 0.3167 0.0422 0.024 0.0047 0 0 0 0 0 0.0403 0 2e-04 NA - - -
DASS_D_sum 0.2346 0.57 0.1096 0.9359 0.165 0.3588 0.0774 0.2735 0.3205 0.0527 0.005 0.1435 0.0011 0.0229 0.0373 1e-04 0.8557 0.0018 0.0242 0.0864 0 0 0 4e-04 NA - -
DASS_A_sum 0.9748 0.373 0.0026 0.9937 0.0984 0.12 0.0635 0.885 0.0041 0.101 0.0296 0.174 0.0145 0.1715 0.0229 0 0.8978 0.0013 0.0075 9e-04 0 1e-04 0 7e-04 0 NA -
DASS_S_sum 0.1337 0.7665 0.3899 0.3809 0.6693 0.5737 0.9351 0.1408 0.0868 0.0092 3e-04 0.0308 1e-04 0.0072 0.0021 0 0.1825 8e-04 0.1847 0.1819 0 1e-04 0 0.0358 0 0 NA

kable(as.data.frame(format(sona_ST_corr2$n, scientific = FALSE)), caption = "SONA Study - ST - Correlation: n values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
SONA Study - ST - Correlation: n values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 175 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 175 175 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 175 175 175 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 175 175 175 175 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 175 175 175 175 175 - - - - - - - - - - - - - - - - - - - - - -
com_locked 175 175 175 175 175 175 - - - - - - - - - - - - - - - - - - - - -
com_room_task 175 175 175 175 175 175 175 - - - - - - - - - - - - - - - - - - - -
dist_daily 175 175 175 175 175 175 175 175 - - - - - - - - - - - - - - - - - - -
dist_study 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - - - - - - - -
NMPQ_sum 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - - - - - - -
SAD_sum 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - - - - - -
SAD_dep_sum 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - - - - -
SAD_ea_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - - - -
SAD_access_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - - -
SAD_dist_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - - -
BIS_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - - -
NEO_O_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - - -
NEO_C_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - - -
NEO_E_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - - -
NEO_A_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - - -
NEO_N_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - - -
RSES_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - - -
SRS_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - - -
SSEIT_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - - -
DASS_D_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 - -
DASS_A_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 -
DASS_S_sum 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175

# create new matrix for r & p vals with different col names
  # get age, age_first_phone, dist_daily, and all ques data (21 = SAD overall--not used)
sona_ST_corr_r <- sona_ST_corr$r[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(sona_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(sona_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  
sona_ST_corr_p <- sona_ST_corr$P[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(sona_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(sona_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")


# create colour pallet for corr matrix
# corr_colours <- c("#7E1044", "#981570", "#F3F5F7", "#491296", "#170FA7")
corr_colours <- c("#98410B", "#F0803C", "#DDA448", "#F7F7FF", "#3F826D", "#08605F", "#414535")

# all vars included
corr_plot_sona_ST_all <- {
  corrplot(sona_ST_corr$r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = sona_ST_corr$P, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .5, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# with all SAD subscales
corr_plot_sona_ST_ques_all <- {
  corrplot(sona_ST_corr_r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = sona_ST_corr_p, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# final -- with SAD overall only
corr_plot_sona_ST_ques_final <- {
  corrplot(sona_ST_corr_r[c(1,2,7:19), c(1,2,7:19)], method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = sona_ST_corr_p[c(1,2,7:19), c(1,2,7:19)], sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_sona_ST_all(oct28)", plot = replayPlot(corr_plot_sona_ST_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_sona_ST_ques_all(oct28)", plot = replayPlot(corr_plot_sona_ST_ques_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_sona_ST_ques_final(oct28)", plot = replayPlot(corr_plot_sona_ST_ques_final), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

# export csv files of R values & p values 
  write.csv(sona_ST_corr$r,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_ST_corr_rvals(oct28).csv", row.names = T)
  write.csv(sona_ST_corr$P,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/sona_ST_corr_pvals(oct28).csv", row.names = T)

Study 2: Mturk

mturk_ST_corr <- 
  Mturk_data %>% 
  filter(ST == "had ST") %>% 
  # select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, ends_with("_sum")) %>%
  select(age, age_first_phone, com_gen:com_room_task, dist_daily, dist_study, 
         NMPQ_sum, 
         SAD_sum, SAD_dep_sum, SAD_ea_sum, SAD_access_sum, SAD_dist_sum, # add or remove the SAD subscales / overall
         BIS_sum, NEO_O_sum, NEO_C_sum, NEO_E_sum, NEO_A_sum, NEO_N_sum, RSES_sum, SRS_sum, SSEIT_sum, DASS_D_sum, DASS_A_sum, DASS_S_sum) %>% 
  as.matrix() %>% 
  Hmisc::rcorr(type = c("pearson"))

# create new pilot_corr to shown only lower triangle... 
mturk_ST_corr2 <- mturk_ST_corr
# round to 4 decimals... 
mturk_ST_corr2$r <- round(mturk_ST_corr2$r, 4)
mturk_ST_corr2$P <- round(mturk_ST_corr2$P, 4)
mturk_ST_corr2$n <- round(mturk_ST_corr2$n, 4)
# remove upper triangle form r, p, and n
mturk_ST_corr2$r[upper.tri(mturk_ST_corr2$r)] <- "-"
mturk_ST_corr2$P[upper.tri(mturk_ST_corr2$P)] <- "-"
mturk_ST_corr2$n[upper.tri(mturk_ST_corr2$n)] <- "-"

# show corr table with flattenCorr

kable(flattenCorrMatrix(mturk_ST_corr$r, mturk_ST_corr$P), caption = "MTURK Study - ST - Correlation: Flat") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - ST - Correlation: Flat
row column cor p
age age_first_phone 0.1307575 0.0972141
age com_gen -0.2172059 0.0054965
age_first_phone com_gen -0.0615467 0.4365496
age com_unattended -0.1746741 0.0262062
age_first_phone com_unattended -0.0037064 0.9626655
com_gen com_unattended 0.5806989 0.0000000
age com_leave_with_others -0.2690082 0.0005373
age_first_phone com_leave_with_others -0.0760462 0.3361460
com_gen com_leave_with_others 0.5743246 0.0000000
com_unattended com_leave_with_others 0.7165689 0.0000000
age com_locked -0.2596600 0.0008476
age_first_phone com_locked 0.0088970 0.9105334
com_gen com_locked 0.0765760 0.3327802
com_unattended com_locked -0.0262810 0.7399125
com_leave_with_others com_locked -0.0317249 0.6885923
age com_room_task -0.0506491 0.5221228
age_first_phone com_room_task -0.1363578 0.0835940
com_gen com_room_task 0.4943782 0.0000000
com_unattended com_room_task 0.4967794 0.0000000
com_leave_with_others com_room_task 0.4732389 0.0000000
com_locked com_room_task -0.1360283 0.0843507
age dist_daily -0.3352648 0.0000129
age_first_phone dist_daily -0.0210228 0.7905980
com_gen dist_daily 0.3097682 0.0000604
com_unattended dist_daily 0.3217882 0.0000297
com_leave_with_others dist_daily 0.3803759 0.0000006
com_locked dist_daily 0.2384003 0.0022505
com_room_task dist_daily 0.2082266 0.0078378
age dist_study -0.2951159 0.0001376
age_first_phone dist_study 0.0444364 0.5744701
com_gen dist_study 0.4460343 0.0000000
com_unattended dist_study 0.6572034 0.0000000
com_leave_with_others dist_study 0.6679607 0.0000000
com_locked dist_study 0.1274681 0.1059987
com_room_task dist_study 0.3564528 0.0000032
dist_daily dist_study 0.5043825 0.0000000
age NMPQ_sum -0.2780637 0.0003401
age_first_phone NMPQ_sum -0.0750927 0.3422572
com_gen NMPQ_sum 0.3236050 0.0000266
com_unattended NMPQ_sum 0.4785813 0.0000000
com_leave_with_others NMPQ_sum 0.5124126 0.0000000
com_locked NMPQ_sum 0.3050552 0.0000791
com_room_task NMPQ_sum 0.1759477 0.0251163
dist_daily NMPQ_sum 0.5916067 0.0000000
dist_study NMPQ_sum 0.6036131 0.0000000
age SAD_sum -0.3376564 0.0000111
age_first_phone SAD_sum -0.0496535 0.5303453
com_gen SAD_sum 0.3566522 0.0000032
com_unattended SAD_sum 0.4055109 0.0000001
com_leave_with_others SAD_sum 0.4928984 0.0000000
com_locked SAD_sum 0.2655622 0.0006368
com_room_task SAD_sum 0.1806220 0.0214430
dist_daily SAD_sum 0.5193548 0.0000000
dist_study SAD_sum 0.5884648 0.0000000
NMPQ_sum SAD_sum 0.8156093 0.0000000
age SAD_dep_sum -0.2918129 0.0001647
age_first_phone SAD_dep_sum -0.0332230 0.6747033
com_gen SAD_dep_sum 0.2731173 0.0004375
com_unattended SAD_dep_sum 0.3150340 0.0000444
com_leave_with_others SAD_dep_sum 0.3542299 0.0000038
com_locked SAD_dep_sum 0.2798676 0.0003099
com_room_task SAD_dep_sum 0.0960376 0.2240970
dist_daily SAD_dep_sum 0.4583816 0.0000000
dist_study SAD_dep_sum 0.4549164 0.0000000
NMPQ_sum SAD_dep_sum 0.7545171 0.0000000
SAD_sum SAD_dep_sum 0.8841225 0.0000000
age SAD_ea_sum -0.3335864 0.0000144
age_first_phone SAD_ea_sum -0.0144421 0.8552653
com_gen SAD_ea_sum 0.4087319 0.0000001
com_unattended SAD_ea_sum 0.4449379 0.0000000
com_leave_with_others SAD_ea_sum 0.5077330 0.0000000
com_locked SAD_ea_sum 0.1794278 0.0223344
com_room_task SAD_ea_sum 0.2333126 0.0028087
dist_daily SAD_ea_sum 0.4439694 0.0000000
dist_study SAD_ea_sum 0.5957411 0.0000000
NMPQ_sum SAD_ea_sum 0.6958333 0.0000000
SAD_sum SAD_ea_sum 0.9095171 0.0000000
SAD_dep_sum SAD_ea_sum 0.7101516 0.0000000
age SAD_access_sum -0.2145225 0.0061202
age_first_phone SAD_access_sum -0.1074462 0.1735390
com_gen SAD_access_sum 0.1768854 0.0243390
com_unattended SAD_access_sum 0.2615516 0.0007739
com_leave_with_others SAD_access_sum 0.3370047 0.0000116
com_locked SAD_access_sum 0.2986982 0.0001130
com_room_task SAD_access_sum 0.0133023 0.8665780
dist_daily SAD_access_sum 0.4092017 0.0000001
dist_study SAD_access_sum 0.4012338 0.0000001
NMPQ_sum SAD_access_sum 0.7308838 0.0000000
SAD_sum SAD_access_sum 0.8233417 0.0000000
SAD_dep_sum SAD_access_sum 0.7269412 0.0000000
SAD_ea_sum SAD_access_sum 0.6086329 0.0000000
age SAD_dist_sum -0.2933899 0.0001512
age_first_phone SAD_dist_sum -0.0199584 0.8009742
com_gen SAD_dist_sum 0.4215664 0.0000000
com_unattended SAD_dist_sum 0.3817526 0.0000005
com_leave_with_others SAD_dist_sum 0.5326892 0.0000000
com_locked SAD_dist_sum 0.0824283 0.2970442
com_room_task SAD_dist_sum 0.3293583 0.0000187
dist_daily SAD_dist_sum 0.4034278 0.0000001
dist_study SAD_dist_sum 0.5973895 0.0000000
NMPQ_sum SAD_dist_sum 0.5122425 0.0000000
SAD_sum SAD_dist_sum 0.7467922 0.0000000
SAD_dep_sum SAD_dist_sum 0.4984602 0.0000000
SAD_ea_sum SAD_dist_sum 0.7504450 0.0000000
SAD_access_sum SAD_dist_sum 0.4254271 0.0000000
age BIS_sum -0.1764504 0.0246970
age_first_phone BIS_sum 0.0035239 0.9645022
com_gen BIS_sum 0.1591482 0.0430885
com_unattended BIS_sum 0.4429188 0.0000000
com_leave_with_others BIS_sum 0.5137268 0.0000000
com_locked BIS_sum -0.1469196 0.0620921
com_room_task BIS_sum 0.2698141 0.0005162
dist_daily BIS_sum 0.2833127 0.0002590
dist_study BIS_sum 0.5455183 0.0000000
NMPQ_sum BIS_sum 0.3710240 0.0000012
SAD_sum BIS_sum 0.3613468 0.0000023
SAD_dep_sum BIS_sum 0.2454956 0.0016395
SAD_ea_sum BIS_sum 0.3108449 0.0000567
SAD_access_sum BIS_sum 0.2483695 0.0014384
SAD_dist_sum BIS_sum 0.5134919 0.0000000
age NEO_O_sum 0.0747698 0.3443428
age_first_phone NEO_O_sum 0.0378789 0.6322527
com_gen NEO_O_sum -0.3324788 0.0000154
com_unattended NEO_O_sum -0.5275106 0.0000000
com_leave_with_others NEO_O_sum -0.5116805 0.0000000
com_locked NEO_O_sum 0.1102806 0.1624019
com_room_task NEO_O_sum -0.3084570 0.0000651
dist_daily NEO_O_sum -0.1213735 0.1239109
dist_study NEO_O_sum -0.5480151 0.0000000
NMPQ_sum NEO_O_sum -0.2465749 0.0015612
SAD_sum NEO_O_sum -0.3051155 0.0000788
SAD_dep_sum NEO_O_sum -0.2006313 0.0104694
SAD_ea_sum NEO_O_sum -0.3076001 0.0000684
SAD_access_sum NEO_O_sum -0.1998109 0.0107956
SAD_dist_sum NEO_O_sum -0.4405486 0.0000000
BIS_sum NEO_O_sum -0.4669551 0.0000000
age NEO_C_sum 0.2630137 0.0007211
age_first_phone NEO_C_sum -0.0452915 0.5671209
com_gen NEO_C_sum -0.1900197 0.0154381
com_unattended NEO_C_sum -0.2340850 0.0027166
com_leave_with_others NEO_C_sum -0.3267186 0.0000220
com_locked NEO_C_sum 0.1834118 0.0194794
com_room_task NEO_C_sum -0.1662989 0.0344300
dist_daily NEO_C_sum -0.2340654 0.0027189
dist_study NEO_C_sum -0.4232772 0.0000000
NMPQ_sum NEO_C_sum -0.1234188 0.1176559
SAD_sum NEO_C_sum -0.2025699 0.0097326
SAD_dep_sum NEO_C_sum -0.1126247 0.1536022
SAD_ea_sum NEO_C_sum -0.2315483 0.0030297
SAD_access_sum NEO_C_sum -0.0258113 0.7443986
SAD_dist_sum NEO_C_sum -0.4145875 0.0000000
BIS_sum NEO_C_sum -0.5932801 0.0000000
NEO_O_sum NEO_C_sum 0.3167778 0.0000401
age NEO_E_sum -0.2317987 0.0029974
age_first_phone NEO_E_sum -0.0690829 0.3823813
com_gen NEO_E_sum 0.4020972 0.0000001
com_unattended NEO_E_sum 0.2549491 0.0010599
com_leave_with_others NEO_E_sum 0.1989484 0.0111483
com_locked NEO_E_sum 0.1833275 0.0195363
com_room_task NEO_E_sum 0.2076866 0.0080033
dist_daily NEO_E_sum 0.0691196 0.3821278
dist_study NEO_E_sum 0.2932689 0.0001522
NMPQ_sum NEO_E_sum 0.3010749 0.0000990
SAD_sum NEO_E_sum 0.3171920 0.0000391
SAD_dep_sum NEO_E_sum 0.2419712 0.0019210
SAD_ea_sum NEO_E_sum 0.3744773 0.0000009
SAD_access_sum NEO_E_sum 0.2200333 0.0049014
SAD_dist_sum NEO_E_sum 0.2521057 0.0012106
BIS_sum NEO_E_sum 0.0481384 0.5429814
NEO_O_sum NEO_E_sum -0.1523628 0.0529215
NEO_C_sum NEO_E_sum 0.1661095 0.0346388
age NEO_A_sum 0.3719569 0.0000011
age_first_phone NEO_A_sum 0.0455250 0.5651219
com_gen NEO_A_sum -0.3412555 0.0000088
com_unattended NEO_A_sum -0.4006894 0.0000001
com_leave_with_others NEO_A_sum -0.5129516 0.0000000
com_locked NEO_A_sum 0.0655297 0.4073937
com_room_task NEO_A_sum -0.1949661 0.0129114
dist_daily NEO_A_sum -0.2446834 0.0017008
dist_study NEO_A_sum -0.5798737 0.0000000
NMPQ_sum NEO_A_sum -0.2195097 0.0050070
SAD_sum NEO_A_sum -0.3225523 0.0000284
SAD_dep_sum NEO_A_sum -0.2204054 0.0048275
SAD_ea_sum NEO_A_sum -0.3744520 0.0000009
SAD_access_sum NEO_A_sum -0.1239874 0.1159613
SAD_dist_sum NEO_A_sum -0.4904340 0.0000000
BIS_sum NEO_A_sum -0.5393073 0.0000000
NEO_O_sum NEO_A_sum 0.5592628 0.0000000
NEO_C_sum NEO_A_sum 0.6444951 0.0000000
NEO_E_sum NEO_A_sum -0.1182331 0.1340112
age NEO_N_sum -0.1193367 0.1303924
age_first_phone NEO_N_sum 0.0605208 0.4442469
com_gen NEO_N_sum 0.1929403 0.0138987
com_unattended NEO_N_sum 0.3731897 0.0000010
com_leave_with_others NEO_N_sum 0.4563371 0.0000000
com_locked NEO_N_sum 0.0620059 0.4331287
com_room_task NEO_N_sum 0.1639464 0.0370997
dist_daily NEO_N_sum 0.4819029 0.0000000
dist_study NEO_N_sum 0.5314948 0.0000000
NMPQ_sum NEO_N_sum 0.4527195 0.0000000
SAD_sum NEO_N_sum 0.5535497 0.0000000
SAD_dep_sum NEO_N_sum 0.4725895 0.0000000
SAD_ea_sum NEO_N_sum 0.4650034 0.0000000
SAD_access_sum NEO_N_sum 0.3819149 0.0000005
SAD_dist_sum NEO_N_sum 0.6002000 0.0000000
BIS_sum NEO_N_sum 0.5827757 0.0000000
NEO_O_sum NEO_N_sum -0.4415068 0.0000000
NEO_C_sum NEO_N_sum -0.4714179 0.0000000
NEO_E_sum NEO_N_sum -0.1358063 0.0848633
NEO_A_sum NEO_N_sum -0.4645498 0.0000000
age RSES_sum -0.0790089 0.3176034
age_first_phone RSES_sum -0.0012781 0.9871210
com_gen RSES_sum 0.0658748 0.4049227
com_unattended RSES_sum 0.0365164 0.6445598
com_leave_with_others RSES_sum 0.0899953 0.2547466
com_locked RSES_sum -0.0404006 0.6097415
com_room_task RSES_sum 0.1143942 0.1472013
dist_daily RSES_sum 0.0279638 0.7239133
dist_study RSES_sum 0.0177530 0.8225813
NMPQ_sum RSES_sum -0.0024060 0.9757589
SAD_sum RSES_sum 0.1398631 0.0758785
SAD_dep_sum RSES_sum 0.0625850 0.4288360
SAD_ea_sum RSES_sum 0.1771850 0.0240950
SAD_access_sum RSES_sum 0.0145956 0.8537448
SAD_dist_sum RSES_sum 0.2589430 0.0008772
BIS_sum RSES_sum 0.1069911 0.1753785
NEO_O_sum RSES_sum -0.1823790 0.0201874
NEO_C_sum RSES_sum -0.1293733 0.1008379
NEO_E_sum RSES_sum -0.1026969 0.1934509
NEO_A_sum RSES_sum -0.1811195 0.0210808
NEO_N_sum RSES_sum 0.1621063 0.0393077
age SRS_sum 0.1370199 0.0820904
age_first_phone SRS_sum 0.0370756 0.6394973
com_gen SRS_sum -0.0619445 0.4335849
com_unattended SRS_sum -0.0669465 0.3973065
com_leave_with_others SRS_sum -0.2272195 0.0036402
com_locked SRS_sum 0.1132089 0.1514663
com_room_task SRS_sum -0.0687337 0.3847972
dist_daily SRS_sum -0.2163067 0.0056988
dist_study SRS_sum -0.2969710 0.0001243
NMPQ_sum SRS_sum -0.0459309 0.5616554
SAD_sum SRS_sum -0.2363605 0.0024609
SAD_dep_sum SRS_sum -0.1314587 0.0954181
SAD_ea_sum SRS_sum -0.2563005 0.0009945
SAD_access_sum SRS_sum -0.0505392 0.5230270
SAD_dist_sum SRS_sum -0.4891619 0.0000000
BIS_sum SRS_sum -0.4870836 0.0000000
NEO_O_sum SRS_sum 0.2368151 0.0024125
NEO_C_sum SRS_sum 0.6447153 0.0000000
NEO_E_sum SRS_sum 0.1957821 0.0125314
NEO_A_sum SRS_sum 0.4994924 0.0000000
NEO_N_sum SRS_sum -0.5552645 0.0000000
RSES_sum SRS_sum -0.2088359 0.0076546
age SSEIT_sum -0.0523189 0.5084790
age_first_phone SSEIT_sum -0.0832927 0.2919899
com_gen SSEIT_sum 0.1657945 0.0349883
com_unattended SSEIT_sum 0.0639303 0.4189602
com_leave_with_others SSEIT_sum -0.0013469 0.9864282
com_locked SSEIT_sum 0.3131580 0.0000496
com_room_task SSEIT_sum 0.1042533 0.1867504
dist_daily SSEIT_sum 0.0707885 0.3707138
dist_study SSEIT_sum 0.0493083 0.5332113
NMPQ_sum SSEIT_sum 0.3573917 0.0000030
SAD_sum SSEIT_sum 0.2910317 0.0001718
SAD_dep_sum SSEIT_sum 0.2653529 0.0006434
SAD_ea_sum SSEIT_sum 0.2816103 0.0002831
SAD_access_sum SSEIT_sum 0.2811124 0.0002905
SAD_dist_sum SSEIT_sum 0.0368575 0.6414700
BIS_sum SSEIT_sum -0.2143255 0.0061684
NEO_O_sum SSEIT_sum 0.1717714 0.0288423
NEO_C_sum SSEIT_sum 0.4717414 0.0000000
NEO_E_sum SSEIT_sum 0.4313103 0.0000000
NEO_A_sum SSEIT_sum 0.3909145 0.0000003
NEO_N_sum SSEIT_sum -0.2282346 0.0034878
RSES_sum SSEIT_sum -0.0157711 0.8421133
SRS_sum SSEIT_sum 0.5424172 0.0000000
age DASS_D_sum -0.3420203 0.0000084
age_first_phone DASS_D_sum -0.0696060 0.3787793
com_gen DASS_D_sum 0.4466733 0.0000000
com_unattended DASS_D_sum 0.5342379 0.0000000
com_leave_with_others DASS_D_sum 0.6287512 0.0000000
com_locked DASS_D_sum 0.1217265 0.1228133
com_room_task DASS_D_sum 0.3322710 0.0000156
dist_daily DASS_D_sum 0.4899719 0.0000000
dist_study DASS_D_sum 0.6686407 0.0000000
NMPQ_sum DASS_D_sum 0.5463872 0.0000000
SAD_sum DASS_D_sum 0.6139742 0.0000000
SAD_dep_sum DASS_D_sum 0.4893925 0.0000000
SAD_ea_sum DASS_D_sum 0.5714560 0.0000000
SAD_access_sum DASS_D_sum 0.4159469 0.0000000
SAD_dist_sum DASS_D_sum 0.6671587 0.0000000
BIS_sum DASS_D_sum 0.6195274 0.0000000
NEO_O_sum DASS_D_sum -0.5217124 0.0000000
NEO_C_sum DASS_D_sum -0.5821828 0.0000000
NEO_E_sum DASS_D_sum 0.1265226 0.1086362
NEO_A_sum DASS_D_sum -0.6990062 0.0000000
NEO_N_sum DASS_D_sum 0.6813397 0.0000000
RSES_sum DASS_D_sum 0.2618009 0.0007647
SRS_sum DASS_D_sum -0.4375019 0.0000000
SSEIT_sum DASS_D_sum -0.0890170 0.2599685
age DASS_A_sum -0.3764004 0.0000008
age_first_phone DASS_A_sum -0.0515841 0.5144601
com_gen DASS_A_sum 0.5076892 0.0000000
com_unattended DASS_A_sum 0.5732269 0.0000000
com_leave_with_others DASS_A_sum 0.6910836 0.0000000
com_locked DASS_A_sum 0.1550739 0.0487901
com_room_task DASS_A_sum 0.3482976 0.0000056
dist_daily DASS_A_sum 0.4652712 0.0000000
dist_study DASS_A_sum 0.7312125 0.0000000
NMPQ_sum DASS_A_sum 0.5653998 0.0000000
SAD_sum DASS_A_sum 0.6917548 0.0000000
SAD_dep_sum DASS_A_sum 0.5375888 0.0000000
SAD_ea_sum DASS_A_sum 0.6762214 0.0000000
SAD_access_sum DASS_A_sum 0.4526624 0.0000000
SAD_dist_sum DASS_A_sum 0.7553105 0.0000000
BIS_sum DASS_A_sum 0.6038188 0.0000000
NEO_O_sum DASS_A_sum -0.5304120 0.0000000
NEO_C_sum DASS_A_sum -0.5261535 0.0000000
NEO_E_sum DASS_A_sum 0.2639105 0.0006903
NEO_A_sum DASS_A_sum -0.6029903 0.0000000
NEO_N_sum DASS_A_sum 0.6463389 0.0000000
RSES_sum DASS_A_sum 0.1864430 0.0175241
SRS_sum DASS_A_sum -0.3871973 0.0000004
SSEIT_sum DASS_A_sum 0.0541297 0.4938960
DASS_D_sum DASS_A_sum 0.8570701 0.0000000
age DASS_S_sum -0.2936001 0.0001495
age_first_phone DASS_S_sum 0.0341183 0.6664558
com_gen DASS_S_sum 0.3973249 0.0000002
com_unattended DASS_S_sum 0.4975096 0.0000000
com_leave_with_others DASS_S_sum 0.5905186 0.0000000
com_locked DASS_S_sum 0.1739796 0.0268174
com_room_task DASS_S_sum 0.2789978 0.0003241
dist_daily DASS_S_sum 0.5411997 0.0000000
dist_study DASS_S_sum 0.6757534 0.0000000
NMPQ_sum DASS_S_sum 0.6110779 0.0000000
SAD_sum DASS_S_sum 0.7001342 0.0000000
SAD_dep_sum DASS_S_sum 0.5813110 0.0000000
SAD_ea_sum DASS_S_sum 0.6170449 0.0000000
SAD_access_sum DASS_S_sum 0.5042739 0.0000000
SAD_dist_sum DASS_S_sum 0.7197138 0.0000000
BIS_sum DASS_S_sum 0.6013027 0.0000000
NEO_O_sum DASS_S_sum -0.4936969 0.0000000
NEO_C_sum DASS_S_sum -0.4845171 0.0000000
NEO_E_sum DASS_S_sum 0.2004774 0.0105299
NEO_A_sum DASS_S_sum -0.5746052 0.0000000
NEO_N_sum DASS_S_sum 0.7309030 0.0000000
RSES_sum DASS_S_sum 0.2228599 0.0043648
SRS_sum DASS_S_sum -0.3744258 0.0000009
SSEIT_sum DASS_S_sum 0.0515909 0.5144050
DASS_D_sum DASS_S_sum 0.8636292 0.0000000
DASS_A_sum DASS_S_sum 0.8949079 0.0000000

# print tables using kable
kable(as.data.frame(format(mturk_ST_corr2$r, scientific = FALSE)), caption = "MTURK Study - ST - Correlation: r values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - ST - Correlation: r values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 1 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.1308 1 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen -0.2172 -0.0615 1 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended -0.1747 -0.0037 0.5807 1 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others -0.269 -0.076 0.5743 0.7166 1 - - - - - - - - - - - - - - - - - - - - - -
com_locked -0.2597 0.0089 0.0766 -0.0263 -0.0317 1 - - - - - - - - - - - - - - - - - - - - -
com_room_task -0.0506 -0.1364 0.4944 0.4968 0.4732 -0.136 1 - - - - - - - - - - - - - - - - - - - -
dist_daily -0.3353 -0.021 0.3098 0.3218 0.3804 0.2384 0.2082 1 - - - - - - - - - - - - - - - - - - -
dist_study -0.2951 0.0444 0.446 0.6572 0.668 0.1275 0.3565 0.5044 1 - - - - - - - - - - - - - - - - - -
NMPQ_sum -0.2781 -0.0751 0.3236 0.4786 0.5124 0.3051 0.1759 0.5916 0.6036 1 - - - - - - - - - - - - - - - - -
SAD_sum -0.3377 -0.0497 0.3567 0.4055 0.4929 0.2656 0.1806 0.5194 0.5885 0.8156 1 - - - - - - - - - - - - - - - -
SAD_dep_sum -0.2918 -0.0332 0.2731 0.315 0.3542 0.2799 0.096 0.4584 0.4549 0.7545 0.8841 1 - - - - - - - - - - - - - - -
SAD_ea_sum -0.3336 -0.0144 0.4087 0.4449 0.5077 0.1794 0.2333 0.444 0.5957 0.6958 0.9095 0.7102 1 - - - - - - - - - - - - - -
SAD_access_sum -0.2145 -0.1074 0.1769 0.2616 0.337 0.2987 0.0133 0.4092 0.4012 0.7309 0.8233 0.7269 0.6086 1 - - - - - - - - - - - - -
SAD_dist_sum -0.2934 -0.02 0.4216 0.3818 0.5327 0.0824 0.3294 0.4034 0.5974 0.5122 0.7468 0.4985 0.7504 0.4254 1 - - - - - - - - - - - -
BIS_sum -0.1765 0.0035 0.1591 0.4429 0.5137 -0.1469 0.2698 0.2833 0.5455 0.371 0.3613 0.2455 0.3108 0.2484 0.5135 1 - - - - - - - - - - -
NEO_O_sum 0.0748 0.0379 -0.3325 -0.5275 -0.5117 0.1103 -0.3085 -0.1214 -0.548 -0.2466 -0.3051 -0.2006 -0.3076 -0.1998 -0.4405 -0.467 1 - - - - - - - - - -
NEO_C_sum 0.263 -0.0453 -0.19 -0.2341 -0.3267 0.1834 -0.1663 -0.2341 -0.4233 -0.1234 -0.2026 -0.1126 -0.2315 -0.0258 -0.4146 -0.5933 0.3168 1 - - - - - - - - -
NEO_E_sum -0.2318 -0.0691 0.4021 0.2549 0.1989 0.1833 0.2077 0.0691 0.2933 0.3011 0.3172 0.242 0.3745 0.22 0.2521 0.0481 -0.1524 0.1661 1 - - - - - - - -
NEO_A_sum 0.372 0.0455 -0.3413 -0.4007 -0.513 0.0655 -0.195 -0.2447 -0.5799 -0.2195 -0.3226 -0.2204 -0.3745 -0.124 -0.4904 -0.5393 0.5593 0.6445 -0.1182 1 - - - - - - -
NEO_N_sum -0.1193 0.0605 0.1929 0.3732 0.4563 0.062 0.1639 0.4819 0.5315 0.4527 0.5535 0.4726 0.465 0.3819 0.6002 0.5828 -0.4415 -0.4714 -0.1358 -0.4645 1 - - - - - -
RSES_sum -0.079 -0.0013 0.0659 0.0365 0.09 -0.0404 0.1144 0.028 0.0178 -0.0024 0.1399 0.0626 0.1772 0.0146 0.2589 0.107 -0.1824 -0.1294 -0.1027 -0.1811 0.1621 1 - - - - -
SRS_sum 0.137 0.0371 -0.0619 -0.0669 -0.2272 0.1132 -0.0687 -0.2163 -0.297 -0.0459 -0.2364 -0.1315 -0.2563 -0.0505 -0.4892 -0.4871 0.2368 0.6447 0.1958 0.4995 -0.5553 -0.2088 1 - - - -
SSEIT_sum -0.0523 -0.0833 0.1658 0.0639 -0.0013 0.3132 0.1043 0.0708 0.0493 0.3574 0.291 0.2654 0.2816 0.2811 0.0369 -0.2143 0.1718 0.4717 0.4313 0.3909 -0.2282 -0.0158 0.5424 1 - - -
DASS_D_sum -0.342 -0.0696 0.4467 0.5342 0.6288 0.1217 0.3323 0.49 0.6686 0.5464 0.614 0.4894 0.5715 0.4159 0.6672 0.6195 -0.5217 -0.5822 0.1265 -0.699 0.6813 0.2618 -0.4375 -0.089 1 - -
DASS_A_sum -0.3764 -0.0516 0.5077 0.5732 0.6911 0.1551 0.3483 0.4653 0.7312 0.5654 0.6918 0.5376 0.6762 0.4527 0.7553 0.6038 -0.5304 -0.5262 0.2639 -0.603 0.6463 0.1864 -0.3872 0.0541 0.8571 1 -
DASS_S_sum -0.2936 0.0341 0.3973 0.4975 0.5905 0.174 0.279 0.5412 0.6758 0.6111 0.7001 0.5813 0.617 0.5043 0.7197 0.6013 -0.4937 -0.4845 0.2005 -0.5746 0.7309 0.2229 -0.3744 0.0516 0.8636 0.8949 1
  

kable(as.data.frame(format(mturk_ST_corr2$P, scientific = FALSE)), caption = "MTURK Study - ST - Correlation: p values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - ST - Correlation: p values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age NA - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 0.0972 NA - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 0.0055 0.4365 NA - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 0.0262 0.9627 0 NA - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 5e-04 0.3361 0 0 NA - - - - - - - - - - - - - - - - - - - - - -
com_locked 8e-04 0.9105 0.3328 0.7399 0.6886 NA - - - - - - - - - - - - - - - - - - - - -
com_room_task 0.5221 0.0836 0 0 0 0.0844 NA - - - - - - - - - - - - - - - - - - - -
dist_daily 0 0.7906 1e-04 0 0 0.0023 0.0078 NA - - - - - - - - - - - - - - - - - - -
dist_study 1e-04 0.5745 0 0 0 0.106 0 0 NA - - - - - - - - - - - - - - - - - -
NMPQ_sum 3e-04 0.3423 0 0 0 1e-04 0.0251 0 0 NA - - - - - - - - - - - - - - - - -
SAD_sum 0 0.5303 0 0 0 6e-04 0.0214 0 0 0 NA - - - - - - - - - - - - - - - -
SAD_dep_sum 2e-04 0.6747 4e-04 0 0 3e-04 0.2241 0 0 0 0 NA - - - - - - - - - - - - - - -
SAD_ea_sum 0 0.8553 0 0 0 0.0223 0.0028 0 0 0 0 0 NA - - - - - - - - - - - - - -
SAD_access_sum 0.0061 0.1735 0.0243 8e-04 0 1e-04 0.8666 0 0 0 0 0 0 NA - - - - - - - - - - - - -
SAD_dist_sum 2e-04 0.801 0 0 0 0.297 0 0 0 0 0 0 0 0 NA - - - - - - - - - - - -
BIS_sum 0.0247 0.9645 0.0431 0 0 0.0621 5e-04 3e-04 0 0 0 0.0016 1e-04 0.0014 0 NA - - - - - - - - - - -
NEO_O_sum 0.3443 0.6323 0 0 0 0.1624 1e-04 0.1239 0 0.0016 1e-04 0.0105 1e-04 0.0108 0 0 NA - - - - - - - - - -
NEO_C_sum 7e-04 0.5671 0.0154 0.0027 0 0.0195 0.0344 0.0027 0 0.1177 0.0097 0.1536 0.003 0.7444 0 0 0 NA - - - - - - - - -
NEO_E_sum 0.003 0.3824 0 0.0011 0.0111 0.0195 0.008 0.3821 2e-04 1e-04 0 0.0019 0 0.0049 0.0012 0.543 0.0529 0.0346 NA - - - - - - - -
NEO_A_sum 0 0.5651 0 0 0 0.4074 0.0129 0.0017 0 0.005 0 0.0048 0 0.116 0 0 0 0 0.134 NA - - - - - - -
NEO_N_sum 0.1304 0.4442 0.0139 0 0 0.4331 0.0371 0 0 0 0 0 0 0 0 0 0 0 0.0849 0 NA - - - - - -
RSES_sum 0.3176 0.9871 0.4049 0.6446 0.2547 0.6097 0.1472 0.7239 0.8226 0.9758 0.0759 0.4288 0.0241 0.8537 9e-04 0.1754 0.0202 0.1008 0.1935 0.0211 0.0393 NA - - - - -
SRS_sum 0.0821 0.6395 0.4336 0.3973 0.0036 0.1515 0.3848 0.0057 1e-04 0.5617 0.0025 0.0954 0.001 0.523 0 0 0.0024 0 0.0125 0 0 0.0077 NA - - - -
SSEIT_sum 0.5085 0.292 0.035 0.419 0.9864 0 0.1868 0.3707 0.5332 0 2e-04 6e-04 3e-04 3e-04 0.6415 0.0062 0.0288 0 0 0 0.0035 0.8421 0 NA - - -
DASS_D_sum 0 0.3788 0 0 0 0.1228 0 0 0 0 0 0 0 0 0 0 0 0 0.1086 0 0 8e-04 0 0.26 NA - -
DASS_A_sum 0 0.5145 0 0 0 0.0488 0 0 0 0 0 0 0 0 0 0 0 0 7e-04 0 0 0.0175 0 0.4939 0 NA -
DASS_S_sum 1e-04 0.6665 0 0 0 0.0268 3e-04 0 0 0 0 0 0 0 0 0 0 0 0.0105 0 0 0.0044 0 0.5144 0 0 NA

kable(as.data.frame(format(mturk_ST_corr2$n, scientific = FALSE)), caption = "MTURK Study - ST - Correlation: n values") %>%
  kable_styling(bootstrap_options = c("hover", "striped"), full_width = F) %>% 
  kable_classic()
MTURK Study - ST - Correlation: n values
age age_first_phone com_gen com_unattended com_leave_with_others com_locked com_room_task dist_daily dist_study NMPQ_sum SAD_sum SAD_dep_sum SAD_ea_sum SAD_access_sum SAD_dist_sum BIS_sum NEO_O_sum NEO_C_sum NEO_E_sum NEO_A_sum NEO_N_sum RSES_sum SRS_sum SSEIT_sum DASS_D_sum DASS_A_sum DASS_S_sum
age 162 - - - - - - - - - - - - - - - - - - - - - - - - - -
age_first_phone 162 162 - - - - - - - - - - - - - - - - - - - - - - - - -
com_gen 162 162 162 - - - - - - - - - - - - - - - - - - - - - - - -
com_unattended 162 162 162 162 - - - - - - - - - - - - - - - - - - - - - - -
com_leave_with_others 162 162 162 162 162 - - - - - - - - - - - - - - - - - - - - - -
com_locked 162 162 162 162 162 162 - - - - - - - - - - - - - - - - - - - - -
com_room_task 162 162 162 162 162 162 162 - - - - - - - - - - - - - - - - - - - -
dist_daily 162 162 162 162 162 162 162 162 - - - - - - - - - - - - - - - - - - -
dist_study 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - - - - - - - -
NMPQ_sum 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - - - - - - -
SAD_sum 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - - - - - -
SAD_dep_sum 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - - - - -
SAD_ea_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - - - -
SAD_access_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - - -
SAD_dist_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - - -
BIS_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - - -
NEO_O_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - - -
NEO_C_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - - -
NEO_E_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - - -
NEO_A_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - - -
NEO_N_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - - -
RSES_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - - -
SRS_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - - -
SSEIT_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - - -
DASS_D_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 - -
DASS_A_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 -
DASS_S_sum 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162 162

# create new matrix for r & p vals with different col names
  # get age, age_first_phone, dist_daily, and all ques data (21 = SAD overall--not used)
mturk_ST_corr_r <- mturk_ST_corr$r[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(mturk_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(mturk_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  
mturk_ST_corr_p <- mturk_ST_corr$P[c(10:15, 1, 16:27),c(10:15, 1, 16:27)]
  colnames(mturk_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")
  rownames(mturk_ST_corr_r) <- c("NMPQ", "SAD", "SAD: Dep.", "SAD: EA", "SAD: A", "SAD: Dist.", "Age", "BIS", "NEO: O", "NEO: C", "NEO: E", "NEO: A", "NEO: N", "RSES", "SRS", "SSEIT", "DASS: D", "DASS: A", "DASS: S")


# create colour pallet for corr matrix
# corr_colours <- c("#7E1044", "#981570", "#F3F5F7", "#491296", "#170FA7")
corr_colours <- c("#98410B", "#F0803C", "#DDA448", "#F7F7FF", "#3F826D", "#08605F", "#414535")

# all vars included
corr_plot_mturk_ST_all <- {
  corrplot(mturk_ST_corr$r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = mturk_ST_corr$P, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .5, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# with all SAD subscales
corr_plot_mturk_ST_ques_all <- {
  corrplot(mturk_ST_corr_r, method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = mturk_ST_corr_p, sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# final -- with SAD overall only
corr_plot_mturk_ST_ques_final <- {
  corrplot(mturk_ST_corr_r[c(1,2,7:19), c(1,2,7:19)], method = 'color',
         col = (colorRampPalette(corr_colours)(5000)),
         # type = "upper",
         diag = F, # remove central diagonal
         tl.col = "black", tl.srt = 90, tl.cex = .8, #Text label color and rotation
         addgrid.col = NA, # add grid colour
         # addCoef.col = "black", # Add coefficient of correlation
         # addCoefasPercent = T # add as coefficient as percent
         # number.cex = .25, # size of the coeff
         # number.digits = 2, # num decimals in coeff
         p.mat = mturk_ST_corr_p[c(1,2,7:19), c(1,2,7:19)], sig.level = c(.001, .01, .05),
         insig = "label_sig", pch.cex = .75, pch.col = "black"
         # insig = "blank"# insig = "pch", pch = 10, pch.col = "red", pch.cex = .1, # add this instead of insig above to denot insig p values with red dot
         )
  recordPlot()
}
Warning in ind1:ind2 :
  numerical expression has 10 elements: only the first used

# export corr matrix using ggsave() & replayPlot() to call on previously made plot
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_mturk_ST_all(oct28)", plot = replayPlot(corr_plot_mturk_ST_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_mturk_ST_ques_all(oct28)", plot = replayPlot(corr_plot_mturk_ST_ques_all), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)
ggsave(filename="/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Figures/corr_plot_mturk_ST_ques_final(oct28)", plot = replayPlot(corr_plot_mturk_ST_ques_final), device = "jpeg", height = 5, width = 8, units = "in", dpi = 1000)

# export csv files of R values & p values 
  write.csv(mturk_ST_corr$r,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_ST_corr_rvals(oct28).csv", row.names = T)
  write.csv(mturk_ST_corr$P,"/Users/anaceciliaruizpardo/RStudio/Smartphone_study/Study 3- Individual Differences/Dissertation (10:18:21)/Excel Outputs/mturk_ST_corr_pvals(oct28).csv", row.names = T)

Regressions

This data only included ps who reported both having an iPhone (SONA = 209; Mturk = 248) and had ST activated prior to the study (SONA = 175 ; Mturk = 162) rather than the total sample (SONA = 240; Mturk = 505).

Note: Since this was an exploratory analysis, the predictor of “age of first phone” and other ST-related continuous variables (i.e., total weekly ST, daily pickups, daily notifications) were added to each model.

Study 1: SONA

NMPQ

This regression used the following formula: \(NMPQ = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 156) = 1.84, p = .03, R2 = .17

  • sig predictors:

    • NEO: O, t(156) = -2.36, p = .02
    • NEO: N, t(156) = 2.01, p = .05 (.0458)
# run lm + give summary
summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = NMPQ_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = NMPQ_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-57.669 -13.950  -0.244  15.831  45.745 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)  
(Intercept)         87.397705  43.193181   2.023   0.0447 *
age                  0.574800   1.219533   0.471   0.6381  
age_first_phone     -0.790636   0.974347  -0.811   0.4183  
ST_weekly_tot_hours  0.130148   0.094415   1.378   0.1700  
ST_daily_pickups    -0.003797   0.011045  -0.344   0.7315  
ST_daily_not        -0.004203   0.008147  -0.516   0.6067  
BIS_sum             -0.512263   0.713963  -0.717   0.4741  
DASS_D_sum           0.228048   0.651958   0.350   0.7270  
DASS_A_sum           0.043498   0.725612   0.060   0.9523  
DASS_S_sum           0.729499   0.823060   0.886   0.3768  
NEO_O_sum           -0.750727   0.300345  -2.500   0.0135 *
NEO_C_sum           -0.319644   0.449969  -0.710   0.4785  
NEO_E_sum            0.376744   0.350890   1.074   0.2846  
NEO_A_sum           -0.121438   0.300796  -0.404   0.6870  
NEO_N_sum            0.531846   0.319224   1.666   0.0977 .
RSES_sum            -0.184455   0.459207  -0.402   0.6885  
SSEIT_sum            0.302743   0.168967   1.792   0.0751 .
SRS_sum             -0.610149   0.494721  -1.233   0.2193  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.96 on 156 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.1585,    Adjusted R-squared:  0.06682 
F-statistic: 1.729 on 17 and 156 DF,  p-value: 0.04278
# summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = NMPQ_sum ~ NEO_O_sum + NEO_N_sum))
SAD

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 156) = 3.78, p = .03, R2 = .29

  • sig predictors:

    • ST Hours, t(156) = 2.17, p = .03
    • DAS: S, t(156) = 1.99, p = .05 (.048)
    • NEO: A, t(156) = -2.36, p = .02
    • NEO: N, t(156) = 2.11, p = .04
    • SSEIT, t(156) = 3.30, p = .001
# run lm + give summary
summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-34.889  -6.901  -0.034   8.106  27.152 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)         66.5300294 24.8331579   2.679  0.00817 ** 
age                 -0.6727890  0.7011489  -0.960  0.33877    
age_first_phone     -0.8096564  0.5601836  -1.445  0.15037    
ST_weekly_tot_hours  0.1208576  0.0542822   2.226  0.02742 *  
ST_daily_pickups    -0.0095358  0.0063502  -1.502  0.13521    
ST_daily_not         0.0009335  0.0046843   0.199  0.84231    
BIS_sum             -0.0007044  0.4104802  -0.002  0.99863    
DASS_D_sum           0.2068592  0.3748320   0.552  0.58183    
DASS_A_sum          -0.3832978  0.4171777  -0.919  0.35962    
DASS_S_sum           0.9966098  0.4732041   2.106  0.03680 *  
NEO_O_sum           -0.3368499  0.1726780  -1.951  0.05288 .  
NEO_C_sum           -0.3480216  0.2587019  -1.345  0.18049    
NEO_E_sum            0.0267171  0.2017383   0.132  0.89481    
NEO_A_sum           -0.3116294  0.1729372  -1.802  0.07348 .  
NEO_N_sum            0.2631857  0.1835320   1.434  0.15357    
RSES_sum            -0.0429989  0.2640131  -0.163  0.87083    
SSEIT_sum            0.3261129  0.0971449   3.357  0.00099 ***
SRS_sum              0.0673136  0.2844313   0.237  0.81323    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 12.63 on 156 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.2763,    Adjusted R-squared:  0.1974 
F-statistic: 3.503 on 17 and 156 DF,  p-value: 1.549e-05
# summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_sum ~ ST_weekly_tot_hours + DASS_S_sum + NEO_A_sum + NEO_N_sum + SSEIT_sum))
SAD: Dependence

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 156) = 3.78, p = .03, R2 = .29

  • sig predictors:

    • NEO: O, t(156) = -2.58, p = .01
    • NEO: C, t(156) = -2.13, p = .04
    • SSEIT, t(156) = -2.79, p = .006
# run lm + give summary
summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_dep_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dep_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-9.8837 -2.7346  0.1241  3.0374  7.8712 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)   
(Intercept)         20.8308602  8.6117785   2.419  0.01672 * 
age                 -0.1289435  0.2431483  -0.530  0.59665   
age_first_phone     -0.1405594  0.1942635  -0.724  0.47043   
ST_weekly_tot_hours  0.0237016  0.0188243   1.259  0.20988   
ST_daily_pickups    -0.0032626  0.0022022  -1.482  0.14047   
ST_daily_not         0.0004183  0.0016244   0.258  0.79711   
BIS_sum             -0.0112249  0.1423486  -0.079  0.93725   
DASS_D_sum          -0.0713859  0.1299863  -0.549  0.58367   
DASS_A_sum          -0.0895343  0.1446712  -0.619  0.53690   
DASS_S_sum           0.2075302  0.1641003   1.265  0.20788   
NEO_O_sum           -0.1653028  0.0598822  -2.760  0.00646 **
NEO_C_sum           -0.1797264  0.0897141  -2.003  0.04687 * 
NEO_E_sum           -0.0016750  0.0699599  -0.024  0.98093   
NEO_A_sum           -0.0799761  0.0599721  -1.334  0.18429   
NEO_N_sum            0.0783664  0.0636462   1.231  0.22007   
RSES_sum             0.0585882  0.0915559   0.640  0.52317   
SSEIT_sum            0.0957720  0.0336884   2.843  0.00507 **
SRS_sum             -0.0651562  0.0986367  -0.661  0.50986   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.379 on 156 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.2039,    Adjusted R-squared:  0.1171 
F-statistic:  2.35 on 17 and 156 DF,  p-value: 0.003137
# summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_dep_sum ~ NEO_O_sum + NEO_C_sum + SSEIT_sum))
SAD: Accessibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 156) = 1.91, p = .02, R2 = .17

  • sig predictors:

    • Age first phone, t(156) = -2.10, p = .04
    • SSEIT, t(156) = 2.23, p = .03
# run lm + give summary
summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_access_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_access_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data %>% 
    filter(ST == "had ST"))

Residuals:
     Min       1Q   Median       3Q      Max 
-12.3116  -2.3744   0.1514   2.9421   7.8028 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)  
(Intercept)         10.1611074  7.6182335   1.334   0.1842  
age                  0.1111423  0.2150961   0.517   0.6061  
age_first_phone     -0.3674877  0.1718513  -2.138   0.0340 *
ST_weekly_tot_hours  0.0281174  0.0166525   1.688   0.0933 .
ST_daily_pickups    -0.0015660  0.0019481  -0.804   0.4227  
ST_daily_not        -0.0003168  0.0014370  -0.220   0.8258  
BIS_sum             -0.0333708  0.1259258  -0.265   0.7914  
DASS_D_sum           0.1070453  0.1149897   0.931   0.3533  
DASS_A_sum          -0.1006927  0.1279804  -0.787   0.4326  
DASS_S_sum           0.1652732  0.1451680   1.138   0.2567  
NEO_O_sum           -0.0529182  0.0529736  -0.999   0.3194  
NEO_C_sum           -0.0177838  0.0793637  -0.224   0.8230  
NEO_E_sum           -0.0077500  0.0618886  -0.125   0.9005  
NEO_A_sum           -0.0450726  0.0530531  -0.850   0.3969  
NEO_N_sum            0.0798234  0.0563033   1.418   0.1583  
RSES_sum            -0.0019210  0.0809931  -0.024   0.9811  
SSEIT_sum            0.0670841  0.0298018   2.251   0.0258 *
SRS_sum              0.0021102  0.0872569   0.024   0.9807  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.874 on 156 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.1659,    Adjusted R-squared:  0.07501 
F-statistic: 1.825 on 17 and 156 DF,  p-value: 0.02917
# summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_access_sum ~ age_first_phone + SSEIT_sum))
SAD: Emotional Attachment

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 156) = 3.74, p < .001, R2 = .29

  • sig predictors:

    • ST Hours, t(156) = 2.14, p = .03
    • DAS: S, t(156) = 2.51, p = .01
    • NEO: A, t(156) = -2.74, p = .007
    • SSEIT, t(156) = 2.37, p = .02
# run lm + give summary
summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_ea_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_ea_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data %>% 
    filter(ST == "had ST"))

Residuals:
     Min       1Q   Median       3Q      Max 
-11.2842  -2.7840  -0.3623   3.2932  11.5420 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)   
(Intercept)         19.7324514  8.6601246   2.279  0.02405 * 
age                 -0.3318977  0.2445133  -1.357  0.17662   
age_first_phone     -0.1824215  0.1953541  -0.934  0.35185   
ST_weekly_tot_hours  0.0415069  0.0189299   2.193  0.02981 * 
ST_daily_pickups    -0.0016532  0.0022145  -0.747  0.45647   
ST_daily_not         0.0008103  0.0016336   0.496  0.62056   
BIS_sum             -0.0271707  0.1431477  -0.190  0.84971   
DASS_D_sum           0.1491162  0.1307160   1.141  0.25572   
DASS_A_sum          -0.1348305  0.1454833  -0.927  0.35547   
DASS_S_sum           0.4363509  0.1650216   2.644  0.00903 **
NEO_O_sum           -0.0914383  0.0602184  -1.518  0.13093   
NEO_C_sum           -0.1005374  0.0902177  -1.114  0.26683   
NEO_E_sum            0.0548415  0.0703527   0.780  0.43685   
NEO_A_sum           -0.1319097  0.0603088  -2.187  0.03021 * 
NEO_N_sum            0.0383168  0.0640035   0.599  0.55026   
RSES_sum            -0.0381714  0.0920699  -0.415  0.67901   
SSEIT_sum            0.0831594  0.0338776   2.455  0.01520 * 
SRS_sum              0.1542970  0.0991904   1.556  0.12184   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.404 on 156 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.2738,    Adjusted R-squared:  0.1947 
F-statistic: 3.461 on 17 and 156 DF,  p-value: 1.891e-05
# summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_ea_sum ~ ST_weekly_tot_hours + DASS_S_sum + NEO_A_sum + SSEIT_sum))
SAD: Distractibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 156) = 2.64, p < .001, R2 = .22

  • sig predictors:

    • ST Hours, t(156) = 1.95, p = .05 (almost sig)
    • NEO: N, t(156) = 2.05, p = .04
    • SSEIT, t(156) = 2.16, p = .03
# run lm + give summary
summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_dist_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dist_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-6.0087 -1.7184  0.1769  1.6781  5.1851 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)  
(Intercept)          9.2722445  4.6456936   1.996   0.0477 *
age                 -0.2745160  0.1311683  -2.093   0.0380 *
age_first_phone     -0.0107735  0.1047970  -0.103   0.9183  
ST_weekly_tot_hours  0.0198063  0.0101549   1.950   0.0529 .
ST_daily_pickups    -0.0023573  0.0011880  -1.984   0.0490 *
ST_daily_not        -0.0004502  0.0008763  -0.514   0.6081  
BIS_sum              0.0435259  0.0767911   0.567   0.5717  
DASS_D_sum           0.0152891  0.0701222   0.218   0.8277  
DASS_A_sum           0.0111565  0.0780440   0.143   0.8865  
DASS_S_sum           0.1151906  0.0885252   1.301   0.1951  
NEO_O_sum            0.0018944  0.0323039   0.059   0.9533  
NEO_C_sum            0.0019202  0.0483970   0.040   0.9684  
NEO_E_sum            0.0103869  0.0377404   0.275   0.7835  
NEO_A_sum           -0.0351583  0.0323524  -1.087   0.2788  
NEO_N_sum            0.0526853  0.0343345   1.534   0.1269  
RSES_sum            -0.0677513  0.0493906  -1.372   0.1721  
SSEIT_sum            0.0419260  0.0181735   2.307   0.0224 *
SRS_sum             -0.0207847  0.0532103  -0.391   0.6966  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.362 on 156 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.2278,    Adjusted R-squared:  0.1436 
F-statistic: 2.707 on 17 and 156 DF,  p-value: 0.0006272
# summary(lm(data = SONA_data %>% filter(ST == "had ST"), formula = SAD_dist_sum ~ NEO_N_sum + SSEIT_sum))

Study 2: Mturk

NMPQ

This regression used the following formula: \(NMPQ = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 143) = 12.24, p < .001, R2 = .59

  • sig predictors:

    • Age, t(143) = -2.42, p = .02
    • ST: Pickups, t(143) = -1.96, p = .05 (almost sig)
    • DASS: D, t(143) = 2.70, p = .008
    • NEO: N, t(143) = 2.86, p = .005
    • RSES, t(143) = -2.54, p = .01
    • SSEIT, t(143) = 3.57, p < .001
# run lm + give summary
summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = NMPQ_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = NMPQ_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-54.573  -6.189   0.907   9.160  48.248 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)         -32.727403  27.707927  -1.181 0.239501    
age                  -0.365110   0.158880  -2.298 0.023010 *  
age_first_phone      -0.004768   0.007286  -0.654 0.513869    
ST_weekly_tot_hours  -0.143089   0.089873  -1.592 0.113565    
ST_daily_pickups     -0.018518   0.014539  -1.274 0.204855    
ST_daily_not         -0.019553   0.010182  -1.920 0.056807 .  
BIS_sum               0.522839   0.476589   1.097 0.274466    
DASS_D_sum            1.353209   0.533366   2.537 0.012250 *  
DASS_A_sum           -0.476778   0.580432  -0.821 0.412776    
DASS_S_sum            0.917093   0.643874   1.424 0.156528    
NEO_O_sum             0.052355   0.284503   0.184 0.854257    
NEO_C_sum             0.128775   0.394499   0.326 0.744579    
NEO_E_sum             0.287706   0.201761   1.426 0.156055    
NEO_A_sum             0.429218   0.324958   1.321 0.188665    
NEO_N_sum             0.846372   0.279630   3.027 0.002933 ** 
RSES_sum             -0.636578   0.249775  -2.549 0.011871 *  
SSEIT_sum             0.502160   0.136626   3.675 0.000335 ***
SRS_sum               0.306112   0.482068   0.635 0.526444    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 16.92 on 143 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.5891,    Adjusted R-squared:  0.5402 
F-statistic: 12.06 on 17 and 143 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = NMPQ_sum ~ age + ST_daily_pickups + DASS_D_sum + NEO_N_sum + RSES_sum + SSEIT_sum))
SAD

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 143) = 17.02, p < .001, R2 = .67

  • sig predictors:

    • Age, t(143) = -2.58, p = .01
    • ST Pickups, t(143) = -2.62, p = .01 (.0099)
    • NEO: E, t(143) = -1.96, p = .05 (almost sig)
    • NEO: N, t(143) = 3.82, p < .001
    • SSEIT, t(143) = 3.99, p < .001
    • SRS, t(143) = -2.09, p = .04
# run lm + give summary
summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-34.830  -3.350   1.127   4.205  24.621 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)          3.504e+00  1.466e+01   0.239 0.811444    
age                 -2.095e-01  8.408e-02  -2.492 0.013833 *  
age_first_phone      5.141e-05  3.856e-03   0.013 0.989380    
ST_weekly_tot_hours -3.385e-02  4.756e-02  -0.712 0.477785    
ST_daily_pickups    -2.057e-02  7.694e-03  -2.674 0.008362 ** 
ST_daily_not        -1.822e-03  5.388e-03  -0.338 0.735730    
BIS_sum             -2.757e-01  2.522e-01  -1.093 0.276239    
DASS_D_sum           2.604e-01  2.822e-01   0.923 0.357815    
DASS_A_sum           4.241e-01  3.072e-01   1.381 0.169543    
DASS_S_sum           3.836e-01  3.407e-01   1.126 0.262098    
NEO_O_sum            7.186e-02  1.506e-01   0.477 0.633871    
NEO_C_sum            2.225e-01  2.088e-01   1.066 0.288218    
NEO_E_sum            1.920e-01  1.068e-01   1.798 0.074308 .  
NEO_A_sum            1.152e-01  1.720e-01   0.670 0.503838    
NEO_N_sum            5.687e-01  1.480e-01   3.843 0.000182 ***
RSES_sum            -6.248e-02  1.322e-01  -0.473 0.637124    
SSEIT_sum            2.911e-01  7.230e-02   4.027 9.14e-05 ***
SRS_sum             -5.225e-01  2.551e-01  -2.048 0.042379 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 8.955 on 143 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.6673,    Adjusted R-squared:  0.6278 
F-statistic: 16.87 on 17 and 143 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_sum ~ age + ST_daily_pickups + NEO_E_sum + NEO_N_sum + SSEIT_sum + SRS_sum))
SAD: Dependence

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 143) = 8.13, p < .001, R2 = .49

  • sig predictors:

    • Age, t(143) = -2.59, p = .01
    • NEO: N, t(143) = 3.11, p = .002
    • SSEIT, t(143) = 2.16, p = .03
# run lm + give summary
summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_dep_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dep_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-8.6758 -1.6212  0.1576  1.8150  8.5429 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)         -1.4719584  5.1721883  -0.285 0.776369    
age                 -0.0731618  0.0296578  -2.467 0.014811 *  
age_first_phone     -0.0001654  0.0013601  -0.122 0.903367    
ST_weekly_tot_hours -0.0094574  0.0167764  -0.564 0.573820    
ST_daily_pickups    -0.0049859  0.0027140  -1.837 0.068267 .  
ST_daily_not        -0.0021344  0.0019007  -1.123 0.263340    
BIS_sum             -0.1209112  0.0889640  -1.359 0.176254    
DASS_D_sum           0.0761799  0.0995624   0.765 0.445445    
DASS_A_sum           0.0099962  0.1083482   0.092 0.926621    
DASS_S_sum           0.1999939  0.1201908   1.664 0.098308 .  
NEO_O_sum            0.0402800  0.0531076   0.758 0.449424    
NEO_C_sum            0.0642547  0.0736405   0.873 0.384374    
NEO_E_sum            0.0416937  0.0376623   1.107 0.270136    
NEO_A_sum            0.0399767  0.0606594   0.659 0.510933    
NEO_N_sum            0.1768181  0.0521980   3.387 0.000911 ***
RSES_sum            -0.0552043  0.0466251  -1.184 0.238376    
SSEIT_sum            0.0590287  0.0255037   2.315 0.022064 *  
SRS_sum             -0.0456686  0.0899868  -0.508 0.612583    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.159 on 143 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.4919,    Adjusted R-squared:  0.4315 
F-statistic: 8.145 on 17 and 143 DF,  p-value: 4.548e-14
# summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_dep_sum ~ age + NEO_N_sum + SSEIT_sum))
SAD: Accessibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 143) = 6.44, p < .001, R2 = .43

  • sig predictors:

    • Age, t(143) = -2.02, p = .05 (.046)
    • ST Pickups, t(143) = -2.96, p = .004
    • NEO: N, t(143) = 2.39, p = .02
# run lm + give summary
summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_access_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_access_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-9.4038 -1.3937  0.0622  1.9552  6.9396 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)   
(Intercept)         -1.330289   5.039107  -0.264  0.79217   
age                 -0.059547   0.028895  -2.061  0.04113 * 
age_first_phone     -0.001859   0.001325  -1.403  0.16288   
ST_weekly_tot_hours -0.011351   0.016345  -0.694  0.48851   
ST_daily_pickups    -0.007872   0.002644  -2.977  0.00342 **
ST_daily_not        -0.001284   0.001852  -0.693  0.48918   
BIS_sum              0.029989   0.086675   0.346  0.72986   
DASS_D_sum           0.102462   0.097001   1.056  0.29261   
DASS_A_sum          -0.070032   0.105560  -0.663  0.50812   
DASS_S_sum           0.239075   0.117098   2.042  0.04302 * 
NEO_O_sum            0.002430   0.051741   0.047  0.96261   
NEO_C_sum            0.097228   0.071746   1.355  0.17750   
NEO_E_sum            0.016288   0.036693   0.444  0.65779   
NEO_A_sum            0.107022   0.059099   1.811  0.07226 . 
NEO_N_sum            0.108150   0.050855   2.127  0.03517 * 
RSES_sum            -0.074054   0.045425  -1.630  0.10525   
SSEIT_sum            0.043344   0.024848   1.744  0.08324 . 
SRS_sum             -0.007183   0.087671  -0.082  0.93482   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.077 on 143 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.4311,    Adjusted R-squared:  0.3635 
F-statistic: 6.374 on 17 and 143 DF,  p-value: 5.678e-11
# summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_access_sum ~ age + ST_daily_pickups + NEO_N_sum))
SAD: Emotional Attachment

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 143) = 14.03, p < .001, R2 = .63

  • sig predictors:

    • BIS, t(143) = -2.11, p = .04
    • DASS: A, t(143) = 3.11, p = .002
    • NEO: E, t(143) = 2.54, p = .01
    • NEO: N, t(143) = 3.25, p = .002
    • SSEIT, t(143) = 4.74, p < .001
    • SRS, t(143) = -2.93, p = .004
# run lm + give summary
summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_ea_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_ea_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data %>% 
    filter(ST == "had ST"))

Residuals:
     Min       1Q   Median       3Q      Max 
-10.3183  -1.3847   0.3242   1.5276   8.5285 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)          4.3024412  5.2726320   0.816  0.41586    
age                 -0.0368347  0.0302337  -1.218  0.22510    
age_first_phone      0.0018350  0.0013865   1.323  0.18780    
ST_weekly_tot_hours -0.0208992  0.0171022  -1.222  0.22371    
ST_daily_pickups    -0.0055044  0.0027667  -1.990  0.04855 *  
ST_daily_not         0.0008099  0.0019376   0.418  0.67659    
BIS_sum             -0.1929185  0.0906916  -2.127  0.03512 *  
DASS_D_sum           0.0651714  0.1014959   0.642  0.52183    
DASS_A_sum           0.3565393  0.1104524   3.228  0.00155 ** 
DASS_S_sum          -0.1939827  0.1225249  -1.583  0.11558    
NEO_O_sum            0.0242563  0.0541390   0.448  0.65480    
NEO_C_sum            0.0237037  0.0750706   0.316  0.75265    
NEO_E_sum            0.0986375  0.0383937   2.569  0.01122 *  
NEO_A_sum           -0.0680470  0.0618374  -1.100  0.27300    
NEO_N_sum            0.1739940  0.0532117   3.270  0.00135 ** 
RSES_sum             0.0318669  0.0475306   0.670  0.50365    
SSEIT_sum            0.1258551  0.0259990   4.841 3.31e-06 ***
SRS_sum             -0.2581471  0.0917343  -2.814  0.00558 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.22 on 143 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.6269,    Adjusted R-squared:  0.5826 
F-statistic: 14.13 on 17 and 143 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_ea_sum ~ BIS_sum + DASS_A_sum + NEO_E_sum + NEO_N_sum + SSEIT_sum + SRS_sum))
SAD: Distractibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(17, 143) = 18.11, p < .001, R2 = .68

  • sig predictors:

    • DASS: A, t(143) = 3.20, p = .002
    • NEO: E, t(143) = 1.94, p = .05 (almost sig, .055)
    • SSEIT, t(143) = 2.24, p = .03
    • SRS, t(143) = -4.66, p < .001
# run lm + give summary
summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_dist_sum ~ age + age_first_phone + ST_weekly_tot_hours + ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dist_sum ~ age + age_first_phone + ST_weekly_tot_hours + 
    ST_daily_pickups + ST_daily_not + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data %>% 
    filter(ST == "had ST"))

Residuals:
    Min      1Q  Median      3Q     Max 
-5.0921 -1.0464  0.0842  1.1036  5.8082 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)          5.4420634  2.9527579   1.843  0.06739 .  
age                 -0.0071313  0.0169314  -0.421  0.67425    
age_first_phone      0.0004859  0.0007765   0.626  0.53244    
ST_weekly_tot_hours -0.0033065  0.0095775  -0.345  0.73043    
ST_daily_pickups    -0.0010958  0.0015494  -0.707  0.48058    
ST_daily_not         0.0016105  0.0010851   1.484  0.13996    
BIS_sum              0.0046175  0.0507888   0.091  0.92769    
DASS_D_sum          -0.0162172  0.0568393  -0.285  0.77581    
DASS_A_sum           0.1993537  0.0618551   3.223  0.00157 ** 
DASS_S_sum           0.0178324  0.0686159   0.260  0.79533    
NEO_O_sum           -0.0263926  0.0303187  -0.871  0.38548    
NEO_C_sum            0.0316367  0.0420407   0.753  0.45297    
NEO_E_sum            0.0412085  0.0215011   1.917  0.05729 .  
NEO_A_sum           -0.0018917  0.0346299  -0.055  0.95651    
NEO_N_sum            0.0492056  0.0297994   1.651  0.10089    
RSES_sum             0.0477780  0.0266179   1.795  0.07477 .  
SSEIT_sum            0.0334370  0.0145599   2.297  0.02310 *  
SRS_sum             -0.2360795  0.0513727  -4.595  9.4e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.803 on 143 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.683, Adjusted R-squared:  0.6453 
F-statistic: 18.12 on 17 and 143 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data %>% filter(ST == "had ST"), formula = SAD_dist_sum ~ NEO_N_sum + SSEIT_sum))

Exploratory Analyses: Including Age of First Smartphone Predictor

All Data

Study 1: SONA

NMPQ

This regression used the following formula: \(NMPQ = age + BIS + DASS: D + DASS: A + DASS: S + NEO: O + NEO: C + NEO: E + NEO: A + NEO: N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 225) = 2.78, p < .001, R2 = .15

  • sig predictors:

    • NEO: O, t(225) = -2.19, p = .03
    • NEO: N, t(225) = 3.10, p = .002
    • SSEIT, t(225) = 2.52, p = .01
    • SRS, t(225) = -2.27, p = .02
# run lm + give summary
summary(lm(data = SONA_data, formula = NMPQ_sum ~ age + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = NMPQ_sum ~ age + BIS_sum + DASS_D_sum + DASS_A_sum + 
    DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + 
    NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-61.225 -13.624  -0.002  14.614  55.358 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) 83.73122   32.30362   2.592  0.01016 * 
age         -0.64849    0.67399  -0.962  0.33700   
BIS_sum     -0.47233    0.57083  -0.827  0.40886   
DASS_D_sum  -0.49156    0.48685  -1.010  0.31373   
DASS_A_sum   0.26087    0.58044   0.449  0.65354   
DASS_S_sum   0.53740    0.64578   0.832  0.40619   
NEO_O_sum   -0.59817    0.24687  -2.423  0.01618 * 
NEO_C_sum   -0.03698    0.36866  -0.100  0.92018   
NEO_E_sum    0.21302    0.26232   0.812  0.41763   
NEO_A_sum   -0.07458    0.24882  -0.300  0.76466   
NEO_N_sum    0.70429    0.25400   2.773  0.00602 **
RSES_sum     0.19876    0.36088   0.551  0.58234   
SSEIT_sum    0.31572    0.12283   2.570  0.01080 * 
SRS_sum     -0.92889    0.38813  -2.393  0.01752 * 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.41 on 226 degrees of freedom
Multiple R-squared:  0.1408,    Adjusted R-squared:  0.09133 
F-statistic: 2.848 on 13 and 226 DF,  p-value: 0.000816
# summary(lm(data = SONA_data, formula = NMPQ_sum ~ NEO_O_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

SAD - Overall

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 225) = 3.74, p < .001, R2 = .19

  • sig predictors:

    • NEO: A, t(225) = -2.32, p = .02
    • NEO: N, t(225) = 2.65, p = .009
    • SSEIT, t(225) = 4.34, p < .001
    • SRS, t(225) = -2.27, p = .02
# run lm + give summary
summary(lm(data = SONA_data, formula = SAD_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-37.242  -6.550   0.360   8.305  36.126 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)     45.25349   19.65132   2.303   0.0222 *  
age             -0.10234    0.44388  -0.231   0.8179    
age_first_phone -0.45945    0.46154  -0.995   0.3206    
BIS_sum         -0.02004    0.34462  -0.058   0.9537    
DASS_D_sum       0.01110    0.29365   0.038   0.9699    
DASS_A_sum      -0.17344    0.35024  -0.495   0.6209    
DASS_S_sum       0.56749    0.38946   1.457   0.1465    
NEO_O_sum       -0.30357    0.14921  -2.035   0.0431 *  
NEO_C_sum       -0.01402    0.22234  -0.063   0.9498    
NEO_E_sum       -0.02445    0.15911  -0.154   0.8780    
NEO_A_sum       -0.23518    0.15017  -1.566   0.1187    
NEO_N_sum        0.31513    0.15324   2.056   0.0409 *  
RSES_sum         0.13804    0.21767   0.634   0.5266    
SSEIT_sum        0.32438    0.07408   4.379 1.83e-05 ***
SRS_sum         -0.37778    0.23453  -1.611   0.1086    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 12.91 on 225 degrees of freedom
Multiple R-squared:  0.1743,    Adjusted R-squared:  0.1229 
F-statistic: 3.393 on 14 and 225 DF,  p-value: 5.45e-05
# summary(lm(data = SONA_data, formula = SAD_sum ~ NEO_A_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

SAD - Dependency

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 225) = 2.39, p = .004, R2 = .13

  • sig predictors:

    • NEO: O, t(225) = -2.93, p = .004
    • NEO: N, t(225) = 1.94, p = .05 (almost sig)
    • SSEIT, t(225) = 3.03, p = .003
# run lm + give summary
summary(lm(data = SONA_data, formula = SAD_dep_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dep_sum ~ age + age_first_phone + BIS_sum + 
    DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + 
    SRS_sum, data = SONA_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.6431  -2.3611  -0.0162   3.1144  10.2646 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)   
(Intercept)     14.941037   6.713797   2.225  0.02705 * 
age              0.076331   0.151648   0.503  0.61521   
age_first_phone -0.114534   0.157682  -0.726  0.46838   
BIS_sum         -0.019069   0.117737  -0.162  0.87148   
DASS_D_sum      -0.053462   0.100325  -0.533  0.59464   
DASS_A_sum      -0.013781   0.119659  -0.115  0.90841   
DASS_S_sum       0.041479   0.133059   0.312  0.75553   
NEO_O_sum       -0.160424   0.050976  -3.147  0.00187 **
NEO_C_sum       -0.059395   0.075961  -0.782  0.43509   
NEO_E_sum       -0.002392   0.054361  -0.044  0.96495   
NEO_A_sum       -0.053253   0.051304  -1.038  0.30039   
NEO_N_sum        0.082210   0.052355   1.570  0.11776   
RSES_sum         0.071833   0.074367   0.966  0.33511   
SSEIT_sum        0.077352   0.025308   3.056  0.00251 **
SRS_sum         -0.145011   0.080125  -1.810  0.07166 . 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.411 on 225 degrees of freedom
Multiple R-squared:  0.121, Adjusted R-squared:  0.06634 
F-statistic: 2.213 on 14 and 225 DF,  p-value: 0.008164
# summary(lm(data = SONA_data, formula = SAD_dep_sum ~  NEO_O_sum + NEO_N_sum + SSEIT_sum))

SAD - Accessibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 225) = 3.25, p < .001, R2 = .17

  • sig predictors:

    • Age phone, t(225) = -2.13, p = .03
    • NEO: N, t(225) = 3.00, p = .003
    • SSEIT, t(225) = 3.47, p < .001
# run lm + give summary
summary(lm(data = SONA_data, formula = SAD_access_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_access_sum ~ age + age_first_phone + BIS_sum + 
    DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + 
    SRS_sum, data = SONA_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.8531  -2.1439   0.1179   2.7771   8.5869 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      5.069689   5.638846   0.899 0.369579    
age             -0.025651   0.127368  -0.201 0.840573    
age_first_phone -0.271401   0.132436  -2.049 0.041592 *  
BIS_sum          0.006306   0.098886   0.064 0.949210    
DASS_D_sum       0.066481   0.084262   0.789 0.430955    
DASS_A_sum      -0.042479   0.100501  -0.423 0.672940    
DASS_S_sum       0.071123   0.111754   0.636 0.525146    
NEO_O_sum       -0.017469   0.042814  -0.408 0.683656    
NEO_C_sum        0.063907   0.063799   1.002 0.317566    
NEO_E_sum       -0.027207   0.045657  -0.596 0.551844    
NEO_A_sum       -0.028580   0.043089  -0.663 0.507830    
NEO_N_sum        0.114849   0.043972   2.612 0.009612 ** 
RSES_sum         0.040356   0.062460   0.646 0.518865    
SSEIT_sum        0.074793   0.021256   3.519 0.000525 ***
SRS_sum         -0.048925   0.067296  -0.727 0.467981    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.705 on 225 degrees of freedom
Multiple R-squared:  0.1601,    Adjusted R-squared:  0.1078 
F-statistic: 3.064 on 14 and 225 DF,  p-value: 0.0002304
# summary(lm(data = SONA_data, formula = SAD_access_sum ~ age_first_phone + NEO_N_sum + SSEIT_sum))

SAD - Emotional Attachement

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 225) = 3.32, p < .001, R2 = .17

  • sig predictors:

    • DASS: S, t(225) = 2.28, p = .02
    • NEO: A, t(225) = -2.85, p = .005
    • SSEIT, t(225) = 3.23, p = .001
# run lm + give summary
summary(lm(data = SONA_data, formula = SAD_ea_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_ea_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = SONA_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-15.7542  -2.3363  -0.0732   3.0469  10.8366 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)   
(Intercept)     13.00631    6.66122   1.953   0.0521 . 
age              0.04841    0.15046   0.322   0.7480   
age_first_phone -0.08678    0.15645  -0.555   0.5796   
BIS_sum         -0.06023    0.11682  -0.516   0.6066   
DASS_D_sum       0.06683    0.09954   0.671   0.5026   
DASS_A_sum      -0.09366    0.11872  -0.789   0.4310   
DASS_S_sum       0.30752    0.13202   2.329   0.0207 * 
NEO_O_sum       -0.09670    0.05058  -1.912   0.0571 . 
NEO_C_sum       -0.02281    0.07537  -0.303   0.7625   
NEO_E_sum        0.04814    0.05393   0.893   0.3731   
NEO_A_sum       -0.11539    0.05090  -2.267   0.0244 * 
NEO_N_sum        0.05463    0.05194   1.052   0.2941   
RSES_sum         0.02922    0.07378   0.396   0.6924   
SSEIT_sum        0.08303    0.02511   3.306   0.0011 **
SRS_sum         -0.02972    0.07950  -0.374   0.7089   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.376 on 225 degrees of freedom
Multiple R-squared:  0.1579,    Adjusted R-squared:  0.1055 
F-statistic: 3.013 on 14 and 225 DF,  p-value: 0.0002864
# summary(lm(data = SONA_data, formula = SAD_ea_sum ~ DASS_S_sum + NEO_A_sum + SSEIT_sum))

SAD - Distractibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 225) = 3.18, p < .001, R2 = .17

  • sig predictors:

    • SSEIT, t(225) = 3.85, p < .001
    • SRS, t(225) = -2.23, p = .03
# run lm + give summary
summary(lm(data = SONA_data, formula = SAD_dist_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dist_sum ~ age + age_first_phone + BIS_sum + 
    DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + 
    SRS_sum, data = SONA_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.4716 -1.3710  0.1538  1.6601  5.0845 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      6.2447103  3.6878953   1.693 0.091782 .  
age             -0.1752607  0.0833006  -2.104 0.036493 *  
age_first_phone  0.0815140  0.0866151   0.941 0.347659    
BIS_sum          0.0525472  0.0646732   0.813 0.417362    
DASS_D_sum      -0.0563096  0.0551089  -1.022 0.307978    
DASS_A_sum       0.0009866  0.0657290   0.015 0.988038    
DASS_S_sum       0.1112816  0.0730892   1.523 0.129277    
NEO_O_sum        0.0027741  0.0280013   0.099 0.921171    
NEO_C_sum        0.0246781  0.0417255   0.591 0.554820    
NEO_E_sum       -0.0067688  0.0298603  -0.227 0.820876    
NEO_A_sum       -0.0304303  0.0281811  -1.080 0.281381    
NEO_N_sum        0.0365654  0.0287586   1.271 0.204878    
RSES_sum        -0.0089838  0.0408496  -0.220 0.826129    
SSEIT_sum        0.0542163  0.0139018   3.900 0.000127 ***
SRS_sum         -0.1089385  0.0440130  -2.475 0.014056 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.423 on 225 degrees of freedom
Multiple R-squared:  0.1658,    Adjusted R-squared:  0.1138 
F-statistic: 3.193 on 14 and 225 DF,  p-value: 0.000131
# summary(lm(data = SONA_data, formula = SAD_dist_sum ~ SSEIT_sum + SRS_sum))

Study 2: Mturk

NMPQ

This regression used the following formula: \(NMPQ = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 490) = 29.67, p < .001, R2 = .46

  • sig predictors: = Age, t(490) = -2.35, p = .02

    • DASS: A, t(490) = 1.96, p = .05 (almost sig)
    • NEO: C, t(490) = 3.61, p < .001
    • NEO: E, t(490) = 3.14, p = .002
    • NEO: N, t(490) = 4.06, p < .001
    • RSES, t(490) = -1.94, p = .05 (almost sig)
    • SSEIT, t(490) = 5.49, p < .001
    • SRS, t(490) = -3.30, p = .001
# run lm + give summary
summary(lm(data = Mturk_data, formula = NMPQ_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = NMPQ_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-70.628  -9.748   0.519  11.409  59.418 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -7.6748210 17.3419358  -0.443 0.658280    
age             -0.2328261  0.1023487  -2.275 0.023347 *  
age_first_phone  0.0009087  0.0056139   0.162 0.871479    
BIS_sum          0.1074193  0.3187736   0.337 0.736279    
DASS_D_sum       0.4142423  0.3272598   1.266 0.206190    
DASS_A_sum       0.7449242  0.3780030   1.971 0.049323 *  
DASS_S_sum       0.5661355  0.4028700   1.405 0.160579    
NEO_O_sum       -0.1422795  0.1606707  -0.886 0.376302    
NEO_C_sum        0.8589074  0.2355071   3.647 0.000294 ***
NEO_E_sum        0.4266682  0.1422300   3.000 0.002839 ** 
NEO_A_sum       -0.0458534  0.1823915  -0.251 0.801610    
NEO_N_sum        0.7008665  0.1648276   4.252 2.54e-05 ***
RSES_sum        -0.2857500  0.1485641  -1.923 0.055007 .  
SSEIT_sum        0.4492209  0.0812046   5.532 5.16e-08 ***
SRS_sum         -0.8798925  0.2659553  -3.308 0.001007 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.26 on 490 degrees of freedom
Multiple R-squared:  0.4595,    Adjusted R-squared:  0.4441 
F-statistic: 29.76 on 14 and 490 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data, formula = NMPQ_sum ~ age + DASS_A_sum + NEO_C_sum + NEO_E_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

SAD - Overall

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 490) = 40.42, p < .001, R2 = .54

  • sig predictors:

    • Age, t(490) = -2.66, p = .008
    • DASS: A, t(490) = 3.12, p = .002
    • NEO: O, t(490) = -2.17, p = .03
    • NEO: C, t(490) = 2.76, p = .006
    • NEO: E, t(490) = 3.31, p = .001
    • NEO: N, t(490) = 3.83, p < .001
    • SSEIT, t(490) = 7.03, p < .001
    • SRS, t(490) = -6.12, p = .02
# run lm + give summary
summary(lm(data = Mturk_data, formula = SAD_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-48.792  -6.394   0.260   7.554  30.752 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     13.2036387 10.2430265   1.289  0.19799    
age             -0.1547390  0.0604523  -2.560  0.01078 *  
age_first_phone  0.0007647  0.0033159   0.231  0.81771    
BIS_sum         -0.0739891  0.1882839  -0.393  0.69452    
DASS_D_sum       0.2120045  0.1932962   1.097  0.27327    
DASS_A_sum       0.6932326  0.2232678   3.105  0.00201 ** 
DASS_S_sum       0.1684391  0.2379554   0.708  0.47937    
NEO_O_sum       -0.1926720  0.0949002  -2.030  0.04287 *  
NEO_C_sum        0.3926944  0.1391025   2.823  0.00495 ** 
NEO_E_sum        0.2628272  0.0840083   3.129  0.00186 ** 
NEO_A_sum        0.0303385  0.1077297   0.282  0.77836    
NEO_N_sum        0.3979152  0.0973555   4.087 5.10e-05 ***
RSES_sum        -0.1274448  0.0877495  -1.452  0.14704    
SSEIT_sum        0.3391977  0.0479636   7.072 5.30e-12 ***
SRS_sum         -0.9599181  0.1570867  -6.111 2.02e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.97 on 490 degrees of freedom
Multiple R-squared:  0.5359,    Adjusted R-squared:  0.5227 
F-statistic: 40.42 on 14 and 490 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data, formula = SAD_sum ~ age + DASS_A_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

SAD - Dependency

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 490) = 22.36, p < .001, R2 = .39

  • sig predictors:

    • Age, t(490) = -2.18, p = .03
    • DASS: A, t(490) = 2.53, p = .002
    • NEO: O, t(490) = -2.13, p = .03
    • NEO: C, t(490) = 2.71, p = .007
    • NEO: E, t(490) = 2.64, p = .009
    • NEO: N, t(490) = 3.06, p = .002
    • SSEIT, t(490) = 3.99, p < .001
    • SRS, t(490) = -3.78, p < .001
# run lm + give summary
summary(lm(data = Mturk_data, formula = SAD_dep_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dep_sum ~ age + age_first_phone + BIS_sum + 
    DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + 
    SRS_sum, data = Mturk_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.6146  -2.2688   0.2594   2.3092  10.9457 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      0.9461820  3.3401040   0.283 0.777082    
age             -0.0406804  0.0197126  -2.064 0.039575 *  
age_first_phone  0.0002557  0.0010813   0.236 0.813152    
BIS_sum         -0.0065454  0.0613967  -0.107 0.915144    
DASS_D_sum      -0.0026446  0.0630311  -0.042 0.966550    
DASS_A_sum       0.1809055  0.0728044   2.485 0.013295 *  
DASS_S_sum       0.1142210  0.0775939   1.472 0.141653    
NEO_O_sum       -0.0601419  0.0309456  -1.943 0.052531 .  
NEO_C_sum        0.1276934  0.0453593   2.815 0.005072 ** 
NEO_E_sum        0.0664906  0.0273939   2.427 0.015575 *  
NEO_A_sum        0.0285640  0.0351291   0.813 0.416547    
NEO_N_sum        0.1067656  0.0317462   3.363 0.000831 ***
RSES_sum        -0.0362093  0.0286139  -1.265 0.206312    
SSEIT_sum        0.0636552  0.0156402   4.070 5.48e-05 ***
SRS_sum         -0.1931369  0.0512237  -3.770 0.000183 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.902 on 490 degrees of freedom
Multiple R-squared:  0.3889,    Adjusted R-squared:  0.3714 
F-statistic: 22.27 on 14 and 490 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data, formula = SAD_dep_sum ~ age + DASS_A_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

SAD - Accessibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 490) = 14.25, p < .001, R2 = .29

  • sig predictors:

    • NEO: C, t(490) = 4.00, p < .001
    • NEO: E, t(490) = 2.13, p = .03
    • NEO: N, t(490) = 3.55, p < .001
    • SSEIT, t(490) = 3.59, p < .001
    • SRS, t(490) = -2.24, p = .03
# run lm + give summary
summary(lm(data = Mturk_data, formula = SAD_access_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_access_sum ~ age + age_first_phone + BIS_sum + 
    DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + 
    SRS_sum, data = Mturk_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-13.2698  -1.9715   0.3715   2.4684   9.5193 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -3.2480834  3.2292835  -1.006 0.314998    
age             -0.0265568  0.0190586  -1.393 0.164122    
age_first_phone -0.0004764  0.0010454  -0.456 0.648814    
BIS_sum          0.0384322  0.0593596   0.647 0.517646    
DASS_D_sum       0.0653614  0.0609398   1.073 0.283999    
DASS_A_sum       0.0567765  0.0703889   0.807 0.420282    
DASS_S_sum       0.1009618  0.0750194   1.346 0.178986    
NEO_O_sum       -0.0124353  0.0299189  -0.416 0.677859    
NEO_C_sum        0.1785834  0.0438544   4.072 5.43e-05 ***
NEO_E_sum        0.0498110  0.0264850   1.881 0.060602 .  
NEO_A_sum        0.0170237  0.0339636   0.501 0.616430    
NEO_N_sum        0.1141062  0.0306929   3.718 0.000224 ***
RSES_sum        -0.0439682  0.0276645  -1.589 0.112629    
SSEIT_sum        0.0558040  0.0151213   3.690 0.000249 ***
SRS_sum         -0.1113305  0.0495242  -2.248 0.025020 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.773 on 490 degrees of freedom
Multiple R-squared:  0.2886,    Adjusted R-squared:  0.2683 
F-statistic:  14.2 on 14 and 490 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data, formula = SAD_access_sum ~  NEO_C_sum + NEO_E_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

SAD - Emotional Attachement

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 490) = 39.93, p < .001, R2 = .53

  • sig predictors:

    • Age, t(490) = -2.76, p = .01
    • DASS: A, t(490) = 3.76, p < .001
    • NEO: O, t(490) = -2.25, p = .03
    • NEO: E, t(490) = 3.54, p < .001
    • NEO: N, t(490) = 2.82, p = .005
    • SSEIT, t(490) = 8.44, p < .001
    • SRS, t(490) = -6.46, p < .001
# run lm + give summary
summary(lm(data = Mturk_data, formula = SAD_ea_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_ea_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + 
    DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + 
    NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum, data = Mturk_data)

Residuals:
     Min       1Q   Median       3Q      Max 
-15.4283  -2.2943   0.2534   2.3532  12.1142 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      8.752770   3.355655   2.608 0.009375 ** 
age             -0.054026   0.019804  -2.728 0.006601 ** 
age_first_phone  0.001016   0.001086   0.936 0.349976    
BIS_sum         -0.097511   0.061683  -1.581 0.114557    
DASS_D_sum       0.100175   0.063325   1.582 0.114312    
DASS_A_sum       0.281266   0.073143   3.845 0.000136 ***
DASS_S_sum      -0.100372   0.077955  -1.288 0.198508    
NEO_O_sum       -0.070043   0.031090  -2.253 0.024705 *  
NEO_C_sum        0.053255   0.045571   1.169 0.243125    
NEO_E_sum        0.097013   0.027521   3.525 0.000463 ***
NEO_A_sum       -0.043980   0.035293  -1.246 0.213300    
NEO_N_sum        0.090616   0.031894   2.841 0.004682 ** 
RSES_sum        -0.005434   0.028747  -0.189 0.850140    
SSEIT_sum        0.131604   0.015713   8.375 5.83e-16 ***
SRS_sum         -0.333465   0.051462  -6.480 2.24e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.92 on 490 degrees of freedom
Multiple R-squared:  0.5317,    Adjusted R-squared:  0.5183 
F-statistic: 39.74 on 14 and 490 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data, formula = SAD_ea_sum ~ age + DASS_A_sum + NEO_O_sum + NEO_E_sum + NEO_N_sum + SSEIT_sum + SRS_sum))

SAD - Distractibility

This regression used the following formula: \(SAD = age + age first phone + BIS + D + A + S + O + C + E + A + N + RSES + SSEIT + SRS\)

Results indicate that:

  • over all model was sig F(14, 490) = 56.37, p < .001, R2 = .62

  • sig predictors:

    • Age, t(490) = -2.03, p = .04
    • DASS: A, t(490) = 3.37, p < .001
    • NEO: O, t(490) = -2.95, p = .003
    • NEO: E, t(490) = 3.33, p < .001
    • SSEIT, t(490) = 6.68, p < .001
    • SRS, t(490) = -9.33, p < .001
# run lm + give summary
summary(lm(data = Mturk_data, formula = SAD_dist_sum ~ age + age_first_phone + BIS_sum + DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + SRS_sum))

Call:
lm(formula = SAD_dist_sum ~ age + age_first_phone + BIS_sum + 
    DASS_D_sum + DASS_A_sum + DASS_S_sum + NEO_O_sum + NEO_C_sum + 
    NEO_E_sum + NEO_A_sum + NEO_N_sum + RSES_sum + SSEIT_sum + 
    SRS_sum, data = Mturk_data)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.8512 -1.3257  0.0772  1.4103  7.5089 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      8.819e+00  1.793e+00   4.919 1.19e-06 ***
age             -2.187e-02  1.058e-02  -2.067 0.039290 *  
age_first_phone -4.303e-05  5.803e-04  -0.074 0.940932    
BIS_sum         -1.830e-03  3.295e-02  -0.056 0.955748    
DASS_D_sum       3.463e-02  3.383e-02   1.024 0.306553    
DASS_A_sum       1.329e-01  3.908e-02   3.401 0.000727 ***
DASS_S_sum       2.842e-02  4.165e-02   0.682 0.495276    
NEO_O_sum       -4.946e-02  1.661e-02  -2.978 0.003048 ** 
NEO_C_sum       -2.598e-02  2.435e-02  -1.067 0.286356    
NEO_E_sum        5.000e-02  1.470e-02   3.400 0.000728 ***
NEO_A_sum        6.088e-03  1.886e-02   0.323 0.746925    
NEO_N_sum        3.196e-02  1.704e-02   1.876 0.061270 .  
RSES_sum        -2.073e-02  1.536e-02  -1.350 0.177759    
SSEIT_sum        5.546e-02  8.395e-03   6.607 1.03e-10 ***
SRS_sum         -2.561e-01  2.749e-02  -9.314  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.094 on 490 degrees of freedom
Multiple R-squared:  0.6171,    Adjusted R-squared:  0.6061 
F-statistic:  56.4 on 14 and 490 DF,  p-value: < 2.2e-16
# summary(lm(data = Mturk_data, formula = SAD_dist_sum ~ age + DASS_A_sum + NEO_O_sum + NEO_E_sum + SSEIT_sum + SRS_sum))
LS0tCnRpdGxlOiAiSXMgaXQgbWUgb3IgbXkgc21hcnRwaG9uZT8gSW52ZXN0aWdhdGluZyBwcmVkaWN0b3JzIG9mIG5vbW9waG9iaWEgYW5kIHNtYXJ0cGhvbmUgZGVwZW5kZW5jeSIKYXV0aG9yOiAiQW5hIEMuIFJ1aXogUGFyZG8gYW5kIEouUC4gTWluZGEiCmRhdGU6ICdPY3RvYmVyIDI5LCAyMDIxJwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6ICc2JwogICAgdG9jX2Zsb2F0OgogICAgICBjb2xsYXBzZWQ6IG5vCiAgICB0aGVtZTogbHVtZW4KICAgIGNvZGVfZm9sZGluZzogaGlkZQogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6ICc2JwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAnNicKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiBubwogICAgdGhlbWU6IGx1bWVuCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKZWRpdG9yX29wdGlvbnM6IAogIG1hcmtkb3duOiAKICAgIHdyYXA6IDcyCi0tLQoKYGBgez1odG1sfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKYm9keXsgLyogTm9ybWFsICAqLwogICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgIGNvbG9yOiAjNDE0NTM1O30KdGQgeyAgLyogVGFibGUgICovCiAgZm9udC1zaXplOiAxNHB4O30KaDEudGl0bGUgewogIGZvbnQtc2l6ZTogNDBweDsKICBjb2xvcjogIzk4NDEwQn0KaDEgeyAvKiBIZWFkZXIgMSAqLwogIGZvbnQtc2l6ZTogMzVweDsKICBjb2xvcjogIzA4NjA1Rjt9CmgyIHsgLyogSGVhZGVyIDIgKi8KICBmb250LXNpemU6IDMzcHg7CiAgY29sb3I6ICMwODYwNUY7fQpoMyB7IC8qIEhlYWRlciAzICovCiAgZm9udC1zaXplOiAzMXB4OwogIGNvbG9yOiAjMDg2MDVGO30KaDQgeyAvKiBIZWFkZXIgNCAqLwogIGZvbnQtc2l6ZTogMjlweDsKICBjb2xvcjogIzA4NjA1Rjt9Cmg1IHsgLyogSGVhZGVyIDUgKi8KICBmb250LXNpemU6IDI3cHg7CiAgY29sb3I6ICMwODYwNUY7fQpoNiB7IC8qIEhlYWRlciA2ICovCiAgZm9udC1zaXplOiAyNXB4OwogIGNvbG9yOiAjMDg2MDVGO30KCjwvc3R5bGU+CmBgYAo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij4KCmBgYHtyIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldCh3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFKQpgYGAKCiMgSW50cm9kdWN0aW9uCgpUaGlzIGRvY3VtZW50IG91dGxpbmVzIHRoZSBhbmFseXNlcyBmcm9tIFN0dWR5IDEgYW5kIDIgaW4gKipJcyBpdCBtZSBvcgpteSBzbWFydHBob25lPyBJbnZlc3RpZ2F0aW5nIHByZWRpY3RvcnMgb2Ygbm9tb3Bob2JpYSBhbmQgc21hcnRwaG9uZQpkZXBlbmRlbmN5KiogKFJ1aXogUGFyZG8gJiBNaW5kYSwgT2N0b2JlciAyMDIxIHByZXByaW50LCBcPFw+KS4gVGhlCnJpc2luZyBwcmV2YWxlbmNlIG9mIHNtYXJ0cGhvbmVzIGhhcyBwcm9tcHRlZCByZXNlYXJjaCBhYm91dCBob3cgdGhleQpjYW4gaW1wYWN0IGNvZ25pdGl2ZSBhYmlsaXRpZXMuIFRoZXJlZm9yZSwgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzdHVkeSB3YXMKdG8gaW52ZXN0aWdhdGUgd2hhdCBpbmRpdmlkdWFsIGRpZmZlcmVuY2VzIGNhbiBwcmVkaWN0IHBlb3BsZSdzCnNtYXJ0cGhvbmUgZGVwZW5lbmN5IGFuZCBub21vcGhvYmlhLiBUbyBkbyBkbywgd2UgZXhhbWluZWQgYSB2YXJpZXR5IG9mCmluZGl2aWR1YWwgZGlmZmVyZW5jZSBtZWFzdXJlczogaW1wdWxzaXZlbmVzcywgZGVwcmVzc2lvbiwgc3RyZXNzLAphbnhpZXR5LCBwZXJzb25hbGl0eSAoYmlnIGZpdmUpLCBzZWxmLWVzdGVlbSwgZW1vdGlvbmFsIGludGVsbGlnZW5jZSwKYW5kIHNlbGYgcmVndWxhdGlvbi4gQWRkaXRpb25hbGx5LCBwYXJ0aWNpcGFudCdzIGdlbmRlciwgYWdlLCBhbmQgYWdlIG9mCmZpcnN0IHNtYXJ0cGhvbmUgd2VyZSByZWNvcmRlZC4KClR3byBzdHVkaWVzIHdlcmUgdXNlZCB0byBjb21wYXJlIHVuaXZlcnNpdHkgc3R1ZGVudHMgKHN0dWR5IDEpIHRvIHRoZQpnZW5lcmFsIHBvcHVsYXRpb24gKHN0dWR5IDIpLiBFYWNoIHN0dWR5IGFza2VkIHRocmVlIGtleSBxdWVzdGlvbnMuLi4KYWxsIHJlbGF0ZWQgdG8gaG93IGFnZSBtYXkgcGxheSBhIHJvbGUgaW4gcGVvcGxlJ3MgdHlwaWNhbCBzbWFydHBob25lCnVzZSBhbmQgd2hldGhlciBvciBub3QgaW5kaXZpZHVhbCBkaWZmZXJlbmNlcyB3ZXJlIHNpZ25pZmljYW50CnByZWRpY3RvcnMgb2Ygc21hcnRwaG9uZSBkZXBlbmRlbmN5IGFuZCBub21vcGhvYmlhIChpLmUuLCBjb2hvcnQKZGlmZmVyZW5jZXMpLgoKQ3JpdGVyaW9uIG1lYXN1cmVzICgyKToKCi0gICBOb21vcGhvYmlhIChOTVBROyBZaWxkaXJpbSBhbmQgQ29ycmVpYSAyMDE1KQoKLSAgIFNtYXJ0cGhvbmUgQXR0YWNobWVudCBhbmQgRGVwZW5kZW5jeSBJbnZlbnRvcnkgKFNBRDsgV2FyZCBldCBhbC4sCgogICAgMjAxNykgCgpQcmVkaWN0b3IgbWVhc3VyZXMgKDYpOgoKLSAgIEJhcnJhdHQgSW1wdWxzaXZlbmVzcyBTY2FsZS1CcmllZiAoQklTLWJyaWVmOyBTdGVpbmJlcmcgZXQgYWwuIDIwMTMpCgotICAgRGVwcmVzc2lvbiwgQW54aWV0eSwgYW5kIFN0cmVzcyBTY2FsZSAoREFTUy0yMTsgTG92aWJvbmQgYW5kCiAgICBMb3ZpYm9uZCAxOTk1KQoKLSAgIEludGVybmF0aW9uYWwgUGVyc29uYWxpdHkgSXRlbSBQb29sIE5FTyAoSVBJUC1ORU8tNjA7IE1hcGxlcy1LZWxsZXIKICAgIGV0IGFsLiAyMDE5KQoKLSAgIFJvc2VuYmVyZyBTZWxmLUVzdGVlbSBTY2FsZSAoUlNFUykuIENpdGU6IChSb3NlbmJlcmcgMTk2NSkKCi0gICBTY2h1dHRlIFNlbGYtUmVwb3J0IEVtb3Rpb25hbCBJbnRlbGxpZ2VuY2UgVGVzdCAoU1NFSVQ7IFNjaHV0dGUgZXQKICAgIGFsLiAxOTk4KQoKLSAgIFNlbGYtUmVndWxhdGlvbiBTY2FsZSAoU1JTOyBTY2h3YXJ6ZXIgZXQgYWwuIDE5OTkpCgpEZW1vZ3JhcGhpYyAmIFNtYXJ0cGhvbmUgVXNlIG1lYXN1cmUgKDEpOgoKLSAgIFNtYXJ0cGhvbmUgdXNlIHF1ZXN0aW9ubmFpcmUgKGRlc2lnbmVkIGZvciB0aGUgcHJlc2VudCBzdHVkeSwKICAgIHJldmlzZWQgZnJvbSBSdWl6IFBhcmRvICYgTWluZGEsIDIwMjEpCgojIyBQcm9jZWR1cmUKCkxPSS9jb25zZW50IFw+IFF1ZXN0aW9ubmFpcmVzIGluIHRoZSBzYW1lIHJhbmRvbSBhc3NpZ25tZW50OgpEZW1vZ3JhcGhpY3MsIFNVUSwgTk1QLVEsIFNSUywgU0FELCBEQVNTLTIxLCBCSVMtQnJpZWYsIFNTRUlULCBSU0VTLApJUElQLU5FTy02MCBcPiBkZWJyaWVmaW5nIFw+IFVXTyBldGhpY3MgXD4gYXBwcm94IDQwIG1pbiBpbiB0b3RhbC4KCiMjIEh5cG90aGVzZXMKCkFsbCBzaWcgcHJlZGljdG9ycyBvZiBub21vcGhvYmlhCgpBbGwgc2lnIHByZWRpY3RvcnMgb2Ygc21hcnRwaG9uZSBkZXBlbmRlbmN5CgojIEFuYWx5c2lzIFByZXAKCiMjIExvYWQgTGlicmFyaWVzCgpCZWZvcmUgaW1wb3J0aW5nIHRoZSByYXcgZGF0YSwgdGhlIHJlcXVpcmVkIGxpYnJhcmllcyB3ZXJlIGxvYWRlZC4KCmBgYHtyIGxvYWRfbGlicywgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KIyBGb3IgcGxvdHRpbmcgcGVyZm9ybWFuY2U6CgpsaWJyYXJ5KGdncGxvdDIpCgojIEZvciBydW5uaW5nIExldmVuZSdzIHRlc3Q6CgpsaWJyYXJ5KGNhcikKCiMgRm9yIHBlcmZvcm1pbmcgc3RhdHMgYW5hbHlzZXMgbGlrZSBBTk9WQXM6CgpsaWJyYXJ5KGV6KQoKIyBGb3IgZm9ybWF0dGluZyB0YWJsZXM6CgpsaWJyYXJ5KGthYmxlRXh0cmEpCiAjIHNldCBvcHRpb25zIGZvciBrYWJsZSB0YWJsZXMgZm9yIGFsbCBmdXR1cmUgdGFibGVzCiAgb3B0aW9ucyhrbml0ci50YWJsZS5mb3JtYXQgPSAiaHRtbCIpIAogIAoKIyBjaG9vc2UgYW55IGNvbG91cnMgeW91IHdhbnQsIGdvb2QgdG8gaGVscCB3aXRoIHBwbCB3LyBjb2xvdXIgYmxpbmRuZXNzCgpsaWJyYXJ5KFJDb2xvckJyZXdlcikKCiMgcmVxdWlyZWQgZm9yIGZhY3RvciBhbmFseXNpcwpsaWJyYXJ5KHBzeWNoKQoKCiMgVGlkeXZlcnNlIGZvciBkYXRhIGFuYWx5c2lzLCBjbGVhbmluZywgZXRjLgogICMgaW5jbHVkZWQgcGFja2FnZXMgbG9kYWVkIHdpdGggdGhpczogZ2dwbG90MiwgZHBseXIsIHRpZHlyLCByZWFkciwgcHVycnIsIHRpYmJsZSwgc3RyaW5nciwgZm9yY2F0cwpsaWJyYXJ5KHRpZHl2ZXJzZSkKICAKIyBmb3IgY29ycmVsYXRpb25zCmxpYnJhcnkoSG1pc2MpCgpsaWJyYXJ5KHN0YXRzKSAjIHRvIHBlcmZvcm0gdC10ZXN0cwoKbGlicmFyeShnZ3B1YnIpICMgdG8gcGxvdCBmaWd1cmVzCiAgCmxpYnJhcnkoZWZmc2l6ZSkgIyB0byBjYWxjdWxhdGUgY29oZW4ncyBkIGVmZmVjdCBzaXplCmxpYnJhcnkoY29pbikgIyB0byBydW4gTWFubi1XaGl0bmV5IFUgdGVzdAogIAojaW5zdGFsbC5wYWNrYWdlcyhwbHlyKQogICMgbGlicmFyeShwbHlyKQoKIyBGb3IgZm9ybWF0dGluZyBBTk9WQSBvdXRwdXRzOgoKI2xpYnJhcnkoc2Nob1JzY2gpCiAgCiMgdG8gcGxvdCBxdWljayBjb3JyZWxhdGlvbiBtYXRyaXgKICBsaWJyYXJ5KGNvcnJwbG90KQogICNsaWJyYXJ5KCJQZXJmb3JtYW5jZUFuYWx5dGljcyIpCiAgCiMgdG8gc2hvdyBtdWx0aXBsZSBncm9icyBvbiBwYWdlCmxpYnJhcnkoZ3JpZEV4dHJhKQoKCiMgcnRvIHBsb3QgdmlvbGluIHBsb3RzICAKICAjIGluc3RhbGwgdGhlIHBhY2thZ2UKICAjIGluc3RhbGwucGFja2FnZXMoImdnc3RhdHNwbG90IikKICAKICAjIExvYWQgdGhlIHBhY2thZ2UKICBsaWJyYXJ5KGdnc3RhdHNwbG90KQogIAojIGxpYnJhcnkocGx5cikKbGlicmFyeShwdXJycikKICAKIyBnZXQgZWZmZWN0IHNpemUgZnJvbSB3aGl0ZS1jb3JyZWN0ZWQgQU5PVkEKbGlicmFyeShEZXNjVG9vbHMpCiAgCiMgZXhwb3J0IGxtIGFzIGh0bWwgdGFibGUKbGlicmFyeShzalBsb3QpICAjIyB1c2UgdGFiX21vZGVsKCkKICAKIyB0byB0aWR5IGxtIHJlc3VsdHMgKG1ha2UgaXQgYSBkYXRhIGZyYW1lKQpsaWJyYXJ5KGJyb29tKQpgYGAKCmBgYHtyIGxvYWRfbGlic18yLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFLCBldmFsPUZBTFNFfQojIEZvciBwbG90dGluZyBwZXJmb3JtYW5jZToKCmxpYnJhcnkoZ2dwbG90MikKCiMgRm9yIHJ1bm5pbmcgTGV2ZW5lJ3MgdGVzdDoKCmxpYnJhcnkoY2FyKQoKIyBGb3IgcGVyZm9ybWluZyBzdGF0cyBhbmFseXNlcyBsaWtlIEFOT1ZBczoKCmxpYnJhcnkoZXopCgojIEZvciBmb3JtYXR0aW5nIHRhYmxlczoKCmxpYnJhcnkoa2FibGVFeHRyYSkKICMgc2V0IG9wdGlvbnMgZm9yIGthYmxlIHRhYmxlcyBmb3IgYWxsIGZ1dHVyZSB0YWJsZXMKICBvcHRpb25zKGtuaXRyLnRhYmxlLmZvcm1hdCA9ICJodG1sIikgCiAgCgojIGNob29zZSBhbnkgY29sb3VycyB5b3Ugd2FudCwgZ29vZCB0byBoZWxwIHdpdGggcHBsIHcvIGNvbG91ciBibGluZG5lc3MKCmxpYnJhcnkoUkNvbG9yQnJld2VyKQoKIyByZXF1aXJlZCBmb3IgZmFjdG9yIGFuYWx5c2lzCmxpYnJhcnkocHN5Y2gpCgoKIyBUaWR5dmVyc2UgZm9yIGRhdGEgYW5hbHlzaXMsIGNsZWFuaW5nLCBldGMuCiAgIyBpbmNsdWRlZCBwYWNrYWdlcyBsb2RhZWQgd2l0aCB0aGlzOiBnZ3Bsb3QyLCBkcGx5ciwgdGlkeXIsIHJlYWRyLCBwdXJyciwgdGliYmxlLCBzdHJpbmdyLCBmb3JjYXRzCmxpYnJhcnkodGlkeXZlcnNlKQogIAojIGZvciBjb3JyZWxhdGlvbnMKbGlicmFyeShIbWlzYykKCmxpYnJhcnkoc3RhdHMpICMgdG8gcGVyZm9ybSB0LXRlc3RzCgpsaWJyYXJ5KGdncHVicikgIyB0byBwbG90IGZpZ3VyZXMKICAKbGlicmFyeShlZmZzaXplKSAjIHRvIGNhbGN1bGF0ZSBjb2hlbidzIGQgZWZmZWN0IHNpemUKbGlicmFyeShjb2luKSAjIHRvIHJ1biBNYW5uLVdoaXRuZXkgVSB0ZXN0CiAgCiNpbnN0YWxsLnBhY2thZ2VzKHBseXIpCiAgIyBsaWJyYXJ5KHBseXIpCgojIEZvciBmb3JtYXR0aW5nIEFOT1ZBIG91dHB1dHM6CgojbGlicmFyeShzY2hvUnNjaCkKICAKIyB0byBwbG90IHF1aWNrIGNvcnJlbGF0aW9uIG1hdHJpeAogIGxpYnJhcnkoY29ycnBsb3QpCiAgI2xpYnJhcnkoIlBlcmZvcm1hbmNlQW5hbHl0aWNzIikKICAKIyB0byBzaG93IG11bHRpcGxlIGdyb2JzIG9uIHBhZ2UKbGlicmFyeShncmlkRXh0cmEpCgoKIyBydG8gcGxvdCB2aW9saW4gcGxvdHMgIAogICMgaW5zdGFsbCB0aGUgcGFja2FnZQogICMgaW5zdGFsbC5wYWNrYWdlcygiZ2dzdGF0c3Bsb3QiKQogIAogICMgTG9hZCB0aGUgcGFja2FnZQogIGxpYnJhcnkoZ2dzdGF0c3Bsb3QpCiAgCiMgbGlicmFyeShwbHlyKQpsaWJyYXJ5KHB1cnJyKQogIAojIGdldCBlZmZlY3Qgc2l6ZSBmcm9tIHdoaXRlLWNvcnJlY3RlZCBBTk9WQQpsaWJyYXJ5KERlc2NUb29scykKICAKIyBleHBvcnQgbG0gYXMgaHRtbCB0YWJsZQpsaWJyYXJ5KHNqUGxvdCkgICMjIHVzZSB0YWJfbW9kZWwoKQpgYGAKCiMjIEFkZGl0aW9uYWwgRnVuY3Rpb25zCgojIyMgUm91bmRpbmcgcC12YWx1ZXMKCjxkZXRhaWxzPgoKPHN1bW1hcnk+CgpUaGlzIHJvdW5kaW5nIGZ1bmN0aW9uIHdhcyBhZGFwdGVkIGZyb20gW0RyLiBFbWlseSBOaWVsc2VuJ3MKUnB1YnNdKGh0dHBzOi8vcnB1YnMuY29tL2VnbmllbHNlbikuIFRoZSBmdW5jdGlvbiAoIioqcF9yb3VuZCh4KSoqIikgd2FzCmNyZWF0ZWQgdG8gYXNzZXNzIGFuZCBwcmludCBwLXZhbHVlcy4gSWYgJHAgXGdlIC4wMDUkLCB0aGUgZnVuY3Rpb24gd2lsbApkaXNwbGF5ICJcJHAgPSBcJCIgYW5kIHRoZSB2YWx1ZSByb3VuZGVkIHRvIHR3byBkZWNpbWFsIHBsYWNlcy4gSWYgXCQKLjAwMDUgXGxlIHAgXDwuMDA1JCwgdGhlIGZ1bmN0aW9uIHdpbGwgZGlzcGxheSDigJwkcCA9IFwkIiBhbmQgdGhlIHZhbHVlCnJvdW5kZWQgdG8gdGhyZWUgZGVjaW1hbCBwbGFjZXMuIElmICRwIDwgLjAwMDUkLCB0aGUgZnVuY3Rpb24gd2lsbApkaXNwbGF5ICIkcCA8IC4wMDEkIi4gKihjbGljayB0byBleHBhbmQpKgoKPC9zdW1tYXJ5PgoKYGBge3IgY3JlYXRlX3Bfcm91bmRfZnVuY3Rpb24sIGV2YWw9VFJVRX0KCnBfcm91bmQgPC0gZnVuY3Rpb24oeCl7CiAgaWYoeCA+IC4wMDUpCiAgICB7eDEgPSAocGFzdGUoIj0gIiwgZ3N1YigiMFxcLiIsIlxcLiIsIHJvdW5kKHgsIGRpZ2l0cyA9IDIpKSwgc2VwID0gJycpKQogIH0gIAogIGVsc2UgaWYoeCA9PSAuMDA1KXt4MSA9IChwYXN0ZSgiPSIsIGdzdWIoIjBcXC4iLCJcXC4iLCAwLjAxKSkpCiAgfQogIGVsc2UgaWYoeCA+IC4wMDA1ICYgeCA8IC4wMDUpCiAgICB7eDEgPSAocGFzdGUoIj0gIiwgZ3N1YigiMFxcLiIsIlxcLiIsIHJvdW5kKHgsIGRpZ2l0cyA9IDMpKSwgc2VwID0gJycpKQogIH0gIAogIGVsc2UgaWYoeCA9PSAuMDAwNSl7eDEgPSAocGFzdGUoIj0iLCBnc3ViKCIwXFwuIiwiXFwuIiwgMC4wMDEpKSkKICB9CiAgZWxzZXt4MSA9IChwYXN0ZSgiPCIsIGdzdWIoIjBcXC4iLCJcXC4iLCAwLjAwMSkpKQogIH0gCiAgKHgxKQp9CgpgYGAKCiMjIyBGbGF0dGVuIENvcnJlbGF0aW9uIE91dHB1dAoKVGhlIGZvbGxvd2luZyB0YWtlcyBhIGNvcnJlbGF0aW9uIG91dHB1dCBhbmQgZmxhdHRlbnMgaXQgdG8gYSBsb25nCmZvcm1hdC4gT3JpZ2luYWxseSBmcm9tIFNUSERBJ3MgIkNvcnJlbGF0aW9uIG1hdHJpeCA6IEZvcm1hdHRpbmcgYW5kCnZpc3VhbGl6YXRpb24iCig8aHR0cDovL3d3dy5zdGhkYS5jb20vZW5nbGlzaC93aWtpL2NvcnJlbGF0aW9uLW1hdHJpeC1mb3JtYXR0aW5nLWFuZC12aXN1YWxpemF0aW9uIy5ZVzRJT2ZidG50TS5saW5rPikuCgpgYGB7ciBjcmVhdGVfZmxhdHRlbkNvcnJfZnVuY3Rpb24sIGV2YWw9VFJVRX0KIyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiMgZmxhdHRlbkNvcnJNYXRyaXgKIyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiMgY29ybWF0IDogbWF0cml4IG9mIHRoZSBjb3JyZWxhdGlvbiBjb2VmZmljaWVudHMKIyBwbWF0IDogbWF0cml4IG9mIHRoZSBjb3JyZWxhdGlvbiBwLXZhbHVlcwpmbGF0dGVuQ29yck1hdHJpeCA8LSBmdW5jdGlvbihjb3JtYXQsIHBtYXQpIHsKICB1dCA8LSB1cHBlci50cmkoY29ybWF0KQogIGRhdGEuZnJhbWUoCiAgICByb3cgPSByb3duYW1lcyhjb3JtYXQpW3Jvdyhjb3JtYXQpW3V0XV0sCiAgICBjb2x1bW4gPSByb3duYW1lcyhjb3JtYXQpW2NvbChjb3JtYXQpW3V0XV0sCiAgICBjb3IgID0oY29ybWF0KVt1dF0sCiAgICBwID0gcG1hdFt1dF0KICAgICkKfQpgYGAKCjwvZGV0YWlscz4KCiMjIEltcG9ydCBSYXcgRGF0YSBGaWxlcwoKVGhlcmUgYXJlICoqdHdvKiogcmF3IGRhdGEgZmlsZXMgZm9yIHRoZSBhbmFseXNlcy4KCioqU3R1ZHkgMSoqCgoxLiAgU3R1ZHkgMSAtIFN1cnZleSBEYXRhCgogICAgLSAgIGNzdiBmaWxlIGV4cG9ydGVkIGZyb20gUXVhbHRyaWNzCiAgICAtICAgZGF0YSBjb2xsZWN0ZWQgb25saW5lCgoqKlN0dWR5IDIqKgoKMi4gIFN0dWR5IDIgLSBTdXJ2ZXkgRGF0YQoKICAgIC0gICBjc3YgZmlsZSBleHBvcnRlZCBmcm9tIFF1YWx0cmljcwogICAgLSAgIGRhdGEgY29sbGVjdGVkIGluLXBlcnNvbgoKKioqTk9URTogVG8gYXZvaWQgY29uZnVzaW9uLCB0aGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHRoZSB0d28gc3R1ZGllcwp3YXMgYXMgZm9sbG93cyBmb3IgYWxsIGRhdGEsIGFuYWx5c2VzLCB2aXN1YWxpemF0aW9ucywgZXRjLjogU3R1ZHkgMSA9CiJTT05BIiBhbmQgU3R1ZHkgMiA9ICJNdHVyayIqKioKCiMjIyAxLiBTdHVkeSAxIERhdGE6IFNPTkEKCkZpcnN0LCB0aGUgcmF3IGRhdGEgd2FzIGltcG9ydGVkLgoKYGBge3IgZXZhbD1UUlVFfQojIHRoaXMgd2lsbCBpbXBvcnQgdGhlIHJhdyBleGNlbCBkYXRhIGZpbGUgZm9yIHN0dWR5IDEKICAjIHRoaXMgZmlsZSBoYXMgYmVlbiBhbm9ueW1pemVkLCBzbyBhbnkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGhhcyBiZWVuIHJlbW92ZWQKU09OQV9yYXcgPC0gcmVhZC5jc3YoIlNPTkFfc3VydmV5X2RhdGEob2N0MTkpLWZpbmFsLmNzdiIsIGhlYWRlciA9IFRSVUUpCmBgYAoKQWZ0ZXIgaW1wb3J0aW5nIHRoZSByYXcgZGF0YSwgdGhlIGZpbGUgaXMgY2xlYW5lZCBieSByZW1vdmluZwpwYXJ0aWNpcGFudHMgYmFzZWQgb24gc2V2ZXJhbCBjcml0ZXJpYToKCi0gICAqKlRlc3RpbmcgRGF0YSoqOiBleHBlcmltZW50ZXIgZGF0YSAoaS5lLiwgdGVzdGluZyBwcmlvciB0byBkYXRhCiAgICBjb2xsZWN0aW9uKSwgYW55IGlycmVsZXZhbnQgcm93cwoKLSAgICoqSW5jb21wbGV0ZSBEYXRhKio6IHBhcnRpY2lwYW50cyB3aG8gZGlkIG5vdCBjb21wbGV0ZSB0aGUgc3R1ZHkKCiAgICAtICAgYHIgbnJvdyhTT05BX3JhdyAlPiUgZmlsdGVyKERpc3RyaWJ1dGlvbkNoYW5uZWwgIT0gInRlc3QiKSAlPiUgZmlsdGVyKEZpbmlzaGVkID09IDApKWAKICAgICAgICBkaWQgbm90IGZpbmlzaAoKLSAgICoqTm8gY29uc2VudDoqKiBwYXJ0aWNpcGFudHMgd2hvIGRpZCBub3QgY29uc2VudCB0byB0aGUgc3R1ZHkKCiAgICAtICAgYHIgbnJvdyhTT05BX3JhdyAlPiUgZmlsdGVyKFExLjIgIT0gMSkpYCBkaWQgbm90IGNvbnNlbnQKCi0gICAqKlVubmVjZXNzYXJ5IFZhcmlhYmxlcyoqOiBjb2x1bW5zIHdoaWNoIGFyZSBub3QgcmVsZXZhbnQgdG8gdGhlCiAgICBhbmFseXNlcyAoZS5nLiwgZGlzdHJpYnV0aW9uIHR5cGUsIGRpc3RyaWJ1dGlvbiBsYW5ndWFnZSkKCmBgYHtyIGV2YWw9VFJVRX0KIyBjbGVhbiB0aGUgZGF0YQpTT05BX3Jhd190ZW1wIDwtIAogICMgc3RhcnQgd2l0aCByZW1vdmluZyBleHBlcmltZW50ZXIgYW5kIGlycmVsZXZhbnQgcm93cyBmcm9tIHRoZSBkYXRhCiAgICAjIHRoZXJlIGlzIG5vIG5lZWQgdG8gY291bnQgdGhlIHBzIHJlbW92ZWQgYXQgdGhpcyBzdGFnZSAKICBTT05BX3JhdyAlPiUgCiAgIyByZW1vdmUgcm93IDEgJiAyIC0tIG5vdCBkYXRhCiAgc2xpY2UoMzpucm93KFNPTkFfcmF3KSkgJT4lIAogICMgcmVtb3ZlIHRlc3RpbmcgZGF0YQogIGZpbHRlcihEaXN0cmlidXRpb25DaGFubmVsICE9ICJ0ZXN0IikgJT4lIAoKICAjIG5leHQsIHJlbW92ZSBwcyB3LyBpbmNvbXBsZXRlIGRhdGEgLS0gaW5jbHVkZSBvbmx5IHRob3Mgd2hvIGhhdmUgZmluaXNoZWQgKGkuZS4sICIxIikKICBmaWx0ZXIoRmluaXNoZWQgPT0gMSkgJT4lIAogIAogICMgcmVtb3ZlIGFueSBwcyB3aG8gZGlkIG5vdCBjb25zZW50IHRvIHRoZSBzdHVkeQogIGZpbHRlcihRMS4yID09IDEpICU+JSAKICAKICAjIHJlbW92ZSBhbnkgcHMgd2hvIGRpZCBub3QgcmVwb3J0IGJlaW5nIGF0IGxlYXN0IDE4IG9yIG9sZGVyCiAgZmlsdGVyKCFRMi4xIDwxNykgJT4lIAogIAogICAgIyByZW1vdmUgcCB3LyBhZ2UgIjIiCiAgICBmaWx0ZXIoIVEyLjEgPT0gMikgJT4lIAoKICAjIHJlbW92ZSB1bm5lY2Vzc2FyeSBjb2x1bW5zCiAgICAjIHNob3VsZCBiZSBkb25lIGFmdGVyIG90aGVycyBzaW5jZSBjb2x1bW5zIHVzZWQgdG8gZmlsdGVyCiAgc2VsZWN0KC1jKFN0YXR1czpJUEFkZHJlc3MsIFJlc3BvbnNlSWQ6RXh0ZXJuYWxSZWZlcmVuY2UsIERpc3RyaWJ1dGlvbkNoYW5uZWw6UTEuMiwgU0MwKSkKYGBgCgpBZGRpdGlvbmFsbHksIGEgInBhcnRpY2lwYW50IiBjb2x1bW4gd2FzIGFkZGVkIHRvIGRlbm90ZSB0aGUgcGFydGljaXBhbnQKSUQsIHRoZSBjb2x1bW5zIHdlcmUgcmVuYW1lZCBmb3IgZWFzaWVyIHJlZmVyZW5jZSwgYW55IHVuY2xlYXIgb3IKaW5hcHByb3ByaWF0ZSByZXNwb25zZXMgKGUuZy4sIG5vbi1udW1lcmljIHJlc3BvbnNlIGZvciBpdGVtcyByZXF1aXJpbmcKYSBudW1lcmljIHJlc3BvbnNlKSB3ZXJlIHJlbW92ZWQsIGFuZCBhbGwgdmFyaWFibGVzIHdlcmUgZm9ybWF0dGVkIGFzCm51bWVyaWMgb3IgZmFjdG9yIGFzIGFwcHJvcHJpYXRlLiBMYXN0bHksIGFueSBxdWVzdGlvbm5haXJlIHNjb3JlcyB3ZXJlCmNhbGN1bGF0ZWQuCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBldmFsPVRSVUV9CiMgYWRkIGEgcGFydGljaXBhbnQgY29sdW1uIHRvIGRhdGEKU09OQV9kYXRhX3RlbXAgPC0gCiAgY2JpbmQoZGF0YS5mcmFtZSgicGFydGljaXBhbnQiID0gYygxOm5yb3coU09OQV9yYXdfdGVtcCkpKSwgU09OQV9yYXdfdGVtcCkKClNPTkFfZGF0YSA8LSAKICAjIGNoYW5nZSBkYXRhIGZpbGUgdHlwZSB0byB0aWJibGUKICBhcy50aWJibGUoU09OQV9kYXRhX3RlbXApICU+JSAKICAjIHJlbmFtZSBjb2x1bW5zLi4uCiAgZHBseXI6OnJlbmFtZShkdXJhdGlvbl9zZWMgPSBEdXJhdGlvbi4uaW4uc2Vjb25kcy4sIGFnZSA9IFEyLjEsIGdlbmRlciA9IFEyLjIsIGdlbmRlck8gPSBRMi4zLCBsYW5nID0gUTIuNCwgbGFuZ08gPSBRMi41LCBwcm9mID0gUTIuNiwgbGl2ZSA9IFEyLjcsIGxpdmVPID0gUTIuOCwgZWR1ID0gUTIuOSwgZW1wbG95ID0gUTIuMTAsIGVtcGxveV9GVCA9IFEyLjEwXzEsIGVtcGxveV9QVCA9IFEyLjEwXzIsIGVtcGxveV9TRSA9IFEyLjEwXzMsIGVtcGxveV9VRSA9IFEyLjEwXzQsIGVtcGxveV9zdHVkZW50ID0gUTIuMTBfNSwgZW1wbG95X3JldGlyZWQgPSBRMi4xMF82LCBlbXBsb3lfdW5hYmxlID0gUTIuMTBfNywgZW1wbG95X1BOVFMgPSBRMi4xMF84LCBpbmR1c3RyeSA9IFEyLjExLCBpbmR1c3RyeU8gPSBRMi4xMiwgaW5kdXN0cnlfc3R1ZGVudCA9IFEyLjExXzEsIGluZHVzdHJ5X2dvb2RzID0gUTIuMTFfMiwgaW5kdXN0cnlfdXRpbGl0aWVzID0gUTIuMTFfMywgaW5kdXN0cnlfY29uc3QgPSBRMi4xMV80LCBpbmR1c3RyeV9tYW51ZiA9IFEyLjExXzUsIGluZHVzdHJ5X3NlcnZpY2UgPSBRMi4xMV82LCBpbmR1c3RyeV9maW5hbmNlX3JlYWx0b3IgPSBRMi4xMV83LCBpbmR1c3RyeV90ZWNoID0gUTIuMTFfOCwgaW5kdXN0cnlfYnVzaW5lc3MgPSBRMi4xMV85LCBpbmR1c3RyeV9lZHVjID0gUTIuMTFfMTAsIGluZHVzdHJ5X2hlYWx0aCA9IFEyLjExXzExLCBpbmR1c3RyeV9pbmZvX2N1bHR1cmUgPSBRMi4xMV8xMiwgaW5kdXN0cnlfYWNjb21vZCA9IFEyLjExXzEzLCBpbmR1c3RyeV9wdWJsaWNfYWRtaW4gPSBRMi4xMV8xNCwgaW5kdXN0cnlfb3RoZXIgPSBRMi4xMV8xNSwgaW5kdXN0cnlfRE5BID0gUTIuMTFfMTYsCiAgICAgICAgICAgICAgIyBzbWFydHBob25lIHF1ZXN0aW9ucwogICAgICAgICAgICAgICAgIyBmcmVxdWVuY3kgb2YgdXNlCiAgICAgICAgICAgICAgICBwaG9uZV9mb3Jfd29yayA9IFEyLjEzLCBzcGVjaWZpY19hcHAgPSBRMi4xNCwgYWdlX2ZpcnN0X3Bob25lID0gUTMuMSwgYXBwX21vc3RfdXNlZCA9IFEzLjIsIGFwcF9tb3N0X3VzZWRPID0gUTMuMywgYXBwX21vc3RfdXNlZF9vdmVyYWxsID0gUTMuNCwgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgaXBob25lIHF1ZXN0aW9ucyAtLSBTVAogICAgICAgICAgICAgICAgaXBob25lID0gUTQuMSwgU1QgPSBRNC4yLCBTVF9hcHBfbW9zdF91c2VkID0gUTQuNCwgU1RfYXBwX21vc3RfdXNlZE8gPSBRNC41LCBTVF9hcHBfdGV4dF9tZXNzID0gUTQuNiwgU1RfYXBwX21vc3RfdXNlZF9vdmVyYWxsID0gUTQuNywgU1Rfd2Vla2x5X3RvdF9ob3VycyA9IFE0LjgsIFNUX2RhaWx5X3BpY2t1cHMgPSBRNC45LCBTVF9kYWlseV9ub3QgPSBRNC4xMCwgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIGNvbWZvcnQgbGV2ZWwgcXMKICAgICAgICAgICAgICAgIGNvbV9nZW4gPSBRNS4xXzEsIGNvbV91bmF0dGVuZGVkID0gUTUuMV8yLCBjb21fbGVhdmVfd2l0aF9vdGhlcnMgPSBRNS4xXzMsIGNvbV9sb2NrZWQgPSBRNS4xXzQsIGNvbV9yb29tX3Rhc2sgPSBRNS4xXzUsIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgI3ByaXZhY3kgcXMKICAgICAgICAgICAgICAgIHBhc3Njb2RlID0gUTYuMSwgcGFzc2NvZGVfb3RoZXJzID0gUTYuMiwgcGFzc2NvZGVfcmVsYXRpb24gPSBRNi4zLCBwYXNzY29kZV9yZWxhdGlvbl9wYXJlbnRzID0gUTYuM18xLCBwYXNzY29kZV9yZWxhdGlvbl9vdGhlcl9mYW0gPSBRNi4zXzIsIHBhc3Njb2RlX3JlbGF0aW9uX3NpZ19vdGhlciA9IFE2LjNfMywgcGFzc2NvZGVfcmVsYXRpb25fZnJpZW5kID0gUTYuM180LCBwYXNzY29kZV9yZWxhdGlvbl93b3JrID0gUTYuM181LCBwYXNzY29kZV9yZWxhdGlvbl9vdGhlciA9IFE2LjNfNiwgcGFzc2NvZGVfcmVsYXRpb25fRE5BID0gUTYuM183LCBwYXNzY29kZV9yZWxhdGlvbl9vdmVyYWxsID0gUTYuNCwgb3RoZXJfdXNlID0gUTYuNSwgb3RoZXJfcm9vbSA9IFE2LjYsIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBkaXN0cmFjdGlvbiBxcwogICAgICAgICAgICAgICAgZGlzdF9kYWlseSA9IFE3LjFfMSwgZGlzdF9zdHVkeSA9IFE3LjFfMiwgZGlzdF9kZXZpY2UgPSBRNy4yLCBkaXN0X2RldmljZU8gPSBRNy4zLCBkaXN0X2RldmljZV9zdHVkeXdvcmsgPSBRNy40LCBkaXN0X2RldmljZV9zdHVkeXdvcmtPID0gUTcuNSwgCiAgICAgICAgICAgICAgICBkaXN0X2RldmljZV9zb2NpYWwgPSBRNy42LCBkaXN0X2RldmljZV9zb2NpYWxPID0gUTcuNywKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgbG9jYXRpb24gJiBwb3dlciBxcwogICAgICAgICAgICAgICAgcG93X25vdF91c2luZyA9IFE4LjFfMSwgcG93X25vdGlmaWNhdGlvbnNfb24gPSBROC4xXzIsIHBvd192aWJyYXRlID0gUTguMV8zLCBwb3dfc3R1ZHkgPSBROC4xXzQsIHBvd19leGFtID0gUTguMV81LCBwb3dfbGVjID0gUTguMV82LCBwb3dfd29yayA9IFE4LjFfNywgcG93X21lZXRpbmcgPSBROC4xXzgsIHBvd19zbGVlcCA9IFE4LjFfOSwgCiAgICAgICAgICAgICAgICBsb2NfdHlwaWNhbCA9IFE4LjIsIGxvY19zdHVkeSA9IFE4LjMsIGxvY19leGFtID0gUTguNCwgbG9jX2xlYyA9IFE4LjUsIGxvY193b3JrID0gUTguNiwgbG9jX21lZXRpbmcgPSBROC43LCBsb2Nfc29jaWFsID0gUTguOCwgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBleHBsb3JhdG9yeSBxcwogICAgICAgICAgICAgICAgY29tbXVuaWNhdGUgPSBROS4xLCBjb21tdW5pY2F0ZU8gPSBROS4yLCBwaG9uZV91c2UgPSBROS4zLCBwaG9uZV91c2VPID0gUTkuNCwgcGhvbmVfdmFsdWUgPSBROS41LCBwaGFudG9tID0gUTkuNiwgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICMgUXVlc3Rpb25uYWlyZXMKICAgICAgICAgICAgICAgICMgTm9tb3Bob2JpYSAtLSBjcml0ZXJpb24gLSBubyBzdWJzY2FsZXMKICAgICAgICAgICAgICAgIE5NUFFfMSA9IFExMC4xXzEsIE5NUFFfMiA9IFExMC4xXzIsIE5NUFFfMyA9IFExMC4xXzMsIE5NUFFfNCA9IFExMC4xXzQsIE5NUFFfNSA9IFExMC4xXzUsIE5NUFFfNiA9IFExMC4xXzYsIE5NUFFfNyA9IFExMC4xXzcsIE5NUFFfOCA9IFExMC4xXzgsIE5NUFFfOSA9IFExMC4xXzksIE5NUFFfMTAgPSBRMTAuMl8xLCBOTVBRXzExID0gUTEwLjJfMiwgTk1QUV8xMiA9IFExMC4yXzMsIE5NUFFfMTMgPSBRMTAuMl80LCBOTVBRXzE0ID0gUTEwLjJfNSwgTk1QUV8xNSA9IFExMC4yXzYsIE5NUFFfMTYgPSBRMTAuMl83LCBOTVBRXzE3ID0gUTEwLjJfOCwgTk1QUV8xOCA9IFExMC4yXzksIE5NUFFfMTkgPSBRMTAuMl8xMCwgTk1QUV8yMCA9IFExMC4yXzExLCAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBTUlMgLS0gcHJlZGljdG9yIC0gbm8gc3Vic2NhbGVzCiAgICAgICAgICAgICAgICAjIHJldiBjb2RlZCA9IDUsIDcsIDkKICAgICAgICAgICAgICAgIFNSU18xID0gUTExLjFfMSwgU1JTXzIgPSBRMTEuMV8yLCBTUlNfMyA9IFExMS4xXzMsIFNSU180ID0gUTExLjFfNCwgU1JTXzUgPSBRMTEuMV81LCBTUlNfNiA9IFExMS4xXzYsIFNSU183ID0gUTExLjFfNywgU1JTXzggPSBRMTEuMV84LCBTUlNfOSA9IFExMS4xXzksIFNSU18xMCA9IFExMS4xXzEwLCAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgU0FEIC0tIHByZWRpY3RvciAtIDQgc3Vic2NhbGVzIGJhc2VkIG9uIFJ1aXogUGFyZG8gJiBNaW5kYSwgMjAyMQogICAgICAgICAgICAgICAgIyBkZXBlbmRlbmNlICgxLTMpLCBhY2Nlc3NpYmlsaXR5ICg1LTcpLCBlbW90aW9uYWwgYXR0YWNobWVudCAoOC0xMSksIGRpc3RyYWN0aWJpbGl0eSAoMTItMTMpCiAgICAgICAgICAgICAgICBTQURfZGVwXzEgPSBRMTIuMV8xLCBTQURfZGVwXzIgPSBRMTIuMV8yLCBTQURfZGVwXzMgPSBRMTIuMV8zLCBTQURfNCA9IFExMi4xXzQsIFNBRF9hY2Nlc3NfNSA9IFExMi4xXzUsIFNBRF9hY2Nlc3NfNiA9IFExMi4xXzYsIFNBRF9hY2Nlc3NfNyA9IFExMi4xXzcsIFNBRF9lYV84ID0gUTEyLjFfOCwgU0FEX2VhXzkgPSBRMTIuMV85LCBTQURfZWFfMTAgPSBRMTIuMV8xMCwgU0FEX2VhXzExID0gUTEyLjFfMTEsIFNBRF9kaXN0XzEyID0gUTEyLjFfMTIsIFNBRF9kaXN0XzEzID0gUTEyLjFfMTMsIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBEQVNTLTIxIC0tIHByZWRpY3RvciAtIDMgc3Vic2NhbGVzIAogICAgICAgICAgICAgICAgIyBkZXByZXNzaW9uICgzLCA1LCAxMCwgMTMsIDE2LCAxNywgMjEpLCBhbnhpZXR5ICgyLCA0LCA3LCA5LCAxNSwgMTksIDIwKSwgc3RyZXNzICgxLCA2LCA4LCAxMSwgMTIsIDE0LCAxOCkKICAgICAgICAgICAgICAgIERBU1NfRF8zID0gUTEzLjFfMywgREFTU19EXzUgPSBRMTMuMV81LCBEQVNTX0RfMTAgPSBRMTMuMV8xMCwgREFTU19EXzEzID0gUTEzLjFfMTMsIERBU1NfRF8xNiA9IFExMy4xXzE2LCBEQVNTX0RfMTcgPSBRMTMuMV8xNywgREFTU19EXzIxID0gUTEzLjFfMjEsIERBU1NfQV8yID0gUTEzLjFfMiwgREFTU19BXzQgPSBRMTMuMV80LCBEQVNTX0FfNyA9IFExMy4xXzcsIERBU1NfQV85ID0gUTEzLjFfOSwgREFTU19BXzE1ID0gUTEzLjFfMTUsIERBU1NfQV8xOSA9IFExMy4xXzE5LCBEQVNTX0FfMjAgPSBRMTMuMV8yMCwgREFTU19TXzEgPSBRMTMuMV8xLCBEQVNTX1NfNiA9IFExMy4xXzYsIERBU1NfU184ID0gUTEzLjFfOCwgREFTU19TXzExID0gUTEzLjFfMTEsIERBU1NfU18xMiA9IFExMy4xXzEyLCBEQVNTX1NfMTQgPSBRMTMuMV8xNCwgREFTU19TXzE4ID0gUTEzLjFfMTgsCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIEJJUy1icmllZiAtLSBwcmVkaWN0b3IgLSBubyBzdWJzY2FsZXMKICAgICAgICAgICAgICAgICMgcmV2IGNvZGVkID0gMSwgNCwgNSwgNgogICAgICAgICAgICAgICAgQklTXzEgPSBRMTQuMV8xLCBCSVNfMiA9IFExNC4xXzIsIEJJU18zID0gUTE0LjFfMywgQklTXzQgPSBRMTQuMV80LCBCSVNfNSA9IFExNC4xXzUsIEJJU182ID0gUTE0LjFfNiwgQklTXzcgPSBRMTQuMV83LCBCSVNfOCA9IFExNC4xXzgsCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIFNTRUlUIC0gcHJlZGljdG9yIC0gbm8gc3Vic2NhbGVzCiAgICAgICAgICAgICAgICAjIHJldiBjb2RlZCA9IDUsIDI4LCAzMwogICAgICAgICAgICAgICAgU1NFSVRfMSA9IFExNS4xXzEsIFNTRUlUXzIgPSBRMTUuMV8yLCBTU0VJVF8zID0gUTE1LjFfMywgU1NFSVRfNCA9IFExNS4xXzQsIFNTRUlUXzUgPSBRMTUuMV81LCBTU0VJVF82ID0gUTE1LjFfNiwgU1NFSVRfNyA9IFExNS4xXzcsIFNTRUlUXzggPSBRMTUuMV84LCBTU0VJVF85ID0gUTE1LjFfOSwgU1NFSVRfMTAgPSBRMTUuMV8xMCwgU1NFSVRfMTEgPSBRMTUuMV8xMSwgU1NFSVRfMTIgPSBRMTUuMV8xMiwgU1NFSVRfMTMgPSBRMTUuMV8xMywgU1NFSVRfMTQgPSBRMTUuMV8xNCwgU1NFSVRfMTUgPSBRMTUuMV8xNSwgU1NFSVRfMTYgPSBRMTUuMV8xNiwgU1NFSVRfMTcgPSBRMTUuMV8xNywgU1NFSVRfMTggPSBRMTUuMV8xOCwgU1NFSVRfMTkgPSBRMTUuMV8xOSwgU1NFSVRfMjAgPSBRMTUuMV8yMCwgU1NFSVRfMjEgPSBRMTUuMV8yMSwgU1NFSVRfMjIgPSBRMTUuMV8yMiwgU1NFSVRfMjMgPSBRMTUuMV8yMywgU1NFSVRfMjQgPSBRMTUuMV8yNCwgU1NFSVRfMjUgPSBRMTUuMV8yNSwgU1NFSVRfMjYgPSBRMTUuMV8yNiwgU1NFSVRfMjcgPSBRMTUuMV8yNywgU1NFSVRfMjggPSBRMTUuMV8yOCwgU1NFSVRfMjkgPSBRMTUuMV8yOSwgU1NFSVRfMzAgPSBRMTUuMV8zMCwgU1NFSVRfMzEgPSBRMTUuMV8zMSwgU1NFSVRfMzIgPSBRMTUuMV8zMiwgU1NFSVRfMzMgPSBRMTUuMV8zMywKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgUlNFUyAtIHByZWRpY3RvciAtIG5vIHN1YnNjYWxlcwogICAgICAgICAgICAgICAgIyByZXYgY29kZWQgPSAzLCA1LCA4LCA5LCAxMAogICAgICAgICAgICAgICAgUlNFU18xID0gUTE2LjFfMSwgUlNFU18yID0gUTE2LjFfMiwgUlNFU18zID0gUTE2LjFfMywgUlNFU180ID0gUTE2LjFfNCwgUlNFU181ID0gUTE2LjFfNSwgUlNFU182ID0gUTE2LjFfNiwgUlNFU183ID0gUTE2LjFfNywgUlNFU184ID0gUTE2LjFfOCwgUlNFU185ID0gUTE2LjFfOSwgUlNFU18xMCA9IFExNi4xXzEwLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIElQSVAtTkVPLTYwIC0gcHJlZGljdG9yIC0gNSBzdWJzY2FsZXMKICAgICAgICAgICAgICAgICMgTmV1cm90aWNpc20gKDEtMTIpLCBFeHRyYXZlcnNpb24gKDEzLTI0KSwgT3Blbm5lc3MgKDI1LTM2KSwgQWdyZWVhYmxlbmVzcyAoMzctNDgpLCBDb25zY2llbnRpb3VzbmVzcyAoNDktNjApCiAgICAgICAgICAgICAgICAjIHJldiBjb2RlZCA9IDktMTI7IDE2OyAyOCwgMzAtMzRtIDM2OyAzOSwgNDAsIDQzLTQ2OyA1MiwgNTgtNjAKICAgICAgICAgICAgICAgIE5FT19OXzEgPSBRMTcuMV8xLCBORU9fTl8yID0gUTE3LjFfMiwgTkVPX05fMyA9IFExNy4xXzMsIE5FT19OXzQgPSBRMTcuMV80LCBORU9fTl81ID0gUTE3LjFfNSwgTkVPX05fNiA9IFExNy4xXzYsIE5FT19OXzcgPSBRMTcuMV83LCBORU9fTl84ID0gUTE3LjFfOCwgTkVPX05fOSA9IFExNy4xXzksIE5FT19OXzEwID0gUTE3LjFfMTAsIE5FT19OXzExID0gUTE3LjFfMTEsIE5FT19OXzEyID0gUTE3LjFfMTIsIE5FT19FXzEzID0gUTE3LjFfMTMsIE5FT19FXzE0ID0gUTE3LjFfMTQsIE5FT19FXzE1ID0gUTE3LjFfMTUsIE5FT19FXzE2ID0gUTE3LjFfMTYsIE5FT19FXzE3ID0gUTE3LjFfMTcsIE5FT19FXzE4ID0gUTE3LjFfMTgsIE5FT19FXzE5ID0gUTE3LjFfMTksIE5FT19FXzIwID0gUTE3LjFfMjAsIE5FT19FXzIxID0gUTE3LjFfMjEsIE5FT19FXzIyID0gUTE3LjFfMjIsIE5FT19FXzIzID0gUTE3LjFfMjMsIE5FT19FXzI0ID0gUTE3LjFfMjQsIE5FT19PXzI1ID0gUTE3LjFfMjUsIE5FT19PXzI2ID0gUTE3LjFfMjYsIE5FT19PXzI3ID0gUTE3LjFfMjcsIE5FT19PXzI4ID0gUTE3LjFfMjgsIE5FT19PXzI5ID0gUTE3LjFfMjksIE5FT19PXzMwID0gUTE3LjFfMzAsIE5FT19PXzMxID0gUTE3LjFfMzEsIE5FT19PXzMyID0gUTE3LjFfMzIsIE5FT19PXzMzID0gUTE3LjFfMzMsIE5FT19PXzM0ID0gUTE3LjFfMzQsIE5FT19PXzM1ID0gUTE3LjFfMzUsIE5FT19PXzM2ID0gUTE3LjFfMzYsIE5FT19BXzM3ID0gUTE3LjFfMzcsIE5FT19BXzM4ID0gUTE3LjFfMzgsIE5FT19BXzM5ID0gUTE3LjFfMzksIE5FT19BXzQwID0gUTE3LjFfNDAsIE5FT19BXzQxID0gUTE3LjFfNDEsIE5FT19BXzQyID0gUTE3LjFfNDIsIE5FT19BXzQzID0gUTE3LjFfNDMsIE5FT19BXzQ0ID0gUTE3LjFfNDQsIE5FT19BXzQ1ID0gUTE3LjFfNDUsIE5FT19BXzQ2ID0gUTE3LjFfNDYsIE5FT19BXzQ3ID0gUTE3LjFfNDcsIE5FT19BXzQ4ID0gUTE3LjFfNDgsIE5FT19DXzQ5ID0gUTE3LjFfNDksIE5FT19DXzUwID0gUTE3LjFfNTAsIE5FT19DXzUxID0gUTE3LjFfNTEsIE5FT19DXzUyID0gUTE3LjFfNTIsIE5FT19DXzUzID0gUTE3LjFfNTMsIE5FT19DXzU0ID0gUTE3LjFfNTQsIE5FT19DXzU1ID0gUTE3LjFfNTUsIE5FT19DXzU2ID0gUTE3LjFfNTYsIE5FT19DXzU3ID0gUTE3LjFfNTcsIE5FT19DXzU4ID0gUTE3LjFfNTgsIE5FT19DXzU5ID0gUTE3LjFfNTksIE5FT19DXzYwID0gUTE3LjFfNjAKICAgICAgICAgICAgICAgICkgJT4lIAogIAojIHJlcGxhY2UgdW5jbGVhci9pbmFwcHJvcHJpYXRlIHJlc3BvbnNlcwogICMgcmVtb3ZlIG5vbi1udW1lcmljIHJlc3BvbnNlcyB0byAiYWdlX2ZpcnN0X3Bob25lIgogICAgIyB0aGlzIHdpbGwgZm9yY2UgYWxsIG5vbi1udW1lcmljIHZhbHVlIHRvICJOQSIKICBtdXRhdGUoYWdlX2ZpcnN0X3Bob25lID0gYXMubnVtZXJpYyhhZ2VfZmlyc3RfcGhvbmUpKSAlPiUgCiAgCiAgIyBjaGFuZ2UgdmFyaWFibGVzIHRvIG51bWVyaWMgb3IgZmFjdG9yIGFzIG5lZWRlZCAKICAjIGRlbW9ncmFwaGljIHFzCiAgbXV0YXRlKGFnZSA9IGFzLm51bWVyaWMoYWdlKSwgYWdlID0gYXMubnVtZXJpYyhhZ2UpLCBnZW5kZXIgPSBmYWN0b3IoZ2VuZGVyLCBsZXZlbHMgPSBjKDE6NCksIGxhYmVscyA9IGMoIk1hbGUiLCAiRmVtYWxlIiwgIk90aGVyIiwgIlByZWZlciBub3QgdG8gc2F5IikpLCBsYW5nID0gZmFjdG9yKGxhbmcsIGxldmVscyA9IGMoMToyKSwgbGFiZWxzID0gYygiRW5nbGlzaCIsICJPdGhlciIpKSwgcHJvZiA9IGZhY3Rvcihwcm9mLCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoIkxvdyIsICJNb2RlcmF0ZSIsICJIaWdoIikpLCBsaXZlID0gZmFjdG9yKGxpdmUsIGxldmVscyA9IGMoMToxMSksIGxhYmVscyA9IGMoIk5vcnRoIEFtZXJpY2EiLCAiQ2VudHJhbCBBbWVyaWNhIiwgIlNvdXRoIEFtZXJpY2EiLCAiRXVyb3BlIiwgIkFmcmljYSIsICJBc2lhIiwgIkF1c3RyYWxpYSIsICJQYWNpZmljIElzbGFuZGVyIiwgIkNhcmliYmVhbiBJc2xhbmRzIiwgIk90aGVyIiwgIlByZWZlciBub3QgdG8gc2F5IikpLCBlZHUgPSBmYWN0b3IoZWR1LCBsZXZlbHMgPSBjKDE6OSksIGxhYmVscyA9IGMoInNvbWUgaGlnaCBzY2hvb2wiLCAiaGlnaCBzY2hvb2wgb3IgZXF1aXZhbGVudCIsICJzb21lIGNvbGxlZ2UsIG5vIGRlZ3JlZSIsICJhc3NvY2lhdGUgZGVncmVlIiwgImJhY2hlbG9y4oCZcyBkZWdyZWUiLCAibWFzdGVy4oCZcyBkZWdyZWUiLCAicHJvZmVzc2lvbmFsIGRlZ3JlZSIsICJkb2N0b3JhdGUgb3IgaGlnaGVyIiwgIlByZWZlciBub3QgdG8gc2F5IikpLCAKICAgICAgICAgIyBlbXBsb3kgPSBmYWN0b3IoZW1wbG95LCBsZXZlbHMgPSBjKDE6OCksIGxhYmVscyA9IGMoImZ1bGwtdGltZSIsICJwYXR0LXRpbWUiLCAic2VsZi1lbXBsb3llZCIsICJ1bmVtcGxveWVkIiwgInN0dWRlbnQiLCAicmV0aXJlZCIsICJ1bmFibGUgdG8gd29yayIsICJQcmVmZXIgbm90IHRvIHNheSIpKSwgaW5kdXN0cnkgPSBmYWN0b3IoaW5kdXN0cnksIGxldmVscyA9IGMoMToxNiksIGxhYmVscyA9IGMoInN0dWRlbnQiLCAiZ29vZHMtcHJvZHVjaW5nIHNlY3RvciIsICJ1dGlsaXRpZXMiLCAiY29uc3RydWN0aW9uIiwgIm1hbnVmYWN0dXJpbmciLCAic2VydmljZXMtcHJvZHVjaW5nIHNlY3RvciIsICJmaW5hbmNlLCBpbnN1cmFuY2UsIHJlYWwgZXN0YXRlLCByZW50YWwgYW5kIGxlYXNpbmciLCAicHJvZmVzc2lvbmFsLCBzY2llbnRpZmljIGFuZCB0ZWNobmljYWwgc2VydmljZXMiLCAiYnVzaW5lc3MsIGJ1aWxkaW5nIGFuZCBvdGhlciBzdXBwb3J0IHNlcnZpY2VzIiwgImVkdWNhdGlvbmFsIHNlcnZpY2VzIiwgImhlYWx0aCBjYXJlIGFuZCBzb2NpYWwgYXNzaXN0YW5jZSIsICJpbmZvcm1hdGlvbiwgY3VsdHVyZSBhbmQgcmVjcmVhdGlvbiIsICJhY2NvbW1vZGF0aW9uIGFuZCBmb29kIHNlcnZpY2VzIiwgInB1YmxpYyBhZG1pbmlzdHJhdGlvbiIsICJvdGhlciIsICJkb2VzIG5vdCBhcHBseSB0byBtZSIpKSwgCgogICMgcGhvbmUgdXNlIC0tIGdlbmVyYWwgICAgICAgICAKcGhvbmVfZm9yX3dvcmsgPSBmYWN0b3IocGhvbmVfZm9yX3dvcmssIGxldmVscyA9IGMoMTozKSwgbGFiZWxzID0gYygieWVzIiwgIm5vIiwgImRvZXMgbm90IGFwcGx5IHRvIG1lIikpLCBzcGVjaWZpY19hcHAgPSBmYWN0b3Ioc3BlY2lmaWNfYXBwLCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoInllcyIsICJubyIsICJkb2VzIG5vdCBhcHBseSB0byBtZSIpKSwgYXBwX21vc3RfdXNlZCA9IGZhY3RvcihhcHBfbW9zdF91c2VkLCBsZXZlbHMgPSBjKDE6NSksIGxhYmVscyA9IGMoIkdhbWVzIiwgIlNvY2lhbCBOZXR3b3JraW5nIiwgIkVudGVydGFpbm1lbnQiLCAiQnVzaW5lc3MvUHJvZHVjdGl2aXR5IiwgIk90aGVyIikpLCAKCiAgIyBwaG9uZSB1c2UgLS0gaXBob25lIC8gU1QKaXBob25lID0gZmFjdG9yKGlwaG9uZSwgbGV2ZWxzID0gYygxOjIpLCBsYWJlbHMgPSBjKCJ5ZXMiLCAibm8iKSksIFNUID0gZmFjdG9yKFNULCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoImhhZCBTVCIsICJTVCBuZXciLCAibm8gU1QiKSksIFNUX2FwcF9tb3N0X3VzZWQgPSBmYWN0b3IoU1RfYXBwX21vc3RfdXNlZCwgbGV2ZWxzID0gYygxOjUpLCBsYWJlbHMgPSBjKCJHYW1lcyIsICJTb2NpYWwgTmV0d29ya2luZyIsICJFbnRlcnRhaW5tZW50IiwgIkJ1c2luZXNzL1Byb2R1Y3Rpdml0eSIsICJPdGhlciIpKSwgU1RfYXBwX3RleHRfbWVzcyA9IGFzLm51bWVyaWMoU1RfYXBwX3RleHRfbWVzcyksIFNUX3dlZWtseV90b3RfaG91cnMgPSBhcy5udW1lcmljKFNUX3dlZWtseV90b3RfaG91cnMpLCAgU1RfZGFpbHlfcGlja3VwcyA9IGFzLm51bWVyaWMoU1RfZGFpbHlfcGlja3VwcyksIFNUX2RhaWx5X25vdCA9IGFzLm51bWVyaWMoU1RfZGFpbHlfbm90KSwgCgogICMgY29tZm9ydCBsZXZlbCBxcwpjb21fZ2VuID0gYXMubnVtZXJpYyhjb21fZ2VuKSwgY29tX3VuYXR0ZW5kZWQgPSBhcy5udW1lcmljKGNvbV91bmF0dGVuZGVkKSwgY29tX2xlYXZlX3dpdGhfb3RoZXJzID0gYXMubnVtZXJpYyhjb21fbGVhdmVfd2l0aF9vdGhlcnMpLCBjb21fbG9ja2VkID0gYXMubnVtZXJpYyhjb21fbG9ja2VkKSwgY29tX3Jvb21fdGFzayA9IGFzLm51bWVyaWMoY29tX3Jvb21fdGFzayksCiAgIyBwcml2YWN5IHFzCnBhc3Njb2RlID0gZmFjdG9yKHBhc3Njb2RlLCBsZXZlbHMgPSBjKDE6MiksIGxhYmVscyA9IGMoInllcyIsICJubyIpKSwgcGFzc2NvZGVfb3RoZXJzID0gZmFjdG9yKHBhc3Njb2RlX290aGVycywgbGV2ZWxzID0gYygxOjIpLCBsYWJlbHMgPSBjKCJ5ZXMiLCAibm8iKSksIHBhc3Njb2RlX3JlbGF0aW9uID0gZmFjdG9yKHBhc3Njb2RlX3JlbGF0aW9uLCBsZXZlbHMgPSBjKDE6NyksIGxhYmVscyA9IGMoInBhcmVudHMiLCAib3RoZXIgZmFtaWx5IiwgInNpZ25pZmljYW50IG90aGVyIiwgImZyaWVuZHMiLCAiY28td29ya2VyIC8gc3VwZXJ2aXNvciIsICJvdGhlciIsICJETkEiKSksIG90aGVyX3VzZSA9IGZhY3RvcihvdGhlcl91c2UsIGxldmVscyA9IGMoMTo0KSwgbGFiZWxzID0gYygiWWVzLCBvbmx5IGluIG15IHByZXNlbmNlLiIsICJZZXMsIGRlcGVuZGluZyBvbiB0aGUgaW5kaXZpZHVhbCBhbmQgb25seSBpbiBteSBwcmVzZW5jZS4iLCAiWWVzLCBkZXBlbmRpbmcgb24gdGhlIGluZGl2aWR1YWwgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gbXkgcHJlc2VuY2UuIiwgIk5vIikpLCBvdGhlcl9yb29tID0gZmFjdG9yKG90aGVyX3Jvb20sIGxldmVscyA9IGMoMToyKSwgbGFiZWxzID0gYygieWVzIiwgIm5vIikpLCAKCiAgIyBkdXN0cmFjdGlvbiBxcwpkaXN0X2RhaWx5ID0gYXMubnVtZXJpYyhkaXN0X2RhaWx5KSwgZGlzdF9zdHVkeSA9IGFzLm51bWVyaWMoZGlzdF9zdHVkeSksIGRpc3RfZGV2aWNlID0gZmFjdG9yKGRpc3RfZGV2aWNlLCBsZXZlbHMgPSBjKDE6NSksIGxhYmVscyA9IGMoIkNvbXB1dGVyIiwgIlBob25lIiwgImlQYWQvVGFibGV0IiwgIlNtYXJ0d2F0Y2giLCAiT3RoZXIiKSksIGRpc3RfZGV2aWNlX3N0dWR5d29yayA9IGZhY3RvcihkaXN0X2RldmljZV9zdHVkeXdvcmssIGxldmVscyA9IGMoMTo1KSwgbGFiZWxzID0gYygiQ29tcHV0ZXIiLCAiUGhvbmUiLCAiaVBhZC9UYWJsZXQiLCAiU21hcnR3YXRjaCIsICJPdGhlciIpKSwgZGlzdF9kZXZpY2Vfc29jaWFsID0gZmFjdG9yKGRpc3RfZGV2aWNlX3NvY2lhbCwgbGV2ZWxzID0gYygxOjUpLCBsYWJlbHMgPSBjKCJDb21wdXRlciIsICJQaG9uZSIsICJpUGFkL1RhYmxldCIsICJTbWFydHdhdGNoIiwgIk90aGVyIikpLCAKCiAgIyBsb2NhdGlvbiAmIHBvd2VyIHF1ZXN0aW9ucwpwb3dfbm90X3VzaW5nID0gYXMubnVtZXJpYyhwb3dfbm90X3VzaW5nKSwgcG93X25vdGlmaWNhdGlvbnNfb24gPSBhcy5udW1lcmljKHBvd19ub3RpZmljYXRpb25zX29uKSwgcG93X3ZpYnJhdGUgPSBhcy5udW1lcmljKHBvd192aWJyYXRlKSwgcG93X3N0dWR5ID0gYXMubnVtZXJpYyhwb3dfc3R1ZHkpLCBwb3dfZXhhbSA9IGFzLm51bWVyaWMocG93X2V4YW0pLCBwb3dfbGVjID0gYXMubnVtZXJpYyhwb3dfbGVjKSwgcG93X3dvcmsgPSBhcy5udW1lcmljKHBvd193b3JrKSwgcG93X21lZXRpbmcgPSBhcy5udW1lcmljKHBvd19tZWV0aW5nKSwgcG93X3NsZWVwID0gYXMubnVtZXJpYyhwb3dfc2xlZXApLCBsb2NfdHlwaWNhbCA9IGZhY3Rvcihsb2NfdHlwaWNhbCwgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJPbiBteSBkZXNrIiwgIkluIG15IHBvY2tldCBvciBiYWciLCAiSW4gYW5vdGhlciByb29tIikpLCBsb2Nfc3R1ZHkgPSBmYWN0b3IobG9jX3N0dWR5LCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoIk9uIG15IGRlc2siLCAiSW4gbXkgcG9ja2V0IG9yIGJhZyIsICJJbiBhbm90aGVyIHJvb20iKSksIGxvY19leGFtID0gZmFjdG9yKGxvY19leGFtLCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoIk9uIG15IGRlc2siLCAiSW4gbXkgcG9ja2V0IG9yIGJhZyIsICJJbiBhbm90aGVyIHJvb20iKSksIGxvY19sZWMgPSBmYWN0b3IobG9jX2xlYywgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJPbiBteSBkZXNrIiwgIkluIG15IHBvY2tldCBvciBiYWciLCAiSW4gYW5vdGhlciByb29tIikpLCBsb2Nfd29yayA9IGZhY3Rvcihsb2Nfd29yaywgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJPbiBteSBkZXNrIiwgIkluIG15IHBvY2tldCBvciBiYWciLCAiSW4gYW5vdGhlciByb29tIikpLCBsb2NfbWVldGluZyA9IGZhY3Rvcihsb2NfbWVldGluZywgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJPbiBteSBkZXNrIiwgIkluIG15IHBvY2tldCBvciBiYWciLCAiSW4gYW5vdGhlciByb29tIikpLCBsb2Nfc29jaWFsID0gZmFjdG9yKGxvY19zb2NpYWwsIGxldmVscyA9IGMoMTozKSwgbGFiZWxzID0gYygiT24gbXkgZGVzayIsICJJbiBteSBwb2NrZXQgb3IgYmFnIiwgIkluIGFub3RoZXIgcm9vbSIpKSwgCgogICMgZXhwbG9yYXRvcnkgcXMKY29tbXVuaWNhdGUgPSBmYWN0b3IoY29tbXVuaWNhdGUsIGxldmVscyA9IGMoMTo0KSwgbGFiZWxzID0gYygiRmFtaWx5IiwgIkZyaWVuZHMiLCAiV29yayIsICJPdGhlciIpKSwgcGhvbmVfdXNlID0gZmFjdG9yKHBob25lX3VzZSwgbGV2ZWxzID0gYygxOjUpLCBsYWJlbHMgPSBjKCJDYWxsaW5nL1RleHRpbmciLCAiU29jaWFsIE1lZGlhIiwgIkdhbWVzIiwgIkVtYWlsIiwgIk90aGVyIikpLCBwaG9uZV92YWx1ZSA9IGZhY3RvcihwaG9uZV92YWx1ZSwgbGV2ZWxzID0gYygxOjQpLCBsYWJlbHMgPSBjKCIkMC0kMjAiLCAiJDIxLSQ0MCIsICIkNDEtJDYwIiwgIj4kNjAiKSksIHBoYW50b20gPSBmYWN0b3IocGhhbnRvbSwgbGV2ZWxzID0gYygxOjIpLCBsYWJlbHMgPSBjKCJ5ZXMiLCAibm8iKSksIAogICAgICAgICApICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiZW1wbG95XyIpKSxmdW5zKGFzLm51bWVyaWMpKSAlPiUgCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoImluZHVzdHJ5XyIpKSxmdW5zKGFzLm51bWVyaWMpKSAlPiUgCiAgCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk5NUFEiKSksZnVucyhhcy5udW1lcmljKSkgJT4lIAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJTUlMiKSksZnVucyhhcy5udW1lcmljKSkgJT4lIAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJTQUQiKSksZnVucyhhcy5udW1lcmljKSkgJT4lIAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJEQVNTIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiQklTIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiU1NFSVQiKSksZnVucyhhcy5udW1lcmljKSkgJT4lIAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJSU0VTIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTkVPIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICAKICAjIHJldmVyc2UgY29kZSBpdGVtcy4uLgogICAgIyB0aGlzIFJFUExBQ0VTIG9yaWdpbmFsIGl0ZW1zIHdpdGggbmV3IHJldmVyc2UtY29kZWQgdmFsdWVzCiAgICAjIHRoZSBzdWJ0cmFjdGlvbiBpcyBtYWRlIGJhc2VkIG9uIHRoZSBsaWtlcnQgc2NhbGUKICAgICAgIyBzbyBpZiB0aGUgc2NhbGUgaXMgMS00LCB0aGVuIGl0IHNob3VsZCBiZSA1LXNjb3JlCiAgIyBmb3IgU1JTOiA1LCA3LCA5CiAgbXV0YXRlKFNSU181ID0gNS1TUlNfNSkgJT4lIAogIG11dGF0ZShTUlNfNyA9IDUtU1JTXzcpICU+JSAKICBtdXRhdGUoU1JTXzkgPSA1LVNSU185KSAlPiUgCiAgIyBmb3IgQklTOiAxLCA0LCA1LCA2CiAgbXV0YXRlKEJJU18xID0gNS1CSVNfMSkgJT4lIAogIG11dGF0ZShCSVNfNCA9IDUtQklTXzQpICU+JSAKICBtdXRhdGUoQklTXzUgPSA1LUJJU181KSAlPiUgCiAgbXV0YXRlKEJJU182ID0gNS1CSVNfNikgJT4lIAogICMgZm9yIFNTRUlUOiA1LCAyOCwgMzMKICBtdXRhdGUoU1NFSVRfNSA9IDYtU1NFSVRfNSkgJT4lIAogIG11dGF0ZShTU0VJVF8yOCA9IDYtU1NFSVRfMjgpICU+JSAKICBtdXRhdGUoU1NFSVRfMzMgPSA2LVNTRUlUXzMzKSAlPiUgCiAgIyBmb3IgUlNFUzogMywgNSwgOCwgOSwgMTAKICBtdXRhdGUoUlNFU18zID0gNS1SU0VTXzMpICU+JSAKICBtdXRhdGUoUlNFU181ID0gNS1SU0VTXzUpICU+JSAKICBtdXRhdGUoUlNFU184ID0gNS1SU0VTXzgpICU+JSAKICBtdXRhdGUoUlNFU185ID0gNS1SU0VTXzkpICU+JSAKICBtdXRhdGUoUlNFU18xMCA9IDUtUlNFU18xMCkgJT4lIAogICMgZm9yIE5FTzogOS0xMjsgMTY7IDI4LCAzMC0zNCwgMzY7IDM5LCA0MCwgNDMtNDY7IDUyLCA1OC02MAogIG11dGF0ZShORU9fTl85ID0gNi1ORU9fTl85KSAlPiUgCiAgbXV0YXRlKE5FT19OXzEwID0gNi1ORU9fTl8xMCkgJT4lIAogIG11dGF0ZShORU9fTl8xMSA9IDYtTkVPX05fMTEpICU+JSAKICBtdXRhdGUoTkVPX05fMTIgPSA2LU5FT19OXzEyKSAlPiUgCiAgCiAgbXV0YXRlKE5FT19FXzE2ID0gNi1ORU9fRV8xNikgJT4lIAogIAogIG11dGF0ZShORU9fT18yOCA9IDYtTkVPX09fMjgpICU+JSAKICBtdXRhdGUoTkVPX09fMzAgPSA2LU5FT19PXzMwKSAlPiUgCiAgbXV0YXRlKE5FT19PXzMxID0gNi1ORU9fT18zMSkgJT4lIAogIG11dGF0ZShORU9fT18zMiA9IDYtTkVPX09fMzIpICU+JSAKICBtdXRhdGUoTkVPX09fMzMgPSA2LU5FT19PXzMzKSAlPiUgCiAgbXV0YXRlKE5FT19PXzM0ID0gNi1ORU9fT18zNCkgJT4lIAogIG11dGF0ZShORU9fT18zNiA9IDYtTkVPX09fMzYpICU+JSAKICAKICBtdXRhdGUoTkVPX0FfMzkgPSA2LU5FT19BXzM5KSAlPiUgCiAgbXV0YXRlKE5FT19BXzQwID0gNi1ORU9fQV80MCkgJT4lIAogIG11dGF0ZShORU9fQV80MyA9IDYtTkVPX0FfNDMpICU+JSAKICBtdXRhdGUoTkVPX0FfNDQgPSA2LU5FT19BXzQ0KSAlPiUgCiAgbXV0YXRlKE5FT19BXzQ1ID0gNi1ORU9fQV80NSkgJT4lIAogIG11dGF0ZShORU9fQV80NiA9IDYtTkVPX0FfNDYpICU+JSAKICAKICBtdXRhdGUoTkVPX0NfNTIgPSA2LU5FT19DXzUyKSAlPiUgCiAgbXV0YXRlKE5FT19DXzU4ID0gNi1ORU9fQ181OCkgJT4lIAogIG11dGF0ZShORU9fQ181OSA9IDYtTkVPX0NfNTkpICU+JSAKICBtdXRhdGUoTkVPX0NfNjAgPSA2LU5FT19DXzYwKSAlPiUgCiAgCiAgIyBhZGQgc2NvcmVzIGZvciBlYWNoIHF1ZXN0aW9ubmFpcmUuLi4gcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKFNBRF9zY29yZSA9IHN1bShjX2Fjcm9zcyhTQURfMTpTQURfMTMpKSkKICAjIGZvciBlYWNoIHAuLi4uCiAgIyBnZXQgTk1QUSBzY29yZSAtLSBTVU0KICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoTk1QUV9zdW0gPSBzdW0oY19hY3Jvc3MoTk1QUV8xOk5NUFFfMjApKSkgJT4lIAogIAogICMgZ2V0IFNSUyBzY29yZSAtLSBTVU0KICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoU1JTX3N1bSA9IHN1bShjX2Fjcm9zcyhTUlNfMTpTUlNfMTApKSkgJT4lIAogIAogICMgZ2V0IFNBRCBzY29yZSAtLSBTVU0KICAgICMgb3ZlcmFsbCAoMS0xMykKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTQURfc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJTQUQiKSkpKSAlPiUKICAgICMgZGVwZW5kZW5jeSAoMS0zKQogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKFNBRF9kZXBfc3VtID0gc3VtKGNfYWNyb3NzKFNBRF9kZXBfMTpTQURfZGVwXzMpKSkgJT4lCiAgICAjIGFjY2Vzc2liaWxpdHkgKDUtNykKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTQURfYWNjZXNzX3N1bSA9IHN1bShjX2Fjcm9zcyhTQURfYWNjZXNzXzU6U0FEX2FjY2Vzc183KSkpICU+JQogICAgIyBlbW90aW9uYWwgYXR0YWNobWVudCAoOC0xMSkKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTQURfZWFfc3VtID0gc3VtKGNfYWNyb3NzKFNBRF9lYV84OlNBRF9lYV8xMSkpKSAlPiUKICAgICMgZGlzdHJhY3RpYmlsaXR5ICgxMi0xMykKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTQURfZGlzdF9zdW0gPSBzdW0oY19hY3Jvc3MoU0FEX2Rpc3RfMTI6U0FEX2Rpc3RfMTMpKSkgJT4lCiAgCiAgIyBnZXQgREFTUyBzY29yZSAtLSBTVU0KICAgICMgZGVwcmVzc2lvbiAoMywgNSwgMTAsIDEzLCAxNiwgMTcsIDIxKQogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKERBU1NfRF9zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIkRBU1NfRCIpKSkpICU+JSAKICAgICMgYW54aWV0eSAoMiwgNCwgNywgOSwgMTUsIDE5LCAyMCkKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShEQVNTX0Ffc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJEQVNTX0EiKSkpKSAlPiUgCiAgICAjIHN0cmVzcyAoMSwgNiwgOCwgMTEsIDEyLCAxNCwgMTgpCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoREFTU19TX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiREFTU19TIikpKSkgJT4lIAogIAogIAogICMgZ2V0IEJJUyBzY29yZSAtLSBTVU0KICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoQklTX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiQklTIikpKSkgJT4lIAogIAogICMgZ2V0IFNTRUlUIHNjb3JlIC0tIFNVTQogIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTU0VJVF9zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIlNTRUlUIikpKSkgJT4lIAogIAogICMgZ2V0IFJTRVMgc2NvcmUgLS0gU1VNCiAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKFJTRVNfc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJSU0VTIikpKSkgJT4lIAogIAogICMgZ2V0IE5FTyBzY29yZSAtLSBTVU0KICAgICMgTmV1cm90aWNpc20gKDEtMTIpIAogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKE5FT19OX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiTkVPX04iKSkpKSAlPiUgCiAgICAjIEV4dHJhdmVyc2lvbiAoMTMtMjQpCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoTkVPX0Vfc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJORU9fRSIpKSkpICU+JSAKICAgICMgT3Blbm5lc3MgKDI1LTM2KQogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKE5FT19PX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiTkVPX08iKSkpKSAlPiUgCiAgICAjIEFncmVlYWJsZW5lc3MgKDM3LTQ4KQogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKE5FT19BX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiTkVPX0EiKSkpKSAlPiUgCiAgICAjIENvbnNjaWVudGlvdXNuZXNzICg0OS02MCkKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShORU9fQ19zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIk5FT19DIikpKSkKICAKICAjIGV4YW1wbGUgdG8gZ2V0IG1lYXNuOiBnZXQgTk1QUSBzY29yZSAtLSBNRUFOCiAgIyByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUobWVhbihjX2Fjcm9zcyhOTVBRXzE6Tk1QUV8yMCkpKSAlPiUgCgojIGV4cG9ydCBmaW5hbCBkYXRhIGZpbGUKICB3cml0ZS5jc3YoU09OQV9kYXRhLCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL1NPTkFfZGF0YShvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpCmBgYAoKIyMjIDIuIFN0dWR5IDIgRGF0YTogTXR1cmsKCkZpcnN0LCB0aGUgcmF3IGRhdGEgd2FzIGltcG9ydGVkLgoKYGBge3IgZXZhbD1UUlVFfQojIHRoaXMgd2lsbCBpbXBvcnQgdGhlIHJhdyBleGNlbCBkYXRhIGZpbGUgZm9yIHN0dWR5IDEKICAjIHRoaXMgZmlsZSBoYXMgYmVlbiBhbm9ueW1pemVkLCBzbyBhbnkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGhhcyBiZWVuIHJlbW92ZWQKTXR1cmtfcmF3IDwtIHJlYWQuY3N2KCJNdHVya19zdXJ2ZXlfZGF0YShvY3QxOSktZmluYWwuY3N2IiwgaGVhZGVyID0gVFJVRSkKYGBgCgpBZnRlciBpbXBvcnRpbmcgdGhlIHJhdyBkYXRhLCB0aGUgZmlsZSBpcyBjbGVhbmVkIGJ5IHJlbW92aW5nCnBhcnRpY2lwYW50cyBiYXNlZCBvbiBzZXZlcmFsIGNyaXRlcmlhOgoKLSAgICoqVGVzdGluZyBEYXRhKio6IGV4cGVyaW1lbnRlciBkYXRhIChpLmUuLCB0ZXN0aW5nIHByaW9yIHRvIGRhdGEKICAgIGNvbGxlY3Rpb24pLCBhbnkgaXJyZWxldmFudCByb3dzCgotICAgKipJbmNvbXBsZXRlIERhdGEqKjogcGFydGljaXBhbnRzIHdobyBkaWQgbm90IGNvbXBsZXRlIHRoZSBzdHVkeQoKICAgIC0gICBgciBucm93KE10dXJrX3JhdyAlPiUgZmlsdGVyKERpc3RyaWJ1dGlvbkNoYW5uZWwgIT0gInRlc3QiKSAlPiUgZmlsdGVyKEZpbmlzaGVkID09IDApKWAKICAgICAgICBkaWQgbm90IGZpbmlzaAoKLSAgICoqTm8gY29uc2VudDoqKiBwYXJ0aWNpcGFudHMgd2hvIGRpZCBub3QgY29uc2VudCB0byB0aGUgc3R1ZHkKCiAgICAtICAgYHIgbnJvdyhNdHVya19yYXcgJT4lIGZpbHRlcihRMS4yICE9IDEpKWAgZGlkIG5vdCBjb25zZW50CgotICAgKipVbm5lY2Vzc2FyeSBWYXJpYWJsZXMqKjogY29sdW1ucyB3aGljaCBhcmUgbm90IHJlbGV2YW50IHRvIHRoZQogICAgYW5hbHlzZXMgKGUuZy4sIGRpc3RyaWJ1dGlvbiB0eXBlLCBkaXN0cmlidXRpb24gbGFuZ3VhZ2UpCgpgYGB7ciBldmFsPVRSVUV9CiMgY2xlYW4gdGhlIGRhdGEKTXR1cmtfcmF3X3RlbXAgPC0gCiAgIyBzdGFydCB3aXRoIHJlbW92aW5nIGV4cGVyaW1lbnRlciBhbmQgaXJyZWxldmFudCByb3dzIGZyb20gdGhlIGRhdGEKICAgICMgdGhlcmUgaXMgbm8gbmVlZCB0byBjb3VudCB0aGUgcHMgcmVtb3ZlZCBhdCB0aGlzIHN0YWdlIAogIE10dXJrX3JhdyAlPiUgCiAgIyByZW1vdmUgcm93IDEgJiAyIC0tIG5vdCBkYXRhCiAgc2xpY2UoMzpucm93KE10dXJrX3JhdykpICU+JSAKICAjIHJlbW92ZSB0ZXN0aW5nIGRhdGEKICBmaWx0ZXIoRGlzdHJpYnV0aW9uQ2hhbm5lbCAhPSAidGVzdCIpICU+JSAKCiAgIyBuZXh0LCByZW1vdmUgcHMgdy8gaW5jb21wbGV0ZSBkYXRhIC0tIGluY2x1ZGUgb25seSB0aG9zIHdobyBoYXZlIGZpbmlzaGVkIChpLmUuLCAiMSIpCiAgZmlsdGVyKEZpbmlzaGVkID09IDEpICU+JSAKICAKICAjIHJlbW92ZSBhbnkgcHMgd2hvIGRpZCBub3QgY29uc2VudCB0byB0aGUgc3R1ZHkKICBmaWx0ZXIoUTEuMiA9PSAxKSAlPiUgCiAgCiAgIyByZW1vdmUgYW55IHBzIHdobyBkaWQgbm90IHJlcG9ydCBiZWluZyBhdCBsZWFzdCAxOCBvciBvbGRlcgogIGZpbHRlcihRMi4xID4xNykgJT4lIAoKICAjIHJlbW92ZSB1bm5lY2Vzc2FyeSBjb2x1bW5zCiAgICAjIHNob3VsZCBiZSBkb25lIGFmdGVyIG90aGVycyBzaW5jZSBjb2x1bW5zIHVzZWQgdG8gZmlsdGVyCiAgc2VsZWN0KC1jKFN0YXR1czpJUEFkZHJlc3MsIFJlc3BvbnNlSWQ6RXh0ZXJuYWxSZWZlcmVuY2UsIERpc3RyaWJ1dGlvbkNoYW5uZWw6UTEuMiwgU0MwKSkKYGBgCgpBZGRpdGlvbmFsbHksIGEgInBhcnRpY2lwYW50IiBjb2x1bW4gd2FzIGFkZGVkIHRvIGRlbm90ZSB0aGUgcGFydGljaXBhbnQKSUQsIHRoZSBjb2x1bW5zIHdlcmUgcmVuYW1lZCBmb3IgZWFzaWVyIHJlZmVyZW5jZSwgYW55IHVuY2xlYXIgb3IKaW5hcHByb3ByaWF0ZSByZXNwb25zZXMgKGUuZy4sIG5vbi1udW1lcmljIHJlc3BvbnNlIGZvciBpdGVtcyByZXF1aXJpbmcKYSBudW1lcmljIHJlc3BvbnNlKSB3ZXJlIHJlbW92ZWQsIGFuZCBhbGwgdmFyaWFibGVzIHdlcmUgZm9ybWF0dGVkIGFzCm51bWVyaWMgb3IgZmFjdG9yIGFzIGFwcHJvcHJpYXRlLiBMYXN0bHksIGFueSBxdWVzdGlvbm5haXJlIHNjb3JlcyB3ZXJlCmNhbGN1bGF0ZWQuCgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBldmFsPVRSVUV9CiMgYWRkIGEgcGFydGljaXBhbnQgY29sdW1uIHRvIGRhdGEKTXR1cmtfZGF0YV90ZW1wIDwtIAogIGNiaW5kKGRhdGEuZnJhbWUoInBhcnRpY2lwYW50IiA9IGMoMTpucm93KE10dXJrX3Jhd190ZW1wKSkpLCBNdHVya19yYXdfdGVtcCkKCk10dXJrX2RhdGEgPC0gCiAgIyBjaGFuZ2UgZGF0YSBmaWxlIHR5cGUgdG8gdGliYmxlIAogIGFzLnRpYmJsZShNdHVya19kYXRhX3RlbXApICU+JSAKICAjIHJlbmFtZSBjb2x1bW5zLi4uCiAgZHBseXI6OnJlbmFtZShkdXJhdGlvbl9zZWMgPSBEdXJhdGlvbi4uaW4uc2Vjb25kcy4sIGFnZSA9IFEyLjEsIGdlbmRlciA9IFEyLjIsIGdlbmRlck8gPSBRMi4zLCBsYW5nID0gUTIuNCwgbGFuZ08gPSBRMi41LCBwcm9mID0gUTIuNiwgbGl2ZSA9IFEyLjcsIGxpdmVPID0gUTIuOCwgZWR1ID0gUTIuOSwgZW1wbG95ID0gUTIuMTAsIGVtcGxveV9GVCA9IFEyLjEwXzEsIGVtcGxveV9QVCA9IFEyLjEwXzIsIGVtcGxveV9TRSA9IFEyLjEwXzMsIGVtcGxveV9VRSA9IFEyLjEwXzQsIGVtcGxveV9zdHVkZW50ID0gUTIuMTBfNSwgZW1wbG95X3JldGlyZWQgPSBRMi4xMF82LCBlbXBsb3lfdW5hYmxlID0gUTIuMTBfNywgZW1wbG95X1BOVFMgPSBRMi4xMF84LCBpbmR1c3RyeSA9IFEyLjExLCBpbmR1c3RyeU8gPSBRMi4xMiwgaW5kdXN0cnlfc3R1ZGVudCA9IFEyLjExXzEsIGluZHVzdHJ5X2dvb2RzID0gUTIuMTFfMiwgaW5kdXN0cnlfdXRpbGl0aWVzID0gUTIuMTFfMywgaW5kdXN0cnlfY29uc3QgPSBRMi4xMV80LCBpbmR1c3RyeV9tYW51ZiA9IFEyLjExXzUsIGluZHVzdHJ5X3NlcnZpY2UgPSBRMi4xMV82LCBpbmR1c3RyeV9maW5hbmNlX3JlYWx0b3IgPSBRMi4xMV83LCBpbmR1c3RyeV90ZWNoID0gUTIuMTFfOCwgaW5kdXN0cnlfYnVzaW5lc3MgPSBRMi4xMV85LCBpbmR1c3RyeV9lZHVjID0gUTIuMTFfMTAsIGluZHVzdHJ5X2hlYWx0aCA9IFEyLjExXzExLCBpbmR1c3RyeV9pbmZvX2N1bHR1cmUgPSBRMi4xMV8xMiwgaW5kdXN0cnlfYWNjb21vZCA9IFEyLjExXzEzLCBpbmR1c3RyeV9wdWJsaWNfYWRtaW4gPSBRMi4xMV8xNCwgaW5kdXN0cnlfb3RoZXIgPSBRMi4xMV8xNSwgaW5kdXN0cnlfRE5BID0gUTIuMTFfMTYsCiAgICAgICAgICAgICAgIyBzbWFydHBob25lIHF1ZXN0aW9ucwogICAgICAgICAgICAgICAgIyBmcmVxdWVuY3kgb2YgdXNlCiAgICAgICAgICAgICAgICBwaG9uZV9mb3Jfd29yayA9IFEyLjEzLCBzcGVjaWZpY19hcHAgPSBRMi4xNCwgYWdlX2ZpcnN0X3Bob25lID0gUTMuMSwgYXBwX21vc3RfdXNlZCA9IFEzLjIsIGFwcF9tb3N0X3VzZWRPID0gUTMuMywgYXBwX21vc3RfdXNlZF9vdmVyYWxsID0gUTMuNCwgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgaXBob25lIHF1ZXN0aW9ucyAtLSBTVAogICAgICAgICAgICAgICAgaXBob25lID0gUTQuMSwgU1QgPSBRNC4yLCBTVF9hcHBfbW9zdF91c2VkID0gUTQuNCwgU1RfYXBwX21vc3RfdXNlZE8gPSBRNC41LCBTVF9hcHBfdGV4dF9tZXNzID0gUTQuNiwgU1RfYXBwX21vc3RfdXNlZF9vdmVyYWxsID0gUTQuNywgU1Rfd2Vla2x5X3RvdF9ob3VycyA9IFE0LjgsIFNUX2RhaWx5X3BpY2t1cHMgPSBRNC45LCBTVF9kYWlseV9ub3QgPSBRNC4xMCwgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIGNvbWZvcnQgbGV2ZWwgcXMKICAgICAgICAgICAgICAgIGNvbV9nZW4gPSBRNS4xXzEsIGNvbV91bmF0dGVuZGVkID0gUTUuMV8yLCBjb21fbGVhdmVfd2l0aF9vdGhlcnMgPSBRNS4xXzMsIGNvbV9sb2NrZWQgPSBRNS4xXzQsIGNvbV9yb29tX3Rhc2sgPSBRNS4xXzUsIAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgI3ByaXZhY3kgcXMKICAgICAgICAgICAgICAgIHBhc3Njb2RlID0gUTYuMSwgcGFzc2NvZGVfb3RoZXJzID0gUTYuMiwgcGFzc2NvZGVfcmVsYXRpb24gPSBRNi4zLCBwYXNzY29kZV9yZWxhdGlvbl9wYXJlbnRzID0gUTYuM18xLCBwYXNzY29kZV9yZWxhdGlvbl9vdGhlcl9mYW0gPSBRNi4zXzIsIHBhc3Njb2RlX3JlbGF0aW9uX3NpZ19vdGhlciA9IFE2LjNfMywgcGFzc2NvZGVfcmVsYXRpb25fZnJpZW5kID0gUTYuM180LCBwYXNzY29kZV9yZWxhdGlvbl93b3JrID0gUTYuM181LCBwYXNzY29kZV9yZWxhdGlvbl9vdGhlciA9IFE2LjNfNiwgcGFzc2NvZGVfcmVsYXRpb25fRE5BID0gUTYuM183LCBwYXNzY29kZV9yZWxhdGlvbl9vdmVyYWxsID0gUTYuNCwgb3RoZXJfdXNlID0gUTYuNSwgb3RoZXJfcm9vbSA9IFE2LjYsICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgZGlzdHJhY3Rpb24gcXMKICAgICAgICAgICAgICAgIGRpc3RfZGFpbHkgPSBRNy4xXzEsIGRpc3Rfc3R1ZHkgPSBRNy4xXzIsIGRpc3RfZGV2aWNlID0gUTcuMiwgZGlzdF9kZXZpY2VPID0gUTcuMywgZGlzdF9kZXZpY2Vfc3R1ZHl3b3JrID0gUTcuNCwgZGlzdF9kZXZpY2Vfc3R1ZHl3b3JrTyA9IFE3LjUsIAogICAgICAgICAgICAgICAgZGlzdF9kZXZpY2Vfc29jaWFsID0gUTcuNiwgZGlzdF9kZXZpY2Vfc29jaWFsTyA9IFE3LjcsCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIGxvY2F0aW9uICYgcG93ZXIgcXMKICAgICAgICAgICAgICAgIHBvd19ub3RfdXNpbmcgPSBROC4xXzEsIHBvd19ub3RpZmljYXRpb25zX29uID0gUTguMV8yLCBwb3dfdmlicmF0ZSA9IFE4LjFfMywgcG93X3N0dWR5ID0gUTguMV80LCBwb3dfZXhhbSA9IFE4LjFfNSwgcG93X2xlYyA9IFE4LjFfNiwgcG93X3dvcmsgPSBROC4xXzcsIHBvd19tZWV0aW5nID0gUTguMV84LCBwb3dfc2xlZXAgPSBROC4xXzksIAogICAgICAgICAgICAgICAgbG9jX3R5cGljYWwgPSBROC4yLCBsb2Nfc3R1ZHkgPSBROC4zLCBsb2NfZXhhbSA9IFE4LjQsIGxvY19sZWMgPSBROC41LCBsb2Nfd29yayA9IFE4LjYsIGxvY19tZWV0aW5nID0gUTguNywgbG9jX3NvY2lhbCA9IFE4LjgsICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgZXhwbG9yYXRvcnkgcXMKICAgICAgICAgICAgICAgIGNvbW11bmljYXRlID0gUTkuMSwgY29tbXVuaWNhdGVPID0gUTkuMiwgcGhvbmVfdXNlID0gUTkuMywgcGhvbmVfdXNlTyA9IFE5LjQsIHBob25lX3ZhbHVlID0gUTkuNSwgcGhhbnRvbSA9IFE5LjYsICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAjIFF1ZXN0aW9ubmFpcmVzCiAgICAgICAgICAgICAgICAjIE5vbW9waG9iaWEgLS0gY3JpdGVyaW9uIC0gbm8gc3Vic2NhbGVzCiAgICAgICAgICAgICAgICBOTVBRXzEgPSBRMTAuMV8xLCBOTVBRXzIgPSBRMTAuMV8yLCBOTVBRXzMgPSBRMTAuMV8zLCBOTVBRXzQgPSBRMTAuMV80LCBOTVBRXzUgPSBRMTAuMV81LCBOTVBRXzYgPSBRMTAuMV82LCBOTVBRXzcgPSBRMTAuMV83LCBOTVBRXzggPSBRMTAuMV84LCBOTVBRXzkgPSBRMTAuMV85LCBOTVBRXzEwID0gUTEwLjJfMSwgTk1QUV8xMSA9IFExMC4yXzIsIE5NUFFfMTIgPSBRMTAuMl8zLCBOTVBRXzEzID0gUTEwLjJfNCwgTk1QUV8xNCA9IFExMC4yXzUsIE5NUFFfMTUgPSBRMTAuMl82LCBOTVBRXzE2ID0gUTEwLjJfNywgTk1QUV8xNyA9IFExMC4yXzgsIE5NUFFfMTggPSBRMTAuMl85LCBOTVBRXzE5ID0gUTEwLjJfMTAsIE5NUFFfMjAgPSBRMTAuMl8xMSwgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgU1JTIC0tIHByZWRpY3RvciAtIG5vIHN1YnNjYWxlcwogICAgICAgICAgICAgICAgIyByZXYgY29kZWQgPSA1LCA3LCA5CiAgICAgICAgICAgICAgICBTUlNfMSA9IFExMS4xXzEsIFNSU18yID0gUTExLjFfMiwgU1JTXzMgPSBRMTEuMV8zLCBTUlNfNCA9IFExMS4xXzQsIFNSU181ID0gUTExLjFfNSwgU1JTXzYgPSBRMTEuMV82LCBTUlNfNyA9IFExMS4xXzcsIFNSU184ID0gUTExLjFfOCwgU1JTXzkgPSBRMTEuMV85LCBTUlNfMTAgPSBRMTEuMV8xMCwgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIFNBRCAtLSBwcmVkaWN0b3IgLSA0IHN1YnNjYWxlcyBiYXNlZCBvbiBSdWl6IFBhcmRvICYgTWluZGEsIDIwMjEKICAgICAgICAgICAgICAgICMgZGVwZW5kZW5jZSAoMS0zKSwgYWNjZXNzaWJpbGl0eSAoNS03KSwgZW1vdGlvbmFsIGF0dGFjaG1lbnQgKDgtMTEpLCBkaXN0cmFjdGliaWxpdHkgKDEyLTEzKQogICAgICAgICAgICAgICAgU0FEX2RlcF8xID0gUTEyLjFfMSwgU0FEX2RlcF8yID0gUTEyLjFfMiwgU0FEX2RlcF8zID0gUTEyLjFfMywgU0FEXzQgPSBRMTIuMV80LCBTQURfYWNjZXNzXzUgPSBRMTIuMV81LCBTQURfYWNjZXNzXzYgPSBRMTIuMV82LCBTQURfYWNjZXNzXzcgPSBRMTIuMV83LCBTQURfZWFfOCA9IFExMi4xXzgsIFNBRF9lYV85ID0gUTEyLjFfOSwgU0FEX2VhXzEwID0gUTEyLjFfMTAsIFNBRF9lYV8xMSA9IFExMi4xXzExLCBTQURfZGlzdF8xMiA9IFExMi4xXzEyLCBTQURfZGlzdF8xMyA9IFExMi4xXzEzLCAKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICMgREFTUy0yMSAtLSBwcmVkaWN0b3IgLSAzIHN1YnNjYWxlcyAKICAgICAgICAgICAgICAgICMgZGVwcmVzc2lvbiAoMywgNSwgMTAsIDEzLCAxNiwgMTcsIDIxKSwgYW54aWV0eSAoMiwgNCwgNywgOSwgMTUsIDE5LCAyMCksIHN0cmVzcyAoMSwgNiwgOCwgMTEsIDEyLCAxNCwgMTgpCiAgICAgICAgICAgICAgICBEQVNTX0RfMyA9IFExMy4xXzMsIERBU1NfRF81ID0gUTEzLjFfNSwgREFTU19EXzEwID0gUTEzLjFfMTAsIERBU1NfRF8xMyA9IFExMy4xXzEzLCBEQVNTX0RfMTYgPSBRMTMuMV8xNiwgREFTU19EXzE3ID0gUTEzLjFfMTcsIERBU1NfRF8yMSA9IFExMy4xXzIxLCBEQVNTX0FfMiA9IFExMy4xXzIsIERBU1NfQV80ID0gUTEzLjFfNCwgREFTU19BXzcgPSBRMTMuMV83LCBEQVNTX0FfOSA9IFExMy4xXzksIERBU1NfQV8xNSA9IFExMy4xXzE1LCBEQVNTX0FfMTkgPSBRMTMuMV8xOSwgREFTU19BXzIwID0gUTEzLjFfMjAsIERBU1NfU18xID0gUTEzLjFfMSwgREFTU19TXzYgPSBRMTMuMV82LCBEQVNTX1NfOCA9IFExMy4xXzgsIERBU1NfU18xMSA9IFExMy4xXzExLCBEQVNTX1NfMTIgPSBRMTMuMV8xMiwgREFTU19TXzE0ID0gUTEzLjFfMTQsIERBU1NfU18xOCA9IFExMy4xXzE4LAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBCSVMtYnJpZWYgLS0gcHJlZGljdG9yIC0gbm8gc3Vic2NhbGVzCiAgICAgICAgICAgICAgICAjIHJldiBjb2RlZCA9IDEsIDQsIDUsIDYKICAgICAgICAgICAgICAgIEJJU18xID0gUTE0LjFfMSwgQklTXzIgPSBRMTQuMV8yLCBCSVNfMyA9IFExNC4xXzMsIEJJU180ID0gUTE0LjFfNCwgQklTXzUgPSBRMTQuMV81LCBCSVNfNiA9IFExNC4xXzYsIEJJU183ID0gUTE0LjFfNywgQklTXzggPSBRMTQuMV84LAogICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBTU0VJVCAtIHByZWRpY3RvciAtIG5vIHN1YnNjYWxlcwogICAgICAgICAgICAgICAgIyByZXYgY29kZWQgPSA1LCAyOCwgMzMKICAgICAgICAgICAgICAgIFNTRUlUXzEgPSBRMTUuMV8xLCBTU0VJVF8yID0gUTE1LjFfMiwgU1NFSVRfMyA9IFExNS4xXzMsIFNTRUlUXzQgPSBRMTUuMV80LCBTU0VJVF81ID0gUTE1LjFfNSwgU1NFSVRfNiA9IFExNS4xXzYsIFNTRUlUXzcgPSBRMTUuMV83LCBTU0VJVF84ID0gUTE1LjFfOCwgU1NFSVRfOSA9IFExNS4xXzksIFNTRUlUXzEwID0gUTE1LjFfMTAsIFNTRUlUXzExID0gUTE1LjFfMTEsIFNTRUlUXzEyID0gUTE1LjFfMTIsIFNTRUlUXzEzID0gUTE1LjFfMTMsIFNTRUlUXzE0ID0gUTE1LjFfMTQsIFNTRUlUXzE1ID0gUTE1LjFfMTUsIFNTRUlUXzE2ID0gUTE1LjFfMTYsIFNTRUlUXzE3ID0gUTE1LjFfMTcsIFNTRUlUXzE4ID0gUTE1LjFfMTgsIFNTRUlUXzE5ID0gUTE1LjFfMTksIFNTRUlUXzIwID0gUTE1LjFfMjAsIFNTRUlUXzIxID0gUTE1LjFfMjEsIFNTRUlUXzIyID0gUTE1LjFfMjIsIFNTRUlUXzIzID0gUTE1LjFfMjMsIFNTRUlUXzI0ID0gUTE1LjFfMjQsIFNTRUlUXzI1ID0gUTE1LjFfMjUsIFNTRUlUXzI2ID0gUTE1LjFfMjYsIFNTRUlUXzI3ID0gUTE1LjFfMjcsIFNTRUlUXzI4ID0gUTE1LjFfMjgsIFNTRUlUXzI5ID0gUTE1LjFfMjksIFNTRUlUXzMwID0gUTE1LjFfMzAsIFNTRUlUXzMxID0gUTE1LjFfMzEsIFNTRUlUXzMyID0gUTE1LjFfMzIsIFNTRUlUXzMzID0gUTE1LjFfMzMsCiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAjIFJTRVMgLSBwcmVkaWN0b3IgLSBubyBzdWJzY2FsZXMKICAgICAgICAgICAgICAgICMgcmV2IGNvZGVkID0gMywgNSwgOCwgOSwgMTAKICAgICAgICAgICAgICAgIFJTRVNfMSA9IFExNi4xXzEsIFJTRVNfMiA9IFExNi4xXzIsIFJTRVNfMyA9IFExNi4xXzMsIFJTRVNfNCA9IFExNi4xXzQsIFJTRVNfNSA9IFExNi4xXzUsIFJTRVNfNiA9IFExNi4xXzYsIFJTRVNfNyA9IFExNi4xXzcsIFJTRVNfOCA9IFExNi4xXzgsIFJTRVNfOSA9IFExNi4xXzksIFJTRVNfMTAgPSBRMTYuMV8xMCwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBJUElQLU5FTy02MCAtIHByZWRpY3RvciAtIDUgc3Vic2NhbGVzCiAgICAgICAgICAgICAgICAjIE5ldXJvdGljaXNtICgxLTEyKSwgRXh0cmF2ZXJzaW9uICgxMy0yNCksIE9wZW5uZXNzICgyNS0zNiksIEFncmVlYWJsZW5lc3MgKDM3LTQ4KSwgQ29uc2NpZW50aW91c25lc3MgKDQ5LTYwKQogICAgICAgICAgICAgICAgIyByZXYgY29kZWQgPSA5LTEyOyAxNjsgMjgsIDMwLTM0bSAzNjsgMzksIDQwLCA0My00NjsgNTIsIDU4LTYwCiAgICAgICAgICAgICAgICBORU9fTl8xID0gUTE3LjFfMSwgTkVPX05fMiA9IFExNy4xXzIsIE5FT19OXzMgPSBRMTcuMV8zLCBORU9fTl80ID0gUTE3LjFfNCwgTkVPX05fNSA9IFExNy4xXzUsIE5FT19OXzYgPSBRMTcuMV82LCBORU9fTl83ID0gUTE3LjFfNywgTkVPX05fOCA9IFExNy4xXzgsIE5FT19OXzkgPSBRMTcuMV85LCBORU9fTl8xMCA9IFExNy4xXzEwLCBORU9fTl8xMSA9IFExNy4xXzExLCBORU9fTl8xMiA9IFExNy4xXzEyLCBORU9fRV8xMyA9IFExNy4xXzEzLCBORU9fRV8xNCA9IFExNy4xXzE0LCBORU9fRV8xNSA9IFExNy4xXzE1LCBORU9fRV8xNiA9IFExNy4xXzE2LCBORU9fRV8xNyA9IFExNy4xXzE3LCBORU9fRV8xOCA9IFExNy4xXzE4LCBORU9fRV8xOSA9IFExNy4xXzE5LCBORU9fRV8yMCA9IFExNy4xXzIwLCBORU9fRV8yMSA9IFExNy4xXzIxLCBORU9fRV8yMiA9IFExNy4xXzIyLCBORU9fRV8yMyA9IFExNy4xXzIzLCBORU9fRV8yNCA9IFExNy4xXzI0LCBORU9fT18yNSA9IFExNy4xXzI1LCBORU9fT18yNiA9IFExNy4xXzI2LCBORU9fT18yNyA9IFExNy4xXzI3LCBORU9fT18yOCA9IFExNy4xXzI4LCBORU9fT18yOSA9IFExNy4xXzI5LCBORU9fT18zMCA9IFExNy4xXzMwLCBORU9fT18zMSA9IFExNy4xXzMxLCBORU9fT18zMiA9IFExNy4xXzMyLCBORU9fT18zMyA9IFExNy4xXzMzLCBORU9fT18zNCA9IFExNy4xXzM0LCBORU9fT18zNSA9IFExNy4xXzM1LCBORU9fT18zNiA9IFExNy4xXzM2LCBORU9fQV8zNyA9IFExNy4xXzM3LCBORU9fQV8zOCA9IFExNy4xXzM4LCBORU9fQV8zOSA9IFExNy4xXzM5LCBORU9fQV80MCA9IFExNy4xXzQwLCBORU9fQV80MSA9IFExNy4xXzQxLCBORU9fQV80MiA9IFExNy4xXzQyLCBORU9fQV80MyA9IFExNy4xXzQzLCBORU9fQV80NCA9IFExNy4xXzQ0LCBORU9fQV80NSA9IFExNy4xXzQ1LCBORU9fQV80NiA9IFExNy4xXzQ2LCBORU9fQV80NyA9IFExNy4xXzQ3LCBORU9fQV80OCA9IFExNy4xXzQ4LCBORU9fQ180OSA9IFExNy4xXzQ5LCBORU9fQ181MCA9IFExNy4xXzUwLCBORU9fQ181MSA9IFExNy4xXzUxLCBORU9fQ181MiA9IFExNy4xXzUyLCBORU9fQ181MyA9IFExNy4xXzUzLCBORU9fQ181NCA9IFExNy4xXzU0LCBORU9fQ181NSA9IFExNy4xXzU1LCBORU9fQ181NiA9IFExNy4xXzU2LCBORU9fQ181NyA9IFExNy4xXzU3LCBORU9fQ181OCA9IFExNy4xXzU4LCBORU9fQ181OSA9IFExNy4xXzU5LCBORU9fQ182MCA9IFExNy4xXzYwCiAgICAgICAgICAgICAgICApICU+JSAKICAKIyByZXBsYWNlIHVuY2xlYXIvaW5hcHByb3ByaWF0ZSByZXNwb25zZXMKICAjIHJlbW92ZSBub24tbnVtZXJpYyByZXNwb25zZXMgdG8gImFnZV9maXJzdF9waG9uZSIKICAgICMgdGhpcyB3aWxsIGZvcmNlIGFsbCBub24tbnVtZXJpYyB2YWx1ZSB0byAiTkEiCiAgbXV0YXRlKGFnZV9maXJzdF9waG9uZSA9IGFzLm51bWVyaWMoYWdlX2ZpcnN0X3Bob25lKSkgJT4lIAogIAogICMgY2hhbmdlIHZhcmlhYmxlcyB0byBudW1lcmljIG9yIGZhY3RvciBhcyBuZWVkZWQKICAjIGRlbW9ncmFwaGljIHFzCiAgbXV0YXRlKGFnZSA9IGFzLm51bWVyaWMoYWdlKSwgYWdlID0gYXMubnVtZXJpYyhhZ2UpLCBnZW5kZXIgPSBmYWN0b3IoZ2VuZGVyLCBsZXZlbHMgPSBjKDE6NCksIGxhYmVscyA9IGMoIk1hbGUiLCAiRmVtYWxlIiwgIk90aGVyIiwgIlByZWZlciBub3QgdG8gc2F5IikpLCBsYW5nID0gZmFjdG9yKGxhbmcsIGxldmVscyA9IGMoMToyKSwgbGFiZWxzID0gYygiRW5nbGlzaCIsICJPdGhlciIpKSwgcHJvZiA9IGZhY3Rvcihwcm9mLCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoIkxvdyIsICJNb2RlcmF0ZSIsICJIaWdoIikpLCBsaXZlID0gZmFjdG9yKGxpdmUsIGxldmVscyA9IGMoMToxMSksIGxhYmVscyA9IGMoIk5vcnRoIEFtZXJpY2EiLCAiQ2VudHJhbCBBbWVyaWNhIiwgIlNvdXRoIEFtZXJpY2EiLCAiRXVyb3BlIiwgIkFmcmljYSIsICJBc2lhIiwgIkF1c3RyYWxpYSIsICJQYWNpZmljIElzbGFuZGVyIiwgIkNhcmliYmVhbiBJc2xhbmRzIiwgIk90aGVyIiwgIlByZWZlciBub3QgdG8gc2F5IikpLCBlZHUgPSBmYWN0b3IoZWR1LCBsZXZlbHMgPSBjKDE6OSksIGxhYmVscyA9IGMoInNvbWUgaGlnaCBzY2hvb2wiLCAiaGlnaCBzY2hvb2wgb3IgZXF1aXZhbGVudCIsICJzb21lIGNvbGxlZ2UsIG5vIGRlZ3JlZSIsICJhc3NvY2lhdGUgZGVncmVlIiwgImJhY2hlbG9y4oCZcyBkZWdyZWUiLCAibWFzdGVy4oCZcyBkZWdyZWUiLCAicHJvZmVzc2lvbmFsIGRlZ3JlZSIsICJkb2N0b3JhdGUgb3IgaGlnaGVyIiwgIlByZWZlciBub3QgdG8gc2F5IikpLCAKICAgICAgICAgCiAgICAgICAgICMgZW1wbG95ID0gZmFjdG9yKGVtcGxveSwgbGV2ZWxzID0gYygxOjgpLCBsYWJlbHMgPSBjKCJmdWxsLXRpbWUiLCAicGF0dC10aW1lIiwgInNlbGYtZW1wbG95ZWQiLCAidW5lbXBsb3llZCIsICJzdHVkZW50IiwgInJldGlyZWQiLCAidW5hYmxlIHRvIHdvcmsiLCAiUHJlZmVyIG5vdCB0byBzYXkiKSksIGluZHVzdHJ5ID0gZmFjdG9yKGluZHVzdHJ5LCBsZXZlbHMgPSBjKDE6MTYpLCBsYWJlbHMgPSBjKCJzdHVkZW50IiwgImdvb2RzLXByb2R1Y2luZyBzZWN0b3IiLCAidXRpbGl0aWVzIiwgImNvbnN0cnVjdGlvbiIsICJtYW51ZmFjdHVyaW5nIiwgInNlcnZpY2VzLXByb2R1Y2luZyBzZWN0b3IiLCAiZmluYW5jZSwgaW5zdXJhbmNlLCByZWFsIGVzdGF0ZSwgcmVudGFsIGFuZCBsZWFzaW5nIiwgInByb2Zlc3Npb25hbCwgc2NpZW50aWZpYyBhbmQgdGVjaG5pY2FsIHNlcnZpY2VzIiwgImJ1c2luZXNzLCBidWlsZGluZyBhbmQgb3RoZXIgc3VwcG9ydCBzZXJ2aWNlcyIsICJlZHVjYXRpb25hbCBzZXJ2aWNlcyIsICJoZWFsdGggY2FyZSBhbmQgc29jaWFsIGFzc2lzdGFuY2UiLCAiaW5mb3JtYXRpb24sIGN1bHR1cmUgYW5kIHJlY3JlYXRpb24iLCAiYWNjb21tb2RhdGlvbiBhbmQgZm9vZCBzZXJ2aWNlcyIsICJwdWJsaWMgYWRtaW5pc3RyYXRpb24iLCAib3RoZXIiLCAiZG9lcyBub3QgYXBwbHkgdG8gbWUiKSksIAoKICAjIHBob25lIHVzZSAtLSBnZW5lcmFsICAgICAgICAgCnBob25lX2Zvcl93b3JrID0gZmFjdG9yKHBob25lX2Zvcl93b3JrLCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoInllcyIsICJubyIsICJkb2VzIG5vdCBhcHBseSB0byBtZSIpKSwgc3BlY2lmaWNfYXBwID0gZmFjdG9yKHNwZWNpZmljX2FwcCwgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJ5ZXMiLCAibm8iLCAiZG9lcyBub3QgYXBwbHkgdG8gbWUiKSksIGFwcF9tb3N0X3VzZWQgPSBmYWN0b3IoYXBwX21vc3RfdXNlZCwgbGV2ZWxzID0gYygxOjUpLCBsYWJlbHMgPSBjKCJHYW1lcyIsICJTb2NpYWwgTmV0d29ya2luZyIsICJFbnRlcnRhaW5tZW50IiwgIkJ1c2luZXNzL1Byb2R1Y3Rpdml0eSIsICJPdGhlciIpKSwgCgogICMgcGhvbmUgdXNlIC0tIGlwaG9uZSAvIFNUCmlwaG9uZSA9IGZhY3RvcihpcGhvbmUsIGxldmVscyA9IGMoMToyKSwgbGFiZWxzID0gYygieWVzIiwgIm5vIikpLCBTVCA9IGZhY3RvcihTVCwgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJoYWQgU1QiLCAiU1QgbmV3IiwgIm5vIFNUIikpLCBTVF9hcHBfbW9zdF91c2VkID0gZmFjdG9yKFNUX2FwcF9tb3N0X3VzZWQsIGxldmVscyA9IGMoMTo1KSwgbGFiZWxzID0gYygiR2FtZXMiLCAiU29jaWFsIE5ldHdvcmtpbmciLCAiRW50ZXJ0YWlubWVudCIsICJCdXNpbmVzcy9Qcm9kdWN0aXZpdHkiLCAiT3RoZXIiKSksIFNUX2FwcF90ZXh0X21lc3MgPSBhcy5udW1lcmljKFNUX2FwcF90ZXh0X21lc3MpLCBTVF93ZWVrbHlfdG90X2hvdXJzID0gYXMubnVtZXJpYyhTVF93ZWVrbHlfdG90X2hvdXJzKSwgIFNUX2RhaWx5X3BpY2t1cHMgPSBhcy5udW1lcmljKFNUX2RhaWx5X3BpY2t1cHMpLCBTVF9kYWlseV9ub3QgPSBhcy5udW1lcmljKFNUX2RhaWx5X25vdCksIAoKICAjIGNvbWZvcnQgbGV2ZWwgcXMKY29tX2dlbiA9IGFzLm51bWVyaWMoY29tX2dlbiksIGNvbV91bmF0dGVuZGVkID0gYXMubnVtZXJpYyhjb21fdW5hdHRlbmRlZCksIGNvbV9sZWF2ZV93aXRoX290aGVycyA9IGFzLm51bWVyaWMoY29tX2xlYXZlX3dpdGhfb3RoZXJzKSwgY29tX2xvY2tlZCA9IGFzLm51bWVyaWMoY29tX2xvY2tlZCksIGNvbV9yb29tX3Rhc2sgPSBhcy5udW1lcmljKGNvbV9yb29tX3Rhc2spLAogICMgcHJpdmFjeSBxcwpwYXNzY29kZSA9IGZhY3RvcihwYXNzY29kZSwgbGV2ZWxzID0gYygxOjIpLCBsYWJlbHMgPSBjKCJ5ZXMiLCAibm8iKSksIHBhc3Njb2RlX290aGVycyA9IGZhY3RvcihwYXNzY29kZV9vdGhlcnMsIGxldmVscyA9IGMoMToyKSwgbGFiZWxzID0gYygieWVzIiwgIm5vIikpLCBwYXNzY29kZV9yZWxhdGlvbiA9IGZhY3RvcihwYXNzY29kZV9yZWxhdGlvbiwgbGV2ZWxzID0gYygxOjcpLCBsYWJlbHMgPSBjKCJwYXJlbnRzIiwgIm90aGVyIGZhbWlseSIsICJzaWduaWZpY2FudCBvdGhlciIsICJmcmllbmRzIiwgImNvLXdvcmtlciAvIHN1cGVydmlzb3IiLCAib3RoZXIiLCAiRE5BIikpLCBvdGhlcl91c2UgPSBmYWN0b3Iob3RoZXJfdXNlLCBsZXZlbHMgPSBjKDE6NCksIGxhYmVscyA9IGMoIlllcywgb25seSBpbiBteSBwcmVzZW5jZS4iLCAiWWVzLCBkZXBlbmRpbmcgb24gdGhlIGluZGl2aWR1YWwgYW5kIG9ubHkgaW4gbXkgcHJlc2VuY2UuIiwgIlllcywgZGVwZW5kaW5nIG9uIHRoZSBpbmRpdmlkdWFsIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGluIG15IHByZXNlbmNlLiIsICJObyIpKSwgb3RoZXJfcm9vbSA9IGZhY3RvcihvdGhlcl9yb29tLCBsZXZlbHMgPSBjKDE6MiksIGxhYmVscyA9IGMoInllcyIsICJubyIpKSwgCgogICMgZHVzdHJhY3Rpb24gcXMKZGlzdF9kYWlseSA9IGFzLm51bWVyaWMoZGlzdF9kYWlseSksIGRpc3Rfc3R1ZHkgPSBhcy5udW1lcmljKGRpc3Rfc3R1ZHkpLCBkaXN0X2RldmljZSA9IGZhY3RvcihkaXN0X2RldmljZSwgbGV2ZWxzID0gYygxOjUpLCBsYWJlbHMgPSBjKCJDb21wdXRlciIsICJQaG9uZSIsICJpUGFkL1RhYmxldCIsICJTbWFydHdhdGNoIiwgIk90aGVyIikpLCBkaXN0X2RldmljZV9zdHVkeXdvcmsgPSBmYWN0b3IoZGlzdF9kZXZpY2Vfc3R1ZHl3b3JrLCBsZXZlbHMgPSBjKDE6NSksIGxhYmVscyA9IGMoIkNvbXB1dGVyIiwgIlBob25lIiwgImlQYWQvVGFibGV0IiwgIlNtYXJ0d2F0Y2giLCAiT3RoZXIiKSksIGRpc3RfZGV2aWNlX3NvY2lhbCA9IGZhY3RvcihkaXN0X2RldmljZV9zb2NpYWwsIGxldmVscyA9IGMoMTo1KSwgbGFiZWxzID0gYygiQ29tcHV0ZXIiLCAiUGhvbmUiLCAiaVBhZC9UYWJsZXQiLCAiU21hcnR3YXRjaCIsICJPdGhlciIpKSwgCgogICMgbG9jYXRpb24gJiBwb3dlciBxdWVzdGlvbnMKcG93X25vdF91c2luZyA9IGFzLm51bWVyaWMocG93X25vdF91c2luZyksIHBvd19ub3RpZmljYXRpb25zX29uID0gYXMubnVtZXJpYyhwb3dfbm90aWZpY2F0aW9uc19vbiksIHBvd192aWJyYXRlID0gYXMubnVtZXJpYyhwb3dfdmlicmF0ZSksIHBvd19zdHVkeSA9IGFzLm51bWVyaWMocG93X3N0dWR5KSwgcG93X2V4YW0gPSBhcy5udW1lcmljKHBvd19leGFtKSwgcG93X2xlYyA9IGFzLm51bWVyaWMocG93X2xlYyksIHBvd193b3JrID0gYXMubnVtZXJpYyhwb3dfd29yayksIHBvd19tZWV0aW5nID0gYXMubnVtZXJpYyhwb3dfbWVldGluZyksIHBvd19zbGVlcCA9IGFzLm51bWVyaWMocG93X3NsZWVwKSwgbG9jX3R5cGljYWwgPSBmYWN0b3IobG9jX3R5cGljYWwsIGxldmVscyA9IGMoMTozKSwgbGFiZWxzID0gYygiT24gbXkgZGVzayIsICJJbiBteSBwb2NrZXQgb3IgYmFnIiwgIkluIGFub3RoZXIgcm9vbSIpKSwgbG9jX3N0dWR5ID0gZmFjdG9yKGxvY19zdHVkeSwgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJPbiBteSBkZXNrIiwgIkluIG15IHBvY2tldCBvciBiYWciLCAiSW4gYW5vdGhlciByb29tIikpLCBsb2NfZXhhbSA9IGZhY3Rvcihsb2NfZXhhbSwgbGV2ZWxzID0gYygxOjMpLCBsYWJlbHMgPSBjKCJPbiBteSBkZXNrIiwgIkluIG15IHBvY2tldCBvciBiYWciLCAiSW4gYW5vdGhlciByb29tIikpLCBsb2NfbGVjID0gZmFjdG9yKGxvY19sZWMsIGxldmVscyA9IGMoMTozKSwgbGFiZWxzID0gYygiT24gbXkgZGVzayIsICJJbiBteSBwb2NrZXQgb3IgYmFnIiwgIkluIGFub3RoZXIgcm9vbSIpKSwgbG9jX3dvcmsgPSBmYWN0b3IobG9jX3dvcmssIGxldmVscyA9IGMoMTozKSwgbGFiZWxzID0gYygiT24gbXkgZGVzayIsICJJbiBteSBwb2NrZXQgb3IgYmFnIiwgIkluIGFub3RoZXIgcm9vbSIpKSwgbG9jX21lZXRpbmcgPSBmYWN0b3IobG9jX21lZXRpbmcsIGxldmVscyA9IGMoMTozKSwgbGFiZWxzID0gYygiT24gbXkgZGVzayIsICJJbiBteSBwb2NrZXQgb3IgYmFnIiwgIkluIGFub3RoZXIgcm9vbSIpKSwgbG9jX3NvY2lhbCA9IGZhY3Rvcihsb2Nfc29jaWFsLCBsZXZlbHMgPSBjKDE6MyksIGxhYmVscyA9IGMoIk9uIG15IGRlc2siLCAiSW4gbXkgcG9ja2V0IG9yIGJhZyIsICJJbiBhbm90aGVyIHJvb20iKSksIAoKICAjIGV4cGxvcmF0b3J5IHFzCmNvbW11bmljYXRlID0gZmFjdG9yKGNvbW11bmljYXRlLCBsZXZlbHMgPSBjKDE6NCksIGxhYmVscyA9IGMoIkZhbWlseSIsICJGcmllbmRzIiwgIldvcmsiLCAiT3RoZXIiKSksIHBob25lX3VzZSA9IGZhY3RvcihwaG9uZV91c2UsIGxldmVscyA9IGMoMTo1KSwgbGFiZWxzID0gYygiQ2FsbGluZy9UZXh0aW5nIiwgIlNvY2lhbCBNZWRpYSIsICJHYW1lcyIsICJFbWFpbCIsICJPdGhlciIpKSwgcGhvbmVfdmFsdWUgPSBmYWN0b3IocGhvbmVfdmFsdWUsIGxldmVscyA9IGMoMTo0KSwgbGFiZWxzID0gYygiJDAtJDIwIiwgIiQyMS0kNDAiLCAiJDQxLSQ2MCIsICI+JDYwIikpLCBwaGFudG9tID0gZmFjdG9yKHBoYW50b20sIGxldmVscyA9IGMoMToyKSwgbGFiZWxzID0gYygieWVzIiwgIm5vIikpLCAKICAgICAgICAgKSAlPiUgCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoImVtcGxveV8iKSksZnVucyhhcy5udW1lcmljKSkgJT4lIAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJpbmR1c3RyeV8iKSksZnVucyhhcy5udW1lcmljKSkgJT4lIAogIAogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJOTVBRIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiU1JTIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiU0FEIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiREFTUyIpKSxmdW5zKGFzLm51bWVyaWMpKSAlPiUgCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIkJJUyIpKSxmdW5zKGFzLm51bWVyaWMpKSAlPiUgCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIlNTRUlUIikpLGZ1bnMoYXMubnVtZXJpYykpICU+JSAKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiUlNFUyIpKSxmdW5zKGFzLm51bWVyaWMpKSAlPiUgCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoIk5FTyIpKSxmdW5zKGFzLm51bWVyaWMpKSAlPiUgCiAgCiAgIyByZXZlcnNlIGNvZGUgaXRlbXMuLi4KICAgICMgdGhpcyBSRVBMQUNFUyBvcmlnaW5hbCBpdGVtcyB3aXRoIG5ldyByZXZlcnNlLWNvZGVkIHZhbHVlcwogICAgIyB0aGUgc3VidHJhY3Rpb24gaXMgbWFkZSBiYXNlZCBvbiB0aGUgbGlrZXJ0IHNjYWxlCiAgICAgICMgc28gaWYgdGhlIHNjYWxlIGlzIDEtNCwgdGhlbiBpdCBzaG91bGQgYmUgNS1zY29yZQogICMgZm9yIFNSUzogNSwgNywgOQogIG11dGF0ZShTUlNfNSA9IDUtU1JTXzUpICU+JSAKICBtdXRhdGUoU1JTXzcgPSA1LVNSU183KSAlPiUgCiAgbXV0YXRlKFNSU185ID0gNS1TUlNfOSkgJT4lIAogICMgZm9yIEJJUzogMSwgNCwgNSwgNgogIG11dGF0ZShCSVNfMSA9IDUtQklTXzEpICU+JSAKICBtdXRhdGUoQklTXzQgPSA1LUJJU180KSAlPiUgCiAgbXV0YXRlKEJJU181ID0gNS1CSVNfNSkgJT4lIAogIG11dGF0ZShCSVNfNiA9IDUtQklTXzYpICU+JSAKICAjIGZvciBTU0VJVDogNSwgMjgsIDMzCiAgbXV0YXRlKFNTRUlUXzUgPSA2LVNTRUlUXzUpICU+JSAKICBtdXRhdGUoU1NFSVRfMjggPSA2LVNTRUlUXzI4KSAlPiUgCiAgbXV0YXRlKFNTRUlUXzMzID0gNi1TU0VJVF8zMykgJT4lIAogICMgZm9yIFJTRVM6IDMsIDUsIDgsIDksIDEwCiAgbXV0YXRlKFJTRVNfMyA9IDUtUlNFU18zKSAlPiUgCiAgbXV0YXRlKFJTRVNfNSA9IDUtUlNFU181KSAlPiUgCiAgbXV0YXRlKFJTRVNfOCA9IDUtUlNFU184KSAlPiUgCiAgbXV0YXRlKFJTRVNfOSA9IDUtUlNFU185KSAlPiUgCiAgbXV0YXRlKFJTRVNfMTAgPSA1LVJTRVNfMTApICU+JSAKICAjIGZvciBORU86IDktMTI7IDE2OyAyOCwgMzAtMzQsIDM2OyAzOSwgNDAsIDQzLTQ2OyA1MiwgNTgtNjAKICBtdXRhdGUoTkVPX05fOSA9IDYtTkVPX05fOSkgJT4lIAogIG11dGF0ZShORU9fTl8xMCA9IDYtTkVPX05fMTApICU+JSAKICBtdXRhdGUoTkVPX05fMTEgPSA2LU5FT19OXzExKSAlPiUgCiAgbXV0YXRlKE5FT19OXzEyID0gNi1ORU9fTl8xMikgJT4lIAogIAogIG11dGF0ZShORU9fRV8xNiA9IDYtTkVPX0VfMTYpICU+JSAKICAKICBtdXRhdGUoTkVPX09fMjggPSA2LU5FT19PXzI4KSAlPiUgCiAgbXV0YXRlKE5FT19PXzMwID0gNi1ORU9fT18zMCkgJT4lIAogIG11dGF0ZShORU9fT18zMSA9IDYtTkVPX09fMzEpICU+JSAKICBtdXRhdGUoTkVPX09fMzIgPSA2LU5FT19PXzMyKSAlPiUgCiAgbXV0YXRlKE5FT19PXzMzID0gNi1ORU9fT18zMykgJT4lIAogIG11dGF0ZShORU9fT18zNCA9IDYtTkVPX09fMzQpICU+JSAKICBtdXRhdGUoTkVPX09fMzYgPSA2LU5FT19PXzM2KSAlPiUgCiAgCiAgbXV0YXRlKE5FT19BXzM5ID0gNi1ORU9fQV8zOSkgJT4lIAogIG11dGF0ZShORU9fQV80MCA9IDYtTkVPX0FfNDApICU+JSAKICBtdXRhdGUoTkVPX0FfNDMgPSA2LU5FT19BXzQzKSAlPiUgCiAgbXV0YXRlKE5FT19BXzQ0ID0gNi1ORU9fQV80NCkgJT4lIAogIG11dGF0ZShORU9fQV80NSA9IDYtTkVPX0FfNDUpICU+JSAKICBtdXRhdGUoTkVPX0FfNDYgPSA2LU5FT19BXzQ2KSAlPiUgCiAgCiAgbXV0YXRlKE5FT19DXzUyID0gNi1ORU9fQ181MikgJT4lIAogIG11dGF0ZShORU9fQ181OCA9IDYtTkVPX0NfNTgpICU+JSAKICBtdXRhdGUoTkVPX0NfNTkgPSA2LU5FT19DXzU5KSAlPiUgCiAgbXV0YXRlKE5FT19DXzYwID0gNi1ORU9fQ182MCkgJT4lIAogIAogICMgYWRkIHNjb3JlcyBmb3IgZWFjaCBxdWVzdGlvbm5haXJlLi4uIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTQURfc2NvcmUgPSBzdW0oY19hY3Jvc3MoU0FEXzE6U0FEXzEzKSkpCiAgIyBmb3IgZWFjaCBwLi4uLgogICMgZ2V0IE5NUFEgc2NvcmUgLS0gU1VNCiAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKE5NUFFfc3VtID0gc3VtKGNfYWNyb3NzKE5NUFFfMTpOTVBRXzIwKSkpICU+JSAKICAKICAjIGdldCBTUlMgc2NvcmUgLS0gU1VNCiAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKFNSU19zdW0gPSBzdW0oY19hY3Jvc3MoU1JTXzE6U1JTXzEwKSkpICU+JSAKICAKICAjIGdldCBTQUQgc2NvcmUgLS0gU1VNCiAgICAjIG92ZXJhbGwgKDEtMTMpCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoU0FEX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiU0FEIikpKSkgJT4lCiAgICAjIGRlcGVuZGVuY3kgKDEtMykKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShTQURfZGVwX3N1bSA9IHN1bShjX2Fjcm9zcyhTQURfZGVwXzE6U0FEX2RlcF8zKSkpICU+JQogICAgIyBhY2Nlc3NpYmlsaXR5ICg1LTcpCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoU0FEX2FjY2Vzc19zdW0gPSBzdW0oY19hY3Jvc3MoU0FEX2FjY2Vzc181OlNBRF9hY2Nlc3NfNykpKSAlPiUKICAgICMgZW1vdGlvbmFsIGF0dGFjaG1lbnQgKDgtMTEpCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoU0FEX2VhX3N1bSA9IHN1bShjX2Fjcm9zcyhTQURfZWFfODpTQURfZWFfMTEpKSkgJT4lCiAgICAjIGRpc3RyYWN0aWJpbGl0eSAoMTItMTMpCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoU0FEX2Rpc3Rfc3VtID0gc3VtKGNfYWNyb3NzKFNBRF9kaXN0XzEyOlNBRF9kaXN0XzEzKSkpICU+JQogIAogICMgZ2V0IERBU1Mgc2NvcmUgLS0gU1VNCiAgICAjIGRlcHJlc3Npb24gKDMsIDUsIDEwLCAxMywgMTYsIDE3LCAyMSkKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShEQVNTX0Rfc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJEQVNTX0QiKSkpKSAlPiUgCiAgICAjIGFueGlldHkgKDIsIDQsIDcsIDksIDE1LCAxOSwgMjApCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoREFTU19BX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiREFTU19BIikpKSkgJT4lIAogICAgIyBzdHJlc3MgKDEsIDYsIDgsIDExLCAxMiwgMTQsIDE4KQogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKERBU1NfU19zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIkRBU1NfUyIpKSkpICU+JSAKICAKICAKICAjIGdldCBCSVMgc2NvcmUgLS0gU1VNCiAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKEJJU19zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIkJJUyIpKSkpICU+JSAKICAKICAjIGdldCBTU0VJVCBzY29yZSAtLSBTVU0KICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoU1NFSVRfc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJTU0VJVCIpKSkpICU+JSAKICAKICAjIGdldCBSU0VTIHNjb3JlIC0tIFNVTQogIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShSU0VTX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiUlNFUyIpKSkpICU+JSAKICAKICAjIGdldCBORU8gc2NvcmUgLS0gU1VNCiAgICAjIE5ldXJvdGljaXNtICgxLTEyKSAKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShORU9fTl9zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIk5FT19OIikpKSkgJT4lIAogICAgIyBFeHRyYXZlcnNpb24gKDEzLTI0KQogICAgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKE5FT19FX3N1bSA9IHN1bShjX2Fjcm9zcyhzdGFydHNfd2l0aCgiTkVPX0UiKSkpKSAlPiUgCiAgICAjIE9wZW5uZXNzICgyNS0zNikKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShORU9fT19zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIk5FT19PIikpKSkgJT4lIAogICAgIyBBZ3JlZWFibGVuZXNzICgzNy00OCkKICAgIHJvd3dpc2UoKSAlPiUgZHBseXI6Om11dGF0ZShORU9fQV9zdW0gPSBzdW0oY19hY3Jvc3Moc3RhcnRzX3dpdGgoIk5FT19BIikpKSkgJT4lIAogICAgIyBDb25zY2llbnRpb3VzbmVzcyAoNDktNjApCiAgICByb3d3aXNlKCkgJT4lIGRwbHlyOjptdXRhdGUoTkVPX0Nfc3VtID0gc3VtKGNfYWNyb3NzKHN0YXJ0c193aXRoKCJORU9fQyIpKSkpCiAgCiAgIyBleGFtcGxlIHRvIGdldCBtZWFzbjogZ2V0IE5NUFEgc2NvcmUgLS0gTUVBTgogICMgcm93d2lzZSgpICU+JSBkcGx5cjo6bXV0YXRlKG1lYW4oY19hY3Jvc3MoTk1QUV8xOk5NUFFfMjApKSkgJT4lIAoKIyBleHBvcnQgZmluYWwgZGF0YSBmaWxlCiAgd3JpdGUuY3N2KE10dXJrX2RhdGEsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvTXR1cmtfZGF0YShvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpCmBgYAoKIyBEZXNjcmlwdGl2ZSBTdGF0aXN0aWNzCgojIyBOT01JTkFMIChzdHVkeSAxICYgc3R1ZHkgMikKCiMjIyBEZW1vZ3JhcGhpYyAmIFR5cGljYWwgU21hcnRwaG9uZSBVc2UKCmBgYHtyfQoKIyBvdXRwdXQgaXMgYSBsaXN0IG9mIHRpYmJsZXMsIGVhY2ggd2l0aDogJHh4eCA9IHZhciBuYW1lLCB4ID0gbGV2ZWwocyksIG4gPSBjb3VudCwgcGN0ID0gcGVyY2VudGFnZQoKIyMgRk9SIFNPTkEgREFUQQpzb25hX25vbV9kZW1vIDwtIAogIFNPTkFfZGF0YSAlPiUgCiAgIyBnZXQgc3Vic2V0IG9mIGRhdGEgd2l0aCBvbmx5IG5vbWluYWwgdmFycwogIHNlbGVjdChnZW5kZXIsIGxhbmcsIHByb2YsIGxpdmUsIGVkdSwgCiAgICAgICAgIHBob25lX2Zvcl93b3JrLCBzcGVjaWZpY19hcHAsIGFwcF9tb3N0X3VzZWQsIGlwaG9uZSwgU1QsIFNUX2FwcF9tb3N0X3VzZWQsIHBhc3Njb2RlLCBwYXNzY29kZV9vdGhlcnMsIHN0YXJ0c193aXRoKCJwYXNzY29kZV9yZWxhdGlvbl8iKSwgb3RoZXJfdXNlLCBvdGhlcl9yb29tLCBkaXN0X2RldmljZSwgZGlzdF9kZXZpY2Vfc3R1ZHl3b3JrLCBkaXN0X2RldmljZV9zb2NpYWwsIGxvY190eXBpY2FsOmxvY19zb2NpYWwsIGNvbW11bmljYXRlLCBwaG9uZV91c2UsIHBob25lX3ZhbHVlLCBwaGFudG9tKSAlPiUgCiAgIyBnZXQgZnJlcSAmIHByb3BvcnRpb24gZm9yIGVhY2ggdmFyCiAgcHVycnI6Om1hcCh+IGNvdW50KHRpYmJsZSh4ID0gLngpLCB4KSAlPiUgCiAgICAgICAgICAgICAgIG11dGF0ZShwY3QgPSAobiAvIHN1bShuKSAqIDEwMCkpKQoKIyBtYWtlIGxpc3QgaW50byAxIGxvbmcgZGF0YSBmcmFtZSB0byBzaG93IGFzIHRhYmxlLi4uCnNvbmFfbm9tX2RlbW9fdCA8LSAKICAjIHRoaXMga2VlcHMgdGhlIHZhciBuYW1lIGluIHRoZSAxc3QgY29sdW1uICh1c2luZy0tIC5pZCA9ICJ0aWIiKQogIG1hcF9kZnIoc29uYV9ub21fZGVtbywgYmluZF9yb3dzLCAuaWQgPSAidGliIikKCiMgZm9yIHRoZSBlbXBsb3kgYW5kIGluZHVzdHJ5IGNvdW50cwogICMgZW1wbG95CiAgc29uYV9ub21fZGVtb19lbXBsb3kgPC0gCiAgICBTT05BX2RhdGEgJT4lIAogICAgc2VsZWN0KHN0YXJ0c193aXRoKCJlbXBsb3lfIikpICU+JSAKICAgIHB1cnJyOjptYXAofiBjb3VudCh0aWJibGUoeCA9IC54KSwgeCkgJT4lIAogICAgICAgICAgICAgICAgIG11dGF0ZShwY3QgPSAobiAvIHN1bShuKSAqIDEwMCkpKQogIAogIHNvbmFfbm9tX2RlbW9fZW1wbG95X3QgPC0gCiAgICAjIHRoaXMga2VlcHMgdGhlIHZhciBuYW1lIGluIHRoZSAxc3QgY29sdW1uICh1c2luZy0tIC5pZCA9ICJ0aWIiKQogICAgbWFwX2Rmcihzb25hX25vbV9kZW1vX2VtcGxveSwgYmluZF9yb3dzLCAuaWQgPSAidGliIikKICAjaW5kdXN0cnkKICBzb25hX25vbV9kZW1vX2luZHVzdHJ5IDwtIAogICAgU09OQV9kYXRhICU+JSAKICAgIHNlbGVjdChzdGFydHNfd2l0aCgiaW5kdXN0cnlfIikpICU+JSAKICAgIHB1cnJyOjptYXAofiBjb3VudCh0aWJibGUoeCA9IC54KSwgeCkgJT4lIAogICAgICAgICAgICAgICAgIG11dGF0ZShwY3QgPSAobiAvIHN1bShuKSAqIDEwMCkpKQogIAogIHNvbmFfbm9tX2RlbW9faW5kdXN0cnlfdCA8LSAKICAgICMgdGhpcyBrZWVwcyB0aGUgdmFyIG5hbWUgaW4gdGhlIDFzdCBjb2x1bW4gKHVzaW5nLS0gLmlkID0gInRpYiIpCiAgICBtYXBfZGZyKHNvbmFfbm9tX2RlbW9faW5kdXN0cnksIGJpbmRfcm93cywgLmlkID0gInRpYiIpCgojIyBGT1IgTVRVUksgREFUQQptdHVya19ub21fZGVtbyA8LSAKICBNdHVya19kYXRhICU+JSAKICAjIGdldCBzdWJzZXQgb2YgZGF0YSB3aXRoIG9ubHkgbm9taW5hbCB2YXJzCiAgc2VsZWN0KGdlbmRlciwgbGFuZywgcHJvZiwgbGl2ZSwgZWR1LCAKICAgICAgICAgcGhvbmVfZm9yX3dvcmssIHNwZWNpZmljX2FwcCwgYXBwX21vc3RfdXNlZCwgaXBob25lLCBTVCwgU1RfYXBwX21vc3RfdXNlZCwgcGFzc2NvZGUsIHBhc3Njb2RlX290aGVycywgc3RhcnRzX3dpdGgoInBhc3Njb2RlX3JlbGF0aW9uXyIpLCBvdGhlcl91c2UsIG90aGVyX3Jvb20sIGRpc3RfZGV2aWNlLCBkaXN0X2RldmljZV9zdHVkeXdvcmssIGRpc3RfZGV2aWNlX3NvY2lhbCwgbG9jX3R5cGljYWw6bG9jX3NvY2lhbCwgY29tbXVuaWNhdGUsIHBob25lX3VzZSwgcGhvbmVfdmFsdWUsIHBoYW50b20pICU+JSAKICAjIGdldCBmcmVxICYgcHJvcG9ydGlvbiBmb3IgZWFjaCB2YXIKICBwdXJycjo6bWFwKH4gY291bnQodGliYmxlKHggPSAueCksIHgpICU+JSAKICAgICAgICAgICAgICAgbXV0YXRlKHBjdCA9IChuIC8gc3VtKG4pICogMTAwKSkpCgojIG1ha2UgbGlzdCBpbnRvIDEgbG9uZyBkYXRhIGZyYW1lIHRvIHNob3cgYXMgdGFibGUuLi4KbXR1cmtfbm9tX2RlbW9fdCA8LSAKICAjIHRoaXMga2VlcHMgdGhlIHZhciBuYW1lIGluIHRoZSAxc3QgY29sdW1uICh1c2luZy0tIC5pZCA9ICJ0aWIiKQogIG1hcF9kZnIobXR1cmtfbm9tX2RlbW8sIGJpbmRfcm93cywgLmlkID0gInRpYiIpCgojIGZvciB0aGUgZW1wbG95IGFuZCBpbmR1c3RyeSBjb3VudHMKICAjIGVtcGxveQogIG10dXJrX25vbV9kZW1vX2VtcGxveSA8LSAKICAgIE10dXJrX2RhdGEgJT4lIAogICAgc2VsZWN0KHN0YXJ0c193aXRoKCJlbXBsb3lfIikpICU+JSAKICAgIHB1cnJyOjptYXAofiBjb3VudCh0aWJibGUoeCA9IC54KSwgeCkgJT4lIAogICAgICAgICAgICAgICAgIG11dGF0ZShwY3QgPSAobiAvIHN1bShuKSAqIDEwMCkpKQogIAogIG10dXJrX25vbV9kZW1vX2VtcGxveV90IDwtIAogICAgIyB0aGlzIGtlZXBzIHRoZSB2YXIgbmFtZSBpbiB0aGUgMXN0IGNvbHVtbiAodXNpbmctLSAuaWQgPSAidGliIikKICAgIG1hcF9kZnIobXR1cmtfbm9tX2RlbW9fZW1wbG95LCBiaW5kX3Jvd3MsIC5pZCA9ICJ0aWIiKQogICNpbmR1c3RyeQogIG10dXJrX25vbV9kZW1vX2luZHVzdHJ5IDwtIAogICAgTXR1cmtfZGF0YSAlPiUgCiAgICBzZWxlY3Qoc3RhcnRzX3dpdGgoImluZHVzdHJ5XyIpKSAlPiUgCiAgICBwdXJycjo6bWFwKH4gY291bnQodGliYmxlKHggPSAueCksIHgpICU+JSAKICAgICAgICAgICAgICAgICBtdXRhdGUocGN0ID0gKG4gLyBzdW0obikgKiAxMDApKSkKICAKICBtdHVya19ub21fZGVtb19pbmR1c3RyeV90IDwtIAogICAgIyB0aGlzIGtlZXBzIHRoZSB2YXIgbmFtZSBpbiB0aGUgMXN0IGNvbHVtbiAodXNpbmctLSAuaWQgPSAidGliIikKICAgIG1hcF9kZnIobXR1cmtfbm9tX2RlbW9faW5kdXN0cnksIGJpbmRfcm93cywgLmlkID0gInRpYiIpCmBgYAoKYGBge3J9CiMgU09OQQprYWJsZShzb25hX25vbV9kZW1vX3QsIGNhcHRpb24gPSAiRnJlcXVlbmN5ICYgcGVyY2VudGFnZSBmb3Igbm9taW5hbCB2YXJzIFNUVURZIDEgLSBTT05BLiIsIGFsaWduID0gcmVwKCdjcmNjJyksIGNvbC5uYW1lcyA9IGMoIlZhciIsICJsZXZlbCIgLCJuIiwgIiUiKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKHNvbmFfbm9tX2RlbW9fZW1wbG95X3QsIGNhcHRpb24gPSAiRnJlcXVlbmN5ICYgcGVyY2VudGFnZSBmb3Igbm9taW5hbCB2YXJzIFNUVURZIDEgLSBTT05BKEVtcGxveW1lbnQgU3RhdHVzKS4iLCBhbGlnbiA9IHJlcCgnY3JjYycpLCBjb2wubmFtZXMgPSBjKCJWYXIiLCAibGV2ZWwiICwibiIsICIlIiksIHJvdy5uYW1lcyA9IFRSVUUpICU+JSAKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gInN0cmlwZWQiLCAiaG92ZXIiLCBmdWxsX3dpZHRoID0gRikgJT4lCiAga2FibGVfY2xhc3NpYygpCgprYWJsZShzb25hX25vbV9kZW1vX2luZHVzdHJ5X3QsIGNhcHRpb24gPSAiRnJlcXVlbmN5ICYgcGVyY2VudGFnZSBmb3Igbm9taW5hbCB2YXJzIFNUVURZIDEgLSBTT05BIChJbmR1c3RyeSkuIiwgYWxpZ24gPSByZXAoJ2NyY2MnKSwgY29sLm5hbWVzID0gYygiVmFyIiwgImxldmVsIiAsIm4iLCAiJSIpLCByb3cubmFtZXMgPSBUUlVFKSAlPiUgCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9ICJzdHJpcGVkIiwgImhvdmVyIiwgZnVsbF93aWR0aCA9IEYpICU+JQogIGthYmxlX2NsYXNzaWMoKQoKa2FibGUocGx5cjo6Y291bnQoYXMuZmFjdG9yKFNPTkFfZGF0YSRsYW5nTykpLCBjYXB0aW9uID0gIkZyZXF1ZW5jeSAmIHBlcmNlbnRhZ2UgZm9yIGxhbmd1YWdlIG90aGVyIHZhciBTVFVEWSAxIC0gU09OQS4iLCBhbGlnbiA9IHJlcCgnY3JjYycpLCByb3cubmFtZXMgPSBUUlVFKSAlPiUgCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9ICJzdHJpcGVkIiwgImhvdmVyIiwgZnVsbF93aWR0aCA9IEYpICU+JQogIGthYmxlX2NsYXNzaWMoKQoKCiMgTVRVUksKa2FibGUobXR1cmtfbm9tX2RlbW9fdCwgY2FwdGlvbiA9ICJGcmVxdWVuY3kgJiBwZXJjZW50YWdlIGZvciBub21pbmFsIHZhcnMgU1RVRFkgMiAtIG10dXJrLiIsIGFsaWduID0gcmVwKCdjcmNjJyksIGNvbC5uYW1lcyA9IGMoIlZhciIsICJsZXZlbCIgLCJuIiwgIiUiKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKG10dXJrX25vbV9kZW1vX2VtcGxveV90LCBjYXB0aW9uID0gIkZyZXF1ZW5jeSAmIHBlcmNlbnRhZ2UgZm9yIG5vbWluYWwgdmFycyBTVFVEWSAyIC0gbXR1cmsoRW1wbG95bWVudCBTdGF0dXMpLiIsIGFsaWduID0gcmVwKCdjcmNjJyksIGNvbC5uYW1lcyA9IGMoIlZhciIsICJsZXZlbCIgLCJuIiwgIiUiKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKG10dXJrX25vbV9kZW1vX2luZHVzdHJ5X3QsIGNhcHRpb24gPSAiRnJlcXVlbmN5ICYgcGVyY2VudGFnZSBmb3Igbm9taW5hbCB2YXJzIFNUVURZIDIgLSBtdHVyayAoSW5kdXN0cnkpLiIsIGFsaWduID0gcmVwKCdjcmNjJyksIGNvbC5uYW1lcyA9IGMoIlZhciIsICJsZXZlbCIgLCJuIiwgIiUiKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKHBseXI6OmNvdW50KGFzLmZhY3RvcihNdHVya19kYXRhJGxhbmdPKSksIGNhcHRpb24gPSAiRnJlcXVlbmN5ICYgcGVyY2VudGFnZSBmb3IgbGFuZ3VhZ2Ugb3RoZXIgdmFyIFNUVURZIDIgLSBtdHVyayIsIGFsaWduID0gcmVwKCdjcmNjJyksIHJvdy5uYW1lcyA9IFRSVUUpICU+JSAKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gInN0cmlwZWQiLCAiaG92ZXIiLCBmdWxsX3dpZHRoID0gRikgJT4lCiAga2FibGVfY2xhc3NpYygpCgoKIyBleHBvcnQgdGFibGVzIGFzIGNzdiBmaWxlcwogIHdyaXRlLmNzdihzb25hX25vbV9kZW1vX3QsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvc29uYV9ub21fZGVtb190KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkKICB3cml0ZS5jc3Yoc29uYV9ub21fZGVtb19lbXBsb3lfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX25vbV9kZW1vX2VtcGxveV90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkKICB3cml0ZS5jc3Yoc29uYV9ub21fZGVtb19pbmR1c3RyeV90LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL3NvbmFfbm9tX2RlbW9faW5kdXN0cnlfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpCiAgd3JpdGUuY3N2KHBseXI6OmNvdW50KGFzLmZhY3RvcihTT05BX2RhdGEkbGFuZ08pKSwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX25vbV9kZW1vX2VtcGxveV90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkKCiAgd3JpdGUuY3N2KG10dXJrX25vbV9kZW1vX3QsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvbXR1cmtfbm9tX2RlbW9fdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpCiAgd3JpdGUuY3N2KG10dXJrX25vbV9kZW1vX2VtcGxveV90LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX25vbV9kZW1vX2VtcGxveV90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkKICB3cml0ZS5jc3YobXR1cmtfbm9tX2RlbW9faW5kdXN0cnlfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9tdHVya19ub21fZGVtb19pbmR1c3RyeV90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkKICB3cml0ZS5jc3YocGx5cjo6Y291bnQoYXMuZmFjdG9yKE10dXJrX2RhdGEkbGFuZ08pKSwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9tdHVya19ub21fZGVtb19lbXBsb3lfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpCmBgYAoKIyMjIFF1ZXN0aW9ubmFpcmVzIChsZXZlbHMpCgojIyMjIFRhYmxlcwoKYGBge3J9CgojIG91dHB1dCBpcyBhIGxpc3Qgb2YgdGliYmxlcywgZWFjaCB3aXRoOiAkeHh4ID0gdmFyIG5hbWUsIHggPSBsZXZlbChzKSwgbiA9IGNvdW50LCBwY3QgPSBwZXJjZW50YWdlCgojIyBGT1IgU1RVRFkgMSBEQVRBIC0tIFNPTkEKc29uYV9ub21fcXVlc19hbGwgPC0gCiAgU09OQV9kYXRhICU+JSAKICAjIGdldCBzdWJzZXQgb2YgZGF0YSB3aXRoIG9ubHkgbm9taW5hbCB2YXJzCiAgc2VsZWN0KGVuZHNfd2l0aCgiX3N1bSIpKSAlPiUgCiAgIyBkaXZpZGUgc3VtIHNjb3JlcyBpbnRvIEw+TT5ICiAgICMgZGV0YWlscyBwcm92aWRlZCBmb3IgMXN0IGluc3RhbmNlLi4uIAogIG11dGF0ZShOTVBRX3N1bSA9ICMgbmFtZSBvZiB2YXIsIHRoaXMgcmVwbGFjZXMgZXhpc3RpbmcgYi9jIGl0cyB0aGUgc2FtZQogICAgICAgICAgIGN1dChOTVBRX3N1bSwgIyBzdGF0ZSB2YXIgCiAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoMjAsIDQzLCA2NywgOTEsIDExNSwgMTQwKSwgIyB0aGlzIGlzIHByb3ZpZGluZyBhIHNlcSBmcm9tIDIwID4+IDE0MCwgd2l0aCBicmVha3Mgb2YgNDAgKDQwIGRldCBieSBicmVha2luZyB1cCB0aGUgcmFuZ2UgaW50byAzOiAxNDAtMjAgPSAxMjAsIDEyMC8zID0gNDApCiAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAjIHN0YXRlIHRoZSBuZXcgbGFiZWxzIGZvciB0aGUgbGV2ZWxzCiAgbXV0YXRlKFNBRF9zdW0gPSBjdXQoU0FEX3N1bSwgYnJlYWtzID0gYyg3LCAyMywgNDAsIDU3LCA3NCwgOTEpLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKFNBRF9kZXBfc3VtID0gY3V0KFNBRF9kZXBfc3VtLCBicmVha3MgPSBjKDMsIDYsIDEwLCAxNCwgMTgsIDIxKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShTQURfZWFfc3VtID0gY3V0KFNBRF9lYV9zdW0sIGJyZWFrcyA9IGMoNCwgOCwgMTMsIDE4LCAyMywgMjgpLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKFNBRF9hY2Nlc3Nfc3VtID0gY3V0KFNBRF9hY2Nlc3Nfc3VtLCBicmVha3MgPSBjKDMsIDYsIDEwLCAxNCwgMTgsIDIxKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lCiAgbXV0YXRlKFNBRF9kaXN0X3N1bSA9IGN1dChTQURfZGlzdF9zdW0sIGJyZWFrcyA9IGMoMiwgNCwgNiwgOCwgMTEsIDE0KSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShCSVNfc3VtID0gY3V0KEJJU19zdW0sIGJyZWFrcyA9IGMoOCwgMTIsIDE3LCAyMiwgMjcsIDMyKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShORU9fTl9zdW0gPSBjdXQoTkVPX05fc3VtLCBicmVha3MgPSBjKDEyLCAyMSwgMzEsIDQxLCA1MSwgNjApLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKE5FT19FX3N1bSA9IGN1dChORU9fRV9zdW0sIGJyZWFrcyA9IGMoMTIsIDIxLCAzMSwgNDEsIDUxLCA2MCksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoTkVPX09fc3VtID0gY3V0KE5FT19PX3N1bSwgYnJlYWtzID0gYygxMiwgMjEsIDMxLCA0MSwgNTEsIDYwKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShORU9fQV9zdW0gPSBjdXQoTkVPX0Ffc3VtLCBicmVha3MgPSBjKDEyLCAyMSwgMzEsIDQxLCA1MSwgNjApLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKE5FT19DX3N1bSA9IGN1dChORU9fQ19zdW0sIGJyZWFrcyA9IGMoMTIsIDIxLCAzMSwgNDEsIDUxLCA2MCksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JQogIG11dGF0ZShSU0VTX3N1bSA9IGN1dChSU0VTX3N1bSwgYnJlYWtzID0gYygxMCwgMTUsIDIxLCAyNywgMzMsIDQwKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShTUlNfc3VtID0gY3V0KFNSU19zdW0sIGJyZWFrcyA9IGMoMTAsIDE1LCAyMSwgMjcsIDMzLCA0MCksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoU1NFSVRfc3VtID0gY3V0KFNTRUlUX3N1bSwgYnJlYWtzID0gYygzMywgNTksIDg2LCAxMTMsIDE0MCwgMTY1KSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShEQVNTX0Rfc3VtID0gY3V0KERBU1NfRF9zdW0sIGJyZWFrcyA9IGMoMCwgOSwgMTMsIDIwLCAyNywgNDIpLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKERBU1NfQV9zdW0gPSBjdXQoREFTU19BX3N1bSwgYnJlYWtzID0gYygwLCA3LCA5LCAxNCwgMTksIDQyKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShEQVNTX1Nfc3VtID0gY3V0KERBU1NfU19zdW0sIGJyZWFrcyA9IGMoMCwgMTQsIDE4LCAyNSwgMzMsIDQyKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogICMgbXV0YXRlKERBU1NfRF9zdW0gPSBjdXQoREFTU19EX3N1bSwgYnJlYWtzID0gYygwLCA4LCAxNywgMjYsIDM1LCA0MiksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICAjIG11dGF0ZShEQVNTX0Ffc3VtID0gY3V0KERBU1NfQV9zdW0sIGJyZWFrcyA9IGMoMCwgOCwgMTcsIDI2LCAzNSwgNDIpLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgIyBtdXRhdGUoREFTU19TX3N1bSA9IGN1dChEQVNTX1Nfc3VtLCBicmVha3MgPSBjKDAsIDgsIDE3LCAyNiwgMzUsIDQyKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkKICAjIGdldCBmcmVxICYgcHJvcG9ydGlvbiBmb3IgZWFjaCB2YXIKICBwdXJycjo6bWFwKH4gY291bnQodGliYmxlKHggPSAueCksIHgpICU+JSAKICAgICAgICAgICAgICAgbXV0YXRlKHBjdCA9IChuIC8gc3VtKG4pICogMTAwKSkpCgojIG1ha2UgbGlzdCBpbnRvIDEgbG9uZyBkYXRhIGZyYW1lIHRvIHNob3cgYXMgdGFibGUuLi4Kc29uYV9ub21fcXVlc19hbGxfdCA8LSAKICAjIHRoaXMga2VlcHMgdGhlIHZhciBuYW1lIGluIHRoZSAxc3QgY29sdW1uICh1c2luZy0tIC5pZCA9ICJ0aWIiKQogIG1hcF9kZnIoc29uYV9ub21fcXVlc19hbGwsIGJpbmRfcm93cywgLmlkID0gInRpYiIpCgoKIyMgRk9SIFNUVURZIDIgREFUQSAtLSBNVFVSSwptdHVya19ub21fcXVlc19hbGwgPC0gCiAgTXR1cmtfZGF0YSAlPiUgCiAgIyBnZXQgc3Vic2V0IG9mIGRhdGEgd2l0aCBvbmx5IG5vbWluYWwgdmFycwogIHNlbGVjdChlbmRzX3dpdGgoIl9zdW0iKSkgJT4lIAogICMgZGl2aWRlIHN1bSBzY29yZXMgaW50byBMPk0+SAogICAjIGRldGFpbHMgcHJvdmlkZWQgZm9yIDFzdCBpbnN0YW5jZS4uLiAKICBtdXRhdGUoTk1QUV9zdW0gPSAjIG5hbWUgb2YgdmFyLCB0aGlzIHJlcGxhY2VzIGV4aXN0aW5nIGIvYyBpdHMgdGhlIHNhbWUKICAgICAgICAgICBjdXQoTk1QUV9zdW0sICMgc3RhdGUgdmFyIAogICAgICAgICAgICAgICBicmVha3MgPSBjKDIwLCA0MywgNjcsIDkxLCAxMTUsIDE0MCksICMgdGhpcyBpcyBwcm92aWRpbmcgYSBzZXEgZnJvbSAyMCA+PiAxNDAsIHdpdGggYnJlYWtzIG9mIDQwICg0MCBkZXQgYnkgYnJlYWtpbmcgdXAgdGhlIHJhbmdlIGludG8gMzogMTQwLTIwID0gMTIwLCAxMjAvMyA9IDQwKQogICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgIyBzdGF0ZSB0aGUgbmV3IGxhYmVscyBmb3IgdGhlIGxldmVscwogIG11dGF0ZShTQURfc3VtID0gY3V0KFNBRF9zdW0sIGJyZWFrcyA9IGMoNywgMjMsIDQwLCA1NywgNzQsIDkxKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShTQURfZGVwX3N1bSA9IGN1dChTQURfZGVwX3N1bSwgYnJlYWtzID0gYygzLCA2LCAxMCwgMTQsIDE4LCAyMSksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoU0FEX2VhX3N1bSA9IGN1dChTQURfZWFfc3VtLCBicmVha3MgPSBjKDQsIDgsIDEzLCAxOCwgMjMsIDI4KSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShTQURfYWNjZXNzX3N1bSA9IGN1dChTQURfYWNjZXNzX3N1bSwgYnJlYWtzID0gYygzLCA2LCAxMCwgMTQsIDE4LCAyMSksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JQogIG11dGF0ZShTQURfZGlzdF9zdW0gPSBjdXQoU0FEX2Rpc3Rfc3VtLCBicmVha3MgPSBjKDIsIDQsIDYsIDgsIDExLCAxNCksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoQklTX3N1bSA9IGN1dChCSVNfc3VtLCBicmVha3MgPSBjKDgsIDEyLCAxNywgMjIsIDI3LCAzMiksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoTkVPX05fc3VtID0gY3V0KE5FT19OX3N1bSwgYnJlYWtzID0gYygxMiwgMjEsIDMxLCA0MSwgNTEsIDYwKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShORU9fRV9zdW0gPSBjdXQoTkVPX0Vfc3VtLCBicmVha3MgPSBjKDEyLCAyMSwgMzEsIDQxLCA1MSwgNjApLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKE5FT19PX3N1bSA9IGN1dChORU9fT19zdW0sIGJyZWFrcyA9IGMoMTIsIDIxLCAzMSwgNDEsIDUxLCA2MCksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoTkVPX0Ffc3VtID0gY3V0KE5FT19BX3N1bSwgYnJlYWtzID0gYygxMiwgMjEsIDMxLCA0MSwgNTEsIDYwKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShORU9fQ19zdW0gPSBjdXQoTkVPX0Nfc3VtLCBicmVha3MgPSBjKDEyLCAyMSwgMzEsIDQxLCA1MSwgNjApLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUKICBtdXRhdGUoUlNFU19zdW0gPSBjdXQoUlNFU19zdW0sIGJyZWFrcyA9IGMoMTAsIDE1LCAyMSwgMjcsIDMzLCA0MCksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoU1JTX3N1bSA9IGN1dChTUlNfc3VtLCBicmVha3MgPSBjKDEwLCAxNSwgMjEsIDI3LCAzMywgNDApLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgbXV0YXRlKFNTRUlUX3N1bSA9IGN1dChTU0VJVF9zdW0sIGJyZWFrcyA9IGMoMzMsIDU5LCA4NiwgMTEzLCAxNDAsIDE2NSksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoREFTU19EX3N1bSA9IGN1dChEQVNTX0Rfc3VtLCBicmVha3MgPSBjKDAsIDksIDEzLCAyMCwgMjcsIDQyKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogIG11dGF0ZShEQVNTX0Ffc3VtID0gY3V0KERBU1NfQV9zdW0sIGJyZWFrcyA9IGMoMCwgNywgOSwgMTQsIDE5LCA0MiksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICBtdXRhdGUoREFTU19TX3N1bSA9IGN1dChEQVNTX1Nfc3VtLCBicmVha3MgPSBjKDAsIDE0LCAxOCwgMjUsIDMzLCA0MiksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpICU+JSAKICAjIG11dGF0ZShEQVNTX0Rfc3VtID0gY3V0KERBU1NfRF9zdW0sIGJyZWFrcyA9IGMoMCwgOCwgMTcsIDI2LCAzNSwgNDIpLCBsYWJlbHMgPSBjKCJMb3ciLCAiTWlsZCIsICJNb2RlcmF0ZSIsICJIaWdoIiwgIlZlcnkgSGlnaCIpLCBpbmNsdWRlLmxvd2VzdCA9IFQpKSAlPiUgCiAgIyBtdXRhdGUoREFTU19BX3N1bSA9IGN1dChEQVNTX0Ffc3VtLCBicmVha3MgPSBjKDAsIDgsIDE3LCAyNiwgMzUsIDQyKSwgbGFiZWxzID0gYygiTG93IiwgIk1pbGQiLCAiTW9kZXJhdGUiLCAiSGlnaCIsICJWZXJ5IEhpZ2giKSwgaW5jbHVkZS5sb3dlc3QgPSBUKSkgJT4lIAogICMgbXV0YXRlKERBU1NfU19zdW0gPSBjdXQoREFTU19TX3N1bSwgYnJlYWtzID0gYygwLCA4LCAxNywgMjYsIDM1LCA0MiksIGxhYmVscyA9IGMoIkxvdyIsICJNaWxkIiwgIk1vZGVyYXRlIiwgIkhpZ2giLCAiVmVyeSBIaWdoIiksIGluY2x1ZGUubG93ZXN0ID0gVCkpCiAgIyBnZXQgZnJlcSAmIHByb3BvcnRpb24gZm9yIGVhY2ggdmFyCiAgcHVycnI6Om1hcCh+IGNvdW50KHRpYmJsZSh4ID0gLngpLCB4KSAlPiUgCiAgICAgICAgICAgICAgIG11dGF0ZShwY3QgPSAobiAvIHN1bShuKSAqIDEwMCkpKQoKIyBtYWtlIGxpc3QgaW50byAxIGxvbmcgZGF0YSBmcmFtZSB0byBzaG93IGFzIHRhYmxlLi4uCm10dXJrX25vbV9xdWVzX2FsbF90IDwtIAogICMgdGhpcyBrZWVwcyB0aGUgdmFyIG5hbWUgaW4gdGhlIDFzdCBjb2x1bW4gKHVzaW5nLS0gLmlkID0gInRpYiIpCiAgbWFwX2RmcihtdHVya19ub21fcXVlc19hbGwsIGJpbmRfcm93cywgLmlkID0gInRpYiIpCmBgYAoKYGBge3J9CmthYmxlKHNvbmFfbm9tX3F1ZXNfYWxsX3QsIGNhcHRpb24gPSAiRnJlcXVlbmN5ICYgcGVyY2VudGFnZSBmb3Igbm9taW5hbCB2YXJzIC0gcXVlcy0gU1RVRFkgMSAtIFNPTkEuIiwgYWxpZ24gPSByZXAoJ2NyY2MnKSwgY29sLm5hbWVzID0gYygiVmFyIiwgImxldmVsIiAsIm4iLCAiJSIpLCByb3cubmFtZXMgPSBUUlVFKSAlPiUgCiAgZm9vdG5vdGUoZ2VuZXJhbCA9ICJUaGVyZSB3YXMgbm8gdGFzayBjb21wbGV0ZWQgZHVyaW5nIHN0dWR5IDEuIikgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKG10dXJrX25vbV9xdWVzX2FsbF90LCBjYXB0aW9uID0gIkZyZXF1ZW5jeSAmIHBlcmNlbnRhZ2UgZm9yIG5vbWluYWwgdmFycyAtIHF1ZXMtIFNUVURZIDIgLSBNVFVSSyIsIGFsaWduID0gcmVwKCdjcmNjJyksIGNvbC5uYW1lcyA9IGMoIlZhciIsICJsZXZlbCIgLCJuIiwgIiUiKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGZvb3Rub3RlKGdlbmVyYWwgPSAiVGhlcmUgd2FzIG5vIHRhc2sgY29tcGxldGVkIGR1cmluZyBzdHVkeSAyLiIpICU+JSAKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gInN0cmlwZWQiLCAiaG92ZXIiLCBmdWxsX3dpZHRoID0gRikgJT4lCiAga2FibGVfY2xhc3NpYygpCgojIGV4cG9ydCB0YWJsZSBhcyBjc3YgZmlsZQogIHdyaXRlLmNzdihzb25hX25vbV9xdWVzX2FsbF90LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL3NvbmFfbm9tX3F1ZXNfYWxsX3Qob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQogIHdyaXRlLmNzdihtdHVya19ub21fcXVlc19hbGxfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9tdHVya19ub21fcXVlc19hbGxfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpCmBgYAoKIyMjIyBTdGFja2VkIEJhciBQbG90cwoKU2hvdyB0aGUgcXVlc3Rpb25uYWlyZSBkYXRhIGFzIGEgc3RhY2tlZCBiYXIgcGxvdCBmb3IgZWFjaCBzdHVkeSBmb3IKdmlzdWFsaXphdGlvbiBjb21wYXJpc29uLgoKYGBge3J9CiMgRk9SIFNBRCBPVkVSQUxMIE9OTFkKCiMgY3JlYXRlIGNvbG9yIHBhbGxldCBmb3Igc3RhY2tlZCBiYXIgcGxvdHMKIyBzdGFja2VkX2NvbG91cnMgPC0gYygiIzdFMTA0NCIsICIjOTgxNTcwIiwgIiM2QjEzOEIiLCAiIzQ5MTI5NiIsICIjMTcwRkE3IikKCnN0YWNrZWRfY29sb3VycyA8LSBjKCIjOTg0MTBCIiwgIiNGMDgwM0MiLCAiIzNGODI2RCIsICIjMDg2MDVGIiwgIiM0MTQ1MzUiKQoKIyBTdHVkeSAxCiMgTWFrZSBkYXRhIGZpbGUKc29uYV9ub21fcXVlc19zdGFja19kYXRhIDwtIAogIHNvbmFfbm9tX3F1ZXNfYWxsX3QgJT4lIAogIHNlbGVjdCgtbikgJT4lIAogIG11dGF0ZV9hdCgidGliIiwgc3RyX3JlcGxhY2UsICJfc3VtIiwgIiIpICU+JSAgIyByZW1vdmUgIl9zdW0iIGZyb20gZmFjdG9yCiAgIyByZW1vdmUgU0FEIHN1YnNjYWxlcwogIGZpbHRlcighdGliID09ICJTQURfZGVwIikgJT4lIAogIGZpbHRlcighdGliID09ICJTQURfZWEiKSAlPiUgCiAgZmlsdGVyKCF0aWIgPT0gIlNBRF9hY2Nlc3MiKSAlPiUgCiAgZmlsdGVyKCF0aWIgPT0gIlNBRF9kaXN0IikKCnNvbmFfbm9tX3F1ZXNfc3RhY2tfcGxvdCA8LSAKICBnZ3Bsb3Qoc29uYV9ub21fcXVlc19zdGFja19kYXRhLCBhZXMoZmlsbD1mYWN0b3IoeCwgbGV2ZWxzID0gYygiVmVyeSBIaWdoIiwgIkhpZ2giLCAiTW9kZXJhdGUiLCAiTWlsZCIsICJMb3ciKSksIHk9cGN0LCB4PXRpYikpICsgCiAgICBnZW9tX2Jhcihwb3NpdGlvbj0ic3RhY2siLCBzdGF0PSJpZGVudGl0eSIpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGltaXRzID0gYygiTk1QUSIsICJTQUQiLCAiQklTIiwgIk5FT19PIiwgIk5FT19DIiwgIk5FT19FIiwgIk5FT19BIiwgIk5FT19OIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1NfRCIsICJEQVNTX0EiLCAiREFTU19TIiksIGxhYmVscyA9IGMoIk5NUFEiPSJOTVBRIiwgIlNBRCI9IlNBRCIsICJCSVMiPSJCSVMiLCAiTkVPX08iPSJORU86IE8iLCAiTkVPX0MiPSJORU86IEMiLCAiTkVPX0UiPSJORU86IEUiLCAiTkVPX0EiPSJORU86IEEiLCAiTkVPX04iPSJORU86IE4iLCAiUlNFUyI9IlJTRVMiLCAiU1JTIj0iU1JTIiwgIlNTRUlUIj0iU1NFSVQiLCAiREFTU19EIj0iREFTUzogRCIsICJEQVNTX0EiPSJEQVNTOiBBIiwgIkRBU1NfUyI9IkRBU1M6IFMiKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPXN0YWNrZWRfY29sb3VycykgKyAKICAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKHBjdCwwKSksIHNpemUgPSAzLCBoanVzdCA9IDAuNSwgdmp1c3QgPSAwLCBwb3NpdGlvbiA9ICJzdGFjayIpICsKICAgICMgYWRkIGxhYmVscwogICAgbGFicygKICAgICAgICMgdGl0bGUgPSAiU3RhY2tlZCBCYXJwbG90IGZvciBRdWVzdGlvbm5haXJlIFNjb3JlczogU3R1ZHkgMSIsCiAgICAgICAjIHN1YnRpdGxlID0gIngiLAogICAgICAgIyBjYXB0aW9uID0gIk5vdGU6ICIsCiAgICAgICB4ID0gIk1lYXN1cmUiLCAKICAgICAgIHkgPSAiUHJvcG9ydGlvbiAoJSkiLAogICAgICAgZmlsbCA9ICJMZXZlbCIKICAgICAgICkgKyAKICAgIHRoZW1lX2NsYXNzaWMoKSArCiAgICAjIGFkZCBzcGVjaWZpYyBmb3JtYXR0aW5nCiAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDE0LCBmYWNlID0gImJvbGQiKSwKICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDEzKSwKICAgICAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLCBzaXplID0gMTIsIGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTMpLCAKICAgICAgICBheGlzLnRpY2tzLnggPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIHZqdXN0ID0gMC41LCBoanVzdD0xKSwKICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siKSkKCiMgc2hvdyBwbG90CnNvbmFfbm9tX3F1ZXNfc3RhY2tfcGxvdAoKIyBTdHVkeSAyCiMgTWFrZSBkYXRhIGZpbGUKbXR1cmtfbm9tX3F1ZXNfc3RhY2tfZGF0YSA8LSAKICBtdHVya19ub21fcXVlc19hbGxfdCAlPiUgCiAgc2VsZWN0KC1uKSAlPiUgCiAgbXV0YXRlX2F0KCJ0aWIiLCBzdHJfcmVwbGFjZSwgIl9zdW0iLCAiIikgJT4lICAjIHJlbW92ZSAiX3N1bSIgZnJvbSBmYWN0b3IKICAjIHJlbW92ZSBTQUQgc3Vic2NhbGVzCiAgZmlsdGVyKCF0aWIgPT0gIlNBRF9kZXAiKSAlPiUgCiAgZmlsdGVyKCF0aWIgPT0gIlNBRF9lYSIpICU+JSAKICBmaWx0ZXIoIXRpYiA9PSAiU0FEX2FjY2VzcyIpICU+JSAKICBmaWx0ZXIoIXRpYiA9PSAiU0FEX2Rpc3QiKQoKbXR1cmtfbm9tX3F1ZXNfc3RhY2tfcGxvdCA8LSAKICBnZ3Bsb3QobXR1cmtfbm9tX3F1ZXNfc3RhY2tfZGF0YSwgYWVzKGZpbGw9ZmFjdG9yKHgsIGxldmVscyA9IGMoIlZlcnkgSGlnaCIsICJIaWdoIiwgIk1vZGVyYXRlIiwgIk1pbGQiLCAiTG93IikpLCB5PXBjdCwgeD10aWIpKSArIAogICAgZ2VvbV9iYXIocG9zaXRpb249InN0YWNrIiwgc3RhdD0iaWRlbnRpdHkiKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxpbWl0cyA9IGMoIk5NUFEiLCAiU0FEIiwgIkJJUyIsICJORU9fTyIsICJORU9fQyIsICJORU9fRSIsICJORU9fQSIsICJORU9fTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTX0QiLCAiREFTU19BIiwgIkRBU1NfUyIpLCBsYWJlbHMgPSBjKCJOTVBRIj0iTk1QUSIsICJTQUQiPSJTQUQiLCAiQklTIj0iQklTIiwgIk5FT19PIj0iTkVPOiBPIiwgIk5FT19DIj0iTkVPOiBDIiwgIk5FT19FIj0iTkVPOiBFIiwgIk5FT19BIj0iTkVPOiBBIiwgIk5FT19OIj0iTkVPOiBOIiwgIlJTRVMiPSJSU0VTIiwgIlNSUyI9IlNSUyIsICJTU0VJVCI9IlNTRUlUIiwgIkRBU1NfRCI9IkRBU1M6IEQiLCAiREFTU19BIj0iREFTUzogQSIsICJEQVNTX1MiPSJEQVNTOiBTIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1zdGFja2VkX2NvbG91cnMpICsgCiAgICAjIGdlb21fdGV4dChhZXMobGFiZWwgPSByb3VuZChwY3QsMCkpLCBzaXplID0gMywgaGp1c3QgPSAwLjUsIHZqdXN0ID0gMCwgcG9zaXRpb24gPSAic3RhY2siKSArCiAgICAjIGFkZCBsYWJlbHMKICAgIGxhYnMoCiAgICAgICAjIHRpdGxlID0gIlN0YWNrZWQgQmFycGxvdCBmb3IgUXVlc3Rpb25uYWlyZSBTY29yZXM6IFN0dWR5IDIiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJ4IiwKICAgICAgICMgY2FwdGlvbiA9ICJOb3RlOiAiLAogICAgICAgeCA9ICJNZWFzdXJlIiwgCiAgICAgICB5ID0gIlByb3BvcnRpb24gKCUpIiwKICAgICAgIGZpbGwgPSAiTGV2ZWwiCiAgICAgICApICsgCiAgICB0aGVtZV9jbGFzc2ljKCkgKwogICAgIyBhZGQgc3BlY2lmaWMgZm9ybWF0dGluZwogICAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIsIHNpemUgPSAxNCwgZmFjZSA9ICJib2xkIiksCiAgICAgICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIsIHNpemUgPSAxMyksCiAgICAgICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMCwgc2l6ZSA9IDEyLCBmYWNlID0gIml0YWxpYyIpLAogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEzKSwgCiAgICAgICAgYXhpcy50aWNrcy54ID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCB2anVzdCA9IDAuNSwgaGp1c3Q9MSksCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImJsYWNrIikpCgojIHNob3cgcGxvdAptdHVya19ub21fcXVlc19zdGFja19wbG90CgojIGV4cG9ydCBwbG90cwpnZ3NhdmUoZmlsZW5hbWU9Ii9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0ZpZ3VyZXMvc29uYV9ub21fcXVlc19zdGFja19wbG90KG9jdDI4KSIsIHBsb3QgPSBzb25hX25vbV9xdWVzX3N0YWNrX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9tdHVya19ub21fcXVlc19zdGFja19wbG90KG9jdDI4KSIsIHBsb3QgPSBtdHVya19ub21fcXVlc19zdGFja19wbG90LCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDUsIHdpZHRoID0gOCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQoKYGBgCgpgYGB7cn0KIyBGT1IgQUxMIFNVQlNDQUxFUyArIFNBRCBPVkVSQUxMCgojIGNyZWF0ZSBjb2xvciBwYWxsZXQgZm9yIHN0YWNrZWQgYmFyIHBsb3RzCnN0YWNrZWRfY29sb3Vyc19leHAgPC0gYygiIzk4NDEwQiIsICIjRjA4MDNDIiwgIiMzRjgyNkQiLCAiIzA4NjA1RiIsICIjNDE0NTM1IikKCiMgU3R1ZHkgMQojIE1ha2UgZGF0YSBmaWxlCnNvbmFfbm9tX3F1ZXNfc3RhY2tfZXhwX2RhdGEgPC0gCiAgc29uYV9ub21fcXVlc19hbGxfdCAlPiUgCiAgc2VsZWN0KC1uKSAlPiUgCiAgbXV0YXRlX2F0KCJ0aWIiLCBzdHJfcmVwbGFjZSwgIl9zdW0iLCAiIikgIyByZW1vdmUgIl9zdW0iIGZyb20gZmFjdG9yCiAgIyBmaWx0ZXIoIXRpYiA9PSAiU0FEIikgJT4lICAjIHJlbW92ZSBTQUQgZ2VuZXJhbAoKc29uYV9ub21fcXVlc19zdGFja19leHBfcGxvdCA8LSAKICBnZ3Bsb3Qoc29uYV9ub21fcXVlc19zdGFja19leHBfZGF0YSwgYWVzKGZpbGw9ZmFjdG9yKHgsIGxldmVscyA9IGMoIlZlcnkgSGlnaCIsICJIaWdoIiwgIk1vZGVyYXRlIiwgIk1pbGQiLCAiTG93IikpLCB5PXBjdCwgeD10aWIpKSArIAogICAgZ2VvbV9iYXIocG9zaXRpb249InN0YWNrIiwgc3RhdD0iaWRlbnRpdHkiKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxpbWl0cyA9IGMoIk5NUFEiLCAiU0FEIiwgIlNBRF9kZXAiLCAiU0FEX2VhIiwgIlNBRF9hY2Nlc3MiLCAiU0FEX2Rpc3QiLCAiQklTIiwgIk5FT19PIiwgIk5FT19DIiwgIk5FT19FIiwgIk5FT19BIiwgIk5FT19OIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1NfRCIsICJEQVNTX0EiLCAiREFTU19TIiksIGxhYmVscyA9IGMoIk5NUFEiPSJOTVBRIiwgIlNBRCI9IlNBRCIsICJCSVMiPSJCSVMiLCAiTkVPX08iPSJORU86IE8iLCAiTkVPX0MiPSJORU86IEMiLCAiTkVPX0UiPSJORU86IEUiLCAiTkVPX0EiPSJORU86IEEiLCAiTkVPX04iPSJORU86IE4iLCAiUlNFUyI9IlJTRVMiLCAiU1JTIj0iU1JTIiwgIlNTRUlUIj0iU1NFSVQiLCAiREFTU19EIj0iREFTUzogRCIsICJEQVNTX0EiPSJEQVNTOiBBIiwgIkRBU1NfUyI9IkRBU1M6IFMiKSkgKyAKICAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKHBjdCwwKSksIHNpemUgPSAzLCBoanVzdCA9IDAuNSwgdmp1c3QgPSAwLCBwb3NpdGlvbiA9ICJzdGFjayIpICsKICAgICMgYWRkIGxhYmVscwogICAgbGFicygKICAgICAgIHRpdGxlID0gIlN0YWNrZWQgQmFycGxvdCBmb3IgUXVlc3Rpb25uYWlyZSBTY29yZXM6IFN0dWR5IDEgLS0gQUxMIEV4cGxvcmF0b3J5IiwKICAgICAgICMgc3VidGl0bGUgPSAieCIsCiAgICAgICAjIGNhcHRpb24gPSAiTm90ZTogIiwKICAgICAgIHggPSAiTWVhc3VyZSIsIAogICAgICAgeSA9ICJQcm9wb3J0aW9uICglKSIsCiAgICAgICBmaWxsID0gIkxldmVsIgogICAgICAgKSArIAogICAgdGhlbWVfY2xhc3NpYygpICsKICAgICMgYWRkIHNwZWNpZmljIGZvcm1hdHRpbmcKICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpLAogICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTMpLAogICAgICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAsIHNpemUgPSAxMiwgZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMyksIAogICAgICAgIGF4aXMudGlja3MueCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpLAogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpKQoKIyBzaG93IHBsb3QKc29uYV9ub21fcXVlc19zdGFja19leHBfcGxvdAoKIyBTdHVkeSAyCiMgTWFrZSBkYXRhIGZpbGUKbXR1cmtfbm9tX3F1ZXNfc3RhY2tfZXhwX2RhdGEgPC0gCiAgbXR1cmtfbm9tX3F1ZXNfYWxsX3QgJT4lIAogIHNlbGVjdCgtbikgJT4lIAogIG11dGF0ZV9hdCgidGliIiwgc3RyX3JlcGxhY2UsICJfc3VtIiwgIiIpICMgcmVtb3ZlICJfc3VtIiBmcm9tIGZhY3RvcgogICMgZmlsdGVyKCF0aWIgPT0gIlNBRCIpICU+JSAgIyByZW1vdmUgU0FEIGdlbmVyYWwKCm10dXJrX25vbV9xdWVzX3N0YWNrX2V4cF9wbG90IDwtIAogIGdncGxvdChtdHVya19ub21fcXVlc19zdGFja19leHBfZGF0YSwgYWVzKGZpbGw9ZmFjdG9yKHgsIGxldmVscyA9IGMoIlZlcnkgSGlnaCIsICJIaWdoIiwgIk1vZGVyYXRlIiwgIk1pbGQiLCAiTG93IikpLCB5PXBjdCwgeD10aWIpKSArIAogICAgZ2VvbV9iYXIocG9zaXRpb249InN0YWNrIiwgc3RhdD0iaWRlbnRpdHkiKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxpbWl0cyA9IGMoIk5NUFEiLCAiU0FEIiwgIlNBRF9kZXAiLCAiU0FEX2VhIiwgIlNBRF9hY2Nlc3MiLCAiU0FEX2Rpc3QiLCAiQklTIiwgIk5FT19PIiwgIk5FT19DIiwgIk5FT19FIiwgIk5FT19BIiwgIk5FT19OIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1NfRCIsICJEQVNTX0EiLCAiREFTU19TIiksIGxhYmVscyA9IGMoIk5NUFEiPSJOTVBRIiwgIlNBRCI9IlNBRCIsICJCSVMiPSJCSVMiLCAiTkVPX08iPSJORU86IE8iLCAiTkVPX0MiPSJORU86IEMiLCAiTkVPX0UiPSJORU86IEUiLCAiTkVPX0EiPSJORU86IEEiLCAiTkVPX04iPSJORU86IE4iLCAiUlNFUyI9IlJTRVMiLCAiU1JTIj0iU1JTIiwgIlNTRUlUIj0iU1NFSVQiLCAiREFTU19EIj0iREFTUzogRCIsICJEQVNTX0EiPSJEQVNTOiBBIiwgIkRBU1NfUyI9IkRBU1M6IFMiKSkgKyAKICAgICMgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKHBjdCwwKSksIHNpemUgPSAzLCBoanVzdCA9IDAuNSwgdmp1c3QgPSAwLCBwb3NpdGlvbiA9ICJzdGFjayIpICsKICAgICMgYWRkIGxhYmVscwogICAgbGFicygKICAgICAgIHRpdGxlID0gIlN0YWNrZWQgQmFycGxvdCBmb3IgUXVlc3Rpb25uYWlyZSBTY29yZXM6IFN0dWR5IDIgLS0gQUxMIEV4cGxvcmF0b3J5IiwKICAgICAgICMgc3VidGl0bGUgPSAieCIsCiAgICAgICAjIGNhcHRpb24gPSAiTm90ZTogIiwKICAgICAgIHggPSAiTWVhc3VyZSIsIAogICAgICAgeSA9ICJQcm9wb3J0aW9uICglKSIsCiAgICAgICBmaWxsID0gIkxldmVsIgogICAgICAgKSArIAogICAgdGhlbWVfY2xhc3NpYygpICsKICAgICMgYWRkIHNwZWNpZmljIGZvcm1hdHRpbmcKICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpLAogICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTMpLAogICAgICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAsIHNpemUgPSAxMiwgZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMyksIAogICAgICAgIGF4aXMudGlja3MueCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEpLAogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpKQoKIyBzaG93IHBsb3QKbXR1cmtfbm9tX3F1ZXNfc3RhY2tfZXhwX3Bsb3QKCiMgZXhwb3J0IHBsb3RzCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9zb25hX25vbV9xdWVzX3N0YWNrX2V4cF9wbG90KG9jdDI4KSIsIHBsb3QgPSBzb25hX25vbV9xdWVzX3N0YWNrX2V4cF9wbG90LCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDUsIHdpZHRoID0gOCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQpnZ3NhdmUoZmlsZW5hbWU9Ii9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0ZpZ3VyZXMvbXR1cmtfbm9tX3F1ZXNfc3RhY2tfZXhwX3Bsb3Qob2N0MjgpIiwgcGxvdCA9IG10dXJrX25vbV9xdWVzX3N0YWNrX2V4cF9wbG90LCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDUsIHdpZHRoID0gOCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQoKYGBgCgpgYGB7ciBldmFsPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQojIGF0dGVtcHRpbmcgYSAiaml0dGVyIHBsb3QiLi4uCnBpbG90X25vbV9xdWVzX2ppdHRlciA8LSB0aWJibGUoInF1ZXMiID0gYyhyZXAoIk1QSVEiLCBucm93KHBpbG90X25vbV9xdWVzX3QpKSwgcmVwKCJNUElRMiIsIG5yb3cocGlsb3Rfbm9tX3F1ZXNfdCkpKSwgCiAgICAgICAgICJsZXZlbCIgPSBjKHJlcCgibG93IiwgcGlsb3Rfbm9tX3F1ZXMkTVBJUV9zdW0kblsxXSksIHJlcCgibW9kIiwgcGlsb3Rfbm9tX3F1ZXMkTVBJUV9zdW0kblsyXSksIHJlcCgiaGlnaCIsIHBpbG90X25vbV9xdWVzJE1QSVFfc3VtJG5bM10pLAogICAgICAgICAgICAgICAgICAgICByZXAoImxvdyIsIHBpbG90X25vbV9xdWVzJE1QSVFfc3VtJG5bMV0pLCByZXAoIm1vZCIsIHBpbG90X25vbV9xdWVzJE1QSVFfc3VtJG5bMl0pLCByZXAoImhpZ2giLCBwaWxvdF9ub21fcXVlcyRNUElRX3N1bSRuWzNdKSkKICAgICAgICAgKQoKcGlsb3Rfbm9tX3F1ZXNfaml0dGVyX3Bsb3QgPC0gCiAgZ2dwbG90KHBpbG90X25vbV9xdWVzX2ppdHRlciwgYWVzKHg9cXVlcywgeT1sZXZlbCkpICsgCiAgICAjIGdlb21fYmFyKHBvc2l0aW9uPSJzdGFjayIsIHN0YXQ9ImlkZW50aXR5IikgKwogICAgZ2VvbV9qaXR0ZXIoKSArCiAgICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzPWMoJ2xpZ2h0c2VhZ3JlZW4nLCdkYXJrb3JjaGlkJywgJ2RlZXBza3libHVlNCcpKSArIAogICAgIyBhZGQgbGFiZWxzCiAgICBsYWJzKAogICAgICAgdGl0bGUgPSAiU3RhY2tlZCBCYXJwbG90IGZvciBRdWVzdGlvbm5haXJlIFNjb3JlczogU3R1ZHkgMSIsCiAgICAgICBzdWJ0aXRsZSA9ICJ4IiwKICAgICAgIGNhcHRpb24gPSAiTm90ZTogIiwKICAgICAgIHggPSAiU21hcnRwaG9uZSBMb2NhdGlvbiIsIAogICAgICAgeSA9ICJNZW1vcnkgQ29tcG9zaXRlIFNjb3JlIgogICAgICAgKSArIAogICAgdGhlbWVfY2xhc3NpYygpICsKICAgICMgYWRkIHNwZWNpZmljIGZvcm1hdHRpbmcKICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTQsIGZhY2UgPSAiYm9sZCIpLAogICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMTMpLAogICAgICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAsIHNpemUgPSAxMiwgZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMyksIAogICAgICAgIGF4aXMudGlja3MueCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImJsYWNrIikpCmBgYAoKIyMgQ09OVElOVU9VUyBkYXRhIChwaWxvdCAmIG1haW4pCgojIyMgRGVtb2dyYXBoaWMgJiBUeXBpY2FsIFNtYXJ0cGhvbmUgVXNlCgpgYGB7cn0KIyMgRk9SIFNPTkEKc29uYV9jb250X2RlbW8gPC0gCiAgU09OQV9kYXRhICU+JSAKICAjIHNlbGVjdCBjb250aW51b3VzIHZhcnMKICBzZWxlY3QoYWdlLCBhZ2VfZmlyc3RfcGhvbmUsIFNUX3dlZWtseV90b3RfaG91cnM6U1RfZGFpbHlfbm90LCBjb21fZ2VuOmNvbV9yb29tX3Rhc2ssIGRpc3RfZGFpbHksIGRpc3Rfc3R1ZHksIHBvd19ub3RfdXNpbmc6cG93X3NsZWVwKSAlPiUgCiAgIyBhcHBseSBkZXNjcmliZSBmbiBmb3I6IG4gIG1lYW4gICBzZCBtZWRpYW4gdHJpbW1lZCAgbWFkIG1pbiBtYXggcmFuZ2UgIHNrZXcga3VydG9zaXMgICBzZQogIHBzeWNoOjpkZXNjcmliZSgpCgojIyBGT1IgTVRVUksKbXR1cmtfY29udF9kZW1vIDwtIAogIE10dXJrX2RhdGEgJT4lIAogICMgc2VsZWN0IGNvbnRpbnVvdXMgdmFycwogIHNlbGVjdChhZ2UsIGFnZV9maXJzdF9waG9uZSwgU1Rfd2Vla2x5X3RvdF9ob3VyczpTVF9kYWlseV9ub3QsIGNvbV9nZW46Y29tX3Jvb21fdGFzaywgZGlzdF9kYWlseSwgZGlzdF9zdHVkeSwgcG93X25vdF91c2luZzpwb3dfc2xlZXApICU+JSAKICAjIGFwcGx5IGRlc2NyaWJlIGZuIGZvcjogbiAgbWVhbiAgIHNkIG1lZGlhbiB0cmltbWVkICBtYWQgbWluIG1heCByYW5nZSAgc2tldyBrdXJ0b3NpcyAgIHNlCiAgcHN5Y2g6OmRlc2NyaWJlKCkKYGBgCgpgYGB7cn0KIyBzaG93IGFsbCB3aXRoIGthYmxlIAojIyBTT05BCmthYmxlKHNvbmFfY29udF9kZW1vLCBjYXB0aW9uID0gIkRlc2NyaXB0aXZlIHN0YXRpc3RpY3MgZm9yIGNvbnRpbnVvdXMgdmFycyAtIFNUVURZIDEgLSBTT05BIiwgYWxpZ24gPSByZXAoJ2NyY2MnKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkgCgojIyBNVFVSSwprYWJsZShtdHVya19jb250X2RlbW8sIGNhcHRpb24gPSAiRGVzY3JpcHRpdmUgc3RhdGlzdGljcyBmb3IgY29udGludW91cyB2YXJzIC0gU1RVRFkgMiAtIE1UVVJLIiwgYWxpZ24gPSByZXAoJ2NyY2MnKSwgcm93Lm5hbWVzID0gVFJVRSkgJT4lIAogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsICJob3ZlciIsIGZ1bGxfd2lkdGggPSBGKSAlPiUKICBrYWJsZV9jbGFzc2ljKCkgCgojIGV4cG9ydCB0YWJsZXMgYXMgY3N2IGZpbGVzCndyaXRlLmNzdihzb25hX2NvbnRfZGVtbywiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX2NvbnRfZGVtbyhvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKCndyaXRlLmNzdihtdHVya19jb250X2RlbW8sIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvbXR1cmtfY29udF9kZW1vKG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBUKQpgYGAKCiMjIyBRdWVzdGlvbm5haXJlcwoKYGBge3J9CiMjIEZPUiBTT05BCnNvbmFfY29udF9xdWVzIDwtIAogIFNPTkFfZGF0YSAlPiUgCiAgIyBzZWxlY3QgY29udGludW91cyB2YXJzCiAgc2VsZWN0KHN0YXJ0c193aXRoKCJOTVBRIiksIHN0YXJ0c193aXRoKCJTUlMiKSwgc3RhcnRzX3dpdGgoIlNBRCIpLCBzdGFydHNfd2l0aCgiREFTUyIpLCBzdGFydHNfd2l0aCgiQklTIiksIHN0YXJ0c193aXRoKCJTU0VJVCIpLCBzdGFydHNfd2l0aCgiUlNFUyIpLCBzdGFydHNfd2l0aCgiTkVPIikpICU+JSAKICAjIGFwcGx5IGRlc2NyaWJlIGZuIGZvcjogbiAgbWVhbiAgIHNkIG1lZGlhbiB0cmltbWVkICBtYWQgbWluIG1heCByYW5nZSAgc2tldyBrdXJ0b3NpcyAgIHNlCiAgcHN5Y2g6OmRlc2NyaWJlKCkKCiMjIEZPUiBNVFVSSwptdHVya19jb250X3F1ZXMgPC0gCiAgTXR1cmtfZGF0YSAlPiUgCiAgIyBzZWxlY3QgY29udGludW91cyB2YXJzCiAgc2VsZWN0KHN0YXJ0c193aXRoKCJOTVBRIiksIHN0YXJ0c193aXRoKCJTUlMiKSwgc3RhcnRzX3dpdGgoIlNBRCIpLCBzdGFydHNfd2l0aCgiREFTUyIpLCBzdGFydHNfd2l0aCgiQklTIiksIHN0YXJ0c193aXRoKCJTU0VJVCIpLCBzdGFydHNfd2l0aCgiUlNFUyIpLCBzdGFydHNfd2l0aCgiTkVPIikpICU+JSAKICAjIGFwcGx5IGRlc2NyaWJlIGZuIGZvcjogbiAgbWVhbiAgIHNkIG1lZGlhbiB0cmltbWVkICBtYWQgbWluIG1heCByYW5nZSAgc2tldyBrdXJ0b3NpcyAgIHNlCiAgcHN5Y2g6OmRlc2NyaWJlKCkKYGBgCgpgYGB7cn0KIyBzaG93IGFsbCB3aXRoIGthYmxlIAojIyBTT05BCmthYmxlKHNvbmFfY29udF9xdWVzLCBjYXB0aW9uID0gIkRlc2NyaXB0aXZlIHN0YXRpc3RpY3MgZm9yIHF1ZXN0aW9ubmFpcmVzIC0gU1RVRFkgMSAtIFNPTkEiLCBhbGlnbiA9IHJlcCgnY3JjYycpLCByb3cubmFtZXMgPSBUUlVFKSAlPiUgCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9ICJzdHJpcGVkIiwgImhvdmVyIiwgZnVsbF93aWR0aCA9IEYpICU+JQogIGthYmxlX2NsYXNzaWMoKSAKCiMjIE1UVVJLCmthYmxlKG10dXJrX2NvbnRfcXVlcywgY2FwdGlvbiA9ICJEZXNjcmlwdGl2ZSBzdGF0aXN0aWNzIGZvciBxdWVzdGlvbm5haXJlcyAtIFNUVURZIDEgLSBNVFVSSyIsIGFsaWduID0gcmVwKCdjcmNjJyksIHJvdy5uYW1lcyA9IFRSVUUpICU+JSAKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gInN0cmlwZWQiLCAiaG92ZXIiLCBmdWxsX3dpZHRoID0gRikgJT4lCiAga2FibGVfY2xhc3NpYygpIAoKIyBleHBvcnQgdGFibGVzIGFzIGNzdiBmaWxlcwp3cml0ZS5jc3Yoc29uYV9jb250X3F1ZXMsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvc29uYV9jb250X3F1ZXMob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCgp3cml0ZS5jc3YobXR1cmtfY29udF9xdWVzLCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX2NvbnRfcXVlcyhvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgojIEFuYWx5c2VzCgojIyBBc3N1bXB0aW9uIFRlc3RzCgo8ZGV0YWlscz4KCjxzdW1tYXJ5PgoKQWxsIGFzc3VtcHRpb25zIHdlcmUgbWV0IGZvciB0aGUgY29ycmVsYXRpb24gYW5hbHlzaXMuIENsaWNrIGhlcmUgdG8gc2VlCnRoZSBhc3N1bXB0aW9uIHRlc3RzLgoKPC9zdW1tYXJ5PgoKVGhlIGFzc3VtcHRpb25zIGZvciBhIGNvcnJlbGF0aW9uIGFuYWx5c2lzIHdlcmUgdGVzdGVkLiBUaGVyZSB3ZXJlIHR3bwphc3N1bXB0aW9uczogKDEpIExpbmVhcml0eSBhbmQgKDIpIE5vcm1hbGl0eS4KCjEuICBMaW5lYXJpdHkgd2FzIHZpc3VhbGx5IGluc3BlY3RlZCBmcm9tIHRoZSBzY2F0dGVyIHBsb3RzIChzZWUgcGxvdHMKICAgIGluIHRoZSAiKkZpZ3VyZXM6IFNjYXR0ZXIgUGxvdHMqIiBzZWN0aW9uKS4KCjIuICBOb3JtYWxpdHkgd2FzIHRlc3RlZCB1c2luZyAoYSkgdGhlIFNoYXBpcm8tV2lsayBub3JtYWxpdHkgdGVzdCBhbmQKICAgIChiKSB2aXN1YWxseSBpbnNwZWN0ZWQgdXNpbmcgYSBub3JtYWxpdHkgcGxvdC4KCiAgICAtICAgVGhlIFNoYXBpcm8tV2lsayBub3JtYWxpdHkgdGVzdCB3aWxsIHNob3cgdHdvIHZhbHVlcyAoaS5lLiwgKlcqCiAgICAgICAgYW5kICpwKikgYW5kIGVhY2ggdGVzdCB1c2VzIHRoZSBmb2xsb3dpbmcgaHlwb3RoZXNlczogSH5OfjogdGhlCiAgICAgICAgZGF0YSBhcmUgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgYW5kIEh+QX46IHRoZSBkYXRhIGFyZSBub3QKICAgICAgICBub3JtYWxseSBkaXN0cmlidXRlZC4KCiAgICAtICAgVGhlIG5vcm1hbGl0eSBwbG90cyB1c2VkIHdlcmUgUS1RIHBsb3RzIChxdWFudGlsZS1xdWFudGlsZQogICAgICAgIHBsb3RzKSwgd2hpY2ggZHJhdyB0aGUgY29ycmVsYXRpb24gYmV0d2VlbiBhIGdpdmVuIHNhbXBsZSBhbmQKICAgICAgICB0aGUgdGhlb3JldGljYWwgbm9ybWFsIGRpc3RyaWJ1dGlvbi4KCiAgICAgICAgPC9zdW1tYXJ5PgoKIyMjIChhKSBTaGFwaXJvLVdpbGsgTm9ybWFsaXR5IFRlc3QKCjxkZXRhaWxzPgoKPHN1bW1hcnk+CgpUaGUgdGFibGUgZGVwaWN0cyB0aGUgcmVzdWx0cyBvZiB0aGUgU2hhcGlyby1XaWxrcyBub3JtYWxpdHkgdGVzdCBmb3IKZWFjaCBtZWFzdXJlLiAqKGNsaWNrIHRvIHNlZSBjb2RlKSoKCjwvc3VtbWFyeT4KCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgY3JlYXRlIGEgdGFibGUgdG8gc2hvdyByZXN1bHRzIG9mIGFsbCBub3JtYWxpdHkgdGVzdHMKY29ycnNfcmVnX25vcm1fdGVzdF9zb25hX2FsbCA8LSAKICBhcy5kYXRhLmZyYW1lKGNiaW5kKGMoIk5NUFEiLCAiU0FEIiwgIlNBRF9kZXAiLCAiU0FEX2FjY2VzcyIsICJTQURfZWEiLCAiU0FEX2Rpc3QiLCAiYWdlIiwgIlNSUyIsICJEQVNTX0QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgIkRBU1NfQSIsICJEQVNTX1MiLCAiQklTIiwgIlNTRUlUIiwgIlJTRVMiLCAiTkVPX04iLCAiTkVPX0UiLCAiTkVPX08iLCAiTkVPX0EiLCAiTkVPX0MiKSwgCiAgICAgICAgICAgICAgICAgcmJpbmQoYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJE5NUFFfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkTk1QUV9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBOTVBRX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRTQURfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkU0FEX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChTT05BX2RhdGEkU0FEX2RlcF9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRTQURfZGVwX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9kZXBfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJFNBRF9hY2Nlc3Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkU0FEX2FjY2Vzc19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBTQURfYWNjZXNzX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRTQURfZWFfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkU0FEX2VhX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9lYV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChTT05BX2RhdGEkU0FEX2Rpc3Rfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkU0FEX2Rpc3Rfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2Rpc3Rfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJGFnZSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJGFnZSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIGFnZQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRTUlNfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkU1JTX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNSU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChTT05BX2RhdGEkREFTU19EX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJERBU1NfRF9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBEQVNTX0Rfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJERBU1NfQV9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KFNPTkFfZGF0YSREQVNTX0Ffc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgREFTU19BX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KFNPTkFfZGF0YSREQVNTX1Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkREFTU19TX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIERBU1NfU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChTT05BX2RhdGEkQklTX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJEJJU19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBCSVNfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJFNTRUlUX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJFNTRUlUX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNTRUlUX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRSU0VTX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJFJTRVNfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgUlNFU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChTT05BX2RhdGEkTkVPX05fc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkTkVPX05fc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTkVPX05fc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJE5FT19FX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJE5FT19FX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIE5FT19FX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRORU9fT19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KFNPTkFfZGF0YSRORU9fT19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fT19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChTT05BX2RhdGEkTkVPX0Ffc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChTT05BX2RhdGEkTkVPX0Ffc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTkVPX0Ffc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoU09OQV9kYXRhJE5FT19DX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoU09OQV9kYXRhJE5FT19DX3N1bSkkcC52YWx1ZSkgIyBXICYgcC12YWx1ZSBmb3IgTkVPX0Nfc3VtCiAgICAgICAgICAgICAgICAgKSkpCiAgY29sbmFtZXMoY29ycnNfcmVnX25vcm1fdGVzdF9zb25hX2FsbCkgPC0gYygiTWVhc3VyZSIsICJXIiwgInAiKQogICMgbWFrZSBjb2xzIG51bWVyaWMgJiByb3VuZCB0byAzIGRlY2ltYWxzCiAgY29ycnNfcmVnX25vcm1fdGVzdF9zb25hX2FsbCRXIDwtIGFzLm51bWVyaWMoY29ycnNfcmVnX25vcm1fdGVzdF9zb25hX2FsbCRXKSAlPiUgcm91bmQoLiwzKQogIGNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9hbGwkcCA8LSBhcy5udW1lcmljKGNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9hbGwkcCkgJT4lIHJvdW5kKC4sMykKCmNvcnJzX3JlZ19ub3JtX3Rlc3RfbXR1cmtfYWxsIDwtIAogIGFzLmRhdGEuZnJhbWUoY2JpbmQoYygiTk1QUSIsICJTQUQiLCAiU0FEX2RlcCIsICJTQURfYWNjZXNzIiwgIlNBRF9lYSIsICJTQURfZGlzdCIsICJhZ2UiLCAiU1JTIiwgIkRBU1NfRCIsIAogICAgICAgICAgICAgICAgICAgICAgICAiREFTU19BIiwgIkRBU1NfUyIsICJCSVMiLCAiU1NFSVQiLCAiUlNFUyIsICJORU9fTiIsICJORU9fRSIsICJORU9fTyIsICJORU9fQSIsICJORU9fQyIpLCAKICAgICAgICAgICAgICAgICByYmluZChjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5NUFFfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5NUFFfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTk1QUV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkU0FEX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9kZXBfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9kZXBfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2RlcF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9hY2Nlc3Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9hY2Nlc3Nfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2FjY2Vzc19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9lYV9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkU0FEX2VhX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9lYV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNBRF9kaXN0X3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRTQURfZGlzdF9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBTQURfZGlzdF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJGFnZSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRhZ2UpJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBhZ2UKICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNSU19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkU1JTX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNSU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJERBU1NfRF9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkREFTU19EX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIERBU1NfRF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJERBU1NfQV9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkREFTU19BX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIERBU1NfQV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJERBU1NfU19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkREFTU19TX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIERBU1NfU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJEJJU19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KE10dXJrX2RhdGEkQklTX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIEJJU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFNTRUlUX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRTU0VJVF9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBTU0VJVF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJFJTRVNfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdChNdHVya19kYXRhJFJTRVNfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgUlNFU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5FT19OX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRORU9fTl9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fTl9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5FT19FX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRORU9fRV9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fRV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5FT19PX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRORU9fT19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fT19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5FT19BX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRORU9fQV9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fQV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdChNdHVya19kYXRhJE5FT19DX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoTXR1cmtfZGF0YSRORU9fQ19zdW0pJHAudmFsdWUpICMgVyAmIHAtdmFsdWUgZm9yIE5FT19DX3N1bQogICAgICAgICAgICAgICAgICkpKQogIGNvbG5hbWVzKGNvcnJzX3JlZ19ub3JtX3Rlc3RfbXR1cmtfYWxsKSA8LSBjKCJNZWFzdXJlIiwgIlciLCAicCIpCiAgIyBtYWtlIGNvbHMgbnVtZXJpYyAmIHJvdW5kIHRvIDMgZGVjaW1hbHMKICBjb3Jyc19yZWdfbm9ybV90ZXN0X210dXJrX2FsbCRXIDwtIGFzLm51bWVyaWMoY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19hbGwkVykgJT4lIHJvdW5kKC4sMykKICBjb3Jyc19yZWdfbm9ybV90ZXN0X210dXJrX2FsbCRwIDwtIGFzLm51bWVyaWMoY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19hbGwkcCkgJT4lIHJvdW5kKC4sMykKICAKIyBqb2luIGludG8gMSBsYXJnZSB0YWJsZQpjb3Jyc19yZWdfbm9ybV90ZXN0c190IDwtIGNiaW5kKGNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9hbGwsIGNvcnJzX3JlZ19ub3JtX3Rlc3RfbXR1cmtfYWxsWywyOjNdKQpgYGAKCjwvZGV0YWlscz4KCkFzIHNlZW4gaW4gdGhlIHRhYmxlLCBtb3N0IG1lYXN1cmVzIHNob3dlZCBhIHNpZ25pZmljYW50IHJlc3VsdCwKaW5kaWNhdGluZyBub24tbm9ybWFsaXR5LiBUaGUgdmlzdWFsIGluc3BlY3Rpb24gb2YgdGhlIFEtUSBwbG90cyB3YXMKY29tcGxldGVkIG5leHQuCgpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgc2hvdyB0YWJsZSB1c2luZyBrYWJsZQprYWJsZShjb3Jyc19yZWdfbm9ybV90ZXN0c190LCBjYXB0aW9uID0gIlNoYXBpcm8tV2lsa3MgTm9ybWFsaXR5IFRlc3QgZm9yIEFsbCBNZWFzdXJlcyIsIGFsaWduID0gcmVwKCdsY2NjYycpKSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogIGFkZF9oZWFkZXJfYWJvdmUoYygiICIsICJTT05BIiA9IDIsICJNdHVyayIgPSAyKSkgJT4lCiAgcGFja19yb3dzKCJDcml0ZXJpb24ocykiLCAxLCA2KSAlPiUKICAjIGNvbHVtbl9zcGVjKDEsIHdpZHRoID0gIjEwZW0iKSAlPiUgCiAgcGFja19yb3dzKCJQcmVkaWN0b3IocykiLCA3LCAxOSkgJT4lCiAgZm9vdG5vdGUoZ2VuZXJhbCA9ICJOb3JtYWxpdHkgaXMgbWV0IGZvciBub24tc2lnbmlmaWNhbnQgcC12YWx1ZXMgKGkuZS4sIGdyZWF0ZXIgdGhhbiAwLjA1KS4iKSAlPiUgCiAgY29sdW1uX3NwZWMoYyg0KSwgYm9yZGVyX2xlZnQgPSBUKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCmBgYAoKIyMjIChiKSBRLVEgUGxvdHMKCjxkZXRhaWxzPgoKPHN1bW1hcnk+CgpPdmVyYWxsLCB0aGUgUS1RIHBsb3RzIHNob3cgdGhlIGRhdGEgZm9yIGFsbCBtZWFzdXJlcyBleGNlcHQgYWdlIGFuZCBhZ2UKb2YgZmlyc3Qgc21hcnRwaG9uZSBkaWQgZmFsbCBhbG9uZyBvciBjbG9zZSB0byB0aGUgbGluZS4gVGhlIGFnZQptZWFzdXJlcyB3ZXJlIG5vdCBleHBlY3RlZCB0byBiZSBub3JtYWxseSBkaXN0cmlidXRlZDsgdGhlcmVmb3JlLCB0aGUKYW5hbHlzaXMgd2FzIGNvbXBsZXRlZCBmb3IgZWFjaCBtZWFzdXJlLiAqKGNsaWNrIHRvIHNlZSBjb2RlKSoKCjwvc3VtbWFyeT4KCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZXZhbD1UUlVFfQojIFNPTkEgLSBBbGwKZ3JpZC5hcnJhbmdlKGdncXFwbG90KFNPTkFfZGF0YSROTVBRX3N1bSwgeWxhYiA9ICJOTVBRIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkU0FEX3N1bSwgeWxhYiA9ICJTQUQiKSwKICAgICAgICAgICAgIGdncXFwbG90KFNPTkFfZGF0YSRTQURfZGVwX3N1bSwgeWxhYiA9ICJTQURfZGVwIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkU0FEX2FjY2Vzc19zdW0sIHlsYWIgPSAiU0FEX2FjY2VzcyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoU09OQV9kYXRhJFNBRF9lYV9zdW0sIHlsYWIgPSAiU0FEX2VhIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkU0FEX2Rpc3Rfc3VtLCB5bGFiID0gIlNBRF9kaXN0IiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkYWdlLCB5bGFiID0gImFnZSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoU09OQV9kYXRhJFNSU19zdW0sIHlsYWIgPSAiU1JTIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkREFTU19EX3N1bSwgeWxhYiA9ICJEQVNTX0QiKSwKICAgICAgICAgICAgIGdncXFwbG90KFNPTkFfZGF0YSREQVNTX0Ffc3VtLCB5bGFiID0gIkRBU1NfQSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoU09OQV9kYXRhJERBU1NfU19zdW0sIHlsYWIgPSAiREFTU19TIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkQklTX3N1bSwgeWxhYiA9ICJCSVMiKSwKICAgICAgICAgICAgIGdncXFwbG90KFNPTkFfZGF0YSRTU0VJVF9zdW0sIHlsYWIgPSAiU1NFSVQiKSwKICAgICAgICAgICAgIGdncXFwbG90KFNPTkFfZGF0YSRSU0VTX3N1bSwgeWxhYiA9ICJSU0VTIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkTkVPX05fc3VtLCB5bGFiID0gIk5FT19OIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkTkVPX0Vfc3VtLCB5bGFiID0gIk5FT19FIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkTkVPX09fc3VtLCB5bGFiID0gIk5FT19PIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkTkVPX0Ffc3VtLCB5bGFiID0gIk5FT19BIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChTT05BX2RhdGEkTkVPX0Nfc3VtLCB5bGFiID0gIk5FT19DIiksCiAgICAgICAgICAgICBucm93ID0gNCwKICAgICAgICAgICAgIHRvcCA9IHRleHRfZ3JvYigiUS1RIFBsb3RzIEZvciBTT05BIC0gQUxMIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICJib2xkIiksIAogICAgICAgICAgICAgYm90dG9tID0gdGV4dF9ncm9iKCJOb3JtYWxpdHkgaXMgbWV0IGZvciBwbG90cyB3ZXJlIGRhdGEgZmFsbHMgYWxvbmcgb3IgY2xvc2UgdG8gdGhlIGxpbmUuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICJpdGFsaWMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMC4wNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAwKQogICAgICAgICAgICAgKQojIGZvciBNVFVSSyAtIEFMTApncmlkLmFycmFuZ2UoZ2dxcXBsb3QoTXR1cmtfZGF0YSROTVBRX3N1bSwgeWxhYiA9ICJOTVBRIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChNdHVya19kYXRhJFNBRF9zdW0sIHlsYWIgPSAiU0FEIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChNdHVya19kYXRhJFNBRF9kZXBfc3VtLCB5bGFiID0gIlNBRF9kZXAiKSwKICAgICAgICAgICAgIGdncXFwbG90KE10dXJrX2RhdGEkU0FEX2FjY2Vzc19zdW0sIHlsYWIgPSAiU0FEX2FjY2VzcyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRTQURfZWFfc3VtLCB5bGFiID0gIlNBRF9lYSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRTQURfZGlzdF9zdW0sIHlsYWIgPSAiU0FEX2Rpc3QiKSwKICAgICAgICAgICAgIGdncXFwbG90KE10dXJrX2RhdGEkYWdlLCB5bGFiID0gImFnZSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRTUlNfc3VtLCB5bGFiID0gIlNSUyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSREQVNTX0Rfc3VtLCB5bGFiID0gIkRBU1NfRCIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSREQVNTX0Ffc3VtLCB5bGFiID0gIkRBU1NfQSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSREQVNTX1Nfc3VtLCB5bGFiID0gIkRBU1NfUyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRCSVNfc3VtLCB5bGFiID0gIkJJUyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRTU0VJVF9zdW0sIHlsYWIgPSAiU1NFSVQiKSwKICAgICAgICAgICAgIGdncXFwbG90KE10dXJrX2RhdGEkUlNFU19zdW0sIHlsYWIgPSAiUlNFUyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRORU9fTl9zdW0sIHlsYWIgPSAiTkVPX04iKSwKICAgICAgICAgICAgIGdncXFwbG90KE10dXJrX2RhdGEkTkVPX0Vfc3VtLCB5bGFiID0gIk5FT19FIiksCiAgICAgICAgICAgICBnZ3FxcGxvdChNdHVya19kYXRhJE5FT19PX3N1bSwgeWxhYiA9ICJORU9fTyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoTXR1cmtfZGF0YSRORU9fQV9zdW0sIHlsYWIgPSAiTkVPX0EiKSwKICAgICAgICAgICAgIGdncXFwbG90KE10dXJrX2RhdGEkTkVPX0Nfc3VtLCB5bGFiID0gIk5FT19DIiksCiAgICAgICAgICAgICBucm93ID0gNCwKICAgICAgICAgICAgIHRvcCA9IHRleHRfZ3JvYigiUS1RIFBsb3RzIEZvciBNdHVyayAtIEFMTCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICAgICAgIGJvdHRvbSA9IHRleHRfZ3JvYigiTm9ybWFsaXR5IGlzIG1ldCBmb3IgcGxvdHMgd2VyZSBkYXRhIGZhbGxzIGFsb25nIG9yIGNsb3NlIHRvIHRoZSBsaW5lLiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiaXRhbGljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAuMDUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhqdXN0ID0gMCkKICAgICAgICAgICAgICkKYGBgCgo8L2RldGFpbHM+CgojIyMgKGMpIEhpc3RvZ3JhbSBQbG90cwoKPGRldGFpbHM+Cgo8c3VtbWFyeT4KCk92ZXJhbGwsIHRoZSBRLVEgcGxvdHMgc2hvdyB0aGUgZGF0YSBmb3IgYWxsIG1lYXN1cmVzIGV4Y2VwdCBhZ2UgYW5kIGFnZQpvZiBmaXJzdCBzbWFydHBob25lIGRpZCBmYWxsIGFsb25nIG9yIGNsb3NlIHRvIHRoZSBsaW5lLiBUaGUgYWdlCm1lYXN1cmVzIHdlcmUgbm90IGV4cGVjdGVkIHRvIGJlIG5vcm1hbGx5IGRpc3RyaWJ1dGVkOyB0aGVyZWZvcmUsIHRoZQphbmFseXNpcyB3YXMgY29tcGxldGVkIGZvciBlYWNoIG1lYXN1cmUuICooY2xpY2sgdG8gc2VlIGNvZGUpKgoKPC9zdW1tYXJ5PgoKYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBldmFsPVRSVUV9CiMgU09OQSAtIEFsbApncmlkLmFycmFuZ2UocXBsb3QoU09OQV9kYXRhJE5NUFFfc3VtLCBtYWluID0gIk5NUFEiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICAgICMgcXBsb3QoU09OQV9kYXRhJE5NUFFfc3VtLCBnZW9tID0gImRlbnNpdHkiKSwKICAgICAgICAgICAgIHFwbG90KFNPTkFfZGF0YSRTQURfc3VtLCBtYWluID0gIlNBRCIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KFNPTkFfZGF0YSRTQURfZGVwX3N1bSwgbWFpbiA9ICJTQURfZGVwIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoU09OQV9kYXRhJFNBRF9hY2Nlc3Nfc3VtLCBtYWluID0gIlNBRF9hY2Nlc3MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkU0FEX2VhX3N1bSwgbWFpbiA9ICJTQURfZWEiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkU0FEX2Rpc3Rfc3VtLCBtYWluID0gIlNBRF9kaXN0IiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoU09OQV9kYXRhJGFnZSwgbWFpbiA9ICJhZ2UiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkU1JTX3N1bSwgbWFpbiA9ICJTUlMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkREFTU19EX3N1bSwgbWFpbiA9ICJEQVNTX0QiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkREFTU19BX3N1bSwgbWFpbiA9ICJEQVNTX0EiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkREFTU19TX3N1bSwgbWFpbiA9ICJEQVNTX1MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkQklTX3N1bSwgbWFpbiA9ICJCSVMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkU1NFSVRfc3VtLCBtYWluID0gIlNTRUlUIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoU09OQV9kYXRhJFJTRVNfc3VtLCBtYWluID0gIlJTRVMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkTkVPX05fc3VtLCBtYWluID0gIk5FT19OIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoU09OQV9kYXRhJE5FT19FX3N1bSwgbWFpbiA9ICJORU9fRSIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KFNPTkFfZGF0YSRORU9fT19zdW0sIG1haW4gPSAiTkVPX08iLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChTT05BX2RhdGEkTkVPX0Ffc3VtLCBtYWluID0gIk5FT19BIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoU09OQV9kYXRhJE5FT19DX3N1bSwgbWFpbiA9ICJORU9fQyIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIG5yb3cgPSA0LAogICAgICAgICAgICAgdG9wID0gdGV4dF9ncm9iKCJIaXN0b2dyYW0gRm9yIFNPTkEgRGF0YSAtIEFMTCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICAgICAgIGJvdHRvbSA9IHRleHRfZ3JvYigiTm9ybWFsaXR5IGlzIG1ldCBmb3IgcGxvdHMgd2VyZSBkYXRhIGZhbGxzIGFsb25nIG9yIGNsb3NlIHRvIGEgbm9ybWFsIGN1cnZlLiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiaXRhbGljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAuMDUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhqdXN0ID0gMCkKICAgICAgICAgICAgICkKIyBmb3IgTVRVUksgLSBBTEwKZ3JpZC5hcnJhbmdlKHFwbG90KE10dXJrX2RhdGEkTk1QUV9zdW0sIG1haW4gPSAiTk1QUSIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgICAgIyBxcGxvdChNdHVya19kYXRhJE5NUFFfc3VtLCBnZW9tID0gImRlbnNpdHkiKSwKICAgICAgICAgICAgIHFwbG90KE10dXJrX2RhdGEkU0FEX3N1bSwgbWFpbiA9ICJTQUQiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJFNBRF9kZXBfc3VtLCBtYWluID0gIlNBRF9kZXAiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJFNBRF9hY2Nlc3Nfc3VtLCBtYWluID0gIlNBRF9hY2Nlc3MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJFNBRF9lYV9zdW0sIG1haW4gPSAiU0FEX2VhIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoTXR1cmtfZGF0YSRTQURfZGlzdF9zdW0sIG1haW4gPSAiU0FEX2Rpc3QiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJGFnZSwgbWFpbiA9ICJhZ2UiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJFNSU19zdW0sIG1haW4gPSAiU1JTIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoTXR1cmtfZGF0YSREQVNTX0Rfc3VtLCBtYWluID0gIkRBU1NfRCIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KE10dXJrX2RhdGEkREFTU19BX3N1bSwgbWFpbiA9ICJEQVNTX0EiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJERBU1NfU19zdW0sIG1haW4gPSAiREFTU19TIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoTXR1cmtfZGF0YSRCSVNfc3VtLCBtYWluID0gIkJJUyIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KE10dXJrX2RhdGEkU1NFSVRfc3VtLCBtYWluID0gIlNTRUlUIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoTXR1cmtfZGF0YSRSU0VTX3N1bSwgbWFpbiA9ICJSU0VTIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoTXR1cmtfZGF0YSRORU9fTl9zdW0sIG1haW4gPSAiTkVPX04iLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJE5FT19FX3N1bSwgbWFpbiA9ICJORU9fRSIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KE10dXJrX2RhdGEkTkVPX09fc3VtLCBtYWluID0gIk5FT19PIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoTXR1cmtfZGF0YSRORU9fQV9zdW0sIG1haW4gPSAiTkVPX0EiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdChNdHVya19kYXRhJE5FT19DX3N1bSwgbWFpbiA9ICJORU9fQyIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIG5yb3cgPSA0LAogICAgICAgICAgICAgdG9wID0gdGV4dF9ncm9iKCJIaXN0b2dyYW0gRm9yIE10dXJrIERhdGEgLSBBTEwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gImJvbGQiKSwgCiAgICAgICAgICAgICBib3R0b20gPSB0ZXh0X2dyb2IoIk5vcm1hbGl0eSBpcyBtZXQgZm9yIHBsb3RzIHdlcmUgZGF0YSBmYWxscyBhbG9uZyBvciBjbG9zZSB0byBhIG5vcm1hbCBjdXJ2ZS4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIml0YWxpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwLjA1LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoanVzdCA9IDApCiAgICAgICAgICAgICApCmBgYAoKPC9kZXRhaWxzPgoKIyMgQ29ycmVsYXRpb25zCgpHZXQgY29ycmVsYXRpb25zIGIvdyBhbGwgY29udCB2YXJzIGZvciAoMSkgYWxsIGRhdGEgYW5kICgyKSBTVCBkYXRhCm9ubHkuCgojIyMgQWxsIERhdGEKCkFsbCBkYXRhIGNvbGxlY3RlZCB3YXMgYW5hbHl6ZWQuIFRoaXMgd2FzIGRvbmUgZm9yCmByIG5yb3coU09OQV9kYXRhKWBTT05BIHBzIGFuZCBgciBucm93KE10dXJrX2RhdGEpYCBNdHVyayBwcy4gXCNcI1wjXCMKCiMjIyMgU3R1ZHkgMTogU09OQQoKYGBge3IgfQpzb25hX2NvcnIgPC0gCiAgU09OQV9kYXRhICU+JSAKICAjIHNlbGVjdChhZ2UsIGFnZV9maXJzdF9waG9uZSwgY29tX2dlbjpjb21fcm9vbV90YXNrLCBkaXN0X2RhaWx5LCBkaXN0X3N0dWR5LCBlbmRzX3dpdGgoIl9zdW0iKSkgJT4lCiAgc2VsZWN0KGFnZSwgYWdlX2ZpcnN0X3Bob25lLCBjb21fZ2VuOmNvbV9yb29tX3Rhc2ssIGRpc3RfZGFpbHksIGRpc3Rfc3R1ZHksIAogICAgICAgICBOTVBRX3N1bSwgCiAgICAgICAgIFNBRF9zdW0sIFNBRF9kZXBfc3VtLCBTQURfZWFfc3VtLCBTQURfYWNjZXNzX3N1bSwgU0FEX2Rpc3Rfc3VtLCAjIGFkZCBvciByZW1vdmUgdGhlIFNBRCBzdWJzY2FsZXMgLyBvdmVyYWxsCiAgICAgICAgIEJJU19zdW0sIE5FT19PX3N1bSwgTkVPX0Nfc3VtLCBORU9fRV9zdW0sIE5FT19BX3N1bSwgTkVPX05fc3VtLCBSU0VTX3N1bSwgU1JTX3N1bSwgU1NFSVRfc3VtLCBEQVNTX0Rfc3VtLCBEQVNTX0Ffc3VtLCBEQVNTX1Nfc3VtKSAlPiUgCiAgYXMubWF0cml4KCkgJT4lIAogIEhtaXNjOjpyY29ycih0eXBlID0gYygicGVhcnNvbiIpKQoKIyBjcmVhdGUgbmV3IHBpbG90X2NvcnIgdG8gc2hvd24gb25seSBsb3dlciB0cmlhbmdsZS4uLiAKc29uYV9jb3JyMiA8LSBzb25hX2NvcnIKIyByb3VuZCB0byA0IGRlY2ltYWxzLi4uIApzb25hX2NvcnIyJHIgPC0gcm91bmQoc29uYV9jb3JyMiRyLCA0KQpzb25hX2NvcnIyJFAgPC0gcm91bmQoc29uYV9jb3JyMiRQLCA0KQpzb25hX2NvcnIyJG4gPC0gcm91bmQoc29uYV9jb3JyMiRuLCA0KQojIHJlbW92ZSB1cHBlciB0cmlhbmdsZSBmb3JtIHIsIHAsIGFuZCBuCnNvbmFfY29ycjIkclt1cHBlci50cmkoc29uYV9jb3JyMiRyKV0gPC0gIi0iCnNvbmFfY29ycjIkUFt1cHBlci50cmkoc29uYV9jb3JyMiRQKV0gPC0gIi0iCnNvbmFfY29ycjIkblt1cHBlci50cmkoc29uYV9jb3JyMiRuKV0gPC0gIi0iCgojIHNob3cgY29yciB0YWJsZSB3aXRoIGZsYXR0ZW5Db3JyCgprYWJsZShmbGF0dGVuQ29yck1hdHJpeChzb25hX2NvcnIkciwgc29uYV9jb3JyJFApLCBjYXB0aW9uID0gIlNPTkEgU3R1ZHkgLSBDb3JyZWxhdGlvbjogRmxhdCIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJob3ZlciIsICJzdHJpcGVkIiksIGZ1bGxfd2lkdGggPSBGKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCgojIHByaW50IHRhYmxlcyB1c2luZyBrYWJsZQprYWJsZShhcy5kYXRhLmZyYW1lKGZvcm1hdChzb25hX2NvcnIyJHIsIHNjaWVudGlmaWMgPSBGQUxTRSkpLCBjYXB0aW9uID0gIlNPTkEgU3R1ZHkgLSBDb3JyZWxhdGlvbjogciB2YWx1ZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQogIAoKa2FibGUoYXMuZGF0YS5mcmFtZShmb3JtYXQoc29uYV9jb3JyMiRQLCBzY2llbnRpZmljID0gRkFMU0UpKSwgY2FwdGlvbiA9ICJTT05BIFN0dWR5IC0gQ29ycmVsYXRpb246IHAgdmFsdWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoImhvdmVyIiwgInN0cmlwZWQiKSwgZnVsbF93aWR0aCA9IEYpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKGFzLmRhdGEuZnJhbWUoZm9ybWF0KHNvbmFfY29ycjIkbiwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiU09OQSBTdHVkeSAtIENvcnJlbGF0aW9uOiBuIHZhbHVlcyIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJob3ZlciIsICJzdHJpcGVkIiksIGZ1bGxfd2lkdGggPSBGKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCgojIGNyZWF0ZSBuZXcgbWF0cml4IGZvciByICYgcCB2YWxzIHdpdGggZGlmZmVyZW50IGNvbCBuYW1lcwogICMgZ2V0IGFnZSwgYWdlX2ZpcnN0X3Bob25lLCBkaXN0X2RhaWx5LCBhbmQgYWxsIHF1ZXMgZGF0YSAoMjEgPSBTQUQgb3ZlcmFsbC0tbm90IHVzZWQpCnNvbmFfY29ycl9yIDwtIHNvbmFfY29yciRyW2MoMTA6MTUsIDEsIDE2OjI3KSxjKDEwOjE1LCAxLCAxNjoyNyldCiAgY29sbmFtZXMoc29uYV9jb3JyX3IpIDwtIGMoIk5NUFEiLCAiU0FEIiwgIlNBRDogRGVwLiIsICJTQUQ6IEVBIiwgIlNBRDogQSIsICJTQUQ6IERpc3QuIiwgIkFnZSIsICJCSVMiLCAiTkVPOiBPIiwgIk5FTzogQyIsICJORU86IEUiLCAiTkVPOiBBIiwgIk5FTzogTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTOiBEIiwgIkRBU1M6IEEiLCAiREFTUzogUyIpCiAgcm93bmFtZXMoc29uYV9jb3JyX3IpIDwtIGMoIk5NUFEiLCAiU0FEIiwgIlNBRDogRGVwLiIsICJTQUQ6IEVBIiwgIlNBRDogQSIsICJTQUQ6IERpc3QuIiwgIkFnZSIsICJCSVMiLCAiTkVPOiBPIiwgIk5FTzogQyIsICJORU86IEUiLCAiTkVPOiBBIiwgIk5FTzogTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTOiBEIiwgIkRBU1M6IEEiLCAiREFTUzogUyIpCiAgCnNvbmFfY29ycl9wIDwtIHNvbmFfY29yciRQW2MoMTA6MTUsIDEsIDE2OjI3KSxjKDEwOjE1LCAxLCAxNjoyNyldCiAgY29sbmFtZXMoc29uYV9jb3JyX3IpIDwtIGMoIk5NUFEiLCAiU0FEIiwgIlNBRDogRGVwLiIsICJTQUQ6IEVBIiwgIlNBRDogQSIsICJTQUQ6IERpc3QuIiwgIkFnZSIsICJCSVMiLCAiTkVPOiBPIiwgIk5FTzogQyIsICJORU86IEUiLCAiTkVPOiBBIiwgIk5FTzogTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTOiBEIiwgIkRBU1M6IEEiLCAiREFTUzogUyIpCiAgcm93bmFtZXMoc29uYV9jb3JyX3IpIDwtIGMoIk5NUFEiLCAiU0FEIiwgIlNBRDogRGVwLiIsICJTQUQ6IEVBIiwgIlNBRDogQSIsICJTQUQ6IERpc3QuIiwgIkFnZSIsICJCSVMiLCAiTkVPOiBPIiwgIk5FTzogQyIsICJORU86IEUiLCAiTkVPOiBBIiwgIk5FTzogTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTOiBEIiwgIkRBU1M6IEEiLCAiREFTUzogUyIpCgoKIyBjcmVhdGUgY29sb3VyIHBhbGxldCBmb3IgY29yciBtYXRyaXgKIyBjb3JyX2NvbG91cnMgPC0gYygiIzdFMTA0NCIsICIjOTgxNTcwIiwgIiNGM0Y1RjciLCAiIzQ5MTI5NiIsICIjMTcwRkE3IikKY29ycl9jb2xvdXJzIDwtIGMoIiM5ODQxMEIiLCAiI0YwODAzQyIsICIjRERBNDQ4IiwgIiNGN0Y3RkYiLCAiIzNGODI2RCIsICIjMDg2MDVGIiwgIiM0MTQ1MzUiKQoKIyBhbGwgdmFycyBpbmNsdWRlZApjb3JyX3Bsb3Rfc29uYV9hbGwgPC0gewogIGNvcnJwbG90KHNvbmFfY29yciRyLCBtZXRob2QgPSAnY29sb3InLAogICAgICAgICBjb2wgPSAoY29sb3JSYW1wUGFsZXR0ZShjb3JyX2NvbG91cnMpKDUwMDApKSwKICAgICAgICAgIyB0eXBlID0gInVwcGVyIiwKICAgICAgICAgZGlhZyA9IEYsICMgcmVtb3ZlIGNlbnRyYWwgZGlhZ29uYWwKICAgICAgICAgdGwuY29sID0gImJsYWNrIiwgdGwuc3J0ID0gOTAsIHRsLmNleCA9IC44LCAjVGV4dCBsYWJlbCBjb2xvciBhbmQgcm90YXRpb24KICAgICAgICAgYWRkZ3JpZC5jb2wgPSBOQSwgIyBhZGQgZ3JpZCBjb2xvdXIKICAgICAgICAgIyBhZGRDb2VmLmNvbCA9ICJibGFjayIsICMgQWRkIGNvZWZmaWNpZW50IG9mIGNvcnJlbGF0aW9uCiAgICAgICAgICMgYWRkQ29lZmFzUGVyY2VudCA9IFQgIyBhZGQgYXMgY29lZmZpY2llbnQgYXMgcGVyY2VudAogICAgICAgICAjIG51bWJlci5jZXggPSAuMjUsICMgc2l6ZSBvZiB0aGUgY29lZmYKICAgICAgICAgIyBudW1iZXIuZGlnaXRzID0gMiwgIyBudW0gZGVjaW1hbHMgaW4gY29lZmYKICAgICAgICAgcC5tYXQgPSBzb25hX2NvcnIkUCwgc2lnLmxldmVsID0gYyguMDAxLCAuMDEsIC4wNSksCiAgICAgICAgIGluc2lnID0gImxhYmVsX3NpZyIsIHBjaC5jZXggPSAuNSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCgojIHdpdGggYWxsIFNBRCBzdWJzY2FsZXMKY29ycl9wbG90X3NvbmFfcXVlc19hbGwgPC0gewogIGNvcnJwbG90KHNvbmFfY29ycl9yLCBtZXRob2QgPSAnY29sb3InLAogICAgICAgICBjb2wgPSAoY29sb3JSYW1wUGFsZXR0ZShjb3JyX2NvbG91cnMpKDUwMDApKSwKICAgICAgICAgIyB0eXBlID0gInVwcGVyIiwKICAgICAgICAgZGlhZyA9IEYsICMgcmVtb3ZlIGNlbnRyYWwgZGlhZ29uYWwKICAgICAgICAgdGwuY29sID0gImJsYWNrIiwgdGwuc3J0ID0gOTAsIHRsLmNleCA9IC44LCAjVGV4dCBsYWJlbCBjb2xvciBhbmQgcm90YXRpb24KICAgICAgICAgYWRkZ3JpZC5jb2wgPSBOQSwgIyBhZGQgZ3JpZCBjb2xvdXIKICAgICAgICAgIyBhZGRDb2VmLmNvbCA9ICJibGFjayIsICMgQWRkIGNvZWZmaWNpZW50IG9mIGNvcnJlbGF0aW9uCiAgICAgICAgICMgYWRkQ29lZmFzUGVyY2VudCA9IFQgIyBhZGQgYXMgY29lZmZpY2llbnQgYXMgcGVyY2VudAogICAgICAgICAjIG51bWJlci5jZXggPSAuMjUsICMgc2l6ZSBvZiB0aGUgY29lZmYKICAgICAgICAgIyBudW1iZXIuZGlnaXRzID0gMiwgIyBudW0gZGVjaW1hbHMgaW4gY29lZmYKICAgICAgICAgcC5tYXQgPSBzb25hX2NvcnJfcCwgc2lnLmxldmVsID0gYyguMDAxLCAuMDEsIC4wNSksCiAgICAgICAgIGluc2lnID0gImxhYmVsX3NpZyIsIHBjaC5jZXggPSAuNzUsIHBjaC5jb2wgPSAiYmxhY2siCiAgICAgICAgICMgaW5zaWcgPSAiYmxhbmsiIyBpbnNpZyA9ICJwY2giLCBwY2ggPSAxMCwgcGNoLmNvbCA9ICJyZWQiLCBwY2guY2V4ID0gLjEsICMgYWRkIHRoaXMgaW5zdGVhZCBvZiBpbnNpZyBhYm92ZSB0byBkZW5vdCBpbnNpZyBwIHZhbHVlcyB3aXRoIHJlZCBkb3QKICAgICAgICAgKQogIHJlY29yZFBsb3QoKQp9CgojIGZpbmFsIC0tIHdpdGggU0FEIG92ZXJhbGwgb25seQpjb3JyX3Bsb3Rfc29uYV9xdWVzX2ZpbmFsIDwtIHsKICBjb3JycGxvdChzb25hX2NvcnJfcltjKDEsMiw3OjE5KSwgYygxLDIsNzoxOSldLCBtZXRob2QgPSAnY29sb3InLAogICAgICAgICBjb2wgPSAoY29sb3JSYW1wUGFsZXR0ZShjb3JyX2NvbG91cnMpKDUwMDApKSwKICAgICAgICAgIyB0eXBlID0gInVwcGVyIiwKICAgICAgICAgZGlhZyA9IEYsICMgcmVtb3ZlIGNlbnRyYWwgZGlhZ29uYWwKICAgICAgICAgdGwuY29sID0gImJsYWNrIiwgdGwuc3J0ID0gOTAsIHRsLmNleCA9IC44LCAjVGV4dCBsYWJlbCBjb2xvciBhbmQgcm90YXRpb24KICAgICAgICAgYWRkZ3JpZC5jb2wgPSBOQSwgIyBhZGQgZ3JpZCBjb2xvdXIKICAgICAgICAgIyBhZGRDb2VmLmNvbCA9ICJibGFjayIsICMgQWRkIGNvZWZmaWNpZW50IG9mIGNvcnJlbGF0aW9uCiAgICAgICAgICMgYWRkQ29lZmFzUGVyY2VudCA9IFQgIyBhZGQgYXMgY29lZmZpY2llbnQgYXMgcGVyY2VudAogICAgICAgICAjIG51bWJlci5jZXggPSAuMjUsICMgc2l6ZSBvZiB0aGUgY29lZmYKICAgICAgICAgIyBudW1iZXIuZGlnaXRzID0gMiwgIyBudW0gZGVjaW1hbHMgaW4gY29lZmYKICAgICAgICAgcC5tYXQgPSBzb25hX2NvcnJfcFtjKDEsMiw3OjE5KSwgYygxLDIsNzoxOSldLCBzaWcubGV2ZWwgPSBjKC4wMDEsIC4wMSwgLjA1KSwKICAgICAgICAgaW5zaWcgPSAibGFiZWxfc2lnIiwgcGNoLmNleCA9IC43NSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCiMgZXhwb3J0IGNvcnIgbWF0cml4IHVzaW5nIGdnc2F2ZSgpICYgcmVwbGF5UGxvdCgpIHRvIGNhbGwgb24gcHJldmlvdXNseSBtYWRlIHBsb3QKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL2NvcnJfcGxvdF9zb25hX2FsbChvY3QyOCkiLCBwbG90ID0gcmVwbGF5UGxvdChjb3JyX3Bsb3Rfc29uYV9hbGwpLCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDUsIHdpZHRoID0gOCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQoKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL2NvcnJfcGxvdF9zb25hX3F1ZXNfYWxsKG9jdDI4KSIsIHBsb3QgPSByZXBsYXlQbG90KGNvcnJfcGxvdF9zb25hX3F1ZXNfYWxsKSwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA1LCB3aWR0aCA9IDgsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9jb3JyX3Bsb3Rfc29uYV9xdWVzX2ZpbmFsKG9jdDI4KSIsIHBsb3QgPSByZXBsYXlQbG90KGNvcnJfcGxvdF9zb25hX3F1ZXNfZmluYWwpLCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDUsIHdpZHRoID0gOCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQoKIyBleHBvcnQgY3N2IGZpbGVzIG9mIFIgdmFsdWVzICYgcCB2YWx1ZXMKICB3cml0ZS5jc3Yoc29uYV9jb3JyJHIsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvc29uYV9jb3JyX3J2YWxzKG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBUKQogIAogIHdyaXRlLmNzdihzb25hX2NvcnIkUCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX2NvcnJfcHZhbHMob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCmBgYAoKIyMjIyBTdHVkeSAyOiBNdHVyawoKYGBge3IgfQptdHVya19jb3JyIDwtIAogIE10dXJrX2RhdGEgJT4lIAogICMgc2VsZWN0KGFnZSwgYWdlX2ZpcnN0X3Bob25lLCBjb21fZ2VuOmNvbV9yb29tX3Rhc2ssIGRpc3RfZGFpbHksIGRpc3Rfc3R1ZHksIGVuZHNfd2l0aCgiX3N1bSIpKSAlPiUKICBzZWxlY3QoYWdlLCBhZ2VfZmlyc3RfcGhvbmUsIGNvbV9nZW46Y29tX3Jvb21fdGFzaywgZGlzdF9kYWlseSwgZGlzdF9zdHVkeSwgCiAgICAgICAgIE5NUFFfc3VtLCAKICAgICAgICAgU0FEX3N1bSwgU0FEX2RlcF9zdW0sIFNBRF9lYV9zdW0sIFNBRF9hY2Nlc3Nfc3VtLCBTQURfZGlzdF9zdW0sICMgYWRkIG9yIHJlbW92ZSB0aGUgU0FEIHN1YnNjYWxlcyAvIG92ZXJhbGwKICAgICAgICAgQklTX3N1bSwgTkVPX09fc3VtLCBORU9fQ19zdW0sIE5FT19FX3N1bSwgTkVPX0Ffc3VtLCBORU9fTl9zdW0sIFJTRVNfc3VtLCBTUlNfc3VtLCBTU0VJVF9zdW0sIERBU1NfRF9zdW0sIERBU1NfQV9zdW0sIERBU1NfU19zdW0pICU+JSAKICBhcy5tYXRyaXgoKSAlPiUgCiAgSG1pc2M6OnJjb3JyKHR5cGUgPSBjKCJwZWFyc29uIikpCgojIGNyZWF0ZSBuZXcgcGlsb3RfY29yciB0byBzaG93biBvbmx5IGxvd2VyIHRyaWFuZ2xlLi4uIAptdHVya19jb3JyMiA8LSBtdHVya19jb3JyCiMgcm91bmQgdG8gNCBkZWNpbWFscy4uLiAKbXR1cmtfY29ycjIkciA8LSByb3VuZChtdHVya19jb3JyMiRyLCA0KQptdHVya19jb3JyMiRQIDwtIHJvdW5kKG10dXJrX2NvcnIyJFAsIDQpCm10dXJrX2NvcnIyJG4gPC0gcm91bmQobXR1cmtfY29ycjIkbiwgNCkKIyByZW1vdmUgdXBwZXIgdHJpYW5nbGUgZm9ybSByLCBwLCBhbmQgbgptdHVya19jb3JyMiRyW3VwcGVyLnRyaShtdHVya19jb3JyMiRyKV0gPC0gIi0iCm10dXJrX2NvcnIyJFBbdXBwZXIudHJpKG10dXJrX2NvcnIyJFApXSA8LSAiLSIKbXR1cmtfY29ycjIkblt1cHBlci50cmkobXR1cmtfY29ycjIkbildIDwtICItIgoKIyBzaG93IGNvcnIgdGFibGUgd2l0aCBmbGF0dGVuQ29ycgoKa2FibGUoZmxhdHRlbkNvcnJNYXRyaXgobXR1cmtfY29yciRyLCBtdHVya19jb3JyJFApLCBjYXB0aW9uID0gIk1UVVJLIFN0dWR5IC0gQ29ycmVsYXRpb246IEZsYXQiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyBwcmludCB0YWJsZXMgdXNpbmcga2FibGUKa2FibGUoYXMuZGF0YS5mcmFtZShmb3JtYXQobXR1cmtfY29ycjIkciwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiTVRVUksgU3R1ZHkgLSBDb3JyZWxhdGlvbjogciB2YWx1ZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQogIAoKa2FibGUoYXMuZGF0YS5mcmFtZShmb3JtYXQobXR1cmtfY29ycjIkUCwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiTVRVUksgU3R1ZHkgLSBDb3JyZWxhdGlvbjogcCB2YWx1ZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKa2FibGUoYXMuZGF0YS5mcmFtZShmb3JtYXQobXR1cmtfY29ycjIkbiwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiTVRVUksgU3R1ZHkgLSBDb3JyZWxhdGlvbjogbiB2YWx1ZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyBjcmVhdGUgbmV3IG1hdHJpeCBmb3IgciAmIHAgdmFscyB3aXRoIGRpZmZlcmVudCBjb2wgbmFtZXMKICAjIGdldCBhZ2UsIGFnZV9maXJzdF9waG9uZSwgZGlzdF9kYWlseSwgYW5kIGFsbCBxdWVzIGRhdGEgKDIxID0gU0FEIG92ZXJhbGwtLW5vdCB1c2VkKQptdHVya19jb3JyX3IgPC0gbXR1cmtfY29yciRyW2MoMTA6MTUsIDEsIDE2OjI3KSxjKDEwOjE1LCAxLCAxNjoyNyldCiAgY29sbmFtZXMobXR1cmtfY29ycl9yKSA8LSBjKCJOTVBRIiwgIlNBRCIsICJTQUQ6IERlcC4iLCAiU0FEOiBFQSIsICJTQUQ6IEEiLCAiU0FEOiBEaXN0LiIsICJBZ2UiLCAiQklTIiwgIk5FTzogTyIsICJORU86IEMiLCAiTkVPOiBFIiwgIk5FTzogQSIsICJORU86IE4iLCAiUlNFUyIsICJTUlMiLCAiU1NFSVQiLCAiREFTUzogRCIsICJEQVNTOiBBIiwgIkRBU1M6IFMiKQogIHJvd25hbWVzKG10dXJrX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICAKbXR1cmtfY29ycl9wIDwtIG10dXJrX2NvcnIkUFtjKDEwOjE1LCAxLCAxNjoyNyksYygxMDoxNSwgMSwgMTY6MjcpXQogIGNvbG5hbWVzKG10dXJrX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICByb3duYW1lcyhtdHVya19jb3JyX3IpIDwtIGMoIk5NUFEiLCAiU0FEIiwgIlNBRDogRGVwLiIsICJTQUQ6IEVBIiwgIlNBRDogQSIsICJTQUQ6IERpc3QuIiwgIkFnZSIsICJCSVMiLCAiTkVPOiBPIiwgIk5FTzogQyIsICJORU86IEUiLCAiTkVPOiBBIiwgIk5FTzogTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTOiBEIiwgIkRBU1M6IEEiLCAiREFTUzogUyIpCgoKIyBjcmVhdGUgY29sb3VyIHBhbGxldCBmb3IgY29yciBtYXRyaXgKIyBjb3JyX2NvbG91cnMgPC0gYygiIzdFMTA0NCIsICIjOTgxNTcwIiwgIiNGM0Y1RjciLCAiIzQ5MTI5NiIsICIjMTcwRkE3IikKY29ycl9jb2xvdXJzIDwtIGMoIiM5ODQxMEIiLCAiI0YwODAzQyIsICIjRERBNDQ4IiwgIiNGN0Y3RkYiLCAiIzNGODI2RCIsICIjMDg2MDVGIiwgIiM0MTQ1MzUiKQoKIyBhbGwgdmFycyBpbmNsdWRlZApjb3JyX3Bsb3RfbXR1cmtfYWxsIDwtIHsKICBjb3JycGxvdChtdHVya19jb3JyJHIsIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IG10dXJrX2NvcnIkUCwgc2lnLmxldmVsID0gYyguMDAxLCAuMDEsIC4wNSksCiAgICAgICAgIGluc2lnID0gImxhYmVsX3NpZyIsIHBjaC5jZXggPSAuNSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCgojIHdpdGggYWxsIFNBRCBzdWJzY2FsZXMKY29ycl9wbG90X210dXJrX3F1ZXNfYWxsIDwtIHsKICBjb3JycGxvdChtdHVya19jb3JyX3IsIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IG10dXJrX2NvcnJfcCwgc2lnLmxldmVsID0gYyguMDAxLCAuMDEsIC4wNSksCiAgICAgICAgIGluc2lnID0gImxhYmVsX3NpZyIsIHBjaC5jZXggPSAuNzUsIHBjaC5jb2wgPSAiYmxhY2siCiAgICAgICAgICMgaW5zaWcgPSAiYmxhbmsiIyBpbnNpZyA9ICJwY2giLCBwY2ggPSAxMCwgcGNoLmNvbCA9ICJyZWQiLCBwY2guY2V4ID0gLjEsICMgYWRkIHRoaXMgaW5zdGVhZCBvZiBpbnNpZyBhYm92ZSB0byBkZW5vdCBpbnNpZyBwIHZhbHVlcyB3aXRoIHJlZCBkb3QKICAgICAgICAgKQogIHJlY29yZFBsb3QoKQp9CgojIGZpbmFsIC0tIHdpdGggU0FEIG92ZXJhbGwgb25seQpjb3JyX3Bsb3RfbXR1cmtfcXVlc19maW5hbCA8LSB7CiAgY29ycnBsb3QobXR1cmtfY29ycl9yW2MoMSwyLDc6MTkpLCBjKDEsMiw3OjE5KV0sIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IG10dXJrX2NvcnJfcFtjKDEsMiw3OjE5KSwgYygxLDIsNzoxOSldLCBzaWcubGV2ZWwgPSBjKC4wMDEsIC4wMSwgLjA1KSwKICAgICAgICAgaW5zaWcgPSAibGFiZWxfc2lnIiwgcGNoLmNleCA9IC43NSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCiMgZXhwb3J0IGNvcnIgbWF0cml4IHVzaW5nIGdnc2F2ZSgpICYgcmVwbGF5UGxvdCgpIHRvIGNhbGwgb24gcHJldmlvdXNseSBtYWRlIHBsb3QKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL2NvcnJfcGxvdF9tdHVya19hbGwob2N0MjgpIiwgcGxvdCA9IHJlcGxheVBsb3QoY29ycl9wbG90X210dXJrX2FsbCksIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9jb3JyX3Bsb3RfbXR1cmtfcXVlc19hbGwob2N0MjgpIiwgcGxvdCA9IHJlcGxheVBsb3QoY29ycl9wbG90X210dXJrX3F1ZXNfYWxsKSwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA1LCB3aWR0aCA9IDgsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL2NvcnJfcGxvdF9tdHVya19xdWVzX2ZpbmFsKG9jdDI4KSIsIHBsb3QgPSByZXBsYXlQbG90KGNvcnJfcGxvdF9tdHVya19xdWVzX2ZpbmFsKSwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA1LCB3aWR0aCA9IDgsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKCiMgZXhwb3J0IGNzdiBmaWxlcyBvZiBSIHZhbHVlcyAmIHAgdmFsdWVzIAogIHdyaXRlLmNzdihtdHVya19jb3JyJHIsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvbXR1cmtfY29ycl9ydmFscyhvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKICAKICB3cml0ZS5jc3YobXR1cmtfY29yciRQLCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX2NvcnJfcHZhbHMob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCmBgYAoKCiMjIFJlZ3Jlc3Npb25zCgpBIHJlZ3Jlc3Npb24gYW5hbHlzaXMgd2FzIGNvbXBsZXRlZCB0byBpbnZlc3RpZ2F0ZSB3aGljaCBtZWFzdXJlIHdhcyBhCnNpZ25pZmljYW50IHByZWRpY3RvciBvZiBub21vcGhvYmlhIChOTVBRKSBhbmQgc21hcnRwaG9uZSBkZXBlbmRlbmN5CihTQUQ6IERlcC4pLgoKVGhlIExpbmVhciBtb2RlbHMgd2VyZSBhcyBmb2xsb3dzOgoKLSAgICROTVBRID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAotICAgJFNBRCA9IGFnZSArIEJJUyArIE5FTzogTyArIE5FTzogQyArIE5FTzogRSArIE5FTzogQSArIE5FTzogTiArIFJTRVMgKyBTUlMgKyBTU0VJVCArIERBU1M6IEQgKyBEQVNTOiBBICsgREFTUzogUyQKLSAgICRTQUQ6IERlcC4gPSBhZ2UgKyBCSVMgKyBORU86IE8gKyBORU86IEMgKyBORU86IEUgKyBORU86IEEgKyBORU86IE4gKyBSU0VTICsgU1JTICsgU1NFSVQgKyBEQVNTOiBEICsgREFTUzogQSArIERBU1M6IFMkCi0gICAkU0FEOiBBY2Nlc3MuID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAotICAgJFNBRDogRUEgPSBhZ2UgKyBCSVMgKyBORU86IE8gKyBORU86IEMgKyBORU86IEUgKyBORU86IEEgKyBORU86IE4gKyBSU0VTICsgU1JTICsgU1NFSVQgKyBEQVNTOiBEICsgREFTUzogQSArIERBU1M6IFMkCi0gICAkU0FEOiBEaXN0LiA9IGFnZSArIEJJUyArIE5FTzogTyArIE5FTzogQyArIE5FTzogRSArIE5FTzogQSArIE5FTzogTiArIFJTRVMgKyBTUlMgKyBTU0VJVCArIERBU1M6IEQgKyBEQVNTOiBBICsgREFTUzogUyQKCiMjIyBBbGwgRGF0YQoKIyMjIyBTdHVkeSAxOiBTT05BCgojIyMjIyBOTVBRCgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiROTVBRID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWduaWZpY2FudCwgRihgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfTk1QUSkkZnN0YXRpc3RpY1syXSlgLCBgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfTk1QUSkkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19OTVBRKSRmc3RhdGlzdGljWzFdKWAsIHAgYHIgcF9yb3VuZChhcy5udW1lcmljKHBmKHN1bW1hcnkoc29uYV9yZWdfTk1QUSkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShzb25hX3JlZ19OTVBRKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX05NUFEpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSkpYCwgUjIgPSBgciByb3VuZChzdW1tYXJ5KHNvbmFfcmVnX05NUFEpJHIuc3F1YXJlZCwgMilgCgpgYGB7cn0KIyBydW4gbG0Kc29uYV9yZWdfTk1QUSA8LSBsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gTk1QUV9zdW0gfiBhZ2UgKyBCSVNfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTUlNfc3VtICsgU1NFSVRfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtKQoKIyBzaG93IHN1bW1hcnkgb2YgbG0Kc3VtbWFyeShzb25hX3JlZ19OTVBRKQoKIyB1c2UgdGhpcyB0byBwbG90IGFzc3VtcHRpb24gcGxvdHMgKGUuZy4sIHEtcSkKIyBwbG90KHNvbmFfcmVnX05NUFEpCgojIHN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSwgZm9ybXVsYSA9IE5NUFFfc3VtIH4gTkVPX09fc3VtICsgTkVPX05fc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIGNyZWF0ZSB0YWJsZSBkZXBpY3RpbmcgbWFpbiBzdGF0cyB0byBleHBvcnQgbGF0ZXIKc29uYV9yZWdfTk1QUV90IDwtIAogICAgICByYmluZCh0aWR5KHNvbmFfcmVnX05NUFEpLCAjIHVzZSB0aWR5KCkgaW4gYnJvb20gcGFja2FnZQogICAgICB0aWJibGUoInRlcm0iID0gYygiZl9zdGF0IiwgIlIyL0Fkai5SMiIsICJOIiksIAogICAgICAgICAgICAgImVzdGltYXRlIiA9IGMoc3VtbWFyeShzb25hX3JlZ19OTVBRKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX05NUFEpJHIuc3F1YXJlZCwgbnJvdyhzb25hX3JlZ19OTVBRJG1vZGVsKSksIAogICAgICAgICAgICAgInN0ZC5lcnJvciIgPSBjKHN1bW1hcnkoc29uYV9yZWdfTk1QUSkkZnN0YXRpc3RpY1szXSwgc3VtbWFyeShzb25hX3JlZ19OTVBRKSRhZGouci5zcXVhcmVkLCBOQSksIAogICAgICAgICAgICAgInN0YXRpc3RpYyIgPSBjKHN1bW1hcnkoc29uYV9yZWdfTk1QUSkkZnN0YXRpc3RpY1sxXSwgcmVwKE5BLCAyKSksIAogICAgICAgICAgICAgInAudmFsdWUiID0gYyhwZihzdW1tYXJ5KHNvbmFfcmVnX05NUFEpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkoc29uYV9yZWdfTk1QUSkkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShzb25hX3JlZ19OTVBRKSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRiksIHJlcChOQSwgMikpCiAgICAgICAgICAgICApCiAgICAgICkKCiMgcmVtb3ZlIE5BIGZyb20ga2FibGUgdGFibGVzCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSAnJykgCgojIHNob3cga2FibGUgdGFibGUKa2FibGUoc29uYV9yZWdfTk1QUV90LCBjYXB0aW9uID0gIk11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIiwgYWxpZ24gPSByZXAoJ2xjY2NjJyksIGRpZ2l0cyA9MykgJT4lIAogIGthYmxlX3BhcGVyKGZ1bGxfd2lkdGggPSBGKSAlPiUKICAjIGFkZF9oZWFkZXJfYWJvdmUoYygiICIsICJTT05BIiA9IDIsICJNdHVyayIgPSAyKSkgJT4lCiAgIyBwYWNrX3Jvd3MoIkNyaXRlcmlvbihzKSIsIDEsIDYpICU+JQogICMgIyBjb2x1bW5fc3BlYygxLCB3aWR0aCA9ICIxMGVtIikgJT4lIAogICMgcGFja19yb3dzKCJQcmVkaWN0b3IocykiLCA3LCAxOSkgJT4lCiAgZm9vdG5vdGUoZ2VuZXJhbCA9ICJOb3JtYWxpdHkgaXMgbWV0IGZvciBub24tc2lnbmlmaWNhbnQgcC12YWx1ZXMgKGkuZS4sIGdyZWF0ZXIgdGhhbiAwLjA1KS4iKSAlPiUgCiAgY29sdW1uX3NwZWMoYyg0KSwgYm9yZGVyX2xlZnQgPSBUKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCgojIHJlc2V0IE5BIHZhbHMgaW4ga2FibGUgdGFibGVzIHRvICJOQSIKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9IE5BKSAKCiMgbWFrZSBjb2xvdXIgcGFsCiMgcmVnX2NvbG91cnMgPC0gYygiIzdFMTA0NCIsICIjMTcwRkE3IiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZ3JleSIsICJ5ZWxsb3ciKQojIHJlZ19jb2xvdXJzIDwtIGMoIiM5ODQxMEIiLCAiI0YwODAzQyIsICIjRERBNDQ4IiwgIiM4NTg1ODUiLCAiIzNGODI2RCIsICIjMDg2MDVGIiwgIiM0MTQ1MzUiKSAjIG9yYW5nZSA+Z3JlZW4KcmVnX2NvbG91cnMgPC0gYygiIzQxNDUzNSIsICIjMDg2MDVGIiwgIiMzRjgyNkQiLCAiIzg1ODU4NSIsICIjRERBNDQ4IiwgIiNGMDgwM0MiLCAiIzk4NDEwQiIgKSAjIGdyZWVuID4gb3JhbmdlCgojIHBsb3QgbG0KICAjIHBsb3Qgc3RhbmRhcmRpemVkIGJldGFzIHRvIGNvbXBhcmUgY29vZWZmaWNpZW50cwpzb25hX3JlZ19OTVBRX3Bsb3QgPC0gCiAgc2pQbG90OjpwbG90X21vZGVsKG1vZGVsID0gc29uYV9yZWdfTk1QUSwgIyBsbSBvdXRwdXQgCiAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgPSBjKCJTdGFuZGFyZGl6ZWQgYmV0YSBDb2VmZmljaWVudHMgZm9yIE11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIChTT05BKSIpLAogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICIiLCAjIHRvIHJlbW92ZSB0aXRsZQogICAgICAgICAgICAgICAgICAgICB0eXBlID0gInN0ZCIsICMgdHlwZSAic3RkIiA9IHN0YW5kYXJkaXplZCBiZXRhcwogICAgICAgICAgICAgICAgICAgICAjc29ydC5lc3QgPSBULCAjIHNvcnQgYmFzZWQgb24gYmV0YXMgKGhpZ2hlc3Qgb24gdG9wKQogICAgICAgICAgICAgICAgICAgICB3cmFwLnRpdGxlID0gNTUsICMgY2hhciBsZW5ndGggb2YgZWFjaCB0aXRsZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICNheGlzLmxpbSA9IGMoLS4yNSwuMjUpCiAgICAgICAgICAgICAgICAgICAgIGdyaWQuYnJlYWtzID0gLjI1LCAjIHgtYXhpcyBicmVha3MgCiAgICAgICAgICAgICAgICAgICAgICNzZSA9IFQgIyB1c2Ugc2UgaW5zdGVhZCBvZiBDSQogICAgICAgICAgICAgICAgICAgICBjb2xvcnMgPSByZWdfY29sb3VycywKICAgICAgICAgICAgICAgICAgICAgc2hvdy52YWx1ZXMgPSBULCAjIHNob3cgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgc2hvdy5wID0gVCwgIyBzaG93ICogZm9yIHNpZyBwCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm9mZnNldCA9IDAuNDAsICMgb2Zmc2V0IHRvIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNpemUgPSAzLCAjIHNpemUgb2YgYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gMiwgIyBudW0gZGVjaW1hbHMgaW4gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgZG90LnNpemUgPSAyLjUsIGxpbmUuc2l6ZSA9IDEuNSwgCiAgICAgICAgICAgICAgICAgICAgIHZsaW5lLmNvbG9yID0gImJsYWNrIiwKICAgICAgICAgICAgICAgICAgICAgZ3JvdXAudGVybXMgPSBjKDEsIDIsIDMsIDMsIDMsIDMsIDMsIDQsIDUsIDYsIDcsIDcsIDcpLAogICAgICAgICAgICAgICAgICAgICBheGlzLmxhYmVscyA9IGMoIkRBU1M6IFMiLCAiREFTUzogQSIsICJEQVNTOiBEIiwgIlNTRUlUIiwgIlNSUyIsICJSU0VTIiwgIk5FTzogTiIsICJORU86IEEiLCAiTkVPOiBFIiwgIk5FTzogQyIsICJORU86IE8iLCAiQklTIiwgIkFnZSIpLCAKICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZSA9ICJTdGFuZGFyZGl6ZWQgQmV0YSBDb2VmZmljaWVudCIsIAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC41CiAgICAgICAgICAgICAgICAgICAgICkgKwogICAgZm9udF9zaXplKG9mZnNldC54ID0gMTApICsKICAgIGZvbnRfc2l6ZShiYXNlLnRoZW1lID0gdGhlbWVfY2xhc3NpYygpKQoKIyBzaG93IHBsb3QKc29uYV9yZWdfTk1QUV9wbG90CgojIHRoaXMgcGxvdHMgdGhlIG5vbi1zdGFuZGFyZGl6ZWQgYmV0YXMKICAjIHNqUGxvdDo6cGxvdF9tb2RlbChzb25hX3JlZ19OTVBRLCB0eXBlID0gImVzdCIpICNpdGhlciBvdHBpb25zOiBjKCJlc3QiLCAiZWZmIiwgInByZWQiLCAiaW50IiwgInN0ZCIsICJzdGQyIiwgInNsb3BlIiwgInJlc2lkIiwgImRpYWciKQojIHBsb3QgdGhlIHRhYmxlIHVzaW5nIHNqUGxvdAogICMgc2pQbG90Ojp0YWJfbW9kZWwoc29uYV9yZWdfTk1QUSwgc2hvdy5zdGF0ID0gVCwgc2hvdy5zdGQgPSBUKQoKIyBleHBvcnQgY29yciBtYXRyaXggdXNpbmcgZ2dzYXZlKCkgJiByZXBsYXlQbG90KCkgdG8gY2FsbCBvbiBwcmV2aW91c2x5IG1hZGUgcGxvdApnZ3NhdmUoZmlsZW5hbWU9Ii9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0ZpZ3VyZXMvc29uYV9yZWdfTk1QUV9wbG90KG9jdDI4KSIsIHBsb3QgPSBzb25hX3JlZ19OTVBRX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKCiMgZXhwb3J0IGNzdiBmaWxlcyBvZiBsbSB0YWJsZQogIHdyaXRlLmNzdihzb25hX3JlZ19OTVBRX3QsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvc29uYV9yZWdfTk1QUV90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBUKQpgYGAKCmBgYHtyIGV2YWw9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGluY2x1ZGU9RkFMU0V9CiMgdGVzdCBvdXQgdGhlIHRhYl9tb2RlbCgpIGZuIGluIHNqUGxvdCBwYWNrYWdlCiAgIyBjYW50IHNlZW0gdG8gZ2V0IGl0IHRvIGFjdHVhbGx5IHByaW50IG91dCB0aGUgdGFibGUgaW4gciBub3RlYm9vawogICMgd2lsbCBvbmx5IHByaW50IG91dCBpbiAidmlld2VyIiB3aW5kb3cuLi4gCnRlc3RfdGFibW9kZWwgPC0gc2pQbG90Ojp0YWJfbW9kZWwobG0oZGF0YSA9IFNPTkFfZGF0YSwgZm9ybXVsYSA9IE5NUFFfc3VtIH4gYWdlICsgYWdlX2ZpcnN0X3Bob25lICsgQklTX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1JTX3N1bSArIFNTRUlUX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSksIHNob3cuc3RhdCA9IFQpCmBgYAoKIyMjIyMgU0FEIC0gT3ZlcmFsbAoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWduaWZpY2FudCwgRihgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfU0FEKSRmc3RhdGlzdGljWzJdKWAsIGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19TQUQpJGZzdGF0aXN0aWNbM10pYCkgPSBgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfU0FEKSRmc3RhdGlzdGljWzFdKWAsIHAgYHIgcF9yb3VuZChhcy5udW1lcmljKHBmKHN1bW1hcnkoc29uYV9yZWdfU0FEKSRmc3RhdGlzdGljWzFdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRCkkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShzb25hX3JlZ19TQUQpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSkpYCwgUjIgPSBgciByb3VuZChzdW1tYXJ5KHNvbmFfcmVnX1NBRCkkci5zcXVhcmVkLCAyKWAKCmBgYHtyfQojIHJ1biBsbQpzb25hX3JlZ19TQUQgPC0gbG0oZGF0YSA9IFNPTkFfZGF0YSwgZm9ybXVsYSA9IFNBRF9zdW0gfiBhZ2UgKyBCSVNfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTUlNfc3VtICsgU1NFSVRfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtKQoKIyBzaG93IHN1bW1hcnkgb2YgbG0Kc3VtbWFyeShzb25hX3JlZ19TQUQpCgojIGNyZWF0ZSB0YWJsZSBkZXBpY3RpbmcgbWFpbiBzdGF0cyB0byBleHBvcnQgbGF0ZXIKc29uYV9yZWdfU0FEX3QgPC0gCiAgICAgIHJiaW5kKHRpZHkoc29uYV9yZWdfU0FEKSwgIyB1c2UgdGlkeSgpIGluIGJyb29tIHBhY2thZ2UKICAgICAgdGliYmxlKCJ0ZXJtIiA9IGMoImZfc3RhdCIsICJSMi9BZGouUjIiLCAiTiIpLCAKICAgICAgICAgICAgICJlc3RpbWF0ZSIgPSBjKHN1bW1hcnkoc29uYV9yZWdfU0FEKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRCkkci5zcXVhcmVkLCBucm93KHNvbmFfcmVnX1NBRCRtb2RlbCkpLCAKICAgICAgICAgICAgICJzdGQuZXJyb3IiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRCkkZnN0YXRpc3RpY1szXSwgc3VtbWFyeShzb25hX3JlZ19TQUQpJGFkai5yLnNxdWFyZWQsIE5BKSwgCiAgICAgICAgICAgICAic3RhdGlzdGljIiA9IGMoc3VtbWFyeShzb25hX3JlZ19TQUQpJGZzdGF0aXN0aWNbMV0sIHJlcChOQSwgMikpLCAKICAgICAgICAgICAgICJwLnZhbHVlIiA9IGMocGYoc3VtbWFyeShzb25hX3JlZ19TQUQpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkoc29uYV9yZWdfU0FEKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRCkkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpLCByZXAoTkEsIDIpKQogICAgICAgICAgICAgKQogICAgICApCgojIHJlbW92ZSBOQSBmcm9tIGthYmxlIHRhYmxlcwpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gJycpIAoKIyBzaG93IGthYmxlIHRhYmxlCmthYmxlKHNvbmFfcmVnX1NBRF90LCBjYXB0aW9uID0gIk11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBTQUQgU2NvcmUiLCBhbGlnbiA9IHJlcCgnbGNjY2MnKSwgZGlnaXRzID0zKSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogICMgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIlNPTkEiID0gMiwgIk10dXJrIiA9IDIpKSAlPiUKICAjIHBhY2tfcm93cygiQ3JpdGVyaW9uKHMpIiwgMSwgNikgJT4lCiAgIyAjIGNvbHVtbl9zcGVjKDEsIHdpZHRoID0gIjEwZW0iKSAlPiUgCiAgIyBwYWNrX3Jvd3MoIlByZWRpY3RvcihzKSIsIDcsIDE5KSAlPiUKICBmb290bm90ZShnZW5lcmFsID0gIk5vcm1hbGl0eSBpcyBtZXQgZm9yIG5vbi1zaWduaWZpY2FudCBwLXZhbHVlcyAoaS5lLiwgZ3JlYXRlciB0aGFuIDAuMDUpLiIpICU+JSAKICBjb2x1bW5fc3BlYyhjKDQpLCBib3JkZXJfbGVmdCA9IFQpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgcmVzZXQgTkEgdmFscyBpbiBrYWJsZSB0YWJsZXMgdG8gIk5BIgpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gTkEpIAoKIyBtYWtlIGNvbG91ciBwYWwKcmVnX2NvbG91cnMgPC0gYygiIzQxNDUzNSIsICIjMDg2MDVGIiwgIiMzRjgyNkQiLCAiIzg1ODU4NSIsICIjRERBNDQ4IiwgIiNGMDgwM0MiLCAiIzk4NDEwQiIgKSAjIGdyZWVuID4gb3JhbmdlCgojIHBsb3QgbG0KICAjIHBsb3Qgc3RhbmRhcmRpemVkIGJldGFzIHRvIGNvbXBhcmUgY29vZWZmaWNpZW50cwpzb25hX3JlZ19TQURfcGxvdCA8LSAKICBzalBsb3Q6OnBsb3RfbW9kZWwobW9kZWwgPSBzb25hX3JlZ19TQUQsICMgbG0gb3V0cHV0IAogICAgICAgICAgICAgICAgICAgICAjIHRpdGxlID0gYygiU3RhbmRhcmRpemVkIGJldGEgQ29lZmZpY2llbnRzIGZvciBNdWx0aXBsZSBSZWdyZXNzaW9uIE1vZGVsIFByZWRpY3RpbmcgTk1QUSBTY29yZSAoU09OQSkiKSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwgIyB0byByZW1vdmUgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJzdGQiLCAjIHR5cGUgInN0ZCIgPSBzdGFuZGFyZGl6ZWQgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgI3NvcnQuZXN0ID0gVCwgIyBzb3J0IGJhc2VkIG9uIGJldGFzIChoaWdoZXN0IG9uIHRvcCkKICAgICAgICAgICAgICAgICAgICAgd3JhcC50aXRsZSA9IDU1LCAjIGNoYXIgbGVuZ3RoIG9mIGVhY2ggdGl0bGUgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGF4aXMubGFiZWxzID0gYygiSU5TRVJUIFBSRUQgTkFNRVMiKQogICAgICAgICAgICAgICAgICAgICBncmlkLmJyZWFrcyA9IC4yNSwgIyB4LWF4aXMgYnJlYWtzIAogICAgICAgICAgICAgICAgICAgICAjc2UgPSBUICMgdXNlIHNlIGluc3RlYWQgb2YgQ0kKICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gcmVnX2NvbG91cnMsCiAgICAgICAgICAgICAgICAgICAgIHNob3cudmFsdWVzID0gVCwgIyBzaG93IGJldGFzCiAgICAgICAgICAgICAgICAgICAgIHNob3cucCA9IFQsICMgc2hvdyAqIGZvciBzaWcgcAogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5vZmZzZXQgPSAwLjQwLCAjIG9mZnNldCB0byBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zaXplID0gMywgIyBzaXplIG9mIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIsICMgbnVtIGRlY2ltYWxzIGluIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRvdC5zaXplID0gMi41LCBsaW5lLnNpemUgPSAxLjUsIAogICAgICAgICAgICAgICAgICAgICB2bGluZS5jb2xvciA9ICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnRlcm1zID0gYygxLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA1LCA2LCA3LCA3LCA3KSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy5sYWJlbHMgPSBjKCJEQVNTOiBTIiwgIkRBU1M6IEEiLCAiREFTUzogRCIsICJTU0VJVCIsICJTUlMiLCAiUlNFUyIsICJORU86IE4iLCAiTkVPOiBBIiwgIk5FTzogRSIsICJORU86IEMiLCAiTkVPOiBPIiwgIkJJUyIsICJBZ2UiKSwgCiAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSAiU3RhbmRhcmRpemVkIEJldGEgQ29lZmZpY2llbnQiLCAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAuNQogICAgICAgICAgICAgICAgICAgICApICsKICAgIGZvbnRfc2l6ZShvZmZzZXQueCA9IDEwKSArCiAgICBmb250X3NpemUoYmFzZS50aGVtZSA9IHRoZW1lX2NsYXNzaWMoKSkKCiMgc2hvdyBwbG90CnNvbmFfcmVnX1NBRF9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9zb25hX3JlZ19TQURfcGxvdChvY3QyOCkiLCBwbG90ID0gc29uYV9yZWdfU0FEX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKCiMgZXhwb3J0IGNzdiBmaWxlcyBvZiBsbSB0YWJsZQogIHdyaXRlLmNzdihzb25hX3JlZ19TQURfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX3JlZ19TQURfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgojIyMjIyBTQUQgLSBEZXBlbmRlbmN5CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQ6IERlcCA9IGFnZSArIEJJUyArIE5FTzogTyArIE5FTzogQyArIE5FTzogRSArIE5FTzogQSArIE5FTzogTiArIFJTRVMgKyBTUlMgKyBTU0VJVCArIERBU1M6IEQgKyBEQVNTOiBBICsgREFTUzogUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnbmlmaWNhbnQsIEYoYHIgYXMubnVtZXJpYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMl0pYCwgYHIgYXMubnVtZXJpYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbM10pYCkgPSBgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfU0FEX2RlcCkkZnN0YXRpc3RpY1sxXSlgLCBwIGByIHBfcm91bmQoYXMubnVtZXJpYyhwZihzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2RlcCkkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShzb25hX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRikpKWAsIFIyID0gYHIgcm91bmQoc3VtbWFyeShzb25hX3JlZ19TQURfZGVwKSRyLnNxdWFyZWQsIDIpYAoKYGBge3J9CiMgcnVuIGxtCnNvbmFfcmVnX1NBRF9kZXAgPC0gbG0oZGF0YSA9IFNPTkFfZGF0YSwgZm9ybXVsYSA9IFNBRF9kZXBfc3VtIH4gYWdlICsgQklTX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1JTX3N1bSArIFNTRUlUX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSkKCiMgc2hvdyBzdW1tYXJ5IG9mIGxtCnN1bW1hcnkoc29uYV9yZWdfU0FEX2RlcCkKCiMgY3JlYXRlIHRhYmxlIGRlcGljdGluZyBtYWluIHN0YXRzIHRvIGV4cG9ydCBsYXRlcgpzb25hX3JlZ19TQURfZGVwX3QgPC0gCiAgICAgIHJiaW5kKHRpZHkoc29uYV9yZWdfU0FEX2RlcCksICMgdXNlIHRpZHkoKSBpbiBicm9vbSBwYWNrYWdlCiAgICAgIHRpYmJsZSgidGVybSIgPSBjKCJmX3N0YXQiLCAiUjIvQWRqLlIyIiwgIk4iKSwgCiAgICAgICAgICAgICAiZXN0aW1hdGUiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2RlcCkkci5zcXVhcmVkLCBucm93KHNvbmFfcmVnX1NBRF9kZXAkbW9kZWwpKSwgCiAgICAgICAgICAgICAic3RkLmVycm9yIiA9IGMoc3VtbWFyeShzb25hX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzNdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kZXApJGFkai5yLnNxdWFyZWQsIE5BKSwgCiAgICAgICAgICAgICAic3RhdGlzdGljIiA9IGMoc3VtbWFyeShzb25hX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzFdLCByZXAoTkEsIDIpKSwgCiAgICAgICAgICAgICAicC52YWx1ZSIgPSBjKHBmKHN1bW1hcnkoc29uYV9yZWdfU0FEX2RlcCkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShzb25hX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSwgcmVwKE5BLCAyKSkKICAgICAgICAgICAgICkKICAgICAgKQoKIyByZW1vdmUgTkEgZnJvbSBrYWJsZSB0YWJsZXMKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9ICcnKSAKCiMgc2hvdyBrYWJsZSB0YWJsZQprYWJsZShzb25hX3JlZ19TQURfZGVwX3QsIGNhcHRpb24gPSAiTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIFNBRF9kZXAgU2NvcmUiLCBhbGlnbiA9IHJlcCgnbGNjY2MnKSwgZGlnaXRzID0zKSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogICMgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIlNPTkEiID0gMiwgIk10dXJrIiA9IDIpKSAlPiUKICAjIHBhY2tfcm93cygiQ3JpdGVyaW9uKHMpIiwgMSwgNikgJT4lCiAgIyAjIGNvbHVtbl9zcGVjKDEsIHdpZHRoID0gIjEwZW0iKSAlPiUgCiAgIyBwYWNrX3Jvd3MoIlByZWRpY3RvcihzKSIsIDcsIDE5KSAlPiUKICBmb290bm90ZShnZW5lcmFsID0gIk5vcm1hbGl0eSBpcyBtZXQgZm9yIG5vbi1zaWduaWZpY2FudCBwLXZhbHVlcyAoaS5lLiwgZ3JlYXRlciB0aGFuIDAuMDUpLiIpICU+JSAKICBjb2x1bW5fc3BlYyhjKDQpLCBib3JkZXJfbGVmdCA9IFQpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgcmVzZXQgTkEgdmFscyBpbiBrYWJsZSB0YWJsZXMgdG8gIk5BIgpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gTkEpIAoKIyBtYWtlIGNvbG91ciBwYWwKcmVnX2NvbG91cnMgPC0gYygiIzQxNDUzNSIsICIjMDg2MDVGIiwgIiMzRjgyNkQiLCAiIzg1ODU4NSIsICIjRERBNDQ4IiwgIiNGMDgwM0MiLCAiIzk4NDEwQiIgKSAjIGdyZWVuID4gb3JhbmdlCgojIHBsb3QgbG0KICAjIHBsb3Qgc3RhbmRhcmRpemVkIGJldGFzIHRvIGNvbXBhcmUgY29vZWZmaWNpZW50cwpzb25hX3JlZ19TQURfZGVwX3Bsb3QgPC0gCiAgc2pQbG90OjpwbG90X21vZGVsKG1vZGVsID0gc29uYV9yZWdfU0FEX2RlcCwgIyBsbSBvdXRwdXQgCiAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgPSBjKCJTdGFuZGFyZGl6ZWQgYmV0YSBDb2VmZmljaWVudHMgZm9yIE11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIChTT05BKSIpLAogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICIiLCAjIHRvIHJlbW92ZSB0aXRsZQogICAgICAgICAgICAgICAgICAgICB0eXBlID0gInN0ZCIsICMgdHlwZSAic3RkIiA9IHN0YW5kYXJkaXplZCBiZXRhcwogICAgICAgICAgICAgICAgICAgICAjc29ydC5lc3QgPSBULCAjIHNvcnQgYmFzZWQgb24gYmV0YXMgKGhpZ2hlc3Qgb24gdG9wKQogICAgICAgICAgICAgICAgICAgICB3cmFwLnRpdGxlID0gNTUsICMgY2hhciBsZW5ndGggb2YgZWFjaCB0aXRsZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICMgYXhpcy5sYWJlbHMgPSBjKCJJTlNFUlQgUFJFRCBOQU1FUyIpCiAgICAgICAgICAgICAgICAgICAgIGdyaWQuYnJlYWtzID0gLjI1LCAjIHgtYXhpcyBicmVha3MgCiAgICAgICAgICAgICAgICAgICAgICNzZSA9IFQgIyB1c2Ugc2UgaW5zdGVhZCBvZiBDSQogICAgICAgICAgICAgICAgICAgICBjb2xvcnMgPSByZWdfY29sb3VycywKICAgICAgICAgICAgICAgICAgICAgc2hvdy52YWx1ZXMgPSBULCAjIHNob3cgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgc2hvdy5wID0gVCwgIyBzaG93ICogZm9yIHNpZyBwCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm9mZnNldCA9IDAuNDAsICMgb2Zmc2V0IHRvIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNpemUgPSAzLCAjIHNpemUgb2YgYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gMiwgIyBudW0gZGVjaW1hbHMgaW4gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgZG90LnNpemUgPSAyLjUsIGxpbmUuc2l6ZSA9IDEuNSwgCiAgICAgICAgICAgICAgICAgICAgIHZsaW5lLmNvbG9yID0gImJsYWNrIiwKICAgICAgICAgICAgICAgICAgICAgZ3JvdXAudGVybXMgPSBjKDEsIDIsIDMsIDMsIDMsIDMsIDMsIDQsIDUsIDYsIDcsIDcsIDcpLAogICAgICAgICAgICAgICAgICAgICBheGlzLmxhYmVscyA9IGMoIkRBU1M6IFMiLCAiREFTUzogQSIsICJEQVNTOiBEIiwgIlNTRUlUIiwgIlNSUyIsICJSU0VTIiwgIk5FTzogTiIsICJORU86IEEiLCAiTkVPOiBFIiwgIk5FTzogQyIsICJORU86IE8iLCAiQklTIiwgIkFnZSIpLCAKICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZSA9ICJTdGFuZGFyZGl6ZWQgQmV0YSBDb2VmZmljaWVudCIsIAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC41CiAgICAgICAgICAgICAgICAgICAgICkgKwogICAgZm9udF9zaXplKG9mZnNldC54ID0gMTApICsKICAgIGZvbnRfc2l6ZShiYXNlLnRoZW1lID0gdGhlbWVfY2xhc3NpYygpKQoKIyBzaG93IHBsb3QKc29uYV9yZWdfU0FEX2RlcF9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9zb25hX3JlZ19TQURfZGVwX3Bsb3Qob2N0MjgpIiwgcGxvdCA9IHNvbmFfcmVnX1NBRF9kZXBfcGxvdCwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA2LjUsIHdpZHRoID0gNSwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQoKIyBleHBvcnQgY3N2IGZpbGVzIG9mIGxtIHRhYmxlCiAgd3JpdGUuY3N2KHNvbmFfcmVnX1NBRF9kZXBfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX3JlZ19TQURfZGVwX3Qob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCmBgYAoKIyMjIyMgU0FEIC0gQWNjZXNzaWJpbGl0eQoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEOiBBY2Nlc3MuID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWduaWZpY2FudCwgRihgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1syXSlgLCBgciBhcy5udW1lcmljKHN1bW1hcnkoc29uYV9yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19TQURfYWNjZXNzKSRmc3RhdGlzdGljWzFdKWAsIHAgYHIgcF9yb3VuZChhcy5udW1lcmljKHBmKHN1bW1hcnkoc29uYV9yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShzb25hX3JlZ19TQURfYWNjZXNzKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSkpYCwgUjIgPSBgciByb3VuZChzdW1tYXJ5KHNvbmFfcmVnX1NBRF9hY2Nlc3MpJHIuc3F1YXJlZCwgMilgCgpgYGB7cn0KIyBydW4gbG0Kc29uYV9yZWdfU0FEX2FjY2VzcyA8LSBsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2UgKyBCSVNfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTUlNfc3VtICsgU1NFSVRfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtKQoKIyBzaG93IHN1bW1hcnkgb2YgbG0Kc3VtbWFyeShzb25hX3JlZ19TQURfYWNjZXNzKQoKIyBjcmVhdGUgdGFibGUgZGVwaWN0aW5nIG1haW4gc3RhdHMgdG8gZXhwb3J0IGxhdGVyCnNvbmFfcmVnX1NBRF9hY2Nlc3NfdCA8LSAKICAgICAgcmJpbmQodGlkeShzb25hX3JlZ19TQURfYWNjZXNzKSwgIyB1c2UgdGlkeSgpIGluIGJyb29tIHBhY2thZ2UKICAgICAgdGliYmxlKCJ0ZXJtIiA9IGMoImZfc3RhdCIsICJSMi9BZGouUjIiLCAiTiIpLCAKICAgICAgICAgICAgICJlc3RpbWF0ZSIgPSBjKHN1bW1hcnkoc29uYV9yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShzb25hX3JlZ19TQURfYWNjZXNzKSRyLnNxdWFyZWQsIG5yb3coc29uYV9yZWdfU0FEX2FjY2VzcyRtb2RlbCkpLCAKICAgICAgICAgICAgICJzdGQuZXJyb3IiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbM10sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2FjY2VzcykkYWRqLnIuc3F1YXJlZCwgTkEpLCAKICAgICAgICAgICAgICJzdGF0aXN0aWMiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMV0sIHJlcChOQSwgMikpLCAKICAgICAgICAgICAgICJwLnZhbHVlIiA9IGMocGYoc3VtbWFyeShzb25hX3JlZ19TQURfYWNjZXNzKSRmc3RhdGlzdGljWzFdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpLCByZXAoTkEsIDIpKQogICAgICAgICAgICAgKQogICAgICApCgojIHJlbW92ZSBOQSBmcm9tIGthYmxlIHRhYmxlcwpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gJycpIAoKIyBzaG93IGthYmxlIHRhYmxlCmthYmxlKHNvbmFfcmVnX1NBRF9hY2Nlc3NfdCwgY2FwdGlvbiA9ICJNdWx0aXBsZSBSZWdyZXNzaW9uIE1vZGVsIFByZWRpY3RpbmcgU0FEX2FjY2VzcyBTY29yZSIsIGFsaWduID0gcmVwKCdsY2NjYycpLCBkaWdpdHMgPTMpICU+JSAKICBrYWJsZV9wYXBlcihmdWxsX3dpZHRoID0gRikgJT4lCiAgIyBhZGRfaGVhZGVyX2Fib3ZlKGMoIiAiLCAiU09OQSIgPSAyLCAiTXR1cmsiID0gMikpICU+JQogICMgcGFja19yb3dzKCJDcml0ZXJpb24ocykiLCAxLCA2KSAlPiUKICAjICMgY29sdW1uX3NwZWMoMSwgd2lkdGggPSAiMTBlbSIpICU+JSAKICAjIHBhY2tfcm93cygiUHJlZGljdG9yKHMpIiwgNywgMTkpICU+JQogIGZvb3Rub3RlKGdlbmVyYWwgPSAiTm9ybWFsaXR5IGlzIG1ldCBmb3Igbm9uLXNpZ25pZmljYW50IHAtdmFsdWVzIChpLmUuLCBncmVhdGVyIHRoYW4gMC4wNSkuIikgJT4lIAogIGNvbHVtbl9zcGVjKGMoNCksIGJvcmRlcl9sZWZ0ID0gVCkgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyByZXNldCBOQSB2YWxzIGluIGthYmxlIHRhYmxlcyB0byAiTkEiCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSBOQSkgCgojIG1ha2UgY29sb3VyIHBhbApyZWdfY29sb3VycyA8LSBjKCIjNDE0NTM1IiwgIiMwODYwNUYiLCAiIzNGODI2RCIsICIjODU4NTg1IiwgIiNEREE0NDgiLCAiI0YwODAzQyIsICIjOTg0MTBCIiApICMgZ3JlZW4gPiBvcmFuZ2UKCiMgcGxvdCBsbQogICMgcGxvdCBzdGFuZGFyZGl6ZWQgYmV0YXMgdG8gY29tcGFyZSBjb29lZmZpY2llbnRzCnNvbmFfcmVnX1NBRF9hY2Nlc3NfcGxvdCA8LSAKICBzalBsb3Q6OnBsb3RfbW9kZWwobW9kZWwgPSBzb25hX3JlZ19TQURfYWNjZXNzLCAjIGxtIG91dHB1dCAKICAgICAgICAgICAgICAgICAgICAgIyB0aXRsZSA9IGMoIlN0YW5kYXJkaXplZCBiZXRhIENvZWZmaWNpZW50cyBmb3IgTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIE5NUFEgU2NvcmUgKFNPTkEpIiksCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIiIsICMgdG8gcmVtb3ZlIHRpdGxlCiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAic3RkIiwgIyB0eXBlICJzdGQiID0gc3RhbmRhcmRpemVkIGJldGFzCiAgICAgICAgICAgICAgICAgICAgICNzb3J0LmVzdCA9IFQsICMgc29ydCBiYXNlZCBvbiBiZXRhcyAoaGlnaGVzdCBvbiB0b3ApCiAgICAgICAgICAgICAgICAgICAgIHdyYXAudGl0bGUgPSA1NSwgIyBjaGFyIGxlbmd0aCBvZiBlYWNoIHRpdGxlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgIyBheGlzLmxhYmVscyA9IGMoIklOU0VSVCBQUkVEIE5BTUVTIikKICAgICAgICAgICAgICAgICAgICAgZ3JpZC5icmVha3MgPSAuMjUsICMgeC1heGlzIGJyZWFrcyAKICAgICAgICAgICAgICAgICAgICAgI3NlID0gVCAjIHVzZSBzZSBpbnN0ZWFkIG9mIENJCiAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHJlZ19jb2xvdXJzLAogICAgICAgICAgICAgICAgICAgICBzaG93LnZhbHVlcyA9IFQsICMgc2hvdyBiZXRhcwogICAgICAgICAgICAgICAgICAgICBzaG93LnAgPSBULCAjIHNob3cgKiBmb3Igc2lnIHAKICAgICAgICAgICAgICAgICAgICAgdmFsdWUub2Zmc2V0ID0gMC40MCwgIyBvZmZzZXQgdG8gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2l6ZSA9IDMsICMgc2l6ZSBvZiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkb3Quc2l6ZSA9IDIuNSwgbGluZS5zaXplID0gMS41LCAKICAgICAgICAgICAgICAgICAgICAgdmxpbmUuY29sb3IgPSAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICBncm91cC50ZXJtcyA9IGMoMSwgMiwgMywgMywgMywgMywgMywgNCwgNSwgNiwgNywgNywgNyksCiAgICAgICAgICAgICAgICAgICAgIGF4aXMubGFiZWxzID0gYygiREFTUzogUyIsICJEQVNTOiBBIiwgIkRBU1M6IEQiLCAiU1NFSVQiLCAiU1JTIiwgIlJTRVMiLCAiTkVPOiBOIiwgIk5FTzogQSIsICJORU86IEUiLCAiTkVPOiBDIiwgIk5FTzogTyIsICJCSVMiLCAiQWdlIiksIAogICAgICAgICAgICAgICAgICAgICBheGlzLnRpdGxlID0gIlN0YW5kYXJkaXplZCBCZXRhIENvZWZmaWNpZW50IiwgCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLjUKICAgICAgICAgICAgICAgICAgICAgKSArCiAgICBmb250X3NpemUob2Zmc2V0LnggPSAxMCkgKwogICAgZm9udF9zaXplKGJhc2UudGhlbWUgPSB0aGVtZV9jbGFzc2ljKCkpCgojIHNob3cgcGxvdApzb25hX3JlZ19TQURfYWNjZXNzX3Bsb3QKCiMgZXhwb3J0IGNvcnIgbWF0cml4IHVzaW5nIGdnc2F2ZSgpICYgcmVwbGF5UGxvdCgpIHRvIGNhbGwgb24gcHJldmlvdXNseSBtYWRlIHBsb3QKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL3NvbmFfcmVnX1NBRF9hY2Nlc3NfcGxvdChvY3QyOCkiLCBwbG90ID0gc29uYV9yZWdfU0FEX2FjY2Vzc19wbG90LCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDYuNSwgd2lkdGggPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCgojIGV4cG9ydCBjc3YgZmlsZXMgb2YgbG0gdGFibGUKICB3cml0ZS5jc3Yoc29uYV9yZWdfU0FEX2FjY2Vzc190LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL3NvbmFfcmVnX1NBRF9hY2Nlc3NfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgojIyMjIyBTQUQgLSBFbW90aW9uYWwgQXR0YWNoZW1lbnQKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRDogRUEgPSBhZ2UgKyBCSVMgKyBORU86IE8gKyBORU86IEMgKyBORU86IEUgKyBORU86IEEgKyBORU86IE4gKyBSU0VTICsgU1JTICsgU1NFSVQgKyBEQVNTOiBEICsgREFTUzogQSArIERBU1M6IFMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZ25pZmljYW50LCBGKGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMl0pYCwgYHIgYXMubnVtZXJpYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMV0pYCwgcCBgciBwX3JvdW5kKGFzLm51bWVyaWMocGYoc3VtbWFyeShzb25hX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpKSlgLCBSMiA9IGByIHJvdW5kKHN1bW1hcnkoc29uYV9yZWdfU0FEX2VhKSRyLnNxdWFyZWQsIDIpYAoKYGBge3J9CiMgcnVuIGxtCnNvbmFfcmVnX1NBRF9lYSA8LSBsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2VhX3N1bSB+IGFnZSArIEJJU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNSU19zdW0gKyBTU0VJVF9zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0pCgojIHNob3cgc3VtbWFyeSBvZiBsbQpzdW1tYXJ5KHNvbmFfcmVnX1NBRF9lYSkKCiMgY3JlYXRlIHRhYmxlIGRlcGljdGluZyBtYWluIHN0YXRzIHRvIGV4cG9ydCBsYXRlcgpzb25hX3JlZ19TQURfZWFfdCA8LSAKICAgICAgcmJpbmQodGlkeShzb25hX3JlZ19TQURfZWEpLCAjIHVzZSB0aWR5KCkgaW4gYnJvb20gcGFja2FnZQogICAgICB0aWJibGUoInRlcm0iID0gYygiZl9zdGF0IiwgIlIyL0Fkai5SMiIsICJOIiksIAogICAgICAgICAgICAgImVzdGltYXRlIiA9IGMoc3VtbWFyeShzb25hX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2VhKSRyLnNxdWFyZWQsIG5yb3coc29uYV9yZWdfU0FEX2VhJG1vZGVsKSksIAogICAgICAgICAgICAgInN0ZC5lcnJvciIgPSBjKHN1bW1hcnkoc29uYV9yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzNdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9lYSkkYWRqLnIuc3F1YXJlZCwgTkEpLCAKICAgICAgICAgICAgICJzdGF0aXN0aWMiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1sxXSwgcmVwKE5BLCAyKSksIAogICAgICAgICAgICAgInAudmFsdWUiID0gYyhwZihzdW1tYXJ5KHNvbmFfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShzb25hX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRiksIHJlcChOQSwgMikpCiAgICAgICAgICAgICApCiAgICAgICkKCiMgcmVtb3ZlIE5BIGZyb20ga2FibGUgdGFibGVzCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSAnJykgCgojIHNob3cga2FibGUgdGFibGUKa2FibGUoc29uYV9yZWdfU0FEX2VhX3QsIGNhcHRpb24gPSAiTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIFNBRF9lYSBTY29yZSIsIGFsaWduID0gcmVwKCdsY2NjYycpLCBkaWdpdHMgPSA0KSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogICMgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIlNPTkEiID0gMiwgIk10dXJrIiA9IDIpKSAlPiUKICAjIHBhY2tfcm93cygiQ3JpdGVyaW9uKHMpIiwgMSwgNikgJT4lCiAgIyAjIGNvbHVtbl9zcGVjKDEsIHdpZHRoID0gIjEwZW0iKSAlPiUgCiAgIyBwYWNrX3Jvd3MoIlByZWRpY3RvcihzKSIsIDcsIDE5KSAlPiUKICBmb290bm90ZShnZW5lcmFsID0gIk5vcm1hbGl0eSBpcyBtZXQgZm9yIG5vbi1zaWduaWZpY2FudCBwLXZhbHVlcyAoaS5lLiwgZ3JlYXRlciB0aGFuIDAuMDUpLiIpICU+JSAKICBjb2x1bW5fc3BlYyhjKDQpLCBib3JkZXJfbGVmdCA9IFQpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgcmVzZXQgTkEgdmFscyBpbiBrYWJsZSB0YWJsZXMgdG8gIk5BIgpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gTkEpIAoKIyBtYWtlIGNvbG91ciBwYWwKcmVnX2NvbG91cnMgPC0gYygiIzQxNDUzNSIsICIjMDg2MDVGIiwgIiMzRjgyNkQiLCAiIzg1ODU4NSIsICIjRERBNDQ4IiwgIiNGMDgwM0MiLCAiIzk4NDEwQiIgKSAjIGdyZWVuID4gb3JhbmdlCgojIHBsb3QgbG0KICAjIHBsb3Qgc3RhbmRhcmRpemVkIGJldGFzIHRvIGNvbXBhcmUgY29vZWZmaWNpZW50cwpzb25hX3JlZ19TQURfZWFfcGxvdCA8LSAKICBzalBsb3Q6OnBsb3RfbW9kZWwobW9kZWwgPSBzb25hX3JlZ19TQURfZWEsICMgbG0gb3V0cHV0IAogICAgICAgICAgICAgICAgICAgICAjIHRpdGxlID0gYygiU3RhbmRhcmRpemVkIGJldGEgQ29lZmZpY2llbnRzIGZvciBNdWx0aXBsZSBSZWdyZXNzaW9uIE1vZGVsIFByZWRpY3RpbmcgTk1QUSBTY29yZSAoU09OQSkiKSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwgIyB0byByZW1vdmUgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJzdGQiLCAjIHR5cGUgInN0ZCIgPSBzdGFuZGFyZGl6ZWQgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgI3NvcnQuZXN0ID0gVCwgIyBzb3J0IGJhc2VkIG9uIGJldGFzIChoaWdoZXN0IG9uIHRvcCkKICAgICAgICAgICAgICAgICAgICAgd3JhcC50aXRsZSA9IDU1LCAjIGNoYXIgbGVuZ3RoIG9mIGVhY2ggdGl0bGUgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGF4aXMubGFiZWxzID0gYygiSU5TRVJUIFBSRUQgTkFNRVMiKQogICAgICAgICAgICAgICAgICAgICBncmlkLmJyZWFrcyA9IC4yNSwgIyB4LWF4aXMgYnJlYWtzIAogICAgICAgICAgICAgICAgICAgICAjc2UgPSBUICMgdXNlIHNlIGluc3RlYWQgb2YgQ0kKICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gcmVnX2NvbG91cnMsCiAgICAgICAgICAgICAgICAgICAgIHNob3cudmFsdWVzID0gVCwgIyBzaG93IGJldGFzCiAgICAgICAgICAgICAgICAgICAgIHNob3cucCA9IFQsICMgc2hvdyAqIGZvciBzaWcgcAogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5vZmZzZXQgPSAwLjQwLCAjIG9mZnNldCB0byBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zaXplID0gMywgIyBzaXplIG9mIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIsICMgbnVtIGRlY2ltYWxzIGluIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRvdC5zaXplID0gMi41LCBsaW5lLnNpemUgPSAxLjUsIAogICAgICAgICAgICAgICAgICAgICB2bGluZS5jb2xvciA9ICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnRlcm1zID0gYygxLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA1LCA2LCA3LCA3LCA3KSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy5sYWJlbHMgPSBjKCJEQVNTOiBTIiwgIkRBU1M6IEEiLCAiREFTUzogRCIsICJTU0VJVCIsICJTUlMiLCAiUlNFUyIsICJORU86IE4iLCAiTkVPOiBBIiwgIk5FTzogRSIsICJORU86IEMiLCAiTkVPOiBPIiwgIkJJUyIsICJBZ2UiKSwgCiAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSAiU3RhbmRhcmRpemVkIEJldGEgQ29lZmZpY2llbnQiLCAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAuNQogICAgICAgICAgICAgICAgICAgICApICsKICAgIGZvbnRfc2l6ZShvZmZzZXQueCA9IDEwKSArCiAgICBmb250X3NpemUoYmFzZS50aGVtZSA9IHRoZW1lX2NsYXNzaWMoKSkKCiMgc2hvdyBwbG90CnNvbmFfcmVnX1NBRF9lYV9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9zb25hX3JlZ19TQURfZWFfcGxvdChvY3QyOCkiLCBwbG90ID0gc29uYV9yZWdfU0FEX2VhX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKCiMgZXhwb3J0IGNzdiBmaWxlcyBvZiBsbSB0YWJsZQogIHdyaXRlLmNzdihzb25hX3JlZ19TQURfZWFfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX3JlZ19TQURfZWFfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgojIyMjIyBTQUQgLSBEaXN0cmFjdGliaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRDogRGlzdCA9IGFnZSArIEJJUyArIE5FTzogTyArIE5FTzogQyArIE5FTzogRSArIE5FTzogQSArIE5FTzogTiArIFJTRVMgKyBTUlMgKyBTU0VJVCArIERBU1M6IEQgKyBEQVNTOiBBICsgREFTUzogUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnbmlmaWNhbnQsIEYoYHIgYXMubnVtZXJpYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzJdKWAsIGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShzb25hX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1sxXSlgLCBwIGByIHBfcm91bmQoYXMubnVtZXJpYyhwZihzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzFdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRikpKWAsIFIyID0gYHIgcm91bmQoc3VtbWFyeShzb25hX3JlZ19TQURfZGlzdCkkci5zcXVhcmVkLCAyKWAKCmBgYHtyfQojIHJ1biBsbQpzb25hX3JlZ19TQURfZGlzdCA8LSBsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2Rpc3Rfc3VtIH4gYWdlICsgQklTX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1JTX3N1bSArIFNTRUlUX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSkKCiMgc2hvdyBzdW1tYXJ5IG9mIGxtCnN1bW1hcnkoc29uYV9yZWdfU0FEX2Rpc3QpCgojIGNyZWF0ZSB0YWJsZSBkZXBpY3RpbmcgbWFpbiBzdGF0cyB0byBleHBvcnQgbGF0ZXIKc29uYV9yZWdfU0FEX2Rpc3RfdCA8LSAKICAgICAgcmJpbmQodGlkeShzb25hX3JlZ19TQURfZGlzdCksICMgdXNlIHRpZHkoKSBpbiBicm9vbSBwYWNrYWdlCiAgICAgIHRpYmJsZSgidGVybSIgPSBjKCJmX3N0YXQiLCAiUjIvQWRqLlIyIiwgIk4iKSwgCiAgICAgICAgICAgICAiZXN0aW1hdGUiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRyLnNxdWFyZWQsIG5yb3coc29uYV9yZWdfU0FEX2Rpc3QkbW9kZWwpKSwgCiAgICAgICAgICAgICAic3RkLmVycm9yIiA9IGMoc3VtbWFyeShzb25hX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1szXSwgc3VtbWFyeShzb25hX3JlZ19TQURfZGlzdCkkYWRqLnIuc3F1YXJlZCwgTkEpLCAKICAgICAgICAgICAgICJzdGF0aXN0aWMiID0gYyhzdW1tYXJ5KHNvbmFfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzFdLCByZXAoTkEsIDIpKSwgCiAgICAgICAgICAgICAicC52YWx1ZSIgPSBjKHBmKHN1bW1hcnkoc29uYV9yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkoc29uYV9yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSwgcmVwKE5BLCAyKSkKICAgICAgICAgICAgICkKICAgICAgKQoKIyByZW1vdmUgTkEgZnJvbSBrYWJsZSB0YWJsZXMKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9ICcnKSAKCiMgc2hvdyBrYWJsZSB0YWJsZQprYWJsZShzb25hX3JlZ19TQURfZGlzdF90LCBjYXB0aW9uID0gIk11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBTQURfZGlzdCBTY29yZSIsIGFsaWduID0gcmVwKCdsY2NjYycpLCBkaWdpdHMgPSA0KSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogICMgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIlNPTkEiID0gMiwgIk10dXJrIiA9IDIpKSAlPiUKICAjIHBhY2tfcm93cygiQ3JpdGVyaW9uKHMpIiwgMSwgNikgJT4lCiAgIyAjIGNvbHVtbl9zcGVjKDEsIHdpZHRoID0gIjEwZW0iKSAlPiUgCiAgIyBwYWNrX3Jvd3MoIlByZWRpY3RvcihzKSIsIDcsIDE5KSAlPiUKICBmb290bm90ZShnZW5lcmFsID0gIk5vcm1hbGl0eSBpcyBtZXQgZm9yIG5vbi1zaWduaWZpY2FudCBwLXZhbHVlcyAoaS5lLiwgZ3JlYXRlciB0aGFuIDAuMDUpLiIpICU+JSAKICBjb2x1bW5fc3BlYyhjKDQpLCBib3JkZXJfbGVmdCA9IFQpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgcmVzZXQgTkEgdmFscyBpbiBrYWJsZSB0YWJsZXMgdG8gIk5BIgpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gTkEpIAoKIyBtYWtlIGNvbG91ciBwYWwKcmVnX2NvbG91cnMgPC0gYygiIzQxNDUzNSIsICIjMDg2MDVGIiwgIiMzRjgyNkQiLCAiIzg1ODU4NSIsICIjRERBNDQ4IiwgIiNGMDgwM0MiLCAiIzk4NDEwQiIgKSAjIGdyZWVuID4gb3JhbmdlCgojIHBsb3QgbG0KICAjIHBsb3Qgc3RhbmRhcmRpemVkIGJldGFzIHRvIGNvbXBhcmUgY29vZWZmaWNpZW50cwpzb25hX3JlZ19TQURfZGlzdF9wbG90IDwtIAogIHNqUGxvdDo6cGxvdF9tb2RlbChtb2RlbCA9IHNvbmFfcmVnX1NBRF9kaXN0LCAjIGxtIG91dHB1dCAKICAgICAgICAgICAgICAgICAgICAgIyB0aXRsZSA9IGMoIlN0YW5kYXJkaXplZCBiZXRhIENvZWZmaWNpZW50cyBmb3IgTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIE5NUFEgU2NvcmUgKFNPTkEpIiksCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIiIsICMgdG8gcmVtb3ZlIHRpdGxlCiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAic3RkIiwgIyB0eXBlICJzdGQiID0gc3RhbmRhcmRpemVkIGJldGFzCiAgICAgICAgICAgICAgICAgICAgICNzb3J0LmVzdCA9IFQsICMgc29ydCBiYXNlZCBvbiBiZXRhcyAoaGlnaGVzdCBvbiB0b3ApCiAgICAgICAgICAgICAgICAgICAgIHdyYXAudGl0bGUgPSA1NSwgIyBjaGFyIGxlbmd0aCBvZiBlYWNoIHRpdGxlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgIyBheGlzLmxhYmVscyA9IGMoIklOU0VSVCBQUkVEIE5BTUVTIikKICAgICAgICAgICAgICAgICAgICAgZ3JpZC5icmVha3MgPSAuMjUsICMgeC1heGlzIGJyZWFrcyAKICAgICAgICAgICAgICAgICAgICAgI3NlID0gVCAjIHVzZSBzZSBpbnN0ZWFkIG9mIENJCiAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHJlZ19jb2xvdXJzLAogICAgICAgICAgICAgICAgICAgICBzaG93LnZhbHVlcyA9IFQsICMgc2hvdyBiZXRhcwogICAgICAgICAgICAgICAgICAgICBzaG93LnAgPSBULCAjIHNob3cgKiBmb3Igc2lnIHAKICAgICAgICAgICAgICAgICAgICAgdmFsdWUub2Zmc2V0ID0gMC40MCwgIyBvZmZzZXQgdG8gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2l6ZSA9IDMsICMgc2l6ZSBvZiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkb3Quc2l6ZSA9IDIuNSwgbGluZS5zaXplID0gMS41LCAKICAgICAgICAgICAgICAgICAgICAgdmxpbmUuY29sb3IgPSAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICBncm91cC50ZXJtcyA9IGMoMSwgMiwgMywgMywgMywgMywgMywgNCwgNSwgNiwgNywgNywgNyksCiAgICAgICAgICAgICAgICAgICAgIGF4aXMubGFiZWxzID0gYygiREFTUzogUyIsICJEQVNTOiBBIiwgIkRBU1M6IEQiLCAiU1NFSVQiLCAiU1JTIiwgIlJTRVMiLCAiTkVPOiBOIiwgIk5FTzogQSIsICJORU86IEUiLCAiTkVPOiBDIiwgIk5FTzogTyIsICJCSVMiLCAiQWdlIiksIAogICAgICAgICAgICAgICAgICAgICBheGlzLnRpdGxlID0gIlN0YW5kYXJkaXplZCBCZXRhIENvZWZmaWNpZW50IiwgCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLjUKICAgICAgICAgICAgICAgICAgICAgKSArCiAgICBmb250X3NpemUob2Zmc2V0LnggPSAxMCkgKwogICAgZm9udF9zaXplKGJhc2UudGhlbWUgPSB0aGVtZV9jbGFzc2ljKCkpCgojIHNob3cgcGxvdApzb25hX3JlZ19TQURfZGlzdF9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9zb25hX3JlZ19TQURfZGlzdF9wbG90KG9jdDI4KSIsIHBsb3QgPSBzb25hX3JlZ19TQURfZGlzdF9wbG90LCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDYuNSwgd2lkdGggPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCgojIGV4cG9ydCBjc3YgZmlsZXMgb2YgbG0gdGFibGUKICB3cml0ZS5jc3Yoc29uYV9yZWdfU0FEX2Rpc3RfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9zb25hX3JlZ19TQURfZGlzdF90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBUKQpgYGAKCjwhLS0gIyMjIyMgVmlzdWFsaXphdGlvbnM6IFBhbmVscyAtLT4KCjwhLS0gIyMjIyMjIE5NUFEgJiBTQUQgLS0+CgpgYGB7ciBldmFsPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQojIG1ha2UgY29sb3VyIHBhbApyZWdfY29sb3VycyA8LSBjKCIjNDE0NTM1IiwgIiMwODYwNUYiLCAiIzNGODI2RCIsICIjODU4NTg1IiwgIiNEREE0NDgiLCAiI0YwODAzQyIsICIjOTg0MTBCIiApICMgZ3JlZW4gPiBvcmFuZ2UKCiMgcGxvdCBsbSAtLSBOTVBRCiAgIyBwbG90IHN0YW5kYXJkaXplZCBiZXRhcyB0byBjb21wYXJlIGNvZWZmaWNpZW50cwpzb25hX3JlZ19OTVBRX3Bsb3RfcGFuIDwtIAogIHNqUGxvdDo6cGxvdF9tb2RlbChtb2RlbCA9IHNvbmFfcmVnX05NUFEsICMgbG0gb3V0cHV0IAogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGMoIihBKSBOTVBRIiksCiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAic3RkIiwgIyB0eXBlICJzdGQiID0gc3RhbmRhcmRpemVkIGJldGFzCiAgICAgICAgICAgICAgICAgICAgICNzb3J0LmVzdCA9IFQsICMgc29ydCBiYXNlZCBvbiBiZXRhcyAoaGlnaGVzdCBvbiB0b3ApCiAgICAgICAgICAgICAgICAgICAgIHdyYXAudGl0bGUgPSA1NSwgIyBjaGFyIGxlbmd0aCBvZiBlYWNoIHRpdGxlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgI2F4aXMubGltID0gYygtLjI1LC4yNSkKICAgICAgICAgICAgICAgICAgICAgZ3JpZC5icmVha3MgPSAuMjUsICMgeC1heGlzIGJyZWFrcyAKICAgICAgICAgICAgICAgICAgICAgI3NlID0gVCAjIHVzZSBzZSBpbnN0ZWFkIG9mIENJCiAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHJlZ19jb2xvdXJzLAogICAgICAgICAgICAgICAgICAgICBzaG93LnZhbHVlcyA9IFQsICMgc2hvdyBiZXRhcwogICAgICAgICAgICAgICAgICAgICBzaG93LnAgPSBULCAjIHNob3cgKiBmb3Igc2lnIHAKICAgICAgICAgICAgICAgICAgICAgdmFsdWUub2Zmc2V0ID0gMC40MCwgIyBvZmZzZXQgdG8gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2l6ZSA9IDMsICMgc2l6ZSBvZiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkb3Quc2l6ZSA9IDIuNSwgbGluZS5zaXplID0gMS41LCAKICAgICAgICAgICAgICAgICAgICAgdmxpbmUuY29sb3IgPSAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICBncm91cC50ZXJtcyA9IGMoMSwgMiwgMywgMywgMywgMywgMywgNCwgNSwgNiwgNywgNywgNyksCiAgICAgICAgICAgICAgICAgICAgIGF4aXMubGFiZWxzID0gYygiREFTUzogUyIsICJEQVNTOiBBIiwgIkRBU1M6IEQiLCAiU1NFSVQiLCAiU1JTIiwgIlJTRVMiLCAiTkVPOiBOIiwgIk5FTzogQSIsICJORU86IEUiLCAiTkVPOiBDIiwgIk5FTzogTyIsICJCSVMiLCAiQWdlIiksIAogICAgICAgICAgICAgICAgICAgICBheGlzLnRpdGxlID0gIlN0YW5kYXJkaXplZCBCZXRhIENvZWZmaWNpZW50IiwgCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLjUKICAgICAgICAgICAgICAgICAgICAgKSArCiAgICBmb250X3NpemUob2Zmc2V0LnggPSAxMCkgKwogICAgZm9udF9zaXplKGJhc2UudGhlbWUgPSB0aGVtZV9jbGFzc2ljKCkpCgojIHBsb3QgbG0gLS0gU0FECiAgIyBwbG90IHN0YW5kYXJkaXplZCBiZXRhcyB0byBjb21wYXJlIGNvZWZmaWNpZW50cwpzb25hX3JlZ19TQURfcGxvdF9wYW4gPC0gCiAgc2pQbG90OjpwbG90X21vZGVsKG1vZGVsID0gc29uYV9yZWdfU0FELCAjIGxtIG91dHB1dCAKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBjKCIoQikgU0FEIiksCiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAic3RkIiwgIyB0eXBlICJzdGQiID0gc3RhbmRhcmRpemVkIGJldGFzCiAgICAgICAgICAgICAgICAgICAgICNzb3J0LmVzdCA9IFQsICMgc29ydCBiYXNlZCBvbiBiZXRhcyAoaGlnaGVzdCBvbiB0b3ApCiAgICAgICAgICAgICAgICAgICAgIHdyYXAudGl0bGUgPSA1NSwgIyBjaGFyIGxlbmd0aCBvZiBlYWNoIHRpdGxlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgIyBheGlzLmxhYmVscyA9IGMoIklOU0VSVCBQUkVEIE5BTUVTIikKICAgICAgICAgICAgICAgICAgICAgZ3JpZC5icmVha3MgPSAuMjUsICMgeC1heGlzIGJyZWFrcyAKICAgICAgICAgICAgICAgICAgICAgI3NlID0gVCAjIHVzZSBzZSBpbnN0ZWFkIG9mIENJCiAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHJlZ19jb2xvdXJzLAogICAgICAgICAgICAgICAgICAgICBzaG93LnZhbHVlcyA9IFQsICMgc2hvdyBiZXRhcwogICAgICAgICAgICAgICAgICAgICBzaG93LnAgPSBULCAjIHNob3cgKiBmb3Igc2lnIHAKICAgICAgICAgICAgICAgICAgICAgdmFsdWUub2Zmc2V0ID0gMC40MCwgIyBvZmZzZXQgdG8gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2l6ZSA9IDMsICMgc2l6ZSBvZiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkb3Quc2l6ZSA9IDIuNSwgbGluZS5zaXplID0gMS41LCAKICAgICAgICAgICAgICAgICAgICAgdmxpbmUuY29sb3IgPSAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICBncm91cC50ZXJtcyA9IGMoMSwgMiwgMywgMywgMywgMywgMywgNCwgNSwgNiwgNywgNywgNyksCiAgICAgICAgICAgICAgICAgICAgIGF4aXMubGFiZWxzID0gYygiREFTUzogUyIsICJEQVNTOiBBIiwgIkRBU1M6IEQiLCAiU1NFSVQiLCAiU1JTIiwgIlJTRVMiLCAiTkVPOiBOIiwgIk5FTzogQSIsICJORU86IEUiLCAiTkVPOiBDIiwgIk5FTzogTyIsICJCSVMiLCAiQWdlIiksIAogICAgICAgICAgICAgICAgICAgICBheGlzLnRpdGxlID0gIlN0YW5kYXJkaXplZCBCZXRhIENvZWZmaWNpZW50IiwgCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLjUKICAgICAgICAgICAgICAgICAgICAgKSArCiAgICBmb250X3NpemUob2Zmc2V0LnggPSAxMCkgKwogICAgZm9udF9zaXplKGJhc2UudGhlbWUgPSB0aGVtZV9jbGFzc2ljKCkpCgojIGNyZWF0ZSBmaWd1cmUgY2FwdGlvbgpzY2F0YWxsX25vdGVfc29uYV9yZWdfTk1QUV9TQURfcGxvdF9wYW4gPSAiTm90ZTogYWRkIG5vdGUgaGVyZS4uLiAiCnNjYXRhbGxfbm90ZV9zb25hX3JlZ19OTVBRX1NBRF9wbG90X3BhbiA9IHBhc3RlMChzdHJ3cmFwKHNjYXRhbGxfbm90ZV9zb25hX3JlZ19OTVBRX1NBRF9wbG90X3Bhbiwgd2lkdGggPSA5MCksIGNvbGxhcHNlID0gIlxuIikKCiMgbWFrZSBmaWcKc29uYV9yZWdfTk1QUV9TQURfcGxvdF9wYW4gPC0gCiAgZ3JpZC5hcnJhbmdlKHNvbmFfcmVnX05NUFFfcGxvdF9wYW4sIHNvbmFfcmVnX1NBRF9wbG90X3BhbiwKICAgICAgICAgICAgICAgbnJvdyA9IDEsCiAgICAgICAgICAgICAgIHRvcCA9IHRleHRfZ3JvYigiU3RhbmRhcmRpemVkIGJldGEgQ29lZmZpY2llbnRzIGZvciBNdWx0aXBsZSBSZWdyZXNzaW9uIE1vZGVsIFByZWRpY3RpbmcgTk1QUSAmIFNBRCBTY29yZSAoU09OQSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICJib2xkIiwgc2l6ZSA9IDEwKSwgIyBzaG93IHRleHQgaW4gYm9sZAogICAgICAgICAgICAgICBib3R0b20gPSB0ZXh0X2dyb2Ioc2NhdGFsbF9ub3RlX3NvbmFfcmVnX05NUFFfU0FEX3Bsb3RfcGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAwLCAjIHNwZWNpZnkgaG9yaXpvbnRhbCBqdXN0aWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMC4wNSwgIyBzcGVjaWZ5IG9yaWVudGF0aW9uIG9uIHgtYXhpcyAoYm90dG9tIEwgPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICJpdGFsaWMiKSAjIHNob3cgdGV4dCBpbiBpdGFsaWNzCiAgICAgICAgICAgICAgICkKCiMgc2hvdyBmaWcKc29uYV9yZWdfTk1QUV9TQURfcGxvdF9wYW4KCiMgZXhwb3J0IHBsb3RzCiAgIyByZW1vdmUgY2FwdGlvbiAmIHRpdGxlIGlmIG5lZWRlZCBiZWZvcmUgZXhwb3J0aW5nCiMgZ2dzYXZlKGZpbGVuYW1lPSJhbm92YV92aW9saW5fRFNHUjJfb3B0aW9uMiIsIHBsb3QgPSBhbm92YV92aW9saW5fRFNHUjIsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCmBgYAoKIyMjIyBTdHVkeSAyOiBNdHVyawoKIyMjIyMgTk1QUQoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokTk1QUSA9IGFnZSArIEJJUyArIE5FTzogTyArIE5FTzogQyArIE5FTzogRSArIE5FTzogQSArIE5FTzogTiArIFJTRVMgKyBTUlMgKyBTU0VJVCArIERBU1M6IEQgKyBEQVNTOiBBICsgREFTUzogUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnbmlmaWNhbnQsIEYoYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRmc3RhdGlzdGljWzJdKWAsIGByIGFzLm51bWVyaWMoc3VtbWFyeShtdHVya19yZWdfTk1QUSkkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShtdHVya19yZWdfTk1QUSkkZnN0YXRpc3RpY1sxXSlgLCBwIGByIHBfcm91bmQoYXMubnVtZXJpYyhwZihzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRmc3RhdGlzdGljWzFdLCBzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRikpKWAsIFIyID0gYHIgcm91bmQoc3VtbWFyeShtdHVya19yZWdfTk1QUSkkci5zcXVhcmVkLCAyKWAKCmBgYHtyfQojIHJ1biBsbQptdHVya19yZWdfTk1QUSA8LSBsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IE5NUFFfc3VtIH4gYWdlICsgQklTX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1JTX3N1bSArIFNTRUlUX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSkKCiMgc2hvdyBzdW1tYXJ5IG9mIGxtCnN1bW1hcnkobXR1cmtfcmVnX05NUFEpCgojIGNyZWF0ZSB0YWJsZSBkZXBpY3RpbmcgbWFpbiBzdGF0cyB0byBleHBvcnQgbGF0ZXIKbXR1cmtfcmVnX05NUFFfdCA8LSAKICAgICAgcmJpbmQodGlkeShtdHVya19yZWdfTk1QUSksICMgdXNlIHRpZHkoKSBpbiBicm9vbSBwYWNrYWdlCiAgICAgIHRpYmJsZSgidGVybSIgPSBjKCJmX3N0YXQiLCAiUjIvQWRqLlIyIiwgIk4iKSwgCiAgICAgICAgICAgICAiZXN0aW1hdGUiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRyLnNxdWFyZWQsIG5yb3cobXR1cmtfcmVnX05NUFEkbW9kZWwpKSwgCiAgICAgICAgICAgICAic3RkLmVycm9yIiA9IGMoc3VtbWFyeShtdHVya19yZWdfTk1QUSkkZnN0YXRpc3RpY1szXSwgc3VtbWFyeShtdHVya19yZWdfTk1QUSkkYWRqLnIuc3F1YXJlZCwgTkEpLCAKICAgICAgICAgICAgICJzdGF0aXN0aWMiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19OTVBRKSRmc3RhdGlzdGljWzFdLCByZXAoTkEsIDIpKSwgCiAgICAgICAgICAgICAicC52YWx1ZSIgPSBjKHBmKHN1bW1hcnkobXR1cmtfcmVnX05NUFEpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkobXR1cmtfcmVnX05NUFEpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX05NUFEpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSwgcmVwKE5BLCAyKSkKICAgICAgICAgICAgICkKICAgICAgKQoKIyByZW1vdmUgTkEgZnJvbSBrYWJsZSB0YWJsZXMKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9ICcnKSAKCiMgc2hvdyBrYWJsZSB0YWJsZQprYWJsZShtdHVya19yZWdfTk1QUV90LCBjYXB0aW9uID0gIk11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIiwgYWxpZ24gPSByZXAoJ2xjY2NjJyksIGRpZ2l0cyA9MykgJT4lIAogIGthYmxlX3BhcGVyKGZ1bGxfd2lkdGggPSBGKSAlPiUKICAjIGFkZF9oZWFkZXJfYWJvdmUoYygiICIsICJtdHVyayIgPSAyLCAiTXR1cmsiID0gMikpICU+JQogICMgcGFja19yb3dzKCJDcml0ZXJpb24ocykiLCAxLCA2KSAlPiUKICAjICMgY29sdW1uX3NwZWMoMSwgd2lkdGggPSAiMTBlbSIpICU+JSAKICAjIHBhY2tfcm93cygiUHJlZGljdG9yKHMpIiwgNywgMTkpICU+JQogIGZvb3Rub3RlKGdlbmVyYWwgPSAiTm9ybWFsaXR5IGlzIG1ldCBmb3Igbm9uLXNpZ25pZmljYW50IHAtdmFsdWVzIChpLmUuLCBncmVhdGVyIHRoYW4gMC4wNSkuIikgJT4lIAogIGNvbHVtbl9zcGVjKGMoNCksIGJvcmRlcl9sZWZ0ID0gVCkgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyByZXNldCBOQSB2YWxzIGluIGthYmxlIHRhYmxlcyB0byAiTkEiCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSBOQSkgCgojIG1ha2UgY29sb3VyIHBhbApyZWdfY29sb3VycyA8LSBjKCIjNDE0NTM1IiwgIiMwODYwNUYiLCAiIzNGODI2RCIsICIjODU4NTg1IiwgIiNEREE0NDgiLCAiI0YwODAzQyIsICIjOTg0MTBCIiApICMgZ3JlZW4gPiBvcmFuZ2UKCiMgcGxvdCBsbQogICMgcGxvdCBzdGFuZGFyZGl6ZWQgYmV0YXMgdG8gY29tcGFyZSBjb29lZmZpY2llbnRzCm10dXJrX3JlZ19OTVBRX3Bsb3QgPC0gCiAgc2pQbG90OjpwbG90X21vZGVsKG1vZGVsID0gbXR1cmtfcmVnX05NUFEsICMgbG0gb3V0cHV0IAogICAgICAgICAgICAgICAgICAgICAjIHRpdGxlID0gYygiU3RhbmRhcmRpemVkIGJldGEgQ29lZmZpY2llbnRzIGZvciBNdWx0aXBsZSBSZWdyZXNzaW9uIE1vZGVsIFByZWRpY3RpbmcgTk1QUSBTY29yZSAoTXR1cmspIiksCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIiIsICMgdG8gcmVtb3ZlIHRpdGxlCiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAic3RkIiwgIyB0eXBlICJzdGQiID0gc3RhbmRhcmRpemVkIGJldGFzCiAgICAgICAgICAgICAgICAgICAgICNzb3J0LmVzdCA9IFQsICMgc29ydCBiYXNlZCBvbiBiZXRhcyAoaGlnaGVzdCBvbiB0b3ApCiAgICAgICAgICAgICAgICAgICAgIHdyYXAudGl0bGUgPSA1NSwgIyBjaGFyIGxlbmd0aCBvZiBlYWNoIHRpdGxlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgIyBheGlzLmxhYmVscyA9IGMoIklOU0VSVCBQUkVEIE5BTUVTIikKICAgICAgICAgICAgICAgICAgICAgZ3JpZC5icmVha3MgPSAuMjUsICMgeC1heGlzIGJyZWFrcyAKICAgICAgICAgICAgICAgICAgICAgI3NlID0gVCAjIHVzZSBzZSBpbnN0ZWFkIG9mIENJCiAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyA9IHJlZ19jb2xvdXJzLAogICAgICAgICAgICAgICAgICAgICBzaG93LnZhbHVlcyA9IFQsICMgc2hvdyBiZXRhcwogICAgICAgICAgICAgICAgICAgICBzaG93LnAgPSBULCAjIHNob3cgKiBmb3Igc2lnIHAKICAgICAgICAgICAgICAgICAgICAgdmFsdWUub2Zmc2V0ID0gMC40MCwgIyBvZmZzZXQgdG8gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2l6ZSA9IDMsICMgc2l6ZSBvZiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICBkb3Quc2l6ZSA9IDIuNSwgbGluZS5zaXplID0gMS41LCAKICAgICAgICAgICAgICAgICAgICAgdmxpbmUuY29sb3IgPSAiYmxhY2siLAogICAgICAgICAgICAgICAgICAgICBncm91cC50ZXJtcyA9IGMoMSwgMiwgMywgMywgMywgMywgMywgNCwgNSwgNiwgNywgNywgNyksCiAgICAgICAgICAgICAgICAgICAgIGF4aXMubGFiZWxzID0gYygiREFTUzogUyIsICJEQVNTOiBBIiwgIkRBU1M6IEQiLCAiU1NFSVQiLCAiU1JTIiwgIlJTRVMiLCAiTkVPOiBOIiwgIk5FTzogQSIsICJORU86IEUiLCAiTkVPOiBDIiwgIk5FTzogTyIsICJCSVMiLCAiQWdlIiksIAogICAgICAgICAgICAgICAgICAgICBheGlzLnRpdGxlID0gIlN0YW5kYXJkaXplZCBCZXRhIENvZWZmaWNpZW50IiwgCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLjUKICAgICAgICAgICAgICAgICAgICAgKSArCiAgICBmb250X3NpemUob2Zmc2V0LnggPSAxMCkgKwogICAgZm9udF9zaXplKGJhc2UudGhlbWUgPSB0aGVtZV9jbGFzc2ljKCkpCgojIHNob3cgcGxvdAptdHVya19yZWdfTk1QUV9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9tdHVya19yZWdfTk1QUV9wbG90KG9jdDI4KSIsIHBsb3QgPSBtdHVya19yZWdfTk1QUV9wbG90LCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDYuNSwgd2lkdGggPSA1LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCiAgCiMgZXhwb3J0IGNzdiBmaWxlcyBvZiBsbSB0YWJsZQogIHdyaXRlLmNzdihtdHVya19yZWdfTk1QUV90LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX3JlZ19OTVBRX3Qob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCmBgYAoKIyMjIyMgU0FEIC0gT3ZlcmFsbAoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWduaWZpY2FudCwgRihgciBhcy5udW1lcmljKHN1bW1hcnkobXR1cmtfcmVnX1NBRCkkZnN0YXRpc3RpY1syXSlgLCBgciBhcy5udW1lcmljKHN1bW1hcnkobXR1cmtfcmVnX1NBRCkkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShtdHVya19yZWdfU0FEKSRmc3RhdGlzdGljWzFdKWAsIHAgYHIgcF9yb3VuZChhcy5udW1lcmljKHBmKHN1bW1hcnkobXR1cmtfcmVnX1NBRCkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShtdHVya19yZWdfU0FEKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQUQpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSkpYCwgUjIgPSBgciByb3VuZChzdW1tYXJ5KG10dXJrX3JlZ19TQUQpJHIuc3F1YXJlZCwgMilgCgpgYGB7cn0KIyBydW4gbG0KbXR1cmtfcmVnX1NBRCA8LSBsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9zdW0gfiBhZ2UgKyBCSVNfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTUlNfc3VtICsgU1NFSVRfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtKQoKIyBzaG93IHN1bW1hcnkgb2YgbG0Kc3VtbWFyeShtdHVya19yZWdfU0FEKQoKIyBjcmVhdGUgdGFibGUgZGVwaWN0aW5nIG1haW4gc3RhdHMgdG8gZXhwb3J0IGxhdGVyCm10dXJrX3JlZ19TQURfdCA8LSAKICAgICAgcmJpbmQodGlkeShtdHVya19yZWdfU0FEKSwgIyB1c2UgdGlkeSgpIGluIGJyb29tIHBhY2thZ2UKICAgICAgdGliYmxlKCJ0ZXJtIiA9IGMoImZfc3RhdCIsICJSMi9BZGouUjIiLCAiTiIpLCAKICAgICAgICAgICAgICJlc3RpbWF0ZSIgPSBjKHN1bW1hcnkobXR1cmtfcmVnX1NBRCkkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShtdHVya19yZWdfU0FEKSRyLnNxdWFyZWQsIG5yb3cobXR1cmtfcmVnX1NBRCRtb2RlbCkpLCAKICAgICAgICAgICAgICJzdGQuZXJyb3IiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19TQUQpJGZzdGF0aXN0aWNbM10sIHN1bW1hcnkobXR1cmtfcmVnX1NBRCkkYWRqLnIuc3F1YXJlZCwgTkEpLCAKICAgICAgICAgICAgICJzdGF0aXN0aWMiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19TQUQpJGZzdGF0aXN0aWNbMV0sIHJlcChOQSwgMikpLCAKICAgICAgICAgICAgICJwLnZhbHVlIiA9IGMocGYoc3VtbWFyeShtdHVya19yZWdfU0FEKSRmc3RhdGlzdGljWzFdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQUQpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRCkkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpLCByZXAoTkEsIDIpKQogICAgICAgICAgICAgKQogICAgICApCgojIHJlbW92ZSBOQSBmcm9tIGthYmxlIHRhYmxlcwpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gJycpIAoKIyBzaG93IGthYmxlIHRhYmxlCmthYmxlKG10dXJrX3JlZ19TQURfdCwgY2FwdGlvbiA9ICJNdWx0aXBsZSBSZWdyZXNzaW9uIE1vZGVsIFByZWRpY3RpbmcgU0FEIFNjb3JlIiwgYWxpZ24gPSByZXAoJ2xjY2NjJyksIGRpZ2l0cyA9MykgJT4lIAogIGthYmxlX3BhcGVyKGZ1bGxfd2lkdGggPSBGKSAlPiUKICAjIGFkZF9oZWFkZXJfYWJvdmUoYygiICIsICJtdHVyayIgPSAyLCAiTXR1cmsiID0gMikpICU+JQogICMgcGFja19yb3dzKCJDcml0ZXJpb24ocykiLCAxLCA2KSAlPiUKICAjICMgY29sdW1uX3NwZWMoMSwgd2lkdGggPSAiMTBlbSIpICU+JSAKICAjIHBhY2tfcm93cygiUHJlZGljdG9yKHMpIiwgNywgMTkpICU+JQogIGZvb3Rub3RlKGdlbmVyYWwgPSAiTm9ybWFsaXR5IGlzIG1ldCBmb3Igbm9uLXNpZ25pZmljYW50IHAtdmFsdWVzIChpLmUuLCBncmVhdGVyIHRoYW4gMC4wNSkuIikgJT4lIAogIGNvbHVtbl9zcGVjKGMoNCksIGJvcmRlcl9sZWZ0ID0gVCkgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyByZXNldCBOQSB2YWxzIGluIGthYmxlIHRhYmxlcyB0byAiTkEiCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSBOQSkgCgojIG1ha2UgY29sb3VyIHBhbApyZWdfY29sb3VycyA8LSBjKCIjNDE0NTM1IiwgIiMwODYwNUYiLCAiIzNGODI2RCIsICIjODU4NTg1IiwgIiNEREE0NDgiLCAiI0YwODAzQyIsICIjOTg0MTBCIiApICMgZ3JlZW4gPiBvcmFuZ2UKCiMgcGxvdCBsbQogICMgcGxvdCBzdGFuZGFyZGl6ZWQgYmV0YXMgdG8gY29tcGFyZSBjb29lZmZpY2llbnRzCm10dXJrX3JlZ19TQURfcGxvdCA8LSAKICBzalBsb3Q6OnBsb3RfbW9kZWwobW9kZWwgPSBtdHVya19yZWdfU0FELCAjIGxtIG91dHB1dCAKICAgICAgICAgICAgICAgICAgICAgIyB0aXRsZSA9IGMoIlN0YW5kYXJkaXplZCBiZXRhIENvZWZmaWNpZW50cyBmb3IgTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIE5NUFEgU2NvcmUgKE10dXJrKSIpLAogICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICIiLCAjIHRvIHJlbW92ZSB0aXRsZQogICAgICAgICAgICAgICAgICAgICB0eXBlID0gInN0ZCIsICMgdHlwZSAic3RkIiA9IHN0YW5kYXJkaXplZCBiZXRhcwogICAgICAgICAgICAgICAgICAgICAjc29ydC5lc3QgPSBULCAjIHNvcnQgYmFzZWQgb24gYmV0YXMgKGhpZ2hlc3Qgb24gdG9wKQogICAgICAgICAgICAgICAgICAgICB3cmFwLnRpdGxlID0gNTUsICMgY2hhciBsZW5ndGggb2YgZWFjaCB0aXRsZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICMgYXhpcy5sYWJlbHMgPSBjKCJJTlNFUlQgUFJFRCBOQU1FUyIpCiAgICAgICAgICAgICAgICAgICAgIGdyaWQuYnJlYWtzID0gLjI1LCAjIHgtYXhpcyBicmVha3MgCiAgICAgICAgICAgICAgICAgICAgICNzZSA9IFQgIyB1c2Ugc2UgaW5zdGVhZCBvZiBDSQogICAgICAgICAgICAgICAgICAgICBjb2xvcnMgPSByZWdfY29sb3VycywKICAgICAgICAgICAgICAgICAgICAgc2hvdy52YWx1ZXMgPSBULCAjIHNob3cgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgc2hvdy5wID0gVCwgIyBzaG93ICogZm9yIHNpZyBwCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm9mZnNldCA9IDAuNDAsICMgb2Zmc2V0IHRvIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNpemUgPSAzLCAjIHNpemUgb2YgYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gMiwgIyBudW0gZGVjaW1hbHMgaW4gYmV0YSBsYWJlbHMKICAgICAgICAgICAgICAgICAgICAgZG90LnNpemUgPSAyLjUsIGxpbmUuc2l6ZSA9IDEuNSwgCiAgICAgICAgICAgICAgICAgICAgIHZsaW5lLmNvbG9yID0gImJsYWNrIiwKICAgICAgICAgICAgICAgICAgICAgZ3JvdXAudGVybXMgPSBjKDEsIDIsIDMsIDMsIDMsIDMsIDMsIDQsIDUsIDYsIDcsIDcsIDcpLAogICAgICAgICAgICAgICAgICAgICBheGlzLmxhYmVscyA9IGMoIkRBU1M6IFMiLCAiREFTUzogQSIsICJEQVNTOiBEIiwgIlNTRUlUIiwgIlNSUyIsICJSU0VTIiwgIk5FTzogTiIsICJORU86IEEiLCAiTkVPOiBFIiwgIk5FTzogQyIsICJORU86IE8iLCAiQklTIiwgIkFnZSIpLCAKICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZSA9ICJTdGFuZGFyZGl6ZWQgQmV0YSBDb2VmZmljaWVudCIsIAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC41CiAgICAgICAgICAgICAgICAgICAgICkgKwogICAgZm9udF9zaXplKG9mZnNldC54ID0gMTApICsKICAgIGZvbnRfc2l6ZShiYXNlLnRoZW1lID0gdGhlbWVfY2xhc3NpYygpKQoKIyBzaG93IHBsb3QKbXR1cmtfcmVnX1NBRF9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9tdHVya19yZWdfU0FEX3Bsb3Qob2N0MjgpIiwgcGxvdCA9IG10dXJrX3JlZ19TQURfcGxvdCwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA2LjUsIHdpZHRoID0gNSwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQogIAojIGV4cG9ydCBjc3YgZmlsZXMgb2YgbG0gdGFibGUKICB3cml0ZS5jc3YobXR1cmtfcmVnX1NBRF90LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX3JlZ19TQURfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgojIyMjIyBTQUQgLSBEZXBlbmRlbmN5CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQURfZGVwID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWduaWZpY2FudCwgRihgciBhcy5udW1lcmljKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMl0pYCwgYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzNdKWApID0gYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzFdKWAsIHAgYHIgcF9yb3VuZChhcy5udW1lcmljKHBmKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSkpYCwgUjIgPSBgciByb3VuZChzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGVwKSRyLnNxdWFyZWQsIDIpYAoKYGBge3J9CiMgcnVuIGxtCm10dXJrX3JlZ19TQURfZGVwIDwtIGxtKGRhdGEgPSBNdHVya19kYXRhLCBmb3JtdWxhID0gU0FEX2RlcF9zdW0gfiBhZ2UgKyBCSVNfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTUlNfc3VtICsgU1NFSVRfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtKQoKIyBzaG93IHN1bW1hcnkgb2YgbG0Kc3VtbWFyeShtdHVya19yZWdfU0FEX2RlcCkKCiMgY3JlYXRlIHRhYmxlIGRlcGljdGluZyBtYWluIHN0YXRzIHRvIGV4cG9ydCBsYXRlcgptdHVya19yZWdfU0FEX2RlcF90IDwtIAogICAgICByYmluZCh0aWR5KG10dXJrX3JlZ19TQURfZGVwKSwgIyB1c2UgdGlkeSgpIGluIGJyb29tIHBhY2thZ2UKICAgICAgdGliYmxlKCJ0ZXJtIiA9IGMoImZfc3RhdCIsICJSMi9BZGouUjIiLCAiTiIpLCAKICAgICAgICAgICAgICJlc3RpbWF0ZSIgPSBjKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJHIuc3F1YXJlZCwgbnJvdyhtdHVya19yZWdfU0FEX2RlcCRtb2RlbCkpLCAKICAgICAgICAgICAgICJzdGQuZXJyb3IiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGVwKSRmc3RhdGlzdGljWzNdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGVwKSRhZGouci5zcXVhcmVkLCBOQSksIAogICAgICAgICAgICAgInN0YXRpc3RpYyIgPSBjKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kZXApJGZzdGF0aXN0aWNbMV0sIHJlcChOQSwgMikpLCAKICAgICAgICAgICAgICJwLnZhbHVlIiA9IGMocGYoc3VtbWFyeShtdHVya19yZWdfU0FEX2RlcCkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2RlcCkkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2RlcCkkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpLCByZXAoTkEsIDIpKQogICAgICAgICAgICAgKQogICAgICApCgojIHJlbW92ZSBOQSBmcm9tIGthYmxlIHRhYmxlcwpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gJycpIAoKIyBzaG93IGthYmxlIHRhYmxlCmthYmxlKG10dXJrX3JlZ19TQURfZGVwX3QsIGNhcHRpb24gPSAiTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIFNBRF9kZXAgU2NvcmUiLCBhbGlnbiA9IHJlcCgnbGNjY2MnKSwgZGlnaXRzID0zKSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogICMgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIm10dXJrIiA9IDIsICJNdHVyayIgPSAyKSkgJT4lCiAgIyBwYWNrX3Jvd3MoIkNyaXRlcmlvbihzKSIsIDEsIDYpICU+JQogICMgIyBjb2x1bW5fc3BlYygxLCB3aWR0aCA9ICIxMGVtIikgJT4lIAogICMgcGFja19yb3dzKCJQcmVkaWN0b3IocykiLCA3LCAxOSkgJT4lCiAgZm9vdG5vdGUoZ2VuZXJhbCA9ICJOb3JtYWxpdHkgaXMgbWV0IGZvciBub24tc2lnbmlmaWNhbnQgcC12YWx1ZXMgKGkuZS4sIGdyZWF0ZXIgdGhhbiAwLjA1KS4iKSAlPiUgCiAgY29sdW1uX3NwZWMoYyg0KSwgYm9yZGVyX2xlZnQgPSBUKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCgojIHJlc2V0IE5BIHZhbHMgaW4ga2FibGUgdGFibGVzIHRvICJOQSIKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9IE5BKSAKCiMgbWFrZSBjb2xvdXIgcGFsCnJlZ19jb2xvdXJzIDwtIGMoIiM0MTQ1MzUiLCAiIzA4NjA1RiIsICIjM0Y4MjZEIiwgIiM4NTg1ODUiLCAiI0REQTQ0OCIsICIjRjA4MDNDIiwgIiM5ODQxMEIiICkgIyBncmVlbiA+IG9yYW5nZQoKIyBwbG90IGxtCiAgIyBwbG90IHN0YW5kYXJkaXplZCBiZXRhcyB0byBjb21wYXJlIGNvb2VmZmljaWVudHMKbXR1cmtfcmVnX1NBRF9kZXBfcGxvdCA8LSAKICBzalBsb3Q6OnBsb3RfbW9kZWwobW9kZWwgPSBtdHVya19yZWdfU0FEX2RlcCwgIyBsbSBvdXRwdXQgCiAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgPSBjKCJTdGFuZGFyZGl6ZWQgYmV0YSBDb2VmZmljaWVudHMgZm9yIE11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIChNdHVyaykiKSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwgIyB0byByZW1vdmUgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJzdGQiLCAjIHR5cGUgInN0ZCIgPSBzdGFuZGFyZGl6ZWQgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgI3NvcnQuZXN0ID0gVCwgIyBzb3J0IGJhc2VkIG9uIGJldGFzIChoaWdoZXN0IG9uIHRvcCkKICAgICAgICAgICAgICAgICAgICAgd3JhcC50aXRsZSA9IDU1LCAjIGNoYXIgbGVuZ3RoIG9mIGVhY2ggdGl0bGUgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGF4aXMubGFiZWxzID0gYygiSU5TRVJUIFBSRUQgTkFNRVMiKQogICAgICAgICAgICAgICAgICAgICBncmlkLmJyZWFrcyA9IC4yNSwgIyB4LWF4aXMgYnJlYWtzIAogICAgICAgICAgICAgICAgICAgICAjc2UgPSBUICMgdXNlIHNlIGluc3RlYWQgb2YgQ0kKICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gcmVnX2NvbG91cnMsCiAgICAgICAgICAgICAgICAgICAgIHNob3cudmFsdWVzID0gVCwgIyBzaG93IGJldGFzCiAgICAgICAgICAgICAgICAgICAgIHNob3cucCA9IFQsICMgc2hvdyAqIGZvciBzaWcgcAogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5vZmZzZXQgPSAwLjQwLCAjIG9mZnNldCB0byBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zaXplID0gMywgIyBzaXplIG9mIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIsICMgbnVtIGRlY2ltYWxzIGluIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRvdC5zaXplID0gMi41LCBsaW5lLnNpemUgPSAxLjUsIAogICAgICAgICAgICAgICAgICAgICB2bGluZS5jb2xvciA9ICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnRlcm1zID0gYygxLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA1LCA2LCA3LCA3LCA3KSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy5sYWJlbHMgPSBjKCJEQVNTOiBTIiwgIkRBU1M6IEEiLCAiREFTUzogRCIsICJTU0VJVCIsICJTUlMiLCAiUlNFUyIsICJORU86IE4iLCAiTkVPOiBBIiwgIk5FTzogRSIsICJORU86IEMiLCAiTkVPOiBPIiwgIkJJUyIsICJBZ2UiKSwgCiAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSAiU3RhbmRhcmRpemVkIEJldGEgQ29lZmZpY2llbnQiLCAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAuNQogICAgICAgICAgICAgICAgICAgICApICsKICAgIGZvbnRfc2l6ZShvZmZzZXQueCA9IDEwKSArCiAgICBmb250X3NpemUoYmFzZS50aGVtZSA9IHRoZW1lX2NsYXNzaWMoKSkKCiMgc2hvdyBwbG90Cm10dXJrX3JlZ19TQURfZGVwX3Bsb3QKCiMgZXhwb3J0IGNvcnIgbWF0cml4IHVzaW5nIGdnc2F2ZSgpICYgcmVwbGF5UGxvdCgpIHRvIGNhbGwgb24gcHJldmlvdXNseSBtYWRlIHBsb3QKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL210dXJrX3JlZ19TQURfZGVwX3Bsb3Qob2N0MjgpIiwgcGxvdCA9IG10dXJrX3JlZ19TQURfZGVwX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKICAKIyBleHBvcnQgY3N2IGZpbGVzIG9mIGxtIHRhYmxlCiAgd3JpdGUuY3N2KG10dXJrX3JlZ19TQURfZGVwX3QsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvbXR1cmtfcmVnX1NBRF9kZXBfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgojIyMjIyBTQUQgLSBBY2Nlc3NpYmlsaXR5CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQURfYWNjZXNzID0gYWdlICsgQklTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNSUyArIFNTRUlUICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWduaWZpY2FudCwgRihgciBhcy5udW1lcmljKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMl0pYCwgYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfYWNjZXNzKSRmc3RhdGlzdGljWzNdKWApID0gYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfYWNjZXNzKSRmc3RhdGlzdGljWzFdKWAsIHAgYHIgcF9yb3VuZChhcy5udW1lcmljKHBmKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSkpYCwgUjIgPSBgciByb3VuZChzdW1tYXJ5KG10dXJrX3JlZ19TQURfYWNjZXNzKSRyLnNxdWFyZWQsIDIpYAoKYGBge3J9CiMgcnVuIGxtCm10dXJrX3JlZ19TQURfYWNjZXNzIDwtIGxtKGRhdGEgPSBNdHVya19kYXRhLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2UgKyBCSVNfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTUlNfc3VtICsgU1NFSVRfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtKQoKIyBzaG93IHN1bW1hcnkgb2YgbG0Kc3VtbWFyeShtdHVya19yZWdfU0FEX2FjY2VzcykKCiMgY3JlYXRlIHRhYmxlIGRlcGljdGluZyBtYWluIHN0YXRzIHRvIGV4cG9ydCBsYXRlcgptdHVya19yZWdfU0FEX2FjY2Vzc190IDwtIAogICAgICByYmluZCh0aWR5KG10dXJrX3JlZ19TQURfYWNjZXNzKSwgIyB1c2UgdGlkeSgpIGluIGJyb29tIHBhY2thZ2UKICAgICAgdGliYmxlKCJ0ZXJtIiA9IGMoImZfc3RhdCIsICJSMi9BZGouUjIiLCAiTiIpLCAKICAgICAgICAgICAgICJlc3RpbWF0ZSIgPSBjKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJHIuc3F1YXJlZCwgbnJvdyhtdHVya19yZWdfU0FEX2FjY2VzcyRtb2RlbCkpLCAKICAgICAgICAgICAgICJzdGQuZXJyb3IiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfYWNjZXNzKSRmc3RhdGlzdGljWzNdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQURfYWNjZXNzKSRhZGouci5zcXVhcmVkLCBOQSksIAogICAgICAgICAgICAgInN0YXRpc3RpYyIgPSBjKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9hY2Nlc3MpJGZzdGF0aXN0aWNbMV0sIHJlcChOQSwgMikpLCAKICAgICAgICAgICAgICJwLnZhbHVlIiA9IGMocGYoc3VtbWFyeShtdHVya19yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2FjY2VzcykkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpLCByZXAoTkEsIDIpKQogICAgICAgICAgICAgKQogICAgICApCgojIHJlbW92ZSBOQSBmcm9tIGthYmxlIHRhYmxlcwpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gJycpIAoKIyBzaG93IGthYmxlIHRhYmxlCmthYmxlKG10dXJrX3JlZ19TQURfYWNjZXNzX3QsIGNhcHRpb24gPSAiTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIFNBRF9hY2Nlc3MgU2NvcmUiLCBhbGlnbiA9IHJlcCgnbGNjY2MnKSwgZGlnaXRzID0zKSAlPiUgCiAga2FibGVfcGFwZXIoZnVsbF93aWR0aCA9IEYpICU+JQogICMgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIm10dXJrIiA9IDIsICJNdHVyayIgPSAyKSkgJT4lCiAgIyBwYWNrX3Jvd3MoIkNyaXRlcmlvbihzKSIsIDEsIDYpICU+JQogICMgIyBjb2x1bW5fc3BlYygxLCB3aWR0aCA9ICIxMGVtIikgJT4lIAogICMgcGFja19yb3dzKCJQcmVkaWN0b3IocykiLCA3LCAxOSkgJT4lCiAgZm9vdG5vdGUoZ2VuZXJhbCA9ICJOb3JtYWxpdHkgaXMgbWV0IGZvciBub24tc2lnbmlmaWNhbnQgcC12YWx1ZXMgKGkuZS4sIGdyZWF0ZXIgdGhhbiAwLjA1KS4iKSAlPiUgCiAgY29sdW1uX3NwZWMoYyg0KSwgYm9yZGVyX2xlZnQgPSBUKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCgojIHJlc2V0IE5BIHZhbHMgaW4ga2FibGUgdGFibGVzIHRvICJOQSIKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9IE5BKSAKCiMgbWFrZSBjb2xvdXIgcGFsCnJlZ19jb2xvdXJzIDwtIGMoIiM0MTQ1MzUiLCAiIzA4NjA1RiIsICIjM0Y4MjZEIiwgIiM4NTg1ODUiLCAiI0REQTQ0OCIsICIjRjA4MDNDIiwgIiM5ODQxMEIiICkgIyBncmVlbiA+IG9yYW5nZQoKIyBwbG90IGxtCiAgIyBwbG90IHN0YW5kYXJkaXplZCBiZXRhcyB0byBjb21wYXJlIGNvb2VmZmljaWVudHMKbXR1cmtfcmVnX1NBRF9hY2Nlc3NfcGxvdCA8LSAKICBzalBsb3Q6OnBsb3RfbW9kZWwobW9kZWwgPSBtdHVya19yZWdfU0FEX2FjY2VzcywgIyBsbSBvdXRwdXQgCiAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgPSBjKCJTdGFuZGFyZGl6ZWQgYmV0YSBDb2VmZmljaWVudHMgZm9yIE11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIChNdHVyaykiKSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwgIyB0byByZW1vdmUgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJzdGQiLCAjIHR5cGUgInN0ZCIgPSBzdGFuZGFyZGl6ZWQgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgI3NvcnQuZXN0ID0gVCwgIyBzb3J0IGJhc2VkIG9uIGJldGFzIChoaWdoZXN0IG9uIHRvcCkKICAgICAgICAgICAgICAgICAgICAgd3JhcC50aXRsZSA9IDU1LCAjIGNoYXIgbGVuZ3RoIG9mIGVhY2ggdGl0bGUgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGF4aXMubGFiZWxzID0gYygiSU5TRVJUIFBSRUQgTkFNRVMiKQogICAgICAgICAgICAgICAgICAgICBncmlkLmJyZWFrcyA9IC4yNSwgIyB4LWF4aXMgYnJlYWtzIAogICAgICAgICAgICAgICAgICAgICAjc2UgPSBUICMgdXNlIHNlIGluc3RlYWQgb2YgQ0kKICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gcmVnX2NvbG91cnMsCiAgICAgICAgICAgICAgICAgICAgIHNob3cudmFsdWVzID0gVCwgIyBzaG93IGJldGFzCiAgICAgICAgICAgICAgICAgICAgIHNob3cucCA9IFQsICMgc2hvdyAqIGZvciBzaWcgcAogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5vZmZzZXQgPSAwLjQwLCAjIG9mZnNldCB0byBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zaXplID0gMywgIyBzaXplIG9mIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIsICMgbnVtIGRlY2ltYWxzIGluIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRvdC5zaXplID0gMi41LCBsaW5lLnNpemUgPSAxLjUsIAogICAgICAgICAgICAgICAgICAgICB2bGluZS5jb2xvciA9ICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnRlcm1zID0gYygxLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA1LCA2LCA3LCA3LCA3KSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy5sYWJlbHMgPSBjKCJEQVNTOiBTIiwgIkRBU1M6IEEiLCAiREFTUzogRCIsICJTU0VJVCIsICJTUlMiLCAiUlNFUyIsICJORU86IE4iLCAiTkVPOiBBIiwgIk5FTzogRSIsICJORU86IEMiLCAiTkVPOiBPIiwgIkJJUyIsICJBZ2UiKSwgCiAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSAiU3RhbmRhcmRpemVkIEJldGEgQ29lZmZpY2llbnQiLCAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAuNQogICAgICAgICAgICAgICAgICAgICApICsKICAgIGZvbnRfc2l6ZShvZmZzZXQueCA9IDEwKSArCiAgICBmb250X3NpemUoYmFzZS50aGVtZSA9IHRoZW1lX2NsYXNzaWMoKSkKCiMgc2hvdyBwbG90Cm10dXJrX3JlZ19TQURfYWNjZXNzX3Bsb3QKCiMgZXhwb3J0IGNvcnIgbWF0cml4IHVzaW5nIGdnc2F2ZSgpICYgcmVwbGF5UGxvdCgpIHRvIGNhbGwgb24gcHJldmlvdXNseSBtYWRlIHBsb3QKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL210dXJrX3JlZ19TQURfYWNjZXNzX3Bsb3Qob2N0MjgpIiwgcGxvdCA9IG10dXJrX3JlZ19TQURfYWNjZXNzX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKICAKIyBleHBvcnQgY3N2IGZpbGVzIG9mIGxtIHRhYmxlCiAgd3JpdGUuY3N2KG10dXJrX3JlZ19TQURfYWNjZXNzX3QsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvbXR1cmtfcmVnX1NBRF9hY2Nlc3NfdChvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKYGBgCgoKIyMjIyMgU0FEIC0gRW1vdGlvbmFsIEF0dGFjaG1lbnQKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRF9lYSA9IGFnZSArIEJJUyArIE5FTzogTyArIE5FTzogQyArIE5FTzogRSArIE5FTzogQSArIE5FTzogTiArIFJTRVMgKyBTUlMgKyBTU0VJVCArIERBU1M6IEQgKyBEQVNTOiBBICsgREFTUzogUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnbmlmaWNhbnQsIEYoYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMl0pYCwgYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbM10pYCkgPSBgciBhcy5udW1lcmljKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1sxXSlgLCBwIGByIHBfcm91bmQoYXMubnVtZXJpYyhwZihzdW1tYXJ5KG10dXJrX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1syXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRikpKWAsIFIyID0gYHIgcm91bmQoc3VtbWFyeShtdHVya19yZWdfU0FEX2VhKSRyLnNxdWFyZWQsIDIpYAoKYGBge3J9CiMgcnVuIGxtCm10dXJrX3JlZ19TQURfZWEgPC0gbG0oZGF0YSA9IE10dXJrX2RhdGEsIGZvcm11bGEgPSBTQURfZWFfc3VtIH4gYWdlICsgQklTX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1JTX3N1bSArIFNTRUlUX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSkKCiMgc2hvdyBzdW1tYXJ5IG9mIGxtCnN1bW1hcnkobXR1cmtfcmVnX1NBRF9lYSkKCiMgY3JlYXRlIHRhYmxlIGRlcGljdGluZyBtYWluIHN0YXRzIHRvIGV4cG9ydCBsYXRlcgptdHVya19yZWdfU0FEX2VhX3QgPC0gCiAgICAgIHJiaW5kKHRpZHkobXR1cmtfcmVnX1NBRF9lYSksICMgdXNlIHRpZHkoKSBpbiBicm9vbSBwYWNrYWdlCiAgICAgIHRpYmJsZSgidGVybSIgPSBjKCJmX3N0YXQiLCAiUjIvQWRqLlIyIiwgIk4iKSwgCiAgICAgICAgICAgICAiZXN0aW1hdGUiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9lYSkkci5zcXVhcmVkLCBucm93KG10dXJrX3JlZ19TQURfZWEkbW9kZWwpKSwgCiAgICAgICAgICAgICAic3RkLmVycm9yIiA9IGMoc3VtbWFyeShtdHVya19yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzNdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQURfZWEpJGFkai5yLnNxdWFyZWQsIE5BKSwgCiAgICAgICAgICAgICAic3RhdGlzdGljIiA9IGMoc3VtbWFyeShtdHVya19yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzFdLCByZXAoTkEsIDIpKSwgCiAgICAgICAgICAgICAicC52YWx1ZSIgPSBjKHBmKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9lYSkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2VhKSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQURfZWEpJGZzdGF0aXN0aWNbM10sIGxvd2VyLnRhaWwgPSBGKSwgcmVwKE5BLCAyKSkKICAgICAgICAgICAgICkKICAgICAgKQoKIyByZW1vdmUgTkEgZnJvbSBrYWJsZSB0YWJsZXMKb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9ICcnKSAKCiMgc2hvdyBrYWJsZSB0YWJsZQprYWJsZShtdHVya19yZWdfU0FEX2VhX3QsIGNhcHRpb24gPSAiTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIFNBRF9lYSBTY29yZSIsIGFsaWduID0gcmVwKCdsY2NjYycpLCBkaWdpdHMgPTMpICU+JSAKICBrYWJsZV9wYXBlcihmdWxsX3dpZHRoID0gRikgJT4lCiAgIyBhZGRfaGVhZGVyX2Fib3ZlKGMoIiAiLCAibXR1cmsiID0gMiwgIk10dXJrIiA9IDIpKSAlPiUKICAjIHBhY2tfcm93cygiQ3JpdGVyaW9uKHMpIiwgMSwgNikgJT4lCiAgIyAjIGNvbHVtbl9zcGVjKDEsIHdpZHRoID0gIjEwZW0iKSAlPiUgCiAgIyBwYWNrX3Jvd3MoIlByZWRpY3RvcihzKSIsIDcsIDE5KSAlPiUKICBmb290bm90ZShnZW5lcmFsID0gIk5vcm1hbGl0eSBpcyBtZXQgZm9yIG5vbi1zaWduaWZpY2FudCBwLXZhbHVlcyAoaS5lLiwgZ3JlYXRlciB0aGFuIDAuMDUpLiIpICU+JSAKICBjb2x1bW5fc3BlYyhjKDQpLCBib3JkZXJfbGVmdCA9IFQpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgcmVzZXQgTkEgdmFscyBpbiBrYWJsZSB0YWJsZXMgdG8gIk5BIgpvcHRpb25zKGtuaXRyLmthYmxlLk5BID0gTkEpIAoKIyBtYWtlIGNvbG91ciBwYWwKcmVnX2NvbG91cnMgPC0gYygiIzQxNDUzNSIsICIjMDg2MDVGIiwgIiMzRjgyNkQiLCAiIzg1ODU4NSIsICIjRERBNDQ4IiwgIiNGMDgwM0MiLCAiIzk4NDEwQiIgKSAjIGdyZWVuID4gb3JhbmdlCgojIHBsb3QgbG0KICAjIHBsb3Qgc3RhbmRhcmRpemVkIGJldGFzIHRvIGNvbXBhcmUgY29vZWZmaWNpZW50cwptdHVya19yZWdfU0FEX2VhX3Bsb3QgPC0gCiAgc2pQbG90OjpwbG90X21vZGVsKG1vZGVsID0gbXR1cmtfcmVnX1NBRF9lYSwgIyBsbSBvdXRwdXQgCiAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgPSBjKCJTdGFuZGFyZGl6ZWQgYmV0YSBDb2VmZmljaWVudHMgZm9yIE11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIChNdHVyaykiKSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwgIyB0byByZW1vdmUgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJzdGQiLCAjIHR5cGUgInN0ZCIgPSBzdGFuZGFyZGl6ZWQgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgI3NvcnQuZXN0ID0gVCwgIyBzb3J0IGJhc2VkIG9uIGJldGFzIChoaWdoZXN0IG9uIHRvcCkKICAgICAgICAgICAgICAgICAgICAgd3JhcC50aXRsZSA9IDU1LCAjIGNoYXIgbGVuZ3RoIG9mIGVhY2ggdGl0bGUgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGF4aXMubGFiZWxzID0gYygiSU5TRVJUIFBSRUQgTkFNRVMiKQogICAgICAgICAgICAgICAgICAgICBncmlkLmJyZWFrcyA9IC4yNSwgIyB4LWF4aXMgYnJlYWtzIAogICAgICAgICAgICAgICAgICAgICAjc2UgPSBUICMgdXNlIHNlIGluc3RlYWQgb2YgQ0kKICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gcmVnX2NvbG91cnMsCiAgICAgICAgICAgICAgICAgICAgIHNob3cudmFsdWVzID0gVCwgIyBzaG93IGJldGFzCiAgICAgICAgICAgICAgICAgICAgIHNob3cucCA9IFQsICMgc2hvdyAqIGZvciBzaWcgcAogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5vZmZzZXQgPSAwLjQwLCAjIG9mZnNldCB0byBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zaXplID0gMywgIyBzaXplIG9mIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIsICMgbnVtIGRlY2ltYWxzIGluIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRvdC5zaXplID0gMi41LCBsaW5lLnNpemUgPSAxLjUsIAogICAgICAgICAgICAgICAgICAgICB2bGluZS5jb2xvciA9ICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnRlcm1zID0gYygxLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA1LCA2LCA3LCA3LCA3KSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy5sYWJlbHMgPSBjKCJEQVNTOiBTIiwgIkRBU1M6IEEiLCAiREFTUzogRCIsICJTU0VJVCIsICJTUlMiLCAiUlNFUyIsICJORU86IE4iLCAiTkVPOiBBIiwgIk5FTzogRSIsICJORU86IEMiLCAiTkVPOiBPIiwgIkJJUyIsICJBZ2UiKSwgCiAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSAiU3RhbmRhcmRpemVkIEJldGEgQ29lZmZpY2llbnQiLCAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAuNQogICAgICAgICAgICAgICAgICAgICApICsKICAgIGZvbnRfc2l6ZShvZmZzZXQueCA9IDEwKSArCiAgICBmb250X3NpemUoYmFzZS50aGVtZSA9IHRoZW1lX2NsYXNzaWMoKSkKCiMgc2hvdyBwbG90Cm10dXJrX3JlZ19TQURfZWFfcGxvdAoKIyBleHBvcnQgY29yciBtYXRyaXggdXNpbmcgZ2dzYXZlKCkgJiByZXBsYXlQbG90KCkgdG8gY2FsbCBvbiBwcmV2aW91c2x5IG1hZGUgcGxvdApnZ3NhdmUoZmlsZW5hbWU9Ii9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0ZpZ3VyZXMvbXR1cmtfcmVnX1NBRF9lYV9wbG90KG9jdDI4KSIsIHBsb3QgPSBtdHVya19yZWdfU0FEX2VhX3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKICAKIyBleHBvcnQgY3N2IGZpbGVzIG9mIGxtIHRhYmxlCiAgd3JpdGUuY3N2KG10dXJrX3JlZ19TQURfZWFfdCwiL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRXhjZWwgT3V0cHV0cy9tdHVya19yZWdfU0FEX2VhX3Qob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCmBgYAoKCiMjIyMjIFNBRCAtIERpc3RyYWN0aWJpbGl0eQoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEX2Rpc3QgPSBhZ2UgKyBCSVMgKyBORU86IE8gKyBORU86IEMgKyBORU86IEUgKyBORU86IEEgKyBORU86IE4gKyBSU0VTICsgU1JTICsgU1NFSVQgKyBEQVNTOiBEICsgREFTUzogQSArIERBU1M6IFMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZ25pZmljYW50LCBGKGByIGFzLm51bWVyaWMoc3VtbWFyeShtdHVya19yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMl0pYCwgYHIgYXMubnVtZXJpYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1szXSlgKSA9IGByIGFzLm51bWVyaWMoc3VtbWFyeShtdHVya19yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMV0pYCwgcCBgciBwX3JvdW5kKGFzLm51bWVyaWMocGYoc3VtbWFyeShtdHVya19yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMV0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzJdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1szXSwgbG93ZXIudGFpbCA9IEYpKSlgLCBSMiA9IGByIHJvdW5kKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kaXN0KSRyLnNxdWFyZWQsIDIpYAoKYGBge3J9CiMgcnVuIGxtCm10dXJrX3JlZ19TQURfZGlzdCA8LSBsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9kaXN0X3N1bSB+IGFnZSArIEJJU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNSU19zdW0gKyBTU0VJVF9zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0pCgojIHNob3cgc3VtbWFyeSBvZiBsbQpzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGlzdCkKCiMgY3JlYXRlIHRhYmxlIGRlcGljdGluZyBtYWluIHN0YXRzIHRvIGV4cG9ydCBsYXRlcgptdHVya19yZWdfU0FEX2Rpc3RfdCA8LSAKICAgICAgcmJpbmQodGlkeShtdHVya19yZWdfU0FEX2Rpc3QpLCAjIHVzZSB0aWR5KCkgaW4gYnJvb20gcGFja2FnZQogICAgICB0aWJibGUoInRlcm0iID0gYygiZl9zdGF0IiwgIlIyL0Fkai5SMiIsICJOIiksIAogICAgICAgICAgICAgImVzdGltYXRlIiA9IGMoc3VtbWFyeShtdHVya19yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kaXN0KSRyLnNxdWFyZWQsIG5yb3cobXR1cmtfcmVnX1NBRF9kaXN0JG1vZGVsKSksIAogICAgICAgICAgICAgInN0ZC5lcnJvciIgPSBjKHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzNdLCBzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGlzdCkkYWRqLnIuc3F1YXJlZCwgTkEpLCAKICAgICAgICAgICAgICJzdGF0aXN0aWMiID0gYyhzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1sxXSwgcmVwKE5BLCAyKSksIAogICAgICAgICAgICAgInAudmFsdWUiID0gYyhwZihzdW1tYXJ5KG10dXJrX3JlZ19TQURfZGlzdCkkZnN0YXRpc3RpY1sxXSwgc3VtbWFyeShtdHVya19yZWdfU0FEX2Rpc3QpJGZzdGF0aXN0aWNbMl0sIHN1bW1hcnkobXR1cmtfcmVnX1NBRF9kaXN0KSRmc3RhdGlzdGljWzNdLCBsb3dlci50YWlsID0gRiksIHJlcChOQSwgMikpCiAgICAgICAgICAgICApCiAgICAgICkKCiMgcmVtb3ZlIE5BIGZyb20ga2FibGUgdGFibGVzCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSAnJykgCgojIHNob3cga2FibGUgdGFibGUKa2FibGUobXR1cmtfcmVnX1NBRF9kaXN0X3QsIGNhcHRpb24gPSAiTXVsdGlwbGUgUmVncmVzc2lvbiBNb2RlbCBQcmVkaWN0aW5nIFNBRF9kaXN0IFNjb3JlIiwgYWxpZ24gPSByZXAoJ2xjY2NjJyksIGRpZ2l0cyA9MykgJT4lIAogIGthYmxlX3BhcGVyKGZ1bGxfd2lkdGggPSBGKSAlPiUKICAjIGFkZF9oZWFkZXJfYWJvdmUoYygiICIsICJtdHVyayIgPSAyLCAiTXR1cmsiID0gMikpICU+JQogICMgcGFja19yb3dzKCJDcml0ZXJpb24ocykiLCAxLCA2KSAlPiUKICAjICMgY29sdW1uX3NwZWMoMSwgd2lkdGggPSAiMTBlbSIpICU+JSAKICAjIHBhY2tfcm93cygiUHJlZGljdG9yKHMpIiwgNywgMTkpICU+JQogIGZvb3Rub3RlKGdlbmVyYWwgPSAiTm9ybWFsaXR5IGlzIG1ldCBmb3Igbm9uLXNpZ25pZmljYW50IHAtdmFsdWVzIChpLmUuLCBncmVhdGVyIHRoYW4gMC4wNSkuIikgJT4lIAogIGNvbHVtbl9zcGVjKGMoNCksIGJvcmRlcl9sZWZ0ID0gVCkgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyByZXNldCBOQSB2YWxzIGluIGthYmxlIHRhYmxlcyB0byAiTkEiCm9wdGlvbnMoa25pdHIua2FibGUuTkEgPSBOQSkgCgojIG1ha2UgY29sb3VyIHBhbApyZWdfY29sb3VycyA8LSBjKCIjNDE0NTM1IiwgIiMwODYwNUYiLCAiIzNGODI2RCIsICIjODU4NTg1IiwgIiNEREE0NDgiLCAiI0YwODAzQyIsICIjOTg0MTBCIiApICMgZ3JlZW4gPiBvcmFuZ2UKCiMgcGxvdCBsbQogICMgcGxvdCBzdGFuZGFyZGl6ZWQgYmV0YXMgdG8gY29tcGFyZSBjb29lZmZpY2llbnRzCm10dXJrX3JlZ19TQURfZGlzdF9wbG90IDwtIAogIHNqUGxvdDo6cGxvdF9tb2RlbChtb2RlbCA9IG10dXJrX3JlZ19TQURfZGlzdCwgIyBsbSBvdXRwdXQgCiAgICAgICAgICAgICAgICAgICAgICMgdGl0bGUgPSBjKCJTdGFuZGFyZGl6ZWQgYmV0YSBDb2VmZmljaWVudHMgZm9yIE11bHRpcGxlIFJlZ3Jlc3Npb24gTW9kZWwgUHJlZGljdGluZyBOTVBRIFNjb3JlIChNdHVyaykiKSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwgIyB0byByZW1vdmUgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJzdGQiLCAjIHR5cGUgInN0ZCIgPSBzdGFuZGFyZGl6ZWQgYmV0YXMKICAgICAgICAgICAgICAgICAgICAgI3NvcnQuZXN0ID0gVCwgIyBzb3J0IGJhc2VkIG9uIGJldGFzIChoaWdoZXN0IG9uIHRvcCkKICAgICAgICAgICAgICAgICAgICAgd3JhcC50aXRsZSA9IDU1LCAjIGNoYXIgbGVuZ3RoIG9mIGVhY2ggdGl0bGUgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGF4aXMubGFiZWxzID0gYygiSU5TRVJUIFBSRUQgTkFNRVMiKQogICAgICAgICAgICAgICAgICAgICBncmlkLmJyZWFrcyA9IC4yNSwgIyB4LWF4aXMgYnJlYWtzIAogICAgICAgICAgICAgICAgICAgICAjc2UgPSBUICMgdXNlIHNlIGluc3RlYWQgb2YgQ0kKICAgICAgICAgICAgICAgICAgICAgY29sb3JzID0gcmVnX2NvbG91cnMsCiAgICAgICAgICAgICAgICAgICAgIHNob3cudmFsdWVzID0gVCwgIyBzaG93IGJldGFzCiAgICAgICAgICAgICAgICAgICAgIHNob3cucCA9IFQsICMgc2hvdyAqIGZvciBzaWcgcAogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5vZmZzZXQgPSAwLjQwLCAjIG9mZnNldCB0byBiZXRhIGxhYmVscwogICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zaXplID0gMywgIyBzaXplIG9mIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDIsICMgbnVtIGRlY2ltYWxzIGluIGJldGEgbGFiZWxzCiAgICAgICAgICAgICAgICAgICAgIGRvdC5zaXplID0gMi41LCBsaW5lLnNpemUgPSAxLjUsIAogICAgICAgICAgICAgICAgICAgICB2bGluZS5jb2xvciA9ICJibGFjayIsCiAgICAgICAgICAgICAgICAgICAgIGdyb3VwLnRlcm1zID0gYygxLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA1LCA2LCA3LCA3LCA3KSwKICAgICAgICAgICAgICAgICAgICAgYXhpcy5sYWJlbHMgPSBjKCJEQVNTOiBTIiwgIkRBU1M6IEEiLCAiREFTUzogRCIsICJTU0VJVCIsICJTUlMiLCAiUlNFUyIsICJORU86IE4iLCAiTkVPOiBBIiwgIk5FTzogRSIsICJORU86IEMiLCAiTkVPOiBPIiwgIkJJUyIsICJBZ2UiKSwgCiAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUgPSAiU3RhbmRhcmRpemVkIEJldGEgQ29lZmZpY2llbnQiLCAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAuNQogICAgICAgICAgICAgICAgICAgICApICsKICAgIGZvbnRfc2l6ZShvZmZzZXQueCA9IDEwKSArCiAgICBmb250X3NpemUoYmFzZS50aGVtZSA9IHRoZW1lX2NsYXNzaWMoKSkKCiMgc2hvdyBwbG90Cm10dXJrX3JlZ19TQURfZGlzdF9wbG90CgojIGV4cG9ydCBjb3JyIG1hdHJpeCB1c2luZyBnZ3NhdmUoKSAmIHJlcGxheVBsb3QoKSB0byBjYWxsIG9uIHByZXZpb3VzbHkgbWFkZSBwbG90Cmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9tdHVya19yZWdfU0FEX2Rpc3RfcGxvdChvY3QyOCkiLCBwbG90ID0gbXR1cmtfcmVnX1NBRF9kaXN0X3Bsb3QsIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNi41LCB3aWR0aCA9IDUsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKICAKIyBleHBvcnQgY3N2IGZpbGVzIG9mIGxtIHRhYmxlCiAgd3JpdGUuY3N2KG10dXJrX3JlZ19TQURfZGlzdF90LCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX3JlZ19TQURfZGlzdF90KG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBUKQpgYGAKCgoKIyBFeHBsb3JhdG9yeSBBbmFseXNlczogQXNzZXNzaW5nIFNjcmVlbiBUaW1lCgpUaGlzIGRhdGEgb25seSBpbmNsdWRlZCBwcyB3aG8gcmVwb3J0ZWQgYm90aCBoYXZpbmcgYW4gaVBob25lIChTT05BID0KYHIgbnJvdyhTT05BX2RhdGEgJT4lIGZpbHRlcihpcGhvbmUgPT0gInllcyIpKWA7IE10dXJrID0KYHIgbnJvdyhNdHVya19kYXRhICU+JSBmaWx0ZXIoaXBob25lID09ICJ5ZXMiKSlgKSBhbmQgaGFkIFNUIGFjdGl2YXRlZApwcmlvciB0byB0aGUgc3R1ZHkgKFNPTkEgPQpgciBucm93KFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSlgIDsgTXR1cmsgPQpgciBucm93KE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpYCkgcmF0aGVyIHRoYW4gdGhlIHRvdGFsCnNhbXBsZSAoU09OQSA9IGByIG5yb3coU09OQV9kYXRhKWA7IE10dXJrID0gYHIgbnJvdyhNdHVya19kYXRhKWApLgoKIyMgQXNzdW1wdGlvbiBUZXN0cwoKPGRldGFpbHM+Cgo8c3VtbWFyeT4KCkFsbCBhc3N1bXB0aW9ucyB3ZXJlIG1ldCBmb3IgdGhlIGNvcnJlbGF0aW9uIGFuYWx5c2lzLiBDbGljayBoZXJlIHRvIHNlZQp0aGUgYXNzdW1wdGlvbiB0ZXN0cy4KCjwvc3VtbWFyeT4KClRoZSBhc3N1bXB0aW9ucyBmb3IgYSBjb3JyZWxhdGlvbiBhbmFseXNpcyB3ZXJlIHRlc3RlZC4gVGhlcmUgd2VyZSB0d28KYXNzdW1wdGlvbnM6ICgxKSBMaW5lYXJpdHkgYW5kICgyKSBOb3JtYWxpdHkuCgoxLiAgTGluZWFyaXR5IHdhcyB2aXN1YWxseSBpbnNwZWN0ZWQgZnJvbSB0aGUgc2NhdHRlciBwbG90cyAoc2VlIHBsb3RzCiAgICBpbiB0aGUgIipGaWd1cmVzOiBTY2F0dGVyIFBsb3RzKiIgc2VjdGlvbikuCgoyLiAgTm9ybWFsaXR5IHdhcyB0ZXN0ZWQgdXNpbmcgKGEpIHRoZSBTaGFwaXJvLVdpbGsgbm9ybWFsaXR5IHRlc3QgYW5kCiAgICAoYikgdmlzdWFsbHkgaW5zcGVjdGVkIHVzaW5nIGEgbm9ybWFsaXR5IHBsb3QuCgogICAgLSAgIFRoZSBTaGFwaXJvLVdpbGsgbm9ybWFsaXR5IHRlc3Qgd2lsbCBzaG93IHR3byB2YWx1ZXMgKGkuZS4sICpXKgogICAgICAgIGFuZCAqcCopIGFuZCBlYWNoIHRlc3QgdXNlcyB0aGUgZm9sbG93aW5nIGh5cG90aGVzZXM6IEh+Tn46IHRoZQogICAgICAgIGRhdGEgYXJlIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIGFuZCBIfkF+OiB0aGUgZGF0YSBhcmUgbm90CiAgICAgICAgbm9ybWFsbHkgZGlzdHJpYnV0ZWQuCgogICAgLSAgIFRoZSBub3JtYWxpdHkgcGxvdHMgdXNlZCB3ZXJlIFEtUSBwbG90cyAocXVhbnRpbGUtcXVhbnRpbGUKICAgICAgICBwbG90cyksIHdoaWNoIGRyYXcgdGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gYSBnaXZlbiBzYW1wbGUgYW5kCiAgICAgICAgdGhlIHRoZW9yZXRpY2FsIG5vcm1hbCBkaXN0cmlidXRpb24uCgogICAgICAgIDwvc3VtbWFyeT4KCiMjIyAoYSkgU2hhcGlyby1XaWxrIE5vcm1hbGl0eSBUZXN0Cgo8ZGV0YWlscz4KCjxzdW1tYXJ5PgoKVGhlIHRhYmxlIGRlcGljdHMgdGhlIHJlc3VsdHMgb2YgdGhlIFNoYXBpcm8tV2lsa3Mgbm9ybWFsaXR5IHRlc3QgZm9yCmVhY2ggbWVhc3VyZS4gKihjbGljayB0byBzZWUgY29kZSkqCgo8L3N1bW1hcnk+CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIGNyZWF0ZSBhIHRhYmxlIHRvIHNob3cgcmVzdWx0cyBvZiBhbGwgbm9ybWFsaXR5IHRlc3RzCmNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9TVCA8LSAKICBhcy5kYXRhLmZyYW1lKGNiaW5kKGMoIk5NUFEiLCAiU0FEIiwgIlNBRF9kZXAiLCAiU0FEX2FjY2VzcyIsICJTQURfZWEiLCAiU0FEX2Rpc3QiLCAiYWdlIiwgIlNSUyIsICJEQVNTX0QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgIkRBU1NfQSIsICJEQVNTX1MiLCAiQklTIiwgIlNTRUlUIiwgIlJTRVMiLCAiTkVPX04iLCAiTkVPX0UiLCAiTkVPX08iLCAiTkVPX0EiLCAiTkVPX0MiKSwgCiAgICAgICAgICAgICAgICAgcmJpbmQoYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTk1QUV9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5NUFFfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTk1QUV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9kZXBfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZGVwX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9kZXBfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2FjY2Vzc19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9hY2Nlc3Nfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2FjY2Vzc19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZWFfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZWFfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2VhX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9kaXN0X3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2Rpc3Rfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2Rpc3Rfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkYWdlKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRhZ2UpJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBhZ2UKICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTUlNfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTUlNfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU1JTX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfRF9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfRF9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBEQVNTX0Rfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19BX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19BX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIERBU1NfQV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX1Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX1Nfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgREFTU19TX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJEJJU19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJEJJU19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBCSVNfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1NFSVRfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTU0VJVF9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBTU0VJVF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRSU0VTX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkUlNFU19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBSU0VTX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19OX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX05fc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTkVPX05fc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX0Vfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fRV9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fRV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fT19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19PX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIE5FT19PX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19BX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX0Ffc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTkVPX0Ffc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX0Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fQ19zdW0pJHAudmFsdWUpICMgVyAmIHAtdmFsdWUgZm9yIE5FT19DX3N1bQogICAgICAgICAgICAgICAgICkpKQogIGNvbG5hbWVzKGNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9TVCkgPC0gYygiTWVhc3VyZSIsICJXIiwgInAiKQogICMgbWFrZSBjb2xzIG51bWVyaWMgJiByb3VuZCB0byAzIGRlY2ltYWxzCiAgY29ycnNfcmVnX25vcm1fdGVzdF9zb25hX1NUJFcgPC0gYXMubnVtZXJpYyhjb3Jyc19yZWdfbm9ybV90ZXN0X3NvbmFfU1QkVykgJT4lIHJvdW5kKC4sMykKICBjb3Jyc19yZWdfbm9ybV90ZXN0X3NvbmFfU1QkcCA8LSBhcy5udW1lcmljKGNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9TVCRwKSAlPiUgcm91bmQoLiwzKQoKY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19TVCA8LSAKICBhcy5kYXRhLmZyYW1lKGNiaW5kKGMoIk5NUFEiLCAiU0FEIiwgIlNBRF9kZXAiLCAiU0FEX2FjY2VzcyIsICJTQURfZWEiLCAiU0FEX2Rpc3QiLCAiYWdlIiwgIlNSUyIsICJEQVNTX0QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgIkRBU1NfQSIsICJEQVNTX1MiLCAiQklTIiwgIlNTRUlUIiwgIlJTRVMiLCAiTkVPX04iLCAiTkVPX0UiLCAiTkVPX08iLCAiTkVPX0EiLCAiTkVPX0MiKSwgCiAgICAgICAgICAgICAgICAgcmJpbmQoYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5NUFFfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTk1QUV9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBOTVBRX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2RlcF9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZGVwX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9kZXBfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9hY2Nlc3Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2FjY2Vzc19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBTQURfYWNjZXNzX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZWFfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2VhX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNBRF9lYV9zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2Rpc3Rfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2Rpc3Rfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgU0FEX2Rpc3Rfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJGFnZSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJGFnZSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIGFnZQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTUlNfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1JTX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNSU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19EX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfRF9zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBEQVNTX0Rfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfQV9zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX0Ffc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgREFTU19BX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX1Nfc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19TX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIERBU1NfU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkQklTX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJEJJU19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBCSVNfc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNTRUlUX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNTRUlUX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIFNTRUlUX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRSU0VTX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFJTRVNfc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgUlNFU19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX05fc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX05fc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTkVPX05fc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19FX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19FX3N1bSkkcC52YWx1ZSksICMgVyAmIHAtdmFsdWUgZm9yIE5FT19FX3N1bQogICAgICAgICAgICAgICAgIGMoc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fT19zdW0pJHN0YXRpc3RpYywgc2hhcGlyby50ZXN0KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fT19zdW0pJHAudmFsdWUpLCAjIFcgJiBwLXZhbHVlIGZvciBORU9fT19zdW0KICAgICAgICAgICAgICAgICBjKHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX0Ffc3VtKSRzdGF0aXN0aWMsIHNoYXBpcm8udGVzdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX0Ffc3VtKSRwLnZhbHVlKSwgIyBXICYgcC12YWx1ZSBmb3IgTkVPX0Ffc3VtCiAgICAgICAgICAgICAgICAgYyhzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19DX3N1bSkkc3RhdGlzdGljLCBzaGFwaXJvLnRlc3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19DX3N1bSkkcC52YWx1ZSkgIyBXICYgcC12YWx1ZSBmb3IgTkVPX0Nfc3VtCiAgICAgICAgICAgICAgICAgKSkpCiAgY29sbmFtZXMoY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19TVCkgPC0gYygiTWVhc3VyZSIsICJXIiwgInAiKQogICMgbWFrZSBjb2xzIG51bWVyaWMgJiByb3VuZCB0byAzIGRlY2ltYWxzCiAgY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19TVCRXIDwtIGFzLm51bWVyaWMoY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19TVCRXKSAlPiUgcm91bmQoLiwzKQogIGNvcnJzX3JlZ19ub3JtX3Rlc3RfbXR1cmtfU1QkcCA8LSBhcy5udW1lcmljKGNvcnJzX3JlZ19ub3JtX3Rlc3RfbXR1cmtfU1QkcCkgJT4lIHJvdW5kKC4sMykKICAKIyBqb2luIGludG8gMSBsYXJnZSB0YWJsZQpjb3Jyc19yZWdfbm9ybV90ZXN0c19TVF90IDwtIGNiaW5kKGNvcnJzX3JlZ19ub3JtX3Rlc3Rfc29uYV9TVCwgY29ycnNfcmVnX25vcm1fdGVzdF9tdHVya19TVFssMjozXSkKYGBgCgo8L2RldGFpbHM+CgpBcyBzZWVuIGluIHRoZSB0YWJsZSwgbW9zdCBtZWFzdXJlcyBzaG93ZWQgYSBzaWduaWZpY2FudCByZXN1bHQsCmluZGljYXRpbmcgbm9uLW5vcm1hbGl0eS4gVGhlIHZpc3VhbCBpbnNwZWN0aW9uIG9mIHRoZSBRLVEgcGxvdHMgd2FzCmNvbXBsZXRlZCBuZXh0LgoKYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIHNob3cgdGFibGUgdXNpbmcga2FibGUKa2FibGUoY29ycnNfcmVnX25vcm1fdGVzdHNfU1RfdCwgY2FwdGlvbiA9ICJTaGFwaXJvLVdpbGtzIE5vcm1hbGl0eSBUZXN0IGZvciBBbGwgTWVhc3VyZXMgLS0gU1QgRGF0YSBvbmx5IiwgYWxpZ24gPSByZXAoJ2xjY2NjJykpICU+JSAKICBrYWJsZV9wYXBlcihmdWxsX3dpZHRoID0gRikgJT4lCiAgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiwgIlNPTkEiID0gMiwgIk10dXJrIiA9IDIpKSAlPiUKICBwYWNrX3Jvd3MoIkNyaXRlcmlvbihzKSIsIDEsIDYpICU+JQogICMgY29sdW1uX3NwZWMoMSwgd2lkdGggPSAiMTBlbSIpICU+JSAKICBwYWNrX3Jvd3MoIlByZWRpY3RvcihzKSIsIDcsIDE5KSAlPiUKICBmb290bm90ZShnZW5lcmFsID0gIk5vcm1hbGl0eSBpcyBtZXQgZm9yIG5vbi1zaWduaWZpY2FudCBwLXZhbHVlcyAoaS5lLiwgZ3JlYXRlciB0aGFuIDAuMDUpLiIpICU+JSAKICBjb2x1bW5fc3BlYyhjKDQpLCBib3JkZXJfbGVmdCA9IFQpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKYGBgCgojIyMgKGIpIFEtUSBQbG90cwoKPGRldGFpbHM+Cgo8c3VtbWFyeT4KCk92ZXJhbGwsIHRoZSBRLVEgcGxvdHMgc2hvdyB0aGUgZGF0YSBmb3IgYWxsIG1lYXN1cmVzIGV4Y2VwdCBhZ2UgYW5kIGFnZQpvZiBmaXJzdCBzbWFydHBob25lIGRpZCBmYWxsIGFsb25nIG9yIGNsb3NlIHRvIHRoZSBsaW5lLiBUaGUgYWdlCm1lYXN1cmVzIHdlcmUgbm90IGV4cGVjdGVkIHRvIGJlIG5vcm1hbGx5IGRpc3RyaWJ1dGVkOyB0aGVyZWZvcmUsIHRoZQphbmFseXNpcyB3YXMgY29tcGxldGVkIGZvciBlYWNoIG1lYXN1cmUuICooY2xpY2sgdG8gc2VlIGNvZGUpKgoKPC9zdW1tYXJ5PgoKYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBldmFsPVRSVUV9CiMgU09OQSAtIEFsbApncmlkLmFycmFuZ2UoZ2dxcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTk1QUV9zdW0sIHlsYWIgPSAiTk1QUSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX3N1bSwgeWxhYiA9ICJTQUQiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9kZXBfc3VtLCB5bGFiID0gIlNBRF9kZXAiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9hY2Nlc3Nfc3VtLCB5bGFiID0gIlNBRF9hY2Nlc3MiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9lYV9zdW0sIHlsYWIgPSAiU0FEX2VhIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZGlzdF9zdW0sIHlsYWIgPSAiU0FEX2Rpc3QiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJGFnZSwgeWxhYiA9ICJhZ2UiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNSU19zdW0sIHlsYWIgPSAiU1JTIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX0Rfc3VtLCB5bGFiID0gIkRBU1NfRCIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19BX3N1bSwgeWxhYiA9ICJEQVNTX0EiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfU19zdW0sIHlsYWIgPSAiREFTU19TIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRCSVNfc3VtLCB5bGFiID0gIkJJUyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1NFSVRfc3VtLCB5bGFiID0gIlNTRUlUIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRSU0VTX3N1bSwgeWxhYiA9ICJSU0VTIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fTl9zdW0sIHlsYWIgPSAiTkVPX04iKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19FX3N1bSwgeWxhYiA9ICJORU9fRSIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX09fc3VtLCB5bGFiID0gIk5FT19PIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fQV9zdW0sIHlsYWIgPSAiTkVPX0EiKSwKICAgICAgICAgICAgIGdncXFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19DX3N1bSwgeWxhYiA9ICJORU9fQyIpLAogICAgICAgICAgICAgbnJvdyA9IDQsCiAgICAgICAgICAgICB0b3AgPSB0ZXh0X2dyb2IoIlEtUSBQbG90cyBGb3IgU09OQSAtIFNUIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICJib2xkIiksIAogICAgICAgICAgICAgYm90dG9tID0gdGV4dF9ncm9iKCJOb3JtYWxpdHkgaXMgbWV0IGZvciBwbG90cyB3ZXJlIGRhdGEgZmFsbHMgYWxvbmcgb3IgY2xvc2UgdG8gdGhlIGxpbmUuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICJpdGFsaWMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMC4wNSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAwKQogICAgICAgICAgICAgKQojIGZvciBNVFVSSyAtIEFMTApncmlkLmFycmFuZ2UoZ2dxcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5NUFFfc3VtLCB5bGFiID0gIk5NUFEiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfc3VtLCB5bGFiID0gIlNBRCIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9kZXBfc3VtLCB5bGFiID0gIlNBRF9kZXAiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfYWNjZXNzX3N1bSwgeWxhYiA9ICJTQURfYWNjZXNzIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2VhX3N1bSwgeWxhYiA9ICJTQURfZWEiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZGlzdF9zdW0sIHlsYWIgPSAiU0FEX2Rpc3QiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRhZ2UsIHlsYWIgPSAiYWdlIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1JTX3N1bSwgeWxhYiA9ICJTUlMiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX0Rfc3VtLCB5bGFiID0gIkRBU1NfRCIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfQV9zdW0sIHlsYWIgPSAiREFTU19BIiksCiAgICAgICAgICAgICBnZ3FxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19TX3N1bSwgeWxhYiA9ICJEQVNTX1MiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRCSVNfc3VtLCB5bGFiID0gIkJJUyIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNTRUlUX3N1bSwgeWxhYiA9ICJTU0VJVCIpLAogICAgICAgICAgICAgZ2dxcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFJTRVNfc3VtLCB5bGFiID0gIlJTRVMiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fTl9zdW0sIHlsYWIgPSAiTkVPX04iKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fRV9zdW0sIHlsYWIgPSAiTkVPX0UiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fT19zdW0sIHlsYWIgPSAiTkVPX08iKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fQV9zdW0sIHlsYWIgPSAiTkVPX0EiKSwKICAgICAgICAgICAgIGdncXFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fQ19zdW0sIHlsYWIgPSAiTkVPX0MiKSwKICAgICAgICAgICAgIG5yb3cgPSA0LAogICAgICAgICAgICAgdG9wID0gdGV4dF9ncm9iKCJRLVEgUGxvdHMgRm9yIE10dXJrIC0gU1QiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gImJvbGQiKSwgCiAgICAgICAgICAgICBib3R0b20gPSB0ZXh0X2dyb2IoIk5vcm1hbGl0eSBpcyBtZXQgZm9yIHBsb3RzIHdlcmUgZGF0YSBmYWxscyBhbG9uZyBvciBjbG9zZSB0byB0aGUgbGluZS4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIml0YWxpYyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwLjA1LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoanVzdCA9IDApCiAgICAgICAgICAgICApCmBgYAoKPC9kZXRhaWxzPgoKIyMjIChjKSBIaXN0b2dyYW0gUGxvdHMKCjxkZXRhaWxzPgoKPHN1bW1hcnk+CgpPdmVyYWxsLCB0aGUgUS1RIHBsb3RzIHNob3cgdGhlIGRhdGEgZm9yIGFsbCBtZWFzdXJlcyBleGNlcHQgYWdlIGFuZCBhZ2UKb2YgZmlyc3Qgc21hcnRwaG9uZSBkaWQgZmFsbCBhbG9uZyBvciBjbG9zZSB0byB0aGUgbGluZS4gVGhlIGFnZQptZWFzdXJlcyB3ZXJlIG5vdCBleHBlY3RlZCB0byBiZSBub3JtYWxseSBkaXN0cmlidXRlZDsgdGhlcmVmb3JlLCB0aGUKYW5hbHlzaXMgd2FzIGNvbXBsZXRlZCBmb3IgZWFjaCBtZWFzdXJlLiAqKGNsaWNrIHRvIHNlZSBjb2RlKSoKCjwvc3VtbWFyeT4KCmBgYHtyIGVjaG89VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgZXZhbD1UUlVFfQojIFNPTkEgLSBTVApncmlkLmFycmFuZ2UocXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTk1QUV9zdW0sIG1haW4gPSAiTk1QUSIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgICAgIyBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSROTVBRX3N1bSwgZ2VvbSA9ICJkZW5zaXR5IiksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfc3VtLCBtYWluID0gIlNBRCIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9kZXBfc3VtLCBtYWluID0gIlNBRF9kZXAiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfYWNjZXNzX3N1bSwgbWFpbiA9ICJTQURfYWNjZXNzIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2VhX3N1bSwgbWFpbiA9ICJTQURfZWEiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZGlzdF9zdW0sIG1haW4gPSAiU0FEX2Rpc3QiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRhZ2UsIG1haW4gPSAiYWdlIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1JTX3N1bSwgbWFpbiA9ICJTUlMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSREQVNTX0Rfc3VtLCBtYWluID0gIkRBU1NfRCIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJERBU1NfQV9zdW0sIG1haW4gPSAiREFTU19BIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19TX3N1bSwgbWFpbiA9ICJEQVNTX1MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRCSVNfc3VtLCBtYWluID0gIkJJUyIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNTRUlUX3N1bSwgbWFpbiA9ICJTU0VJVCIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KChTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFJTRVNfc3VtLCBtYWluID0gIlJTRVMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fTl9zdW0sIG1haW4gPSAiTkVPX04iLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fRV9zdW0sIG1haW4gPSAiTkVPX0UiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fT19zdW0sIG1haW4gPSAiTkVPX08iLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fQV9zdW0sIG1haW4gPSAiTkVPX0EiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fQ19zdW0sIG1haW4gPSAiTkVPX0MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBucm93ID0gNCwKICAgICAgICAgICAgIHRvcCA9IHRleHRfZ3JvYigiSGlzdG9ncmFtIEZvciBTT05BIERhdGEgLSBTVCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICAgICAgIGJvdHRvbSA9IHRleHRfZ3JvYigiTm9ybWFsaXR5IGlzIG1ldCBmb3IgcGxvdHMgd2VyZSBkYXRhIGZhbGxzIGFsb25nIG9yIGNsb3NlIHRvIGEgbm9ybWFsIGN1cnZlLiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiaXRhbGljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAuMDUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhqdXN0ID0gMCkKICAgICAgICAgICAgICkKIyBmb3IgTVRVUksgLSBTVApncmlkLmFycmFuZ2UocXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5NUFFfc3VtLCBtYWluID0gIk5NUFEiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICAgICMgcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5NUFFfc3VtLCBnZW9tID0gImRlbnNpdHkiKSwKICAgICAgICAgICAgIHFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfc3VtLCBtYWluID0gIlNBRCIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRTQURfZGVwX3N1bSwgbWFpbiA9ICJTQURfZGVwIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFNBRF9hY2Nlc3Nfc3VtLCBtYWluID0gIlNBRF9hY2Nlc3MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2VhX3N1bSwgbWFpbiA9ICJTQURfZWEiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU0FEX2Rpc3Rfc3VtLCBtYWluID0gIlNBRF9kaXN0IiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJGFnZSwgbWFpbiA9ICJhZ2UiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1JTX3N1bSwgbWFpbiA9ICJTUlMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19EX3N1bSwgbWFpbiA9ICJEQVNTX0QiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19BX3N1bSwgbWFpbiA9ICJEQVNTX0EiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkREFTU19TX3N1bSwgbWFpbiA9ICJEQVNTX1MiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkQklTX3N1bSwgbWFpbiA9ICJCSVMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkU1NFSVRfc3VtLCBtYWluID0gIlNTRUlUIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJFJTRVNfc3VtLCBtYWluID0gIlJTRVMiLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX05fc3VtLCBtYWluID0gIk5FT19OIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19FX3N1bSwgbWFpbiA9ICJORU9fRSIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIHFwbG90KChNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKSRORU9fT19zdW0sIG1haW4gPSAiTkVPX08iLCB5bGFiID0gImZyZXEiLCB4bGFiID0gIlNjb3JlIiwgYmlud2lkdGggPSAxKSArIHRoZW1lX2NsYXNzaWMoKSArIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvdXIgPSAiYmxhY2siKSksCiAgICAgICAgICAgICBxcGxvdCgoTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSkkTkVPX0Ffc3VtLCBtYWluID0gIk5FT19BIiwgeWxhYiA9ICJmcmVxIiwgeGxhYiA9ICJTY29yZSIsIGJpbndpZHRoID0gMSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB0aGVtZShheGlzLnRleHQgPSBlbGVtZW50X3RleHQoY29sb3VyID0gImJsYWNrIikpLAogICAgICAgICAgICAgcXBsb3QoKE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpJE5FT19DX3N1bSwgbWFpbiA9ICJORU9fQyIsIHlsYWIgPSAiZnJlcSIsIHhsYWIgPSAiU2NvcmUiLCBiaW53aWR0aCA9IDEpICsgdGhlbWVfY2xhc3NpYygpICsgdGhlbWUoYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICJibGFjayIpKSwKICAgICAgICAgICAgIG5yb3cgPSA0LAogICAgICAgICAgICAgdG9wID0gdGV4dF9ncm9iKCJIaXN0b2dyYW0gRm9yIE10dXJrIERhdGEgLSBTVCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiYm9sZCIpLCAKICAgICAgICAgICAgIGJvdHRvbSA9IHRleHRfZ3JvYigiTm9ybWFsaXR5IGlzIG1ldCBmb3IgcGxvdHMgd2VyZSBkYXRhIGZhbGxzIGFsb25nIG9yIGNsb3NlIHRvIGEgbm9ybWFsIGN1cnZlLiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiaXRhbGljIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAuMDUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhqdXN0ID0gMCkKICAgICAgICAgICAgICkKYGBgCgo8L2RldGFpbHM+CgoKIyMjIENvcnJlbGF0aW9ucwoKVGhpcyBkYXRhIG9ubHkgaW5jbHVkZWQgcHMgd2hvIHJlcG9ydGVkIGJvdGggaGF2aW5nIGFuIGlQaG9uZSAoU09OQSA9CmByIG5yb3coU09OQV9kYXRhICU+JSBmaWx0ZXIoaXBob25lID09ICJ5ZXMiKSlgOyBNdHVyayA9CmByIG5yb3coTXR1cmtfZGF0YSAlPiUgZmlsdGVyKGlwaG9uZSA9PSAieWVzIikpYCkgYW5kIGhhZCBTVCBhY3RpdmF0ZWQKcHJpb3IgdG8gdGhlIHN0dWR5IChTT05BID0KYHIgbnJvdyhTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpYCA7IE10dXJrID0KYHIgbnJvdyhNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKWApIHJhdGhlciB0aGFuIHRoZSB0b3RhbApzYW1wbGUgKFNPTkEgPSBgciBucm93KFNPTkFfZGF0YSlgOyBNdHVyayA9IGByIG5yb3coTXR1cmtfZGF0YSlgKS4KCiMjIyMgU3R1ZHkgMTogU09OQQoKYGBge3IgfQpzb25hX1NUX2NvcnIgPC0gCiAgU09OQV9kYXRhICU+JSAKICBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpICU+JSAKICAjIHNlbGVjdChhZ2UsIGFnZV9maXJzdF9waG9uZSwgY29tX2dlbjpjb21fcm9vbV90YXNrLCBkaXN0X2RhaWx5LCBkaXN0X3N0dWR5LCBlbmRzX3dpdGgoIl9zdW0iKSkgJT4lCiAgc2VsZWN0KGFnZSwgYWdlX2ZpcnN0X3Bob25lLCBjb21fZ2VuOmNvbV9yb29tX3Rhc2ssIGRpc3RfZGFpbHksIGRpc3Rfc3R1ZHksIAogICAgICAgICBOTVBRX3N1bSwgCiAgICAgICAgIFNBRF9zdW0sIFNBRF9kZXBfc3VtLCBTQURfZWFfc3VtLCBTQURfYWNjZXNzX3N1bSwgU0FEX2Rpc3Rfc3VtLCAjIGFkZCBvciByZW1vdmUgdGhlIFNBRCBzdWJzY2FsZXMgLyBvdmVyYWxsCiAgICAgICAgIEJJU19zdW0sIE5FT19PX3N1bSwgTkVPX0Nfc3VtLCBORU9fRV9zdW0sIE5FT19BX3N1bSwgTkVPX05fc3VtLCBSU0VTX3N1bSwgU1JTX3N1bSwgU1NFSVRfc3VtLCBEQVNTX0Rfc3VtLCBEQVNTX0Ffc3VtLCBEQVNTX1Nfc3VtKSAlPiUgCiAgYXMubWF0cml4KCkgJT4lIAogIEhtaXNjOjpyY29ycih0eXBlID0gYygicGVhcnNvbiIpKQoKIyBjcmVhdGUgbmV3IHBpbG90X2NvcnIgdG8gc2hvd24gb25seSBsb3dlciB0cmlhbmdsZS4uLiAKc29uYV9TVF9jb3JyMiA8LSBzb25hX1NUX2NvcnIKIyByb3VuZCB0byA0IGRlY2ltYWxzLi4uIApzb25hX1NUX2NvcnIyJHIgPC0gcm91bmQoc29uYV9TVF9jb3JyMiRyLCA0KQpzb25hX1NUX2NvcnIyJFAgPC0gcm91bmQoc29uYV9TVF9jb3JyMiRQLCA0KQpzb25hX1NUX2NvcnIyJG4gPC0gcm91bmQoc29uYV9TVF9jb3JyMiRuLCA0KQojIHJlbW92ZSB1cHBlciB0cmlhbmdsZSBmb3JtIHIsIHAsIGFuZCBuCnNvbmFfU1RfY29ycjIkclt1cHBlci50cmkoc29uYV9TVF9jb3JyMiRyKV0gPC0gIi0iCnNvbmFfU1RfY29ycjIkUFt1cHBlci50cmkoc29uYV9TVF9jb3JyMiRQKV0gPC0gIi0iCnNvbmFfU1RfY29ycjIkblt1cHBlci50cmkoc29uYV9TVF9jb3JyMiRuKV0gPC0gIi0iCgojIHNob3cgY29yciB0YWJsZSB3aXRoIGZsYXR0ZW5Db3JyCgprYWJsZShmbGF0dGVuQ29yck1hdHJpeChzb25hX1NUX2NvcnIkciwgc29uYV9TVF9jb3JyJFApLCBjYXB0aW9uID0gIlNPTkEgU3R1ZHkgLSBTVCAtIENvcnJlbGF0aW9uOiBGbGF0IikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoImhvdmVyIiwgInN0cmlwZWQiKSwgZnVsbF93aWR0aCA9IEYpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgcHJpbnQgdGFibGVzIHVzaW5nIGthYmxlCmthYmxlKGFzLmRhdGEuZnJhbWUoZm9ybWF0KHNvbmFfU1RfY29ycjIkciwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiU09OQSBTdHVkeSAtIFNUIC0gQ29ycmVsYXRpb246IHIgdmFsdWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoImhvdmVyIiwgInN0cmlwZWQiKSwgZnVsbF93aWR0aCA9IEYpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKICAKCmthYmxlKGFzLmRhdGEuZnJhbWUoZm9ybWF0KHNvbmFfU1RfY29ycjIkUCwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiU09OQSBTdHVkIC0gU1R5IC0gQ29ycmVsYXRpb246IHAgdmFsdWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoImhvdmVyIiwgInN0cmlwZWQiKSwgZnVsbF93aWR0aCA9IEYpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKGFzLmRhdGEuZnJhbWUoZm9ybWF0KHNvbmFfU1RfY29ycjIkbiwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiU09OQSBTdHVkeSAtIFNUIC0gQ29ycmVsYXRpb246IG4gdmFsdWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoImhvdmVyIiwgInN0cmlwZWQiKSwgZnVsbF93aWR0aCA9IEYpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCiMgY3JlYXRlIG5ldyBtYXRyaXggZm9yIHIgJiBwIHZhbHMgd2l0aCBkaWZmZXJlbnQgY29sIG5hbWVzCiAgIyBnZXQgYWdlLCBhZ2VfZmlyc3RfcGhvbmUsIGRpc3RfZGFpbHksIGFuZCBhbGwgcXVlcyBkYXRhICgyMSA9IFNBRCBvdmVyYWxsLS1ub3QgdXNlZCkKc29uYV9TVF9jb3JyX3IgPC0gc29uYV9TVF9jb3JyJHJbYygxMDoxNSwgMSwgMTY6MjcpLGMoMTA6MTUsIDEsIDE2OjI3KV0KICBjb2xuYW1lcyhzb25hX1NUX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICByb3duYW1lcyhzb25hX1NUX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICAKc29uYV9TVF9jb3JyX3AgPC0gc29uYV9TVF9jb3JyJFBbYygxMDoxNSwgMSwgMTY6MjcpLGMoMTA6MTUsIDEsIDE2OjI3KV0KICBjb2xuYW1lcyhzb25hX1NUX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICByb3duYW1lcyhzb25hX1NUX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKCgojIGNyZWF0ZSBjb2xvdXIgcGFsbGV0IGZvciBjb3JyIG1hdHJpeAojIGNvcnJfY29sb3VycyA8LSBjKCIjN0UxMDQ0IiwgIiM5ODE1NzAiLCAiI0YzRjVGNyIsICIjNDkxMjk2IiwgIiMxNzBGQTciKQpjb3JyX2NvbG91cnMgPC0gYygiIzk4NDEwQiIsICIjRjA4MDNDIiwgIiNEREE0NDgiLCAiI0Y3RjdGRiIsICIjM0Y4MjZEIiwgIiMwODYwNUYiLCAiIzQxNDUzNSIpCgojIGFsbCB2YXJzIGluY2x1ZGVkCmNvcnJfcGxvdF9zb25hX1NUX2FsbCA8LSB7CiAgY29ycnBsb3Qoc29uYV9TVF9jb3JyJHIsIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IHNvbmFfU1RfY29yciRQLCBzaWcubGV2ZWwgPSBjKC4wMDEsIC4wMSwgLjA1KSwKICAgICAgICAgaW5zaWcgPSAibGFiZWxfc2lnIiwgcGNoLmNleCA9IC41LCBwY2guY29sID0gImJsYWNrIgogICAgICAgICAjIGluc2lnID0gImJsYW5rIiMgaW5zaWcgPSAicGNoIiwgcGNoID0gMTAsIHBjaC5jb2wgPSAicmVkIiwgcGNoLmNleCA9IC4xLCAjIGFkZCB0aGlzIGluc3RlYWQgb2YgaW5zaWcgYWJvdmUgdG8gZGVub3QgaW5zaWcgcCB2YWx1ZXMgd2l0aCByZWQgZG90CiAgICAgICAgICkKICByZWNvcmRQbG90KCkKfQoKCiMgd2l0aCBhbGwgU0FEIHN1YnNjYWxlcwpjb3JyX3Bsb3Rfc29uYV9TVF9xdWVzX2FsbCA8LSB7CiAgY29ycnBsb3Qoc29uYV9TVF9jb3JyX3IsIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IHNvbmFfU1RfY29ycl9wLCBzaWcubGV2ZWwgPSBjKC4wMDEsIC4wMSwgLjA1KSwKICAgICAgICAgaW5zaWcgPSAibGFiZWxfc2lnIiwgcGNoLmNleCA9IC43NSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCiMgZmluYWwgLS0gd2l0aCBTQUQgb3ZlcmFsbCBvbmx5CmNvcnJfcGxvdF9zb25hX1NUX3F1ZXNfZmluYWwgPC0gewogIGNvcnJwbG90KHNvbmFfU1RfY29ycl9yW2MoMSwyLDc6MTkpLCBjKDEsMiw3OjE5KV0sIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IHNvbmFfU1RfY29ycl9wW2MoMSwyLDc6MTkpLCBjKDEsMiw3OjE5KV0sIHNpZy5sZXZlbCA9IGMoLjAwMSwgLjAxLCAuMDUpLAogICAgICAgICBpbnNpZyA9ICJsYWJlbF9zaWciLCBwY2guY2V4ID0gLjc1LCBwY2guY29sID0gImJsYWNrIgogICAgICAgICAjIGluc2lnID0gImJsYW5rIiMgaW5zaWcgPSAicGNoIiwgcGNoID0gMTAsIHBjaC5jb2wgPSAicmVkIiwgcGNoLmNleCA9IC4xLCAjIGFkZCB0aGlzIGluc3RlYWQgb2YgaW5zaWcgYWJvdmUgdG8gZGVub3QgaW5zaWcgcCB2YWx1ZXMgd2l0aCByZWQgZG90CiAgICAgICAgICkKICByZWNvcmRQbG90KCkKfQoKIyBleHBvcnQgY29yciBtYXRyaXggdXNpbmcgZ2dzYXZlKCkgJiByZXBsYXlQbG90KCkgdG8gY2FsbCBvbiBwcmV2aW91c2x5IG1hZGUgcGxvdApnZ3NhdmUoZmlsZW5hbWU9Ii9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0ZpZ3VyZXMvY29ycl9wbG90X3NvbmFfU1RfYWxsKG9jdDI4KSIsIHBsb3QgPSByZXBsYXlQbG90KGNvcnJfcGxvdF9zb25hX1NUX2FsbCksIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9jb3JyX3Bsb3Rfc29uYV9TVF9xdWVzX2FsbChvY3QyOCkiLCBwbG90ID0gcmVwbGF5UGxvdChjb3JyX3Bsb3Rfc29uYV9TVF9xdWVzX2FsbCksIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9jb3JyX3Bsb3Rfc29uYV9TVF9xdWVzX2ZpbmFsKG9jdDI4KSIsIHBsb3QgPSByZXBsYXlQbG90KGNvcnJfcGxvdF9zb25hX1NUX3F1ZXNfZmluYWwpLCBkZXZpY2UgPSAianBlZyIsIGhlaWdodCA9IDUsIHdpZHRoID0gOCwgdW5pdHMgPSAiaW4iLCBkcGkgPSAxMDAwKQoKIyBleHBvcnQgY3N2IGZpbGVzIG9mIFIgdmFsdWVzICYgcCB2YWx1ZXMgCiAgd3JpdGUuY3N2KHNvbmFfU1RfY29yciRyLCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL3NvbmFfU1RfY29ycl9ydmFscyhvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKICB3cml0ZS5jc3Yoc29uYV9TVF9jb3JyJFAsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvc29uYV9TVF9jb3JyX3B2YWxzKG9jdDI4KS5jc3YiLCByb3cubmFtZXMgPSBUKQpgYGAKCiMjIyMgU3R1ZHkgMjogTXR1cmsKCmBgYHtyIH0KbXR1cmtfU1RfY29yciA8LSAKICBNdHVya19kYXRhICU+JSAKICBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpICU+JSAKICAjIHNlbGVjdChhZ2UsIGFnZV9maXJzdF9waG9uZSwgY29tX2dlbjpjb21fcm9vbV90YXNrLCBkaXN0X2RhaWx5LCBkaXN0X3N0dWR5LCBlbmRzX3dpdGgoIl9zdW0iKSkgJT4lCiAgc2VsZWN0KGFnZSwgYWdlX2ZpcnN0X3Bob25lLCBjb21fZ2VuOmNvbV9yb29tX3Rhc2ssIGRpc3RfZGFpbHksIGRpc3Rfc3R1ZHksIAogICAgICAgICBOTVBRX3N1bSwgCiAgICAgICAgIFNBRF9zdW0sIFNBRF9kZXBfc3VtLCBTQURfZWFfc3VtLCBTQURfYWNjZXNzX3N1bSwgU0FEX2Rpc3Rfc3VtLCAjIGFkZCBvciByZW1vdmUgdGhlIFNBRCBzdWJzY2FsZXMgLyBvdmVyYWxsCiAgICAgICAgIEJJU19zdW0sIE5FT19PX3N1bSwgTkVPX0Nfc3VtLCBORU9fRV9zdW0sIE5FT19BX3N1bSwgTkVPX05fc3VtLCBSU0VTX3N1bSwgU1JTX3N1bSwgU1NFSVRfc3VtLCBEQVNTX0Rfc3VtLCBEQVNTX0Ffc3VtLCBEQVNTX1Nfc3VtKSAlPiUgCiAgYXMubWF0cml4KCkgJT4lIAogIEhtaXNjOjpyY29ycih0eXBlID0gYygicGVhcnNvbiIpKQoKIyBjcmVhdGUgbmV3IHBpbG90X2NvcnIgdG8gc2hvd24gb25seSBsb3dlciB0cmlhbmdsZS4uLiAKbXR1cmtfU1RfY29ycjIgPC0gbXR1cmtfU1RfY29ycgojIHJvdW5kIHRvIDQgZGVjaW1hbHMuLi4gCm10dXJrX1NUX2NvcnIyJHIgPC0gcm91bmQobXR1cmtfU1RfY29ycjIkciwgNCkKbXR1cmtfU1RfY29ycjIkUCA8LSByb3VuZChtdHVya19TVF9jb3JyMiRQLCA0KQptdHVya19TVF9jb3JyMiRuIDwtIHJvdW5kKG10dXJrX1NUX2NvcnIyJG4sIDQpCiMgcmVtb3ZlIHVwcGVyIHRyaWFuZ2xlIGZvcm0gciwgcCwgYW5kIG4KbXR1cmtfU1RfY29ycjIkclt1cHBlci50cmkobXR1cmtfU1RfY29ycjIkcildIDwtICItIgptdHVya19TVF9jb3JyMiRQW3VwcGVyLnRyaShtdHVya19TVF9jb3JyMiRQKV0gPC0gIi0iCm10dXJrX1NUX2NvcnIyJG5bdXBwZXIudHJpKG10dXJrX1NUX2NvcnIyJG4pXSA8LSAiLSIKCiMgc2hvdyBjb3JyIHRhYmxlIHdpdGggZmxhdHRlbkNvcnIKCmthYmxlKGZsYXR0ZW5Db3JyTWF0cml4KG10dXJrX1NUX2NvcnIkciwgbXR1cmtfU1RfY29yciRQKSwgY2FwdGlvbiA9ICJNVFVSSyBTdHVkeSAtIFNUIC0gQ29ycmVsYXRpb246IEZsYXQiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyBwcmludCB0YWJsZXMgdXNpbmcga2FibGUKa2FibGUoYXMuZGF0YS5mcmFtZShmb3JtYXQobXR1cmtfU1RfY29ycjIkciwgc2NpZW50aWZpYyA9IEZBTFNFKSksIGNhcHRpb24gPSAiTVRVUksgU3R1ZHkgLSBTVCAtIENvcnJlbGF0aW9uOiByIHZhbHVlcyIpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJob3ZlciIsICJzdHJpcGVkIiksIGZ1bGxfd2lkdGggPSBGKSAlPiUgCiAga2FibGVfY2xhc3NpYygpCiAgCgprYWJsZShhcy5kYXRhLmZyYW1lKGZvcm1hdChtdHVya19TVF9jb3JyMiRQLCBzY2llbnRpZmljID0gRkFMU0UpKSwgY2FwdGlvbiA9ICJNVFVSSyBTdHVkeSAtIFNUIC0gQ29ycmVsYXRpb246IHAgdmFsdWVzIikgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoImhvdmVyIiwgInN0cmlwZWQiKSwgZnVsbF93aWR0aCA9IEYpICU+JSAKICBrYWJsZV9jbGFzc2ljKCkKCmthYmxlKGFzLmRhdGEuZnJhbWUoZm9ybWF0KG10dXJrX1NUX2NvcnIyJG4sIHNjaWVudGlmaWMgPSBGQUxTRSkpLCBjYXB0aW9uID0gIk1UVVJLIFN0dWR5IC0gU1QgLSBDb3JyZWxhdGlvbjogbiB2YWx1ZXMiKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygiaG92ZXIiLCAic3RyaXBlZCIpLCBmdWxsX3dpZHRoID0gRikgJT4lIAogIGthYmxlX2NsYXNzaWMoKQoKIyBjcmVhdGUgbmV3IG1hdHJpeCBmb3IgciAmIHAgdmFscyB3aXRoIGRpZmZlcmVudCBjb2wgbmFtZXMKICAjIGdldCBhZ2UsIGFnZV9maXJzdF9waG9uZSwgZGlzdF9kYWlseSwgYW5kIGFsbCBxdWVzIGRhdGEgKDIxID0gU0FEIG92ZXJhbGwtLW5vdCB1c2VkKQptdHVya19TVF9jb3JyX3IgPC0gbXR1cmtfU1RfY29yciRyW2MoMTA6MTUsIDEsIDE2OjI3KSxjKDEwOjE1LCAxLCAxNjoyNyldCiAgY29sbmFtZXMobXR1cmtfU1RfY29ycl9yKSA8LSBjKCJOTVBRIiwgIlNBRCIsICJTQUQ6IERlcC4iLCAiU0FEOiBFQSIsICJTQUQ6IEEiLCAiU0FEOiBEaXN0LiIsICJBZ2UiLCAiQklTIiwgIk5FTzogTyIsICJORU86IEMiLCAiTkVPOiBFIiwgIk5FTzogQSIsICJORU86IE4iLCAiUlNFUyIsICJTUlMiLCAiU1NFSVQiLCAiREFTUzogRCIsICJEQVNTOiBBIiwgIkRBU1M6IFMiKQogIHJvd25hbWVzKG10dXJrX1NUX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICAKbXR1cmtfU1RfY29ycl9wIDwtIG10dXJrX1NUX2NvcnIkUFtjKDEwOjE1LCAxLCAxNjoyNyksYygxMDoxNSwgMSwgMTY6MjcpXQogIGNvbG5hbWVzKG10dXJrX1NUX2NvcnJfcikgPC0gYygiTk1QUSIsICJTQUQiLCAiU0FEOiBEZXAuIiwgIlNBRDogRUEiLCAiU0FEOiBBIiwgIlNBRDogRGlzdC4iLCAiQWdlIiwgIkJJUyIsICJORU86IE8iLCAiTkVPOiBDIiwgIk5FTzogRSIsICJORU86IEEiLCAiTkVPOiBOIiwgIlJTRVMiLCAiU1JTIiwgIlNTRUlUIiwgIkRBU1M6IEQiLCAiREFTUzogQSIsICJEQVNTOiBTIikKICByb3duYW1lcyhtdHVya19TVF9jb3JyX3IpIDwtIGMoIk5NUFEiLCAiU0FEIiwgIlNBRDogRGVwLiIsICJTQUQ6IEVBIiwgIlNBRDogQSIsICJTQUQ6IERpc3QuIiwgIkFnZSIsICJCSVMiLCAiTkVPOiBPIiwgIk5FTzogQyIsICJORU86IEUiLCAiTkVPOiBBIiwgIk5FTzogTiIsICJSU0VTIiwgIlNSUyIsICJTU0VJVCIsICJEQVNTOiBEIiwgIkRBU1M6IEEiLCAiREFTUzogUyIpCgoKIyBjcmVhdGUgY29sb3VyIHBhbGxldCBmb3IgY29yciBtYXRyaXgKIyBjb3JyX2NvbG91cnMgPC0gYygiIzdFMTA0NCIsICIjOTgxNTcwIiwgIiNGM0Y1RjciLCAiIzQ5MTI5NiIsICIjMTcwRkE3IikKY29ycl9jb2xvdXJzIDwtIGMoIiM5ODQxMEIiLCAiI0YwODAzQyIsICIjRERBNDQ4IiwgIiNGN0Y3RkYiLCAiIzNGODI2RCIsICIjMDg2MDVGIiwgIiM0MTQ1MzUiKQoKIyBhbGwgdmFycyBpbmNsdWRlZApjb3JyX3Bsb3RfbXR1cmtfU1RfYWxsIDwtIHsKICBjb3JycGxvdChtdHVya19TVF9jb3JyJHIsIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IG10dXJrX1NUX2NvcnIkUCwgc2lnLmxldmVsID0gYyguMDAxLCAuMDEsIC4wNSksCiAgICAgICAgIGluc2lnID0gImxhYmVsX3NpZyIsIHBjaC5jZXggPSAuNSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCgojIHdpdGggYWxsIFNBRCBzdWJzY2FsZXMKY29ycl9wbG90X210dXJrX1NUX3F1ZXNfYWxsIDwtIHsKICBjb3JycGxvdChtdHVya19TVF9jb3JyX3IsIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IG10dXJrX1NUX2NvcnJfcCwgc2lnLmxldmVsID0gYyguMDAxLCAuMDEsIC4wNSksCiAgICAgICAgIGluc2lnID0gImxhYmVsX3NpZyIsIHBjaC5jZXggPSAuNzUsIHBjaC5jb2wgPSAiYmxhY2siCiAgICAgICAgICMgaW5zaWcgPSAiYmxhbmsiIyBpbnNpZyA9ICJwY2giLCBwY2ggPSAxMCwgcGNoLmNvbCA9ICJyZWQiLCBwY2guY2V4ID0gLjEsICMgYWRkIHRoaXMgaW5zdGVhZCBvZiBpbnNpZyBhYm92ZSB0byBkZW5vdCBpbnNpZyBwIHZhbHVlcyB3aXRoIHJlZCBkb3QKICAgICAgICAgKQogIHJlY29yZFBsb3QoKQp9CgojIGZpbmFsIC0tIHdpdGggU0FEIG92ZXJhbGwgb25seQpjb3JyX3Bsb3RfbXR1cmtfU1RfcXVlc19maW5hbCA8LSB7CiAgY29ycnBsb3QobXR1cmtfU1RfY29ycl9yW2MoMSwyLDc6MTkpLCBjKDEsMiw3OjE5KV0sIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIGNvbCA9IChjb2xvclJhbXBQYWxldHRlKGNvcnJfY29sb3VycykoNTAwMCkpLAogICAgICAgICAjIHR5cGUgPSAidXBwZXIiLAogICAgICAgICBkaWFnID0gRiwgIyByZW1vdmUgY2VudHJhbCBkaWFnb25hbAogICAgICAgICB0bC5jb2wgPSAiYmxhY2siLCB0bC5zcnQgPSA5MCwgdGwuY2V4ID0gLjgsICNUZXh0IGxhYmVsIGNvbG9yIGFuZCByb3RhdGlvbgogICAgICAgICBhZGRncmlkLmNvbCA9IE5BLCAjIGFkZCBncmlkIGNvbG91cgogICAgICAgICAjIGFkZENvZWYuY29sID0gImJsYWNrIiwgIyBBZGQgY29lZmZpY2llbnQgb2YgY29ycmVsYXRpb24KICAgICAgICAgIyBhZGRDb2VmYXNQZXJjZW50ID0gVCAjIGFkZCBhcyBjb2VmZmljaWVudCBhcyBwZXJjZW50CiAgICAgICAgICMgbnVtYmVyLmNleCA9IC4yNSwgIyBzaXplIG9mIHRoZSBjb2VmZgogICAgICAgICAjIG51bWJlci5kaWdpdHMgPSAyLCAjIG51bSBkZWNpbWFscyBpbiBjb2VmZgogICAgICAgICBwLm1hdCA9IG10dXJrX1NUX2NvcnJfcFtjKDEsMiw3OjE5KSwgYygxLDIsNzoxOSldLCBzaWcubGV2ZWwgPSBjKC4wMDEsIC4wMSwgLjA1KSwKICAgICAgICAgaW5zaWcgPSAibGFiZWxfc2lnIiwgcGNoLmNleCA9IC43NSwgcGNoLmNvbCA9ICJibGFjayIKICAgICAgICAgIyBpbnNpZyA9ICJibGFuayIjIGluc2lnID0gInBjaCIsIHBjaCA9IDEwLCBwY2guY29sID0gInJlZCIsIHBjaC5jZXggPSAuMSwgIyBhZGQgdGhpcyBpbnN0ZWFkIG9mIGluc2lnIGFib3ZlIHRvIGRlbm90IGluc2lnIHAgdmFsdWVzIHdpdGggcmVkIGRvdAogICAgICAgICApCiAgcmVjb3JkUGxvdCgpCn0KCiMgZXhwb3J0IGNvcnIgbWF0cml4IHVzaW5nIGdnc2F2ZSgpICYgcmVwbGF5UGxvdCgpIHRvIGNhbGwgb24gcHJldmlvdXNseSBtYWRlIHBsb3QKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL2NvcnJfcGxvdF9tdHVya19TVF9hbGwob2N0MjgpIiwgcGxvdCA9IHJlcGxheVBsb3QoY29ycl9wbG90X210dXJrX1NUX2FsbCksIGRldmljZSA9ICJqcGVnIiwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4LCB1bml0cyA9ICJpbiIsIGRwaSA9IDEwMDApCmdnc2F2ZShmaWxlbmFtZT0iL1VzZXJzL2FuYWNlY2lsaWFydWl6cGFyZG8vUlN0dWRpby9TbWFydHBob25lX3N0dWR5L1N0dWR5IDMtIEluZGl2aWR1YWwgRGlmZmVyZW5jZXMvRGlzc2VydGF0aW9uICgxMDoxODoyMSkvRmlndXJlcy9jb3JyX3Bsb3RfbXR1cmtfU1RfcXVlc19hbGwob2N0MjgpIiwgcGxvdCA9IHJlcGxheVBsb3QoY29ycl9wbG90X210dXJrX1NUX3F1ZXNfYWxsKSwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA1LCB3aWR0aCA9IDgsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKZ2dzYXZlKGZpbGVuYW1lPSIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9GaWd1cmVzL2NvcnJfcGxvdF9tdHVya19TVF9xdWVzX2ZpbmFsKG9jdDI4KSIsIHBsb3QgPSByZXBsYXlQbG90KGNvcnJfcGxvdF9tdHVya19TVF9xdWVzX2ZpbmFsKSwgZGV2aWNlID0gImpwZWciLCBoZWlnaHQgPSA1LCB3aWR0aCA9IDgsIHVuaXRzID0gImluIiwgZHBpID0gMTAwMCkKCiMgZXhwb3J0IGNzdiBmaWxlcyBvZiBSIHZhbHVlcyAmIHAgdmFsdWVzIAogIHdyaXRlLmNzdihtdHVya19TVF9jb3JyJHIsIi9Vc2Vycy9hbmFjZWNpbGlhcnVpenBhcmRvL1JTdHVkaW8vU21hcnRwaG9uZV9zdHVkeS9TdHVkeSAzLSBJbmRpdmlkdWFsIERpZmZlcmVuY2VzL0Rpc3NlcnRhdGlvbiAoMTA6MTg6MjEpL0V4Y2VsIE91dHB1dHMvbXR1cmtfU1RfY29ycl9ydmFscyhvY3QyOCkuY3N2Iiwgcm93Lm5hbWVzID0gVCkKICB3cml0ZS5jc3YobXR1cmtfU1RfY29yciRQLCIvVXNlcnMvYW5hY2VjaWxpYXJ1aXpwYXJkby9SU3R1ZGlvL1NtYXJ0cGhvbmVfc3R1ZHkvU3R1ZHkgMy0gSW5kaXZpZHVhbCBEaWZmZXJlbmNlcy9EaXNzZXJ0YXRpb24gKDEwOjE4OjIxKS9FeGNlbCBPdXRwdXRzL210dXJrX1NUX2NvcnJfcHZhbHMob2N0MjgpLmNzdiIsIHJvdy5uYW1lcyA9IFQpCmBgYAoKCiMjIyBSZWdyZXNzaW9ucwoKVGhpcyBkYXRhIG9ubHkgaW5jbHVkZWQgcHMgd2hvIHJlcG9ydGVkIGJvdGggaGF2aW5nIGFuIGlQaG9uZSAoU09OQSA9CmByIG5yb3coU09OQV9kYXRhICU+JSBmaWx0ZXIoaXBob25lID09ICJ5ZXMiKSlgOyBNdHVyayA9CmByIG5yb3coTXR1cmtfZGF0YSAlPiUgZmlsdGVyKGlwaG9uZSA9PSAieWVzIikpYCkgYW5kIGhhZCBTVCBhY3RpdmF0ZWQKcHJpb3IgdG8gdGhlIHN0dWR5IChTT05BID0KYHIgbnJvdyhTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIikpYCA7IE10dXJrID0KYHIgbnJvdyhNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpKWApIHJhdGhlciB0aGFuIHRoZSB0b3RhbApzYW1wbGUgKFNPTkEgPSBgciBucm93KFNPTkFfZGF0YSlgOyBNdHVyayA9IGByIG5yb3coTXR1cmtfZGF0YSlgKS4KCipOb3RlOiBTaW5jZSB0aGlzIHdhcyBhbiBleHBsb3JhdG9yeSBhbmFseXNpcywgdGhlIHByZWRpY3RvciBvZiAiYWdlIG9mCmZpcnN0IHBob25lIiBhbmQgb3RoZXIgU1QtcmVsYXRlZCBjb250aW51b3VzIHZhcmlhYmxlcyAoaS5lLiwgdG90YWwKd2Vla2x5IFNULCBkYWlseSBwaWNrdXBzLCBkYWlseSBub3RpZmljYXRpb25zKSB3ZXJlIGFkZGVkIHRvIGVhY2gKbW9kZWwuKgoKIyMjIyBTdHVkeSAxOiBTT05BCgojIyMjIyBOTVBRCgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiROTVBRID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE3LCAxNTYpID0gMS44NCwgcCA9IC4wMywgUjIgPSAuMTcKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgTkVPOiBPLCB0KDE1NikgPSAtMi4zNiwgcCA9IC4wMgogICAgLSAgIE5FTzogTiwgdCgxNTYpID0gMi4wMSwgcCA9IC4wNSAoLjA0NTgpCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gTk1QUV9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBTVF93ZWVrbHlfdG90X2hvdXJzICsgU1RfZGFpbHlfcGlja3VwcyArIFNUX2RhaWx5X25vdCArIEJJU19zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQoKIyBzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBOTVBRX3N1bSB+IE5FT19PX3N1bSArIE5FT19OX3N1bSkpCmBgYAoKIyMjIyMgU0FECgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTcsIDE1NikgPSAzLjc4LCBwID0gLjAzLCBSMiA9IC4yOQoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBTVCBIb3VycywgdCgxNTYpID0gMi4xNywgcCA9IC4wMwogICAgLSAgIERBUzogUywgdCgxNTYpID0gMS45OSwgcCA9IC4wNSAoLjA0OCkKICAgIC0gICBORU86IEEsIHQoMTU2KSA9IC0yLjM2LCBwID0gLjAyCiAgICAtICAgTkVPOiBOLCB0KDE1NikgPSAyLjExLCBwID0gLjA0CiAgICAtICAgU1NFSVQsIHQoMTU2KSA9IDMuMzAsIHAgPSAuMDAxCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIFNUX3dlZWtseV90b3RfaG91cnMgKyBTVF9kYWlseV9waWNrdXBzICsgU1RfZGFpbHlfbm90ICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9zdW0gfiBTVF93ZWVrbHlfdG90X2hvdXJzICsgREFTU19TX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFNTRUlUX3N1bSkpCmBgYAoKIyMjIyMgU0FEOiBEZXBlbmRlbmNlCgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTcsIDE1NikgPSAzLjc4LCBwID0gLjAzLCBSMiA9IC4yOQoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBORU86IE8sIHQoMTU2KSA9IC0yLjU4LCBwID0gLjAxCiAgICAtICAgTkVPOiBDLCB0KDE1NikgPSAtMi4xMywgcCA9IC4wNAogICAgLSAgIFNTRUlULCB0KDE1NikgPSAtMi43OSwgcCA9IC4wMDYKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBTQURfZGVwX3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIFNUX3dlZWtseV90b3RfaG91cnMgKyBTVF9kYWlseV9waWNrdXBzICsgU1RfZGFpbHlfbm90ICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9kZXBfc3VtIH4gTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgU1NFSVRfc3VtKSkKYGBgCgojIyMjIyBTQUQ6IEFjY2Vzc2liaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNywgMTU2KSA9IDEuOTEsIHAgPSAuMDIsIFIyID0gLjE3CgotICAgc2lnIHByZWRpY3RvcnM6CgogICAgLSAgIEFnZSBmaXJzdCBwaG9uZSwgdCgxNTYpID0gLTIuMTAsIHAgPSAuMDQKICAgIC0gICBTU0VJVCwgdCgxNTYpID0gMi4yMywgcCA9IC4wMwoKYGBge3J9CiMgcnVuIGxtICsgZ2l2ZSBzdW1tYXJ5CnN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9hY2Nlc3Nfc3VtIH4gYWdlICsgYWdlX2ZpcnN0X3Bob25lICsgU1Rfd2Vla2x5X3RvdF9ob3VycyArIFNUX2RhaWx5X3BpY2t1cHMgKyBTVF9kYWlseV9ub3QgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2VfZmlyc3RfcGhvbmUgKyBTU0VJVF9zdW0pKQpgYGAKCiMjIyMjIFNBRDogRW1vdGlvbmFsIEF0dGFjaG1lbnQKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNywgMTU2KSA9IDMuNzQsIHAgXDwgLjAwMSwgUjIgPSAuMjkKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgU1QgSG91cnMsIHQoMTU2KSA9IDIuMTQsIHAgPSAuMDMKICAgIC0gICBEQVM6IFMsIHQoMTU2KSA9IDIuNTEsIHAgPSAuMDEKICAgIC0gICBORU86IEEsIHQoMTU2KSA9IC0yLjc0LCBwID0gLjAwNwogICAgLSAgIFNTRUlULCB0KDE1NikgPSAyLjM3LCBwID0gLjAyCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX2VhX3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIFNUX3dlZWtseV90b3RfaG91cnMgKyBTVF9kYWlseV9waWNrdXBzICsgU1RfZGFpbHlfbm90ICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9lYV9zdW0gfiBTVF93ZWVrbHlfdG90X2hvdXJzICsgREFTU19TX3N1bSArIE5FT19BX3N1bSArIFNTRUlUX3N1bSkpCmBgYAoKIyMjIyMgU0FEOiBEaXN0cmFjdGliaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNywgMTU2KSA9IDIuNjQsIHAgXDwgLjAwMSwgUjIgPSAuMjIKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgU1QgSG91cnMsIHQoMTU2KSA9IDEuOTUsIHAgPSAuMDUgKGFsbW9zdCBzaWcpCiAgICAtICAgTkVPOiBOLCB0KDE1NikgPSAyLjA1LCBwID0gLjA0CiAgICAtICAgU1NFSVQsIHQoMTU2KSA9IDIuMTYsIHAgPSAuMDMKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBTQURfZGlzdF9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBTVF93ZWVrbHlfdG90X2hvdXJzICsgU1RfZGFpbHlfcGlja3VwcyArIFNUX2RhaWx5X25vdCArIEJJU19zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQoKIyBzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBTQURfZGlzdF9zdW0gfiBORU9fTl9zdW0gKyBTU0VJVF9zdW0pKQpgYGAKCiMjIyMgU3R1ZHkgMjogTXR1cmsKCiMjIyMjIE5NUFEKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJE5NUFEgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTcsIDE0MykgPSAxMi4yNCwgcCBcPCAuMDAxLCBSMiA9IC41OQoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBBZ2UsIHQoMTQzKSA9IC0yLjQyLCBwID0gLjAyCiAgICAtICAgU1Q6IFBpY2t1cHMsIHQoMTQzKSA9IC0xLjk2LCBwID0gLjA1IChhbG1vc3Qgc2lnKQogICAgLSAgIERBU1M6IEQsIHQoMTQzKSA9IDIuNzAsIHAgPSAuMDA4CiAgICAtICAgTkVPOiBOLCB0KDE0MykgPSAyLjg2LCBwID0gLjAwNQogICAgLSAgIFJTRVMsIHQoMTQzKSA9IC0yLjU0LCBwID0gLjAxCiAgICAtICAgU1NFSVQsIHQoMTQzKSA9IDMuNTcsIHAgXDwgLjAwMQoKYGBge3J9CiMgcnVuIGxtICsgZ2l2ZSBzdW1tYXJ5CnN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBOTVBRX3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIFNUX3dlZWtseV90b3RfaG91cnMgKyBTVF9kYWlseV9waWNrdXBzICsgU1RfZGFpbHlfbm90ICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBOTVBRX3N1bSB+IGFnZSArIFNUX2RhaWx5X3BpY2t1cHMgKyBEQVNTX0Rfc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0pKQpgYGAKCiMjIyMjIFNBRAoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE3LCAxNDMpID0gMTcuMDIsIHAgXDwgLjAwMSwgUjIgPSAuNjcKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgQWdlLCB0KDE0MykgPSAtMi41OCwgcCA9IC4wMQogICAgLSAgIFNUIFBpY2t1cHMsIHQoMTQzKSA9IC0yLjYyLCBwID0gLjAxICguMDA5OSkKICAgIC0gICBORU86IEUsIHQoMTQzKSA9IC0xLjk2LCBwID0gLjA1IChhbG1vc3Qgc2lnKQogICAgLSAgIE5FTzogTiwgdCgxNDMpID0gMy44MiwgcCBcPCAuMDAxCiAgICAtICAgU1NFSVQsIHQoMTQzKSA9IDMuOTksIHAgXDwgLjAwMQogICAgLSAgIFNSUywgdCgxNDMpID0gLTIuMDksIHAgPSAuMDQKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIFNUX3dlZWtseV90b3RfaG91cnMgKyBTVF9kYWlseV9waWNrdXBzICsgU1RfZGFpbHlfbm90ICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBTQURfc3VtIH4gYWdlICsgU1RfZGFpbHlfcGlja3VwcyArIE5FT19FX3N1bSArIE5FT19OX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQpgYGAKCiMjIyMjIFNBRDogRGVwZW5kZW5jZQoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE3LCAxNDMpID0gOC4xMywgcCBcPCAuMDAxLCBSMiA9IC40OQoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBBZ2UsIHQoMTQzKSA9IC0yLjU5LCBwID0gLjAxCiAgICAtICAgTkVPOiBOLCB0KDE0MykgPSAzLjExLCBwID0gLjAwMgogICAgLSAgIFNTRUlULCB0KDE0MykgPSAyLjE2LCBwID0gLjAzCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9kZXBfc3VtIH4gYWdlICsgYWdlX2ZpcnN0X3Bob25lICsgU1Rfd2Vla2x5X3RvdF9ob3VycyArIFNUX2RhaWx5X3BpY2t1cHMgKyBTVF9kYWlseV9ub3QgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9kZXBfc3VtIH4gYWdlICsgTkVPX05fc3VtICsgU1NFSVRfc3VtKSkKYGBgCgojIyMjIyBTQUQ6IEFjY2Vzc2liaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNywgMTQzKSA9IDYuNDQsIHAgXDwgLjAwMSwgUjIgPSAuNDMKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgQWdlLCB0KDE0MykgPSAtMi4wMiwgcCA9IC4wNSAoLjA0NikKICAgIC0gICBTVCBQaWNrdXBzLCB0KDE0MykgPSAtMi45NiwgcCA9IC4wMDQKICAgIC0gICBORU86IE4sIHQoMTQzKSA9IDIuMzksIHAgPSAuMDIKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBTVF93ZWVrbHlfdG90X2hvdXJzICsgU1RfZGFpbHlfcGlja3VwcyArIFNUX2RhaWx5X25vdCArIEJJU19zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQoKIyBzdW1tYXJ5KGxtKGRhdGEgPSBNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2UgKyBTVF9kYWlseV9waWNrdXBzICsgTkVPX05fc3VtKSkKYGBgCgojIyMjIyBTQUQ6IEVtb3Rpb25hbCBBdHRhY2htZW50CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTcsIDE0MykgPSAxNC4wMywgcCBcPCAuMDAxLCBSMiA9IC42MwoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBCSVMsIHQoMTQzKSA9IC0yLjExLCBwID0gLjA0CiAgICAtICAgREFTUzogQSwgdCgxNDMpID0gMy4xMSwgcCA9IC4wMDIKICAgIC0gICBORU86IEUsIHQoMTQzKSA9IDIuNTQsIHAgPSAuMDEKICAgIC0gICBORU86IE4sIHQoMTQzKSA9IDMuMjUsIHAgPSAuMDAyCiAgICAtICAgU1NFSVQsIHQoMTQzKSA9IDQuNzQsIHAgXDwgLjAwMQogICAgLSAgIFNSUywgdCgxNDMpID0gLTIuOTMsIHAgPSAuMDA0CgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9lYV9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBTVF93ZWVrbHlfdG90X2hvdXJzICsgU1RfZGFpbHlfcGlja3VwcyArIFNUX2RhaWx5X25vdCArIEJJU19zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQoKIyBzdW1tYXJ5KGxtKGRhdGEgPSBNdHVya19kYXRhICU+JSBmaWx0ZXIoU1QgPT0gImhhZCBTVCIpLCBmb3JtdWxhID0gU0FEX2VhX3N1bSB+IEJJU19zdW0gKyBEQVNTX0Ffc3VtICsgTkVPX0Vfc3VtICsgTkVPX05fc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCmBgYAoKIyMjIyMgU0FEOiBEaXN0cmFjdGliaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNywgMTQzKSA9IDE4LjExLCBwIFw8IC4wMDEsIFIyID0gLjY4CgotICAgc2lnIHByZWRpY3RvcnM6CgogICAgLSAgIERBU1M6IEEsIHQoMTQzKSA9IDMuMjAsIHAgPSAuMDAyCiAgICAtICAgTkVPOiBFLCB0KDE0MykgPSAxLjk0LCBwID0gLjA1IChhbG1vc3Qgc2lnLCAuMDU1KQogICAgLSAgIFNTRUlULCB0KDE0MykgPSAyLjI0LCBwID0gLjAzCiAgICAtICAgU1JTLCB0KDE0MykgPSAtNC42NiwgcCBcPCAuMDAxCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSAlPiUgZmlsdGVyKFNUID09ICJoYWQgU1QiKSwgZm9ybXVsYSA9IFNBRF9kaXN0X3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIFNUX3dlZWtseV90b3RfaG91cnMgKyBTVF9kYWlseV9waWNrdXBzICsgU1RfZGFpbHlfbm90ICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEgJT4lIGZpbHRlcihTVCA9PSAiaGFkIFNUIiksIGZvcm11bGEgPSBTQURfZGlzdF9zdW0gfiBORU9fTl9zdW0gKyBTU0VJVF9zdW0pKQpgYGAKCiMgRXhwbG9yYXRvcnkgQW5hbHlzZXM6IEluY2x1ZGluZyBBZ2Ugb2YgRmlyc3QgU21hcnRwaG9uZSBQcmVkaWN0b3IKCiMjIEFsbCBEYXRhCgojIyMgU3R1ZHkgMTogU09OQQoKIyMjIyBOTVBRCgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiROTVBRID0gYWdlICsgQklTICsgREFTUzogRCArIERBU1M6IEEgKyBEQVNTOiBTICsgTkVPOiBPICsgTkVPOiBDICsgTkVPOiBFICsgTkVPOiBBICsgTkVPOiBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNCwgMjI1KSA9IDIuNzgsIHAgXDwgLjAwMSwgUjIgPSAuMTUKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgTkVPOiBPLCB0KDIyNSkgPSAtMi4xOSwgcCA9IC4wMwogICAgLSAgIE5FTzogTiwgdCgyMjUpID0gMy4xMCwgcCA9IC4wMDIKICAgIC0gICBTU0VJVCwgdCgyMjUpID0gMi41MiwgcCA9IC4wMQogICAgLSAgIFNSUywgdCgyMjUpID0gLTIuMjcsIHAgPSAuMDIKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEsIGZvcm11bGEgPSBOTVBRX3N1bSB+IGFnZSArIEJJU19zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQoKIyBzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEsIGZvcm11bGEgPSBOTVBRX3N1bSB+IE5FT19PX3N1bSArIE5FT19OX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQpgYGAKCiMjIyMgU0FEIC0gT3ZlcmFsbAoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE0LCAyMjUpID0gMy43NCwgcCBcPCAuMDAxLCBSMiA9IC4xOQoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBORU86IEEsIHQoMjI1KSA9IC0yLjMyLCBwID0gLjAyCiAgICAtICAgTkVPOiBOLCB0KDIyNSkgPSAyLjY1LCBwID0gLjAwOQogICAgLSAgIFNTRUlULCB0KDIyNSkgPSA0LjM0LCBwIFw8IC4wMDEKICAgIC0gICBTUlMsIHQoMjI1KSA9IC0yLjI3LCBwID0gLjAyCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX3N1bSB+IGFnZSArIGFnZV9maXJzdF9waG9uZSArIEJJU19zdW0gKyBEQVNTX0Rfc3VtICsgREFTU19BX3N1bSArIERBU1NfU19zdW0gKyBORU9fT19zdW0gKyBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fQV9zdW0gKyBORU9fTl9zdW0gKyBSU0VTX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQoKIyBzdW1tYXJ5KGxtKGRhdGEgPSBTT05BX2RhdGEsIGZvcm11bGEgPSBTQURfc3VtIH4gTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCmBgYAoKIyMjIyBTQUQgLSBEZXBlbmRlbmN5CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTQsIDIyNSkgPSAyLjM5LCBwID0gLjAwNCwgUjIgPSAuMTMKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgTkVPOiBPLCB0KDIyNSkgPSAtMi45MywgcCA9IC4wMDQKICAgIC0gICBORU86IE4sIHQoMjI1KSA9IDEuOTQsIHAgPSAuMDUgKGFsbW9zdCBzaWcpCiAgICAtICAgU1NFSVQsIHQoMjI1KSA9IDMuMDMsIHAgPSAuMDAzCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2RlcF9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2RlcF9zdW0gfiAgTkVPX09fc3VtICsgTkVPX05fc3VtICsgU1NFSVRfc3VtKSkKYGBgCgojIyMjIFNBRCAtIEFjY2Vzc2liaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNCwgMjI1KSA9IDMuMjUsIHAgXDwgLjAwMSwgUjIgPSAuMTcKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgQWdlIHBob25lLCB0KDIyNSkgPSAtMi4xMywgcCA9IC4wMwogICAgLSAgIE5FTzogTiwgdCgyMjUpID0gMy4wMCwgcCA9IC4wMDMKICAgIC0gICBTU0VJVCwgdCgyMjUpID0gMy40NywgcCBcPCAuMDAxCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2FjY2Vzc19zdW0gfiBhZ2VfZmlyc3RfcGhvbmUgKyBORU9fTl9zdW0gKyBTU0VJVF9zdW0pKQpgYGAKCiMjIyMgU0FEIC0gRW1vdGlvbmFsIEF0dGFjaGVtZW50CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTQsIDIyNSkgPSAzLjMyLCBwIFw8IC4wMDEsIFIyID0gLjE3CgotICAgc2lnIHByZWRpY3RvcnM6CgogICAgLSAgIERBU1M6IFMsIHQoMjI1KSA9IDIuMjgsIHAgPSAuMDIKICAgIC0gICBORU86IEEsIHQoMjI1KSA9IC0yLjg1LCBwID0gLjAwNQogICAgLSAgIFNTRUlULCB0KDIyNSkgPSAzLjIzLCBwID0gLjAwMQoKYGBge3J9CiMgcnVuIGxtICsgZ2l2ZSBzdW1tYXJ5CnN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSwgZm9ybXVsYSA9IFNBRF9lYV9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2VhX3N1bSB+IERBU1NfU19zdW0gKyBORU9fQV9zdW0gKyBTU0VJVF9zdW0pKQpgYGAKCiMjIyMgU0FEIC0gRGlzdHJhY3RpYmlsaXR5CgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTQsIDIyNSkgPSAzLjE4LCBwIFw8IC4wMDEsIFIyID0gLjE3CgotICAgc2lnIHByZWRpY3RvcnM6CgogICAgLSAgIFNTRUlULCB0KDIyNSkgPSAzLjg1LCBwIFw8IC4wMDEKICAgIC0gICBTUlMsIHQoMjI1KSA9IC0yLjIzLCBwID0gLjAzCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gU09OQV9kYXRhLCBmb3JtdWxhID0gU0FEX2Rpc3Rfc3VtIH4gYWdlICsgYWdlX2ZpcnN0X3Bob25lICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IFNPTkFfZGF0YSwgZm9ybXVsYSA9IFNBRF9kaXN0X3N1bSB+IFNTRUlUX3N1bSArIFNSU19zdW0pKQpgYGAKCiMjIyBTdHVkeSAyOiBNdHVyawoKIyMjIyBOTVBRCgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiROTVBRID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE0LCA0OTApID0gMjkuNjcsIHAgXDwgLjAwMSwgUjIgPSAuNDYKCi0gICBzaWcgcHJlZGljdG9yczogPSBBZ2UsIHQoNDkwKSA9IC0yLjM1LCBwID0gLjAyCgogICAgLSAgIERBU1M6IEEsIHQoNDkwKSA9IDEuOTYsIHAgPSAuMDUgKGFsbW9zdCBzaWcpCiAgICAtICAgTkVPOiBDLCB0KDQ5MCkgPSAzLjYxLCBwIFw8IC4wMDEKICAgIC0gICBORU86IEUsIHQoNDkwKSA9IDMuMTQsIHAgPSAuMDAyCiAgICAtICAgTkVPOiBOLCB0KDQ5MCkgPSA0LjA2LCBwIFw8IC4wMDEKICAgIC0gICBSU0VTLCB0KDQ5MCkgPSAtMS45NCwgcCA9IC4wNSAoYWxtb3N0IHNpZykKICAgIC0gICBTU0VJVCwgdCg0OTApID0gNS40OSwgcCBcPCAuMDAxCiAgICAtICAgU1JTLCB0KDQ5MCkgPSAtMy4zMCwgcCA9IC4wMDEKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBNdHVya19kYXRhLCBmb3JtdWxhID0gTk1QUV9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IE5NUFFfc3VtIH4gYWdlICsgREFTU19BX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCmBgYAoKIyMjIyBTQUQgLSBPdmVyYWxsCgpUaGlzIHJlZ3Jlc3Npb24gdXNlZCB0aGUgZm9sbG93aW5nIGZvcm11bGE6CiRTQUQgPSBhZ2UgKyBhZ2UgZmlyc3QgcGhvbmUgKyBCSVMgKyBEICsgQSArIFMgKyBPICsgQyArIEUgKyBBICsgTiArIFJTRVMgKyBTU0VJVCArIFNSUyQKClJlc3VsdHMgaW5kaWNhdGUgdGhhdDoKCi0gICBvdmVyIGFsbCBtb2RlbCB3YXMgc2lnIEYoMTQsIDQ5MCkgPSA0MC40MiwgcCBcPCAuMDAxLCBSMiA9IC41NAoKLSAgIHNpZyBwcmVkaWN0b3JzOgoKICAgIC0gICBBZ2UsIHQoNDkwKSA9IC0yLjY2LCBwID0gLjAwOAogICAgLSAgIERBU1M6IEEsIHQoNDkwKSA9IDMuMTIsIHAgPSAuMDAyCiAgICAtICAgTkVPOiBPLCB0KDQ5MCkgPSAtMi4xNywgcCA9IC4wMwogICAgLSAgIE5FTzogQywgdCg0OTApID0gMi43NiwgcCA9IC4wMDYKICAgIC0gICBORU86IEUsIHQoNDkwKSA9IDMuMzEsIHAgPSAuMDAxCiAgICAtICAgTkVPOiBOLCB0KDQ5MCkgPSAzLjgzLCBwIFw8IC4wMDEKICAgIC0gICBTU0VJVCwgdCg0OTApID0gNy4wMywgcCBcPCAuMDAxCiAgICAtICAgU1JTLCB0KDQ5MCkgPSAtNi4xMiwgcCA9IC4wMgoKYGBge3J9CiMgcnVuIGxtICsgZ2l2ZSBzdW1tYXJ5CnN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEsIGZvcm11bGEgPSBTQURfc3VtIH4gYWdlICsgYWdlX2ZpcnN0X3Bob25lICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEsIGZvcm11bGEgPSBTQURfc3VtIH4gYWdlICsgREFTU19BX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19OX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQpgYGAKCiMjIyMgU0FEIC0gRGVwZW5kZW5jeQoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE0LCA0OTApID0gMjIuMzYsIHAgXDwgLjAwMSwgUjIgPSAuMzkKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgQWdlLCB0KDQ5MCkgPSAtMi4xOCwgcCA9IC4wMwogICAgLSAgIERBU1M6IEEsIHQoNDkwKSA9IDIuNTMsIHAgPSAuMDAyCiAgICAtICAgTkVPOiBPLCB0KDQ5MCkgPSAtMi4xMywgcCA9IC4wMwogICAgLSAgIE5FTzogQywgdCg0OTApID0gMi43MSwgcCA9IC4wMDcKICAgIC0gICBORU86IEUsIHQoNDkwKSA9IDIuNjQsIHAgPSAuMDA5CiAgICAtICAgTkVPOiBOLCB0KDQ5MCkgPSAzLjA2LCBwID0gLjAwMgogICAgLSAgIFNTRUlULCB0KDQ5MCkgPSAzLjk5LCBwIFw8IC4wMDEKICAgIC0gICBTUlMsIHQoNDkwKSA9IC0zLjc4LCBwIFw8IC4wMDEKCmBgYHtyfQojIHJ1biBsbSArIGdpdmUgc3VtbWFyeQpzdW1tYXJ5KGxtKGRhdGEgPSBNdHVya19kYXRhLCBmb3JtdWxhID0gU0FEX2RlcF9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9kZXBfc3VtIH4gYWdlICsgREFTU19BX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19OX3N1bSArIFNTRUlUX3N1bSArIFNSU19zdW0pKQpgYGAKCiMjIyMgU0FEIC0gQWNjZXNzaWJpbGl0eQoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE0LCA0OTApID0gMTQuMjUsIHAgXDwgLjAwMSwgUjIgPSAuMjkKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgTkVPOiBDLCB0KDQ5MCkgPSA0LjAwLCBwIFw8IC4wMDEKICAgIC0gICBORU86IEUsIHQoNDkwKSA9IDIuMTMsIHAgPSAuMDMKICAgIC0gICBORU86IE4sIHQoNDkwKSA9IDMuNTUsIHAgXDwgLjAwMQogICAgLSAgIFNTRUlULCB0KDQ5MCkgPSAzLjU5LCBwIFw8IC4wMDEKICAgIC0gICBTUlMsIHQoNDkwKSA9IC0yLjI0LCBwID0gLjAzCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9hY2Nlc3Nfc3VtIH4gYWdlICsgYWdlX2ZpcnN0X3Bob25lICsgQklTX3N1bSArIERBU1NfRF9zdW0gKyBEQVNTX0Ffc3VtICsgREFTU19TX3N1bSArIE5FT19PX3N1bSArIE5FT19DX3N1bSArIE5FT19FX3N1bSArIE5FT19BX3N1bSArIE5FT19OX3N1bSArIFJTRVNfc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCgojIHN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEsIGZvcm11bGEgPSBTQURfYWNjZXNzX3N1bSB+ICBORU9fQ19zdW0gKyBORU9fRV9zdW0gKyBORU9fTl9zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKYGBgCgojIyMjIFNBRCAtIEVtb3Rpb25hbCBBdHRhY2hlbWVudAoKVGhpcyByZWdyZXNzaW9uIHVzZWQgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgokU0FEID0gYWdlICsgYWdlIGZpcnN0IHBob25lICsgQklTICsgRCArIEEgKyBTICsgTyArIEMgKyBFICsgQSArIE4gKyBSU0VTICsgU1NFSVQgKyBTUlMkCgpSZXN1bHRzIGluZGljYXRlIHRoYXQ6CgotICAgb3ZlciBhbGwgbW9kZWwgd2FzIHNpZyBGKDE0LCA0OTApID0gMzkuOTMsIHAgXDwgLjAwMSwgUjIgPSAuNTMKCi0gICBzaWcgcHJlZGljdG9yczoKCiAgICAtICAgQWdlLCB0KDQ5MCkgPSAtMi43NiwgcCA9IC4wMQogICAgLSAgIERBU1M6IEEsIHQoNDkwKSA9IDMuNzYsIHAgXDwgLjAwMQogICAgLSAgIE5FTzogTywgdCg0OTApID0gLTIuMjUsIHAgPSAuMDMKICAgIC0gICBORU86IEUsIHQoNDkwKSA9IDMuNTQsIHAgXDwgLjAwMQogICAgLSAgIE5FTzogTiwgdCg0OTApID0gMi44MiwgcCA9IC4wMDUKICAgIC0gICBTU0VJVCwgdCg0OTApID0gOC40NCwgcCBcPCAuMDAxCiAgICAtICAgU1JTLCB0KDQ5MCkgPSAtNi40NiwgcCBcPCAuMDAxCgpgYGB7cn0KIyBydW4gbG0gKyBnaXZlIHN1bW1hcnkKc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9lYV9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9lYV9zdW0gfiBhZ2UgKyBEQVNTX0Ffc3VtICsgTkVPX09fc3VtICsgTkVPX0Vfc3VtICsgTkVPX05fc3VtICsgU1NFSVRfc3VtICsgU1JTX3N1bSkpCmBgYAoKIyMjIyBTQUQgLSBEaXN0cmFjdGliaWxpdHkKClRoaXMgcmVncmVzc2lvbiB1c2VkIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKJFNBRCA9IGFnZSArIGFnZSBmaXJzdCBwaG9uZSArIEJJUyArIEQgKyBBICsgUyArIE8gKyBDICsgRSArIEEgKyBOICsgUlNFUyArIFNTRUlUICsgU1JTJAoKUmVzdWx0cyBpbmRpY2F0ZSB0aGF0OgoKLSAgIG92ZXIgYWxsIG1vZGVsIHdhcyBzaWcgRigxNCwgNDkwKSA9IDU2LjM3LCBwIFw8IC4wMDEsIFIyID0gLjYyCgotICAgc2lnIHByZWRpY3RvcnM6CgogICAgLSAgIEFnZSwgdCg0OTApID0gLTIuMDMsIHAgPSAuMDQKICAgIC0gICBEQVNTOiBBLCB0KDQ5MCkgPSAzLjM3LCBwIFw8IC4wMDEKICAgIC0gICBORU86IE8sIHQoNDkwKSA9IC0yLjk1LCBwID0gLjAwMwogICAgLSAgIE5FTzogRSwgdCg0OTApID0gMy4zMywgcCBcPCAuMDAxCiAgICAtICAgU1NFSVQsIHQoNDkwKSA9IDYuNjgsIHAgXDwgLjAwMQogICAgLSAgIFNSUywgdCg0OTApID0gLTkuMzMsIHAgXDwgLjAwMQoKYGBge3J9CiMgcnVuIGxtICsgZ2l2ZSBzdW1tYXJ5CnN1bW1hcnkobG0oZGF0YSA9IE10dXJrX2RhdGEsIGZvcm11bGEgPSBTQURfZGlzdF9zdW0gfiBhZ2UgKyBhZ2VfZmlyc3RfcGhvbmUgKyBCSVNfc3VtICsgREFTU19EX3N1bSArIERBU1NfQV9zdW0gKyBEQVNTX1Nfc3VtICsgTkVPX09fc3VtICsgTkVPX0Nfc3VtICsgTkVPX0Vfc3VtICsgTkVPX0Ffc3VtICsgTkVPX05fc3VtICsgUlNFU19zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKCiMgc3VtbWFyeShsbShkYXRhID0gTXR1cmtfZGF0YSwgZm9ybXVsYSA9IFNBRF9kaXN0X3N1bSB+IGFnZSArIERBU1NfQV9zdW0gKyBORU9fT19zdW0gKyBORU9fRV9zdW0gKyBTU0VJVF9zdW0gKyBTUlNfc3VtKSkKYGBgCg==