1 Bài tập về nhà tuần 2

Chọn và giải thích về đối tượng ( vấn đề ) cần mô phỏng ( có ít nhất 6 biến ngẫu

nhiên đầu vào)

1.1 Đối tượng: Mô phỏng lợi nhuận tháng của quán nước Thái Phúc

1.2 Giải thích:

Doanh thu = Số lượng * Đơn giá

Thông tin và dữ liệu về đơn giá,số lượng các món nước bán ra hàng ngày của quán trong 1

năm (6 món với 365 quan sát).

  • Tên cửa hàng : Thái Phúc Tea

  • Địa chỉ: 92 Nguyễn Công Trứ, phường Tự An, TP Buôn Ma Thuột, Tỉnh Đak Lak

  • Lĩnh vực kinh doanh: Ăn uống

  • Đối tượng kinh doanh: Tất cả các đối tượng có khả năng chi trả kinh tế;

  • Hình thức kinh doanh: phục vụ tại quán, mang đi

  • Diện tích: 200m2

Menu

  • Sữa tươi trân châu đường đen: 35.000đ/ly

  • Trà sữa truyền thống: 25.000đ/ly

  • Trà sữa hoàng kim: 30.000đ/ly

  • Trà sen tứ quý: 35.000đ/ ly

  • Trà vải: 35.000đ/ly

  • Cà phê: 20.000đ/ly

library(readxl)
## Warning: package 'readxl' was built under R version 4.3.1
MPNN <- read_excel("~/MPNN.xlsx")
View(MPNN)
MPNN
## # A tibble: 365 × 6
##    STTCDD  TSTT  TSHK  TSTQ    TV    CF
##     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1     26    16     8     8    21    12
##  2     30    17     9     9    15    15
##  3     22     9     8    18     4    12
##  4     26    15     7    16     6     9
##  5     17    17     4    10     8     3
##  6     15    22     9     4    11     3
##  7     28     2     6    19    13    13
##  8      7     6     3    17    22    10
##  9     12    20    10    11    26     9
## 10     26    14     2     3     6     9
## # ℹ 355 more rows

2 Bài tập về nhà tuần 3

2.1 Dữ kiệu nghiên cứu:

summary(MPNN)
##      STTCDD           TSTT            TSHK             TSTQ       
##  Min.   : 1.00   Min.   : 1.00   Min.   : 2.000   Min.   : 1.000  
##  1st Qu.: 8.00   1st Qu.: 6.00   1st Qu.: 4.000   1st Qu.: 4.000  
##  Median :16.00   Median :12.00   Median : 6.000   Median : 9.000  
##  Mean   :15.66   Mean   :12.47   Mean   : 6.375   Mean   : 9.389  
##  3rd Qu.:24.00   3rd Qu.:18.00   3rd Qu.: 9.000   3rd Qu.:14.000  
##  Max.   :30.00   Max.   :25.00   Max.   :11.000   Max.   :20.000  
##        TV              CF        
##  Min.   : 1.00   Min.   : 1.000  
##  1st Qu.: 8.00   1st Qu.: 5.000  
##  Median :15.00   Median : 8.000  
##  Mean   :15.25   Mean   : 7.918  
##  3rd Qu.:22.00   3rd Qu.:11.000  
##  Max.   :30.00   Max.   :15.000
sd(MPNN$STTCDD)
## [1] 8.861863

Biến STTCĐĐ có giá trị trung bình là 15.14 và độ lệch chuẩn là 8.576192

sd(MPNN$TSTT)
## [1] 7.122351

Biến TSTT có giá trị trung bình là 12.5 và độ lệch chuẩn là 7.18577

sd(MPNN$TSHK)
## [1] 2.889721

Biến TSHK có giá trị trung bình là 6.542 và độ lệch chuẩn là 2.768837

sd(MPNN$TSTQ)
## [1] 5.501437

Biến TSTQ có giá trị trung bình là 9.89 và độ lệch chuẩn là 5.562733

sd(MPNN$TV)
## [1] 8.38166

Biến TV có giá trị trung bình là 14.69 và độ lệch chuẩn là 8.330012

sd(MPNN$CF)
## [1] 4.165377

Biến CF có giá trị trung bình là 8.186 và độ lệch chuẩn là 4.40633

2.2 Xác định ngẫu nhiên phân phối chuẩn

  • Đồ thị phân phối số lượng sữa tươi trân châu đường đen
hist(MPNN$STTCDD)

Kiểm định phân phối chuẩn

Gỉa thuyết:

H0: STTCĐĐ theo phân phối chuẩn

H1: STTCĐĐ không theo phân phối chuẩn

LNG<- as.data.frame(MPNN$STTCDD)
shapiro.test(MPNN$STTCDD)
## 
##  Shapiro-Wilk normality test
## 
## data:  MPNN$STTCDD
## W = 0.94506, p-value = 2.159e-10

Vì p_value= 2.444e-09 < 5% nên bác bỏ giả thuyết HO chấp nhận H1, nghĩa là STTCĐĐ không

theo phân phối chuẩn

  • Đồ thị phân phối số lượng trà sữa truyền thống
hist(MPNN$TSTT)

Kiểm định phân phối chuẩn

Gỉa thuyết:

H0: TSTT theo phân phối chuẩn

H1: TSTT không theo phân phối chuẩn

LNG<- as.data.frame(MPNN$TSTT)
shapiro.test(MPNN$TSTT)
## 
##  Shapiro-Wilk normality test
## 
## data:  MPNN$TSTT
## W = 0.95152, p-value = 1.377e-09

Vì p_value= 1.4113e-09 < 5% nên bác bỏ giả thuyết HO chấp nhận H1, nghĩa là TSTT không

theo phân phối chuẩn

  • Đồ thị phân phối số lượng trà sữa hoàng kim
hist(MPNN$TSHK)

Kiểm định phân phối chuẩn

Gỉa thuyết:

H0: TSHK theo phân phối chuẩn

H1: TSHK không theo phân phối chuẩn

LNG<- as.data.frame(MPNN$TSHK)
shapiro.test(MPNN$TSHK)
## 
##  Shapiro-Wilk normality test
## 
## data:  MPNN$TSHK
## W = 0.93352, p-value = 1.087e-11

Vì p_value= 1.703e-10 < 5% nên bác bỏ giả thuyết HO chấp nhận H1, nghĩa là TSHK không

theo phân phối chuẩn

  • Đồ thị phân phối số lượng trà sen tứ quý
hist(MPNN$TSTQ)

Kiểm định phân phối chuẩn

Gỉa thuyết:

H0: TSTQ theo phân phối chuẩn

H1: TSTQ không theo phân phối chuẩn

LNG<- as.data.frame(MPNN$TSTQ)
shapiro.test(MPNN$TSTQ)
## 
##  Shapiro-Wilk normality test
## 
## data:  MPNN$TSTQ
## W = 0.94902, p-value = 6.619e-10

Vì p_value= 6.888e-09 < 5% nên bác bỏ giả thuyết HO chấp nhận H1, nghĩa là TSTQ không

theo phân phối chuẩn

  • Đồ thị phân phối số lượng trà vải
hist(MPNN$TV)

Kiểm định phân phối chuẩn

Gỉa thuyết:

H0: TV theo phân phối chuẩn

H1: TV không theo phân phối chuẩn

LNG<- as.data.frame(MPNN$TV)
shapiro.test(MPNN$TV)
## 
##  Shapiro-Wilk normality test
## 
## data:  MPNN$TV
## W = 0.96072, p-value = 2.558e-08

Vì p_value= 5.267e-09 < 5% nên bác bỏ giả thuyết HO chấp nhận H1, nghĩa là TV không

theo phân phối chuẩn

  • Đồ thị phân phối số lượng cà phê
hist(MPNN$CF)

Kiểm định phân phối chuẩn

Gỉa thuyết:

H0: CF theo phân phối chuẩn

H1: CF không theo phân phối chuẩn

LNG<- as.data.frame(MPNN$CF)
shapiro.test(MPNN$CF)
## 
##  Shapiro-Wilk normality test
## 
## data:  MPNN$CF
## W = 0.95637, p-value = 6.15e-09

Vì p_value= 6.88e-11 < 5% nên bác bỏ giả thuyết HO chấp nhận H1, nghĩa là CF không

theo phân phối chuẩn

3 Bài tập về nhà tuần 4

3.1 Xác định mô hình cho đối tượng

Doanh thu = Đơn giá*Số lượng

\[Doanhthu= ĐG*SL_{STTCDD} + ĐG*SL_{TSTT}+ĐG*SL_{TSHK} + ĐG*SL_{TSTQ} + ĐG*SL_{TV} +ĐG*SL_{CF}\]

Mô hình cụ thể như sau:

\[Doanhthu= 35.000*SL_{STTCDD} + 25.000*SL_{TSTT} + 30.000*SL_{TSHK} + 35.000*SL_{TSTQ} + 35.000*SL_{TV} +20.000*SL_{CF}\]

4 BÀI TẬP VỀ NHÀ TUẦN 5+6

4.1 Chạy mô hình với các phân phối khác nhau với các biến đầu vào.

4.1.1 Tính và ước lượng doanh thu

DT <- 35.000*(MPNN$STTCDD) + 25.000*(MPNN$TSTT) + 30.000*(MPNN$TSHK) + 35.000*(MPNN$TSTQ) + 35.000*(MPNN$TV) +20.000*(MPNN$CF)
summary(DT)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     590    1735    2065    2072    2445    3215

Biến doanh thu (DT) được tính trong ngày nằm khoảng [590;3215]

Dựa vào bảng thống kê mô tả, ước lượng doanh thu của quán như sau:

Doanh thu thấp sẽ dưới 2.065.000đ/ ngày

Doanh thu cao từ 2.065.000đ/ ngày

DTthap <- DT[DT <= 2065000]
DTcao <- DT[DT < 2065000]
table(cut(DT,breaks = 2))
## 
##      (587,1.9e+03] (1.9e+03,3.22e+03] 
##                136                229
table(cut(DT,2, labels = c('thap','cao')))
## 
## thap  cao 
##  136  229

Từ kết quả trên, Doanh thu của 365 ngày của quán Thái Phúc Tea gồm có 136 ngày doanh thu thấp và 229 ngày doanh thu cao.

library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.3.1
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.1

4.1.2 Kiểm định phân phối cho biến DT

# Kiểm định phân phối chuẩn
hist(DT, col="orange")

Đặt giả thuyết:

H0: biến DT có phân phối chuẩn

H1: biến DT không có phân phối chuẩn

shapiro.test(DT)
## 
##  Shapiro-Wilk normality test
## 
## data:  DT
## W = 0.99451, p-value = 0.2157

Vì p_value = 0.2157 > 0.05 nên chưa đủ cơ sở bác bỏ H0, nghĩa là biến DT có phân phối chuẩn

4.1.3 Mô phỏng phân phối chuẩn biến DT trong 10000 ngày tới

Vì DT theo phân phối chuẩn, nên tiến hành mô phỏng doanh thu trong 365 ngày tới.

sd(DT)
## [1] 507.9133
set.seed(123)
DT1 <- rnorm(n= 10000, mean= 2072 ,sd= 507) 
hist(DT1, main = "phân phối chuẩn biến doanh thu", xlab = "DT1", col = "darkblue")

ggqqplot(DT1,col="red")

summary(DT1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   122.4  1733.3  2066.4  2070.8  2413.4  4022.8

Doanh thu trong 10000 tới dao động trong khoảng [122.4;4022.8]

4.2 Nhận xét

DTthap1 <- DT1[DT1 <= 2070000]
DTcao1 <- DT1[DT1> 2070000]

table(cut(DT1,breaks = 2))
## 
##      (119,2.07e+03] (2.07e+03,4.03e+03] 
##                5048                4952
table(cut(DT1,2, labels = c('thap','cao')))
## 
## thap  cao 
## 5048 4952

Kết quả mô phỏng cho thấy 10000 ngày tới có 5048 ngày doanh thu thấp và 4952 ngày doanh thu cao. Kết quả này chủ quán kinh doanh phải xem xét để cân đối được doanh thu cao nhiều hơn để duy trì quán

LS0tDQp0aXRsZTogIlVudGl0bGVkIg0KYXV0aG9yOiAixJDhurduZyBIdeG7s25oIFRoYW5oIEjDsmEiDQpkYXRlOiAiMjAyMy0wNi0yNiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogbm8NCiAgICAgIGRmX3ByaW50OiBwYWdlZA0KICAgICAgaGlnaGxpZ2h0OiBrYXRlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgQsOgaSB04bqtcCB24buBIG5ow6AgdHXhuqduIDINCg0KQ2jhu41uIHbDoCBnaeG6o2kgdGjDrWNoIHbhu4EgxJHhu5FpIHTGsOG7o25nICggduG6pW4gxJHhu4EgKSBj4bqnbiBtw7QgcGjhu49uZyAoIGPDsyDDrXQgbmjhuqV0IDYgYmnhur9uIG5n4bqrdSAgIA0KDQpuaGnDqm4gxJHhuqd1IHbDoG8pDQoNCiMjIMSQ4buRaSB0xrDhu6NuZzogTcO0IHBo4buPbmcgbOG7o2kgbmh14bqtbiB0aMOhbmcgY+G7p2EgcXXDoW4gbsaw4bubYyBUaMOhaSBQaMO6YyANCg0KIyMgR2nhuqNpIHRow61jaDoNCg0KRG9hbmggdGh1ID0gU+G7kSBsxrDhu6NuZyAqIMSQxqFuIGdpw6ENCg0KVGjDtG5nIHRpbiB2w6AgZOG7ryBsaeG7h3UgduG7gSDEkcahbiBnacOhLHPhu5EgbMaw4bujbmcgY8OhYyBtw7NuIG7GsOG7m2MgYsOhbiByYSBow6BuZyBuZ8OgeSBj4bunYSBxdcOhbiB0cm9uZyAxIA0KDQpuxINtICg2IG3Ds24gduG7m2kgMzY1IHF1YW4gc8OhdCkuDQoNCi0gVMOqbiBj4butYSBow6BuZyA6IFRow6FpIFBow7pjIFRlYQ0KDQotIMSQ4buLYSBjaOG7iTogOTIgTmd1eeG7hW4gQ8O0bmcgVHLhu6ksIHBoxrDhu51uZyBU4buxIEFuLCBUUCBCdcO0biBNYSBUaHXhu5l0LCBU4buJbmggxJBhayBMYWsNCg0KLSBMxKluaCB24buxYyBraW5oIGRvYW5oOiDEgm4gdeG7kW5nDQoNCi0gxJDhu5FpIHTGsOG7o25nIGtpbmggZG9hbmg6IFThuqV0IGPhuqMgY8OhYyDEkeG7kWkgdMaw4bujbmcgY8OzIGto4bqjIG7Eg25nIGNoaSB0cuG6oyBraW5oIHThur87DQoNCi0gSMOsbmggdGjhu6ljIGtpbmggZG9hbmg6IHBo4bulYyB24bulIHThuqFpIHF1w6FuLCBtYW5nIMSRaQ0KDQotIERp4buHbiB0w61jaDogMjAwbTINCg0KTWVudQ0KDQotIFPhu69hIHTGsMahaSB0csOibiBjaMOidSDEkcaw4budbmcgxJFlbjogMzUuMDAwxJEvbHkNCg0KLSBUcsOgIHPhu69hIHRydXnhu4FuIHRo4buRbmc6IDI1LjAwMMSRL2x5DQoNCi0gVHLDoCBz4buvYSBob8Ogbmcga2ltOiAzMC4wMDDEkS9seQ0KDQotIFRyw6Agc2VuIHThu6kgcXXDvTogMzUuMDAwxJEvIGx5DQoNCi0gVHLDoCB24bqjaTogMzUuMDAwxJEvbHkNCg0KLSBDw6AgcGjDqjogMjAuMDAwxJEvbHkNCg0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHhsKQ0KTVBOTiA8LSByZWFkX2V4Y2VsKCJ+L01QTk4ueGxzeCIpDQpWaWV3KE1QTk4pDQpNUE5ODQpgYGANCiMgQsOgaSB04bqtcCB24buBIG5ow6AgdHXhuqduIDMNCg0KIyMgROG7ryBraeG7h3UgbmdoacOqbiBj4bupdToNCg0KYGBge3J9DQpzdW1tYXJ5KE1QTk4pDQpgYGANCmBgYHtyfQ0Kc2QoTVBOTiRTVFRDREQpDQpgYGANCkJp4bq/biBTVFRDxJDEkCBjw7MgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBsw6AgMTUuMTQgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGzDoCA4LjU3NjE5Mg0KDQpgYGB7cn0NCnNkKE1QTk4kVFNUVCkNCmBgYA0KQmnhur9uIFRTVFQgY8OzIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggbMOgIDEyLjUgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGzDoCA3LjE4NTc3DQoNCmBgYHtyfQ0Kc2QoTVBOTiRUU0hLKQ0KYGBgDQpCaeG6v24gVFNISyBjw7MgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBsw6AgNi41NDIgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGzDoCAyLjc2ODgzNw0KDQpgYGB7cn0NCnNkKE1QTk4kVFNUUSkNCmBgYA0KQmnhur9uIFRTVFEgY8OzIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmggbMOgIDkuODkgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGzDoCA1LjU2MjczMw0KDQpgYGB7cn0NCnNkKE1QTk4kVFYpDQpgYGANCkJp4bq/biBUViBjw7MgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBsw6AgMTQuNjkgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGzDoCA4LjMzMDAxMg0KDQpgYGB7cn0NCnNkKE1QTk4kQ0YpDQpgYGANCkJp4bq/biBDRiBjw7MgZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaCBsw6AgOC4xODYgdsOgIMSR4buZIGzhu4djaCBjaHXhuqluIGzDoCA0LjQwNjMzDQoNCiMjIFjDoWMgxJHhu4tuaCBuZ+G6q3Ugbmhpw6puIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCi0gxJDhu5MgdGjhu4sgcGjDom4gcGjhu5FpIHPhu5EgbMaw4bujbmcgc+G7r2EgdMawxqFpIHRyw6JuIGNow6J1IMSRxrDhu51uZyDEkWVuDQoNCmBgYHtyfQ0KaGlzdChNUE5OJFNUVENERCkNCmBgYA0KDQoNCktp4buDbSDEkeG7i25oIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCkfhu4lhIHRodXnhur90Og0KDQpIMDogU1RUQ8SQxJAgdGhlbyBwaMOibiBwaOG7kWkgY2h14bqpbiANCg0KSDE6IFNUVEPEkMSQIGtow7RuZyB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCmBgYHtyfQ0KTE5HPC0gYXMuZGF0YS5mcmFtZShNUE5OJFNUVENERCkNCnNoYXBpcm8udGVzdChNUE5OJFNUVENERCkNCmBgYA0KDQpWw6wgcF92YWx1ZT0gMi40NDRlLTA5IDwgNSUgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSE8gY2jhuqVwIG5o4bqtbiBIMSwgbmdoxKlhIGzDoCBTVFRDxJDEkCBraMO0bmcgDQoNCnRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KLSDEkOG7kyB0aOG7iyBwaMOibiBwaOG7kWkgc+G7kSBsxrDhu6NuZyB0csOgIHPhu69hIHRydXnhu4FuIHRo4buRbmcNCg0KYGBge3J9DQpoaXN0KE1QTk4kVFNUVCkNCmBgYA0KS2nhu4NtIMSR4buLbmggcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KR+G7iWEgdGh1eeG6v3Q6DQoNCkgwOiBUU1RUIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4gDQoNCkgxOiBUU1RUIGtow7RuZyB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCmBgYHtyfQ0KTE5HPC0gYXMuZGF0YS5mcmFtZShNUE5OJFRTVFQpDQpzaGFwaXJvLnRlc3QoTVBOTiRUU1RUKQ0KYGBgDQpWw6wgcF92YWx1ZT0gMS40MTEzZS0wOSA8IDUlIG7Dqm4gYsOhYyBi4buPIGdp4bqjIHRodXnhur90IEhPIGNo4bqlcCBuaOG6rW4gSDEsIG5naMSpYSBsw6AgVFNUVCBraMO0bmcgDQoNCnRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KLSDEkOG7kyB0aOG7iyBwaMOibiBwaOG7kWkgc+G7kSBsxrDhu6NuZyB0csOgIHPhu69hIGhvw6BuZyBraW0NCg0KYGBge3J9DQpoaXN0KE1QTk4kVFNISykNCmBgYA0KS2nhu4NtIMSR4buLbmggcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KR+G7iWEgdGh1eeG6v3Q6DQoNCkgwOiBUU0hLIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4gDQoNCkgxOiBUU0hLIGtow7RuZyB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCmBgYHtyfQ0KTE5HPC0gYXMuZGF0YS5mcmFtZShNUE5OJFRTSEspDQpzaGFwaXJvLnRlc3QoTVBOTiRUU0hLKQ0KYGBgDQpWw6wgcF92YWx1ZT0gMS43MDNlLTEwIDwgNSUgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSE8gY2jhuqVwIG5o4bqtbiBIMSwgbmdoxKlhIGzDoCBUU0hLIGtow7RuZyANCg0KdGhlbyBwaMOibiBwaOG7kWkgY2h14bqpbg0KDQotIMSQ4buTIHRo4buLIHBow6JuIHBo4buRaSBz4buRIGzGsOG7o25nIHRyw6Agc2VuIHThu6kgcXXDvQ0KDQpgYGB7cn0NCmhpc3QoTVBOTiRUU1RRKQ0KYGBgDQpLaeG7g20gxJHhu4tuaCBwaMOibiBwaOG7kWkgY2h14bqpbg0KDQpH4buJYSB0aHV54bq/dDoNCg0KSDA6IFRTVFEgdGhlbyBwaMOibiBwaOG7kWkgY2h14bqpbiANCg0KSDE6IFRTVFEga2jDtG5nIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KYGBge3J9DQpMTkc8LSBhcy5kYXRhLmZyYW1lKE1QTk4kVFNUUSkNCnNoYXBpcm8udGVzdChNUE5OJFRTVFEpDQpgYGANClbDrCBwX3ZhbHVlPSA2Ljg4OGUtMDkgPCA1JSBuw6puIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCBITyBjaOG6pXAgbmjhuq1uIEgxLCBuZ2jEqWEgbMOgIFRTVFEga2jDtG5nIA0KDQp0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCi0gxJDhu5MgdGjhu4sgcGjDom4gcGjhu5FpIHPhu5EgbMaw4bujbmcgdHLDoCB24bqjaQ0KDQpgYGB7cn0NCmhpc3QoTVBOTiRUVikNCmBgYA0KDQpLaeG7g20gxJHhu4tuaCBwaMOibiBwaOG7kWkgY2h14bqpbg0KDQpH4buJYSB0aHV54bq/dDoNCg0KSDA6IFRWIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4gDQoNCkgxOiBUViBraMO0bmcgdGhlbyBwaMOibiBwaOG7kWkgY2h14bqpbg0KDQpgYGB7cn0NCkxORzwtIGFzLmRhdGEuZnJhbWUoTVBOTiRUVikNCnNoYXBpcm8udGVzdChNUE5OJFRWKQ0KYGBgDQpWw6wgcF92YWx1ZT0gNS4yNjdlLTA5IDwgNSUgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSE8gY2jhuqVwIG5o4bqtbiBIMSwgbmdoxKlhIGzDoCBUViBraMO0bmcgDQoNCnRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KLSDEkOG7kyB0aOG7iyBwaMOibiBwaOG7kWkgc+G7kSBsxrDhu6NuZyBjw6AgcGjDqg0KDQpgYGB7cn0NCmhpc3QoTVBOTiRDRikNCmBgYA0KS2nhu4NtIMSR4buLbmggcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KR+G7iWEgdGh1eeG6v3Q6DQoNCkgwOiBDRiB0aGVvIHBow6JuIHBo4buRaSBjaHXhuqluIA0KDQpIMTogQ0Yga2jDtG5nIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KYGBge3J9DQpMTkc8LSBhcy5kYXRhLmZyYW1lKE1QTk4kQ0YpDQpzaGFwaXJvLnRlc3QoTVBOTiRDRikNCmBgYA0KVsOsIHBfdmFsdWU9IDYuODhlLTExIDwgNSUgbsOqbiBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgSE8gY2jhuqVwIG5o4bqtbiBIMSwgbmdoxKlhIGzDoCBDRiBraMO0bmcgDQoNCnRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KIyBCw6BpIHThuq1wIHbhu4EgbmjDoCB0deG6p24gNA0KDQojIyBYw6FjIMSR4buLbmggbcO0IGjDrG5oIGNobyDEkeG7kWkgdMaw4bujbmcNCg0KRG9hbmggdGh1ID0gxJDGoW4gZ2nDoSpT4buRIGzGsOG7o25nDQoNCiQkRG9hbmh0aHU9IMSQRypTTF97U1RUQ0REfSArIMSQRypTTF97VFNUVH0rxJBHKlNMX3tUU0hLfSArIMSQRypTTF97VFNUUX0gKyDEkEcqU0xfe1RWfSArxJBHKlNMX3tDRn0kJA0KIA0KIA0KTcO0IGjDrG5oIGPhu6UgdGjhu4MgbmjGsCBzYXU6DQoNCiQkRG9hbmh0aHU9IDM1LjAwMCpTTF97U1RUQ0REfSArIDI1LjAwMCpTTF97VFNUVH0gKyAzMC4wMDAqU0xfe1RTSEt9ICsgMzUuMDAwKlNMX3tUU1RRfSArIDM1LjAwMCpTTF97VFZ9ICsyMC4wMDAqU0xfe0NGfSQkDQoNCiMgQsOASSBU4bqsUCBW4buAIE5Iw4AgVFXhuqZOIDUrNg0KDQojIyBDaOG6oXkgbcO0IGjDrG5oIHbhu5tpIGPDoWMgcGjDom4gcGjhu5FpIGtow6FjIG5oYXUgduG7m2kgY8OhYyBiaeG6v24gxJHhuqd1IHbDoG8uDQoNCiMjIyBUw61uaCB2w6AgxrDhu5tjIGzGsOG7o25nIGRvYW5oIHRodQ0KDQpgYGB7cn0NCkRUIDwtIDM1LjAwMCooTVBOTiRTVFRDREQpICsgMjUuMDAwKihNUE5OJFRTVFQpICsgMzAuMDAwKihNUE5OJFRTSEspICsgMzUuMDAwKihNUE5OJFRTVFEpICsgMzUuMDAwKihNUE5OJFRWKSArMjAuMDAwKihNUE5OJENGKQ0Kc3VtbWFyeShEVCkNCmBgYA0KQmnhur9uIGRvYW5oIHRodSAoRFQpIMSRxrDhu6NjIHTDrW5oIHRyb25nIG5nw6B5IG7hurFtIGtob+G6o25nIFs1OTA7MzIxNV0NCg0KROG7sWEgdsOgbyBi4bqjbmcgdGjhu5FuZyBrw6ogbcO0IHThuqMsICDGsOG7m2MgbMaw4bujbmcgZG9hbmggdGh1IGPhu6dhIHF1w6FuIG5oxrAgc2F1Og0KDQpEb2FuaCB0aHUgdGjhuqVwIHPhur0gZMaw4bubaSAyLjA2NS4wMDDEkS8gbmfDoHkNCg0KRG9hbmggdGh1IGNhbyB04burIDIuMDY1LjAwMMSRLyBuZ8OgeQ0KDQpgYGB7cn0NCkRUdGhhcCA8LSBEVFtEVCA8PSAyMDY1MDAwXQ0KRFRjYW8gPC0gRFRbRFQgPCAyMDY1MDAwXQ0KdGFibGUoY3V0KERULGJyZWFrcyA9IDIpKQ0KYGBgDQpgYGB7cn0NCnRhYmxlKGN1dChEVCwyLCBsYWJlbHMgPSBjKCd0aGFwJywnY2FvJykpKQ0KYGBgDQoNClThu6sga+G6v3QgcXXhuqMgdHLDqm4sIERvYW5oIHRodSBj4bunYSAzNjUgbmfDoHkgY+G7p2EgcXXDoW4gVGjDoWkgUGjDumMgVGVhIGfhu5NtIGPDsyAxMzYgbmfDoHkgZG9hbmggdGh1IHRo4bqlcCB2w6AgMjI5IG5nw6B5IGRvYW5oIHRodSBjYW8uDQoNCmBgYHtyfQ0KbGlicmFyeShnZ3B1YnIpDQpgYGANCg0KDQojIyMgS2nhu4NtIMSR4buLbmggcGjDom4gcGjhu5FpIGNobyBiaeG6v24gRFQNCg0KYGBge3J9DQojIEtp4buDbSDEkeG7i25oIHBow6JuIHBo4buRaSBjaHXhuqluDQpoaXN0KERULCBjb2w9Im9yYW5nZSIpDQoNCmBgYA0KxJDhurd0IGdp4bqjIHRodXnhur90Og0KDQpIMDogYmnhur9uIERUIGPDsyBwaMOibiBwaOG7kWkgY2h14bqpbg0KDQpIMTogYmnhur9uIERUIGtow7RuZyBjw7MgcGjDom4gcGjhu5FpIGNodeG6qW4NCg0KYGBge3J9DQpzaGFwaXJvLnRlc3QoRFQpDQpgYGANClbDrCBwX3ZhbHVlID0gMC4yMTU3ID4gMC4wNSBuw6puIGNoxrBhIMSR4bunIGPGoSBz4bufIGLDoWMgYuG7jyBIMCwgbmdoxKlhIGzDoCBiaeG6v24gRFQgY8OzIHBow6JuIHBo4buRaSBjaHXhuqluDQoNCiMjIyBNw7QgcGjhu49uZyBwaMOibiBwaOG7kWkgY2h14bqpbiBiaeG6v24gRFQgdHJvbmcgMTAwMDAgbmfDoHkgdOG7m2kNCg0KVsOsIERUIHRoZW8gcGjDom4gcGjhu5FpIGNodeG6qW4sIG7Dqm4gIHRp4bq/biBow6BuaCBtw7QgcGjhu49uZyBkb2FuaCB0aHUgdHJvbmcgMzY1IG5nw6B5IHThu5tpLg0KDQpgYGB7cn0NCnNkKERUKQ0KYGBgDQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTIzKQ0KRFQxIDwtIHJub3JtKG49IDEwMDAwLCBtZWFuPSAyMDcyICxzZD0gNTA3KSANCmhpc3QoRFQxLCBtYWluID0gInBow6JuIHBo4buRaSBjaHXhuqluIGJp4bq/biBkb2FuaCB0aHUiLCB4bGFiID0gIkRUMSIsIGNvbCA9ICJkYXJrYmx1ZSIpDQpgYGANCmBgYHtyfQ0KZ2dxcXBsb3QoRFQxLGNvbD0icmVkIikNCmBgYA0KDQoNCmBgYHtyfQ0Kc3VtbWFyeShEVDEpDQpgYGANCg0KRG9hbmggdGh1IHRyb25nIDEwMDAwIHThu5tpIGRhbyDEkeG7mW5nIHRyb25nIGtob+G6o25nIFsxMjIuNDs0MDIyLjhdDQoNCiMjIE5o4bqtbiB4w6l0DQoNCmBgYHtyfQ0KRFR0aGFwMSA8LSBEVDFbRFQxIDw9IDIwNzAwMDBdDQpEVGNhbzEgPC0gRFQxW0RUMT4gMjA3MDAwMF0NCg0KdGFibGUoY3V0KERUMSxicmVha3MgPSAyKSkNCmBgYA0KYGBge3J9DQp0YWJsZShjdXQoRFQxLDIsIGxhYmVscyA9IGMoJ3RoYXAnLCdjYW8nKSkpDQpgYGANCkvhur90IHF14bqjIG3DtCBwaOG7j25nIGNobyB0aOG6pXkgMTAwMDAgbmfDoHkgdOG7m2kgY8OzIDUwNDggbmfDoHkgZG9hbmggdGh1IHRo4bqlcCB2w6AgNDk1MiBuZ8OgeSBkb2FuaCB0aHUgY2FvLiBL4bq/dCBxdeG6oyBuw6B5IGNo4bunIHF1w6FuIGtpbmggZG9hbmggcGjhuqNpIHhlbSB4w6l0IMSR4buDIGPDom4gxJHhu5FpIMSRxrDhu6NjIGRvYW5oIHRodSBjYW8gbmhp4buBdSBoxqFuIMSR4buDIGR1eSB0csOsIHF1w6FuDQoNCg0KDQoNCg0KDQo=