## Package LibPath Version Priority Depends Imports LinkingTo Suggests
## Enhances License License_is_FOSS License_restricts_use OS_type Archs
## MD5sum NeedsCompilation Built
## # A tibble: 6 × 10
## Date VCB MBB BID CTG SHB ACB STB EIB `VN-INDEX`
## <dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2024-12-31 00:00:00 91200 21826 37550 37800 10250 25800 36900 19300 1267.
## 2 2024-12-30 00:00:00 92000 21565 38250 38900 10250 25400 37850 19300 1272.
## 3 2024-12-27 00:00:00 92200 21783 39150 38800 10300 25550 37400 19450 1275.
## 4 2024-12-26 00:00:00 92100 21652 39000 38200 10300 25550 37100 19250 1273.
## 5 2024-12-25 00:00:00 92400 21261 38650 38200 10300 25450 36250 19500 1274.
## 6 2024-12-24 00:00:00 92100 20783 38100 36200 10250 25000 34700 19600 1260.
## Package LibPath Version Priority Depends Imports LinkingTo Suggests
## Enhances License License_is_FOSS License_restricts_use OS_type Archs
## MD5sum NeedsCompilation Built
4.1. Giới thiệu chương
## $Giai_doan
## [1] "NA → NA"
##
## $So_thang
## [1] 120
##
## $Tan_suat
## [1] "Tháng"
##
## $Thi_truong
## [1] "VN-INDEX"
##
## $Ma_ngan_hang
## [1] "VCB" "MBB" "BID" "CTG" "SHB" "ACB" "STB" "EIB"
4.2. Thống kê mô tả
Bảng 4.2. Thống kê mô tả lợi suất tháng (đầy đủ)
ACB |
119 |
1.81% |
8.29% |
-23.74% |
-17.11% |
-11.74% |
-2.16% |
1.38% |
5.42% |
17.75% |
23.41% |
32.76% |
0.71% |
0.3712314 |
2.0205911 |
0.9576122 |
0.0008670 |
BID |
119 |
1.59% |
10.62% |
-32.20% |
-23.10% |
-16.24% |
-5.23% |
1.15% |
9.21% |
16.89% |
30.52% |
34.12% |
-2.07% |
0.0637016 |
0.9289345 |
0.9828682 |
0.1348748 |
CTG |
119 |
1.49% |
10.17% |
-33.20% |
-22.46% |
-15.09% |
-4.31% |
1.47% |
6.46% |
17.59% |
29.39% |
30.15% |
2.78% |
0.1032437 |
1.2882661 |
0.9768578 |
0.0377783 |
EIB |
119 |
0.98% |
10.36% |
-40.54% |
-28.84% |
-13.05% |
-4.59% |
0.71% |
6.23% |
19.72% |
23.42% |
36.57% |
0.31% |
-0.1369978 |
2.7898517 |
0.9535348 |
0.0004219 |
MBB |
119 |
1.72% |
9.00% |
-33.58% |
-23.30% |
-12.44% |
-2.60% |
1.07% |
6.36% |
16.73% |
24.14% |
25.59% |
0.51% |
-0.3236355 |
1.9047846 |
0.9670056 |
0.0050653 |
SHB |
119 |
1.46% |
13.16% |
-35.45% |
-28.92% |
-13.74% |
-4.83% |
-0.61% |
5.69% |
21.36% |
43.83% |
71.23% |
-1.24% |
1.6201155 |
7.0700566 |
0.8639273 |
0.0000000 |
STB |
119 |
1.41% |
11.27% |
-37.07% |
-21.19% |
-14.99% |
-5.22% |
0.00% |
8.40% |
20.72% |
26.38% |
41.42% |
-1.23% |
0.2615043 |
1.3986608 |
0.9780887 |
0.0489955 |
VCB |
119 |
1.66% |
8.16% |
-24.76% |
-16.43% |
-10.83% |
-2.60% |
0.80% |
6.45% |
14.90% |
22.11% |
25.29% |
-1.17% |
0.0790500 |
0.7964677 |
0.9787507 |
0.0563724 |
VN-INDEX |
120 |
0.36% |
7.84% |
-57.02% |
-22.37% |
-9.24% |
-1.47% |
1.27% |
3.74% |
10.34% |
13.66% |
16.09% |
1.53% |
-3.4797740 |
22.9171310 |
0.7479496 |
0.0000000 |
4.3. Ước lượng Camp
Bảng 4.3. Ước lượng CAPM: beta, alpha, R² và p-value
ACB |
0.0104 |
0.8750 |
0.0888972 |
0.0000000 |
0.3770 |
0.3717 |
BID |
0.0058 |
1.2815 |
0.4051925 |
0.0000000 |
0.4928 |
0.4885 |
CTG |
0.0049 |
1.2873 |
0.4450955 |
0.0000000 |
0.5424 |
0.5385 |
EIB |
0.0040 |
0.5260 |
0.6643711 |
0.0010985 |
0.0874 |
0.0796 |
MBB |
0.0076 |
1.1896 |
0.1529214 |
0.0000000 |
0.5925 |
0.5890 |
SHB |
0.0091 |
0.4681 |
0.4458490 |
0.0239065 |
0.0428 |
0.0347 |
STB |
0.0044 |
1.2212 |
0.5901204 |
0.0000000 |
0.3978 |
0.3926 |
VCB |
0.0079 |
1.0464 |
0.1185249 |
0.0000000 |
0.5564 |
0.5526 |
Công thức tổng quát \[
r_{i,t}-r_{f,t}=\alpha_i+\beta_i\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{i,t}.
\]
Cụ thể \[
\begin{aligned}
\text{ACB:}\quad &
r_{\mathrm{ACB},t}-r_{f,t}=0.0104+0.8750\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{ACB},t},\\
\text{BID:}\quad &
r_{\mathrm{BID},t}-r_{f,t}=0.0058+1.2815\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{BID},t},\\
\text{CTG:}\quad &
r_{\mathrm{CTG},t}-r_{f,t}=0.0049+1.2873\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{CTG},t},\\
\text{EIB:}\quad &
r_{\mathrm{EIB},t}-r_{f,t}=0.0040+0.5260\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{EIB},t},\\
\text{MBB:}\quad &
r_{\mathrm{MBB},t}-r_{f,t}=0.0076+1.1896\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{MBB},t},\\
\text{SHB:}\quad &
r_{\mathrm{SHB},t}-r_{f,t}=0.0091+0.4681\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{SHB},t},\\
\text{STB:}\quad &
r_{\mathrm{STB},t}-r_{f,t}=0.0044+1.2212\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{STB},t},\\
\text{VCB:}\quad &
r_{\mathrm{VCB},t}-r_{f,t}=0.0079+1.0464\,\big(r_{M,t}-r_{f,t}\big)+\varepsilon_{\mathrm{VCB},t}.
\end{aligned}
\]
4.4. Lợi suất kỳ vọng CAPM & phân loại định giá
Bảng 4.4. Lợi suất kỳ vọng theo CAPM & phân loại định
giá
ACB |
0.8750290 |
0.0103877 |
0.3770026 |
1.81% |
0.35% |
Undervalued (α > 0) |
BID |
1.2814697 |
0.0058458 |
0.4928495 |
1.59% |
0.38% |
Undervalued (α > 0) |
CTG |
1.2873106 |
0.0048765 |
0.5424456 |
1.49% |
0.38% |
Undervalued (α > 0) |
EIB |
0.5260171 |
0.0039804 |
0.0873876 |
0.98% |
0.33% |
Undervalued (α > 0) |
MBB |
1.1896159 |
0.0076403 |
0.5925028 |
1.72% |
0.38% |
Undervalued (α > 0) |
SHB |
0.4681216 |
0.0091110 |
0.0428429 |
1.46% |
0.32% |
Undervalued (α > 0) |
STB |
1.2211863 |
0.0043691 |
0.3977656 |
1.41% |
0.38% |
Undervalued (α > 0) |
VCB |
1.0464024 |
0.0079091 |
0.5564065 |
1.66% |
0.37% |
Undervalued (α > 0) |


LS0tCnRpdGxlOiAiVMOgaSBjaMOtbmggMiIKYXV0aG9yOiAiUGjhuqFtIFh1w6JuIEhvYW4gIgpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclSDolTTolUywgJWQgLSAlbSAtICVZJylgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGNvZGVfZG93bmxvYWQ6IHllcwogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jOiB0cnVlCiAgd29yZF9kb2N1bWVudDoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2RlcHRoOiAnNCcKICBwZGZfZG9jdW1lbnQ6CiAgICBsYXRleF9lbmdpbmU6IHhlbGF0ZXgKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KAoJZWNobyA9IEZBTFNFLAoJbWVzc2FnZSA9IEZBTFNFLAoJd2FybmluZyA9IEZBTFNFCikKYGBgCgo8c3R5bGU+CmJvZHkgewogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDE2cHg7CiAgdGV4dC1hbGlnbjoganVzdGlmeTsKICBsaW5lLWhlaWdodDogMS41Owp9CmgyIHsKICBjb2xvcjogcmVkOwp9CmgzIHsKICBjb2xvcjogZGFya2JsdWU7Cn0KPC9zdHlsZT4KCmBgYHtyfQppbnN0YWxsZWQucGFja2FnZXMoInhsc3giKQpsaWJyYXJ5KG9wZW54bHN4KQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShEVCkKbGlicmFyeShwYW5kZXIpCmxpYnJhcnkocmVhZHIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShkcGx5cikKbGlicmFyeShza2ltcikKbGlicmFyeShwc3ljaCkKbGlicmFyeShmb3JtYXR0YWJsZSkKbGlicmFyeShodG1sdG9vbHMpCmxpYnJhcnkoRGVzY1Rvb2xzKQpsaWJyYXJ5KGVwaXRvb2xzKQpsaWJyYXJ5KHBST0MpCmxpYnJhcnkoZ2dyZXBlbCkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKYGBge3J9CgojIDEuIMSQ4buNYyBmaWxlIEV4Y2VsCmRhdGEgPC0gcmVhZF9leGNlbCgiL1VzZXJzL3BoYW14dWFuaG9hbi9Eb2N1bWVudHMvVGllzILMiXUgbHVhzKPMgm4gL8SQacyjbmggZ2lhzIEgdGHMgGkgc2HMiW4gdGHMgGkgY2hpzIFuaCAyL0R1zJvMgyBsaWXMo8yCdS54bHN4IikKCmhlYWQoZGF0YSkKYGBgCgpgYGB7cn0KIyBQYWNrYWdlcyAmIHRoYW0gc+G7kQppbnN0YWxsZWQucGFja2FnZXMoInpvbyIpCmxpYnJhcnkoZHBseXIpOyBsaWJyYXJ5KHRpZHlyKTsgbGlicmFyeSh6b28pCmxpYnJhcnkoYnJvb20pOyBsaWJyYXJ5KG1vbWVudHMpOyBsaWJyYXJ5KHNjYWxlcyk7IGxpYnJhcnkoa25pdHIpCgojIEPhu5l0IHRo4buLIHRyxrDhu51uZyAmIGRhbmggc8OhY2ggbcOjCm1hcmtldF9jb2wgPC0gbmFtZXMoZGF0YSlbZ3JlcGwoIlZOLipJTkRFWCIsIG5hbWVzKGRhdGEpLCBpZ25vcmUuY2FzZSA9IFRSVUUpXVsxXQpzdG9waWZub3QoIWlzLm5hKG1hcmtldF9jb2wpKQp0aWNrZXJzIDwtIHNldGRpZmYobmFtZXMoZGF0YSksIGMoIkRhdGUiLCBtYXJrZXRfY29sLCAiUmYiLCAiUkYiLCAicmYiKSkKCiMgTuG6v3UgQ0jGr0EgY8OzIGNodeG7l2kgUmYgdGhlbyB0aMOhbmcgdHJvbmcgZOG7ryBsaeG7h3U6CnJmX2FubnVhbCA8LSAwLjAzNSAgICAgICAgICAgICAgICAgICAgICAgICMgY2jhu4luaCB04bqhaSDEkcOieSBu4bq/dSBtdeG7kW4KcmZfbW9udGhseV9jb25zdCA8LSAoMSArIHJmX2FubnVhbCleKDEvMTIpIC0gMQoKYGBgCgojIDQuMS4gR2nhu5tpIHRoaeG7h3UgY2jGsMahbmcKCmBgYHtyfQojIEdpw6EgY3Xhu5FpIHRow6FuZwpwcmljZXNfbSA8LSBkYXRhICU+JQogIGFycmFuZ2UoRGF0ZSkgJT4lCiAgbXV0YXRlKHltID0gYXMueWVhcm1vbihEYXRlKSkgJT4lCiAgZ3JvdXBfYnkoeW0pICU+JQogIHN1bW1hcmlzZShhY3Jvc3MoYWxsX29mKGModGlja2VycywgbWFya2V0X2NvbCkpLCB+IGRwbHlyOjpsYXN0KG5hLm9taXQoLngpKSksCiAgICAgICAgICAgIC5ncm91cHMgPSAiZHJvcCIpCgojIEzhu6NpIHN14bqldCB0aMOhbmcgKHNpbXBsZSkKcmV0c19tIDwtIHByaWNlc19tICU+JQogIGFycmFuZ2UoeW0pICU+JQogIG11dGF0ZShhY3Jvc3MoYWxsX29mKGModGlja2VycywgbWFya2V0X2NvbCkpLCB+IC54L2xhZygueCkgLSAxKSkgJT4lCiAgc2xpY2UoLTEpCgojIFRow7RuZyB0aW4gbeG6q3UgKGluIHJhIMSR4buDIGNow6huIHbDoG8gYsOhbyBjw6FvKQpzYW1wbGVfaW5mbyA8LSBsaXN0KAogIEdpYWlfZG9hbiA9IHBhc3RlMChhcy5jaGFyYWN0ZXIobWluKHByaWNlc19tJHltKSksICIg4oaSICIsIGFzLmNoYXJhY3RlcihtYXgocHJpY2VzX20keW0pKSksCiAgU29fdGhhbmcgID0gbnJvdyhyZXRzX20pLAogIFRhbl9zdWF0ICA9ICJUaMOhbmciLAogIFRoaV90cnVvbmc9IG1hcmtldF9jb2wsCiAgTWFfbmdhbl9oYW5nID0gdGlja2VycwopCnNhbXBsZV9pbmZvCgpgYGAKCgojIDQuMi4gVGjhu5FuZyBrw6ogbcO0IHThuqMKCmBgYHtyfQojIEhlbHBlcnM6IE1vZGUgY2hvIGJp4bq/biBsacOqbiB04bulYyAmIFNoYXBpcm8gYW4gdG/DoG4KbW9kZV9rZGUgPC0gZnVuY3Rpb24oeCl7CiAgeCA8LSBuYS5vbWl0KHgpOyBpZiAobGVuZ3RoKHgpIDwgMykgcmV0dXJuKE5BX3JlYWxfKQogIGQgPC0gZGVuc2l0eSh4KTsgZCR4W3doaWNoLm1heChkJHkpXQp9CnNoYXBpcm9fc2FmZSA8LSBmdW5jdGlvbih4KXsKICB4IDwtIG5hLm9taXQoeCkKICBpZiAobGVuZ3RoKHVuaXF1ZSh4KSkgPCAzIHx8IGxlbmd0aCh4KSA8IDMgfHwgbGVuZ3RoKHgpID4gNTAwMCkgcmV0dXJuKGMoVz1OQSxwPU5BKSkKICBzIDwtIHNoYXBpcm8udGVzdCh4KTsgYyhXPXVubmFtZShzJHN0YXRpc3RpYyksIHA9dW5uYW1lKHMkcC52YWx1ZSkpCn0KCmRlc2NfdGJsIDwtIHJldHNfbSAlPiUKICBzZWxlY3QoeW0sIGFsbF9vZihjKHRpY2tlcnMsIG1hcmtldF9jb2wpKSkgJT4lCiAgcGl2b3RfbG9uZ2VyKC15bSwgbmFtZXNfdG8gPSAiVmFyIiwgdmFsdWVzX3RvID0gInJldCIpICU+JQogIGdyb3VwX2J5KFZhcikgJT4lCiAgc3VtbWFyaXNlKAogICAgTiA9IHN1bSghaXMubmEocmV0KSksCiAgICBNZWFuID0gbWVhbihyZXQsIG5hLnJtPVRSVUUpLAogICAgU0QgICA9IHNkKHJldCwgICBuYS5ybT1UUlVFKSwKICAgIE1pbiAgPSBtaW4ocmV0LCAgbmEucm09VFJVRSksCiAgICBQMDEgID0gcXVhbnRpbGUocmV0LCAuMDEsIG5hLnJtPVRSVUUpLAogICAgUDA1ICA9IHF1YW50aWxlKHJldCwgLjA1LCBuYS5ybT1UUlVFKSwKICAgIFAyNSAgPSBxdWFudGlsZShyZXQsIC4yNSwgbmEucm09VFJVRSksCiAgICBNZWRpYW49cXVhbnRpbGUocmV0LCAuNTAsIG5hLnJtPVRSVUUpLAogICAgUDc1ICA9IHF1YW50aWxlKHJldCwgLjc1LCBuYS5ybT1UUlVFKSwKICAgIFA5NSAgPSBxdWFudGlsZShyZXQsIC45NSwgbmEucm09VFJVRSksCiAgICBQOTkgID0gcXVhbnRpbGUocmV0LCAuOTksIG5hLnJtPVRSVUUpLAogICAgTWF4ICA9IG1heChyZXQsICBuYS5ybT1UUlVFKSwKICAgIE1vZGUgPSBtb2RlX2tkZShyZXQpLAogICAgU2tldyA9IGlmZWxzZShOPj0zLCBtb21lbnRzOjpza2V3bmVzcyhyZXQsIG5hLnJtPVRSVUUpLCBOQV9yZWFsXyksCiAgICBLdXJ0b3Npc0UgPSBpZmVsc2UoTj49NCwgbW9tZW50czo6a3VydG9zaXMocmV0LCBuYS5ybT1UUlVFKSAtIDMsIE5BX3JlYWxfKSwKICAgIFNoYXBpcm9XICA9IHtzaCA8LSBzaGFwaXJvX3NhZmUocmV0KTsgc2hbIlciXX0sCiAgICBTaGFwaXJvX3AgPSB7c2ggPC0gc2hhcGlyb19zYWZlKHJldCk7IHNoWyJwIl19LAogICAgLmdyb3VwcyA9ICJkcm9wIgogICkgJT4lIGFycmFuZ2UoVmFyKQoKIyBC4bqjbmcgdHLDrG5oIGLDoHkgKMSR4buLbmggZOG6oW5nICUgY2hvIGPDoWMgdOG7iSBzdeG6pXQpCmRlc2NfZm10IDwtIGRlc2NfdGJsICU+JQogIG11dGF0ZShhY3Jvc3MoYyhNZWFuLFNELE1pbixQMDEsUDA1LFAyNSxNZWRpYW4sUDc1LFA5NSxQOTksTWF4LE1vZGUpLAogICAgICAgICAgICAgICAgfiBzY2FsZXM6OnBlcmNlbnQoLngsIGFjY3VyYWN5ID0gMC4wMSkpKQprbml0cjo6a2FibGUoCiAgZGVzY19mbXQsCiAgYWxpZ24gPSAibHJycnJycnJycnJycnJycnIiLAogIGNvbC5uYW1lcyA9IGMoIkJp4bq/biIsIk4iLCJNZWFuIiwiU0QiLCJNaW4iLCJQMDEiLCJQMDUiLCJQMjUiLCJNZWRpYW4iLAogICAgICAgICAgICAgICAgIlA3NSIsIlA5NSIsIlA5OSIsIk1heCIsIk1vZGUgKEtERSkiLCJTa2V3IiwiS3VydG9zaXMoZXhjZXNzKSIsIlciLCJwIiksCiAgY2FwdGlvbiA9ICJC4bqjbmcgNC4yLiBUaOG7kW5nIGvDqiBtw7QgdOG6oyBs4bujaSBzdeG6pXQgdGjDoW5nICjEkeG6p3kgxJHhu6cpIgopCgpgYGAKCmBgYHtyfQojIC0tLSBTTUwgcm9idXN0OiB04buxIHTDrW5oIGJldGEgJiBtZWFuIG7hur91IHRoaeG6v3UgLS0tCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyh7CiAgbGlicmFyeShkcGx5cik7IGxpYnJhcnkodGlkeXIpOyBsaWJyYXJ5KHpvbykKICBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KHNjYWxlcykKfSkKCiMgMCkgTmjhuq1uIGRp4buHbiBjw6FjIGPhu5l0IGPhuqduIHRoaeG6v3QKaWYgKCFleGlzdHMoIm1hcmtldF9jb2wiKSB8fCBpcy5uYShtYXJrZXRfY29sKSkgewogIG1hcmtldF9jb2wgPC0gbmFtZXMoZGF0YSlbZ3JlcGwoIlZOLipJTkRFWCIsIG5hbWVzKGRhdGEpLCBpZ25vcmUuY2FzZSA9IFRSVUUpXVsxXQp9CmlmICghZXhpc3RzKCJyZXRzX20iKSkgewogIGRhdGVfY29sIDwtIG5hbWVzKGRhdGEpW2dyZXBsKCJeKE5nw6B5fE5Hw4BZfERhdGV8REFURSkkIiwgbmFtZXMoZGF0YSkpXVsxXQogIHRpY2tlcnMgIDwtIHNldGRpZmYobmFtZXMoZGF0YSksIGMoZGF0ZV9jb2wsIG1hcmtldF9jb2wsICJSZiIsIlJGIiwicmYiKSkKICBwcmljZXNfbSA8LSBkYXRhICU+JQogICAgYXJyYW5nZSguZGF0YVtbZGF0ZV9jb2xdXSkgJT4lCiAgICBtdXRhdGUoeW0gPSB6b286OmFzLnllYXJtb24oLmRhdGFbW2RhdGVfY29sXV0pKSAlPiUKICAgIGdyb3VwX2J5KHltKSAlPiUKICAgIHN1bW1hcmlzZShhY3Jvc3MoYWxsX29mKGModGlja2VycywgbWFya2V0X2NvbCkpLAogICAgICAgICAgICAgICAgICAgICB+IGRwbHlyOjpsYXN0KG5hLm9taXQoLngpKSksIC5ncm91cHMgPSAiZHJvcCIpCiAgcmV0c19tIDwtIHByaWNlc19tICU+JQogICAgYXJyYW5nZSh5bSkgJT4lCiAgICBtdXRhdGUoYWNyb3NzKGFsbF9vZihjKHRpY2tlcnMsIG1hcmtldF9jb2wpKSwgfiAueC9sYWcoLngpIC0gMSkpICU+JQogICAgc2xpY2UoLTEpCn0KaWYgKCFleGlzdHMoInRpY2tlcnMiKSkgewogIGRhdGVfY29sIDwtIG5hbWVzKGRhdGEpW2dyZXBsKCJeKE5nw6B5fE5Hw4BZfERhdGV8REFURSkkIiwgbmFtZXMoZGF0YSkpXVsxXQogIHRpY2tlcnMgIDwtIHNldGRpZmYobmFtZXMoZGF0YSksIGMoZGF0ZV9jb2wsIG1hcmtldF9jb2wsICJSZiIsIlJGIiwicmYiKSkKfQoKIyAxKSBSZiB0aMOhbmcKaWYgKCJSZiIgJWluJSBuYW1lcyhyZXRzX20pKSB7CiAgcmZfbSA8LSByZXRzX20kUmYKfSBlbHNlIGlmICghZXhpc3RzKCJyZl9tIikpIHsKICByZl9hbm51YWwgPC0gMC4wMzUKICByZl9tIDwtIHJlcCgoMSArIHJmX2FubnVhbCleKDEvMTIpIC0gMSwgbnJvdyhyZXRzX20pKQp9CgojIDIpIEJldGEgdGhlbyBDQVBNIChPTFMgdOG7q25nIG3DoykgbuG6v3UgdGhp4bq/dSBjYXBtX3JlcwpSbV9leCA8LSByZXRzX21bW21hcmtldF9jb2xdXSAtIHJmX20KZ2V0X2JldGEgPC0gZnVuY3Rpb24oeV9leCwgeCkgY29lZihsbSh5X2V4IH4geCkpWzJdCmJldGFzIDwtIHNhcHBseSh0aWNrZXJzLCBmdW5jdGlvbih0ayl7CiAgeV9leCA8LSByZXRzX21bW3RrXV0gLSByZl9tCiAgZ2V0X2JldGEoeV9leCwgUm1fZXgpCn0pCmNhcG1fcmVzIDwtIHRpYmJsZShUaWNrZXIgPSB0aWNrZXJzLCBiZXRhID0gYXMubnVtZXJpYyhiZXRhcykpCgojIDMpIEzhu6NpIHN14bqldCBUQiB0aMOhbmcgdGjhu7FjIHThur8KbWVhbnMgPC0gY29sTWVhbnMocmV0c19tWywgdGlja2Vyc10sIG5hLnJtID0gVFJVRSkKcGxvdF9kZiA8LSBjYXBtX3JlcyAlPiUKICBsZWZ0X2pvaW4odGliYmxlKFRpY2tlciA9IHRpY2tlcnMsIE1lYW4gPSBhcy5udW1lcmljKG1lYW5zKSksIGJ5ID0gIlRpY2tlciIpCgojIDQpIFRoYW0gc+G7kSAmIMSRxrDhu51uZyBTTUwKcmZfdXNlZCAgICAgPC0gbWVhbihyZl9tLCAgbmEucm0gPSBUUlVFKQpta3RfcHJlbWl1bSA8LSBtZWFuKFJtX2V4LCBuYS5ybSA9IFRSVUUpCmJtaW4gPC0gbWluKHBsb3RfZGYkYmV0YSwgbmEucm0gPSBUUlVFKSAtIDAuMDUKYm1heCA8LSBtYXgocGxvdF9kZiRiZXRhLCBuYS5ybSA9IFRSVUUpICsgMC4wNQpzbWxfZGYgPC0gZGF0YS5mcmFtZShiZXRhID0gYyhibWluLCBibWF4KSwKICAgICAgICAgICAgICAgICAgICAgeSAgICA9IHJmX3VzZWQgKyBjKGJtaW4sIGJtYXgpICogbWt0X3ByZW1pdW0pCgp5bWluIDwtIG1pbihjKHBsb3RfZGYkTWVhbiwgc21sX2RmJHkpLCBuYS5ybSA9IFRSVUUpCnltYXggPC0gbWF4KGMocGxvdF9kZiRNZWFuLCBzbWxfZGYkeSksIG5hLnJtID0gVFJVRSkKCmBgYAoKCiMgNC4zLiDGr+G7m2MgbMaw4bujbmcgQ2FtcAoKYGBge3J9CiMgUmYgdGhlbyB0aMOhbmcgKGTDuW5nIGPhu5l0IFJmIG7hur91IMSRw6MgY8OzOyBuZ8aw4bujYyBs4bqhaSBkw7luZyB0aGFtIHPhu5Eg4bufIHBo4bqnbiBjaHXhuqluIGLhu4spCnJmX20gPC0gaWYgKCJSZiIgJWluJSBuYW1lcyhyZXRzX20pKSByZXRzX20kUmYgZWxzZSByZXAocmZfbW9udGhseV9jb25zdCwgbnJvdyhyZXRzX20pKQpSbV9leCA8LSByZXRzX21bW21hcmtldF9jb2xdXSAtIHJmX20KCmZpdF9vbmUgPC0gZnVuY3Rpb24oeV9leCwgcm1fZXgpewogIGZpdCA8LSBsbSh5X2V4IH4gcm1fZXgpCiAgdGliYmxlKGFscGhhID0gY29lZihmaXQpWzFdLAogICAgICAgICBiZXRhICA9IGNvZWYoZml0KVsyXSwKICAgICAgICAgcF9hbHBoYSA9IHN1bW1hcnkoZml0KSRjb2VmZmljaWVudHNbMSw0XSwKICAgICAgICAgcF9iZXRhICA9IHN1bW1hcnkoZml0KSRjb2VmZmljaWVudHNbMiw0XSwKICAgICAgICAgUjIgPSBzdW1tYXJ5KGZpdCkkci5zcXVhcmVkLAogICAgICAgICBBZGpfUjIgPSBzdW1tYXJ5KGZpdCkkYWRqLnIuc3F1YXJlZCkKfQoKY2FwbV9yZXMgPC0gcHVycnI6Om1hcF9kZnIodGlja2VycywgZnVuY3Rpb24odGspewogIHlfZXggPC0gcmV0c19tW1t0a11dIC0gcmZfbQogIG91dCA8LSBmaXRfb25lKHlfZXgsIFJtX2V4KTsgb3V0JFRpY2tlciA8LSB0azsgb3V0Cn0pICU+JSBzZWxlY3QoVGlja2VyLCBhbHBoYSwgYmV0YSwgcF9hbHBoYSwgcF9iZXRhLCBSMiwgQWRqX1IyKSAlPiUKICBhcnJhbmdlKFRpY2tlcikKCmtuaXRyOjprYWJsZSgKICBjYXBtX3JlcyAlPiUgbXV0YXRlKGFjcm9zcyhjKGFscGhhLGJldGEsUjIsQWRqX1IyKSwgfiByb3VuZCgueCwgNCkpKSwKICBjYXB0aW9uID0gIkLhuqNuZyA0LjMuIMav4bubYyBsxrDhu6NuZyBDQVBNOiBiZXRhLCBhbHBoYSwgUsKyIHbDoCBwLXZhbHVlIgopCgpgYGAKCgoqKkPDtG5nIHRo4bupYyB04buVbmcgcXXDoXQqKgpcWwpyX3tpLHR9LXJfe2YsdH09XGFscGhhX2krXGJldGFfaVxiaWcocl97TSx0fS1yX3tmLHR9XGJpZykrXHZhcmVwc2lsb25fe2ksdH0uClxdCgoqKkPhu6UgdGjhu4MqKgpcWwpcYmVnaW57YWxpZ25lZH0KXHRleHR7QUNCOn1ccXVhZCAmIHJfe1xtYXRocm17QUNCfSx0fS1yX3tmLHR9PTAuMDEwNCswLjg3NTBcLFxiaWcocl97TSx0fS1yX3tmLHR9XGJpZykrXHZhcmVwc2lsb25fe1xtYXRocm17QUNCfSx0fSxcXApcdGV4dHtCSUQ6fVxxdWFkICYgcl97XG1hdGhybXtCSUR9LHR9LXJfe2YsdH09MC4wMDU4KzEuMjgxNVwsXGJpZyhyX3tNLHR9LXJfe2YsdH1cYmlnKStcdmFyZXBzaWxvbl97XG1hdGhybXtCSUR9LHR9LFxcClx0ZXh0e0NURzp9XHF1YWQgJiByX3tcbWF0aHJte0NUR30sdH0tcl97Zix0fT0wLjAwNDkrMS4yODczXCxcYmlnKHJfe00sdH0tcl97Zix0fVxiaWcpK1x2YXJlcHNpbG9uX3tcbWF0aHJte0NUR30sdH0sXFwKXHRleHR7RUlCOn1ccXVhZCAmIHJfe1xtYXRocm17RUlCfSx0fS1yX3tmLHR9PTAuMDA0MCswLjUyNjBcLFxiaWcocl97TSx0fS1yX3tmLHR9XGJpZykrXHZhcmVwc2lsb25fe1xtYXRocm17RUlCfSx0fSxcXApcdGV4dHtNQkI6fVxxdWFkICYgcl97XG1hdGhybXtNQkJ9LHR9LXJfe2YsdH09MC4wMDc2KzEuMTg5NlwsXGJpZyhyX3tNLHR9LXJfe2YsdH1cYmlnKStcdmFyZXBzaWxvbl97XG1hdGhybXtNQkJ9LHR9LFxcClx0ZXh0e1NIQjp9XHF1YWQgJiByX3tcbWF0aHJte1NIQn0sdH0tcl97Zix0fT0wLjAwOTErMC40NjgxXCxcYmlnKHJfe00sdH0tcl97Zix0fVxiaWcpK1x2YXJlcHNpbG9uX3tcbWF0aHJte1NIQn0sdH0sXFwKXHRleHR7U1RCOn1ccXVhZCAmIHJfe1xtYXRocm17U1RCfSx0fS1yX3tmLHR9PTAuMDA0NCsxLjIyMTJcLFxiaWcocl97TSx0fS1yX3tmLHR9XGJpZykrXHZhcmVwc2lsb25fe1xtYXRocm17U1RCfSx0fSxcXApcdGV4dHtWQ0I6fVxxdWFkICYgcl97XG1hdGhybXtWQ0J9LHR9LXJfe2YsdH09MC4wMDc5KzEuMDQ2NFwsXGJpZyhyX3tNLHR9LXJfe2YsdH1cYmlnKStcdmFyZXBzaWxvbl97XG1hdGhybXtWQ0J9LHR9LgpcZW5ke2FsaWduZWR9ClxdCgoKCgojIDQuNC4gTOG7o2kgc3XhuqV0IGvhu7MgduG7jW5nIENBUE0gJiBwaMOibiBsb+G6oWkgxJHhu4tuaCBnacOhCgpgYGB7cn0KIyBQaOG6p24gYsO5IHLhu6dpIHJvIHRo4buLIHRyxrDhu51uZyAmIFJmIGLDrG5oIHF1w6JuIHRow6FuZwpta3RfcHJlbWl1bSA8LSBtZWFuKFJtX2V4LCBuYS5ybSA9IFRSVUUpICAjIEVbUm0gLSBSZl0KcmZfdXNlZCAgICAgPC0gbWVhbihyZl9tLCAgbmEucm0gPSBUUlVFKSAgIyBFW1JmXQoKIyBM4bujaSBzdeG6pXQgVEIgdGjhu7FjIHThur8gdGhlbyB0aMOhbmcgKGzhuqV5IHThu6sgNC4yLjIpCnJlYWxpemVkX21lYW4gPC0gZGVzY190YmwgJT4lIHNlbGVjdChWYXIsIE1lYW4pICU+JSBmaWx0ZXIoVmFyICVpbiUgdGlja2VycykKCmNhcG1fZXZhbCA8LSBjYXBtX3JlcyAlPiUKICBtdXRhdGUoRXhwX0NBUE0gPSByZl91c2VkICsgYmV0YSAqIG1rdF9wcmVtaXVtKSAlPiUKICBsZWZ0X2pvaW4ocmVhbGl6ZWRfbWVhbiwgYnkgPSBjKCJUaWNrZXIiID0gIlZhciIpKSAlPiUKICBtdXRhdGUoCiAgICBTaWduYWwgPSBjYXNlX3doZW4oCiAgICAgIE1lYW4gPiBFeHBfQ0FQTSB+ICJVbmRlcnZhbHVlZCAozrEgPiAwKSIsCiAgICAgIE1lYW4gPCBFeHBfQ0FQTSB+ICJPdmVydmFsdWVkICjOsSA8IDApIiwKICAgICAgVFJVRSAgICAgICAgICAgIH4gIkZhaXIiCiAgICApLAogICAgTWVhbiAgICAgPSBzY2FsZXM6OnBlcmNlbnQoTWVhbiwgICAgIDAuMDEpLAogICAgRXhwX0NBUE0gPSBzY2FsZXM6OnBlcmNlbnQoRXhwX0NBUE0sIDAuMDEpCiAgKSAlPiUKICBzZWxlY3QoVGlja2VyLCBiZXRhLCBhbHBoYSwgUjIsIGBMb2lfc3VhdF9UQl90aGFuZ2AgPSBNZWFuLAogICAgICAgICBgRV9SaV9DQVBNYCA9IEV4cF9DQVBNLCBTaWduYWwpCgprbml0cjo6a2FibGUoCiAgY2FwbV9ldmFsLAogIGNvbC5uYW1lcyA9IGMoIk3DoyIsIkJldGEiLCJBbHBoYSIsIlLCsiIsIkzhu6NpIHN14bqldCBUQiAodGjDoW5nKSIsIkVbUmldX0NBUE0iLCLEkOG7i25oIGdpw6EiKSwKICBjYXB0aW9uID0gIkLhuqNuZyA0LjQuIEzhu6NpIHN14bqldCBr4buzIHbhu41uZyB0aGVvIENBUE0gJiBwaMOibiBsb+G6oWkgxJHhu4tuaCBnacOhIgopCgpgYGAKCmBgYHtyfQojIELhuqNuZyBzYWkgbOG7h2NoIMSR4buLbmggZ2nDoSB0aGVvIHRow6FuZyAo4omIIGFscGhhKQpsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeShnZ3Bsb3QyKTsgbGlicmFyeShzY2FsZXMpCgpyZl91c2VkICAgICA8LSBtZWFuKHJmX20sICBuYS5ybSA9IFRSVUUpCm1rdF9wcmVtaXVtIDwtIG1lYW4ocmV0c19tW1ttYXJrZXRfY29sXV0gLSByZl9tLCBuYS5ybSA9IFRSVUUpCgptaXNfZGYgPC0gY2FwbV9yZXMgJT4lCiAgc2VsZWN0KFRpY2tlciwgYmV0YSkgJT4lCiAgbGVmdF9qb2luKGRlc2NfdGJsICU+JSBmaWx0ZXIoVmFyICVpbiUgdGlja2VycykgJT4lCiAgICAgICAgICAgICAgdHJhbnNtdXRlKFRpY2tlciA9IFZhciwgTWVhbiksIGJ5ID0gIlRpY2tlciIpICU+JQogIG11dGF0ZShFX0NBUE0gPSByZl91c2VkICsgYmV0YSpta3RfcHJlbWl1bSwKICAgICAgICAgTWlzcHJpY2luZyA9IE1lYW4gLSBFX0NBUE0pICU+JQogIGFycmFuZ2UoZGVzYyhNaXNwcmljaW5nKSkKCmdncGxvdChtaXNfZGYsIGFlcyh4ID0gcmVvcmRlcihUaWNrZXIsIE1pc3ByaWNpbmcpLCB5ID0gTWlzcHJpY2luZywgZmlsbCA9IE1pc3ByaWNpbmcgPiAwKSkgKwogIGdlb21fY29sKCkgKwogIGNvb3JkX2ZsaXAoKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGxhYmVsX3BlcmNlbnQoYWNjdXJhY3kgPSAwLjAxKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIlRSVUUiPSIjMmM3ZmI4IiwiRkFMU0UiPSIjZGUyZDI2IiksIGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJTYWkgbOG7h2NoIMSR4buLbmggZ2nDoSB0aGVvIENBUE0gKHRow6FuZykiLAogICAgICAgc3VidGl0bGUgPSAiTWlzcHJpY2luZyDiiYggyJIgLSAoyJJmICsgzrLCt01SUMyEKSAg4oaSIGTGsMahbmc6IM6xPjAiLAogICAgICAgeCA9IE5VTEwsIHkgPSAiTWlzcHJpY2luZyAo4omIIM6xKSIpICsKICB0aGVtZV9taW5pbWFsKGJhc2Vfc2l6ZSA9IDEyKQoKYGBgCgpgYGB7cn0KY3NfZGYgIDwtIG1pc19kZlssIGMoIlRpY2tlciIsImJldGEiLCJNZWFuIildCmdncGxvdChjc19kZiwgYWVzKGJldGEsIE1lYW4sIGxhYmVsID0gVGlja2VyKSkgKwogIGdlb21fcG9pbnQoc2l6ZT0zKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kPSJsbSIsIHNlPVRSVUUsIGNvbG9yPSJncmV5MzAiKSArCiAgZ2VvbV90ZXh0KHZqdXN0PS0wLjksIHNpemU9MykgKwogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBsYWJlbF9wZXJjZW50KDAuMDEpKSArCiAgbGFicyh0aXRsZT0iU01MIHRo4buxYyBuZ2hp4buHbSAoY3Jvc3Mtc2VjdGlvbikiLAogICAgICAgeD0iQmV0YSIsIHk9Ikzhu6NpIHN14bqldCBUQiB0aMOhbmciKSArCiAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxMikKCmBgYAoKCg==