PHÂN TÍCH
Đồ thị thể hiện số
lượng sinh viên theo dân tộc
Phân tích đồ thị có thể giúp các nhà giáo dục và các nhà hoạch định
chính sách hiểu rõ hơn về sự đa dạng của sinh viên trong các trường học
và cơ sở giáo dục. Điều này có thể giúp họ phát triển các chương trình
và dịch vụ tốt hơn để đáp ứng nhu cầu của tất cả sinh viên.
Ngoài ra, còn có thể giúp xác định các nhóm sinh viên thuộc các dân
tộc thiểu số bị thiệt thòi trong giáo dục. Điều này có thể giúp các nhà
giáo dục và các nhà hoạch định chính sách tập trung nguồn lực vào những
nhóm sinh viên này để đảm bảo rằng họ có cơ hội thành công như nhau.
tmp <- data
tmp %>% group_by(ethnicity) %>% summarise(n = n()) %>% ggplot(aes(ethnicity,n)) + geom_col(fill='green') + geom_text(aes(label = n),vjust = 2, color = 'red') + labs( title = "Hình 1: Đồ thị thể hiện số lượng sinh viên theo dân tộc") + labs( x ="Dân tộc", y = "Số lượng")

#group_by(ethnicity): Nhóm dữ liệu theo biến ethnicity.
#summarise(n = n()): Tính tổng số sinh viên cho mỗi nhóm dân tộc.
#ggplot(aes(ethnicity, n)): Tạo biểu đồ ggplot2 với trục x là ethnicity và trục y là n.
#geom_col(fill = 'green'): Thêm biểu đồ cột với màu xanh lá cây.
#geom_text(aes(label = n), vjust = 2, color = 'red'): Thêm chú thích văn bản hiển thị số lượng sinh viên cho mỗi nhóm dân tộc, với vị trí cao hơn một chút (vjust = 2) và màu đỏ.
Biểu đồ số lượng sinh viên của mỗi nhóm dân tộc ứng với 1 thanh, với
chiều cao của thanh biểu thị số lượng sinh viên trong nhóm đó.
Số lượng sinh viên thuộc các dân tộc khác nhiều hơn đáng kể so
với số lượng sinh viên thuộc các nhóm dân tộc người Mỹ gốc Phi(afam) và
người gốc Tây Ban Nha(hispanic), có 3.050 sinh viên, chiếm 64,36% trong
tổng số sinh viên đang theo học đại học.
Số lượng sinh viên thuộc dân tộc người Mỹ gốc Phi(afam) là 786
sinh viên, chiếm 16,59%, số lượng sinh viên thuộc dân tộc người gốc Tây
Ban Nha(hispanic) là 903 sinh viên, chiếm 19,05%
Kết luận: Việc phân tích đồ thị này có thể cung cấp
thông tin chi tiết về sự đa dạng của sinh viên trong các trường học và
cơ sở giáo dục và được sử dụng để cải thiện sự đa dạng và hòa nhập trong
giáo dục.
Đồ thị thể hiện điểm
trung bình của sinh viên theo dân tộc
Việc phân tích đồ thị có thể giúp các nhà giáo dục và các nhà hoạch
định chính sách hiểu rõ hơn về sự khác biệt về kết quả học tập của sinh
viên giữa các nhóm dân tộc. Điều này có thể giúp họ phát triển các
chương trình và dịch vụ tốt hơn để đáp ứng nhu cầu của tất cả sinh
viên.
Ngoài ra, còn có thể được sử dụng để đánh giá hiệu quả của các chương
trình và sáng kiến được thiết kế để thu hẹp khoảng cách điểm trung bình
giữa các nhóm dân tộc. Điều này có thể giúp các nhà giáo dục và các nhà
hoạch định chính sách xác định những chương trình nào đang hoạt động
hiệu quả và những chương trình nào cần được cải thiện.
Ví dụ: Một trường học có thể sử dụng phân tích đồ thị để xác định xem
có sự chênh lệch nào về điểm trung bình giữa các nhóm dân tộc hay không.
Một quận học có thể sử dụng phân tích đồ thị để xác định xem có sự chênh
lệch nào về tỷ lệ học sinh đạt điểm cao trong các kỳ thi chuẩn hóa giữa
các nhóm dân tộc hay không.
tmp <- data
tmp %>% group_by(ethnicity) %>% summarise(m= mean(score)) %>%
ggplot(aes(x = ethnicity,y = m)) +
geom_col(position = 'dodge') + geom_col(fill= 'red') +
geom_text(aes(label = round(m,2)), vjust = 2, color = 'white') +
labs(x = 'Dân tộc', y = 'Điểm trung bình') +labs( title = "Hình 2: Đồ thị thể hiện điểm trung bình của sinh viên")

#nhóm dữ liệu theo ethnicity và tính điểm trung bình (m = mean(score)) trong mỗi nhóm.
#Tạo ra một biểu đồ với trục x là ethnicity và trục y là điểm trung bình m. Tham số position = 'dodge' giúp các cột tránh chồng chéo lên nhau, dễ dàng phân biệt các nhóm dân tộc.
#geom_col(fill = 'red'): Dòng này tô màu đỏ (fill = 'red') cho các cột.
#geom_text(aes(label = round(m, 2)), vjust = 2, color = 'white'): Dòng này thêm nhãn vào các cột, hiển thị điểm trung bình được làm tròn đến 2 chữ số (round(m, 2)) cho mỗi nhóm. Vị trí của nhãn được điều chỉnh bằng vjust = 2 và màu sắc của nhãn được đặt thành trắng (color = 'white').
Biểu đồ kết quả sẽ hiển thị các cột hình thanh nằm cạnh nhau, một cột
cho mỗi nhóm dân tộc. Chiều cao của mỗi cột đại diện cho điểm trung bình
của biến score trong nhóm dân tộc đó. Nhãn trên mỗi cột hiển thị điểm
trung bình được làm tròn đến 2 chữ số. Nhìn chung thì tổng điểm trung
bình của sinh viên thuộc cả 3 nhóm dân tộc đều khá cao. Tuy nhiên, điểm
trung bình của sinh viên thuộc nhóm các dân tộc khác có tổng điểm trung
bình 53.17 điểm, cao hơn so với các nhóm dân tộc người Mỹ gốc Phi(afam)
và người gốc Tây Ban Nha(hispanic)
Kết luận: Đồ thị thể hiện điểm trung bình của sinh
viên theo dân tộc của bộ dữ liệu collegedistance cung cấp cho chúng ta
một số thông tin hữu ích về điểm số của sinh viên thuộc các nhóm dân tộc
khác nhau, từ đó giúp các nhà giáo dục và các nhà hoạch định chính sách
xác định những chương trình nào đang hoạt động hiệu quả và những chương
trình nào cần được cải thiện.
Đồ thị thể hiện số
lượng sinh viên theo xếp loại điểm số
Việc phân tích đồ thị này giúp giảng viên và nhà trường đánh giá hiệu
quả của các phương pháp giảng dạy và chương trình học. Xác định những
điểm mạnh và điểm yếu trong quá trình giảng dạy, từ đó đưa ra các giải
pháp cải tiến phù hợp.
Xác định xu hướng học tập của sinh viên theo thời gian, qua đó có thể
dự đoán nhu cầu học tập trong tương lai. Giúp các nhà hoạch định giáo
dục xây dựng chiến lược phát triển phù hợp với nhu cầu của sinh viên và
sinh viên so sánh kết quả học tập của bản thân với các bạn cùng trang
lứa để định hướng mục tiêu học tập và lựa chọn phương pháp học tập phù
hợp.
tmp <- data
tmp <- tmp %>% mutate(scoreC = cut(score,3, label = c('Giỏi', 'Khá','Trung bình')))
tmp %>% ggplot(aes(x = scoreC)) +
geom_bar(fill = 'blue')+labs(x = "Xếp loại", y = "Số lượng") + labs( title = "Hình 3: Đồ thị thể hiện số lượng sinh viên theo xếp loại điểm số")

# tạo ra một biến mới scoreC bằng cách chia điểm số score thành 3 nhóm (cắt) với các nhãn tương ứng là "Giỏi", "Khá", và "Trung bình"
# tạo ra một biểu đồ với trục x là biến mới tạo ra với các thanh màu xanh dương và thêm tiêu đề cho trục x ("Xếp loại") và trục y ("Số lượng").
Biểu đồ kết quả sẽ hiển thị ba thanh, mỗi thanh đại diện cho số lượng
sinh viên thuộc một nhóm xếp loại học tập.
Có thể thấy rằng, số lượng sinh viên đạt kết quả học tập xếp loại khá
trở lên khá cao, trong đó sinh viên đạt học lực khá chiếm đa số (trên
2.500 sinh viên), học lực giỏi có trên 1.000 sinh viên và học lực trung
bình có trên 1.000 sinh viên.
Kết luận: Việc phân tích Đồ thị thể hiện số lượng
sinh viên theo xếp loại điểm số là một công cụ hữu ích cho các bên liên
quan trong lĩnh vực giáo dục để đánh giá hiệu quả giảng dạy, phân tích
xu hướng học tập, cung cấp thông tin cho sinh viên, hỗ trợ tư vấn và
định hướng, và ultimately, nâng cao chất lượng giáo dục.
Đồ thị thể hiện mức
lương/thu nhập của sinh viên
Việc phân tích này giúp các trường đại học và cao đẳng đánh giá mức
thu nhập của sinh viên và gia đình, để từ đó điều chỉnh mức học phí phù
hợp cũng như các chính sách về việc miễn giải học phí và các chính sách
học bổng cho sinh viên.
Ngoài ra, còn góp phần nâng cao chất lượng giáo dục thông qua việc
cải thiện chương trình đào tạo, định hướng nghề nghiệp cho sinh viên và
hỗ trợ sinh viên tìm kiếm việc làm hiệu quả hơn.
tmp <- data
tmp <- tmp %>% mutate(wagec = cut(wage,4, label = c('Cao','Khá cao','Trung bình','Thấp')))
tmp %>% ggplot(aes(x = wagec)) +
geom_bar(fill = 'red')+labs(x = "Xếp loại", y = "Số lượng") + labs( title = "Hình 4: Đồ thị thể hiện tiền lương/thu nhập của sinh viên")

# tạo ra một biến mới wagec bằng cách chia tiền lượng thành 4 nhóm với các nhãn tương ứng là "Cao", "Khá cao", "Trung bình" và "Thấp"
# tạo ra một biểu đồ với trục x là biến mới tạo ra với các thanh màu đỏ và thêm tiêu đề cho trục x ("Xếp loại") và trục y ("Số lượng").
Nhiều nghiên cứu đã chỉ ra rằng, có mối liên hệ mật thiết giữa mức
thu nhập của gia đình và kết quả học tập của sinh viên. Sinh viên xuất
thân từ gia đình có thu nhập cao thường có môi trường học tập tốt hơn,
nơi họ được tiếp xúc với nhiều nguồn thông tin và cơ hội học tập hơn so
với sinh viên xuất thân từ gia đình có thu nhập thấp.
Theo đồ thị thì sinh viên mà gia đình có mức thu nhập khá cao và
trung bình chiếm số lượng đa số. Những sinh viên mà gia đình có mức thu
nhập cao có khoảng 800 sinh viên, có mức thu nhập khá cao có trên 1.000
sinh viên, mức thu nhập trung bình trên 1.000 sinh viên và mức thu nhập
thấp có khoảng 500 sinh viên.
Kết luận: Việc phân tích Đồ thị thể hiện mức
lương/thu nhập của sinh viên là một công cụ hữu ích cho các bên liên
quan trong lĩnh vực giáo dục và lao động để đánh giá hiệu quả đào tạo,
đưa ra các chính sách hỗ trợ học phí và hỗ trợ sinh viên lựa chọn nghề
nghiệp, nghiên cứu thị trường lao động và ultimately, nâng cao chất
lượng giáo dục.
Đồ thị thể hiện số
lượng sinh viên theo giới tính ở mỗi dân tộc
Việc phân tích này giúp các nhà hoạch định chính sách và nhà trường
đánh giá mức độ bình đẳng giới trong giáo dục ở các dân tộc khác nhau và
xác định những dân tộc có tỷ lệ chênh lệch giới tính cao trong giáo dục
để có biện pháp can thiệp phù hợp. So sánh tỷ lệ sinh viên nam và nữ
theo dân tộc trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi
theo thời gian.
tmp <- data
tmp %>% group_by(ethnicity,gender) %>% summarise(n=n()) %>% ggplot(aes(x = ethnicity,y = n)) + geom_col(position = 'dodge') + facet_wrap(~gender) + geom_text(aes(label = n),vjust = 0, color = 'green') + labs(x = 'Dân tộc', y = 'Số lượng') + labs(title = "Hình 5: Đồ thị số lượng sinh viên theo giới tính ở mỗi dân tộc")
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.

Cả 2 biểu đồ đều thể hiện số lượng sinh viên, mỗi biểu đồ thể hiện
một nhóm giới tính theo các nhóm dân tộc. Mỗi nhóm giới tính sẽ có ba
cột xếp cạnh nhau, chiều cao của mỗi cột đại diện cho số lượng sinh viên
thuộc từng nhóm dân tộc.
Nhìn chung thì số lượng sinh viên nam và sinh viên nữ không có sự
chênh lệnh nhiều. Tuy nhiên thì số lượng sinh viên nam theo học đại học
và cao đẳng ở các nhóm dân tộc đều cao hơn số lượng sinh viên nữ (chiếm
54,86% trong tổng số sinh viên)
Kết luận: Việc phân tích Đồ thị thể hiện số lượng
sinh viên theo giới tính ở mỗi dân tộc là một công cụ hữu ích để đánh
giá sự bình đẳng giới trong giáo dục, phân tích xu hướng theo thời gian,
nghiên cứu về các yếu tố ảnh hưởng và nâng cao chất lượng giáo dục.
Đồ thị thể hiện số
lượng sinh viên có cha mẹ tốt nghiệp đại học của mỗi dân tộc
Việc phân tích này giúp các nhà nghiên cứu và nhà hoạch định chính
sách đánh giá ảnh hưởng của nền tảng gia đình, cụ thể là trình độ học
vấn của cha mẹ, đến việc học tập của con cái. Xác định những dân tộc có
tỷ lệ sinh viên có cha mẹ tốt nghiệp đại học cao để học hỏi kinh nghiệm
và nhân rộng mô hình.
Giúp so sánh tỷ lệ sinh viên có cha mẹ tốt nghiệp đại học theo dân
tộc trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo
thời gian. Xác định những dân tộc có sự thay đổi tích cực hoặc tiêu cực
về ảnh hưởng của nền tảng gia đình đến việc học tập của sinh viên.
tmp <- data
tmp <- tmp %>% group_by(ethnicity, fcollege) %>% summarise(n = n())
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = ethnicity, y = n, fill = fcollege)) + geom_col(position = position_dodge()) + labs(x = "Dân tộc", y = "Số lượng") + labs( title = "Hình 6: Đồ thị thể hiện số lượng sinh viên có cha tốt nghiệp đại học")

# nhóm dữ liệu theo cả ethnicity và fcollege. Sau đó, nó tính tổng số lượng sinh viên (n = n())
# tạo ra một biểu đồ ggplot với:Trục x: ethnicity (dân tộc), Trục y: n (tổng số lượng sinh viên) và các thanh được xác định bởi biến fcollege (nguyện vọng theo học đại học)
tmp <- data
tmp <- tmp %>% group_by(ethnicity, mcollege) %>% summarise(n = n())
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = ethnicity, y = n, fill = mcollege)) +geom_col(position = position_dodge()) + labs(x = "Dân tộc", y = "Số lượng") + labs( title = "Hình 7: Đồ thị thể hiện số lượng sinh viên có mẹ tốt nghiệp đại học")

Đây là hai biểu đồ hiển thị số lượng sinh viên có cha và mẹ tốt
nghiệp đại học của mỗi nhóm dân tộc . Mỗi nhóm dân tộc có hai cột xếp
cạnh nhau, một cột là “no” là cha/mẹ không tốt nghiệp đại học và một cột
“yes” là cha/mẹ tốt nghiệp đại học. Chiều cao của mỗi cột thể hiện số
lượng sinh viên có cha/mẹ tốt nghiệp hoặc không tốt nghiệp đại học.
Ở cả hai biểu bồ thì có thể thấy số lượng cha mẹ sinh viên tốt nghiệp
đại học khá thấp chỉ chiếm khoảng 32,8% trong tổng số và hầu hết là số
lượng cha/mẹ sinh viên không tốt nghiệp đại học.
Kết luận: Việc phân tích Đồ thị thể hiện số lượng
sinh viên có cha và mẹ tốt nghiệp đại học của mỗi dân tộc là một công cụ
hữu ích cho các bên liên quan trong lĩnh vực giáo dục và xã hội để đánh
giá ảnh hưởng của nền tảng gia đình đến việc học tập, phân tích sự bất
bình đẳng giáo dục, nghiên cứu về các yếu tố ảnh hưởng và ultimately,
nâng cao chất lượng giáo dục.Ngoài ra, việc phân tích này cũng có thể
giúp các nhà hoạch định chính sách xây dựng các chương trình hỗ trợ phù
hợp để thu hẹp khoảng cách giáo dục giữa các dân tộc.
Đồ thị thể hiện số
lượng sinh viên có sở hữu nhà và không sở hữu nhà
Việc phân tích này giúp đánh giá về vấn đề nhà ở của sinh viên, xác
định những nhóm sinh viên có chỗ ở và không có chỗ ở để có biện pháp hỗ
trợ phù hợp.
tmp <- data
tmp <- tmp %>% group_by(home, ethnicity) %>% summarise(n = n())
## `summarise()` has grouped output by 'home'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = home, y = n, fill = ethnicity)) + geom_col(position = position_dodge()) + labs(x = "Nhà ở", y = "Số lượng") + labs( title = "Hình 8: Đồ thị thể hiện số lượng sinh viên có sở hữu nhà và không sở hữu nhà ")

# nhóm dữ liệu trong tmp theo hai biến home và ethnicity
# tạo một biểu đồ các thanh xếp cạnh nhau với trục hoành x theo biến home và trục tung y theo biến n (số lượng)và Sử dụng biến ethnicity để tô màu cho các cột.
Biểu đồ thu được sẽ hiển thị các nhóm “home” trên trục hoành. Mỗi
nhóm sẽ có một cụm cột đứng cạnh nhau, với mỗi cột thể hiện số lượng
người thuộc một dân tộc nhất định (được phân biệt bằng màu sắc).Chiều
cao của mỗi cột thể hiện số lượng người (n) thuộc nhóm dân tộc đó sinh
sống tại “home” đó.
Đồ thị histogram thể
hiện số lượng điểm số của sinh viên
Việc phân tích đồ thị có thể giúp nhà trường hiểu rõ hơn về sự khác
biệt về kết quả học tập của sinh viên. Điều này có thể giúp họ phát
triển các chương trình và dịch vụ tốt hơn để đáp ứng nhu cầu của tất cả
sinh viên.
Ví dụ: Một quận học có thể sử dụng phân tích đồ thị để xác định xem
có sự chênh lệch nào về tỷ lệ học sinh đạt điểm cao trong các kỳ thi
chuẩn hóa giữa các nhóm dân tộc hay không.
tmp <- data
tmp %>% ggplot(aes(x = score)) + geom_histogram(binwidth = 5, fill = 'blue', color = 'red') + labs(x = "Điểm số", y = "Số lượng") + labs( title = "Hình 9: Đồ thị thể hiện số lượng điểm số của sinh viên")

# tạo một biểu đồ ggplot2 với trục x được xác định bởi biến score
#binwidth = 5: Xác định độ rộng của mỗi cột là 5 đơn vị.
#fill = 'blue': Tô màu các cột bằng màu xanh lam.
#color = 'red': Viền các cột bằng màu đỏ.
Biểu đồ hình cột sẽ hiển thị số lượng điểm số trong mỗi khoảng giá
trị của biến score. Chiều cao của mỗi cột thể hiện số lượng điểm số
trong khoảng đó.
Kết luận: Việc phân tích Đồ thị histogram thể hiện
điểm số của sinh viên là một công cụ hữu ích cho các bên liên quan trong
lĩnh vực giáo dục để đánh giá hiệu quả giảng dạy, phân tích xu hướng học
tập, cung cấp thông tin cho sinh viên và nâng cao chất lượng giáo dục
cho sinh viên.
Đồ thị histogram thể
hiện sự phân phối của điểm số phân chia theo giới tính
Việc phân tích này giúp nhà trường đánh giá mức độ chênh lệch điểm số
giữa nam và nữ. Từ đó xác định những môn học có sự chênh lệch điểm số
lớn để có biện pháp can thiệp phù hợp. So sánh điểm số của nam và nữ
trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo thời
gian. Xác định những thay đổi tích cực hoặc tiêu cực về sự chênh lệch
điểm số giữa nam và nữ.
tmp <- data
tmp %>% ggplot(aes(x = score)) +
geom_histogram(binwidth = 5, fill = 'brown', color = 'black') + facet_wrap(~gender) + labs(x = " Điểm", y = "Số lượng")+ labs(title = "Hình 10: Đồ thị thể hiện sự phân phối của điểm số phân chia theo giới tính")

# tạo một biểu đồ ggplot2 với trục x được xác định bởi biến score
#facet_wrap: Chia biểu đồ thành 2 biểu đồ theo giới tính của sinh viên.
#binwidth = 5: Chiều rộng của mỗi cột là 5 điểm.
#fill = 'brown': Tô màu bên trong cột bằng màu nâu.
#color = 'black': Viền ngoài của cột có màu đen.
Biểu đồ thu được sẽ hiển thị hai biểu đồ con, một cho nam và một cho
nữ. Mỗi biểu đồ con thể hiện sự phân phối điểm số của giới tính tương
ứng.
Kết luận: Việc phân tích Đồ thị thể hiện sự phân
phối của điểm số phân chia theo giới tính là một công cụ để đánh giá sự
bình đẳng giới trong giáo dục, phân tích xu hướng theo thời gian, nghiên
cứu về các yếu tố ảnh hưởng và nâng cao chất lượng giáo dục.
Đồ thị histogram thể
hiện sự phân phối điểm số của từng dân tộc
Đánh giá sự bình đẳng giáo dục giữa các dân tộc: Giúp các nhà hoạch
định chính sách và nhà quản lý giáo dục đánh giá mức độ bình đẳng giáo
dục giữa các dân tộc. Xác định những dân tộc có điểm số trung bình thấp
để có biện pháp can thiệp phù hợp. So sánh điểm số trung bình của các
dân tộc trong các giai đoạn khác nhau để đánh giá xu hướng thay đổi theo
thời gian. Xác định những dân tộc có sự thay đổi tích cực hoặc tiêu cực
về điểm số.
tmp <- data
tmp %>% ggplot(aes(x = score, fill = ethnicity)) + geom_histogram(binwidth = 5) + labs( x ="Điểm", y = "Số lượng")+labs(title = "Hình 11: Đồ thị thể hiện sự phân phối điểm số của từng dân tộc")

# Tạo biểu đồ với Trục hoành (x) biểu thị điểm số, trục tung biểu thị số lượng và Màu sắc của cột biểu thị dân tộc.
# binwidth = 5: Chiều rộng của mỗi cột là 5 điểm.
Biểu đồ thu được sẽ hiển thị các cột thể hiện sự phân phối điểm số
của từng dân tộc. Màu sắc của các cột giúp phân biệt các dân tộc khác
nhau.
Kết luận: Việc phân tích đồ thị sự phân phối điểm số
của từng dân tộc góp phần nâng cao chất lượng giáo dục thông qua việc:
Xác định những rào cản đối với việc học tập của học sinh thuộc các dân
tộc thiểu số. Phát triển các chương trình và chính sách hỗ trợ học sinh
thuộc các dân tộc thiểu số.
Đồ thị thể hiện số
lượng mức thu nhập theo dân tộc
Đánh giá mức độ bất bình đẳng thu nhập: Giúp các nhà hoạch định chính
sách và nhà quản lý kinh tế đánh giá mức độ bất bình đẳng thu nhập giữa
các dân tộc. Xác định những dân tộc có mức thu nhập trung bình thấp để
có những chính sách hỗ trợ học phí phù hợp.
tmp <- data
tmp <- tmp %>% group_by(ethnicity, income) %>% summarise(n = n())
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
tmp %>% ggplot(aes(x = ethnicity, y = n)) + geom_col(data = tmp %>% filter(income == 'low'), fill = 'darkgreen') + geom_col(data = tmp %>% filter(income == 'high'), fill = 'blue')+ labs(x = 'Dân tộc', y = 'Số lượng') + coord_flip() + labs(title = "Hình 12: Đồ thị thể hiện số lượng mức thu nhập theo từng dân tộc")

# câu lệnh 1: Nhóm dữ liệu tmp theo cả ethnicity (dân tộc) và income (thu nhập). Tính tổng số người (n) trong mỗi nhóm (dân tộc, thu nhập).
# câu lệnh 2: tạo biểu đồ cột với trục ngang (x) thể hiện ethnicity (dân tộc), Trục dọc (y) thể hiện số lượng người (n)
# Sử dụng hai lớp geom_col để phân biệt theo mức thu nhập: Lớp thứ nhất Lọc dữ liệu chỉ giữ lại nhóm có thu nhập thấp (income == 'low'), Tô màu các cột cho nhóm thu nhập thấp bằng màu xanh lá đậm. và Lớp thứ hai Lọc dữ liệu chỉ giữ lại nhóm có thu nhập cao (income == 'high') và tô màu xanh dương (blue).
# coord_flip() để đảo ngược trục, với trục ngang ở dưới và trục dọc ở trên.
Biểu đồ này sẽ hiển thị hai cột chồng lên nhau cho mỗi dân tộc, thể
hiện số lượng người thuộc dân tộc đó có thu nhập thấp (xanh đậm) và thu
nhập cao (xanh dương). Biểu đồ giúp so sánh sự phân bố thu nhập giữa các
dân tộc. Bạn có thể dễ dàng quan sát xem có sự khác biệt đáng kể về thu
nhập giữa các dân tộc hay không. Ví dụ, nếu một dân tộc có cột xanh đậm
cao hơn nhiều so với cột xanh dương, thì điều đó có thể cho thấy phần
lớn người thuộc dân tộc đó có thu nhập thấp.
Kết luận: Việc phân tích đồ thị số lượng mức thu
nhập theo dân tộc giúp Xác định những rào cản đối với việc phát triển
kinh tế của các dân tộc thiểu số. Phát triển các chương trình và chính
sách hỗ trợ phát triển kinh tế cho các dân tộc thiểu số.
Biểu đồ mật độ
density thể hiện sự phân phối của điểm số phân chia theo dân tộc
Việc phân tích Biểu đồ mật độ density thể hiện sự phân phối của điểm
số phân chia theo dân tộc có thể mang lại nhiều lợi ích cho các bên liên
quan trong lĩnh vực giáo dục và xã hội. Giúp các nhà hoạch định chính
sách và nhà quản lý giáo dục đánh giá mức độ bình đẳng giáo dục giữa các
dân tộc một cách chi tiết hơn so với chỉ sử dụng điểm số trung bình. Xác
định những dân tộc có sự phân bố điểm số lệch về phía thấp hoặc cao để
có biện pháp can thiệp phù hợp.
tmp <- data
tmp %>% ggplot(aes(x = score)) + geom_density(fill = 'blue') + facet_wrap(~ethnicity) + labs(x= "Điểm")+ labs(title = "Hình 13: Biểu đồ mật độ thể hiện sự phân phối của điểm số phân chia theo dân tộc")

# tạo biểu đồ với trục hoành (x) biểu thị điểm số.
# geom_density: Thêm hình dạng biểu đồ là mật độ (density). và Tô màu bên trong biểu đồ mật độ bằng màu xanh
# facet_wrap: Chia biểu đồ thành các biểu đồ con theo dân tộc.
Biểu đồ thu được sẽ hiển thị hai biểu đồ con, một cho mỗi dân tộc.
Mỗi biểu đồ con thể hiện sự phân phối điểm số của dân tộc tương ứng dưới
dạng đường cong mật độ. Hình dạng của đường cong mật độ cho biết sự tập
trung của điểm số trong từng nhóm.
Kết luận: việc phân tích biểu đồ mật độ điểm số có
những ưu điểm sau: Cung cấp thông tin chi tiết hơn về sự phân bố điểm số
của các dân tộc. Giúp xác định những nhóm học sinh có nguy cơ bị bỏ lại
phía sau. Giúp đánh giá hiệu quả của các chương trình hỗ trợ học sinh
một cách chính xác hơn.
Biểu đồ mật độ
density thể hiện sự phân phối của điểm số phân chia theo giới tính
Việc phân tích Biểu đồ mật độ density thể hiện sự phân phối của điểm
số phân chia theo giới tính có thể mang lại nhiều lợi ích cho các bên
liên quan trong lĩnh vực giáo dục và xã hội. Giúp nhà trường đánh giá
mức độ bình đẳng giới trong giáo dục một cách chi tiết từ đó xác định
những nhóm học sinh nam hoặc nữ có điểm số thấp hơn để có biện pháp can
thiệp phù hợp.
tmp <- data
tmp %>% ggplot(aes(x = score)) + geom_density(fill = 'green') + facet_wrap(~gender) + labs(x = "Điểm")+ labs(title = "Hình 14: Biểu đồ mật độ thể hiện sự phân phối của điểm số phân chia theo giới tính")

# tạo biểu đồ với trục hoành (x) biểu thị điểm số.
# geom_density: Thêm hình dạng biểu đồ là mật độ (density). và Tô màu bên trong biểu đồ mật độ bằng màu xanh lá
# facet_wrap: Chia biểu đồ thành các biểu đồ con theo giới tính.
Biểu đồ thu được sẽ hiển thị hai biểu đồ con, một cho nam và một cho
nữ. Mỗi biểu đồ con thể hiện sự phân phối điểm số của giới tính tương
ứng dưới dạng đường cong mật độ.
Kết luận: việc phân tích biểu đồ mật độ điểm số có
những ưu điểm sau: Cung cấp thông tin chi tiết hơn về sự phân bố điểm số
của nam và nữ. Xác định những rào cản đối với việc học tập của học sinh
nam hoặc nữ. Đưa ra những biện pháp phù hợp, các chương trình hỗ trợ học
sinh một cách chính xác hơn.
Biểu đồ tròn (pia
chart) thể hiện số lượng sinh viên theo giới tính của dân tộc
hispanic
Phân tích biểu đồ tròn thể hiện số lượng sinh viên theo giới tính của
dân tộc Hispanic giúp ta hiểu rõ hơn về tỷ lệ sinh viên nam và nữ thuộc
dân tộc hispanic ( người gốc Tây Ban Nha). Nhờ đó, ta có thể so sánh
nhanh chóng sự chênh lệch giới tính trong nhóm này.
tmp <- data
tmp <- tmp %>% filter(ethnicity=="hispanic")
tmp %>% group_by(ethnicity,gender) %>% summarise(n = n()) %>% ggplot(aes(x = '', y = n,fill = gender))+ geom_col(gender = 'black') + coord_polar('y')+ theme_void() + labs(title = "Hình 15: Biểu đồ tròn thể hiện số lượng sinh viên theo dân tộc hispanic")
## `summarise()` has grouped output by 'ethnicity'. You can override using the
## `.groups` argument.
## Warning in geom_col(gender = "black"): Ignoring unknown parameters: `gender`

# nhóm dữ liệu theo ethnicity (giữ "hispanic") và gender và tính tổng số lượng
# tạo biểu đồ tròn với Trục hoành x được đặt trống (''). Trục tung y thể hiện theo biến n (số lượng), fill = gender: Tô màu các vùng theo biến gender
Biểu đồ thu được sẽ là một hình tròn được chia thành các phần (miếng)
theo tỉ lệ. Mỗi phần tô một màu đại diện cho giới tính (nam/nữ) của
người gốc Tây Ban Nha. Diện tích mỗi phần hình cung tròn sẽ tương ứng
với số lượng người thuộc giới tính đó trong nhóm dân tộc người gốc Tây
Ban Nha.
Kết luận: Phân tích biểu đồ tròn cung cấp thông tin
hữu ích cho các nhà hoạch định chính sách, nhà giáo dục và các tổ chức
hỗ trợ sinh viên. Ví dụ: nếu biểu đồ cho thấy tỷ lệ sinh viên nữ thuộc
dân tộc Hispanic theo học đại học thấp, các nhà hoạch định có thể phát
triển chương trình khuyến khích và hỗ trợ nữ sinh theo học.
Biểu đồ tròn (pie
chart) thể hiện mức thu nhập của gia đình sinh viên
Phân tích biểu đồ tròn thể hiện mức thu nhập của gia đình sinh viên
có thể hiểu rõ hơn về tình trạng kinh tế gia đình của sinh viên và xác
định các nhóm sinh viên cần hỗ trợ tài chính trong vấn đề học phí, nhà
ở,…
tmp <- data
tmp %>% group_by(income) %>% summarise(n = n()) %>% ggplot(aes(x = '', y = n,fill = income)) +
geom_col() + geom_text(aes(x = 1.3, label = n),position = position_stack(vjust = 0.5)) +
coord_polar('y') + labs(title = "Hình 16: Biểu đồ tròn thể hiện mức thu nhập")

# Nhóm dữ liệu trong tmp theo thu nhập (income). summarise(n = n()): Tính tổng số người (n) trong mỗi nhóm thu nhập.
# tạo biểu đồ với trục tung (y) là số lượng người (n), Trục hoành (x) được để trống ('') và Tô màu cột theo thu nhập (income).
# Thêm chú thích văn bản (geom_text) hiển thị số lượng người (n) trên mỗi cột.
# aes(x = 1.3, label = n): Thiết lập vị trí ngang của nhãn cách trục hoành 1.3 đơn vị và nội dung là giá trị n.
# position = position_stack(vjust = 0.5): Canh chỉnh vị trí dọc của nhãn để nằm chính giữa đầu cột
# coord_polar('y'): Chuyển đổi hệ trục sang hệ tọa độ cực, với trục y giữ nguyên thể hiện số lượng.Trục hoành sẽ được cuộn tròn thành hình tròn, các cột được sắp xếp theo góc dựa trên biến income
Biểu thu được sẽ giống như radar chart, với màu sắc thể hiện theo thu
nhập. Mỗi mức thu nhập được biểu thị bằng một hình cột, được tô màu theo
nhóm thu nhập. Trên mỗi cột có chú thích hiển thị số lượng người thuộc
nhóm thu nhập đó.
Kết luận: Phân tích biểu đồ tròn cung cấp thông tin
hữu ích cho việc xây dựng các chính sách hỗ trợ sinh viên hiệu quả. Ví
dụ: nếu tỷ lệ sinh viên có thu nhập thấp cao trong tổng số sinh viên
theo học đại học, thì nhà có thể xem xét tăng cường hỗ trợ tài chính,
hoặc các chính sánh hỗ trợ về học phí cho các sinh viên có hoàn cảnh khó
khăn và hiếu học đó.
Biểu đồ tròn (pie
chart) thể hiện số lượng người theo dân tộc (ethnicity)
Việc phân tích biểu đồ tròn (pie chart) thể hiện số lượng người theo
dân tộc (ethnicity) để: Hiểu rõ hơn về thành phần sinh viên thuộc các
nhóm dân tộc khác nhau. So sánh tỷ lệ sinh viên theo dân tộc giữa các
khu vực khác nhau. Theo dõi sự thay đổi của thành phần dân tộc theo thời
gian và hỗ trợ việc nhà trường ra quyết định các chính sách.
tmp <- data
tmp %>% group_by(ethnicity) %>% summarise(n = n()) %>% ggplot(aes(x = '', y = n,fill = ethnicity)) + geom_col(ethnicity = 'black') + coord_polar('y') +
geom_text(aes(x = 1.3, label = n),position = position_stack(vjust = 0.5)) + theme_void() + labs(title = "Hình 17: Biểu đồ tròn thể hiện số lượng người theo dân tộc")
## Warning in geom_col(ethnicity = "black"): Ignoring unknown parameters:
## `ethnicity`

# tính tổng số người (n) trong mỗi nhóm dân tộc (ethnicity).
# tạo biểu đồ với Trục tung (y) là số lượng người (n), trục hoành (x) trống ('') nhưng xác định vị trí cột theo góc và Tô màu cột theo dân tộc (ethnicity), thêm nhãn hiển thị số lượng người (n) trên đầu mỗi cột.
# coord_polar('y'): Chuyển đổi hệ tọa độ thành cực, trục y giữ nguyên, trục hoành cuộn tròn thành hình tròn.
# theme_void() để loại bỏ các thành phần mặc định của biểu đồ như khung nền, trục lưới, chú thích trục, v.v. Chỉ giữ lại các thành phần cần thiết: các cột, nhãn và nền tròn.
Biểu đồ thu được sẽ là một hình tròn được chia thành các phần (miếng)
theo tỉ lệ. Mỗi phần tô một màu đại diện cho một dân tộc (dựa trên biến
ethnicity) và diện tích tương ứng với số lượng người thuộc dân tộc đó.
Nhãn hiển thị số lượng người bên trong mỗi phần.
Kết luận: Phân tích biểu đồ tròn cung cấp thông tin
hữu ích cho việc xây dựng các chính sách phù hợp với đặc điểm dân tộc
của khu vực. Ví dụ: nếu biểu đồ cho thấy tỷ lệ người dân tộc thiểu số
cao trong một khu vực, nhà hoạch định có thể xem xét xây dựng các chương
trình giáo dục và hỗ trợ dành cho nhóm dân tộc này.
Biểu đồ phân tán
(scatter) thể hiện mối quan hệ giữa mức lương (wage) và tỷ lệ thất
nghiệp (unemp)
Phân tích biểu đồ phân tán thể hiện mối quan hệ giữa mức lương và tỷ
lệ thất nghiệp để xác định mối tương quan giữa mức lương và tỷ lệ thất
nghiệp ở sinh viên, từ đó đánh giá được tình hình tài chính của sinh
viên và đưa ra các chương trình đào tạo trong việc trang bị hành trang
cho sinh viên ra trường kiếm việc làm cũng như chính sách hỗ trợ phù
hợp.
tmp <- data
tmp %>% ggplot(aes(x = wage, y = unemp, color = ethnicity)) +
geom_point() + labs(title ="Hình 18: Biểu đồ thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp")

# Tạo t biểu đồ phân tán với: trục hoành x thể hiện mức lương, trục tung y thể hiện tỷ lệ thất nghiệp unemp và Tô màu cho các điểm theo biến ethnicity.
#geom_point(): Thêm các điểm vào biểu đồ.
Biểu đồ thu được sẽ hiển thị các điểm dữ liệu với vị trí của mỗi điểm
thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá
nhân. Màu sắc của mỗi điểm sẽ đại diện cho dân tộc của người đó.
Nếu có nhiều điểm cùng màu tập trung ở một khu vực, điều đó có thể
cho thấy mối liên hệ giữa dân tộc, mức lương và tỷ lệ thất nghiệp. Kích
thước của các điểm có thể được điều chỉnh để thể hiện thêm thông tin, ví
dụ như số lượng người trong mỗi nhóm dân tộc.
Kết luận: việc phân tích mối quan hệ giữa mức lương
và tỷ lệ thất nghiệp ở sinh viên giúp nhà trường trong việc đánh giá
được mức độ ảnh hưởng của các yếu tố như ngành học, trình độ học vấn, kỹ
năng, kinh nghiệm làm việc đối với khả năng tìm kiếm việc làm và mức
lương của sinh viên. Từ đó, đưa ra các chương trình đào tạo trong việc
trang bị cho sinh viên các kiến thức, kỹ năng cần thiết để đáp ứng nhu
cầu của thị trường lao động.
Biểu đồ phân tán
(scatter) thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của
một cá nhân
Mục đích của việc phân tích Biểu đồ phân tán (scatter) thể hiện mối
quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá nhân có kèm đường
xu thế ở sinh viên để hiểu rõ hơn về mối quan hệ giữa mức lương và tỷ lệ
thất nghiệp ở sinh viên và đường xu thế giúp dự đoán mức lương của sinh
viên dựa trên tỷ lệ thất nghiệp.
tmp <- data
tmp %>% ggplot(aes(x = wage, y = unemp)) +
geom_point(color = 'red') +
geom_smooth(method = 'lm', color = 'green')+ facet_wrap(~ethnicity)+ labs(title = "Hình 19: Biểu đồ phân tán thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp")
## `geom_smooth()` using formula = 'y ~ x'

# Tạo biểu đồ phân tán với Trục hoành x thể hiện mức lương wage, Trục tung y thể hiện tỷ lệ thất nghiệp unemp và Thêm các điểm vào biểu đồ với màu đỏ.
# Thêm đường hồi quy tuyến tính cho mỗi nhóm dữ liệu với màu xanh lá cây.
# Chia biểu đồ thành các biểu đồ con riêng biệt cho mỗi nhóm dân tộc (ethnicity).
Biểu đồ thu được sẽ hiển thị các điểm dữ liệu với vị trí của mỗi điểm
thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp của một cá
nhân. Biểu đồ phân tán (scatter plot) với các điểm được tô màu đỏ và
đường hồi quy tuyến tính màu xanh lá cây cho mỗi nhóm dân tộc
(ethnicity) Các điểm được tô màu đỏ và đường hồi quy tuyến tính màu xanh
lá cây được vẽ cho mỗi nhóm dân tộc.
Ví dụ:
Độ dốc của đường hồi quy tuyến tính cho thấy mối quan hệ tương quan
giữa mức lương và tỷ lệ thất nghiệp trong mỗi nhóm dân tộc. Việc so sánh
các đường hồi quy tuyến tính giữa các nhóm dân tộc có thể giúp xác định
sự khác biệt về mối quan hệ này. Biểu đồ có thể được bổ sung thêm chú
thích để làm rõ thông tin và giúp người đọc hiểu rõ hơn về kết quả.
Kết luận: Phân tích biểu đồ phân tán cung cấp thông
tin hữu ích cho việc xây dựng các chính sách nhằm giảm thiểu thất nghiệp
và thúc đẩy tăng trưởng kinh tế và giúp đánh giá hiệu quả của các chương
trình hỗ trợ dành cho sinh viên trong việc cải thiện mức lương và giảm
thiểu tỷ lệ thất nghiệp.
Biểu đồ động thể
hiện mối liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân
tộc.
Mục đích của việc phân tích Biểu đồ động thể hiện mối liên hệ giữa
mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc ở sinh viên giúp
ta theo dõi sự thay đổi của mối liên hệ giữa mức lương và tỷ lệ thất
nghiệp trong từng nhóm dân tộc theo thời gian. Nhờ đó, có thể đánh giá
mức độ ảnh hưởng của các yếu tố như thời gian, chính sách, biến động
kinh tế đối với thị trường lao động dành cho sinh viên sắp ra trường
thuộc các nhóm dân tộc khác nhau.
tmp <- data
tmp %>% ggplot(aes(x = wage, y = unemp, color = ethnicity)) +
geom_line() +
geom_point(size=2) +
transition_reveal(wage, keep_last = F)+ labs(title ="Hình 20: Đồ thị động thể hiện mối quan hệ giữa mức lương và tỷ lệ thất nghiệp theo dân tộc")

Biểu đồ giúp hình dung mối liên hệ giữa mức lương và tỷ lệ thất
nghiệp trong từng nhóm dân tộc.
Đường kẻ: Nối các điểm dữ liệu theo từng dân tộc.
Điểm: Biểu thị vị trí dữ liệu của mỗi cá nhân, được tô màu theo
dân tộc.
Độ dốc của đường kẻ cho thấy mức độ thay đổi của mức lương theo
tỷ lệ thất nghiệp.
So sánh các đường kẻ và vị trí điểm của các nhóm dân tộc giúp
nhận biết sự khác biệt về mối quan hệ này.
Kết luận: việc phân tích biểu đồ động thể hiện mối
liên hệ giữa mức lương và tỷ lệ thất nghiệp trong từng nhóm dân tộc ở
sinh viên là một công cụ để hiểu rõ hơn và theo dõi sát xao thị trường
lao động dành cho sinh viên thuộc các nhóm dân tộc khác nhau, so sánh
mức độ bất bình đẳng trong thị trường lao động giữa các nhóm dân tộc. Từ
đó định ra chương trình học và gợi ý các hướng đin cho sinh viên sắp ra
trường.
LS0tDQp0aXRsZTogIk5WNSINCmF1dGhvcjogIk5ndXnhu4VuIFRo4buLIEhvw6BuZyBZ4bq/biINCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVIOiVNOiVTLCAlZCAtICVtIC0gJVknKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZmxleHRhYmxlKQ0KbGlicmFyeShEVCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkoZ29vZ2xlZHJpdmUpDQpsaWJyYXJ5KGdnYW5pbWF0ZSkNCmxpYnJhcnkobWFnaWNrKQ0KYGBgDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIEdJ4buaSSBUSEnhu4ZVIELhu5ggROG7riBMSeG7hlUNCg0KKipDb2xsZWdlRGlzdGFuY2UqKg0KDQrEkMOieSBsw6AgdOG6rXAgZOG7ryBsaeG7h3UgxJHGsOG7o2MgdOG6oW8gYuG7n2kgSVBVTVMgVGVycmE6IDxodHRwczovL3RlcnJhLmlwdW1zLm9yZy8+LCBt4buZdCBk4buxIMOhbiBo4bujcCB0w6FjIGdp4buvYSBUcnVuZyB0w6JtIEThu68gbGnhu4d1IETDom4gc+G7kSBQaMOibiB0w61jaCB2w6AgS2hvYSBo4buNYyBYw6MgaOG7mWkgKElQVU1TKSB0aHXhu5ljIMSQ4bqhaSBo4buNYyBNaW5uZXNvdGEgdsOgIFRydW5nIHTDom0gTmdoacOqbiBj4bupdSBEw6JuIHPhu5EgdGh14buZYyDEkOG6oWkgaOG7jWMgVGV4YXMgdOG6oWkgQXVzdGluLg0KDQpC4buZIGThu68gbGnhu4d1IGNvbGxlZ2VkaXN0YW5jZSBiYW8gZ+G7k20gdGjDtG5nIHRpbiB24buBIGtob+G6o25nIGPDoWNoIGdp4buvYSBuaMOgIGPhu6dhIHNpbmggdmnDqm4gdsOgIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgbcOgIGjhu40gdGhlbyBo4buNYy4gROG7ryBsaeG7h3UgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIEto4bqjbyBzw6F0IEPhu5luZyDEkeG7k25nIEhvYSBL4buzIG7Eg20gMjAxMCB2w6AgMjAxNS4NCg0KS2h1bmcgZOG7ryBsaeG7h3UgY2jhu6lhIDQuNzM5IHF1YW4gc8OhdCB0csOqbiAxNSBiaeG6v24uDQoNCi0gICByb3duYW1lczogc+G7kSB0aOG7qSB04buxIGPhu6dhIHNpbmggdmnDqm4NCg0KLSAgIGdlbmRlcjogZ2nhu5tpIHTDrW5oIGPhu6dhIHNpbmggdmnDqm4NCg0KLSAgIGV0aG5pY2l0eTogZMOibiB04buZYyAobmfGsOG7nWkgTeG7uSBn4buRYyBQaGksIG5nxrDhu51pIGfhu5FjIFTDonkgQmFuIE5oYSBob+G6t2MgbmfGsOG7nWkga2jDoWMpDQoNCi0gICBzY29yZTogxJFp4buDbSBraeG7g20gdHJhIHThu5VuZyBo4bujcCBj4bunYSBzaW5oIHZpw6puDQoNCi0gICBmY29sbGVnZTogbmfGsOG7nWkgY2hhIHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYw0KDQotICAgbWNvbGxlZ2U6IG5nxrDhu51pIG3hurkgdOG7kXQgbmdoaeG7h3AgxJHhuqFpIGjhu41jDQoNCi0gICBob21lOiBDw7MgbmjDoCDhu58gdOG6oWkgbsahaSBtw6Agc2luaCB2acOqbiDEkWFuZyB0aGVvIGjhu41jDQoNCi0gICB1cmJhbjogbsahaSDhu58gdGh14buZYyBraHUgduG7sWMgxJHDtCB0aOG7iw0KDQotICAgdW5lbXA6IHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3ANCg0KLSAgIHdhZ2U6IHRp4buBbiBsxrDGoW5nLCB0aHUgbmjhuq1uIGPhu6dhIHNpbmggdmnDqm4gdsOgIGdpYSDEkcOsbmgNCg0KLSAgIGRpc3RhbmNlOiBLaG/huqNuZyBjw6FjaCB04burIG5ow6AgxJHhur9uIHRyxrDhu51uZyBj4bunYSBzaW5oIHZpw6puDQoNCi0gICB0dWl0aW9uOiBo4buNYyBwaMOtIHRydW5nIGLDrG5oICggxJHGoW4gduG7iyB0w61uaDogMTAwMFVTRCkNCg0KLSAgIGVkdWNhdGlvbjogdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuDQoNCi0gICBpbmNvbWU6IHRodSBuaOG6rXAgZ2lhIMSRw6xuaCB0csOqbiAyNS4wMDAgVVNEL27Eg20gKGNhbykNCg0KLSAgIHJlZ2lvbjoga2h1IHbhu7FjIG3DoCBzaW5oIHZpw6puIMSRYW5nIOG7nw0KDQpExrDhu5tpIMSRw6J5IGzDoCBi4bqjbmcgc+G7kSBsaeG7h3UgY2hpIHRp4bq/dCBj4bunYSBi4buZIGThu68gbGnhu4d1ICoqQ29sbGVnZWRpc3RhbmNlKio6DQoNCmBgYHtyfQ0KbGlicmFyeShjc3YpDQpkYXRhIDwtIHJlYWQuY3N2KGZpbGUuY2hvb3NlKCksIGhlYWRlciA9IFQpDQpkYXRhdGFibGUoZGF0YSkNCmBgYA0KDQpC4buZIGThu68gbGnhu4d1ICoqY29sbGVnZWRpc3RhbmNlKiogbMOgIG3hu5l0IHTDoGkgbmd1ecOqbiBjw7MgZ2nDoSB0cuG7iyBjaG8gY8OhYyBuaMOgIG5naGnDqm4gY+G7qXUsIHNpbmggdmnDqm4gdsOgIG5o4buvbmcgbmfGsOG7nWkga2jDoWMgcXVhbiB0w6JtIMSR4bq/biB2aeG7h2MgbOG7sWEgY2jhu41uIHRyxrDhu51uZyDEkeG6oWkgaOG7jWMgdsOgIHTDoWMgxJHhu5luZyDEkeG6v24gdmnhu4djIHRp4bq/cCBj4bqtbiBnacOhbyBk4bulYyDEkeG6oWkgaOG7jWMgY+G7p2Egc2luaCB2acOqbi4NCg0KLSBOZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBz4buxIGzhu7FhIGNo4buNbiB0csaw4budbmcgxJHhuqFpIGjhu41jIGPhu6dhIHNpbmggdmnDqm4NCg0KLSBOZ2hpw6puIGPhu6l1IHbhu4EgdMOhYyDEkeG7mW5nIGPhu6dhIHPhu7EgxJFhIGThuqFuZyDEkeG6v24ga+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbi4uLg0KDQojIFBIw4JOIFTDjUNIDQoNCiMjIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyBkw6JuIHThu5ljDQoNClBow6JuIHTDrWNoIMSR4buTIHRo4buLIGPDsyB0aOG7gyBnacO6cCBjw6FjIG5ow6AgZ2nDoW8gZOG7pWMgdsOgIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIGhp4buDdSByw7UgaMahbiB24buBIHPhu7EgxJFhIGThuqFuZyBj4bunYSBzaW5oIHZpw6puIHRyb25nIGPDoWMgdHLGsOG7nW5nIGjhu41jIHbDoCBjxqEgc+G7nyBnacOhbyBk4bulYy4gxJBp4buBdSBuw6B5IGPDsyB0aOG7gyBnacO6cCBo4buNIHBow6F0IHRyaeG7g24gY8OhYyBjaMawxqFuZyB0csOsbmggdsOgIGThu4tjaCB24bulIHThu5F0IGjGoW4gxJHhu4MgxJHDoXAg4bupbmcgbmh1IGPhuqd1IGPhu6dhIHThuqV0IGPhuqMgc2luaCB2acOqbi4NCg0KTmdvw6BpIHJhLCBjw7JuIGPDsyB0aOG7gyBnacO6cCB4w6FjIMSR4buLbmggY8OhYyBuaMOzbSBzaW5oIHZpw6puIHRodeG7mWMgY8OhYyBkw6JuIHThu5ljIHRoaeG7g3Ugc+G7kSBi4buLIHRoaeG7h3QgdGjDsmkgdHJvbmcgZ2nDoW8gZOG7pWMuIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgZ2nDunAgY8OhYyBuaMOgIGdpw6FvIGThu6VjIHbDoCBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGNow61uaCBzw6FjaCB04bqtcCB0cnVuZyBuZ3Xhu5NuIGzhu7FjIHbDoG8gbmjhu69uZyBuaMOzbSBzaW5oIHZpw6puIG7DoHkgxJHhu4MgxJHhuqNtIGLhuqNvIHLhurFuZyBo4buNIGPDsyBjxqEgaOG7mWkgdGjDoG5oIGPDtG5nIG5oxrAgbmhhdS4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBncm91cF9ieShldGhuaWNpdHkpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIGdncGxvdChhZXMoZXRobmljaXR5LG4pKSArIGdlb21fY29sKGZpbGw9J2dyZWVuJykgKyAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IG4pLHZqdXN0ID0gMiwgY29sb3IgPSAncmVkJykgKyBsYWJzKCB0aXRsZSA9ICJIw6xuaCAxOiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRoZW8gZMOibiB04buZYyIpICsgbGFicyggeCA9IkTDom4gdOG7mWMiLCB5ID0gIlPhu5EgbMaw4bujbmciKQ0KDQojZ3JvdXBfYnkoZXRobmljaXR5KTogTmjDs20gZOG7ryBsaeG7h3UgdGhlbyBiaeG6v24gZXRobmljaXR5Lg0KI3N1bW1hcmlzZShuID0gbigpKTogVMOtbmggdOG7lW5nIHPhu5Egc2luaCB2acOqbiBjaG8gbeG7l2kgbmjDs20gZMOibiB04buZYy4NCiNnZ3Bsb3QoYWVzKGV0aG5pY2l0eSwgbikpOiBU4bqhbyBiaeG7g3UgxJHhu5MgZ2dwbG90MiB24bubaSB0cuG7pWMgeCBsw6AgZXRobmljaXR5IHbDoCB0cuG7pWMgeSBsw6Agbi4NCiNnZW9tX2NvbChmaWxsID0gJ2dyZWVuJyk6IFRow6ptIGJp4buDdSDEkeG7kyBj4buZdCB24bubaSBtw6B1IHhhbmggbMOhIGPDonkuDQojZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IG4pLCB2anVzdCA9IDIsIGNvbG9yID0gJ3JlZCcpOiBUaMOqbSBjaMO6IHRow61jaCB2xINuIGLhuqNuIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY2hvIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMsIHbhu5tpIHbhu4sgdHLDrSBjYW8gaMahbiBt4buZdCBjaMO6dCAodmp1c3QgPSAyKSB2w6AgbcOgdSDEkeG7jy4NCmBgYA0KDQpCaeG7g3UgxJHhu5Mgc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIGPhu6dhIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMg4bupbmcgduG7m2kgMSB0aGFuaCwgduG7m2kgY2hp4buBdSBjYW8gY+G7p2EgdGhhbmggYmnhu4N1IHRo4buLIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0cm9uZyBuaMOzbSDEkcOzLiANCg0KLSBT4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGh14buZYyBjw6FjIGTDom4gdOG7mWMga2jDoWMgbmhp4buBdSBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBuZ8aw4budaSBN4bu5IGfhu5FjIFBoaShhZmFtKSB2w6AgbmfGsOG7nWkgZ+G7kWMgVMOieSBCYW4gTmhhKGhpc3BhbmljKSwgY8OzIDMuMDUwIHNpbmggdmnDqm4sIGNoaeG6v20gNjQsMzYlIHRyb25nIHThu5VuZyBz4buRIHNpbmggdmnDqm4gxJFhbmcgdGhlbyBo4buNYyDEkeG6oWkgaOG7jWMuDQoNCi0gU+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRodeG7mWMgZMOibiB04buZYyBuZ8aw4budaSBN4bu5IGfhu5FjIFBoaShhZmFtKSBsw6AgNzg2IHNpbmggdmnDqm4sIGNoaeG6v20gMTYsNTklLCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGh14buZYyBkw6JuIHThu5ljIG5nxrDhu51pIGfhu5FjIFTDonkgQmFuIE5oYShoaXNwYW5pYykgbMOgIDkwMyBzaW5oIHZpw6puLCBjaGnhur9tIDE5LDA1JQ0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJHhu5MgdGjhu4sgbsOgeSBjw7MgdGjhu4MgY3VuZyBj4bqlcCB0aMO0bmcgdGluIGNoaSB0aeG6v3QgduG7gSBz4buxIMSRYSBk4bqhbmcgY+G7p2Egc2luaCB2acOqbiB0cm9uZyBjw6FjIHRyxrDhu51uZyBo4buNYyB2w6AgY8ahIHPhu58gZ2nDoW8gZOG7pWMgdsOgIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGPhuqNpIHRoaeG7h24gc+G7sSDEkWEgZOG6oW5nIHbDoCBow7JhIG5o4bqtcCB0cm9uZyBnacOhbyBk4bulYy4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIMSRaeG7g20gdHJ1bmcgYsOsbmggY+G7p2Egc2luaCB2acOqbiB0aGVvIGTDom4gdOG7mWMNCg0KVmnhu4djIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIGPDsyB0aOG7gyBnacO6cCBjw6FjIG5ow6AgZ2nDoW8gZOG7pWMgdsOgIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIGhp4buDdSByw7UgaMahbiB24buBIHPhu7Ega2jDoWMgYmnhu4d0IHbhu4Ega+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbiBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGdpw7pwIGjhu40gcGjDoXQgdHJp4buDbiBjw6FjIGNoxrDGoW5nIHRyw6xuaCB2w6AgZOG7i2NoIHbhu6UgdOG7kXQgaMahbiDEkeG7gyDEkcOhcCDhu6luZyBuaHUgY+G6p3UgY+G7p2EgdOG6pXQgY+G6oyBzaW5oIHZpw6puLg0KDQpOZ2/DoGkgcmEsIGPDsm4gY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRw6FuaCBnacOhIGhp4buHdSBxdeG6oyBj4bunYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCB2w6Agc8Ohbmcga2nhur9uIMSRxrDhu6NjIHRoaeG6v3Qga+G6vyDEkeG7gyB0aHUgaOG6uXAga2hv4bqjbmcgY8OhY2ggxJFp4buDbSB0cnVuZyBiw6xuaCBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGdpw7pwIGPDoWMgbmjDoCBnacOhbyBk4bulYyB2w6AgY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggeMOhYyDEkeG7i25oIG5o4buvbmcgY2jGsMahbmcgdHLDrG5oIG7DoG8gxJFhbmcgaG/huqF0IMSR4buZbmcgaGnhu4d1IHF14bqjIHbDoCBuaOG7r25nIGNoxrDGoW5nIHRyw6xuaCBuw6BvIGPhuqduIMSRxrDhu6NjIGPhuqNpIHRoaeG7h24uDQoNClbDrSBk4bulOiBN4buZdCB0csaw4budbmcgaOG7jWMgY8OzIHRo4buDIHPhu60gZOG7pW5nIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIMSR4buDIHjDoWMgxJHhu4tuaCB4ZW0gY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBuw6BvIHbhu4EgxJFp4buDbSB0cnVuZyBiw6xuaCBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljIGhheSBraMO0bmcuIE3hu5l0IHF14bqtbiBo4buNYyBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgcGjDom4gdMOtY2ggxJHhu5MgdGjhu4sgxJHhu4MgeMOhYyDEkeG7i25oIHhlbSBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIG7DoG8gduG7gSB04bu3IGzhu4cgaOG7jWMgc2luaCDEkeG6oXQgxJFp4buDbSBjYW8gdHJvbmcgY8OhYyBr4buzIHRoaSBjaHXhuqluIGjDs2EgZ2nhu69hIGPDoWMgbmjDs20gZMOibiB04buZYyBoYXkga2jDtG5nLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhDQp0bXAgJT4lIGdyb3VwX2J5KGV0aG5pY2l0eSkgJT4lIHN1bW1hcmlzZShtPSBtZWFuKHNjb3JlKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IGV0aG5pY2l0eSx5ID0gbSkpICsNCiAgICBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpICsgZ2VvbV9jb2woZmlsbD0gJ3JlZCcpICsgDQogICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKG0sMikpLCB2anVzdCA9IDIsIGNvbG9yID0gJ3doaXRlJykgKw0KICAgIGxhYnMoeCA9ICdEw6JuIHThu5ljJywgeSA9ICfEkGnhu4NtIHRydW5nIGLDrG5oJykgK2xhYnMoIHRpdGxlID0gIkjDrG5oIDI6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiDEkWnhu4NtIHRydW5nIGLDrG5oIGPhu6dhIHNpbmggdmnDqm4iKQ0KDQoNCiNuaMOzbSBk4buvIGxp4buHdSB0aGVvIGV0aG5pY2l0eSB2w6AgdMOtbmggxJFp4buDbSB0cnVuZyBiw6xuaCAobSA9IG1lYW4oc2NvcmUpKSB0cm9uZyBt4buXaSBuaMOzbS4NCg0KI1ThuqFvIHJhIG3hu5l0IGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgeCBsw6AgZXRobmljaXR5IHbDoCB0cuG7pWMgeSBsw6AgxJFp4buDbSB0cnVuZyBiw6xuaCBtLiBUaGFtIHPhu5EgcG9zaXRpb24gPSAnZG9kZ2UnIGdpw7pwIGPDoWMgY+G7mXQgdHLDoW5oIGNo4buTbmcgY2jDqW8gbMOqbiBuaGF1LCBk4buFIGTDoG5nIHBow6JuIGJp4buHdCBjw6FjIG5ow7NtIGTDom4gdOG7mWMuDQoNCiNnZW9tX2NvbChmaWxsID0gJ3JlZCcpOiBEw7JuZyBuw6B5IHTDtCBtw6B1IMSR4buPIChmaWxsID0gJ3JlZCcpIGNobyBjw6FjIGPhu5l0Lg0KDQojZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKG0sIDIpKSwgdmp1c3QgPSAyLCBjb2xvciA9ICd3aGl0ZScpOiBEw7JuZyBuw6B5IHRow6ptIG5ow6NuIHbDoG8gY8OhYyBj4buZdCwgaGnhu4NuIHRo4buLIMSRaeG7g20gdHJ1bmcgYsOsbmggxJHGsOG7o2MgbMOgbSB0csOybiDEkeG6v24gMiBjaOG7ryBz4buRIChyb3VuZChtLCAyKSkgY2hvIG3hu5dpIG5ow7NtLiBW4buLIHRyw60gY+G7p2EgbmjDo24gxJHGsOG7o2MgxJFp4buBdSBjaOG7iW5oIGLhurFuZyB2anVzdCA9IDIgdsOgIG3DoHUgc+G6r2MgY+G7p2EgbmjDo24gxJHGsOG7o2MgxJHhurd0IHRow6BuaCB0cuG6r25nIChjb2xvciA9ICd3aGl0ZScpLg0KYGBgDQoNCkJp4buDdSDEkeG7kyBr4bq/dCBxdeG6oyBz4bq9IGhp4buDbiB0aOG7iyBjw6FjIGPhu5l0IGjDrG5oIHRoYW5oIG7hurFtIGPhuqFuaCBuaGF1LCBt4buZdCBj4buZdCBjaG8gbeG7l2kgbmjDs20gZMOibiB04buZYy4gQ2hp4buBdSBjYW8gY+G7p2EgbeG7l2kgY+G7mXQgxJHhuqFpIGRp4buHbiBjaG8gxJFp4buDbSB0cnVuZyBiw6xuaCBj4bunYSBiaeG6v24gc2NvcmUgdHJvbmcgbmjDs20gZMOibiB04buZYyDEkcOzLiBOaMOjbiB0csOqbiBt4buXaSBj4buZdCBoaeG7g24gdGjhu4sgxJFp4buDbSB0cnVuZyBiw6xuaCDEkcaw4bujYyBsw6BtIHRyw7JuIMSR4bq/biAyIGNo4buvIHPhu5EuDQpOaMOsbiBjaHVuZyB0aMOsIHThu5VuZyDEkWnhu4NtIHRydW5nIGLDrG5oIGPhu6dhIHNpbmggdmnDqm4gdGh14buZYyBj4bqjIDMgbmjDs20gZMOibiB04buZYyDEkeG7gXUga2jDoSBjYW8uIFR1eSBuaGnDqm4sIMSRaeG7g20gdHJ1bmcgYsOsbmggY+G7p2Egc2luaCB2acOqbiB0aHXhu5ljIG5ow7NtIGPDoWMgZMOibiB04buZYyBraMOhYyBjw7MgdOG7lW5nIMSRaeG7g20gdHJ1bmcgYsOsbmggNTMuMTcgxJFp4buDbSwgY2FvIGjGoW4gc28gduG7m2kgY8OhYyBuaMOzbSBkw6JuIHThu5ljIG5nxrDhu51pIE3hu7kgZ+G7kWMgUGhpKGFmYW0pIHbDoCBuZ8aw4budaSBn4buRYyBUw6J5IEJhbiBOaGEoaGlzcGFuaWMpIA0KDQoqKkvhur90IGx14bqtbjoqKiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gxJFp4buDbSB0cnVuZyBiw6xuaCBj4bunYSBzaW5oIHZpw6puIHRoZW8gZMOibiB04buZYyBj4bunYSBi4buZIGThu68gbGnhu4d1IGNvbGxlZ2VkaXN0YW5jZSBjdW5nIGPhuqVwIGNobyBjaMO6bmcgdGEgbeG7mXQgc+G7kSB0aMO0bmcgdGluIGjhu691IMOtY2ggduG7gSDEkWnhu4NtIHPhu5EgY+G7p2Egc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBraMOhYyBuaGF1LCB04burIMSRw7MgZ2nDunAgY8OhYyBuaMOgIGdpw6FvIGThu6VjIHbDoCBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGNow61uaCBzw6FjaCB4w6FjIMSR4buLbmggbmjhu69uZyBjaMawxqFuZyB0csOsbmggbsOgbyDEkWFuZyBob+G6oXQgxJHhu5luZyBoaeG7h3UgcXXhuqMgdsOgIG5o4buvbmcgY2jGsMahbmcgdHLDrG5oIG7DoG8gY+G6p24gxJHGsOG7o2MgY+G6o2kgdGhp4buHbi4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIHjhur9wIGxv4bqhaSDEkWnhu4NtIHPhu5ENCg0KVmnhu4djIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIG7DoHkgZ2nDunAgZ2nhuqNuZyB2acOqbiB2w6AgbmjDoCB0csaw4budbmcgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGPhu6dhIGPDoWMgcGjGsMahbmcgcGjDoXAgZ2nhuqNuZyBk4bqheSB2w6AgY2jGsMahbmcgdHLDrG5oIGjhu41jLiBYw6FjIMSR4buLbmggbmjhu69uZyDEkWnhu4NtIG3huqFuaCB2w6AgxJFp4buDbSB54bq/dSB0cm9uZyBxdcOhIHRyw6xuaCBnaeG6o25nIGThuqF5LCB04burIMSRw7MgxJHGsGEgcmEgY8OhYyBnaeG6o2kgcGjDoXAgY+G6o2kgdGnhur9uIHBow7kgaOG7o3AuDQoNCljDoWMgxJHhu4tuaCB4dSBoxrDhu5tuZyBo4buNYyB04bqtcCBj4bunYSBzaW5oIHZpw6puIHRoZW8gdGjhu51pIGdpYW4sIHF1YSDEkcOzIGPDsyB0aOG7gyBk4buxIMSRb8OhbiBuaHUgY+G6p3UgaOG7jWMgdOG6rXAgdHJvbmcgdMawxqFuZyBsYWkuIEdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggZ2nDoW8gZOG7pWMgeMOieSBk4buxbmcgY2hp4bq/biBsxrDhu6NjIHBow6F0IHRyaeG7g24gcGjDuSBo4bujcCB24bubaSBuaHUgY+G6p3UgY+G7p2Egc2luaCB2acOqbiB2w6Agc2luaCB2acOqbiBzbyBzw6FuaCBr4bq/dCBxdeG6oyBo4buNYyB04bqtcCBj4bunYSBi4bqjbiB0aMOibiB24bubaSBjw6FjIGLhuqFuIGPDuW5nIHRyYW5nIGzhu6lhIMSR4buDIMSR4buLbmggaMaw4bubbmcgbeG7pWMgdGnDqnUgaOG7jWMgdOG6rXAgdsOgIGzhu7FhIGNo4buNbiBwaMawxqFuZyBwaMOhcCBo4buNYyB04bqtcCBwaMO5IGjhu6NwLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhIA0KdG1wIDwtIHRtcCAlPiUgbXV0YXRlKHNjb3JlQyA9IGN1dChzY29yZSwzLCBsYWJlbCA9IGMoJ0dp4buPaScsICdLaMOhJywnVHJ1bmcgYsOsbmgnKSkpDQp0bXAgJT4lIGdncGxvdChhZXMoeCA9IHNjb3JlQykpICsgDQogIGdlb21fYmFyKGZpbGwgPSAnYmx1ZScpK2xhYnMoeCA9ICJY4bq/cCBsb+G6oWkiLCB5ID0gIlPhu5EgbMaw4bujbmciKSArIGxhYnMoIHRpdGxlID0gIkjDrG5oIDM6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyB44bq/cCBsb+G6oWkgxJFp4buDbSBz4buRIikNCg0KDQojIHThuqFvIHJhIG3hu5l0IGJp4bq/biBt4bubaSBzY29yZUMgYuG6sW5nIGPDoWNoIGNoaWEgxJFp4buDbSBz4buRIHNjb3JlIHRow6BuaCAzIG5ow7NtIChj4bqvdCkgduG7m2kgY8OhYyBuaMOjbiB0xrDGoW5nIOG7qW5nIGzDoCAiR2nhu49pIiwgIktow6EiLCB2w6AgIlRydW5nIGLDrG5oIg0KDQojIHThuqFvIHJhIG3hu5l0IGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgeCBsw6AgYmnhur9uIG3hu5tpIHThuqFvIHJhIHbhu5tpIGPDoWMgdGhhbmggbcOgdSB4YW5oIGTGsMahbmcgdsOgIHRow6ptIHRpw6p1IMSR4buBIGNobyB0cuG7pWMgeCAoIljhur9wIGxv4bqhaSIpIHbDoCB0cuG7pWMgeSAoIlPhu5EgbMaw4bujbmciKS4NCmBgYA0KDQpCaeG7g3UgxJHhu5Mga+G6v3QgcXXhuqMgc+G6vSBoaeG7g24gdGjhu4sgYmEgdGhhbmgsIG3hu5dpIHRoYW5oIMSR4bqhaSBkaeG7h24gY2hvIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aHXhu5ljIG3hu5l0IG5ow7NtIHjhur9wIGxv4bqhaSBo4buNYyB04bqtcC4NCg0KQ8OzIHRo4buDIHRo4bqleSBy4bqxbmcsIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiDEkeG6oXQga+G6v3QgcXXhuqMgaOG7jWMgdOG6rXAgeOG6v3AgbG/huqFpIGtow6EgdHLhu58gbMOqbiBraMOhIGNhbywgdHJvbmcgxJHDsyBzaW5oIHZpw6puIMSR4bqhdCBo4buNYyBs4buxYyBraMOhIGNoaeG6v20gxJFhIHPhu5EgKHRyw6puIDIuNTAwIHNpbmggdmnDqm4pLCBo4buNYyBs4buxYyBnaeG7j2kgY8OzIHRyw6puIDEuMDAwIHNpbmggdmnDqm4gdsOgIGjhu41jIGzhu7FjIHRydW5nIGLDrG5oIGPDsyB0csOqbiAxLjAwMCBzaW5oIHZpw6puLg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIHjhur9wIGxv4bqhaSDEkWnhu4NtIHPhu5EgbMOgIG3hu5l0IGPDtG5nIGPhu6UgaOG7r3Ugw61jaCBjaG8gY8OhYyBiw6puIGxpw6puIHF1YW4gdHJvbmcgbMSpbmggduG7sWMgZ2nDoW8gZOG7pWMgxJHhu4MgxJHDoW5oIGdpw6EgaGnhu4d1IHF14bqjIGdp4bqjbmcgZOG6oXksIHBow6JuIHTDrWNoIHh1IGjGsOG7m25nIGjhu41jIHThuq1wLCBjdW5nIGPhuqVwIHRow7RuZyB0aW4gY2hvIHNpbmggdmnDqm4sIGjhu5cgdHLhu6MgdMawIHbhuqVuIHbDoCDEkeG7i25oIGjGsOG7m25nLCB2w6AgdWx0aW1hdGVseSwgbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYy4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIG3hu6ljIGzGsMahbmcvdGh1IG5o4bqtcCBj4bunYSBzaW5oIHZpw6puDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIGPDoWMgdHLGsOG7nW5nIMSR4bqhaSBo4buNYyB2w6AgY2FvIMSR4bqzbmcgxJHDoW5oIGdpw6EgbeG7qWMgdGh1IG5o4bqtcCBj4bunYSBzaW5oIHZpw6puIHbDoCBnaWEgxJHDrG5oLCDEkeG7gyB04burIMSRw7MgxJFp4buBdSBjaOG7iW5oIG3hu6ljIGjhu41jIHBow60gcGjDuSBo4bujcCBjxaluZyBuaMawIGPDoWMgY2jDrW5oIHPDoWNoIHbhu4Egdmnhu4djIG1p4buFbiBnaeG6o2kgaOG7jWMgcGjDrSB2w6AgY8OhYyBjaMOtbmggc8OhY2ggaOG7jWMgYuG7lW5nIGNobyBzaW5oIHZpw6puLg0KDQpOZ2/DoGkgcmEsIGPDsm4gZ8OzcCBwaOG6p24gbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYyB0aMO0bmcgcXVhIHZp4buHYyBj4bqjaSB0aGnhu4duIGNoxrDGoW5nIHRyw6xuaCDEkcOgbyB04bqhbywgxJHhu4tuaCBoxrDhu5tuZyBuZ2jhu4EgbmdoaeG7h3AgY2hvIHNpbmggdmnDqm4gdsOgIGjhu5cgdHLhu6Mgc2luaCB2acOqbiB0w6xtIGtp4bq/bSB2aeG7h2MgbMOgbSBoaeG7h3UgcXXhuqMgaMahbi4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgbXV0YXRlKHdhZ2VjID0gY3V0KHdhZ2UsNCwgbGFiZWwgPSBjKCdDYW8nLCdLaMOhIGNhbycsJ1RydW5nIGLDrG5oJywnVGjhuqVwJykpKQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSB3YWdlYykpICsgDQogIGdlb21fYmFyKGZpbGwgPSAncmVkJykrbGFicyh4ID0gIljhur9wIGxv4bqhaSIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpICsgbGFicyggdGl0bGUgPSAiSMOsbmggNDogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHRp4buBbiBsxrDGoW5nL3RodSBuaOG6rXAgY+G7p2Egc2luaCB2acOqbiIpDQoNCiMgdOG6oW8gcmEgbeG7mXQgYmnhur9uIG3hu5tpIHdhZ2VjIGLhurFuZyBjw6FjaCBjaGlhIHRp4buBbiBsxrDhu6NuZyB0aMOgbmggNCBuaMOzbSB24bubaSBjw6FjIG5ow6NuIHTGsMahbmcg4bupbmcgbMOgICJDYW8iLCAiS2jDoSBjYW8iLCAiVHJ1bmcgYsOsbmgiIHbDoCAiVGjhuqVwIg0KDQojIHThuqFvIHJhIG3hu5l0IGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgeCBsw6AgYmnhur9uIG3hu5tpIHThuqFvIHJhIHbhu5tpIGPDoWMgdGhhbmggbcOgdSDEkeG7jyB2w6AgdGjDqm0gdGnDqnUgxJHhu4EgY2hvIHRy4bulYyB4ICgiWOG6v3AgbG/huqFpIikgdsOgIHRy4bulYyB5ICgiU+G7kSBsxrDhu6NuZyIpLg0KYGBgDQoNCk5oaeG7gXUgbmdoacOqbiBj4bupdSDEkcOjIGNo4buJIHJhIHLhurFuZywgY8OzIG3hu5FpIGxpw6puIGjhu4cgbeG6rXQgdGhp4bq/dCBnaeG7r2EgbeG7qWMgdGh1IG5o4bqtcCBj4bunYSBnaWEgxJHDrG5oIHbDoCBr4bq/dCBxdeG6oyBo4buNYyB04bqtcCBj4bunYSBzaW5oIHZpw6puLiBTaW5oIHZpw6puIHh14bqldCB0aMOibiB04burIGdpYSDEkcOsbmggY8OzIHRodSBuaOG6rXAgY2FvIHRoxrDhu51uZyBjw7MgbcO0aSB0csaw4budbmcgaOG7jWMgdOG6rXAgdOG7kXQgaMahbiwgbsahaSBo4buNIMSRxrDhu6NjIHRp4bq/cCB4w7pjIHbhu5tpIG5oaeG7gXUgbmd14buTbiB0aMO0bmcgdGluIHbDoCBjxqEgaOG7mWkgaOG7jWMgdOG6rXAgaMahbiBzbyB24bubaSBzaW5oIHZpw6puIHh14bqldCB0aMOibiB04burIGdpYSDEkcOsbmggY8OzIHRodSBuaOG6rXAgdGjhuqVwLg0KDQpUaGVvIMSR4buTIHRo4buLIHRow6wgc2luaCB2acOqbiBtw6AgZ2lhIMSRw6xuaCBjw7MgbeG7qWMgdGh1IG5o4bqtcCBraMOhIGNhbyB2w6AgdHJ1bmcgYsOsbmggY2hp4bq/bSBz4buRIGzGsOG7o25nIMSRYSBz4buRLiBOaOG7r25nIHNpbmggdmnDqm4gbcOgIGdpYSDEkcOsbmggY8OzIG3hu6ljIHRodSBuaOG6rXAgY2FvIGPDsyBraG/huqNuZyA4MDAgc2luaCB2acOqbiwgY8OzIG3hu6ljIHRodSBuaOG6rXAga2jDoSBjYW8gY8OzIHRyw6puIDEuMDAwIHNpbmggdmnDqm4sIG3hu6ljIHRodSBuaOG6rXAgdHJ1bmcgYsOsbmggdHLDqm4gMS4wMDAgc2luaCB2acOqbiB2w6AgbeG7qWMgdGh1IG5o4bqtcCB0aOG6pXAgY8OzIGtob+G6o25nIDUwMCBzaW5oIHZpw6puLg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIG3hu6ljIGzGsMahbmcvdGh1IG5o4bqtcCBj4bunYSBzaW5oIHZpw6puIGzDoCBt4buZdCBjw7RuZyBj4bulIGjhu691IMOtY2ggY2hvIGPDoWMgYsOqbiBsacOqbiBxdWFuIHRyb25nIGzEqW5oIHbhu7FjIGdpw6FvIGThu6VjIHbDoCBsYW8gxJHhu5luZyDEkeG7gyDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgxJHDoG8gdOG6oW8sIMSRxrBhIHJhIGPDoWMgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgaOG7jWMgcGjDrSB2w6AgaOG7lyB0cuG7oyBzaW5oIHZpw6puIGzhu7FhIGNo4buNbiBuZ2jhu4EgbmdoaeG7h3AsIG5naGnDqm4gY+G7qXUgdGjhu4sgdHLGsOG7nW5nIGxhbyDEkeG7mW5nIHbDoCB1bHRpbWF0ZWx5LCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLg0KDQojIyDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRoZW8gZ2nhu5tpIHTDrW5oIOG7nyBt4buXaSBkw6JuIHThu5ljDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHbDoCBuaMOgIHRyxrDhu51uZyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBiw6xuaCDEkeG6s25nIGdp4bubaSB0cm9uZyBnacOhbyBk4bulYyDhu58gY8OhYyBkw6JuIHThu5ljIGtow6FjIG5oYXUgdsOgIHjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIHThu7cgbOG7hyBjaMOqbmggbOG7h2NoIGdp4bubaSB0w61uaCBjYW8gdHJvbmcgZ2nDoW8gZOG7pWMgxJHhu4MgY8OzIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCBwaMO5IGjhu6NwLiBTbyBzw6FuaCB04bu3IGzhu4cgc2luaCB2acOqbiBuYW0gdsOgIG7hu68gdGhlbyBkw6JuIHThu5ljIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUgxJHhu4MgxJHDoW5oIGdpw6EgeHUgaMaw4bubbmcgdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbi4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBncm91cF9ieShldGhuaWNpdHksZ2VuZGVyKSAlPiUgc3VtbWFyaXNlKG49bigpKSAlPiUgZ2dwbG90KGFlcyh4ID0gZXRobmljaXR5LHkgPSBuKSkgKyBnZW9tX2NvbChwb3NpdGlvbiA9ICdkb2RnZScpICsgZmFjZXRfd3JhcCh+Z2VuZGVyKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBuKSx2anVzdCA9IDAsIGNvbG9yID0gJ2dyZWVuJykgKyBsYWJzKHggPSAnRMOibiB04buZYycsIHkgPSAnU+G7kSBsxrDhu6NuZycpICsgbGFicyh0aXRsZSA9ICJIw6xuaCA1OiDEkOG7kyB0aOG7iyBz4buRIGzGsOG7o25nICBzaW5oIHZpw6puIHRoZW8gZ2nhu5tpIHTDrW5oIOG7nyBt4buXaSBkw6JuIHThu5ljIikNCmBgYA0KDQpD4bqjIDIgYmnhu4N1IMSR4buTIMSR4buBdSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puLCBt4buXaSBiaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIG3hu5l0IG5ow7NtIGdp4bubaSB0w61uaCB0aGVvIGPDoWMgbmjDs20gZMOibiB04buZYy4gTeG7l2kgbmjDs20gZ2nhu5tpIHTDrW5oIHPhur0gY8OzIGJhIGPhu5l0IHjhur9wIGPhuqFuaCBuaGF1LCBjaGnhu4F1IGNhbyBj4bunYSBt4buXaSBj4buZdCDEkeG6oWkgZGnhu4duIGNobyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGh14buZYyB04burbmcgbmjDs20gZMOibiB04buZYy4NCg0KTmjDrG4gY2h1bmcgdGjDrCBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gbmFtIHbDoCBzaW5oIHZpw6puIG7hu68ga2jDtG5nIGPDsyBz4buxIGNow6puaCBs4buHbmggbmhp4buBdS4gVHV5IG5oacOqbiB0aMOsIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBuYW0gdGhlbyBo4buNYyDEkeG6oWkgaOG7jWMgdsOgIGNhbyDEkeG6s25nIOG7nyBjw6FjIG5ow7NtIGTDom4gdOG7mWMgxJHhu4F1IGNhbyBoxqFuIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBu4buvIChjaGnhur9tIDU0LDg2JSB0cm9uZyB04buVbmcgc+G7kSBzaW5oIHZpw6puKQ0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIGdp4bubaSB0w61uaCDhu58gbeG7l2kgZMOibiB04buZYyBsw6AgbeG7mXQgY8O0bmcgY+G7pSBo4buvdSDDrWNoIMSR4buDIMSRw6FuaCBnacOhIHPhu7EgYsOsbmggxJHhurNuZyBnaeG7m2kgdHJvbmcgZ2nDoW8gZOG7pWMsIHBow6JuIHTDrWNoIHh1IGjGsOG7m25nIHRoZW8gdGjhu51pIGdpYW4sIG5naGnDqm4gY+G7qXUgduG7gSBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgdsOgIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgZ2nDoW8gZOG7pWMuDQoNCiMjIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyBj4bunYSBt4buXaSBkw6JuIHThu5ljDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIGPDoWMgbmjDoCBuZ2hpw6puIGPhu6l1IHbDoCBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggxJHDoW5oIGdpw6Eg4bqjbmggaMaw4bufbmcgY+G7p2EgbuG7gW4gdOG6o25nIGdpYSDEkcOsbmgsIGPhu6UgdGjhu4MgbMOgIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBj4bunYSBjaGEgbeG6uSwgxJHhur9uIHZp4buHYyBo4buNYyB04bqtcCBj4bunYSBjb24gY8OhaS4gWMOhYyDEkeG7i25oIG5o4buvbmcgZMOibiB04buZYyBjw7MgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyBjYW8gxJHhu4MgaOG7jWMgaOG7j2kga2luaCBuZ2hp4buHbSB2w6AgbmjDom4gcuG7mW5nIG3DtCBow6xuaC4NCg0KR2nDunAgc28gc8OhbmggdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIGNoYSBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyB0aGVvIGTDom4gdOG7mWMgdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSDEkeG7gyDEkcOhbmggZ2nDoSB4dSBoxrDhu5tuZyB0aGF5IMSR4buVaSB0aGVvIHRo4budaSBnaWFuLiBYw6FjIMSR4buLbmggbmjhu69uZyBkw6JuIHThu5ljIGPDsyBz4buxIHRoYXkgxJHhu5VpIHTDrWNoIGPhu7FjIGhv4bq3YyB0acOqdSBj4buxYyB24buBIOG6o25oIGjGsOG7n25nIGPhu6dhIG7hu4FuIHThuqNuZyBnaWEgxJHDrG5oIMSR4bq/biB2aeG7h2MgaOG7jWMgdOG6rXAgY+G7p2Egc2luaCB2acOqbi4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgZ3JvdXBfYnkoZXRobmljaXR5LCBmY29sbGVnZSkgJT4lIHN1bW1hcmlzZShuID0gbigpKQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSBldGhuaWNpdHksIHkgPSBuLCBmaWxsID0gZmNvbGxlZ2UpKSArIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKyBsYWJzKHggPSAiRMOibiB04buZYyIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpICsgbGFicyggdGl0bGUgPSAiSMOsbmggNjogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7MgY2hhIHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyIpDQoNCiMgbmjDs20gZOG7ryBsaeG7h3UgdGhlbyBj4bqjIGV0aG5pY2l0eSB2w6AgZmNvbGxlZ2UuIFNhdSDEkcOzLCBuw7MgdMOtbmggdOG7lW5nIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiAobiA9IG4oKSkNCg0KIyAgdOG6oW8gcmEgbeG7mXQgYmnhu4N1IMSR4buTIGdncGxvdCB24bubaTpUcuG7pWMgeDogZXRobmljaXR5IChkw6JuIHThu5ljKSwgVHLhu6VjIHk6IG4gKHThu5VuZyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4pIHbDoCBjw6FjIHRoYW5oIMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBi4bufaSBiaeG6v24gZmNvbGxlZ2UgKG5ndXnhu4duIHbhu41uZyB0aGVvIGjhu41jIMSR4bqhaSBo4buNYykNCg0KYGBgDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCA8LSB0bXAgJT4lIGdyb3VwX2J5KGV0aG5pY2l0eSwgbWNvbGxlZ2UpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkNCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gZXRobmljaXR5LCB5ID0gbiwgZmlsbCA9IG1jb2xsZWdlKSkgK2dlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoKSkgKyBsYWJzKHggPSAiRMOibiB04buZYyIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpICsgbGFicyggdGl0bGUgPSAiSMOsbmggNzogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7MgbeG6uSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMiKQ0KYGBgDQoNCsSQw6J5IGzDoCBoYWkgYmnhu4N1IMSR4buTIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIGNoYSB2w6AgbeG6uSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMgY+G7p2EgbeG7l2kgbmjDs20gZMOibiB04buZYyAuIE3hu5dpIG5ow7NtIGTDom4gdOG7mWMgY8OzIGhhaSBj4buZdCB44bq/cCBj4bqhbmggbmhhdSwgbeG7mXQgY+G7mXQgbMOgICJubyIgbMOgIGNoYS9t4bq5IGtow7RuZyB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMgdsOgIG3hu5l0IGPhu5l0ICJ5ZXMiIGzDoCBjaGEvbeG6uSB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMuIENoaeG7gXUgY2FvIGPhu6dhIG3hu5dpIGPhu5l0IHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gY8OzIGNoYS9t4bq5IHThu5F0IG5naGnhu4dwIGhv4bq3YyBraMO0bmcgdOG7kXQgbmdoaeG7h3AgxJHhuqFpIGjhu41jLg0KDQrhu54gY+G6oyBoYWkgYmnhu4N1IGLhu5MgdGjDrCBjw7MgdGjhu4MgdGjhuqV5IHPhu5EgbMaw4bujbmcgY2hhIG3hurkgc2luaCB2acOqbiB04buRdCBuZ2hp4buHcCDEkeG6oWkgaOG7jWMga2jDoSB0aOG6pXAgY2jhu4kgY2hp4bq/bSBraG/huqNuZyAzMiw4JSB0cm9uZyB04buVbmcgc+G7kSB2w6AgaOG6p3UgaOG6v3QgbMOgIHPhu5EgbMaw4bujbmcgY2hhL23hurkgc2luaCB2acOqbiBraMO0bmcgdOG7kXQgbmdoaeG7h3AgxJHhuqFpIGjhu41jLg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7MgY2hhIHbDoCBt4bq5IHThu5F0IG5naGnhu4dwIMSR4bqhaSBo4buNYyBj4bunYSBt4buXaSBkw6JuIHThu5ljIGzDoCBt4buZdCBjw7RuZyBj4bulIGjhu691IMOtY2ggY2hvIGPDoWMgYsOqbiBsacOqbiBxdWFuIHRyb25nIGzEqW5oIHbhu7FjIGdpw6FvIGThu6VjIHbDoCB4w6MgaOG7mWkgxJHhu4MgxJHDoW5oIGdpw6Eg4bqjbmggaMaw4bufbmcgY+G7p2EgbuG7gW4gdOG6o25nIGdpYSDEkcOsbmggxJHhur9uIHZp4buHYyBo4buNYyB04bqtcCwgcGjDom4gdMOtY2ggc+G7sSBi4bqldCBiw6xuaCDEkeG6s25nIGdpw6FvIGThu6VjLCBuZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIHbDoCB1bHRpbWF0ZWx5LCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLk5nb8OgaSByYSwgdmnhu4djIHBow6JuIHTDrWNoIG7DoHkgY8WpbmcgY8OzIHRo4buDIGdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHjDonkgZOG7sW5nIGPDoWMgY2jGsMahbmcgdHLDrG5oIGjhu5cgdHLhu6MgcGjDuSBo4bujcCDEkeG7gyB0aHUgaOG6uXAga2hv4bqjbmcgY8OhY2ggZ2nDoW8gZOG7pWMgZ2nhu69hIGPDoWMgZMOibiB04buZYy4NCg0KIyMgxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiBjw7Mgc+G7nyBo4buvdSBuaMOgIHbDoCBraMO0bmcgc+G7nyBo4buvdSBuaMOgDQoNClZp4buHYyBwaMOibiB0w61jaCBuw6B5IGdpw7pwIMSRw6FuaCBnacOhIHbhu4EgduG6pW4gxJHhu4EgbmjDoCDhu58gY+G7p2Egc2luaCB2acOqbiwgeMOhYyDEkeG7i25oIG5o4buvbmcgbmjDs20gc2luaCB2acOqbiBjw7MgY2jhu5cg4bufIHbDoCBraMO0bmcgY8OzIGNo4buXIOG7nyDEkeG7gyBjw7MgYmnhu4duIHBow6FwIGjhu5cgdHLhu6MgcGjDuSBo4bujcC4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgZ3JvdXBfYnkoaG9tZSwgZXRobmljaXR5KSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpDQp0bXAgJT4lIGdncGxvdChhZXMoeCA9IGhvbWUsIHkgPSBuLCBmaWxsID0gZXRobmljaXR5KSkgKyBnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKCkpICsgbGFicyh4ID0gIk5ow6Ag4bufIiwgeSA9ICJT4buRIGzGsOG7o25nIikgKyBsYWJzKCB0aXRsZSA9ICJIw6xuaCA4OiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIGPDsyBz4bufIGjhu691IG5ow6AgdsOgIGtow7RuZyBz4bufIGjhu691IG5ow6AgIikNCg0KIyBuaMOzbSBk4buvIGxp4buHdSB0cm9uZyB0bXAgdGhlbyBoYWkgYmnhur9uIGhvbWUgdsOgIGV0aG5pY2l0eQ0KDQojIHThuqFvIG3hu5l0IGJp4buDdSDEkeG7kyBjw6FjIHRoYW5oIHjhur9wIGPhuqFuaCBuaGF1IHbhu5tpIHRy4bulYyBob8OgbmggeCB0aGVvIGJp4bq/biBob21lIHbDoCB0cuG7pWMgdHVuZyB5IHRoZW8gYmnhur9uIG4gKHPhu5EgbMaw4bujbmcpdsOgIFPhu60gZOG7pW5nIGJp4bq/biBldGhuaWNpdHkgxJHhu4MgdMO0IG3DoHUgY2hvIGPDoWMgY+G7mXQuDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBjw6FjIG5ow7NtICJob21lIiB0csOqbiB0cuG7pWMgaG/DoG5oLiBN4buXaSBuaMOzbSBz4bq9IGPDsyBt4buZdCBj4bulbSBj4buZdCDEkeG7qW5nIGPhuqFuaCBuaGF1LCB24bubaSBt4buXaSBj4buZdCB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aHXhu5ljIG3hu5l0IGTDom4gdOG7mWMgbmjhuqV0IMSR4buLbmggKMSRxrDhu6NjIHBow6JuIGJp4buHdCBi4bqxbmcgbcOgdSBz4bqvYykuQ2hp4buBdSBjYW8gY+G7p2EgbeG7l2kgY+G7mXQgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgKG4pIHRodeG7mWMgbmjDs20gZMOibiB04buZYyDEkcOzIHNpbmggc+G7kW5nIHThuqFpICJob21lIiDEkcOzLg0KDQojIyDEkOG7kyB0aOG7iyBoaXN0b2dyYW0gdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgxJFp4buDbSBz4buRIGPhu6dhIHNpbmggdmnDqm4NCg0KVmnhu4djIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIGPDsyB0aOG7gyBnacO6cCBuaMOgIHRyxrDhu51uZyBoaeG7g3UgcsO1IGjGoW4gduG7gSBz4buxIGtow6FjIGJp4buHdCB24buBIGvhur90IHF14bqjIGjhu41jIHThuq1wIGPhu6dhIHNpbmggdmnDqm4uIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgZ2nDunAgaOG7jSBwaMOhdCB0cmnhu4NuIGPDoWMgY2jGsMahbmcgdHLDrG5oIHbDoCBk4buLY2ggduG7pSB04buRdCBoxqFuIMSR4buDIMSRw6FwIOG7qW5nIG5odSBj4bqndSBj4bunYSB04bqldCBj4bqjIHNpbmggdmnDqm4uDQoNClbDrSBk4bulOiBN4buZdCBxdeG6rW4gaOG7jWMgY8OzIHRo4buDIHPhu60gZOG7pW5nIHBow6JuIHTDrWNoIMSR4buTIHRo4buLIMSR4buDIHjDoWMgxJHhu4tuaCB4ZW0gY8OzIHPhu7EgY2jDqm5oIGzhu4djaCBuw6BvIHbhu4EgdOG7tyBs4buHIGjhu41jIHNpbmggxJHhuqF0IMSRaeG7g20gY2FvIHRyb25nIGPDoWMga+G7syB0aGkgY2h14bqpbiBow7NhIGdp4buvYSBjw6FjIG5ow7NtIGTDom4gdOG7mWMgaGF5IGtow7RuZy4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSBzY29yZSkpICsgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGggPSA1LCBmaWxsID0gJ2JsdWUnLCBjb2xvciA9ICdyZWQnKSArIGxhYnMoeCA9ICLEkGnhu4NtIHPhu5EiLCB5ID0gIlPhu5EgbMaw4bujbmciKSArIGxhYnMoIHRpdGxlID0gIkjDrG5oIDk6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIMSRaeG7g20gc+G7kSBj4bunYSBzaW5oIHZpw6puIikNCg0KIyB04bqhbyBt4buZdCBiaeG7g3UgxJHhu5MgZ2dwbG90MiB24bubaSB0cuG7pWMgeCDEkcaw4bujYyB4w6FjIMSR4buLbmggYuG7n2kgYmnhur9uIHNjb3JlDQoNCiNiaW53aWR0aCA9IDU6IFjDoWMgxJHhu4tuaCDEkeG7mSBy4buZbmcgY+G7p2EgbeG7l2kgY+G7mXQgbMOgIDUgxJHGoW4gduG7iy4NCiNmaWxsID0gJ2JsdWUnOiBUw7QgbcOgdSBjw6FjIGPhu5l0IGLhurFuZyBtw6B1IHhhbmggbGFtLg0KI2NvbG9yID0gJ3JlZCc6IFZp4buBbiBjw6FjIGPhu5l0IGLhurFuZyBtw6B1IMSR4buPLg0KYGBgDQoNCkJp4buDdSDEkeG7kyBow6xuaCBj4buZdCBz4bq9IGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIMSRaeG7g20gc+G7kSB0cm9uZyBt4buXaSBraG/huqNuZyBnacOhIHRy4buLIGPhu6dhIGJp4bq/biBzY29yZS4gQ2hp4buBdSBjYW8gY+G7p2EgbeG7l2kgY+G7mXQgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgxJFp4buDbSBz4buRIHRyb25nIGtob+G6o25nIMSRw7MuIA0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJDhu5MgdGjhu4sgaGlzdG9ncmFtIHRo4buDIGhp4buHbiDEkWnhu4NtIHPhu5EgY+G7p2Egc2luaCB2acOqbiBsw6AgbeG7mXQgY8O0bmcgY+G7pSBo4buvdSDDrWNoIGNobyBjw6FjIGLDqm4gbGnDqm4gcXVhbiB0cm9uZyBsxKluaCB24buxYyBnacOhbyBk4bulYyDEkeG7gyDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgZ2nhuqNuZyBk4bqheSwgcGjDom4gdMOtY2ggeHUgaMaw4bubbmcgaOG7jWMgdOG6rXAsIGN1bmcgY+G6pXAgdGjDtG5nIHRpbiBjaG8gc2luaCB2acOqbiB2w6AgbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBnacOhbyBk4bulYyBjaG8gc2luaCB2acOqbi4NCg0KIyMgxJDhu5MgdGjhu4sgaGlzdG9ncmFtIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaA0KDQpWaeG7h2MgcGjDom4gdMOtY2ggbsOgeSBnacO6cCBuaMOgIHRyxrDhu51uZyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBjaMOqbmggbOG7h2NoIMSRaeG7g20gc+G7kSBnaeG7r2EgbmFtIHbDoCBu4buvLiBU4burIMSRw7MgeMOhYyDEkeG7i25oIG5o4buvbmcgbcO0biBo4buNYyBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIMSRaeG7g20gc+G7kSBs4bubbiDEkeG7gyBjw7MgYmnhu4duIHBow6FwIGNhbiB0aGnhu4dwIHBow7kgaOG7o3AuIFNvIHPDoW5oIMSRaeG7g20gc+G7kSBj4bunYSBuYW0gdsOgIG7hu68gdHJvbmcgY8OhYyBnaWFpIMSRb+G6oW4ga2jDoWMgbmhhdSDEkeG7gyDEkcOhbmggZ2nDoSB4dSBoxrDhu5tuZyB0aGF5IMSR4buVaSB0aGVvIHRo4budaSBnaWFuLiBYw6FjIMSR4buLbmggbmjhu69uZyB0aGF5IMSR4buVaSB0w61jaCBj4buxYyBob+G6t2MgdGnDqnUgY+G7sWMgduG7gSBz4buxIGNow6puaCBs4buHY2ggxJFp4buDbSBz4buRIGdp4buvYSBuYW0gdsOgIG7hu68uDQoNCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSBzY29yZSkpICsgDQogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gNSwgZmlsbCA9ICdicm93bicsIGNvbG9yID0gJ2JsYWNrJykgKyAgZmFjZXRfd3JhcCh+Z2VuZGVyKSArIGxhYnMoeCA9ICIgxJBp4buDbSIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpKyBsYWJzKHRpdGxlID0gIkjDrG5oIDEwOiDEkOG7kyB0aOG7iyB0aOG7gyBoaeG7h24gc+G7sSBwaMOibiBwaOG7kWkgY+G7p2EgxJFp4buDbSBz4buRIHBow6JuIGNoaWEgdGhlbyBnaeG7m2kgdMOtbmgiKQ0KDQojIHThuqFvIG3hu5l0IGJp4buDdSDEkeG7kyBnZ3Bsb3QyIHbhu5tpIHRy4bulYyB4IMSRxrDhu6NjIHjDoWMgxJHhu4tuaCBi4bufaSBiaeG6v24gc2NvcmUNCg0KI2ZhY2V0X3dyYXA6IENoaWEgYmnhu4N1IMSR4buTIHRow6BuaCAyIGJp4buDdSDEkeG7kyB0aGVvIGdp4bubaSB0w61uaCBj4bunYSBzaW5oIHZpw6puLg0KDQojYmlud2lkdGggPSA1OiBDaGnhu4F1IHLhu5luZyBj4bunYSBt4buXaSBj4buZdCBsw6AgNSDEkWnhu4NtLg0KI2ZpbGwgPSAnYnJvd24nOiBUw7QgbcOgdSBiw6puIHRyb25nIGPhu5l0IGLhurFuZyBtw6B1IG7DonUuDQojY29sb3IgPSAnYmxhY2snOiBWaeG7gW4gbmdvw6BpIGPhu6dhIGPhu5l0IGPDsyBtw6B1IMSRZW4uDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBoYWkgYmnhu4N1IMSR4buTIGNvbiwgbeG7mXQgY2hvIG5hbSB2w6AgbeG7mXQgY2hvIG7hu68uIE3hu5dpIGJp4buDdSDEkeG7kyBjb24gdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIMSRaeG7g20gc+G7kSBj4bunYSBnaeG7m2kgdMOtbmggdMawxqFuZyDhu6luZy4NCg0KKipL4bq/dCBsdeG6rW46KiogVmnhu4djIHBow6JuIHTDrWNoIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaCBsw6AgbeG7mXQgY8O0bmcgY+G7pSDEkeG7gyDEkcOhbmggZ2nDoSBz4buxIGLDrG5oIMSR4bqzbmcgZ2nhu5tpIHRyb25nIGdpw6FvIGThu6VjLCBwaMOibiB0w61jaCB4dSBoxrDhu5tuZyB0aGVvIHRo4budaSBnaWFuLCBuZ2hpw6puIGPhu6l1IHbhu4EgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIHbDoCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGdpw6FvIGThu6VjLg0KDQojIyDEkOG7kyB0aOG7iyBoaXN0b2dyYW0gdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIMSRaeG7g20gc+G7kSBj4bunYSB04burbmcgZMOibiB04buZYw0KDQrEkMOhbmggZ2nDoSBz4buxIGLDrG5oIMSR4bqzbmcgZ2nDoW8gZOG7pWMgZ2nhu69hIGPDoWMgZMOibiB04buZYzogR2nDunAgY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggdsOgIG5ow6AgcXXhuqNuIGzDvSBnacOhbyBk4bulYyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSBiw6xuaCDEkeG6s25nIGdpw6FvIGThu6VjIGdp4buvYSBjw6FjIGTDom4gdOG7mWMuIFjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIMSRaeG7g20gc+G7kSB0cnVuZyBiw6xuaCB0aOG6pXAgxJHhu4MgY8OzIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCBwaMO5IGjhu6NwLiBTbyBzw6FuaCDEkWnhu4NtIHPhu5EgdHJ1bmcgYsOsbmggY+G7p2EgY8OhYyBkw6JuIHThu5ljIHRyb25nIGPDoWMgZ2lhaSDEkW/huqFuIGtow6FjIG5oYXUgxJHhu4MgxJHDoW5oIGdpw6EgeHUgaMaw4bubbmcgdGhheSDEkeG7lWkgdGhlbyB0aOG7nWkgZ2lhbi4gWMOhYyDEkeG7i25oIG5o4buvbmcgZMOibiB04buZYyBjw7Mgc+G7sSB0aGF5IMSR4buVaSB0w61jaCBj4buxYyBob+G6t2MgdGnDqnUgY+G7sWMgduG7gSDEkWnhu4NtIHPhu5EuDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gc2NvcmUsIGZpbGwgPSBldGhuaWNpdHkpKSArIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gNSkgKyBsYWJzKCB4ID0ixJBp4buDbSIsIHkgPSAiU+G7kSBsxrDhu6NuZyIpK2xhYnModGl0bGUgPSAiSMOsbmggMTE6IMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSDEkWnhu4NtIHPhu5EgY+G7p2EgdOG7q25nIGTDom4gdOG7mWMiKQ0KDQojIFThuqFvIGJp4buDdSDEkeG7kyB24bubaSBUcuG7pWMgaG/DoG5oICh4KSBiaeG7g3UgdGjhu4sgxJFp4buDbSBz4buRLCB0cuG7pWMgdHVuZyBiaeG7g3UgdGjhu4sgc+G7kSBsxrDhu6NuZyB2w6AgTcOgdSBz4bqvYyBj4bunYSBj4buZdCBiaeG7g3UgdGjhu4sgZMOibiB04buZYy4NCiMgYmlud2lkdGggPSA1OiBDaGnhu4F1IHLhu5luZyBj4bunYSBt4buXaSBj4buZdCBsw6AgNSDEkWnhu4NtLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBoaeG7g24gdGjhu4sgY8OhYyBj4buZdCB0aOG7gyBoaeG7h24gc+G7sSBwaMOibiBwaOG7kWkgxJFp4buDbSBz4buRIGPhu6dhIHThu6tuZyBkw6JuIHThu5ljLiBNw6B1IHPhuq9jIGPhu6dhIGPDoWMgY+G7mXQgZ2nDunAgcGjDom4gYmnhu4d0IGPDoWMgZMOibiB04buZYyBraMOhYyBuaGF1Lg0KDQoqKkvhur90IGx14bqtbjoqKiBWaeG7h2MgcGjDom4gdMOtY2ggxJHhu5MgdGjhu4sgc+G7sSBwaMOibiBwaOG7kWkgxJFp4buDbSBz4buRIGPhu6dhIHThu6tuZyBkw6JuIHThu5ljIGfDs3AgcGjhuqduIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgZ2nDoW8gZOG7pWMgdGjDtG5nIHF1YSB2aeG7h2M6IFjDoWMgxJHhu4tuaCBuaOG7r25nIHLDoG8gY+G6o24gxJHhu5FpIHbhu5tpIHZp4buHYyBo4buNYyB04bqtcCBj4bunYSBo4buNYyBzaW5oIHRodeG7mWMgY8OhYyBkw6JuIHThu5ljIHRoaeG7g3Ugc+G7kS4gUGjDoXQgdHJp4buDbiBjw6FjIGNoxrDGoW5nIHRyw6xuaCB2w6AgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgaOG7jWMgc2luaCB0aHXhu5ljIGPDoWMgZMOibiB04buZYyB0aGnhu4N1IHPhu5EuDQoNCiMjIMSQ4buTIHRo4buLIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIG3hu6ljIHRodSBuaOG6rXAgdGhlbyBkw6JuIHThu5ljDQoNCsSQw6FuaCBnacOhIG3hu6ljIMSR4buZIGLhuqV0IGLDrG5oIMSR4bqzbmcgdGh1IG5o4bqtcDogR2nDunAgY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2ggdsOgIG5ow6AgcXXhuqNuIGzDvSBraW5oIHThur8gxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgYuG6pXQgYsOsbmggxJHhurNuZyB0aHUgbmjhuq1wIGdp4buvYSBjw6FjIGTDom4gdOG7mWMuIFjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIG3hu6ljIHRodSBuaOG6rXAgdHJ1bmcgYsOsbmggdGjhuqVwIMSR4buDIGPDsyBuaOG7r25nIGNow61uaCBzw6FjaCBo4buXIHRy4bujIGjhu41jIHBow60gcGjDuSBo4bujcC4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wIDwtIHRtcCAlPiUgZ3JvdXBfYnkoZXRobmljaXR5LCBpbmNvbWUpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkNCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gZXRobmljaXR5LCB5ID0gbikpICsgZ2VvbV9jb2woZGF0YSA9IHRtcCAlPiUgZmlsdGVyKGluY29tZSA9PSAnbG93JyksIGZpbGwgPSAnZGFya2dyZWVuJykgKyBnZW9tX2NvbChkYXRhID0gdG1wICU+JSBmaWx0ZXIoaW5jb21lID09ICdoaWdoJyksIGZpbGwgPSAnYmx1ZScpKyBsYWJzKHggPSAnRMOibiB04buZYycsIHkgPSAnU+G7kSBsxrDhu6NuZycpICsgY29vcmRfZmxpcCgpICsgbGFicyh0aXRsZSA9ICJIw6xuaCAxMjogxJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbeG7qWMgdGh1IG5o4bqtcCB0aGVvIHThu6tuZyBkw6JuIHThu5ljIikNCg0KIyBjw6J1IGzhu4duaCAxOiBOaMOzbSBk4buvIGxp4buHdSB0bXAgdGhlbyBj4bqjIGV0aG5pY2l0eSAoZMOibiB04buZYykgdsOgIGluY29tZSAodGh1IG5o4bqtcCkuIFTDrW5oIHThu5VuZyBz4buRIG5nxrDhu51pIChuKSB0cm9uZyBt4buXaSBuaMOzbSAoZMOibiB04buZYywgdGh1IG5o4bqtcCkuDQoNCiMgY8OidSBs4buHbmggMjogdOG6oW8gYmnhu4N1IMSR4buTIGPhu5l0IHbhu5tpIHRy4bulYyBuZ2FuZyAoeCkgdGjhu4MgaGnhu4duIGV0aG5pY2l0eSAoZMOibiB04buZYyksIFRy4bulYyBk4buNYyAoeSkgdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgKG4pDQoNCiMgU+G7rSBk4bulbmcgaGFpIGzhu5twIGdlb21fY29sIMSR4buDIHBow6JuIGJp4buHdCB0aGVvIG3hu6ljIHRodSBuaOG6rXA6IEzhu5twIHRo4bupIG5o4bqldCBM4buNYyBk4buvIGxp4buHdSBjaOG7iSBnaeG7ryBs4bqhaSBuaMOzbSBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgKGluY29tZSA9PSAnbG93JyksIFTDtCBtw6B1IGPDoWMgY+G7mXQgY2hvIG5ow7NtIHRodSBuaOG6rXAgdGjhuqVwIGLhurFuZyBtw6B1IHhhbmggbMOhIMSR4bqtbS4gdsOgIEzhu5twIHRo4bupIGhhaSBM4buNYyBk4buvIGxp4buHdSBjaOG7iSBnaeG7ryBs4bqhaSBuaMOzbSBjw7MgdGh1IG5o4bqtcCBjYW8gKGluY29tZSA9PSAnaGlnaCcpIHbDoCB0w7QgbcOgdSB4YW5oIGTGsMahbmcgKGJsdWUpLg0KDQojIGNvb3JkX2ZsaXAoKSDEkeG7gyDEkeG6o28gbmfGsOG7o2MgdHLhu6VjLCB24bubaSB0cuG7pWMgbmdhbmcg4bufIGTGsOG7m2kgdsOgIHRy4bulYyBk4buNYyDhu58gdHLDqm4uDQpgYGANCg0KQmnhu4N1IMSR4buTIG7DoHkgc+G6vSBoaeG7g24gdGjhu4sgaGFpIGPhu5l0IGNo4buTbmcgbMOqbiBuaGF1IGNobyBt4buXaSBkw6JuIHThu5ljLCB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aHXhu5ljIGTDom4gdOG7mWMgxJHDsyBjw7MgdGh1IG5o4bqtcCB0aOG6pXAgKHhhbmggxJHhuq1tKSB2w6AgdGh1IG5o4bqtcCBjYW8gKHhhbmggZMawxqFuZykuIEJp4buDdSDEkeG7kyBnacO6cCBzbyBzw6FuaCBz4buxIHBow6JuIGLhu5EgdGh1IG5o4bqtcCBnaeG7r2EgY8OhYyBkw6JuIHThu5ljLiBC4bqhbiBjw7MgdGjhu4MgZOG7hSBkw6BuZyBxdWFuIHPDoXQgeGVtIGPDsyBz4buxIGtow6FjIGJp4buHdCDEkcOhbmcga+G7gyB24buBIHRodSBuaOG6rXAgZ2nhu69hIGPDoWMgZMOibiB04buZYyBoYXkga2jDtG5nLiBWw60gZOG7pSwgbuG6v3UgbeG7mXQgZMOibiB04buZYyBjw7MgY+G7mXQgeGFuaCDEkeG6rW0gY2FvIGjGoW4gbmhp4buBdSBzbyB24bubaSBj4buZdCB4YW5oIGTGsMahbmcsIHRow6wgxJFp4buBdSDEkcOzIGPDsyB0aOG7gyBjaG8gdGjhuqV5IHBo4bqnbiBs4bubbiBuZ8aw4budaSB0aHXhu5ljIGTDom4gdOG7mWMgxJHDsyBjw7MgdGh1IG5o4bqtcCB0aOG6pXAuDQoNCioqS+G6v3QgbHXhuq1uOioqIFZp4buHYyBwaMOibiB0w61jaCDEkeG7kyB0aOG7iyBz4buRIGzGsOG7o25nIG3hu6ljIHRodSBuaOG6rXAgdGhlbyBkw6JuIHThu5ljIGdpw7pwIFjDoWMgxJHhu4tuaCBuaOG7r25nIHLDoG8gY+G6o24gxJHhu5FpIHbhu5tpIHZp4buHYyBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyBj4bunYSBjw6FjIGTDom4gdOG7mWMgdGhp4buDdSBz4buRLiBQaMOhdCB0cmnhu4NuIGPDoWMgY2jGsMahbmcgdHLDrG5oIHbDoCBjaMOtbmggc8OhY2ggaOG7lyB0cuG7oyBwaMOhdCB0cmnhu4NuIGtpbmggdOG6vyBjaG8gY8OhYyBkw6JuIHThu5ljIHRoaeG7g3Ugc+G7kS4NCg0KIyMgQmnhu4N1IMSR4buTIG3huq10IMSR4buZIGRlbnNpdHkgdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIGPhu6dhIMSRaeG7g20gc+G7kSBwaMOibiBjaGlhIHRoZW8gZMOibiB04buZYw0KDQpWaeG7h2MgcGjDom4gdMOtY2ggQmnhu4N1IMSR4buTIG3huq10IMSR4buZIGRlbnNpdHkgdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIGPhu6dhIMSRaeG7g20gc+G7kSBwaMOibiBjaGlhIHRoZW8gZMOibiB04buZYyBjw7MgdGjhu4MgbWFuZyBs4bqhaSBuaGnhu4F1IGzhu6NpIMOtY2ggY2hvIGPDoWMgYsOqbiBsacOqbiBxdWFuIHRyb25nIGzEqW5oIHbhu7FjIGdpw6FvIGThu6VjIHbDoCB4w6MgaOG7mWkuIEdpw7pwIGPDoWMgbmjDoCBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIHbDoCBuaMOgIHF14bqjbiBsw70gZ2nDoW8gZOG7pWMgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgYsOsbmggxJHhurNuZyBnacOhbyBk4bulYyBnaeG7r2EgY8OhYyBkw6JuIHThu5ljIG3hu5l0IGPDoWNoIGNoaSB0aeG6v3QgaMahbiBzbyB24bubaSBjaOG7iSBz4butIGThu6VuZyDEkWnhu4NtIHPhu5EgdHJ1bmcgYsOsbmguIFjDoWMgxJHhu4tuaCBuaOG7r25nIGTDom4gdOG7mWMgY8OzIHPhu7EgcGjDom4gYuG7kSDEkWnhu4NtIHPhu5EgbOG7h2NoIHbhu4EgcGjDrWEgdGjhuqVwIGhv4bq3YyBjYW8gxJHhu4MgY8OzIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCBwaMO5IGjhu6NwLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhDQp0bXAgJT4lIGdncGxvdChhZXMoeCA9IHNjb3JlKSkgKyBnZW9tX2RlbnNpdHkoZmlsbCA9ICdibHVlJykgKyAgZmFjZXRfd3JhcCh+ZXRobmljaXR5KSArIGxhYnMoeD0gIsSQaeG7g20iKSsgbGFicyh0aXRsZSA9ICJIw6xuaCAxMzogQmnhu4N1IMSR4buTIG3huq10IMSR4buZIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGTDom4gdOG7mWMiKQ0KDQojIHThuqFvIGJp4buDdSDEkeG7kyB24bubaSB0cuG7pWMgaG/DoG5oICh4KSBiaeG7g3UgdGjhu4sgxJFp4buDbSBz4buRLg0KDQojIGdlb21fZGVuc2l0eTogVGjDqm0gaMOsbmggZOG6oW5nIGJp4buDdSDEkeG7kyBsw6AgbeG6rXQgxJHhu5kgKGRlbnNpdHkpLiB2w6AgVMO0IG3DoHUgYsOqbiB0cm9uZyBiaeG7g3UgxJHhu5MgbeG6rXQgxJHhu5kgYuG6sW5nIG3DoHUgeGFuaA0KDQojIGZhY2V0X3dyYXA6IENoaWEgYmnhu4N1IMSR4buTIHRow6BuaCBjw6FjIGJp4buDdSDEkeG7kyBjb24gdGhlbyBkw6JuIHThu5ljLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBoaeG7g24gdGjhu4sgaGFpIGJp4buDdSDEkeG7kyBjb24sIG3hu5l0IGNobyBt4buXaSBkw6JuIHThu5ljLiBN4buXaSBiaeG7g3UgxJHhu5MgY29uIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSDEkWnhu4NtIHPhu5EgY+G7p2EgZMOibiB04buZYyB0xrDGoW5nIOG7qW5nIGTGsOG7m2kgZOG6oW5nIMSRxrDhu51uZyBjb25nIG3huq10IMSR4buZLiBIw6xuaCBk4bqhbmcgY+G7p2EgxJHGsOG7nW5nIGNvbmcgbeG6rXQgxJHhu5kgY2hvIGJp4bq/dCBz4buxIHThuq1wIHRydW5nIGPhu6dhIMSRaeG7g20gc+G7kSB0cm9uZyB04burbmcgbmjDs20uDQoNCioqS+G6v3QgbHXhuq1uOioqIHZp4buHYyBwaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgbeG6rXQgxJHhu5kgxJFp4buDbSBz4buRIGPDsyBuaOG7r25nIMawdSDEkWnhu4NtIHNhdTogQ3VuZyBj4bqlcCB0aMO0bmcgdGluIGNoaSB0aeG6v3QgaMahbiB24buBIHPhu7EgcGjDom4gYuG7kSDEkWnhu4NtIHPhu5EgY+G7p2EgY8OhYyBkw6JuIHThu5ljLiBHacO6cCB4w6FjIMSR4buLbmggbmjhu69uZyBuaMOzbSBo4buNYyBzaW5oIGPDsyBuZ3V5IGPGoSBi4buLIGLhu48gbOG6oWkgcGjDrWEgc2F1LiBHacO6cCDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBo4buNYyBzaW5oIG3hu5l0IGPDoWNoIGNow61uaCB4w6FjIGjGoW4uDQoNCiMjIEJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSBkZW5zaXR5IHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaA0KDQpWaeG7h2MgcGjDom4gdMOtY2ggQmnhu4N1IMSR4buTIG3huq10IMSR4buZIGRlbnNpdHkgdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIGPhu6dhIMSRaeG7g20gc+G7kSBwaMOibiBjaGlhIHRoZW8gZ2nhu5tpIHTDrW5oIGPDsyB0aOG7gyBtYW5nIGzhuqFpIG5oaeG7gXUgbOG7o2kgw61jaCBjaG8gY8OhYyBiw6puIGxpw6puIHF1YW4gdHJvbmcgbMSpbmggduG7sWMgZ2nDoW8gZOG7pWMgdsOgIHjDoyBo4buZaS4gR2nDunAgbmjDoCB0csaw4budbmcgxJHDoW5oIGdpw6EgbeG7qWMgxJHhu5kgYsOsbmggxJHhurNuZyBnaeG7m2kgdHJvbmcgZ2nDoW8gZOG7pWMgbeG7mXQgY8OhY2ggY2hpIHRp4bq/dCB04burIMSRw7MgeMOhYyDEkeG7i25oIG5o4buvbmcgbmjDs20gaOG7jWMgc2luaCBuYW0gaG/hurdjIG7hu68gY8OzIMSRaeG7g20gc+G7kSB0aOG6pXAgaMahbiDEkeG7gyBjw7MgYmnhu4duIHBow6FwIGNhbiB0aGnhu4dwIHBow7kgaOG7o3AuDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gc2NvcmUpKSArIGdlb21fZGVuc2l0eShmaWxsID0gJ2dyZWVuJykgKyBmYWNldF93cmFwKH5nZW5kZXIpICsgbGFicyh4ID0gIsSQaeG7g20iKSsgbGFicyh0aXRsZSA9ICJIw6xuaCAxNDogQmnhu4N1IMSR4buTIG3huq10IMSR4buZIHRo4buDIGhp4buHbiBz4buxIHBow6JuIHBo4buRaSBj4bunYSDEkWnhu4NtIHPhu5EgcGjDom4gY2hpYSB0aGVvIGdp4bubaSB0w61uaCIpDQoNCiMgdOG6oW8gYmnhu4N1IMSR4buTIHbhu5tpIHRy4bulYyBob8OgbmggKHgpIGJp4buDdSB0aOG7iyDEkWnhu4NtIHPhu5EuDQoNCiMgZ2VvbV9kZW5zaXR5OiBUaMOqbSBow6xuaCBk4bqhbmcgYmnhu4N1IMSR4buTIGzDoCBt4bqtdCDEkeG7mSAoZGVuc2l0eSkuIHbDoCBUw7QgbcOgdSBiw6puIHRyb25nIGJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSBi4bqxbmcgbcOgdSB4YW5oIGzDoQ0KDQojIGZhY2V0X3dyYXA6IENoaWEgYmnhu4N1IMSR4buTIHRow6BuaCBjw6FjIGJp4buDdSDEkeG7kyBjb24gdGhlbyBnaeG7m2kgdMOtbmguDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBoYWkgYmnhu4N1IMSR4buTIGNvbiwgbeG7mXQgY2hvIG5hbSB2w6AgbeG7mXQgY2hvIG7hu68uIE3hu5dpIGJp4buDdSDEkeG7kyBjb24gdGjhu4MgaGnhu4duIHPhu7EgcGjDom4gcGjhu5FpIMSRaeG7g20gc+G7kSBj4bunYSBnaeG7m2kgdMOtbmggdMawxqFuZyDhu6luZyBkxrDhu5tpIGThuqFuZyDEkcaw4budbmcgY29uZyBt4bqtdCDEkeG7mS4NCg0KKipL4bq/dCBsdeG6rW46Kiogdmnhu4djIHBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyBt4bqtdCDEkeG7mSDEkWnhu4NtIHPhu5EgY8OzIG5o4buvbmcgxrB1IMSRaeG7g20gc2F1OiBDdW5nIGPhuqVwIHRow7RuZyB0aW4gY2hpIHRp4bq/dCBoxqFuIHbhu4Egc+G7sSBwaMOibiBi4buRIMSRaeG7g20gc+G7kSBj4bunYSBuYW0gdsOgIG7hu68uIFjDoWMgxJHhu4tuaCBuaOG7r25nIHLDoG8gY+G6o24gxJHhu5FpIHbhu5tpIHZp4buHYyBo4buNYyB04bqtcCBj4bunYSBo4buNYyBzaW5oIG5hbSBob+G6t2MgbuG7ry4gxJDGsGEgcmEgbmjhu69uZyBiaeG7h24gcGjDoXAgcGjDuSBo4bujcCwgY8OhYyBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBo4buNYyBzaW5oIG3hu5l0IGPDoWNoIGNow61uaCB4w6FjIGjGoW4uDQoNCiMjIEJp4buDdSDEkeG7kyB0csOybiAocGlhIGNoYXJ0KSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBzaW5oIHZpw6puIHRoZW8gZ2nhu5tpIHTDrW5oIGPhu6dhIGTDom4gdOG7mWMgaGlzcGFuaWMNCg0KUGjDom4gdMOtY2ggYmnhu4N1IMSR4buTIHRyw7JuIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nIHNpbmggdmnDqm4gdGhlbyBnaeG7m2kgdMOtbmggY+G7p2EgZMOibiB04buZYyBIaXNwYW5pYyBnacO6cCB0YSBoaeG7g3UgcsO1IGjGoW4gduG7gSB04bu3IGzhu4cgc2luaCB2acOqbiBuYW0gdsOgIG7hu68gdGh14buZYyBkw6JuIHThu5ljIGhpc3BhbmljICggbmfGsOG7nWkgZ+G7kWMgVMOieSBCYW4gTmhhKS4gTmjhu50gxJHDsywgdGEgY8OzIHRo4buDIHNvIHPDoW5oIG5oYW5oIGNow7NuZyBz4buxIGNow6puaCBs4buHY2ggZ2nhu5tpIHTDrW5oIHRyb25nIG5ow7NtIG7DoHkuDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCA8LSB0bXAgJT4lIGZpbHRlcihldGhuaWNpdHk9PSJoaXNwYW5pYyIpDQp0bXAgJT4lIGdyb3VwX2J5KGV0aG5pY2l0eSxnZW5kZXIpICU+JSBzdW1tYXJpc2UobiA9IG4oKSkgJT4lIGdncGxvdChhZXMoeCA9ICcnLCB5ID0gbixmaWxsID0gZ2VuZGVyKSkrIGdlb21fY29sKGdlbmRlciA9ICdibGFjaycpICsgIGNvb3JkX3BvbGFyKCd5JykrICB0aGVtZV92b2lkKCkgKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE1OiBCaeG7g3UgxJHhu5MgdHLDsm4gdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgc2luaCB2acOqbiB0aGVvIGTDom4gdOG7mWMgaGlzcGFuaWMiKQ0KDQojICBuaMOzbSBk4buvIGxp4buHdSB0aGVvIGV0aG5pY2l0eSAoZ2nhu68gImhpc3BhbmljIikgdsOgIGdlbmRlciB2w6AgdMOtbmggdOG7lW5nIHPhu5EgbMaw4bujbmcgDQoNCiMgdOG6oW8gYmnhu4N1IMSR4buTIHRyw7JuIHbhu5tpIFRy4bulYyBob8OgbmggeCDEkcaw4bujYyDEkeG6t3QgdHLhu5FuZyAoJycpLiBUcuG7pWMgdHVuZyB5IHRo4buDIGhp4buHbiB0aGVvIGJp4bq/biBuIChz4buRIGzGsOG7o25nKSwgZmlsbCA9IGdlbmRlcjogVMO0IG3DoHUgY8OhYyB2w7luZyB0aGVvIGJp4bq/biBnZW5kZXINCmBgYA0KDQpCaeG7g3UgxJHhu5MgdGh1IMSRxrDhu6NjIHPhur0gbMOgIG3hu5l0IGjDrG5oIHRyw7JuIMSRxrDhu6NjIGNoaWEgdGjDoG5oIGPDoWMgcGjhuqduIChtaeG6v25nKSB0aGVvIHThu4kgbOG7hy4gTeG7l2kgcGjhuqduIHTDtCBt4buZdCBtw6B1IMSR4bqhaSBkaeG7h24gY2hvIGdp4bubaSB0w61uaCAobmFtL27hu68pIGPhu6dhIG5nxrDhu51pIGfhu5FjIFTDonkgQmFuIE5oYS4gRGnhu4duIHTDrWNoIG3hu5dpIHBo4bqnbiBow6xuaCBjdW5nIHRyw7JuIHPhur0gdMawxqFuZyDhu6luZyB24bubaSBz4buRIGzGsOG7o25nIG5nxrDhu51pIHRodeG7mWMgZ2nhu5tpIHTDrW5oIMSRw7MgdHJvbmcgbmjDs20gZMOibiB04buZYyBuZ8aw4budaSBn4buRYyBUw6J5IEJhbiBOaGEuDQoNCioqS+G6v3QgbHXhuq1uOioqIFBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyB0csOybiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gaOG7r3Ugw61jaCBjaG8gY8OhYyBuaMOgIGhv4bqhY2ggxJHhu4tuaCBjaMOtbmggc8OhY2gsIG5ow6AgZ2nDoW8gZOG7pWMgdsOgIGPDoWMgdOG7lSBjaOG7qWMgaOG7lyB0cuG7oyBzaW5oIHZpw6puLiBWw60gZOG7pTogbuG6v3UgYmnhu4N1IMSR4buTIGNobyB0aOG6pXkgdOG7tyBs4buHIHNpbmggdmnDqm4gbuG7ryB0aHXhu5ljIGTDom4gdOG7mWMgSGlzcGFuaWMgdGhlbyBo4buNYyDEkeG6oWkgaOG7jWMgdGjhuqVwLCBjw6FjIG5ow6AgaG/huqFjaCDEkeG7i25oIGPDsyB0aOG7gyBwaMOhdCB0cmnhu4NuIGNoxrDGoW5nIHRyw6xuaCBraHV54bq/biBraMOtY2ggdsOgIGjhu5cgdHLhu6MgbuG7ryBzaW5oIHRoZW8gaOG7jWMuDQoNCiMjIEJp4buDdSDEkeG7kyB0csOybiAocGllIGNoYXJ0KSB0aOG7gyBoaeG7h24gbeG7qWMgdGh1IG5o4bqtcCBj4bunYSBnaWEgxJHDrG5oIHNpbmggdmnDqm4NCg0KUGjDom4gdMOtY2ggYmnhu4N1IMSR4buTIHRyw7JuIHRo4buDIGhp4buHbiBt4bupYyB0aHUgbmjhuq1wIGPhu6dhIGdpYSDEkcOsbmggc2luaCB2acOqbiBjw7MgdGjhu4MgaGnhu4N1IHLDtSBoxqFuIHbhu4EgdMOsbmggdHLhuqFuZyBraW5oIHThur8gZ2lhIMSRw6xuaCBj4bunYSBzaW5oIHZpw6puIHbDoCB4w6FjIMSR4buLbmggY8OhYyBuaMOzbSBzaW5oIHZpw6puIGPhuqduIGjhu5cgdHLhu6MgdMOgaSBjaMOtbmggdHJvbmcgduG6pW4gxJHhu4EgaOG7jWMgcGjDrSwgbmjDoCDhu58sLi4uDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ3JvdXBfYnkoaW5jb21lKSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSBnZ3Bsb3QoYWVzKHggPSAnJywgeSA9IG4sZmlsbCA9IGluY29tZSkpICsNCiAgICBnZW9tX2NvbCgpICsgZ2VvbV90ZXh0KGFlcyh4ID0gMS4zLCBsYWJlbCA9IG4pLHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSArIA0KICAgIGNvb3JkX3BvbGFyKCd5JykgKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE2OiBCaeG7g3UgxJHhu5MgdHLDsm4gdGjhu4MgaGnhu4duIG3hu6ljIHRodSBuaOG6rXAiKQ0KDQojIE5ow7NtIGThu68gbGnhu4d1IHRyb25nIHRtcCB0aGVvIHRodSBuaOG6rXAgKGluY29tZSkuIHN1bW1hcmlzZShuID0gbigpKTogVMOtbmggdOG7lW5nIHPhu5EgbmfGsOG7nWkgKG4pIHRyb25nIG3hu5dpIG5ow7NtIHRodSBuaOG6rXAuDQoNCiMgdOG6oW8gYmnhu4N1IMSR4buTIHbhu5tpIHRy4bulYyB0dW5nICh5KSBsw6Agc+G7kSBsxrDhu6NuZyBuZ8aw4budaSAobiksIFRy4bulYyBob8OgbmggKHgpIMSRxrDhu6NjIMSR4buDIHRy4buRbmcgKCcnKSB2w6AgVMO0IG3DoHUgY+G7mXQgdGhlbyB0aHUgbmjhuq1wIChpbmNvbWUpLg0KDQojIFRow6ptIGNow7ogdGjDrWNoIHbEg24gYuG6o24gKGdlb21fdGV4dCkgaGnhu4NuIHRo4buLIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgKG4pIHRyw6puIG3hu5dpIGPhu5l0Lg0KIyBhZXMoeCA9IDEuMywgbGFiZWwgPSBuKTogVGhp4bq/dCBs4bqtcCB24buLIHRyw60gbmdhbmcgY+G7p2EgbmjDo24gY8OhY2ggdHLhu6VjIGhvw6BuaCAxLjMgxJHGoW4gduG7iyB2w6AgbuG7mWkgZHVuZyBsw6AgZ2nDoSB0cuG7iyBuLg0KIyBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KTogQ2FuaCBjaOG7iW5oIHbhu4sgdHLDrSBk4buNYyBj4bunYSBuaMOjbiDEkeG7gyBu4bqxbSBjaMOtbmggZ2nhu69hIMSR4bqndSBj4buZdA0KIyBjb29yZF9wb2xhcigneScpOiBDaHV54buDbiDEkeG7lWkgaOG7hyB0cuG7pWMgc2FuZyBo4buHIHThu41hIMSR4buZIGPhu7FjLCB24bubaSB0cuG7pWMgeSBnaeG7ryBuZ3V5w6puIHRo4buDIGhp4buHbiBz4buRIGzGsOG7o25nLlRy4bulYyBob8Ogbmggc+G6vSDEkcaw4bujYyBjdeG7mW4gdHLDsm4gdGjDoG5oIGjDrG5oIHRyw7JuLCBjw6FjIGPhu5l0IMSRxrDhu6NjIHPhuq9wIHjhur9wIHRoZW8gZ8OzYyBk4buxYSB0csOqbiBiaeG6v24gaW5jb21lDQpgYGANCg0KQmnhu4N1IHRodSDEkcaw4bujYyBz4bq9IGdp4buRbmcgbmjGsCByYWRhciBjaGFydCwgduG7m2kgbcOgdSBz4bqvYyB0aOG7gyBoaeG7h24gdGhlbyB0aHUgbmjhuq1wLiBN4buXaSBt4bupYyB0aHUgbmjhuq1wIMSRxrDhu6NjIGJp4buDdSB0aOG7iyBi4bqxbmcgbeG7mXQgaMOsbmggY+G7mXQsIMSRxrDhu6NjIHTDtCBtw6B1IHRoZW8gbmjDs20gdGh1IG5o4bqtcC4gVHLDqm4gbeG7l2kgY+G7mXQgY8OzIGNow7ogdGjDrWNoIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIG5nxrDhu51pIHRodeG7mWMgbmjDs20gdGh1IG5o4bqtcCDEkcOzLg0KDQoqKkvhur90IGx14bqtbjoqKiBQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgdHLDsm4gY3VuZyBj4bqlcCB0aMO0bmcgdGluIGjhu691IMOtY2ggY2hvIHZp4buHYyB4w6J5IGThu7FuZyBjw6FjIGNow61uaCBzw6FjaCBo4buXIHRy4bujIHNpbmggdmnDqm4gaGnhu4d1IHF14bqjLiBWw60gZOG7pTogbuG6v3UgdOG7tyBs4buHIHNpbmggdmnDqm4gY8OzIHRodSBuaOG6rXAgdGjhuqVwIGNhbyB0cm9uZyB04buVbmcgc+G7kSBzaW5oIHZpw6puIHRoZW8gaOG7jWMgxJHhuqFpIGjhu41jLCB0aMOsIG5ow6AgY8OzIHRo4buDIHhlbSB4w6l0IHTEg25nIGPGsOG7nW5nIGjhu5cgdHLhu6MgdMOgaSBjaMOtbmgsIGhv4bq3YyBjw6FjIGNow61uaCBzw6FuaCBo4buXIHRy4bujIHbhu4EgaOG7jWMgcGjDrSBjaG8gY8OhYyBzaW5oIHZpw6puIGPDsyBob8OgbiBj4bqjbmgga2jDsyBraMSDbiB2w6AgaGnhur91IGjhu41jIMSRw7MuDQoNCiMjIEJp4buDdSDEkeG7kyB0csOybiAocGllIGNoYXJ0KSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aGVvIGTDom4gdOG7mWMgKGV0aG5pY2l0eSkNCg0KVmnhu4djIHBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyB0csOybiAocGllIGNoYXJ0KSB0aOG7gyBoaeG7h24gc+G7kSBsxrDhu6NuZyBuZ8aw4budaSB0aGVvIGTDom4gdOG7mWMgKGV0aG5pY2l0eSkgxJHhu4M6IEhp4buDdSByw7UgaMahbiB24buBIHRow6BuaCBwaOG6p24gc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBraMOhYyBuaGF1LiBTbyBzw6FuaCB04bu3IGzhu4cgc2luaCB2acOqbiB0aGVvIGTDom4gdOG7mWMgZ2nhu69hIGPDoWMga2h1IHbhu7FjIGtow6FjIG5oYXUuIFRoZW8gZMO1aSBz4buxIHRoYXkgxJHhu5VpIGPhu6dhIHRow6BuaCBwaOG6p24gZMOibiB04buZYyB0aGVvIHRo4budaSBnaWFuIHbDoCBo4buXIHRy4bujIHZp4buHYyBuaMOgIHRyxrDhu51uZyByYSBxdXnhur90IMSR4buLbmggY8OhYyBjaMOtbmggc8OhY2guDQoNCmBgYHtyfQ0KdG1wIDwtIGRhdGENCnRtcCAlPiUgZ3JvdXBfYnkoZXRobmljaXR5KSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSBnZ3Bsb3QoYWVzKHggPSAnJywgeSA9IG4sZmlsbCA9IGV0aG5pY2l0eSkpICsgZ2VvbV9jb2woZXRobmljaXR5ID0gJ2JsYWNrJykgKyAgY29vcmRfcG9sYXIoJ3knKSArDQogIGdlb21fdGV4dChhZXMoeCA9IDEuMywgbGFiZWwgPSBuKSxwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSkgKyB0aGVtZV92b2lkKCkgKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE3OiBCaeG7g3UgxJHhu5MgdHLDsm4gdGjhu4MgaGnhu4duIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgdGhlbyBkw6JuIHThu5ljIikNCg0KIyB0w61uaCB04buVbmcgc+G7kSBuZ8aw4budaSAobikgdHJvbmcgbeG7l2kgbmjDs20gZMOibiB04buZYyAoZXRobmljaXR5KS4NCg0KIyB04bqhbyBiaeG7g3UgxJHhu5MgduG7m2kgVHLhu6VjIHR1bmcgKHkpIGzDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIChuKSwgdHLhu6VjIGhvw6BuaCAoeCkgdHLhu5FuZyAoJycpIG5oxrBuZyB4w6FjIMSR4buLbmggduG7iyB0csOtIGPhu5l0IHRoZW8gZ8OzYyB2w6AgVMO0IG3DoHUgY+G7mXQgdGhlbyBkw6JuIHThu5ljIChldGhuaWNpdHkpLCB0aMOqbSBuaMOjbiBoaeG7g24gdGjhu4sgc+G7kSBsxrDhu6NuZyBuZ8aw4budaSAobikgdHLDqm4gxJHhuqd1IG3hu5dpIGPhu5l0Lg0KDQojIGNvb3JkX3BvbGFyKCd5Jyk6IENodXnhu4NuIMSR4buVaSBo4buHIHThu41hIMSR4buZIHRow6BuaCBj4buxYywgdHLhu6VjIHkgZ2nhu68gbmd1ecOqbiwgdHLhu6VjIGhvw6BuaCBjdeG7mW4gdHLDsm4gdGjDoG5oIGjDrG5oIHRyw7JuLg0KDQojIHRoZW1lX3ZvaWQoKSDEkeG7gyBsb+G6oWkgYuG7jyBjw6FjIHRow6BuaCBwaOG6p24gbeG6t2MgxJHhu4tuaCBj4bunYSBiaeG7g3UgxJHhu5MgbmjGsCBraHVuZyBu4buBbiwgdHLhu6VjIGzGsOG7m2ksIGNow7ogdGjDrWNoIHRy4bulYywgdi52LiBDaOG7iSBnaeG7ryBs4bqhaSBjw6FjIHRow6BuaCBwaOG6p24gY+G6p24gdGhp4bq/dDogY8OhYyBj4buZdCwgbmjDo24gdsOgIG7hu4FuIHRyw7JuLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBsw6AgbeG7mXQgaMOsbmggdHLDsm4gxJHGsOG7o2MgY2hpYSB0aMOgbmggY8OhYyBwaOG6p24gKG1p4bq/bmcpIHRoZW8gdOG7iSBs4buHLiBN4buXaSBwaOG6p24gdMO0IG3hu5l0IG3DoHUgxJHhuqFpIGRp4buHbiBjaG8gbeG7mXQgZMOibiB04buZYyAoZOG7sWEgdHLDqm4gYmnhur9uIGV0aG5pY2l0eSkgdsOgIGRp4buHbiB0w61jaCB0xrDGoW5nIOG7qW5nIHbhu5tpIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgdGh14buZYyBkw6JuIHThu5ljIMSRw7MuIE5ow6NuIGhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIG5nxrDhu51pIGLDqm4gdHJvbmcgbeG7l2kgcGjhuqduLg0KDQoqKkvhur90IGx14bqtbjoqKiBQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgdHLDsm4gY3VuZyBj4bqlcCB0aMO0bmcgdGluIGjhu691IMOtY2ggY2hvIHZp4buHYyB4w6J5IGThu7FuZyBjw6FjIGNow61uaCBzw6FjaCBwaMO5IGjhu6NwIHbhu5tpIMSR4bq3YyDEkWnhu4NtIGTDom4gdOG7mWMgY+G7p2Ega2h1IHbhu7FjLiBWw60gZOG7pTogbuG6v3UgYmnhu4N1IMSR4buTIGNobyB0aOG6pXkgdOG7tyBs4buHIG5nxrDhu51pIGTDom4gdOG7mWMgdGhp4buDdSBz4buRIGNhbyB0cm9uZyBt4buZdCBraHUgduG7sWMsIG5ow6AgaG/huqFjaCDEkeG7i25oIGPDsyB0aOG7gyB4ZW0geMOpdCB4w6J5IGThu7FuZyBjw6FjIGNoxrDGoW5nIHRyw6xuaCBnacOhbyBk4bulYyB2w6AgaOG7lyB0cuG7oyBkw6BuaCBjaG8gbmjDs20gZMOibiB04buZYyBuw6B5Lg0KDQojIyBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlcikgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyAod2FnZSkgdsOgIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgKHVuZW1wKQ0KDQpQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgcGjDom4gdMOhbiB0aOG7gyBoaeG7h24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIMSR4buDIHjDoWMgxJHhu4tuaCBt4buRaSB0xrDGoW5nIHF1YW4gZ2nhu69hIG3hu6ljIGzGsMahbmcgdsOgIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3Ag4bufIHNpbmggdmnDqm4sIHThu6sgxJHDsyDEkcOhbmggZ2nDoSDEkcaw4bujYyB0w6xuaCBow6xuaCB0w6BpIGNow61uaCBj4bunYSBzaW5oIHZpw6puIHbDoCDEkcawYSByYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCDEkcOgbyB04bqhbyB0cm9uZyB2aeG7h2MgdHJhbmcgYuG7iyBow6BuaCB0cmFuZyBjaG8gc2luaCB2acOqbiByYSB0csaw4budbmcga2nhur9tIHZp4buHYyBsw6BtIGPFqW5nIG5oxrAgY2jDrW5oIHPDoWNoIGjhu5cgdHLhu6MgcGjDuSBo4bujcC4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KIHRtcCAlPiUgZ2dwbG90KGFlcyh4ID0gd2FnZSwgeSA9IHVuZW1wLCBjb2xvciA9IGV0aG5pY2l0eSkpICsNCiAgZ2VvbV9wb2ludCgpICsgbGFicyh0aXRsZSA9IkjDrG5oIDE4OiBCaeG7g3UgxJHhu5MgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCIpDQogDQojIFThuqFvIHQgYmnhu4N1IMSR4buTIHBow6JuIHTDoW4gduG7m2k6IHRy4bulYyBob8OgbmggeCB0aOG7gyBoaeG7h24gbeG7qWMgbMawxqFuZywgdHLhu6VjIHR1bmcgeSB0aOG7gyBoaeG7h24gdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB1bmVtcCB2w6AgVMO0IG3DoHUgY2hvIGPDoWMgxJFp4buDbSB0aGVvIGJp4bq/biBldGhuaWNpdHkuDQogDQojZ2VvbV9wb2ludCgpOiBUaMOqbSBjw6FjIMSRaeG7g20gdsOgbyBiaeG7g3UgxJHhu5MuDQpgYGANCg0KQmnhu4N1IMSR4buTIHRodSDEkcaw4bujYyBz4bq9IGhp4buDbiB0aOG7iyBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgduG7m2kgduG7iyB0csOtIGPhu6dhIG3hu5dpIMSRaeG7g20gdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBt4buZdCBjw6EgbmjDom4uIE3DoHUgc+G6r2MgY+G7p2EgbeG7l2kgxJFp4buDbSBz4bq9IMSR4bqhaSBkaeG7h24gY2hvIGTDom4gdOG7mWMgY+G7p2EgbmfGsOG7nWkgxJHDsy4NCg0KTuG6v3UgY8OzIG5oaeG7gXUgxJFp4buDbSBjw7luZyBtw6B1IHThuq1wIHRydW5nIOG7nyBt4buZdCBraHUgduG7sWMsIMSRaeG7gXUgxJHDsyBjw7MgdGjhu4MgY2hvIHRo4bqleSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBkw6JuIHThu5ljLCBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLiBLw61jaCB0aMaw4bubYyBj4bunYSBjw6FjIMSRaeG7g20gY8OzIHRo4buDIMSRxrDhu6NjIMSRaeG7gXUgY2jhu4luaCDEkeG7gyB0aOG7gyBoaeG7h24gdGjDqm0gdGjDtG5nIHRpbiwgdsOtIGThu6UgbmjGsCBz4buRIGzGsOG7o25nIG5nxrDhu51pIHRyb25nIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMuIA0KDQoqKkvhur90IGx14bqtbjoqKiB2aeG7h2MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIOG7nyBzaW5oIHZpw6puIGdpw7pwIG5ow6AgdHLGsOG7nW5nIHRyb25nIHZp4buHYyDEkcOhbmggZ2nDoSDEkcaw4bujYyBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgbmjGsCBuZ8OgbmggaOG7jWMsIHRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiwga+G7uSBuxINuZywga2luaCBuZ2hp4buHbSBsw6BtIHZp4buHYyDEkeG7kWkgduG7m2kga2jhuqMgbsSDbmcgdMOsbSBraeG6v20gdmnhu4djIGzDoG0gdsOgIG3hu6ljIGzGsMahbmcgY+G7p2Egc2luaCB2acOqbi4gVOG7qyDEkcOzLCDEkcawYSByYSBjw6FjIGNoxrDGoW5nIHRyw6xuaCDEkcOgbyB04bqhbyB0cm9uZyB2aeG7h2MgdHJhbmcgYuG7iyBjaG8gc2luaCB2acOqbiBjw6FjIGtp4bq/biB0aOG7qWMsIGvhu7kgbsSDbmcgY+G6p24gdGhp4bq/dCDEkeG7gyDEkcOhcCDhu6luZyBuaHUgY+G6p3UgY+G7p2EgdGjhu4sgdHLGsOG7nW5nIGxhbyDEkeG7mW5nLg0KDQojIyBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlcikgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBt4buZdCBjw6EgbmjDom4NCg0KTeG7pWMgxJHDrWNoIGPhu6dhIHZp4buHYyBwaMOibiB0w61jaCBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlcikgdGjhu4MgaGnhu4duIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCBj4bunYSBt4buZdCBjw6EgbmjDom4gY8OzIGvDqG0gxJHGsOG7nW5nIHh1IHRo4bq/IOG7nyBzaW5oIHZpw6puIMSR4buDIGhp4buDdSByw7UgaMahbiB24buBIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCDhu58gc2luaCB2acOqbiB2w6AgxJHGsOG7nW5nIHh1IHRo4bq/IGdpw7pwIGThu7EgxJFvw6FuIG3hu6ljIGzGsMahbmcgY+G7p2Egc2luaCB2acOqbiBk4buxYSB0csOqbiB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLg0KDQpgYGB7cn0NCnRtcCA8LSBkYXRhDQogdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSB3YWdlLCB5ID0gdW5lbXApKSArDQogIGdlb21fcG9pbnQoY29sb3IgPSAncmVkJykgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAnbG0nLCBjb2xvciA9ICdncmVlbicpKyBmYWNldF93cmFwKH5ldGhuaWNpdHkpKyBsYWJzKHRpdGxlID0gIkjDrG5oIDE5OiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiB0aOG7gyBoaeG7h24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIikNCiANCiAjIFThuqFvIGJp4buDdSDEkeG7kyBwaMOibiB0w6FuIHbhu5tpIFRy4bulYyBob8OgbmggeCB0aOG7gyBoaeG7h24gbeG7qWMgbMawxqFuZyB3YWdlLCBUcuG7pWMgdHVuZyB5IHRo4buDIGhp4buHbiB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHVuZW1wIHbDoCBUaMOqbSBjw6FjIMSRaeG7g20gdsOgbyBiaeG7g3UgxJHhu5MgduG7m2kgbcOgdSDEkeG7jy4NCiAjIFRow6ptIMSRxrDhu51uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBjaG8gbeG7l2kgbmjDs20gZOG7ryBsaeG7h3UgduG7m2kgbcOgdSB4YW5oIGzDoSBjw6J5Lg0KIA0KICMgQ2hpYSBiaeG7g3UgxJHhu5MgdGjDoG5oIGPDoWMgYmnhu4N1IMSR4buTIGNvbiByacOqbmcgYmnhu4d0IGNobyBt4buXaSBuaMOzbSBkw6JuIHThu5ljIChldGhuaWNpdHkpLg0KYGBgDQoNCkJp4buDdSDEkeG7kyB0aHUgxJHGsOG7o2Mgc+G6vSBoaeG7g24gdGjhu4sgY8OhYyDEkWnhu4NtIGThu68gbGnhu4d1IHbhu5tpIHbhu4sgdHLDrSBj4bunYSBt4buXaSDEkWnhu4NtIHRo4buDIGhp4buHbiBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIG3hu6ljIGzGsMahbmcgdsOgIHThu7cgbOG7hyB0aOG6pXQgbmdoaeG7h3AgY+G7p2EgbeG7mXQgY8OhIG5ow6JuLiBCaeG7g3UgxJHhu5MgcGjDom4gdMOhbiAoc2NhdHRlciBwbG90KSB24bubaSBjw6FjIMSRaeG7g20gxJHGsOG7o2MgdMO0IG3DoHUgxJHhu48gdsOgIMSRxrDhu51uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBtw6B1IHhhbmggbMOhIGPDonkgY2hvIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMgKGV0aG5pY2l0eSkgQ8OhYyDEkWnhu4NtIMSRxrDhu6NjIHTDtCBtw6B1IMSR4buPIHbDoCDEkcaw4budbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggbcOgdSB4YW5oIGzDoSBjw6J5IMSRxrDhu6NjIHbhur0gY2hvIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMuDQoNClbDrSBk4bulOg0KDQrEkOG7mSBk4buRYyBj4bunYSDEkcaw4budbmcgaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggY2hvIHRo4bqleSBt4buRaSBxdWFuIGjhu4cgdMawxqFuZyBxdWFuIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIG3hu5dpIG5ow7NtIGTDom4gdOG7mWMuIFZp4buHYyBzbyBzw6FuaCBjw6FjIMSRxrDhu51uZyBo4buTaSBxdXkgdHV54bq/biB0w61uaCBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljIGPDsyB0aOG7gyBnacO6cCB4w6FjIMSR4buLbmggc+G7sSBraMOhYyBiaeG7h3QgduG7gSBt4buRaSBxdWFuIGjhu4cgbsOgeS4gQmnhu4N1IMSR4buTIGPDsyB0aOG7gyDEkcaw4bujYyBi4buVIHN1bmcgdGjDqm0gY2jDuiB0aMOtY2ggxJHhu4MgbMOgbSByw7UgdGjDtG5nIHRpbiB2w6AgZ2nDunAgbmfGsOG7nWkgxJHhu41jIGhp4buDdSByw7UgaMahbiB24buBIGvhur90IHF14bqjLg0KDQoqKkvhur90IGx14bqtbjoqKiBQaMOibiB0w61jaCBiaeG7g3UgxJHhu5MgcGjDom4gdMOhbiBjdW5nIGPhuqVwIHRow7RuZyB0aW4gaOG7r3Ugw61jaCBjaG8gdmnhu4djIHjDonkgZOG7sW5nIGPDoWMgY2jDrW5oIHPDoWNoIG5o4bqxbSBnaeG6o20gdGhp4buDdSB0aOG6pXQgbmdoaeG7h3AgdsOgIHRow7pjIMSR4bqpeSB0xINuZyB0csaw4bufbmcga2luaCB04bq/IHbDoCBnacO6cCDEkcOhbmggZ2nDoSBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBjaMawxqFuZyB0csOsbmggaOG7lyB0cuG7oyBkw6BuaCBjaG8gc2luaCB2acOqbiB0cm9uZyB2aeG7h2MgY+G6o2kgdGhp4buHbiBt4bupYyBsxrDGoW5nIHbDoCBnaeG6o20gdGhp4buDdSB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLg0KDQojIyBCaeG7g3UgxJHhu5MgxJHhu5luZyB0aOG7gyBoaeG7h24gbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB04burbmcgbmjDs20gZMOibiB04buZYy4NCg0KTeG7pWMgxJHDrWNoIGPhu6dhIHZp4buHYyBwaMOibiB0w61jaCBCaeG7g3UgxJHhu5MgxJHhu5luZyB0aOG7gyBoaeG7h24gbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB04burbmcgbmjDs20gZMOibiB04buZYyDhu58gc2luaCB2acOqbiBnacO6cCB0YSB0aGVvIGTDtWkgc+G7sSB0aGF5IMSR4buVaSBj4bunYSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIHThu6tuZyBuaMOzbSBkw6JuIHThu5ljIHRoZW8gdGjhu51pIGdpYW4uIE5o4budIMSRw7MsIGPDsyB0aOG7gyDEkcOhbmggZ2nDoSBt4bupYyDEkeG7mSDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgbmjGsCB0aOG7nWkgZ2lhbiwgY2jDrW5oIHPDoWNoLCBiaeG6v24gxJHhu5luZyBraW5oIHThur8gxJHhu5FpIHbhu5tpIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZyBkw6BuaCBjaG8gc2luaCB2acOqbiBz4bqvcCByYSB0csaw4budbmcgdGh14buZYyBjw6FjIG5ow7NtIGTDom4gdOG7mWMga2jDoWMgbmhhdS4NCg0KYGBge3J9DQp0bXAgPC0gZGF0YQ0KdG1wICU+JSBnZ3Bsb3QoYWVzKHggPSB3YWdlLCB5ID0gdW5lbXAsIGNvbG9yID0gZXRobmljaXR5KSkgKw0KICBnZW9tX2xpbmUoKSArDQogZ2VvbV9wb2ludChzaXplPTIpICsNCiAgdHJhbnNpdGlvbl9yZXZlYWwod2FnZSwga2VlcF9sYXN0ID0gRikrIGxhYnModGl0bGUgPSJIw6xuaCAyMDogxJDhu5MgdGjhu4sgxJHhu5luZyB0aOG7gyBoaeG7h24gbeG7kWkgcXVhbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRoZW8gZMOibiB04buZYyIpDQpgYGANCg0KQmnhu4N1IMSR4buTIGdpw7pwIGjDrG5oIGR1bmcgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgbeG7qWMgbMawxqFuZyB2w6AgdOG7tyBs4buHIHRo4bqldCBuZ2hp4buHcCB0cm9uZyB04burbmcgbmjDs20gZMOibiB04buZYy4NCg0KLSAgIMSQxrDhu51uZyBr4bq7OiBO4buRaSBjw6FjIMSRaeG7g20gZOG7ryBsaeG7h3UgdGhlbyB04burbmcgZMOibiB04buZYy4NCg0KLSAgIMSQaeG7g206IEJp4buDdSB0aOG7iyB24buLIHRyw60gZOG7ryBsaeG7h3UgY+G7p2EgbeG7l2kgY8OhIG5ow6JuLCDEkcaw4bujYyB0w7QgbcOgdSB0aGVvIGTDom4gdOG7mWMuDQoNCi0gICDEkOG7mSBk4buRYyBj4bunYSDEkcaw4budbmcga+G6uyBjaG8gdGjhuqV5IG3hu6ljIMSR4buZIHRoYXkgxJHhu5VpIGPhu6dhIG3hu6ljIGzGsMahbmcgdGhlbyB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwLg0KDQotICAgU28gc8OhbmggY8OhYyDEkcaw4budbmcga+G6uyB2w6AgduG7iyB0csOtIMSRaeG7g20gY+G7p2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljIGdpw7pwIG5o4bqtbiBiaeG6v3Qgc+G7sSBraMOhYyBiaeG7h3QgduG7gSBt4buRaSBxdWFuIGjhu4cgbsOgeS4NCg0KKipL4bq/dCBsdeG6rW46Kiogdmnhu4djIHBow6JuIHTDrWNoIGJp4buDdSDEkeG7kyDEkeG7mW5nIHRo4buDIGhp4buHbiBt4buRaSBsacOqbiBo4buHIGdp4buvYSBt4bupYyBsxrDGoW5nIHbDoCB04bu3IGzhu4cgdGjhuqV0IG5naGnhu4dwIHRyb25nIHThu6tuZyBuaMOzbSBkw6JuIHThu5ljIOG7nyBzaW5oIHZpw6puIGzDoCBt4buZdCBjw7RuZyBj4bulIMSR4buDIGhp4buDdSByw7UgaMahbiB2w6AgdGhlbyBkw7VpIHPDoXQgeGFvIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZyBkw6BuaCBjaG8gc2luaCB2acOqbiB0aHXhu5ljIGPDoWMgbmjDs20gZMOibiB04buZYyBraMOhYyBuaGF1LCBzbyBzw6FuaCBt4bupYyDEkeG7mSBi4bqldCBiw6xuaCDEkeG6s25nIHRyb25nIHRo4buLIHRyxrDhu51uZyBsYW8gxJHhu5luZyBnaeG7r2EgY8OhYyBuaMOzbSBkw6JuIHThu5ljLiBU4burIMSRw7MgxJHhu4tuaCByYSBjaMawxqFuZyB0csOsbmggaOG7jWMgdsOgIGfhu6NpIMO9IGPDoWMgaMaw4bubbmcgxJFpbiBjaG8gc2luaCB2acOqbiBz4bqvcCByYSB0csaw4budbmcuDQoNCg==