ZGlmZiAtLWdpdCBhL2F1dG8vbWFrZSBiL2F1dG8vbWFrZQppbmRleCAzNDY3NzBhLi40YTJjZDBjIDEwMDY0NAotLS0gYS9hdXRvL21ha2UKKysrIGIvYXV0by9tYWtlCkBAIC0xNTAsMTAgKzE1MCwxMCBAQAogZG9uZQogCiBuZ3hfYWxsX29ianM9YGVjaG8gJG5neF9hbGxfc3JjcyBcCi0gICAgfCBzZWQgLWUgInMvXChbXiBdKlwuXCljcHAvJE5HWF9PQkpTXC9cMSRuZ3hfb2JqZXh0L2ciIFwKLSAgICAgICAgICAtZSAicy9cKFteIF0qXC5cKWNjLyROR1hfT0JKU1wvXDEkbmd4X29iamV4dC9nIiBcCi0gICAgICAgICAgLWUgInMvXChbXiBdKlwuXCljLyROR1hfT0JKU1wvXDEkbmd4X29iamV4dC9nIiBcCi0gICAgICAgICAgLWUgInMvXChbXiBdKlwuXClTLyROR1hfT0JKU1wvXDEkbmd4X29iamV4dC9nImAKKyAgICB8IHNlZCAtZSAicyNcKFteIF0qXC5cKWNwcCMkTkdYX09CSlNcL1wxJG5neF9vYmpleHQjZyIgXAorICAgICAgICAgIC1lICJzI1woW14gXSpcLlwpY2MjJE5HWF9PQkpTXC9cMSRuZ3hfb2JqZXh0I2ciIFwKKyAgICAgICAgICAtZSAicyNcKFteIF0qXC5cKWMjJE5HWF9PQkpTXC9cMSRuZ3hfb2JqZXh0I2ciIFwKKyAgICAgICAgICAtZSAicyNcKFteIF0qXC5cKVMjJE5HWF9PQkpTXC9cMSRuZ3hfb2JqZXh0I2ciYAogCiBuZ3hfbW9kdWxlc19jPWBlY2hvICROR1hfTU9EVUxFU19DIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciYAogCkBAIC0yMTMsMTAgKzIxMywxMCBAQAogZG8KICAgICBuZ3hfc3JjPWBlY2hvICRuZ3hfc3JjIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciYAogICAgIG5neF9vYmo9YGVjaG8gJG5neF9zcmMgXAotICAgICAgICB8IHNlZCAtZSAicy9eXCguKlwuXCljcHAkLyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0L2ciIFwKLSAgICAgICAgICAgICAgLWUgInMvXlwoLipcLlwpY2MkLyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0L2ciIFwKLSAgICAgICAgICAgICAgLWUgInMvXlwoLipcLlwpYyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyIgXAotICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXClTJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nImAKKyAgICAgICAgfCBzZWQgLWUgInMjXlwoLipcLlwpY3BwXFwkIyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0I2ciIFwKKyAgICAgICAgICAgICAgLWUgInMjXlwoLipcLlwpY2NcXCQjJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQjZyIgXAorICAgICAgICAgICAgICAtZSAicyNeXCguKlwuXCljXFwkIyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0I2ciIFwKKyAgICAgICAgICAgICAgLWUgInMjXlwoLipcLlwpU1xcJCMkbmd4X29ianNfZGlyXDEkbmd4X29iamV4dCNnImAKIAogICAgIGNhdCA8PCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiAkTkdYX01BS0VGSUxFCiAKQEAgLTI0MiwxMCArMjQyLDEwIEBACiAgICAgZG8KICAgICAgICAgbmd4X3NyYz1gZWNobyAkbmd4X3NyYyB8IHNlZCAtZSAicy9cLy8kbmd4X3JlZ2V4X2RpcnNlcC9nImAKICAgICAgICAgbmd4X29iaj1gZWNobyAkbmd4X3NyYyBcCi0gICAgICAgICAgICB8IHNlZCAtZSAicy9eXCguKlwuXCljcHAkLyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0L2ciIFwKLSAgICAgICAgICAgICAgICAgIC1lICJzL15cKC4qXC5cKWNjJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCi0gICAgICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXCljJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCi0gICAgICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXClTJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nImAKKyAgICAgICAgICAgIHwgc2VkIC1lICJzI15cKC4qXC5cKWNwcFxcJCMkbmd4X29ianNfZGlyXDEkbmd4X29iamV4dCNnIiBcCisgICAgICAgICAgICAgICAgICAtZSAicyNeXCguKlwuXCljY1xcJCMkbmd4X29ianNfZGlyXDEkbmd4X29iamV4dCNnIiBcCisgICAgICAgICAgICAgICAgICAtZSAicyNeXCguKlwuXCljXFwkIyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0I2ciIFwKKyAgICAgICAgICAgICAgICAgIC1lICJzI15cKC4qXC5cKVNcXCQjJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQjZyJgCiAKICAgICAgICAgY2F0IDw8IEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj4gJE5HWF9NQUtFRklMRQogCkBAIC0yNzIsMTAgKzI3MiwxMCBAQAogICAgIGRvCiAgICAgICAgIG5neF9zcmM9YGVjaG8gJG5neF9zcmMgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAgICAgICAgIG5neF9vYmo9YGVjaG8gJG5neF9zcmMgXAotICAgICAgICAgICAgfCBzZWQgLWUgInMvXlwoLipcLlwpY3BwJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCi0gICAgICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXCljYyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyIgXAotICAgICAgICAgICAgICAgICAgLWUgInMvXlwoLipcLlwpYyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyIgXAotICAgICAgICAgICAgICAgICAgLWUgInMvXlwoLipcLlwpUyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyJgCisgICAgICAgICAgICB8IHNlZCAtZSAicyNeXCguKlwuXCljcHBcXCQjJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQjZyIgXAorICAgICAgICAgICAgICAgICAgLWUgInMjXlwoLipcLlwpY2NcXCQjJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQjZyIgXAorICAgICAgICAgICAgICAgICAgLWUgInMjXlwoLipcLlwpY1xcJCMkbmd4X29ianNfZGlyXDEkbmd4X29iamV4dCNnIiBcCisgICAgICAgICAgICAgICAgICAtZSAicyNeXCguKlwuXClTXFwkIyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0I2ciYAogCiAgICAgICAgIGNhdCA8PCBFTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+ICROR1hfTUFLRUZJTEUKIApAQCAtMzAyLDEwICszMDIsMTAgQEAKICAgICAgICAgICAgIHwgc2VkIC1lICJzL1wvLyRuZ3hfcmVnZXhfZGlyc2VwL2ciYAogCiAgICAgICAgIG5neF9vYmo9YGVjaG8gJG5neF9vYmogXAotICAgICAgICAgICAgfCBzZWQgLWUgInMvXlwoLipcLlwpY3BwJC8kbmd4X29ianNfZGlyXDEkbmd4X29iamV4dC9nIiBcCi0gICAgICAgICAgICAgICAgICAtZSAicy9eXCguKlwuXCljYyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyIgXAotICAgICAgICAgICAgICAgICAgLWUgInMvXlwoLipcLlwpYyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyIgXAotICAgICAgICAgICAgICAgICAgLWUgInMvXlwoLipcLlwpUyQvJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQvZyJgCisgICAgICAgICAgICB8IHNlZCAtZSAicyNeXCguKlwuXCljcHBcXCQjJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQjZyIgXAorICAgICAgICAgICAgICAgICAgLWUgInMjXlwoLipcLlwpY2NcXCQjJG5neF9vYmpzX2RpclwxJG5neF9vYmpleHQjZyIgXAorICAgICAgICAgICAgICAgICAgLWUgInMjXlwoLipcLlwpY1xcJCMkbmd4X29ianNfZGlyXDEkbmd4X29iamV4dCNnIiBcCisgICAgICAgICAgICAgICAgICAtZSAicyNeXCguKlwuXClTXFwkIyRuZ3hfb2Jqc19kaXJcMSRuZ3hfb2JqZXh0I2ciYAogCiAgICAgICAgIG5neF9zcmM9YGVjaG8gJG5neF9zcmMgfCBzZWQgLWUgInMvXC8vJG5neF9yZWdleF9kaXJzZXAvZyJgCiAKZGlmZiAtLWdpdCBhL2F1dG8vdW5peCBiL2F1dG8vdW5peAppbmRleCAwZmUyOTc0Li4xY2YwZGMzIDEwMDc1NQotLS0gYS9hdXRvL3VuaXgKKysrIGIvYXV0by91bml4CkBAIC0yMSw3ICsyMSwxNCBAQAogCiAjIFBPU0lYIHR5cGVzCiAKLU5HWF9JTkNMVURFX0FVVE9fQ09ORklHX0g9IiNpbmNsdWRlIFwiLi4vJE5HWF9BVVRPX0NPTkZJR19IXCIiCitjYXNlICIkTkdYX0FVVE9fQ09ORklHX0giIGluCisgICAgLyopCisgICAgICAgIE5HWF9JTkNMVURFX0FVVE9fQ09ORklHX0g9IiNpbmNsdWRlIFwiJE5HWF9BVVRPX0NPTkZJR19IXCIiCisgICAgOzsKKyAgICAqKQorICAgICAgICBOR1hfSU5DTFVERV9BVVRPX0NPTkZJR19IPSIjaW5jbHVkZSBcIi4uLyROR1hfQVVUT19DT05GSUdfSFwiIgorICAgIDs7Citlc2FjCiAKIG5neF90eXBlPSJ1aW50NjRfdCI7IG5neF90eXBlcz0idV9pbnQ2NF90IjsgLiBhdXRvL3R5cGVzL3R5cGVkZWYKIApkaWZmIC0tZ2l0IGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAppbmRleCBkODk0MDMzLi5mYTRhYzhmIDEwMDY0NAotLS0gYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbAorKysgYi9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbApAQCAtOSw2ICs5LDczIEBACiA8dGl0bGUgbGFuZz0iZW4iPm5naW54IGNoYW5nZWxvZzwvdGl0bGU+CiAKIAorPGNoYW5nZXMgdmVyPSIwLjMuNTQiIGRhdGU9IjExLjA3LjIwMDYiPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorbmdpbngg1MXQxdLYINrB0MnT2dfBxdQg1yDMz8cgyc7Gz9LNwcPJwCDPINDPxNrB0NLP08HILgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgorbmdpbnggbm93IGxvZ3MgdGhlIHN1YnJlcXVlc3QgaW5mb3JtYXRpb24gdG8gdGhlIGVycm9yIGxvZy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorxMnSxcvUydfZIHByb3h5X25leHRfdXBzdHJlYW0sIGZhc3RjZ2lfbmV4dF91cHN0cmVhbSDJIG1lbWNhY2hlZF9uZXh0X3Vwc3RyZWFtCivQz8TExdLWydfBwNQg0MHSwc3F1NIgb2ZmLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlICJwcm94eV9uZXh0X3Vwc3RyZWFtIiwgImZhc3RjZ2lfbmV4dF91cHN0cmVhbSIsCithbmQgIm1lbWNhY2hlZF9uZXh0X3Vwc3RyZWFtIiBkaXJlY3RpdmVzIHN1cHBvcnQgdGhlICJvZmYiIHBhcmFtZXRlci4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorxMnSxcvUydfBIGRlYnVnX2Nvbm5lY3Rpb24g0M/ExMXS1snXwcXUINrB0MnT2CDBxNLF08/XINcgxs/SzcHUxSBDSURSLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlICJkZWJ1Z19jb25uZWN0aW9uIiBkaXJlY3RpdmUgc3VwcG9ydHMgdGhlIENJRFIgYWRkcmVzcyBmb3JtLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9DSySDQxdLFy8/EydLP18HOyckgz9TXxdTBINDSz8vTydLP18HOzs/HzyDTxdLXxdLBIMnMySDTxdLXxdLBIEZhc3RDR0kKK9cgVVRGLTggyczJIM7Bz8LP0s/UIM/U18XUIM3PxyDQxdLFxMHXwdTY09EgzsUg0M/Mzs/T1NjALgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgYSByZXNwb25zZSBvZiBwcm94aWVkIHNlcnZlciBvciBGYXN0Q0dJIHNlcnZlciB3YXMgY29udmVydGVkIGZyb20gVVRGLTgKK29yIGJhY2ssIHRoZW4gaXQgbWF5IGJlIHRyYW5zZmVycmVkIGluY29tcGxldGUuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgor0MXSxc3Fzs7B0SAkdXBzdHJlYW1fcmVzcG9uc2VfdGltZSDTz8TF0tbBzMEg19LFzdEg1M/M2MvPINDF0tfPx88KK8/C0sHdxc7J0SDLIMLcy8XOxNUuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgJHVwc3RyZWFtX3Jlc3BvbnNlX3RpbWUgdmFyaWFibGUgaGFkIHRoZSB0aW1lIG9mIHRoZSBmaXJzdAorcmVxdWVzdCB0byBhIGJhY2tlbmQgb25seS4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CituZ2lueCDOxSDTz8LJ0sHM09EgzsEg0MzB1MbP0s3FIGFtZDY0Oworz9vJwsvBINDP0dfJzMHT2CDXIDAuMy41My4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK25naW54IGNvdWxkIG5vdCBiZSBidWlsdCBvbiBhbWQ2NCBwbGF0Zm9ybTsKK2J1ZyBhcHBlYXJlZCBpbiAwLjMuNTMuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4zLjUzIiBkYXRlPSIwNy4wNy4yMDA2Ij4KIAogPGNoYW5nZSB0eXBlPSJjaGFuZ2UiPgpAQCAtNTUsNyArMTIyLDcgQEAKIDwvcGFyYT4KIDxwYXJhIGxhbmc9ImVuIj4KIGlmIGEgY2xpZW50IHdhcyBzdWNjZXNzZnVsbHkgYXV0aG9yaXplZCB1c2luZyAic2F0aXNmeV9hbnkgb24iLCB0aGVuIGFueXdheQotdGhlICJhY2Nlc3MgZm9yYmlkZGVuIGJ5IHJ1bGUiIG1lc3NhZ2Ugd2FzIHdyaXR0ZW4gaW4gdGhlIGxvZy4KK3RoZSBtZXNzYWdlICJhY2Nlc3MgZm9yYmlkZGVuIGJ5IHJ1bGUiIHdhcyB3cml0dGVuIGluIHRoZSBsb2cuCiA8L3BhcmE+CiA8L2NoYW5nZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmdpbnguaCBiL3NyYy9jb3JlL25naW54LmgKaW5kZXggNTA3NDZhZS4uMWIxMzVlNSAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmdpbnguaAorKysgYi9zcmMvY29yZS9uZ2lueC5oCkBAIC04LDcgKzgsNyBAQAogI2RlZmluZSBfTkdJTlhfSF9JTkNMVURFRF8KIAogCi0jZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjUzIgorI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMy41NCIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfT0xEUElEX0VYVCAgICAgIi5vbGRiaW4iCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbmd4X2V2ZW50LmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50LmMKaW5kZXggN2RjMTU2Mi4uN2Q0Y2RiYSAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L25neF9ldmVudC5jCisrKyBiL3NyYy9ldmVudC9uZ3hfZXZlbnQuYwpAQCAtMTAzNSwyMiArMTAzNSwzMCBAQAogI2lmIChOR1hfREVCVUcpCiAgICAgbmd4X2V2ZW50X2NvbmZfdCAgKmVjZiA9IGNvbmY7CiAKLSAgICBpbl9hZGRyX3QgICAgICAgKmFkZHI7Ci0gICAgbmd4X3N0cl90ICAgICAgICp2YWx1ZTsKLSAgICBzdHJ1Y3QgaG9zdGVudCAgKmg7CisgICAgbmd4X2V2ZW50X2RlYnVnX3QgICpkYzsKKyAgICBuZ3hfc3RyX3QgICAgICAgICAgKnZhbHVlOworICAgIHN0cnVjdCBob3N0ZW50ICAgICAqaDsKKyAgICBuZ3hfaW5ldF9jaWRyX3QgICAgIGluX2NpZHI7CiAKICAgICB2YWx1ZSA9IGNmLT5hcmdzLT5lbHRzOwogCiAgICAgLyogQUZfSU5FVCBvbmx5ICovCiAKLSAgICBhZGRyID0gbmd4X2FycmF5X3B1c2goJmVjZi0+ZGVidWdfY29ubmVjdGlvbik7Ci0gICAgaWYgKGFkZHIgPT0gTlVMTCkgeworICAgIGRjID0gbmd4X2FycmF5X3B1c2goJmVjZi0+ZGVidWdfY29ubmVjdGlvbik7CisgICAgaWYgKGRjID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5HWF9DT05GX0VSUk9SOwogICAgIH0KIAotICAgICphZGRyID0gaW5ldF9hZGRyKChjaGFyICopIHZhbHVlWzFdLmRhdGEpOworICAgIGRjLT5hZGRyID0gaW5ldF9hZGRyKChjaGFyICopIHZhbHVlWzFdLmRhdGEpOwogCi0gICAgaWYgKCphZGRyICE9IElOQUREUl9OT05FKSB7CisgICAgaWYgKGRjLT5hZGRyICE9IElOQUREUl9OT05FKSB7CisgICAgICAgIGRjLT5tYXNrID0gMHhmZmZmZmZmZjsKKyAgICAgICAgcmV0dXJuIE5HWF9PSzsKKyAgICB9CisKKyAgICBpZiAobmd4X3B0b2NpZHIoJnZhbHVlWzFdLCAmaW5fY2lkcikgPT0gTkdYX09LKSB7CisgICAgICAgIGRjLT5tYXNrID0gaW5fY2lkci5tYXNrOworICAgICAgICBkYy0+YWRkciA9IGluX2NpZHIuYWRkcjsKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKICAgICB9CiAKQEAgLTEwNjIsNyArMTA3MCw4IEBACiAgICAgICAgIHJldHVybiBOR1hfQ09ORl9FUlJPUjsKICAgICB9CiAKLSAgICAqYWRkciA9ICooaW5fYWRkcl90ICopKGgtPmhfYWRkcl9saXN0WzBdKTsKKyAgICBkYy0+bWFzayA9IDB4ZmZmZmZmZmY7CisgICAgZGMtPmFkZHIgPSAqKGluX2FkZHJfdCAqKShoLT5oX2FkZHJfbGlzdFswXSk7CiAKICNlbHNlCiAKQEAgLTEwOTYsNyArMTEwNSw3IEBACiAjaWYgKE5HWF9ERUJVRykKIAogICAgIGlmIChuZ3hfYXJyYXlfaW5pdCgmZWNmLT5kZWJ1Z19jb25uZWN0aW9uLCBjeWNsZS0+cG9vbCwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGluX2FkZHJfdCkpID09IE5HWF9FUlJPUikKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5neF9ldmVudF9kZWJ1Z190KSkgPT0gTkdYX0VSUk9SKQogICAgIHsKICAgICAgICAgcmV0dXJuIE5HWF9DT05GX0VSUk9SOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnQuaCBiL3NyYy9ldmVudC9uZ3hfZXZlbnQuaAppbmRleCAyNWY0MTg5Li5lZGNlZTRmIDEwMDY0NAotLS0gYS9zcmMvZXZlbnQvbmd4X2V2ZW50LmgKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudC5oCkBAIC0xODksNiArMTg5LDEyIEBACiAKIAogdHlwZWRlZiBzdHJ1Y3QgeworICAgIGluX2FkZHJfdCAgbWFzazsKKyAgICBpbl9hZGRyX3QgIGFkZHI7Cit9IG5neF9ldmVudF9kZWJ1Z190OworCisKK3R5cGVkZWYgc3RydWN0IHsKICAgICBuZ3hfaW50X3QgICgqYWRkKShuZ3hfZXZlbnRfdCAqZXYsIGludCBldmVudCwgdV9pbnQgZmxhZ3MpOwogICAgIG5neF9pbnRfdCAgKCpkZWwpKG5neF9ldmVudF90ICpldiwgaW50IGV2ZW50LCB1X2ludCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfYWNjZXB0LmMgYi9zcmMvZXZlbnQvbmd4X2V2ZW50X2FjY2VwdC5jCmluZGV4IGU0MWYwNGEuLmVmZDA5ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9ldmVudC9uZ3hfZXZlbnRfYWNjZXB0LmMKKysrIGIvc3JjL2V2ZW50L25neF9ldmVudF9hY2NlcHQuYwpAQCAtMTk4LDkgKzE5OCw2IEBACiAgICAgICAgIHdldi0+b3duX2xvY2sgPSAmYy0+bG9jazsKICNlbmRpZgogCi0gICAgICAgIG5neF9sb2dfZGVidWcyKE5HWF9MT0dfREVCVUdfRVZFTlQsIGxvZywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgImFjY2VwdDogZmQ6JWQgYzolZCIsIHMsIGMtPm51bWJlcik7Ci0KICAgICAgICAgaWYgKGxzLT5hZGRyX250b3ApIHsKICAgICAgICAgICAgIGMtPmFkZHJfdGV4dC5kYXRhID0gbmd4X3BhbGxvYyhjLT5wb29sLCBscy0+YWRkcl90ZXh0X21heF9sZW4pOwogICAgICAgICAgICAgaWYgKGMtPmFkZHJfdGV4dC5kYXRhID09IE5VTEwpIHsKQEAgLTIyMCwxNCArMjE3LDE0IEBACiAjaWYgKE5HWF9ERUJVRykKICAgICAgICAgewogCi0gICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgKmFkZHI7CiAgICAgICAgIGluX2FkZHJfdCAgICAgICAgICAgIGk7CisgICAgICAgIG5neF9ldmVudF9kZWJ1Z190ICAgKmRjOwogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gICpzaW47CiAKICAgICAgICAgc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSBzYTsKLSAgICAgICAgYWRkciA9IGVjZi0+ZGVidWdfY29ubmVjdGlvbi5lbHRzOworICAgICAgICBkYyA9IGVjZi0+ZGVidWdfY29ubmVjdGlvbi5lbHRzOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZWNmLT5kZWJ1Z19jb25uZWN0aW9uLm5lbHRzOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChhZGRyW2ldID09IHNpbi0+c2luX2FkZHIuc19hZGRyKSB7CisgICAgICAgICAgICBpZiAoKHNpbi0+c2luX2FkZHIuc19hZGRyICYgZGNbaV0ubWFzaykgPT0gZGNbaV0uYWRkcikgewogICAgICAgICAgICAgICAgIGxvZy0+bG9nX2xldmVsID0gTkdYX0xPR19ERUJVR19DT05ORUNUSU9OfE5HWF9MT0dfREVCVUdfQUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMjM2LDYgKzIzMyw5IEBACiAgICAgICAgIH0KICNlbmRpZgogCisgICAgICAgIG5neF9sb2dfZGVidWczKE5HWF9MT0dfREVCVUdfRVZFTlQsIGxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIiolZCBhY2NlcHQ6ICVWIGZkOiVkIiwgYy0+bnVtYmVyLCAmYy0+YWRkcl90ZXh0LCBzKTsKKwogICAgICAgICBpZiAobmd4X2FkZF9jb25uICYmIChuZ3hfZXZlbnRfZmxhZ3MgJiBOR1hfVVNFX0VQT0xMX0VWRU5UKSA9PSAwKSB7CiAgICAgICAgICAgICBpZiAobmd4X2FkZF9jb25uKGMpID09IE5HWF9FUlJPUikgewogICAgICAgICAgICAgICAgIG5neF9jbG9zZV9hY2NlcHRlZF9jb25uZWN0aW9uKGMpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaGFyc2V0X2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2hhcnNldF9maWx0ZXJfbW9kdWxlLmMKaW5kZXggMGJjMzFiYy4uZTNmZGI2NSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaGFyc2V0X2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2NoYXJzZXRfZmlsdGVyX21vZHVsZS5jCkBAIC00MzIsNiArNDMyLDE3IEBACiAgICAgICAgICAgICBiID0gY2wtPmJ1ZjsKIAogICAgICAgICAgICAgaWYgKG5neF9idWZfc2l6ZShiKSA9PSAwKSB7CisKKyAgICAgICAgICAgICAgICAqbGwgPSBuZ3hfYWxsb2NfY2hhaW5fbGluayhyLT5wb29sKTsKKyAgICAgICAgICAgICAgICBpZiAoKmxsID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAoKmxsKS0+YnVmID0gYjsKKyAgICAgICAgICAgICAgICAoKmxsKS0+bmV4dCA9IE5VTEw7CisKKyAgICAgICAgICAgICAgICBsbCA9ICYoKmxsKS0+bmV4dDsKKwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Zhc3RjZ2lfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Zhc3RjZ2lfbW9kdWxlLmMKaW5kZXggMTcyYTFhNy4uMjhmODYwZSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9mYXN0Y2dpX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfZmFzdGNnaV9tb2R1bGUuYwpAQCAtMTY4LDYgKzE2OCw3IEBACiAgICAgeyBuZ3hfc3RyaW5nKCJodHRwXzUwMCIpLCBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzUwMCB9LAogICAgIHsgbmd4X3N0cmluZygiaHR0cF81MDMiKSwgTkdYX0hUVFBfVVBTVFJFQU1fRlRfSFRUUF81MDMgfSwKICAgICB7IG5neF9zdHJpbmcoImh0dHBfNDA0IiksIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX0hUVFBfNDA0IH0sCisgICAgeyBuZ3hfc3RyaW5nKCJvZmYiKSwgTkdYX0hUVFBfVVBTVFJFQU1fRlRfT0ZGIH0sCiAgICAgeyBuZ3hfbnVsbF9zdHJpbmcsIDAgfQogfTsKIApAQCAtMTY5NCw2ICsxNjk1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfE5HWF9IVFRQX1VQU1RSRUFNX0ZUX0VSUk9SCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfE5HWF9IVFRQX1VQU1RSRUFNX0ZUX1RJTUVPVVQpKTsKIAorICAgIGlmIChjb25mLT51cHN0cmVhbS5uZXh0X3Vwc3RyZWFtICYgTkdYX0hUVFBfVVBTVFJFQU1fRlRfT0ZGKSB7CisgICAgICAgIGNvbmYtPnVwc3RyZWFtLm5leHRfdXBzdHJlYW0gPSBOR1hfQ09ORl9CSVRNQVNLX1NFVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfE5HWF9IVFRQX1VQU1RSRUFNX0ZUX09GRjsKKyAgICB9CisKICAgICBuZ3hfY29uZl9tZXJnZV91aW50X3ZhbHVlKGNvbmYtPnVwc3RyZWFtLm1heF9mYWlscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYtPnVwc3RyZWFtLm1heF9mYWlscywgMSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfbWVtY2FjaGVkX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9tZW1jYWNoZWRfbW9kdWxlLmMKaW5kZXggMDAwNjIyZC4uNDM3MzY5MiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9tZW1jYWNoZWRfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9tZW1jYWNoZWRfbW9kdWxlLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICB7IG5neF9zdHJpbmcoInRpbWVvdXQiKSwgTkdYX0hUVFBfVVBTVFJFQU1fRlRfVElNRU9VVCB9LAogICAgIHsgbmd4X3N0cmluZygiaW52YWxpZF9yZXNwb25zZSIpLCBOR1hfSFRUUF9VUFNUUkVBTV9GVF9JTlZBTElEX0hFQURFUiB9LAogICAgIHsgbmd4X3N0cmluZygibm90X2ZvdW5kIiksIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX0hUVFBfNDA0IH0sCisgICAgeyBuZ3hfc3RyaW5nKCJvZmYiKSwgTkdYX0hUVFBfVVBTVFJFQU1fRlRfT0ZGIH0sCiAgICAgeyBuZ3hfbnVsbF9zdHJpbmcsIDAgfQogfTsKIApAQCAtNTYwLDYgKzU2MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxOR1hfSFRUUF9VUFNUUkVBTV9GVF9FUlJPUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxOR1hfSFRUUF9VUFNUUkVBTV9GVF9USU1FT1VUKSk7CiAKKyAgICBpZiAoY29uZi0+dXBzdHJlYW0ubmV4dF91cHN0cmVhbSAmIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX09GRikgeworICAgICAgICBjb25mLT51cHN0cmVhbS5uZXh0X3Vwc3RyZWFtID0gTkdYX0NPTkZfQklUTUFTS19TRVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxOR1hfSFRUUF9VUFNUUkVBTV9GVF9PRkY7CisgICAgfQorCiAgICAgbmd4X2NvbmZfbWVyZ2VfdWludF92YWx1ZShjb25mLT51cHN0cmVhbS5tYXhfZmFpbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT51cHN0cmVhbS5tYXhfZmFpbHMsIDEpOwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYwppbmRleCBmZjViMTI5Li41OTk5ZjJlIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jCisrKyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMKQEAgLTEyNyw2ICsxMjcsNyBAQAogICAgIHsgbmd4X3N0cmluZygiaHR0cF81MDAiKSwgTkdYX0hUVFBfVVBTVFJFQU1fRlRfSFRUUF81MDAgfSwKICAgICB7IG5neF9zdHJpbmcoImh0dHBfNTAzIiksIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX0hUVFBfNTAzIH0sCiAgICAgeyBuZ3hfc3RyaW5nKCJodHRwXzQwNCIpLCBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzQwNCB9LAorICAgIHsgbmd4X3N0cmluZygib2ZmIiksIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX09GRiB9LAogICAgIHsgbmd4X251bGxfc3RyaW5nLCAwIH0KIH07CiAKQEAgLTE2NDgsNiArMTY0OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxOR1hfSFRUUF9VUFNUUkVBTV9GVF9FUlJPUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxOR1hfSFRUUF9VUFNUUkVBTV9GVF9USU1FT1VUKSk7CiAKKyAgICBpZiAoY29uZi0+dXBzdHJlYW0ubmV4dF91cHN0cmVhbSAmIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX09GRikgeworICAgICAgICBjb25mLT51cHN0cmVhbS5uZXh0X3Vwc3RyZWFtID0gTkdYX0NPTkZfQklUTUFTS19TRVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxOR1hfSFRUUF9VUFNUUkVBTV9GVF9PRkY7CisgICAgfQorCiAgICAgbmd4X2NvbmZfbWVyZ2VfdWludF92YWx1ZShjb25mLT51cHN0cmVhbS5tYXhfZmFpbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT51cHN0cmVhbS5tYXhfZmFpbHMsIDEpOwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cC5oIGIvc3JjL2h0dHAvbmd4X2h0dHAuaAppbmRleCBkZjc1ODcwLi44NjdmOGY3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cC5oCisrKyBiL3NyYy9odHRwL25neF9odHRwLmgKQEAgLTE5LDggKzE5LDggQEAKIAogdHlwZWRlZiBuZ3hfaW50X3QgKCpuZ3hfaHR0cF9oZWFkZXJfaGFuZGxlcl9wdCkobmd4X2h0dHBfcmVxdWVzdF90ICpyLAogICAgIG5neF90YWJsZV9lbHRfdCAqaCwgbmd4X3VpbnRfdCBvZmZzZXQpOwotdHlwZWRlZiB1X2NoYXIgKigqbmd4X2h0dHBfbG9nX2hhbmRsZXJfcHQpKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdV9jaGFyICpidWYsCi0gICAgc2l6ZV90IGxlbik7Cit0eXBlZGVmIHVfY2hhciAqKCpuZ3hfaHR0cF9sb2dfaGFuZGxlcl9wdCkobmd4X2h0dHBfcmVxdWVzdF90ICpyLAorICAgIG5neF9odHRwX3JlcXVlc3RfdCAqc3IsIHVfY2hhciAqYnVmLCBzaXplX3QgbGVuKTsKIAogCiAjaWYgKE5HWF9IVFRQX0NBQ0hFKQpAQCAtNDksNiArNDksNyBAQAogc3RydWN0IG5neF9odHRwX2xvZ19jdHhfcyB7CiAgICAgbmd4X3N0cl90ICAgICAgICAgICAqY2xpZW50OwogICAgIG5neF9odHRwX3JlcXVlc3RfdCAgKnJlcXVlc3Q7CisgICAgbmd4X2h0dHBfcmVxdWVzdF90ICAqY3VycmVudF9yZXF1ZXN0OwogfTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYwppbmRleCBiNDE3ZjQxLi5lZTBkM2NhIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKQEAgLTExNjIsNiArMTE2Miw3IEBACiB7CiAgICAgbmd4X2Nvbm5lY3Rpb25fdCAgICAgICAgICAgICAgKmM7CiAgICAgbmd4X2h0dHBfcmVxdWVzdF90ICAgICAgICAgICAgKnNyOworICAgIG5neF9odHRwX2xvZ19jdHhfdCAgICAgICAgICAgICpjdHg7CiAgICAgbmd4X2h0dHBfY29yZV9zcnZfY29uZl90ICAgICAgKmNzY2Y7CiAgICAgbmd4X2h0dHBfcG9zdHBvbmVkX3JlcXVlc3RfdCAgKnByLCAqcDsKIApAQCAtMTI3Myw2ICsxMjc0LDkgQEAKICAgICAgICAgci0+cG9zdHBvbmVkID0gcHI7CiAgICAgfQogCisgICAgY3R4ID0gYy0+bG9nLT5kYXRhOworICAgIGN0eC0+Y3VycmVudF9yZXF1ZXN0ID0gc3I7CisKICAgICBzci0+aW50ZXJuYWwgPSAxOwogICAgIHNyLT5mYXN0X3N1YnJlcXVlc3QgPSAxOwogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9wb3N0cG9uZV9maWx0ZXJfbW9kdWxlLmMKaW5kZXggYjExNzc0OC4uMzdkMjAwYyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcG9zdHBvbmVfZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Bvc3Rwb25lX2ZpbHRlcl9tb2R1bGUuYwpAQCAtMTYyLDYgKzE2Miw3IEBACiB7CiAgICAgbmd4X2ludF90ICAgICAgICAgICAgICAgICAgICAgIHJjOwogICAgIG5neF9jaGFpbl90ICAgICAgICAgICAgICAgICAgICpvdXQ7CisgICAgbmd4X2h0dHBfbG9nX2N0eF90ICAgICAgICAgICAgKmN0eDsKICAgICBuZ3hfaHR0cF9wb3N0cG9uZWRfcmVxdWVzdF90ICAqcHI7CiAKICAgICBmb3IgKCA7OyApIHsKQEAgLTE3Nyw2ICsxNzgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHAgcG9zdHBvbmUgZmlsdGVyIGhhbmRsZSBcIiVWPyVWXCIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByLT5yZXF1ZXN0LT51cmksICZwci0+cmVxdWVzdC0+YXJncyk7CiAKKyAgICAgICAgICAgIGN0eCA9IHItPmNvbm5lY3Rpb24tPmxvZy0+ZGF0YTsKKyAgICAgICAgICAgIGN0eC0+Y3VycmVudF9yZXF1ZXN0ID0gcHItPnJlcXVlc3Q7CisKICAgICAgICAgICAgIGlmICghcHItPnJlcXVlc3QtPmRvbmUpIHsKICAgICAgICAgICAgICAgICByLT5jb25uZWN0aW9uLT5kYXRhID0gcHItPnJlcXVlc3Q7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9BR0FJTjsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwppbmRleCBiZjNiMGVkLi4wMTQ1ZmU3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCkBAIC00Myw4ICs0Myw4IEBACiBzdGF0aWMgdm9pZCBuZ3hfaHR0cF9jbG9zZV9jb25uZWN0aW9uKG5neF9jb25uZWN0aW9uX3QgKmMpOwogCiBzdGF0aWMgdV9jaGFyICpuZ3hfaHR0cF9sb2dfZXJyb3Iobmd4X2xvZ190ICpsb2csIHVfY2hhciAqYnVmLCBzaXplX3QgbGVuKTsKLXN0YXRpYyB1X2NoYXIgKm5neF9odHRwX2xvZ19lcnJvcl9oYW5kbGVyKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdV9jaGFyICpidWYsCi0gICAgc2l6ZV90IGxlbik7CitzdGF0aWMgdV9jaGFyICpuZ3hfaHR0cF9sb2dfZXJyb3JfaGFuZGxlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsCisgICAgbmd4X2h0dHBfcmVxdWVzdF90ICpzciwgdV9jaGFyICpidWYsIHNpemVfdCBsZW4pOwogCiAjaWYgKE5HWF9IVFRQX1NTTCkKIHN0YXRpYyB2b2lkIG5neF9odHRwX3NzbF9oYW5kc2hha2Uobmd4X2V2ZW50X3QgKnJldik7CkBAIC0xNjIsNiArMTYyLDcgQEAKIAogICAgIGN0eC0+Y2xpZW50ID0gJmMtPmFkZHJfdGV4dDsKICAgICBjdHgtPnJlcXVlc3QgPSBOVUxMOworICAgIGN0eC0+Y3VycmVudF9yZXF1ZXN0ID0gTlVMTDsKIAogICAgIGMtPmxvZy0+Y29ubmVjdGlvbiA9IGMtPm51bWJlcjsKICAgICBjLT5sb2ctPmhhbmRsZXIgPSBuZ3hfaHR0cF9sb2dfZXJyb3I7CkBAIC00MjcsNiArNDI4LDcgQEAKIAogICAgIGN0eCA9IGMtPmxvZy0+ZGF0YTsKICAgICBjdHgtPnJlcXVlc3QgPSByOworICAgIGN0eC0+Y3VycmVudF9yZXF1ZXN0ID0gcjsKICAgICByLT5sb2dfaGFuZGxlciA9IG5neF9odHRwX2xvZ19lcnJvcl9oYW5kbGVyOwogCiAjaWYgKE5HWF9TVEFUX1NUVUIpCkBAIC01NDEsNyArNTQzLDYgQEAKICAgICBuZ3hfaW50X3QgICAgICAgICAgICByYywgcnY7CiAgICAgbmd4X2Nvbm5lY3Rpb25fdCAgICAqYzsKICAgICBuZ3hfaHR0cF9yZXF1ZXN0X3QgICpyOwotICAgIG5neF9odHRwX2xvZ19jdHhfdCAgKmN0eDsKIAogICAgIGMgPSByZXYtPmRhdGE7CiAgICAgciA9IGMtPmRhdGE7CkBAIC03MjIsOSArNzIzLDYgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJ2ID09IE5HWF9ERUNMSU5FRCkgewotICAgICAgICAgICAgICAgIGN0eCA9IGMtPmxvZy0+ZGF0YTsKLSAgICAgICAgICAgICAgICBjdHgtPnJlcXVlc3QgPSByOwotCiAgICAgICAgICAgICAgICAgci0+cmVxdWVzdF9saW5lLmxlbiA9IHItPmhlYWRlcl9pbi0+ZW5kIC0gci0+cmVxdWVzdF9zdGFydDsKICAgICAgICAgICAgICAgICByLT5yZXF1ZXN0X2xpbmUuZGF0YSA9IHItPnJlcXVlc3Rfc3RhcnQ7CiAKQEAgLTE0MjgsMTAgKzE0MjYsMTQgQEAKIHsKICAgICBuZ3hfY29ubmVjdGlvbl90ICAgICpjOwogICAgIG5neF9odHRwX3JlcXVlc3RfdCAgKnI7CisgICAgbmd4X2h0dHBfbG9nX2N0eF90ICAqY3R4OwogCiAgICAgYyA9IGV2LT5kYXRhOwogICAgIHIgPSBjLT5kYXRhOwogCisgICAgY3R4ID0gYy0+bG9nLT5kYXRhOworICAgIGN0eC0+Y3VycmVudF9yZXF1ZXN0ID0gcjsKKwogICAgIGlmIChldi0+d3JpdGUpIHsKICAgICAgICAgci0+d3JpdGVfZXZlbnRfaGFuZGxlcihyKTsKIApAQCAtMTQ0NSw2ICsxNDQ3LDcgQEAKIG5neF9odHRwX2ZpbmFsaXplX3JlcXVlc3Qobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaW50X3QgcmMpCiB7CiAgICAgbmd4X2h0dHBfcmVxdWVzdF90ICAgICAgICAqcHI7CisgICAgbmd4X2h0dHBfbG9nX2N0eF90ICAgICAgICAqY3R4OwogICAgIG5neF9odHRwX2NvcmVfbG9jX2NvbmZfdCAgKmNsY2Y7CiAKICAgICBpZiAocmMgPT0gTkdYX0RPTkUpIHsKQEAgLTE1MjMsNiArMTUyNiw5IEBACiAgICAgICAgICAgICByLT5jb25uZWN0aW9uLT5kYXRhID0gcHI7CiAgICAgICAgIH0KIAorICAgICAgICBjdHggPSByLT5jb25uZWN0aW9uLT5sb2ctPmRhdGE7CisgICAgICAgIGN0eC0+Y3VycmVudF9yZXF1ZXN0ID0gcHI7CisKICAgICAgICAgaWYgKHByLT5wb3N0cG9uZWQpIHsKIAogICAgICAgICAgICAgbmd4X2xvZ19kZWJ1ZzIoTkdYX0xPR19ERUJVR19IVFRQLCByLT5jb25uZWN0aW9uLT5sb2csIDAsCkBAIC0yMzY0LDcgKzIzNzAsNyBAQAogICAgIHIgPSBjdHgtPnJlcXVlc3Q7CiAKICAgICBpZiAocikgewotICAgICAgICByZXR1cm4gci0+bG9nX2hhbmRsZXIociwgcCwgbGVuKTsKKyAgICAgICAgcmV0dXJuIHItPmxvZ19oYW5kbGVyKHIsIGN0eC0+Y3VycmVudF9yZXF1ZXN0LCBwLCBsZW4pOwogICAgIH0KIAogICAgIHJldHVybiBwOwpAQCAtMjM3Miw5ICsyMzc4LDEyIEBACiAKIAogc3RhdGljIHVfY2hhciAqCi1uZ3hfaHR0cF9sb2dfZXJyb3JfaGFuZGxlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVfY2hhciAqYnVmLCBzaXplX3QgbGVuKQorbmd4X2h0dHBfbG9nX2Vycm9yX2hhbmRsZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaHR0cF9yZXF1ZXN0X3QgKnNyLAorICAgIHVfY2hhciAqYnVmLCBzaXplX3QgbGVuKQogewotICAgIHVfY2hhciAgKnA7CisgICAgdV9jaGFyICAgICAgICAgICAgICAgICAqcDsKKyAgICBuZ3hfaHR0cF91cHN0cmVhbV90ICAgICp1OworICAgIG5neF9wZWVyX2Nvbm5lY3Rpb25fdCAgKnBlZXI7CiAKICAgICBpZiAoci0+c2VydmVyX25hbWUuZGF0YSkgewogICAgICAgICBwID0gbmd4X3NucHJpbnRmKGJ1ZiwgbGVuLCAiLCBzZXJ2ZXI6ICVWIiwgJnItPnNlcnZlcl9uYW1lKTsKQEAgLTI0MDYsNiArMjQxNSwyNiBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHIgIT0gc3IpIHsKKyAgICAgICAgcCA9IG5neF9zbnByaW50ZihidWYsIGxlbiwgIiwgc3VicmVxdWVzdDogXCIlVlwiIiwgJnNyLT51cmkpOworICAgICAgICBsZW4gLT0gcCAtIGJ1ZjsKKyAgICAgICAgYnVmID0gcDsKKyAgICB9CisKKyAgICB1ID0gc3ItPnVwc3RyZWFtOworCisgICAgaWYgKHUpIHsKKyAgICAgICAgcGVlciA9ICZ1LT5wZWVyOworCisgICAgICAgIHAgPSBuZ3hfc25wcmludGYoYnVmLCBsZW4sICIsIHVwc3RyZWFtOiBcIiVWJVYlcyVWXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ1LT5jb25mLT5zY2hlbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgJnBlZXItPnBlZXJzLT5wZWVyW3BlZXItPmN1cl9wZWVyXS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBlZXItPnBlZXJzLT5wZWVyW3BlZXItPmN1cl9wZWVyXS51cmlfc2VwYXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ1LT51cmkpOworICAgICAgICBsZW4gLT0gcCAtIGJ1ZjsKKyAgICAgICAgYnVmID0gcDsKKyAgICB9CisKICAgICByZXR1cm4gbmd4X2h0dHBfbG9nX2Vycm9yX2luZm8ociwgYnVmLCBsZW4pOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0X2JvZHkuYyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3RfYm9keS5jCmluZGV4IGM2ZmEzZmMuLjVjYzRkNTIgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3RfYm9keS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3RfYm9keS5jCkBAIC05Miw3ICs5Miw3IEBACiAgICAgICAgIHJiLT5idWZzLT5idWYgPSBiOwogICAgICAgICByYi0+YnVmcy0+bmV4dCA9IE5VTEw7CiAKLSAgICAgICAgaWYgKHByZXJlYWQgPj0gci0+aGVhZGVyc19pbi5jb250ZW50X2xlbmd0aF9uKSB7CisgICAgICAgIGlmICgob2ZmX3QpIHByZXJlYWQgPj0gci0+aGVhZGVyc19pbi5jb250ZW50X2xlbmd0aF9uKSB7CiAKICAgICAgICAgICAgIC8qIHRoZSB3aG9sZSByZXF1ZXN0IGJvZHkgd2FzIHByZS1yZWFkICovCiAKQEAgLTEyMCw3ICsxMjAsNyBAQAogCiAgICAgICAgIHJiLT5yZXN0ID0gci0+aGVhZGVyc19pbi5jb250ZW50X2xlbmd0aF9uIC0gcHJlcmVhZDsKIAotICAgICAgICBpZiAocmItPnJlc3QgPD0gKHNpemVfdCkgKGItPmVuZCAtIGItPmxhc3QpKSB7CisgICAgICAgIGlmIChyYi0+cmVzdCA8PSAob2ZmX3QpIChiLT5lbmQgLSBiLT5sYXN0KSkgewogCiAgICAgICAgICAgICAvKiB0aGUgd2hvbGUgcmVxdWVzdCBib2R5IG1heSBiZSBwbGFjZWQgaW4gci0+aGVhZGVyX2luICovCiAKQEAgLTI0Miw3ICsyNDIsNyBAQAogCiAgICAgICAgIHNpemUgPSByYi0+YnVmLT5lbmQgLSByYi0+YnVmLT5sYXN0OwogCi0gICAgICAgIGlmIChzaXplID4gcmItPnJlc3QpIHsKKyAgICAgICAgaWYgKChvZmZfdCkgc2l6ZSA+IHJiLT5yZXN0KSB7CiAgICAgICAgICAgICBzaXplID0gKHNpemVfdCkgcmItPnJlc3Q7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKaW5kZXggNzgyYzE0Yi4uNWNhYWQwMCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCkBAIC03OCw5ICs3OCw2IEBACiBzdGF0aWMgdV9jaGFyICpuZ3hfaHR0cF91cHN0cmVhbV9sb2dfcmVzcG9uc2VfdGltZShuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsCiAgICAgdV9jaGFyICpidWYsIG5neF9odHRwX2xvZ19vcF90ICpvcCk7CiAKLXN0YXRpYyB1X2NoYXIgKm5neF9odHRwX3Vwc3RyZWFtX2xvZ19lcnJvcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVfY2hhciAqYnVmLAotICAgIHNpemVfdCBsZW4pOwotCiBzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX3Vwc3RyZWFtX2FkZF92YXJpYWJsZXMobmd4X2NvbmZfdCAqY2YpOwogc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF91cHN0cmVhbV9zdGF0dXNfdmFyaWFibGUobmd4X2h0dHBfcmVxdWVzdF90ICpyLAogICAgIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKnYsIHVpbnRwdHJfdCBkYXRhKTsKQEAgLTI5Myw3ICsyOTAsNiBAQAogdm9pZAogbmd4X2h0dHBfdXBzdHJlYW1faW5pdChuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpCiB7Ci0gICAgbmd4X3RpbWVfdCAgICAgICAgICAgICAgICAqdHA7CiAgICAgbmd4X2Nvbm5lY3Rpb25fdCAgICAgICAgICAqYzsKICAgICBuZ3hfaHR0cF9jbGVhbnVwX3QgICAgICAgICpjbG47CiAgICAgbmd4X2h0dHBfdXBzdHJlYW1fdCAgICAgICAqdTsKQEAgLTMzNyw4ICszMzMsNiBAQAogICAgIH0KIAogICAgIHUtPnBlZXIubG9nID0gci0+Y29ubmVjdGlvbi0+bG9nOwotICAgIHUtPnNhdmVkX2xvZ19oYW5kbGVyID0gci0+bG9nX2hhbmRsZXI7Ci0gICAgci0+bG9nX2hhbmRsZXIgPSBuZ3hfaHR0cF91cHN0cmVhbV9sb2dfZXJyb3I7CiAKICAgICBjbGNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9jb3JlX21vZHVsZSk7CiAKQEAgLTM1OSwxOCArMzUzLDYgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHUtPnN0YXRlID0gbmd4X2FycmF5X3B1c2goJnUtPnN0YXRlcyk7Ci0gICAgaWYgKHUtPnN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgbmd4X2h0dHBfZmluYWxpemVfcmVxdWVzdChyLCBOR1hfSFRUUF9JTlRFUk5BTF9TRVJWRVJfRVJST1IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbmd4X21lbXplcm8odS0+c3RhdGUsIHNpemVvZihuZ3hfaHR0cF91cHN0cmVhbV9zdGF0ZV90KSk7Ci0KLSAgICB0cCA9IG5neF90aW1lb2ZkYXkoKTsKLQotICAgIHUtPnN0YXRlLT5yZXNwb25zZV90aW1lID0gdHAtPnNlYyAqIDEwMDAgKyB0cC0+bXNlYzsKLQogICAgIGNsbiA9IG5neF9odHRwX2NsZWFudXBfYWRkKHIsIDApOwogICAgIGlmIChjbG4gPT0gTlVMTCkgewogICAgICAgICBuZ3hfaHR0cF9maW5hbGl6ZV9yZXF1ZXN0KHIsIE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUik7CkBAIC01MjgsMTIgKzUxMCwzMSBAQAogbmd4X2h0dHBfdXBzdHJlYW1fY29ubmVjdChuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIG5neF9odHRwX3Vwc3RyZWFtX3QgKnUpCiB7CiAgICAgbmd4X2ludF90ICAgICAgICAgIHJjOworICAgIG5neF90aW1lX3QgICAgICAgICp0cDsKICAgICBuZ3hfY29ubmVjdGlvbl90ICAqYzsKIAogICAgIHItPmNvbm5lY3Rpb24tPmxvZy0+YWN0aW9uID0gImNvbm5lY3RpbmcgdG8gdXBzdHJlYW0iOwogCiAgICAgci0+Y29ubmVjdGlvbi0+c2luZ2xlX2Nvbm5lY3Rpb24gPSAwOwogCisgICAgaWYgKHUtPnN0YXRlICYmIHUtPnN0YXRlLT5yZXNwb25zZV90aW1lKSB7CisgICAgICAgIHRwID0gbmd4X3RpbWVvZmRheSgpOworICAgICAgICB1LT5zdGF0ZS0+cmVzcG9uc2VfdGltZSA9IHRwLT5zZWMgKiAxMDAwICsgdHAtPm1zZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHUtPnN0YXRlLT5yZXNwb25zZV90aW1lOworICAgIH0KKworICAgIHUtPnN0YXRlID0gbmd4X2FycmF5X3B1c2goJnUtPnN0YXRlcyk7CisgICAgaWYgKHUtPnN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fZmluYWxpemVfcmVxdWVzdChyLCB1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuZ3hfbWVtemVybyh1LT5zdGF0ZSwgc2l6ZW9mKG5neF9odHRwX3Vwc3RyZWFtX3N0YXRlX3QpKTsKKworICAgIHRwID0gbmd4X3RpbWVvZmRheSgpOworICAgIHUtPnN0YXRlLT5yZXNwb25zZV90aW1lID0gdHAtPnNlYyAqIDEwMDAgKyB0cC0+bXNlYzsKKwogICAgIHJjID0gbmd4X2V2ZW50X2Nvbm5lY3RfcGVlcigmdS0+cGVlcik7CiAKICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKQEAgLTc2MSwxNSArNzYyLDYgQEAKIAogI2VuZGlmCiAKLSAgICAvKiBhZGQgb25lIG1vcmUgc3RhdGUgKi8KLQotICAgIHUtPnN0YXRlID0gbmd4X2FycmF5X3B1c2goJnUtPnN0YXRlcyk7Ci0gICAgaWYgKHUtPnN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKLSAgICB9Ci0KLSAgICBuZ3hfbWVtemVybyh1LT5zdGF0ZSwgc2l6ZW9mKG5neF9odHRwX3Vwc3RyZWFtX3N0YXRlX3QpKTsKLQogICAgIHJldHVybiBOR1hfT0s7CiB9CiAKQEAgLTE5ODgsOCArMTk4MCw2IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICByLT5sb2dfaGFuZGxlciA9IHUtPnNhdmVkX2xvZ19oYW5kbGVyOwotCiAgICAgaWYgKHJjID09IE5HWF9ERUNMSU5FRCkgewogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ1NywzMiArMjQ0Nyw2IEBACiB9CiAKIAotc3RhdGljIHVfY2hhciAqCi1uZ3hfaHR0cF91cHN0cmVhbV9sb2dfZXJyb3Iobmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1X2NoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKLXsKLSAgICB1X2NoYXIgICAgICAgICAgICAgICAgICpwOwotICAgIG5neF9odHRwX3Vwc3RyZWFtX3QgICAgKnU7Ci0gICAgbmd4X3BlZXJfY29ubmVjdGlvbl90ICAqcGVlcjsKLQotICAgIHUgPSByLT51cHN0cmVhbTsKLSAgICBwZWVyID0gJnUtPnBlZXI7Ci0KLSAgICBwID0gbmd4X3NucHJpbnRmKGJ1ZiwgbGVuLAotICAgICAgICAgICAgICAgICAgICAgIiwgc2VydmVyOiAlViwgVVJMOiBcIiVWXCIsIgotICAgICAgICAgICAgICAgICAgICAgIiB1cHN0cmVhbTogXCIlViVWJXMlVlwiIiwKLSAgICAgICAgICAgICAgICAgICAgICZyLT5zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICZyLT51bnBhcnNlZF91cmksCi0gICAgICAgICAgICAgICAgICAgICAmdS0+Y29uZi0+c2NoZW1hLAotICAgICAgICAgICAgICAgICAgICAgJnBlZXItPnBlZXJzLT5wZWVyW3BlZXItPmN1cl9wZWVyXS5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgcGVlci0+cGVlcnMtPnBlZXJbcGVlci0+Y3VyX3BlZXJdLnVyaV9zZXBhcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAmdS0+dXJpKTsKLSAgICBsZW4gLT0gcCAtIGJ1ZjsKLSAgICBidWYgPSBwOwotCi0gICAgcmV0dXJuIG5neF9odHRwX2xvZ19lcnJvcl9pbmZvKHIsIGJ1ZiwgbGVuKTsKLX0KLQotCiBzdGF0aWMgbmd4X2ludF90CiBuZ3hfaHR0cF91cHN0cmVhbV9hZGRfdmFyaWFibGVzKG5neF9jb25mX3QgKmNmKQogewpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uaCBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmgKaW5kZXggMDg2ZDE4NC4uOGMyYTkwMSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uaAorKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5oCkBAIC0xNiwxNCArMTYsMTUgQEAKICNpbmNsdWRlIDxuZ3hfaHR0cC5oPgogCiAKLSNkZWZpbmUgTkdYX0hUVFBfVVBTVFJFQU1fRlRfRVJST1IgICAgICAgICAgIDB4MDAyCi0jZGVmaW5lIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX1RJTUVPVVQgICAgICAgICAweDAwNAotI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9JTlZBTElEX0hFQURFUiAgMHgwMDgKLSNkZWZpbmUgTkdYX0hUVFBfVVBTVFJFQU1fRlRfSFRUUF81MDAgICAgICAgIDB4MDEwCi0jZGVmaW5lIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX0hUVFBfNTAzICAgICAgICAweDAyMAotI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzQwNCAgICAgICAgMHgwNDAKLSNkZWZpbmUgTkdYX0hUVFBfVVBTVFJFQU1fRlRfQlVTWV9MT0NLICAgICAgIDB4MDgwCi0jZGVmaW5lIE5HWF9IVFRQX1VQU1RSRUFNX0ZUX01BWF9XQUlUSU5HICAgICAweDEwMAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9FUlJPUiAgICAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9USU1FT1VUICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9JTlZBTElEX0hFQURFUiAgMHgwMDAwMDAwOAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzUwMCAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzUwMyAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9IVFRQXzQwNCAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9CVVNZX0xPQ0sgICAgICAgMHgwMDAwMDA4MAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9NQVhfV0FJVElORyAgICAgMHgwMDAwMDEwMAorI2RlZmluZSBOR1hfSFRUUF9VUFNUUkVBTV9GVF9PRkYgICAgICAgICAgICAgMHg4MDAwMDAwMAogCiAKICNkZWZpbmUgTkdYX0hUVFBfVVBTVFJFQU1fSU5WQUxJRF9IRUFERVIgICAgIDQwCkBAIC0xOTMsOCArMTk0LDYgQEAKIAogICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOwogCi0gICAgbmd4X2h0dHBfbG9nX2hhbmRsZXJfcHQgICAgICAgICBzYXZlZF9sb2dfaGFuZGxlcjsKLQogICAgIG5neF9odHRwX3Vwc3RyZWFtX3N0YXRlX3QgICAgICAqc3RhdGU7CiAgICAgbmd4X2FycmF5X3QgICAgICAgICAgICAgICAgICAgICBzdGF0ZXM7ICAvKiBvZiBuZ3hfaHR0cF91cHN0cmVhbV9zdGF0ZV90ICovCiAK