1 CHƯƠNG 1: PHẦN MỞ ĐẦU

1.1 Lý do chọn đề tài

Trong bối cảnh xã hội hiện đại, mạng xã hội đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của hàng tỷ người trên khắp thế giới. Mạng xã hội không chỉ là nơi để kết nối và chia sẻ thông tin, mà còn là môi trường để người dùng thể hiện cảm xúc, quan điểm và tương tác xã hội. Tuy nhiên, bên cạnh những lợi ích to lớn, việc sử dụng mạng xã hội cũng đặt ra nhiều vấn đề liên quan đến sức khoẻ tinh thần, cụ thể là trạng thái cảm xúc của những người sử dụng mạng xã hội.

Có nhiều nghiên cứu đã chỉ ra rằng việc sử dụng mạng xã hội có thể ảnh hưởng đến trạng thái cảm xúc của người sử dụng. Những ảnh hưởng này có thể tích cực, như cảm giác kết nối và sự hỗ trợ xã hội, nhưng cũng có thể tiêu cực, như cảm giác buồn bã, lo lắng, hoặc tức giận. Đặc biệt, khi tần suất và cách thức sử dụng mạng xã hội ngày càng trở nên đa dạng và phức tạp, việc hiểu rõ hơn về những tác động này trở nên cấp thiết. Việc nghiên cứu trạng thái cảm xúc của người sử dụng mạng xã hội không chỉ giúp chúng ta hiểu rõ hơn về tác động của các yếu tố này mà còn có thể đưa ra các biện pháp hỗ trợ tâm lý hiệu quả, góp phần cải thiện chất lượng cuộc sống của cộng đồng.

1.2 Mục tiêu nghiên cứu

Mục tiêu của nghiên cứu này là phân tích và đánh giá tác động của việc sử dụng mạng xã hội đến sức khoẻ tinh thần của người sử dụng, đặc biệt là trạng thái cảm xúc. Cụ thể, nghiên cứu sẽ điều tra mối quan hệ giữa các yếu tố như tuổi, giới tính, nền tảng truyền thông xã hội được sử dụng, thời gian sử dụng hàng ngày, số lượng bài đăng, số lượt thích nhận được, số lượng bình luận và số lượng tin nhắn được gửi với trạng thái cảm xúc chi phối của người dùng. Nghiên cứu nhằm xác định và hiểu rõ cách mà những yếu tố này tương tác và tác động đến cảm xúc hàng ngày của người dùng, qua đó cung cấp những thông tin quan trọng giúp xây dựng các chiến lược nhằm nâng cao sức khỏe tinh thần của người dùng trong thời đại kỹ thuật số.

1.3 Phương pháp nghiên cứu

Sau khi thu thập dữ liệu, nghiên cứu sẽ tiến hành phân tích thống kê mô tả để hiểu rõ hơn về đặc điểm của mẫu nghiên cứu. Tiếp theo, các mô hình hồi quy sẽ được xây dựng để kiểm tra mối quan hệ giữa các biến. Các mô hình dự báo sẽ được lựa chọn dựa trên các chỉ số đảm bảo tính phù hợp và độ chính xác cao. Kết quả của nghiên cứu sẽ cung cấp những hiểu biết sâu sắc về ảnh hưởng của việc sử dụng mạng xã hội đến trạng thái cảm xúc của người dùng và đề xuất các biện pháp nhằm giảm thiểu tác động tiêu cực, đồng thời khuyến khích sử dụng mạng xã hội một cách tích cực và lành mạnh.

2 CHƯƠNG 2: TỔNG QUAN LÝ THUYẾT NGHIÊN CỨU

2.1 Rủi ro tương đối (Relative Risk/Risk Ratio)

Sự khác biệt giữa hai tỷ lệ \(π_1\)\(π_2\) được đánh giá qua sai số tuyệt đối (\(π_1\)\(π_2\)) chỉ dựa vào khoảng cách giữa hai tỷ lệ này mà bỏ qua độ lớn và ý nghĩa của chúng, nghĩa là khoảng cách như nhau thì đánh giá sai lệch như nhau. Chẳng hạn khi \(π_1\) = 0,01 và \(π_2\) = 0,001 và khi \(π_1\) = 0,410 và \(π_2\) = 0,401 đều được đánh giá là có sai lệch như nhau (cùng mức sai lệch là 0,009). Tuy nhiên nếu chỉ dựa vào khoảng cách này để đánh giá, so sánh hai tương quan giữa hai tỷ lệ thì không đủ, thậm chí sẽ bỏ qua những ý nghĩa quan trọng của sự tương quan của chúng, đặc biệt là khi hai tỷ lệ này cùng gần 0 hoặc cùng gần 1, hoặc cùng gần 0,5.

Ký hiệu \(π_i\) là tỷ lệ “thành công” của biến phụ thuộc (response variable) tương ứng với từng biểu hiện của biến độc lập.

Từ bảng tần xuất, chúng ta tính \(\frac{π_1}{π_2}\), phân số này gọi là Rủi ro tương đối giữa 2 biểu hiện khác nhau của biến phụ thuộc.

  • Rủi ro tương đối là số không âm.

  • Rủi ro tương đối bằng 1 khi và chỉ khi biến đáp ứng độc lập theo nhóm.

  • Các tỷ lệ tổng thể \(π_1\)\(π_2\) nói chung là chưa biết, mà qua điều tra ta nhận được các tỷ lệ mẫu tương ứng là \(f_1\)\(f_2\) Khi đó ta có tỷ lệ:\(\frac{f_1}{f_2}\) gọi là rủi ro tương đối mẫu, ta dùng nó để xấp xỉ cho rủi ro tương đối \(\frac{π_1}{π_2}\) trên tổng thể.

2.2 Tỷ lệ chênh (Odd Ratio)

Nếu gọi xác suất “thành công” của biểu hiện thứ i của biến độc lập là \(π_i\) thì chúng ta kí hiệu Tỷ lệ cược (odd) của biểu hiện này là \(odd_i\) và được định nghĩa như sau:

\[odd_i=\frac{π_i}{1-π_i}\]

Nghĩa là chúng ta tính tỷ lệ thành công theo từng hàng trong bảng ngẫu nhiên.

Tỷ lệ chênh của biểu hiện thứ i và biểu hiện thứ j được kí hiệu là \(\theta_ij\) và được định nghĩa:

\[\theta =\frac{odd_i}{odd_j} = \frac{\frac{π_i}{1-π_i}}{\frac{π_j}{1-π_j}} = \frac{{π_i(1- {π_j})}}{π_j(1- {π_i)}}\]

2.3 Mô hình hồi quy

Mô hình hồi quy được chia làm 2 nhóm:

  • Mô hình hồi quy cổ điển

\[\mu_i= E[y_i] =β_0+β_1x_{1i}+⋯+β_kX_{ki}\]

Để mô hình hồi quy cổ điển phải thỏa mãn 3 điều kiện sau:

  1. Tính tuyến tính của mối liên hệ giữa các yếu tố dự đoán và biến kết quả.

  2. Phân phối chuẩn

  3. Phương sai không đổi của phân phối

  • Mô hình hồi quy tổng quát:

\[\mu_i= g^{-1} (β_0+β_1x_{1i}+⋯+β_kX_{ki})\]

Hoặc

\[g(\mu_i)= β_0+β_1x_{1i}+⋯+β_kX_{ki}\]

Trong mô hình này hàm g(.)được gọi là hàm liên kết (link function) và g(.) phải là hàm đơn điệu.

Trong một mô hình hồi quy tuyến tính tổng quát sẽ có 3 thành phần:

Thành phần hệ thống (systematic component): Là thành tổ hợp tuyến tính của các biến độc lập.

Thành phần ngẫu nhiên (random component): Là phân phối xác suất của biến phụ thuộc (dependent/response variable). Hàm liên kết (link function).

Mô hình Logistic

\[logit(π)=log(π(x)/(1−π(x))) = α + βx\]

Đây được gọi là mô hình logistic hay mô hình logit. Từ mô hình ta có

\[π(x) = 1 / (1+e^{(-α-βx)})\]

Mô hình hồi quy logistic là trường hợp đặc biệt của GLM, thành phần ngẫu nhiên (thành công, thất bại) là nhị phân. Hàm liên kết logit của \(π\) là phép biến đổi \(log(π/(1−π))\), ký hiệu bởi \(logit(π)\). Các mô hình hồi quy logistic thường được gọi là logit. Logit là tham số tự nhiên của phân phối nhị thức.

2.4 Ước lượng hàm hồi quy cho dữ liệu nhị phân

Mô hình logit

\[logit(π)=log(π/(1−π))\]

Mô hình Logit được viết dưới dạng

\[logit(π)=log(π/(1−π))=β_0+β_1X_1+β_2X_2+⋯+β_kX_k\]

Mô hình probit

Hồi quy Probit, đôi khi còn được gọi là mô hình Probit được sử dụng để ước lượng mô hình có biến phụ thuộc dạng nhị phân.

\[probit(π) = Φ^−1(π)\]

Mô hình Probit được viết dưới dạng

\[probit(π(x)) = β_0+β_1X_1+β_2X_2+⋯+β_kX_k\] ## Các tiêu chí đánh giá mô hình

Để đánh giá các mô hình hồi cổ điển chúng ta thường dựa vào hệ số xác định mô hình (\(R_2\)), nhưng đối với mô các mô hình hồi quy tuyến tính tổng quát chúng ta sử dụng các tiêu chí sau:

  • AIC - Akaike Information Criterion

AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML). Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. AIC được tính bằng công thức sau:

\[AIC=−2ln(L)+2k\]

Với L là giá trị cực đại của hàm hợp lý (likelihood function) và k là số tham số của mô hình.

Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số AIC đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh summary)

  • Deviance Deviance cũng là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Một cách tổng quá, cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt.

lưu ý: Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số AIC và Deviance đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh summary).

  • Brier Score Là chỉ tiêu dùng để đánh giá mô hình hồi quy logistic, Brier Score được tính như sau:

\[B=(1/n) ∑(p_i−o_i)\]

Trong đó: \(p_i, o_i\) lần lượt là giá trị xác suất quan sát được, và giá trị xác suất tính ra từ mô hình.

3 CHƯƠNG 3: KẾT QUẢ NGHIÊN CỨU

3.1 Dữ liệu nghiên cứu

Dữ liệu được chọn để nghiên cứu được lấy từ trang web Kaggle.com. Bộ dữ liệu này được nghiên cứu và chuẩn bị bởi Nhà phát minh AI Emirhan BULUT. Thu thập thông tin có giá trị về việc sử dụng mạng xã hội và trạng thái cảm xúc của người dùng dựa trên hoạt động của họ. Dữ liệu gồm 9 biến và 103 quan sát:

Age : Tuổi của người sử dụng.

Gender : Giới tính của người dùng (Nữ, Nam, Non-binary). “Non-binary” nghĩa là phi nhị giới. Non-binary là một thuật ngữ dùng để chỉ những người không xác định giới tính của mình hoàn toàn là nam hoặc nữ.

Platform : Nền tảng truyền thông xã hội được sử dụng (ví dụ: Instagram, Twitter, Facebook, LinkedIn, Snapchat, Whatsapp, Telegram).

Daily_Usage_Time (minutes) : Thời gian hàng ngày dành cho nền các tảng (tính bằng phút).

Posts_Per_Day : Số bài đăng lên các nền tảng mỗi ngày.

Likes_Received_Per_Day : Số lượt thích nhận được mỗi ngày.

Comments_Received_Per_Day : Số lượng bình luận nhận được mỗi ngày.

Messages_Sent_Per_Day : Số lượng tin nhắn được gửi mỗi ngày.

Dominant_Emotion : Trạng thái cảm xúc chi phối của người dùng trong ngày (ví dụ: Vui vẻ, Buồn bã, Tức giận, Lo lắng, Chán nản, Trung tính).

3.2 Xác định biến phụ thuộc

Trong nghiên cứu này, biến phụ thuộc được chọn để phân tích là “Dominant_Emotion” (Trạng thái cảm xúc chi phối). Biến này được lựa chọn vì nó phản ánh trực tiếp tình trạng sức khỏe tinh thần của người sử dụng mạng xã hội. Các trạng thái cảm xúc như hạnh phúc, buồn bã, lo lắng, tức giận, và chán nản đều là các biểu hiện cụ thể của tình trạng tâm lý, cho phép chúng ta đánh giá đa chiều về sức khỏe tinh thần của người dùng.

  • Biến Định lượng: Có 6 biến định lượng gồm: Age, Daily_Usage_Time, Posts_Per_Day, Likes_Received_Per_Day, Comments_Received_Per_Day và Messages_Sent_Per_Day.

  • Biến định tính: Có 3 biến định tính gồm: Gender, Platform và Dominant_Emotion.

  • Dữ liệu nghiên cứu

str(d)
## tibble [103 × 9] (S3: tbl_df/tbl/data.frame)
##  $ Age                       : num [1:103] 27 21 28 27 21 25 25 21 24 33 ...
##  $ Gender                    : chr [1:103] "Female" "Non-binary" "Non-binary" "Male" ...
##  $ Platform                  : chr [1:103] "Snapchat" "Snapchat" "Snapchat" "Telegram" ...
##  $ Daily_Usage_Time (minutes): num [1:103] 120 60 115 105 55 160 160 55 85 45 ...
##  $ Posts_Per_Day             : num [1:103] 4 1 3 3 3 6 6 3 3 1 ...
##  $ Likes_Received_Per_Day    : num [1:103] 40 18 38 48 17 85 85 17 33 10 ...
##  $ Comments_Received_Per_Day : num [1:103] 18 7 18 20 7 26 26 7 20 5 ...
##  $ Messages_Sent_Per_Day     : num [1:103] 22 12 27 28 12 30 30 12 18 12 ...
##  $ Dominant_Emotion          : chr [1:103] "Neutral" "Neutral" "Anxiety" "Anxiety" ...
library(data.table)
data.table(d)
##      Age     Gender Platform Daily_Usage_Time (minutes) Posts_Per_Day
##   1:  27     Female Snapchat                        120             4
##   2:  21 Non-binary Snapchat                         60             1
##   3:  28 Non-binary Snapchat                        115             3
##   4:  27       Male Telegram                        105             3
##   5:  21 Non-binary Facebook                         55             3
##  ---                                                                 
##  99:  22       Male  Twitter                         70             1
## 100:  33       Male LinkedIn                         85             4
## 101:  24 Non-binary Facebook                        110             6
## 102:  24       Male Telegram                         75             3
## 103:  27       Male Facebook                         60             1
##      Likes_Received_Per_Day Comments_Received_Per_Day Messages_Sent_Per_Day
##   1:                     40                        18                    22
##   2:                     18                         7                    12
##   3:                     38                        18                    27
##   4:                     48                        20                    28
##   5:                     17                         7                    12
##  ---                                                                       
##  99:                     20                         5                    22
## 100:                     35                        18                    18
## 101:                     35                        23                    25
## 102:                     37                        16                    22
## 103:                     10                         4                    15
##      Dominant_Emotion
##   1:          Neutral
##   2:          Neutral
##   3:          Anxiety
##   4:          Anxiety
##   5:          Neutral
##  ---                 
##  99:          Neutral
## 100:          Boredom
## 101:          Sadness
## 102:          Neutral
## 103:          Boredom

3.3 Thống kê mô tả

3.3.1 Thống kê mô tả cho từng biến

3.3.1.1 Biến Age

Bảng tần số_ Bảng tần suất

table(d$Age)
## 
## 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 
##  5  4 11  6  6  8 13 13 10  3 10  5  3  3  3
prop.table(table(d$Age)) *100
## 
##        21        22        23        24        25        26        27        28 
##  4.854369  3.883495 10.679612  5.825243  5.825243  7.766990 12.621359 12.621359 
##        29        30        31        32        33        34        35 
##  9.708738  2.912621  9.708738  4.854369  2.912621  2.912621  2.912621

Đồ thị

a <- as.data.frame(table(d$Age)) 
colnames(a) <- c("Tuổi", "count")
ggplot(a, aes(x = Tuổi, y = count, fill = Tuổi)) +
  geom_bar(stat = "identity") +
  labs( x = "Tuổi", y = "Số lượng") +
  theme_minimal()

Trong bộ dữ liệu này, các cá thể được quan sát có độ tuổi từ 21 tuổi đến 35 tuổi. Số tuổi của những người được quan sát chiếm nhiều nhất là 27 tuổi (12.62%) và 28 tuổi (12,62%). Ngược lại những người có độ tuổi từ 33 tuổi đến 35 tuổi chiếm ít hơn với tỷ lệ bằng nhau là 2.91%. Điều này có thể thấy số lượng người sử dụng mạng xã hội đa phần là những người trẻ dưới 30 tuổi (thông qua hình ảnh đồ thị) trong bộ dữ liệu này.

3.3.1.2 Biến Gender

Bảng tần số_ Bảng tần suất

table(d$Gender)
## 
##     Female       Male Non-binary 
##         25         48         30
b <- prop.table(table(d$Gender)) * 100
b
## 
##     Female       Male Non-binary 
##   24.27184   46.60194   29.12621

Đồ thị

pie(b, labels = paste(names(b), round(b, 2), "%"),
    main = "Đồ thị thể hiện tỷ lệ giới tính")

Đồ thị trên biểu hiện giới tính Male chiếm đa số trong tổng quan sát với 46.6%, giới tính Non-binary chiếm nhiều thứ 2 với 29.13%, giới tính Female xếp thứ 3 với 24.27%. Hầu hết mọi người bất kể giới tính nào cũng đều sử dụng mạng xã hội.

3.3.1.3 Biến Platform

Bảng tần số_ Bảng tần suất

table(d$Platform)
## 
##  Facebook Instagram  LinkedIn  Snapchat  Telegram   Twitter  Whatsapp 
##        25        16        15        13        11        19         4
prop.table(table(d$Platform))*100
## 
##  Facebook Instagram  LinkedIn  Snapchat  Telegram   Twitter  Whatsapp 
## 24.271845 15.533981 14.563107 12.621359 10.679612 18.446602  3.883495

Đồ thị

d |> ggplot( aes( x = d$Platform, y= after_stat(count))) + geom_bar(fill='#9ACD32') + geom_text(aes(label= scales :: percent(after_stat(count/sum(count)),accuracy=.01)), stat = 'count', color= 'black', vjust= -.5) + theme_classic() + xlab('Nền tảng') + ylab('Tỷ lệ')

Tỷ lệ sử dụng ứng dụng Facebook là phổ biến nhất trong bộ dữ liệu với 24.27% người dùng và ứng dụng có tỷ lệ người dùng ít nhất là Whatsapp với 3.88%. Twitter là ứng dụng thứ 2 có nhiều người dùng nhất với 18.45%, 4 ứng dụng còn lại là Instagram, Linkedln, Snapchat và Telegram có tỷ lệ người dùng xấp xỉ theo thứ tự 15.53%, 14.56%, 12.62% và 10.68%. Qua đó ta có thể thấy Facebook được sử dụng rộng rãi nhiều nhất vì ứng dụng dễ dàng thao tác, cập nhật thông tin nhanh chóng và có nhiều tiện ích tiện lợi khi sử dụng

3.3.1.4 Biến Daily_Usage_Time (minutes)

Mã hoá biến định lượng Daily_Usage_Time thành biến định tính

Để dễ phân tích hơn, ta chia lại biến Daily_Usage_Time theo các khoảng như sau:

  • Thấp: Số lượng người dùng dành thời gian từ dưới đến 1 tiếng tương đương 60p để sử dụng mạng xã hội.

  • Trung bình: Số lượng người dùng dành thời gian từ trên 1 tiếng đến 2 tiếng tương đương 120p để sử dụng mạng xã hội.

  • Cao : Số lượng người dùng dành thời gian từ trên 2 tiếng trở lên để sử dụng mạng xã hội.

dtime<- cut(x = d$`Daily_Usage_Time (minutes)`,
    breaks = c(0, 60, 120, 200), 
    labels = c("Thấp", "Trung bình", "Cao"),
    right = TRUE) 

Bảng tần số_ Bảng tần suất

table(dtime)
## dtime
##       Thấp Trung bình        Cao 
##         27         62         14
prop.table(table(dtime))*100
## dtime
##       Thấp Trung bình        Cao 
##   26.21359   60.19417   13.59223

Đồ thị

d |> ggplot( aes( x = dtime, y= after_stat(count))) + geom_bar(fill= "indianred") + geom_text(aes(label= scales :: percent(after_stat(count/sum(count)),accuracy=.01)), stat = 'count', color= 'black', vjust= -.5) + theme_classic() + xlab('Thời gian sử dụng mạng xã hội hằng ngày') + ylab('Số người dùng')

Số lượng người dùng dành thời gian từ dưới đến 1 tiếng tương đương 60p để sử dụng mạng xã hội chiếm 26.21%, đa số người dùng dành thời gian từ trên 1 tiếng đến 2 tiếng tương đương 120p để sử dụng mạng xã hội chiếm 60.19% và số lượng người dùng dành thời gian từ trên 2 tiếng trở lên để sử dụng mạng xã hội chiếm 13.59%.

3.3.1.5 Biến Posts_Per_Day

Bảng tần số_ Bảng tần suất

table(d$Posts_Per_Day)
## 
##  1  2  3  4  5  6  7  8 
## 27 25 20 13  6  9  2  1
prop.table(table(d$Posts_Per_Day))*100
## 
##          1          2          3          4          5          6          7 
## 26.2135922 24.2718447 19.4174757 12.6213592  5.8252427  8.7378641  1.9417476 
##          8 
##  0.9708738
summary(d$Posts_Per_Day)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   2.000   2.864   4.000   8.000

Đồ thị

ggplot(data = d, aes(x = Posts_Per_Day)) +
  geom_histogram(binwidth = 1, fill = "#06A9AE", color = "black") +
  labs(title = "Phân phối số lượng bài đăng mỗi ngày",
       x = "Số lượng bài đăng mỗi ngày",
       y = "Tần số") +
  theme_minimal()

Số bài post trung bình được đăng tải mỗi ngày là 2 đến 3 bài, số bài post được người đăng tải nhiều nhất là 8 post và ít nhất là 1 post. Qua đồ thị trên, số lượng bài post có tần suất đăng tải nhiều rơi vào từ 1 post đến 3 post trong 1 ngày. Số lượng người post từ 5 bài 1 ngày trở đi giảm đáng kể, điều này cho thấy xu hướng người dùng mạng xã hội chỉ chia sẻ thông tin cá nhân của mình ở một mức vừa phải, không quá nhiều cũng không quá ít.

3.3.1.6 Biến Likes_Received_Per_Day

Mã hóa biến Likes_Received_Per_Day thành biến định tính

Tiến hành mã hóa biến Likes_Received_Per_Day thành biến định tính bằng cách chia dữ liệu thành 3 mức độ:

  • Thấp: Số người dùng nhận được lượt thích mỗi ngày từ 0 đến 35 lượt thích

  • Trung bình: Số người dùng nhận được lượt thích mỗi ngày từ 35 đến 80 lượt thích

  • Cao: Số người dùng nhận được lượt thích mỗi ngày từ 80 lượt thích trở lên.

dlike <- cut(x = d$Likes_Received_Per_Day,
    breaks = c(0, 35, 80, 110),
    labels = c("Thấp", "Trung bình", "Cao"), 
    right = TRUE) 

Bảng tần số_ Bảng tần suất

table(dlike)
## dlike
##       Thấp Trung bình        Cao 
##         65         32          6
prop.table(table(dlike))*100
## dlike
##       Thấp Trung bình        Cao 
##  63.106796  31.067961   5.825243

Đồ thị

d |> ggplot( aes( x = dlike, y= after_stat(count))) + geom_bar(fill= "#625DB9") + geom_text(aes(label= scales :: percent(after_stat(count/sum(count)),accuracy=.01)), stat = 'count', color= 'black', vjust= -.5) + theme_classic() + xlab('Số lượt thích nhận được mỗi ngày') + ylab('Số người dùng')

Kết quả trên cho ta thấy phần lớn người dùng nhận được lượt thích mỗi ngày ở mức thấp chiếm 63.11%, số người dùng nhận được lượt thích mỗi ngày ở mức trung bình chiếm 31.07% và một số ít người dùng nhận được lượt thích mỗi ngày ở mức cao chiếm 5.83%.

3.3.1.7 Biến Comments_Received_Per_Day

Mã hóa biến Comments_Received_Day thành biến định tính

Mã hóa biến Comments_Received_Day thành biến định tính bằng cách chia dữ liệu thành 3 mức độ:

  • Thấp: Số người dùng nhận được lượt bình luận mỗi ngày từ 0 đến 10 lượt bình luận

  • Trung bình: Số người dùng nhận được lượt bình luận mỗi ngày từ 10 đến 25 lượt bình luận

  • Cao: Số người dùng nhận được lượt bình luận mỗi ngày từ 25 lượt bình luận trở lên

dcom <- cut(x = d$Comments_Received_Per_Day,
    breaks = c(0, 10, 25, 40),
    labels = c("Thấp", "Trung bình", "Cao"), 
    right = TRUE) 

Bảng tần số_ Bảng tần suất

table(dcom)
## dcom
##       Thấp Trung bình        Cao 
##         46         45         12
prop.table(table(dcom))*100
## dcom
##       Thấp Trung bình        Cao 
##   44.66019   43.68932   11.65049

Đồ thị

d |> ggplot( aes( x = dcom, y= after_stat(count))) + geom_bar(fill= "#9ACD32") + geom_text(aes(label= scales :: percent(after_stat(count/sum(count)),accuracy=.01)), stat = 'count', color= 'black', vjust= -.5) + theme_classic() + xlab('Số lượng bình luận nhận được mỗi ngày') + ylab('Số người dùng')

Tỷ lệ số người dùng nhận được lượt bình luận mỗi ngày ở mức thấp và mức trung bình chiếm tỷ lệ gần như bằng nhau với số người dùng nhận được lượt bình luận mỗi ngày ở mức thấp chiếm 44.66% và số người dùng nhận được lượt bình luận mỗi ngày ở mức trung bình chiếm 43.69%. Chiếm tỷ lệ ít nhất là số người dùng nhận được lượt bình luận mỗi ngày ở mức cao chiếm 11.65%.

3.3.1.8 Biến Messages_Sent_Per_Day

Mã hóa biến Messages_Sent_Per_Day thành biến định tính

Mã hóa biến Messages_Sent_Per_Day thành biến định tính bằng cách chia dữ liệu thành 3 mức độ:

  • Thấp là từ 0 đến 10 lượt tin nhắn được gửi trên ngày.

  • Trung bình là từ 10 đến 25 lượt tin nhắn được gửi trên ngày.

  • Cao là từ 25 lượt tin nhắn được gửi trên ngày trở lên.

dmes <- cut(x = d$Messages_Sent_Per_Day,
    breaks = c(0, 10, 25, 45),
    labels = c("Thấp", "Trung bình", "Cao"), 
    right = TRUE) 

Bảng tần số_ Bảng tần suất

table(dmes)
## dmes
##       Thấp Trung bình        Cao 
##          9         70         24
prop.table(table(dmes))*100
## dmes
##       Thấp Trung bình        Cao 
##   8.737864  67.961165  23.300971

Đồ thị

d |> ggplot( aes( x = dmes, y= after_stat(count))) + geom_bar(fill= "yellow") + geom_text(aes(label= scales :: percent(after_stat(count/sum(count)),accuracy=.01)), stat = 'count', color= 'black', vjust= -.5) + theme_classic() + xlab('Số lượng tin nhắn gửi mỗi ngày') + ylab('Số người dùng')

Kết quả trên cho ta thấy số người dùng gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn chiếm 8.74%, số người dùng gửi tin nhắn mỗi ngày từ 10 đến 25 lượt tin nhắn chiếm 67.96% và số người dùng gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên chiếm 23.3%.

3.3.1.9 Biến Dominant_Emotion

Bảng tần số_ Bảng tần suất

table(d$Dominant_Emotion)
## 
##     Anger   Anxiety   Boredom Happiness   Neutral   Sadness 
##         9        22        16        14        28        14
prop.table(table(d$Dominant_Emotion))
## 
##      Anger    Anxiety    Boredom  Happiness    Neutral    Sadness 
## 0.08737864 0.21359223 0.15533981 0.13592233 0.27184466 0.13592233

Đồ thị

c <- prop.table(table(d$Dominant_Emotion))*100
c <- as.data.frame(c)
colnames(c) <- c("Dominant_Emotion", "per")
ggplot(c, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ cảm xúc chi phối") +
  theme_minimal() 

Kết quả trên cho thấy:

  • Neutral (Trung tính) là cảm xúc chi phối phổ biến nhất, chiếm 27.18% trong tổng số.

  • Anxiety (Lo lắng) là cảm xúc chi phối phổ biến thứ hai, chiếm 21.36%.

  • Boredom (Chán nản) chiếm 15.53%.

  • Happiness (Vui vẻ) và Sadness (Buồn bã) mỗi loại chiếm 13.59%.

  • Anger (Tức giận) là cảm xúc chi phối ít phổ biến nhất, chiếm 8.74%.

Bảng tần suất cho thấy sự đa dạng về cảm xúc chi phối trong một ngày. Mỗi loại cảm xúc đều có một tỷ lệ nhất định, phản ánh sự phức tạp và đa dạng trong trạng thái cảm xúc của người dùng.

3.3.2 Thống kê mô tả cho hai biến

3.3.2.1 Biến Dominant_Emotion và biến Age

Mã hoá biến định lượng Age thành biến định tính

Để dễ phân tích hơn, ta chia lại biến Age theo các khoảng như sau:

  • 21-25: Số lượng người dùng từ 21 tuổi tới 25 tuổi trong bộ dữ liệu.

  • 25-30: Số lượng người dùng từ trên 25 tuổi tới 30 tuổi trong bộ dữ liệu.

  • Trên 30: Số lượng người dùng từ trên 30 tuổi tới 35 tuổi trong bộ dữ liệu.

dage<- cut(x = d$Age,
    breaks = c(0, 25, 30, 35), 
    labels = c("21-25", "25-30", "Trên 30"),
    right = TRUE) 
table(dage)
## dage
##   21-25   25-30 Trên 30 
##      32      47      24

Bảng tần số_ Bảng tần suất

emoage <- table(d$Dominant_Emotion,dage)
addmargins(emoage)
##            dage
##             21-25 25-30 Trên 30 Sum
##   Anger         3     5       1   9
##   Anxiety       2    18       2  22
##   Boredom       1     6       9  16
##   Happiness     5     5       4  14
##   Neutral      18     5       5  28
##   Sadness       3     8       3  14
##   Sum          32    47      24 103
addmargins(prop.table(emoage))*100 
##            dage
##                   21-25       25-30     Trên 30         Sum
##   Anger       2.9126214   4.8543689   0.9708738   8.7378641
##   Anxiety     1.9417476  17.4757282   1.9417476  21.3592233
##   Boredom     0.9708738   5.8252427   8.7378641  15.5339806
##   Happiness   4.8543689   4.8543689   3.8834951  13.5922330
##   Neutral    17.4757282   4.8543689   4.8543689  27.1844660
##   Sadness     2.9126214   7.7669903   2.9126214  13.5922330
##   Sum        31.0679612  45.6310680  23.3009709 100.0000000

Đồ thị

d |> ggplot(aes(x= dage, y=after_stat(count))) + geom_bar(fill="blue") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "brown", vjust = - .5) + facet_grid(. ~Dominant_Emotion) + labs(x = "Độ tuổi",y = "Số người dùng")

Tỷ lệ từng nhóm tuổi đối với mỗi cảm xúc khác nhau khi sử dụng mạng xã hội:

  • Với những người sử dụng mạng xã hội mang cảm xúc tức giận có tỷ lệ tuổi dưới 25 là 2.91%, những người có độ tuổi từ 25 đến 30 chiếm nhiều nhất với 4.85% và thấp nhất là 0.97% ứng với những người có độ tuổi trên 30.

  • Với những người sử dụng mạng xã hội mang cảm xúc lo lắng có tỷ lệ tuổi dưới 25 và tỷ lệ tuổi trên 30 bằng nhau với 1.94%, những người có độ tuổi từ 25 đến 30 chiếm nhiều nhất với 17.48%.

  • Với những người sử dụng mạng xã hội mang cảm xúc chán nản có tỷ lệ tuổi dưới 25 là thấp nhất với 0.97%, tỷ lệ những người có độ tuổi từ 25 đến 30 chiếm 5.83% và độ tuổi có tỷ lệ cao nhất là trên 30 tuổi với 8.74%.

  • Với những người sử dụng mạng xã hội mang cảm xúc vui vẻ có tỷ lệ 3 độ tuổi tương đối gần bằng nhau với lần lượt là 4.85%, 4.85% và 3.88% ứng với thứ tự độ tuổi dưới 25, độ tuổi từ 25 đến 30 và độ tuổi trên 30.

  • Với những người sử dụng mạng xã hội mang cảm xúc trung tính có tỷ lệ tuổi dưới 25 chiếm nhiều nhất với 17.48%, còn lại những người có độ tuổi từ 25 đến 30 và trên 30 có tỷ lệ bằng nhau là 4.85%.

  • Với những người sử dụng mạng xã hội mang cảm xúc buồn bã có tỷ lệ tuổi dưới 25 là 2.91%, những người có độ tuổi từ 25 đến 30 chiếm nhiều nhất với 7.77% và những người có độ tuổi trên 30 chiếm 2.91%.

Nhìn chung, cảm xúc của người sử dụng mạng xã hội có sự phân bố khác nhau giữa các nhóm tuổi. Nhóm tuổi từ 25 đến 30 thường chiếm tỷ lệ cao nhất cho các cảm xúc tiêu cực như tức giận, lo lắng và buồn bã. Cảm xúc chán nản phổ biến hơn ở nhóm tuổi trên 30, trong khi cảm xúc trung tính phổ biến nhất ở nhóm tuổi dưới 25. Cảm xúc vui vẻ là đồng đều nhất giữa các nhóm tuổi. Điều này có thể phản ánh sự thay đổi tâm lý và trải nghiệm sống theo độ tuổi của người dùng mạng xã hội.

3.3.2.2 Biến Dominant_Emotion và biến Gender

Bảng tần số_ Bảng tần suất

emogen <-addmargins(table(d$Dominant_Emotion,d$Gender))
emogen
##            
##             Female Male Non-binary Sum
##   Anger          4    4          1   9
##   Anxiety        4   10          8  22
##   Boredom        1   12          3  16
##   Happiness      8    5          1  14
##   Neutral        5   11         12  28
##   Sadness        3    6          5  14
##   Sum           25   48         30 103
addmargins(prop.table(emogen))*100
##            
##                  Female        Male  Non-binary         Sum         Sum
##   Anger       0.9708738   0.9708738   0.2427184   2.1844660   4.3689320
##   Anxiety     0.9708738   2.4271845   1.9417476   5.3398058  10.6796117
##   Boredom     0.2427184   2.9126214   0.7281553   3.8834951   7.7669903
##   Happiness   1.9417476   1.2135922   0.2427184   3.3980583   6.7961165
##   Neutral     1.2135922   2.6699029   2.9126214   6.7961165  13.5922330
##   Sadness     0.7281553   1.4563107   1.2135922   3.3980583   6.7961165
##   Sum         6.0679612  11.6504854   7.2815534  25.0000000  50.0000000
##   Sum        12.1359223  23.3009709  14.5631068  50.0000000 100.0000000

Đồ thị

d %>% ggplot(aes(x = Gender, fill = fct_infreq(Dominant_Emotion))) +
  geom_bar(position = "dodge") +
  geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)), 
            stat = "count", 
            position = position_dodge(width = 0.9), 
            vjust = -0.5, 
            color = 'black') +
  scale_fill_manual(values = c("Anger" = "lightgreen", "Anxiety" = "pink", "Boredom" = "lightblue", "Happiness" = "orange", "Neutral" = "brown", "Sadness" = "yellow")) + labs(x = 'Giới tính', y = 'Số lượng người dùng', fill = 'Emotion',
       title = "Số lượng người dùng tương ứng với giới tính và cảm xúc") + theme_minimal()

Tỷ lệ cảm xúc của người dùng khi sử dụng mạng xã hội theo 3 nhóm giới tính:

  • Nhóm giới tính Female - Nữ: Ở nhóm này tỷ lệ cảm xúc vui vẻ chiếm đa số với 7.77%, cảm xúc chán nản chiếm ít nhất với chỉ 0.97%. Cảm xúc trung tính ở nhóm nữ chiếm tỷ lệ cao thứ 2 với 4.85% và ít thứ 2 là cảm xúc buồn bã với 2.91%. Còn lại 2 cảm xúc là lo lắng và tức giận có tỷ lệ bằng nhau với 3.88%.

  • Nhóm giới tính Male - Nam: Ở nhóm này tỷ lệ cảm xúc chán nản chiếm đa số với 7.77%, cảm xúc tức giận chiếm ít nhất với 3.88%. Cảm xúc trung tính ở nhóm nam chiếm tỷ lệ cao thứ 2 với 10.68% và xếp sau trung tính là cảm xúc lo lắng với 9.71%. Còn lại là cảm xúc vui vẻ chiếm 4.85%, cảm xúc buồn bã chiếm 5.83%.

  • Nhóm giới tính Non-binary - Không xác định được giới tính: Ở nhóm này tỷ lệ cảm xúc trung tính chiếm đa số với 11.65%, cảm xúc vui vẻ và tức giận chiếm ít nhất với tỷ lệ như nhau là 0.97%. Cảm xúc lo lắng ở nhóm này chiếm tỷ lệ cao thứ 2 với 7.77%. Còn lại 2 cảm xúc là chán nản và buồn bã có tỷ lệ tương ứng 2.91% và 4.85%

  • Cảm xúc vui vẻ: Phổ biến nhất ở nhóm nữ.

  • Cảm xúc chán nản: Phổ biến nhất ở nhóm nam, ít gặp ở nhóm nữ và không xác định giới tính.

  • Cảm xúc trung tính: Phổ biến nhất ở nhóm không xác định giới tính, cũng phổ biến ở nhóm nam.

  • Cảm xúc lo lắng: Thường gặp ở nhóm nam và nhóm không xác định giới tính.

  • Cảm xúc buồn bã: Có tỷ lệ tương đối đồng đều giữa các nhóm, nhưng thấp nhất ở nhóm nữ.

  • Cảm xúc tức giận: Ít gặp nhất ở nhóm không xác định giới tính, có tỷ lệ tương đối ở nhóm nữ và nhóm nam.

Nhìn chung, các nhóm giới tính có sự khác biệt rõ ràng trong việc trải nghiệm cảm xúc khi sử dụng mạng xã hội. Nhóm nữ có xu hướng trải nghiệm cảm xúc tích cực hơn, trong khi nhóm nam và không xác định giới tính trải nghiệm nhiều cảm xúc tiêu cực hơn. Điều này có thể phản ánh các yếu tố xã hội, tâm lý và văn hóa ảnh hưởng đến cảm xúc của người dùng mạng xã hội.

3.3.2.3 Biến Dominant_Emotion và biến Platform

Bảng tần số_ Bảng tần suất

emoplat <- addmargins(table(d$Dominant_Emotion,d$Platform))
emoplat
##            
##             Facebook Instagram LinkedIn Snapchat Telegram Twitter Whatsapp Sum
##   Anger            0         1        0        0        1       4        3   9
##   Anxiety          5         1        4        4        2       5        1  22
##   Boredom          5         0        7        0        1       3        0  16
##   Happiness        0        12        0        1        0       1        0  14
##   Neutral         12         2        4        4        4       2        0  28
##   Sadness          3         0        0        4        3       4        0  14
##   Sum             25        16       15       13       11      19        4 103
addmargins(prop.table(table(d$Platform,d$Dominant_Emotion)))*100
##            
##                   Anger     Anxiety     Boredom   Happiness     Neutral
##   Facebook    0.0000000   4.8543689   4.8543689   0.0000000  11.6504854
##   Instagram   0.9708738   0.9708738   0.0000000  11.6504854   1.9417476
##   LinkedIn    0.0000000   3.8834951   6.7961165   0.0000000   3.8834951
##   Snapchat    0.0000000   3.8834951   0.0000000   0.9708738   3.8834951
##   Telegram    0.9708738   1.9417476   0.9708738   0.0000000   3.8834951
##   Twitter     3.8834951   4.8543689   2.9126214   0.9708738   1.9417476
##   Whatsapp    2.9126214   0.9708738   0.0000000   0.0000000   0.0000000
##   Sum         8.7378641  21.3592233  15.5339806  13.5922330  27.1844660
##            
##                 Sadness         Sum
##   Facebook    2.9126214  24.2718447
##   Instagram   0.0000000  15.5339806
##   LinkedIn    0.0000000  14.5631068
##   Snapchat    3.8834951  12.6213592
##   Telegram    2.9126214  10.6796117
##   Twitter     3.8834951  18.4466019
##   Whatsapp    0.0000000   3.8834951
##   Sum        13.5922330 100.0000000

Đồ thị cảm xúc với ứng dụng Facebook

fb <- d[d$Platform == "Facebook", ]
table(fb$Dominant_Emotion)
## 
## Anxiety Boredom Neutral Sadness 
##       5       5      12       3
d1 <- prop.table(table(fb$Dominant_Emotion))*100
d1 <- as.data.frame(d1)
colnames(d1) <- c("Dominant_Emotion", "per")
ggplot(d1, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng Facebook") +
  theme_minimal() 

  • Với ứng dụng Facebook: Trong tổng số 25 người sử dụng ứng dụng này, cảm xúc phổ biến nhất là trung tính chiếm gần 1 nửa với 48%, cảm xúc ít phổ biến nhất là buồn bã với 12%. Cảm xúc chán nản và lo lắng chiếm tỷ lệ như nhau với 20%, các cảm xúc còn lại là tức giận, vui vẻ không xuất hiện ở ứng dụng này.

Đồ thị cảm xúc với ứng dụng Instagram

ig <- d[d$Platform == "Instagram", ]
table(ig$Dominant_Emotion)
## 
##     Anger   Anxiety Happiness   Neutral 
##         1         1        12         2
e <- prop.table(table(ig$Dominant_Emotion))*100
e <- as.data.frame(e)
colnames(e) <- c("Dominant_Emotion", "per")
ggplot(e, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng Instagram") +
  theme_minimal() 

  • Với ứng dụng Instagram: Trong tổng số 16 người sử dụng ứng dụng này, cảm xúc phổ biến nhất là vui vẻ chiếm 3/4 trong những người sử dụng ứng dụng với 75%, hai cảm xúc ít phổ biến nhất là tức giận và lo lắng với 6.25%. Cảm xúc trung tính chiếm tỷ lệ 12.5%%, các cảm xúc còn lại là chán nản, buồn bã không xuất hiện ở ứng dụng này.

Đồ thị cảm xúc với ứng dụng LinkedIn

lk <- d[d$Platform == "LinkedIn", ]
table(lk$Dominant_Emotion)
## 
## Anxiety Boredom Neutral 
##       4       7       4
f <- prop.table(table(lk$Dominant_Emotion))*100
f <- as.data.frame(f)
colnames(f) <- c("Dominant_Emotion", "per")
ggplot(f, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng LinkedIn") +
  theme_minimal() 

  • Với ứng dụng LinkedIn: Trong số 15 người dùng mạng xã hội này chỉ có chủ yếu 3 cảm xúc: chán nản, lo lắng và trung tính. Cảm xúc phổ biến nhất là chán nản chiếm gần 1 nửa với 46.67%, cảm xúc lo lắng và trung tính có tỷ lệ bằng nhau là 26.67%

Đồ thị cảm xúc với ứng dụng Snapchat

snap <- d[d$Platform == "Snapchat", ]
table(snap$Dominant_Emotion)
## 
##   Anxiety Happiness   Neutral   Sadness 
##         4         1         4         4
g <- prop.table(table(snap$Dominant_Emotion))*100
g <- as.data.frame(g)
colnames(g) <- c("Dominant_Emotion", "per")
ggplot(g, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng Snapchat") +
  theme_minimal() 

  • Với ứng dụng Snapchat: Ở ứng dụng này 3 cảm xúc phổ biến nhất là lo lắng, trung tính, buồn bã có tỷ lệ bằng nhau với mỗi cảm xúc là 30.77%, cảm xúc ít phổ biến hơn là vui vẻ với 7.69%. Các cảm xúc còn lại là tức giận, chán nản không xuất hiện ở 13 người sử dụng ứng dụng này.

Đồ thị cảm xúc với ứng dụng Telegram

tele <- d[d$Platform == "Telegram", ]
table(tele$Dominant_Emotion)
## 
##   Anger Anxiety Boredom Neutral Sadness 
##       1       2       1       4       3
h <- prop.table(table(tele$Dominant_Emotion))*100
h <- as.data.frame(h)
colnames(h) <- c("Dominant_Emotion", "per")
ggplot(h, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng Telegram") +
  theme_minimal() 

  • Với ứng dụng Telegram: Trong số 11 người sử dụng ứng dụng này, cảm xúc phổ biến nhất là trung tính chiếm 36.36%, hai cảm xúc ít phổ biến nhất là tức giận và chán nản chiếm tỷ lệ 9.09% giống nhau. Cảm xúc phổ biến thứ 2 là buồn bã chiếm tỷ lệ 27.27%, cảm xúc phổ biến thứ 3 là lo lắng chiếm 18.18%. Cảm xúc vui vẻ không xuất hiện ở ứng dụng này.

Đồ thị cảm xúc với ứng dụng Twitter

twi <- d[d$Platform == "Twitter", ]
table(twi$Dominant_Emotion)
## 
##     Anger   Anxiety   Boredom Happiness   Neutral   Sadness 
##         4         5         3         1         2         4
i <- prop.table(table(twi$Dominant_Emotion))*100
i <- as.data.frame(i)
colnames(i) <- c("Dominant_Emotion", "per")
ggplot(i, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng Twitter") +
  theme_minimal() 

  • Với ứng dụng Twitter: Nhóm gồm 19 người sử dụng ứng dụng này có toàn bộ cả 6 cảm xúc. Phổ biến nhất là cảm xúc lo lắng chiếm 26.32%, hai cảm xúc phổ biến thứ 2 là tức giận và buồn bã chiếm tỷ lệ bằng nhau với 21.05%. Cảm xúc chán nản chiếm 15.79%, cảm xúc trung tính chiếm 10.53%. Vui vẻ là cảm xúc ít gặp nhất ở nhóm người này với tỷ lệ là 5.26%.

Đồ thị cảm xúc với ứng dụng Whatsapp

wa <- d[d$Platform == "Whatsapp", ]
table(wa$Dominant_Emotion)
## 
##   Anger Anxiety 
##       3       1
j <- prop.table(table(wa$Dominant_Emotion))*100
j <- as.data.frame(j)
colnames(j) <- c("Dominant_Emotion", "per")
ggplot(j, aes(x = "", y = per, fill = Dominant_Emotion)) +
  geom_col(width = 1) + 
  coord_polar("y") +  
  geom_text(aes(label = paste0(round(per, 2), "%")), 
            position = position_stack(vjust = 0.5), 
            size = 4, color = "black") +  
  scale_fill_brewer(palette = "Set2") + 
  labs(title = "Biểu đồ phân phối cảm xúc chủ đạo của ứng dụng Whatsapp") +
  theme_minimal() 

  • Với ứng dụng Whatsapp: Nhóm có 4 người sử dụng ứng dụng này chỉ có tối đa 2 cảm xúc đó là giận dữ chiếm đa số với 75% và cảm xúc lo lắng chiếm 25% còn lại.

Kết luận

Người dùng Facebook chủ yếu có cảm xúc trung tính, ít gặp cảm xúc buồn bã, và hoàn toàn không có cảm xúc tức giận hoặc vui vẻ.

Instagram là nền tảng khiến người dùng cảm thấy vui vẻ nhất, với hầu hết các cảm xúc tiêu cực ít xuất hiện.

Người dùng LinkedIn chủ yếu cảm thấy chán nản hoặc lo lắng, không có cảm xúc tích cực.

Snapchat có sự phân bố cảm xúc tương đối đồng đều, với cảm xúc vui vẻ ít phổ biến nhất và không có sự xuất hiện của cảm xúc tức giận hoặc chán nản.

Người dùng Telegram chủ yếu có cảm xúc theo hướng tiêu cực, cảm xúc trung tính là nhiều nhất và ứng dụng không mang lại cảm xúc vui vẻ cho người dùng.

Twitter có sự đa dạng về cảm xúc nhất trong 6 ứng dụng, với cảm xúc lo lắng và tức giận chiếm tỷ lệ cao, cảm xúc vui vẻ ít gặp nhất.

Người dùng WhatsApp chủ yếu có cảm xúc tiêu cực khi chỉ có cảm xúc tức giận và lo lắng, đặc biệt là tức giận, không có sự xuất hiện của các cảm xúc khác.

Mỗi nền tảng mạng xã hội có sự phân bố cảm xúc khác nhau, phản ánh đặc điểm và cách thức sử dụng của người dùng trên từng nền tảng. Các nền tảng như Instagram và Snapchat có xu hướng cảm xúc tích cực hơn, trong khi WhatsApp và Twitter lại có nhiều cảm xúc tiêu cực hơn và người dùng Facebook có cảm xúc trung tính nhất.

3.3.2.4 Biến Dominant_Emotion và biến Daily_Usage_Time (minutes)

Bảng tần số_ Bảng tần suất

emotime <- table(d$Dominant_Emotion,dtime)
addmargins(emotime)
##            dtime
##             Thấp Trung bình Cao Sum
##   Anger        1          8   0   9
##   Anxiety      4         17   1  22
##   Boredom     10          6   0  16
##   Happiness    0          3  11  14
##   Neutral      8         18   2  28
##   Sadness      4         10   0  14
##   Sum         27         62  14 103
addmargins(prop.table(emotime))*100
##            dtime
##                    Thấp  Trung bình         Cao         Sum
##   Anger       0.9708738   7.7669903   0.0000000   8.7378641
##   Anxiety     3.8834951  16.5048544   0.9708738  21.3592233
##   Boredom     9.7087379   5.8252427   0.0000000  15.5339806
##   Happiness   0.0000000   2.9126214  10.6796117  13.5922330
##   Neutral     7.7669903  17.4757282   1.9417476  27.1844660
##   Sadness     3.8834951   9.7087379   0.0000000  13.5922330
##   Sum        26.2135922  60.1941748  13.5922330 100.0000000

Đồ thị

d %>% ggplot(aes(x = fct_infreq(Dominant_Emotion), fill = dtime)) +
  geom_bar(position = "dodge") +
  geom_text(aes(label = scales::percent(after_stat(count / sum(count)), accuracy = 0.01)), 
            stat = "count", 
            position = position_dodge(width = 0.9), 
            vjust = -0.5, 
            color = 'brown') +
  scale_fill_manual(values = c("Thấp" = "yellow", "Trung bình" = "blue", "Cao" = "red")) + labs(x = 'Cảm xúc', y = 'Số lượng người dùng', fill = 'Thời gian',
       title = "Số lượng người dùng tương ứng với thời gian sử dụng MXH và cảm xúc") + theme_minimal()

Tỷ lệ thời gian sử dụng mạng xã hội theo từng cảm xúc của người dùng

  • Nhóm người có cảm xúc trung tính (Neutral): Số lượng người dùng trong nhóm này dành thời gian dưới 1 tiếng/ngày chiếm 7.77%, số lượng người dành thời gian từ 1 tiếng đến 2 tiếng trong 1 ngày chiếm 17.48%, còn lại là những người có thời gian sử dụng mạng xã hội trên 2 tiếng/ngày chiếm với 1.94%.

  • Nhóm người có cảm xúc lo lắng (Anxiety): Số lượng người dùng trong nhóm này dành thời gian sử dụng mạng xã hội dưới 1 tiếng/ngày chiếm 3.88%, số lượng người dành thời gian từ 1 tiếng đến 2 tiếng trong 1 ngày chiếm 16.5%, còn lại là những người có thời gian sử dụng mạng xã hội trên 2 tiếng/ngày chiếm với 0.97%.

  • Nhóm người có cảm xúc chán nản (Boredom): Số lượng người dùng dành thời gian dưới 1 tiếng/ngày chiếm 9.71%, số lượng người dành thời gian từ 1 tiếng đến 2 tiếng trong 1 ngày chiếm 5.83%. Những người sử dụng mạng xã hội nhiều hơn 2 tiếng/ngày không cảm thấy chán nản.

  • Nhóm người có cảm xúc vui vẻ (Happiness): Số lượng người dùng dành thời gian từ 1 tiếng đến 2 tiếng trong 1 ngày chiếm 2.91%, còn lại là những người có thời gian sử dụng mạng xã hội trên 2 tiếng/ngày chiếm 10.68%. Những người dành ít thời gian sử dụng mạng xã hội dưới 1 tiếng/ngày là những người không cảm thấy vui vẻ khi sử dụng.

  • Nhóm người có cảm xúc buồn bã (Sadness): Số lượng người dùng trong nhóm này dành thời gian dưới 1 tiếng/ngày chiếm 3.88%, số lượng người dành thời gian từ 1 tiếng đến 2 tiếng trong 1 ngày chiếm 9.71%, còn lại là những người có thời gian sử dụng mạng xã hội trên 2 tiếng/ngày không có cảm xúc này.

  • Nhóm người có cảm xúc tức giận (Ànger): Số lượng người dùng trong nhóm này dành thời gian dưới 1 tiếng/1 ngày chiếm 0.97%, số lượng người dành thời gian từ 1 tiếng đến 2 tiếng trong 1 ngày chiếm 7.77%, còn lại những người có thời gian sử dụng mạng xã hội trên 2 tiếng/ngày chiếm không có cảm xúc này.

Tóm lại,

Người dùng chủ yếu sử dụng mạng xã hội trong khoảng 1 đến 2 tiếng mỗi ngày có cảm xúc theo xu hướng trung tính hoặc lo lắng.

Những người có cảm xúc chán nản và buồn bã chủ yếu sử dụng mạng xã hội dưới 1 tiếng hoặc từ 1 đến 2 tiếng mỗi ngày, không có ai sử dụng trên 2 tiếng.

Người dùng chủ yếu sử dụng mạng xã hội trên 2 tiếng mỗi ngày là những người sử dụng với trạng thái cảm xúc vui vẻ.

Những người thường có cảm xúc tức giận chủ yếu sử dụng mạng xã hội từ 1 đến 2 tiếng mỗi ngày, ít người sử dụng dưới 1 tiếng và không có ai sử dụng trên 2 tiếng.

Thời gian sử dụng mạng xã hội có sự ảnh hưởng đáng kể đến cảm xúc của người dùng. Người dùng cảm thấy vui vẻ thường dành nhiều thời gian hơn trên mạng xã hội, trong khi những người cảm thấy chán nản, buồn bã hoặc tức giận thường sử dụng mạng xã hội ít hơn. Cảm xúc trung tính và lo lắng có xu hướng phân bố đều trong khoảng thời gian sử dụng từ 1 đến 2 tiếng mỗi ngày.

3.3.2.5 Biến Dominant_Emotion và biến Posts_Per_Day

Mã hóa biến Posts_Per_Day thành biến định tính

Mã hóa biến Posts_Per_Day thành biến định tính bằng cách chia dữ liệu thành 3 mức độ:

  • Thấp là từ 0 đến 3 bài đăng trên ngày

  • Trung bình là từ 3 đến 5 bài đăng trên ngày

  • Cao là từ 5 bài đăng trở lên

dpos <- cut(x = d$Posts_Per_Day,
    breaks = c(0, 3, 5, 8),
    labels = c("Thấp", "Trung bình", "Cao"), 
    right = TRUE) 
table(dpos)
## dpos
##       Thấp Trung bình        Cao 
##         72         19         12

Bảng tần số_ Bảng tần suất

emopos <- table(d$Dominant_Emotion, dpos)
addmargins(emopos)
##            dpos
##             Thấp Trung bình Cao Sum
##   Anger        5          3   1   9
##   Anxiety     17          4   1  22
##   Boredom     15          1   0  16
##   Happiness    1          4   9  14
##   Neutral     21          7   0  28
##   Sadness     13          0   1  14
##   Sum         72         19  12 103
prop.table(emopos)
##            dpos
##                    Thấp  Trung bình         Cao
##   Anger     0.048543689 0.029126214 0.009708738
##   Anxiety   0.165048544 0.038834951 0.009708738
##   Boredom   0.145631068 0.009708738 0.000000000
##   Happiness 0.009708738 0.038834951 0.087378641
##   Neutral   0.203883495 0.067961165 0.000000000
##   Sadness   0.126213592 0.000000000 0.009708738
addmargins(prop.table(emopos)) *100
##            dpos
##                    Thấp  Trung bình         Cao         Sum
##   Anger       4.8543689   2.9126214   0.9708738   8.7378641
##   Anxiety    16.5048544   3.8834951   0.9708738  21.3592233
##   Boredom    14.5631068   0.9708738   0.0000000  15.5339806
##   Happiness   0.9708738   3.8834951   8.7378641  13.5922330
##   Neutral    20.3883495   6.7961165   0.0000000  27.1844660
##   Sadness    12.6213592   0.0000000   0.9708738  13.5922330
##   Sum        69.9029126  18.4466019  11.6504854 100.0000000

Đồ thị

d |> ggplot(aes(x= dpos,y=after_stat(count))) + geom_bar(fill="#9ACD32") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "black", vjust = - .5) + facet_grid(. ~Dominant_Emotion) + labs(x = "Lượt bài đăng ứng với cảm xúc nhận được trên ngày",y = "Số người dùng")

Kết quả trên cho thấy:

  • Trong số những người dùng mang cảm xúc tức giận thì những người có số lượng bài đăng từ 0 đến 3 bài đăng trên ngày chiếm 4.85%, những người có từ 3 đến 5 bài đăng trên ngày chiếm 2.91% và những người có từ 5 bài đăng trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc lo lắng thì những người có số lượng bài đăng từ 0 đến 3 bài đăng trên ngày chiếm 6.50%, những người có từ 3 đến 5 bài đăng trên ngày chiếm 3.88% và những người có từ 5 bài đăng trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc chán nản thì những người có số lượng bài đăng từ 0 đến 3 bài đăng trên ngày chiếm 4.56%, những người có từ 3 đến 5 bài đăng trên ngày chiếm 0.97% và không có người nào cảm thấy chán nản khi có từ 5 bài đăng trở lên mỗi ngày

  • Trong số những người dùng mang cảm xúc vui vẻ thì những người có số lượng bài đăng từ 0 đến 3 bài đăng trên ngày chiếm 0.97%, những người có từ 3 đến 5 bài đăng trên ngày chiếm 3.88% và những người có từ 5 bài đăng trở lên chiếm 8.74%

  • Trong số những người dùng mang cảm xúc trung tính thì những người có số lượng bài đăng từ 0 đến 3 bài đăng trên ngày chiếm 20.39%, những người có từ 3 đến 5 bài đăng trên ngày chiếm 6.80% và không có người nào cảm thấy trung tính khi có từ 5 bài đăng trở lên mỗi ngày

  • Trong số những người dùng mang cảm xúc buồn bã thì những người có số lượng bài đăng từ 0 đến 3 bài đăng trên ngày chiếm 12.62%, không có người nào cảm thấy buồn bã khi có từ 3 đến 5 bài đăng trên ngày và những người có từ 5 bài đăng trở lên chiếm 0.97%

Nhìn chung, số lượng bài đăng mỗi ngày có mối liên hệ đáng kể với cảm xúc và sức khoẻ tinh thần của người dùng mạng xã hội. Việc đăng ít bài thường liên quan đến cảm xúc tiêu cực, trong khi đăng nhiều bài có thể góp phần mang lại cảm xúc tích cực và cải thiện sức khoẻ tinh thần. Điều này nhấn mạnh tầm quan trọng của sự tương tác và công nhận trên mạng xã hội đối với cảm xúc và sức khoẻ tinh thần của người dùng.

3.3.2.6 Biến Dominant_Emotion và biến Likes_Received_Per_Day

Bảng tần số_Bảng tần suất

emolike <- table(d$Dominant_Emotion, dlike)
addmargins(emolike)
##            dlike
##             Thấp Trung bình Cao Sum
##   Anger        5          4   0   9
##   Anxiety     11         10   1  22
##   Boredom     16          0   0  16
##   Happiness    1          8   5  14
##   Neutral     21          7   0  28
##   Sadness     11          3   0  14
##   Sum         65         32   6 103
prop.table(emolike)
##            dlike
##                    Thấp  Trung bình         Cao
##   Anger     0.048543689 0.038834951 0.000000000
##   Anxiety   0.106796117 0.097087379 0.009708738
##   Boredom   0.155339806 0.000000000 0.000000000
##   Happiness 0.009708738 0.077669903 0.048543689
##   Neutral   0.203883495 0.067961165 0.000000000
##   Sadness   0.106796117 0.029126214 0.000000000
addmargins(prop.table(emolike)) *100
##            dlike
##                    Thấp  Trung bình         Cao         Sum
##   Anger       4.8543689   3.8834951   0.0000000   8.7378641
##   Anxiety    10.6796117   9.7087379   0.9708738  21.3592233
##   Boredom    15.5339806   0.0000000   0.0000000  15.5339806
##   Happiness   0.9708738   7.7669903   4.8543689  13.5922330
##   Neutral    20.3883495   6.7961165   0.0000000  27.1844660
##   Sadness    10.6796117   2.9126214   0.0000000  13.5922330
##   Sum        63.1067961  31.0679612   5.8252427 100.0000000

Đồ thị

d |> ggplot(aes(x= dlike,y=after_stat(count))) + geom_bar(fill="orange") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "black", vjust = - .5) + facet_grid(. ~Dominant_Emotion) + labs(x = "Lượt thích ứng với cảm xúc nhận được trên ngày",y = "Số người dùng")

Kết quả trên cho thấy:

  • Trong số những người dùng mang cảm xúc tức giận thì những người có số lượt thích nhận đựơc trên ngày từ 0 đến 35 lượt thích chiếm 4.85%, những người có số lượt thích nhận đựơc trên ngày từ 35 đến 80 lượt thích chiếm 3.88% và không có người nào cảm thấy tức giận khi nhận được từ 80 lượt thích trở lên mỗi ngày

  • Trong số những người dùng mang cảm xúc lo lắng thì những người có số lượt thích nhận đựơc trên ngày từ 0 đến 35 lượt thích chiếm 10.68%, những người có số lượt thích nhận đựơc trên ngày từ 35 đến 80 lượt thích chiếm 9.71% và những người có từ 80 lượt thích nhận đựơc trên ngày trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc chán nản thì những người có số lượt thích nhận đựơc trên ngày từ 0 đến 35 lượt thích chiếm 15.53%, và không có người nào cảm thấy tức chán nản khi nhận được từ 35 lượt thích trở lên mỗi ngày

  • Trong số những người dùng mang cảm xúc vui vẻ thì những người có số lượt thích nhận đựơc trên ngày từ 0 đến 35 lượt thích chiếm 0.97%, những người có số lượt thích nhận đựơc trên ngày từ 35 đến 80 lượt thích chiếm 7.77% và những người có từ 80 lượt thích nhận đựơc trên ngày trở lên chiếm 4.85%

  • Trong số những người dùng mang cảm xúc trung tính thì những người có số lượt thích nhận đựơc trên ngày từ 0 đến 35 lượt thích chiếm 20.39%, những người có số lượt thích nhận đựơc trên ngày từ 35 đến 80 lượt thích chiếm 6.80% và không có người nào cảm thấy trung tính khi nhận được từ 80 lượt thích trở lên mỗi ngày

  • Trong số những người dùng mang cảm xúc buồn bã thì những người có số lượt thích nhận đựơc trên ngày từ 0 đến 35 lượt thích chiếm 10.68%, những người có số lượt thích nhận đựơc trên ngày từ 35 đến 80 lượt thích chiếm 2.91% và không có người nào cảm thấy tức giận khi nhận được từ 80 lượt thích trở lên mỗi ngày

Nhìn chung,

  • Việc nhận được ít lượt thích có ảnh hưởng rõ ràng đến cảm xúc tiêu cực của người dùng. Những người nhận được ít lượt thích thường có xu hướng cảm thấy tức giận, lo lắng, chán nản và buồn bã. Đây là dấu hiệu cho thấy sự thiếu công nhận hoặc tương tác trên mạng xã hội có thể gây ra các vấn đề về sức khoẻ tinh thần.

  • Ngược lại, nhận được nhiều lượt thích có ảnh hưởng tích cực đến tâm trạng của người dùng. Những người nhận được nhiều lượt thích thường có xu hướng cảm thấy vui vẻ, cho thấy sự công nhận và tương tác tích cực có thể cải thiện tâm trạng của họ.

  • Một phần lớn người dùng giữ được cảm xúc trung tính ngay cả khi nhận được ít lượt thích, điều này có thể cho thấy rằng không phải ai cũng bị ảnh hưởng tiêu cực bởi số lượt thích thấp. Tuy nhiên, sự tồn tại của cảm xúc trung tính ở mức lượt thích thấp cho thấy mức độ tác động có thể khác nhau giữa các cá nhân.

3.3.2.7 Biến Dominant_Emotion và biến Comments_Received_Day

Mã hóa biến Comments_Received_Day thành biến định tính

Bảng tần số_ Bảng tần suất

emocom <- table(d$Dominant_Emotion, dcom)
addmargins(emocom)
##            dcom
##             Thấp Trung bình Cao Sum
##   Anger        3          5   1   9
##   Anxiety      6         15   1  22
##   Boredom     15          1   0  16
##   Happiness    0          5   9  14
##   Neutral     15         12   1  28
##   Sadness      7          7   0  14
##   Sum         46         45  12 103
prop.table(emocom)
##            dcom
##                    Thấp  Trung bình         Cao
##   Anger     0.029126214 0.048543689 0.009708738
##   Anxiety   0.058252427 0.145631068 0.009708738
##   Boredom   0.145631068 0.009708738 0.000000000
##   Happiness 0.000000000 0.048543689 0.087378641
##   Neutral   0.145631068 0.116504854 0.009708738
##   Sadness   0.067961165 0.067961165 0.000000000
addmargins(prop.table(emocom)) *100
##            dcom
##                    Thấp  Trung bình         Cao         Sum
##   Anger       2.9126214   4.8543689   0.9708738   8.7378641
##   Anxiety     5.8252427  14.5631068   0.9708738  21.3592233
##   Boredom    14.5631068   0.9708738   0.0000000  15.5339806
##   Happiness   0.0000000   4.8543689   8.7378641  13.5922330
##   Neutral    14.5631068  11.6504854   0.9708738  27.1844660
##   Sadness     6.7961165   6.7961165   0.0000000  13.5922330
##   Sum        44.6601942  43.6893204  11.6504854 100.0000000

Đồ thị

d |> ggplot(aes(x= dcom,y=after_stat(count))) + geom_bar(fill="skyblue") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "black", vjust = -0.5) + facet_grid(. ~Dominant_Emotion) + labs(x = "Lượt bình luận nhận được ứng với cảm xúc trên ngày",y = "Số người dùng")

Kết quả trên cho thấy:

  • Trong số những người dùng mang cảm xúc tức giận thì những người có số bình luận nhận đựơc trên ngày 0 đến 10 lượt bình luận chiếm 2.91%, những người có số bình luận nhận đựơc trên ngày từ 10 đến 25 lượt bình luận chiếm 4.85% và những người có số bình luận nhận đựơc trên ngày từ 25 bình luận trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc lo lắng thì những người có số bình luận nhận đựơc trên ngày 0 đến 10 lượt bình luận chiếm 5.83%, những người có số bình luận nhận đựơc trên ngày từ 10 đến 25 lượt bình luận chiếm 14.56% và những người có số bình luận nhận đựơc trên ngày từ 25 bình luận trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc chán nản thì những người có số bình luận nhận đựơc trên ngày 0 đến 10 lượt bình luận chiếm 14.56%, những người có số bình luận nhận đựơc trên ngày từ 10 đến 25 lượt bình luận chiếm 0.97% và không có người nào cảm thấy chán nản khi nhận được từ 25 bình luận trở lên mỗi ngày

  • Trong số những người dùng mang cảm xúc vui vẻ thì không có người nào nhận được từ 0 đến 10 lượt bình luận mỗi ngày, những người có số bình luận nhận đựơc trên ngày từ 10 đến 25 lượt bình luận chiếm 4.85% và những người có số bình luận nhận đựơc trên ngày từ 25 bình luận trở lên chiếm 8.74%

  • Trong số những người dùng mang cảm xúc trung tính thì những người có số bình luận nhận đựơc trên ngày 0 đến 10 lượt bình luận chiếm 14.56%, những người có số bình luận nhận đựơc trên ngày từ 10 đến 25 lượt bình luận chiếm 11.65% và những người có số bình luận nhận đựơc trên ngày từ 25 bình luận trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc buồn bã thì những người có số bình luận nhận đựơc trên ngày 0 đến 10 lượt bình luận và những người có số bình luận nhận đựơc trên ngày từ 10 đến 25 lượt bình luận đều chiếm 8.8% và không có người nào cảm thấy buồn bã khi nhận được từ 25 bình luận trở lên mỗi ngày

Kết quả này nhấn mạnh tầm quan trọng của tương tác xã hội trên mạng trong việc ảnh hưởng đến cảm xúc của người dùng. Sự thiếu công nhận hoặc phản hồi có thể gây ra các cảm xúc tiêu cực, trong khi sự tương tác tích cực và công nhận có thể cải thiện tâm trạng và cảm xúc người dùng.

3.3.2.8 Biến Dominant_Emotion và biến Messages_Sent_Per_Day

Bảng tần số_ Bảng tần suất

emomes <- table(d$Dominant_Emotion, dmes)
addmargins(emomes)
##            dmes
##             Thấp Trung bình Cao Sum
##   Anger        0          8   1   9
##   Anxiety      0         14   8  22
##   Boredom      5         11   0  16
##   Happiness    0          3  11  14
##   Neutral      4         22   2  28
##   Sadness      0         12   2  14
##   Sum          9         70  24 103
prop.table(emomes)
##            dmes
##                    Thấp  Trung bình         Cao
##   Anger     0.000000000 0.077669903 0.009708738
##   Anxiety   0.000000000 0.135922330 0.077669903
##   Boredom   0.048543689 0.106796117 0.000000000
##   Happiness 0.000000000 0.029126214 0.106796117
##   Neutral   0.038834951 0.213592233 0.019417476
##   Sadness   0.000000000 0.116504854 0.019417476
addmargins(prop.table(emomes)) *100
##            dmes
##                    Thấp  Trung bình         Cao         Sum
##   Anger       0.0000000   7.7669903   0.9708738   8.7378641
##   Anxiety     0.0000000  13.5922330   7.7669903  21.3592233
##   Boredom     4.8543689  10.6796117   0.0000000  15.5339806
##   Happiness   0.0000000   2.9126214  10.6796117  13.5922330
##   Neutral     3.8834951  21.3592233   1.9417476  27.1844660
##   Sadness     0.0000000  11.6504854   1.9417476  13.5922330
##   Sum         8.7378641  67.9611650  23.3009709 100.0000000

Đồ thị

d |> ggplot(aes(x= dmes,y=after_stat(count))) + geom_bar(fill="red") + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = "count", color = "black", vjust = - .5) + facet_grid(. ~Dominant_Emotion) + labs(x = "Lượt tin nhắn được gửi ứng với cảm xúc nhận được trên ngày",y = "Số người dùng")

Kết quả trên cho thấy:

  • Trong số những người dùng mang cảm xúc tức giận thì không có người nào gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn, những người gửi tin nhắn mỗi ngày 10 đến 25 tin nhắn chiếm 7.77% và những người gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên chiếm 0.97%

  • Trong số những người dùng mang cảm xúc lo lắng thì không có người nào gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn, những người gửi tin nhắn mỗi ngày 10 đến 25 tin nhắn chiếm 13.59% và nnhững người gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên chiếm 7.77%

  • Trong số những người dùng mang cảm xúc chán nản thì những người gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn chiếm 4.85%, những người gửi tin nhắn mỗi ngày 10 đến 25 tin nhắn chiếm 10.68% và không có người nào gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên

  • Trong số những người dùng mang cảm xúc vui vẻ thì không có người nào gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn, những người gửi tin nhắn mỗi ngày 10 đến 25 tin nhắn chiếm 2.91% và những người gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên chiếm 10.68%

  • Trong số những người dùng mang cảm xúc trung tính thì những người gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn chiếm 3.88%, những người gửi tin nhắn mỗi ngày 10 đến 25 tin nhắn chiếm 21.36% và những người gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên chiếm 1.94%

  • Trong số những người dùng mang cảm xúc buồn bã thì không có người nào gửi tin nhắn mỗi ngày từ 0 đến 10 tin nhắn, những người gửi tin nhắn mỗi ngày 10 đến 25 tin nhắn chiếm 11.65% và những người gửi tin nhắn mỗi ngày từ 25 tin nhắn trở lên chiếm 1.94%

Gửi ít hoặc trung bình số lượng tin nhắn mỗi ngày thường liên quan đến cảm xúc tiêu cực như tức giận, lo lắng, chán nản, và buồn bã. Điều này nhấn mạnh tầm quan trọng của sự tương tác và phản hồi từ người khác trong việc ảnh hưởng đến trạng thái cảm xúc của người dùng. Gửi nhiều tin nhắn mỗi ngày thường liên quan đến cảm xúc tích cực như vui vẻ, một số người dùng vẫn giữ được cảm xúc trung tính bất kể số lượng tin nhắn gửi đi. Việc gửi tin nhắn nhiều hay ít đều có thể có những ảnh hưởng khác nhau đến cảm xúc của người dùng, từ tiêu cực đến tích cực, tùy thuộc vào mức độ và phản hồi mà họ nhận được.

3.4 Thống kê suy diễn

3.4.1 Kiểm định tính độc lập cho hai biến

Để dễ dàng phân tích hơn ta chia biến “Dominant_Emotion” là trạng thái cảm xúc thành hai biểu hiện “Tích cực” và “Tiêu cực”

Trong đó:

  • Biểu hiện “Tích cực” gồm hai trạng thái là “Vui vẻ” và ” Trung tính”.

  • Biểu hiện “Tiêu cực” gồm các trạng thái là “Lo lắng”, “Tức giận”, “Buồn bã”, Chán nản”.

domi <- ifelse(d$Dominant_Emotion %in% c('Happiness', 'Neutral'), 'Tích cực', 'Tiêu cực')
table(domi)
## domi
## Tích cực Tiêu cực 
##       42       61

Để xác định xem các biến độc lập có ảnh hưởng đến biến phụ thuộc là trạng thái cảm xúc hay không ta sử dụng kiểm định Chi bình phương

3.4.1.1 Biến Dominant_Emotion và biến Age

Kiểm tra tính độc lập giữa độ tuổi và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Age độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Age không độc lập (phụ thuộc) với nhau.”

table(dage, domi)
##          domi
## dage      Tích cực Tiêu cực
##   21-25         23        9
##   25-30         10       37
##   Trên 30        9       15
chisq.test(table(dage, domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dage, domi)
## X-squared = 20.322, df = 2, p-value = 3.864e-05

Kết quả kiểm định cho thấy p- value = 3.864e-05 < 0,05 nên ta bác bỏ $ _0$. Điều này cho thấy độ tuổi có ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.2 Biến Dominant_Emotion và biến Gender

Kiểm tra tính độc lập giữa giới tính và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Gender độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Gender không độc lập (phụ thuộc) với nhau.”

table(d$Gender,domi)
##             domi
##              Tích cực Tiêu cực
##   Female           13       12
##   Male             16       32
##   Non-binary       13       17
chisq.test(table(d$Gender,domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(d$Gender, domi)
## X-squared = 2.4864, df = 2, p-value = 0.2885

Kết quả kiểm định cho thấy p- value = 0.2885 > 0,05 nên chưa đủ cơ sở bác bỏ H0. Điều này cho thấy giới tính không ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.3 Biến Dominant_Emotion và biến Platform

Kiểm tra tính độc lập giữa các nền tảng và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Platform độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Platform không độc lập (phụ thuộc) với nhau.”

table(d$Platform,domi)
##            domi
##             Tích cực Tiêu cực
##   Facebook        12       13
##   Instagram       14        2
##   LinkedIn         4       11
##   Snapchat         5        8
##   Telegram         4        7
##   Twitter          3       16
##   Whatsapp         0        4
chisq.test(table(d$Platform,domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(d$Platform, domi)
## X-squared = 24.025, df = 6, p-value = 0.0005169

Kết quả kiểm định cho thấy p- value = 0.0005169 < 0,05 nên ta bác bỏ H0. Điều này cho thấy các nền tảng có ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.4 Biến Dominant_Emotion và biến Daily_Usage_Time

Kiểm tra tính độc lập giữa thời gian sử dụng mạng xã hội và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Daily_Usage_Time độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Daily_Usage_Time không độc lập (phụ thuộc) với nhau.”

table(dtime, domi)
##             domi
## dtime        Tích cực Tiêu cực
##   Thấp              8       19
##   Trung bình       21       41
##   Cao              13        1
chisq.test(table(dtime, domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dtime, domi)
## X-squared = 18.338, df = 2, p-value = 0.0001042

Kết quả kiểm định cho thấy p- value = 0.0001042 < 0,05 nên ta bác bỏ H0. Điều này cho thấy thời gian sử dụng mạng xã hội hằng ngày có ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.5 Biến Dominant_Emotion và biến Posts_Per_Day

Kiểm tra tính độc lập giữa số lượng bài đăng mỗi ngày và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Posts_Per_Day độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Posts_Per_Day không độc lập (phụ thuộc) với nhau.”

table(dpos, domi)
##             domi
## dpos         Tích cực Tiêu cực
##   Thấp             22       50
##   Trung bình       11        8
##   Cao               9        3
chisq.test(table(dpos, domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dpos, domi)
## X-squared = 11.24, df = 2, p-value = 0.003624

Kết quả kiểm định cho thấy p- value = 0.003624 < 0,05 nên ta bác bỏ H0. Điều này cho thấy số lượng bài đăng mỗi ngày có ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.6 Biến Dominant_Emotion và biến Likes_Received_Per_Day

Kiểm tra tính độc lập giữa số lượt thích nhận được mỗi ngày và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Likes_Received_Per_Day độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Likes_Received_Per_Day không độc lập (phụ thuộc) với nhau.”

table(dlike, domi)
##             domi
## dlike        Tích cực Tiêu cực
##   Thấp             22       43
##   Trung bình       15       17
##   Cao               5        1
chisq.test(table(dlike, domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dlike, domi)
## X-squared = 6.2853, df = 2, p-value = 0.04317

Kết quả kiểm định cho thấy p- value = 0.04317 < 0,05 nên ta bác bỏ H0. Điều này cho thấy số lượt thích nhận được mỗi ngày có ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.7 Biến Dominant_Emotion và biến Comments_Received_Per_Day

Kiểm tra tính độc lập giữa số lượt bình luận nhận được mỗi ngày và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Comments_Received_Per_Day độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Comments_Received_Per_Day không độc lập (phụ thuộc) với nhau.”

table(dcom, domi)
##             domi
## dcom         Tích cực Tiêu cực
##   Thấp             15       31
##   Trung bình       17       28
##   Cao              10        2
chisq.test(table(dcom, domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dcom, domi)
## X-squared = 10.438, df = 2, p-value = 0.005413

Kết quả kiểm định cho thấy p- value = 0.005413 < 0,05 nên ta bác bỏ H0. Điều này cho thấy số lượt bình luận nhận được mỗi ngày có ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.1.8 Biến Dominant_Emotion và biến Messages_Sent_Per_Day

Kiểm tra tính độc lập giữa số tin nhắn được gửi mỗi ngày và trạng thái cảm xúc của người dùng mạng xã hội, ta đặt giả thuyết sau

\(\text{H}_0\): “Biến Dominant_Emotion và Messages_Sent_Per_Day độc lập với nhau.”

\(\text{H}_1\): “Biến Dominant_Emotion và Messages_Sent_Per_Day không độc lập (phụ thuộc) với nhau.”

table(dmes, domi)
##             domi
## dmes         Tích cực Tiêu cực
##   Thấp              4        5
##   Trung bình       25       45
##   Cao              13       11
chisq.test(table(dmes, domi))
## 
##  Pearson's Chi-squared test
## 
## data:  table(dmes, domi)
## X-squared = 2.5748, df = 2, p-value = 0.276

Kết quả kiểm định cho thấy p- value = 0.276 > 0,05 nên chưa đủ cơ sở bác bỏ H0. Điều này cho thấy số tin nhắn được gửi mỗi ngày không ảnh hưởng đến trạng thái cảm xúc của người dùng mạng xã hội.

3.4.2 Rủi ro tương đối (relative risk) và tỷ lệ chênh (Odd ratio)

Vì số lượng quan sát ít nên ta tiến hành mã hóa các biến sau thành biến nhị phân giúp việc phân tich, diễn giải và so sánh các kết quả trở nên dễ dàng hơn

Mã hóa biến Age thành hai biểu hiện “Trẻ” và “Trung niên”

Biến Age gồm 2 biểu hiện:

  • Trẻ là số lượng người dùng từ 21 tuổi tới 28 tuổi trong bộ dữ liệu.

  • Trung niên là số lượng người dùng trên 28 tuổi trong bộ dữ liệu.

dage2 <- cut(x = d$Age,
    breaks = c(0, 28, 35), 
    labels = c("Trẻ", "Trung niên"),
    right = TRUE) 
table(dage2)
## dage2
##        Trẻ Trung niên 
##         66         37

Mã hóa biến Daily_Usage_Time thành hai biểu hiện “Ít” và “Nhiều”

Biến Daily_Usage_Time gồm 2 biểu hiện:

  • Ít là số lượng người dùng dành thời gian từ 40-80 phút để sử dụng mạng xã hội.

  • Nhiều là số lượng người dùng dành thời gian từ trên 80 phút để sử dụng mạng xã hội.

dtime2 <- cut(x = d$`Daily_Usage_Time (minutes)`,
    breaks = c(0, 80, 200), 
    labels = c("Ít", "Nhiều"),
    right = TRUE) 
table(dtime2)
## dtime2
##    Ít Nhiều 
##    57    46

Mã hóa biến Posts_Per_Day thành hai biểu hiện “Ít” và “Nhiều”

Biến Posts_Per_Day gồm 2 biểu hiện:

  • Ít là số lượng bài đăng từ 1-2 bài trên mạng xã hội.

  • Nhiều là số lượng bài đăng từ trên 2 bài trên mạng xã hội.

dpos2 <- cut(x = d$Posts_Per_Day,
    breaks = c(0, 2, 8), 
    labels = c("Ít", "Nhiều"),
    right = TRUE) 
table(dpos2)
## dpos2
##    Ít Nhiều 
##    52    51

Mã hóa biến Likes_Received_Per_Day thành hai biểu hiện “Ít” và “Nhiều”

Biến Likes_Received_Per_Day gồm 2 biểu hiện:

  • Ít là số người dùng nhận được lượt thích mỗi ngày từ 0 đến 20 lượt thích

  • Nhiều là số người dùng nhận được lượt thích mỗi ngày từ trên 20 lượt thích

dlike2 <- cut(x = d$Likes_Received_Per_Day,
    breaks = c(0, 20, 110), 
    labels = c("Ít", "Nhiều"),
    right = TRUE) 
table(dlike2)
## dlike2
##    Ít Nhiều 
##    38    65

Mã hóa biến Comments_Received_Per_Day thành hai biểu hiện “Ít” và “Nhiều”

Biến Comments_Received_Per_Day gồm 2 biểu hiện:

  • Ít là số người dùng nhận được lượt bình luận mỗi ngày từ 0 đến 10 lượt bình luận.

  • Nhiều là số người dùng nhận được lượt bình luận mỗi ngày từ trên 10 lượt bình luận.

dcom2 <- cut(x = d$Comments_Received_Per_Day,
    breaks = c(0, 10, 40), 
    labels = c("Ít", "Nhiều"),
    right = TRUE) 
table(dcom2)
## dcom2
##    Ít Nhiều 
##    46    57

3.4.2.1 Tính rủi ro tương đối và tỷ lệ chênh giữa biến Age và biến Dominant_Emotion

  • Rủi ro tương đối
age2domi <-table(dage2,domi)
age2domi
##             domi
## dage2        Tích cực Tiêu cực
##   Trẻ              30       36
##   Trung niên       12       25
RelRisk(age2domi)
## [1] 1.401515

Tỷ lệ những người mang cảm xúc tích cực mà ở độ tuổi trẻ cao hơn tỷ lệ những người mang cảm xúc tích cực có độ tuổi trung niên khoảng 1.4 lần.

  • Tỷ lệ chênh
age2domi
##             domi
## dage2        Tích cực Tiêu cực
##   Trẻ              30       36
##   Trung niên       12       25
OddsRatio(age2domi)
## [1] 1.736111

Tỷ lệ để khả năng những người ở độ tuổi trẻ mang cảm xúc tích cực khi sử dụng mạng xã hội cao hơn những người ở độ tuổi trung niên có khả năng mang cảm xúc tích cực là 1.736111 lần

3.4.2.2 Tính rủi ro tương đối và tỷ lệ chênh giữa biến Posts_Per_Day và biến Dominant_Emotion

  • Rủi ro tương đối
pos2domi <-table(dpos2,domi)
pos2domi
##        domi
## dpos2   Tích cực Tiêu cực
##   Ít          16       36
##   Nhiều       26       25
RelRisk(pos2domi)
## [1] 0.6035503

Tỷ lệ những người mang cảm xúc tích cực mà có số lượng bài đăng trong một ngày ít thấp hơn tỷ lệ những người mang cảm xúc tích cực có số lượng bài đăng trong một ngày cao khoảng 0.6 lần.

  • Tỷ lệ chênh
pos2domi
##        domi
## dpos2   Tích cực Tiêu cực
##   Ít          16       36
##   Nhiều       26       25
OddsRatio(pos2domi)
## [1] 0.4273504

Tỷ lệ để khả năng những người có lượng bài đăng một ngày ít mang cảm xúc tích cực khi sử dụng mạng xã hội chỉ bằng 0.4273504 lần tỷ lệ những người có lượng bài đăng một ngày nhiều có khả năng mang cảm xúc tích cực.

3.4.2.3 Tính rủi ro tương đối và tỷ lệ chênh giữa biến Daily_Usage_Time và biến Dominant_Emotion

  • Rủi ro tương đối
time2domi <-table(dtime2,domi)
addmargins(time2domi)
##        domi
## dtime2  Tích cực Tiêu cực Sum
##   Ít          19       38  57
##   Nhiều       23       23  46
##   Sum         42       61 103
RelRisk(time2domi)
## [1] 0.6666667

Kết quả trên cho thấy tỷ lệ của những người dành ít thời gian sử dụng mạng xã hội mang cảm xúc tích cực bằng 0.6667 lần so với những người dành nhiều thời gian sử dụng mạng xã hội mang cảm xúc tích cực.

  • Tỷ lệ chênh
OddsRatio(time2domi)
## [1] 0.5

Tỷ lệ để khả năng những người dành ít thời gian sử dụng mạng xã hội mang cảm xúc tích cực chỉ bằng 0.5 lần những người dành nhiều thời gian để sử dụng mạng xã hội mang cảm xúc tích cực.

3.4.2.4 Tính rủi ro tương đối và tỷ lệ chênh giữa biến Likes_Received_Per_Day biến Dominant_Emotion

  • Rủi ro tương đối
like2domi <-table(dlike2,domi)
addmargins(like2domi)
##        domi
## dlike2  Tích cực Tiêu cực Sum
##   Ít          14       24  38
##   Nhiều       28       37  65
##   Sum         42       61 103
RelRisk(like2domi)
## [1] 0.8552632

Kết quả trên cho thấy tỷ lệ của những người nhận được ít lượt thích mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực bằng 0.8552632 lần so với những người nhận được nhiều lượt thích mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực.

  • Tỷ lệ chênh
OddsRatio(like2domi)
## [1] 0.7708333

Tỷ lệ để khả năng những người nhận được ít lượt thích mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực chỉ bằng 0.7708333 lần những những người nhận được nhiều lượt thích mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực.

3.4.2.5 Tính rủi ro tương đối và tỷ lệ chênh giữa biến Comments_Received_Per_Day biến Dominant_Emotion

  • Rủi ro tương đối
com2domi <-table(dcom2,domi)
addmargins(com2domi)
##        domi
## dcom2   Tích cực Tiêu cực Sum
##   Ít          15       31  46
##   Nhiều       27       30  57
##   Sum         42       61 103
RelRisk(com2domi)
## [1] 0.6884058

Kết quả trên cho thấy tỷ lệ của những người nhận được ít lượt bình luận mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực bằng 0.6884058 lần so với những người nhận được nhiều lượt bình luận mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực.

  • Tỷ lệ chênh
OddsRatio(com2domi)
## [1] 0.5376344

Tỷ lệ để khả năng những người nhận được ít lượt bình luận mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực chỉ bằng 0.5376344 lần những người nhận được nhiều lượt bình luận mỗi ngày khi dùng mạng xã hội mang cảm xúc tích cực.

3.4.3 Khoảng ước lượng cho RR

  • Khoảng ước lượng RR cho biến Age với biến Dominant_Emotion
m <- matrix(c(30, 36,
               12, 25),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c( "Trẻ", "Trung niên"),
                             c("Tích cực", "Tiêu cực")))
epitab(m, method = 'riskratio', rev = 'c')
## $tab
##            Tiêu cực        p0 Tích cực        p1 riskratio    lower    upper
## Trẻ              36 0.5454545       30 0.4545455 1.0000000       NA       NA
## Trung niên       25 0.6756757       12 0.3243243 0.7135135 0.417915 1.218194
##             p.value
## Trẻ              NA
## Trung niên 0.216819
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả trên cho thấy những người mang cảm xúc tích cực ở độ tuổi trẻ là 45.45% còn những người mang cảm xúc tích cực ở tuổi trung niên là 32.43%. Tỷ lệ relative risk là khoảng 0.71, điều này có thể hiểu là nhóm người ở độ tuổi trung niên mang cảm xúc tích cực chỉ bằng 0.71 lần so với nhóm người trẻ. Khoảng ước lượng của relative risk là 0.417915 đến 1.218194 với mức độ tin cậy 95% và p-value là 0.216819 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm tuổi là không quá cao.

  • Khoảng ước lượng RR cho biến Posts_Per_Day với biến Dominant_Emotion
u <- matrix(c(16, 36,
               26, 25),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c( "Ít", "Nhiều"),
                             c("Tích cực", "Tiêu cực")))
epitab(u, method = 'riskratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 riskratio    lower    upper
## Ít          36 0.6923077       16 0.3076923  1.000000       NA       NA
## Nhiều       25 0.4901961       26 0.5098039  1.656863 1.016551 2.700499
##          p.value
## Ít            NA
## Nhiều 0.04587995
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả trên cho thấy người mang cảm xúc tích cực có số lượng bài đăng một ngày ít là 30.77% còn người mang cảm xúc tích cực có số lượng bài đăng một ngày nhiều là 50.98%. Tỷ lệ relative risk là khoảng 1.65, điều này có thể hiểu là nhóm người ở có lượng bài đăng trong 1 ngày nhiều mà mang cảm xúc tích cực bằng 1.65 lần so với nhóm người có lượng bài đăng ít. Khoảng ước lượng của relative risk là 1.016551 đến 2.700499 với mức độ tin cậy 95% và p-value là 0.0458 cho thấy sự khác biệt nhiều về cảm xúc giữa 2 nhóm có lượng bài đăng ít và nhiều trong một ngày.

  • Khoảng ước lượng cho RR cho biến Daily_Usage_Time với biến Dominant_Emotion
n <- matrix(c(19, 38,
               23, 23),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c( "Ít", "Nhiều"),
                             c("Tích cực", "Tiêu cực")))
epitab(n, method = 'riskratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 riskratio     lower    upper
## Ít          38 0.6666667       19 0.3333333       1.0        NA       NA
## Nhiều       23 0.5000000       23 0.5000000       1.5 0.9401098 2.393337
##         p.value
## Ít           NA
## Nhiều 0.1080323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả trên cho thấy những người mang cảm xúc tích cực dành ít thời gian để sử dụng mạng xã hội là 33.33%, những người mang cảm xúc tích cực dành nhiều thời gian để sử dụng mạng xã hội là 50%. Tỷ lệ relative risk là khoảng 1.5, điều này thể hiện rằng nhóm người mang cảm xúc tích cực dành nhiều thời gian để sử dụng mạng xã hội cao hơn 1.5 lần so với nhóm người dành ít thời gian để sử dụng mạng xã hội. Khoảng ước lượng của relative risk là 0.9401098 đến 2.393337 với mức độ tin cậy 95% và p-value là 0.1080323 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm người dành thời gian sử dụng mạng xã hội là không đáng kể.

  • Khoảng ước lượng RR cho biến Likes_Received_Per_Day với biến Dominant_Emotion
p <- matrix(c(14, 24,
               28, 37),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c( "Ít", "Nhiều"),
                             c("Tích cực", "Tiêu cực")))
epitab(p, method = 'riskratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 riskratio     lower    upper
## Ít          24 0.6315789       14 0.3684211  1.000000        NA       NA
## Nhiều       37 0.5692308       28 0.4307692  1.169231 0.7081874 1.930422
##         p.value
## Ít           NA
## Nhiều 0.6780721
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả trên cho thấy những người mang cảm xúc tích cực nhận được ít lượt thích mỗi ngày khi sử dụng mạng xã hội là 36.84%, những người mang cảm xúc tích cực nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội là 43.08%. Tỷ lệ relative risk là khoảng 1.17, điều này thể hiện rằng nhóm người mang cảm xúc tích cực nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội cao hơn 1.17 lần so với nhóm nhận được ít lượt thích mỗi ngày khi sử dụng mạng xã hội. Khoảng ước lượng của relative risk là 0.7081874 đến 1.930422 với mức độ tin cậy 95% và p-value là 0.6780721 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm người nhận được số lượt thích khi sử dụng mạng xã hội là không đáng kể.

  • Khoảng ước lượng RR cho biến Comments_Received_Per_Day với biến Dominant_Emotion
q <- matrix(c(15, 31,
               27, 30),
             nrow = 2,
             byrow = TRUE,
             dimnames = list(c( "Ít", "Nhiều"),
                             c("Tích cực", "Tiêu cực")))
epitab(q, method = 'riskratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 riskratio     lower    upper
## Ít          31 0.6739130       15 0.3260870  1.000000        NA       NA
## Nhiều       30 0.5263158       27 0.4736842  1.452632 0.8833036 2.388916
##         p.value
## Ít           NA
## Nhiều 0.1597417
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả trên cho thấy những người mang cảm xúc tích cực nhận được ít lượt bình luận mỗi ngày khi sử dụng mạng xã hội là 32.61%, những người mang cảm xúc tích cực nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội là 47.37%. Tỷ lệ relative risk là khoảng 1.45, điều này thể hiện rằng nhóm người mang cảm xúc tích cực nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội cao hơn 1.45 lần so với nhóm nhận được ít lượt bình luận mỗi ngày khi sử dụng mạng xã hội. Khoảng ước lượng của relative risk là 0.8833036 đến 2.388916 với mức độ tin cậy 95% và p-value là 0.1597417 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm người nhận được số lượt bình luận khi sử dụng mạng xã hội là không đáng kể.

3.4.4 Khoảng uớc lượng cho Odd

  • Khoảng ước lượng Odd cho biến Age với biến Dominant_Emotion
epitab(m, method = 'oddsratio',rev = 'c')
## $tab
##            Tiêu cực        p0 Tích cực        p1 oddsratio     lower    upper
## Trẻ              36 0.5901639       30 0.7142857     1.000        NA       NA
## Trung niên       25 0.4098361       12 0.2857143     0.576 0.2482316 1.336559
##             p.value
## Trẻ              NA
## Trung niên 0.216819
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả tỷ lệ Odds Ratio là khoảng 0.576, điều này có thể hiểu là nhóm người trung niên có khả năng mang cảm xúc tích cực chỉ bằng 0.576 lần so với nhóm người trẻ có khả năng mang cảm xúc tích cực. Khoảng ước lượng của Odds Ratio là từ 0.2482316 đến 1.336559 với mức độ tin cậy 95% và p-value là 0.216819 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm tuổi là không quá cao.

  • Khoảng ước lượng Odd cho biến Posts_Per_Day với biến Dominant_Emotion
epitab(u , method = 'oddsratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 oddsratio    lower    upper
## Ít          36 0.5901639       16 0.3809524      1.00       NA       NA
## Nhiều       25 0.4098361       26 0.6190476      2.34 1.046069 5.234455
##          p.value
## Ít            NA
## Nhiều 0.04587995
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả tỷ lệ Odds Ratio là 2.34, điều này có thể hiểu là nhóm người sở hữu lượng bài đăng trong ngày nhiều có khả năng mang cảm xúc tích cực gấp 2.34 lần so với nhóm người sở hữu lượng bài đăng trong ngày ít có khả năng mang cảm xúc tích cực. Khoảng ước lượng của Odds Ratio là từ 1.046069 đến 5.234455 với mức độ tin cậy 95% và p-value là 0.0458 cho thấy sự khác biệt khá cao về cảm xúc giữa 2 nhóm có lượng bài đăng trong một ngày ít và nhiều.

  • Khoảng ước lượng Odd cho biến Daily_Usage_Time với biến Dominant_Emotion
epitab(n, method = 'oddsratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực       p1 oddsratio   lower    upper   p.value
## Ít          38 0.6229508       19 0.452381         1      NA       NA        NA
## Nhiều       23 0.3770492       23 0.547619         2 0.90017 4.443605 0.1080323
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả tỷ lệ Odds Ratio là khoảng 2, điều này có thể hiểu là nhóm người dành nhiều thời gian sử dụng mạng xã hội có khả năng mang cảm xúc tích cực gấp 2 lần so với nhóm người dành ít thời gian sử dụng mạng xã hội có khả năng mang cảm xúc tích cực. Khoảng ước lượng của Odds Ratio là từ 0.90017 đến 4.443605 với mức độ tin cậy 95% và p-value là 0.1080323 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm tuổi là không quá cao.

  • Khoảng ước lượng Odd cho biến Likes_Received_Per_Day với biến Dominant_Emotion
epitab(p, method = 'oddsratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 oddsratio     lower    upper
## Ít          24 0.3934426       14 0.3333333  1.000000        NA       NA
## Nhiều       37 0.6065574       28 0.6666667  1.297297 0.5703038 2.951024
##         p.value
## Ít           NA
## Nhiều 0.6780721
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả tỷ lệ Odds Ratio là khoảng 1.2973, điều này có thể hiểu là nhóm người nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội có khả năng mang cảm xúc tích cực gấp 1.2973 lần so với nhóm người nhận được ít lượt thích mỗi ngày khi sử dụng mạng xã hội có khả năng mang cảm xúc tích cực. Khoảng ước lượng của Odds Ratio là từ 0.5703038 đến 2.951024 với mức độ tin cậy 95% và p-value là 0.6780721 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm người nhận được số thích mỗi ngày là không quá cao.

  • Khoảng ước lượng Odd cho biến Comments_Received_Per_Day với biến Dominant_Emotion
epitab(q, method = 'oddsratio', rev = 'c')
## $tab
##       Tiêu cực        p0 Tích cực        p1 oddsratio     lower    upper
## Ít          31 0.5081967       15 0.3571429      1.00        NA       NA
## Nhiều       30 0.4918033       27 0.6428571      1.86 0.8303897 4.166237
##         p.value
## Ít           NA
## Nhiều 0.1597417
## 
## $measure
## [1] "wald"
## 
## $conf.level
## [1] 0.95
## 
## $pvalue
## [1] "fisher.exact"

Kết quả tỷ lệ Odds Ratio là khoảng 1.86, điều này có thể hiểu là nhóm người nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội có khả năng mang cảm xúc tích cực gấp 1.86 lần so với nhóm người nhận được ít lượt bình luận mỗi ngày khi sử dụng mạng xã hội có khả năng mang cảm xúc tích cực. Khoảng ước lượng của Odds Ratio là từ 0.8303897 đến 4.166237 với mức độ tin cậy 95% và p-value là 0.1597417 cho thấy sự chênh lệch về cảm xúc giữa 2 nhóm người nhận được số bình luận mỗi ngày là không quá cao.

3.4.5 Khoảng ước lượng tỷ lệ

3.4.5.1 Ước lượng tỷ lệ một tổng thể

  • Ước lượng tỷ lệ cho biến Age

Ước lượng tỷ lệ người ở độ tuổi trung niên (trên 28 tuổi) sử dụng mạng xã hội đồng thời kiểm định xem tỷ lệ (%) người ở độ tuổi trung niên có phải là 50% hay không, ta kiểm định giả thuyết \(\text{H}_0\):p = 0.5

tmp <- d[d$Age > 28,]
prop.test(length(tmp$Age), length(d$Age), p = 0.5)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tmp$Age) out of length(d$Age), null probability 0.5
## X-squared = 7.6117, df = 1, p-value = 0.005799
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.2687559 0.4603338
## sample estimates:
##         p 
## 0.3592233

Kết quả kiểm định cho thấy giá trị p-value là 0.005799, nhỏ hơn giá trị \(\alpha=0.05\). Điều này cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ người có độ tuổi trên 28 tuổi là 50%.

Kết quả cũng cho thấy tỷ lệ người có độ tuổi trung niên khoảng 35.92%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 26.87% đến 46.03%.

  • Ước lượng tỷ lệ cho biến Platform

Ước lượng tỷ lệ người sử dụng mạng xã hội Facebook đồng thời kiểm định xem tỷ lệ (%) người sử dụng mạng xã hội Facebook có phải là 50% hay không, ta kiểm định giả thuyết \(H_0:p=0.5\)

tmp5 <- d[d$Platform  == 'Facebook',]
prop.test(length(tmp5$Platform), length(d$Platform), p = 0.5)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tmp5$Platform) out of length(d$Platform), null probability 0.5
## X-squared = 26.252, df = 1, p-value = 2.996e-07
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.1660064 0.3389898
## sample estimates:
##         p 
## 0.2427184

Kết quả kiểm định cho thấy giá trị p-value là 2.996e-07, nhỏ hơn giá trị \(\alpha=0.05\). Điều này cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ người sử dụng mạng xã hội Facebook là 50%.

Kết quả cũng cho thấy tỷ lệ người sử dụng mạng xã hội Facebook là khoảng 24.27%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 16.60% đến 33.90%.

  • Ước lượng tỷ lệ cho biến Posts_Per_Day

Ước lượng tỷ lệ người sử dụng mạng xã hội có lượng bài đăng ít hơn 2 bài trong ngày đồng thời kiểm định xem tỷ lệ (%) người sử dụng mạng xã hội đăng ít hơn 2 bài trong ngày có phải là 10% hay không, ta kiểm định giả thuyết \(H_0:p=0.1\)

tmp6 <- d[d$Posts_Per_Day < 2,]
prop.test(length(tmp6$Posts_Per_Day), length(d$Posts_Per_Day), p = 0.1)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tmp6$Posts_Per_Day) out of length(d$Posts_Per_Day), null probability 0.1
## X-squared = 28.311, df = 1, p-value = 1.033e-07
## alternative hypothesis: true p is not equal to 0.1
## 95 percent confidence interval:
##  0.1826617 0.3596697
## sample estimates:
##         p 
## 0.2621359

Kết quả kiểm định cho thấy giá trị p-value là 1.033e-07, nhỏ hơn giá trị \(\alpha=0.05\). Điều này cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ người sử dụng mạng xã hội đăng ít hơn 2 bài đăng trong 1 ngày là 10%.

Kết quả cũng cho thấy tỷ lệ người sử dụng mạng xã hội đăng ít hơn 2 bài đăng trong 1 ngày là khoảng 26.21%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 18.27% đến 35.97%.

  • Ước lượng tỷ lệ cho biến Daily_Usage_Time

Ước lượng tỷ lệ những người dành thời gian trên 80 phút để sử dụng mạng xã hội đồng thời kiểm định xem tỷ lệ (%) những người dành thời gian trên 80 phút để sử dụng mạng xã hội có phải là 70% hay không, ta kiểm định giả thuyết \(\text{H}_0\):p = 0.7

tmp2 <- d[d$`Daily_Usage_Time (minutes)` > 80,]
prop.test(length(tmp2$`Daily_Usage_Time (minutes)`), length(d$`Daily_Usage_Time (minutes)`), p = 0.7)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tmp2$`Daily_Usage_Time (minutes)`) out of length(d$`Daily_Usage_Time (minutes)`), null probability 0.7
## X-squared = 30.299, df = 1, p-value = 3.704e-08
## alternative hypothesis: true p is not equal to 0.7
## 95 percent confidence interval:
##  0.3496557 0.5475786
## sample estimates:
##         p 
## 0.4466019

Kết quả kiểm định cho thấy giá trị p-value là 3.704e-08 < \(\alpha=0.05\), cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ những người dành thời gian trên 80 phút để sử dụng mạng xã hội là 70%.

Kết quả cũng cho thấy tỷ lệ những người dành thời gian trên 80 phút để sử dụng mạng xã hội khoảng 44.66%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 34.97% đến 54.76%.

  • Ước lượng tỷ lệ cho biến Likes_Received_Per_Day

Ước lượng tỷ lệ những người nhận được lượt thích mỗi ngày trên 50 lượt khi sử dụng mạng xã hội đồng thời kiểm định xem tỷ lệ (%) những người nhận được lượt thích mỗi ngày trên 50 lượt khi sử dụng mạng xã hội có phải là 50% hay không, ta kiểm định giả thuyết \(\text{H}_0\):p = 0.5

tmp3 <- d[d$Likes_Received_Per_Day > 50,]
prop.test(length(tmp3$Likes_Received_Per_Day), length(d$Likes_Received_Per_Day), p = 0.5)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tmp3$Likes_Received_Per_Day) out of length(d$Likes_Received_Per_Day), null probability 0.5
## X-squared = 50.33, df = 1, p-value = 1.299e-12
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.08649237 0.23200404
## sample estimates:
##         p 
## 0.1456311

Kết quả kiểm định cho thấy giá trị p-value là 1.299e-12 < \(\alpha=0.05\), cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ những người nhận được lượt thích mỗi ngày trên 50 lượt khi sử dụng mạng xã hội là 50%.

Kết quả cũng cho thấy tỷ lệ những người nhận được lượt thích mỗi ngày trên 50 lượt khi sử dụng mạng xã hội khoảng 14.56%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 8.65% đến 23.2%.

  • Ước lượng tỷ lệ cho biến Comments_Received_Per_Day

Ước lượng tỷ lệ những người nhận được lượt bình luận mỗi ngày trên 30 lượt khi sử dụng mạng xã hội đồng thời kiểm định xem tỷ lệ (%) những người nhận được lượt bình luận mỗi ngày trên 30 lượt khi sử dụng mạng xã hội có phải là 50% hay không, ta kiểm định giả thuyết \(\text{H}_0\):p = 0.5

tmp4 <- d[d$Comments_Received_Per_Day > 30,]
prop.test(length(tmp4$Comments_Received_Per_Day), length(d$Comments_Received_Per_Day), p = 0.5)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tmp4$Comments_Received_Per_Day) out of length(d$Comments_Received_Per_Day), null probability 0.5
## X-squared = 93.243, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.003370381 0.075200743
## sample estimates:
##          p 
## 0.01941748

Kết quả kiểm định cho thấy giá trị p-value là 2.2e-16 < \(\alpha=0.05\), cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ những người nhận được lượt bình luận mỗi ngày trên 30 lượt khi sử dụng mạng xã hội là 50%.

Kết quả cũng cho thấy tỷ lệ những người nhận được lượt bình luận mỗi ngày trên 30 lượt khi sử dụng mạng xã hội khoảng 1.94%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 0.34% đến 7.52%.

3.4.5.2 Ước lượng tỷ lệ hai tổng thể

  • Ước lượng tỷ lệ cho biến Age và biến Dominant_Emotion

Ước lượng tỷ lệ nhóm người ở độ tuổi trung niên mang cảm xúc tiêu cực đồng thời kiểm định xem tỷ lệ (%) nhóm người ở độ tuổi trung niên mang cảm xúc tiêu cực có phải là 60% hay không, nghĩa là kiểm định giả thuyết \(\text{H}_0\):p = 0.6

d2 <-d
d2$Age <- dage2
d2$Dominant_Emotion <- domi
age1 <- table(d2[d2$Age == 'Trung niên', ]$Dominant_Emotion)
prop.test(age1["Tiêu cực"], sum(age1), p = 0.6)
## 
##  1-sample proportions test with continuity correction
## 
## data:  age1["Tiêu cực"] out of sum(age1), null probability 0.6
## X-squared = 0.59572, df = 1, p-value = 0.4402
## alternative hypothesis: true p is not equal to 0.6
## 95 percent confidence interval:
##  0.5010545 0.8144488
## sample estimates:
##         p 
## 0.6756757

Kết quả kiểm định cho thấy giá trị p-value là 0.4402, lớn hơn giá trị \(\alpha=0.05\). Điều này cho thấy không có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ nhóm người ở độ tuổi trung niên mang cảm xúc tiêu cực là 60%.

Kết quả cũng cho thấy tỷ lệ nhóm người có độ tuổi trung niên mang cảm xúc tiêu cực khoảng 67.56%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 50.10% đến 81.44%.

  • Ước lượng tỷ lệ cho biến Posts_Per_Day và biến Dominant_Emotion

Ước lượng tỷ lệ nhóm người có lượng bài đăng ít mang cảm xúc tích cực đồng thời kiểm định xem tỷ lệ (%) nhóm người có lượng bài đăng ít mang cảm xúc tích cực có phải là 35% hay không, nghĩa là kiểm định giả thuyết \(H_0:p=0.35\)

d2$Posts_Per_Day <- dpos2
d2$Dominant_Emotion <- domi
pos1 <- table(d2[d2$Posts_Per_Day == 'Ít', ]$Dominant_Emotion)
prop.test(pos1["Tích cực"], sum(pos1), p = 0.35)
## 
##  1-sample proportions test with continuity correction
## 
## data:  pos1["Tích cực"] out of sum(pos1), null probability 0.35
## X-squared = 0.24429, df = 1, p-value = 0.6211
## alternative hypothesis: true p is not equal to 0.35
## 95 percent confidence interval:
##  0.1911945 0.4525946
## sample estimates:
##         p 
## 0.3076923

Kết quả kiểm định cho thấy giá trị p-value là 0.6211, lớn hơn giá trị \(\alpha=0.05\). Điều này cho thấy không có đủ bằng chứng để bác bỏ giả thuyết \(H_0\) rằng tỷ lệ nhóm người có lượng đăng bài ít mang cảm xúc tích cực là 35%.

Kết quả cũng cho thấy tỷ lệ nhóm người có lượng đăng bài ít mang cảm xúc tích cực khoảng 30.77%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 19.12% đến 45.26%.

  • Ước lượng tỷ lệ cho biến Daily_Usage_Time và biến Dominant_Emotion

Ước lượng tỷ lệ những người dành nhiều thời gian để sử dụng mạng xã hội mang cảm xúc tiêu cực đồng thời kiểm định xem tỷ lệ (%) những người dành nhiều thời gian để sử dụng mạng xã hội mang cảm xúc tiêu cực có phải là 30% hay không, nghĩa là kiểm định giả thuyết \(\text{H}_0\):p = 0.3

d2$`Daily_Usage_Time (minutes)` <- dtime2
d2$Dominant_Emotion <- domi
time1 <- table(d2[d2$`Daily_Usage_Time (minutes)` == 'Nhiều', ]$Dominant_Emotion)
prop.test(time1["Tiêu cực"], sum(time1), p = 0.3)
## 
##  1-sample proportions test with continuity correction
## 
## data:  time1["Tiêu cực"] out of sum(time1), null probability 0.3
## X-squared = 7.8354, df = 1, p-value = 0.005123
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
##  0.3511878 0.6488122
## sample estimates:
##   p 
## 0.5

Kết quả kiểm định cho thấy giá trị p-value là 0.005123 < giá trị \(\alpha=0.05\), cho thấy có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ những người dành nhiều thời gian để sử dụng mạng xã hội mang cảm xúc tiêu cực là 30%.

Kết quả cũng cho thấy tỷ lệ những người dành nhiều thời gian để sử dụng mạng xã hội mang cảm xúc tiêu cực khoảng 50%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 35.12% đến 64.88%.

  • Ước lượng tỷ lệ cho biến Likes_Received_Per_Day và biến Dominant_Emotion

Ước lượng tỷ lệ những người nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực đồng thời kiểm định xem tỷ lệ (%) những người nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực có phải là 50% hay không, nghĩa là kiểm định giả thuyết \(\text{H}_0\):p = 0.5

d2$Likes_Received_Per_Day <- dlike2
like1 <- table(d2[d2$Likes_Received_Per_Day == 'Nhiều', ]$Dominant_Emotion)
prop.test(like1["Tiêu cực"], sum(like1), p = 0.5)
## 
##  1-sample proportions test with continuity correction
## 
## data:  like1["Tiêu cực"] out of sum(like1), null probability 0.5
## X-squared = 0.98462, df = 1, p-value = 0.3211
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
##  0.4408405 0.6894152
## sample estimates:
##         p 
## 0.5692308

Kết quả kiểm định cho thấy giá trị p-value là 0.3211 > giá trị \(\alpha=0.05\), cho thấy chưa có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ những người nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực là 50%.

Kết quả cũng cho thấy tỷ lệ những người nhận được nhiều lượt thích mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực khoảng 57%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 44.08% đến 68.94%.

  • Ước lượng tỷ lệ cho biến Comments_Received_Per_Day và biến Dominant_Emotion

Ước lượng tỷ lệ những người nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực đồng thời kiểm định xem tỷ lệ (%) những người nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực có phải là 40% hay không, nghĩa là kiểm định giả thuyết \(\text{H}_0\):p = 0.4

d2$Comments_Received_Per_Day <- dcom2
com1 <- table(d2[d2$Comments_Received_Per_Day == 'Nhiều', ]$Dominant_Emotion)
prop.test(com1["Tiêu cực"], sum(like1), p = 0.4)
## 
##  1-sample proportions test with continuity correction
## 
## data:  com1["Tiêu cực"] out of sum(like1), null probability 0.4
## X-squared = 0.78526, df = 1, p-value = 0.3755
## alternative hypothesis: true p is not equal to 0.4
## 95 percent confidence interval:
##  0.3387859 0.5888481
## sample estimates:
##         p 
## 0.4615385

Kết quả kiểm định cho thấy giá trị p-value là 0.3755 > giá trị \(\alpha=0.05\), cho thấy chưa có đủ bằng chứng để bác bỏ giả thuyết \(\text{H}_0\) rằng tỷ lệ những người nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực là 40%.

Kết quả cũng cho thấy tỷ lệ những người nhận được nhiều lượt bình luận mỗi ngày khi sử dụng mạng xã hội mang cảm xúc tiêu cực khoảng 46.15%. Khoảng ước lượng tỷ lệ ở độ tin cây 95% thuộc khoảng từ 33.88% đến 58.88%.

3.5 Mô hình hồi quy

3.5.1 Mô hình xác suất tuyến tính cho dữ liệu nhị phân

3.5.1.1 Biến Age và Dominant_Emotion

Biến phụ thuộc là cảm xúc chủ đạo (Domninant_Emotion) được mã hoá lại thành biến nhị phân với giá trị 1 biểu thị cho cảm xúc tích cực và giá trị 0 biểu thị cho cảm xúc tiêu cực. Biến độc lập là tuổi của người sử dụng mạng xã hội trong bộ dữ liệu

L2 <- d %>% select(Dominant_Emotion, Age)
L2$Dominant_Emotion <- domi
L2 <- L2 %>% mutate(Dominant_EmotionC = if_else(Dominant_Emotion == 'Tích cực',1,0))
emoagemod1 <- glm(Dominant_EmotionC ~ Age, data = L2)
summary(emoagemod1)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age, data = L2)
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.47997    0.35844   4.129 7.52e-05 ***
## Age         -0.03918    0.01298  -3.017  0.00323 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.2259132)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 22.817  on 101  degrees of freedom
## AIC: 143.06
## 
## Number of Fisher Scoring iterations: 2

Từ kết quả trên ta xây dựng được mô hình xác suất tuyến tính sau:

\[\hat{\pi}=1.47997-0.03918 \text{ x Age}\]

  • \(\beta_0=1.47997\) cho biết xác suất để một người mang cảm xúc tích cực là 1.47997 khi biến tuổi là không và p-value = 7.52e-05 là rất nhỏ nên hệ số chặn có ý nghĩa thống kê.

  • \(\beta_1=-0.03918\) cho biết khi tuổi tăng lên 1 đơn vị, xác suất để một người mang cảm xúc tích cực giảm 0.03918 đơn vị và p-value = 0.00323 chỉ ra rằng ảnh hưởng của tuổi đến cảm xúc chủ đạo của người dùng là có ý nghĩa thống kê.

Mô hình này chỉ ra rằng tuổi tác có mối liên hệ nghịch biến với Dominant_EmotionC. Khi tuổi tăng, giá trị dự đoán của Dominant_EmotionC giảm. Điều này có ý nghĩa thống kê mạnh mẽ với mức ý nghĩa 1%.

3.5.1.2 Biến Posts_Per_Day và Dominant_Emotion

L5 <- d %>% select(Dominant_Emotion,Posts_Per_Day)
L5$Dominant_Emotion <- domi
L5 <- L5 %>% mutate(Dominant_EmotionC = if_else(Dominant_Emotion == 'Tích cực',1,0))
emoposmod1 <- glm(Dominant_EmotionC ~ Posts_Per_Day, data = L5)
summary(emoposmod1)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Posts_Per_Day, data = L5)
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)    0.15786    0.09027   1.749  0.08337 . 
## Posts_Per_Day  0.08726    0.02700   3.231  0.00166 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.2232009)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 22.543  on 101  degrees of freedom
## AIC: 141.81
## 
## Number of Fisher Scoring iterations: 2

Từ kết quả trên ta xây dựng được mô hình xác suất tuyến tính sau: \[\hat{\pi}=0.15786+0.08726 \text{ x Posts_Per_Day}\]

Ý nghĩa hệ số:

\(\beta_0=0.15786\) cho biết xác suất để một người mang cảm xúc tích cực là 0.15786 khi không có biến ảnh hưởng bởi yếu tố lượng bài đăng trong 1 ngày và p-value = 0.08337 là tương đối cao nên hệ số chặn không có ý nghĩa thống kê.

\(\beta_1=0.08726\) cho biết khi số lượng bài đăng tăng lên 1 bài, xác suất để một người mang cảm xúc tích cực tăng 0.08726 đơn vị và p-value = 0.00166 chỉ ra rằng ảnh hưởng của số lượng bài đăng trong 1 ngày đến cảm xúc chủ đạo của người dùng là có ý nghĩa thống kê.

Mô hình này chỉ ra rằng số lượng bài đăng một ngày có mối liên hệ đồng biến với Dominant_EmotionC. Khi số lượng bài đăng trong ngày tăng, giá trị dự đoán của Dominant_EmotionC tăng tức là xác suất người đó mang cảm xúc tích cực tăng. Điều này có ý nghĩa thống kê mạnh mẽ với mức ý nghĩa 1%.

3.5.1.3 Biến Daily_Usage_Time và biến Dominant_Emotion

Biến phụ thuộc là cảm xúc chủ đạo (Dominant_Emotion) được mã hóa lại thành biến nhị phân với giá trị 1 biểu thị cho cảm xúc tích cực và 0 biểu thị cho cảm xúc tiêu cực. Biến độc lập là thời gian mà người dùng dành ra để sử dụng mạng xã hội hàng ngày (Daily_Usage_Time (minutes)) được tính bằng phút.

L1 <- d %>% select(Dominant_Emotion, `Daily_Usage_Time (minutes)`)
L1 <- rename(L1, DailyUsageTime = `Daily_Usage_Time (minutes)`)
L1$Dominant_Emotion <- domi
L1 <- L1 %>% mutate(Dominant_EmotionC = if_else(Dominant_Emotion =='Tích cực',1,0))
emotimemod1 <- glm(Dominant_EmotionC ~ DailyUsageTime, data = L1)
summary(emotimemod1)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ DailyUsageTime, data = L1)
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -0.024627   0.128314  -0.192 0.848185    
## DailyUsageTime  0.004913   0.001361   3.610 0.000479 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.2181302)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 22.031  on 101  degrees of freedom
## AIC: 139.45
## 
## Number of Fisher Scoring iterations: 2

Từ kết quả trên ta xây dựng được mô hình xác suất tuyến tính sau:

\[\hat{\pi}=-0.024627+0.004913 \text{ x Daily_Usage_Time} \]

  • Hệ số chặn \(\beta_0=-0.024627\) và p-value = 0.848185, lớn hơn rất nhiều so với các mức ý nghĩa 1%, 5%, và 10%. Điều này cho thấy không thể kết luận được ảnh hưởng của hệ số chặn trong mô hình.

  • Hệ số của biến thời gian sử dụng mạng xã hội (\(\beta_1= 0.004913\)) có ý nghĩa thống kê cao với p-value = 0.000479, cho thấy rằng mỗi phút tăng thêm trong thời gian sử dụng mạng xã hội dẫn đến sự gia tăng xác suất có cảm xúc tích cực là 0.004913 (khoảng 0.49%). Điều này xác nhận rằng có một mối quan hệ tuyến tính dương giữa thời gian sử dụng mạng xã hội và cảm xúc tích cực của người dùng.

Mô hình cho thấy rằng mặc dù hệ số chặn không có ý nghĩa thống kê và có giá trị âm, nhưng kết quả cho thấy mối quan hệ giữa thời gian sử dụng mạng xã hội và cảm xúc tích cực là có ý nghĩa và rõ ràng.

3.5.1.4 Biến Likes_Received_Per_Day và biến Dominant_Emotion

Biến phụ thuộc là cảm xúc chủ đạo (Dominant_Emotion) được mã hóa lại thành biến nhị phân với giá trị 1 biểu thị cho cảm xúc tích cực và 0 biểu thị cho cảm xúc tiêu cực. Biến độc lập là số lượt thích mà người dùng nhận được mỗi ngày khi sử dụng mạng xã hội (Likes_Received_Per_Day).

L3 <- d %>% select(Dominant_Emotion, Likes_Received_Per_Day)
L3$Dominant_Emotion <- domi
L3 <- L3 %>% mutate(Dominant_EmotionC = if_else(Dominant_Emotion =='Tích cực',1,0))
emolikemod1 <- glm(Dominant_EmotionC ~ Likes_Received_Per_Day, data = L3)
summary(emolikemod1)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Likes_Received_Per_Day, data = L3)
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)   
## (Intercept)            0.185262   0.082254   2.252  0.02647 * 
## Likes_Received_Per_Day 0.006651   0.002028   3.279  0.00143 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.2225808)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 22.481  on 101  degrees of freedom
## AIC: 141.53
## 
## Number of Fisher Scoring iterations: 2

Từ kết quả trên ta xây dựng được mô hình xác suất tuyến tính sau:

\[\hat{\pi}=0.185262+0.006651 \text{ x Likes Received Per Day} \]

  • Hệ số chặn \(\beta_0=0.1852627\) nghĩa là khi số lượt thích nhận được mỗi ngày bằng 0, xác suất để một người có cảm xúc tích cực là 0.185262. Với p-value = 0.02647 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê, cho thấy rằng ngay cả khi không nhận được lượt thích nào, xác suất để có cảm xúc tích cực vẫn tồn tại và đáng kể.

  • Hệ số của biến thời gian sử dụng mạng xã hội (\(\beta_1= 0.004913\)) nghĩa là khi số lượt thích nhận được mỗi ngày tăng thêm một đơn vị, xác suất để một người có cảm xúc tích cực sẽ tăng thêm 0.006651. Hệ số này có ý nghĩa thống kê cao với p-value = 0.00143 (nhỏ hơn mức ý nghĩa 1%), cho thấy rằng số lượt thích nhận được có ảnh hưởng đáng kể đến xác suất để người dùng có cảm xúc tích cực.

3.5.1.5 Biến Comments_Received_Per_Day và biến Dominant_Emotion

Biến phụ thuộc là cảm xúc chủ đạo (Dominant_Emotion) được mã hóa lại thành biến nhị phân với giá trị 1 biểu thị cho cảm xúc tích cực và 0 biểu thị cho cảm xúc tiêu cực. Biến độc lập là số lượt bình luận mà người dùng nhận được mỗi ngày khi sử dụng mạng xã hội (Comments_Received_Per_Day).

L4 <- d %>% select(Dominant_Emotion, Comments_Received_Per_Day)
L4$Dominant_Emotion <- domi
L4 <- L4 %>% mutate(Dominant_EmotionC = if_else(Dominant_Emotion =='Tích cực',1,0))
emocommod1 <- glm(Dominant_EmotionC ~ Comments_Received_Per_Day, data = L4)
summary(emocommod1)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Comments_Received_Per_Day, 
##     data = L4)
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)  
## (Intercept)               0.225451   0.094398   2.388   0.0188 *
## Comments_Received_Per_Day 0.013243   0.005916   2.239   0.0274 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.2346336)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 23.698  on 101  degrees of freedom
## AIC: 146.96
## 
## Number of Fisher Scoring iterations: 2

Từ kết quả trên ta xây dựng được mô hình xác suất tuyến tính sau:

\[\hat{\pi}=0.225451+0.013243 \text{ x Comments Received Per Day} \]

  • Hệ số chặn \(\beta_0=0.225451\) nghĩa là khi số lượt bình luận nhận được mỗi ngày bằng 0, xác suất để một người có cảm xúc tích cực là 0.225451. Với p-value = 0.0188 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê, cho thấy rằng ngay cả khi không nhận được bình luận nào, xác suất để có cảm xúc tích cực vẫn tồn tại và đáng kể.

  • Hệ số của biến thời gian sử dụng mạng xã hội (\(\beta_1= 0.013243\)) nghĩa là khi số lượt bình luận nhận được mỗi ngày tăng thêm một đơn vị, xác suất để một người có cảm xúc tích cực sẽ tăng thêm 0.013243. Hệ số này có ý nghĩa thống kê với p-value = 0.0274 (nhỏ hơn mức ý nghĩa 0.05), cho thấy rằng số lượt bình luận nhận được có ảnh hưởng đáng kể đến xác suất để người dùng có cảm xúc tích cực.

3.5.2 Mô hình hồi quy logit

3.5.2.1 Biến Age và Dominant_Emotion

emoagemod2 <- glm(Dominant_EmotionC ~ Age, data = L2, family = binomial(link = 'logit')) 
summary(emoagemod2)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age, family = binomial(link = "logit"), 
##     data = L2)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)   
## (Intercept)  4.38045    1.68507   2.600  0.00933 **
## Age         -0.17505    0.06204  -2.822  0.00478 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 130.41  on 101  degrees of freedom
## AIC: 134.41
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình hồi quy logit sau:

\[ln(\frac{\hat\pi} {1-\hat\pi})=4.380-0.175 \text{ x Age}\]

  • \(\beta_0=4.380\):cho biết giá trị logit là 4.380 khi biến tuổi bằng 0, điều này cho biết xác suất để một người mang cảm xúc tích cực là rất cao khi biến Age = 0.

  • \(\beta_1=-0.175\):cho biết mỗi tuổi tăng thêm sẽ làm giảm logit của Dominant_EmotionC 0.175 đơn vị, điều này tương đương với việc giảm xác suất một người mang cảm xúc tích cực khi số tuổi tăng lên.

Mô hình hồi quy logit này cho thấy rằng tuổi tác có mối liên hệ nghịch biến với xác suất của Dominant_EmotionC. Khi tuổi tăng, xác suất một người mang cảm xúc tích cực giảm. Điều này được thể hiện rõ ràng qua hệ số âm của biến Age. Mô hình có thể cho biết xác suất để một người có số tuổi bao nhiêu thì có thể mang cảm xúc tiêu cực.

3.5.2.2 Biến Posts_Per_Day và Dominant_Emotion

emoposmod2 <- glm(Dominant_EmotionC ~ Posts_Per_Day, data = L5, family = binomial(link = 'logit')) 
emoposmod2
## 
## Call:  glm(formula = Dominant_EmotionC ~ Posts_Per_Day, family = binomial(link = "logit"), 
##     data = L5)
## 
## Coefficients:
##   (Intercept)  Posts_Per_Day  
##       -1.4786         0.3786  
## 
## Degrees of Freedom: 102 Total (i.e. Null);  101 Residual
## Null Deviance:       139.3 
## Residual Deviance: 129.5     AIC: 133.5

Từ kết quả trên ta xây dựng được mô hình hồi quy logit sau:

\[ln(\frac{\hat\pi} {1-\hat\pi})=-1.4786+0.3786 \text{ x Posts_Per_Day}\]

Ý nghĩa hệ số:

\(\beta_0=-1.4786\):cho biết giá trị logit là -1.4786 khi biến lượng bài đăng trong 1 ngày bằng 0, điều này không có ý nghĩa vì xác suất để một người mang cảm xúc tích cực chỉ lớn hơn hoặc bằng 0.

\(\beta_1=0.3786\):cho biết mỗi một bài đăng trong 1 ngày tăng thêm sẽ làm tăng logit của Dominant_EmotionC 0.3786 đơn vị, điều này tương đương với việc xác suất một người mang cảm xúc tích cực tăng lên khi người đó có hành động tăng thêm số lượng bài đăng trong một ngày.

Mô hình hồi quy logit này cho thấy rằng số lượng bài đăng một ngày có mối liên hệ đồng biến với xác suất của Dominant_EmotionC. Khi số lượng bài đăng trong một ngày của người sử dụng mạng xã hội tăng, xác suất người đó mang cảm xúc tích cực tăng. Điều này được thể hiện rõ ràng qua hệ số dương của biến Posts_Per_Day. Mô hình có thể cho biết xác suất để một người có số lượng bài đăng trong một ngày bao nhiêu thì có thể mang cảm xúc tích cực.

3.5.2.3 Biến Daily_Usage_Time và biến Dominant_Emotion

L1$Dominant_Emotion <- factor(L1$Dominant_Emotion, levels = c('Tích cực','Tiêu cực'))
emotimemod2 <- glm(Dominant_Emotion ~ DailyUsageTime, data = L1, family = binomial(link = 'logit'))
summary(emotimemod2)
## 
## Call:
## glm(formula = Dominant_Emotion ~ DailyUsageTime, family = binomial(link = "logit"), 
##     data = L1)
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     2.327028   0.643302   3.617 0.000298 ***
## DailyUsageTime -0.021998   0.006865  -3.204 0.001354 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 127.17  on 101  degrees of freedom
## AIC: 131.17
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình logit sau:

\[ln(\frac{\hat\pi} {1-\hat\pi})=2.3270-0.0220 \text{ x DailyUsageTime}\]

  • \(\beta_0=2.3270\) có nghĩa là khi thời gian sử dụng mạng xã hội bằng 0 (tức là không sử dụng mạng xã hội), mô hình dự đoán rằng xác suất để một người có cảm xúc tích cực là rất cao.

  • \(\beta_1=-0.0220\) có nghĩa là mỗi khi thời gian sử dụng mạng xã hội tăng lên 1 đơn vị, xác suất để một người có cảm xúc tích cực sẽ giảm đi 0.0220 đơn vị.

Mô hình cho thấy rằng khi người dùng dành nhiều thời gian hơn trên mạng xã hội, xác suất để họ có cảm xúc tích cực sẽ giảm đi. Ngược lại, khi không dành nhiều thời gian trên mạng xã hội, xác suất này được dự đoán là rất cao. Cả hai hệ số đều có ý nghĩa thống kê, cho thấy rằng thời gian sử dụng mạng xã hội ảnh hưởng đáng kể đến cảm xúc chủ đạo của người dùng.

3.5.2.4 Biến Likes_Received_Per_Day và Dominant_Emotion

L3$Dominant_Emotion <- factor(L3$Dominant_Emotion, levels = c('Tích cực','Tiêu cực'))
emolikemod2 <- glm(Dominant_Emotion ~ Likes_Received_Per_Day, data = L3, family = binomial(link = 'logit'))
summary(emolikemod2)
## 
## Call:
## glm(formula = Dominant_Emotion ~ Likes_Received_Per_Day, family = binomial(link = "logit"), 
##     data = L3)
## 
## Coefficients:
##                         Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             1.362247   0.391979   3.475  0.00051 ***
## Likes_Received_Per_Day -0.029215   0.009896  -2.952  0.00316 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 129.19  on 101  degrees of freedom
## AIC: 133.19
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình logit sau:

\[ln(\frac{\hat\pi} {1-\hat\pi})=1.362247-0.029215 \text{ x Likes_Received_Per_Day}\]

  • \(\beta_0=1.362247\) cho biết rằng khi số lượt thích nhận được mỗi ngày bằng 0, logit của xác suất để một người có cảm xúc tích cực là 1.362247. Với p-value = 0.00051 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê. Điều này chỉ ra rằng khi không nhận được lượt thích nào, xác suất để có cảm xúc tích cực vẫn khá cao.

  • \(\beta_1=-0.029215\) có nghĩa là khi số lượt thích nhận được mỗi ngày tăng thêm một đơn vị, logit của xác suất để một người có cảm xúc tích cực sẽ giảm đi 0.029215 đơn vị. Với p-value = 0.00316 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê, cho thấy rằng số lượt thích nhận được có ảnh hưởng đáng kể đến xác suất để người dùng có cảm xúc tích cực. Cụ thể, khi số lượt thích tăng lên, xác suất để người dùng có cảm xúc tích cực giảm đi, điều này có thể được hiểu là mỗi lượt thích thêm sẽ làm giảm nhẹ khả năng cảm xúc tích cực của người dùng.

Mô hình hồi quy logit này chỉ ra rằng số lượt thích mà người dùng nhận được mỗi ngày có tác động đáng kể đến xác suất để họ có cảm xúc tích cực. Cụ thể, khi số lượt thích tăng lên, xác suất để người dùng có cảm xúc tích cực giảm đi. Hệ số chặn cho thấy rằng ngay cả khi không có lượt thích nào, xác suất để có cảm xúc tích cực vẫn cao. Các hệ số ước lượng đều có ý nghĩa thống kê, cho thấy rằng kết quả này có độ tin cậy cao.

3.5.2.5 Biến Comments_Received_Per_Day và Dominant_Emotion

L4$Dominant_Emotion <- factor(L4$Dominant_Emotion, levels = c('Tích cực','Tiêu cực'))
emocommod2 <- glm(Dominant_Emotion ~ Comments_Received_Per_Day, data = L4, family = binomial(link = 'logit'))
summary(emocommod2)
## 
## Call:
## glm(formula = Dominant_Emotion ~ Comments_Received_Per_Day, family = binomial(link = "logit"), 
##     data = L4)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)   
## (Intercept)                1.15370    0.41941   2.751  0.00595 **
## Comments_Received_Per_Day -0.05576    0.02588  -2.155  0.03120 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 134.38  on 101  degrees of freedom
## AIC: 138.38
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình logit sau:

\[ln(\frac{\hat\pi} {1-\hat\pi})=1.15370-0.05576 \text{ x Comments_Received_Per_Day}\]

  • \(\beta_0=1.15370\) cho biết rằng khi số lượt bình luận nhận được mỗi ngày bằng 0, logit của xác suất để một người có cảm xúc tích cực là 1.15370. Với p-value = 0.00595 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê. Điều này chỉ ra rằng khi không nhận được bình luận nào, xác suất để có cảm xúc tích cực vẫn khá cao.

  • \(\beta_1=-0.05576\) cho biết rằng khi số lượt bình luận nhận được mỗi ngày tăng thêm một đơn vị, logit của xác suất để một người có cảm xúc tích cực sẽ giảm đi 0.05576 đơn vị. Với p-value = 0.03120 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê, cho thấy rằng số lượt bình luận nhận được có ảnh hưởng đáng kể đến xác suất để người dùng có cảm xúc tích cực. Cụ thể, khi số lượt bình luận tăng lên, xác suất để người dùng có cảm xúc tích cực giảm đi, điều này có thể được hiểu là mỗi bình luận thêm sẽ làm giảm nhẹ khả năng cảm xúc tích cực của người dùng.

Mô hình hồi quy logit này chỉ ra rằng số lượt bình luận mà người dùng nhận được mỗi ngày có tác động đáng kể đến xác suất để họ có cảm xúc tích cực. Cụ thể, khi số lượt bình luận tăng lên, xác suất để người dùng có cảm xúc tích cực giảm đi. Hệ số chặn cho thấy rằng ngay cả khi không có bình luận nào, xác suất để có cảm xúc tích cực vẫn cao. Các hệ số ước lượng đều có ý nghĩa thống kê, cho thấy rằng kết quả này có độ tin cậy cao.

3.5.3 Mô hình hồi quy probit

3.5.3.1 Biến Age và Dominant_Emotion

emoagemod3 <- glm(Dominant_EmotionC ~ Age, data = L2, family = binomial(link = 'probit'))
summary(emoagemod3)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age, family = binomial(link = "probit"), 
##     data = L2)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)   
## (Intercept)  2.67626    1.01030   2.649  0.00807 **
## Age         -0.10684    0.03697  -2.890  0.00385 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 130.47  on 101  degrees of freedom
## AIC: 134.47
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình hồi quy probit sau:

\[\hat{\pi}=\Phi(2.6763-0.1068 \text{ × Age})\]

  • \(\beta_0=2.6764\):cho biết giá trị probit là 2.6764 khi biến tuổi bằng 0, điều này cho biết xác suất để một người mang cảm xúc tích cực là rất cao khi biến Age = 0.

  • \(\beta_1=-0.1068\):cho biết mỗi tuổi tăng thêm sẽ làm giảm probit của Dominant_EmotionC 0.1068 đơn vị, điều này tương đương với việc giảm xác suất một người mang cảm xúc tích cực khi số tuổi tăng lên.

Mô hình hồi quy probit này cho thấy rằng tuổi tác có mối liên hệ nghịch biến với xác suất của Dominant_EmotionC. Khi tuổi tăng, xác suất để người đó mang cảm xúc tích cực giảm. Điều này được thể hiện rõ ràng qua hệ số âm của biến Age. Mô hình có thể cho biết xác suất để một người mang cảm xúc tích cực khi tuổi bằng bao nhiêu.

3.5.3.2 Biến Posts_Per_Day và Dominant_Emotion

emoposmod3 <- glm(Dominant_EmotionC ~ Posts_Per_Day, data = L5, family = binomial(link = 'probit'))
emoposmod3
## 
## Call:  glm(formula = Dominant_EmotionC ~ Posts_Per_Day, family = binomial(link = "probit"), 
##     data = L5)
## 
## Coefficients:
##   (Intercept)  Posts_Per_Day  
##       -0.8995         0.2294  
## 
## Degrees of Freedom: 102 Total (i.e. Null);  101 Residual
## Null Deviance:       139.3 
## Residual Deviance: 129.6     AIC: 133.6

Từ kết quả trên ta xây dựng được mô hình hồi quy probit sau:

\[\hat{\pi}=\Phi(-0.8995+ 0.2294 \text{ × Posts_Per_Day})\] Ý nghĩa hệ số:

\(\beta_0=-0.8995\):cho biết giá trị probit là -0.8995 khi biến số lượng bài đăng trong ngày bằng 0,điều này không có ý nghĩa vì xác suất để một người mang cảm xúc tích cực chỉ lớn hơn hoặc bằng 0.

\(\beta_1=0.2294\):cho biết mỗi tuổi bài đăng trong ngày tăng thêm sẽ làm tăng probit của Dominant_EmotionC 0.2294 đơn vị, điều này tương đương với việc tăng xác suất một người mang cảm xúc tích cực khi số lượng bài đăng trong ngày tăng lên.

Mô hình hồi quy probit này cho thấy rằng số lượng bài đăng trong ngày có mối liên hệ đồng biến với xác suất của Dominant_EmotionC. Khi lượng bài đăng trong ngày tăng, xác suất để người đó mang cảm xúc tích cực tăng. Điều này được thể hiện rõ ràng qua hệ số dương của biến Posts_Per_Day. Mô hình có thể cho biết xác suất để một người mang cảm xúc tích cực khi số lượng bài đăng trong ngày bằng bao nhiêu.

3.5.3.3 Biến Daily_Usage_Time và biến Dominant_Emotion

emotimemod3 <- glm(Dominant_Emotion ~ DailyUsageTime, data = L1, family = binomial(link = 'probit'))
summary(emotimemod3)
## 
## Call:
## glm(formula = Dominant_Emotion ~ DailyUsageTime, family = binomial(link = "probit"), 
##     data = L1)
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     1.39189    0.37724   3.690 0.000225 ***
## DailyUsageTime -0.01310    0.00402  -3.257 0.001124 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 127.40  on 101  degrees of freedom
## AIC: 131.4
## 
## Number of Fisher Scoring iterations: 5

Từ kết quả trên ta xây dựng được mô hình hồi quy probit sau:

\[\hat{\pi}=\Phi(1.39189-0.01310 \text{ × DailyUsageTime})\]

  • \(\beta_0=1.39189\) có nghĩa là khi thời gian sử dụng mạng xã hội bằng 0 (tức là không sử dụng mạng xã hội), mô hình dự đoán rằng xác suất để một người có cảm xúc tích cực là rất cao với \(\Phi(1.39189)\)

  • \(\beta_1=-0.01310\) có nghĩa là mỗi khi thời gian sử dụng mạng xã hội tăng lên 1 đơn vị, xác suất để một người có cảm xúc tích cực sẽ giảm đi \(\Phi(0.01310)\) đơn vị.

Mô hình hồi quy probit này cho thấy rằng thời gian sử dụng mạng xã hội có ảnh hưởng đáng kể đến xác suất để có cảm xúc tích cực của người dùng và cả hai hệ số đều có giá trị p-value rất thấp (dưới mức ý nghĩa 1%), cho thấy chúng có ảnh hưởng đáng kể đến mô hình.

3.5.3.4 Biến Likes_Received_Per_Day và biến Dominant_Emotion

emolikemod3 <- glm(Dominant_Emotion ~ Likes_Received_Per_Day, data = L3, family = binomial(link = 'probit'))
summary(emolikemod3)
## 
## Call:
## glm(formula = Dominant_Emotion ~ Likes_Received_Per_Day, family = binomial(link = "probit"), 
##     data = L3)
## 
## Coefficients:
##                         Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             0.828399   0.233804   3.543 0.000395 ***
## Likes_Received_Per_Day -0.017690   0.005856  -3.021 0.002522 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 129.31  on 101  degrees of freedom
## AIC: 133.31
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình hồi quy probit sau:

\[\hat{\pi}=\Phi(0.828399-0.017690 \text{ × Likes_Received_Per_Day})\]

  • \(\beta_0=0.828399\) cho biết rằng khi số lượt thích nhận được mỗi ngày bằng 0, giá trị của hàm probit là 0.828399. Với p-value = 0.000395 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê cao. Điều này chỉ ra rằng khi không nhận được lượt thích nào, xác suất để có cảm xúc tích cực vẫn tương đối cao với \(\Phi(0.828399)\)

  • \(\beta_1=-0.017690\) cho biết rằng khi số lượt thích nhận được mỗi ngày tăng thêm một đơn vị, giá trị của hàm probit sẽ giảm đi 0.017690 đơn vị. Với p-value = 0.002522 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê, cho thấy rằng số lượt thích nhận được có ảnh hưởng đáng kể đến xác suất để người dùng có cảm xúc tích cực.

Mô hình hồi quy probit này chỉ ra rằng số lượt thích mà người dùng nhận được mỗi ngày có tác động đáng kể đến xác suất để họ có cảm xúc tích cực. Cụ thể, khi số lượt thích tăng lên, xác suất để người dùng có cảm xúc tích cực giảm đi. Hệ số chặn cho thấy rằng ngay cả khi không có lượt thích nào, xác suất để có cảm xúc tích cực vẫn cao. Các hệ số ước lượng đều có ý nghĩa thống kê, cho thấy rằng kết quả này có độ tin cậy cao.

3.5.3.5 Biến Comments_Received_Per_Day và biến Dominant_Emotion

emocommod3 <- glm(Dominant_Emotion ~ Comments_Received_Per_Day, data = L4, family = binomial(link = 'probit'))
summary(emocommod3)
## 
## Call:
## glm(formula = Dominant_Emotion ~ Comments_Received_Per_Day, family = binomial(link = "probit"), 
##     data = L4)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)   
## (Intercept)                0.70966    0.25475   2.786  0.00534 **
## Comments_Received_Per_Day -0.03417    0.01582  -2.160  0.03078 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 134.42  on 101  degrees of freedom
## AIC: 138.42
## 
## Number of Fisher Scoring iterations: 4

Từ kết quả trên ta xây dựng được mô hình hồi quy probit sau:

\[\hat{\pi}=\Phi(0.70966-0.03417 \text{ × Comments_Received_Per_Day})\]

  • \(\beta_0=0.70966\) cho biết rằng khi số lượt bình luận nhận được mỗi ngày bằng 0, giá trị của hàm probit là 0.70966. Với p-value = 0.00534 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê cao. Điều này chỉ ra rằng khi không nhận được bình luận nào, xác suất để có cảm xúc tích cực vẫn tương đối cao với \(\Phi(0.70966)\)

  • \(\beta_1=-0.03417\) cho biết rằng khi số lượt bình luận nhận được mỗi ngày tăng thêm một đơn vị, giá trị của hàm probit sẽ giảm đi 0.03417 đơn vị. Với p-value = 0.03078 (nhỏ hơn mức ý nghĩa 0.05), hệ số này có ý nghĩa thống kê, cho thấy rằng số lượt bình luận nhận được có ảnh hưởng đáng kể đến xác suất để người dùng có cảm xúc tích cực.

Mô hình hồi quy probit này chỉ ra rằng số lượt bình luận mà người dùng nhận được mỗi ngày có tác động đáng kể đến xác suất để họ có cảm xúc tích cực. Cụ thể, khi số lượt bình luận tăng lên, xác suất để người dùng có cảm xúc tích cực giảm đi. Hệ số chặn cho thấy rằng ngay cả khi không có bình luận nào, xác suất để có cảm xúc tích cực vẫn cao. Các hệ số ước lượng đều có ý nghĩa thống kê, cho thấy rằng kết quả này có độ tin cậy cao.

3.6 Hồi quy đa biến

3.6.1 Hồi quy đa biến với mô hình LPM

exp <- d
exp$Dominant_Emotion <- domi
exp$Platform = as.factor(exp$Platform)
exp <- rename(exp, DailyUsageTime = `Daily_Usage_Time (minutes)`)
exp <- exp %>% mutate(Dominant_EmotionC = if_else(Dominant_Emotion == 'Tích cực',1,0))
mul <- glm(Dominant_EmotionC ~ Age + DailyUsageTime +  Likes_Received_Per_Day  + Posts_Per_Day + Comments_Received_Per_Day  , data = exp)
summary(mul)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age + DailyUsageTime + Likes_Received_Per_Day + 
##     Posts_Per_Day + Comments_Received_Per_Day, data = exp)
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                1.107911   0.358492   3.090  0.00261 ** 
## Age                       -0.041205   0.011979  -3.440  0.00086 ***
## DailyUsageTime             0.006598   0.003296   2.002  0.04812 *  
## Likes_Received_Per_Day     0.010312   0.006933   1.487  0.14016    
## Posts_Per_Day              0.101050   0.075896   1.331  0.18617    
## Comments_Received_Per_Day -0.057201   0.018100  -3.160  0.00210 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.1810574)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 17.563  on  97  degrees of freedom
## AIC: 124.1
## 
## Number of Fisher Scoring iterations: 2

Vì biến Likes_Received_Per_Day và biến Posts_Per_Day không có ý nghĩa trong mô hình hồi quy bội được xây dựng, ta có thể loại bỏ từng biến này để xem xét và xây dựng lại mô hình hồi quy bội.

mul1 <- glm(Dominant_EmotionC ~ Age + DailyUsageTime +  Likes_Received_Per_Day  + Comments_Received_Per_Day  , data = exp)
summary(mul1)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age + DailyUsageTime + Likes_Received_Per_Day + 
##     Comments_Received_Per_Day, data = exp)
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                1.215277   0.350679   3.465 0.000787 ***
## Age                       -0.044635   0.011745  -3.800 0.000251 ***
## DailyUsageTime             0.006747   0.003307   2.040 0.044027 *  
## Likes_Received_Per_Day     0.013204   0.006610   1.998 0.048530 *  
## Comments_Received_Per_Day -0.045141   0.015732  -2.869 0.005038 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for gaussian family taken to be 0.182485)
## 
##     Null deviance: 24.874  on 102  degrees of freedom
## Residual deviance: 17.884  on  98  degrees of freedom
## AIC: 123.96
## 
## Number of Fisher Scoring iterations: 2

Khi bỏ biến có ý p_value lớn nhât là Posts_Per_Day thì các biến còn lại trong mô hình đều có ý nghĩa thống kê, vậy ta có phương trình:

\[\hat{\pi}=1.215277-0.044635 \text{ Age} + 0.006747\text{ Daily_Usage_Time}+0.013204\text{ Likes_Received_Per_Day}- 0.013204\text{Comments_Received_Per_Day})\]

Kết quả của mô hình hồi quy đa biến trên chỉ ra các yếu tố ảnh hưởng đến cảm xúc tích cực của người dùng mạng xã hội:

  • Tuổi (Age) có mối quan hệ nghịch với xác suất cảm xúc tích cực. Cứ mỗi năm tuổi tăng thêm, xác suất có cảm xúc tích cực giảm khoảng 4.46%. Điều này có ý nghĩa thống kê cao (p-value < 0.001).

  • Thời gian sử dụng hàng ngày (Daily_Usage_Time) có mối quan hệ thuận với xác suất cảm xúc tích cực. Cứ mỗi phút sử dụng hàng ngày tăng thêm, xác suất có cảm xúc tích cực tăng khoảng 0.67%. Điều này có ý nghĩa thống kê (p-value < 0.05).

  • Số lượng thích nhận được mỗi ngày (Likes_Received_Per_Day) cũng có mối quan hệ thuận với xác suất cảm xúc tích cực. Cứ mỗi lượt thích nhận được tăng thêm, xác suất có cảm xúc tích cực tăng khoảng 1.32%. Điều này có ý nghĩa thống kê (p-value < 0.05).

  • Số lượng bình luận nhận được mỗi ngày (Comments_Received_Per_Day) có mối quan hệ nghịch với xác suất cảm xúc tích cực. Cứ mỗi bình luận nhận được tăng thêm, xác suất có cảm xúc tích cực giảm khoảng 4.51%. Điều này có ý nghĩa thống kê cao (p-value < 0.01).

3.6.2 Hồi quy đa biến với mô hình Logistic

mul2 <- glm(Dominant_EmotionC ~ Age + DailyUsageTime +  Likes_Received_Per_Day + Comments_Received_Per_Day  , data = exp, family = binomial(link = "logit"))
summary(mul2)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age + DailyUsageTime + Likes_Received_Per_Day + 
##     Comments_Received_Per_Day, family = binomial(link = "logit"), 
##     data = exp)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                4.79808    2.11748   2.266 0.023455 *  
## Age                       -0.28137    0.08257  -3.408 0.000655 ***
## DailyUsageTime             0.03778    0.01842   2.051 0.040310 *  
## Likes_Received_Per_Day     0.09403    0.04384   2.145 0.031967 *  
## Comments_Received_Per_Day -0.29292    0.11278  -2.597 0.009396 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 104.45  on  98  degrees of freedom
## AIC: 114.45
## 
## Number of Fisher Scoring iterations: 5

Từ kết quả trên ta có phương trình sau:

\[ln(\frac{\hat\pi} {1-\hat\pi})=4.79808 -0.28137 \times \text{Age} + 0.03778 \times \text{Daily_Usage_Time} + 0.09403 \times \text{Likes_Received_Per_Day} - 0.27143 \times -0.29292 \text{Comments_Received_Per_Day}\]

Kết quả từ mô hình cho thấy:

  • Tuổi (Age) có mối quan hệ nghịch với xác suất cảm xúc tích cực. Cứ mỗi năm tuổi tăng thêm, xác suất có cảm xúc tích cực giảm khoảng 28.14%. Điều này có ý nghĩa thống kê cao (p-value < 0.001).

  • Thời gian sử dụng hàng ngày (Daily_Usage_Time) có mối quan hệ thuận với xác suất cảm xúc tích cực. Cứ mỗi phút sử dụng hàng ngày tăng thêm, xác suất có cảm xúc tích cực tăng khoảng 3.78%. Điều này có ý nghĩa thống kê (p-value < 0.05).

  • Số lượng thích nhận được mỗi ngày (Likes_Received_Per_Day) cũng có mối quan hệ thuận với xác suất cảm xúc tích cực. Cứ mỗi lượt thích nhận được tăng thêm, xác suất có cảm xúc tích cực tăng khoảng 9.40%. Điều này có ý nghĩa thống kê (p-value < 0.05).

  • Số lượng bình luận nhận được mỗi ngày (Comments_Received_Per_Day) có mối quan hệ nghịch với xác suất cảm xúc tích cực. Cứ mỗi bình luận nhận được tăng thêm, xác suất có cảm xúc tích cực giảm khoảng 29.29%. Điều này có ý nghĩa thống kê (p-value < 0.01).

3.6.3 Hồi quy đa biến với mô hình Probit

mul3 <- glm(Dominant_EmotionC ~ Age + DailyUsageTime +  Likes_Received_Per_Day + Comments_Received_Per_Day , data = exp, family = binomial(link = "probit"))
summary(mul3)
## 
## Call:
## glm(formula = Dominant_EmotionC ~ Age + DailyUsageTime + Likes_Received_Per_Day + 
##     Comments_Received_Per_Day, family = binomial(link = "probit"), 
##     data = exp)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                2.68721    1.21731   2.207 0.027279 *  
## Age                       -0.15959    0.04523  -3.528 0.000419 ***
## DailyUsageTime             0.02292    0.01089   2.105 0.035254 *  
## Likes_Received_Per_Day     0.04999    0.02441   2.048 0.040589 *  
## Comments_Received_Per_Day -0.16679    0.06217  -2.683 0.007301 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 139.26  on 102  degrees of freedom
## Residual deviance: 104.96  on  98  degrees of freedom
## AIC: 114.96
## 
## Number of Fisher Scoring iterations: 5

Từ kết quả trên ta có phương trình sau:

\[\hat{\pi}=\Phi(2.68721 -0.15959 \times \text{Age} + 0.02292 \times \text{Daily_Usage_Time} + 0.04999 \times \text{Likes_Received_Per_Day} -0.16679 \times \text{Comments_Received_Per_Day} - 0.11420\]

Các kết quả mô hình cho thấy:

  • Tuổi (Age) có mối quan hệ nghịch với xác suất cảm xúc tích cực. Cứ mỗi năm tuổi tăng thêm, xác suất có cảm xúc tích cực giảm khoảng 15.96%. Điều này có ý nghĩa thống kê cao (p-value < 0.001).

  • Thời gian sử dụng hàng ngày (Daily_Usage_Time) có mối quan hệ thuận với xác suất cảm xúc tích cực. Cứ mỗi phút sử dụng hàng ngày tăng thêm, xác suất có cảm xúc tích cực tăng khoảng 2.29%. Điều này có ý nghĩa thống kê (p-value < 0.05).

  • Số lượng thích nhận được mỗi ngày (Likes_Received_Per_Day) cũng có mối quan hệ thuận với xác suất cảm xúc tích cực. Cứ mỗi lượt thích nhận được tăng thêm, xác suất có cảm xúc tích cực tăng khoảng 4.99%. Điều này có ý nghĩa thống kê (p-value < 0.05).

  • Số lượng bình luận nhận được mỗi ngày (Comments_Received_Per_Day) có mối quan hệ nghịch với xác suất cảm xúc tích cực. Cứ mỗi bình luận nhận được tăng thêm, xác suất có cảm xúc tích cực giảm khoảng 16.68%. Điều này có ý nghĩa thống kê (p-value < 0.01).

3.7 Hồi quy với dữ liệu định danh

library(VGAM) 

draft <- social_media

draft <- rename(draft, Daily = `Daily_Usage_Time (minutes)`)

draft <- rename(draft, Post = Posts_Per_Day )

draft <- rename(draft, Like = Likes_Received_Per_Day)

draft <- rename(draft, Com = Comments_Received_Per_Day)

draft$Dominant_Emotion <- as.factor(d$Dominant_Emotion) 
draft$Dominant_Emotion <- relevel(draft$Dominant_Emotion, ref = "Neutral")

fit <- vglm(Dominant_Emotion ~ Age
            + Platform
            + Daily
            + Post
            + Like
            + Com, 
            data = draft, 
            family = multinomial()) 
summary(fit)
## 
## Call:
## vglm(formula = Dominant_Emotion ~ Age + Platform + Daily + Post + 
##     Like + Com, family = multinomial(), data = draft)
## 
## Coefficients: 
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept):1        5.512e+00  4.043e+00   1.364 0.172723    
## (Intercept):2       -3.205e+01  2.563e+03      NA       NA    
## (Intercept):3       -4.674e+00  5.005e+00  -0.934 0.350410    
## (Intercept):4       -9.581e+00  5.838e+00  -1.641 0.100780    
## (Intercept):5       -1.119e+01  2.644e+03      NA       NA    
## Age:1               -2.464e-01  1.372e-01  -1.796 0.072536 .  
## Age:2                2.210e-01  3.009e-01   0.735 0.462566    
## Age:3                1.640e-02  1.703e-01   0.096 0.923280    
## Age:4                5.098e-01  2.475e-01   2.060 0.039397 *  
## Age:5               -4.888e-01  2.651e-01  -1.844 0.065187 .  
## PlatformInstagram:1  1.022e+01  3.189e+03   0.003 0.997442    
## PlatformInstagram:2  3.595e+01  4.091e+03   0.009 0.992990    
## PlatformInstagram:3 -1.554e+01  3.189e+03  -0.005 0.996112    
## PlatformInstagram:4  5.673e+00  7.770e+03   0.001 0.999417    
## PlatformInstagram:5  3.585e+01  4.142e+03      NA       NA    
## PlatformLinkedIn:1   1.739e+01  2.329e+03      NA       NA    
## PlatformLinkedIn:2   1.937e+01  4.839e+03   0.004 0.996805    
## PlatformLinkedIn:3   2.130e+01  2.329e+03   0.009 0.992703    
## PlatformLinkedIn:4   1.757e+01  2.329e+03   0.008 0.993982    
## PlatformLinkedIn:5   1.972e+01  5.237e+03   0.004 0.996995    
## PlatformSnapchat:1  -2.115e+00  1.243e+00  -1.701 0.088868 .  
## PlatformSnapchat:2   1.464e+00  4.637e+03   0.000 0.999748    
## PlatformSnapchat:3  -7.994e-01  2.086e+00  -0.383 0.701618    
## PlatformSnapchat:4  -1.869e+01  3.016e+03      NA       NA    
## PlatformSnapchat:5   1.683e+01  2.644e+03   0.006 0.994920    
## PlatformTelegram:1  -1.634e+00  1.629e+00  -1.003 0.315774    
## PlatformTelegram:2   2.085e+01  2.563e+03   0.008 0.993510    
## PlatformTelegram:3  -9.790e+00  3.305e+00  -2.962 0.003052 ** 
## PlatformTelegram:4  -2.079e+00  2.780e+00  -0.748 0.454710    
## PlatformTelegram:5   1.725e-01  5.050e+03   0.000 0.999973    
## PlatformTwitter:1   -3.601e+00  1.724e+00  -2.088 0.036778 *  
## PlatformTwitter:2    2.103e+01  2.563e+03   0.008 0.993456    
## PlatformTwitter:3   -6.281e+00  2.243e+00  -2.801 0.005099 ** 
## PlatformTwitter:4   -4.730e-01  2.329e+00  -0.203 0.839105    
## PlatformTwitter:5    1.638e+01  2.644e+03   0.006 0.995056    
## PlatformWhatsapp:1  -3.375e+00  1.987e+04   0.000 0.999864    
## PlatformWhatsapp:2   4.306e+01  9.470e+03      NA       NA    
## PlatformWhatsapp:3   2.161e+01  9.116e+03   0.002 0.998109    
## PlatformWhatsapp:4   1.822e+00  1.847e+04   0.000 0.999921    
## PlatformWhatsapp:5   1.741e+01  1.798e+04   0.001 0.999227    
## Daily:1              2.486e-02  3.977e-02   0.625 0.531989    
## Daily:2              2.724e-02  7.031e-02   0.387 0.698388    
## Daily:3             -5.906e-02  5.775e-02  -1.023 0.306476    
## Daily:4             -1.842e-02  1.006e-01  -0.183 0.854736    
## Daily:5              3.632e-02  5.959e-02   0.609 0.542226    
## Post:1               2.312e-02  6.697e-01   0.035 0.972462    
## Post:2               5.233e-01  1.623e+00   0.323 0.747031    
## Post:3              -4.466e+00  1.490e+00      NA       NA    
## Post:4               5.017e-01  1.879e+00   0.267 0.789410    
## Post:5               1.055e-01  1.725e+00   0.061 0.951251    
## Like:1               2.727e-01  1.470e-01   1.855 0.063662 .  
## Like:2              -1.941e-01  2.053e-01  -0.946 0.344374    
## Like:3               1.217e+00  3.368e-01   3.614 0.000302 ***
## Like:4              -1.953e-01  2.959e-01  -0.660 0.509073    
## Like:5               9.026e-02  1.993e-01   0.453 0.650586    
## Com:1               -5.413e-01  2.789e-01  -1.941 0.052237 .  
## Com:2                4.865e-01  5.039e-01   0.965 0.334300    
## Com:3               -1.063e+00  4.282e-01  -2.483 0.013039 *  
## Com:4               -1.054e-01  4.222e-01  -0.250 0.802807    
## Com:5               -6.184e-02  3.224e-01  -0.192 0.847870    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Number of linear predictors:  5 
## 
## Names of linear predictors: log(mu[,1]/mu[,6]), log(mu[,2]/mu[,6]), 
## log(mu[,3]/mu[,6]), log(mu[,4]/mu[,6]), log(mu[,5]/mu[,6])
## 
## Residual deviance: 147.649 on 455 degrees of freedom
## 
## Log-likelihood: -73.8245 on 455 degrees of freedom
## 
## Number of Fisher scoring iterations: 18 
## 
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):2', '(Intercept):5', 'PlatformInstagram:5', 'PlatformLinkedIn:1', 'PlatformSnapchat:4', 'PlatformWhatsapp:2', 'Post:3'
## 
## 
## Reference group is level  6  of the response
levels(draft$Dominant_Emotion)
## [1] "Neutral"   "Anger"     "Anxiety"   "Boredom"   "Happiness" "Sadness"

Vì “Neutral” thường được coi là trạng thái cảm xúc trung lập nhất và có tần số lớn nhất, giúp việc so sánh với các cảm xúc khác trở nên rõ ràng và có ý nghĩa hơn nên ta chọn trạng thái “Neutral” là mức tham chiếu.

Trong mô hình logistic đa thức, ta có các phương trình dạng:

\[ ln(\frac{\pi_i} {\pi_K})=\beta_{0i} + \beta_{1i}X, i=1,...,K-1 \]

Ở đây, mức tham chiếu là “Neutral” (mức thứ 6).

Kết quả trên cho thấy

  • Mỗi mức của Dominant_Emotion (trừ mức tham chiếu) có một hệ số ước lượng tương ứng với từng biến độc lập. Hệ số này đại diện cho sự thay đổi của log-tỷ lệ (log-odds) so với mức tham chiếu.

  • Biến Age:

Anger (Age:1): Hệ số -0.2464 (p = 0.072536) cho thấy rằng khi tuổi tăng, log-tỷ lệ của “Anger” so với “Neutral” giảm, nhưng mối quan hệ này không có ý nghĩa thống kê ở mức 0.05.

Boredom (Age:4): Hệ số 0.5098 (p = 0.039397) chỉ ra rằng khi tuổi tăng, log-tỷ lệ của “Boredom” so với “Neutral” tăng có ý nghĩa thống kê.

Các hệ số còn lại của Age đối với các mức khác của Dominant_Emotion không có ý nghĩa thống kê.

  • Biến Platform:

Telegram (PlatformTelegram:3): Hệ số -9.790 (p = 0.003052) cho thấy người dùng Telegram có xu hướng cảm thấy ít “Anxiety” hơn so với “Neutral” với ý nghĩa thống kê cao.

Twitter (PlatformTwitter:1): Hệ số -3.601 (p = 0.036778) chỉ ra rằng người dùng Twitter ít có khả năng cảm thấy “Anger” so với “Neutral” với ý nghĩa thống kê.

Các biến nền tảng khác, như Instagram, LinkedIn, Snapchat, và Whatsapp, không có hệ số nào có ý nghĩa thống kê đáng kể.

  • Biến Daily:

Không có hệ số nào liên quan đến Daily có ý nghĩa thống kê, cho thấy thời gian sử dụng hàng ngày không có ảnh hưởng đáng kể đến cảm xúc so với “Neutral”.

  • Biến Post:

Hầu hết các hệ số liên quan đến Post không có ý nghĩa thống kê

  • Biến Like:

Happiness (Like:3): Hệ số 1.217 (p = 0.000302) cho thấy rằng số lượt thích nhận được hàng ngày có mối liên hệ tích cực và có ý nghĩa thống kê với cảm xúc “Happiness”.

Các hệ số khác liên quan đến Like không có ý nghĩa thống kê.

  • Biến Com:

Anger (Com:1): Hệ số -0.5413 (p = 0.052237) cho thấy một mối liên hệ âm giữa số bình luận nhận được và cảm xúc “Anger”, gần có ý nghĩa thống kê.

Anxiety (Com:3): Hệ số -1.063 (p = 0.013039) cho thấy rằng khi số bình luận nhận được tăng, log-tỷ lệ của “Anxiety” so với “Neutral” giảm có ý nghĩa thống kê.

Nhìn chung, các kết quả hồi quy cho thấy một số biến độc lập có tác động có ý nghĩa thống kê đến các mức cảm xúc khác nhau. Đặc biệt, tuổi và nền tảng sử dụng mạng xã hội có thể ảnh hưởng đến việc trải nghiệm cảm xúc như “Boredom” và “Anxiety”. Số lượt thích nhận được hàng ngày có mối quan hệ tích cực với cảm xúc “Happiness”, trong khi số bình luận có mối liên hệ ngược với cảm xúc “Anxiety”.

3.8 Dự báo từ mô hình

3.8.1 Biến Age

Tạo chuỗi dữ liệu tuổi mới (15, 17, 20, 37) đặt tên là nd4

nd4 <- data.frame(Age=c(15, 17, 20, 37))
preA1 <- predict.glm(emoagemod1, newdata = nd4, type="response")
preA1
##         1         2         3         4 
## 0.8923329 0.8139808 0.6964526 0.0304598
preA2 <- predict.glm(emoagemod2, newdata = nd4, type="response")
preA2
##         1         2         3         4 
## 0.8525461 0.8029149 0.7067115 0.1094501
preA3 <- predict.glm(emoagemod3, newdata = nd4, type="response")
preA3
##         1         2         3         4 
## 0.8585072 0.8050926 0.7052042 0.1008221

Kết quả trên cho biết:

Dự báo bằng mô hình hồi quy xác suất tuyến tính

  • Với người ở tuổi 15 thì xác suất người đó mang cảm xúc tích cực đến 89.23%

  • Với người ở tuổi 17 thì xác suất người đó mang cảm xúc tích cực đến 81.39%

  • Với người ở tuổi 20 thì xác suất người đó mang cảm xúc tích cực là 69.65%

  • Với người ở tuổi 37 thì xác suất người đó mang cảm xúc tích cực chỉ còn 3.04%

Với mô hình xác suất tuyến tính giá trị dự báo cho thấy với những người ở độ tuổi càng nhỏ thì xác suất người đó có cảm xúc tích cực khi sử dụng mạng xã hội là rất cao. Ngược lại người càng lớn tuổi thì xác suất người đó mang cảm xúc tích cực là rất thấp.

Dự báo bằng mô hình hồi quy Logistic

  • Với người ở tuổi 15 thì xác suất người đó mang cảm xúc tích cực đến 85.25%

  • Với người ở tuổi 17 thì xác suất người đó mang cảm xúc tích cực đến 80.29%

  • Với người ở tuổi 20 thì xác suất người đó mang cảm xúc tích cực là 70.67%

  • Với người ở tuổi 37 thì xác suất người đó mang cảm xúc tích cực chỉ còn 10.94%

Với mô hình Logistic thì giá trị dự báo cũng cho kết quả tương tự với những người ở độ tuổi càng nhỏ thì xác suất người đó có cảm xúc tích cực khi sử dụng mạng xã hội là rất cao. Ngược lại người càng lớn tuổi thì xác suất người đó mang cảm xúc tích cực là rất thấp. Mô hình này cho kết quả giá trị xác suất ở mọi tuổi đều có ý nghĩa và mức chênh lệch tương đối giữa những giá trị này tương đối so với mô hình xác suất tuyến tính.

Dự báo bằng mô hình hồi quy Probit

  • Với người ở tuổi 15 thì xác suất người đó mang cảm xúc tích cực đến 85.85%

  • Với người ở tuổi 17 thì xác suất người đó mang cảm xúc tích cực đến 80.51%

  • Với người ở tuổi 20 thì xác suất người đó mang cảm xúc tích cực là 70.52%

  • Với người ở tuổi 37 thì xác suất người đó mang cảm xúc tích cực chỉ còn 10.08%

Với mô hình Probit thì giá trị dự báo cũng cho kết quả tương tự với những người ở độ tuổi càng nhỏ thì xác suất người đó có cảm xúc tích cực khi sử dụng mạng xã hội là rất cao. Ngược lại người càng lớn tuổi thì xác suất người đó mang cảm xúc tích cực là rất thấp. Mô hình này cho kết quả giá trị xác suất ở mọi tuổi đều có ý nghĩa và và mức chênh lệch giữa những giá trị này không quá nhiều so với mô hình Logistic

3.8.2 Biến Posts_Per_Day

Tạo chuỗi dữ liệu bài đăng trong ngày mới (1, 4, 7, 9) đặt tên là nd5

nd5 <- data.frame(Posts_Per_Day=c(1, 4, 7, 9))
preP1 <- predict.glm(emoposmod1, newdata = nd5, type="response")
preP1
##         1         2         3         4 
## 0.2451155 0.5068828 0.7686501 0.9431616
preP2 <- predict.glm(emoposmod2, newdata = nd5, type="response")
preP2
##         1         2         3         4 
## 0.2497401 0.5089495 0.7634346 0.8731169
preP3 <- predict.glm(emoposmod3, newdata = nd5, type="response")
preP3
##         1         2         3         4 
## 0.2513707 0.5071387 0.7598974 0.8779280

Kết quả trên cho biết:

Dự báo bằng mô hình hồi quy xác suất tuyến tính

  • Với người có lượng bài đăng 1 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 24.51%

  • Với người có lượng bài đăng 4 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 50.68%

  • Với người có lượng bài đăng 7 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 76.86%

  • Với người có lượng bài đăng 9 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 94.32%

Với mô hình xác suất tuyến tính giá trị dự báo cho thấy với những người càng ít đăng bài trong ngày thì xác suất người đó có cảm xúc tích cực khi sử dụng mạng xã hội là thấp hơn so với những người đăng nhiều bài trong ngày. Điều này có thể hiểu những người hoạt động đăng bài nhiều trong các nền tảng xã hội là do cảm thấy vui vẻ khi sử dụng nền tảng đó.

Dự báo bằng mô hình hồi quy Logistic

  • Với người có lượng bài đăng 1 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 24.97%

  • Với người có lượng bài đăng 4 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 50.89%

  • Với người có lượng bài đăng 7 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 76.34%

  • Với người có lượng bài đăng 9 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 87.31%

Với mô hình Logistic giá trị dự báo cũng cho thấy với những người càng ít đăng bài trong ngày thì xác suất người đó có cảm xúc tích cực khi sử dụng mạng xã hội là thấp hơn so với những người đăng nhiều bài trong ngày. Điều này có thể hiểu những người hoạt động đăng bài nhiều trong các nền tảng xã hội là do cảm thấy vui vẻ khi sử dụng nền tảng đó.

Dự báo bằng mô hình hồi quy Probit

  • Với người có lượng bài đăng 1 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 25.13%

  • Với người có lượng bài đăng 4 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 50.71%

  • Với người có lượng bài đăng 7 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 75.98%

  • Với người có lượng bài đăng 9 bài trong ngày thì xác suất người đó mang cảm xúc tích cực là 87.79%

Với mô hình Probit giá trị dự báo cũng cho kết quả tương tự với những người càng ít đăng bài trong ngày thì xác suất người đó có cảm xúc tích cực khi sử dụng mạng xã hội là thấp hơn so với những người đăng nhiều bài trong ngày. Giá trị dự báo của mô hình Probit và Logistic là tương đối gần bằng nhau.

3.8.3 Biến Daily_Usage_Time

nd1 <- data.frame(DailyUsageTime = c(60,105, 120, 145))
preT1 <- predict.glm(emotimemod1, newdata = nd1, type="response")
preT1
##         1         2         3         4 
## 0.2701546 0.4912407 0.5649361 0.6877617
preT2 <- predict.glm(emotimemod2, newdata = nd1, type="response")
preT2
##         1         2         3         4 
## 0.7324647 0.5043162 0.4224556 0.2967871
preT3 <- predict.glm(emotimemod3, newdata = nd1, type="response")
preT3
##         1         2         3         4 
## 0.7277980 0.5067307 0.4287492 0.3060965

Kết quả trên cho biết:

Dự báo bằng mô hình hồi quy xác suất tuyến tính

  • Khi một người sử dụng mạng xã hội khoảng 60 phút mỗi ngày, xác suất để họ có cảm xúc tích cực là khoảng 27%.

  • Khi thời gian sử dụng mạng xã hội tăng lên 105 phút mỗi ngày, xác suất để người đó có cảm xúc tích cực tăng lên khoảng 49.12%.

  • Khi thời gian sử dụng mạng xã hội đạt 120 phút mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 56.49%. Như vậy, càng sử dụng mạng xã hội nhiều hơn, xác suất cảm xúc tích cực càng tăng.

  • Với thời gian sử dụng mạng xã hội 145 phút mỗi ngày, xác suất để có cảm xúc tích cực đạt khoảng 68.78%. Điều này cho thấy sự gia tăng rõ rệt của cảm xúc tích cực khi thời gian sử dụng mạng xã hội tăng cao.

Dự báo bằng mô hình hồi quy Logistic

  • Khi một người sử dụng mạng xã hội khoảng 60 phút mỗi ngày, xác suất để họ có cảm xúc tích cực là khoảng 72.78%.

  • Khi thời gian sử dụng mạng xã hội tăng lên 105 phút mỗi ngày, xác suất để người đó có cảm xúc tích cực tăng lên khoảng 50.67%.

  • Khi thời gian sử dụng mạng xã hội đạt 120 phút mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 42.25%.

  • Với thời gian sử dụng mạng xã hội 145 phút mỗi ngày, xác suất để có cảm xúc tích cực đạt khoảng 29.68%.

Dự báo bằng mô hình hồi quy Probit

  • Khi một người sử dụng mạng xã hội khoảng 60 phút mỗi ngày, xác suất để họ có cảm xúc tích cực là khoảng 73.25%.

  • Khi thời gian sử dụng mạng xã hội tăng lên 105 phút mỗi ngày, xác suất để người đó có cảm xúc tích cực tăng lên khoảng 50.43%.

  • Khi thời gian sử dụng mạng xã hội đạt 120 phút mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 42.87%.

  • Với thời gian sử dụng mạng xã hội 145 phút mỗi ngày, xác suất để có cảm xúc tích cực đạt khoảng 30.61%.

Tóm lại, cả ba mô hình đều cho thấy mối quan hệ âm dương giữa thời gian sử dụng mạng xã hội và xác suất để có cảm xúc tích cực. Mặc dù mô hình hồi quy tuyến tính dễ hiểu và áp dụng, nhưng mô hình Logistic và Probit lại phù hợp hơn để mô tả xác suất trong các mối quan hệ không phải tuyến tính.

Khi sử dụng mạng xã hội nhiều hơn, người dùng có thể có xu hướng có cảm xúc tích cực cao hơn ban đầu, nhưng khi thời gian sử dụng gia tăng quá mức, xác suất này có thể giảm dần.

3.8.4 Biến Likes_Received_Per_Day

nd2 <- data.frame(Likes_Received_Per_Day = c(12, 22, 38, 40))
preL1 <- predict.glm(emolikemod1, newdata = nd2, type="response")
preL1
##         1         2         3         4 
## 0.2650694 0.3315755 0.4379853 0.4512865
preL2 <- predict.glm(emolikemod2, newdata = nd2, type="response")
preL2
##         1         2         3         4 
## 0.7333468 0.6725018 0.5626899 0.5482634
preL3 <- predict.glm(emolikemod3, newdata = nd2, type="response")
preL3
##         1         2         3         4 
## 0.7310934 0.6697514 0.5620594 0.5480805

Kết quả trên cho thấy:

Dự báo bằng mô hình hồi quy xác suất tuyến tính

  • Khi một người nhận được khoảng 12 lượt thích mỗi ngày trên mạng xã hội, xác suất để họ có cảm xúc tích cực là khoảng 26.51%.

  • Khi số lượt thích nhận được tăng lên 22 lượt mỗi ngày, xác suất để người đó có cảm xúc tích cực là khoảng 33.16%.

  • Khi số lượt thích nhận được là 38 lượt mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 43.80%.

  • Với số lượt thích nhận được là 40 lượt mỗi ngày, xác suất để có cảm xúc tích cực đạt tới 45.13%.

Dự báo bằng mô hình hồi quy Logistic

  • Khi một người nhận được khoảng 12 lượt thích mỗi ngày trên mạng xã hội, xác suất để họ có cảm xúc tích cực là khoảng 73.33%.

  • Khi số lượt thích nhận được tăng lên 22 lượt mỗi ngày, xác suất để người đó có cảm xúc tích cực là khoảng 67.25%.

  • Khi số lượt thích nhận được là 38 lượt mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 56.27%.

  • Với số lượt thích nhận được là 40 lượt mỗi ngày, xác suất để có cảm xúc tích cực đạt tới 54.83%.

Dự báo bằng mô hình hồi quy Probit

  • Khi một người nhận được khoảng 12 lượt thích mỗi ngày trên mạng xã hội, xác suất để họ có cảm xúc tích cực là khoảng 73.11%.

  • Khi số lượt thích nhận được tăng lên 22 lượt mỗi ngày, xác suất để người đó có cảm xúc tích cực là khoảng 66.98%.

  • Khi số lượt thích nhận được là 38 lượt mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 56.21%.

  • Với số lượt thích nhận được là 40 lượt mỗi ngày, xác suất để có cảm xúc tích cực đạt tới 54.81%.

Tóm lại, cả ba mô hình đều cho thấy mối liên hệ dương tính giữa số lượt thích nhận được trên mạng xã hội và xác suất có cảm xúc tích cực. Mặc dù mô hình Logistic và Probit cung cấp các ước tính xác suất cao hơn so với mô hình xác suất tuyến tính, điều này phản ánh sự phi tuyến tính trong mối quan hệ này, có thể do sự ảnh hưởng không đồng đều của các yếu tố khác nhau lên cảm xúc của người dùng mạng xã hội.

3.8.5 Biến Comments_Received_Per_Day

nd3 <- data.frame(Comments_Received_Per_Day = c(7, 12, 20, 22))
preC1 <- predict.glm(emocommod1, newdata = nd3, type="response")
preC1
##         1         2         3         4 
## 0.3181518 0.3843668 0.4903107 0.5167967
preC2 <- predict.glm(emocommod2, newdata = nd3, type="response")
preC2
##         1         2         3         4 
## 0.6820932 0.6188405 0.5096447 0.4817761
preC3 <- predict.glm(emocommod3, newdata = nd3, type="response")
preC3
##         1         2         3         4 
## 0.6809886 0.6177631 0.5104690 0.4832109

Kết quả trên cho biết

Dự báo bằng mô hình hồi quy xác suất tuyến tính

  • Khi một người nhận được khoảng 7 lượt bình luận mỗi ngày trên mạng xã hội, xác suất để họ có cảm xúc tích cực là khoảng 31.82%.

  • Khi số lượt bình luận nhận được tăng lên 12 lượt mỗi ngày, xác suất để người đó có cảm xúc tích cực là khoảng 38.44%

  • Khi số lượt bình luận nhận được là 20 lượt mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 49.03%.

  • Với số lượt bình luận nhận được là 22 lượt mỗi ngày, xác suất để có cảm xúc tích cực đạt tới 51.68%.

Dự báo bằng mô hình hồi quy Logistic

  • Khi một người nhận được khoảng 7 lượt bình luận mỗi ngày trên mạng xã hội, xác suất để họ có cảm xúc tích cực là khoảng 68.21%.

  • Khi số lượt bình luận nhận được tăng lên 12 lượt mỗi ngày, xác suất để người đó có cảm xúc tích cực là khoảng 61.88%

  • Khi số lượt bình luận nhận được là 20 lượt mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 50.96%.

  • Với số lượt bình luận nhận được là 22 lượt mỗi ngày, xác suất để có cảm xúc tích cực đạt tới 48.18%.

Dự báo bằng mô hình hồi quy Probit

  • Khi một người nhận được khoảng 7 lượt bình luận mỗi ngày trên mạng xã hội, xác suất để họ có cảm xúc tích cực là khoảng 68.1%.

  • Khi số lượt bình luận nhận được tăng lên 12 lượt mỗi ngày, xác suất để người đó có cảm xúc tích cực là khoảng 61.78%

  • Khi số lượt bình luận nhận được là 20 lượt mỗi ngày, xác suất để có cảm xúc tích cực tiếp tục tăng lên khoảng 51.05%.

  • Với số lượt bình luận nhận được là 22 lượt mỗi ngày, xác suất để có cảm xúc tích cực đạt tới 48.32%.

Tóm lại, cả ba mô hình đều cho thấy mối quan hệ âm dương giữa thời gian sử dụng giữa số lượt bình luận và xác suất cảm xúc tích cực. Mặc dù mô hình hồi quy tuyến tính dễ hiểu và áp dụng, nhưng mô hình Logistic và Probit lại phù hợp hơn để mô tả xác suất trong các mối quan hệ không phải tuyến tính.

Khi số lượt bình luận mỗi ngày nhận được nhiều hơn, người dùng có thể có xu hướng có cảm xúc tích cực cao hơn ban đầu, nhưng Khi số lượt bình luận mỗi ngày nhận được gia tăng quá mức, xác suất này có thể giảm dần.

3.8.6 Hồi quy đa biến

nd6 <- data.frame(Age = c(15, 37, 44, 55),
                 DailyUsageTime = c(60,105, 120, 145),
                 Likes_Received_Per_Day = c(12, 22, 38, 40),
                 Comments_Received_Per_Day = c(7, 12, 20, 22))
preM1 <- predict.glm(mul1, newdata = nd6)
preM1
##           1           2           3           4 
##  0.79303344  0.02101268 -0.34009238 -0.72627648
preM2 <- predict.glm(mul2, newdata = nd6, type="response")
preM2
##            1            2            3            4 
## 0.8723643121 0.0434170967 0.0047998829 0.0003770299
preM3 <- predict.glm(mul3, newdata = nd6, type="response")
preM3
##            1            2            3            4 
## 8.645214e-01 4.337349e-02 1.260967e-03 4.565368e-06

Kết quả trên cho biết

Dự báo bằng mô hình hồi quy xác suất tuyến tính

  • Khi một người có tuổi là 15, thời gian sử dụng mạng xã hội hàng ngày là 60 phút, nhận được khoảng 12 lượt thích và 7 lượt bình luận mỗi ngày, xác suất để họ có cảm xúc tích cực là khoảng 79.30%.

  • Khi tuổi tăng lên 37, thời gian sử dụng hàng ngày là 105 phút, nhận được 22 lượt thích và 12 lượt bình luận, xác suất để họ có cảm xúc tích cực giảm xuống khoảng 2.10%.

  • Khi tuổi là 44, thời gian sử dụng hàng ngày là 120 phút, nhận được 38 lượt thích và 20 lượt bình luận, xác suất có cảm xúc tích cực là -34.01% (kết quả này không có ý nghĩa thực tế vì xác suất không thể âm).

  • Khi tuổi là 55, thời gian sử dụng hàng ngày là 145 phút, nhận được 40 lượt thích và 22 lượt bình luận, xác suất để có cảm xúc tích cực là -72.63% (kết quả này cũng không có ý nghĩa thực tế).

Dự báo bằng mô hình hồi quy Logistic

  • Khi một người có tuổi là 15, thời gian sử dụng mạng xã hội hàng ngày là 60 phút, nhận được khoảng 12 lượt thích và 7 lượt bình luận mỗi ngày, xác suất để họ có cảm xúc tích cực là khoảng 87.24%.

  • Khi tuổi tăng lên 37, thời gian sử dụng hàng ngày là 105 phút, nhận được 22 lượt thích và 12 lượt bình luận, xác suất để họ có cảm xúc tích cực giảm xuống khoảng 4.34%.

  • Khi tuổi là 44, thời gian sử dụng hàng ngày là 120 phút, nhận được 38 lượt thích và 20 lượt bình luận, xác suất có cảm xúc tích cực là 0.48%.

  • Khi tuổi là 55, thời gian sử dụng hàng ngày là 145 phút, nhận được 40 lượt thích và 22 lượt bình luận, xác suất để có cảm xúc tích cực là 0.04%.

Dự báo bằng mô hình hồi quy Probit

  • Khi một người có tuổi là 15, thời gian sử dụng mạng xã hội hàng ngày là 60 phút, nhận được khoảng 12 lượt thích và 7 lượt bình luận mỗi ngày, xác suất để họ có cảm xúc tích cực là khoảng 86.45%.

  • Khi tuổi tăng lên 37, thời gian sử dụng hàng ngày là 105 phút, nhận được 22 lượt thích và 12 lượt bình luận, xác suất để họ có cảm xúc tích cực giảm xuống khoảng 4.34%.

  • Khi tuổi là 44, thời gian sử dụng hàng ngày là 120 phút, nhận được 38 lượt thích và 20 lượt bình luận, xác suất có cảm xúc tích cực là 0.13%.

  • Khi tuổi là 55, thời gian sử dụng hàng ngày là 145 phút, nhận được 40 lượt thích và 22 lượt bình luận, xác suất để có cảm xúc tích cực là gần 0%.

3.9 Các tiêu chí đánh giá mô hình

3.9.1 AIC - Akaike Information Criterion

3.9.1.1 Biến Age

aicA1 <- AIC(emoagemod1)
aicA2 <- AIC(emoagemod2)
aicA3 <- AIC(emoagemod3)
AIC.A <-cbind(aicA1,aicA2,aicA3)
AIC.A
##         aicA1    aicA2    aicA3
## [1,] 143.0584 134.4107 134.4663

Từ kết quả chỉ số AIC của ba mô hình trên cho biến Age, ta thấy mô hình Logistic có giá trị AIC là 134.3107 nhỏ nhất trong ba mô hình. Vì vậy mô hình Logistic là phù hợp nhất cho biến Age

3.9.1.2 Biến Posts_Per_Day

aicP1 <- AIC(emoposmod1)
aicP2 <- AIC(emoposmod2)
aicP3 <- AIC(emoposmod3)
AIC.P <-cbind(aicP1,aicP2,aicP3)
AIC.P
##         aicP1    aicP2    aicP3
## [1,] 141.8143 133.4672 133.5781

Từ kết quả chỉ số AIC của ba mô hình trên cho biến Posts_Per_Day, ta thấy mô hình Logistic có giá trị AIC là 133.4672 nhỏ nhất trong ba mô hình. Vì vậy mô hình Logistic là mô hình phù hợp nhất cho biến Posts_Per_Day

3.9.1.3 Biến Daily_Usage_Time

aicT1 <- AIC(emotimemod1)
aicT2 <- AIC(emotimemod2)
aicT3 <- AIC(emotimemod3)
AIC.T <-cbind(aicT1,aicT2,aicT3)
AIC.T
##         aicT1    aicT2    aicT3
## [1,] 139.4474 131.1684 131.4034

Kết quả trên cho thấy lần lượt chỉ số AIC của 3 mô hình LPM, Logistic và Probit là 139.4474, 131.1684 và 131.4034.

Trong ba mô hình, mô hình hồi quy Logistic có giá trị AIC thấp nhất (131.1684), cho thấy đây là mô hình tốt nhất trong việc giải thích mối quan hệ giữa biến số thời gian sử dụng mạng xã hội hàng ngày và cảm xúc tích cực.

Mô hình hồi quy Probit có giá trị AIC là 131.4034, điều này cho thấy mô hình Probit cũng khá tốt nhưng vẫn kém hơn một ít so với mô hình Logistic.

Mô hình hồi quy xác suất tuyến tính (LPM) có giá trị AIC cao nhất (139.4474), cho thấy nó là mô hình ít phù hợp nhất trong việc giải thích mối quan hệ này.

Vậy mô hình hồi quy Logistic cung cấp sự phù hợp tốt nhất với dữ liệu trong ba mô hình được xem xét, dựa trên chỉ số AIC

3.9.1.4 Biến Likes_Received_Per_Day

aicL1 <- AIC(emolikemod1)
aicL2 <- AIC(emolikemod2)
aicL3 <- AIC(emolikemod3)
AIC.L <-cbind(aicL1,aicL2,aicL3)
AIC.L
##         aicL1    aicL2    aicL3
## [1,] 141.5278 133.1884 133.3053

Kết quả trên cho thấy lần lượt chỉ số AIC của 3 mô hình LPM, Logistic và Probit là 141.5278, 133.1884 và 133.3053.

  • Trong ba mô hình, mô hình hồi quy Logistic có giá trị AIC thấp nhất (133.1884), cho thấy đây là mô hình tốt nhất trong việc giải thích mối quan hệ giữa biến số lượt thích nhận được mỗi ngày và cảm xúc tích cực.

  • Mô hình hồi quy Probit có giá trị AIC là 133.3053, chỉ cao hơn mô hình Logistic một chút. Điều này cho thấy mô hình Probit cũng khá tốt nhưng vẫn kém hơn một chút so với mô hình Logistic.

  • Mô hình hồi quy xác suất tuyến tính (LPM) có giá trị AIC cao nhất (141.5278), cho thấy nó là mô hình ít phù hợp nhất trong việc giải thích mối quan hệ này.

Vậy mô hình hồi quy Logistic cung cấp sự phù hợp tốt nhất với dữ liệu trong ba mô hình được xem xét, dựa trên chỉ số AIC

3.9.1.5 Biến Comments_Received_Per_Day

aicC1 <- AIC(emocommod1)
aicC2 <- AIC(emocommod2)
aicC3 <- AIC(emocommod3)
AIC.C <-cbind(aicC1,aicC2,aicC3)
AIC.C
##         aicC1    aicC2    aicC3
## [1,] 146.9594 138.3804 138.4194

Kết quả trên cho thấy lần lượt chỉ số AIC của 3 mô hình LPM, Logistic và Probit là 146.9594, 138.3804 và 138.4194.

  • Trong ba mô hình, mô hình hồi quy Logistic có giá trị AIC thấp nhất (138.3804), cho thấy đay cũng là mô hình tốt nhất trong việc giải thích mối quan hệ giữa biến số lượt bình luận nhận được mỗi ngày và cảm xúc tích cực.

  • Mô hình hồi quy Probit có giá trị AIC là 138.4194, điều này cho thấy mô hình Probit cũng khá tốt nhưng vẫn kém hơn so với mô hình Logistic.

  • Mô hình hồi quy xác suất tuyến tính (LPM) có giá trị AIC cao nhất (146.9594), cho thấy nó là mô hình ít phù hợp nhất trong việc giải thích mối quan hệ này.

Vậy mô hình hồi quy Logistic cung cấp sự phù hợp tốt nhất với dữ liệu trong ba mô hình được xem xét, dựa trên chỉ số AIC.

3.9.1.6 Mô hình hồi quy đa biến

aicM1 <- AIC(mul1)
aicM2 <- AIC(mul2)
aicM3 <- AIC(mul3)
AIC.M <-cbind(aicM1,aicM2,aicM3)
AIC.M
##         aicM1    aicM2    aicM3
## [1,] 123.9639 114.4495 114.9632

Từ kết quả chỉ số AIC của ba mô hình đa biến trên cho thấy mô hình Logistic có giá trị AIC là 114.4495 nhỏ nhất trong ba mô hình. Vì vậy mô hình Logistic là phù hợp nhất.

3.9.2 Brier Score

3.9.2.1 Biến Age

bsA1 <- BrierScore(emoagemod1)
bsA2 <- BrierScore(emoagemod2)
bsA3 <- BrierScore(emoagemod3)
BS.A <- cbind(bsA1,bsA2,bsA3)
BS.A
##           bsA1      bsA2      bsA3
## [1,] 0.2215265 0.2206749 0.2209004

Từ kết quả giá trị của hệ số Brier Score càng chứng minh được mô hình Logistic của biến Age là mô hình phù hợp nhất vì có giá trị Brier Score nhỏ nhất.

3.9.2.2 Biến Posts_Per_Day

bsP1 <- BrierScore(emoposmod1)
bsP2 <- BrierScore(emoposmod2)
bsP3 <- BrierScore(emoposmod3)
BS.P <- cbind(bsP1,bsP2,bsP3)
BS.P
##           bsP1      bsP2      bsP3
## [1,] 0.2188669 0.2177506 0.2179958

Từ kết quả giá trị của hệ số Brier Score càng chứng minh được mô hình Logistic của biến Posts_Per_Day là mô hình hiệu quả nhất vì có giá trị Brier Score nhỏ nhất.

3.9.2.3 Biến Daily_Usage_Time

bsT1 <- BrierScore(emotimemod1)
bsT2 <- BrierScore(emotimemod2)
bsT3 <- BrierScore(emotimemod3)
BS.T <- cbind(bsT1,bsT2,bsT3)
BS.T
##           bsT1      bsT2      bsT3
## [1,] 0.2138946 0.2118046 0.2122221

Từ kết quả giá trị của hệ số Brier Score càng chứng minh được mô hình Logistic của biến Daily_Usage_Time là mô hình hiệu quả nhất vì có giá trị Brier Score nhỏ nhất.

3.9.2.4 Biến Likes_Received_Per_Day

bsL1 <- BrierScore(emolikemod1)
bsL2 <- BrierScore(emolikemod2)
bsL3 <- BrierScore(emolikemod3)
BS.L <- cbind(bsL1,bsL2,bsL3)
BS.L
##           bsL1      bsL2      bsL3
## [1,] 0.2182589 0.2172451 0.2174077

Từ kết quả giá trị của hệ số Brier Score càng chứng minh được mô hình Logistic của biến Likes_Received_Per_Day là mô hình hiệu quả nhất vì có giá trị Brier Score nhỏ nhất.

3.9.2.5 Biến Comments_Received_Per_Day

bsC1 <- BrierScore(emocommod1)
bsC2 <- BrierScore(emocommod2)
bsC3 <- BrierScore(emocommod3)
BS.C <- cbind(bsC1,bsC2,bsC3)
BS.C
##           bsC1      bsC2      bsC3
## [1,] 0.2300776 0.2296571 0.2297526

Từ kết quả giá trị của hệ số Brier Score càng chứng minh được mô hình Logistic của biến Comments_Received_Per_Day là mô hình hiệu quả nhất vì có giá trị Brier Score nhỏ nhất.

3.9.2.6 Mô hình hồi quy đa biến

bsM1 <- BrierScore(mul1)
bsM2 <- BrierScore(mul2)
bsM3 <- BrierScore(mul3)
BS.M <- cbind(bsM1,bsM2,bsM3)
BS.M
##           bsM1     bsM2      bsM3
## [1,] 0.1736265 0.164667 0.1672512

Từ kết quả giá trị của hệ số Brier Score càng chứng minh được mô hình hồi quy Logistic trong 3 mô hình hồi quy đa biến trên là mô hình phù hợp nhất vì có giá trị Brier Score nhỏ nhất.

3.9.3 Ma trận nhầm lẫn - Confusion matrix

3.9.3.1 ** Biến Age **

LPM

library(e1071)
library(caret)
library(DescTools)
data <- social_media
Mt1 <- Conf(table(predict(emoagemod1, type="response") >=0.5,emoagemod1$data$Dominant_Emotion == 'Tích cực'))
Mt1
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    52   19
##      TRUE      9   23
## 
##                 Total n : 103
##                Accuracy : 0.7282
##                  95% CI : (0.6352, 0.8047)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0029
## 
##                   Kappa : 0.4155
##  Mcnemar's Test P-Value : 0.0890
## 
##             Sensitivity : 0.8525
##             Specificity : 0.5476
##          Pos Pred Value : 0.7324
##          Neg Pred Value : 0.7188
##              Prevalence : 0.5922
##          Detection Rate : 0.6893
##    Detection Prevalence : 0.5049
##       Balanced Accuracy : 0.7000
##          F-val Accuracy : 0.7879
##      Matthews Cor.-Coef : 0.4248
## 
##        'Positive' Class : FALSE

Logistic

Mt2 <- Conf(table(predict(emoagemod2, type="response") >=0.5,emoagemod2$data$Dominant_Emotion == 'Tích cực'))
Mt2
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    52   19
##      TRUE      9   23
## 
##                 Total n : 103
##                Accuracy : 0.7282
##                  95% CI : (0.6352, 0.8047)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0029
## 
##                   Kappa : 0.4155
##  Mcnemar's Test P-Value : 0.0890
## 
##             Sensitivity : 0.8525
##             Specificity : 0.5476
##          Pos Pred Value : 0.7324
##          Neg Pred Value : 0.7188
##              Prevalence : 0.5922
##          Detection Rate : 0.6893
##    Detection Prevalence : 0.5049
##       Balanced Accuracy : 0.7000
##          F-val Accuracy : 0.7879
##      Matthews Cor.-Coef : 0.4248
## 
##        'Positive' Class : FALSE

Probit

Mt3 <- Conf(table(predict(emoagemod3, type="response") >=0.5,emoagemod3$data$Dominant_Emotion == 'Tích cực'))
Mt3
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    52   19
##      TRUE      9   23
## 
##                 Total n : 103
##                Accuracy : 0.7282
##                  95% CI : (0.6352, 0.8047)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0029
## 
##                   Kappa : 0.4155
##  Mcnemar's Test P-Value : 0.0890
## 
##             Sensitivity : 0.8525
##             Specificity : 0.5476
##          Pos Pred Value : 0.7324
##          Neg Pred Value : 0.7188
##              Prevalence : 0.5922
##          Detection Rate : 0.6893
##    Detection Prevalence : 0.5049
##       Balanced Accuracy : 0.7000
##          F-val Accuracy : 0.7879
##      Matthews Cor.-Coef : 0.4248
## 
##        'Positive' Class : FALSE

Ma trận nhầm lẫn biến Age: Ma trận từ ba mô hình đều cho ra cùng một kết quả cho ta biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 52 quan sát nhận dạng đúng và 9 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 24 quan sát đúng và 19 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.7282

3.9.3.2 Biến Posts_Per_Day

LPM

Mt4 <- Conf(table(predict(emoposmod1, type="response") >=0.5,emoposmod1$data$Dominant_Emotion == 'Tích cực'))
Mt4
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    50   22
##      TRUE     11   20
## 
##                 Total n : 103
##                Accuracy : 0.6796
##                  95% CI : (0.5844, 0.7619)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0428
## 
##                   Kappa : 0.3084
##  Mcnemar's Test P-Value : 0.0817
## 
##             Sensitivity : 0.8197
##             Specificity : 0.4762
##          Pos Pred Value : 0.6944
##          Neg Pred Value : 0.6452
##              Prevalence : 0.5922
##          Detection Rate : 0.6990
##    Detection Prevalence : 0.4854
##       Balanced Accuracy : 0.6479
##          F-val Accuracy : 0.7519
##      Matthews Cor.-Coef : 0.3170
## 
##        'Positive' Class : FALSE

Logistic

Mt5 <- Conf(table(predict(emoposmod2, type="response") >=0.5,emoposmod2$data$Dominant_Emotion == 'Tích cực'))
Mt5
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    50   22
##      TRUE     11   20
## 
##                 Total n : 103
##                Accuracy : 0.6796
##                  95% CI : (0.5844, 0.7619)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0428
## 
##                   Kappa : 0.3084
##  Mcnemar's Test P-Value : 0.0817
## 
##             Sensitivity : 0.8197
##             Specificity : 0.4762
##          Pos Pred Value : 0.6944
##          Neg Pred Value : 0.6452
##              Prevalence : 0.5922
##          Detection Rate : 0.6990
##    Detection Prevalence : 0.4854
##       Balanced Accuracy : 0.6479
##          F-val Accuracy : 0.7519
##      Matthews Cor.-Coef : 0.3170
## 
##        'Positive' Class : FALSE

Probit

Mt6 <- Conf(table(predict(emoposmod3, type="response") >=0.5,emoposmod3$data$Dominant_Emotion == 'Tích cực'))
Mt6
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    50   22
##      TRUE     11   20
## 
##                 Total n : 103
##                Accuracy : 0.6796
##                  95% CI : (0.5844, 0.7619)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0428
## 
##                   Kappa : 0.3084
##  Mcnemar's Test P-Value : 0.0817
## 
##             Sensitivity : 0.8197
##             Specificity : 0.4762
##          Pos Pred Value : 0.6944
##          Neg Pred Value : 0.6452
##              Prevalence : 0.5922
##          Detection Rate : 0.6990
##    Detection Prevalence : 0.4854
##       Balanced Accuracy : 0.6479
##          F-val Accuracy : 0.7519
##      Matthews Cor.-Coef : 0.3170
## 
##        'Positive' Class : FALSE

Ma trận từ ba mô hình đều cho ra cùng một kết quả cho ta biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 50 quan sát nhận dạng đúng và 11 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 20 quan sát đúng và 22 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.6796

3.9.3.3 Biến Daily_Usage_Time

LPM

Mt7 <- Conf(table(predict(emotimemod1, type="response") >=0.5,emotimemod1$data$Dominant_Emotion == 'Tích cực'))
Mt7
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    54   25
##      TRUE      7   17
## 
##                 Total n : 103
##                Accuracy : 0.6893
##                  95% CI : (0.5945, 0.7705)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0270
## 
##                   Kappa : 0.3107
##  Mcnemar's Test P-Value : 0.0027
## 
##             Sensitivity : 0.8852
##             Specificity : 0.4048
##          Pos Pred Value : 0.6835
##          Neg Pred Value : 0.7083
##              Prevalence : 0.5922
##          Detection Rate : 0.7670
##    Detection Prevalence : 0.5243
##       Balanced Accuracy : 0.6450
##          F-val Accuracy : 0.7714
##      Matthews Cor.-Coef : 0.3371
## 
##        'Positive' Class : FALSE

Ma trận từ mô hình cho ra kết quả cho biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 54 quan sát nhận dạng đúng và 7 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 17 quan sát đúng và 25 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.6893

Logistic

Mt8 <- Conf(table(predict(emotimemod2, type="response") >=0.5,emotimemod2$data$Dominant_Emotion == 'Tích cực'))
Mt8
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE     7   17
##      TRUE     54   25
## 
##                 Total n : 103
##                Accuracy : 0.3107
##                  95% CI : (0.2295, 0.4055)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 1.0000
## 
##                   Kappa : -0.2550
##  Mcnemar's Test P-Value : 1.93e-05
## 
##             Sensitivity : 0.1148
##             Specificity : 0.5952
##          Pos Pred Value : 0.2917
##          Neg Pred Value : 0.3165
##              Prevalence : 0.5922
##          Detection Rate : 0.2330
##    Detection Prevalence : 0.0680
##       Balanced Accuracy : 0.3550
##          F-val Accuracy : 0.1647
##      Matthews Cor.-Coef : -0.3371
## 
##        'Positive' Class : FALSE

Probit

Mt9 <- Conf(table(predict(emotimemod3, type="response") >=0.5,emotimemod3$data$Dominant_Emotion == 'Tích cực'))
Mt9
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE     7   17
##      TRUE     54   25
## 
##                 Total n : 103
##                Accuracy : 0.3107
##                  95% CI : (0.2295, 0.4055)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 1.0000
## 
##                   Kappa : -0.2550
##  Mcnemar's Test P-Value : 1.93e-05
## 
##             Sensitivity : 0.1148
##             Specificity : 0.5952
##          Pos Pred Value : 0.2917
##          Neg Pred Value : 0.3165
##              Prevalence : 0.5922
##          Detection Rate : 0.2330
##    Detection Prevalence : 0.0680
##       Balanced Accuracy : 0.3550
##          F-val Accuracy : 0.1647
##      Matthews Cor.-Coef : -0.3371
## 
##        'Positive' Class : FALSE

Ma trận từ 2 mô hình logistic và probit đều cho ra cùng một kết quả cho ta biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 7 quan sát nhận dạng đúng và 54 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 25 quan sát đúng và 17 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.3107

3.9.3.4 Biến Likes_Received_Per_Day

LPM

Mt10 <- Conf(table(predict(emolikemod1, type="response") >=0.5,emolikemod1$data$Dominant_Emotion == 'Tích cực'))
Mt10
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    55   27
##      TRUE      6   15
## 
##                 Total n : 103
##                Accuracy : 0.6796
##                  95% CI : (0.5844, 0.7619)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.0428
## 
##                   Kappa : 0.2806
##  Mcnemar's Test P-Value : 4.99e-04
## 
##             Sensitivity : 0.9016
##             Specificity : 0.3571
##          Pos Pred Value : 0.6707
##          Neg Pred Value : 0.7143
##              Prevalence : 0.5922
##          Detection Rate : 0.7961
##    Detection Prevalence : 0.5340
##       Balanced Accuracy : 0.6294
##          F-val Accuracy : 0.7692
##      Matthews Cor.-Coef : 0.3157
## 
##        'Positive' Class : FALSE

Ma trận từ mô hình cho ra kết quả cho biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 55 quan sát nhận dạng đúng và 6 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 15 quan sát đúng và 27 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.6796

Logistic

Mt11 <- Conf(table(predict(emolikemod2, type="response") >=0.5,emolikemod2$data$Dominant_Emotion == 'Tích cực'))
Mt11
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE     6   15
##      TRUE     55   27
## 
##                 Total n : 103
##                Accuracy : 0.3204
##                  95% CI : (0.2381, 0.4156)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 1.0000
## 
##                   Kappa : -0.2254
##  Mcnemar's Test P-Value : 3.14e-06
## 
##             Sensitivity : 0.0984
##             Specificity : 0.6429
##          Pos Pred Value : 0.2857
##          Neg Pred Value : 0.3293
##              Prevalence : 0.5922
##          Detection Rate : 0.2039
##    Detection Prevalence : 0.0583
##       Balanced Accuracy : 0.3706
##          F-val Accuracy : 0.1463
##      Matthews Cor.-Coef : -0.3157
## 
##        'Positive' Class : FALSE

Probit

Mt12 <- Conf(table(predict(emolikemod3, type="response") >=0.5,emolikemod3$data$Dominant_Emotion == 'Tích cực'))
Mt12
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE     6   15
##      TRUE     55   27
## 
##                 Total n : 103
##                Accuracy : 0.3204
##                  95% CI : (0.2381, 0.4156)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 1.0000
## 
##                   Kappa : -0.2254
##  Mcnemar's Test P-Value : 3.14e-06
## 
##             Sensitivity : 0.0984
##             Specificity : 0.6429
##          Pos Pred Value : 0.2857
##          Neg Pred Value : 0.3293
##              Prevalence : 0.5922
##          Detection Rate : 0.2039
##    Detection Prevalence : 0.0583
##       Balanced Accuracy : 0.3706
##          F-val Accuracy : 0.1463
##      Matthews Cor.-Coef : -0.3157
## 
##        'Positive' Class : FALSE

Ma trận từ 2 mô hình logistic và probit đều cho ra cùng một kết quả cho ta biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 6 quan sát nhận dạng đúng và 55 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 27 quan sát đúng và 15 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.3204

3.9.3.5 Biến Comments_Received_Per_Day

LPM

Mt13 <- Conf(table(predict(emocommod1, type="response") >=0.5,emocommod1$data$Dominant_Emotion == 'Tích cực'))
Mt13
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE    55   30
##      TRUE      6   12
## 
##                 Total n : 103
##                Accuracy : 0.6505
##                  95% CI : (0.5545, 0.7356)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 0.1347
## 
##                   Kappa : 0.2057
##  Mcnemar's Test P-Value : 1.26e-04
## 
##             Sensitivity : 0.9016
##             Specificity : 0.2857
##          Pos Pred Value : 0.6471
##          Neg Pred Value : 0.6667
##              Prevalence : 0.5922
##          Detection Rate : 0.8252
##    Detection Prevalence : 0.5340
##       Balanced Accuracy : 0.5937
##          F-val Accuracy : 0.7534
##      Matthews Cor.-Coef : 0.2424
## 
##        'Positive' Class : FALSE

Ma trận từ mô hình cho ra kết quả cho biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 55 quan sát nhận dạng đúng và 6 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 12 quan sát đúng và 30 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.6505

Logistic

Mt14 <- Conf(table(predict(emocommod2, type="response") >=0.5,emocommod2$data$Dominant_Emotion == 'Tích cực'))
Mt14
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE     6   12
##      TRUE     55   30
## 
##                 Total n : 103
##                Accuracy : 0.3495
##                  95% CI : (0.2644, 0.4455)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 1.0000
## 
##                   Kappa : -0.1616
##  Mcnemar's Test P-Value : 2.88e-07
## 
##             Sensitivity : 0.0984
##             Specificity : 0.7143
##          Pos Pred Value : 0.3333
##          Neg Pred Value : 0.3529
##              Prevalence : 0.5922
##          Detection Rate : 0.1748
##    Detection Prevalence : 0.0583
##       Balanced Accuracy : 0.4063
##          F-val Accuracy : 0.1519
##      Matthews Cor.-Coef : -0.2424
## 
##        'Positive' Class : FALSE

Probit

Mt15 <- Conf(table(predict(emocommod3, type="response") >=0.5,emocommod3$data$Dominant_Emotion == 'Tích cực'))
Mt15
## 
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction FALSE TRUE
##      FALSE     6   12
##      TRUE     55   30
## 
##                 Total n : 103
##                Accuracy : 0.3495
##                  95% CI : (0.2644, 0.4455)
##     No Information Rate : 0.5922
##     P-Value [Acc > NIR] : 1.0000
## 
##                   Kappa : -0.1616
##  Mcnemar's Test P-Value : 2.88e-07
## 
##             Sensitivity : 0.0984
##             Specificity : 0.7143
##          Pos Pred Value : 0.3333
##          Neg Pred Value : 0.3529
##              Prevalence : 0.5922
##          Detection Rate : 0.1748
##    Detection Prevalence : 0.0583
##       Balanced Accuracy : 0.4063
##          F-val Accuracy : 0.1519
##      Matthews Cor.-Coef : -0.2424
## 
##        'Positive' Class : FALSE

Ma trận từ 2 mô hình logistic và probit đều cho ra cùng một kết quả cho ta biết trong tổng số 61 người mang cảm xúc tích cực, mô hình nhận nhận dạng được có 6 quan sát nhận dạng đúng và 55 quan sát nhận dạng không mang cảm xúc tích cực. Bên cạnh đó, trong tổng số 42 người không mang cảm xúc tích cực, mô hình nhận diện được 30 quan sát đúng và 12 quan sát được nhận diện mang cảm xúc tích cực. Với chỉ số chính xác là 0.3495

3.10 Kết luận

Đề tài “Phân tích việc sử dụng mạng xã hội ảnh hưởng đến sức khỏe tinh thần của người dùng” đã cung cấp một cái nhìn toàn diện về mối quan hệ giữa các yếu tố sử dụng mạng xã hội và cảm xúc tích cực của người dùng. Bằng việc áp dụng ba mô hình hồi quy đa biến (mô hình xác suất tuyến tính, mô hình logistic, và mô hình probit), chúng tôi đã phân tích các dữ liệu quan trọng bao gồm tuổi, thời gian sử dụng mạng xã hội hàng ngày, số lượt thích nhận được mỗi ngày, số lượt bình luận nhận được mỗi ngày, và số lượng tin nhắn gửi đi mỗi ngày. Kết quả phân tích cho thấy rằng tuổi tác có mối quan hệ nghịch với xác suất cảm xúc tích cực, nghĩa là khi tuổi tăng lên, xác suất cảm xúc tích cực giảm. Ngược lại, các yếu tố như thời gian sử dụng mạng xã hội, số lượt thích và số lượt bình luận nhận được mỗi ngày đều có mối quan hệ tích cực với xác suất cảm xúc tích cực. Điều này chỉ ra rằng sự tương tác trên mạng xã hội có thể cải thiện cảm xúc tích cực của người dùng, tuy nhiên, có một mức độ tối ưu của sự tương tác mà tại đó người dùng cảm thấy tích cực nhất. Khi số lượng này vượt quá mức độ tối ưu, xác suất cảm xúc tích cực có thể giảm đi. Các mô hình logistic và probit đã chứng tỏ là các công cụ phân tích hiệu quả hơn trong việc mô tả các mối quan hệ không tuyến tính, cung cấp kết quả hợp lý hơn so với mô hình xác suất tuyến tính. Điều này gợi ý rằng các nhà nghiên cứu và nhà quản lý nên sử dụng các mô hình này để có cái nhìn chính xác và toàn diện hơn về tác động của việc sử dụng mạng xã hội đến sức khỏe tinh thần. Từ những phát hiện này, chúng tôi có thể kết luận rằng việc sử dụng mạng xã hội có thể ảnh hưởng đến sức khỏe tinh thần của người dùng theo cả hướng tích cực và tiêu cực. Để tối ưu hóa lợi ích và giảm thiểu tác hại, người dùng cần tìm kiếm mức độ tương tác phù hợp và duy trì sự cân bằng trong việc sử dụng mạng xã hội. Các nhà quản lý mạng xã hội và nhà nghiên cứu cần tiếp tục nghiên cứu sâu hơn về các yếu tố ảnh hưởng và các biện pháp can thiệp để cải thiện trải nghiệm và sức khỏe tinh thần của người dùng trên các nền tảng mạng xã hội.

LS0tCnRpdGxlOiBQaMOibiB0w61jaCB2aeG7h2Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7qWMga2hv4bq7IHRpbmggdGjhuqduIGPhu6dhIG5nxrDhu51pCiAgc+G7rSBk4bulbmcKYXV0aG9yOiAiTmd1eeG7hW4gVGjhu4sgVGhhbmggVHLDumNfTMOqIE5oxrAgUXXhu7NuaCIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRvY19mbG9hdDoKICAgICAgY29sbGFwc2VkOiB5ZXMKICAgICAgZGZfcHJpbnQ6IHBhZ2VkCiAgICBoaWdobGlnaHQ6IGthdGUKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgY29kZV9kb3dubG9hZDogeWVzCiAgICBzdHlsZT0idGV4dC1hbGlnbjoganVzdGlmeQogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgd29yZF9kb2N1bWVudDoKICAgIHRvYzogeWVzCmVkaXRvcl9vcHRpb25zOiAKICBtYXJrZG93bjogCiAgICB3cmFwOiA3MgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpIApgYGAKCmBgYHtyLGVjaG89RkFMU0UsIHJlc3VsdHM9J2hpZGUnfQpyID0gZ2V0T3B0aW9uKCJyZXBvcyIpCnJbIkNSQU4iXSA9ICJodHRwOi8vY3Jhbi51cy5yLXByb2plY3Qub3JnIgpvcHRpb25zKHJlcG9zID0gcikKbGlicmFyeShyZWFkeGwpCnNvY2lhbF9tZWRpYSA8LSByZWFkX2V4Y2VsKCIvVXNlcnMvbGVuaHVxdXluaC9Eb3dubG9hZHMvc29jaWFsIG1lZGlhICgxKS54bHN4IikKZCA8LSBzb2NpYWxfbWVkaWEKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShkcGx5cikKbGlicmFyeShEZXNjVG9vbHMpCmxpYnJhcnkoZXBpdG9vbHMpCmxpYnJhcnkodGlueXRleCkKYGBgCgojICoqQ0jGr8agTkcgMTogUEjhuqZOIE3hu54gxJDhuqZVKioKCiMjICoqTMO9IGRvIGNo4buNbiDEkeG7gSB0w6BpKioKClRyb25nIGLhu5FpIGPhuqNuaCB4w6MgaOG7mWkgaGnhu4duIMSR4bqhaSwgbeG6oW5nIHjDoyBo4buZaSDEkcOjIHRy4bufIHRow6BuaCBt4buZdCBwaOG6p24ga2jDtG5nCnRo4buDIHRoaeG6v3UgdHJvbmcgY3Xhu5ljIHPhu5FuZyBow6BuZyBuZ8OgeSBj4bunYSBow6BuZyB04bu3IG5nxrDhu51pIHRyw6puIGto4bqvcCB0aOG6vwpnaeG7m2kuIE3huqFuZyB4w6MgaOG7mWkga2jDtG5nIGNo4buJIGzDoCBuxqFpIMSR4buDIGvhur90IG7hu5FpIHbDoCBjaGlhIHPhursgdGjDtG5nIHRpbiwgbcOgCmPDsm4gbMOgIG3DtGkgdHLGsOG7nW5nIMSR4buDIG5nxrDhu51pIGTDuW5nIHRo4buDIGhp4buHbiBj4bqjbSB4w7pjLCBxdWFuIMSRaeG7g20gdsOgIHTGsMahbmcgdMOhYwp4w6MgaOG7mWkuIFR1eSBuaGnDqm4sIGLDqm4gY+G6oW5oIG5o4buvbmcgbOG7o2kgw61jaCB0byBs4bubbiwgdmnhu4djIHPhu60gZOG7pW5nIG3huqFuZyB4w6MKaOG7mWkgY8WpbmcgxJHhurd0IHJhIG5oaeG7gXUgduG6pW4gxJHhu4EgbGnDqm4gcXVhbiDEkeG6v24gc+G7qWMga2hv4bq7IHRpbmggdGjhuqduLCBj4bulIHRo4buDIGzDoAp0cuG6oW5nIHRow6FpIGPhuqNtIHjDumMgY+G7p2Egbmjhu69uZyBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpLgoKQ8OzIG5oaeG7gXUgbmdoacOqbiBj4bupdSDEkcOjIGNo4buJIHJhIHLhurFuZyB2aeG7h2Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjw7MgdGjhu4Mg4bqjbmgKaMaw4bufbmcgxJHhur9uIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBz4butIGThu6VuZy4gTmjhu69uZyDhuqNuaCBoxrDhu59uZyBuw6B5IGPDswp0aOG7gyB0w61jaCBj4buxYywgbmjGsCBj4bqjbSBnacOhYyBr4bq/dCBu4buRaSB2w6Agc+G7sSBo4buXIHRy4bujIHjDoyBo4buZaSwgbmjGsG5nIGPFqW5nIGPDswp0aOG7gyB0acOqdSBj4buxYywgbmjGsCBj4bqjbSBnacOhYyBideG7k24gYsOjLCBsbyBs4bqvbmcsIGhv4bq3YyB04bupYyBnaeG6rW4uIMSQ4bq3YyBiaeG7h3QsCmtoaSB04bqnbiBzdeG6pXQgdsOgIGPDoWNoIHRo4bupYyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG5nw6B5IGPDoG5nIHRy4bufIG7Dqm4gxJFhIGThuqFuZwp2w6AgcGjhu6ljIHThuqFwLCB2aeG7h2MgaGnhu4N1IHLDtSBoxqFuIHbhu4Egbmjhu69uZyB0w6FjIMSR4buZbmcgbsOgeSB0cuG7nyBuw6puIGPhuqVwIHRoaeG6v3QuClZp4buHYyBuZ2hpw6puIGPhu6l1IHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGtow7RuZwpjaOG7iSBnacO6cCBjaMO6bmcgdGEgaGnhu4N1IHLDtSBoxqFuIHbhu4EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBuw6B5IG3DoCBjw7JuIGPDswp0aOG7gyDEkcawYSByYSBjw6FjIGJp4buHbiBwaMOhcCBo4buXIHRy4bujIHTDom0gbMO9IGhp4buHdSBxdeG6oywgZ8OzcCBwaOG6p24gY+G6o2kgdGhp4buHbiBjaOG6pXQKbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBj4bunYSBj4buZbmcgxJHhu5NuZy4KCiMjICoqTeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdSoqCgpN4bulYyB0acOqdSBj4bunYSBuZ2hpw6puIGPhu6l1IG7DoHkgbMOgIHBow6JuIHTDrWNoIHbDoCDEkcOhbmggZ2nDoSB0w6FjIMSR4buZbmcgY+G7p2Egdmnhu4djCnPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgxJHhur9uIHPhu6ljIGtob+G6uyB0aW5oIHRo4bqnbiBj4bunYSBuZ8aw4budaSBz4butIGThu6VuZywgxJHhurdjIGJp4buHdApsw6AgdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjLiBD4bulIHRo4buDLCBuZ2hpw6puIGPhu6l1IHPhur0gxJFp4buBdSB0cmEgbeG7kWkgcXVhbiBo4buHIGdp4buvYQpjw6FjIHnhur91IHThu5EgbmjGsCB0deG7lWksIGdp4bubaSB0w61uaCwgbuG7gW4gdOG6o25nIHRydXnhu4FuIHRow7RuZyB4w6MgaOG7mWkgxJHGsOG7o2Mgc+G7rQpk4bulbmcsIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5LCBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nLCBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbgrEkcaw4bujYywgc+G7kSBsxrDhu6NuZyBiw6xuaCBsdeG6rW4gdsOgIHPhu5EgbMaw4bujbmcgdGluIG5o4bqvbiDEkcaw4bujYyBn4butaSB24bubaSB0cuG6oW5nIHRow6FpCmPhuqNtIHjDumMgY2hpIHBo4buRaSBj4bunYSBuZ8aw4budaSBkw7luZy4gTmdoacOqbiBj4bupdSBuaOG6sW0geMOhYyDEkeG7i25oIHbDoCBoaeG7g3UgcsO1CmPDoWNoIG3DoCBuaOG7r25nIHnhur91IHThu5EgbsOgeSB0xrDGoW5nIHTDoWMgdsOgIHTDoWMgxJHhu5luZyDEkeG6v24gY+G6o20geMO6YyBow6BuZyBuZ8OgeSBj4bunYQpuZ8aw4budaSBkw7luZywgcXVhIMSRw7MgY3VuZyBj4bqlcCBuaOG7r25nIHRow7RuZyB0aW4gcXVhbiB0cuG7jW5nIGdpw7pwIHjDonkgZOG7sW5nIGPDoWMKY2hp4bq/biBsxrDhu6NjIG5o4bqxbSBuw6JuZyBjYW8gc+G7qWMga2jhu49lIHRpbmggdGjhuqduIGPhu6dhIG5nxrDhu51pIGTDuW5nIHRyb25nIHRo4budaQrEkeG6oWkga+G7uSB0aHXhuq10IHPhu5EuCgojIyAqKlBoxrDGoW5nIHBow6FwIG5naGnDqm4gY+G7qXUqKgoKU2F1IGtoaSB0aHUgdGjhuq1wIGThu68gbGnhu4d1LCBuZ2hpw6puIGPhu6l1IHPhur0gdGnhur9uIGjDoG5oIHBow6JuIHTDrWNoIHRo4buRbmcga8OqIG3DtAp04bqjIMSR4buDIGhp4buDdSByw7UgaMahbiB24buBIMSR4bq3YyDEkWnhu4NtIGPhu6dhIG3huqt1IG5naGnDqm4gY+G7qXUuIFRp4bq/cCB0aGVvLCBjw6FjIG3DtCBow6xuaApo4buTaSBxdXkgc+G6vSDEkcaw4bujYyB4w6J5IGThu7FuZyDEkeG7gyBraeG7g20gdHJhIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgY8OhYyBiaeG6v24uIEPDoWMgbcO0CmjDrG5oIGThu7EgYsOhbyBz4bq9IMSRxrDhu6NjIGzhu7FhIGNo4buNbiBk4buxYSB0csOqbiBjw6FjIGNo4buJIHPhu5EgxJHhuqNtIGLhuqNvIHTDrW5oIHBow7kgaOG7o3AgdsOgCsSR4buZIGNow61uaCB4w6FjIGNhby4gS+G6v3QgcXXhuqMgY+G7p2EgbmdoacOqbiBj4bupdSBz4bq9IGN1bmcgY+G6pXAgbmjhu69uZyBoaeG7g3UgYmnhur90IHPDonUKc+G6r2MgduG7gSDhuqNuaCBoxrDhu59uZyBj4bunYSB2aeG7h2Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDEkeG6v24gdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGPhu6dhCm5nxrDhu51pIGTDuW5nIHbDoCDEkeG7gSB4deG6pXQgY8OhYyBiaeG7h24gcGjDoXAgbmjhurFtIGdp4bqjbSB0aGnhu4N1IHTDoWMgxJHhu5luZyB0acOqdSBj4buxYywKxJHhu5NuZyB0aOG7nWkga2h1eeG6v24ga2jDrWNoIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbeG7mXQgY8OhY2ggdMOtY2ggY+G7sWMgdsOgIGzDoG5oCm3huqFuaC4KCiMgKipDSMavxqBORyAyOiBU4buUTkcgUVVBTiBMw50gVEhVWeG6vlQgTkdIScOKTiBD4buoVSoqCgojIyAqKlLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIChSZWxhdGl2ZSBSaXNrL1Jpc2sgUmF0aW8pKioKClPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBoYWkgdOG7tyBs4buHICTPgF8xJCB2w6AgJM+AXzIkIMSRxrDhu6NjIMSRw6FuaCBnacOhIHF1YSBzYWkgc+G7kQp0dXnhu4d0IMSR4buRaSAoJM+AXzEkIOKIkiAkz4BfMiQpIGNo4buJIGThu7FhIHbDoG8ga2hv4bqjbmcgY8OhY2ggZ2nhu69hIGhhaSB04bu3IGzhu4cgbsOgeSBtw6AKYuG7jyBxdWEgxJHhu5kgbOG7m24gdsOgIMO9IG5naMSpYSBj4bunYSBjaMO6bmcsIG5naMSpYSBsw6Aga2hv4bqjbmcgY8OhY2ggbmjGsCBuaGF1IHRow6wKxJHDoW5oIGdpw6Egc2FpIGzhu4djaCBuaMawIG5oYXUuIENo4bqzbmcgaOG6oW4ga2hpICTPgF8xJCA9IDAsMDEgdsOgICTPgF8yJCA9IDAsMDAxCnbDoCBraGkgJM+AXzEkID0gMCw0MTAgdsOgICTPgF8yJCA9IDAsNDAxIMSR4buBdSDEkcaw4bujYyDEkcOhbmggZ2nDoSBsw6AgY8OzIHNhaSBs4buHY2gKbmjGsCBuaGF1IChjw7luZyBt4bupYyBzYWkgbOG7h2NoIGzDoCAwLDAwOSkuIFR1eSBuaGnDqm4gbuG6v3UgY2jhu4kgZOG7sWEgdsOgbyBraG/huqNuZwpjw6FjaCBuw6B5IMSR4buDIMSRw6FuaCBnacOhLCBzbyBzw6FuaCBoYWkgdMawxqFuZyBxdWFuIGdp4buvYSBoYWkgdOG7tyBs4buHIHRow6wga2jDtG5nCsSR4bunLCB0aOG6rW0gY2jDrSBz4bq9IGLhu48gcXVhIG5o4buvbmcgw70gbmdoxKlhIHF1YW4gdHLhu41uZyBj4bunYSBz4buxIHTGsMahbmcgcXVhbiBj4bunYQpjaMO6bmcsIMSR4bq3YyBiaeG7h3QgbMOgIGtoaSBoYWkgdOG7tyBs4buHIG7DoHkgY8O5bmcgZ+G6p24gMCBob+G6t2MgY8O5bmcgZ+G6p24gMSwgaG/hurdjCmPDuW5nIGfhuqduIDAsNS4KCkvDvSBoaeG7h3UgJM+AX2kkIGzDoCB04bu3IGzhu4cg4oCcdGjDoG5oIGPDtG5n4oCdIGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljIChyZXNwb25zZQp2YXJpYWJsZSkgdMawxqFuZyDhu6luZyB24bubaSB04burbmcgYmnhu4N1IGhp4buHbiBj4bunYSBiaeG6v24gxJHhu5ljIGzhuq1wLgoKVOG7qyBi4bqjbmcgdOG6p24geHXhuqV0LCBjaMO6bmcgdGEgdMOtbmggJFxmcmFje8+AXzF9e8+AXzJ9JCwgcGjDom4gc+G7kSBuw6B5IGfhu41pIGzDoApS4bunaSBybyB0xrDGoW5nIMSR4buRaSBnaeG7r2EgMiBiaeG7g3UgaGnhu4duIGtow6FjIG5oYXUgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMuCgotICAgUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgbMOgIHPhu5Ega2jDtG5nIMOibS4KCi0gICBS4bunaSBybyB0xrDGoW5nIMSR4buRaSBi4bqxbmcgMSBraGkgdsOgIGNo4buJIGtoaSBiaeG6v24gxJHDoXAg4bupbmcgxJHhu5ljIGzhuq1wIHRoZW8KICAgIG5ow7NtLgoKLSAgIEPDoWMgdOG7tyBs4buHIHThu5VuZyB0aOG7gyAkz4BfMSQgdsOgICTPgF8yJCBuw7NpIGNodW5nIGzDoCBjaMawYSBiaeG6v3QsIG3DoCBxdWEKICAgIMSRaeG7gXUgdHJhIHRhIG5o4bqtbiDEkcaw4bujYyBjw6FjIHThu7cgbOG7hyBt4bqrdSB0xrDGoW5nIOG7qW5nIGzDoCAkZl8xJCB2w6AgJGZfMiQgS2hpCiAgICDEkcOzIHRhIGPDsyB04bu3IGzhu4c6JFxmcmFje2ZfMX17Zl8yfSQgZ+G7jWkgbMOgIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIG3huqt1LCB0YQogICAgZMO5bmcgbsOzIMSR4buDIHjhuqVwIHjhu4kgY2hvIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpICRcZnJhY3vPgF8xfXvPgF8yfSQgdHLDqm4gdOG7lW5nCiAgICB0aOG7gy4KCiMjICoqVOG7tyBs4buHIGNow6puaCAoT2RkIFJhdGlvKSoqCgpO4bq/dSBn4buNaSB4w6FjIHN14bqldCDigJx0aMOgbmggY8O0bmfigJ0gY+G7p2EgYmnhu4N1IGhp4buHbiB0aOG7qSBpIGPhu6dhIGJp4bq/biDEkeG7mWMgbOG6rXAgbMOgCiTPgF9pJCB0aMOsIGNow7puZyB0YSBrw60gaGnhu4d1IFThu7cgbOG7hyBjxrDhu6NjIChvZGQpIGPhu6dhIGJp4buDdSBoaeG7h24gbsOgeSBsw6AgJG9kZF9pJAp2w6AgxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEgbmjGsCBzYXU6CgokJG9kZF9pPVxmcmFje8+AX2l9ezEtz4BfaX0kJAoKTmdoxKlhIGzDoCBjaMO6bmcgdGEgdMOtbmggdOG7tyBs4buHIHRow6BuaCBjw7RuZyB0aGVvIHThu6tuZyBow6BuZyB0cm9uZyBi4bqjbmcgbmfhuqt1Cm5oacOqbi4KClThu7cgbOG7hyBjaMOqbmggY+G7p2EgYmnhu4N1IGhp4buHbiB0aOG7qSBpIHbDoCBiaeG7g3UgaGnhu4duIHRo4bupIGogxJHGsOG7o2Mga8OtIGhp4buHdSBsw6AKJFx0aGV0YV9paiQgdsOgIMSRxrDhu6NjIMSR4buLbmggbmdoxKlhOgoKJCRcdGhldGEgPVxmcmFje29kZF9pfXtvZGRfan0gPSBcZnJhY3tcZnJhY3vPgF9pfXsxLc+AX2l9fXtcZnJhY3vPgF9qfXsxLc+AX2p9fSA9IFxmcmFje3vPgF9pKDEtIHvPgF9qfSl9fXvPgF9qKDEtIHvPgF9pKX19JCQKCiMjICoqTcO0IGjDrG5oIGjhu5NpIHF1eSoqCgpNw7QgaMOsbmggaOG7k2kgcXV5IMSRxrDhu6NjIGNoaWEgbMOgbSAyIG5ow7NtOgoKLSAgIE3DtCBow6xuaCBo4buTaSBxdXkgY+G7lSDEkWnhu4NuCgokJFxtdV9pPSBFW3lfaV0gPc6yXzArzrJfMXhfezFpfSvii68rzrJfa1hfe2tpfSQkCgrEkOG7gyBtw7QgaMOsbmggaOG7k2kgcXV5IGPhu5UgxJFp4buDbiBwaOG6o2kgdGjhu49hIG3Do24gMyDEkWnhu4F1IGtp4buHbiBzYXU6CgoxLiAgVMOtbmggdHV54bq/biB0w61uaCBj4bunYSBt4buRaSBsacOqbiBo4buHIGdp4buvYSBjw6FjIHnhur91IHThu5EgZOG7sSDEkW/DoW4gdsOgIGJp4bq/biBr4bq/dAogICAgcXXhuqMuCgoyLiAgUGjDom4gcGjhu5FpIGNodeG6qW4KCjMuICBQaMawxqFuZyBzYWkga2jDtG5nIMSR4buVaSBj4bunYSBwaMOibiBwaOG7kWkKCi0gICBNw7QgaMOsbmggaOG7k2kgcXV5IHThu5VuZyBxdcOhdDoKCiQkXG11X2k9IGdeey0xfSAozrJfMCvOsl8xeF97MWl9K+KLryvOsl9rWF97a2l9KSQkCgpIb+G6t2MKCiQkZyhcbXVfaSk9ICDOsl8wK86yXzF4X3sxaX0r4ouvK86yX2tYX3traX0kJAoKVHJvbmcgbcO0IGjDrG5oIG7DoHkgaMOgbSBnKC4pxJHGsOG7o2MgZ+G7jWkgbMOgIGjDoG0gbGnDqm4ga+G6v3QgKGxpbmsgZnVuY3Rpb24pIHbDoApnKC4pIHBo4bqjaSBsw6AgaMOgbSDEkcahbiDEkWnhu4d1LgoKVHJvbmcgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSB0dXnhur9uIHTDrW5oIHThu5VuZyBxdcOhdCBz4bq9IGPDsyAzIHRow6BuaCBwaOG6p246CgpUaMOgbmggcGjhuqduIGjhu4cgdGjhu5FuZyAoc3lzdGVtYXRpYyBjb21wb25lbnQpOiBMw6AgdGjDoG5oIHThu5UgaOG7o3AgdHV54bq/biB0w61uaApj4bunYSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAuCgpUaMOgbmggcGjhuqduIG5n4bqrdSBuaGnDqm4gKHJhbmRvbSBjb21wb25lbnQpOiBMw6AgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IGPhu6dhIGJp4bq/bgpwaOG7pSB0aHXhu5ljIChkZXBlbmRlbnQvcmVzcG9uc2UgdmFyaWFibGUpLiBIw6BtIGxpw6puIGvhur90IChsaW5rIGZ1bmN0aW9uKS4KCioqTcO0IGjDrG5oIExvZ2lzdGljKioKCiQkbG9naXQoz4ApPWxvZyjPgCh4KS8oMeKIks+AKHgpKSkgPSDOsSArIM6yeCQkCgrEkMOieSDEkcaw4bujYyBn4buNaSBsw6AgbcO0IGjDrG5oIGxvZ2lzdGljIGhheSBtw7QgaMOsbmggbG9naXQuIFThu6sgbcO0IGjDrG5oIHRhIGPDswoKJCTPgCh4KSA9IDEgLyAoMStlXnsoLc6xLc6yeCl9KSQkCgpNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIGzDoCB0csaw4budbmcgaOG7o3AgxJHhurdjIGJp4buHdCBj4bunYSBHTE0sIHRow6BuaCBwaOG6p24gbmfhuqt1Cm5oacOqbiAodGjDoG5oIGPDtG5nLCB0aOG6pXQgYuG6oWkpIGzDoCBuaOG7iyBwaMOibi4gSMOgbSBsacOqbiBr4bq/dCBsb2dpdCBj4bunYSAkz4AkIGzDoApwaMOpcCBiaeG6v24gxJHhu5VpICRsb2coz4AvKDHiiJLPgCkpJCwga8O9IGhp4buHdSBi4bufaSAkbG9naXQoz4ApJC4gQ8OhYyBtw7QgaMOsbmggaOG7k2kKcXV5IGxvZ2lzdGljIHRoxrDhu51uZyDEkcaw4bujYyBn4buNaSBsw6AgbG9naXQuIExvZ2l0IGzDoCB0aGFtIHPhu5EgdOG7sSBuaGnDqm4gY+G7p2EKcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYy4KCiMjICoqxq/hu5tjIGzGsOG7o25nIGjDoG0gaOG7k2kgcXV5IGNobyBk4buvIGxp4buHdSBuaOG7iyBwaMOibioqCgoqKk3DtCBow6xuaCBsb2dpdCoqCgokJGxvZ2l0KM+AKT1sb2coz4AvKDHiiJLPgCkpJCQKCk3DtCBow6xuaCBMb2dpdCDEkcaw4bujYyB2aeG6v3QgZMaw4bubaSBk4bqhbmcKCiQkbG9naXQoz4ApPWxvZyjPgC8oMeKIks+AKSk9zrJfMCvOsl8xWF8xK86yXzJYXzIr4ouvK86yX2tYX2skJAoKKipNw7QgaMOsbmggcHJvYml0KioKCkjhu5NpIHF1eSBQcm9iaXQsIMSRw7RpIGtoaSBjw7JuIMSRxrDhu6NjIGfhu41pIGzDoCBtw7QgaMOsbmggUHJvYml0IMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDCsaw4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggY8OzIGJp4bq/biBwaOG7pSB0aHXhu5ljIGThuqFuZyBuaOG7iyBwaMOibi4KCiQkcHJvYml0KM+AKSA9IM6mXuKIkjEoz4ApJCQKCk3DtCBow6xuaCBQcm9iaXQgxJHGsOG7o2Mgdmnhur90IGTGsOG7m2kgZOG6oW5nCgokJHByb2JpdCjPgCh4KSkgPSDOsl8wK86yXzFYXzErzrJfMlhfMivii68rzrJfa1hfayQkIFwjIyAqKkPDoWMgdGnDqnUgY2jDrSDEkcOhbmgKZ2nDoSBtw7QgaMOsbmgqKgoKxJDhu4MgxJHDoW5oIGdpw6EgY8OhYyBtw7QgaMOsbmggaOG7k2kgY+G7lSDEkWnhu4NuIGNow7puZyB0YSB0aMaw4budbmcgZOG7sWEgdsOgbyBo4buHIHPhu5EgeMOhYwrEkeG7i25oIG3DtCBow6xuaCAoJFJfMiQpLCBuaMawbmcgxJHhu5FpIHbhu5tpIG3DtCBjw6FjIG3DtCBow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaAp04buVbmcgcXXDoXQgY2jDum5nIHRhIHPhu60gZOG7pW5nIGPDoWMgdGnDqnUgY2jDrSBzYXU6CgotICAgKipBSUMgLSBBa2Fpa2UgSW5mb3JtYXRpb24gQ3JpdGVyaW9uKioKCkFJQyDEkcaw4bujYyDEkeG7gSB4deG6pXQgYuG7n2kgQWthaWtlIEhpcm90dWd1LCBt4buZdCBuaMOgIHRo4buRbmcga8OqIGjhu41jIG5nxrDhu51pIE5o4bqtdC4KQUlDIGzDoCBt4buZdCB0acOqdSBjaMOtIMSRxrDhu6NjIHPhu60gZOG7pW5nIG3hu5l0IGPDoWNoIHBo4buVIGJp4bq/biDEkeG7gyDEkcOhbmggZ2nDoSBt4buZdCBtw7QKaMOsbmggaOG7k2kgcXV5IMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBi4bufaSBwaMawxqFuZyBwaMOhcCBNYXhpbXVtIExpa2VraWhvb2QgKE1MKS4gTeG7mXQKY8OhY2ggY2h1bmcgY2h1bmcgZ2nDoSB0cuG7iyBj4bunYSBBSUMgY8Ogbmcgbmjhu48gdGjDrCBtw7QgaMOsbmggY8OgbmcgdOG7kXQuIEFJQyDEkcaw4bujYwp0w61uaCBi4bqxbmcgY8O0bmcgdGjhu6ljIHNhdToKCiQkQUlDPeKIkjJsbihMKSsyayQkCgpW4bubaSBMIGzDoCBnacOhIHRy4buLIGPhu7FjIMSR4bqhaSBj4bunYSBow6BtIGjhu6NwIGzDvSAobGlrZWxpaG9vZCBmdW5jdGlvbikgdsOgIGsgbMOgIHPhu5EKdGhhbSBz4buRIGPhu6dhIG3DtCBow6xuaC4KCktoaSB0aOG7sWMgaGnhu4duIHZp4buHYyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4bqxbmcgbOG7h25oIGdsbSB0aMOsIGNo4buJIHPhu5EKQUlDIMSRw6MgxJHGsOG7o2MgdMOtbmggdG/DoW4gdsOgIHRo4buDIGhp4buHbiB0csOqbiBi4bqjbmcga+G6v3QgcXXhuqMgKCBi4bqxbmcgbOG7h25oIHN1bW1hcnkpCgotICAgKipEZXZpYW5jZSoqIERldmlhbmNlIGPFqW5nIGzDoCBt4buZdCB0acOqdSBjaMOtIHLhuqV0IHBo4buVIGJp4bq/biDEkcaw4bujYyBz4butIGThu6VuZwogICAgxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgSOG7o3AKICAgIGzDvSBj4buxYyDEkeG6oWkgKE1MKS4gTeG7mXQgY8OhY2ggdOG7lW5nIHF1w6EsIGPFqW5nIGdp4buRbmcgbmjGsCBjaOG7iSB0acOqdSBBSUMsIGdpw6EKICAgIHRy4buLIGPhu6dhIERldmlhbmNlIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0LgoKbMawdSDDvTogS2hpIHRo4buxYyBoaeG7h24gdmnhu4djIMaw4bubYyBsxrDhu6NuZyBtw7QgaMOsbmggaOG7k2kgcXV5IGLhurFuZyBs4buHbmggZ2xtIHRow6wKY2jhu4kgc+G7kSBBSUMgdsOgIERldmlhbmNlIMSRw6MgxJHGsOG7o2MgdMOtbmggdG/DoW4gdsOgIHRo4buDIGhp4buHbiB0csOqbiBi4bqjbmcga+G6v3QgcXXhuqMgKApi4bqxbmcgbOG7h25oIHN1bW1hcnkpLgoKLSAgICoqQnJpZXIgU2NvcmUqKiBMw6AgY2jhu4kgdGnDqnUgZMO5bmcgxJHhu4MgxJHDoW5oIGdpw6EgbcO0IGjDrG5oIGjhu5NpIHF1eQogICAgbG9naXN0aWMsIEJyaWVyIFNjb3JlIMSRxrDhu6NjIHTDrW5oIG5oxrAgc2F1OgoKJCRCPSgxL24pIOKIkShwX2niiJJvX2kpJCQKClRyb25nIMSRw7M6ICRwX2ksIG9faSQgbOG6p24gbMaw4bujdCBsw6AgZ2nDoSB0cuG7iyB4w6FjIHN14bqldCBxdWFuIHPDoXQgxJHGsOG7o2MsIHbDoCBnacOhCnRy4buLIHjDoWMgc3XhuqV0IHTDrW5oIHJhIHThu6sgbcO0IGjDrG5oLgoKIyAqKkNIxq/GoE5HIDM6IEvhur5UIFFV4bqiIE5HSEnDik4gQ+G7qFUqKgoKIyMgKipE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1KioKCkThu68gbGnhu4d1IMSRxrDhu6NjIGNo4buNbiDEkeG7gyBuZ2hpw6puIGPhu6l1IMSRxrDhu6NjIGzhuqV5IHThu6sgdHJhbmcgd2ViIEthZ2dsZS5jb20uIELhu5kgZOG7rwpsaeG7h3UgbsOgeSDEkcaw4bujYyBuZ2hpw6puIGPhu6l1IHbDoCBjaHXhuqluIGLhu4sgYuG7n2kgTmjDoCBwaMOhdCBtaW5oIEFJIEVtaXJoYW4gQlVMVVQuClRodSB0aOG6rXAgdGjDtG5nIHRpbiBjw7MgZ2nDoSB0cuG7iyB24buBIHZp4buHYyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHbDoCB0cuG6oW5nIHRow6FpCmPhuqNtIHjDumMgY+G7p2EgbmfGsOG7nWkgZMO5bmcgZOG7sWEgdHLDqm4gaG/huqF0IMSR4buZbmcgY+G7p2EgaOG7jS4gROG7ryBsaeG7h3UgZ+G7k20gOSBiaeG6v24gdsOgCjEwMyBxdWFuIHPDoXQ6CgoqKkFnZSoqIDogVHXhu5VpIGPhu6dhIG5nxrDhu51pIHPhu60gZOG7pW5nLgoKKipHZW5kZXIqKiA6IEdp4bubaSB0w61uaCBj4bunYSBuZ8aw4budaSBkw7luZyAoTuG7rywgTmFtLCBOb24tYmluYXJ5KS4KIk5vbi1iaW5hcnkiIG5naMSpYSBsw6AgcGhpIG5o4buLIGdp4bubaS4gTm9uLWJpbmFyeSBsw6AgbeG7mXQgdGh14bqtdCBuZ+G7ryBkw7luZyDEkeG7gwpjaOG7iSBuaOG7r25nIG5nxrDhu51pIGtow7RuZyB4w6FjIMSR4buLbmggZ2nhu5tpIHTDrW5oIGPhu6dhIG3DrG5oIGhvw6BuIHRvw6BuIGzDoCBuYW0gaG/hurdjCm7hu68uCgoqKlBsYXRmb3JtKiogOiBO4buBbiB04bqjbmcgdHJ1eeG7gW4gdGjDtG5nIHjDoyBo4buZaSDEkcaw4bujYyBz4butIGThu6VuZyAodsOtIGThu6U6Ckluc3RhZ3JhbSwgVHdpdHRlciwgRmFjZWJvb2ssIExpbmtlZEluLCBTbmFwY2hhdCwgV2hhdHNhcHAsIFRlbGVncmFtKS4KCioqRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcykqKiA6IFRo4budaSBnaWFuIGjDoG5nIG5nw6B5IGTDoG5oIGNobyBu4buBbiBjw6FjCnThuqNuZyAodMOtbmggYuG6sW5nIHBow7p0KS4KCioqUG9zdHNfUGVyX0RheSoqIDogU+G7kSBiw6BpIMSRxINuZyBsw6puIGPDoWMgbuG7gW4gdOG6o25nIG3hu5dpIG5nw6B5LgoKKipMaWtlc19SZWNlaXZlZF9QZXJfRGF5KiogOiBT4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeS4KCioqQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSoqIDogU+G7kSBsxrDhu6NuZyBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5LgoKKipNZXNzYWdlc19TZW50X1Blcl9EYXkqKiA6IFPhu5EgbMaw4bujbmcgdGluIG5o4bqvbiDEkcaw4bujYyBn4butaSBt4buXaSBuZ8OgeS4KCioqRG9taW5hbnRfRW1vdGlvbioqIDogVHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGNoaSBwaOG7kWkgY+G7p2EgbmfGsOG7nWkgZMO5bmcgdHJvbmcKbmfDoHkgKHbDrSBk4bulOiBWdWkgduG6uywgQnXhu5NuIGLDoywgVOG7qWMgZ2nhuq1uLCBMbyBs4bqvbmcsIENow6FuIG7huqNuLCBUcnVuZyB0w61uaCkuCgojIyAqKljDoWMgxJHhu4tuaCBiaeG6v24gcGjhu6UgdGh14buZYyoqCgpUcm9uZyBuZ2hpw6puIGPhu6l1IG7DoHksIGJp4bq/biBwaOG7pSB0aHXhu5ljIMSRxrDhu6NjIGNo4buNbiDEkeG7gyBwaMOibiB0w61jaCBsw6AKIkRvbWluYW50X0Vtb3Rpb24iIChUcuG6oW5nIHRow6FpIGPhuqNtIHjDumMgY2hpIHBo4buRaSkuIEJp4bq/biBuw6B5IMSRxrDhu6NjIGzhu7FhIGNo4buNbgp2w6wgbsOzIHBo4bqjbiDDoW5oIHRy4buxYyB0aeG6v3AgdMOsbmggdHLhuqFuZyBz4bupYyBraOG7j2UgdGluaCB0aOG6p24gY+G7p2EgbmfGsOG7nWkgc+G7rSBk4bulbmcKbeG6oW5nIHjDoyBo4buZaS4gQ8OhYyB0cuG6oW5nIHRow6FpIGPhuqNtIHjDumMgbmjGsCBo4bqhbmggcGjDumMsIGJ14buTbiBiw6MsIGxvIGzhuq9uZywgdOG7qWMKZ2nhuq1uLCB2w6AgY2jDoW4gbuG6o24gxJHhu4F1IGzDoCBjw6FjIGJp4buDdSBoaeG7h24gY+G7pSB0aOG7gyBj4bunYSB0w6xuaCB0cuG6oW5nIHTDom0gbMO9LCBjaG8KcGjDqXAgY2jDum5nIHRhIMSRw6FuaCBnacOhIMSRYSBjaGnhu4F1IHbhu4Egc+G7qWMga2jhu49lIHRpbmggdGjhuqduIGPhu6dhIG5nxrDhu51pIGTDuW5nLgoKLSAgICoqQmnhur9uIMSQ4buLbmggbMaw4bujbmcqKjogQ8OzIDYgYmnhur9uIMSR4buLbmggbMaw4bujbmcgZ+G7k206IEFnZSwKICAgIERhaWx5X1VzYWdlX1RpbWUsIFBvc3RzX1Blcl9EYXksIExpa2VzX1JlY2VpdmVkX1Blcl9EYXksCiAgICBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5IHbDoCBNZXNzYWdlc19TZW50X1Blcl9EYXkuCgotICAgKipCaeG6v24gxJHhu4tuaCB0w61uaCoqOiBDw7MgMyBiaeG6v24gxJHhu4tuaCB0w61uaCBn4buTbTogR2VuZGVyLCBQbGF0Zm9ybSB2w6AKICAgIERvbWluYW50X0Vtb3Rpb24uCgotICAgKipE4buvIGxp4buHdSBuZ2hpw6puIGPhu6l1KioKCmBgYHtyfQpzdHIoZCkKYGBgCgpgYGB7cn0KbGlicmFyeShkYXRhLnRhYmxlKQpkYXRhLnRhYmxlKGQpCmBgYAoKIyMgKipUaOG7kW5nIGvDqiBtw7QgdOG6oyoqCgojIyMgKipUaOG7kW5nIGvDqiBtw7QgdOG6oyBjaG8gdOG7q25nIGJp4bq/bioqCgojIyMjICoqQmnhur9uIEFnZSoqCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KdGFibGUoZCRBZ2UpCmBgYAoKYGBge3J9CnByb3AudGFibGUodGFibGUoZCRBZ2UpKSAqMTAwCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KYSA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGQkQWdlKSkgCmNvbG5hbWVzKGEpIDwtIGMoIlR14buVaSIsICJjb3VudCIpCmdncGxvdChhLCBhZXMoeCA9IFR14buVaSwgeSA9IGNvdW50LCBmaWxsID0gVHXhu5VpKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgbGFicyggeCA9ICJUdeG7lWkiLCB5ID0gIlPhu5EgbMaw4bujbmciKSArCiAgdGhlbWVfbWluaW1hbCgpCmBgYAoKVHJvbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5LCBjw6FjIGPDoSB0aOG7gyDEkcaw4bujYyBxdWFuIHPDoXQgY8OzIMSR4buZIHR14buVaSB04burIDIxIHR14buVaSDEkeG6v24KMzUgdHXhu5VpLiBT4buRIHR14buVaSBj4bunYSBuaOG7r25nIG5nxrDhu51pIMSRxrDhu6NjIHF1YW4gc8OhdCBjaGnhur9tIG5oaeG7gXUgbmjhuqV0IGzDoCAyNwp0deG7lWkgKDEyLjYyJSkgdsOgIDI4IHR14buVaSAoMTIsNjIlKS4gTmfGsOG7o2MgbOG6oWkgbmjhu69uZyBuZ8aw4budaSBjw7MgxJHhu5kgdHXhu5VpIHThu6sKMzMgdHXhu5VpIMSR4bq/biAzNSB0deG7lWkgY2hp4bq/bSDDrXQgaMahbiB24bubaSB04bu3IGzhu4cgYuG6sW5nIG5oYXUgbMOgIDIuOTElLiDEkGnhu4F1IG7DoHkKY8OzIHRo4buDIHRo4bqleSBz4buRIGzGsOG7o25nIG5nxrDhu51pIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgxJFhIHBo4bqnbiBsw6Agbmjhu69uZyBuZ8aw4budaQp0cuG6uyBkxrDhu5tpIDMwIHR14buVaSAodGjDtG5nIHF1YSBow6xuaCDhuqNuaCDEkeG7kyB0aOG7iykgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5LgoKIyMjIyAqKkJp4bq/biBHZW5kZXIqKgoKKipC4bqjbmcgdOG6p24gc+G7kVxfIELhuqNuZyB04bqnbiBzdeG6pXQqKgoKYGBge3J9CnRhYmxlKGQkR2VuZGVyKQpgYGAKCmBgYHtyfQpiIDwtIHByb3AudGFibGUodGFibGUoZCRHZW5kZXIpKSAqIDEwMApiCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KcGllKGIsIGxhYmVscyA9IHBhc3RlKG5hbWVzKGIpLCByb3VuZChiLCAyKSwgIiUiKSwKICAgIG1haW4gPSAixJDhu5MgdGjhu4sgdGjhu4MgaGnhu4duIHThu7cgbOG7hyBnaeG7m2kgdMOtbmgiKQpgYGAKCsSQ4buTIHRo4buLIHRyw6puIGJp4buDdSBoaeG7h24gZ2nhu5tpIHTDrW5oIE1hbGUgY2hp4bq/bSDEkWEgc+G7kSB0cm9uZyB04buVbmcgcXVhbiBzw6F0IHbhu5tpCjQ2LjYlLCBnaeG7m2kgdMOtbmggTm9uLWJpbmFyeSBjaGnhur9tIG5oaeG7gXUgdGjhu6kgMiB24bubaSAyOS4xMyUsIGdp4bubaSB0w61uaApGZW1hbGUgeOG6v3AgdGjhu6kgMyB24bubaSAyNC4yNyUuIEjhuqd1IGjhur90IG3hu41pIG5nxrDhu51pIGLhuqV0IGvhu4MgZ2nhu5tpIHTDrW5oIG7DoG8gY8WpbmcKxJHhu4F1IHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkuCgojIyMjICoqQmnhur9uIFBsYXRmb3JtKioKCioqQuG6o25nIHThuqduIHPhu5FcXyBC4bqjbmcgdOG6p24gc3XhuqV0KioKCmBgYHtyfQp0YWJsZShkJFBsYXRmb3JtKQpwcm9wLnRhYmxlKHRhYmxlKGQkUGxhdGZvcm0pKSoxMDAKYGBgCgoqKsSQ4buTIHRo4buLKioKCmBgYHtyfQpkIHw+IGdncGxvdCggYWVzKCB4ID0gZCRQbGF0Zm9ybSwgeT0gYWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGw9JyM5QUNEMzInKSArIGdlb21fdGV4dChhZXMobGFiZWw9IHNjYWxlcyA6OiBwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSksYWNjdXJhY3k9LjAxKSksIHN0YXQgPSAnY291bnQnLCBjb2xvcj0gJ2JsYWNrJywgdmp1c3Q9IC0uNSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB4bGFiKCdO4buBbiB04bqjbmcnKSArIHlsYWIoJ1Thu7cgbOG7hycpCmBgYAoKVOG7tyBs4buHIHPhu60gZOG7pW5nIOG7qW5nIGThu6VuZyBGYWNlYm9vayBsw6AgcGjhu5UgYmnhur9uIG5o4bqldCB0cm9uZyBi4buZIGThu68gbGnhu4d1IHbhu5tpCjI0LjI3JSBuZ8aw4budaSBkw7luZyB2w6Ag4bupbmcgZOG7pW5nIGPDsyB04bu3IGzhu4cgbmfGsOG7nWkgZMO5bmcgw610IG5o4bqldCBsw6AgV2hhdHNhcHAKduG7m2kgMy44OCUuIFR3aXR0ZXIgbMOgIOG7qW5nIGThu6VuZyB0aOG7qSAyIGPDsyBuaGnhu4F1IG5nxrDhu51pIGTDuW5nIG5o4bqldCB24bubaQoxOC40NSUsIDQg4bupbmcgZOG7pW5nIGPDsm4gbOG6oWkgbMOgIEluc3RhZ3JhbSwgTGlua2VkbG4sIFNuYXBjaGF0IHbDoCBUZWxlZ3JhbQpjw7MgdOG7tyBs4buHIG5nxrDhu51pIGTDuW5nIHjhuqVwIHjhu4kgdGhlbyB0aOG7qSB04buxIDE1LjUzJSwgMTQuNTYlLCAxMi42MiUgdsOgIDEwLjY4JS4KUXVhIMSRw7MgdGEgY8OzIHRo4buDIHRo4bqleSBGYWNlYm9vayDEkcaw4bujYyBz4butIGThu6VuZyBy4buZbmcgcsOjaSBuaGnhu4F1IG5o4bqldCB2w6wg4bupbmcKZOG7pW5nIGThu4UgZMOgbmcgdGhhbyB0w6FjLCBj4bqtcCBuaOG6rXQgdGjDtG5nIHRpbiBuaGFuaCBjaMOzbmcgdsOgIGPDsyBuaGnhu4F1IHRp4buHbgrDrWNoIHRp4buHbiBs4bujaSBraGkgc+G7rSBk4bulbmcKCiMjIyMgKipCaeG6v24gRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcykqKgoKKipNw6MgaG/DoSBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBEYWlseV9Vc2FnZV9UaW1lIHRow6BuaCBiaeG6v24gxJHhu4tuaCB0w61uaCoqCgrEkOG7gyBk4buFIHBow6JuIHTDrWNoIGjGoW4sIHRhIGNoaWEgbOG6oWkgYmnhur9uIERhaWx5X1VzYWdlX1RpbWUgdGhlbyBjw6FjIGtob+G6o25nCm5oxrAgc2F1OgoKLSAgIFRo4bqlcDogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyBkw6BuaCB0aOG7nWkgZ2lhbiB04burIGTGsOG7m2kgxJHhur9uIDEgdGnhur9uZyB0xrDGoW5nCiAgICDEkcawxqFuZyA2MHAgxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaS4KCi0gICBUcnVuZyBiw6xuaDogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyBkw6BuaCB0aOG7nWkgZ2lhbiB04burIHRyw6puIDEgdGnhur9uZyDEkeG6v24gMgogICAgdGnhur9uZyB0xrDGoW5nIMSRxrDGoW5nIDEyMHAgxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaS4KCi0gICBDYW8gOiBT4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIGTDoG5oIHRo4budaSBnaWFuIHThu6sgdHLDqm4gMiB0aeG6v25nIHRy4bufIGzDqm4gxJHhu4MKICAgIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkuCgpgYGB7cn0KZHRpbWU8LSBjdXQoeCA9IGQkYERhaWx5X1VzYWdlX1RpbWUgKG1pbnV0ZXMpYCwKICAgIGJyZWFrcyA9IGMoMCwgNjAsIDEyMCwgMjAwKSwgCiAgICBsYWJlbHMgPSBjKCJUaOG6pXAiLCAiVHJ1bmcgYsOsbmgiLCAiQ2FvIiksCiAgICByaWdodCA9IFRSVUUpIApgYGAKCioqQuG6o25nIHThuqduIHPhu5FcXyBC4bqjbmcgdOG6p24gc3XhuqV0KioKCmBgYHtyfQp0YWJsZShkdGltZSkKcHJvcC50YWJsZSh0YWJsZShkdGltZSkpKjEwMApgYGAKCioqxJDhu5MgdGjhu4sqKgoKYGBge3J9CmQgfD4gZ2dwbG90KCBhZXMoIHggPSBkdGltZSwgeT0gYWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGw9ICJpbmRpYW5yZWQiKSArIGdlb21fdGV4dChhZXMobGFiZWw9IHNjYWxlcyA6OiBwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSksYWNjdXJhY3k9LjAxKSksIHN0YXQgPSAnY291bnQnLCBjb2xvcj0gJ2JsYWNrJywgdmp1c3Q9IC0uNSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB4bGFiKCdUaOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGjhurFuZyBuZ8OgeScpICsgeWxhYignU+G7kSBuZ8aw4budaSBkw7luZycpCgpgYGAKClPhu5EgbMaw4bujbmcgbmfGsOG7nWkgZMO5bmcgZMOgbmggdGjhu51pIGdpYW4gdOG7qyBkxrDhu5tpIMSR4bq/biAxIHRp4bq/bmcgdMawxqFuZyDEkcawxqFuZyA2MHAKxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjaGnhur9tIDI2LjIxJSwgxJFhIHPhu5EgbmfGsOG7nWkgZMO5bmcgZMOgbmggdGjhu51pIGdpYW4gdOG7qwp0csOqbiAxIHRp4bq/bmcgxJHhur9uIDIgdGnhur9uZyB0xrDGoW5nIMSRxrDGoW5nIDEyMHAgxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjaGnhur9tCjYwLjE5JSB2w6Agc+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyBkw6BuaCB0aOG7nWkgZ2lhbiB04burIHRyw6puIDIgdGnhur9uZyB0cuG7nyBsw6puIMSR4buDCnPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY2hp4bq/bSAxMy41OSUuCgojIyMjICoqQmnhur9uIFBvc3RzX1Blcl9EYXkqKgoKKipC4bqjbmcgdOG6p24gc+G7kVxfIELhuqNuZyB04bqnbiBzdeG6pXQqKgoKYGBge3J9CnRhYmxlKGQkUG9zdHNfUGVyX0RheSkKcHJvcC50YWJsZSh0YWJsZShkJFBvc3RzX1Blcl9EYXkpKSoxMDAKYGBgCgpgYGB7cn0Kc3VtbWFyeShkJFBvc3RzX1Blcl9EYXkpCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KZ2dwbG90KGRhdGEgPSBkLCBhZXMoeCA9IFBvc3RzX1Blcl9EYXkpKSArCiAgZ2VvbV9oaXN0b2dyYW0oYmlud2lkdGggPSAxLCBmaWxsID0gIiMwNkE5QUUiLCBjb2xvciA9ICJibGFjayIpICsKICBsYWJzKHRpdGxlID0gIlBow6JuIHBo4buRaSBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nIG3hu5dpIG5nw6B5IiwKICAgICAgIHggPSAiU+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyBt4buXaSBuZ8OgeSIsCiAgICAgICB5ID0gIlThuqduIHPhu5EiKSArCiAgdGhlbWVfbWluaW1hbCgpCmBgYAoKU+G7kSBiw6BpIHBvc3QgdHJ1bmcgYsOsbmggxJHGsOG7o2MgxJHEg25nIHThuqNpIG3hu5dpIG5nw6B5IGzDoCAyIMSR4bq/biAzIGLDoGksIHPhu5EgYsOgaQpwb3N0IMSRxrDhu6NjIG5nxrDhu51pIMSRxINuZyB04bqjaSBuaGnhu4F1IG5o4bqldCBsw6AgOCBwb3N0IHbDoCDDrXQgbmjhuqV0IGzDoCAxIHBvc3QuIFF1YQrEkeG7kyB0aOG7iyB0csOqbiwgc+G7kSBsxrDhu6NuZyBiw6BpIHBvc3QgY8OzIHThuqduIHN14bqldCDEkcSDbmcgdOG6o2kgbmhp4buBdSByxqFpIHbDoG8gdOG7qyAxCnBvc3QgxJHhur9uIDMgcG9zdCB0cm9uZyAxIG5nw6B5LiBT4buRIGzGsOG7o25nIG5nxrDhu51pIHBvc3QgdOG7qyA1IGLDoGkgMSBuZ8OgeSB0cuG7nyDEkWkKZ2nhuqNtIMSRw6FuZyBr4buDLCDEkWnhu4F1IG7DoHkgY2hvIHRo4bqleSB4dSBoxrDhu5tuZyBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpIGNo4buJIGNoaWEKc+G6uyB0aMO0bmcgdGluIGPDoSBuaMOibiBj4bunYSBtw6xuaCDhu58gbeG7mXQgbeG7qWMgduG7q2EgcGjhuqNpLCBraMO0bmcgcXXDoSBuaGnhu4F1IGPFqW5nCmtow7RuZyBxdcOhIMOtdC4KCiMjIyMgKipCaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSoqCgoqKk3DoyBow7NhIGJp4bq/biBMaWtlc19SZWNlaXZlZF9QZXJfRGF5IHRow6BuaCBiaeG6v24gxJHhu4tuaCB0w61uaCoqCgpUaeG6v24gaMOgbmggbcOjIGjDs2EgYmnhur9uIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgdGjDoG5oIGJp4bq/biDEkeG7i25oIHTDrW5oIGLhurFuZwpjw6FjaCBjaGlhIGThu68gbGnhu4d1IHRow6BuaCAzIG3hu6ljIMSR4buZOgoKLSAgIFRo4bqlcDogU+G7kSBuZ8aw4budaSBkw7luZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkgdOG7qyAwIMSR4bq/biAzNSBsxrDhu6N0CiAgICB0aMOtY2gKCi0gICBUcnVuZyBiw6xuaDogU+G7kSBuZ8aw4budaSBkw7luZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkgdOG7qyAzNSDEkeG6v24gODAKICAgIGzGsOG7o3QgdGjDrWNoCgotICAgQ2FvOiBT4buRIG5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYyBsxrDhu6N0IHRow61jaCBt4buXaSBuZ8OgeSB04burIDgwIGzGsOG7o3QgdGjDrWNoCiAgICB0cuG7nyBsw6puLgoKYGBge3J9CmRsaWtlIDwtIGN1dCh4ID0gZCRMaWtlc19SZWNlaXZlZF9QZXJfRGF5LAogICAgYnJlYWtzID0gYygwLCAzNSwgODAsIDExMCksCiAgICBsYWJlbHMgPSBjKCJUaOG6pXAiLCAiVHJ1bmcgYsOsbmgiLCAiQ2FvIiksIAogICAgcmlnaHQgPSBUUlVFKSAKYGBgCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KdGFibGUoZGxpa2UpCnByb3AudGFibGUodGFibGUoZGxpa2UpKSoxMDAKYGBgCgoqKsSQ4buTIHRo4buLKioKCmBgYHtyfQoKZCB8PiBnZ3Bsb3QoIGFlcyggeCA9IGRsaWtlLCB5PSBhZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0gIiM2MjVEQjkiKSArIGdlb21fdGV4dChhZXMobGFiZWw9IHNjYWxlcyA6OiBwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSksYWNjdXJhY3k9LjAxKSksIHN0YXQgPSAnY291bnQnLCBjb2xvcj0gJ2JsYWNrJywgdmp1c3Q9IC0uNSkgKyB0aGVtZV9jbGFzc2ljKCkgKyB4bGFiKCdT4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeScpICsgeWxhYignU+G7kSBuZ8aw4budaSBkw7luZycpCgpgYGAKCkvhur90IHF14bqjIHRyw6puIGNobyB0YSB0aOG6pXkgcGjhuqduIGzhu5tuIG5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYyBsxrDhu6N0IHRow61jaCBt4buXaQpuZ8OgeSDhu58gbeG7qWMgdGjhuqVwIGNoaeG6v20gNjMuMTElLCBz4buRIG5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYyBsxrDhu6N0IHRow61jaCBt4buXaQpuZ8OgeSDhu58gbeG7qWMgdHJ1bmcgYsOsbmggY2hp4bq/bSAzMS4wNyUgdsOgIG3hu5l0IHPhu5Egw610IG5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYwpsxrDhu6N0IHRow61jaCBt4buXaSBuZ8OgeSDhu58gbeG7qWMgY2FvIGNoaeG6v20gNS44MyUuCgojIyMjICoqQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkqKgoKKipNw6MgaMOzYSBiaeG6v24gQ29tbWVudHNfUmVjZWl2ZWRfRGF5IHRow6BuaCBiaeG6v24gxJHhu4tuaCB0w61uaCoqCgpNw6MgaMOzYSBiaeG6v24gQ29tbWVudHNfUmVjZWl2ZWRfRGF5IHRow6BuaCBiaeG6v24gxJHhu4tuaCB0w61uaCBi4bqxbmcgY8OhY2ggY2hpYSBk4buvCmxp4buHdSB0aMOgbmggMyBt4bupYyDEkeG7mToKCi0gICBUaOG6pXA6IFPhu5EgbmfGsOG7nWkgZMO5bmcgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IHThu6sgMCDEkeG6v24gMTAKICAgIGzGsOG7o3QgYsOsbmggbHXhuq1uCgotICAgVHJ1bmcgYsOsbmg6IFPhu5EgbmfGsOG7nWkgZMO5bmcgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IHThu6sgMTAKICAgIMSR4bq/biAyNSBsxrDhu6N0IGLDrG5oIGx14bqtbgoKLSAgIENhbzogU+G7kSBuZ8aw4budaSBkw7luZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkgdOG7qyAyNSBsxrDhu6N0IGLDrG5oCiAgICBsdeG6rW4gdHLhu58gbMOqbgoKYGBge3J9CmRjb20gPC0gY3V0KHggPSBkJENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXksCiAgICBicmVha3MgPSBjKDAsIDEwLCAyNSwgNDApLAogICAgbGFiZWxzID0gYygiVGjhuqVwIiwgIlRydW5nIGLDrG5oIiwgIkNhbyIpLCAKICAgIHJpZ2h0ID0gVFJVRSkgCmBgYAoKKipC4bqjbmcgdOG6p24gc+G7kVxfIELhuqNuZyB04bqnbiBzdeG6pXQqKgoKYGBge3J9CnRhYmxlKGRjb20pCnByb3AudGFibGUodGFibGUoZGNvbSkpKjEwMApgYGAKCioqxJDhu5MgdGjhu4sqKgoKYGBge3J9CgpkIHw+IGdncGxvdCggYWVzKCB4ID0gZGNvbSwgeT0gYWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGw9ICIjOUFDRDMyIikgKyBnZW9tX3RleHQoYWVzKGxhYmVsPSBzY2FsZXMgOjogcGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpLGFjY3VyYWN5PS4wMSkpLCBzdGF0ID0gJ2NvdW50JywgY29sb3I9ICdibGFjaycsIHZqdXN0PSAtLjUpICsgdGhlbWVfY2xhc3NpYygpICsgeGxhYignU+G7kSBsxrDhu6NuZyBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5JykgKyB5bGFiKCdT4buRIG5nxrDhu51pIGTDuW5nJykKYGBgCgpU4bu3IGzhu4cgc+G7kSBuZ8aw4budaSBkw7luZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkg4bufIG3hu6ljIHRo4bqlcCB2w6AgbeG7qWMKdHJ1bmcgYsOsbmggY2hp4bq/bSB04bu3IGzhu4cgZ+G6p24gbmjGsCBi4bqxbmcgbmhhdSB24bubaSBz4buRIG5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYwpsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSDhu58gbeG7qWMgdGjhuqVwIGNoaeG6v20gNDQuNjYlIHbDoCBz4buRIG5nxrDhu51pIGTDuW5nIG5o4bqtbgrEkcaw4bujYyBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSDhu58gbeG7qWMgdHJ1bmcgYsOsbmggY2hp4bq/bSA0My42OSUuIENoaeG6v20gdOG7tyBs4buHCsOtdCBuaOG6pXQgbMOgIHPhu5EgbmfGsOG7nWkgZMO5bmcgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IOG7nyBt4bupYyBjYW8KY2hp4bq/bSAxMS42NSUuCgojIyMjICoqQmnhur9uIE1lc3NhZ2VzX1NlbnRfUGVyX0RheSoqCgoqKk3DoyBow7NhIGJp4bq/biBNZXNzYWdlc19TZW50X1Blcl9EYXkgdGjDoG5oIGJp4bq/biDEkeG7i25oIHTDrW5oKioKCk3DoyBow7NhIGJp4bq/biBNZXNzYWdlc19TZW50X1Blcl9EYXkgdGjDoG5oIGJp4bq/biDEkeG7i25oIHTDrW5oIGLhurFuZyBjw6FjaCBjaGlhIGThu68KbGnhu4d1IHRow6BuaCAzIG3hu6ljIMSR4buZOgoKLSAgIFRo4bqlcCBsw6AgdOG7qyAwIMSR4bq/biAxMCBsxrDhu6N0IHRpbiBuaOG6r24gxJHGsOG7o2MgZ+G7rWkgdHLDqm4gbmfDoHkuCgotICAgVHJ1bmcgYsOsbmggbMOgIHThu6sgMTAgxJHhur9uIDI1IGzGsOG7o3QgdGluIG5o4bqvbiDEkcaw4bujYyBn4butaSB0csOqbiBuZ8OgeS4KCi0gICBDYW8gbMOgIHThu6sgMjUgbMaw4bujdCB0aW4gbmjhuq9uIMSRxrDhu6NjIGfhu61pIHRyw6puIG5nw6B5IHRy4bufIGzDqm4uCgpgYGB7cn0KZG1lcyA8LSBjdXQoeCA9IGQkTWVzc2FnZXNfU2VudF9QZXJfRGF5LAogICAgYnJlYWtzID0gYygwLCAxMCwgMjUsIDQ1KSwKICAgIGxhYmVscyA9IGMoIlRo4bqlcCIsICJUcnVuZyBiw6xuaCIsICJDYW8iKSwgCiAgICByaWdodCA9IFRSVUUpIApgYGAKCioqQuG6o25nIHThuqduIHPhu5FcXyBC4bqjbmcgdOG6p24gc3XhuqV0KioKCmBgYHtyfQp0YWJsZShkbWVzKQpwcm9wLnRhYmxlKHRhYmxlKGRtZXMpKSoxMDAKCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KCmQgfD4gZ2dwbG90KCBhZXMoIHggPSBkbWVzLCB5PSBhZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0gInllbGxvdyIpICsgZ2VvbV90ZXh0KGFlcyhsYWJlbD0gc2NhbGVzIDo6IHBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSxhY2N1cmFjeT0uMDEpKSwgc3RhdCA9ICdjb3VudCcsIGNvbG9yPSAnYmxhY2snLCB2anVzdD0gLS41KSArIHRoZW1lX2NsYXNzaWMoKSArIHhsYWIoJ1Phu5EgbMaw4bujbmcgdGluIG5o4bqvbiBn4butaSBt4buXaSBuZ8OgeScpICsgeWxhYignU+G7kSBuZ8aw4budaSBkw7luZycpCgpgYGAKCkvhur90IHF14bqjIHRyw6puIGNobyB0YSB0aOG6pXkgc+G7kSBuZ8aw4budaSBkw7luZyBn4butaSB0aW4gbmjhuq9uIG3hu5dpIG5nw6B5IHThu6sgMCDEkeG6v24gMTAKdGluIG5o4bqvbiBjaGnhur9tIDguNzQlLCBz4buRIG5nxrDhu51pIGTDuW5nIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAxMCDEkeG6v24gMjUKbMaw4bujdCB0aW4gbmjhuq9uIGNoaeG6v20gNjcuOTYlIHbDoCBz4buRIG5nxrDhu51pIGTDuW5nIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAyNQp0aW4gbmjhuq9uIHRy4bufIGzDqm4gY2hp4bq/bSAyMy4zJS4KCiMjIyMgKipCaeG6v24gRG9taW5hbnRfRW1vdGlvbioqCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KdGFibGUoZCREb21pbmFudF9FbW90aW9uKQpwcm9wLnRhYmxlKHRhYmxlKGQkRG9taW5hbnRfRW1vdGlvbikpCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KYyA8LSBwcm9wLnRhYmxlKHRhYmxlKGQkRG9taW5hbnRfRW1vdGlvbikpKjEwMApjIDwtIGFzLmRhdGEuZnJhbWUoYykKY29sbmFtZXMoYykgPC0gYygiRG9taW5hbnRfRW1vdGlvbiIsICJwZXIiKQpnZ3Bsb3QoYywgYWVzKHggPSAiIiwgeSA9IHBlciwgZmlsbCA9IERvbWluYW50X0Vtb3Rpb24pKSArCiAgZ2VvbV9jb2wod2lkdGggPSAxKSArIAogIGNvb3JkX3BvbGFyKCJ5IikgKyAgCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChyb3VuZChwZXIsIDIpLCAiJSIpKSwgCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCAKICAgICAgICAgICAgc2l6ZSA9IDQsIGNvbG9yID0gImJsYWNrIikgKyAgCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKyAKICBsYWJzKHRpdGxlID0gIkJp4buDdSDEkeG7kyBj4bqjbSB4w7pjIGNoaSBwaOG7kWkiKSArCiAgdGhlbWVfbWluaW1hbCgpIApgYGAKCkvhur90IHF14bqjIHRyw6puIGNobyB0aOG6pXk6CgotICAgTmV1dHJhbCAoVHJ1bmcgdMOtbmgpIGzDoCBj4bqjbSB4w7pjIGNoaSBwaOG7kWkgcGjhu5UgYmnhur9uIG5o4bqldCwgY2hp4bq/bSAyNy4xOCUKICAgIHRyb25nIHThu5VuZyBz4buRLgoKLSAgIEFueGlldHkgKExvIGzhuq9uZykgbMOgIGPhuqNtIHjDumMgY2hpIHBo4buRaSBwaOG7lSBiaeG6v24gdGjhu6kgaGFpLCBjaGnhur9tCiAgICAyMS4zNiUuCgotICAgQm9yZWRvbSAoQ2jDoW4gbuG6o24pIGNoaeG6v20gMTUuNTMlLgoKLSAgIEhhcHBpbmVzcyAoVnVpIHbhurspIHbDoCBTYWRuZXNzIChCdeG7k24gYsOjKSBt4buXaSBsb+G6oWkgY2hp4bq/bSAxMy41OSUuCgotICAgQW5nZXIgKFThu6ljIGdp4bqtbikgbMOgIGPhuqNtIHjDumMgY2hpIHBo4buRaSDDrXQgcGjhu5UgYmnhur9uIG5o4bqldCwgY2hp4bq/bSA4Ljc0JS4KCkLhuqNuZyB04bqnbiBzdeG6pXQgY2hvIHRo4bqleSBz4buxIMSRYSBk4bqhbmcgduG7gSBj4bqjbSB4w7pjIGNoaSBwaOG7kWkgdHJvbmcgbeG7mXQgbmfDoHkuCk3hu5dpIGxv4bqhaSBj4bqjbSB4w7pjIMSR4buBdSBjw7MgbeG7mXQgdOG7tyBs4buHIG5o4bqldCDEkeG7i25oLCBwaOG6o24gw6FuaCBz4buxIHBo4bupYyB04bqhcCB2w6AgxJFhCmThuqFuZyB0cm9uZyB0cuG6oW5nIHRow6FpIGPhuqNtIHjDumMgY+G7p2EgbmfGsOG7nWkgZMO5bmcuCgojIyMgKipUaOG7kW5nIGvDqiBtw7QgdOG6oyBjaG8gaGFpIGJp4bq/bioqCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBBZ2UqKgoKKipNw6MgaG/DoSBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBBZ2UgdGjDoG5oIGJp4bq/biDEkeG7i25oIHTDrW5oKioKCsSQ4buDIGThu4UgcGjDom4gdMOtY2ggaMahbiwgdGEgY2hpYSBs4bqhaSBiaeG6v24gQWdlIHRoZW8gY8OhYyBraG/huqNuZyBuaMawIHNhdToKCi0gICAyMS0yNTogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyB04burIDIxIHR14buVaSB04bubaSAyNSB0deG7lWkgdHJvbmcgYuG7mSBk4buvIGxp4buHdS4KCi0gICAyNS0zMDogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyB04burIHRyw6puIDI1IHR14buVaSB04bubaSAzMCB0deG7lWkgdHJvbmcgYuG7mSBk4buvCiAgICBsaeG7h3UuCgotICAgVHLDqm4gMzA6IFPhu5EgbMaw4bujbmcgbmfGsOG7nWkgZMO5bmcgdOG7qyB0csOqbiAzMCB0deG7lWkgdOG7m2kgMzUgdHXhu5VpIHRyb25nIGLhu5kgZOG7rwogICAgbGnhu4d1LgoKYGBge3J9CmRhZ2U8LSBjdXQoeCA9IGQkQWdlLAogICAgYnJlYWtzID0gYygwLCAyNSwgMzAsIDM1KSwgCiAgICBsYWJlbHMgPSBjKCIyMS0yNSIsICIyNS0zMCIsICJUcsOqbiAzMCIpLAogICAgcmlnaHQgPSBUUlVFKSAKdGFibGUoZGFnZSkKYGBgCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KZW1vYWdlIDwtIHRhYmxlKGQkRG9taW5hbnRfRW1vdGlvbixkYWdlKQphZGRtYXJnaW5zKGVtb2FnZSkKYGBgCgpgYGB7cn0KYWRkbWFyZ2lucyhwcm9wLnRhYmxlKGVtb2FnZSkpKjEwMCAKYGBgCgoqKsSQ4buTIHRo4buLKioKCmBgYHtyfQpkIHw+IGdncGxvdChhZXMoeD0gZGFnZSwgeT1hZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0iYmx1ZSIpICsgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSAiY291bnQiLCBjb2xvciA9ICJicm93biIsIHZqdXN0ID0gLSAuNSkgKyBmYWNldF9ncmlkKC4gfkRvbWluYW50X0Vtb3Rpb24pICsgbGFicyh4ID0gIsSQ4buZIHR14buVaSIseSA9ICJT4buRIG5nxrDhu51pIGTDuW5nIikKYGBgCgpU4bu3IGzhu4cgdOG7q25nIG5ow7NtIHR14buVaSDEkeG7kWkgduG7m2kgbeG7l2kgY+G6o20geMO6YyBraMOhYyBuaGF1IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjCmjhu5lpOgoKLSAgIFbhu5tpIG5o4buvbmcgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgdOG7qWMgZ2nhuq1uIGPDsyB04bu3IGzhu4cKICAgIHR14buVaSBkxrDhu5tpIDI1IGzDoCAyLjkxJSwgbmjhu69uZyBuZ8aw4budaSBjw7MgxJHhu5kgdHXhu5VpIHThu6sgMjUgxJHhur9uIDMwIGNoaeG6v20KICAgIG5oaeG7gXUgbmjhuqV0IHbhu5tpIDQuODUlIHbDoCB0aOG6pXAgbmjhuqV0IGzDoCAwLjk3JSDhu6luZyB24bubaSBuaOG7r25nIG5nxrDhu51pIGPDsyDEkeG7mQogICAgdHXhu5VpIHRyw6puIDMwLgoKLSAgIFbhu5tpIG5o4buvbmcgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgbG8gbOG6r25nIGPDsyB04bu3IGzhu4cKICAgIHR14buVaSBkxrDhu5tpIDI1IHbDoCB04bu3IGzhu4cgdHXhu5VpIHRyw6puIDMwIGLhurFuZyBuaGF1IHbhu5tpIDEuOTQlLCBuaOG7r25nIG5nxrDhu51pCiAgICBjw7MgxJHhu5kgdHXhu5VpIHThu6sgMjUgxJHhur9uIDMwIGNoaeG6v20gbmhp4buBdSBuaOG6pXQgduG7m2kgMTcuNDglLgoKLSAgIFbhu5tpIG5o4buvbmcgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgY2jDoW4gbuG6o24gY8OzIHThu7cgbOG7hwogICAgdHXhu5VpIGTGsOG7m2kgMjUgbMOgIHRo4bqlcCBuaOG6pXQgduG7m2kgMC45NyUsIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIGPDsyDEkeG7mSB0deG7lWkgdOG7qwogICAgMjUgxJHhur9uIDMwIGNoaeG6v20gNS44MyUgdsOgIMSR4buZIHR14buVaSBjw7MgdOG7tyBs4buHIGNhbyBuaOG6pXQgbMOgIHRyw6puIDMwIHR14buVaQogICAgduG7m2kgOC43NCUuCgotICAgVuG7m2kgbmjhu69uZyBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB2dWkgduG6uyBjw7MgdOG7tyBs4buHIDMKICAgIMSR4buZIHR14buVaSB0xrDGoW5nIMSR4buRaSBn4bqnbiBi4bqxbmcgbmhhdSB24bubaSBs4bqnbiBsxrDhu6N0IGzDoCA0Ljg1JSwgNC44NSUgdsOgCiAgICAzLjg4JSDhu6luZyB24bubaSB0aOG7qSB04buxIMSR4buZIHR14buVaSBkxrDhu5tpIDI1LCDEkeG7mSB0deG7lWkgdOG7qyAyNSDEkeG6v24gMzAgdsOgIMSR4buZCiAgICB0deG7lWkgdHLDqm4gMzAuCgotICAgVuG7m2kgbmjhu69uZyBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0cnVuZyB0w61uaCBjw7MgdOG7tyBs4buHCiAgICB0deG7lWkgZMaw4bubaSAyNSBjaGnhur9tIG5oaeG7gXUgbmjhuqV0IHbhu5tpIDE3LjQ4JSwgY8OybiBs4bqhaSBuaOG7r25nIG5nxrDhu51pIGPDsyDEkeG7mQogICAgdHXhu5VpIHThu6sgMjUgxJHhur9uIDMwIHbDoCB0csOqbiAzMCBjw7MgdOG7tyBs4buHIGLhurFuZyBuaGF1IGzDoCA0Ljg1JS4KCi0gICBW4bubaSBuaOG7r25nIG5nxrDhu51pIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIGJ14buTbiBiw6MgY8OzIHThu7cgbOG7hwogICAgdHXhu5VpIGTGsOG7m2kgMjUgbMOgIDIuOTElLCBuaOG7r25nIG5nxrDhu51pIGPDsyDEkeG7mSB0deG7lWkgdOG7qyAyNSDEkeG6v24gMzAgY2hp4bq/bQogICAgbmhp4buBdSBuaOG6pXQgduG7m2kgNy43NyUgdsOgIG5o4buvbmcgbmfGsOG7nWkgY8OzIMSR4buZIHR14buVaSB0csOqbiAzMCBjaGnhur9tIDIuOTElLgoKTmjDrG4gY2h1bmcsIGPhuqNtIHjDumMgY+G7p2EgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjw7Mgc+G7sSBwaMOibiBi4buRIGtow6FjCm5oYXUgZ2nhu69hIGPDoWMgbmjDs20gdHXhu5VpLiBOaMOzbSB0deG7lWkgdOG7qyAyNSDEkeG6v24gMzAgdGjGsOG7nW5nIGNoaeG6v20gdOG7tyBs4buHIGNhbwpuaOG6pXQgY2hvIGPDoWMgY+G6o20geMO6YyB0acOqdSBj4buxYyBuaMawIHThu6ljIGdp4bqtbiwgbG8gbOG6r25nIHbDoCBideG7k24gYsOjLiBD4bqjbSB4w7pjCmNow6FuIG7huqNuIHBo4buVIGJp4bq/biBoxqFuIOG7nyBuaMOzbSB0deG7lWkgdHLDqm4gMzAsIHRyb25nIGtoaSBj4bqjbSB4w7pjIHRydW5nIHTDrW5oCnBo4buVIGJp4bq/biBuaOG6pXQg4bufIG5ow7NtIHR14buVaSBkxrDhu5tpIDI1LiBD4bqjbSB4w7pjIHZ1aSB24bq7IGzDoCDEkeG7k25nIMSR4buBdSBuaOG6pXQgZ2nhu69hCmPDoWMgbmjDs20gdHXhu5VpLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIHBo4bqjbiDDoW5oIHPhu7EgdGhheSDEkeG7lWkgdMOibSBsw70gdsOgIHRy4bqjaQpuZ2hp4buHbSBz4buRbmcgdGhlbyDEkeG7mSB0deG7lWkgY+G7p2EgbmfGsOG7nWkgZMO5bmcgbeG6oW5nIHjDoyBo4buZaS4KCiMjIyMgKipCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgYmnhur9uIEdlbmRlcioqCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KZW1vZ2VuIDwtYWRkbWFyZ2lucyh0YWJsZShkJERvbWluYW50X0Vtb3Rpb24sZCRHZW5kZXIpKQplbW9nZW4KYGBgCgpgYGB7cn0KYWRkbWFyZ2lucyhwcm9wLnRhYmxlKGVtb2dlbikpKjEwMApgYGAKCioqxJDhu5MgdGjhu4sqKgoKYGBge3J9CmQgJT4lIGdncGxvdChhZXMoeCA9IEdlbmRlciwgZmlsbCA9IGZjdF9pbmZyZXEoRG9taW5hbnRfRW1vdGlvbikpKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZG9kZ2UiKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50IC8gc3VtKGNvdW50KSksIGFjY3VyYWN5ID0gMC4wMSkpLCAKICAgICAgICAgICAgc3RhdCA9ICJjb3VudCIsIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwgCiAgICAgICAgICAgIHZqdXN0ID0gLTAuNSwgCiAgICAgICAgICAgIGNvbG9yID0gJ2JsYWNrJykgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIkFuZ2VyIiA9ICJsaWdodGdyZWVuIiwgIkFueGlldHkiID0gInBpbmsiLCAiQm9yZWRvbSIgPSAibGlnaHRibHVlIiwgIkhhcHBpbmVzcyIgPSAib3JhbmdlIiwgIk5ldXRyYWwiID0gImJyb3duIiwgIlNhZG5lc3MiID0gInllbGxvdyIpKSArIGxhYnMoeCA9ICdHaeG7m2kgdMOtbmgnLCB5ID0gJ1Phu5EgbMaw4bujbmcgbmfGsOG7nWkgZMO5bmcnLCBmaWxsID0gJ0Vtb3Rpb24nLAogICAgICAgdGl0bGUgPSAiU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyB0xrDGoW5nIOG7qW5nIHbhu5tpIGdp4bubaSB0w61uaCB2w6AgY+G6o20geMO6YyIpICsgdGhlbWVfbWluaW1hbCgpCmBgYAoKVOG7tyBs4buHIGPhuqNtIHjDumMgY+G7p2EgbmfGsOG7nWkgZMO5bmcga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgdGhlbyAzIG5ow7NtIGdp4bubaQp0w61uaDoKCi0gICBOaMOzbSBnaeG7m2kgdMOtbmggRmVtYWxlIC0gTuG7rzog4bueIG5ow7NtIG7DoHkgdOG7tyBs4buHIGPhuqNtIHjDumMgdnVpIHbhursgY2hp4bq/bSDEkWEKICAgIHPhu5EgduG7m2kgNy43NyUsIGPhuqNtIHjDumMgY2jDoW4gbuG6o24gY2hp4bq/bSDDrXQgbmjhuqV0IHbhu5tpIGNo4buJIDAuOTclLiBD4bqjbSB4w7pjCiAgICB0cnVuZyB0w61uaCDhu58gbmjDs20gbuG7ryBjaGnhur9tIHThu7cgbOG7hyBjYW8gdGjhu6kgMiB24bubaSA0Ljg1JSB2w6Agw610IHRo4bupIDIgbMOgCiAgICBj4bqjbSB4w7pjIGJ14buTbiBiw6MgduG7m2kgMi45MSUuIEPDsm4gbOG6oWkgMiBj4bqjbSB4w7pjIGzDoCBsbyBs4bqvbmcgdsOgIHThu6ljIGdp4bqtbgogICAgY8OzIHThu7cgbOG7hyBi4bqxbmcgbmhhdSB24bubaSAzLjg4JS4KCi0gICBOaMOzbSBnaeG7m2kgdMOtbmggTWFsZSAtIE5hbTog4bueIG5ow7NtIG7DoHkgdOG7tyBs4buHIGPhuqNtIHjDumMgY2jDoW4gbuG6o24gY2hp4bq/bQogICAgxJFhIHPhu5EgduG7m2kgNy43NyUsIGPhuqNtIHjDumMgdOG7qWMgZ2nhuq1uIGNoaeG6v20gw610IG5o4bqldCB24bubaSAzLjg4JS4gQ+G6o20geMO6YwogICAgdHJ1bmcgdMOtbmgg4bufIG5ow7NtIG5hbSBjaGnhur9tIHThu7cgbOG7hyBjYW8gdGjhu6kgMiB24bubaSAxMC42OCUgdsOgIHjhur9wIHNhdQogICAgdHJ1bmcgdMOtbmggbMOgIGPhuqNtIHjDumMgbG8gbOG6r25nIHbhu5tpIDkuNzElLiBDw7JuIGzhuqFpIGzDoCBj4bqjbSB4w7pjIHZ1aSB24bq7CiAgICBjaGnhur9tIDQuODUlLCBj4bqjbSB4w7pjIGJ14buTbiBiw6MgY2hp4bq/bSA1LjgzJS4KCi0gICBOaMOzbSBnaeG7m2kgdMOtbmggTm9uLWJpbmFyeSAtIEtow7RuZyB4w6FjIMSR4buLbmggxJHGsOG7o2MgZ2nhu5tpIHTDrW5oOiDhu54gbmjDs20KICAgIG7DoHkgdOG7tyBs4buHIGPhuqNtIHjDumMgdHJ1bmcgdMOtbmggY2hp4bq/bSDEkWEgc+G7kSB24bubaSAxMS42NSUsIGPhuqNtIHjDumMgdnVpIHbhursKICAgIHbDoCB04bupYyBnaeG6rW4gY2hp4bq/bSDDrXQgbmjhuqV0IHbhu5tpIHThu7cgbOG7hyBuaMawIG5oYXUgbMOgIDAuOTclLiBD4bqjbSB4w7pjIGxvCiAgICBs4bqvbmcg4bufIG5ow7NtIG7DoHkgY2hp4bq/bSB04bu3IGzhu4cgY2FvIHRo4bupIDIgduG7m2kgNy43NyUuIEPDsm4gbOG6oWkgMiBj4bqjbSB4w7pjCiAgICBsw6AgY2jDoW4gbuG6o24gdsOgIGJ14buTbiBiw6MgY8OzIHThu7cgbOG7hyB0xrDGoW5nIOG7qW5nIDIuOTElIHbDoCA0Ljg1JQoKLSAgIEPhuqNtIHjDumMgdnVpIHbhurs6IFBo4buVIGJp4bq/biBuaOG6pXQg4bufIG5ow7NtIG7hu68uCgotICAgQ+G6o20geMO6YyBjaMOhbiBu4bqjbjogUGjhu5UgYmnhur9uIG5o4bqldCDhu58gbmjDs20gbmFtLCDDrXQgZ+G6t3Ag4bufIG5ow7NtIG7hu68gdsOgCiAgICBraMO0bmcgeMOhYyDEkeG7i25oIGdp4bubaSB0w61uaC4KCi0gICBD4bqjbSB4w7pjIHRydW5nIHTDrW5oOiBQaOG7lSBiaeG6v24gbmjhuqV0IOG7nyBuaMOzbSBraMO0bmcgeMOhYyDEkeG7i25oIGdp4bubaSB0w61uaCwKICAgIGPFqW5nIHBo4buVIGJp4bq/biDhu58gbmjDs20gbmFtLgoKLSAgIEPhuqNtIHjDumMgbG8gbOG6r25nOiBUaMaw4budbmcgZ+G6t3Ag4bufIG5ow7NtIG5hbSB2w6AgbmjDs20ga2jDtG5nIHjDoWMgxJHhu4tuaCBnaeG7m2kKICAgIHTDrW5oLgoKLSAgIEPhuqNtIHjDumMgYnXhu5NuIGLDozogQ8OzIHThu7cgbOG7hyB0xrDGoW5nIMSR4buRaSDEkeG7k25nIMSR4buBdSBnaeG7r2EgY8OhYyBuaMOzbSwgbmjGsG5nCiAgICB0aOG6pXAgbmjhuqV0IOG7nyBuaMOzbSBu4buvLgoKLSAgIEPhuqNtIHjDumMgdOG7qWMgZ2nhuq1uOiDDjXQgZ+G6t3AgbmjhuqV0IOG7nyBuaMOzbSBraMO0bmcgeMOhYyDEkeG7i25oIGdp4bubaSB0w61uaCwgY8OzIHThu7cKICAgIGzhu4cgdMawxqFuZyDEkeG7kWkg4bufIG5ow7NtIG7hu68gdsOgIG5ow7NtIG5hbS4KCk5ow6xuIGNodW5nLCBjw6FjIG5ow7NtIGdp4bubaSB0w61uaCBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgcsO1IHLDoG5nIHRyb25nIHZp4buHYyB0cuG6o2kKbmdoaeG7h20gY+G6o20geMO6YyBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaS4gTmjDs20gbuG7ryBjw7MgeHUgaMaw4bubbmcgdHLhuqNpIG5naGnhu4dtCmPhuqNtIHjDumMgdMOtY2ggY+G7sWMgaMahbiwgdHJvbmcga2hpIG5ow7NtIG5hbSB2w6Aga2jDtG5nIHjDoWMgxJHhu4tuaCBnaeG7m2kgdMOtbmgKdHLhuqNpIG5naGnhu4dtIG5oaeG7gXUgY+G6o20geMO6YyB0acOqdSBj4buxYyBoxqFuLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIHBo4bqjbiDDoW5oIGPDoWMgeeG6v3UKdOG7kSB4w6MgaOG7mWksIHTDom0gbMO9IHbDoCB2xINuIGjDs2Eg4bqjbmggaMaw4bufbmcgxJHhur9uIGPhuqNtIHjDumMgY+G7p2EgbmfGsOG7nWkgZMO5bmcgbeG6oW5nCnjDoyBo4buZaS4KCiMjIyMgKipCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgYmnhur9uIFBsYXRmb3JtKioKCioqQuG6o25nIHThuqduIHPhu5FcXyBC4bqjbmcgdOG6p24gc3XhuqV0KioKCmBgYHtyfQplbW9wbGF0IDwtIGFkZG1hcmdpbnModGFibGUoZCREb21pbmFudF9FbW90aW9uLGQkUGxhdGZvcm0pKQplbW9wbGF0CmBgYAoKYGBge3J9CmFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShkJFBsYXRmb3JtLGQkRG9taW5hbnRfRW1vdGlvbikpKSoxMDAKYGBgCgoqKsSQ4buTIHRo4buLIGPhuqNtIHjDumMgduG7m2kg4bupbmcgZOG7pW5nIEZhY2Vib29rKioKCmBgYHtyfQpmYiA8LSBkW2QkUGxhdGZvcm0gPT0gIkZhY2Vib29rIiwgXQp0YWJsZShmYiREb21pbmFudF9FbW90aW9uKQpgYGAKCmBgYHtyfQpkMSA8LSBwcm9wLnRhYmxlKHRhYmxlKGZiJERvbWluYW50X0Vtb3Rpb24pKSoxMDAKZDEgPC0gYXMuZGF0YS5mcmFtZShkMSkKY29sbmFtZXMoZDEpIDwtIGMoIkRvbWluYW50X0Vtb3Rpb24iLCAicGVyIikKZ2dwbG90KGQxLCBhZXMoeCA9ICIiLCB5ID0gcGVyLCBmaWxsID0gRG9taW5hbnRfRW1vdGlvbikpICsKICBnZW9tX2NvbCh3aWR0aCA9IDEpICsgCiAgY29vcmRfcG9sYXIoInkiKSArICAKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKHJvdW5kKHBlciwgMiksICIlIikpLCAKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuNSksIAogICAgICAgICAgICBzaXplID0gNCwgY29sb3IgPSAiYmxhY2siKSArICAKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDIiKSArIAogIGxhYnModGl0bGUgPSAiQmnhu4N1IMSR4buTIHBow6JuIHBo4buRaSBj4bqjbSB4w7pjIGNo4bunIMSR4bqhbyBj4bunYSDhu6luZyBk4bulbmcgRmFjZWJvb2siKSArCiAgdGhlbWVfbWluaW1hbCgpIApgYGAKCi0gICBW4bubaSDhu6luZyBk4bulbmcgRmFjZWJvb2s6IFRyb25nIHThu5VuZyBz4buRIDI1IG5nxrDhu51pIHPhu60gZOG7pW5nIOG7qW5nIGThu6VuZyBuw6B5LAogICAgY+G6o20geMO6YyBwaOG7lSBiaeG6v24gbmjhuqV0IGzDoCB0cnVuZyB0w61uaCBjaGnhur9tIGfhuqduIDEgbuG7rWEgduG7m2kgNDglLCBj4bqjbSB4w7pjCiAgICDDrXQgcGjhu5UgYmnhur9uIG5o4bqldCBsw6AgYnXhu5NuIGLDoyB24bubaSAxMiUuIEPhuqNtIHjDumMgY2jDoW4gbuG6o24gdsOgIGxvIGzhuq9uZwogICAgY2hp4bq/bSB04bu3IGzhu4cgbmjGsCBuaGF1IHbhu5tpIDIwJSwgY8OhYyBj4bqjbSB4w7pjIGPDsm4gbOG6oWkgbMOgIHThu6ljIGdp4bqtbiwgdnVpCiAgICB24bq7IGtow7RuZyB4deG6pXQgaGnhu4duIOG7nyDhu6luZyBk4bulbmcgbsOgeS4KCioqxJDhu5MgdGjhu4sgY+G6o20geMO6YyB24bubaSDhu6luZyBk4bulbmcgSW5zdGFncmFtKioKCmBgYHtyfQppZyA8LSBkW2QkUGxhdGZvcm0gPT0gIkluc3RhZ3JhbSIsIF0KdGFibGUoaWckRG9taW5hbnRfRW1vdGlvbikKYGBgCgpgYGB7cn0KZSA8LSBwcm9wLnRhYmxlKHRhYmxlKGlnJERvbWluYW50X0Vtb3Rpb24pKSoxMDAKZSA8LSBhcy5kYXRhLmZyYW1lKGUpCmNvbG5hbWVzKGUpIDwtIGMoIkRvbWluYW50X0Vtb3Rpb24iLCAicGVyIikKZ2dwbG90KGUsIGFlcyh4ID0gIiIsIHkgPSBwZXIsIGZpbGwgPSBEb21pbmFudF9FbW90aW9uKSkgKwogIGdlb21fY29sKHdpZHRoID0gMSkgKyAKICBjb29yZF9wb2xhcigieSIpICsgIAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQocGVyLCAyKSwgIiUiKSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgCiAgICAgICAgICAgIHNpemUgPSA0LCBjb2xvciA9ICJibGFjayIpICsgIAogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIGPhuqNtIHjDumMgY2jhu6cgxJHhuqFvIGPhu6dhIOG7qW5nIGThu6VuZyBJbnN0YWdyYW0iKSArCiAgdGhlbWVfbWluaW1hbCgpIApgYGAKCi0gICBW4bubaSDhu6luZyBk4bulbmcgSW5zdGFncmFtOiBUcm9uZyB04buVbmcgc+G7kSAxNiBuZ8aw4budaSBz4butIGThu6VuZyDhu6luZyBk4bulbmcgbsOgeSwKICAgIGPhuqNtIHjDumMgcGjhu5UgYmnhur9uIG5o4bqldCBsw6AgdnVpIHbhursgY2hp4bq/bSAzLzQgdHJvbmcgbmjhu69uZyBuZ8aw4budaSBz4butIGThu6VuZwogICAg4bupbmcgZOG7pW5nIHbhu5tpIDc1JSwgaGFpIGPhuqNtIHjDumMgw610IHBo4buVIGJp4bq/biBuaOG6pXQgbMOgIHThu6ljIGdp4bqtbiB2w6AgbG8KICAgIGzhuq9uZyB24bubaSA2LjI1JS4gQ+G6o20geMO6YyB0cnVuZyB0w61uaCBjaGnhur9tIHThu7cgbOG7hyAxMi41JSUsIGPDoWMgY+G6o20geMO6YwogICAgY8OybiBs4bqhaSBsw6AgY2jDoW4gbuG6o24sIGJ14buTbiBiw6Mga2jDtG5nIHh14bqldCBoaeG7h24g4bufIOG7qW5nIGThu6VuZyBuw6B5LgoKKirEkOG7kyB0aOG7iyBj4bqjbSB4w7pjIHbhu5tpIOG7qW5nIGThu6VuZyBMaW5rZWRJbioqCgpgYGB7cn0KbGsgPC0gZFtkJFBsYXRmb3JtID09ICJMaW5rZWRJbiIsIF0KdGFibGUobGskRG9taW5hbnRfRW1vdGlvbikKYGBgCgpgYGB7cn0KZiA8LSBwcm9wLnRhYmxlKHRhYmxlKGxrJERvbWluYW50X0Vtb3Rpb24pKSoxMDAKZiA8LSBhcy5kYXRhLmZyYW1lKGYpCmNvbG5hbWVzKGYpIDwtIGMoIkRvbWluYW50X0Vtb3Rpb24iLCAicGVyIikKZ2dwbG90KGYsIGFlcyh4ID0gIiIsIHkgPSBwZXIsIGZpbGwgPSBEb21pbmFudF9FbW90aW9uKSkgKwogIGdlb21fY29sKHdpZHRoID0gMSkgKyAKICBjb29yZF9wb2xhcigieSIpICsgIAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQocGVyLCAyKSwgIiUiKSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgCiAgICAgICAgICAgIHNpemUgPSA0LCBjb2xvciA9ICJibGFjayIpICsgIAogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIGPhuqNtIHjDumMgY2jhu6cgxJHhuqFvIGPhu6dhIOG7qW5nIGThu6VuZyBMaW5rZWRJbiIpICsKICB0aGVtZV9taW5pbWFsKCkgCmBgYAoKLSAgIFbhu5tpIOG7qW5nIGThu6VuZyBMaW5rZWRJbjogVHJvbmcgc+G7kSAxNSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpIG7DoHkgY2jhu4kgY8OzCiAgICBjaOG7pyB54bq/dSAzIGPhuqNtIHjDumM6IGNow6FuIG7huqNuLCBsbyBs4bqvbmcgdsOgIHRydW5nIHTDrW5oLiBD4bqjbSB4w7pjIHBo4buVIGJp4bq/bgogICAgbmjhuqV0IGzDoCBjaMOhbiBu4bqjbiBjaGnhur9tIGfhuqduIDEgbuG7rWEgduG7m2kgNDYuNjclLCBj4bqjbSB4w7pjIGxvIGzhuq9uZyB2w6AKICAgIHRydW5nIHTDrW5oIGPDsyB04bu3IGzhu4cgYuG6sW5nIG5oYXUgbMOgIDI2LjY3JQoKKirEkOG7kyB0aOG7iyBj4bqjbSB4w7pjIHbhu5tpIOG7qW5nIGThu6VuZyBTbmFwY2hhdCoqCgpgYGB7cn0Kc25hcCA8LSBkW2QkUGxhdGZvcm0gPT0gIlNuYXBjaGF0IiwgXQp0YWJsZShzbmFwJERvbWluYW50X0Vtb3Rpb24pCmBgYAoKYGBge3J9CmcgPC0gcHJvcC50YWJsZSh0YWJsZShzbmFwJERvbWluYW50X0Vtb3Rpb24pKSoxMDAKZyA8LSBhcy5kYXRhLmZyYW1lKGcpCmNvbG5hbWVzKGcpIDwtIGMoIkRvbWluYW50X0Vtb3Rpb24iLCAicGVyIikKZ2dwbG90KGcsIGFlcyh4ID0gIiIsIHkgPSBwZXIsIGZpbGwgPSBEb21pbmFudF9FbW90aW9uKSkgKwogIGdlb21fY29sKHdpZHRoID0gMSkgKyAKICBjb29yZF9wb2xhcigieSIpICsgIAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQocGVyLCAyKSwgIiUiKSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgCiAgICAgICAgICAgIHNpemUgPSA0LCBjb2xvciA9ICJibGFjayIpICsgIAogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIGPhuqNtIHjDumMgY2jhu6cgxJHhuqFvIGPhu6dhIOG7qW5nIGThu6VuZyBTbmFwY2hhdCIpICsKICB0aGVtZV9taW5pbWFsKCkgCmBgYAoKLSAgIFbhu5tpIOG7qW5nIGThu6VuZyBTbmFwY2hhdDog4bueIOG7qW5nIGThu6VuZyBuw6B5IDMgY+G6o20geMO6YyBwaOG7lSBiaeG6v24gbmjhuqV0IGzDoCBsbwogICAgbOG6r25nLCB0cnVuZyB0w61uaCwgYnXhu5NuIGLDoyBjw7MgdOG7tyBs4buHIGLhurFuZyBuaGF1IHbhu5tpIG3hu5dpIGPhuqNtIHjDumMgbMOgCiAgICAzMC43NyUsIGPhuqNtIHjDumMgw610IHBo4buVIGJp4bq/biBoxqFuIGzDoCB2dWkgduG6uyB24bubaSA3LjY5JS4gQ8OhYyBj4bqjbSB4w7pjIGPDsm4KICAgIGzhuqFpIGzDoCB04bupYyBnaeG6rW4sIGNow6FuIG7huqNuIGtow7RuZyB4deG6pXQgaGnhu4duIOG7nyAxMyBuZ8aw4budaSBz4butIGThu6VuZyDhu6luZwogICAgZOG7pW5nIG7DoHkuCgoqKsSQ4buTIHRo4buLIGPhuqNtIHjDumMgduG7m2kg4bupbmcgZOG7pW5nIFRlbGVncmFtKioKCmBgYHtyfQp0ZWxlIDwtIGRbZCRQbGF0Zm9ybSA9PSAiVGVsZWdyYW0iLCBdCnRhYmxlKHRlbGUkRG9taW5hbnRfRW1vdGlvbikKYGBgCgpgYGB7cn0KaCA8LSBwcm9wLnRhYmxlKHRhYmxlKHRlbGUkRG9taW5hbnRfRW1vdGlvbikpKjEwMApoIDwtIGFzLmRhdGEuZnJhbWUoaCkKY29sbmFtZXMoaCkgPC0gYygiRG9taW5hbnRfRW1vdGlvbiIsICJwZXIiKQpnZ3Bsb3QoaCwgYWVzKHggPSAiIiwgeSA9IHBlciwgZmlsbCA9IERvbWluYW50X0Vtb3Rpb24pKSArCiAgZ2VvbV9jb2wod2lkdGggPSAxKSArIAogIGNvb3JkX3BvbGFyKCJ5IikgKyAgCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChyb3VuZChwZXIsIDIpLCAiJSIpKSwgCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpLCAKICAgICAgICAgICAgc2l6ZSA9IDQsIGNvbG9yID0gImJsYWNrIikgKyAgCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJTZXQyIikgKyAKICBsYWJzKHRpdGxlID0gIkJp4buDdSDEkeG7kyBwaMOibiBwaOG7kWkgY+G6o20geMO6YyBjaOG7pyDEkeG6oW8gY+G7p2Eg4bupbmcgZOG7pW5nIFRlbGVncmFtIikgKwogIHRoZW1lX21pbmltYWwoKSAKYGBgCgotICAgVuG7m2kg4bupbmcgZOG7pW5nIFRlbGVncmFtOiBUcm9uZyBz4buRIDExIG5nxrDhu51pIHPhu60gZOG7pW5nIOG7qW5nIGThu6VuZyBuw6B5LCBj4bqjbQogICAgeMO6YyBwaOG7lSBiaeG6v24gbmjhuqV0IGzDoCB0cnVuZyB0w61uaCBjaGnhur9tIDM2LjM2JSwgaGFpIGPhuqNtIHjDumMgw610IHBo4buVCiAgICBiaeG6v24gbmjhuqV0IGzDoCB04bupYyBnaeG6rW4gdsOgIGNow6FuIG7huqNuIGNoaeG6v20gdOG7tyBs4buHIDkuMDklIGdp4buRbmcgbmhhdS4gQ+G6o20KICAgIHjDumMgcGjhu5UgYmnhur9uIHRo4bupIDIgbMOgIGJ14buTbiBiw6MgY2hp4bq/bSB04bu3IGzhu4cgMjcuMjclLCBj4bqjbSB4w7pjIHBo4buVIGJp4bq/bgogICAgdGjhu6kgMyBsw6AgbG8gbOG6r25nIGNoaeG6v20gMTguMTglLiBD4bqjbSB4w7pjIHZ1aSB24bq7IGtow7RuZyB4deG6pXQgaGnhu4duIOG7nyDhu6luZwogICAgZOG7pW5nIG7DoHkuCgoqKsSQ4buTIHRo4buLIGPhuqNtIHjDumMgduG7m2kg4bupbmcgZOG7pW5nIFR3aXR0ZXIqKgoKYGBge3J9CnR3aSA8LSBkW2QkUGxhdGZvcm0gPT0gIlR3aXR0ZXIiLCBdCnRhYmxlKHR3aSREb21pbmFudF9FbW90aW9uKQpgYGAKCmBgYHtyfQppIDwtIHByb3AudGFibGUodGFibGUodHdpJERvbWluYW50X0Vtb3Rpb24pKSoxMDAKaSA8LSBhcy5kYXRhLmZyYW1lKGkpCmNvbG5hbWVzKGkpIDwtIGMoIkRvbWluYW50X0Vtb3Rpb24iLCAicGVyIikKZ2dwbG90KGksIGFlcyh4ID0gIiIsIHkgPSBwZXIsIGZpbGwgPSBEb21pbmFudF9FbW90aW9uKSkgKwogIGdlb21fY29sKHdpZHRoID0gMSkgKyAKICBjb29yZF9wb2xhcigieSIpICsgIAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQocGVyLCAyKSwgIiUiKSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgCiAgICAgICAgICAgIHNpemUgPSA0LCBjb2xvciA9ICJibGFjayIpICsgIAogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIGPhuqNtIHjDumMgY2jhu6cgxJHhuqFvIGPhu6dhIOG7qW5nIGThu6VuZyBUd2l0dGVyIikgKwogIHRoZW1lX21pbmltYWwoKSAKYGBgCgotICAgVuG7m2kg4bupbmcgZOG7pW5nIFR3aXR0ZXI6IE5ow7NtIGfhu5NtIDE5IG5nxrDhu51pIHPhu60gZOG7pW5nIOG7qW5nIGThu6VuZyBuw6B5IGPDsyB0b8OgbgogICAgYuG7mSBj4bqjIDYgY+G6o20geMO6Yy4gUGjhu5UgYmnhur9uIG5o4bqldCBsw6AgY+G6o20geMO6YyBsbyBs4bqvbmcgY2hp4bq/bSAyNi4zMiUsIGhhaQogICAgY+G6o20geMO6YyBwaOG7lSBiaeG6v24gdGjhu6kgMiBsw6AgdOG7qWMgZ2nhuq1uIHbDoCBideG7k24gYsOjIGNoaeG6v20gdOG7tyBs4buHIGLhurFuZyBuaGF1CiAgICB24bubaSAyMS4wNSUuIEPhuqNtIHjDumMgY2jDoW4gbuG6o24gY2hp4bq/bSAxNS43OSUsIGPhuqNtIHjDumMgdHJ1bmcgdMOtbmggY2hp4bq/bQogICAgMTAuNTMlLiBWdWkgduG6uyBsw6AgY+G6o20geMO6YyDDrXQgZ+G6t3AgbmjhuqV0IOG7nyBuaMOzbSBuZ8aw4budaSBuw6B5IHbhu5tpIHThu7cgbOG7hyBsw6AKICAgIDUuMjYlLgoKKirEkOG7kyB0aOG7iyBj4bqjbSB4w7pjIHbhu5tpIOG7qW5nIGThu6VuZyBXaGF0c2FwcCoqCgpgYGB7cn0Kd2EgPC0gZFtkJFBsYXRmb3JtID09ICJXaGF0c2FwcCIsIF0KdGFibGUod2EkRG9taW5hbnRfRW1vdGlvbikKYGBgCgpgYGB7cn0KaiA8LSBwcm9wLnRhYmxlKHRhYmxlKHdhJERvbWluYW50X0Vtb3Rpb24pKSoxMDAKaiA8LSBhcy5kYXRhLmZyYW1lKGopCmNvbG5hbWVzKGopIDwtIGMoIkRvbWluYW50X0Vtb3Rpb24iLCAicGVyIikKZ2dwbG90KGosIGFlcyh4ID0gIiIsIHkgPSBwZXIsIGZpbGwgPSBEb21pbmFudF9FbW90aW9uKSkgKwogIGdlb21fY29sKHdpZHRoID0gMSkgKyAKICBjb29yZF9wb2xhcigieSIpICsgIAogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQocGVyLCAyKSwgIiUiKSksIAogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHZqdXN0ID0gMC41KSwgCiAgICAgICAgICAgIHNpemUgPSA0LCBjb2xvciA9ICJibGFjayIpICsgIAogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIpICsgCiAgbGFicyh0aXRsZSA9ICJCaeG7g3UgxJHhu5MgcGjDom4gcGjhu5FpIGPhuqNtIHjDumMgY2jhu6cgxJHhuqFvIGPhu6dhIOG7qW5nIGThu6VuZyBXaGF0c2FwcCIpICsKICB0aGVtZV9taW5pbWFsKCkgCmBgYAoKLSAgIFbhu5tpIOG7qW5nIGThu6VuZyBXaGF0c2FwcDogTmjDs20gY8OzIDQgbmfGsOG7nWkgc+G7rSBk4bulbmcg4bupbmcgZOG7pW5nIG7DoHkgY2jhu4kgY8OzCiAgICB04buRaSDEkWEgMiBj4bqjbSB4w7pjIMSRw7MgbMOgIGdp4bqtbiBk4buvIGNoaeG6v20gxJFhIHPhu5EgduG7m2kgNzUlIHbDoCBj4bqjbSB4w7pjIGxvCiAgICBs4bqvbmcgY2hp4bq/bSAyNSUgY8OybiBs4bqhaS4KCioqS+G6v3QgbHXhuq1uKioKCk5nxrDhu51pIGTDuW5nIEZhY2Vib29rIGNo4bunIHnhur91IGPDsyBj4bqjbSB4w7pjIHRydW5nIHTDrW5oLCDDrXQgZ+G6t3AgY+G6o20geMO6YyBideG7k24KYsOjLCB2w6AgaG/DoG4gdG/DoG4ga2jDtG5nIGPDsyBj4bqjbSB4w7pjIHThu6ljIGdp4bqtbiBob+G6t2MgdnVpIHbhursuCgpJbnN0YWdyYW0gbMOgIG7hu4FuIHThuqNuZyBraGnhur9uIG5nxrDhu51pIGTDuW5nIGPhuqNtIHRo4bqleSB2dWkgduG6uyBuaOG6pXQsIHbhu5tpIGjhuqd1IGjhur90CmPDoWMgY+G6o20geMO6YyB0acOqdSBj4buxYyDDrXQgeHXhuqV0IGhp4buHbi4KCk5nxrDhu51pIGTDuW5nIExpbmtlZEluIGNo4bunIHnhur91IGPhuqNtIHRo4bqleSBjaMOhbiBu4bqjbiBob+G6t2MgbG8gbOG6r25nLCBraMO0bmcgY8OzIGPhuqNtCnjDumMgdMOtY2ggY+G7sWMuCgpTbmFwY2hhdCBjw7Mgc+G7sSBwaMOibiBi4buRIGPhuqNtIHjDumMgdMawxqFuZyDEkeG7kWkgxJHhu5NuZyDEkeG7gXUsIHbhu5tpIGPhuqNtIHjDumMgdnVpIHbhursgw610CnBo4buVIGJp4bq/biBuaOG6pXQgdsOgIGtow7RuZyBjw7Mgc+G7sSB4deG6pXQgaGnhu4duIGPhu6dhIGPhuqNtIHjDumMgdOG7qWMgZ2nhuq1uIGhv4bq3YyBjaMOhbgpu4bqjbi4KCk5nxrDhu51pIGTDuW5nIFRlbGVncmFtIGNo4bunIHnhur91IGPDsyBj4bqjbSB4w7pjIHRoZW8gaMaw4bubbmcgdGnDqnUgY+G7sWMsIGPhuqNtIHjDumMKdHJ1bmcgdMOtbmggbMOgIG5oaeG7gXUgbmjhuqV0IHbDoCDhu6luZyBk4bulbmcga2jDtG5nIG1hbmcgbOG6oWkgY+G6o20geMO6YyB2dWkgduG6uyBjaG8KbmfGsOG7nWkgZMO5bmcuCgpUd2l0dGVyIGPDsyBz4buxIMSRYSBk4bqhbmcgduG7gSBj4bqjbSB4w7pjIG5o4bqldCB0cm9uZyA2IOG7qW5nIGThu6VuZywgduG7m2kgY+G6o20geMO6YyBsbwps4bqvbmcgdsOgIHThu6ljIGdp4bqtbiBjaGnhur9tIHThu7cgbOG7hyBjYW8sIGPhuqNtIHjDumMgdnVpIHbhursgw610IGfhurdwIG5o4bqldC4KCk5nxrDhu51pIGTDuW5nIFdoYXRzQXBwIGNo4bunIHnhur91IGPDsyBj4bqjbSB4w7pjIHRpw6p1IGPhu7FjIGtoaSBjaOG7iSBjw7MgY+G6o20geMO6YyB04bupYwpnaeG6rW4gdsOgIGxvIGzhuq9uZywgxJHhurdjIGJp4buHdCBsw6AgdOG7qWMgZ2nhuq1uLCBraMO0bmcgY8OzIHPhu7EgeHXhuqV0IGhp4buHbiBj4bunYSBjw6FjIGPhuqNtCnjDumMga2jDoWMuCgpN4buXaSBu4buBbiB04bqjbmcgbeG6oW5nIHjDoyBo4buZaSBjw7Mgc+G7sSBwaMOibiBi4buRIGPhuqNtIHjDumMga2jDoWMgbmhhdSwgcGjhuqNuIMOhbmggxJHhurdjCsSRaeG7g20gdsOgIGPDoWNoIHRo4bupYyBz4butIGThu6VuZyBj4bunYSBuZ8aw4budaSBkw7luZyB0csOqbiB04burbmcgbuG7gW4gdOG6o25nLiBDw6FjIG7hu4FuCnThuqNuZyBuaMawIEluc3RhZ3JhbSB2w6AgU25hcGNoYXQgY8OzIHh1IGjGsOG7m25nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgaMahbiwgdHJvbmcKa2hpIFdoYXRzQXBwIHbDoCBUd2l0dGVyIGzhuqFpIGPDsyBuaGnhu4F1IGPhuqNtIHjDumMgdGnDqnUgY+G7sWMgaMahbiB2w6AgbmfGsOG7nWkgZMO5bmcKRmFjZWJvb2sgY8OzIGPhuqNtIHjDumMgdHJ1bmcgdMOtbmggbmjhuqV0LgoKIyMjIyAqKkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBiaeG6v24gRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcykqKgoKKipC4bqjbmcgdOG6p24gc+G7kVxfIELhuqNuZyB04bqnbiBzdeG6pXQqKgoKYGBge3J9CmVtb3RpbWUgPC0gdGFibGUoZCREb21pbmFudF9FbW90aW9uLGR0aW1lKQphZGRtYXJnaW5zKGVtb3RpbWUpCmBgYAoKYGBge3J9CmFkZG1hcmdpbnMocHJvcC50YWJsZShlbW90aW1lKSkqMTAwCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KZCAlPiUgZ2dwbG90KGFlcyh4ID0gZmN0X2luZnJlcShEb21pbmFudF9FbW90aW9uKSwgZmlsbCA9IGR0aW1lKSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImRvZGdlIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudCAvIHN1bShjb3VudCkpLCBhY2N1cmFjeSA9IDAuMDEpKSwgCiAgICAgICAgICAgIHN0YXQgPSAiY291bnQiLCAKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSksIAogICAgICAgICAgICB2anVzdCA9IC0wLjUsIAogICAgICAgICAgICBjb2xvciA9ICdicm93bicpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJUaOG6pXAiID0gInllbGxvdyIsICJUcnVuZyBiw6xuaCIgPSAiYmx1ZSIsICJDYW8iID0gInJlZCIpKSArIGxhYnMoeCA9ICdD4bqjbSB4w7pjJywgeSA9ICdT4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nJywgZmlsbCA9ICdUaOG7nWkgZ2lhbicsCiAgICAgICB0aXRsZSA9ICJT4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIHTGsMahbmcg4bupbmcgduG7m2kgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgTVhIIHbDoCBj4bqjbSB4w7pjIikgKyB0aGVtZV9taW5pbWFsKCkKCmBgYAoKVOG7tyBs4buHIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgdGhlbyB04burbmcgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZwoKLSAgIE5ow7NtIG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIHRydW5nIHTDrW5oIChOZXV0cmFsKTogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZwogICAgdHJvbmcgbmjDs20gbsOgeSBkw6BuaCB0aOG7nWkgZ2lhbiBkxrDhu5tpIDEgdGnhur9uZy9uZ8OgeSBjaGnhur9tIDcuNzclLCBz4buRCiAgICBsxrDhu6NuZyBuZ8aw4budaSBkw6BuaCB0aOG7nWkgZ2lhbiB04burIDEgdGnhur9uZyDEkeG6v24gMiB0aeG6v25nIHRyb25nIDEgbmfDoHkgY2hp4bq/bQogICAgMTcuNDglLCBjw7JuIGzhuqFpIGzDoCBuaOG7r25nIG5nxrDhu51pIGPDsyB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHRyw6puCiAgICAyIHRp4bq/bmcvbmfDoHkgY2hp4bq/bSB24bubaSAxLjk0JS4KCi0gICBOaMOzbSBuZ8aw4budaSBjw7MgY+G6o20geMO6YyBsbyBs4bqvbmcgKEFueGlldHkpOiBT4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIHRyb25nCiAgICBuaMOzbSBuw6B5IGTDoG5oIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgZMaw4bubaSAxIHRp4bq/bmcvbmfDoHkgY2hp4bq/bQogICAgMy44OCUsIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgZMOgbmggdGjhu51pIGdpYW4gdOG7qyAxIHRp4bq/bmcgxJHhur9uIDIgdGnhur9uZyB0cm9uZyAxCiAgICBuZ8OgeSBjaGnhur9tIDE2LjUlLCBjw7JuIGzhuqFpIGzDoCBuaOG7r25nIG5nxrDhu51pIGPDsyB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcKICAgIHjDoyBo4buZaSB0csOqbiAyIHRp4bq/bmcvbmfDoHkgY2hp4bq/bSB24bubaSAwLjk3JS4KCi0gICBOaMOzbSBuZ8aw4budaSBjw7MgY+G6o20geMO6YyBjaMOhbiBu4bqjbiAoQm9yZWRvbSk6IFPhu5EgbMaw4bujbmcgbmfGsOG7nWkgZMO5bmcgZMOgbmgKICAgIHRo4budaSBnaWFuIGTGsOG7m2kgMSB0aeG6v25nL25nw6B5IGNoaeG6v20gOS43MSUsIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgZMOgbmggdGjhu51pCiAgICBnaWFuIHThu6sgMSB0aeG6v25nIMSR4bq/biAyIHRp4bq/bmcgdHJvbmcgMSBuZ8OgeSBjaGnhur9tIDUuODMlLiBOaOG7r25nIG5nxrDhu51pIHPhu60KICAgIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG5oaeG7gXUgaMahbiAyIHRp4bq/bmcvbmfDoHkga2jDtG5nIGPhuqNtIHRo4bqleSBjaMOhbiBu4bqjbi4KCi0gICBOaMOzbSBuZ8aw4budaSBjw7MgY+G6o20geMO6YyB2dWkgduG6uyAoSGFwcGluZXNzKTogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyBkw6BuaAogICAgdGjhu51pIGdpYW4gdOG7qyAxIHRp4bq/bmcgxJHhur9uIDIgdGnhur9uZyB0cm9uZyAxIG5nw6B5IGNoaeG6v20gMi45MSUsIGPDsm4gbOG6oWkKICAgIGzDoCBuaOG7r25nIG5nxrDhu51pIGPDsyB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHRyw6puIDIgdGnhur9uZy9uZ8OgeQogICAgY2hp4bq/bSAxMC42OCUuIE5o4buvbmcgbmfGsOG7nWkgZMOgbmggw610IHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgZMaw4bubaQogICAgMSB0aeG6v25nL25nw6B5IGzDoCBuaOG7r25nIG5nxrDhu51pIGtow7RuZyBj4bqjbSB0aOG6pXkgdnVpIHbhursga2hpIHPhu60gZOG7pW5nLgoKLSAgIE5ow7NtIG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIGJ14buTbiBiw6MgKFNhZG5lc3MpOiBT4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIHRyb25nCiAgICBuaMOzbSBuw6B5IGTDoG5oIHRo4budaSBnaWFuIGTGsOG7m2kgMSB0aeG6v25nL25nw6B5IGNoaeG6v20gMy44OCUsIHPhu5EgbMaw4bujbmcKICAgIG5nxrDhu51pIGTDoG5oIHRo4budaSBnaWFuIHThu6sgMSB0aeG6v25nIMSR4bq/biAyIHRp4bq/bmcgdHJvbmcgMSBuZ8OgeSBjaGnhur9tCiAgICA5LjcxJSwgY8OybiBs4bqhaSBsw6Agbmjhu69uZyBuZ8aw4budaSBjw7MgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSB0csOqbgogICAgMiB0aeG6v25nL25nw6B5IGtow7RuZyBjw7MgY+G6o20geMO6YyBuw6B5LgoKLSAgIE5ow7NtIG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIHThu6ljIGdp4bqtbiAow4BuZ2VyKTogU+G7kSBsxrDhu6NuZyBuZ8aw4budaSBkw7luZyB0cm9uZwogICAgbmjDs20gbsOgeSBkw6BuaCB0aOG7nWkgZ2lhbiBkxrDhu5tpIDEgdGnhur9uZy8xIG5nw6B5IGNoaeG6v20gMC45NyUsIHPhu5EgbMaw4bujbmcKICAgIG5nxrDhu51pIGTDoG5oIHRo4budaSBnaWFuIHThu6sgMSB0aeG6v25nIMSR4bq/biAyIHRp4bq/bmcgdHJvbmcgMSBuZ8OgeSBjaGnhur9tCiAgICA3Ljc3JSwgY8OybiBs4bqhaSBuaOG7r25nIG5nxrDhu51pIGPDsyB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHRyw6puIDIKICAgIHRp4bq/bmcvbmfDoHkgY2hp4bq/bSBraMO0bmcgY8OzIGPhuqNtIHjDumMgbsOgeS4KClTDs20gbOG6oWksCgpOZ8aw4budaSBkw7luZyBjaOG7pyB54bq/dSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHRyb25nIGtob+G6o25nIDEgxJHhur9uIDIgdGnhur9uZyBt4buXaQpuZ8OgeSBjw7MgY+G6o20geMO6YyB0aGVvIHh1IGjGsOG7m25nIHRydW5nIHTDrW5oIGhv4bq3YyBsbyBs4bqvbmcuCgpOaOG7r25nIG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIGNow6FuIG7huqNuIHbDoCBideG7k24gYsOjIGNo4bunIHnhur91IHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkKZMaw4bubaSAxIHRp4bq/bmcgaG/hurdjIHThu6sgMSDEkeG6v24gMiB0aeG6v25nIG3hu5dpIG5nw6B5LCBraMO0bmcgY8OzIGFpIHPhu60gZOG7pW5nIHRyw6puIDIKdGnhur9uZy4KCk5nxrDhu51pIGTDuW5nIGNo4bunIHnhur91IHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgdHLDqm4gMiB0aeG6v25nIG3hu5dpIG5nw6B5IGzDoCBuaOG7r25nCm5nxrDhu51pIHPhu60gZOG7pW5nIHbhu5tpIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyB2dWkgduG6uy4KCk5o4buvbmcgbmfGsOG7nWkgdGjGsOG7nW5nIGPDsyBj4bqjbSB4w7pjIHThu6ljIGdp4bqtbiBjaOG7pyB54bq/dSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHThu6sgMQrEkeG6v24gMiB0aeG6v25nIG3hu5dpIG5nw6B5LCDDrXQgbmfGsOG7nWkgc+G7rSBk4bulbmcgZMaw4bubaSAxIHRp4bq/bmcgdsOgIGtow7RuZyBjw7MgYWkgc+G7rQpk4bulbmcgdHLDqm4gMiB0aeG6v25nLgoKVGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjw7Mgc+G7sSDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24gY+G6o20geMO6YyBj4bunYQpuZ8aw4budaSBkw7luZy4gTmfGsOG7nWkgZMO5bmcgY+G6o20gdGjhuqV5IHZ1aSB24bq7IHRoxrDhu51uZyBkw6BuaCBuaGnhu4F1IHRo4budaSBnaWFuIGjGoW4KdHLDqm4gbeG6oW5nIHjDoyBo4buZaSwgdHJvbmcga2hpIG5o4buvbmcgbmfGsOG7nWkgY+G6o20gdGjhuqV5IGNow6FuIG7huqNuLCBideG7k24gYsOjIGhv4bq3Ywp04bupYyBnaeG6rW4gdGjGsOG7nW5nIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgw610IGjGoW4uIEPhuqNtIHjDumMgdHJ1bmcgdMOtbmggdsOgIGxvCmzhuq9uZyBjw7MgeHUgaMaw4bubbmcgcGjDom4gYuG7kSDEkeG7gXUgdHJvbmcga2hv4bqjbmcgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgdOG7qyAxIMSR4bq/biAyCnRp4bq/bmcgbeG7l2kgbmfDoHkuCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBQb3N0c19QZXJfRGF5KioKCioqTcOjIGjDs2EgYmnhur9uIFBvc3RzX1Blcl9EYXkgdGjDoG5oIGJp4bq/biDEkeG7i25oIHTDrW5oKioKCk3DoyBow7NhIGJp4bq/biBQb3N0c19QZXJfRGF5IHRow6BuaCBiaeG6v24gxJHhu4tuaCB0w61uaCBi4bqxbmcgY8OhY2ggY2hpYSBk4buvIGxp4buHdQp0aMOgbmggMyBt4bupYyDEkeG7mToKCi0gICBUaOG6pXAgbMOgIHThu6sgMCDEkeG6v24gMyBiw6BpIMSRxINuZyB0csOqbiBuZ8OgeQoKLSAgIFRydW5nIGLDrG5oIGzDoCB04burIDMgxJHhur9uIDUgYsOgaSDEkcSDbmcgdHLDqm4gbmfDoHkKCi0gICBDYW8gbMOgIHThu6sgNSBiw6BpIMSRxINuZyB0cuG7nyBsw6puCgpgYGB7cn0KZHBvcyA8LSBjdXQoeCA9IGQkUG9zdHNfUGVyX0RheSwKICAgIGJyZWFrcyA9IGMoMCwgMywgNSwgOCksCiAgICBsYWJlbHMgPSBjKCJUaOG6pXAiLCAiVHJ1bmcgYsOsbmgiLCAiQ2FvIiksIAogICAgcmlnaHQgPSBUUlVFKSAKdGFibGUoZHBvcykKYGBgCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KZW1vcG9zIDwtIHRhYmxlKGQkRG9taW5hbnRfRW1vdGlvbiwgZHBvcykKYWRkbWFyZ2lucyhlbW9wb3MpCnByb3AudGFibGUoZW1vcG9zKQphZGRtYXJnaW5zKHByb3AudGFibGUoZW1vcG9zKSkgKjEwMAoKYGBgCgoqKsSQ4buTIHRo4buLKioKCmBgYHtyfQpkIHw+IGdncGxvdChhZXMoeD0gZHBvcyx5PWFmdGVyX3N0YXQoY291bnQpKSkgKyBnZW9tX2JhcihmaWxsPSIjOUFDRDMyIikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICJjb3VudCIsIGNvbG9yID0gImJsYWNrIiwgdmp1c3QgPSAtIC41KSArIGZhY2V0X2dyaWQoLiB+RG9taW5hbnRfRW1vdGlvbikgKyBsYWJzKHggPSAiTMaw4bujdCBiw6BpIMSRxINuZyDhu6luZyB24bubaSBj4bqjbSB4w7pjIG5o4bqtbiDEkcaw4bujYyB0csOqbiBuZ8OgeSIseSA9ICJT4buRIG5nxrDhu51pIGTDuW5nIikKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5OgoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgdOG7qWMgZ2nhuq1uIHRow6wgbmjhu69uZyBuZ8aw4budaSBjw7MKICAgIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgdOG7qyAwIMSR4bq/biAzIGLDoGkgxJHEg25nIHRyw6puIG5nw6B5IGNoaeG6v20gNC44NSUsIG5o4buvbmcKICAgIG5nxrDhu51pIGPDsyB04burIDMgxJHhur9uIDUgYsOgaSDEkcSDbmcgdHLDqm4gbmfDoHkgY2hp4bq/bSAyLjkxJSB2w6Agbmjhu69uZyBuZ8aw4budaSBjw7MKICAgIHThu6sgNSBiw6BpIMSRxINuZyB0cuG7nyBsw6puIGNoaeG6v20gMC45NyUKCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIGxvIGzhuq9uZyB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EKICAgIGzGsOG7o25nIGLDoGkgxJHEg25nIHThu6sgMCDEkeG6v24gMyBiw6BpIMSRxINuZyB0csOqbiBuZ8OgeSBjaGnhur9tIDYuNTAlLCBuaOG7r25nCiAgICBuZ8aw4budaSBjw7MgdOG7qyAzIMSR4bq/biA1IGLDoGkgxJHEg25nIHRyw6puIG5nw6B5IGNoaeG6v20gMy44OCUgdsOgIG5o4buvbmcgbmfGsOG7nWkgY8OzCiAgICB04burIDUgYsOgaSDEkcSDbmcgdHLhu58gbMOqbiBjaGnhur9tIDAuOTclCgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyBjaMOhbiBu4bqjbiB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzCiAgICBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nIHThu6sgMCDEkeG6v24gMyBiw6BpIMSRxINuZyB0csOqbiBuZ8OgeSBjaGnhur9tIDQuNTYlLCBuaOG7r25nCiAgICBuZ8aw4budaSBjw7MgdOG7qyAzIMSR4bq/biA1IGLDoGkgxJHEg25nIHRyw6puIG5nw6B5IGNoaeG6v20gMC45NyUgdsOgIGtow7RuZyBjw7MgbmfGsOG7nWkKICAgIG7DoG8gY+G6o20gdGjhuqV5IGNow6FuIG7huqNuIGtoaSBjw7MgdOG7qyA1IGLDoGkgxJHEg25nIHRy4bufIGzDqm4gbeG7l2kgbmfDoHkKCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIHZ1aSB24bq7IHRow6wgbmjhu69uZyBuZ8aw4budaSBjw7Mgc+G7kQogICAgbMaw4bujbmcgYsOgaSDEkcSDbmcgdOG7qyAwIMSR4bq/biAzIGLDoGkgxJHEg25nIHRyw6puIG5nw6B5IGNoaeG6v20gMC45NyUsIG5o4buvbmcKICAgIG5nxrDhu51pIGPDsyB04burIDMgxJHhur9uIDUgYsOgaSDEkcSDbmcgdHLDqm4gbmfDoHkgY2hp4bq/bSAzLjg4JSB2w6Agbmjhu69uZyBuZ8aw4budaSBjw7MKICAgIHThu6sgNSBiw6BpIMSRxINuZyB0cuG7nyBsw6puIGNoaeG6v20gOC43NCUKCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIHRydW5nIHTDrW5oIHRow6wgbmjhu69uZyBuZ8aw4budaSBjw7MKICAgIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgdOG7qyAwIMSR4bq/biAzIGLDoGkgxJHEg25nIHRyw6puIG5nw6B5IGNoaeG6v20gMjAuMzklLCBuaOG7r25nCiAgICBuZ8aw4budaSBjw7MgdOG7qyAzIMSR4bq/biA1IGLDoGkgxJHEg25nIHRyw6puIG5nw6B5IGNoaeG6v20gNi44MCUgdsOgIGtow7RuZyBjw7MgbmfGsOG7nWkKICAgIG7DoG8gY+G6o20gdGjhuqV5IHRydW5nIHTDrW5oIGtoaSBjw7MgdOG7qyA1IGLDoGkgxJHEg25nIHRy4bufIGzDqm4gbeG7l2kgbmfDoHkKCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIGJ14buTbiBiw6MgdGjDrCBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRCiAgICBsxrDhu6NuZyBiw6BpIMSRxINuZyB04burIDAgxJHhur9uIDMgYsOgaSDEkcSDbmcgdHLDqm4gbmfDoHkgY2hp4bq/bSAxMi42MiUsIGtow7RuZyBjw7MKICAgIG5nxrDhu51pIG7DoG8gY+G6o20gdGjhuqV5IGJ14buTbiBiw6Mga2hpIGPDsyB04burIDMgxJHhur9uIDUgYsOgaSDEkcSDbmcgdHLDqm4gbmfDoHkgdsOgCiAgICBuaOG7r25nIG5nxrDhu51pIGPDsyB04burIDUgYsOgaSDEkcSDbmcgdHLhu58gbMOqbiBjaGnhur9tIDAuOTclCgpOaMOsbiBjaHVuZywgc+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyBt4buXaSBuZ8OgeSBjw7MgbeG7kWkgbGnDqm4gaOG7hyDEkcOhbmcga+G7gyB24bubaSBj4bqjbQp4w7pjIHbDoCBz4bupYyBraG/hursgdGluaCB0aOG6p24gY+G7p2EgbmfGsOG7nWkgZMO5bmcgbeG6oW5nIHjDoyBo4buZaS4gVmnhu4djIMSRxINuZyDDrXQgYsOgaQp0aMaw4budbmcgbGnDqm4gcXVhbiDEkeG6v24gY+G6o20geMO6YyB0acOqdSBj4buxYywgdHJvbmcga2hpIMSRxINuZyBuaGnhu4F1IGLDoGkgY8OzIHRo4buDCmfDs3AgcGjhuqduIG1hbmcgbOG6oWkgY+G6o20geMO6YyB0w61jaCBj4buxYyB2w6AgY+G6o2kgdGhp4buHbiBz4bupYyBraG/hursgdGluaCB0aOG6p24uIMSQaeG7gXUKbsOgeSBuaOG6pW4gbeG6oW5oIHThuqdtIHF1YW4gdHLhu41uZyBj4bunYSBz4buxIHTGsMahbmcgdMOhYyB2w6AgY8O0bmcgbmjhuq1uIHRyw6puIG3huqFuZyB4w6MKaOG7mWkgxJHhu5FpIHbhu5tpIGPhuqNtIHjDumMgdsOgIHPhu6ljIGtob+G6uyB0aW5oIHRo4bqnbiBj4bunYSBuZ8aw4budaSBkw7luZy4KCiMjIyMgKipCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgYmnhur9uIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkqKgoKKipC4bqjbmcgdOG6p24gc+G7kV9C4bqjbmcgdOG6p24gc3XhuqV0KioKCmBgYHtyfQplbW9saWtlIDwtIHRhYmxlKGQkRG9taW5hbnRfRW1vdGlvbiwgZGxpa2UpCmFkZG1hcmdpbnMoZW1vbGlrZSkKcHJvcC50YWJsZShlbW9saWtlKQphZGRtYXJnaW5zKHByb3AudGFibGUoZW1vbGlrZSkpICoxMDAKYGBgCgoqKsSQ4buTIHRo4buLKioKCmBgYHtyfQpkIHw+IGdncGxvdChhZXMoeD0gZGxpa2UseT1hZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0ib3JhbmdlIikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICJjb3VudCIsIGNvbG9yID0gImJsYWNrIiwgdmp1c3QgPSAtIC41KSArIGZhY2V0X2dyaWQoLiB+RG9taW5hbnRfRW1vdGlvbikgKyBsYWJzKHggPSAiTMaw4bujdCB0aMOtY2gg4bupbmcgduG7m2kgY+G6o20geMO6YyBuaOG6rW4gxJHGsOG7o2MgdHLDqm4gbmfDoHkiLHkgPSAiU+G7kSBuZ8aw4budaSBkw7luZyIpCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleToKCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIHThu6ljIGdp4bqtbiB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzCiAgICBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDAgxJHhur9uIDM1IGzGsOG7o3QgdGjDrWNoIGNoaeG6v20KICAgIDQuODUlLCBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDM1IMSR4bq/biA4MAogICAgbMaw4bujdCB0aMOtY2ggY2hp4bq/bSAzLjg4JSB2w6Aga2jDtG5nIGPDsyBuZ8aw4budaSBuw6BvIGPhuqNtIHRo4bqleSB04bupYyBnaeG6rW4ga2hpCiAgICBuaOG6rW4gxJHGsOG7o2MgdOG7qyA4MCBsxrDhu6N0IHRow61jaCB0cuG7nyBsw6puIG3hu5dpIG5nw6B5CgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyBsbyBs4bqvbmcgdGjDrCBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRCiAgICBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgdOG7qyAwIMSR4bq/biAzNSBsxrDhu6N0IHRow61jaCBjaGnhur9tIDEwLjY4JSwKICAgIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSR4buxxqFjIHRyw6puIG5nw6B5IHThu6sgMzUgxJHhur9uIDgwIGzGsOG7o3QKICAgIHRow61jaCBjaGnhur9tIDkuNzElIHbDoCBuaOG7r25nIG5nxrDhu51pIGPDsyB04burIDgwIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbgogICAgbmfDoHkgdHLhu58gbMOqbiBjaGnhur9tIDAuOTclCgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyBjaMOhbiBu4bqjbiB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzCiAgICBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDAgxJHhur9uIDM1IGzGsOG7o3QgdGjDrWNoIGNoaeG6v20KICAgIDE1LjUzJSwgdsOgIGtow7RuZyBjw7MgbmfGsOG7nWkgbsOgbyBj4bqjbSB0aOG6pXkgdOG7qWMgY2jDoW4gbuG6o24ga2hpIG5o4bqtbiDEkcaw4bujYyB04burCiAgICAzNSBsxrDhu6N0IHRow61jaCB0cuG7nyBsw6puIG3hu5dpIG5nw6B5CgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyB2dWkgduG6uyB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EKICAgIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDAgxJHhur9uIDM1IGzGsOG7o3QgdGjDrWNoIGNoaeG6v20gMC45NyUsCiAgICBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDM1IMSR4bq/biA4MCBsxrDhu6N0CiAgICB0aMOtY2ggY2hp4bq/bSA3Ljc3JSB2w6Agbmjhu69uZyBuZ8aw4budaSBjw7MgdOG7qyA4MCBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHhu7HGoWMgdHLDqm4KICAgIG5nw6B5IHRy4bufIGzDqm4gY2hp4bq/bSA0Ljg1JQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgdHJ1bmcgdMOtbmggdGjDrCBuaOG7r25nIG5nxrDhu51pIGPDswogICAgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgdOG7qyAwIMSR4bq/biAzNSBsxrDhu6N0IHRow61jaCBjaGnhur9tCiAgICAyMC4zOSUsIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSR4buxxqFjIHRyw6puIG5nw6B5IHThu6sgMzUgxJHhur9uCiAgICA4MCBsxrDhu6N0IHRow61jaCBjaGnhur9tIDYuODAlIHbDoCBraMO0bmcgY8OzIG5nxrDhu51pIG7DoG8gY+G6o20gdGjhuqV5IHRydW5nIHTDrW5oCiAgICBraGkgbmjhuq1uIMSRxrDhu6NjIHThu6sgODAgbMaw4bujdCB0aMOtY2ggdHLhu58gbMOqbiBt4buXaSBuZ8OgeQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgYnXhu5NuIGLDoyB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EKICAgIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDAgxJHhur9uIDM1IGzGsOG7o3QgdGjDrWNoIGNoaeG6v20gMTAuNjglLAogICAgbmjhu69uZyBuZ8aw4budaSBjw7Mgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgdOG7qyAzNSDEkeG6v24gODAgbMaw4bujdAogICAgdGjDrWNoIGNoaeG6v20gMi45MSUgdsOgIGtow7RuZyBjw7MgbmfGsOG7nWkgbsOgbyBj4bqjbSB0aOG6pXkgdOG7qWMgZ2nhuq1uIGtoaSBuaOG6rW4KICAgIMSRxrDhu6NjIHThu6sgODAgbMaw4bujdCB0aMOtY2ggdHLhu58gbMOqbiBt4buXaSBuZ8OgeQoKTmjDrG4gY2h1bmcsCgotICAgVmnhu4djIG5o4bqtbiDEkcaw4bujYyDDrXQgbMaw4bujdCB0aMOtY2ggY8OzIOG6o25oIGjGsOG7n25nIHLDtSByw6BuZyDEkeG6v24gY+G6o20geMO6YyB0acOqdQogICAgY+G7sWMgY+G7p2EgbmfGsOG7nWkgZMO5bmcuIE5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIMOtdCBsxrDhu6N0IHRow61jaCB0aMaw4budbmcgY8OzIHh1CiAgICBoxrDhu5tuZyBj4bqjbSB0aOG6pXkgdOG7qWMgZ2nhuq1uLCBsbyBs4bqvbmcsIGNow6FuIG7huqNuIHbDoCBideG7k24gYsOjLiDEkMOieSBsw6AgZOG6pXUKICAgIGhp4buHdSBjaG8gdGjhuqV5IHPhu7EgdGhp4bq/dSBjw7RuZyBuaOG6rW4gaG/hurdjIHTGsMahbmcgdMOhYyB0csOqbiBt4bqhbmcgeMOjIGjhu5lpIGPDswogICAgdGjhu4MgZ8OieSByYSBjw6FjIHbhuqVuIMSR4buBIHbhu4Egc+G7qWMga2hv4bq7IHRpbmggdGjhuqduLgoKLSAgIE5nxrDhu6NjIGzhuqFpLCBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBsxrDhu6N0IHRow61jaCBjw7Mg4bqjbmggaMaw4bufbmcgdMOtY2ggY+G7sWMgxJHhur9uIHTDom0KICAgIHRy4bqhbmcgY+G7p2EgbmfGsOG7nWkgZMO5bmcuIE5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIG5oaeG7gXUgbMaw4bujdCB0aMOtY2ggdGjGsOG7nW5nCiAgICBjw7MgeHUgaMaw4bubbmcgY+G6o20gdGjhuqV5IHZ1aSB24bq7LCBjaG8gdGjhuqV5IHPhu7EgY8O0bmcgbmjhuq1uIHbDoCB0xrDGoW5nIHTDoWMgdMOtY2gKICAgIGPhu7FjIGPDsyB0aOG7gyBj4bqjaSB0aGnhu4duIHTDom0gdHLhuqFuZyBj4bunYSBo4buNLgoKLSAgIE3hu5l0IHBo4bqnbiBs4bubbiBuZ8aw4budaSBkw7luZyBnaeG7ryDEkcaw4bujYyBj4bqjbSB4w7pjIHRydW5nIHTDrW5oIG5nYXkgY+G6oyBraGkgbmjhuq1uCiAgICDEkcaw4bujYyDDrXQgbMaw4bujdCB0aMOtY2gsIMSRaeG7gXUgbsOgeSBjw7MgdGjhu4MgY2hvIHRo4bqleSBy4bqxbmcga2jDtG5nIHBo4bqjaSBhaSBjxaluZwogICAgYuG7iyDhuqNuaCBoxrDhu59uZyB0acOqdSBj4buxYyBi4bufaSBz4buRIGzGsOG7o3QgdGjDrWNoIHRo4bqlcC4gVHV5IG5oacOqbiwgc+G7sSB04buTbiB04bqhaQogICAgY+G7p2EgY+G6o20geMO6YyB0cnVuZyB0w61uaCDhu58gbeG7qWMgbMaw4bujdCB0aMOtY2ggdGjhuqVwIGNobyB0aOG6pXkgbeG7qWMgxJHhu5kgdMOhYwogICAgxJHhu5luZyBjw7MgdGjhu4Mga2jDoWMgbmhhdSBnaeG7r2EgY8OhYyBjw6EgbmjDom4uCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBDb21tZW50c19SZWNlaXZlZF9EYXkqKgoKKipNw6MgaMOzYSBiaeG6v24gQ29tbWVudHNfUmVjZWl2ZWRfRGF5IHRow6BuaCBiaeG6v24gxJHhu4tuaCB0w61uaCoqCgoqKkLhuqNuZyB04bqnbiBz4buRXF8gQuG6o25nIHThuqduIHN14bqldCoqCgpgYGB7cn0KZW1vY29tIDwtIHRhYmxlKGQkRG9taW5hbnRfRW1vdGlvbiwgZGNvbSkKYWRkbWFyZ2lucyhlbW9jb20pCnByb3AudGFibGUoZW1vY29tKQphZGRtYXJnaW5zKHByb3AudGFibGUoZW1vY29tKSkgKjEwMApgYGAKCioqxJDhu5MgdGjhu4sqKgoKYGBge3J9CmQgfD4gZ2dwbG90KGFlcyh4PSBkY29tLHk9YWZ0ZXJfc3RhdChjb3VudCkpKSArIGdlb21fYmFyKGZpbGw9InNreWJsdWUiKSArIGdlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0gImNvdW50IiwgY29sb3IgPSAiYmxhY2siLCB2anVzdCA9IC0wLjUpICsgZmFjZXRfZ3JpZCguIH5Eb21pbmFudF9FbW90aW9uKSArIGxhYnMoeCA9ICJMxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2Mg4bupbmcgduG7m2kgY+G6o20geMO6YyB0csOqbiBuZ8OgeSIseSA9ICJT4buRIG5nxrDhu51pIGTDuW5nIikKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5OgoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgdOG7qWMgZ2nhuq1uIHRow6wgbmjhu69uZyBuZ8aw4budaSBjw7MKICAgIHPhu5EgYsOsbmggbHXhuq1uIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSAwIMSR4bq/biAxMCBsxrDhu6N0IGLDrG5oIGx14bqtbiBjaGnhur9tCiAgICAyLjkxJSwgbmjhu69uZyBuZ8aw4budaSBjw7Mgc+G7kSBiw6xuaCBsdeG6rW4gbmjhuq1uIMSR4buxxqFjIHRyw6puIG5nw6B5IHThu6sgMTAgxJHhur9uIDI1CiAgICBsxrDhu6N0IGLDrG5oIGx14bqtbiBjaGnhur9tIDQuODUlIHbDoCBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMKICAgIHRyw6puIG5nw6B5IHThu6sgMjUgYsOsbmggbHXhuq1uIHRy4bufIGzDqm4gY2hp4bq/bSAwLjk3JQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgbG8gbOG6r25nIHRow6wgbmjhu69uZyBuZ8aw4budaSBjw7Mgc+G7kQogICAgYsOsbmggbHXhuq1uIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSAwIMSR4bq/biAxMCBsxrDhu6N0IGLDrG5oIGx14bqtbiBjaGnhur9tIDUuODMlLAogICAgbmjhu69uZyBuZ8aw4budaSBjw7Mgc+G7kSBiw6xuaCBsdeG6rW4gbmjhuq1uIMSR4buxxqFjIHRyw6puIG5nw6B5IHThu6sgMTAgxJHhur9uIDI1IGzGsOG7o3QKICAgIGLDrG5oIGx14bqtbiBjaGnhur9tIDE0LjU2JSB2w6Agbmjhu69uZyBuZ8aw4budaSBjw7Mgc+G7kSBiw6xuaCBsdeG6rW4gbmjhuq1uIMSR4buxxqFjIHRyw6puCiAgICBuZ8OgeSB04burIDI1IGLDrG5oIGx14bqtbiB0cuG7nyBsw6puIGNoaeG6v20gMC45NyUKCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIGNow6FuIG7huqNuIHRow6wgbmjhu69uZyBuZ8aw4budaSBjw7MKICAgIHPhu5EgYsOsbmggbHXhuq1uIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSAwIMSR4bq/biAxMCBsxrDhu6N0IGLDrG5oIGx14bqtbiBjaGnhur9tCiAgICAxNC41NiUsIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EgYsOsbmggbHXhuq1uIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDEwIMSR4bq/biAyNQogICAgbMaw4bujdCBiw6xuaCBsdeG6rW4gY2hp4bq/bSAwLjk3JSB2w6Aga2jDtG5nIGPDsyBuZ8aw4budaSBuw6BvIGPhuqNtIHRo4bqleSBjaMOhbiBu4bqjbgogICAga2hpIG5o4bqtbiDEkcaw4bujYyB04burIDI1IGLDrG5oIGx14bqtbiB0cuG7nyBsw6puIG3hu5dpIG5nw6B5CgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyB2dWkgduG6uyB0aMOsIGtow7RuZyBjw7MgbmfGsOG7nWkgbsOgbwogICAgbmjhuq1uIMSRxrDhu6NjIHThu6sgMCDEkeG6v24gMTAgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHksIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EKICAgIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgdOG7qyAxMCDEkeG6v24gMjUgbMaw4bujdCBiw6xuaCBsdeG6rW4gY2hp4bq/bQogICAgNC44NSUgdsOgIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EgYsOsbmggbHXhuq1uIG5o4bqtbiDEkeG7scahYyB0csOqbiBuZ8OgeSB04burIDI1IGLDrG5oCiAgICBsdeG6rW4gdHLhu58gbMOqbiBjaGnhur9tIDguNzQlCgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyB0cnVuZyB0w61uaCB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzCiAgICBz4buRIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgMCDEkeG6v24gMTAgbMaw4bujdCBiw6xuaCBsdeG6rW4gY2hp4bq/bQogICAgMTQuNTYlLCBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgdOG7qyAxMCDEkeG6v24gMjUKICAgIGzGsOG7o3QgYsOsbmggbHXhuq1uIGNoaeG6v20gMTEuNjUlIHbDoCBuaOG7r25nIG5nxrDhu51pIGPDsyBz4buRIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMKICAgIHRyw6puIG5nw6B5IHThu6sgMjUgYsOsbmggbHXhuq1uIHRy4bufIGzDqm4gY2hp4bq/bSAwLjk3JQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgYnXhu5NuIGLDoyB0aMOsIG5o4buvbmcgbmfGsOG7nWkgY8OzIHPhu5EKICAgIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgMCDEkeG6v24gMTAgbMaw4bujdCBiw6xuaCBsdeG6rW4gdsOgIG5o4buvbmcgbmfGsOG7nWkKICAgIGPDsyBz4buRIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHhu7HGoWMgdHLDqm4gbmfDoHkgdOG7qyAxMCDEkeG6v24gMjUgbMaw4bujdCBiw6xuaCBsdeG6rW4gxJHhu4F1CiAgICBjaGnhur9tIDguOCUgdsOgIGtow7RuZyBjw7MgbmfGsOG7nWkgbsOgbyBj4bqjbSB0aOG6pXkgYnXhu5NuIGLDoyBraGkgbmjhuq1uIMSRxrDhu6NjIHThu6sKICAgIDI1IGLDrG5oIGx14bqtbiB0cuG7nyBsw6puIG3hu5dpIG5nw6B5CgpL4bq/dCBxdeG6oyBuw6B5IG5o4bqlbiBt4bqhbmggdOG6p20gcXVhbiB0cuG7jW5nIGPhu6dhIHTGsMahbmcgdMOhYyB4w6MgaOG7mWkgdHLDqm4gbeG6oW5nCnRyb25nIHZp4buHYyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZy4gU+G7sSB0aGnhur91IGPDtG5nIG5o4bqtbiBob+G6t2MKcGjhuqNuIGjhu5NpIGPDsyB0aOG7gyBnw6J5IHJhIGPDoWMgY+G6o20geMO6YyB0acOqdSBj4buxYywgdHJvbmcga2hpIHPhu7EgdMawxqFuZyB0w6FjIHTDrWNoCmPhu7FjIHbDoCBjw7RuZyBuaOG6rW4gY8OzIHRo4buDIGPhuqNpIHRoaeG7h24gdMOibSB0cuG6oW5nIHbDoCBj4bqjbSB4w7pjIG5nxrDhu51pIGTDuW5nLgoKIyMjIyAqKkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBiaeG6v24gTWVzc2FnZXNfU2VudF9QZXJfRGF5KioKCioqQuG6o25nIHThuqduIHPhu5FcXyBC4bqjbmcgdOG6p24gc3XhuqV0KioKCmBgYHtyfQplbW9tZXMgPC0gdGFibGUoZCREb21pbmFudF9FbW90aW9uLCBkbWVzKQphZGRtYXJnaW5zKGVtb21lcykKcHJvcC50YWJsZShlbW9tZXMpCmFkZG1hcmdpbnMocHJvcC50YWJsZShlbW9tZXMpKSAqMTAwCmBgYAoKKirEkOG7kyB0aOG7iyoqCgpgYGB7cn0KZCB8PiBnZ3Bsb3QoYWVzKHg9IGRtZXMseT1hZnRlcl9zdGF0KGNvdW50KSkpICsgZ2VvbV9iYXIoZmlsbD0icmVkIikgKyBnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9ICJjb3VudCIsIGNvbG9yID0gImJsYWNrIiwgdmp1c3QgPSAtIC41KSArIGZhY2V0X2dyaWQoLiB+RG9taW5hbnRfRW1vdGlvbikgKyBsYWJzKHggPSAiTMaw4bujdCB0aW4gbmjhuq9uIMSRxrDhu6NjIGfhu61pIOG7qW5nIHbhu5tpIGPhuqNtIHjDumMgbmjhuq1uIMSRxrDhu6NjIHRyw6puIG5nw6B5Iix5ID0gIlPhu5EgbmfGsOG7nWkgZMO5bmciKQpgYGAKCkvhur90IHF14bqjIHRyw6puIGNobyB0aOG6pXk6CgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyB04bupYyBnaeG6rW4gdGjDrCBraMO0bmcgY8OzIG5nxrDhu51pCiAgICBuw6BvIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAwIMSR4bq/biAxMCB0aW4gbmjhuq9uLCBuaOG7r25nIG5nxrDhu51pIGfhu61pIHRpbgogICAgbmjhuq9uIG3hu5dpIG5nw6B5IDEwIMSR4bq/biAyNSB0aW4gbmjhuq9uIGNoaeG6v20gNy43NyUgdsOgIG5o4buvbmcgbmfGsOG7nWkgZ+G7rWkgdGluCiAgICBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAyNSB0aW4gbmjhuq9uIHRy4bufIGzDqm4gY2hp4bq/bSAwLjk3JQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgbG8gbOG6r25nIHRow6wga2jDtG5nIGPDsyBuZ8aw4budaQogICAgbsOgbyBn4butaSB0aW4gbmjhuq9uIG3hu5dpIG5nw6B5IHThu6sgMCDEkeG6v24gMTAgdGluIG5o4bqvbiwgbmjhu69uZyBuZ8aw4budaSBn4butaSB0aW4KICAgIG5o4bqvbiBt4buXaSBuZ8OgeSAxMCDEkeG6v24gMjUgdGluIG5o4bqvbiBjaGnhur9tIDEzLjU5JSB2w6Agbm5o4buvbmcgbmfGsOG7nWkgZ+G7rWkKICAgIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAyNSB0aW4gbmjhuq9uIHRy4bufIGzDqm4gY2hp4bq/bSA3Ljc3JQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgY2jDoW4gbuG6o24gdGjDrCBuaOG7r25nIG5nxrDhu51pIGfhu61pCiAgICB0aW4gbmjhuq9uIG3hu5dpIG5nw6B5IHThu6sgMCDEkeG6v24gMTAgdGluIG5o4bqvbiBjaGnhur9tIDQuODUlLCBuaOG7r25nIG5nxrDhu51pIGfhu61pCiAgICB0aW4gbmjhuq9uIG3hu5dpIG5nw6B5IDEwIMSR4bq/biAyNSB0aW4gbmjhuq9uIGNoaeG6v20gMTAuNjglIHbDoCBraMO0bmcgY8OzIG5nxrDhu51pCiAgICBuw6BvIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAyNSB0aW4gbmjhuq9uIHRy4bufIGzDqm4KCi0gICBUcm9uZyBz4buRIG5o4buvbmcgbmfGsOG7nWkgZMO5bmcgbWFuZyBj4bqjbSB4w7pjIHZ1aSB24bq7IHRow6wga2jDtG5nIGPDsyBuZ8aw4budaSBuw6BvCiAgICBn4butaSB0aW4gbmjhuq9uIG3hu5dpIG5nw6B5IHThu6sgMCDEkeG6v24gMTAgdGluIG5o4bqvbiwgbmjhu69uZyBuZ8aw4budaSBn4butaSB0aW4gbmjhuq9uCiAgICBt4buXaSBuZ8OgeSAxMCDEkeG6v24gMjUgdGluIG5o4bqvbiBjaGnhur9tIDIuOTElIHbDoCBuaOG7r25nIG5nxrDhu51pIGfhu61pIHRpbiBuaOG6r24KICAgIG3hu5dpIG5nw6B5IHThu6sgMjUgdGluIG5o4bqvbiB0cuG7nyBsw6puIGNoaeG6v20gMTAuNjglCgotICAgVHJvbmcgc+G7kSBuaOG7r25nIG5nxrDhu51pIGTDuW5nIG1hbmcgY+G6o20geMO6YyB0cnVuZyB0w61uaCB0aMOsIG5o4buvbmcgbmfGsOG7nWkKICAgIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAwIMSR4bq/biAxMCB0aW4gbmjhuq9uIGNoaeG6v20gMy44OCUsIG5o4buvbmcgbmfGsOG7nWkKICAgIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgMTAgxJHhur9uIDI1IHRpbiBuaOG6r24gY2hp4bq/bSAyMS4zNiUgdsOgIG5o4buvbmcgbmfGsOG7nWkKICAgIGfhu61pIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAyNSB0aW4gbmjhuq9uIHRy4bufIGzDqm4gY2hp4bq/bSAxLjk0JQoKLSAgIFRyb25nIHPhu5Egbmjhu69uZyBuZ8aw4budaSBkw7luZyBtYW5nIGPhuqNtIHjDumMgYnXhu5NuIGLDoyB0aMOsIGtow7RuZyBjw7MgbmfGsOG7nWkKICAgIG7DoG8gZ+G7rWkgdGluIG5o4bqvbiBt4buXaSBuZ8OgeSB04burIDAgxJHhur9uIDEwIHRpbiBuaOG6r24sIG5o4buvbmcgbmfGsOG7nWkgZ+G7rWkgdGluCiAgICBuaOG6r24gbeG7l2kgbmfDoHkgMTAgxJHhur9uIDI1IHRpbiBuaOG6r24gY2hp4bq/bSAxMS42NSUgdsOgIG5o4buvbmcgbmfGsOG7nWkgZ+G7rWkgdGluCiAgICBuaOG6r24gbeG7l2kgbmfDoHkgdOG7qyAyNSB0aW4gbmjhuq9uIHRy4bufIGzDqm4gY2hp4bq/bSAxLjk0JQoKR+G7rWkgw610IGhv4bq3YyB0cnVuZyBiw6xuaCBz4buRIGzGsOG7o25nIHRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdGjGsOG7nW5nIGxpw6puIHF1YW4gxJHhur9uCmPhuqNtIHjDumMgdGnDqnUgY+G7sWMgbmjGsCB04bupYyBnaeG6rW4sIGxvIGzhuq9uZywgY2jDoW4gbuG6o24sIHbDoCBideG7k24gYsOjLiDEkGnhu4F1IG7DoHkKbmjhuqVuIG3huqFuaCB04bqnbSBxdWFuIHRy4buNbmcgY+G7p2Egc+G7sSB0xrDGoW5nIHTDoWMgdsOgIHBo4bqjbiBo4buTaSB04burIG5nxrDhu51pIGtow6FjCnRyb25nIHZp4buHYyDhuqNuaCBoxrDhu59uZyDEkeG6v24gdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGPhu6dhIG5nxrDhu51pIGTDuW5nLiBH4butaSBuaGnhu4F1CnRpbiBuaOG6r24gbeG7l2kgbmfDoHkgdGjGsOG7nW5nIGxpw6puIHF1YW4gxJHhur9uIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbmjGsCB2dWkgduG6uywgbeG7mXQKc+G7kSBuZ8aw4budaSBkw7luZyB24bqrbiBnaeG7ryDEkcaw4bujYyBj4bqjbSB4w7pjIHRydW5nIHTDrW5oIGLhuqV0IGvhu4Mgc+G7kSBsxrDhu6NuZyB0aW4gbmjhuq9uCmfhu61pIMSRaS4gVmnhu4djIGfhu61pIHRpbiBuaOG6r24gbmhp4buBdSBoYXkgw610IMSR4buBdSBjw7MgdGjhu4MgY8OzIG5o4buvbmcg4bqjbmggaMaw4bufbmcKa2jDoWMgbmhhdSDEkeG6v24gY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZywgdOG7qyB0acOqdSBj4buxYyDEkeG6v24gdMOtY2ggY+G7sWMsIHTDuXkKdGh14buZYyB2w6BvIG3hu6ljIMSR4buZIHbDoCBwaOG6o24gaOG7k2kgbcOgIGjhu40gbmjhuq1uIMSRxrDhu6NjLgoKIyMgKipUaOG7kW5nIGvDqiBzdXkgZGnhu4VuKioKCiMjIyAqKktp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBjaG8gaGFpIGJp4bq/bioqCgoqKsSQ4buDIGThu4UgZMOgbmcgcGjDom4gdMOtY2ggaMahbiB0YSBjaGlhIGJp4bq/biAiRG9taW5hbnRfRW1vdGlvbiIgbMOgIHRy4bqhbmcgdGjDoWkKY+G6o20geMO6YyB0aMOgbmggaGFpIGJp4buDdSBoaeG7h24gIlTDrWNoIGPhu7FjIiB2w6AgIlRpw6p1IGPhu7FjIioqCgpUcm9uZyDEkcOzOgoKLSAgIEJp4buDdSBoaeG7h24gIlTDrWNoIGPhu7FjIiBn4buTbSBoYWkgdHLhuqFuZyB0aMOhaSBsw6AgIlZ1aSB24bq7IiB2w6AgIiBUcnVuZwogICAgdMOtbmgiLgoKLSAgIEJp4buDdSBoaeG7h24gIlRpw6p1IGPhu7FjIiBn4buTbSBjw6FjIHRy4bqhbmcgdGjDoWkgbMOgICJMbyBs4bqvbmciLCAiVOG7qWMgZ2nhuq1uIiwKICAgICJCdeG7k24gYsOjIiwgQ2jDoW4gbuG6o24iLgoKYGBge3J9CmRvbWkgPC0gaWZlbHNlKGQkRG9taW5hbnRfRW1vdGlvbiAlaW4lIGMoJ0hhcHBpbmVzcycsICdOZXV0cmFsJyksICdUw61jaCBj4buxYycsICdUacOqdSBj4buxYycpCnRhYmxlKGRvbWkpCmBgYAoKxJDhu4MgeMOhYyDEkeG7i25oIHhlbSBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXAgY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biBiaeG6v24gcGjhu6UgdGh14buZYyBsw6AKdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGhheSBraMO0bmcgdGEgc+G7rSBk4bulbmcga2nhu4NtIMSR4buLbmggQ2hpIGLDrG5oIHBoxrDGoW5nCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBBZ2UqKiAKCktp4buDbSB0cmEgdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSDEkeG7mSB0deG7lWkgdsOgIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZwpt4bqhbmcgeMOjIGjhu5lpLCB0YSDEkeG6t3QgZ2nhuqMgdGh1eeG6v3Qgc2F1CgokXHRleHR7SH1fMCQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgQWdlIMSR4buZYyBs4bqtcCB24bubaSBuaGF1LiIKCiRcdGV4dHtIfV8xJDogIkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBBZ2Uga2jDtG5nIMSR4buZYyBs4bqtcCAocGjhu6UgdGh14buZYykKduG7m2kgbmhhdS4iCgpgYGB7cn0KdGFibGUoZGFnZSwgZG9taSkKY2hpc3EudGVzdCh0YWJsZShkYWdlLCBkb21pKSkKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IHAtIHZhbHVlID0gMy44NjRlLTA1IFw8IDAsMDUgbsOqbiB0YSBiw6FjIGLhu48gXCQKXHRleHR7SH1cXzBcJC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgxJHhu5kgdHXhu5VpIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gdHLhuqFuZyB0aMOhaSBj4bqjbQp4w7pjIGPhu6dhIG5nxrDhu51pIGTDuW5nIG3huqFuZyB4w6MgaOG7mWkuCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBHZW5kZXIqKiAKCktp4buDbSB0cmEgdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSBnaeG7m2kgdMOtbmggdsOgIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaQpkw7luZyBt4bqhbmcgeMOjIGjhu5lpLCB0YSDEkeG6t3QgZ2nhuqMgdGh1eeG6v3Qgc2F1CgokXHRleHR7SH1fMCQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgR2VuZGVyIMSR4buZYyBs4bqtcCB24bubaSBuaGF1LiIKCiRcdGV4dHtIfV8xJDogIkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBHZW5kZXIga2jDtG5nIMSR4buZYyBs4bqtcCAocGjhu6UgdGh14buZYykKduG7m2kgbmhhdS4iCgpgYGB7cn0KdGFibGUoZCRHZW5kZXIsZG9taSkKY2hpc3EudGVzdCh0YWJsZShkJEdlbmRlcixkb21pKSkKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IHAtIHZhbHVlID0gMC4yODg1IFw+IDAsMDUgbsOqbiBjaMawYSDEkeG7pyBjxqEgc+G7nwpiw6FjIGLhu48gSDAuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGdp4bubaSB0w61uaCBraMO0bmcg4bqjbmggaMaw4bufbmcgxJHhur9uIHRy4bqhbmcgdGjDoWkKY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLgoKIyMjIyAqKkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBiaeG6v24gUGxhdGZvcm0qKiAKCktp4buDbSB0cmEgdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSBjw6FjIG7hu4FuIHThuqNuZyB2w6AgdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGPhu6dhIG5nxrDhu51pCmTDuW5nIG3huqFuZyB4w6MgaOG7mWksIHRhIMSR4bq3dCBnaeG6oyB0aHV54bq/dCBzYXUKCiRcdGV4dHtIfV8wJDogIkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBQbGF0Zm9ybSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4iCgokXHRleHR7SH1fMSQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgUGxhdGZvcm0ga2jDtG5nIMSR4buZYyBs4bqtcCAocGjhu6UKdGh14buZYykgduG7m2kgbmhhdS4iCgpgYGB7cn0KdGFibGUoZCRQbGF0Zm9ybSxkb21pKQpjaGlzcS50ZXN0KHRhYmxlKGQkUGxhdGZvcm0sZG9taSkpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBwLSB2YWx1ZSA9IDAuMDAwNTE2OSBcPCAwLDA1IG7Dqm4gdGEgYsOhYyBi4buPCkgwLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBjw6FjIG7hu4FuIHThuqNuZyBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6Ywpj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLgoKIyMjIyAqKkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBiaeG6v24gRGFpbHlfVXNhZ2VfVGltZSoqIAoKS2nhu4NtIHRyYSB0w61uaCDEkeG7mWMgbOG6rXAgZ2nhu69hIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgdsOgIHRy4bqhbmcgdGjDoWkKY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLCB0YSDEkeG6t3QgZ2nhuqMgdGh1eeG6v3Qgc2F1CgokXHRleHR7SH1fMCQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgRGFpbHlfVXNhZ2VfVGltZSDEkeG7mWMgbOG6rXAgduG7m2kKbmhhdS4iCgokXHRleHR7SH1fMSQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgRGFpbHlfVXNhZ2VfVGltZSBraMO0bmcgxJHhu5ljIGzhuq1wCihwaOG7pSB0aHXhu5ljKSB24bubaSBuaGF1LiIKCmBgYHtyfQp0YWJsZShkdGltZSwgZG9taSkKY2hpc3EudGVzdCh0YWJsZShkdGltZSwgZG9taSkpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBwLSB2YWx1ZSA9IDAuMDAwMTA0MiBcPCAwLDA1IG7Dqm4gdGEgYsOhYyBi4buPCkgwLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGjhurFuZyBuZ8OgeSBjw7Mg4bqjbmgKaMaw4bufbmcgxJHhur9uIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLgoKIyMjIyAqKkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBiaeG6v24gUG9zdHNfUGVyX0RheSoqIAoKS2nhu4NtIHRyYSB0w61uaCDEkeG7mWMgbOG6rXAgZ2nhu69hIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgbeG7l2kgbmfDoHkgdsOgIHRy4bqhbmcgdGjDoWkgY+G6o20KeMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLCB0YSDEkeG6t3QgZ2nhuqMgdGh1eeG6v3Qgc2F1CgokXHRleHR7SH1fMCQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgUG9zdHNfUGVyX0RheSDEkeG7mWMgbOG6rXAgduG7m2kgbmhhdS4iCgokXHRleHR7SH1fMSQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgUG9zdHNfUGVyX0RheSBraMO0bmcgxJHhu5ljIGzhuq1wIChwaOG7pQp0aHXhu5ljKSB24bubaSBuaGF1LiIKCmBgYHtyfQp0YWJsZShkcG9zLCBkb21pKQpjaGlzcS50ZXN0KHRhYmxlKGRwb3MsIGRvbWkpKQpgYGAKCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgcC0gdmFsdWUgPSAwLjAwMzYyNCBcPCAwLDA1IG7Dqm4gdGEgYsOhYyBi4buPIEgwLgrEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nIG3hu5dpIG5nw6B5IGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gdHLhuqFuZyB0aMOhaQpj4bqjbSB4w7pjIGPhu6dhIG5nxrDhu51pIGTDuW5nIG3huqFuZyB4w6MgaOG7mWkuCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBMaWtlc19SZWNlaXZlZF9QZXJfRGF5KiogCgpLaeG7g20gdHJhIHTDrW5oIMSR4buZYyBs4bqtcCBnaeG7r2Egc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgdsOgIHRy4bqhbmcKdGjDoWkgY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLCB0YSDEkeG6t3QgZ2nhuqMgdGh1eeG6v3Qgc2F1CgokXHRleHR7SH1fMCQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSDEkeG7mWMgbOG6rXAKduG7m2kgbmhhdS4iCgokXHRleHR7SH1fMSQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSBraMO0bmcgxJHhu5ljCmzhuq1wIChwaOG7pSB0aHXhu5ljKSB24bubaSBuaGF1LiIKCmBgYHtyfQp0YWJsZShkbGlrZSwgZG9taSkKY2hpc3EudGVzdCh0YWJsZShkbGlrZSwgZG9taSkpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBwLSB2YWx1ZSA9IDAuMDQzMTcgXDwgMCwwNSBuw6puIHRhIGLDoWMgYuG7jyBIMC4KxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/bgp0cuG6oW5nIHRow6FpIGPhuqNtIHjDumMgY+G7p2EgbmfGsOG7nWkgZMO5bmcgbeG6oW5nIHjDoyBo4buZaS4KCiMjIyMgKipCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgYmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkqKiAKCktp4buDbSB0cmEgdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeSB2w6AgdHLhuqFuZwp0aMOhaSBj4bqjbSB4w7pjIGPhu6dhIG5nxrDhu51pIGTDuW5nIG3huqFuZyB4w6MgaOG7mWksIHRhIMSR4bq3dCBnaeG6oyB0aHV54bq/dCBzYXUKCiRcdGV4dHtIfV8wJDogIkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5IMSR4buZYwps4bqtcCB24bubaSBuaGF1LiIKCiRcdGV4dHtIfV8xJDogIkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5IGtow7RuZwrEkeG7mWMgbOG6rXAgKHBo4bulIHRodeG7mWMpIHbhu5tpIG5oYXUuIgoKYGBge3J9CnRhYmxlKGRjb20sIGRvbWkpCmNoaXNxLnRlc3QodGFibGUoZGNvbSwgZG9taSkpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBwLSB2YWx1ZSA9IDAuMDA1NDEzIFw8IDAsMDUgbsOqbiB0YSBiw6FjIGLhu48gSDAuCsSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24KdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGPhu6dhIG5nxrDhu51pIGTDuW5nIG3huqFuZyB4w6MgaOG7mWkuCgojIyMjICoqQmnhur9uIERvbWluYW50X0Vtb3Rpb24gdsOgIGJp4bq/biBNZXNzYWdlc19TZW50X1Blcl9EYXkqKiAKCktp4buDbSB0cmEgdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSBz4buRIHRpbiBuaOG6r24gxJHGsOG7o2MgZ+G7rWkgbeG7l2kgbmfDoHkgdsOgIHRy4bqhbmcgdGjDoWkKY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLCB0YSDEkeG6t3QgZ2nhuqMgdGh1eeG6v3Qgc2F1CgokXHRleHR7SH1fMCQ6ICJCaeG6v24gRG9taW5hbnRfRW1vdGlvbiB2w6AgTWVzc2FnZXNfU2VudF9QZXJfRGF5IMSR4buZYyBs4bqtcAp24bubaSBuaGF1LiIKCiRcdGV4dHtIfV8xJDogIkJp4bq/biBEb21pbmFudF9FbW90aW9uIHbDoCBNZXNzYWdlc19TZW50X1Blcl9EYXkga2jDtG5nIMSR4buZYwps4bqtcCAocGjhu6UgdGh14buZYykgduG7m2kgbmhhdS4iCgpgYGB7cn0KdGFibGUoZG1lcywgZG9taSkKY2hpc3EudGVzdCh0YWJsZShkbWVzLCBkb21pKSkKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IHAtIHZhbHVlID0gMC4yNzYgXD4gMCwwNSBuw6puIGNoxrBhIMSR4bunIGPGoSBz4bufCmLDoWMgYuG7jyBIMC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgc+G7kSB0aW4gbmjhuq9uIMSRxrDhu6NjIGfhu61pIG3hu5dpIG5nw6B5IGtow7RuZyDhuqNuaApoxrDhu59uZyDEkeG6v24gdHLhuqFuZyB0aMOhaSBj4bqjbSB4w7pjIGPhu6dhIG5nxrDhu51pIGTDuW5nIG3huqFuZyB4w6MgaOG7mWkuCgojIyMgKipS4bunaSBybyB0xrDGoW5nIMSR4buRaSAocmVsYXRpdmUgcmlzaykgdsOgIHThu7cgbOG7hyBjaMOqbmggKE9kZCByYXRpbykqKgoKVsOsIHPhu5EgbMaw4bujbmcgcXVhbiBzw6F0IMOtdCBuw6puIHRhIHRp4bq/biBow6BuaCBtw6MgaMOzYSBjw6FjIGJp4bq/biBzYXUgdGjDoG5oIGJp4bq/bgpuaOG7iyBwaMOibiBnacO6cCB2aeG7h2MgcGjDom4gdGljaCwgZGnhu4VuIGdp4bqjaSB2w6Agc28gc8OhbmggY8OhYyBr4bq/dCBxdeG6oyB0cuG7nyBuw6puCmThu4UgZMOgbmcgaMahbgoKKipNw6MgaMOzYSBiaeG6v24gQWdlIHRow6BuaCBoYWkgYmnhu4N1IGhp4buHbiAiVHLhursiIHbDoCAiVHJ1bmcgbmnDqm4iKioKCkJp4bq/biBBZ2UgZ+G7k20gMiBiaeG7g3UgaGnhu4duOgoKLSAgIFRy4bq7IGzDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIHThu6sgMjEgdHXhu5VpIHThu5tpIDI4IHR14buVaSB0cm9uZyBi4buZIGThu68gbGnhu4d1LgoKLSAgIFRydW5nIG5pw6puIGzDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIHRyw6puIDI4IHR14buVaSB0cm9uZyBi4buZIGThu68gbGnhu4d1LgoKYGBge3J9CmRhZ2UyIDwtIGN1dCh4ID0gZCRBZ2UsCiAgICBicmVha3MgPSBjKDAsIDI4LCAzNSksIAogICAgbGFiZWxzID0gYygiVHLhursiLCAiVHJ1bmcgbmnDqm4iKSwKICAgIHJpZ2h0ID0gVFJVRSkgCnRhYmxlKGRhZ2UyKQoKYGBgCgoqKk3DoyBow7NhIGJp4bq/biBEYWlseV9Vc2FnZV9UaW1lIHRow6BuaCBoYWkgYmnhu4N1IGhp4buHbiAiw410IiB2w6AgIk5oaeG7gXUiKioKCkJp4bq/biBEYWlseV9Vc2FnZV9UaW1lIGfhu5NtIDIgYmnhu4N1IGhp4buHbjoKCi0gICDDjXQgbMOgIHPhu5EgbMaw4bujbmcgbmfGsOG7nWkgZMO5bmcgZMOgbmggdGjhu51pIGdpYW4gdOG7qyA0MC04MCBwaMO6dCDEkeG7gyBz4butIGThu6VuZwogICAgbeG6oW5nIHjDoyBo4buZaS4KCi0gICBOaGnhu4F1IGzDoCBz4buRIGzGsOG7o25nIG5nxrDhu51pIGTDuW5nIGTDoG5oIHRo4budaSBnaWFuIHThu6sgdHLDqm4gODAgcGjDunQgxJHhu4Mgc+G7rQogICAgZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkuCgpgYGB7cn0KZHRpbWUyIDwtIGN1dCh4ID0gZCRgRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcylgLAogICAgYnJlYWtzID0gYygwLCA4MCwgMjAwKSwgCiAgICBsYWJlbHMgPSBjKCLDjXQiLCAiTmhp4buBdSIpLAogICAgcmlnaHQgPSBUUlVFKSAKdGFibGUoZHRpbWUyKQpgYGAKCioqTcOjIGjDs2EgYmnhur9uIFBvc3RzX1Blcl9EYXkgdGjDoG5oIGhhaSBiaeG7g3UgaGnhu4duICLDjXQiIHbDoCAiTmhp4buBdSIqKgoKQmnhur9uIFBvc3RzX1Blcl9EYXkgZ+G7k20gMiBiaeG7g3UgaGnhu4duOgoKLSAgIMONdCBsw6Agc+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyB04burIDEtMiBiw6BpIHRyw6puIG3huqFuZyB4w6MgaOG7mWkuCgotICAgTmhp4buBdSBsw6Agc+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyB04burIHRyw6puIDIgYsOgaSB0csOqbiBt4bqhbmcgeMOjIGjhu5lpLgoKYGBge3J9CmRwb3MyIDwtIGN1dCh4ID0gZCRQb3N0c19QZXJfRGF5LAogICAgYnJlYWtzID0gYygwLCAyLCA4KSwgCiAgICBsYWJlbHMgPSBjKCLDjXQiLCAiTmhp4buBdSIpLAogICAgcmlnaHQgPSBUUlVFKSAKdGFibGUoZHBvczIpCmBgYAoKKipNw6MgaMOzYSBiaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSB0aMOgbmggaGFpIGJp4buDdSBoaeG7h24gIsONdCIgdsOgCiJOaGnhu4F1IioqCgpCaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSBn4buTbSAyIGJp4buDdSBoaeG7h246CgotICAgw410IGzDoCBz4buRIG5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYyBsxrDhu6N0IHRow61jaCBt4buXaSBuZ8OgeSB04burIDAgxJHhur9uIDIwIGzGsOG7o3QKICAgIHRow61jaAoKLSAgIE5oaeG7gXUgbMOgIHPhu5EgbmfGsOG7nWkgZMO5bmcgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IHThu6sgdHLDqm4gMjAgbMaw4bujdAogICAgdGjDrWNoCgpgYGB7cn0KZGxpa2UyIDwtIGN1dCh4ID0gZCRMaWtlc19SZWNlaXZlZF9QZXJfRGF5LAogICAgYnJlYWtzID0gYygwLCAyMCwgMTEwKSwgCiAgICBsYWJlbHMgPSBjKCLDjXQiLCAiTmhp4buBdSIpLAogICAgcmlnaHQgPSBUUlVFKSAKdGFibGUoZGxpa2UyKQpgYGAKCioqTcOjIGjDs2EgYmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgdGjDoG5oIGhhaSBiaeG7g3UgaGnhu4duICLDjXQiIHbDoAoiTmhp4buBdSIqKgoKQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgZ+G7k20gMiBiaeG7g3UgaGnhu4duOgoKLSAgIMONdCBsw6Agc+G7kSBuZ8aw4budaSBkw7luZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkgdOG7qyAwIMSR4bq/biAxMAogICAgbMaw4bujdCBiw6xuaCBsdeG6rW4uCgotICAgTmhp4buBdSBsw6Agc+G7kSBuZ8aw4budaSBkw7luZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkgdOG7qyB0csOqbiAxMAogICAgbMaw4bujdCBiw6xuaCBsdeG6rW4uCgpgYGB7cn0KZGNvbTIgPC0gY3V0KHggPSBkJENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXksCiAgICBicmVha3MgPSBjKDAsIDEwLCA0MCksIAogICAgbGFiZWxzID0gYygiw410IiwgIk5oaeG7gXUiKSwKICAgIHJpZ2h0ID0gVFJVRSkgCnRhYmxlKGRjb20yKQpgYGAKCiMjIyMgKipUw61uaCBy4bunaSBybyB0xrDGoW5nIMSR4buRaSB2w6AgdOG7tyBs4buHIGNow6puaCBnaeG7r2EgYmnhur9uIEFnZSB2w6AgYmnhur9uIERvbWluYW50X0Vtb3Rpb24qKgoKLSAgICoqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKgoKYGBge3J9CmFnZTJkb21pIDwtdGFibGUoZGFnZTIsZG9taSkKYWdlMmRvbWkKUmVsUmlzayhhZ2UyZG9taSkKYGBgCgpU4bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbcOgIOG7nyDEkeG7mSB0deG7lWkgdHLhursgY2FvIGjGoW4gdOG7tyBs4buHCm5o4buvbmcgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGPDsyDEkeG7mSB0deG7lWkgdHJ1bmcgbmnDqm4ga2hv4bqjbmcgMS40IGzhuqduLgoKLSAgICoqVOG7tyBs4buHIGNow6puaCoqCgpgYGB7cn0KYWdlMmRvbWkKYGBgCgpgYGB7cn0KT2Rkc1JhdGlvKGFnZTJkb21pKQpgYGAKClThu7cgbOG7hyDEkeG7gyBraOG6oyBuxINuZyBuaOG7r25nIG5nxrDhu51pIOG7nyDEkeG7mSB0deG7lWkgdHLhursgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGtoaSBz4butCmThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGNhbyBoxqFuIG5o4buvbmcgbmfGsOG7nWkg4bufIMSR4buZIHR14buVaSB0cnVuZyBuacOqbiBjw7Mga2jhuqMgbsSDbmcKbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCAxLjczNjExMSBs4bqnbgoKIyMjIyAqKlTDrW5oIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIHbDoCB04bu3IGzhu4cgY2jDqm5oIGdp4buvYSBiaeG6v24gUG9zdHNfUGVyX0RheSB2w6AgYmnhur9uIERvbWluYW50X0Vtb3Rpb24qKgoKLSAgICoqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKgoKYGBge3J9CnBvczJkb21pIDwtdGFibGUoZHBvczIsZG9taSkKcG9zMmRvbWkKUmVsUmlzayhwb3MyZG9taSkKYGBgCgpU4bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbcOgIGPDsyBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nIHRyb25nCm3hu5l0IG5nw6B5IMOtdCB0aOG6pXAgaMahbiB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY8OzIHPhu5EgbMaw4bujbmcKYsOgaSDEkcSDbmcgdHJvbmcgbeG7mXQgbmfDoHkgY2FvIGtob+G6o25nIDAuNiBs4bqnbi4KCi0gICAqKlThu7cgbOG7hyBjaMOqbmgqKgoKYGBge3J9CnBvczJkb21pCmBgYAoKYGBge3J9Ck9kZHNSYXRpbyhwb3MyZG9taSkKYGBgCgpU4bu3IGzhu4cgxJHhu4Mga2jhuqMgbsSDbmcgbmjhu69uZyBuZ8aw4budaSBjw7MgbMaw4bujbmcgYsOgaSDEkcSDbmcgbeG7mXQgbmfDoHkgw610IG1hbmcgY+G6o20geMO6Ywp0w61jaCBj4buxYyBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjaOG7iSBi4bqxbmcgMC40MjczNTA0IGzhuqduIHThu7cgbOG7hyBuaOG7r25nCm5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyBt4buZdCBuZ8OgeSBuaGnhu4F1IGPDsyBraOG6oyBuxINuZyBtYW5nIGPhuqNtIHjDumMgdMOtY2gKY+G7sWMuCgojIyMjICoqVMOtbmggcuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgdsOgIHThu7cgbOG7hyBjaMOqbmggZ2nhu69hIGJp4bq/biBEYWlseV9Vc2FnZV9UaW1lIHbDoCBiaeG6v24gRG9taW5hbnRfRW1vdGlvbioqCgotICAgKipS4bunaSBybyB0xrDGoW5nIMSR4buRaSoqCgpgYGB7cn0KdGltZTJkb21pIDwtdGFibGUoZHRpbWUyLGRvbWkpCmFkZG1hcmdpbnModGltZTJkb21pKQpSZWxSaXNrKHRpbWUyZG9taSkKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IHThu7cgbOG7hyBj4bunYSBuaOG7r25nIG5nxrDhu51pIGTDoG5oIMOtdCB0aOG7nWkgZ2lhbiBz4butIGThu6VuZwpt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBi4bqxbmcgMC42NjY3IGzhuqduIHNvIHbhu5tpIG5o4buvbmcgbmfGsOG7nWkKZMOgbmggbmhp4buBdSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4KCi0gICAqKlThu7cgbOG7hyBjaMOqbmgqKgoKYGBge3J9Ck9kZHNSYXRpbyh0aW1lMmRvbWkpCmBgYAoKVOG7tyBs4buHIMSR4buDIGto4bqjIG7Eg25nIG5o4buvbmcgbmfGsOG7nWkgZMOgbmggw610IHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbWFuZwpj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGNo4buJIGLhurFuZyAwLjUgbOG6p24gbmjhu69uZyBuZ8aw4budaSBkw6BuaCBuaGnhu4F1IHRo4budaSBnaWFuIMSR4buDIHPhu60KZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLgoKIyMjIyAqKlTDrW5oIHLhu6dpIHJvIHTGsMahbmcgxJHhu5FpIHbDoCB04bu3IGzhu4cgY2jDqm5oIGdp4buvYSBiaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSBiaeG6v24gRG9taW5hbnRfRW1vdGlvbioqCgotICAgKipS4bunaSBybyB0xrDGoW5nIMSR4buRaSoqCgpgYGB7cn0KbGlrZTJkb21pIDwtdGFibGUoZGxpa2UyLGRvbWkpCmFkZG1hcmdpbnMobGlrZTJkb21pKQpSZWxSaXNrKGxpa2UyZG9taSkKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IHThu7cgbOG7hyBj4bunYSBuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyDDrXQgbMaw4bujdCB0aMOtY2ggbeG7l2kKbmfDoHkga2hpIGTDuW5nIG3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGLhurFuZyAwLjg1NTI2MzIgbOG6p24gc28KduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBsxrDhu6N0IHRow61jaCBt4buXaSBuZ8OgeSBraGkgZMO5bmcgbeG6oW5nIHjDoyBo4buZaQptYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuCgotICAgKipU4bu3IGzhu4cgY2jDqm5oKioKCmBgYHtyfQpPZGRzUmF0aW8obGlrZTJkb21pKQpgYGAKClThu7cgbOG7hyDEkeG7gyBraOG6oyBuxINuZyBuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyDDrXQgbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkga2hpIGTDuW5nCm3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGNo4buJIGLhurFuZyAwLjc3MDgzMzMgbOG6p24gbmjhu69uZyBuaOG7r25nCm5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20KeMO6YyB0w61jaCBj4buxYy4KCiMjIyMgKipUw61uaCBy4bunaSBybyB0xrDGoW5nIMSR4buRaSB2w6AgdOG7tyBs4buHIGNow6puaCBnaeG7r2EgYmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgYmnhur9uIERvbWluYW50X0Vtb3Rpb24qKgoKLSAgICoqUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkqKgoKYGBge3J9CmNvbTJkb21pIDwtdGFibGUoZGNvbTIsZG9taSkKYWRkbWFyZ2lucyhjb20yZG9taSkKUmVsUmlzayhjb20yZG9taSkKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IHThu7cgbOG7hyBj4bunYSBuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyDDrXQgbMaw4bujdCBiw6xuaCBsdeG6rW4KbeG7l2kgbmfDoHkga2hpIGTDuW5nIG3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGLhurFuZyAwLjY4ODQwNTggbOG6p24Kc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSBraGkgZMO5bmcgbeG6oW5nCnjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuCgotICAgKipU4bu3IGzhu4cgY2jDqm5oKioKCmBgYHtyfQpPZGRzUmF0aW8oY29tMmRvbWkpCmBgYAoKVOG7tyBs4buHIMSR4buDIGto4bqjIG7Eg25nIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIMOtdCBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSBraGkKZMO5bmcgbeG6oW5nIHjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY2jhu4kgYuG6sW5nIDAuNTM3NjM0NCBs4bqnbiBuaOG7r25nCm5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IGtoaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcKY+G6o20geMO6YyB0w61jaCBj4buxYy4KCiMjIyAqKktob+G6o25nIMaw4bubYyBsxrDhu6NuZyBjaG8gUlIqKgoKLSAgICoqS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIFJSIGNobyBiaeG6v24gQWdlIHbhu5tpIGJp4bq/biBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQptIDwtIG1hdHJpeChjKDMwLCAzNiwKICAgICAgICAgICAgICAgMTIsIDI1KSwKICAgICAgICAgICAgIG5yb3cgPSAyLAogICAgICAgICAgICAgYnlyb3cgPSBUUlVFLAogICAgICAgICAgICAgZGltbmFtZXMgPSBsaXN0KGMoICJUcuG6uyIsICJUcnVuZyBuacOqbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIlTDrWNoIGPhu7FjIiwgIlRpw6p1IGPhu7FjIikpKQplcGl0YWIobSwgbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IG5o4buvbmcgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIOG7nyDEkeG7mSB0deG7lWkgdHLhursgbMOgCjQ1LjQ1JSBjw7JuIG5o4buvbmcgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIOG7nyB0deG7lWkgdHJ1bmcgbmnDqm4gbMOgCjMyLjQzJS4gVOG7tyBs4buHIHJlbGF0aXZlIHJpc2sgbMOgIGtob+G6o25nIDAuNzEsIMSRaeG7gXUgbsOgeSBjw7MgdGjhu4MgaGnhu4N1IGzDoCBuaMOzbQpuZ8aw4budaSDhu58gxJHhu5kgdHXhu5VpIHRydW5nIG5pw6puIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBjaOG7iSBi4bqxbmcgMC43MSBs4bqnbiBzbwp24bubaSBuaMOzbSBuZ8aw4budaSB0cuG6uy4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGPhu6dhIHJlbGF0aXZlIHJpc2sgbMOgIDAuNDE3OTE1IMSR4bq/bgoxLjIxODE5NCB24bubaSBt4bupYyDEkeG7mSB0aW4gY+G6rXkgOTUlIHbDoCBwLXZhbHVlIGzDoCAwLjIxNjgxOSBjaG8gdGjhuqV5IHPhu7EgY2jDqm5oCmzhu4djaCB24buBIGPhuqNtIHjDumMgZ2nhu69hIDIgbmjDs20gdHXhu5VpIGzDoCBraMO0bmcgcXXDoSBjYW8uCgotICAgKipLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgUlIgY2hvIGJp4bq/biBQb3N0c19QZXJfRGF5IHbhu5tpIGJp4bq/bgogICAgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KdSA8LSBtYXRyaXgoYygxNiwgMzYsCiAgICAgICAgICAgICAgIDI2LCAyNSksCiAgICAgICAgICAgICBucm93ID0gMiwKICAgICAgICAgICAgIGJ5cm93ID0gVFJVRSwKICAgICAgICAgICAgIGRpbW5hbWVzID0gbGlzdChjKCAiw410IiwgIk5oaeG7gXUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJUw61jaCBj4buxYyIsICJUacOqdSBj4buxYyIpKSkKZXBpdGFiKHUsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY8OzIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcKbeG7mXQgbmfDoHkgw610IGzDoCAzMC43NyUgY8OybiBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY8OzIHPhu5EgbMaw4bujbmcgYsOgaQrEkcSDbmcgbeG7mXQgbmfDoHkgbmhp4buBdSBsw6AgNTAuOTglLiBU4bu3IGzhu4cgcmVsYXRpdmUgcmlzayBsw6Aga2hv4bqjbmcgMS42NSwgxJFp4buBdQpuw6B5IGPDsyB0aOG7gyBoaeG7g3UgbMOgIG5ow7NtIG5nxrDhu51pIOG7nyBjw7MgbMaw4bujbmcgYsOgaSDEkcSDbmcgdHJvbmcgMSBuZ8OgeSBuaGnhu4F1IG3DoAptYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgYuG6sW5nIDEuNjUgbOG6p24gc28gduG7m2kgbmjDs20gbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nCsOtdC4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGPhu6dhIHJlbGF0aXZlIHJpc2sgbMOgIDEuMDE2NTUxIMSR4bq/biAyLjcwMDQ5OSB24bubaSBt4bupYwrEkeG7mSB0aW4gY+G6rXkgOTUlIHbDoCBwLXZhbHVlIGzDoCAwLjA0NTggY2hvIHRo4bqleSBz4buxIGtow6FjIGJp4buHdCBuaGnhu4F1IHbhu4EgY+G6o20KeMO6YyBnaeG7r2EgMiBuaMOzbSBjw7MgbMaw4bujbmcgYsOgaSDEkcSDbmcgw610IHbDoCBuaGnhu4F1IHRyb25nIG3hu5l0IG5nw6B5LgoKLSAgICoqS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGNobyBSUiBjaG8gYmnhur9uIERhaWx5X1VzYWdlX1RpbWUgduG7m2kgYmnhur9uCiAgICBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQpuIDwtIG1hdHJpeChjKDE5LCAzOCwKICAgICAgICAgICAgICAgMjMsIDIzKSwKICAgICAgICAgICAgIG5yb3cgPSAyLAogICAgICAgICAgICAgYnlyb3cgPSBUUlVFLAogICAgICAgICAgICAgZGltbmFtZXMgPSBsaXN0KGMoICLDjXQiLCAiTmhp4buBdSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIlTDrWNoIGPhu7FjIiwgIlRpw6p1IGPhu7FjIikpKQplcGl0YWIobiwgbWV0aG9kID0gJ3Jpc2tyYXRpbycsIHJldiA9ICdjJykKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IG5o4buvbmcgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGTDoG5oIMOtdCB0aOG7nWkKZ2lhbiDEkeG7gyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCAzMy4zMyUsIG5o4buvbmcgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjCmTDoG5oIG5oaeG7gXUgdGjhu51pIGdpYW4gxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBsw6AgNTAlLiBU4bu3IGzhu4cgcmVsYXRpdmUgcmlzawpsw6Aga2hv4bqjbmcgMS41LCDEkWnhu4F1IG7DoHkgdGjhu4MgaGnhu4duIHLhurFuZyBuaMOzbSBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMKZMOgbmggbmhp4buBdSB0aOG7nWkgZ2lhbiDEkeG7gyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGNhbyBoxqFuIDEuNSBs4bqnbiBzbyB24bubaSBuaMOzbQpuZ8aw4budaSBkw6BuaCDDrXQgdGjhu51pIGdpYW4gxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaS4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGPhu6dhCnJlbGF0aXZlIHJpc2sgbMOgIDAuOTQwMTA5OCDEkeG6v24gMi4zOTMzMzcgduG7m2kgbeG7qWMgxJHhu5kgdGluIGPhuq15IDk1JSB2w6AKcC12YWx1ZSBsw6AgMC4xMDgwMzIzIGNobyB0aOG6pXkgc+G7sSBjaMOqbmggbOG7h2NoIHbhu4EgY+G6o20geMO6YyBnaeG7r2EgMiBuaMOzbSBuZ8aw4budaQpkw6BuaCB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCBraMO0bmcgxJHDoW5nIGvhu4MuCgotICAgKipLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgUlIgY2hvIGJp4bq/biBMaWtlc19SZWNlaXZlZF9QZXJfRGF5IHbhu5tpIGJp4bq/bgogICAgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KcCA8LSBtYXRyaXgoYygxNCwgMjQsCiAgICAgICAgICAgICAgIDI4LCAzNyksCiAgICAgICAgICAgICBucm93ID0gMiwKICAgICAgICAgICAgIGJ5cm93ID0gVFJVRSwKICAgICAgICAgICAgIGRpbW5hbWVzID0gbGlzdChjKCAiw410IiwgIk5oaeG7gXUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJUw61jaCBj4buxYyIsICJUacOqdSBj4buxYyIpKSkKZXBpdGFiKHAsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSBuaOG7r25nIG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBuaOG6rW4gxJHGsOG7o2Mgw610CmzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCAzNi44NCUsIG5o4buvbmcgbmfGsOG7nWkgbWFuZwpj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjCmjhu5lpIGzDoCA0My4wOCUuIFThu7cgbOG7hyByZWxhdGl2ZSByaXNrIGzDoCBraG/huqNuZyAxLjE3LCDEkWnhu4F1IG7DoHkgdGjhu4MgaGnhu4duCnLhurFuZyBuaMOzbSBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbmjhuq1uIMSRxrDhu6NjIG5oaeG7gXUgbMaw4bujdCB0aMOtY2ggbeG7l2kKbmfDoHkga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY2FvIGjGoW4gMS4xNyBs4bqnbiBzbyB24bubaSBuaMOzbSBuaOG6rW4gxJHGsOG7o2Mgw610CmzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpLiBLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgY+G7p2EKcmVsYXRpdmUgcmlzayBsw6AgMC43MDgxODc0IMSR4bq/biAxLjkzMDQyMiB24bubaSBt4bupYyDEkeG7mSB0aW4gY+G6rXkgOTUlIHbDoApwLXZhbHVlIGzDoCAwLjY3ODA3MjEgY2hvIHRo4bqleSBz4buxIGNow6puaCBs4buHY2ggduG7gSBj4bqjbSB4w7pjIGdp4buvYSAyIG5ow7NtIG5nxrDhu51pCm5o4bqtbiDEkcaw4bujYyBz4buRIGzGsOG7o3QgdGjDrWNoIGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCBraMO0bmcgxJHDoW5nIGvhu4MuCgotICAgKipLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgUlIgY2hvIGJp4bq/biBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5IHbhu5tpIGJp4bq/bgogICAgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KcSA8LSBtYXRyaXgoYygxNSwgMzEsCiAgICAgICAgICAgICAgIDI3LCAzMCksCiAgICAgICAgICAgICBucm93ID0gMiwKICAgICAgICAgICAgIGJ5cm93ID0gVFJVRSwKICAgICAgICAgICAgIGRpbW5hbWVzID0gbGlzdChjKCAiw410IiwgIk5oaeG7gXUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJUw61jaCBj4buxYyIsICJUacOqdSBj4buxYyIpKSkKZXBpdGFiKHEsIG1ldGhvZCA9ICdyaXNrcmF0aW8nLCByZXYgPSAnYycpCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSBuaOG7r25nIG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBuaOG6rW4gxJHGsOG7o2Mgw610CmzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCAzMi42MSUsIG5o4buvbmcgbmfGsOG7nWkKbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IGtoaSBz4butCmThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCA0Ny4zNyUuIFThu7cgbOG7hyByZWxhdGl2ZSByaXNrIGzDoCBraG/huqNuZyAxLjQ1LCDEkWnhu4F1IG7DoHkKdGjhu4MgaGnhu4duIHLhurFuZyBuaMOzbSBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbmjhuq1uIMSRxrDhu6NjIG5oaeG7gXUgbMaw4bujdCBiw6xuaApsdeG6rW4gbeG7l2kgbmfDoHkga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY2FvIGjGoW4gMS40NSBs4bqnbiBzbyB24bubaSBuaMOzbSBuaOG6rW4KxJHGsOG7o2Mgw610IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpLiBLaG/huqNuZyDGsOG7m2MKbMaw4bujbmcgY+G7p2EgcmVsYXRpdmUgcmlzayBsw6AgMC44ODMzMDM2IMSR4bq/biAyLjM4ODkxNiB24bubaSBt4bupYyDEkeG7mSB0aW4gY+G6rXkgOTUlCnbDoCBwLXZhbHVlIGzDoCAwLjE1OTc0MTcgY2hvIHRo4bqleSBz4buxIGNow6puaCBs4buHY2ggduG7gSBj4bqjbSB4w7pjIGdp4buvYSAyIG5ow7NtCm5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCBraMO0bmcgxJHDoW5nCmvhu4MuCgojIyMgKipLaG/huqNuZyB14bubYyBsxrDhu6NuZyBjaG8gT2RkKioKCi0gICAqKktob+G6o25nIMaw4bubYyBsxrDhu6NuZyBPZGQgY2hvIGJp4bq/biBBZ2UgduG7m2kgYmnhur9uIERvbWluYW50X0Vtb3Rpb24qKgoKYGBge3J9CmVwaXRhYihtLCBtZXRob2QgPSAnb2Rkc3JhdGlvJyxyZXYgPSAnYycpCmBgYAoKS+G6v3QgcXXhuqMgdOG7tyBs4buHIE9kZHMgUmF0aW8gbMOgIGtob+G6o25nIDAuNTc2LCDEkWnhu4F1IG7DoHkgY8OzIHRo4buDIGhp4buDdSBsw6AgbmjDs20KbmfGsOG7nWkgdHJ1bmcgbmnDqm4gY8OzIGto4bqjIG7Eg25nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBjaOG7iSBi4bqxbmcgMC41NzYgbOG6p24gc28KduG7m2kgbmjDs20gbmfGsOG7nWkgdHLhursgY8OzIGto4bqjIG7Eg25nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nCmPhu6dhIE9kZHMgUmF0aW8gbMOgIHThu6sgMC4yNDgyMzE2IMSR4bq/biAxLjMzNjU1OSB24bubaSBt4bupYyDEkeG7mSB0aW4gY+G6rXkgOTUlIHbDoApwLXZhbHVlIGzDoCAwLjIxNjgxOSBjaG8gdGjhuqV5IHPhu7EgY2jDqm5oIGzhu4djaCB24buBIGPhuqNtIHjDumMgZ2nhu69hIDIgbmjDs20gdHXhu5VpCmzDoCBraMO0bmcgcXXDoSBjYW8uCgotICAgKipLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgT2RkIGNobyBiaeG6v24gUG9zdHNfUGVyX0RheSB24bubaSBiaeG6v24KICAgIERvbWluYW50X0Vtb3Rpb24qKgoKYGBge3J9CmVwaXRhYih1ICwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykKYGBgCgpL4bq/dCBxdeG6oyB04bu3IGzhu4cgT2RkcyBSYXRpbyBsw6AgMi4zNCwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBoaeG7g3UgbMOgIG5ow7NtIG5nxrDhu51pIHPhu58KaOG7r3UgbMaw4bujbmcgYsOgaSDEkcSDbmcgdHJvbmcgbmfDoHkgbmhp4buBdSBjw7Mga2jhuqMgbsSDbmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjCmfhuqVwIDIuMzQgbOG6p24gc28gduG7m2kgbmjDs20gbmfGsOG7nWkgc+G7nyBo4buvdSBsxrDhu6NuZyBiw6BpIMSRxINuZyB0cm9uZyBuZ8OgeSDDrXQgY8OzCmto4bqjIG7Eg25nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGPhu6dhIE9kZHMgUmF0aW8gbMOgIHThu6sKMS4wNDYwNjkgxJHhur9uIDUuMjM0NDU1IHbhu5tpIG3hu6ljIMSR4buZIHRpbiBj4bqteSA5NSUgdsOgIHAtdmFsdWUgbMOgIDAuMDQ1OCBjaG8KdGjhuqV5IHPhu7Ega2jDoWMgYmnhu4d0IGtow6EgY2FvIHbhu4EgY+G6o20geMO6YyBnaeG7r2EgMiBuaMOzbSBjw7MgbMaw4bujbmcgYsOgaSDEkcSDbmcgdHJvbmcKbeG7mXQgbmfDoHkgw610IHbDoCBuaGnhu4F1LgoKLSAgICoqS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIE9kZCBjaG8gYmnhur9uIERhaWx5X1VzYWdlX1RpbWUgduG7m2kgYmnhur9uCiAgICBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQplcGl0YWIobiwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykKYGBgCgpL4bq/dCBxdeG6oyB04bu3IGzhu4cgT2RkcyBSYXRpbyBsw6Aga2hv4bqjbmcgMiwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBoaeG7g3UgbMOgIG5ow7NtIG5nxrDhu51pCmTDoG5oIG5oaeG7gXUgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjw7Mga2jhuqMgbsSDbmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoCmPhu7FjIGfhuqVwIDIgbOG6p24gc28gduG7m2kgbmjDs20gbmfGsOG7nWkgZMOgbmggw610IHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY8OzCmto4bqjIG7Eg25nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGPhu6dhIE9kZHMgUmF0aW8gbMOgIHThu6sKMC45MDAxNyDEkeG6v24gNC40NDM2MDUgduG7m2kgbeG7qWMgxJHhu5kgdGluIGPhuq15IDk1JSB2w6AgcC12YWx1ZSBsw6AgMC4xMDgwMzIzIGNobwp0aOG6pXkgc+G7sSBjaMOqbmggbOG7h2NoIHbhu4EgY+G6o20geMO6YyBnaeG7r2EgMiBuaMOzbSB0deG7lWkgbMOgIGtow7RuZyBxdcOhIGNhby4KCi0gICAqKktob+G6o25nIMaw4bubYyBsxrDhu6NuZyBPZGQgY2hvIGJp4bq/biBMaWtlc19SZWNlaXZlZF9QZXJfRGF5IHbhu5tpIGJp4bq/bgogICAgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KZXBpdGFiKHAsIG1ldGhvZCA9ICdvZGRzcmF0aW8nLCByZXYgPSAnYycpCmBgYAoKS+G6v3QgcXXhuqMgdOG7tyBs4buHIE9kZHMgUmF0aW8gbMOgIGtob+G6o25nIDEuMjk3MywgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBoaeG7g3UgbMOgIG5ow7NtCm5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGPDsyBraOG6owpuxINuZyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ+G6pXAgMS4yOTczIGzhuqduIHNvIHbhu5tpIG5ow7NtIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyDDrXQKbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY8OzIGto4bqjIG7Eg25nIG1hbmcgY+G6o20geMO6Ywp0w61jaCBj4buxYy4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIGPhu6dhIE9kZHMgUmF0aW8gbMOgIHThu6sgMC41NzAzMDM4IMSR4bq/biAyLjk1MTAyNAp24bubaSBt4bupYyDEkeG7mSB0aW4gY+G6rXkgOTUlIHbDoCBwLXZhbHVlIGzDoCAwLjY3ODA3MjEgY2hvIHRo4bqleSBz4buxIGNow6puaCBs4buHY2ggduG7gQpj4bqjbSB4w7pjIGdp4buvYSAyIG5ow7NtIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBz4buRIHRow61jaCBt4buXaSBuZ8OgeSBsw6Aga2jDtG5nIHF1w6EgY2FvLgoKLSAgICoqS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIE9kZCBjaG8gYmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgduG7m2kgYmnhur9uCiAgICBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQplcGl0YWIocSwgbWV0aG9kID0gJ29kZHNyYXRpbycsIHJldiA9ICdjJykKYGBgCgpL4bq/dCBxdeG6oyB04bu3IGzhu4cgT2RkcyBSYXRpbyBsw6Aga2hv4bqjbmcgMS44NiwgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBoaeG7g3UgbMOgIG5ow7NtCm5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGPDswpraOG6oyBuxINuZyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ+G6pXAgMS44NiBs4bqnbiBzbyB24bubaSBuaMOzbSBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2MKw610IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGPDsyBraOG6oyBuxINuZyBtYW5nIGPhuqNtCnjDumMgdMOtY2ggY+G7sWMuIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZyBj4bunYSBPZGRzIFJhdGlvIGzDoCB04burIDAuODMwMzg5NyDEkeG6v24KNC4xNjYyMzcgduG7m2kgbeG7qWMgxJHhu5kgdGluIGPhuq15IDk1JSB2w6AgcC12YWx1ZSBsw6AgMC4xNTk3NDE3IGNobyB0aOG6pXkgc+G7sQpjaMOqbmggbOG7h2NoIHbhu4EgY+G6o20geMO6YyBnaeG7r2EgMiBuaMOzbSBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mgc+G7kSBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkKbMOgIGtow7RuZyBxdcOhIGNhby4KCiMjIyAqKktob+G6o25nIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cqKgoKIyMjIyAqKsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbeG7mXQgdOG7lW5nIHRo4buDKioKCi0gICAqKsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgY2hvIGJp4bq/biBBZ2UqKgoKxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBuZ8aw4budaSDhu58gxJHhu5kgdHXhu5VpIHRydW5nIG5pw6puICh0csOqbiAyOCB0deG7lWkpIHPhu60gZOG7pW5nIG3huqFuZwp4w6MgaOG7mWkgxJHhu5NuZyB0aOG7nWkga2nhu4NtIMSR4buLbmggeGVtIHThu7cgbOG7hyAoJSkgbmfGsOG7nWkg4bufIMSR4buZIHR14buVaSB0cnVuZyBuacOqbiBjw7MKcGjhuqNpIGzDoCA1MCUgaGF5IGtow7RuZywgdGEga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgJFx0ZXh0e0h9XzAkOnAgPSAwLjUKCmBgYHtyfQp0bXAgPC0gZFtkJEFnZSA+IDI4LF0KcHJvcC50ZXN0KGxlbmd0aCh0bXAkQWdlKSwgbGVuZ3RoKGQkQWdlKSwgcCA9IDAuNSkKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgcC12YWx1ZSBsw6AgMC4wMDU3OTksIG5o4buPIGjGoW4gZ2nDoSB0cuG7iwokXGFscGhhPTAuMDUkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90CiRcdGV4dHtIfV8wJCBy4bqxbmcgdOG7tyBs4buHIG5nxrDhu51pIGPDsyDEkeG7mSB0deG7lWkgdHLDqm4gMjggdHXhu5VpIGzDoCA1MCUuCgpL4bq/dCBxdeG6oyBjxaluZyBjaG8gdGjhuqV5IHThu7cgbOG7hyBuZ8aw4budaSBjw7MgxJHhu5kgdHXhu5VpIHRydW5nIG5pw6puIGtob+G6o25nIDM1LjkyJS4KS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyDhu58gxJHhu5kgdGluIGPDonkgOTUlIHRodeG7mWMga2hv4bqjbmcgdOG7qyAyNi44NyUgxJHhur9uCjQ2LjAzJS4KCi0gICAqKsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgY2hvIGJp4bq/biBQbGF0Zm9ybSoqCgrGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5nxrDhu51pIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgRmFjZWJvb2sgxJHhu5NuZyB0aOG7nWkga2nhu4NtIMSR4buLbmgKeGVtIHThu7cgbOG7hyAoJSkgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBGYWNlYm9vayBjw7MgcGjhuqNpIGzDoCA1MCUgaGF5Cmtow7RuZywgdGEga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgJEhfMDpwPTAuNSQKCmBgYHtyfQp0bXA1IDwtIGRbZCRQbGF0Zm9ybSAgPT0gJ0ZhY2Vib29rJyxdCnByb3AudGVzdChsZW5ndGgodG1wNSRQbGF0Zm9ybSksIGxlbmd0aChkJFBsYXRmb3JtKSwgcCA9IDAuNSkKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgcC12YWx1ZSBsw6AgMi45OTZlLTA3LCBuaOG7jyBoxqFuIGdpw6EgdHLhu4sKJFxhbHBoYT0wLjA1JC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dAokXHRleHR7SH1fMCQgcuG6sW5nIHThu7cgbOG7hyBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIEZhY2Vib29rIGzDoCA1MCUuCgpL4bq/dCBxdeG6oyBjxaluZyBjaG8gdGjhuqV5IHThu7cgbOG7hyBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIEZhY2Vib29rIGzDoCBraG/huqNuZwoyNC4yNyUuIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cg4bufIMSR4buZIHRpbiBjw6J5IDk1JSB0aHXhu5ljIGtob+G6o25nIHThu6sgMTYuNjAlCsSR4bq/biAzMy45MCUuCgotICAgKirGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGNobyBiaeG6v24gUG9zdHNfUGVyX0RheSoqCgrGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5nxrDhu51pIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIMOtdCBoxqFuIDIgYsOgaQp0cm9uZyBuZ8OgeSDEkeG7k25nIHRo4budaSBraeG7g20gxJHhu4tuaCB4ZW0gdOG7tyBs4buHICglKSBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpCsSRxINuZyDDrXQgaMahbiAyIGLDoGkgdHJvbmcgbmfDoHkgY8OzIHBo4bqjaSBsw6AgMTAlIGhheSBraMO0bmcsIHRhIGtp4buDbSDEkeG7i25oIGdp4bqjCnRodXnhur90ICRIXzA6cD0wLjEkCgpgYGB7cn0KdG1wNiA8LSBkW2QkUG9zdHNfUGVyX0RheSA8IDIsXQpwcm9wLnRlc3QobGVuZ3RoKHRtcDYkUG9zdHNfUGVyX0RheSksIGxlbmd0aChkJFBvc3RzX1Blcl9EYXkpLCBwID0gMC4xKQpgYGAKCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyBwLXZhbHVlIGzDoCAxLjAzM2UtMDcsIG5o4buPIGjGoW4gZ2nDoSB0cuG7iwokXGFscGhhPTAuMDUkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90CiRcdGV4dHtIfV8wJCBy4bqxbmcgdOG7tyBs4buHIG5nxrDhu51pIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgxJHEg25nIMOtdCBoxqFuIDIgYsOgaSDEkcSDbmcKdHJvbmcgMSBuZ8OgeSBsw6AgMTAlLgoKS+G6v3QgcXXhuqMgY8WpbmcgY2hvIHRo4bqleSB04bu3IGzhu4cgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDEkcSDbmcgw610IGjGoW4gMiBiw6BpCsSRxINuZyB0cm9uZyAxIG5nw6B5IGzDoCBraG/huqNuZyAyNi4yMSUuIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cg4bufIMSR4buZIHRpbiBjw6J5Cjk1JSB0aHXhu5ljIGtob+G6o25nIHThu6sgMTguMjclIMSR4bq/biAzNS45NyUuCgotICAgKirGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGNobyBiaeG6v24gRGFpbHlfVXNhZ2VfVGltZSoqCgrGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgZMOgbmggdGjhu51pIGdpYW4gdHLDqm4gODAgcGjDunQgxJHhu4Mgc+G7rSBk4bulbmcgbeG6oW5nCnjDoyBo4buZaSDEkeG7k25nIHRo4budaSBraeG7g20gxJHhu4tuaCB4ZW0gdOG7tyBs4buHICglKSBuaOG7r25nIG5nxrDhu51pIGTDoG5oIHRo4budaSBnaWFuIHRyw6puCjgwIHBow7p0IMSR4buDIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgY8OzIHBo4bqjaSBsw6AgNzAlIGhheSBraMO0bmcsIHRhIGtp4buDbSDEkeG7i25oCmdp4bqjIHRodXnhur90ICRcdGV4dHtIfV8wJDpwID0gMC43CgpgYGB7cn0KdG1wMiA8LSBkW2QkYERhaWx5X1VzYWdlX1RpbWUgKG1pbnV0ZXMpYCA+IDgwLF0KcHJvcC50ZXN0KGxlbmd0aCh0bXAyJGBEYWlseV9Vc2FnZV9UaW1lIChtaW51dGVzKWApLCBsZW5ndGgoZCRgRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcylgKSwgcCA9IDAuNykKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgcC12YWx1ZSBsw6AgMy43MDRlLTA4IFw8CiRcYWxwaGE9MC4wNSQsIGNobyB0aOG6pXkgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dAokXHRleHR7SH1fMCQgcuG6sW5nIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIGTDoG5oIHRo4budaSBnaWFuIHRyw6puIDgwIHBow7p0IMSR4buDIHPhu60KZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbMOgIDcwJS4KCkvhur90IHF14bqjIGPFqW5nIGNobyB0aOG6pXkgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgZMOgbmggdGjhu51pIGdpYW4gdHLDqm4gODAgcGjDunQgxJHhu4MKc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBraG/huqNuZyA0NC42NiUuIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cg4bufIMSR4buZIHRpbiBjw6J5Cjk1JSB0aHXhu5ljIGtob+G6o25nIHThu6sgMzQuOTclIMSR4bq/biA1NC43NiUuCgotICAgKirGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGNobyBiaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSoqCgrGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IHRyw6puIDUwIGzGsOG7o3QKa2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgxJHhu5NuZyB0aOG7nWkga2nhu4NtIMSR4buLbmggeGVtIHThu7cgbOG7hyAoJSkgbmjhu69uZyBuZ8aw4budaQpuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkgdHLDqm4gNTAgbMaw4bujdCBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjw7MKcGjhuqNpIGzDoCA1MCUgaGF5IGtow7RuZywgdGEga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgJFx0ZXh0e0h9XzAkOnAgPSAwLjUKCmBgYHtyfQp0bXAzIDwtIGRbZCRMaWtlc19SZWNlaXZlZF9QZXJfRGF5ID4gNTAsXQpwcm9wLnRlc3QobGVuZ3RoKHRtcDMkTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSksIGxlbmd0aChkJExpa2VzX1JlY2VpdmVkX1Blcl9EYXkpLCBwID0gMC41KQpgYGAKCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyBwLXZhbHVlIGzDoCAxLjI5OWUtMTIgXDwKJFxhbHBoYT0wLjA1JCwgY2hvIHRo4bqleSBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90CiRcdGV4dHtIfV8wJCBy4bqxbmcgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IHRyw6puCjUwIGzGsOG7o3Qga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbMOgIDUwJS4KCkvhur90IHF14bqjIGPFqW5nIGNobyB0aOG6pXkgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5CnRyw6puIDUwIGzGsOG7o3Qga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkga2hv4bqjbmcgMTQuNTYlLiBLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7twps4buHIOG7nyDEkeG7mSB0aW4gY8OieSA5NSUgdGh14buZYyBraG/huqNuZyB04burIDguNjUlIMSR4bq/biAyMy4yJS4KCi0gICAqKsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgY2hvIGJp4bq/biBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5KioKCsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkgdHLDqm4gMzAKbMaw4bujdCBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDEkeG7k25nIHRo4budaSBraeG7g20gxJHhu4tuaCB4ZW0gdOG7tyBs4buHICglKSBuaOG7r25nCm5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSB0csOqbiAzMCBsxrDhu6N0IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjCmjhu5lpIGPDsyBwaOG6o2kgbMOgIDUwJSBoYXkga2jDtG5nLCB0YSBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCAkXHRleHR7SH1fMCQ6cCA9CjAuNQoKYGBge3J9CnRtcDQgPC0gZFtkJENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgPiAzMCxdCnByb3AudGVzdChsZW5ndGgodG1wNCRDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5KSwgbGVuZ3RoKGQkQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSksIHAgPSAwLjUpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBnacOhIHRy4buLIHAtdmFsdWUgbMOgIDIuMmUtMTYgXDwgJFxhbHBoYT0wLjA1JCwKY2hvIHRo4bqleSBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRcdGV4dHtIfV8wJCBy4bqxbmcgdOG7tyBs4buHCm5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpIG5nw6B5IHRyw6puIDMwIGzGsOG7o3Qga2hpIHPhu60gZOG7pW5nCm3huqFuZyB4w6MgaOG7mWkgbMOgIDUwJS4KCkvhur90IHF14bqjIGPFqW5nIGNobyB0aOG6pXkgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpCm5nw6B5IHRyw6puIDMwIGzGsOG7o3Qga2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkga2hv4bqjbmcgMS45NCUuIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZwp04bu3IGzhu4cg4bufIMSR4buZIHRpbiBjw6J5IDk1JSB0aHXhu5ljIGtob+G6o25nIHThu6sgMC4zNCUgxJHhur9uIDcuNTIlLgoKIyMjIyAqKsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgaGFpIHThu5VuZyB0aOG7gyoqCgotICAgKirGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGNobyBiaeG6v24gQWdlIHbDoCBiaeG6v24gRG9taW5hbnRfRW1vdGlvbioqCgrGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5ow7NtIG5nxrDhu51pIOG7nyDEkeG7mSB0deG7lWkgdHJ1bmcgbmnDqm4gbWFuZyBj4bqjbSB4w7pjIHRpw6p1IGPhu7FjCsSR4buTbmcgdGjhu51pIGtp4buDbSDEkeG7i25oIHhlbSB04bu3IGzhu4cgKCUpIG5ow7NtIG5nxrDhu51pIOG7nyDEkeG7mSB0deG7lWkgdHJ1bmcgbmnDqm4gbWFuZwpj4bqjbSB4w7pjIHRpw6p1IGPhu7FjIGPDsyBwaOG6o2kgbMOgIDYwJSBoYXkga2jDtG5nLCBuZ2jEqWEgbMOgIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90CiRcdGV4dHtIfV8wJDpwID0gMC42CgpgYGB7cn0KZDIgPC1kCmQyJEFnZSA8LSBkYWdlMgpkMiREb21pbmFudF9FbW90aW9uIDwtIGRvbWkKYWdlMSA8LSB0YWJsZShkMltkMiRBZ2UgPT0gJ1RydW5nIG5pw6puJywgXSREb21pbmFudF9FbW90aW9uKQpwcm9wLnRlc3QoYWdlMVsiVGnDqnUgY+G7sWMiXSwgc3VtKGFnZTEpLCBwID0gMC42KQpgYGAKCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyBwLXZhbHVlIGzDoCAwLjQ0MDIsIGzhu5tuIGjGoW4gZ2nDoSB0cuG7iwokXGFscGhhPTAuMDUkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6owp0aHV54bq/dCAkXHRleHR7SH1fMCQgcuG6sW5nIHThu7cgbOG7hyBuaMOzbSBuZ8aw4budaSDhu58gxJHhu5kgdHXhu5VpIHRydW5nIG5pw6puIG1hbmcgY+G6o20KeMO6YyB0acOqdSBj4buxYyBsw6AgNjAlLgoKS+G6v3QgcXXhuqMgY8WpbmcgY2hvIHRo4bqleSB04bu3IGzhu4cgbmjDs20gbmfGsOG7nWkgY8OzIMSR4buZIHR14buVaSB0cnVuZyBuacOqbiBtYW5nIGPhuqNtCnjDumMgdGnDqnUgY+G7sWMga2hv4bqjbmcgNjcuNTYlLiBLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIOG7nyDEkeG7mSB0aW4gY8OieSA5NSUKdGh14buZYyBraG/huqNuZyB04burIDUwLjEwJSDEkeG6v24gODEuNDQlLgoKLSAgICoqxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBjaG8gYmnhur9uIFBvc3RzX1Blcl9EYXkgdsOgIGJp4bq/biBEb21pbmFudF9FbW90aW9uKioKCsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbmjDs20gbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIMOtdCBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMKxJHhu5NuZyB0aOG7nWkga2nhu4NtIMSR4buLbmggeGVtIHThu7cgbOG7hyAoJSkgbmjDs20gbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIMOtdCBtYW5nCmPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY8OzIHBo4bqjaSBsw6AgMzUlIGhheSBraMO0bmcsIG5naMSpYSBsw6Aga2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QKJEhfMDpwPTAuMzUkCgpgYGB7cn0KZDIkUG9zdHNfUGVyX0RheSA8LSBkcG9zMgpkMiREb21pbmFudF9FbW90aW9uIDwtIGRvbWkKcG9zMSA8LSB0YWJsZShkMltkMiRQb3N0c19QZXJfRGF5ID09ICfDjXQnLCBdJERvbWluYW50X0Vtb3Rpb24pCnByb3AudGVzdChwb3MxWyJUw61jaCBj4buxYyJdLCBzdW0ocG9zMSksIHAgPSAwLjM1KQpgYGAKCkvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyBwLXZhbHVlIGzDoCAwLjYyMTEsIGzhu5tuIGjGoW4gZ2nDoSB0cuG7iwokXGFscGhhPTAuMDUkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6owp0aHV54bq/dCAkSF8wJCBy4bqxbmcgdOG7tyBs4buHIG5ow7NtIG5nxrDhu51pIGPDsyBsxrDhu6NuZyDEkcSDbmcgYsOgaSDDrXQgbWFuZyBj4bqjbSB4w7pjCnTDrWNoIGPhu7FjIGzDoCAzNSUuCgpL4bq/dCBxdeG6oyBjxaluZyBjaG8gdGjhuqV5IHThu7cgbOG7hyBuaMOzbSBuZ8aw4budaSBjw7MgbMaw4bujbmcgxJHEg25nIGLDoGkgw610IG1hbmcgY+G6o20geMO6Ywp0w61jaCBj4buxYyBraG/huqNuZyAzMC43NyUuIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cg4bufIMSR4buZIHRpbiBjw6J5IDk1JSB0aHXhu5ljCmtob+G6o25nIHThu6sgMTkuMTIlIMSR4bq/biA0NS4yNiUuCgotICAgKirGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGNobyBiaeG6v24gRGFpbHlfVXNhZ2VfVGltZSB2w6AgYmnhur9uCiAgICBEb21pbmFudF9FbW90aW9uKioKCsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBkw6BuaCBuaGnhu4F1IHRo4budaSBnaWFuIMSR4buDIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkKbWFuZyBj4bqjbSB4w7pjIHRpw6p1IGPhu7FjIMSR4buTbmcgdGjhu51pIGtp4buDbSDEkeG7i25oIHhlbSB04bu3IGzhu4cgKCUpIG5o4buvbmcgbmfGsOG7nWkgZMOgbmgKbmhp4buBdSB0aOG7nWkgZ2lhbiDEkeG7gyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0acOqdSBj4buxYyBjw7MgcGjhuqNpIGzDoAozMCUgaGF5IGtow7RuZywgbmdoxKlhIGzDoCBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCAkXHRleHR7SH1fMCQ6cCA9IDAuMwoKYGBge3J9CmQyJGBEYWlseV9Vc2FnZV9UaW1lIChtaW51dGVzKWAgPC0gZHRpbWUyCmQyJERvbWluYW50X0Vtb3Rpb24gPC0gZG9taQp0aW1lMSA8LSB0YWJsZShkMltkMiRgRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcylgID09ICdOaGnhu4F1JywgXSREb21pbmFudF9FbW90aW9uKQpwcm9wLnRlc3QodGltZTFbIlRpw6p1IGPhu7FjIl0sIHN1bSh0aW1lMSksIHAgPSAwLjMpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBnacOhIHRy4buLIHAtdmFsdWUgbMOgIDAuMDA1MTIzIFw8IGdpw6EgdHLhu4sKJFxhbHBoYT0wLjA1JCwgY2hvIHRo4bqleSBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90CiRcdGV4dHtIfV8wJCBy4bqxbmcgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgZMOgbmggbmhp4buBdSB0aOG7nWkgZ2lhbiDEkeG7gyBz4butIGThu6VuZyBt4bqhbmcKeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0acOqdSBj4buxYyBsw6AgMzAlLgoKS+G6v3QgcXXhuqMgY8WpbmcgY2hvIHRo4bqleSB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBkw6BuaCBuaGnhu4F1IHRo4budaSBnaWFuIMSR4buDIHPhu60gZOG7pW5nCm3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIHRpw6p1IGPhu7FjIGtob+G6o25nIDUwJS4gS2hv4bqjbmcgxrDhu5tjIGzGsOG7o25nIHThu7cgbOG7hyDhu58KxJHhu5kgdGluIGPDonkgOTUlIHRodeG7mWMga2hv4bqjbmcgdOG7qyAzNS4xMiUgxJHhur9uIDY0Ljg4JS4KCi0gICAqKsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgY2hvIGJp4bq/biBMaWtlc19SZWNlaXZlZF9QZXJfRGF5IHbDoCBiaeG6v24KICAgIERvbWluYW50X0Vtb3Rpb24qKgoKxq/hu5tjIGzGsOG7o25nIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBz4butCmThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0acOqdSBj4buxYyDEkeG7k25nIHRo4budaSBraeG7g20gxJHhu4tuaCB4ZW0gdOG7tyBs4buHICglKQpuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgdGjDrWNoIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpCm1hbmcgY+G6o20geMO6YyB0acOqdSBj4buxYyBjw7MgcGjhuqNpIGzDoCA1MCUgaGF5IGtow7RuZywgbmdoxKlhIGzDoCBraeG7g20gxJHhu4tuaCBnaeG6owp0aHV54bq/dCAkXHRleHR7SH1fMCQ6cCA9IDAuNQoKYGBge3J9CmQyJExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgPC0gZGxpa2UyCmxpa2UxIDwtIHRhYmxlKGQyW2QyJExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgPT0gJ05oaeG7gXUnLCBdJERvbWluYW50X0Vtb3Rpb24pCnByb3AudGVzdChsaWtlMVsiVGnDqnUgY+G7sWMiXSwgc3VtKGxpa2UxKSwgcCA9IDAuNSkKYGBgCgpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBjaG8gdGjhuqV5IGdpw6EgdHLhu4sgcC12YWx1ZSBsw6AgMC4zMjExIFw+IGdpw6EgdHLhu4sKJFxhbHBoYT0wLjA1JCwgY2hvIHRo4bqleSBjaMawYSBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90CiRcdGV4dHtIfV8wJCBy4bqxbmcgdOG7tyBs4buHIG5o4buvbmcgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIG5oaeG7gXUgbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkKa2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbWFuZyBj4bqjbSB4w7pjIHRpw6p1IGPhu7FjIGzDoCA1MCUuCgpL4bq/dCBxdeG6oyBjxaluZyBjaG8gdGjhuqV5IHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgdGjDrWNoIG3hu5dpCm5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0acOqdSBj4buxYyBraG/huqNuZyA1NyUuIEtob+G6o25nCsaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cg4bufIMSR4buZIHRpbiBjw6J5IDk1JSB0aHXhu5ljIGtob+G6o25nIHThu6sgNDQuMDglIMSR4bq/biA2OC45NCUuCgotICAgKirGr+G7m2MgbMaw4bujbmcgdOG7tyBs4buHIGNobyBiaeG6v24gQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSB2w6AgYmnhur9uCiAgICBEb21pbmFudF9FbW90aW9uKioKCsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSBraGkKc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgdGnDqnUgY+G7sWMgxJHhu5NuZyB0aOG7nWkga2nhu4NtIMSR4buLbmggeGVtIHThu7cgbOG7hwooJSkgbmjhu69uZyBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSBraGkgc+G7rSBk4bulbmcgbeG6oW5nCnjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgdGnDqnUgY+G7sWMgY8OzIHBo4bqjaSBsw6AgNDAlIGhheSBraMO0bmcsIG5naMSpYSBsw6Aga2nhu4NtCsSR4buLbmggZ2nhuqMgdGh1eeG6v3QgJFx0ZXh0e0h9XzAkOnAgPSAwLjQKCmBgYHtyfQpkMiRDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5IDwtIGRjb20yCmNvbTEgPC0gdGFibGUoZDJbZDIkQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSA9PSAnTmhp4buBdScsIF0kRG9taW5hbnRfRW1vdGlvbikKcHJvcC50ZXN0KGNvbTFbIlRpw6p1IGPhu7FjIl0sIHN1bShsaWtlMSksIHAgPSAwLjQpCmBgYAoKS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBnacOhIHRy4buLIHAtdmFsdWUgbMOgIDAuMzc1NSBcPiBnacOhIHRy4buLCiRcYWxwaGE9MC4wNSQsIGNobyB0aOG6pXkgY2jGsGEgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dAokXHRleHR7SH1fMCQgcuG6sW5nIHThu7cgbOG7hyBuaOG7r25nIG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBuaGnhu4F1IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpCm5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIG1hbmcgY+G6o20geMO6YyB0acOqdSBj4buxYyBsw6AgNDAlLgoKS+G6v3QgcXXhuqMgY8WpbmcgY2hvIHRo4bqleSB04bu3IGzhu4cgbmjhu69uZyBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBsxrDhu6N0IGLDrG5oIGx14bqtbgpt4buXaSBuZ8OgeSBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBtYW5nIGPhuqNtIHjDumMgdGnDqnUgY+G7sWMga2hv4bqjbmcgNDYuMTUlLgpLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIOG7nyDEkeG7mSB0aW4gY8OieSA5NSUgdGh14buZYyBraG/huqNuZyB04burIDMzLjg4JSDEkeG6v24KNTguODglLgoKIyMgKipNw7QgaMOsbmggaOG7k2kgcXV5KioKCiMjIyAqKk3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIGNobyBk4buvIGxp4buHdSBuaOG7iyBwaMOibioqCgojIyMjICoqQmnhur9uIEFnZSB2w6AgRG9taW5hbnRfRW1vdGlvbioqCgpCaeG6v24gcGjhu6UgdGh14buZYyBsw6AgY+G6o20geMO6YyBjaOG7pyDEkeG6oW8gKERvbW5pbmFudF9FbW90aW9uKSDEkcaw4bujYyBtw6MgaG/DoSBs4bqhaQp0aMOgbmggYmnhur9uIG5o4buLIHBow6JuIHbhu5tpIGdpw6EgdHLhu4sgMSBiaeG7g3UgdGjhu4sgY2hvIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdsOgIGdpw6EKdHLhu4sgMCBiaeG7g3UgdGjhu4sgY2hvIGPhuqNtIHjDumMgdGnDqnUgY+G7sWMuIEJp4bq/biDEkeG7mWMgbOG6rXAgbMOgIHR14buVaSBj4bunYSBuZ8aw4budaSBz4butCmThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHRyb25nIGLhu5kgZOG7ryBsaeG7h3UKCmBgYHtyfQpMMiA8LSBkICU+JSBzZWxlY3QoRG9taW5hbnRfRW1vdGlvbiwgQWdlKQpMMiREb21pbmFudF9FbW90aW9uIDwtIGRvbWkKTDIgPC0gTDIgJT4lIG11dGF0ZShEb21pbmFudF9FbW90aW9uQyA9IGlmX2Vsc2UoRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnLDEsMCkpCmBgYAoKYGBge3J9CmVtb2FnZW1vZDEgPC0gZ2xtKERvbWluYW50X0Vtb3Rpb25DIH4gQWdlLCBkYXRhID0gTDIpCnN1bW1hcnkoZW1vYWdlbW9kMSkKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIHjDonkgZOG7sW5nIMSRxrDhu6NjIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIHNhdToKCiQkXGhhdHtccGl9PTEuNDc5OTctMC4wMzkxOCBcdGV4dHsgeCBBZ2V9JCQKCi0gICAkXGJldGFfMD0xLjQ3OTk3JCBjaG8gYmnhur90IHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaAogICAgY+G7sWMgbMOgIDEuNDc5OTcga2hpIGJp4bq/biB0deG7lWkgbMOgIGtow7RuZyB2w6AgcC12YWx1ZSA9IDcuNTJlLTA1IGzDoCBy4bqldAogICAgbmjhu48gbsOqbiBo4buHIHPhu5EgY2jhurduIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouCgotICAgJFxiZXRhXzE9LTAuMDM5MTgkIGNobyBiaeG6v3Qga2hpIHR14buVaSB0xINuZyBsw6puIDEgxJHGoW4gduG7iywgeMOhYyBzdeG6pXQgxJHhu4MKICAgIG3hu5l0IG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBnaeG6o20gMC4wMzkxOCDEkcahbiB24buLIHbDoCBwLXZhbHVlID0KICAgIDAuMDAzMjMgY2jhu4kgcmEgcuG6sW5nIOG6o25oIGjGsOG7n25nIGPhu6dhIHR14buVaSDEkeG6v24gY+G6o20geMO6YyBjaOG7pyDEkeG6oW8gY+G7p2EgbmfGsOG7nWkKICAgIGTDuW5nIGzDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLgoKTcO0IGjDrG5oIG7DoHkgY2jhu4kgcmEgcuG6sW5nIHR14buVaSB0w6FjIGPDsyBt4buRaSBsacOqbiBo4buHIG5naOG7i2NoIGJp4bq/biB24bubaQpEb21pbmFudF9FbW90aW9uQy4gS2hpIHR14buVaSB0xINuZywgZ2nDoSB0cuG7iyBk4buxIMSRb8OhbiBj4bunYSBEb21pbmFudF9FbW90aW9uQwpnaeG6o20uIMSQaeG7gXUgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIG3huqFuaCBt4bq9IHbhu5tpIG3hu6ljIMO9IG5naMSpYSAxJS4KCiMjIyMgKipCaeG6v24gUG9zdHNfUGVyX0RheSB2w6AgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KTDUgPC0gZCAlPiUgc2VsZWN0KERvbWluYW50X0Vtb3Rpb24sUG9zdHNfUGVyX0RheSkKTDUkRG9taW5hbnRfRW1vdGlvbiA8LSBkb21pCkw1IDwtIEw1ICU+JSBtdXRhdGUoRG9taW5hbnRfRW1vdGlvbkMgPSBpZl9lbHNlKERvbWluYW50X0Vtb3Rpb24gPT0gJ1TDrWNoIGPhu7FjJywxLDApKQpgYGAKCmBgYHtyfQplbW9wb3Ntb2QxIDwtIGdsbShEb21pbmFudF9FbW90aW9uQyB+IFBvc3RzX1Blcl9EYXksIGRhdGEgPSBMNSkKc3VtbWFyeShlbW9wb3Ntb2QxKQpgYGAKClThu6sga+G6v3QgcXXhuqMgdHLDqm4gdGEgeMOieSBk4buxbmcgxJHGsOG7o2MgbcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggc2F1OgokJFxoYXR7XHBpfT0wLjE1Nzg2KzAuMDg3MjYgXHRleHR7IHggUG9zdHNfUGVyX0RheX0kJAoKw50gbmdoxKlhIGjhu4cgc+G7kToKCiRcYmV0YV8wPTAuMTU3ODYkIGNobyBiaeG6v3QgeMOhYyBzdeG6pXQgxJHhu4MgbeG7mXQgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjCmzDoCAwLjE1Nzg2IGtoaSBraMO0bmcgY8OzIGJp4bq/biDhuqNuaCBoxrDhu59uZyBi4bufaSB54bq/dSB04buRIGzGsOG7o25nIGLDoGkgxJHEg25nIHRyb25nIDEKbmfDoHkgdsOgIHAtdmFsdWUgPSAwLjA4MzM3IGzDoCB0xrDGoW5nIMSR4buRaSBjYW8gbsOqbiBo4buHIHPhu5EgY2jhurduIGtow7RuZyBjw7Mgw70KbmdoxKlhIHRo4buRbmcga8OqLgoKJFxiZXRhXzE9MC4wODcyNiQgY2hvIGJp4bq/dCBraGkgc+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyB0xINuZyBsw6puIDEgYsOgaSwgeMOhYwpzdeG6pXQgxJHhu4MgbeG7mXQgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHTEg25nIDAuMDg3MjYgxJHGoW4gduG7iyB2w6AgcC12YWx1ZSA9CjAuMDAxNjYgY2jhu4kgcmEgcuG6sW5nIOG6o25oIGjGsOG7n25nIGPhu6dhIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgdHJvbmcgMSBuZ8OgeSDEkeG6v24gY+G6o20KeMO6YyBjaOG7pyDEkeG6oW8gY+G7p2EgbmfGsOG7nWkgZMO5bmcgbMOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouCgpNw7QgaMOsbmggbsOgeSBjaOG7iSByYSBy4bqxbmcgc+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyBt4buZdCBuZ8OgeSBjw7MgbeG7kWkgbGnDqm4gaOG7hyDEkeG7k25nCmJp4bq/biB24bubaSBEb21pbmFudF9FbW90aW9uQy4gS2hpIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgdHJvbmcgbmfDoHkgdMSDbmcsIGdpw6EKdHLhu4sgZOG7sSDEkW/DoW4gY+G7p2EgRG9taW5hbnRfRW1vdGlvbkMgdMSDbmcgdOG7qWMgbMOgIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbQp4w7pjIHTDrWNoIGPhu7FjIHTEg25nLiDEkGnhu4F1IG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBt4bqhbmggbeG6vSB24bubaSBt4bupYyDDvSBuZ2jEqWEKMSUuCgojIyMjICoqQmnhur9uIERhaWx5X1VzYWdlX1RpbWUgdsOgIGJp4bq/biBEb21pbmFudF9FbW90aW9uKioKCkJp4bq/biBwaOG7pSB0aHXhu5ljIGzDoCBj4bqjbSB4w7pjIGNo4bunIMSR4bqhbyAoRG9taW5hbnRfRW1vdGlvbikgxJHGsOG7o2MgbcOjIGjDs2EgbOG6oWkKdGjDoG5oIGJp4bq/biBuaOG7iyBwaMOibiB24bubaSBnacOhIHRy4buLIDEgYmnhu4N1IHRo4buLIGNobyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHbDoCAwCmJp4buDdSB0aOG7iyBjaG8gY+G6o20geMO6YyB0acOqdSBj4buxYy4gQmnhur9uIMSR4buZYyBs4bqtcCBsw6AgdGjhu51pIGdpYW4gbcOgIG5nxrDhu51pIGTDuW5nCmTDoG5oIHJhIMSR4buDIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgaMOgbmcgbmfDoHkgKERhaWx5X1VzYWdlX1RpbWUgKG1pbnV0ZXMpKQrEkcaw4bujYyB0w61uaCBi4bqxbmcgcGjDunQuCgpgYGB7cn0KTDEgPC0gZCAlPiUgc2VsZWN0KERvbWluYW50X0Vtb3Rpb24sIGBEYWlseV9Vc2FnZV9UaW1lIChtaW51dGVzKWApCkwxIDwtIHJlbmFtZShMMSwgRGFpbHlVc2FnZVRpbWUgPSBgRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcylgKQpMMSREb21pbmFudF9FbW90aW9uIDwtIGRvbWkKTDEgPC0gTDEgJT4lIG11dGF0ZShEb21pbmFudF9FbW90aW9uQyA9IGlmX2Vsc2UoRG9taW5hbnRfRW1vdGlvbiA9PSdUw61jaCBj4buxYycsMSwwKSkKYGBgCgpgYGB7cn0KZW1vdGltZW1vZDEgPC0gZ2xtKERvbWluYW50X0Vtb3Rpb25DIH4gRGFpbHlVc2FnZVRpbWUsIGRhdGEgPSBMMSkKc3VtbWFyeShlbW90aW1lbW9kMSkKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIHjDonkgZOG7sW5nIMSRxrDhu6NjIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIHNhdToKCiQkXGhhdHtccGl9PS0wLjAyNDYyNyswLjAwNDkxMyBcdGV4dHsgeCBEYWlseV9Vc2FnZV9UaW1lfSAkJAoKLSAgIEjhu4cgc+G7kSBjaOG6t24gJFxiZXRhXzA9LTAuMDI0NjI3JCB2w6AgcC12YWx1ZSA9IDAuODQ4MTg1LCBs4bubbiBoxqFuIHLhuqV0CiAgICBuaGnhu4F1IHNvIHbhu5tpIGPDoWMgbeG7qWMgw70gbmdoxKlhIDElLCA1JSwgdsOgIDEwJS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkga2jDtG5nCiAgICB0aOG7gyBr4bq/dCBsdeG6rW4gxJHGsOG7o2Mg4bqjbmggaMaw4bufbmcgY+G7p2EgaOG7hyBz4buRIGNo4bq3biB0cm9uZyBtw7QgaMOsbmguCgotICAgSOG7hyBz4buRIGPhu6dhIGJp4bq/biB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpICgkXGJldGFfMT0gMC4wMDQ5MTMkKQogICAgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gduG7m2kgcC12YWx1ZSA9IDAuMDAwNDc5LCBjaG8gdGjhuqV5IHLhurFuZyBt4buXaQogICAgcGjDunQgdMSDbmcgdGjDqm0gdHJvbmcgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBk4bqrbiDEkeG6v24gc+G7sSBnaWEKICAgIHTEg25nIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCAwLjAwNDkxMyAoa2hv4bqjbmcgMC40OSUpLiDEkGnhu4F1CiAgICBuw6B5IHjDoWMgbmjhuq1uIHLhurFuZyBjw7MgbeG7mXQgbeG7kWkgcXVhbiBo4buHIHR1eeG6v24gdMOtbmggZMawxqFuZyBnaeG7r2EgdGjhu51pIGdpYW4KICAgIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgdsOgIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY+G7p2EgbmfGsOG7nWkgZMO5bmcuCgpNw7QgaMOsbmggY2hvIHRo4bqleSBy4bqxbmcgbeG6t2MgZMO5IGjhu4cgc+G7kSBjaOG6t24ga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOgIGPDswpnacOhIHRy4buLIMOibSwgbmjGsG5nIGvhur90IHF14bqjIGNobyB0aOG6pXkgbeG7kWkgcXVhbiBo4buHIGdp4buvYSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZwpt4bqhbmcgeMOjIGjhu5lpIHbDoCBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBjw7Mgw70gbmdoxKlhIHbDoCByw7UgcsOgbmcuCgojIyMjICoqQmnhur9uIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgdsOgIGJp4bq/biBEb21pbmFudF9FbW90aW9uKioKCkJp4bq/biBwaOG7pSB0aHXhu5ljIGzDoCBj4bqjbSB4w7pjIGNo4bunIMSR4bqhbyAoRG9taW5hbnRfRW1vdGlvbikgxJHGsOG7o2MgbcOjIGjDs2EgbOG6oWkKdGjDoG5oIGJp4bq/biBuaOG7iyBwaMOibiB24bubaSBnacOhIHRy4buLIDEgYmnhu4N1IHRo4buLIGNobyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHbDoCAwCmJp4buDdSB0aOG7iyBjaG8gY+G6o20geMO6YyB0acOqdSBj4buxYy4gQmnhur9uIMSR4buZYyBs4bqtcCBsw6Agc+G7kSBsxrDhu6N0IHRow61jaCBtw6AgbmfGsOG7nWkKZMO5bmcgbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IGtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpCihMaWtlc19SZWNlaXZlZF9QZXJfRGF5KS4KCmBgYHtyfQpMMyA8LSBkICU+JSBzZWxlY3QoRG9taW5hbnRfRW1vdGlvbiwgTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSkKTDMkRG9taW5hbnRfRW1vdGlvbiA8LSBkb21pCkwzIDwtIEwzICU+JSBtdXRhdGUoRG9taW5hbnRfRW1vdGlvbkMgPSBpZl9lbHNlKERvbWluYW50X0Vtb3Rpb24gPT0nVMOtY2ggY+G7sWMnLDEsMCkpCmBgYAoKYGBge3J9CmVtb2xpa2Vtb2QxIDwtIGdsbShEb21pbmFudF9FbW90aW9uQyB+IExpa2VzX1JlY2VpdmVkX1Blcl9EYXksIGRhdGEgPSBMMykKc3VtbWFyeShlbW9saWtlbW9kMSkKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIHjDonkgZOG7sW5nIMSRxrDhu6NjIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIHNhdToKCiQkXGhhdHtccGl9PTAuMTg1MjYyKzAuMDA2NjUxIFx0ZXh0eyB4IExpa2VzIFJlY2VpdmVkIFBlciBEYXl9ICQkCgotICAgSOG7hyBz4buRIGNo4bq3biAkXGJldGFfMD0wLjE4NTI2MjckIG5naMSpYSBsw6Aga2hpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjCiAgICBt4buXaSBuZ8OgeSBi4bqxbmcgMCwgeMOhYyBzdeG6pXQgxJHhu4MgbeG7mXQgbmfGsOG7nWkgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgCiAgICAwLjE4NTI2Mi4gVuG7m2kgcC12YWx1ZSA9IDAuMDI2NDcgKG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUpLCBo4buHIHPhu5EKICAgIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcgbmdheSBj4bqjIGtoaSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjCiAgICBsxrDhu6N0IHRow61jaCBuw6BvLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB24bqrbiB04buTbiB04bqhaSB2w6AgxJHDoW5nCiAgICBr4buDLgoKLSAgIEjhu4cgc+G7kSBj4bunYSBiaeG6v24gdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSAoJFxiZXRhXzE9IDAuMDA0OTEzJCkKICAgIG5naMSpYSBsw6Aga2hpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IHTEg25nIHRow6ptIG3hu5l0IMSRxqFuIHbhu4ssCiAgICB4w6FjIHN14bqldCDEkeG7gyBt4buZdCBuZ8aw4budaSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBz4bq9IHTEg25nIHRow6ptIDAuMDA2NjUxLiBI4buHCiAgICBz4buRIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gduG7m2kgcC12YWx1ZSA9IDAuMDAxNDMgKG5o4buPIGjGoW4gbeG7qWMgw70KICAgIG5naMSpYSAxJSksIGNobyB0aOG6pXkgcuG6sW5nIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcKICAgIGvhu4MgxJHhur9uIHjDoWMgc3XhuqV0IMSR4buDIG5nxrDhu51pIGTDuW5nIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLgoKIyMjIyAqKkJp4bq/biBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5IHbDoCBiaeG6v24gRG9taW5hbnRfRW1vdGlvbioqCgpCaeG6v24gcGjhu6UgdGh14buZYyBsw6AgY+G6o20geMO6YyBjaOG7pyDEkeG6oW8gKERvbWluYW50X0Vtb3Rpb24pIMSRxrDhu6NjIG3DoyBow7NhIGzhuqFpCnRow6BuaCBiaeG6v24gbmjhu4sgcGjDom4gduG7m2kgZ2nDoSB0cuG7iyAxIGJp4buDdSB0aOG7iyBjaG8gY+G6o20geMO6YyB0w61jaCBj4buxYyB2w6AgMApiaeG7g3UgdGjhu4sgY2hvIGPhuqNtIHjDumMgdGnDqnUgY+G7sWMuIEJp4bq/biDEkeG7mWMgbOG6rXAgbMOgIHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gbcOgCm5nxrDhu51pIGTDuW5nIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeSBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaQooQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSkuCgpgYGB7cn0KTDQgPC0gZCAlPiUgc2VsZWN0KERvbWluYW50X0Vtb3Rpb24sIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkpCkw0JERvbWluYW50X0Vtb3Rpb24gPC0gZG9taQpMNCA8LSBMNCAlPiUgbXV0YXRlKERvbWluYW50X0Vtb3Rpb25DID0gaWZfZWxzZShEb21pbmFudF9FbW90aW9uID09J1TDrWNoIGPhu7FjJywxLDApKQpgYGAKCmBgYHtyfQplbW9jb21tb2QxIDwtIGdsbShEb21pbmFudF9FbW90aW9uQyB+IENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXksIGRhdGEgPSBMNCkKc3VtbWFyeShlbW9jb21tb2QxKQpgYGAKClThu6sga+G6v3QgcXXhuqMgdHLDqm4gdGEgeMOieSBk4buxbmcgxJHGsOG7o2MgbcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggc2F1OgoKJCRcaGF0e1xwaX09MC4yMjU0NTErMC4wMTMyNDMgXHRleHR7IHggQ29tbWVudHMgUmVjZWl2ZWQgUGVyIERheX0gJCQKCi0gICBI4buHIHPhu5EgY2jhurduICRcYmV0YV8wPTAuMjI1NDUxJCBuZ2jEqWEgbMOgIGtoaSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbgogICAgxJHGsOG7o2MgbeG7l2kgbmfDoHkgYuG6sW5nIDAsIHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoAogICAgMC4yMjU0NTEuIFbhu5tpIHAtdmFsdWUgPSAwLjAxODggKG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUpLCBo4buHIHPhu5EgbsOgeQogICAgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcgbmdheSBj4bqjIGtoaSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjIGLDrG5oCiAgICBsdeG6rW4gbsOgbywgeMOhYyBzdeG6pXQgxJHhu4MgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgduG6q24gdOG7k24gdOG6oWkgdsOgIMSRw6FuZyBr4buDLgoKLSAgIEjhu4cgc+G7kSBj4bunYSBiaeG6v24gdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSAoJFxiZXRhXzE9IDAuMDEzMjQzJCkKICAgIG5naMSpYSBsw6Aga2hpIHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IHTEg25nIHRow6ptIG3hu5l0IMSRxqFuCiAgICB24buLLCB4w6FjIHN14bqldCDEkeG7gyBt4buZdCBuZ8aw4budaSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBz4bq9IHTEg25nIHRow6ptIDAuMDEzMjQzLgogICAgSOG7hyBz4buRIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB24bubaSBwLXZhbHVlID0gMC4wMjc0IChuaOG7jyBoxqFuIG3hu6ljIMO9CiAgICBuZ2jEqWEgMC4wNSksIGNobyB0aOG6pXkgcuG6sW5nIHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIGPDsyDhuqNuaCBoxrDhu59uZwogICAgxJHDoW5nIGvhu4MgxJHhur9uIHjDoWMgc3XhuqV0IMSR4buDIG5nxrDhu51pIGTDuW5nIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLgoKIyMjICoqTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdCoqCgojIyMjICoqQmnhur9uIEFnZSB2w6AgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KZW1vYWdlbW9kMiA8LSBnbG0oRG9taW5hbnRfRW1vdGlvbkMgfiBBZ2UsIGRhdGEgPSBMMiwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICdsb2dpdCcpKSAKc3VtbWFyeShlbW9hZ2Vtb2QyKQpgYGAKClThu6sga+G6v3QgcXXhuqMgdHLDqm4gdGEgeMOieSBk4buxbmcgxJHGsOG7o2MgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdCBzYXU6CgokJGxuKFxmcmFje1xoYXRccGl9IHsxLVxoYXRccGl9KT00LjM4MC0wLjE3NSBcdGV4dHsgeCBBZ2V9JCQKCi0gICAkXGJldGFfMD00LjM4MCQ6Y2hvIGJp4bq/dCBnacOhIHRy4buLIGxvZ2l0IGzDoCA0LjM4MCBraGkgYmnhur9uIHR14buVaSBi4bqxbmcKICAgIDAsIMSRaeG7gXUgbsOgeSBjaG8gYmnhur90IHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AKICAgIHLhuqV0IGNhbyBraGkgYmnhur9uIEFnZSA9IDAuCgotICAgJFxiZXRhXzE9LTAuMTc1JDpjaG8gYmnhur90IG3hu5dpIHR14buVaSB0xINuZyB0aMOqbSBz4bq9IGzDoG0gZ2nhuqNtIGxvZ2l0IGPhu6dhCiAgICBEb21pbmFudF9FbW90aW9uQyAwLjE3NSDEkcahbiB24buLLCDEkWnhu4F1IG7DoHkgdMawxqFuZyDEkcawxqFuZyB24bubaSB2aeG7h2MgZ2nhuqNtCiAgICB4w6FjIHN14bqldCBt4buZdCBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMga2hpIHPhu5EgdHXhu5VpIHTEg25nIGzDqm4uCgpNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2l0IG7DoHkgY2hvIHRo4bqleSBy4bqxbmcgdHXhu5VpIHTDoWMgY8OzIG3hu5FpIGxpw6puIGjhu4cgbmdo4buLY2gKYmnhur9uIHbhu5tpIHjDoWMgc3XhuqV0IGPhu6dhIERvbWluYW50X0Vtb3Rpb25DLiBLaGkgdHXhu5VpIHTEg25nLCB4w6FjIHN14bqldCBt4buZdApuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtLiDEkGnhu4F1IG7DoHkgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHLDtSByw6BuZyBxdWEgaOG7hwpz4buRIMOibSBj4bunYSBiaeG6v24gQWdlLiBNw7QgaMOsbmggY8OzIHRo4buDIGNobyBiaeG6v3QgeMOhYyBzdeG6pXQgxJHhu4MgbeG7mXQgbmfGsOG7nWkgY8OzIHPhu5EKdHXhu5VpIGJhbyBuaGnDqnUgdGjDrCBjw7MgdGjhu4MgbWFuZyBj4bqjbSB4w7pjIHRpw6p1IGPhu7FjLgoKIyMjIyAqKkJp4bq/biBQb3N0c19QZXJfRGF5IHbDoCBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQplbW9wb3Ntb2QyIDwtIGdsbShEb21pbmFudF9FbW90aW9uQyB+IFBvc3RzX1Blcl9EYXksIGRhdGEgPSBMNSwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICdsb2dpdCcpKSAKZW1vcG9zbW9kMgpgYGAKClThu6sga+G6v3QgcXXhuqMgdHLDqm4gdGEgeMOieSBk4buxbmcgxJHGsOG7o2MgbcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdCBzYXU6CgokJGxuKFxmcmFje1xoYXRccGl9IHsxLVxoYXRccGl9KT0tMS40Nzg2KzAuMzc4NiBcdGV4dHsgeCBQb3N0c19QZXJfRGF5fSQkCgrDnSBuZ2jEqWEgaOG7hyBz4buROgoKJFxiZXRhXzA9LTEuNDc4NiQ6Y2hvIGJp4bq/dCBnacOhIHRy4buLIGxvZ2l0IGzDoCAtMS40Nzg2IGtoaSBiaeG6v24gbMaw4bujbmcgYsOgaQrEkcSDbmcgdHJvbmcgMSBuZ8OgeSBi4bqxbmcgMCwgxJFp4buBdSBuw6B5IGtow7RuZyBjw7Mgw70gbmdoxKlhIHbDrCB4w6FjIHN14bqldCDEkeG7gyBt4buZdApuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY2jhu4kgbOG7m24gaMahbiBob+G6t2MgYuG6sW5nIDAuCgokXGJldGFfMT0wLjM3ODYkOmNobyBiaeG6v3QgbeG7l2kgbeG7mXQgYsOgaSDEkcSDbmcgdHJvbmcgMSBuZ8OgeSB0xINuZyB0aMOqbSBz4bq9IGzDoG0KdMSDbmcgbG9naXQgY+G7p2EgRG9taW5hbnRfRW1vdGlvbkMgMC4zNzg2IMSRxqFuIHbhu4ssIMSRaeG7gXUgbsOgeSB0xrDGoW5nIMSRxrDGoW5nIHbhu5tpCnZp4buHYyB4w6FjIHN14bqldCBt4buZdCBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdMSDbmcgbMOqbiBraGkgbmfGsOG7nWkgxJHDsyBjw7MKaMOgbmggxJHhu5luZyB0xINuZyB0aMOqbSBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nIHRyb25nIG3hu5l0IG5nw6B5LgoKTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpdCBuw6B5IGNobyB0aOG6pXkgcuG6sW5nIHPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgbeG7mXQgbmfDoHkgY8OzCm3hu5FpIGxpw6puIGjhu4cgxJHhu5NuZyBiaeG6v24gduG7m2kgeMOhYyBzdeG6pXQgY+G7p2EgRG9taW5hbnRfRW1vdGlvbkMuIEtoaSBz4buRIGzGsOG7o25nCmLDoGkgxJHEg25nIHRyb25nIG3hu5l0IG5nw6B5IGPhu6dhIG5nxrDhu51pIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgdMSDbmcsIHjDoWMgc3XhuqV0Cm5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHTEg25nLiDEkGnhu4F1IG7DoHkgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHLDtSByw6BuZyBxdWEKaOG7hyBz4buRIGTGsMahbmcgY+G7p2EgYmnhur9uIFBvc3RzX1Blcl9EYXkuIE3DtCBow6xuaCBjw7MgdGjhu4MgY2hvIGJp4bq/dCB4w6FjIHN14bqldCDEkeG7gwpt4buZdCBuZ8aw4budaSBjw7Mgc+G7kSBsxrDhu6NuZyBiw6BpIMSRxINuZyB0cm9uZyBt4buZdCBuZ8OgeSBiYW8gbmhpw6p1IHRow6wgY8OzIHRo4buDIG1hbmcKY+G6o20geMO6YyB0w61jaCBj4buxYy4KCiMjIyMgKipCaeG6v24gRGFpbHlfVXNhZ2VfVGltZSB2w6AgYmnhur9uIERvbWluYW50X0Vtb3Rpb24qKgoKYGBge3J9CkwxJERvbWluYW50X0Vtb3Rpb24gPC0gZmFjdG9yKEwxJERvbWluYW50X0Vtb3Rpb24sIGxldmVscyA9IGMoJ1TDrWNoIGPhu7FjJywnVGnDqnUgY+G7sWMnKSkKZW1vdGltZW1vZDIgPC0gZ2xtKERvbWluYW50X0Vtb3Rpb24gfiBEYWlseVVzYWdlVGltZSwgZGF0YSA9IEwxLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ2xvZ2l0JykpCnN1bW1hcnkoZW1vdGltZW1vZDIpCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyB0csOqbiB0YSB4w6J5IGThu7FuZyDEkcaw4bujYyBtw7QgaMOsbmggbG9naXQgc2F1OgoKJCRsbihcZnJhY3tcaGF0XHBpfSB7MS1caGF0XHBpfSk9Mi4zMjcwLTAuMDIyMCBcdGV4dHsgeCAgRGFpbHlVc2FnZVRpbWV9JCQKCi0gICAkXGJldGFfMD0yLjMyNzAkIGPDsyBuZ2jEqWEgbMOgIGtoaSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGLhurFuZwogICAgMCAodOG7qWMgbMOgIGtow7RuZyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpKSwgbcO0IGjDrG5oIGThu7EgxJFvw6FuIHLhurFuZyB4w6FjIHN14bqldAogICAgxJHhu4MgbeG7mXQgbmfGsOG7nWkgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIHLhuqV0IGNhby4KCi0gICAkXGJldGFfMT0tMC4wMjIwJCBjw7MgbmdoxKlhIGzDoCBt4buXaSBraGkgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaQogICAgdMSDbmcgbMOqbiAxIMSRxqFuIHbhu4ssIHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHPhur0gZ2nhuqNtCiAgICDEkWkgMC4wMjIwIMSRxqFuIHbhu4suCgpNw7QgaMOsbmggY2hvIHRo4bqleSBy4bqxbmcga2hpIG5nxrDhu51pIGTDuW5nIGTDoG5oIG5oaeG7gXUgdGjhu51pIGdpYW4gaMahbiB0csOqbiBt4bqhbmcKeMOjIGjhu5lpLCB4w6FjIHN14bqldCDEkeG7gyBo4buNIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHPhur0gZ2nhuqNtIMSRaS4gTmfGsOG7o2MgbOG6oWksIGtoaQpraMO0bmcgZMOgbmggbmhp4buBdSB0aOG7nWkgZ2lhbiB0csOqbiBt4bqhbmcgeMOjIGjhu5lpLCB4w6FjIHN14bqldCBuw6B5IMSRxrDhu6NjIGThu7EgxJFvw6FuCmzDoCBy4bqldCBjYW8uIEPhuqMgaGFpIGjhu4cgc+G7kSDEkeG7gXUgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcgdGjhu51pCmdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24gY+G6o20geMO6YyBjaOG7pyDEkeG6oW8gY+G7p2EgbmfGsOG7nWkKZMO5bmcuCgojIyMjICoqQmnhur9uIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgdsOgIERvbWluYW50X0Vtb3Rpb24qKgoKYGBge3J9CkwzJERvbWluYW50X0Vtb3Rpb24gPC0gZmFjdG9yKEwzJERvbWluYW50X0Vtb3Rpb24sIGxldmVscyA9IGMoJ1TDrWNoIGPhu7FjJywnVGnDqnUgY+G7sWMnKSkKZW1vbGlrZW1vZDIgPC0gZ2xtKERvbWluYW50X0Vtb3Rpb24gfiBMaWtlc19SZWNlaXZlZF9QZXJfRGF5LCBkYXRhID0gTDMsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAnbG9naXQnKSkKc3VtbWFyeShlbW9saWtlbW9kMikKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIHjDonkgZOG7sW5nIMSRxrDhu6NjIG3DtCBow6xuaCBsb2dpdCBzYXU6CgokJGxuKFxmcmFje1xoYXRccGl9IHsxLVxoYXRccGl9KT0xLjM2MjI0Ny0wLjAyOTIxNSBcdGV4dHsgeCAgTGlrZXNfUmVjZWl2ZWRfUGVyX0RheX0kJAoKLSAgICRcYmV0YV8wPTEuMzYyMjQ3JCBjaG8gYmnhur90IHLhurFuZyBraGkgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgbeG7l2kKICAgIG5nw6B5IGLhurFuZyAwLCBsb2dpdCBj4bunYSB4w6FjIHN14bqldCDEkeG7gyBt4buZdCBuZ8aw4budaSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AKICAgIDEuMzYyMjQ3LiBW4bubaSBwLXZhbHVlID0gMC4wMDA1MSAobmjhu48gaMahbiBt4bupYyDDvSBuZ2jEqWEgMC4wNSksIGjhu4cgc+G7kQogICAgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLiDEkGnhu4F1IG7DoHkgY2jhu4kgcmEgcuG6sW5nIGtoaSBraMO0bmcgbmjhuq1uIMSRxrDhu6NjCiAgICBsxrDhu6N0IHRow61jaCBuw6BvLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB24bqrbiBraMOhIGNhby4KCi0gICAkXGJldGFfMT0tMC4wMjkyMTUkIGPDsyBuZ2jEqWEgbMOgIGtoaSBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeQogICAgdMSDbmcgdGjDqm0gbeG7mXQgxJHGoW4gduG7iywgbG9naXQgY+G7p2EgeMOhYyBzdeG6pXQgxJHhu4MgbeG7mXQgbmfGsOG7nWkgY8OzIGPhuqNtIHjDumMKICAgIHTDrWNoIGPhu7FjIHPhur0gZ2nhuqNtIMSRaSAwLjAyOTIxNSDEkcahbiB24buLLiBW4bubaSBwLXZhbHVlID0gMC4wMDMxNiAobmjhu48gaMahbgogICAgbeG7qWMgw70gbmdoxKlhIDAuMDUpLCBo4buHIHPhu5EgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLCBjaG8gdGjhuqV5IHLhurFuZyBz4buRCiAgICBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCDEkeG7gyBuZ8aw4budaSBkw7luZwogICAgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIEPhu6UgdGjhu4MsIGtoaSBz4buRIGzGsOG7o3QgdGjDrWNoIHTEg25nIGzDqm4sIHjDoWMgc3XhuqV0IMSR4buDCiAgICBuZ8aw4budaSBkw7luZyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBnaeG6o20gxJFpLCDEkWnhu4F1IG7DoHkgY8OzIHRo4buDIMSRxrDhu6NjIGhp4buDdSBsw6AKICAgIG3hu5dpIGzGsOG7o3QgdGjDrWNoIHRow6ptIHPhur0gbMOgbSBnaeG6o20gbmjhurkga2jhuqMgbsSDbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBj4bunYQogICAgbmfGsOG7nWkgZMO5bmcuCgpNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2l0IG7DoHkgY2jhu4kgcmEgcuG6sW5nIHPhu5EgbMaw4bujdCB0aMOtY2ggbcOgIG5nxrDhu51pIGTDuW5nIG5o4bqtbgrEkcaw4bujYyBt4buXaSBuZ8OgeSBjw7MgdMOhYyDEkeG7mW5nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCDEkeG7gyBo4buNIGPDsyBj4bqjbSB4w7pjIHTDrWNoCmPhu7FjLiBD4bulIHRo4buDLCBraGkgc+G7kSBsxrDhu6N0IHRow61jaCB0xINuZyBsw6puLCB4w6FjIHN14bqldCDEkeG7gyBuZ8aw4budaSBkw7luZyBjw7MgY+G6o20KeMO6YyB0w61jaCBj4buxYyBnaeG6o20gxJFpLiBI4buHIHPhu5EgY2jhurduIGNobyB0aOG6pXkgcuG6sW5nIG5nYXkgY+G6oyBraGkga2jDtG5nIGPDsyBsxrDhu6N0CnRow61jaCBuw6BvLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB24bqrbiBjYW8uIEPDoWMgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZwrEkeG7gXUgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcga+G6v3QgcXXhuqMgbsOgeSBjw7MgxJHhu5kgdGluIGPhuq15IGNhby4KCiMjIyMgKipCaeG6v24gQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSB2w6AgRG9taW5hbnRfRW1vdGlvbioqCgpgYGB7cn0KTDQkRG9taW5hbnRfRW1vdGlvbiA8LSBmYWN0b3IoTDQkRG9taW5hbnRfRW1vdGlvbiwgbGV2ZWxzID0gYygnVMOtY2ggY+G7sWMnLCdUacOqdSBj4buxYycpKQplbW9jb21tb2QyIDwtIGdsbShEb21pbmFudF9FbW90aW9uIH4gQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSwgZGF0YSA9IEw0LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ2xvZ2l0JykpCnN1bW1hcnkoZW1vY29tbW9kMikKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIHjDonkgZOG7sW5nIMSRxrDhu6NjIG3DtCBow6xuaCBsb2dpdCBzYXU6CgokJGxuKFxmcmFje1xoYXRccGl9IHsxLVxoYXRccGl9KT0xLjE1MzcwLTAuMDU1NzYgXHRleHR7IHggIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXl9JCQKCi0gICAkXGJldGFfMD0xLjE1MzcwJCBjaG8gYmnhur90IHLhurFuZyBraGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbeG7l2kKICAgIG5nw6B5IGLhurFuZyAwLCBsb2dpdCBj4bunYSB4w6FjIHN14bqldCDEkeG7gyBt4buZdCBuZ8aw4budaSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AKICAgIDEuMTUzNzAuIFbhu5tpIHAtdmFsdWUgPSAwLjAwNTk1IChuaOG7jyBoxqFuIG3hu6ljIMO9IG5naMSpYSAwLjA1KSwgaOG7hyBz4buRIG7DoHkKICAgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouIMSQaeG7gXUgbsOgeSBjaOG7iSByYSBy4bqxbmcga2hpIGtow7RuZyBuaOG6rW4gxJHGsOG7o2MgYsOsbmgKICAgIGx14bqtbiBuw6BvLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB24bqrbiBraMOhIGNhby4KCi0gICAkXGJldGFfMT0tMC4wNTU3NiQgY2hvIGJp4bq/dCBy4bqxbmcga2hpIHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIG3hu5dpCiAgICBuZ8OgeSB0xINuZyB0aMOqbSBt4buZdCDEkcahbiB24buLLCBsb2dpdCBj4bunYSB4w6FjIHN14bqldCDEkeG7gyBt4buZdCBuZ8aw4budaSBjw7MgY+G6o20KICAgIHjDumMgdMOtY2ggY+G7sWMgc+G6vSBnaeG6o20gxJFpIDAuMDU1NzYgxJHGoW4gduG7iy4gVuG7m2kgcC12YWx1ZSA9IDAuMDMxMjAgKG5o4buPCiAgICBoxqFuIG3hu6ljIMO9IG5naMSpYSAwLjA1KSwgaOG7hyBz4buRIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcKICAgIHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgxJHhu4MKICAgIG5nxrDhu51pIGTDuW5nIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBD4bulIHRo4buDLCBraGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiB0xINuZwogICAgbMOqbiwgeMOhYyBzdeG6pXQgxJHhu4MgbmfGsOG7nWkgZMO5bmcgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtIMSRaSwgxJFp4buBdSBuw6B5IGPDswogICAgdGjhu4MgxJHGsOG7o2MgaGnhu4N1IGzDoCBt4buXaSBiw6xuaCBsdeG6rW4gdGjDqm0gc+G6vSBsw6BtIGdp4bqjbSBuaOG6uSBraOG6oyBuxINuZyBj4bqjbSB4w7pjCiAgICB0w61jaCBj4buxYyBj4bunYSBuZ8aw4budaSBkw7luZy4KCk3DtCBow6xuaCBo4buTaSBxdXkgbG9naXQgbsOgeSBjaOG7iSByYSBy4bqxbmcgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBtw6AgbmfGsOG7nWkgZMO5bmcKbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IGPDsyB0w6FjIMSR4buZbmcgxJHDoW5nIGvhu4MgxJHhur9uIHjDoWMgc3XhuqV0IMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMKdMOtY2ggY+G7sWMuIEPhu6UgdGjhu4MsIGtoaSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIHTEg25nIGzDqm4sIHjDoWMgc3XhuqV0IMSR4buDIG5nxrDhu51pIGTDuW5nCmPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGdp4bqjbSDEkWkuIEjhu4cgc+G7kSBjaOG6t24gY2hvIHRo4bqleSBy4bqxbmcgbmdheSBj4bqjIGtoaSBraMO0bmcKY8OzIGLDrG5oIGx14bqtbiBuw6BvLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB24bqrbiBjYW8uIEPDoWMgaOG7hyBz4buRIMaw4bubYwpsxrDhu6NuZyDEkeG7gXUgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcga+G6v3QgcXXhuqMgbsOgeSBjw7MgxJHhu5kgdGluIGPhuq15CmNhby4KCiMjIyAqKk3DtCBow6xuaCBo4buTaSBxdXkgcHJvYml0KioKCiMjIyMgKipCaeG6v24gQWdlIHbDoCBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQplbW9hZ2Vtb2QzIDwtIGdsbShEb21pbmFudF9FbW90aW9uQyB+IEFnZSwgZGF0YSA9IEwyLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ3Byb2JpdCcpKQpzdW1tYXJ5KGVtb2FnZW1vZDMpCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyB0csOqbiB0YSB4w6J5IGThu7FuZyDEkcaw4bujYyBtw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBzYXU6CgokJFxoYXR7XHBpfT1cUGhpKDIuNjc2My0wLjEwNjggXHRleHR7IMOXIEFnZX0pJCQKCi0gICAkXGJldGFfMD0yLjY3NjQkOmNobyBiaeG6v3QgZ2nDoSB0cuG7iyBwcm9iaXQgbMOgIDIuNjc2NCBraGkgYmnhur9uIHR14buVaQogICAgYuG6sW5nIDAsIMSRaeG7gXUgbsOgeSBjaG8gYmnhur90IHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaAogICAgY+G7sWMgbMOgIHLhuqV0IGNhbyBraGkgYmnhur9uIEFnZSA9IDAuCgotICAgJFxiZXRhXzE9LTAuMTA2OCQ6Y2hvIGJp4bq/dCBt4buXaSB0deG7lWkgdMSDbmcgdGjDqm0gc+G6vSBsw6BtIGdp4bqjbSBwcm9iaXQgY+G7p2EKICAgIERvbWluYW50X0Vtb3Rpb25DIDAuMTA2OCDEkcahbiB24buLLCDEkWnhu4F1IG7DoHkgdMawxqFuZyDEkcawxqFuZyB24bubaSB2aeG7h2MgZ2nhuqNtCiAgICB4w6FjIHN14bqldCBt4buZdCBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMga2hpIHPhu5EgdHXhu5VpIHTEg25nIGzDqm4uCgpNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBuw6B5IGNobyB0aOG6pXkgcuG6sW5nIHR14buVaSB0w6FjIGPDsyBt4buRaSBsacOqbiBo4buHIG5naOG7i2NoCmJp4bq/biB24bubaSB4w6FjIHN14bqldCBj4bunYSBEb21pbmFudF9FbW90aW9uQy4gS2hpIHR14buVaSB0xINuZywgeMOhYyBzdeG6pXQgxJHhu4MKbmfGsOG7nWkgxJHDsyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtLiDEkGnhu4F1IG7DoHkgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHLDtSByw6BuZyBxdWEKaOG7hyBz4buRIMOibSBj4bunYSBiaeG6v24gQWdlLiBNw7QgaMOsbmggY8OzIHRo4buDIGNobyBiaeG6v3QgeMOhYyBzdeG6pXQgxJHhu4MgbeG7mXQgbmfGsOG7nWkKbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGtoaSB0deG7lWkgYuG6sW5nIGJhbyBuaGnDqnUuCgojIyMjICoqQmnhur9uIFBvc3RzX1Blcl9EYXkgdsOgIERvbWluYW50X0Vtb3Rpb24qKgoKYGBge3J9CmVtb3Bvc21vZDMgPC0gZ2xtKERvbWluYW50X0Vtb3Rpb25DIH4gUG9zdHNfUGVyX0RheSwgZGF0YSA9IEw1LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ3Byb2JpdCcpKQplbW9wb3Ntb2QzCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyB0csOqbiB0YSB4w6J5IGThu7FuZyDEkcaw4bujYyBtw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBzYXU6CgokJFxoYXR7XHBpfT1cUGhpKC0wLjg5OTUrIDAuMjI5NCAgXHRleHR7IMOXIFBvc3RzX1Blcl9EYXl9KSQkIMOdIG5naMSpYSBo4buHCnPhu5E6CgokXGJldGFfMD0tMC44OTk1JDpjaG8gYmnhur90IGdpw6EgdHLhu4sgcHJvYml0IGzDoCAtMC44OTk1IGtoaSBiaeG6v24gc+G7kSBsxrDhu6NuZwpiw6BpIMSRxINuZyB0cm9uZyBuZ8OgeSBi4bqxbmcgMCzEkWnhu4F1IG7DoHkga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdsOsIHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0Cm5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBjaOG7iSBs4bubbiBoxqFuIGhv4bq3YyBi4bqxbmcgMC4KCiRcYmV0YV8xPTAuMjI5NCQ6Y2hvIGJp4bq/dCBt4buXaSB0deG7lWkgYsOgaSDEkcSDbmcgdHJvbmcgbmfDoHkgdMSDbmcgdGjDqm0gc+G6vSBsw6BtCnTEg25nIHByb2JpdCBj4bunYSBEb21pbmFudF9FbW90aW9uQyAwLjIyOTQgxJHGoW4gduG7iywgxJFp4buBdSBuw6B5IHTGsMahbmcgxJHGsMahbmcKduG7m2kgdmnhu4djIHTEg25nIHjDoWMgc3XhuqV0IG3hu5l0IG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBraGkgc+G7kSBsxrDhu6NuZyBiw6BpCsSRxINuZyB0cm9uZyBuZ8OgeSB0xINuZyBsw6puLgoKTcO0IGjDrG5oIGjhu5NpIHF1eSBwcm9iaXQgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBz4buRIGzGsOG7o25nIGLDoGkgxJHEg25nIHRyb25nIG5nw6B5IGPDswpt4buRaSBsacOqbiBo4buHIMSR4buTbmcgYmnhur9uIHbhu5tpIHjDoWMgc3XhuqV0IGPhu6dhIERvbWluYW50X0Vtb3Rpb25DLiBLaGkgbMaw4bujbmcgYsOgaQrEkcSDbmcgdHJvbmcgbmfDoHkgdMSDbmcsIHjDoWMgc3XhuqV0IMSR4buDIG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHTEg25nLgrEkGnhu4F1IG7DoHkgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHLDtSByw6BuZyBxdWEgaOG7hyBz4buRIGTGsMahbmcgY+G7p2EgYmnhur9uIFBvc3RzX1Blcl9EYXkuCk3DtCBow6xuaCBjw7MgdGjhu4MgY2hvIGJp4bq/dCB4w6FjIHN14bqldCDEkeG7gyBt4buZdCBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMga2hpCnPhu5EgbMaw4bujbmcgYsOgaSDEkcSDbmcgdHJvbmcgbmfDoHkgYuG6sW5nIGJhbyBuaGnDqnUuCgojIyMjICoqQmnhur9uIERhaWx5X1VzYWdlX1RpbWUgdsOgIGJp4bq/biBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQplbW90aW1lbW9kMyA8LSBnbG0oRG9taW5hbnRfRW1vdGlvbiB+IERhaWx5VXNhZ2VUaW1lLCBkYXRhID0gTDEsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAncHJvYml0JykpCnN1bW1hcnkoZW1vdGltZW1vZDMpCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyB0csOqbiB0YSB4w6J5IGThu7FuZyDEkcaw4bujYyBtw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBzYXU6CgokJFxoYXR7XHBpfT1cUGhpKDEuMzkxODktMC4wMTMxMCBcdGV4dHsgw5cgRGFpbHlVc2FnZVRpbWV9KSQkCgotICAgJFxiZXRhXzA9MS4zOTE4OSQgY8OzIG5naMSpYSBsw6Aga2hpIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgYuG6sW5nCiAgICAwICh04bupYyBsw6Aga2jDtG5nIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkpLCBtw7QgaMOsbmggZOG7sSDEkW/DoW4gcuG6sW5nIHjDoWMgc3XhuqV0CiAgICDEkeG7gyBt4buZdCBuZ8aw4budaSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AgcuG6pXQgY2FvIHbhu5tpICRcUGhpKDEuMzkxODkpJAoKLSAgICRcYmV0YV8xPS0wLjAxMzEwJCBjw7MgbmdoxKlhIGzDoCBt4buXaSBraGkgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaQogICAgdMSDbmcgbMOqbiAxIMSRxqFuIHbhu4ssIHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IG5nxrDhu51pIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHPhur0gZ2nhuqNtCiAgICDEkWkgJFxQaGkoMC4wMTMxMCkkIMSRxqFuIHbhu4suCgpNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBuw6B5IGNobyB0aOG6pXkgcuG6sW5nIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkKY8OzIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBj4bunYSBuZ8aw4budaSBkw7luZwp2w6AgY+G6oyBoYWkgaOG7hyBz4buRIMSR4buBdSBjw7MgZ2nDoSB0cuG7iyBwLXZhbHVlIHLhuqV0IHRo4bqlcCAoZMaw4bubaSBt4bupYyDDvSBuZ2jEqWEgMSUpLApjaG8gdGjhuqV5IGNow7puZyBjw7Mg4bqjbmggaMaw4bufbmcgxJHDoW5nIGvhu4MgxJHhur9uIG3DtCBow6xuaC4KCiMjIyMgKipCaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSB2w6AgYmnhur9uIERvbWluYW50X0Vtb3Rpb24qKgoKYGBge3J9CmVtb2xpa2Vtb2QzIDwtIGdsbShEb21pbmFudF9FbW90aW9uIH4gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSwgZGF0YSA9IEwzLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ3Byb2JpdCcpKQpzdW1tYXJ5KGVtb2xpa2Vtb2QzKQpgYGAKClThu6sga+G6v3QgcXXhuqMgdHLDqm4gdGEgeMOieSBk4buxbmcgxJHGsOG7o2MgbcO0IGjDrG5oIGjhu5NpIHF1eSBwcm9iaXQgc2F1OgoKJCRcaGF0e1xwaX09XFBoaSgwLjgyODM5OS0wLjAxNzY5MCBcdGV4dHsgw5cgTGlrZXNfUmVjZWl2ZWRfUGVyX0RheX0pJCQKCi0gICAkXGJldGFfMD0wLjgyODM5OSQgY2hvIGJp4bq/dCBy4bqxbmcga2hpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIG3hu5dpCiAgICBuZ8OgeSBi4bqxbmcgMCwgZ2nDoSB0cuG7iyBj4bunYSBow6BtIHByb2JpdCBsw6AgMC44MjgzOTkuIFbhu5tpIHAtdmFsdWUgPQogICAgMC4wMDAzOTUgKG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUpLCBo4buHIHPhu5EgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqCiAgICBjYW8uIMSQaeG7gXUgbsOgeSBjaOG7iSByYSBy4bqxbmcga2hpIGtow7RuZyBuaOG6rW4gxJHGsOG7o2MgbMaw4bujdCB0aMOtY2ggbsOgbywgeMOhYwogICAgc3XhuqV0IMSR4buDIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHbhuqtuIHTGsMahbmcgxJHhu5FpIGNhbyB24bubaSAkXFBoaSgwLjgyODM5OSkkCgotICAgJFxiZXRhXzE9LTAuMDE3NjkwJCBjaG8gYmnhur90IHLhurFuZyBraGkgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgbeG7l2kKICAgIG5nw6B5IHTEg25nIHRow6ptIG3hu5l0IMSRxqFuIHbhu4ssIGdpw6EgdHLhu4sgY+G7p2EgaMOgbSBwcm9iaXQgc+G6vSBnaeG6o20gxJFpCiAgICAwLjAxNzY5MCDEkcahbiB24buLLiBW4bubaSBwLXZhbHVlID0gMC4wMDI1MjIgKG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUpLAogICAgaOG7hyBz4buRIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MKICAgIGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgxJHhu4MgbmfGsOG7nWkgZMO5bmcgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuCgpNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBuw6B5IGNo4buJIHJhIHLhurFuZyBz4buRIGzGsOG7o3QgdGjDrWNoIG3DoCBuZ8aw4budaSBkw7luZyBuaOG6rW4KxJHGsOG7o2MgbeG7l2kgbmfDoHkgY8OzIHTDoWMgxJHhu5luZyDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaApj4buxYy4gQ+G7pSB0aOG7gywga2hpIHPhu5EgbMaw4bujdCB0aMOtY2ggdMSDbmcgbMOqbiwgeMOhYyBzdeG6pXQgxJHhu4MgbmfGsOG7nWkgZMO5bmcgY8OzIGPhuqNtCnjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtIMSRaS4gSOG7hyBz4buRIGNo4bq3biBjaG8gdGjhuqV5IHLhurFuZyBuZ2F5IGPhuqMga2hpIGtow7RuZyBjw7MgbMaw4bujdAp0aMOtY2ggbsOgbywgeMOhYyBzdeG6pXQgxJHhu4MgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgduG6q24gY2FvLiBDw6FjIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcKxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIGNobyB0aOG6pXkgcuG6sW5nIGvhur90IHF14bqjIG7DoHkgY8OzIMSR4buZIHRpbiBj4bqteSBjYW8uCgojIyMjICoqQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgdsOgIGJp4bq/biBEb21pbmFudF9FbW90aW9uKioKCmBgYHtyfQplbW9jb21tb2QzIDwtIGdsbShEb21pbmFudF9FbW90aW9uIH4gQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSwgZGF0YSA9IEw0LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ3Byb2JpdCcpKQpzdW1tYXJ5KGVtb2NvbW1vZDMpCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyB0csOqbiB0YSB4w6J5IGThu7FuZyDEkcaw4bujYyBtw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBzYXU6CgokJFxoYXR7XHBpfT1cUGhpKDAuNzA5NjYtMC4wMzQxNyBcdGV4dHsgw5cgQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheX0pJCQKCi0gICAkXGJldGFfMD0wLjcwOTY2JCBjaG8gYmnhur90IHLhurFuZyBraGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbeG7l2kKICAgIG5nw6B5IGLhurFuZyAwLCBnacOhIHRy4buLIGPhu6dhIGjDoG0gcHJvYml0IGzDoCAwLjcwOTY2LiBW4bubaSBwLXZhbHVlID0KICAgIDAuMDA1MzQgKG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUpLCBo4buHIHPhu5EgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqCiAgICBjYW8uIMSQaeG7gXUgbsOgeSBjaOG7iSByYSBy4bqxbmcga2hpIGtow7RuZyBuaOG6rW4gxJHGsOG7o2MgYsOsbmggbHXhuq1uIG7DoG8sIHjDoWMKICAgIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB24bqrbiB0xrDGoW5nIMSR4buRaSBjYW8gduG7m2kgJFxQaGkoMC43MDk2NikkCgotICAgJFxiZXRhXzE9LTAuMDM0MTckIGNobyBiaeG6v3QgcuG6sW5nIGtoaSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyBt4buXaQogICAgbmfDoHkgdMSDbmcgdGjDqm0gbeG7mXQgxJHGoW4gduG7iywgZ2nDoSB0cuG7iyBj4bunYSBow6BtIHByb2JpdCBz4bq9IGdp4bqjbSDEkWkgMC4wMzQxNwogICAgxJHGoW4gduG7iy4gVuG7m2kgcC12YWx1ZSA9IDAuMDMwNzggKG5o4buPIGjGoW4gbeG7qWMgw70gbmdoxKlhIDAuMDUpLCBo4buHIHPhu5EgbsOgeQogICAgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiwgY2hvIHRo4bqleSBy4bqxbmcgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgY8OzCiAgICDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgxJHhu4MgbmfGsOG7nWkgZMO5bmcgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuCgpNw7QgaMOsbmggaOG7k2kgcXV5IHByb2JpdCBuw6B5IGNo4buJIHJhIHLhurFuZyBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG3DoCBuZ8aw4budaSBkw7luZwpuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgY8OzIHTDoWMgxJHhu5luZyDEkcOhbmcga+G7gyDEkeG6v24geMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6Ywp0w61jaCBj4buxYy4gQ+G7pSB0aOG7gywga2hpIHPhu5EgbMaw4bujdCBiw6xuaCBsdeG6rW4gdMSDbmcgbMOqbiwgeMOhYyBzdeG6pXQgxJHhu4MgbmfGsOG7nWkgZMO5bmcKY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtIMSRaS4gSOG7hyBz4buRIGNo4bq3biBjaG8gdGjhuqV5IHLhurFuZyBuZ2F5IGPhuqMga2hpIGtow7RuZwpjw7MgYsOsbmggbHXhuq1uIG7DoG8sIHjDoWMgc3XhuqV0IMSR4buDIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHbhuqtuIGNhby4gQ8OhYyBo4buHIHPhu5EgxrDhu5tjCmzGsOG7o25nIMSR4buBdSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLCBjaG8gdGjhuqV5IHLhurFuZyBr4bq/dCBxdeG6oyBuw6B5IGPDsyDEkeG7mSB0aW4gY+G6rXkKY2FvLgoKIyMgKipI4buTaSBxdXkgxJFhIGJp4bq/bioqCgojIyMgKipI4buTaSBxdXkgxJFhIGJp4bq/biB24bubaSBtw7QgaMOsbmggTFBNKioKCmBgYHtyfQpleHAgPC0gZApleHAkRG9taW5hbnRfRW1vdGlvbiA8LSBkb21pCmV4cCRQbGF0Zm9ybSA9IGFzLmZhY3RvcihleHAkUGxhdGZvcm0pCmV4cCA8LSByZW5hbWUoZXhwLCBEYWlseVVzYWdlVGltZSA9IGBEYWlseV9Vc2FnZV9UaW1lIChtaW51dGVzKWApCmV4cCA8LSBleHAgJT4lIG11dGF0ZShEb21pbmFudF9FbW90aW9uQyA9IGlmX2Vsc2UoRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnLDEsMCkpCm11bCA8LSBnbG0oRG9taW5hbnRfRW1vdGlvbkMgfiBBZ2UgKyBEYWlseVVzYWdlVGltZSArICBMaWtlc19SZWNlaXZlZF9QZXJfRGF5ICArIFBvc3RzX1Blcl9EYXkgKyBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5ICAsIGRhdGEgPSBleHApCnN1bW1hcnkobXVsKQpgYGAKClbDrCBiaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSB2w6AgYmnhur9uIFBvc3RzX1Blcl9EYXkga2jDtG5nIGPDsyDDvSBuZ2jEqWEKdHJvbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4buZaSDEkcaw4bujYyB4w6J5IGThu7FuZywgdGEgY8OzIHRo4buDIGxv4bqhaSBi4buPIHThu6tuZyBiaeG6v24gbsOgeQrEkeG7gyB4ZW0geMOpdCB2w6AgeMOieSBk4buxbmcgbOG6oWkgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4buZaS4KCmBgYHtyfQptdWwxIDwtIGdsbShEb21pbmFudF9FbW90aW9uQyB+IEFnZSArIERhaWx5VXNhZ2VUaW1lICsgIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgICsgQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSAgLCBkYXRhID0gZXhwKQpzdW1tYXJ5KG11bDEpCmBgYAoKS2hpIGLhu48gYmnhur9uIGPDsyDDvSBwX3ZhbHVlIGzhu5tuIG5ow6J0IGzDoCBQb3N0c19QZXJfRGF5IHRow6wgY8OhYyBiaeG6v24gY8OybiBs4bqhaQp0cm9uZyBtw7QgaMOsbmggxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIHbhuq15IHRhIGPDsyBwaMawxqFuZyB0csOsbmg6CgokJFxoYXR7XHBpfT0xLjIxNTI3Ny0wLjA0NDYzNSBcdGV4dHsgQWdlfSArIDAuMDA2NzQ3XHRleHR7IERhaWx5X1VzYWdlX1RpbWV9KzAuMDEzMjA0XHRleHR7IExpa2VzX1JlY2VpdmVkX1Blcl9EYXl9LSAwLjAxMzIwNFx0ZXh0e0NvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXl9KSQkCgpL4bq/dCBxdeG6oyBj4bunYSBtw7QgaMOsbmggaOG7k2kgcXV5IMSRYSBiaeG6v24gdHLDqm4gY2jhu4kgcmEgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/bgpj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGPhu6dhIG5nxrDhu51pIGTDuW5nIG3huqFuZyB4w6MgaOG7mWk6CgotICAgVHXhu5VpIChBZ2UpIGPDsyBt4buRaSBxdWFuIGjhu4cgbmdo4buLY2ggduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQ+G7qQogICAgbeG7l2kgbsSDbSB0deG7lWkgdMSDbmcgdGjDqm0sIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGdp4bqjbSBraG/huqNuZwogICAgNC40NiUuIMSQaeG7gXUgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbyAocC12YWx1ZSBcPCAwLjAwMSkuCgotICAgVGjhu51pIGdpYW4gc+G7rSBk4bulbmcgaMOgbmcgbmfDoHkgKERhaWx5X1VzYWdlX1RpbWUpIGPDsyBt4buRaSBxdWFuIGjhu4cgdGh14bqtbgogICAgduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQ+G7qSBt4buXaSBwaMO6dCBz4butIGThu6VuZyBow6BuZyBuZ8OgeSB0xINuZwogICAgdGjDqm0sIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHTEg25nIGtob+G6o25nIDAuNjclLiDEkGnhu4F1IG7DoHkgY8OzIMO9CiAgICBuZ2jEqWEgdGjhu5FuZyBrw6ogKHAtdmFsdWUgXDwgMC4wNSkuCgotICAgU+G7kSBsxrDhu6NuZyB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IChMaWtlc19SZWNlaXZlZF9QZXJfRGF5KSBjxaluZyBjw7MKICAgIG3hu5FpIHF1YW4gaOG7hyB0aHXhuq1uIHbhu5tpIHjDoWMgc3XhuqV0IGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIEPhu6kgbeG7l2kgbMaw4bujdCB0aMOtY2gKICAgIG5o4bqtbiDEkcaw4bujYyB0xINuZyB0aMOqbSwgeMOhYyBzdeG6pXQgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdMSDbmcga2hv4bqjbmcgMS4zMiUuCiAgICDEkGnhu4F1IG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiAocC12YWx1ZSBcPCAwLjA1KS4KCi0gICBT4buRIGzGsOG7o25nIGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgKENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkpIGPDswogICAgbeG7kWkgcXVhbiBo4buHIG5naOG7i2NoIHbhu5tpIHjDoWMgc3XhuqV0IGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIEPhu6kgbeG7l2kgYsOsbmggbHXhuq1uCiAgICBuaOG6rW4gxJHGsOG7o2MgdMSDbmcgdGjDqm0sIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGdp4bqjbSBraG/huqNuZyA0LjUxJS4KICAgIMSQaeG7gXUgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbyAocC12YWx1ZSBcPCAwLjAxKS4KCiMjIyAqKkjhu5NpIHF1eSDEkWEgYmnhur9uIHbhu5tpIG3DtCBow6xuaCBMb2dpc3RpYyoqCgpgYGB7cn0KbXVsMiA8LSBnbG0oRG9taW5hbnRfRW1vdGlvbkMgfiBBZ2UgKyBEYWlseVVzYWdlVGltZSArICBMaWtlc19SZWNlaXZlZF9QZXJfRGF5ICsgQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSAgLCBkYXRhID0gZXhwLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpCnN1bW1hcnkobXVsMikKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIGPDsyBwaMawxqFuZyB0csOsbmggc2F1OgoKJCRsbihcZnJhY3tcaGF0XHBpfSB7MS1caGF0XHBpfSk9NC43OTgwOCAtMC4yODEzNyBcdGltZXMgXHRleHR7QWdlfSArIDAuMDM3NzggXHRpbWVzIFx0ZXh0e0RhaWx5X1VzYWdlX1RpbWV9ICsgMC4wOTQwMyBcdGltZXMgXHRleHR7TGlrZXNfUmVjZWl2ZWRfUGVyX0RheX0gLSAwLjI3MTQzIFx0aW1lcyAtMC4yOTI5MiBcdGV4dHtDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5fSQkCgpL4bq/dCBxdeG6oyB04burIG3DtCBow6xuaCBjaG8gdGjhuqV5OgoKLSAgIFR14buVaSAoQWdlKSBjw7MgbeG7kWkgcXVhbiBo4buHIG5naOG7i2NoIHbhu5tpIHjDoWMgc3XhuqV0IGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIEPhu6kKICAgIG3hu5dpIG7Eg20gdHXhu5VpIHTEg25nIHRow6ptLCB4w6FjIHN14bqldCBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBnaeG6o20ga2hv4bqjbmcKICAgIDI4LjE0JS4gxJBp4buBdSBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwLXZhbHVlIFw8IDAuMDAxKS4KCi0gICBUaOG7nWkgZ2lhbiBz4butIGThu6VuZyBow6BuZyBuZ8OgeSAoRGFpbHlfVXNhZ2VfVGltZSkgY8OzIG3hu5FpIHF1YW4gaOG7hyB0aHXhuq1uCiAgICB24bubaSB4w6FjIHN14bqldCBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBD4bupIG3hu5dpIHBow7p0IHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5IHTEg25nCiAgICB0aMOqbSwgeMOhYyBzdeG6pXQgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdMSDbmcga2hv4bqjbmcgMy43OCUuIMSQaeG7gXUgbsOgeSBjw7Mgw70KICAgIG5naMSpYSB0aOG7kW5nIGvDqiAocC12YWx1ZSBcPCAwLjA1KS4KCi0gICBT4buRIGzGsOG7o25nIHRow61jaCBuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgKExpa2VzX1JlY2VpdmVkX1Blcl9EYXkpIGPFqW5nIGPDswogICAgbeG7kWkgcXVhbiBo4buHIHRodeG6rW4gduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQ+G7qSBt4buXaSBsxrDhu6N0IHRow61jaAogICAgbmjhuq1uIMSRxrDhu6NjIHTEg25nIHRow6ptLCB4w6FjIHN14bqldCBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB0xINuZyBraG/huqNuZyA5LjQwJS4KICAgIMSQaeG7gXUgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIChwLXZhbHVlIFw8IDAuMDUpLgoKLSAgIFPhu5EgbMaw4bujbmcgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeSAoQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSkgY8OzCiAgICBt4buRaSBxdWFuIGjhu4cgbmdo4buLY2ggduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQ+G7qSBt4buXaSBiw6xuaCBsdeG6rW4KICAgIG5o4bqtbiDEkcaw4bujYyB0xINuZyB0aMOqbSwgeMOhYyBzdeG6pXQgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtIGtob+G6o25nCiAgICAyOS4yOSUuIMSQaeG7gXUgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIChwLXZhbHVlIFw8IDAuMDEpLgoKIyMjICoqSOG7k2kgcXV5IMSRYSBiaeG6v24gduG7m2kgbcO0IGjDrG5oIFByb2JpdCoqCgpgYGB7cn0KbXVsMyA8LSBnbG0oRG9taW5hbnRfRW1vdGlvbkMgfiBBZ2UgKyBEYWlseVVzYWdlVGltZSArICBMaWtlc19SZWNlaXZlZF9QZXJfRGF5ICsgQ29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheSAsIGRhdGEgPSBleHAsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IikpCnN1bW1hcnkobXVsMykKYGBgCgpU4burIGvhur90IHF14bqjIHRyw6puIHRhIGPDsyBwaMawxqFuZyB0csOsbmggc2F1OgoKJCRcaGF0e1xwaX09XFBoaSgyLjY4NzIxIC0wLjE1OTU5IFx0aW1lcyBcdGV4dHtBZ2V9ICsgMC4wMjI5MiBcdGltZXMgXHRleHR7RGFpbHlfVXNhZ2VfVGltZX0gKyAwLjA0OTk5IFx0aW1lcyBcdGV4dHtMaWtlc19SZWNlaXZlZF9QZXJfRGF5fSAtMC4xNjY3OSBcdGltZXMgXHRleHR7Q29tbWVudHNfUmVjZWl2ZWRfUGVyX0RheX0gLSAwLjExNDIwJCQKCkPDoWMga+G6v3QgcXXhuqMgbcO0IGjDrG5oIGNobyB0aOG6pXk6CgotICAgVHXhu5VpIChBZ2UpIGPDsyBt4buRaSBxdWFuIGjhu4cgbmdo4buLY2ggduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQ+G7qQogICAgbeG7l2kgbsSDbSB0deG7lWkgdMSDbmcgdGjDqm0sIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGdp4bqjbSBraG/huqNuZwogICAgMTUuOTYlLiDEkGnhu4F1IG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBjYW8gKHAtdmFsdWUgXDwgMC4wMDEpLgoKLSAgIFRo4budaSBnaWFuIHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5IChEYWlseV9Vc2FnZV9UaW1lKSBjw7MgbeG7kWkgcXVhbiBo4buHIHRodeG6rW4KICAgIHbhu5tpIHjDoWMgc3XhuqV0IGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIEPhu6kgbeG7l2kgcGjDunQgc+G7rSBk4bulbmcgaMOgbmcgbmfDoHkgdMSDbmcKICAgIHRow6ptLCB4w6FjIHN14bqldCBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB0xINuZyBraG/huqNuZyAyLjI5JS4gxJBp4buBdSBuw6B5IGPDsyDDvQogICAgbmdoxKlhIHRo4buRbmcga8OqIChwLXZhbHVlIFw8IDAuMDUpLgoKLSAgIFPhu5EgbMaw4bujbmcgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBt4buXaSBuZ8OgeSAoTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSkgY8WpbmcgY8OzCiAgICBt4buRaSBxdWFuIGjhu4cgdGh14bqtbiB24bubaSB4w6FjIHN14bqldCBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBD4bupIG3hu5dpIGzGsOG7o3QgdGjDrWNoCiAgICBuaOG6rW4gxJHGsOG7o2MgdMSDbmcgdGjDqm0sIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHTEg25nIGtob+G6o25nIDQuOTklLgogICAgxJBp4buBdSBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogKHAtdmFsdWUgXDwgMC4wNSkuCgotICAgU+G7kSBsxrDhu6NuZyBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5IChDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5KSBjw7MKICAgIG3hu5FpIHF1YW4gaOG7hyBuZ2jhu4tjaCB24bubaSB4w6FjIHN14bqldCBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBD4bupIG3hu5dpIGLDrG5oIGx14bqtbgogICAgbmjhuq1uIMSRxrDhu6NjIHTEg25nIHRow6ptLCB4w6FjIHN14bqldCBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBnaeG6o20ga2hv4bqjbmcKICAgIDE2LjY4JS4gxJBp4buBdSBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogKHAtdmFsdWUgXDwgMC4wMSkuCgojIyAqKkjhu5NpIHF1eSB24bubaSBk4buvIGxp4buHdSDEkeG7i25oIGRhbmgqKgoKYGBge3J9CmxpYnJhcnkoVkdBTSkgCgpkcmFmdCA8LSBzb2NpYWxfbWVkaWEKCmRyYWZ0IDwtIHJlbmFtZShkcmFmdCwgRGFpbHkgPSBgRGFpbHlfVXNhZ2VfVGltZSAobWludXRlcylgKQoKZHJhZnQgPC0gcmVuYW1lKGRyYWZ0LCBQb3N0ID0gUG9zdHNfUGVyX0RheSApCgpkcmFmdCA8LSByZW5hbWUoZHJhZnQsIExpa2UgPSBMaWtlc19SZWNlaXZlZF9QZXJfRGF5KQoKZHJhZnQgPC0gcmVuYW1lKGRyYWZ0LCBDb20gPSBDb21tZW50c19SZWNlaXZlZF9QZXJfRGF5KQoKZHJhZnQkRG9taW5hbnRfRW1vdGlvbiA8LSBhcy5mYWN0b3IoZCREb21pbmFudF9FbW90aW9uKSAKZHJhZnQkRG9taW5hbnRfRW1vdGlvbiA8LSByZWxldmVsKGRyYWZ0JERvbWluYW50X0Vtb3Rpb24sIHJlZiA9ICJOZXV0cmFsIikKCmZpdCA8LSB2Z2xtKERvbWluYW50X0Vtb3Rpb24gfiBBZ2UKICAgICAgICAgICAgKyBQbGF0Zm9ybQogICAgICAgICAgICArIERhaWx5CiAgICAgICAgICAgICsgUG9zdAogICAgICAgICAgICArIExpa2UKICAgICAgICAgICAgKyBDb20sIAogICAgICAgICAgICBkYXRhID0gZHJhZnQsIAogICAgICAgICAgICBmYW1pbHkgPSBtdWx0aW5vbWlhbCgpKSAKc3VtbWFyeShmaXQpCgpsZXZlbHMoZHJhZnQkRG9taW5hbnRfRW1vdGlvbikKYGBgCgpWw6wgIk5ldXRyYWwiIHRoxrDhu51uZyDEkcaw4bujYyBjb2kgbMOgIHRy4bqhbmcgdGjDoWkgY+G6o20geMO6YyB0cnVuZyBs4bqtcCBuaOG6pXQgdsOgIGPDswp04bqnbiBz4buRIGzhu5tuIG5o4bqldCwgZ2nDunAgdmnhu4djIHNvIHPDoW5oIHbhu5tpIGPDoWMgY+G6o20geMO6YyBraMOhYyB0cuG7nyBuw6puIHLDtSByw6BuZwp2w6AgY8OzIMO9IG5naMSpYSBoxqFuIG7Dqm4gdGEgY2jhu41uIHRy4bqhbmcgdGjDoWkgIk5ldXRyYWwiIGzDoCBt4bupYyB0aGFtIGNoaeG6v3UuCgpUcm9uZyBtw7QgaMOsbmggbG9naXN0aWMgxJFhIHRo4bupYywgdGEgY8OzIGPDoWMgcGjGsMahbmcgdHLDrG5oIGThuqFuZzoKCiQkCmxuKFxmcmFje1xwaV9pfSB7XHBpX0t9KT1cYmV0YV97MGl9ICsgXGJldGFfezFpfVgsIGk9MSwuLi4sSy0xCiQkCgrhu54gxJHDonksIG3hu6ljIHRoYW0gY2hp4bq/dSBsw6AgIk5ldXRyYWwiICht4bupYyB0aOG7qSA2KS4KCioqS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSoqCgotICAgTeG7l2kgbeG7qWMgY+G7p2EgRG9taW5hbnRfRW1vdGlvbiAodHLhu6sgbeG7qWMgdGhhbSBjaGnhur91KSBjw7MgbeG7mXQgaOG7hyBz4buRIMaw4bubYwogICAgbMaw4bujbmcgdMawxqFuZyDhu6luZyB24bubaSB04burbmcgYmnhur9uIMSR4buZYyBs4bqtcC4gSOG7hyBz4buRIG7DoHkgxJHhuqFpIGRp4buHbiBjaG8gc+G7sQogICAgdGhheSDEkeG7lWkgY+G7p2EgbG9nLXThu7cgbOG7hyAobG9nLW9kZHMpIHNvIHbhu5tpIG3hu6ljIHRoYW0gY2hp4bq/dS4KCi0gICAqKkJp4bq/biBBZ2U6KioKCkFuZ2VyIChBZ2U6MSk6IEjhu4cgc+G7kSAtMC4yNDY0IChwID0gMC4wNzI1MzYpIGNobyB0aOG6pXkgcuG6sW5nIGtoaSB0deG7lWkgdMSDbmcsCmxvZy104bu3IGzhu4cgY+G7p2EgIkFuZ2VyIiBzbyB24bubaSAiTmV1dHJhbCIgZ2nhuqNtLCBuaMawbmcgbeG7kWkgcXVhbiBo4buHIG7DoHkga2jDtG5nCmPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6og4bufIG3hu6ljIDAuMDUuCgpCb3JlZG9tIChBZ2U6NCk6IEjhu4cgc+G7kSAwLjUwOTggKHAgPSAwLjAzOTM5NykgY2jhu4kgcmEgcuG6sW5nIGtoaSB0deG7lWkgdMSDbmcsCmxvZy104bu3IGzhu4cgY+G7p2EgIkJvcmVkb20iIHNvIHbhu5tpICJOZXV0cmFsIiB0xINuZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLgoKQ8OhYyBo4buHIHPhu5EgY8OybiBs4bqhaSBj4bunYSBBZ2UgxJHhu5FpIHbhu5tpIGPDoWMgbeG7qWMga2jDoWMgY+G7p2EgRG9taW5hbnRfRW1vdGlvbgpraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqi4KCi0gICAqKkJp4bq/biBQbGF0Zm9ybToqKgoKVGVsZWdyYW0gKFBsYXRmb3JtVGVsZWdyYW06Myk6IEjhu4cgc+G7kSAtOS43OTAgKHAgPSAwLjAwMzA1MikgY2hvIHRo4bqleQpuZ8aw4budaSBkw7luZyBUZWxlZ3JhbSBjw7MgeHUgaMaw4bubbmcgY+G6o20gdGjhuqV5IMOtdCAiQW54aWV0eSIgaMahbiBzbyB24bubaQoiTmV1dHJhbCIgduG7m2kgw70gbmdoxKlhIHRo4buRbmcga8OqIGNhby4KClR3aXR0ZXIgKFBsYXRmb3JtVHdpdHRlcjoxKTogSOG7hyBz4buRIC0zLjYwMSAocCA9IDAuMDM2Nzc4KSBjaOG7iSByYSBy4bqxbmcKbmfGsOG7nWkgZMO5bmcgVHdpdHRlciDDrXQgY8OzIGto4bqjIG7Eg25nIGPhuqNtIHRo4bqleSAiQW5nZXIiIHNvIHbhu5tpICJOZXV0cmFsIiB24bubaQrDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouCgpDw6FjIGJp4bq/biBu4buBbiB04bqjbmcga2jDoWMsIG5oxrAgSW5zdGFncmFtLCBMaW5rZWRJbiwgU25hcGNoYXQsIHbDoCBXaGF0c2FwcCwKa2jDtG5nIGPDsyBo4buHIHPhu5EgbsOgbyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIMSRw6FuZyBr4buDLgoKLSAgICoqQmnhur9uIERhaWx5OioqCgpLaMO0bmcgY8OzIGjhu4cgc+G7kSBuw6BvIGxpw6puIHF1YW4gxJHhur9uIERhaWx5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6osIGNobyB0aOG6pXkKdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgaMOgbmcgbmfDoHkga2jDtG5nIGPDsyDhuqNuaCBoxrDhu59uZyDEkcOhbmcga+G7gyDEkeG6v24gY+G6o20geMO6YyBzbwp24bubaSAiTmV1dHJhbCIuCgotICAgKipCaeG6v24gUG9zdDoqKgoKSOG6p3UgaOG6v3QgY8OhYyBo4buHIHPhu5EgbGnDqm4gcXVhbiDEkeG6v24gUG9zdCBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqgoKLSAgICoqQmnhur9uIExpa2U6KioKCkhhcHBpbmVzcyAoTGlrZTozKTogSOG7hyBz4buRIDEuMjE3IChwID0gMC4wMDAzMDIpIGNobyB0aOG6pXkgcuG6sW5nIHPhu5EgbMaw4bujdAp0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIGjDoG5nIG5nw6B5IGPDsyBt4buRaSBsacOqbiBo4buHIHTDrWNoIGPhu7FjIHbDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqCnbhu5tpIGPhuqNtIHjDumMgIkhhcHBpbmVzcyIuCgpDw6FjIGjhu4cgc+G7kSBraMOhYyBsacOqbiBxdWFuIMSR4bq/biBMaWtlIGtow7RuZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLgoKLSAgICoqQmnhur9uIENvbToqKgoKQW5nZXIgKENvbToxKTogSOG7hyBz4buRIC0wLjU0MTMgKHAgPSAwLjA1MjIzNykgY2hvIHRo4bqleSBt4buZdCBt4buRaSBsacOqbiBo4buHIMOibQpnaeG7r2Egc+G7kSBiw6xuaCBsdeG6rW4gbmjhuq1uIMSRxrDhu6NjIHbDoCBj4bqjbSB4w7pjICJBbmdlciIsIGfhuqduIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouCgpBbnhpZXR5IChDb206Myk6IEjhu4cgc+G7kSAtMS4wNjMgKHAgPSAwLjAxMzAzOSkgY2hvIHRo4bqleSBy4bqxbmcga2hpIHPhu5EgYsOsbmgKbHXhuq1uIG5o4bqtbiDEkcaw4bujYyB0xINuZywgbG9nLXThu7cgbOG7hyBj4bunYSAiQW54aWV0eSIgc28gduG7m2kgIk5ldXRyYWwiIGdp4bqjbSBjw7Mgw70KbmdoxKlhIHRo4buRbmcga8OqLgoKKipOaMOsbiBjaHVuZywgY8OhYyBr4bq/dCBxdeG6oyBo4buTaSBxdXkgY2hvIHRo4bqleSBt4buZdCBz4buRIGJp4bq/biDEkeG7mWMgbOG6rXAgY8OzIHTDoWMKxJHhu5luZyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIMSR4bq/biBjw6FjIG3hu6ljIGPhuqNtIHjDumMga2jDoWMgbmhhdS4gxJDhurdjIGJp4buHdCwgdHXhu5VpCnbDoCBu4buBbiB04bqjbmcgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBjw7MgdGjhu4Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHZp4buHYyB0cuG6o2kgbmdoaeG7h20KY+G6o20geMO6YyBuaMawICJCb3JlZG9tIiB2w6AgIkFueGlldHkiLiBT4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBow6BuZyBuZ8OgeSBjw7MKbeG7kWkgcXVhbiBo4buHIHTDrWNoIGPhu7FjIHbhu5tpIGPhuqNtIHjDumMgIkhhcHBpbmVzcyIsIHRyb25nIGtoaSBz4buRIGLDrG5oIGx14bqtbiBjw7MKbeG7kWkgbGnDqm4gaOG7hyBuZ8aw4bujYyB24bubaSBj4bqjbSB4w7pjICJBbnhpZXR5Ii4qKgoKIyMgKipE4buxIGLDoW8gdOG7qyBtw7QgaMOsbmgqKgoKIyMjICoqQmnhur9uIEFnZSoqCgpU4bqhbyBjaHXhu5dpIGThu68gbGnhu4d1IHR14buVaSBt4bubaSAoMTUsIDE3LCAyMCwgMzcpIMSR4bq3dCB0w6puIGzDoCBuZDQKCmBgYHtyfQpuZDQgPC0gZGF0YS5mcmFtZShBZ2U9YygxNSwgMTcsIDIwLCAzNykpCnByZUExIDwtIHByZWRpY3QuZ2xtKGVtb2FnZW1vZDEsIG5ld2RhdGEgPSBuZDQsIHR5cGU9InJlc3BvbnNlIikKcHJlQTEKcHJlQTIgPC0gcHJlZGljdC5nbG0oZW1vYWdlbW9kMiwgbmV3ZGF0YSA9IG5kNCwgdHlwZT0icmVzcG9uc2UiKQpwcmVBMgpwcmVBMyA8LSBwcmVkaWN0LmdsbShlbW9hZ2Vtb2QzLCBuZXdkYXRhID0gbmQ0LCB0eXBlPSJyZXNwb25zZSIpCnByZUEzCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIGJp4bq/dDoKCioqROG7sSBiw6FvIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmgqKgoKLSAgIFbhu5tpIG5nxrDhu51pIOG7nyB0deG7lWkgMTUgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyDEkeG6v24KICAgIDg5LjIzJQoKLSAgIFbhu5tpIG5nxrDhu51pIOG7nyB0deG7lWkgMTcgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyDEkeG6v24KICAgIDgxLjM5JQoKLSAgIFbhu5tpIG5nxrDhu51pIOG7nyB0deG7lWkgMjAgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AKICAgIDY5LjY1JQoKLSAgIFbhu5tpIG5nxrDhu51pIOG7nyB0deG7lWkgMzcgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBjaOG7iQogICAgY8OybiAzLjA0JQoKVuG7m2kgbcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggZ2nDoSB0cuG7iyBk4buxIGLDoW8gY2hvIHRo4bqleSB24bubaSBuaOG7r25nIG5nxrDhu51pCuG7nyDEkeG7mSB0deG7lWkgY8Ogbmcgbmjhu48gdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGtoaSBz4butIGThu6VuZwpt4bqhbmcgeMOjIGjhu5lpIGzDoCBy4bqldCBjYW8uIE5nxrDhu6NjIGzhuqFpIG5nxrDhu51pIGPDoG5nIGzhu5tuIHR14buVaSB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pCsSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBy4bqldCB0aOG6pXAuCgoqKkThu7EgYsOhbyBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpc3RpYyoqCgotICAgVuG7m2kgbmfGsOG7nWkg4bufIHR14buVaSAxNSB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIMSR4bq/bgogICAgODUuMjUlCgotICAgVuG7m2kgbmfGsOG7nWkg4bufIHR14buVaSAxNyB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIMSR4bq/bgogICAgODAuMjklCgotICAgVuG7m2kgbmfGsOG7nWkg4bufIHR14buVaSAyMCB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoAogICAgNzAuNjclCgotICAgVuG7m2kgbmfGsOG7nWkg4bufIHR14buVaSAzNyB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGNo4buJCiAgICBjw7JuIDEwLjk0JQoKVuG7m2kgbcO0IGjDrG5oIExvZ2lzdGljIHRow6wgZ2nDoSB0cuG7iyBk4buxIGLDoW8gY8WpbmcgY2hvIGvhur90IHF14bqjIHTGsMahbmcgdOG7sSB24bubaQpuaOG7r25nIG5nxrDhu51pIOG7nyDEkeG7mSB0deG7lWkgY8Ogbmcgbmjhu48gdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjCmtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCBy4bqldCBjYW8uIE5nxrDhu6NjIGzhuqFpIG5nxrDhu51pIGPDoG5nIGzhu5tuIHR14buVaSB0aMOsCnjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBy4bqldCB0aOG6pXAuIE3DtCBow6xuaCBuw6B5IGNobyBr4bq/dApxdeG6oyBnacOhIHRy4buLIHjDoWMgc3XhuqV0IOG7nyBt4buNaSB0deG7lWkgxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdsOgIG3hu6ljIGNow6puaCBs4buHY2ggdMawxqFuZwrEkeG7kWkgZ2nhu69hIG5o4buvbmcgZ2nDoSB0cuG7iyBuw6B5IHTGsMahbmcgxJHhu5FpIHNvIHbhu5tpIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oLgoKKipE4buxIGLDoW8gYuG6sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0KioKCi0gICBW4bubaSBuZ8aw4budaSDhu58gdHXhu5VpIDE1IHRow6wgeMOhYyBzdeG6pXQgbmfGsOG7nWkgxJHDsyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgxJHhur9uCiAgICA4NS44NSUKCi0gICBW4bubaSBuZ8aw4budaSDhu58gdHXhu5VpIDE3IHRow6wgeMOhYyBzdeG6pXQgbmfGsOG7nWkgxJHDsyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgxJHhur9uCiAgICA4MC41MSUKCi0gICBW4bubaSBuZ8aw4budaSDhu58gdHXhu5VpIDIwIHRow6wgeMOhYyBzdeG6pXQgbmfGsOG7nWkgxJHDsyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgCiAgICA3MC41MiUKCi0gICBW4bubaSBuZ8aw4budaSDhu58gdHXhu5VpIDM3IHRow6wgeMOhYyBzdeG6pXQgbmfGsOG7nWkgxJHDsyBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY2jhu4kKICAgIGPDsm4gMTAuMDglCgpW4bubaSBtw7QgaMOsbmggUHJvYml0IHRow6wgZ2nDoSB0cuG7iyBk4buxIGLDoW8gY8WpbmcgY2hvIGvhur90IHF14bqjIHTGsMahbmcgdOG7sSB24bubaQpuaOG7r25nIG5nxrDhu51pIOG7nyDEkeG7mSB0deG7lWkgY8Ogbmcgbmjhu48gdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjCmtoaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCBy4bqldCBjYW8uIE5nxrDhu6NjIGzhuqFpIG5nxrDhu51pIGPDoG5nIGzhu5tuIHR14buVaSB0aMOsCnjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBy4bqldCB0aOG6pXAuIE3DtCBow6xuaCBuw6B5IGNobyBr4bq/dApxdeG6oyBnacOhIHRy4buLIHjDoWMgc3XhuqV0IOG7nyBt4buNaSB0deG7lWkgxJHhu4F1IGPDsyDDvSBuZ2jEqWEgdsOgIHbDoCBt4bupYyBjaMOqbmggbOG7h2NoIGdp4buvYQpuaOG7r25nIGdpw6EgdHLhu4sgbsOgeSBraMO0bmcgcXXDoSBuaGnhu4F1IHNvIHbhu5tpIG3DtCBow6xuaCBMb2dpc3RpYwoKIyMjICoqQmnhur9uIFBvc3RzX1Blcl9EYXkqKgoKVOG6oW8gY2h14buXaSBk4buvIGxp4buHdSBiw6BpIMSRxINuZyB0cm9uZyBuZ8OgeSBt4bubaSAoMSwgNCwgNywgOSkgxJHhurd0IHTDqm4gbMOgIG5kNQoKYGBge3J9Cm5kNSA8LSBkYXRhLmZyYW1lKFBvc3RzX1Blcl9EYXk9YygxLCA0LCA3LCA5KSkKcHJlUDEgPC0gcHJlZGljdC5nbG0oZW1vcG9zbW9kMSwgbmV3ZGF0YSA9IG5kNSwgdHlwZT0icmVzcG9uc2UiKQpwcmVQMQpwcmVQMiA8LSBwcmVkaWN0LmdsbShlbW9wb3Ntb2QyLCBuZXdkYXRhID0gbmQ1LCB0eXBlPSJyZXNwb25zZSIpCnByZVAyCnByZVAzIDwtIHByZWRpY3QuZ2xtKGVtb3Bvc21vZDMsIG5ld2RhdGEgPSBuZDUsIHR5cGU9InJlc3BvbnNlIikKcHJlUDMKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gYmnhur90OgoKKipE4buxIGLDoW8gYuG6sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCoqCgotICAgVuG7m2kgbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIDEgYsOgaSB0cm9uZyBuZ8OgeSB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MKICAgIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AgMjQuNTElCgotICAgVuG7m2kgbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIDQgYsOgaSB0cm9uZyBuZ8OgeSB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MKICAgIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AgNTAuNjglCgotICAgVuG7m2kgbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIDcgYsOgaSB0cm9uZyBuZ8OgeSB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MKICAgIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AgNzYuODYlCgotICAgVuG7m2kgbmfGsOG7nWkgY8OzIGzGsOG7o25nIGLDoGkgxJHEg25nIDkgYsOgaSB0cm9uZyBuZ8OgeSB0aMOsIHjDoWMgc3XhuqV0IG5nxrDhu51pIMSRw7MKICAgIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AgOTQuMzIlCgpW4bubaSBtw7QgaMOsbmggeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCBnacOhIHRy4buLIGThu7EgYsOhbyBjaG8gdGjhuqV5IHbhu5tpIG5o4buvbmcgbmfGsOG7nWkKY8Ogbmcgw610IMSRxINuZyBiw6BpIHRyb25nIG5nw6B5IHRow6wgeMOhYyBzdeG6pXQgbmfGsOG7nWkgxJHDsyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYwpraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBsw6AgdGjhuqVwIGjGoW4gc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSDEkcSDbmcgbmhp4buBdSBiw6BpCnRyb25nIG5nw6B5LiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGhp4buDdSBuaOG7r25nIG5nxrDhu51pIGhv4bqhdCDEkeG7mW5nIMSRxINuZyBiw6BpIG5oaeG7gXUKdHJvbmcgY8OhYyBu4buBbiB04bqjbmcgeMOjIGjhu5lpIGzDoCBkbyBj4bqjbSB0aOG6pXkgdnVpIHbhursga2hpIHPhu60gZOG7pW5nIG7hu4FuIHThuqNuZyDEkcOzLgoKKipE4buxIGLDoW8gYuG6sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXN0aWMqKgoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyAxIGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDI0Ljk3JQoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyA0IGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDUwLjg5JQoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyA3IGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDc2LjM0JQoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyA5IGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDg3LjMxJQoKVuG7m2kgbcO0IGjDrG5oIExvZ2lzdGljIGdpw6EgdHLhu4sgZOG7sSBiw6FvIGPFqW5nIGNobyB0aOG6pXkgduG7m2kgbmjhu69uZyBuZ8aw4budaSBjw6BuZwrDrXQgxJHEg25nIGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGtoaSBz4butCmThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGzDoCB0aOG6pXAgaMahbiBzbyB24bubaSBuaOG7r25nIG5nxrDhu51pIMSRxINuZyBuaGnhu4F1IGLDoGkgdHJvbmcKbmfDoHkuIMSQaeG7gXUgbsOgeSBjw7MgdGjhu4MgaGnhu4N1IG5o4buvbmcgbmfGsOG7nWkgaG/huqF0IMSR4buZbmcgxJHEg25nIGLDoGkgbmhp4buBdSB0cm9uZwpjw6FjIG7hu4FuIHThuqNuZyB4w6MgaOG7mWkgbMOgIGRvIGPhuqNtIHRo4bqleSB2dWkgduG6uyBraGkgc+G7rSBk4bulbmcgbuG7gW4gdOG6o25nIMSRw7MuCgoqKkThu7EgYsOhbyBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBQcm9iaXQqKgoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyAxIGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDI1LjEzJQoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyA0IGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDUwLjcxJQoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyA3IGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDc1Ljk4JQoKLSAgIFbhu5tpIG5nxrDhu51pIGPDsyBsxrDhu6NuZyBiw6BpIMSRxINuZyA5IGLDoGkgdHJvbmcgbmfDoHkgdGjDrCB4w6FjIHN14bqldCBuZ8aw4budaSDEkcOzCiAgICBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIDg3Ljc5JQoKVuG7m2kgbcO0IGjDrG5oIFByb2JpdCBnacOhIHRy4buLIGThu7EgYsOhbyBjxaluZyBjaG8ga+G6v3QgcXXhuqMgdMawxqFuZyB04buxIHbhu5tpIG5o4buvbmcKbmfGsOG7nWkgY8Ogbmcgw610IMSRxINuZyBiw6BpIHRyb25nIG5nw6B5IHRow6wgeMOhYyBzdeG6pXQgbmfGsOG7nWkgxJHDsyBjw7MgY+G6o20geMO6YyB0w61jaApj4buxYyBraGkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBsw6AgdGjhuqVwIGjGoW4gc28gduG7m2kgbmjhu69uZyBuZ8aw4budaSDEkcSDbmcgbmhp4buBdQpiw6BpIHRyb25nIG5nw6B5LiBHacOhIHRy4buLIGThu7EgYsOhbyBj4bunYSBtw7QgaMOsbmggUHJvYml0IHbDoCBMb2dpc3RpYyBsw6AgdMawxqFuZwrEkeG7kWkgZ+G6p24gYuG6sW5nIG5oYXUuCgojIyMgKipCaeG6v24gRGFpbHlfVXNhZ2VfVGltZSoqCgpgYGB7cn0KbmQxIDwtIGRhdGEuZnJhbWUoRGFpbHlVc2FnZVRpbWUgPSBjKDYwLDEwNSwgMTIwLCAxNDUpKQpwcmVUMSA8LSBwcmVkaWN0LmdsbShlbW90aW1lbW9kMSwgbmV3ZGF0YSA9IG5kMSwgdHlwZT0icmVzcG9uc2UiKQpwcmVUMQpwcmVUMiA8LSBwcmVkaWN0LmdsbShlbW90aW1lbW9kMiwgbmV3ZGF0YSA9IG5kMSwgdHlwZT0icmVzcG9uc2UiKQpwcmVUMgpwcmVUMyA8LSBwcmVkaWN0LmdsbShlbW90aW1lbW9kMywgbmV3ZGF0YSA9IG5kMSwgdHlwZT0icmVzcG9uc2UiKQpwcmVUMwpgYGAKCkvhur90IHF14bqjIHRyw6puIGNobyBiaeG6v3Q6CgoqKkThu7EgYsOhbyBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oKioKCi0gICBLaGkgbeG7mXQgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBraG/huqNuZyA2MCBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQKICAgIMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIGtob+G6o25nIDI3JS4KCi0gICBLaGkgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSB0xINuZyBsw6puIDEwNSBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYwogICAgc3XhuqV0IMSR4buDIG5nxrDhu51pIMSRw7MgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdMSDbmcgbMOqbiBraG/huqNuZyA0OS4xMiUuCgotICAgS2hpIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgxJHhuqF0IDEyMCBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQgxJHhu4MKICAgIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHRp4bq/cCB04bulYyB0xINuZyBsw6puIGtob+G6o25nIDU2LjQ5JS4gTmjGsCB24bqteSwgY8OgbmcKICAgIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbmhp4buBdSBoxqFuLCB4w6FjIHN14bqldCBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGPDoG5nIHTEg25nLgoKLSAgIFbhu5tpIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgMTQ1IHBow7p0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBjw7MKICAgIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgxJHhuqF0IGtob+G6o25nIDY4Ljc4JS4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgc+G7sSBnaWEgdMSDbmcgcsO1CiAgICBy4buHdCBj4bunYSBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGtoaSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHTEg25nIGNhby4KCioqROG7sSBiw6FvIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2lzdGljKioKCi0gICBLaGkgbeG7mXQgbmfGsOG7nWkgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBraG/huqNuZyA2MCBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQKICAgIMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIGtob+G6o25nIDcyLjc4JS4KCi0gICBLaGkgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSB0xINuZyBsw6puIDEwNSBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYwogICAgc3XhuqV0IMSR4buDIG5nxrDhu51pIMSRw7MgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdMSDbmcgbMOqbiBraG/huqNuZyA1MC42NyUuCgotICAgS2hpIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgxJHhuqF0IDEyMCBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQgxJHhu4MKICAgIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIHRp4bq/cCB04bulYyB0xINuZyBsw6puIGtob+G6o25nIDQyLjI1JS4KCi0gICBW4bubaSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIDE0NSBwaMO6dCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQgxJHhu4MgY8OzCiAgICBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIMSR4bqhdCBraG/huqNuZyAyOS42OCUuCgoqKkThu7EgYsOhbyBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBQcm9iaXQqKgoKLSAgIEtoaSBt4buZdCBuZ8aw4budaSBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGtob+G6o25nIDYwIHBow7p0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldAogICAgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgNzMuMjUlLgoKLSAgIEtoaSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIHTEg25nIGzDqm4gMTA1IHBow7p0IG3hu5dpIG5nw6B5LCB4w6FjCiAgICBzdeG6pXQgxJHhu4MgbmfGsOG7nWkgxJHDsyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyB0xINuZyBsw6puIGtob+G6o25nIDUwLjQzJS4KCi0gICBLaGkgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDEkeG6oXQgMTIwIHBow7p0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gwogICAgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgdGnhur9wIHThu6VjIHTEg25nIGzDqm4ga2hv4bqjbmcgNDIuODclLgoKLSAgIFbhu5tpIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgMTQ1IHBow7p0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBjw7MKICAgIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgxJHhuqF0IGtob+G6o25nIDMwLjYxJS4KClTDs20gbOG6oWksIGPhuqMgYmEgbcO0IGjDrG5oIMSR4buBdSBjaG8gdGjhuqV5IG3hu5FpIHF1YW4gaOG7hyDDom0gZMawxqFuZyBnaeG7r2EgdGjhu51pIGdpYW4Kc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSB2w6AgeMOhYyBzdeG6pXQgxJHhu4MgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIE3hurdjIGTDuSBtw7QgaMOsbmgKaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggZOG7hSBoaeG7g3UgdsOgIMOhcCBk4bulbmcsIG5oxrBuZyBtw7QgaMOsbmggTG9naXN0aWMgdsOgIFByb2JpdAps4bqhaSBwaMO5IGjhu6NwIGjGoW4gxJHhu4MgbcO0IHThuqMgeMOhYyBzdeG6pXQgdHJvbmcgY8OhYyBt4buRaSBxdWFuIGjhu4cga2jDtG5nIHBo4bqjaSB0dXnhur9uCnTDrW5oLgoKS2hpIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgbmhp4buBdSBoxqFuLCBuZ8aw4budaSBkw7luZyBjw7MgdGjhu4MgY8OzIHh1IGjGsOG7m25nIGPDsyBj4bqjbQp4w7pjIHTDrWNoIGPhu7FjIGNhbyBoxqFuIGJhbiDEkeG6p3UsIG5oxrBuZyBraGkgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgZ2lhIHTEg25nIHF1w6EKbeG7qWMsIHjDoWMgc3XhuqV0IG7DoHkgY8OzIHRo4buDIGdp4bqjbSBk4bqnbi4KCiMjIyAqKkJp4bq/biBMaWtlc19SZWNlaXZlZF9QZXJfRGF5KioKCmBgYHtyfQpuZDIgPC0gZGF0YS5mcmFtZShMaWtlc19SZWNlaXZlZF9QZXJfRGF5ID0gYygxMiwgMjIsIDM4LCA0MCkpCnByZUwxIDwtIHByZWRpY3QuZ2xtKGVtb2xpa2Vtb2QxLCBuZXdkYXRhID0gbmQyLCB0eXBlPSJyZXNwb25zZSIpCnByZUwxCnByZUwyIDwtIHByZWRpY3QuZ2xtKGVtb2xpa2Vtb2QyLCBuZXdkYXRhID0gbmQyLCB0eXBlPSJyZXNwb25zZSIpCnByZUwyCnByZUwzIDwtIHByZWRpY3QuZ2xtKGVtb2xpa2Vtb2QzLCBuZXdkYXRhID0gbmQyLCB0eXBlPSJyZXNwb25zZSIpCnByZUwzCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleToKCioqROG7sSBiw6FvIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmgqKgoKLSAgIEtoaSBt4buZdCBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mga2hv4bqjbmcgMTIgbMaw4bujdCB0aMOtY2ggbeG7l2kgbmfDoHkgdHLDqm4gbeG6oW5nIHjDowogICAgaOG7mWksIHjDoWMgc3XhuqV0IMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIGtob+G6o25nIDI2LjUxJS4KCi0gICBLaGkgc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgdMSDbmcgbMOqbiAyMiBsxrDhu6N0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gwogICAgbmfGsOG7nWkgxJHDsyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgMzMuMTYlLgoKLSAgIEtoaSBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBsw6AgMzggbMaw4bujdCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQgxJHhu4MgY8OzIGPhuqNtCiAgICB4w7pjIHTDrWNoIGPhu7FjIHRp4bq/cCB04bulYyB0xINuZyBsw6puIGtob+G6o25nIDQzLjgwJS4KCi0gICBW4bubaSBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyBsw6AgNDAgbMaw4bujdCBt4buXaSBuZ8OgeSwgeMOhYyBzdeG6pXQgxJHhu4MgY8OzIGPhuqNtCiAgICB4w7pjIHTDrWNoIGPhu7FjIMSR4bqhdCB04bubaSA0NS4xMyUuCgoqKkThu7EgYsOhbyBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpc3RpYyoqCgotICAgS2hpIG3hu5l0IG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBraG/huqNuZyAxMiBsxrDhu6N0IHRow61jaCBt4buXaSBuZ8OgeSB0csOqbiBt4bqhbmcgeMOjCiAgICBo4buZaSwgeMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgNzMuMzMlLgoKLSAgIEtoaSBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyB0xINuZyBsw6puIDIyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDCiAgICBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBraG/huqNuZyA2Ny4yNSUuCgotICAgS2hpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIGzDoCAzOCBsxrDhu6N0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20KICAgIHjDumMgdMOtY2ggY+G7sWMgdGnhur9wIHThu6VjIHTEg25nIGzDqm4ga2hv4bqjbmcgNTYuMjclLgoKLSAgIFbhu5tpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIGzDoCA0MCBsxrDhu6N0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20KICAgIHjDumMgdMOtY2ggY+G7sWMgxJHhuqF0IHThu5tpIDU0LjgzJS4KCioqROG7sSBiw6FvIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IFByb2JpdCoqCgotICAgS2hpIG3hu5l0IG5nxrDhu51pIG5o4bqtbiDEkcaw4bujYyBraG/huqNuZyAxMiBsxrDhu6N0IHRow61jaCBt4buXaSBuZ8OgeSB0csOqbiBt4bqhbmcgeMOjCiAgICBo4buZaSwgeMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgNzMuMTElLgoKLSAgIEtoaSBz4buRIGzGsOG7o3QgdGjDrWNoIG5o4bqtbiDEkcaw4bujYyB0xINuZyBsw6puIDIyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDCiAgICBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBraG/huqNuZyA2Ni45OCUuCgotICAgS2hpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIGzDoCAzOCBsxrDhu6N0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20KICAgIHjDumMgdMOtY2ggY+G7sWMgdGnhur9wIHThu6VjIHTEg25nIGzDqm4ga2hv4bqjbmcgNTYuMjElLgoKLSAgIFbhu5tpIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIGzDoCA0MCBsxrDhu6N0IG3hu5dpIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20KICAgIHjDumMgdMOtY2ggY+G7sWMgxJHhuqF0IHThu5tpIDU0LjgxJS4KClTDs20gbOG6oWksIGPhuqMgYmEgbcO0IGjDrG5oIMSR4buBdSBjaG8gdGjhuqV5IG3hu5FpIGxpw6puIGjhu4cgZMawxqFuZyB0w61uaCBnaeG7r2Egc+G7kSBsxrDhu6N0CnRow61jaCBuaOG6rW4gxJHGsOG7o2MgdHLDqm4gbeG6oW5nIHjDoyBo4buZaSB2w6AgeMOhYyBzdeG6pXQgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIE3hurdjIGTDuQptw7QgaMOsbmggTG9naXN0aWMgdsOgIFByb2JpdCBjdW5nIGPhuqVwIGPDoWMgxrDhu5tjIHTDrW5oIHjDoWMgc3XhuqV0IGNhbyBoxqFuIHNvIHbhu5tpCm3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oLCDEkWnhu4F1IG7DoHkgcGjhuqNuIMOhbmggc+G7sSBwaGkgdHV54bq/biB0w61uaCB0cm9uZwpt4buRaSBxdWFuIGjhu4cgbsOgeSwgY8OzIHRo4buDIGRvIHPhu7Eg4bqjbmggaMaw4bufbmcga2jDtG5nIMSR4buTbmcgxJHhu4F1IGPhu6dhIGPDoWMgeeG6v3UgdOG7kQpraMOhYyBuaGF1IGzDqm4gY+G6o20geMO6YyBj4bunYSBuZ8aw4budaSBkw7luZyBt4bqhbmcgeMOjIGjhu5lpLgoKIyMjICoqQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkqKgoKYGBge3J9Cm5kMyA8LSBkYXRhLmZyYW1lKENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgPSBjKDcsIDEyLCAyMCwgMjIpKQpwcmVDMSA8LSBwcmVkaWN0LmdsbShlbW9jb21tb2QxLCBuZXdkYXRhID0gbmQzLCB0eXBlPSJyZXNwb25zZSIpCnByZUMxCnByZUMyIDwtIHByZWRpY3QuZ2xtKGVtb2NvbW1vZDIsIG5ld2RhdGEgPSBuZDMsIHR5cGU9InJlc3BvbnNlIikKcHJlQzIKcHJlQzMgPC0gcHJlZGljdC5nbG0oZW1vY29tbW9kMywgbmV3ZGF0YSA9IG5kMywgdHlwZT0icmVzcG9uc2UiKQpwcmVDMwpgYGAKCkvhur90IHF14bqjIHRyw6puIGNobyBiaeG6v3QKCioqROG7sSBiw6FvIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmgqKgoKLSAgIEtoaSBt4buZdCBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mga2hv4bqjbmcgNyBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSB0csOqbiBt4bqhbmcKICAgIHjDoyBo4buZaSwgeMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgMzEuODIlLgoKLSAgIEtoaSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyB0xINuZyBsw6puIDEyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0CiAgICDEkeG7gyBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBraG/huqNuZyAzOC40NCUKCi0gICBLaGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbMOgIDIwIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGPDswogICAgY+G6o20geMO6YyB0w61jaCBj4buxYyB0aeG6v3AgdOG7pWMgdMSDbmcgbMOqbiBraG/huqNuZyA0OS4wMyUuCgotICAgVuG7m2kgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbMOgIDIyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGPDswogICAgY+G6o20geMO6YyB0w61jaCBj4buxYyDEkeG6oXQgdOG7m2kgNTEuNjglLgoKKipE4buxIGLDoW8gYuG6sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXN0aWMqKgoKLSAgIEtoaSBt4buZdCBuZ8aw4budaSBuaOG6rW4gxJHGsOG7o2Mga2hv4bqjbmcgNyBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSB0csOqbiBt4bqhbmcKICAgIHjDoyBo4buZaSwgeMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgNjguMjElLgoKLSAgIEtoaSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyB0xINuZyBsw6puIDEyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0CiAgICDEkeG7gyBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBraG/huqNuZyA2MS44OCUKCi0gICBLaGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbMOgIDIwIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGPDswogICAgY+G6o20geMO6YyB0w61jaCBj4buxYyB0aeG6v3AgdOG7pWMgdMSDbmcgbMOqbiBraG/huqNuZyA1MC45NiUuCgotICAgVuG7m2kgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbMOgIDIyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGPDswogICAgY+G6o20geMO6YyB0w61jaCBj4buxYyDEkeG6oXQgdOG7m2kgNDguMTglLgoKKipE4buxIGLDoW8gYuG6sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0KioKCi0gICBLaGkgbeG7mXQgbmfGsOG7nWkgbmjhuq1uIMSRxrDhu6NjIGtob+G6o25nIDcgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kgbmfDoHkgdHLDqm4gbeG6oW5nCiAgICB4w6MgaOG7mWksIHjDoWMgc3XhuqV0IMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIGtob+G6o25nIDY4LjElLgoKLSAgIEtoaSBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyB0xINuZyBsw6puIDEyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0CiAgICDEkeG7gyBuZ8aw4budaSDEkcOzIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBraG/huqNuZyA2MS43OCUKCi0gICBLaGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbMOgIDIwIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGPDswogICAgY+G6o20geMO6YyB0w61jaCBj4buxYyB0aeG6v3AgdOG7pWMgdMSDbmcgbMOqbiBraG/huqNuZyA1MS4wNSUuCgotICAgVuG7m2kgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbMOgIDIyIGzGsOG7o3QgbeG7l2kgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGPDswogICAgY+G6o20geMO6YyB0w61jaCBj4buxYyDEkeG6oXQgdOG7m2kgNDguMzIlLgoKVMOzbSBs4bqhaSwgY+G6oyBiYSBtw7QgaMOsbmggxJHhu4F1IGNobyB0aOG6pXkgbeG7kWkgcXVhbiBo4buHIMOibSBkxrDGoW5nIGdp4buvYSB0aOG7nWkgZ2lhbgpz4butIGThu6VuZyBnaeG7r2Egc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiB2w6AgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYy4gTeG6t2MgZMO5IG3DtApow6xuaCBo4buTaSBxdXkgdHV54bq/biB0w61uaCBk4buFIGhp4buDdSB2w6Agw6FwIGThu6VuZywgbmjGsG5nIG3DtCBow6xuaCBMb2dpc3RpYyB2w6AKUHJvYml0IGzhuqFpIHBow7kgaOG7o3AgaMahbiDEkeG7gyBtw7QgdOG6oyB4w6FjIHN14bqldCB0cm9uZyBjw6FjIG3hu5FpIHF1YW4gaOG7hyBraMO0bmcKcGjhuqNpIHR1eeG6v24gdMOtbmguCgpLaGkgc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaSBuZ8OgeSBuaOG6rW4gxJHGsOG7o2Mgbmhp4buBdSBoxqFuLCBuZ8aw4budaSBkw7luZyBjw7MgdGjhu4MgY8OzCnh1IGjGsOG7m25nIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGNhbyBoxqFuIGJhbiDEkeG6p3UsIG5oxrBuZyBLaGkgc+G7kSBsxrDhu6N0IGLDrG5oCmx14bqtbiBt4buXaSBuZ8OgeSBuaOG6rW4gxJHGsOG7o2MgZ2lhIHTEg25nIHF1w6EgbeG7qWMsIHjDoWMgc3XhuqV0IG7DoHkgY8OzIHRo4buDIGdp4bqjbSBk4bqnbi4KCiMjIyAqKkjhu5NpIHF1eSDEkWEgYmnhur9uKioKCmBgYHtyfQpuZDYgPC0gZGF0YS5mcmFtZShBZ2UgPSBjKDE1LCAzNywgNDQsIDU1KSwKICAgICAgICAgICAgICAgICBEYWlseVVzYWdlVGltZSA9IGMoNjAsMTA1LCAxMjAsIDE0NSksCiAgICAgICAgICAgICAgICAgTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSA9IGMoMTIsIDIyLCAzOCwgNDApLAogICAgICAgICAgICAgICAgIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgPSBjKDcsIDEyLCAyMCwgMjIpKQpwcmVNMSA8LSBwcmVkaWN0LmdsbShtdWwxLCBuZXdkYXRhID0gbmQ2KQpwcmVNMQpwcmVNMiA8LSBwcmVkaWN0LmdsbShtdWwyLCBuZXdkYXRhID0gbmQ2LCB0eXBlPSJyZXNwb25zZSIpCnByZU0yCnByZU0zIDwtIHByZWRpY3QuZ2xtKG11bDMsIG5ld2RhdGEgPSBuZDYsIHR5cGU9InJlc3BvbnNlIikKcHJlTTMKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gYmnhur90CgoqKkThu7EgYsOhbyBi4bqxbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oKioKCi0gICBLaGkgbeG7mXQgbmfGsOG7nWkgY8OzIHR14buVaSBsw6AgMTUsIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgaMOgbmcgbmfDoHkKICAgIGzDoCA2MCBwaMO6dCwgbmjhuq1uIMSRxrDhu6NjIGtob+G6o25nIDEyIGzGsOG7o3QgdGjDrWNoIHbDoCA3IGzGsOG7o3QgYsOsbmggbHXhuq1uIG3hu5dpCiAgICBuZ8OgeSwgeMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6Aga2hv4bqjbmcgNzkuMzAlLgoKLSAgIEtoaSB0deG7lWkgdMSDbmcgbMOqbiAzNywgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgaMOgbmcgbmfDoHkgbMOgIDEwNSBwaMO6dCwgbmjhuq1uCiAgICDEkcaw4bujYyAyMiBsxrDhu6N0IHRow61jaCB2w6AgMTIgbMaw4bujdCBiw6xuaCBsdeG6rW4sIHjDoWMgc3XhuqV0IMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMKICAgIHTDrWNoIGPhu7FjIGdp4bqjbSB4deG7kW5nIGtob+G6o25nIDIuMTAlLgoKLSAgIEtoaSB0deG7lWkgbMOgIDQ0LCB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBow6BuZyBuZ8OgeSBsw6AgMTIwIHBow7p0LCBuaOG6rW4gxJHGsOG7o2MKICAgIDM4IGzGsOG7o3QgdGjDrWNoIHbDoCAyMCBsxrDhu6N0IGLDrG5oIGx14bqtbiwgeMOhYyBzdeG6pXQgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgCiAgICAtMzQuMDElIChr4bq/dCBxdeG6oyBuw6B5IGtow7RuZyBjw7Mgw70gbmdoxKlhIHRo4buxYyB04bq/IHbDrCB4w6FjIHN14bqldCBraMO0bmcgdGjhu4MKICAgIMOibSkuCgotICAgS2hpIHR14buVaSBsw6AgNTUsIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5IGzDoCAxNDUgcGjDunQsIG5o4bqtbiDEkcaw4bujYwogICAgNDAgbMaw4bujdCB0aMOtY2ggdsOgIDIyIGzGsOG7o3QgYsOsbmggbHXhuq1uLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYwogICAgbMOgIC03Mi42MyUgKGvhur90IHF14bqjIG7DoHkgY8Wpbmcga2jDtG5nIGPDsyDDvSBuZ2jEqWEgdGjhu7FjIHThur8pLgoKKipE4buxIGLDoW8gYuG6sW5nIG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXN0aWMqKgoKLSAgIEtoaSBt4buZdCBuZ8aw4budaSBjw7MgdHXhu5VpIGzDoCAxNSwgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSBow6BuZyBuZ8OgeQogICAgbMOgIDYwIHBow7p0LCBuaOG6rW4gxJHGsOG7o2Mga2hv4bqjbmcgMTIgbMaw4bujdCB0aMOtY2ggdsOgIDcgbMaw4bujdCBiw6xuaCBsdeG6rW4gbeG7l2kKICAgIG5nw6B5LCB4w6FjIHN14bqldCDEkeG7gyBo4buNIGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoCBraG/huqNuZyA4Ny4yNCUuCgotICAgS2hpIHR14buVaSB0xINuZyBsw6puIDM3LCB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBow6BuZyBuZ8OgeSBsw6AgMTA1IHBow7p0LCBuaOG6rW4KICAgIMSRxrDhu6NjIDIyIGzGsOG7o3QgdGjDrWNoIHbDoCAxMiBsxrDhu6N0IGLDrG5oIGx14bqtbiwgeMOhYyBzdeG6pXQgxJHhu4MgaOG7jSBjw7MgY+G6o20geMO6YwogICAgdMOtY2ggY+G7sWMgZ2nhuqNtIHh14buRbmcga2hv4bqjbmcgNC4zNCUuCgotICAgS2hpIHR14buVaSBsw6AgNDQsIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5IGzDoCAxMjAgcGjDunQsIG5o4bqtbiDEkcaw4bujYwogICAgMzggbMaw4bujdCB0aMOtY2ggdsOgIDIwIGzGsOG7o3QgYsOsbmggbHXhuq1uLCB4w6FjIHN14bqldCBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYyBsw6AKICAgIDAuNDglLgoKLSAgIEtoaSB0deG7lWkgbMOgIDU1LCB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBow6BuZyBuZ8OgeSBsw6AgMTQ1IHBow7p0LCBuaOG6rW4gxJHGsOG7o2MKICAgIDQwIGzGsOG7o3QgdGjDrWNoIHbDoCAyMiBsxrDhu6N0IGLDrG5oIGx14bqtbiwgeMOhYyBzdeG6pXQgxJHhu4MgY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMKICAgIGzDoCAwLjA0JS4KCioqROG7sSBiw6FvIGLhurFuZyBtw7QgaMOsbmggaOG7k2kgcXV5IFByb2JpdCoqCgotICAgS2hpIG3hu5l0IG5nxrDhu51pIGPDsyB0deG7lWkgbMOgIDE1LCB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGjDoG5nIG5nw6B5CiAgICBsw6AgNjAgcGjDunQsIG5o4bqtbiDEkcaw4bujYyBraG/huqNuZyAxMiBsxrDhu6N0IHRow61jaCB2w6AgNyBsxrDhu6N0IGLDrG5oIGx14bqtbiBt4buXaQogICAgbmfDoHksIHjDoWMgc3XhuqV0IMSR4buDIGjhu40gY8OzIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgbMOgIGtob+G6o25nIDg2LjQ1JS4KCi0gICBLaGkgdHXhu5VpIHTEg25nIGzDqm4gMzcsIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5IGzDoCAxMDUgcGjDunQsIG5o4bqtbgogICAgxJHGsOG7o2MgMjIgbMaw4bujdCB0aMOtY2ggdsOgIDEyIGzGsOG7o3QgYsOsbmggbHXhuq1uLCB4w6FjIHN14bqldCDEkeG7gyBo4buNIGPDsyBj4bqjbSB4w7pjCiAgICB0w61jaCBj4buxYyBnaeG6o20geHXhu5FuZyBraG/huqNuZyA0LjM0JS4KCi0gICBLaGkgdHXhu5VpIGzDoCA0NCwgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgaMOgbmcgbmfDoHkgbMOgIDEyMCBwaMO6dCwgbmjhuq1uIMSRxrDhu6NjCiAgICAzOCBsxrDhu6N0IHRow61jaCB2w6AgMjAgbMaw4bujdCBiw6xuaCBsdeG6rW4sIHjDoWMgc3XhuqV0IGPDsyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGzDoAogICAgMC4xMyUuCgotICAgS2hpIHR14buVaSBsw6AgNTUsIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIGjDoG5nIG5nw6B5IGzDoCAxNDUgcGjDunQsIG5o4bqtbiDEkcaw4bujYwogICAgNDAgbMaw4bujdCB0aMOtY2ggdsOgIDIyIGzGsOG7o3QgYsOsbmggbHXhuq1uLCB4w6FjIHN14bqldCDEkeG7gyBjw7MgY+G6o20geMO6YyB0w61jaCBj4buxYwogICAgbMOgIGfhuqduIDAlLgoKIyMgKipDw6FjIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgbcO0IGjDrG5oKioKCiMjIyAqKkFJQyAtIEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24qKgoKIyMjIyAqKkJp4bq/biBBZ2UqKgoKYGBge3J9CmFpY0ExIDwtIEFJQyhlbW9hZ2Vtb2QxKQphaWNBMiA8LSBBSUMoZW1vYWdlbW9kMikKYWljQTMgPC0gQUlDKGVtb2FnZW1vZDMpCkFJQy5BIDwtY2JpbmQoYWljQTEsYWljQTIsYWljQTMpCkFJQy5BCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyBjaOG7iSBz4buRIEFJQyBj4bunYSBiYSBtw7QgaMOsbmggdHLDqm4gY2hvIGJp4bq/biBBZ2UsIHRhIHRo4bqleSBtw7QgaMOsbmgKTG9naXN0aWMgY8OzIGdpw6EgdHLhu4sgQUlDIGzDoCAxMzQuMzEwNyBuaOG7jyBuaOG6pXQgdHJvbmcgYmEgbcO0IGjDrG5oLiBWw6wgduG6rXkgbcO0CmjDrG5oIExvZ2lzdGljIGzDoCBwaMO5IGjhu6NwIG5o4bqldCBjaG8gYmnhur9uIEFnZQoKIyMjIyAqKkJp4bq/biBQb3N0c19QZXJfRGF5KioKCmBgYHtyfQphaWNQMSA8LSBBSUMoZW1vcG9zbW9kMSkKYWljUDIgPC0gQUlDKGVtb3Bvc21vZDIpCmFpY1AzIDwtIEFJQyhlbW9wb3Ntb2QzKQpBSUMuUCA8LWNiaW5kKGFpY1AxLGFpY1AyLGFpY1AzKQpBSUMuUApgYGAKClThu6sga+G6v3QgcXXhuqMgY2jhu4kgc+G7kSBBSUMgY+G7p2EgYmEgbcO0IGjDrG5oIHRyw6puIGNobyBiaeG6v24gUG9zdHNfUGVyX0RheSwgdGEKdGjhuqV5IG3DtCBow6xuaCBMb2dpc3RpYyBjw7MgZ2nDoSB0cuG7iyBBSUMgbMOgIDEzMy40NjcyIG5o4buPIG5o4bqldCB0cm9uZyBiYSBtw7QKaMOsbmguIFbDrCB24bqteSBtw7QgaMOsbmggTG9naXN0aWMgbMOgIG3DtCBow6xuaCBwaMO5IGjhu6NwIG5o4bqldCBjaG8gYmnhur9uClBvc3RzX1Blcl9EYXkKCiMjIyMgKipCaeG6v24gRGFpbHlfVXNhZ2VfVGltZSoqCgpgYGB7cn0KYWljVDEgPC0gQUlDKGVtb3RpbWVtb2QxKQphaWNUMiA8LSBBSUMoZW1vdGltZW1vZDIpCmFpY1QzIDwtIEFJQyhlbW90aW1lbW9kMykKQUlDLlQgPC1jYmluZChhaWNUMSxhaWNUMixhaWNUMykKQUlDLlQKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IGzhuqduIGzGsOG7o3QgY2jhu4kgc+G7kSBBSUMgY+G7p2EgMyBtw7QgaMOsbmggTFBNLCBMb2dpc3RpYyB2w6AKUHJvYml0IGzDoCAxMzkuNDQ3NCwgMTMxLjE2ODQgdsOgIDEzMS40MDM0LgoKVHJvbmcgYmEgbcO0IGjDrG5oLCBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2lzdGljIGPDsyBnacOhIHRy4buLIEFJQyB0aOG6pXAgbmjhuqV0CigxMzEuMTY4NCksIGNobyB0aOG6pXkgxJHDonkgbMOgIG3DtCBow6xuaCB04buRdCBuaOG6pXQgdHJvbmcgdmnhu4djIGdp4bqjaSB0aMOtY2ggbeG7kWkKcXVhbiBo4buHIGdp4buvYSBiaeG6v24gc+G7kSB0aOG7nWkgZ2lhbiBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGjDoG5nIG5nw6B5IHbDoCBj4bqjbSB4w7pjCnTDrWNoIGPhu7FjLgoKTcO0IGjDrG5oIGjhu5NpIHF1eSBQcm9iaXQgY8OzIGdpw6EgdHLhu4sgQUlDIGzDoCAxMzEuNDAzNCwgxJFp4buBdSBuw6B5IGNobyB0aOG6pXkgbcO0CmjDrG5oIFByb2JpdCBjxaluZyBraMOhIHThu5F0IG5oxrBuZyB24bqrbiBrw6ltIGjGoW4gbeG7mXQgw610IHNvIHbhu5tpIG3DtCBow6xuaApMb2dpc3RpYy4KCk3DtCBow6xuaCBo4buTaSBxdXkgeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCAoTFBNKSBjw7MgZ2nDoSB0cuG7iyBBSUMgY2FvIG5o4bqldAooMTM5LjQ0NzQpLCBjaG8gdGjhuqV5IG7DsyBsw6AgbcO0IGjDrG5oIMOtdCBwaMO5IGjhu6NwIG5o4bqldCB0cm9uZyB2aeG7h2MgZ2nhuqNpIHRow61jaApt4buRaSBxdWFuIGjhu4cgbsOgeS4KClbhuq15IG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXN0aWMgY3VuZyBj4bqlcCBz4buxIHBow7kgaOG7o3AgdOG7kXQgbmjhuqV0IHbhu5tpIGThu68gbGnhu4d1CnRyb25nIGJhIG3DtCBow6xuaCDEkcaw4bujYyB4ZW0geMOpdCwgZOG7sWEgdHLDqm4gY2jhu4kgc+G7kSBBSUMKCiMjIyMgKipCaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSoqCgpgYGB7cn0KYWljTDEgPC0gQUlDKGVtb2xpa2Vtb2QxKQphaWNMMiA8LSBBSUMoZW1vbGlrZW1vZDIpCmFpY0wzIDwtIEFJQyhlbW9saWtlbW9kMykKQUlDLkwgPC1jYmluZChhaWNMMSxhaWNMMixhaWNMMykKQUlDLkwKYGBgCgpL4bq/dCBxdeG6oyB0csOqbiBjaG8gdGjhuqV5IGzhuqduIGzGsOG7o3QgY2jhu4kgc+G7kSBBSUMgY+G7p2EgMyBtw7QgaMOsbmggTFBNLCBMb2dpc3RpYyB2w6AKUHJvYml0IGzDoCAxNDEuNTI3OCwgMTMzLjE4ODQgdsOgIDEzMy4zMDUzLgoKLSAgIFRyb25nIGJhIG3DtCBow6xuaCwgbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpc3RpYyBjw7MgZ2nDoSB0cuG7iyBBSUMgdGjhuqVwIG5o4bqldAogICAgKDEzMy4xODg0KSwgY2hvIHRo4bqleSDEkcOieSBsw6AgbcO0IGjDrG5oIHThu5F0IG5o4bqldCB0cm9uZyB2aeG7h2MgZ2nhuqNpIHRow61jaAogICAgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBiaeG6v24gc+G7kSBsxrDhu6N0IHRow61jaCBuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgdsOgIGPhuqNtIHjDumMKICAgIHTDrWNoIGPhu7FjLgoKLSAgIE3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0IGPDsyBnacOhIHRy4buLIEFJQyBsw6AgMTMzLjMwNTMsIGNo4buJIGNhbyBoxqFuIG3DtAogICAgaMOsbmggTG9naXN0aWMgbeG7mXQgY2jDunQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG3DtCBow6xuaCBQcm9iaXQgY8Wpbmcga2jDoQogICAgdOG7kXQgbmjGsG5nIHbhuqtuIGvDqW0gaMahbiBt4buZdCBjaMO6dCBzbyB24bubaSBtw7QgaMOsbmggTG9naXN0aWMuCgotICAgTcO0IGjDrG5oIGjhu5NpIHF1eSB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oIChMUE0pIGPDsyBnacOhIHRy4buLIEFJQyBjYW8gbmjhuqV0CiAgICAoMTQxLjUyNzgpLCBjaG8gdGjhuqV5IG7DsyBsw6AgbcO0IGjDrG5oIMOtdCBwaMO5IGjhu6NwIG5o4bqldCB0cm9uZyB2aeG7h2MgZ2nhuqNpCiAgICB0aMOtY2ggbeG7kWkgcXVhbiBo4buHIG7DoHkuCgpW4bqteSBtw7QgaMOsbmggaOG7k2kgcXV5IExvZ2lzdGljIGN1bmcgY+G6pXAgc+G7sSBwaMO5IGjhu6NwIHThu5F0IG5o4bqldCB24bubaSBk4buvIGxp4buHdQp0cm9uZyBiYSBtw7QgaMOsbmggxJHGsOG7o2MgeGVtIHjDqXQsIGThu7FhIHRyw6puIGNo4buJIHPhu5EgQUlDCgojIyMjICoqQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkqKgoKYGBge3J9CmFpY0MxIDwtIEFJQyhlbW9jb21tb2QxKQphaWNDMiA8LSBBSUMoZW1vY29tbW9kMikKYWljQzMgPC0gQUlDKGVtb2NvbW1vZDMpCkFJQy5DIDwtY2JpbmQoYWljQzEsYWljQzIsYWljQzMpCkFJQy5DCmBgYAoKS+G6v3QgcXXhuqMgdHLDqm4gY2hvIHRo4bqleSBs4bqnbiBsxrDhu6N0IGNo4buJIHPhu5EgQUlDIGPhu6dhIDMgbcO0IGjDrG5oIExQTSwgTG9naXN0aWMgdsOgClByb2JpdCBsw6AgMTQ2Ljk1OTQsIDEzOC4zODA0IHbDoCAxMzguNDE5NC4KCi0gICBUcm9uZyBiYSBtw7QgaMOsbmgsIG3DtCBow6xuaCBo4buTaSBxdXkgTG9naXN0aWMgY8OzIGdpw6EgdHLhu4sgQUlDIHRo4bqlcCBuaOG6pXQKICAgICgxMzguMzgwNCksIGNobyB0aOG6pXkgxJFheSBjxaluZyBsw6AgbcO0IGjDrG5oIHThu5F0IG5o4bqldCB0cm9uZyB2aeG7h2MgZ2nhuqNpCiAgICB0aMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSBiaeG6v24gc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbiBuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgdsOgCiAgICBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLgoKLSAgIE3DtCBow6xuaCBo4buTaSBxdXkgUHJvYml0IGPDsyBnacOhIHRy4buLIEFJQyBsw6AgMTM4LjQxOTQsIMSRaeG7gXUgbsOgeSBjaG8gdGjhuqV5CiAgICBtw7QgaMOsbmggUHJvYml0IGPFqW5nIGtow6EgdOG7kXQgbmjGsG5nIHbhuqtuIGvDqW0gaMahbiBzbyB24bubaSBtw7QgaMOsbmgKICAgIExvZ2lzdGljLgoKLSAgIE3DtCBow6xuaCBo4buTaSBxdXkgeMOhYyBzdeG6pXQgdHV54bq/biB0w61uaCAoTFBNKSBjw7MgZ2nDoSB0cuG7iyBBSUMgY2FvIG5o4bqldAogICAgKDE0Ni45NTk0KSwgY2hvIHRo4bqleSBuw7MgbMOgIG3DtCBow6xuaCDDrXQgcGjDuSBo4bujcCBuaOG6pXQgdHJvbmcgdmnhu4djIGdp4bqjaQogICAgdGjDrWNoIG3hu5FpIHF1YW4gaOG7hyBuw6B5LgoKVuG6rXkgbcO0IGjDrG5oIGjhu5NpIHF1eSBMb2dpc3RpYyBjdW5nIGPhuqVwIHPhu7EgcGjDuSBo4bujcCB04buRdCBuaOG6pXQgduG7m2kgZOG7ryBsaeG7h3UKdHJvbmcgYmEgbcO0IGjDrG5oIMSRxrDhu6NjIHhlbSB4w6l0LCBk4buxYSB0csOqbiBjaOG7iSBz4buRIEFJQy4KCiMjIyMgKipNw7QgaMOsbmggaOG7k2kgcXV5IMSRYSBiaeG6v24qKgoKYGBge3J9CmFpY00xIDwtIEFJQyhtdWwxKQphaWNNMiA8LSBBSUMobXVsMikKYWljTTMgPC0gQUlDKG11bDMpCkFJQy5NIDwtY2JpbmQoYWljTTEsYWljTTIsYWljTTMpCkFJQy5NCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyBjaOG7iSBz4buRIEFJQyBj4bunYSBiYSBtw7QgaMOsbmggxJFhIGJp4bq/biB0csOqbiBjaG8gdGjhuqV5IG3DtCBow6xuaApMb2dpc3RpYyBjw7MgZ2nDoSB0cuG7iyBBSUMgbMOgIDExNC40NDk1IG5o4buPIG5o4bqldCB0cm9uZyBiYSBtw7QgaMOsbmguIFbDrCB24bqteSBtw7QKaMOsbmggTG9naXN0aWMgbMOgIHBow7kgaOG7o3AgbmjhuqV0LgoKIyMjICoqQnJpZXIgU2NvcmUqKgoKIyMjIyAqKkJp4bq/biBBZ2UqKgoKYGBge3J9CmJzQTEgPC0gQnJpZXJTY29yZShlbW9hZ2Vtb2QxKQpic0EyIDwtIEJyaWVyU2NvcmUoZW1vYWdlbW9kMikKYnNBMyA8LSBCcmllclNjb3JlKGVtb2FnZW1vZDMpCkJTLkEgPC0gY2JpbmQoYnNBMSxic0EyLGJzQTMpCkJTLkEKYGBgCgpU4burIGvhur90IHF14bqjIGdpw6EgdHLhu4sgY+G7p2EgaOG7hyBz4buRIEJyaWVyIFNjb3JlIGPDoG5nIGNo4bupbmcgbWluaCDEkcaw4bujYyBtw7QgaMOsbmgKTG9naXN0aWMgY+G7p2EgYmnhur9uIEFnZSBsw6AgbcO0IGjDrG5oIHBow7kgaOG7o3AgbmjhuqV0IHbDrCBjw7MgZ2nDoSB0cuG7iyBCcmllciBTY29yZQpuaOG7jyBuaOG6pXQuCgojIyMjICoqQmnhur9uIFBvc3RzX1Blcl9EYXkqKgoKYGBge3J9CmJzUDEgPC0gQnJpZXJTY29yZShlbW9wb3Ntb2QxKQpic1AyIDwtIEJyaWVyU2NvcmUoZW1vcG9zbW9kMikKYnNQMyA8LSBCcmllclNjb3JlKGVtb3Bvc21vZDMpCkJTLlAgPC0gY2JpbmQoYnNQMSxic1AyLGJzUDMpCkJTLlAKYGBgCgpU4burIGvhur90IHF14bqjIGdpw6EgdHLhu4sgY+G7p2EgaOG7hyBz4buRIEJyaWVyIFNjb3JlIGPDoG5nIGNo4bupbmcgbWluaCDEkcaw4bujYyBtw7QgaMOsbmgKTG9naXN0aWMgY+G7p2EgYmnhur9uIFBvc3RzX1Blcl9EYXkgbMOgIG3DtCBow6xuaCBoaeG7h3UgcXXhuqMgbmjhuqV0IHbDrCBjw7MgZ2nDoSB0cuG7iwpCcmllciBTY29yZSBuaOG7jyBuaOG6pXQuCgojIyMjICoqQmnhur9uIERhaWx5X1VzYWdlX1RpbWUqKgoKYGBge3J9CmJzVDEgPC0gQnJpZXJTY29yZShlbW90aW1lbW9kMSkKYnNUMiA8LSBCcmllclNjb3JlKGVtb3RpbWVtb2QyKQpic1QzIDwtIEJyaWVyU2NvcmUoZW1vdGltZW1vZDMpCkJTLlQgPC0gY2JpbmQoYnNUMSxic1QyLGJzVDMpCkJTLlQKYGBgCgpU4burIGvhur90IHF14bqjIGdpw6EgdHLhu4sgY+G7p2EgaOG7hyBz4buRIEJyaWVyIFNjb3JlIGPDoG5nIGNo4bupbmcgbWluaCDEkcaw4bujYyBtw7QgaMOsbmgKTG9naXN0aWMgY+G7p2EgYmnhur9uIERhaWx5X1VzYWdlX1RpbWUgbMOgIG3DtCBow6xuaCBoaeG7h3UgcXXhuqMgbmjhuqV0IHbDrCBjw7MgZ2nDoQp0cuG7iyBCcmllciBTY29yZSBuaOG7jyBuaOG6pXQuCgojIyMjICoqQmnhur9uIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkqKgoKYGBge3J9CmJzTDEgPC0gQnJpZXJTY29yZShlbW9saWtlbW9kMSkKYnNMMiA8LSBCcmllclNjb3JlKGVtb2xpa2Vtb2QyKQpic0wzIDwtIEJyaWVyU2NvcmUoZW1vbGlrZW1vZDMpCkJTLkwgPC0gY2JpbmQoYnNMMSxic0wyLGJzTDMpCkJTLkwKYGBgCgpU4burIGvhur90IHF14bqjIGdpw6EgdHLhu4sgY+G7p2EgaOG7hyBz4buRIEJyaWVyIFNjb3JlIGPDoG5nIGNo4bupbmcgbWluaCDEkcaw4bujYyBtw7QgaMOsbmgKTG9naXN0aWMgY+G7p2EgYmnhur9uIExpa2VzX1JlY2VpdmVkX1Blcl9EYXkgbMOgIG3DtCBow6xuaCBoaeG7h3UgcXXhuqMgbmjhuqV0IHbDrCBjw7MKZ2nDoSB0cuG7iyBCcmllciBTY29yZSBuaOG7jyBuaOG6pXQuCgojIyMjICoqQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkqKgoKYGBge3J9CmJzQzEgPC0gQnJpZXJTY29yZShlbW9jb21tb2QxKQpic0MyIDwtIEJyaWVyU2NvcmUoZW1vY29tbW9kMikKYnNDMyA8LSBCcmllclNjb3JlKGVtb2NvbW1vZDMpCkJTLkMgPC0gY2JpbmQoYnNDMSxic0MyLGJzQzMpCkJTLkMKYGBgCgpU4burIGvhur90IHF14bqjIGdpw6EgdHLhu4sgY+G7p2EgaOG7hyBz4buRIEJyaWVyIFNjb3JlIGPDoG5nIGNo4bupbmcgbWluaCDEkcaw4bujYyBtw7QgaMOsbmgKTG9naXN0aWMgY+G7p2EgYmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkgbMOgIG3DtCBow6xuaCBoaeG7h3UgcXXhuqMgbmjhuqV0IHbDrApjw7MgZ2nDoSB0cuG7iyBCcmllciBTY29yZSBuaOG7jyBuaOG6pXQuCgojIyMjICoqTcO0IGjDrG5oIGjhu5NpIHF1eSDEkWEgYmnhur9uKioKCmBgYHtyfQpic00xIDwtIEJyaWVyU2NvcmUobXVsMSkKYnNNMiA8LSBCcmllclNjb3JlKG11bDIpCmJzTTMgPC0gQnJpZXJTY29yZShtdWwzKQpCUy5NIDwtIGNiaW5kKGJzTTEsYnNNMixic00zKQpCUy5NCmBgYAoKVOG7qyBr4bq/dCBxdeG6oyBnacOhIHRy4buLIGPhu6dhIGjhu4cgc+G7kSBCcmllciBTY29yZSBjw6BuZyBjaOG7qW5nIG1pbmggxJHGsOG7o2MgbcO0IGjDrG5oCmjhu5NpIHF1eSBMb2dpc3RpYyB0cm9uZyAzIG3DtCBow6xuaCBo4buTaSBxdXkgxJFhIGJp4bq/biB0csOqbiBsw6AgbcO0IGjDrG5oIHBow7kgaOG7o3AKbmjhuqV0IHbDrCBjw7MgZ2nDoSB0cuG7iyBCcmllciBTY29yZSBuaOG7jyBuaOG6pXQuCgojIyMgKipNYSB0cuG6rW4gbmjhuqdtIGzhuqtuIC0gQ29uZnVzaW9uIG1hdHJpeCoqCgojIyMjIFwqXCogQmnhur9uIEFnZSBcKlwqCgoqKkxQTSoqCgpgYGB7cn0KbGlicmFyeShlMTA3MSkKbGlicmFyeShjYXJldCkKbGlicmFyeShEZXNjVG9vbHMpCmRhdGEgPC0gc29jaWFsX21lZGlhCk10MSA8LSBDb25mKHRhYmxlKHByZWRpY3QoZW1vYWdlbW9kMSwgdHlwZT0icmVzcG9uc2UiKSA+PTAuNSxlbW9hZ2Vtb2QxJGRhdGEkRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnKSkKTXQxCmBgYAoKKipMb2dpc3RpYyoqCgpgYGB7cn0KTXQyIDwtIENvbmYodGFibGUocHJlZGljdChlbW9hZ2Vtb2QyLCB0eXBlPSJyZXNwb25zZSIpID49MC41LGVtb2FnZW1vZDIkZGF0YSREb21pbmFudF9FbW90aW9uID09ICdUw61jaCBj4buxYycpKQpNdDIKYGBgCgoqKlByb2JpdCoqCgpgYGB7cn0KTXQzIDwtIENvbmYodGFibGUocHJlZGljdChlbW9hZ2Vtb2QzLCB0eXBlPSJyZXNwb25zZSIpID49MC41LGVtb2FnZW1vZDMkZGF0YSREb21pbmFudF9FbW90aW9uID09ICdUw61jaCBj4buxYycpKQpNdDMKYGBgCgpNYSB0cuG6rW4gbmjhuqdtIGzhuqtuIGJp4bq/biBBZ2U6IE1hIHRy4bqtbiB04burIGJhIG3DtCBow6xuaCDEkeG7gXUgY2hvIHJhIGPDuW5nIG3hu5l0IGvhur90CnF14bqjIGNobyB0YSBiaeG6v3QgdHJvbmcgdOG7lW5nIHPhu5EgNjEgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QgaMOsbmgKbmjhuq1uIG5o4bqtbiBk4bqhbmcgxJHGsOG7o2MgY8OzIDUyIHF1YW4gc8OhdCBuaOG6rW4gZOG6oW5nIMSRw7puZyB2w6AgOSBxdWFuIHPDoXQgbmjhuq1uCmThuqFuZyBraMO0bmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBCw6puIGPhuqFuaCDEkcOzLCB0cm9uZyB04buVbmcgc+G7kSA0MiBuZ8aw4budaQpraMO0bmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QgaMOsbmggbmjhuq1uIGRp4buHbiDEkcaw4bujYyAyNCBxdWFuIHPDoXQgxJHDum5nIHbDoAoxOSBxdWFuIHPDoXQgxJHGsOG7o2Mgbmjhuq1uIGRp4buHbiBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIFbhu5tpIGNo4buJIHPhu5EgY2jDrW5oIHjDoWMKbMOgIDAuNzI4MgoKIyMjIyAqKkJp4bq/biBQb3N0c19QZXJfRGF5KioKCioqTFBNKioKCmBgYHtyfQpNdDQgPC0gQ29uZih0YWJsZShwcmVkaWN0KGVtb3Bvc21vZDEsIHR5cGU9InJlc3BvbnNlIikgPj0wLjUsZW1vcG9zbW9kMSRkYXRhJERvbWluYW50X0Vtb3Rpb24gPT0gJ1TDrWNoIGPhu7FjJykpCk10NApgYGAKCioqTG9naXN0aWMqKgoKYGBge3J9Ck10NSA8LSBDb25mKHRhYmxlKHByZWRpY3QoZW1vcG9zbW9kMiwgdHlwZT0icmVzcG9uc2UiKSA+PTAuNSxlbW9wb3Ntb2QyJGRhdGEkRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnKSkKTXQ1CmBgYAoKKipQcm9iaXQqKgoKYGBge3J9Ck10NiA8LSBDb25mKHRhYmxlKHByZWRpY3QoZW1vcG9zbW9kMywgdHlwZT0icmVzcG9uc2UiKSA+PTAuNSxlbW9wb3Ntb2QzJGRhdGEkRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnKSkKTXQ2CmBgYAoKTWEgdHLhuq1uIHThu6sgYmEgbcO0IGjDrG5oIMSR4buBdSBjaG8gcmEgY8O5bmcgbeG7mXQga+G6v3QgcXXhuqMgY2hvIHRhIGJp4bq/dCB0cm9uZyB04buVbmcKc+G7kSA2MSBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMsIG3DtCBow6xuaCBuaOG6rW4gbmjhuq1uIGThuqFuZyDEkcaw4bujYyBjw7MgNTAKcXVhbiBzw6F0IG5o4bqtbiBk4bqhbmcgxJHDum5nIHbDoCAxMSBxdWFuIHPDoXQgbmjhuq1uIGThuqFuZyBraMO0bmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoCmPhu7FjLiBCw6puIGPhuqFuaCDEkcOzLCB0cm9uZyB04buVbmcgc+G7kSA0MiBuZ8aw4budaSBraMO0bmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QKaMOsbmggbmjhuq1uIGRp4buHbiDEkcaw4bujYyAyMCBxdWFuIHPDoXQgxJHDum5nIHbDoCAyMiBxdWFuIHPDoXQgxJHGsOG7o2Mgbmjhuq1uIGRp4buHbiBtYW5nCmPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIFbhu5tpIGNo4buJIHPhu5EgY2jDrW5oIHjDoWMgbMOgIDAuNjc5NgoKIyMjIyAqKkJp4bq/biBEYWlseV9Vc2FnZV9UaW1lKioKCioqTFBNKioKCmBgYHtyfQpNdDcgPC0gQ29uZih0YWJsZShwcmVkaWN0KGVtb3RpbWVtb2QxLCB0eXBlPSJyZXNwb25zZSIpID49MC41LGVtb3RpbWVtb2QxJGRhdGEkRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnKSkKTXQ3CmBgYAoKTWEgdHLhuq1uIHThu6sgbcO0IGjDrG5oIGNobyByYSBr4bq/dCBxdeG6oyBjaG8gYmnhur90IHRyb25nIHThu5VuZyBz4buRIDYxIG5nxrDhu51pIG1hbmcKY+G6o20geMO6YyB0w61jaCBj4buxYywgbcO0IGjDrG5oIG5o4bqtbiBuaOG6rW4gZOG6oW5nIMSRxrDhu6NjIGPDsyA1NCBxdWFuIHPDoXQgbmjhuq1uIGThuqFuZwrEkcO6bmcgdsOgIDcgcXVhbiBzw6F0IG5o4bqtbiBk4bqhbmcga2jDtG5nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQsOqbiBj4bqhbmggxJHDsywKdHJvbmcgdOG7lW5nIHPhu5EgNDIgbmfGsOG7nWkga2jDtG5nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYywgbcO0IGjDrG5oIG5o4bqtbiBkaeG7h24KxJHGsOG7o2MgMTcgcXVhbiBzw6F0IMSRw7puZyB2w6AgMjUgcXVhbiBzw6F0IMSRxrDhu6NjIG5o4bqtbiBkaeG7h24gbWFuZyBj4bqjbSB4w7pjIHTDrWNoCmPhu7FjLiBW4bubaSBjaOG7iSBz4buRIGNow61uaCB4w6FjIGzDoCAwLjY4OTMKCioqTG9naXN0aWMqKgoKYGBge3J9Ck10OCA8LSBDb25mKHRhYmxlKHByZWRpY3QoZW1vdGltZW1vZDIsIHR5cGU9InJlc3BvbnNlIikgPj0wLjUsZW1vdGltZW1vZDIkZGF0YSREb21pbmFudF9FbW90aW9uID09ICdUw61jaCBj4buxYycpKQpNdDgKYGBgCgoqKlByb2JpdCoqCgpgYGB7cn0KTXQ5IDwtIENvbmYodGFibGUocHJlZGljdChlbW90aW1lbW9kMywgdHlwZT0icmVzcG9uc2UiKSA+PTAuNSxlbW90aW1lbW9kMyRkYXRhJERvbWluYW50X0Vtb3Rpb24gPT0gJ1TDrWNoIGPhu7FjJykpCk10OQpgYGAKCk1hIHRy4bqtbiB04burIDIgbcO0IGjDrG5oIGxvZ2lzdGljIHbDoCBwcm9iaXQgxJHhu4F1IGNobyByYSBjw7luZyBt4buZdCBr4bq/dCBxdeG6oyBjaG8KdGEgYmnhur90IHRyb25nIHThu5VuZyBz4buRIDYxIG5nxrDhu51pIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYywgbcO0IGjDrG5oIG5o4bqtbiBuaOG6rW4KZOG6oW5nIMSRxrDhu6NjIGPDsyA3IHF1YW4gc8OhdCBuaOG6rW4gZOG6oW5nIMSRw7puZyB2w6AgNTQgcXVhbiBzw6F0IG5o4bqtbiBk4bqhbmcga2jDtG5nCm1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQsOqbiBj4bqhbmggxJHDsywgdHJvbmcgdOG7lW5nIHPhu5EgNDIgbmfGsOG7nWkga2jDtG5nIG1hbmcKY+G6o20geMO6YyB0w61jaCBj4buxYywgbcO0IGjDrG5oIG5o4bqtbiBkaeG7h24gxJHGsOG7o2MgMjUgcXVhbiBzw6F0IMSRw7puZyB2w6AgMTcgcXVhbiBzw6F0CsSRxrDhu6NjIG5o4bqtbiBkaeG7h24gbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBW4bubaSBjaOG7iSBz4buRIGNow61uaCB4w6FjIGzDoCAwLjMxMDcKCiMjIyMgKipCaeG6v24gTGlrZXNfUmVjZWl2ZWRfUGVyX0RheSoqCgoqKkxQTSoqCgpgYGB7cn0KTXQxMCA8LSBDb25mKHRhYmxlKHByZWRpY3QoZW1vbGlrZW1vZDEsIHR5cGU9InJlc3BvbnNlIikgPj0wLjUsZW1vbGlrZW1vZDEkZGF0YSREb21pbmFudF9FbW90aW9uID09ICdUw61jaCBj4buxYycpKQpNdDEwCmBgYAoKTWEgdHLhuq1uIHThu6sgbcO0IGjDrG5oIGNobyByYSBr4bq/dCBxdeG6oyBjaG8gYmnhur90IHRyb25nIHThu5VuZyBz4buRIDYxIG5nxrDhu51pIG1hbmcKY+G6o20geMO6YyB0w61jaCBj4buxYywgbcO0IGjDrG5oIG5o4bqtbiBuaOG6rW4gZOG6oW5nIMSRxrDhu6NjIGPDsyA1NSBxdWFuIHPDoXQgbmjhuq1uIGThuqFuZwrEkcO6bmcgdsOgIDYgcXVhbiBzw6F0IG5o4bqtbiBk4bqhbmcga2jDtG5nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gQsOqbiBj4bqhbmggxJHDsywKdHJvbmcgdOG7lW5nIHPhu5EgNDIgbmfGsOG7nWkga2jDtG5nIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYywgbcO0IGjDrG5oIG5o4bqtbiBkaeG7h24KxJHGsOG7o2MgMTUgcXVhbiBzw6F0IMSRw7puZyB2w6AgMjcgcXVhbiBzw6F0IMSRxrDhu6NjIG5o4bqtbiBkaeG7h24gbWFuZyBj4bqjbSB4w7pjIHTDrWNoCmPhu7FjLiBW4bubaSBjaOG7iSBz4buRIGNow61uaCB4w6FjIGzDoCAwLjY3OTYKCioqTG9naXN0aWMqKgoKYGBge3J9Ck10MTEgPC0gQ29uZih0YWJsZShwcmVkaWN0KGVtb2xpa2Vtb2QyLCB0eXBlPSJyZXNwb25zZSIpID49MC41LGVtb2xpa2Vtb2QyJGRhdGEkRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnKSkKTXQxMQpgYGAKCioqUHJvYml0KioKCmBgYHtyfQpNdDEyIDwtIENvbmYodGFibGUocHJlZGljdChlbW9saWtlbW9kMywgdHlwZT0icmVzcG9uc2UiKSA+PTAuNSxlbW9saWtlbW9kMyRkYXRhJERvbWluYW50X0Vtb3Rpb24gPT0gJ1TDrWNoIGPhu7FjJykpCk10MTIKYGBgCgpNYSB0cuG6rW4gdOG7qyAyIG3DtCBow6xuaCBsb2dpc3RpYyB2w6AgcHJvYml0IMSR4buBdSBjaG8gcmEgY8O5bmcgbeG7mXQga+G6v3QgcXXhuqMgY2hvCnRhIGJp4bq/dCB0cm9uZyB04buVbmcgc+G7kSA2MSBuZ8aw4budaSBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMsIG3DtCBow6xuaCBuaOG6rW4gbmjhuq1uCmThuqFuZyDEkcaw4bujYyBjw7MgNiBxdWFuIHPDoXQgbmjhuq1uIGThuqFuZyDEkcO6bmcgdsOgIDU1IHF1YW4gc8OhdCBuaOG6rW4gZOG6oW5nIGtow7RuZwptYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIELDqm4gY+G6oW5oIMSRw7MsIHRyb25nIHThu5VuZyBz4buRIDQyIG5nxrDhu51pIGtow7RuZyBtYW5nCmPhuqNtIHjDumMgdMOtY2ggY+G7sWMsIG3DtCBow6xuaCBuaOG6rW4gZGnhu4duIMSRxrDhu6NjIDI3IHF1YW4gc8OhdCDEkcO6bmcgdsOgIDE1IHF1YW4gc8OhdArEkcaw4bujYyBuaOG6rW4gZGnhu4duIG1hbmcgY+G6o20geMO6YyB0w61jaCBj4buxYy4gVuG7m2kgY2jhu4kgc+G7kSBjaMOtbmggeMOhYyBsw6AgMC4zMjA0CgojIyMjICoqQmnhur9uIENvbW1lbnRzX1JlY2VpdmVkX1Blcl9EYXkqKgoKKipMUE0qKgoKYGBge3J9Ck10MTMgPC0gQ29uZih0YWJsZShwcmVkaWN0KGVtb2NvbW1vZDEsIHR5cGU9InJlc3BvbnNlIikgPj0wLjUsZW1vY29tbW9kMSRkYXRhJERvbWluYW50X0Vtb3Rpb24gPT0gJ1TDrWNoIGPhu7FjJykpCk10MTMKYGBgCgpNYSB0cuG6rW4gdOG7qyBtw7QgaMOsbmggY2hvIHJhIGvhur90IHF14bqjIGNobyBiaeG6v3QgdHJvbmcgdOG7lW5nIHPhu5EgNjEgbmfGsOG7nWkgbWFuZwpj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QgaMOsbmggbmjhuq1uIG5o4bqtbiBk4bqhbmcgxJHGsOG7o2MgY8OzIDU1IHF1YW4gc8OhdCBuaOG6rW4gZOG6oW5nCsSRw7puZyB2w6AgNiBxdWFuIHPDoXQgbmjhuq1uIGThuqFuZyBraMO0bmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBCw6puIGPhuqFuaCDEkcOzLAp0cm9uZyB04buVbmcgc+G7kSA0MiBuZ8aw4budaSBraMO0bmcgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QgaMOsbmggbmjhuq1uIGRp4buHbgrEkcaw4bujYyAxMiBxdWFuIHPDoXQgxJHDum5nIHbDoCAzMCBxdWFuIHPDoXQgxJHGsOG7o2Mgbmjhuq1uIGRp4buHbiBtYW5nIGPhuqNtIHjDumMgdMOtY2gKY+G7sWMuIFbhu5tpIGNo4buJIHPhu5EgY2jDrW5oIHjDoWMgbMOgIDAuNjUwNQoKKipMb2dpc3RpYyoqCgpgYGB7cn0KTXQxNCA8LSBDb25mKHRhYmxlKHByZWRpY3QoZW1vY29tbW9kMiwgdHlwZT0icmVzcG9uc2UiKSA+PTAuNSxlbW9jb21tb2QyJGRhdGEkRG9taW5hbnRfRW1vdGlvbiA9PSAnVMOtY2ggY+G7sWMnKSkKTXQxNApgYGAKCioqUHJvYml0KioKCmBgYHtyfQpNdDE1IDwtIENvbmYodGFibGUocHJlZGljdChlbW9jb21tb2QzLCB0eXBlPSJyZXNwb25zZSIpID49MC41LGVtb2NvbW1vZDMkZGF0YSREb21pbmFudF9FbW90aW9uID09ICdUw61jaCBj4buxYycpKQpNdDE1CmBgYAoKTWEgdHLhuq1uIHThu6sgMiBtw7QgaMOsbmggbG9naXN0aWMgdsOgIHByb2JpdCDEkeG7gXUgY2hvIHJhIGPDuW5nIG3hu5l0IGvhur90IHF14bqjIGNobwp0YSBiaeG6v3QgdHJvbmcgdOG7lW5nIHPhu5EgNjEgbmfGsOG7nWkgbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QgaMOsbmggbmjhuq1uIG5o4bqtbgpk4bqhbmcgxJHGsOG7o2MgY8OzIDYgcXVhbiBzw6F0IG5o4bqtbiBk4bqhbmcgxJHDum5nIHbDoCA1NSBxdWFuIHPDoXQgbmjhuq1uIGThuqFuZyBraMO0bmcKbWFuZyBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLiBCw6puIGPhuqFuaCDEkcOzLCB0cm9uZyB04buVbmcgc+G7kSA0MiBuZ8aw4budaSBraMO0bmcgbWFuZwpj4bqjbSB4w7pjIHTDrWNoIGPhu7FjLCBtw7QgaMOsbmggbmjhuq1uIGRp4buHbiDEkcaw4bujYyAzMCBxdWFuIHPDoXQgxJHDum5nIHbDoCAxMiBxdWFuIHPDoXQKxJHGsOG7o2Mgbmjhuq1uIGRp4buHbiBtYW5nIGPhuqNtIHjDumMgdMOtY2ggY+G7sWMuIFbhu5tpIGNo4buJIHPhu5EgY2jDrW5oIHjDoWMgbMOgIDAuMzQ5NQoKIyMgKipL4bq/dCBsdeG6rW4qKgoKxJDhu4EgdMOgaSAiUGjDom4gdMOtY2ggdmnhu4djIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkg4bqjbmggaMaw4bufbmcgxJHhur9uIHPhu6ljIGto4buPZSB0aW5oCnRo4bqnbiBj4bunYSBuZ8aw4budaSBkw7luZyIgxJHDoyBjdW5nIGPhuqVwIG3hu5l0IGPDoWkgbmjDrG4gdG/DoG4gZGnhu4duIHbhu4EgbeG7kWkgcXVhbiBo4buHCmdp4buvYSBjw6FjIHnhur91IHThu5Egc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSB2w6AgY+G6o20geMO6YyB0w61jaCBj4buxYyBj4bunYSBuZ8aw4budaSBkw7luZy4KQuG6sW5nIHZp4buHYyDDoXAgZOG7pW5nIGJhIG3DtCBow6xuaCBo4buTaSBxdXkgxJFhIGJp4bq/biAobcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24KdMOtbmgsIG3DtCBow6xuaCBsb2dpc3RpYywgdsOgIG3DtCBow6xuaCBwcm9iaXQpLCBjaMO6bmcgdMO0aSDEkcOjIHBow6JuIHTDrWNoIGPDoWMKZOG7ryBsaeG7h3UgcXVhbiB0cuG7jW5nIGJhbyBn4buTbSB0deG7lWksIHRo4budaSBnaWFuIHPhu60gZOG7pW5nIG3huqFuZyB4w6MgaOG7mWkgaMOgbmcKbmfDoHksIHPhu5EgbMaw4bujdCB0aMOtY2ggbmjhuq1uIMSRxrDhu6NjIG3hu5dpIG5nw6B5LCBz4buRIGzGsOG7o3QgYsOsbmggbHXhuq1uIG5o4bqtbiDEkcaw4bujYyBt4buXaQpuZ8OgeSwgdsOgIHPhu5EgbMaw4bujbmcgdGluIG5o4bqvbiBn4butaSDEkWkgbeG7l2kgbmfDoHkuIEvhur90IHF14bqjIHBow6JuIHTDrWNoIGNobyB0aOG6pXkKcuG6sW5nIHR14buVaSB0w6FjIGPDsyBt4buRaSBxdWFuIGjhu4cgbmdo4buLY2ggduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaCBj4buxYywgbmdoxKlhCmzDoCBraGkgdHXhu5VpIHTEg25nIGzDqm4sIHjDoWMgc3XhuqV0IGPhuqNtIHjDumMgdMOtY2ggY+G7sWMgZ2nhuqNtLiBOZ8aw4bujYyBs4bqhaSwgY8OhYyB54bq/dQp04buRIG5oxrAgdGjhu51pIGdpYW4gc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSwgc+G7kSBsxrDhu6N0IHRow61jaCB2w6Agc+G7kSBsxrDhu6N0IGLDrG5oIGx14bqtbgpuaOG6rW4gxJHGsOG7o2MgbeG7l2kgbmfDoHkgxJHhu4F1IGPDsyBt4buRaSBxdWFuIGjhu4cgdMOtY2ggY+G7sWMgduG7m2kgeMOhYyBzdeG6pXQgY+G6o20geMO6YyB0w61jaApj4buxYy4gxJBp4buBdSBuw6B5IGNo4buJIHJhIHLhurFuZyBz4buxIHTGsMahbmcgdMOhYyB0csOqbiBt4bqhbmcgeMOjIGjhu5lpIGPDsyB0aOG7gyBj4bqjaSB0aGnhu4duCmPhuqNtIHjDumMgdMOtY2ggY+G7sWMgY+G7p2EgbmfGsOG7nWkgZMO5bmcsIHR1eSBuaGnDqm4sIGPDsyBt4buZdCBt4bupYyDEkeG7mSB04buRaSDGsHUgY+G7p2Egc+G7sQp0xrDGoW5nIHTDoWMgbcOgIHThuqFpIMSRw7MgbmfGsOG7nWkgZMO5bmcgY+G6o20gdGjhuqV5IHTDrWNoIGPhu7FjIG5o4bqldC4gS2hpIHPhu5EgbMaw4bujbmcgbsOgeQp2xrDhu6N0IHF1w6EgbeG7qWMgxJHhu5kgdOG7kWkgxrB1LCB4w6FjIHN14bqldCBj4bqjbSB4w7pjIHTDrWNoIGPhu7FjIGPDsyB0aOG7gyBnaeG6o20gxJFpLiBDw6FjIG3DtApow6xuaCBsb2dpc3RpYyB2w6AgcHJvYml0IMSRw6MgY2jhu6luZyB04buPIGzDoCBjw6FjIGPDtG5nIGPhu6UgcGjDom4gdMOtY2ggaGnhu4d1IHF14bqjCmjGoW4gdHJvbmcgdmnhu4djIG3DtCB04bqjIGPDoWMgbeG7kWkgcXVhbiBo4buHIGtow7RuZyB0dXnhur9uIHTDrW5oLCBjdW5nIGPhuqVwIGvhur90IHF14bqjCmjhu6NwIGzDvSBoxqFuIHNvIHbhu5tpIG3DtCBow6xuaCB4w6FjIHN14bqldCB0dXnhur9uIHTDrW5oLiDEkGnhu4F1IG7DoHkgZ+G7o2kgw70gcuG6sW5nIGPDoWMKbmjDoCBuZ2hpw6puIGPhu6l1IHbDoCBuaMOgIHF14bqjbiBsw70gbsOqbiBz4butIGThu6VuZyBjw6FjIG3DtCBow6xuaCBuw6B5IMSR4buDIGPDsyBjw6FpIG5ow6xuCmNow61uaCB4w6FjIHbDoCB0b8OgbiBkaeG7h24gaMahbiB24buBIHTDoWMgxJHhu5luZyBj4bunYSB2aeG7h2Mgc+G7rSBk4bulbmcgbeG6oW5nIHjDoyBo4buZaSDEkeG6v24Kc+G7qWMga2jhu49lIHRpbmggdGjhuqduLiBU4burIG5o4buvbmcgcGjDoXQgaGnhu4duIG7DoHksIGNow7puZyB0w7RpIGPDsyB0aOG7gyBr4bq/dCBsdeG6rW4KcuG6sW5nIHZp4buHYyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpIGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gc+G7qWMga2jhu49lIHRpbmggdGjhuqduCmPhu6dhIG5nxrDhu51pIGTDuW5nIHRoZW8gY+G6oyBoxrDhu5tuZyB0w61jaCBj4buxYyB2w6AgdGnDqnUgY+G7sWMuIMSQ4buDIHThu5FpIMawdSBow7NhIGzhu6NpIMOtY2gKdsOgIGdp4bqjbSB0aGnhu4N1IHTDoWMgaOG6oWksIG5nxrDhu51pIGTDuW5nIGPhuqduIHTDrG0ga2nhur9tIG3hu6ljIMSR4buZIHTGsMahbmcgdMOhYyBwaMO5IGjhu6NwCnbDoCBkdXkgdHLDrCBz4buxIGPDom4gYuG6sW5nIHRyb25nIHZp4buHYyBz4butIGThu6VuZyBt4bqhbmcgeMOjIGjhu5lpLiBDw6FjIG5ow6AgcXXhuqNuIGzDvQpt4bqhbmcgeMOjIGjhu5lpIHbDoCBuaMOgIG5naGnDqm4gY+G7qXUgY+G6p24gdGnhur9wIHThu6VjIG5naGnDqm4gY+G7qXUgc8OidSBoxqFuIHbhu4EgY8OhYyB54bq/dQp04buRIOG6o25oIGjGsOG7n25nIHbDoCBjw6FjIGJp4buHbiBwaMOhcCBjYW4gdGhp4buHcCDEkeG7gyBj4bqjaSB0aGnhu4duIHRy4bqjaSBuZ2hp4buHbSB2w6Agc+G7qWMKa2jhu49lIHRpbmggdGjhuqduIGPhu6dhIG5nxrDhu51pIGTDuW5nIHRyw6puIGPDoWMgbuG7gW4gdOG6o25nIG3huqFuZyB4w6MgaOG7mWkuCg==