GVHD: ThS. Trần Mạnh Tường
Nhóm sinh viên:
Mai Thị Hoài Thương - 2121001546
Nguyễn Thị Ngọc Hà - 2121012474
Đề tài: PHÂN TÍCH NHỮNG YẾU TỐ ẢNH HƯỞNG ĐẾN MỨC ĐỘ TIÊU THỤ RƯỢU
CỦA SINH VIÊN.
Dữ liệu “Student Alcohol Consumption EDA” từ Kaggle cung cấp thông
tin chi tiết về việc sinh viên tiêu thụ rượu tại các trường trung học ở
Bồ Đào Nha. Bộ dữ liệu này không chỉ tập trung vào hành vi tiêu thụ rượu
mà còn bao gồm các thông tin về môi trường gia đình và xã hội của sinh
viên, bao gồm trình độ học vấn của cha mẹ và người giám hộ. Mục đích của
nghiên cứu là để hiểu rõ hơn về mối liên hệ giữa các yếu tố này và thói
quen tiêu thụ rượu của học sinh. Dữ liệu được thu thập từ các cuộc khảo
sát trong cộng đồng học đường, mang lại cơ hội để nghiên cứu tác động
của môi trường và gia đình đối với hành vi tiêu thụ rượu ở độ tuổi sinh
viên.
LỜI CẢM ƠN
Lời đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến Giảng viên -
ThS. Trần Mạnh Tường. Trong quá trình học tập và tìm hiểu môn “Phân tích
dữ liệu định tính”, chúng em đã nhận được sự quan tâm giúp đỡ, hướng dẫn
tận tình và cống hiến tâm huyết của thầy. Thầy đã giúp chúng em tích lũy
thêm nhiều kiến thức để có cái nhìn hoàn thiện và tổng quan về bộ môn
này. Từ những kiến thức được thầy truyền tải, chúng em dần hiểu được tầm
quan trọng của môn học mà bấy lâu nay còn nhiều thắc mắc. Thông qua bài
tiểu luận này, chúng em xin trình bày những gì chúng em đã tìm hiểu về
môn học, và cụ thể là chúng em lựa chọn đề tài “Phân tích những yếu tố
ảnh hưởng đến mức độ tiêu thụ rượu của sinh viên”
Kiến thức là vô hạn nhưng sự tiếp nhận kiến thức của bản thân mỗi
chúng em luôn hạn chế một cách nhất định. Do đó, trong quá trình hoàn
thành bài tiểu luận, chắc chắn chúng em không tránh khỏi những thiếu
sót, vậy nên chúng em rất mong nhận được những đóng góp đến từ thầy để
bài tiểu luận của nhóm được hoàn thiện hơn.
Chúng em kính chúc thầy sức khỏe, hạnh phúc và thành công trên con
đường sự nghiệp của mình.
CHƯƠNG 1: TỔNG QUAN NGHIÊN CỨU
1.1 Lí do chọn đề tài
Hiện nay, mức độ tiêu thụ rượu là một hiện tượng phổ biến trong đời
sống sinh viên. Nhiều sinh viên tham gia các hoạt động xã hội như tiệc
tùng, dã ngoại và các sự kiến của trường, nơi rượu thường được phục vụ
và tiêu thụ. Nhiều sinh viên không chỉ uống rượu mà còn lạm dụng nó,
uống đến mức say xỉn thường xuyên. Tình trạng này đặc biệt phổ biến
trong các dịp lễ, kỳ nghỉ và các buổi tiệc lớn. Việc uống rượu say xỉn
có thể dẫn đến mất kiểm soát hành vi và gây ra nhiều hậu quả tiêu cực
như tai nạn, bạo lực và các vấn đề về sức khỏe. Rượu không chỉ là dùng
cho những cuộc vui chơi, tiệc tùng, giao lưu bạn bè mà sinh viên hiện
nay còn dùng rượu để giải tỏa nỗi buồn, những áp lực trong học tập, bạn
bè, gia đình, tình cảm nên việc tiêu thụ rượu của sinh viên hiện nay rất
đáng báo động. Rượu rất dễ dàng được tiếp cận và những chỗ lưu thông
rượu không được giám sát chặt chẽ nên ngày càng làm gia tăng mức độ tiêu
thụ rượu.Thực trạng tiêu thụ rượu của sinh viên hiện nay là một vấn đề
nghiêm trọng cần được quan tâm. Việc nghiên cứu và hiểu rõ hơn về hành
vi tiêu thụ rượu của sinh viên sẽ giúp đưa ra các biện pháp giáo dục,
phòng ngừa và hỗ trợ thích hợp, nhằm giảm thiểu những hậu quả tiêu cực
và bảo vệ sức khỏe và tương lai của sinh viên.
1.2 Mục tiêu nghiên cứu
Mục tiêu của chúng tôi là phân tích các yếu tố ảnh hưởng đến mức độ
tiêu thụ rượu của sinh viên.
1.3 Đối tượng và phạm vi nghiên cứu
Tập dữ liệu chứa thông tin từ cuộc khảo sát về sinh viên khóa học
Toán ở hai trường trung học. Bộ dữ liệu chưa các thông tin liên quan đến
các sinh viên bao gồm 395 quan sát trên tổng 32 biến.
1.4 Phương pháp nghiên cứu
Bài nghiên cứu sử dụng phương pháp kỹ thuật thống kê và các mô hình
hồi quy để phân tích dữ liệu cho thấy tác động của các yếu tố ảnh hưởng
đến mức độ tiêu thụ rượu của sinh viên.
1.5 Kết cấu bài nghiên cứu
Chương 1: Tổng quan nghiên cứu.
Chương 2: Dữ liệu nghiên cứu.
Chương 3: Phân tích dữ liệu.
Chương 4: Kết quả mô hình nghiên cứu.
Chương 5: Kết luận và khuyến nghị.
Chương 2: DỮ LIỆU NGHIÊN CỨU
2.1 Giới thiệu bộ dữ liệu
Bộ dữ liệu bao gồm 395 quan sát trên tổng 33 biến của sinh viên khóa
học Toán của 2 trường. Dưới đây là chi tiết từng biến trên từng quan sát
khác nhau
2.2 Mô tả các biến trong bộ dữ liệu
school: ngôi trường sinh viên đang theo học (GP: Gabriel Pereira;
MS: Mousinho da Silveria)
sex: giới tính của sinh viên (F: nữ; M: nam)
age: độ tuổi của sinh viên (giá trị trong khoảng từ 15 - 22
tuổi)
address: nơi ở của sinh viên (U: thành thị; R: nông
thôn)
famsize: số thành viên trong gia đình (LE3: ít hơn hoặc bằng 3
người; GT3: nhiều hơn 3 người)
Pstatus: tình trạng sống chung của cha mẹ (T: sống chung; A: sống
xa nhau)
medu: trình độ học vấn của mẹ (0: không có; 1: giáo dục tiểu học
4; 2: học trong khoảng lớp 5 - 9; 3: giáo dục trung học cơ sở; 4: giáo
dục đại học)
fedu: trình độ học vấn của cha (0: không có; 1: giáo dục tiểu học
4; 2: học trong khoảng lớp 5 - 9; 3: giáo dục trung học cơ sở; 4: giáo
dục đại học)
mjob: công việc của mẹ (at home: nội trợ; teacher: giáo viên;
health: điều dưỡng; services: phục vụ; other: khác)
fjob: công việc của cha (at home: nội trợ; teacher: giáo viên;
health: điều dưỡng; services: phục vụ; other: khác)
reason: lý do sinh viên học trường này (home: gần nhà;
reputation: danh tiếng; course: khóa học; other: khác)
guardian: người giám hộ (mother: mẹ; father: cha)
traveltime: thời gian di chuyển tới trường (1: < 15 phút; 2:
15 - 30 phút; 3: 30 phút - 1 tiếng; 4: > 1 tiếng)
studytime: thời gian học hàng tuần (1: < 15 phút; 2: 2 - 5
tiếng; 3: 5 - 10 tiếng; 4: > 10 tiếng)
schoolsup: hỗ trợ giáo dục bổ sung (yes: có; no: không)
famsup: hỗ trợ giáo dục gia đình (yes: có; no: không)
paid: trả phí bổ sung trong khóa học (yes: có; no:
không)
activities: hoạt động ngoại khóa (yes: có; no: không)
nursery: sinh viên có đi học mẫu giáo không? (yes: có; no:
không)
higher: muốn học lên cấp cao hơn (yes: có; no: không)
internet: truy cập mạng tại nhà (yes: có; no: không)
romantic: mối quan hệ tình cảm (yes: có; no: không)
famrel: chất lượng mối quan hệ gia đình (1: rất tệ; 2: tệ; 3:
bình thường; 4: tốt; 5: xuất sắc)
goout: chơi cùng bạn bè (1: rất tệ; 2: tệ; 3: bình thường; 4:
tốt; 5: xuất sắc)
dalc: mức tiêu thụ rượu trong 1 ngày (1: rất thấp; 2: thấp; 3:
trung bình; 4: cao; 5: rất cao)
walc: mức tiêu thụ rượu vào cuối tuần (1: rất thấp; 2: thấp; 3:
trung bình; 4: cao; 5: rất cao)
heath: tình trạng sức khỏe hiện tại (1: rất tệ; 2: tệ; 3: bình
thường; 4: tốt; 5: rất tốt)
absences: số lần nghỉ học (0 - 93 lần)
G1: điểm học kì 1 (0 - 20 điểm)
G2: điểm học kì 2 (0 - 20 điểm)
G3: điểm học kì cuối (0 - 20 điểm)
2.3 Quan sát về dữ liệu
std <- read.csv("student-math.csv", header = T)
str(std)
## 'data.frame': 395 obs. of 32 variables:
## $ school : chr "GP" "GP" "GP" "GP" ...
## $ sex : chr "F" "F" "F" "F" ...
## $ age : int 18 17 15 15 16 16 16 17 15 15 ...
## $ address : chr "U" "U" "U" "U" ...
## $ famsize : chr "GT3" "GT3" "LE3" "GT3" ...
## $ Pstatus : chr "A" "T" "T" "T" ...
## $ Medu : int 4 1 1 4 3 4 2 4 3 3 ...
## $ Fedu : int 4 1 1 2 3 3 2 4 2 4 ...
## $ Mjob : chr "at_home" "at_home" "at_home" "health" ...
## $ Fjob : chr "teacher" "other" "other" "services" ...
## $ reason : chr "course" "course" "other" "home" ...
## $ guardian : chr "mother" "father" "mother" "mother" ...
## $ traveltime: int 2 1 1 1 1 1 1 2 1 1 ...
## $ studytime : int 2 2 2 3 2 2 2 2 2 2 ...
## $ schoolsup : chr "yes" "no" "yes" "no" ...
## $ famsup : chr "no" "yes" "no" "yes" ...
## $ paid : chr "no" "no" "yes" "yes" ...
## $ activities: chr "no" "no" "no" "yes" ...
## $ nursery : chr "yes" "no" "yes" "yes" ...
## $ higher : chr "yes" "yes" "yes" "yes" ...
## $ internet : chr "no" "yes" "yes" "yes" ...
## $ romantic : chr "no" "no" "no" "yes" ...
## $ famrel : int 4 5 4 3 4 5 4 4 4 5 ...
## $ freetime : int 3 3 3 2 3 4 4 1 2 5 ...
## $ goout : int 4 3 2 2 2 2 4 4 2 1 ...
## $ Dalc : int 1 1 2 1 1 1 1 1 1 1 ...
## $ Walc : int 1 1 3 1 2 2 1 1 1 1 ...
## $ health : int 3 3 3 5 5 5 3 1 1 5 ...
## $ absences : int 6 4 10 2 4 10 0 6 0 0 ...
## $ G1 : int 5 5 7 15 6 15 12 6 16 14 ...
## $ G2 : int 6 5 8 14 10 15 12 5 18 15 ...
## $ G3 : int 6 6 10 15 10 15 11 6 19 15 ...
library(data.table)
## Warning: package 'data.table' was built under R version 4.3.1
data.table(std)
Bảng trên cho thấy tổng quan toàn bộ dữ liệu ## 2.4 Mô hình đề
xuất
\[Dalc =\beta_0 + \beta_1 \cdot age +
\beta_2 \cdot sex +\beta_3 \cdot Pstatus + \beta_4 \cdot
traveltime\]
Chọn biến Dalc là biến phụ thuộc. Chọn biến age, sex, Pstatus và
traveltime là biến độc lập.
Chương 3: PHÂN TÍCH DỮ LIỆU
std <- read.csv("student-math.csv", header = T)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.1
## Warning: package 'ggplot2' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.1
## Warning: package 'tidyr' was built under R version 4.3.1
## Warning: package 'readr' was built under R version 4.3.1
## Warning: package 'purrr' was built under R version 4.3.1
## Warning: package 'dplyr' was built under R version 4.3.1
## Warning: package 'forcats' was built under R version 4.3.1
## Warning: package 'lubridate' was built under R version 4.3.1
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::between() masks data.table::between()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::first() masks data.table::first()
## ✖ lubridate::hour() masks data.table::hour()
## ✖ lubridate::isoweek() masks data.table::isoweek()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::last() masks data.table::last()
## ✖ lubridate::mday() masks data.table::mday()
## ✖ lubridate::minute() masks data.table::minute()
## ✖ lubridate::month() masks data.table::month()
## ✖ lubridate::quarter() masks data.table::quarter()
## ✖ lubridate::second() masks data.table::second()
## ✖ purrr::transpose() masks data.table::transpose()
## ✖ lubridate::wday() masks data.table::wday()
## ✖ lubridate::week() masks data.table::week()
## ✖ lubridate::yday() masks data.table::yday()
## ✖ lubridate::year() masks data.table::year()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
std$traveltime <- std$traveltime %>% case_match( 1 ~ "7.5",
2 ~ "22.5",
3 ~ "52.5",
4 ~ "90")
3.1 Thống kê mô tả biến phụ thuộc
3.1.1 Lập bảng tần số
table(std$Dalc)
##
## 1 2 3 4 5
## 276 75 26 9 9
2.1.2 Lập bảng tần suất
table(std$Dalc)/length(std$Dalc)
##
## 1 2 3 4 5
## 0.69873418 0.18987342 0.06582278 0.02278481 0.02278481
2.1.3 Lập biểu đồ
std %>% group_by(Dalc) %>% summarise(n = n()) %>%
ggplot(aes(x=Dalc,y=n)) +
geom_col(fill = "#89CFF0")+
geom_text(aes(label =n),vjust = 1, color = "white")+
theme_bw()

Nhận xét: Biểu đồ cột và bảng ở trên thể hiện mức độ tiêu
thụ rượu của sinh viên trong 1 ngày qua các mức độ khác nhau. Theo khảo
sát thì mức tiêu thụ rượu của sinh viên trong 1 ngày với lượng rượu rất
thấp (1) và hầu như không tiêu thụ có 276 sinh viên chiếm khoảng 69,87%;
Mức tiêu thụ rượu của sinh viên trong 1 ngày với lượng rượu thấp (2) có
75 sinh viên chiếm khoảng 18,99%; Mức tiêu thụ rượu của sinh viên trong
1 ngày với lượng rượu trung bình (3) có 26 sinh viên chiếm khoảng 6,58%;
Mức tiêu thụ rượu của sinh viên trong 1 ngày với lượng rượu cao (4) và
rất cao (5) có 9 sinh viên chiếm khoảng 2,28% trong mỗi mức độ.
Biểu đồ tròn dưới đây cho thấy rõ hơn về mức độ tiêu thụ rượu của
sinh viên trong 1 ngày.
ap <- prop.table(table(std$Dalc)) * 100
ggplot(mapping = aes(x = "", y = ap, fill = factor(names(ap)))) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Phân bố mức độ tiêu thụ rượu trong 1 ngày",
fill = "Mức tiêu thụ") +
theme_void() +
geom_text(aes(label = paste0(round(ap, 1), "%")),
position = position_stack(vjust = 0.5))
## Don't know how to automatically pick scale for object of type <table>.
## Defaulting to continuous.

3.2 Thống kê mô tả biến độc lập
3.2.1 Biến age
3.2.1.1 Lập bảng tần số
table(std$age)
##
## 15 16 17 18 19 20 21 22
## 82 104 98 82 24 3 1 1
3.2.1.2 Lập bảng tần suất
table(std$age)/length(std$age)
##
## 15 16 17 18 19 20
## 0.207594937 0.263291139 0.248101266 0.207594937 0.060759494 0.007594937
## 21 22
## 0.002531646 0.002531646
3.2.1.3 Lập biểu đồ
std %>% group_by(age) %>% summarise(n = n()) %>%
ggplot(aes(x=age,y=n)) +
geom_col(fill ="#F98866")+
geom_text(aes(label =n),vjust = 1, color = "#FFF2D7")+
theme_bw()

Nhận xét: Biểu đồ cột và bảng ở trên thể hiện các độ tuổi
khác nhau của sinh viên. Theo khảo sát thì có 82 sinh viên trong độ tuổi
15 chiếm khoảng 20,76%; Có 104 sinh viên trong độ tuổi 16 chiếm khoảng
26,33%; Có 98 sinh viên trong độ tuổi 17 chiếm khoảng 24,81%; Có 82 sinh
viên trong độ tuổi 18 chiếm khoảng 20,76%; Có 24 sinh viên trong độ tuổi
19 chiếm khoảng 6,08%; Có 3 sinh viên trong độ tuổi 20 chiếm khoảng
0,76%; Trong độ tuổi 21 và 22, mỗi độ tuổi có 1 sinh viên chiếm khoảng
0,25%.
3.2.2 Biến sex
3.2.2.1 Lập bảng tần số
table(std$sex)
##
## F M
## 208 187
3.2.2.2 Lập bảng tần suất
table(std$sex)/length(std$sex)
##
## F M
## 0.5265823 0.4734177
3.2.2.3 Lập biểu đồ
std %>% group_by(sex) %>% summarise(n = n()) %>%
ggplot(aes(x=sex,y=n)) +
geom_col(fill ="pink")+
geom_text(aes(label =n),vjust = 1, color = "white")+
theme_bw()

Nhận xét: Biểu đồ cột và bảng ở trên thể hiện giới tính của
sinh viên. Theo khảo sát thì có 208 sinh viên thuộc giới tính nữ chiếm
khoảng 52,66% và có 187 sinh viên thuộc giới tính nam chiếm khoảng
47,34%.
3.2.3 Biến Pstatus
3.2.3.1 Lập bảng tần số
table(std$Pstatus)
##
## A T
## 41 354
3.2.3.2 Lập bảng tần suất
table(std$Pstatus)/length(std$Pstatus)
##
## A T
## 0.1037975 0.8962025
3.2.3.3 Lập biểu đồ
std %>% group_by(Pstatus) %>% summarise(n = n()) %>%
ggplot(aes(x=Pstatus,y=n)) +
geom_col(fill ="#2BAE66FF")+
geom_text(aes(label =n),vjust = 1, color = "white")+
theme_bw()

Nhận xét: Biểu đồ cột và bảng ở trên thể hiện tình trạng
sống chung của cha mẹ sinh viên. Theo khảo sát thì có 41 sinh viên ở
tình trạng cha mẹ sống xa nhau chiếm khoảng 10,38%; Có 354 sinh viên ở
tình trạng cha mẹ vẫn sống chung với nhau chiếm khoảng 89,62%.
3.2.4 Biến traveltime
3.2.4.1 Lập bảng tần số
table(std$traveltime)
##
## 22.5 52.5 7.5 90
## 107 23 257 8
3.2.4.2 Lập bảng tần suất
table(std$traveltime)/length(std$traveltime)
##
## 22.5 52.5 7.5 90
## 0.27088608 0.05822785 0.65063291 0.02025316
3.2.4.3 Lập biểu đồ
std %>% group_by(traveltime) %>% summarise(n = n()) %>%
ggplot(aes(x=traveltime,y=n)) +
geom_col(fill ="violet")+
geom_text(aes(label =n),vjust = 1, color = "white")+
theme_bw()

Nhận xét: Biểu đồ cột và bảng ở trên thể hiện thời gian sinh
viên di chuyển tới trường. Theo khảo sát thì có 107 sinh viên di chuyển
tới trường trong khoảng 22,5 phút chiếm 27,09%; Có 23 sinh viên di
chuyển tới trường trong khoảng 52,5 phút chiếm 5,82%; Có 257 sinh viên
di chuyển tới trường trong khoảng 7,5 phút chiếm 65,06% và có 8 sinh
viên di chuyển tới trường trong khoảng 90 phút chiếm 2,03%. Số lượng
sinh viên nhà gần trường và thời gian di chuyển tới trường nhanh nhất
chiếm đại đa số.
3.3 Thống kê mô tả cho 2 biến
3.3.1 Biến Dalc và age
3.3.1.1 Lập bảng tần số
table(std$Dalc, std$age) %>% addmargins()
##
## 15 16 17 18 19 20 21 22 Sum
## 1 62 76 65 54 17 2 0 0 276
## 2 14 18 22 18 3 0 0 0 75
## 3 4 6 6 5 4 0 1 0 26
## 4 1 1 3 3 0 1 0 0 9
## 5 1 3 2 2 0 0 0 1 9
## Sum 82 104 98 82 24 3 1 1 395
3.3.1.2 Lập bảng tần suất
htnh <- table(std$Dalc,std$age)
htnh <- prop.table(htnh)
addmargins(htnh)
##
## 15 16 17 18 19 20
## 1 0.156962025 0.192405063 0.164556962 0.136708861 0.043037975 0.005063291
## 2 0.035443038 0.045569620 0.055696203 0.045569620 0.007594937 0.000000000
## 3 0.010126582 0.015189873 0.015189873 0.012658228 0.010126582 0.000000000
## 4 0.002531646 0.002531646 0.007594937 0.007594937 0.000000000 0.002531646
## 5 0.002531646 0.007594937 0.005063291 0.005063291 0.000000000 0.000000000
## Sum 0.207594937 0.263291139 0.248101266 0.207594937 0.060759494 0.007594937
##
## 21 22 Sum
## 1 0.000000000 0.000000000 0.698734177
## 2 0.000000000 0.000000000 0.189873418
## 3 0.002531646 0.000000000 0.065822785
## 4 0.000000000 0.000000000 0.022784810
## 5 0.000000000 0.002531646 0.022784810
## Sum 0.002531646 0.002531646 1.000000000
3.3.1.3 Lập biểu đồ
std %>% group_by(Dalc,age) %>% summarise(n = n()) %>%
ggplot(aes(x=Dalc,y=n, fill = age)) +
geom_col(position = 'dodge')+
theme_bw()
## `summarise()` has grouped output by 'Dalc'. You can override using the
## `.groups` argument.

Nhận xét: Biểu đồ trên thể hiện mức độ tiêu thụ rượu của
sinh viên thông qua các độ tuổi như sau:
Ở mức độ tiêu thụ rượu rất thấp (1), số lượng sinh viên ở độ tuổi
15 có 62 sinh viên chiếm 15,67%; số lượng sinh viên ở độ tuổi 16 có 76
sinh viên chiếm 19,24%; số lượng sinh viên ở độ tuổi 17 có 65 sinh viên
chiếm 16,46%; số lượng sinh viên ở độ tuổi 18 có 54 sinh viên chiếm
13,67%; số lượng sinh viên ở độ tuổi 19 có 17 sinh viên chiếm 4,3%; số
lượng sinh viên ở độ tuổi 20 có 2 sinh viên chiếm 0,5%; ở độ tuổi 21 và
22 không có sinh viên nào chiếm 0%.
Ở mức độ tiêu thụ rượu thấp (2), số lượng sinh viên ở độ tuổi 15
có 14 sinh viên chiếm 3,54%; số lượng sinh viên ở độ tuổi 16 có 18 sinh
viên chiếm 4,56%; số lượng sinh viên ở độ tuổi 17 có 22 sinh viên chiếm
5,57%; số lượng sinh viên ở độ tuổi 18 có 18 sinh viên chiếm 4,56%; số
lượng sinh viên ở độ tuổi 19 có 3 sinh viên chiếm 0,76%; ở độ tuổi 20.
21 và 22 không có sinh viên nào chiếm 0%.
Ở mức độ tiêu thụ rượu trung bình (3), số lượng sinh viên ở độ
tuổi 15 có 4 sinh viên chiếm 1,01%; số lượng sinh viên ở độ tuổi 16 có 6
sinh viên chiếm 1,52%; số lượng sinh viên ở độ tuổi 17 có 6 sinh viên
chiếm 1,52%; số lượng sinh viên ở độ tuổi 18 có 5 sinh viên chiếm 1,27%;
số lượng sinh viên ở độ tuổi 19 có 4 sinh viên chiếm 1,01%; số lượng
sinh viên ở độ tuổi 21 có 1 sinh viên chiếm 0,25%; ở độ tuổi 20 và 22
không có sinh viên nào chiếm 0%.
Ở mức độ tiêu thụ rượu cao (4), số lượng sinh viên ở độ tuổi 15
có 1 sinh viên chiếm 2,53%; số lượng sinh viên ở độ tuổi 16 có 1 sinh
viên chiếm 2,53%; số lượng sinh viên ở độ tuổi 17 có 3 sinh viên chiếm
0,76%; số lượng sinh viên ở độ tuổi 18 có 3 sinh viên chiếm 0,76%; số
lượng sinh viên ở độ tuổi 20 có 1 sinh viên chiếm 0,25%; ở độ tuổi 19,
21 và 22 không có sinh viên nào chiếm 0%.
Ở mức độ tiêu thụ rượu rất cao (5), số lượng sinh viên ở độ tuổi
15 có 1 sinh viên chiếm 0,25%; số lượng sinh viên ở độ tuổi 16 có 3 sinh
viên chiếm 0,76%; số lượng sinh viên ở độ tuổi 17 có 2 sinh viên chiếm
0,5%; số lượng sinh viên ở độ tuổi 18 có 2 sinh viên chiếm 0,5%; số
lượng sinh viên ở độ tuổi 19 có 2 sinh viên chiếm 4,3%; số lượng sinh
viên ở độ tuổi 22 có 1 sinh viên chiếm 0,5%; ở độ tuổi 19, 20 và 21
không có sinh viên nào chiếm 0%.
3.3.2 Biến Dalc và sex
3.3.2.1 Lập bảng tần số
table(std$Dalc, std$sex) %>% addmargins()
##
## F M Sum
## 1 167 109 276
## 2 33 42 75
## 3 5 21 26
## 4 2 7 9
## 5 1 8 9
## Sum 208 187 395
3.3.2.2 Lập bảng tần suất
htnh <- table(std$Dalc,std$sex)
htnh <- prop.table(htnh)
addmargins(htnh)
##
## F M Sum
## 1 0.422784810 0.275949367 0.698734177
## 2 0.083544304 0.106329114 0.189873418
## 3 0.012658228 0.053164557 0.065822785
## 4 0.005063291 0.017721519 0.022784810
## 5 0.002531646 0.020253165 0.022784810
## Sum 0.526582278 0.473417722 1.000000000
3.3.2.3 Lập biểu đồ
std %>% group_by(Dalc,sex) %>% summarise(n = n()) %>%
ggplot(aes(x=Dalc,y=n, fill = sex)) +
geom_col(position = 'dodge')+
theme_bw()
## `summarise()` has grouped output by 'Dalc'. You can override using the
## `.groups` argument.

Nhận xét: Bảng và biểu đồ trên thể hiện mức độ tiêu thụ rượu
của sinh viên qua giới tính như sau:
Ở mức độ tiêu thụ rượu rất thấp (1), có 167 sinh viên nữ chiếm
42,28% và có 109 sinh viên nam chiếm 27,59%.
Ở mức độ tiêu thụ rượu thấp (2), có 33 sinh viên nữ chiếm 8,35%
và có 42 sinh viên nam chiếm 10,63%.
Ở mức độ tiêu thụ rượu trung bình (3), có 5 sinh viên nữ chiếm
1,27% và có 21 sinh viên nam chiếm 5,32%.
Ở mức độ tiêu thụ rượu cao (4), có 2 sinh viên nữ chiếm 0,5% và
có 7 sinh viên nam chiếm 1,77%.
Ở mức độ tiêu thụ rượu rất cao (5), có 1 sinh viên nữ chiếm 0,25%
và có 8 sinh viên nam chiếm 2,03%.
3.3.3 Biến Dalc và Pstatus
3.3.3.1 Lập bảng tần số
table(std$Dalc, std$Pstatus) %>% addmargins()
##
## A T Sum
## 1 29 247 276
## 2 5 70 75
## 3 4 22 26
## 4 2 7 9
## 5 1 8 9
## Sum 41 354 395
3.3.3.2 Lập bảng tần suất
htnh <- table(std$Dalc,std$Pstatus)
htnh <- prop.table(htnh)
addmargins(htnh)
##
## A T Sum
## 1 0.073417722 0.625316456 0.698734177
## 2 0.012658228 0.177215190 0.189873418
## 3 0.010126582 0.055696203 0.065822785
## 4 0.005063291 0.017721519 0.022784810
## 5 0.002531646 0.020253165 0.022784810
## Sum 0.103797468 0.896202532 1.000000000
std %>% group_by(Dalc,Pstatus) %>% summarise(n = n()) %>%
ggplot(aes(x=Dalc,y=n, fill = Pstatus)) +
geom_col(position = 'dodge')+
theme_bw()
## `summarise()` has grouped output by 'Dalc'. You can override using the
## `.groups` argument.

Nhận xét: Bảng và biểu đồ trên thể hiện mức độ tiêu thụ rượu
của sinh viên qua tình trạng sống chung của cha mẹ như sau:
Ở mức độ tiêu thụ rượu rất thấp (1), có 29 sinh viên có cha mẹ
sống xa nhau chiếm 7,34% và có 247 sinh viên có cha mẹ sống chung với
nhau chiếm 62,53%.
Ở mức độ tiêu thụ rượu thấp (2), có 5 sinh viên có cha mẹ sống xa
nhau chiếm 1,27% và có 70 sinh viên có cha mẹ sống chung với nhau chiếm
17,72%.
Ở mức độ tiêu thụ rượu trung bình (3), có 4 sinh viên có cha mẹ
sống xa nhau chiếm 1,01% và có 22 sinh viên có cha mẹ sống chung với
nhau chiếm 5,57%.
Ở mức độ tiêu thụ rượu cao (4), có 2 sinh viên có cha mẹ sống xa
nhau chiếm 0,5% và có 7 sinh viên có cha mẹ sống chung với nhau chiếm
1,77%.
Ở mức độ tiêu thụ rượu rất cao (5), có 1 sinh viên có cha mẹ sống
xa nhau chiếm 0,25% và có 8 sinh viên có cha mẹ sống chung với nhau
chiếm 2,02%.
3.3.4 Biến Dalc và traveltime
3.3.4.1 Lập bảng tần số
table(std$Dalc, std$traveltime) %>% addmargins()
##
## 22.5 52.5 7.5 90 Sum
## 1 77 13 183 3 276
## 2 22 5 47 1 75
## 3 3 4 18 1 26
## 4 3 1 4 1 9
## 5 2 0 5 2 9
## Sum 107 23 257 8 395
3.3.4.2 Lập bảng tần suất
htnh <- table(std$Dalc,std$traveltime)
htnh <- prop.table(htnh)
addmargins(htnh)
##
## 22.5 52.5 7.5 90 Sum
## 1 0.194936709 0.032911392 0.463291139 0.007594937 0.698734177
## 2 0.055696203 0.012658228 0.118987342 0.002531646 0.189873418
## 3 0.007594937 0.010126582 0.045569620 0.002531646 0.065822785
## 4 0.007594937 0.002531646 0.010126582 0.002531646 0.022784810
## 5 0.005063291 0.000000000 0.012658228 0.005063291 0.022784810
## Sum 0.270886076 0.058227848 0.650632911 0.020253165 1.000000000
3.3.4.3 Lập biểu đồ
std %>% group_by(Dalc,traveltime) %>% summarise(n = n()) %>%
ggplot(aes(x=Dalc,y=n, fill = traveltime)) +
geom_col(position = 'dodge')+
theme_bw()
## `summarise()` has grouped output by 'Dalc'. You can override using the
## `.groups` argument.

Nhận xét: Biểu đồ trên thể hiện mức độ tiêu thụ rượu của
sinh viên thông qua thời gian di chuyển tới trường như sau:
Ở mức độ tiêu thụ rượu rất thấp (1), có 77 sinh viên di chuyển
tới trường trong khoảng 22,5 phút chiếm 19,49%; có 13 sinh viên di
chuyển tới trường trong khoảng 52,5 phút chiếm 3,29%; có 183 sinh viên
di chuyển tới trường trong khoảng 7,5 phút chiếm 46,33%; có 3 sinh viên
di chuyển tới trường trong khoảng 90 phút chiếm 0,76%.
Ở mức độ tiêu thụ rượu thấp (2), có 22 sinh viên di chuyển tới
trường trong khoảng 22,5 phút chiếm 5,57%; có 5 sinh viên di chuyển tới
trường trong khoảng 52,5 phút chiếm 1,27%; có 47 sinh viên di chuyển tới
trường trong khoảng 7,5 phút chiếm 11,9%; có 1 sinh viên di chuyển tới
trường trong khoảng 90 phút chiếm 0,25%.
Ở mức độ tiêu thụ rượu trung bình (3), có 3 sinh viên di chuyển
tới trường trong khoảng 22,5 phút chiếm 7,6%; có 4 sinh viên di chuyển
tới trường trong khoảng 52,5 phút chiếm 1,01%; có 18 sinh viên di chuyển
tới trường trong khoảng 7,5 phút chiếm 4,56%; có 1 sinh viên di chuyển
tới trường trong khoảng 90 phút chiếm 0,25%.
Ở mức độ tiêu thụ rượu cao (4), có 3 sinh viên di chuyển tới
trường trong khoảng 22,5 phút chiếm 0,76%; có 1 sinh viên di chuyển tới
trường trong khoảng 52,5 phút chiếm 0,25%; có 4 sinh viên di chuyển tới
trường trong khoảng 7,5 phút chiếm 1,01%; có 1 sinh viên di chuyển tới
trường trong khoảng 90 phút chiếm 0,25%.
Ở mức độ tiêu thụ rượu rất cao (5), có 2 sinh viên di chuyển tới
trường trong khoảng 22,5 phút chiếm 0,5%; không có sinh viên nào di
chuyển tới trường trong khoảng 52,5 phút chiếm 0%; có 5 sinh viên di
chuyển tới trường trong khoảng 7,5 phút chiếm 1,27%; có 2 sinh viên di
chuyển tới trường trong khoảng 90 phút chiếm 0,5%.
LS0tDQp0aXRsZTogIlRJ4buCVSBMVeG6rE4gTcOUTiBQSMOCTiBUw41DSCBE4buuIExJ4buGVSDEkOG7ik5IIFTDjU5IIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgcGRmX2RvY3VtZW50Og0KICAgIGV4dHJhX2RlcGVuZGVuY2llczoNCiAgICAgIHZpZXRuYW06IHV0ZjgNCiAgICB0b2M6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogIHdvcmRfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KZ2VvbWV0cnk6DQogICAgICAtIGlubmVyPTNjbQ0KICAgICAgLSBvdXRlcj00Y20NCiAgICAgIC0gdG9wPTNjbQ0KICAgICAgLSBib3R0b209NGNtDQogICAgICAtIGhlYWRzZXA9MjJwdA0KICAgICAgLSBoZWFkaGVpZ2h0PTExcHQNCiAgICAgIC0gZm9vdHNraXA9MzNwdA0KICAgICAgLSBpZ25vcmVoZWFkDQogICAgICAtIGlnbm9yZWZvb3QNCiAgICAgIC0gaGVpZ2h0cm91bmRlZA0KLS0tDQpHVkhEOiBUaFMuIFRy4bqnbiBN4bqhbmggVMaw4budbmcNCg0KTmjDs20gc2luaCB2acOqbjogDQoNCjEpIE1haSBUaOG7iyBIb8OgaSBUaMawxqFuZyAtIDIxMjEwMDE1NDYNCg0KMikgTmd1eeG7hW4gVGjhu4sgTmfhu41jIEjDoCAtIDIxMjEwMTI0NzQNCg0KIyMgxJDhu4EgdMOgaTogUEjDgk4gVMONQ0ggTkjhu65ORyBZ4bq+VSBU4buQIOG6ok5IIEjGr+G7nk5HIMSQ4bq+TiBN4buoQyDEkOG7mCBUScOKVSBUSOG7pCBSxq/hu6JVIEPhu6ZBIFNJTkggVknDik4uDQoNCkThu68gbGnhu4d1ICJTdHVkZW50IEFsY29ob2wgQ29uc3VtcHRpb24gRURBIiB04burIEthZ2dsZSBjdW5nIGPhuqVwIHRow7RuZyB0aW4gY2hpIHRp4bq/dCB24buBIHZp4buHYyBzaW5oIHZpw6puIHRpw6p1IHRo4bulIHLGsOG7o3UgdOG6oWkgY8OhYyB0csaw4budbmcgdHJ1bmcgaOG7jWMg4bufIELhu5MgxJDDoG8gTmhhLiBC4buZIGThu68gbGnhu4d1IG7DoHkga2jDtG5nIGNo4buJIHThuq1wIHRydW5nIHbDoG8gaMOgbmggdmkgdGnDqnUgdGjhu6Ugcsaw4bujdSBtw6AgY8OybiBiYW8gZ+G7k20gY8OhYyB0aMO0bmcgdGluIHbhu4EgbcO0aSB0csaw4budbmcgZ2lhIMSRw6xuaCB2w6AgeMOjIGjhu5lpIGPhu6dhIHNpbmggdmnDqm4sIGJhbyBn4buTbSB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gY+G7p2EgY2hhIG3hurkgdsOgIG5nxrDhu51pIGdpw6FtIGjhu5kuIE3hu6VjIMSRw61jaCBj4bunYSBuZ2hpw6puIGPhu6l1IGzDoCDEkeG7gyBoaeG7g3UgcsO1IGjGoW4gduG7gSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBjw6FjIHnhur91IHThu5EgbsOgeSB2w6AgdGjDs2kgcXVlbiB0acOqdSB0aOG7pSByxrDhu6N1IGPhu6dhIGjhu41jIHNpbmguIEThu68gbGnhu4d1IMSRxrDhu6NjIHRodSB0aOG6rXAgdOG7qyBjw6FjIGN14buZYyBraOG6o28gc8OhdCB0cm9uZyBj4buZbmcgxJHhu5NuZyBo4buNYyDEkcaw4budbmcsIG1hbmcgbOG6oWkgY8ahIGjhu5lpIMSR4buDIG5naGnDqm4gY+G7qXUgdMOhYyDEkeG7mW5nIGPhu6dhIG3DtGkgdHLGsOG7nW5nIHbDoCBnaWEgxJHDrG5oIMSR4buRaSB24bubaSBow6BuaCB2aSB0acOqdSB0aOG7pSByxrDhu6N1IOG7nyDEkeG7mSB0deG7lWkgc2luaCB2acOqbi4NCg0KIyBM4bucSSBD4bqiTSDGoE4NCg0KTOG7nWkgxJHhuqd1IHRpw6puLCBjaMO6bmcgZW0geGluIGfhu61pIGzhu51pIGPhuqNtIMahbiBjaMOibiB0aMOgbmggxJHhur9uIEdp4bqjbmcgdmnDqm4gLSBUaFMuIFRy4bqnbiBN4bqhbmggVMaw4budbmcuIFRyb25nIHF1w6EgdHLDrG5oIGjhu41jIHThuq1wIHbDoCB0w6xtIGhp4buDdSBtw7RuICJQaMOibiB0w61jaCBk4buvIGxp4buHdSDEkeG7i25oIHTDrW5oIiwgY2jDum5nIGVtIMSRw6Mgbmjhuq1uIMSRxrDhu6NjIHPhu7EgcXVhbiB0w6JtIGdpw7pwIMSR4buhLCBoxrDhu5tuZyBk4bqrbiB04bqtbiB0w6xuaCB2w6AgY+G7kW5nIGhp4bq/biB0w6JtIGh1eeG6v3QgY+G7p2EgdGjhuqd5LiBUaOG6p3kgxJHDoyBnacO6cCBjaMO6bmcgZW0gdMOtY2ggbMWpeSB0aMOqbSBuaGnhu4F1IGtp4bq/biB0aOG7qWMgxJHhu4MgY8OzIGPDoWkgbmjDrG4gaG/DoG4gdGhp4buHbiB2w6AgdOG7lW5nIHF1YW4gduG7gSBi4buZIG3DtG4gbsOgeS4gVOG7qyBuaOG7r25nIGtp4bq/biB0aOG7qWMgxJHGsOG7o2MgdGjhuqd5IHRydXnhu4FuIHThuqNpLCBjaMO6bmcgZW0gZOG6p24gaGnhu4N1IMSRxrDhu6NjIHThuqdtIHF1YW4gdHLhu41uZyBj4bunYSBtw7RuIGjhu41jIG3DoCBi4bqleSBsw6J1IG5heSBjw7JuIG5oaeG7gXUgdGjhuq9jIG3huq9jLiBUaMO0bmcgcXVhIGLDoGkgdGnhu4N1IGx14bqtbiBuw6B5LCBjaMO6bmcgZW0geGluIHRyw6xuaCBiw6B5IG5o4buvbmcgZ8OsIGNow7puZyBlbSDEkcOjIHTDrG0gaGnhu4N1IHbhu4EgbcO0biBo4buNYywgdsOgIGPhu6UgdGjhu4MgbMOgIGNow7puZyBlbSBs4buxYSBjaOG7jW4gxJHhu4EgdMOgaSAiUGjDom4gdMOtY2ggbmjhu69uZyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IGPhu6dhIHNpbmggdmnDqm4iDQoNCktp4bq/biB0aOG7qWMgbMOgIHbDtCBo4bqhbiBuaMawbmcgc+G7sSB0aeG6v3Agbmjhuq1uIGtp4bq/biB0aOG7qWMgY+G7p2EgYuG6o24gdGjDom4gbeG7l2kgY2jDum5nIGVtIGx1w7RuIGjhuqFuIGNo4bq/IG3hu5l0IGPDoWNoIG5o4bqldCDEkeG7i25oLiBEbyDEkcOzLCB0cm9uZyBxdcOhIHRyw6xuaCBob8OgbiB0aMOgbmggYsOgaSB0aeG7g3UgbHXhuq1uLCBjaOG6r2MgY2jhuq9uIGNow7puZyBlbSBraMO0bmcgdHLDoW5oIGto4buPaSBuaOG7r25nIHRoaeG6v3Ugc8OzdCwgduG6rXkgbsOqbiBjaMO6bmcgZW0gcuG6pXQgbW9uZyBuaOG6rW4gxJHGsOG7o2Mgbmjhu69uZyDEkcOzbmcgZ8OzcCDEkeG6v24gdOG7qyB0aOG6p3kgxJHhu4MgYsOgaSB0aeG7g3UgbHXhuq1uIGPhu6dhIG5ow7NtIMSRxrDhu6NjIGhvw6BuIHRoaeG7h24gaMahbi4NCg0KQ2jDum5nIGVtIGvDrW5oIGNow7pjIHRo4bqneSBz4bupYyBraOG7j2UsIGjhuqFuaCBwaMO6YyB2w6AgdGjDoG5oIGPDtG5nIHRyw6puIGNvbiDEkcaw4budbmcgc+G7sSBuZ2hp4buHcCBj4bunYSBtw6xuaC4NCg0KIyBDSMavxqBORyAxOiBU4buUTkcgUVVBTiBOR0hJw4pOIEPhu6hVDQoNCiMjIDEuMSBMw60gZG8gY2jhu41uIMSR4buBIHTDoGkNCg0KSGnhu4duIG5heSwgbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSBsw6AgbeG7mXQgaGnhu4duIHTGsOG7o25nIHBo4buVIGJp4bq/biB0cm9uZyDEkeG7nWkgc+G7kW5nIHNpbmggdmnDqm4uIE5oaeG7gXUgc2luaCB2acOqbiB0aGFtIGdpYSBjw6FjIGhv4bqhdCDEkeG7mW5nIHjDoyBo4buZaSBuaMawIHRp4buHYyB0w7luZywgZMOjIG5nb+G6oWkgdsOgIGPDoWMgc+G7sSBraeG6v24gY+G7p2EgdHLGsOG7nW5nLCBuxqFpIHLGsOG7o3UgdGjGsOG7nW5nIMSRxrDhu6NjIHBo4bulYyB24bulIHbDoCB0acOqdSB0aOG7pS4gTmhp4buBdSBzaW5oIHZpw6puIGtow7RuZyBjaOG7iSB14buRbmcgcsaw4bujdSBtw6AgY8OybiBs4bqhbSBk4bulbmcgbsOzLCB14buRbmcgxJHhur9uIG3hu6ljIHNheSB44buJbiB0aMaw4budbmcgeHV5w6puLiBUw6xuaCB0cuG6oW5nIG7DoHkgxJHhurdjIGJp4buHdCBwaOG7lSBiaeG6v24gdHJvbmcgY8OhYyBk4buLcCBs4buFLCBr4buzIG5naOG7iSB2w6AgY8OhYyBideG7lWkgdGnhu4djIGzhu5tuLiBWaeG7h2MgdeG7kW5nIHLGsOG7o3Ugc2F5IHjhu4luIGPDsyB0aOG7gyBk4bqrbiDEkeG6v24gbeG6pXQga2nhu4NtIHNvw6F0IGjDoG5oIHZpIHbDoCBnw6J5IHJhIG5oaeG7gXUgaOG6rXUgcXXhuqMgdGnDqnUgY+G7sWMgbmjGsCB0YWkgbuG6oW4sIGLhuqFvIGzhu7FjIHbDoCBjw6FjIHbhuqVuIMSR4buBIHbhu4Egc+G7qWMga2jhu49lLiBSxrDhu6N1IGtow7RuZyBjaOG7iSBsw6AgZMO5bmcgY2hvIG5o4buvbmcgY3Xhu5ljIHZ1aSBjaMahaSwgdGnhu4djIHTDuW5nLCBnaWFvIGzGsHUgYuG6oW4gYsOoIG3DoCBzaW5oIHZpw6puIGhp4buHbiBuYXkgY8OybiBkw7luZyByxrDhu6N1IMSR4buDIGdp4bqjaSB04buPYSBu4buXaSBideG7k24sIG5o4buvbmcgw6FwIGzhu7FjIHRyb25nIGjhu41jIHThuq1wLCBi4bqhbiBiw6gsIGdpYSDEkcOsbmgsIHTDrG5oIGPhuqNtIG7Dqm4gdmnhu4djIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiBoaeG7h24gbmF5IHLhuqV0IMSRw6FuZyBiw6FvIMSR4buZbmcuIFLGsOG7o3UgcuG6pXQgZOG7hSBkw6BuZyDEkcaw4bujYyB0aeG6v3AgY+G6rW4gdsOgIG5o4buvbmcgY2jhu5cgbMawdSB0aMO0bmcgcsaw4bujdSBraMO0bmcgxJHGsOG7o2MgZ2nDoW0gc8OhdCBjaOG6t3QgY2jhur0gbsOqbiBuZ8OgeSBjw6BuZyBsw6BtIGdpYSB0xINuZyBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1LlRo4buxYyB0cuG6oW5nIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiBoaeG7h24gbmF5IGzDoCBt4buZdCB24bqlbiDEkeG7gSBuZ2hpw6ptIHRy4buNbmcgY+G6p24gxJHGsOG7o2MgcXVhbiB0w6JtLiBWaeG7h2MgbmdoacOqbiBj4bupdSB2w6AgaGnhu4N1IHLDtSBoxqFuIHbhu4EgaMOgbmggdmkgdGnDqnUgdGjhu6Ugcsaw4bujdSBj4bunYSBzaW5oIHZpw6puIHPhur0gZ2nDunAgxJHGsGEgcmEgY8OhYyBiaeG7h24gcGjDoXAgZ2nDoW8gZOG7pWMsIHBow7JuZyBuZ+G7q2EgdsOgIGjhu5cgdHLhu6MgdGjDrWNoIGjhu6NwLCBuaOG6sW0gZ2nhuqNtIHRoaeG7g3Ugbmjhu69uZyBo4bqtdSBxdeG6oyB0acOqdSBj4buxYyB2w6AgYuG6o28gduG7hyBz4bupYyBraOG7j2UgdsOgIHTGsMahbmcgbGFpIGPhu6dhIHNpbmggdmnDqm4uDQoNCiMjIDEuMiBN4bulYyB0acOqdSBuZ2hpw6puIGPhu6l1DQoNCk3hu6VjIHRpw6p1IGPhu6dhIGNow7puZyB0w7RpIGzDoCBwaMOibiB0w61jaCBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbi4NCg0KIyMgMS4zIMSQ4buRaSB0xrDhu6NuZyB2w6AgcGjhuqFtIHZpIG5naGnDqm4gY+G7qXUNCg0KVOG6rXAgZOG7ryBsaeG7h3UgY2jhu6lhIHRow7RuZyB0aW4gdOG7qyBjdeG7mWMga2jhuqNvIHPDoXQgduG7gSBzaW5oIHZpw6puIGtow7NhIGjhu41jIFRvw6FuIOG7nyBoYWkgdHLGsOG7nW5nIHRydW5nIGjhu41jLiBC4buZIGThu68gbGnhu4d1IGNoxrBhIGPDoWMgdGjDtG5nIHRpbiBsacOqbiBxdWFuIMSR4bq/biBjw6FjIHNpbmggdmnDqm4gYmFvIGfhu5NtIDM5NSBxdWFuIHPDoXQgdHLDqm4gdOG7lW5nIDMyIGJp4bq/bi4NCg0KIyMgMS40IFBoxrDGoW5nIHBow6FwIG5naGnDqm4gY+G7qXUNCg0KQsOgaSBuZ2hpw6puIGPhu6l1IHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIGvhu7kgdGh14bqtdCB0aOG7kW5nIGvDqiB2w6AgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IMSR4buDIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IGNobyB0aOG6pXkgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSBj4bunYSBzaW5oIHZpw6puLg0KDQojIyAxLjUgS+G6v3QgY+G6pXUgYsOgaSBuZ2hpw6puIGPhu6l1DQoNCi0gQ2jGsMahbmcgMTogVOG7lW5nIHF1YW4gbmdoacOqbiBj4bupdS4NCg0KLSBDaMawxqFuZyAyOiBE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1Lg0KDQotIENoxrDGoW5nIDM6IFBow6JuIHTDrWNoIGThu68gbGnhu4d1Lg0KDQotIENoxrDGoW5nIDQ6IEvhur90IHF14bqjIG3DtCBow6xuaCBuZ2hpw6puIGPhu6l1Lg0KDQotIENoxrDGoW5nIDU6IEvhur90IGx14bqtbiB2w6Aga2h1eeG6v24gbmdo4buLLg0KDQojIENoxrDGoW5nIDI6IEThu64gTEnhu4ZVIE5HSEnDik4gQ+G7qFUNCg0KIyMgMi4xIEdp4bubaSB0aGnhu4d1IGLhu5kgZOG7ryBsaeG7h3UNCg0KQuG7mSBk4buvIGxp4buHdSBiYW8gZ+G7k20gMzk1IHF1YW4gc8OhdCB0csOqbiB04buVbmcgMzMgYmnhur9uIGPhu6dhIHNpbmggdmnDqm4ga2jDs2EgaOG7jWMgVG/DoW4gY+G7p2EgMiB0csaw4budbmcuIETGsOG7m2kgxJHDonkgbMOgIGNoaSB0aeG6v3QgdOG7q25nIGJp4bq/biB0csOqbiB04burbmcgcXVhbiBzw6F0IGtow6FjIG5oYXUNCg0KIyMgMi4yIE3DtCB04bqjIGPDoWMgYmnhur9uIHRyb25nIGLhu5kgZOG7ryBsaeG7h3UNCg0KLSBzY2hvb2w6IG5nw7RpIHRyxrDhu51uZyBzaW5oIHZpw6puIMSRYW5nIHRoZW8gaOG7jWMgKEdQOiBHYWJyaWVsIFBlcmVpcmE7IE1TOiBNb3VzaW5obyBkYSBTaWx2ZXJpYSkNCg0KLSBzZXg6IGdp4bubaSB0w61uaCBj4bunYSBzaW5oIHZpw6puIChGOiBu4buvOyBNOiBuYW0pDQoNCi0gYWdlOiDEkeG7mSB0deG7lWkgY+G7p2Egc2luaCB2acOqbiAoZ2nDoSB0cuG7iyB0cm9uZyBraG/huqNuZyB04burIDE1IC0gMjIgdHXhu5VpKQ0KDQotIGFkZHJlc3M6IG7GoWkg4bufIGPhu6dhIHNpbmggdmnDqm4gKFU6IHRow6BuaCB0aOG7izsgUjogbsO0bmcgdGjDtG4pDQoNCi0gZmFtc2l6ZTogc+G7kSB0aMOgbmggdmnDqm4gdHJvbmcgZ2lhIMSRw6xuaCAoTEUzOiDDrXQgaMahbiBob+G6t2MgYuG6sW5nIDMgbmfGsOG7nWk7IEdUMzogbmhp4buBdSBoxqFuIDMgbmfGsOG7nWkpDQoNCi0gUHN0YXR1czogdMOsbmggdHLhuqFuZyBz4buRbmcgY2h1bmcgY+G7p2EgY2hhIG3hurkgKFQ6IHPhu5FuZyBjaHVuZzsgQTogc+G7kW5nIHhhIG5oYXUpDQoNCi0gbWVkdTogdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIGPhu6dhIG3hurkgKDA6IGtow7RuZyBjw7M7IDE6IGdpw6FvIGThu6VjIHRp4buDdSBo4buNYyA0OyAyOiBo4buNYyB0cm9uZyBraG/huqNuZyBs4bubcCA1IC0gOTsgMzogZ2nDoW8gZOG7pWMgdHJ1bmcgaOG7jWMgY8ahIHPhu587IDQ6IGdpw6FvIGThu6VjIMSR4bqhaSBo4buNYykNCg0KLSBmZWR1OiB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gY+G7p2EgY2hhICgwOiBraMO0bmcgY8OzOyAxOiBnacOhbyBk4bulYyB0aeG7g3UgaOG7jWMgNDsgMjogaOG7jWMgdHJvbmcga2hv4bqjbmcgbOG7m3AgNSAtIDk7IDM6IGdpw6FvIGThu6VjIHRydW5nIGjhu41jIGPGoSBz4bufOyA0OiBnacOhbyBk4bulYyDEkeG6oWkgaOG7jWMpDQoNCi0gbWpvYjogY8O0bmcgdmnhu4djIGPhu6dhIG3hurkgKGF0IGhvbWU6IG7hu5lpIHRy4bujOyB0ZWFjaGVyOiBnacOhbyB2acOqbjsgaGVhbHRoOiDEkWnhu4F1IGTGsOG7oW5nOyBzZXJ2aWNlczogcGjhu6VjIHbhu6U7IG90aGVyOiBraMOhYykNCg0KLSBmam9iOiBjw7RuZyB2aeG7h2MgY+G7p2EgY2hhIChhdCBob21lOiBu4buZaSB0cuG7ozsgdGVhY2hlcjogZ2nDoW8gdmnDqm47IGhlYWx0aDogxJFp4buBdSBkxrDhu6FuZzsgc2VydmljZXM6IHBo4bulYyB24bulOyBvdGhlcjoga2jDoWMpDQoNCi0gcmVhc29uOiBsw70gZG8gc2luaCB2acOqbiBo4buNYyB0csaw4budbmcgbsOgeSAoaG9tZTogZ+G6p24gbmjDoDsgcmVwdXRhdGlvbjogZGFuaCB0aeG6v25nOyBjb3Vyc2U6IGtow7NhIGjhu41jOyBvdGhlcjoga2jDoWMpDQoNCi0gZ3VhcmRpYW46IG5nxrDhu51pIGdpw6FtIGjhu5kgKG1vdGhlcjogbeG6uTsgZmF0aGVyOiBjaGEpDQoNCi0gdHJhdmVsdGltZTogdGjhu51pIGdpYW4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nICgxOiA8IDE1IHBow7p0OyAyOiAxNSAtIDMwIHBow7p0OyAzOiAzMCBwaMO6dCAtIDEgdGnhur9uZzsgNDogPiAxIHRp4bq/bmcpDQoNCi0gc3R1ZHl0aW1lOiB0aOG7nWkgZ2lhbiBo4buNYyBow6BuZyB0deG6p24gKDE6IDwgMTUgcGjDunQ7IDI6IDIgLSA1IHRp4bq/bmc7IDM6IDUgLSAxMCB0aeG6v25nOyA0OiA+IDEwIHRp4bq/bmcpDQoNCi0gc2Nob29sc3VwOiBo4buXIHRy4bujIGdpw6FvIGThu6VjIGLhu5Ugc3VuZyAoeWVzOiBjw7M7IG5vOiBraMO0bmcpDQoNCi0gZmFtc3VwOiBo4buXIHRy4bujIGdpw6FvIGThu6VjIGdpYSDEkcOsbmggKHllczogY8OzOyBubzoga2jDtG5nKQ0KDQotIHBhaWQ6IHRy4bqjIHBow60gYuG7lSBzdW5nIHRyb25nIGtow7NhIGjhu41jICh5ZXM6IGPDszsgbm86IGtow7RuZykNCg0KLSBhY3Rpdml0aWVzOiBob+G6oXQgxJHhu5luZyBuZ2/huqFpIGtow7NhICh5ZXM6IGPDszsgbm86IGtow7RuZykNCg0KLSBudXJzZXJ5OiBzaW5oIHZpw6puIGPDsyDEkWkgaOG7jWMgbeG6q3UgZ2nDoW8ga2jDtG5nPyAoeWVzOiBjw7M7IG5vOiBraMO0bmcpDQoNCi0gaGlnaGVyOiBtdeG7kW4gaOG7jWMgbMOqbiBj4bqlcCBjYW8gaMahbiAoeWVzOiBjw7M7IG5vOiBraMO0bmcpDQoNCi0gaW50ZXJuZXQ6IHRydXkgY+G6rXAgbeG6oW5nIHThuqFpIG5ow6AgKHllczogY8OzOyBubzoga2jDtG5nKQ0KDQotIHJvbWFudGljOiBt4buRaSBxdWFuIGjhu4cgdMOsbmggY+G6o20gKHllczogY8OzOyBubzoga2jDtG5nKQ0KDQotIGZhbXJlbDogY2jhuqV0IGzGsOG7o25nIG3hu5FpIHF1YW4gaOG7hyBnaWEgxJHDrG5oICgxOiBy4bqldCB04buHOyAyOiB04buHOyAzOiBiw6xuaCB0aMaw4budbmc7IDQ6IHThu5F0OyA1OiB4deG6pXQgc+G6r2MpDQoNCi0gZ29vdXQ6IGNoxqFpIGPDuW5nIGLhuqFuIGLDqCAoMTogcuG6pXQgdOG7hzsgMjogdOG7hzsgMzogYsOsbmggdGjGsOG7nW5nOyA0OiB04buRdDsgNTogeHXhuqV0IHPhuq9jKQ0KDQotIGRhbGM6IG3hu6ljIHRpw6p1IHRo4bulIHLGsOG7o3UgdHJvbmcgMSBuZ8OgeSAoMTogcuG6pXQgdGjhuqVwOyAyOiB0aOG6pXA7IDM6IHRydW5nIGLDrG5oOyA0OiBjYW87IDU6IHLhuqV0IGNhbykNCg0KLSB3YWxjOiBt4bupYyB0acOqdSB0aOG7pSByxrDhu6N1IHbDoG8gY3Xhu5FpIHR14bqnbiAoMTogcuG6pXQgdGjhuqVwOyAyOiB0aOG6pXA7IDM6IHRydW5nIGLDrG5oOyA0OiBjYW87IDU6IHLhuqV0IGNhbykNCg0KLSBoZWF0aDogdMOsbmggdHLhuqFuZyBz4bupYyBraOG7j2UgaGnhu4duIHThuqFpICgxOiBy4bqldCB04buHOyAyOiB04buHOyAzOiBiw6xuaCB0aMaw4budbmc7IDQ6IHThu5F0OyA1OiBy4bqldCB04buRdCkNCg0KLSBhYnNlbmNlczogc+G7kSBs4bqnbiBuZ2jhu4kgaOG7jWMgKDAgLSA5MyBs4bqnbikNCg0KLSBHMTogxJFp4buDbSBo4buNYyBrw6wgMSAoMCAtIDIwIMSRaeG7g20pDQoNCi0gRzI6IMSRaeG7g20gaOG7jWMga8OsIDIgKDAgLSAyMCDEkWnhu4NtKQ0KDQotIEczOiDEkWnhu4NtIGjhu41jIGvDrCBjdeG7kWkgKDAgLSAyMCDEkWnhu4NtKQ0KDQojIyAyLjMgUXVhbiBzw6F0IHbhu4EgZOG7ryBsaeG7h3UNCmBgYHtyfQ0Kc3RkIDwtIHJlYWQuY3N2KCJzdHVkZW50LW1hdGguY3N2IiwgaGVhZGVyID0gVCkNCnN0cihzdGQpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQpkYXRhLnRhYmxlKHN0ZCkNCmBgYA0KDQpC4bqjbmcgdHLDqm4gY2hvIHRo4bqleSB04buVbmcgcXVhbiB0b8OgbiBi4buZIGThu68gbGnhu4d1IA0KIyMgMi40IE3DtCBow6xuaCDEkeG7gSB4deG6pXQNCg0KJCREYWxjID1cYmV0YV8wICsgXGJldGFfMSBcY2RvdCBhZ2UgKyBcYmV0YV8yIFxjZG90IHNleCArXGJldGFfMyBcY2RvdCBQc3RhdHVzICsgXGJldGFfNCBcY2RvdCB0cmF2ZWx0aW1lJCQNCg0KQ2jhu41uIGJp4bq/biBEYWxjIGzDoCBiaeG6v24gcGjhu6UgdGh14buZYy4gQ2jhu41uIGJp4bq/biBhZ2UsIHNleCwgUHN0YXR1cyB2w6AgdHJhdmVsdGltZSBsw6AgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KIyBDaMawxqFuZyAzOiBQSMOCTiBUw41DSCBE4buuIExJ4buGVQ0KYGBge3J9DQpzdGQgPC0gcmVhZC5jc3YoInN0dWRlbnQtbWF0aC5jc3YiLCBoZWFkZXIgPSBUKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpzdGQkdHJhdmVsdGltZSA8LSBzdGQkdHJhdmVsdGltZSAlPiUgY2FzZV9tYXRjaCggMSB+ICI3LjUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgMiB+ICIyMi41IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgfiAiNTIuNSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICA0IH4gIjkwIikNCmBgYA0KDQojIyAzLjEgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIHBo4bulIHRodeG7mWMNCg0KIyMjIDMuMS4xIEzhuq1wIGLhuqNuZyB04bqnbiBz4buRDQpgYGB7cn0NCnRhYmxlKHN0ZCREYWxjKQ0KYGBgDQoNCiMjIyAyLjEuMiBM4bqtcCBi4bqjbmcgdOG6p24gc3XhuqV0DQpgYGB7cn0NCnRhYmxlKHN0ZCREYWxjKS9sZW5ndGgoc3RkJERhbGMpDQpgYGANCg0KIyMjIDIuMS4zIEzhuq1wIGJp4buDdSDEkeG7kw0KYGBge3J9DQpzdGQgJT4lIGdyb3VwX2J5KERhbGMpICU+JSAgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSANCiAgICBnZ3Bsb3QoYWVzKHg9RGFsYyx5PW4pKSArIA0KICAgIGdlb21fY29sKGZpbGwgPSAiIzg5Q0ZGMCIpKw0KICAgIGdlb21fdGV4dChhZXMobGFiZWwgPW4pLHZqdXN0ID0gMSwgY29sb3IgPSAid2hpdGUiKSsNCiAgICB0aGVtZV9idygpDQpgYGANCg0KX05o4bqtbiB4w6l0Ol8gQmnhu4N1IMSR4buTIGPhu5l0IHbDoCBi4bqjbmcg4bufIHRyw6puIHRo4buDIGhp4buHbiBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IGPhu6dhIHNpbmggdmnDqm4gdHJvbmcgMSBuZ8OgeSBxdWEgY8OhYyBt4bupYyDEkeG7mSBraMOhYyBuaGF1LiBUaGVvIGto4bqjbyBzw6F0IHRow6wgbeG7qWMgdGnDqnUgdGjhu6Ugcsaw4bujdSBj4bunYSBzaW5oIHZpw6puIHRyb25nIDEgbmfDoHkgduG7m2kgbMaw4bujbmcgcsaw4bujdSBy4bqldCB0aOG6pXAgKDEpIHbDoCBo4bqndSBuaMawIGtow7RuZyB0acOqdSB0aOG7pSBjw7MgMjc2IHNpbmggdmnDqm4gY2hp4bq/bSBraG/huqNuZyA2OSw4NyU7IE3hu6ljIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiB0cm9uZyAxIG5nw6B5IHbhu5tpIGzGsOG7o25nIHLGsOG7o3UgdGjhuqVwICgyKSBjw7MgNzUgc2luaCB2acOqbiBjaGnhur9tIGtob+G6o25nIDE4LDk5JTsgTeG7qWMgdGnDqnUgdGjhu6Ugcsaw4bujdSBj4bunYSBzaW5oIHZpw6puIHRyb25nIDEgbmfDoHkgduG7m2kgbMaw4bujbmcgcsaw4bujdSB0cnVuZyBiw6xuaCAoMykgY8OzIDI2IHNpbmggdmnDqm4gY2hp4bq/bSBraG/huqNuZyA2LDU4JTsgTeG7qWMgdGnDqnUgdGjhu6Ugcsaw4bujdSBj4bunYSBzaW5oIHZpw6puIHRyb25nIDEgbmfDoHkgduG7m2kgbMaw4bujbmcgcsaw4bujdSBjYW8gKDQpIHbDoCBy4bqldCBjYW8gKDUpIGPDsyA5IHNpbmggdmnDqm4gY2hp4bq/bSBraG/huqNuZyAyLDI4JSB0cm9uZyBt4buXaSBt4bupYyDEkeG7mS4NCg0KQmnhu4N1IMSR4buTIHRyw7JuIGTGsOG7m2kgxJHDonkgY2hvIHRo4bqleSByw7UgaMahbiB24buBIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiB0cm9uZyAxIG5nw6B5Lg0KYGBge3J9DQphcCA8LSBwcm9wLnRhYmxlKHRhYmxlKHN0ZCREYWxjKSkgKiAxMDANCmdncGxvdChtYXBwaW5nID0gYWVzKHggPSAiIiwgeSA9IGFwLCBmaWxsID0gZmFjdG9yKG5hbWVzKGFwKSkpKSArDQogIGdlb21fYmFyKHdpZHRoID0gMSwgc3RhdCA9ICJpZGVudGl0eSIpICsNCiAgY29vcmRfcG9sYXIoInkiKSArDQogIGxhYnModGl0bGUgPSAiUGjDom4gYuG7kSBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHRyb25nIDEgbmfDoHkiLA0KICAgICAgIGZpbGwgPSAiTeG7qWMgdGnDqnUgdGjhu6UiKSArDQogIHRoZW1lX3ZvaWQoKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQoYXAsIDEpLCAiJSIpKSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKQ0KDQpgYGANCg0KIyMgMy4yIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biDEkeG7mWMgbOG6rXANCg0KIyMjIDMuMi4xIEJp4bq/biBhZ2UNCg0KIyMjIyAzLjIuMS4xIEzhuq1wIGLhuqNuZyB04bqnbiBz4buRDQpgYGB7cn0NCnRhYmxlKHN0ZCRhZ2UpDQpgYGANCg0KIyMjIyAzLjIuMS4yIEzhuq1wIGLhuqNuZyB04bqnbiBzdeG6pXQNCmBgYHtyfQ0KdGFibGUoc3RkJGFnZSkvbGVuZ3RoKHN0ZCRhZ2UpDQpgYGANCg0KIyMjIyAzLjIuMS4zIEzhuq1wIGJp4buDdSDEkeG7kw0KYGBge3J9DQpzdGQgJT4lIGdyb3VwX2J5KGFnZSkgJT4lICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIA0KICAgIGdncGxvdChhZXMoeD1hZ2UseT1uKSkgKyANCiAgICBnZW9tX2NvbChmaWxsID0iI0Y5ODg2NiIpKw0KICAgIGdlb21fdGV4dChhZXMobGFiZWwgPW4pLHZqdXN0ID0gMSwgY29sb3IgPSAiI0ZGRjJENyIpKw0KICAgIHRoZW1lX2J3KCkNCmBgYA0KDQpfTmjhuq1uIHjDqXQ6XyBCaeG7g3UgxJHhu5MgY+G7mXQgdsOgIGLhuqNuZyDhu58gdHLDqm4gdGjhu4MgaGnhu4duIGPDoWMgxJHhu5kgdHXhu5VpIGtow6FjIG5oYXUgY+G7p2Egc2luaCB2acOqbi4gVGhlbyBraOG6o28gc8OhdCB0aMOsIGPDsyA4MiBzaW5oIHZpw6puIHRyb25nIMSR4buZIHR14buVaSAxNSBjaGnhur9tIGtob+G6o25nIDIwLDc2JTsgQ8OzIDEwNCBzaW5oIHZpw6puIHRyb25nIMSR4buZIHR14buVaSAxNiBjaGnhur9tIGtob+G6o25nIDI2LDMzJTsgQ8OzIDk4IHNpbmggdmnDqm4gdHJvbmcgxJHhu5kgdHXhu5VpIDE3IGNoaeG6v20ga2hv4bqjbmcgMjQsODElOyBDw7MgODIgc2luaCB2acOqbiB0cm9uZyDEkeG7mSB0deG7lWkgMTggY2hp4bq/bSBraG/huqNuZyAyMCw3NiU7IEPDsyAyNCBzaW5oIHZpw6puIHRyb25nIMSR4buZIHR14buVaSAxOSBjaGnhur9tIGtob+G6o25nIDYsMDglOyBDw7MgMyBzaW5oIHZpw6puIHRyb25nIMSR4buZIHR14buVaSAyMCBjaGnhur9tIGtob+G6o25nIDAsNzYlOyBUcm9uZyDEkeG7mSB0deG7lWkgMjEgdsOgIDIyLCBt4buXaSDEkeG7mSB0deG7lWkgY8OzIDEgc2luaCB2acOqbiBjaGnhur9tIGtob+G6o25nIDAsMjUlLg0KDQojIyMgMy4yLjIgQmnhur9uIHNleA0KDQojIyMjIDMuMi4yLjEgTOG6rXAgYuG6o25nIHThuqduIHPhu5ENCmBgYHtyfQ0KdGFibGUoc3RkJHNleCkNCmBgYA0KDQojIyMjIDMuMi4yLjIgTOG6rXAgYuG6o25nIHThuqduIHN14bqldA0KYGBge3J9DQogdGFibGUoc3RkJHNleCkvbGVuZ3RoKHN0ZCRzZXgpDQpgYGANCg0KIyMjIyAzLjIuMi4zIEzhuq1wIGJp4buDdSDEkeG7kw0KYGBge3J9DQpzdGQgJT4lIGdyb3VwX2J5KHNleCkgJT4lICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIA0KICAgICBnZ3Bsb3QoYWVzKHg9c2V4LHk9bikpICsgDQogICAgIGdlb21fY29sKGZpbGwgPSJwaW5rIikrDQogICAgIGdlb21fdGV4dChhZXMobGFiZWwgPW4pLHZqdXN0ID0gMSwgY29sb3IgPSAid2hpdGUiKSsNCiAgICAgdGhlbWVfYncoKQ0KYGBgDQoNCl9OaOG6rW4geMOpdDpfIEJp4buDdSDEkeG7kyBj4buZdCB2w6AgYuG6o25nIOG7nyB0csOqbiB0aOG7gyBoaeG7h24gZ2nhu5tpIHTDrW5oIGPhu6dhIHNpbmggdmnDqm4uIFRoZW8ga2jhuqNvIHPDoXQgdGjDrCBjw7MgMjA4IHNpbmggdmnDqm4gdGh14buZYyBnaeG7m2kgdMOtbmggbuG7ryBjaGnhur9tIGtob+G6o25nIDUyLDY2JSB2w6AgY8OzIDE4NyBzaW5oIHZpw6puIHRodeG7mWMgZ2nhu5tpIHTDrW5oIG5hbSBjaGnhur9tIGtob+G6o25nIDQ3LDM0JS4NCg0KIyMjIDMuMi4zIEJp4bq/biBQc3RhdHVzDQoNCiMjIyMgMy4yLjMuMSBM4bqtcCBi4bqjbmcgdOG6p24gc+G7kQ0KYGBge3J9DQp0YWJsZShzdGQkUHN0YXR1cykNCmBgYA0KDQojIyMjIDMuMi4zLjIgTOG6rXAgYuG6o25nIHThuqduIHN14bqldA0KYGBge3J9DQp0YWJsZShzdGQkUHN0YXR1cykvbGVuZ3RoKHN0ZCRQc3RhdHVzKQ0KYGBgDQoNCiMjIyMgMy4yLjMuMyBM4bqtcCBiaeG7g3UgxJHhu5MNCmBgYHtyfQ0Kc3RkICU+JSBncm91cF9ieShQc3RhdHVzKSAlPiUgIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogICAgIGdncGxvdChhZXMoeD1Qc3RhdHVzLHk9bikpICsgDQogICAgIGdlb21fY29sKGZpbGwgPSIjMkJBRTY2RkYiKSsNCiAgICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9biksdmp1c3QgPSAxLCBjb2xvciA9ICJ3aGl0ZSIpKw0KICAgICB0aGVtZV9idygpDQpgYGANCg0KX05o4bqtbiB4w6l0Ol8gQmnhu4N1IMSR4buTIGPhu5l0IHbDoCBi4bqjbmcg4bufIHRyw6puIHRo4buDIGhp4buHbiB0w6xuaCB0cuG6oW5nIHPhu5FuZyBjaHVuZyBj4bunYSBjaGEgbeG6uSBzaW5oIHZpw6puLiBUaGVvIGto4bqjbyBzw6F0IHRow6wgY8OzIDQxIHNpbmggdmnDqm4g4bufIHTDrG5oIHRy4bqhbmcgY2hhIG3hurkgc+G7kW5nIHhhIG5oYXUgY2hp4bq/bSBraG/huqNuZyAxMCwzOCU7IEPDsyAzNTQgc2luaCB2acOqbiDhu58gdMOsbmggdHLhuqFuZyBjaGEgbeG6uSB24bqrbiBz4buRbmcgY2h1bmcgduG7m2kgbmhhdSBjaGnhur9tIGtob+G6o25nIDg5LDYyJS4NCg0KIyMjIDMuMi40IEJp4bq/biB0cmF2ZWx0aW1lDQoNCiMjIyMgMy4yLjQuMSBM4bqtcCBi4bqjbmcgdOG6p24gc+G7kQ0KYGBge3J9DQp0YWJsZShzdGQkdHJhdmVsdGltZSkNCmBgYA0KDQojIyMjIDMuMi40LjIgTOG6rXAgYuG6o25nIHThuqduIHN14bqldA0KYGBge3J9DQp0YWJsZShzdGQkdHJhdmVsdGltZSkvbGVuZ3RoKHN0ZCR0cmF2ZWx0aW1lKQ0KYGBgDQoNCiMjIyMgMy4yLjQuMyBM4bqtcCBiaeG7g3UgxJHhu5MNCmBgYHtyfQ0Kc3RkICU+JSBncm91cF9ieSh0cmF2ZWx0aW1lKSAlPiUgIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogICAgIGdncGxvdChhZXMoeD10cmF2ZWx0aW1lLHk9bikpICsgDQogICAgIGdlb21fY29sKGZpbGwgPSJ2aW9sZXQiKSsNCiAgICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9biksdmp1c3QgPSAxLCBjb2xvciA9ICJ3aGl0ZSIpKw0KICAgICB0aGVtZV9idygpDQpgYGANCg0KX05o4bqtbiB4w6l0Ol8gQmnhu4N1IMSR4buTIGPhu5l0IHbDoCBi4bqjbmcg4bufIHRyw6puIHRo4buDIGhp4buHbiB0aOG7nWkgZ2lhbiBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZy4gVGhlbyBraOG6o28gc8OhdCB0aMOsIGPDsyAxMDcgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgMjIsNSBwaMO6dCBjaGnhur9tIDI3LDA5JTsgQ8OzIDIzIHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDUyLDUgcGjDunQgY2hp4bq/bSA1LDgyJTsgQ8OzIDI1NyBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA3LDUgcGjDunQgY2hp4bq/bSA2NSwwNiUgdsOgIGPDsyA4IHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDkwIHBow7p0IGNoaeG6v20gMiwwMyUuIFPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBuaMOgIGfhuqduIHRyxrDhu51uZyB2w6AgdGjhu51pIGdpYW4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIG5oYW5oIG5o4bqldCBjaGnhur9tIMSR4bqhaSDEkWEgc+G7kS4NCg0KIyMgMy4zIFRo4buRbmcga8OqIG3DtCB04bqjIGNobyAyIGJp4bq/bg0KDQojIyMgMy4zLjEgQmnhur9uIERhbGMgdsOgIGFnZQ0KDQojIyMjIDMuMy4xLjEgTOG6rXAgYuG6o25nIHThuqduIHPhu5ENCmBgYHtyfQ0KdGFibGUoc3RkJERhbGMsIHN0ZCRhZ2UpICU+JSAgYWRkbWFyZ2lucygpDQpgYGANCg0KIyMjIyAzLjMuMS4yIEzhuq1wIGLhuqNuZyB04bqnbiBzdeG6pXQNCmBgYHtyfQ0KaHRuaCA8LSB0YWJsZShzdGQkRGFsYyxzdGQkYWdlKQ0KaHRuaCA8LSBwcm9wLnRhYmxlKGh0bmgpDQphZGRtYXJnaW5zKGh0bmgpDQpgYGANCg0KIyMjIyAzLjMuMS4zIEzhuq1wIGJp4buDdSDEkeG7kw0KYGBge3J9DQpzdGQgJT4lIGdyb3VwX2J5KERhbGMsYWdlKSAlPiUgIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogICAgIGdncGxvdChhZXMoeD1EYWxjLHk9biwgZmlsbCA9IGFnZSkpICsgDQogICAgIGdlb21fY29sKHBvc2l0aW9uID0gJ2RvZGdlJykrDQogICAgIHRoZW1lX2J3KCkNCmBgYA0KDQpfTmjhuq1uIHjDqXQ6XyBCaeG7g3UgxJHhu5MgdHLDqm4gdGjhu4MgaGnhu4duIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiB0aMO0bmcgcXVhIGPDoWMgxJHhu5kgdHXhu5VpIG5oxrAgc2F1OiANCg0KLSDhu54gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSBy4bqldCB0aOG6pXAgKDEpLCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNSBjw7MgNjIgc2luaCB2acOqbiBjaGnhur9tIDE1LDY3JTsgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTYgY8OzIDc2IHNpbmggdmnDqm4gY2hp4bq/bSAxOSwyNCU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDE3IGPDsyA2NSBzaW5oIHZpw6puIGNoaeG6v20gMTYsNDYlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxOCBjw7MgNTQgc2luaCB2acOqbiBjaGnhur9tIDEzLDY3JTsgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTkgY8OzIDE3IHNpbmggdmnDqm4gY2hp4bq/bSA0LDMlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAyMCBjw7MgMiBzaW5oIHZpw6puIGNoaeG6v20gMCw1JTsg4bufIMSR4buZIHR14buVaSAyMSB2w6AgMjIga2jDtG5nIGPDsyBzaW5oIHZpw6puIG7DoG8gY2hp4bq/bSAwJS4NCg0KLSDhu54gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSB0aOG6pXAgKDIpLCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNSBjw7MgMTQgc2luaCB2acOqbiBjaGnhur9tIDMsNTQlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNiBjw7MgMTggc2luaCB2acOqbiBjaGnhur9tIDQsNTYlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNyBjw7MgMjIgc2luaCB2acOqbiBjaGnhur9tIDUsNTclOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxOCBjw7MgMTggc2luaCB2acOqbiBjaGnhur9tIDQsNTYlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxOSBjw7MgMyBzaW5oIHZpw6puIGNoaeG6v20gMCw3NiU7IOG7nyDEkeG7mSB0deG7lWkgMjAuIDIxIHbDoCAyMiBraMO0bmcgY8OzIHNpbmggdmnDqm4gbsOgbyBjaGnhur9tIDAlLg0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHRydW5nIGLDrG5oICgzKSwgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTUgY8OzIDQgc2luaCB2acOqbiBjaGnhur9tIDEsMDElOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNiBjw7MgNiBzaW5oIHZpw6puIGNoaeG6v20gMSw1MiU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDE3IGPDsyA2IHNpbmggdmnDqm4gY2hp4bq/bSAxLDUyJTsgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTggY8OzIDUgc2luaCB2acOqbiBjaGnhur9tIDEsMjclOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxOSBjw7MgNCBzaW5oIHZpw6puIGNoaeG6v20gMSwwMSU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDIxIGPDsyAxIHNpbmggdmnDqm4gY2hp4bq/bSAwLDI1JTsg4bufIMSR4buZIHR14buVaSAyMCB2w6AgMjIga2jDtG5nIGPDsyBzaW5oIHZpw6puIG7DoG8gY2hp4bq/bSAwJS4NCg0KLSDhu54gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSBjYW8gKDQpLCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNSBjw7MgMSBzaW5oIHZpw6puIGNoaeG6v20gMiw1MyU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDE2IGPDsyAxIHNpbmggdmnDqm4gY2hp4bq/bSAyLDUzJTsgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTcgY8OzIDMgc2luaCB2acOqbiBjaGnhur9tIDAsNzYlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxOCBjw7MgMyBzaW5oIHZpw6puIGNoaeG6v20gMCw3NiU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDIwIGPDsyAxIHNpbmggdmnDqm4gY2hp4bq/bSAwLDI1JTsg4bufIMSR4buZIHR14buVaSAxOSwgMjEgdsOgIDIyIGtow7RuZyBjw7Mgc2luaCB2acOqbiBuw6BvIGNoaeG6v20gMCUuDQoNCi0g4bueIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgcuG6pXQgY2FvICg1KSwgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTUgY8OzIDEgc2luaCB2acOqbiBjaGnhur9tIDAsMjUlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxNiBjw7MgMyBzaW5oIHZpw6puIGNoaeG6v20gMCw3NiU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDE3IGPDsyAyIHNpbmggdmnDqm4gY2hp4bq/bSAwLDUlOyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4g4bufIMSR4buZIHR14buVaSAxOCBjw7MgMiBzaW5oIHZpw6puIGNoaeG6v20gMCw1JTsgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIOG7nyDEkeG7mSB0deG7lWkgMTkgY8OzIDIgc2luaCB2acOqbiBjaGnhur9tIDQsMyU7IHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDhu58gxJHhu5kgdHXhu5VpIDIyIGPDsyAxIHNpbmggdmnDqm4gY2hp4bq/bSAwLDUlOyDhu58gxJHhu5kgdHXhu5VpIDE5LCAyMCB2w6AgMjEga2jDtG5nIGPDsyBzaW5oIHZpw6puIG7DoG8gY2hp4bq/bSAwJS4NCg0KIyMjIDMuMy4yIEJp4bq/biBEYWxjIHbDoCBzZXgNCg0KIyMjIyAzLjMuMi4xIEzhuq1wIGLhuqNuZyB04bqnbiBz4buRDQpgYGB7cn0NCnRhYmxlKHN0ZCREYWxjLCBzdGQkc2V4KSAlPiUgIGFkZG1hcmdpbnMoKQ0KYGBgDQoNCiMjIyMgMy4zLjIuMiBM4bqtcCBi4bqjbmcgdOG6p24gc3XhuqV0DQpgYGB7cn0NCmh0bmggPC0gdGFibGUoc3RkJERhbGMsc3RkJHNleCkNCmh0bmggPC0gcHJvcC50YWJsZShodG5oKQ0KYWRkbWFyZ2lucyhodG5oKQ0KYGBgDQoNCiMjIyMgMy4zLjIuMyBM4bqtcCBiaeG7g3UgxJHhu5MNCmBgYHtyfQ0Kc3RkICU+JSBncm91cF9ieShEYWxjLHNleCkgJT4lICBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIA0KICAgICBnZ3Bsb3QoYWVzKHg9RGFsYyx5PW4sIGZpbGwgPSBzZXgpKSArIA0KICAgICBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpKw0KICAgICB0aGVtZV9idygpDQpgYGANCg0KX05o4bqtbiB4w6l0Ol8gQuG6o25nIHbDoCBiaeG7g3UgxJHhu5MgdHLDqm4gdGjhu4MgaGnhu4duIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiBxdWEgZ2nhu5tpIHTDrW5oIG5oxrAgc2F1Og0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHLhuqV0IHRo4bqlcCAoMSksIGPDsyAxNjcgc2luaCB2acOqbiBu4buvIGNoaeG6v20gNDIsMjglIHbDoCBjw7MgMTA5IHNpbmggdmnDqm4gbmFtIGNoaeG6v20gMjcsNTklLg0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHRo4bqlcCAoMiksIGPDsyAzMyBzaW5oIHZpw6puIG7hu68gY2hp4bq/bSA4LDM1JSB2w6AgY8OzIDQyIHNpbmggdmnDqm4gbmFtIGNoaeG6v20gMTAsNjMlLg0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHRydW5nIGLDrG5oICgzKSwgY8OzIDUgc2luaCB2acOqbiBu4buvIGNoaeG6v20gMSwyNyUgdsOgIGPDsyAyMSBzaW5oIHZpw6puIG5hbSBjaGnhur9tIDUsMzIlLg0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IGNhbyAoNCksIGPDsyAyIHNpbmggdmnDqm4gbuG7ryBjaGnhur9tIDAsNSUgdsOgIGPDsyA3IHNpbmggdmnDqm4gbmFtIGNoaeG6v20gMSw3NyUuDQoNCi0g4bueIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgcuG6pXQgY2FvICg1KSwgY8OzIDEgc2luaCB2acOqbiBu4buvIGNoaeG6v20gMCwyNSUgdsOgIGPDsyA4IHNpbmggdmnDqm4gbmFtIGNoaeG6v20gMiwwMyUuDQoNCiMjIyAzLjMuMyBCaeG6v24gRGFsYyB2w6AgUHN0YXR1cw0KDQojIyMjIDMuMy4zLjEgTOG6rXAgYuG6o25nIHThuqduIHPhu5ENCmBgYHtyfQ0KdGFibGUoc3RkJERhbGMsIHN0ZCRQc3RhdHVzKSAlPiUgIGFkZG1hcmdpbnMoKQ0KYGBgDQoNCiMjIyMgMy4zLjMuMiBM4bqtcCBi4bqjbmcgdOG6p24gc3XhuqV0DQpgYGB7cn0NCmh0bmggPC0gdGFibGUoc3RkJERhbGMsc3RkJFBzdGF0dXMpDQpodG5oIDwtIHByb3AudGFibGUoaHRuaCkNCmFkZG1hcmdpbnMoaHRuaCkNCmBgYA0KDQpgYGB7cn0NCnN0ZCAlPiUgZ3JvdXBfYnkoRGFsYyxQc3RhdHVzKSAlPiUgIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogICAgIGdncGxvdChhZXMoeD1EYWxjLHk9biwgZmlsbCA9IFBzdGF0dXMpKSArIA0KICAgICBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpKw0KICAgICB0aGVtZV9idygpDQpgYGANCg0KX05o4bqtbiB4w6l0Ol8gQuG6o25nIHbDoCBiaeG7g3UgxJHhu5MgdHLDqm4gdGjhu4MgaGnhu4duIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgY+G7p2Egc2luaCB2acOqbiBxdWEgdMOsbmggdHLhuqFuZyBz4buRbmcgY2h1bmcgY+G7p2EgY2hhIG3hurkgbmjGsCBzYXU6DQoNCi0g4bueIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgcuG6pXQgdGjhuqVwICgxKSwgY8OzIDI5IHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHPhu5FuZyB4YSBuaGF1IGNoaeG6v20gNywzNCUgdsOgIGPDsyAyNDcgc2luaCB2acOqbiBjw7MgY2hhIG3hurkgc+G7kW5nIGNodW5nIHbhu5tpIG5oYXUgY2hp4bq/bSA2Miw1MyUuDQoNCi0g4bueIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgdGjhuqVwICgyKSwgY8OzIDUgc2luaCB2acOqbiBjw7MgY2hhIG3hurkgc+G7kW5nIHhhIG5oYXUgY2hp4bq/bSAxLDI3JSB2w6AgY8OzIDcwIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHPhu5FuZyBjaHVuZyB24bubaSBuaGF1IGNoaeG6v20gMTcsNzIlLg0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHRydW5nIGLDrG5oICgzKSwgY8OzIDQgc2luaCB2acOqbiBjw7MgY2hhIG3hurkgc+G7kW5nIHhhIG5oYXUgY2hp4bq/bSAxLDAxJSB2w6AgY8OzIDIyIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHPhu5FuZyBjaHVuZyB24bubaSBuaGF1IGNoaeG6v20gNSw1NyUuDQoNCi0g4bueIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgY2FvICg0KSwgY8OzIDIgc2luaCB2acOqbiBjw7MgY2hhIG3hurkgc+G7kW5nIHhhIG5oYXUgY2hp4bq/bSAwLDUlIHbDoCBjw7MgNyBzaW5oIHZpw6puIGPDsyBjaGEgbeG6uSBz4buRbmcgY2h1bmcgduG7m2kgbmhhdSBjaGnhur9tIDEsNzclLg0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHLhuqV0IGNhbyAoNSksIGPDsyAxIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHPhu5FuZyB4YSBuaGF1IGNoaeG6v20gMCwyNSUgdsOgIGPDsyA4IHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHPhu5FuZyBjaHVuZyB24bubaSBuaGF1IGNoaeG6v20gMiwwMiUuDQoNCiMjIyAzLjMuNCBCaeG6v24gRGFsYyB2w6AgdHJhdmVsdGltZQ0KDQojIyMjIDMuMy40LjEgTOG6rXAgYuG6o25nIHThuqduIHPhu5ENCmBgYHtyfQ0KdGFibGUoc3RkJERhbGMsIHN0ZCR0cmF2ZWx0aW1lKSAlPiUgIGFkZG1hcmdpbnMoKQ0KYGBgDQoNCiMjIyMgMy4zLjQuMiBM4bqtcCBi4bqjbmcgdOG6p24gc3XhuqV0DQpgYGB7cn0NCmh0bmggPC0gdGFibGUoc3RkJERhbGMsc3RkJHRyYXZlbHRpbWUpDQpodG5oIDwtIHByb3AudGFibGUoaHRuaCkNCmFkZG1hcmdpbnMoaHRuaCkNCmBgYA0KDQojIyMjIDMuMy40LjMgTOG6rXAgYmnhu4N1IMSR4buTDQpgYGB7cn0NCnN0ZCAlPiUgZ3JvdXBfYnkoRGFsYyx0cmF2ZWx0aW1lKSAlPiUgIHN1bW1hcmlzZShuID0gbigpKSAlPiUgDQogICAgIGdncGxvdChhZXMoeD1EYWxjLHk9biwgZmlsbCA9IHRyYXZlbHRpbWUpKSArIA0KICAgICBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpKw0KICAgICB0aGVtZV9idygpDQpgYGANCg0KX05o4bqtbiB4w6l0Ol8gQmnhu4N1IMSR4buTIHRyw6puIHRo4buDIGhp4buHbiBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IGPhu6dhIHNpbmggdmnDqm4gdGjDtG5nIHF1YSB0aOG7nWkgZ2lhbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgbmjGsCBzYXU6IA0KDQotIOG7niBt4bupYyDEkeG7mSB0acOqdSB0aOG7pSByxrDhu6N1IHLhuqV0IHRo4bqlcCAoMSksIGPDsyA3NyBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyAyMiw1IHBow7p0IGNoaeG6v20gMTksNDklOyBjw7MgMTMgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgNTIsNSBwaMO6dCBjaGnhur9tIDMsMjklOyBjw7MgMTgzIHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDcsNSBwaMO6dCBjaGnhur9tIDQ2LDMzJTsgY8OzIDMgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgOTAgcGjDunQgY2hp4bq/bSAwLDc2JS4NCg0KLSDhu54gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSB0aOG6pXAgKDIpLCBjw7MgMjIgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgMjIsNSBwaMO6dCBjaGnhur9tIDUsNTclOyBjw7MgNSBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA1Miw1IHBow7p0IGNoaeG6v20gMSwyNyU7IGPDsyA0NyBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA3LDUgcGjDunQgY2hp4bq/bSAxMSw5JTsgY8OzIDEgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgOTAgcGjDunQgY2hp4bq/bSAwLDI1JS4NCg0KLSDhu54gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSB0cnVuZyBiw6xuaCAoMyksIGPDsyAzIHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDIyLDUgcGjDunQgY2hp4bq/bSA3LDYlOyBjw7MgNCBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA1Miw1IHBow7p0IGNoaeG6v20gMSwwMSU7IGPDsyAxOCBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA3LDUgcGjDunQgY2hp4bq/bSA0LDU2JTsgY8OzIDEgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgOTAgcGjDunQgY2hp4bq/bSAwLDI1JS4NCg0KLSDhu54gbeG7qWMgxJHhu5kgdGnDqnUgdGjhu6Ugcsaw4bujdSBjYW8gKDQpLCBjw7MgMyBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyAyMiw1IHBow7p0IGNoaeG6v20gMCw3NiU7IGPDsyAxIHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDUyLDUgcGjDunQgY2hp4bq/bSAwLDI1JTsgY8OzIDQgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgNyw1IHBow7p0IGNoaeG6v20gMSwwMSU7IGPDsyAxIHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDkwIHBow7p0IGNoaeG6v20gMCwyNSUuDQoNCi0g4bueIG3hu6ljIMSR4buZIHRpw6p1IHRo4bulIHLGsOG7o3UgcuG6pXQgY2FvICg1KSwgY8OzIDIgc2luaCB2acOqbiBkaSBjaHV54buDbiB04bubaSB0csaw4budbmcgdHJvbmcga2hv4bqjbmcgMjIsNSBwaMO6dCBjaGnhur9tIDAsNSU7IGtow7RuZyBjw7Mgc2luaCB2acOqbiBuw6BvIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA1Miw1IHBow7p0IGNoaeG6v20gMCU7IGPDsyA1IHNpbmggdmnDqm4gZGkgY2h1eeG7g24gdOG7m2kgdHLGsOG7nW5nIHRyb25nIGtob+G6o25nIDcsNSBwaMO6dCBjaGnhur9tIDEsMjclOyBjw7MgMiBzaW5oIHZpw6puIGRpIGNodXnhu4NuIHThu5tpIHRyxrDhu51uZyB0cm9uZyBraG/huqNuZyA5MCBwaMO6dCBjaGnhur9tIDAsNSUuDQog