Michelle Shero, November 18, 2023

Pup01

PTT 238272

Look at the ‘Histos’ File

setwd("~/Desktop/grey seal pup dive behavior/238272")
histos<- read.csv("238272-Histos.csv")
attach(histos)
The following objects are masked from histos (pos = 3):

    BadTherm, Bin1, Bin10, Bin11, Bin12, Bin13, Bin14, Bin15, Bin16, Bin17, Bin18, Bin19, Bin2, Bin20, Bin21, Bin22, Bin23, Bin24, Bin25, Bin26, Bin27, Bin28, Bin29,
    Bin3, Bin30, Bin31, Bin32, Bin33, Bin34, Bin35, Bin36, Bin37, Bin38, Bin39, Bin4, Bin40, Bin41, Bin42, Bin43, Bin44, Bin45, Bin46, Bin47, Bin48, Bin49, Bin5,
    Bin50, Bin51, Bin52, Bin53, Bin54, Bin55, Bin56, Bin57, Bin58, Bin59, Bin6, Bin60, Bin61, Bin62, Bin63, Bin64, Bin65, Bin66, Bin67, Bin68, Bin69, Bin7, Bin70,
    Bin71, Bin72, Bin8, Bin9, Count, Date, DeployID, DepthSensor, DOY, HistType, Hour, Instr, Latitude, LocationQuality, Longitude, NumBins, Ptt, Source, Sum,
    Time.Offset

The following objects are masked from histos (pos = 4):

    BadTherm, Bin1, Bin10, Bin11, Bin12, Bin13, Bin14, Bin15, Bin16, Bin17, Bin18, Bin19, Bin2, Bin20, Bin21, Bin22, Bin23, Bin24, Bin25, Bin26, Bin27, Bin28, Bin29,
    Bin3, Bin30, Bin31, Bin32, Bin33, Bin34, Bin35, Bin36, Bin37, Bin38, Bin39, Bin4, Bin40, Bin41, Bin42, Bin43, Bin44, Bin45, Bin46, Bin47, Bin48, Bin49, Bin5,
    Bin50, Bin51, Bin52, Bin53, Bin54, Bin55, Bin56, Bin57, Bin58, Bin59, Bin6, Bin60, Bin61, Bin62, Bin63, Bin64, Bin65, Bin66, Bin67, Bin68, Bin69, Bin7, Bin70,
    Bin71, Bin72, Bin8, Bin9, Count, Date, DeployID, DepthSensor, DOY, HistType, Hour, Instr, Latitude, LocationQuality, Longitude, NumBins, Ptt, Source, Sum,
    Time.Offset

The following objects are masked from histos (pos = 32):

    BadTherm, Bin1, Bin10, Bin11, Bin12, Bin13, Bin14, Bin15, Bin16, Bin17, Bin18, Bin19, Bin2, Bin20, Bin21, Bin22, Bin23, Bin24, Bin25, Bin26, Bin27, Bin28, Bin29,
    Bin3, Bin30, Bin31, Bin32, Bin33, Bin34, Bin35, Bin36, Bin37, Bin38, Bin39, Bin4, Bin40, Bin41, Bin42, Bin43, Bin44, Bin45, Bin46, Bin47, Bin48, Bin49, Bin5,
    Bin50, Bin51, Bin52, Bin53, Bin54, Bin55, Bin56, Bin57, Bin58, Bin59, Bin6, Bin60, Bin61, Bin62, Bin63, Bin64, Bin65, Bin66, Bin67, Bin68, Bin69, Bin7, Bin70,
    Bin71, Bin72, Bin8, Bin9, Count, Date, DeployID, DepthSensor, DOY, HistType, Hour, Instr, Latitude, LocationQuality, Longitude, NumBins, Ptt, Source, Sum,
    Time.Offset

The following objects are masked from histos (pos = 33):

    BadTherm, Bin1, Bin10, Bin11, Bin12, Bin13, Bin14, Bin15, Bin16, Bin17, Bin18, Bin19, Bin2, Bin20, Bin21, Bin22, Bin23, Bin24, Bin25, Bin26, Bin27, Bin28, Bin29,
    Bin3, Bin30, Bin31, Bin32, Bin33, Bin34, Bin35, Bin36, Bin37, Bin38, Bin39, Bin4, Bin40, Bin41, Bin42, Bin43, Bin44, Bin45, Bin46, Bin47, Bin48, Bin49, Bin5,
    Bin50, Bin51, Bin52, Bin53, Bin54, Bin55, Bin56, Bin57, Bin58, Bin59, Bin6, Bin60, Bin61, Bin62, Bin63, Bin64, Bin65, Bin66, Bin67, Bin68, Bin69, Bin7, Bin70,
    Bin71, Bin72, Bin8, Bin9, Count, Date, DeployID, DepthSensor, HistType, Instr, Latitude, LocationQuality, Longitude, NumBins, Ptt, Source, Sum, Time.Offset
head(histos)
# Load libraries
library(mgcv)
library(gamm4)
library(pspline)
library(suncalc)
library(lmerTest)
library(MuMIn)
library(parallel)
library(mgcViz)
library(rgl)
library(feather)
library(data.table)
library(car)
library(ggplot2)
library(grid)
library(animation)
library(itsadug)
library(visreg)
library(dplyr)
library(viridis)
library(hrbrthemes)

TAD

Reorganize data

TAD.1<- c(Bin1[which(HistType == "TAD")], Bin2[which(HistType == "TAD")], Bin3[which(HistType == "TAD")], Bin4[which(HistType == "TAD")], Bin5[which(HistType == "TAD")],
                 Bin6[which(HistType == "TAD")], Bin7[which(HistType == "TAD")], Bin8[which(HistType == "TAD")], Bin9[which(HistType == "TAD")], Bin10[which(HistType == "TAD")],
                 Bin11[which(HistType == "TAD")], Bin12[which(HistType == "TAD")], Bin13[which(HistType == "TAD")])
TAD.2<-TAD.1/100
n<-length(Bin1[which(HistType == "TAD")])
Bin<- c(replicate(n, Bin1[which(HistType == "TADLIMITS")]), replicate(n, Bin2[which(HistType == "TADLIMITS")]), replicate(n, Bin3[which(HistType == "TADLIMITS")]),
                  replicate(n, Bin4[which(HistType == "TADLIMITS")]), replicate(n, Bin5[which(HistType == "TADLIMITS")]), replicate(n, Bin6[which(HistType == "TADLIMITS")]),
                  replicate(n, Bin7[which(HistType == "TADLIMITS")]), replicate(n, Bin8[which(HistType == "TADLIMITS")]), replicate(n, Bin9[which(HistType == "TADLIMITS")]),
                  replicate(n, Bin10[which(HistType == "TADLIMITS")]), replicate(n, Bin11[which(HistType == "TADLIMITS")]), replicate(n, Bin12[which(HistType == "TADLIMITS")]),
                  replicate(n, Bin13[which(HistType == "TADLIMITS")]))
Day<- c(replicate(13, DOY[which(HistType == "TAD")]))
Hour.1<- c(replicate(13, Hour[which(HistType == "TAD")]))

df.TAD<- data.frame(TAD.2, Bin, Day, Hour.1)
head(df.TAD)

Plotting TAD across time by bin

x<- df.TAD$Day[which(Hour.1 == 0)]
y<- df.TAD$TAD.2[which(Hour.1 == 0)]
f<- df.TAD$Bin[which(Hour.1 == 0)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_area(alpha=1) +
  scale_fill_manual(values = c("purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Proportion") + ggtitle("TAD Bins, Hour 0") + labs(fill = "Bin")


x<- df.TAD$Day[which(Hour.1 == 6)]
y<- df.TAD$TAD.2[which(Hour.1 == 6)]
f<- df.TAD$Bin[which(Hour.1 == 6)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_area(alpha=1) +
  scale_fill_manual(values = c("purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Proportion") + ggtitle("TAD Bins, Hour 6") + labs(fill = "Bin")


x<- df.TAD$Day[which(Hour.1 == 12)]
y<- df.TAD$TAD.2[which(Hour.1 == 12)]
f<- df.TAD$Bin[which(Hour.1 == 12)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_area(alpha=1) +
  scale_fill_manual(values = c("purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Proportion") + ggtitle("TAD Bins, Hour 12") + labs(fill = "Bin")


x<- df.TAD$Day[which(Hour.1 == 18)]
y<- df.TAD$TAD.2[which(Hour.1 == 18)]
f<- df.TAD$Bin[which(Hour.1 == 18)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_area(alpha=1) +
  scale_fill_manual(values = c("purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Proportion") + ggtitle("TAD Bins, Hour 18") + labs(fill = "Bin")

Number of Dives by Hour Block

plot(Sum[which(HistType == "DiveDepth" & Hour == "0")] ~ DOY[which(HistType == "DiveDepth" & Hour == "0")], type = "b", pch = 16, col = "navy", ylim = c(0,300),
     xlab = "Day of Year", ylab = "Number of Dives")
lines(Sum[which(HistType == "DiveDepth" & Hour == "6")] ~ DOY[which(HistType == "DiveDepth" & Hour == "6")], type = "b", pch = 16, col = "blue")
lines(Sum[which(HistType == "DiveDepth" & Hour == "12")] ~ DOY[which(HistType == "DiveDepth" & Hour == "12")], type = "b", pch = 16, col = "turquoise3")
lines(Sum[which(HistType == "DiveDepth" & Hour == "18")] ~ DOY[which(HistType == "DiveDepth" & Hour == "18")], type = "b", pch = 16, col = "green")
legend(50, 300, legend=c("Hour 0","Hour 6", "Hour 12","Hour 18"),
       col=c("navy","blue","turquoise3","green"), lty=1, cex=0.8)

Number of Dives - Summed By Day

agg1<- aggregate(Sum[which(HistType == "DiveDepth")], list(DOY[which(HistType == "DiveDepth")]), FUN = sum)
plot(agg1$x ~ agg1$Group.1, type = "b", pch = 16, col = "blue", ylim = c(0,900),
     xlab = "Day of Year", ylab = "Number of Dives")

Depth

Reorganize data

Dep<- c(Bin1[which(HistType == "DiveDepth")], Bin2[which(HistType == "DiveDepth")], Bin3[which(HistType == "DiveDepth")], Bin4[which(HistType == "DiveDepth")], Bin5[which(HistType == "DiveDepth")], Bin6[which(HistType == "DiveDepth")], Bin7[which(HistType == "DiveDepth")], Bin8[which(HistType == "DiveDepth")], Bin9[which(HistType == "DiveDepth")], Bin10[which(HistType == "DiveDepth")],  Bin11[which(HistType == "DiveDepth")], Bin12[which(HistType == "DiveDepth")], Bin13[which(HistType == "DiveDepth")], Bin14[which(HistType == "DiveDepth")])
n<-length(Bin1[which(HistType == "DiveDepth")])
Bin<- c(replicate(n, Bin1[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin2[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin3[which(HistType == "DiveDepthLIMITS")]),
                  replicate(n, Bin4[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin5[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin6[which(HistType == "DiveDepthLIMITS")]),
                  replicate(n, Bin7[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin8[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin9[which(HistType == "DiveDepthLIMITS")]),
                  replicate(n, Bin10[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin11[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin12[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin13[which(HistType == "DiveDepthLIMITS")]), replicate(n, Bin14[which(HistType == "DiveDepthLIMITS")]))
Day<- c(replicate(14, DOY[which(HistType == "DiveDepth")]))
Hour.1<- c(replicate(14, Hour[which(HistType == "DiveDepth")]))

df.Dep<- data.frame(Dep, Bin, Day, Hour.1)
head(df.Dep)

Plotting Depth across time by bin

x<- df.Dep$Day[which(Hour.1 == 0)]
y<- df.Dep$Dep[which(Hour.1 == 0)]
f<- df.Dep$Bin[which(Hour.1 == 0)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Depth Bins, Hour 0") + labs(fill = "Bin")


x<- df.Dep$Day[which(Hour.1 == 6)]
y<- df.Dep$Dep[which(Hour.1 == 6)]
f<- df.Dep$Bin[which(Hour.1 == 6)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Depth Bins, Hour 6") + labs(fill = "Bin")


x<- df.Dep$Day[which(Hour.1 == 12)]
y<- df.Dep$Dep[which(Hour.1 == 12)]
f<- df.Dep$Bin[which(Hour.1 == 12)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Depth Bins, Hour 12") + labs(fill = "Bin")


x<- df.Dep$Day[which(Hour.1 == 18)]
y<- df.Dep$Dep[which(Hour.1 == 18)]
f<- df.Dep$Bin[which(Hour.1 == 18)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Depth Bins, Hour 18") + labs(fill = "Bin")

Duration

Reorganize data

Dur<- c(Bin1[which(HistType == "DiveDuration")], Bin2[which(HistType == "DiveDuration")], Bin3[which(HistType == "DiveDuration")], Bin4[which(HistType == "DiveDuration")], Bin5[which(HistType == "DiveDuration")], Bin6[which(HistType == "DiveDuration")], Bin7[which(HistType == "DiveDuration")], Bin8[which(HistType == "DiveDuration")], Bin9[which(HistType == "DiveDuration")], Bin10[which(HistType == "DiveDuration")],  Bin11[which(HistType == "DiveDuration")], Bin12[which(HistType == "DiveDuration")], Bin13[which(HistType == "DiveDuration")], Bin14[which(HistType == "DiveDuration")])
n<-length(Bin1[which(HistType == "DiveDuration")])
Bin<- c(replicate(n, Bin1[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin2[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin3[which(HistType == "DiveDurationLIMITS")]),
                  replicate(n, Bin4[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin5[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin6[which(HistType == "DiveDurationLIMITS")]),replicate(n, Bin7[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin8[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin9[which(HistType == "DiveDurationLIMITS")]),  replicate(n, Bin10[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin11[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin12[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin13[which(HistType == "DiveDurationLIMITS")]), replicate(n, Bin14[which(HistType == "DiveDurationLIMITS")]))
Day<- c(replicate(14, DOY[which(HistType == "DiveDuration")]))
Hour.1<- c(replicate(14, Hour[which(HistType == "DiveDuration")]))

df.Dur<- data.frame(Dur, Bin, Day, Hour.1)
head(df.Dur)

Plotting Duration across time by bin

x<- df.Dur$Day[which(Hour.1 == 0)]
y<- df.Dur$Dur[which(Hour.1 == 0)]
f<- df.Dur$Bin[which(Hour.1 == 0)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Duration Bins, Hour 0") + labs(fill = "Bin")


x<- df.Dur$Day[which(Hour.1 == 6)]
y<- df.Dur$Dur[which(Hour.1 == 6)]
f<- df.Dur$Bin[which(Hour.1 == 6)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Duration Bins, Hour 6") + labs(fill = "Bin")


x<- df.Dur$Day[which(Hour.1 == 12)]
y<- df.Dur$Dur[which(Hour.1 == 12)]
f<- df.Dur$Bin[which(Hour.1 == 12)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Duration Bins, Hour 12") + labs(fill = "Bin")


x<- df.Dur$Day[which(Hour.1 == 18)]
y<- df.Dur$Dur[which(Hour.1 == 18)]
f<- df.Dur$Bin[which(Hour.1 == 18)]
df1<- data.frame(x,y,f)
ggplot(df1, aes(x=x, y=y, fill=as.factor(f))) + 
  geom_bar(position = "stack", stat = "identity") +
  scale_fill_manual(values = c("purple4","purple","navy","blue","turquoise3","cyan","darkgreen","green","darkgoldenrod","yellow","sienna1","red","red4","black")) + theme_linedraw()+
 theme(axis.text=element_text(size=12)) + xlab("Day of Year") + ylab("Count") + ggtitle("Duration Bins, Hour 18") + labs(fill = "Bin")

Surface Time

Reorganize data

Surf<- c(Bin1[which(HistType == "Percent")], Bin2[which(HistType == "Percent")], Bin3[which(HistType == "Percent")], Bin4[which(HistType == "Percent")], Bin5[which(HistType == "Percent")], Bin6[which(HistType == "Percent")], Bin7[which(HistType == "Percent")], Bin8[which(HistType == "Percent")], Bin9[which(HistType == "Percent")], Bin10[which(HistType == "Percent")],  Bin11[which(HistType == "Percent")], Bin12[which(HistType == "Percent")], Bin13[which(HistType == "Percent")], Bin14[which(HistType == "Percent")], Bin15[which(HistType == "Percent")], Bin16[which(HistType == "Percent")], Bin17[which(HistType == "Percent")], Bin18[which(HistType == "Percent")], Bin19[which(HistType == "Percent")], Bin20[which(HistType == "Percent")], Bin21[which(HistType == "Percent")], Bin22[which(HistType == "Percent")], Bin23[which(HistType == "Percent")], Bin24[which(HistType == "Percent")])

n<-length(Bin1[which(HistType == "Percent")])
Hour.1<- c(replicate(n, 0),replicate(n, 1),replicate(n, 2),replicate(n, 3),replicate(n, 4),replicate(n, 5),replicate(n, 6),replicate(n, 7),replicate(n, 8),replicate(n, 9),replicate(n, 10),replicate(n, 11),replicate(n, 12),replicate(n, 13),replicate(n, 14),replicate(n, 15),replicate(n, 16),replicate(n, 17),replicate(n, 18),replicate(n, 19),replicate(n, 20),replicate(n, 21),replicate(n, 22),replicate(n, 23))
Day<- c(replicate(24, DOY[which(HistType == "Percent")]))

df.Surf<- data.frame(Surf, Hour.1, Day)
head(df.Surf)

Plotting %Surface by Hour and Day

p <-ggplot(df.Surf,aes(Day,Hour.1,fill=Surf))+
  geom_tile(color= "grey",size=0.1) + 
  scale_fill_viridis(name="Surface (%)",option ="turbo", limits = c(0, 100), oob = scales::squish)
p

Look at the ‘Behavior’ File

behav<- read.csv("238272-Behavior.csv")
attach(behav)
The following objects are masked from behav (pos = 3):

    Count, Deep, DeployID, DepthMax, DepthMin, DepthSensor, DurationMax, DurationMin, End, Instr, Number, Ptt, Shallow, Shape, Source, Start, What

The following objects are masked from histos (pos = 4):

    Count, DeployID, DepthSensor, DOY, Instr, Ptt, Source

The following objects are masked from histos (pos = 5):

    Count, DeployID, DepthSensor, DOY, Instr, Ptt, Source

The following objects are masked from histos (pos = 6):

    Count, DeployID, DepthSensor, DOY, Instr, Ptt, Source

The following objects are masked from histos (pos = 34):

    Count, DeployID, DepthSensor, DOY, Instr, Ptt, Source

The following objects are masked from histos (pos = 35):

    Count, DeployID, DepthSensor, Instr, Ptt, Source
head(behav)

Depth over deployment

boxplot(DepthMin[which(What == "Dive")] ~ DOY[which(What == "Dive")], main = "Min Depth", ylab = "Depth (m)", xlab = "Day of Year")

boxplot(DepthMax[which(What == "Dive")] ~ DOY[which(What == "Dive")], main = "Max Depth", ylab = "Depth (m)", xlab = "Day of Year")

Duration over deployment

boxplot(DurationMin[which(What == "Dive")] ~ DOY[which(What == "Dive")], main = "Min Duration", ylab = "Duration (min)", xlab = "Day of Year")

boxplot(DurationMax[which(What == "Dive")] ~ DOY[which(What == "Dive")], main = "Max Duration", ylab = "Duration (min)", xlab = "Day of Year")

LS0tCnRpdGxlOiAiR3JleSBzZWFsIHB1cCBkaXZlIGJlaGF2aW9yLiBQdXAwMTsgUFRUIDIzODI3MiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQojIE1pY2hlbGxlIFNoZXJvLCBOb3ZlbWJlciAxOCwgMjAyMwoKIyBQdXAwMQojIFBUVCAyMzgyNzIKCiMgTG9vayBhdCB0aGUgJ0hpc3RvcycgRmlsZQpgYGB7cn0Kc2V0d2QoIn4vRGVza3RvcC9ncmV5IHNlYWwgcHVwIGRpdmUgYmVoYXZpb3IvMjM4MjcyIikKaGlzdG9zPC0gcmVhZC5jc3YoIjIzODI3Mi1IaXN0b3MuY3N2IikKYXR0YWNoKGhpc3RvcykKaGVhZChoaXN0b3MpCmBgYAoKYGBge3J9CiMgTG9hZCBsaWJyYXJpZXMKbGlicmFyeShtZ2N2KQpsaWJyYXJ5KGdhbW00KQpsaWJyYXJ5KHBzcGxpbmUpCmxpYnJhcnkoc3VuY2FsYykKbGlicmFyeShsbWVyVGVzdCkKbGlicmFyeShNdU1JbikKbGlicmFyeShwYXJhbGxlbCkKbGlicmFyeShtZ2NWaXopCmxpYnJhcnkocmdsKQpsaWJyYXJ5KGZlYXRoZXIpCmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeShjYXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShncmlkKQpsaWJyYXJ5KGFuaW1hdGlvbikKbGlicmFyeShpdHNhZHVnKQpsaWJyYXJ5KHZpc3JlZykKbGlicmFyeShkcGx5cikKbGlicmFyeSh2aXJpZGlzKQpsaWJyYXJ5KGhyYnJ0aGVtZXMpCmBgYAoKIyBUQUQKIyMgUmVvcmdhbml6ZSBkYXRhCmBgYHtyfQpUQUQuMTwtIGMoQmluMVt3aGljaChIaXN0VHlwZSA9PSAiVEFEIildLCBCaW4yW3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0sIEJpbjNbd2hpY2goSGlzdFR5cGUgPT0gIlRBRCIpXSwgQmluNFt3aGljaChIaXN0VHlwZSA9PSAiVEFEIildLCBCaW41W3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0sCiAgICAgICAgICAgICAgICAgQmluNlt3aGljaChIaXN0VHlwZSA9PSAiVEFEIildLCBCaW43W3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0sIEJpbjhbd2hpY2goSGlzdFR5cGUgPT0gIlRBRCIpXSwgQmluOVt3aGljaChIaXN0VHlwZSA9PSAiVEFEIildLCBCaW4xMFt3aGljaChIaXN0VHlwZSA9PSAiVEFEIildLAogICAgICAgICAgICAgICAgIEJpbjExW3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0sIEJpbjEyW3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0sIEJpbjEzW3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0pClRBRC4yPC1UQUQuMS8xMDAKbjwtbGVuZ3RoKEJpbjFbd2hpY2goSGlzdFR5cGUgPT0gIlRBRCIpXSkKQmluPC0gYyhyZXBsaWNhdGUobiwgQmluMVt3aGljaChIaXN0VHlwZSA9PSAiVEFETElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjJbd2hpY2goSGlzdFR5cGUgPT0gIlRBRExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW4zW3doaWNoKEhpc3RUeXBlID09ICJUQURMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluNFt3aGljaChIaXN0VHlwZSA9PSAiVEFETElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjVbd2hpY2goSGlzdFR5cGUgPT0gIlRBRExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW42W3doaWNoKEhpc3RUeXBlID09ICJUQURMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluN1t3aGljaChIaXN0VHlwZSA9PSAiVEFETElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjhbd2hpY2goSGlzdFR5cGUgPT0gIlRBRExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW45W3doaWNoKEhpc3RUeXBlID09ICJUQURMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluMTBbd2hpY2goSGlzdFR5cGUgPT0gIlRBRExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW4xMVt3aGljaChIaXN0VHlwZSA9PSAiVEFETElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjEyW3doaWNoKEhpc3RUeXBlID09ICJUQURMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluMTNbd2hpY2goSGlzdFR5cGUgPT0gIlRBRExJTUlUUyIpXSkpCkRheTwtIGMocmVwbGljYXRlKDEzLCBET1lbd2hpY2goSGlzdFR5cGUgPT0gIlRBRCIpXSkpCkhvdXIuMTwtIGMocmVwbGljYXRlKDEzLCBIb3VyW3doaWNoKEhpc3RUeXBlID09ICJUQUQiKV0pKQoKZGYuVEFEPC0gZGF0YS5mcmFtZShUQUQuMiwgQmluLCBEYXksIEhvdXIuMSkKaGVhZChkZi5UQUQpCmBgYAoKCiMjIFBsb3R0aW5nIFRBRCBhY3Jvc3MgdGltZSBieSBiaW4KYGBge3J9Cng8LSBkZi5UQUQkRGF5W3doaWNoKEhvdXIuMSA9PSAwKV0KeTwtIGRmLlRBRCRUQUQuMlt3aGljaChIb3VyLjEgPT0gMCldCmY8LSBkZi5UQUQkQmluW3doaWNoKEhvdXIuMSA9PSAwKV0KZGYxPC0gZGF0YS5mcmFtZSh4LHksZikKZ2dwbG90KGRmMSwgYWVzKHg9eCwgeT15LCBmaWxsPWFzLmZhY3RvcihmKSkpICsgCiAgZ2VvbV9hcmVhKGFscGhhPTEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJwdXJwbGUiLCJuYXZ5IiwiYmx1ZSIsInR1cnF1b2lzZTMiLCJjeWFuIiwiZGFya2dyZWVuIiwiZ3JlZW4iLCJkYXJrZ29sZGVucm9kIiwieWVsbG93Iiwic2llbm5hMSIsInJlZCIsInJlZDQiLCJibGFjayIpKSArIHRoZW1lX2xpbmVkcmF3KCkrCiB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSArIHhsYWIoIkRheSBvZiBZZWFyIikgKyB5bGFiKCJQcm9wb3J0aW9uIikgKyBnZ3RpdGxlKCJUQUQgQmlucywgSG91ciAwIikgKyBsYWJzKGZpbGwgPSAiQmluIikKCng8LSBkZi5UQUQkRGF5W3doaWNoKEhvdXIuMSA9PSA2KV0KeTwtIGRmLlRBRCRUQUQuMlt3aGljaChIb3VyLjEgPT0gNildCmY8LSBkZi5UQUQkQmluW3doaWNoKEhvdXIuMSA9PSA2KV0KZGYxPC0gZGF0YS5mcmFtZSh4LHksZikKZ2dwbG90KGRmMSwgYWVzKHg9eCwgeT15LCBmaWxsPWFzLmZhY3RvcihmKSkpICsgCiAgZ2VvbV9hcmVhKGFscGhhPTEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJwdXJwbGUiLCJuYXZ5IiwiYmx1ZSIsInR1cnF1b2lzZTMiLCJjeWFuIiwiZGFya2dyZWVuIiwiZ3JlZW4iLCJkYXJrZ29sZGVucm9kIiwieWVsbG93Iiwic2llbm5hMSIsInJlZCIsInJlZDQiLCJibGFjayIpKSArIHRoZW1lX2xpbmVkcmF3KCkrCiB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSArIHhsYWIoIkRheSBvZiBZZWFyIikgKyB5bGFiKCJQcm9wb3J0aW9uIikgKyBnZ3RpdGxlKCJUQUQgQmlucywgSG91ciA2IikgKyBsYWJzKGZpbGwgPSAiQmluIikKCng8LSBkZi5UQUQkRGF5W3doaWNoKEhvdXIuMSA9PSAxMildCnk8LSBkZi5UQUQkVEFELjJbd2hpY2goSG91ci4xID09IDEyKV0KZjwtIGRmLlRBRCRCaW5bd2hpY2goSG91ci4xID09IDEyKV0KZGYxPC0gZGF0YS5mcmFtZSh4LHksZikKZ2dwbG90KGRmMSwgYWVzKHg9eCwgeT15LCBmaWxsPWFzLmZhY3RvcihmKSkpICsgCiAgZ2VvbV9hcmVhKGFscGhhPTEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJwdXJwbGUiLCJuYXZ5IiwiYmx1ZSIsInR1cnF1b2lzZTMiLCJjeWFuIiwiZGFya2dyZWVuIiwiZ3JlZW4iLCJkYXJrZ29sZGVucm9kIiwieWVsbG93Iiwic2llbm5hMSIsInJlZCIsInJlZDQiLCJibGFjayIpKSArIHRoZW1lX2xpbmVkcmF3KCkrCiB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSArIHhsYWIoIkRheSBvZiBZZWFyIikgKyB5bGFiKCJQcm9wb3J0aW9uIikgKyBnZ3RpdGxlKCJUQUQgQmlucywgSG91ciAxMiIpICsgbGFicyhmaWxsID0gIkJpbiIpCgp4PC0gZGYuVEFEJERheVt3aGljaChIb3VyLjEgPT0gMTgpXQp5PC0gZGYuVEFEJFRBRC4yW3doaWNoKEhvdXIuMSA9PSAxOCldCmY8LSBkZi5UQUQkQmluW3doaWNoKEhvdXIuMSA9PSAxOCldCmRmMTwtIGRhdGEuZnJhbWUoeCx5LGYpCmdncGxvdChkZjEsIGFlcyh4PXgsIHk9eSwgZmlsbD1hcy5mYWN0b3IoZikpKSArIAogIGdlb21fYXJlYShhbHBoYT0xKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicHVycGxlIiwibmF2eSIsImJsdWUiLCJ0dXJxdW9pc2UzIiwiY3lhbiIsImRhcmtncmVlbiIsImdyZWVuIiwiZGFya2dvbGRlbnJvZCIsInllbGxvdyIsInNpZW5uYTEiLCJyZWQiLCJyZWQ0IiwiYmxhY2siKSkgKyB0aGVtZV9saW5lZHJhdygpKwogdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkgKyB4bGFiKCJEYXkgb2YgWWVhciIpICsgeWxhYigiUHJvcG9ydGlvbiIpICsgZ2d0aXRsZSgiVEFEIEJpbnMsIEhvdXIgMTgiKSArIGxhYnMoZmlsbCA9ICJCaW4iKQoKYGBgCgojIE51bWJlciBvZiBEaXZlcyBieSBIb3VyIEJsb2NrCmBgYHtyfQpwbG90KFN1bVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIiAmIEhvdXIgPT0gIjAiKV0gfiBET1lbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIgJiBIb3VyID09ICIwIildLCB0eXBlID0gImIiLCBwY2ggPSAxNiwgY29sID0gIm5hdnkiLCB5bGltID0gYygwLDMwMCksCiAgICAgeGxhYiA9ICJEYXkgb2YgWWVhciIsIHlsYWIgPSAiTnVtYmVyIG9mIERpdmVzIikKbGluZXMoU3VtW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGgiICYgSG91ciA9PSAiNiIpXSB+IERPWVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIiAmIEhvdXIgPT0gIjYiKV0sIHR5cGUgPSAiYiIsIHBjaCA9IDE2LCBjb2wgPSAiYmx1ZSIpCmxpbmVzKFN1bVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIiAmIEhvdXIgPT0gIjEyIildIH4gRE9ZW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGgiICYgSG91ciA9PSAiMTIiKV0sIHR5cGUgPSAiYiIsIHBjaCA9IDE2LCBjb2wgPSAidHVycXVvaXNlMyIpCmxpbmVzKFN1bVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIiAmIEhvdXIgPT0gIjE4IildIH4gRE9ZW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGgiICYgSG91ciA9PSAiMTgiKV0sIHR5cGUgPSAiYiIsIHBjaCA9IDE2LCBjb2wgPSAiZ3JlZW4iKQpsZWdlbmQoNTAsIDMwMCwgbGVnZW5kPWMoIkhvdXIgMCIsIkhvdXIgNiIsICJIb3VyIDEyIiwiSG91ciAxOCIpLAogICAgICAgY29sPWMoIm5hdnkiLCJibHVlIiwidHVycXVvaXNlMyIsImdyZWVuIiksIGx0eT0xLCBjZXg9MC44KQpgYGAKCiMgTnVtYmVyIG9mIERpdmVzIC0gU3VtbWVkIEJ5IERheQpgYGB7cn0KYWdnMTwtIGFnZ3JlZ2F0ZShTdW1bd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgbGlzdChET1lbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSksIEZVTiA9IHN1bSkKcGxvdChhZ2cxJHggfiBhZ2cxJEdyb3VwLjEsIHR5cGUgPSAiYiIsIHBjaCA9IDE2LCBjb2wgPSAiYmx1ZSIsIHlsaW0gPSBjKDAsOTAwKSwKICAgICB4bGFiID0gIkRheSBvZiBZZWFyIiwgeWxhYiA9ICJOdW1iZXIgb2YgRGl2ZXMiKQpgYGAKCgojIERlcHRoCiMjIFJlb3JnYW5pemUgZGF0YQpgYGB7cn0KRGVwPC0gYyhCaW4xW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGgiKV0sIEJpbjJbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgQmluM1t3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIildLCBCaW40W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGgiKV0sIEJpbjVbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgQmluNlt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIildLCBCaW43W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGgiKV0sIEJpbjhbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgQmluOVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIildLCBCaW4xMFt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIildLCAgQmluMTFbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgQmluMTJbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgQmluMTNbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSwgQmluMTRbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSkKbjwtbGVuZ3RoKEJpbjFbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSkKQmluPC0gYyhyZXBsaWNhdGUobiwgQmluMVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjJbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW4zW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGhMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluNFt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjVbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW42W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGhMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluN1t3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjhbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW45W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGhMSU1JVFMiKV0pLAogICAgICAgICAgICAgICAgICByZXBsaWNhdGUobiwgQmluMTBbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW4xMVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjEyW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRGVwdGhMSU1JVFMiKV0pLCByZXBsaWNhdGUobiwgQmluMTNbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aExJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW4xNFt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoTElNSVRTIildKSkKRGF5PC0gYyhyZXBsaWNhdGUoMTQsIERPWVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZURlcHRoIildKSkKSG91ci4xPC0gYyhyZXBsaWNhdGUoMTQsIEhvdXJbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEZXB0aCIpXSkpCgpkZi5EZXA8LSBkYXRhLmZyYW1lKERlcCwgQmluLCBEYXksIEhvdXIuMSkKaGVhZChkZi5EZXApCmBgYAoKIyMgUGxvdHRpbmcgRGVwdGggYWNyb3NzIHRpbWUgYnkgYmluCmBgYHtyfQp4PC0gZGYuRGVwJERheVt3aGljaChIb3VyLjEgPT0gMCldCnk8LSBkZi5EZXAkRGVwW3doaWNoKEhvdXIuMSA9PSAwKV0KZjwtIGRmLkRlcCRCaW5bd2hpY2goSG91ci4xID09IDApXQpkZjE8LSBkYXRhLmZyYW1lKHgseSxmKQpnZ3Bsb3QoZGYxLCBhZXMoeD14LCB5PXksIGZpbGw9YXMuZmFjdG9yKGYpKSkgKyAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicHVycGxlNCIsInB1cnBsZSIsIm5hdnkiLCJibHVlIiwidHVycXVvaXNlMyIsImN5YW4iLCJkYXJrZ3JlZW4iLCJncmVlbiIsImRhcmtnb2xkZW5yb2QiLCJ5ZWxsb3ciLCJzaWVubmExIiwicmVkIiwicmVkNCIsImJsYWNrIikpICsgdGhlbWVfbGluZWRyYXcoKSsKIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpICsgeGxhYigiRGF5IG9mIFllYXIiKSArIHlsYWIoIkNvdW50IikgKyBnZ3RpdGxlKCJEZXB0aCBCaW5zLCBIb3VyIDAiKSArIGxhYnMoZmlsbCA9ICJCaW4iKQoKeDwtIGRmLkRlcCREYXlbd2hpY2goSG91ci4xID09IDYpXQp5PC0gZGYuRGVwJERlcFt3aGljaChIb3VyLjEgPT0gNildCmY8LSBkZi5EZXAkQmluW3doaWNoKEhvdXIuMSA9PSA2KV0KZGYxPC0gZGF0YS5mcmFtZSh4LHksZikKZ2dwbG90KGRmMSwgYWVzKHg9eCwgeT15LCBmaWxsPWFzLmZhY3RvcihmKSkpICsgCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0ID0gImlkZW50aXR5IikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInB1cnBsZTQiLCJwdXJwbGUiLCJuYXZ5IiwiYmx1ZSIsInR1cnF1b2lzZTMiLCJjeWFuIiwiZGFya2dyZWVuIiwiZ3JlZW4iLCJkYXJrZ29sZGVucm9kIiwieWVsbG93Iiwic2llbm5hMSIsInJlZCIsInJlZDQiLCJibGFjayIpKSArIHRoZW1lX2xpbmVkcmF3KCkrCiB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSArIHhsYWIoIkRheSBvZiBZZWFyIikgKyB5bGFiKCJDb3VudCIpICsgZ2d0aXRsZSgiRGVwdGggQmlucywgSG91ciA2IikgKyBsYWJzKGZpbGwgPSAiQmluIikKCng8LSBkZi5EZXAkRGF5W3doaWNoKEhvdXIuMSA9PSAxMildCnk8LSBkZi5EZXAkRGVwW3doaWNoKEhvdXIuMSA9PSAxMildCmY8LSBkZi5EZXAkQmluW3doaWNoKEhvdXIuMSA9PSAxMildCmRmMTwtIGRhdGEuZnJhbWUoeCx5LGYpCmdncGxvdChkZjEsIGFlcyh4PXgsIHk9eSwgZmlsbD1hcy5mYWN0b3IoZikpKSArIAogIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJwdXJwbGU0IiwicHVycGxlIiwibmF2eSIsImJsdWUiLCJ0dXJxdW9pc2UzIiwiY3lhbiIsImRhcmtncmVlbiIsImdyZWVuIiwiZGFya2dvbGRlbnJvZCIsInllbGxvdyIsInNpZW5uYTEiLCJyZWQiLCJyZWQ0IiwiYmxhY2siKSkgKyB0aGVtZV9saW5lZHJhdygpKwogdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkgKyB4bGFiKCJEYXkgb2YgWWVhciIpICsgeWxhYigiQ291bnQiKSArIGdndGl0bGUoIkRlcHRoIEJpbnMsIEhvdXIgMTIiKSArIGxhYnMoZmlsbCA9ICJCaW4iKQoKeDwtIGRmLkRlcCREYXlbd2hpY2goSG91ci4xID09IDE4KV0KeTwtIGRmLkRlcCREZXBbd2hpY2goSG91ci4xID09IDE4KV0KZjwtIGRmLkRlcCRCaW5bd2hpY2goSG91ci4xID09IDE4KV0KZGYxPC0gZGF0YS5mcmFtZSh4LHksZikKZ2dwbG90KGRmMSwgYWVzKHg9eCwgeT15LCBmaWxsPWFzLmZhY3RvcihmKSkpICsgCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0ID0gImlkZW50aXR5IikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInB1cnBsZTQiLCJwdXJwbGUiLCJuYXZ5IiwiYmx1ZSIsInR1cnF1b2lzZTMiLCJjeWFuIiwiZGFya2dyZWVuIiwiZ3JlZW4iLCJkYXJrZ29sZGVucm9kIiwieWVsbG93Iiwic2llbm5hMSIsInJlZCIsInJlZDQiLCJibGFjayIpKSArIHRoZW1lX2xpbmVkcmF3KCkrCiB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSArIHhsYWIoIkRheSBvZiBZZWFyIikgKyB5bGFiKCJDb3VudCIpICsgZ2d0aXRsZSgiRGVwdGggQmlucywgSG91ciAxOCIpICsgbGFicyhmaWxsID0gIkJpbiIpCgpgYGAKCgoKCiMgRHVyYXRpb24KIyMgUmVvcmdhbml6ZSBkYXRhCmBgYHtyfQpEdXI8LSBjKEJpbjFbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbiIpXSwgQmluMlt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildLCBCaW4zW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb24iKV0sIEJpbjRbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbiIpXSwgQmluNVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildLCBCaW42W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb24iKV0sIEJpbjdbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbiIpXSwgQmluOFt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildLCBCaW45W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb24iKV0sIEJpbjEwW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb24iKV0sICBCaW4xMVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildLCBCaW4xMlt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildLCBCaW4xM1t3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildLCBCaW4xNFt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildKQpuPC1sZW5ndGgoQmluMVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildKQpCaW48LSBjKHJlcGxpY2F0ZShuLCBCaW4xW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb25MSU1JVFMiKV0pLCByZXBsaWNhdGUobiwgQmluMlt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjNbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbkxJTUlUUyIpXSksCiAgICAgICAgICAgICAgICAgIHJlcGxpY2F0ZShuLCBCaW40W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb25MSU1JVFMiKV0pLCByZXBsaWNhdGUobiwgQmluNVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjZbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbkxJTUlUUyIpXSkscmVwbGljYXRlKG4sIEJpbjdbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbkxJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW44W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb25MSU1JVFMiKV0pLCByZXBsaWNhdGUobiwgQmluOVt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uTElNSVRTIildKSwgIHJlcGxpY2F0ZShuLCBCaW4xMFt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjExW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb25MSU1JVFMiKV0pLCByZXBsaWNhdGUobiwgQmluMTJbd2hpY2goSGlzdFR5cGUgPT0gIkRpdmVEdXJhdGlvbkxJTUlUUyIpXSksIHJlcGxpY2F0ZShuLCBCaW4xM1t3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uTElNSVRTIildKSwgcmVwbGljYXRlKG4sIEJpbjE0W3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb25MSU1JVFMiKV0pKQpEYXk8LSBjKHJlcGxpY2F0ZSgxNCwgRE9ZW3doaWNoKEhpc3RUeXBlID09ICJEaXZlRHVyYXRpb24iKV0pKQpIb3VyLjE8LSBjKHJlcGxpY2F0ZSgxNCwgSG91clt3aGljaChIaXN0VHlwZSA9PSAiRGl2ZUR1cmF0aW9uIildKSkKCmRmLkR1cjwtIGRhdGEuZnJhbWUoRHVyLCBCaW4sIERheSwgSG91ci4xKQpoZWFkKGRmLkR1cikKYGBgCgoKCgojIyBQbG90dGluZyBEdXJhdGlvbiBhY3Jvc3MgdGltZSBieSBiaW4KYGBge3J9Cng8LSBkZi5EdXIkRGF5W3doaWNoKEhvdXIuMSA9PSAwKV0KeTwtIGRmLkR1ciREdXJbd2hpY2goSG91ci4xID09IDApXQpmPC0gZGYuRHVyJEJpblt3aGljaChIb3VyLjEgPT0gMCldCmRmMTwtIGRhdGEuZnJhbWUoeCx5LGYpCmdncGxvdChkZjEsIGFlcyh4PXgsIHk9eSwgZmlsbD1hcy5mYWN0b3IoZikpKSArIAogIGdlb21fYmFyKHBvc2l0aW9uID0gInN0YWNrIiwgc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJwdXJwbGU0IiwicHVycGxlIiwibmF2eSIsImJsdWUiLCJ0dXJxdW9pc2UzIiwiY3lhbiIsImRhcmtncmVlbiIsImdyZWVuIiwiZGFya2dvbGRlbnJvZCIsInllbGxvdyIsInNpZW5uYTEiLCJyZWQiLCJyZWQ0IiwiYmxhY2siKSkgKyB0aGVtZV9saW5lZHJhdygpKwogdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTEyKSkgKyB4bGFiKCJEYXkgb2YgWWVhciIpICsgeWxhYigiQ291bnQiKSArIGdndGl0bGUoIkR1cmF0aW9uIEJpbnMsIEhvdXIgMCIpICsgbGFicyhmaWxsID0gIkJpbiIpCgp4PC0gZGYuRHVyJERheVt3aGljaChIb3VyLjEgPT0gNildCnk8LSBkZi5EdXIkRHVyW3doaWNoKEhvdXIuMSA9PSA2KV0KZjwtIGRmLkR1ciRCaW5bd2hpY2goSG91ci4xID09IDYpXQpkZjE8LSBkYXRhLmZyYW1lKHgseSxmKQpnZ3Bsb3QoZGYxLCBhZXMoeD14LCB5PXksIGZpbGw9YXMuZmFjdG9yKGYpKSkgKyAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicHVycGxlNCIsInB1cnBsZSIsIm5hdnkiLCJibHVlIiwidHVycXVvaXNlMyIsImN5YW4iLCJkYXJrZ3JlZW4iLCJncmVlbiIsImRhcmtnb2xkZW5yb2QiLCJ5ZWxsb3ciLCJzaWVubmExIiwicmVkIiwicmVkNCIsImJsYWNrIikpICsgdGhlbWVfbGluZWRyYXcoKSsKIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpICsgeGxhYigiRGF5IG9mIFllYXIiKSArIHlsYWIoIkNvdW50IikgKyBnZ3RpdGxlKCJEdXJhdGlvbiBCaW5zLCBIb3VyIDYiKSArIGxhYnMoZmlsbCA9ICJCaW4iKQoKeDwtIGRmLkR1ciREYXlbd2hpY2goSG91ci4xID09IDEyKV0KeTwtIGRmLkR1ciREdXJbd2hpY2goSG91ci4xID09IDEyKV0KZjwtIGRmLkR1ciRCaW5bd2hpY2goSG91ci4xID09IDEyKV0KZGYxPC0gZGF0YS5mcmFtZSh4LHksZikKZ2dwbG90KGRmMSwgYWVzKHg9eCwgeT15LCBmaWxsPWFzLmZhY3RvcihmKSkpICsgCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAic3RhY2siLCBzdGF0ID0gImlkZW50aXR5IikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInB1cnBsZTQiLCJwdXJwbGUiLCJuYXZ5IiwiYmx1ZSIsInR1cnF1b2lzZTMiLCJjeWFuIiwiZGFya2dyZWVuIiwiZ3JlZW4iLCJkYXJrZ29sZGVucm9kIiwieWVsbG93Iiwic2llbm5hMSIsInJlZCIsInJlZDQiLCJibGFjayIpKSArIHRoZW1lX2xpbmVkcmF3KCkrCiB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MTIpKSArIHhsYWIoIkRheSBvZiBZZWFyIikgKyB5bGFiKCJDb3VudCIpICsgZ2d0aXRsZSgiRHVyYXRpb24gQmlucywgSG91ciAxMiIpICsgbGFicyhmaWxsID0gIkJpbiIpCgp4PC0gZGYuRHVyJERheVt3aGljaChIb3VyLjEgPT0gMTgpXQp5PC0gZGYuRHVyJER1clt3aGljaChIb3VyLjEgPT0gMTgpXQpmPC0gZGYuRHVyJEJpblt3aGljaChIb3VyLjEgPT0gMTgpXQpkZjE8LSBkYXRhLmZyYW1lKHgseSxmKQpnZ3Bsb3QoZGYxLCBhZXMoeD14LCB5PXksIGZpbGw9YXMuZmFjdG9yKGYpKSkgKyAKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJzdGFjayIsIHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicHVycGxlNCIsInB1cnBsZSIsIm5hdnkiLCJibHVlIiwidHVycXVvaXNlMyIsImN5YW4iLCJkYXJrZ3JlZW4iLCJncmVlbiIsImRhcmtnb2xkZW5yb2QiLCJ5ZWxsb3ciLCJzaWVubmExIiwicmVkIiwicmVkNCIsImJsYWNrIikpICsgdGhlbWVfbGluZWRyYXcoKSsKIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0xMikpICsgeGxhYigiRGF5IG9mIFllYXIiKSArIHlsYWIoIkNvdW50IikgKyBnZ3RpdGxlKCJEdXJhdGlvbiBCaW5zLCBIb3VyIDE4IikgKyBsYWJzKGZpbGwgPSAiQmluIikKCmBgYAoKCgojIFN1cmZhY2UgVGltZQojIyBSZW9yZ2FuaXplIGRhdGEKYGBge3J9ClN1cmY8LSBjKEJpbjFbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjJbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjNbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjRbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjVbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjZbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjdbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjhbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjlbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjEwW3doaWNoKEhpc3RUeXBlID09ICJQZXJjZW50IildLCAgQmluMTFbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjEyW3doaWNoKEhpc3RUeXBlID09ICJQZXJjZW50IildLCBCaW4xM1t3aGljaChIaXN0VHlwZSA9PSAiUGVyY2VudCIpXSwgQmluMTRbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjE1W3doaWNoKEhpc3RUeXBlID09ICJQZXJjZW50IildLCBCaW4xNlt3aGljaChIaXN0VHlwZSA9PSAiUGVyY2VudCIpXSwgQmluMTdbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjE4W3doaWNoKEhpc3RUeXBlID09ICJQZXJjZW50IildLCBCaW4xOVt3aGljaChIaXN0VHlwZSA9PSAiUGVyY2VudCIpXSwgQmluMjBbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjIxW3doaWNoKEhpc3RUeXBlID09ICJQZXJjZW50IildLCBCaW4yMlt3aGljaChIaXN0VHlwZSA9PSAiUGVyY2VudCIpXSwgQmluMjNbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0sIEJpbjI0W3doaWNoKEhpc3RUeXBlID09ICJQZXJjZW50IildKQoKbjwtbGVuZ3RoKEJpbjFbd2hpY2goSGlzdFR5cGUgPT0gIlBlcmNlbnQiKV0pCkhvdXIuMTwtIGMocmVwbGljYXRlKG4sIDApLHJlcGxpY2F0ZShuLCAxKSxyZXBsaWNhdGUobiwgMikscmVwbGljYXRlKG4sIDMpLHJlcGxpY2F0ZShuLCA0KSxyZXBsaWNhdGUobiwgNSkscmVwbGljYXRlKG4sIDYpLHJlcGxpY2F0ZShuLCA3KSxyZXBsaWNhdGUobiwgOCkscmVwbGljYXRlKG4sIDkpLHJlcGxpY2F0ZShuLCAxMCkscmVwbGljYXRlKG4sIDExKSxyZXBsaWNhdGUobiwgMTIpLHJlcGxpY2F0ZShuLCAxMykscmVwbGljYXRlKG4sIDE0KSxyZXBsaWNhdGUobiwgMTUpLHJlcGxpY2F0ZShuLCAxNikscmVwbGljYXRlKG4sIDE3KSxyZXBsaWNhdGUobiwgMTgpLHJlcGxpY2F0ZShuLCAxOSkscmVwbGljYXRlKG4sIDIwKSxyZXBsaWNhdGUobiwgMjEpLHJlcGxpY2F0ZShuLCAyMikscmVwbGljYXRlKG4sIDIzKSkKRGF5PC0gYyhyZXBsaWNhdGUoMjQsIERPWVt3aGljaChIaXN0VHlwZSA9PSAiUGVyY2VudCIpXSkpCgpkZi5TdXJmPC0gZGF0YS5mcmFtZShTdXJmLCBIb3VyLjEsIERheSkKaGVhZChkZi5TdXJmKQpgYGAKCiMjIFBsb3R0aW5nICVTdXJmYWNlIGJ5IEhvdXIgYW5kIERheQpgYGB7cn0KcCA8LWdncGxvdChkZi5TdXJmLGFlcyhEYXksSG91ci4xLGZpbGw9U3VyZikpKwogIGdlb21fdGlsZShjb2xvcj0gImdyZXkiLHNpemU9MC4xKSArIAogIHNjYWxlX2ZpbGxfdmlyaWRpcyhuYW1lPSJTdXJmYWNlICglKSIsb3B0aW9uID0idHVyYm8iLCBsaW1pdHMgPSBjKDAsIDEwMCksIG9vYiA9IHNjYWxlczo6c3F1aXNoKQpwCmBgYAoKCiMgTG9vayBhdCB0aGUgJ0JlaGF2aW9yJyBGaWxlCmBgYHtyfQpiZWhhdjwtIHJlYWQuY3N2KCIyMzgyNzItQmVoYXZpb3IuY3N2IikKYXR0YWNoKGJlaGF2KQpoZWFkKGJlaGF2KQpgYGAKCiMgRGVwdGggb3ZlciBkZXBsb3ltZW50CmBgYHtyfQpib3hwbG90KERlcHRoTWluW3doaWNoKFdoYXQgPT0gIkRpdmUiKV0gfiBET1lbd2hpY2goV2hhdCA9PSAiRGl2ZSIpXSwgbWFpbiA9ICJNaW4gRGVwdGgiLCB5bGFiID0gIkRlcHRoIChtKSIsIHhsYWIgPSAiRGF5IG9mIFllYXIiKQpib3hwbG90KERlcHRoTWF4W3doaWNoKFdoYXQgPT0gIkRpdmUiKV0gfiBET1lbd2hpY2goV2hhdCA9PSAiRGl2ZSIpXSwgbWFpbiA9ICJNYXggRGVwdGgiLCB5bGFiID0gIkRlcHRoIChtKSIsIHhsYWIgPSAiRGF5IG9mIFllYXIiKQpgYGAKCiMgRHVyYXRpb24gb3ZlciBkZXBsb3ltZW50CmBgYHtyfQpib3hwbG90KER1cmF0aW9uTWluW3doaWNoKFdoYXQgPT0gIkRpdmUiKV0gfiBET1lbd2hpY2goV2hhdCA9PSAiRGl2ZSIpXSwgbWFpbiA9ICJNaW4gRHVyYXRpb24iLCB5bGFiID0gIkR1cmF0aW9uIChtaW4pIiwgeGxhYiA9ICJEYXkgb2YgWWVhciIpCmJveHBsb3QoRHVyYXRpb25NYXhbd2hpY2goV2hhdCA9PSAiRGl2ZSIpXSB+IERPWVt3aGljaChXaGF0ID09ICJEaXZlIildLCBtYWluID0gIk1heCBEdXJhdGlvbiIsIHlsYWIgPSAiRHVyYXRpb24gKG1pbikiLCB4bGFiID0gIkRheSBvZiBZZWFyIikKYGBgCgoKCg==