ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYyBiL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYwppbmRleCBkMWQ0ODRkLi5mNzAzYjI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMKKysrIGIvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jCkBAIC0yNDEsNyArMjQxLDcgQEAKIAljYXNlIENQRVJfU0VWX0ZBVEFMOgogCQlyZXR1cm4gR0hFU19TRVZfUEFOSUM7CiAJZGVmYXVsdDoKLQkJLyogVW5rb3duLCBnbyBwYW5pYyAqLworCQkvKiBVbmtub3duLCBnbyBwYW5pYyAqLwogCQlyZXR1cm4gR0hFU19TRVZfUEFOSUM7CiAJfQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl90aHJvdHRsaW5nLmMgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX3Rocm90dGxpbmcuYwppbmRleCBmYTg0ZTk3Li5hZDM1MDE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX3Rocm90dGxpbmcuYworKysgYi9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX3Rocm90dGxpbmcuYwpAQCAtMTE2NCw3ICsxMTY0LDcgQEAKIAkJCSAqLwogCQkJaWYgKCFtYXRjaF9wci0+ZmxhZ3MudGhyb3R0bGluZykgewogCQkJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywKLQkJCQkJIlRocm90dGxpbmcgQ29udHJvbGwgaXMgdW5zdXBwb3J0ZWQgIgorCQkJCQkiVGhyb3R0bGluZyBDb250cm9sIGlzIHVuc3VwcG9ydGVkICIKIAkJCQkJIm9uIENQVSAlZFxuIiwgaSkpOwogCQkJCWNvbnRpbnVlOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3ZpZGVvLmMgYi9kcml2ZXJzL2FjcGkvdmlkZW8uYwppbmRleCAzMWU5ZTEwLi5lYzU3NGZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvdmlkZW8uYworKysgYi9kcml2ZXJzL2FjcGkvdmlkZW8uYwpAQCAtMTM1NCw3ICsxMzU0LDcgQEAKIAkJc3RhdHVzID0gYWNwaV92aWRlb19idXNfZ2V0X29uZV9kZXZpY2UoZGV2LCB2aWRlbyk7CiAJCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQkJcHJpbnRrKEtFUk5fV0FSTklORyBQUkVGSVgKLQkJCQkJIkNhbnQgYXR0YWNoIGRldmljZVxuIik7CisJCQkJCSJDYW4ndCBhdHRhY2ggZGV2aWNlXG4iKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJfQpAQCAtMTM3Myw3ICsxMzczLDcgQEAKIAkJCQkJICAgIGFjcGlfdmlkZW9fZGV2aWNlX25vdGlmeSk7CiAJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgUFJFRklYCi0JCSAgICAgICAiQ2FudCByZW1vdmUgdmlkZW8gbm90aWZ5IGhhbmRsZXJcbiIpOworCQkgICAgICAgIkNhbid0IHJlbW92ZSB2aWRlbyBub3RpZnkgaGFuZGxlclxuIik7CiAJfQogCWlmIChkZXZpY2UtPmJhY2tsaWdodCkgewogCQliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoZGV2aWNlLT5iYWNrbGlnaHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hbWJhL2J1cy5jIGIvZHJpdmVycy9hbWJhL2J1cy5jCmluZGV4IDZkMmJiMjUuLjgyMTA0MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYW1iYS9idXMuYworKysgYi9kcml2ZXJzL2FtYmEvYnVzLmMKQEAgLTc2MCw3ICs3NjAsNyBAQAogfQogCiAvKioKLSAqCWFtYmFfcmVsZWFzZV9yZWdpb25zIC0gcmVsZWFzZSBtZW0gcmVnaW9ucyBhc3NvaWNhdGVkIHdpdGggZGV2aWNlCisgKglhbWJhX3JlbGVhc2VfcmVnaW9ucyAtIHJlbGVhc2UgbWVtIHJlZ2lvbnMgYXNzb2NpYXRlZCB3aXRoIGRldmljZQogICoJQGRldjogYW1iYV9kZXZpY2Ugc3RydWN0dXJlIGZvciBkZXZpY2UKICAqCiAgKglSZWxlYXNlIHJlZ2lvbnMgY2xhaW1lZCBieSBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhbWJhX3JlcXVlc3RfcmVnaW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2FoY2kuYyBiL2RyaXZlcnMvYXRhL2FoY2kuYwppbmRleCBlNjJmNjkzLi4zOWQ4MjljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9haGNpLmMKKysrIGIvZHJpdmVycy9hdGEvYWhjaS5jCkBAIC05MjYsNyArOTI2LDcgQEAKIAkJLyoKIAkJICogQWNlciBlTWFjaGluZXMgRzcyNSBoYXMgdGhlIHNhbWUgcHJvYmxlbS4gIEJJT1MKIAkJICogVjEuMDMgaXMga25vd24gdG8gYmUgYnJva2VuLiAgVjMuMDQgaXMga25vd24gdG8KLQkJICogd29yay4gIEluYmV0d2VlbiwgdGhlcmUgYXJlIFYxLjA2LCBWMi4wNiBhbmQgVjMuMDMKKwkJICogd29yay4gIEJldHdlZW4sIHRoZXJlIGFyZSBWMS4wNiwgVjIuMDYgYW5kIFYzLjAzCiAJCSAqIHRoYXQgd2UgZG9uJ3QgaGF2ZSBtdWNoIGlkZWEgYWJvdXQuICBGb3Igbm93LAogCQkgKiBibGFja2xpc3QgYW55dGhpbmcgb2xkZXIgdGhhbiBWMy4wNC4KIAkJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2FoY2kuaCBiL2RyaXZlcnMvYXRhL2FoY2kuaAppbmRleCBjY2FmMDgxLi4zOTg2NTAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9haGNpLmgKKysrIGIvZHJpdmVycy9hdGEvYWhjaS5oCkBAIC0yMjUsNyArMjI1LDcgQEAKIAkvKiBlbV9jdGwgYml0cyAqLwogCUVNX0NUTF9SU1QJCT0gKDEgPDwgOSksIC8qIFJlc2V0ICovCiAJRU1fQ1RMX1RNCQk9ICgxIDw8IDgpLCAvKiBUcmFuc21pdCBNZXNzYWdlICovCi0JRU1fQ1RMX01SCQk9ICgxIDw8IDApLCAvKiBNZXNzYWdlIFJlY2lldmVkICovCisJRU1fQ1RMX01SCQk9ICgxIDw8IDApLCAvKiBNZXNzYWdlIFJlY2VpdmVkICovCiAJRU1fQ1RMX0FMSEQJCT0gKDEgPDwgMjYpLCAvKiBBY3Rpdml0eSBMRUQgKi8KIAlFTV9DVExfWE1UCQk9ICgxIDw8IDI1KSwgLyogVHJhbnNtaXQgT25seSAqLwogCUVNX0NUTF9TTUIJCT0gKDEgPDwgMjQpLCAvKiBTaW5nbGUgTWVzc2FnZSBCdWZmZXIgKi8KQEAgLTI4MSw3ICsyODEsNyBAQAogfTsKIAogc3RydWN0IGFoY2lfaG9zdF9wcml2IHsKLQl2b2lkIF9faW9tZW0gKgkJbW1pbzsJCS8qIGJ1cy1pbmRlcGVuZGFudCBtZW0gbWFwICovCisJdm9pZCBfX2lvbWVtICoJCW1taW87CQkvKiBidXMtaW5kZXBlbmRlbnQgbWVtIG1hcCAqLwogCXVuc2lnbmVkIGludAkJZmxhZ3M7CQkvKiBBSENJX0hGTEFHXyogKi8KIAl1MzIJCQljYXA7CQkvKiBjYXAgdG8gdXNlICovCiAJdTMyCQkJY2FwMjsJCS8qIGNhcDIgdG8gdXNlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9hdGFfcGlpeC5jIGIvZHJpdmVycy9hdGEvYXRhX3BpaXguYwppbmRleCBjZGVjNGFiLi4wYmMzZmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9hdGFfcGlpeC5jCisrKyBiL2RyaXZlcnMvYXRhL2F0YV9waWl4LmMKQEAgLTM4LDE2ICszOCwxNiBAQAogICogIEhhcmR3YXJlIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tLwogICoKICAqIERvY3VtZW50YXRpb24KLSAqCVB1YmxpY2FsbHkgYXZhaWxhYmxlIGZyb20gSW50ZWwgd2ViIHNpdGUuIEVycmF0YSBkb2N1bWVudGF0aW9uCi0gKiBpcyBhbHNvIHB1YmxpY2FsbHkgYXZhaWxhYmxlLiBBcyBhbiBhaWRlIHRvIGFueW9uZSBoYWNraW5nIG9uIHRoaXMKKyAqCVB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tIEludGVsIHdlYiBzaXRlLiBFcnJhdGEgZG9jdW1lbnRhdGlvbgorICogaXMgYWxzbyBwdWJsaWNseSBhdmFpbGFibGUuIEFzIGFuIGFpZGUgdG8gYW55b25lIGhhY2tpbmcgb24gdGhpcwogICogZHJpdmVyIHRoZSBsaXN0IG9mIGVycmF0YSB0aGF0IGFyZSByZWxldmFudCBpcyBiZWxvdywgZ29pbmcgYmFjayB0bwogICogUElJWDQuIE9sZGVyIGRldmljZSBkb2N1bWVudGF0aW9uIGlzIG5vdyBhIGJpdCB0cmlja3kgdG8gZmluZC4KICAqCiAgKiBUaGUgY2hpcHNldHMgYWxsIGZvbGxvdyB2ZXJ5IG11Y2ggdGhlIHNhbWUgZGVzaWduLiBUaGUgb3JpZ2luYWwgVHJpdG9uCi0gKiBzZXJpZXMgY2hpcHNldHMgZG8gX25vdF8gc3VwcG9ydCBpbmRlcGVuZGFudCBkZXZpY2UgdGltaW5ncywgYnV0IHRoaXMKKyAqIHNlcmllcyBjaGlwc2V0cyBkbyBfbm90XyBzdXBwb3J0IGluZGVwZW5kZW50IGRldmljZSB0aW1pbmdzLCBidXQgdGhpcwogICogaXMgZml4ZWQgaW4gVHJpdG9uIElJLiBXaXRoIHRoZSBvZGQgbW9iaWxlIGV4Y2VwdGlvbiB0aGUgY2hpcHMgdGhlbgogICogY2hhbmdlIGxpdHRsZSBleGNlcHQgaW4gZ2FpbmluZyBtb3JlIG1vZGVzIHVudGlsIFNBVEEgYXJyaXZlcy4gVGhpcwotICogZHJpdmVyIHN1cHBvcnRzIG9ubHkgdGhlIGNoaXBzIHdpdGggaW5kZXBlbmRhbnQgdGltaW5nICh0aGF0IGlzIHRob3NlCisgKiBkcml2ZXIgc3VwcG9ydHMgb25seSB0aGUgY2hpcHMgd2l0aCBpbmRlcGVuZGVudCB0aW1pbmcgKHRoYXQgaXMgdGhvc2UKICAqIHdpdGggU0lUUkUgYW5kIHRoZSAweDQ0IHRpbWluZyByZWdpc3RlcikuIFNlZSBwYXRhX29sZHBpaXggYW5kIHBhdGFfbXBpaXgKICAqIGZvciB0aGUgZWFybHkgY2hpcCBkcml2ZXJzLgogICoKQEAgLTEyMiw3ICsxMjIsNyBAQAogCVAyCQkJPSAyLCAgLyogcG9ydCAyICovCiAJUDMJCQk9IDMsICAvKiBwb3J0IDMgKi8KIAlJREUJCQk9IC0xLCAvKiBJREUgKi8KLQlOQQkJCT0gLTIsIC8qIG5vdCBhdmFsaWFibGUgKi8KKwlOQQkJCT0gLTIsIC8qIG5vdCBhdmFpbGFibGUgKi8KIAlSVgkJCT0gLTMsIC8qIHJlc2VydmVkICovCiAKIAlQSUlYX0FIQ0lfREVWSUNFCT0gNiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCmluZGV4IGI5MWUxOWMuLjQyM2MwYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKKysrIGIvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYwpAQCAtNTM0MCw3ICs1MzQwLDcgQEAKICAqCiAgKglSZXN1bWUgQGhvc3QuICBBY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBieSBFSC4gIFRoaXMKICAqCWZ1bmN0aW9uIHJlcXVlc3RzIEVIIHRvIHBlcmZvcm0gUE0gb3BlcmF0aW9ucyBhbmQgcmV0dXJucy4KLSAqCU5vdGUgdGhhdCBhbGwgcmVzdW1lIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBwYXJhbGxlbHkuCisgKglOb3RlIHRoYXQgYWxsIHJlc3VtZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgcGFyYWxsZWxseS4KICAqCiAgKglMT0NLSU5HOgogICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLWVoLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtZWguYwppbmRleCBkZjNmMzE0Li44OGNkMjJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtZWguYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtZWguYwpAQCAtNzcxLDcgKzc3MSw3IEBACiAJCS8qIHByb2Nlc3MgcG9ydCBzdXNwZW5kIHJlcXVlc3QgKi8KIAkJYXRhX2VoX2hhbmRsZV9wb3J0X3N1c3BlbmQoYXApOwogCi0JCS8qIEV4Y2VwdGlvbiBtaWdodCBoYXZlIGhhcHBlbmQgYWZ0ZXIgLT5lcnJvcl9oYW5kbGVyCisJCS8qIEV4Y2VwdGlvbiBtaWdodCBoYXZlIGhhcHBlbmVkIGFmdGVyIC0+ZXJyb3JfaGFuZGxlcgogCQkgKiByZWNvdmVyZWQgdGhlIHBvcnQgYnV0IGJlZm9yZSB0aGlzIHBvaW50LiAgUmVwZWF0CiAJCSAqIEVIIGluIHN1Y2ggY2FzZS4KIAkJICovCkBAIC0xNzQyLDcgKzE3NDIsNyBAQAogICoKICAqCUFuYWx5emUgdGFza2ZpbGUgb2YgQHFjIGFuZCBmdXJ0aGVyIGRldGVybWluZSBjYXVzZSBvZgogICoJZmFpbHVyZS4gIFRoaXMgZnVuY3Rpb24gYWxzbyByZXF1ZXN0cyBBVEFQSSBzZW5zZSBkYXRhIGlmCi0gKglhdmFsaWFibGUuCisgKglhdmFpbGFibGUuCiAgKgogICoJTE9DS0lORzoKICAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KQEAgLTE4OTMsNyArMTg5Myw3IEBACiAgKgkgICBvY2N1cnJlZCBkdXJpbmcgbGFzdCA1IG1pbnMsIE5DUV9PRkYuCiAgKgogICoJMy4gSWYgbW9yZSB0aGFuIDggQVRBX0JVUywgVE9VVF9IU00gb3IgVU5LX0RFViBlcnJvcnMKLSAqCSAgIG9jdXJyZWQgZHVyaW5nIGxhc3QgNSBtaW5zLCBGQUxMQkFDS19UT19QSU8KKyAqCSAgIG9jY3VycmVkIGR1cmluZyBsYXN0IDUgbWlucywgRkFMTEJBQ0tfVE9fUElPCiAgKgogICoJNC4gSWYgbW9yZSB0aGFuIDMgVE9VVF9IU00gb3IgVU5LX0RFViBlcnJvcnMgb2NjdXJyZWQKICAqCSAgIGR1cmluZyBsYXN0IDEwIG1pbnMsIE5DUV9PRkYuCkBAIC0yNTc3LDcgKzI1NzcsNyBAQAogCWlmIChsaW5rLT5mbGFncyAmIEFUQV9MRkxBR19OT19TUlNUKQogCQlzb2Z0cmVzZXQgPSBOVUxMOwogCi0JLyogbWFrZSBzdXJlIGVhY2ggcmVzZXQgYXR0ZW1wIGlzIGF0IGxlYXN0IENPT0xfRE9XTiBhcGFydCAqLworCS8qIG1ha2Ugc3VyZSBlYWNoIHJlc2V0IGF0dGVtcHQgaXMgYXQgbGVhc3QgQ09PTF9ET1dOIGFwYXJ0ICovCiAJaWYgKGVoYy0+aS5mbGFncyAmIEFUQV9FSElfRElEX1JFU0VUKSB7CiAJCW5vdyA9IGppZmZpZXM7CiAJCVdBUk5fT04odGltZV9hZnRlcihlaGMtPmxhc3RfcmVzZXQsIG5vdykpOwpAQCAtMjczNiw3ICsyNzM2LDcgQEAKIAkJCWlmICghcmVzZXQpIHsKIAkJCQlhdGFfbGlua19wcmludGsobGluaywgS0VSTl9FUlIsCiAJCQkJCQkiZm9sbG93LXVwIHNvZnRyZXNldCByZXF1aXJlZCAiCi0JCQkJCQkiYnV0IG5vIHNvZnRyZXNldCBhdmFsaWFibGVcbiIpOworCQkJCQkJImJ1dCBubyBzb2Z0cmVzZXQgYXZhaWxhYmxlXG4iKTsKIAkJCQlmYWlsZWRfbGluayA9IGxpbms7CiAJCQkJcmMgPSAtRUlOVkFMOwogCQkJCWdvdG8gZmFpbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCmluZGV4IGE4MzQxOTkuLmUyZjU3ZTllIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMKQEAgLTk5OSw3ICs5OTksNyBAQAogICoJQHFjOiBDb21tYW5kIHRoYXQgd2UgYXJlIGVycm9yaW5nIG91dAogICoKICAqCUdlbmVyYXRlIHNlbnNlIGJsb2NrIGZvciBhIGZhaWxlZCBBVEEgY29tbWFuZCBAcWMuICBEZXNjcmlwdG9yCi0gKglmb3JtYXQgaXMgdXNlZCB0byBhY2NvbW9kYXRlIExCQTQ4IGJsb2NrIGFkZHJlc3MuCisgKglmb3JtYXQgaXMgdXNlZCB0byBhY2NvbW1vZGF0ZSBMQkE0OCBibG9jayBhZGRyZXNzLgogICoKICAqCUxPQ0tJTkc6CiAgKglOb25lLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLXNmZi5jIGIvZHJpdmVycy9hdGEvbGliYXRhLXNmZi5jCmluZGV4IGNmN2FjYmMuLmY4MzgwY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2ZmLmMKQEAgLTI4MzksNyArMjgzOSw3IEBACiAJCWJtZG1hX3N0b3BwZWQgPSB0cnVlOwogCiAJCWlmICh1bmxpa2VseShob3N0X3N0YXQgJiBBVEFfRE1BX0VSUikpIHsKLQkJCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLworCQkJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcnJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLwogCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9IT1NUX0JVUzsKIAkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9FUlI7CiAJCX0KQEAgLTMwMzIsNyArMzAzMiw3IEBACiAJICogT3IgbWF5YmUgSSdtIGp1c3QgYmVpbmcgcGFyYW5vaWQuCiAJICoKIAkgKiBGSVhNRTogVGhlIHBvc3Rpbmcgb2YgdGhpcyB3cml0ZSBtZWFucyBJL08gc3RhcnRzIGFyZQotCSAqIHVubmVjY2Vzc2FyaWx5IGRlbGF5ZWQgZm9yIE1NSU8KKwkgKiB1bm5lY2Vzc2FyaWx5IGRlbGF5ZWQgZm9yIE1NSU8KIAkgKi8KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGF0YV9ibWRtYV9zdGFydCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2FtZC5jIGIvZHJpdmVycy9hdGEvcGF0YV9hbWQuYwppbmRleCA2MjBhMDdjLi5iMDk3NWE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2FtZC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfYW1kLmMKQEAgLTExLDcgKzExLDcgQEAKICAqCVBvd2VyIG1hbmFnZW1lbnQgb24gcG9ydHMKICAqCiAgKgotICogIERvY3VtZW50YXRpb24gcHVibGljYWxseSBhdmFpbGFibGUuCisgKiAgRG9jdW1lbnRhdGlvbiBwdWJsaWNseSBhdmFpbGFibGUuCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9hcmFzYW5fY2YuYyBiL2RyaXZlcnMvYXRhL3BhdGFfYXJhc2FuX2NmLmMKaW5kZXggNjVjZWU3NC4uNzE5YmI3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9hcmFzYW5fY2YuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2FyYXNhbl9jZi5jCkBAIC0zODUsNyArMzg1LDcgQEAKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCi0JLyogQ2hlY2sgaWYgUElPIEVycm9yIGludGVycnVwdCBoYXMgb2NjdXJlZCAqLworCS8qIENoZWNrIGlmIFBJTyBFcnJvciBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkICovCiAJaWYgKGFjZGV2LT5kbWFfc3RhdHVzICYgQVRBX0RNQV9FUlIpCiAJCXJldHVybiAtRUFHQUlOOwogCkBAIC00NTAsNyArNDUwLDcgQEAKIAkvKgogCSAqIEZvciBlYWNoIHNnOgogCSAqIE1BWF9YRkVSX0NPVU5UIGRhdGEgd2lsbCBiZSB0cmFuc2ZlcnJlZCBiZWZvcmUgd2UgZ2V0IHRyYW5zZmVyCi0JICogY29tcGxldGUgaW50ZXJydXB0LiBJbmJldHdlZW4gYWZ0ZXIgRklGT19TSVpFIGRhdGEKKwkgKiBjb21wbGV0ZSBpbnRlcnJ1cHQuIEJldHdlZW4gYWZ0ZXIgRklGT19TSVpFIGRhdGEKIAkgKiBidWZmZXIgYXZhaWxhYmxlIGludGVycnVwdCB3aWxsIGJlIGdlbmVyYXRlZC4gQXQgdGhpcyB0aW1lIHdlIHdpbGwKIAkgKiBmaWxsIEZJRk8gYWdhaW46IG1heCBGSUZPX1NJWkUgZGF0YS4KIAkgKi8KQEAgLTQ2Myw3ICs0NjMsNyBAQAogCQkJCWFjZGV2LT52YmFzZSArIFhGRVJfQ1RSKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYWNkZXYtPmhvc3QtPmxvY2ssIGZsYWdzKTsKIAotCQkvKiBjb250aW51ZSBkbWEgeGZlcnMgdW50aWxsIGN1cnJlbnQgc2cgaXMgY29tcGxldGVkICovCisJCS8qIGNvbnRpbnVlIGRtYSB4ZmVycyB1bnRpbCBjdXJyZW50IHNnIGlzIGNvbXBsZXRlZCAqLwogCQl3aGlsZSAoeGZlcl9jbnQpIHsKIAkJCS8qIHdhaXQgZm9yIHJlYWQgdG8gY29tcGxldGUgKi8KIAkJCWlmICghd3JpdGUpIHsKQEAgLTU2Myw3ICs1NjMsNyBAQAogCiBjaGFuX3JlcXVlc3RfZmFpbDoKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYWNkZXYtPmhvc3QtPmxvY2ssIGZsYWdzKTsKLQkvKiBlcnJvciB3aGVuIHRyYW5zZmVyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KKwkvKiBlcnJvciB3aGVuIHRyYW5zZmVycmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCiAJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9IT1NUX0JVUzsKIAlxYy0+YXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9iZjU0eC5jIGIvZHJpdmVycy9hdGEvcGF0YV9iZjU0eC5jCmluZGV4IGUwYjU4YjguLmVhNjQ5NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfYmY1NHguYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2JmNTR4LmMKQEAgLTEzNDIsNyArMTM0Miw3IEBACiAJCQlhcC0+b3BzLT5ibWRtYV9zdG9wKHFjKTsKIAogCQkJaWYgKHVubGlrZWx5KGhvc3Rfc3RhdCAmIEFUQV9ETUFfRVJSKSkgewotCQkJCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLworCQkJCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KIAkJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hPU1RfQlVTOwogCQkJCWFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9FUlI7CiAJCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2NzNTUyMC5jIGIvZHJpdmVycy9hdGEvcGF0YV9jczU1MjAuYwppbmRleCAwMzA5NTJmLi5lMzI1NGZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2NzNTUyMC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTIwLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqCiAgKiBEb2N1bWVudGF0aW9uOgotICoJTm90IHB1YmxpY2FsbHkgYXZhaWxhYmxlLgorICoJTm90IHB1YmxpY2x5IGF2YWlsYWJsZS4KICAqLwogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9tcGlpeC5jIGIvZHJpdmVycy9hdGEvcGF0YV9tcGlpeC5jCmluZGV4IGIyMWYwMDIuLmQ4ZDljNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfbXBpaXguYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMKQEAgLTE1LDcgKzE1LDcgQEAKICAqIHdpdGggUENJIElERSBhbmQgYWxzbyB0aGF0IHdlIGRvIG5vdCBkaXNhYmxlIHRoZSBkZXZpY2Ugd2hlbiBvdXIgZHJpdmVyIGlzCiAgKiB1bmxvYWRlZCAoYXMgaXQgaGFzIG1hbnkgb3RoZXIgZnVuY3Rpb25zKS4KICAqCi0gKiBUaGUgZHJpdmVyIGNvbmNpb3VzbHkga2VlcHMgdGhpcyBsb2dpYyBpbnRlcm5hbGx5IHRvIGF2b2lkIHB1c2hpbmcgcXVpcmt5CisgKiBUaGUgZHJpdmVyIGNvbnNjaW91c2x5IGtlZXBzIHRoaXMgbG9naWMgaW50ZXJuYWxseSB0byBhdm9pZCBwdXNoaW5nIHF1aXJreQogICogUEFUQSBoaXN0b3J5IGludG8gdGhlIGNsZWFuIGxpYmF0YSBsYXllci4KICAqCiAgKiBUaGlua3BhZCBzcGVjaWZpYyBub3RlOiBJZiB5b3UgYm9vdCBhbiBNUElJWCB1c2luZyBhIHRoaW5rcGFkIHdpdGggYSBQQ01DSUEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfcnoxMDAwLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3J6MTAwMC5jCmluZGV4IDRhNDU0YTguLjRkMDQ0NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfcnoxMDAwLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9yejEwMDAuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CiAKLQkvKiBJZiB0aGlzIGZhaWxzIG9uIHJlc3VtZSAod2hpY2ggaXMgYSAiY2FudCBoYXBwZW4iIGNhc2UpLCB3ZQorCS8qIElmIHRoaXMgZmFpbHMgb24gcmVzdW1lICh3aGljaCBpcyBhICJjYW4ndCBoYXBwZW4iIGNhc2UpLCB3ZQogCSAgIG11c3Qgc3RvcCBhcyBhbnkgcHJvZ3Jlc3Mgcmlza3MgZGF0YSBsb3NzICovCiAJaWYgKHJ6MTAwMF9maWZvX2Rpc2FibGUocGRldikpCiAJCXBhbmljKCJyejEwMDAgZmlmbyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lsNjgwLmMKaW5kZXggMDBlZWZiZC4uMTE4Nzg3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogIE1heSBiZSBjb3BpZWQgb3IgbW9kaWZpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICoKLSAqICBEb2N1bWVudGF0aW9uIHB1YmxpY2FsbHkgYXZhaWxhYmxlLgorICogIERvY3VtZW50YXRpb24gcHVibGljbHkgYXZhaWxhYmxlLgogICoKICAqCUlmIHlvdSBoYXZlIHN0cmFuZ2UgcHJvYmxlbXMgd2l0aCBuVmlkaWEgY2hpcHNldCBzeXN0ZW1zIHBsZWFzZQogICoJc2VlIHRoZSBTSSBzdXBwb3J0IGRvY3VtZW50YXRpb24gYW5kIHVwZGF0ZSB5b3VyIHN5c3RlbSBCSU9TCkBAIC00Myw3ICs0Myw3IEBACiAgKgogICoJVHVybiBhIGNvbmZpZyByZWdpc3RlciBvZmZzZXQgaW50byB0aGUgcmlnaHQgYWRkcmVzcyBpbiBlaXRoZXIKICAqCVBDSSBzcGFjZSBvciBNTUlPIHNwYWNlIHRvIGFjY2VzcyB0aGUgY29udHJvbCByZWdpc3RlciBpbiBxdWVzdGlvbgotICoJVGhhbmtmdWxseSB0aGlzIGlzIGEgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gc28gaXNudCBwZXJmb3JtYW5jZQorICoJVGhhbmtmdWxseSB0aGlzIGlzIGEgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gc28gaXNuJ3QgcGVyZm9ybWFuY2UKICAqCWNyaXRpY2lhbC4KICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3Npcy5jIGIvZHJpdmVycy9hdGEvcGF0YV9zaXMuYwppbmRleCBjMDRhYmMzLi5iZTA4ZmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3Npcy5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lzLmMKQEAgLTMzMSw3ICszMzEsNyBAQAogCiAJaWYgKGFkZXYtPmRtYV9tb2RlIDwgWEZFUl9VRE1BXzApIHsKIAkJLyogYml0cyAzLTAgaG9sZCByZWNvdmVyeSB0aW1pbmcgYml0cyA4LTEwIGFjdGl2ZSB0aW1pbmcgYW5kCi0JCSAgIHRoZSBoaWdoZXIgYml0cyBhcmUgZGVwZW5kYW50IG9uIHRoZSBkZXZpY2UgKi8KKwkJICAgdGhlIGhpZ2hlciBiaXRzIGFyZSBkZXBlbmRlbnQgb24gdGhlIGRldmljZSAqLwogCQl0aW1pbmcgJj0gfjB4ODcwRjsKIAkJdGltaW5nIHw9IG13ZG1hX2JpdHNbc3BlZWRdOwogCX0gZWxzZSB7CkBAIC0zNzEsNyArMzcxLDcgQEAKIAogCWlmIChhZGV2LT5kbWFfbW9kZSA8IFhGRVJfVURNQV8wKSB7CiAJCS8qIGJpdHMgMy0wIGhvbGQgcmVjb3ZlcnkgdGltaW5nIGJpdHMgOC0xMCBhY3RpdmUgdGltaW5nIGFuZAotCQkgICB0aGUgaGlnaGVyIGJpdHMgYXJlIGRlcGVuZGFudCBvbiB0aGUgZGV2aWNlLCBiaXQgMTUgdWRtYSAqLworCQkgICB0aGUgaGlnaGVyIGJpdHMgYXJlIGRlcGVuZGVudCBvbiB0aGUgZGV2aWNlLCBiaXQgMTUgdWRtYSAqLwogCQl0aW1pbmcgJj0gfjB4ODcwRjsKIAkJdGltaW5nIHw9IG13ZG1hX2JpdHNbc3BlZWRdOwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3RyaWZsZXguYyBiL2RyaXZlcnMvYXRhL3BhdGFfdHJpZmxleC5jCmluZGV4IDBkMWY4OWUuLjAzYjZkNjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfdHJpZmxleC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfdHJpZmxleC5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiBMb29zZWx5IGJhc2VkIG9uIHRoZSBwaWl4ICYgc3Z3a3MgZHJpdmVycy4KICAqCiAgKiBEb2N1bWVudGF0aW9uOgotICoJTm90IHB1YmxpY2FsbHkgYXZhaWxhYmxlLgorICoJTm90IHB1YmxpY2x5IGF2YWlsYWJsZS4KICAqLwogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX2ZzbC5jIGIvZHJpdmVycy9hdGEvc2F0YV9mc2wuYwppbmRleCAwZjkxZTU4Li4zNWE3MWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9zYXRhX2ZzbC5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfZnNsLmMKQEAgLTQyLDcgKzQyLDcgQEAKIAogCS8qCiAJICogU0FUQS1GU0wgaG9zdCBjb250cm9sbGVyIHN1cHBvcnRzIGEgbWF4LiBvZiAoMTUrMSkgZGlyZWN0IFBSREVzLCBhbmQKLQkgKiBjaGFpbmVkIGluZGlyZWN0IFBSREVzIHVwdG8gYSBtYXggY291bnQgb2YgNjMuCisJICogY2hhaW5lZCBpbmRpcmVjdCBQUkRFcyB1cCB0byBhIG1heCBjb3VudCBvZiA2My4KIAkgKiBXZSBhcmUgYWxsb2NhdGluZyBhbiBhcnJheSBvZiA2MyBQUkRFcyBjb250aWd1b3VzbHksIGJ1dCBQUkRFIzE1IHdpbGwKIAkgKiBiZSBzZXR1cCBhcyBhbiBpbmRpcmVjdCBkZXNjcmlwdG9yLCBwb2ludGluZyB0byBpdCdzIG5leHQKIAkgKiAoY29udGlndW91cykgUFJERS4gVGhvdWdoIGNoYWluZWQgaW5kaXJlY3QgUFJERSBhcnJheXMgYXJlCkBAIC05MDcsNyArOTA3LDcgQEAKIAlhdGFfbXNsZWVwKGFwLCAxKTsKIAogCS8qCi0JICogU0FUQSBkZXZpY2UgZW50ZXJzIHJlc2V0IHN0YXRlIGFmdGVyIHJlY2V2aW5nIGEgQ29udHJvbCByZWdpc3RlcgorCSAqIFNBVEEgZGV2aWNlIGVudGVycyByZXNldCBzdGF0ZSBhZnRlciByZWNlaXZpbmcgYSBDb250cm9sIHJlZ2lzdGVyCiAJICogRklTIHdpdGggU1JTVCBiaXQgYXNzZXJ0ZWQgYW5kIGl0IGF3YWl0cyBhbm90aGVyIEgyRCBDb250cm9sIHJlZy4KIAkgKiBGSVMgd2l0aCBTUlNUIGJpdCBjbGVhcmVkLCB0aGVuIHRoZSBkZXZpY2UgZG9lcyBpbnRlcm5hbCBkaWFncyAmCiAJICogaW5pdGlhbGl6YXRpb24sIGZvbGxvd2VkIGJ5IGluZGljYXRpbmcgaXQncyBpbml0aWFsaXphdGlvbiBzdGF0dXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3NhdGFfbXYuYyBiL2RyaXZlcnMvYXRhL3NhdGFfbXYuYwppbmRleCBjZDQwNjUxLi5iNTJjMDUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9zYXRhX212LmMKKysrIGIvZHJpdmVycy9hdGEvc2F0YV9tdi5jCkBAIC0xMzUyLDcgKzEzNTIsNyBAQAogCQkJLyoKIAkJCSAqIFdvcmthcm91bmQgZm9yIDg4U1g2MHgxIEZFciBTQVRBIzI2OgogCQkJICoKLQkJCSAqIENPTVJFU0VUcyBoYXZlIHRvIHRha2UgY2FyZSBub3QgdG8gYWNjaWRlbnRseQorCQkJICogQ09NUkVTRVRzIGhhdmUgdG8gdGFrZSBjYXJlIG5vdCB0byBhY2NpZGVudGFsbHkKIAkJCSAqIHB1dCB0aGUgZHJpdmUgdG8gc2xlZXAgd2hlbiB3cml0aW5nIFNDUl9DT05UUk9MLgogCQkJICogU2V0dGluZyBiaXRzIDEyLi4xNSBwcmV2ZW50cyB0aGlzIHByb2JsZW0uCiAJCQkgKgpAQCAtMjA0NCw3ICsyMDQ0LDcgQEAKIAogCWN3ID0gJnBwLT5jcnFiW2luX2luZGV4XS5hdGFfY21kWzBdOwogCi0JLyogU2FkbHksIHRoZSBDUlFCIGNhbm5vdCBhY2NvbW9kYXRlIGFsbCByZWdpc3RlcnMtLXRoZXJlIGFyZQorCS8qIFNhZGx5LCB0aGUgQ1JRQiBjYW5ub3QgYWNjb21tb2RhdGUgYWxsIHJlZ2lzdGVycy0tdGhlcmUgYXJlCiAJICogb25seSAxMSBieXRlcy4uLnNvIHdlIG11c3QgcGljayBhbmQgY2hvb3NlIHJlcXVpcmVkCiAJICogcmVnaXN0ZXJzIGJhc2VkIG9uIHRoZSBjb21tYW5kLiAgU28sIHdlIGRyb3AgZmVhdHVyZSBhbmQKIAkgKiBob2JfZmVhdHVyZSBmb3IgW1JXXSBETUEgY29tbWFuZHMsIGJ1dCB0aGV5IGFyZSBuZWVkZWQgZm9yCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX252LmMgYi9kcml2ZXJzL2F0YS9zYXRhX252LmMKaW5kZXggNDIzNDRlMy4uZjE3M2VmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0YV9udi5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfbnYuYwpAQCAtMjEyMSw3ICsyMTIxLDcgQEAKIAogCWhvc3Rfc3RhdCA9IGFwLT5vcHMtPmJtZG1hX3N0YXR1cyhhcCk7CiAJaWYgKHVubGlrZWx5KGhvc3Rfc3RhdCAmIEFUQV9ETUFfRVJSKSkgewotCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KKwkJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcnJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLwogCQlhdGFfZWhpX2NsZWFyX2Rlc2MoZWhpKTsKIAkJYXRhX2VoaV9wdXNoX2Rlc2MoZWhpLCAiQk1ETUEgc3RhdCAweCV4IiwgaG9zdF9zdGF0KTsKIAkJZWhpLT5lcnJfbWFzayB8PSBBQ19FUlJfSE9TVF9CVVM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX3ZpYS5jIGIvZHJpdmVycy9hdGEvc2F0YV92aWEuYwppbmRleCAyMTI0MmM1Li41NDQzNGRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9zYXRhX3ZpYS5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfdmlhLmMKQEAgLTU4Miw3ICs1ODIsNyBAQAogCSAqIFdoZW4gaG9zdCBpc3N1ZXMgSE9MRCwgZGV2aWNlIG1heSBzZW5kIHVwIHRvIDIwRFcgb2YgZGF0YQogCSAqIGJlZm9yZSBhY2tub3dsZWRnaW5nIGl0IHdpdGggSE9MREEgYW5kIHRoZSBob3N0IHNob3VsZCBiZQogCSAqIGFibGUgdG8gYnVmZmVyIHRoZW0gaW4gRklGTy4gIFVuZm9ydHVuYXRlbHksIHNvbWUgV0QgZHJpdmVzCi0JICogc2VuZCB1cHRvIDQwRFcgYmVmb3JlIGFja25vd2xlZGdpbmcgSE9MRCBhbmQsIGluIHRoZQorCSAqIHNlbmQgdXAgdG8gNDBEVyBiZWZvcmUgYWNrbm93bGVkZ2luZyBIT0xEIGFuZCwgaW4gdGhlCiAJICogZGVmYXVsdCBjb25maWd1cmF0aW9uLCB0aGlzIGVuZHMgdXAgb3ZlcmZsb3dpbmcgdnQ2NDIxJ3MKIAkgKiBGSUZPLCBtYWtpbmcgdGhlIGNvbnRyb2xsZXIgYWJvcnQgdGhlIHRyYW5zYWN0aW9uIHdpdGgKIAkgKiBSX0VSUi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2FtYmFzc2Fkb3IuYyBiL2RyaXZlcnMvYXRtL2FtYmFzc2Fkb3IuYwppbmRleCA5ZjQ3ZTg2Li5hNWZjYjFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9hbWJhc3NhZG9yLmMKKysrIGIvZHJpdmVycy9hdG0vYW1iYXNzYWRvci5jCkBAIC00OTcsNyArNDk3LDcgQEAKIAkgIC8vIFZDIGxheWVyIHN0YXRzCiAJICBhdG9taWNfaW5jKCZhdG1fdmNjLT5zdGF0cy0+cngpOwogCSAgX19uZXRfdGltZXN0YW1wKHNrYik7Ci0JICAvLyBlbmQgb2Ygb3VyIHJlc3BvbnNhYmlsaXR5CisJICAvLyBlbmQgb2Ygb3VyIHJlc3BvbnNpYmlsaXR5CiAJICBhdG1fdmNjLT5wdXNoIChhdG1fdmNjLCBza2IpOwogCSAgcmV0dXJuOwogCSAgCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMgYi9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMKaW5kZXggMDQ5NjUwZC4uZWY3YTY1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vZmlyZXN0cmVhbS5jCisrKyBiL2RyaXZlcnMvYXRtL2ZpcmVzdHJlYW0uYwpAQCAtMTc4Miw3ICsxNzgyLDcgQEAKIAkJd3JpdGVfZnMgKGRldiwgUkFTMCwgUkFTMF9EQ0RfWEhMVCAKIAkJCSAgfCAoKCgxIDw8IEZTMTU1X1ZQSV9CSVRTKSAtIDEpICogUkFTMF9WUFNFTCkKIAkJCSAgfCAoKCgxIDw8IEZTMTU1X1ZDSV9CSVRTKSAtIDEpICogUkFTMF9WQ1NFTCkpOwotCQkvKiBXZSBjYW4gY2hvc2UgdGhlIHNwbGl0IGFyYml0YXJpbHkuIFdlIG1pZ2h0IGJlIGFibGUgdG8gCisJCS8qIFdlIGNhbiBjaG9zZSB0aGUgc3BsaXQgYXJiaXRyYXJpbHkuIFdlIG1pZ2h0IGJlIGFibGUgdG8gCiAJCSAgIHN1cHBvcnQgbW9yZS4gV2hhdGV2ZXIuIFRoaXMgc2hvdWxkIGRvIGZvciBub3cuICovCiAJCWRldi0+YXRtX2Rldi0+Y2lfcmFuZ2UudnBpX2JpdHMgPSBGUzE1NV9WUElfQklUUzsKIAkJZGV2LT5hdG1fZGV2LT5jaV9yYW5nZS52Y2lfYml0cyA9IEZTMTU1X1ZDSV9CSVRTOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vZm9yZTIwMGUuaCBiL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmgKaW5kZXggN2Y5N2MwOS4uYmEzNGEwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vZm9yZTIwMGUuaAorKysgYi9kcml2ZXJzL2F0bS9mb3JlMjAwZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAKIH0gb3Bjb2RlX3Q7CiAKIAotLyogdmlydHVhbCBwYXRoIC8gdmlydHVhbCBjaGFubmVsIGlkZW50aWZlcnMgKi8KKy8qIHZpcnR1YWwgcGF0aCAvIHZpcnR1YWwgY2hhbm5lbCBpZGVudGlmaWVycyAqLwogCiB0eXBlZGVmIHN0cnVjdCB2cHZjIHsKICAgICBCSVRGSUVMRDMoCkBAIC05MjYsNyArOTI2LDcgQEAKIAogI2RlZmluZSBQQ0EyMDBFX1BDSV9MQVRFTkNZICAgICAgMHg0MCAgICAvKiBtYXhpbXVtIHNsYXZlIGxhdGVudHkgICAgICAgICAgICAqLwogI2RlZmluZSBQQ0EyMDBFX1BDSV9NQVNURVJfQ1RSTCAgMHg0MSAgICAvKiBtYXN0ZXIgY29udHJvbCAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBQQ0EyMDBFX1BDSV9USFJFU0hPTEQgICAgMHg0MiAgICAvKiBidXJzdCAvIGNvbnRpbm91cyByZXEgdGhyZXNob2xkICAqLworI2RlZmluZSBQQ0EyMDBFX1BDSV9USFJFU0hPTEQgICAgMHg0MiAgICAvKiBidXJzdCAvIGNvbnRpbnVvdXMgcmVxIHRocmVzaG9sZCAgKi8KIAogLyogUEJJIG1hc3RlciBjb250cm9sIHJlZ2lzdGVyICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2hvcml6b24uYyBiL2RyaXZlcnMvYXRtL2hvcml6b24uYwppbmRleCAyNDc2MWUxLi5kNThlM2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9ob3Jpem9uLmMKKysrIGIvZHJpdmVycy9hdG0vaG9yaXpvbi5jCkBAIC0xNjksMTMgKzE2OSwxMyBAQAogICBSZWFsIFRpbWUgKGNkdiBhbmQgbWF4IENEVCBnaXZlbikKICAgCiAgIENCUihwY3IpICAgICAgICAgICAgIHBjciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZQotICBydFZCUihwY3Isc2NyLG1icykgICBzY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUsIHVwdG8gcGNyIGF0IG1icyB0b28KKyAgcnRWQlIocGNyLHNjcixtYnMpICAgc2NyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlLCB1cCB0byBwY3IgYXQgbWJzIHRvbwogICAKICAgTm9uIFJlYWwgVGltZQogICAKLSAgbnJ0VkJSKHBjcixzY3IsbWJzKSAgc2NyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlLCB1cHRvIHBjciBhdCBtYnMgdG9vCisgIG5ydFZCUihwY3Isc2NyLG1icykgIHNjciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZSwgdXAgdG8gcGNyIGF0IG1icyB0b28KICAgVUJSKCkKLSAgQUJSKG1jcixwY3IpICAgICAgICAgbWNyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlLCB1cHRvIHBjciAoZGVwZW5kaW5nKSB0b28KKyAgQUJSKG1jcixwY3IpICAgICAgICAgbWNyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlLCB1cCB0byBwY3IgKGRlcGVuZGluZykgdG9vCiAgIAogICBtYnMgaXMgbWF4IGJ1cnN0IHNpemUgKGJ1Y2tldCkKICAgcGNyIGFuZCBzY3IgaGF2ZSBhc3NvY2lhdGVkIGNkdnQgdmFsdWVzCkBAIC05NDQsNyArOTQ0LDcgQEAKIC8vIHRvIGJlIGZpeGVkIHNvb24sIHNvIGRvIG5vdCBkZWZpbmUgVEFJTFJFQ1VTUklPTldPUktTIHVubGVzcyB5b3UKIC8vIGFyZSBzdXJlIGl0IGRvZXMgYXMgeW91IG1heSBvdGhlcndpc2Ugb3ZlcmZsb3cgdGhlIGtlcm5lbCBzdGFjay4KIAotLy8gZ2l2aW5nIHRoaXMgZm4gYSByZXR1cm4gdmFsdWUgd291bGQgaGVscCBHQ0MsIGFsbGVkZ2VkbHkKKy8vIGdpdmluZyB0aGlzIGZuIGEgcmV0dXJuIHZhbHVlIHdvdWxkIGhlbHAgR0NDLCBhbGxlZ2VkbHkKIAogc3RhdGljIHZvaWQgcnhfc2NoZWR1bGUgKGhyel9kZXYgKiBkZXYsIGludCBpcnEpIHsKICAgdW5zaWduZWQgaW50IHJ4X2J5dGVzOwpAQCAtMTAzNiw3ICsxMDM2LDcgQEAKIAkgIC8vIFZDIGxheWVyIHN0YXRzCiAJICBhdG9taWNfaW5jKCZ2Y2MtPnN0YXRzLT5yeCk7CiAJICBfX25ldF90aW1lc3RhbXAoc2tiKTsKLQkgIC8vIGVuZCBvZiBvdXIgcmVzcG9uc2FiaWxpdHkKKwkgIC8vIGVuZCBvZiBvdXIgcmVzcG9uc2liaWxpdHkKIAkgIHZjYy0+cHVzaCAodmNjLCBza2IpOwogCX0KICAgICAgIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmMgYi9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5jCmluZGV4IGJmYjdmZWUuLjA0OGY5OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmMKKysrIGIvZHJpdmVycy9hdG0vaWR0NzcyNTIuYwpAQCAtMzQ5NSw3ICszNDk1LDcgQEAKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAoZGV2LT5waHktPmlvY3RsID09IE5VTEwpIHsKLQkJcHJpbnRrKCIlczogTFQgaGFkIG5vIElPQ1RMIGZ1bnRpb24gZGVmaW5lZC5cbiIsIGNhcmQtPm5hbWUpOworCQlwcmludGsoIiVzOiBMVCBoYWQgbm8gSU9DVEwgZnVuY3Rpb24gZGVmaW5lZC5cbiIsIGNhcmQtPm5hbWUpOwogCQlkZWluaXRfY2FyZChjYXJkKTsKIAkJcmV0dXJuIC0xOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmggYi9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5oCmluZGV4IGY1M2E0M2EuLjNhODJjYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmgKKysrIGIvZHJpdmVycy9hdG0vaWR0NzcyNTIuaApAQCAtNzY2LDcgKzc2Niw3IEBACiAjZGVmaW5lIFNBUl9SQ1RFX0JVRkZTVEFUX01BU0sgMHgwMDAwMzAwMCAgLyogYnVmZmVyIHN0YXR1cyAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFNBUl9SQ1RFX0VGQ0kgICAgICAgICAgMHgwMDAwMDgwMCAgLyogRUZDSSBDb25nZXN0aW9uIGZsYWcgICAgICAgICAgICovCiAjZGVmaW5lIFNBUl9SQ1RFX0NMUCAgICAgICAgICAgMHgwMDAwMDQwMCAgLyogQ2VsbCBMb3NzIFByaW9yaXR5IGZsYWcgICAgICAgICovCi0jZGVmaW5lIFNBUl9SQ1RFX0NSQyAgICAgICAgICAgMHgwMDAwMDIwMCAgLyogUmVjaWV2ZWQgQ1JDIEVycm9yICAgICAgICAgICAgICovCisjZGVmaW5lIFNBUl9SQ1RFX0NSQyAgICAgICAgICAgMHgwMDAwMDIwMCAgLyogUmVjZWl2ZWQgQ1JDIEVycm9yICAgICAgICAgICAgICovCiAjZGVmaW5lIFNBUl9SQ1RFX0NFTExDTlRfTUFTSyAgMHgwMDAwMDFGRiAgLyogY2VsbCBDb3VudCAgICAgICAgICAgICAgICAgICAgICovCiAKICNkZWZpbmUgU0FSX1JDVEVfQUFMMCAgICAgICAgICAweDAwMDAwMDAwICAvKiBBQUwgdHlwZXMgZm9yIEFMTCBmaWVsZCAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2lwaGFzZS5jIGIvZHJpdmVycy9hdG0vaXBoYXNlLmMKaW5kZXggZDgwZDUxYi4uMWM2NzRhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vaXBoYXNlLmMKKysrIGIvZHJpdmVycy9hdG0vaXBoYXNlLmMKQEAgLTEwMjUsNyArMTAyNSw3IEBACiB9IAogICAKICAgCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlY2lldmluZyBzaWRlIHN0dWZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gIAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWNlaXZpbmcgc2lkZSBzdHVmZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAKICAKIHN0YXRpYyB2b2lkIHJ4X2V4Y3BfcmN2ZChzdHJ1Y3QgYXRtX2RldiAqZGV2KSAgCiB7ICAKQEAgLTExOTUsNyArMTE5NSw3IEBACiAgIGlmIChzdGF0dXMgJiBSWF9QS1RfUkNWRCkgIAogICB7ICAKIAkvKiBkbyBzb21ldGhpbmcgKi8gIAotCS8qIEJhc2ljYWxseSByZWN2ZCBhbiBpbnRlcnJ1cHQgZm9yIHJlY2V2aW5nIGEgcGFja2V0LiAgCisJLyogQmFzaWNhbGx5IHJlY3ZkIGFuIGludGVycnVwdCBmb3IgcmVjZWl2aW5nIGEgcGFja2V0LiAgCiAJQSBkZXNjcmlwdG9yIHdvdWxkIGhhdmUgYmVlbiB3cml0dGVuIHRvIHRoZSBwYWNrZXQgY29tcGxldGUgICAKIAlxdWV1ZS4gR2V0IGFsbCB0aGUgZGVzY3JpcHRvcnMgYW5kIHNldCB1cCBkbWEgdG8gbW92ZSB0aGUgICAKIAlwYWNrZXRzIHRpbGwgdGhlIHBhY2tldCBjb21wbGV0ZSBxdWV1ZSBpcyBlbXB0eS4uICAKQEAgLTE4NTUsNyArMTg1NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOyAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHZjYy0+cW9zLnR4dHAubWF4X3BjciA+IGlhZGV2LT5MaW5lUmF0ZSkgewotICAgICAgICAgICAgICAgICAgIElGX0NCUihwcmludGsoIlBDUiBpcyBub3QgYXZhaWxibGVcbiIpOykKKyAgICAgICAgICAgICAgICAgICBJRl9DQlIocHJpbnRrKCJQQ1IgaXMgbm90IGF2YWlsYWJsZVxuIik7KQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdmMtPnR5cGUgPSBDQlI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9sYW5haS5jIGIvZHJpdmVycy9hdG0vbGFuYWkuYwppbmRleCA1Mjg4MGM4Li40ZThiYTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9sYW5haS5jCisrKyBiL2RyaXZlcnMvYXRtL2xhbmFpLmMKQEAgLTEyNTUsNyArMTI1NSw3IEBACiAJLyoKIAkgKiBTaW5jZSB0aGUgImJ1dHQgcmVnaXN0ZXIiIGlzIGEgc2hhcmVkIHJlc291bmNlIG9uIHRoZSBjYXJkIHdlCiAJICogc2VyaWFsaXplIGFsbCBhY2Nlc3NlcyB0byBpdCB0aHJvdWdoIHRoaXMgc3BpbmxvY2suICBUaGlzIGlzCi0JICogbW9zdGx5IGp1c3QgcGFyYW5vaWEgc2ljbmUgdGhlIHJlZ2lzdGVyIGlzIHJhcmVseSAiYnVzeSIgYW55d2F5CisJICogbW9zdGx5IGp1c3QgcGFyYW5vaWEgc2luY2UgdGhlIHJlZ2lzdGVyIGlzIHJhcmVseSAiYnVzeSIgYW55d2F5CiAJICogYnV0IGlzIG5lZWRlZCBmb3IgY29ycmVjdG5lc3MuCiAJICovCiAJc3Bpbl9sb2NrKCZsYW5haS0+ZW5kdHhsb2NrKTsKQEAgLTE5OTAsNyArMTk5MCw3IEBACiAKIC8qCiAgKiBXZSBfY2FuXyB1c2UgVkNJPT0wIGZvciBub3JtYWwgdHJhZmZpYywgYnV0IG9ubHkgZm9yIFVCUiAob3Igd2UnbGwKLSAqIGdldCBhIENCUlpFUk8gaW50ZXJydXB0KSwgYW5kIHdlIGNhbiB1c2UgaXQgb25seSBpZiBub29uZSBpcyByZWNlaXZpbmcKKyAqIGdldCBhIENCUlpFUk8gaW50ZXJydXB0KSwgYW5kIHdlIGNhbiB1c2UgaXQgb25seSBpZiBubyBvbmUgaXMgcmVjZWl2aW5nCiAgKiBBQUwwIHRyYWZmaWMgKHNpbmNlIHRoZXkgd2lsbCB1c2UgdGhlIHNhbWUgcXVldWUpIC0gYWNjb3JkaW5nIHRvIHRoZQogICogZG9jcyB3ZSBzaG91bGRuJ3QgZXZlbiB1c2UgaXQgZm9yIEFBTDAgdHJhZmZpYwogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F1eGRpc3BsYXkvY2ZhZzEyODY0Yi5jIGIvZHJpdmVycy9hdXhkaXNwbGF5L2NmYWcxMjg2NGIuYwppbmRleCA0OTc1ODU5Li40MWNlNGJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F1eGRpc3BsYXkvY2ZhZzEyODY0Yi5jCisrKyBiL2RyaXZlcnMvYXV4ZGlzcGxheS9jZmFnMTI4NjRiLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2ZhZzEyODY0Yl9yYXRlID0gQ09ORklHX0NGQUcxMjg2NEJfUkFURTsKIG1vZHVsZV9wYXJhbShjZmFnMTI4NjRiX3JhdGUsIHVpbnQsIFNfSVJVR08pOwogTU9EVUxFX1BBUk1fREVTQyhjZmFnMTI4NjRiX3JhdGUsCi0JIlJlZnJlc2ggcmF0ZSAoaGVydHpzKSIpOworCSJSZWZyZXNoIHJhdGUgKGhlcnR6KSIpOwogCiB1bnNpZ25lZCBpbnQgY2ZhZzEyODY0Yl9nZXRyYXRlKHZvaWQpCiB7CkBAIC02MCw3ICs2MCw3IEBACiAgKiBjZmFnMTI4NjRiIENvbW1hbmRzCiAgKgogICoJRSA9IEVuYWJsZSBzaWduYWwKLSAqCQlFdmVyeXRpbWUgRSBzd2l0Y2ggZnJvbSBsb3cgdG8gaGlnaCwKKyAqCQlFdmVyeSB0aW1lIEUgc3dpdGNoIGZyb20gbG93IHRvIGhpZ2gsCiAgKgkJY2ZhZzEyODY0Yi9rczAxMDggcmVhZHMgdGhlIGNvbW1hbmQvZGF0YS4KICAqCiAgKglDUzEgPSBGaXJzdCBrczAxMDhjb250cm9sbGVyLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL3Bvd2VyL3J1bnRpbWUuYyBiL2RyaXZlcnMvYmFzZS9wb3dlci9ydW50aW1lLmMKaW5kZXggNTQ1OTdjOC4uMzE3MmM2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL3Bvd2VyL3J1bnRpbWUuYworKysgYi9kcml2ZXJzL2Jhc2UvcG93ZXIvcnVudGltZS5jCkBAIC00NDMsNyArNDQzLDcgQEAKICAqCiAgKiBDaGVjayBpZiB0aGUgZGV2aWNlJ3MgcnVuLXRpbWUgUE0gc3RhdHVzIGFsbG93cyBpdCB0byBiZSByZXN1bWVkLiAgQ2FuY2VsCiAgKiBhbnkgc2NoZWR1bGVkIG9yIHBlbmRpbmcgcmVxdWVzdHMuICBJZiBhbm90aGVyIHJlc3VtZSBoYXMgYmVlbiBzdGFydGVkCi0gKiBlYXJsaWVyLCBlaXRoZXIgcmV0dXJuIGltZWRpYXRlbHkgb3Igd2FpdCBmb3IgaXQgdG8gZmluaXNoLCBkZXBlbmRpbmcgb24gdGhlCisgKiBlYXJsaWVyLCBlaXRoZXIgcmV0dXJuIGltbWVkaWF0ZWx5IG9yIHdhaXQgZm9yIGl0IHRvIGZpbmlzaCwgZGVwZW5kaW5nIG9uIHRoZQogICogUlBNX05PV0FJVCBhbmQgUlBNX0FTWU5DIGZsYWdzLiAgU2ltaWxhcmx5LCBpZiB0aGVyZSdzIGEgc3VzcGVuZCBydW5uaW5nIGluCiAgKiBwYXJhbGxlbCB3aXRoIHRoaXMgZnVuY3Rpb24sIGVpdGhlciB0ZWxsIHRoZSBvdGhlciBwcm9jZXNzIHRvIHJlc3VtZSBhZnRlcgogICogc3VzcGVuZGluZyAoZGVmZXJyZWRfcmVzdW1lKSBvciB3YWl0IGZvciBpdCB0byBmaW5pc2guICBJZiB0aGUgUlBNX0FTWU5DCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2Uvc3lzLmMgYi9kcml2ZXJzL2Jhc2Uvc3lzLmMKaW5kZXggZmJlNzJkYS4uYWNkZTliNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL3N5cy5jCisrKyBiL2RyaXZlcnMvYmFzZS9zeXMuYwpAQCAtMTk3LDcgKzE5Nyw3IEBACiB9CiAKIC8qKgotICoJc3lzZGV2X2RyaXZlcl9yZWdpc3RlciAtIFJlZ2lzdGVyIGF1eGlsbGFyeSBkcml2ZXIKKyAqCXN5c2Rldl9kcml2ZXJfcmVnaXN0ZXIgLSBSZWdpc3RlciBhdXhpbGlhcnkgZHJpdmVyCiAgKglAY2xzOglEZXZpY2UgY2xhc3MgZHJpdmVyIGJlbG9uZ3MgdG8uCiAgKglAZHJ2OglEcml2ZXIuCiAgKgpAQCAtMjUwLDcgKzI1MCw3IEBACiB9CiAKIC8qKgotICoJc3lzZGV2X2RyaXZlcl91bnJlZ2lzdGVyIC0gUmVtb3ZlIGFuIGF1eGlsbGFyeSBkcml2ZXIuCisgKglzeXNkZXZfZHJpdmVyX3VucmVnaXN0ZXIgLSBSZW1vdmUgYW4gYXV4aWxpYXJ5IGRyaXZlci4KICAqCUBjbHM6CUNsYXNzIGRyaXZlciBiZWxvbmdzIHRvLgogICoJQGRydjoJRHJpdmVyLgogICovCkBAIC0zMDIsNyArMzAyLDcgQEAKIAkJICogY29kZSB0aGF0IHNob3VsZCBoYXZlIGNhbGxlZCB1cy4KIAkJICovCiAKLQkJLyogTm90aWZ5IGNsYXNzIGF1eGlsbGFyeSBkcml2ZXJzICovCisJCS8qIE5vdGlmeSBjbGFzcyBhdXhpbGlhcnkgZHJpdmVycyAqLwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRydiwgJmNscy0+ZHJpdmVycywgZW50cnkpIHsKIAkJCWlmIChkcnYtPmFkZCkKIAkJCQlkcnYtPmFkZChzeXNkZXYpOwpAQCAtMzM1LDcgKzMzNSw3IEBACiAgKgogICoJTG9vcCBvdmVyIGVhY2ggY2xhc3Mgb2Ygc3lzdGVtIGRldmljZXMsIGFuZCB0aGUgZGV2aWNlcyBpbiBlYWNoCiAgKglvZiB0aG9zZSBjbGFzc2VzLiBGb3IgZWFjaCBkZXZpY2UsIHdlIGNhbGwgdGhlIHNodXRkb3duIG1ldGhvZCBmb3IKLSAqCWVhY2ggZHJpdmVyIHJlZ2lzdGVyZWQgZm9yIHRoZSBkZXZpY2UgLSB0aGUgYXV4aWxsYXJpZXMsCisgKgllYWNoIGRyaXZlciByZWdpc3RlcmVkIGZvciB0aGUgZGV2aWNlIC0gdGhlIGF1eGlsaWFyaWVzLAogICoJYW5kIHRoZSBjbGFzcyBkcml2ZXIuCiAgKgogICoJTm90ZTogVGhlIGxpc3QgaXMgaXRlcmF0ZWQgaW4gcmV2ZXJzZSBvcmRlciwgc28gdGhhdCB3ZSBzaHV0IGRvd24KQEAgLTM2MCw3ICszNjAsNyBAQAogCQkJc3RydWN0IHN5c2Rldl9kcml2ZXIgKmRydjsKIAkJCXByX2RlYnVnKCIgJXNcbiIsIGtvYmplY3RfbmFtZSgmc3lzZGV2LT5rb2JqKSk7CiAKLQkJCS8qIENhbGwgYXV4aWxsYXJ5IGRyaXZlcnMgZmlyc3QgKi8KKwkJCS8qIENhbGwgYXV4aWxpYXJ5IGRyaXZlcnMgZmlyc3QgKi8KIAkJCWxpc3RfZm9yX2VhY2hfZW50cnkoZHJ2LCAmY2xzLT5kcml2ZXJzLCBlbnRyeSkgewogCQkJCWlmIChkcnYtPnNodXRkb3duKQogCQkJCQlkcnYtPnNodXRkb3duKHN5c2Rldik7CkBAIC0zODUsNyArMzg1LDcgQEAKIAlXQVJOX09OQ0UoIWlycXNfZGlzYWJsZWQoKSwKIAkJIkludGVycnVwdHMgZW5hYmxlZCBhZnRlciAlcEZcbiIsIGNscy0+cmVzdW1lKTsKIAotCS8qIENhbGwgYXV4aWxsYXJ5IGRyaXZlcnMgbmV4dC4gKi8KKwkvKiBDYWxsIGF1eGlsaWFyeSBkcml2ZXJzIG5leHQuICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkcnYsICZjbHMtPmRyaXZlcnMsIGVudHJ5KSB7CiAJCWlmIChkcnYtPnJlc3VtZSkKIAkJCWRydi0+cmVzdW1lKGRldik7CkBAIC00MzIsNyArNDMyLDcgQEAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShzeXNkZXYsICZjbHMtPmtzZXQubGlzdCwga29iai5lbnRyeSkgewogCQkJcHJfZGVidWcoIiAlc1xuIiwga29iamVjdF9uYW1lKCZzeXNkZXYtPmtvYmopKTsKIAotCQkJLyogQ2FsbCBhdXhpbGxhcnkgZHJpdmVycyBmaXJzdCAqLworCQkJLyogQ2FsbCBhdXhpbGlhcnkgZHJpdmVycyBmaXJzdCAqLwogCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShkcnYsICZjbHMtPmRyaXZlcnMsIGVudHJ5KSB7CiAJCQkJaWYgKGRydi0+c3VzcGVuZCkgewogCQkJCQlyZXQgPSBkcnYtPnN1c3BlbmQoc3lzZGV2LCBzdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL0RBQzk2MC5jIGIvZHJpdmVycy9ibG9jay9EQUM5NjAuYwppbmRleCA3OTg4MjEwLi44MDY2ZDA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL0RBQzk2MC5jCisrKyBiL2RyaXZlcnMvYmxvY2svREFDOTYwLmMKQEAgLTE3OTAsNyArMTc5MCw3IEBACiAgIHVuc2lnbmVkIHNob3J0IExvZ2ljYWxEZXZpY2VOdW1iZXIgPSAwOwogICBpbnQgTW9kZWxOYW1lTGVuZ3RoOwogCi0gIC8qIEdldCBkYXRhIGludG8gZG1hLWFibGUgYXJlYSwgdGhlbiBjb3B5IGludG8gcGVybWFuYW50IGxvY2F0aW9uICovCisgIC8qIEdldCBkYXRhIGludG8gZG1hLWFibGUgYXJlYSwgdGhlbiBjb3B5IGludG8gcGVybWFuZW50IGxvY2F0aW9uICovCiAgIGlmICghREFDOTYwX1YyX05ld0NvbnRyb2xsZXJJbmZvKENvbnRyb2xsZXIpKQogICAgIHJldHVybiBEQUM5NjBfRmFpbHVyZShDb250cm9sbGVyLCAiR0VUIENPTlRST0xMRVIgSU5GTyIpOwogICBtZW1jcHkoQ29udHJvbGxlckluZm8sIENvbnRyb2xsZXItPlYyLk5ld0NvbnRyb2xsZXJJbmZvcm1hdGlvbiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2FjdGxvZy5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKaW5kZXggMmExNjQyYi4uYzY4MjhiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogLyogV2UgbWFpbnRhaW4gYSB0cml2aWFsIGNoZWNrIHN1bSBpbiBvdXIgb24gZGlzayBhY3Rpdml0eSBsb2cuCiAgKiBXaXRoIHRoYXQgd2UgY2FuIGVuc3VyZSBjb3JyZWN0IG9wZXJhdGlvbiBldmVuIHdoZW4gdGhlIHN0b3JhZ2UKLSAqIGRldmljZSBtaWdodCBkbyBhIHBhcnRpYWwgKGxhc3QpIHNlY3RvciB3cml0ZSB3aGlsZSBsb29zaW5nIHBvd2VyLgorICogZGV2aWNlIG1pZ2h0IGRvIGEgcGFydGlhbCAobGFzdCkgc2VjdG9yIHdyaXRlIHdoaWxlIGxvc2luZyBwb3dlci4KICAqLwogc3RydWN0IF9fcGFja2VkIGFsX3RyYW5zYWN0aW9uIHsKIAl1MzIgICAgICAgbWFnaWM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCmluZGV4IDgxMDMwZDguLmIyNjk5YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCkBAIC02MjIsNyArNjIyLDcgQEAKIC8qIG9uZSBiaXRtYXAgcGFja2V0LCBpbmNsdWRpbmcgdGhlIHBfaGVhZGVyLAogICogc2hvdWxkIGZpdCB3aXRoaW4gb25lIF9hcmNoaXRlY3R1cmUgaW5kZXBlbmRlbmRfIHBhZ2UuCiAgKiBzbyB3ZSBuZWVkIHRvIHVzZSB0aGUgZml4ZWQgc2l6ZSA0S2lCIHBhZ2Ugc2l6ZQotICogbW9zdCBhcmNoaXRlY2h0dXJlcyBoYXZlIHVzZWQgZm9yIGEgbG9uZyB0aW1lLgorICogbW9zdCBhcmNoaXRlY3R1cmVzIGhhdmUgdXNlZCBmb3IgYSBsb25nIHRpbWUuCiAgKi8KICNkZWZpbmUgQk1fUEFDS0VUX1BBWUxPQURfQllURVMgKDQwOTYgLSBzaXplb2Yoc3RydWN0IHBfaGVhZGVyODApKQogI2RlZmluZSBCTV9QQUNLRVRfV09SRFMgKEJNX1BBQ0tFVF9QQVlMT0FEX0JZVEVTL3NpemVvZihsb25nKSkKQEAgLTgxMCw3ICs4MTAsNyBAQAogCiAvKiBnbG9iYWwgZmxhZyBiaXRzICovCiBlbnVtIHsKLQlDUkVBVEVfQkFSUklFUiwJCS8qIG5leHQgUF9EQVRBIGlzIHByZWNlZWRlZCBieSBhIFBfQkFSUklFUiAqLworCUNSRUFURV9CQVJSSUVSLAkJLyogbmV4dCBQX0RBVEEgaXMgcHJlY2VkZWQgYnkgYSBQX0JBUlJJRVIgKi8KIAlTSUdOQUxfQVNFTkRFUiwJCS8qIHdoZXRoZXIgYXNlbmRlciB3YW50cyB0byBiZSBpbnRlcnJ1cHRlZCAqLwogCVNFTkRfUElORywJCS8qIHdoZXRoZXIgYXNlbmRlciBzaG91bGQgc2VuZCBhIHBpbmcgYXNhcCAqLwogCkBAIC0xMTI2LDcgKzExMjYsNyBAQAogCWludCBjX3N5bmNfcmF0ZTsgLyogY3VycmVudCByZXN5bmMgcmF0ZSBhZnRlciBzeW5jZXIgdGhyb3R0bGUgbWFnaWMgKi8KIAlzdHJ1Y3QgZmlmb19idWZmZXIgcnNfcGxhbl9zOyAvKiBjb3JyZWN0aW9uIHZhbHVlcyBvZiByZXN5bmMgcGxhbmVyICovCiAJaW50IHJzX2luX2ZsaWdodDsgLyogcmVzeW5jIHNlY3RvcnMgaW4gZmxpZ2h0ICh0byBwcm94eSwgaW4gcHJveHkgYW5kIGZyb20gcHJveHkpICovCi0JaW50IHJzX3BsYW5lZDsgICAgLyogcmVzeW5jIHNlY3RvcnMgYWxyZWFkeSBwbGFuZWQgKi8KKwlpbnQgcnNfcGxhbmVkOyAgICAvKiByZXN5bmMgc2VjdG9ycyBhbHJlYWR5IHBsYW5uZWQgKi8KIAlhdG9taWNfdCBhcF9pbl9mbGlnaHQ7IC8qIEFwcCBzZWN0b3JzIGluIGZsaWdodCAod2FpdGluZyBmb3IgYWNrKSAqLwogfTsKIApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAKIAlyZXR1cm4gbWRldi0+bWlub3I7CiB9CiAKLS8qIHJldHVybnMgMSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bGwsCisvKiByZXR1cm5zIDEgaWYgaXQgd2FzIHN1Y2Nlc3NmdWwsCiAgKiByZXR1cm5zIDAgaWYgdGhlcmUgd2FzIG5vIGRhdGEgc29ja2V0LgogICogc28gd2hlcmV2ZXIgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIGRhdGEuc29ja2V0LCBlLmcuIGRvCiAgKiBpZiAoIWRyYmRfZ2V0X2RhdGFfc29jayhtZGV2KSkKQEAgLTIwNzksNyArMjA3OSw3IEBACiAvKiBjb3VudHMgaG93IG1hbnkgcmVzeW5jLXJlbGF0ZWQgYW5zd2VycyB3ZSBzdGlsbCBleHBlY3QgZnJvbSB0aGUgcGVlcgogICoJCSAgICAgaW5jcmVhc2UJCQlkZWNyZWFzZQogICogQ19TWU5DX1RBUkdFVCBzZW5kcyBQX1JTX0RBVEFfUkVRVUVTVCAoYW5kIGV4cGVjdHMgUF9SU19EQVRBX1JFUExZKQotICogQ19TWU5DX1NPVVJDRSBzZW5kcyBQX1JTX0RBVEFfUkVQTFkgICAoYW5kIGV4cGVjdHMgUF9XUklURV9BQ0sgd2hpdGggSURfU1lOQ0VSKQorICogQ19TWU5DX1NPVVJDRSBzZW5kcyBQX1JTX0RBVEFfUkVQTFkgICAoYW5kIGV4cGVjdHMgUF9XUklURV9BQ0sgd2l0aCBJRF9TWU5DRVIpCiAgKgkJCQkJICAgKG9yIFBfTkVHX0FDSyB3aXRoIElEX1NZTkNFUikKICAqLwogc3RhdGljIGlubGluZSB2b2lkIGluY19yc19wZW5kaW5nKHN0cnVjdCBkcmJkX2NvbmYgKm1kZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKaW5kZXggZGZjODVmMy4uNWI1MjVjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwpAQCAtMTU2MSw3ICsxNTYxLDcgQEAKIAkJaWYgKGRyYmRfc2VuZF9zdGF0ZShtZGV2KSkKIAkJCWRldl93YXJuKERFViwgIk5vdGlmaWVkIHBlZXIgdGhhdCBJJ20gbm93IGRpc2tsZXNzLlxuIik7CiAJCS8qIGNvcnJlc3BvbmRpbmcgZ2V0X2xkZXYgaW4gX19kcmJkX3NldF9zdGF0ZQotCQkgKiB0aGlzIG1heSBmaW5hbHkgdHJpZ2dlciBkcmJkX2xkZXZfZGVzdHJveS4gKi8KKwkJICogdGhpcyBtYXkgZmluYWxseSB0cmlnZ2VyIGRyYmRfbGRldl9kZXN0cm95LiAqLwogCQlwdXRfbGRldihtZGV2KTsKIAl9CiAKQEAgLTM3MDYsNyArMzcwNiw3IEBACiAJYnVmZmVyID0gKHN0cnVjdCBtZXRhX2RhdGFfb25fZGlzayAqKXBhZ2VfYWRkcmVzcyhtZGV2LT5tZF9pb19wYWdlKTsKIAogCWlmICghZHJiZF9tZF9zeW5jX3BhZ2VfaW8obWRldiwgYmRldiwgYmRldi0+bWQubWRfb2Zmc2V0LCBSRUFEKSkgewotCQkvKiBOT1RFOiBjYW50IGRvIG5vcm1hbCBlcnJvciBwcm9jZXNzaW5nIGhlcmUgYXMgdGhpcyBpcworCQkvKiBOT1RFOiBjYW4ndCBkbyBub3JtYWwgZXJyb3IgcHJvY2Vzc2luZyBoZXJlIGFzIHRoaXMgaXMKIAkJICAgY2FsbGVkIEJFRk9SRSBkaXNrIGlzIGF0dGFjaGVkICovCiAJCWRldl9lcnIoREVWLCAiRXJyb3Igd2hpbGUgcmVhZGluZyBtZXRhZGF0YS5cbiIpOwogCQlydiA9IEVSUl9JT19NRF9ESVNLOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKaW5kZXggZmUxNTY0Yy4uZmQyNjY2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCkBAIC04NjIsNyArODYyLDcgQEAKIAltc29jay0+c2stPnNrX3JjdnRpbWVvID0gbWRldi0+bmV0X2NvbmYtPnBpbmdfaW50KkhaOwogCiAJLyogd2UgZG9uJ3Qgd2FudCBkZWxheXMuCi0JICogd2UgdXNlIFRDUF9DT1JLIHdoZXJlIGFwcm9wcmlhdGUsIHRob3VnaCAqLworCSAqIHdlIHVzZSBUQ1BfQ09SSyB3aGVyZSBhcHByb3ByaWF0ZSwgdGhvdWdoICovCiAJZHJiZF90Y3Bfbm9kZWxheShzb2NrKTsKIAlkcmJkX3RjcF9ub2RlbGF5KG1zb2NrKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfdmxpLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF92bGkuaAppbmRleCBmYzgyNDAwLi44Y2IxNTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF92bGkuaAorKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF92bGkuaApAQCAtMzIsNyArMzIsNyBAQAogICogdGhlIGJpdG1hcCB0cmFuc2ZlciB0aW1lIGNhbiB0YWtlIG11Y2ggdG9vIGxvbmcsCiAgKiBpZiB0cmFuc21pdHRlZCBpbiBwbGFpbiB0ZXh0LgogICoKLSAqIFdlIHRyeSB0byByZWR1Y2UgdGhlIHRyYW5zZmVyZWQgYml0bWFwIGluZm9ybWF0aW9uCisgKiBXZSB0cnkgdG8gcmVkdWNlIHRoZSB0cmFuc2ZlcnJlZCBiaXRtYXAgaW5mb3JtYXRpb24KICAqIGJ5IGVuY29kaW5nIHJ1bmxlbmd0aHMgb2YgYml0IHBvbGFyaXR5LgogICoKICAqIFdlIG5ldmVyIGFjdHVhbGx5IG5lZWQgdG8gZW5jb2RlIGEgInplcm8iIChydW5sZW5ndGhzIGFyZSBwb3NpdGl2ZSkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2hkLmMgYi9kcml2ZXJzL2Jsb2NrL2hkLmMKaW5kZXggMzBlYzZiMy4uMDA3YzYzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9oZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svaGQuYwpAQCAtNzMzLDcgKzczMyw3IEBACiAJCSAqIHRoZSBCSU9TIG9yIENNT1MuICBUaGlzIGRvZXNuJ3Qgd29yayBhbGwgdGhhdCB3ZWxsLAogCQkgKiBzaW5jZSB0aGlzIGFzc3VtZXMgdGhhdCB0aGlzIGlzIGEgcHJpbWFyeSBvciBzZWNvbmRhcnkKIAkJICogZHJpdmUsIGFuZCBpZiB3ZSdyZSB1c2luZyB0aGlzIGxlZ2FjeSBkcml2ZXIsIGl0J3MKLQkJICogcHJvYmFibHkgYW4gYXV4aWxsaWFyeSBjb250cm9sbGVyIGFkZGVkIHRvIHJlY292ZXIKKwkJICogcHJvYmFibHkgYW4gYXV4aWxpYXJ5IGNvbnRyb2xsZXIgYWRkZWQgdG8gcmVjb3ZlcgogCQkgKiBsZWdhY3kgZGF0YSBvZmYgYW4gU1QtNTA2IGRyaXZlLiAgRWl0aGVyIHdheSwgaXQncwogCQkgKiBkZWZpbml0ZWx5IHNhZmVzdCB0byBoYXZlIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3BlY2lmeQogCQkgKiB0aGUgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3Zpb2Rhc2QuYyBiL2RyaXZlcnMvYmxvY2svdmlvZGFzZC5jCmluZGV4IGUyZmY2OTcuLjlhNWIyYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlvZGFzZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svdmlvZGFzZC5jCkBAIC05NCw3ICs5NCw3IEBACiAJeyAweDAyMDQsIEVJTywgIlVzZSBFcnJvciIgfSwKIAl7IDB4MDIwNSwgRUlPLCAiUmVsZWFzZSBFcnJvciIgfSwKIAl7IDB4MDIwNiwgRUlOVkFMLCAiSW52YWxpZCBEaXNrIiB9LAotCXsgMHgwMjA3LCBFQlVTWSwgIkNhbnQgTG9jayIgfSwKKwl7IDB4MDIwNywgRUJVU1ksICJDYW4ndCBMb2NrIiB9LAogCXsgMHgwMjA4LCBFSU8sICJBbHJlYWR5IExvY2tlZCIgfSwKIAl7IDB4MDIwOSwgRUlPLCAiQWxyZWFkeSBVbmxvY2tlZCIgfSwKIAl7IDB4MDIwQSwgRUlPLCAiSW52YWxpZCBBcmciIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3hzeXNhY2UuYyBiL2RyaXZlcnMvYmxvY2sveHN5c2FjZS5jCmluZGV4IDczMzU0YjAuLjY0NWZmNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveHN5c2FjZS5jCisrKyBiL2RyaXZlcnMvYmxvY2sveHN5c2FjZS5jCkBAIC02MjEsNyArNjIxLDcgQEAKIAkJYWNlX2R1bXBfbWVtKGFjZS0+Y2ZfaWQsIDUxMik7CS8qIERlYnVnOiBEdW1wIG91dCBkaXNrIElEICovCiAKIAkJaWYgKGFjZS0+ZGF0YV9yZXN1bHQpIHsKLQkJCS8qIEVycm9yIG9jY3VyZWQsIGRpc2FibGUgdGhlIGRpc2sgKi8KKwkJCS8qIEVycm9yIG9jY3VycmVkLCBkaXNhYmxlIHRoZSBkaXNrICovCiAJCQlhY2UtPm1lZGlhX2NoYW5nZSA9IDE7CiAJCQlzZXRfY2FwYWNpdHkoYWNlLT5nZCwgMCk7CiAJCQlkZXZfZXJyKGFjZS0+ZGV2LCAiZXJyb3IgZmV0Y2hpbmcgQ0YgaWQgKCVpKVxuIiwKQEAgLTgwMSw3ICs4MDEsNyBAQAogCXUzMiBzcmVnID0gYWNlX2luMzIoYWNlLCBBQ0VfU1RBVFVTKTsKIAl1MTYgY3JlZyA9IGFjZV9pbihhY2UsIEFDRV9DVFJMKTsKIAotCS8qIENoZWNrIGZvciBlcnJvciBvY2N1cmFuY2UgKi8KKwkvKiBDaGVjayBmb3IgZXJyb3Igb2NjdXJyZW5jZSAqLwogCWlmICgoc3JlZyAmIChBQ0VfU1RBVFVTX0NGR0VSUk9SIHwgQUNFX1NUQVRVU19DRkNFUlJPUikpICYmCiAJICAgIChjcmVnICYgQUNFX0NUUkxfRVJST1JJUlEpKSB7CiAJCWRldl9lcnIoYWNlLT5kZXYsICJ0cmFuc2ZlciBmYWlsdXJlXG4iKTsKQEAgLTExNjksNyArMTE2OSw3IEBACiAJCQlpcnEgPSBkZXYtPnJlc291cmNlW2ldLnN0YXJ0OwogCX0KIAotCS8qIENhbGwgdGhlIGJ1cy1pbmRlcGVuZGFudCBzZXR1cCBjb2RlICovCisJLyogQ2FsbCB0aGUgYnVzLWluZGVwZW5kZW50IHNldHVwIGNvZGUgKi8KIAlyZXR1cm4gYWNlX2FsbG9jKCZkZXYtPmRldiwgaWQsIHBoeXNhZGRyLCBpcnEsIGJ1c193aWR0aCk7CiB9CiAKQEAgLTEyMjIsNyArMTIyMiw3IEBACiAJaWYgKG9mX2ZpbmRfcHJvcGVydHkob3AtPmRldi5vZl9ub2RlLCAiOC1iaXQiLCBOVUxMKSkKIAkJYnVzX3dpZHRoID0gQUNFX0JVU19XSURUSF84OwogCi0JLyogQ2FsbCB0aGUgYnVzLWluZGVwZW5kYW50IHNldHVwIGNvZGUgKi8KKwkvKiBDYWxsIHRoZSBidXMtaW5kZXBlbmRlbnQgc2V0dXAgY29kZSAqLwogCXJldHVybiBhY2VfYWxsb2MoJm9wLT5kZXYsIGlkID8gYmUzMl90b19jcHVwKGlkKSA6IDAsCiAJCQkJCQlwaHlzYWRkciwgaXJxLCBidXNfd2lkdGgpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibHVldG9vdGgvaGNpX2xsLmMgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfbGwuYwppbmRleCAzODU5NWU3Li43ZTRiNDM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfbGwuYworKysgYi9kcml2ZXJzL2JsdWV0b290aC9oY2lfbGwuYwpAQCAtMjA3LDcgKzIwNyw3IEBACiAJCS8qCiAJCSAqIFRoaXMgc3RhdGUgbWVhbnMgdGhhdCBib3RoIHRoZSBob3N0IGFuZCB0aGUgQlJGIGNoaXAKIAkJICogaGF2ZSBzaW11bHRhbmVvdXNseSBzZW50IGEgd2FrZS11cC1pbmRpY2F0aW9uIHBhY2tldC4KLQkJICogVHJhZGl0aW9uYWx5LCBpbiB0aGlzIGNhc2UsIHJlY2VpdmluZyBhIHdha2UtdXAtaW5kaWNhdGlvbgorCQkgKiBUcmFkaXRpb25hbGx5LCBpbiB0aGlzIGNhc2UsIHJlY2VpdmluZyBhIHdha2UtdXAtaW5kaWNhdGlvbgogCQkgKiB3YXMgZW5vdWdoIGFuZCBhbiBhZGRpdGlvbmFsIHdha2UtdXAtYWNrIHdhc24ndCBuZWVkZWQuCiAJCSAqIFRoaXMgaGFzIGNoYW5nZWQgd2l0aCB0aGUgQlJGNjM1MCwgd2hpY2ggZG9lcyByZXF1aXJlIGFuCiAJCSAqIGV4cGxpY2l0IHdha2UtdXAtYWNrLiBPdGhlciBCUkYgdmVyc2lvbnMsIHdoaWNoIGRvIG5vdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jZHJvbS9jZHJvbS5jIGIvZHJpdmVycy9jZHJvbS9jZHJvbS5jCmluZGV4IGUyYzQ4YTcuLjUxNGRkOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2Ryb20vY2Ryb20uYworKysgYi9kcml2ZXJzL2Nkcm9tL2Nkcm9tLmMKQEAgLTMwLDcgKzMwLDcgQEAKICAgY2hhbmdlbG9nIGZvciB0aGUgMS54IHNlcmllcywgRGF2aWQ/CiAKIDIuMDAgIERlYyAgMiwgMTk5NyAtLSBFcmlrIEFuZGVyc2VuIDxhbmRlcnNlZUBkZWJpYW4ub3JnPgotICAtLSBOZXcgbWFpbnRhaW5lciEgQXMgRGF2aWQgQS4gdmFuIExlZXV3ZW4gaGFzIGJlZW4gdG9vIGJ1c3kgdG8gYWN0aXZseQorICAtLSBOZXcgbWFpbnRhaW5lciEgQXMgRGF2aWQgQS4gdmFuIExlZXV3ZW4gaGFzIGJlZW4gdG9vIGJ1c3kgdG8gYWN0aXZlbHkKICAgbWFpbnRhaW4gYW5kIGltcHJvdmUgdGhpcyBkcml2ZXIsIEkgYW0gbm93IGNhcnJ5aW5nIG9uIHRoZSB0b3JjaC4gSWYKICAgeW91IGhhdmUgYSBwcm9ibGVtIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBmZWVsIGZyZWUgdG8gY29udGFjdCBtZS4KIApAQCAtMjUyMCw3ICsyNTIwLDcgQEAKIC8qCiAgKiBPaywgdGhpcyBpcyB3aGVyZSBwcm9ibGVtcyBzdGFydC4gIFRoZSBjdXJyZW50IGludGVyZmFjZSBmb3IgdGhlCiAgKiBDRFJPTV9ESVNDX1NUQVRVUyBpb2N0bCBpcyBmbGF3ZWQuICBJdCBtYWtlcyB0aGUgZmFsc2UgYXNzdW1wdGlvbiB0aGF0Ci0gKiBDRHMgYXJlIGFsbCBDRFNfREFUQV8xIG9yIGFsbCBDRFNfQVVESU8sIGV0Yy4gIFVuZm9ydHVuYXRseSwgd2hpbGUgdGhpcworICogQ0RzIGFyZSBhbGwgQ0RTX0RBVEFfMSBvciBhbGwgQ0RTX0FVRElPLCBldGMuICBVbmZvcnR1bmF0ZWx5LCB3aGlsZSB0aGlzCiAgKiBpcyBvZnRlbiB0aGUgY2FzZSwgaXQgaXMgYWxzbyB2ZXJ5IGNvbW1vbiBmb3IgQ0RzIHRvIGhhdmUgc29tZSB0cmFja3MKICAqIHdpdGggZGF0YSwgYW5kIHNvbWUgdHJhY2tzIHdpdGggYXVkaW8uICBKdXN0IGJlY2F1c2UgSSBmZWVsIGxpa2UgaXQsCiAgKiBJIGRlY2xhcmUgdGhlIGZvbGxvd2luZyB0byBiZSB0aGUgYmVzdCB3YXkgdG8gY29wZS4gIElmIHRoZSBDRCBoYXMgQU5ZCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvYWdwL2FncC5oIGIvZHJpdmVycy9jaGFyL2FncC9hZ3AuaAppbmRleCAzZTY3ZGRkLi45MjNmOTlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvYWdwL2FncC5oCisrKyBiL2RyaXZlcnMvY2hhci9hZ3AvYWdwLmgKQEAgLTIzNyw3ICsyMzcsNyBAQAogCiBsb25nIGNvbXBhdF9hZ3BfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKIAotLyogQ2hpcHNldCBpbmRlcGVuZGFudCByZWdpc3RlcnMgKGZyb20gQUdQIFNwZWMpICovCisvKiBDaGlwc2V0IGluZGVwZW5kZW50IHJlZ2lzdGVycyAoZnJvbSBBR1AgU3BlYykgKi8KICNkZWZpbmUgQUdQX0FQQkFTRQkweDEwCiAKICNkZWZpbmUgQUdQU1RBVAkJMHg0CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYyBiL2RyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jCmluZGV4IDQ1NjgxYzAuLmY3ZTg4NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jCisrKyBiL2RyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jCkBAIC0yNzIsNyArMjcyLDcgQEAKICAqIFRoaXMgcm91dGluZSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBieSB0YWtpbmcgdGhlIGFkZHJlc3NlcwogICogd3JpdHRlbiB0byB0aGUgR0FUVCwgYW5kIGZsdXNoaW5nIHRoZW0gaW5kaXZpZHVhbGx5LiAgSG93ZXZlcgogICogY3VycmVudGx5IGl0IGp1c3QgZmx1c2hlcyB0aGUgd2hvbGUgdGFibGUuICBXaGljaCBpcyBwcm9iYWJseQotICogbW9yZSBlZmZpY2VudCwgc2luY2UgYWdwX21lbW9yeSBibG9ja3MgY2FuIGJlIGEgbGFyZ2UgbnVtYmVyIG9mCisgKiBtb3JlIGVmZmljaWVudCwgc2luY2UgYWdwX21lbW9yeSBibG9ja3MgY2FuIGJlIGEgbGFyZ2UgbnVtYmVyIG9mCiAgKiBlbnRyaWVzLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jIGIvZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmMKaW5kZXggMTNhY2FhZi4uZjAyZjliMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmMKKysrIGIvZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmMKQEAgLTIyOSw3ICsyMjksNyBAQAogICogVGhpcyByb3V0aW5lIGNvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHRha2luZyB0aGUgYWRkcmVzc2VzCiAgKiB3cml0dGVuIHRvIHRoZSBHQVRULCBhbmQgZmx1c2hpbmcgdGhlbSBpbmRpdmlkdWFsbHkuICBIb3dldmVyCiAgKiBjdXJyZW50bHkgaXQganVzdCBmbHVzaGVzIHRoZSB3aG9sZSB0YWJsZS4gIFdoaWNoIGlzIHByb2JhYmx5Ci0gKiBtb3JlIGVmZmljZW50LCBzaW5jZSBhZ3BfbWVtb3J5IGJsb2NrcyBjYW4gYmUgYSBsYXJnZSBudW1iZXIgb2YKKyAqIG1vcmUgZWZmaWNpZW50LCBzaW5jZSBhZ3BfbWVtb3J5IGJsb2NrcyBjYW4gYmUgYSBsYXJnZSBudW1iZXIgb2YKICAqIGVudHJpZXMuCiAgKi8KIHN0YXRpYyB2b2lkIHNlcnZlcndvcmtzX3RsYmZsdXNoKHN0cnVjdCBhZ3BfbWVtb3J5ICp0ZW1wKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmMgYi9kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYwppbmRleCBkZjY3ZTgwLi44YmMzODQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYworKysgYi9kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYwpAQCAtNDAwLDcgKzQwMCw3IEBACiAJICogdGhlIHRyYWRpdGlvbmFsIEFHUCB3aGljaCByZXNpZGVzIG9ubHkgaW4gY2hpcHNldC4gQUdQIGlzIHVzZWQKIAkgKiBieSAzRCBkcml2ZXIgd2hpY2ggd2Fzbid0IGF2YWlsYWJsZSBmb3IgdGhlIFZUMzMzNiBhbmQgVlQzMzY0CiAJICogZ2VuZXJhdGlvbiB1bnRpbCBub3cuICBVbmZvcnR1bmF0ZWx5LCBieSB0ZXN0aW5nLCBWVDMzNjQgd29ya3MKLQkgKiBidXQgVlQzMzM2IGRvZXNuJ3QuIC0gZXhwbGFpbmF0aW9uIGZyb20gdmlhLCBqdXN0IGxlYXZlIHRoaXMgYXMKKwkgKiBidXQgVlQzMzM2IGRvZXNuJ3QuIC0gZXhwbGFuYXRpb24gZnJvbSB2aWEsIGp1c3QgbGVhdmUgdGhpcyBhcwogCSAqIGFzIGEgcGxhY2Vob2xkZXIgdG8gYXZvaWQgZnV0dXJlIHBhdGNoZXMgYWRkaW5nIGl0IGJhY2sgaW4uCiAJICovCiAjaWYgMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9wb3dlcm9mZi5jIGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9wb3dlcm9mZi5jCmluZGV4IDBkZWM1ZGEuLjJlZmExNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfcG93ZXJvZmYuYworKysgYi9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3Bvd2Vyb2ZmLmMKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiAKIC8qCi0gKiBDb2RlIHRvIHNlbmQgYSBtZXNzYWdlIGFuZCB3YWl0IGZvciB0aGUgcmVwb25zZS4KKyAqIENvZGUgdG8gc2VuZCBhIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIHRoZSByZXNwb25zZS4KICAqLwogCiBzdGF0aWMgdm9pZCByZWNlaXZlX2hhbmRsZXIoc3RydWN0IGlwbWlfcmVjdl9tc2cgKnJlY3ZfbXNnLCB2b2lkICpoYW5kbGVyX2RhdGEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX2ludGYuYyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jCmluZGV4IGQyOGI0ODQuLmNjNmM5YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jCisrKyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jCkBAIC0zMzksNyArMzM5LDcgQEAKIAkJY0NvZGUgPSBJUE1JX0VSUl9VTlNQRUNJRklFRDsKIAkvKiBlbHNlIHVzZSBpdCBhcyBpcyAqLwogCi0JLyogTWFrZSBpdCBhIHJlcG9uc2UgKi8KKwkvKiBNYWtlIGl0IGEgcmVzcG9uc2UgKi8KIAltc2ctPnJzcFswXSA9IG1zZy0+ZGF0YVswXSB8IDQ7CiAJbXNnLT5yc3BbMV0gPSBtc2ctPmRhdGFbMV07CiAJbXNnLT5yc3BbMl0gPSBjQ29kZTsKQEAgLTI5MjcsNyArMjkyNyw3IEBACiB7CiAJc3RydWN0IGlwbWlfc21pX21zZyAqbXNnID0gc21pX2luZm8tPmN1cnJfbXNnOwogCi0JLyogTWFrZSBpdCBhIHJlcG9uc2UgKi8KKwkvKiBNYWtlIGl0IGEgcmVzcG9uc2UgKi8KIAltc2ctPnJzcFswXSA9IG1zZy0+ZGF0YVswXSB8IDQ7CiAJbXNnLT5yc3BbMV0gPSBtc2ctPmRhdGFbMV07CiAJbXNnLT5yc3BbMl0gPSBDQU5OT1RfUkVUVVJOX1JFUVVFU1RFRF9MRU5HVEg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvbWJjcy5oIGIvZHJpdmVycy9jaGFyL21iY3MuaAppbmRleCBiYTY3MTU4Li4xYTM2ODg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbWJjcy5oCisrKyBiL2RyaXZlcnMvY2hhci9tYmNzLmgKQEAgLTM2LDEzICszNiwxMyBAQAogI2RlZmluZSBNQkNTX1JEX0RNQV9DVFJMCTB4MDExMAkvKiBSZWFkIERNQSBDb250cm9sICovCiAjZGVmaW5lIE1CQ1NfUkRfRE1BX0FNT19ERVNUCTB4MDExOAkvKiBSZWFkIERNQSBBTU8gRGVzdGluYXRpb24gKi8KICNkZWZpbmUgTUJDU19SRF9ETUFfSU5UX0RFU1QJMHgwMTIwCS8qIFJlYWQgRE1BIEludGVycnVwdCBEZXN0aW5hdGlvbiAqLwotI2RlZmluZSBNQkNTX1JEX0RNQV9BVVhfU1RBVAkweDAxMzAJLyogUmVhZCBETUEgQXV4aWxsYXJ5IFN0YXR1cyAqLworI2RlZmluZSBNQkNTX1JEX0RNQV9BVVhfU1RBVAkweDAxMzAJLyogUmVhZCBETUEgQXV4aWxpYXJ5IFN0YXR1cyAqLwogI2RlZmluZSBNQkNTX1dSX0RNQV9TWVNfQUREUgkweDAyMDAJLyogV3JpdGUgRE1BIFN5c3RlbSBBZGRyZXNzICovCiAjZGVmaW5lIE1CQ1NfV1JfRE1BX0xPQ19BRERSCTB4MDIwOAkvKiBXcml0ZSBETUEgTG9jYWwgQWRkcmVzcyAqLwogI2RlZmluZSBNQkNTX1dSX0RNQV9DVFJMCTB4MDIxMAkvKiBXcml0ZSBETUEgQ29udHJvbCAqLwogI2RlZmluZSBNQkNTX1dSX0RNQV9BTU9fREVTVAkweDAyMTgJLyogV3JpdGUgRE1BIEFNTyBEZXN0aW5hdGlvbiAqLwogI2RlZmluZSBNQkNTX1dSX0RNQV9JTlRfREVTVAkweDAyMjAJLyogV3JpdGUgRE1BIEludGVycnVwdCBEZXN0aW5hdGlvbiAqLwotI2RlZmluZSBNQkNTX1dSX0RNQV9BVVhfU1RBVAkweDAyMzAJLyogV3JpdGUgRE1BIEF1eGlsbGFyeSBTdGF0dXMgKi8KKyNkZWZpbmUgTUJDU19XUl9ETUFfQVVYX1NUQVQJMHgwMjMwCS8qIFdyaXRlIERNQSBBdXhpbGlhcnkgU3RhdHVzICovCiAjZGVmaW5lIE1CQ1NfQUxHX0FNT19ERVNUCTB4MDMwMAkvKiBBbGdvcml0aG0gQU1PIERlc3RpbmF0aW9uICovCiAjZGVmaW5lIE1CQ1NfQUxHX0lOVF9ERVNUCTB4MDMwOAkvKiBBbGdvcml0aG0gSW50ZXJydXB0IERlc3RpbmF0aW9uICovCiAjZGVmaW5lIE1CQ1NfQUxHX09GRlNFVFMJMHgwMzEwCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvbXdhdmUvMzc4MGkuaCBiL2RyaXZlcnMvY2hhci9td2F2ZS8zNzgwaS5oCmluZGV4IDI3MDQzMWMuLmZiYTZhYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9td2F2ZS8zNzgwaS5oCisrKyBiL2RyaXZlcnMvY2hhci9td2F2ZS8zNzgwaS5oCkBAIC0xMjIsNyArMTIyLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKIAl1bnNpZ25lZCBjaGFyIERtYTozOwkvKiBSVzogRE1BIGNoYW5uZWwgc2VsZWN0aW9uICovCiAJdW5zaWduZWQgY2hhciBOdW1UcmFuc2ZlcnM6MjsJLyogUlc6IE1heGltdW0gIyBvZiB0cmFuc2ZlcnMgb25jZSBiZWluZyBncmFudGVkIHRoZSBJU0EgYnVzICovCi0JdW5zaWduZWQgY2hhciBSZVJlcXVlc3Q6MjsJLyogUlc6IE1pbnVtdW0gZGVsYXkgYmV0d2VlbiByZWxlYXNpbmcgdGhlIElTQSBidXMgYW5kIHJlcXVlc3RpbmcgaXQgYWdhaW4gKi8KKwl1bnNpZ25lZCBjaGFyIFJlUmVxdWVzdDoyOwkvKiBSVzogTWluaW11bSBkZWxheSBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgSVNBIGJ1cyBhbmQgcmVxdWVzdGluZyBpdCBhZ2FpbiAqLwogCXVuc2lnbmVkIGNoYXIgTUVNQ1MxNjoxOwkvKiBSVzogSVNBIHNpZ25hbCBNRU1DUzE2OiAwPWRpc2FibGVkLCAxPWVuYWJsZWQgKi8KIH0gRFNQX0JVU01BU1RFUl9DRkdfMTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL253YnV0dG9uLmMgYi9kcml2ZXJzL2NoYXIvbndidXR0b24uYwppbmRleCA4OTk0Y2UzLi4wNGE0ODBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbndidXR0b24uYworKysgYi9kcml2ZXJzL2NoYXIvbndidXR0b24uYwpAQCAtNzUsNyArNzUsNyBAQAogICogd2l0aCAtRUlOVkFMLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGVudHJ5IHdpdGggdGhlIHNhbWUgYWRkcmVzcywKICAqIGJlY2F1c2UgaXQgc2VhcmNoZXMgdGhlIGxpc3QgZnJvbSBlbmQgdG8gYmVnaW5uaW5nLCBpdCB3aWxsIHVucmVnaXN0ZXIgdGhlCiAgKiBsYXN0IG9uZSB0byBiZSByZWdpc3RlcmVkIGZpcnN0IChGSUxPLSBGaXJzdCBJbiBMYXN0IE91dCkuCi0gKiBOb3RlIHRoYXQgdGhpcyBpcyBub3QgbmVjY2Vzc2FyaWx5IHRydWUgaWYgdGhlIGVudHJpZXMgYXJlIG5vdCBzdWJtaXR0ZWQKKyAqIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIGlmIHRoZSBlbnRyaWVzIGFyZSBub3Qgc3VibWl0dGVkCiAgKiBhdCB0aGUgc2FtZSB0aW1lLCBiZWNhdXNlIGFub3RoZXIgZHJpdmVyIGNvdWxkIGhhdmUgdW5yZWdpc3RlcmVkIGEgY2FsbGJhY2sKICAqIGJldHdlZW4gdGhlIHN1Ym1pc3Npb25zIGNyZWF0aW5nIGEgZ2FwIGVhcmxpZXIgaW4gdGhlIGxpc3QsIHdoaWNoIHdvdWxkCiAgKiBiZSBmaWxsZWQgZmlyc3QgYXQgc3VibWlzc2lvbiB0aW1lLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3BjbWNpYS9jbTQwMDBfY3MuYyBiL2RyaXZlcnMvY2hhci9wY21jaWEvY200MDAwX2NzLmMKaW5kZXggYmNiYmM3MS4uOTBiZDAxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3BjbWNpYS9jbTQwMDBfY3MuYworKysgYi9kcml2ZXJzL2NoYXIvcGNtY2lhL2NtNDAwMF9jcy5jCkBAIC04MDYsNyArODA2LDcgQEAKIAkJZGV2LT5mbGFnczEgPSAweDAxOwogCQl4b3V0YihkZXYtPmZsYWdzMSwgUkVHX0ZMQUdTMShpb2Jhc2UpKTsKIAotCQkvKiBhdHIgaXMgcHJlc2VudCAod2hpY2ggZG9lc250IG1lYW4gaXQncyB2YWxpZCkgKi8KKwkJLyogYXRyIGlzIHByZXNlbnQgKHdoaWNoIGRvZXNuJ3QgbWVhbiBpdCdzIHZhbGlkKSAqLwogCQlzZXRfYml0KElTX0FUUl9QUkVTRU5ULCAmZGV2LT5mbGFncyk7CiAJCWlmIChkZXYtPmF0clswXSA9PSAweDAzKQogCQkJc3RyX2ludmVydF9yZXZlcnQoZGV2LT5hdHIsIGRldi0+YXRyX2xlbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvcGNtY2lhL3N5bmNsaW5rX2NzLmMgYi9kcml2ZXJzL2NoYXIvcGNtY2lhL3N5bmNsaW5rX2NzLmMKaW5kZXggYmVjYTgwYi4uYjU3NTQxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3BjbWNpYS9zeW5jbGlua19jcy5jCisrKyBiL2RyaXZlcnMvY2hhci9wY21jaWEvc3luY2xpbmtfY3MuYwpAQCAtMTI5MCw3ICsxMjkwLDcgQEAKIAkvKiBBbGxvY2F0ZSBhbmQgY2xhaW0gYWRhcHRlciByZXNvdXJjZXMgKi8KIAlyZXR2YWwgPSBjbGFpbV9yZXNvdXJjZXMoaW5mbyk7CiAKLQkvKiBwZXJmb3JtIGV4aXN0YW5jZSBjaGVjayBhbmQgZGlhZ25vc3RpY3MgKi8KKwkvKiBwZXJmb3JtIGV4aXN0ZW5jZSBjaGVjayBhbmQgZGlhZ25vc3RpY3MgKi8KIAlpZiAoICFyZXR2YWwgKQogCQlyZXR2YWwgPSBhZGFwdGVyX3Rlc3QoaW5mbyk7CiAKQEAgLTI2ODAsNyArMjY4MCw3IEBACiBzdGF0aWMgaW50IGNsYWltX3Jlc291cmNlcyhNR1NMUENfSU5GTyAqaW5mbykKIHsKIAlpZiAocnhfYWxsb2NfYnVmZmVycyhpbmZvKSA8IDAgKSB7Ci0JCXByaW50ayggIkNhbnQgYWxsb2NhdGUgcnggYnVmZmVyICVzXG4iLCBpbmZvLT5kZXZpY2VfbmFtZSk7CisJCXByaW50ayggIkNhbid0IGFsbG9jYXRlIHJ4IGJ1ZmZlciAlc1xuIiwgaW5mby0+ZGV2aWNlX25hbWUpOwogCQlyZWxlYXNlX3Jlc291cmNlcyhpbmZvKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3JhbmRvbS5jIGIvZHJpdmVycy9jaGFyL3JhbmRvbS5jCmluZGV4IDVlMjllODAuLmQ0ZGRlYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9yYW5kb20uYworKysgYi9kcml2ZXJzL2NoYXIvcmFuZG9tLmMKQEAgLTczMiw3ICs3MzIsNyBAQAogCQkJICAgICAgIHNpemVfdCBuYnl0ZXMsIGludCBtaW4sIGludCByc3ZkKTsKIAogLyoKLSAqIFRoaXMgdXRpbGl0eSBpbmxpbmUgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRyYW5zZmVyaW5nIGVudHJvcHkKKyAqIFRoaXMgdXRpbGl0eSBpbmxpbmUgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRyYW5zZmVycmluZyBlbnRyb3B5CiAgKiBmcm9tIHRoZSBwcmltYXJ5IHBvb2wgdG8gdGhlIHNlY29uZGFyeSBleHRyYWN0aW9uIHBvb2wuIFdlIG1ha2UKICAqIHN1cmUgd2UgcHVsbCBlbm91Z2ggZm9yIGEgJ2NhdGFzdHJvcGhpYyByZXNlZWQnLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvc29ueXBpLmMgYi9kcml2ZXJzL2NoYXIvc29ueXBpLmMKaW5kZXggNzllMzZjOC4uMWVlOGNlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3NvbnlwaS5jCisrKyBiL2RyaXZlcnMvY2hhci9zb255cGkuYwpAQCAtMTI0MSw3ICsxMjQxLDcgQEAKIAl3aGlsZSAoY2hlY2tfaW9wb3J0ICYmIGNoZWNrLT5wb3J0MSkgewogCQlpZiAoIXJlcXVlc3RfcmVnaW9uKGNoZWNrLT5wb3J0MSwKIAkJCQkgICBzb255cGlfZGV2aWNlLnJlZ2lvbl9zaXplLAotCQkJCSAgICJTb255IFByb2dyYW1hYmxlIEkvTyBEZXZpY2UgQ2hlY2siKSkgeworCQkJCSAgICJTb255IFByb2dyYW1tYWJsZSBJL08gRGV2aWNlIENoZWNrIikpIHsKIAkJCXByaW50ayhLRVJOX0VSUiAic29ueXBpOiBpb3BvcnQgMHglLjR4IGJ1c3ksIHVzaW5nIHNvbnktbGFwdG9wPyAiCiAJCQkJCSJpZiBub3QgdXNlIGNoZWNrX2lvcG9ydD0wXG4iLAogCQkJCQljaGVjay0+cG9ydDEpOwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAKIAogCQlpZiAocmVxdWVzdF9yZWdpb24oaW9wb3J0X2xpc3QtPnBvcnQxLAogCQkJCSAgIHNvbnlwaV9kZXZpY2UucmVnaW9uX3NpemUsCi0JCQkJICAgIlNvbnkgUHJvZ3JhbWFibGUgSS9PIERldmljZSIpKSB7CisJCQkJICAgIlNvbnkgUHJvZ3JhbW1hYmxlIEkvTyBEZXZpY2UiKSkgewogCQkJZGV2LT5pb3BvcnQxID0gaW9wb3J0X2xpc3QtPnBvcnQxOwogCQkJZGV2LT5pb3BvcnQyID0gaW9wb3J0X2xpc3QtPnBvcnQyOwogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMgYi9kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMKaW5kZXggZDNjOWQ3NS4uZDY0MTJjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jCisrKyBiL2RyaXZlcnMvY2hhci94aWxpbnhfaHdpY2FwL3hpbGlueF9od2ljYXAuYwpAQCAtNjcsNyArNjcsNyBAQAogICogY3AgZm9vLmJpdCAvZGV2L2ljYXAwCiAgKgogICogTm90ZSB0aGF0IHVubGVzcyBmb28uYml0IGlzIGFuIGFwcHJvcHJpYXRlbHkgY29uc3RydWN0ZWQgcGFydGlhbAotICogYml0c3RyZWFtLCB0aGlzIGhhcyBhIGhpZ2ggbGlrZWx5aG9vZCBvZiBvdmVyd3JpdGluZyB0aGUgZGVzaWduCisgKiBiaXRzdHJlYW0sIHRoaXMgaGFzIGEgaGlnaCBsaWtlbGlob29kIG9mIG92ZXJ3cml0aW5nIHRoZSBkZXNpZ24KICAqIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIHRoZSBGUEdBLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMgYi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jCmluZGV4IGIwMzc3MWQuLjJkYWZjNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMKKysrIGIvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYwpAQCAtMTc4Miw3ICsxNzgyLDcgQEAKICAqCWNwdWZyZXFfdXBkYXRlX3BvbGljeSAtIHJlLWV2YWx1YXRlIGFuIGV4aXN0aW5nIGNwdWZyZXEgcG9saWN5CiAgKglAY3B1OiBDUFUgd2hpY2ggc2hhbGwgYmUgcmUtZXZhbHVhdGVkCiAgKgotICoJVXNlZnVsbCBmb3IgcG9saWN5IG5vdGlmaWVycyB3aGljaCBoYXZlIGRpZmZlcmVudCBuZWNlc3NpdGllcworICoJVXNlZnVsIGZvciBwb2xpY3kgbm90aWZpZXJzIHdoaWNoIGhhdmUgZGlmZmVyZW50IG5lY2Vzc2l0aWVzCiAgKglhdCBkaWZmZXJlbnQgdGltZXMuCiAgKi8KIGludCBjcHVmcmVxX3VwZGF0ZV9wb2xpY3kodW5zaWduZWQgaW50IGNwdSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL2FtY2MvY3J5cHRvNHh4X3NhLmMgYi9kcml2ZXJzL2NyeXB0by9hbWNjL2NyeXB0bzR4eF9zYS5jCmluZGV4IDQ2NmZkOTQuLmRlOGE3YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL2FtY2MvY3J5cHRvNHh4X3NhLmMKKysrIGIvZHJpdmVycy9jcnlwdG8vYW1jYy9jcnlwdG80eHhfc2EuYwpAQCAtMTcsNyArMTcsNyBAQAogICogQGZpbGUgY3J5cHRvNHh4X3NhLmMKICAqCiAgKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgc2VjdXJpdHkgY29udGV4dAotICogYXNzb2ljYXRlIGZvcm1hdC4KKyAqIGFzc29jaWF0ZSBmb3JtYXQuCiAgKi8KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL2FtY2MvY3J5cHRvNHh4X3NhLmggYi9kcml2ZXJzL2NyeXB0by9hbWNjL2NyeXB0bzR4eF9zYS5oCmluZGV4IDRiODNlZDcuLjEzNTJkNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL2FtY2MvY3J5cHRvNHh4X3NhLmgKKysrIGIvZHJpdmVycy9jcnlwdG8vYW1jYy9jcnlwdG80eHhfc2EuaApAQCAtMTUsNyArMTUsNyBAQAogICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqCiAgKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgc2VjdXJpdHkgY29udGV4dAotICogYXNzb2ljYXRlIGZvcm1hdC4KKyAqIGFzc29jaWF0ZSBmb3JtYXQuCiAgKi8KIAogI2lmbmRlZiBfX0NSWVBUTzRYWF9TQV9IX18KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL2l4cDR4eF9jcnlwdG8uYyBiL2RyaXZlcnMvY3J5cHRvL2l4cDR4eF9jcnlwdG8uYwppbmRleCAwZDY2MjIxLi40YzIwYzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NyeXB0by9peHA0eHhfY3J5cHRvLmMKKysrIGIvZHJpdmVycy9jcnlwdG8vaXhwNHh4X2NyeXB0by5jCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQAogCW1lbWNweShjcnlwdC0+aXYsIHJlcS0+aXYsIGl2c2l6ZSk7CiAKIAlpZiAocmVxLT5zcmMgIT0gcmVxLT5kc3QpIHsKLQkJQlVHKCk7IC8qIC1FTk9UU1VQIGJlY2F1c2Ugb2YgbXkgbGF6eW5lc3MgKi8KKwkJQlVHKCk7IC8qIC1FTk9UU1VQIGJlY2F1c2Ugb2YgbXkgbGF6aW5lc3MgKi8KIAl9CiAKIAkvKiBBU1NPQyBkYXRhICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9hdF9oZG1hYy5jIGIvZHJpdmVycy9kbWEvYXRfaGRtYWMuYwppbmRleCAzZDdkNzA1Li4yMzVmNTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9hdF9oZG1hYy5jCisrKyBiL2RyaXZlcnMvZG1hL2F0X2hkbWFjLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQAogLyoqCiAgKiBhdGNfYXNzaWduX2Nvb2tpZSAtIGNvbXB1dGUgYW5kIGFzc2lnbiBuZXcgY29va2llCiAgKiBAYXRjaGFuOiBjaGFubmVsIHdlIHdvcmsgb24KLSAqIEBkZXNjOiBkZXNjcmlwdG9yIHRvIGFzaWduIGNvb2tpZSBmb3IKKyAqIEBkZXNjOiBkZXNjcmlwdG9yIHRvIGFzc2lnbiBjb29raWUgZm9yCiAgKgogICogQ2FsbGVkIHdpdGggYXRjaGFuLT5sb2NrIGhlbGQgYW5kIGJoIGRpc2FibGVkCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2NvaDkwMTMxOC5jIGIvZHJpdmVycy9kbWEvY29oOTAxMzE4LmMKaW5kZXggMDBkZWFiZC4uZjQ4ZTU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvY29oOTAxMzE4LmMKKysrIGIvZHJpdmVycy9kbWEvY29oOTAxMzE4LmMKQEAgLTUyOSw3ICs1MjksNyBAQAogCXZhbCA9IHJlYWRsKHZpcnRiYXNlICsgQ09IOTAxMzE4X0NYX0NGRyArCiAJCSAgICBDT0g5MDEzMThfQ1hfQ0ZHX1NQQUNJTkcgKiBjaGFubmVsKTsKIAotCS8qIFN0b3BwaW5nIGluZmluaXQgdHJhbnNmZXIgKi8KKwkvKiBTdG9wcGluZyBpbmZpbml0ZSB0cmFuc2ZlciAqLwogCWlmICgodmFsICYgQ09IOTAxMzE4X0NYX0NUUkxfVENfRU5BQkxFKSA9PSAwICYmCiAJICAgICh2YWwgJiBDT0g5MDEzMThfQ1hfQ0ZHX0NIX0VOQUJMRSkpCiAJCWNvaGMtPnN0b3BwZWQgPSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYS5jIGIvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYS5jCmluZGV4IDc5OGY0NmEuLjNkNGVjMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWEuYworKysgYi9kcml2ZXJzL2RtYS9pbnRlbF9taWRfZG1hLmMKQEAgLTkxMSw4ICs5MTEsOCBAQAogCiAvKioKICAqIG1pZGNfaGFuZGxlX2Vycm9yIC0JSGFuZGxlIERNQSB0eG4gZXJyb3IKLSAqIEBtaWQ6IGNvbnRyb2xsZXIgd2hlcmUgZXJyb3Igb2NjdXJlZAotICogQG1pZGM6IGNoYW4gd2hlcmUgZXJyb3Igb2NjdXJlZAorICogQG1pZDogY29udHJvbGxlciB3aGVyZSBlcnJvciBvY2N1cnJlZAorICogQG1pZGM6IGNoYW4gd2hlcmUgZXJyb3Igb2NjdXJyZWQKICAqCiAgKiBTY2FuIHRoZSBkZXNjcmlwdG9yIGZvciBlcnJvcgogICovCkBAIC0xMDk5LDcgKzEwOTksNyBAQAogCQlkbWEtPm1hc2tfcmVnID0gaW9yZW1hcChMTldfUEVSSVBIUkFMX01BU0tfQkFTRSwKIAkJCQkJTE5XX1BFUklQSFJBTF9NQVNLX1NJWkUpOwogCQlpZiAoZG1hLT5tYXNrX3JlZyA9PSBOVUxMKSB7Ci0JCQlwcl9lcnIoIkVSUl9NRE1BOkNhbnQgbWFwIHBlcmlwaHJhbCBpbnRyIHNwYWNlICEhXG4iKTsKKwkJCXByX2VycigiRVJSX01ETUE6Q2FuJ3QgbWFwIHBlcmlwaHJhbCBpbnRyIHNwYWNlICEhXG4iKTsKIAkJCXJldHVybiAtRU5PTUVNOwogCQl9CiAJfSBlbHNlCkBAIC0xMzczLDcgKzEzNzMsNyBAQAogCXBjaV9yZXN0b3JlX3N0YXRlKHBjaSk7CiAJcmV0ID0gcGNpX2VuYWJsZV9kZXZpY2UocGNpKTsKIAlpZiAocmV0KSB7Ci0JCXByX2VycigiTURNQTogZGV2aWNlIGNhbnQgYmUgZW5hYmxlZCBmb3IgJXhcbiIsIHBjaS0+ZGV2aWNlKTsKKwkJcHJfZXJyKCJNRE1BOiBkZXZpY2UgY2FuJ3QgYmUgZW5hYmxlZCBmb3IgJXhcbiIsIHBjaS0+ZGV2aWNlKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAJZGV2aWNlLT5zdGF0ZSA9IFJVTk5JTkc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9pbnRlbF9taWRfZG1hX3JlZ3MuaCBiL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWFfcmVncy5oCmluZGV4IDcwOWZlY2IuLmFlYTVlZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWFfcmVncy5oCisrKyBiL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWFfcmVncy5oCkBAIC0xNzQsOCArMTc0LDggQEAKICAqIEBkbWE6IGRtYSBkZXZpY2Ugc3RydXR1cmUgcG9pbnRlcgogICogQGJ1c3k6IGJvb2wgcmVwcmVzZW50aW5nIGlmIGNoIGlzIGJ1c3kgKGFjdGl2ZSB0eG4pIG9yIG5vdAogICogQGluX3VzZTogYm9vbCByZXByZXNlbnRpbmcgaWYgY2ggaXMgaW4gdXNlIG9yIG5vdAotICogQHJhd190ZnI6IHJhdyB0cmYgaW50ZXJydXB0IHJlY2lldmVkCi0gKiBAcmF3X2Jsb2NrOiByYXcgYmxvY2sgaW50ZXJydXB0IHJlY2lldmVkCisgKiBAcmF3X3RmcjogcmF3IHRyZiBpbnRlcnJ1cHQgcmVjZWl2ZWQKKyAqIEByYXdfYmxvY2s6IHJhdyBibG9jayBpbnRlcnJ1cHQgcmVjZWl2ZWQKICAqLwogc3RydWN0IGludGVsX21pZF9kbWFfY2hhbiB7CiAJc3RydWN0IGRtYV9jaGFuCQljaGFuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvbXBjNTEyeF9kbWEuYyBiL2RyaXZlcnMvZG1hL21wYzUxMnhfZG1hLmMKaW5kZXggNGY5NWQzMS4uYjliYWU5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvbXBjNTEyeF9kbWEuYworKysgYi9kcml2ZXJzL2RtYS9tcGM1MTJ4X2RtYS5jCkBAIC0zMjgsNyArMzI4LDcgQEAKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKLS8qIHByb2NjZXNzIGNvbXBsZXRlZCBkZXNjcmlwdG9ycyAqLworLyogcHJvY2VzcyBjb21wbGV0ZWQgZGVzY3JpcHRvcnMgKi8KIHN0YXRpYyB2b2lkIG1wY19kbWFfcHJvY2Vzc19jb21wbGV0ZWQoc3RydWN0IG1wY19kbWEgKm1kbWEpCiB7CiAJZG1hX2Nvb2tpZV90IGxhc3RfY29va2llID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3N0ZV9kbWE0MC5jIGIvZHJpdmVycy9kbWEvc3RlX2RtYTQwLmMKaW5kZXggYWY5NTVkZS4uOTRlZTE1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvc3RlX2RtYTQwLmMKKysrIGIvZHJpdmVycy9kbWEvc3RlX2RtYTQwLmMKQEAgLTkwLDcgKzkwLDcgQEAKICAqIEBsbGlfbG9nOiBTYW1lIGFzIGFib3ZlIGJ1dCBmb3IgbG9naWNhbCBjaGFubmVscy4KICAqIEBsbGlfcG9vbDogVGhlIHBvb2wgd2l0aCB0d28gZW50cmllcyBwcmUtYWxsb2NhdGVkLgogICogQGxsaV9sZW46IE51bWJlciBvZiBsbGlzIG9mIGN1cnJlbnQgZGVzY3JpcHRvci4KLSAqIEBsbGlfY3VycmVudDogTnVtYmVyIG9mIHRyYW5zZmVyZWQgbGxpcy4KKyAqIEBsbGlfY3VycmVudDogTnVtYmVyIG9mIHRyYW5zZmVycmVkIGxsaXMuCiAgKiBAbGNsYV9hbGxvYzogTnVtYmVyIG9mIExDTEEgZW50cmllcyBhbGxvY2F0ZWQuCiAgKiBAdHhkOiBETUEgZW5naW5lIHN0cnVjdC4gVXNlZCBmb3IgYW1vbmcgb3RoZXIgdGhpbmdzIGZvciBjb21tdW5pY2F0aW9uCiAgKiBkdXJpbmcgYSB0cmFuc2Zlci4KQEAgLTEyMTQsNyArMTIxNCw3IEBACiAJcmV0dXJuOwogCiAgZXJyOgotCS8qIFJlc2N1ZSBtYW5vdXZlciBpZiByZWNlaXZpbmcgZG91YmxlIGludGVycnVwdHMgKi8KKwkvKiBSZXNjdWUgbWFub2V1dnJlIGlmIHJlY2VpdmluZyBkb3VibGUgaW50ZXJydXB0cyAqLwogCWlmIChkNDBjLT5wZW5kaW5nX3R4ID4gMCkKIAkJZDQwYy0+cGVuZGluZ190eC0tOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmQ0MGMtPmxvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9LY29uZmlnIGIvZHJpdmVycy9lZGFjL0tjb25maWcKaW5kZXggZmFjMWEyMC4uYWYxYTE3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL0tjb25maWcKKysrIGIvZHJpdmVycy9lZGFjL0tjb25maWcKQEAgLTQ1LDcgKzQ1LDcgQEAKIAlkZWZhdWx0IHkKIAktLS1oZWxwLS0tCiAJICBFbmFibGUgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gZGVjb2RlIE1hY2hpbmUgQ2hlY2sgRXhjZXB0aW9ucwotCSAgb2NjdXJpbmcgb24geW91ciBtYWNoaW5lIGluIGh1bWFuLXJlYWRhYmxlIGZvcm0uCisJICBvY2N1cnJpbmcgb24geW91ciBtYWNoaW5lIGluIGh1bWFuLXJlYWRhYmxlIGZvcm0uCiAKIAkgIFlvdSBzaG91bGQgZGVmaW5pdGVseSBzYXkgWSBoZXJlIGluIGNhc2UgeW91IHdhbnQgdG8gZGVjb2RlIE1DRXMKIAkgIHdoaWNoIG9jY3VyIHJlYWxseSBlYXJseSB1cG9uIGJvb3QsIGJlZm9yZSB0aGUgbW9kdWxlIGluZnJhc3RydWN0dXJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvY3BjOTI1X2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9jcGM5MjVfZWRhYy5jCmluZGV4IGI5YTc4MWMuLjgzN2FkOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9jcGM5MjVfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9jcGM5MjVfZWRhYy5jCkBAIC04MTcsNyArODE3LDcgQEAKIAl9CiB9CiAKLS8qIENvbnZlcnQgY3VycmVudCBiYWNrLWdyb3VuZCBzY3J1YiByYXRlIGludG8gYnl0ZS9zZWMgYmFuZHdpdGggKi8KKy8qIENvbnZlcnQgY3VycmVudCBiYWNrLWdyb3VuZCBzY3J1YiByYXRlIGludG8gYnl0ZS9zZWMgYmFuZHdpZHRoICovCiBzdGF0aWMgaW50IGNwYzkyNV9nZXRfc2RyYW1fc2NydWJfcmF0ZShzdHJ1Y3QgbWVtX2N0bF9pbmZvICptY2kpCiB7CiAJc3RydWN0IGNwYzkyNV9tY19wZGF0YSAqcGRhdGEgPSBtY2ktPnB2dF9pbmZvOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2VkYWNfY29yZS5oIGIvZHJpdmVycy9lZGFjL2VkYWNfY29yZS5oCmluZGV4IDNkOTY1MzQuLmVlZmEzNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9lZGFjX2NvcmUuaAorKysgYi9kcml2ZXJzL2VkYWMvZWRhY19jb3JlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQAogLyogY2hpcHNldCBFcnJvciBEZXRlY3Rpb24gYW5kIENvcnJlY3Rpb24gY2FwYWJpbGl0aWVzIGFuZCBtb2RlICovCiBlbnVtIGVkYWNfdHlwZSB7CiAJRURBQ19VTktOT1dOID0gMCwJLyogVW5rbm93biBpZiBFQ0MgaXMgYXZhaWxhYmxlICovCi0JRURBQ19OT05FLAkJLyogRG9lc250IHN1cHBvcnQgRUNDICovCisJRURBQ19OT05FLAkJLyogRG9lc24ndCBzdXBwb3J0IEVDQyAqLwogCUVEQUNfUkVTRVJWRUQsCQkvKiBSZXNlcnZlZCBFQ0MgdHlwZSAqLwogCUVEQUNfUEFSSVRZLAkJLyogRGV0ZWN0cyBwYXJpdHkgZXJyb3JzICovCiAJRURBQ19FQywJCS8qIEVycm9yIENoZWNraW5nIC0gbm8gY29ycmVjdGlvbiAqLwpAQCAtMjMzLDcgKzIzMyw3IEBACiAgKgkJCW9mIHRoZXNlIGluIHBhcmFsbGVsIHByb3ZpZGVzIDY0IGJpdHMgd2hpY2ggaXMgY29tbW9uCiAgKgkJCWZvciBhIG1lbW9yeSBzdGljay4KICAqCi0gKiBNZW1vcnkgU3RpY2s6CUEgcHJpbnRlZCBjaXJjdWl0IGJvYXJkIHRoYXQgYWdyZWdhdGVzIG11bHRpcGxlCisgKiBNZW1vcnkgU3RpY2s6CUEgcHJpbnRlZCBjaXJjdWl0IGJvYXJkIHRoYXQgYWdncmVnYXRlcyBtdWx0aXBsZQogICoJCQltZW1vcnkgZGV2aWNlcyBpbiBwYXJhbGxlbC4gIFRoaXMgaXMgdGhlIGF0b21pYwogICoJCQltZW1vcnkgY29tcG9uZW50IHRoYXQgaXMgcHVyY2hhc2VhYmxlIGJ5IEpvZSBjb25zdW1lcgogICoJCQlhbmQgbG9hZGVkIGludG8gYSBtZW1vcnkgc29ja2V0LgpAQCAtMzg1LDcgKzM4NSw3IEBACiAKIAkvKiBHZXQgdGhlIGN1cnJlbnQgc2RyYW0gbWVtb3J5IHNjcnViIHJhdGUgZnJvbSB0aGUgaW50ZXJuYWwKIAkgICByZXByZXNlbnRhdGlvbiBhbmQgY29udmVydHMgaXQgdG8gdGhlIGNsb3Nlc3QgbWF0Y2hpbmcKLQkgICBiYW5kd2l0aCBpbiBieXRlcy9zZWMuCisJICAgYmFuZHdpZHRoIGluIGJ5dGVzL3NlYy4KIAkgKi8KIAlpbnQgKCpnZXRfc2RyYW1fc2NydWJfcmF0ZSkgKHN0cnVjdCBtZW1fY3RsX2luZm8gKiBtY2kpOwogCkBAIC04MjMsNyArODIzLDcgQEAKICAqIFRoZXJlIGFyZSBhIGxpbWl0ZWQgbnVtYmVyIG9mIGVycm9yIGxvZ2dpbmcgcmVnaXN0ZXJzIHRoYXQgY2FuCiAgKiBiZSBleGF1c3RlZC4gIFdoZW4gYWxsIHJlZ2lzdGVycyBhcmUgZXhoYXVzdGVkIGFuZCBhbiBhZGRpdGlvbmFsCiAgKiBlcnJvciBvY2N1cnMgdGhlbiBhbiBlcnJvciBvdmVyZmxvdyByZWdpc3RlciByZWNvcmRzIHRoYXQgYW4KLSAqIGVycm9yIG9jY3VyZWQgYW5kIHRoZSB0eXBlIG9mIGVycm9yLCBidXQgZG9lc24ndCBoYXZlIGFueQorICogZXJyb3Igb2NjdXJyZWQgYW5kIHRoZSB0eXBlIG9mIGVycm9yLCBidXQgZG9lc24ndCBoYXZlIGFueQogICogZnVydGhlciBpbmZvcm1hdGlvbi4gIFRoZSBjZS91ZSB2ZXJzaW9ucyBtYWtlIGZvciBjbGVhbmVyCiAgKiByZXBvcnRpbmcgbG9naWMgYW5kIGZ1bmN0aW9uIGludGVyZmFjZSAtIHJlZHVjZXMgY29uZGl0aW9uYWwKICAqIHN0YXRlbWVudCBjbHV0dGVyIGFuZCBleHRyYSBmdW5jdGlvbiBhcmd1bWVudHMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2UuYyBiL2RyaXZlcnMvZWRhYy9lZGFjX2RldmljZS5jCmluZGV4IGQ1ZTEzYzkuLmE3NDA4Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9lZGFjX2RldmljZS5jCisrKyBiL2RyaXZlcnMvZWRhYy9lZGFjX2RldmljZS5jCkBAIC02NzIsNyArNjcyLDcgQEAKIAkJYmxvY2stPmNvdW50ZXJzLmNlX2NvdW50Kys7CiAJfQogCi0JLyogUHJvcG9nYXRlIHRoZSBjb3VudCB1cCB0aGUgJ3RvdGFscycgdHJlZSAqLworCS8qIFByb3BhZ2F0ZSB0aGUgY291bnQgdXAgdGhlICd0b3RhbHMnIHRyZWUgKi8KIAlpbnN0YW5jZS0+Y291bnRlcnMuY2VfY291bnQrKzsKIAllZGFjX2Rldi0+Y291bnRlcnMuY2VfY291bnQrKzsKIApAQCAtNzE4LDcgKzcxOCw3IEBACiAJCWJsb2NrLT5jb3VudGVycy51ZV9jb3VudCsrOwogCX0KIAotCS8qIFByb3BvZ2F0ZSB0aGUgY291bnQgdXAgdGhlICd0b3RhbHMnIHRyZWUgKi8KKwkvKiBQcm9wYWdhdGUgdGhlIGNvdW50IHVwIHRoZSAndG90YWxzJyB0cmVlICovCiAJaW5zdGFuY2UtPmNvdW50ZXJzLnVlX2NvdW50Kys7CiAJZWRhY19kZXYtPmNvdW50ZXJzLnVlX2NvdW50Kys7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9lZGFjX2RldmljZV9zeXNmcy5jIGIvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmMKaW5kZXggNDAwZGUwNy4uODY2NDlkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmMKKysrIGIvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmMKQEAgLTUzMyw3ICs1MzMsNyBAQAogCW1lbXNldCgmYmxvY2stPmtvYmosIDAsIHNpemVvZihzdHJ1Y3Qga29iamVjdCkpOwogCiAJLyogYnVtcCB0aGUgbWFpbiBrb2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50IGZvciB0aGlzIGNvbnRyb2xsZXIKLQkgKiBhbmQgdGhpcyBpbnN0YW5jZSBpcyBkZXBlbmRhbnQgb24gdGhlIG1haW4KKwkgKiBhbmQgdGhpcyBpbnN0YW5jZSBpcyBkZXBlbmRlbnQgb24gdGhlIG1haW4KIAkgKi8KIAltYWluX2tvYmogPSBrb2JqZWN0X2dldCgmZWRhY19kZXYtPmtvYmopOwogCWlmICghbWFpbl9rb2JqKSB7CkBAIC02MzUsNyArNjM1LDcgQEAKIAlpbnN0YW5jZS0+Y3RsID0gZWRhY19kZXY7CiAKIAkvKiBidW1wIHRoZSBtYWluIGtvYmplY3QncyByZWZlcmVuY2UgY291bnQgZm9yIHRoaXMgY29udHJvbGxlcgotCSAqIGFuZCB0aGlzIGluc3RhbmNlIGlzIGRlcGVuZGFudCBvbiB0aGUgbWFpbgorCSAqIGFuZCB0aGlzIGluc3RhbmNlIGlzIGRlcGVuZGVudCBvbiB0aGUgbWFpbgogCSAqLwogCW1haW5fa29iaiA9IGtvYmplY3RfZ2V0KCZlZGFjX2Rldi0+a29iaik7CiAJaWYgKCFtYWluX2tvYmopIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9lZGFjX21jLmMgYi9kcml2ZXJzL2VkYWMvZWRhY19tYy5jCmluZGV4IGE0ZTlkYjIuLjFkODA1NjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9lZGFjX21jLmMKKysrIGIvZHJpdmVycy9lZGFjL2VkYWNfbWMuYwpAQCAtNzI0LDcgKzcyNCw3IEBACiAJCSAqIFNvbWUgTUMncyBjYW4gcmVtYXAgbWVtb3J5IHNvIHRoYXQgaXQgaXMgc3RpbGwgYXZhaWxhYmxlCiAJCSAqIGF0IGEgZGlmZmVyZW50IGFkZHJlc3Mgd2hlbiBQQ0kgZGV2aWNlcyBtYXAgaW50byBtZW1vcnkuCiAJCSAqIE1DJ3MgdGhhdCBjYW4ndCBkbyB0aGlzIGxvc2UgdGhlIG1lbW9yeSB3aGVyZSBQQ0kgZGV2aWNlcwotCQkgKiBhcmUgbWFwcGVkLiAgVGhpcyBtYXBwaW5nIGlzIE1DIGRlcGVuZGFudCBhbmQgc28gd2UgY2FsbAorCQkgKiBhcmUgbWFwcGVkLiAgVGhpcyBtYXBwaW5nIGlzIE1DIGRlcGVuZGVudCBhbmQgc28gd2UgY2FsbAogCQkgKiBiYWNrIGludG8gdGhlIE1DIGRyaXZlciBmb3IgaXQgdG8gbWFwIHRoZSBNQyBwYWdlIHRvCiAJCSAqIGEgcGh5c2ljYWwgKENQVSkgcGFnZSB3aGljaCBjYW4gdGhlbiBiZSBtYXBwZWQgdG8gYSB2aXJ0dWFsCiAJCSAqIHBhZ2UgLSB3aGljaCBjYW4gdGhlbiBiZSBzY3J1YmJlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmMgYi9kcml2ZXJzL2VkYWMvZWRhY19tY19zeXNmcy5jCmluZGV4IDczMTk2ZjcuLjI2MzQzZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmMKKysrIGIvZHJpdmVycy9lZGFjL2VkYWNfbWNfc3lzZnMuYwpAQCAtODUwLDcgKzg1MCw3IEBACiAKIAkvKgogCSAqIGxvb3AgaWYgdGhlcmUgYXJlIGF0dHJpYnV0ZXMgYW5kIHVudGlsIHdlIGhpdCBhIE5VTEwgZW50cnkKLQkgKiBSZW1vdmUgZmlyc3QgYWxsIHRoZSBhdHJpYnV0ZXMKKwkgKiBSZW1vdmUgZmlyc3QgYWxsIHRoZSBhdHRyaWJ1dGVzCiAJICovCiAJd2hpbGUgKHN5c2ZzX2F0dHJpYikgewogCQlkZWJ1Z2Y0KCIlcygpIHN5c2ZzX2F0dHJpYiA9ICVwXG4iLF9fZnVuY19fLCBzeXNmc19hdHRyaWIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2VkYWNfcGNpX3N5c2ZzLmMgYi9kcml2ZXJzL2VkYWMvZWRhY19wY2lfc3lzZnMuYwppbmRleCAwMjNiMDFjLi40OTUxOThhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvZWRhY19wY2lfc3lzZnMuYworKysgYi9kcml2ZXJzL2VkYWMvZWRhY19wY2lfc3lzZnMuYwpAQCAtMzUyLDcgKzM1Miw3IEBACiAJCXJldHVybiAwOwogCiAJLyogRmlyc3QgdGltZSwgc28gY3JlYXRlIHRoZSBtYWluIGtvYmplY3QgYW5kIGl0cwotCSAqIGNvbnRyb2xzIGFuZCBhdHJpYnV0ZXMKKwkgKiBjb250cm9scyBhbmQgYXR0cmlidXRlcwogCSAqLwogCWVkYWNfY2xhc3MgPSBlZGFjX2dldF9zeXNmc19jbGFzcygpOwogCWlmIChlZGFjX2NsYXNzID09IE5VTEwpIHsKQEAgLTU1MSw3ICs1NTEsNyBAQAogLyoKICAqICBQQ0kgUGFyaXR5IHBvbGxpbmcKICAqCi0gKglGdWNudGlvbiB0byByZXRyaWV2ZSB0aGUgY3VycmVudCBwYXJpdHkgc3RhdHVzCisgKglGdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgY3VycmVudCBwYXJpdHkgc3RhdHVzCiAgKglhbmQgZGVjb2RlIGl0CiAgKgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTUwMDBfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k1MDAwX2VkYWMuYwppbmRleCBhNWNlZmFiLi44N2Y0MjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvaTUwMDBfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9pNTAwMF9lZGFjLmMKQEAgLTEzNzIsNyArMTM3Miw3IEBACiAJICogYWN0dWFsIG51bWJlciBvZiBzbG90cy9kaW1tcyBwZXIgY2hhbm5lbCwgd2UgdGh1cyB1dGlsaXplIHRoZQogCSAqIHJlc291cmNlIGFzIHNwZWNpZmllZCBieSB0aGUgY2hpcHNldC4gVGh1cywgd2UgbWlnaHQgaGF2ZQogCSAqIGhhdmUgbW9yZSBESU1NcyBwZXIgY2hhbm5lbCB0aGFuIGFjdHVhbGx5IG9uIHRoZSBtb2JvLCBidXQgdGhpcwotCSAqIGFsbG93cyB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgdXB0byB0aGUgY2hpcHNldCBtYXgsIHdpdGhvdXQKKwkgKiBhbGxvd3MgdGhlIGRyaXZlciB0byBzdXBwb3J0IHVwIHRvIHRoZSBjaGlwc2V0IG1heCwgd2l0aG91dAogCSAqIHNvbWUgZmFuY3kgbW9ibyBkZXRlcm1pbmF0aW9uLgogCSAqLwogCWk1MDAwX2dldF9kaW1tX2FuZF9jaGFubmVsX2NvdW50cyhwZGV2LCAmbnVtX2RpbW1zX3Blcl9jaGFubmVsLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2k1MTAwX2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9pNTEwMF9lZGFjLmMKaW5kZXggMDQ0OGRhMC4uYmNiZGVlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2k1MTAwX2VkYWMuYworKysgYi9kcml2ZXJzL2VkYWMvaTUxMDBfZWRhYy5jCkBAIC0xMSw3ICsxMSw3IEBACiAgKgogICogVGhlIGludGVsIDUxMDAgaGFzIHR3byBpbmRlcGVuZGVudCBjaGFubmVscy4gRURBQyBjb3JlIGN1cnJlbnRseQogICogY2FuIG5vdCByZWZsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBzbyBpbnN0ZWFkIHRoZSBjaGlwLXNlbGVjdAotICogcm93cyBmb3IgZWFjaCByZXNwZWN0aXZlIGNoYW5uZWwgYXJlIGxheWVkIG91dCBvbmUgYWZ0ZXIgYW5vdGhlciwKKyAqIHJvd3MgZm9yIGVhY2ggcmVzcGVjdGl2ZSBjaGFubmVsIGFyZSBsYWlkIG91dCBvbmUgYWZ0ZXIgYW5vdGhlciwKICAqIHRoZSBmaXJzdCBoYWxmIGJlbG9uZ2luZyB0byBjaGFubmVsIDAsIHRoZSBzZWNvbmQgaGFsZiBiZWxvbmdpbmcKICAqIHRvIGNoYW5uZWwgMS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2k1NDAwX2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9pNTQwMF9lZGFjLmMKaW5kZXggMzhhOWJlOS4uODBhNDY1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2k1NDAwX2VkYWMuYworKysgYi9kcml2ZXJzL2VkYWMvaTU0MDBfZWRhYy5jCkBAIC02NDgsNyArNjQ4LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIE1pc2NlbGFuZW91cyBlcnJvcnMgKi8KKwkvKiBNaXNjZWxsYW5lb3VzIGVycm9ycyAqLwogCWVycm51bSA9IGZpbmRfZmlyc3RfYml0KCZhbGxFcnJvcnMsIEFSUkFZX1NJWkUoZXJyb3JfbmFtZSkpOwogCiAJYnJhbmNoID0gZXh0cmFjdF9mYmRjaGFuX2luZHgoaW5mby0+ZmVycl9uZl9mYmQpOwpAQCAtMTI0MCw3ICsxMjQwLDcgQEAKIAkgKiBhY3R1YWwgbnVtYmVyIG9mIHNsb3RzL2RpbW1zIHBlciBjaGFubmVsLCB3ZSB0aHVzIHV0aWxpemUgdGhlCiAJICogcmVzb3VyY2UgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjaGlwc2V0LiBUaHVzLCB3ZSBtaWdodCBoYXZlCiAJICogaGF2ZSBtb3JlIERJTU1zIHBlciBjaGFubmVsIHRoYW4gYWN0dWFsbHkgb24gdGhlIG1vYm8sIGJ1dCB0aGlzCi0JICogYWxsb3dzIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCB1cHRvIHRoZSBjaGlwc2V0IG1heCwgd2l0aG91dAorCSAqIGFsbG93cyB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgdXAgdG8gdGhlIGNoaXBzZXQgbWF4LCB3aXRob3V0CiAJICogc29tZSBmYW5jeSBtb2JvIGRldGVybWluYXRpb24uCiAJICovCiAJbnVtX2RpbW1zX3Blcl9jaGFubmVsID0gTUFYX0RJTU1TX1BFUl9DSEFOTkVMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2k3MzAwX2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9pNzMwMF9lZGFjLmMKaW5kZXggNzZkMWY1Ny4uMzYzY2MxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2k3MzAwX2VkYWMuYworKysgYi9kcml2ZXJzL2VkYWMvaTczMDBfZWRhYy5jCkBAIC0xMDY1LDcgKzEwNjUsNyBAQAogCSAqIGFjdHVhbCBudW1iZXIgb2Ygc2xvdHMvZGltbXMgcGVyIGNoYW5uZWwsIHdlIHRodXMgdXRpbGl6ZSB0aGUKIAkgKiByZXNvdXJjZSBhcyBzcGVjaWZpZWQgYnkgdGhlIGNoaXBzZXQuIFRodXMsIHdlIG1pZ2h0IGhhdmUKIAkgKiBoYXZlIG1vcmUgRElNTXMgcGVyIGNoYW5uZWwgdGhhbiBhY3R1YWxseSBvbiB0aGUgbW9ibywgYnV0IHRoaXMKLQkgKiBhbGxvd3MgdGhlIGRyaXZlciB0byBzdXBwb3J0IHVwdG8gdGhlIGNoaXBzZXQgbWF4LCB3aXRob3V0CisJICogYWxsb3dzIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCB1cCB0byB0aGUgY2hpcHNldCBtYXgsIHdpdGhvdXQKIAkgKiBzb21lIGZhbmN5IG1vYm8gZGV0ZXJtaW5hdGlvbi4KIAkgKi8KIAludW1fZGltbXNfcGVyX2NoYW5uZWwgPSBNQVhfU0xPVFM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTdjb3JlX2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9pN2NvcmVfZWRhYy5jCmluZGV4IDgxMTU0YWIuLjQ2NWNiYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9pN2NvcmVfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9pN2NvcmVfZWRhYy5jCkBAIC0xNzcyLDcgKzE3NzIsNyBAQAogCS8qCiAJICogTUNFIGZpcnN0IHN0ZXA6IENvcHkgYWxsIG1jZSBlcnJvcnMgaW50byBhIHRlbXBvcmFyeSBidWZmZXIKIAkgKiBXZSB1c2UgYSBkb3VibGUgYnVmZmVyaW5nIGhlcmUsIHRvIHJlZHVjZSB0aGUgcmlzayBvZgotCSAqIGxvb3NpbmcgYW4gZXJyb3IuCisJICogbG9zaW5nIGFuIGVycm9yLgogCSAqLwogCXNtcF9ybWIoKTsKIAljb3VudCA9IChwdnQtPm1jZV9vdXQgKyBNQ0VfTE9HX0xFTiAtIHB2dC0+bWNlX2luKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2k4MjQ0M2J4Z3hfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k4MjQ0M2J4Z3hfZWRhYy5jCmluZGV4IDY3ODQwNWEuLjQzMjlkMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9pODI0NDNieGd4X2VkYWMuYworKysgYi9kcml2ZXJzL2VkYWMvaTgyNDQzYnhneF9lZGFjLmMKQEAgLTIwMyw3ICsyMDMsNyBAQAogCQlyb3dfaGlnaF9saW1pdCA9ICgodTMyKSBkcmJhciA8PCAyMyk7CiAJCS8qIGZpbmQgdGhlIERSQU0gQ2hpcCBTZWxlY3QgQmFzZSBhZGRyZXNzIGFuZCBtYXNrICovCiAJCWRlYnVnZjEoIk1DJWQ6ICVzOiAlcygpIFJvdz0lZCwgIgotCQkJIkJvdW5kcnkgQWRkcmVzcz0lIzB4LCBMYXN0ID0gJSMweFxuIiwKKwkJCSJCb3VuZGFyeSBBZGRyZXNzPSUjMHgsIExhc3QgPSAlIzB4XG4iLAogCQkJbWNpLT5tY19pZHgsIF9fRklMRV9fLCBfX2Z1bmNfXywgaW5kZXgsIHJvd19oaWdoX2xpbWl0LAogCQkJcm93X2hpZ2hfbGltaXRfbGFzdCk7CiAKQEAgLTMwNSw3ICszMDUsNyBAQAogCWk4MjQ0M2J4Z3hfaW5pdF9jc3Jvd3MobWNpLCBwZGV2LCBlZGFjX21vZGUsIG10eXBlKTsKIAogCS8qIE1hbnkgQklPU2VzIGRvbid0IGNsZWFyIGVycm9yIGZsYWdzIG9uIGJvb3QsIHNvIGRvIHRoaXMKLQkgKiBoZXJlLCBvciB3ZSBnZXQgInBoYW50b20iIGVycm9ycyBvY2N1cmluZyBhdCBtb2R1bGUtbG9hZAorCSAqIGhlcmUsIG9yIHdlIGdldCAicGhhbnRvbSIgZXJyb3JzIG9jY3VycmluZyBhdCBtb2R1bGUtbG9hZAogCSAqIHRpbWUuICovCiAJcGNpX3dyaXRlX2JpdHMzMihwZGV2LCBJODI0NDNCWEdYX0VBUCwKIAkJCShJODI0NDNCWEdYX0VBUF9PRkZTRVRfU0JFIHwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9tY2VfYW1kX2luai5jIGIvZHJpdmVycy9lZGFjL21jZV9hbWRfaW5qLmMKaW5kZXggNzMzYTdlN2EuLmE0OTg3ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9tY2VfYW1kX2luai5jCisrKyBiL2RyaXZlcnMvZWRhYy9tY2VfYW1kX2luai5jCkBAIC05MCw3ICs5MCw3IEBACiAKIAlpZiAodmFsdWUgPiA1KQogCQlpZiAoYm9vdF9jcHVfZGF0YS54ODYgIT0gMHgxNSB8fCB2YWx1ZSA+IDYpIHsKLQkJCXByaW50ayhLRVJOX0VSUiAiTm9uLWV4aXN0YW50IE1DRSBiYW5rOiAlbHVcbiIsIHZhbHVlKTsKKwkJCXByaW50ayhLRVJOX0VSUiAiTm9uLWV4aXN0ZW50IE1DRSBiYW5rOiAlbHVcbiIsIHZhbHVlKTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9yODI2MDBfZWRhYy5jIGIvZHJpdmVycy9lZGFjL3I4MjYwMF9lZGFjLmMKaW5kZXggNmE4MjJjNi4uNjc4NTEzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL3I4MjYwMF9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL3I4MjYwMF9lZGFjLmMKQEAgLTEyMCw3ICsxMjAsNyBAQAogCQkJCSAqICAgICAgICB3cml0ZSAwPU5PUAogCQkJCSAqLwogCi0jZGVmaW5lIFI4MjYwMF9EUkJBCTB4NjAJLyogKyAweDYwLi4weDYzIFNEUkFNIFJvdyBCb3VuZHJ5IEFkZHJlc3MKKyNkZWZpbmUgUjgyNjAwX0RSQkEJMHg2MAkvKiArIDB4NjAuLjB4NjMgU0RSQU0gUm93IEJvdW5kYXJ5IEFkZHJlc3MKIAkJCQkgKiAgUmVnaXN0ZXJzCiAJCQkJICoKIAkJCQkgKiA3OjAgIEFkZHJlc3MgbGluZXMgMzA6MjQgLSB1cHBlciBsaW1pdCBvZgpAQCAtMjE3LDcgKzIxNyw3IEBACiB7CiAJc3RydWN0IGNzcm93X2luZm8gKmNzcm93OwogCWludCBpbmRleDsKLQl1OCBkcmJhcjsJCS8qIFNEUkFNIFJvdyBCb3VuZHJ5IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKwl1OCBkcmJhcjsJCS8qIFNEUkFNIFJvdyBCb3VuZGFyeSBBZGRyZXNzIFJlZ2lzdGVyICovCiAJdTMyIHJvd19oaWdoX2xpbWl0LCByb3dfaGlnaF9saW1pdF9sYXN0OwogCXUzMiByZWdfc2RyYW0sIGVjY19vbiwgcm93X2Jhc2U7CiAKQEAgLTIzNiw3ICsyMzYsNyBAQAogCQlyb3dfaGlnaF9saW1pdCA9ICgodTMyKSBkcmJhciA8PCAyNCk7CiAvKgkJcm93X2hpZ2hfbGltaXQgPSAoKHUzMilkcmJhciA8PCAyNCkgfCAweGZmZmZmZlVMOyAqLwogCi0JCWRlYnVnZjEoIiVzKCkgUm93PSVkLCBCb3VuZHJ5IEFkZHJlc3M9JSMweCwgTGFzdCA9ICUjMHhcbiIsCisJCWRlYnVnZjEoIiVzKCkgUm93PSVkLCBCb3VuZGFyeSBBZGRyZXNzPSUjMHgsIExhc3QgPSAlIzB4XG4iLAogCQkJX19mdW5jX18sIGluZGV4LCByb3dfaGlnaF9saW1pdCwgcm93X2hpZ2hfbGltaXRfbGFzdCk7CiAKIAkJLyogRW1wdHkgcm93IFtwLjU3XSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9maXJld2lyZS9uZXQuYyBiL2RyaXZlcnMvZmlyZXdpcmUvbmV0LmMKaW5kZXggN2VkMDhmZDEuLjNmMDRkZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZmlyZXdpcmUvbmV0LmMKKysrIGIvZHJpdmVycy9maXJld2lyZS9uZXQuYwpAQCAtNDUzLDcgKzQ1Myw3IEBACiAJbWVtY3B5KHBkLT5wYnVmICsgZnJhZ19vZmYsIGZyYWdfYnVmLCBmcmFnX2xlbik7CiAKIAkvKgotCSAqIE1vdmUgbGlzdCBlbnRyeSB0byBiZWdpbm5pZyBvZiBsaXN0IHNvIHRoYXQgb2xkZXN0IHBhcnRpYWwKKwkgKiBNb3ZlIGxpc3QgZW50cnkgdG8gYmVnaW5uaW5nIG9mIGxpc3Qgc28gdGhhdCBvbGRlc3QgcGFydGlhbAogCSAqIGRhdGFncmFtcyBwZXJjb2xhdGUgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAogCSAqLwogCWxpc3RfbW92ZV90YWlsKCZwZC0+cGRfbGluaywgJnBlZXItPnBkX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncGlvL21jMzM4ODAuYyBiL2RyaXZlcnMvZ3Bpby9tYzMzODgwLmMKaW5kZXggMDBmNmQyNC4uNGVjNzk3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncGlvL21jMzM4ODAuYworKysgYi9kcml2ZXJzL2dwaW8vbWMzMzg4MC5jCkBAIC00NSw3ICs0NSw3IEBACiAgKiBUbyBzYXZlIHRpbWUgd2UgY2FjaGUgdGhlbSBoZXJlIGluIG1lbW9yeQogICovCiBzdHJ1Y3QgbWMzMzg4MCB7Ci0Jc3RydWN0IG11dGV4CWxvY2s7CS8qIHByb3RlY3QgZnJvbSBzaW11bHRhbm91cyBhY2Nlc3NlcyAqLworCXN0cnVjdCBtdXRleAlsb2NrOwkvKiBwcm90ZWN0IGZyb20gc2ltdWx0YW5lb3VzIGFjY2Vzc2VzICovCiAJdTgJCXBvcnRfY29uZmlnOwogCXN0cnVjdCBncGlvX2NoaXAgY2hpcDsKIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwppbmRleCA3OTllMTQ5Li44NzI3NDdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwpAQCAtMTY5OSw3ICsxNjk5LDcgQEAKIAogCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCi0JLyogVE9ETyBjaGVjayBidWZmZXIgaXMgc3VmZmljZW50bHkgbGFyZ2UgKi8KKwkvKiBUT0RPIGNoZWNrIGJ1ZmZlciBpcyBzdWZmaWNpZW50bHkgbGFyZ2UgKi8KIAkvKiBUT0RPIHNldHVwIGRlc3RydWN0b3IgY2FsbGJhY2sgKi8KIAogCWZiID0gZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+ZmJfY3JlYXRlKGRldiwgZmlsZV9wcml2LCByKTsKQEAgLTE3NTAsNyArMTc1MCw3IEBACiAKIAltdXRleF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAlvYmogPSBkcm1fbW9kZV9vYmplY3RfZmluZChkZXYsICppZCwgRFJNX01PREVfT0JKRUNUX0ZCKTsKLQkvKiBUT0RPIGNoZWNrIHRoYXQgd2UgcmVhbHkgZ2V0IGEgZnJhbWVidWZmZXIgYmFjay4gKi8KKwkvKiBUT0RPIGNoZWNrIHRoYXQgd2UgcmVhbGx5IGdldCBhIGZyYW1lYnVmZmVyIGJhY2suICovCiAJaWYgKCFvYmopIHsKIAkJRFJNX0VSUk9SKCJtb2RlIGludmFsaWQgZnJhbWVidWZmZXIgaWRcbiIpOwogCQlyZXQgPSAtRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jCmluZGV4IGFkZDE3MzcuLjVkMDBiMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKQEAgLTU1MSw3ICs1NTEsNyBAQAogICogY29ycnVwdGVkLgogICoKICAqIFdoZW4gdGhlIHNjYW4gbGlzdCBpcyBlbXB0eSwgdGhlIHNlbGVjdGVkIG1lbW9yeSBub2RlcyBjYW4gYmUgZnJlZWQuIEFuCi0gKiBpbW1lZGlhdGx5IGZvbGxvd2luZyBkcm1fbW1fc2VhcmNoX2ZyZWUgd2l0aCBiZXN0X21hdGNoID0gMCB3aWxsIHRoZW4gcmV0dXJuCisgKiBpbW1lZGlhdGVseSBmb2xsb3dpbmcgZHJtX21tX3NlYXJjaF9mcmVlIHdpdGggYmVzdF9tYXRjaCA9IDAgd2lsbCB0aGVuIHJldHVybgogICogdGhlIGp1c3QgZnJlZWQgYmxvY2sgKGJlY2F1c2UgaXRzIGF0IHRoZSB0b3Agb2YgdGhlIGZyZWVfc3RhY2sgbGlzdCkuCiAgKgogICogUmV0dXJucyBvbmUgaWYgdGhpcyBibG9jayBzaG91bGQgYmUgZXZpY3RlZCwgemVybyBvdGhlcndpc2UuIFdpbGwgYWx3YXlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA1MDA0NzI0Li4xYzFiMjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTYzMCw3ICs2MzAsNyBAQAogCQkgKiBGbGFnIGlmIHRoZSBoYXJkd2FyZSBhcHBlYXJzIHRvIGJlIHdlZGdlZC4KIAkJICoKIAkJICogVGhpcyBpcyBzZXQgd2hlbiBhdHRlbXB0cyB0byBpZGxlIHRoZSBkZXZpY2UgdGltZW91dC4KLQkJICogSXQgcHJldmVudHMgY29tbWFuZCBzdWJtaXNzaW9uIGZyb20gb2NjdXJpbmcgYW5kIG1ha2VzCisJCSAqIEl0IHByZXZlbnRzIGNvbW1hbmQgc3VibWlzc2lvbiBmcm9tIG9jY3VycmluZyBhbmQgbWFrZXMKIAkJICogZXZlcnkgcGVuZGluZyByZXF1ZXN0IGZhaWwKIAkJICovCiAJCWF0b21pY190IHdlZGdlZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IDBkYWVmY2EuLmNiODU3OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtMjEzLDcgKzIxMyw3IEBACiAJCQlyZXR1cm4gTU9ERV9QQU5FTDsKIAl9CiAKLQkvKiBvbmx5IHJlZnVzZSB0aGUgbW9kZSBvbiBub24gZURQIHNpbmNlIHdlIGhhdmUgc2VlbiBzb21lIHdpZXJkIGVEUCBwYW5lbHMKKwkvKiBvbmx5IHJlZnVzZSB0aGUgbW9kZSBvbiBub24gZURQIHNpbmNlIHdlIGhhdmUgc2VlbiBzb21lIHdlaXJkIGVEUCBwYW5lbHMKIAkgICB3aGljaCBhcmUgb3V0c2lkZSBzcGVjIHRvbGVyYW5jZXMgYnV0IHNvbWVob3cgd29yayBieSBtYWdpYyAqLwogCWlmICghaXNfZWRwKGludGVsX2RwKSAmJgogCSAgICAoaW50ZWxfZHBfbGlua19yZXF1aXJlZChjb25uZWN0b3ItPmRldiwgaW50ZWxfZHAsIG1vZGUtPmNsb2NrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2b19yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvX3JlZ3MuaAppbmRleCBhMzg2YjAyLi40ZjRlMjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvX3JlZ3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvX3JlZ3MuaApAQCAtMjMwLDcgKzIzMCw3IEBACiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiAvKioKLSAqIFRha2VzIGEgc3RydWN0IGludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIHdoaWNoIG91dHB1dHMgYXJlIHRhcmdldHRlZCBieQorICogVGFrZXMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2Ygd2hpY2ggb3V0cHV0cyBhcmUgdGFyZ2V0ZWQgYnkKICAqIGZ1dHVyZSBvdXRwdXQgY29tbWFuZHMuCiAgKgogICogQWZmZWN0ZWQgY29tbWFuZHMgaW5jbHVlIFNFVF9PVVRQVVRfVElNSU5HU19QQVJUWzEyXSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZG1hLmMKaW5kZXggMWUxZWIxZC4uNWNjYjY1ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX2RtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2EvbWdhX2RtYS5jCkBAIC00MjYsNyArNDI2LDcgQEAKICAqIEJvb3RzdHJhcCB0aGUgZHJpdmVyIGZvciBBR1AgRE1BLgogICoKICAqIFx0b2RvCi0gKiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZXJlIGlzIGFueSBiZW5pZml0IHRvIHN0b3JpbmcgdGhlIFdBUlAgbWljcm9jb2RlIGluCisgKiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZXJlIGlzIGFueSBiZW5lZml0IHRvIHN0b3JpbmcgdGhlIFdBUlAgbWljcm9jb2RlIGluCiAgKiBBR1AgbWVtb3J5LiAgSWYgbm90LCB0aGUgbWljcm9jb2RlIG1heSBhcyB3ZWxsIGFsd2F5cyBiZSBwdXQgaW4gUENJCiAgKiBtZW1vcnkuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9jaGFubmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2NoYW5uZWwuYwppbmRleCAzODM3MDkwLi40Y2VhMzVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2NoYW5uZWwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2NoYW5uZWwuYwpAQCAtMjAwLDcgKzIwMCw3IEBACiAJLyogZGlzYWJsZSB0aGUgZmlmbyBjYWNoZXMgKi8KIAlwZmlmby0+cmVhc3NpZ24oZGV2LCBmYWxzZSk7CiAKLQkvKiBDb25zdHJ1Y3QgaW5pdGFsIFJBTUZDIGZvciBuZXcgY2hhbm5lbCAqLworCS8qIENvbnN0cnVjdCBpbml0aWFsIFJBTUZDIGZvciBuZXcgY2hhbm5lbCAqLwogCXJldCA9IHBmaWZvLT5jcmVhdGVfY29udGV4dChjaGFuKTsKIAlpZiAocmV0KSB7CiAJCW5vdXZlYXVfY2hhbm5lbF9wdXQoJmNoYW4pOwpAQCAtMjc4LDcgKzI3OCw3IEBACiAJCXJldHVybjsKIAl9CiAKLQkvKiBub29uZSB3YW50cyB0aGUgY2hhbm5lbCBhbnltb3JlICovCisJLyogbm8gb25lIHdhbnRzIHRoZSBjaGFubmVsIGFueW1vcmUgKi8KIAlOVl9ERUJVRyhkZXYsICJmcmVlaW5nIGNoYW5uZWwgJWRcbiIsIGNoYW4tPmlkKTsKIAlub3V2ZWF1X2RlYnVnZnNfY2hhbm5lbF9maW5pKGNoYW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaAppbmRleCBmZmYxODBhLi41N2U1MzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJ2LmgKQEAgLTIxNiw3ICsyMTYsNyBAQAogCS8qIG1hcHBpbmcgb2YgdGhlIGZpZm8gaXRzZWxmICovCiAJc3RydWN0IGRybV9sb2NhbF9tYXAgKm1hcDsKIAotCS8qIG1hcHBpbmcgb2YgdGhlIHJlZ3MgY29udHJvbGluZyB0aGUgZmlmbyAqLworCS8qIG1hcHBpbmcgb2YgdGhlIHJlZ3MgY29udHJvbGxpbmcgdGhlIGZpZm8gKi8KIAl2b2lkIF9faW9tZW0gKnVzZXI7CiAJdWludDMyX3QgdXNlcl9nZXQ7CiAJdWludDMyX3QgdXNlcl9wdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N0YXRlLmMKaW5kZXggNGZjYmQwOS4uNWJiMjg1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdGF0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3RhdGUuYwpAQCAtOTYzLDcgKzk2Myw3IEBACiAJaWYgKHJldCkKIAkJZ290byBlcnJfbW1pbzsKIAotCS8qIE1hcCBQUkFNSU4gQkFSLCBvciBvbiBvbGRlciBjYXJkcywgdGhlIGFwZXJ0dXJlIHdpdGhpbmcgQkFSMCAqLworCS8qIE1hcCBQUkFNSU4gQkFSLCBvciBvbiBvbGRlciBjYXJkcywgdGhlIGFwZXJ0dXJlIHdpdGhpbiBCQVIwICovCiAJaWYgKGRldl9wcml2LT5jYXJkX3R5cGUgPj0gTlZfNDApIHsKIAkJaW50IHJhbWluX2JhciA9IDI7CiAJCWlmIChwY2lfcmVzb3VyY2VfbGVuKGRldi0+cGRldiwgcmFtaW5fYmFyKSA9PSAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnYwNF9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMuYwppbmRleCBhMjYwZmJiLi43NDhiOWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMuYwpAQCAtMTY0LDcgKzE2NCw3IEBACiAJTlZfREVCVUdfS01TKGRldiwgIlNldHRpbmcgZHBtcyBtb2RlICVkIG9uIENSVEMgJWRcbiIsIG1vZGUsCiAJCQkJCQkJbnZfY3J0Yy0+aW5kZXgpOwogCi0JaWYgKG52X2NydGMtPmxhc3RfZHBtcyA9PSBtb2RlKSAvKiBEb24ndCBkbyB1bm5lY2VzYXJ5IG1vZGUgY2hhbmdlcy4gKi8KKwlpZiAobnZfY3J0Yy0+bGFzdF9kcG1zID09IG1vZGUpIC8qIERvbid0IGRvIHVubmVjZXNzYXJ5IG1vZGUgY2hhbmdlcy4gKi8KIAkJcmV0dXJuOwogCiAJbnZfY3J0Yy0+bGFzdF9kcG1zID0gbW9kZTsKQEAgLTY3Nyw3ICs2NzcsNyBAQAogCiAJTlZCbGFua1NjcmVlbihkZXYsIG52X2NydGMtPmluZGV4LCB0cnVlKTsKIAotCS8qIFNvbWUgbW9yZSBwcmVwZXJhdGlvbi4gKi8KKwkvKiBTb21lIG1vcmUgcHJlcGFyYXRpb24uICovCiAJTlZXcml0ZUNSVEMoZGV2LCBudl9jcnRjLT5pbmRleCwgTlZfUENSVENfQ09ORklHLCBOVl9QQ1JUQ19DT05GSUdfU1RBUlRfQUREUkVTU19OT05fVkdBKTsKIAlpZiAoZGV2X3ByaXYtPmNhcmRfdHlwZSA9PSBOVl80MCkgewogCQl1aW50MzJfdCByZWc5MDAgPSBOVlJlYWRSQU1EQUMoZGV2LCBudl9jcnRjLT5pbmRleCwgTlZfUFJBTURBQ185MDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnY0MF9ncmFwaC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnY0MF9ncmFwaC5jCmluZGV4IDE4ZDMwYzIuLmZjZWI0NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252NDBfZ3JhcGguYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjQwX2dyYXBoLmMKQEAgLTE4MSw3ICsxODEsNyBAQAogCQkgIE5WNDBfUEdSQVBIX0NUWENUTF9DVVJfTE9BREVEKTsKIAkvKiAweDMyRTAgcmVjb3JkcyB0aGUgaW5zdGFuY2UgYWRkcmVzcyBvZiB0aGUgYWN0aXZlIEZJRk8ncyBQR1JBUEgKIAkgKiBjb250ZXh0LiAgSWYgYXQgYW55IHRpbWUgdGhpcyBkb2Vzbid0IG1hdGNoIDB4NDAwMzJDLCB5b3Ugd2lsbAotCSAqIHJlY2lldmUgUEdSQVBIX0lOVFJfQ09OVEVYVF9TV0lUQ0gKKwkgKiByZWNlaXZlIFBHUkFQSF9JTlRSX0NPTlRFWFRfU1dJVENICiAJICovCiAJbnZfd3IzMihkZXYsIE5WNDBfUEZJRk9fR1JDVFhfSU5TVEFOQ0UsIGluc3QpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvcy5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvcy5oCmluZGV4IDA0YjI2OWQuLjdmZDg4NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3MuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zLmgKQEAgLTczOCwxMyArNzM4LDEzIEBACiB7CiAjaWYgQVRPTV9CSUdfRU5ESUFOCiAgICAgVUNIQVIgdWNSZXNlcnZlZDE6MTsKLSAgICBVQ0hBUiB1Y0RpZ1NlbDozOyAgICAgICAgICAgICAvLyA9MC8xLzIvMy80LzU6IERJRzAvMS8yLzMvNC81IChJbiByZWdpc3RlciBzcGVjIGFsc28gcmVmZXJlZCBhcyBESUdBL0IvQy9EL0UvRikKKyAgICBVQ0hBUiB1Y0RpZ1NlbDozOyAgICAgICAgICAgICAvLyA9MC8xLzIvMy80LzU6IERJRzAvMS8yLzMvNC81IChJbiByZWdpc3RlciBzcGVjIGFsc28gcmVmZXJyZWQgYXMgRElHQS9CL0MvRC9FL0YpCiAgICAgVUNIQVIgdWNSZXNlcnZlZDozOwogICAgIFVDSEFSIHVjRFBMaW5rUmF0ZToxOyAgICAgICAgIC8vID0wOiAxLjYyR2h6LCA9MTogMi43R2h6CiAjZWxzZQogICAgIFVDSEFSIHVjRFBMaW5rUmF0ZToxOyAgICAgICAgIC8vID0wOiAxLjYyR2h6LCA9MTogMi43R2h6CiAgICAgVUNIQVIgdWNSZXNlcnZlZDozOwotICAgIFVDSEFSIHVjRGlnU2VsOjM7ICAgICAgICAgICAgIC8vID0wLzEvMi8zLzQvNTogRElHMC8xLzIvMy80LzUgKEluIHJlZ2lzdGVyIHNwZWMgYWxzbyByZWZlcmVkIGFzIERJR0EvQi9DL0QvRS9GKQorICAgIFVDSEFSIHVjRGlnU2VsOjM7ICAgICAgICAgICAgIC8vID0wLzEvMi8zLzQvNTogRElHMC8xLzIvMy80LzUgKEluIHJlZ2lzdGVyIHNwZWMgYWxzbyByZWZlcnJlZCBhcyBESUdBL0IvQy9EL0UvRikKICAgICBVQ0hBUiB1Y1Jlc2VydmVkMToxOwogI2VuZGlmCiB9QVRPTV9ESUdfRU5DT0RFUl9DT05GSUdfVjM7CkBAIC03ODUsMTMgKzc4NSwxMyBAQAogewogI2lmIEFUT01fQklHX0VORElBTgogICAgIFVDSEFSIHVjUmVzZXJ2ZWQxOjE7Ci0gICAgVUNIQVIgdWNEaWdTZWw6MzsgICAgICAgICAgICAgLy8gPTAvMS8yLzMvNC81OiBESUcwLzEvMi8zLzQvNSAoSW4gcmVnaXN0ZXIgc3BlYyBhbHNvIHJlZmVyZWQgYXMgRElHQS9CL0MvRC9FL0YpCisgICAgVUNIQVIgdWNEaWdTZWw6MzsgICAgICAgICAgICAgLy8gPTAvMS8yLzMvNC81OiBESUcwLzEvMi8zLzQvNSAoSW4gcmVnaXN0ZXIgc3BlYyBhbHNvIHJlZmVycmVkIGFzIERJR0EvQi9DL0QvRS9GKQogICAgIFVDSEFSIHVjUmVzZXJ2ZWQ6MjsKICAgICBVQ0hBUiB1Y0RQTGlua1JhdGU6MjsgICAgICAgICAvLyA9MDogMS42MkdoeiwgPTE6IDIuN0doeiwgMj01LjRHaHogICAgPD0gQ2hhbmdlZCBjb21wYXJpbmcgdG8gcHJldmlvdXMgdmVyc2lvbgogI2Vsc2UKICAgICBVQ0hBUiB1Y0RQTGlua1JhdGU6MjsgICAgICAgICAvLyA9MDogMS42MkdoeiwgPTE6IDIuN0doeiwgMj01LjRHaHogICAgPD0gQ2hhbmdlZCBjb21wYXJpbmcgdG8gcHJldmlvdXMgdmVyc2lvbgogICAgIFVDSEFSIHVjUmVzZXJ2ZWQ6MjsKLSAgICBVQ0hBUiB1Y0RpZ1NlbDozOyAgICAgICAgICAgICAvLyA9MC8xLzIvMy80LzU6IERJRzAvMS8yLzMvNC81IChJbiByZWdpc3RlciBzcGVjIGFsc28gcmVmZXJlZCBhcyBESUdBL0IvQy9EL0UvRikKKyAgICBVQ0hBUiB1Y0RpZ1NlbDozOyAgICAgICAgICAgICAvLyA9MC8xLzIvMy80LzU6IERJRzAvMS8yLzMvNC81IChJbiByZWdpc3RlciBzcGVjIGFsc28gcmVmZXJyZWQgYXMgRElHQS9CL0MvRC9FL0YpCiAgICAgVUNIQVIgdWNSZXNlcnZlZDE6MTsKICNlbmRpZgogfUFUT01fRElHX0VOQ09ERVJfQ09ORklHX1Y0OwpAQCAtMjEyNiw3ICsyMTI2LDcgQEAKIC8vIFN0cnVjdHVyZXMgdXNlZCBpbiBGaXJtd2FyZUluZm9UYWJsZQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCQogCi0vLyB1c0JJT1NDYXBhYmlsaXR5IERlZmludGlvbjoKKy8vIHVzQklPU0NhcGFiaWxpdHkgRGVmaW5pdGlvbjoKIC8vIEJpdCAwID0gMDogQmlvcyBpbWFnZSBpcyBub3QgUG9zdGVkLCA9MTpCaW9zIGltYWdlIGlzIFBvc3RlZDsgCiAvLyBCaXQgMSA9IDA6IER1YWwgQ1JUQyBpcyBub3Qgc3VwcG9ydGVkLCA9MTogRHVhbCBDUlRDIGlzIHN1cHBvcnRlZDsgCiAvLyBCaXQgMiA9IDA6IEV4dGVuZGVkIERlc2t0b3AgaXMgbm90IHN1cHBvcnRlZCwgPTE6IEV4dGVuZGVkIERlc2t0b3AgaXMgc3VwcG9ydGVkOyAKQEAgLTMzNDEsNyArMzM0MSw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8JCiAvLyBTdHJ1Y3R1cmUgdXNlZCBpbiBBbmFsb2dUVl9JbmZvVGFibGUgKFRvcCBsZXZlbCkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwkKLS8vdWNUVkJvb3RVcERlZmF1bHRTdGQgZGVmaW5pdG9uOgorLy91Y1RWQm9vdFVwRGVmYXVsdFN0ZCBkZWZpbml0aW9uOgogCiAvL0FUT01fVFZfTlRTQyAgICAgICAgICAgICAgICAxCiAvL0FUT01fVFZfTlRTQ0ogICAgICAgICAgICAgICAyCkBAIC0zODE2LDcgKzM4MTYsNyBAQAogICBVQ0hBUiAgICAgICAgICAgICAgICAgICAgUmVzZXJ2ZWQgWzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHBvdGVudGlhbCBleHBhbnNpb24KIH1BVE9NX0VYVEVSTkFMX0RJU1BMQVlfQ09OTkVDVElPTl9JTkZPOwogCi0vL1JlbGF0ZWQgZGVmaW5pdGlvbnMsIGFsbCByZWNvcmRzIGFyZSBkaWZmZXJudCBidXQgdGhleSBoYXZlIGEgY29tbW9uZCBoZWFkZXIKKy8vUmVsYXRlZCBkZWZpbml0aW9ucywgYWxsIHJlY29yZHMgYXJlIGRpZmZlcmVudCBidXQgdGhleSBoYXZlIGEgY29tbW9uZCBoZWFkZXIKIHR5cGVkZWYgc3RydWN0IF9BVE9NX0NPTU1PTl9SRUNPUkRfSEVBREVSCiB7CiAgIFVDSEFSICAgICAgICAgICAgICAgdWNSZWNvcmRUeXBlOyAgICAgICAgICAgICAgICAgICAgICAvL0FuIGVtdW4gdG8gaW5kaWNhdGUgdGhlIHJlY29yZCB0eXBlCkBAIC00MzY1LDE0ICs0MzY1LDE0IEBACiB1bENTUl9NM19BUkJfQ05UTF9ERUZBVUxUWzEwXTogICAgQXJyYXlzIHdpdGggdmFsdWVzIGZvciBDU1IgTTMgYXJiaXRlciBmb3IgZGVmYXVsdAogdWxDU1JfTTNfQVJCX0NOVExfVVZEWzEwXTogICAgICAgIEFycmF5cyB3aXRoIHZhbHVlcyBmb3IgQ1NSIE0zIGFyYml0ZXIgZm9yIFVWRCBwbGF5YmFjay4KIHVsQ1NSX00zX0FSQl9DTlRMX0ZTM0RbMTBdOiAgICAgICBBcnJheXMgd2l0aCB2YWx1ZXMgZm9yIENTUiBNMyBhcmJpdGVyIGZvciBGdWxsIFNjcmVlbiAzRCBhcHBsaWNhdGlvbnMuCi1zQXZhaWxfU0NMS1s1XTogICAgICAgICAgICAgICAgICAgQXJyYXlzIHRvIHByb3ZpZGUgYXZhaWxhYmUgbGlzdCBvZiBTTENLIGFuZCBjb3JyZXNwb25kaW5nIHZvbHRhZ2UsIG9yZGVyIGZyb20gbG93IHRvIGhpZ2ggIAorc0F2YWlsX1NDTEtbNV06ICAgICAgICAgICAgICAgICAgIEFycmF5cyB0byBwcm92aWRlIGF2YWlsYWJsZSBsaXN0IG9mIFNMQ0sgYW5kIGNvcnJlc3BvbmRpbmcgdm9sdGFnZSwgb3JkZXIgZnJvbSBsb3cgdG8gaGlnaCAgCiB1bEdNQ1Jlc3RvcmVSZXNldFRpbWU6ICAgICAgICAgICAgR01DIHBvd2VyIHJlc3RvcmUgYW5kIEdNQyByZXNldCB0aW1lIHRvIGNhbGN1bGF0ZSBkYXRhIHJlY29ubmVjdGlvbiBsYXRlbmN5LiBVbml0IGluIG5zLiAKIHVsTWluaW11bU5DbGs6ICAgICAgICAgICAgICAgICAgICBNaW5pbXVtIE5DTEsgc3BlZWQgYW1vbmcgYWxsIE5CLVBzdGF0ZXMgdG8gY2FsY3VhbHRlIGRhdGEgcmVjb25uZWN0aW9uIGxhdGVuY3kuIFVuaXQgaW4gMTBrSHouIAogdWxJZGxlTkNsazogICAgICAgICAgICAgICAgICAgICAgIE5DTEsgc3BlZWQgd2hpbGUgbWVtb3J5IHJ1bnMgaW4gc2VsZi1yZWZyZXNoIHN0YXRlLiBVbml0IGluIDEwa0h6LgogdWxERFJfRExMX1Bvd2VyVXBUaW1lOiAgICAgICAgICAgIEREUiBQSFkgRExMIHBvd2VyIHVwIHRpbWUuIFVuaXQgaW4gbnMuCiB1bEREUl9QTExfUG93ZXJVcFRpbWU6ICAgICAgICAgICAgRERSIFBIWSBQTEwgcG93ZXIgdXAgdGltZS4gVW5pdCBpbiBucy4KLXVzUENJRUNsa1NTUGVyY2VudGFnZTogICAgICAgICAgICBQQ0lFIENsb2NrIFNwcmVkIFNwZWN0cnVtIFBlcmNlbnRhZ2UgaW4gdW5pdCAwLjAxJTsgMTAwIG1lYW4gMSUuCi11c1BDSUVDbGtTU1R5cGU6ICAgICAgICAgICAgICAgICAgUENJRSBDbG9jayBTcHJlZCBTcGVjdHJ1bSBUeXBlLiAwIGZvciBEb3duIHNwcmVhZChkZWZhdWx0KTsgMSBmb3IgQ2VudGVyIHNwcmVhZC4KK3VzUENJRUNsa1NTUGVyY2VudGFnZTogICAgICAgICAgICBQQ0lFIENsb2NrIFNwcmVhZCBTcGVjdHJ1bSBQZXJjZW50YWdlIGluIHVuaXQgMC4wMSU7IDEwMCBtZWFuIDElLgordXNQQ0lFQ2xrU1NUeXBlOiAgICAgICAgICAgICAgICAgIFBDSUUgQ2xvY2sgU3ByZWFkIFNwZWN0cnVtIFR5cGUuIDAgZm9yIERvd24gc3ByZWFkKGRlZmF1bHQpOyAxIGZvciBDZW50ZXIgc3ByZWFkLgogdXNMdmRzU1NQZXJjZW50YWdlOiAgICAgICAgICAgICAgIExWRFMgcGFuZWwgKCBub3QgaW5jbHVkZSBlRFAgKSBTcHJlYWQgU3BlY3RydW0gUGVyY2VudGFnZSBpbiB1bml0IG9mIDAuMDElLCA9MCwgdXNlIFZCSU9TIGRlZmF1bHQgc2V0dGluZy4gCiB1c0x2ZHNTU3ByZWFkUmF0ZUluMTBIejogICAgICAgICAgTFZEUyBwYW5lbCAoIG5vdCBpbmNsdWRlIGVEUCApIFNwcmVhZCBTcGVjdHJ1bSBmcmVxdWVuY3kgaW4gdW5pdCBvZiAxMEh6LCA9MCwgdXNlIFZCSU9TIGRlZmF1bHQgc2V0dGluZy4gCiB1c0hETUlTU1BlcmNlbnRhZ2U6ICAgICAgICAgICAgICAgSERNSSBTcHJlYWQgU3BlY3RydW0gUGVyY2VudGFnZSBpbiB1bml0IDAuMDElOyAxMDAgbWVhbiAxJSwgID0wLCB1c2UgVkJJT1MgZGVmYXVsdCBzZXR0aW5nLiAKQEAgLTQ1NTUsNyArNDU1NSw3IEBACiAjZGVmaW5lIEFUT01fUzBfU1lTVEVNX1BPV0VSX1NUQVRFX1ZBTFVFX0xJVEVBQyAzCiAjZGVmaW5lIEFUT01fUzBfU1lTVEVNX1BPV0VSX1NUQVRFX1ZBTFVFX0xJVDJBQyA0CiAKLS8vQnl0ZSBhbGlnbmVkIGRlZmludGlvbiBmb3IgQklPUyB1c2FnZQorLy9CeXRlIGFsaWduZWQgZGVmaW5pdGlvbiBmb3IgQklPUyB1c2FnZQogI2RlZmluZSBBVE9NX1MwX0NSVDFfTU9OT2IwICAgICAgICAgICAgIDB4MDEKICNkZWZpbmUgQVRPTV9TMF9DUlQxX0NPTE9SYjAgICAgICAgICAgICAweDAyCiAjZGVmaW5lIEFUT01fUzBfQ1JUMV9NQVNLYjAgICAgICAgICAgICAgKEFUT01fUzBfQ1JUMV9NT05PYjArQVRPTV9TMF9DUlQxX0NPTE9SYjApCkBAIC00NjIxLDcgKzQ2MjEsNyBAQAogI2RlZmluZSBBVE9NX1MyX0RJU1BMQVlfUk9UQVRJT05fQU5HTEVfTUFTSyAgIDB4QzAwMDAwMDBMCiAKIAotLy9CeXRlIGFsaWduZWQgZGVmaW50aW9uIGZvciBCSU9TIHVzYWdlCisvL0J5dGUgYWxpZ25lZCBkZWZpbml0aW9uIGZvciBCSU9TIHVzYWdlCiAjZGVmaW5lIEFUT01fUzJfVFYxX1NUQU5EQVJEX01BU0tiMCAgICAgMHgwRgogI2RlZmluZSBBVE9NX1MyX0NVUlJFTlRfQkxfTEVWRUxfTUFTS2IxIDB4RkYKICNkZWZpbmUgQVRPTV9TMl9ERVZJQ0VfRFBNU19TVEFURWIyICAgICAweDAxCkBAIC00NjcxLDcgKzQ2NzEsNyBAQAogI2RlZmluZSBBVE9NX1MzX0FMTE9XX0ZBU1RfUFdSX1NXSVRDSCAgIDB4NDAwMDAwMDBMCiAjZGVmaW5lIEFUT01fUzNfUlFTVF9HUFVfVVNFX01JTl9QV1IgICAgMHg4MDAwMDAwMEwKIAotLy9CeXRlIGFsaWduZWQgZGVmaW50aW9uIGZvciBCSU9TIHVzYWdlCisvL0J5dGUgYWxpZ25lZCBkZWZpbml0aW9uIGZvciBCSU9TIHVzYWdlCiAjZGVmaW5lIEFUT01fUzNfQ1JUMV9BQ1RJVkViMCAgICAgICAgICAgMHgwMQogI2RlZmluZSBBVE9NX1MzX0xDRDFfQUNUSVZFYjAgICAgICAgICAgIDB4MDIKICNkZWZpbmUgQVRPTV9TM19UVjFfQUNUSVZFYjAgICAgICAgICAgICAweDA0CkBAIC00NzA3LDcgKzQ3MDcsNyBAQAogI2RlZmluZSBBVE9NX1M0X0xDRDFfUkVGUkVTSF9NQVNLICAgICAgIDB4MDAwMEZGMDBMCiAjZGVmaW5lIEFUT01fUzRfTENEMV9SRUZSRVNIX1NISUZUICAgICAgOAogCi0vL0J5dGUgYWxpZ25lZCBkZWZpbnRpb24gZm9yIEJJT1MgdXNhZ2UKKy8vQnl0ZSBhbGlnbmVkIGRlZmluaXRpb24gZm9yIEJJT1MgdXNhZ2UKICNkZWZpbmUgQVRPTV9TNF9MQ0QxX1BBTkVMX0lEX01BU0tiMAkgIDB4MEZGCiAjZGVmaW5lIEFUT01fUzRfTENEMV9SRUZSRVNIX01BU0tiMQkJICBBVE9NX1M0X0xDRDFfUEFORUxfSURfTUFTS2IwCiAjZGVmaW5lIEFUT01fUzRfVlJBTV9JTkZPX01BU0tiMiAgICAgICAgQVRPTV9TNF9MQ0QxX1BBTkVMX0lEX01BU0tiMApAQCAtNDc4Niw3ICs0Nzg2LDcgQEAKICNkZWZpbmUgQVRPTV9TNl9WUklfQlJJR0hUTkVTU19DSEFOR0UgICAgICAgMHg0MDAwMDAwMEwKICNkZWZpbmUgQVRPTV9TNl9DT05GSUdfRElTUExBWV9DSEFOR0VfTUFTSyAgMHg4MDAwMDAwMEwKIAotLy9CeXRlIGFsaWduZWQgZGVmaW50aW9uIGZvciBCSU9TIHVzYWdlCisvL0J5dGUgYWxpZ25lZCBkZWZpbml0aW9uIGZvciBCSU9TIHVzYWdlCiAjZGVmaW5lIEFUT01fUzZfREVWSUNFX0NIQU5HRWIwICAgICAgICAgMHgwMQogI2RlZmluZSBBVE9NX1M2X1NDQUxFUl9DSEFOR0ViMCAgICAgICAgIDB4MDIKICNkZWZpbmUgQVRPTV9TNl9MSURfQ0hBTkdFYjAgICAgICAgICAgICAweDA0CkBAIC01MDI3LDcgKzUwMjcsNyBAQAogCiB0eXBlZGVmIHN0cnVjdCBfTUVNT1JZX0NMRUFOX1VQX1BBUkFNRVRFUlMKIHsKLSAgVVNIT1JUICB1c01lbW9yeVN0YXJ0OyAgICAgICAgICAgICAgICAvL2luIDhLYiBib3VuZHJ5LCBvZmZzZXQgZnJvbSBtZW1vcnkgYmFzZSBhZGRyZXNzCisgIFVTSE9SVCAgdXNNZW1vcnlTdGFydDsgICAgICAgICAgICAgICAgLy9pbiA4S2IgYm91bmRhcnksIG9mZnNldCBmcm9tIG1lbW9yeSBiYXNlIGFkZHJlc3MKICAgVVNIT1JUICB1c01lbW9yeVNpemU7ICAgICAgICAgICAgICAgICAvLzhLYiBibG9ja3MgYWxpZ25lZAogfU1FTU9SWV9DTEVBTl9VUF9QQVJBTUVURVJTOwogI2RlZmluZSBNRU1PUllfQ0xFQU5fVVBfUFNfQUxMT0NBVElPTiBNRU1PUllfQ0xFQU5fVVBfUEFSQU1FVEVSUwpAQCAtNjg1NSw3ICs2ODU1LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogCi0vLyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGZvciBjb21wYXRpYmxpdHkgaXNzdWUgaW4gZGlmZmVyZW50IFNXIGNvbXBvbmVudHMuIAorLy8gRm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBmb3IgY29tcGF0aWJpbGl0eSBpc3N1ZSBpbiBkaWZmZXJlbnQgU1cgY29tcG9uZW50cy4gCiAjZGVmaW5lIEFUT01fTUFTVEVSX0RBVEFfVEFCTEVfUkVWSVNJT04gICAweDAxCiAjZGVmaW5lIE9iamVjdF9JbmZvCQkJCQkJCQkJCQkJT2JqZWN0X0hlYWRlcgkJCQogI2RlZmluZQlBZGp1c3RBUkJfU0VRCQkJCQkJCQkJCQlNQ19Jbml0UGFyYW1ldGVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3JlZW5fY3MuYwppbmRleCBlZGRlOTBiLi4yM2QzNjQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVuX2NzLmMKQEAgLTQ0Miw3ICs0NDIsNyBAQAogCX0KIAlpYiA9IHAtPmliLT5wdHI7CiAJc3dpdGNoIChyZWcpIHsKLQkvKiBmb3JjZSBmb2xsb3dpbmcgcmVnIHRvIDAgaW4gYW4gYXR0ZW1wIHRvIGRpc2FibGUgb3V0IGJ1ZmZlcgorCS8qIGZvcmNlIGZvbGxvd2luZyByZWcgdG8gMCBpbiBhbiBhdHRlbXB0IHRvIGRpc2FibGUgb3V0IGJ1ZmZlcgogCSAqIHdoaWNoIHdpbGwgbmVlZCB1cyB0byBiZXR0ZXIgdW5kZXJzdGFuZCBob3cgaXQgd29ya3MgdG8gcGVyZm9ybQogCSAqIHNlY3VyaXR5IGNoZWNrIG9uIGl0IChKZXJvbWUpCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IzMDAuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjMwMC5jCmluZGV4IDg3MTM3MzEuLjU1YTdmMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjMwMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjMwMC5jCkBAIC00MzcsNyArNDM3LDcgQEAKIAlzdGF0dXMgPSBSUkVHMzIoUl8wMDBFNDBfUkJCTV9TVEFUVVMpOwogCWRldl9pbmZvKHJkZXYtPmRldiwgIiglczolZCkgUkJCTV9TVEFUVVM9MHglMDhYXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sIHN0YXR1cyk7CiAJLyogcmVzZXR0aW5nIHRoZSBDUCBzZWVtcyB0byBiZSBwcm9ibGVtYXRpYyBzb21ldGltZXMgaXQgZW5kIHVwCi0JICogaGFyZCBsb2NraW5nIHRoZSBjb21wdXRlciwgYnV0IGl0J3MgbmVjZXNzYXJ5IGZvciBzdWNjZXNzZnVsbAorCSAqIGhhcmQgbG9ja2luZyB0aGUgY29tcHV0ZXIsIGJ1dCBpdCdzIG5lY2Vzc2FyeSBmb3Igc3VjY2Vzc2Z1bAogCSAqIHJlc2V0IG1vcmUgdGVzdCAmIHBsYXlpbmcgaXMgbmVlZGVkIG9uIFIzWFgvUjRYWCB0byBmaW5kIGEKIAkgKiByZWxpYWJsZSAoaWYgYW55IHNvbHV0aW9uKQogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwX3JlZy5oCmluZGV4IGYwYmNlMzkuLjAwYzBkMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjMwMF9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IzMDBfcmVnLmgKQEAgLTYwOCw3ICs2MDgsNyBAQAogICogTXkgZ3Vlc3MgaXMgdGhhdCB0aGVyZSBhcmUgdHdvIGJpdHMgZm9yIGVhY2ggemJpYXMgcHJpbWl0aXZlCiAgKiAoRklMTCwgTElORSwgUE9JTlQpLgogICogIE9uZSB0byBlbmFibGUgZGVwdGggdGVzdCBhbmQgb25lIGZvciBkZXB0aCB3cml0ZS4KLSAqIFlldCB0aGlzIGRvZXNudCBleHBsYWluIHdoeSBkZXB0aCB3cml0ZXMgd29yayAuLi4KKyAqIFlldCB0aGlzIGRvZXNuJ3QgZXhwbGFpbiB3aHkgZGVwdGggd3JpdGVzIHdvcmsgLi4uCiAgKi8KICNkZWZpbmUgUjMwMF9SRV9PQ0NMVVNJT05fQ05UTAkJICAgIDB4NDJCNAogIwlkZWZpbmUgUjMwMF9PQ0NMVVNJT05fT04JCSgxPDwxKQpAQCAtODE3LDcgKzgxNyw3IEBACiAjCWRlZmluZSBSMzAwX1RYX01JTl9GSUxURVJfTElORUFSX01JUF9ORUFSRVNUICAgICAgICAoNiAgPDwgIDExKQogIwlkZWZpbmUgUjMwMF9UWF9NSU5fRklMVEVSX0xJTkVBUl9NSVBfTElORUFSICAgICAgICAgKDEwIDw8ICAxMSkKIAotLyogTk9URTogTkVBUkVTVCBkb2VzbnQgc2VlbSB0byBleGlzdC4KKy8qIE5PVEU6IE5FQVJFU1QgZG9lc24ndCBzZWVtIHRvIGV4aXN0LgogICogSW0gbm90IHNldGluZyBNQUdfRklMVEVSX01BU0sgYW5kICgzIDw8IDExKSBvbiBmb3IgYWxsCiAgKiBhbmlzb3Ryb3B5IG1vZGVzIGJlY2F1c2UgdGhhdCB3b3VsZCB2b2lkIHNlbGVjdGVkIG1hZyBmaWx0ZXIKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfY3MuYwppbmRleCAzMzI0NjIwLi5mZDE4YmU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfY3MuYwpAQCAtOTIxLDcgKzkyMSw3IEBACiAJCXJldHVybiAwOwogCWliID0gcC0+aWItPnB0cjsKIAlzd2l0Y2ggKHJlZykgewotCS8qIGZvcmNlIGZvbGxvd2luZyByZWcgdG8gMCBpbiBhbiBhdHRlbXAgdG8gZGlzYWJsZSBvdXQgYnVmZmVyCisJLyogZm9yY2UgZm9sbG93aW5nIHJlZyB0byAwIGluIGFuIGF0dGVtcHQgdG8gZGlzYWJsZSBvdXQgYnVmZmVyCiAJICogd2hpY2ggd2lsbCBuZWVkIHVzIHRvIGJldHRlciB1bmRlcnN0YW5kIGhvdyBpdCB3b3JrcyB0byBwZXJmb3JtCiAJICogc2VjdXJpdHkgY2hlY2sgb24gaXQgKEplcm9tZSkKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfaGRtaS5jCmluZGV4IDUwZGI2ZDYuLmY1YWM3ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2hkbWkuYwpAQCAtMzM0LDcgKzMzNCw3IEBACiAJcjYwMF9oZG1pX3ZpZGVvaW5mb2ZyYW1lKGVuY29kZXIsIFJHQiwgMCwgMCwgMCwgMCwKIAkJMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7CiAKLQkvKiBpdCdzIHVua25vd24gd2hhdCB0aGVzZSBiaXRzIGRvIGV4Y2F0bHksIGJ1dCBpdCdzIGluZGVlZCBxdWl0ZSB1c2VmdWxsIGZvciBkZWJ1Z2dpbmcgKi8KKwkvKiBpdCdzIHVua25vd24gd2hhdCB0aGVzZSBiaXRzIGRvIGV4Y2F0bHksIGJ1dCBpdCdzIGluZGVlZCBxdWl0ZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyAqLwogCVdSRUczMihvZmZzZXQrUjYwMF9IRE1JX0FVRElPX0RFQlVHXzAsIDB4MDBGRkZGRkYpOwogCVdSRUczMihvZmZzZXQrUjYwMF9IRE1JX0FVRElPX0RFQlVHXzEsIDB4MDA3RkZGRkYpOwogCVdSRUczMihvZmZzZXQrUjYwMF9IRE1JX0FVRElPX0RFQlVHXzIsIDB4MDAwMDAwMDEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKaW5kZXggY2ZlM2FmMS4uOTNmNTM2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCkBAIC02NzksMTEgKzY3OSwxMSBAQAogICogQHNpZGVwb3J0X2JhbmR3aWR0aDogc2lkZXBvcnQgYmFuZHdpZHRoIHRoZSBncHUgaGFzIChNQnl0ZS9zKSAoSUdQKQogICogQGh0X2JhbmR3aWR0aDogICAgICAgaHQgYmFuZHdpZHRoIHRoZSBncHUgaGFzIChNQnl0ZS9zKSAoSUdQKQogICogQGNvcmVfYmFuZHdpZHRoOiAgICAgY29yZSBHUFUgYmFuZHdpZHRoIHRoZSBncHUgaGFzIChNQnl0ZS9zKSAoSUdQKQotICogQHNjbGs6ICAgICAgICAgIAlHUFUgY2xvY2sgTWh6IChjb3JlIGJhbmR3aXRoIGRlcGVuZHMgb2YgdGhpcyBjbG9jaykKKyAqIEBzY2xrOiAgICAgICAgICAJR1BVIGNsb2NrIE1oeiAoY29yZSBiYW5kd2lkdGggZGVwZW5kcyBvZiB0aGlzIGNsb2NrKQogICogQG5lZWRlZF9iYW5kd2lkdGg6ICAgY3VycmVudCBiYW5kd2lkdGggbmVlZHMKICAqCiAgKiBJdCBrZWVwcyB0cmFjayBvZiB2YXJpb3VzIGRhdGEgbmVlZGVkIHRvIHRha2UgcG93ZXJtYW5hZ2VtZW50IGRlY2lzaW9uLgotICogQmFuZHdpdGggbmVlZCBpcyB1c2VkIHRvIGRldGVybWluZSBtaW5pbXVuIGNsb2NrIG9mIHRoZSBHUFUgYW5kIG1lbW9yeS4KKyAqIEJhbmR3aWR0aCBuZWVkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIG1pbmltdW4gY2xvY2sgb2YgdGhlIEdQVSBhbmQgbWVtb3J5LgogICogRXF1YXRpb24gYmV0d2VlbiBncHUvbWVtb3J5IGNsb2NrIGFuZCBhdmFpbGFibGUgYmFuZHdpZHRoIGlzIGh3IGRlcGVuZGVudAogICogKHR5cGUgb2YgbWVtb3J5LCBidXMgc2l6ZSwgZWZmaWNpZW5jeSwgLi4uKQogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3AuYwppbmRleCAzZDU5OWUzLi43NTg2Nzc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2NwLmMKQEAgLTI0NCw3ICsyNDQsNyBAQAogCXUzMiBhZ3BfYmFzZV9sbyA9IGFncF9iYXNlICYgMHhmZmZmZmZmZjsKIAl1MzIgcjZ4eF9hZ3BfYmFzZSA9IChhZ3BfYmFzZSA+PiAyMikgJiAweDNmZmZmOwogCi0JLyogUjZ4eC9SN3h4IG11c3QgYmUgYWxpZ25lZCB0byBhIDRNQiBib3VuZHJ5ICovCisJLyogUjZ4eC9SN3h4IG11c3QgYmUgYWxpZ25lZCB0byBhIDRNQiBib3VuZGFyeSAqLwogCWlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA+PSBDSElQX1JWNzcwKQogCQlSQURFT05fV1JJVEUoUjcwMF9NQ19WTV9BR1BfQkFTRSwgcjZ4eF9hZ3BfYmFzZSk7CiAJZWxzZSBpZiAoKGRldl9wcml2LT5mbGFncyAmIFJBREVPTl9GQU1JTFlfTUFTSykgPj0gQ0hJUF9SNjAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3Vyc29yLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jdXJzb3IuYwppbmRleCAwMTdhYzU0Li5iZGYyZmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jdXJzb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jdXJzb3IuYwpAQCAtMjI2LDcgKzIyNiw3IEBACiAJCXkgKz0gY3J0Yy0+eTsKIAkJRFJNX0RFQlVHKCJ4ICVkIHkgJWQgYy0+eCAlZCBjLT55ICVkXG4iLCB4LCB5LCBjcnRjLT54LCBjcnRjLT55KTsKIAotCQkvKiBhdml2byBjdXJzb3IgaW1hZ2UgY2FuJ3QgZW5kIG9uIDEyOCBwaXhlbCBib3VuZHJ5IG9yCisJCS8qIGF2aXZvIGN1cnNvciBpbWFnZSBjYW4ndCBlbmQgb24gMTI4IHBpeGVsIGJvdW5kYXJ5IG9yCiAJCSAqIGdvIHBhc3QgdGhlIGVuZCBvZiB0aGUgZnJhbWUgaWYgYm90aCBjcnRjcyBhcmUgZW5hYmxlZAogCQkgKi8KIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjX3AsICZjcnRjLT5kZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYwppbmRleCBmMDIwOWJlLi44OTAyMTdlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGV2aWNlLmMKQEAgLTI2Miw3ICsyNjIsNyBAQAogICogTm90ZTogR1RUIHN0YXJ0LCBlbmQsIHNpemUgc2hvdWxkIGJlIGluaXRpYWxpemVkIGJlZm9yZSBjYWxsaW5nIHRoaXMKICAqIGZ1bmN0aW9uIG9uIEFHUCBwbGF0Zm9ybS4KICAqCi0gKiBOb3RlOiBXZSBkb24ndCBleHBsaWN0bHkgZW5mb3JjZSBWUkFNIHN0YXJ0IHRvIGJlIGFsaWduZWQgb24gVlJBTSBzaXplLAorICogTm90ZTogV2UgZG9uJ3QgZXhwbGljaXRseSBlbmZvcmNlIFZSQU0gc3RhcnQgdG8gYmUgYWxpZ25lZCBvbiBWUkFNIHNpemUsCiAgKiB0aGlzIHNob3VsZG4ndCBiZSBhIHByb2JsZW0gYXMgd2UgYXJlIHVzaW5nIHRoZSBQQ0kgYXBlcnR1cmUgYXMgYSByZWZlcmVuY2UuCiAgKiBPdGhlcndpc2UgdGhpcyB3b3VsZCBiZSBuZWVkZWQgZm9yIHJ2MjgwLCBhbGwgcjN4eCwgYW5kIGFsbCByNHh4LCBidXQKICAqIG5vdCBJR1AuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kaXNwbGF5LmMKaW5kZXggNGJlNTg3OS4uYmRiYWI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYwpAQCAtMTQ5Miw3ICsxNDkyLDcgQEAKICAqCiAgKiBccmV0dXJuIEZsYWdzLCBvcidlZCB0b2dldGhlciBhcyBmb2xsb3dzOgogICoKLSAqIERSTV9TQ0FOT1VUUE9TX1ZBTElEID0gUXVlcnkgc3VjY2Vzc2Z1bGwuCisgKiBEUk1fU0NBTk9VVFBPU19WQUxJRCA9IFF1ZXJ5IHN1Y2Nlc3NmdWwuCiAgKiBEUk1fU0NBTk9VVFBPU19JTlZCTCA9IEluc2lkZSB2YmxhbmsuCiAgKiBEUk1fU0NBTk9VVFBPU19BQ0NVUkFURSA9IFJldHVybmVkIHBvc2l0aW9uIGlzIGFjY3VyYXRlLiBBIGxhY2sgb2YKICAqIHRoaXMgZmxhZyBtZWFucyB0aGF0IHJldHVybmVkIHBvc2l0aW9uIG1heSBiZSBvZmZzZXQgYnkgYSBjb25zdGFudCBidXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmgKaW5kZXggNWNiYTQ2Yi4uYTFiNTljYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmgKQEAgLTI3MSw3ICsyNzEsNyBAQAogCiAJaW50IGhhdmVfel9vZmZzZXQ7CiAKLQkvKiBzdGFydGluZyBmcm9tIGhlcmUgb24sIGRhdGEgaXMgcHJlc2VydmVkIGFjY3Jvc3MgYW4gb3BlbiAqLworCS8qIHN0YXJ0aW5nIGZyb20gaGVyZSBvbiwgZGF0YSBpcyBwcmVzZXJ2ZWQgYWNyb3NzIGFuIG9wZW4gKi8KIAl1aW50MzJfdCBmbGFnczsJCS8qIHNlZSByYWRlb25fY2hpcF9mbGFncyAqLwogCXJlc291cmNlX3NpemVfdCBmYl9hcGVyX29mZnNldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fb2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuaAppbmRleCA3ZjhlNzc4Li5lZGU2YzEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuaApAQCAtODcsNyArODcsNyBAQAogICogUmV0dXJucyBjdXJyZW50IEdQVSBvZmZzZXQgb2YgdGhlIG9iamVjdC4KICAqCiAgKiBOb3RlOiBvYmplY3Qgc2hvdWxkIGVpdGhlciBiZSBwaW5uZWQgb3IgcmVzZXJ2ZWQgd2hlbiBjYWxsaW5nIHRoaXMKLSAqIGZ1bmN0aW9uLCBpdCBtaWdodCBiZSB1c2VmdWxsIHRvIGFkZCBjaGVjayBmb3IgdGhpcyBmb3IgZGVidWdnaW5nLgorICogZnVuY3Rpb24sIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBhZGQgY2hlY2sgZm9yIHRoaXMgZm9yIGRlYnVnZ2luZy4KICAqLwogc3RhdGljIGlubGluZSB1NjQgcmFkZW9uX2JvX2dwdV9vZmZzZXQoc3RydWN0IHJhZGVvbl9ibyAqYm8pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc3RhdGUuYwppbmRleCA0YWU1YTNkLi45MmU3ZWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zdGF0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3N0YXRlLmMKQEAgLTk4MCw3ICs5ODAsNyBAQAogCX0KIAogCS8qIGh5cGVyIHogY2xlYXIgKi8KLQkvKiBubyBkb2NzIGF2YWlsYWJsZSwgYmFzZWQgb24gcmV2ZXJzZSBlbmdlbmVlcmluZyBieSBTdGVwaGFuZSBNYXJjaGVzaW4gKi8KKwkvKiBubyBkb2NzIGF2YWlsYWJsZSwgYmFzZWQgb24gcmV2ZXJzZSBlbmdpbmVlcmluZyBieSBTdGVwaGFuZSBNYXJjaGVzaW4gKi8KIAlpZiAoKGZsYWdzICYgKFJBREVPTl9ERVBUSCB8IFJBREVPTl9TVEVOQ0lMKSkKIAkgICAgJiYgKGZsYWdzICYgUkFERU9OX0NMRUFSX0ZBU1RaKSkgewogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCmluZGV4IGNjZWViNDIuLmRmZTMyZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCkBAIC0yNDUsNyArMjQ1LDcgQEAKIAkJLyogVE9ETyBoYW5kbGUgbm9uZSBwYWdlIGFsaWduZWQgb2Zmc2V0cyAqLwogCQkvKiBUT0RPIGhhbmRsZSBwYXJ0aWFsIHVwbG9hZHMgYW5kIHBpdGNoICE9IDI1NiAqLwogCQkvKiBUT0RPIGhhbmRsZSBtb3JlIHRoZW4gb25lIGNvcHkgKHNpemUgIT0gNjQpICovCi0JCURSTV9FUlJPUigibGF6eSBwcm9ncmFtZXIsIGNhbnQgaGFuZGxlIHdpZXJkIHN0dWZmXG4iKTsKKwkJRFJNX0VSUk9SKCJsYXp5IHByb2dyYW1tZXIsIGNhbid0IGhhbmRsZSB3ZWlyZCBzdHVmZlxuIik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L3ZnYS92Z2FhcmIuYyBiL2RyaXZlcnMvZ3B1L3ZnYS92Z2FhcmIuYwppbmRleCBhY2UyYjE2Li5iZThkNGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMKKysrIGIvZHJpdmVycy9ncHUvdmdhL3ZnYWFyYi5jCkBAIC0xNTEsNyArMTUxLDcgQEAKIHN0YXRpYyB2b2lkIHZnYV9jaGVja19maXJzdF91c2Uodm9pZCkKIHsKIAkvKiB3ZSBzaG91bGQgaW5mb3JtIGFsbCBHUFVzIGluIHRoZSBzeXN0ZW0gdGhhdAotCSAqIFZHQSBhcmIgaGFzIG9jY3VyZWQgYW5kIHRvIHRyeSBhbmQgZGlzYWJsZSByZXNvdXJjZXMKKwkgKiBWR0EgYXJiIGhhcyBvY2N1cnJlZCBhbmQgdG8gdHJ5IGFuZCBkaXNhYmxlIHJlc291cmNlcwogCSAqIGlmIHRoZXkgY2FuICovCiAJaWYgKCF2Z2FfYXJiaXRlcl91c2VkKSB7CiAJCXZnYV9hcmJpdGVyX3VzZWQgPSB0cnVlOwpAQCAtNzc0LDcgKzc3NCw3IEBACiAJICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnZnYV9sb2NrLCBmbGFncyk7CiAKLQkvKiBJZiB3ZSBhcmUgdGFyZ2V0dGluZyB0aGUgZGVmYXVsdCwgdXNlIGl0ICovCisJLyogSWYgd2UgYXJlIHRhcmdldGluZyB0aGUgZGVmYXVsdCwgdXNlIGl0ICovCiAJcGRldiA9IHByaXYtPnRhcmdldDsKIAlpZiAocGRldiA9PSBOVUxMIHx8IHBkZXYgPT0gUENJX0lOVkFMSURfQ0FSRCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2Z2FfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYyBiL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMKaW5kZXggZTk2ODc3Ni4uNDUzZTdlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWNvcmUuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtY29yZS5jCkBAIC0zMDYsNyArMzA2LDcgQEAKIAljYXNlIEhJRF9HTE9CQUxfSVRFTV9UQUdfUFVTSDoKIAogCQlpZiAocGFyc2VyLT5nbG9iYWxfc3RhY2tfcHRyID09IEhJRF9HTE9CQUxfU1RBQ0tfU0laRSkgewotCQkJZGJnX2hpZCgiZ2xvYmFsIGVudmlyb21lbnQgc3RhY2sgb3ZlcmZsb3dcbiIpOworCQkJZGJnX2hpZCgiZ2xvYmFsIGVudmlyb25tZW50IHN0YWNrIG92ZXJmbG93XG4iKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCkBAIC0zMTcsNyArMzE3LDcgQEAKIAljYXNlIEhJRF9HTE9CQUxfSVRFTV9UQUdfUE9QOgogCiAJCWlmICghcGFyc2VyLT5nbG9iYWxfc3RhY2tfcHRyKSB7Ci0JCQlkYmdfaGlkKCJnbG9iYWwgZW52aXJvbWVudCBzdGFjayB1bmRlcmZsb3dcbiIpOworCQkJZGJnX2hpZCgiZ2xvYmFsIGVudmlyb25tZW50IHN0YWNrIHVuZGVyZmxvd1xuIik7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLWRlYnVnLmMgYi9kcml2ZXJzL2hpZC9oaWQtZGVidWcuYwppbmRleCA1NTUzODJmLi5iYWU0ODc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWQtZGVidWcuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtZGVidWcuYwpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgeyAweDg1LCAweDgzLCAiRGVzaWduQ2FwYWNpdHkiIH0sCiAgICAgeyAweDg1LCAweDg1LCAiTWFudWZhY3R1cmVyRGF0ZSIgfSwKICAgICB7IDB4ODUsIDB4ODksICJpRGV2aWNlQ2hlbWlzdHJ5IiB9LAotICAgIHsgMHg4NSwgMHg4YiwgIlJlY2hhcmdhYmxlIiB9LAorICAgIHsgMHg4NSwgMHg4YiwgIlJlY2hhcmdlYWJsZSIgfSwKICAgICB7IDB4ODUsIDB4OGYsICJpT0VNSW5mb3JtYXRpb24iIH0sCiAgICAgeyAweDg1LCAweDhkLCAiQ2FwYWNpdHlHcmFudWxhcml0eTEiIH0sCiAgICAgeyAweDg1LCAweGQwLCAiQUNQcmVzZW50IiB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvaGlkLW1hZ2ljbW91c2UuYyBiL2RyaXZlcnMvaGlkL2hpZC1tYWdpY21vdXNlLmMKaW5kZXggMzE4Y2M0MC4uN2E2MTM3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLW1hZ2ljbW91c2UuYworKysgYi9kcml2ZXJzL2hpZC9oaWQtbWFnaWNtb3VzZS5jCkBAIC03Niw3ICs3Niw3IEBACiAgKiBUaGlzIGlzIHRydWUgd2hlbiBzaW5nbGVfdG91Y2hfaWQgaXMgZXF1YWwgdG8gTk9fVE9VQ0hFUy4gSWYgbXVsdGlwbGUgdG91Y2hlcwogICogYXJlIGRvd24gYW5kIHRoZSB0b3VjaCBwcm92aWRpbmcgZm9yIHNpbmdsZSB0b3VjaCBlbXVsYXRpb24gaXMgbGlmdGVkLAogICogc2luZ2xlX3RvdWNoX2lkIGlzIGVxdWFsIHRvIFNJTkdMRV9UT1VDSF9VUC4gV2hpbGUgc2luZ2xlIHRvdWNoIGVtdWxhdGlvbiBpcwotICogb2NjdXJpbmcsIHNpbmdsZV90b3VjaF9pZCBjb3JyZXNwb25kcyB3aXRoIHRoZSB0cmFja2luZyBpZCBvZiB0aGUgdG91Y2ggdXNlZC4KKyAqIG9jY3VycmluZywgc2luZ2xlX3RvdWNoX2lkIGNvcnJlc3BvbmRzIHdpdGggdGhlIHRyYWNraW5nIGlkIG9mIHRoZSB0b3VjaCB1c2VkLgogICovCiAjZGVmaW5lIE5PX1RPVUNIRVMgLTEKICNkZWZpbmUgU0lOR0xFX1RPVUNIX1VQIC0yCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtcGljb2xjZC5jIGIvZHJpdmVycy9oaWQvaGlkLXBpY29sY2QuYwppbmRleCA2NTdkYTVhLi5iMmY1NmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWQtcGljb2xjZC5jCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1waWNvbGNkLmMKQEAgLTE4MDYsMTMgKzE4MDYsMTMgQEAKIC8qCiAgKiBOb3RlczoKICAqIC0gY29uY3VycmVudCB3cml0aW5nIGlzIHByZXZlbnRlZCBieSBtdXRleCBhbmQgYWxsIHdyaXRlcyBtdXN0IGJlCi0gKiAgIG4qNjQgYnl0ZXMgYW5kIDY0LWJ5dGUgYWxpZ25lZCwgZWFjaCB3cml0ZSBiZWluZyBwcmVjZWVkZWQgYnkgYW4KKyAqICAgbio2NCBieXRlcyBhbmQgNjQtYnl0ZSBhbGlnbmVkLCBlYWNoIHdyaXRlIGJlaW5nIHByZWNlZGVkIGJ5IGFuCiAgKiAgIEVSQVNFIHdoaWNoIGVyYXNlcyBhIDY0Ynl0ZSBibG9jay4KICAqICAgSWYgbGVzcyB0aGFuIHJlcXVlc3RlZCB3YXMgd3JpdHRlbiBvciBhbiBlcnJvciBpcyByZXR1cm5lZCBmb3IgYW4KICAqICAgb3RoZXJ3aXNlIGNvcnJlY3Qgd3JpdGUgcmVxdWVzdCB0aGUgbmV4dCA2NC1ieXRlIGJsb2NrIHdoaWNoIHNob3VsZAogICogICBoYXZlIGJlZW4gd3JpdHRlbiBpcyBpbiB1bmRlZmluZWQgc3RhdGUgKG1vc3RseTogb3JpZ2luYWwsIGVyYXNlZCwKICAqICAgKGhhbGYtKXdyaXR0ZW4gd2l0aCB3cml0ZSBlcnJvcikKLSAqIC0gcmVhZGluZyBjYW4gaGFwcGVuZCB3aXRob3V0IHNwZWNpYWwgcmVzdHJpY3Rpb24KKyAqIC0gcmVhZGluZyBjYW4gaGFwcGVuIHdpdGhvdXQgc3BlY2lhbCByZXN0cmljdGlvbgogICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwaWNvbGNkX2RlYnVnX2ZsYXNoX2ZvcHMgPSB7CiAJLm93bmVyICAgID0gVEhJU19NT0RVTEUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtcm9jY2F0LWtvbmUuaCBiL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQta29uZS5oCmluZGV4IDY0YWJiNWIuLjQxMDlhMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQta29uZS5oCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQta29uZS5oCkBAIC0xNjYsNyArMTY2LDcgQEAKIAkvKiBvc2QgZXZlbnRzIGFyZSB0aG91Z2h0IHRvIGJlIGRpc3BsYXkgb24gc2NyZWVuICovCiAJa29uZV9tb3VzZV9ldmVudF9vc2RfZHBpID0gMHhhMCwKIAlrb25lX21vdXNlX2V2ZW50X29zZF9wcm9maWxlID0gMHhiMCwKLQkvKiBUT0RPIGNsYXJpZnkgbWVhbmluZyBhbmQgb2NjdXJlbmNlIG9mIGtvbmVfbW91c2VfZXZlbnRfY2FsaWJyYXRpb24gKi8KKwkvKiBUT0RPIGNsYXJpZnkgbWVhbmluZyBhbmQgb2NjdXJyZW5jZSBvZiBrb25lX21vdXNlX2V2ZW50X2NhbGlicmF0aW9uICovCiAJa29uZV9tb3VzZV9ldmVudF9jYWxpYnJhdGlvbiA9IDB4YzAsCiAJa29uZV9tb3VzZV9ldmVudF9jYWxsX292ZXJsb25nX21hY3JvID0gMHhlMCwKIAkvKiBzd2l0Y2ggZXZlbnRzIG5vdGlmeSBpZiB1c2VyIGNoYW5nZWQgdmFsdWVzIHdpdGggbW91c2VidXR0b24gY2xpY2sgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1LmMgYi9kcml2ZXJzL2h3bW9uL2FiaXR1Z3VydS5jCmluZGV4IDBlMDVhYTEuLmU3ZDRjNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1LmMKKysrIGIvZHJpdmVycy9od21vbi9hYml0dWd1cnUuYwpAQCAtMTQyMiw3ICsxNDIyLDcgQEAKIAkgICBhdCBEQVRBIGFuZCAweEFDLCB3aGVuIHRoaXMgZHJpdmVyIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIG9uY2UKIAkgICBEQVRBIHdpbGwgaG9sZCAweDA4LiBGb3IgbW9zdCB1R3VydSdzIENNRCB3aWxsIGhvbGQgMHhBQyBpbiBlaXRoZXIKIAkgICBzY2VuYXJpbyBidXQgc29tZSB3aWxsIGhvbGQgMHgwMC4KLQkgICBTb21lIHVHdXJ1J3MgaW5pdGFsbHkgaG9sZCAweDA5IGF0IERBVEEgYW5kIHdpbGwgb25seSBob2xkIDB4MDgKKwkgICBTb21lIHVHdXJ1J3MgaW5pdGlhbGx5IGhvbGQgMHgwOSBhdCBEQVRBIGFuZCB3aWxsIG9ubHkgaG9sZCAweDA4CiAJICAgYWZ0ZXIgcmVhZGluZyBDTUQgZmlyc3QsIHNvIENNRCBtdXN0IGJlIHJlYWQgZmlyc3QhICovCiAJdTggY21kX3ZhbCA9IGluYl9wKEFCSVRfVUdVUlVfQkFTRSArIEFCSVRfVUdVUlVfQ01EKTsKIAl1OCBkYXRhX3ZhbCA9IGluYl9wKEFCSVRfVUdVUlVfQkFTRSArIEFCSVRfVUdVUlVfREFUQSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FiaXR1Z3VydTMuYyBiL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1My5jCmluZGV4IDAzNGNlYmYuLmU4OWQ1NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1My5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1My5jCkBAIC0xNTEsNyArMTUxLDcgQEAKIAkvKiBQb2ludGVyIHRvIHRoZSBzZW5zb3JzIGluZm8gZm9yIHRoZSBkZXRlY3RlZCBtb3RoZXJib2FyZCAqLwogCWNvbnN0IHN0cnVjdCBhYml0dWd1cnUzX3NlbnNvcl9pbmZvICpzZW5zb3JzOwogCi0JLyogVGhlIGFiaXR1Z3VydTMgc3VwcG9ydHMgdXB0byA0OCBzZW5zb3JzLCBhbmQgdGh1cyBoYXMgcmVnaXN0ZXJzCisJLyogVGhlIGFiaXR1Z3VydTMgc3VwcG9ydHMgdXAgdG8gNDggc2Vuc29ycywgYW5kIHRodXMgaGFzIHJlZ2lzdGVycwogCSAgIHNldHMgZm9yIDQ4IHNlbnNvcnMsIGZvciBjb252aWVuZW5jZSByZWFzb25zIC8gc2ltcGxpY2l0eSBvZiB0aGUKIAkgICBjb2RlIHdlIGFsd2F5cyByZWFkIGFuZCBzdG9yZSBhbGwgcmVnaXN0ZXJzIGZvciBhbGwgNDggc2Vuc29ycyAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jCmluZGV4IGJlMGZkZDUuLjA1MzE4NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jCkBAIC0xNzUsNyArMTc1LDcgQEAKICAqIHRoZXNlIG1hY3JvcyBhcmUgY2FsbGVkOiBhcmd1bWVudHMgbWF5IGJlIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KICAqLwogCi0vKiBJTiBhcmUgc2NhbGVkIGFjb3JkaW5nIHRvIGJ1aWx0LWluIHJlc2lzdG9ycy4gIFRoZXNlIGFyZSB0aGUKKy8qIElOIGFyZSBzY2FsZWQgYWNjb3JkaW5nIHRvIGJ1aWx0LWluIHJlc2lzdG9ycy4gIFRoZXNlIGFyZSB0aGUKICAqICAgdm9sdGFnZXMgY29ycmVzcG9uZGluZyB0byAzLzQgb2YgZnVsbCBzY2FsZSAoMTkyIG9yIDB4YzApCiAgKiAgIE5PVEU6IFRoZSAtMTJWIGlucHV0IG5lZWRzIGFuIGFkZGl0aW9uYWwgZmFjdG9yIHRvIGFjY291bnQKICAqICAgICAgZm9yIHRoZSBWcmVmIHB1bGx1cCByZXNpc3Rvci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21vbi9sbTg1LmMKaW5kZXggY2Y0N2U2ZS4uMjUwZDA5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgdGhlc2UgbWFjcm9zIGFyZSBjYWxsZWQ6IGFyZ3VtZW50cyBtYXkgYmUgZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNlLgogICovCiAKLS8qIElOIGFyZSBzY2FsZWQgYWNvcmRpbmcgdG8gYnVpbHQtaW4gcmVzaXN0b3JzICovCisvKiBJTiBhcmUgc2NhbGVkIGFjY29yZGluZyB0byBidWlsdC1pbiByZXNpc3RvcnMgKi8KIHN0YXRpYyBjb25zdCBpbnQgbG04NV9zY2FsaW5nW10gPSB7ICAvKiAuMDAxIFZvbHRzICovCiAJMjUwMCwgMjI1MCwgMzMwMCwgNTAwMCwgMTIwMDAsCiAJMzMwMCwgMTUwMCwgMTgwMCAvKkVNQzZEMTAwKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggODEyNzgxYy4uYzQzYjRlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTkwLmMKQEAgLTM1Niw3ICszNTYsNyBAQAogCS8qCiAJICogVGhlcmUgaXMgYSB0cmljayBoZXJlLiBXZSBoYXZlIHRvIHJlYWQgdHdvIHJlZ2lzdGVycyB0byBoYXZlIHRoZQogCSAqIHNlbnNvciB0ZW1wZXJhdHVyZSwgYnV0IHdlIGhhdmUgdG8gYmV3YXJlIGEgY29udmVyc2lvbiBjb3VsZCBvY2N1cgotCSAqIGluYmV0d2VlbiB0aGUgcmVhZGluZ3MuIFRoZSBkYXRhc2hlZXQgc2F5cyB3ZSBzaG91bGQgZWl0aGVyIHVzZQorCSAqIGJldHdlZW4gdGhlIHJlYWRpbmdzLiBUaGUgZGF0YXNoZWV0IHNheXMgd2Ugc2hvdWxkIGVpdGhlciB1c2UKIAkgKiB0aGUgb25lLXNob3QgY29udmVyc2lvbiByZWdpc3Rlciwgd2hpY2ggd2UgZG9uJ3Qgd2FudCB0byBkbwogCSAqIChkaXNhYmxlcyBoYXJkd2FyZSBtb25pdG9yaW5nKSBvciBtb25pdG9yIHRoZSBidXN5IGJpdCwgd2hpY2ggaXMKIAkgKiBpbXBvc3NpYmxlICh3ZSBjYW4ndCByZWFkIHRoZSB2YWx1ZXMgYW5kIG1vbml0b3IgdGhhdCBiaXQgYXQgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3NodDE1LmMgYi9kcml2ZXJzL2h3bW9uL3NodDE1LmMKaW5kZXggMWE5YzMyZC4uZjRlNjE3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9zaHQxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vc2h0MTUuYwpAQCAtNTIsNyArNTIsNyBAQAogI2RlZmluZSBTSFQxNV9UU1UJCTE1MAkvKiBkYXRhIHNldHVwIHRpbWUgKi8KIAogLyoqCi0gKiBzdHJ1Y3Qgc2h0MTVfdGVtcHBhaXIgLSBlbGVtZW50cyBvZiB2b2x0YWdlIGRlcGVuZGFudCB0ZW1wIGNhbGMKKyAqIHN0cnVjdCBzaHQxNV90ZW1wcGFpciAtIGVsZW1lbnRzIG9mIHZvbHRhZ2UgZGVwZW5kZW50IHRlbXAgY2FsYwogICogQHZkZDoJc3VwcGx5IHZvbHRhZ2UgaW4gbWljcm92b2x0cwogICogQGQxOgkJc2VlIGRhdGEgc2hlZXQKICAqLwpAQCAtMjUxLDcgKzI1MSw3IEBACiAJZW5hYmxlX2lycShncGlvX3RvX2lycShkYXRhLT5wZGF0YS0+Z3Bpb19kYXRhKSk7CiAJaWYgKGdwaW9fZ2V0X3ZhbHVlKGRhdGEtPnBkYXRhLT5ncGlvX2RhdGEpID09IDApIHsKIAkJZGlzYWJsZV9pcnFfbm9zeW5jKGdwaW9fdG9faXJxKGRhdGEtPnBkYXRhLT5ncGlvX2RhdGEpKTsKLQkJLyogT25seSByZWxldmFudCBpZiB0aGUgaW50ZXJydXB0IGhhc24ndCBvY2N1cmVkLiAqLworCQkvKiBPbmx5IHJlbGV2YW50IGlmIHRoZSBpbnRlcnJ1cHQgaGFzbid0IG9jY3VycmVkLiAqLwogCQlpZiAoIWF0b21pY19yZWFkKCZkYXRhLT5pbnRlcnJ1cHRfaGFuZGxlZCkpCiAJCQlzY2hlZHVsZV93b3JrKCZkYXRhLT5yZWFkX3dvcmspOwogCX0KQEAgLTQ1Miw3ICs0NTIsNyBAQAogCQkqLwogCQlhdG9taWNfc2V0KCZkYXRhLT5pbnRlcnJ1cHRfaGFuZGxlZCwgMCk7CiAJCWVuYWJsZV9pcnEoZ3Bpb190b19pcnEoZGF0YS0+cGRhdGEtPmdwaW9fZGF0YSkpOwotCQkvKiBJZiBzdGlsbCBub3Qgb2NjdXJlZCBvciBhbm90aGVyIGhhbmRsZXIgaGFzIGJlZW4gc2NoZWR1bGVkICovCisJCS8qIElmIHN0aWxsIG5vdCBvY2N1cnJlZCBvciBhbm90aGVyIGhhbmRsZXIgaGFzIGJlZW4gc2NoZWR1bGVkICovCiAJCWlmIChncGlvX2dldF92YWx1ZShkYXRhLT5wZGF0YS0+Z3Bpb19kYXRhKQogCQkgICAgfHwgYXRvbWljX3JlYWQoJmRhdGEtPmludGVycnVwdF9oYW5kbGVkKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMgYi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCmluZGV4IDkzMTg3YzNjLi41YmQxOTQ5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXAxMDIuYworKysgYi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCkBAIC0xNjYsNyArMTY2LDcgQEAKIAogCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLAogCQkJCSAgICAgSTJDX0ZVTkNfU01CVVNfV09SRF9EQVRBKSkgewotCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImFkYXB0ZXIgZG9lc250IHN1cHBvcnQgU01CdXMgd29yZCAiCisJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiYWRhcHRlciBkb2Vzbid0IHN1cHBvcnQgU01CdXMgd29yZCAiCiAJCQkidHJhbnNhY3Rpb25zXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTFkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwppbmRleCA0MDBhODhiLi4xN2NmMWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwpAQCAtNTU2LDcgKzU1Niw3IEBACiAKIC8qIE5vdGU6IHdlIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGZhbiBtaW5pbXVtIGhlcmUsIGJlY2F1c2UgaXRzIHZhbHVlIGlzCiAgICBkZXRlcm1pbmVkIGluIHBhcnQgYnkgdGhlIGZhbiBkaXZpc29yLiAgVGhpcyBmb2xsb3dzIHRoZSBwcmluY2lwbGUgb2YKLSAgIGxlYXN0IHN1cHJpc2U7IHRoZSB1c2VyIGRvZXNuJ3QgZXhwZWN0IHRoZSBmYW4gbWluaW11bSB0byBjaGFuZ2UganVzdAorICAgbGVhc3Qgc3VycHJpc2U7IHRoZSB1c2VyIGRvZXNuJ3QgZXhwZWN0IHRoZSBmYW4gbWluaW11bSB0byBjaGFuZ2UganVzdAogICAgYmVjYXVzZSB0aGUgZGl2aXNvciBjaGFuZ2VkLiAqLwogc3RhdGljIHNzaXplX3Qgc3RvcmVfZmFuX2RpdihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwppbmRleCA2Mzg0MWY4Li5mM2U3MTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAjZGVmaW5lIFRFTVAxX1RPX1JFRyh2YWwpCShTRU5TT1JTX0xJTUlUKCgodmFsKSA8IDAgPyAodmFsKSsweDEwMCoxMDAwIFwKIAkJCQkJOiAodmFsKSkgLyAxMDAwLCAwLCAweGZmKSkKICNkZWZpbmUgVEVNUDFfRlJPTV9SRUcodmFsKQkoKCh2YWwpICYgMHg4MCA/ICh2YWwpLTB4MTAwIDogKHZhbCkpICogMTAwMCkKLS8qIGZvciB0ZW1wMiBhbmQgdGVtcDMsIGJlY2F1c2UgdGhleSBuZWVkIGFkZHRpb25hbCByZXNvbHV0aW9uICovCisvKiBmb3IgdGVtcDIgYW5kIHRlbXAzLCBiZWNhdXNlIHRoZXkgbmVlZCBhZGRpdGlvbmFsIHJlc29sdXRpb24gKi8KICNkZWZpbmUgVEVNUF9BRERfRlJPTV9SRUcodmFsMSwgdmFsMikgXAogCSgoKCh2YWwxKSAmIDB4ODAgPyAodmFsMSktMHgxMDAgXAogCQk6ICh2YWwxKSkgKiAxMDAwKSArICgodmFsMiAmIDB4ODApID8gNTAwIDogMCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jIGIvZHJpdmVycy9od21vbi93ODM3OTMuYwppbmRleCBlM2JkZWRmLi44NTRmOTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKQEAgLTE5MjEsNyArMTkyMSw3IEBACiAJc3RydWN0IHc4Mzc5M19kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CiAJaW50IGksIGo7CiAJLyoKLQkgICBUaGV5IGFyZSBzb21ld2hhdCAic3RhYmxlIiByZWdpc3RlcnMsIGFuZCB0byB1cGRhdGUgdGhlbSBldmVyeXRpbWUKKwkgICBUaGV5IGFyZSBzb21ld2hhdCAic3RhYmxlIiByZWdpc3RlcnMsIGFuZCB0byB1cGRhdGUgdGhlbSBldmVyeSB0aW1lCiAJICAgdGFrZXMgc28gbXVjaCB0aW1lLCBpdCdzIGp1c3Qgbm90IHdvcnRoeS4gVXBkYXRlIHRoZW0gaW4gYSBsb25nCiAJICAgaW50ZXJ2YWwgdG8gYXZvaWQgZXhjZXB0aW9uLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tcGNhLmMgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYwppbmRleCAyYjlhOGY1Li40Y2E5Y2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYworKysgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYwpAQCAtMzQzLDcgKzM0Myw3IEBACiAKIAlyZXQgPSBjdXJtc2c7CiAgb3V0OgotCURFQjEoIn19fSB0cmFuc2ZlcmVkICVkLyVkIG1lc3NhZ2VzLiAiCisJREVCMSgifX19IHRyYW5zZmVycmVkICVkLyVkIG1lc3NhZ2VzLiAiCiAJICAgICAic3RhdHVzIGlzICUjMDR4LiBjb250cm9sIGlzICUjMDR4XG4iLAogCSAgICAgY3VybXNnLCBudW0sIHBjYV9zdGF0dXMoYWRhcCksCiAJICAgICBwY2FfZ2V0X2NvbihhZGFwKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTUzNS5jCmluZGV4IDkwNmEzY2E1Li5kZDM2NDE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUuYwpAQCAtMjk1LDcgKzI5NSw3IEBACiAJfQogCiAJLyogVW5mb3J0dW5hdGVseSB0aGUgQUxJIFNNQiBjb250cm9sbGVyIG1hcHMgIm5vIHJlc3BvbnNlIiBhbmQgImJ1cwotCSAqIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlcG9uc2UgaXMgdGhlIHVzdWFsIGNhc2Ugc28gZG9uJ3QKKwkgKiBjb2xsaXNpb24iIGludG8gYSBzaW5nbGUgYml0LiBObyByZXNwb25zZSBpcyB0aGUgdXN1YWwgY2FzZSBzbyBkb24ndAogCSAqIGRvIGEgcHJpbnRrLiAgVGhpcyBtZWFucyB0aGF0IGJ1cyBjb2xsaXNpb25zIGdvIHVucmVwb3J0ZWQuCiAJICovCiAJaWYgKHRlbXAgJiBBTEkxNTM1X1NUU19CVVNFUlIpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTV4My5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMKaW5kZXggYjE0ZjZkNi4uODNlOGE2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMKQEAgLTMxOCw3ICszMTgsNyBAQAogCiAJLyoKIAkgIFVuZm9ydHVuYXRlbHkgdGhlIEFMSSBTTUIgY29udHJvbGxlciBtYXBzICJubyByZXNwb25zZSIgYW5kICJidXMKLQkgIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlcG9uc2UgaXMgdGhlIHVzdWFsIGNhc2Ugc28gZG9uJ3QKKwkgIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlc3BvbnNlIGlzIHRoZSB1c3VhbCBjYXNlIHNvIGRvbid0CiAJICBkbyBhIHByaW50ay4KIAkgIFRoaXMgbWVhbnMgdGhhdCBidXMgY29sbGlzaW9ucyBnbyB1bnJlcG9ydGVkLgogCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRhdmluY2kuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jCmluZGV4IDU3OTVjODMuLmE3NmQ4NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkvKgogCSAqIFdyaXRlIG1vZGUgcmVnaXN0ZXIgZmlyc3QgYXMgbmVlZGVkIGZvciBjb3JyZWN0IGJlaGF2aW91cgogCSAqIG9uIE9NQVAtTDEzOCwgYnV0IGRvbid0IHNldCBTVFQgeWV0IHRvIGF2b2lkIGEgcmFjZSB3aXRoIFhSRFkKLQkgKiBvY2N1cmluZyBiZWZvcmUgd2UgaGF2ZSBsb2FkZWQgRFhSCisJICogb2NjdXJyaW5nIGJlZm9yZSB3ZSBoYXZlIGxvYWRlZCBEWFIKIAkgKi8KIAlkYXZpbmNpX2kyY193cml0ZV9yZWcoZGV2LCBEQVZJTkNJX0kyQ19NRFJfUkVHLCBmbGFnKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1kZXNpZ253YXJlLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYwppbmRleCBiNjY0ZWQ4Li5iN2E1MWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYwpAQCAtMTc4LDcgKzE3OCw3IEBACiAgKiBAbG9jazogcHJvdGVjdCB0aGlzIHN0cnVjdCBhbmQgSU8gcmVnaXN0ZXJzCiAgKiBAY2xrOiBpbnB1dCByZWZlcmVuY2UgY2xvY2sKICAqIEBjbWRfZXJyOiBydW4gdGltZSBoYWR3YXJlIGVycm9yIGNvZGUKLSAqIEBtc2dzOiBwb2ludHMgdG8gYW4gYXJyYXkgb2YgbWVzc2FnZXMgY3VycmVudGx5IGJlaW5nIHRyYW5zZmVyZWQKKyAqIEBtc2dzOiBwb2ludHMgdG8gYW4gYXJyYXkgb2YgbWVzc2FnZXMgY3VycmVudGx5IGJlaW5nIHRyYW5zZmVycmVkCiAgKiBAbXNnc19udW06IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gbXNncwogICogQG1zZ193cml0ZV9pZHg6IHRoZSBlbGVtZW50IGluZGV4IG9mIHRoZSBjdXJyZW50IHR4IG1lc3NhZ2UgaW4gdGhlIG1zZ3MKICAqCWFycmF5CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWVsZWt0b3IuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCmluZGV4IGU1YjFhM2IuLjM3ZTJlODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCkBAIC0yMiw3ICsyMiw3IEBACiAvKiBXaXRoIHNvbWUgY2hhbmdlcyBmcm9tIEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCBldmVuCiAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+ICovCiAKLS8qIFBhcnRpYWx5IHJld3JpdGVuIGJ5IE9sZWcgSS4gVmRvdmlraW4gZm9yIG1tYXBwZWQgc3VwcG9ydCBvZgorLyogUGFydGlhbGx5IHJld3JpdGVuIGJ5IE9sZWcgSS4gVmRvdmlraW4gZm9yIG1tYXBwZWQgc3VwcG9ydCBvZgogICAgZm9yIEFscGhhIFByb2Nlc3NvciBJbmMuIFVQLTIwMDAoKykgYm9hcmRzICovCiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgwMS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pODAxLmMKaW5kZXggZWQyZTBjNS4uNzJjMDQxNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgwMS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgwMS5jCkBAIC05Niw3ICs5Niw3IEBACiAjZGVmaW5lIFNNQkhTVENGR19TTUJfU01JX0VOCTIKICNkZWZpbmUgU01CSFNUQ0ZHX0kyQ19FTgk0CiAKLS8qIEF1eGlsbGFyeSBjb250cm9sIHJlZ2lzdGVyIGJpdHMsIElDSDQrIG9ubHkgKi8KKy8qIEF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyIGJpdHMsIElDSDQrIG9ubHkgKi8KICNkZWZpbmUgU01CQVVYQ1RMX0NSQwkJMQogI2RlZmluZSBTTUJBVVhDVExfRTMyQgkJMgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlibV9paWMuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCmluZGV4IGU0Zjg4ZGMuLjNjMTEwZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCkBAIC00OTQsNyArNDk0LDcgQEAKIAkJaWYgKHVubGlrZWx5KHJldCA8IDApKQogCQkJYnJlYWs7CiAJCWVsc2UgaWYgKHVubGlrZWx5KHJldCAhPSBjb3VudCkpewotCQkJREJHKCIlZDogeGZlcl9ieXRlcywgcmVxdWVzdGVkICVkLCB0cmFuc2ZlcmVkICVkXG4iLAorCQkJREJHKCIlZDogeGZlcl9ieXRlcywgcmVxdWVzdGVkICVkLCB0cmFuc2ZlcnJlZCAlZFxuIiwKIAkJCQlkZXYtPmlkeCwgY291bnQsIHJldCk7CiAKIAkJCS8qIElmIGl0J3Mgbm90IGEgbGFzdCBwYXJ0IG9mIHhmZXIsIGFib3J0IGl0ICovCkBAIC01OTMsNyArNTkzLDcgQEAKIAlpZiAodW5saWtlbHkoKGluXzgoJmlpYy0+ZXh0c3RzKSAmIEVYVFNUU19CQ1NfTUFTSykgIT0gRVhUU1RTX0JDU19GUkVFKSl7CiAJCURCRygiJWQ6IGlpY194ZmVyLCBidXMgaXMgbm90IGZyZWVcbiIsIGRldi0+aWR4KTsKIAotCQkvKiBVc3VhbGx5IGl0IG1lYW5zIHNvbWV0aGluZyBzZXJpb3VzIGhhcyBoYXBwZW5kLgorCQkvKiBVc3VhbGx5IGl0IG1lYW5zIHNvbWV0aGluZyBzZXJpb3VzIGhhcyBoYXBwZW5lZC4KIAkJICogV2UgKmNhbm5vdCogaGF2ZSB1bmZpbmlzaGVkIHByZXZpb3VzIHRyYW5zZmVyCiAJCSAqIHNvIGl0IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UgdG8gdHJ5IHRvIHN0b3AgaXQuCiAJCSAqIFByb2JhYmx5IHdlIHdlcmUgbm90IGFibGUgdG8gcmVjb3ZlciBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbnRlbC1taWQuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW50ZWwtbWlkLmMKaW5kZXggYzcxNDkyNy4uZTgyOGFjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbnRlbC1taWQuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWludGVsLW1pZC5jCkBAIC0xNzAsOCArMTcwLDggQEAKIC8qIFJhdyBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIElDX1JBV19JTlRSX1NUQVQJMHgzNAkJLyogUmVhZCBPbmx5ICovCiAjZGVmaW5lIEdFTl9DQUxMCQkoMSA8PCAxMSkJLyogR2VuZXJhbCBjYWxsICovCi0jZGVmaW5lIFNUQVJUX0RFVAkJKDEgPDwgMTApCS8qIChSRSlTVEFSVCBvY2N1cmVkICovCi0jZGVmaW5lIFNUT1BfREVUCQkoMSA8PCA5KQkvKiBTVE9QIG9jY3VyZWQgKi8KKyNkZWZpbmUgU1RBUlRfREVUCQkoMSA8PCAxMCkJLyogKFJFKVNUQVJUIG9jY3VycmVkICovCisjZGVmaW5lIFNUT1BfREVUCQkoMSA8PCA5KQkvKiBTVE9QIG9jY3VycmVkICovCiAjZGVmaW5lIEFDVElWSVRZCQkoMSA8PCA4KQkvKiBCdXMgYnVzeSAqLwogI2RlZmluZSBSWF9ET05FCQkJKDEgPDwgNykJLyogTm90IHVzZWQgaW4gTWFzdGVyIG1vZGUgKi8KICNkZWZpbmUJVFhfQUJSVAkJCSgxIDw8IDYpCS8qIFRyYW5zbWl0IEFib3J0ICovCkBAIC0zNzUsNyArMzc1LDcgQEAKICAqIEkyQyBzaG91bGQgYmUgZGlzYWJsZWQgcHJpb3IgdG8gb3RoZXIgcmVnaXN0ZXIgb3BlcmF0aW9uLiBJZiBmYWlsZWQsIGFuCiAgKiBlcnJubyBpcyByZXR1cm5lZC4gTWFzayBhbmQgQ2xlYXIgYWxsIGludGVycnB0cywgdGhpcyBzaG91bGQgYmUgZG9uZSBhdAogICogZmlyc3QuICBTZXQgY29tbW9uIHJlZ2lzdGVycyB3aGljaCB3aWxsIG5vdCBiZSBtb2RpZmllZCBkdXJpbmcgbm9ybWFsCi0gKiB0cmFuc2ZlcnMsIGluY2x1ZGluZzogY29udHJvbGwgcmVnaXN0ZXIsIEZJRk8gdGhyZXNob2xkIGFuZCBjbG9jayBmcmVxLgorICogdHJhbnNmZXJzLCBpbmNsdWRpbmc6IGNvbnRyb2wgcmVnaXN0ZXIsIEZJRk8gdGhyZXNob2xkIGFuZCBjbG9jayBmcmVxLgogICogQ2hlY2sgQVBCIGRhdGEgd2lkdGggYXQgbGFzdC4KICAqLwogc3RhdGljIGludCBpbnRlbF9taWRfaTJjX2h3aW5pdChzdHJ1Y3QgaW50ZWxfbWlkX2kyY19wcml2YXRlICppMmMpCkBAIC00NTUsNyArNDU1LDcgQEAKICAqCiAgKiBCeSByZWFkaW5nIHJlZ2lzdGVyIElDX1RYX0FCUlRfU09VUkNFLCB2YXJpb3VzIHRyYW5zZmVyIGVycm9ycyBjYW4gYmUKICAqIGRpc3Rpbmd1c2hlZC4gQXQgcHJlc2VudCwgbm8gY2lyY3Vtc3RhbmNlcyBoYXZlIGJlZW4gZm91bmQgb3V0IHRoYXQKLSAqIG11bHRpcGxlIGVycm9ycyB3b3VsZCBiZSBvY2N1cmVkIHNpbXV0YW5lb3VzbHksIHNvIHdlIHNpbXBseSB1c2UgdGhlCisgKiBtdWx0aXBsZSBlcnJvcnMgd291bGQgYmUgb2NjdXJyZWQgc2ltdXRhbmVvdXNseSwgc28gd2Ugc2ltcGx5IHVzZSB0aGUKICAqIHJlZ2lzdGVyIHZhbHVlIGRpcmVjdGx5LgogICoKICAqIEF0IGxhc3QgdGhlIGVycm9yIGJpdHMgYXJlIGNsZWFyZWQuIChOb3RlIGNsZWFyIEFCUlRfU0JZVEVfTk9SU1RSVCBiaXQgbmVlZApAQCAtNDY5LDcgKzQ2OSw3IEBACiAKIAkvKiBTaW5nbGUgdHJhbnNmZXIgZXJyb3IgY2hlY2s6CiAJICogQWNjb3JkaW5nIHRvIGRhdGFib29rLCBUWC9SWCBGSUZPcyB3b3VsZCBiZSBmbHVzaGVkIHdoZW4KLQkgKiB0aGUgYWJvcnQgaW50ZXJydXB0IG9jY3VyZWQuCisJICogdGhlIGFib3J0IGludGVycnVwdCBvY2N1cnJlZC4KIAkgKi8KIAlpZiAoYWJvcnQgJiBBQlJUX01BU1RFUl9ESVMpCiAJCWRldl9lcnIoJmFkYXAtPmRldiwKQEAgLTU2OSw3ICs1NjksNyBAQAogICogUmV0dXJuIFZhbHVlczoKICAqIDAJaWYgdGhlIHJlYWQgdHJhbnNmZXIgc3VjY2VlZHMKICAqIC1FVElNRURPVVQJaWYgd2UgY2Fubm90IHJlYWQgdGhlICJyYXciIGludGVycnVwdCByZWdpc3RlcgotICogLUVJTlZBTAlpZiBhIHRyYW5zZmVyIGFib3J0IG9jY3VyZWQKKyAqIC1FSU5WQUwJaWYgYSB0cmFuc2ZlciBhYm9ydCBvY2N1cnJlZAogICoKICAqIEZvciBldmVyeSBieXRlLCBhICJXUklURSIgY29tbWFuZCB3aWxsIGJlIGxvYWRlZCBpbnRvIElDX0RBVEFfQ01EIHByaW9yIHRvCiAgKiBkYXRhIHRyYW5zZmVyLiBUaGUgYWN0dWFsICJ3cml0ZSIgb3BlcmF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIHdoZW4gdGhlCkBAIC02OTcsNyArNjk3LDcgQEAKICAqIEBudW06IG51bWJlciBvZiBpMmNfbXNnCiAgKgogICogUmV0dXJuIFZhbHVlczoKLSAqICsJCW51bWJlciBvZiBtZXNzYWdlcyB0cmFuc2ZlcmVkCisgKiArCQludW1iZXIgb2YgbWVzc2FnZXMgdHJhbnNmZXJyZWQKICAqIC1FVElNRURPVVQJSWYgY2Fubm90IGRpc2FibGUgSTJDIGNvbnRyb2xsZXIgb3IgcmVhZCBJQ19TVEFUVVMKICAqIC1FSU5WQUwJSWYgdGhlIGFkZHJlc3MgaW4gaTJjX21zZyBpcyBpbnZhbGlkCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pc2NoLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYwppbmRleCBkZGMyNThlLi4wNjgyZjhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgKiBUaGlzIGlzIHRoZSBtYWluIGFjY2VzcyBlbnRyeSBmb3IgaTJjLXNjaCBhY2Nlc3MKICAqIGFkYXAgaXMgaTJjX2FkYXB0ZXIgcG9pbnRlciwgYWRkciBpcyB0aGUgaTJjIGRldmljZSBidXMgYWRkcmVzcywgcmVhZF93cml0ZQogICogKDAgZm9yIHJlYWQgYW5kIDEgZm9yIHdyaXRlKSwgc2l6ZSBpcyBpMmMgdHJhbnNhY3Rpb24gdHlwZSBhbmQgZGF0YSBpcyB0aGUKLSAqIHVuaW9uIG9mIHRyYW5zYWN0aW9uIGZvciBkYXRhIHRvIGJlIHRyYW5zZmVyZWQgb3IgZGF0YSByZWFkIGZyb20gYnVzLgorICogdW5pb24gb2YgdHJhbnNhY3Rpb24gZm9yIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgb3IgZGF0YSByZWFkIGZyb20gYnVzLgogICogcmV0dXJuIDAgZm9yIHN1Y2Nlc3MgYW5kIG90aGVycyBmb3IgZmFpbHVyZS4KICAqLwogc3RhdGljIHMzMiBzY2hfYWNjZXNzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwgdTE2IGFkZHIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW14cy5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1teHMuYwppbmRleCBjYWY5NmRjLi43ZTc4ZjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW14cy5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbXhzLmMKQEAgLTE0OSw3ICsxNDksNyBAQAogCSAqIFdlIGhhdmUgdG8gY29weSB0aGUgc2xhdmUgYWRkcmVzcyAodTgpIGFuZCBidWZmZXIgKGFyYml0cmFyeSBudW1iZXIKIAkgKiBvZiB1OCkgaW50byB0aGUgZGF0YSByZWdpc3RlciAodTMyKS4gVG8gYWNoaWV2ZSB0aGF0LCB0aGUgdTggYXJlIHB1dAogCSAqIGludG8gdGhlIE1TQnMgb2YgJ2RhdGEnIHdoaWNoIGlzIHRoZW4gc2hpZnRlZCBmb3IgdGhlIG5leHQgdTguIFdoZW4KLQkgKiBhcHJvcHJpYXRlLCAnZGF0YScgaXMgd3JpdHRlbiB0byBNWFNfSTJDX0RBVEEuIFNvLCB0aGUgZmlyc3QgdTMyCisJICogYXBwcm9wcmlhdGUsICdkYXRhJyBpcyB3cml0dGVuIHRvIE1YU19JMkNfREFUQS4gU28sIHRoZSBmaXJzdCB1MzIKIAkgKiBsb29rcyBsaWtlIHRoaXM6CiAJICoKIAkgKiAgMyAgICAgICAgICAyICAgICAgICAgIDEgICAgICAgICAgMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ub21hZGlrLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYwppbmRleCA1OTRlZDUwLi5lMTBlNWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYwpAQCAtMTI2LDkgKzEyNiw5IEBACiAvKioKICAqIHN0cnVjdCBpMmNfbm1rX2NsaWVudCAtIGNsaWVudCBzcGVjaWZpYyBkYXRhCiAgKiBAc2xhdmVfYWRyOiA3LWJpdCBzbGF2ZSBhZGRyZXNzCi0gKiBAY291bnQ6IG5vLiBieXRlcyB0byBiZSB0cmFuc2ZlcmVkCisgKiBAY291bnQ6IG5vLiBieXRlcyB0byBiZSB0cmFuc2ZlcnJlZAogICogQGJ1ZmZlcjogY2xpZW50IGRhdGEgYnVmZmVyCi0gKiBAeGZlcl9ieXRlczogYnl0ZXMgdHJhbnNmZXJlZCB0aWxsIG5vdworICogQHhmZXJfYnl0ZXM6IGJ5dGVzIHRyYW5zZmVycmVkIHRpbGwgbm93CiAgKiBAb3BlcmF0aW9uOiBjdXJyZW50IEkyQyBvcGVyYXRpb24KICAqLwogc3RydWN0IGkyY19ubWtfY2xpZW50IHsKQEAgLTMzMCw3ICszMzAsNyBAQAogCSAqIHNsc3UgZGVmaW5lcyB0aGUgZGF0YSBzZXR1cCB0aW1lIGFmdGVyIFNDTCBjbG9jawogCSAqIHN0cmV0Y2hpbmcgaW4gdGVybXMgb2YgaTJjIGNsayBjeWNsZXMuIFRoZQogCSAqIG5lZWRlZCBzZXR1cCB0aW1lIGZvciB0aGUgdGhyZWUgbW9kZXMgYXJlIDI1MG5zLAotCSAqIDEwMG5zLCAxMG5zIHJlcGVjdGl2ZWx5IHRodXMgbGVhZGluZyB0byB0aGUgdmFsdWVzCisJICogMTAwbnMsIDEwbnMgcmVzcGVjdGl2ZWx5IHRodXMgbGVhZGluZyB0byB0aGUgdmFsdWVzCiAJICogb2YgMTQsIDYsIDIgZm9yIGEgNDggTUh6IGkyYyBjbGsuCiAJICovCiAJd3JpdGVsKGRldi0+Y2ZnLnNsc3UgPDwgMTYsIGRldi0+dmlydGJhc2UgKyBJMkNfU0NSKTsKQEAgLTM2NCw3ICszNjQsNyBAQAogCS8qCiAJICogc2V0IHRoZSBzcGVlZCBtb2RlLiBDdXJyZW50bHkgd2Ugc3VwcG9ydAogCSAqIG9ubHkgc3RhbmRhcmQgYW5kIGZhc3QgbW9kZSBvZiBvcGVyYXRpb24KLQkgKiBUT0RPIC0gc3VwcG9ydCBmb3IgZmFzdCBtb2RlIHBsdXMgKHVwdG8gMU1iL3MpCisJICogVE9ETyAtIHN1cHBvcnQgZm9yIGZhc3QgbW9kZSBwbHVzICh1cCB0byAxTWIvcykKIAkgKiBhbmQgaGlnaCBzcGVlZCAodXAgdG8gMy40IE1iL3MpCiAJICovCiAJaWYgKGRldi0+Y2ZnLnNtID4gSTJDX0ZSRVFfTU9ERV9GQVNUKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXM2MDAwLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXM2MDAwLmMKaW5kZXggY2FkYzAyMS4uY2I1ZDAxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zNjAwMC5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtczYwMDAuYwpAQCAtMzE4LDcgKzMxOCw3IEBACiAJcmMgPSByZXF1ZXN0X2lycShpZmFjZS0+aXJxLCBzNmkyY19pbnRlcnJ1cHRfZW50cnksCiAJCQkgSVJRRl9TSEFSRUQsIGRldi0+bmFtZSwgaWZhY2UpOwogCWlmIChyYykgewotCQlkZXZfZXJyKCZwX2FkYXAtPmRldiwgInM2aTJjOiBjYW50IGdldCBJUlEgJWRcbiIsIGlmYWNlLT5pcnEpOworCQlkZXZfZXJyKCZwX2FkYXAtPmRldiwgInM2aTJjOiBjYW4ndCBnZXQgSVJRICVkXG4iLCBpZmFjZS0+aXJxKTsKIAkJZ290byBlcnJfY2xrX2RpczsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc3R1MzAwLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXN0dTMwMC5jCmluZGV4IDI2NjEzNWQuLjk5ODc5NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc3R1MzAwLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zdHUzMDAuYwpAQCAtNDk3LDcgKzQ5Nyw3IEBACiAJdTMyIHZhbDsKIAlpbnQgaSA9IDA7CiAKLQkvKiBMb2NhdGUgdGhlIGFwcm9wcmlhdGUgY2xvY2sgc2V0dGluZyAqLworCS8qIExvY2F0ZSB0aGUgYXBwcm9wcmlhdGUgY2xvY2sgc2V0dGluZyAqLwogCXdoaWxlIChpIDwgQVJSQVlfU0laRShzdHUzMDBfY2xrdGFibGUpIC0gMSAmJgogCSAgICAgICBzdHUzMDBfY2xrdGFibGVbaV0ucmF0ZSA8IGNsa3JhdGUpCiAJCWkrKzsKQEAgLTY0NCw3ICs2NDQsNyBAQAogCXJldCA9IHN0dTMwMF9hd2FpdF9ldmVudChkZXYsIFNUVTMwMF9FVkVOVF82KTsKIAogCS8qCi0JICogQ2xlYXIgYW55IHBlbmRpbmcgRVZFTlQgNiBubyBtYXR0ZXIgd2hhdCBoYXBwZW5kIGR1cmluZworCSAqIENsZWFyIGFueSBwZW5kaW5nIEVWRU5UIDYgbm8gbWF0dGVyIHdoYXQgaGFwcGVuZWQgZHVyaW5nCiAJICogYXdhaXRfZXZlbnQuCiAJICovCiAJdmFsID0gc3R1MzAwX3I4KGRldi0+dmlydGJhc2UgKyBJMkNfQ1IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10ZWdyYS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10ZWdyYS5jCmluZGV4IDM5MjFmNjYuLmI0YWIzOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdGVncmEuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXRlZ3JhLmMKQEAgLTM4Niw3ICszODYsNyBAQAogCQlkdmNfd3JpdGVsKGkyY19kZXYsIERWQ19TVEFUVVNfSTJDX0RPTkVfSU5UUiwgRFZDX1NUQVRVUyk7CiAJcmV0dXJuIElSUV9IQU5ETEVEOwogZXJyOgotCS8qIEFuIGVycm9yIG9jY3VyZWQsIG1hc2sgYWxsIGludGVycnVwdHMgKi8KKwkvKiBBbiBlcnJvciBvY2N1cnJlZCwgbWFzayBhbGwgaW50ZXJydXB0cyAqLwogCXRlZ3JhX2kyY19tYXNrX2lycShpMmNfZGV2LCBJMkNfSU5UX05PX0FDSyB8IEkyQ19JTlRfQVJCSVRSQVRJT05fTE9TVCB8CiAJCUkyQ19JTlRfUEFDS0VUX1hGRVJfQ09NUExFVEUgfCBJMkNfSU5UX1RYX0ZJRk9fREFUQV9SRVEgfAogCQlJMkNfSU5UX1JYX0ZJRk9fREFUQV9SRVEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy14aWljLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYwppbmRleCA5ZmJkN2U2Li5lOWQ1ZmY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYwpAQCAtMjEsNyArMjEsNyBAQAogICogdG8gdGhlIGF1dG9tb3RpdmUgZGV2ZWxvcG1lbnQgYm9hcmQgUnVzc2VsbHZpbGxlLiBUaGUgY29weXJpZ2h0IGhvbGRlcgogICogYXMgc2VlbiBpbiB0aGUgaGVhZGVyIGlzIEludGVsIGNvcnBvcmF0aW9uLgogICogTW9jZWFuIExhYm9yYXRvcmllcyBmb3JrZWQgb2ZmIHRoZSBHTlUvTGludXggcGxhdGZvcm0gd29yayBpbnRvIGEKLSAqIHNlcGFyYXRlIGNvbXBhbnkgY2FsbGVkIFBlbGFnaWNvcmUgQUIsIHdoaWNoIGNvbW1pdGVkIHRoZSBjb2RlIHRvIHRoZQorICogc2VwYXJhdGUgY29tcGFueSBjYWxsZWQgUGVsYWdpY29yZSBBQiwgd2hpY2ggY29tbWl0dGVkIHRoZSBjb2RlIHRvIHRoZQogICoga2VybmVsLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCmluZGV4IGU1Zjc2YTAuLjcwYzMwZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMKKysrIGIvZHJpdmVycy9pMmMvaTJjLWNvcmUuYwpAQCAtMzQ4LDcgKzM0OCw3IEBACiAKIAogLyogVGhpcyBpcyBhIHBlcm1pc3NpdmUgYWRkcmVzcyB2YWxpZGl0eSBjaGVjaywgSTJDIGFkZHJlc3MgbWFwIGNvbnN0cmFpbnRzCi0gKiBhcmUgcHVycG9zZWRseSBub3QgZW5mb3JjZWQsIGV4Y2VwdCBmb3IgdGhlIGdlbmVyYWwgY2FsbCBhZGRyZXNzLiAqLworICogYXJlIHB1cnBvc2VseSBub3QgZW5mb3JjZWQsIGV4Y2VwdCBmb3IgdGhlIGdlbmVyYWwgY2FsbCBhZGRyZXNzLiAqLwogc3RhdGljIGludCBpMmNfY2hlY2tfY2xpZW50X2FkZHJfdmFsaWRpdHkoY29uc3Qgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKIAlpZiAoY2xpZW50LT5mbGFncyAmIEkyQ19DTElFTlRfVEVOKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9jeTgyYzY5My5jIGIvZHJpdmVycy9pZGUvY3k4MmM2OTMuYwppbmRleCA5MzgzZjY3Li4zYmU2MGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9jeTgyYzY5My5jCisrKyBiL2RyaXZlcnMvaWRlL2N5ODJjNjkzLmMKQEAgLTY3LDcgKzY3LDcgQEAKIAogCS8qCiAJICogbm90ZTogYmVsb3cgd2Ugc2V0IHRoZSB2YWx1ZSBmb3IgQnVzIE1hc3RlciBJREUgVGltZU91dCBSZWdpc3RlcgotCSAqIEknbSBub3QgYWJzb2x1dGx5IHN1cmUgd2hhdCB0aGlzIGRvZXMsIGJ1dCBpdCBzb2x2ZWQgbXkgcHJvYmxlbQorCSAqIEknbSBub3QgYWJzb2x1dGVseSBzdXJlIHdoYXQgdGhpcyBkb2VzLCBidXQgaXQgc29sdmVkIG15IHByb2JsZW0KIAkgKiB3aXRoIElERSBETUEgYW5kIHNvdW5kLCBzbyBJIG5vdyBjYW4gcGxheSBzb3VuZCBhbmQgd29yayB3aXRoCiAJICogbXkgSURFIGRyaXZlciBhdCB0aGUgc2FtZSB0aW1lIDotKQogCSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMgYi9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMKaW5kZXggNTQwNmI2ZS4uNWE3MDJkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYwpAQCAtMTA3LDcgKzEwNyw3IEBACiBzdGF0aWMgdm9pZCBpZGVfZmxvcHB5X3JlcG9ydF9lcnJvcihzdHJ1Y3QgaWRlX2Rpc2tfb2JqICpmbG9wcHksCiAJCQkJICAgIHN0cnVjdCBpZGVfYXRhcGlfcGMgKnBjKQogewotCS8qIHN1cHJlc3MgZXJyb3IgbWVzc2FnZXMgcmVzdWx0aW5nIGZyb20gTWVkaXVtIG5vdCBwcmVzZW50ICovCisJLyogc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgcmVzdWx0aW5nIGZyb20gTWVkaXVtIG5vdCBwcmVzZW50ICovCiAJaWYgKGZsb3BweS0+c2Vuc2Vfa2V5ID09IDB4MDIgJiYKIAkgICAgZmxvcHB5LT5hc2MgICAgICAgPT0gMHgzYSAmJgogCSAgICBmbG9wcHktPmFzY3EgICAgICA9PSAweDAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLXRhc2tmaWxlLmMgYi9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwppbmRleCAzNGI5ODcyLi42MDBjODlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwpAQCAtMjAxLDcgKzIwMSw3IEBACiAJdTggc3RhdDsKIAogCS8qCi0JICogTGFzdCBzZWN0b3Igd2FzIHRyYW5zZmVyZWQsIHdhaXQgdW50aWwgZGV2aWNlIGlzIHJlYWR5LiAgVGhpcyBjYW4KKwkgKiBMYXN0IHNlY3RvciB3YXMgdHJhbnNmZXJyZWQsIHdhaXQgdW50aWwgZGV2aWNlIGlzIHJlYWR5LiAgVGhpcyBjYW4KIAkgKiB0YWtlIHVwIHRvIDYgbXMgb24gc29tZSBBVEFQSSBkZXZpY2VzLCBzbyB3ZSB3aWxsIHdhaXQgbWF4IDEwIG1zLgogCSAqLwogCWZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCAxMDAwOyByZXRyaWVzKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BpaXguYyBiL2RyaXZlcnMvaWRlL3BpaXguYwppbmRleCAxYmRjYTQ5Li5iNTlkMDRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9waWl4LmMKKysrIGIvZHJpdmVycy9pZGUvcGlpeC5jCkBAIC04LDggKzgsOCBAQAogICoKICAqIERvY3VtZW50YXRpb246CiAgKgotICoJUHVibGljYWxseSBhdmFpbGFibGUgZnJvbSBJbnRlbCB3ZWIgc2l0ZS4gRXJyYXRhIGRvY3VtZW50YXRpb24KLSAqIGlzIGFsc28gcHVibGljYWxseSBhdmFpbGFibGUuIEFzIGFuIGFpZGUgdG8gYW55b25lIGhhY2tpbmcgb24gdGhpcworICoJUHVibGljbHkgYXZhaWxhYmxlIGZyb20gSW50ZWwgd2ViIHNpdGUuIEVycmF0YSBkb2N1bWVudGF0aW9uCisgKiBpcyBhbHNvIHB1YmxpY2x5IGF2YWlsYWJsZS4gQXMgYW4gYWlkZSB0byBhbnlvbmUgaGFja2luZyBvbiB0aGlzCiAgKiBkcml2ZXIgdGhlIGxpc3Qgb2YgZXJyYXRhIHRoYXQgYXJlIHJlbGV2YW50IGlzIGJlbG93LmdvaW5nIGJhY2sgdG8KICAqIFBJSVg0LiBPbGRlciBkZXZpY2UgZG9jdW1lbnRhdGlvbiBpcyBub3cgYSBiaXQgdHJpY2t5IHRvIGZpbmQuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvc2lzNTUxMy5jIGIvZHJpdmVycy9pZGUvc2lzNTUxMy5jCmluZGV4IGRiN2Y0ZTcuLjRhMDAyMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3NpczU1MTMuYworKysgYi9kcml2ZXJzL2lkZS9zaXM1NTEzLmMKQEAgLTUzLDcgKzUzLDcgQEAKIAogI2RlZmluZSBEUlZfTkFNRSAic2lzNTUxMyIKIAotLyogcmVnaXN0ZXJzIGxheW91dCBhbmQgaW5pdCB2YWx1ZXMgYXJlIGNoaXBzZXQgZmFtaWx5IGRlcGVuZGFudCAqLworLyogcmVnaXN0ZXJzIGxheW91dCBhbmQgaW5pdCB2YWx1ZXMgYXJlIGNoaXBzZXQgZmFtaWx5IGRlcGVuZGVudCAqLwogCiAjZGVmaW5lIEFUQV8xNgkJMHgwMQogI2RlZmluZSBBVEFfMzMJCTB4MDIKQEAgLTQwNiw3ICs0MDYsNyBAQAogCQkJCQlwY2lfbmFtZShkZXYpKTsKIAkJCQljaGlwc2V0X2ZhbWlseSA9IEFUQV8xMzM7CiAKLQkJCQkvKiBDaGVjayBmb3IgNTUxMyBjb21wYWJpbGl0eSBtYXBwaW5nCisJCQkJLyogQ2hlY2sgZm9yIDU1MTMgY29tcGF0aWJpbGl0eSBtYXBwaW5nCiAJCQkJICogV2UgbXVzdCB1c2UgdGhpcywgZWxzZSB0aGUgcG9ydCBlbmFibGVkIGNvZGUgd2lsbCBmYWlsLAogCQkJCSAqIGFzIGl0IGV4cGVjdHMgdGhlIGVuYWJsZWJpdHMgYXQgMHg0YS4KIAkJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3RyaWZsZXguYyBiL2RyaXZlcnMvaWRlL3RyaWZsZXguYwppbmRleCA3OTUzNDQ3Li5lNTNhMWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS90cmlmbGV4LmMKKysrIGIvZHJpdmVycy9pZGUvdHJpZmxleC5jCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBMb29zZWx5IGJhc2VkIG9uIHRoZSBwaWl4ICYgc3Z3a3MgZHJpdmVycy4KICAqCiAgKiBEb2N1bWVudGF0aW9uOgotICoJTm90IHB1YmxpY2FsbHkgYXZhaWxhYmxlLgorICoJTm90IHB1YmxpY2x5IGF2YWlsYWJsZS4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3ZpYTgyY3h4eC5jIGIvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMKaW5kZXggZDJhMDk5Ny4uZjQ2ZjQ5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMKKysrIGIvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMKQEAgLTE0LDcgKzE0LDcgQEAKICAqCUFuZHJlIEhlZHJpY2sKICAqCiAgKiBEb2N1bWVudGF0aW9uOgotICoJT2Jzb2xldGUgZGV2aWNlIGRvY3VtZW50YXRpb24gcHVibGljYWxseSBhdmFpbGFibGUgZnJvbSB2aWEuY29tLnR3CisgKglPYnNvbGV0ZSBkZXZpY2UgZG9jdW1lbnRhdGlvbiBwdWJsaWNseSBhdmFpbGFibGUgZnJvbSB2aWEuY29tLnR3CiAgKglDdXJyZW50IGRldmljZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSB1bmRlciBOREEgb25seQogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9hZS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMKaW5kZXggNjJhZjc0Mi4uMjRmOWUzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCWludCBzdGF0dXM7CiAKIAkvKgotCSAqIHJldHJlaXZlIHRoZSBtZXNzYWdlCisJICogcmV0cmlldmUgdGhlIG1lc3NhZ2UKIAkgKi8KIAl3ciA9IGMyX21xX2NvbnN1bWUobXEpOwogCWlmICghd3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9xcC5jCmluZGV4IGQ4ZjRiYjguLjBkN2I2ZjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfcXAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfcXAuYwpAQCAtNjEyLDcgKzYxMiw3IEBACiAJYzJfdW5sb2NrX2NxcyhzZW5kX2NxLCByZWN2X2NxKTsKIAogCS8qCi0JICogRGVzdG9yeSBxcCBpbiB0aGUgcm5pYy4uLgorCSAqIERlc3Ryb3kgcXAgaW4gdGhlIHJuaWMuLi4KIAkgKi8KIAlkZXN0cm95X3FwKGMyZGV2LCBxcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl93ci5oIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmgKaW5kZXggYzY1ZmJkZC4uOGQ0YjRjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmgKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmgKQEAgLTEzMSw3ICsxMzEsNyBAQAogCSAqICAgICAgICAgIEFsbCB0aGUgcHJlY2VkaW5nIElEcyBhcmUgZml4ZWQsIGFuZCBtdXN0IG5vdCBjaGFuZ2UuCiAJICogICAgICAgICAgWW91IGNhbiBhZGQgbmV3IElEcywgYnV0IG11c3Qgbm90IHJlbW92ZSBvciByZW9yZGVyCiAJICogICAgICAgICAgYW55IElEcy4gSWYgeW91IGRvLCBZT1Ugd2lsbCBydWluIGFueSBob3BlIG9mCi0JICogICAgICAgICAgY29tcGF0YWJpbGl0eSBiZXR3ZWVuIHZlcnNpb25zLgorCSAqICAgICAgICAgIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucy4KIAkgKi8KIAlDQ1dSX0xBU1QsCiAKQEAgLTI0Miw3ICsyNDIsNyBAQAogLyoKICAqICB0byBmaXggYnVnIDE4MTUgd2UgZGVmaW5lIHRoZSBtYXggc2l6ZSBhbGxvd2FibGUgb2YgdGhlCiAgKiAgdGVybWluYXRlIG1lc3NhZ2UgKHBlciB0aGUgSUVURiBzcGVjKS5SZWZlciB0byB0aGUgSUVURgotICogIHByb3RvY2FsIHNwZWNpZmljYXRpb24sIHNlY3Rpb24gMTIuMS42LCBwYWdlIDY0KQorICogIHByb3RvY29sIHNwZWNpZmljYXRpb24sIHNlY3Rpb24gMTIuMS42LCBwYWdlIDY0KQogICogIFRoZSBtZXNzYWdlIGlzIHByZWZpeGVkIGJ5IDIwIHR5cGVzIG9mIEREUCBpbmZvLgogICoKICAqICBUaGVuIHRoZSBtZXNzYWdlIGhhcyA2IGJ5dGVzIGZvciB0aGUgdGVybWluYXRlIGNvbnRyb2wKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYwppbmRleCA0N2RiNGJmLi41OGMwZTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZHJpdmVyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2RyaXZlci5jCkBAIC0yMzkyLDcgKzIzOTIsNyBAQAogCS8qCiAJICogY2xlYXIgU2VyZGVzRW5hYmxlIGFuZCB0dXJuIHRoZSBsZWRzIG9mZjsgZG8gdGhpcyBoZXJlIGJlY2F1c2UKIAkgKiB3ZSBhcmUgdW5sb2FkaW5nLCBzbyBkb24ndCBjb3VudCBvbiBpbnRlcnJ1cHRzIHRvIG1vdmUgYWxvbmcKLQkgKiBUdXJuIHRoZSBMRURzIG9mZiBleHBsaWN0bHkgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKwkgKiBUdXJuIHRoZSBMRURzIG9mZiBleHBsaWNpdGx5IGZvciB0aGUgc2FtZSByZWFzb24uCiAJICovCiAJZGQtPmlwYXRoX2ZfcXVpZXRfc2VyZGVzKGRkKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZpbGVfb3BzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYwppbmRleCA2ZDRiMjljLi5lZTc5YTJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYwpAQCAtMTk3Miw3ICsxOTcyLDcgQEAKIAkgKiAwIHRvIDEuICBTbyBmb3IgdGhvc2UgY2hpcHMsIHdlIHR1cm4gaXQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uCiAJICogVGhpcyB3aWxsICh2ZXJ5IGJyaWVmbHkpIGFmZmVjdCBhbnkgb3RoZXIgb3BlbiBwb3J0cywgYnV0IHRoZQogCSAqIGR1cmF0aW9uIGlzIHZlcnkgc2hvcnQsIGFuZCB0aGVyZWZvcmUgaXNuJ3QgYW4gaXNzdWUuICBXZQotCSAqIGV4cGxpY3RseSBzZXQgdGhlIGluLW1lbW9yeSB0YWlsIGNvcHkgdG8gMCBiZWZvcmVoYW5kLCBzbyB3ZQorCSAqIGV4cGxpY2l0bHkgc2V0IHRoZSBpbi1tZW1vcnkgdGFpbCBjb3B5IHRvIDAgYmVmb3JlaGFuZCwgc28gd2UKIAkgKiBkb24ndCBoYXZlIHRvIHdhaXQgdG8gYmUgc3VyZSB0aGUgRE1BIHVwZGF0ZSBoYXMgaGFwcGVuZWQKIAkgKiAoY2hpcCByZXNldHMgaGVhZC90YWlsIHRvIDAgb24gdHJhbnNpdGlvbiB0byBlbmFibGUpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2luaXRfY2hpcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2luaXRfY2hpcC5jCmluZGV4IGZlZjBmNDIuLjdjMWVlYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9pbml0X2NoaXAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfaW5pdF9jaGlwLmMKQEAgLTMzNSw3ICszMzUsNyBAQAogICogQGRkOiB0aGUgaW5maW5pcGF0aCBkZXZpY2UKICAqCiAgKiBzYW5pdHkgY2hlY2sgYXQgbGVhc3Qgc29tZSBvZiB0aGUgdmFsdWVzIGFmdGVyIHJlc2V0LCBhbmQKLSAqIGVuc3VyZSBubyByZWNlaXZlIG9yIHRyYW5zbWl0IChleHBsaWN0bHksIGluIGNhc2UgcmVzZXQKKyAqIGVuc3VyZSBubyByZWNlaXZlIG9yIHRyYW5zbWl0IChleHBsaWNpdGx5LCBpbiBjYXNlIHJlc2V0CiAgKiBmYWlsZWQKICAqLwogc3RhdGljIGludCBpbml0X2NoaXBfcmVzZXQoc3RydWN0IGlwYXRoX2RldmRhdGEgKmRkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3VkLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYwppbmRleCA3NDIwNzE1Li5lOGEyYTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYwpAQCAtODYsNyArODYsNyBAQAogCX0KIAogCS8qCi0JICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VlZCB0aGUgZGF0YSBldmVuIGlmIG5vdAorCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZGUgdGhlIGRhdGEgZXZlbiBpZiBub3QKIAkgKiBwcmVzZW50IG9uIHRoZSB3aXJlLgogCSAqLwogCWxlbmd0aCA9IHN3cWUtPmxlbmd0aDsKQEAgLTUxNSw3ICs1MTUsNyBAQAogCX0KIAogCS8qCi0JICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VlZCB0aGUgZGF0YSBldmVuIGlmIG5vdAorCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZGUgdGhlIGRhdGEgZXZlbiBpZiBub3QKIAkgKiBwcmVzZW50IG9uIHRoZSB3aXJlLgogCSAqLwogCXdjLmJ5dGVfbGVuID0gdGxlbiArIHNpemVvZihzdHJ1Y3QgaWJfZ3JoKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91c2VyX3NkbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91c2VyX3NkbWEuYwppbmRleCBiZTc4ZjY2Li5mNWNiMTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdXNlcl9zZG1hLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3VzZXJfc2RtYS5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAlyZXR1cm4gMSArICgoZXBhZ2UgLSBzcGFnZSkgPj4gUEFHRV9TSElGVCk7CiB9CiAKLS8qIHRydW5jYXRlIGxlbmd0aCB0byBwYWdlIGJvdW5kcnkgKi8KKy8qIHRydW5jYXRlIGxlbmd0aCB0byBwYWdlIGJvdW5kYXJ5ICovCiBzdGF0aWMgaW50IGlwYXRoX3VzZXJfc2RtYV9wYWdlX2xlbmd0aCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKQogewogCWNvbnN0IHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gYWRkciAmIH5QQUdFX01BU0s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfY20uYwppbmRleCBjZmEzYTJiLi4zM2M3ZWVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19jbS5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2NtLmMKQEAgLTEzOTcsNyArMTM5Nyw3IEBACiAJCWNsZWFudXBfcmV0cmFuc19lbnRyeShjbV9ub2RlKTsKIAkJY21fbm9kZS0+c3RhdGUgPSBORVNfQ01fU1RBVEVfQ0xPU0lORzsKIAkJc2VuZF9hY2soY21fbm9kZSwgTlVMTCk7Ci0JCS8qIFdhaXQgZm9yIEFDSyBhcyB0aGlzIGlzIHNpbXVsdGFub3VzIGNsb3NlLi4KKwkJLyogV2FpdCBmb3IgQUNLIGFzIHRoaXMgaXMgc2ltdWx0YW5lb3VzIGNsb3NlLi4KIAkJKiBBZnRlciB3ZSByZWNlaXZlIEFDSywgZG8gbm90IHNlbmQgYW55dGhpbmcuLgogCQkqIEp1c3Qgcm0gdGhlIG5vZGUuLiBEb25lLi4gKi8KIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19ody5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfaHcuYwppbmRleCAwOGMxOTQ4Li4xMGQwYTVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19ody5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2h3LmMKQEAgLTgwLDcgKzgwLDcgQEAKIAogI2lmZGVmIENPTkZJR19JTkZJTklCQU5EX05FU19ERUJVRwogc3RhdGljIHVuc2lnbmVkIGNoYXIgKm5lc19pd2FycF9zdGF0ZV9zdHJbXSA9IHsKLQkiTm9uLUV4aXN0YW50IiwKKwkiTm9uLUV4aXN0ZW50IiwKIAkiSWRsZSIsCiAJIlJUUyIsCiAJIkNsb3NpbmciLApAQCAtOTEsNyArOTEsNyBAQAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgKm5lc190Y3Bfc3RhdGVfc3RyW10gPSB7Ci0JIk5vbi1FeGlzdGFudCIsCisJIk5vbi1FeGlzdGVudCIsCiAJIkNsb3NlZCIsCiAJIkxpc3RlbiIsCiAJIlNZTiBTZW50IiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX25pYy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMKaW5kZXggMmM5YzE5My4uZTk2YjhmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMKQEAgLTkwMiw3ICs5MDIsNyBAQAogCQluZXNfd3JpdGVfaW5kZXhlZChuZXNkZXYsIE5FU19JRFhfTklDX1VOSUNBU1RfQUxMLCBuaWNfYWN0aXZlKTsKIAl9CiAKLQluZXNfZGVidWcoTkVTX0RCR19OSUNfUlgsICJOdW1iZXIgb2YgTUMgZW50cmllcyA9ICVkLCBQcm9taXNjb3VzID0gJWQsIEFsbCBNdWx0aWNhc3QgPSAlZC5cbiIsCisJbmVzX2RlYnVnKE5FU19EQkdfTklDX1JYLCAiTnVtYmVyIG9mIE1DIGVudHJpZXMgPSAlZCwgUHJvbWlzY3VvdXMgPSAlZCwgQWxsIE11bHRpY2FzdCA9ICVkLlxuIiwKIAkJICBtY19jb3VudCwgISEobmV0ZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKSwKIAkJICAhIShuZXRkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSk7CiAJaWYgKCFtY19hbGxfb24pIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYi5oCmluZGV4IDczMjI1ZWUuLjc2OWExZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliLmgKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWIuaApAQCAtNjUzLDcgKzY1Myw3IEBACiAKIC8qIGRldmljZSBkYXRhIHN0cnVjdCBub3cgY29udGFpbnMgb25seSAiZ2VuZXJhbCBwZXItZGV2aWNlIiBpbmZvLgogICogZmllbGRzIHJlbGF0ZWQgdG8gYSBwaHlzaWNhbCBJQiBwb3J0IGFyZSBpbiBhIHFpYl9wcG9ydGRhdGEgc3RydWN0LAotICogZGVzY3JpYmVkIGFib3ZlKSB3aGlsZSBmaWVsZHMgb25seSB1c2VkIGJ5IGEgcGFydGljdWFsciBjaGlwLXR5cGUgYXJlIGluCisgKiBkZXNjcmliZWQgYWJvdmUpIHdoaWxlIGZpZWxkcyBvbmx5IHVzZWQgYnkgYSBwYXJ0aWN1bGFyIGNoaXAtdHlwZSBhcmUgaW4KICAqIGEgcWliX2NoaXBkYXRhIHN0cnVjdCwgd2hvc2UgY29udGVudHMgYXJlIG9wYXF1ZSB0byB0aGlzIGZpbGUuCiAgKi8KIHN0cnVjdCBxaWJfZGV2ZGF0YSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9maWxlX29wcy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfZmlsZV9vcHMuYwppbmRleCA3NWJmYWQxLi40MDZmY2E1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9maWxlX29wcy5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2ZpbGVfb3BzLmMKQEAgLTE1MzksNyArMTUzOSw3IEBACiAKIAkJLyoKIAkJICogSWYgcHJvY2VzcyBoYXMgTk9UIGFscmVhZHkgc2V0IGl0J3MgYWZmaW5pdHksIHNlbGVjdCBhbmQKLQkJICogcmVzZXJ2ZSBhIHByb2Nlc3NvciBmb3IgaXQsIGFzIGEgcmVuZGV2b3VzIGZvciBhbGwKKwkJICogcmVzZXJ2ZSBhIHByb2Nlc3NvciBmb3IgaXQsIGFzIGEgcmVuZGV6dm91cyBmb3IgYWxsCiAJCSAqIHVzZXJzIG9mIHRoZSBkcml2ZXIuICBJZiB0aGV5IGRvbid0IGFjdHVhbGx5IGxhdGVyCiAJCSAqIHNldCBhZmZpbml0eSB0byB0aGlzIGNwdSwgb3Igc2V0IGl0IHRvIHNvbWUgb3RoZXIgY3B1LAogCQkgKiBpdCBqdXN0IG1lYW5zIHRoYXQgc29vbmVyIG9yIGxhdGVyIHdlIGRvbid0IHJlY29tbWVuZApAQCAtMTY1Nyw3ICsxNjU3LDcgQEAKIAkgKiAwIHRvIDEuICBTbyBmb3IgdGhvc2UgY2hpcHMsIHdlIHR1cm4gaXQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uCiAJICogVGhpcyB3aWxsICh2ZXJ5IGJyaWVmbHkpIGFmZmVjdCBhbnkgb3RoZXIgb3BlbiBjdHh0cywgYnV0IHRoZQogCSAqIGR1cmF0aW9uIGlzIHZlcnkgc2hvcnQsIGFuZCB0aGVyZWZvcmUgaXNuJ3QgYW4gaXNzdWUuICBXZQotCSAqIGV4cGxpY3RseSBzZXQgdGhlIGluLW1lbW9yeSB0YWlsIGNvcHkgdG8gMCBiZWZvcmVoYW5kLCBzbyB3ZQorCSAqIGV4cGxpY2l0bHkgc2V0IHRoZSBpbi1tZW1vcnkgdGFpbCBjb3B5IHRvIDAgYmVmb3JlaGFuZCwgc28gd2UKIAkgKiBkb24ndCBoYXZlIHRvIHdhaXQgdG8gYmUgc3VyZSB0aGUgRE1BIHVwZGF0ZSBoYXMgaGFwcGVuZWQKIAkgKiAoY2hpcCByZXNldHMgaGVhZC90YWlsIHRvIDAgb24gdHJhbnNpdGlvbiB0byBlbmFibGUpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNjEyMC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNjEyMC5jCmluZGV4IDc3NGRlYTguLjdkZTRiN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTYxMjAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE2MTIwLmMKQEAgLTE3OTksNyArMTc5OSw3IEBACiAJLyoKIAkgKiBLZWVwIGNoaXAgZnJvbSBiZWluZyBhY2Nlc3NlZCB1bnRpbCB3ZSBhcmUgcmVhZHkuICBVc2UKIAkgKiB3cml0ZXEoKSBkaXJlY3RseSwgdG8gYWxsb3cgdGhlIHdyaXRlIGV2ZW4gdGhvdWdoIFFJQl9QUkVTRU5UCi0JICogaXNudCcgc2V0LgorCSAqIGlzbid0JyBzZXQuCiAJICovCiAJZGQtPmZsYWdzICY9IH4oUUlCX0lOSVRURUQgfCBRSUJfUFJFU0VOVCk7CiAJZGQtPmludF9jb3VudGVyID0gMDsgLyogc28gd2UgY2hlY2sgaW50ZXJydXB0cyB3b3JrIGFnYWluICovCkBAIC0yMTcxLDcgKzIxNzEsNyBAQAogCQkgKiBJbml0IHRoZSBjb250ZXh0IHJlZ2lzdGVycyBhbHNvOyBpZiB3ZSB3ZXJlCiAJCSAqIGRpc2FibGVkLCB0YWlsIGFuZCBoZWFkIHNob3VsZCBib3RoIGJlIHplcm8KIAkJICogYWxyZWFkeSBmcm9tIHRoZSBlbmFibGUsIGJ1dCBzaW5jZSB3ZSBkb24ndAotCQkgKiBrbm93LCB3ZSBoYXZlIHRvIGRvIGl0IGV4cGxpY3RseS4KKwkJICoga25vdywgd2UgaGF2ZSB0byBkbyBpdCBleHBsaWNpdGx5LgogCQkgKi8KIAkJdmFsID0gcWliX3JlYWRfdXJlZzMyKGRkLCB1cl9yY3ZlZ3JpbmRleHRhaWwsIGN0eHQpOwogCQlxaWJfd3JpdGVfdXJlZyhkZCwgdXJfcmN2ZWdyaW5kZXhoZWFkLCB2YWwsIGN0eHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzIyMC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzIyMC5jCmluZGV4IGRlNzk5ZjEuLjc0ZmUwMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTcyMjAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MjIwLmMKQEAgLTIxMTEsNyArMjExMSw3IEBACiAJLyoKIAkgKiBLZWVwIGNoaXAgZnJvbSBiZWluZyBhY2Nlc3NlZCB1bnRpbCB3ZSBhcmUgcmVhZHkuICBVc2UKIAkgKiB3cml0ZXEoKSBkaXJlY3RseSwgdG8gYWxsb3cgdGhlIHdyaXRlIGV2ZW4gdGhvdWdoIFFJQl9QUkVTRU5UCi0JICogaXNudCcgc2V0LgorCSAqIGlzbid0JyBzZXQuCiAJICovCiAJZGQtPmZsYWdzICY9IH4oUUlCX0lOSVRURUQgfCBRSUJfUFJFU0VOVCk7CiAJZGQtPmludF9jb3VudGVyID0gMDsgLyogc28gd2UgY2hlY2sgaW50ZXJydXB0cyB3b3JrIGFnYWluICovCkBAIC0yNDc5LDcgKzI0NzksNyBAQAogCQkgKiB3ZSBjb21tYW5kIHRoZSBsaW5rIGRvd24uICBBcyB3aXRoIHdpZHRoLCBvbmx5IHdyaXRlIHRoZQogCQkgKiBhY3R1YWwgcmVnaXN0ZXIgaWYgdGhlIGxpbmsgaXMgY3VycmVudGx5IGRvd24sIG90aGVyd2lzZQogCQkgKiB0YWtlcyBlZmZlY3Qgb24gbmV4dCBsaW5rIGNoYW5nZS4gIFNpbmNlIHNldHRpbmcgaXMgYmVpbmcKLQkJICogZXhwbGljdGx5IHJlcXVlc3RlZCAodmlhIE1BRCBvciBzeXNmcyksIGNsZWFyIGF1dG9uZWcKKwkJICogZXhwbGljaXRseSByZXF1ZXN0ZWQgKHZpYSBNQUQgb3Igc3lzZnMpLCBjbGVhciBhdXRvbmVnCiAJCSAqIGZhaWx1cmUgc3RhdHVzIGlmIHNwZWVkIGF1dG9uZWcgaXMgZW5hYmxlZC4KIAkJICovCiAJCXBwZC0+bGlua19zcGVlZF9lbmFibGVkID0gdmFsOwpAQCAtMjc3OCw3ICsyNzc4LDcgQEAKIAkJICogSW5pdCB0aGUgY29udGV4dCByZWdpc3RlcnMgYWxzbzsgaWYgd2Ugd2VyZQogCQkgKiBkaXNhYmxlZCwgdGFpbCBhbmQgaGVhZCBzaG91bGQgYm90aCBiZSB6ZXJvCiAJCSAqIGFscmVhZHkgZnJvbSB0aGUgZW5hYmxlLCBidXQgc2luY2Ugd2UgZG9uJ3QKLQkJICoga25vdywgd2UgaGF2ZSB0byBkbyBpdCBleHBsaWN0bHkuCisJCSAqIGtub3csIHdlIGhhdmUgdG8gZG8gaXQgZXhwbGljaXRseS4KIAkJICovCiAJCXZhbCA9IHFpYl9yZWFkX3VyZWczMihkZCwgdXJfcmN2ZWdyaW5kZXh0YWlsLCBjdHh0KTsKIAkJcWliX3dyaXRlX3VyZWcoZGQsIHVyX3JjdmVncmluZGV4aGVhZCwgdmFsLCBjdHh0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTczMjIuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTczMjIuYwppbmRleCA0YTJkMjFlLi41NWRlM2NmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MzIyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jCkBAIC0zMjk5LDcgKzMyOTksNyBAQAogCS8qCiAJICogS2VlcCBjaGlwIGZyb20gYmVpbmcgYWNjZXNzZWQgdW50aWwgd2UgYXJlIHJlYWR5LiAgVXNlCiAJICogd3JpdGVxKCkgZGlyZWN0bHksIHRvIGFsbG93IHRoZSB3cml0ZSBldmVuIHRob3VnaCBRSUJfUFJFU0VOVAotCSAqIGlzbnQnIHNldC4KKwkgKiBpc24ndCcgc2V0LgogCSAqLwogCWRkLT5mbGFncyAmPSB+KFFJQl9JTklUVEVEIHwgUUlCX1BSRVNFTlQgfCBRSUJfQkFESU5UUik7CiAJZGQtPmZsYWdzIHw9IFFJQl9ET0lOR19SRVNFVDsKQEAgLTM3MjcsNyArMzcyNyw3IEBACiAJCS8qCiAJCSAqIEFzIHdpdGggd2lkdGgsIG9ubHkgd3JpdGUgdGhlIGFjdHVhbCByZWdpc3RlciBpZiB0aGUKIAkJICogbGluayBpcyBjdXJyZW50bHkgZG93biwgb3RoZXJ3aXNlIHRha2VzIGVmZmVjdCBvbiBuZXh0Ci0JCSAqIGxpbmsgY2hhbmdlLiAgU2luY2Ugc2V0dGluZyBpcyBiZWluZyBleHBsaWN0bHkgcmVxdWVzdGVkCisJCSAqIGxpbmsgY2hhbmdlLiAgU2luY2Ugc2V0dGluZyBpcyBiZWluZyBleHBsaWNpdGx5IHJlcXVlc3RlZAogCQkgKiAodmlhIE1BRCBvciBzeXNmcyksIGNsZWFyIGF1dG9uZWcgZmFpbHVyZSBzdGF0dXMgaWYgc3BlZWQKIAkJICogYXV0b25lZyBpcyBlbmFibGVkLgogCQkgKi8KQEAgLTQxNjMsNyArNDE2Myw3IEBACiAJCSAqIEluaXQgdGhlIGNvbnRleHQgcmVnaXN0ZXJzIGFsc287IGlmIHdlIHdlcmUKIAkJICogZGlzYWJsZWQsIHRhaWwgYW5kIGhlYWQgc2hvdWxkIGJvdGggYmUgemVybwogCQkgKiBhbHJlYWR5IGZyb20gdGhlIGVuYWJsZSwgYnV0IHNpbmNlIHdlIGRvbid0Ci0JCSAqIGtub3csIHdlIGhhdmUgdG8gZG8gaXQgZXhwbGljdGx5LgorCQkgKiBrbm93LCB3ZSBoYXZlIHRvIGRvIGl0IGV4cGxpY2l0bHkuCiAJCSAqLwogCQl2YWwgPSBxaWJfcmVhZF91cmVnMzIoZGQsIHVyX3JjdmVncmluZGV4dGFpbCwgY3R4dCk7CiAJCXFpYl93cml0ZV91cmVnKGRkLCB1cl9yY3ZlZ3JpbmRleGhlYWQsIHZhbCwgY3R4dCk7CkBAIC03NDgzLDcgKzc0ODMsNyBAQAogCS8qICAgICAgIEJhc2VsaW5lIFdhbmRlciBDb3JyZWN0aW9uIEdhaW4gWzEzOjQtMF0gKGxlYXZlIGFzIGRlZmF1bHQpICovCiAJLyogICAgICAgQmFzZWxpbmUgV2FuZGVyIENvcnJlY3Rpb24gR2FpbiBbMzo3LTVdIChsZWF2ZSBhcyBkZWZhdWx0KSAqLwogCS8qICAgICAgIERhdGEgUmF0ZSBTZWxlY3QgWzU6Ny02XSAobGVhdmUgYXMgZGVmYXVsdCkgKi8KLQkvKiAgICAgICBSWCBQYXJyYWxlbCBXb3JkIFdpZHRoIFszOjEwLThdIChsZWF2ZSBhcyBkZWZhdWx0KSAqLworCS8qICAgICAgIFJYIFBhcmFsbGVsIFdvcmQgV2lkdGggWzM6MTAtOF0gKGxlYXZlIGFzIGRlZmF1bHQpICovCiAKIAkvKiBSWCBSRVNUICovCiAJLyogICAgICAgU2luZ2xlLSBvciBNdWx0aS1jaGFubmVsIHJlc2V0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pbml0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pbml0LmMKaW5kZXggZmZlZmI3OC4uYTAxZjNmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaW5pdC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2luaXQuYwpAQCAtMzQ2LDcgKzM0Niw3IEBACiAgKiBAZGQ6IHRoZSBxbG9naWNfaWIgZGV2aWNlCiAgKgogICogc2FuaXR5IGNoZWNrIGF0IGxlYXN0IHNvbWUgb2YgdGhlIHZhbHVlcyBhZnRlciByZXNldCwgYW5kCi0gKiBlbnN1cmUgbm8gcmVjZWl2ZSBvciB0cmFuc21pdCAoZXhwbGljdGx5LCBpbiBjYXNlIHJlc2V0CisgKiBlbnN1cmUgbm8gcmVjZWl2ZSBvciB0cmFuc21pdCAoZXhwbGljaXRseSwgaW4gY2FzZSByZXNldAogICogZmFpbGVkCiAgKi8KIHN0YXRpYyBpbnQgaW5pdF9hZnRlcl9yZXNldChzdHJ1Y3QgcWliX2RldmRhdGEgKmRkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfbWFkLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaAppbmRleCAxNDdhZmY5Li43ODQwYWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaApAQCAtNzMsNyArNzMsNyBAQAogCiAJCXN0cnVjdCB7CiAJCQlfX2JlMTYJcmVzZXJ2ZWQ7Ci0JCQlfX2JlMTYJbGlkOwkJLyogTElEIHdoZXJlIGNoYW5nZSBvY2N1cmVkICovCisJCQlfX2JlMTYJbGlkOwkJLyogTElEIHdoZXJlIGNoYW5nZSBvY2N1cnJlZCAqLwogCQkJdTgJcmVzZXJ2ZWQyOwogCQkJdTgJbG9jYWxfY2hhbmdlczsJLyogbG93IGJpdCAtIGxvY2FsIGNoYW5nZXMgKi8KIAkJCV9fYmUzMgluZXdfY2FwX21hc2s7CS8qIG5ldyBjYXBhYmlsaXR5IG1hc2sgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3R3c2kuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3R3c2kuYwppbmRleCA2ZjMxY2E1Li5kZGRlNzJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl90d3NpLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdHdzaS5jCkBAIC00MSw3ICs0MSw3IEBACiAgKiBRTG9naWNfSUIgIlR3byBXaXJlIFNlcmlhbCBJbnRlcmZhY2UiIGRyaXZlci4KICAqIE9yaWdpbmFsbHkgd3JpdHRlbiBmb3IgYSBub3QtcXVpdGUtaTJjIHNlcmlhbCBlZXByb20sIHdoaWNoIGlzCiAgKiBzdGlsbCB1c2VkIG9uIHNvbWUgc3VwcG9ydGVkIGJvYXJkcy4gTGF0ZXIgYm9hcmRzIGhhdmUgYWRkZWQgYQotICogdmFyaWV0eSBvZiBvdGhlciB1c2VzLCBtb3N0IGJvYXJkLXNwZWNpZmljLCBzbyB0ZWggYml0LWJvZmZpbmcKKyAqIHZhcmlldHkgb2Ygb3RoZXIgdXNlcywgbW9zdCBib2FyZC1zcGVjaWZpYywgc28gdGhlIGJpdC1ib2ZmaW5nCiAgKiBwYXJ0IGhhcyBiZWVuIHNwbGl0IG9mZiB0byB0aGlzIGZpbGUsIHdoaWxlIHRoZSBvdGhlciBwYXJ0cwogICogaGF2ZSBiZWVuIG1vdmVkIHRvIGNoaXAtc3BlY2lmaWMgZmlsZXMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdWQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VkLmMKaW5kZXggNGE1MWZkMS4uODI4NjA5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdWQuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91ZC5jCkBAIC0xMTYsNyArMTE2LDcgQEAKIAl9CiAKIAkvKgotCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZWQgdGhlIGRhdGEgZXZlbiBpZiBub3QKKwkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWRlIHRoZSBkYXRhIGV2ZW4gaWYgbm90CiAJICogcHJlc2VudCBvbiB0aGUgd2lyZS4KIAkgKi8KIAlsZW5ndGggPSBzd3FlLT5sZW5ndGg7CkBAIC01MjAsNyArNTIwLDcgQEAKIAkJZ290byBkcm9wOwogCiAJLyoKLQkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWVkIHRoZSBkYXRhIGV2ZW4gaWYgbm90CisJICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VkZSB0aGUgZGF0YSBldmVuIGlmIG5vdAogCSAqIHByZXNlbnQgb24gdGhlIHdpcmUuCiAJICovCiAJd2MuYnl0ZV9sZW4gPSB0bGVuICsgc2l6ZW9mKHN0cnVjdCBpYl9ncmgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdXNlcl9zZG1hLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYwppbmRleCA2NjIwOGJjLi44MjQ0MjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYwpAQCAtMjM5LDcgKzIzOSw3IEBACiB9CiAKIC8qCi0gKiBUcnVuY2F0ZSBsZW5ndGggdG8gcGFnZSBib3VuZHJ5LgorICogVHJ1bmNhdGUgbGVuZ3RoIHRvIHBhZ2UgYm91bmRhcnkuCiAgKi8KIHN0YXRpYyBpbnQgcWliX3VzZXJfc2RtYV9wYWdlX2xlbmd0aCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmgKaW5kZXggZjFkZjAxNS4uMmYwMmFiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5oCkBAIC05MSw3ICs5MSw3IEBACiAjZGVmaW5lIFNJWkVfNEsJKDFVTCA8PCBTSElGVF80SykKICNkZWZpbmUgTUFTS180SwkofihTSVpFXzRLLTEpKQogCi0JCQkJCS8qIHN1cHBvcnQgdXB0byA1MTJLQiBpbiBvbmUgUkRNQSAqLworCQkJCQkvKiBzdXBwb3J0IHVwIHRvIDUxMktCIGluIG9uZSBSRE1BICovCiAjZGVmaW5lIElTQ1NJX0lTRVJfU0dfVEFCTEVTSVpFICAgICAgICAgKDB4ODAwMDAgPj4gU0hJRlRfNEspCiAjZGVmaW5lIElTRVJfREVGX0NNRF9QRVJfTFVOCQkxMjgKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lkZXYuYyBiL2RyaXZlcnMvaW5wdXQvam95ZGV2LmMKaW5kZXggMzE4MmM5Yy4uNTY4OGI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lkZXYuYworKysgYi9kcml2ZXJzL2lucHV0L2pveWRldi5jCkBAIC03NTgsNyArNzU4LDcgQEAKIH0KIAogLyoKLSAqIE1hcmsgZGV2aWNlIG5vbi1leGlzdGFudC4gVGhpcyBkaXNhYmxlcyB3cml0ZXMsIGlvY3RscyBhbmQKKyAqIE1hcmsgZGV2aWNlIG5vbi1leGlzdGVudC4gVGhpcyBkaXNhYmxlcyB3cml0ZXMsIGlvY3RscyBhbmQKICAqIHByZXZlbnRzIG5ldyB1c2VycyBmcm9tIG9wZW5pbmcgdGhlIGRldmljZS4gQWxyZWFkeSBwb3N0ZWQKICAqIGJsb2NraW5nIHJlYWRzIHdpbGwgc3RheSwgaG93ZXZlciBuZXcgb25lcyB3aWxsIGZhaWwuCiAgKi8KQEAgLTc3Nyw3ICs3NzcsNyBAQAogCWpveWRldl9oYW5ndXAoam95ZGV2KTsKIAlqb3lkZXZfcmVtb3ZlX2NocmRldihqb3lkZXYpOwogCi0JLyogam95ZGV2IGlzIG1hcmtlZCBkZWFkIHNvIG5vb25lIGVsc2UgYWNjZXNzZXMgam95ZGV2LT5vcGVuICovCisJLyogam95ZGV2IGlzIG1hcmtlZCBkZWFkIHNvIG5vIG9uZSBlbHNlIGFjY2Vzc2VzIGpveWRldi0+b3BlbiAqLwogCWlmIChqb3lkZXYtPm9wZW4pCiAJCWlucHV0X2Nsb3NlX2RldmljZShoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9hM2QuYyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svYTNkLmMKaW5kZXggZDI1OWI0MS4uMTYzOWFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9hM2QuYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2EzZC5jCkBAIC0zLDcgKzMsNyBAQAogICovCiAKIC8qCi0gKiBGUC1HYW1pbmcgQXNzYXNpbiAzRCBqb3lzdGljayBkcml2ZXIgZm9yIExpbnV4CisgKiBGUC1HYW1pbmcgQXNzYXNzaW4gM0Qgam95c3RpY2sgZHJpdmVyIGZvciBMaW51eAogICovCiAKIC8qCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+CiAKLSNkZWZpbmUgRFJJVkVSX0RFU0MJIkZQLUdhbWluZyBBc3Nhc2luIDNEIGpveXN0aWNrIGRyaXZlciIKKyNkZWZpbmUgRFJJVkVSX0RFU0MJIkZQLUdhbWluZyBBc3Nhc3NpbiAzRCBqb3lzdGljayBkcml2ZXIiCiAKIE1PRFVMRV9BVVRIT1IoIlZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHVjdy5jej4iKTsKIE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2RhdmluY2lfa2V5c2Nhbi5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9kYXZpbmNpX2tleXNjYW4uYwppbmRleCBhOTFlZTk0Li5jZDg5ZDE3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9kYXZpbmNpX2tleXNjYW4uYworKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2RhdmluY2lfa2V5c2Nhbi5jCkBAIC01LDcgKzUsNyBAQAogICoKICAqIEF1dGhvcjogTWlndWVsIEFndWlsYXIgPG1pZ3VlbC5hZ3VpbGFyQHJpZGdlcnVuLmNvbT4KICAqCi0gKiBJbnRpYWwgQ29kZTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgorICogSW5pdGlhbCBDb2RlOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC5jIGIvZHJpdmVycy9pbnB1dC9taXNjL2FkeGwzNHguYwppbmRleCBkZTU5MDBkLi4xNDRkZGJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9hZHhsMzR4LmMKQEAgLTcxNiw3ICs3MTYsNyBAQAogCXBkYXRhID0gZGV2LT5wbGF0Zm9ybV9kYXRhOwogCWlmICghcGRhdGEpIHsKIAkJZGV2X2RiZyhkZXYsCi0JCQkiTm8gcGxhdGZyb20gZGF0YTogVXNpbmcgZGVmYXVsdCBpbml0aWFsaXphdGlvblxuIik7CisJCQkiTm8gcGxhdGZvcm0gZGF0YTogVXNpbmcgZGVmYXVsdCBpbml0aWFsaXphdGlvblxuIik7CiAJCXBkYXRhID0gJmFkeGwzNHhfZGVmYXVsdF9pbml0OwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMgYi9kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYwppbmRleCBhOTNjNTI1Li5mYzYyMjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYworKysgYi9kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYwpAQCAtMzEyLDcgKzMxMiw3IEBACiAJCQlyZW1vdGUtPmRhdGEudGVzdGVyID0gcmVtb3RlLT5kYXRhLnRlc3RlciA+PiA1OwogCQkJcmVtb3RlLT5kYXRhLmJpdHNfbGVmdCAtPSA1OwogCQl9IGVsc2UgewotCQkJZXJyKCJCYWQgbWVzc2FnZSByZWNpZXZlZCwgbm8gc3RvcCBiaXQgZm91bmQuXG4iKTsKKwkJCWVycigiQmFkIG1lc3NhZ2UgcmVjZWl2ZWQsIG5vIHN0b3AgYml0IGZvdW5kLlxuIik7CiAJCX0KIAogCQlkZXZfZGJnKCZyZW1vdGUtPnVkZXYtPmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy93aXN0cm9uX2J0bnMuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy93aXN0cm9uX2J0bnMuYwppbmRleCAxMjUwMWRlLi41MmI0MTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2Mvd2lzdHJvbl9idG5zLmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3dpc3Ryb25fYnRucy5jCkBAIC0yNzQsNyArMjc0LDcgQEAKIAl7IEtFX0JMVUVUT09USCwgMHgzMCB9LCAgICAgICAgICAgICAgICAgICAgICAvKiBGbitGMTAgKi8KIAl7IEtFX0tFWSwgICAgICAgMHgzMSwge0tFWV9NQUlMfSB9LCAgICAgICAgICAvKiBtYWlsIGJ1dHRvbiAqLwogCXsgS0VfS0VZLCAgICAgICAweDM2LCB7S0VZX1dXV30gfSwgICAgICAgICAgIC8qIHd3dyBidXR0b24gKi8KLQl7IEtFX1dJRkksICAgICAgMHg3OCB9LCAgICAgICAgICAgICAgICAgICAgICAvKiBzYXRlbGl0ZSBkaXNoIGJ1dHRvbiAqLworCXsgS0VfV0lGSSwgICAgICAweDc4IH0sICAgICAgICAgICAgICAgICAgICAgIC8qIHNhdGVsbGl0ZSBkaXNoIGJ1dHRvbiAqLwogCXsgS0VfRU5ELCAgICAgICAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvYmNtNTk3NC5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9iY201OTc0LmMKaW5kZXggM2FlYWQ5MS4uMzEyNjk4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9iY201OTc0LmMKKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9iY201OTc0LmMKQEAgLTYzOSw3ICs2MzksNyBAQAogICogZGV2aWNlLCByZXN1bHRpbmcgaW4gdHJhY2twYWQgbWFsZnVuY3Rpb24gdW5kZXIgY2VydGFpbgogICogY2lyY3Vtc3RhbmNlcy4gVG8gZ2V0IGFyb3VuZCB0aGlzIHByb2JsZW0sIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQogICogZXhhbXBsZSB0aGF0IHV0aWxpemVzIHRoZSBVU0JfUVVJUktfUkVTRVRfUkVTVU1FIHF1aXJrIGluIG9yZGVyIHRvCi0gKiByZWNpZXZlIGEgcmVzZXRfcmVzdW1lIHJlcXVlc3QgcmF0aGVyIHRoYW4gdGhlIG5vcm1hbCByZXN1bWUuCisgKiByZWNlaXZlIGEgcmVzZXRfcmVzdW1lIHJlcXVlc3QgcmF0aGVyIHRoYW4gdGhlIG5vcm1hbCByZXN1bWUuCiAgKiBTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgcmVzZXRfcmVzdW1lIGlzIGVxdWFsIHRvIG1vZGUgc3dpdGNoCiAgKiBwbHVzIHN0YXJ0X3RyYWZmaWMsIGl0IHNlZW1zIGVhc2llciB0byBhbHdheXMgZG8gdGhlIHN3aXRjaCB3aGVuCiAgKiBzdGFydGluZyB0cmFmZmljIG9uIHRoZSBkZXZpY2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljc19pMmMuYyBiL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCmluZGV4IGY2YWEyNmQuLmNiYTNjODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCkBAIC00NjIsNyArNDYyLDcgQEAKIAkgKiBXaGlsZSBpbnRlcnJ1cHQgZHJpdmVuLCB0aGVyZSBpcyBubyByZWFsIG5lZWQgdG8gcG9sbCB0aGUgZGV2aWNlLgogCSAqIEJ1dCB0b3VjaHBhZHMgYXJlIHZlcnkgc2Vuc2l0aXZlLCBzbyB0aGVyZSBjb3VsZCBiZSBlcnJvcnMKIAkgKiByZWxhdGVkIHRvIHBoeXNpY2FsIGVudmlyb25tZW50IGFuZCB0aGUgYXR0ZW50aW9uIGxpbmUgaXNuJ3QKLQkgKiBuZWNjZXNhcmlseSBhc3NlcnRlZC4gSW4gc3VjaCBjYXNlIHdlIGNhbiBsb3NlIHRoZSB0b3VjaHBhZC4KKwkgKiBuZWNlc3NhcmlseSBhc3NlcnRlZC4gSW4gc3VjaCBjYXNlIHdlIGNhbiBsb3NlIHRoZSB0b3VjaHBhZC4KIAkgKiBXZSBwb2xsIHRoZSBkZXZpY2Ugb25jZSBpbiBUSFJFQURfSVJRX1NMRUVQX1NFQ1MgYW5kCiAJICogaWYgZXJyb3IgaXMgZGV0ZWN0ZWQsIHdlIHRyeSB0byByZXNldCBhbmQgcmVjb25maWd1cmUgdGhlIHRvdWNocGFkLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9tb3VzZS92c3h4eGFhLmMgYi9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYwppbmRleCBiZjJjMGM4Li5lYjlhM2NmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYworKysgYi9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYwpAQCAtMzM0LDcgKzMzNCw3IEBACiAJICogTTogbWFudWZhY3R1cmVyIGxvY2F0aW9uIGNvZGUKIAkgKiBSOiByZXZpc2lvbiBjb2RlCiAJICogRTogRXJyb3IgY29kZS4gSWYgaXQncyBpbiB0aGUgcmFuZ2Ugb2YgMHgwMC4uMHgxZiwgb25seSBzb21lCi0JICogICAgbWlub3IgcHJvYmxlbSBvY2N1cmVkLiBFcnJvcnMgPj0gMHgyMCBhcmUgY29uc2lkZXJlZCBiYWQKKwkgKiAgICBtaW5vciBwcm9ibGVtIG9jY3VycmVkLiBFcnJvcnMgPj0gMHgyMCBhcmUgY29uc2lkZXJlZCBiYWQKIAkgKiAgICBhbmQgdGhlIGRldmljZSBtYXkgbm90IHdvcmsgcHJvcGVybHkuLi4KIAkgKiBEOiA8MDAxMD4gPT0gbW91c2UsIDwwMTAwPiA9PSB0YWJsZXQKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaHBfc2RjLmMgYi9kcml2ZXJzL2lucHV0L3NlcmlvL2hwX3NkYy5jCmluZGV4IDhjMGI1MWMuLjQyMjA2MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaHBfc2RjLmMKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9ocF9zZGMuYwpAQCAtOTU1LDcgKzk1NSw3IEBACiAJSU5JVF9ERUxBWUVEX1dPUksoJm1vZHVsZWxvYWRlcl93b3JrLCByZXF1ZXN0X21vZHVsZV9kZWxheWVkKTsKIAogCXJldCA9IGhwX3NkY19pbml0KCk7Ci0JLyogYWZ0ZXIgc3VjY2Vzc2Z1bGwgaW5pdGlhbGl6YXRpb24gZ2l2ZSBTREMgc29tZSB0aW1lIHRvIHNldHRsZQorCS8qIGFmdGVyIHN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24gZ2l2ZSBTREMgc29tZSB0aW1lIHRvIHNldHRsZQogCSAqIGFuZCB0aGVuIGxvYWQgdGhlIGhwX3NkY19tbGMgdXBwZXIgbGF5ZXIgZHJpdmVyICovCiAJaWYgKCFyZXQpCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmbW9kdWxlbG9hZGVyX3dvcmssCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3NlcmlvL3hpbGlueF9wczIuYyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8veGlsaW54X3BzMi5jCmluZGV4IDc1NDBiYWYuLjgwYmFhNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8veGlsaW54X3BzMi5jCisrKyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8veGlsaW54X3BzMi5jCkBAIC0yMjUsNyArMjI1LDcgQEAKIC8qKgogICogeHBzMl9vZl9wcm9iZSAtIHByb2JlIG1ldGhvZCBmb3IgdGhlIFBTLzIgZGV2aWNlLgogICogQG9mX2RldjoJcG9pbnRlciB0byBPRiBkZXZpY2Ugc3RydWN0dXJlCi0gKiBAbWF0Y2g6CXBvaW50ZXIgdG8gdGhlIHN0dWN0dXJlIHVzZWQgZm9yIG1hdGNoaW5nIGEgZGV2aWNlCisgKiBAbWF0Y2g6CXBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZSB1c2VkIGZvciBtYXRjaGluZyBhIGRldmljZQogICoKICAqIFRoaXMgZnVuY3Rpb24gcHJvYmVzIHRoZSBQUy8yIGRldmljZSBpbiB0aGUgZGV2aWNlIHRyZWUuCiAgKiBJdCBpbml0aWFsaXplcyB0aGUgZHJpdmVyIGRhdGEgc3RydWN0dXJlIGFuZCB0aGUgaGFyZHdhcmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2ludGVsLW1pZC10b3VjaC5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbnRlbC1taWQtdG91Y2guYwppbmRleCBjMDMwN2IyLi42NmM5NmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2ludGVsLW1pZC10b3VjaC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaW50ZWwtbWlkLXRvdWNoLmMKQEAgLTU0Miw3ICs1NDIsNyBAQAogCSAqIEFEQyBwb3dlciBvbiwgc3RhcnQsIGVuYWJsZSBQRU5ERVQgYW5kIHNldCBsb29wIGRlbGF5CiAJICogQURDIGxvb3AgZGVsYXkgaXMgc2V0IHRvIDQuNSBtcyBhcHByb3hpbWF0ZWx5CiAJICogTG9vcCBkZWxheSBtb3JlIHRoYW4gdGhpcyByZXN1bHRzIGluIGppdHRlciBpbiBhZGMgcmVhZGluZ3MKLQkgKiBTZXR0aW5nIGxvb3AgZGVsYXkgdG8gMCAoY29udGlub3VzIGxvb3ApIGluIE1BWElNIHN0b3BzIFBFTkRFVAorCSAqIFNldHRpbmcgbG9vcCBkZWxheSB0byAwIChjb250aW51b3VzIGxvb3ApIGluIE1BWElNIHN0b3BzIFBFTkRFVAogCSAqIGludGVycnVwdCBnZW5lcmF0aW9uIHNvbWV0aW1lcy4KIAkgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi91Y2IxNDAwX3RzLmMgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3VjYjE0MDBfdHMuYwppbmRleCAwMjhhNTM2Li4zYjViNWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3VjYjE0MDBfdHMuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3VjYjE0MDBfdHMuYwpAQCAtNiw3ICs2LDcgQEAKICAqICBDb3B5cmlnaHQ6CU1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KICAqCiAgKiBTcGxpdGluZyBkb25lIGJ5OiBNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPgotICogSWYgc29tZXRoaW5nIGRvZXNudCB3b3JrIGFuZCBpdCB3b3JrZWQgYmVmb3JlIHNwbGl0aW5nLCBlLW1haWwgbWUsCisgKiBJZiBzb21ldGhpbmcgZG9lc24ndCB3b3JrIGFuZCBpdCB3b3JrZWQgYmVmb3JlIHNwbGl0aW5nLCBlLW1haWwgbWUsCiAgKiBkb250IGJvdGhlciBOaWNvbGFzIHBsZWFzZSA7LSkKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MDUuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzA1LmMKaW5kZXggNmI1YmU3NC4uOThlNjExNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MDUuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcwNS5jCkBAIC0zMDYsNyArMzA2LDcgQEAKIAlkaWcyID0gd20tPmRpZ1syXTsKIAogCWlmIChlbmFibGUpIHsKLQkJLyogY29udGlub3VzIG1vZGUgKi8KKwkJLyogY29udGludW91cyBtb2RlICovCiAJCWlmICh3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwICYmCiAJCSAgICAocmV0ID0gd20tPm1hY2hfb3BzLT5hY2Nfc3RhcnR1cCh3bSkpIDwgMCkKIAkJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMi5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTIuYwppbmRleCA3NDkwYjA1Li4yYmMyZmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMi5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzEyLmMKQEAgLTQxOSw3ICs0MTksNyBAQAogCWRpZzIgPSB3bS0+ZGlnWzJdOwogCiAJaWYgKGVuYWJsZSkgewotCQkvKiBjb250aW5vdXMgbW9kZSAqLworCQkvKiBjb250aW51b3VzIG1vZGUgKi8KIAkJaWYgKHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXApIHsKIAkJCXJldCA9IHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXAod20pOwogCQkJaWYgKHJldCA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMy5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTMuYwppbmRleCAyMzhiNTEzLi43M2VjOTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzEzLmMKQEAgLTQzMSw3ICs0MzEsNyBAQAogCWRpZzMgPSB3bS0+ZGlnWzJdOwogCiAJaWYgKGVuYWJsZSkgewotCQkvKiBjb250aW5vdXMgbW9kZSAqLworCQkvKiBjb250aW51b3VzIG1vZGUgKi8KIAkJaWYgKHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXAgJiYKIAkJCShyZXQgPSB3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwKHdtKSkgPCAwKQogCQkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205N3h4LWNvcmUuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205N3h4LWNvcmUuYwppbmRleCA2Yjc1YzlmLi41ZGJlNzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTd4eC1jb3JlLmMKKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3eHgtY29yZS5jCkBAIC0zMzUsNyArMzM1LDcgQEAKIAkgKi8KIAlpZiAoIXdtLT5tYWNoX29wcy0+YWNjX2VuYWJsZWQgfHwgd20tPm1hY2hfb3BzLT5hY2NfcGVuX2Rvd24pIHsKIAkJaWYgKHdtLT5wZW5faXNfZG93biAmJiAhcGVuX3dhc19kb3duKSB7Ci0JCQkvKiBEYXRhIGlzIG5vdCBhdmFpbGlhYmxlIGltbWVkaWF0ZWx5IG9uIHBlbiBkb3duICovCisJCQkvKiBEYXRhIGlzIG5vdCBhdmFpbGFibGUgaW1tZWRpYXRlbHkgb24gcGVuIGRvd24gKi8KIAkJCXF1ZXVlX2RlbGF5ZWRfd29yayh3bS0+dHNfd29ya3EsICZ3bS0+dHNfcmVhZGVyLCAxKTsKIAkJfQogCkBAIC0zNTQsNyArMzU0LDcgQEAKICAqIENvZGVjIFBFTkRPV04gaXJxIGhhbmRsZXIKICAqCiAgKiBXZSBoYXZlIHRvIGRpc2FibGUgdGhlIGNvZGVjIGludGVycnVwdCBpbiB0aGUgaGFuZGxlciBiZWNhdXNlIGl0Ci0gKiBjYW4gdGFrZSB1cHRvIDFtcyB0byBjbGVhciB0aGUgaW50ZXJydXB0IHNvdXJjZS4gV2Ugc2NoZWR1bGUgYSB0YXNrCisgKiBjYW4gdGFrZSB1cCB0byAxbXMgdG8gY2xlYXIgdGhlIGludGVycnVwdCBzb3VyY2UuIFdlIHNjaGVkdWxlIGEgdGFzawogICogaW4gYSB3b3JrIHF1ZXVlIHRvIGRvIHRoZSBhY3R1YWwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY2hpcC4gIFRoZQogICogaW50ZXJydXB0IGlzIHRoZW4gZW5hYmxlZCBhZ2FpbiBpbiB0aGUgc2xvdyBoYW5kbGVyIHdoZW4gdGhlIHNvdXJjZQogICogaGFzIGJlZW4gY2xlYXJlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9kaXZhY2FwaS5oIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2RpdmFjYXBpLmgKaW5kZXggOWY1YjY4MC4uZTMzMGRhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2RpdmFjYXBpLmgKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2RpdmFjYXBpLmgKQEAgLTY3Myw3ICs2NzMsNyBAQAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIGF1eGlsbGlhcnkgc3RhdGVzIGZvciBzdXBwbGVtZW50YXJ5IHNlcnZpY2VzICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGF1eGlsaWFyeSBzdGF0ZXMgZm9yIHN1cHBsZW1lbnRhcnkgc2VydmljZXMgICAgICAgICAgICAgICAgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjZGVmaW5lIElETEUgICAgICAgICAgICAgICAgMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2lvLmggYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vaW8uaAppbmRleCAwYzZjNjUwLi5hNmYxNzU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vaW8uaAorKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vaW8uaApAQCAtNjAsNyArNjAsNyBAQAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogc3RydWN0IF9JU0ROX0FEQVBURVIgewogIHZvaWQgICAgICAgICAgICAgKCogRElSZXF1ZXN0KShQSVNETl9BREFQVEVSLCBFTlRJVFkgKikgOwotIGludCAgICAgICAgICAgICAgICAgU3RhdGUgOyAvKiBmcm9tIE5UNCAxLnNydiwgYSBnb29kIGlkZWEsIGJ1dCAgYSBwb29yIGFjaGlldm1lbnQgKi8KKyBpbnQgICAgICAgICAgICAgICAgIFN0YXRlIDsgLyogZnJvbSBOVDQgMS5zcnYsIGEgZ29vZCBpZGVhLCBidXQgIGEgcG9vciBhY2hpZXZlbWVudCAqLwogIGludCAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZWQgOwogIGludCAgICAgICAgIFJlZ2lzdGVyZWRXaXRoRGlkZCA7CiAgaW50ICAgICAgICAgICAgICAgICBVbmF2YWlsYWJsZSA7ICAvKiBjYWxsYmFjayBmdW5jdGlvbiBwb3NzaWJsZT8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9tZXNzYWdlLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vbWVzc2FnZS5jCmluZGV4IDM0MWVmMTcuLjhjNWM1NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9tZXNzYWdlLmMKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL21lc3NhZ2UuYwpAQCAtMjYzOSw3ICsyNjM5LDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIC8qIGxvY2FsIHJlcGx5IGlmIGFzc2lnbiB1bnN1Y2Nlc3NmdWxsCisgICAgICAvKiBsb2NhbCByZXBseSBpZiBhc3NpZ24gdW5zdWNjZXNzZnVsCiAgICAgICAgICBvciBCMyBwcm90b2NvbCBhbGxvd3Mgb25seSBvbmUgbGF5ZXIgMyBjb25uZWN0aW9uCiAgICAgICAgICAgIGFuZCBhbHJlYWR5IGNvbm5lY3RlZAogICAgICAgICAgICAgIG9yIEIyIHByb3RvY29sIG5vdCBhbnkgTEFQRApAQCAtODE4OSw3ICs4MTg5LDcgQEAKICAgICAgIGRsY1sgMF0gPSAxNTsKICAgICAgIGlmKGIyX2NvbmZpZy0+bGVuZ3RoID49IDgpIHsgLyogUElBRlMgY29udHJvbCBhYmlsaXRpZXMgKi8KICAgICAgICAgZGxjWyA3XSA9IDEwOyAKLSAgICAgICAgZGxjWzE2XSA9IDI7IC8qIExlbmd0aCBvZiBQSUFGUyBleHRlbnRpb24gKi8KKyAgICAgICAgZGxjWzE2XSA9IDI7IC8qIExlbmd0aCBvZiBQSUFGUyBleHRlbnNpb24gKi8KICAgICAgICAgZGxjWzE3XSA9IFBJQUZTX1VEQVRBX0FCSUxJVElFUzsgLyogY29udHJvbCAoVURBVEEpIGFiaWxpdHkgKi8KICAgICAgICAgZGxjWzE4XSA9IGIyX2NvbmZpZ19wYXJtc1s0XS5pbmZvWzBdOyAvKiB2YWx1ZSAqLwogICAgICAgICBkbGNbIDBdID0gMTg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vcGMuaCBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wYy5oCmluZGV4IDFjNjk0NTcuLmJmNmIwMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wYy5oCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wYy5oCkBAIC03MDEsNyArNzAxLDcgQEAKICNkZWZpbmUgUFJPVENBUF9GUkVFMTIgICAgMHgxMDAwICAvKiBub3QgdXNlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBQUk9UQ0FQX0ZSRUUxMyAgICAweDIwMDAgIC8qIG5vdCB1c2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFBST1RDQVBfRlJFRTE0ICAgIDB4NDAwMCAgLyogbm90IHVzZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgUFJPVENBUF9FWFRFTlNJT04gMHg4MDAwICAvKiB1c2VkIGZvciBmdXR1cmUgZXh0ZW50aW9ucyAgICAgICAgICAqLworI2RlZmluZSBQUk9UQ0FQX0VYVEVOU0lPTiAweDgwMDAgIC8qIHVzZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zICAgICAgICAgICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogKi8KIC8qIE9uaG9vayBkYXRhIHRyYW5zbWlzc2lvbiBFVFMzMDA2NTkwMSAqLwogLyogTWVzc2FnZSBUeXBlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vdW1faWRpLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vdW1faWRpLmMKaW5kZXggNjU2M2RiOS4uYWMwYmRkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL3VtX2lkaS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi91bV9pZGkuYwpAQCAtMzYzLDcgKzM2Myw3IEBACiAKIAkJaWYgKChyZXQgPSAoKmNwX2ZuKSAob3NfaGFuZGxlLCBkc3QsIGRhdGEsIGxlbmd0aCkpID49IDApIHsKIAkJCS8qCi0JCQkgICBBY2tub3dsZWRnZSBvbmx5IGlmIHJlYWQgd2FzIHN1Y2Nlc3NmdWxsCisJCQkgICBBY2tub3dsZWRnZSBvbmx5IGlmIHJlYWQgd2FzIHN1Y2Nlc3NmdWwKIAkJCSAqLwogCQkJZGl2YV9kYXRhX3FfYWNrX3NlZ21lbnQ0cmVhZChxKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY211bHRpLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjbXVsdGkuYwppbmRleCA0ZTM3ODBkLi5mNmYzYzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjbXVsdGkuYworKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjbXVsdGkuYwpAQCAtMTE4LDcgKzExOCw3IEBACiAgKgktPiBTZWUgaGZjX211bHRpLmggZm9yIEhGQ19JT19NT0RFXyogdmFsdWVzCiAgKglCeSBkZWZhdWx0LCB0aGUgSU8gbW9kZSBpcyBwY2kgbWVtb3J5IElPIChNRU1JTykuCiAgKglTb21lIGNhcmRzIHJlcXVpcmUgc3BlY2lmaWMgSU8gbW9kZSwgc28gaXQgY2Fubm90IGJlIGNoYW5nZWQuCi0gKglJdCBtYXkgYmUgdXNlZnVsbCB0byBzZXQgSU8gbW9kZSB0byByZWdpc3RlciBpbyAoUkVHSU8pIHRvIHNvbHZlCisgKglJdCBtYXkgYmUgdXNlZnVsIHRvIHNldCBJTyBtb2RlIHRvIHJlZ2lzdGVyIGlvIChSRUdJTykgdG8gc29sdmUKICAqCVBDSSBicmlkZ2UgcHJvYmxlbXMuCiAgKglJZiB1bnN1cmUsIGRvbid0IGdpdmUgdGhpcyBwYXJhbWV0ZXIuCiAgKgpAQCAtOTAzLDcgKzkwMyw3IEBACiAvKgogICogU3BlZWNoIERlc2lnbiByZXN5bmMgZmVhdHVyZQogICogTk9URTogVGhpcyBpcyBjYWxsZWQgc29tZXRpbWVzIG91dHNpZGUgaW50ZXJydXB0IGhhbmRsZXIuCi0gKiBXZSBtdXN0IGxvY2sgaXJxc2F2ZSwgc28gbm8gb3RoZXIgaW50ZXJydXB0IChvdGhlciBjYXJkKSB3aWxsIG9jY3VyciEKKyAqIFdlIG11c3QgbG9jayBpcnFzYXZlLCBzbyBubyBvdGhlciBpbnRlcnJ1cHQgKG90aGVyIGNhcmQpIHdpbGwgb2NjdXIhCiAgKiBBbHNvIG11bHRpcGxlIGludGVycnVwdHMgbWF5IG5lc3QsIHNvIG11c3QgbG9jayBlYWNoIGFjY2VzcyAobGlzdHMsIGNhcmQpIQogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9oZmNwY2kuYyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9oZmNwY2kuYwppbmRleCAxNWQzMjNiLi40MzQzYWJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjcGNpLmMKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY3BjaS5jCkBAIC0yNzIsNyArMjcyLDcgQEAKIAkgKiBELSBhbmQgbW9uaXRvci9DSSBjaGFubmVsIGFyZSBub3QgZW5hYmxlZAogCSAqIFNUSU8xIGlzIHVzZWQgYXMgb3V0cHV0IGZvciBkYXRhLCBCMStCMiBmcm9tIFNULT5JT00rSEZDCiAJICogU1RJTzIgaXMgdXNlZCBhcyBkYXRhIGlucHV0LCBCMStCMiBmcm9tIElPTS0+U1QKLQkgKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW5vdXMgMXMKKwkgKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW51b3VzIDFzCiAJICogVGhlIElPTSBzbG90cyBhcmUgYWx3YXlzIGVuYWJsZWQKIAkgKi8KIAlpZiAodGVzdF9iaXQoSEZDX0NGR19QQ00sICZoYy0+Y2ZnKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19wY2kuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfcGNpLmMKaW5kZXggMzE0NzAyMC4uMGNiMDU0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19wY2kuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3BjaS5jCkBAIC0xNDYsNyArMTQ2LDcgQEAKIAkvKiBELSBhbmQgbW9uaXRvci9DSSBjaGFubmVsIGFyZSBub3QgZW5hYmxlZCAqLwogCS8qIFNUSU8xIGlzIHVzZWQgYXMgb3V0cHV0IGZvciBkYXRhLCBCMStCMiBmcm9tIFNULT5JT00rSEZDICovCiAJLyogU1RJTzIgaXMgdXNlZCBhcyBkYXRhIGlucHV0LCBCMStCMiBmcm9tIElPTS0+U1QgKi8KLQkvKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW5vdXMgMXMgKi8KKwkvKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW51b3VzIDFzICovCiAJLyogVGhlIElPTSBzbG90cyBhcmUgYWx3YXlzIGVuYWJsZWQgKi8KIAljcy0+aHcuaGZjcGNpLmNvbm4gPSAweDM2OwkvKiBzZXQgZGF0YSBmbG93IGRpcmVjdGlvbnMgKi8KIAlXcml0ZV9oZmMoY3MsIEhGQ1BDSV9DT05ORUNULCBjcy0+aHcuaGZjcGNpLmNvbm4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19zeC5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19zeC5jCmluZGV4IDEyMzViNzEuLjE1NmQ3YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfc3guYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3N4LmMKQEAgLTM5OSw3ICszOTksNyBAQAogCS8qIEQtIGFuZCBtb25pdG9yL0NJIGNoYW5uZWwgYXJlIG5vdCBlbmFibGVkICovCiAJLyogU1RJTzEgaXMgdXNlZCBhcyBvdXRwdXQgZm9yIGRhdGEsIEIxK0IyIGZyb20gU1QtPklPTStIRkMgKi8KIAkvKiBTVElPMiBpcyB1c2VkIGFzIGRhdGEgaW5wdXQsIEIxK0IyIGZyb20gSU9NLT5TVCAqLwotCS8qIFNUIEItY2hhbm5lbCBzZW5kIGRpc2FibGVkIC0+IGNvbnRpbm91cyAxcyAqLworCS8qIFNUIEItY2hhbm5lbCBzZW5kIGRpc2FibGVkIC0+IGNvbnRpbnVvdXMgMXMgKi8KIAkvKiBUaGUgSU9NIHNsb3RzIGFyZSBhbHdheXMgZW5hYmxlZCAqLwogCWNzLT5ody5oZmNzeC5jb25uID0gMHgzNjsJLyogc2V0IGRhdGEgZmxvdyBkaXJlY3Rpb25zICovCiAJV3JpdGVfaGZjKGNzLCBIRkNTWF9DT05ORUNULCBjcy0+aHcuaGZjc3guY29ubik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3VzYi5oIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY191c2IuaAppbmRleCBlNzlmNTY1Li4yZjU4MWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3VzYi5oCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfdXNiLmgKQEAgLTEyNiw3ICsxMjYsNyBAQAogCiAKIC8qCi0gKiBkZXZpY2UgZGVwZW5kYW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgZGlmZmVyZW50CisgKiBkZXZpY2UgZGVwZW5kZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgZGlmZmVyZW50CiAgKiBJU0ROIFRhJ3MgdXNpbmcgdGhlIEhGQy1TIFVTQiBjaGlwCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2wzZHNzMS5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2wzZHNzMS5jCmluZGV4IGNjNmVlMmQuLjhlMmZkMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9sM2RzczEuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvbDNkc3MxLmMKQEAgLTE1OTUsNyArMTU5NSw3IEBACiAJICogQmVhcmVyIENhcGFiaWxpdGllcwogCSAqLwogCXAgPSBza2ItPmRhdGE7Ci0JLyogb25seSB0aGUgZmlyc3Qgb2NjdXJlbmNlICdsbCBiZSBkZXRlY3RlZCAhICovCisJLyogb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSAnbGwgYmUgZGV0ZWN0ZWQgISAqLwogCWlmICgocCA9IGZpbmRpZShwLCBza2ItPmxlbiwgMHgwNCwgMCkpKSB7CiAJCWlmICgocFsxXSA8IDIpIHx8IChwWzFdID4gMTEpKQogCQkJZXJyID0gMTsKQEAgLTIxNjEsNyArMjE2MSw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIGhhbmRsZSBzcGVjaWFsIGNvbW1hbmRzIGZvciB0aGlzIHByb3RvY29sLiAgKi8KLS8qIEV4YW1wbGVzIGFyZSBjYWxsIGluZGVwZW5kYW50IHNlcnZpY2VzIGxpa2UgKi8KKy8qIEV4YW1wbGVzIGFyZSBjYWxsIGluZGVwZW5kZW50IHNlcnZpY2VzIGxpa2UgKi8KIC8qIHJlbW90ZSBvcGVyYXRpb25zIHdpdGggZHVtbXkgIGNhbGxyZWYuICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHN0YXRpYyBpbnQgbDNkc3MxX2NtZF9nbG9iYWwoc3RydWN0IFBTdGFjayAqc3QsIGlzZG5fY3RybCAqaWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvbDNuaTEuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9sM25pMS5jCmluZGV4IGY5NTg0NDkuLjdiMjI5YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9sM25pMS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9sM25pMS5jCkBAIC0xNDQ5LDcgKzE0NDksNyBAQAogCSAqIEJlYXJlciBDYXBhYmlsaXRpZXMKIAkgKi8KIAlwID0gc2tiLT5kYXRhOwotCS8qIG9ubHkgdGhlIGZpcnN0IG9jY3VyZW5jZSAnbGwgYmUgZGV0ZWN0ZWQgISAqLworCS8qIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2UgJ2xsIGJlIGRldGVjdGVkICEgKi8KIAlpZiAoKHAgPSBmaW5kaWUocCwgc2tiLT5sZW4sIDB4MDQsIDApKSkgewogCQlpZiAoKHBbMV0gPCAyKSB8fCAocFsxXSA+IDExKSkKIAkJCWVyciA9IDE7CkBAIC0yMDE3LDcgKzIwMTcsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBoYW5kbGUgc3BlY2lhbCBjb21tYW5kcyBmb3IgdGhpcyBwcm90b2NvbC4gICovCi0vKiBFeGFtcGxlcyBhcmUgY2FsbCBpbmRlcGVuZGFudCBzZXJ2aWNlcyBsaWtlICovCisvKiBFeGFtcGxlcyBhcmUgY2FsbCBpbmRlcGVuZGVudCBzZXJ2aWNlcyBsaWtlICovCiAvKiByZW1vdGUgb3BlcmF0aW9ucyB3aXRoIGR1bW15ICBjYWxscmVmLiAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdGF0aWMgaW50IGwzbmkxX2NtZF9nbG9iYWwoc3RydWN0IFBTdGFjayAqc3QsIGlzZG5fY3RybCAqaWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvbmpfcy5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L25qX3MuYwppbmRleCAyMzQ0ZTdiLi5hMWI4OTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvbmpfcy5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9ual9zLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQAogCQlyZXR1cm4oMCk7CiAJfQogCS8qIHRoZSBUSjMwMCBhbmQgVEozMjAgbXVzdCBiZSBkZXRlY3RlZCwgdGhlIElSUSBoYW5kbGluZyBpcyBkaWZmZXJlbnQKLQkgKiB1bmZvcnR1bmF0bHkgdGhlIGNoaXBzIHVzZSB0aGUgc2FtZSBkZXZpY2UgSUQsIGJ1dCB0aGUgVEozMjAgaGFzCisJICogdW5mb3J0dW5hdGVseSB0aGUgY2hpcHMgdXNlIHRoZSBzYW1lIGRldmljZSBJRCwgYnV0IHRoZSBUSjMyMCBoYXMKIAkgKiB0aGUgYml0MjAgaW4gc3RhdHVzIFBDSSBjZmcgcmVnaXN0ZXIgc2V0CiAJICovCiAJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldl9uZXRqZXQsIDB4MDQsICZjZmcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV9iLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX2IuYwppbmRleCBlNTZlNWFmLi5lZDRiYzU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX2IuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX2IuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiB9CiAKIC8qCi0gKiBTdGFydCB0cmFuc2ZlcmluZyAoZmxhZ3Mgb3IgZGF0YSkgb24gdGhlIEIgY2hhbm5lbCwgc2luY2UKKyAqIFN0YXJ0IHRyYW5zZmVycmluZyAoZmxhZ3Mgb3IgZGF0YSkgb24gdGhlIEIgY2hhbm5lbCwgc2luY2UKICAqIEZJRk8gY291bnRlcnMgaGFzIGJlZW4gc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUuCiAgKi8KIHN0YXRpYyB2b2lkIHN0NTQ4MUJfc3RhcnRfeGZlcih2b2lkICpjb250ZXh0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV91c2IuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9zdDU0ODFfdXNiLmMKaW5kZXggMTBkNDFjNS4uMTU5ZThmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV91c2IuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX3VzYi5jCkBAIC00NzAsNyArNDcwLDcgQEAKIAogLyoKICAqIERlY29kZSBmcmFtZXMgcmVjZWl2ZWQgb24gdGhlIEIvRCBjaGFubmVsLgotICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgY29udGlub3VzbHkKKyAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGNvbnRpbnVvdXNseQogICogd2l0aCA2NEtiaXQvcyAvIDE2S2JpdC9zIG9mIGRhdGEgYW5kIGhlbmNlIGl0IHdpbGwgYmUgCiAgKiBjYWxsZWQgNTAgdGltZXMgcGVyIHNlY29uZCB3aXRoIDIwIElTT0MgZGVzY3JpcHRvcnMuIAogICogQ2FsbGVkIGF0IGludGVycnVwdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC90ZWxlc19jcy5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L3RlbGVzX2NzLmMKaW5kZXggMjgyYTQ0Ni4uYWEyNWUxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L3RlbGVzX2NzLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L3RlbGVzX2NzLmMKQEAgLTksNyArOSw3IEBACiAgICAgQWxzbyBpbnNwaXJlZCBieSBFTFNBIFBDTUNJQSBkcml2ZXIgCiAgICAgYnkgS2xhdXMgTGljaHRlbndhbGRlciA8TGljaHRlbndhbGRlckBBQ00ub3JnPgogICAgIAotICAgIEV4dGVudGlvbnMgdG8gbmV3IGhpc2F4X3BjbWNpYSBieSBLYXJzdGVuIEtlaWwKKyAgICBFeHRlbnNpb25zIHRvIG5ldyBoaXNheF9wY21jaWEgYnkgS2Fyc3RlbiBLZWlsCiAKICAgICBtaW5vciBjaGFuZ2VzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBrZXJuZWwgMi40LngKICAgICBieSBKYW4uU2NodWJlcnRAR01YLmxpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaHlzZG4vaHlzZG5fc2NoZWQuYyBiL2RyaXZlcnMvaXNkbi9oeXNkbi9oeXNkbl9zY2hlZC5jCmluZGV4IDgxZGI0YTEuLjM2NzRkMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oeXNkbi9oeXNkbl9zY2hlZC5jCisrKyBiL2RyaXZlcnMvaXNkbi9oeXNkbi9oeXNkbl9zY2hlZC5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIC8qIHNlbmQgb25lIGNvbmZpZyBsaW5lIHRvIHRoZSBjYXJkIGFuZCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgYSAqLwogLyogbmVnYXRpdmUgZXJyb3IgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogVGhlIGZ1bmN0aW9uIHdvcmtzIHdpdGggdGltZW91dHMgcGVyaGFwcyBub3QgZ2l2aW5nIHRoZSBncmVhdGVzdCBzcGVlZCAgICAqLwotLyogc2VuZGluZyB0aGUgbGluZSwgYnV0IHRoaXMgc2hvdWxkIGJlIG1lYW5pbmdsZXNzIGJlYWN1c2Ugb25seSBzb21lIGxpbmVzICAqLworLyogc2VuZGluZyB0aGUgbGluZSwgYnV0IHRoaXMgc2hvdWxkIGJlIG1lYW5pbmdsZXNzIGJlY2F1c2Ugb25seSBzb21lIGxpbmVzICAqLwogLyogYXJlIHRvIGJlIHNlbnQgYW5kIHRoaXMgaGFwcGVucyB2ZXJ5IHNlbGRvbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMKaW5kZXggYWZlZWRlNy4uMmE3ZDE3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jCisrKyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYwpAQCAtMTUzMCw3ICsxNTMwLDcgQEAKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcKIAkJCQkiVVBET1dOOiBMaW5lIHByb3RvY29sIG9uIEludGVyZmFjZSAlcywiCiAJCQkJIiBjaGFuZ2VkIHN0YXRlIHRvIGRvd25cbiIsIGxwLT5uZXRkZXYtPmRldi0+bmFtZSk7Ci0JCS8qIHNob3VsZCBzdG9wIHJvdXRpbmcgaGlnaGVyLWxldmVsIGRhdGEgYWNjcm9zcyAqLworCQkvKiBzaG91bGQgc3RvcCByb3V0aW5nIGhpZ2hlci1sZXZlbCBkYXRhIGFjcm9zcyAqLwogCX0gZWxzZSBpZiAoKCFscC0+Y2lzY29fbGluZV9zdGF0ZSkgJiYKIAkJKG15c2VxX2RpZmYgPj0gMCkgJiYgKG15c2VxX2RpZmYgPD0gMikpIHsKIAkJLyogbGluZSBkb3duIC0+IHVwICovCkBAIC0xNTM4LDcgKzE1MzgsNyBAQAogCQlwcmludGsgKEtFUk5fV0FSTklORwogCQkJCSJVUERPV046IExpbmUgcHJvdG9jb2wgb24gSW50ZXJmYWNlICVzLCIKIAkJCQkiIGNoYW5nZWQgc3RhdGUgdG8gdXBcbiIsIGxwLT5uZXRkZXYtPmRldi0+bmFtZSk7Ci0JCS8qIHJlc3RhcnQgcm91dGluZyBoaWdoZXItbGV2ZWwgZGF0YSBhY2Nyb3NzICovCisJCS8qIHJlc3RhcnQgcm91dGluZyBoaWdoZXItbGV2ZWwgZGF0YSBhY3Jvc3MgKi8KIAl9CiAKIAlpZiAobHAtPmNpc2NvX2RlYnNlcmludCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9wcHAuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9wcHAuYwppbmRleCA5ZTgxNjJjLi4xYjAwMmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jCkBAIC0xNTE0LDcgKzE1MTQsNyBAQAogI2RlZmluZSBNUF9MT05HU0VRX01BWEJJVAkoKE1QX0xPTkdTRVFfTUFTSysxKT4+MSkKICNkZWZpbmUgTVBfU0hPUlRTRVFfTUFYQklUCSgoTVBfU0hPUlRTRVFfTUFTSysxKT4+MSkKIAotLyogc2VxdWVuY2Utd3JhcCBzYWZlIGNvbXBhcmlzaW9ucyAoZm9yIGxvbmcgc2VxdWVuY2UpKi8gCisvKiBzZXF1ZW5jZS13cmFwIHNhZmUgY29tcGFyaXNvbnMgKGZvciBsb25nIHNlcXVlbmNlKSovCiAjZGVmaW5lIE1QX0xUKGEsYikJKChhLWIpJk1QX0xPTkdTRVFfTUFYQklUKQogI2RlZmluZSBNUF9MRShhLGIpIAkhKChiLWEpJk1QX0xPTkdTRVFfTUFYQklUKQogI2RlZmluZSBNUF9HVChhLGIpIAkoKGItYSkmTVBfTE9OR1NFUV9NQVhCSVQpCkBAIC0xNzQ2LDcgKzE3NDYsNyBAQAogCQkgKiB0aGVuIG5leHQgZnJhZ21lbnQgc2hvdWxkIGJlIHRoZSBzdGFydCBvZiBuZXcgcmVhc3NlbWJseQogCQkgKiBpZiBzZXF1ZW5jZSBpcyBjb250aWd1b3VzLCBidXQgd2UgaGF2ZW4ndCByZWFzc2VtYmxlZCB5ZXQsCiAJCSAqIGtlZXAgZ29pbmcuCi0JCSAqIGlmIHNlcXVlbmNlIGlzIG5vdCBjb250aWd1b3VzLCBlaXRoZXIgY2xlYXIgZXZlcnl0aW5nCisJCSAqIGlmIHNlcXVlbmNlIGlzIG5vdCBjb250aWd1b3VzLCBlaXRoZXIgY2xlYXIgZXZlcnl0aGluZwogCQkgKiBiZWxvdyBsb3cgd2F0ZXJtYXJrIGFuZCBzZXQgc3RhcnQgdG8gdGhlIG5leHQgZnJhZyBvcgogCQkgKiBjbGVhciBzdGFydCBwdHIuCiAJCSAqLyAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl90dHkuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl90dHkuYwppbmRleCAzZDg4ZjE1Li42MDdkODQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fdHR5LmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3R0eS5jCkBAIC03OTIsNyArNzkyLDcgQEAKIH0KIAogLyogaXNkbl90dHlfcmVzdW1lKCkgdHJpZXMgdG8gcmVzdW1lIGEgc3VzcGVuZGVkIGNhbGwKLSAqIHNldHVwIG9mIHRoZSBsb3dlciBsZXZlbHMgYmVmb3JlIHRoYXQuIHVuZm9ydHVuYXRseSBoZXJlIGlzIG5vCisgKiBzZXR1cCBvZiB0aGUgbG93ZXIgbGV2ZWxzIGJlZm9yZSB0aGF0LiB1bmZvcnR1bmF0ZWx5IGhlcmUgaXMgbm8KICAqIGNoZWNraW5nIGZvciBjb21wYXRpYmlsaXR5IG9mIHVzZWQgcHJvdG9jb2xzIGltcGxlbWVudGVkIGJ5IFE5MzEKICAqIEl0IGRvZXMgdGhlIHNhbWUgdGhpbmdzIGxpa2UgaXNkbl90dHlfZGlhbCwgdGhlIGxhc3QgY29tbWFuZAogICogaXMgZGlmZmVyZW50LCBtYXkgYmUgd2UgY2FuIG1lcmdlIGl0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2lzZG5sb29wL2lzZG5sb29wLmMgYi9kcml2ZXJzL2lzZG4vaXNkbmxvb3AvaXNkbmxvb3AuYwppbmRleCBiOGExMDk4Li5kNDk3ZGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaXNkbmxvb3AvaXNkbmxvb3AuYworKysgYi9kcml2ZXJzL2lzZG4vaXNkbmxvb3AvaXNkbmxvb3AuYwpAQCAtOTU0LDcgKzk1NCw3IEBACiAvKgogICogUHV0IGNvbW1hbmQtc3RyaW5ncyBpbnRvIHRoZSBvZiB0aGUgJ2NhcmQnLiBJbiByZWFsaXR5LCBleGVjdXRlIHRoZW0KICAqIHJpZ2h0IGluIHBsYWNlIGJ5IGNhbGxpbmcgaXNkbmxvb3BfcGFyc2VfY21kKCkuIEFsc28gY29weSBldmVyeQotICogY29tbWFuZCB0byB0aGUgcmVhZCBtZXNzYWdlIHJpbmdidWZmZXIsIHByZWNlZWRpbmcgaXQgd2l0aCBhICc+Jy4KKyAqIGNvbW1hbmQgdG8gdGhlIHJlYWQgbWVzc2FnZSByaW5nYnVmZmVyLCBwcmVjZWRpbmcgaXQgd2l0aCBhICc+Jy4KICAqIFRoZXNlIG1lc2FnZ2VzIGNhbiBiZSByZWFkIGF0IC9kZXYvaXNkbmN0cmwuCiAgKgogICogUGFyYW1ldGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcC5oIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcC5oCmluZGV4IDE4YWY4NjguLjg1NDk0MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3AuaAorKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwLmgKQEAgLTIxLDcgKzIxLDcgQEAKIC8qIG9wdGlvbnMgbWF5IGJlOgogICoKICAqIGJpdCAwID0gdXNlIHVsYXcgaW5zdGVhZCBvZiBhbGF3Ci0gKiBiaXQgMSA9IGVuYWJsZSBoZmMgaGFyZHdhcmUgYWNjZWxsZXJhdGlvbiBmb3IgYWxsIGNoYW5uZWxzCisgKiBiaXQgMSA9IGVuYWJsZSBoZmMgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBhbGwgY2hhbm5lbHMKICAqCiAgKi8KICNkZWZpbmUgRFNQX09QVF9VTEFXCQkoMTw8MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY214LmMgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2NteC5jCmluZGV4IDMwOWJhY2YuLjRkMzk1ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY214LmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jbXguYwpAQCAtMTUxMyw3ICsxNTEzLDcgQEAKIAkvKiAtPiBpZiBlY2hvIGlzIE5PVCBlbmFibGVkICovCiAJaWYgKCFkc3AtPmVjaG8uc29mdHdhcmUpIHsKIAkJLyoKLQkJICogLT4gc3Vic3RyYWN0IHJ4LWRhdGEgZnJvbSBjb25mLWRhdGEsCisJCSAqIC0+IHN1YnRyYWN0IHJ4LWRhdGEgZnJvbSBjb25mLWRhdGEsCiAJCSAqIGlmIHR4LWRhdGEgaXMgYXZhaWxhYmxlLCBtaXgKIAkJICovCiAJCXdoaWxlIChyICE9IHJyICYmIHQgIT0gdHQpIHsKQEAgLTE1NzIsNyArMTU3Miw3IEBACiBzZW5kX3BhY2tldDoKIAkvKgogCSAqIHNlbmQgdHgtZGF0YSBpZiBlbmFibGVkIC0gZG9uJ3QgZmlsdGVyLAotCSAqIGJlY3Vhc2Ugd2Ugd2FudCB3aGF0IHdlIHNlbmQsIG5vdCB3aGF0IHdlIGZpbHRlcmVkCisJICogYmVjYXVzZSB3ZSB3YW50IHdoYXQgd2Ugc2VuZCwgbm90IHdoYXQgd2UgZmlsdGVyZWQKIAkgKi8KIAlpZiAoZHNwLT50eF9kYXRhKSB7CiAJCWlmICh0eF9kYXRhX29ubHkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY29yZS5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jb3JlLmMKaW5kZXggNmY1YjU0OC4uMjg3NzI5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jb3JlLmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jb3JlLmMKQEAgLTExNSw3ICsxMTUsNyBAQAogICoKICAqIFRoZSBDTVggaGFzIHNwZWNpYWwgZnVuY3Rpb25zIGZvciBjb25mZXJlbmNlcyB3aXRoIG9uZSwgdHdvIGFuZCBtb3JlCiAgKiBtZW1iZXJzLiBJdCB3aWxsIGFsbG93IGRpZmZlcmVudCB0eXBlcyBvZiBkYXRhIGZsb3cuIFJlY2VpdmUgYW5kIHRyYW5zbWl0Ci0gKiBkYXRhIHRvL2Zvcm0gdXBwZXIgbGF5ZXIgbWF5IGJlIHN3aXRoZWQgb24vb2ZmIGluZGl2aWR1YWxseSB3aXRob3V0IGxvb3NpbmcKKyAqIGRhdGEgdG8vZm9ybSB1cHBlciBsYXllciBtYXkgYmUgc3dpdGhlZCBvbi9vZmYgaW5kaXZpZHVhbGx5IHdpdGhvdXQgbG9zaW5nCiAgKiBmZWF0dXJlcyBvZiBDTVgsIFRvbmVzIGFuZCBEVE1GLgogICoKICAqIEVjaG8gQ2FuY2VsbGF0aW9uOiBTb21ldGltZXMgd2UgbGlrZSB0byBjYW5jZWwgZWNobyBmcm9tIHRoZSBpbnRlcmZhY2UuCkBAIC0xMjcsOSArMTI3LDkgQEAKICAqCiAgKiBJZiBhbGwgdXNlZCBmZWF0dXJlcyBjYW4gYmUgcmVhbGl6ZWQgaW4gaGFyZHdhcmUsIGFuZCBpZiB0cmFuc21pdCBhbmQvb3IKICAqIHJlY2VpdmUgZGF0YSBpc3QgZGlzYWJsZWQsIHRoZSBjYXJkIG1heSBub3Qgc2VuZC9yZWNlaXZlIGFueSBkYXRhIGF0IGFsbC4KLSAqIE5vdCByZWNlaXZpbmcgaXMgdXNlZnVsbCBpZiBvbmx5IGFubm91bmNlbWVudHMgYXJlIHBsYXllZC4gTm90IHNlbmRpbmcgaXMKLSAqIHVzZWZ1bGwgaWYgYW4gYW5zd2VyaW5nIG1hY2hpbmUgcmVjb3JkcyBhdWRpby4gTm90IHNlbmRpbmcgYW5kIHJlY2VpdmluZyBpcwotICogdXNlZnVsbCBkdXJpbmcgbW9zdCBzdGF0ZXMgb2YgdGhlIGNhbGwuIElmIHN1cHBvcnRlZCBieSBoYXJkd2FyZSwgdG9uZXMKKyAqIE5vdCByZWNlaXZpbmcgaXMgdXNlZnVsIGlmIG9ubHkgYW5ub3VuY2VtZW50cyBhcmUgcGxheWVkLiBOb3Qgc2VuZGluZyBpcworICogdXNlZnVsIGlmIGFuIGFuc3dlcmluZyBtYWNoaW5lIHJlY29yZHMgYXVkaW8uIE5vdCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgaXMKKyAqIHVzZWZ1bCBkdXJpbmcgbW9zdCBzdGF0ZXMgb2YgdGhlIGNhbGwuIElmIHN1cHBvcnRlZCBieSBoYXJkd2FyZSwgdG9uZXMKICAqIHdpbGwgYmUgcGxheWVkIHdpdGhvdXQgY3B1IGxvYWQuIFNtYWxsIFBCWHMgYW5kIE5ULU1vZGUgYXBwbGljYXRpb25zIHdpbGwKICAqIG5vdCBuZWVkIGV4cGVuc2l2ZSBoYXJkd2FyZSB3aGVuIHByb2Nlc3NpbmcgY2FsbHMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9kdG1mLmMgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2R0bWYuYwppbmRleCA5YWUyZDMzLi41YjQ4NGMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2R0bWYuYworKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2R0bWYuYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAgKiB0ZXN0ZWQgaXQgYWxsb3QuIGl0IGV2ZW4gd29ya3Mgd2l0aCB2ZXJ5IHNob3J0IHRvbmVzICg0MG1zKS4gdGhlIG9ubHkKICAqIGRpc2FkdmFudGFnZSBpcywgdGhhdCBpdCBkb2Vzbid0IHdvcmsgZ29vZCB3aXRoIGRpZmZlcmVudCB2b2x1bWVzIG9mIGJvdGgKICAqIHRvbmVzLiB0aGlzIHdpbGwgaGFwcGVuLCBpZiBhY2NvdXN0aWNhbGx5IGNvdXBsZWQgZGlhbGVycyBhcmUgdXNlZC4KLSAqIGl0IHNvbWV0aW1lcyBkZXRlY3RzIHRvbmVzIGR1cmluZyBzcGVhY2gsIHdoaWNoIGlzIG5vcm1hbCBmb3IgZGVjb2RlcnMuCisgKiBpdCBzb21ldGltZXMgZGV0ZWN0cyB0b25lcyBkdXJpbmcgc3BlZWNoLCB3aGljaCBpcyBub3JtYWwgZm9yIGRlY29kZXJzLgogICogdXNlIHNlcXVlbmNlcyB0byBnaXZlbiBjb21tYW5kcyBkdXJpbmcgY2FsbHMuCiAgKgogICogZHRtZiAtIHBvaW50cyB0byBhIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBkdG1mIHN0YXRlCkBAIC0yNDQsNyArMjQ0LDcgQEAKIAkJaWYgKHJlc3VsdFtpXSA8IHRyZXNoKSB7CiAJCQlsb3dncm91cCA9IC0xOwogCQkJaGlnaGdyb3VwID0gLTE7Ci0JCQlicmVhazsgIC8qIG5vaXNlIGluYmV0d2VlbiAqLworCQkJYnJlYWs7ICAvKiBub2lzZSBpbiBiZXR3ZWVuICovCiAJCX0KIAkJLyogZ29vZCBsZXZlbCBmb3VuZC4gVGhpcyBpcyBhbGxvd2VkIG9ubHkgb25lIHRpbWUgcGVyIGdyb3VwICovCiAJCWlmIChpIDwgTkNPRUZGLzIpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfdG9uZXMuYyBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfdG9uZXMuYwppbmRleCA3ZGJlNTRlLi40ZTQ0NDBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX3RvbmVzLmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF90b25lcy5jCkBAIC0zOTQsNyArMzk0LDcgQEAKIAl3aGlsZSAobGVuKSB7CiAJCS8qIGZpbmQgc2FtcGxlIHRvIHN0YXJ0IHdpdGggKi8KIAkJd2hpbGUgKDQyKSB7Ci0JCQkvKiB3YXJwIGFycm91bmQgKi8KKwkJCS8qIHdyYXAgYXJvdW5kICovCiAJCQlpZiAoIXBhdC0+c2VxW2luZGV4XSkgewogCQkJCWNvdW50ID0gMDsKIAkJCQlpbmRleCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vbUlTRE4vbDFvaXBfY29yZS5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2wxb2lwX2NvcmUuYwppbmRleCBiZDUyNmY2Li4yMmY4ZWM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vbDFvaXBfY29yZS5jCisrKyBiL2RyaXZlcnMvaXNkbi9tSVNETi9sMW9pcF9jb3JlLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogLSBUaW1lIEJhc2UgPSBUaW1lc3RhbXAgb2YgZmlyc3Qgc2FtcGxlIGluIGZyYW1lCiBUaGUgIlRpbWUgQmFzZSIgaXMgdXNlZCB0byByZWFyYW5nZSBwYWNrZXRzIGFuZCB0byBkZXRlY3QgcGFja2V0IGxvc3MuCiBUaGUgMTYgYml0cyBhcmUgc2VudCBpbiBuZXR3b3JrIG9yZGVyIChNU0IgZmlyc3QpIGFuZCBjb3VudCAxLzgwMDAgdGggb2YgYQotc2Vjb25kLiBUaGlzIGNhdXNlcyBhIHdyYXAgYXJyb3VuZCBlYWNoIDgsMTkyIHNlY29uZHMuIFRoZXJlIGlzIG5vIHJlcXVpcmVtZW50CitzZWNvbmQuIFRoaXMgY2F1c2VzIGEgd3JhcCBhcm91bmQgZWFjaCA4LDE5MiBzZWNvbmRzLiBUaGVyZSBpcyBubyByZXF1aXJlbWVudAogZm9yIHRoZSBpbml0aWFsICJUaW1lIEJhc2UiLCBidXQgMCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGZpcnN0IHBhY2tldC4KIEluIGNhc2Ugb2YgSERMQyBkYXRhLCB0aGlzIHRpbWVzdGFtcCBjb3VudHMgdGhlIHBhY2tldCBvciBieXRlIG51bWJlci4KIApAQCAtMjA1LDcgKzIwNSw3IEBACiAKIElmIHRoZSBvbmRlbWFuZCBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIHRoZSByZW1vdGUgSVAgaXMgc2V0IHRvIDAgb24gdGltZW91dC4KIFRoaXMgd2lsbCBzdG9wIGtlZXBhbGl2ZSB0cmFmZmljIHRvIHJlbW90ZS4gSWYgdGhlIHJlbW90ZSBpcyBvbmxpbmUgYWdhaW4sCi10cmFmZmljIHdpbGwgY29udGludWUgdG8gdGhlIHJlbW90ZSBhZGRyZXNzLiBUaGlzIGlzIHVzZWZ1bGwgZm9yIHJvYWQgd2FycmlvcnMuCit0cmFmZmljIHdpbGwgY29udGludWUgdG8gdGhlIHJlbW90ZSBhZGRyZXNzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igcm9hZCB3YXJyaW9ycy4KIFRoaXMgZmVhdHVyZSBvbmx5IHdvcmtzIHdpdGggSUQgc2V0LCBvdGhlcndoaXNlIGl0IGlzIGhpZ2hseSB1bnNlY3VyZS4KIAogCkBAIC01OTAsNyArNTkwLDcgQEAKIAkJCXJldHVybjsKIAkJfQogCX0gZWxzZQotCQltbGVuID0gbGVuLTI7IC8qIHNpbmdsZSBmcmFtZSwgc3Vic3RyYWN0IHRpbWViYXNlICovCisJCW1sZW4gPSBsZW4tMjsgLyogc2luZ2xlIGZyYW1lLCBzdWJ0cmFjdCB0aW1lYmFzZSAqLwogCiAJaWYgKGxlbiA8IDIpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IHBhY2tldCBlcnJvciAtIHBhY2tldCB0b28gc2hvcnQsIHRpbWUgIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2xheWVyMi5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2xheWVyMi5jCmluZGV4IDRhZTc1MDUuLmQwYWViNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9sYXllcjIuYworKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vbGF5ZXIyLmMKQEAgLTE4NjQsNyArMTg2NCw3IEBACiAJCXBzYXBpID4+PSAyOwogCQlwdGVpID4+PSAxOwogCQlpZiAocHNhcGkgIT0gbDItPnNhcGkpIHsKLQkJCS8qIG5vdCBvdXIgYnVzc2luZXNzICovCisJCQkvKiBub3Qgb3VyIGJ1c2luZXNzICovCiAJCQlpZiAoKmRlYnVnICYgREVCVUdfTDIpCiAJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBzYXBpICVkLyVkIG1pc21hdGNoXG4iLAogCQkJCQlfX2Z1bmNfXywgcHNhcGksIGwyLT5zYXBpKTsKQEAgLTE4NzIsNyArMTg3Miw3IEBACiAJCQlyZXR1cm4gMDsKIAkJfQogCQlpZiAoKHB0ZWkgIT0gbDItPnRlaSkgJiYgKHB0ZWkgIT0gR1JPVVBfVEVJKSkgewotCQkJLyogbm90IG91ciBidXNzaW5lc3MgKi8KKwkJCS8qIG5vdCBvdXIgYnVzaW5lc3MgKi8KIAkJCWlmICgqZGVidWcgJiBERUJVR19MMikKIAkJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IHRlaSAlZC8lZCBtaXNtYXRjaFxuIiwKIAkJCQkJX19mdW5jX18sIHB0ZWksIGwyLT50ZWkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jIGIvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jCmluZGV4IGFmYWMzMzguLjViZjYzYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLXBjYTk1MzIuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1wY2E5NTMyLmMKQEAgLTU4LDcgKzU4LDcgQEAKIAkuaWRfdGFibGUgPSBwY2E5NTMyX2lkLAogfTsKIAotLyogV2UgaGF2ZSB0d28gcHdtL2JsaW5rZXJzLCBidXQgMTYgcG9zc2libGUgbGVkcyB0byBkcml2ZS4gQWRkaXRpb25hbHksCisvKiBXZSBoYXZlIHR3byBwd20vYmxpbmtlcnMsIGJ1dCAxNiBwb3NzaWJsZSBsZWRzIHRvIGRyaXZlLiBBZGRpdGlvbmFsbHksCiAgKiB0aGUgY2xldmVyIFRoZWN1cyBwZW9wbGUgYXJlIHVzaW5nIG9uZSBwd20gdG8gZHJpdmUgdGhlIGJlZXBlci4gU28sCiAgKiBhcyBhIGNvbXByb21pc2Ugd2UgYXZlcmFnZSBvbmUgcHdtIHRvIHRoZSB2YWx1ZXMgcmVxdWVzdGVkIGJ5IGFsbAogICogbGVkcyB0aGF0IGFyZSBub3QgT04vT0ZGLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtd204MzUwLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy13bTgzNTAuYwppbmRleCBhMDQ1MjMyLi5mMTRlZGQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy13bTgzNTAuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy13bTgzNTAuYwpAQCAtMjE1LDEzICsyMTUsMTMgQEAKIAogCWlzaW5rID0gcmVndWxhdG9yX2dldCgmcGRldi0+ZGV2LCAibGVkX2lzaW5rIik7CiAJaWYgKElTX0VSUihpc2luaykpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FudCBnZXQgSVNJTktcbiIsIF9fZnVuY19fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FuJ3QgZ2V0IElTSU5LXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiBQVFJfRVJSKGlzaW5rKTsKIAl9CiAKIAlkY2RjID0gcmVndWxhdG9yX2dldCgmcGRldi0+ZGV2LCAibGVkX3ZjYyIpOwogCWlmIChJU19FUlIoZGNkYykpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FudCBnZXQgRENEQ1xuIiwgX19mdW5jX18pOworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBjYW4ndCBnZXQgRENEQ1xuIiwgX19mdW5jX18pOwogCQlyZXQgPSBQVFJfRVJSKGRjZGMpOwogCQlnb3RvIGVycl9pc2luazsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfdXNlci5jIGIvZHJpdmVycy9sZ3Vlc3QvbGd1ZXN0X3VzZXIuYwppbmRleCAzYzc4MWNkLi45NDhjNTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfdXNlci5jCisrKyBiL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF91c2VyLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogCXJjdV9hc3NpZ25fcG9pbnRlcihsZy0+ZXZlbnRmZHMsIG5ldyk7CiAKIAkvKgotCSAqIFdlJ3JlIG5vdCBpbiBhIGJpZyBodXJyeS4gIFdhaXQgdW50aWwgbm9vbmUncyBsb29raW5nIGF0IG9sZAorCSAqIFdlJ3JlIG5vdCBpbiBhIGJpZyBodXJyeS4gIFdhaXQgdW50aWwgbm8gb25lJ3MgbG9va2luZyBhdCBvbGQKIAkgKiB2ZXJzaW9uLCB0aGVuIGZyZWUgaXQuCiAJICovCiAJc3luY2hyb25pemVfcmN1KCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC9hZGJoaWQuYyBiL2RyaXZlcnMvbWFjaW50b3NoL2FkYmhpZC5jCmluZGV4IDUzOTZjNjcuLjA5ZDcyYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL2FkYmhpZC5jCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL2FkYmhpZC5jCkBAIC0zMjgsNyArMzI4LDcgQEAKIAlzd2l0Y2ggKGtleWNvZGUpIHsKIAljYXNlIEFEQl9LRVlfQ0FQU0xPQ0s6CiAJCWlmICghcmVzdG9yZV9jYXBzbG9ja19ldmVudHMpIHsKLQkJCS8qIEdlbmVyYXRlIGRvd24vdXAgZXZlbnRzIGZvciBDYXBzTG9jayBldmVyeXRpbWUuICovCisJCQkvKiBHZW5lcmF0ZSBkb3duL3VwIGV2ZW50cyBmb3IgQ2Fwc0xvY2sgZXZlcnkgdGltZS4gKi8KIAkJCWlucHV0X3JlcG9ydF9rZXkoYWhpZC0+aW5wdXQsIEtFWV9DQVBTTE9DSywgMSk7CiAJCQlpbnB1dF9zeW5jKGFoaWQtPmlucHV0KTsKIAkJCWlucHV0X3JlcG9ydF9rZXkoYWhpZC0+aW5wdXQsIEtFWV9DQVBTTE9DSywgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC9tYWNpby1hZGIuYyBiL2RyaXZlcnMvbWFjaW50b3NoL21hY2lvLWFkYi5jCmluZGV4IGJkNmRhN2EuLmI2ZWY4ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL21hY2lvLWFkYi5jCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL21hY2lvLWFkYi5jCkBAIC0xNDcsNyArMTQ3LDcgQEAKIAogCS8qIEhybS4uLiB3ZSBtYXkgd2FudCB0byBub3QgbG9jayBpbnRlcnJ1cHRzIGZvciBzbwogCSAqIGxvbmcgLi4uIG9oIHdlbGwsIHdobyB1c2VzIHRoYXQgY2hpcCBhbnl3YXkgPyA6KQotCSAqIFRoYXQgZnVuY3Rpb24gd2lsbCBiZSBzZWxkb21seSB1c2VkIGR1cmluZyBib290CisJICogVGhhdCBmdW5jdGlvbiB3aWxsIGJlIHNlbGRvbSB1c2VkIGR1cmluZyBib290CiAJICogb24gcmFyZSBtYWNoaW5lcywgc28uLi4KIAkgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmbWFjaW9fbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fYWR0NzQ2eC5jIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fYWR0NzQ2eC5jCmluZGV4IDllM2UyYzUuLjAyMzY3MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX2FkdDc0NnguYworKysgYi9kcml2ZXJzL21hY2ludG9zaC90aGVybV9hZHQ3NDZ4LmMKQEAgLTY2Miw3ICs2NjIsNyBAQAogCQllcnIgfD0gZGV2aWNlX2NyZWF0ZV9maWxlKCZvZl9kZXYtPmRldiwgJmRldl9hdHRyX3NlbnNvcjJfZmFuX3NwZWVkKTsKIAlpZiAoZXJyKQogCQlwcmludGsoS0VSTl9XQVJOSU5HCi0JCQkiRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wZXJ0YXVyZSBhdHRyaWJ1dGUgZmlsZShzKS5cbiIpOworCQkJIkZhaWxlZCB0byBjcmVhdGUgdGVtcGVyYXR1cmUgYXR0cmlidXRlIGZpbGUocykuXG4iKTsKIH0KIAogc3RhdGljIHZvaWQgdGhlcm1vc3RhdF9yZW1vdmVfZmlsZXModm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3BtNzIuYyBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3BtNzIuYwppbmRleCBiY2EyYWYyLi5kMjVkZjQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC90aGVybV9wbTcyLmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fcG03Mi5jCkBAIC05MSw3ICs5MSw3IEBACiAgKgogICogIE1hci4gMTAsIDIwMDUgOiAxLjIKICAqCS0gQWRkIGJhc2ljIHN1cHBvcnQgZm9yIFhzZXJ2ZSBHNQotICoJLSBSZXRyZWl2ZSBwdW1wcyBtaW4vbWF4IGZyb20gRUVQUk9NIGltYWdlIGluIGRldmljZS10cmVlIChicm9rZW4pCisgKgktIFJldHJpZXZlIHB1bXBzIG1pbi9tYXggZnJvbSBFRVBST00gaW1hZ2UgaW4gZGV2aWNlLXRyZWUgKGJyb2tlbikKICAqCS0gVXNlIG1pbi9tYXggbWFjcm9zIGhlcmUgb3IgdGhlcmUKICAqCS0gTGF0ZXN0IGRhcndpbiB1cGRhdGVkIFUzSCBtaW4gZmFuIHNwZWVkIHRvIDIwJSBQV00KICAqCkBAIC0zNzUsNyArMzc1LDcgQEAKIAkJcmMgPSBpMmNfbWFzdGVyX3NlbmQoc3RhdGUtPm1vbml0b3IsIGJ1ZiwgMik7CiAJCWlmIChyYyA8PSAwKQogCQkJZ290byBlcnJvcjsKLQkJLyogV2FpdCBmb3IgY29udmVydGlvbiAqLworCQkvKiBXYWl0IGZvciBjb252ZXJzaW9uICovCiAJCW1zbGVlcCgxKTsKIAkJLyogU3dpdGNoIHRvIGRhdGEgcmVnaXN0ZXIgKi8KIAkJYnVmWzBdID0gNDsKQEAgLTExOTIsNyArMTE5Miw3IEBACiAJCWVyciB8PSBkZXZpY2VfY3JlYXRlX2ZpbGUoJm9mX2Rldi0+ZGV2LCAmZGV2X2F0dHJfY3B1MV9pbnRha2VfZmFuX3JwbSk7CiAJfQogCWlmIChlcnIpCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgIkZhaWxlZCB0byBjcmVhdGUgc29tZSBvZiB0aGUgYXRyaWJ1dGUiCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIkZhaWxlZCB0byBjcmVhdGUgc29tZSBvZiB0aGUgYXR0cmlidXRlIgogCQkJImZpbGVzIGZvciBDUFUgJWRcbiIsIGluZGV4KTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fd2luZHR1bm5lbC5jIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fd2luZHR1bm5lbC5jCmluZGV4IGQzNzgxOWYuLjQ2YzRlOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuYworKysgYi9kcml2ZXJzL21hY2ludG9zaC90aGVybV93aW5kdHVubmVsLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KICNpbmNsdWRlIDxhc20vbWFjaW8uaD4KIAotI2RlZmluZSBMT0dfVEVNUAkJMAkJCS8qIGNvbnRpbm91c2x5IGxvZyB0ZW1wZXJhdHVyZSAqLworI2RlZmluZSBMT0dfVEVNUAkJMAkJCS8qIGNvbnRpbnVvdXNseSBsb2cgdGVtcGVyYXR1cmUgKi8KIAogc3RhdGljIHN0cnVjdCB7CiAJdm9sYXRpbGUgaW50CQlydW5uaW5nOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iaXRtYXAuaCBiL2RyaXZlcnMvbWQvYml0bWFwLmgKaW5kZXggOTMxYTdhNy4uZDBhZWFmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iaXRtYXAuaAorKysgYi9kcml2ZXJzL21kL2JpdG1hcC5oCkBAIC00NSw3ICs0NSw3IEBACiAgKgogICogVGhlIGNvdW50ZXIgY291bnRzIHBlbmRpbmcgd3JpdGUgcmVxdWVzdHMsIHBsdXMgdGhlIG9uLWRpc2sgYml0LgogICogV2hlbiB0aGUgY291bnRlciBpcyAnMScgYW5kIHRoZSByZXN5bmMgYml0cyBhcmUgY2xlYXIsIHRoZSBvbi1kaXNrCi0gKiBiaXQgY2FuIGJlIGNsZWFyZWQgYXN3ZWxsLCB0aHVzIHNldHRpbmcgdGhlIGNvdW50ZXIgdG8gMC4KKyAqIGJpdCBjYW4gYmUgY2xlYXJlZCBhcyB3ZWxsLCB0aHVzIHNldHRpbmcgdGhlIGNvdW50ZXIgdG8gMC4KICAqIFdoZW4gd2Ugc2V0IGEgYml0LCBvciBpbiB0aGUgY291bnRlciAodG8gc3RhcnQgYSB3cml0ZSksIGlmIHRoZSBmaWVsZHMgaXMKICAqIDAsIHdlIGZpcnN0IHNldCB0aGUgZGlzayBiaXQgYW5kIHNldCB0aGUgY291bnRlciB0byAxLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYyBiL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwppbmRleCBkYWQwMTFhLi43NzcxZWQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKKysrIGIvZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jCkBAIC00MTksNyArNDE5LDcgQEAKIAkvKgogCSAqIFBvc3NpYmxlIGNhc2VzOgogCSAqICAgMSkgRE1fUkhfRElSVFkKLQkgKiAgIDIpIERNX1JIX05PU1lOQzogd2FzIGRpcnR5LCBvdGhlciBwcmVjZWVkaW5nIHdyaXRlcyBmYWlsZWQKKwkgKiAgIDIpIERNX1JIX05PU1lOQzogd2FzIGRpcnR5LCBvdGhlciBwcmVjZWRpbmcgd3JpdGVzIGZhaWxlZAogCSAqICAgMykgRE1fUkhfUkVDT1ZFUklORzogZmx1c2hpbmcgcGVuZGluZyB3cml0ZXMKIAkgKiBFaXRoZXIgY2FzZSwgdGhlIHJlZ2lvbiBzaG91bGQgaGF2ZSBub3QgYmVlbiBjb25uZWN0ZWQgdG8gbGlzdC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZmF1bHR5LmMgYi9kcml2ZXJzL21kL2ZhdWx0eS5jCmluZGV4IDMzOWZkYzYuLjIzMDc4ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZmF1bHR5LmMKKysrIGIvZHJpdmVycy9tZC9mYXVsdHkuYwpAQCAtMzAsNyArMzAsNyBAQAogICoKICAqIERpZmZlcmVudCBtb2RlcyBjYW4gYmUgYWN0aXZlIGF0IGEgdGltZSwgYnV0IG9ubHkKICAqIG9uZSBjYW4gYmUgc2V0IGF0IGFycmF5IGNyZWF0aW9uLiAgT3RoZXJzIGNhbiBiZSBhZGRlZCBsYXRlci4KLSAqIEEgbW9kZSBjYW4gYmUgb25lLXNob3Qgb3IgcmVjdXJyZW50IHdpdGggdGhlIHJlY3VycmFuY2UgYmVpbmcKKyAqIEEgbW9kZSBjYW4gYmUgb25lLXNob3Qgb3IgcmVjdXJyZW50IHdpdGggdGhlIHJlY3VycmVuY2UgYmVpbmcKICAqIG9uY2UgaW4gZXZlcnkgTiByZXF1ZXN0cy4KICAqIFRoZSBib3R0b20gNSBiaXRzIG9mIHRoZSAibGF5b3V0IiBpbmRpY2F0ZSB0aGUgbW9kZS4gIFRoZQogICogcmVtYWluZGVyIGluZGljYXRlIGEgcGVyaW9kLCBvciAwIGZvciBvbmUtc2hvdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuYyBiL2RyaXZlcnMvbWQvbWQuYwppbmRleCA4YjY2ZTA0Li5iMTJiMzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL21kLmMKKysrIGIvZHJpdmVycy9tZC9tZC5jCkBAIC02MjY2LDcgKzYyNjYsNyBAQAogCSAqIHJ0IGlzIGEgc2VjdG9yX3QsIHNvIGNvdWxkIGJlIDMyYml0IG9yIDY0Yml0LgogCSAqIFNvIHdlIGRpdmlkZSBiZWZvcmUgbXVsdGlwbHkgaW4gY2FzZSBpdCBpcyAzMmJpdCBhbmQgY2xvc2UKIAkgKiB0byB0aGUgbGltaXQuCi0JICogV2Ugc2NhbGUgdGhlIGRpdmlzb3IgKGRiKSBieSAzMiB0byBhdm9pZCBsb29zaW5nIHByZWNpc2lvbgorCSAqIFdlIHNjYWxlIHRoZSBkaXZpc29yIChkYikgYnkgMzIgdG8gYXZvaWQgbG9zaW5nIHByZWNpc2lvbgogCSAqIG5lYXIgdGhlIGVuZCBvZiByZXN5bmMgd2hlbiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBzZWN0b3JzCiAJICogaXMgY2xvc2UgdG8gJ2RiJy4KIAkgKiBXZSB0aGVuIGRpdmlkZSBydCBieSAzMiBhZnRlciBtdWx0aXBseWluZyBieSBkYiB0byBjb21wZW5zYXRlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5oIGIvZHJpdmVycy9tZC9tZC5oCmluZGV4IDEyMjE1ZDQuLjUyYjQwNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuaAorKysgYi9kcml2ZXJzL21kL21kLmgKQEAgLTk0LDcgKzk0LDcgQEAKICNkZWZpbmUJSW5fc3luYwkJMgkJLyogZGV2aWNlIGlzIGluX3N5bmMgd2l0aCByZXN0IG9mIGFycmF5ICovCiAjZGVmaW5lCVdyaXRlTW9zdGx5CTQJCS8qIEF2b2lkIHJlYWRpbmcgaWYgYXQgYWxsIHBvc3NpYmxlICovCiAjZGVmaW5lCUF1dG9EZXRlY3RlZAk3CQkvKiBhZGRlZCBieSBhdXRvLWRldGVjdCAqLwotI2RlZmluZSBCbG9ja2VkCQk4CQkvKiBBbiBlcnJvciBvY2N1cmVkIG9uIGFuIGV4dGVybmFsbHkKKyNkZWZpbmUgQmxvY2tlZAkJOAkJLyogQW4gZXJyb3Igb2NjdXJyZWQgb24gYW4gZXh0ZXJuYWxseQogCQkJCQkgKiBtYW5hZ2VkIGFycmF5LCBkb24ndCBhbGxvdyB3cml0ZXMKIAkJCQkJICogdW50aWwgaXQgaXMgY2xlYXJlZCAqLwogCXdhaXRfcXVldWVfaGVhZF90IGJsb2NrZWRfd2FpdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5jCmluZGV4IGY3YjYyMzcuLjJkYTgzZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBSQUlELTEwIHN1cHBvcnQgZm9yIG1kLgogICoKLSAqIEJhc2Ugb24gY29kZSBpbiByYWlkMS5jLiAgU2VlIHJhaWQxLmMgZm9yIGZ1dGhlciBjb3B5cmlnaHQgaW5mb3JtYXRpb24uCisgKiBCYXNlIG9uIGNvZGUgaW4gcmFpZDEuYy4gIFNlZSByYWlkMS5jIGZvciBmdXJ0aGVyIGNvcHlyaWdodCBpbmZvcm1hdGlvbi4KICAqCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTM0MCwxNCArMzQwLDE0IEBACiAKIC8qCiAgKiBSQUlEMTAgbGF5b3V0IG1hbmFnZXIKLSAqIEFzd2VsbCBhcyB0aGUgY2h1bmtzaXplIGFuZCByYWlkX2Rpc2tzIGNvdW50LCB0aGVyZSBhcmUgdHdvCisgKiBBcyB3ZWxsIGFzIHRoZSBjaHVua3NpemUgYW5kIHJhaWRfZGlza3MgY291bnQsIHRoZXJlIGFyZSB0d28KICAqIHBhcmFtZXRlcnM6IG5lYXJfY29waWVzIGFuZCBmYXJfY29waWVzLgogICogbmVhcl9jb3BpZXMgKiBmYXJfY29waWVzIG11c3QgYmUgPD0gcmFpZF9kaXNrcy4KICAqIE5vcm1hbGx5IG9uZSBvZiB0aGVzZSB3aWxsIGJlIDEuCiAgKiBJZiBib3RoIGFyZSAxLCB3ZSBnZXQgcmFpZDAuCiAgKiBJZiBuZWFyX2NvcGllcyA9PSByYWlkX2Rpc2tzLCB3ZSBnZXQgcmFpZDEuCiAgKgotICogQ2h1bmtzIGFyZSBsYXllZCBvdXQgaW4gcmFpZDAgc3R5bGUgd2l0aCBuZWFyX2NvcGllcyBjb3BpZXMgb2YgdGhlCisgKiBDaHVua3MgYXJlIGxhaWQgb3V0IGluIHJhaWQwIHN0eWxlIHdpdGggbmVhcl9jb3BpZXMgY29waWVzIG9mIHRoZQogICogZmlyc3QgY2h1bmssIGZvbGxvd2VkIGJ5IG5lYXJfY29waWVzIGNvcGllcyBvZiB0aGUgbmV4dCBjaHVuayBhbmQKICAqIHNvIG9uLgogICogSWYgZmFyX2NvcGllcyA+IDEsIHRoZW4gYWZ0ZXIgMS9mYXJfY29waWVzIG9mIHRoZSBhcnJheSBoYXMgYmVlbiBhc3NpZ25lZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMTAuaCBiL2RyaXZlcnMvbWQvcmFpZDEwLmgKaW5kZXggMjMxNmFjMi4uOTQ0YjExMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkMTAuaAorKysgYi9kcml2ZXJzL21kL3JhaWQxMC5oCkBAIC0xNyw4ICsxNyw4IEBACiAJc3BpbmxvY2tfdAkJZGV2aWNlX2xvY2s7CiAKIAkvKiBnZW9tZXRyeSAqLwotCWludAkJCW5lYXJfY29waWVzOyAgLyogbnVtYmVyIG9mIGNvcGllcyBsYXllZCBvdXQgcmFpZDAgc3R5bGUgKi8KLQlpbnQgCQkJZmFyX2NvcGllczsgICAvKiBudW1iZXIgb2YgY29waWVzIGxheWVkIG91dAorCWludAkJCW5lYXJfY29waWVzOyAgLyogbnVtYmVyIG9mIGNvcGllcyBsYWlkIG91dCByYWlkMCBzdHlsZSAqLworCWludCAJCQlmYXJfY29waWVzOyAgIC8qIG51bWJlciBvZiBjb3BpZXMgbGFpZCBvdXQKIAkJCQkJICAgICAgICogYXQgbGFyZ2Ugc3RyaWRlcyBhY3Jvc3MgZHJpdmVzCiAJCQkJCSAgICAgICAqLwogCWludAkJCWZhcl9vZmZzZXQ7ICAgLyogZmFyX2NvcGllcyBhcmUgb2Zmc2V0IGJ5IDEgc3RyaXBlCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2kyYy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9pMmMuYwppbmRleCA3NGVlMTcyLi5iMmJhOWRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2kyYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3NhYTcxNDZfaTJjLmMKQEAgLTE2MSw3ICsxNjEsNyBAQAogCQltc2xlZXAoU0FBNzE0Nl9JMkNfREVMQVkpOwogCX0KIAotCS8qIGlmIGFueSBlcnJvciBpcyBzdGlsbCBwcmVzZW50LCBhIGZhdGFsIGVycm9yIGhhcyBvY2N1cmVkIC4uLiAqLworCS8qIGlmIGFueSBlcnJvciBpcyBzdGlsbCBwcmVzZW50LCBhIGZhdGFsIGVycm9yIGhhcyBvY2N1cnJlZCAuLi4gKi8KIAlzdGF0dXMgPSBzYWE3MTQ2X2kyY19zdGF0dXMoZGV2KTsKIAlpZiAoIGRldi0+aTJjX2JpdHJhdGUgIT0gc3RhdHVzICkgewogCQlERUJfSTJDKCgiZmF0YWwgZXJyb3IuIHN0YXR1czoweCUwOHhcbiIsc3RhdHVzKSk7CkBAIC0zMjYsOSArMzI2LDkgQEAKIAkJCWlmICggMCAhPSBlcnIpIHsKIAkJCQkvKiB0aGlzIG9uZSBpcyB1bnNhdGlzZnlpbmc6IHNvbWUgaTJjIHNsYXZlcyBvbiBzb21lCiAJCQkJICAgZHZiIGNhcmRzIGRvbid0IGFja25vd2xlZGdlIGNvcnJlY3RseSwgc28gdGhlIHNhYTcxNDYKLQkJCQkgICB0aGlua3MgdGhhdCBhbiBhZGRyZXNzIGVycm9yIG9jY3VyZWQuIGluIHRoYXQgY2FzZSwgdGhlCisJCQkJICAgdGhpbmtzIHRoYXQgYW4gYWRkcmVzcyBlcnJvciBvY2N1cnJlZC4gaW4gdGhhdCBjYXNlLCB0aGUKIAkJCQkgICB0cmFuc2FjdGlvbiBzaG91bGQgYmUgcmV0cnlpbmcsIGV2ZW4gaWYgYW4gYWRkcmVzcyBlcnJvcgotCQkJCSAgIG9jY3VyZWQuIGFuYWxvZyBzYWE3MTQ2IGJhc2VkIGNhcmRzIGV4dGVuc2l2ZWx5IHJlbHkgb24KKwkJCQkgICBvY2N1cnJlZC4gYW5hbG9nIHNhYTcxNDYgYmFzZWQgY2FyZHMgZXh0ZW5zaXZlbHkgcmVseSBvbgogCQkJCSAgIGkyYyBhZGRyZXNzIHByb2JpbmcsIGhvd2V2ZXIsIGFuZCBhZGRyZXNzIGVycm9ycyBpbmRpY2F0ZSB0aGF0IGEKIAkJCQkgICBkZXZpY2UgaXMgcmVhbGx5ICpub3QqIHRoZXJlLiByZXRyeWluZyBpbiB0aGF0IGNhc2UKIAkJCQkgICBpbmNyZWFzZXMgdGhlIHRpbWUgdGhlIGRldmljZSBuZWVkcyB0byBwcm9iZSBncmVhdGx5LCBzbwpAQCAtMzY1LDcgKzM2NSw3IEBACiAJREVCX0kyQygoInRyYW5zbWlzc2lvbiBzdWNjZXNzZnVsLiAobXNnOiVkKS5cbiIsZXJyKSk7CiBvdXQ6CiAJLyogYW5vdGhlciBidWcgaW4gcmV2aXNpb24gMDogdGhlIGkyYy1yZWdpc3RlcnMgZ2V0IHVwbG9hZGVkIHJhbmRvbWx5IGJ5IG90aGVyCi0JICAgdXBsb2Fkcywgc28gd2UgYmV0dGVyIGNsZWFyIHRoZW0gb3V0IGJlZm9yZSBjb250aW51ZWluZyAqLworCSAgIHVwbG9hZHMsIHNvIHdlIGJldHRlciBjbGVhciB0aGVtIG91dCBiZWZvcmUgY29udGludWluZyAqLwogCWlmKCAwID09IGRldi0+cmV2aXNpb24gKSB7CiAJCV9fbGUzMiB6ZXJvID0gMDsKIAkJc2FhNzE0Nl9pMmNfcmVzZXQoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy9teGw1MDA1cy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKaW5kZXggNjA1ZTI4Yi4uMGQ2ZTA5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogLyogTVhMNTAwNSBUdW5lciBSZWdpc3RlciBTdHJ1Y3QgKi8KIHN0cnVjdCBUdW5lclJlZyB7CiAJdTE2IFJlZ19OdW07CS8qIFR1bmVyIFJlZ2lzdGVyIEFkZHJlc3MgKi8KLQl1MTYgUmVnX1ZhbDsJLyogQ3VycmVudCBzdyBwcm9ncmFtbWVkIHZhbHVlIHdhaXRpbmcgdG8gYmUgd3JpdGVuICovCisJdTE2IFJlZ19WYWw7CS8qIEN1cnJlbnQgc3cgcHJvZ3JhbW1lZCB2YWx1ZSB3YWl0aW5nIHRvIGJlIHdyaXR0ZW4gKi8KIH07CiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3RkYTE4MjcxLmggYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdGRhMTgyNzEuaAppbmRleCAzYWJiMjIxLi41MGNmYThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdGRhMTgyNzEuaAorKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdGRhMTgyNzEuaApAQCAtOTgsNyArOTgsNyBAQAogCS8qIG91dHB1dCBvcHRpb25zIHRoYXQgY2FuIGJlIGRpc2FibGVkICovCiAJZW51bSB0ZGExODI3MV9vdXRwdXRfb3B0aW9ucyBvdXRwdXRfb3B0OwogCi0JLyogc29tZSBpMmMgcHJvdmlkZXJzIGNhbnQgd3JpdGUgYWxsIDM5IHJlZ2lzdGVycyBhdCBvbmNlICovCisJLyogc29tZSBpMmMgcHJvdmlkZXJzIGNhbid0IHdyaXRlIGFsbCAzOSByZWdpc3RlcnMgYXQgb25jZSAqLwogCWVudW0gdGRhMTgyNzFfc21hbGxfaTJjIHNtYWxsX2kyYzsKIAogCS8qIGZvcmNlIHJmIHRyYWNraW5nIGZpbHRlciBjYWxpYnJhdGlvbiBvbiBzdGFydHVwICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9iMmMyL2ZsZXhjb3AtcGNpLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9iMmMyL2ZsZXhjb3AtcGNpLmMKaW5kZXggMjI3YzAyMC4uOTU1MjU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvYjJjMi9mbGV4Y29wLXBjaS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2IyYzIvZmxleGNvcC1wY2kuYwpAQCAtNTgsNyArNTgsNyBAQAogCiAJaW50IGFjdGl2ZV9kbWExX2FkZHI7IC8qIDAgPSBhZGRyMCBvZiBkbWExOyAxID0gYWRkcjEgb2YgZG1hMSAqLwogCXUzMiBsYXN0X2RtYTFfY3VyX3BvczsKLQkvKiBwb3NpdGlvbiBvZiB0aGUgcG9pbnRlciBsYXN0IHRpbWUgdGhlIHRpbWVyL3BhY2tldCBpcnEgb2NjdXJlZCAqLworCS8qIHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyIGxhc3QgdGltZSB0aGUgdGltZXIvcGFja2V0IGlycSBvY2N1cnJlZCAqLwogCWludCBjb3VudDsKIAlpbnQgY291bnRfcHJldjsKIAlpbnQgc3RyZWFtX3Byb2JsZW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9kdmItYnQ4eHguYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2J0OHh4L2R2Yi1idDh4eC5jCmluZGV4IDc4ZmM0NjkuLjFlMTEwNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2J0OHh4L2R2Yi1idDh4eC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2J0OHh4L2R2Yi1idDh4eC5jCkBAIC00MjcsMTAgKzQyNywxMCBAQAogCXN0cnVjdCBkdmJfYnQ4eHhfY2FyZCAqYnQgPSBmZS0+ZHZiLT5wcml2OwogCiAJLyogUkVTRVQgREVWSUNFCi0JICogcmVzZXQgaXMgY29udHJvbGVkIGJ5IEdQSU8tMAorCSAqIHJlc2V0IGlzIGNvbnRyb2xsZWQgYnkgR1BJTy0wCiAJICogd2hlbiBzZXQgdG8gMCBjYXVzZXMgcmVzZXQgYW5kIHdoZW4gdG8gMSBmb3Igbm9ybWFsIG9wCiAJICogbXVzdCByZW1haW4gcmVzZXQgZm9yIDEyOCBjbG9jayBjeWNsZXMgb24gYSA1ME1oeiBjbG9jawotCSAqIGFsc28gUFJNMSBQUk0yICYgUFJNNCBhcmUgY29udHJvbGVkIGJ5IEdQSU8tMSxHUElPLTIgJiBHUElPLTQKKwkgKiBhbHNvIFBSTTEgUFJNMiAmIFBSTTQgYXJlIGNvbnRyb2xsZWQgYnkgR1BJTy0xLEdQSU8tMiAmIEdQSU8tNAogCSAqIFdlIGFzc3VtZSB0aGF0IHRoZSByZXNldCBoYXMgYmUgaGVsZCBsb3cgbG9uZyBlbm91Z2ggb3Igd2UKIAkgKiBoYXZlIGJlZW4gcmVzZXQgYnkgYSBwb3dlciBvbi4gIFdoZW4gdGhlIGRyaXZlciBpcyB1bmxvYWRlZAogCSAqIHJlc2V0IHNldCB0byAwIHNvIGlmIHJlbG9hZGVkIHdlIGhhdmUgYmVlbiByZXNldC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmMKaW5kZXggY2FkNjYzNC4uMzFlMmMwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmMKQEAgLTE2MzgsNyArMTYzOCw3IEBACiAJY2FzZSBGRV9SRUFEX1NUQVRVUzogewogCQlmZV9zdGF0dXNfdCogc3RhdHVzID0gcGFyZzsKIAotCQkvKiBpZiByZXR1bmUgd2FzIHJlcXVlc3RlZCBidXQgaGFzbid0IG9jY3VyZWQgeWV0LCBwcmV2ZW50CisJCS8qIGlmIHJldHVuZSB3YXMgcmVxdWVzdGVkIGJ1dCBoYXNuJ3Qgb2NjdXJyZWQgeWV0LCBwcmV2ZW50CiAJCSAqIHRoYXQgdXNlciBnZXQgc2lnbmFsIHN0YXRlIGZyb20gcHJldmlvdXMgdHVuaW5nICovCiAJCWlmIChmZXByaXYtPnN0YXRlID09IEZFU1RBVEVfUkVUVU5FIHx8CiAJCSAgICBmZXByaXYtPnN0YXRlID09IEZFU1RBVEVfRVJST1IpIHsKQEAgLTE3MjksNyArMTcyOSw3IEBACiAJCQkgKiBEaXNoIG5ldHdvcmsgbGVnYWN5IHN3aXRjaGVzIChhcyB1c2VkIGJ5IERpc2g1MDApCiAJCQkgKiBhcmUgY29udHJvbGxlZCBieSBzZW5kaW5nIDktYml0IGNvbW1hbmQgd29yZHMKIAkJCSAqIHNwYWNlZCA4bXNlYyBhcGFydC4KLQkJCSAqIHRoZSBhY3R1YWwgY29tbWFuZCB3b3JkIGlzIHN3aXRjaC9wb3J0IGRlcGVuZGFudAorCQkJICogdGhlIGFjdHVhbCBjb21tYW5kIHdvcmQgaXMgc3dpdGNoL3BvcnQgZGVwZW5kZW50CiAJCQkgKiBzbyBpdCBpcyB1cCB0byB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHRvIHNlbmQKIAkJCSAqIHRoZSByaWdodCBjb21tYW5kLgogCQkJICogVGhlIGNvbW1hbmQgbXVzdCBhbHdheXMgc3RhcnQgd2l0aCBhICcwJyBhZnRlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9hZjkwMDUtZmUuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvYWY5MDA1LWZlLmMKaW5kZXggMTk5ZWNlMC4uNmFkOTQ3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvYWY5MDA1LWZlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9hZjkwMDUtZmUuYwpAQCAtNTgwLDcgKzU4MCw3IEBACiAJCU5TX2NvZWZmMl84ayA9IDB4NzI0OTI1OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQllcnIoIkludmFsaWQgYmFuZHdpdGggJWQuIiwgYncpOworCQllcnIoIkludmFsaWQgYmFuZHdpZHRoICVkLiIsIGJ3KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC03ODksNyArNzg5LDcgQEAKIAkJdGVtcCA9IDI7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWVycigiSW52YWxpZCBiYW5kd2l0aCAlZC4iLCBidyk7CisJCWVycigiSW52YWxpZCBiYW5kd2lkdGggJWQuIiwgYncpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJcmV0dXJuIGFmOTAwNV93cml0ZV9yZWdpc3Rlcl9iaXRzKGQsIHhkX2dfcmVnX2J3LCByZWdfYndfcG9zLApAQCAtOTMwLDcgKzkzMCw3IEBACiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCS8qIGluaXQgb3RoZXIgcGFyYW1ldGVyczogcHJvZ3JhbSBjZm9lIGFuZCBzZWxlY3QgYmFuZHdpdGggKi8KKwkvKiBpbml0IG90aGVyIHBhcmFtZXRlcnM6IHByb2dyYW0gY2ZvZSBhbmQgc2VsZWN0IGJhbmR3aWR0aCAqLwogCWRlYl9pbmZvKCJwcm9ncmFtIGNmb2VcbiIpOwogCWlmICgocmV0ID0gYWY5MDA1X2ZlX3Byb2dyYW1fY2ZvZShzdGF0ZS0+ZCwgQkFORFdJRFRIXzZfTUhaKSkpCiAJCXJldHVybiByZXQ7CkBAIC0xMTY3LDcgKzExNjcsNyBAQAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQkvKiBzZWxlY3QgYmFuZHdpdGggKi8KKwkvKiBzZWxlY3QgYmFuZHdpZHRoICovCiAJZGViX2luZm8oInNlbGVjdCBiYW5kd2lkdGgiKTsKIAlyZXQgPSBhZjkwMDVfZmVfc2VsZWN0X2J3KHN0YXRlLT5kLCBmZXAtPnUub2ZkbS5iYW5kd2lkdGgpOwogCWlmIChyZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2ZyaWlvLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2ZyaWlvLmgKaW5kZXggYWY4ZDU1ZS4uMGY0NjFjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9mcmlpby5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvZnJpaW8uaApAQCAtMjAsNyArMjAsNyBAQAogICogICAgICAgICBGcm9udGVuZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXRlY2ggSkRWQlQtOTA1MDIKICAqICAgICAgICAgICAgICh0dW5lciBQTEw6ICAgICAgICAgICAgICAgICAgICAgICB0dWE2MDM0LCBJMkMgYWRkcjooMHhDMCA+PiAxKSkKICAqICAgICAgICAgICAgIChPRkRNIGRlbW9kdWxhdG9yOiAgICAgICAgICAgICAgICBUQzkwNTAyLCBJMkMgYWRkcjooMHgzMCA+PiAxKSkKLSAqICAgICAgICAgTEVEIHgzICgrTE5CKSBjb250cm9sbDogICAgICAgICAgICAgICBQSUMgMTZGNjc2CisgKiAgICAgICAgIExFRCB4MyAoK0xOQikgY29udHJvbDogICAgICAgICAgICAgICAgUElDIDE2RjY3NgogICogICAgICAgICBFRVBST006ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0QzA4CiAgKgogICogICAgICAgIChVU0Igc21hcnQgY2FyZCByZWFkZXI6ICAgICAgICAgICAgICAgIEFVOTUyMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvbG1lZG0wNC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9sbWVkbTA0LmMKaW5kZXggY2QyNmU3Yy4uZjJkYjAxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9sbWVkbTA0LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9sbWVkbTA0LmMKQEAgLTMyMSw3ICszMjEsNyBAQAogCWxtZV9pbnQtPmxtZV91cmItPnRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9OT19UUkFOU0ZFUl9ETUFfTUFQOwogCiAJdXNiX3N1Ym1pdF91cmIobG1lX2ludC0+bG1lX3VyYiwgR0ZQX0FUT01JQyk7Ci0JaW5mbygiSU5UIEludGVydXB0IFNlcnZpY2UgU3RhcnRlZCIpOworCWluZm8oIklOVCBJbnRlcnJ1cHQgU2VydmljZSBTdGFydGVkIik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQAogCQkJYnJlYWs7CiAJCX0KIAotCQlkZWJfaW5mbyg0LCAiSTJDIEZyb20gSW50ZXJ1cHQgTWVzc2FnZSBvdXQoJTAyeCkgaW4oJTAyeCkiLAorCQlkZWJfaW5mbyg0LCAiSTJDIEZyb20gSW50ZXJydXB0IE1lc3NhZ2Ugb3V0KCUwMngpIGluKCUwMngpIiwKIAkJCQl3YnVmWzNdLCByYnVmWzFdKTsKIAogCX0KQEAgLTYzMiwxMSArNjMyLDExIEBACiAJfQogCWQtPnJjX2RldiA9IHJjOwogCi0JLyogU3RhcnQgdGhlIEludGVydXB0ICovCisJLyogU3RhcnQgdGhlIEludGVycnVwdCAqLwogCXJldCA9IGxtZTI1MTBfaW50X3JlYWQoYWRhcCk7CiAJaWYgKHJldCA8IDApIHsKIAkJcmNfdW5yZWdpc3Rlcl9kZXZpY2UocmMpOwotCQlpbmZvKCJJTlQgVW5hYmxlIHRvIHN0YXJ0IEludGVydXB0IFNlcnZpY2UiKTsKKwkJaW5mbygiSU5UIFVuYWJsZSB0byBzdGFydCBJbnRlcnJ1cHQgU2VydmljZSIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBACiAJCXJldHVybiAtRU5PREVWOwogCX0KIAotCS8qIFN0YXJ0IHRoZSBJbnRlcnVwdCAmIFJlbW90ZSovCisJLyogU3RhcnQgdGhlIEludGVycnVwdCAmIFJlbW90ZSovCiAJcmV0ID0gbG1lMjUxMF9pbnRfc2VydmljZShhZGFwKTsKIAogCXJldHVybiByZXQ7CkBAIC0xMTcxLDcgKzExNzEsNyBAQAogCQl1c2Jfa2lsbF91cmIoc3QtPmxtZV91cmIpOwogCQl1c2JfZnJlZV9jb2hlcmVudChkLT51ZGV2LCA1MDAwLCBzdC0+YnVmZmVyLAogCQkJCSAgc3QtPmxtZV91cmItPnRyYW5zZmVyX2RtYSk7Ci0JCWluZm8oIkludGVydXB0IFNlcnZpY2UgU3RvcHBlZCIpOworCQlpbmZvKCJJbnRlcnJ1cHQgU2VydmljZSBTdG9wcGVkIik7CiAJCXJjX3VucmVnaXN0ZXJfZGV2aWNlKGQtPnJjX2Rldik7CiAJCWluZm8oIlJlbW90ZSBTdG9wcGVkIik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F0Ym04ODMwLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXRibTg4MzAuaAppbmRleCBlODE0OWYzLi4wMjQyNzMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXRibTg4MzAuaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXRibTg4MzAuaApAQCAtMzksNyArMzksNyBAQAogCS8qIHBhcmFsbGVsIG9yIHNlcmlhbCB0cmFuc3BvcnQgc3RyZWFtICovCiAJdTggc2VyaWFsX3RzOwogCi0JLyogdHJhbnNwb3J0IHN0cmVhbSBjbG9jayBvdXRwdXQgb25seSB3aGVuIHJlY2V2aW5nIHZhbGlkIHN0cmVhbSAqLworCS8qIHRyYW5zcG9ydCBzdHJlYW0gY2xvY2sgb3V0cHV0IG9ubHkgd2hlbiByZWNlaXZpbmcgdmFsaWQgc3RyZWFtICovCiAJdTggdHNfY2xrX2dhdGVkOwogCiAJLyogRGVjb2RlciBzYW1wbGUgVFMgZGF0YSBhdCByaXNpbmcgZWRnZSBvZiBjbG9jayAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F1ODUyMl9kaWcuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9hdTg1MjJfZGlnLmMKaW5kZXggNjVmNmEzNi4uMWQ1NzI5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F1ODUyMl9kaWcuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXU4NTIyX2RpZy5jCkBAIC02MzUsNyArNjM1LDcgQEAKIAlzdHJ1Y3QgYXU4NTIyX2xlZF9jb25maWcgKmxlZF9jb25maWcgPSBzdGF0ZS0+Y29uZmlnLT5sZWRfY2ZnOwogCXU4IHZhbDsKIAotCS8qIGJhaWwgb3V0IGlmIHdlIGNhbnQgY29udHJvbCBhbiBMRUQgKi8KKwkvKiBiYWlsIG91dCBpZiB3ZSBjYW4ndCBjb250cm9sIGFuIExFRCAqLwogCWlmICghbGVkX2NvbmZpZyB8fCAhbGVkX2NvbmZpZy0+Z3Bpb19vdXRwdXQgfHwKIAkgICAgIWxlZF9jb25maWctPmdwaW9fb3V0cHV0X2VuYWJsZSB8fCAhbGVkX2NvbmZpZy0+Z3Bpb19vdXRwdXRfZGlzYWJsZSkKIAkJcmV0dXJuIDA7CkBAIC02NjUsNyArNjY1LDcgQEAKIAlzdHJ1Y3QgYXU4NTIyX2xlZF9jb25maWcgKmxlZF9jb25maWcgPSBzdGF0ZS0+Y29uZmlnLT5sZWRfY2ZnOwogCWludCBpLCByZXQgPSAwOwogCi0JLyogYmFpbCBvdXQgaWYgd2UgY2FudCBjb250cm9sIGFuIExFRCAqLworCS8qIGJhaWwgb3V0IGlmIHdlIGNhbid0IGNvbnRyb2wgYW4gTEVEICovCiAJaWYgKCFsZWRfY29uZmlnIHx8ICFsZWRfY29uZmlnLT5ncGlvX2xlZHMgfHwKIAkgICAgIWxlZF9jb25maWctPm51bV9sZWRfc3RhdGVzIHx8ICFsZWRfY29uZmlnLT5sZWRfc3RhdGVzKQogCQlyZXR1cm4gMDsKQEAgLTgwMyw3ICs4MDMsNyBAQAogCWludCBsZWQ7CiAJdTE2IHN0cm9uZzsKIAotCS8qIGJhaWwgb3V0IGlmIHdlIGNhbnQgY29udHJvbCBhbiBMRUQgKi8KKwkvKiBiYWlsIG91dCBpZiB3ZSBjYW4ndCBjb250cm9sIGFuIExFRCAqLwogCWlmICghbGVkX2NvbmZpZykKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9iY20zNTEwLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYmNtMzUxMC5jCmluZGV4IGNmNWU1NzYuLjhhZmY1ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9iY20zNTEwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2JjbTM1MTAuYwpAQCAtMTU1LDcgKzE1NSw3IEBACiAJdW5zaWduZWQgbG9uZyB0OwogCiAvKiBDaGVjayBpZiBhbnkgcHJldmlvdXMgSEFCIHJlcXVlc3Qgc3RpbGwgbmVlZHMgdG8gYmUgc2VydmljZWQgYnkgdGhlCi0gKiBBcXVpc2l0aW9uIFByb2Nlc3NvciBiZWZvcmUgc2VuZGluZyBuZXcgcmVxdWVzdCAqLworICogQWNxdWlzaXRpb24gUHJvY2Vzc29yIGJlZm9yZSBzZW5kaW5nIG5ldyByZXF1ZXN0ICovCiAJaWYgKChyZXQgPSBiY20zNTEwX3JlYWRCKHN0LDB4YTgsJnYpKSA8IDApCiAJCXJldHVybiByZXQ7CiAJaWYgKHYuSEFCU1RBVF9hOC5IQUJSKSB7CkBAIC0zNjEsNyArMzYxLDcgQEAKIC8qIFNldCBkdXJhdGlvbiBvZiB0aGUgaW5pdGlhbCBzdGF0ZSBvZiBUVU5DVEwgPSAzLjM0IG1pY3JvIFNlYyAqLwogCWMuVFVOQ1RMX3N0YXRlID0gMHg0MDsKIAotLyogUFJFU0NBTEVSIERFVklERSBSQVRJTyB8IEJDMV8yXzNfNDsgKGJhbmQgc3dpdGNoKSwgMXN0b3NjIFJFRkVSRU5DRSBDT1VOVEVSIFJFRl9TMTIgYW5kIFJFRl9TMTEgKi8KKy8qIFBSRVNDQUxFUiBESVZJREUgUkFUSU8gfCBCQzFfMl8zXzQ7IChiYW5kIHN3aXRjaCksIDFzdG9zYyBSRUZFUkVOQ0UgQ09VTlRFUiBSRUZfUzEyIGFuZCBSRUZfUzExICovCiAJYy5jdGxfZGF0WzBdLmN0cmwuc2l6ZSA9IEJJVFNfODsKIAljLmN0bF9kYXRbMF0uZGF0YSAgICAgID0gMHg4MCB8IGJjOwogCkBAIC0zOTcsNyArMzk3LDcgQEAKIAljLmN0bF9kYXRbN10uY3RybC5jczAgID0gMTsKIAljLmN0bF9kYXRbN10uZGF0YSAgICAgID0gMHg0MDsKIAotLyogUFJFU0NBTEVSIERFVklERSBSQVRJTywgMm5kb3NjIFJFRkVSRU5DRSBDT1VOVEVSIFJFRl9TMTIgYW5kIFJFRl9TMTEgKi8KKy8qIFBSRVNDQUxFUiBESVZJREUgUkFUSU8sIDJuZG9zYyBSRUZFUkVOQ0UgQ09VTlRFUiBSRUZfUzEyIGFuZCBSRUZfUzExICovCiAJYy5jdGxfZGF0WzhdLmN0cmwuc2l6ZSA9IEJJVFNfODsKIAljLmN0bF9kYXRbOF0uZGF0YSAgICAgID0gMHg4MDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDAuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAwLmMKaW5kZXggNWZiYzBmYy4uMDE0MjIxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDAuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMC5jCkBAIC0xNzksNyArMTc5LDcgQEAKIAljeDIyNzAwX3dyaXRlcmVnIChzdGF0ZSwgMHgwNiwgdmFsKTsKIAogCWN4MjI3MDBfd3JpdGVyZWcgKHN0YXRlLCAweDA4LCAweDA0IHwgMHgwMik7ICAvKiB1c2UgdXNlciB0cHMgcGFyYW1ldGVycyAqLwotCWN4MjI3MDBfd3JpdGVyZWcgKHN0YXRlLCAweDA4LCAweDA0KTsgICAgICAgICAvKiByZXN0YXJ0IGFxdWlzaXRpb24gKi8KKwljeDIyNzAwX3dyaXRlcmVnIChzdGF0ZSwgMHgwOCwgMHgwNCk7ICAgICAgICAgLyogcmVzdGFydCBhY3F1aXNpdGlvbiAqLwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuYwppbmRleCBmZjZjNDk4Li4zMTM5NTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAyLmMKQEAgLTU1LDcgKzU1LDcgQEAKIAogLyogUmVnaXN0ZXIgdmFsdWVzIHRvIGluaXRpYWxpc2UgdGhlIGRlbW9kICovCiBzdGF0aWMgY29uc3QgdTggaW5pdF90YWJbXSA9IHsKLQkweDAwLCAweDAwLCAvKiBTdG9wIGFxdWlzaXRpb24gKi8KKwkweDAwLCAweDAwLCAvKiBTdG9wIGFjcXVpc2l0aW9uICovCiAJMHgwQiwgMHgwNiwKIAkweDA5LCAweDAxLAogCTB4MEQsIDB4NDEsCkBAIC0zMTAsNyArMzEwLDcgQEAKIAkJCSYgMHhmYyk7CiAJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsCiAJCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKSAmIDB4QkYpIHwgMHg0MCk7Ci0JCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MDEpOyAvKiBCZWdpbiBhcXVpc2l0aW9uICovCisJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MDEpOyAvKiBCZWdpbiBhY3F1aXNpdGlvbiAqLwogCQlkcHJpbnRrKCIlczogQXV0b2RldGVjdGluZ1xuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gMDsKIAl9CkBAIC00MjQsNyArNDI0LDcgQEAKIAljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBDLAogCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKSAmIDB4QkYpIHwgMHg0MCk7CiAKLQkvKiBCZWdpbiBjaGFubmVsIGFxdWlzaXRpb24gKi8KKwkvKiBCZWdpbiBjaGFubmVsIGFjcXVpc2l0aW9uICovCiAJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMHgwMSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEwLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMC5jCmluZGV4IDdhMWE1YmMuLmJmOWM5OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTAuYwpAQCAtNTQ0LDcgKzU0NCw3IEBACiAJY3gyNDExMF9zZXRfaW52ZXJzaW9uIChzdGF0ZSwgcC0+aW52ZXJzaW9uKTsKIAljeDI0MTEwX3NldF9mZWMgKHN0YXRlLCBwLT51LnFwc2suZmVjX2lubmVyKTsKIAljeDI0MTEwX3NldF9zeW1ib2xyYXRlIChzdGF0ZSwgcC0+dS5xcHNrLnN5bWJvbF9yYXRlKTsKLQljeDI0MTEwX3dyaXRlcmVnKHN0YXRlLDB4MDQsMHgwNSk7IC8qIHN0YXJ0IGFxdWlzaXRpb24gKi8KKwljeDI0MTEwX3dyaXRlcmVnKHN0YXRlLDB4MDQsMHgwNSk7IC8qIHN0YXJ0IGFjcXVpc2l0aW9uICovCiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEzLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMy5oCmluZGV4IDVkZTBmN2YuLjAxZWI3YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEzLmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgRHJpdmVyIGZvciBDb25leGFudCBDWDI0MTEzL0NYMjQxMjggVHVuZXIgKFNhdGVsaXRlKQorICogIERyaXZlciBmb3IgQ29uZXhhbnQgQ1gyNDExMy9DWDI0MTI4IFR1bmVyIChTYXRlbGxpdGUpCiAgKgogICogIENvcHlyaWdodCAoQykgMjAwNy04IFBhdHJpY2sgQm9ldHRjaGVyIDxwYkBsaW51eHR2Lm9yZz4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuYwppbmRleCBmYWQ2YTk5Li5iMWRkOGFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTIzLmMKQEAgLTk0OSw3ICs5NDksNyBAQAogCWVsc2UKIAkJZXJyKCJpdCBzZWVtcyBJIGRvbid0IGhhdmUgYSB0dW5lci4uLiIpOwogCi0JLyogRW5hYmxlIGF1dG9tYXRpYyBhcXVpc2l0aW9uIGFuZCByZXNldCBjeWNsZSAqLworCS8qIEVuYWJsZSBhdXRvbWF0aWMgYWNxdWlzaXRpb24gYW5kIHJlc2V0IGN5Y2xlICovCiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMywgKGN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgwMykgfCAweDA3KSk7CiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMHgxMCk7CiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvZHJ4Mzk3eEQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcngzOTd4RC5jCmluZGV4IGEwNTAwN2MuLjUzNmYwMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcngzOTd4RC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcngzOTd4RC5jCkBAIC0xMDk3LDcgKzEwOTcsNyBAQAogCXMtPmNvbmZpZy5pZmFnYy53MEEgPSAweDNmZjsKIAlzLT5jb25maWcuaWZhZ2MudzBDID0gMHgzODg7CiAKLQkvKiBmb3Igc2lnbmFsIHN0cmVuZ2h0IGNhbGN1bGF0aW9ucyAqLworCS8qIGZvciBzaWduYWwgc3RyZW5ndGggY2FsY3VsYXRpb25zICovCiAJcy0+Y29uZmlnLnNzNzYgPSA4MjA7CiAJcy0+Y29uZmlnLnNzNzggPSAyMjAwOwogCXMtPmNvbmZpZy5zczdBID0gMTUwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMTYuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tYjg2YTE2LmMKaW5kZXggMzNiNjMyMy4uYzI4MzExMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMTYuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmExNi5jCkBAIC0xNjMwLDcgKzE2MzAsNyBAQAogCXN0YXRlLT5zcmF0ZSA9IHAtPnUucXBzay5zeW1ib2xfcmF0ZSAvIDEwMDA7CiAKIAlpZiAoIW1iODZhMTZfc2V0X2ZlKHN0YXRlKSkgewotCQlkcHJpbnRrKHZlcmJvc2UsIE1CODZBMTZfRVJST1IsIDEsICJTdWNjZXNmdWxseSBhY3F1aXJlZCBMT0NLIik7CisJCWRwcmludGsodmVyYm9zZSwgTUI4NkExNl9FUlJPUiwgMSwgIlN1Y2Nlc3NmdWxseSBhY3F1aXJlZCBMT0NLIik7CiAJCXJldHVybiBEVkJGRV9BTEdPX1NFQVJDSF9TVUNDRVNTOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmEyMHMuYwppbmRleCBjYzRhY2QyLi4wZjg2N2E1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmEyMHMuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmEyMHMuYwpAQCAtNDA2LDcgKzQwNiw3IEBACiAJCXByaW50ayhLRVJOX0lORk8gIm1iODZhMjBzOiBJbml0IGZhaWxlZC4gV2lsbCB0cnkgYWdhaW4gbGF0ZXJcbiIpOwogCX0gZWxzZSB7CiAJCXN0YXRlLT5uZWVkX2luaXQgPSBmYWxzZTsKLQkJZHByaW50aygiSW5pdGlhbGl6YXRpb24gc3VjY2VkZWQuXG4iKTsKKwkJZHByaW50aygiSW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLlxuIik7CiAJfQogCXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tdDMxMi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL210MzEyLmMKaW5kZXggNDcyOTA3ZC4uODNlNmYxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL210MzEyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL210MzEyLmMKQEAgLTY3MCw3ICs2NzAsNyBAQAogCQlpZiAocmV0IDwgMCkKIAkJCWdvdG8gZXJyb3I7CiAKLQkJLyogcHJlc2VydmUgdGhpcyBiaXQgdG8gbm90IGFjY2lkZW50bHkgc2h1dGRvd24gQURDICovCisJCS8qIHByZXNlcnZlIHRoaXMgYml0IHRvIG5vdCBhY2NpZGVudGFsbHkgc2h1dGRvd24gQURDICovCiAJCXZhbCAmPSAweDgwOwogCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQyMC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MjAuYwppbmRleCBlODdiNzQ3Li4xN2Y4Y2RmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDIwLmMKQEAgLTIyNSw3ICsyMjUsNyBAQAogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKIAlpbnQgcmVzdWx0ID0gMDsKIAotCS8qIHNldHVwIGZvciBESVNFUUMgcmVjaWV2ZSAqLworCS8qIHNldHVwIGZvciBESVNFUUMgcmVjZWl2ZSAqLwogCXZhbCA9IHM1aDE0MjBfcmVhZHJlZyhzdGF0ZSwgMHgzYik7CiAJczVoMTQyMF93cml0ZXJlZyhzdGF0ZSwgMHgzYiwgMHg4Mik7IC8qIEZJWE1FOiBndWVzcyAtIGRvIHdlIG5lZWQgdG8gc2V0IERJU19SRFkoMHgwOCkgaW4gcmVjZWl2ZSBtb2RlPyAqLwogCW1zbGVlcCgxNSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3RiNjEwMC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0YjYxMDAuYwppbmRleCA2NDY3M2I4Li5iYzFhOGFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3RiNjEwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdGI2MTAwLmMKQEAgLTM2MCw3ICszNjAsNyBAQAogCWVsc2UKIAkJb2RpdiA9IDA7CiAKLQkvKiBWQ08gZW5hYmxlZCwgc2VhY2ggY2xvY2sgb2ZmIGFzIHBlciBMTDMuNywgMy40LjEgKi8KKwkvKiBWQ08gZW5hYmxlZCwgc2VhcmNoIGNsb2NrIG9mZiBhcyBwZXIgTEwzLjcsIDMuNC4xICovCiAJcmVnc1tTVEI2MTAwX1ZDT10gPSAweGUwIHwgKG9kaXYgPDwgU1RCNjEwMF9WQ09fT0RJVl9TSElGVCk7CiAKIAkvKiBPU00JKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMjk3LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDI5Ny5jCmluZGV4IDRmZDc0NzkuLjg0ZDg4ZjMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDI5Ny5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMjk3LmMKQEAgLTQzNSw3ICs0MzUsNyBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQkvLyBkZXRlcm1pbmUgaW52ZXJzaW9uIGRlcGVuZGFudCBwYXJhbWV0ZXJzCisJLy8gZGV0ZXJtaW5lIGludmVyc2lvbiBkZXBlbmRlbnQgcGFyYW1ldGVycwogCWludmVyc2lvbiA9IHAtPmludmVyc2lvbjsKIAlpZiAoc3RhdGUtPmNvbmZpZy0+aW52ZXJ0KQogCQlpbnZlcnNpb24gPSAoaW52ZXJzaW9uID09IElOVkVSU0lPTl9PTikgPyBJTlZFUlNJT05fT0ZGIDogSU5WRVJTSU9OX09OOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAzNjcuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMzY3LmMKaW5kZXggNGUwZTZhOC4uZTU3YWI1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAzNjcuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDM2Ny5jCkBAIC0xMzI4LDcgKzEzMjgsNyBAQAogCiAJLypndWFyZD1zdHYwMzY3X3JlYWRiaXRzKHN0YXRlLEYzNjdURVJfU1lSX0dVQVJEKTsgKi8KIAotCS8qc3VwcmVzcyBFUFEgYXV0byBmb3IgU1lSX0dBUkQgMS8xNiBvciAxLzMyCisJLypzdXBwcmVzcyBFUFEgYXV0byBmb3IgU1lSX0dBUkQgMS8xNiBvciAxLzMyCiAJYW5kIHNldCBjaGFubmVsIHByZWRpY3RvciBpbiBhdXRvbWF0aWMgKi8KICNpZiAwCiAJc3dpdGNoIChndWFyZCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MDBfcHJpdi5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MDBfcHJpdi5oCmluZGV4IGI2MmIwZjAuLmUwZWE3NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTAwX3ByaXYuaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkwMF9wcml2LmgKQEAgLTIzOCw3ICsyMzgsNyBAQAogfTsKIAogc3RydWN0IHN0djA5MDBfaW5pdF9wYXJhbXN7Ci0JdTMyCWRtZF9yZWZfY2xrOy8qIFJlZnJlbmNlLElucHV0IGNsb2NrIGZvciB0aGUgZGVtb2QgaW4gSHogKi8KKwl1MzIJZG1kX3JlZl9jbGs7LyogUmVmZXJlbmNlLElucHV0IGNsb2NrIGZvciB0aGUgZGVtb2QgaW4gSHogKi8KIAogCS8qIERlbW9kdWxhdG9yIFR5cGUgKHNpbmdsZSBkZW1vZCBvciBkdWFsIGRlbW9kKSAqLwogCWVudW0gZmVfc3R2MDkwMF9kZW1vZF9tb2RlCWRlbW9kX21vZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkweC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MHguYwppbmRleCA0MWQwZjBhLi41MmQ4NzEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkweC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTB4LmMKQEAgLTE0MjQsNyArMTQyNCw3IEBACiAJCQlpZiAoU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgQ0ZSTE9XMCwgMHgwMCkgPCAwKQogCQkJCWdvdG8gZXJyOwogCi0JCQkvKmVubGFyZ2UgdGhlIHRpbWluZyBiYW5kd2l0aCBmb3IgTG93IFNSKi8KKwkJCS8qZW5sYXJnZSB0aGUgdGltaW5nIGJhbmR3aWR0aCBmb3IgTG93IFNSKi8KIAkJCWlmIChTVFYwOTB4X1dSSVRFX0RFTU9EKHN0YXRlLCBSVENTMiwgMHg2OCkgPCAwKQogCQkJCWdvdG8gZXJyOwogCQl9IGVsc2UgewpAQCAtMTQzMiwxNyArMTQzMiwxNyBAQAogCQkJU2V0IFRoZSBjYXJyaWVyIHNlYXJjaCB1cCBhbmQgbG93IHRvIGF1dG8gbW9kZSAqLwogCQkJaWYgKFNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIENBUkNGRywgMHhjNCkgPCAwKQogCQkJCWdvdG8gZXJyOwotCQkJLypyZWR1Y2UgdGhlIHRpbWluZyBiYW5kd2l0aCBmb3IgaGlnaCBTUiovCisJCQkvKnJlZHVjZSB0aGUgdGltaW5nIGJhbmR3aWR0aCBmb3IgaGlnaCBTUiovCiAJCQlpZiAoU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgUlRDUzIsIDB4NDQpIDwgMCkKIAkJCQlnb3RvIGVycjsKIAkJfQogCX0gZWxzZSB7CiAJCS8qID49IEN1dCAzICovCiAJCWlmIChzdGF0ZS0+c3JhdGUgPD0gNTAwMDAwMCkgewotCQkJLyogZW5sYXJnZSB0aGUgdGltaW5nIGJhbmR3aXRoIGZvciBMb3cgU1IgKi8KKwkJCS8qIGVubGFyZ2UgdGhlIHRpbWluZyBiYW5kd2lkdGggZm9yIExvdyBTUiAqLwogCQkJU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgUlRDUzIsIDB4NjgpOwogCQl9IGVsc2UgewotCQkJLyogcmVkdWNlIHRpbWluZyBiYW5kd2l0aCBmb3IgaGlnaCBTUiAqLworCQkJLyogcmVkdWNlIHRpbWluZyBiYW5kd2lkdGggZm9yIGhpZ2ggU1IgKi8KIAkJCVNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIFJUQ1MyLCAweDQ0KTsKIAkJfQogCkBAIC0yNDgyLDcgKzI0ODIsNyBAQAogCQkJCQlkdmJzMl9mbHlfd2hlZWwgPSBTVFYwOTB4X0dFVEZJRUxEX1B4KHJlZywgRkxZV0hFRUxfQ1BUX0ZJRUxEKTsKIAkJCQl9CiAJCQkJaWYgKGR2YnMyX2ZseV93aGVlbCA8IDB4ZCkgewotCQkJCQkvKkZBTFNFIGxvY2ssIFRoZSBkZW1vZCBpcyBsb29zaW5nIGxvY2sgKi8KKwkJCQkJLypGQUxTRSBsb2NrLCBUaGUgZGVtb2QgaXMgbG9zaW5nIGxvY2sgKi8KIAkJCQkJbG9jayA9IDA7CiAJCQkJCWlmICh0cmlhbHMgPCAyKSB7CiAJCQkJCQlpZiAoc3RhdGUtPmludGVybmFsLT5kZXZfdmVyID49IDB4MjApIHsKQEAgLTMyMDIsNyArMzIwMiw3IEBACiAJCQlnb3RvIGVycjsKIAkJaWYgKFNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIENPUlJFTE1BTlQsIDB4NzApIDwgMCkKIAkJCWdvdG8gZXJyOwotCQlpZiAoc3R2MDkweF9zZXRfc3JhdGUoc3RhdGUsIDEwMDAwMDApIDwgMCkgLyogaW5pdGFsIHNyYXRlID0gMU1zcHMgKi8KKwkJaWYgKHN0djA5MHhfc2V0X3NyYXRlKHN0YXRlLCAxMDAwMDAwKSA8IDApIC8qIGluaXRpYWwgc3JhdGUgPSAxTXNwcyAqLwogCQkJZ290byBlcnI7CiAJfSBlbHNlIHsKIAkJLyoga25vd24gc3JhdGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL21hbnRpcy9tYW50aXNfdWFydC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvbWFudGlzL21hbnRpc191YXJ0LmMKaW5kZXggOTdiODg5ZS4uZjgwN2M4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvbWFudGlzL21hbnRpc191YXJ0LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvbWFudGlzL21hbnRpc191YXJ0LmMKQEAgLTE3Miw3ICsxNzIsNyBAQAogCW1td3JpdGUobW1yZWFkKE1BTlRJU19VQVJUX0NUTCkgfCBNQU5USVNfVUFSVF9SWElOVCwgTUFOVElTX1VBUlRfQ1RMKTsKIAogCXNjaGVkdWxlX3dvcmsoJm1hbnRpcy0+dWFydF93b3JrKTsKLQlkcHJpbnRrKE1BTlRJU19ERUJVRywgMSwgIlVBUlQgc3VjY2VzZnVsbHkgaW5pdGlhbGl6ZWQiKTsKKwlkcHJpbnRrKE1BTlRJU19ERUJVRywgMSwgIlVBUlQgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIik7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL25nZW5lL25nZW5lLWNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL25nZW5lL25nZW5lLWNvcmUuYwppbmRleCAxNzVhMGY2Li5jY2MyZDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9uZ2VuZS9uZ2VuZS1jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvbmdlbmUvbmdlbmUtY29yZS5jCkBAIC0xMjIsNyArMTIyLDcgQEAKIAkJCQkJCUN1ci0+bmdlbmVCdWZmZXIuU1IuRmxhZ3MgJj0KIAkJCQkJCQl+MHg0MDsKIAkJCQkJCWJyZWFrOwotCQkJCQkJLyogU3RvcCBwcm9jY2Vzc2luZyBzdHJlYW0gKi8KKwkJCQkJCS8qIFN0b3AgcHJvY2Vzc2luZyBzdHJlYW0gKi8KIAkJCQkJfQogCQkJCX0gZWxzZSB7CiAJCQkJCS8qIFdlIGdvdCBhIHZhbGlkIGJ1ZmZlciwKQEAgLTEzMyw3ICsxMzMsNyBAQAogCQkJCXByaW50ayhLRVJOX0VSUiBERVZJQ0VfTkFNRSAiOiBPT1BTXG4iKTsKIAkJCQlpZiAoY2hhbi0+SFdTdGF0ZSA9PSBIV1NUQVRFX1JVTikgewogCQkJCQlDdXItPm5nZW5lQnVmZmVyLlNSLkZsYWdzICY9IH4weDQwOwotCQkJCQlicmVhazsJLyogU3RvcCBwcm9jY2Vzc2luZyBzdHJlYW0gKi8KKwkJCQkJYnJlYWs7CS8qIFN0b3AgcHJvY2Vzc2luZyBzdHJlYW0gKi8KIAkJCQl9CiAJCQl9CiAJCQlpZiAoY2hhbi0+QXVkaW9EVE9VcGRhdGVkKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMKaW5kZXggNmNhNjcxM2QuLjdjYjc5ZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL3BsdXRvMi9wbHV0bzIuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMKQEAgLTI5NCwxMyArMjk0LDEzIEBACiAKIAkvKiBXb3JrYXJvdW5kIGZvciBicm9rZW4gaGFyZHdhcmU6CiAJICogWzFdIE9uIHN0YXJ0dXAgTkJQQUNLRVRTIHNlZW1zIHRvIGNvbnRhaW4gYW4gdW5pbml0aWFsaXplZCB2YWx1ZSwKLQkgKiAgICAgYnV0IG5vIHBhY2tldHMgaGF2ZSBiZWVuIHRyYW5zZmVyZWQuCisJICogICAgIGJ1dCBubyBwYWNrZXRzIGhhdmUgYmVlbiB0cmFuc2ZlcnJlZC4KIAkgKiBbMl0gU29tZXRpbWVzIChhY3R1YWxseSB2ZXJ5IG9mdGVuKSBOQlBBQ0tFVFMgc3RheXMgYXQgemVybwotCSAqICAgICBhbHRob3VnaCBvbmUgcGFja2V0IGhhcyBiZWVuIHRyYW5zZmVyZWQuCisJICogICAgIGFsdGhvdWdoIG9uZSBwYWNrZXQgaGFzIGJlZW4gdHJhbnNmZXJyZWQuCiAJICogWzNdIFNvbWV0aW1lcyAoYWN0dWFsbHkgcmFyZWx5KSwgdGhlIGNhcmQgZ2V0cyBpbnRvIGFuIGVycm9uZW91cwogCSAqICAgICBtb2RlIHdoZXJlIGl0IGNvbnRpbnVvdXNseSBnZW5lcmF0ZXMgaW50ZXJydXB0cywgY2xhaW1pbmcgaXQKLQkgKiAgICAgaGFzIHJlY2lldmVkIG5icGFja2V0cz5UU19ETUFfUEFDS0VUUyBwYWNrZXRzLCBidXQgbm8gcGFja2V0Ci0JICogICAgIGhhcyBiZWVuIHRyYW5zZmVyZWQuIE9ubHkgYSByZXNldCBzZWVtcyB0byBzb2x2ZSB0aGlzCisJICogICAgIGhhcyByZWNlaXZlZCBuYnBhY2tldHM+VFNfRE1BX1BBQ0tFVFMgcGFja2V0cywgYnV0IG5vIHBhY2tldAorCSAqICAgICBoYXMgYmVlbiB0cmFuc2ZlcnJlZC4gT25seSBhIHJlc2V0IHNlZW1zIHRvIHNvbHZlIHRoaXMKIAkgKi8KIAlpZiAoKG5icGFja2V0cyA9PSAwKSB8fCAobmJwYWNrZXRzID4gVFNfRE1BX1BBQ0tFVFMpKSB7CiAJCXVuc2lnbmVkIGludCBpID0gMDsKQEAgLTMzMiw3ICszMzIsNyBAQAogCXN0cnVjdCBwbHV0byAqcGx1dG8gPSBkZXZfaWQ7CiAJdTMyIHRzY3I7CiAKLQkvKiBjaGVjayB3aGV0aGVyIGFuIGludGVycnVwdCBvY2N1cmVkIG9uIHRoaXMgZGV2aWNlICovCisJLyogY2hlY2sgd2hldGhlciBhbiBpbnRlcnJ1cHQgb2NjdXJyZWQgb24gdGhpcyBkZXZpY2UgKi8KIAl0c2NyID0gcGx1dG9fcmVhZHJlZyhwbHV0bywgUkVHX1RTQ1IpOwogCWlmICghKHRzY3IgJiAoVFNDUl9ERSB8IFRTQ1JfT1ZSKSkpCiAJCXJldHVybiBJUlFfTk9ORTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL3NpYW5vL3Ntc2R2Yi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zZHZiLmMKaW5kZXggYjgwZDA5Yi4uMzdjNTk0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zZHZiLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zZHZiLmMKQEAgLTY1MCw3ICs2NTAsNyBAQAogCQlpZiAoc3RhdHVzICYgRkVfSEFTX0xPQ0spCiAJCQlyZXR1cm4gcmV0OwogCi0JCS8qIHByZXZpb3VzIHR1bmUgZGlkbnQgbG9jayAtIGVuYWJsZSBMTkEgYW5kIHR1bmUgYWdhaW4gKi8KKwkJLyogcHJldmlvdXMgdHVuZSBkaWRuJ3QgbG9jayAtIGVuYWJsZSBMTkEgYW5kIHR1bmUgYWdhaW4gKi8KIAkJc21zX2JvYXJkX2xuYV9jb250cm9sKGNsaWVudC0+Y29yZWRldiwgMSk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9hdjcxMTAuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2F2NzExMC5jCmluZGV4IGZjMGE2MGYuLjNkMjA3MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2F2NzExMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2F2NzExMC5jCkBAIC0yMzMyLDcgKzIzMzIsNyBAQAogICogaW5jcmVtZW50LiBUaGF0J3MgaG93IHRoZSA3MTQ2IGlzIHByb2dyYW1tZWQgdG8gZG8gZXZlbnQKICAqIGNvdW50aW5nIGluIHRoaXMgYnVkZ2V0LXBhdGNoLmMKICAqIEkgKnRoaW5rKiBIUFMgc2V0dGluZyBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHBoYXNlCi0gKiBvZiBIUyBidXQgSSBjYW50IGJlIDEwMCUgc3VyZSBpbiB0aGF0LgorICogb2YgSFMgYnV0IEkgY2FuJ3QgYmUgMTAwJSBzdXJlIGluIHRoYXQuCiAgKgogICogaGFyZHdhcmUgZGVidWcgbm90ZTogYSB3b3JraW5nIGJ1ZGdldCBjYXJkIChpbmNsdWRpbmcgYnVkZ2V0IHBhdGNoKQogICogd2l0aCB2cGVpcnEoKSBpbnRlcnJ1cHQgc2V0dXAgaW4gbW9kZSAiMHg5MCIgKGV2ZXJ5IDY0Sykgd2lsbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvdHRwY2kvYnVkZ2V0LXBhdGNoLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9idWRnZXQtcGF0Y2guYwppbmRleCA1Nzk4MzU1Li4zMzk1ZDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9idWRnZXQtcGF0Y2guYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9idWRnZXQtcGF0Y2guYwpAQCAtNTM5LDcgKzUzOSw3IEBACiAqKiAgICAgIGluY3JlbWVudC4gVGhhdCdzIGhvdyB0aGUgNzE0NiBpcyBwcm9ncmFtbWVkIHRvIGRvIGV2ZW50CiAqKiAgICAgIGNvdW50aW5nIGluIHRoaXMgYnVkZ2V0LXBhdGNoLmMKICoqICAgICAgSSAqdGhpbmsqIEhQUyBzZXR0aW5nIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgcGhhc2UKLSoqICAgICAgb2YgSFMgYnV0IEkgY2FudCBiZSAxMDAlIHN1cmUgaW4gdGhhdC4KKyoqICAgICAgb2YgSFMgYnV0IEkgY2FuJ3QgYmUgMTAwJSBzdXJlIGluIHRoYXQuCiAKICoqICAgICAgaGFyZHdhcmUgZGVidWcgbm90ZTogYSB3b3JraW5nIGJ1ZGdldCBjYXJkIChpbmNsdWRpbmcgYnVkZ2V0IHBhdGNoKQogKiogICAgICB3aXRoIHZwZWlycSgpIGludGVycnVwdCBzZXR1cCBpbiBtb2RlICIweDkwIiAoZXZlcnkgNjRLKSB3aWxsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1kZWMvdHR1c2JfZGVjLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1kZWMvdHR1c2JfZGVjLmMKaW5kZXggZmUxYjgwMy4uZjg5M2JmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvdHR1c2ItZGVjL3R0dXNiX2RlYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0dXNiLWRlYy90dHVzYl9kZWMuYwpAQCAtMjM0LDcgKzIzNCw3IEBACiAJCSAqICh3aXRoIGJ1ZmZlclszXSA9PSAweDQwKSBpbiBhbiBpbnRlcnZhbGwgb2YgfjEwMG1zLgogCQkgKiBCdXQgdG8gaGFuZGxlIHRoaXMgY29ycmVjdGx5IHdlIGhhZCB0byBpbWxlbWVuZW50IHNvbWUKIAkJICoga2luZCBvZiB0aW1lciB3aGljaCBzaWduYWxzIGEgJ2tleSB1cCcgZXZlbnQgaWYgbm8KLQkJICoga2V5cmVwZWF0IHNpZ25hbCBpcyByZWNpZXZlZCBmb3IgbGV0cyBzYXkgMjAwbXMuCisJCSAqIGtleXJlcGVhdCBzaWduYWwgaXMgcmVjZWl2ZWQgZm9yIGxldHMgc2F5IDIwMG1zLgogCQkgKiB0aGlzIHNob3VsZC9jb3VsZCBiZSBhZGRlZCBsYXRlciAuLi4KIAkJICogZm9yIG5vdyBsZXRzIHJlcG9ydCBlYWNoIHNpZ25hbCBhcyBhIGtleSBkb3duIGFuZCB1cCovCiAJCWRwcmludGsoIiVzOnJjIHNpZ25hbDolZFxuIiwgX19mdW5jX18sIGJ1ZmZlcls0XSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLW1yODAwLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLW1yODAwLmMKaW5kZXggZTZiMmQwOC4uYjNhNjM1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1tcjgwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tbXI4MDAuYwpAQCAtOTksNyArOTksNyBAQAogCiAvKgogICogQ29tbWFuZHMgdGhhdCBkZXZpY2Ugc2hvdWxkIHVuZGVyc3RhbmQKLSAqIExpc3QgaXNudCBmdWxsIGFuZCB3aWxsIGJlIHVwZGF0ZWQgd2l0aCBpbXBsZW1lbnRhdGlvbiBvZiBuZXcgZnVuY3Rpb25zCisgKiBMaXN0IGlzbid0IGZ1bGwgYW5kIHdpbGwgYmUgdXBkYXRlZCB3aXRoIGltcGxlbWVudGF0aW9uIG9mIG5ldyBmdW5jdGlvbnMKICAqLwogI2RlZmluZSBBTVJBRElPX1NFVF9GUkVRCTB4YTQKICNkZWZpbmUgQU1SQURJT19TRVRfTVVURQkweGFiCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy1pMmMuYyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzLWkyYy5jCmluZGV4IDBmYWI2ZjguLmRlY2EyZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzLWkyYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzLWkyYy5jCkBAIC00ODEsNyArNDgxLDcgQEAKIH0KIAogLyoKLSAqIHNpNDcxM193YWl0X3N0YyAtIFdhaXRzIFNUQyBpbnRlcnJ1cHQgYW5kIGNsZWFycyBzdGF0dXMgYml0cy4gVXNlZnVsbAorICogc2k0NzEzX3dhaXRfc3RjIC0gV2FpdHMgU1RDIGludGVycnVwdCBhbmQgY2xlYXJzIHN0YXR1cyBiaXRzLiBVc2VmdWwKICAqCQkgICAgIGZvciBUWF9UVU5FX1BPV0VSLCBUWF9UVU5FX0ZSRVEgYW5kIFRYX1RVTkVfTUVBUwogICogQHNkZXY6IHNpNDcxM19kZXZpY2Ugc3RydWN0dXJlIGZvciB0aGUgZGV2aWNlIHdlIGFyZSBjb21tdW5pY2F0aW5nCiAgKiBAdXNlY3M6IHRpbWVvdXQgdG8gd2FpdCBmb3IgU1RDIGludGVycnVwdCBzaWduYWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5jIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmMKaW5kZXggNjQ0NTRkMy4uMjZmYjljYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmMKQEAgLTM1Miw3ICszNTIsNyBAQAogCWlmICghYXRvbWljX3JlYWQoJmZtZGV2LT50eF9jbnQpKQogCQlyZXR1cm47CiAKLQkvKiBDaGVjaywgaXMgdGhlcmUgYW55IHRpbWVvdXQgaGFwcGVubmVkIHRvIGxhc3QgdHJhbnNtaXR0ZWQgcGFja2V0ICovCisJLyogQ2hlY2ssIGlzIHRoZXJlIGFueSB0aW1lb3V0IGhhcHBlbmVkIHRvIGxhc3QgdHJhbnNtaXR0ZWQgcGFja2V0ICovCiAJaWYgKChqaWZmaWVzIC0gZm1kZXYtPmxhc3RfdHhfamlmZmllcykgPiBGTV9EUlZfVFhfVElNRU9VVCkgewogCQlmbWVycigiVFggdGltZW91dCBvY2N1cnJlZFxuIik7CiAJCWF0b21pY19zZXQoJmZtZGV2LT50eF9jbnQsIDEpOwpAQCAtNDc4LDcgKzQ3OCw3IEBACiAJCXJldHVybiAtRVRJTUVET1VUOwogCX0KIAlpZiAoIWZtZGV2LT5yZXNwX3NrYikgewotCQlmbWVycigiUmVwb25zZSBTS0IgaXMgbWlzc2luZ1xuIik7CisJCWZtZXJyKCJSZXNwb25zZSBTS0IgaXMgbWlzc2luZ1xuIik7CiAJCXJldHVybiAtRUZBVUxUOwogCX0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZm1kZXYtPnJlc3Bfc2tiX2xvY2ssIGZsYWdzKTsKQEAgLTE1OTIsNyArMTU5Miw3IEBACiAJCWZtZGJnKCJGTSBDb3JlIGlzIGFscmVhZHkgZG93blxuIik7CiAJCXJldHVybiAwOwogCX0KLQkvKiBTZXZpY2UgcGVuZGluZyByZWFkICovCisJLyogU2VydmljZSBwZW5kaW5nIHJlYWQgKi8KIAl3YWtlX3VwX2ludGVycnVwdGlibGUoJmZtZGV2LT5yeC5yZHMucmVhZF9xdWV1ZSk7CiAKIAl0YXNrbGV0X2tpbGwoJmZtZGV2LT50eF90YXNrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5oIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmgKaW5kZXggNDI3YzQxNi4uYWVlMjQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmgKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmgKQEAgLTM2Miw3ICszNjIsNyBAQAogI2RlZmluZSBGTV9UWF9QUkVFTVBIXzUwVVMJCTAKICNkZWZpbmUgRk1fVFhfUFJFRU1QSF83NVVTCQkyCiAKLS8qIEZNIFRYIGFudGVubmEgaW1wZWRlbmNlIHZhbHVlcyAqLworLyogRk0gVFggYW50ZW5uYSBpbXBlZGFuY2UgdmFsdWVzICovCiAjZGVmaW5lIEZNX1RYX0FOVF9JTVBfNTAJCTAKICNkZWZpbmUgRk1fVFhfQU5UX0lNUF8yMDAJCTEKICNkZWZpbmUgRk1fVFhfQU5UX0lNUF81MDAJCTIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvZW5lX2lyLmMgYi9kcml2ZXJzL21lZGlhL3JjL2VuZV9pci5jCmluZGV4IDFhYzQ5MTMuLmE0M2VkNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMvZW5lX2lyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9lbmVfaXIuYwpAQCAtNTIwLDcgKzUyMCw3IEBACiAJZGV2LT5yeF9lbmFibGVkID0gZmFsc2U7CiB9CiAKLS8qIFRoaXMgcmVzZXRzIHRoZSByZWNlaXZlci4gVXNlZnVsbCB0byBzdG9wIHN0cmVhbSBvZiBzcGFjZXMgYXQgZW5kIG9mCisvKiBUaGlzIHJlc2V0cyB0aGUgcmVjZWl2ZXIuIFVzZWZ1bCB0byBzdG9wIHN0cmVhbSBvZiBzcGFjZXMgYXQgZW5kIG9mCiAgKiB0cmFuc21pc3Npb24KICAqLwogc3RhdGljIHZvaWQgZW5lX3J4X3Jlc2V0KHN0cnVjdCBlbmVfZGV2aWNlICpkZXYpCkBAIC0xMDg5LDcgKzEwODksNyBAQAogCWlmIChlcnJvciA8IDApCiAJCWdvdG8gZXJyb3I7CiAKLQllbmVfbm90aWNlKCJkcml2ZXIgaGFzIGJlZW4gc3VjY2VzZnVsbHkgbG9hZGVkIik7CisJZW5lX25vdGljZSgiZHJpdmVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBsb2FkZWQiKTsKIAlyZXR1cm4gMDsKIGVycm9yOgogCWlmIChkZXYgJiYgZGV2LT5pcnEgPj0gMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvaW1vbi5jIGIvZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKaW5kZXggZjcxNGUxYS4uZWJkNjhlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKQEAgLTEyOTMsNyArMTI5Myw3IEBACiAJICogY29udGFpbiBhIHBvc2l0aW9uIGNvb3JkaW5hdGUgKHgseSksIHdpdGggZWFjaCBjb21wb25lbnQgcmFuZ2luZwogCSAqIGZyb20gLTE0IHRvIDE0LiBXZSB3YW50IHRvIGRvd24tc2FtcGxlIHRoaXMgdG8gb25seSA0IGRpc2NyZXRlIHZhbHVlcwogCSAqIGZvciB1cC9kb3duL2xlZnQvcmlnaHQgYXJyb3cga2V5cy4gQWxzbywgd2hlbiB5b3UgZ2V0IHRvbyBjbG9zZSB0bwotCSAqIGRpYWdvbmFscywgaXQgaGFzIGEgdGVuZGFuY3kgdG8ganVtcCBiYWNrIGFuZCBmb3J0aCwgc28gbGV0cyB0cnkgdG8KKwkgKiBkaWFnb25hbHMsIGl0IGhhcyBhIHRlbmRlbmN5IHRvIGp1bXAgYmFjayBhbmQgZm9ydGgsIHNvIGxldHMgdHJ5IHRvCiAJICogaWdub3JlIHdoZW4gdGhleSBnZXQgdG9vIGNsb3NlLgogCSAqLwogCWlmIChpY3R4LT5wcm9kdWN0ICE9IDB4ZmZkYykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9pci1yYXcuYyBiL2RyaXZlcnMvbWVkaWEvcmMvaXItcmF3LmMKaW5kZXggMDFmMjU4YS4uMTFjMTlkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9pci1yYXcuYworKysgYi9kcml2ZXJzL21lZGlhL3JjL2lyLXJhdy5jCkBAIC0xNTMsNyArMTUzLDcgQEAKICAqIEB0eXBlOgl0aGUgdHlwZSBvZiB0aGUgZXZlbnQgdGhhdCBoYXMgb2NjdXJyZWQKICAqCiAgKiBUaGlzIHJvdXRpbmUgKHdoaWNoIG1heSBiZSBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgY29udGV4dCkgd29ya3MKLSAqIGluIHNpbWlsaWFyIG1hbm5lciB0byBpcl9yYXdfZXZlbnRfc3RvcmVfZWRnZS4KKyAqIGluIHNpbWlsYXIgbWFubmVyIHRvIGlyX3Jhd19ldmVudF9zdG9yZV9lZGdlLgogICogVGhpcyByb3V0aW5lIGlzIGludGVuZGVkIGZvciBkZXZpY2VzIHdpdGggbGltaXRlZCBpbnRlcm5hbCBidWZmZXIKICAqIEl0IGF1dG9tZXJnZXMgc2FtcGxlcyBvZiBzYW1lIHR5cGUsIGFuZCBoYW5kbGVzIHRpbWVvdXRzCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1sbWUyNTEwLmMgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbG1lMjUxMC5jCmluZGV4IDNjMTkxMzkuLmFmYWUxNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1sbWUyNTEwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLWxtZTI1MTAuYwpAQCAtNTUsNyArNTUsNyBAQAogCXsgMHhmZjQwZmIwNCwgS0VZX01FRElBX1JFUEVBVH0sIC8qIFJlY2FsbCAqLwogCXsgMHhmZjQwZTUxYSwgS0VZX1BBVVNFIH0sIC8qIFRpbWVzaGlmdCAqLwogCXsgMHhmZjQwZmQwMiwgS0VZX1ZPTFVNRVVQIH0sIC8qIDIgeCAtLysgS2V5cyBub3QgbWFya2VkICovCi0JeyAweGZmNDBmOTA2LCBLRVlfVk9MVU1FRE9XTiB9LCAvKiBWb2x1bW5lIGRlZmluZWQgYXMgcmlnaHQgaGFuZCovCisJeyAweGZmNDBmOTA2LCBLRVlfVk9MVU1FRE9XTiB9LCAvKiBWb2x1bWUgZGVmaW5lZCBhcyByaWdodCBoYW5kKi8KIAl7IDB4ZmY0MGZlMDEsIEtFWV9DSEFOTkVMVVAgfSwKIAl7IDB4ZmY0MGZhMDUsIEtFWV9DSEFOTkVMRE9XTiB9LAogCXsgMHhmZjQwZWIxNCwgS0VZX1pPT00gfSwKQEAgLTc2LDcgKzc2LDcgQEAKIAl7IDB4ZmYwMGJiNDQsIEtFWV9NRURJQV9SRVBFQVR9LCAvKiBSZWNhbGwgKi8KIAl7IDB4ZmYwMGI1NGEsIEtFWV9QQVVTRSB9LCAvKiBUaW1lc2hpZnQgKi8KIAl7IDB4ZmYwMGI4NDcsIEtFWV9WT0xVTUVVUCB9LCAvKiAyIHggLS8rIEtleXMgbm90IG1hcmtlZCAqLwotCXsgMHhmZjAwYmM0MywgS0VZX1ZPTFVNRURPV04gfSwgLyogVm9sdW1uZSBkZWZpbmVkIGFzIHJpZ2h0IGhhbmQqLworCXsgMHhmZjAwYmM0MywgS0VZX1ZPTFVNRURPV04gfSwgLyogVm9sdW1lIGRlZmluZWQgYXMgcmlnaHQgaGFuZCovCiAJeyAweGZmMDBiOTQ2LCBLRVlfQ0hBTk5FTFVQIH0sCiAJeyAweGZmMDBiZjQwLCBLRVlfQ0hBTk5FTERPV04gfSwKIAl7IDB4ZmYwMGY3MDgsIEtFWV9aT09NIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbXNpLXR2YW55d2hlcmUuYyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1tc2ktdHZhbnl3aGVyZS5jCmluZGV4IDE4YjM3ZmEuLmZkZDIxM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1tc2ktdHZhbnl3aGVyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1tc2ktdHZhbnl3aGVyZS5jCkBAIC0yOSw3ICsyOSw3IEBACiAKIAl7IDB4MGMsIEtFWV9NVVRFIH0sCiAJeyAweDBmLCBLRVlfU0NSRUVOIH0sCQkvKiBGdWxsIFNjcmVlbiAqLwotCXsgMHgxMCwgS0VZX0ZOIH0sCQkvKiBGdW50aW9uICovCisJeyAweDEwLCBLRVlfRk4gfSwJCS8qIEZ1bmN0aW9uICovCiAJeyAweDExLCBLRVlfVElNRSB9LAkJLyogVGltZSBzaGlmdCAqLwogCXsgMHgxMiwgS0VZX1BPV0VSIH0sCiAJeyAweDEzLCBLRVlfTUVESUEgfSwJCS8qIE1UUyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLW5vcndvb2QuYyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1ub3J3b29kLmMKaW5kZXggZjFjMTI4MS4uZjlmMmZhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLW5vcndvb2QuYworKysgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbm9yd29vZC5jCkBAIC00OSw3ICs0OSw3IEBACiAJeyAweDM3LCBLRVlfUExBWSB9LAkJLyogUGxheSAgICAgICAgICAgICAgICAqLwogCXsgMHgzNiwgS0VZX1BBVVNFIH0sCQkvKiBQYXVzZSAgICAgICAgICAgICAgICovCiAJeyAweDJiLCBLRVlfU1RPUCB9LAkJLyogU3RvcCAgICAgICAgICAgICAgICAqLwotCXsgMHg2NywgS0VZX0ZBU1RGT1JXQVJEIH0sCS8qIEZvd2FyZCAgICAgICAgICAgICAgKi8KKwl7IDB4NjcsIEtFWV9GQVNURk9SV0FSRCB9LAkvKiBGb3J3YXJkICAgICAgICAgICAgICAqLwogCXsgMHg2NiwgS0VZX1JFV0lORCB9LAkJLyogUmV3aW5kICAgICAgICAgICAgICAqLwogCXsgMHgzZSwgS0VZX1NFQVJDSCB9LAkJLyogQXV0byBTY2FuICAgICAgICAgICAqLwogCXsgMHgyZSwgS0VZX0NBTUVSQSB9LAkJLyogQ2FwdHVyZSBWaWRlbyAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9yYy1tYWluLmMgYi9kcml2ZXJzL21lZGlhL3JjL3JjLW1haW4uYwppbmRleCA1YWMxYmFmLi5mNTNmOWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JjL3JjLW1haW4uYworKysgYi9kcml2ZXJzL21lZGlhL3JjL3JjLW1haW4uYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAgKiBAcmNfbWFwOglzY2FuY29kZSB0YWJsZSB0byBiZSBzZWFyY2hlZAogICogQHNjYW5jb2RlOgl0aGUgZGVzaXJlZCBzY2FuY29kZQogICogQHJlc2l6ZToJY29udHJvbHMgd2hldGhlciB3ZSBhbGxvd2VkIHRvIHJlc2l6ZSB0aGUgdGFibGUgdG8KLSAqCQlhY2NvbW9kYXRlIG5vdCB5ZXQgcHJlc2VudCBzY2FuY29kZXMKKyAqCQlhY2NvbW1vZGF0ZSBub3QgeWV0IHByZXNlbnQgc2NhbmNvZGVzCiAgKiBAcmV0dXJuOglpbmRleCBvZiB0aGUgbWFwcGluZyBjb250YWluaW5nIHNjYW5jb2RlIGluIHF1ZXN0aW9uCiAgKgkJb3IgLTFVIGluIGNhc2Ugb2YgZmFpbHVyZS4KICAqCkBAIC0xMDM3LDcgKzEwMzcsNyBAQAogCQlnb3RvIG91dF90YWJsZTsKIAogCS8qCi0JICogRGVmYXVsdCBkZWxheSBvZiAyNTBtcyBpcyB0b28gc2hvcnQgZm9yIHNvbWUgcHJvdG9jb2xzLCBleHBlY2lhbGx5CisJICogRGVmYXVsdCBkZWxheSBvZiAyNTBtcyBpcyB0b28gc2hvcnQgZm9yIHNvbWUgcHJvdG9jb2xzLCBlc3BlY2lhbGx5CiAJICogc2luY2UgdGhlIHRpbWVvdXQgaXMgY3VycmVudGx5IHNldCB0byAyNTBtcy4gSW5jcmVhc2UgaXQgdG8gNTAwbXMsCiAJICogdG8gYXZvaWQgd3JvbmcgcmVwZXRpdGlvbiBvZiB0aGUga2V5Y29kZXMuIE5vdGUgdGhhdCB0aGlzIG11c3QgYmUKIAkgKiBzZXQgYWZ0ZXIgdGhlIGNhbGwgdG8gaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKCkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC12aWRlby5jCmluZGV4IDZhZDgzYTEuLmMwM2ViMjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC12aWRlby5jCkBAIC01MDIsNyArNTAyLDcgQEAKIAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBhdTA4MjhfYnVmZmVyLCB2Yi5xdWV1ZSk7Ci0JLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bGwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCisJLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KIAlvdXRwID0gdmlkZW9idWZfdG9fdm1hbGxvYygmKCpidWYpLT52Yik7CiAJbWVtc2V0KG91dHAsIDB4MDAsICgqYnVmKS0+dmIuc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKaW5kZXggMjQyZjBkNS4uM2M5ZTZjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKQEAgLTIyNDQsOCArMjI0NCw4IEBACiAJfSwKIAlbQlRUVl9CT0FSRF9QSUNPTE9fVEVUUkFfQ0hJUF0gPSB7CiAJCS8qRXJpYyBERUJJRUYgPGRlYmllZkB0ZWxlbXNhLmNvbT4qLwotCQkvKkVVUkVTWVMgUGljb2xvIFRldHJhIDogNCBDb25leGFudCBGdXNpb24gODc4QSwgbm8gYXVkaW8sIHZpZGVvIGlucHV0IHNldCB3aXRoIGFuYWxvZyBtdWx0aXBsZXhlcnMgR1BJTyBjb250cm9sZWQqLwotCQkvKiBhZGRzIHBpY29sb190ZXRyYV9tdXhzZWwoKSwgcGljb2xvX3RldHJhX2luaXQoKSwgdGhlIGZvbG93aW5nIGRlY2xhcmF0aW9uIHN0cnVjdXJlLCBhbmQgI2RlZmluZSBCVFRWX0JPQVJEX1BJQ09MT19URVRSQV9DSElQKi8KKwkJLypFVVJFU1lTIFBpY29sbyBUZXRyYSA6IDQgQ29uZXhhbnQgRnVzaW9uIDg3OEEsIG5vIGF1ZGlvLCB2aWRlbyBpbnB1dCBzZXQgd2l0aCBhbmFsb2cgbXVsdGlwbGV4ZXJzIEdQSU8gY29udHJvbGxlZCovCisJCS8qIGFkZHMgcGljb2xvX3RldHJhX211eHNlbCgpLCBwaWNvbG9fdGV0cmFfaW5pdCgpLCB0aGUgZm9sbG93aW5nIGRlY2xhcmF0aW9uIHN0cnVjdXJlLCBhbmQgI2RlZmluZSBCVFRWX0JPQVJEX1BJQ09MT19URVRSQV9DSElQKi8KIAkJLyoweDc5IGluIGJ0dHYuaCovCiAJCS5uYW1lICAgICAgICAgICA9ICJFdXJlc3lzIFBpY29sbyBUZXRyYSIsCiAJCS52aWRlb19pbnB1dHMgICA9IDQsCkBAIC00NTY3LDcgKzQ1NjcsNyBAQAogICogYXQgb25lIGlucHV0IHdoaWxlIHRoZSBtb25pdG9yIGlzIGxvb2tpbmcgYXQgYW5vdGhlci4KICAqCiAgKiBTaW5jZSBJJ3ZlIGNvdWxkbid0IGJlIGJvdGhlcmVkIGZpZ3VyaW5nIG91dCBob3cgdG8gYWRkIGFuCi0gKiBpbmRlcGVuZGFudCBtdXhzZWwgZm9yIHRoZSBtb25pdG9yIGJ1cywgSSd2ZSBqdXN0IHNldCBpdCB0bworICogaW5kZXBlbmRlbnQgbXV4c2VsIGZvciB0aGUgbW9uaXRvciBidXMsIEkndmUganVzdCBzZXQgaXQgdG8KICAqIHdoYXRldmVyIHRoZSBjYXJkIGlzIGxvb2tpbmcgYXQuCiAgKgogICogIE9VVDAgb2YgdGhlIFREQTg1NDAncyBpcyBjb25uZWN0ZWQgdG8gTVVYMCAgICAgICAgICgweDAzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWdwaW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1ncGlvLmMKaW5kZXggZmQ2MDRkMy4uMTNjZTcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWdwaW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0OHh4L2J0dHYtZ3Bpby5jCkBAIC0zLDcgKzMsNyBAQAogICAgIGJ0dHYtZ3Bpby5jICAtLSAgZ3BpbyBzdWIgZHJpdmVycwogCiAgICAgc3lzZnMtYmFzZWQgc3ViIGRyaXZlciBpbnRlcmZhY2UgZm9yIGJ0dHYKLSAgICBtYWlubHkgaW50ZW50ZWQgZm9yIGdwaW8gYWNjZXNzCisgICAgbWFpbmx5IGludGVuZGVkIGZvciBncGlvIGFjY2VzcwogCiAKICAgICBDb3B5cmlnaHQgKEMpIDE5OTYsOTcsOTggUmFscGggIE1ldHpsZXIgKHJqa21AdGhwLnVuaS1rb2Vsbi5kZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY2FmZV9jY2ljLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2NhZmVfY2NpYy5jCmluZGV4IDU1ZmZkNjAuLjY2NDcwMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY2FmZV9jY2ljLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jYWZlX2NjaWMuYwpAQCAtMzgzLDcgKzM4Myw3IEBACiAJICogY2F1c2VzIHRoZSBkZXZpY2UgdG8gZGllLgogCSAqIFVzZSBhIGJ1c3ktd2FpdCBiZWNhdXNlIHdlIG9mdGVuIHNlbmQgYSBsYXJnZSBxdWFudGl0eSBvZiBzbWFsbAogCSAqIGNvbW1hbmRzIGF0LW9uY2U7IHVzaW5nIG1zbGVlcCgpIHdvdWxkIGNhdXNlIGEgbG90IG9mIGNvbnRleHQKLQkgKiBzd2l0Y2hlcyB3aGljaCB0YWtlIGxvbmdlciB0aGFuIDJtcywgcmVzdWx0aW5nIGluIGEgbm90aWNhYmxlCisJICogc3dpdGNoZXMgd2hpY2ggdGFrZSBsb25nZXIgdGhhbiAybXMsIHJlc3VsdGluZyBpbiBhIG5vdGljZWFibGUKIAkgKiBib290LXRpbWUgYW5kIGNhcHR1cmUtc3RhcnQgZGVsYXlzLgogCSAqLwogCW1kZWxheSgyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWF2LWNvcmUuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWF2LWNvcmUuaAppbmRleCAxODhjOWMzLi5lOWM2OWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1hdi1jb3JlLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtYXYtY29yZS5oCkBAIC0xMDksNyArMTA5LDcgQEAKIAlpbnQgaXNfaW5pdGlhbGl6ZWQ7CiAKIAkvKgotCSAqIFRoZSBWQkkgc2xpY2VyIHN0YXJ0cyBvcGVyYXRpbmcgYW5kIGNvdW50aW5nIGxpbmVzLCBiZWdpbmluZyBhdAorCSAqIFRoZSBWQkkgc2xpY2VyIHN0YXJ0cyBvcGVyYXRpbmcgYW5kIGNvdW50aW5nIGxpbmVzLCBiZWdpbm5pbmcgYXQKIAkgKiBzbGljZXIgbGluZSBjb3VudCBvZiAxLCBhdCBEIGxpbmVzIGFmdGVyIHRoZSBkZWFzc2VydGlvbiBvZiBWUkVTRVQuCiAJICogVGhpcyBzdGFyaW5nIGZpZWxkIGxpbmUsIFMsIGlzIDYgKCYgMzE5KSBvciAxMCAoJiAyNzMpIGZvciA2MjUgb3IgNTI1CiAJICogbGluZSBzeXN0ZW1zIHJlc3BlY3RpdmVseS4gIFNsaWNlZCBhbmNpbGxhcnkgZGF0YSBjYXB0dXJlZCBvbiBWQkkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1pb2N0bC5jCmluZGV4IDg2YzMwYjkuLjRmMDQxYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWlvY3RsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtaW9jdGwuYwpAQCAtMzEyLDcgKzMxMiw3IEBACiAKIAkvKgogCSAqIFNldCB0aGUgZGlnaXRpemVyIHJlZ2lzdGVycyBmb3IgcmF3IGFjdGl2ZSBWQkkuCi0JICogTm90ZSBjeDE4X2F2X3ZiaV93aXBlcyBvdXQgYWxvdCBvZiB0aGUgcGFzc2VkIGluIGZtdCB1bmRlciB2YWxpZAorCSAqIE5vdGUgY3gxOF9hdl92Ymlfd2lwZXMgb3V0IGEgbG90IG9mIHRoZSBwYXNzZWQgaW4gZm10IHVuZGVyIHZhbGlkCiAJICogY2FsbGluZyBjb25kaXRpb25zCiAJICovCiAJcmV0ID0gdjRsMl9zdWJkZXZfY2FsbChjeC0+c2RfYXYsIHZiaSwgc19yYXdfZm10LCAmZm10LT5mbXQudmJpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LXZiaS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtdmJpLmMKaW5kZXggNTgyMjI3NS4uNmQzMTIxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtdmJpLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtdmJpLmMKQEAgLTI5LDcgKzI5LDcgQEAKIC8qCiAgKiBSYXN0ZXIgUmVmZXJlbmNlL1Byb3RlY3Rpb24gKFJQKSBieXRlcywgdXNlZCBpbiBTdGFydC9FbmQgQWN0aXZlCiAgKiBWaWRlbyBjb2RlcyBlbWl0dGVkIGZyb20gdGhlIGRpZ2l0emVyIGluIFZJUCAxLnggbW9kZSwgdGhhdCBmbGFnIHRoZSBzdGFydAotICogb2YgVkJJIHNhbXBsZSBvciBWQkkgYW5jaWxsaWFyeSBkYXRhIHJlZ2lvbnMgaW4gdGhlIGRpZ2l0aWFsIHJhdHNlciBsaW5lLgorICogb2YgVkJJIHNhbXBsZSBvciBWQkkgYW5jaWxsYXJ5IGRhdGEgcmVnaW9ucyBpbiB0aGUgZGlnaXRpYWwgcmF0c2VyIGxpbmUuCiAgKgogICogVGFzayBGaWVsZEV2ZW4gVmVydGljYWxCbGFuayBIb3Jpem9udGFsQmxhbmsgMCAwIDAgMAogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCmluZGV4IDYyODQzZDMuLjI4MGRmNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCkBAIC0yNTc3LDcgKzI1NzcsNyBAQAogCQkJYnJlYWs7CiAKIAkJY2FzZSA2OgkvKiB0czEgcGFyYWxsZWwgbW9kZSAqLwotCQkJY3gyMzF4eF9pbmZvKCIlczogc2V0IHRzMSBwYXJyYWxsZWwgbW9kZSByZWdpc3RlcnNcbiIsCisJCQljeDIzMXh4X2luZm8oIiVzOiBzZXQgdHMxIHBhcmFsbGVsIG1vZGUgcmVnaXN0ZXJzXG4iLAogCQkJCSAgICAgX19mdW5jX18pOwogCQkJc3RhdHVzID0gY3gyMzF4eF9tb2RlX3JlZ2lzdGVyKGRldiwgVFNfTU9ERV9SRUcsIDB4MTAwKTsKIAkJCXN0YXR1cyA9IGN4MjMxeHhfbW9kZV9yZWdpc3RlcihkZXYsIFRTMV9DRkdfUkVHLCAweDQwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12YmkuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZiaS5jCmluZGV4IDFkOTE0NDguLjFjN2E0ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZiaS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZiaS5jCkBAIC02MzEsNyArNjMxLDcgQEAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgY3gyMzF4eF9idWZmZXIsIHZiLnF1ZXVlKTsKIAotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtdmlkZW8uYwppbmRleCBmZmQ1YWY5Li5hNjljMjRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZpZGVvLmMKQEAgLTMwOSw3ICszMDksNyBAQAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBjeDIzMXh4X2J1ZmZlciwgdmIucXVldWUpOwogCi0JLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bGwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCisJLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KIAlvdXRwID0gdmlkZW9idWZfdG9fdm1hbGxvYygmKCpidWYpLT52Yik7CiAJbWVtc2V0KG91dHAsIDAsICgqYnVmKS0+dmIuc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jaW1heDIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jaW1heDIuYwppbmRleCAyMDliOTcxLi5jOWYxNWQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY2ltYXgyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2NpbWF4Mi5jCkBAIC00NDksNyArNDQ5LDcgQEAKIAkJMHgwNCwgLyogYWNrIGFjdGl2ZSBsb3cgKi8KIAkJMHgwMCwgLyogTE9DSyA9IDAgKi8KIAkJMHgzMywgLyogc2VyaWFsIG1vZGUsIHJpc2luZyBpbiwgcmlzaW5nIG91dCwgTVNCIGZpcnN0Ki8KLQkJMHgzMSwgLyogc3luY3Jvbml6YXRpb24gKi8KKwkJMHgzMSwgLyogc3luY2hyb25pemF0aW9uICovCiAJfTsKIAlpbnQgcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUuaAppbmRleCA4ZGIyNzk3Li5jMTg2NDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LmgKQEAgLTIxNCw3ICsyMTQsNyBAQAogCiAJLyogVmVuZG9ycyBjYW4gYW5kIGRvIHJ1biB0aGUgUENJZSBicmlkZ2UgYXQgZGlmZmVyZW50CiAJICogY2xvY2sgcmF0ZXMsIGRyaXZlbiBwaHlzaWNhbGx5IGJ5IGNyeXN0YWxzIG9uIHRoZSBQQ0JzLgotCSAqIFRoZSBjb3JlIGhhcyB0byBhY2NvbW9kYXRlIHRoaXMuIFRoaXMgYWxsb3dzIHRoZSB1c2VyCisJICogVGhlIGNvcmUgaGFzIHRvIGFjY29tbW9kYXRlIHRoaXMuIFRoaXMgYWxsb3dzIHRoZSB1c2VyCiAJICogdG8gYWRkIG5ldyBib2FyZHMgd2l0aCBuZXcgZnJlcXVlbmN5cy4gVGhlIHZhbHVlIGlzCiAJICogZXhwcmVzc2VkIGluIEh6LgogCSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjU4NDAvY3gyNTg0MC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjU4NDAvY3gyNTg0MC1jb3JlLmMKaW5kZXggMzU3OTZlMC4uYjdlZTJhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDI1ODQwL2N4MjU4NDAtY29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyNTg0MC9jeDI1ODQwLWNvcmUuYwpAQCAtMiw3ICsyLDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVWxmIEVrbHVuZAogICoKLSAqIEJhc2VkIG9uIHRoZSBzYWE3MTE1IGRyaXZlciBhbmQgb24gdGhlIGZpcnN0IHZlcmlzb24gb2YgQ2hyaXMgS2VubmVkeSdzCisgKiBCYXNlZCBvbiB0aGUgc2FhNzExNSBkcml2ZXIgYW5kIG9uIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIENocmlzIEtlbm5lZHkncwogICogY3gyNTg0MCBkcml2ZXIuCiAgKgogICogQ2hhbmdlcyBieSBUeWxlciBUcmFmZm9yZCA8dGF0cmFmZm9yZEBjb21jYXN0Lm5ldD4KQEAgLTQ0NSw3ICs0NDUsNyBAQAogCWN4MjU4NDBfd3JpdGUoY2xpZW50LCAweDkxOCwgMHhhMCk7CiAJY3gyNTg0MF93cml0ZShjbGllbnQsIDB4OTE5LCAweDAxKTsKIAotCS8qIHN0ZXJlbyBwcmVmZXJlZCAqLworCS8qIHN0ZXJlbyBwcmVmZXJyZWQgKi8KIAljeDI1ODQwX3dyaXRlKGNsaWVudCwgMHg4MDksIDB4MDQpOwogCS8qIEFDOTcgc2hpZnQgKi8KIAljeDI1ODQwX3dyaXRlKGNsaWVudCwgMHg4Y2YsIDB4MGYpOwpAQCAtNTQ2LDcgKzU0Niw3IEBACiAJICogQXV4IFBMTAogCSAqIEluaXRpYWwgc2V0dXAgZm9yIGF1ZGlvIHNhbXBsZSBjbG9jazoKIAkgKiA0OCBrc3BzLCAxNiBiaXRzL3NhbXBsZSwgeDE2MCBtdWx0aXBsaWVyID0gMTIyLjg4IE1IegotCSAqIEludGlhbCBJMlMgb3V0cHV0L21hc3RlciBjbG9jayg/KToKKwkgKiBJbml0aWFsIEkyUyBvdXRwdXQvbWFzdGVyIGNsb2NrKD8pOgogCSAqIDQ4IGtzcHMsIDE2IGJpdHMvc2FtcGxlLCB4MTYgbXVsdGlwbGllciA9IDEyLjI4OCBNSHoKIAkgKi8KIAlzd2l0Y2ggKHN0YXRlLT5pZCkgewpAQCAtOTAzLDcgKzkwMyw3IEBACiAJfSBlbHNlIGlmIChzdGQgJiBWNEwyX1NURF9QQUwpIHsKIAkJLyogQXV0b2RldGVjdCBhdWRpbyBzdGFuZGFyZCBhbmQgYXVkaW8gc3lzdGVtICovCiAJCWN4MjU4NDBfd3JpdGUoY2xpZW50LCAweDgwOCwgMHhmZik7Ci0JCS8qIFNpbmNlIHN5c3RlbSBQQUwtTCBpcyBwcmV0dHkgbXVjaCBub24tZXhpc3RhbnQgYW5kCisJCS8qIFNpbmNlIHN5c3RlbSBQQUwtTCBpcyBwcmV0dHkgbXVjaCBub24tZXhpc3RlbnQgYW5kCiAJCSAgIG5vdCB1c2VkIGJ5IGFueSBwdWJsaWMgYnJvYWRjYXN0IG5ldHdvcmssIGZvcmNlCiAJCSAgIDYuNSBNSHogY2FycmllciB0byBiZSBpbnRlcnByZXRlZCBhcyBTeXN0ZW0gREssCiAJCSAgIHRoaXMgYXZvaWRzIERLIGF1ZGlvIGRldGVjdGlvbiBpbnN0YWJpbGl0eSAqLwpAQCAtMTg1MSw3ICsxODUxLDcgQEAKIAkJCXJldCA9IFY0TDJfSURFTlRfQ1gyMzg4NV9BVjsKIAkJfSBlbHNlIHsKIAkJCS8qIENYMjM4ODcgaGFzIGEgYnJva2VuIERJRiwgYnV0IHRoZSByZWdpc3RlcnMKLQkJCSAqIGFwcGVhciB2YWxpZCAoYnV0IHVuc2VkKSwgZ29vZCBlbm91Z2ggdG8gZGV0ZWN0LiAqLworCQkJICogYXBwZWFyIHZhbGlkIChidXQgdW51c2VkKSwgZ29vZCBlbm91Z2ggdG8gZGV0ZWN0LiAqLwogCQkJcmV0ID0gVjRMMl9JREVOVF9DWDIzODg3X0FWOwogCQl9CiAJfSBlbHNlIGlmIChjeDI1ODQwX3JlYWQ0KGNsaWVudCwgMHgzMDApICYgMHgwZmZmZmZmZikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL2RtNjQ0eF9jY2RjLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvZG02NDR4X2NjZGMuYwppbmRleCA0OTBhYWZiLi5jOGIzMmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvZG02NDR4X2NjZGMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvZG02NDR4X2NjZGMuYwpAQCAtMjU4LDcgKzI1OCw3IEBACiAJLyoKIAkgKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIEZQQyB0YWJsZSBpZiBjdXJyZW50CiAJICogRlBDIHRhYmxlIGJ1ZmZlciBpcyBub3QgYmlnIGVub3VnaCB0bwotCSAqIGFjY29tb2RhdGUgRlBDIE51bWJlciByZXF1ZXN0ZWQKKwkgKiBhY2NvbW1vZGF0ZSBGUEMgTnVtYmVyIHJlcXVlc3RlZAogCSAqLwogCWlmIChyYXdfcGFyYW1zLT5mYXVsdF9weGwuZnBfbnVtICE9IGNvbmZpZ19wYXJhbXMtPmZhdWx0X3B4bC5mcF9udW0pIHsKIAkJaWYgKGZwY19waHlzYWRkciAhPSBOVUxMKSB7CkBAIC00MzYsNyArNDM2LDcgQEAKIAogCS8qCiAJICogY29uZmlndXJlIHRoZSBob3Jpem9udGFsIGxpbmUgb2Zmc2V0LiBUaGlzIHNob3VsZCBiZSBhCi0JICogb24gMzIgYnl0ZSBib25kYXJ5LiBTbyBjbGVhciBMU0IgNSBiaXRzCisJICogb24gMzIgYnl0ZSBib3VuZGFyeS4gU28gY2xlYXIgTFNCIDUgYml0cwogCSAqLwogCXJlZ3coKChwYXJhbXMtPndpbi53aWR0aCAqIDIgICsgMzEpICYgfjB4MWYpLCBDQ0RDX0hTSVpFX09GRik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYwppbmRleCA3MWU5NjFlNS4uNWIzOGZjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL3ZwZmVfY2FwdHVyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYwpAQCAtMTY5MSw3ICsxNjkxLDcgQEAKIAkJZ290byB1bmxvY2tfb3V0OwogCX0KIAotCS8qIGFkanVzdCB0aGUgd2lkdGggdG8gMTYgcGl4ZWwgYm91bmRyeSAqLworCS8qIGFkanVzdCB0aGUgd2lkdGggdG8gMTYgcGl4ZWwgYm91bmRhcnkgKi8KIAljcm9wLT5jLndpZHRoID0gKChjcm9wLT5jLndpZHRoICsgMTUpICYgfjB4Zik7CiAKIAkvKiBtYWtlIHN1cmUgcGFyYW1ldGVycyBhcmUgdmFsaWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKaW5kZXggYTgzMTMxYi4uN2I2NDYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKQEAgLTM3Nyw3ICszNzcsNyBAQAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBlbTI4eHhfYnVmZmVyLCB2Yi5xdWV1ZSk7CiAKLQkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsbCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KKwkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLwogCW91dHAgPSB2aWRlb2J1Zl90b192bWFsbG9jKCYoKmJ1ZiktPnZiKTsKIAltZW1zZXQob3V0cCwgMCwgKCpidWYpLT52Yi5zaXplKTsKIApAQCAtNDA0LDcgKzQwNCw3IEBACiAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgZW0yOHh4X2J1ZmZlciwgdmIucXVldWUpOwotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAweDAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dsODYwL2dsODYwLW1pMTMyMC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nbDg2MC9nbDg2MC1taTEzMjAuYwppbmRleCBjMjc2YTdkLi5iNTcxNjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dsODYwL2dsODYwLW1pMTMyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ2w4NjAvZ2w4NjAtbWkxMzIwLmMKQEAgLTIwMSw3ICsyMDEsNyBAQAogCXNkLT52bWF4LmJhY2tsaWdodCAgPSAgMjsKIAlzZC0+dm1heC5icmlnaHRuZXNzID0gIDg7CiAJc2QtPnZtYXguc2hhcnBuZXNzICA9ICA3OwotCXNkLT52bWF4LmNvbnRyYXN0ICAgPSAgMDsgLyogMTAgYnV0IG5vdCB3b3JraW5nIHdpdGggdGlocyBkcml2ZXIgKi8KKwlzZC0+dm1heC5jb250cmFzdCAgID0gIDA7IC8qIDEwIGJ1dCBub3Qgd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyICovCiAJc2QtPnZtYXguZ2FtbWEgICAgICA9IDQwOwogCXNkLT52bWF4Lmh1ZSAgICAgICAgPSAgNSArIDE7CiAJc2QtPnZtYXguc2F0dXJhdGlvbiA9ICA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jCmluZGV4IDljNmE2NDMuLmU1MjZhYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ3NwY2EuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dzcGNhLmMKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCQl9CiAKIAkJLyogdGhlIGJhbmR3aWR0aCBpcyBub3Qgd2lkZSBlbm91Z2gKLQkJICogbmVnb2NpYXRlIG9yIHRyeSBhIGxvd2VyIGFsdGVybmF0ZSBzZXR0aW5nICovCisJCSAqIG5lZ290aWF0ZSBvciB0cnkgYSBsb3dlciBhbHRlcm5hdGUgc2V0dGluZyAqLwogCQlQREVCVUcoRF9FUlJ8RF9TVFJFQU0sCiAJCQkiYmFuZHdpZHRoIG5vdCB3aWRlIGVub3VnaCAtIHRyeWluZyBhZ2FpbiIpOwogCQltc2xlZXAoMjApOwkvKiB3YWl0IGZvciBraWxsIGNvbXBsZXRlICovCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAKIAkvKiByZWxlYXNlIHRoZSBkZXZpY2UgKi8KLQkvKiAodGhpcyB3aWxsIGNhbGwgZ3NwY2FfcmVsZWFzZSgpIGltbWVkaWF0bHkgb3Igb24gbGFzdCBjbG9zZSkgKi8KKwkvKiAodGhpcyB3aWxsIGNhbGwgZ3NwY2FfcmVsZWFzZSgpIGltbWVkaWF0ZWx5IG9yIG9uIGxhc3QgY2xvc2UpICovCiAJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJmdzcGNhX2Rldi0+dmRldik7CiAKIC8qCVBERUJVRyhEX1BST0JFLCAiZGlzY29ubmVjdCBjb21wbGV0ZSIpOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tYXJzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYwppbmRleCBjYjRkMGJmLi4wMTk2MjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYwpAQCAtMzYxLDcgKzM2MSw3IEBACiAJCW1pX3coZ3NwY2FfZGV2LCBpICsgMSwgbWlfZGF0YVtpXSk7CiAKIAlkYXRhWzBdID0gMHgwMDsKLQlkYXRhWzFdID0gMHg0ZDsJCS8qIElTT0MgdHJhbnNmZXJpbmcgZW5hYmxlLi4uICovCisJZGF0YVsxXSA9IDB4NGQ7CQkvKiBJU09DIHRyYW5zZmVycmluZyBlbmFibGUuLi4gKi8KIAlyZWdfdyhnc3BjYV9kZXYsIDIpOwogCiAJZ3NwY2FfZGV2LT5jdHJsX2luYWMgPSAwOyAvKiBhY3RpdmF0ZSB0aGUgaWxsdW1pbmF0b3IgY29udHJvbHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbXI5NzMxMGEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbXI5NzMxMGEuYwppbmRleCAzODg0YzlkLi45N2U1MDc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21yOTczMTBhLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tcjk3MzEwYS5jCkBAIC00NjksNyArNDY5LDcgQEAKIHN0YXRpYyBpbnQgaXNvY19lbmFibGUoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQogewogCWdzcGNhX2Rldi0+dXNiX2J1ZlswXSA9IDB4MDA7Ci0JZ3NwY2FfZGV2LT51c2JfYnVmWzFdID0gMHg0ZDsgIC8qIElTT0MgdHJhbnNmZXJpbmcgZW5hYmxlLi4uICovCisJZ3NwY2FfZGV2LT51c2JfYnVmWzFdID0gMHg0ZDsgIC8qIElTT0MgdHJhbnNmZXJyaW5nIGVuYWJsZS4uLiAqLwogCXJldHVybiBtcl93cml0ZShnc3BjYV9kZXYsIDIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL292NTE5LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL292NTE5LmMKaW5kZXggZmQxYjYwOC4uMzZhNDZmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9vdjUxOS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evb3Y1MTkuYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAgICBsYXJnZXIgdGhlbiBuZWNlc3NhcnksIGhvd2V2ZXIgdGhleSBuZWVkIHRvIGJlIHRoaXMgYmlnIGFzIHRoZSBvdjUxMSAvCiAgICBvdjUxOCBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpc29jIGZyYW1lLCB1c2luZyAwIHBhZGRpbmcgYnl0ZXMgd2hlbgogICAgaXQgZG9lc24ndCBoYXZlIGFueSBkYXRhLiBTbyB3aXRoIGxvdyBmcmFtZXJhdGVzIHRoZSBhbW91bnQgb2YgZGF0YQotICAgdHJhbnNmZXJlZCBjYW4gYmVjb21lIHF1aXRlIGxhcmdlIChsaWJ2NGwgd2lsbCByZW1vdmUgYWxsIHRoZSAwIHBhZGRpbmcKKyAgIHRyYW5zZmVycmVkIGNhbiBiZWNvbWUgcXVpdGUgbGFyZ2UgKGxpYnY0bCB3aWxsIHJlbW92ZSBhbGwgdGhlIDAgcGFkZGluZwogICAgaW4gdXNlcnNwYWNlKS4gKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0IG92NTE4X3ZnYV9tb2RlW10gPSB7CiAJezMyMCwgMjQwLCBWNEwyX1BJWF9GTVRfT1Y1MTgsIFY0TDJfRklFTERfTk9ORSwKQEAgLTQzNjgsNyArNDM2OCw3IEBACiAJCQkJZ3NwY2FfZGV2LT5sYXN0X3BhY2tldF90eXBlID0gRElTQ0FSRF9QQUNLRVQ7CiAJCQkJcmV0dXJuOwogCQkJfQotCQkJLyogQWRkIDExIGJ5dGUgZm9vdGVyIHRvIGZyYW1lLCBtaWdodCBiZSB1c2VmdWxsICovCisJCQkvKiBBZGQgMTEgYnl0ZSBmb290ZXIgdG8gZnJhbWUsIG1pZ2h0IGJlIHVzZWZ1bCAqLwogCQkJZ3NwY2FfZnJhbWVfYWRkKGdzcGNhX2RldiwgTEFTVF9QQUNLRVQsIGluLCAxMSk7CiAJCQlyZXR1cm47CiAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Nvbml4Yi5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zb25peGIuYwppbmRleCA1YTA4NzM4Li4xNDZiNDU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Nvbml4Yi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc29uaXhiLmMKQEAgLTgyNyw3ICs4MjcsNyBAQAogCQkgICBwb3NzaWJsZSB0byB1c2UgbGVzcyBleHBvc3VyZSB0aGVuIHdoYXQgdGhlIGZwcyBtYXhpbXVtCiAJCSAgIGFsbG93cyBieSBzZXR0aW5nIHJlZ2lzdGVyIDEwLiByZWdpc3RlciAxMCBjb25maWd1cmVzIHRoZQogCQkgICBhY3R1YWwgZXhwb3N1cmUgYXMgcXVvdGllbnQgb2YgdGhlIGZ1bGwgZXhwb3N1cmUsIHdpdGggMAotCQkgICBiZWluZyBubyBleHBvc3VyZSBhdCBhbGwgKG5vdCB2ZXJ5IHVzZWZ1bGwpIGFuZCByZWcxMF9tYXgKKwkJICAgYmVpbmcgbm8gZXhwb3N1cmUgYXQgYWxsIChub3QgdmVyeSB1c2VmdWwpIGFuZCByZWcxMF9tYXgKIAkJICAgYmVpbmcgbWF4IGV4cG9zdXJlIHBvc3NpYmxlIGF0IHRoYXQgZnJhbWVyYXRlLgogCiAJCSAgIFRoZSBjb2RlIG1hcHMgb3VyIDAgLSA1MTAgbXMgZXhwb3N1cmUgY3RybCB0byB0aGVzZSAyCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3NwY2E1MDAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCmluZGV4IDQ1NTUyYzMuLjNlNzY5NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCkBAIC02MDcsNyArNjA3LDcgQEAKIAlyZWdfdyhnc3BjYV9kZXYsIDB4MDAsIDB4ODg4MCwgMik7CiAJLyogZmFtaWx5IGNhbSBRdWlja3NtYXJ0IHN0dWZmICovCiAJcmVnX3coZ3NwY2FfZGV2LCAweDAwLCAweDgwMGEsIDB4MDApOwotCS8qIFNldCBhZ2MgdHJhbnNmZXI6IHN5bmNlZCBpbmJldHdlZW4gZnJhbWVzICovCisJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGJldHdlZW4gZnJhbWVzICovCiAJcmVnX3coZ3NwY2FfZGV2LCAweDAwLCAweDgyMGYsIDB4MDEpOwogCS8qIEluaXQgU0RSQU0gLSBuZWVkZWQgZm9yIFNEUkFNIGFjY2VzcyAqLwogCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4NzBhLCAweDA0KTsKQEAgLTgzMSw3ICs4MzEsNyBAQAogCiAJCS8qIGZhbWlseWNhbSBRdWlja3NtYXJ0IHBvY2tldERWIHN0dWZmICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4MDBhLCAweDAwKTsKLQkJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGluYmV0d2VlbiBmcmFtZXMgKi8KKwkJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGJldHdlZW4gZnJhbWVzICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4MjBmLCAweDAxKTsKIAkJLyogSW5pdCBTRFJBTSAtIG5lZWRlZCBmb3IgU0RSQU0gYWNjZXNzICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4NzBhLCAweDA0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwOC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKaW5kZXggMzQ4MzE5My4uNDFkY2U0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKQEAgLTU5Miw3ICs1OTIsNyBAQAogLyogVGhpcyBsaW5lIHNlZW1zIHRvIHNldHVwIHRoZSBmcmFtZS9jYW52YXMgKi8KIAl7MHgwMDBmLCAweDg0MDJ9LAogCi0vKiBUaGVlc2UgNiBsaW5lcyBhcmUgbmVlZGVkIHRvIHN0YXJ0dXAgdGhlIHdlYmNhbSAqLworLyogVGhlc2UgNiBsaW5lcyBhcmUgbmVlZGVkIHRvIHN0YXJ0dXAgdGhlIHdlYmNhbSAqLwogCXsweDAwOTAsIDB4ODExMH0sCiAJezB4MDAwMSwgMHg4MTE0fSwKIAl7MHgwMDAxLCAweDgxMTR9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcTkwNS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcTkwNS5jCmluZGV4IDJlOWMwNjEuLjViYTk2YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3E5MDUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3NxOTA1LmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIEhpc3RvcnkgYW5kIEFja25vd2xlZGdtZW50cwogICoKICAqIFRoZSBvcmlnaW5hbCBMaW51eCBkcml2ZXIgZm9yIFNROTA1IGJhc2VkIGNhbWVyYXMgd2FzIHdyaXR0ZW4gYnkKLSAqIE1hcmNlbGwgTGVuZ3llbCBhbmQgZnVydGVyIGRldmVsb3BlZCBieSBtYW55IG90aGVyIGNvbnRyaWJ1dGVycworICogTWFyY2VsbCBMZW5neWVsIGFuZCBmdXJ0ZXIgZGV2ZWxvcGVkIGJ5IG1hbnkgb3RoZXIgY29udHJpYnV0b3JzCiAgKiBhbmQgaXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zcWNhbS8KICAqCiAgKiBUaGlzIGRyaXZlciB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlIHJldmVyc2UgZW5naW5lZXJpbmcgd29yayBkb25lIGZvcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zdHYwNnh4L3N0djA2eHhfaGRjcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zdHYwNnh4L3N0djA2eHhfaGRjcy5jCmluZGV4IDE3NTMxYjQuLmI4MTU2ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3R2MDZ4eC9zdHYwNnh4X2hkY3MuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9oZGNzLmMKQEAgLTU2OSw3ICs1NjksNyBAQAogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCi0JLyogRW5hYmxlIGNvbnRpbm91cyBmcmFtZSBjYXB0dXJlLCBiaXQgMjogc3RvcCB3aGVuIGZyYW1lIGNvbXBsZXRlICovCisJLyogRW5hYmxlIGNvbnRpbnVvdXMgZnJhbWUgY2FwdHVyZSwgYml0IDI6IHN0b3Agd2hlbiBmcmFtZSBjb21wbGV0ZSAqLwogCWVyciA9IHN0djA2eHhfd3JpdGVfc2Vuc29yKHNkLCBIRENTX1JFR19DT05GSUcoc2QpLCBCSVQoMykpOwogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9oZXhpdW1fZ2VtaW5pLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYwppbmRleCBjZGY4YjE5Li5jYmM1MDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYwpAQCAtMjYxLDcgKzI2MSw3IEBACiAKIC8qIHRoZSBzYWE3MTQ2IHByb3ZpZGVzIHNvbWUgY29udHJvbHMgKGJyaWdodG5lc3MsIGNvbnRyYXN0LCBzYXR1cmF0aW9uKQogICAgd2hpY2ggZ2V0cyByZWdpc3RlcmVkICphZnRlciogdGhpcyBmdW5jdGlvbi4gYmVjYXVzZSBvZiB0aGlzIHdlIGhhdmUKLSAgIHRvIHJldHVybiB3aXRoIGEgdmFsdWUgIT0gMCBldmVuIGlmIHRoZSBmdW5jdGlvbiBzdWNjZWRlZC4uICovCisgICB0byByZXR1cm4gd2l0aCBhIHZhbHVlICE9IDAgZXZlbiBpZiB0aGUgZnVuY3Rpb24gc3VjY2VlZGVkLi4gKi8KIHN0YXRpYyBpbnQgdmlkaW9jX3F1ZXJ5Y3RybChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqcWMpCiB7CiAJc3RydWN0IHNhYTcxNDZfZGV2ICpkZXYgPSAoKHN0cnVjdCBzYWE3MTQ2X2ZoICopZmgpLT5kZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHYtZmlybXdhcmUuYwppbmRleCA0ZGYwMTk0Li4xNGExY2VhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWZpcm13YXJlLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogewogCWludCBpOwogCi0JLyogbWFpbGJveCBpcyBwcmVjZWVkZWQgYnkgYSAxNiBieXRlICdtYWdpYyBjb29raWUnIHN0YXJ0aW5nIGF0IGEgMjU2LWJ5dGUKKwkvKiBtYWlsYm94IGlzIHByZWNlZGVkIGJ5IGEgMTYgYnl0ZSAnbWFnaWMgY29va2llJyBzdGFydGluZyBhdCBhIDI1Ni1ieXRlCiAJICAgYWRkcmVzcyBib3VuZGFyeSAqLwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpICs9IDB4MTAwKSB7CiAJCWlmIChyZWFkbChtZW0gKyBpKSAgICAgID09IDB4MTIzNDU2NzggJiYKQEAgLTM3Nyw3ICszNzcsNyBAQAogCQkJICAiUmVsb2FkaW5nXG4iLCB3aGVyZSk7CiAJCXJlcyA9IGl2dHZfZmlybXdhcmVfcmVzdGFydChpdHYpOwogCQkvKgotCQkgKiBFdmVuIGlmIHJlc3RhcnRlZCBvaywgc3RpbGwgc2lnbmFsIGEgcHJvYmxlbSBoYWQgb2NjdXJlZC4KKwkJICogRXZlbiBpZiByZXN0YXJ0ZWQgb2ssIHN0aWxsIHNpZ25hbCBhIHByb2JsZW0gaGFkIG9jY3VycmVkLgogCQkgKiBUaGUgY2FsbGVyIGNhbiBjb21lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBhZ2FpbiB0byBjaGVjawogCQkgKiBpZiB0aGluZ3MgYXJlIHJlYWxseSBvayBhZnRlciB0aGUgcmVzdGFydC4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0dmZiLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0dmZiLmMKaW5kZXggZjAzMTZkMC4uMTcyNDc0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHZmYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2ZmIuYwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKIAkJa21hbGxvYyhzaXplb2YodTMyKSAqIDE2LCBHRlBfS0VSTkVMfF9fR0ZQX05PV0FSTik7CiAKIAlpZiAoIW9pLT5pdnR2ZmJfaW5mby5wc2V1ZG9fcGFsZXR0ZSkgewotCQlJVlRWRkJfRVJSKCJhYm9ydCwgdW5hYmxlIHRvIGFsbG9jIHBzZXVkbyBwYWxsZXRlXG4iKTsKKwkJSVZUVkZCX0VSUigiYWJvcnQsIHVuYWJsZSB0byBhbGxvYyBwc2V1ZG8gcGFsZXR0ZVxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9tc3AzNDAwLWRyaXZlci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9tc3AzNDAwLWRyaXZlci5jCmluZGV4IGIxNzYzYWMuLjgxMjY2MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1kcml2ZXIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL21zcDM0MDAtZHJpdmVyLmMKQEAgLTY5LDcgKzY5LDcgQEAKIC8qIG1vZHVsZSBwYXJhbWV0ZXJzICovCiBzdGF0aWMgaW50IG9wbW9kZSAgID0gT1BNT0RFX0FVVE87CiBpbnQgbXNwX2RlYnVnOwkJIC8qIG1zcF9kZWJ1ZyBvdXRwdXQgKi8KLWludCBtc3Bfb25jZTsJCSAvKiBubyBjb250aW5vdXMgc3RlcmVvIG1vbml0b3JpbmcgKi8KK2ludCBtc3Bfb25jZTsJCSAvKiBubyBjb250aW51b3VzIHN0ZXJlbyBtb25pdG9yaW5nICovCiBpbnQgbXNwX2Ftc291bmQ7CSAvKiBoYXJkLXdpcmUgQU0gc291bmQgYXQgNi41IEh6IChmcmFuY2UpLAogCQkJICAgIHRoZSBhdXRvc2NhbiBzZWVtcyB3b3JrIHdlbGwgb25seSB3aXRoIEZNLi4uICovCiBpbnQgbXNwX3N0YW5kYXJkID0gMTsgICAgLyogT3ZlcnJpZGUgYXV0byBkZXRlY3Qgb2YgYXVkaW8gbXNwX3N0YW5kYXJkLApAQCAtNTUxLDcgKzU1MSw3IEBACiAJc3dpdGNoIChzdGF0ZS0+bW9kZSkgewogCQljYXNlIE1TUF9NT0RFX0FNX0RFVEVDVDogcCA9ICJBTSAoZm9yIGNhcnJpZXIgZGV0ZWN0KSI7IGJyZWFrOwogCQljYXNlIE1TUF9NT0RFX0ZNX1JBRElPOiBwID0gIkZNIFJhZGlvIjsgYnJlYWs7Ci0JCWNhc2UgTVNQX01PREVfRk1fVEVSUkE6IHAgPSAiVGVycmVzdGlhbCBGTS1tb25vL3N0ZXJlbyI7IGJyZWFrOworCQljYXNlIE1TUF9NT0RFX0ZNX1RFUlJBOiBwID0gIlRlcnJlc3RyaWFsIEZNLW1vbm8vc3RlcmVvIjsgYnJlYWs7CiAJCWNhc2UgTVNQX01PREVfRk1fU0FUOiBwID0gIlNhdGVsbGl0ZSBGTS1tb25vIjsgYnJlYWs7CiAJCWNhc2UgTVNQX01PREVfRk1fTklDQU0xOiBwID0gIk5JQ0FNL0ZNIChCL0csIEQvSykiOyBicmVhazsKIAkJY2FzZSBNU1BfTU9ERV9GTV9OSUNBTTI6IHAgPSAiTklDQU0vRk0gKEkpIjsgYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL21zcDM0MDAta3RocmVhZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCmluZGV4IGIzNzZmY2QuLjgwMzg3ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCkBAIC04Nyw3ICs4Nyw3IEBACiAJCXstOCwgLTgsIDQsIDYsIDc4LCAxMDd9LAogCQlNU1BfQ0FSUklFUigxMC43KSwgTVNQX0NBUlJJRVIoMTAuNyksCiAJCTB4MDBkMCwgMHgwNDgwLCAweDAwMjAsIDB4MzAwMAotCX0sIHsJLyogVGVycmVzdGlhbCBGTS1tb25vICsgRk0tc3RlcmVvICovCisJfSwgewkvKiBUZXJyZXN0cmlhbCBGTS1tb25vICsgRk0tc3RlcmVvICovCiAJCXszLCAxOCwgMjcsIDQ4LCA2NiwgNzJ9LAogCQl7MywgMTgsIDI3LCA0OCwgNjYsIDcyfSwKIAkJTVNQX0NBUlJJRVIoNS41KSwgTVNQX0NBUlJJRVIoNS41KSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXQuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXQuYwppbmRleCAwMjlhNGJhLi5kNGZlN2JjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwL29tYXBfdm91dC5jCkBAIC00NzMsNyArNDczLDcgQEAKIC8qCiAgKiBDb252ZXJ0IFY0TDIgcm90YXRpb24gdG8gRFNTIHJvdGF0aW9uCiAgKglWNEwyIHVuZGVyc3RhbmQgMCwgOTAsIDE4MCwgMjcwLgotICoJQ29udmVydCB0byAwLCAxLCAyIGFuZCAzIHJlcHNlY3RpdmVseSBmb3IgRFNTCisgKglDb252ZXJ0IHRvIDAsIDEsIDIgYW5kIDMgcmVzcGVjdGl2ZWx5IGZvciBEU1MKICAqLwogc3RhdGljIGludCB2NGwyX3JvdF90b19kc3Nfcm90KGludCB2NGwyX3JvdGF0aW9uLAogCQkJZW51bSBkc3Nfcm90YXRpb24gKnJvdGF0aW9uLCBib29sIG1pcnJvcikKQEAgLTExNDIsNyArMTE0Miw3IEBACiB9CiAKIC8qCi0gKiBCdWZmZXIgcXVldWUgZnVudGlvbiB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSB2aWRlb2J1ZiBsYXllciB3aGVuIF9RQlVGCisgKiBCdWZmZXIgcXVldWUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgdmlkZW9idWYgbGF5ZXIgd2hlbiBfUUJVRgogICogaW9jdGwgaXMgY2FsbGVkLiBJdCBpcyB1c2VkIHRvIGVucXVldWUgYnVmZmVyLCB3aGljaCBpcyByZWFkeSB0byBiZQogICogZGlzcGxheWVkLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0bGliLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0bGliLmMKaW5kZXggYjk0MWM3Ni4uMmFhNmE3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwL29tYXBfdm91dGxpYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXRsaWIuYwpAQCAtNTMsNyArNTMsNyBAQAogLyogR2l2ZW4gYSBuZXcgcmVuZGVyIHdpbmRvdyBpbiBuZXdfd2luLCBhZGp1c3QgdGhlIHdpbmRvdyB0byB0aGUKICAqIG5lYXJlc3Qgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24uICBUaGUgYWRqdXN0ZWQgd2luZG93IHBhcmFtZXRlcnMgYXJlCiAgKiByZXR1cm5lZCBpbiBuZXdfd2luLgotICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHdpbmRvdyBpcworICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc3NmdWwsIG9yIC1FSU5WQUwgaWYgdGhlIHJlcXVlc3RlZCB3aW5kb3cgaXMKICAqIGltcG9zc2libGUgYW5kIGNhbm5vdCByZWFzb25hYmx5IGJlIGFkanVzdGVkLgogICovCiBpbnQgb21hcF92b3V0X3RyeV93aW5kb3coc3RydWN0IHY0bDJfZnJhbWVidWZmZXIgKmZidWYsCkBAIC0xMDEsNyArMTAxLDcgQEAKICAqIHdpbGwgYWxzbyBiZSBhZGp1c3RlZCBpZiBuZWNlc3NhcnkuICBQcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGtlZXBpbmcgdGhlCiAgKiB0aGUgd2luZG93IGFzIGNsb3NlIHRvIHRoZSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiBhcyBwb3NzaWJsZS4gIElmCiAgKiBzdWNjZXNzZnVsLCBuZXdfd2luLCB2b3V0LT53aW4sIGFuZCBjcm9wIGFyZSB1cGRhdGVkLgotICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHByZXZpZXcgd2luZG93IGlzCisgKiBSZXR1cm5zIHplcm8gaWYgc3VjY2Vzc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHByZXZpZXcgd2luZG93IGlzCiAgKiBpbXBvc3NpYmxlIGFuZCBjYW5ub3QgcmVhc29uYWJseSBiZSBhZGp1c3RlZC4KICAqLwogaW50IG9tYXBfdm91dF9uZXdfd2luZG93KHN0cnVjdCB2NGwyX3JlY3QgKmNyb3AsCkBAIC0xNTUsNyArMTU1LDcgQEAKICAqIHdpbmRvdyB3b3VsZCBmYWxsIG91dHNpZGUgdGhlIGRpc3BsYXkgYm91bmRhcmllcywgdGhlIGNyb3BwaW5nIHJlY3RhbmdsZQogICogd2lsbCBhbHNvIGJlIGFkanVzdGVkIHRvIG1haW50YWluIHRoZSByZXNjYWxpbmcgcmF0aW9zLiAgSWYgc3VjY2Vzc2Z1bCwgY3JvcAogICogYW5kIHdpbiBhcmUgdXBkYXRlZC4KLSAqIFJldHVybnMgemVybyBpZiBzdWNjZXNmdWwsIG9yIC1FSU5WQUwgaWYgdGhlIHJlcXVlc3RlZCBjcm9wcGluZyByZWN0YW5nbGUgaXMKKyAqIFJldHVybnMgemVybyBpZiBzdWNjZXNzZnVsLCBvciAtRUlOVkFMIGlmIHRoZSByZXF1ZXN0ZWQgY3JvcHBpbmcgcmVjdGFuZ2xlIGlzCiAgKiBpbXBvc3NpYmxlIGFuZCBjYW5ub3QgcmVhc29uYWJseSBiZSBhZGp1c3RlZC4KICAqLwogaW50IG9tYXBfdm91dF9uZXdfY3JvcChzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAxX2NhbWVyYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwMV9jYW1lcmEuYwppbmRleCBlYWIzMWNiLi41OTU0YjkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAxX2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDFfY2FtZXJhLmMKQEAgLTY4Nyw3ICs2ODcsNyBAQAogCQkgKiBJbiBDT05USUcgbW9kZSwgdGhlIGN1cnJlbnQgYnVmZmVyIHBhcmFtZXRlcnMgaGFkIGFscmVhZHkKIAkJICogYmVlbiBlbnRlcmVkIGludG8gdGhlIERNQSBwcm9ncmFtbWluZyByZWdpc3RlciBzZXQgd2hpbGUgdGhlCiAJCSAqIGJ1ZmZlciB3YXMgZmV0Y2hlZCB3aXRoIHByZXBhcmVfbmV4dF92YigpLCB0aGV5IG1heSBoYXZlIGFsc28KLQkJICogYmVlbiB0cmFuc2ZlcmVkIGludG8gdGhlIHJ1bnRpbWUgc2V0IGFuZCBhbHJlYWR5IGFjdGl2ZSBpZgorCQkgKiBiZWVuIHRyYW5zZmVycmVkIGludG8gdGhlIHJ1bnRpbWUgc2V0IGFuZCBhbHJlYWR5IGFjdGl2ZSBpZgogCQkgKiB0aGUgRE1BIHN0aWxsIHJ1bm5pbmcuCiAJCSAqLwogCX0gZWxzZSB7CkBAIC04MzUsNyArODM1LDcgQEAKIAkJCQkvKgogCQkJCSAqIElmIGV4YWN0bHkgMiBzZ2J1ZnMgZnJvbSB0aGUgbmV4dCBzZ2xpc3QgaGF2ZQogCQkJCSAqIGJlZW4gcHJvZ3JhbW1lZCBpbnRvIHRoZSBETUEgZW5naW5lICh0aGUKLQkJCQkgKiBmcmlzdCBvbmUgYWxyZWFkeSB0cmFuc2ZlcmVkIGludG8gdGhlIERNQQorCQkJCSAqIGZpcnN0IG9uZSBhbHJlYWR5IHRyYW5zZmVycmVkIGludG8gdGhlIERNQQogCQkJCSAqIHJ1bnRpbWUgcmVnaXN0ZXIgc2V0LCB0aGUgc2Vjb25kIG9uZSBzdGlsbAogCQkJCSAqIGluIHRoZSBwcm9ncmFtbWluZyBzZXQpLCB0aGVuIHdlIGFyZSBpbiBzeW5jLgogCQkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3AuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwLmMKaW5kZXggMWE5OTYzYmQuLjUwM2JkNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3AuYwpAQCAtNzE1LDcgKzcxNSw3IEBACiAgKiBXYWxrIHRoZSBlbnRpdGllcyBjaGFpbiBzdGFydGluZyBhdCB0aGUgcGlwZWxpbmUgb3V0cHV0IHZpZGVvIG5vZGUgYW5kIHN0YXJ0CiAgKiBhbGwgbW9kdWxlcyBpbiB0aGUgY2hhaW4gaW4gdGhlIGdpdmVuIG1vZGUuCiAgKgotICogUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bGwsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZhaWxlZCB2aWRlbzo6c19zdHJlYW0KKyAqIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZhaWxlZCB2aWRlbzo6c19zdHJlYW0KICAqIG9wZXJhdGlvbiBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBpbnQgaXNwX3BpcGVsaW5lX2VuYWJsZShzdHJ1Y3QgaXNwX3BpcGVsaW5lICpwaXBlLApAQCAtODgzLDcgKzg4Myw3IEBACiAgKiBTZXQgdGhlIHBpcGVsaW5lIHRvIHRoZSBnaXZlbiBzdHJlYW0gc3RhdGUuIFBpcGVsaW5lcyBjYW4gYmUgc3RhcnRlZCBpbgogICogc2luZ2xlLXNob3Qgb3IgY29udGludW91cyBtb2RlLgogICoKLSAqIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmYWlsZWQgdmlkZW86OnNfc3RyZWFtCisgKiBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmYWlsZWQgdmlkZW86OnNfc3RyZWFtCiAgKiBvcGVyYXRpb24gb3RoZXJ3aXNlLgogICovCiBpbnQgb21hcDNpc3BfcGlwZWxpbmVfc2V0X3N0cmVhbShzdHJ1Y3QgaXNwX3BpcGVsaW5lICpwaXBlLApAQCAtMTI4Myw3ICsxMjgzLDcgQEAKIAkJY2xrIHw9IElTUENUUkxfUlNaX0NMS19FTjsKIAogCS8qIE5PVEU6IEZvciBDQ0RDICYgUHJldmlldyBzdWJtb2R1bGVzLCB3ZSBuZWVkIHRvIGFmZmVjdCBpbnRlcm5hbAotCSAqICAgICAgIFJBTSBhc3dlbGwuCisJICogICAgICAgUkFNIGFzIHdlbGwuCiAJICovCiAJaWYgKGlzcC0+c3ViY2xrX3Jlc291cmNlcyAmIE9NQVAzX0lTUF9TVUJDTEtfQ0NEQykKIAkJY2xrIHw9IElTUENUUkxfQ0NEQ19DTEtfRU4gfCBJU1BDVFJMX0NDRENfUkFNX0VOOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAKICAqIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBJU1AuIElmIHRoZSBmaXJzdCByZWZlcmVuY2UgaXMgdGFrZW4sCiAgKiBlbmFibGUgY2xvY2tzIGFuZCBwb3dlci11cCBhbGwgc3VibW9kdWxlcy4KICAqCi0gKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBJU1AgZGV2aWNlIHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLgorICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgSVNQIGRldmljZSBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAgKi8KIHN0cnVjdCBpc3BfZGV2aWNlICpvbWFwM2lzcF9nZXQoc3RydWN0IGlzcF9kZXZpY2UgKmlzcCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NkYy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKaW5kZXggZDQwM2FmNS4uNDgzYTE5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKQEAgLTE1MCw3ICsxNTAsNyBAQAogICogQGlucHV0OiBBY3RpdmUgaW5wdXQKICAqIEBvdXRwdXQ6IEFjdGl2ZSBvdXRwdXRzCiAgKiBAdmlkZW9fb3V0OiBPdXRwdXQgdmlkZW8gbm9kZQotICogQGVycm9yOiBBIGhhcmR3YXJlIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNhcHR1cmUKKyAqIEBlcnJvcjogQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2FwdHVyZQogICogQGFsYXc6IEEtbGF3IGNvbXByZXNzaW9uIGVuYWJsZWQgKDEpIG9yIGRpc2FibGVkICgwKQogICogQGxwZjogTG93IHBhc3MgZmlsdGVyIGVuYWJsZWQgKDEpIG9yIGRpc2FibGVkICgwKQogICogQG9iY2xhbXA6IE9wdGljYWwtYmxhY2sgY2xhbXAgZW5hYmxlZCAoMSkgb3IgZGlzYWJsZWQgKDApCkBAIC0xNjMsNyArMTYzLDcgQEAKICAqIEBzaGFkb3dfdXBkYXRlOiBDb250cm9scyB1cGRhdGUgaW4gcHJvZ3Jlc3MgYnkgdXNlcnNwYWNlCiAgKiBAc3luY2lmOiBJbnRlcmZhY2Ugc3luY2hyb25pemF0aW9uIGNvbmZpZ3VyYXRpb24KICAqIEB2cGNmZzogVmlkZW8gcG9ydCBjb25maWd1cmF0aW9uCi0gKiBAdW5kZXJydW46IEEgYnVmZmVyIHVuZGVycnVuIG9jY3VyZWQgYW5kIGEgbmV3IGJ1ZmZlciBoYXMgYmVlbiBxdWV1ZWQKKyAqIEB1bmRlcnJ1bjogQSBidWZmZXIgdW5kZXJydW4gb2NjdXJyZWQgYW5kIGEgbmV3IGJ1ZmZlciBoYXMgYmVlbiBxdWV1ZWQKICAqIEBzdGF0ZTogU3RyZWFtaW5nIHN0YXRlCiAgKiBAbG9jazogU2VyaWFsaXplcyBzaGFkb3dfdXBkYXRlIHdpdGggaW50ZXJydXB0IGhhbmRsZXIKICAqIEB3YWl0OiBXYWl0IHF1ZXVlIHVzZWQgdG8gc3RvcCB0aGUgbW9kdWxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcGNjcDIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCmluZGV4IDBlZmVmMmUuLjBlMTZjYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCkBAIC03NzIsNyArNzcyLDcgQEAKICAqIEBzZCAgICA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggICAgOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdCAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgY2NwMl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcGNzaTIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCmluZGV4IGZiNTAzZjMuLjY5MTYxYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCkBAIC05NjksNyArOTY5LDcgQEAKICAqIEBzZCA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgY3NpMl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCmluZGV4IGJhZjkzNzQuLjJiMTY5ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiaXNwcmVnLmgiCiAjaW5jbHVkZSAiaXNwcHJldmlldy5oIgogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIFJHQnRvUkdCIEJsZW5kaW5nICovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIFJHQnRvUkdCIEJsZW5kaW5nICovCiBzdGF0aWMgc3RydWN0IG9tYXAzaXNwX3ByZXZfcmdidG9yZ2IgZmxyX3JnYjJyZ2IgPSB7CiAJewkvKiBSR0ItUkdCIE1hdHJpeCAqLwogCQl7MHgwMUUyLCAweDBGMzAsIDB4MEZFRX0sCkBAIC00NCw3ICs0NCw3IEBACiAJezB4MDAwMCwgMHgwMDAwLCAweDAwMDB9CiB9OwogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIFJHQiB0byBZVVYgQ29udmVyc2lvbiovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIFJHQiB0byBZVVYgQ29udmVyc2lvbiovCiBzdGF0aWMgc3RydWN0IG9tYXAzaXNwX3ByZXZfY3NjIGZscl9wcmV2X2NzYyA9IHsKIAl7CS8qIENTQyBDb2VmIE1hdHJpeCAqLwogCQl7NjYsIDEyOSwgMjV9LApAQCAtNTQsMjIgKzU0LDIyIEBACiAJezB4MCwgMHgwLCAweDB9CiB9OwogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIENGQSBHcmFkaWVudCovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIENGQSBHcmFkaWVudCovCiAjZGVmaW5lIEZMUl9DRkFfR1JBRFRIUlNfSE9SWgkweDI4CiAjZGVmaW5lIEZMUl9DRkFfR1JBRFRIUlNfVkVSVAkweDI4CiAKLS8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbG91cmVzY2VudCBMaWdodCBmb3IgQ2hyb21hIFN1cHByZXNzaW9uKi8KKy8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbHVvcmVzY2VudCBMaWdodCBmb3IgQ2hyb21hIFN1cHByZXNzaW9uKi8KICNkZWZpbmUgRkxSX0NTVVBfR0FJTgkJMHgwRAogI2RlZmluZSBGTFJfQ1NVUF9USFJFUwkJMHhFQgogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIE5vaXNlIEZpbHRlciovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIE5vaXNlIEZpbHRlciovCiAjZGVmaW5lIEZMUl9ORl9TVFJHVEgJCTB4MDMKIAogLyogRGVmYXVsdCB2YWx1ZXMgZm9yIFdoaXRlIEJhbGFuY2UgKi8KICNkZWZpbmUgRkxSX1dCQUxfREdBSU4JCTB4MTAwCiAjZGVmaW5lIEZMUl9XQkFMX0NPRUYJCTB4MjAKIAotLyogRGVmYXVsdCB2YWx1ZXMgaW4gT2ZmaWNlIEZsb3VyZXNjZW50IExpZ2h0IGZvciBCbGFjayBBZGp1c3RtZW50Ki8KKy8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbHVvcmVzY2VudCBMaWdodCBmb3IgQmxhY2sgQWRqdXN0bWVudCovCiAjZGVmaW5lIEZMUl9CTEtBREpfQkxVRQkJMHgwCiAjZGVmaW5lIEZMUl9CTEtBREpfR1JFRU4JMHgwCiAjZGVmaW5lIEZMUl9CTEtBREpfUkVECQkweDAKQEAgLTEzNyw3ICsxMzcsNyBAQAogICogQGVuYWJsZTogMSAtIEVuYWJsZSwgMCAtIERpc2FibGUKICAqCiAgKiBOT1RFOiBQUlZfV1NEUl9BRERSIGFuZCBQUlZfV0FERF9PRkZTRVQgbXVzdCBiZSBzZXQgYWxzbwotICogVGhlIHByb2NjZXNzIGlzIGFwcGxpZWQgZm9yIGVhY2ggY2FwdHVyZWQgZnJhbWUuCisgKiBUaGUgcHJvY2VzcyBpcyBhcHBsaWVkIGZvciBlYWNoIGNhcHR1cmVkIGZyYW1lLgogICovCiBzdGF0aWMgdm9pZAogcHJldmlld19lbmFibGVfZHJrZnJhbWVfY2FwdHVyZShzdHJ1Y3QgaXNwX3ByZXZfZGV2aWNlICpwcmV2LCB1OCBlbmFibGUpCkBAIC0xNTcsNyArMTU3LDcgQEAKICAqIEBlbmFibGU6IDEgLSBBY3F1aXJlcyBtZW1vcnkgYmFuZHdpZHRoIHNpbmNlIHRoZSBwaXhlbHMgaW4gZWFjaCBmcmFtZSBpcwogICogICAgICAgICAgc3VidHJhY3RlZCB3aXRoIHRoZSBwaXhlbHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuCiAgKgotICogVGhlIHByb2NjZXNzIGlzIGFwcGxpZWQgZm9yIGVhY2ggY2FwdHVyZWQgZnJhbWUuCisgKiBUaGUgcHJvY2VzcyBpcyBhcHBsaWVkIGZvciBlYWNoIGNhcHR1cmVkIGZyYW1lLgogICovCiBzdGF0aWMgdm9pZAogcHJldmlld19lbmFibGVfZHJrZnJhbWUoc3RydWN0IGlzcF9wcmV2X2RldmljZSAqcHJldiwgdTggZW5hYmxlKQpAQCAtMTUyOCw3ICsxNTI4LDcgQEAKICAqIHByZXZpZXdfc2V0X3N0cmVhbSAtIEVuYWJsZS9EaXNhYmxlIHN0cmVhbWluZyBvbiBwcmV2aWV3IHN1YmRldgogICogQHNkICAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBzdHJ1Y3R1cmUKICAqIEBlbmFibGU6IDEgPT0gRW5hYmxlLCAwID09IERpc2FibGUKLSAqIHJldHVybiAtRUlOVkFMIG9yIHplcm8gb24gc3VjZXNzCisgKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2Nlc3MKICAqLwogc3RhdGljIGludCBwcmV2aWV3X3NldF9zdHJlYW0oc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgaW50IGVuYWJsZSkKIHsKQEAgLTE3ODAsNyArMTc4MCw3IEBACiAgKiBAc2QgOiBwb2ludGVyIHRvIHY0bDIgc3ViZGV2IHN0cnVjdHVyZQogICogQGZoIDogVjRMMiBzdWJkZXYgZmlsZSBoYW5kbGUKICAqIEBmbXQ6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgZm9ybWF0IHN0cnVjdHVyZQotICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNlc3MKKyAqIHJldHVybiAtRUlOVkFMIG9yIHplcm8gb24gc3VjY2VzcwogICovCiBzdGF0aWMgaW50IHByZXZpZXdfZ2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCBzdHJ1Y3QgdjRsMl9zdWJkZXZfZmggKmZoLAogCQkJICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm10KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BwcmV2aWV3LmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaAppbmRleCBmMmQ2M2NhLi5mYTk0M2JkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaApAQCAtMTYzLDcgKzE2Myw3IEBACiAgKiBAb3V0cHV0OiBCaXRtYXNrIG9mIHRoZSBhY3RpdmUgb3V0cHV0CiAgKiBAdmlkZW9faW46IElucHV0IHZpZGVvIGVudGl0eQogICogQHZpZGVvX291dDogT3V0cHV0IHZpZGVvIGVudGl0eQotICogQGVycm9yOiBBIGhhcmR3YXJlIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNhcHR1cmUKKyAqIEBlcnJvcjogQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2FwdHVyZQogICogQHBhcmFtczogTW9kdWxlIGNvbmZpZ3VyYXRpb24gZGF0YQogICogQHNoYWRvd191cGRhdGU6IElmIHNldCwgdXBkYXRlIHRoZSBoYXJkd2FyZSBjb25maWd1cmVkIGluIHRoZSBuZXh0IGludGVycnVwdAogICogQHVuZGVycnVuOiBXaGV0aGVyIHRoZSBwcmV2aWV3IGVudGl0eSBoYXMgcXVldWVkIGJ1ZmZlcnMgb24gdGhlIG91dHB1dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BxdWV1ZS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BxdWV1ZS5oCmluZGV4IDI1MWRlM2UuLjkyYzVhMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcXVldWUuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHF1ZXVlLmgKQEAgLTQ2LDkgKzQ2LDkgQEAKICAqCWRldmljZSB5ZXQuCiAgKiBASVNQX0JVRl9TVEFURV9BQ1RJVkU6IFRoZSBidWZmZXIgaXMgaW4gdXNlIGZvciBhbiBhY3RpdmUgdmlkZW8gdHJhbnNmZXIuCiAgKiBASVNQX0JVRl9TVEFURV9FUlJPUjogVGhlIGRldmljZSBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciBhbmQgYW4gZXJyb3IKLSAqCW9jY3VyZWQuIEZvciBjYXB0dXJlIGRldmljZSB0aGUgYnVmZmVyIGxpa2VseSBjb250YWlucyBjb3JydXB0ZWQgZGF0YSBvcgorICoJb2NjdXJyZWQuIEZvciBjYXB0dXJlIGRldmljZSB0aGUgYnVmZmVyIGxpa2VseSBjb250YWlucyBjb3JydXB0ZWQgZGF0YSBvcgogICoJbm8gZGF0YSBhdCBhbGwuCi0gKiBASVNQX0JVRl9TVEFURV9ET05FOiBUaGUgZGV2aWNlIGlzIGRvbmUgd2l0aCB0aGUgYnVmZmVyIGFuZCBubyBlcnJvciBvY2N1cmVkLgorICogQElTUF9CVUZfU1RBVEVfRE9ORTogVGhlIGRldmljZSBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciBhbmQgbm8gZXJyb3Igb2NjdXJyZWQuCiAgKglGb3IgY2FwdHVyZSBkZXZpY2VzIHRoZSBidWZmZXIgY29udGFpbnMgdmFsaWQgZGF0YS4KICAqLwogZW51bSBpc3BfdmlkZW9fYnVmZmVyX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcmVzaXplci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKaW5kZXggNzVkMzliMS4uNjUzZjg4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKQEAgLTc1MSw3ICs3NTEsNyBAQAogICogcmF0aW8gd2lsbCB0aHVzIHJlc3VsdCBpbiBhIHJlc2l6aW5nIGZhY3RvciBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUKICAqIHJlcXVlc3RlZCB2YWx1ZS4KICAqCi0gKiBUbyBhY2NvbW9kYXRlIHRoYXQsIGFuZCBtYWtlIHN1cmUgdGhlIFRSTSBlcXVhdGlvbnMgYXJlIHNhdGlzZmllZCBleGFjdGx5LCB3ZQorICogVG8gYWNjb21tb2RhdGUgdGhhdCwgYW5kIG1ha2Ugc3VyZSB0aGUgVFJNIGVxdWF0aW9ucyBhcmUgc2F0aXNmaWVkIGV4YWN0bHksIHdlCiAgKiBjb21wdXRlIHRoZSBpbnB1dCBjcm9wIHJlY3RhbmdsZSBhcyB0aGUgbGFzdCBzdGVwLgogICoKICAqIEFzIGlmIHRoZSBzaXR1YXRpb24gd2Fzbid0IGNvbXBsZXggZW5vdWdoLCB0aGUgbWF4aW11bSBvdXRwdXQgd2lkdGggZGVwZW5kcwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAKICAqIEBzZCAgICA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggICAgOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdCAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgcmVzaXplcl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHZpZGVvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHZpZGVvLmMKaW5kZXggYTBiYjVkYi4uMjA4YTdlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3B2aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwdmlkZW8uYwpAQCAtNDk0LDEyICs0OTQsMTIgQEAKIC8qCiAgKiBvbWFwM2lzcF92aWRlb19idWZmZXJfbmV4dCAtIENvbXBsZXRlIHRoZSBjdXJyZW50IGJ1ZmZlciBhbmQgcmV0dXJuIHRoZSBuZXh0CiAgKiBAdmlkZW86IElTUCB2aWRlbyBvYmplY3QKLSAqIEBlcnJvcjogV2hldGhlciBhbiBlcnJvciBvY2N1cmVkIGR1cmluZyBjYXB0dXJlCisgKiBAZXJyb3I6IFdoZXRoZXIgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNhcHR1cmUKICAqCiAgKiBSZW1vdmUgdGhlIGN1cnJlbnQgdmlkZW8gYnVmZmVyIGZyb20gdGhlIERNQSBxdWV1ZSBhbmQgZmlsbCBpdHMgdGltZXN0YW1wLAogICogZmllbGQgY291bnQgYW5kIHN0YXRlIGZpZWxkcyBiZWZvcmUgd2FraW5nIHVwIGl0cyBjb21wbGV0aW9uIGhhbmRsZXIuCiAgKgotICogVGhlIGJ1ZmZlciBzdGF0ZSBpcyBzZXQgdG8gVklERU9CVUZfRE9ORSBpZiBubyBlcnJvciBvY2N1cmVkIChAZXJyb3IgaXMgMCkKKyAqIFRoZSBidWZmZXIgc3RhdGUgaXMgc2V0IHRvIFZJREVPQlVGX0RPTkUgaWYgbm8gZXJyb3Igb2NjdXJyZWQgKEBlcnJvciBpcyAwKQogICogb3IgVklERU9CVUZfRVJST1Igb3RoZXJ3aXNlIChAZXJyb3IgaXMgbm9uLXplcm8pLgogICoKICAqIFRoZSBETUEgcXVldWUgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgYnVmZmVyLgpAQCAtNTc4LDcgKzU3OCw3IEBACiAvKgogICogb21hcDNpc3BfdmlkZW9fcmVzdW1lIC0gUGVyZm9ybSByZXN1bWUgb3BlcmF0aW9uIG9uIHRoZSBidWZmZXJzCiAgKiBAdmlkZW86IElTUCB2aWRlbyBvYmplY3QKLSAqIEBjb250aW51b3VzOiBQaXBlbGluZSBpcyBpbiBzaW5nbGUgc2hvdCBtb2RlIGlmIDAgb3IgY29udGlub3VzIG1vZGUgb3RoZXJ3aXNlCisgKiBAY29udGludW91czogUGlwZWxpbmUgaXMgaW4gc2luZ2xlIHNob3QgbW9kZSBpZiAwIG9yIGNvbnRpbnVvdXMgbW9kZSBvdGhlcndpc2UKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgb24gc3VzcGVuZC9yZXN1bWUgc2NlbmFyaW8uIEl0CiAgKiByZXF1ZXN0cyB2aWRlbyBxdWV1ZSBsYXllciB0byBkaXNjYXJkIGJ1ZmZlcnMgbWFya2VkIGFzIERPTkUgaWYgaXQncyBpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjY2NTAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y2NjUwLmMKaW5kZXggZmU4ZTNlYi4uNDU2ZDlhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjY2NTAuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL292NjY1MC5jCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogCXJldCA9IG92NjY1MF9yZWdfcm13KGNsaWVudCwgUkVHX0NPTUEsIENPTUFfUkVTRVQsIDApOwogCWlmIChyZXQpCiAJCWRldl9lcnIoJmNsaWVudC0+ZGV2LAotCQkJIkFuIGVycm9yIG9jY3VyZWQgd2hpbGUgZW50ZXJpbmcgc29mdCByZXNldCFcbiIpOworCQkJIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGVudGVyaW5nIHNvZnQgcmVzZXQhXG4iKTsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL292OTY0MC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vdjk2NDAuYwppbmRleCA1M2Q4OGEyLi41MTczYWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL292OTY0MC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y5NjQwLmMKQEAgLTI3Myw3ICsyNzMsNyBAQAogCXJldCA9IG92OTY0MF9yZWdfd3JpdGUoY2xpZW50LCBPVjk2NDBfQ09NNywgT1Y5NjQwX0NPTTdfU0NDQl9SRVNFVCk7CiAJaWYgKHJldCkKIAkJZGV2X2VycigmY2xpZW50LT5kZXYsCi0JCQkiQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBlbnRlcmluZyBzb2Z0IHJlc2V0IVxuIik7CisJCQkiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZW50ZXJpbmcgc29mdCByZXNldCFcbiIpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWVlcHJvbS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKaW5kZXggYWVlZDFjMi4uOTUxNWYzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKQEAgLTMyLDcgKzMyLDcgQEAKIAogICAgUmVhZCBhbmQgYW5hbHl6ZSBkYXRhIGluIHRoZSBlZXByb20uICBVc2UgdHZlZXByb20gdG8gZmlndXJlIG91dAogICAgdGhlIHBhY2tldCBzdHJ1Y3R1cmUsIHNpbmNlIHRoaXMgaXMgYW5vdGhlciBIYXVwcGF1Z2UgZGV2aWNlIGFuZAotICAgaW50ZXJuYWxseSBpdCBoYXMgYSBmYW1pbHkgcmVzZW1ibGVuY2UgdG8gaXZ0di10eXBlIGRldmljZXMKKyAgIGludGVybmFsbHkgaXQgaGFzIGEgZmFtaWx5IHJlc2VtYmxhbmNlIHRvIGl2dHYtdHlwZSBkZXZpY2VzCiAKICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWhkdy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKaW5kZXggNTFkMzAwOS4uZDc3NTNhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKQEAgLTc1LDcgKzc1LDcgQEAKICAqICAoYnV0IGl0IG1pZ2h0IHN0aWxsIG9uIHRoZSBidXMpLiAgSW4gdGhpcyBzdGF0ZSB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuCiAgKiAgZG87IGl0IG11c3QgYmUgcmVwbHVnZ2VkIGluIG9yZGVyIHRvIHJlY292ZXIuCiAgKgotICogIENPTEQgLSBEZXZpY2UgaXMgaW4gYW4gdW51c3VhYmxlIHN0YXRlLCBuZWVkcyBtaWNyb2NvbnRyb2xsZXIgZmlybXdhcmUuCisgKiAgQ09MRCAtIERldmljZSBpcyBpbiBhbiB1bnVzYWJsZSBzdGF0ZSwgbmVlZHMgbWljcm9jb250cm9sbGVyIGZpcm13YXJlLgogICoKICAqICBXQVJNIC0gV2UgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZSBhbmQgdGhlIHByb3BlcgogICogIG1pY3JvY29udHJvbGxlciBmaXJtd2FyZSBpcyBydW5uaW5nLCBidXQgb3RoZXIgZGV2aWNlIGluaXRpYWxpemF0aW9uIGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B4YV9jYW1lcmEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCmluZGV4IDAyNjg2NzcuLmMxZWUwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCkBAIC03MTQsNyArNzE0LDcgQEAKICAqCiAgKiBUaGUgRE1BIGNoYWluaW5nIGlzIGRvbmUgd2l0aCBETUEgcnVubmluZy4gVGhpcyBtZWFucyBhIHRpbnkgdGVtcG9yYWwgd2luZG93CiAgKiByZW1haW5zLCB3aGVyZSBhIGJ1ZmZlciBpcyBxdWV1ZWQgb24gdGhlIGNoYWluLCB3aGlsZSB0aGUgY2hhaW4gaXMgYWxyZWFkeQotICogc3RvcHBlZC4gVGhpcyBtZWFucyB0aGUgdGFpbGVkIGJ1ZmZlciB3b3VsZCBuZXZlciBiZSB0cmFuc2ZlcmVkIGJ5IERNQS4KKyAqIHN0b3BwZWQuIFRoaXMgbWVhbnMgdGhlIHRhaWxlZCBidWZmZXIgd291bGQgbmV2ZXIgYmUgdHJhbnNmZXJyZWQgYnkgRE1BLgogICogVGhpcyBmdW5jdGlvbiByZXN0YXJ0cyB0aGUgY2FwdHVyZSBmb3IgdGhpcyBjb3JuZXIgY2FzZSwgd2hlcmUgOgogICogIC0gREFEUigpID09IERBRERSX1NUT1AKICAqICAtIGEgdmlkZW9idWZmZXIgaXMgcXVldWVkIG9uIHRoZSBwY2Rldi0+Y2FwdHVyZSBsaXN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1maW1jL2ZpbWMtcmVnLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1maW1jL2ZpbWMtcmVnLmMKaW5kZXggNGQ5MjlhMy4uNDg5M2IyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtZmltYy9maW1jLXJlZy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLWZpbWMvZmltYy1yZWcuYwpAQCAtMzU2LDcgKzM1Niw3IEBACiAJCS8qIG9uZSBzaG90IG1vZGUgKi8KIAkJY2ZnIHw9IFM1UF9DSUlNR0NQVF9DUFRfRlJFTl9FTkFCTEUgfCBTNVBfQ0lJTUdDUFRfSU1HQ1BURU47CiAJfSBlbHNlIHsKLQkJLyogQ29udGlub3VzIGZyYW1lIGNhcHR1cmUgbW9kZSAoZnJlZXJ1bikuICovCisJCS8qIENvbnRpbnVvdXMgZnJhbWUgY2FwdHVyZSBtb2RlIChmcmVlcnVuKS4gKi8KIAkJY2ZnICY9IH4oUzVQX0NJSU1HQ1BUX0NQVF9GUkVOX0VOQUJMRSB8CiAJCQkgUzVQX0NJSU1HQ1BUX0NQVF9GUk1PRF9DTlQpOwogCQljZmcgfD0gUzVQX0NJSU1HQ1BUX0lNR0NQVEVOOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWNhcmRzLmMKaW5kZXggNjFjNjAwNy4uNTBmMWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1jYXJkcy5jCkBAIC03NDYwLDcgKzc0NjAsNyBAQAogCQkJCWRldi0+dHVuZXJfdHlwZSA9IFRVTkVSX1BISUxJUFNfRk0xMjE2TUVfTUszOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKLQkJCQlwcmludGsoS0VSTl9FUlIgIiVzIENhbnQgZGV0ZXJtaW5lIHR1bmVyIHR5cGUgJXggZnJvbSBFRVBST01cbiIsIGRldi0+bmFtZSwgdHVuZXJfdCk7CisJCQkJcHJpbnRrKEtFUk5fRVJSICIlcyBDYW4ndCBkZXRlcm1pbmUgdHVuZXIgdHlwZSAleCBmcm9tIEVFUFJPTVxuIiwgZGV2LT5uYW1lLCB0dW5lcl90KTsKIAkJCX0KIAkJfSBlbHNlIGlmICgoZGF0YVsxXSAhPSAwKSAmJiAoZGF0YVsxXSAhPSAweGZmKSkgewogCQkJLyogbmV3IGNvbmZpZyBzdHJ1Y3R1cmUgKi8KQEAgLTc0ODAsNyArNzQ4MCw3IEBACiAJCQkJCXByaW50ayhLRVJOX0lORk8gIiVzIEJvYXJkIGhhcyBEVkItVFxuIiwgZGV2LT5uYW1lKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6Ci0JCQkJcHJpbnRrKEtFUk5fRVJSICIlcyBDYW50IGRldGVybWluZSB0dW5lciB0eXBlICV4IGZyb20gRUVQUk9NXG4iLCBkZXYtPm5hbWUsIHR1bmVyX3QpOworCQkJCXByaW50ayhLRVJOX0VSUiAiJXMgQ2FuJ3QgZGV0ZXJtaW5lIHR1bmVyIHR5cGUgJXggZnJvbSBFRVBST01cbiIsIGRldi0+bmFtZSwgdHVuZXJfdCk7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlwcmludGsoS0VSTl9FUlIgIiVzIHVuZXhwZWN0ZWQgY29uZmlnIHN0cnVjdHVyZVxuIiwgZGV2LT5uYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LWNtZC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKaW5kZXggNmE0YzIxNy4uNjJmYWM3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQAogfQogCiAvKiBXYWl0IGZvciBhIHNpZ25hbCBldmVudCwgd2l0aG91dCBob2xkaW5nIGEgbXV0ZXguIEVpdGhlciByZXR1cm4gVElNRU9VVCBpZgotICogdGhlIGV2ZW50IG5ldmVyIG9jY3VyZWQsIG9yIFNBQV9PSyBpZiBpdCB3YXMgc2lnbmFsZWQgZHVyaW5nIHRoZSB3YWl0LgorICogdGhlIGV2ZW50IG5ldmVyIG9jY3VycmVkLCBvciBTQUFfT0sgaWYgaXQgd2FzIHNpZ25hbGVkIGR1cmluZyB0aGUgd2FpdC4KICAqLwogaW50IHNhYTcxNjRfY21kX3dhaXQoc3RydWN0IHNhYTcxNjRfZGV2ICpkZXYsIHU4IHNlcW5vKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtZncuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LWZ3LmMKaW5kZXggYjM2OTMwMC4uYTI2NmJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtZncuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxNjQvc2FhNzE2NC1mdy5jCkBAIC00NDQsNyArNDQ0LDcgQEAKIAkJcHJpbnRrKEtFUk5fSU5GTyAiIC5SZXNlcnZlZCA9IDB4JXhcbiIsIGhkci0+cmVzZXJ2ZWQpOwogCQlwcmludGsoS0VSTl9JTkZPICIgLlZlcnNpb24gPSAweCV4XG4iLCBoZHItPnZlcnNpb24pOwogCi0JCS8qIFJldHJlaXZlIGJvb3Rsb2FkZXIgaWYgcmVxZCAqLworCQkvKiBSZXRyaWV2ZSBib290bG9hZGVyIGlmIHJlcWQgKi8KIAkJaWYgKChoZHItPmZpcm13YXJlc2l6ZSA9PSAwKSAmJiAoaGRyLT5ic2xzaXplID09IDApKQogCQkJLyogU2Vjb25kIGJvb3Rsb2FkZXIgaW4gdGhlIGZpcm13YXJlIGZpbGUgKi8KIAkJCWZpbGVzaXplID0gaGRyLT5yZXNlcnZlZCAqIDE2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtdHlwZXMuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LXR5cGVzLmgKaW5kZXggZGYxZDI5OS4uMWQyMTQwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtdHlwZXMuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxNjQvc2FhNzE2NC10eXBlcy5oCkBAIC00MTIsNyArNDEyLDcgQEAKIAl1OAlTdGFydExpbmU7IC8qIE5UU0MgU3RhcnQgPSAxMCAqLwogCXU4CUVuZExpbmU7IC8qIE5UU0MgPSAyMSAqLwogCXU4CUZpZWxkUmF0ZTsgLyogNjAgZm9yIE5UU0MgKi8KLQl1OAliTnVtTGluZXM7IC8qIFVuc2VkIC0gc2NoZWR1bGVkIGZvciByZW1vdmFsICovCisJdTgJYk51bUxpbmVzOyAvKiBVbnVzZWQgLSBzY2hlZHVsZWQgZm9yIHJlbW92YWwgKi8KIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKIHN0cnVjdCB0bUNvbVJlc1Byb2JlQ29tbWl0IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX2NvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX2NvcmUuYwppbmRleCBjZTU2YTFjLi4wZTA3YzQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NuOWMxMDIvc245YzEwMl9jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zbjljMTAyL3NuOWMxMDJfY29yZS5jCkBAIC0xODEwLDcgKzE4MTAsNyBAQAogCQkvKgogCQkgICBXZSB3aWxsIG5vdCByZWxlYXNlIHRoZSAib3Blbl9tdXRleCIgbG9jaywgc28gdGhhdCBvbmx5IG9uZQogCQkgICBwcm9jZXNzIGNhbiBiZSBpbiB0aGUgd2FpdCBxdWV1ZSBiZWxvdy4gVGhpcyB3YXkgdGhlIHByb2Nlc3MKLQkJICAgd2lsbCBiZSBzbGVlcGluZyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCB3aXRob3V0IGxvb3NpbmcgaXRzCisJCSAgIHdpbGwgYmUgc2xlZXBpbmcgd2hpbGUgaG9sZGluZyB0aGUgbG9jaywgd2l0aG91dCBsb3NpbmcgaXRzCiAJCSAgIHByaW9yaXR5IGFmdGVyIGFueSB3YWtlX3VwKCkuCiAJCSovCiAJCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9leGNsdXNpdmUoY2FtLT53YWl0X29wZW4sCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NuOWMxMDIvc245YzEwMl9zZW5zb3IuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCmluZGV4IDdmMzg1NDkuLjM2Nzk5NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCkBAIC0xODAsNyArMTgwLDcgQEAKIAkgICBJdCBzaG91bGQgYmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBzZW5zb3Igb25seSwgYnV0IG1heSBhbHNvCiAJICAgY29uZmlndXJlIHBhcnQgb2YgdGhlIFNOOUMxWFggY2hpcCBpZiBuZWNlc3NhcnkuIFlvdSBkb24ndCBuZWVkIHRvCiAJICAgc2V0dXAgcGljdHVyZSBzZXR0aW5ncyBsaWtlIGJyaWdodG5lc3MsIGNvbnRyYXN0LCBldGMuLiBoZXJlLCBpZgotCSAgIHRoZSBjb3JyaXNwb25kaW5nIGNvbnRyb2xzIGFyZSBpbXBsZW1lbnRlZCAoc2VlIGJlbG93KSwgc2luY2UKKwkgICB0aGUgY29ycmVzcG9uZGluZyBjb250cm9scyBhcmUgaW1wbGVtZW50ZWQgKHNlZSBiZWxvdyksIHNpbmNlCiAJICAgdGhleSBhcmUgYWRqdXN0ZWQgaW4gdGhlIGNvcmUgZHJpdmVyIGJ5IGNhbGxpbmcgdGhlIHNldF9jdHJsKCkKIAkgICBtZXRob2QgYWZ0ZXIgaW5pdCgpLCB3aGVyZSB0aGUgYXJndW1lbnRzIGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMKIAkgICBzcGVjaWZpZWQgaW4gdGhlIHY0bDJfcXVlcnljdHJsIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90Y204MjV4LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYwppbmRleCA1NDY4MWE1Li5iNmVlMWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYwpAQCAtNDkzLDcgKzQ5Myw3IEBACiAJaW50IHZhbCwgcjsKIAlzdHJ1Y3QgdmNvbnRyb2wgKmx2YzsKIAotCS8qIGV4cG9zdXJlIHRpbWUgaXMgc3BlY2lhbCwgc3ByZWFkIGFjY3Jvc3MgMiByZWdpc3RlcnMgKi8KKwkvKiBleHBvc3VyZSB0aW1lIGlzIHNwZWNpYWwsIHNwcmVhZCBhY3Jvc3MgMiByZWdpc3RlcnMgKi8KIAlpZiAodmMtPmlkID09IFY0TDJfQ0lEX0VYUE9TVVJFKSB7CiAJCWludCB2YWxfbG93ZXIsIHZhbF91cHBlcjsKIApAQCAtNTM4LDcgKzUzOCw3IEBACiAJc3RydWN0IHZjb250cm9sICpsdmM7CiAJaW50IHZhbCA9IHZjLT52YWx1ZTsKIAotCS8qIGV4cG9zdXJlIHRpbWUgaXMgc3BlY2lhbCwgc3ByZWFkIGFjY3Jvc3MgMiByZWdpc3RlcnMgKi8KKwkvKiBleHBvc3VyZSB0aW1lIGlzIHNwZWNpYWwsIHNwcmVhZCBhY3Jvc3MgMiByZWdpc3RlcnMgKi8KIAlpZiAodmMtPmlkID09IFY0TDJfQ0lEX0VYUE9TVVJFKSB7CiAJCWludCB2YWxfbG93ZXIsIHZhbF91cHBlcjsKIAkJdmFsX2xvd2VyID0gdmFsICYgVENNODI1WF9NQVNLKFRDTTgyNVhfRVNSU1BEX0wpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90dmF1ZGlvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYwppbmRleCBhMjVlMmI1Li5jNDZhM2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYwpAQCAtMTA1OCwxMSArMTA1OCwxMSBAQAogI2RlZmluZSBUREE5ODc1X01WUiAgICAgICAgIDB4MWIgIC8qIE1haW4gdm9sdW1lIGRyb2l0ZSAqLwogI2RlZmluZSBUREE5ODc1X01CQSAgICAgICAgIDB4MWQgIC8qIE1haW4gQmFzc2UgKi8KICNkZWZpbmUgVERBOTg3NV9NVFIgICAgICAgICAweDFlICAvKiBNYWluIHRyZWJsZSAqLwotI2RlZmluZSBUREE5ODc1X0FDUyAgICAgICAgIDB4MWYgIC8qIEF1eGlsYXJ5IGNoYW5uZWwgc2VsZWN0IChGTSkgMGIwMDAwMDAwKi8KLSNkZWZpbmUgVERBOTg3NV9BVkwgICAgICAgICAweDIwICAvKiBBdXhpbGFyeSB2b2x1bWUgZ2F1Y2hlICovCi0jZGVmaW5lIFREQTk4NzVfQVZSICAgICAgICAgMHgyMSAgLyogQXV4aWxhcnkgdm9sdW1lIGRyb2l0ZSAqLwotI2RlZmluZSBUREE5ODc1X0FCQSAgICAgICAgIDB4MjIgIC8qIEF1eGlsYXJ5IEJhc3NlICovCi0jZGVmaW5lIFREQTk4NzVfQVRSICAgICAgICAgMHgyMyAgLyogQXV4aWxhcnkgdHJlYmxlICovCisjZGVmaW5lIFREQTk4NzVfQUNTICAgICAgICAgMHgxZiAgLyogQXV4aWxpYXJ5IGNoYW5uZWwgc2VsZWN0IChGTSkgMGIwMDAwMDAwKi8KKyNkZWZpbmUgVERBOTg3NV9BVkwgICAgICAgICAweDIwICAvKiBBdXhpbGlhcnkgdm9sdW1lIGdhdWNoZSAqLworI2RlZmluZSBUREE5ODc1X0FWUiAgICAgICAgIDB4MjEgIC8qIEF1eGlsaWFyeSB2b2x1bWUgZHJvaXRlICovCisjZGVmaW5lIFREQTk4NzVfQUJBICAgICAgICAgMHgyMiAgLyogQXV4aWxpYXJ5IEJhc3NlICovCisjZGVmaW5lIFREQTk4NzVfQVRSICAgICAgICAgMHgyMyAgLyogQXV4aWxpYXJ5IHRyZWJsZSAqLwogCiAjZGVmaW5lIFREQTk4NzVfTVNSICAgICAgICAgMHgwMiAgLyogTW9uaXRvciBzZWxlY3QgcmVnaXN0ZXIgKi8KICNkZWZpbmUgVERBOTg3NV9DMU1TQiAgICAgICAweDAzICAvKiBDYXJyaWVyIDEgKEZNKSBmcmVxdWVuY3kgcmVnaXN0ZXIgTVNCICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3V2Yy91dmNfdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCmluZGV4IDU0NWMwMjkuLmZjNzY2YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCkBAIC0zOTQsMTEgKzM5NCwxMSBAQAogICoKICAqIHV2Y192aWRlb19kZWNvZGVfZW5kIGlzIGNhbGxlZCB3aXRoIGhlYWRlciBkYXRhIGF0IHRoZSBlbmQgb2YgYSBidWxrIG9yCiAgKiBpc29jaHJvbm91cyBwYXlsb2FkLiBJdCBwZXJmb3JtcyBhbnkgYWRkaXRpb25hbCBoZWFkZXIgZGF0YSBwcm9jZXNzaW5nIGFuZAotICogcmV0dXJucyAwIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBhbiBlcnJvciBvY2N1cmVkLiBBcyBoZWFkZXIgZGF0YSBoYXZlCisgKiByZXR1cm5zIDAgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIGFuIGVycm9yIG9jY3VycmVkLiBBcyBoZWFkZXIgZGF0YSBoYXZlCiAgKiBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIGJ5IHV2Y192aWRlb19kZWNvZGVfc3RhcnQsIHRoaXMgZnVuY3Rpb25zIGlzbid0CiAgKiByZXF1aXJlZCB0byBwZXJmb3JtIHNhbml0eSBjaGVja3MgYSBzZWNvbmQgdGltZS4KICAqCi0gKiBGb3IgaXNvY2hyb25vdXMgdHJhbnNmZXJzIHdoZXJlIGEgcGF5bG9hZCBpcyBhbHdheXMgdHJhbnNmZXJlZCBpbiBhIHNpbmdsZQorICogRm9yIGlzb2Nocm9ub3VzIHRyYW5zZmVycyB3aGVyZSBhIHBheWxvYWQgaXMgYWx3YXlzIHRyYW5zZmVycmVkIGluIGEgc2luZ2xlCiAgKiBVUkIsIHRoZSB0aHJlZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgaW4gYSByb3cuCiAgKgogICogVG8gbGV0IHRoZSBkZWNvZGVyIHByb2Nlc3MgaGVhZGVyIGRhdGEgYW5kIHVwZGF0ZSBpdHMgaW50ZXJuYWwgc3RhdGUgZXZlbgpAQCAtNjU4LDcgKzY1OCw3IEBACiAJCQkJCQkJICAgIGJ1Zik7CiAJCX0gd2hpbGUgKHJldCA9PSAtRUFHQUlOKTsKIAotCQkvKiBJZiBhbiBlcnJvciBvY2N1cmVkIHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuICovCisJCS8qIElmIGFuIGVycm9yIG9jY3VycmVkIHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuICovCiAJCWlmIChyZXQgPCAwIHx8IGJ1ZiA9PSBOVUxMKSB7CiAJCQlzdHJlYW0tPmJ1bGsuc2tpcF9wYXlsb2FkID0gMTsKIAkJfSBlbHNlIHsKQEAgLTgyMSw3ICs4MjEsNyBAQAogCQlyZXR1cm4gc3RyZWFtLT51cmJfc2l6ZSAvIHBzaXplOwogCiAJLyogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEJ1bGsgZW5kcG9pbnRzIG1pZ2h0IHRyYW5zZmVyIFVWQwotCSAqIHBheWxvYWRzIGFjY3Jvc3MgbXVsdGlwbGUgVVJCcy4KKwkgKiBwYXlsb2FkcyBhY3Jvc3MgbXVsdGlwbGUgVVJCcy4KIAkgKi8KIAlucGFja2V0cyA9IERJVl9ST1VORF9VUChzaXplLCBwc2l6ZSk7CiAJaWYgKG5wYWNrZXRzID4gVVZDX01BWF9QQUNLRVRTKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3Y0bDItaW9jdGwuYwppbmRleCBhMDFlZDM5Li41MDZlZGNjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMKQEAgLTQ4LDcgKzQ4LDcgQEAKIAkJCXByaW50ayhLRVJOX0NPTlQgIiVzOiAiIGZtdCwgdmZkLT5uYW1lLCAjIyBhcmcpO1wKIAkJfSB3aGlsZSAoMCkKIAotLyogWmVybyBvdXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0IHBvaW50ZWQgdG8gYnkgcC4gIEV2ZXJ0aGluZyBhZnRlciwgYnV0CisvKiBaZXJvIG91dCB0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgcG9pbnRlZCB0byBieSBwLiAgRXZlcnl0aGluZyBhZnRlciwgYnV0CiAgKiBub3QgaW5jbHVkaW5nLCB0aGUgc3BlY2lmaWVkIGZpZWxkIGlzIGNsZWFyZWQuICovCiAjZGVmaW5lIENMRUFSX0FGVEVSX0ZJRUxEKHAsIGZpZWxkKSBcCiAJbWVtc2V0KCh1OCAqKShwKSArIG9mZnNldG9mKHR5cGVvZigqKHApKSwgZmllbGQpICsgc2l6ZW9mKChwKS0+ZmllbGQpLCBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZweDMyMjAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCmluZGV4IDc1MzAxZDEuLmNhMzcyZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogCS8qIEhlcmUgd2UgYmFjayB1cCB0aGUgaW5wdXQgc2VsZWN0aW9uIGJlY2F1c2UgaXQgZ2V0cwogCSAgIG92ZXJ3cml0dGVuIHdoZW4gd2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGggdGhlCi0JICAgY2hvb3NlbiB2aWRlbyBub3JtICovCisJICAgY2hvc2VuIHZpZGVvIG5vcm0gKi8KIAl0ZW1wX2lucHV0ID0gdnB4MzIyMF9mcF9yZWFkKHNkLCAweGYyKTsKIAogCXY0bDJfZGJnKDEsIGRlYnVnLCBzZCwgInNfc3RkICVsbHhcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpc3RkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vdmlkZW9jb2RlYy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKaW5kZXggYjY1NGJmZi4uZGVmNTU1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKQEAgLTU3LDcgKzU3LDcgQEAKICAgIHRoZXJmb3IgdGhleSBtYXkgbm90IGJlIGluaXRpYWxpemVkLgogCiAgICBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBqdXN0IGZvciBjb252ZW5pZW5jZSwgYXMgdGhleSBhcmUgZm9yIHN1cmUgdXNlZCBieQotICAgbW9zdC9hbGwgb2YgdGhlIGNvZGVjcy4gVGhlIGxhc3Qgb25lcyBtYXkgYmUgb21taXRlZCwgdG9vLgorICAgbW9zdC9hbGwgb2YgdGhlIGNvZGVjcy4gVGhlIGxhc3Qgb25lcyBtYXkgYmUgb21pdHRlZCwgdG9vLgogCiAgICBTZWUgdGhlIHN0cnVjdHVyZSBkZWNsYXJhdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgd2hpY2ggZGF0YSBoYXMKICAgIHRvIGJlIHNldCB1cCBmb3IgdGhlIG1hc3RlciBhbmQgdGhlIHNsYXZlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbi5oIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbi5oCmluZGV4IDRiYjM2OGUuLmYzZjY0MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW4uaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuLmgKQEAgLTI1OSw3ICsyNTksNyBAQAogCXN0cnVjdCB2ZmVfcG9sYXJpdHkgdmZlX3BvbDsKIAl1OCBncGlvX3BvbFtaUl9HUElPX01BWF07CiAKLQkvKiBpcyB0aGUgL0dXUyBsaW5lIGNvbmVjdGVkPyAqLworCS8qIGlzIHRoZSAvR1dTIGxpbmUgY29ubmVjdGVkPyAqLwogCXU4IGd3c19ub3RfY29ubmVjdGVkOwogCiAJLyogYXZzNmV5ZXMgbXV4IHNldHRpbmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuX2RyaXZlci5jCmluZGV4IDdjMzkyMWQuLjI3NzFkODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9kcml2ZXIuYwpAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIHsKIAlzdHJ1Y3Qgem9yYW4gKnpyID0gZmgtPnpyOwogCi0JLyogSWYgdGhlcmUgaXMgbm90aGluZyB0byBkbywgcmV0dXJuIGltbWVkaWF0bHkgKi8KKwkvKiBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCByZXR1cm4gaW1tZWRpYXRlbHkgKi8KIAlpZiAoKG9uICYmIGZoLT5vdmVybGF5X2FjdGl2ZSAhPSBaT1JBTl9GUkVFKSB8fAogCSAgICAoIW9uICYmIGZoLT5vdmVybGF5X2FjdGl2ZSA9PSBaT1JBTl9GUkVFKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2NvcmUvbXNwcm9fYmxvY2suYyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCmluZGV4IDU3YjQyYmYuLjRhMTkwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCkBAIC05NzMsNyArOTczLDcgQEAKIH0KIAogLyogTWVtb3J5IGFsbG9jYXRlZCBmb3IgYXR0cmlidXRlcyBieSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBmcmVlZCBieQotICogbXNwcm9fYmxvY2tfZGF0YV9jbGVhciwgbm8gbWF0dGVyIGlmIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHN1Y2NlZGVkCisgKiBtc3Byb19ibG9ja19kYXRhX2NsZWFyLCBubyBtYXR0ZXIgaWYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgc3VjY2VlZGVkCiAgKiBvciBmYWlsZWQuCiAgKi8KIHN0YXRpYyBpbnQgbXNwcm9fYmxvY2tfcmVhZF9hdHRyaWJ1dGVzKHN0cnVjdCBtZW1zdGlja19kZXYgKmNhcmQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5jIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L3I1OTIuYwppbmRleCA3MDBkNDIwLi42NjhmNWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmMKQEAgLTc5Niw3ICs3OTYsNyBAQAogCWlmIChtZW1zdGlja19hZGRfaG9zdChob3N0KSkKIAkJZ290byBlcnJvcjc7CiAKLQltZXNzYWdlKCJkcml2ZXIgc3VjY2VzZnVsbHkgbG9hZGVkIik7CisJbWVzc2FnZSgiZHJpdmVyIHN1Y2Nlc3NmdWxseSBsb2FkZWQiKTsKIAlyZXR1cm4gMDsKIGVycm9yNzoKIAlmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmggYi9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5oCmluZGV4IGVlZTI2NGUuLmM1NzI2YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmgKKysrIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L3I1OTIuaApAQCAtNDMsMTIgKzQzLDEyIEBACiAKIAkJCQkJCQkvKiBFcnJvciBkZXRlY3Rpb24gdmlhIENSQyAqLwogI2RlZmluZSBSNTkyX1NUQVRVU19TRU5EX0VSUgkJKDEgPDwgMjQpCS8qIFNlbmQgZmFpbGVkICovCi0jZGVmaW5lIFI1OTJfU1RBVFVTX1JFQ1ZfRVJSCQkoMSA8PCAyNSkJLyogUmVjaWV2ZSBmYWlsZWQgKi8KKyNkZWZpbmUgUjU5Ml9TVEFUVVNfUkVDVl9FUlIJCSgxIDw8IDI1KQkvKiBSZWNlaXZlIGZhaWxlZCAqLwogCiAJCQkJCQkJLyogQ2FyZCBzdGF0ZSAqLwotI2RlZmluZSBSNTkyX1NUQVRVU19SRFkJCQkoMSA8PCAyOCkJLyogUkRZIHNpZ25hbCByZWNpZXZlZCAqLworI2RlZmluZSBSNTkyX1NUQVRVU19SRFkJCQkoMSA8PCAyOCkJLyogUkRZIHNpZ25hbCByZWNlaXZlZCAqLwogI2RlZmluZSBSNTkyX1NUQVRVU19DRUQJCQkoMSA8PCAyOSkJLyogSU5UOiBDb21tYW5kIGRvbmUgKHNlcmlhbCBtb2RlKSovCi0jZGVmaW5lIFI1OTJfU1RBVFVTX1NGSUZPX0lOUFVUCQkoMSA8PCAzMCkJLyogU21hbGwgZmlmbyByZWNpZXZlZCBkYXRhKi8KKyNkZWZpbmUgUjU5Ml9TVEFUVVNfU0ZJRk9fSU5QVVQJCSgxIDw8IDMwKQkvKiBTbWFsbCBmaWZvIHJlY2VpdmVkIGRhdGEqLwogCiAjZGVmaW5lIFI1OTJfU0ZJRk9fU0laRQkJCTMyCQkvKiB0b3RhbCBzaXplIG9mIHNtYWxsIGZpZm8gaXMgMzIgYnl0ZXMgKi8KICNkZWZpbmUgUjU5Ml9TRklGT19QQUNLRVQJCTgJCS8qIHBhY2tldCBzaXplIG9mIHNtYWxsIGZpZm8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfZmMuaCBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfZmMuaAppbmRleCBmYWNlNmU3Li4wM2JlOGIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL2xzaS9tcGlfbG9nX2ZjLmgKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19mYy5oCkBAIC0zOCw4ICszOCw4IEBACiB7CiAgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9CQVNFICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAwMDAwLAogICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfT1VUX09GX09SREVSX0ZSQU1FID0gMHgyMDAwMDAwMSwgLyogcmVjZWl2ZWQgYW4gb3V0IG9mIG9yZGVyIGZyYW1lIC0gdW5zdXBwb3J0ZWQgKi8KLSAgICBNUElfSU9DTE9HSU5GT19GQ19JTklUX0VSUk9SX0JBRF9TVEFSVF9PRl9GUkFNRSA9IDB4MjAwMDAwMDIsIC8qIEJhZCBSeCBGcmFtZSwgYmFkIHN0YXJ0IG9mIGZyYW1lIHByaW1hdGl2ZSAqLwotICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfQkFEX0VORF9PRl9GUkFNRSAgID0gMHgyMDAwMDAwMywgLyogQmFkIFJ4IEZyYW1lLCBiYWQgZW5kIG9mIGZyYW1lIHByaW1hdGl2ZSAqLworICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfQkFEX1NUQVJUX09GX0ZSQU1FID0gMHgyMDAwMDAwMiwgLyogQmFkIFJ4IEZyYW1lLCBiYWQgc3RhcnQgb2YgZnJhbWUgcHJpbWl0aXZlICovCisgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9FUlJPUl9CQURfRU5EX09GX0ZSQU1FICAgPSAweDIwMDAwMDAzLCAvKiBCYWQgUnggRnJhbWUsIGJhZCBlbmQgb2YgZnJhbWUgcHJpbWl0aXZlICovCiAgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9FUlJPUl9PVkVSX1JVTiAgICAgICAgICAgPSAweDIwMDAwMDA0LCAvKiBCYWQgUnggRnJhbWUsIG92ZXJydW4gKi8KICAgICBNUElfSU9DTE9HSU5GT19GQ19JTklUX0VSUk9SX1JYX09USEVSICAgICAgICAgICA9IDB4MjAwMDAwMDUsIC8qIE90aGVyIGVycm9ycyBjYXVnaHQgYnkgSU9DIHdoaWNoIHJlcXVpcmUgcmV0cmllcyAqLwogICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfU1VCUFJPQ19ERUFEICAgICAgID0gMHgyMDAwMDAwNiwgLyogTWFpbiBwcm9jZXNzb3IgY291bGQgbm90IGluaXRpYWxpemUgc3ViLXByb2Nlc3NvciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19zYXMuaCBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfc2FzLmgKaW5kZXggOGIwNDgxMC4uZjYyOTYwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19zYXMuaAorKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL2xzaS9tcGlfbG9nX3Nhcy5oCkBAIC01Niw5ICs1Niw5IEBACiAjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfTk9fRkxBU0hfQVZBSUxBQkxFICAgICAgICAgKDB4MDAwM0UwMDApIC8qIFRyaWVkIHRvIHVwbG9hZCBmcm9tIGZsYXNoLCBidXQgdGhlcmUgaXMgbm9uZSAqLwogI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX1VOS05PV05fSU1BR0VfVFlQRSAgICAgICAgICgweDAwMDNFMDAxKSAvKiBJbWFnZVR5cGUgZmllbGQgY29udGVudHMgd2VyZSBpbnZhbGlkICovCiAjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfV1JPTkdfSU1BR0VfU0laRSAgICAgICAgICAgKDB4MDAwM0UwMDIpIC8qIEltYWdlU2l6ZSBmaWVsZCBpbiBUQ1NHRSB3YXMgYmFkL29mZnNldCBpbiBNZmdQZyA0IHdhcyB3cm9uZyAqLwotI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX0VOVElSRV9GTEFTSF9VUExPQURfRkFJTEVEICgweDAwMDNFMDAzKSAvKiBFcnJvciBvY2N1cmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gdXBsb2FkIHRoZSBlbnRpcmUgZmxhc2ggKi8KLSNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9GV1VQTE9BRF9SRUdJT05fVVBMT0FEX0ZBSUxFRCAgICAgICAoMHgwMDAzRTAwNCkgLyogRXJyb3Igb2NjdXJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwbG9hZCBzaW5nbGUgZmxhc2ggcmVnaW9uICovCi0jZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfRE1BX0ZBSUxVUkUgICAgICAgICAgICAgICAgKDB4MDAwM0UwMDUpIC8qIFByb2JsZW0gb2NjdXJlZCB3aGlsZSBETUFpbmcgRlcgdG8gaG9zdCBtZW1vcnkgKi8KKyNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9GV1VQTE9BRF9FTlRJUkVfRkxBU0hfVVBMT0FEX0ZBSUxFRCAoMHgwMDAzRTAwMykgLyogRXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byB1cGxvYWQgdGhlIGVudGlyZSBmbGFzaCAqLworI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX1JFR0lPTl9VUExPQURfRkFJTEVEICAgICAgICgweDAwMDNFMDA0KSAvKiBFcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwbG9hZCBzaW5nbGUgZmxhc2ggcmVnaW9uICovCisjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfRE1BX0ZBSUxVUkUgICAgICAgICAgICAgICAgKDB4MDAwM0UwMDUpIC8qIFByb2JsZW0gb2NjdXJyZWQgd2hpbGUgRE1BaW5nIEZXIHRvIGhvc3QgbWVtb3J5ICovCiAKICNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9ESUFHX01TR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAoMHgwMDA0MDAwMCkgLyogRXJyb3IgaGFuZGxpbmcgZGlhZyBtc2cgLSBvcidkIHdpdGggZGlhZyBzdGF0dXMgKi8KIApAQCAtMTg3LDggKzE4Nyw4IEBACiAjZGVmaW5lIFBMX0xPR0lORk9fU1VCX0NPREVfQlJFQUtfT05fSU5DT01QTEVURV9CUkVBS19SQ1ZEICAgKDB4MDAwMDUwMDApCiAKICNkZWZpbmUgUExfTE9HSU5GT19DT0RFX0VOQ0xfTUdNVF9TTVBfRlJBTUVfRkFJTFVSRSAgICAgICAgICAoMHgwMDIwMDAwMCkgLyogQ2FuJ3QgZ2V0IFNNUCBGcmFtZSAqLwotI2RlZmluZSBQTF9MT0dJTkZPX0NPREVfRU5DTF9NR01UX1NNUF9SRUFEX0VSUk9SICAgICAgICAgICAgICgweDAwMjAwMDEwKSAvKiBFcnJvciBvY2N1cmVkIG9uIFNNUCBSZWFkICovCi0jZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1dSSVRFX0VSUk9SICAgICAgICAgICAgKDB4MDAyMDAwMjApIC8qIEVycm9yIG9jY3VyZWQgb24gU01QIFdyaXRlICovCisjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1JFQURfRVJST1IgICAgICAgICAgICAgKDB4MDAyMDAwMTApIC8qIEVycm9yIG9jY3VycmVkIG9uIFNNUCBSZWFkICovCisjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1dSSVRFX0VSUk9SICAgICAgICAgICAgKDB4MDAyMDAwMjApIC8qIEVycm9yIG9jY3VycmVkIG9uIFNNUCBXcml0ZSAqLwogI2RlZmluZSBQTF9MT0dJTkZPX0NPREVfRU5DTF9NR01UX05PVF9TVVBQT1JURURfT05fRU5DTCAgICAgICgweDAwMjAwMDQwKSAvKiBFbmNsIE1nbXQgc2VydmljZXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBXV0lEICovCiAjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfQUREUl9NT0RFX05PVF9TVVBQT1JURUQgICAgKDB4MDAyMDAwNTApIC8qIEFkZHJlc3MgTW9kZSBub3Qgc3VwcG9yZWQgKi8KICNkZWZpbmUgUExfTE9HSU5GT19DT0RFX0VOQ0xfTUdNVF9CQURfU0xPVF9OVU0gICAgICAgICAgICAgICAoMHgwMDIwMDA2MCkgLyogSW52YWxpZCBTbG90IE51bWJlciBpbiBTRVAgTXNnICovCkBAIC0yMDcsOCArMjA3LDggQEAKICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfUkVDRUlWRURfTkFDS19GUk9NX1NMQVZFICAgICAgICAgICAoMHgwMDIwMDEwMykgLyogU0VQIE5BQ0snZCwgaXQgaXMgYnVzeSAqLwogI2RlZmluZSBQTF9MT0dJTkZPX0RBX1NFUF9ESURfTk9UX1JFQ0VJVkVfQUNLICAgICAgICAgICAgICAgICgweDAwMjAwMTA0KSAvKiBTRVAgZGlkbid0IHJjdi4gQUNLIChMYXN0IFJjdmQgQml0ID0gMSkgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfQkFEX1NUQVRVU19IRFJfQ0hLU1VNICAgICAgICAgICAgICAoMHgwMDIwMDEwNSkgLyogU0VQIHN0b3BwZWQgb3Igc2VudCBiYWQgY2hrc3VtIGluIEhkciAqLwotI2RlZmluZSBQTF9MT0dJTkZPX0RBX1NFUF9TVE9QX09OX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICgweDAwMjAwMTA2KSAvKiBTRVAgc3RvcHBlZCB3aGlsZSB0cmFuc2ZlcmluZyBkYXRhICovCi0jZGVmaW5lIFBMX0xPR0lORk9fREFfU0VQX1NUT1BfT05fU0VOU0VfREFUQSAgICAgICAgICAgICAgICAgKDB4MDAyMDAxMDcpIC8qIFNFUCBzdG9wcGVkIHdoaWxlIHRyYW5zZmVyaW5nIHNlbnNlIGRhdGEgKi8KKyNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfU1RPUF9PTl9EQVRBICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDIwMDEwNikgLyogU0VQIHN0b3BwZWQgd2hpbGUgdHJhbnNmZXJyaW5nIGRhdGEgKi8KKyNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfU1RPUF9PTl9TRU5TRV9EQVRBICAgICAgICAgICAgICAgICAoMHgwMDIwMDEwNykgLyogU0VQIHN0b3BwZWQgd2hpbGUgdHJhbnNmZXJyaW5nIHNlbnNlIGRhdGEgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfVU5TVVBQT1JURURfU0NTSV9TVEFUVVNfMSAgICAgICAgICAoMHgwMDIwMDEwOCkgLyogU0VQIHJldHVybmVkIHVua25vd24gc2NzaSBzdGF0dXMgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfVU5TVVBQT1JURURfU0NTSV9TVEFUVVNfMiAgICAgICAgICAoMHgwMDIwMDEwOSkgLyogU0VQIHJldHVybmVkIHVua25vd24gc2NzaSBzdGF0dXMgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfQ0hLU1VNX0VSUk9SX0FGVEVSX1NUT1AgICAgICAgICAgICAoMHgwMDIwMDEwQSkgLyogU0VQIHJldHVybmVkIGJhZCBjaGtzdW0gYWZ0ZXIgU1RPUCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmMgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwppbmRleCBlYzgwODBjLi5mYTE1ZTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwpAQCAtMzQzNSw3ICszNDM1LDcgQEAKICAqCUlmIG1lbW9yeSBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCwgdGhlIHNhbWUgKGNhY2hlZCkgdmFsdWUKICAqCWlzIHJldHVybmVkLgogICoKLSAqCVJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciBub24temVybyBmb3IgZmFpbHVyZQorICoJUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgb3Igbm9uLXplcm8gZm9yIGZhaWx1cmUKICAqKi8KIGludAogbXB0X2FsbG9jX2Z3X21lbW9yeShNUFRfQURBUFRFUiAqaW9jLCBpbnQgc2l6ZSkKQEAgLTY5MzIsNyArNjkzMiw3IEBACiAgKglNZXNzYWdlIFVuaXQgUmVzZXQgLSBpbnN0cnVjdHMgdGhlIElPQyB0byByZXNldCB0aGUgUmVwbHkgUG9zdCBhbmQKICAqCUZyZWUgRklGTydzLiBBbGwgdGhlIE1lc3NhZ2UgRnJhbWVzIG9uIFJlcGx5IEZyZWUgRklGTyBhcmUgZGlzY2FyZGVkLgogICoJQWxsIHBvc3RlZCBidWZmZXJzIGFyZSBmcmVlZCwgYW5kIGV2ZW50IG5vdGlmaWNhdGlvbiBpcyB0dXJuZWQgb2ZmLgotICoJSU9DIGRvZXNudCByZXBseSB0byBhbnkgb3V0c3RhbmRpbmcgcmVxdWVzdC4gVGhpcyB3aWxsIHRyYW5zZmVyIElPQworICoJSU9DIGRvZXNuJ3QgcmVwbHkgdG8gYW55IG91dHN0YW5kaW5nIHJlcXVlc3QuIFRoaXMgd2lsbCB0cmFuc2ZlciBJT0MKICAqCXRvIFJFQURZIHN0YXRlLgogICoqLwogaW50CkBAIC03OTA1LDcgKzc5MDUsNyBAQAogCQkgICAgIk93bmVyIiwgCQkJCQkvKiAxNWggKi8KIAkJIk9wZW4gVHJhbnNtaXQgRE1BIEFib3J0IiwJCQkvKiAxNmggKi8KIAkJIklPIERldmljZSBNaXNzaW5nIERlbGF5IFJldHJ5IiwJCS8qIDE3aCAqLwotCQkiSU8gQ2FuY2VsbGVkIER1ZSB0byBSZWNpZXZlIEVycm9yIiwJCS8qIDE4aCAqLworCQkiSU8gQ2FuY2VsbGVkIER1ZSB0byBSZWNlaXZlIEVycm9yIiwJCS8qIDE4aCAqLwogCQlOVUxMLAkJCQkJCS8qIDE5aCAqLwogCQlOVUxMLAkJCQkJCS8qIDFBaCAqLwogCQlOVUxMLAkJCQkJCS8qIDFCaCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0Y3RsLmMKaW5kZXggODc4YmRhMC4uNmU2ZTE2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGN0bC5jCkBAIC05ODUsNyArOTg1LDcgQEAKIAlSZXBseU1zZyA9IChwRldEb3dubG9hZFJlcGx5X3QpaW9jcC0+aW9jdGxfY21kcy5yZXBseTsKIAlpb2NzdGF0ID0gbGUxNl90b19jcHUoUmVwbHlNc2ctPklPQ1N0YXR1cykgJiBNUElfSU9DU1RBVFVTX01BU0s7CiAJaWYgKGlvY3N0YXQgPT0gTVBJX0lPQ1NUQVRVU19TVUNDRVNTKSB7Ci0JCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJGL1cgdXBkYXRlIHN1Y2Nlc3NmdWxsIVxuIiwgaW9jcC0+bmFtZSk7CisJCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJGL1cgdXBkYXRlIHN1Y2Nlc3NmdWwhXG4iLCBpb2NwLT5uYW1lKTsKIAkJcmV0dXJuIDA7CiAJfSBlbHNlIGlmIChpb2NzdGF0ID09IE1QSV9JT0NTVEFUVVNfSU5WQUxJRF9GVU5DVElPTikgewogCQlwcmludGsoTVlJT0Nfc19XQVJOX0ZNVCAiSG1tbS4uLiAgRi9XIGRvd25sb2FkIG5vdCBzdXBwb3J0ZWQhPyFcbiIsCkBAIC0yNDA3LDcgKzI0MDcsNyBAQAogCX0KIAogCS8qIG1mIGlzIG51bGwgaWYgY29tbWFuZCBpc3N1ZWQgc3VjY2Vzc2Z1bGx5Ci0JICogb3RoZXJ3aXNlLCBmYWlsdXJlIG9jY3VyZWQgYWZ0ZXIgbWYgYWNxdWlyZWQuCisJICogb3RoZXJ3aXNlLCBmYWlsdXJlIG9jY3VycmVkIGFmdGVyIG1mIGFjcXVpcmVkLgogCSAqLwogCWlmIChtZikKIAkJbXB0X2ZyZWVfbXNnX2ZyYW1lKGlvYywgbWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzYXMuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2FzLmMKaW5kZXggZjVhMTRhZi4uNjZmOTQxMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2FzLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzYXMuYwpAQCAtMzA3LDcgKzMwNyw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9jLT5md19ldmVudF9sb2NrLCBmbGFncyk7CiB9CiAKLS8qIGZyZWUgbWVtb3J5IGFzc29pY2F0ZWQgdG8gYSBzYXMgZmlybXdhcmUgZXZlbnQgKi8KKy8qIGZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgdG8gYSBzYXMgZmlybXdhcmUgZXZlbnQgKi8KIHN0YXRpYyB2b2lkCiBtcHRzYXNfZnJlZV9md19ldmVudChNUFRfQURBUFRFUiAqaW9jLCBzdHJ1Y3QgZndfZXZlbnRfd29yayAqZndfZXZlbnQpCiB7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQAogLyoqCiAgKiBtcHRzYXNfdGFyZ2V0X3Jlc2V0X3F1ZXVlCiAgKgotICogUmVjZWl2ZSByZXF1ZXN0IGZvciBUQVJHRVRfUkVTRVQgYWZ0ZXIgcmVjaWV2aW5nIGFuIGZpcm13YXJlCisgKiBSZWNlaXZlIHJlcXVlc3QgZm9yIFRBUkdFVF9SRVNFVCBhZnRlciByZWNlaXZpbmcgYW4gZmlybXdhcmUKICAqIGV2ZW50IE5PVF9SRVNQT05ESU5HX0VWRU5ULCB0aGVuIHB1dCBjb21tYW5kIGluIGxpbmsgbGlzdAogICogYW5kIHF1ZXVlIGlmIHRhc2tfcXVldWUgYWxyZWFkeSBpbiB1c2UuCiAgKgpAQCAtMTQwMyw3ICsxNDAzLDcgQEAKIC8qKgogICoJbXB0c2FzX2FkZF9lbmRfZGV2aWNlIC0gcmVwb3J0IGEgbmV3IGVuZCBkZXZpY2UgdG8gc2FzIHRyYW5zcG9ydCBsYXllcgogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwaHlfaW5mbzogZGVjcmliZXMgYXR0YWNoZWQgZGV2aWNlCisgKglAcGh5X2luZm86IGRlc2NyaWJlcyBhdHRhY2hlZCBkZXZpY2UKICAqCiAgKglyZXR1cm4gKDApIHN1Y2Nlc3MgKDEpIGZhaWx1cmUKICAqCkBAIC0xNDgxLDcgKzE0ODEsNyBAQAogLyoqCiAgKgltcHRzYXNfZGVsX2VuZF9kZXZpY2UgLSByZXBvcnQgYSBkZWxldGVkIGVuZCBkZXZpY2UgdG8gc2FzIHRyYW5zcG9ydCBsYXllcgogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwaHlfaW5mbzogZGVjcmliZXMgYXR0YWNoZWQgZGV2aWNlCisgKglAcGh5X2luZm86IGRlc2NyaWJlcyBhdHRhY2hlZCBkZXZpY2UKICAqCiAgKiovCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9SRUFETUUgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQppbmRleCA5MTFmYzMwLi5mMDcyYThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQorKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQpAQCAtNTMsNyArNTMsNyBAQAogQm94SGlsbCBDb3Jwb3JhdGlvbgogCUxvYW4gb2YgaW5pdGlhbCBGaWJyZUNoYW5uZWwgZGlzayBhcnJheSB1c2VkIGZvciBkZXZlbG9wbWVudCB3b3JrLgogCi1FdXJvcGVhbiBDb21pc3Npb24KK0V1cm9wZWFuIENvbW1pc3Npb24KIAlGdW5kaW5nIHRoZSB3b3JrIGRvbmUgYnkgdGhlIFVuaXZlcnNpdHkgb2YgSGVsc2lua2kKIAogU3lzS29ubmVjdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9kZXZpY2UuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vZGV2aWNlLmMKaW5kZXggMGVlNDI2NC4uNDU0N2RiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9kZXZpY2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2RldmljZS5jCkBAIC02NSw3ICs2NSw3IEBACiAKIAlyYyA9IGkyb19kZXZpY2VfaXNzdWVfY2xhaW0oZGV2LCBJMk9fQ01EX1VUSUxfQ0xBSU0sIEkyT19DTEFJTV9QUklNQVJZKTsKIAlpZiAoIXJjKQotCQlwcl9kZWJ1ZygiaTJvOiBjbGFpbSBvZiBkZXZpY2UgJWQgc3VjY2VkZWRcbiIsCisJCXByX2RlYnVnKCJpMm86IGNsYWltIG9mIGRldmljZSAlZCBzdWNjZWVkZWRcbiIsCiAJCQkgZGV2LT5sY3RfZGF0YS50aWQpOwogCWVsc2UKIAkJcHJfZGVidWcoImkybzogY2xhaW0gb2YgZGV2aWNlICVkIGZhaWxlZCAlZFxuIiwKQEAgLTExMCw3ICsxMTAsNyBAQAogCX0KIAogCWlmICghcmMpCi0JCXByX2RlYnVnKCJpMm86IGNsYWltIHJlbGVhc2Ugb2YgZGV2aWNlICVkIHN1Y2NlZGVkXG4iLAorCQlwcl9kZWJ1ZygiaTJvOiBjbGFpbSByZWxlYXNlIG9mIGRldmljZSAlZCBzdWNjZWVkZWRcbiIsCiAJCQkgZGV2LT5sY3RfZGF0YS50aWQpOwogCWVsc2UKIAkJcHJfZGVidWcoImkybzogY2xhaW0gcmVsZWFzZSBvZiBkZXZpY2UgJWQgZmFpbGVkICVkXG4iLApAQCAtMjQ4LDcgKzI0OCw3IEBACiAJCQlnb3RvIHVucmVnX2RldjsKIAl9CiAKLQkvKiBjcmVhdGUgdXNlciBlbnRyaWVzIHJlZmVyaW5nIHRvIHRoaXMgZGV2aWNlICovCisJLyogY3JlYXRlIHVzZXIgZW50cmllcyByZWZlcnJpbmcgdG8gdGhpcyBkZXZpY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmMtPmRldmljZXMsIGxpc3QpCiAJICAgIGlmICgodG1wLT5sY3RfZGF0YS51c2VyX3RpZCA9PSBpMm9fZGV2LT5sY3RfZGF0YS50aWQpCiAJCSYmICh0bXAgIT0gaTJvX2RldikpIHsKQEAgLTI2Nyw3ICsyNjcsNyBAQAogCQkJZ290byBybWxpbmsxOwogCX0KIAotCS8qIGNyZWF0ZSBwYXJlbnQgZW50cmllcyByZWZlcmluZyB0byB0aGlzIGRldmljZSAqLworCS8qIGNyZWF0ZSBwYXJlbnQgZW50cmllcyByZWZlcnJpbmcgdG8gdGhpcyBkZXZpY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmMtPmRldmljZXMsIGxpc3QpCiAJICAgIGlmICgodG1wLT5sY3RfZGF0YS5wYXJlbnRfdGlkID09IGkyb19kZXYtPmxjdF9kYXRhLnRpZCkKIAkJJiYgKHRtcCAhPSBpMm9fZGV2KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmMKaW5kZXggNDdlYzViYy4uNjQzYWQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19ibG9jay5jCkBAIC02MTAsNyArNjEwLDcgQEAKIAogCS8qCiAJICogVGhpcyBpcyB0byBkZWFpbCB3aXRoIHRoZSBjYXNlIG9mIGFuIGFwcGxpY2F0aW9uCi0JICogb3BlbmluZyBhIGRldmljZSBhbmQgdGhlbiB0aGUgZGV2aWNlIGRpc3NhcGVhcnMgd2hpbGUKKwkgKiBvcGVuaW5nIGEgZGV2aWNlIGFuZCB0aGVuIHRoZSBkZXZpY2UgZGlzYXBwZWFycyB3aGlsZQogCSAqIGl0J3MgaW4gdXNlLCBhbmQgdGhlbiB0aGUgYXBwbGljYXRpb24gdHJpZXMgdG8gcmVsZWFzZQogCSAqIGl0LiAgZXg6IFVubW91bnRpbmcgYSBkZWxldGVkIFJBSUQgdm9sdW1lIGF0IHJlYm9vdC4KIAkgKiBJZiB3ZSBzZW5kIG1lc3NhZ2VzLCBpdCB3aWxsIGp1c3QgY2F1c2UgRkFJTHMgc2luY2UKQEAgLTcxNyw3ICs3MTcsNyBAQAogCiAvKioKICAqCWkyb19ibG9ja190cmFuc2ZlciAtIFRyYW5zZmVyIGEgcmVxdWVzdCB0by9mcm9tIHRoZSBJMk8gY29udHJvbGxlcgotICoJQHJlcTogdGhlIHJlcXVlc3Qgd2hpY2ggc2hvdWxkIGJlIHRyYW5zZmVyZWQKKyAqCUByZXE6IHRoZSByZXF1ZXN0IHdoaWNoIHNob3VsZCBiZSB0cmFuc2ZlcnJlZAogICoKICAqCVRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJlcXVlc3QgaW50byBhIEkyTyBtZXNzYWdlLiBUaGUgbmVjZXNzYXJ5CiAgKglETUEgYnVmZmVycyBhcmUgYWxsb2NhdGVkIGFuZCBhZnRlciBldmVyeXRoaW5nIGlzIHNldHVwIHBvc3QgdGhlIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmggYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19ibG9jay5oCmluZGV4IDY3ZjkyMWIuLmNmODg3M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmgKKysrIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suaApAQCAtNzMsNyArNzMsNyBAQAogCXN0cnVjdCBpMm9fZGV2aWNlICppMm9fZGV2OwkvKiBwb2ludGVyIHRvIEkyTyBkZXZpY2UgKi8KIAlzdHJ1Y3QgZ2VuZGlzayAqZ2Q7CiAJc3BpbmxvY2tfdCBsb2NrOwkvKiBxdWV1ZSBsb2NrICovCi0Jc3RydWN0IGxpc3RfaGVhZCBvcGVuX3F1ZXVlOwkvKiBsaXN0IG9mIHRyYW5zZmVyZWQsIGJ1dCB1bmZpbmlzaGVkCisJc3RydWN0IGxpc3RfaGVhZCBvcGVuX3F1ZXVlOwkvKiBsaXN0IG9mIHRyYW5zZmVycmVkLCBidXQgdW5maW5pc2hlZAogCQkJCQkgICByZXF1ZXN0cyAqLwogCXVuc2lnbmVkIGludCBvcGVuX3F1ZXVlX2RlcHRoOwkvKiBudW1iZXIgb2YgcmVxdWVzdHMgaW4gdGhlIHF1ZXVlICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYwppbmRleCA5N2JkZjgyLi5mMDAzOTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19zY3NpLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fc2NzaS5jCkBAIC0yMDQsNyArMjA0LDcgQEAKICAqCWkyb19zY3NpX3Byb2JlIC0gdmVyaWZ5IGlmIGRldiBpcyBhIEkyTyBTQ1NJIGRldmljZSBhbmQgaW5zdGFsbCBpdAogICoJQGRldjogZGV2aWNlIHRvIHZlcmlmeSBpZiBpdCBpcyBhIEkyTyBTQ1NJIGRldmljZQogICoKLSAqCVJldHJpZXZlIGNoYW5uZWwsIGlkIGFuZCBsdW4gZm9yIEkyTyBkZXZpY2UuIElmIGV2ZXJ0aGluZyBnb2VzIHdlbGwKKyAqCVJldHJpZXZlIGNoYW5uZWwsIGlkIGFuZCBsdW4gZm9yIEkyTyBkZXZpY2UuIElmIGV2ZXJ5dGhpbmcgZ29lcyB3ZWxsCiAgKglyZWdpc3RlciB0aGUgSTJPIGRldmljZSBhcyBTQ1NJIGRldmljZSBvbiB0aGUgSTJPIFNDU0kgY29udHJvbGxlci4KICAqCiAgKglSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwppbmRleCBlMmZlYTU4Li4zZWQzZmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcKQEAgLTIwMSw3ICsyMDEsNyBAQAogCSAgYXMgY2xvY2sgcmVxdWVzdCBoYW5kc2hha2luZy4KIAogCSAgVGhpcyBkcml2ZXIgdXNlcyBib2FyZC1zcGVjaWZpYyBkYXRhIHRvIGluaXRpYWxpemUgdGhlIHJlc291cmNlcwotCSAgYW5kIGxvYWQgc2NyaXB0cyBjb250cm9saW5nIHdoaWNoIHJlc291cmNlcyBhcmUgc3dpdGNoZWQgb2ZmL29uCisJICBhbmQgbG9hZCBzY3JpcHRzIGNvbnRyb2xsaW5nIHdoaWNoIHJlc291cmNlcyBhcmUgc3dpdGNoZWQgb2ZmL29uCiAJICBvciByZXNldCB3aGVuIGEgc2xlZXAsIHdha2V1cCBvciB3YXJtIHJlc2V0IGV2ZW50IG9jY3Vycy4KIAogY29uZmlnIFRXTDQwMzBfQ09ERUMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2FiODUwMC1ncGFkYy5jIGIvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKaW5kZXggYmM5M2IyZS4uNjQyMWFkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKKysrIGIvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogCS8qIHdhaXQgZm9yIGNvbXBsZXRpb24gb2YgY29udmVyc2lvbiAqLwogCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZncGFkYy0+YWI4NTAwX2dwYWRjX2NvbXBsZXRlLCAyKkhaKSkgewogCQlkZXZfZXJyKGdwYWRjLT5kZXYsCi0JCQkidGltZW91dDogZGlkbnQgcmVjaWV2ZSBHUEFEQyBjb252ZXJzaW9uIGludGVycnVwdFxuIik7CisJCQkidGltZW91dDogZGlkbid0IHJlY2VpdmUgR1BBREMgY29udmVyc2lvbiBpbnRlcnJ1cHRcbiIpOwogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9lengtcGNhcC5jIGIvZHJpdmVycy9tZmQvZXp4LXBjYXAuYwppbmRleCBmMmY0MDI5Li40M2E3NmM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9lengtcGNhcC5jCisrKyBiL2RyaXZlcnMvbWZkL2V6eC1wY2FwLmMKQEAgLTE4NSw3ICsxODUsNyBAQAogCQllenhfcGNhcF9yZWFkKHBjYXAsIFBDQVBfUkVHX01TUiwgJm1zcik7CiAJCWV6eF9wY2FwX3JlYWQocGNhcCwgUENBUF9SRUdfSVNSLCAmaXNyKTsKIAotCQkvKiBXZSBjYW50IHNlcnZpY2UvYWNrIGlycXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gcG9ydCAyICovCisJCS8qIFdlIGNhbid0IHNlcnZpY2UvYWNrIGlycXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gcG9ydCAyICovCiAJCWlmICghKHBkYXRhLT5jb25maWcgJiBQQ0FQX1NFQ09ORF9QT1JUKSkgewogCQkJZXp4X3BjYXBfcmVhZChwY2FwLCBQQ0FQX1JFR19JTlRfU0VMLCAmaW50X3NlbCk7CiAJCQlpc3IgJj0gfmludF9zZWw7CkBAIC00NTcsNyArNDU3LDcgQEAKIAlwY2FwLT53b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgicGNhcGQiKTsKIAlpZiAoIXBjYXAtPndvcmtxdWV1ZSkgewogCQlyZXQgPSAtRU5PTUVNOwotCQlkZXZfZXJyKCZzcGktPmRldiwgImNhbnQgY3JlYXRlIHBjYXAgdGhyZWFkXG4iKTsKKwkJZGV2X2Vycigmc3BpLT5kZXYsICJjYW4ndCBjcmVhdGUgcGNhcCB0aHJlYWRcbiIpOwogCQlnb3RvIGZyZWVfcGNhcDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL29tYXAtdXNiLWhvc3QuYyBiL2RyaXZlcnMvbWZkL29tYXAtdXNiLWhvc3QuYwppbmRleCBjYjAxMjA5Li41MzQ1MGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9vbWFwLXVzYi1ob3N0LmMKKysrIGIvZHJpdmVycy9tZmQvb21hcC11c2ItaG9zdC5jCkBAIC0zMzIsNyArMzMyLDcgQEAKIAlpbnQJCQkJaTsKIAogCWlmICghcGRhdGEpIHsKLQkJZGV2X2VycihkZXYsICJNaXNzaW5nIHBsYXRmcm9tIGRhdGFcbiIpOworCQlkZXZfZXJyKGRldiwgIk1pc3NpbmcgcGxhdGZvcm0gZGF0YVxuIik7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gZW5kX3Byb2JlOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYyBiL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYwppbmRleCBjNzY4N2Y2Li41Nzg2ODQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvcGNmNTA2MzMtY29yZS5jCisrKyBiL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYwpAQCAtNTEsNyArNTEsNyBAQAogCiB9CiAKLS8qIFJlYWQgYSBibG9jayBvZiB1cHRvIDMyIHJlZ3MgICovCisvKiBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gMzIgcmVncyAgKi8KIGludCBwY2Y1MDYzM19yZWFkX2Jsb2NrKHN0cnVjdCBwY2Y1MDYzMyAqcGNmLCB1OCByZWcsCiAJCQkJCWludCBucl9yZWdzLCB1OCAqZGF0YSkKIHsKQEAgLTY1LDcgKzY1LDcgQEAKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBjZjUwNjMzX3JlYWRfYmxvY2spOwogCi0vKiBXcml0ZSBhIGJsb2NrIG9mIHVwdG8gMzIgcmVncyAgKi8KKy8qIFdyaXRlIGEgYmxvY2sgb2YgdXAgdG8gMzIgcmVncyAgKi8KIGludCBwY2Y1MDYzM193cml0ZV9ibG9jayhzdHJ1Y3QgcGNmNTA2MzMgKnBjZiAsIHU4IHJlZywKIAkJCQkJaW50IG5yX3JlZ3MsIHU4ICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvdHdsNjAzMC1pcnEuYyBiL2RyaXZlcnMvbWZkL3R3bDYwMzAtaXJxLmMKaW5kZXggZmE5MzcwNS4uZGZiYWUzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdHdsNjAzMC1pcnEuYworKysgYi9kcml2ZXJzL21mZC90d2w2MDMwLWlycS5jCkBAIC0yMjksNyArMjI5LDcgQEAKIAl0d2w2MDMwX2ludGVycnVwdF91bm1hc2soVFdMNjAzMF9NTUNERVRFQ1RfSU5UX01BU0ssCiAJCQkJCQlSRUdfSU5UX01TS19TVFNfQik7CiAJLyoKLQkgKiBJbnRpYWxseSBDb25maWd1cmluZyBNTUNfQ1RSTCBmb3IgcmVjZXZpbmcgaW50ZXJydXB0cyAmCisJICogSW5pdGlhbGx5IENvbmZpZ3VyaW5nIE1NQ19DVFJMIGZvciByZWNlaXZpbmcgaW50ZXJydXB0cyAmCiAJICogQ2FyZCBzdGF0dXMgb24gVFdMNjAzMCBmb3IgTU1DMQogCSAqLwogCXJldCA9IHR3bF9pMmNfcmVhZF91OChUV0w2MDMwX01PRFVMRV9JRDAsICZyZWdfdmFsLCBUV0w2MDMwX01NQ0NUUkwpOwpAQCAtMjc1LDcgKzI3NSw3IEBACiAJCS8qIFRXTDYwMzAgcHJvdmlkZSdzIENhcmQgZGV0ZWN0IHN1cHBvcnQgZm9yCiAJCSAqIG9ubHkgTU1DMSBjb250cm9sbGVyLgogCQkgKi8KLQkJcHJfZXJyKCJVbmtvd24gTU1DIGNvbnRyb2xsZXIgJWQgaW4gJXNcbiIsIHBkZXYtPmlkLCBfX2Z1bmNfXyk7CisJCXByX2VycigiVW5rbm93biBNTUMgY29udHJvbGxlciAlZCBpbiAlc1xuIiwgcGRldi0+aWQsIF9fZnVuY19fKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3VjYjE0MDBfY29yZS5jIGIvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKaW5kZXggZDczZjg0Yi4uZGFmNjk1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKKysrIGIvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKQEAgLTgsNyArOCw3IEBACiAgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCiAgKgogICogU3BsaXRpbmcgZG9uZSBieTogTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqIElmIHNvbWV0aGluZyBkb2VzbnQgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAorICogSWYgc29tZXRoaW5nIGRvZXNuJ3Qgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAogICogZG9udCBib3RoZXIgTmljb2xhcyBwbGVhc2UgOy0pCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9ibXAwODUuYyBiL2RyaXZlcnMvbWlzYy9ibXAwODUuYwppbmRleCBlY2QyNzZhLi41Zjg5OGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvYm1wMDg1LmMKKysrIGIvZHJpdmVycy9taXNjL2JtcDA4NS5jCkBAIC0yLDcgKzIsNyBAQAogCiAgICAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGJtcDA4NSBkaWdpdGFsIGJhcm9tZXRyaWMgcHJlc3N1cmUKICAgICBhbmQgdGVtcGVyYXR1cmUgc2Vuc29yIGZyb20gQm9zY2ggU2Vuc29ydGVjLiBUaGUgZGF0YXNoZWV0Ci0gICAgaXMgYXZhbGlhYmxlIGZyb20gdGhlaXIgd2Vic2l0ZToKKyAgICBpcyBhdmFpbGFibGUgZnJvbSB0aGVpciB3ZWJzaXRlOgogICAgIGh0dHA6Ly93d3cuYm9zY2gtc2Vuc29ydGVjLmNvbS9jb250ZW50L2xhbmd1YWdlMS9kb3dubG9hZHMvQlNULUJNUDA4NS1EUzAwMC0wNS5wZGYKIAogICAgIEEgcHJlc3N1cmUgbWVhc3VyZW1lbnQgaXMgaXNzdWVkIGJ5IHJlYWRpbmcgZnJvbSBwcmVzc3VyZTBfaW5wdXQuCkBAIC00MjksNyArNDI5LDcgQEAKIAlpZiAoZXJyKQogCQlnb3RvIGV4aXRfZnJlZTsKIAotCWRldl9pbmZvKCZkYXRhLT5jbGllbnQtPmRldiwgIlN1Y2Nlc2Z1bGx5IGluaXRpYWxpemVkIGJtcDA4NSFcbiIpOworCWRldl9pbmZvKCZkYXRhLT5jbGllbnQtPmRldiwgIlN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBibXAwODUhXG4iKTsKIAlnb3RvIGV4aXQ7CiAKIGV4aXRfZnJlZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jMnBvcnQvYzJwb3J0LWR1cmFtYXIyMTUwLmMgYi9kcml2ZXJzL21pc2MvYzJwb3J0L2MycG9ydC1kdXJhbWFyMjE1MC5jCmluZGV4IDMzOGRjYzEuLjc3OGZjM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9jMnBvcnQvYzJwb3J0LWR1cmFtYXIyMTUwLmMKKysrIGIvZHJpdmVycy9taXNjL2MycG9ydC9jMnBvcnQtZHVyYW1hcjIxNTAuYwpAQCAtNDEsNyArNDEsNyBAQAogCQlvdXRiKHYgfCAoQzJEIHwgQzJDSyksIERJUl9QT1JUKTsKIAllbHNlCiAJCS8qIFdoZW4gYWNjZXNzIGlzICJvZmYiIGlzIGltcG9ydGFudCB0aGF0IGJvdGggbGluZXMgYXJlIHNldAotCQkgKiBhcyBpbnB1dHMgb3IgaGktaW1wZWRlbmNlICovCisJCSAqIGFzIGlucHV0cyBvciBoaS1pbXBlZGFuY2UgKi8KIAkJb3V0Yih2ICYgfihDMkQgfCBDMkNLKSwgRElSX1BPUlQpOwogCiAJbXV0ZXhfdW5sb2NrKCZ1cGRhdGVfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5oIGIvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuaAppbmRleCA3MmFjZjVhLi4wMGRiZjFkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuaAorKysgYi9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKgogICogQXV0aG9yOiBNYXggQXNi9mNrIDxhbWF4QHVzLmlibS5jb20+CiAgKgotICogT3JpZ25hbGx5IHdyaXR0ZW4gYnkgUGV0ZSBSZXlub2xkcworICogT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBldGUgUmV5bm9sZHMKICAqLwogCiAjaWZuZGVmIF9JQk1BU01fUkVNT1RFX0hfCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaXdtYzMyMDB0b3AvbWFpbi5jIGIvZHJpdmVycy9taXNjL2l3bWMzMjAwdG9wL21haW4uYwppbmRleCA3MjdhZjA3Li5iMWY0NTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvaXdtYzMyMDB0b3AvbWFpbi5jCisrKyBiL2RyaXZlcnMvbWlzYy9pd21jMzIwMHRvcC9tYWluLmMKQEAgLTI2OCw3ICsyNjgsNyBAQAogCQlMT0dfSU5GTyhwcml2LCBJUlEsICJBQ0sgYmFya2VyIGFycml2ZWQgIgogCQkJCSItIHN0YXJ0aW5nIEZXIGRvd25sb2FkXG4iKTsKIAl9IGVsc2UgeyAvKiBSRUJPT1QgYmFya2VyICovCi0JCUxPR19JTkZPKHByaXYsIElSUSwgIlJlY2lldmVkIHJlYm9vdCBiYXJrZXI6ICV4XG4iLCBiYXJrZXIpOworCQlMT0dfSU5GTyhwcml2LCBJUlEsICJSZWNlaXZlZCByZWJvb3QgYmFya2VyOiAleFxuIiwgYmFya2VyKTsKIAkJcHJpdi0+YmFya2VyID0gYmFya2VyOwogCiAJCWlmIChiYXJrZXIgJiBCQVJLRVJfRE5MT0FEX1NZTkNfTVNLKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mva2dkYnRzLmMgYi9kcml2ZXJzL21pc2Mva2dkYnRzLmMKaW5kZXggMjdkYzQ2My4uNzRmMTZmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2tnZGJ0cy5jCisrKyBiL2RyaXZlcnMvbWlzYy9rZ2RidHMuYwpAQCAtNjQ1LDcgKzY0NSw3IEBACiAKIAl3aGlsZSAoKmNoa19zdHIgIT0gJ1wwJyAmJiAqcHV0X3N0ciAhPSAnXDAnKSB7CiAJCS8qIElmIHNvbWVvbmUgZG9lcyBhICogdG8gbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgYWxsb3cKLQkJICogaXQsIG9yIHN0b3AgaWYgdGhlIHJlY2lldmVkIHN0cmluZyBpcyBjb21wbGV0ZS4KKwkJICogaXQsIG9yIHN0b3AgaWYgdGhlIHJlY2VpdmVkIHN0cmluZyBpcyBjb21wbGV0ZS4KIAkJICovCiAJCWlmICgqcHV0X3N0ciA9PSAnIycgfHwgKmNoa19zdHIgPT0gJyonKQogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnVrc2VydmljZXMuYyBiL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydWtzZXJ2aWNlcy5jCmluZGV4IDM0NzQ5ZWUuLjllOWJkZGFhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1a3NlcnZpY2VzLmMKKysrIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1a3NlcnZpY2VzLmMKQEAgLTIyOSw3ICsyMjksNyBAQAogCWJpZCA9IGJsYWRlX2lkIDwgMCA/IHV2X251bWFfYmxhZGVfaWQoKSA6IGJsYWRlX2lkOwogCWJzID0gZ3J1X2Jhc2VbYmlkXTsKIAotCS8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBtaWdyYXRpb24gb2NjdXJlZCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgc2VtYSAqLworCS8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBtaWdyYXRpb24gb2NjdXJyZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHNlbWEgKi8KIAlkb3duX3JlYWQoJmJzLT5ic19rZ3RzX3NlbWEpOwogCWlmIChibGFkZV9pZCA8IDAgJiYgYmlkICE9IHV2X251bWFfYmxhZGVfaWQoKSkgewogCQl1cF9yZWFkKCZicy0+YnNfa2d0c19zZW1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydXRhYmxlcy5oIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmgKaW5kZXggN2E4YjkwNi4uNWMzY2UyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmgKKysrIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmgKQEAgLTM3OSw3ICszNzksNyBAQAogCQkJCQkJICAgcmVxdWlyZWQgZm9yIGNvbnRlc3QgKi8KIAljaGFyCQkJdHNfY2NoX3JlcV9zbGljZTsvKiBDQ0ggcGFja2V0IHNsaWNlICovCiAJY2hhcgkJCXRzX2JsYWRlOwkvKiBJZiA+PSAwLCBtaWdyYXRlIGNvbnRleHQgaWYKLQkJCQkJCSAgIHJlZiBmcm9tIGRpZmVyZW50IGJsYWRlICovCisJCQkJCQkgICByZWYgZnJvbSBkaWZmZXJlbnQgYmxhZGUgKi8KIAljaGFyCQkJdHNfZm9yY2VfY2NoX3JlbG9hZDsKIAljaGFyCQkJdHNfY2JyX2lkeFtHUlVfQ0JSX0FVXTsvKiBDQlIgbnVtYmVycyBvZiBlYWNoCiAJCQkJCQkJICBhbGxvY2F0ZWQgQ0IgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy90aS1zdC9zdF9raW0uYyBiL2RyaXZlcnMvbWlzYy90aS1zdC9zdF9raW0uYwppbmRleCA5ZWU0Yzc4Li5iNDQ4OGM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvdGktc3Qvc3Rfa2ltLmMKKysrIGIvZHJpdmVycy9taXNjL3RpLXN0L3N0X2tpbS5jCkBAIC02NDksNyArNjQ5LDcgQEAKIAkJLyogbXVsdGlwbGUgZGV2aWNlcyBjb3VsZCBleGlzdCAqLwogCQlzdF9raW1fZGV2aWNlc1twZGV2LT5pZF0gPSBwZGV2OwogCX0gZWxzZSB7Ci0JCS8qIHBsYXRmb3JtJ3Mgc3VyZSBhYm91dCBleGlzdGFuY2Ugb2YgMSBkZXZpY2UgKi8KKwkJLyogcGxhdGZvcm0ncyBzdXJlIGFib3V0IGV4aXN0ZW5jZSBvZiAxIGRldmljZSAqLwogCQlzdF9raW1fZGV2aWNlc1swXSA9IHBkZXY7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jYXJkL21tY190ZXN0LmMgYi9kcml2ZXJzL21tYy9jYXJkL21tY190ZXN0LmMKaW5kZXggZjVjZWRlYy4uYWJjMWE2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvY2FyZC9tbWNfdGVzdC5jCisrKyBiL2RyaXZlcnMvbW1jL2NhcmQvbW1jX3Rlc3QuYwpAQCAtMjkyLDcgKzI5Miw3IEBACiB9CiAKIC8qCi0gKiBBbGxvY2F0ZSBhIGxvdCBvZiBtZW1vcnksIHByZWZlcnJhYmx5IG1heF9zeiBidXQgYXQgbGVhc3QgbWluX3N6LiAgSW4gY2FzZQorICogQWxsb2NhdGUgYSBsb3Qgb2YgbWVtb3J5LCBwcmVmZXJhYmx5IG1heF9zeiBidXQgYXQgbGVhc3QgbWluX3N6LiAgSW4gY2FzZQogICogdGhlcmUgaXNuJ3QgbXVjaCBtZW1vcnkgZG8gbm90IGV4Y2VlZCAxLzE2dGggdG90YWwgbG93bWVtIHBhZ2VzLiAgQWxzbyBkbwogICogbm90IGV4Y2VlZCBhIG1heGltdW0gbnVtYmVyIG9mIHNlZ21lbnRzIGFuZCB0cnkgbm90IHRvIG1ha2Ugc2VnbWVudHMgbXVjaAogICogYmlnZ2VyIHRoYW4gbWF4aW11bSBzZWdtZW50IHNpemUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL21tYy5jIGIvZHJpdmVycy9tbWMvY29yZS9tbWMuYwppbmRleCAxNGU5NWYzLi43NzJkMGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL21tYy5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMKQEAgLTUzOCw3ICs1MzgsNyBAQAogCiAJLyoKIAkgKiBJZiBlbmhhbmNlZF9hcmVhX2VuIGlzIFRSVUUsIGhvc3QgbmVlZHMgdG8gZW5hYmxlIEVSQVNFX0dSUF9ERUYKLQkgKiBiaXQuICBUaGlzIGJpdCB3aWxsIGJlIGxvc3QgZXZlcnl0aW1lIGFmdGVyIGEgcmVzZXQgb3IgcG93ZXIgb2ZmLgorCSAqIGJpdC4gIFRoaXMgYml0IHdpbGwgYmUgbG9zdCBldmVyeSB0aW1lIGFmdGVyIGEgcmVzZXQgb3IgcG93ZXIgb2ZmLgogCSAqLwogCWlmIChjYXJkLT5leHRfY3NkLmVuaGFuY2VkX2FyZWFfZW4pIHsKIAkJZXJyID0gbW1jX3N3aXRjaChjYXJkLCBFWFRfQ1NEX0NNRF9TRVRfTk9STUFMLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9tbWNfb3BzLmMgYi9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYwppbmRleCA2MDg0MmY4Li5mM2IyMmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYworKysgYi9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYwpAQCAtMTA1LDcgKzEwNSw3IEBACiAJICogdGhhdCBpbiBjYXNlIG9mIGhhcmR3YXJlIHRoYXQgd29uJ3QgcHVsbCB1cCBEQVQzL25DUyBvdGhlcndpc2UuCiAJICoKIAkgKiBTUEkgaG9zdHMgaWdub3JlIGlvcy5jaGlwX3NlbGVjdDsgaXQncyBtYW5hZ2VkIGFjY29yZGluZyB0bwotCSAqIHJ1bGVzIHRoYXQgbXVzdCBhY2NvbW9kYXRlIG5vbi1NTUMgc2xhdmVzIHdoaWNoIHRoaXMgbGF5ZXIKKwkgKiBydWxlcyB0aGF0IG11c3QgYWNjb21tb2RhdGUgbm9uLU1NQyBzbGF2ZXMgd2hpY2ggdGhpcyBsYXllcgogCSAqIHdvbid0IGV2ZW4ga25vdyBhYm91dC4KIAkgKi8KIAlpZiAoIW1tY19ob3N0X2lzX3NwaShob3N0KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jIGIvZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jCmluZGV4IGJiMTkyZjkuLmIzMDAxNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYworKysgYi9kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAkJCXN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMgPSBjYXJkLT5zZGlvX2Z1bmNbaSAtIDFdOwogCQkJaWYgKCFmdW5jKSB7CiAJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IHBlbmRpbmcgSVJRIGZvciAiCi0JCQkJCSJub24tZXhpc3RhbnQgZnVuY3Rpb25cbiIsCisJCQkJCSJub24tZXhpc3RlbnQgZnVuY3Rpb25cbiIsCiAJCQkJCW1tY19jYXJkX2lkKGNhcmQpKTsKIAkJCQlyZXQgPSAtRUlOVkFMOwogCQkJfSBlbHNlIGlmIChmdW5jLT5pcnFfaGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9hdG1lbC1tY2kuYyBiL2RyaXZlcnMvbW1jL2hvc3QvYXRtZWwtbWNpLmMKaW5kZXggODBiYzlhNS4uZWEzODg4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9hdG1lbC1tY2kuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L2F0bWVsLW1jaS5jCkBAIC0xMjcsNyArMTI3LDcgQEAKICAqIEVWRU5UX0RBVEFfQ09NUExFVEUgaXMgc2V0IGluIEBwZW5kaW5nX2V2ZW50cywgYWxsIGRhdGEtcmVsYXRlZAogICogaW50ZXJydXB0cyBtdXN0IGJlIGRpc2FibGVkIGFuZCBAZGF0YV9zdGF0dXMgdXBkYXRlZCB3aXRoIGEKICAqIHNuYXBzaG90IG9mIFNSLiBTaW1pbGFybHksIGJlZm9yZSBFVkVOVF9DTURfQ09NUExFVEUgaXMgc2V0LCB0aGUKLSAqIENNRFJEWSBpbnRlcnVwdCBtdXN0IGJlIGRpc2FibGVkIGFuZCBAY21kX3N0YXR1cyB1cGRhdGVkIHdpdGggYQorICogQ01EUkRZIGludGVycnVwdCBtdXN0IGJlIGRpc2FibGVkIGFuZCBAY21kX3N0YXR1cyB1cGRhdGVkIHdpdGggYQogICogc25hcHNob3Qgb2YgU1IsIGFuZCBiZWZvcmUgRVZFTlRfWEZFUl9DT01QTEVURSBjYW4gYmUgc2V0LCB0aGUKICAqIGJ5dGVzX3hmZXJlZCBmaWVsZCBvZiBAZGF0YSBtdXN0IGJlIHdyaXR0ZW4uIFRoaXMgaXMgZW5zdXJlZCBieQogICogdXNpbmcgYmFycmllcnMuCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCS8qCiAJICogVXBkYXRlIHRoZSBNTUMgY2xvY2sgcmF0ZSBpZiBuZWNlc3NhcnkuIFRoaXMgbWF5IGJlCiAJICogbmVjZXNzYXJ5IGlmIHNldF9pb3MoKSBpcyBjYWxsZWQgd2hlbiBhIGRpZmZlcmVudCBzbG90IGlzCi0JICogYnVzeSB0cmFuc2ZlcmluZyBkYXRhLgorCSAqIGJ1c3kgdHJhbnNmZXJyaW5nIGRhdGEuCiAJICovCiAJaWYgKGhvc3QtPm5lZWRfY2xvY2tfdXBkYXRlKSB7CiAJCW1jaV93cml0ZWwoaG9zdCwgTVIsIGhvc3QtPm1vZGVfcmVnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvbW1jX3NwaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKaW5kZXggMmY3ZmMwYy4uN2MxZTE2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKQEAgLTk5LDcgKzk5LDcgQEAKICNkZWZpbmUgcjFiX3RpbWVvdXQJCShIWiAqIDMpCiAKIC8qIE9uZSBvZiB0aGUgY3JpdGljYWwgc3BlZWQgcGFyYW1ldGVycyBpcyB0aGUgYW1vdW50IG9mIGRhdGEgd2hpY2ggbWF5Ci0gKiBiZSB0cmFuc2ZlcmVkIGluIG9uZSBjb21tYW5kLiBJZiB0aGlzIHZhbHVlIGlzIHRvbyBsb3csIHRoZSBTRCBjYXJkCisgKiBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgY29tbWFuZC4gSWYgdGhpcyB2YWx1ZSBpcyB0b28gbG93LCB0aGUgU0QgY2FyZAogICogY29udHJvbGxlciBoYXMgdG8gZG8gbXVsdGlwbGUgcGFydGlhbCBibG9jayB3cml0ZXMgKGFyZ2dnaCEpLiBXaXRoCiAgKiB0b2RheSAoMjAwOCkgU0QgY2FyZHMgdGhlcmUgaXMgbGl0dGxlIHNwZWVkIGdhaW4gaWYgd2UgdHJhbnNmZXIgbW9yZQogICogdGhhbiA2NCBLQnl0ZXMgYXQgYSB0aW1lLiBTbyB1c2UgdGhpcyB2YWx1ZSB1bnRpbCB0aGVyZSBpcyBhbnkgaW5kaWNhdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zM2NtY2kuYyBiL2RyaXZlcnMvbW1jL2hvc3QvczNjbWNpLmMKaW5kZXggMWNjZDRiMi4uYTA0Zjg3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9zM2NtY2kuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L3MzY21jaS5jCkBAIC04NzQsNyArODc0LDcgQEAKIAlpZiAoIW1ycS0+ZGF0YSkKIAkJZ290byByZXF1ZXN0X2RvbmU7CiAKLQkvKiBDYWx1bGF0ZSB0aGUgYW1vdXQgb2YgYnl0ZXMgdHJhbnNmZXIgaWYgdGhlcmUgd2FzIG5vIGVycm9yICovCisJLyogQ2FsY3VsYXRlIHRoZSBhbW91dCBvZiBieXRlcyB0cmFuc2ZlciBpZiB0aGVyZSB3YXMgbm8gZXJyb3IgKi8KIAlpZiAobXJxLT5kYXRhLT5lcnJvciA9PSAwKSB7CiAJCW1ycS0+ZGF0YS0+Ynl0ZXNfeGZlcmVkID0KIAkJCShtcnEtPmRhdGEtPmJsb2NrcyAqIG1ycS0+ZGF0YS0+Ymxrc3opOwpAQCAtODgyLDcgKzg4Miw3IEBACiAJCW1ycS0+ZGF0YS0+Ynl0ZXNfeGZlcmVkID0gMDsKIAl9CiAKLQkvKiBJZiB3ZSBoYWQgYW4gZXJyb3Igd2hpbGUgdHJhbnNmZXJpbmcgZGF0YSB3ZSBmbHVzaCB0aGUKKwkvKiBJZiB3ZSBoYWQgYW4gZXJyb3Igd2hpbGUgdHJhbnNmZXJyaW5nIGRhdGEgd2UgZmx1c2ggdGhlCiAJICogRE1BIGNoYW5uZWwgYW5kIHRoZSBmaWZvIHRvIGNsZWFyIG91dCBhbnkgZ2FyYmFnZS4gKi8KIAlpZiAobXJxLT5kYXRhLT5lcnJvciAhPSAwKSB7CiAJCWlmIChzM2NtY2lfaG9zdF91c2VkbWEoaG9zdCkpCkBAIC05ODAsNyArOTgwLDcgQEAKIAogCWlmICgoZGF0YS0+Ymxrc3ogJiAzKSAhPSAwKSB7CiAJCS8qIFdlIGNhbm5vdCBkZWFsIHdpdGggdW5hbGlnbmVkIGJsb2NrcyB3aXRoIG1vcmUgdGhhbgotCQkgKiBvbmUgYmxvY2sgYmVpbmcgdHJhbnNmZXJlZC4gKi8KKwkJICogb25lIGJsb2NrIGJlaW5nIHRyYW5zZmVycmVkLiAqLwogCiAJCWlmIChkYXRhLT5ibG9ja3MgPiAxKSB7CiAJCQlwcl93YXJuaW5nKCIlczogY2FuJ3QgZG8gbm9uLXdvcmQgc2l6ZWQgYmxvY2sgdHJhbnNmZXJzIChibGtzeiAlZClcbiIsIF9fZnVuY19fLCBkYXRhLT5ibGtzeik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3RtaW9fbW1jX3Bpby5jIGIvZHJpdmVycy9tbWMvaG9zdC90bWlvX21tY19waW8uYwppbmRleCA2YWU4ZDJmLi42MmQzN2RlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3RtaW9fbW1jX3Bpby5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvdG1pb19tbWNfcGlvLmMKQEAgLTM1NSw3ICszNTUsNyBAQAogLyoKICAqIFRoaXMgY2hpcCBhbHdheXMgcmV0dXJucyAoYXQgbGVhc3Q/KSBhcyBtdWNoIGRhdGEgYXMgeW91IGFzayBmb3IuCiAgKiBJJ20gdW5zdXJlIHdoYXQgaGFwcGVucyBpZiB5b3UgYXNrIGZvciBsZXNzIHRoYW4gYSBibG9jay4gVGhpcyBzaG91bGQgYmUKLSAqIGxvb2tlZCBpbnRvIHRvIGVuc3VyZSB0aGF0IGEgZnVubnkgbGVuZ3RoIHJlYWQgZG9lc250IGhvc2UgdGhlIGNvbnRyb2xsZXIuCisgKiBsb29rZWQgaW50byB0byBlbnN1cmUgdGhhdCBhIGZ1bm55IGxlbmd0aCByZWFkIGRvZXNuJ3QgaG9zZSB0aGUgY29udHJvbGxlci4KICAqLwogc3RhdGljIHZvaWQgdG1pb19tbWNfcGlvX2lycShzdHJ1Y3QgdG1pb19tbWNfaG9zdCAqaG9zdCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qvd2JzZC5jIGIvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKaW5kZXggN2ZjYTBhMy4uNjJlNWE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKQEAgLTQ4NCw3ICs0ODQsNyBAQAogCiAJLyoKIAkgKiBDaGVjayB0aGF0IHdlIGFyZW4ndCBiZWluZyBjYWxsZWQgYWZ0ZXIgdGhlCi0JICogZW50aXJlIGJ1ZmZlciBoYXMgYmVlbiB0cmFuc2ZlcmVkLgorCSAqIGVudGlyZSBidWZmZXIgaGFzIGJlZW4gdHJhbnNmZXJyZWQuCiAJICovCiAJaWYgKGhvc3QtPm51bV9zZyA9PSAwKQogCQlyZXR1cm47CkBAIC04MjgsNyArODI4LDcgQEAKIAkvKgogCSAqIElmIHRoaXMgaXMgYSBkYXRhIHRyYW5zZmVyIHRoZSByZXF1ZXN0CiAJICogd2lsbCBiZSBmaW5pc2hlZCBhZnRlciB0aGUgZGF0YSBoYXMKLQkgKiB0cmFuc2ZlcmVkLgorCSAqIHRyYW5zZmVycmVkLgogCSAqLwogCWlmIChjbWQtPmRhdGEgJiYgIWNtZC0+ZXJyb3IpIHsKIAkJLyoKQEAgLTkwNCw3ICs5MDQsNyBAQAogCQkJc2V0dXAgJj0gfldCU0RfREFUM19IOwogCiAJCQkvKgotCQkJICogV2UgY2Fubm90IHJlc3VtZSBjYXJkIGRldGVjdGlvbiBpbW1lZGlhdGx5CisJCQkgKiBXZSBjYW5ub3QgcmVzdW1lIGNhcmQgZGV0ZWN0aW9uIGltbWVkaWF0ZWx5CiAJCQkgKiBiZWNhdXNlIG9mIGNhcGFjaXRhbmNlIGFuZCBkZWxheXMgaW4gdGhlIGNoaXAuCiAJCQkgKi8KIAkJCW1vZF90aW1lcigmaG9zdC0+aWdub3JlX3RpbWVyLCBqaWZmaWVzICsgSFogLyAxMDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2hpcHMvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL2NoaXBzL0tjb25maWcKaW5kZXggMzVjNmEyMy4uYjFlM2MyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvS2NvbmZpZworKysgYi9kcml2ZXJzL210ZC9jaGlwcy9LY29uZmlnCkBAIC0xOSw3ICsxOSw3IEBACiAJaGVscAogCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBKRURFQy1zdHlsZSBwcm9iaW5nIG9mIGZsYXNoIGNoaXBzIHdoaWNoIGFyZSBub3QKIAkgIGNvbXBhdGlibGUgd2l0aCB0aGUgQ29tbW9uIEZsYXNoIEludGVyZmFjZSwgYnV0IHdpbGwgdXNlIHRoZSBjb21tb24KLQkgIENGSS10YXJnZXR0ZWQgZmxhc2ggZHJpdmVycyBmb3IgYW55IGNoaXBzIHdoaWNoIGFyZSBpZGVudGlmaWVkIHdoaWNoCisJICBDRkktdGFyZ2V0ZWQgZmxhc2ggZHJpdmVycyBmb3IgYW55IGNoaXBzIHdoaWNoIGFyZSBpZGVudGlmaWVkIHdoaWNoCiAJICBhcmUgaW4gZmFjdCBjb21wYXRpYmxlIGluIGFsbCBidXQgdGhlIHByb2JlIG1ldGhvZC4gVGhpcyBhY3R1YWxseQogCSAgY292ZXJzIG1vc3QgQU1EL0Z1aml0c3UtY29tcGF0aWJsZSBjaGlwcyBhbmQgYWxzbyBub24tQ0ZJCiAJICBJbnRlbCBjaGlwcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMS5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKaW5kZXggMDkyYWVmMS4uMDljYjdjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKQEAgLTEyNDcsMTIgKzEyNDcsMTIgQEAKIAkJCWJyZWFrOwogCiAJCWlmIChjaGlwLT5lcmFzZV9zdXNwZW5kZWQgJiYgY2hpcF9zdGF0ZSA9PSBGTF9FUkFTSU5HKSAgewotCQkJLyogRXJhc2Ugc3VzcGVuZCBvY2N1cmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCisJCQkvKiBFcmFzZSBzdXNwZW5kIG9jY3VycmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCiAJCQl0aW1lbyA9IHJlc2V0X3RpbWVvOwogCQkJY2hpcC0+ZXJhc2Vfc3VzcGVuZGVkID0gMDsKIAkJfQogCQlpZiAoY2hpcC0+d3JpdGVfc3VzcGVuZGVkICYmIGNoaXBfc3RhdGUgPT0gRkxfV1JJVElORykgIHsKLQkJCS8qIFdyaXRlIHN1c3BlbmQgb2NjdXJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLworCQkJLyogV3JpdGUgc3VzcGVuZCBvY2N1cnJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLwogCQkJdGltZW8gPSByZXNldF90aW1lbzsKIAkJCWNoaXAtPndyaXRlX3N1c3BlbmRlZCA9IDA7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMi5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMKaW5kZXggZjlhNTMzMS4uMGI0OTI2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCXN0cnVjdCBjZmlfcHJpdmF0ZSAqY2ZpID0gbWFwLT5mbGRydl9wcml2OwogCiAJLyoKLQkgKiBUaGVzZSBmbGFzaGVzIHJlcG9ydCB0d28gc2VwZXJhdGUgZXJhc2VibG9jayByZWdpb25zIGJhc2VkIG9uIHRoZQorCSAqIFRoZXNlIGZsYXNoZXMgcmVwb3J0IHR3byBzZXBhcmF0ZSBlcmFzZWJsb2NrIHJlZ2lvbnMgYmFzZWQgb24gdGhlCiAJICogc2VjdG9yX2VyYXNlLXNpemUgYW5kIGJsb2NrX2VyYXNlLXNpemUsIGFsdGhvdWdoIHRoZXkgYm90aCBvcGVyYXRlIG9uIHRoZQogCSAqIHNhbWUgbWVtb3J5LiBUaGlzIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byBDRkksIHNvIHdlIGp1c3QgcGljayB0aGUKIAkgKiBzZWN0b3JfZXJhc2Utc2l6ZS4KQEAgLTYxMSw4ICs2MTEsOCBAQAogICoKICAqIE5vdGUgdGhhdCBhbnl0aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gY2hlY2tpbmcgaWYgbm8gYml0cyBhcmUgdG9nZ2xpbmcKICAqIChpbmNsdWRpbmcgY2hlY2tpbmcgRFE1IGZvciBhbiBlcnJvciBzdGF0dXMpIGlzIHRyaWNreSB0byBnZXQgd29ya2luZwotICogY29ycmVjdGx5IGFuZCBpcyB0aGVyZWZvcmUgbm90IGRvbmUJKHBhcnRpY3VsYXJ5IHdpdGggaW50ZXJsZWF2ZWQgY2hpcHMKLSAqIGFzIGVhY2ggY2hpcCBtdXN0IGJlIGNoZWNrZWQgaW5kZXBlbmRhbnRseSBvZiB0aGUgb3RoZXJzKS4KKyAqIGNvcnJlY3RseSBhbmQgaXMgdGhlcmVmb3JlIG5vdCBkb25lCShwYXJ0aWN1bGFybHkgd2l0aCBpbnRlcmxlYXZlZCBjaGlwcworICogYXMgZWFjaCBjaGlwIG11c3QgYmUgY2hlY2tlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMpLgogICovCiBzdGF0aWMgaW50IF9feGlwcmFtIGNoaXBfcmVhZHkoc3RydWN0IG1hcF9pbmZvICptYXAsIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKQEAgLTYzNSw4ICs2MzUsOCBAQAogICoKICAqIE5vdGUgdGhhdCBhbnl0aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gY2hlY2tpbmcgaWYgbm8gYml0cyBhcmUgdG9nZ2xpbmcKICAqIChpbmNsdWRpbmcgY2hlY2tpbmcgRFE1IGZvciBhbiBlcnJvciBzdGF0dXMpIGlzIHRyaWNreSB0byBnZXQgd29ya2luZwotICogY29ycmVjdGx5IGFuZCBpcyB0aGVyZWZvcmUgbm90IGRvbmUJKHBhcnRpY3VsYXJ5IHdpdGggaW50ZXJsZWF2ZWQgY2hpcHMKLSAqIGFzIGVhY2ggY2hpcCBtdXN0IGJlIGNoZWNrZWQgaW5kZXBlbmRhbnRseSBvZiB0aGUgb3RoZXJzKS4KKyAqIGNvcnJlY3RseSBhbmQgaXMgdGhlcmVmb3JlIG5vdCBkb25lCShwYXJ0aWN1bGFybHkgd2l0aCBpbnRlcmxlYXZlZCBjaGlwcworICogYXMgZWFjaCBjaGlwIG11c3QgYmUgY2hlY2tlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMpLgogICoKICAqLwogc3RhdGljIGludCBfX3hpcHJhbSBjaGlwX2dvb2Qoc3RydWN0IG1hcF9pbmZvICptYXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgbWFwX3dvcmQgZXhwZWN0ZWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfdXRpbC5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX3V0aWwuYwppbmRleCA2YWUzZDExLi44ZTQ2NDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfdXRpbC5jCisrKyBiL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV91dGlsLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29tbW9uIEZsYXNoIEludGVyZmFjZSBzdXBwb3J0OgotICogICBHZW5lcmljIHV0aWxpdHkgZnVuY3Rpb25zIG5vdCBkZXBlbmRhbnQgb24gY29tbWFuZCBzZXQKKyAqICAgR2VuZXJpYyB1dGlsaXR5IGZ1bmN0aW9ucyBub3QgZGVwZW5kZW50IG9uIGNvbW1hbmQgc2V0CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAyIFJlZCBIYXQKICAqIENvcHlyaWdodCAoQykgMjAwMyBTVE1pY3JvZWxlY3Ryb25pY3MgTGltaXRlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2hpcHMvamVkZWNfcHJvYmUuYyBiL2RyaXZlcnMvbXRkL2NoaXBzL2plZGVjX3Byb2JlLmMKaW5kZXggNGUxYmU1MS4uZWE4MzJlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvamVkZWNfcHJvYmUuYworKysgYi9kcml2ZXJzL210ZC9jaGlwcy9qZWRlY19wcm9iZS5jCkBAIC0yMDc1LDcgKzIwNzUsNyBAQAogCX0KIAogCS8qCi0JICogTWFrZSBzdXJlIHRoZSBJRCdzIGRpc3NhcHBlYXIgd2hlbiB0aGUgZGV2aWNlIGlzIHRha2VuIG91dCBvZgorCSAqIE1ha2Ugc3VyZSB0aGUgSUQncyBkaXNhcHBlYXIgd2hlbiB0aGUgZGV2aWNlIGlzIHRha2VuIG91dCBvZgogCSAqIElEIG1vZGUuICBUaGUgb25seSB0aW1lIHRoaXMgc2hvdWxkIGZhaWwgd2hlbiBpdCBzaG91bGQgc3VjY2VlZAogCSAqIGlzIHdoZW4gdGhlIElEJ3MgYXJlIHdyaXR0ZW4gYXMgZGF0YSB0byB0aGUgc2FtZQogCSAqIGFkZHJlc3Nlcy4gIEZvciB0aGlzIHJhcmUgYW5kIHVuZm9ydHVuYXRlIGNhc2UgdGhlIGNoaXAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sybXRkLmMgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2Jsb2NrMm10ZC5jCmluZGV4IGYyOWE2ZjkuLjk3MTgzYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sybXRkLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYwpAQCAtMjk1LDcgKzI5NSw3IEBACiAJZGV2LT5tdGQub3duZXIgPSBUSElTX01PRFVMRTsKIAogCWlmIChhZGRfbXRkX2RldmljZSgmZGV2LT5tdGQpKSB7Ci0JCS8qIERldmljZSBkaWRudCBnZXQgYWRkZWQsIHNvIGZyZWUgdGhlIGVudHJ5ICovCisJCS8qIERldmljZSBkaWRuJ3QgZ2V0IGFkZGVkLCBzbyBmcmVlIHRoZSBlbnRyeSAqLwogCQlnb3RvIGRldmluaXRfZXJyOwogCX0KIAlsaXN0X2FkZCgmZGV2LT5saXN0LCAmYmxrbXRkX2RldmljZV9saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jMjAwMXBsdXMuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jMjAwMXBsdXMuYwppbmRleCA3MTliMjkxLi44YjM2ZmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9kZXZpY2VzL2RvYzIwMDFwbHVzLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2MyMDAxcGx1cy5jCkBAIC05MCw3ICs5MCw3IEBACiAJcmV0dXJuIHJldDsKIH0KIAotLyogRm9yIHNvbWUgcmVhc29uIHRoZSBNaWxsZW5uaXVtIFBsdXMgc2VlbXMgdG8gb2NjYXNzaW9uYWxseSBwdXQgaXRzZWxmCisvKiBGb3Igc29tZSByZWFzb24gdGhlIE1pbGxlbm5pdW0gUGx1cyBzZWVtcyB0byBvY2Nhc2lvbmFsbHkgcHV0IGl0c2VsZgogICogaW50byByZXNldCBtb2RlLiBGb3IgbWUgdGhpcyBoYXBwZW5zIHJhbmRvbWx5LCB3aXRoIG5vIHBhdHRlcm4gdGhhdCBJCiAgKiBjYW4gZGV0ZWN0LiBNLXN5c3RlbXMgc3VnZ2VzdCBhbHdheXMgY2hlY2sgdGhpcyBvbiBhbnkgYmxvY2sgbGV2ZWwKICAqIG9wZXJhdGlvbiBhbmQgc2V0dGluZyB0byBub3JtYWwgbW9kZSBpZiBpbiByZXNldCBtb2RlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2NlY2MuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jZWNjLmMKaW5kZXggYTk5ODM4Yi4uMzdlZjI5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2NlY2MuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2RvY2VjYy5jCkBAIC0xMDksNyArMTA5LDcgQEAKICAgIG9mIHRoZSBpbnRlZ2VyICJhbHBoYV90b1tpXSIgd2l0aCBhKDApIGJlaW5nIHRoZSBMU0IgYW5kIGEobS0xKSB0aGUgTVNCLiBUaHVzIGZvcgogICAgZXhhbXBsZSB0aGUgcG9seW5vbWlhbCByZXByZXNlbnRhdGlvbiBvZiBAXjUgd291bGQgYmUgZ2l2ZW4gYnkgdGhlIGJpbmFyeQogICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVnZXIgImFscGhhX3RvWzVdIi4KLSAgICAgICAgICAgICAgICAgICBTaW1pbGFyaWx5LCBpbmRleF9vZltdIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgU2ltaWxhcmx5LCBpbmRleF9vZltdIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6CiAgICAgICAgIEFzIGFib3ZlLCBsZXQgQCByZXByZXNlbnQgdGhlIHByaW1pdGl2ZSBlbGVtZW50IG9mIEdGKDJebSkgdGhhdCBpcwogICAgdGhlIHJvb3Qgb2YgdGhlIHByaW1pdGl2ZSBwb2x5bm9taWFsIHAoeCkuIEluIG9yZGVyIHRvIGZpbmQgdGhlIHBvd2VyCiAgICBvZiBAIChhbHBoYSkgdGhhdCBoYXMgdGhlIHBvbHlub21pYWwgcmVwcmVzZW50YXRpb24KQEAgLTEyMSw3ICsxMjEsNyBAQAogICAgTk9URToKICAgICAgICAgVGhlIGVsZW1lbnQgYWxwaGFfdG9bMl5tLTFdID0gMCBhbHdheXMgc2lnbmlmeWluZyB0aGF0IHRoZQogICAgcmVwcmVzZW50YXRpb24gb2YgIkBeaW5maW5pdHkiID0gMCBpcyAoMCwwLDAsLi4uLDApLgotICAgICAgICBTaW1pbGFyaWx5LCB0aGUgZWxlbWVudCBpbmRleF9vZlswXSA9IEEwIGFsd2F5cyBzaWduaWZ5aW5nCisgICAgICAgIFNpbWlsYXJseSwgdGhlIGVsZW1lbnQgaW5kZXhfb2ZbMF0gPSBBMCBhbHdheXMgc2lnbmlmeWluZwogICAgdGhhdCB0aGUgcG93ZXIgb2YgYWxwaGEgd2hpY2ggaGFzIHRoZSBwb2x5bm9taWFsIHJlcHJlc2VudGF0aW9uCiAgICAoMCwwLC4uLiwwKSBpcyAiaW5maW5pdHkiLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9kZXZpY2VzL2xhcnQuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jCmluZGV4IGNhZjYwNDEuLjRiODI5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jCisrKyBiL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jCkBAIC0zNTMsNyArMzUzLDcgQEAKICAgIC8qIHB1dCB0aGUgZmxhc2ggYmFjayBpbnRvIGNvbW1hbmQgbW9kZSAqLwogICAgd3JpdGUzMiAoREFUQV9UT19GTEFTSCAoUkVBRF9BUlJBWSksb2Zmc2V0KTsKIAotICAgLyogd2FzIHRoZSBlcmFzZSBzdWNjZXNzZnVsbD8gKi8KKyAgIC8qIHdhcyB0aGUgZXJhc2Ugc3VjY2Vzc2Z1bD8gKi8KICAgIGlmICgoc3RhdHVzICYgU1RBVFVTX0VSQVNFX0VSUikpCiAJIHsKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIiVzOiBlcmFzZSBlcnJvciBhdCBhZGRyZXNzIDB4JS44eC5cbiIsbW9kdWxlX25hbWUsb2Zmc2V0KTsKQEAgLTUwOCw3ICs1MDgsNyBAQAogICAgLyogcHV0IHRoZSBmbGFzaCBiYWNrIGludG8gY29tbWFuZCBtb2RlICovCiAgICB3cml0ZTMyIChEQVRBX1RPX0ZMQVNIIChSRUFEX0FSUkFZKSxvZmZzZXQpOwogCi0gICAvKiB3YXMgdGhlIHdyaXRlIHN1Y2Nlc3NmdWxsPyAqLworICAgLyogd2FzIHRoZSB3cml0ZSBzdWNjZXNzZnVsPyAqLwogICAgaWYgKChzdGF0dXMgJiBTVEFUVVNfUEdNX0VSUikgfHwgcmVhZDMyIChvZmZzZXQpICE9IHgpCiAJIHsKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIiVzOiB3cml0ZSBlcnJvciBhdCBhZGRyZXNzIDB4JS44eC5cbiIsbW9kdWxlX25hbWUsb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvcG1jNTUxLmMgYi9kcml2ZXJzL210ZC9kZXZpY2VzL3BtYzU1MS5jCmluZGV4IGVmMGFiYTAuLjQxYjhjZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvcG1jNTUxLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9wbWM1NTEuYwpAQCAtMzUxLDcgKzM1MSw3IEBACiAgKiBGaXh1cCByb3V0aW5lcyBmb3IgdGhlIFYzNzBQREMKICAqIFBDSSBkZXZpY2UgSUQgMHgwMjAwMTFiMAogICoKLSAqIFRoaXMgZnVuY3Rpb24gYmFzaWNseSBraWNrIHN0YXJ0cyB0aGUgRFJBTSBvYm9hcmQgdGhlIGNhcmQgYW5kIGdldHMgaXQKKyAqIFRoaXMgZnVuY3Rpb24gYmFzaWNhbGx5IGtpY2sgc3RhcnRzIHRoZSBEUkFNIG9ib2FyZCB0aGUgY2FyZCBhbmQgZ2V0cyBpdAogICogcmVhZHkgdG8gYmUgdXNlZC4gIEJlZm9yZSB0aGlzIGlzIGRvbmUgdGhlIGRldmljZSByZWFkcyBWRVJZIGVycmF0aWMsIHNvCiAgKiBtdWNoIHRoYXQgaXQgY2FuIGNyYXNoIHRoZSBMaW51eCAyLjIueCBzZXJpZXMga2VybmVscyB3aGVuIGEgdXNlciBjYXQncwogICogL3Byb2MvcGNpIC4uIHRob3VnaCB0aGF0IGlzIG1haW5seSBhIGtlcm5lbCBidWcgaW4gaGFuZGxpbmcgdGhlIFBDSSBERVZTRUwKQEAgLTU0MCw3ICs1NDAsNyBAQAogCiAJLyoKIAkgKiBDaGVjayB0byBtYWtlIGNlcnRhaW4gdGhlIERFVlNFTCBpcyBzZXQgY29ycmVjdGx5LCB0aGlzIGRldmljZQotCSAqIGhhcyBhIHRlbmRhbmN5IHRvIGFzc2VydCBERVZTRUwgYW5kIFRSRFkgd2hlbiBhIHdyaXRlIGlzIHBlcmZvcm1lZAorCSAqIGhhcyBhIHRlbmRlbmN5IHRvIGFzc2VydCBERVZTRUwgYW5kIFRSRFkgd2hlbiBhIHdyaXRlIGlzIHBlcmZvcm1lZAogCSAqIHRvIHRoZSBtZW1vcnkgd2hlbiBtZW1vcnkgaXMgcmVhZC1vbmx5CiAJICovCiAJaWYgKChjbWQgJiBQQ0lfU1RBVFVTX0RFVlNFTF9NQVNLKSAhPSAweDApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2xwZGRyL2xwZGRyX2NtZHMuYyBiL2RyaXZlcnMvbXRkL2xwZGRyL2xwZGRyX2NtZHMuYwppbmRleCAwNGZkZmNjLi4xMjY3OTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9scGRkci9scGRkcl9jbWRzLmMKKysrIGIvZHJpdmVycy9tdGQvbHBkZHIvbHBkZHJfY21kcy5jCkBAIC0zLDcgKzMsNyBAQAogICogZXJhc2UsIGxvY2svdW5sb2NrIHN1cHBvcnQgZm9yIExQRERSIGZsYXNoIG1lbW9yaWVzCiAgKiAoQykgMjAwOCBLb3JvbGV2IEFsZXhleSA8YWtvcm9sZXZAaW5mcmFkZWFkLm9yZz4KICAqIChDKSAyMDA4IFZhc2lsaXkgTGVvbmVua28gPHZhc2lsaXkubGVvbmVua29AZ21haWwuY29tPgotICogTWFueSB0aGFua3MgdG8gUm9tYW4gQm9yaXNvdiBmb3IgaW50aWFsIGVuYWJsaW5nCisgKiBNYW55IHRoYW5rcyB0byBSb21hbiBCb3Jpc292IGZvciBpbml0aWFsIGVuYWJsaW5nCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKQEAgLTE3MSw3ICsxNzEsNyBAQAogCQkJbXV0ZXhfbG9jaygmY2hpcC0+bXV0ZXgpOwogCQl9CiAJCWlmIChjaGlwLT5lcmFzZV9zdXNwZW5kZWQgfHwgY2hpcC0+d3JpdGVfc3VzcGVuZGVkKSAgewotCQkJLyogU3VzcGVuZCBoYXMgb2NjdXJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLworCQkJLyogU3VzcGVuZCBoYXMgb2NjdXJyZWQgd2hpbGUgc2xlZXA6IHJlc2V0IHRpbWVvdXQgKi8KIAkJCXRpbWVvID0gcmVzZXRfdGltZW87CiAJCQljaGlwLT5lcmFzZV9zdXNwZW5kZWQgPSBjaGlwLT53cml0ZV9zdXNwZW5kZWQgPSAwOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL2NlaXZhLmMgYi9kcml2ZXJzL210ZC9tYXBzL2NlaXZhLmMKaW5kZXggZTVmNjQ1Yi4uMjNmNTUxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy9jZWl2YS5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvY2VpdmEuYwpAQCAtNDIsNyArNDIsNyBAQAogICoKICAqIFBsZWFzZSBub3RlOgogICogIDEuIFRoZSBmbGFzaCBzaXplIGdpdmVuIHNob3VsZCBiZSB0aGUgbGFyZ2VzdCBmbGFzaCBzaXplIHRoYXQgY2FuCi0gKiAgICAgYmUgYWNjb21vZGF0ZWQuCisgKiAgICAgYmUgYWNjb21tb2RhdGVkLgogICoKICAqICAyLiBUaGUgYnVzIHdpZHRoIG11c3QgZGVmaW5lZCBpbiBjbHBzX3NldHVwX2ZsYXNoLgogICoKQEAgLTU4LDcgKzU4LDcgQEAKICNkZWZpbmUgQk9PVF9QQVJUSVRJT05fU0laRV9LaUIgICAgICAgKDE2KQogI2RlZmluZSBQQVJBTVNfUEFSVElUSU9OX1NJWkVfS2lCICAgICAoOCkKICNkZWZpbmUgS0VSTkVMX1BBUlRJVElPTl9TSVpFX0tpQiAgICAgKDQqMTI4KQotLyogVXNlIGJvdGggcmVtYWluZyBwb3J0aW9uIG9mIGZpcnN0IGZsYXNoLCBhbmQgYWxsIG9mIHNlY29uZCBmbGFzaCAqLworLyogVXNlIGJvdGggcmVtYWluaW5nIHBvcnRpb24gb2YgZmlyc3QgZmxhc2gsIGFuZCBhbGwgb2Ygc2Vjb25kIGZsYXNoICovCiAjZGVmaW5lIFJPT1RfUEFSVElUSU9OX1NJWkVfS2lCICAgICAgICgzKjEyOCkgKyAoOCoxMjgpCiAKIHN0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBjZWl2YV9wYXJ0aXRpb25zW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL2NmaV9mbGFnYWRtLmMgYi9kcml2ZXJzL210ZC9tYXBzL2NmaV9mbGFnYWRtLmMKaW5kZXggYjRlZDgxNi4uZjcxMzQzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy9jZmlfZmxhZ2FkbS5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvY2ZpX2ZsYWdhZG0uYwpAQCAtMzMsNyArMzMsNyBAQAogCiAKIC8qIFdlIHNwbGl0IHRoZSBmbGFzaCBjaGlwIHVwIGludG8gZm91ciBwYXJ0cy4KLSAqIDE6IGJvb3Rsb2FkZXIgZmlydHMgMTI4awkJCSgweDAwMDAwMDAwIC0gMHgwMDAxRkZGRikgc2l6ZSAweDAyMDAwMAorICogMTogYm9vdGxvYWRlciBmaXJzdCAxMjhrCQkJKDB4MDAwMDAwMDAgLSAweDAwMDFGRkZGKSBzaXplIDB4MDIwMDAwCiAgKiAyOiBrZXJuZWwgNjQwawkJCQkJKDB4MDAwMjAwMDAgLSAweDAwMEJGRkZGKSBzaXplIDB4MEEwMDAwCiAgKiAzOiBjb21wcmVzc2VkIDE1MzZrIHJvb3QgcmFtZGlzawkoMHgwMDBDMDAwMCAtIDB4MDAyM0ZGRkYpIHNpemUgMHgxODAwMDAKICAqIDQ6IHdyaXRlYWJsZSBkaXNrcGFydGl0aW9uIChqZmZzKSgweDAwMjQwMDAwIC0gMHgwMDNGRkZGRikgc2l6ZSAweDFDMDAwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbWFwcy9wY21jaWFtdGQuYyBiL2RyaXZlcnMvbXRkL21hcHMvcGNtY2lhbXRkLmMKaW5kZXggOTE3MDIyOS4uNjc5OWU3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy9wY21jaWFtdGQuYworKysgYi9kcml2ZXJzL210ZC9tYXBzL3BjbWNpYW10ZC5jCkBAIC00OTcsNyArNDk3LDcgQEAKIAkJZGV2LT5wY21jaWFfbWFwLnNldF92cHAgPSBwY21jaWFtdGRfc2V0X3ZwcDsKIAogCS8qIFJlcXVlc3QgYSBtZW1vcnkgd2luZG93IGZvciBQQ01DSUEuIFNvbWUgYXJjaGl0ZXVyZXMgY2FuIG1hcCB3aW5kb3dzCi0JICogdXB0byB0aGUgbWF4aW11bSB0aGF0IFBDTUNJQSBjYW4gc3VwcG9ydCAoNjRNaUIpIC0gdGhpcyBpcyBpZGVhbCBhbmQKKwkgKiB1cCB0byB0aGUgbWF4aW11bSB0aGF0IFBDTUNJQSBjYW4gc3VwcG9ydCAoNjRNaUIpIC0gdGhpcyBpcyBpZGVhbCBhbmQKIAkgKiB3ZSBhaW0gZm9yIGEgd2luZG93IHRoZSBzaXplIG9mIHRoZSB3aG9sZSBjYXJkIC0gb3RoZXJ3aXNlIHdlIHRyeQogCSAqIHNtYWxsZXIgd2luZG93cyB1bnRpbCB3ZSBzdWNjZWVkCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jIGIvZHJpdmVycy9tdGQvbWFwcy9wbWNtc3AtZmxhc2guYwppbmRleCBhY2IxM2ZhLi42NGFlYTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMKQEAgLTMsNyArMyw3IEBACiAgKiBDb25maWcgd2l0aCBib3RoIENGSSBhbmQgSkVERUMgZGV2aWNlIHN1cHBvcnQuCiAgKgogICogQmFzaWNhbGx5IHBoeXNtYXAuYyB3aXRoIHRoZSBhZGRpdGlvbiBvZiBwYXJ0aXRpb25zIGFuZAotICogYW4gYXJyYXkgb2YgbWFwcGluZyBpbmZvIHRvIGFjY29tb2RhdGUgbW9yZSB0aGFuIG9uZSBmbGFzaCB0eXBlIHBlciBib2FyZC4KKyAqIGFuIGFycmF5IG9mIG1hcHBpbmcgaW5mbyB0byBhY2NvbW1vZGF0ZSBtb3JlIHRoYW4gb25lIGZsYXNoIHR5cGUgcGVyIGJvYXJkLgogICoKICAqIENvcHlyaWdodCAyMDA1LTIwMDcgUE1DLVNpZXJyYSwgSW5jLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvc2M1MjBjZHAuYyBiL2RyaXZlcnMvbXRkL21hcHMvc2M1MjBjZHAuYwppbmRleCA4NWMxZTU2Li40ZDhhYWFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL3NjNTIwY2RwLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9zYzUyMGNkcC5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIAl9CiAKIAkvKgotCSoqIEZpbmQgdGhlIFBBUnh4IHJlZ2lzdGVycyB0aGF0IGFyZSByZXBvbnNpYmxlIGZvciBhY3RpdmF0aW5nCisJKiogRmluZCB0aGUgUEFSeHggcmVnaXN0ZXJzIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciBhY3RpdmF0aW5nCiAJKiogUk9NQ1MwLCBST01DUzEgYW5kIEJPT1RDUy4gUmVwcm9ncmFtIGVhY2ggb2YgdGhlc2Ugd2l0aCBhCiAJKiogbmV3IHZhbHVlIGZyb20gdGhlIHRhYmxlLgogCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3RxbTh4eGwuYyBiL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jCmluZGV4IGMwOGUxNDAuLjA3MThkZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jCkBAIC02Myw3ICs2Myw3IEBACiAgKi8KIAogI2lmZGVmIENPTkZJR19NVERfUEFSVElUSU9OUwotLyogQ3VycmVudGx5LCBUUU04eHhMIGhhcyB1cHRvIDhNaUIgZmxhc2ggKi8KKy8qIEN1cnJlbnRseSwgVFFNOHh4TCBoYXMgdXAgdG8gOE1pQiBmbGFzaCAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgdHFtOHh4bF9tYXhfZmxhc2hfc2l6ZSA9IDB4MDA4MDAwMDA7CiAKIC8qIHBhcnRpdGlvbiBkZWZpbml0aW9uIGZvciBmaXJzdCBmbGFzaCBiYW5rCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRibG9jay5jIGIvZHJpdmVycy9tdGQvbXRkYmxvY2suYwppbmRleCAxZTc0YWQ5Li4zMzI2NjE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tdGRibG9jay5jCisrKyBiL2RyaXZlcnMvbXRkL210ZGJsb2NrLmMKQEAgLTEyOSw3ICsxMjksNyBAQAogCQlyZXR1cm4gcmV0OwogCiAJLyoKLQkgKiBIZXJlIHdlIGNvdWxkIGFyZ3VibHkgc2V0IHRoZSBjYWNoZSBzdGF0ZSB0byBTVEFURV9DTEVBTi4KKwkgKiBIZXJlIHdlIGNvdWxkIGFyZ3VhYmx5IHNldCB0aGUgY2FjaGUgc3RhdGUgdG8gU1RBVEVfQ0xFQU4uCiAJICogSG93ZXZlciB0aGlzIGNvdWxkIGxlYWQgdG8gaW5jb25zaXN0ZW5jeSBzaW5jZSB3ZSB3aWxsIG5vdAogCSAqIGJlIG5vdGlmaWVkIGlmIHRoaXMgY29udGVudCBpcyBhbHRlcmVkIG9uIHRoZSBmbGFzaCBieSBvdGhlcgogCSAqIG1lYW5zLiAgTGV0J3MgZGVjbGFyZSBpdCBlbXB0eSBhbmQgbGVhdmUgYnVmZmVyaW5nIHRhc2tzIHRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRjaGFyLmMgYi9kcml2ZXJzL210ZC9tdGRjaGFyLmMKaW5kZXggMTQ1YjNkMGQuLjRjMzZlZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZGNoYXIuYworKysgYi9kcml2ZXJzL210ZC9tdGRjaGFyLmMKQEAgLTIzNCw3ICsyMzQsNyBAQAogCQkgKiB0aGUgZGF0YS4gRm9yIG91ciB1c2Vyc3BhY2UgdG9vbHMgaXQgaXMgaW1wb3J0YW50CiAJCSAqIHRvIGR1bXAgYXJlYXMgd2l0aCBlY2MgZXJyb3JzICEKIAkJICogRm9yIGtlcm5lbCBpbnRlcm5hbCB1c2FnZSBpdCBhbHNvIG1pZ2h0IHJldHVybiAtRVVDTEVBTgotCQkgKiB0byBzaWduYWwgdGhlIGNhbGxlciB0aGF0IGEgYml0ZmxpcCBoYXMgb2NjdXJlZCBhbmQgaGFzCisJCSAqIHRvIHNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgYSBiaXRmbGlwIGhhcyBvY2N1cnJlZCBhbmQgaGFzCiAJCSAqIGJlZW4gY29ycmVjdGVkIGJ5IHRoZSBFQ0MgYWxnb3JpdGhtLgogCQkgKiBVc2Vyc3BhY2Ugc29mdHdhcmUgd2hpY2ggYWNjZXNzZXMgTkFORCB0aGlzIHdheQogCQkgKiBtdXN0IGJlIGF3YXJlIG9mIHRoZSBmYWN0IHRoYXQgaXQgZGVhbHMgd2l0aCBOQU5ECmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL0tjb25maWcgYi9kcml2ZXJzL210ZC9uYW5kL0tjb25maWcKaW5kZXggYTkyMDU0ZS4uZWRlYzQ1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZwpAQCAtMjM5LDcgKzIzOSw3IEBACiAJaGVscAogCSAgVGhpcyBlbmFibGVzIHRoZSBOQU5EIGZsYXNoIGNvbnRyb2xsZXIgb24gdGhlIEJDTSBVTUkgYmxvY2suCiAKLQkgIE5vIGJvYXJkIHNwZWNmaWMgc3VwcG9ydCBpcyBkb25lIGJ5IHRoaXMgZHJpdmVyLCBlYWNoIGJvYXJkCisJICBObyBib2FyZCBzcGVjaWZpYyBzdXBwb3J0IGlzIGRvbmUgYnkgdGhpcyBkcml2ZXIsIGVhY2ggYm9hcmQKIAkgIG11c3QgYWR2ZXJ0aXNlIGEgcGxhdGZvcm1fZGV2aWNlIGZvciB0aGUgZHJpdmVyIHRvIGF0dGFjaC4KIAogY29uZmlnIE1URF9OQU5EX0JDTV9VTUlfSFdDUwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9hbXMtZGVsdGEuYyBiL2RyaXZlcnMvbXRkL25hbmQvYW1zLWRlbHRhLmMKaW5kZXggYTA2N2QwOS4uYmM2NWJmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9hbXMtZGVsdGEuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2Ftcy1kZWx0YS5jCkBAIC0yMjgsNyArMjI4LDcgQEAKIAkJCQkJICBBTVNfREVMVEFfTEFUQ0gyX05BTkRfTkNFIHwKIAkJCQkJICBBTVNfREVMVEFfTEFUQ0gyX05BTkRfTldQKTsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4oYW1zX2RlbHRhX210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9tdGQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2F1dGNwdTEyLmMgYi9kcml2ZXJzL210ZC9uYW5kL2F1dGNwdTEyLmMKaW5kZXggN2M5NWRhMS4uMDkxMWNmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9hdXRjcHUxMi5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvYXV0Y3B1MTIuYwpAQCAtMTc2LDcgKzE3Niw3IEBACiAJICovCiAJdGhpcy0+b3B0aW9ucyA9IE5BTkRfVVNFX0ZMQVNIX0JCVDsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4oYXV0Y3B1MTJfbXRkLCAxKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0X2lvcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvY3M1NTN4X25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvY3M1NTN4X25hbmQuYwppbmRleCA5ZjFiNDUxLi43MWMzNWEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2NzNTUzeF9uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9jczU1M3hfbmFuZC5jCkBAIC0yNDEsNyArMjQxLDcgQEAKIAkvKiBFbmFibGUgdGhlIGZvbGxvd2luZyBmb3IgYSBmbGFzaCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgKi8KIAl0aGlzLT5vcHRpb25zID0gTkFORF9VU0VfRkxBU0hfQkJUIHwgTkFORF9OT19BVVRPSU5DUjsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4obmV3X210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9pb3I7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2RlbmFsaS5jIGIvZHJpdmVycy9tdGQvbmFuZC9kZW5hbGkuYwppbmRleCA4YzhkM2M4Li40NjMzZjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2RlbmFsaS5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvZGVuYWxpLmMKQEAgLTcyNCw3ICs3MjQsNyBAQAogfQogCiAvKiBUaGlzIGhlbHBlciBmdW5jdGlvbiBzZXR1cHMgdGhlIHJlZ2lzdGVycyBmb3IgRUNDIGFuZCB3aGV0aGVyIG9yIG5vdAotICogdGhlIHNwYXJlIGFyZWEgd2lsbCBiZSB0cmFuc2ZlcmVkLiAqLworICogdGhlIHNwYXJlIGFyZWEgd2lsbCBiZSB0cmFuc2ZlcnJlZC4gKi8KIHN0YXRpYyB2b2lkIHNldHVwX2VjY19mb3JfeGZlcihzdHJ1Y3QgZGVuYWxpX25hbmRfaW5mbyAqZGVuYWxpLCBib29sIGVjY19lbiwKIAkJCQlib29sIHRyYW5zZmVyX3NwYXJlKQogewpAQCAtOTY1LDcgKzk2NSw3IEBACiAKIAkJCWlmIChFQ0NfRVJST1JfQ09SUkVDVEFCTEUoZXJyX2NvcnJlY3Rpb25faW5mbykpIHsKIAkJCQkvKiBJZiBlcnJfYnl0ZSBpcyBsYXJnZXIgdGhhbiBFQ0NfU0VDVE9SX1NJWkUsCi0JCQkJICogbWVhbnMgZXJyb3IgaGFwcGVuZCBpbiBPT0IsIHNvIHdlIGlnbm9yZQorCQkJCSAqIG1lYW5zIGVycm9yIGhhcHBlbmVkIGluIE9PQiwgc28gd2UgaWdub3JlCiAJCQkJICogaXQuIEl0J3Mgbm8gbmVlZCBmb3IgdXMgdG8gY29ycmVjdCBpdAogCQkJCSAqIGVycl9kZXZpY2UgaXMgcmVwcmVzZW50ZWQgdGhlIE5BTkQgZXJyb3IKIAkJCQkgKiBiaXRzIGFyZSBoYXBwZW5lZCBpbiBpZiB0aGVyZSBhcmUgbW9yZQpAQCAtMTEwOSw3ICsxMTA5LDcgQEAKIH0KIAogLyogVGhpcyBpcyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgTkFORCBjb3JlIGNhbGxzIHRvIHdyaXRlIGEgcGFnZSB3aXRob3V0IEVDQy4KLSAqIHJhdyBhY2Nlc3MgaXMgc2ltaWxpYXIgdG8gRUNDIHBhZ2Ugd3JpdGVzLCBzbyBhbGwgdGhlIHdvcmsgaXMgZG9uZSBpbiB0aGUKKyAqIHJhdyBhY2Nlc3MgaXMgc2ltaWxhciB0byBFQ0MgcGFnZSB3cml0ZXMsIHNvIGFsbCB0aGUgd29yayBpcyBkb25lIGluIHRoZQogICogd3JpdGVfcGFnZSgpIGZ1bmN0aW9uIGFib3ZlLgogICovCiBzdGF0aWMgdm9pZCBkZW5hbGlfd3JpdGVfcGFnZV9yYXcoc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2Rpc2tvbmNoaXAuYyBiL2RyaXZlcnMvbXRkL25hbmQvZGlza29uY2hpcC5jCmluZGV4IGI3ZjhkZTcuLjk2YzBiMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvZGlza29uY2hpcC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvZGlza29uY2hpcC5jCkBAIC0xMzcsNyArMTM3LDcgQEAKICAqCiAgKiBGYWJyaWNlIEJlbGxhcmQgZmlndXJlZCB0aGlzIG91dCBpbiB0aGUgb2xkIGRvY2VjYyBjb2RlLiBJIGFkZGVkCiAgKiBzb21lIGNvbW1lbnRzLCBpbXByb3ZlZCBhIG1pbm9yIGJpdCBhbmQgY29udmVydGVkIGl0IHRvIG1ha2UgdXNlCi0gKiBvZiB0aGUgZ2VuZXJpYyBSZWVkLVNvbG9tb24gbGliYXJ5LiB0Z2x4CisgKiBvZiB0aGUgZ2VuZXJpYyBSZWVkLVNvbG9tb24gbGlicmFyeS4gdGdseAogICovCiBzdGF0aWMgaW50IGRvY19lY2NfZGVjb2RlKHN0cnVjdCByc19jb250cm9sICpycywgdWludDhfdCAqZGF0YSwgdWludDhfdCAqZWNjKQogewpAQCAtNDAwLDcgKzQwMCw3IEBACiAJZG9jMjAweF9od2NvbnRyb2wobXRkLCAwLCBOQU5EX0NUUkxfQUxFIHwgTkFORF9DVFJMX0NIQU5HRSk7CiAJZG9jMjAweF9od2NvbnRyb2wobXRkLCBOQU5EX0NNRF9OT05FLCBOQU5EX05DRSB8IE5BTkRfQ1RSTF9DSEFOR0UpOwogCi0JLyogV2UgY2FudCcgdXNlIGRldl9yZWFkeSBoZXJlLCBidXQgYXQgbGVhc3Qgd2Ugd2FpdCBmb3IgdGhlCisJLyogV2UgY2FuJ3QnIHVzZSBkZXZfcmVhZHkgaGVyZSwgYnV0IGF0IGxlYXN0IHdlIHdhaXQgZm9yIHRoZQogCSAqIGNvbW1hbmQgdG8gY29tcGxldGUKIAkgKi8KIAl1ZGVsYXkoNTApOwpAQCAtOTg2LDcgKzk4Niw3IEBACiAJCWR1bW15ID0gUmVhZERPQyhkb2NwdHIsIEVDQ0NvbmYpOwogCX0KIAotCS8qIEVycm9yIG9jY3VyZWQgPyAqLworCS8qIEVycm9yIG9jY3VycmVkID8gKi8KIAlpZiAoZHVtbXkgJiAweDgwKSB7CiAJCWZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsKIAkJCWlmIChEb0NfaXNfTWlsbGVubml1bVBsdXMoZG9jKSkKQEAgLTExNjAsNyArMTE2MCw3IEBACiAJLyogTk9URTogVGhlIGxpbmVzIGJlbG93IG1vZGlmeSBpbnRlcm5hbCB2YXJpYWJsZXMgb2YgdGhlIE5BTkQgYW5kIE1URAogCSAgIGxheWVyczsgdmFyaWFibGVzIHdpdGggaGF2ZSBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCBieSBuYW5kX3NjYW4uCiAJICAgVW5mb3J0dW5hdGVseSwgd2UgZGlkbid0IGtub3cgYmVmb3JlIHRoaXMgcG9pbnQgd2hhdCB0aGVzZSB2YWx1ZXMKLQkgICBzaG91bGQgYmUuICBUaHVzLCB0aGlzIGNvZGUgaXMgc29tZXdoYXQgZGVwZW5kYW50IG9uIHRoZSBleGFjdAorCSAgIHNob3VsZCBiZS4gIFRodXMsIHRoaXMgY29kZSBpcyBzb21ld2hhdCBkZXBlbmRlbnQgb24gdGhlIGV4YWN0CiAJICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIE5BTkQgbGF5ZXIuICAqLwogCWlmIChtaC0+VW5pdFNpemVGYWN0b3IgIT0gMHhmZikgewogCQl0aGlzLT5iYnRfZXJhc2Vfc2hpZnQgKz0gKDB4ZmYgLSBtaC0+VW5pdFNpemVGYWN0b3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9mc2xfZWxiY19uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYwppbmRleCA3YTEzZDQyLi41MzdlMzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYwpAQCAtNTksNyArNTksNyBAQAogCXVuc2lnbmVkIGludCBmbXI7ICAgICAgIC8qIEZDTSBGbGFzaCBNb2RlIFJlZ2lzdGVyIHZhbHVlICAgICAqLwogfTsKIAotLyogRnJlZXNjYWxlIGVMQkMgRkNNIGNvbnRyb2xsZXIgaW5mb21hdGlvbiAqLworLyogRnJlZXNjYWxlIGVMQkMgRkNNIGNvbnRyb2xsZXIgaW5mb3JtYXRpb24gKi8KIAogc3RydWN0IGZzbF9lbGJjX2ZjbV9jdHJsIHsKIAlzdHJ1Y3QgbmFuZF9od19jb250cm9sIGNvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2ZzbWNfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9mc21jX25hbmQuYwppbmRleCAyMDViMTBiLi4wZDQ1ZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2ZzbWNfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvZnNtY19uYW5kLmMKQEAgLTMzNSw3ICszMzUsNyBAQAogCiAvKgogICogZnNtY19yZWFkX2h3ZWNjX2VjYzQgLSBIYXJkd2FyZSBFQ0MgY2FsY3VsYXRvciBmb3IgZWNjNCBvcHRpb24gc3VwcG9ydGVkIGJ5Ci0gKiBGU01DLiBFQ0MgaXMgMTMgYnl0ZXMgZm9yIDUxMiBieXRlcyBvZiBkYXRhIChzdXBwb3J0cyBlcnJvciBjb3JyZWN0aW9uIHVwdG8KKyAqIEZTTUMuIEVDQyBpcyAxMyBieXRlcyBmb3IgNTEyIGJ5dGVzIG9mIGRhdGEgKHN1cHBvcnRzIGVycm9yIGNvcnJlY3Rpb24gdXAgdG8KICAqIG1heCBvZiA4LWJpdHMpCiAgKi8KIHN0YXRpYyBpbnQgZnNtY19yZWFkX2h3ZWNjX2VjYzQoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCkBAIC0zODEsNyArMzgxLDcgQEAKIAogLyoKICAqIGZzbWNfcmVhZF9od2VjY19lY2MxIC0gSGFyZHdhcmUgRUNDIGNhbGN1bGF0b3IgZm9yIGVjYzEgb3B0aW9uIHN1cHBvcnRlZCBieQotICogRlNNQy4gRUNDIGlzIDMgYnl0ZXMgZm9yIDUxMiBieXRlcyBvZiBkYXRhIChzdXBwb3J0cyBlcnJvciBjb3JyZWN0aW9uIHVwdG8KKyAqIEZTTUMuIEVDQyBpcyAzIGJ5dGVzIGZvciA1MTIgYnl0ZXMgb2YgZGF0YSAoc3VwcG9ydHMgZXJyb3IgY29ycmVjdGlvbiB1cCB0bwogICogbWF4IG9mIDEtYml0KQogICovCiBzdGF0aWMgaW50IGZzbWNfcmVhZF9od2VjY19lY2MxKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1aW50OF90ICpkYXRhLApAQCAtNDA4LDEwICs0MDgsMTAgQEAKICAqIEBidWY6CWJ1ZmZlciB0byBzdG9yZSByZWFkIGRhdGEKICAqIEBwYWdlOglwYWdlIG51bWJlciB0byByZWFkCiAgKgotICogVGhpcyByb3V0aW5lIGlzIG5lZWRlZCBmb3IgZnNtYyB2ZXJpc29uIDggYXMgcmVhZGluZyBmcm9tIE5BTkQgY2hpcCBoYXMgdG8gYmUKKyAqIFRoaXMgcm91dGluZSBpcyBuZWVkZWQgZm9yIGZzbWMgdmVyc2lvbiA4IGFzIHJlYWRpbmcgZnJvbSBOQU5EIGNoaXAgaGFzIHRvIGJlCiAgKiBwZXJmb3JtZWQgaW4gYSBzdHJpY3Qgc2VxdWVuY2UgYXMgZm9sbG93czoKICAqIGRhdGEoNTEyIGJ5dGUpIC0+IGVjYygxMyBieXRlKQotICogQWZ0ZXIgdGhpcyByZWFkLCBmc21jIGhhcmR3YXJlIGdlbmVyYXRlcyBhbmQgcmVwb3J0cyBlcnJvciBkYXRhIGJpdHModXB0byBhCisgKiBBZnRlciB0aGlzIHJlYWQsIGZzbWMgaGFyZHdhcmUgZ2VuZXJhdGVzIGFuZCByZXBvcnRzIGVycm9yIGRhdGEgYml0cyh1cCB0byBhCiAgKiBtYXggb2YgOCBiaXRzKQogICovCiBzdGF0aWMgaW50IGZzbWNfcmVhZF9wYWdlX2h3ZWNjKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLApAQCAtNjg2LDcgKzY4Niw3IEBACiAJfQogCiAJLyoKLQkgKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UKKwkgKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UKIAkgKi8KIAlpZiAobmFuZF9zY2FuX2lkZW50KCZob3N0LT5tdGQsIDEsIE5VTEwpKSB7CiAJCXJldCA9IC1FTlhJTzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jCmluZGV4IDg1Y2ZjMDYuLmM1NGE0Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAKIH0KIAogLyoqCi0gKiBuYW5kX3JlYWQgLSBbTVREIEludGVyZmFjZV0gTVREIGNvbXBhYmlsaXR5IGZ1bmN0aW9uIGZvciBuYW5kX2RvX3JlYWRfZWNjCisgKiBuYW5kX3JlYWQgLSBbTVREIEludGVyZmFjZV0gTVREIGNvbXBhdGliaWxpdHkgZnVuY3Rpb24gZm9yIG5hbmRfZG9fcmVhZF9lY2MKICAqIEBtdGQ6CU1URCBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAZnJvbToJb2Zmc2V0IHRvIHJlYWQgZnJvbQogICogQGxlbjoJbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYnQuYyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYnQuYwppbmRleCBhMWU4YjMwMC4uYWY0NjQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYnQuYwpAQCAtOTQ1LDcgKzk0NSw3IEBACiAJCXJkMiA9IE5VTEw7CiAJCS8qIFBlciBjaGlwIG9yIHBlciBkZXZpY2UgPyAqLwogCQljaGlwc2VsID0gKHRkLT5vcHRpb25zICYgTkFORF9CQlRfUEVSQ0hJUCkgPyBpIDogLTE7Ci0JCS8qIE1pcnJvcmVkIHRhYmxlIGF2aWxhYmxlID8gKi8KKwkJLyogTWlycm9yZWQgdGFibGUgYXZhaWxhYmxlID8gKi8KIAkJaWYgKG1kKSB7CiAJCQlpZiAodGQtPnBhZ2VzW2ldID09IC0xICYmIG1kLT5wYWdlc1tpXSA9PSAtMSkgewogCQkJCXdyaXRlb3BzID0gMHgwMzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZHNpbS5jIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kc2ltLmMKaW5kZXggMjEzMTgxYi4uODkzZDk1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kc2ltLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kc2ltLmMKQEAgLTE2Miw3ICsxNjIsNyBAQAogTU9EVUxFX1BBUk1fREVTQyhncmF2ZXBhZ2VzLCAgICAgIlBhZ2VzIHRoYXQgbG9zZSBkYXRhIFs6IG1heGltdW0gcmVhZHMgKGRlZmF1bHRzIHRvIDMpXSIKIAkJCQkgIiBzZXBhcmF0ZWQgYnkgY29tbWFzIGUuZy4gMTQwMToyIG1lYW5zIHBhZ2UgMTQwMSIKIAkJCQkgIiBjYW4gYmUgcmVhZCBvbmx5IHR3aWNlIGJlZm9yZSBmYWlsaW5nIik7Ci1NT0RVTEVfUEFSTV9ERVNDKHJwdHdlYXIsICAgICAgICAiTnVtYmVyIG9mIGVyYXNlcyBpbmJldHdlZW4gcmVwb3J0aW5nIHdlYXIsIGlmIG5vdCB6ZXJvIik7CitNT0RVTEVfUEFSTV9ERVNDKHJwdHdlYXIsICAgICAgICAiTnVtYmVyIG9mIGVyYXNlcyBiZXR3ZWVuIHJlcG9ydGluZyB3ZWFyLCBpZiBub3QgemVybyIpOwogTU9EVUxFX1BBUk1fREVTQyhvdmVycmlkZXNpemUsICAgIlNwZWNpZmllcyB0aGUgTkFORCBGbGFzaCBzaXplIG92ZXJyaWRpbmcgdGhlIElEIGJ5dGVzLiAiCiAJCQkJICJUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gZXJhc2UgYmxvY2tzIGFuZCBhcyB0aGUgZXhwb25lbnQgb2YgYSBwb3dlciBvZiB0d28iCiAJCQkJICIgZS5nLiA1IG1lYW5zIGEgc2l6ZSBvZiAzMiBlcmFzZSBibG9ja3MiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvbm9tYWRpa19uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL25vbWFkaWtfbmFuZC5jCmluZGV4IDhjMGI2OTMuLmEwNDVhNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvbm9tYWRpa19uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9ub21hZGlrX25hbmQuYwpAQCAtMTUxLDcgKzE1MSw3IEBACiAJbmFuZC0+b3B0aW9ucyA9IHBkYXRhLT5vcHRpb25zOwogCiAJLyoKLQkgKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UKKwkgKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UKIAkgKi8KIAlpZiAobmFuZF9zY2FuKCZob3N0LT5tdGQsIDEpKSB7CiAJCXJldCA9IC1FTlhJTzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcGFzZW1pX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcGFzZW1pX25hbmQuYwppbmRleCA1OWVmYTgyLi4yMGJmZTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3Bhc2VtaV9uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9wYXNlbWlfbmFuZC5jCkBAIC0xNTcsNyArMTU3LDcgQEAKIAkvKiBFbmFibGUgdGhlIGZvbGxvd2luZyBmb3IgYSBmbGFzaCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgKi8KIAljaGlwLT5vcHRpb25zID0gTkFORF9VU0VfRkxBU0hfQkJUIHwgTkFORF9OT19BVVRPSU5DUjsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4ocGFzZW1pX25hbmRfbXRkLCAxKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0X2xwYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcGxhdF9uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL3BsYXRfbmFuZC5jCmluZGV4IDMxN2FmZjQuLmNhZjVhNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcGxhdF9uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9wbGF0X25hbmQuYwpAQCAtOTUsNyArOTUsNyBAQAogCQkJZ290byBvdXQ7CiAJfQogCi0JLyogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCiAJaWYgKG5hbmRfc2NhbigmZGF0YS0+bXRkLCBwZGF0YS0+Y2hpcC5ucl9jaGlwcykpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcHhhM3h4X25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcHhhM3h4X25hbmQuYwppbmRleCBhYjdmNGMzLi5mZjA3MDEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3B4YTN4eF9uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9weGEzeHhfbmFuZC5jCkBAIC0xODQsNyArMTg0LDcgQEAKIAogc3RhdGljIGludCB1c2VfZG1hID0gMTsKIG1vZHVsZV9wYXJhbSh1c2VfZG1hLCBib29sLCAwNDQ0KTsKLU1PRFVMRV9QQVJNX0RFU0ModXNlX2RtYSwgImVuYWJsZSBETUEgZm9yIGRhdGEgdHJhbnNmZXJpbmcgdG8vZnJvbSBOQU5EIEhXIik7CitNT0RVTEVfUEFSTV9ERVNDKHVzZV9kbWEsICJlbmFibGUgRE1BIGZvciBkYXRhIHRyYW5zZmVycmluZyB0by9mcm9tIE5BTkQgSFciKTsKIAogLyoKICAqIERlZmF1bHQgTkFORCBmbGFzaCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24gc2V0dXAgYnkgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3I4NTIuYyBiL2RyaXZlcnMvbXRkL25hbmQvcjg1Mi5jCmluZGV4IDYzMjJkMWYuLmNhZTJlMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcjg1Mi5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvcjg1Mi5jCkBAIC0xODUsNyArMTg1LDcgQEAKIAogCWRiZ192ZXJib3NlKCJkb2luZyBkbWEgJXMgIiwgZG9fcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwogCi0JLyogU2V0IGludGlhbCBkbWEgc3RhdGU6IGZvciByZWFkaW5nIGZpcnN0IGZpbGwgb24gYm9hcmQgYnVmZmVyLAorCS8qIFNldCBpbml0aWFsIGRtYSBzdGF0ZTogZm9yIHJlYWRpbmcgZmlyc3QgZmlsbCBvbiBib2FyZCBidWZmZXIsCiAJICBmcm9tIGRldmljZSwgZm9yIHdyaXRlcyBmaXJzdCBmaWxsIHRoZSBidWZmZXIgIGZyb20gbWVtb3J5Ki8KIAlkZXYtPmRtYV9zdGF0ZSA9IGRvX3JlYWQgPyBETUFfSU5URVJOQUwgOiBETUFfTUVNT1JZOwogCkBAIC03NjYsNyArNzY2LDcgQEAKIAkJcmV0ID0gSVJRX0hBTkRMRUQ7CiAJCWRldi0+Y2FyZF9kZXRlY3RlZCA9ICEhKGNhcmRfc3RhdHVzICYgUjg1Ml9DQVJEX0lSUV9JTlNFUlQpOwogCi0JCS8qIHdlIHNob3VsZG4ndCByZWNpZXZlIGFueSBpbnRlcnJ1cHRzIGlmIHdlIHdhaXQgZm9yIGNhcmQKKwkJLyogd2Ugc2hvdWxkbid0IHJlY2VpdmUgYW55IGludGVycnVwdHMgaWYgd2Ugd2FpdCBmb3IgY2FyZAogCQkJdG8gc2V0dGxlICovCiAJCVdBUk5fT04oZGV2LT5jYXJkX3Vuc3RhYmxlKTsKIApAQCAtNzk0LDEzICs3OTQsMTMgQEAKIAkJcmV0ID0gSVJRX0hBTkRMRUQ7CiAKIAkJaWYgKGRtYV9zdGF0dXMgJiBSODUyX0RNQV9JUlFfRVJST1IpIHsKLQkJCWRiZygicmVjaWV2ZWQgZG1hIGVycm9yIElSUSIpOworCQkJZGJnKCJyZWNlaXZlZCBkbWEgZXJyb3IgSVJRIik7CiAJCQlyODUyX2RtYV9kb25lKGRldiwgLUVJTyk7CiAJCQljb21wbGV0ZSgmZGV2LT5kbWFfZG9uZSk7CiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCS8qIHJlY2lldmVkIERNQSBpbnRlcnJ1cHQgb3V0IG9mIG5vd2hlcmU/ICovCisJCS8qIHJlY2VpdmVkIERNQSBpbnRlcnJ1cHQgb3V0IG9mIG5vd2hlcmU/ICovCiAJCVdBUk5fT05fT05DRShkZXYtPmRtYV9zdGFnZSA9PSAwKTsKIAogCQlpZiAoZGV2LT5kbWFfc3RhZ2UgPT0gMCkKQEAgLTk2MCw3ICs5NjAsNyBAQAogCQkmZGV2LT5jYXJkX2RldGVjdF93b3JrLCAwKTsKIAogCi0JcHJpbnRrKEtFUk5fTk9USUNFIERSVl9OQU1FICI6IGRyaXZlciBsb2FkZWQgc3VjY2VzZnVsbHlcbiIpOworCXByaW50ayhLRVJOX05PVElDRSBEUlZfTkFNRSAiOiBkcml2ZXIgbG9hZGVkIHN1Y2Nlc3NmdWxseVxuIik7CiAJcmV0dXJuIDA7CiAKIGVycm9yMTA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3NoX2ZsY3RsLmMgYi9kcml2ZXJzL210ZC9uYW5kL3NoX2ZsY3RsLmMKaW5kZXggNTQ2YzJmMC4uODFiYmI1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9zaF9mbGN0bC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvc2hfZmxjdGwuYwpAQCAtNzgsNyArNzgsNyBAQAogCiBzdGF0aWMgdm9pZCB0aW1lb3V0X2Vycm9yKHN0cnVjdCBzaF9mbGN0bCAqZmxjdGwsIGNvbnN0IGNoYXIgKnN0cikKIHsKLQlkZXZfZXJyKCZmbGN0bC0+cGRldi0+ZGV2LCAiVGltZW91dCBvY2N1cmVkIGluICVzXG4iLCBzdHIpOworCWRldl9lcnIoJmZsY3RsLT5wZGV2LT5kZXYsICJUaW1lb3V0IG9jY3VycmVkIGluICVzXG4iLCBzdHIpOwogfQogCiBzdGF0aWMgdm9pZCB3YWl0X2NvbXBsZXRpb24oc3RydWN0IHNoX2ZsY3RsICpmbGN0bCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc21fY29tbW9uLmMgYi9kcml2ZXJzL210ZC9uYW5kL3NtX2NvbW1vbi5jCmluZGV4IDRhOGYzNjcuLjU3Y2M4MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvc21fY29tbW9uLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9zbV9jb21tb24uYwpAQCAtMTIxLDcgKzEyMSw3IEBACiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCS8qIEJhZCBibG9jayBtYXJrZXIgcG9zdGlvbiAqLworCS8qIEJhZCBibG9jayBtYXJrZXIgcG9zaXRpb24gKi8KIAljaGlwLT5iYWRibG9ja3BvcyA9IDB4MDU7CiAJY2hpcC0+YmFkYmxvY2tiaXRzID0gNzsKIAljaGlwLT5ibG9ja19tYXJrYmFkID0gc21fYmxvY2tfbWFya2JhZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvdG1pb19uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL3RtaW9fbmFuZC5jCmluZGV4IDM4ZmIxNjcuLjE0YzU3ODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvdG1pb19uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC90bWlvX25hbmQuYwpAQCAtNCw3ICs0LDcgQEAKICAqIFNsaWdodGx5IG11cmt5IHByZS1naXQgaGlzdG9yeSBvZiB0aGUgZHJpdmVyOgogICoKICAqIENvcHlyaWdodCAoYykgSWFuIE1vbHRvbiAyMDA0LCAyMDA1LCAyMDA4Ci0gKiAgICBPcmlnaW5hbCB3b3JrLCBpbmRlcGVuZGFudCBvZiBzaGFycHMgY29kZS4gSW5jbHVkZWQgaGFyZHdhcmUgRUNDIHN1cHBvcnQuCisgKiAgICBPcmlnaW5hbCB3b3JrLCBpbmRlcGVuZGVudCBvZiBzaGFycHMgY29kZS4gSW5jbHVkZWQgaGFyZHdhcmUgRUNDIHN1cHBvcnQuCiAgKiAgICBIYXJkIEVDQyBkaWQgbm90IHdvcmsgZm9yIHdyaXRlcyBpbiB0aGUgZWFybHkgcmV2aXNpb25zLgogICogQ29weXJpZ2h0IChjKSBEaXJrIE9wZmVyIDIwMDUuCiAgKiAgICBNb2RpZmljYXRpb25zIGRldmVsb3BlZCBmcm9tIHNoYXJwcyBjb2RlIGJ1dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvb25lbmFuZC9vbWFwMi5jIGIvZHJpdmVycy9tdGQvb25lbmFuZC9vbWFwMi5jCmluZGV4IGY1OTFmNjEuLjFmY2I0MWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb21hcDIuYworKysgYi9kcml2ZXJzL210ZC9vbmVuYW5kL29tYXAyLmMKQEAgLTYwOCw3ICs2MDgsNyBAQAogCiAJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShjLT5yZWd1bGF0b3IpOwogCWlmIChyZXQgIT0gMCkKLQkJZGV2X2VycigmYy0+cGRldi0+ZGV2LCAiY2FudCBlbmFibGUgcmVndWxhdG9yXG4iKTsKKwkJZGV2X2VycigmYy0+cGRldi0+ZGV2LCAiY2FuJ3QgZW5hYmxlIHJlZ3VsYXRvclxuIik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNjIwLDcgKzYyMCw3IEBACiAKIAlyZXQgPSByZWd1bGF0b3JfZGlzYWJsZShjLT5yZWd1bGF0b3IpOwogCWlmIChyZXQgIT0gMCkKLQkJZGV2X2VycigmYy0+cGRldi0+ZGV2LCAiY2FudCBkaXNhYmxlIHJlZ3VsYXRvclxuIik7CisJCWRldl9lcnIoJmMtPnBkZXYtPmRldiwgImNhbid0IGRpc2FibGUgcmVndWxhdG9yXG4iKTsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfc2ltLmMgYi9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfc2ltLmMKaW5kZXggOGIyNDYwNi4uNWVmM2JkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX3NpbS5jCisrKyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9zaW0uYwpAQCAtMzIxLDcgKzMyMSw3IEBACiAJCQkJY29udGludWU7CiAJCQlpZiAobWVtY21wKGRlc3QgKyBvZmYsIGZmY2hhcnMsIHRoaXMtPnN1YnBhZ2VzaXplKSAmJgogCQkJICAgIG9uZW5hbmRfY2hlY2tfb3ZlcndyaXRlKGRlc3QgKyBvZmYsIHNyYyArIG9mZiwgdGhpcy0+c3VicGFnZXNpemUpKQotCQkJCXByaW50ayhLRVJOX0VSUiAib3Zlci13cml0ZSBoYXBwZW5kIGF0IDB4JTA4eFxuIiwgb2Zmc2V0KTsKKwkJCQlwcmludGsoS0VSTl9FUlIgIm92ZXItd3JpdGUgaGFwcGVuZWQgYXQgMHglMDh4XG4iLCBvZmZzZXQpOwogCQkJbWVtY3B5KGRlc3QgKyBvZmYsIHNyYyArIG9mZiwgdGhpcy0+c3VicGFnZXNpemUpOwogCQl9CiAJCS8qIEZhbGwgdGhyb3VnaCAqLwpAQCAtMzM1LDcgKzMzNSw3IEBACiAJCWRlc3QgPSBPTkVOQU5EX0NPUkVfU1BBUkUoZmxhc2gsIHRoaXMsIG9mZnNldCk7CiAJCWlmIChtZW1jbXAoZGVzdCwgZmZjaGFycywgbXRkLT5vb2JzaXplKSAmJgogCQkgICAgb25lbmFuZF9jaGVja19vdmVyd3JpdGUoZGVzdCwgc3JjLCBtdGQtPm9vYnNpemUpKQotCQkJcHJpbnRrKEtFUk5fRVJSICJPT0I6IG92ZXItd3JpdGUgaGFwcGVuZCBhdCAweCUwOHhcbiIsCisJCQlwcmludGsoS0VSTl9FUlIgIk9PQjogb3Zlci13cml0ZSBoYXBwZW5lZCBhdCAweCUwOHhcbiIsCiAJCQkgICAgICAgb2Zmc2V0KTsKIAkJbWVtY3B5KGRlc3QsIHNyYywgbXRkLT5vb2JzaXplKTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9zbV9mdGwuYyBiL2RyaXZlcnMvbXRkL3NtX2Z0bC5jCmluZGV4IDJiMGRhYWUuLmVkM2Q2Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3NtX2Z0bC5jCisrKyBiL2RyaXZlcnMvbXRkL3NtX2Z0bC5jCkBAIC01NDAsNyArNTQwLDcgQEAKIAkJCXJldHVybiAtRUlPOwogCX0KIAotCS8qIElmIHRoZSBibG9jayBpcyBzbGljZWQgKHBhcnRpYWx5IGVyYXNlZCB1c3VhbGx5KSBlcmFzZSBpdCAqLworCS8qIElmIHRoZSBibG9jayBpcyBzbGljZWQgKHBhcnRpYWxseSBlcmFzZWQgdXN1YWxseSkgZXJhc2UgaXQgKi8KIAlpZiAoaSA9PSAyKSB7CiAJCXNtX2VyYXNlX2Jsb2NrKGZ0bCwgem9uZSwgYmxvY2ssIDEpOwogCQlyZXR1cm4gMTsKQEAgLTg3OCw3ICs4NzgsNyBAQAogCXJldHVybiAwOwogfQogCi0vKiBHZXQgYW5kIGF1dG9tYXRpY2x5IGluaXRpYWxpemUgYW4gRlRMIG1hcHBpbmcgZm9yIG9uZSB6b25lICovCisvKiBHZXQgYW5kIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZSBhbiBGVEwgbWFwcGluZyBmb3Igb25lIHpvbmUgKi8KIHN0cnVjdCBmdGxfem9uZSAqc21fZ2V0X3pvbmUoc3RydWN0IHNtX2Z0bCAqZnRsLCBpbnQgem9uZV9udW0pCiB7CiAJc3RydWN0IGZ0bF96b25lICp6b25lOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL3NjYW4uYyBiL2RyaXZlcnMvbXRkL3ViaS9zY2FuLmMKaW5kZXggMTFlYjhlZi4uZDJkMTJhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvdWJpL3NjYW4uYworKysgYi9kcml2ZXJzL210ZC91Ymkvc2Nhbi5jCkBAIC05NjgsNyArOTY4LDcgQEAKIAkJCSAqIGNvbnRhaW5zIGdhcmJhZ2UgYmVjYXVzZSBvZiBhIHBvd2VyIGN1dCBkdXJpbmcgZXJhc2UKIAkJCSAqIG9wZXJhdGlvbi4gU28gd2UganVzdCBzY2hlZHVsZSB0aGlzIFBFQiBmb3IgZXJhc3VyZS4KIAkJCSAqCi0JCQkgKiBCZXNpZGVzLCBpbiBjYXNlIG9mIE5PUiBmbGFzaCwgd2UgZGVsaWJlcmF0bHkKKwkJCSAqIEJlc2lkZXMsIGluIGNhc2Ugb2YgTk9SIGZsYXNoLCB3ZSBkZWxpYmVyYXRlbHkKIAkJCSAqIGNvcnJ1cHQgYm90aCBoZWFkZXJzIGJlY2F1c2UgTk9SIGZsYXNoIGVyYXN1cmUgaXMKIAkJCSAqIHNsb3cgYW5kIGNhbiBzdGFydCBmcm9tIHRoZSBlbmQuCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzNjNTAxLmMgYi9kcml2ZXJzL25ldC8zYzUwMS5jCmluZGV4IDllMWMwM2UuLjU0MjBmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTAxLmMKKysrIGIvZHJpdmVycy9uZXQvM2M1MDEuYwpAQCAtMzk5LDcgKzM5OSw3IEBACiAgKiBhcyB3ZSBtYXkgc3RpbGwgYmUgYXR0ZW1wdGluZyB0byByZXRyaWV2ZSB0aGUgbGFzdCBSWCBwYWNrZXQgYnVmZmVyLgogICoKICAqIFdoZW4gYSB0cmFuc21pdCB0aW1lcyBvdXQgd2UgZHVtcCB0aGUgY2FyZCBpbnRvIGNvbnRyb2wgbW9kZSBhbmQganVzdAotICogc3RhcnQgYWdhaW4uIEl0IGhhcHBlbnMgZW5vdWdoIHRoYXQgaXQgaXNudCB3b3J0aCBsb2dnaW5nLgorICogc3RhcnQgYWdhaW4uIEl0IGhhcHBlbnMgZW5vdWdoIHRoYXQgaXQgaXNuJ3Qgd29ydGggbG9nZ2luZy4KICAqCiAgKiBXZSBhdm9pZCBob2xkaW5nIHRoZSBzcGluIGxvY2tzIHdoZW4gZG9pbmcgdGhlIHBhY2tldCBsb2FkIHRvIHRoZSBib2FyZC4KICAqIFRoZSBkZXZpY2UgaXMgdmVyeSBzbG93LCBhbmQgaXRzIERNQSBtb2RlIGlzIGV2ZW4gc2xvd2VyLiBJZiB3ZSBoZWxkIHRoZQpAQCAtNDk5LDcgKzQ5OSw3IEBACiAgKgogICogSGFuZGxlIHRoZSBldGhlciBpbnRlcmZhY2UgaW50ZXJydXB0cy4gVGhlIDNjNTAxIG5lZWRzIGEgbG90IG1vcmUKICAqIGhhbmQgaG9sZGluZyB0aGFuIG1vc3QgY2FyZHMuIEluIHBhcnRpY3VsYXIgd2UgZ2V0IGEgdHJhbnNtaXQgaW50ZXJydXB0Ci0gKiB3aXRoIGEgY29sbGlzaW9uIGVycm9yIGJlY2F1c2UgdGhlIGJvYXJkIGZpcm13YXJlIGlzbnQgY2FwYWJsZSBvZiByZXdpbmRpbmcKKyAqIHdpdGggYSBjb2xsaXNpb24gZXJyb3IgYmVjYXVzZSB0aGUgYm9hcmQgZmlybXdhcmUgaXNuJ3QgY2FwYWJsZSBvZiByZXdpbmRpbmcKICAqIGl0cyBvd24gdHJhbnNtaXQgYnVmZmVyIHBvaW50ZXJzLiBJdCBjYW4gaG93ZXZlciBjb3VudCB0byAxNiBmb3IgdXMuCiAgKgogICogT24gdGhlIHJlY2VpdmUgc2lkZSB0aGUgY2FyZCBpcyBhbHNvIHZlcnkgZHVtYi4gSXQgaGFzIG5vIGJ1ZmZlcmluZyB0bwpAQCAtNzMyLDcgKzczMiw3IEBACiAgKiBlbF9yZXNldDogUmVzZXQgYSAzYzUwMSBjYXJkCiAgKiBAZGV2OiBUaGUgM2M1MDEgY2FyZCBhYm91dCB0byBnZXQgemFwcGVkCiAgKgotICogRXZlbiByZXNldHRpbmcgYSAzYzUwMSBpc250IHNpbXBsZS4gV2hlbiB5b3UgYWN0aXZhdGUgcmVzZXQgaXQgbG9zZXMgYWxsCisgKiBFdmVuIHJlc2V0dGluZyBhIDNjNTAxIGlzbid0IHNpbXBsZS4gV2hlbiB5b3UgYWN0aXZhdGUgcmVzZXQgaXQgbG9zZXMgYWxsCiAgKiBpdHMgY29uZmlndXJhdGlvbi4gWW91IG11c3QgaG9sZCB0aGUgbG9jayB3aGVuIGRvaW5nIHRoaXMuIFRoZSBmdW5jdGlvbgogICogY2Fubm90IHRha2UgdGhlIGxvY2sgaXRzZWxmIGFzIGl0IGlzIGNhbGxhYmxlIGZyb20gdGhlIGlycSBoYW5kbGVyLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC8zYzUyMy5jIGIvZHJpdmVycy9uZXQvM2M1MjMuYwppbmRleCBkZTU3OWQwLi5iYzBkMWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC8zYzUyMy5jCisrKyBiL2RyaXZlcnMvbmV0LzNjNTIzLmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgIHRoaXMgZm9yIHRoZSA2NEsgdmVyc2lvbiB3b3VsZCByZXF1aXJlIGEgbG90IG9mIGhlaW5vdXMgYmFuawogICAgc3dpdGNoaW5nLCB3aGljaCBJJ20gc3VyZSBub3QgaW50ZXJlc3RlZCBpbiBkb2luZy4gIElmIHlvdSB0cnkgdG8KICAgIGltcGxlbWVudCBhIGJhbmsgc3dpdGNoaW5nIHZlcnNpb24sIHlvdSdsbCBiYXNpY2FsbHkgaGF2ZSB0byByZW1lbWJlcgotICAgd2hhdCBiYW5rIGlzIGVuYWJsZWQgYW5kIGRvIGEgc3dpdGNoIGV2ZXJ5dGltZSB5b3UgYWNjZXNzIGEgbWVtb3J5CisgICB3aGF0IGJhbmsgaXMgZW5hYmxlZCBhbmQgZG8gYSBzd2l0Y2ggZXZlcnkgdGltZSB5b3UgYWNjZXNzIGEgbWVtb3J5CiAgICBsb2NhdGlvbiB0aGF0J3Mgbm90IGN1cnJlbnQuICBZb3UnbGwgYWxzbyBoYXZlIHRvIHJlbWFwIHBvaW50ZXJzIG9uCiAgICB0aGUgZHJpdmVyIHNpZGUsIGJlY2F1c2UgaXQgb25seSBrbm93cyBhYm91dCAxNksgb2YgdGhlIG1lbW9yeS4KICAgIEFueW9uZSBkZXNwZXJhdGUgb3IgbWFzb2NoaXN0aWMgZW5vdWdoIHRvIHRyeT8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzNjNTI3LmMgYi9kcml2ZXJzL25ldC8zYzUyNy5jCmluZGV4IDhjMDk0YmEuLmQ5ZDA1NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTI3LmMKKysrIGIvZHJpdmVycy9uZXQvM2M1MjcuYwpAQCAtNTEsNyArNTEsNyBAQAogICoJY2lyY3VsYXIgYnVmZmVyIHF1ZXVlcy4KICAqCiAgKglUaGUgbWFpbGJveGVzIGNhbiBiZSB1c2VkIGZvciBjb250cm9sbGluZyBob3cgdGhlIGNhcmQgdHJhdmVyc2VzCi0gKglpdHMgYnVmZmVyIHJpbmdzLCBidXQgYXJlIHVzZWQgb25seSBmb3IgaW5pdGFsIHNldHVwIGluIHRoaXMKKyAqCWl0cyBidWZmZXIgcmluZ3MsIGJ1dCBhcmUgdXNlZCBvbmx5IGZvciBpbml0aWFsIHNldHVwIGluIHRoaXMKICAqCWltcGxlbWVudGF0aW9uLiAgVGhlIGV4ZWMgbWFpbGJveCBhbGxvd3MgYSB2YXJpZXR5IG9mIGNvbW1hbmRzIHRvCiAgKgliZSBleGVjdXRlZC4gRWFjaCBjb21tYW5kIG11c3QgY29tcGxldGUgYmVmb3JlIHRoZSBuZXh0IGlzCiAgKglleGVjdXRlZC4gUHJpbWFyaWx5IHdlIHVzZSB0aGUgZXhlYyBtYWlsYm94IGZvciBjb250cm9sbGluZyB0aGUKQEAgLTgxMyw3ICs4MTMsNyBAQAogICoKICAqCVRoaXMgc2V0cyB1cCB0aGUgaG9zdCB0cmFuc21pdCBkYXRhLXN0cnVjdHVyZXMuCiAgKgotICoJRmlyc3QsIHdlIG9idGFpbiBmcm9tIHRoZSBjYXJkIGl0J3MgY3VycmVudCBwb3N0aW9uIGluIHRoZSB0eAorICoJRmlyc3QsIHdlIG9idGFpbiBmcm9tIHRoZSBjYXJkIGl0J3MgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgdHgKICAqCXJpbmcsIHNvIHRoYXQgd2Ugd2lsbCBrbm93IHdoZXJlIHRvIGJlZ2luIHRyYW5zbWl0dGluZwogICoJcGFja2V0cy4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC8zYzU5eC5jIGIvZHJpdmVycy9uZXQvM2M1OXguYwppbmRleCAwYTkyNDM2Zi4uOGNjMjI1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvM2M1OXguYworKysgYi9kcml2ZXJzL25ldC8zYzU5eC5jCkBAIC05ODQsNyArOTg0LDcgQEAKIAkJICogYW55IGRldmljZSBoYXZlIGJlZW4gZm91bmQgd2hlbiB3ZSBleGl0IGZyb20KIAkJICogZWlzYV9kcml2ZXJfcmVnaXN0ZXIgKHRoZSBidXMgcm9vdCBkcml2ZXIgbWF5IG5vdCBiZQogCQkgKiBpbml0aWFsaXplZCB5ZXQpLiBTbyB3ZSBibGluZGx5IGFzc3VtZSBzb21ldGhpbmcgd2FzCi0JCSAqIGZvdW5kLCBhbmQgbGV0IHRoZSBzeXNmcyBtYWdpYyBoYXBwZW5kLi4uCisJCSAqIGZvdW5kLCBhbmQgbGV0IHRoZSBzeXNmcyBtYWdpYyBoYXBwZW5lZC4uLgogCQkgKi8KIAkJZWlzYV9mb3VuZCA9IDE7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYWNlbmljLmMgYi9kcml2ZXJzL25ldC9hY2VuaWMuYwppbmRleCA0MWQ5OTExLi5lZTY0OGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hY2VuaWMuYworKysgYi9kcml2ZXJzL25ldC9hY2VuaWMuYwpAQCAtMTU4NCw3ICsxNTg0LDcgQEAKIAkvKgogCSAqIFdlIGhhdmVuJ3QgcmVjZWl2ZWQgYSBzdGF0cyB1cGRhdGUgZXZlbnQgZm9yIG1vcmUgdGhhbiAyLjUKIAkgKiBzZWNvbmRzIGFuZCB0aGVyZSBpcyBkYXRhIGluIHRoZSB0cmFuc21pdCBxdWV1ZSwgdGh1cyB3ZQotCSAqIGFzdW1lIHRoZSBjYXJkIGlzIHN0dWNrLgorCSAqIGFzc3VtZSB0aGUgY2FyZCBpcyBzdHVjay4KIAkgKi8KIAlpZiAoKmFwLT50eF9jc20gIT0gYXAtPnR4X3JldF9jc20pIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IFRyYW5zbWl0dGVyIGlzIHN0dWNrLCAlMDh4XG4iLApAQCAtMjU2NCw3ICsyNTY0LDcgQEAKIAogCQkvKgogCQkgKiBBIFRYLWRlc2NyaXB0b3IgcHJvZHVjZXIgKGFuIElSUSkgbWlnaHQgaGF2ZSBnb3R0ZW4KLQkJICogaW5iZXR3ZWVuLCBtYWtpbmcgdGhlIHJpbmcgZnJlZSBhZ2Fpbi4gU2luY2UgeG1pdCBpcworCQkgKiBiZXR3ZWVuLCBtYWtpbmcgdGhlIHJpbmcgZnJlZSBhZ2Fpbi4gU2luY2UgeG1pdCBpcwogCQkgKiBzZXJpYWxpemVkLCB0aGlzIGlzIHRoZSBvbmx5IHNpdHVhdGlvbiB3ZSBoYXZlIHRvCiAJCSAqIHJlLXRlc3QuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYW1kODExMWUuYyBiL2RyaXZlcnMvbmV0L2FtZDgxMTFlLmMKaW5kZXggMmNhODgwYi4uODg0OTVjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYW1kODExMWUuYworKysgYi9kcml2ZXJzL25ldC9hbWQ4MTExZS5jCkBAIC0xMzk4LDcgKzEzOTgsNyBAQAogCQltY19maWx0ZXJbMV0gPSBtY19maWx0ZXJbMF0gPSAwOwogCQlscC0+b3B0aW9ucyAmPSB+T1BUSU9OX01VTFRJQ0FTVF9FTkFCTEU7CiAJCWFtZDgxMTFlX3dyaXRlcSgqKHU2NCopbWNfZmlsdGVyLGxwLT5tbWlvICsgTEFEUkYpOwotCQkvKiBkaXNhYmxlIHByb21pc2NvdXMgbW9kZSAqLworCQkvKiBkaXNhYmxlIHByb21pc2N1b3VzIG1vZGUgKi8KIAkJd3JpdGVsKFBST00sIGxwLT5tbWlvICsgQ01EMik7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdDE3MDAuYyBiL2RyaXZlcnMvbmV0L2F0MTcwMC5jCmluZGV4IGY0NzQ0ZmMuLjY1YTc4ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2F0MTcwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2F0MTcwMC5jCkBAIC0xMzMsNyArMTMzLDcgQEAKIC8qIFJ1bi10aW1lIHJlZ2lzdGVyIGJhbmsgMiBkZWZpbml0aW9ucy4gKi8KICNkZWZpbmUgREFUQVBPUlQJCTgJCS8qIFdvcmQtd2lkZSBETUEgb3IgcHJvZ3JhbW1lZC1JL08gZGF0YXBvcnQuICovCiAjZGVmaW5lIFRYX1NUQVJUCQkxMAotI2RlZmluZSBDT0wxNkNOVEwJCTExCQkvKiBDb250cm9sbCBSZWcgZm9yIDE2IGNvbGxpc2lvbnMgKi8KKyNkZWZpbmUgQ09MMTZDTlRMCQkxMQkJLyogQ29udHJvbCBSZWcgZm9yIDE2IGNvbGxpc2lvbnMgKi8KICNkZWZpbmUgTU9ERTEzCQkJMTMKICNkZWZpbmUgUlhfQ1RSTAkJCTE0CiAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVycyBvbmx5IG9uIHRoZSAnODY1QS9CIGNoaXBzLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYXRsMWUvYXRsMWVfbWFpbi5jIGIvZHJpdmVycy9uZXQvYXRsMWUvYXRsMWVfbWFpbi5jCmluZGV4IDFmZjAwMWEuLmIwYTcxZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2F0bDFlL2F0bDFlX21haW4uYworKysgYi9kcml2ZXJzL25ldC9hdGwxZS9hdGwxZV9tYWluLmMKQEAgLTI1MDksNyArMjUwOSw3IEBACiAJLmlkX3RhYmxlID0gYXRsMWVfcGNpX3RibCwKIAkucHJvYmUgICAgPSBhdGwxZV9wcm9iZSwKIAkucmVtb3ZlICAgPSBfX2RldmV4aXRfcChhdGwxZV9yZW1vdmUpLAotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KICNpZmRlZiBDT05GSUdfUE0KIAkuc3VzcGVuZCAgPSBhdGwxZV9zdXNwZW5kLAogCS5yZXN1bWUgICA9IGF0bDFlX3Jlc3VtZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2F0bHgvYXRsMi5jIGIvZHJpdmVycy9uZXQvYXRseC9hdGwyLmMKaW5kZXggZTYzN2U5Zi4uZjQ2ZWU0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXRseC9hdGwyLmMKKysrIGIvZHJpdmVycy9uZXQvYXRseC9hdGwyLmMKQEAgLTE3MDEsNyArMTcwMSw3IEBACiAJLmlkX3RhYmxlID0gYXRsMl9wY2lfdGJsLAogCS5wcm9iZSAgICA9IGF0bDJfcHJvYmUsCiAJLnJlbW92ZSAgID0gX19kZXZleGl0X3AoYXRsMl9yZW1vdmUpLAotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KIAkuc3VzcGVuZCAgPSBhdGwyX3N1c3BlbmQsCiAjaWZkZWYgQ09ORklHX1BNCiAJLnJlc3VtZSAgID0gYXRsMl9yZXN1bWUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYyBiL2RyaXZlcnMvbmV0L2JjbTYzeHhfZW5ldC5jCmluZGV4IGU5NGE5NjZhLi5jNDgxMDRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYworKysgYi9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYwpAQCAtNTk3LDcgKzU5Nyw3IEBACiB9CiAKIC8qCi0gKiBDaGFuZ2UgcnggbW9kZSAocHJvbWlzY291cy9hbGxtdWx0aSkgYW5kIHVwZGF0ZSBtdWx0aWNhc3QgbGlzdAorICogQ2hhbmdlIHJ4IG1vZGUgKHByb21pc2N1b3VzL2FsbG11bHRpKSBhbmQgdXBkYXRlIG11bHRpY2FzdCBsaXN0CiAgKi8KIHN0YXRpYyB2b2lkIGJjbV9lbmV0X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYmVuZXQvYmVfY21kcy5jIGIvZHJpdmVycy9uZXQvYmVuZXQvYmVfY21kcy5jCmluZGV4IDVhNGE4N2U3Li4xZTJkODI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9iZW5ldC9iZV9jbWRzLmMKKysrIGIvZHJpdmVycy9uZXQvYmVuZXQvYmVfY21kcy5jCkBAIC0xMzMxLDcgKzEzMzEsNyBAQAogCiAvKgogICogVXNlcyBNQ0MgZm9yIHRoaXMgY29tbWFuZCBhcyBpdCBtYXkgYmUgY2FsbGVkIGluIEJIIGNvbnRleHQKLSAqIChtYyA9PSBOVUxMKSA9PiBtdWx0aWNhc3QgcHJvbWlzY291cworICogKG1jID09IE5VTEwpID0+IG11bHRpY2FzdCBwcm9taXNjdW91cwogICovCiBpbnQgYmVfY21kX211bHRpY2FzdF9zZXQoc3RydWN0IGJlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBpZl9pZCwKIAkJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGJlX2RtYV9tZW0gKm1lbSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JlbmV0L2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2JlbmV0L2JlX21haW4uYwppbmRleCBhNzExNjNmLi45YTU0YzhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9iZW5ldC9iZV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvYmVuZXQvYmVfbWFpbi5jCkBAIC03MDgsNyArNzA4LDcgQEAKIAkJZ290byBkb25lOwogCX0KIAotCS8qIEJFIHdhcyBwcmV2aW91c2x5IGluIHByb21pc2NvdXMgbW9kZTsgZGlzYWJsZSBpdCAqLworCS8qIEJFIHdhcyBwcmV2aW91c2x5IGluIHByb21pc2N1b3VzIG1vZGU7IGRpc2FibGUgaXQgKi8KIAlpZiAoYWRhcHRlci0+cHJvbWlzY3VvdXMpIHsKIAkJYWRhcHRlci0+cHJvbWlzY3VvdXMgPSBmYWxzZTsKIAkJYmVfY21kX3Byb21pc2N1b3VzX2NvbmZpZyhhZGFwdGVyLCBhZGFwdGVyLT5wb3J0X251bSwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibmEvYm5hX2h3LmggYi9kcml2ZXJzL25ldC9ibmEvYm5hX2h3LmgKaW5kZXggODA2YjIyNC4uNmNiODk2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm5hL2JuYV9ody5oCisrKyBiL2RyaXZlcnMvbmV0L2JuYS9ibmFfaHcuaApAQCAtODk3LDcgKzg5Nyw3IEBACiAgKiBDYXRhcHVsdCBSU1MgVGFibGUgQmFzZSBPZmZzZXQgQWRkcmVzcwogICoKICAqIEV4aXN0cyBpbiBSQUQgbWVtb3J5IHNwYWNlLgotICogRWFjaCBlbnRyeSBpcyAzNTIgYml0cywgYnV0IGFsbGlnbmVkIG9uCisgKiBFYWNoIGVudHJ5IGlzIDM1MiBiaXRzLCBidXQgYWxpZ25lZCBvbgogICogNjQgYnl0ZSAoNTEyIGJpdCkgYm91bmRhcnkuIEFjY2Vzc2VkCiAgKiA0IGJ5dGUgd29yZHMsIHRoZSB3aG9sZSBlbnRyeSBjYW4gYmUKICAqIGJyb2tlbiBpbnRvIDExIHdvcmQgYWNjZXNzZXMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeC5oIGIvZHJpdmVycy9uZXQvYm54MngvYm54MnguaAppbmRleCBiN2ZmODdiLi5lMGZjYTcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeC5oCisrKyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4LmgKQEAgLTEyMjAsNyArMTIyMCw3IEBACiAJc3RydWN0IGJueDJ4X2RjYnhfcG9ydF9wYXJhbXMJCWRjYnhfcG9ydF9wYXJhbXM7CiAJaW50CQkJCQlkY2JfdmVyc2lvbjsKIAotCS8qIERDQlggTmVnb3RhdGlvbiByZXN1bHRzICovCisJLyogRENCWCBOZWdvdGlhdGlvbiByZXN1bHRzICovCiAJc3RydWN0IGRjYnhfZmVhdHVyZXMJCQlkY2J4X2xvY2FsX2ZlYXQ7CiAJdTMyCQkJCQlkY2J4X2Vycm9yOwogCXUzMgkJCQkJcGVuZGluZ19tYXg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaCBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2hzaS5oCmluZGV4IGJlNTAzY2MuLmRhYzFiZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2hzaS5oCisrKyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2hzaS5oCkBAIC0zMDE5LDcgKzMwMTksNyBAQAogCiAKIC8qCi0gKiBjb21tb24gZmxhZyB0byBpbmRpY2F0ZSBleGlzdGFuY2Ugb2YgVFBBLgorICogY29tbW9uIGZsYWcgdG8gaW5kaWNhdGUgZXhpc3RlbmNlIG9mIFRQQS4KICAqLwogc3RydWN0IHRzdG9ybV9ldGhfdHBhX2V4aXN0IHsKICNpZiBkZWZpbmVkKF9fQklHX0VORElBTikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2xpbmsuYyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2xpbmsuYwppbmRleCBmMmYzNjdkLi45NzRlZjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9saW5rLmMKKysrIGIvZHJpdmVycy9uZXQvYm54MngvYm54MnhfbGluay5jCkBAIC0yODIzLDcgKzI4MjMsNyBAQAogCQkJCSAgICAgc3RydWN0IGxpbmtfcGFyYW1zICpwYXJhbXMpCiB7CiAJdTE2IGNudCwgY3RybDsKLQkvKiBXYWl0IGZvciBzb2Z0IHJlc2V0IHRvIGdldCBjbGVhcmVkIHVwdG8gMSBzZWMgKi8KKwkvKiBXYWl0IGZvciBzb2Z0IHJlc2V0IHRvIGdldCBjbGVhcmVkIHVwIHRvIDEgc2VjICovCiAJZm9yIChjbnQgPSAwOyBjbnQgPCAxMDAwOyBjbnQrKykgewogCQlibngyeF9jbDQ1X3JlYWQoYnAsIHBoeSwKIAkJCQlNRElPX1BNQV9ERVZBRCwgTURJT19QTUFfUkVHX0NUUkwsICZjdHJsKTsKQEAgLTQxNDEsNyArNDE0MSw3IEBACiAJCQl2YWwgPSAoMTw8NSk7CiAJCQkvKgogCQkJICogTm90ZSB0aGF0IDIuNUcgd29ya3Mgb25seSB3aGVuIHVzZWQgd2l0aCAxRwotCQkJICogYWR2ZXJ0aXNtZW50CisJCQkgKiBhZHZlcnRpc2VtZW50CiAJCQkgKi8KIAkJfSBlbHNlCiAJCQl2YWwgPSAoMTw8NSk7CkBAIC00MTUxLDcgKzQxNTEsNyBAQAogCQkJUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF8xMEcpCiAJCQl2YWwgfD0gKDE8PDcpOwogCi0JCS8qIE5vdGUgdGhhdCAyLjVHIHdvcmtzIG9ubHkgd2hlbiB1c2VkIHdpdGggMUcgYWR2ZXJ0aXNtZW50ICovCisJCS8qIE5vdGUgdGhhdCAyLjVHIHdvcmtzIG9ubHkgd2hlbiB1c2VkIHdpdGggMUcgYWR2ZXJ0aXNlbWVudCAqLwogCQlpZiAocGh5LT5zcGVlZF9jYXBfbWFzayAmCiAJCQkoUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF8xRyB8CiAJCQkgUE9SVF9IV19DRkdfU1BFRURfQ0FQQUJJTElUWV9EMF8yXzVHKSkKQEAgLTUyMzIsMTQgKzUyMzIsMTQgQEAKIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LAogCQkJCSBNRElPX1BNQV9ERVZBRCwgTURJT19QTUFfUkVHX0xBU0lfQ1RSTCwgMSk7CiAJfSBlbHNlIHsKLQkJLyogRm9yY2UgMUdicHMgdXNpbmcgYXV0b25lZyB3aXRoIDFHIGFkdmVydGlzbWVudCAqLworCQkvKiBGb3JjZSAxR2JwcyB1c2luZyBhdXRvbmVnIHdpdGggMUcgYWR2ZXJ0aXNlbWVudCAqLwogCiAJCS8qIEFsbG93IENMMzcgdGhyb3VnaCBDTDczICovCiAJCURQKE5FVElGX01TR19MSU5LLCAiWEdYUyA4NzA2IEF1dG9OZWdcbiIpOwogCQlibngyeF9jbDQ1X3dyaXRlKGJwLCBwaHksCiAJCQkJIE1ESU9fQU5fREVWQUQsIE1ESU9fQU5fUkVHX0NMMzdfQ0w3MywgMHgwNDBjKTsKIAotCQkvKiBFbmFibGUgRnVsbC1EdXBsZXggYWR2ZXJ0aXNtZW50IG9uIENMMzcgKi8KKwkJLyogRW5hYmxlIEZ1bGwtRHVwbGV4IGFkdmVydGlzZW1lbnQgb24gQ0wzNyAqLwogCQlibngyeF9jbDQ1X3dyaXRlKGJwLCBwaHksCiAJCQkJIE1ESU9fQU5fREVWQUQsIE1ESU9fQU5fUkVHX0NMMzdfRkNfTFAsIDB4MDAyMCk7CiAJCS8qIEVuYWJsZSBDTDM3IEFOICovCkBAIC02MjY5LDcgKzYyNjksNyBAQAogCiAJc3dpdGNoIChhY3R1YWxfcGh5X3NlbGVjdGlvbikgewogCWNhc2UgUE9SVF9IV19DRkdfUEhZX1NFTEVDVElPTl9IQVJEV0FSRV9ERUZBVUxUOgotCQkvKiBEbyBub3RoaW5nLiBFc3NlbnRpYWx5IHRoaXMgaXMgbGlrZSB0aGUgcHJpb3JpdHkgY29wcGVyICovCisJCS8qIERvIG5vdGhpbmcuIEVzc2VudGlhbGx5IHRoaXMgaXMgbGlrZSB0aGUgcHJpb3JpdHkgY29wcGVyICovCiAJCWJyZWFrOwogCWNhc2UgUE9SVF9IV19DRkdfUEhZX1NFTEVDVElPTl9GSVJTVF9QSFlfUFJJT1JJVFk6CiAJCXZhbCB8PSBNRElPX0NUTF9SRUdfODQ4MjNfTUVESUFfUFJJT1JJVFlfQ09QUEVSOwpAQCAtNzc2NSw3ICs3NzY1LDcgQEAKIAlSRUdfV1IoYnAsIE5JR19SRUdfTklHX0VNQUMwX0VOICsgcG9ydCo0LCAwKTsKIAogCW1zbGVlcCgxMCk7Ci0JLyogVGhlIFBIWSByZXNldCBpcyBjb250cm9sZWQgYnkgR1BJTyAxCisJLyogVGhlIFBIWSByZXNldCBpcyBjb250cm9sbGVkIGJ5IEdQSU8gMQogCSAqIEhvbGQgaXQgYXMgdmFycyBsb3cKIAkgKi8KIAkgLyogY2xlYXIgbGluayBsZWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X21haW4uYyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X21haW4uYwppbmRleCAzMmU2NGNjOC4uYTk3YTRhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X21haW4uYwpAQCAtMzcwMiw3ICszNzAyLDcgQEAKIAlpZiAoKGh3X2NvbnMgJiBFUV9ERVNDX01BWF9QQUdFKSA9PSBFUV9ERVNDX01BWF9QQUdFKQogCQlod19jb25zKys7CiAKLQkvKiBUaGlzIGZ1bmN0aW9uIG1heSBuZXZlciBydW4gaW4gcGFycmFsZWwgd2l0aCBpdHNlbGYgZm9yIGEKKwkvKiBUaGlzIGZ1bmN0aW9uIG1heSBuZXZlciBydW4gaW4gcGFyYWxsZWwgd2l0aCBpdHNlbGYgZm9yIGEKIAkgKiBzcGVjaWZpYyBicCwgdGh1cyB0aGVyZSBpcyBubyBuZWVkIGluICJwYWlyZWQiIHJlYWQgbWVtb3J5CiAJICogYmFycmllciBoZXJlLgogCSAqLwpAQCAtNTA4OSw3ICs1MDg5LDcgQEAKIAkJLyogU3RlcCAxOiBzZXQgemVyb2VzIHRvIGFsbCBpbHQgcGFnZSBlbnRyaWVzIHdpdGggdmFsaWQgYml0IG9uCiAJCSAqIFN0ZXAgMjogc2V0IHRoZSB0aW1lcnMgZmlyc3QvbGFzdCBpbHQgZW50cnkgdG8gcG9pbnQKIAkJICogdG8gdGhlIGVudGlyZSByYW5nZSB0byBwcmV2ZW50IElMVCByYW5nZSBlcnJvciBmb3IgM3JkLzR0aAotCQkgKiB2bmljCSh0aGlzIGNvZGUgYXNzdW1lcyBleGlzdGFuY2Ugb2YgdGhlIHZuaWMpCisJCSAqIHZuaWMJKHRoaXMgY29kZSBhc3N1bWVzIGV4aXN0ZW5jZSBvZiB0aGUgdm5pYykKIAkJICoKIAkJICogYm90aCBzdGVwcyBwZXJmb3JtZWQgYnkgY2FsbCB0byBibngyeF9pbHRfY2xpZW50X2luaXRfb3AoKQogCQkgKiB3aXRoIGR1bW15IFRNIGNsaWVudApAQCAtODY4NSw3ICs4Njg1LDcgQEAKIAkJCQlFMUhfRlVOQ19NQVggKiBzaXplb2Yoc3RydWN0IGRydl9mdW5jX21iKTsKIAkJLyoKIAkJICogZ2V0IG1mIGNvbmZpZ3VyYXRpb246Ci0JCSAqIDEuIGV4aXN0YW5jZSBvZiBNRiBjb25maWd1cmF0aW9uCisJCSAqIDEuIGV4aXN0ZW5jZSBvZiBNRiBjb25maWd1cmF0aW9uCiAJCSAqIDIuIE1BQyBhZGRyZXNzIG11c3QgYmUgbGVnYWwgKGNoZWNrIG9ubHkgdXBwZXIgYnl0ZXMpCiAJCSAqICAgIGZvciAgU3dpdGNoLUluZGVwZW5kZW50IG1vZGU7CiAJCSAqICAgIE9WTEFOIG11c3QgYmUgbGVnYWwgZm9yIFN3aXRjaC1EZXBlbmRlbnQgbW9kZQpAQCAtODcyNyw3ICs4NzI3LDcgQEAKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVW5rbm93biBjb25maWd1cmF0aW9uOiByZXNldCBtZl9jb25maWcgKi8KIAkJCQlicC0+bWZfY29uZmlnW3ZuXSA9IDA7Ci0JCQkJRFAoTkVUSUZfTVNHX1BST0JFLCAiVW5rb3duIE1GIG1vZGUgMHgleFxuIiwKKwkJCQlEUChORVRJRl9NU0dfUFJPQkUsICJVbmtub3duIE1GIG1vZGUgMHgleFxuIiwKIAkJCQkgICB2YWwpOwogCQkJfQogCQl9CkBAIC05Nzc3LDcgKzk3NzcsNyBAQAogCiAjZW5kaWYKIAotCS8qIENvbmZpZ3VyZSBpbnRlcnVwdCBtb2RlOiB0cnkgdG8gZW5hYmxlIE1TSS1YL01TSSBpZgorCS8qIENvbmZpZ3VyZSBpbnRlcnJ1cHQgbW9kZTogdHJ5IHRvIGVuYWJsZSBNU0ktWC9NU0kgaWYKIAkgKiBuZWVkZWQsIHNldCBicC0+bnVtX3F1ZXVlcyBhcHByb3ByaWF0ZWx5LgogCSAqLwogCWJueDJ4X3NldF9pbnRfbW9kZShicCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaCBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X3JlZy5oCmluZGV4IDFjODlmMTkuLjE1MDlhMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X3JlZy5oCisrKyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X3JlZy5oCkBAIC0xNzUsOSArMTc1LDkgQEAKICAgIHRoZSBpbml0aWFsIGNyZWRpdCB2YWx1ZTsgcmVhZCByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjcmVkaXQKICAgIGNvdW50ZXIuIE11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gMSBhdCBzdGFydC11cC4gKi8KICNkZWZpbmUgQ0NNX1JFR19DRkNfSU5JVF9DUkQJCQkJCSAweGQwMjA0Ci0vKiBbUlcgMl0gQXV4aWxsYXJ5IGNvdW50ZXIgZmxhZyBRIG51bWJlciAxLiAqLworLyogW1JXIDJdIEF1eGlsaWFyeSBjb3VudGVyIGZsYWcgUSBudW1iZXIgMS4gKi8KICNkZWZpbmUgQ0NNX1JFR19DTlRfQVVYMV9RCQkJCQkgMHhkMDBjOAotLyogW1JXIDJdIEF1eGlsbGFyeSBjb3VudGVyIGZsYWcgUSBudW1iZXIgMi4gKi8KKy8qIFtSVyAyXSBBdXhpbGlhcnkgY291bnRlciBmbGFnIFEgbnVtYmVyIDIuICovCiAjZGVmaW5lIENDTV9SRUdfQ05UX0FVWDJfUQkJCQkJIDB4ZDAwY2MKIC8qIFtSVyAyOF0gVGhlIENNIGhlYWRlciB2YWx1ZSBmb3IgUU0gcmVxdWVzdCAocHJpbWFyeSkuICovCiAjZGVmaW5lIENDTV9SRUdfQ1FNX0NDTV9IRFJfUAkJCQkJIDB4ZDAwOGMKQEAgLTQ1NywxMyArNDU3LDEzIEBACiAjZGVmaW5lIENTRE1fUkVHX0FHR19JTlRfTU9ERV85IAkJCQkgMHhjMjFkYwogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY2ZjX3JzcCBsY2lkICovCiAjZGVmaW5lIENTRE1fUkVHX0NGQ19SU1BfU1RBUlRfQUREUgkJCQkgMHhjMjAwOAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzAgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMCAqLwogI2RlZmluZSBDU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgwCQkJCSAweGMyMDFjCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMSAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMxICovCiAjZGVmaW5lIENTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDEJCQkJIDB4YzIwMjAKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMyICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzIgKi8KICNkZWZpbmUgQ1NETV9SRUdfQ01QX0NPVU5URVJfTUFYMgkJCQkgMHhjMjAyNAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzMgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMyAqLwogI2RlZmluZSBDU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgzCQkJCSAweGMyMDI4CiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjb21wbGV0aW9uCiAgICBjb3VudGVycy4gKi8KQEAgLTg1MSw3ICs4NTEsNyBAQAogI2RlZmluZSBJR1VfUkVHX0FUVE5fTVNHX0FERFJfTAkJCQkgMHgxMzAxMjAKIC8qIFtSIDRdIERlYnVnOiBbM10gLSBhdHRlbnRpb24gd3JpdGUgZG9uZSBtZXNzYWdlIGlzIHBlbmRpbmcgKDAtbm8gcGVuZGluZzsKICAqIDEtcGVuZGluZykuIFsyOjBdID0gUEZJRC4gUGVuZGluZyBtZWFucyBhdHRlbnRpb24gbWVzc2FnZSB3YXMgc2VudDsgYnV0Ci0gKiB3cml0ZSBkb25lIGRpZG50IHJlY2VpdmUuICovCisgKiB3cml0ZSBkb25lIGRpZG4ndCByZWNlaXZlLiAqLwogI2RlZmluZSBJR1VfUkVHX0FUVE5fV1JJVEVfRE9ORV9QRU5ESU5HCQkJIDB4MTMwMDMwCiAjZGVmaW5lIElHVV9SRUdfQkxPQ0tfQ09ORklHVVJBVElPTgkJCQkgMHgxMzAwMDAKICNkZWZpbmUgSUdVX1JFR19DT01NQU5EX1JFR18zMkxTQl9EQVRBCQkJCSAweDEzMDEyNApAQCAtODYyLDcgKzg2Miw3IEBACiAjZGVmaW5lIElHVV9SRUdfQ1NUT1JNX1RZUEVfMF9TQl9DTEVBTlVQCQkJIDB4MTMwMjAwCiAvKiBbUiA1XSBEZWJ1ZzogY3RybF9mc20gKi8KICNkZWZpbmUgSUdVX1JFR19DVFJMX0ZTTQkJCQkJIDB4MTMwMDY0Ci0vKiBbUiAxXSBkYXRhIGF2YWlsYmxlIGZvciBlcnJvciBtZW1vcnkuIElmIHRoaXMgYml0IGlzIGNsZWFyIGRvIG5vdCByZWQKKy8qIFtSIDFdIGRhdGEgYXZhaWxhYmxlIGZvciBlcnJvciBtZW1vcnkuIElmIHRoaXMgYml0IGlzIGNsZWFyIGRvIG5vdCByZWQKICAqIGZyb20gZXJyb3JfaGFuZGxpbmdfbWVtb3J5LiAqLwogI2RlZmluZSBJR1VfUkVHX0VSUk9SX0hBTkRMSU5HX0RBVEFfVkFMSUQJCQkgMHgxMzAxMzAKIC8qIFtSVyAxMV0gUGFyaXR5IG1hc2sgcmVnaXN0ZXIgIzAgcmVhZC93cml0ZSAqLwpAQCAtMzAxNSw3ICszMDE1LDcgQEAKICAgIGJsb2NrLiBTaG91bGQgYmUgdXNlZCBmb3IgY2xvc2UgdGhlIGdhdGVzLiAqLwogI2RlZmluZSBQWFBfUkVHX0hTVF9ESVNDQVJEX0RPT1JCRUxMUwkJCQkgMHgxMDMwYTQKIC8qIFtSIDFdIGRlYnVnIG9ubHk6ICcxJyBtZWFucyB0aGlzIFBTV0hTVCBpcyBkaXNjYXJkaW5nIGRvb3JiZWxscy4gVGhpcyBiaXQKLSAgIHNob3VsZCB1cGRhdGUgYWNjb3JpbmcgdG8gJ2hzdF9kaXNjYXJkX2Rvb3JiZWxscycgcmVnaXN0ZXIgd2hlbiB0aGUgc3RhdGUKKyAgIHNob3VsZCB1cGRhdGUgYWNjb3JkaW5nIHRvICdoc3RfZGlzY2FyZF9kb29yYmVsbHMnIHJlZ2lzdGVyIHdoZW4gdGhlIHN0YXRlCiAgICBtYWNoaW5lIGlzIGlkbGUgKi8KICNkZWZpbmUgUFhQX1JFR19IU1RfRElTQ0FSRF9ET09SQkVMTFNfU1RBVFVTCQkJIDB4MTAzMGEwCiAvKiBbUlcgMV0gV2hlbiAxOyBuZXcgaW50ZXJuYWwgd3JpdGVzIGFycml2aW5nIHRvIHRoZSBibG9jayBhcmUgZGlzY2FyZGVkLgpAQCAtMzAyMyw3ICszMDIzLDcgQEAKICNkZWZpbmUgUFhQX1JFR19IU1RfRElTQ0FSRF9JTlRFUk5BTF9XUklURVMJCQkgMHgxMDMwYTgKIC8qIFtSIDZdIGRlYnVnIG9ubHk6IEEgYml0IG1hc2sgZm9yIGFsbCBQU1dIU1QgaW50ZXJuYWwgd3JpdGUgY2xpZW50cy4gJzEnCiAgICBtZWFucyB0aGlzIFBTV0hTVCBpcyBkaXNjYXJkaW5nIGlucHV0cyBmcm9tIHRoaXMgY2xpZW50LiBFYWNoIGJpdCBzaG91bGQKLSAgIHVwZGF0ZSBhY2NvcmluZyB0byAnaHN0X2Rpc2NhcmRfaW50ZXJuYWxfd3JpdGVzJyByZWdpc3RlciB3aGVuIHRoZSBzdGF0ZQorICAgdXBkYXRlIGFjY29yZGluZyB0byAnaHN0X2Rpc2NhcmRfaW50ZXJuYWxfd3JpdGVzJyByZWdpc3RlciB3aGVuIHRoZSBzdGF0ZQogICAgbWFjaGluZSBpcyBpZGxlLiAqLwogI2RlZmluZSBQWFBfUkVHX0hTVF9ESVNDQVJEX0lOVEVSTkFMX1dSSVRFU19TVEFUVVMJCSAweDEwMzA5YwogLyogW1dCIDE2MF0gVXNlZCBmb3IgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGluYm91bmQgaW50ZXJydXB0cyBtZW1vcnkgKi8KQEAgLTM4MjIsMTMgKzM4MjIsMTMgQEAKICNkZWZpbmUgVFNETV9SRUdfQUdHX0lOVF9UXzEJCQkJCSAweDQyMGJjCiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjZmNfcnNwIGxjaWQgKi8KICNkZWZpbmUgVFNETV9SRUdfQ0ZDX1JTUF9TVEFSVF9BRERSCQkJCSAweDQyMDA4Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMCAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMwICovCiAjZGVmaW5lIFRTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDAJCQkJIDB4NDIwMWMKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMxICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzEgKi8KICNkZWZpbmUgVFNETV9SRUdfQ01QX0NPVU5URVJfTUFYMQkJCQkgMHg0MjAyMAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzIgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMiAqLwogI2RlZmluZSBUU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgyCQkJCSAweDQyMDI0Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMyAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMzICovCiAjZGVmaW5lIFRTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDMJCQkJIDB4NDIwMjgKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNvbXBsZXRpb24KICAgIGNvdW50ZXJzLiAqLwpAQCAtNDI4NCwxMyArNDI4NCwxMyBAQAogI2RlZmluZSBVU0RNX1JFR19BR0dfSU5UX1RfNgkJCQkJIDB4YzQwZDAKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNmY19yc3AgbGNpZCAqLwogI2RlZmluZSBVU0RNX1JFR19DRkNfUlNQX1NUQVJUX0FERFIJCQkJIDB4YzQwMDgKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMwICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzAgKi8KICNkZWZpbmUgVVNETV9SRUdfQ01QX0NPVU5URVJfTUFYMAkJCQkgMHhjNDAxYwotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzEgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMSAqLwogI2RlZmluZSBVU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgxCQkJCSAweGM0MDIwCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMiAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMyICovCiAjZGVmaW5lIFVTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDIJCQkJIDB4YzQwMjQKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMzICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzMgKi8KICNkZWZpbmUgVVNETV9SRUdfQ01QX0NPVU5URVJfTUFYMwkJCQkgMHhjNDAyOAogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY29tcGxldGlvbgogICAgY291bnRlcnMuICovCkBAIC00Nzk4LDEzICs0Nzk4LDEzIEBACiAjZGVmaW5lIFhTRE1fUkVHX0FHR19JTlRfTU9ERV8xIAkJCQkgMHgxNjYxYmMKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNmY19yc3AgbGNpZCAqLwogI2RlZmluZSBYU0RNX1JFR19DRkNfUlNQX1NUQVJUX0FERFIJCQkJIDB4MTY2MDA4Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMCAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMwICovCiAjZGVmaW5lIFhTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDAJCQkJIDB4MTY2MDFjCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMSAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMxICovCiAjZGVmaW5lIFhTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDEJCQkJIDB4MTY2MDIwCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMiAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMyICovCiAjZGVmaW5lIFhTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDIJCQkJIDB4MTY2MDI0Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMyAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMzICovCiAjZGVmaW5lIFhTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDMJCQkJIDB4MTY2MDI4CiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjb21wbGV0aW9uCiAgICBjb3VudGVycy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuaCBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuaAppbmRleCAxMThjMjhhLi5iM2JjNzUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmgKKysrIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5oCkBAIC03Niw3ICs3Niw3IEBACiAJCQkJICovCiAJdTMyIHR4X2J5dGVzOwkJLyogRWFjaCBDbGllbnQgYWN1bXVsYXRlcyB0aGUgQnl0ZXNUeCB0aGF0CiAJCQkJICogd2VyZSB0cmFubWl0dGVkIHRvIGl0LCBhbmQgYWZ0ZXIgZWFjaAotCQkJCSAqIENhbGxCYWNrIHRoZSBMb2FkSGlzdG9yeSBpcyBkZXZpZGVkCisJCQkJICogQ2FsbEJhY2sgdGhlIExvYWRIaXN0b3J5IGlzIGRpdmlkZWQKIAkJCQkgKiBieSB0aGUgYmFsYW5jZSBpbnRlcnZhbAogCQkJCSAqLwogCXUzMiBsb2FkX2hpc3Rvcnk7CS8qIFRoaXMgZmllbGQgY29udGFpbnMgdGhlIGFtb3VudCBvZiBCeXRlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NobWNvcmUuYyBiL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zaG1jb3JlLmMKaW5kZXggODA1MTExNi4uNzMxYWExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NobWNvcmUuYworKysgYi9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc2htY29yZS5jCkBAIC01OTEsNyArNTkxLDcgQEAKIAkJCShOUl9UWF9CVUYgKiBUWF9CVUZfU1ogKyBOUl9SWF9CVUYgKiBSWF9CVUZfU1opKSB7CiAKIAkJcHJfd2FybigiRVJST1IsIEFtb3VudCBvZiBhdmFpbGFibGUiCi0JCQkJIiBQaHlzLiBTSE0gY2Fubm90IGFjY29tb2RhdGUgY3VycmVudCBTSE0gIgorCQkJCSIgUGh5cy4gU0hNIGNhbm5vdCBhY2NvbW1vZGF0ZSBjdXJyZW50IFNITSAiCiAJCQkJImRyaXZlciBjb25maWd1cmF0aW9uLCBCYWlsaW5nIG91dCAuLi5cbiIpOwogCQlmcmVlX25ldGRldihwc2htX2Rldi0+cHNobV9uZXRkZXYpOwogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGkuYyBiL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGkuYwppbmRleCAyMGRhMTk5Li41N2U2MzkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpLmMKKysrIGIvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaS5jCkBAIC0zOTcsNyArMzk3LDcgQEAKIAlpbnQgcGt0cyA9IDA7CiAKIAkvKgotCSAqIERlY29tbWl0IHByZXZpb3VzbHkgY29tbWl0ZWQgZnJhbWVzLgorCSAqIERlY29tbWl0IHByZXZpb3VzbHkgY29tbWl0dGVkIGZyYW1lcy4KIAkgKiBza2JfcXVldWVfc3BsaWNlX3RhaWwoJmNmc3BpLT5jaGVhZCwmY2ZzcGktPnFoZWFkKQogCSAqLwogCXdoaWxlIChza2JfcGVlaygmY2ZzcGktPmNoZWFkKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaV9zbGF2ZS5jIGIvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaV9zbGF2ZS5jCmluZGV4IDFiOTk0M2EuLmIwMDllMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGlfc2xhdmUuYworKysgYi9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpX3NsYXZlLmMKQEAgLTk4LDcgKzk4LDcgQEAKIAogCQkJY2ZzcGlfZGJnX3N0YXRlKGNmc3BpLCBDRlNQSV9TVEFURV9GRVRDSF9QS1QpOwogCi0JCQkvKiBDb3B5IGNvbW1pdGVkIFNQSSBmcmFtZXMgYWZ0ZXIgdGhlIFNQSSBpbmRpY2F0aW9uLiAqLworCQkJLyogQ29weSBjb21taXR0ZWQgU1BJIGZyYW1lcyBhZnRlciB0aGUgU1BJIGluZGljYXRpb24uICovCiAJCQlwdHIgPSAodTggKikgY2ZzcGktPnhmZXIudmFfdHg7CiAJCQlwdHIgKz0gU1BJX0lORF9TWjsKIAkJCWxlbiA9IGNmc3BpX3htaXRmcm0oY2ZzcGksIHB0ciwgY2ZzcGktPnR4X2NwY2tfbGVuKTsKQEAgLTE1OCw3ICsxNTgsNyBAQAogCiAJCWNmc3BpX2RiZ19zdGF0ZShjZnNwaSwgQ0ZTUElfU1RBVEVfU0lHX0FDVElWRSk7CiAKLQkJLyogU2lnbmFsIHRoYXQgd2UgYXJlIHJlYWR5IHRvIHJlY2lldmUgZGF0YS4gKi8KKwkJLyogU2lnbmFsIHRoYXQgd2UgYXJlIHJlYWR5IHRvIHJlY2VpdmUgZGF0YS4gKi8KIAkJY2ZzcGktPmRldi0+c2lnX3hmZXIodHJ1ZSwgY2ZzcGktPmRldik7CiAKIAkJY2ZzcGlfZGJnX3N0YXRlKGNmc3BpLCBDRlNQSV9TVEFURV9XQUlUX1hGRVJfRE9ORSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jCmluZGV4IDU3ZDJmZmIuLjc0ZWZiNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jCkBAIC00MTYsNyArNDE2LDcgQEAKIAogCXN0YXRzLT50eF9ieXRlcyArPSBjZi0+Y2FuX2RsYzsKIAotCS8qIF9OT1RFXzogc3Vic3RyYWN0IEFUOTFfTUJfVFhfRklSU1Qgb2Zmc2V0IGZyb20gbWIhICovCisJLyogX05PVEVfOiBzdWJ0cmFjdCBBVDkxX01CX1RYX0ZJUlNUIG9mZnNldCBmcm9tIG1iISAqLwogCWNhbl9wdXRfZWNob19za2Ioc2tiLCBkZXYsIG1iIC0gQVQ5MV9NQl9UWF9GSVJTVCk7CiAKIAkvKgpAQCAtNzgyLDcgKzc4Miw3IEBACiAJCXJlZ19tc3IgPSBhdDkxX3JlYWQocHJpdiwgQVQ5MV9NU1IobWIpKTsKIAkJaWYgKGxpa2VseShyZWdfbXNyICYgQVQ5MV9NU1JfTVJEWSAmJgogCQkJICAgfnJlZ19tc3IgJiBBVDkxX01TUl9NQUJUKSkgewotCQkJLyogX05PVEVfOiBzdWJzdHJhY3QgQVQ5MV9NQl9UWF9GSVJTVCBvZmZzZXQgZnJvbSBtYiEgKi8KKwkJCS8qIF9OT1RFXzogc3VidHJhY3QgQVQ5MV9NQl9UWF9GSVJTVCBvZmZzZXQgZnJvbSBtYiEgKi8KIAkJCWNhbl9nZXRfZWNob19za2IoZGV2LCBtYiAtIEFUOTFfTUJfVFhfRklSU1QpOwogCQkJZGV2LT5zdGF0cy50eF9wYWNrZXRzKys7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuLmMKaW5kZXggMzE1NTI5NS4uN2U1Y2MwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuLmMKQEAgLTgxMyw3ICs4MTMsNyBAQAogCXN0cnVjdCBza19idWZmICpza2I7CiAJc3RydWN0IGNhbl9iZXJyX2NvdW50ZXIgYmVjOwogCi0JLyogcHJvcG9nYXRlIHRoZSBlcnJvciBjb25kaXRpb24gdG8gdGhlIENBTiBzdGFjayAqLworCS8qIHByb3BhZ2F0ZSB0aGUgZXJyb3IgY29uZGl0aW9uIHRvIHRoZSBDQU4gc3RhY2sgKi8KIAlza2IgPSBhbGxvY19jYW5fZXJyX3NrYihkZXYsICZjZik7CiAJaWYgKHVubGlrZWx5KCFza2IpKQogCQlyZXR1cm4gMDsKQEAgLTg4Nyw3ICs4ODcsNyBAQAogCWlmIChsZWNfdHlwZSA9PSBMRUNfVU5VU0VEIHx8IGxlY190eXBlID09IExFQ19OT19FUlJPUikKIAkJcmV0dXJuIDA7CiAKLQkvKiBwcm9wb2dhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgQ0FOIHN0YWNrICovCisJLyogcHJvcGFnYXRlIHRoZSBlcnJvciBjb25kaXRpb24gdG8gdGhlIENBTiBzdGFjayAqLwogCXNrYiA9IGFsbG9jX2Nhbl9lcnJfc2tiKGRldiwgJmNmKTsKIAlpZiAodW5saWtlbHkoIXNrYikpCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYyBiL2RyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmMKaW5kZXggMTAyYjE2Yy4uNTg3ZmJhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYworKysgYi9kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jCkBAIC0yNzQsNyArMjc0LDcgQEAKICAqLwogCiAvKgotICogUmVjaWV2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgSUNBTjMgIm9sZC1zdHlsZSIgZmlybXdhcmUgaW50ZXJmYWNlCisgKiBSZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBJQ0FOMyAib2xkLXN0eWxlIiBmaXJtd2FyZSBpbnRlcmZhY2UKICAqCiAgKiBMT0NLSU5HOiBtdXN0IGhvbGQgbW9kLT5sb2NrCiAgKgpAQCAtMTA1MCw3ICsxMDUwLDcgQEAKIAkJY29tcGxldGUoJm1vZC0+dGVybWluYXRpb25fY29tcCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRldl9lcnIobW9kLT5kZXYsICJyZWNpZXZlZCBhbiB1bmtub3duIGlucXVpcnkgcmVzcG9uc2VcbiIpOworCQlkZXZfZXJyKG1vZC0+ZGV2LCAicmVjZWl2ZWQgYW4gdW5rbm93biBpbnF1aXJ5IHJlc3BvbnNlXG4iKTsKIAkJYnJlYWs7CiAJfQogfQpAQCAtMTA1OCw3ICsxMDU4LDcgQEAKIHN0YXRpYyB2b2lkIGljYW4zX2hhbmRsZV91bmtub3duX21lc3NhZ2Uoc3RydWN0IGljYW4zX2RldiAqbW9kLAogCQkJCQlzdHJ1Y3QgaWNhbjNfbXNnICptc2cpCiB7Ci0JZGV2X3dhcm4obW9kLT5kZXYsICJyZWNpZXZlZCB1bmtub3duIG1lc3NhZ2U6IHNwZWMgMHglLjJ4IGxlbmd0aCAlZFxuIiwKKwlkZXZfd2Fybihtb2QtPmRldiwgInJlY2VpdmVkIHVua25vd24gbWVzc2FnZTogc3BlYyAweCUuMnggbGVuZ3RoICVkXG4iLAogCQkJICAgbXNnLT5zcGVjLCBsZTE2X3RvX2NwdShtc2ctPmxlbikpOwogfQogCkBAIC0xMTEzLDcgKzExMTMsNyBAQAogfQogCiAvKgotICogUmVjaWV2ZSBvbmUgQ0FOIGZyYW1lIGZyb20gdGhlIGhhcmR3YXJlCisgKiBSZWNlaXZlIG9uZSBDQU4gZnJhbWUgZnJvbSB0aGUgaGFyZHdhcmUKICAqCiAgKiBDT05URVhUOiBtdXN0IGJlIGNhbGxlZCBmcm9tIHVzZXIgY29udGV4dAogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jCmluZGV4IDc0Y2Q4ODAuLjkyZmVhYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jCkBAIC0yNDYsNyArMjQ2LDcgQEAKIAkJb3V0X2JlMTYoJnJlZ3MtPnR4LmlkcjNfMiwgY2FuX2lkKTsKIAogCQljYW5faWQgPj49IDE2OwotCQkvKiBFRkZfRkxBR1MgYXJlIGluYmV0d2VlbiB0aGUgSURzIDooICovCisJCS8qIEVGRl9GTEFHUyBhcmUgYmV0d2VlbiB0aGUgSURzIDooICovCiAJCWNhbl9pZCA9IChjYW5faWQgJiAweDcpIHwgKChjYW5faWQgPDwgMikgJiAweGZmZTApCiAJCQkgfCBNU0NBTl9FRkZfRkxBR1M7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYyBiL2RyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYwppbmRleCAwYThkZTAxLi5hMzU4ZWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jCkBAIC00MjUsNyArNDI1LDcgQEAKIAkJCWNmLT5kYXRhWzNdID0gZWNjICYgRUNDX1NFRzsKIAkJCWJyZWFrOwogCQl9Ci0JCS8qIEVycm9yIG9jY3VyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KKwkJLyogRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KIAkJaWYgKChlY2MgJiBFQ0NfRElSKSA9PSAwKQogCQkJY2YtPmRhdGFbMl0gfD0gQ0FOX0VSUl9QUk9UX1RYOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmcuaCBiL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmcuaAppbmRleCA3ZWM5ZjRkLi5hZmQ3ZDg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nLmgKKysrIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZy5oCkBAIC0yMiw3ICsyMiw3IEBACiAJc3RydWN0IHNvZnRpbmcgKmNhcmQ7CiAJc3RydWN0IHsKIAkJaW50IHBlbmRpbmc7Ci0JCS8qIHZhcmlhYmxlcyB3aWNoIGhvbGQgdGhlIGNpcmN1bGFyIGJ1ZmZlciAqLworCQkvKiB2YXJpYWJsZXMgd2hpY2ggaG9sZCB0aGUgY2lyY3VsYXIgYnVmZmVyICovCiAJCWludCBlY2hvX3B1dDsKIAkJaW50IGVjaG9fZ2V0OwogCX0gdHg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYyBiL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jCmluZGV4IGFlZWE5ZjkuLjdhNzA3MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jCkBAIC0yMTgsNyArMjE4LDcgQEAKIAlwdHIgPSBidWY7CiAJY21kID0gKnB0cisrOwogCWlmIChjbWQgPT0gMHhmZikKLQkJLyogbm90IHF1aXRlIHVzZWZ1bGwsIHByb2JhYmx5IHRoZSBjYXJkIGhhcyBnb3Qgb3V0ICovCisJCS8qIG5vdCBxdWl0ZSB1c2VmdWwsIHByb2JhYmx5IHRoZSBjYXJkIGhhcyBnb3Qgb3V0ICovCiAJCXJldHVybiAwOwogCW5ldGRldiA9IGNhcmQtPm5ldFswXTsKIAlpZiAoY21kICYgQ01EX0JVUzIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jIGIvZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYwppbmRleCA0ZDA3ZjFlLi5mN2JiZGU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMKQEAgLTY2Myw3ICs2NjMsNyBAQAogCXN0cnVjdCBjYW5fZnJhbWUgKmNmOwogCXN0cnVjdCBza19idWZmICpza2I7CiAKLQkvKiBwcm9wb2dhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgY2FuIHN0YWNrICovCisJLyogcHJvcGFnYXRlIHRoZSBlcnJvciBjb25kaXRpb24gdG8gdGhlIGNhbiBzdGFjayAqLwogCXNrYiA9IGFsbG9jX2Nhbl9lcnJfc2tiKG5kZXYsICZjZik7CiAJaWYgKCFza2IpIHsKIAkJaWYgKHByaW50a19yYXRlbGltaXQoKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMKaW5kZXggZTc1ZjFhOC4uYTcyYzdiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMKQEAgLTM4Niw3ICszODYsNyBAQAogCQkJYnJlYWs7CiAJCX0KIAotCQkvKiBFcnJvciBvY2N1cmVkIGR1cmluZyB0cmFuc21pc3Npb24/ICovCisJCS8qIEVycm9yIG9jY3VycmVkIGR1cmluZyB0cmFuc21pc3Npb24/ICovCiAJCWlmICgoZWNjICYgU0pBMTAwMF9FQ0NfRElSKSA9PSAwKQogCQkJY2YtPmRhdGFbMl0gfD0gQ0FOX0VSUl9QUk9UX1RYOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IyLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IyLmMKaW5kZXggZGM1M2M4My4uZWI4YjBlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiMi5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYjIuYwpAQCAtMjg0LDcgKzI4NCw3IEBACiAJCQkJYnJlYWs7CiAJCQl9CiAKLQkJCS8qIEVycm9yIG9jY3VyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KKwkJCS8qIEVycm9yIG9jY3VycmVkIGR1cmluZyB0cmFuc21pc3Npb24/ICovCiAJCQlpZiAoIShlY2MgJiBTSkExMDAwX0VDQ19ESVIpKQogCQkJCWNmLT5kYXRhWzJdIHw9IENBTl9FUlJfUFJPVF9UWDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2Fzc2luaS5jIGIvZHJpdmVycy9uZXQvY2Fzc2luaS5jCmluZGV4IDM0Mzc2MTMuLjE0M2EyOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhc3NpbmkuYworKysgYi9kcml2ZXJzL25ldC9jYXNzaW5pLmMKQEAgLTUxLDcgKzUxLDcgQEAKICAqIFRYIGhhcyA0IHF1ZXVlcy4gY3VycmVudGx5IHRoZXNlIHF1ZXVlcyBhcmUgdXNlZCBpbiBhIHJvdW5kLXJvYmluCiAgKiBmYXNoaW9uIGZvciBsb2FkIGJhbGFuY2luZy4gVGhleSBjYW4gYWxzbyBiZSB1c2VkIGZvciBRb1MuIGZvciB0aGF0CiAgKiB0byB3b3JrLCBob3dldmVyLCBRb1MgaW5mb3JtYXRpb24gbmVlZHMgdG8gYmUgZXhwb3NlZCBkb3duIHRvIHRoZSBkcml2ZXIKLSAqIGxldmVsIHNvIHRoYXQgc3VicXVldWVzIGdldCB0YXJnZXR0ZWQgdG8gcGFydGljdWxhciB0cmFuc21pdCByaW5ncy4KKyAqIGxldmVsIHNvIHRoYXQgc3VicXVldWVzIGdldCB0YXJnZXRlZCB0byBwYXJ0aWN1bGFyIHRyYW5zbWl0IHJpbmdzLgogICogYWx0ZXJuYXRpdmVseSwgdGhlIHF1ZXVlcyBjYW4gYmUgY29uZmlndXJlZCB2aWEgdXNlIG9mIHRoZSBhbGwtcHVycG9zZQogICogaW9jdGwuCiAgKgpAQCAtNTE2NSw3ICs1MTY1LDcgQEAKIAlwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpOwogCiBlcnJfd3JpdGVfY2FjaGVsaW5lOgotCS8qIFRyeSB0byByZXN0b3JlIGl0IGluIGNhc2UgdGhlIGVycm9yIG9jY3VyZWQgYWZ0ZXIgd2UKKwkvKiBUcnkgdG8gcmVzdG9yZSBpdCBpbiBjYXNlIHRoZSBlcnJvciBvY2N1cnJlZCBhZnRlciB3ZQogCSAqIHNldCBpdC4KIAkgKi8KIAlwY2lfd3JpdGVfY29uZmlnX2J5dGUocGRldiwgUENJX0NBQ0hFX0xJTkVfU0laRSwgb3JpZ19jYWNoZWxpbmVfc2l6ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYXNzaW5pLmggYi9kcml2ZXJzL25ldC9jYXNzaW5pLmgKaW5kZXggZmFmNDc0Ni4uYjM2MTQyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2Fzc2luaS5oCisrKyBiL2RyaXZlcnMvbmV0L2Nhc3NpbmkuaApAQCAtNzcyLDcgKzc3Miw3IEBACiAjZGVmaW5lICAgIFJYX0RFQlVHX0lOVFJfV1JJVEVfUFRSX01BU0sgICAgMHhDMDAwMDAwMCAvKiBpbnRlcnJ1cHQgd3JpdGUgcG9pbnRlcgogCQkJCQkJCSBvZiB0aGUgaW50ZXJydXB0IHF1ZXVlICovCiAKLS8qIGZsb3cgY29udHJvbCBmcmFtZXMgYXJlIGVtbWl0dGVkIHVzaW5nIHR3byBQQVVTRSB0aHJlc2hvbGRzOgorLyogZmxvdyBjb250cm9sIGZyYW1lcyBhcmUgZW1pdHRlZCB1c2luZyB0d28gUEFVU0UgdGhyZXNob2xkczoKICAqIFhPRkYgUEFVU0UgdXNlcyBwYXVzZSB0aW1lIHZhbHVlIHByZS1wcm9ncmFtbWVkIGluIHRoZSBTZW5kIFBBVVNFIE1BQyByZWcKICAqIFhPTiBQQVVTRSB1c2VzIGEgcGF1c2UgdGltZSBvZiAwLiBncmFudWxhcml0eSBvZiB0aHJlc2hvbGQgaXMgNjRieXRlcy4KICAqIFBBVVNFIHRocmVzaG9sZHMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBGSUZPIG9jY3VwYW5jeSBhbmQgbWF5IGJlIHRyYW5zbGF0ZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vbXY4OGUxeHh4LmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL212ODhlMXh4eC5jCmluZGV4IDgwOTA0N2EuLjcxMDE4YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vbXY4OGUxeHh4LmMKKysrIGIvZHJpdmVycy9uZXQvY2hlbHNpby9tdjg4ZTF4eHguYwpAQCAtNDEsNyArNDEsNyBAQAogICoKICAqIFBBUkFNUzogY3BoeSAgICAgLSBQb2ludGVyIHRvIFBIWSBpbnN0YW5jZSBkYXRhLgogICoKLSAqIFJFVFVSTjogIDAgLSBTdWNjZXNzZnVsbCByZXNldC4KKyAqIFJFVFVSTjogIDAgLSBTdWNjZXNzZnVsIHJlc2V0LgogICogICAgICAgICAtMSAtIFRpbWVvdXQuCiAgKi8KIHN0YXRpYyBpbnQgbXY4OGUxeHh4X3Jlc2V0KHN0cnVjdCBjcGh5ICpjcGh5LCBpbnQgd2FpdCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vcG0zMzkzLmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3BtMzM5My5jCmluZGV4IDdkYmIxNmQuLjQwYzdiOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vcG0zMzkzLmMKKysrIGIvZHJpdmVycy9uZXQvY2hlbHNpby9wbTMzOTMuYwpAQCAtMjkzLDcgKzI5Myw3IEBACiAJcG0zMzkzX2VuYWJsZShjbWFjLCB3aGljaCk7CiAKIAkvKgotCSAqIFhYWCBUaGlzIHNob3VsZCBiZSBkb25lIGJ5IHRoZSBQSFkgYW5kIHByZWZlcnJhYmx5IG5vdCBhdCBhbGwuCisJICogWFhYIFRoaXMgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIFBIWSBhbmQgcHJlZmVyYWJseSBub3QgYXQgYWxsLgogCSAqIFRoZSBQSFkgZG9lc24ndCBnaXZlIHVzIGxpbmsgc3RhdHVzIGluZGljYXRpb24gb24gaXRzIG93biBzbyBoYXZlCiAJICogdGhlIGxpbmsgbWFuYWdlbWVudCBjb2RlIHF1ZXJ5IGl0IGluc3RlYWQuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jaGVsc2lvL3NnZS5jIGIvZHJpdmVycy9uZXQvY2hlbHNpby9zZ2UuYwppbmRleCBmNzc4YjE1Li44NzU0ZDQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jaGVsc2lvL3NnZS5jCisrKyBiL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMKQEAgLTE2NjIsNyArMTY2Miw3IEBACiAgKiBUaGUgY29kZSBmaWd1cmVzIG91dCBob3cgbWFueSBlbnRyaWVzIHRoZSBza19idWZmIHdpbGwgcmVxdWlyZSBpbiB0aGUKICAqIGNtZFEgYW5kIHVwZGF0ZXMgdGhlIGNtZFEgZGF0YSBzdHJ1Y3R1cmUgd2l0aCB0aGUgc3RhdGUgb25jZSB0aGUgZW5xdWV1ZQogICogaGFzIGNvbXBsZXRlLiBUaGVuLCBpdCBkb2Vzbid0IGFjY2VzcyB0aGUgZ2xvYmFsIHN0cnVjdHVyZSBhbnltb3JlLCBidXQKLSAqIHVzZXMgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIG9uIHRoZSBzdGFjay4gSW4gY29uanVjdGlvbiB3aXRoIGEgc3BpbmxvY2sKKyAqIHVzZXMgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIG9uIHRoZSBzdGFjay4gSW4gY29uanVuY3Rpb24gd2l0aCBhIHNwaW5sb2NrCiAgKiBhcm91bmQgdGhhdCBjb2RlLCB3ZSBjYW4gbWFrZSB0aGUgZnVuY3Rpb24gcmVlbnRyYW50IHdpdGhvdXQgaG9sZGluZyB0aGUKICAqIGxvY2sgd2hlbiB3ZSBhY3R1YWxseSBlbnF1ZXVlICh3aGljaCBtaWdodCBiZSBleHBlbnNpdmUsIGVzcGVjaWFsbHkgb24KICAqIGFyY2hpdGVjdHVyZXMgd2l0aCBJTyBNTVVzKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vdnNjNzMyNi5jIGIvZHJpdmVycy9uZXQvY2hlbHNpby92c2M3MzI2LmMKaW5kZXggMTA2YTU5MC4uYjBjYjM4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2hlbHNpby92c2M3MzI2LmMKKysrIGIvZHJpdmVycy9uZXQvY2hlbHNpby92c2M3MzI2LmMKQEAgLTU2Niw3ICs1NjYsNyBAQAogCWZvciAoaSA9IDA7IGkgPD0gMHgzYTsgKytpKQogCQl2c2Nfd3JpdGUobWFjLT5hZGFwdGVyLCBDUkEoNCwgcG9ydCwgaSksIDApOwogCi0JLyogQ2xlYXIgc29md2FyZSBjb3VudGVycyAqLworCS8qIENsZWFyIHNvZnR3YXJlIGNvdW50ZXJzICovCiAJbWVtc2V0KCZtYWMtPnN0YXRzLCAwLCBzaXplb2Yoc3RydWN0IGNtYWNfc3RhdGlzdGljcykpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jcmlzL2V0aF92MTAuYyBiL2RyaXZlcnMvbmV0L2NyaXMvZXRoX3YxMC5jCmluZGV4IDgwYzJmZWUuLjlkMjY3ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NyaXMvZXRoX3YxMC5jCisrKyBiL2RyaXZlcnMvbmV0L2NyaXMvZXRoX3YxMC5jCkBAIC0xMzgzLDcgKzEzODMsNyBAQAogCXNwaW5fbG9jaygmbnAtPmxvY2spOyAvKiBQcmVlbXB0IHByb3RlY3Rpb24gKi8KIAlzd2l0Y2ggKGNtZCkgewogCQkvKiBUaGUgaW9jdGxzIGJlbG93IHNob3VsZCBiZSBjb25zaWRlcmVkIG9ic29sZXRlIGJ1dCBhcmUgKi8KLQkJLyogc3RpbGwgcHJlc2VudCBmb3IgY29tcGF0YWJpbGl0eSB3aXRoIG9sZCBzY3JpcHRzL2FwcHMgICovCisJCS8qIHN0aWxsIHByZXNlbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgc2NyaXB0cy9hcHBzICAqLwogCQljYXNlIFNFVF9FVEhfU1BFRURfMTA6ICAgICAgICAgICAgICAgICAgLyogMTAgTWJwcyAqLwogCQkJZTEwMF9zZXRfc3BlZWQoZGV2LCAxMCk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2N4Z2IzL3NnZS5jIGIvZHJpdmVycy9uZXQvY3hnYjMvc2dlLmMKaW5kZXggZjlmNjY0NS4uYmZhMmQ1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY3hnYjMvc2dlLmMKKysrIGIvZHJpdmVycy9uZXQvY3hnYjMvc2dlLmMKQEAgLTE5OSw3ICsxOTksNyBAQAogICoJbmVlZF9za2JfdW5tYXAgLSBkb2VzIHRoZSBwbGF0Zm9ybSBuZWVkIHVubWFwcGluZyBvZiBza19idWZmcz8KICAqCiAgKglSZXR1cm5zIHRydWUgaWYgdGhlIHBsYXRmb3JtIG5lZWRzIHNrX2J1ZmYgdW5tYXBwaW5nLiAgVGhlIGNvbXBpbGVyCi0gKglvcHRpbWl6ZXMgYXdheSB1bmVjZXNzYXJ5IGNvZGUgaWYgdGhpcyByZXR1cm5zIHRydWUuCisgKglvcHRpbWl6ZXMgYXdheSB1bm5lY2Vzc2FyeSBjb2RlIGlmIHRoaXMgcmV0dXJucyB0cnVlLgogICovCiBzdGF0aWMgaW5saW5lIGludCBuZWVkX3NrYl91bm1hcCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3hnYjMvdDNfaHcuYyBiL2RyaXZlcnMvbmV0L2N4Z2IzL3QzX2h3LmMKaW5kZXggZDU1ZGI2Yi4uYzY4ODQyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY3hnYjMvdDNfaHcuYworKysgYi9kcml2ZXJzL25ldC9jeGdiMy90M19ody5jCkBAIC0xMzg2LDExICsxMzg2LDExIEBACiAgKglAcmVnOiB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciB0byBwcm9jZXNzCiAgKglAbWFzazogYSBtYXNrIHRvIGFwcGx5IHRvIHRoZSBpbnRlcnJ1cHQgc3RhdHVzCiAgKglAYWN0czogdGFibGUgb2YgaW50ZXJydXB0IGFjdGlvbnMKLSAqCUBzdGF0czogc3RhdGlzdGljcyBjb3VudGVycyB0cmFja2luZyBpbnRlcnJ1cHQgb2NjdXJlbmNlcworICoJQHN0YXRzOiBzdGF0aXN0aWNzIGNvdW50ZXJzIHRyYWNraW5nIGludGVycnVwdCBvY2N1cnJlbmNlcwogICoKICAqCUEgdGFibGUgZHJpdmVuIGludGVycnVwdCBoYW5kbGVyIHRoYXQgYXBwbGllcyBhIHNldCBvZiBtYXNrcyB0byBhbgogICoJaW50ZXJydXB0IHN0YXR1cyB3b3JkIGFuZCBwZXJmb3JtcyB0aGUgY29ycmVzcG9uZGluZyBhY3Rpb25zIGlmIHRoZQotICoJaW50ZXJydXB0cyBkZXNjcmliZWQgYnkgdGhlIG1hc2sgaGF2ZSBvY2N1cmVkLiAgVGhlIGFjdGlvbnMgaW5jbHVkZQorICoJaW50ZXJydXB0cyBkZXNjcmliZWQgYnkgdGhlIG1hc2sgaGF2ZSBvY2N1cnJlZC4gIFRoZSBhY3Rpb25zIGluY2x1ZGUKICAqCW9wdGlvbmFsbHkgcHJpbnRpbmcgYSB3YXJuaW5nIG9yIGFsZXJ0IG1lc3NhZ2UsIGFuZCBvcHRpb25hbGx5CiAgKglpbmNyZW1lbnRpbmcgYSBzdGF0IGNvdW50ZXIuICBUaGUgdGFibGUgaXMgdGVybWluYXRlZCBieSBhbiBlbnRyeQogICoJc3BlY2lmeWluZyBtYXNrIDAuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZmF0YWwgaW50ZXJydXB0IGNvbmRpdGlvbnMuCkBAIC0yNzgzLDcgKzI3ODMsNyBAQAogewogCS8qCiAJICogU2VlIGRyYWZ0LW1hdGhpcy1wbHBtdHVkLTAwLnR4dCBmb3IgdGhlIHZhbHVlcy4gIFRoZSBtaW4gaXMgODggc28KLQkgKiBpdCBjYW4gYWNjb21vZGF0ZSBtYXggc2l6ZSBUQ1AvSVAgaGVhZGVycyB3aGVuIFNBQ0sgYW5kIHRpbWVzdGFtcHMKKwkgKiBpdCBjYW4gYWNjb21tb2RhdGUgbWF4IHNpemUgVENQL0lQIGhlYWRlcnMgd2hlbiBTQUNLIGFuZCB0aW1lc3RhbXBzCiAJICogYXJlIGVuYWJsZWQgYW5kIHN0aWxsIGhhdmUgYXQgbGVhc3QgOCBieXRlcyBvZiBwYXlsb2FkLgogCSAqLwogCW10dXNbMF0gPSA4ODsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2N4Z2I0L3Q0X2h3LmMgYi9kcml2ZXJzL25ldC9jeGdiNC90NF9ody5jCmluZGV4IGI5ZmQ4YTYuLmQxZWMxMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2N4Z2I0L3Q0X2h3LmMKKysrIGIvZHJpdmVycy9uZXQvY3hnYjQvdDRfaHcuYwpAQCAtODgzLDcgKzg4Myw3IEBACiAgKgogICoJQSB0YWJsZSBkcml2ZW4gaW50ZXJydXB0IGhhbmRsZXIgdGhhdCBhcHBsaWVzIGEgc2V0IG9mIG1hc2tzIHRvIGFuCiAgKglpbnRlcnJ1cHQgc3RhdHVzIHdvcmQgYW5kIHBlcmZvcm1zIHRoZSBjb3JyZXNwb25kaW5nIGFjdGlvbnMgaWYgdGhlCi0gKglpbnRlcnJ1cHRzIGRlc2NyaWJlZCBieSB0aGUgbWFzayBoYXZlIG9jY3VyZWQuICBUaGUgYWN0aW9ucyBpbmNsdWRlCisgKglpbnRlcnJ1cHRzIGRlc2NyaWJlZCBieSB0aGUgbWFzayBoYXZlIG9jY3VycmVkLiAgVGhlIGFjdGlvbnMgaW5jbHVkZQogICoJb3B0aW9uYWxseSBlbWl0dGluZyBhIHdhcm5pbmcgb3IgYWxlcnQgbWVzc2FnZS4gIFRoZSB0YWJsZSBpcyB0ZXJtaW5hdGVkCiAgKglieSBhbiBlbnRyeSBzcGVjaWZ5aW5nIG1hc2sgMC4gIFJldHVybnMgdGhlIG51bWJlciBvZiBmYXRhbCBpbnRlcnJ1cHQKICAqCWNvbmRpdGlvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvY3hnYjR2Zi9jeGdiNHZmX21haW4uYwppbmRleCA2YWFkNjRkLi40NjYxY2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMKQEAgLTI3MzgsNyArMjczOCw3IEBACiAJY2ZnX3F1ZXVlcyhhZGFwdGVyKTsKIAogCS8qCi0JICogUHJpbnQgYSBzaG9ydCBub3RpY2Ugb24gdGhlIGV4aXN0YW5jZSBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgbmV3CisJICogUHJpbnQgYSBzaG9ydCBub3RpY2Ugb24gdGhlIGV4aXN0ZW5jZSBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgbmV3CiAJICogVkYgbmV0d29yayBkZXZpY2UgLi4uCiAJICovCiAJZm9yX2VhY2hfcG9ydChhZGFwdGVyLCBwaWR4KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jeGdiNHZmL3NnZS5jIGIvZHJpdmVycy9uZXQvY3hnYjR2Zi9zZ2UuYwppbmRleCBlMGIzZDFiLi5iYjY1MTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiNHZmL3NnZS5jCisrKyBiL2RyaXZlcnMvbmV0L2N4Z2I0dmYvc2dlLmMKQEAgLTIyNCw4ICsyMjQsOCBAQAogLyoqCiAgKgluZWVkX3NrYl91bm1hcCAtIGRvZXMgdGhlIHBsYXRmb3JtIG5lZWQgdW5tYXBwaW5nIG9mIHNrX2J1ZmZzPwogICoKLSAqCVJldHVybnMgdHJ1ZSBpZiB0aGUgcGxhdGZyb20gbmVlZHMgc2tfYnVmZiB1bm1hcHBpbmcuICBUaGUgY29tcGlsZXIKLSAqCW9wdGltaXplcyBhd2F5IHVuZWNlc3NhcnkgY29kZSBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KKyAqCVJldHVybnMgdHJ1ZSBpZiB0aGUgcGxhdGZvcm0gbmVlZHMgc2tfYnVmZiB1bm1hcHBpbmcuICBUaGUgY29tcGlsZXIKKyAqCW9wdGltaXplcyBhd2F5IHVubmVjZXNzYXJ5IGNvZGUgaWYgdGhpcyByZXR1cm5zIHRydWUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IG5lZWRfc2tiX3VubWFwKHZvaWQpCiB7CkBAIC0yNjcsNyArMjY3LDcgQEAKICAqCiAgKglUZXN0cyBzcGVjaWZpZWQgRnJlZSBMaXN0IHRvIHNlZSB3aGV0aGVyIHRoZSBudW1iZXIgb2YgYnVmZmVycwogICoJYXZhaWxhYmxlIHRvIHRoZSBoYXJkd2FyZSBoYXMgZmFsbGVkIGJlbG93IG91ciAic3RhcnZhdGlvbiIKLSAqCXRocmVzaGhvbGQuCisgKgl0aHJlc2hvbGQuCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBmbF9zdGFydmluZyhjb25zdCBzdHJ1Y3Qgc2dlX2ZsICpmbCkKIHsKQEAgLTExNDksNyArMTE0OSw3IEBACiAJaWYgKHVubGlrZWx5KGNyZWRpdHMgPCBFVEhUWFFfU1RPUF9USFJFUykpIHsKIAkJLyoKIAkJICogQWZ0ZXIgd2UncmUgZG9uZSBpbmplY3RpbmcgdGhlIFdvcmsgUmVxdWVzdCBmb3IgdGhpcwotCQkgKiBwYWNrZXQsIHdlJ2xsIGJlIGJlbG93IG91ciAic3RvcCB0aHJlc2hob2xkIiBzbyBzdG9wIHRoZSBUWAorCQkgKiBwYWNrZXQsIHdlJ2xsIGJlIGJlbG93IG91ciAic3RvcCB0aHJlc2hvbGQiIHNvIHN0b3AgdGhlIFRYCiAJCSAqIFF1ZXVlIG5vdyBhbmQgc2NoZWR1bGUgYSByZXF1ZXN0IGZvciBhbiBTR0UgRWdyZXNzIFF1ZXVlCiAJCSAqIFVwZGF0ZSBtZXNzYWdlLiAgVGhlIHF1ZXVlIHdpbGwgZ2V0IHN0YXJ0ZWQgbGF0ZXIgb24gd2hlbgogCQkgKiB0aGUgZmlybXdhcmUgcHJvY2Vzc2VzIHRoaXMgV29yayBSZXF1ZXN0IGFuZCBzZW5kcyB1cyBhbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZGF2aW5jaV9lbWFjLmMgYi9kcml2ZXJzL25ldC9kYXZpbmNpX2VtYWMuYwppbmRleCBiYWNhNmJmLi44MDdiNmJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kYXZpbmNpX2VtYWMuYworKysgYi9kcml2ZXJzL25ldC9kYXZpbmNpX2VtYWMuYwpAQCAtOTQsMTQgKzk0LDE0IEBACiBzdGF0aWMgY29uc3QgY2hhciBlbWFjX3ZlcnNpb25fc3RyaW5nW10gPSAiVEkgRGFWaW5jaSBFTUFDIExpbnV4IHY2LjEiOwogCiAvKiBDb25maWd1cmF0aW9uIGl0ZW1zICovCi0jZGVmaW5lIEVNQUNfREVGX1BBU1NfQ1JDCQkoMCkgLyogRG8gbm90IHBhc3MgQ1JDIHVwdG8gZnJhbWVzICovCisjZGVmaW5lIEVNQUNfREVGX1BBU1NfQ1JDCQkoMCkgLyogRG8gbm90IHBhc3MgQ1JDIHVwIHRvIGZyYW1lcyAqLwogI2RlZmluZSBFTUFDX0RFRl9RT1NfRU4JCQkoMCkgLyogRU1BQyBwcm9wcmlldGFyeSBRb1MgZGlzYWJsZWQgKi8KICNkZWZpbmUgRU1BQ19ERUZfTk9fQlVGRl9DSEFJTgkJKDApIC8qIE5vIGJ1ZmZlciBjaGFpbiAqLwogI2RlZmluZSBFTUFDX0RFRl9NQUNDVFJMX0ZSQU1FX0VOCSgwKSAvKiBEaXNjYXJkIE1hY2NvbnRyb2wgZnJhbWVzICovCiAjZGVmaW5lIEVNQUNfREVGX1NIT1JUX0ZSQU1FX0VOCQkoMCkgLyogRGlzY2FyZCBzaG9ydCBmcmFtZXMgKi8KICNkZWZpbmUgRU1BQ19ERUZfRVJST1JfRlJBTUVfRU4JCSgwKSAvKiBEaXNjYXJkIGVycm9yIGZyYW1lcyAqLwotI2RlZmluZSBFTUFDX0RFRl9QUk9NX0VOCQkoMCkgLyogUHJvbWlzY291cyBkaXNhYmxlZCAqLwotI2RlZmluZSBFTUFDX0RFRl9QUk9NX0NICQkoMCkgLyogUHJvbWlzY291cyBjaGFubmVsIGlzIDAgKi8KKyNkZWZpbmUgRU1BQ19ERUZfUFJPTV9FTgkJKDApIC8qIFByb21pc2N1b3VzIGRpc2FibGVkICovCisjZGVmaW5lIEVNQUNfREVGX1BST01fQ0gJCSgwKSAvKiBQcm9taXNjdW91cyBjaGFubmVsIGlzIDAgKi8KICNkZWZpbmUgRU1BQ19ERUZfQkNBU1RfRU4JCSgxKSAvKiBCcm9hZGNhc3QgZW5hYmxlZCAqLwogI2RlZmluZSBFTUFDX0RFRl9CQ0FTVF9DSAkJKDApIC8qIEJyb2FkY2FzdCBjaGFubmVsIGlzIDAgKi8KICNkZWZpbmUgRU1BQ19ERUZfTUNBU1RfRU4JCSgxKSAvKiBNdWx0aWNhc3QgZW5hYmxlZCAqLwpAQCAtMTAxMyw3ICsxMDEzLDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIHJlY3ljbGUgb24gcmVjaWV2ZSBlcnJvciAqLworCS8qIHJlY3ljbGUgb24gcmVjZWl2ZSBlcnJvciAqLwogCWlmIChzdGF0dXMgPCAwKSB7CiAJCW5kZXYtPnN0YXRzLnJ4X2Vycm9ycysrOwogCQlnb3RvIHJlY3ljbGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGh0b29sLmMKaW5kZXggZjRkMDkyMi4uZGQ3MDczOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRodG9vbC5jCisrKyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wuYwpAQCAtMTYwLDcgKzE2MCw3IEBACiAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkYXB0ZXItPmxpbmtfZHVwbGV4KTsKIAkJZWNtZC0+c3BlZWQgPSBhZGFwdGVyLT5saW5rX3NwZWVkOwogCi0JCS8qIHVuZm9ydHVuYXRseSBGVUxMX0RVUExFWCAhPSBEVVBMRVhfRlVMTAorCQkvKiB1bmZvcnR1bmF0ZWx5IEZVTExfRFVQTEVYICE9IERVUExFWF9GVUxMCiAJCSAqICAgICAgICAgIGFuZCBIQUxGX0RVUExFWCAhPSBEVVBMRVhfSEFMRiAqLwogCiAJCWlmIChhZGFwdGVyLT5saW5rX2R1cGxleCA9PSBGVUxMX0RVUExFWCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2h3LmggYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ody5oCmluZGV4IGM3MGIyM2QuLjVjOWE4NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2h3LmgKKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfaHcuaApAQCAtMTAyNiw3ICsxMDI2LDcgQEAKIAogI2RlZmluZSBFMTAwMF9LVU1DVFJMU1RBIDB4MDAwMzQJLyogTUFDLVBIWSBpbnRlcmZhY2UgLSBSVyAqLwogI2RlZmluZSBFMTAwMF9NRFBIWUEgICAgIDB4MDAwM0MJLyogUEhZIGFkZHJlc3MgLSBSVyAqLwotI2RlZmluZSBFMTAwMF9NQU5DMkggICAgIDB4MDU4NjAJLyogTWFuYWdtZW50IENvbnRyb2wgVG8gSG9zdCAtIFJXICovCisjZGVmaW5lIEUxMDAwX01BTkMySCAgICAgMHgwNTg2MAkvKiBNYW5hZ2VtZW50IENvbnRyb2wgVG8gSG9zdCAtIFJXICovCiAjZGVmaW5lIEUxMDAwX1NXX0ZXX1NZTkMgMHgwNUI1QwkvKiBTb2Z0d2FyZS1GaXJtd2FyZSBTeW5jaHJvbml6YXRpb24gLSBSVyAqLwogCiAjZGVmaW5lIEUxMDAwX0dDUiAgICAgICAweDA1QjAwCS8qIFBDSS1FeCBDb250cm9sICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMgYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMKaW5kZXggYmZhYjE0MC4uNDc3ZTA2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYwpAQCAtMjA1LDcgKzIwNSw3IEBACiAJLnByb2JlICAgID0gZTEwMDBfcHJvYmUsCiAJLnJlbW92ZSAgID0gX19kZXZleGl0X3AoZTEwMDBfcmVtb3ZlKSwKICNpZmRlZiBDT05GSUdfUE0KLQkvKiBQb3dlciBNYW5hZ21lbnQgSG9va3MgKi8KKwkvKiBQb3dlciBNYW5hZ2VtZW50IEhvb2tzICovCiAJLnN1c3BlbmQgID0gZTEwMDBfc3VzcGVuZCwKIAkucmVzdW1lICAgPSBlMTAwMF9yZXN1bWUsCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwZS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2UxMDAwZS9uZXRkZXYuYwppbmRleCBhMzlkNGE0Li41MDZhMGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lMTAwMGUvbmV0ZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvZTEwMDBlL25ldGRldi5jCkBAIC00ODg2LDcgKzQ4ODYsNyBAQAogCWlmIChza2ItPnByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSkKIAkJdHhfZmxhZ3MgfD0gRTEwMDBfVFhfRkxBR1NfSVBWNDsKIAotCS8qIGlmIGNvdW50IGlzIDAgdGhlbiBtYXBwaW5nIGVycm9yIGhhcyBvY2N1cmVkICovCisJLyogaWYgY291bnQgaXMgMCB0aGVuIG1hcHBpbmcgZXJyb3IgaGFzIG9jY3VycmVkICovCiAJY291bnQgPSBlMTAwMF90eF9tYXAoYWRhcHRlciwgc2tiLCBmaXJzdCwgbWF4X3Blcl90eGQsIG5yX2ZyYWdzLCBtc3MpOwogCWlmIChjb3VudCkgewogCQllMTAwMF90eF9xdWV1ZShhZGFwdGVyLCB0eF9mbGFncywgY291bnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZW5jMjhqNjBfaHcuaCBiL2RyaXZlcnMvbmV0L2VuYzI4ajYwX2h3LmgKaW5kZXggMWEwYjIwOS4uMjViNDFkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZW5jMjhqNjBfaHcuaAorKysgYi9kcml2ZXJzL25ldC9lbmMyOGo2MF9ody5oCkBAIC0zMDMsNyArMzAzLDcgQEAKIC8qIG1heGltdW0gZXRoZXJuZXQgZnJhbWUgbGVuZ3RoICovCiAjZGVmaW5lIE1BWF9GUkFNRUxFTgkJMTUxOAogCi0vKiBQcmVmZXJlZCBoYWxmIGR1cGxleDogTEVEQTogTGluayBzdGF0dXMgTEVEQjogUngvVHggYWN0aXZpdHkgKi8KKy8qIFByZWZlcnJlZCBoYWxmIGR1cGxleDogTEVEQTogTGluayBzdGF0dXMgTEVEQjogUngvVHggYWN0aXZpdHkgKi8KICNkZWZpbmUgRU5DMjhKNjBfTEFNUFNfTU9ERQkweDM0NzYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGgxNmkuYyBiL2RyaXZlcnMvbmV0L2V0aDE2aS5jCmluZGV4IGZiNzE3YmUuLjEyZDI4ZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aDE2aS5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aDE2aS5jCkBAIC0xMyw3ICsxMyw3IEBACiAgICBUaGlzIGRyaXZlciBzdXBwb3J0cyBmb2xsb3dpbmcgY2FyZHMgOgogCS0gSUNMIEV0aGVyVGVhbSAxNmkKIAktIElDTCBFdGhlclRlYW0gMzIgRUlTQQotCSAgKFVzZXMgdHJ1ZSAzMiBiaXQgdHJhbnNmZXJzIHJhdGhlciB0aGFuIDE2aSBjb21wYWJpbGl0eSBtb2RlKQorCSAgKFVzZXMgdHJ1ZSAzMiBiaXQgdHJhbnNmZXJzIHJhdGhlciB0aGFuIDE2aSBjb21wYXRpYmlsaXR5IG1vZGUpCiAKICAgIEV4YW1wbGUgTW9kdWxlIHVzYWdlOgogICAgICAgICBpbnNtb2QgZXRoMTZpLm8gaW89MHgyYTAgbWVkaWF0eXBlPWJuYwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRob2MuYyBiL2RyaXZlcnMvbmV0L2V0aG9jLmMKaW5kZXggZGIwMjkwZi4uYTgzZGQzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRob2MuYworKysgYi9kcml2ZXJzL25ldC9ldGhvYy5jCkBAIC01NDIsNyArNTQyLDcgQEAKIAogCS8qIEZpZ3VyZSBvdXQgd2hhdCB0cmlnZ2VyZWQgdGhlIGludGVycnVwdC4uLgogCSAqIFRoZSB0cmlja3kgYml0IGhlcmUgaXMgdGhhdCB0aGUgaW50ZXJydXB0IHNvdXJjZSBiaXRzIGdldAotCSAqIHNldCBpbiBJTlRfU09VUkNFIGZvciBhbiBldmVudCBpcnJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGF0CisJICogc2V0IGluIElOVF9TT1VSQ0UgZm9yIGFuIGV2ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGF0CiAJICogZXZlbnQgaXMgbWFza2VkIG9yIG5vdC4gIFRodXMsIGluIG9yZGVyIHRvIGZpZ3VyZSBvdXQgd2hhdAogCSAqIHRyaWdnZXJlZCB0aGUgaW50ZXJydXB0LCB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgc291cmNlcwogCSAqIGZvciBhbGwgZXZlbnRzIHRoYXQgYXJlIGN1cnJlbnRseSBtYXNrZWQuICBUaGlzIGJlaGF2aW91cgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmVjLmggYi9kcml2ZXJzL25ldC9mZWMuaAppbmRleCBhY2UzMThkLi44YjJjNmQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZWMuaAorKysgYi9kcml2ZXJzL25ldC9mZWMuaApAQCAtOTcsMTEgKzk3LDExIEBACiAgKglUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGNvdXJ0ZXN5IG9mIGNvbW1wcm9jLmgsIHdoaWNoIHdoZXJlCiAgKglDb3B5cmlnaHQgKGMpIDE5OTcgRGFuIE1hbGVrIChkbWFsZWtAamxjLm5ldCkuCiAgKi8KLSNkZWZpbmUgQkRfU0NfRU1QVFkgICAgICgodXNob3J0KTB4ODAwMCkgICAgICAgIC8qIFJlY2lldmUgaXMgZW1wdHkgKi8KKyNkZWZpbmUgQkRfU0NfRU1QVFkgICAgICgodXNob3J0KTB4ODAwMCkgICAgICAgIC8qIFJlY2VpdmUgaXMgZW1wdHkgKi8KICNkZWZpbmUgQkRfU0NfUkVBRFkgICAgICgodXNob3J0KTB4ODAwMCkgICAgICAgIC8qIFRyYW5zbWl0IGlzIHJlYWR5ICovCiAjZGVmaW5lIEJEX1NDX1dSQVAgICAgICAoKHVzaG9ydCkweDIwMDApICAgICAgICAvKiBMYXN0IGJ1ZmZlciBkZXNjcmlwdG9yICovCiAjZGVmaW5lIEJEX1NDX0lOVFJQVCAgICAoKHVzaG9ydCkweDEwMDApICAgICAgICAvKiBJbnRlcnJ1cHQgb24gY2hhbmdlICovCi0jZGVmaW5lIEJEX1NDX0NNICAgICAgICAoKHVzaG9ydCkweDAyMDApICAgICAgICAvKiBDb250aW5vdXMgbW9kZSAqLworI2RlZmluZSBCRF9TQ19DTSAgICAgICAgKCh1c2hvcnQpMHgwMjAwKSAgICAgICAgLyogQ29udGludW91cyBtb2RlICovCiAjZGVmaW5lIEJEX1NDX0lEICAgICAgICAoKHVzaG9ydCkweDAxMDApICAgICAgICAvKiBSZWMnZCB0b28gbWFueSBpZGxlcyAqLwogI2RlZmluZSBCRF9TQ19QICAgICAgICAgKCh1c2hvcnQpMHgwMTAwKSAgICAgICAgLyogeG10IHByZWFtYmxlICovCiAjZGVmaW5lIEJEX1NDX0JSICAgICAgICAoKHVzaG9ydCkweDAwMjApICAgICAgICAvKiBCcmVhayByZWNlaXZlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZm9yY2VkZXRoLmMgYi9kcml2ZXJzL25ldC9mb3JjZWRldGguYwppbmRleCA3YjkyODk3Li5kNWFiNGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mb3JjZWRldGguYworKysgYi9kcml2ZXJzL25ldC9mb3JjZWRldGguYwpAQCAtNDQwLDcgKzQ0MCw3IEBACiAjZGVmaW5lIE5WX1JYM19WTEFOX1RBR19QUkVTRU5UICgxPDwxNikKICNkZWZpbmUgTlZfUlgzX1ZMQU5fVEFHX01BU0sJKDB4MDAwMEZGRkYpCiAKLS8qIE1pc2NlbGFuZW91cyBoYXJkd2FyZSByZWxhdGVkIGRlZmluZXM6ICovCisvKiBNaXNjZWxsYW5lb3VzIGhhcmR3YXJlIHJlbGF0ZWQgZGVmaW5lczogKi8KICNkZWZpbmUgTlZfUENJX1JFR1NaX1ZFUjEJMHgyNzAKICNkZWZpbmUgTlZfUENJX1JFR1NaX1ZFUjIJMHgyZDQKICNkZWZpbmUgTlZfUENJX1JFR1NaX1ZFUjMJMHg2MDQKQEAgLTE0ODgsNyArMTQ4OCw3IEBACiAJCX0KIAl9CiAKLQkvKiBzb21lIHBoeXMgY2xlYXIgb3V0IHBhdXNlIGFkdmVydGlzbWVudCBvbiByZXNldCwgc2V0IGl0IGJhY2sgKi8KKwkvKiBzb21lIHBoeXMgY2xlYXIgb3V0IHBhdXNlIGFkdmVydGlzZW1lbnQgb24gcmVzZXQsIHNldCBpdCBiYWNrICovCiAJbWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9BRFZFUlRJU0UsIHJlZyk7CiAKIAkvKiByZXN0YXJ0IGF1dG8gbmVnb3RpYXRpb24sIHBvd2VyIGRvd24gcGh5ICovCkBAIC0yNTM1LDcgKzI1MzUsNyBAQAogCWVsc2UKIAkJbnZfdHhfZG9uZV9vcHRpbWl6ZWQoZGV2LCBucC0+dHhfcmluZ19zaXplKTsKIAotCS8qIHNhdmUgY3VycmVudCBIVyBwb3N0aW9uICovCisJLyogc2F2ZSBjdXJyZW50IEhXIHBvc2l0aW9uICovCiAJaWYgKG5wLT50eF9jaGFuZ2Vfb3duZXIpCiAJCXB1dF90eC5leCA9IG5wLT50eF9jaGFuZ2Vfb3duZXItPmZpcnN0X3R4X2Rlc2M7CiAJZWxzZQpAQCAtNDA1Myw3ICs0MDUzLDcgQEAKIAogCX0gZWxzZSBpZiAoZWNtZC0+YXV0b25lZyA9PSBBVVRPTkVHX0RJU0FCTEUpIHsKIAkJLyogTm90ZTogYXV0b25lZ290aWF0aW9uIGRpc2FibGUsIHNwZWVkIDEwMDAgaW50ZW50aW9uYWxseQotCQkgKiBmb3JiaWRkZW4gLSBub29uZSBzaG91bGQgbmVlZCB0aGF0LiAqLworCQkgKiBmb3JiaWRkZW4gLSBubyBvbmUgc2hvdWxkIG5lZWQgdGhhdC4gKi8KIAogCQlpZiAoZWNtZC0+c3BlZWQgIT0gU1BFRURfMTAgJiYgZWNtZC0+c3BlZWQgIT0gU1BFRURfMTAwKQogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC00MTAzLDcgKzQxMDMsNyBAQAogCQkJYWR2IHw9IEFEVkVSVElTRV8xMDBIQUxGOwogCQlpZiAoZWNtZC0+YWR2ZXJ0aXNpbmcgJiBBRFZFUlRJU0VEXzEwMGJhc2VUX0Z1bGwpCiAJCQlhZHYgfD0gQURWRVJUSVNFXzEwMEZVTEw7Ci0JCWlmIChucC0+cGF1c2VfZmxhZ3MgJiBOVl9QQVVTRUZSQU1FX1JYX1JFUSkgIC8qIGZvciByeCB3ZSBzZXQgYm90aCBhZHZlcnRpc21lbnRzIGJ1dCBkaXNhYmxlIHR4IHBhdXNlICovCisJCWlmIChucC0+cGF1c2VfZmxhZ3MgJiBOVl9QQVVTRUZSQU1FX1JYX1JFUSkgIC8qIGZvciByeCB3ZSBzZXQgYm90aCBhZHZlcnRpc2VtZW50cyBidXQgZGlzYWJsZSB0eCBwYXVzZSAqLwogCQkJYWR2IHw9ICBBRFZFUlRJU0VfUEFVU0VfQ0FQIHwgQURWRVJUSVNFX1BBVVNFX0FTWU07CiAJCWlmIChucC0+cGF1c2VfZmxhZ3MgJiBOVl9QQVVTRUZSQU1FX1RYX1JFUSkKIAkJCWFkdiB8PSAgQURWRVJUSVNFX1BBVVNFX0FTWU07CkBAIC00MTQ4LDcgKzQxNDgsNyBAQAogCQlpZiAoZWNtZC0+c3BlZWQgPT0gU1BFRURfMTAwICYmIGVjbWQtPmR1cGxleCA9PSBEVVBMRVhfRlVMTCkKIAkJCWFkdiB8PSBBRFZFUlRJU0VfMTAwRlVMTDsKIAkJbnAtPnBhdXNlX2ZsYWdzICY9IH4oTlZfUEFVU0VGUkFNRV9BVVRPTkVHfE5WX1BBVVNFRlJBTUVfUlhfRU5BQkxFfE5WX1BBVVNFRlJBTUVfVFhfRU5BQkxFKTsKLQkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSB7LyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KKwkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSB7LyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzZW1lbnRzIGJ1dCBkaXNhYmxlIHR4IHBhdXNlICovCiAJCQlhZHYgfD0gIEFEVkVSVElTRV9QQVVTRV9DQVAgfCBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKIAkJCW5wLT5wYXVzZV9mbGFncyB8PSBOVl9QQVVTRUZSQU1FX1JYX0VOQUJMRTsKIAkJfQpAQCAtNDQ0OSw3ICs0NDQ5LDcgQEAKIAogCQlhZHYgPSBtaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX0FEVkVSVElTRSwgTUlJX1JFQUQpOwogCQlhZHYgJj0gfihBRFZFUlRJU0VfUEFVU0VfQ0FQIHwgQURWRVJUSVNFX1BBVVNFX0FTWU0pOwotCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9SWF9SRVEpIC8qIGZvciByeCB3ZSBzZXQgYm90aCBhZHZlcnRpc21lbnRzIGJ1dCBkaXNhYmxlIHR4IHBhdXNlICovCisJCWlmIChucC0+cGF1c2VfZmxhZ3MgJiBOVl9QQVVTRUZSQU1FX1JYX1JFUSkgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzZW1lbnRzIGJ1dCBkaXNhYmxlIHR4IHBhdXNlICovCiAJCQlhZHYgfD0gIEFEVkVSVElTRV9QQVVTRV9DQVAgfCBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKIAkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfVFhfUkVRKQogCQkJYWR2IHw9ICBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2dpYW5mYXIuaCBiL2RyaXZlcnMvbmV0L2dpYW5mYXIuaAppbmRleCBlYzVkNTk1Li5iMmZlN2VkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9naWFuZmFyLmgKKysrIGIvZHJpdmVycy9uZXQvZ2lhbmZhci5oCkBAIC0xMDQzLDcgKzEwNDMsNyBAQAogfTsKIAogLyogU3RydWN0IHN0b2xlbiBhbG1vc3QgY29tcGxldGVseSAoYW5kIHNoYW1lbGVzc2x5KSBmcm9tIHRoZSBGQ0MgZW5ldCBzb3VyY2UKLSAqIChPaywgdGhhdCdzIG5vdCBzbyB0cnVlIGFueW1vcmUsIGJ1dCB0aGVyZSBpcyBhIGZhbWlseSByZXNlbWJsZW5jZSkKKyAqIChPaywgdGhhdCdzIG5vdCBzbyB0cnVlIGFueW1vcmUsIGJ1dCB0aGVyZSBpcyBhIGZhbWlseSByZXNlbWJsYW5jZSkKICAqIFRoZSBHRkFSIGJ1ZmZlciBkZXNjcmlwdG9ycyB0cmFjayB0aGUgcmluZyBidWZmZXJzLiAgVGhlIHJ4X2JkX2Jhc2UKICAqIGFuZCB0eF9iZF9iYXNlIGFsd2F5cyBwb2ludCB0byB0aGUgY3VycmVudGx5IGF2YWlsYWJsZSBidWZmZXIuCiAgKiBUaGUgZGlydHlfdHggdHJhY2tzIHRoZSBjdXJyZW50IGJ1ZmZlciB0aGF0IGlzIGJlaW5nIHNlbnQgYnkgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oYW1yYWRpby9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2hhbXJhZGlvL01ha2VmaWxlCmluZGV4IDlkZWY4NjcuLjEwNDA5NjA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9oYW1yYWRpby9NYWtlZmlsZQorKysgYi9kcml2ZXJzL25ldC9oYW1yYWRpby9NYWtlZmlsZQpAQCAtMyw3ICszLDcgQEAKICMKICMKICMgMTk5NzExMzAgCU1vdmVkIHRoZSBhbWF0ZXVyIHJhZGlvIHJlbGF0ZWQgbmV0d29yayBkcml2ZXJzIGZyb20gCi0jCQlkcml2ZXJzL25ldC8gdG8gZHJpdmVycy9oYW1yYWRpbyBmb3IgZWFzaWVyIG1haW50YWluYW5jZS4KKyMJCWRyaXZlcnMvbmV0LyB0byBkcml2ZXJzL2hhbXJhZGlvIGZvciBlYXNpZXIgbWFpbnRlbmFuY2UuCiAjICAgICAgICAgICAgICAgSm9lcmcgUmV1dGVyIERMMUJLRSA8anJldXRlckB5YWluYS5kZT4KICMKICMgMjAwMDA4MDYJUmV3cml0dGVuIHRvIHVzZSBsaXN0cyBpbnN0ZWFkIG9mIGlmLXN0YXRlbWVudHMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYyBiL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbS5jCmluZGV4IDdkOWNlZDAuLjk2YTk4ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbS5jCisrKyBiL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbS5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiAgIDAuMSBGMU9BVCAwNy4wNi45OCAgQWRkIHRpbWVyIHBvbGxpbmcgcm91dGluZSBmb3IgY2hhbm5lbCBhcmJpdHJhdGlvbgogICogICAwLjIgRjZGQkIgMDguMDYuOTggIEFkZGVkIGRlbGF5IGFmdGVyIEZQR0EgcHJvZ3JhbW1pbmcKICAqICAgMC4zIEY2RkJCIDI5LjA3Ljk4ICBEZWxheWVkIFBUVCBpbXBsZW1lbnRhdGlvbiBmb3IgZHVwbW9kZT0yCi0gKiAgIDAuNCBGNkZCQiAzMC4wNy45OCAgQWRkZWQgVHhUYWlsLCBTbG90dGltZSBhbmQgUGVyc2lzdGFuY2UKKyAqICAgMC40IEY2RkJCIDMwLjA3Ljk4ICBBZGRlZCBUeFRhaWwsIFNsb3R0aW1lIGFuZCBQZXJzaXN0ZW5jZQogICogICAwLjUgRjZGQkIgMDEuMDguOTggIFNoYXJlZCBJUlFzLCAvcHJvYy9uZXQgYW5kIG5ldHdvcmsgc3RhdGlzdGljcwogICogICAwLjYgRjZGQkIgMjUuMDguOTggIEFkZGVkIDEyMDBCZHMgZm9ybWF0CiAgKiAgIDAuNyBGNkZCQiAxMi4wOS45OCAgQWRkZWQgdG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ocDEwMC5jIGIvZHJpdmVycy9uZXQvaHAxMDAuYwppbmRleCA4ZTJjNDYwLi44ZTEwZDJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ocDEwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2hwMTAwLmMKQEAgLTE4MCw4ICsxODAsOCBAQAogCiAJdV9pbnQgKnBhZ2VfdmFkZHJfYWxnbjsJLyogQWxpZ25lZCB2aXJ0dWFsIGFkZHJlc3Mgb2YgYWxsb2NhdGVkIHBhZ2UgKi8KIAl1X2xvbmcgd2hhdGV2ZXJfb2Zmc2V0OwkvKiBPZmZzZXQgdG8gYnVzL3BoeXMvZG1hIGFkZHJlc3MgKi8KLQlpbnQgcnhyY29tbWl0OwkJLyogIyBSeCBQRExzIGNvbW1pdGVkIHRvIGFkYXB0ZXIgKi8KLQlpbnQgdHhyY29tbWl0OwkJLyogIyBUeCBQRExzIGNvbW1pdGVkIHRvIGFkYXB0ZXIgKi8KKwlpbnQgcnhyY29tbWl0OwkJLyogIyBSeCBQRExzIGNvbW1pdHRlZCB0byBhZGFwdGVyICovCisJaW50IHR4cmNvbW1pdDsJCS8qICMgVHggUERMcyBjb21taXR0ZWQgdG8gYWRhcHRlciAqLwogfTsKIAogLyoKQEAgLTcxNiw3ICs3MTYsNyBAQAogCSAqIGltcGxlbWVudGVkL3Rlc3RlZCBvbmx5IHdpdGggdGhlIGxhc3NlbiBjaGlwIGFueXdheS4uLiAqLwogCWlmIChscC0+bW9kZSA9PSAxKSB7CS8qIGJ1c21hc3RlciAqLwogCQlkbWFfYWRkcl90IHBhZ2VfYmFkZHI7Ci0JCS8qIEdldCBwaHlzaWNhbGx5IGNvbnRpbm91cyBtZW1vcnkgZm9yIFRYICYgUlggUERMcyAgICAqLworCQkvKiBHZXQgcGh5c2ljYWxseSBjb250aW51b3VzIG1lbW9yeSBmb3IgVFggJiBSWCBQRExzICAgICovCiAJCS8qIENvbnZlcnNpb24gdG8gbmV3IFBDSSBBUEkgOgogCQkgKiBQYWdlcyBhcmUgYWx3YXlzIGFsaWduZWQgYW5kIHplcm9lZCwgbm8gbmVlZCB0byBpdCBvdXJzZWxmLgogCQkgKiBEb2Mgc2F5cyBzaG91bGQgYmUgT0sgZm9yIEVJU0EgYnVzIGFzIHdlbGwgLSBKZWFuIElJICovCkBAIC0xNTk2LDcgKzE1OTYsNyBAQAogCiAvKiBjbGVhbl90eHJpbmcgY2hlY2tzIGlmIHBhY2tldHMgaGF2ZSBiZWVuIHNlbnQgYnkgdGhlIGNhcmQgYnkgcmVhZGluZwogICogdGhlIFRYX1BETCByZWdpc3RlciBmcm9tIHRoZSBwZXJmb3JtYW5jZSBwYWdlIGFuZCBjb21wYXJpbmcgaXQgdG8gdGhlCi0gKiBudW1iZXIgb2YgY29tbWl0ZWQgcGFja2V0cy4gSXQgdGhlbiBmcmVlcyB0aGUgc2tiJ3Mgb2YgdGhlIHBhY2tldHMgdGhhdAorICogbnVtYmVyIG9mIGNvbW1pdHRlZCBwYWNrZXRzLiBJdCB0aGVuIGZyZWVzIHRoZSBza2IncyBvZiB0aGUgcGFja2V0cyB0aGF0CiAgKiBvYnZpb3VzbHkgaGF2ZSBiZWVuIHNlbnQgdG8gdGhlIG5ldHdvcmsuCiAgKgogICogTmVlZHMgdGhlIFBFUkZPUk1BTkNFIHBhZ2Ugc2VsZWN0ZWQuCkBAIC0xNjE3LDcgKzE2MTcsNyBAQAogCiAjaWZkZWYgSFAxMDBfREVCVUcKIAlpZiAoZG9uZWNvdW50ID4gTUFYX1RYX1BETCkKLQkJcHJpbnRrKCJocDEwMDogJXM6IFdhcm5pbmc6IE1vcmUgUERMcyB0cmFuc21pdHRlZCB0aGFuIGNvbW1pdGVkIHRvIGNhcmQ/Pz9cbiIsIGRldi0+bmFtZSk7CisJCXByaW50aygiaHAxMDA6ICVzOiBXYXJuaW5nOiBNb3JlIFBETHMgdHJhbnNtaXR0ZWQgdGhhbiBjb21taXR0ZWQgdG8gY2FyZD8/P1xuIiwgZGV2LT5uYW1lKTsKICNlbmRpZgogCiAJZm9yICg7IDAgIT0gZG9uZWNvdW50OyBkb25lY291bnQtLSkgewpAQCAtMTc2NSw3ICsxNzY1LDcgQEAKICAqIFJlY2VpdmUgRnVuY3Rpb24gKE5vbi1CdXNtYXN0ZXIgbW9kZSkKICAqIENhbGxlZCB3aGVuIGFuICJSZWNlaXZlIFBhY2tldCIgaW50ZXJydXB0IG9jY3VycywgaS5lLiB0aGUgcmVjZWl2ZQogICogcGFja2V0IGNvdW50ZXIgaXMgbm9uLXplcm8uCi0gKiBGb3Igbm9uLWJ1c21hc3RlciwgdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSB3aG9sZSB3b3JrIG9mIHRyYW5zZmVyaW5nCisgKiBGb3Igbm9uLWJ1c21hc3RlciwgdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSB3aG9sZSB3b3JrIG9mIHRyYW5zZmVycmluZwogICogdGhlIHBhY2tldCB0byB0aGUgaG9zdCBtZW1vcnkgYW5kIHRoZW4gdXAgdG8gaGlnaGVyIGxheWVycyB2aWEgc2tiCiAgKiBhbmQgbmV0aWZfcnguCiAgKi8KQEAgLTE4OTIsNyArMTg5Miw3IEBACiAJCS8qIFJYX1BLVF9DTlQgc3RhdGVzIGhvdyBtYW55IFBETHMgYXJlIGN1cnJlbnRseSBmb3JtYXR0ZWQgYW5kIGF2YWlsYWJsZSB0bwogCQkgKiB0aGUgY2FyZHMgQk0gZW5naW5lICovCiAJaWYgKChocDEwMF9pbncoUlhfUEtUX0NOVCkgJiAweDAwZmYpID49IGxwLT5yeHJjb21taXQpIHsKLQkJcHJpbnRrKCJocDEwMDogJXM6IE1vcmUgcGFja2V0cyByZWNlaXZlZCB0aGFuIGNvbW1pdGVkPyBSWF9QS1RfQ05UPTB4JXgsIGNvbW1pdD0weCV4XG4iLAorCQlwcmludGsoImhwMTAwOiAlczogTW9yZSBwYWNrZXRzIHJlY2VpdmVkIHRoYW4gY29tbWl0dGVkPyBSWF9QS1RfQ05UPTB4JXgsIGNvbW1pdD0weCV4XG4iLAogCQkJCSAgICAgZGV2LT5uYW1lLCBocDEwMF9pbncoUlhfUEtUX0NOVCkgJiAweDAwZmYsCiAJCQkJICAgICBscC0+cnhyY29tbWl0KTsKIAkJcmV0dXJuOwpAQCAtMjI1Niw3ICsyMjU2LDcgQEAKIAkJaWYgKGxwLT5tb2RlICE9IDEpCS8qIG5vbiBidXNtYXN0ZXIgKi8KIAkJCWhwMTAwX3J4KGRldik7CiAJCWVsc2UgaWYgKCEodmFsICYgSFAxMDBfUlhfUERMX0ZJTExfQ09NUEwpKSB7Ci0JCQkvKiBTaG91bGRudCBoYXBwZW4gLSBtYXliZSB3ZSBtaXNzZWQgYSBSWF9QRExfRklMTCBJbnRlcnJ1cHQ/ICAqLworCQkJLyogU2hvdWxkbid0IGhhcHBlbiAtIG1heWJlIHdlIG1pc3NlZCBhIFJYX1BETF9GSUxMIEludGVycnVwdD8gICovCiAJCQlocDEwMF9yeF9ibShkZXYpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHAxMDAuaCBiL2RyaXZlcnMvbmV0L2hwMTAwLmgKaW5kZXggZTZjYTEyOC4uYjYwZTk2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaHAxMDAuaAorKysgYi9kcml2ZXJzL25ldC9ocDEwMC5oCkBAIC0xMDksNyArMTA5LDcgQEAKICNkZWZpbmUgSFAxMDBfUkVHX01BQ19DRkdfMgkweDBkCS8qIFJXOiAoOCkgTWlzYyBNQUMgZnVuY3Rpb25zICAgICAgICAqLwogI2RlZmluZSBIUDEwMF9SRUdfTUFDX0NGR18zICAgICAweDBlCS8qIFJXOiAoOCkgTWlzYyBNQUMgZnVuY3Rpb25zICovCiAjZGVmaW5lIEhQMTAwX1JFR19NQUNfQ0ZHXzQgICAgIDB4MGYJLyogUjogICg4KSBNaXNjIE1BQyBzdGF0ZXMgKi8KLSNkZWZpbmUgSFAxMDBfUkVHX0RST1BQRUQJMHgxMAkvKiBSOiAgKDE2KSwxMTowIFBrdHMgY2FudCBmaXQgaW4gbWVtICovCisjZGVmaW5lIEhQMTAwX1JFR19EUk9QUEVECTB4MTAJLyogUjogICgxNiksMTE6MCBQa3RzIGNhbid0IGZpdCBpbiBtZW0gKi8KICNkZWZpbmUgSFAxMDBfUkVHX0NSQwkJMHgxMgkvKiBSOiAgKDgpIFBrdHMgd2l0aCBDUkMgICAgICAgICAgICAgKi8KICNkZWZpbmUgSFAxMDBfUkVHX0FCT1JUCQkweDEzCS8qIFI6ICAoOCkgQWJvcnRlZCBUeCBwa3RzICAgICAgICAgICAqLwogI2RlZmluZSBIUDEwMF9SRUdfVFJBSU5fUkVRVUVTVCAweDE0CS8qIFJXOiAoMTYpIEVuZG5vZGUgTUFDIHJlZ2lzdGVyLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWJtX25ld2VtYWMvdGFoLmMgYi9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy90YWguYwppbmRleCA4ZWFkNmE5Li41ZjUxYmY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy90YWguYworKysgYi9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy90YWguYwpAQCAtNjAsNyArNjAsNyBAQAogCQlwcmludGsoS0VSTl9FUlIgIiVzOiByZXNldCB0aW1lb3V0XG4iLAogCQkJb2ZkZXYtPmRldi5vZl9ub2RlLT5mdWxsX25hbWUpOwogCi0JLyogMTBLQiBUQUggVFggRklGTyBhY2NvbW9kYXRlcyB0aGUgbWF4IE1UVSBvZiA5MDAwICovCisJLyogMTBLQiBUQUggVFggRklGTyBhY2NvbW1vZGF0ZXMgdGhlIG1heCBNVFUgb2YgOTAwMCAqLwogCW91dF9iZTMyKCZwLT5tciwKIAkJIFRBSF9NUl9DVlIgfCBUQUhfTVJfU1RfNzY4IHwgVEFIX01SX1RGU18xMEtCIHwgVEFIX01SX0RURlAgfAogCQkgVEFIX01SX0RJRyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pYm1sYW5hLmMgYi9kcml2ZXJzL25ldC9pYm1sYW5hLmMKaW5kZXggOTRkOTk2OS4uOGZmNjhhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWJtbGFuYS5jCisrKyBiL2RyaXZlcnMvbmV0L2libWxhbmEuYwpAQCAtNTMsNyArNTMsNyBAQAogCXN0aWxsIHdvcmsgd2l0aCAyLjAueC4uLi4KICAgSmFuIDI4dGgsIDIwMDAKIAlpbiBMaW51eCAyLjIuMTMsIHRoZSB2ZXJzaW9uLmggZmlsZSBteXN0ZXJpb3VzbHkgZGlkbid0IGdldAotCWluY2x1ZGVkLiAgQWRkZWQgYSB3b3JrYXJvdW5kIGZvciB0aGlzLiAgRnV0aGVybW9yZSwgaXQgbm93CisJaW5jbHVkZWQuICBBZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoaXMuICBGdXJ0aGVybW9yZSwgaXQgbm93CiAJbm90IG9ubHkgY29tcGlsZXMgYXMgYSBtb2R1bGVzIDstKQogICBKYW4gMzB0aCwgMjAwMAogCW5ld2VyIGtlcm5lbHMgYXV0b21hdGljYWxseSBwcm9iZSBtb3JlIHRoYW4gb25lIGJvYXJkLCBzbyB0aGUKQEAgLTQ4MSw3ICs0ODEsNyBAQAogCWlmICgoZGV2LT5mbGFncyAmIElGRl9BTExNVUxUSSkgfHwgbmV0ZGV2X21jX2NvdW50KGRldikgPiBjYW1jbnQpCiAJCXJjcnZhbCB8PSBSQ1JFR19BTUM7CiAKLQkvKiBwcm9taXNjb3VzIG1vZGUgPyAqLworCS8qIHByb21pc2N1b3VzIG1vZGUgPyAqLwogCiAJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykKIAkJcmNydmFsIHw9IFJDUkVHX1BSTzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2libWxhbmEuaCBiL2RyaXZlcnMvbmV0L2libWxhbmEuaAppbmRleCBhYTNkZGJkLi5hY2NkNWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pYm1sYW5hLmgKKysrIGIvZHJpdmVycy9uZXQvaWJtbGFuYS5oCkBAIC05MCw3ICs5MCw3IEBACiAjZGVmaW5lIFJDUkVHX0VSUiAgICAgICAgMHg4MDAwCS8qIGFjY2VwdCBkYW1hZ2VkIGFuZCBjb2xsaWRlZCBwa3RzICovCiAjZGVmaW5lIFJDUkVHX1JOVCAgICAgICAgMHg0MDAwCS8qIGFjY2VwdCBwYWNrZXRzIHRoYXQgYXJlIDwgNjQgICAgICovCiAjZGVmaW5lIFJDUkVHX0JSRCAgICAgICAgMHgyMDAwCS8qIGFjY2VwdCBicm9hZGNhc3RzICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIFJDUkVHX1BSTyAgICAgICAgMHgxMDAwCS8qIHByb21pc2NvdXMgbW9kZSAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFJDUkVHX1BSTyAgICAgICAgMHgxMDAwCS8qIHByb21pc2N1b3VzIG1vZGUgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBSQ1JFR19BTUMgICAgICAgIDB4MDgwMAkvKiBhY2NlcHQgYWxsIG11bHRpY2FzdHMgICAgICAgICAgICAqLwogI2RlZmluZSBSQ1JFR19MQl9OT05FICAgIDB4MDAwMAkvKiBubyBsb29wYmFjayAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBSQ1JFR19MQl9NQUMgICAgIDB4MDIwMAkvKiBNQUMgbG9vcGJhY2sgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWdiL2UxMDAwX21hYy5jIGIvZHJpdmVycy9uZXQvaWdiL2UxMDAwX21hYy5jCmluZGV4IDkwYzVlMDEuLmNlODI1NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9tYWMuYworKysgYi9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfbWFjLmMKQEAgLTE4MSw3ICsxODEsNyBAQAogICogIGFkZHJlc3MgYW5kIG11c3Qgb3ZlcnJpZGUgdGhlIGFjdHVhbCBwZXJtYW5lbnQgTUFDIGFkZHJlc3MuICBJZiBhbgogICogIGFsdGVybmF0ZSBNQUMgYWRkcmVzcyBpcyBmb3B1bmQgaXQgaXMgc2F2ZWQgaW4gdGhlIGh3IHN0cnVjdCBhbmQKICAqICBwcmdyYW1tZWQgaW50byBSQVIwIGFuZCB0aGUgY3VudGlvbiByZXR1cm5zIHN1Y2Nlc3MsIG90aGVyd2lzZSB0aGUKLSAqICBmdWNudGlvbiByZXR1cm5zIGFuIGVycm9yLgorICogIGZ1bmN0aW9uIHJldHVybnMgYW4gZXJyb3IuCiAgKiovCiBzMzIgaWdiX2NoZWNrX2FsdF9tYWNfYWRkcihzdHJ1Y3QgZTEwMDBfaHcgKmh3KQogewpAQCAtOTgyLDcgKzk4Miw3IEBACiB9CiAKIC8qKgotICogIGlnYl9nZXRfc3BlZWRfYW5kX2R1cGxleF9jb3BwZXIgLSBSZXRyZWl2ZSBjdXJyZW50IHNwZWVkL2R1cGxleAorICogIGlnYl9nZXRfc3BlZWRfYW5kX2R1cGxleF9jb3BwZXIgLSBSZXRyaWV2ZSBjdXJyZW50IHNwZWVkL2R1cGxleAogICogIEBodzogcG9pbnRlciB0byB0aGUgSFcgc3RydWN0dXJlCiAgKiAgQHNwZWVkOiBzdG9yZXMgdGhlIGN1cnJlbnQgc3BlZWQKICAqICBAZHVwbGV4OiBzdG9yZXMgdGhlIGN1cnJlbnQgZHVwbGV4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfcGh5LmMgYi9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfcGh5LmMKaW5kZXggNjY5NGJmMy4uZDYzOTcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWdiL2UxMDAwX3BoeS5jCisrKyBiL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9waHkuYwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAKIH0KIAogLyoqCi0gKiAgaWdiX2NoZWNrX2Rvd25zaGlmdCAtIENoZWNrcyB3aGV0aGVyIGEgZG93bnNoaWZ0IGluIHNwZWVkIG9jY3VyZWQKKyAqICBpZ2JfY2hlY2tfZG93bnNoaWZ0IC0gQ2hlY2tzIHdoZXRoZXIgYSBkb3duc2hpZnQgaW4gc3BlZWQgb2NjdXJyZWQKICAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIEhXIHN0cnVjdHVyZQogICoKICAqICBTdWNjZXNzIHJldHVybnMgMCwgRmFpbHVyZSByZXR1cm5zIDEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lnYi9pZ2JfbWFpbi5jIGIvZHJpdmVycy9uZXQvaWdiL2lnYl9tYWluLmMKaW5kZXggM2Q4NTBhZi4uMGRmZDFiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWdiL2lnYl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvaWdiL2lnYl9tYWluLmMKQEAgLTIwMCw3ICsyMDAsNyBAQAogCS5wcm9iZSAgICA9IGlnYl9wcm9iZSwKIAkucmVtb3ZlICAgPSBfX2RldmV4aXRfcChpZ2JfcmVtb3ZlKSwKICNpZmRlZiBDT05GSUdfUE0KLQkvKiBQb3dlciBNYW5hZ21lbnQgSG9va3MgKi8KKwkvKiBQb3dlciBNYW5hZ2VtZW50IEhvb2tzICovCiAJLnN1c3BlbmQgID0gaWdiX3N1c3BlbmQsCiAJLnJlc3VtZSAgID0gaWdiX3Jlc3VtZSwKICNlbmRpZgpAQCAtMjI5Miw3ICsyMjkyLDcgQEAKIAkJLyoqCiAJCSAqIFNjYWxlIHRoZSBOSUMgY2xvY2sgY3ljbGUgYnkgYSBsYXJnZSBmYWN0b3Igc28gdGhhdAogCQkgKiByZWxhdGl2ZWx5IHNtYWxsIGNsb2NrIGNvcnJlY3Rpb25zIGNhbiBiZSBhZGRlZCBvcgotCQkgKiBzdWJzdHJhY3RlZCBhdCBlYWNoIGNsb2NrIHRpY2suIFRoZSBkcmF3YmFja3Mgb2YgYSBsYXJnZQorCQkgKiBzdWJ0cmFjdGVkIGF0IGVhY2ggY2xvY2sgdGljay4gVGhlIGRyYXdiYWNrcyBvZiBhIGxhcmdlCiAJCSAqIGZhY3RvciBhcmUgYSkgdGhhdCB0aGUgY2xvY2sgcmVnaXN0ZXIgb3ZlcmZsb3dzIG1vcmUgcXVpY2tseQogCQkgKiAobm90IHN1Y2ggYSBiaWcgZGVhbCkgYW5kIGIpIHRoYXQgdGhlIGluY3JlbWVudCBwZXIgdGljayBoYXMKIAkJICogdG8gZml0IGludG8gMjQgYml0cy4gIEFzIGEgcmVzdWx0IHdlIG5lZWQgdG8gdXNlIGEgc2hpZnQgb2YKQEAgLTM0MDksNyArMzQwOSw3IEBACiAJCX0gZWxzZSB7CiAJCQkvKgogCQkJICogV3JpdGUgYWRkcmVzc2VzIHRvIHRoZSBNVEEsIGlmIHRoZSBhdHRlbXB0IGZhaWxzCi0JCQkgKiB0aGVuIHdlIHNob3VsZCBqdXN0IHR1cm4gb24gcHJvbWlzY291cyBtb2RlIHNvCisJCQkgKiB0aGVuIHdlIHNob3VsZCBqdXN0IHR1cm4gb24gcHJvbWlzY3VvdXMgbW9kZSBzbwogCQkJICogdGhhdCB3ZSBjYW4gYXQgbGVhc3QgcmVjZWl2ZSBtdWx0aWNhc3QgdHJhZmZpYwogCQkJICovCiAJCQljb3VudCA9IGlnYl93cml0ZV9tY19hZGRyX2xpc3QobmV0ZGV2KTsKQEAgLTM0MjMsNyArMzQyMyw3IEBACiAJCS8qCiAJCSAqIFdyaXRlIGFkZHJlc3NlcyB0byBhdmFpbGFibGUgUkFSIHJlZ2lzdGVycywgaWYgdGhlcmUgaXMgbm90CiAJCSAqIHN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgYWxsIHRoZSBhZGRyZXNzZXMgdGhlbiBlbmFibGUKLQkJICogdW5pY2FzdCBwcm9taXNjb3VzIG1vZGUKKwkJICogdW5pY2FzdCBwcm9taXNjdW91cyBtb2RlCiAJCSAqLwogCQljb3VudCA9IGlnYl93cml0ZV91Y19hZGRyX2xpc3QobmV0ZGV2KTsKIAkJaWYgKGNvdW50IDwgMCkgewpAQCAtNDMxNyw3ICs0MzE3LDcgQEAKIAogCS8qCiAJICogY291bnQgcmVmbGVjdHMgZGVzY3JpcHRvcnMgbWFwcGVkLCBpZiAwIG9yIGxlc3MgdGhlbiBtYXBwaW5nIGVycm9yCi0JICogaGFzIG9jY3VyZWQgYW5kIHdlIG5lZWQgdG8gcmV3aW5kIHRoZSBkZXNjcmlwdG9yIHF1ZXVlCisJICogaGFzIG9jY3VycmVkIGFuZCB3ZSBuZWVkIHRvIHJld2luZCB0aGUgZGVzY3JpcHRvciBxdWV1ZQogCSAqLwogCWNvdW50ID0gaWdiX3R4X21hcF9hZHYodHhfcmluZywgc2tiLCBmaXJzdCk7CiAJaWYgKCFjb3VudCkgewpAQCAtNTM1Miw4ICs1MzUyLDggQEAKICAqICBUaGUgdW5pY2FzdCB0YWJsZSBhZGRyZXNzIGlzIGEgcmVnaXN0ZXIgYXJyYXkgb2YgMzItYml0IHJlZ2lzdGVycy4KICAqICBUaGUgdGFibGUgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBhIHdheSBzaW1pbGFyIHRvIGhvdyB0aGUgTVRBIGlzIHVzZWQKICAqICBob3dldmVyIGR1ZSB0byBjZXJ0YWluIGxpbWl0YXRpb25zIGluIHRoZSBoYXJkd2FyZSBpdCBpcyBuZWNlc3NhcnkgdG8KLSAqICBzZXQgYWxsIHRoZSBoYXNoIGJpdHMgdG8gMSBhbmQgdXNlIHRoZSBWTU9MUiBST1BFIGJpdCBhcyBhIHByb21pc2NvdXMKLSAqICBlbmFibGUgYml0IHRvIGFsbG93IHZsYW4gdGFnIHN0cmlwcGluZyB3aGVuIHByb21pc2NvdXMgbW9kZSBpcyBlbmFibGVkCisgKiAgc2V0IGFsbCB0aGUgaGFzaCBiaXRzIHRvIDEgYW5kIHVzZSB0aGUgVk1PTFIgUk9QRSBiaXQgYXMgYSBwcm9taXNjdW91cworICogIGVuYWJsZSBiaXQgdG8gYWxsb3cgdmxhbiB0YWcgc3RyaXBwaW5nIHdoZW4gcHJvbWlzY3VvdXMgbW9kZSBpcyBlbmFibGVkCiAgKiovCiBzdGF0aWMgdm9pZCBpZ2Jfc2V0X3V0YShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pZ2J2Zi9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2lnYnZmL25ldGRldi5jCmluZGV4IDZjY2MzMmYuLjFkMDRjYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lnYnZmL25ldGRldi5jCisrKyBiL2RyaXZlcnMvbmV0L2lnYnZmL25ldGRldi5jCkBAIC0yMjI3LDcgKzIyMjcsNyBAQAogCiAJLyoKIAkgKiBjb3VudCByZWZsZWN0cyBkZXNjcmlwdG9ycyBtYXBwZWQsIGlmIDAgdGhlbiBtYXBwaW5nIGVycm9yCi0JICogaGFzIG9jY3VyZWQgYW5kIHdlIG5lZWQgdG8gcmV3aW5kIHRoZSBkZXNjcmlwdG9yIHF1ZXVlCisJICogaGFzIG9jY3VycmVkIGFuZCB3ZSBuZWVkIHRvIHJld2luZCB0aGUgZGVzY3JpcHRvciBxdWV1ZQogCSAqLwogCWNvdW50ID0gaWdidmZfdHhfbWFwX2FkdihhZGFwdGVyLCB0eF9yaW5nLCBza2IsIGZpcnN0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXBnLmMgYi9kcml2ZXJzL25ldC9pcGcuYwppbmRleCBhNWIwZjBlLi41OGNkMzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcGcuYworKysgYi9kcml2ZXJzL25ldC9pcGcuYwpAQCAtNDg2LDE0ICs0ODYsMTQgQEAKIAlwaHljdHJsID0gaXBnX3I4KFBIWV9DVFJMKTsKIAltYWNfY3RybF92YWwgPSBpcGdfcjMyKE1BQ19DVFJMKTsKIAotCS8qIFNldCBmbGFncyBmb3IgdXNlIGluIHJlc29sdmluZyBhdXRvLW5lZ290YXRpb24sIGFzc3VtaW5nCisJLyogU2V0IGZsYWdzIGZvciB1c2UgaW4gcmVzb2x2aW5nIGF1dG8tbmVnb3RpYXRpb24sIGFzc3VtaW5nCiAJICogbm9uLTEwMDBNYnBzLCBoYWxmIGR1cGxleCwgbm8gZmxvdyBjb250cm9sLgogCSAqLwogCWZ1bGxkdXBsZXggPSAwOwogCXR4Zmxvd2NvbnRyb2wgPSAwOwogCXJ4Zmxvd2NvbnRyb2wgPSAwOwogCi0JLyogVG8gYWNjb21vZGF0ZSBhIHByb2JsZW0gaW4gMTBNYnBzIG9wZXJhdGlvbiwKKwkvKiBUbyBhY2NvbW1vZGF0ZSBhIHByb2JsZW0gaW4gMTBNYnBzIG9wZXJhdGlvbiwKIAkgKiBzZXQgYSBnbG9iYWwgZmxhZyBpZiBQSFkgcnVubmluZyBpbiAxME1icHMgbW9kZS4KIAkgKi8KIAlzcC0+dGVubWJwc21vZGUgPSAwOwpAQCAtODQ2LDcgKzg0Niw3IEBACiB9CiAKIC8qCi0gKiBGcmVlIGFsbCB0cmFuc21pdCBidWZmZXJzIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVyZWQKKyAqIEZyZWUgYWxsIHRyYW5zbWl0IGJ1ZmZlcnMgd2hpY2ggaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQKICAqIHZpYSBETUEgdG8gdGhlIElQRy4KICAqLwogc3RhdGljIHZvaWQgaXBnX25pY190eGZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKQEAgLTkyMCw3ICs5MjAsNyBAQAogCiAvKgogICogRm9yIFR4Q29tcGxldGUgaW50ZXJydXB0cywgZnJlZSBhbGwgdHJhbnNtaXQKLSAqIGJ1ZmZlcnMgd2hpY2ggaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJlZCB2aWEgRE1BCisgKiBidWZmZXJzIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVycmVkIHZpYSBETUEKICAqIHRvIHRoZSBJUEcuCiAgKi8KIHN0YXRpYyB2b2lkIGlwZ19uaWNfdHhjbGVhbnVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC0xMTQxLDEzICsxMTQxLDEzIEBACiAKIAkJLyogSW5jcmVtZW50IGRldGFpbGVkIHJlY2VpdmUgZXJyb3Igc3RhdGlzdGljcy4gKi8KIAkJaWYgKGxlNjRfdG9fY3B1KHJ4ZmQtPnJmcykgJiBJUEdfUkZTX1JYRklGT09WRVJSVU4pIHsKLQkJCUlQR19ERUJVR19NU0coIlJYIEZJRk8gb3ZlcnJ1biBvY2N1cmVkLlxuIik7CisJCQlJUEdfREVCVUdfTVNHKCJSWCBGSUZPIG92ZXJydW4gb2NjdXJyZWQuXG4iKTsKIAogCQkJc3AtPnN0YXRzLnJ4X2ZpZm9fZXJyb3JzKys7CiAJCX0KIAogCQlpZiAobGU2NF90b19jcHUocnhmZC0+cmZzKSAmIElQR19SRlNfUlhSVU5URlJBTUUpIHsKLQkJCUlQR19ERUJVR19NU0coIlJYIHJ1bnQgb2NjdXJlZC5cbiIpOworCQkJSVBHX0RFQlVHX01TRygiUlggcnVudCBvY2N1cnJlZC5cbiIpOwogCQkJc3AtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKIAkJfQogCkBAIC0xMTU2LDcgKzExNTYsNyBAQAogCQkgKi8KIAogCQlpZiAobGU2NF90b19jcHUocnhmZC0+cmZzKSAmIElQR19SRlNfUlhBTElHTk1FTlRFUlJPUikgewotCQkJSVBHX0RFQlVHX01TRygiUlggYWxpZ25tZW50IGVycm9yIG9jY3VyZWQuXG4iKTsKKwkJCUlQR19ERUJVR19NU0coIlJYIGFsaWdubWVudCBlcnJvciBvY2N1cnJlZC5cbiIpOwogCQkJc3AtPnN0YXRzLnJ4X2ZyYW1lX2Vycm9ycysrOwogCQl9CiAKQEAgLTE0MjEsMTIgKzE0MjEsMTIgQEAKIAogCQkJLyogSW5jcmVtZW50IGRldGFpbGVkIHJlY2VpdmUgZXJyb3Igc3RhdGlzdGljcy4gKi8KIAkJCWlmIChsZTY0X3RvX2NwdShyeGZkLT5yZnMpICYgSVBHX1JGU19SWEZJRk9PVkVSUlVOKSB7Ci0JCQkJSVBHX0RFQlVHX01TRygiUlggRklGTyBvdmVycnVuIG9jY3VyZWQuXG4iKTsKKwkJCQlJUEdfREVCVUdfTVNHKCJSWCBGSUZPIG92ZXJydW4gb2NjdXJyZWQuXG4iKTsKIAkJCQlzcC0+c3RhdHMucnhfZmlmb19lcnJvcnMrKzsKIAkJCX0KIAogCQkJaWYgKGxlNjRfdG9fY3B1KHJ4ZmQtPnJmcykgJiBJUEdfUkZTX1JYUlVOVEZSQU1FKSB7Ci0JCQkJSVBHX0RFQlVHX01TRygiUlggcnVudCBvY2N1cmVkLlxuIik7CisJCQkJSVBHX0RFQlVHX01TRygiUlggcnVudCBvY2N1cnJlZC5cbiIpOwogCQkJCXNwLT5zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7CiAJCQl9CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBACiAJCQkgKi8KIAogCQkJaWYgKGxlNjRfdG9fY3B1KHJ4ZmQtPnJmcykgJiBJUEdfUkZTX1JYQUxJR05NRU5URVJST1IpIHsKLQkJCQlJUEdfREVCVUdfTVNHKCJSWCBhbGlnbm1lbnQgZXJyb3Igb2NjdXJlZC5cbiIpOworCQkJCUlQR19ERUJVR19NU0coIlJYIGFsaWdubWVudCBlcnJvciBvY2N1cnJlZC5cbiIpOwogCQkJCXNwLT5zdGF0cy5yeF9mcmFtZV9lcnJvcnMrKzsKIAkJCX0KIApAQCAtMTQ2MCw3ICsxNDYwLDcgQEAKIAkJCX0KIAkJfSBlbHNlIHsKIAotCQkJLyogQWRqdXN0IHRoZSBuZXcgYnVmZmVyIGxlbmd0aCB0byBhY2NvbW9kYXRlIHRoZSBzaXplCisJCQkvKiBBZGp1c3QgdGhlIG5ldyBidWZmZXIgbGVuZ3RoIHRvIGFjY29tbW9kYXRlIHRoZSBzaXplCiAJCQkgKiBvZiB0aGUgcmVjZWl2ZWQgZnJhbWUuCiAJCQkgKi8KIAkJCXNrYl9wdXQoc2tiLCBmcmFtZWxlbik7CkBAIC0xNDg4LDcgKzE0ODgsNyBAQAogCX0KIAogCS8qCi0JICogSWYgdGhlcmUgYXJlIG1vcmUgUkZEcyB0byBwcm9jZXMgYW5kIHRoZSBhbGxvY2F0ZWQgYW1vdW50IG9mIFJGRAorCSAqIElmIHRoZXJlIGFyZSBtb3JlIFJGRHMgdG8gcHJvY2VzcyBhbmQgdGhlIGFsbG9jYXRlZCBhbW91bnQgb2YgUkZECiAJICogcHJvY2Vzc2luZyB0aW1lIGhhcyBleHBpcmVkLCBhc3NlcnQgSW50ZXJydXB0IFJlcXVlc3RlZCB0byBtYWtlCiAJICogc3VyZSB3ZSBjb21lIGJhY2sgdG8gcHJvY2VzcyB0aGUgcmVtYWluaW5nIFJGRHMuCiAJICovCkBAIC0xODg2LDcgKzE4ODYsNyBAQAogCS8qIFJlcXVlc3QgVHhDb21wbGV0ZSBpbnRlcnJ1cHRzIGF0IGFuIGludGVydmFsIGRlZmluZWQKIAkgKiBieSB0aGUgY29uc3RhbnQgSVBHX0ZSQU1FU0JFVFdFRU5UWENPTVBMRVRFUy4KIAkgKiBSZXF1ZXN0IFR4Q29tcGxldGUgaW50ZXJydXB0IGZvciBldmVyeSBmcmFtZQotCSAqIGlmIGluIDEwTWJwcyBtb2RlIHRvIGFjY29tb2RhdGUgcHJvYmxlbSB3aXRoIDEwTWJwcworCSAqIGlmIGluIDEwTWJwcyBtb2RlIHRvIGFjY29tbW9kYXRlIHByb2JsZW0gd2l0aCAxME1icHMKIAkgKiBwcm9jZXNzaW5nLgogCSAqLwogCWlmIChzcC0+dGVubWJwc21vZGUpCkBAIC0yMDk4LDcgKzIwOTgsNyBAQAogCXN0cnVjdCBpcGdfbmljX3ByaXZhdGUgKnNwID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAlpbnQgZXJyOwogCi0JLyogRnVuY3Rpb24gdG8gYWNjb21vZGF0ZSBjaGFuZ2VzIHRvIE1heGltdW0gVHJhbnNmZXIgVW5pdAorCS8qIEZ1bmN0aW9uIHRvIGFjY29tbW9kYXRlIGNoYW5nZXMgdG8gTWF4aW11bSBUcmFuc2ZlciBVbml0CiAJICogKG9yIE1UVSkgb2YgSVBHIE5JQy4gQ2Fubm90IHVzZSBkZWZhdWx0IGZ1bmN0aW9uIHNpbmNlCiAJICogdGhlIGRlZmF1bHQgd2lsbCBub3QgYWxsb3cgZm9yIE1UVSA+IDE1MDAgYnl0ZXMuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2FsaS1pcmNjLmMgYi9kcml2ZXJzL25ldC9pcmRhL2FsaS1pcmNjLmMKaW5kZXggOTI2MzFlYi4uODcyMTgzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9hbGktaXJjYy5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvYWxpLWlyY2MuYwpAQCAtNzYsNyArNzYsNyBAQAogc3RhdGljIGludCAgYWxpX2lyY2NfaW5pdF80MyhhbGlfY2hpcF90ICpjaGlwLCBjaGlwaW9fdCAqaW5mbyk7CiBzdGF0aWMgaW50ICBhbGlfaXJjY19pbml0XzUzKGFsaV9jaGlwX3QgKmNoaXAsIGNoaXBpb190ICppbmZvKTsKIAotLyogVGhlc2UgYXJlIHRoZSBjdXJyZW50bHkga25vd24gQUxpIHNvdXJ0aC1icmlkZ2UgY2hpcHNldHMsIHRoZSBvbmx5IG9uZSBkaWZmZXJlbmNlCisvKiBUaGVzZSBhcmUgdGhlIGN1cnJlbnRseSBrbm93biBBTGkgc291dGgtYnJpZGdlIGNoaXBzZXRzLCB0aGUgb25seSBvbmUgZGlmZmVyZW5jZQogICogaXMgdGhhdCBNMTU0M0MgZG9lc24ndCBzdXBwb3J0IEhQIEhEU0wtMzYwMAogICovCiBzdGF0aWMgYWxpX2NoaXBfdCBjaGlwc1tdID0KQEAgLTExMDgsNyArMTEwOCw3IEBACiAJb3V0YihsY3IsCQkgIGlvYmFzZStVQVJUX0xDUik7IC8qIFNldCA4TjEJKi8KIAlvdXRiKGZjciwJCSAgaW9iYXNlK1VBUlRfRkNSKTsgLyogRW5hYmxlIEZJRk8ncyAqLwogCi0JLyogd2l0aG91dCB0aGlzLCB0aGUgY29uZWN0aW9uIHdpbGwgYmUgYnJva2VuIGFmdGVyIGNvbWUgYmFjayBmcm9tIEZJUiBzcGVlZCwKKwkvKiB3aXRob3V0IHRoaXMsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgYnJva2VuIGFmdGVyIGNvbWUgYmFjayBmcm9tIEZJUiBzcGVlZCwKIAkgICBidXQgd2l0aCB0aGlzLCB0aGUgU0lSIGNvbm5lY3Rpb24gaXMgaGFyZGVyIHRvIGVzdGFibGlzaGVkICovCiAJb3V0YigoVUFSVF9NQ1JfRFRSIHwgVUFSVF9NQ1JfUlRTIHwgVUFSVF9NQ1JfT1VUMiksIGlvYmFzZStVQVJUX01DUik7CiAJCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmMgYi9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmMKaW5kZXggZjgxZDk0NC4uMTc0Y2FmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuYwpAQCAtNTYsNyArNTYsNyBAQAogLyogZG9fcHJvYmUgbW9kdWxlIHBhcmFtZXRlciBFbmFibGUgdGhpcyBjb2RlICovCiAvKiBQcm9iZSBjb2RlIGlzIHZlcnkgdXNlZnVsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgd29ya3MgKi8KIC8qIFVzZSBpdCB3aXRoIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIFRUX0xFTiwgUlhfTEVOICovCi0vKiBTdHJvbmdseSByZWNvbWVuZGVkLCBkaXNhYmxlIGlmIHRoZSBwcm9iZSBmYWlscyBvbiB5b3VyIG1hY2hpbmUgKi8KKy8qIFN0cm9uZ2x5IHJlY29tbWVuZGVkLCBkaXNhYmxlIGlmIHRoZSBwcm9iZSBmYWlscyBvbiB5b3VyIG1hY2hpbmUgKi8KIC8qIGFuZCBzZW5kIG1lIDxqYW1lc0BmaXNoc291cC5kaHMub3JnPiB0aGUgb3V0cHV0IG9mIGRtZXNnICovCiAjZGVmaW5lIFVTRV9QUk9CRSAxCiAjdW5kZWYgIFVTRV9QUk9CRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5oIGIvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5oCmluZGV4IDc3ZmNmNDQuLmQ5MmQ1NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuaAorKysgYi9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmgKQEAgLTUxLDcgKzUxLDcgQEAKIAogLyogVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2hpcCBpcyBhbGxlZ2VkbHkgcmVsZWFzZWQgICAgICAgICAqLwogLyogSG93ZXZlciBJIGhhdmUgbm90IHNlZW4gaXQsIG5vdCBoYXZlIEkgbWFuYWdlZCB0byBjb250YWN0ICAgICAqLwotLyogYW55b25lIHdobyBoYXMuIEhPV0VWRVIgdGhlIGNoaXAgYmVhcnMgYSBzdHJpa2luZyByZXNlbWJsZW5jZSAqLworLyogYW55b25lIHdobyBoYXMuIEhPV0VWRVIgdGhlIGNoaXAgYmVhcnMgYSBzdHJpa2luZyByZXNlbWJsYW5jZSAqLwogLyogdG8gdGhlIElyREEgY29udHJvbGxlciBpbiB0aGUgVG9zaGliYSBSSVNDIFRNUFIzOTIyIGNoaXAgICAgICAqLwogLyogdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgaXMgZnJlZWx5IGF2YWlsYWJsZSBhdCAgICAgICAgICAgICAqLwogLyogaHR0cDovL3d3dy5tYWRpbmdsZXkub3JnL2phbWVzL3Jlc291cmNlcy90b3Nob2JvZS9UTVBSMzkyMi5wZGYgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jIGIvZHJpdmVycy9uZXQvaXJkYS9naXJiaWwtc2lyLmMKaW5kZXggYTMxYjhmYS4uOTZjZGVjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9naXJiaWwtc2lyLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9naXJiaWwtc2lyLmMKQEAgLTM4LDcgKzM4LDcgQEAKIC8qIENvbnRyb2wgcmVnaXN0ZXIgMSAqLwogI2RlZmluZSBHSVJCSUxfVFhFTiAgICAweDAxIC8qIEVuYWJsZSB0cmFuc21pdHRlciAqLwogI2RlZmluZSBHSVJCSUxfUlhFTiAgICAweDAyIC8qIEVuYWJsZSByZWNlaXZlciAqLwotI2RlZmluZSBHSVJCSUxfRUNBTiAgICAweDA0IC8qIENhbmNlbCBzZWxmIGVtbWl0ZWQgZGF0YSAqLworI2RlZmluZSBHSVJCSUxfRUNBTiAgICAweDA0IC8qIENhbmNlbCBzZWxmIGVtaXR0ZWQgZGF0YSAqLwogI2RlZmluZSBHSVJCSUxfRUNITyAgICAweDA4IC8qIEVjaG8gY29udHJvbCBjaGFyYWN0ZXJzICovCiAKIC8qIExFRCBDdXJyZW50IFJlZ2lzdGVyICgweDIpICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2lyZGEtdXNiLmMgYi9kcml2ZXJzL25ldC9pcmRhL2lyZGEtdXNiLmMKaW5kZXggZTRlYTYxOS4uZDkyNjdjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9pcmRhLXVzYi5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvaXJkYS11c2IuYwpAQCAtMzcwLDcgKzM3MCw3IEBACiAJLyogdXJiIGlzIG5vdyBhdmFpbGFibGUgKi8KIAkvL3VyYi0+c3RhdHVzID0gMDsgLT4gdGVzdGVkIGFib3ZlCiAKLQkvKiBOZXcgc3BlZWQgYW5kIHhib2YgaXMgbm93IGNvbW1pdGVkIGluIGhhcmR3YXJlICovCisJLyogTmV3IHNwZWVkIGFuZCB4Ym9mIGlzIG5vdyBjb21taXR0ZWQgaW4gaGFyZHdhcmUgKi8KIAlzZWxmLT5uZXdfc3BlZWQgPSAtMTsKIAlzZWxmLT5uZXdfeGJvZnMgPSAtMTsKIApAQCAtNjAyLDcgKzYwMiw3IEBACiAJCQlJUkRBX0RFQlVHKDEsICIlcygpLCBDaGFuZ2luZyBzcGVlZCBub3cuLi5cbiIsIF9fZnVuY19fKTsKIAkJCWlyZGFfdXNiX2NoYW5nZV9zcGVlZF94Ym9mcyhzZWxmKTsKIAkJfSBlbHNlIHsKLQkJCS8qIE5ldyBzcGVlZCBhbmQgeGJvZiBpcyBub3cgY29tbWl0ZWQgaW4gaGFyZHdhcmUgKi8KKwkJCS8qIE5ldyBzcGVlZCBhbmQgeGJvZiBpcyBub3cgY29tbWl0dGVkIGluIGhhcmR3YXJlICovCiAJCQlzZWxmLT5uZXdfc3BlZWQgPSAtMTsKIAkJCXNlbGYtPm5ld194Ym9mcyA9IC0xOwogCQkJLyogRG9uZSwgd2FpdGluZyBmb3IgbmV4dCBwYWNrZXQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvbWNzNzc4MC5jIGIvZHJpdmVycy9uZXQvaXJkYS9tY3M3NzgwLmMKaW5kZXggY2M4MjFkZS4uYmU1MmJmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9tY3M3NzgwLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9tY3M3NzgwLmMKQEAgLTU4OCw3ICs1ODgsNyBAQAogCiAJbWNzX2dldF9yZWcobWNzLCBNQ1NfTU9ERV9SRUcsICZydmFsKTsKIAotCS8qIE1JTlJYUFcgdmFsdWVzIHJlY29tZW5kZWQgYnkgTW9zQ2hpcCAqLworCS8qIE1JTlJYUFcgdmFsdWVzIHJlY29tbWVuZGVkIGJ5IE1vc0NoaXAgKi8KIAlpZiAobWNzLT5uZXdfc3BlZWQgPD0gMTE1MjAwKSB7CiAJCXJ2YWwgJj0gfk1DU19GSVI7CiAKQEAgLTc5OSw3ICs3OTksNyBAQAogCXJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CiB9CiAKLS8qIFRyYW5zbWl0IGNhbGxiYWNrIGZ1bnRpb24uICAqLworLyogVHJhbnNtaXQgY2FsbGJhY2sgZnVuY3Rpb24uICAqLwogc3RhdGljIHZvaWQgbWNzX3NlbmRfaXJxKHN0cnVjdCB1cmIgKnVyYikKIHsKIAlzdHJ1Y3QgbWNzX2NiICptY3MgPSB1cmItPmNvbnRleHQ7CkBAIC04MTEsNyArODExLDcgQEAKIAkJbmV0aWZfd2FrZV9xdWV1ZShuZGV2KTsKIH0KIAotLyogVHJhbnNtaXQgY2FsbGJhY2sgZnVudGlvbi4gICovCisvKiBUcmFuc21pdCBjYWxsYmFjayBmdW5jdGlvbi4gICovCiBzdGF0aWMgbmV0ZGV2X3R4X3QgbWNzX2hhcmRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuYyBiL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuYwppbmRleCA1NTlmZTg1Li43YTk2M2Q0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5jCkBAIC03MTYsNyArNzE2LDcgQEAKIAlpbnQgcmVnLCBjb20gPSAwOwogCWludCBwbnA7CiAKLQkvKiBSZWFkIGZ1bnRpb24gZW5hYmxlIHJlZ2lzdGVyIChGRVIpICovCisJLyogUmVhZCBmdW5jdGlvbiBlbmFibGUgcmVnaXN0ZXIgKEZFUikgKi8KIAlvdXRiKENGR18zMzhfRkVSLCBjZmdfYmFzZSk7CiAJcmVnID0gaW5iKGNmZ19iYXNlKzEpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmggYi9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmgKaW5kZXggN2JhNzczOC4uMzJmYTU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5oCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuaApAQCAtMTM1LDcgKzEzNSw3IEBACiAjZGVmaW5lIExTUl9UWFJEWSAgICAgICAweDIwIC8qIFRyYW5zbWl0dGVyIHJlYWR5ICovCiAjZGVmaW5lIExTUl9UWEVNUCAgICAgICAweDQwIC8qIFRyYW5zbWl0dGVyIGVtcHR5ICovCiAKLSNkZWZpbmUgQVNDUiAgICAgICAgICAgIDB4MDcgLyogQXV4aWxsYXJ5IFN0YXR1cyBhbmQgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBBU0NSICAgICAgICAgICAgMHgwNyAvKiBBdXhpbGlhcnkgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyICovCiAjZGVmaW5lIEFTQ1JfUlhGX1RPVVQgICAweDAxIC8qIFJ4IEZJRk8gdGltZW91dCAqLwogI2RlZmluZSBBU0NSX0ZFTkRfSU5GICAgMHgwMiAvKiBGcmFtZSBlbmQgYnl0ZXMgaW4gcnggRklGTyAqLwogI2RlZmluZSBBU0NSX1NfRU9UICAgICAgMHgwNCAvKiBTZXQgZW5kIG9mIHRyYW5zbWlzc2lvbiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9weGFmaWNwX2lyLmMgYi9kcml2ZXJzL25ldC9pcmRhL3B4YWZpY3BfaXIuYwppbmRleCBjMTkyYzMxLi4wMDFlZDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL3B4YWZpY3BfaXIuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL3B4YWZpY3BfaXIuYwpAQCAtNDAsNyArNDAsNyBAQAogCiAjZGVmaW5lIElDQ1IwX0FNRQkoMSA8PCA3KQkvKiBBZGRyZXNzIG1hdGNoIGVuYWJsZSAqLwogI2RlZmluZSBJQ0NSMF9USUUJKDEgPDwgNikJLyogVHJhbnNtaXQgRklGTyBpbnRlcnJ1cHQgZW5hYmxlICovCi0jZGVmaW5lIElDQ1IwX1JJRQkoMSA8PCA1KQkvKiBSZWNpZXZlIEZJRk8gaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSBJQ0NSMF9SSUUJKDEgPDwgNSkJLyogUmVjZWl2ZSBGSUZPIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgSUNDUjBfUlhFCSgxIDw8IDQpCS8qIFJlY2VpdmUgZW5hYmxlICovCiAjZGVmaW5lIElDQ1IwX1RYRQkoMSA8PCAzKQkvKiBUcmFuc21pdCBlbmFibGUgKi8KICNkZWZpbmUgSUNDUjBfVFVTCSgxIDw8IDIpCS8qIFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gc2VsZWN0ICovCkBAIC00ODMsNyArNDgzLDcgQEAKIAl9CiAKIAlpZiAoaWNzcjAgJiBJQ1NSMF9FSUYpIHsKLQkJLyogQW4gZXJyb3IgaW4gRklGTyBvY2N1cmVkLCBvciB0aGVyZSBpcyBhIGVuZCBvZiBmcmFtZSAqLworCQkvKiBBbiBlcnJvciBpbiBGSUZPIG9jY3VycmVkLCBvciB0aGVyZSBpcyBhIGVuZCBvZiBmcmFtZSAqLwogCQlweGFfaXJkYV9maXJfaXJxX2VpZihzaSwgZGV2LCBpY3NyMCk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL3Ntc2MtaXJjYzIuYyBiL2RyaXZlcnMvbmV0L2lyZGEvc21zYy1pcmNjMi5jCmluZGV4IDFjMTY3N2MuLjg4MDBlMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvc21zYy1pcmNjMi5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvc21zYy1pcmNjMi5jCkBAIC0xNTgyLDcgKzE1ODIsNyBAQAogCWludCBpb2Jhc2U7CiAJaW50IGlpciwgbHNyOwogCi0JLyogQWxyZWFkeSBsb2NrZWQgY29tbWluZyBoZXJlIGluIHNtc2NfaXJjY19pbnRlcnJ1cHQoKSAqLworCS8qIEFscmVhZHkgbG9ja2VkIGNvbWluZyBoZXJlIGluIHNtc2NfaXJjY19pbnRlcnJ1cHQoKSAqLwogCS8qc3Bpbl9sb2NrKCZzZWxmLT5sb2NrKTsqLwogCiAJaW9iYXNlID0gc2VsZi0+aW8uc2lyX2Jhc2U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL3ZpYS1pcmNjLmMgYi9kcml2ZXJzL25ldC9pcmRhL3ZpYS1pcmNjLmMKaW5kZXggNjdjMGFkNC4uZmM4OTY4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS92aWEtaXJjYy5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvdmlhLWlyY2MuYwpAQCAtMjksNyArMjksNyBAQAogCiAyMDA0LTAyLTE2OiA8c2RhQGJkaXQuZGU+CiAtIFJlbW92ZWQgdW5uZWVkZWQgJ2xlZ2FjeScgcGNpIHN0dWZmLgotLSBNYWtlIHN1cmUgU0lSIG1vZGUgaXMgc2V0IChod19pbml0KCkpIGJlZm9yZSBjYWxsaW5nIG1vZGUtZGVwZW5kYW50IHN0dWZmLgorLSBNYWtlIHN1cmUgU0lSIG1vZGUgaXMgc2V0IChod19pbml0KCkpIGJlZm9yZSBjYWxsaW5nIG1vZGUtZGVwZW5kZW50IHN0dWZmLgogLSBPbiBzcGVlZCBjaGFuZ2UgZnJvbSBjb3JlLCBkb24ndCBzZW5kIFNJUiBmcmFtZSB3aXRoIG5ldyBzcGVlZC4gCiAgIFVzZSBjdXJyZW50IHNwZWVkIGFuZCBjaGFuZ2Ugc3BlZWRzIGxhdGVyLgogLSBNYWtlIG1vZHVsZS1wYXJhbSBkb25nbGVfaWQgYWN0dWFsbHkgd29yay4KQEAgLTM4NSw3ICszODUsNyBAQAogCXNlbGYtPmlvLmRvbmdsZV9pZCA9IGRvbmdsZV9pZDsKIAogCS8qIFRoZSBvbmx5IHZhbHVlIHdlIG11c3Qgb3ZlcnJpZGUgaXQgdGhlIGJhdWRyYXRlICovCi0JLyogTWF4aW11bSBzcGVlZHMgYW5kIGNhcGFiaWxpdGllcyBhcmUgZG9uZ2xlLWRlcGVuZGFudC4gKi8KKwkvKiBNYXhpbXVtIHNwZWVkcyBhbmQgY2FwYWJpbGl0aWVzIGFyZSBkb25nbGUtZGVwZW5kZW50LiAqLwogCXN3aXRjaCggc2VsZi0+aW8uZG9uZ2xlX2lkICl7CiAJY2FzZSAweDBkOgogCQlzZWxmLT5xb3MuYmF1ZF9yYXRlLmJpdHMgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS92bHNpX2lyLmggYi9kcml2ZXJzL25ldC9pcmRhL3Zsc2lfaXIuaAppbmRleCBkNjZmYWI4Li5hMDc2ZWIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL3Zsc2lfaXIuaAorKysgYi9kcml2ZXJzL25ldC9pcmRhL3Zsc2lfaXIuaApAQCAtMjA5LDcgKzIwOSw3IEBACiAJSVJJTlRSX0FDVEVOCT0gMHg4MCwJLyogYWN0aXZpdHkgaW50ZXJydXB0IGVuYWJsZSAqLwogCUlSSU5UUl9BQ1RJVklUWQk9IDB4NDAsCS8qIGFjdGl2aXR5IG1vbml0b3IgKHRyYWZmaWMgZGV0ZWN0ZWQpICovCiAJSVJJTlRSX1JQS1RFTgk9IDB4MjAsCS8qIHJlY2VpdmUgcGFja2V0IGludGVycnVwdCBlbmFibGUqLwotCUlSSU5UUl9SUEtUSU5UCT0gMHgxMCwJLyogcngtcGFja2V0IHRyYW5zZmVyZWQgZnJvbSBmaWZvIHRvIG1lbW9yeSBmaW5pc2hlZCAqLworCUlSSU5UUl9SUEtUSU5UCT0gMHgxMCwJLyogcngtcGFja2V0IHRyYW5zZmVycmVkIGZyb20gZmlmbyB0byBtZW1vcnkgZmluaXNoZWQgKi8KIAlJUklOVFJfVFBLVEVOCT0gMHgwOCwJLyogdHJhbnNtaXQgcGFja2V0IGludGVycnVwdCBlbmFibGUgKi8KIAlJUklOVFJfVFBLVElOVAk9IDB4MDQsCS8qIGxhc3QgYml0IG9mIHR4LXBhY2tldCtjcmMgc2hpZnRlZCB0byBpci1wdWxzZXIgKi8KIAlJUklOVFJfT0VfRU4JPSAweDAyLAkvKiBVQVJUIHJ4IGZpZm8gb3ZlcnJ1biBlcnJvciBpbnRlcnJ1cHQgZW5hYmxlICovCkBAIC03MzksNyArNzM5LDcgQEAKIC8qIHRoZSByZW1hcHBlZCBlcnJvciBmbGFncyB3ZSB1c2UgZm9yIHJldHVybmluZyBmcm9tIGZyYW1lCiAgKiBwb3N0LXByb2Nlc3NpbmcgaW4gdmxzaV9wcm9jZXNzX3R4L3J4KCkgYWZ0ZXIgaXQgd2FzIGNvbXBsZXRlZAogICogYnkgdGhlIGhhcmR3YXJlLiBUaGVzZSBmdW5jdGlvbnMgZWl0aGVyIHJldHVybiB0aGUgPj0wIG51bWJlcgotICogb2YgdHJhbnNmZXJlZCBieXRlcyBpbiBjYXNlIG9mIHN1Y2Nlc3Mgb3IgdGhlIG5lZ2F0aXZlICgtKQorICogb2YgdHJhbnNmZXJyZWQgYnl0ZXMgaW4gY2FzZSBvZiBzdWNjZXNzIG9yIHRoZSBuZWdhdGl2ZSAoLSkKICAqIG9mIHRoZSBvcidlZCBlcnJvciBmbGFncy4KICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2IuYyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYi5jCmluZGV4IDQxYzUyOWYuLjY4NmExN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYi5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYi5jCkBAIC0zNiw3ICszNiw3IEBACiAvKioKICAqIGl4Z2JlX2llZWVfY3JlZGl0cyAtIFRoaXMgY2FsY3VsYXRlcyB0aGUgaWVlZSB0cmFmZmljIGNsYXNzCiAgKiBjcmVkaXRzIGZyb20gdGhlIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIHBlcmNlbnRhZ2VzLiBDcmVkaXRzCi0gKiBhcmUgdGhlIHNtYWxsZXN0IHVuaXQgcHJvZ3JhbWFibGUgaW50byB0aGUgdW5kZXJseWluZworICogYXJlIHRoZSBzbWFsbGVzdCB1bml0IHByb2dyYW1tYWJsZSBpbnRvIHRoZSB1bmRlcmx5aW5nCiAgKiBoYXJkd2FyZS4gVGhlIElFRUUgODAyLjFRYXogc3BlY2lmaWNhdGlvbiBkbyBub3QgdXNlIGJhbmR3aWR0aAogICogZ3JvdXBzIHNvIHRoaXMgaXMgbXVjaCBzaW1wbGlmaWVkIGZyb20gdGhlIENFRSBjYXNlLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2JfbmwuYyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYl9ubC5jCmluZGV4IGZlYzRjNzIuLjMyN2M4NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYl9ubC5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYl9ubC5jCkBAIC0zNjAsNyArMzYwLDcgQEAKIAkJcmV0dXJuIERDQl9OT19IV19DSEc7CiAKIAkvKgotCSAqIE9ubHkgdGFrZSBkb3duIHRoZSBhZGFwdGVyIGlmIGFuIGFwcCBjaGFuZ2Ugb2NjdXJlZC4gRkNvRQorCSAqIE9ubHkgdGFrZSBkb3duIHRoZSBhZGFwdGVyIGlmIGFuIGFwcCBjaGFuZ2Ugb2NjdXJyZWQuIEZDb0UKIAkgKiBtYXkgc2h1ZmZsZSB0eCByaW5ncyBpbiB0aGlzIGNhc2UgYW5kIHRoaXMgY2FuIG5vdCBiZSBkb25lCiAJICogd2l0aG91dCBhIHJlc2V0IGN1cnJlbnRseS4KIAkgKi8KQEAgLTU5OSw3ICs1OTksNyBAQAogCQkJCWJyZWFrOwogCiAJCQkvKiBUaGUgRkNvRSBhcHBsaWNhdGlvbiBwcmlvcml0eSBtYXkgYmUgY2hhbmdlZCBtdWx0aXBsZQotCQkJICogdGltZXMgaW4gcXVpY2sgc3VjZXNzaW9uIHdpdGggc3dpdGNoZXMgdGhhdCBidWlsZCB1cAorCQkJICogdGltZXMgaW4gcXVpY2sgc3VjY2Vzc2lvbiB3aXRoIHN3aXRjaGVzIHRoYXQgYnVpbGQgdXAKIAkJCSAqIFRMVnMuIFRvIGF2b2lkIGNyZWF0aW5nIHVuZWVkZWQgZGV2aWNlIHJlc2V0cyB0aGlzCiAJCQkgKiBjaGVja3MgdGhlIGFjdHVhbCBIVyBjb25maWd1cmF0aW9uIGFuZCBjbGVhcnMKIAkJCSAqIEJJVF9BUFBfVVBDSEcgaWYgYSBIVyBjb25maWd1cmF0aW9uIGNoYW5nZSBpcyBub3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYwppbmRleCBmMTdlNGE3Li42ZjhhZGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfbWFpbi5jCkBAIC02NDQsNyArNjQ0LDcgQEAKICAqIEBhZGFwdGVyOiBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3QKICAqIEBpbmRleDogcmVnIGlkeCBvZiBxdWV1ZSB0byBxdWVyeSAoMC0xMjcpCiAgKgotICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB0aGUgdHJhZmZpYyBpbmRleCBmb3IgYSBwYXRpY3VsYXIKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHRyYWZmaWMgaW5kZXggZm9yIGEgcGFydGljdWxhcgogICogcmVnaXN0ZXIgaW5kZXguCiAgKgogICogUmV0dXJucyA6IGEgdGMgaW5kZXggZm9yIHVzZSBpbiByYW5nZSAwLTcsIG9yIDAtMwpAQCAtMzU1Niw3ICszNTU2LDcgQEAKIAkJfSBlbHNlIHsKIAkJCS8qCiAJCQkgKiBXcml0ZSBhZGRyZXNzZXMgdG8gdGhlIE1UQSwgaWYgdGhlIGF0dGVtcHQgZmFpbHMKLQkJCSAqIHRoZW4gd2Ugc2hvdWxkIGp1c3QgdHVybiBvbiBwcm9taXNjb3VzIG1vZGUgc28KKwkJCSAqIHRoZW4gd2Ugc2hvdWxkIGp1c3QgdHVybiBvbiBwcm9taXNjdW91cyBtb2RlIHNvCiAJCQkgKiB0aGF0IHdlIGNhbiBhdCBsZWFzdCByZWNlaXZlIG11bHRpY2FzdCB0cmFmZmljCiAJCQkgKi8KIAkJCWh3LT5tYWMub3BzLnVwZGF0ZV9tY19hZGRyX2xpc3QoaHcsIG5ldGRldik7CkBAIC0zNTY3LDcgKzM1NjcsNyBAQAogCQkvKgogCQkgKiBXcml0ZSBhZGRyZXNzZXMgdG8gYXZhaWxhYmxlIFJBUiByZWdpc3RlcnMsIGlmIHRoZXJlIGlzIG5vdAogCQkgKiBzdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGFsbCB0aGUgYWRkcmVzc2VzIHRoZW4gZW5hYmxlCi0JCSAqIHVuaWNhc3QgcHJvbWlzY291cyBtb2RlCisJCSAqIHVuaWNhc3QgcHJvbWlzY3VvdXMgbW9kZQogCQkgKi8KIAkJY291bnQgPSBpeGdiZV93cml0ZV91Y19hZGRyX2xpc3QobmV0ZGV2KTsKIAkJaWYgKGNvdW50IDwgMCkgewpAQCAtNDQ0Myw3ICs0NDQzLDcgQEAKIH0KIAogLyoKLSAqIGl4Z2JlX3NldF9udW1fcXVldWVzOiBBbGxvY2F0ZSBxdWV1ZXMgZm9yIGRldmljZSwgZmVhdHVyZSBkZXBlbmRhbnQKKyAqIGl4Z2JlX3NldF9udW1fcXVldWVzOiBBbGxvY2F0ZSBxdWV1ZXMgZm9yIGRldmljZSwgZmVhdHVyZSBkZXBlbmRlbnQKICAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplCiAgKgogICogVGhpcyBpcyB0aGUgdG9wIGxldmVsIHF1ZXVlIGFsbG9jYXRpb24gcm91dGluZS4gIFRoZSBvcmRlciBoZXJlIGlzIHZlcnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3BoeS5jIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcGh5LmMKaW5kZXggZjcyZjcwNS4uZGY1YjhhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcGh5LmMKQEAgLTE2OTQsNyArMTY5NCw3IEBACiB9CiAKIC8qKgotICogIGl4Z2JlX3RuX2NoZWNrX292ZXJ0ZW1wIC0gQ2hlY2tzIGlmIGFuIG92ZXJ0ZW1wIG9jY3VyZWQuCisgKiAgaXhnYmVfdG5fY2hlY2tfb3ZlcnRlbXAgLSBDaGVja3MgaWYgYW4gb3ZlcnRlbXAgb2NjdXJyZWQuCiAgKiAgQGh3OiBwb2ludGVyIHRvIGhhcmR3YXJlIHN0cnVjdHVyZQogICoKICAqICBDaGVja3MgaWYgdGhlIExBU0kgdGVtcCBhbGFybSBzdGF0dXMgd2FzIHRyaWdnZXJlZCBkdWUgdG8gb3ZlcnRlbXAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3g1NDAuYyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3g1NDAuYwppbmRleCBmNDdlOTNmLi5kOTMyM2MwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV94NTQwLmMKKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfeDU0MC5jCkBAIC01NzMsNyArNTczLDcgQEAKICAqIEBodzogcG9pbnRlciB0byBoYXJkd2FyZSBzdHJ1Y3R1cmUKICAqIEBtYXNrOiBNYXNrIHRvIHNwZWNpZnkgd2hpY2ggc2VtYXBob3JlIHRvIHJlbGVhc2UKICAqCi0gKiBSZWxlYXNlcyB0aGUgU1dGVyBzZW1hcGhvcmUgdGhyb3VnaHQgdGhlIFNXX0ZXX1NZTkMgcmVnaXN0ZXIKKyAqIFJlbGVhc2VzIHRoZSBTV0ZXIHNlbWFwaG9yZSB0aHJvdWdoIHRoZSBTV19GV19TWU5DIHJlZ2lzdGVyCiAgKiBmb3IgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiAoQ1NSLCBQSFkwLCBQSFkxLCBFVk0sIEZsYXNoKQogICoqLwogc3RhdGljIHZvaWQgaXhnYmVfcmVsZWFzZV9zd2Z3X3N5bmNfWDU0MChzdHJ1Y3QgaXhnYmVfaHcgKmh3LCB1MTYgbWFzaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jCmluZGV4IDA1NGFiMDUuLjA1ZmE3YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvaXhnYmV2Zi9peGdiZXZmX21haW4uYwpAQCAtMTkyNSw3ICsxOTI1LDcgQEAKIH0KIAogLyoKLSAqIGl4Z2JldmZfc2V0X251bV9xdWV1ZXM6IEFsbG9jYXRlIHF1ZXVlcyBmb3IgZGV2aWNlLCBmZWF0dXJlIGRlcGVuZGFudAorICogaXhnYmV2Zl9zZXRfbnVtX3F1ZXVlczogQWxsb2NhdGUgcXVldWVzIGZvciBkZXZpY2UsIGZlYXR1cmUgZGVwZW5kZW50CiAgKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUgdG8gaW5pdGlhbGl6ZQogICoKICAqIFRoaXMgaXMgdGhlIHRvcCBsZXZlbCBxdWV1ZSBhbGxvY2F0aW9uIHJvdXRpbmUuICBUaGUgb3JkZXIgaGVyZSBpcyB2ZXJ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9rczg4NDIuYyBiL2RyaXZlcnMvbmV0L2tzODg0Mi5jCmluZGV4IGVmZDQ0YWYuLmYwZDgzNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2tzODg0Mi5jCisrKyBiL2RyaXZlcnMvbmV0L2tzODg0Mi5jCkBAIC0zMjEsNyArMzIxLDcgQEAKIAkvKiBSWCAyIGtiIGhpZ2ggd2F0ZXJtYXJrICovCiAJa3M4ODQyX3dyaXRlMTYoYWRhcHRlciwgMCwgMHgxMDAwLCBSRUdfUVJGQ1IpOwogCi0JLyogYWdncmVzaXZlIGJhY2sgb2ZmIGluIGhhbGYgZHVwbGV4ICovCisJLyogYWdncmVzc2l2ZSBiYWNrIG9mZiBpbiBoYWxmIGR1cGxleCAqLwogCWtzODg0Ml9lbmFibGVfYml0cyhhZGFwdGVyLCAzMiwgMSA8PCA4LCBSRUdfU0dDUjEpOwogCiAJLyogZW5hYmxlIG5vIGV4Y2Vzc2l2ZSBjb2xsaXNvbiBkcm9wICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9rczg4NTEuYyBiL2RyaXZlcnMvbmV0L2tzODg1MS5jCmluZGV4IDBmYTRhOTguLmJjZDliYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2tzODg1MS5jCisrKyBiL2RyaXZlcnMvbmV0L2tzODg1MS5jCkBAIC0xNDEsNyArMTQxLDcgQEAKICAqCiAgKiBBbGwgdGhlc2UgY2FsbHMgaXNzdWUgU1BJIHRyYW5zYWN0aW9ucyB0byBhY2Nlc3MgdGhlIGNoaXAncyByZWdpc3RlcnMuIFRoZXkKICAqIGFsbCByZXF1aXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBsb2NrIGlzIGhlbGQgdG8gcHJldmVudCBhY2Nlc3NlcyB3aGVuIHRoZQotICogY2hpcCBpcyBidXN5IHRyYW5zZmVyaW5nIHBhY2tldCBkYXRhIChSWC9UWCBGSUZPIGFjY2Vzc2VzKS4KKyAqIGNoaXAgaXMgYnVzeSB0cmFuc2ZlcnJpbmcgcGFja2V0IGRhdGEgKFJYL1RYIEZJRk8gYWNjZXNzZXMpLgogICovCiAKIC8qKgpAQCAtNDgzLDcgKzQ4Myw3IEBACiAJICoKIAkgKiBUaGlzIGZvcm0gb2Ygb3BlcmF0aW9uIHdvdWxkIHJlcXVpcmUgdXMgdG8gaG9sZCB0aGUgU1BJIGJ1cycKIAkgKiBjaGlwc2VsZWN0IGxvdyBkdXJpbmcgdGhlIGVudGllIHRyYW5zYWN0aW9uIHRvIGF2b2lkIGFueQotCSAqIHJlc2V0IHRvIHRoZSBkYXRhIHN0cmVhbSBjb21taW5nIGZyb20gdGhlIGNoaXAuCisJICogcmVzZXQgdG8gdGhlIGRhdGEgc3RyZWFtIGNvbWluZyBmcm9tIHRoZSBjaGlwLgogCSAqLwogCiAJZm9yICg7IHJ4ZmMgIT0gMDsgcnhmYy0tKSB7CkBAIC02MzQsNyArNjM0LDcgQEAKIAogLyoqCiAgKiBjYWxjX3R4bGVuIC0gY2FsY3VsYXRlIHNpemUgb2YgbWVzc2FnZSB0byBzZW5kIHBhY2tldAotICogQGxlbjogTGVuZ2h0IG9mIGRhdGEKKyAqIEBsZW46IExlbmd0aCBvZiBkYXRhCiAgKgogICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgVFhGSUZPIG1lc3NhZ2UgbmVlZGVkIHRvIHNlbmQKICAqIHRoaXMgcGFja2V0LgpAQCAtMTQ3Miw3ICsxNDcyLDcgQEAKICAqIEByZWc6IFRoZSByZWdpc3RlciB0byByZWFkLgogICoKICAqIFRoaXMgY2FsbCByZWFkcyBkYXRhIGZyb20gdGhlIFBIWSByZWdpc3RlciBzcGVjaWZpZWQgaW4gQHJlZy4gU2luY2UgdGhlCi0gKiBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIE1JSSByZWdpc3RlcnMsIHRoZSBub24tZXhpc3RhbnQgdmFsdWVzCisgKiBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIE1JSSByZWdpc3RlcnMsIHRoZSBub24tZXhpc3RlbnQgdmFsdWVzCiAgKiBhcmUgYWx3YXlzIHJldHVybmVkIGFzIHplcm8uCiAgKgogICogV2UgcmV0dXJuIHplcm8gZm9yIHVuc3VwcG9ydGVkIHJlZ2lzdGVycyBhcyB0aGUgTUlJIGNvZGUgZG9lcyBub3QgY2hlY2sKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2tzODg1MV9tbGwuYyBiL2RyaXZlcnMvbmV0L2tzODg1MV9tbGwuYwppbmRleCAyZTJjNjliLi42MTYzMWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9rczg4NTFfbWxsLmMKKysrIGIvZHJpdmVycy9uZXQva3M4ODUxX21sbC5jCkBAIC00NzAsNyArNDcwLDcgQEAKICAqCiAgKiBBbGwgdGhlc2UgY2FsbHMgaXNzdWUgdHJhbnNhY3Rpb25zIHRvIGFjY2VzcyB0aGUgY2hpcCdzIHJlZ2lzdGVycy4gVGhleQogICogYWxsIHJlcXVpcmUgdGhhdCB0aGUgbmVjZXNzYXJ5IGxvY2sgaXMgaGVsZCB0byBwcmV2ZW50IGFjY2Vzc2VzIHdoZW4gdGhlCi0gKiBjaGlwIGlzIGJ1c3kgdHJhbnNmZXJpbmcgcGFja2V0IGRhdGEgKFJYL1RYIEZJRk8gYWNjZXNzZXMpLgorICogY2hpcCBpcyBidXN5IHRyYW5zZmVycmluZyBwYWNrZXQgZGF0YSAoUlgvVFggRklGTyBhY2Nlc3NlcykuCiAgKi8KIAogLyoqCkBAIC0xMzY0LDcgKzEzNjQsNyBAQAogICogQHJlZzogVGhlIHJlZ2lzdGVyIHRvIHJlYWQuCiAgKgogICogVGhpcyBjYWxsIHJlYWRzIGRhdGEgZnJvbSB0aGUgUEhZIHJlZ2lzdGVyIHNwZWNpZmllZCBpbiBAcmVnLiBTaW5jZSB0aGUKLSAqIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgTUlJIHJlZ2lzdGVycywgdGhlIG5vbi1leGlzdGFudCB2YWx1ZXMKKyAqIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgTUlJIHJlZ2lzdGVycywgdGhlIG5vbi1leGlzdGVudCB2YWx1ZXMKICAqIGFyZSBhbHdheXMgcmV0dXJuZWQgYXMgemVyby4KICAqCiAgKiBXZSByZXR1cm4gemVybyBmb3IgdW5zdXBwb3J0ZWQgcmVnaXN0ZXJzIGFzIHRoZSBNSUkgY29kZSBkb2VzIG5vdCBjaGVjawpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbGliODM5MC5jIGIvZHJpdmVycy9uZXQvbGliODM5MC5jCmluZGV4IGRhNzRkYjQuLjE3Yjc1ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2xpYjgzOTAuYworKysgYi9kcml2ZXJzL25ldC9saWI4MzkwLmMKQEAgLTM1LDcgKzM1LDcgQEAKICAgQWxleGV5IEt1em5ldHNvdgk6IHVzZSB0aGUgODM5MCdzIHNpeCBiaXQgaGFzaCBtdWx0aWNhc3QgZmlsdGVyLgogICBQYXVsIEdvcnRtYWtlcgk6IHR3ZWFrIEFOSydzIGFib3ZlIG11bHRpY2FzdCBjaGFuZ2VzIGEgYml0LgogICBQYXVsIEdvcnRtYWtlcgk6IHVwZGF0ZSBwYWNrZXQgc3RhdGlzdGljcyBmb3IgdjIuMS54Ci0gIEFsYW4gQ294CQk6IHN1cHBvcnQgYXJiaXRhcnkgc3R1cGlkIHBvcnQgbWFwcGluZ3Mgb24gdGhlCisgIEFsYW4gQ294CQk6IHN1cHBvcnQgYXJiaXRyYXJ5IHN0dXBpZCBwb3J0IG1hcHBpbmdzIG9uIHRoZQogICAJCQkgIDY4SyBNYWNpbnRvc2guIFN1cHBvcnQgPjE2Yml0IEkvTyBzcGFjZXMKICAgUGF1bCBHb3J0bWFrZXIJOiBhZGQga21vZCBzdXBwb3J0IGZvciBhdXRvLWxvYWRpbmcgb2YgdGhlIDgzOTAKIAkJCSAgbW9kdWxlIGJ5IGFsbCBkcml2ZXJzIHRoYXQgcmVxdWlyZSBpdC4KQEAgLTEyMSw3ICsxMjEsNyBAQAogLyoKICAqCVNNUCBhbmQgdGhlIDgzOTAgc2V0dXAuCiAgKgotICoJVGhlIDgzOTAgaXNudCBleGFjdGx5IGRlc2lnbmVkIHRvIGJlIG11bHRpdGhyZWFkZWQgb24gUlgvVFguIFRoZXJlIGlzCisgKglUaGUgODM5MCBpc24ndCBleGFjdGx5IGRlc2lnbmVkIHRvIGJlIG11bHRpdGhyZWFkZWQgb24gUlgvVFguIFRoZXJlIGlzCiAgKglhIHBhZ2UgcmVnaXN0ZXIgdGhhdCBjb250cm9scyBiYW5rIGFuZCBwYWNrZXQgYnVmZmVyIGFjY2Vzcy4gV2UgZ3VhcmQKICAqCXRoaXMgd2l0aCBlaV9sb2NhbC0+cGFnZV9sb2NrLiBOb2JvZHkgc2hvdWxkIGFzc3VtZSBvciBzZXQgdGhlIHBhZ2Ugb3RoZXIKICAqCXRoYW4gemVybyB3aGVuIHRoZSBsb2NrIGlzIG5vdCBoZWxkLiBMb2NrIGhvbGRlcnMgbXVzdCByZXN0b3JlIHBhZ2UgMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbHA0ODZlLmMgYi9kcml2ZXJzL25ldC9scDQ4NmUuYwppbmRleCAzNjk4ODI0Li4zODVhOTUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9scDQ4NmUuYworKysgYi9kcml2ZXJzL25ldC9scDQ4NmUuYwpAQCAtMjcsNyArMjcsNyBAQAogCiAJQ3JlZGl0czoKIAlUaGFua3MgdG8gTXVycGh5IFNvZnR3YXJlIEJWIGZvciBsZXR0aW5nIG1lIHdyaXRlIHRoaXMgaW4gdGhlaXIgdGltZS4KLQlXZWxsLCBhY3R1YWxseSwgSSBnZXQgcGF5ZWQgZG9pbmcgdGhpcy4uLgorCVdlbGwsIGFjdHVhbGx5LCBJIGdldCBwYWlkIGRvaW5nIHRoaXMuLi4KIAkoQWxzbzogc2VlIGh0dHA6Ly93d3cubXVycGh5Lm5sIGZvciBtdXJwaHksIGFuZCBteSBob21lcGFnZSB+YXJkIGZvcgogCW1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFByb2Zlc3Npb25hbCBXb3Jrc3RhdGlvbikKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWV0aC5oIGIvZHJpdmVycy9uZXQvbWV0aC5oCmluZGV4IGE3OGRjMWMuLjViMTQ1YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21ldGguaAorKysgYi9kcml2ZXJzL25ldC9tZXRoLmgKQEAgLTE0NCw3ICsxNDQsNyBAQAogCQkJCSAgICAgICAvKiBCaXRzIDIyIHRocm91Z2ggMjggYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIElQR1IyICovCiAKICNkZWZpbmUgTUVUSF9SRVZfU0hJRlQgMjkgICAgICAgLyogQml0cyAyOSB0aHJvdWdoIDMxIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgcmV2aXNpb24gKi8KLQkJCQkgICAgICAgLyogMDAwOiBJbml0YWwgcmV2aXNpb24gKi8KKwkJCQkgICAgICAgLyogMDAwOiBJbml0aWFsIHJldmlzaW9uICovCiAJCQkJICAgICAgIC8qIDAwMTogRmlyc3QgcmV2aXNpb24sIEltcHJvdmVkIFRYIGNvbmNhdGVuYXRpb24gKi8KIAogCkBAIC0xOTMsNyArMTkzLDcgQEAKIAkJCQkJICAgICAgCS8qIDE6IEEgVFggbWVzc2FnZSBoYWQgdGhlIElOVCByZXF1ZXN0IGJpdCBzZXQsIHRoZSBwYWNrZXQgaGFzIGJlZW4gc2VudC4gKi8KICNkZWZpbmUgTUVUSF9JTlRfVFhfTElOS19GQUlMCUJJVCgyKQkvKiAwOiBObyBpbnRlcnJ1cHQgcGVuZGluZywgMTogUEhZIGhhcyByZXBvcnRlZCBhIGxpbmsgZmFpbHVyZSAqLwogI2RlZmluZSBNRVRIX0lOVF9NRU1fRVJST1IJQklUKDMpCS8qIDA6IE5vIGludGVycnVwdCBwZW5kaW5nICovCi0JCQkJCQkvKiAxOiBBIG1lbW9yeSBlcnJvciBvY2N1cnJlZCBkdXJyaW5nIERNQSwgRE1BIHN0b3BwZWQsIEZhdGFsICovCisJCQkJCQkvKiAxOiBBIG1lbW9yeSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgRE1BLCBETUEgc3RvcHBlZCwgRmF0YWwgKi8KICNkZWZpbmUgTUVUSF9JTlRfVFhfQUJPUlQJCUJJVCg0KQkvKiAwOiBObyBpbnRlcnJ1cHQgcGVuZGluZywgMTogVGhlIFRYIGFib3J0ZWQgb3BlcmF0aW9uLCBETUEgc3RvcHBlZCwgRkFUQUwgKi8KICNkZWZpbmUgTUVUSF9JTlRfUlhfVEhSRVNIT0xECUJJVCg1KQkvKiAwOiBObyBpbnRlcnJ1cHQgcGVuZGluZywgMTogU2VsZWN0ZWQgcmVjZWl2ZSB0aHJlc2hvbGQgY29uZGl0aW9uIFZhbGlkICovCiAjZGVmaW5lIE1FVEhfSU5UX1JYX1VOREVSRkxPVwlCSVQoNikJLyogMDogTm8gaW50ZXJydXB0IHBlbmRpbmcsIDE6IEZJRk8gd2FzIGVtcHR5LCBwYWNrZXQgY291bGQgbm90IGJlIHF1ZXVlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NC9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9tbHg0L2VuX21haW4uYwppbmRleCA5MzE3YjYxLi45Mjc2YjFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWx4NC9lbl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9tYWluLmMKQEAgLTIzNiw3ICsyMzYsNyBAQAogCQlnb3RvIGVycl9tcjsKIAl9CiAKLQkvKiBDb25maWd1cmUgd2ljaCBwb3J0cyB0byBzdGFydCBhY2NvcmRpbmcgdG8gbW9kdWxlIHBhcmFtZXRlcnMgKi8KKwkvKiBDb25maWd1cmUgd2hpY2ggcG9ydHMgdG8gc3RhcnQgYWNjb3JkaW5nIHRvIG1vZHVsZSBwYXJhbWV0ZXJzICovCiAJbWRldi0+cG9ydF9jbnQgPSAwOwogCW1seDRfZm9yZWFjaF9wb3J0KGksIGRldiwgTUxYNF9QT1JUX1RZUEVfRVRIKQogCQltZGV2LT5wb3J0X2NudCsrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NC9lbl9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fbmV0ZGV2LmMKaW5kZXggNGYxNThiYS4uNzcwNjNmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWx4NC9lbl9uZXRkZXYuYworKysgYi9kcml2ZXJzL25ldC9tbHg0L2VuX25ldGRldi5jCkBAIC0yNDcsNyArMjQ3LDcgQEAKIAkJCQkJCQkgICAgICAgcHJpdi0+cG9ydCk7CiAJCQlpZiAoZXJyKQogCQkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGVuYWJsaW5nICIKLQkJCQkJICAgICAicHJvbWlzY291cyBtb2RlXG4iKTsKKwkJCQkJICAgICAicHJvbWlzY3VvdXMgbW9kZVxuIik7CiAKIAkJCS8qIERpc2FibGUgcG9ydCBtdWx0aWNhc3QgZmlsdGVyICh1bmNvbmRpdGlvbmFsbHkpICovCiAJCQllcnIgPSBtbHg0X1NFVF9NQ0FTVF9GTFRSKG1kZXYtPmRldiwgcHJpdi0+cG9ydCwgMCwKQEAgLTI3Niw3ICsyNzYsNyBAQAogCX0KIAogCS8qCi0JICogTm90IGluIHByb21pc2NvdXMgbW9kZQorCSAqIE5vdCBpbiBwcm9taXNjdW91cyBtb2RlCiAJICovCiAKIAlpZiAocHJpdi0+ZmxhZ3MgJiBNTFg0X0VOX0ZMQUdfUFJPTUlTQykgewpAQCAtMjkyLDE0ICsyOTIsMTQgQEAKIAkJCWVyciA9IG1seDRfdW5pY2FzdF9wcm9taXNjX3JlbW92ZShtZGV2LT5kZXYsIHByaXYtPmJhc2VfcXBuLAogCQkJCQkJCSAgcHJpdi0+cG9ydCk7CiAJCWlmIChlcnIpCi0JCQllbl9lcnIocHJpdiwgIkZhaWxlZCBkaXNhYmxpbmcgcHJvbWlzY291cyBtb2RlXG4iKTsKKwkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGRpc2FibGluZyBwcm9taXNjdW91cyBtb2RlXG4iKTsKIAogCQkvKiBEaXNhYmxlIE11bHRpY2FzdCBwcm9taXNjICovCiAJCWlmIChwcml2LT5mbGFncyAmIE1MWDRfRU5fRkxBR19NQ19QUk9NSVNDKSB7CiAJCQllcnIgPSBtbHg0X211bHRpY2FzdF9wcm9taXNjX3JlbW92ZShtZGV2LT5kZXYsIHByaXYtPmJhc2VfcXBuLAogCQkJCQkJCSAgICBwcml2LT5wb3J0KTsKIAkJCWlmIChlcnIpCi0JCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZGlzYWJsaW5nIG11bHRpY2FzdCBwcm9taXNjb3VzIG1vZGVcbiIpOworCQkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGRpc2FibGluZyBtdWx0aWNhc3QgcHJvbWlzY3VvdXMgbW9kZVxuIik7CiAJCQlwcml2LT5mbGFncyAmPSB+TUxYNF9FTl9GTEFHX01DX1BST01JU0M7CiAJCX0KIApAQCAtMzMxLDcgKzMzMSw3IEBACiAJCQllcnIgPSBtbHg0X211bHRpY2FzdF9wcm9taXNjX3JlbW92ZShtZGV2LT5kZXYsIHByaXYtPmJhc2VfcXBuLAogCQkJCQkJCSAgICBwcml2LT5wb3J0KTsKIAkJCWlmIChlcnIpCi0JCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZGlzYWJsaW5nIG11bHRpY2FzdCBwcm9taXNjb3VzIG1vZGVcbiIpOworCQkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGRpc2FibGluZyBtdWx0aWNhc3QgcHJvbWlzY3VvdXMgbW9kZVxuIik7CiAJCQlwcml2LT5mbGFncyAmPSB+TUxYNF9FTl9GTEFHX01DX1BST01JU0M7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NC9lbl9yeC5jIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9yeC5jCmluZGV4IDA1OTk4ZWUuLmNmZDUwYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvZW5fcnguYworKysgYi9kcml2ZXJzL25ldC9tbHg0L2VuX3J4LmMKQEAgLTcwNiw3ICs3MDYsNyBAQAogfQogCiAKLS8qIENhbGN1bGF0ZSB0aGUgbGFzdCBvZmZzZXQgcG9zaXRpb24gdGhhdCBhY2NvbW9kYXRlcyBhIGZ1bGwgZnJhZ21lbnQKKy8qIENhbGN1bGF0ZSB0aGUgbGFzdCBvZmZzZXQgcG9zaXRpb24gdGhhdCBhY2NvbW1vZGF0ZXMgYSBmdWxsIGZyYWdtZW50CiAgKiAoYXNzdW1pbmcgZmFnbWVudCBzaXplID0gc3RyaWRlLWFsaWduKSAqLwogc3RhdGljIGludCBtbHg0X2VuX2xhc3RfYWxsb2Nfb2Zmc2V0KHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHUxNiBzdHJpZGUsIHUxNiBhbGlnbikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fc2VsZnRlc3QuYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fc2VsZnRlc3QuYwppbmRleCA5YzkxYTkyLi4xOTFhOGRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX3NlbGZ0ZXN0LmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9zZWxmdGVzdC5jCkBAIC0xNDksNyArMTQ5LDcgQEAKIAogCQluZXRpZl9jYXJyaWVyX29mZihkZXYpOwogcmV0cnlfdHg6Ci0JCS8qIFdhaXQgdW50aWxsIGFsbCB0eCBxdWV1ZXMgYXJlIGVtcHR5LgorCQkvKiBXYWl0IHVudGlsIGFsbCB0eCBxdWV1ZXMgYXJlIGVtcHR5LgogCQkgKiB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBhZGRpdGlvbmFsIGluY29taW5nIHRyYWZmaWMKIAkJICogc2luY2Ugd2UgdHVybmVkIHRoZSBjYXJyaWVyIG9mZiAqLwogCQltc2xlZXAoMjAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fdHguYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fdHguYwppbmRleCAwMWZlYjhmLi5iMjI5YWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX3R4LmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl90eC5jCkBAIC02MzYsNyArNjM2LDcgQEAKIAlpZiAodW5saWtlbHkoIXJlYWxfc2l6ZSkpCiAJCWdvdG8gdHhfZHJvcDsKIAotCS8qIEFsbGlnbiBkZXNjcmlwdG9yIHRvIFRYQkIgc2l6ZSAqLworCS8qIEFsaWduIGRlc2NyaXB0b3IgdG8gVFhCQiBzaXplICovCiAJZGVzY19zaXplID0gQUxJR04ocmVhbF9zaXplLCBUWEJCX1NJWkUpOwogCW5yX3R4YmIgPSBkZXNjX3NpemUgLyBUWEJCX1NJWkU7CiAJaWYgKHVubGlrZWx5KG5yX3R4YmIgPiBNQVhfREVTQ19UWEJCUykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvbWNnLmMgYi9kcml2ZXJzL25ldC9tbHg0L21jZy5jCmluZGV4IGU3MTM3MmEuLjI3OTUyMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvbWNnLmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9tY2cuYwpAQCAtMjIyLDcgKzIyMiw3IEBACiAKIAkvKiB0aGUgZ2l2ZW4gcXBuIGlzIGxpc3RlZCBhcyBhIHByb21pc2MgcXBuCiAJICogd2UgbmVlZCB0byBhZGQgaXQgYXMgYSBkdXBsaWNhdGUgdG8gdGhpcyBlbnRyeQotCSAqIGZvciBmdXR1cmUgcmVmZXJuY2UgKi8KKwkgKiBmb3IgZnV0dXJlIHJlZmVyZW5jZXMgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRxcCwgJmVudHJ5LT5kdXBsaWNhdGVzLCBsaXN0KSB7CiAJCWlmIChxcG4gPT0gZHFwLT5xcG4pCiAJCQlyZXR1cm4gMDsgLyogcXAgaXMgYWxyZWFkeSBkdXBsaWNhdGVkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L3BvcnQuYyBiL2RyaXZlcnMvbmV0L21seDQvcG9ydC5jCmluZGV4IGVjYTdkODUuLjg4NTY2NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvcG9ydC5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvcG9ydC5jCkBAIC0xNzIsNyArMTcyLDcgQEAKIAkJfQogCiAJCWlmIChtYWMgPT0gKE1MWDRfTUFDX01BU0sgJiBiZTY0X3RvX2NwdSh0YWJsZS0+ZW50cmllc1tpXSkpKSB7Ci0JCQkvKiBNQUMgYWxyZWFkeSByZWdpc3RlcmVkLCBpbmNyZWFzZSByZWZlcm5jZSBjb3VudCAqLworCQkJLyogTUFDIGFscmVhZHkgcmVnaXN0ZXJlZCwgaW5jcmVhc2UgcmVmZXJlbmNlcyBjb3VudCAqLwogCQkJKyt0YWJsZS0+cmVmc1tpXTsKIAkJCWdvdG8gb3V0OwogCQl9CkBAIC0zNjAsNyArMzYwLDcgQEAKIAkJaWYgKHRhYmxlLT5yZWZzW2ldICYmCiAJCSAgICAodmxhbiA9PSAoTUxYNF9WTEFOX01BU0sgJgogCQkJICAgICAgYmUzMl90b19jcHUodGFibGUtPmVudHJpZXNbaV0pKSkpIHsKLQkJCS8qIFZsYW4gYWxyZWFkeSByZWdpc3RlcmVkLCBpbmNyZWFzZSByZWZlcm5jZSBjb3VudCAqLworCQkJLyogVmxhbiBhbHJlYWR5IHJlZ2lzdGVyZWQsIGluY3JlYXNlIHJlZmVyZW5jZXMgY291bnQgKi8KIAkJCSppbmRleCA9IGk7CiAJCQkrK3RhYmxlLT5yZWZzW2ldOwogCQkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jIGIvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYwppbmRleCA2NzNkYzYwLi4xNDQ2ZGU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jCisrKyBiL2RyaXZlcnMvbmV0L215cmkxMGdlL215cmkxMGdlLmMKQEAgLTM3MDIsNyArMzcwMiw3IEBACiAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBzbGljZXMgc3VwcG9ydGVkLgotICogVGhlIG51bWJlciBzbGljZXMgaXMgdGhlIG1pbnVtdW0gb2YgdGhlIG51bWJlciBvZiBDUFVTLAorICogVGhlIG51bWJlciBzbGljZXMgaXMgdGhlIG1pbmltdW0gb2YgdGhlIG51bWJlciBvZiBDUFVTLAogICogdGhlIG51bWJlciBvZiBNU0ktWCBpcnFzIHN1cHBvcnRlZCwgdGhlIG51bWJlciBvZiBzbGljZXMKICAqIHN1cHBvcnRlZCBieSB0aGUgZmlybXdhcmUKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMgYi9kcml2ZXJzL25ldC9teXJpX3NidXMuYwppbmRleCBhNzYxMDc2Li41M2FlZWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9teXJpX3NidXMuYworKysgYi9kcml2ZXJzL25ldC9teXJpX3NidXMuYwpAQCAtMTAwOSw3ICsxMDA5LDcgQEAKIAogCS8qIE1hcCBpbiB0aGUgTXlyaUNPTSByZWdpc3Rlci9sb2NhbHJhbSBzZXQuICovCiAJaWYgKG1wLT5lZXByb20uY3B1dmVycyA8IENQVVZFUlNfNF8wKSB7Ci0JCS8qIFhYWCBNYWtlcyBubyBzZW5zZSwgaWYgY29udHJvbCByZWcgaXMgbm9uLWV4aXN0YW50IHRoaXMKKwkJLyogWFhYIE1ha2VzIG5vIHNlbnNlLCBpZiBjb250cm9sIHJlZyBpcyBub24tZXhpc3RlbnQgdGhpcwogCQkgKiBYWFggZHJpdmVyIGNhbm5vdCBmdW5jdGlvbiBhdCBhbGwuLi4gbWF5YmUgcHJlLTQuMCBpcwogCQkgKiBYWFggb25seSBhIHZhbGlkIHZlcnNpb24gZm9yIFBDSSBjYXJkcz8gIEFzayBmZWxkeS4uLgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25hdHNlbWkuYyBiL2RyaXZlcnMvbmV0L25hdHNlbWkuYwppbmRleCAyZmQzOTYzLi5hYTI4MTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uYXRzZW1pLmMKKysrIGIvZHJpdmVycy9uZXQvbmF0c2VtaS5jCkBAIC0yMDMsNyArMjAzLDcgQEAKIElJSWQuIFN5bmNocm9uaXphdGlvbgogCiBNb3N0IG9wZXJhdGlvbnMgYXJlIHN5bmNocm9uaXplZCBvbiB0aGUgbnAtPmxvY2sgaXJxIHNwaW5sb2NrLCBleGNlcHQgdGhlCi1yZWNpZXZlIGFuZCB0cmFuc21pdCBwYXRocyB3aGljaCBhcmUgc3luY2hyb25pc2VkIHVzaW5nIGEgY29tYmluYXRpb24gb2YKK3JlY2VpdmUgYW5kIHRyYW5zbWl0IHBhdGhzIHdoaWNoIGFyZSBzeW5jaHJvbmlzZWQgdXNpbmcgYSBjb21iaW5hdGlvbiBvZgogaGFyZHdhcmUgZGVzY3JpcHRvciBvd25lcnNoaXAsIGRpc2FibGluZyBpbnRlcnJ1cHRzIGFuZCBOQVBJIHBvbGwgc2NoZWR1bGluZy4KIAogSVZiLiBSZWZlcmVuY2VzCkBAIC03MjYsNyArNzI2LDcgQEAKIAkgKiBUaGVyZSBhcmUgdHdvIGFkZHJlc3NlcyB3ZSBtdXN0IGF2b2lkOgogCSAqIC0gdGhlIGFkZHJlc3Mgb24gdGhlIGV4dGVybmFsIHBoeSB0aGF0IGlzIHVzZWQgZm9yIHRyYW5zbWlzc2lvbi4KIAkgKiAtIHRoZSBhZGRyZXNzIHRoYXQgd2Ugd2FudCB0byBhY2Nlc3MuIFVzZXIgc3BhY2UgY2FuIGFjY2VzcyBwaHlzCi0JICogICBvbiB0aGUgbWlpIGJ1cyB3aXRoIFNJT0NHTUlJUkVHL1NJT0NTTUlJUkVHLCBpbmRlcGVuZGFudCBmcm9tIHRoZQorCSAqICAgb24gdGhlIG1paSBidXMgd2l0aCBTSU9DR01JSVJFRy9TSU9DU01JSVJFRywgaW5kZXBlbmRlbnQgZnJvbSB0aGUKIAkgKiAgIHBoeSB0aGF0IGlzIHVzZWQgZm9yIHRyYW5zbWlzc2lvbi4KIAkgKi8KIApAQCAtMTk4Miw3ICsxOTgyLDcgQEAKIAogCW5wLT5yeF9oZWFkX2Rlc2MgPSAmbnAtPnJ4X3JpbmdbMF07CiAKLQkvKiBQbGVhc2UgYmUgY2FyZWZ1bGwgYmVmb3JlIGNoYW5naW5nIHRoaXMgbG9vcCAtIGF0IGxlYXN0IGdjYy0yLjk1LjEKKwkvKiBQbGVhc2UgYmUgY2FyZWZ1bCBiZWZvcmUgY2hhbmdpbmcgdGhpcyBsb29wIC0gYXQgbGVhc3QgZ2NjLTIuOTUuMQogCSAqIG1pc2NvbXBpbGVzIGl0IG90aGVyd2lzZS4KIAkgKi8KIAkvKiBJbml0aWFsaXplIGFsbCBSeCBkZXNjcmlwdG9ycy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfaGRyLmgKaW5kZXggZDhiZDczZC4uZGMxOTY3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfaGRyLmgKKysrIGIvZHJpdmVycy9uZXQvbmV0eGVuL25ldHhlbl9uaWNfaGRyLmgKQEAgLTc4MCw3ICs3ODAsNyBAQAogCiAvKgogICogY2FwYWJpbGl0aWVzIHJlZ2lzdGVyLCBjYW4gYmUgdXNlZCB0byBzZWxlY3RpdmVseSBlbmFibGUvZGlzYWJsZSBmZWF0dXJlcwotICogZm9yIGJhY2t3YXJkIGNvbXBhYmlsaXR5CisgKiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICovCiAjZGVmaW5lIENSQl9OSUNfQ0FQQUJJTElUSUVTX0hPU1QJTkVUWEVOX05JQ19SRUcoMHgxYTgpCiAjZGVmaW5lIENSQl9OSUNfTVNJX01PREVfSE9TVAkJTkVUWEVOX05JQ19SRUcoMHgyNzApCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uczgzODIwLmMgYi9kcml2ZXJzL25ldC9uczgzODIwLmMKaW5kZXggYTQxYjJjZi4uNjY2N2UwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbnM4MzgyMC5jCisrKyBiL2RyaXZlcnMvbmV0L25zODM4MjAuYwpAQCAtNTEyLDcgKzUxMiw3IEBACiAvKiBQYWNrZXQgUmVjZWl2ZXIKICAqCiAgKiBUaGUgaGFyZHdhcmUgc3VwcG9ydHMgbGlua2VkIGxpc3RzIG9mIHJlY2VpdmUgZGVzY3JpcHRvcnMgZm9yCi0gKiB3aGljaCBvd25lcnNoaXAgaXMgdHJhbnNmZXJlZCBiYWNrIGFuZCBmb3J0aCBieSBtZWFucyBvZiBhbgorICogd2hpY2ggb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIGJhY2sgYW5kIGZvcnRoIGJ5IG1lYW5zIG9mIGFuCiAgKiBvd25lcnNoaXAgYml0LiAgV2hpbGUgdGhlIGhhcmR3YXJlIGRvZXMgc3VwcG9ydCB0aGUgdXNlIG9mIGEKICAqIHJpbmcgZm9yIHJlY2VpdmUgZGVzY3JpcHRvcnMsIHdlIG9ubHkgbWFrZSB1c2Ugb2YgYSBjaGFpbiBpbgogICogYW4gYXR0ZW1wdCB0byByZWR1Y2UgYnVzIHRyYWZmaWMgdW5kZXIgaGVhdnkgbG9hZCBzY2VuYXJpb3MuCkBAIC0xMTQ3LDcgKzExNDcsNyBAQAogI2lmZGVmIE5TODM4MjBfVkxBTl9BQ0NFTF9TVVBQT1JUCiAJaWYodmxhbl90eF90YWdfcHJlc2VudChza2IpKSB7CiAJCS8qIGZldGNoIHRoZSB2bGFuIHRhZyBpbmZvIG91dCBvZiB0aGUKLQkJICogYW5jaWxsaWFyeSBkYXRhIGlmIHRoZSB2bGFuIGNvZGUKKwkJICogYW5jaWxsYXJ5IGRhdGEgaWYgdGhlIHZsYW4gY29kZQogCQkgKiBpcyB1c2luZyBodyB2bGFuIGFjY2VsZXJhdGlvbgogCQkgKi8KIAkJc2hvcnQgdGFnID0gdmxhbl90eF90YWdfZ2V0KHNrYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaCBiL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZS5oCmluZGV4IGUxZTMzYzguLmJmMTI2ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZS5oCisrKyBiL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZS5oCkBAIC0zNTEsNyArMzUxLDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IHBjaF9nYmVfbWFjX2luZm8gLSBNQUMgaW5mb21hdGlvbgorICogc3RydWN0IHBjaF9nYmVfbWFjX2luZm8gLSBNQUMgaW5mb3JtYXRpb24KICAqIEBhZGRyWzZdOgkJU3RvcmUgdGhlIE1BQyBhZGRyZXNzCiAgKiBAZmM6CQkJTW9kZSBvZiBmbG93IGNvbnRyb2wKICAqIEBmY19hdXRvbmVnOgkJQXV0byBuZWdvdGlhdGlvbiBlbmFibGUgZm9yIGZsb3cgY29udHJvbCBzZXR0aW5nCkBAIC0zNzUsNyArMzc1LDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IHBjaF9nYmVfcGh5X2luZm8gLSBQSFkgaW5mb21hdGlvbgorICogc3RydWN0IHBjaF9nYmVfcGh5X2luZm8gLSBQSFkgaW5mb3JtYXRpb24KICAqIEBhZGRyOgkJUEhZIGFkZHJlc3MKICAqIEBpZDoJCQlQSFkncyBpZGVudGlmaWVyCiAgKiBAcmV2aXNpb246CQlQSFkncyByZXZpc2lvbgpAQCAtMzkzLDcgKzM5Myw3IEBACiAvKiEKICAqIEBpbmdyb3VwIEdpZ2FiaXQgRXRoZXIgZHJpdmVyIExheWVyCiAgKiBAc3RydWN0ICBwY2hfZ2JlX2J1c19pbmZvCi0gKiBAYnJpZWYgICBCdXMgaW5mb21hdGlvbgorICogQGJyaWVmICAgQnVzIGluZm9ybWF0aW9uCiAgKi8KIHN0cnVjdCBwY2hfZ2JlX2J1c19pbmZvIHsKIAl1OCB0eXBlOwpAQCAtNDA0LDcgKzQwNCw3IEBACiAvKiEKICAqIEBpbmdyb3VwIEdpZ2FiaXQgRXRoZXIgZHJpdmVyIExheWVyCiAgKiBAc3RydWN0ICBwY2hfZ2JlX2h3Ci0gKiBAYnJpZWYgICBIYXJkd2FyZSBpbmZvbWF0aW9uCisgKiBAYnJpZWYgICBIYXJkd2FyZSBpbmZvcm1hdGlvbgogICovCiBzdHJ1Y3QgcGNoX2diZV9odyB7CiAJdm9pZCAqYmFjazsKQEAgLTQ2Miw3ICs0NjIsNyBAQAogCiAKIC8qKgotICogc3RydWN0IHBjaF9nYmVfYnVmZmVyIC0gQnVmZmVyIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX2J1ZmZlciAtIEJ1ZmZlciBpbmZvcm1hdGlvbgogICogQHNrYjoJcG9pbnRlciB0byBhIHNvY2tldCBidWZmZXIKICAqIEBkbWE6CURNQSBhZGRyZXNzCiAgKiBAdGltZV9zdGFtcDoJdGltZSBzdGFtcApAQCAtNDc3LDcgKzQ3Nyw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX3R4X3JpbmcgLSB0eCByaW5nIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX3R4X3JpbmcgLSB0eCByaW5nIGluZm9ybWF0aW9uCiAgKiBAdHhfbG9jazoJc3BpbmxvY2sgc3RydWN0cwogICogQGRlc2M6CXBvaW50ZXIgdG8gdGhlIGRlc2NyaXB0b3IgcmluZyBtZW1vcnkKICAqIEBkbWE6CXBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgcmluZwpAQCAtNDk5LDcgKzQ5OSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX3J4X3JpbmcgLSByeCByaW5nIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX3J4X3JpbmcgLSByeCByaW5nIGluZm9ybWF0aW9uCiAgKiBAZGVzYzoJcG9pbnRlciB0byB0aGUgZGVzY3JpcHRvciByaW5nIG1lbW9yeQogICogQGRtYToJcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZGVzY3JpcHRvciByaW5nCiAgKiBAc2l6ZToJbGVuZ3RoIG9mIGRlc2NyaXB0b3IgcmluZyBpbiBieXRlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9ldGh0b29sLmMKaW5kZXggYzhjODczYi4uZDIxNzRhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX2V0aHRvb2wuYworKysgYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfZXRodG9vbC5jCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAicGNoX2diZV9hcGkuaCIKIAogLyoqCi0gKiBwY2hfZ2JlX3N0YXRzIC0gU3RhdHMgaXRlbSBpbmZvbWF0aW9uCisgKiBwY2hfZ2JlX3N0YXRzIC0gU3RhdHMgaXRlbSBpbmZvcm1hdGlvbgogICovCiBzdHJ1Y3QgcGNoX2diZV9zdGF0cyB7CiAJY2hhciBzdHJpbmdbRVRIX0dTVFJJTkdfTEVOXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9tYWluLmMgYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jCmluZGV4IDUwOTg2ODQuLjJlZjJmOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX21haW4uYwpAQCAtMTAxMSw3ICsxMDExLDcgQEAKIAl0bXBfc2tiLT5sZW4gPSBza2ItPmxlbjsKIAltZW1jcHkoJnRtcF9za2ItPmRhdGFbRVRIX0hMRU4gKyAyXSwgJnNrYi0+ZGF0YVtFVEhfSExFTl0sCiAJICAgICAgIChza2ItPmxlbiAtIEVUSF9ITEVOKSk7Ci0JLyotLSBTZXQgQnVmZmVyIGluZm9tYXRpb24gLS0qLworCS8qLS0gU2V0IEJ1ZmZlciBpbmZvcm1hdGlvbiAtLSovCiAJYnVmZmVyX2luZm8tPmxlbmd0aCA9IHRtcF9za2ItPmxlbjsKIAlidWZmZXJfaW5mby0+ZG1hID0gZG1hX21hcF9zaW5nbGUoJmFkYXB0ZXItPnBkZXYtPmRldiwgdG1wX3NrYi0+ZGF0YSwKIAkJCQkJICBidWZmZXJfaW5mby0+bGVuZ3RoLApAQCAtMTU0MCw3ICsxNTQwLDcgQEAKIAlzaXplID0gKGludClzaXplb2Yoc3RydWN0IHBjaF9nYmVfYnVmZmVyKSAqIHR4X3JpbmctPmNvdW50OwogCXR4X3JpbmctPmJ1ZmZlcl9pbmZvID0gdnphbGxvYyhzaXplKTsKIAlpZiAoIXR4X3JpbmctPmJ1ZmZlcl9pbmZvKSB7Ci0JCXByX2VycigiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBpbmZvbWF0aW9uXG4iKTsKKwkJcHJfZXJyKCJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgYnVmZmVyIGluZm9ybWF0aW9uXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYyBiL2RyaXZlcnMvbmV0L3BjaS1za2VsZXRvbi5jCmluZGV4IDE3NjZkYzQuLmMwZjIzMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjaS1za2VsZXRvbi5jCisrKyBiL2RyaXZlcnMvbmV0L3BjaS1za2VsZXRvbi5jCkBAIC0yMTQsNyArMjE0LDcgQEAKIAl7ICJTTUMxMjExVFggRVpDYXJkIDEwLzEwMCAoUmVhbFRlayBSVEw4MTM5KSIgfSwKIC8qCXsgTVBYNTAzMCwgIkFjY3RvbiBNUFg1MDMwIChSZWFsVGVrIFJUTDgxMzkpIiB9LCovCiAJeyAiRGVsdGEgRWxlY3Ryb25pY3MgODEzOSAxMC8xMDBCYXNlVFgiIH0sCi0JeyAiQWRkdHJvbiBUZWNobm9sZ3kgODEzOSAxMC8xMDBCYXNlVFgiIH0sCisJeyAiQWRkdHJvbiBUZWNobm9sb2d5IDgxMzkgMTAvMTAwQmFzZVRYIiB9LAogfTsKIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYyBiL2RyaXZlcnMvbmV0L3BjbWNpYS8zYzU3NF9jcy5jCmluZGV4IDMyMWIxMmYuLjgxYWMzMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjbWNpYS8zYzU3NF9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BjbWNpYS8zYzU3NF9jcy5jCkBAIC05NTAsNyArOTUwLDcgQEAKIH0KIAogLyogIFVwZGF0ZSBzdGF0aXN0aWNzLgotCVN1cHJpc2luZ2x5IHRoaXMgbmVlZCBub3QgYmUgcnVuIHNpbmdsZS10aHJlYWRlZCwgYnV0IGl0IGVmZmVjdGl2ZWx5IGlzLgorCVN1cnByaXNpbmdseSB0aGlzIG5lZWQgbm90IGJlIHJ1biBzaW5nbGUtdGhyZWFkZWQsIGJ1dCBpdCBlZmZlY3RpdmVseSBpcy4KIAlUaGUgY291bnRlcnMgY2xlYXIgd2hlbiByZWFkLCBzbyB0aGUgYWRkcyBtdXN0IG1lcmVseSBiZSBhdG9taWMuCiAgKi8KIHN0YXRpYyB2b2lkIHVwZGF0ZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMgYi9kcml2ZXJzL25ldC9wY21jaWEvYXhuZXRfY3MuYwppbmRleCBkM2NiNzcyLi4zMDc3ZDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY21jaWEvYXhuZXRfY3MuYworKysgYi9kcml2ZXJzL25ldC9wY21jaWEvYXhuZXRfY3MuYwpAQCAtNzgwLDcgKzc4MCw3IEBACiAgIEFsZXhleSBLdXpuZXRzb3YJOiB1c2UgdGhlIDgzOTAncyBzaXggYml0IGhhc2ggbXVsdGljYXN0IGZpbHRlci4KICAgUGF1bCBHb3J0bWFrZXIJOiB0d2VhayBBTksncyBhYm92ZSBtdWx0aWNhc3QgY2hhbmdlcyBhIGJpdC4KICAgUGF1bCBHb3J0bWFrZXIJOiB1cGRhdGUgcGFja2V0IHN0YXRpc3RpY3MgZm9yIHYyLjEueAotICBBbGFuIENveAkJOiBzdXBwb3J0IGFyYml0YXJ5IHN0dXBpZCBwb3J0IG1hcHBpbmdzIG9uIHRoZQorICBBbGFuIENveAkJOiBzdXBwb3J0IGFyYml0cmFyeSBzdHVwaWQgcG9ydCBtYXBwaW5ncyBvbiB0aGUKICAgCQkJICA2OEsgTWFjaW50b3NoLiBTdXBwb3J0ID4xNmJpdCBJL08gc3BhY2VzCiAgIFBhdWwgR29ydG1ha2VyCTogYWRkIGttb2Qgc3VwcG9ydCBmb3IgYXV0by1sb2FkaW5nIG9mIHRoZSA4MzkwCiAJCQkgIG1vZHVsZSBieSBhbGwgZHJpdmVycyB0aGF0IHJlcXVpcmUgaXQuCkBAIC04NDIsNyArODQyLDcgQEAKIC8qCiAgKglTTVAgYW5kIHRoZSA4MzkwIHNldHVwLgogICoKLSAqCVRoZSA4MzkwIGlzbnQgZXhhY3RseSBkZXNpZ25lZCB0byBiZSBtdWx0aXRocmVhZGVkIG9uIFJYL1RYLiBUaGVyZSBpcworICoJVGhlIDgzOTAgaXNuJ3QgZXhhY3RseSBkZXNpZ25lZCB0byBiZSBtdWx0aXRocmVhZGVkIG9uIFJYL1RYLiBUaGVyZSBpcwogICoJYSBwYWdlIHJlZ2lzdGVyIHRoYXQgY29udHJvbHMgYmFuayBhbmQgcGFja2V0IGJ1ZmZlciBhY2Nlc3MuIFdlIGd1YXJkCiAgKgl0aGlzIHdpdGggZWlfbG9jYWwtPnBhZ2VfbG9jay4gTm9ib2R5IHNob3VsZCBhc3N1bWUgb3Igc2V0IHRoZSBwYWdlIG90aGVyCiAgKgl0aGFuIHplcm8gd2hlbiB0aGUgbG9jayBpcyBub3QgaGVsZC4gTG9jayBob2xkZXJzIG11c3QgcmVzdG9yZSBwYWdlIDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jIGIvZHJpdmVycy9uZXQvcGNtY2lhL3NtYzkxYzkyX2NzLmMKaW5kZXggOGE5ZmY1My4uMTA4NTkxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNtY2lhL3NtYzkxYzkyX2NzLmMKKysrIGIvZHJpdmVycy9uZXQvcGNtY2lhL3NtYzkxYzkyX2NzLmMKQEAgLTEyNjQsNyArMTI2NCw3IEBACiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0gICAgSGFuZGxlIGEgVHggYW5vbW9sb3VzIGV2ZW50LiAgRW50ZXJlZCB3aGlsZSBpbiBXaW5kb3cgMi4KKyAgICBIYW5kbGUgYSBUeCBhbm9tYWxvdXMgZXZlbnQuICBFbnRlcmVkIHdoaWxlIGluIFdpbmRvdyAyLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNuZXQzMi5jIGIvZHJpdmVycy9uZXQvcGNuZXQzMi5jCmluZGV4IGFlZTNiYjAuLjc2ODAzNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjbmV0MzIuYworKysgYi9kcml2ZXJzL25ldC9wY25ldDMyLmMKQEAgLTE2NTEsNyArMTY1MSw3IEBACiAJLyoKIAkgKiAgT24gc2VsZWN0ZWQgY2hpcHMgdHVybiBvbiB0aGUgQkNSMTg6Tk9VRkxPIGJpdC4gVGhpcyBzdG9wcyB0cmFuc21pdAogCSAqICBzdGFydGluZyB1bnRpbCB0aGUgcGFja2V0IGlzIGxvYWRlZC4gU3RyaWtlIG9uZSBmb3IgcmVsaWFiaWxpdHksIGxvc2UKLQkgKiAgb25lIGZvciBsYXRlbmN5IC0gYWx0aG91Z2ggb24gUENJIHRoaXMgaXNudCBhIGJpZyBsb3NzLiBPbGRlciBjaGlwcworCSAqICBvbmUgZm9yIGxhdGVuY3kgLSBhbHRob3VnaCBvbiBQQ0kgdGhpcyBpc24ndCBhIGJpZyBsb3NzLiBPbGRlciBjaGlwcwogCSAqICBoYXZlIEZJRk8ncyBzbWFsbGVyIHRoYW4gYSBwYWNrZXQsIHNvIHlvdSBjYW4ndCBkbyB0aGlzLgogCSAqICBUdXJuIG9uIEJDUjE4OkJ1cnN0UmRFbiBhbmQgQkNSMTg6QnVyc3RXckVuLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKaW5kZXggOTkzYzUyYy4uZmY2MTI5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYworKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCkBAIC01MzQsNyArNTM0LDcgQEAKIC8qIEdlbmVyaWMgUEhZIHN1cHBvcnQgYW5kIGhlbHBlciBmdW5jdGlvbnMgKi8KIAogLyoqCi0gKiBnZW5waHlfY29uZmlnX2FkdmVydCAtIHNhbml0aXplIGFuZCBhZHZlcnRpc2UgYXV0by1uZWdvdGF0aW9uIHBhcmFtZXRlcnMKKyAqIGdlbnBoeV9jb25maWdfYWR2ZXJ0IC0gc2FuaXRpemUgYW5kIGFkdmVydGlzZSBhdXRvLW5lZ290aWF0aW9uIHBhcmFtZXRlcnMKICAqIEBwaHlkZXY6IHRhcmdldCBwaHlfZGV2aWNlIHN0cnVjdAogICoKICAqIERlc2NyaXB0aW9uOiBXcml0ZXMgTUlJX0FEVkVSVElTRSB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMsCkBAIC02ODMsNyArNjgzLDcgQEAKIAkJcmV0dXJuIHJlc3VsdDsKIAogCWlmIChyZXN1bHQgPT0gMCkgewotCQkvKiBBZHZlcnRpc21lbnQgaGFzbid0IGNoYW5nZWQsIGJ1dCBtYXliZSBhbmVnIHdhcyBuZXZlciBvbiB0bworCQkvKiBBZHZlcnRpc2VtZW50IGhhc24ndCBjaGFuZ2VkLCBidXQgbWF5YmUgYW5lZyB3YXMgbmV2ZXIgb24gdG8KIAkJICogYmVnaW4gd2l0aD8gIE9yIG1heWJlIHBoeSB3YXMgaXNvbGF0ZWQ/ICovCiAJCWludCBjdGwgPSBwaHlfcmVhZChwaHlkZXYsIE1JSV9CTUNSKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwX2dlbmVyaWMuYyBiL2RyaXZlcnMvbmV0L3BwcF9nZW5lcmljLmMKaW5kZXggOWY2ZDY3MC4uNDYwOWJjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwX2dlbmVyaWMuYworKysgYi9kcml2ZXJzL25ldC9wcHBfZ2VuZXJpYy5jCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQAogCiAJCS8qCiAJCSAqY2hlY2sgaWYgd2UgYXJlIG9uIHRoZSBsYXN0IGNoYW5uZWwgb3IKLQkJICp3ZSBleGNlZGVkIHRoZSBsZW5naHQgb2YgdGhlIGRhdGEgdG8KKwkJICp3ZSBleGNlZGVkIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgdG8KIAkJICpmcmFnbWVudAogCQkgKi8KIAkJaWYgKChuZnJlZSA8PSAwKSB8fCAoZmxlbiA+IGxlbikpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHBfc3luY3R0eS5jIGIvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYwppbmRleCA0ZTZiNzJmLi4yNTczZjUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHBfc3luY3R0eS5jCisrKyBiL2RyaXZlcnMvbmV0L3BwcF9zeW5jdHR5LmMKQEAgLTE3OCw3ICsxNzgsNyBAQAogICogd2F5IHRvIGZpeCB0aGlzIGlzIHRvIHVzZSBhIHJ3bG9jayBpbiB0aGUgdHR5IHN0cnVjdCwgYnV0IGZvciBub3cKICAqIHdlIHVzZSBhIHNpbmdsZSBnbG9iYWwgcndsb2NrIGZvciBhbGwgdHR5cyBpbiBwcHAgbGluZSBkaXNjaXBsaW5lLgogICoKLSAqIEZJWE1FOiBGaXhlZCBpbiB0dHlfaW8gbm93ZGF5cy4KKyAqIEZJWE1FOiBGaXhlZCBpbiB0dHlfaW8gbm93YWRheXMuCiAgKi8KIHN0YXRpYyBERUZJTkVfUldMT0NLKGRpc2NfZGF0YV9sb2NrKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwb2UuYyBiL2RyaXZlcnMvbmV0L3BwcG9lLmMKaW5kZXggNzhjMGUzYy4uNjkzYWFlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwb2UuYworKysgYi9kcml2ZXJzL25ldC9wcHBvZS5jCkBAIC0xMTUsNyArMTE1LDcgQEAKICAqIDIpIFNlc3Npb24gc3RhZ2UgKE1BQyBhbmQgU0lEIGFyZSBrbm93bikKICAqCiAgKiBFdGhlcm5ldCBmcmFtZXMgaGF2ZSBhIHNwZWNpYWwgdGFnIGZvciB0aGlzIGJ1dAotICogd2UgdXNlIHNpbXBsaWVyIGFwcHJvYWNoIGJhc2VkIG9uIHNlc3Npb24gaWQKKyAqIHdlIHVzZSBzaW1wbGVyIGFwcHJvYWNoIGJhc2VkIG9uIHNlc3Npb24gaWQKICAqLwogc3RhdGljIGlubGluZSBib29sIHN0YWdlX3Nlc3Npb24oX19iZTE2IHNpZCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuYyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuYwppbmRleCA1ZWNmYTRiLi5mZmRmNzM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmMKKysrIGIvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5jCkBAIC02MzIsNyArNjMyLDcgQEAKICAqIEBjYXJkOiBjYXJkIHN0cnVjdHVyZQogICoKICAqIGdlbGljX2NhcmRfZGlzYWJsZV9yeGRtYWMgdGVybWluYXRlcyBwcm9jZXNzaW5nIG9uIHRoZSBETUEgY29udHJvbGxlciBieQotICogdHVyaW5nIG9mZiBETUEgYW5kIGlzc3VlaW5nIGEgZm9yY2UgZW5kCisgKiB0dXJpbmcgb2ZmIERNQSBhbmQgaXNzdWluZyBhIGZvcmNlIGVuZAogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2VsaWNfY2FyZF9kaXNhYmxlX3J4ZG1hYyhzdHJ1Y3QgZ2VsaWNfY2FyZCAqY2FyZCkKIHsKQEAgLTY1MCw3ICs2NTAsNyBAQAogICogQGNhcmQ6IGNhcmQgc3RydWN0dXJlCiAgKgogICogZ2VsaWNfY2FyZF9kaXNhYmxlX3R4ZG1hYyB0ZXJtaW5hdGVzIHByb2Nlc3Npbmcgb24gdGhlIERNQSBjb250cm9sbGVyIGJ5Ci0gKiB0dXJpbmcgb2ZmIERNQSBhbmQgaXNzdWVpbmcgYSBmb3JjZSBlbmQKKyAqIHR1cmluZyBvZmYgRE1BIGFuZCBpc3N1aW5nIGEgZm9yY2UgZW5kCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBnZWxpY19jYXJkX2Rpc2FibGVfdHhkbWFjKHN0cnVjdCBnZWxpY19jYXJkICpjYXJkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5oIGIvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5oCmluZGV4IDMyNTIxYWUuLmZhZGFkZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuaAorKysgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmgKQEAgLTExNyw3ICsxMTcsNyBAQAogCUdFTElDX0RFU0NSX1JYREFUQUVSUgk9IDB4MDAwMjAwMDAsIC8qIElQIHBhY2tldCBmb3JtYXQgZXJyb3IgKi8KIAlHRUxJQ19ERVNDUl9SWENBTEVSUgk9IDB4MDAwMTAwMDAsIC8qIGNhcmlpZXIgZXh0ZW5zaW9uIGxlbmd0aAogCQkJCQkgICAgICAqIGVycm9yICovCi0JR0VMSUNfREVTQ1JfUlhDUkVYRVJSCT0gMHgwMDAwODAwMCwgLyogY2FycmllciBleHRlbnRpb24gZXJyb3IgKi8KKwlHRUxJQ19ERVNDUl9SWENSRVhFUlIJPSAweDAwMDA4MDAwLCAvKiBjYXJyaWVyIGV4dGVuc2lvbiBlcnJvciAqLwogCUdFTElDX0RFU0NSX1JYTUxUQ1NUCT0gMHgwMDAwNDAwMCwgLyogbXVsdGljYXN0IGFkZHJlc3MgZnJhbWUgKi8KIAkvKiBiaXQgMTMuLjAgcmVzZXJ2ZWQgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCmluZGV4IDRhNjI0YTIuLmI1YWUyOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCkBAIC04MTQsNyArODE0LDcgQEAKIAkJCSAqIHlvdSB3aWxsIG5vdCBkZWNpZGUgc3VpdGFibGUgY2lwaGVyIGZyb20KIAkJCSAqIGl0cyBiZWFjb24uCiAJCQkgKiBZb3Ugc2hvdWxkIGhhdmUga25vd2xlZGdlIGFib3V0IHRoZSBBUCdzCi0JCQkgKiBjaXBoZXIgaW5mb21hdGlvbiBpbiBvdGhlciBtZXRob2QgcHJpb3IgdG8KKwkJCSAqIGNpcGhlciBpbmZvcm1hdGlvbiBpbiBvdGhlciBtZXRob2QgcHJpb3IgdG8KIAkJCSAqIHRoZSBhc3NvY2lhdGlvbi4KIAkJCSAqLwogCQkJaWYgKCFwcmVjaXNlX2llKCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9weGExNjhfZXRoLmMgYi9kcml2ZXJzL25ldC9weGExNjhfZXRoLmMKaW5kZXggMWI2M2M4YS4uODlmNzU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHhhMTY4X2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L3B4YTE2OF9ldGguYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgKiBwZXAgLSBFVEhFUk5FVCAuCiAgKiBtYWNfYWRkciAtIE1BQyBhZGRyZXNzLgogICogc2tpcCAtIGlmIDEsIHNraXAgdGhpcyBhZGRyZXNzLlVzZWQgaW4gY2FzZSBvZiBkZWxldGluZyBhbiBlbnRyeSB3aGljaCBpcyBhCi0gKgkgIHBhcnQgb2YgY2hhaW4gaW4gdGhlIGhhc2ggdGFibGUuV2UgY2FudCBqdXN0IGRlbGV0ZSB0aGUgZW50cnkgc2luY2UKKyAqCSAgcGFydCBvZiBjaGFpbiBpbiB0aGUgaGFzaCB0YWJsZS5XZSBjYW4ndCBqdXN0IGRlbGV0ZSB0aGUgZW50cnkgc2luY2UKICAqCSAgdGhhdCB3aWxsIGJyZWFrIHRoZSBjaGFpbi5XZSBuZWVkIHRvIGRlZnJhZ21lbnQgdGhlIHRhYmxlcyB0aW1lIHRvCiAgKgkgIHRpbWUuCiAgKiByZCAgIC0gMCBEaXNjYXJkIHBhY2tldCB1cG9uIG1hdGNoLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcWxhM3h4eC5oIGIvZHJpdmVycy9uZXQvcWxhM3h4eC5oCmluZGV4IDMzNjJhNjYuLjczZTIzNDM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9xbGEzeHh4LmgKKysrIGIvZHJpdmVycy9uZXQvcWxhM3h4eC5oCkBAIC03NzAsNyArNzcwLDcgQEAKIAlGTTkzQzU2QV9XRFMgPSAweDAsCiAJRk05M0M1NkFfRVJBU0UgPSAweDMsCiAJRk05M0M1NkFfRVJBU0VfQUxMID0gMHgwLAotLyogQ29tbWFuZCBFeHRlbnRpb25zICovCisvKiBDb21tYW5kIEV4dGVuc2lvbnMgKi8KIAlGTTkzQzU2QV9XRU5fRVhUID0gMHgzLAogCUZNOTNDNTZBX1dSSVRFX0FMTF9FWFQgPSAweDEsCiAJRk05M0M1NkFfV0RTX0VYVCA9IDB4MCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3FsZ2UvcWxnZV9tYWluLmMgYi9kcml2ZXJzL25ldC9xbGdlL3FsZ2VfbWFpbi5jCmluZGV4IDQ5YmZhNTguLjViYjMxMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3FsZ2UvcWxnZV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvcWxnZS9xbGdlX21haW4uYwpAQCAtNjYwLDcgKzY2MCw3IEBACiAvKiBJZiB3ZSdyZSBydW5uaW5nIHdpdGggbXVsdGlwbGUgTVNJLVggdmVjdG9ycyB0aGVuIHdlIGVuYWJsZSBvbiB0aGUgZmx5LgogICogT3RoZXJ3aXNlLCB3ZSBtYXkgaGF2ZSBtdWx0aXBsZSBvdXRzdGFuZGluZyB3b3JrZXJzIGFuZCBkb24ndCB3YW50IHRvCiAgKiBlbmFibGUgdW50aWwgdGhlIGxhc3Qgb25lIGZpbmlzaGVzLiBJbiB0aGlzIGNhc2UsIHRoZSBpcnFfY250IGdldHMKLSAqIGluY3JlbWVudGVkIGV2ZXJ5dGltZSB3ZSBxdWV1ZSBhIHdvcmtlciBhbmQgZGVjcmVtZW50ZWQgZXZlcnl0aW1lCisgKiBpbmNyZW1lbnRlZCBldmVyeSB0aW1lIHdlIHF1ZXVlIGEgd29ya2VyIGFuZCBkZWNyZW1lbnRlZCBldmVyeSB0aW1lCiAgKiBhIHdvcmtlciBmaW5pc2hlcy4gIE9uY2UgaXQgaGl0cyB6ZXJvIHdlIGVuYWJsZSB0aGUgaW50ZXJydXB0LgogICovCiB1MzIgcWxfZW5hYmxlX2NvbXBsZXRpb25faW50ZXJydXB0KHN0cnVjdCBxbF9hZGFwdGVyICpxZGV2LCB1MzIgaW50cikKQEAgLTMyOTksNyArMzI5OSw3IEBACiAgKiB3aWxsIHNlcnZpY2UgaXQuICBBbiBleGFtcGxlIHdvdWxkIGJlIGlmIHRoZXJlIGFyZQogICogMiB2ZWN0b3JzIChzbyAyIFJTUyByaW5ncykgYW5kIDggVFggY29tcGxldGlvbiByaW5ncy4KICAqIFRoaXMgd291bGQgbWVhbiB0aGF0IHZlY3RvciAwIHdvdWxkIHNlcnZpY2UgUlNTIHJpbmcgMAotICogYW5kIFRYIGNvbXBldGlvbiByaW5ncyAwLDEsMiBhbmQgMy4gIFZlY3RvciAxIHdvdWxkCisgKiBhbmQgVFggY29tcGxldGlvbiByaW5ncyAwLDEsMiBhbmQgMy4gIFZlY3RvciAxIHdvdWxkCiAgKiBzZXJ2aWNlIFJTUyByaW5nIDEgYW5kIFRYIGNvbXBsZXRpb24gcmluZ3MgNCw1LDYgYW5kIDcuCiAgKi8KIHN0YXRpYyB2b2lkIHFsX3NldF90eF92ZWN0KHN0cnVjdCBxbF9hZGFwdGVyICpxZGV2KQpAQCAtNDE1Miw3ICs0MTUyLDcgQEAKIAlpbnQgaSwgc3RhdHVzOwogCXUzMiBsYnFfYnVmX2xlbjsKIAotCS8qIFdhaXQgZm9yIGFuIG91c3RhbmRpbmcgcmVzZXQgdG8gY29tcGxldGUuICovCisJLyogV2FpdCBmb3IgYW4gb3V0c3RhbmRpbmcgcmVzZXQgdG8gY29tcGxldGUuICovCiAJaWYgKCF0ZXN0X2JpdChRTF9BREFQVEVSX1VQLCAmcWRldi0+ZmxhZ3MpKSB7CiAJCWludCBpID0gMzsKIAkJd2hpbGUgKGktLSAmJiAhdGVzdF9iaXQoUUxfQURBUFRFUl9VUCwgJnFkZXYtPmZsYWdzKSkgewpAQCAtNDI4MSw3ICs0MjgxLDcgQEAKIAkJCWlmIChxbF9zZXRfcm91dGluZ19yZWcKIAkJCSAgICAocWRldiwgUlRfSURYX1BST01JU0NVT1VTX1NMT1QsIFJUX0lEWF9WQUxJRCwgMSkpIHsKIAkJCQluZXRpZl9lcnIocWRldiwgaHcsIHFkZXYtPm5kZXYsCi0JCQkJCSAgIkZhaWxlZCB0byBzZXQgcHJvbWlzY291cyBtb2RlLlxuIik7CisJCQkJCSAgIkZhaWxlZCB0byBzZXQgcHJvbWlzY3VvdXMgbW9kZS5cbiIpOwogCQkJfSBlbHNlIHsKIAkJCQlzZXRfYml0KFFMX1BST01JU0NVT1VTLCAmcWRldi0+ZmxhZ3MpOwogCQkJfQpAQCAtNDI5MSw3ICs0MjkxLDcgQEAKIAkJCWlmIChxbF9zZXRfcm91dGluZ19yZWcKIAkJCSAgICAocWRldiwgUlRfSURYX1BST01JU0NVT1VTX1NMT1QsIFJUX0lEWF9WQUxJRCwgMCkpIHsKIAkJCQluZXRpZl9lcnIocWRldiwgaHcsIHFkZXYtPm5kZXYsCi0JCQkJCSAgIkZhaWxlZCB0byBjbGVhciBwcm9taXNjb3VzIG1vZGUuXG4iKTsKKwkJCQkJICAiRmFpbGVkIHRvIGNsZWFyIHByb21pc2N1b3VzIG1vZGUuXG4iKTsKIAkJCX0gZWxzZSB7CiAJCQkJY2xlYXJfYml0KFFMX1BST01JU0NVT1VTLCAmcWRldi0+ZmxhZ3MpOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcjYwNDAuYyBiL2RyaXZlcnMvbmV0L3I2MDQwLmMKaW5kZXggZTNlYmQ5MC4uMjAwYTM2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcjYwNDAuYworKysgYi9kcml2ZXJzL25ldC9yNjA0MC5jCkBAIC01MzUsNyArNTM1LDcgQEAKIAkJCS8qIFJYIGRyaWJibGUgKi8KIAkJCWlmIChlcnIgJiBEU0NfUlhfRVJSX0RSSSkKIAkJCQlkZXYtPnN0YXRzLnJ4X2ZyYW1lX2Vycm9ycysrOwotCQkJLyogQnVmZmVyIGxlbmdodCBleGNlZWRlZCAqLworCQkJLyogQnVmZmVyIGxlbmd0aCBleGNlZWRlZCAqLwogCQkJaWYgKGVyciAmIERTQ19SWF9FUlJfQlVGKQogCQkJCWRldi0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogCQkJLyogUGFja2V0IHRvbyBsb25nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zMmlvLmMgYi9kcml2ZXJzL25ldC9zMmlvLmMKaW5kZXggMzU2ZTc0ZC4uMzM3YmRjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvczJpby5jCisrKyBiL2RyaXZlcnMvbmV0L3MyaW8uYwpAQCAtMjM1Myw3ICsyMzUzLDcgQEAKIAogCWlmIChzMmlvX2xpbmtfZmF1bHRfaW5kaWNhdGlvbihuaWMpID09IE1BQ19STUFDX0VSUl9USU1FUikgewogCQkvKgotCQkgKiBEb250IHNlZSBsaW5rIHN0YXRlIGludGVycnVwdHMgaW5pdGFsbHkgb24gc29tZSBzd2l0Y2hlcywKKwkJICogRG9udCBzZWUgbGluayBzdGF0ZSBpbnRlcnJ1cHRzIGluaXRpYWxseSBvbiBzb21lIHN3aXRjaGVzLAogCQkgKiBzbyBkaXJlY3RseSBzY2hlZHVsaW5nIHRoZSBsaW5rIHN0YXRlIHRhc2sgaGVyZS4KIAkJICovCiAJCXNjaGVkdWxlX3dvcmsoJm5pYy0+c2V0X2xpbmtfdGFzayk7CkBAIC0zNTYzLDcgKzM1NjMsNyBAQAogCX0KIAogCS8qCi0JICogQ2xlYXIgc3B1cmlvdXMgRUNDIGludGVycnVwdHMgdGhhdCB3b3VsZCBoYXZlIG9jY3VyZWQgb24KKwkgKiBDbGVhciBzcHVyaW91cyBFQ0MgaW50ZXJydXB0cyB0aGF0IHdvdWxkIGhhdmUgb2NjdXJyZWQgb24KIAkgKiBYRlJBTUUgSUkgY2FyZHMgYWZ0ZXIgcmVzZXQuCiAJICovCiAJaWYgKHNwLT5kZXZpY2VfdHlwZSA9PSBYRlJBTUVfSUlfREVWSUNFKSB7CkBAIC00MDY1LDcgKzQwNjUsNyBAQAogICogIERlc2NyaXB0aW9uIDoKICAqICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBUeCBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyLiBTMklPIE5JQyBzdXBwb3J0cwogICogIGNlcnRhaW4gcHJvdG9jb2wgYXNzaXN0IGZlYXR1cmVzIG9uIFR4IHNpZGUsIG5hbWVseSAgQ1NPLCBTL0csIExTTy4KLSAqICBOT1RFOiB3aGVuIGRldmljZSBjYW50IHF1ZXVlIHRoZSBwa3QsanVzdCB0aGUgdHJhbnNfc3RhcnQgdmFyaWFibGUgd2lsbAorICogIE5PVEU6IHdoZW4gZGV2aWNlIGNhbid0IHF1ZXVlIHRoZSBwa3QsanVzdCB0aGUgdHJhbnNfc3RhcnQgdmFyaWFibGUgd2lsbAogICogIG5vdCBiZSB1cGFkdGVkLgogICogIFJldHVybiB2YWx1ZToKICAqICAwIG9uIHN1Y2Nlc3MgJiAxIG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zMmlvLmggYi9kcml2ZXJzL25ldC9zMmlvLmgKaW5kZXggN2QxNjAzMC4uMmQxNDQ5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvczJpby5oCisrKyBiL2RyaXZlcnMvbmV0L3MyaW8uaApAQCAtMzc2LDcgKzM3Niw3IEBACiAvKiBNYWludGFpbnMgUGVyIEZJRk8gcmVsYXRlZCBpbmZvcm1hdGlvbi4gKi8KIHN0cnVjdCB0eF9maWZvX2NvbmZpZyB7CiAjZGVmaW5lCU1BWF9BVkFJTEFCTEVfVFhEUwk4MTkyCi0JdTMyIGZpZm9fbGVuOwkJLyogc3BlY2lmaWVzIGxlbiBvZiBGSUZPIHVwdG8gODE5MiwgaWUgbm8gb2YgVHhETHMgKi8KKwl1MzIgZmlmb19sZW47CQkvKiBzcGVjaWZpZXMgbGVuIG9mIEZJRk8gdXAgdG8gODE5MiwgaWUgbm8gb2YgVHhETHMgKi8KIC8qIFByaW9yaXR5IGRlZmluaXRpb24gKi8KICNkZWZpbmUgVFhfRklGT19QUklfMCAgICAgICAgICAgICAgIDAJLypIaWdoZXN0ICovCiAjZGVmaW5lIFRYX0ZJRk9fUFJJXzEgICAgICAgICAgICAgICAxCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvZmFsY29uLmMgYi9kcml2ZXJzL25ldC9zZmMvZmFsY29uLmMKaW5kZXggNzM0ZmNmYi4uZDk2YjIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL2ZhbGNvbi5jCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9mYWxjb24uYwpAQCAtNjkyLDcgKzY5Miw3IEBACiAJZWZ4X293b3JkX3QgbWRfc3RhdDsKIAlpbnQgY291bnQ7CiAKLQkvKiB3YWl0IHVwdG8gNTBtcyAtIHRha2VuIG1heCBmcm9tIGRhdGFzaGVldCAqLworCS8qIHdhaXQgdXAgdG8gNTBtcyAtIHRha2VuIG1heCBmcm9tIGRhdGFzaGVldCAqLwogCWZvciAoY291bnQgPSAwOyBjb3VudCA8IDUwMDA7IGNvdW50KyspIHsKIAkJZWZ4X3JlYWRvKGVmeCwgJm1kX3N0YXQsIEZSX0FCX01EX1NUQVQpOwogCQlpZiAoRUZYX09XT1JEX0ZJRUxEKG1kX3N0YXQsIEZSRl9BQl9NRF9CU1kpID09IDApIHsKQEAgLTEyMjEsNyArMTIyMSw3IEBACiAKIAkJCXJldHVybiAwOwogCQl9Ci0JfSB3aGlsZSAoKytjb3VudCA8IDIwKTsJLyogd2FpdCB1cHRvIDAuNCBzZWMgKi8KKwl9IHdoaWxlICgrK2NvdW50IDwgMjApOwkvKiB3YWl0IHVwIHRvIDAuNCBzZWMgKi8KIAogCW5ldGlmX2VycihlZngsIGh3LCBlZngtPm5ldF9kZXYsICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgU1JBTSByZXNldFxuIik7CiAJcmV0dXJuIC1FVElNRURPVVQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvbWNkaS5jIGIvZHJpdmVycy9uZXQvc2ZjL21jZGkuYwppbmRleCA1ZTExOGYwLi5kOTg0NzkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zZmMvbWNkaS5jCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpLmMKQEAgLTQ1Myw3ICs0NTMsNyBAQAogCSAqCiAJICogVGhlcmUncyBhIHJhY2UgaGVyZSB3aXRoIGVmeF9tY2RpX3JwYygpLCBiZWNhdXNlIHdlIG1pZ2h0IHJlY2VpdmUKIAkgKiBhIFJFQk9PVCBldmVudCAqYmVmb3JlKiB0aGUgcmVxdWVzdCBoYXMgYmVlbiBjb3BpZWQgb3V0LiBJbiBwb2xsZWQKLQkgKiBtb2RlIChkdXJpbmcgc3RhcnR1cCkgdGhpcyBpcyBpcnJlbGV2ZW50LCBiZWNhdXNlIGVmeF9tY2RpX2NvbXBsZXRlKCkKKwkgKiBtb2RlIChkdXJpbmcgc3RhcnR1cCkgdGhpcyBpcyBpcnJlbGV2YW50LCBiZWNhdXNlIGVmeF9tY2RpX2NvbXBsZXRlKCkKIAkgKiBpcyBpZ25vcmVkLiBJbiBldmVudCBtb2RlLCB0aGlzIGNvbmRpdGlvbiBpcyBqdXN0IGFuIGVkZ2UtY2FzZSBvZgogCSAqIHJlY2VpdmluZyBhIFJFQk9PVCBldmVudCBhZnRlciBwb3N0aW5nIHRoZSBNQ0RJIHJlcXVlc3QuIERpZCB0aGUgbWMKIAkgKiByZWJvb3QgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb3B5b3V0PyBUaGUgYmVzdCB3ZSBjYW4gZG8gYWx3YXlzIGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvbWNkaV9wY29sLmggYi9kcml2ZXJzL25ldC9zZmMvbWNkaV9wY29sLmgKaW5kZXggYjg2YTE1Zi4uNDFmZTA2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGNvbC5oCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3Bjb2wuaApAQCAtMTAzLDcgKzEwMyw3IEBACiAgKgogICogSWYgQ29kZT09Q01ERE9ORSwgdGhlbiB0aGUgZmllbGRzIGFyZSBmdXJ0aGVyIGludGVycHJldGVkIGFzOgogICoKLSAqICAgLSBMRVZFTD09SU5GTyAgICBDb21tYW5kIHN1Y2NlZGVkCisgKiAgIC0gTEVWRUw9PUlORk8gICAgQ29tbWFuZCBzdWNjZWVkZWQKICAqICAgLSBMRVZFTD09RVJSICAgICBDb21tYW5kIGZhaWxlZAogICoKICAqICAgIDAgICAgIDggICAgICAgICAxNiAgICAgIDI0ICAgICAzMgpAQCAtNTcyLDcgKzU3Miw3IEBACiAgICg0KihfbnVtd29yZHMpKQogCiAvKiBNQ19DTURfU0VUX1JBTkRfU0VFRDoKLSAqIFNldCB0aGUgMTZieXRlIHNlZWQgZm9yIHRoZSBNQyBwc3VlZG8tcmFuZG9tIGdlbmVyYXRvcgorICogU2V0IHRoZSAxNmJ5dGUgc2VlZCBmb3IgdGhlIE1DIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9yCiAgKi8KICNkZWZpbmUgTUNfQ01EX1NFVF9SQU5EX1NFRUQgMHgxYQogI2RlZmluZSBNQ19DTURfU0VUX1JBTkRfU0VFRF9JTl9MRU4gMTYKQEAgLTExNjIsNyArMTE2Miw3IEBACiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX0NMRUFSX1dJRFRIIDEKICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfQ0hBTkdFX0xCTiAyCiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX1BFUklPRElDX0NIQU5HRV9XSURUSCAxCi0vKiBSZW1haW5pbmcgUEVSSU9EKiBmaWVsZHMgb25seSByZWxldmVudCB3aGVuIFBFUklPRElDX0NIQU5HRSBpcyBzZXQgKi8KKy8qIFJlbWFpbmluZyBQRVJJT0QqIGZpZWxkcyBvbmx5IHJlbGV2YW50IHdoZW4gUEVSSU9ESUNfQ0hBTkdFIGlzIHNldCAqLwogI2RlZmluZSBNQ19DTURfTUFDX1NUQVRTX0NNRF9QRVJJT0RJQ19FTkFCTEVfTEJOIDMKICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfRU5BQkxFX1dJRFRIIDEKICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfQ0xFQVJfTEJOIDQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3BoeS5jIGIvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGh5LmMKaW5kZXggZWMzZjc0MC4uN2UzYzY1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGh5LmMKQEAgLTQ0OSw3ICs0NDksNyBAQAogCXN0cnVjdCBlZnhfbWNkaV9waHlfZGF0YSAqcGh5X2NmZyA9IGVmeC0+cGh5X2RhdGE7CiAJdTMyIHJtdGFkdjsKIAotCS8qIFRoZSBsaW5rIHBhcnRuZXIgY2FwYWJpbGl0aWVzIGFyZSBvbmx5IHJlbGV2ZW50IGlmIHRoZQorCS8qIFRoZSBsaW5rIHBhcnRuZXIgY2FwYWJpbGl0aWVzIGFyZSBvbmx5IHJlbGV2YW50IGlmIHRoZQogCSAqIGxpbmsgc3VwcG9ydHMgZmxvdyBjb250cm9sIGF1dG9uZWdvdGlhdGlvbiAqLwogCWlmICh+cGh5X2NmZy0+c3VwcG9ydGVkX2NhcCAmICgxIDw8IE1DX0NNRF9QSFlfQ0FQX0FOX0xCTikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NmYy9uZXRfZHJpdmVyLmggYi9kcml2ZXJzL25ldC9zZmMvbmV0X2RyaXZlci5oCmluZGV4IDIxNWQ1YzUuLjlmZmE5YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NmYy9uZXRfZHJpdmVyLmgKKysrIGIvZHJpdmVycy9uZXQvc2ZjL25ldF9kcml2ZXIuaApAQCAtNjcwLDcgKzY3MCw3IEBACiAgKiBAaXJxX3plcm9fY291bnQ6IE51bWJlciBvZiBsZWdhY3kgSVJRcyBzZWVuIHdpdGggcXVldWUgZmxhZ3MgPT0gMAogICogQGZhdGFsX2lycV9sZXZlbDogSVJRIGxldmVsIChiaXQgbnVtYmVyKSB1c2VkIGZvciBzZXJpb3VzIGVycm9ycwogICogQG10ZF9saXN0OiBMaXN0IG9mIE1URHMgYXR0YWNoZWQgdG8gdGhlIE5JQwotICogQG5pY19kYXRhOiBIYXJkd2FyZSBkZXBlbmRhbnQgc3RhdGUKKyAqIEBuaWNfZGF0YTogSGFyZHdhcmUgZGVwZW5kZW50IHN0YXRlCiAgKiBAbWFjX2xvY2s6IE1BQyBhY2Nlc3MgbG9jay4gUHJvdGVjdHMgQHBvcnRfZW5hYmxlZCwgQHBoeV9tb2RlLAogICoJQHBvcnRfaW5oaWJpdGVkLCBlZnhfbW9uaXRvcigpIGFuZCBlZnhfcmVjb25maWd1cmVfcG9ydCgpCiAgKiBAcG9ydF9lbmFibGVkOiBQb3J0IGVuYWJsZWQgaW5kaWNhdG9yLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2dpc2VlcS5jIGIvZHJpdmVycy9uZXQvc2dpc2VlcS5jCmluZGV4IDNhMGNjNjMuLmRkMDNiZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NnaXNlZXEuYworKysgYi9kcml2ZXJzL25ldC9zZ2lzZWVxLmMKQEAgLTMzLDcgKzMzLDcgQEAKICAqIHdpdGggdGhhdCBpbiBtaW5kLCBJJ3ZlIGRlY2lkZWQgdG8gbWFrZSB0aGlzIGRyaXZlciBsb29rIGNvbXBsZXRlbHkgbGlrZSBhCiAgKiBzdHVwaWQgTGFuY2UgZnJvbSBhIGRyaXZlciBhcmNoaXRlY3R1cmUgcGVyc3BlY3RpdmUuICBPbmx5IGRpZmZlcmVuY2UgaXMgdGhhdAogICogaGVyZSBvdXIgInJpbmcgYnVmZmVyIiBsb29rcyBhbmQgYWN0cyBsaWtlIGEgcmVhbCBMYW5jZSBvbmUgZG9lcyBidXQgaXMKLSAqIGxheWVkIG91dCBsaWtlIGhvdyB0aGUgSFBDIERNQSBhbmQgdGhlIFNlZXEgd2FudCBpdCB0by4gIFlvdSdkIGJlIHN1cnByaXNlZAorICogbGFpZCBvdXQgbGlrZSBob3cgdGhlIEhQQyBETUEgYW5kIHRoZSBTZWVxIHdhbnQgaXQgdG8uICBZb3UnZCBiZSBzdXJwcmlzZWQKICAqIGhvdyBhIHN0dXBpZCBpZGVhIGxpa2UgdGhpcyBjYW4gcGF5IG9mZiBpbiBwZXJmb3JtYW5jZSwgbm90IHRvIG1lbnRpb24KICAqIG1ha2luZyB0aGlzIGRyaXZlciAyLDAwMCB0aW1lcyBlYXNpZXIgdG8gd3JpdGUuIDstKQogICovCkBAIC03Nyw3ICs3Nyw3IEBACiB9OwogCiAvKgotICogV2FybmluZzogVGhpcyBzdHJ1Y3R1cmUgaXMgbGF5ZWQgb3V0IGluIGEgY2VydGFpbiB3YXkgYmVjYXVzZSBIUEMgZG1hCisgKiBXYXJuaW5nOiBUaGlzIHN0cnVjdHVyZSBpcyBsYWlkIG91dCBpbiBhIGNlcnRhaW4gd2F5IGJlY2F1c2UgSFBDIGRtYQogICogICAgICAgICAgZGVzY3JpcHRvcnMgbXVzdCBiZSA4LWJ5dGUgYWxpZ25lZC4gIFNvIGRvbid0IHRvdWNoIHRoaXMgd2l0aG91dAogICogICAgICAgICAgc29tZSBjYXJlLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zaF9ldGguYyBiL2RyaXZlcnMvbmV0L3NoX2V0aC5jCmluZGV4IGU5ZTdhNTMuLjhhNzJhOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NoX2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L3NoX2V0aC5jCkBAIC0xODc1LDcgKzE4NzUsNyBAQAogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3VucmVnaXN0ZXI7CiAKLQkvKiBwcmludCBkZXZpY2UgaW5mb21hdGlvbiAqLworCS8qIHByaW50IGRldmljZSBpbmZvcm1hdGlvbiAqLwogCXByX2luZm8oIkJhc2UgYWRkcmVzcyBhdCAweCV4LCAlcE0sIElSUSAlZC5cbiIsCiAJICAgICAgICh1MzIpbmRldi0+YmFzZV9hZGRyLCBuZGV2LT5kZXZfYWRkciwgbmRldi0+aXJxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2lzMTkwLmMgYi9kcml2ZXJzL25ldC9zaXMxOTAuYwppbmRleCAzNDA2ZWQ4Li5iNDM2ZTAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zaXMxOTAuYworKysgYi9kcml2ZXJzL25ldC9zaXMxOTAuYwpAQCAtOTMsNyArOTMsNyBAQAogCUludHJTdGF0dXMJCT0gMHgyMCwKIAlJbnRyTWFzawkJPSAweDI0LAogCUludHJDb250cm9sCQk9IDB4MjgsCi0JSW50clRpbWVyCQk9IDB4MmMsCS8vIHVudXNlZCAoSW50ZXJ1cHQgVGltZXIpCisJSW50clRpbWVyCQk9IDB4MmMsCS8vIHVudXNlZCAoSW50ZXJydXB0IFRpbWVyKQogCVBNQ29udHJvbAkJPSAweDMwLAkvLyB1bnVzZWQgKFBvd2VyIE1nbXQgQ29udHJvbC9TdGF0dXMpCiAJcnN2MgkJCT0gMHgzNCwJLy8gcmVzZXJ2ZWQKIAlST01Db250cm9sCQk9IDB4MzgsCkBAIC0yMzQsNyArMjM0LDcgQEAKIAlSeFNpemVNYXNrCT0gMHgwMDAwZmZmZgogCS8qCiAJICogVGhlIGFzaWMgY291bGQgYXBwYXJlbnRseSBkbyB2bGFuLCBUU08sIGp1bWJvIChzaXMxOTEgb25seSkgYW5kCi0JICogcHJvdmlkZSB0d28gKHVudXNlZCB3aXRoIExpbnV4KSBUeCBxdWV1ZXMuIE5vIHB1YmxpY2FsbHkKKwkgKiBwcm92aWRlIHR3byAodW51c2VkIHdpdGggTGludXgpIFR4IHF1ZXVlcy4gTm8gcHVibGljbHkKIAkgKiBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiBhbGFzLgogCSAqLwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NpczkwMC5jIGIvZHJpdmVycy9uZXQvc2lzOTAwLmMKaW5kZXggODRkNDE2Ny4uY2IzMTdjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2lzOTAwLmMKKysrIGIvZHJpdmVycy9uZXQvc2lzOTAwLmMKQEAgLTExODAsNyArMTE4MCw3IEBACiAgKgogICoJNjMwRSBlcXVhbGl6ZXIgd29ya2Fyb3VuZCBydWxlKEN5cnVzIEh1YW5nIDA4LzE1KQogICoJUEhZIHJlZ2lzdGVyIDE0aChUZXN0KQotICoJQml0IDE0OiAwIC0tIEF1dG9tYXRpY2FsbHkgZGVjdGVjdCAoZGVmYXVsdCkKKyAqCUJpdCAxNDogMCAtLSBBdXRvbWF0aWNhbGx5IGRldGVjdCAoZGVmYXVsdCkKICAqCQkxIC0tIE1hbnVhbGx5IHNldCBFcXVhbGl6ZXIgZmlsdGVyCiAgKglCaXQgMTM6IDAgLS0gKERlZmF1bHQpCiAgKgkJMSAtLSBTcGVlZCB1cCBjb252ZXJnZW5jZSBvZiBlcXVhbGl6ZXIgc2V0dGluZwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAKICAqCVRoZW4gc2V0IGVxdWFsaXplciB2YWx1ZSwgYW5kIHNldCBCaXQgMTQgdG8gMSwgQml0IDkgdG8gMAogICoJTGluayBPZmY6U2V0IEJpdCAxMyB0byAxLCBCaXQgMTQgdG8gMAogICoJQ2FsY3VsYXRlIEVxdWFsaXplciB2YWx1ZToKLSAqCVdoZW4gTGluayBpcyBPTiBhbmQgQml0IDE0IGlzIDAsIFNJUzkwMFBIWSB3aWxsIGF1dG8tZGVjdGVjdCBwcm9wZXIgZXF1YWxpemVyIHZhbHVlLgorICoJV2hlbiBMaW5rIGlzIE9OIGFuZCBCaXQgMTQgaXMgMCwgU0lTOTAwUEhZIHdpbGwgYXV0by1kZXRlY3QgcHJvcGVyIGVxdWFsaXplciB2YWx1ZS4KICAqCVdoZW4gdGhlIGVxdWFsaXplciBpcyBzdGFibGUsIHRoaXMgdmFsdWUgaXMgbm90IGEgZml4ZWQgdmFsdWUuIEl0IHdpbGwgYmUgd2l0aGluCiAgKglhIHNtYWxsIHJhbmdlKGVnLiA3fjkpLiBUaGVuIHdlIGdldCBhIG1pbmltdW0gYW5kIGEgbWF4aW11bSB2YWx1ZShlZy4gbWluPTcsIG1heD05KQogICoJMCA8PSBtYXggPD0gNCAgLS0+IHNldCBlcXVhbGl6ZXIgdG8gbWF4CkBAIC0xNzIzLDcgKzE3MjMsNyBAQAogCQlyeF9zaXplID0gZGF0YV9zaXplIC0gQ1JDX1NJWkU7CiAKICNpZiBkZWZpbmVkKENPTkZJR19WTEFOXzgwMjFRKSB8fCBkZWZpbmVkKENPTkZJR19WTEFOXzgwMjFRX01PRFVMRSkKLQkJLyogYGBUT09MT05HJycgZmxhZyBtZWFucyBqdW1ibyBwYWNrZXQgcmVjaXZlZC4gKi8KKwkJLyogYGBUT09MT05HJycgZmxhZyBtZWFucyBqdW1ibyBwYWNrZXQgcmVjZWl2ZWQuICovCiAJCWlmICgocnhfc3RhdHVzICYgVE9PTE9ORykgJiYgZGF0YV9zaXplIDw9IE1BWF9GUkFNRV9TSVpFKQogCQkJcnhfc3RhdHVzICY9ICh+ICgodW5zaWduZWQgaW50KVRPT0xPTkcpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9lc3MuYyBiL2RyaXZlcnMvbmV0L3NrZnAvZXNzLmMKaW5kZXggODYzOWEwOC4uMmZjNTk4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9lc3MuYworKysgYi9kcml2ZXJzL25ldC9za2ZwL2Vzcy5jCkBAIC0yNDEsNyArMjQxLDcgQEAKIAkJCSE9IFNNVF9SREZfU1VDQ0VTUykgfHwKIAkJCShzbS0+c210X3RpZCAhPSBzbWMtPmVzcy5hbGxvY190cmFuc19pZCkpIHsKIAotCQkJREJfRVNTKCJFU1M6IEFsbG9jYXRpb24gUmVzcG9uY2Ugbm90IGFjY2VwdGVkXG4iLDAsMCkgOworCQkJREJfRVNTKCJFU1M6IEFsbG9jYXRpb24gUmVzcG9uc2Ugbm90IGFjY2VwdGVkXG4iLDAsMCkgOwogCQkJcmV0dXJuIGZzOwogCQl9CiAKQEAgLTM5Myw3ICszOTMsNyBAQAogCSAqCQkgICAgICB8CSBULU5FRwl8CiAJICoJCSAgICAgICAtICAgICAgIC0KICAJICoKLQkgKiBULU5FRyBpcyBkaXNjcmliZWQgYnkgdGhlIGVxdWF0aW9uOgorCSAqIFQtTkVHIGlzIGRlc2NyaWJlZCBieSB0aGUgZXF1YXRpb246CiAJICoKIAkgKgkJICAgICAoLSkgZmRkaU1BQ1QtTkVHCiAJICoJVC1ORUcgPQkgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc5LDcgKzQ3OSw3IEBACiAJdm9pZAkJCSpwIDsKIAogCS8qCi0JICogZ2V0IGFuZCBpbml0aWFsaXplIHRoZSByZXNwb25jZSBmcmFtZQorCSAqIGdldCBhbmQgaW5pdGlhbGl6ZSB0aGUgcmVzcG9uc2UgZnJhbWUKIAkgKi8KIAlpZiAoc2JhX2NtZCA9PSBDSEFOR0VfQUxMT0NBVElPTikgewogCQlpZiAoIShtYj1zbXRfYnVpbGRfZnJhbWUoc21jLFNNVF9SQUYsU01UX1JFUExZLApAQCAtNTc4LDcgKzU3OCw3IEBACiAJfQogCQogCS8qCi0JICogZ2V0IGFuZCBpbml0aWFsaXplIHRoZSByZXNwb25jZSBmcmFtZQorCSAqIGdldCBhbmQgaW5pdGlhbGl6ZSB0aGUgcmVzcG9uc2UgZnJhbWUKIAkgKi8KIAlpZiAoIShtYj1zbXRfYnVpbGRfZnJhbWUoc21jLFNNVF9SQUYsU01UX1JFUVVFU1QsCiAJCQlzaXplb2Yoc3RydWN0IHNtdF9zYmFfYWxjX3JlcSkpKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvZnBsdXN0bS5jIGIvZHJpdmVycy9uZXQvc2tmcC9mcGx1c3RtLmMKaW5kZXggY2E0ZTdiYi4uYTIwZWQxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9mcGx1c3RtLmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9mcGx1c3RtLmMKQEAgLTM0MCw3ICszNDAsNyBAQAogCW91dHB3KEZNX0EoRk1fTENOVFIpLDApIDsKIAlvdXRwdyhGTV9BKEZNX0VDTlRSKSwwKSA7CiAJLyoKLQkgKiBjbGVhciBpbnRlcm5hbCBlcnJvciBjb3VudGVyIHN0dWN0dXJlCisJICogY2xlYXIgaW50ZXJuYWwgZXJyb3IgY291bnRlciBzdHJ1Y3R1cmUKIAkgKi8KIAllYyA9ICh1X2xvbmcgKikmc21jLT5ody5mcC5lcnJfc3RhdHMgOwogCWZvciAoaSA9IChzaXplb2Yoc3RydWN0IGVycl9zdCkvc2l6ZW9mKGxvbmcpKSA7IGkgOyBpLS0pCkBAIC0xMjYyLDggKzEyNjIsOCBAQAogCiBQYXJhCW1vZGUgPQkxCVJYX0VOQUJMRV9BTExNVUxUSQllbmFibGUgYWxsIG11bHRpY2FzdHMKIAkJMglSWF9ESVNBQkxFX0FMTE1VTFRJCWRpc2FibGUgImVuYWJsZSBhbGwgbXVsdGljYXN0cyIKLQkJMwlSWF9FTkFCTEVfUFJPTUlTQwllbmFibGUgcHJvbWlzY291cwotCQk0CVJYX0RJU0FCTEVfUFJPTUlTQwlkaXNhYmxlIHByb21pc2NvdXMKKwkJMwlSWF9FTkFCTEVfUFJPTUlTQwllbmFibGUgcHJvbWlzY3VvdXMKKwkJNAlSWF9ESVNBQkxFX1BST01JU0MJZGlzYWJsZSBwcm9taXNjdW91cwogCQk1CVJYX0VOQUJMRV9OU0EJCWVuYWJsZSByZWNlcHRpb24gb2YgTlNBIGZyYW1lcwogCQk2CVJYX0RJU0FCTEVfTlNBCQlkaXNhYmxlIHJlY2VwdGlvbiBvZiBOU0EgZnJhbWVzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaC9jbXRkZWYuaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9jbXRkZWYuaAppbmRleCBmMmY3NzFkLi41YTZjNjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2gvY210ZGVmLmgKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9oL2NtdGRlZi5oCkBAIC0xOSw3ICsxOSw3IEBACiAKIC8qCiAgKiBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBjb25zdGFudHMKLSAqIE1PRElJRlkgVEhFIEZPTExXT0lORyBUSFJFRSBERUZJTkVTCisgKiBNT0RJSUZZIFRIRSBGT0xMT1dJTkcgVEhSRUUgREVGSU5FUwogICovCiAjZGVmaW5lIEFNRFBMQwkJCS8qIGlmIEFtZCBQTEMgY2hpcCB1c2VkICovCiAjaWZkZWYJQ09OQwpAQCAtNDU2LDcgKzQ1Niw3IEBACiAJdV9sb25nIHNvZnRfZXJyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KIAl1X2xvbmcgcGFyaXR5X2VyciA7CQkvKiBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIGVidWZfZXJyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KLQl1X2xvbmcgZWJ1Zl9jb250IDsJCS8qIGNvbnRpbm91cyBlcnJvciBjb3VudGVyICovCisJdV9sb25nIGVidWZfY29udCA7CQkvKiBjb250aW51b3VzIGVycm9yIGNvdW50ZXIgKi8KIAl1X2xvbmcgcGh5aW52IDsJCQkvKiBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIHZzeW1fY3RyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KIAl1X2xvbmcgbWluaV9jdHIgOwkJLyogZXJyb3IgY291bnRlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9oL2ZwbHVzdG0uaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9mcGx1c3RtLmgKaW5kZXggNmQ3MzhlMS4uZDQzMTkxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9oL2ZwbHVzdG0uaAorKysgYi9kcml2ZXJzL25ldC9za2ZwL2gvZnBsdXN0bS5oCkBAIC0yMzcsOCArMjM3LDggQEAKICAqLwogI2RlZmluZSBSWF9FTkFCTEVfQUxMTVVMVEkJMQkvKiBlbmFibGUgYWxsIG11bHRpY2FzdHMgKi8KICNkZWZpbmUgUlhfRElTQUJMRV9BTExNVUxUSQkyCS8qIGRpc2FibGUgImVuYWJsZSBhbGwgbXVsdGljYXN0cyIgKi8KLSNkZWZpbmUgUlhfRU5BQkxFX1BST01JU0MJMwkvKiBlbmFibGUgcHJvbWlzY291cyAqLwotI2RlZmluZSBSWF9ESVNBQkxFX1BST01JU0MJNAkvKiBkaXNhYmxlIHByb21pc2NvdXMgKi8KKyNkZWZpbmUgUlhfRU5BQkxFX1BST01JU0MJMwkvKiBlbmFibGUgcHJvbWlzY3VvdXMgKi8KKyNkZWZpbmUgUlhfRElTQUJMRV9QUk9NSVNDCTQJLyogZGlzYWJsZSBwcm9taXNjdW91cyAqLwogI2RlZmluZSBSWF9FTkFCTEVfTlNBCQk1CS8qIGVuYWJsZSByZWNlcHRpb24gb2YgTlNBIGZyYW1lcyAqLwogI2RlZmluZSBSWF9ESVNBQkxFX05TQQkJNgkvKiBkaXNhYmxlIHJlY2VwdGlvbiBvZiBOU0EgZnJhbWVzICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaC9zbWMuaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zbWMuaAppbmRleCAwMjZhODNiLi5jNzc0YTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2gvc21jLmgKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9oL3NtYy5oCkBAIC0zODgsNyArMzg4LDcgQEAKIAl1X2xvbmcJcm10X3RfcG9sbCA7CQkvKiBSTVQgOiBjbGFpbS9iZWFjb24gcG9sbGVyICovCiAJdV9sb25nICBybXRfZHVwX21hY19iZWhhdmlvciA7ICAvKiBGbGFnIGZvciB0aGUgYmVhdmlvciBvZiBTTVQgaWYKIAkJCQkJICogYSBEdXBsaWNhdGUgTUFDIEFkZHJlc3Mgd2FzIGRldGVjdGVkLgotCQkJCQkgKiBGQUxTRTogU01UIHdpbGwgbGVhdmUgZmluYWx5IHRoZSByaW5nCisJCQkJCSAqIEZBTFNFOiBTTVQgd2lsbCBsZWF2ZSBmaW5hbGx5IHRoZSByaW5nCiAJCQkJCSAqIFRSVUU6ICBTTVQgd2lsbCByZWluc3RlcnQgaW50byB0aGUgcmluZwogCQkJCQkgKi8KIAl1X2xvbmcJbWFjX2RfbWF4IDsJCS8qIE1BQyA6IERfTWF4IHRpbWVyIHZhbHVlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2gvc210LmggYi9kcml2ZXJzL25ldC9za2ZwL2gvc210LmgKaW5kZXggMjk3Njc1Ny4uMjAzMGY5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9oL3NtdC5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zbXQuaApAQCAtNzkzLDcgKzc5Myw3IEBACiB9IDsKIAogLyoKLSAqIFNCQSBSZXF1ZXN0IEFsbG9jYXRpb24gUmVzcG9uY2UgRnJhbWUKKyAqIFNCQSBSZXF1ZXN0IEFsbG9jYXRpb24gUmVzcG9uc2UgRnJhbWUKICAqLwogc3RydWN0IHNtdF9zYmFfYWxjX3JlcyB7CiAJc3RydWN0IHNtdF9oZWFkZXIJc210IDsJCS8qIGdlbmVyaWMgaGVhZGVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2gvc3VwZXJuXzIuaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zdXBlcm5fMi5oCmluZGV4IDViYTBiODMuLjBiNzM2OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvaC9zdXBlcm5fMi5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zdXBlcm5fMi5oCkBAIC0xNCw3ICsxNCw3IEBACiAKIC8qCiAJZGVmaW5lcyBmb3IgQU1EIFN1cGVybmV0IElJIGNoaXAgc2V0Ci0JdGhlIGNoaXBzIGFyZSByZWZlcmVkIHRvIGFzCisJdGhlIGNoaXBzIGFyZSByZWZlcnJlZCB0byBhcwogCQlGUExVUwlGb3JtYWMgUGx1cwogCQlQTEMJUGh5c2ljYWwgTGF5ZXIKIApAQCAtMzg2LDcgKzM4Niw3IEBACiAjZGVmaW5lCUZNX01ESVNSQ1YJKDQ8PDgpCQkvKiBkaXNhYmxlIHJlY2VpdmUgZnVuY3Rpb24gKi8KICNkZWZpbmUJRk1fTVJFUzAJKDU8PDgpCQkvKiByZXNlcnZlICovCiAjZGVmaW5lCUZNX01MSU1QUk9NCSg2PDw4KQkJLyogbGltaXRlZC1wcm9taXNjdW91cyBtb2RlICovCi0jZGVmaW5lIEZNX01QUk9NSVNDT1VTCSg3PDw4KQkJLyogYWRkcmVzcyBkZXRlY3Rpb24gOiBwcm9taXNjb3VzICovCisjZGVmaW5lIEZNX01QUk9NSVNDT1VTCSg3PDw4KQkJLyogYWRkcmVzcyBkZXRlY3Rpb24gOiBwcm9taXNjdW91cyAqLwogCiAjZGVmaW5lIEZNX1NFTFNBCTB4MDgwMAkJLyogc2VsZWN0LXNob3J0LWFkZHJlc3MgYml0ICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaHdtdG0uYyBiL2RyaXZlcnMvbmV0L3NrZnAvaHdtdG0uYwppbmRleCBhZjVhNzU1Li5lMjYzOThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2h3bXRtLmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9od210bS5jCkBAIC02OTEsNyArNjkxLDcgQEAKICAqCQlpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLCBoYW5kbGVzIHRoZSBpbnRlcnJ1cHQgcmVxdWVzdHMKICAqCQlnZW5lcmF0ZWQgYnkgdGhlIEZEREkgYWRhcHRlci4KICAqCi0gKiBOT1RFOglUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZ2FyYW50ZWUgdGhhdCB0aGUKKyAqIE5PVEU6CVRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgbXVzdCBndWFyYW50ZWUgdGhhdCB0aGUKICAqCQlpbnRlcnJ1cHRzIG9mIHRoZSBhZGFwdGVyIGFyZSBkaXNhYmxlZCB3aGVuIGl0IGNhbGxzIGZkZGlfaXNyLgogICoKICAqCUFib3V0IHRoZSBVU0VfQlJFQUtfSVNSIG1lY2hhbmlzbW46CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvc2tmcC9wY21wbGMuYwppbmRleCAxMTJkMzViLi44OGQwMmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL3BjbXBsYy5jCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvcGNtcGxjLmMKQEAgLTE2ODAsNyArMTY4MCw3IEBACiAJCQkgKiBQcmV2ZW50IGNvdW50ZXIgZnJvbSBiZWluZyB3cmFwcGVkIGFmdGVyCiAJCQkgKiBoYW5naW5nIHllYXJzIGluIHRoYXQgaW50ZXJydXB0LgogCQkJICovCi0JCQlwbGMtPmVidWZfY29udCsrIDsJLyogRWJ1ZiBjb250aW5vdXMgZXJyb3IgKi8KKwkJCXBsYy0+ZWJ1Zl9jb250KysgOwkvKiBFYnVmIGNvbnRpbnVvdXMgZXJyb3IgKi8KIAkJfQogCiAjaWZkZWYJU1VQRVJORVRfMwpAQCAtMTcxNyw4ICsxNzE3LDggQEAKIAkJfQogI2VuZGlmCS8qIFNVUEVSTkVUXzMgKi8KIAl9IGVsc2UgewotCQkvKiBSZXNldCB0aGUgY29udGlub3VzIGVycm9yIHZhcmlhYmxlICovCi0JCXBsYy0+ZWJ1Zl9jb250ID0gMCA7CS8qIHJlc2V0IEVidWYgY29udGlub3VzIGVycm9yICovCisJCS8qIFJlc2V0IHRoZSBjb250aW51b3VzIGVycm9yIHZhcmlhYmxlICovCisJCXBsYy0+ZWJ1Zl9jb250ID0gMCA7CS8qIHJlc2V0IEVidWYgY29udGludW91cyBlcnJvciAqLwogCX0KIAlpZiAoY21kICYgUExfUEhZSU5WKSB7CQkvKiBwaHlzaWNhbCBsYXllciBpbnZhbGlkIHNpZ25hbCAqLwogCQlwbGMtPnBoeWludisrIDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvc210LmMgYi9kcml2ZXJzL25ldC9za2ZwL3NtdC5jCmluZGV4IDFlMWJkMGMuLjA4ZDk0MzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvc210LmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9zbXQuYwpAQCAtMjE5LDcgKzIxOSw3IEBACiAKIAkvKgogCSAqIE9ubHkgd2hlbiByaW5nIGlzIHVwIHdlIHdpbGwgaGF2ZSBhIHRva2VuIGNvdW50LiBUaGUKLQkgKiBmbGFnIGlzIHVuZm9ydHVuYXRseSBhIHNpbmdsZSBpbnN0YW5jZSB2YWx1ZS4gVGhpcworCSAqIGZsYWcgaXMgdW5mb3J0dW5hdGVseSBhIHNpbmdsZSBpbnN0YW5jZSB2YWx1ZS4gVGhpcwogCSAqIGRvZXNuJ3QgbWF0dGVyIG5vdywgYmVjYXVzZSB3ZSBjdXJyZW50bHkgaGF2ZSBvbmx5CiAJICogb25lIE1BQyBpbnN0YW5jZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZ2UuaCBiL2RyaXZlcnMvbmV0L3NrZ2UuaAppbmRleCA1MDdhZGRjLi41MWMwMjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2dlLmgKKysrIGIvZHJpdmVycy9uZXQvc2tnZS5oCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogCiAJUEhZX1NUX1BSRV9TVVAJPSAxPDw2LCAvKiBCaXQgIDY6CVByZWFtYmxlIFN1cHByZXNzaW9uICovCiAJUEhZX1NUX0FOX09WRVIJPSAxPDw1LCAvKiBCaXQgIDU6CUF1dG8tTmVnb3RpYXRpb24gT3ZlciAqLwotCVBIWV9TVF9SRU1fRkxUCT0gMTw8NCwgLyogQml0ICA0OglSZW1vdGUgRmF1bHQgQ29uZGl0aW9uIE9jY3VyZWQgKi8KKwlQSFlfU1RfUkVNX0ZMVAk9IDE8PDQsIC8qIEJpdCAgNDoJUmVtb3RlIEZhdWx0IENvbmRpdGlvbiBPY2N1cnJlZCAqLwogCVBIWV9TVF9BTl9DQVAJPSAxPDwzLCAvKiBCaXQgIDM6CUF1dG8tTmVnb3RpYXRpb24gQ2FwYWJpbGl0eSAqLwogCVBIWV9TVF9MU1lOQwk9IDE8PDIsIC8qIEJpdCAgMjoJTGluayBTeW5jaHJvbml6ZWQgKi8KIAlQSFlfU1RfSkFCX0RFVAk9IDE8PDEsIC8qIEJpdCAgMToJSmFiYmVyIERldGVjdGVkICovCkBAIC0xNzIxLDggKzE3MjEsOCBAQAogCUdNX0dQU1JfTElOS19VUAkJPSAxPDwxMiwgLyogQml0IDEyOglMaW5rIFVwIFN0YXR1cyAqLwogCUdNX0dQU1JfUEFVU0UJCT0gMTw8MTEsIC8qIEJpdCAxMToJUGF1c2UgU3RhdGUgKi8KIAlHTV9HUFNSX1RYX0FDVElWRQk9IDE8PDEwLCAvKiBCaXQgMTA6CVR4IGluIFByb2dyZXNzICovCi0JR01fR1BTUl9FWENfQ09MCQk9IDE8PDksCS8qIEJpdCAgOToJRXhjZXNzaXZlIENvbGxpc2lvbnMgT2NjdXJlZCAqLwotCUdNX0dQU1JfTEFUX0NPTAkJPSAxPDw4LAkvKiBCaXQgIDg6CUxhdGUgQ29sbGlzaW9ucyBPY2N1cmVkICovCisJR01fR1BTUl9FWENfQ09MCQk9IDE8PDksCS8qIEJpdCAgOToJRXhjZXNzaXZlIENvbGxpc2lvbnMgT2NjdXJyZWQgKi8KKwlHTV9HUFNSX0xBVF9DT0wJCT0gMTw8OCwJLyogQml0ICA4OglMYXRlIENvbGxpc2lvbnMgT2NjdXJyZWQgKi8KIAogCUdNX0dQU1JfUEhZX1NUX0NICT0gMTw8NSwJLyogQml0ICA1OglQSFkgU3RhdHVzIENoYW5nZSAqLwogCUdNX0dQU1JfR0lHX1NQRUVECT0gMTw8NCwJLyogQml0ICA0OglHaWdhYml0IFNwZWVkICgxID0gMTAwMCBNYnBzKSAqLwpAQCAtMjIyNyw3ICsyMjI3LDcgQEAKIAlYTV9TVF9CQwk9IDE8PDcsCQkvKiBCaXQgIDc6CUJyb2FkY2FzdCBwYWNrZXQgKi8KIAlYTV9TVF9NQwk9IDE8PDYsCQkvKiBCaXQgIDY6CU11bHRpY2FzdCBwYWNrZXQgKi8KIAlYTV9TVF9VQwk9IDE8PDUsCQkvKiBCaXQgIDU6CVVuaWNhc3QgcGFja2V0ICovCi0JWE1fU1RfVFhfVVIJPSAxPDw0LAkJLyogQml0ICA0OglGSUZPIFVuZGVycnVuIG9jY3VyZWQgKi8KKwlYTV9TVF9UWF9VUgk9IDE8PDQsCQkvKiBCaXQgIDQ6CUZJRk8gVW5kZXJydW4gb2NjdXJyZWQgKi8KIAlYTV9TVF9DU19FUlIJPSAxPDwzLAkJLyogQml0ICAzOglDYXJyaWVyIFNlbnNlIEVycm9yICovCiAJWE1fU1RfTEFUX0NPTAk9IDE8PDIsCQkvKiBCaXQgIDI6CUxhdGUgQ29sbGlzaW9uIEVycm9yICovCiAJWE1fU1RfTVVMX0NPTAk9IDE8PDEsCQkvKiBCaXQgIDE6CU11bHRpcGxlIENvbGxpc2lvbnMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NreTIuYyBiL2RyaXZlcnMvbmV0L3NreTIuYwppbmRleCAyYTkxODY4Li5mZjhkMjYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za3kyLmMKKysrIGIvZHJpdmVycy9uZXQvc2t5Mi5jCkBAIC05MzIsNyArOTMyLDcgQEAKIAlza3kyX3dyaXRlOChodywgU0tfUkVHKHBvcnQsIFRYX0dNRl9DVFJMX1QpLCBHTUZfUlNUX0NMUik7CiAJc2t5Ml93cml0ZTE2KGh3LCBTS19SRUcocG9ydCwgVFhfR01GX0NUUkxfVCksIEdNRl9PUEVSX09OKTsKIAotCS8qIE9uIGNoaXBzIHdpdGhvdXQgcmFtIGJ1ZmZlciwgcGF1c2UgaXMgY29udHJvbGVkIGJ5IE1BQyBsZXZlbCAqLworCS8qIE9uIGNoaXBzIHdpdGhvdXQgcmFtIGJ1ZmZlciwgcGF1c2UgaXMgY29udHJvbGxlZCBieSBNQUMgbGV2ZWwgKi8KIAlpZiAoIShody0+ZmxhZ3MgJiBTS1kyX0hXX1JBTV9CVUZGRVIpKSB7CiAJCS8qIFBhdXNlIHRocmVzaG9sZCBpcyBzY2FsZWQgYnkgOCBpbiBieXRlcyAqLwogCQlpZiAoaHctPmNoaXBfaWQgPT0gQ0hJUF9JRF9ZVUtPTl9GRV9QICYmCkBAIC0zMjU1LDcgKzMyNTUsNyBAQAogCiAvKiBUYWtlIGRldmljZSBkb3duIChvZmZsaW5lKS4KICAqIEVxdWl2YWxlbnQgdG8gZG9pbmcgZGV2X3N0b3AoKSBidXQgdGhpcyBkb2VzIG5vdAotICogaW5mb3JtIHVwcGVyIGxheWVycyBvZiB0aGUgdHJhbnNpc3Rpb24uCisgKiBpbmZvcm0gdXBwZXIgbGF5ZXJzIG9mIHRoZSB0cmFuc2l0aW9uLgogICovCiBzdGF0aWMgdm9pZCBza3kyX2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2t5Mi5oIGIvZHJpdmVycy9uZXQvc2t5Mi5oCmluZGV4IDY4NjFiMGUuLjBjNmQxMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NreTIuaAorKysgYi9kcml2ZXJzL25ldC9za3kyLmgKQEAgLTExOTQsNyArMTE5NCw3IEBACiAKIAlQSFlfU1RfUFJFX1NVUAk9IDE8PDYsIC8qIEJpdCAgNjoJUHJlYW1ibGUgU3VwcHJlc3Npb24gKi8KIAlQSFlfU1RfQU5fT1ZFUgk9IDE8PDUsIC8qIEJpdCAgNToJQXV0by1OZWdvdGlhdGlvbiBPdmVyICovCi0JUEhZX1NUX1JFTV9GTFQJPSAxPDw0LCAvKiBCaXQgIDQ6CVJlbW90ZSBGYXVsdCBDb25kaXRpb24gT2NjdXJlZCAqLworCVBIWV9TVF9SRU1fRkxUCT0gMTw8NCwgLyogQml0ICA0OglSZW1vdGUgRmF1bHQgQ29uZGl0aW9uIE9jY3VycmVkICovCiAJUEhZX1NUX0FOX0NBUAk9IDE8PDMsIC8qIEJpdCAgMzoJQXV0by1OZWdvdGlhdGlvbiBDYXBhYmlsaXR5ICovCiAJUEhZX1NUX0xTWU5DCT0gMTw8MiwgLyogQml0ICAyOglMaW5rIFN5bmNocm9uaXplZCAqLwogCVBIWV9TVF9KQUJfREVUCT0gMTw8MSwgLyogQml0ICAxOglKYWJiZXIgRGV0ZWN0ZWQgKi8KQEAgLTE3MjUsOCArMTcyNSw4IEBACiAJR01fR1BTUl9MSU5LX1VQCQk9IDE8PDEyLCAvKiBCaXQgMTI6CUxpbmsgVXAgU3RhdHVzICovCiAJR01fR1BTUl9QQVVTRQkJPSAxPDwxMSwgLyogQml0IDExOglQYXVzZSBTdGF0ZSAqLwogCUdNX0dQU1JfVFhfQUNUSVZFCT0gMTw8MTAsIC8qIEJpdCAxMDoJVHggaW4gUHJvZ3Jlc3MgKi8KLQlHTV9HUFNSX0VYQ19DT0wJCT0gMTw8OSwJLyogQml0ICA5OglFeGNlc3NpdmUgQ29sbGlzaW9ucyBPY2N1cmVkICovCi0JR01fR1BTUl9MQVRfQ09MCQk9IDE8PDgsCS8qIEJpdCAgODoJTGF0ZSBDb2xsaXNpb25zIE9jY3VyZWQgKi8KKwlHTV9HUFNSX0VYQ19DT0wJCT0gMTw8OSwJLyogQml0ICA5OglFeGNlc3NpdmUgQ29sbGlzaW9ucyBPY2N1cnJlZCAqLworCUdNX0dQU1JfTEFUX0NPTAkJPSAxPDw4LAkvKiBCaXQgIDg6CUxhdGUgQ29sbGlzaW9ucyBPY2N1cnJlZCAqLwogCiAJR01fR1BTUl9QSFlfU1RfQ0gJPSAxPDw1LAkvKiBCaXQgIDU6CVBIWSBTdGF0dXMgQ2hhbmdlICovCiAJR01fR1BTUl9HSUdfU1BFRUQJPSAxPDw0LAkvKiBCaXQgIDQ6CUdpZ2FiaXQgU3BlZWQgKDEgPSAxMDAwIE1icHMpICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbWM5MXguaCBiL2RyaXZlcnMvbmV0L3NtYzkxeC5oCmluZGV4IDY4ZDQ4YWIuLjVmNTNmYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NtYzkxeC5oCisrKyBiL2RyaXZlcnMvbmV0L3NtYzkxeC5oCkBAIC05MjEsNyArOTIxLDcgQEAKICAqIEhhY2sgQWxlcnQ6IFNvbWUgc2V0dXBzIGp1c3QgY2FuJ3Qgd3JpdGUgOCBvciAxNiBiaXRzIHJlbGlhYmx5IHdoZW4gbm90CiAgKiBhbGlnbmVkIHRvIGEgMzIgYml0IGJvdW5kYXJ5LiAgSSB0ZWxsIHlvdSB0aGF0IGRvZXMgZXhpc3QhCiAgKiBGb3J0dW5hdGVseSB0aGUgYWZmZWN0ZWQgcmVnaXN0ZXIgYWNjZXNzZXMgY2FuIGJlIGVhc2lseSB3b3JrZWQgYXJvdW5kCi0gKiBzaW5jZSB3ZSBjYW4gd3JpdGUgemVyb2VzIHRvIHRoZSBwcmVjZWVkaW5nIDE2IGJpdHMgd2l0aG91dCBhZHZlcnNlCisgKiBzaW5jZSB3ZSBjYW4gd3JpdGUgemVyb2VzIHRvIHRoZSBwcmVjZWRpbmcgMTYgYml0cyB3aXRob3V0IGFkdmVyc2UKICAqIGVmZmVjdHMgYW5kIHVzZSBhIDMyLWJpdCBhY2Nlc3MuCiAgKgogICogRW5mb3JjZSBpdCBvbiBhbnkgMzItYml0IGNhcGFibGUgc2V0dXAgZm9yIG5vdy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Ntc2M5MTF4LmMgYi9kcml2ZXJzL25ldC9zbXNjOTExeC5jCmluZGV4IDE1NjYyNTkuLmM0OThiNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Ntc2M5MTF4LmMKKysrIGIvZHJpdmVycy9uZXQvc21zYzkxMXguYwpAQCAtMTY2OSw3ICsxNjY5LDcgQEAKIAl9CiAKIAlpZiAoZTJjbWQgJiBFMlBfQ01EX0VQQ19USU1FT1VUXykgewotCQlTTVNDX1RSQUNFKERSViwgIkVycm9yIG9jY3VyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKKwkJU01TQ19UUkFDRShEUlYsICJFcnJvciBvY2N1cnJlZCBkdXJpbmcgZWVwcm9tIG9wZXJhdGlvbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Ntc2M5NDIwLmMgYi9kcml2ZXJzL25ldC9zbXNjOTQyMC5jCmluZGV4IGIwOWVlMWMuLjRjOTJhZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Ntc2M5NDIwLmMKKysrIGIvZHJpdmVycy9uZXQvc21zYzk0MjAuYwpAQCAtMzY0LDcgKzM2NCw3IEBACiAJfQogCiAJaWYgKGUyY21kICYgRTJQX0NNRF9FUENfVElNRU9VVF8pIHsKLQkJc21zY19pbmZvKEhXLCAiRXJyb3Igb2NjdXJlZCBkdXJpbmcgZWVwcm9tIG9wZXJhdGlvbiIpOworCQlzbXNjX2luZm8oSFcsICJFcnJvciBvY2N1cnJlZCBkdXJpbmcgZWVwcm9tIG9wZXJhdGlvbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N0bW1hYy9ub3JtX2Rlc2MuYyBiL2RyaXZlcnMvbmV0L3N0bW1hYy9ub3JtX2Rlc2MuYwppbmRleCBjZDBjYzc2Li4wMjljMmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdG1tYWMvbm9ybV9kZXNjLmMKKysrIGIvZHJpdmVycy9uZXQvc3RtbWFjL25vcm1fZGVzYy5jCkBAIC02Nyw3ICs2Nyw3IEBACiAKIC8qIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgaWYgZWFjaCBpbmNvbWluZyBmcmFtZSBoYXMgc29tZSBlcnJvcnMKICAqIGFuZCwgaWYgcmVxdWlyZWQsIHVwZGF0ZXMgdGhlIG11bHRpY2FzdCBzdGF0aXN0aWNzLgotICogSW4gY2FzZSBvZiBzdWNjZXNzLCBpdCByZXR1cm5zIGNzdW1fbm9uZSBiZWNhc3VlIHRoZSBkZXZpY2UKKyAqIEluIGNhc2Ugb2Ygc3VjY2VzcywgaXQgcmV0dXJucyBjc3VtX25vbmUgYmVjYXVzZSB0aGUgZGV2aWNlCiAgKiBpcyBub3QgYWJsZSB0byBjb21wdXRlIHRoZSBjc3VtIGluIEhXLiAqLwogc3RhdGljIGludCBuZGVzY19nZXRfcnhfc3RhdHVzKHZvaWQgKmRhdGEsIHN0cnVjdCBzdG1tYWNfZXh0cmFfc3RhdHMgKngsCiAJCQkgICAgICAgc3RydWN0IGRtYV9kZXNjICpwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc3VuYm1hYy5oIGIvZHJpdmVycy9uZXQvc3VuYm1hYy5oCmluZGV4IDhkYjg4OTQuLjQ5NDNlOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3N1bmJtYWMuaAorKysgYi9kcml2ZXJzL25ldC9zdW5ibWFjLmgKQEAgLTE4NSw3ICsxODUsNyBAQAogI2RlZmluZSBCSUdNQUNfUlhDRkdfRU5BQkxFICAgIDB4MDAwMDAwMDEgLyogRW5hYmxlIHRoZSByZWNlaXZlciAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBCSUdNQUNfUlhDRkdfRklGTyAgICAgIDB4MDAwMDAwMGUgLyogRGVmYXVsdCByeCBmdGhyZXNoLi4uICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBCSUdNQUNfUlhDRkdfUFNUUklQICAgIDB4MDAwMDAwMjAgLyogUGFkIGJ5dGUgc3RyaXAgZW5hYmxlICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBCSUdNQUNfUlhDRkdfUE1JU0MgICAgIDB4MDAwMDAwNDAgLyogRW5hYmxlIHByb21pc2NvdXMgbW9kZSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBCSUdNQUNfUlhDRkdfUE1JU0MgICAgIDB4MDAwMDAwNDAgLyogRW5hYmxlIHByb21pc2N1b3VzIG1vZGUgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0RFUlIgICAgICAweDAwMDAwMDgwIC8qIERpc2FibGUgZXJyb3IgY2hlY2tpbmcgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0RDUkNTICAgICAweDAwMDAwMTAwIC8qIERpc2FibGUgQ1JDIHN0cmlwcGluZyAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX01FICAgICAgICAweDAwMDAwMjAwIC8qIFJlY2VpdmUgcGFja2V0cyBhZGRyZXNzZWQgdG8gbWUgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N1bmdlbS5jIGIvZHJpdmVycy9uZXQvc3VuZ2VtLmMKaW5kZXggYzFhMzQ0OC4uZDNiZTczNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc3VuZ2VtLmMKKysrIGIvZHJpdmVycy9uZXQvc3VuZ2VtLmMKQEAgLTExNTAsNyArMTE1MCw3IEBACiAJdmFsICY9IH4oUENTX0NGR19FTkFCTEUgfCBQQ1NfQ0ZHX1RPKTsKIAl3cml0ZWwodmFsLCBncC0+cmVncyArIFBDU19DRkcpOwogCi0JLyogQWR2ZXJ0aXNlIGFsbCBjYXBhYmlsaXRpZXMgZXhjZXB0IGFzc3ltZXRyaWMKKwkvKiBBZHZlcnRpc2UgYWxsIGNhcGFiaWxpdGllcyBleGNlcHQgYXN5bW1ldHJpYwogCSAqIHBhdXNlLgogCSAqLwogCXZhbCA9IHJlYWRsKGdwLT5yZWdzICsgUENTX01JSUFEVik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zdW5obWUuaCBiL2RyaXZlcnMvbmV0L3N1bmhtZS5oCmluZGV4IDc1NmI1YmYuLjY0ZjI3ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3N1bmhtZS5oCisrKyBiL2RyaXZlcnMvbmV0L3N1bmhtZS5oCkBAIC0yMjMsNyArMjIzLDcgQEAKIC8qIEJpZ01hYyByZWNlaXZlIGNvbmZpZyByZWdpc3Rlci4gKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0VOQUJMRSAgIDB4MDAwMDAwMDEgLyogRW5hYmxlIHRoZSByZWNlaXZlciAgICAgICAgICAgICAqLwogI2RlZmluZSBCSUdNQUNfUlhDRkdfUFNUUklQICAgMHgwMDAwMDAyMCAvKiBQYWQgYnl0ZSBzdHJpcCBlbmFibGUgICAgICAgICAgICovCi0jZGVmaW5lIEJJR01BQ19SWENGR19QTUlTQyAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjb3VzIG1vZGUgICAgICAgICAgKi8KKyNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BNSVNDICAgIDB4MDAwMDAwNDAgLyogRW5hYmxlIHByb21pc2N1b3VzIG1vZGUgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0RFUlIgICAgIDB4MDAwMDAwODAgLyogRGlzYWJsZSBlcnJvciBjaGVja2luZyAgICAgICAgICAqLwogI2RlZmluZSBCSUdNQUNfUlhDRkdfRENSQ1MgICAgMHgwMDAwMDEwMCAvKiBEaXNhYmxlIENSQyBzdHJpcHBpbmcgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19SRUpNRSAgICAweDAwMDAwMjAwIC8qIFJlamVjdCBwYWNrZXRzIGFkZHJlc3NlZCB0byBtZSAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RjMzU4MTUuYyBiL2RyaXZlcnMvbmV0L3RjMzU4MTUuYwppbmRleCBiNmVlYzhjLi43Y2E1MWNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90YzM1ODE1LmMKKysrIGIvZHJpdmVycy9uZXQvdGMzNTgxNS5jCkBAIC0xMTksMTMgKzExOSwxMyBAQAogLyoKICAqIEJpdCBhc3NpZ25tZW50cwogICovCi0vKiBETUFfQ3RsIGJpdCBhc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBETUFfQ3RsIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBETUFfUnhBbGlnbgkgICAgICAgMHgwMGMwMDAwMCAvKiAxOlJlY2VwdGlvbiBBbGlnbm1lbnQJICAgICAqLwogI2RlZmluZSBETUFfUnhBbGlnbl8xCSAgICAgICAweDAwNDAwMDAwCiAjZGVmaW5lIERNQV9SeEFsaWduXzIJICAgICAgIDB4MDA4MDAwMDAKICNkZWZpbmUgRE1BX1J4QWxpZ25fMwkgICAgICAgMHgwMGMwMDAwMAogI2RlZmluZSBETUFfTTY2RW5TdGF0CSAgICAgICAweDAwMDgwMDAwIC8qIDE6NjZNSHogRW5hYmxlIFN0YXRlCSAgICAgKi8KLSNkZWZpbmUgRE1BX0ludE1hc2sJICAgICAgIDB4MDAwNDAwMDAgLyogMTpJbnRlcnVwdCBtYXNrCQkgICAgICovCisjZGVmaW5lIERNQV9JbnRNYXNrCSAgICAgICAweDAwMDQwMDAwIC8qIDE6SW50ZXJydXB0IG1hc2sJCSAgICAgKi8KICNkZWZpbmUgRE1BX1NXSW50UmVxCSAgICAgICAweDAwMDIwMDAwIC8qIDE6U29mdHdhcmUgSW50ZXJydXB0IHJlcXVlc3QgICAgKi8KICNkZWZpbmUgRE1BX1R4V2FrZVVwCSAgICAgICAweDAwMDEwMDAwIC8qIDE6VHJhbnNtaXQgV2FrZSBVcAkJICAgICAqLwogI2RlZmluZSBETUFfUnhCaWdFCSAgICAgICAweDAwMDA4MDAwIC8qIDE6UmVjZWl2ZSBCaWcgRW5kaWFuCSAgICAgKi8KQEAgLTEzNCwxMSArMTM0LDExIEBACiAjZGVmaW5lIERNQV9Qb3dyTWdtbnQJICAgICAgIDB4MDAwMDEwMDAgLyogMTpQb3dlciBNYW5hZ2VtZW50CQkgICAgICovCiAjZGVmaW5lIERNQV9EbUJ1cnN0X01hc2sgICAgICAgMHgwMDAwMDFmYyAvKiBETUEgQnVyc3Qgc2l6ZQkJICAgICAqLwogCi0vKiBSeEZyYWdTaXplIGJpdCBhc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBSeEZyYWdTaXplIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBSeEZyYWdfRW5QYWNrCSAgICAgICAweDAwMDA4MDAwIC8qIDE6RW5hYmxlIFBhY2tpbmcJCSAgICAgKi8KICNkZWZpbmUgUnhGcmFnX01pbkZyYWdNYXNrICAgICAweDAwMDAwZmZjIC8qIE1pbmltdW0gRnJhZ21lbnQJCSAgICAgKi8KIAotLyogTUFDX0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogTUFDX0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgTUFDX0xpbmsxMAkgICAgICAgMHgwMDAwODAwMCAvKiAxOkxpbmsgU3RhdHVzIDEwTWJpdHMJICAgICAqLwogI2RlZmluZSBNQUNfRW5NaXNzUm9sbAkgICAgICAgMHgwMDAwMjAwMCAvKiAxOkVuYWJsZSBNaXNzZWQgUm9sbAkgICAgICovCiAjZGVmaW5lIE1BQ19NaXNzUm9sbAkgICAgICAgMHgwMDAwMDQwMCAvKiAxOk1pc3NlZCBSb2xsCQkgICAgICovCkBAIC0xNTIsNyArMTUyLDcgQEAKICNkZWZpbmUgTUFDX0hhbHRJbW0JICAgICAgIDB4MDAwMDAwMDIgLyogMTpIYWx0IEltbWVkaWF0ZQkJICAgICAqLwogI2RlZmluZSBNQUNfSGFsdFJlcQkgICAgICAgMHgwMDAwMDAwMSAvKiAxOkhhbHQgcmVxdWVzdAkJICAgICAqLwogCi0vKiBQUk9NX0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBQUk9NX0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBQUk9NX0J1c3kJICAgICAgIDB4MDAwMDgwMDAgLyogMTpCdXN5IChTdGFydCBPcGVyYXRpb24pCSAgICAgKi8KICNkZWZpbmUgUFJPTV9SZWFkCSAgICAgICAweDAwMDA0MDAwIC8qMTA6UmVhZCBvcGVyYXRpb24JCSAgICAgKi8KICNkZWZpbmUgUFJPTV9Xcml0ZQkgICAgICAgMHgwMDAwMjAwMCAvKjAxOldyaXRlIG9wZXJhdGlvbgkJICAgICAqLwpAQCAtMTYyLDcgKzE2Miw3IEBACiAjZGVmaW5lIFBST01fQWRkcl9FbmEJICAgICAgIDB4MDAwMDAwMzAgLyoxMXh4eHg6UFJPTSBXcml0ZSBlbmFibGUJICAgICAqLwogCQkJCQkgIC8qMDB4eHh4OgkgICAgICBkaXNhYmxlCSAgICAgKi8KIAotLyogQ0FNX0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogQ0FNX0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgQ0FNX0NvbXBFbgkgICAgICAgMHgwMDAwMDAxMCAvKiAxOkNBTSBDb21wYXJlIEVuYWJsZQkgICAgICovCiAjZGVmaW5lIENBTV9OZWdDQU0JICAgICAgIDB4MDAwMDAwMDggLyogMTpSZWplY3QgcGFja2V0cyBDQU0gcmVjb2duaXplcywqLwogCQkJCQkgIC8qCQkJYWNjZXB0IG90aGVyICovCkBAIC0xNzAsNyArMTcwLDcgQEAKICNkZWZpbmUgQ0FNX0dyb3VwQWNjCSAgICAgICAweDAwMDAwMDAyIC8qIDE6TXVsdGljYXN0IGFzc2VwdAkJICAgICAqLwogI2RlZmluZSBDQU1fU3RhdGlvbkFjYwkgICAgICAgMHgwMDAwMDAwMSAvKiAxOnVuaWNhc3QgYWNjZXB0CQkgICAgICovCiAKLS8qIENBTV9FbmEgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENBTV9FbmEgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIENBTV9FTlRSWV9NQVgJCSAgICAgICAyMSAgIC8qIENBTSBEYXRhIGVudHJ5IG1heCBjb3VudAkgICAgICovCiAjZGVmaW5lIENBTV9FbmFfTWFzayAoKDE8PENBTV9FTlRSWV9NQVgpLTEpIC8qIENBTSBFbmFibGUgYml0cyAoTWF4IDIxYml0cykgICovCiAjZGVmaW5lIENBTV9FbmFfQml0KGluZGV4KQkoMSA8PCAoaW5kZXgpKQpAQCAtMTc4LDcgKzE3OCw3IEBACiAjZGVmaW5lIENBTV9FTlRSWV9TT1VSQ0UJMQogI2RlZmluZSBDQU1fRU5UUllfTUFDQ1RMCTIwCiAKLS8qIFR4X0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFR4X0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIFR4X0VuCQkgICAgICAgMHgwMDAwMDAwMSAvKiAxOlRyYW5zbWl0IGVuYWJsZQkJICAgICAqLwogI2RlZmluZSBUeF9UeEhhbHQJICAgICAgIDB4MDAwMDAwMDIgLyogMTpUcmFuc21pdCBIYWx0IFJlcXVlc3QJICAgICAqLwogI2RlZmluZSBUeF9Ob1BhZAkgICAgICAgMHgwMDAwMDAwNCAvKiAxOlN1cHByZXNzIFBhZGRpbmcJCSAgICAgKi8KQEAgLTE5Miw3ICsxOTIsNyBAQAogI2RlZmluZSBUeF9FblR4UGFyCSAgICAgICAweDAwMDAyMDAwIC8qIDE6RW5hYmxlIFRyYW5zbWl0IFBhcml0eQkgICAgICovCiAjZGVmaW5lIFR4X0VuQ29tcAkgICAgICAgMHgwMDAwNDAwMCAvKiAxOkVuYWJsZSBDb21wbGV0aW9uCSAgICAgKi8KIAotLyogVHhfU3RhdCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogVHhfU3RhdCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgVHhfVHhDb2xsX01BU0sJICAgICAgIDB4MDAwMDAwMEYgLyogVHggQ29sbGlzaW9uIENvdW50CQkgICAgICovCiAjZGVmaW5lIFR4X0V4Q29sbAkgICAgICAgMHgwMDAwMDAxMCAvKiBFeGNlc3NpdmUgQ29sbGlzaW9uCSAgICAgKi8KICNkZWZpbmUgVHhfVFhEZWZlcgkgICAgICAgMHgwMDAwMDAyMCAvKiBUcmFuc21pdCBEZWZlcmVkCQkgICAgICovCkBAIC0yMDgsNyArMjA4LDcgQEAKICNkZWZpbmUgVHhfSGFsdGVkCSAgICAgICAweDAwMDA4MDAwIC8qIFR4IEhhbHRlZAkJCSAgICAgKi8KICNkZWZpbmUgVHhfU1FFcnIJICAgICAgIDB4MDAwMTAwMDAgLyogU2lnbmFsIFF1YWxpdHkgRXJyb3IoU1FFKQkgICAgICovCiAKLS8qIFJ4X0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFJ4X0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIFJ4X0VuR29vZAkgICAgICAgMHgwMDAwNDAwMCAvKiAxOkVuYWJsZSBHb29kCQkgICAgICovCiAjZGVmaW5lIFJ4X0VuUnhQYXIJICAgICAgIDB4MDAwMDIwMDAgLyogMTpFbmFibGUgUmVjZWl2ZSBQYXJpdHkJICAgICAqLwogI2RlZmluZSBSeF9FbkxvbmdFcnIJICAgICAgIDB4MDAwMDA4MDAgLyogMTpFbmFibGUgTG9uZyBFcnJvcgkgICAgICovCkBAIC0yMjIsNyArMjIyLDcgQEAKICNkZWZpbmUgUnhfUnhIYWx0CSAgICAgICAweDAwMDAwMDAyIC8qIDE6UmVjZWl2ZSBIYWx0IFJlcXVlc3QJICAgICAqLwogI2RlZmluZSBSeF9SeEVuCQkgICAgICAgMHgwMDAwMDAwMSAvKiAxOlJlY2VpdmUgSW50cnJ1cHQgRW5hYmxlCSAgICAgKi8KIAotLyogUnhfU3RhdCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogUnhfU3RhdCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgUnhfSGFsdGVkCSAgICAgICAweDAwMDA4MDAwIC8qIFJ4IEhhbHRlZAkJCSAgICAgKi8KICNkZWZpbmUgUnhfR29vZAkJICAgICAgIDB4MDAwMDQwMDAgLyogUnggR29vZAkJCSAgICAgKi8KICNkZWZpbmUgUnhfUnhQYXIJICAgICAgIDB4MDAwMDIwMDAgLyogUnggUGFyaXR5IEVycm9yCQkgICAgICovCkBAIC0yMzgsNyArMjM4LDcgQEAKIAogI2RlZmluZSBSeF9TdGF0X01hc2sJICAgICAgIDB4MDAwMEZGRjAgLyogUnggQWxsIFN0YXR1cyBNYXNrCQkgICAgICovCiAKLS8qIEludF9FbiBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEludF9FbiBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIEludF9OUkFidEVuCSAgICAgICAweDAwMDAwODAwIC8qIDE6Tm9uLXJlY292ZXJhYmxlIEFib3J0IEVuYWJsZSAgKi8KICNkZWZpbmUgSW50X1R4Q3RsQ21wRW4JICAgICAgIDB4MDAwMDA0MDAgLyogMTpUcmFuc21pdCBDdGwgQ29tcGxldGUgRW5hYmxlICAqLwogI2RlZmluZSBJbnRfRG1QYXJFcnJFbgkgICAgICAgMHgwMDAwMDIwMCAvKiAxOkRNQSBQYXJpdHkgRXJyb3IgRW5hYmxlCSAgICAgKi8KQEAgLTI1Myw3ICsyNTMsNyBAQAogI2RlZmluZSBJbnRfRkRBRXhFbgkgICAgICAgMHgwMDAwMDAwMSAvKiAxOkZyZWUgRGVzY3JpcHRvciBBcmVhCSAgICAgKi8KIAkJCQkJICAvKgkJICAgRXhoYXVzdGVkIEVuYWJsZSAgKi8KIAotLyogSW50X1NyYyBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogSW50X1NyYyBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgSW50X05SYWJ0CSAgICAgICAweDAwMDA0MDAwIC8qIDE6Tm9uIFJlY292ZXJhYmxlIGVycm9yCSAgICAgKi8KICNkZWZpbmUgSW50X0RtUGFyRXJyU3RhdCAgICAgICAweDAwMDAyMDAwIC8qIDE6RE1BIFBhcml0eSBFcnJvciAmIENsZWFyCSAgICAgKi8KICNkZWZpbmUgSW50X0JMRXgJICAgICAgIDB4MDAwMDEwMDAgLyogMTpCdWZmZXIgTGlzdCBFbXB0eSAmIENsZWFyICAgICAqLwpAQCAtMjcwLDggKzI3MCw4IEBACiAjZGVmaW5lIEludF9JbnRNYWNSeAkgICAgICAgMHgwMDAwMDAwMiAvKiAxOlJ4IGNvbnRyb2xsZXIgJiBDbGVhcgkgICAgICovCiAjZGVmaW5lIEludF9JbnRNYWNUeAkgICAgICAgMHgwMDAwMDAwMSAvKiAxOlR4IGNvbnRyb2xsZXIgJiBDbGVhcgkgICAgICovCiAKLS8qIE1EX0NBIGJpdCBhc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSNkZWZpbmUgTURfQ0FfUHJlU3VwCSAgICAgICAweDAwMDAxMDAwIC8qIDE6UHJlYW1ibGUgU3VwcmVzcwkJICAgICAqLworLyogTURfQ0EgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyNkZWZpbmUgTURfQ0FfUHJlU3VwCSAgICAgICAweDAwMDAxMDAwIC8qIDE6UHJlYW1ibGUgU3VwcHJlc3MJCSAgICAgKi8KICNkZWZpbmUgTURfQ0FfQnVzeQkgICAgICAgMHgwMDAwMDgwMCAvKiAxOkJ1c3kgKFN0YXJ0IE9wZXJhdGlvbikJICAgICAqLwogI2RlZmluZSBNRF9DQV9XcgkgICAgICAgMHgwMDAwMDQwMCAvKiAxOldyaXRlIDA6UmVhZAkJICAgICAqLwogCkBAIC0yOTYsNyArMjk2LDcgQEAKIAogI2RlZmluZSBGRF9BTElHTgkxNgogCi0vKiBGcmFtZSBEZXNjcmlwdGVyIGJpdCBhc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBGcmFtZSBEZXNjcmlwdGVyIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBGRF9GRExlbmd0aF9NQVNLICAgICAgIDB4MDAwMEZGRkYgLyogTGVuZ3RoIE1BU0sJCSAgICAgKi8KICNkZWZpbmUgRkRfQkRDbnRfTUFTSwkgICAgICAgMHgwMDFGMDAwMCAvKiBCRCBjb3VudCBNQVNLIGluIEZECSAgICAgKi8KICNkZWZpbmUgRkRfRnJtT3B0X01BU0sJICAgICAgIDB4N0MwMDAwMDAgLyogRnJhbWUgb3B0aW9uIE1BU0sJCSAgICAgKi8KQEAgLTMwOSw4ICszMDksOCBAQAogI2RlZmluZSBGRF9OZXh0X0VPTAkgICAgICAgMHgwMDAwMDAwMSAvKiBGRCBFT0wgaW5kaWNhdG9yCQkgICAgICovCiAjZGVmaW5lIEZEX0JEQ250X1NISUZUCSAgICAgICAxNgogCi0vKiBCdWZmZXIgRGVzY3JpcHRlciBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0jZGVmaW5lIEJEX0J1ZmZMZW5ndGhfTUFTSyAgICAgMHgwMDAwRkZGRiAvKiBSZWNpZXZlIERhdGEgU2l6ZQkJICAgICAqLworLyogQnVmZmVyIERlc2NyaXB0ZXIgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyNkZWZpbmUgQkRfQnVmZkxlbmd0aF9NQVNLICAgICAweDAwMDBGRkZGIC8qIFJlY2VpdmUgRGF0YSBTaXplCQkgICAgICovCiAjZGVmaW5lIEJEX1J4QkRJRF9NQVNLCSAgICAgICAweDAwRkYwMDAwIC8qIEJEIElEIE51bWJlciBNQVNLCQkgICAgICovCiAjZGVmaW5lIEJEX1J4QkRTZXFOX01BU0sgICAgICAgMHg3RjAwMDAwMCAvKiBSeCBCRCBTZXF1ZW5jZSBOdW1iZXIJICAgICAqLwogI2RlZmluZSBCRF9Db3duc0JECSAgICAgICAweDgwMDAwMDAwIC8qIEJEIENvbnRyb2xsZXIgb3duZXIgYml0CSAgICAgKi8KQEAgLTMzOSw3ICszMzksNyBAQAogI2RlZmluZSBUWF9USFJFU0hPTEQJMTAyNAogLyogdXNlZCB0aHJlc2hvbGQgd2l0aCBwYWNrZXQgbWF4IGJ5dGUgZm9yIGxvdyBwY2kgdHJhbnNmZXIgYWJpbGl0eS4qLwogI2RlZmluZSBUWF9USFJFU0hPTERfTUFYIDE1MzYKLS8qIHNldHRpbmcgdGhyZXNob2xkIG1heCB2YWx1ZSB3aGVuIG92ZXJydW4gZXJyb3Igb2NjdXJlZCB0aGlzIGNvdW50LiAqLworLyogc2V0dGluZyB0aHJlc2hvbGQgbWF4IHZhbHVlIHdoZW4gb3ZlcnJ1biBlcnJvciBvY2N1cnJlZCB0aGlzIGNvdW50LiAqLwogI2RlZmluZSBUWF9USFJFU0hPTERfS0VFUF9MSU1JVCAxMAogCiAvKiAxNiArIFJYX0JVRl9OVU0gKiA4ICsgUlhfRkRfTlVNICogMTYgKyBUWF9GRF9OVU0gKiAzMiA8PSBQQUdFX1NJWkUqRkRfUEFHRV9OVU0gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RlaHV0aS5jIGIvZHJpdmVycy9uZXQvdGVodXRpLmMKaW5kZXggMzM5NzYxOC4uODU2NGVjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGVodXRpLmMKKysrIGIvZHJpdmVycy9uZXQvdGVodXRpLmMKQEAgLTY0NSw3ICs2NDUsNyBAQAogCWlmIChjbWQgIT0gU0lPQ0RFVlBSSVZBVEUpIHsKIAkJZXJyb3IgPSBjb3B5X2Zyb21fdXNlcihkYXRhLCBpZnItPmlmcl9kYXRhLCBzaXplb2YoZGF0YSkpOwogCQlpZiAoZXJyb3IpIHsKLQkJCXByX2VycigiY2FudCBjb3B5IGZyb20gdXNlclxuIik7CisJCQlwcl9lcnIoImNhbid0IGNvcHkgZnJvbSB1c2VyXG4iKTsKIAkJCVJFVCgtRUZBVUxUKTsKIAkJfQogCQlEQkcoIiVkIDB4JXggMHgleFxuIiwgZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7CkBAIC05OTksNyArOTk5LDcgQEAKICAqCiAgKiBSeEQgZmlmbyBpcyBzbWFsbGVyIHRoYW4gUnhGIGZpZm8gYnkgZGVzaWduLiBVcG9uIGhpZ2ggbG9hZCwgUnhEIHdpbGwgYmUKICAqIGZpbGxlZCBhbmQgcGFja2V0cyB3aWxsIGJlIGRyb3BwZWQgYnkgbmljIHdpdGhvdXQgZ2V0dGluZyBpbnRvIGhvc3Qgb3IKLSAqIGNvdXNpbmcgaW50ZXJydXB0LiBBbnl3YXksIGluIHRoYXQgY29uZGl0aW9uLCBob3N0IGhhcyBubyBjaGFuY2UgdG8gcHJvY2Nlc3MKKyAqIGNvdXNpbmcgaW50ZXJydXB0LiBBbnl3YXksIGluIHRoYXQgY29uZGl0aW9uLCBob3N0IGhhcyBubyBjaGFuY2UgdG8gcHJvY2VzcwogICogYWxsIHBhY2tldHMsIGJ1dCBkcm9wcGluZyBpbiBuaWMgaXMgY2hlYXBlciwgc2luY2UgaXQgdGFrZXMgMCBjcHUgY3ljbGVzCiAgKi8KIApAQCAtMTIwMCw4ICsxMjAwLDggQEAKIAlSRVQoKTsKIH0KIAotLyogYmR4X3J4X3JlY2VpdmUgLSByZWNpZXZlcyBmdWxsIHBhY2tldHMgZnJvbSBSWEQgZmlmbyBhbmQgcGFzcyB0aGVtIHRvIE9TCi0gKiBOT1RFOiBhIHNwZWNpYWwgdHJlYXRtZW50IGlzIGdpdmVuIHRvIG5vbi1jb250aW5vdXMgZGVzY3JpcHRvcnMKKy8qIGJkeF9yeF9yZWNlaXZlIC0gcmVjZWl2ZXMgZnVsbCBwYWNrZXRzIGZyb20gUlhEIGZpZm8gYW5kIHBhc3MgdGhlbSB0byBPUworICogTk9URTogYSBzcGVjaWFsIHRyZWF0bWVudCBpcyBnaXZlbiB0byBub24tY29udGludW91cyBkZXNjcmlwdG9ycwogICogdGhhdCBzdGFydCBuZWFyIHRoZSBlbmQsIHdyYXBzIGFyb3VuZCBhbmQgY29udGludWUgYXQgdGhlIGJlZ2lubmluZy4gYSBzZWNvbmQKICAqIHBhcnQgaXMgY29waWVkIHJpZ2h0IGFmdGVyIHRoZSBmaXJzdCwgYW5kIHRoZW4gZGVzY3JpcHRvciBpcyBpbnRlcnByZXRlZCBhcwogICogbm9ybWFsLiBmaWZvIGhhcyBhbiBleHRyYSBzcGFjZSB0byBhbGxvdyBzdWNoIG9wZXJhdGlvbnMKQEAgLTE1ODQsOSArMTU4NCw5IEBACiB9CiAKIC8qCi0gKiBiZHhfdHhfc3BhY2UgLSBjYWxjdWxhdGVzIGF2YWxhYmxlIHNwYWNlIGluIFRYIGZpZm8KKyAqIGJkeF90eF9zcGFjZSAtIGNhbGN1bGF0ZXMgYXZhaWxhYmxlIHNwYWNlIGluIFRYIGZpZm8KICAqIEBwcml2IC0gTklDIHByaXZhdGUgc3RydWN0dXJlCi0gKiBSZXR1cm5zIGF2YWxpYWJsZSBzcGFjZSBpbiBUWCBmaWZvIGluIGJ5dGVzCisgKiBSZXR1cm5zIGF2YWlsYWJsZSBzcGFjZSBpbiBUWCBmaWZvIGluIGJ5dGVzCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGJkeF90eF9zcGFjZShzdHJ1Y3QgYmR4X3ByaXYgKnByaXYpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWh1dGkuaCBiL2RyaXZlcnMvbmV0L3RlaHV0aS5oCmluZGV4IGI2YmE4NjAuLmM1NjQyZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RlaHV0aS5oCisrKyBiL2RyaXZlcnMvbmV0L3RlaHV0aS5oCkBAIC01MDIsNyArNTAyLDcgQEAKICNkZWZpbmUgIEdNQUNfUlhfRklMVEVSX0FDUkMgIDB4MDAxMAkvKiBhY2NlcHQgY3JjIGVycm9yICovCiAjZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9BTSAgICAweDAwMDgJLyogYWNjZXB0IG11bHRpY2FzdCAqLwogI2RlZmluZSAgR01BQ19SWF9GSUxURVJfQUIgICAgMHgwMDA0CS8qIGFjY2VwdCBicm9hZGNhc3QgKi8KLSNkZWZpbmUgIEdNQUNfUlhfRklMVEVSX1BSTSAgIDB4MDAwMQkvKiBbMDoxXSBwcm9taXNjb3VzIG1vZGUgKi8KKyNkZWZpbmUgIEdNQUNfUlhfRklMVEVSX1BSTSAgIDB4MDAwMQkvKiBbMDoxXSBwcm9taXNjdW91cyBtb2RlICovCiAKICNkZWZpbmUgIE1BWF9GUkFNRV9BQl9WQUwgICAgICAgMHgzZmZmCS8qIDEzOjAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGczLmMgYi9kcml2ZXJzL25ldC90ZzMuYwppbmRleCA3M2M5NDJkLi5iOGM1ZjM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZzMuYworKysgYi9kcml2ZXJzL25ldC90ZzMuYwpAQCAtOTcxMiw3ICs5NzEyLDcgQEAKIAkJZWVwcm9tLT5sZW4gKz0gYl9jb3VudDsKIAl9CiAKLQkvKiByZWFkIGJ5dGVzIHVwdG8gdGhlIGxhc3QgNCBieXRlIGJvdW5kYXJ5ICovCisJLyogcmVhZCBieXRlcyB1cCB0byB0aGUgbGFzdCA0IGJ5dGUgYm91bmRhcnkgKi8KIAlwZCA9ICZkYXRhW2VlcHJvbS0+bGVuXTsKIAlmb3IgKGkgPSAwOyBpIDwgKGxlbiAtIChsZW4gJiAzKSk7IGkgKz0gNCkgewogCQlyZXQgPSB0ZzNfbnZyYW1fcmVhZF9iZTMyKHRwLCBvZmZzZXQgKyBpLCAmdmFsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RnMy5oIGIvZHJpdmVycy9uZXQvdGczLmgKaW5kZXggNzM4ODRiNi4uNWU5NjcwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGczLmgKKysrIGIvZHJpdmVycy9uZXQvdGczLmgKQEAgLTIxMzAsNyArMjEzMCw3IEBACiAjZGVmaW5lIE1JSV9URzNfRFNQX0VYUDk2CQkweDBmOTYKICNkZWZpbmUgTUlJX1RHM19EU1BfRVhQOTcJCTB4MGY5NwogCi0jZGVmaW5lIE1JSV9URzNfQVVYX0NUUkwJCTB4MTggLyogYXV4aWxsaWFyeSBjb250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIE1JSV9URzNfQVVYX0NUUkwJCTB4MTggLyogYXV4aWxpYXJ5IGNvbnRyb2wgcmVnaXN0ZXIgKi8KIAogI2RlZmluZSBNSUlfVEczX0FVWENUTF9QQ1RMXzEwMFRYX0xQV1IJMHgwMDEwCiAjZGVmaW5lIE1JSV9URzNfQVVYQ1RMX1BDVExfU1BSX0lTT0xBVEUJMHgwMDIwCkBAIC0yMTQ2LDcgKzIxNDYsNyBAQAogI2RlZmluZSBNSUlfVEczX0FVWENUTF9BQ1RMX1RYXzZEQgkweDA0MDAKICNkZWZpbmUgTUlJX1RHM19BVVhDVExfU0hEV1NFTF9BVVhDVEwJMHgwMDAwCiAKLSNkZWZpbmUgTUlJX1RHM19BVVhfU1RBVAkJMHgxOSAvKiBhdXhpbGxpYXJ5IHN0YXR1cyByZWdpc3RlciAqLworI2RlZmluZSBNSUlfVEczX0FVWF9TVEFUCQkweDE5IC8qIGF1eGlsaWFyeSBzdGF0dXMgcmVnaXN0ZXIgKi8KICNkZWZpbmUgTUlJX1RHM19BVVhfU1RBVF9MUEFTUwkJMHgwMDA0CiAjZGVmaW5lIE1JSV9URzNfQVVYX1NUQVRfU1BETUFTSwkweDA3MDAKICNkZWZpbmUgTUlJX1RHM19BVVhfU1RBVF8xMEhBTEYJCTB4MDEwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMgYi9kcml2ZXJzL25ldC90b2tlbnJpbmcvM2MzNTkuYwppbmRleCAxMDgwMGYxLi44YTNiMTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvM2MzNTkuYworKysgYi9kcml2ZXJzL25ldC90b2tlbnJpbmcvM2MzNTkuYwpAQCAtMjA4LDcgKzIwOCw3IEBACiAgKglwYXNzaW5nL2dldHRpbmcgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgbmljLiBBcyB3aXRoIGFsbCByZXF1ZXN0cwogICoJb24gdGhpcyBuaWMgaXQgaGFzIHRvIGJlIGRvbmUgaW4gdHdvIHN0YWdlcywgYSkgdGVsbCB0aGUgbmljIHdoaWNoCiAgKgltZW1vcnkgYWRkcmVzcyB5b3Ugd2FudCB0byBhY2Nlc3MgYW5kIGIpIHBhc3MvZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBuaWMuCi0gKglXaXRoIHRoZSBFRVByb20sIHlvdSBoYXZlIHRvIHdhaXQgYmVmb3JlIGFuZCBpbmJldHdlZW4gYWNjZXNzIGEpIGFuZCBiKS4KKyAqCVdpdGggdGhlIEVFUHJvbSwgeW91IGhhdmUgdG8gd2FpdCBiZWZvcmUgYW5kIGJldHdlZW4gYWNjZXNzIGEpIGFuZCBiKS4KICAqCUFzIHRoaXMgaXMgb25seSByZWFkIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgYW5kIHRoZSB3YWl0IHBlcmlvZCBpcyB2ZXJ5IAogICoJc21hbGwgd2Ugc2hvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc2NoZWR1bGluZyBpc3N1ZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy9tYWRnZW1jLmMgYi9kcml2ZXJzL25ldC90b2tlbnJpbmcvbWFkZ2VtYy5jCmluZGV4IDc4NWFkMWEuLjJiZWRjMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy9tYWRnZW1jLmMKKysrIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL21hZGdlbWMuYwpAQCAtNzMsNyArNzMsNyBAQAogc3RhdGljIGlycXJldHVybl90IG1hZGdlbWNfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCk7CiAKIC8qCi0gKiBUaGVzZSB3b3JrIGFyb3VuZCBwYWdpbmcsIGhvd2V2ZXIgdGhleSBkb24ndCBndWFyZW50ZWUgeW91J3JlIG9uIHRoZQorICogVGhlc2Ugd29yayBhcm91bmQgcGFnaW5nLCBob3dldmVyIHRoZXkgZG9uJ3QgZ3VhcmFudGVlIHlvdSdyZSBvbiB0aGUKICAqIHJpZ2h0IHBhZ2UuCiAgKi8KICNkZWZpbmUgU0lGUkVBREIocmVnKSAoaW5iKGRldi0+YmFzZV9hZGRyICsgKChyZWc8MHg4KT9yZWc6cmVnLTB4OCkpKQpAQCAtMzg3LDcgKzM4Nyw3IEBACiAgKiBib3RoIHdpdGggdGhlaXIgb3duIGRpc2FkdmFudGFnZXMuLi4KICAqCiAgKiAxKSAgCVJlYWQgaW4gdGhlIFNJRlNUUyByZWdpc3RlciBmcm9tIHRoZSBUTVMgY29udHJvbGxlci4gIFRoaXMKLSAqCWlzIGd1YXJlbnRlZWQgdG8gYmUgYWNjdXJhdGUsIGhvd2V2ZXIsIHRoZXJlJ3MgYSBmYWlybHkKKyAqCWlzIGd1YXJhbnRlZWQgdG8gYmUgYWNjdXJhdGUsIGhvd2V2ZXIsIHRoZXJlJ3MgYSBmYWlybHkKICAqCWxhcmdlIHBlcmZvcm1hbmNlIHBlbmFsdHkgZm9yIGRvaW5nIHNvOiB0aGUgTWFkZ2UgY2hpcHMKICAqCW11c3QgcmVxdWVzdCB0aGUgcmVnaXN0ZXIgZnJvbSB0aGUgRWFnbGUsIHRoZSBFYWdsZSBtdXN0CiAgKglyZWFkIHRoZW0gZnJvbSBpdHMgaW50ZXJuYWwgYnVzLCBhbmQgdGhlbiB0YWtlIHRoZSByb3V0ZQpAQCAtNDU0LDcgKzQ1NCw3IEBACiB9CiAKIC8qCi0gKiBTZXQgdGhlIGNhcmQgdG8gdGhlIHByZWZlcmVkIHJpbmcgc3BlZWQuCisgKiBTZXQgdGhlIGNhcmQgdG8gdGhlIHByZWZlcnJlZCByaW5nIHNwZWVkLgogICoKICAqIFVubGlrZSBuZXdlciBjYXJkcywgdGhlIE1DMTYvMzIgaGF2ZSB0aGVpciBzcGVlZCBzZWxlY3Rpb24KICAqIGNpcmN1aXQgY29ubmVjdGVkIHRvIHRoZSBNYWRnZSBBU0lDcyBhbmQgbm90IHRvIHRoZSBUTVMzODAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL3NtY3RyLmMKaW5kZXggNjNkYjVhNi4uZDkwNDRhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nL3NtY3RyLmMKKysrIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL3NtY3RyLmMKQEAgLTM5Myw3ICszOTMsNyBAQAogICAgICAgICB0cC0+cnhfYmRiX2VuZFtOT05fTUFDX1FVRVVFXSA9IChCREJsb2NrICopc21jdHJfbWFsbG9jKGRldiwgMCk7CiAKICAgICAgICAgLyogQWxsb2NhdGUgTUFDIHRyYW5zbWl0IGJ1ZmZlcnMuCi0gICAgICAgICAqIE1BQyBUeCBCdWZmZXJzIGRvZW4ndCBoYXZlIHRvIGJlIG9uIGFuIE9ERCBCb3VuZHJ5LgorICAgICAgICAgKiBNQUMgVHggQnVmZmVycyBkb2VuJ3QgaGF2ZSB0byBiZSBvbiBhbiBPREQgQm91bmRhcnkuCiAgICAgICAgICAqLwogICAgICAgICB0cC0+dHhfYnVmZl9oZWFkW01BQ19RVUVVRV0KICAgICAgICAgICAgICAgICA9IChfX3UxNiAqKXNtY3RyX21hbGxvYyhkZXYsIHRwLT50eF9idWZmX3NpemVbTUFDX1FVRVVFXSk7CkBAIC00MTUsNyArNDE1LDcgQEAKIAogICAgICAgICAvKiBBbGxvY2F0ZSBOb24tTUFDIHRyYW5zbWl0IGJ1ZmZlcnMuCiAgICAgICAgICAqID8/IEZvciBtYXhpbXVtIE5ldHdhcmUgcGVyZm9ybWFuY2UsIHB1dCBUeCBCdWZmZXJzIG9uCi0gICAgICAgICAqIE9ERCBCb3VuZHJ5IGFuZCB0aGVuIHJlc3RvcmUgbWFsbG9jIHRvIEV2ZW4gQm91bmRyeXMuCisgICAgICAgICAqIE9ERCBCb3VuZGFyeSBhbmQgdGhlbiByZXN0b3JlIG1hbGxvYyB0byBFdmVuIEJvdW5kcnlzLgogICAgICAgICAgKi8KICAgICAgICAgc21jdHJfbWFsbG9jKGRldiwgMUwpOwogICAgICAgICB0cC0+dHhfYnVmZl9oZWFkW05PTl9NQUNfUVVFVUVdCkBAIC0xMzExLDcgKzEzMTEsNyBAQAogICAgICAgICBtZW1fdXNlZCArPSBzaXplb2YoQkRCbG9jaykgKiB0cC0+bnVtX3J4X2JkYnNbTUFDX1FVRVVFXTsKIAogICAgICAgICAvKiBBbGxvY2F0ZSBNQUMgdHJhbnNtaXQgYnVmZmVycy4KLSAgICAgICAgICogTUFDIHRyYW5zbWl0IGJ1ZmZlcnMgZG9uJ3QgaGF2ZSB0byBiZSBvbiBhbiBPREQgQm91bmRyeS4KKyAgICAgICAgICogTUFDIHRyYW5zbWl0IGJ1ZmZlcnMgZG9uJ3QgaGF2ZSB0byBiZSBvbiBhbiBPREQgQm91bmRhcnkuCiAgICAgICAgICAqLwogICAgICAgICBtZW1fdXNlZCArPSB0cC0+dHhfYnVmZl9zaXplW01BQ19RVUVVRV07CiAKQEAgLTEzMjUsNyArMTMyNSw3IEBACiAKICAgICAgICAgLyogQWxsb2NhdGUgTm9uLU1BQyB0cmFuc21pdCBidWZmZXJzLgogICAgICAgICAgKiBGb3IgbWF4aW11bSBOZXR3YXJlIHBlcmZvcm1hbmNlLCBwdXQgVHggQnVmZmVycyBvbgotICAgICAgICAgKiBPREQgQm91bmRyeSxhbmQgdGhlbiByZXN0b3JlIG1hbGxvYyB0byBFdmVuIEJvdW5kcnlzLgorICAgICAgICAgKiBPREQgQm91bmRhcnksYW5kIHRoZW4gcmVzdG9yZSBtYWxsb2MgdG8gRXZlbiBCb3VuZHJ5cy4KICAgICAgICAgICovCiAgICAgICAgIG1lbV91c2VkICs9IDFMOwogICAgICAgICBtZW1fdXNlZCArPSB0cC0+dHhfYnVmZl9zaXplW05PTl9NQUNfUVVFVUVdOwpAQCAtMzA2OSw4ICszMDY5LDggQEAKICAqIGRpc2FibGVkLiE/CiAgKgogICogTk9URSAyOiBJZiB0aGUgbW9uaXRvcl9zdGF0ZSBpcyBNU19CRUFDT05fVEVTVF9TVEFURSBhbmQgdGhlIHJlY2VpdmVfbWFzawotICogaGFzIGFueSBtdWx0aS1jYXN0IG9yIHByb21pc2NvdXMgYml0cyBzZXQsIHRoZSByZWNlaXZlX21hc2sgbmVlZHMgdG8KLSAqIGJlIGNoYW5nZWQgdG8gY2xlYXIgdGhlIG11bHRpLWNhc3Qgb3IgcHJvbWlzY291cyBtb2RlIGJpdHMsIHRoZSBsb2JlX3Rlc3QKKyAqIGhhcyBhbnkgbXVsdGktY2FzdCBvciBwcm9taXNjdW91cyBiaXRzIHNldCwgdGhlIHJlY2VpdmVfbWFzayBuZWVkcyB0bworICogYmUgY2hhbmdlZCB0byBjbGVhciB0aGUgbXVsdGktY2FzdCBvciBwcm9taXNjdW91cyBtb2RlIGJpdHMsIHRoZSBsb2JlX3Rlc3QKICAqIHJ1biwgYW5kIHRoZW4gdGhlIHJlY2VpdmUgbWFzayBzZXQgYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgaWYgdGhlIHRlc3QKICAqIGlzIHN1Y2Nlc3NmdWwuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL3RtczM4MHRyLmgKaW5kZXggNjBiMzBlZS4uZTVhNjE3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nL3RtczM4MHRyLmgKKysrIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL3RtczM4MHRyLmgKQEAgLTQ0Miw3ICs0NDIsNyBAQAogI2RlZmluZSBQQVNTX0ZJUlNUX0JVRl9PTkxZCTB4MDEwMAkvKiBQYXNzZXMgb25seSBmaXJzdCBpbnRlcm5hbCBidWZmZXIKIAkJCQkJICogb2YgZWFjaCByZWNlaXZlZCBmcmFtZTsgRnJhbWVTaXplCiAJCQkJCSAqIG9mIFJQTHMgbXVzdCBjb250YWluIGludGVybmFsCi0JCQkJCSAqIEJVRkZFUl9TSVpFIGJpdHMgZm9yIHByb21pc2NvdXMgbW9kZS4KKwkJCQkJICogQlVGRkVSX1NJWkUgYml0cyBmb3IgcHJvbWlzY3VvdXMgbW9kZS4KIAkJCQkJICovCiAjZGVmaW5lIEVOQUJMRV9GVUxMX0RVUExFWF9TRUxFQ1RJT04JMHgyMDAwIAogIAkJCQkJLyogRW5hYmxlIHRoZSB1c2Ugb2YgZnVsbC1kdXBsZXgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RzaTEwOF9ldGguaCBiL2RyaXZlcnMvbmV0L3RzaTEwOF9ldGguaAppbmRleCA1YTc3YWU2Li41ZmVlN2Q3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90c2kxMDhfZXRoLmgKKysrIGIvZHJpdmVycy9uZXQvdHNpMTA4X2V0aC5oCkBAIC0zMDUsOSArMzA1LDkgQEAKICNkZWZpbmUgVFNJMTA4X1RYX0NSQwkoMSA8PCA1KQkvKiBHZW5lcmF0ZSBDUkMgZm9yIHRoaXMgcGFja2V0ICovCiAjZGVmaW5lIFRTSTEwOF9UWF9JTlQJKDEgPDwgMTQpCS8qIEdlbmVyYXRlIGFuIElSUSBhZnRlciBmcmFnLiBwcm9jZXNzZWQgKi8KICNkZWZpbmUgVFNJMTA4X1RYX1JFVFJZCSgweGYgPDwgMTYpCS8qIDQgYml0IGZpZWxkIGluZGljYXRpbmcgbnVtLiBvZiByZXRyaWVzICovCi0jZGVmaW5lIFRTSTEwOF9UWF9DT0wJKDEgPDwgMjApCS8qIFNldCBpZiBhIGNvbGxpc2lvbiBvY2N1cmVkICovCi0jZGVmaW5lIFRTSTEwOF9UWF9MQ09MCSgxIDw8IDI0KQkvKiBTZXQgaWYgYSBsYXRlIGNvbGxpc2lvbiBvY2N1cmVkICovCi0jZGVmaW5lIFRTSTEwOF9UWF9VTkRFUgkoMSA8PCAyNSkJLyogU2V0IGlmIGEgRklGTyB1bmRlcnJ1biBvY2N1cmVkICovCisjZGVmaW5lIFRTSTEwOF9UWF9DT0wJKDEgPDwgMjApCS8qIFNldCBpZiBhIGNvbGxpc2lvbiBvY2N1cnJlZCAqLworI2RlZmluZSBUU0kxMDhfVFhfTENPTAkoMSA8PCAyNCkJLyogU2V0IGlmIGEgbGF0ZSBjb2xsaXNpb24gb2NjdXJyZWQgKi8KKyNkZWZpbmUgVFNJMTA4X1RYX1VOREVSCSgxIDw8IDI1KQkvKiBTZXQgaWYgYSBGSUZPIHVuZGVycnVuIG9jY3VycmVkICovCiAjZGVmaW5lIFRTSTEwOF9UWF9STElNCSgxIDw8IDI2KQkvKiBTZXQgaWYgdGhlIHJldHJ5IGxpbWl0IHdhcyByZWFjaGVkICovCiAjZGVmaW5lIFRTSTEwOF9UWF9PSwkoMSA8PCAzMCkJLyogU2V0IGlmIHRoZSBmcmFtZSBUWCB3YXMgc3VjY2Vzc2Z1bCAqLwogI2RlZmluZSBUU0kxMDhfVFhfT1dOCSgxIDw8IDMxKQkvKiBTZXQgaWYgdGhlIGRldmljZSBvd25zIHRoZSBkZXNjcmlwdG9yICovCkBAIC0zMzIsNyArMzMyLDcgQEAKICNkZWZpbmUgVFNJMTA4X1JYX1JVTlQJKDEgPDwgNCkvKiBQYWNrZXQgaXMgbGVzcyB0aGFuIG1pbmltdW0gc2l6ZSAqLwogI2RlZmluZSBUU0kxMDhfUlhfSEFTSAkoMSA8PCA3KS8qIEhhc2ggdGFibGUgbWF0Y2ggKi8KICNkZWZpbmUgVFNJMTA4X1JYX0JBRAkoMSA8PCA4KQkvKiBCYWQgZnJhbWUgKi8KLSNkZWZpbmUgVFNJMTA4X1JYX09WRVIJKDEgPDwgOSkJLyogRklGTyBvdmVycnVuIG9jY3VyZWQgKi8KKyNkZWZpbmUgVFNJMTA4X1JYX09WRVIJKDEgPDwgOSkJLyogRklGTyBvdmVycnVuIG9jY3VycmVkICovCiAjZGVmaW5lIFRTSTEwOF9SWF9UUlVOQwkoMSA8PCAxMSkJLyogUGFja2V0IHRydW5jYXRlZCBkdWUgdG8gZXhjZXNzIGxlbmd0aCAqLwogI2RlZmluZSBUU0kxMDhfUlhfQ1JDCSgxIDw8IDEyKQkvKiBQYWNrZXQgaGFkIGEgQ1JDIGVycm9yICovCiAjZGVmaW5lIFRTSTEwOF9SWF9JTlQJKDEgPDwgMTMpCS8qIEdlbmVyYXRlIGFuIElSUSBhZnRlciBmcmFnLiBwcm9jZXNzZWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3R1bGlwL2RlNHg1LmMgYi9kcml2ZXJzL25ldC90dWxpcC9kZTR4NS5jCmluZGV4IDRkYmQ0OTMuLmVmYWExZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bGlwL2RlNHg1LmMKKysrIGIvZHJpdmVycy9uZXQvdHVsaXAvZGU0eDUuYwpAQCAtNzksNyArNzksNyBAQAogICAgIGV2ZXJ5ICB1c2FibGUgREVDY2hpcCBib2FyZCwgIEkgIHBpbmNoZWQgRG9uYWxkJ3MgJ25leHRfbW9kdWxlJyBmaWVsZCB0bwogICAgIGxpbmsgbXkgbW9kdWxlcyB0b2dldGhlci4KIAotICAgIFVwdG8gMTUgRUlTQSBjYXJkcyBjYW4gYmUgc3VwcG9ydGVkIHVuZGVyIHRoaXMgZHJpdmVyLCBsaW1pdGVkIHByaW1hcmlseQorICAgIFVwIHRvIDE1IEVJU0EgY2FyZHMgY2FuIGJlIHN1cHBvcnRlZCB1bmRlciB0aGlzIGRyaXZlciwgbGltaXRlZCBwcmltYXJpbHkKICAgICBieSB0aGUgYXZhaWxhYmxlIElSUSBsaW5lcy4gIEkgaGF2ZSAgY2hlY2tlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgb2YKICAgICBtdWx0aXBsZSBkZXBjYSwgRXRoZXJXT1JLUyAzIGNhcmRzIGFuZCBkZTR4NSBjYXJkcyBhbmQgIGhhdmUgbm90IGZvdW5kIGEKICAgICBwcm9ibGVtIHlldCAocHJvdmlkZWQgeW91IGhhdmUgYXQgbGVhc3QgZGVwY2EuYyB2MC4zOCkgLi4uCkBAIC01MTcsNyArNTE3LDcgQEAKICAgICB1X2ludCBtY2k7ICAgICAgICAgICAgICAvKiAyMTE0MiBNSUkgQ29ubmVjdG9yIEludGVycnVwdCBpbmZvICAgICAgICAqLwogfTsKIAotI2RlZmluZSBERTRYNV9NQVhfUEhZIDggICAgIC8qIEFsbG93IHVwdG8gOCBhdHRhY2hlZCBQSFkgZGV2aWNlcyBwZXIgYm9hcmQgKi8KKyNkZWZpbmUgREU0WDVfTUFYX1BIWSA4ICAgICAvKiBBbGxvdyB1cCB0byA4IGF0dGFjaGVkIFBIWSBkZXZpY2VzIHBlciBib2FyZCAqLwogCiBzdHJ1Y3Qgc2lhX3BoeSB7CiAgICAgdV9jaGFyIG1jOyAgICAgICAgICAgICAgLyogTWVkaWEgQ29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTE0MzYsNyArMTQzNiw3IEBACiAKICAgICAvKiBQb2xsIGZvciBzZXR1cCBmcmFtZSBjb21wbGV0aW9uIChhZGFwdGVyIGludGVycnVwdHMgYXJlIGRpc2FibGVkIG5vdykgKi8KIAotICAgIGZvciAoaj0wLCBpPTA7KGk8NTAwKSAmJiAoaj09MCk7aSsrKSB7ICAgICAgIC8qIFVwdG8gNTAwbXMgZGVsYXkgKi8KKyAgICBmb3IgKGo9MCwgaT0wOyhpPDUwMCkgJiYgKGo9PTApO2krKykgeyAgICAgICAvKiBVcCB0byA1MDBtcyBkZWxheSAqLwogCW1kZWxheSgxKTsKIAlpZiAoKHMzMilsZTMyX3RvX2NwdShscC0+dHhfcmluZ1tscC0+dHhfbmV3XS5zdGF0dXMpID49IDApIGo9MTsKICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90dWxpcC9kbWZlLmMgYi9kcml2ZXJzL25ldC90dWxpcC9kbWZlLmMKaW5kZXggNzA2NGUwMy4uZmIwN2Y0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdHVsaXAvZG1mZS5jCisrKyBiL2RyaXZlcnMvbmV0L3R1bGlwL2RtZmUuYwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAKIAogCiAJLyogSWYgY2hpcCByZXBvcnRzIHRoYXQgbGluayBpcyBmYWlsZWQgaXQgY291bGQgYmUgYmVjYXVzZSBleHRlcm5hbAotCQlQSFkgbGluayBzdGF0dXMgcGluIGlzIG5vdCBjb25lY3RlZCBjb3JyZWN0bHkgdG8gY2hpcAorCQlQSFkgbGluayBzdGF0dXMgcGluIGlzIG5vdCBjb25uZWN0ZWQgY29ycmVjdGx5IHRvIGNoaXAKIAkJVG8gYmUgc3VyZSBhc2sgUEhZIHRvby4KIAkqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYyBiL2RyaXZlcnMvbmV0L3R1bGlwL2VlcHJvbS5jCmluZGV4IDMwMzFlZDkuLjI5NjQ4NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bGlwL2VlcHJvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3R1bGlwL2VlcHJvbS5jCkBAIC0xMTUsNyArMTE1LDcgQEAKIAkJCSAgMHgwMiwgICAgICAgLyogcGh5IHJlc2V0IHNlcXVlbmNlIGxlbmd0aCAqLwogCQkJICAweDAxLCAweDAwLCAvKiBwaHkgcmVzZXQgc2VxdWVuY2UgKi8KIAkJCSAgMHgwMCwgMHg3OCwgLyogbWVkaWEgY2FwYWJpbGl0aWVzICovCi0JCQkgIDB4MDAsIDB4ZTAsIC8qIG53YXkgYWR2ZXJ0aXNtZW50ICovCisJCQkgIDB4MDAsIDB4ZTAsIC8qIG53YXkgYWR2ZXJ0aXNlbWVudCAqLwogCQkJICAweDAwLCAweDA1LCAvKiBmZHggYml0IG1hcCAqLwogCQkJICAweDAwLCAweDA2ICAvKiB0dG0gYml0IG1hcCAqLwogCQkJfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3R5cGhvb24uYyBiL2RyaXZlcnMvbmV0L3R5cGhvb24uYwppbmRleCA3ZmE1ZWMyLi44MjY1M2NiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90eXBob29uLmMKKysrIGIvZHJpdmVycy9uZXQvdHlwaG9vbi5jCkBAIC04NDYsNyArODQ2LDcgQEAKIAlpZih0eXBob29uX251bV9mcmVlX3R4KHR4UmluZykgPCAobnVtRGVzYyArIDIpKSB7CiAJCW5ldGlmX3N0b3BfcXVldWUoZGV2KTsKIAotCQkvKiBBIFR4IGNvbXBsZXRlIElSUSBjb3VsZCBoYXZlIGdvdHRlbiBpbmJldHdlZW4sIG1ha2luZworCQkvKiBBIFR4IGNvbXBsZXRlIElSUSBjb3VsZCBoYXZlIGdvdHRlbiBiZXR3ZWVuLCBtYWtpbmcKIAkJICogdGhlIHJpbmcgZnJlZSBhZ2Fpbi4gT25seSBuZWVkIHRvIHJlY2hlY2sgaGVyZSwgc2luY2UKIAkJICogVHggaXMgc2VyaWFsaXplZC4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91Y2NfZ2V0aC5oIGIvZHJpdmVycy9uZXQvdWNjX2dldGguaAppbmRleCAwNTViODdhLi5kMTJmY2FkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91Y2NfZ2V0aC5oCisrKyBiL2RyaXZlcnMvbmV0L3VjY19nZXRoLmgKQEAgLTgwLDcgKzgwLDcgQEAKIAkJCQkgICBmcmFtZXMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuIDEyOAogCQkJCSAgIChJbmNsdWRpbmcgRkNTIGxlbmd0aD09NCkgYW5kIDI1NSBvY3RldHMgKi8KIAl1MzIgdHhvazsJCS8qIFRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVzaWRpbmcgaW4gZnJhbWVzCi0JCQkJICAgdGhhdCB3aGVyZSBpbnZvbHZlZCBpbiBzdWNjZXNzZnVsbAorCQkJCSAgIHRoYXQgd2hlcmUgaW52b2x2ZWQgaW4gc3VjY2Vzc2Z1bAogCQkJCSAgIHRyYW5zbWlzc2lvbiAqLwogCXUxNiB0eGNmOwkJLyogVG90YWwgbnVtYmVyIG9mIFBBVVNFIGNvbnRyb2wgZnJhbWVzCiAJCQkJICAgdHJhbnNtaXR0ZWQgYnkgdGhpcyBNQUMgKi8KQEAgLTc1OSw3ICs3NTksNyBAQAogCQkJCSAgIGZyYW1lcykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4gMTI4CiAJCQkJICAgKEluY2x1ZGluZyBGQ1MgbGVuZ3RoPT00KSBhbmQgMjU1IG9jdGV0cyAqLwogCXUzMiB0eG9rOwkJLyogVG90YWwgbnVtYmVyIG9mIG9jdGV0cyByZXNpZGluZyBpbiBmcmFtZXMKLQkJCQkgICB0aGF0IHdoZXJlIGludm9sdmVkIGluIHN1Y2Nlc3NmdWxsCisJCQkJICAgdGhhdCB3aGVyZSBpbnZvbHZlZCBpbiBzdWNjZXNzZnVsCiAJCQkJICAgdHJhbnNtaXNzaW9uICovCiAJdTE2IHR4Y2Y7CQkvKiBUb3RhbCBudW1iZXIgb2YgUEFVU0UgY29udHJvbCBmcmFtZXMKIAkJCQkgICB0cmFuc21pdHRlZCBieSB0aGlzIE1BQyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMKaW5kZXggNWYzYjk3Ni4uNTU1Mjg0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYworKysgYi9kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jCkBAIC0xOTAsNyArMTkwLDcgQEAKIAogCQkvKgogCQkgKiBFRU0gcGFja2V0IGhlYWRlciBmb3JtYXQ6Ci0JCSAqIGIwLi4xNDoJRUVNIHR5cGUgZGVwZW5kYW50IChEYXRhIG9yIENvbW1hbmQpCisJCSAqIGIwLi4xNDoJRUVNIHR5cGUgZGVwZW5kZW50IChEYXRhIG9yIENvbW1hbmQpCiAJCSAqIGIxNToJCWJtVHlwZQogCQkgKi8KIAkJaGVhZGVyID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHNrYi0+ZGF0YSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2Iva2F3ZXRoLmMgYi9kcml2ZXJzL25ldC91c2Iva2F3ZXRoLmMKaW5kZXggN2RjODQ5Ny4uYWQwMjk4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9rYXdldGguYwpAQCAtMTIyMSw3ICsxMjIxLDcgQEAKIAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAJaWYgKCFrYXdldGgpIHsKLQkJZGV2X3dhcm4oJmludGYtPmRldiwgInVucmVnaXN0ZXJpbmcgbm9uLWV4aXN0YW50IGRldmljZVxuIik7CisJCWRldl93YXJuKCZpbnRmLT5kZXYsICJ1bnJlZ2lzdGVyaW5nIG5vbi1leGlzdGVudCBkZXZpY2VcbiIpOwogCQlyZXR1cm47CiAJfQogCW5ldGRldiA9IGthd2V0aC0+bmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlhLXJoaW5lLmMgYi9kcml2ZXJzL25ldC92aWEtcmhpbmUuYwppbmRleCA1ZTdmMDY5Li5lYjVkNzVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92aWEtcmhpbmUuYworKysgYi9kcml2ZXJzL25ldC92aWEtcmhpbmUuYwpAQCAtMTg2MSw3ICsxODYxLDcgQEAKIAl1MzIgaW50cl9zdGF0dXM7CiAKIAkvKgotCSAqIElmIG5ldyBlcnJvcnMgb2NjdXJlZCwgd2UgbmVlZCB0byBzb3J0IHRoZW0gb3V0IGJlZm9yZSBkb2luZyBUeC4KKwkgKiBJZiBuZXcgZXJyb3JzIG9jY3VycmVkLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBvdXQgYmVmb3JlIGRvaW5nIFR4LgogCSAqIEluIHRoYXQgY2FzZSB0aGUgSVNSIHdpbGwgYmUgYmFjayBoZXJlIFJTTiBhbnl3YXkuCiAJICovCiAJaW50cl9zdGF0dXMgPSBnZXRfaW50cl9zdGF0dXMoZGV2KTsKQEAgLTE4ODcsNyArMTg4Nyw3IEBACiAJCS8qIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAqLwogCQlpZiAoZGVidWcgPiAxKQogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IHJoaW5lX3Jlc3RhcnRfdHgoKSAiCi0JCQkgICAgICAgIkFub3RoZXIgZXJyb3Igb2NjdXJlZCAlOC44eC5cbiIsCisJCQkgICAgICAgIkFub3RoZXIgZXJyb3Igb2NjdXJyZWQgJTguOHguXG4iLAogCQkJICAgICAgIGRldi0+bmFtZSwgaW50cl9zdGF0dXMpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMgYi9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYwppbmRleCAwZDZmZWM2Li40ZmUwNTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYworKysgYi9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYwpAQCAtMjkyLDcgKzI5Miw3IEBACiAvKiBJUF9ieXRlX2FsaWduW10gaXMgdXNlZCBmb3IgSVAgaGVhZGVyIERXT1JEIGJ5dGUgYWxpZ25lZAogICAgMDogaW5kaWNhdGUgdGhlIElQIGhlYWRlciB3b24ndCBiZSBEV09SRCBieXRlIGFsaWduZWQuKERlZmF1bHQpIC4KICAgIDE6IGluZGljYXRlIHRoZSBJUCBoZWFkZXIgd2lsbCBiZSBEV09SRCBieXRlIGFsaWduZWQuCi0gICAgICBJbiBzb21lIGVudmlyb21lbnQsIHRoZSBJUCBoZWFkZXIgc2hvdWxkIGJlIERXT1JEIGJ5dGUgYWxpZ25lZCwKKyAgICAgIEluIHNvbWUgZW52aXJvbm1lbnQsIHRoZSBJUCBoZWFkZXIgc2hvdWxkIGJlIERXT1JEIGJ5dGUgYWxpZ25lZCwKICAgICAgIG9yIHRoZSBwYWNrZXQgd2lsbCBiZSBkcm9wZWQgd2hlbiB3ZSByZWNlaXZlIGl0LiAoZWc6IElQVlMpCiAqLwogVkVMT0NJVFlfUEFSQU0oSVBfYnl0ZV9hbGlnbiwgIkVuYWJsZSBJUCBoZWFkZXIgZHdvcmQgYWxpZ25lZCIpOwpAQCAtMTk5NCw3ICsxOTk0LDcgQEAKICAqCUBkZXY6IG5ldHdvcmsgZGV2aWNlCiAgKgogICoJUmVwbGFjZSB0aGUgY3VycmVudCBza2IgdGhhdCBpcyBzY2hlZHVsZWQgZm9yIFJ4IHByb2Nlc3NpbmcgYnkgYQotICoJc2hvcnRlciwgaW1tZWRpYXRseSBhbGxvY2F0ZWQgc2tiLCBpZiB0aGUgcmVjZWl2ZWQgcGFja2V0IGlzIHNtYWxsCisgKglzaG9ydGVyLCBpbW1lZGlhdGVseSBhbGxvY2F0ZWQgc2tiLCBpZiB0aGUgcmVjZWl2ZWQgcGFja2V0IGlzIHNtYWxsCiAgKgllbm91Z2guIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlIGlmIHRoZSByZWNlaXZlZAogICoJcGFja2V0IGlzIHRvbyBiaWcgb3IgaWYgbWVtb3J5IGlzIGV4aGF1c3RlZC4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdm14bmV0My92bXhuZXQzX2Rydi5jIGIvZHJpdmVycy9uZXQvdm14bmV0My92bXhuZXQzX2Rydi5jCmluZGV4IGNjMTRiNGEuLjBkNDdjM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZteG5ldDMvdm14bmV0M19kcnYuYworKysgYi9kcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZHJ2LmMKQEAgLTg5Miw3ICs4OTIsNyBAQAogICogVHJhbnNtaXRzIGEgcGt0IHRocnUgYSBnaXZlbiB0cQogICogUmV0dXJuczoKICAqICAgIE5FVERFVl9UWF9PSzogICAgICBkZXNjcmlwdG9ycyBhcmUgc2V0dXAgc3VjY2Vzc2Z1bGx5Ci0gKiAgICBORVRERVZfVFhfT0s6ICAgICAgZXJyb3Igb2NjdXJlZCwgdGhlIHBrdCBpcyBkcm9wcGVkCisgKiAgICBORVRERVZfVFhfT0s6ICAgICAgZXJyb3Igb2NjdXJyZWQsIHRoZSBwa3QgaXMgZHJvcHBlZAogICogICAgTkVUREVWX1RYX0JVU1k6ICAgIHR4IHJpbmcgaXMgZnVsbCwgcXVldWUgaXMgc3RvcHBlZAogICoKICAqIFNpZGUtZWZmZWN0czoKQEAgLTI2ODUsNyArMjY4NSw3IEBACiAgKiBFbmFibGUgTVNJeCB2ZWN0b3JzLgogICogUmV0dXJucyA6CiAgKgkwIG9uIHN1Y2Nlc3NmdWwgZW5hYmxpbmcgb2YgcmVxdWlyZWQgdmVjdG9ycywKLSAqCVZNWE5FVDNfTElOVVhfTUlOX01TSVhfVkVDVCB3aGVuIG9ubHkgbWludW11bSBudW1iZXIgb2YgdmVjdG9ycyByZXF1aXJlZAorICoJVk1YTkVUM19MSU5VWF9NSU5fTVNJWF9WRUNUIHdoZW4gb25seSBtaW5pbXVtIG51bWJlciBvZiB2ZWN0b3JzIHJlcXVpcmVkCiAgKgkgY291bGQgYmUgZW5hYmxlZC4KICAqCW51bWJlciBvZiB2ZWN0b3JzIHdoaWNoIGNhbiBiZSBlbmFibGVkIG90aGVyd2lzZSAodGhpcyBudW1iZXIgaXMgc21hbGxlcgogICoJIHRoYW4gVk1YTkVUM19MSU5VWF9NSU5fTVNJWF9WRUNUKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLWNvbmZpZy5jIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLWNvbmZpZy5jCmluZGV4IGU3NGU0YjQuLjQwMWJlYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1jb25maWcuYworKysgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtY29uZmlnLmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCQkJCQkgICBWWEdFX0hXX0RFRl9ERVZJQ0VfUE9MTF9NSUxMSVMpOwogCiAJLyogVGhlIF9fdnhnZV9od19kZXZpY2VfcmVnaXN0ZXJfcG9sbCBjYW4gdWRlbGF5IGZvciBhIHNpZ25pZmljYW50Ci0JICogYW1vdW50IG9mIHRpbWUsIGJsb2NraW5nIG90aGVyIHByb2NjZXNzIGZyb20gdGhlIENQVS4gIElmIGl0IGRlbGF5cworCSAqIGFtb3VudCBvZiB0aW1lLCBibG9ja2luZyBvdGhlciBwcm9jZXNzIGZyb20gdGhlIENQVS4gIElmIGl0IGRlbGF5cwogCSAqIGZvciB+NXNlY3MsIGEgTk1JIGVycm9yIGNhbiBvY2N1ci4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIGdpdmUgdXAKIAkgKiB0aGUgcHJvY2Vzc29yIHZpYSBtc2xlZXAsIGJ1dCB0aGlzIGlzIG5vdCBhbGxvd2VkIGlzIHVuZGVyIGxvY2suCiAJICogU28sIG9ubHkgYWxsb3cgaXQgdG8gc2xlZXAgZm9yIH40c2VjcyBpZiBvcGVuLiAgT3RoZXJ3aXNlLCBkZWxheSBmb3IKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1tYWluLmMgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtbWFpbi5jCmluZGV4IDM5NTQyM2EuLmFmZjY4YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLW1haW4uYwpAQCAtMjI4Miw3ICsyMjgyLDcgQEAKIAkJVlhHRV9IV19WUEFUSF9NU0lYX0FDVElWRSkgKyBWWEdFX0FMQVJNX01TSVhfSUQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgdmRldi0+bm9fb2ZfdnBhdGg7IGkrKykgewotCQkvKiBSZWR1Y2UgdGhlIGNoYW5jZSBvZiBsb29zaW5nIGFsYXJtIGludGVycnVwdHMgYnkgbWFza2luZworCQkvKiBSZWR1Y2UgdGhlIGNoYW5jZSBvZiBsb3NpbmcgYWxhcm0gaW50ZXJydXB0cyBieSBtYXNraW5nCiAJCSAqIHRoZSB2ZWN0b3IuIEEgcGVuZGluZyBiaXQgd2lsbCBiZSBzZXQgaWYgYW4gYWxhcm0gaXMKIAkJICogZ2VuZXJhdGVkIGFuZCBvbiB1bm1hc2sgdGhlIGludGVycnVwdCB3aWxsIGJlIGZpcmVkLgogCQkgKi8KQEAgLTI3ODgsNyArMjc4OCw3IEBACiAJfQogCiAJLyogRW5hYmxlIHZwYXRoIHRvIHNuaWZmIGFsbCB1bmljYXN0L211bHRpY2FzdCB0cmFmZmljIHRoYXQgbm90Ci0JICogYWRkcmVzc2VkIHRvIHRoZW0uIFdlIGFsbG93IHByb21pc2NvdXMgbW9kZSBmb3IgUEYgb25seQorCSAqIGFkZHJlc3NlZCB0byB0aGVtLiBXZSBhbGxvdyBwcm9taXNjdW91cyBtb2RlIGZvciBQRiBvbmx5CiAJICovCiAKIAl2YWw2NCA9IDA7CkBAIC0yODkwLDcgKzI4OTAsNyBAQAogCXJldHVybiByZXQ7CiB9CiAKLS8qIExvb3AgdGhyb3VnaHQgdGhlIG1hYyBhZGRyZXNzIGxpc3QgYW5kIGRlbGV0ZSBhbGwgdGhlIGVudHJpZXMgKi8KKy8qIExvb3AgdGhyb3VnaCB0aGUgbWFjIGFkZHJlc3MgbGlzdCBhbmQgZGVsZXRlIGFsbCB0aGUgZW50cmllcyAqLwogc3RhdGljIHZvaWQgdnhnZV9mcmVlX21hY19hZGRfbGlzdChzdHJ1Y3QgdnhnZV92cGF0aCAqdnBhdGgpCiB7CiAKQEAgLTI5NTcsNyArMjk1Nyw3IEBACiAJCQkJCXZhbDY0KTsKIAkJfQogCi0JCS8qIFJlbW92ZSB0aGUgZnVuY3Rpb24gMCBmcm9tIHByb21pc2NvdXMgbW9kZSAqLworCQkvKiBSZW1vdmUgdGhlIGZ1bmN0aW9uIDAgZnJvbSBwcm9taXNjdW91cyBtb2RlICovCiAJCXZ4Z2VfaHdfbWdtdF9yZWdfd3JpdGUodmRldi0+ZGV2aCwKIAkJCXZ4Z2VfaHdfbWdtdF9yZWdfdHlwZV9tcnBjaW0sCiAJCQkwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuYyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmMKaW5kZXggODY3NGYzMy4uMjYzOGI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuYworKysgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5jCkBAIC0xMTExLDcgKzExMTEsNyBAQAogICogdnhnZV9od19jaGFubmVsX2R0cl9jb3VudAogICogQGNoYW5uZWw6IENoYW5uZWwgaGFuZGxlLiBPYnRhaW5lZCB2aWEgdnhnZV9od19jaGFubmVsX29wZW4oKS4KICAqCi0gKiBSZXRyZWl2ZSBudW1iZXIgb2YgRFRScyBhdmFpbGFibGUuIFRoaXMgZnVuY3Rpb24gY2FuIG5vdCBiZSBjYWxsZWQKKyAqIFJldHJpZXZlIG51bWJlciBvZiBEVFJzIGF2YWlsYWJsZS4gVGhpcyBmdW5jdGlvbiBjYW4gbm90IGJlIGNhbGxlZAogICogZnJvbSBkYXRhIHBhdGguIHJpbmdfaW5pdGlhbF9yZXBsZW5pc2hpKCkgaXMgdGhlIG9ubHkgdXNlci4KICAqLwogaW50IHZ4Z2VfaHdfY2hhbm5lbF9kdHJfY291bnQoc3RydWN0IF9fdnhnZV9od19jaGFubmVsICpjaGFubmVsKQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAKIAogCXZwYXRoID0gdnAtPnZwYXRoOwogCi0JLyogRW5hYmxlIHByb21pc2NvdXMgbW9kZSBmb3IgZnVuY3Rpb24gMCBvbmx5ICovCisJLyogRW5hYmxlIHByb21pc2N1b3VzIG1vZGUgZm9yIGZ1bmN0aW9uIDAgb25seSAqLwogCWlmICghKHZwYXRoLT5obGRldi0+YWNjZXNzX3JpZ2h0cyAmCiAJCVZYR0VfSFdfREVWSUNFX0FDQ0VTU19SSUdIVF9NUlBDSU0pKQogCQlyZXR1cm4gVlhHRV9IV19PSzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmggYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5oCmluZGV4IDlkOWRmZGEuLjZjMmZjMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmgKKysrIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuaApAQCAtNjgxLDcgKzY4MSw3IEBACiAgKiBAcnhfcmVkX2Rpc2NhcmQ6IENvdW50IG9mIHJlY2VpdmVkIGZyYW1lcyB0aGF0IGFyZSBkaXNjYXJkZWQgYmVjYXVzZSBvZiBSRUQKICAqICAgICAgICAgICAgKFJhbmRvbSBFYXJseSBEaXNjYXJkKS4KICAqIEByeF94Z21paV9jdHJsX2Vycl9jbnQ6IE1haW50YWlucyBhIGNvdW50IG9mIHVuZXhwZWN0ZWQgb3IgbWlzcGxhY2VkIGNvbnRyb2wKLSAqICAgICAgICAgICAgY2hhcmFjdGVycyBvY2N1cmluZyBiZXR3ZWVuIHRpbWVzIG9mIG5vcm1hbCBkYXRhIHRyYW5zbWlzc2lvbgorICogICAgICAgICAgICBjaGFyYWN0ZXJzIG9jY3VycmluZyBiZXR3ZWVuIHRpbWVzIG9mIG5vcm1hbCBkYXRhIHRyYW5zbWlzc2lvbgogICogICAgICAgICAgICAoaS5lLiBub3QgaW5jbHVkZWQgaW4gUlhfWEdNSUlfREFUQV9FUlJfQ05UKS4gVGhpcyBjb3VudGVyIGlzCiAgKiAgICAgICAgICAgIGluY3JlbWVudGVkIHdoZW4gZWl0aGVyIC0KICAqICAgICAgICAgICAgMSkgVGhlIFJlY29uY2lsaWF0aW9uIFN1YmxheWVyIChSUykgaXMgZXhwZWN0aW5nIG9uZSBjb250cm9sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vY29zYS5jIGIvZHJpdmVycy9uZXQvd2FuL2Nvc2EuYwppbmRleCAxMGJhZmQ1Li42ZmI2ZjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vY29zYS5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9jb3NhLmMKQEAgLTMyOSw3ICszMjksNyBAQAogc3RhdGljIGludCByZWFkbWVtKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGNoYXIgX191c2VyICpkYXRhLCBpbnQgYWRkciwgaW50IGxlbik7CiBzdGF0aWMgaW50IGNvc2FfcmVzZXRfYW5kX3JlYWRfaWQoc3RydWN0IGNvc2FfZGF0YSAqY29zYSwgY2hhciAqaWQpOwogCi0vKiBBdXhpbGxpYXJ5IGZ1bmN0aW9ucyAqLworLyogQXV4aWxpYXJ5IGZ1bmN0aW9ucyAqLwogc3RhdGljIGludCBnZXRfd2FpdF9kYXRhKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EpOwogc3RhdGljIGludCBwdXRfd2FpdF9kYXRhKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGludCBkYXRhKTsKIHN0YXRpYyBpbnQgcHV0aGV4bnVtYmVyKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGludCBudW1iZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2RzY2M0LmMgYi9kcml2ZXJzL25ldC93YW4vZHNjYzQuYwppbmRleCA0NTc4ZTViLi5hY2I5ZWE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vZHNjYzQuYworKysgYi9kcml2ZXJzL25ldC93YW4vZHNjYzQuYwpAQCAtNTYsNyArNTYsNyBAQAogICogSVYuIE5vdGVzCiAgKiBUaGUgY3VycmVudCBlcnJvciAoWERVLCBSRk8pIHJlY292ZXJ5IGNvZGUgaXMgdW50ZXN0ZWQuCiAgKiBTbyBmYXIsIFJETyB0YWtlcyBoaXMgUlggY2hhbm5lbCBkb3duIGFuZCB0aGUgcmlnaHQgc2VxdWVuY2UgdG8gZW5hYmxlIGl0Ci0gKiBhZ2FpbiBpcyBzdGlsbCBhIG1pc3RlcnkuIElmIFJETyBoYXBwZW5zLCBwbGFuIGEgcmVib290LiBNb3JlIGRldGFpbHMKKyAqIGFnYWluIGlzIHN0aWxsIGEgbXlzdGVyeS4gSWYgUkRPIGhhcHBlbnMsIHBsYW4gYSByZWJvb3QuIE1vcmUgZGV0YWlscwogICogaW4gdGhlIGNvZGUgKE5COiBhcyB0aGlzIGhhcHBlbnMsIFRYIHN0aWxsIHdvcmtzKS4KICAqIERvbid0IG1lc3MgdGhlIGNhYmxlcyBkdXJpbmcgb3BlcmF0aW9uLCBlc3BlY2lhbGx5IG9uIERURSBwb3J0cy4gSSBkb24ndAogICogc3VnZ2VzdCBpdCBmb3IgRENFIGVpdGhlciBidXQgYXQgbGVhc3Qgb25lIGNhbiBnZXQgc29tZSBtZXNzYWdlcyBpbnN0ZWFkCkBAIC0xMDY1LDcgKzEwNjUsNyBAQAogCiAJLyoKIAkgKiBEdWUgdG8gdmFyaW91cyBidWdzLCB0aGVyZSBpcyBubyB3YXkgdG8gcmVsaWFibHkgcmVzZXQgYQotCSAqIHNwZWNpZmljIHBvcnQgKG1hbnVmYWN0dXJlcidzIGRlcGVuZGFudCBzcGVjaWFsIFBDSSAjUlNUIHdpcmluZworCSAqIHNwZWNpZmljIHBvcnQgKG1hbnVmYWN0dXJlcidzIGRlcGVuZGVudCBzcGVjaWFsIFBDSSAjUlNUIHdpcmluZwogCSAqIGFwYXJ0OiBpdCBhZmZlY3RzIGFsbCBwb3J0cykuIFRodXMgdGhlIGRldmljZSBnb2VzIGluIHRoZSBiZXN0CiAJICogc2lsZW50IG1vZGUgcG9zc2libGUgYXQgZHNjYzRfY2xvc2UoKSB0aW1lIGFuZCBzaW1wbHkgY2xhaW1zIHRvCiAJICogYmUgdXAgaWYgaXQncyBvcGVuZWQgYWdhaW4uIEl0IHN0aWxsIGlzbid0IHBvc3NpYmxlIHRvIGNoYW5nZQpAQCAtMTIzMCw5ICsxMjMwLDkgQEAKICAqICAgc2NhbGluZy4gT2YgY291cnNlIHNvbWUgcm91bmRpbmcgbWF5IHRha2UgcGxhY2UuCiAgKiAtIG5vIGhpZ2ggc3BlZWQgbW9kZSAoNDBNYi9zKS4gTWF5IGJlIHRyaXZpYWwgdG8gZG8gYnV0IEkgZG9uJ3QgaGF2ZSBhbgogICogICBhcHByb3ByaWF0ZSBleHRlcm5hbCBjbG9ja2luZyBkZXZpY2UgZm9yIHRlc3RpbmcuCi0gKiAtIG5vIHRpbWUtc2xvdC9jbG9jayBtb2RlIDU6IHNoYW1lbGVzcyBsYXp5bmVzcy4KKyAqIC0gbm8gdGltZS1zbG90L2Nsb2NrIG1vZGUgNTogc2hhbWVsZXNzIGxhemluZXNzLgogICoKLSAqIFRoZSBjbG9jayBzaWduYWxzIHdpcmluZyBjYW4gYmUgKGlzID8pIG1hbnVmYWN0dXJlciBkZXBlbmRhbnQuIEdvb2QgbHVjay4KKyAqIFRoZSBjbG9jayBzaWduYWxzIHdpcmluZyBjYW4gYmUgKGlzID8pIG1hbnVmYWN0dXJlciBkZXBlbmRlbnQuIEdvb2QgbHVjay4KICAqCiAgKiBCSUcgRkFUIFdBUk5JTkc6IGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvdmlkZWQgZW5vdWdoIGNsb2NraW5nIHNpZ25hbCwgaXQKICAqIHdvbid0IHBhc3MgdGhlIGluaXQgc2VxdWVuY2UuIEZvciBleGFtcGxlLCBzdHJhaWdodCBiYWNrLXRvLWJhY2sgRFRFIHdpdGhvdXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9ob3N0ZXNzX3N2MTEuYyBiL2RyaXZlcnMvbmV0L3dhbi9ob3N0ZXNzX3N2MTEuYwppbmRleCA0OGVkYzVmLi5lODE3NTgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vaG9zdGVzc19zdjExLmMKKysrIGIvZHJpdmVycy9uZXQvd2FuL2hvc3Rlc3Nfc3YxMS5jCkBAIC0xNSw3ICsxNSw3IEBACiAgKglUaGUgaGFyZHdhcmUgZG9lcyB0aGUgYnVzIGhhbmRsaW5nIHRvIGF2b2lkIHRoZSBuZWVkIGZvciBkZWxheXMgYmV0d2VlbgogICoJdG91Y2hpbmcgY29udHJvbCByZWdpc3RlcnMuCiAgKgotICoJUG9ydCBCIGlzbnQgd2lyZWQgKHdoeSAtIGJlYXRzIG1lKQorICoJUG9ydCBCIGlzbid0IHdpcmVkICh3aHkgLSBiZWF0cyBtZSkKICAqCiAgKglHZW5lcmljIEhETEMgcG9ydCBDb3B5cmlnaHQgKEMpIDIwMDggS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2l4cDR4eF9oc3MuYyBiL2RyaXZlcnMvbmV0L3dhbi9peHA0eHhfaHNzLmMKaW5kZXggNmM1NzFlMS4uZjFlMTY0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2l4cDR4eF9oc3MuYworKysgYi9kcml2ZXJzL25ldC93YW4vaXhwNHh4X2hzcy5jCkBAIC0xNzgsNyArMTc4LDcgQEAKICAqCiAgKiBUaGUgcmVzdWx0aW5nIGF2ZXJhZ2UgY2xvY2sgZnJlcXVlbmN5IChhc3N1bWluZyAzMy4zMzMgTUh6IG9zY2lsbGF0b3IpIGlzOgogICogZnJlcSA9IDY2LjY2NiBNSHogLyAoQSArIChCICsgMSkgLyAoQyArIDEpKQotICogbWludW11bSBmcmVxID0gNjYuNjY2IE1IeiAvIChBICsgMSkKKyAqIG1pbmltdW0gZnJlcSA9IDY2LjY2NiBNSHogLyAoQSArIDEpCiAgKiBtYXhpbXVtIGZyZXEgPSA2Ni42NjYgTUh6IC8gQQogICoKICAqIEV4YW1wbGU6IEEgPSAyLCBCID0gMiwgQyA9IDcsIENMT0NLX0NSIHJlZ2lzdGVyID0gMiA8PCAyMiB8IDIgPDwgMTIgfCA3CkBAIC0yMzAsNyArMjMwLDcgQEAKICNkZWZpbmUgUEtUX1BJUEVfTU9ERV9XUklURQkJMHg1NwogCiAvKiBIRExDIHBhY2tldCBzdGF0dXMgdmFsdWVzIC0gZGVzYy0+c3RhdHVzICovCi0jZGVmaW5lIEVSUl9TSFVURE9XTgkJMSAvKiBzdG9wIG9yIHNodXRkb3duIG9jY3VycmFuY2UgKi8KKyNkZWZpbmUgRVJSX1NIVVRET1dOCQkxIC8qIHN0b3Agb3Igc2h1dGRvd24gb2NjdXJyZW5jZSAqLwogI2RlZmluZSBFUlJfSERMQ19BTElHTgkJMiAvKiBIRExDIGFsaWdubWVudCBlcnJvciAqLwogI2RlZmluZSBFUlJfSERMQ19GQ1MJCTMgLyogSERMQyBGcmFtZSBDaGVjayBTdW0gZXJyb3IgKi8KICNkZWZpbmUgRVJSX1JYRlJFRV9RX0VNUFRZCTQgLyogUlgtZnJlZSBxdWV1ZSBiZWNhbWUgZW1wdHkgd2hpbGUgcmVjZWl2aW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vbG1jL2xtY19tYWluLmMgYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY19tYWluLmMKaW5kZXggNzBmZWI4NC4uYjdmMjM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9sbWMvbG1jX21haW4uYwpAQCAtMjQsNyArMjQsNyBAQAogICAqCiAgICogTGludXggZHJpdmVyIG5vdGVzOgogICAqIExpbnV4IHVzZXMgdGhlIGRldmljZSBzdHJ1Y3QgbG1jX3ByaXZhdGUgdG8gcGFzcyBwcml2YXRlIGluZm9ybWF0aW9uCi0gICogYXJyb3VuZC4KKyAgKiBhcm91bmQuCiAgICoKICAgKiBUaGUgaW5pdGlhbGl6YXRpb24gcG9ydGlvbiBvZiB0aGlzIGRyaXZlciAodGhlIGxtY19yZXNldCgpIGFuZCB0aGUKICAgKiBsbWNfZGVjX3Jlc2V0KCkgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBsZWQgY29udHJvbHMgYW5kIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfdmFyLmggYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY192YXIuaAppbmRleCA2NWQwMTk3Li4wMWFkNDUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vbG1jL2xtY192YXIuaAorKysgYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY192YXIuaApAQCAtMTgwLDcgKzE4MCw3IEBACiAKIAogLyoKLSAqIENhcmVmdWxsLCBsb29rIGF0IHRoZSBkYXRhIHNoZWV0LCB0aGVyZSdzIG1vcmUgdG8gdGhpcworICogQ2FyZWZ1bCwgbG9vayBhdCB0aGUgZGF0YSBzaGVldCwgdGhlcmUncyBtb3JlIHRvIHRoaXMKICAqIHN0cnVjdHVyZSB0aGFuIG1lZXRzIHRoZSBleWUuICBJdCBzaG91bGQgcHJvYmFibHkgYmU6CiAgKgogICogc3RydWN0IHR1bGlwX2Rlc2NfdCB7CkBAIC0zODAsNyArMzgwLDcgQEAKIC8qIENTUjYgc2V0dGluZ3MgKi8KICNkZWZpbmUgT1BFUkFUSU9OX01PREUgIDB4MDAwMDAyMDAgLyogRnVsbCBEdXBsZXggICAgICAqLwogI2RlZmluZSBQUk9NSVNDX01PREUgICAgMHgwMDAwMDA0MCAvKiBQcm9taXNjdW91cyBNb2RlICovCi0jZGVmaW5lIFJFQ0lFVkVfQUxMICAgICAweDQwMDAwMDAwIC8qIFJlY2lldmUgQWxsICAgICAgKi8KKyNkZWZpbmUgUkVDSUVWRV9BTEwgICAgIDB4NDAwMDAwMDAgLyogUmVjZWl2ZSBBbGwgICAgICAqLwogI2RlZmluZSBQQVNTX0JBRF9GUkFNRVMgMHgwMDAwMDAwOCAvKiBQYXNzIEJhZCBGcmFtZXMgICovCiAKIC8qIERlYyBjb250cm9sIHJlZ2lzdGVycyAgQ1NSNiBhcyB3ZWxsICovCkBAIC0zOTgsNyArMzk4LDcgQEAKICNkZWZpbmUgVFVMSVBfQ01EX1JFQ0VJVkVBTEwgICAgMHg0MDAwMDAwMEwgLyogKFJXKSAgUmVjZWl2ZWwgYWxsIGZyYW1lcz8gKi8KICNkZWZpbmUgVFVMSVBfQ01EX01VU1RCRU9ORSAgICAgMHgwMjAwMDAwMEwgLyogKFJXKSAgTXVzdCBCZSBPbmUgKDIxMTQwKSAqLwogI2RlZmluZSBUVUxJUF9DTURfVFhUSFJTSExEQ1RMICAweDAwNDAwMDAwTCAvKiAoUlcpICBUcmFuc21pdCBUaHJlc2hvbGQgTW9kZSAoMjExNDApICovCi0jZGVmaW5lIFRVTElQX0NNRF9TVE9SRUZXRCAgICAgIDB4MDAyMDAwMDBMIC8qIChSVykgIFN0b3JlIGFuZCBGb3dhcmQgKDIxMTQwKSAqLworI2RlZmluZSBUVUxJUF9DTURfU1RPUkVGV0QgICAgICAweDAwMjAwMDAwTCAvKiAoUlcpICBTdG9yZSBhbmQgRm9yd2FyZCAoMjExNDApICovCiAjZGVmaW5lIFRVTElQX0NNRF9OT0hFQVJUQkVBVCAgIDB4MDAwODAwMDBMIC8qIChSVykgIE5vIEhlYXJ0YmVhdCAoMjExNDApICovCiAjZGVmaW5lIFRVTElQX0NNRF9QT1JUU0VMRUNUICAgIDB4MDAwNDAwMDBMIC8qIChSVykgIFBvc3QgU2VsZWN0ICgxMDBNYikgKDIxMTQwKSAqLwogI2RlZmluZSBUVUxJUF9DTURfRlVMTERVUExFWCAgICAweDAwMDAwMjAwTCAvKiAoUlcpICBGdWxsIER1cGxleCBNb2RlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vejg1MjMwLmMgYi9kcml2ZXJzL25ldC93YW4vejg1MjMwLmMKaW5kZXggOTM5NTY4Ni4uMDgwNjIzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL3o4NTIzMC5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi96ODUyMzAuYwpAQCAtNTQyLDcgKzU0Miw3IEBACiAJCXo4NTMwX3R4KGNoYW4pOwogCQlyZXR1cm47CiAJfQotCS8qIFRoaXMgc2hvdWxkbnQgb2NjdXIgaW4gRE1BIG1vZGUgKi8KKwkvKiBUaGlzIHNob3VsZG4ndCBvY2N1ciBpbiBETUEgbW9kZSAqLwogCXByaW50ayhLRVJOX0VSUiAiRE1BIHR4IC0gYm9ndXMgZXZlbnQhXG4iKTsKIAl6ODUzMF90eChjaGFuKTsKIH0KQEAgLTEyMTksNyArMTIxOSw3IEBACiAgKglAaW86IHRoZSBwb3J0IHZhbHVlIGluIHF1ZXN0aW9uCiAgKgogICoJRGVzY3JpYmUgYSBaODUzMCBpbiBhIHN0YW5kYXJkIGZvcm1hdC4gV2UgbXVzdCBwYXNzIHRoZSBJL08gYXMKLSAqCXRoZSBwb3J0IG9mZnNldCBpc250IHByZWRpY3RhYmxlLiBUaGUgbWFpbiByZWFzb24gZm9yIHRoaXMgZnVuY3Rpb24KKyAqCXRoZSBwb3J0IG9mZnNldCBpc24ndCBwcmVkaWN0YWJsZS4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1bmN0aW9uCiAgKglpcyB0byB0cnkgYW5kIGdldCBhIGNvbW1vbiBmb3JtYXQgb2YgcmVwb3J0LgogICovCiAKQEAgLTE1ODgsNyArMTU4OCw3IEBACiAJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJCQogCQkvKgotCQkgKglDb21wbGV0ZSB0aGlzIERNQS4gTmVjY2Vzc2FyeSB0byBmaW5kIHRoZSBsZW5ndGgKKwkJICoJQ29tcGxldGUgdGhpcyBETUEuIE5lY2Vzc2FyeSB0byBmaW5kIHRoZSBsZW5ndGgKIAkJICovCQkKIAkJIAogCQlmbGFncz1jbGFpbV9kbWFfbG9jaygpOwpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAKIAkJICoJZmlmbyBsZW5ndGggZm9yIHRoaXMuIFRodXMgd2Ugd2FudCB0byBmbGlwIHRvIHRoZSBuZXcKIAkJICoJYnVmZmVyIGFuZCB0aGVuIG1lc3MgYXJvdW5kIGNvcHlpbmcgYW5kIGFsbG9jYXRpbmcKIAkJICoJdGhpbmdzLiBGb3IgdGhlIGN1cnJlbnQgY2FzZSBpdCBkb2Vzbid0IG1hdHRlciBidXQKLQkJICoJaWYgeW91IGJ1aWxkIGEgc3lzdGVtIHdoZXJlIHRoZSBzeW5jIGlycSBpc250IGJsb2NrZWQKKwkJICoJaWYgeW91IGJ1aWxkIGEgc3lzdGVtIHdoZXJlIHRoZSBzeW5jIGlycSBpc24ndCBibG9ja2VkCiAJCSAqCWJ5IHRoZSBrZXJuZWwgSVJRIGRpc2FibGUgdGhlbiB5b3UgbmVlZCBvbmx5IGJsb2NrIHRoZQogCQkgKglzeW5jIElSUSBmb3IgdGhlIFJUX0xPQ0sgYXJlYS4KIAkJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9jb250cm9sLmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vY29udHJvbC5jCmluZGV4IDEyYjg0ZWQuLjcyN2Q3MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9jb250cm9sLmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2NvbnRyb2wuYwpAQCAtMzc4LDcgKzM3OCw3IEBACiAgKiB0aGUgZGV2aWNlJ3Mgc3RhdGUgYXMgc29tZXRpbWVzIHdlIG5lZWQgdG8gZG8gYSBsaW5rLXJlbmV3ICh0aGUgQlMKICAqIHdhbnRzIHVzIHRvIHJlbmV3IGEgREhDUCBsZWFzZSwgZm9yIGV4YW1wbGUpLgogICoKLSAqIEluIGZhY3QsIGRvYyBzYXlzIHRoYXQgZXZlcnl0aW1lIHdlIGdldCBhIGxpbmstdXAsIHdlIHNob3VsZCBkbyBhCisgKiBJbiBmYWN0LCBkb2Mgc2F5cyB0aGF0IGV2ZXJ5IHRpbWUgd2UgZ2V0IGEgbGluay11cCwgd2Ugc2hvdWxkIGRvIGEKICAqIERIQ1AgbmVnb3RpYXRpb24uLi4KICAqLwogc3RhdGljCkBAIC02NzUsNyArNjc1LDcgQEAKICAqICAtIHRoZSBhY2sgbWVzc2FnZSB3YXNuJ3QgZm9ybWF0dGVkIGNvcnJlY3RseQogICoKICAqIFRoZSByZXR1cm5lZCBza2IgaGFzIGJlZW4gYWxsb2NhdGVkIHdpdGggd2ltYXhfbXNnX3RvX3VzZXJfYWxsb2MoKSwKLSAqIGl0IGNvbnRhaW5zIHRoZSByZXBvbnNlIGluIGEgbmV0bGluayBhdHRyaWJ1dGUgYW5kIGlzIHJlYWR5IHRvIGJlCisgKiBpdCBjb250YWlucyB0aGUgcmVzcG9uc2UgaW4gYSBuZXRsaW5rIGF0dHJpYnV0ZSBhbmQgaXMgcmVhZHkgdG8gYmUKICAqIHBhc3NlZCB1cCB0byB1c2VyIHNwYWNlIHdpdGggd2ltYXhfbXNnX3RvX3VzZXJfc2VuZCgpLiBUbyBhY2Nlc3MKICAqIHRoZSBwYXlsb2FkIGFuZCBpdHMgbGVuZ3RoLCB1c2Ugd2ltYXhfbXNnX3tkYXRhLGxlbn0oKSBvbiB0aGUgc2tiLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9kcml2ZXIuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9kcml2ZXIuYwppbmRleCA2NWJjMzM0Li40N2NhZTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZHJpdmVyLmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2RyaXZlci5jCkBAIC02NTQsNyArNjU0LDcgQEAKIAlpZiAocmVzdWx0ID09IC1FVUNMRUFOKSB7CiAJCS8qCiAJCSAqIFdlIGNvbWUgaGVyZSBiZWNhdXNlIHRoZSByZXNldCBkdXJpbmcgb3BlcmF0aW9uYWwgbW9kZQotCQkgKiB3YXNuJ3Qgc3VjY2Vzc3VsbHkgZG9uZSBhbmQgbmVlZCB0byBwcm9jZWVkIHRvIGEgYnVzCisJCSAqIHdhc24ndCBzdWNjZXNzZnVsbHkgZG9uZSBhbmQgbmVlZCB0byBwcm9jZWVkIHRvIGEgYnVzCiAJCSAqIHJlc2V0LiBGb3IgdGhlIGRldl9yZXNldF9oYW5kbGUoKSB0byBiZSBhYmxlIHRvIGhhbmRsZQogCQkgKiB0aGUgcmVzZXQgZXZlbnQgbGF0ZXIgcHJvcGVybHksIHdlIHJlc3RvcmUgYm9vdF9tb2RlIGJhY2sKIAkJICogdG8gdGhlIHN0YXRlIGJlZm9yZSBwcmV2aW91cyByZXNldC4gaWU6IGp1c3QgbGlrZSB3ZSBhcmUKQEAgLTc1NSw3ICs3NTUsNyBAQAogICogQWxsb2MgdGhlIGNvbW1hbmQgYW5kIGFjayBidWZmZXJzIGZvciBib290IG1vZGUKICAqCiAgKiBHZXQgdGhlIGJ1ZmZlcnMgbmVlZGVkIHRvIGRlYWwgd2l0aCBib290IG1vZGUgbWVzc2FnZXMuICBUaGVzZQotICogYnVmZmVycyBuZWVkIHRvIGJlIGFsbG9jYXRlZCBiZWZvcmUgdGhlIHNkaW8gcmVjaWV2ZSBpcnEgaXMgc2V0dXAuCisgKiBidWZmZXJzIG5lZWQgdG8gYmUgYWxsb2NhdGVkIGJlZm9yZSB0aGUgc2RpbyByZWNlaXZlIGlycSBpcyBzZXR1cC4KICAqLwogc3RhdGljCiBpbnQgaTI0MDBtX2JtX2J1Zl9hbGxvYyhzdHJ1Y3QgaTI0MDBtICppMjQwMG0pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZncuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9mdy5jCmluZGV4IDhiNTVhNWIuLjg1ZGFkZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9mdy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9mdy5jCkBAIC01NCw3ICs1NCw3IEBACiAgKiBlbmRwb2ludCBhbmQgcmVhZCBmcm9tIGl0IGluIHRoZSBub3RpZmljYXRpb24gZW5kcG9pbnQuIEluIFNESU8gd2UKICAqIHRhbGsgdG8gaXQgdmlhIHRoZSB3cml0ZSBhZGRyZXNzIGFuZCByZWFkIGZyb20gdGhlIHJlYWQgYWRkcmVzcy4KICAqCi0gKiBVcG9uIGVudHJhbmNlIHRvIGJvb3QgbW9kZSwgdGhlIGRldmljZSBzZW5kcyAocHJlY2VlZGVkIHdpdGggYSBmZXcKKyAqIFVwb24gZW50cmFuY2UgdG8gYm9vdCBtb2RlLCB0aGUgZGV2aWNlIHNlbmRzIChwcmVjZWRlZCB3aXRoIGEgZmV3CiAgKiB6ZXJvIGxlbmd0aCBwYWNrZXRzIChaTFBzKSBvbiB0aGUgbm90aWZpY2F0aW9uIGVuZHBvaW50IGluIFVTQikgYQogICogcmVib290IGJhcmtlciAoNCBsZTMyIHdvcmRzIHdpdGggdGhlIHNhbWUgdmFsdWUpLiBXZSBhY2sgaXQgYnkKICAqIHNlbmRpbmcgdGhlIHNhbWUgYmFya2VyIHRvIHRoZSBkZXZpY2UuIFRoZSBkZXZpY2UgYWNrcyB3aXRoIGEKQEAgLTE1ODksNyArMTU4OSw3IEBACiAJCWkyNDAwbS0+ZndfbmFtZSA9IGZ3X25hbWU7CiAJCXJldCA9IGkyNDAwbV9md19ib290c3RyYXAoaTI0MDBtLCBmdywgZmxhZ3MpOwogCQlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKLQkJaWYgKHJldCA+PSAwKQkvKiBmaXJtd2FyZSBsb2FkZWQgc3VjY2VzZnVsbHkgKi8KKwkJaWYgKHJldCA+PSAwKQkvKiBmaXJtd2FyZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5ICovCiAJCQlicmVhazsKIAkJaTI0MDBtLT5md19uYW1lID0gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLXVzYi5oIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS11c2IuaAppbmRleCBlYjgwMjQzLi42NjUwZmRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLXVzYi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9pMjQwMG0tdXNiLmgKQEAgLTEwNSwxNCArMTA1LDE0IEBACiAgKgogICogQGVkYzogcG9pbnRlciB0byBlcnJvciBkZW5zaXR5IGNvdW50ZXIuCiAgKiBAbWF4X2VycjogbWF4aW11bSBudW1iZXIgb2YgZXJyb3JzIHdlIGNhbiBhY2NlcHQgb3ZlciB0aGUgdGltZWZyYW1lCi0gKiBAdGltZWZyYW1lOiBsZW5naHQgb2YgdGhlIHRpbWVmcmFtZSAoaW4gamlmZmllcykuCisgKiBAdGltZWZyYW1lOiBsZW5ndGggb2YgdGhlIHRpbWVmcmFtZSAoaW4gamlmZmllcykuCiAgKgogICogUmV0dXJuczogITAgMSBpZiBtYXhpbXVtIGFjY2VwdGFibGUgZXJyb3JzIHBlciB0aW1lZnJhbWUgaGFzIGJlZW4KICAqICAgICBleGNlZWRlZC4gMCBvdGhlcndpc2UuCiAgKgogICogVGhpcyBpcyB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgb2YgYWNjZXB0YWJsZSBlcnJvcnMgcGVyIHRpbWUKICAqIHBlcmlvZCBoYXMgYmVlbiBleGNlZWRlZC4gSXQgaXMgbm90IGFjY3VyYXRlIGFzIHRoZXJlIGFyZSBjYXNlcyBpbiB3aGljaAotICogdGhpcyBzY2hlbWUgd2lsbCBub3Qgd29yaywgZm9yIGV4YW1wbGUgaWYgdGhlcmUgYXJlIHBlcmlvZGljIG9jY3VyZW5jZXMKKyAqIHRoaXMgc2NoZW1lIHdpbGwgbm90IHdvcmssIGZvciBleGFtcGxlIGlmIHRoZXJlIGFyZSBwZXJpb2RpYyBvY2N1cnJlbmNlcwogICogb2YgZXJyb3JzIHRoYXQgc3RyYWRkbGUgdXBkYXRlcyB0byB0aGUgc3RhcnQgdGltZS4gVGhpcyBzY2hlbWUgaXMKICAqIHN1ZmZpY2llbnQgZm9yIG91ciB1c2FnZS4KICAqCkBAIC0yMDQsNyArMjA0LDcgQEAKICAqICAgICB1c2JfYXV0b3BtX2dldC9wdXRfaW50ZXJmYWNlKCkgYmFycmllcnMgd2hlbiBleGVjdXRpbmcKICAqICAgICBjb21tYW5kcy4gU2VlIGRvYyBpbiBpMjQwMG11X3N1c3BlbmQoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAqCi0gKiBAcnhfc2l6ZV9hdXRvX3NocmluazogaWYgdHJ1ZSwgdGhlIHJ4X3NpemUgaXMgc2hyaW5rZWQKKyAqIEByeF9zaXplX2F1dG9fc2hyaW5rOiBpZiB0cnVlLCB0aGUgcnhfc2l6ZSBpcyBzaHJ1bmsKICAqICAgICBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZSBhdmVyYWdlIHNpemUgb2YgdGhlIHJlY2VpdmVkCiAgKiAgICAgdHJhbnNhY3Rpb25zLiBUaGlzIGFsbG93cyB0aGUgcmVjZWl2ZSBjb2RlIHRvIGFsbG9jYXRlIHNtYWxsZXIKICAqICAgICBjaHVua3Mgb2YgbWVtb3J5IGFuZCB0aHVzIHJlZHVjZSBwcmVzc3VyZSBvbiB0aGUgbWVtb3J5CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLmggYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLmgKaW5kZXggMDMwY2JmZC4uNWVhY2M2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9pMjQwMG0uaApAQCAtNTI2LDcgKzUyNiw3IEBACiAgKgogICogQGJhcmtlcjogYmFya2VyIHR5cGUgdGhhdCB0aGUgZGV2aWNlIHVzZXM7IHRoaXMgaXMgaW5pdGlhbGl6ZWQgYnkKICAqICAgICBpMjQwMG1faXNfYm9vdF9iYXJrZXIoKSB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQuIFRoZW4gaXQKLSAqICAgICB3b24ndCBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBkZXZpY2UgYW5kIGV2ZXJ5dGltZQorICogICAgIHdvbid0IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIGRldmljZSBhbmQgZXZlcnkgdGltZQogICogICAgIGEgYm9vdCBiYXJrZXIgaXMgcmVjZWl2ZWQsIGl0IGlzIGp1c3QgdmVyaWZpZWQgZm9yIGl0IGJlaW5nIHRoZQogICogICAgIHNhbWUuCiAgKgpAQCAtOTI4LDcgKzkyOCw3IEBACiAJc3RydWN0IGkyNDAwbSAqLCBjb25zdCBzdHJ1Y3QgaTI0MDBtX3Rsdl9yZl9zd2l0Y2hlc19zdGF0dXMgKik7CiAKIC8qCi0gKiBIZWxwZXJzIGZvciBmaXJtd2FyZSBiYWNrd2FyZHMgY29tcGFiaWxpdHkKKyAqIEhlbHBlcnMgZm9yIGZpcm13YXJlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgKgogICogQXMgd2UgYWltIHRvIHN1cHBvcnQgYXQgbGVhc3QgdGhlIGZpcm13YXJlIHZlcnNpb24gdGhhdCB3YXMKICAqIHJlbGVhc2VkIHdpdGggdGhlIHByZXZpb3VzIGtlcm5lbC9kcml2ZXIgcmVsZWFzZSwgc29tZSBjb2RlIHdpbGwgYmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9uZXRkZXYuYwppbmRleCA5NDc0MmUxLi4yZWRkOGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vbmV0ZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL25ldGRldi5jCkBAIC0xNjYsNyArMTY2LDcgQEAKIAlkX2Zuc3RhcnQoMywgZGV2LCAiKHdzICVwIGkyNDAwbSAlcCBza2IgJXApXG4iLCB3cywgaTI0MDBtLCBza2IpOwogCXJlc3VsdCA9IC1FSU5WQUw7CiAJaWYgKHNrYiA9PSBOVUxMKSB7Ci0JCWRldl9lcnIoZGV2LCAiV0FLRSZUWDogc2tiIGRpc3NhcGVhcmVkIVxuIik7CisJCWRldl9lcnIoZGV2LCAiV0FLRSZUWDogc2tiIGRpc2FwcGVhcmVkIVxuIik7CiAJCWdvdG8gb3V0X3B1dDsKIAl9CiAJLyogSWYgd2UgaGF2ZSwgc29tZWhvdywgbG9zdCB0aGUgY29ubmVjdGlvbiBhZnRlciB0aGlzIHdhcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL29wLXJma2lsbC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL29wLXJma2lsbC5jCmluZGV4IDllMDJiOTAuLmIwZGJhMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9vcC1yZmtpbGwuYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vb3AtcmZraWxsLmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIC0gcmVwb3J0IGNoYW5nZXMgaW4gdGhlIEhXIFJGIEtpbGwgc3dpdGNoIFt3aXRoCiAgKiAgIHdpbWF4X3Jma2lsbF97c3csaHd9X3JlcG9ydCgpLCB3aGljaCBoYXBwZW5zIHdoZW4gd2UgZGV0ZWN0IHRob3NlCiAgKiAgIGluZGljYXRpb25zIGNvbWluZyB0aHJvdWdoIGhhcmR3YXJlIHJlcG9ydHNdLiBXZSBhbHNvIGRvIGl0IG9uCi0gKiAgIGluaXRpYWxpemF0aW9uIHRvIGxldCB0aGUgc3RhY2sga25vdyB0aGUgaW50aWFsIEhXIHN0YXRlLgorICogICBpbml0aWFsaXphdGlvbiB0byBsZXQgdGhlIHN0YWNrIGtub3cgdGhlIGluaXRpYWwgSFcgc3RhdGUuCiAgKgogICogLSBpbXBsZW1lbnQgaW5kaWNhdGlvbnMgZnJvbSB0aGUgc3RhY2sgdG8gY2hhbmdlIHRoZSBTVyBSRiBLaWxsCiAgKiAgIHN3aXRjaCAoY29taW5nIGZyb20gc3lzZnMsIHRoZSB3aW1heCBzdGFjayBvciB1c2VyIHNwYWNlKS4KQEAgLTczLDcgKzczLDcgQEAKICAqIEdlbmVyaWMgTmV0bGluayB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGEgbWVzc2FnZSBpcyBzZW50IGZyb20KICAqIHVzZXJzcGFjZSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlIFJGLUtpbGwgc3dpdGNoIHN0YXR1cy4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBkZXZpY2UncyBzb2Z3YXJlIFJGLUtpbGwgc3dpdGNoIHN0YXRlIHRvCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBkZXZpY2UncyBzb2Z0d2FyZSBSRi1LaWxsIHN3aXRjaCBzdGF0ZSB0bwogICogbWF0Y2ggd2hhdCBpcyByZXF1ZXN0ZWQuCiAgKgogICogTk9URTogdGhlIGkyNDAwbSBoYXMgYSBzdHJpY3Qgc3RhdGUgbWFjaGluZTsgd2UgY2FuIG9ubHkgc2V0IHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3J4LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vcnguYwppbmRleCA4NDQxMzNiLi4yZjk0YTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vcnguYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vcnguYwpAQCAtMzQ5LDcgKzM0OSw3IEBACiAgKgogICogRm9yIHJlcG9ydHM6IFdlIGNhbid0IGNsb25lIHRoZSBvcmlnaW5hbCBza2Igd2hlcmUgdGhlIGRhdGEgaXMKICAqIGJlY2F1c2Ugd2UgbmVlZCB0byBzZW5kIHRoaXMgdXAgdmlhIG5ldGxpbms7IG5ldGxpbmsgaGFzIHRvIGFkZAotICogaGVhZGVycyBhbmQgd2UgY2FuJ3Qgb3ZlcndyaXRlIHdoYXQncyBwcmVjZWVkaW5nIHRoZSBwYXlsb2FkLi4uYXMKKyAqIGhlYWRlcnMgYW5kIHdlIGNhbid0IG92ZXJ3cml0ZSB3aGF0J3MgcHJlY2VkaW5nIHRoZSBwYXlsb2FkLi4uYXMKICAqIGl0IGlzIGFub3RoZXIgbWVzc2FnZS4gU28gd2UganVzdCBkdXAgdGhlbS4KICAqLwogc3RhdGljCkBAIC00MjUsNyArNDI1LDcgQEAKICAqCiAgKiBBcyBpbiBpMjQwMG1fcnhfY3RsKCksIHdlIGNhbid0IGNsb25lIHRoZSBvcmlnaW5hbCBza2Igd2hlcmUgdGhlCiAgKiBkYXRhIGlzIGJlY2F1c2Ugd2UgbmVlZCB0byBzZW5kIHRoaXMgdXAgdmlhIG5ldGxpbms7IG5ldGxpbmsgaGFzIHRvCi0gKiBhZGQgaGVhZGVycyBhbmQgd2UgY2FuJ3Qgb3ZlcndyaXRlIHdoYXQncyBwcmVjZWVkaW5nIHRoZQorICogYWRkIGhlYWRlcnMgYW5kIHdlIGNhbid0IG92ZXJ3cml0ZSB3aGF0J3MgcHJlY2VkaW5nIHRoZQogICogcGF5bG9hZC4uLmFzIGl0IGlzIGFub3RoZXIgbWVzc2FnZS4gU28gd2UganVzdCBkdXAgdGhlbS4KICAqLwogc3RhdGljCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdHguYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jCmluZGV4IDNmODE5ZWYuLjRiMzBlZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jCkBAIC0xNDksNyArMTQ5LDcgQEAKICAqICh3aXRoIGEgbW92ZWQgbWVzc2FnZSBoZWFkZXIgdG8gbWFrZSBzdXJlIGl0IGlzIHNpemUtYWxpZ25lZCB0bwogICogMTYpLCBUQUlMIHJvb20gdGhhdCB3YXMgdW51c2FibGUgKGFuZCB0aHVzIGlzIG1hcmtlZCB3aXRoIGEgbWVzc2FnZQogICogaGVhZGVyIHRoYXQgc2F5cyAnc2tpcCB0aGlzJykgYW5kIGF0IHRoZSBoZWFkIG9mIHRoZSBidWZmZXIsIGFuCi0gKiBpbWNvbXBsZXRlIG1lc3NhZ2Ugd2l0aCBhIGNvdXBsZSBvZiBwYXlsb2Fkcy4KKyAqIGluY29tcGxldGUgbWVzc2FnZSB3aXRoIGEgY291cGxlIG9mIHBheWxvYWRzLgogICoKICAqIE4gICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAqICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC04MTksNyArODE5LDcgQEAKICAqIHRoZSBGSUYgdGhhdCBpcyByZWFkeSBmb3IgdHJhbnNtaXNzaW9uLgogICoKICAqIEl0IHNldHMgdGhlIHN0YXRlIGluIEBpMjQwMG0gdG8gaW5kaWNhdGUgdGhlIGJ1cy1zcGVjaWZpYyBkcml2ZXIgaXMKLSAqIHRyYW5zZmVyaW5nIHRoYXQgbWVzc2FnZSAoaTI0MDBtLT50eF9tc2dfc2l6ZSkuCisgKiB0cmFuc2ZlcnJpbmcgdGhhdCBtZXNzYWdlIChpMjQwMG0tPnR4X21zZ19zaXplKS4KICAqCiAgKiBPbmNlIHRoZSB0cmFuc2ZlciBpcyBjb21wbGV0ZWQsIGNhbGwgaTI0MDBtX3R4X21zZ19zZW50KCkuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1mdy5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1mdy5jCmluZGV4IGI1OGVjNTYuLjFmZGE0NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItZncuYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLWZ3LmMKQEAgLTE2OSw3ICsxNjksNyBAQAogICoKICAqIENvbW1hbmQgY2FuIGJlIGEgcmF3IGNvbW1hbmQsIHdoaWNoIHJlcXVpcmVzIG5vIHByZXBhcmF0aW9uIChhbmQKICAqIHdoaWNoIG1pZ2h0IG5vdCBldmVuIGJlIGZvbGxvd2luZyB0aGUgY29tbWFuZCBmb3JtYXQpLiBDaGVja3MgdGhhdAotICogdGhlIHJpZ2h0IGFtb3VudCBvZiBkYXRhIHdhcyB0cmFuc2ZlcmVkLgorICogdGhlIHJpZ2h0IGFtb3VudCBvZiBkYXRhIHdhcyB0cmFuc2ZlcnJlZC4KICAqCiAgKiBUbyBzYXRpc2Z5IFVTQiByZXF1aXJlbWVudHMgKG5vIG9uc3RhY2ssIHZtYWxsb2Mgb3IgaW4gZGF0YSBzZWdtZW50CiAgKiBidWZmZXJzKSwgd2UgY29weSB0aGUgY29tbWFuZCB0byBpMjQwMG0tPmJtX2NtZF9idWYgYW5kIHNlbmQgaXQgZnJvbQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1yeC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1yeC5jCmluZGV4IGEyNjQ4M2EuLmUzMjU3NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItcnguYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXJ4LmMKQEAgLTU4LDcgKzU4LDcgQEAKICAqICAgIGEgemlsbGlvbiByZWFkczsgYnkgc2VyaWFsaXppbmcsIHdlIGFyZSB0aHJvdHRsaW5nLgogICoKICAqICAtIFJYIGRhdGEgcHJvY2Vzc2luZyBjYW4gZ2V0IGhlYXZ5IGVub3VnaCBzbyB0aGF0IGl0IGlzIG5vdAotICogICAgYXBwcm9waWF0ZSBmb3IgZG9pbmcgaXQgaW4gdGhlIFVTQiBjYWxsYmFjazsgdGh1cyB3ZSBydW4gaXQgaW4gYQorICogICAgYXBwcm9wcmlhdGUgZm9yIGRvaW5nIGl0IGluIHRoZSBVU0IgY2FsbGJhY2s7IHRodXMgd2UgcnVuIGl0IGluIGEKICAqICAgIHByb2Nlc3MgY29udGV4dC4KICAqCiAgKiBXZSBwcm92aWRlIGEgcmVhZCBidWZmZXIgb2YgYW4gYXJiaXRyYXJ5IHNpemUgKHNob3J0IG9mIGEgcGFnZSk7IGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXR4LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXR4LmMKaW5kZXggYzY1Yjk5Ny4uYWMzNTdhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi10eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItdHguYwpAQCAtMTY4LDcgKzE2OCw3IEBACiAvKgogICogR2V0IHRoZSBuZXh0IFRYIG1lc3NhZ2UgaW4gdGhlIFRYIEZJRk8gYW5kIHNlbmQgaXQgdG8gdGhlIGRldmljZQogICoKLSAqIE5vdGUgd2UgZXhpdCB0aGUgbG9vcCBpZiBpMjQwMG11X3R4KCkgZmFpbHM7IHRoYXQgZnVudGlvbiBvbmx5CisgKiBOb3RlIHdlIGV4aXQgdGhlIGxvb3AgaWYgaTI0MDBtdV90eCgpIGZhaWxzOyB0aGF0IGZ1bmN0aW9uIG9ubHkKICAqIGZhaWxzIG9uIGhhcmQgZXJyb3IgKGZhaWxpbmcgdG8gdHggYSBidWZmZXIgbm90IGJlaW5nIG9uZSBvZiB0aGVtLAogICogc2VlIGl0cyBkb2MpLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Fpcm8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Fpcm8uYwppbmRleCA1N2E3OWIwLi40ZTVjN2ExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9haXJvLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYWlyby5jCkBAIC0xODg0LDcgKzE4ODQsNyBAQAogCS8qIE1ha2Ugc3VyZSB0aGUgY2FyZCBpcyBjb25maWd1cmVkLgogCSAqIFdpcmVsZXNzIEV4dGVuc2lvbnMgbWF5IHBvc3Rwb25lIGNvbmZpZyBjaGFuZ2VzIHVudGlsIHRoZSBjYXJkCiAJICogaXMgb3BlbiAodG8gcGlwZWxpbmUgY2hhbmdlcyBhbmQgc3BlZWQtdXAgY2FyZCBzZXR1cCkuIElmCi0JICogdGhvc2UgY2hhbmdlcyBhcmUgbm90IHlldCBjb21taXRlZCwgZG8gaXQgbm93IC0gSmVhbiBJSSAqLworCSAqIHRob3NlIGNoYW5nZXMgYXJlIG5vdCB5ZXQgY29tbWl0dGVkLCBkbyBpdCBub3cgLSBKZWFuIElJICovCiAJaWYgKHRlc3RfYml0KEZMQUdfQ09NTUlULCAmYWktPmZsYWdzKSkgewogCQlkaXNhYmxlX01BQyhhaSwgMSk7CiAJCXdyaXRlQ29uZmlnUmlkKGFpLCAxKTsKQEAgLTE5OTIsNyArMTk5Miw3IEBACiAvKgogICogTWFnaWMsIHRoZSBjYXJkcyBmaXJtd2FyZSBuZWVkcyBhIGxlbmd0aCBjb3VudCAoMiBieXRlcykgaW4gdGhlIGhvc3QgYnVmZmVyCiAgKiByaWdodCBhZnRlciAgVFhGSURfSERSLlRoZSBUWEZJRF9IRFIgY29udGFpbnMgdGhlIHN0YXR1cyBzaG9ydCBzbyBwYXlsb2FkbGVuCi0gKiBpcyBpbW1lZGlhdGx5IGFmdGVyIGl0LiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGlzIGltbWVkaWF0ZWx5IGFmdGVyIGl0LiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqICAgICAgICAgICAgICAgICAgICAgICAgIHxUWEZJREhEUitTVEFUVVN8UEFZTE9BRExFTnw4MDIuM0hEUnxQQUNLRVREQVRBfAogICogICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTIwMDYsNyArMjAwNiw3IEBACiAJCXNpemVvZih3aWZpY3RsaGRyODAyMykgKyAyIDsKIAogCS8qCi0JICogRmlybXdhcmUgYXV0b21hdGljbHkgcHV0cyA4MDIgaGVhZGVyIG9uIHNvCisJICogRmlybXdhcmUgYXV0b21hdGljYWxseSBwdXRzIDgwMiBoZWFkZXIgb24gc28KIAkgKiB3ZSBkb24ndCBuZWVkIHRvIGFjY291bnQgZm9yIGl0IGluIHRoZSBsZW5ndGgKIAkgKi8KIAlpZiAodGVzdF9iaXQoRkxBR19NSUNfQ0FQQUJMRSwgJmFpLT5mbGFncykgJiYgYWktPm1pY3N0YXRzLmVuYWJsZWQgJiYKQEAgLTI1MzEsNyArMjUzMSw3IEBACiAvKgogICogV2UgYXJlIHNldHRpbmcgdXAgdGhyZWUgdGhpbmdzIGhlcmU6CiAgKiAxKSBNYXAgQVVYIG1lbW9yeSBmb3IgZGVzY3JpcHRvcnM6IFJpZCwgVHhGaWQsIG9yIFJ4RmlkLgotICogMikgTWFwIFBDSSBtZW1vcnkgZm9yIGlzc3VlaW5nIGNvbW1hbmRzLgorICogMikgTWFwIFBDSSBtZW1vcnkgZm9yIGlzc3VpbmcgY29tbWFuZHMuCiAgKiAzKSBBbGxvY2F0ZSBtZW1vcnkgKHNoYXJlZCkgdG8gc2VuZCBhbmQgcmVjZWl2ZSBldGhlcm5ldCBmcmFtZXMuCiAgKi8KIHN0YXRpYyBpbnQgbXBpX21hcF9jYXJkKHN0cnVjdCBhaXJvX2luZm8gKmFpLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAKIAogCWlmICggbWF4X3RyaWVzID09IC0xICkgewogCQlhaXJvX3ByaW50X2VycihhaS0+ZGV2LT5uYW1lLAotCQkJIk1heCB0cmllcyBleGNlZWRlZCB3aGVuIGlzc3VlaW5nIGNvbW1hbmQiKTsKKwkJCSJNYXggdHJpZXMgZXhjZWVkZWQgd2hlbiBpc3N1aW5nIGNvbW1hbmQiKTsKIAkJaWYgKElONDUwMChhaSwgQ09NTUFORCkgJiBDT01NQU5EX0JVU1kpCiAJCQlPVVQ0NTAwKGFpLCBFVkFDSywgRVZfQ0xFQVJDT01NQU5EQlVTWSk7CiAJCXJldHVybiBFUlJPUjsKQEAgLTQxNzMsNyArNDE3Myw3IEBACiB9CiAKIC8qICBOb3RlLCB0aGF0IHdlIGFyZSB1c2luZyBCQVAxIHdoaWNoIGlzIGFsc28gdXNlZCBieSB0cmFuc21pdCwgc28KLSAqICBtYWtlIHN1cmUgdGhpcyBpc250IGNhbGxlZCB3aGVuIGEgdHJhbnNtaXQgaXMgaGFwcGVuaW5nICovCisgKiAgbWFrZSBzdXJlIHRoaXMgaXNuJ3QgY2FsbGVkIHdoZW4gYSB0cmFuc21pdCBpcyBoYXBwZW5pbmcgKi8KIHN0YXRpYyBpbnQgUEM0NTAwX3dyaXRlcmlkKHN0cnVjdCBhaXJvX2luZm8gKmFpLCB1MTYgcmlkLAogCQkJICAgY29uc3Qgdm9pZCAqcEJ1ZiwgaW50IGxlbiwgaW50IGxvY2spCiB7CkBAIC00Nzc2LDcgKzQ3NzYsNyBAQAogCQlpZiAoIXN0YXRzTGFiZWxzW2ldKSBjb250aW51ZTsKIAkJaWYgKGorc3RybGVuKHN0YXRzTGFiZWxzW2ldKSsxNj40MDk2KSB7CiAJCQlhaXJvX3ByaW50X3dhcm4oYXByaXYtPmRldi0+bmFtZSwKLQkJCSAgICAgICAiUG90ZW50aWFsbHkgZGlzYXN0ZXJvdXMgYnVmZmVyIG92ZXJmbG93IGF2ZXJ0ZWQhIik7CisJCQkgICAgICAgIlBvdGVudGlhbGx5IGRpc2FzdHJvdXMgYnVmZmVyIG92ZXJmbG93IGF2ZXJ0ZWQhIik7CiAJCQlicmVhazsKIAkJfQogCQlqKz1zcHJpbnRmKGRhdGEtPnJidWZmZXIraiwgIiVzOiAldVxuIiwgc3RhdHNMYWJlbHNbaV0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvbWFpbi5jCmluZGV4IGI3NjFmZWMuLmNjYzJlZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvbWFpbi5jCkBAIC05NzQsNyArOTc0LDcgQEAKIAkJCWlmIChhci0+cnhfZmFpbG92ZXJfbWlzc2luZyA8PSAwKSB7CiAJCQkJLyoKIAkJCQkgKiBuZXN0ZWQgYXI5MTcwX3J4IGNhbGwhCi0JCQkJICogdGVybWluYXRpb24gaXMgZ3VyYW50ZWVkLCBldmVuIHdoZW4gdGhlCisJCQkJICogdGVybWluYXRpb24gaXMgZ3VhcmFudGVlZCwgZXZlbiB3aGVuIHRoZQogCQkJCSAqIGNvbWJpbmVkIGZyYW1lIGFsc28gaGF2ZSBhIGVsZW1lbnQgd2l0aAogCQkJCSAqIGEgYmFkIHRhZy4KIAkJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvcGh5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL3BoeS5jCmluZGV4IDBkYmZjZjcuLmFhOGQwNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyOTE3MC9waHkuYwpAQCAtNDI0LDcgKzQyNCw3IEBACiAKIC8qCiAgKiBpbml0aWFsaXplIHNvbWUgcGh5IHJlZ3MgZnJvbSBlZXByb20gdmFsdWVzIGluIG1vZGFsX2hlYWRlcltdCi0gKiBhY2MuIHRvIGJhbmQgYW5kIGJhbmR3aXRoCisgKiBhY2MuIHRvIGJhbmQgYW5kIGJhbmR3aWR0aAogICovCiBzdGF0aWMgaW50IGFyOTE3MF9pbml0X3BoeV9mcm9tX2VlcHJvbShzdHJ1Y3QgYXI5MTcwICphciwKIAkJCQlib29sIGlzXzJnaHosIGJvb2wgaXNfNDBtaHopCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYW5pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYW5pLmgKaW5kZXggZDBhNjY0MC4uMDM0MDE1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2FuaS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9hbmkuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBBVEg1S19BTklfUlNTSV9USFJfSElHSAkJNDAKICNkZWZpbmUgQVRINUtfQU5JX1JTU0lfVEhSX0xPVwkJNwogCi0vKiBtYXhpbXVtIGF2YWlsYWJlIGxldmVscyAqLworLyogbWF4aW11bSBhdmFpbGFibGUgbGV2ZWxzICovCiAjZGVmaW5lIEFUSDVLX0FOSV9NQVhfRklSU1RFUF9MVkwJMgogI2RlZmluZSBBVEg1S19BTklfTUFYX05PSVNFX0lNTV9MVkwJMQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYwppbmRleCA0ZDdmMjFlLi4zNDlhNTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMKQEAgLTE5NTMsNyArMTk1Myw3IEBACiAKICNkZWZpbmUgRlVER0UgQVI1S19UVU5FX1NXX0JFQUNPTl9SRVNQICsgMwogCS8qIFdlIHVzZSBGVURHRSB0byBtYWtlIHN1cmUgdGhlIG5leHQgVEJUVCBpcyBhaGVhZCBvZiB0aGUgY3VycmVudCBUVS4KLQkgKiBTaW5jZSB3ZSBsYXRlciBzdWJzdHJhY3QgQVI1S19UVU5FX1NXX0JFQUNPTl9SRVNQICgxMCkgaW4gdGhlIHRpbWVyCisJICogU2luY2Ugd2UgbGF0ZXIgc3VidHJhY3QgQVI1S19UVU5FX1NXX0JFQUNPTl9SRVNQICgxMCkgaW4gdGhlIHRpbWVyCiAJICogY29uZmlndXJhdGlvbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBpcyBiaWdnZXIgdGhhbiB0aGF0LiAqLwogCiAJaWYgKGJjX3RzZiA9PSAtMSkgewpAQCAtMTk3MSw3ICsxOTcxLDcgQEAKIAkJaW50dmFsIHw9IEFSNUtfQkVBQ09OX1JFU0VUX1RTRjsKIAl9IGVsc2UgaWYgKGJjX3RzZiA+IGh3X3RzZikgewogCQkvKgotCQkgKiBiZWFjb24gcmVjZWl2ZWQsIFNXIG1lcmdlIGhhcHBlbmQgYnV0IEhXIFRTRiBub3QgeWV0IHVwZGF0ZWQuCisJCSAqIGJlYWNvbiByZWNlaXZlZCwgU1cgbWVyZ2UgaGFwcGVuZWQgYnV0IEhXIFRTRiBub3QgeWV0IHVwZGF0ZWQuCiAJCSAqIG5vdCBwb3NzaWJsZSB0byByZWNvbmZpZ3VyZSB0aW1lcnMgeWV0LCBidXQgbmV4dCB0aW1lIHdlCiAJCSAqIHJlY2VpdmUgYSBiZWFjb24gd2l0aCB0aGUgc2FtZSBCU1NJRCwgdGhlIGhhcmR3YXJlIHdpbGwKIAkJICogYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIFRTRiBhbmQgdGhlbiB3ZSBuZWVkIHRvIHJlY29uZmlndXJlCkBAIC0yNjUxLDcgKzI2NTEsNyBAQAogCXN5bmNocm9uaXplX2lycShzYy0+aXJxKTsKIAlzdG9wX3Rhc2tsZXRzKHNjKTsKIAotCS8qIFNhdmUgYW5pIG1vZGUgYW5kIGRpc2FibGUgQU5JIGR1cnJpbmcKKwkvKiBTYXZlIGFuaSBtb2RlIGFuZCBkaXNhYmxlIEFOSSBkdXJpbmcKIAkgKiByZXNldC4gSWYgd2UgZG9uJ3Qgd2UgbWlnaHQgZ2V0IGZhbHNlCiAJICogUEhZIGVycm9yIGludGVycnVwdHMuICovCiAJYW5pX21vZGUgPSBhaC0+YWhfc2MtPmFuaV9zdGF0ZS5hbmlfbW9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9kZXNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZGVzYy5jCmluZGV4IDE2YjQ0ZmYuLmE4ZmNjOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9kZXNjLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Rlc2MuYwpAQCAtNTEsNyArNTEsNyBAQAogCS8qCiAJICogVmFsaWRhdGUgaW5wdXQKIAkgKiAtIFplcm8gcmV0cmllcyBkb24ndCBtYWtlIHNlbnNlLgotCSAqIC0gQSB6ZXJvIHJhdGUgd2lsbCBwdXQgdGhlIEhXIGludG8gYSBtb2RlIHdoZXJlIGl0IGNvbnRpbm91c2x5IHNlbmRzCisJICogLSBBIHplcm8gcmF0ZSB3aWxsIHB1dCB0aGUgSFcgaW50byBhIG1vZGUgd2hlcmUgaXQgY29udGludW91c2x5IHNlbmRzCiAJICogICBub2lzZSBvbiB0aGUgY2hhbm5lbCwgc28gaXQgaXMgaW1wb3J0YW50IHRvIGF2b2lkIHRoaXMuCiAJICovCiAJaWYgKHVubGlrZWx5KHR4X3RyaWVzMCA9PSAwKSkgewpAQCAtMTkwLDcgKzE5MCw3IEBACiAJLyoKIAkgKiBWYWxpZGF0ZSBpbnB1dAogCSAqIC0gWmVybyByZXRyaWVzIGRvbid0IG1ha2Ugc2Vuc2UuCi0JICogLSBBIHplcm8gcmF0ZSB3aWxsIHB1dCB0aGUgSFcgaW50byBhIG1vZGUgd2hlcmUgaXQgY29udGlub3VzbHkgc2VuZHMKKwkgKiAtIEEgemVybyByYXRlIHdpbGwgcHV0IHRoZSBIVyBpbnRvIGEgbW9kZSB3aGVyZSBpdCBjb250aW51b3VzbHkgc2VuZHMKIAkgKiAgIG5vaXNlIG9uIHRoZSBjaGFubmVsLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgdGhpcy4KIAkgKi8KIAlpZiAodW5saWtlbHkodHhfdHJpZXMwID09IDApKSB7CkBAIC0zMDAsNyArMzAwLDcgQEAKIAkvKgogCSAqIFJhdGVzIGNhbiBiZSAwIGFzIGxvbmcgYXMgdGhlIHJldHJ5IGNvdW50IGlzIDAgdG9vLgogCSAqIEEgemVybyByYXRlIGFuZCBub256ZXJvIHJldHJ5IGNvdW50IHdpbGwgcHV0IHRoZSBIVyBpbnRvIGEgbW9kZSB3aGVyZQotCSAqIGl0IGNvbnRpbm91c2x5IHNlbmRzIG5vaXNlIG9uIHRoZSBjaGFubmVsLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8KKwkgKiBpdCBjb250aW51b3VzbHkgc2VuZHMgbm9pc2Ugb24gdGhlIGNoYW5uZWwsIHNvIGl0IGlzIGltcG9ydGFudCB0bwogCSAqIGF2b2lkIHRoaXMuCiAJICovCiAJaWYgKHVubGlrZWx5KCh0eF9yYXRlMSA9PSAwICYmIHR4X3RyaWVzMSAhPSAwKSB8fApAQCAtMzQyLDcgKzM0Miw3IEBACiBcKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCi0gKiBQcm9jY2VzcyB0aGUgdHggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMC81MjExCisgKiBQcm9jZXNzIHRoZSB0eCBzdGF0dXMgZGVzY3JpcHRvciBvbiA1MjEwLzUyMTEKICAqLwogc3RhdGljIGludCBhdGg1a19od19wcm9jXzJ3b3JkX3R4X3N0YXR1cyhzdHJ1Y3QgYXRoNWtfaHcgKmFoLAogCQlzdHJ1Y3QgYXRoNWtfZGVzYyAqZGVzYywgc3RydWN0IGF0aDVrX3R4X3N0YXR1cyAqdHMpCkBAIC0zOTQsNyArMzk0LDcgQEAKIH0KIAogLyoKLSAqIFByb2NjZXNzIGEgdHggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMgorICogUHJvY2VzcyBhIHR4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTIKICAqLwogc3RhdGljIGludCBhdGg1a19od19wcm9jXzR3b3JkX3R4X3N0YXR1cyhzdHJ1Y3QgYXRoNWtfaHcgKmFoLAogCQlzdHJ1Y3QgYXRoNWtfZGVzYyAqZGVzYywgc3RydWN0IGF0aDVrX3R4X3N0YXR1cyAqdHMpCkBAIC01MTksNyArNTE5LDcgQEAKIH0KIAogLyoKLSAqIFByb2NjZXNzIHRoZSByeCBzdGF0dXMgZGVzY3JpcHRvciBvbiA1MjEwLzUyMTEKKyAqIFByb2Nlc3MgdGhlIHJ4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTAvNTIxMQogICovCiBzdGF0aWMgaW50IGF0aDVrX2h3X3Byb2NfNTIxMF9yeF9zdGF0dXMoc3RydWN0IGF0aDVrX2h3ICphaCwKIAkJc3RydWN0IGF0aDVrX2Rlc2MgKmRlc2MsIHN0cnVjdCBhdGg1a19yeF9zdGF0dXMgKnJzKQpAQCAtNjAyLDcgKzYwMiw3IEBACiB9CiAKIC8qCi0gKiBQcm9jY2VzcyB0aGUgcnggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMgorICogUHJvY2VzcyB0aGUgcnggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMgogICovCiBzdGF0aWMgaW50IGF0aDVrX2h3X3Byb2NfNTIxMl9yeF9zdGF0dXMoc3RydWN0IGF0aDVrX2h3ICphaCwKIAkJCQkJc3RydWN0IGF0aDVrX2Rlc2MgKmRlc2MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZWVwcm9tLmMKaW5kZXggYjY1NjFmNy4uZWZiNjcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2VlcHJvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9lZXByb20uYwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKICAqCiAgKiBUbyByZWNyZWF0ZSB0aGUgY3VydmVzIHdlIHJlYWQgaGVyZSB0aGUgcG9pbnRzIGFuZCBpbnRlcnBvbGF0ZQogICogbGF0ZXIuIE5vdGUgdGhhdCBpbiBtb3N0IGNhc2VzIG9ubHkgMiAoaGlnaGVyIGFuZCBsb3dlcikgY3VydmVzIGFyZQotICogdXNlZCAobGlrZSBSRjUxMTIpIGJ1dCB2ZW5kb3JzIGhhdmUgdGhlIG9wb3J0dW5pdHkgdG8gaW5jbHVkZSBhbGwKKyAqIHVzZWQgKGxpa2UgUkY1MTEyKSBidXQgdmVuZG9ycyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBpbmNsdWRlIGFsbAogICogNCBjdXJ2ZXMgb24gZWVwcm9tLiBUaGUgZmluYWwgY3VydmUgKGhpZ2hlciBwb3dlcikgaGFzIGFuIGV4dHJhCiAgKiBwb2ludCBmb3IgYmV0dGVyIGFjY3VyYWN5IGxpa2UgUkY1MTEyLgogICovCkBAIC0xMzAyLDcgKzEzMDIsNyBAQAogCQkJLyoKIAkJCSAqIFBkIGdhaW4gMCBpcyBub3QgdGhlIGxhc3QgcGQgZ2FpbgogCQkJICogc28gaXQgb25seSBoYXMgMiBwZCBwb2ludHMuCi0JCQkgKiBDb250aW51ZSB3aWggcGQgZ2FpbiAxLgorCQkJICogQ29udGludWUgd2l0aCBwZCBnYWluIDEuCiAJCQkgKi8KIAkJCXBjaW5mby0+cHdyX2lbMV0gPSAodmFsID4+IDEwKSAmIDB4MWY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY2kuYwppbmRleCA2NjU5OGEwLi4zYzQ0Njg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGNpLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BjaS5jCkBAIC01Nyw3ICs1Nyw3IEBACiAJKmNzeiA9IChpbnQpdTh0bXA7CiAKIAkvKgotCSAqIFRoaXMgY2hlY2sgd2FzIHB1dCBpbiB0byBhdm9pZCAidW5wbGVzYW50IiBjb25zZXF1ZW5jZXMgaWYKKwkgKiBUaGlzIGNoZWNrIHdhcyBwdXQgaW4gdG8gYXZvaWQgInVucGxlYXNhbnQiIGNvbnNlcXVlbmNlcyBpZgogCSAqIHRoZSBib290cm9tIGhhcyBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYWxsIFBDSSBkZXZpY2VzLgogCSAqIFNvbWV0aW1lcyB0aGUgY2FjaGUgbGluZSBzaXplIHJlZ2lzdGVyIGlzIG5vdCBzZXQKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY3UuYwppbmRleCBhNzAyODE3Li5kOWIzZjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGN1LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BjdS5jCkBAIC00NzIsNyArNDcyLDcgQEAKIAl9CiAKIAkvKgotCSAqIFRoZSBBUjUyMTAgdXNlcyBwcm9taXNjb3VzIG1vZGUgdG8gZGV0ZWN0IHJhZGFyIGFjdGl2aXR5CisJICogVGhlIEFSNTIxMCB1c2VzIHByb21pc2N1b3VzIG1vZGUgdG8gZGV0ZWN0IHJhZGFyIGFjdGl2aXR5CiAJICovCiAJaWYgKGFoLT5haF92ZXJzaW9uID09IEFSNUtfQVI1MjEwICYmCiAJCQkoZmlsdGVyICYgQVI1S19SWF9GSUxURVJfUkFEQVJFUlIpKSB7CkBAIC03MDYsOCArNzA2LDggQEAKICAqIFRoZSBuZWVkIGZvciB0aGlzIGZ1bmN0aW9uIGFyaXNlcyBmcm9tIHRoZSBmYWN0IHRoYXQgd2UgaGF2ZSA0IHNlcGFyYXRlCiAgKiBIVyB0aW1lciByZWdpc3RlcnMgKFRJTUVSMCAtIFRJTUVSMyksIHdoaWNoIGFyZSBjbG9zZWx5IHJlbGF0ZWQgdG8gdGhlCiAgKiBuZXh0IGJlYWNvbiB0YXJnZXQgdGltZSAoTkJUVCksIGFuZCB0aGF0IHRoZSBIVyB1cGRhdGVzIHRoZXNlIHRpbWVycwotICogc2VwZXJhdGVseSBiYXNlZCBvbiB0aGUgY3VycmVudCBUU0YgdmFsdWUuIFRoZSBoYXJkd2FyZSBpbmNyZW1lbnRzIGVhY2gKLSAqIHRpbWVyIGJ5IHRoZSBiZWFjb24gaW50ZXJ2YWwsIHdoZW4gdGhlIGxvY2FsIFRTRiBjb3ZlcnRlZCB0byBUVSBpcyBlcXVhbAorICogc2VwYXJhdGVseSBiYXNlZCBvbiB0aGUgY3VycmVudCBUU0YgdmFsdWUuIFRoZSBoYXJkd2FyZSBpbmNyZW1lbnRzIGVhY2gKKyAqIHRpbWVyIGJ5IHRoZSBiZWFjb24gaW50ZXJ2YWwsIHdoZW4gdGhlIGxvY2FsIFRTRiBjb252ZXJ0ZWQgdG8gVFUgaXMgZXF1YWwKICAqIHRvIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHRpbWVyLgogICoKICAqIFRoZSByZWNlcHRpb24gb2YgYSBiZWFjb24gd2l0aCB0aGUgc2FtZSBCU1NJRCBjYW4gdXBkYXRlIHRoZSBsb2NhbCBIVyBUU0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYwppbmRleCA2MmNlMmY0Li41NTQ0MTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jCkBAIC0zMzUsMTEgKzMzNSwxMSBAQAogICogaHR0cDovL21hZHdpZmktcHJvamVjdC5vcmcvdGlja2V0LzE2NTkKICAqIHdpdGggdmFyaW91cyBtZWFzdXJlbWVudHMgYW5kIGRpYWdyYW1zCiAgKgotICogVE9ETzogRGVhbCB3aXRoIHBvd2VyIGRyb3BzIGR1ZSB0byBwcm9iZXMgYnkgc2V0dGluZyBhbiBhcHJvcHJpYXRlCisgKiBUT0RPOiBEZWFsIHdpdGggcG93ZXIgZHJvcHMgZHVlIHRvIHByb2JlcyBieSBzZXR0aW5nIGFuIGFwcHJvcHJpYXRlCiAgKiB0eCBwb3dlciBvbiB0aGUgcHJvYmUgcGFja2V0cyAhIE1ha2UgdGhpcyBwYXJ0IG9mIHRoZSBjYWxpYnJhdGlvbiBwcm9jZXNzLgogICovCiAKLS8qIEluaXRpYWxpemUgYWhfZ2FpbiBkdXJyaW5nIGF0dGFjaCAqLworLyogSW5pdGlhbGl6ZSBhaF9nYWluIGR1cmluZyBhdHRhY2ggKi8KIGludCBhdGg1a19od19yZmdhaW5fb3B0X2luaXQoc3RydWN0IGF0aDVrX2h3ICphaCkKIHsKIAkvKiBJbml0aWFsaXplIHRoZSBnYWluIG9wdGltaXphdGlvbiB2YWx1ZXMgKi8KQEAgLTEwNDksNyArMTA0OSw3IEBACiBcKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCi0gKiBDb252ZXJ0aW9uIG5lZWRlZCBmb3IgUkY1MTEwCisgKiBDb252ZXJzaW9uIG5lZWRlZCBmb3IgUkY1MTEwCiAgKi8KIHN0YXRpYyB1MzIgYXRoNWtfaHdfcmY1MTEwX2NoYW4yYXRoY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwpCiB7CkBAIC0xMDg4LDcgKzEwODgsNyBAQAogfQogCiAvKgotICogQ29udmVydGlvbiBuZWVkZWQgZm9yIDUxMTEKKyAqIENvbnZlcnNpb24gbmVlZGVkIGZvciA1MTExCiAgKi8KIHN0YXRpYyBpbnQgYXRoNWtfaHdfcmY1MTExX2NoYW4yYXRoY2hhbih1bnNpZ25lZCBpbnQgaWVlZSwKIAkJc3RydWN0IGF0aDVrX2F0aGNoYW5fMmdoeiAqYXRoY2hhbikKQEAgLTIyMDEsNyArMjIwMSw3IEBACiAvKgogICogR2V0IHRoZSBzdXJyb3VuZGluZyBwZXItY2hhbm5lbCBwb3dlciBjYWxpYnJhdGlvbiBwaWVycwogICogZm9yIGEgZ2l2ZW4gZnJlcXVlbmN5IHNvIHRoYXQgd2UgY2FuIGludGVycG9sYXRlIGJldHdlZW4KLSAqIHRoZW0gYW5kIGNvbWUgdXAgd2l0aCBhbiBhcHJvcHJpYXRlIGRhdGFzZXQgZm9yIG91ciBjdXJyZW50CisgKiB0aGVtIGFuZCBjb21lIHVwIHdpdGggYW4gYXBwcm9wcmlhdGUgZGF0YXNldCBmb3Igb3VyIGN1cnJlbnQKICAqIGNoYW5uZWwuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0yNjE4LDcgKzI2MTgsNyBAQAogLyoKICAqIFNldCB0aGUgZ2FpbiBib3VuZGFyaWVzIGFuZCBjcmVhdGUgZmluYWwgUG93ZXIgdG8gUERBREMgdGFibGUKICAqCi0gKiBXZSBjYW4gaGF2ZSB1cCB0byA0IHBkIGN1cnZlcywgd2UgbmVlZCB0byBkbyBhIHNpbW1pbGFyIHByb2Nlc3MKKyAqIFdlIGNhbiBoYXZlIHVwIHRvIDQgcGQgY3VydmVzLCB3ZSBuZWVkIHRvIGRvIGEgc2ltaWxhciBwcm9jZXNzCiAgKiBhcyB3ZSBkbyBmb3IgUkY1MTEyLiBUaGlzIHRpbWUgd2UgZG9uJ3QgaGF2ZSBhbiBlZGdlX2ZsYWcgYnV0IHdlCiAgKiBzZXQgdGhlIGdhaW4gYm91bmRhcmllcyBvbiBhIHNlcGFyYXRlIHJlZ2lzdGVyLgogICovCkBAIC0yODI2LDEzICsyODI2LDEzIEBACiAJdTMyIHRhcmdldCA9IGNoYW5uZWwtPmNlbnRlcl9mcmVxOwogCWludCBwZGcsIGk7CiAKLQkvKiBHZXQgc3Vyb3VuZGluZyBmcmVxIHBpZXJzIGZvciB0aGlzIGNoYW5uZWwgKi8KKwkvKiBHZXQgc3Vycm91bmRpbmcgZnJlcSBwaWVycyBmb3IgdGhpcyBjaGFubmVsICovCiAJYXRoNWtfZ2V0X2NoYW5fcGNhbF9zdXJyb3VuZGluZ19waWVycyhhaCwgY2hhbm5lbCwKIAkJCQkJCSZwY2luZm9fTCwKIAkJCQkJCSZwY2luZm9fUik7CiAKIAkvKiBMb29wIG92ZXIgcGQgZ2FpbiBjdXJ2ZXMgb24KLQkgKiBzdXJvdW5kaW5nIGZyZXEgcGllcnMgYnkgaW5kZXggKi8KKwkgKiBzdXJyb3VuZGluZyBmcmVxIHBpZXJzIGJ5IGluZGV4ICovCiAJZm9yIChwZGcgPSAwOyBwZGcgPCBlZS0+ZWVfcGRfZ2FpbnNbZWVfbW9kZV07IHBkZysrKSB7CiAKIAkJLyogRmlsbCBjdXJ2ZXMgaW4gcmV2ZXJzZSBvcmRlcgpAQCAtMjkyMyw3ICsyOTIzLDcgQEAKIAkJfQogCiAJCS8qIEludGVycG9sYXRlIGJldHdlZW4gY3VydmVzCi0JCSAqIG9mIHN1cm91bmRpbmcgZnJlcSBwaWVycyB0bworCQkgKiBvZiBzdXJyb3VuZGluZyBmcmVxIHBpZXJzIHRvCiAJCSAqIGdldCB0aGUgZmluYWwgY3VydmUgZm9yIHRoaXMKIAkJICogcGQgZ2Fpbi4gUmUtdXNlIHRtcEwgZm9yIGludGVycG9sYXRpb24KIAkJICogb3V0cHV0ICovCkBAIC0yOTQ3LDcgKzI5NDcsNyBAQAogCiAJLyogRmlsbCBtaW4gYW5kIG1heCBwb3dlciBsZXZlbHMgZm9yIHRoaXMKIAkgKiBjaGFubmVsIGJ5IGludGVycG9sYXRpbmcgdGhlIHZhbHVlcyBvbgotCSAqIHN1cm91bmRpbmcgY2hhbm5lbHMgdG8gY29tcGxldGUgdGhlIGRhdGFzZXQgKi8KKwkgKiBzdXJyb3VuZGluZyBjaGFubmVscyB0byBjb21wbGV0ZSB0aGUgZGF0YXNldCAqLwogCWFoLT5haF90eHBvd2VyLnR4cF9taW5fcHdyID0gYXRoNWtfZ2V0X2ludGVycG9sYXRlZF92YWx1ZSh0YXJnZXQsCiAJCQkJCShzMTYpIHBjaW5mb19MLT5mcmVxLAogCQkJCQkoczE2KSBwY2luZm9fUi0+ZnJlcSwKQEAgLTMxNzksNyArMzE3OSw3IEBACiAKIAkvKiBGSVhNRTogVFBDIHNjYWxlIHJlZHVjdGlvbiAqLwogCi0JLyogR2V0IHN1cm91bmRpbmcgY2hhbm5lbHMgZm9yIHBlci1yYXRlIHBvd2VyIHRhYmxlCisJLyogR2V0IHN1cnJvdW5kaW5nIGNoYW5uZWxzIGZvciBwZXItcmF0ZSBwb3dlciB0YWJsZQogCSAqIGNhbGlicmF0aW9uICovCiAJYXRoNWtfZ2V0X3JhdGVfcGNhbF9kYXRhKGFoLCBjaGFubmVsLCAmcmF0ZV9pbmZvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3JlZy5oCmluZGV4IGUxYzlhYmQuLmQxMmI4MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9yZWcuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcmVnLmgKQEAgLTEzMiw4ICsxMzIsOCBAQAogICogQXMgaSBjYW4gc2VlIGluIGFyNWtfYXI1MjEwX3R4X3N0YXJ0IFJleWsgdXNlcyBzb21lIG9mIHRoZSB2YWx1ZXMgb2YgQkNSCiAgKiBmb3IgdGhpcyByZWdpc3Rlciwgc28gaSBndWVzcyBUUTFWLFRRMUZWIGFuZCBCRE1BRSBoYXZlIHRoZSBzYW1lIG1lYW5pbmcKICAqIGhlcmUgYW5kIFNOUC9TTkFQIG1lYW5zICJzbmFwc2hvdCIgKHNvIHRoaXMgcmVnaXN0ZXIgZ2V0cyBzeW5jZWQgd2l0aCBCQ1IpLgotICogU28gU05BUFBFREJDUlZBTElEIHNvdWxkIGFsc28gc3RhbmQgZm9yICJzbmFwcGVkIEJDUiAtdmFsdWVzLSB2YWxpZCIsIHNvIGkKLSAqIHJlbmFtZWQgaXQgdG8gU05BUFNIT1RTVkFMSUQgdG8gbWFrZSBtb3JlIHNlbnNlLiBJIHJlYWx5IGhhdmUgbm8gaWRlYSB3aGF0CisgKiBTbyBTTkFQUEVEQkNSVkFMSUQgc2hvdWxkIGFsc28gc3RhbmQgZm9yICJzbmFwcGVkIEJDUiAtdmFsdWVzLSB2YWxpZCIsIHNvIGkKKyAqIHJlbmFtZWQgaXQgdG8gU05BUFNIT1RTVkFMSUQgdG8gbWFrZSBtb3JlIHNlbnNlLiBJIHJlYWxseSBoYXZlIG5vIGlkZWEgd2hhdAogICogZWxzZSBjYW4gaXQgYmUuIEkgYWxzbyByZW5hbWVkIFNOUEJDTUQgdG8gU05QQURIT0MgdG8gbWF0Y2ggQkNSLgogICovCiAjZGVmaW5lIEFSNUtfQlNSCQkweDAwMmMJCQkvKiBSZWdpc3RlciBBZGRyZXNzICovCkBAIC0yODMsNyArMjgzLDcgQEAKICAqLwogI2RlZmluZSBBUjVLX0lTUgkJMHgwMDFjCQkJLyogUmVnaXN0ZXIgQWRkcmVzcyBbNTIxMF0gKi8KICNkZWZpbmUgQVI1S19QSVNSCQkweDAwODAJCQkvKiBSZWdpc3RlciBBZGRyZXNzIFs1MjExK10gKi8KLSNkZWZpbmUgQVI1S19JU1JfUlhPSwkJMHgwMDAwMDAwMQkvKiBGcmFtZSBzdWNjZXNzZnVseSByZWNpZXZlZCAqLworI2RlZmluZSBBUjVLX0lTUl9SWE9LCQkweDAwMDAwMDAxCS8qIEZyYW1lIHN1Y2Nlc3NmdWx5IHJlY2VpdmVkICovCiAjZGVmaW5lIEFSNUtfSVNSX1JYREVTQwkJMHgwMDAwMDAwMgkvKiBSWCBkZXNjcmlwdG9yIHJlcXVlc3QgKi8KICNkZWZpbmUgQVI1S19JU1JfUlhFUlIJCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBlcnJvciAqLwogI2RlZmluZSBBUjVLX0lTUl9SWE5PRlJNCTB4MDAwMDAwMDgJLyogTm8gZnJhbWUgcmVjZWl2ZWQgKHJlY2VpdmUgdGltZW91dCkgKi8KQEAgLTM3MiwxMiArMzcyLDEyIEBACiAvKgogICogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXJzCiAgKgotICogQXMgd2hpdGggSVNScyA1MjEwIGhhcyBvbmUgSU1SIChBUjVLX0lNUikgYW5kIDUyMTEvNTIxMiBoYXMgb25lIHByaW1hcnkKKyAqIEFzIHdpdGggSVNScyA1MjEwIGhhcyBvbmUgSU1SIChBUjVLX0lNUikgYW5kIDUyMTEvNTIxMiBoYXMgb25lIHByaW1hcnkKICAqIChBUjVLX1BJTVIpIGFuZCA0IHNlY29uZGFyeSBJTVJzIChBUjVLX1NJTVJ4KS4gTm90ZSB0aGF0IElTUi9JTVIgZmxhZ3MgbWF0Y2guCiAgKi8KICNkZWZpbmUJQVI1S19JTVIJCTB4MDAyMAkJCS8qIFJlZ2lzdGVyIEFkZHJlc3MgWzUyMTBdICovCiAjZGVmaW5lIEFSNUtfUElNUgkJMHgwMGEwCQkJLyogUmVnaXN0ZXIgQWRkcmVzcyBbNTIxMStdICovCi0jZGVmaW5lIEFSNUtfSU1SX1JYT0sJCTB4MDAwMDAwMDEJLyogRnJhbWUgc3VjY2Vzc2Z1bHkgcmVjaWV2ZWQqLworI2RlZmluZSBBUjVLX0lNUl9SWE9LCQkweDAwMDAwMDAxCS8qIEZyYW1lIHN1Y2Nlc3NmdWx5IHJlY2VpdmVkKi8KICNkZWZpbmUgQVI1S19JTVJfUlhERVNDCQkweDAwMDAwMDAyCS8qIFJYIGRlc2NyaXB0b3IgcmVxdWVzdCovCiAjZGVmaW5lIEFSNUtfSU1SX1JYRVJSCQkweDAwMDAwMDA0CS8qIFJlY2VpdmUgZXJyb3IqLwogI2RlZmluZSBBUjVLX0lNUl9SWE5PRlJNCTB4MDAwMDAwMDgJLyogTm8gZnJhbWUgcmVjZWl2ZWQgKHJlY2VpdmUgdGltZW91dCkqLwpAQCAtODk1LDcgKzg5NSw3IEBACiAjZGVmaW5lIEFSNUtfUENJQ0ZHX1NMX0lOVEVOCQkweDAwMDAwODAwCS8qIEVuYWJsZSBpbnRlcnJ1cHRzIHdoZW4gYXNsZWVwICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX0xFRF9CQ1RMCQkweDAwMDAxMDAwCS8qIExlZCBibGluayAoPykgWzUyMTBdICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX1JFVFJZX0ZJWAkJMHgwMDAwMTAwMAkvKiBFbmFibGUgcGNpIGNvcmUgcmV0cnkgZml4ICovCi0jZGVmaW5lIEFSNUtfUENJQ0ZHX1NMX0lOUEVOCQkweDAwMDAyMDAwCS8qIFNsZWVwIGV2ZW4gd2hpdGggcGVuZGluZyBpbnRlcnJ1cHRzKi8KKyNkZWZpbmUgQVI1S19QQ0lDRkdfU0xfSU5QRU4JCTB4MDAwMDIwMDAJLyogU2xlZXAgZXZlbiB3aXRoIHBlbmRpbmcgaW50ZXJydXB0cyovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX1NQV1JfRE4JCTB4MDAwMTAwMDAJLyogTWFzayBmb3IgcG93ZXIgc3RhdHVzICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX0xFRE1PREUJCTB4MDAwZTAwMDAJLyogTGVkbW9kZSBbNTIxMStdICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX0xFRE1PREVfUFJPUAkweDAwMDAwMDAwCS8qIEJsaW5rIG9uIHN0YW5kYXJkIHRyYWZmaWMgWzUyMTErXSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMKaW5kZXggZmZjZjQ0YS4uMTA2YzBiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jCkBAIC0xNDIsNyArMTQyLDcgQEAKIAogLyoqCiAgKiBhcjUwMDhfaHdfc2V0X2NoYW5uZWwgLSB0dW5lIHRvIGEgY2hhbm5lbCBvbiB0aGUgZXh0ZXJuYWwgQVIyMTMzL0FSNTEzMyByYWRpb3MKLSAqIEBhaDogYXRoZXJvcyBoYXJkd2FyZSBzdHVjdHVyZQorICogQGFoOiBhdGhlcm9zIGhhcmR3YXJlIHN0cnVjdHVyZQogICogQGNoYW46CiAgKgogICogRm9yIHRoZSBleHRlcm5hbCBBUjIxMzMvQVI1MTMzIHJhZGlvcywgdGFrZXMgdGhlIE1IeiBjaGFubmVsIHZhbHVlIGFuZCBzZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jCmluZGV4IDRhOTI3MTguLjZlYWRmOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYwpAQCAtMzI0MCw3ICszMjQwLDcgQEAKIAkJCWVlcCA9IGFyOTAwM19lZXByb21fc3RydWN0X2ZpbmRfYnlfaWQocmVmZXJlbmNlKTsKIAkJCWlmIChlZXAgPT0gTlVMTCkgewogCQkJCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0VFUFJPTSwKLQkJCQkJImNhbnQgZmluZCByZWZlcmVuY2UgZWVwcm9tIHN0cnVjdCAlZFxuIiwKKwkJCQkJImNhbid0IGZpbmQgcmVmZXJlbmNlIGVlcHJvbSBzdHJ1Y3QgJWRcbiIsCiAJCQkJCXJlZmVyZW5jZSk7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMKaW5kZXggYzQxYWI4Yy4uNjJlMTM5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jCkBAIC0zNjAsNyArMzYwLDcgQEAKICAqIEhUQyBNZXNzYWdlcyBhcmUgaGFuZGxlZCBkaXJlY3RseSBoZXJlIGFuZCB0aGUgb2J0YWluZWQgU0tCCiAgKiBpcyBmcmVlZC4KICAqCi0gKiBTZXZpY2UgbWVzc2FnZXMgKERhdGEsIFdNSSkgcGFzc2VkIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgKiBTZXJ2aWNlIG1lc3NhZ2VzIChEYXRhLCBXTUkpIHBhc3NlZCB0byB0aGUgY29ycmVzcG9uZGluZwogICogZW5kcG9pbnQgUlggaGFuZGxlcnMsIHdoaWNoIGhhdmUgdG8gZnJlZSB0aGUgU0tCLgogICovCiB2b2lkIGF0aDlrX2h0Y19yeF9tc2coc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMKaW5kZXggZTgzMTI4Yy4uOWM2NTQ1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYwpAQCAtNDQsNyArNDQsNyBAQAogCSpjc3ogPSAoaW50KXU4dG1wOwogCiAJLyoKLQkgKiBUaGlzIGNoZWNrIHdhcyBwdXQgaW4gdG8gYXZvaWQgInVucGxlc2FudCIgY29uc2VxdWVuY2VzIGlmCisJICogVGhpcyBjaGVjayB3YXMgcHV0IGluIHRvIGF2b2lkICJ1bnBsZWFzYW50IiBjb25zZXF1ZW5jZXMgaWYKIAkgKiB0aGUgYm9vdHJvbSBoYXMgbm90IGZ1bGx5IGluaXRpYWxpemVkIGFsbCBQQ0kgZGV2aWNlcy4KIAkgKiBTb21ldGltZXMgdGhlIGNhY2hlIGxpbmUgc2l6ZSByZWdpc3RlciBpcyBub3Qgc2V0CiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yYy5jCmluZGV4IGEzMjQxY2QuLjRjMGQzNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yYy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yYy5jCkBAIC03OTIsNyArNzkyLDcgQEAKIAogCQl0eF9pbmZvLT5mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX1JBVEVfQ1RSTF9QUk9CRTsKIAl9IGVsc2UgewotCQkvKiBTZXQgdGhlIGNob29zZW4gcmF0ZS4gTm8gUlRTIGZvciBmaXJzdCBzZXJpZXMgZW50cnkuICovCisJCS8qIFNldCB0aGUgY2hvc2VuIHJhdGUuIE5vIFJUUyBmb3IgZmlyc3Qgc2VyaWVzIGVudHJ5LiAqLwogCQlhdGhfcmNfcmF0ZV9zZXRfc2VyaWVzKHJhdGVfdGFibGUsICZyYXRlc1tpKytdLCB0eHJjLAogCQkJCSAgICAgICB0cnlfcGVyX3JhdGUsIHJpeCwgMCk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKaW5kZXggMjY3MzRlNS4uODhmYTdmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCkBAIC02MjgsOCArNjI4LDggQEAKIAkJCQkgKHUzMilBVEhfQU1QRFVfTElNSVRfTUFYKTsKIAogCS8qCi0JICogaC93IGNhbiBhY2NlcHQgYWdncmVnYXRlcyB1cHRvIDE2IGJpdCBsZW5ndGhzICg2NTUzNSkuCi0JICogVGhlIElFLCBob3dldmVyIGNhbiBob2xkIHVwdG8gNjU1MzYsIHdoaWNoIHNob3dzIHVwIGhlcmUKKwkgKiBoL3cgY2FuIGFjY2VwdCBhZ2dyZWdhdGVzIHVwIHRvIDE2IGJpdCBsZW5ndGhzICg2NTUzNSkuCisJICogVGhlIElFLCBob3dldmVyIGNhbiBob2xkIHVwIHRvIDY1NTM2LCB3aGljaCBzaG93cyB1cCBoZXJlCiAJICogYXMgemVyby4gSWdub3JlIDY1NTM2IHNpbmNlIHdlICBhcmUgY29uc3RyYWluZWQgYnkgaHcuCiAJICovCiAJaWYgKHRpZC0+YW4tPm1heGFtcGR1KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvY2FybDkxNzAuaAppbmRleCBjNmE1ZmFlLi5jMDFjNDNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvY2FybDkxNzAuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvY2FybDkxNzAuaApAQCAtMTYxLDcgKzE2MSw3IEBACiAgKiBOYXR1cmFsbHk6IFRoZSBoaWdoZXIgdGhlIGxpbWl0LCB0aGUgZmFzdGVyIHRoZSBkZXZpY2UgQ0FOIHNlbmQuCiAgKiBIb3dldmVyLCBldmVuIGEgc2xpZ2h0IG92ZXItY29tbWl0bWVudCBhdCB0aGUgd3JvbmcgdGltZSBhbmQgdGhlCiAgKiBoYXJkd2FyZSBpcyBkb29tZWQgdG8gc2VuZCBhbGwgYWxyZWFkeS1xdWV1ZWQgZnJhbWVzIGF0IHN1Ym9wdGltYWwKLSAqIHJhdGVzLiBUaGlzIGluIHR1cm4gbGVhZHMgdG8gYW4gZW5vdXJtb3VzIGFtb3VudCBvZiB1bnN1Y2Nlc3NmdWwKKyAqIHJhdGVzLiBUaGlzIGluIHR1cm4gbGVhZHMgdG8gYW4gZW5vcm1vdXMgYW1vdW50IG9mIHVuc3VjY2Vzc2Z1bAogICogcmV0cmllcyA9PiBMYXRlbmN5IGdvZXMgdXAsIHdoZXJlYXMgdGhlIHRocm91Z2hwdXQgZ29lcyBkb3duLiBDUkFTSCEKICAqLwogI2RlZmluZSBDQVJMOTE3MF9OVU1fVFhfTElNSVRfSEFSRAkoKEFSOTE3MF9UWFFfREVQVEggKiAzKSAvIDIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMKaW5kZXggYjZiMGRlNi4uYjZhZTBlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYwpAQCAtNDI3LDcgKzQyNyw3IEBACiAKIC8qCiAgKiBpbml0aWFsaXplIHNvbWUgcGh5IHJlZ3MgZnJvbSBlZXByb20gdmFsdWVzIGluIG1vZGFsX2hlYWRlcltdCi0gKiBhY2MuIHRvIGJhbmQgYW5kIGJhbmR3aXRoCisgKiBhY2MuIHRvIGJhbmQgYW5kIGJhbmR3aWR0aAogICovCiBzdGF0aWMgaW50IGNhcmw5MTcwX2luaXRfcGh5X2Zyb21fZWVwcm9tKHN0cnVjdCBhcjkxNzAgKmFyLAogCQkJCWJvb2wgaXNfMmdoeiwgYm9vbCBpc180MG1oeikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3J4LmMKaW5kZXggODQ4NjZhNC4uZWMyMWVhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3J4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3J4LmMKQEAgLTg0OSw3ICs4NDksNyBAQAogCQkJCS8qCiAJCQkJICogbmVzdGVkIGNhcmw5MTcwX3J4X3N0cmVhbSBjYWxsIQogCQkJCSAqCi0JCQkJICogdGVybWluYXRpb24gaXMgZ3VyYW50ZWVkLCBldmVuIHdoZW4gdGhlCisJCQkJICogdGVybWluYXRpb24gaXMgZ3VhcmFudGVlZCwgZXZlbiB3aGVuIHRoZQogCQkJCSAqIGNvbWJpbmVkIGZyYW1lIGFsc28gaGF2ZSBhbiBlbGVtZW50IHdpdGgKIAkJCQkgKiBhIGJhZCB0YWcuCiAJCQkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmMKaW5kZXggZjgyYzQwMC4uMmZiNTNkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC91c2IuYwpAQCAtNDMwLDcgKzQzMCw3IEBACiAJCQkgKiBUaGUgc3lzdGVtIGlzIHRvbyBzbG93IHRvIGNvcGUgd2l0aAogCQkJICogdGhlIGVub3Jtb3VzIHdvcmtsb2FkLiBXZSBoYXZlIHNpbXBseQogCQkJICogcnVuIG91dCBvZiBhY3RpdmUgcnggdXJicyBhbmQgdGhpcwotCQkJICogdW5mb3J0dW5hdGx5IGxlYWRzIHRvIGFuIHVucHJlZGljdGFibGUKKwkJCSAqIHVuZm9ydHVuYXRlbHkgbGVhZHMgdG8gYW4gdW5wcmVkaWN0YWJsZQogCQkJICogZGV2aWNlLgogCQkJICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2h3LmMKaW5kZXggMTgzYzI4Mi4uY2MxMWQ2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2h3LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2h3LmMKQEAgLTg2LDcgKzg2LDcgQEAKICAqIElGUkFNRS0wMTogIDAxMTAKICAqCiAgKiBBbiBlYXN5IGV5ZS1pbnNwZWNpdG9uIG9mIHRoaXMgYWxyZWFkeSBzaG91bGQgdGVsbCB5b3UgdGhhdCB0aGlzIGZyYW1lCi0gKiB3aWxsIG5vdCBwYXNzIG91ciBjaGVjay4gVGhpcyBpcyBiZWFjdXNlIHRoZSBic3NpZF9tYXNrIHRlbGxzIHRoZQorICogd2lsbCBub3QgcGFzcyBvdXIgY2hlY2suIFRoaXMgaXMgYmVjYXVzZSB0aGUgYnNzaWRfbWFzayB0ZWxscyB0aGUKICAqIGhhcmR3YXJlIHRvIG9ubHkgbG9vayBhdCB0aGUgc2Vjb25kIGxlYXN0IHNpZ25pZmljYW50IGJpdCBhbmQgdGhlCiAgKiBjb21tb24gYml0IGFtb25nc3QgdGhlIE1BQyBhbmQgQlNTSURzIGlzIDAsIHRoaXMgZnJhbWUgaGFzIHRoZSAybmQgTFNCCiAgKiBhcyAxLCB3aGljaCBkb2VzIG5vdCBtYXRjaCAwLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKaW5kZXggZjgyOGYyOS4uMGUxYjg3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCkBAIC0yNjgsNyArMjY4LDcgQEAKIAl9CiAKIAkvKgotCSAqIElmIGEgY291bnRyeSBJRSBoYXMgYmVlbiByZWNpZXZlZCBjaGVjayBpdHMgcnVsZSBmb3IgdGhpcworCSAqIElmIGEgY291bnRyeSBJRSBoYXMgYmVlbiByZWNlaXZlZCBjaGVjayBpdHMgcnVsZSBmb3IgdGhpcwogCSAqIGNoYW5uZWwgZmlyc3QgYmVmb3JlIGVuYWJsaW5nIGFjdGl2ZSBzY2FuLiBUaGUgcGFzc2l2ZSBzY2FuCiAJICogd291bGQgaGF2ZSBiZWVuIGVuZm9yY2VkIGJ5IHRoZSBpbml0aWFsIHByb2Nlc3Npbmcgb2Ygb3VyCiAJICogY3VzdG9tIHJlZ3VsYXRvcnkgZG9tYWluLgpAQCAtNDc2LDcgKzQ3Niw3IEBACiAJCXdpcGh5LT5mbGFncyB8PSBXSVBIWV9GTEFHX0NVU1RPTV9SRUdVTEFUT1JZOwogCX0gZWxzZSB7CiAJCS8qCi0JCSAqIFRoaXMgZ2V0cyBhcHBsaWVkIGluIHRoZSBjYXNlIG9mIHRoZSBhYnNlbnNlIG9mIENSREEsCisJCSAqIFRoaXMgZ2V0cyBhcHBsaWVkIGluIHRoZSBjYXNlIG9mIHRoZSBhYnNlbmNlIG9mIENSREEsCiAJCSAqIGl0J3Mgb3VyIG93biBjdXN0b20gd29ybGQgcmVndWxhdG9yeSBkb21haW4sIHNpbWlsYXIgdG8KIAkJICogY2ZnODAyMTEncyBidXQgd2UgZW5hYmxlIHBhc3NpdmUgc2Nhbm5pbmcuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsLmMKaW5kZXggNDZlMzgyZS4uMzlhMTFlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC5jCkBAIC00MzksNyArNDM5LDcgQEAKIH07CiAKIHN0cnVjdCBhdG1lbF9wcml2YXRlIHsKLQl2b2lkICpjYXJkOyAvKiBCdXMgZGVwZW5kZW50IHN0dWN0dXJlIHZhcmllcyBmb3IgUENjYXJkICovCisJdm9pZCAqY2FyZDsgLyogQnVzIGRlcGVuZGVudCBzdHJ1Y3R1cmUgdmFyaWVzIGZvciBQQ2NhcmQgKi8KIAlpbnQgKCpwcmVzZW50X2NhbGxiYWNrKSh2b2lkICopOyAvKiBBbmQgY2FsbGJhY2sgd2hpY2ggdXNlcyBpdCAqLwogCWNoYXIgZmlybXdhcmVfaWRbMzJdOwogCUF0bWVsRldUeXBlIGZpcm13YXJlX3R5cGU7CkBAIC0zODk1LDcgKzM4OTUsNyBAQAogCiAJICAgVGhpcyByb3V0aW5lIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGluaXRpYWxpc2luZyBzb21lCiAJICAgaGFyZHdhcmUtc3BlY2lmaWMgZmllbGRzIGluIHRoZSBhdG1lbF9wcml2YXRlIHN0cnVjdHVyZSwKLQkgICBpbmNsdWRpbmcgYSBjb3B5IG9mIHRoZSBmaXJtd2FyZSdzIGhvc3RpbmZvIHN0dWN0dXJlCisJICAgaW5jbHVkaW5nIGEgY29weSBvZiB0aGUgZmlybXdhcmUncyBob3N0aW5mbyBzdHJ1Y3R1cmUKIAkgICB3aGljaCBpcyB0aGUgcm91dGUgaW50byB0aGUgcmVzdCBvZiB0aGUgZmlybXdhcmUgZGF0YXN0cnVjdHVyZXMuICovCiAKIAlzdHJ1Y3QgYXRtZWxfcHJpdmF0ZSAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbF9jcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWxfY3MuYwppbmRleCBjOTZlMTlkLi4wNTI2MzUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbF9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsX2NzLmMKQEAgLTk5LDcgKzk5LDcgQEAKIH0KIAogLyogQ2FsbC1iYWNrIGZ1bmN0aW9uIHRvIGludGVycm9nYXRlIFBDTUNJQS1zcGVjaWZpYyBpbmZvcm1hdGlvbgotICAgYWJvdXQgdGhlIGN1cnJlbnQgZXhpc3RhbmNlIG9mIHRoZSBjYXJkICovCisgICBhYm91dCB0aGUgY3VycmVudCBleGlzdGVuY2Ugb2YgdGhlIGNhcmQgKi8KIHN0YXRpYyBpbnQgY2FyZF9wcmVzZW50KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgcGNtY2lhX2RldmljZSAqbGluayA9IChzdHJ1Y3QgcGNtY2lhX2RldmljZSAqKWFyZzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaAppbmRleCBiZDRjYjc1Li4yMjlmNDM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2I0My5oCkBAIC02NDgsNyArNjQ4LDcgQEAKIAljaGFyIGVycm9yc1tCNDNfTlJfRldUWVBFU11bMTI4XTsKIAkvKiBUZW1wb3JhcnkgYnVmZmVyIGZvciBzdG9yaW5nIHRoZSBmaXJtd2FyZSBuYW1lLiAqLwogCWNoYXIgZnduYW1lWzY0XTsKLQkvKiBBIGZhdGFsIGVycm9yIG9jY3VyZWQgd2hpbGUgcmVxdWVzdGluZy4gRmlybXdhcmUgcmVxZXN0CisJLyogQSBmYXRhbCBlcnJvciBvY2N1cnJlZCB3aGlsZSByZXF1ZXN0aW5nLiBGaXJtd2FyZSByZXFlc3QKIAkgKiBjYW4gbm90IGNvbnRpbnVlLCBhcyBhbnkgb3RoZXIgcmVxZXN0IHdpbGwgYWxzbyBmYWlsLiAqLwogCWludCBmYXRhbF9mYWlsdXJlOwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jCmluZGV4IDU3ZWI1YjYuLmQ1OWIwMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL21haW4uYwpAQCAtNDAxMCw3ICs0MDEwLDcgQEAKIAliNDNfbWFjX2VuYWJsZShkZXYpOwogCWI0M193cml0ZTMyKGRldiwgQjQzX01NSU9fR0VOX0lSUV9NQVNLLCBkZXYtPmlycV9tYXNrKTsKIAotCS8qIFN0YXJ0IG1haW50YWluYW5jZSB3b3JrICovCisJLyogU3RhcnQgbWFpbnRlbmFuY2Ugd29yayAqLwogCWI0M19wZXJpb2RpY190YXNrc19zZXR1cChkZXYpOwogCiAJYjQzX2xlZHNfaW5pdChkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2cuaAppbmRleCA4NTY5ZmRkLi41NDEzYzkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2cuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X2cuaApAQCAtMTY0LDcgKzE2NCw3IEBACiAJLyogQ3VycmVudCBJbnRlcmZlcmVuY2UgTWl0aWdhdGlvbiBtb2RlICovCiAJaW50IGludGVyZm1vZGU7CiAJLyogU3RhY2sgb2Ygc2F2ZWQgdmFsdWVzIGZyb20gdGhlIEludGVyZmVyZW5jZSBNaXRpZ2F0aW9uIGNvZGUuCi0JICogRWFjaCB2YWx1ZSBpbiB0aGUgc3RhY2sgaXMgbGF5ZWQgb3V0IGFzIGZvbGxvd3M6CisJICogRWFjaCB2YWx1ZSBpbiB0aGUgc3RhY2sgaXMgbGFpZCBvdXQgYXMgZm9sbG93czoKIAkgKiBiaXQgMC0xMTogIG9mZnNldAogCSAqIGJpdCAxMi0xNTogcmVnaXN0ZXIgSUQKIAkgKiBiaXQgMTYtMzI6IHZhbHVlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfbi5oCmluZGV4IDAwMWU4NDEuLmU3ODlhODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfbi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfbi5oCkBAIC03MDMsNyArNzAzLDcgQEAKICNkZWZpbmUgQjQzX05QSFlfQ0hBTl9FU1RIQU5HCQkJQjQzX1BIWV9OKDB4MjFEKSAvKiBDaGFubmVsIGVzdGltYXRlIGhhbmcgKi8KICNkZWZpbmUgQjQzX05QSFlfRklORVJYMl9DR0MJCQlCNDNfUEhZX04oMHgyMjEpIC8qIEZpbmUgUlggMiBjbG9jayBnYXRlIGNvbnRyb2wgKi8KICNkZWZpbmUgIEI0M19OUEhZX0ZJTkVSWDJfQ0dDX0RFQ0dDCQkweDAwMDggLyogRGVjb2RlIGdhdGVkIGNsb2NrcyAqLwotI2RlZmluZSBCNDNfTlBIWV9UWFBDVExfSU5JVAkJCUI0M19QSFlfTigweDIyMikgLyogVFggcG93ZXIgY29udHJvbGwgaW5pdCAqLworI2RlZmluZSBCNDNfTlBIWV9UWFBDVExfSU5JVAkJCUI0M19QSFlfTigweDIyMikgLyogVFggcG93ZXIgY29udHJvbCBpbml0ICovCiAjZGVmaW5lICBCNDNfTlBIWV9UWFBDVExfSU5JVF9QSURYSTEJCTB4MDBGRiAvKiBQb3dlciBpbmRleCBpbml0IDEgKi8KICNkZWZpbmUgIEI0M19OUEhZX1RYUENUTF9JTklUX1BJRFhJMV9TSElGVAkwCiAjZGVmaW5lIEI0M19OUEhZX1BBUERfRU4wCQkJQjQzX1BIWV9OKDB4Mjk3KSAvKiBQQVBEIEVuYWJsZTAgVEJEICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvYjQzbGVnYWN5LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvYjQzbGVnYWN5LmgKaW5kZXggYzgxYjJmNS4uMjM1ODNiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2I0M2xlZ2FjeS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9iNDNsZWdhY3kuaApAQCAtNDg4LDcgKzQ4OCw3IEBACiAJLyogQ3VycmVudCBJbnRlcmZlcmVuY2UgTWl0aWdhdGlvbiBtb2RlICovCiAJaW50IGludGVyZm1vZGU7CiAJLyogU3RhY2sgb2Ygc2F2ZWQgdmFsdWVzIGZyb20gdGhlIEludGVyZmVyZW5jZSBNaXRpZ2F0aW9uIGNvZGUuCi0JICogRWFjaCB2YWx1ZSBpbiB0aGUgc3RhY2sgaXMgbGF5ZWQgb3V0IGFzIGZvbGxvd3M6CisJICogRWFjaCB2YWx1ZSBpbiB0aGUgc3RhY2sgaXMgbGFpZCBvdXQgYXMgZm9sbG93czoKIAkgKiBiaXQgMC0xMTogIG9mZnNldAogCSAqIGJpdCAxMi0xNTogcmVnaXN0ZXIgSUQKIAkgKiBiaXQgMTYtMzI6IHZhbHVlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmMKaW5kZXggMThkNjNmNS4uM2QwNWRjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuYwpAQCAtMjM1OSw3ICsyMzU5LDcgQEAKIH0KIAogCi0vKiBUcmFuc2xhdGUgb3VyIGxpc3Qgb2YgQWNjZXNzIFBvaW50cyAmIFN0YXRpb25zIHRvIGEgY2FyZCBpbmRlcGVuZGFudAorLyogVHJhbnNsYXRlIG91ciBsaXN0IG9mIEFjY2VzcyBQb2ludHMgJiBTdGF0aW9ucyB0byBhIGNhcmQgaW5kZXBlbmRlbnQKICAqIGZvcm1hdCB0aGF0IHRoZSBXaXJlbGVzcyBUb29scyB3aWxsIHVuZGVyc3RhbmQgLSBKZWFuIElJICovCiBpbnQgcHJpc20yX2FwX3RyYW5zbGF0ZV9zY2FuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgIHN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sIGNoYXIgKmJ1ZmZlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuaAppbmRleCA2NTVjZWViLi4zMzRlMmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5oCkBAIC0xMTQsNyArMTE0LDcgQEAKICAqIGhhcyBwYXNzZWQgc2luY2UgbGFzdCByZWNlaXZlZCBmcmFtZSBmcm9tIHRoZSBzdGF0aW9uLCBhIG51bGxmdW5jIGRhdGEKICAqIGZyYW1lIGlzIHNlbnQgdG8gdGhlIHN0YXRpb24uIElmIHRoaXMgZnJhbWUgaXMgbm90IGFja25vd2xlZGdlZCBhbmQgbm8gb3RoZXIKICAqIGZyYW1lcyBoYXZlIGJlZW4gcmVjZWl2ZWQsIHRoZSBzdGF0aW9uIHdpbGwgYmUgZGlzYXNzb2NpYXRlZCBhZnRlcgotICogQVBfRElTQVNTT0NfREVMQVkuIFNpbWlsYXJpbHksIGEgdGhlIHN0YXRpb24gd2lsbCBiZSBkZWF1dGhlbnRpY2F0ZWQgYWZ0ZXIKKyAqIEFQX0RJU0FTU09DX0RFTEFZLiBTaW1pbGFybHksIGEgdGhlIHN0YXRpb24gd2lsbCBiZSBkZWF1dGhlbnRpY2F0ZWQgYWZ0ZXIKICAqIEFQX0RFQVVUSF9ERUxBWS4gQVBfVElNRU9VVF9SRVNPTFVUSU9OIGlzIHRoZSByZXNvbHV0aW9uIHRoYXQgaXMgdXNlZCB3aXRoCiAgKiBtYXggaW5hY3Rpdml0eSB0aW1lci4gKi8KICNkZWZpbmUgQVBfTUFYX0lOQUNUSVZJVFlfU0VDICg1ICogNjApCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2lvY3RsLmMKaW5kZXggNjAzODYzMy4uMTJkZTQ2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9pb2N0bC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfaW9jdGwuYwpAQCAtMTk0NSw3ICsxOTQ1LDcgQEAKIH0KIAogCi0vKiBUcmFuc2xhdGUgc2NhbiBkYXRhIHJldHVybmVkIGZyb20gdGhlIGNhcmQgdG8gYSBjYXJkIGluZGVwZW5kYW50CisvKiBUcmFuc2xhdGUgc2NhbiBkYXRhIHJldHVybmVkIGZyb20gdGhlIGNhcmQgdG8gYSBjYXJkIGluZGVwZW5kZW50CiAgKiBmb3JtYXQgdGhhdCB0aGUgV2lyZWxlc3MgVG9vbHMgd2lsbCB1bmRlcnN0YW5kIC0gSmVhbiBJSSAqLwogc3RhdGljIGlubGluZSBpbnQgcHJpc20yX3RyYW5zbGF0ZV9zY2FuKGxvY2FsX2luZm9fdCAqbG9jYWwsCiAJCQkJCXN0cnVjdCBpd19yZXF1ZXN0X2luZm8gKmluZm8sCkBAIC0yMDQzLDcgKzIwNDMsNyBAQAogCQkgKiB1bnRpbCByZXN1bHRzIGFyZSByZWFkeSBmb3IgdmFyaW91cyByZWFzb25zLgogCQkgKiBGaXJzdCwgbWFuYWdpbmcgd2FpdCBxdWV1ZXMgaXMgY29tcGxleCBhbmQgcmFjeQogCQkgKiAodGhlcmUgbWF5IGJlIG11bHRpcGxlIHNpbXVsdGFuZW91cyBjYWxsZXJzKS4KLQkJICogU2Vjb25kLCB3ZSBncmFiIHNvbWUgcnRuZXRsaW5rIGxvY2sgYmVmb3JlIGNvbW1pbmcKKwkJICogU2Vjb25kLCB3ZSBncmFiIHNvbWUgcnRuZXRsaW5rIGxvY2sgYmVmb3JlIGNvbWluZwogCQkgKiBoZXJlIChpbiBkZXZfaW9jdGwoKSkuCiAJCSAqIFRoaXJkLCB0aGUgY2FsbGVyIGNhbiB3YWl0IG9uIHRoZSBXaXJlbGVzcyBFdmVudAogCQkgKiAtIEplYW4gSUkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfd2xhbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF93bGFuLmgKaW5kZXggMWM2NmIzYy4uODhkYzZhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF93bGFuLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF93bGFuLmgKQEAgLTg1Myw3ICs4NTMsNyBAQAogCXN0cnVjdCB3b3JrX3N0cnVjdCBjb21tc19xdWFsX3VwZGF0ZTsKIAogCS8qIFJTU0kgdG8gZEJtIGFkanVzdG1lbnQgKGZvciBSWCBkZXNjcmlwdG9yIGZpZWxkcykgKi8KLQlpbnQgcnNzaV90b19kQm07IC8qIHN1YnN0cmFjdCBmcm9tIFJTU0kgdG8gZ2V0IGFwcHJveGltYXRlIGRCbSB2YWx1ZSAqLworCWludCByc3NpX3RvX2RCbTsgLyogc3VidHJhY3QgZnJvbSBSU1NJIHRvIGdldCBhcHByb3hpbWF0ZSBkQm0gdmFsdWUgKi8KIAogCS8qIEJTUyBsaXN0IC8gcHJvdGVjdGVkIGJ5IGxvY2FsLT5sb2NrICovCiAJc3RydWN0IGxpc3RfaGVhZCBic3NfbGlzdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjEwMC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMTAwLmMKaW5kZXggNGI5N2Y5MS4uNDQzMDc3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMTAwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMTAwLmMKQEAgLTYzLDcgKzYzLDcgQEAKIGZpcm13YXJlIGlmIGEgQ29tbWFuZCBvciBEYXRhIGlzIGJlaW5nIHNlbnQuICBJZiBpdCBpcyBDb21tYW5kLCBhbGwgb2YgdGhlCiBjb21tYW5kIGluZm9ybWF0aW9uIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgcmVmZXJyZWQgdG8gYnkgdGhlCiBUQkQuICBJZiBpdCBpcyBEYXRhLCB0aGUgZmlyc3QgVEJEIGluZGljYXRlcyB0aGUgdHlwZSBvZiBkYXRhIHBhY2tldCwgbnVtYmVyCi1vZiBmcmFnbWVudHMsIGV0Yy4gIFRoZSBuZXh0IFRCRCB0aGVuIHJlZmVycnMgdG8gdGhlIGFjdHVhbCBwYWNrZXQgbG9jYXRpb24uCitvZiBmcmFnbWVudHMsIGV0Yy4gIFRoZSBuZXh0IFRCRCB0aGVuIHJlZmVycyB0byB0aGUgYWN0dWFsIHBhY2tldCBsb2NhdGlvbi4KIAogVGhlIFR4IGZsb3cgY3ljbGUgaXMgYXMgZm9sbG93czoKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMjAwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIyMDAuYwppbmRleCAxNjA4ODFmLi40MmMzZmUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIyMDAuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIyMDAuYwpAQCAtMTE4MSw3ICsxMTgxLDcgQEAKIC8qCiAgKiBUaGUgZm9sbG93aW5nIGFkZHMgYSBuZXcgYXR0cmlidXRlIHRvIHRoZSBzeXNmcyByZXByZXNlbnRhdGlvbgogICogb2YgdGhpcyBkZXZpY2UgZHJpdmVyIChpLmUuIGEgbmV3IGZpbGUgaW4gL3N5cy9idXMvcGNpL2RyaXZlcnMvaXB3LykKLSAqIHVzZWQgZm9yIGNvbnRyb2xpbmcgdGhlIGRlYnVnIGxldmVsLgorICogdXNlZCBmb3IgY29udHJvbGxpbmcgdGhlIGRlYnVnIGxldmVsLgogICoKICAqIFNlZSB0aGUgbGV2ZWwgZGVmaW5pdGlvbnMgaW4gaXB3IGZvciBkZXRhaWxzLgogICovCkBAIC0zNzYzLDcgKzM3NjMsNyBAQAogCiAJcS0+dHhiID0ga21hbGxvYyhzaXplb2YocS0+dHhiWzBdKSAqIGNvdW50LCBHRlBfS0VSTkVMKTsKIAlpZiAoIXEtPnR4YikgewotCQlJUFdfRVJST1IoInZtYWxsb2MgZm9yIGF1eGlsYXJ5IEJEIHN0cnVjdHVyZXMgZmFpbGVkXG4iKTsKKwkJSVBXX0VSUk9SKCJ2bWFsbG9jIGZvciBhdXhpbGlhcnkgQkQgc3RydWN0dXJlcyBmYWlsZWRcbiIpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKQEAgLTU1ODEsNyArNTU4MSw3IEBACiAJCXJldHVybiAwOwogCX0KIAotCS8qIFZlcmlmeSBwcml2YWN5IGNvbXBhdGFiaWxpdHkgKi8KKwkvKiBWZXJpZnkgcHJpdmFjeSBjb21wYXRpYmlsaXR5ICovCiAJaWYgKCgocHJpdi0+Y2FwYWJpbGl0eSAmIENBUF9QUklWQUNZX09OKSA/IDEgOiAwKSAhPQogCSAgICAoKG5ldHdvcmstPmNhcGFiaWxpdHkgJiBXTEFOX0NBUEFCSUxJVFlfUFJJVkFDWSkgPyAxIDogMCkpIHsKIAkJSVBXX0RFQlVHX01FUkdFKCJOZXR3b3JrICclcyAoJXBNKScgZXhjbHVkZWQgIgpAQCAtNTgwOCw3ICs1ODA4LDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JLyogVmVyaWZ5IHByaXZhY3kgY29tcGF0YWJpbGl0eSAqLworCS8qIFZlcmlmeSBwcml2YWN5IGNvbXBhdGliaWxpdHkgKi8KIAlpZiAoKChwcml2LT5jYXBhYmlsaXR5ICYgQ0FQX1BSSVZBQ1lfT04pID8gMSA6IDApICE9CiAJICAgICgobmV0d29yay0+Y2FwYWJpbGl0eSAmIFdMQU5fQ0FQQUJJTElUWV9QUklWQUNZKSA/IDEgOiAwKSkgewogCQlJUFdfREVCVUdfQVNTT0MoIk5ldHdvcmsgJyVzICglcE0pJyBleGNsdWRlZCAiCkBAIC04MTg0LDcgKzgxODQsNyBAQAogc3RhdGljIGludCBpc19uZXR3b3JrX3BhY2tldChzdHJ1Y3QgaXB3X3ByaXYgKnByaXYsCiAJCQkJICAgIHN0cnVjdCBsaWJpcHdfaGRyXzRhZGRyICpoZWFkZXIpCiB7Ci0JLyogRmlsdGVyIGluY29taW5nIHBhY2tldHMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHRhcmdldHRlZCB0b3dhcmQKKwkvKiBGaWx0ZXIgaW5jb21pbmcgcGFja2V0cyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgdGFyZ2V0ZWQgdG93YXJkCiAJICogdGhpcyBuZXR3b3JrLCBkaXNjYXJkaW5nIHBhY2tldHMgY29taW5nIGZyb20gb3Vyc2VsdmVzICovCiAJc3dpdGNoIChwcml2LT5pZWVlLT5pd19tb2RlKSB7CiAJY2FzZSBJV19NT0RFX0FESE9DOgkvKiBIZWFkZXI6IERlc3QuIHwgU291cmNlICAgIHwgQlNTSUQgKi8KQEAgLTgzNDAsOSArODM0MCw5IEBACiB9CiAKIC8qCi0gKiBNYWluIGVudHJ5IGZ1bmN0aW9uIGZvciByZWNpZXZpbmcgYSBwYWNrZXQgd2l0aCA4MDIxMSBoZWFkZXJzLiAgVGhpcworICogTWFpbiBlbnRyeSBmdW5jdGlvbiBmb3IgcmVjZWl2aW5nIGEgcGFja2V0IHdpdGggODAyMTEgaGVhZGVycy4gIFRoaXMKICAqIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBldmVyIHRoZSBGVyBoYXMgbm90aWZpZWQgdXMgdGhhdCB0aGVyZSBpcyBhIG5ldwotICogc2tiIGluIHRoZSByZWNpZXZlIHF1ZXVlLgorICogc2tiIGluIHRoZSByZWNlaXZlIHF1ZXVlLgogICovCiBzdGF0aWMgdm9pZCBpcHdfcngoc3RydWN0IGlwd19wcml2ICpwcml2KQogewpAQCAtODY4Myw3ICs4NjgzLDcgQEAKICAqIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGlwd19tYWluIHRvIHByb3ZpZGUgdGhlIEhXIGludGVyYWN0aW9uLgogICoKICAqIFRoZSBleGNlcHRpb24gdG8gdGhpcyBpcyB0aGUgdXNlIG9mIHRoZSBpcHdfZ2V0X29yZGluYWwoKQotICogZnVuY3Rpb24gdXNlZCB0byBwb2xsIHRoZSBoYXJkd2FyZSB2cy4gbWFraW5nIHVuZWNlc3NhcnkgY2FsbHMuCisgKiBmdW5jdGlvbiB1c2VkIHRvIHBvbGwgdGhlIGhhcmR3YXJlIHZzLiBtYWtpbmcgdW5uZWNlc3NhcnkgY2FsbHMuCiAgKgogICovCiAKQEAgLTEwNDE5LDcgKzEwNDE5LDcgQEAKIAogCW1lbXNldCgmZHVtbXlzdGF0cywgMCwgc2l6ZW9mKGR1bW15c3RhdHMpKTsKIAotCS8qIEZpbHRlcmluZyBvZiBmcmFnbWVudCBjaGFpbnMgaXMgZG9uZSBhZ2FpbnMgdGhlIGZpcnN0IGZyYWdtZW50ICovCisJLyogRmlsdGVyaW5nIG9mIGZyYWdtZW50IGNoYWlucyBpcyBkb25lIGFnYWluc3QgdGhlIGZpcnN0IGZyYWdtZW50ICovCiAJaGRyID0gKHZvaWQgKil0eGItPmZyYWdtZW50c1swXS0+ZGF0YTsKIAlpZiAobGliaXB3X2lzX21hbmFnZW1lbnQobGUxNl90b19jcHUoaGRyLT5mcmFtZV9jb250cm9sKSkpIHsKIAkJaWYgKGZpbHRlciAmIElQV19QUk9NX05PX01HTVQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2xpYmlwd19yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9saWJpcHdfcnguYwppbmRleCAwZGUxYjE4Li5lNWFkNzZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2xpYmlwd19yeC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvbGliaXB3X3J4LmMKQEAgLTkyNSw3ICs5MjUsNyBAQAogc3RhdGljIHU4IHFvc19vdWlbUU9TX09VSV9MRU5dID0geyAweDAwLCAweDUwLCAweEYyIH07CiAKIC8qCi0qIE1ha2UgdGhlciBzdHJ1Y3R1cmUgd2UgcmVhZCBmcm9tIHRoZSBiZWFjb24gcGFja2V0IGhhcworKiBNYWtlIHRoZSBzdHJ1Y3R1cmUgd2UgcmVhZCBmcm9tIHRoZSBiZWFjb24gcGFja2V0IHRvIGhhdmUKICogdGhlIHJpZ2h0IHZhbHVlcwogKi8KIHN0YXRpYyBpbnQgbGliaXB3X3ZlcmlmeV9xb3NfaW5mbyhzdHJ1Y3QgbGliaXB3X3Fvc19pbmZvcm1hdGlvbl9lbGVtZW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWNvcmUuYwppbmRleCBkNDE4YjY0Li4xYzNhOGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1jb3JlLmMKQEAgLTEwMzAsNyArMTAzMCw3IEBACiAJLyoKIAkgKiBFbmFibGUgSEFQIElOVEEgKGludGVycnVwdCBmcm9tIG1hbmFnZW1lbnQgYnVzKSB0bwogCSAqIHdha2UgZGV2aWNlJ3MgUENJIEV4cHJlc3MgbGluayBMMWEgLT4gTDBzCi0JICogTk9URTogIFRoaXMgaXMgbm8tb3AgZm9yIDM5NDUgKG5vbi1leGlzdGFudCBiaXQpCisJICogTk9URTogIFRoaXMgaXMgbm8tb3AgZm9yIDM5NDUgKG5vbi1leGlzdGVudCBiaXQpCiAJICovCiAJaXdsX2xlZ2FjeV9zZXRfYml0KHByaXYsIENTUl9IV19JRl9DT05GSUdfUkVHLAogCQkJCSAgICBDU1JfSFdfSUZfQ09ORklHX1JFR19CSVRfSEFQX1dBS0VfTDFBKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1maC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWZoLmgKaW5kZXggNGUyMGM3ZS4uNmU2MDkxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWZoLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWZoLmgKQEAgLTQzNiw3ICs0MzYsNyBAQAogICogQGZpbmlzaGVkX3JiX251bSBbMDoxMV0gLSBJbmRpY2F0ZXMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IFJCCiAgKiAJaW4gd2hpY2ggdGhlIGxhc3QgZnJhbWUgd2FzIHdyaXR0ZW4gdG8KICAqIEBmaW5pc2hlZF9mcl9udW0gWzA6MTFdIC0gSW5kaWNhdGVzIHRoZSBpbmRleCBvZiB0aGUgUlggRnJhbWUKLSAqIAl3aGljaCB3YXMgdHJhbnNmZXJlZAorICogCXdoaWNoIHdhcyB0cmFuc2ZlcnJlZAogICovCiBzdHJ1Y3QgaXdsX3JiX3N0YXR1cyB7CiAJX19sZTE2IGNsb3NlZF9yYl9udW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc2Nhbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXNjYW4uYwppbmRleCA2MGY1OTdmLi4zNTMyMzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc2Nhbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zY2FuLmMKQEAgLTE0Myw3ICsxNDMsNyBAQAogCQlJV0xfREVCVUdfU0NBTihwcml2LCAiU2VuZCBzY2FuIGFib3J0IGZhaWxlZCAlZFxuIiwgcmV0KTsKIAkJaXdsX2xlZ2FjeV9mb3JjZV9zY2FuX2VuZChwcml2KTsKIAl9IGVsc2UKLQkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlN1Y2Vzc2Z1bGx5IHNlbmQgc2NhbiBhYm9ydFxuIik7CisJCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTdWNjZXNzZnVsbHkgc2VuZCBzY2FuIGFib3J0XG4iKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc3RhLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc3RhLmMKaW5kZXggNDdjOWRhMy4uNjZmMGZiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXN0YS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zdGEuYwpAQCAtMTEwLDcgKzExMCw3IEBACiAJLyoKIAkgKiBYWFg6IFRoZSBNQUMgYWRkcmVzcyBpbiB0aGUgY29tbWFuZCBidWZmZXIgaXMgb2Z0ZW4gY2hhbmdlZCBmcm9tCiAJICogdGhlIG9yaWdpbmFsIHNlbnQgdG8gdGhlIGRldmljZS4gVGhhdCBpcywgdGhlIE1BQyBhZGRyZXNzCi0JICogd3JpdHRlbiB0byB0aGUgY29tbWFuZCBidWZmZXIgb2Z0ZW4gaXMgbm90IHRoZSBzYW1lIE1BQyBhZHJlc3MKKwkgKiB3cml0dGVuIHRvIHRoZSBjb21tYW5kIGJ1ZmZlciBvZnRlbiBpcyBub3QgdGhlIHNhbWUgTUFDIGFkZHJlc3MKIAkgKiByZWFkIGZyb20gdGhlIGNvbW1hbmQgYnVmZmVyIHdoZW4gdGhlIGNvbW1hbmQgcmV0dXJucy4gVGhpcwogCSAqIGlzc3VlIGhhcyBub3QgeWV0IGJlZW4gcmVzb2x2ZWQgYW5kIHRoaXMgZGVidWdnaW5nIGlzIGxlZnQgdG8KIAkgKiBvYnNlcnZlIHRoZSBwcm9ibGVtLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtYWduLWljdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtYWduLWljdC5jCmluZGV4IGI1Y2IzYmUuLmVkMDE0OGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWFnbi1pY3QuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24taWN0LmMKQEAgLTY5LDcgKzY5LDcgQEAKIAlpZiAoIXByaXYtPl9hZ24uaWN0X3RibF92aXIpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JLyogYWxpZ24gdGFibGUgdG8gUEFHRV9TSVpFIGJvdW5kcnkgKi8KKwkvKiBhbGlnbiB0YWJsZSB0byBQQUdFX1NJWkUgYm91bmRhcnkgKi8KIAlwcml2LT5fYWduLmFsaWduZWRfaWN0X3RibF9kbWEgPSBBTElHTihwcml2LT5fYWduLmljdF90YmxfZG1hLCBQQUdFX1NJWkUpOwogCiAJSVdMX0RFQlVHX0lTUihwcml2LCAiaWN0IGRtYSBhZGRyICVMeCBkbWEgYWxpZ25lZCAlTHggZGlmZiAlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWNvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWNvcmUuYwppbmRleCA2YzMwZmE2Li5iYWZiZTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1jb3JlLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29yZS5jCkBAIC0xMDQwLDcgKzEwNDAsNyBAQAogCS8qCiAJICogRW5hYmxlIEhBUCBJTlRBIChpbnRlcnJ1cHQgZnJvbSBtYW5hZ2VtZW50IGJ1cykgdG8KIAkgKiB3YWtlIGRldmljZSdzIFBDSSBFeHByZXNzIGxpbmsgTDFhIC0+IEwwcwotCSAqIE5PVEU6ICBUaGlzIGlzIG5vLW9wIGZvciAzOTQ1IChub24tZXhpc3RhbnQgYml0KQorCSAqIE5PVEU6ICBUaGlzIGlzIG5vLW9wIGZvciAzOTQ1IChub24tZXhpc3RlbnQgYml0KQogCSAqLwogCWl3bF9zZXRfYml0KHByaXYsIENTUl9IV19JRl9DT05GSUdfUkVHLAogCQkJCSAgICBDU1JfSFdfSUZfQ09ORklHX1JFR19CSVRfSEFQX1dBS0VfTDFBKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWZoLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1maC5oCmluZGV4IDU1YjgzNzAuLjQ3NDAwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWZoLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtZmguaApAQCAtNDM2LDcgKzQzNiw3IEBACiAgKiBAZmluaXNoZWRfcmJfbnVtIFswOjExXSAtIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgUkIKICAqIAlpbiB3aGljaCB0aGUgbGFzdCBmcmFtZSB3YXMgd3JpdHRlbiB0bwogICogQGZpbmlzaGVkX2ZyX251bSBbMDoxMV0gLSBJbmRpY2F0ZXMgdGhlIGluZGV4IG9mIHRoZSBSWCBGcmFtZQotICogCXdoaWNoIHdhcyB0cmFuc2ZlcmVkCisgKiAJd2hpY2ggd2FzIHRyYW5zZmVycmVkCiAgKi8KIHN0cnVjdCBpd2xfcmJfc3RhdHVzIHsKIAlfX2xlMTYgY2xvc2VkX3JiX251bTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXNjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXNjYW4uYwppbmRleCAzYTRkOWU2Li45MTRjNzdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc2Nhbi5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIAkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlNlbmQgc2NhbiBhYm9ydCBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCWl3bF9mb3JjZV9zY2FuX2VuZChwcml2KTsKIAl9IGVsc2UKLQkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlN1Y2Vzc2Z1bGx5IHNlbmQgc2NhbiBhYm9ydFxuIik7CisJCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTdWNjZXNzZnVsbHkgc2VuZCBzY2FuIGFib3J0XG4iKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvaGFsLmMKaW5kZXggOTA3YWM4OS4uMWNhYmNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdtYzMyMDB3aWZpL2hhbC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS9oYWwuYwpAQCAtNTcsNyArNTcsNyBAQAogICogICBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGUgaG9zdCB0YWxrcyBleGNsdXNpdmVseQogICogICB0byB0aGUgVU1BQyBhbmQgc28gdGhlcmUgbmVlZHMgdG8gYmUgYSBzcGVjaWFsIFVNQUMKICAqICAgY29tbWFuZCBmb3IgdGFsa2luZyB0byB0aGUgTE1BQy4KLSAqICAgVGhpcyBpcyBob3cgYSB3aWZpIGNvbW1hbmQgaXMgbGF5ZWQgb3V0OgorICogICBUaGlzIGlzIGhvdyBhIHdpZmkgY29tbWFuZCBpcyBsYWlkIG91dDoKICAqICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogICB8IGl3bV91ZG1hX291dF93aWZpX2hkciAgfAogICogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03Miw3ICs3Miw3IEBACiAgKiAgIFRob3NlIGNvbW1hbmRzIGFyZSBoYW5kbGVkIGJ5IHRoZSBkZXZpY2UncyBib290cm9tLAogICogICBhbmQgYXJlIHR5cGljYWxseSBzZW50IHdoZW4gdGhlIFVNQUMgYW5kIHRoZSBMTUFDCiAgKiAgIGFyZSBub3QgeWV0IGF2YWlsYWJsZS4KLSAqICAgICogICBUaGlzIGlzIGhvdyBhIG5vbi13aWZpIGNvbW1hbmQgaXMgbGF5ZWQgb3V0OgorICogICAgKiAgIFRoaXMgaXMgaG93IGEgbm9uLXdpZmkgY29tbWFuZCBpcyBsYWlkIG91dDoKICAqICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogICB8IGl3bV91ZG1hX291dF9ub253aWZpX2hkciAgfAogICogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS90eC5jCmluZGV4IDMyMTY2MjEuLmJlOTgwNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS90eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS90eC5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIAlzcGluX2xvY2soJml3bS0+dHhfY3JlZGl0LmxvY2spOwogCiAJaWYgKCFpd21fdHhfY3JlZGl0X29rKGl3bSwgaWQsIG5iKSkgewotCQlJV01fREJHX1RYKGl3bSwgREJHLCAiTm8gY3JlZGl0IGF2YWxpYWJsZSBmb3IgcG9vbFslZF1cbiIsIGlkKTsKKwkJSVdNX0RCR19UWChpd20sIERCRywgIk5vIGNyZWRpdCBhdmFpbGFibGUgZm9yIHBvb2xbJWRdXG4iLCBpZCk7CiAJCXJldCA9IC1FTk9TUEM7CiAJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRQppbmRleCA2MGZkMWFmLi4xNDUzZWVjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvUkVBRE1FCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRQpAQCAtNzAsNyArNzAsNyBAQAogCVRoZXNlIGNvbW1hbmRzIGFyZSB1c2VkIHRvIHJlYWQgdGhlIE1BQywgQkJQIGFuZCBSRiByZWdpc3RlcnMgZnJvbSB0aGUKIAljYXJkLiAgVGhlc2UgY29tbWFuZHMgdGFrZSBvbmUgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBvZmZzZXQKIAlsb2NhdGlvbiB0aGF0IGlzIHRvIGJlIHJlYWQuICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCBpbgotCWhleGFkZWNpbWFsIChpdHMgcG9zc2libGUgdG8gcHJlY2VlZCBwcmVjZWRpbmcgdGhlIG51bWJlciB3aXRoIGEgIjB4IikuCisJaGV4YWRlY2ltYWwgKGl0cyBwb3NzaWJsZSB0byBwcmVjZWRlIHByZWNlZGluZyB0aGUgbnVtYmVyIHdpdGggYSAiMHgiKS4KIAogCVBhdGg6IC9zeXMva2VybmVsL2RlYnVnL2xpYmVydGFzX3dpcmVsZXNzL2V0aFgvcmVnaXN0ZXJzLwogCkBAIC04NCw3ICs4NCw3IEBACiAJVGhlc2UgY29tbWFuZHMgYXJlIHVzZWQgdG8gd3JpdGUgdGhlIE1BQywgQkJQIGFuZCBSRiByZWdpc3RlcnMgaW4gdGhlCiAJY2FyZC4gIFRoZXNlIGNvbW1hbmRzIHRha2UgdHdvIHBhcmFtZXRlcnMgdGhhdCBzcGVjaWZ5IHRoZSBvZmZzZXQKIAlsb2NhdGlvbiBhbmQgdGhlIHZhbHVlIHRoYXQgaXMgdG8gYmUgd3JpdHRlbi4gVGhpcyBwYXJhbWV0ZXJzIG11c3QKLQliZSBzcGVjaWZpZWQgaW4gaGV4YWRlY2ltYWwgKGl0cyBwb3NzaWJsZSB0byBwcmVjZWVkIHRoZSBudW1iZXIKKwliZSBzcGVjaWZpZWQgaW4gaGV4YWRlY2ltYWwgKGl0cyBwb3NzaWJsZSB0byBwcmVjZWRlIHRoZSBudW1iZXIKIAl3aXRoIGEgIjB4IikuCiAKIAlVc2FnZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NmZy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY2ZnLmMKaW5kZXggMzBlZjAzNS4uNWNhYTJhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY2ZnLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY2ZnLmMKQEAgLTEzNTAsNyArMTM1MCw3IEBACiAJCSAqIHdlIHJlbW92ZSBhbGwga2V5cyBsaWtlIGluIHRoZSBXUEEvV1BBMiBzZXR1cCwKIAkJICogd2UganVzdCBkb24ndCBzZXQgUlNOLgogCQkgKgotCQkgKiBUaGVyZWZvcmU6IGZhbGwtdGhyb3VnaHQKKwkJICogVGhlcmVmb3JlOiBmYWxsLXRocm91Z2gKIAkJICovCiAJY2FzZSBXTEFOX0NJUEhFUl9TVUlURV9US0lQOgogCWNhc2UgV0xBTl9DSVBIRVJfU1VJVEVfQ0NNUDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX2NzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9jcy5jCmluZGV4IGZjODEyMTEuLjg3MTJjYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX2NzLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfY3MuYwpAQCAtOTEzLDcgKzkxMyw3IEBACiAJCWdvdG8gb3V0MzsKIAl9CiAKLQkvKiBDbGVhciBhbnkgaW50ZXJydXB0IGNhdXNlIHRoYXQgaGFwcGVuZCB3aGlsZSBzZW5kaW5nCisJLyogQ2xlYXIgYW55IGludGVycnVwdCBjYXVzZSB0aGF0IGhhcHBlbmVkIHdoaWxlIHNlbmRpbmcKIAkgKiBmaXJtd2FyZS9pbml0aWFsaXppbmcgY2FyZCAqLwogCWlmX2NzX3dyaXRlMTYoY2FyZCwgSUZfQ1NfQ0FSRF9JTlRfQ0FVU0UsIElGX0NTX0JJVF9NQVNLKTsKIAlpZl9jc19lbmFibGVfaW50cyhjYXJkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX3NwaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc3BpLmgKaW5kZXggOGIxNDE3ZC4uZDJhYzFkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc3BpLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc3BpLmgKQEAgLTY2LDcgKzY2LDcgQEAKICNkZWZpbmUgSUZfU1BJX0hPU1RfSU5UX0NUUkxfUkVHIDB4NDAJLyogSG9zdCBpbnRlcnJ1cHQgY29udHJvbGxlciByZWcgKi8KIAogI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfQ0FVU0VfUkVHIDB4NDQJLyogQ2FyZCBpbnRlcnJ1cHQgY2F1c2UgcmVnICovCi0jZGVmaW5lIElGX1NQSV9DQVJEX0lOVF9TVEFUVVNfUkVHIDB4NDggLyogQ2FyZCBpbnRlcnVwdCBzdGF0dXMgcmVnICovCisjZGVmaW5lIElGX1NQSV9DQVJEX0lOVF9TVEFUVVNfUkVHIDB4NDggLyogQ2FyZCBpbnRlcnJ1cHQgc3RhdHVzIHJlZyAqLwogI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfRVZFTlRfTUFTS19SRUcgMHg0QyAvKiBDYXJkIGludGVycnVwdCBldmVudCBtYXNrICovCiAjZGVmaW5lIElGX1NQSV9DQVJEX0lOVF9TVEFUVVNfTUFTS19SRUcJMHg1MCAvKiBDYXJkIGludGVycnVwdCBzdGF0dXMgbWFzayAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYwppbmRleCA1NmY0MzlkLi5mNGY0MjU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMKQEAgLTYyLDcgKzYyLDcgQEAKICAqIAlhbiBpbnRlcnNlY3Rpb24gdG8gb2NjdXIgYnV0IGVhY2ggZGV2aWNlIHdpbGwgc3RpbGwgdXNlIHRoZWlyCiAgKiAJcmVzcGVjdGl2ZSByZWd1bGF0b3J5IHJlcXVlc3RlZCBkb21haW5zLiBTdWJzZXF1ZW50IHJhZGlvcyB3aWxsCiAgKiAJdXNlIHRoZSByZXN1bHRpbmcgaW50ZXJzZWN0aW9uLgotICogQEhXU0lNX1JFR1RFU1RfV09STERfUk9BTTogVXNlZCBmb3IgdGVzdGluZyB0aGUgd29ybGQgcm9hbWluZy4gV2UgYWNvbXBsaXNoCisgKiBASFdTSU1fUkVHVEVTVF9XT1JMRF9ST0FNOiBVc2VkIGZvciB0ZXN0aW5nIHRoZSB3b3JsZCByb2FtaW5nLiBXZSBhY2NvbXBsaXNoCiAgKgl0aGlzIGJ5IHVzaW5nIGEgY3VzdG9tIGJlYWNvbi1jYXBhYmxlIHJlZ3VsYXRvcnkgZG9tYWluIGZvciB0aGUgZmlyc3QKICAqCXJhZGlvLiBBbGwgb3RoZXIgZGV2aWNlIHdvcmxkIHJvYW0uCiAgKiBASFdTSU1fUkVHVEVTVF9DVVNUT01fV09STEQ6IFVzZWQgZm9yIHRlc3RpbmcgdGhlIGN1c3RvbSB3b3JsZCByZWd1bGF0b3J5CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9vcmlub2NvL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9vcmlub2NvL2h3LmMKaW5kZXggYjQ3NzJjMS4uM2M3ODc3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvb3Jpbm9jby9ody5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL29yaW5vY28vaHcuYwpAQCAtMTAzMSw3ICsxMDMxLDcgQEAKIAllbHNlCiAJCWJ1Zi50c2NbNF0gPSAweDEwOwogCi0JLyogV2FpdCB1cHRvIDEwMG1zIGZvciB0eCBxdWV1ZSB0byBlbXB0eSAqLworCS8qIFdhaXQgdXAgdG8gMTAwbXMgZm9yIHR4IHF1ZXVlIHRvIGVtcHR5ICovCiAJZm9yIChrID0gMTAwOyBrID4gMDsgay0tKSB7CiAJCXVkZWxheSgxMDAwKTsKIAkJcmV0ID0gaGVybWVzX3JlYWRfd29yZHJlYyhodywgVVNFUl9CQVAsIEhFUk1FU19SSURfVFhRVUVVRUVNUFRZLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9tYWluLmMKaW5kZXggMzU2ZTZiYi4uYTk0Njk5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvbWFpbi5jCkBAIC00NjUsNyArNDY1LDcgQEAKIAogCQlpZiAoc2xvdCA8IDApIHsKIAkJCS8qCi0JCQkgKiBUaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSBjaG9vc2VuIGFsZ29yaXRobSwgYnV0IHRoZQorCQkJICogVGhlIGRldmljZSBzdXBwb3J0cyB0aGUgY2hvc2VuIGFsZ29yaXRobSwgYnV0IHRoZQogCQkJICogZmlybXdhcmUgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2gga2V5IHNsb3RzIHRvIHN0b3JlCiAJCQkgKiBhbGwgb2YgdGhlbS4KIAkJCSAqIEJ1dCBlbmNyeXB0aW9uIG9mZmxvYWQgZm9yIG91dGdvaW5nIGZyYW1lcyBpcyBhbHdheXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYwppbmRleCA3ZWNjMGJkLi42ZDkyMDRmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L3A1NHNwaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYwpAQCAtMjg3LDcgKzI4Nyw3IEBACiAJZW5hYmxlX2lycShncGlvX3RvX2lycShwNTRzcGlfZ3Bpb19pcnEpKTsKIAogCS8qCi0JICogbmVlZCB0byB3YWl0IGEgd2hpbGUgYmVmb3JlIGRldmljZSBjYW4gYmUgYWNjZXNzZWQsIHRoZSBsZW5naHQKKwkgKiBuZWVkIHRvIHdhaXQgYSB3aGlsZSBiZWZvcmUgZGV2aWNlIGNhbiBiZSBhY2Nlc3NlZCwgdGhlIGxlbmd0aAogCSAqIGlzIGp1c3QgYSBndWVzcwogCSAqLwogCW1zbGVlcCgxMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9wcmlzbTU0L2lzbHBjaV9ldGguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ByaXNtNTQvaXNscGNpX2V0aC5jCmluZGV4IGQ0NGY4ZTIuLjI2NmQ0NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ByaXNtNTQvaXNscGNpX2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ByaXNtNTQvaXNscGNpX2V0aC5jCkBAIC0xMTMsNyArMTEzLDcgQEAKIAkgKiBiZSBhbGlnbmVkIG9uIGEgNC1ieXRlIGJvdW5kYXJ5LiBJZiBXRFMgaXMgZW5hYmxlZCBhZGQgYW5vdGhlciA2IGJ5dGVzCiAJICogYW5kIGFkZCBXRFMgYWRkcmVzcyBpbmZvcm1hdGlvbiAqLwogCWlmIChsaWtlbHkoKChsb25nKSBza2ItPmRhdGEgJiAweDAzKSB8IGluaXRfd2RzKSkgewotCQkvKiBnZXQgdGhlIG51bWJlciBvZiBieXRlcyB0byBhZGQgYW5kIHJlLWFsbGlnbiAqLworCQkvKiBnZXQgdGhlIG51bWJlciBvZiBieXRlcyB0byBhZGQgYW5kIHJlLWFsaWduICovCiAJCW9mZnNldCA9ICg0IC0gKGxvbmcpIHNrYi0+ZGF0YSkgJiAweDAzOwogCQlvZmZzZXQgKz0gaW5pdF93ZHMgPyA2IDogMDsKIApAQCAtMzQyLDcgKzM0Miw3IEBACiAJCQkgcHJpdi0+cGNpX21hcF9yeF9hZGRyZXNzW2luZGV4XSwKIAkJCSBNQVhfRlJBR01FTlRfU0laRV9SWCArIDIsIFBDSV9ETUFfRlJPTURFVklDRSk7CiAKLQkvKiB1cGRhdGUgdGhlIHNrYiBzdHJ1Y3R1cmUgYW5kIGFsbGlnbiB0aGUgYnVmZmVyICovCisJLyogdXBkYXRlIHRoZSBza2Igc3RydWN0dXJlIGFuZCBhbGlnbiB0aGUgYnVmZmVyICovCiAJc2tiX3B1dChza2IsIHNpemUpOwogCWlmIChvZmZzZXQpIHsKIAkJLyogc2hpZnQgdGhlIGJ1ZmZlciBhbGxvY2F0aW9uIG9mZnNldCBieXRlcyB0byBnZXQgdGhlIHJpZ2h0IGZyYW1lICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXljdGwuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JheWN0bC5oCmluZGV4IDQ5ZDliMjYuLmQ3NjQ2ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JheWN0bC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JheWN0bC5oCkBAIC01NzgsNyArNTc4LDcgQEAKICAgICBVQ0hBUiAgdmFyWzFdOwogfTsKIAotLyoqKioqKiBFQ0YgUmVjZWl2ZSBDb250cm9sIFN0dWN0dXJlIChSQ1MpIEFyZWEgYXQgU2hhcmVkIFJBTSBvZmZzZXQgMHgwODAwICAqLworLyoqKioqKiBFQ0YgUmVjZWl2ZSBDb250cm9sIFN0cnVjdHVyZSAoUkNTKSBBcmVhIGF0IFNoYXJlZCBSQU0gb2Zmc2V0IDB4MDgwMCAgKi8KIC8qIFN0cnVjdHVyZXMgZm9yIGNvbW1hbmQgc3BlY2lmaWMgcGFyYW1ldGVycyAocmNzLnZhcikgKi8KIHN0cnVjdCByeF9wYWNrZXRfY21kIHsKICAgICBVQ0hBUiByeF9kYXRhX3B0clsyXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDAuaAppbmRleCA3MGI5YWJiLi44ZmJjNWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMC5oCkBAIC02MTYsNyArNjE2LDcgQEAKICAqIFJFQURfQ09OVFJPTDogMCB3cml0ZSBCQlAsIDEgcmVhZCBCQlAKICAqIEJVU1k6IEFTSUMgaXMgYnVzeSBleGVjdXRpbmcgQkJQIGNvbW1hbmRzCiAgKiBCQlBfUEFSX0RVUjogMCA0IE1BQyBjbG9ja3MsIDEgOCBNQUMgY2xvY2tzCi0gKiBCQlBfUldfTU9ERTogMCBzZXJpYWwsIDEgcGFyYWxlbGwKKyAqIEJCUF9SV19NT0RFOiAwIHNlcmlhbCwgMSBwYXJhbGxlbAogICovCiAjZGVmaW5lIEJCUF9DU1JfQ0ZHCQkJMHgxMDFjCiAjZGVmaW5lIEJCUF9DU1JfQ0ZHX1ZBTFVFCQlGSUVMRDMyKDB4MDAwMDAwZmYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwbGliLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwbGliLmMKaW5kZXggMmVlNmNlYi4uZGJmNzRkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMGxpYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDBsaWIuYwpAQCAtMTUxOCw3ICsxNTE4LDcgQEAKIAlpZiAocmYtPmNoYW5uZWwgPiAxNCkgewogCQkvKgogCQkgKiBXaGVuIFRYIHBvd2VyIGlzIGJlbG93IDAsIHdlIHNob3VsZCBpbmNyZWFzZSBpdCBieSA3IHRvCi0JCSAqIG1ha2UgaXQgYSBwb3NpdGl2ZSB2YWx1ZSAoTWludW11bSB2YWx1ZSBpcyAtNykuCisJCSAqIG1ha2UgaXQgYSBwb3NpdGl2ZSB2YWx1ZSAoTWluaW11bSB2YWx1ZSBpcyAtNykuCiAJCSAqIEhvd2V2ZXIgdGhpcyBtZWFucyB0aGF0IHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDcgaGF2ZQogCQkgKiBkb3VibGUgbWVhbmluZywgYW5kIHdlIHNob3VsZCBzZXQgYSA3REJtIGJvb3N0IGZsYWcuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMC5oCmluZGV4IGEzOTQwZDcuLjdmMTAyMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDAuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwLmgKQEAgLTQ4NCwxMyArNDg0LDEzIEBACiAJZW51bSBubDgwMjExX2lmdHlwZSB0eXBlOwogCiAJLyoKLQkgKiBUU0Ygc3luYyB2YWx1ZSwgdGhpcyBpcyBkZXBlbmRhbnQgb24gdGhlIG9wZXJhdGlvbiB0eXBlLgorCSAqIFRTRiBzeW5jIHZhbHVlLCB0aGlzIGlzIGRlcGVuZGVudCBvbiB0aGUgb3BlcmF0aW9uIHR5cGUuCiAJICovCiAJZW51bSB0c2Zfc3luYyBzeW5jOwogCiAJLyoKLQkgKiBUaGUgTUFDIGFuZCBCU1NJRCBhZGRyZXNzZXNzIGFyZSBzaW1wbGUgYXJyYXkgb2YgYnl0ZXMsCi0JICogdGhlc2UgYXJyYXlzIGFyZSBsaXR0bGUgZW5kaWFuLCBzbyB3aGVuIHNlbmRpbmcgdGhlIGFkZHJlc3Nlc3MKKwkgKiBUaGUgTUFDIGFuZCBCU1NJRCBhZGRyZXNzZXMgYXJlIHNpbXBsZSBhcnJheSBvZiBieXRlcywKKwkgKiB0aGVzZSBhcnJheXMgYXJlIGxpdHRsZSBlbmRpYW4sIHNvIHdoZW4gc2VuZGluZyB0aGUgYWRkcmVzc2VzCiAJICogdG8gdGhlIGRyaXZlcnMsIGNvcHkgdGhlIGl0IGludG8gYSBlbmRpYW4tc2lnbmVkIHZhcmlhYmxlLgogCSAqCiAJICogTm90ZSB0aGF0IGFsbCBkZXZpY2VzIChleGNlcHQgcnQyNTAwdXNiKSBoYXZlIDMyIGJpdHMKQEAgLTExMzEsNyArMTEzMSw3IEBACiAgKiBAZHJvcDogVHJ1ZSB0byBkcm9wIGFsbCBwZW5kaW5nIGZyYW1lcy4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmx1c2ggdGhlIHF1ZXVlLiBBZnRlciB0aGlzIGNhbGwKLSAqIHRoZSBxdWV1ZSBpcyBndWFyZW50ZWVkIHRvIGJlIGVtcHR5LgorICogdGhlIHF1ZXVlIGlzIGd1YXJhbnRlZWQgdG8gYmUgZW1wdHkuCiAgKi8KIHZvaWQgcnQyeDAwcXVldWVfZmx1c2hfcXVldWUoc3RydWN0IGRhdGFfcXVldWUgKnF1ZXVlLCBib29sIGRyb3ApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY29uZmlnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY29uZmlnLmMKaW5kZXggZTdmNjdkNS4uOTQxNmUzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNvbmZpZy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjb25maWcuYwpAQCAtNjAsNyArNjAsNyBAQAogCSAqIE5vdGUgdGhhdCB3aGVuIE5VTEwgaXMgcGFzc2VkIGFzIGFkZHJlc3Mgd2Ugd2lsbCBzZW5kCiAJICogMDA6MDA6MDA6MDA6MDAgdG8gdGhlIGRldmljZSB0byBjbGVhciB0aGUgYWRkcmVzcy4KIAkgKiBUaGlzIHdpbGwgcHJldmVudCB0aGUgZGV2aWNlIGJlaW5nIGNvbmZ1c2VkIHdoZW4gaXQgd2FudHMKLQkgKiB0byBBQ0sgZnJhbWVzIG9yIGNvbnNpZGVyZXMgaXRzZWxmIGFzc29jaWF0ZWQuCisJICogdG8gQUNLIGZyYW1lcyBvciBjb25zaWRlcnMgaXRzZWxmIGFzc29jaWF0ZWQuCiAJICovCiAJbWVtc2V0KGNvbmYubWFjLCAwLCBzaXplb2YoY29uZi5tYWMpKTsKIAlpZiAobWFjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNyeXB0by5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNyeXB0by5jCmluZGV4IDVlOTA3NGIuLjNmNTY4OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjcnlwdG8uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY3J5cHRvLmMKQEAgLTIzNyw3ICsyMzcsNyBAQAogCX0KIAogCS8qCi0JICogTk9URTogQWx3YXlzIGNvdW50IHRoZSBwYXlsb2FkIGFzIHRyYW5zZmVyZWQsCisJICogTk9URTogQWx3YXlzIGNvdW50IHRoZSBwYXlsb2FkIGFzIHRyYW5zZmVycmVkLAogCSAqIGV2ZW4gd2hlbiBhbGlnbm1lbnQgd2FzIHNldCB0byB6ZXJvLiBUaGlzIGlzIHJlcXVpcmVkCiAJICogZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IG9mZnNldCBmb3IgdGhlIElDViBkYXRhLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGR1bXAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkdW1wLmgKaW5kZXggNWQ2ZTBiOC4uMDYzZWJjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGR1bXAuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwZHVtcC5oCkBAIC01MSw3ICs1MSw3IEBACiAgKiAgIFtydDJ4MDBkdW1wIGhlYWRlcl1baGFyZHdhcmUgZGVzY3JpcHRvcl1baWVlZTgwMi4xMSBmcmFtZV0KICAqCiAgKiBydDJ4MDBkdW1wIGhlYWRlcjogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBkdW1wZWQgZnJhbWUsIGFzIHdlbGwgYXMKLSAqCWFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdXNlZnVsbCBmb3IgZGVidWdnaW5nLiBTZWUgJnJ0MngwMGR1bXBfaGRyLgorICoJYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gU2VlICZydDJ4MDBkdW1wX2hkci4KICAqIGhhcmR3YXJlIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IgdGhhdCB3YXMgdXNlZCB0byByZWNlaXZlIG9yIHRyYW5zbWl0CiAgKgl0aGUgZnJhbWUuCiAgKiBpZWVlODAyLjExIGZyYW1lOiBUaGUgYWN0dWFsIGZyYW1lIHRoYXQgd2FzIHJlY2VpdmVkIG9yIHRyYW5zbWl0dGVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGxpbmsuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBsaW5rLmMKaW5kZXggYzk3NWIwYS4uMjlhYmZkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGxpbmsuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwbGluay5jCkBAIC0yODMsNyArMjgzLDcgQEAKIAkvKioKIAkgKiBXaGlsZSBzY2FubmluZywgbGluayB0dW5pbmcgaXMgZGlzYWJsZWQuIEJ5IGRlZmF1bHQKIAkgKiB0aGUgbW9zdCBzZW5zaXRpdmUgc2V0dGluZ3Mgd2lsbCBiZSB1c2VkIHRvIG1ha2Ugc3VyZQotCSAqIHRoYXQgYWxsIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlcyB3aWxsIGJlIHJlY2lldmVkCisJICogdGhhdCBhbGwgYmVhY29ucyBhbmQgcHJvYmUgcmVzcG9uc2VzIHdpbGwgYmUgcmVjZWl2ZWQKIAkgKiBkdXJpbmcgdGhlIHNjYW4uCiAJICovCiAJaWYgKHRlc3RfYml0KERFVklDRV9TVEFURV9TQ0FOTklORywgJnJ0MngwMGRldi0+ZmxhZ3MpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuYwppbmRleCA0YjNjNzBlLi40MzU4MDUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuYwpAQCAtNTQ2LDcgKzU0Niw3IEBACiAJfQogCiAJLyoKLQkgKiBXaGVuIERNQSBhbGxvY2F0aW9uIGlzIHJlcXVpcmVkIHdlIHNob3VsZCBndWFyZW50ZWUgdG8gdGhlCisJICogV2hlbiBETUEgYWxsb2NhdGlvbiBpcyByZXF1aXJlZCB3ZSBzaG91bGQgZ3VhcmFudGVlIHRvIHRoZQogCSAqIGRyaXZlciB0aGF0IHRoZSBETUEgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeS4KIAkgKiBIb3dldmVyIHNvbWUgZHJpdmVycyByZXF1aXJlIEwyIHBhZGRpbmcgdG8gcGFkIHRoZSBwYXlsb2FkCiAJICogcmF0aGVyIHRoZW4gdGhlIGhlYWRlci4gVGhpcyBjb3VsZCBiZSBhIHJlcXVpcmVtZW50IGZvcgpAQCAtNjg5LDcgKzY4OSw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcXVldWUtPmluZGV4X2xvY2ssIGlycWZsYWdzKTsKIAogCS8qCi0JICogU3RhcnQgZnJvbSB0aGUgVFggZG9uZSBwb2ludGVyLCB0aGlzIGd1YXJlbnRlZXMgdGhhdCB3ZSB3aWxsCisJICogU3RhcnQgZnJvbSB0aGUgVFggZG9uZSBwb2ludGVyLCB0aGlzIGd1YXJhbnRlZXMgdGhhdCB3ZSB3aWxsCiAJICogc2VuZCBvdXQgYWxsIGZyYW1lcyBpbiB0aGUgY29ycmVjdCBvcmRlci4KIAkgKi8KIAlpZiAoaW5kZXhfc3RhcnQgPCBpbmRleF9lbmQpIHsKQEAgLTg4Myw3ICs4ODMsNyBAQAogCX0KIAogCS8qCi0JICogQ2hlY2sgaWYgZHJpdmVyIHN1cHBvcnRzIGZsdXNoaW5nLCB3ZSBjYW4gb25seSBndWFyZW50ZWUKKwkgKiBDaGVjayBpZiBkcml2ZXIgc3VwcG9ydHMgZmx1c2hpbmcsIHdlIGNhbiBvbmx5IGd1YXJhbnRlZQogCSAqIGZ1bGwgc3VwcG9ydCBmb3IgZmx1c2hpbmcgaWYgdGhlIGRyaXZlciBpcyBhYmxlCiAJICogdG8gY2FuY2VsIGFsbCBwZW5kaW5nIGZyYW1lcyAoZHJvcCA9IHRydWUpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuaAppbmRleCAwYzhiMGM2Li4yMTc4NjFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuaApAQCAtMzQ0LDggKzM0NCw4IEBACiAgKglvbmx5IGJlIHRvdWNoZWQgYWZ0ZXIgdGhlIGRldmljZSBoYXMgc2lnbmFsZWQgaXQgaXMgZG9uZSB3aXRoIGl0LgogICogQEVOVFJZX0RBVEFfUEVORElORzogVGhpcyBlbnRyeSBjb250YWlucyBhIHZhbGlkIGZyYW1lIGFuZCBpcyB3YWl0aW5nCiAgKglmb3IgdGhlIHNpZ25hbCB0byBzdGFydCBzZW5kaW5nLgotICogQEVOVFJZX0RBVEFfSU9fRkFJTEVEOiBIYXJkd2FyZSBpbmRpY2F0ZWQgdGhhdCBhbiBJTyBlcnJvciBvY2N1cmVkCi0gKgl3aGlsZSB0cmFuc2ZlcmluZyB0aGUgZGF0YSB0byB0aGUgaGFyZHdhcmUuIE5vIFRYIHN0YXR1cyByZXBvcnQgd2lsbAorICogQEVOVFJZX0RBVEFfSU9fRkFJTEVEOiBIYXJkd2FyZSBpbmRpY2F0ZWQgdGhhdCBhbiBJTyBlcnJvciBvY2N1cnJlZAorICoJd2hpbGUgdHJhbnNmZXJyaW5nIHRoZSBkYXRhIHRvIHRoZSBoYXJkd2FyZS4gTm8gVFggc3RhdHVzIHJlcG9ydCB3aWxsCiAgKgliZSBleHBlY3RlZCBmcm9tIHRoZSBoYXJkd2FyZS4KICAqIEBFTlRSWV9EQVRBX1NUQVRVU19QRU5ESU5HOiBUaGUgZW50cnkgaGFzIGJlZW4gc2VuZCB0byB0aGUgZGV2aWNlIGFuZAogICoJcmV0dXJuZWQuIEl0IGlzIG5vdyB3YWl0aW5nIGZvciB0aGUgc3RhdHVzIHJlcG9ydGluZyBiZWZvcmUgdGhlCkBAIC0zNjUsNyArMzY1LDcgQEAKICAqIEBmbGFnczogRW50cnkgZmxhZ3MsIHNlZSAmZW51bSBxdWV1ZV9lbnRyeV9mbGFncy4KICAqIEBxdWV1ZTogVGhlIGRhdGEgcXVldWUgKCZzdHJ1Y3QgZGF0YV9xdWV1ZSkgdG8gd2hpY2ggdGhpcyBlbnRyeSBiZWxvbmdzLgogICogQHNrYjogVGhlIGJ1ZmZlciB3aGljaCBpcyBjdXJyZW50bHkgYmVpbmcgdHJhbnNtaXR0ZWQgKGZvciBUWCBxdWV1ZSksCi0gKglvciB1c2VkIHRvIGRpcmVjdGx5IHJlY2lldmUgZGF0YSBpbiAoZm9yIFJYIHF1ZXVlKS4KKyAqCW9yIHVzZWQgdG8gZGlyZWN0bHkgcmVjZWl2ZSBkYXRhIGluIChmb3IgUlggcXVldWUpLgogICogQGVudHJ5X2lkeDogVGhlIGVudHJ5IGluZGV4IG51bWJlci4KICAqIEBwcml2X2RhdGE6IFByaXZhdGUgZGF0YSBiZWxvbmdpbmcgdG8gdGhpcyBxdWV1ZSBlbnRyeS4gVGhlIHBvaW50ZXIKICAqCXBvaW50cyB0byBkYXRhIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBkcml2ZXIgYW5kIHF1ZXVlIHR5cGUuCkBAIC0zODgsNyArMzg4LDcgQEAKICAqIEBRX0lOREVYOiBJbmRleCBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGVudHJ5IGluIHRoZSBxdWV1ZSwgaWYgdGhpcyBlbnRyeSBpcwogICoJb3duZWQgYnkgdGhlIGhhcmR3YXJlIHRoZW4gdGhlIHF1ZXVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgZnVsbC4KICAqIEBRX0lOREVYX0RNQV9ET05FOiBJbmRleCBwb2ludGVyIGZvciB0aGUgbmV4dCBlbnRyeSB3aGljaCB3aWxsIGhhdmUgYmVlbgotICoJdHJhbnNmZXJlZCB0byB0aGUgaGFyZHdhcmUuCisgKgl0cmFuc2ZlcnJlZCB0byB0aGUgaGFyZHdhcmUuCiAgKiBAUV9JTkRFWF9ET05FOiBJbmRleCBwb2ludGVyIHRvIHRoZSBuZXh0IGVudHJ5IHdoaWNoIHdpbGwgYmUgY29tcGxldGVkIGJ5CiAgKgl0aGUgaGFyZHdhcmUgYW5kIGZvciB3aGljaCB3ZSBuZWVkIHRvIHJ1biB0aGUgdHhkb25lIGhhbmRsZXIuIElmIHRoaXMKICAqCWVudHJ5IGlzIG5vdCBvd25lZCBieSB0aGUgaGFyZHdhcmUgdGhlIHF1ZXVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgZW1wdHkuCkBAIC02MjcsNyArNjI3LDcgQEAKIH0KIAogLyoqCi0gKiBydDJ4MDBxdWV1ZV9zdGF0dXNfdGltZW91dCAtIENoZWNrIGlmIGEgdGltZW91dCBvY2N1cmVkIGZvciBTVEFUVVMgcmVwb3J0cworICogcnQyeDAwcXVldWVfc3RhdHVzX3RpbWVvdXQgLSBDaGVjayBpZiBhIHRpbWVvdXQgb2NjdXJyZWQgZm9yIFNUQVRVUyByZXBvcnRzCiAgKiBAcXVldWU6IFF1ZXVlIHRvIGNoZWNrLgogICovCiBzdGF0aWMgaW5saW5lIGludCBydDJ4MDBxdWV1ZV9zdGF0dXNfdGltZW91dChzdHJ1Y3QgZGF0YV9xdWV1ZSAqcXVldWUpCkBAIC02MzcsNyArNjM3LDcgQEAKIH0KIAogLyoqCi0gKiBydDJ4MDBxdWV1ZV90aW1lb3V0IC0gQ2hlY2sgaWYgYSB0aW1lb3V0IG9jY3VyZWQgZm9yIERNQSB0cmFuc2ZlcnMKKyAqIHJ0MngwMHF1ZXVlX3RpbWVvdXQgLSBDaGVjayBpZiBhIHRpbWVvdXQgb2NjdXJyZWQgZm9yIERNQSB0cmFuc2ZlcnMKICAqIEBxdWV1ZTogUXVldWUgdG8gY2hlY2suCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHJ0MngwMHF1ZXVlX2RtYV90aW1lb3V0KHN0cnVjdCBkYXRhX3F1ZXVlICpxdWV1ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuYwppbmRleCBmYmU3MzVmLi4zNmYzODhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHVzYi5jCkBAIC0xNzMsNyArMTczLDcgQEAKIAkvKgogCSAqIElmIHRoZSB0cmFuc2ZlciB0byBoYXJkd2FyZSBzdWNjZWVkZWQsIGl0IGRvZXMgbm90IG1lYW4gdGhlCiAJICogZnJhbWUgd2FzIHNlbmQgb3V0IGNvcnJlY3RseS4gSXQgb25seSBtZWFucyB0aGUgZnJhbWUKLQkgKiB3YXMgc3VjY2VzZnVsbHkgcHVzaGVkIHRvIHRoZSBoYXJkd2FyZSwgd2UgaGF2ZSBubworCSAqIHdhcyBzdWNjZXNzZnVsbHkgcHVzaGVkIHRvIHRoZSBoYXJkd2FyZSwgd2UgaGF2ZSBubwogCSAqIHdheSB0byBkZXRlcm1pbmUgdGhlIHRyYW5zbWlzc2lvbiBzdGF0dXMgcmlnaHQgbm93LgogCSAqIChPbmx5IGluZGlyZWN0bHkgYnkgbG9va2luZyBhdCB0aGUgZmFpbGVkIFRYIGNvdW50ZXJzCiAJICogaW4gdGhlIHJlZ2lzdGVyKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuaAppbmRleCA2YWFmNTFmLi5lMTFjNzU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHVzYi5oCkBAIC00MDAsNyArNDAwLDcgQEAKICAqIEBydDJ4MDBkZXY6IFBvaW50ZXIgdG8gJnN0cnVjdCBydDJ4MDBfZGV2CiAgKgogICogQ2hlY2sgdGhlIGhlYWx0aCBvZiB0aGUgVVNCIGNvbW11bmljYXRpb24gYW5kIGRldGVybWluZQotICogaWYgdGltZW91dHMgaGF2ZSBvY2N1cmVkLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGlzIGZ1bmN0aW9uCisgKiBpZiB0aW1lb3V0cyBoYXZlIG9jY3VycmVkLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGlzIGZ1bmN0aW9uCiAgKiB3aWxsIHJlc2V0IGFsbCBjb21tdW5pY2F0aW9uIHRvIHJlc3RvcmUgZnVuY3Rpb25hbGl0eSBhZ2Fpbi4KICAqLwogdm9pZCBydDJ4MDB1c2Jfd2F0Y2hkb2coc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL2Jhc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvYmFzZS5jCmluZGV4IGJiMGM3ODEuLjBkN2Q5M2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvYmFzZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvYmFzZS5jCkBAIC01MjAsNyArNTIwLDcgQEAKIAkJCSAqYmVjYXVzZSBodyB3aWxsIG5lcnZlciB1c2UgaHdfcmF0ZQogCQkJICp3aGVuIHRjYl9kZXNjLT51c2VfZHJpdmVyX3JhdGUgPSBmYWxzZQogCQkJICpzbyB3ZSBuZXZlciBzZXQgaGlnaGVzdCBOIHJhdGUgaGVyZSwKLQkJCSAqYW5kIE4gcmF0ZSB3aWxsIGFsbCBiZSBjb250cm9sZWQgYnkgRlcKKwkJCSAqYW5kIE4gcmF0ZSB3aWxsIGFsbCBiZSBjb250cm9sbGVkIGJ5IEZXCiAJCQkgKndoZW4gdGNiX2Rlc2MtPnVzZV9kcml2ZXJfcmF0ZSA9IGZhbHNlCiAJCQkgKi8KIAkJCWlmIChydGxtYWMtPmh0X2VuYWJsZSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcGNpLmMKaW5kZXggOWNkNzcwMy4uNTkzOGY2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9wY2kuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3BjaS5jCkBAIC0zOTUsNyArMzk1LDcgQEAKIAkgKiAwIC0gRGlzYWJsZSBBU1BNLAogCSAqIDEgLSBFbmFibGUgQVNQTSB3aXRob3V0IENsb2NrIFJlcSwKIAkgKiAyIC0gRW5hYmxlIEFTUE0gd2l0aCBDbG9jayBSZXEsCi0JICogMyAtIEFsd3lhcyBFbmFibGUgQVNQTSB3aXRoIENsb2NrIFJlcSwKKwkgKiAzIC0gQWx3YXlzIEVuYWJsZSBBU1BNIHdpdGggQ2xvY2sgUmVxLAogCSAqIDQgLSBBbHdheXMgRW5hYmxlIEFTUE0gd2l0aG91dCBDbG9jayBSZXEuCiAJICogc2V0IGRlZnVsdCB0byBSVEw4MTkyQ0U6MyBSVEw4MTkyRToyCiAJICogKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9yZWdkLmMKaW5kZXggMzMzNmNhOS4uZDI2Zjk1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9yZWdkLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9yZWdkLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogCX0KIAogCS8qCi0JICpJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjaWV2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKKwkgKklmIGEgY291bnRyeSBJRSBoYXMgYmVlbiByZWNlaXZlZCBjaGVjayBpdHMgcnVsZSBmb3IgdGhpcwogCSAqY2hhbm5lbCBmaXJzdCBiZWZvcmUgZW5hYmxpbmcgYWN0aXZlIHNjYW4uIFRoZSBwYXNzaXZlIHNjYW4KIAkgKndvdWxkIGhhdmUgYmVlbiBlbmZvcmNlZCBieSB0aGUgaW5pdGlhbCBwcm9jZXNzaW5nIG9mIG91cgogCSAqY3VzdG9tIHJlZ3VsYXRvcnkgZG9tYWluLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3dpZmkuaAppbmRleCAwMTIyNmY4Li4wN2RiOTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3dpZmkuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3dpZmkuaApAQCAtMTU1NSw3ICsxNTU1LDcgQEAKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgQmx1ZXRvb3RoIENvLWV4aXN0YW5jZSBSZWxhdGVkCisgICAgQmx1ZXRvb3RoIENvLWV4aXN0ZW5jZSBSZWxhdGVkCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBlbnVtIGJ0X2FudF9udW0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL2NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL2NtZC5jCmluZGV4IDBhZGU0YmQuLjgxZjE2NGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTI1MS9jbWQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvY21kLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogICogQHdsOiB3bCBzdHJ1Y3QKICAqIEBpZDogYWN4IGlkCiAgKiBAYnVmOiBidWZmZXIgZm9yIHRoZSByZXNwb25zZSwgaW5jbHVkaW5nIGFsbCBoZWFkZXJzLCBtdXN0IHdvcmsgd2l0aCBkbWEKLSAqIEBsZW46IGxlbmdodCBvZiBidWYKKyAqIEBsZW46IGxlbmd0aCBvZiBidWYKICAqLwogaW50IHdsMTI1MV9jbWRfaW50ZXJyb2dhdGUoc3RydWN0IHdsMTI1MSAqd2wsIHUxNiBpZCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvcnguYwppbmRleCBjMWIzYjNmLi42YWYzNTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvcnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvcnguYwpAQCAtMTc5LDcgKzE3OSw3IEBACiAJcnhfYnVmZmVyID0gc2tiX3B1dChza2IsIGxlbmd0aCk7CiAJd2wxMjUxX21lbV9yZWFkKHdsLCByeF9wYWNrZXRfcmluZ19hZGRyLCByeF9idWZmZXIsIGxlbmd0aCk7CiAKLQkvKiBUaGUgYWN0dWFsIGxlbmdodCBkb2Vzbid0IGluY2x1ZGUgdGhlIHRhcmdldCdzIGFsaWdubWVudCAqLworCS8qIFRoZSBhY3R1YWwgbGVuZ3RoIGRvZXNuJ3QgaW5jbHVkZSB0aGUgdGFyZ2V0J3MgYWxpZ25tZW50ICovCiAJc2tiLT5sZW4gPSBkZXNjLT5sZW5ndGggIC0gUExDUF9IRUFERVJfTEVOR1RIOwogCiAJZmMgPSAodTE2ICopc2tiLT5kYXRhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NtZC5jCmluZGV4IGYwYWE3YWIuLjk2MzI0MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jbWQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvY21kLmMKQEAgLTM1OSw3ICszNTksNyBAQAogICogQHdsOiB3bCBzdHJ1Y3QKICAqIEBpZDogYWN4IGlkCiAgKiBAYnVmOiBidWZmZXIgZm9yIHRoZSByZXNwb25zZSwgaW5jbHVkaW5nIGFsbCBoZWFkZXJzLCBtdXN0IHdvcmsgd2l0aCBkbWEKLSAqIEBsZW46IGxlbmdodCBvZiBidWYKKyAqIEBsZW46IGxlbmd0aCBvZiBidWYKICAqLwogaW50IHdsMTI3MV9jbWRfaW50ZXJyb2dhdGUoc3RydWN0IHdsMTI3MSAqd2wsIHUxNiBpZCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NvbmYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jb25mLmgKaW5kZXggODU2YThhMi4uOGE4MzIzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NvbmYuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvY29uZi5oCkBAIC00OTcsNyArNDk3LDcgQEAKICNkZWZpbmUgQ09ORl9UWF9SQVRFX1JFVFJZX0xJTUlUICAgICAgIDEwCiAKIC8qCi0gKiBSYXRlcyBzdXBwb3J0ZWQgZm9yIGRhdGEgcGFja2V0cyB3aGVuIG9wZXJhdGluZyBhcyBBUC4gTm90ZSB0aGUgYWJzZW5zZQorICogUmF0ZXMgc3VwcG9ydGVkIGZvciBkYXRhIHBhY2tldHMgd2hlbiBvcGVyYXRpbmcgYXMgQVAuIE5vdGUgdGhlIGFic2VuY2UKICAqIG9mIHRoZSAyMk1icHMgcmF0ZS4gVGhlcmUgaXMgYSBGVyBsaW1pdGF0aW9uIG9uIDEyIHJhdGVzIHNvIHdlIG11c3QgZHJvcAogICogb25lLiBUaGUgcmF0ZSBkcm9wcGVkIGlzIG5vdCBtYW5kYXRvcnkgdW5kZXIgYW55IG9wZXJhdGluZyBtb2RlLgogICovCkBAIC01NzIsNyArNTcyLDcgQEAKIAlDT05GX1RYX0FDX0JLID0gMSwgICAgICAgICAvKiBiYWNrZ3JvdW5kICovCiAJQ09ORl9UWF9BQ19WSSA9IDIsICAgICAgICAgLyogdmlkZW8gKi8KIAlDT05GX1RYX0FDX1ZPID0gMywgICAgICAgICAvKiB2b2ljZSAqLwotCUNPTkZfVFhfQUNfQ1RTMlNFTEYgPSA0LCAgIC8qIGZpY3Rpb3VzIEFDLCBmb2xsb3dzIEFDX1ZPICovCisJQ09ORl9UWF9BQ19DVFMyU0VMRiA9IDQsICAgLyogZmljdGl0aW91cyBBQywgZm9sbG93cyBBQ19WTyAqLwogCUNPTkZfVFhfQUNfQU5ZX1RJRCA9IDB4MWYKIH07CiAKQEAgLTExNjksNyArMTE2OSw3IEBACiAKIAkvKgogCSAqIE1pbmltdW0gcmVxdWlyZWQgZnJlZSB0eCBtZW1vcnkgYmxvY2tzIGluIG9yZGVyIHRvIGFzc3VyZSBvcHRpbXVtCi0JICogcGVyZm9ybWVuY2UKKwkgKiBwZXJmb3JtYW5jZQogCSAqCiAJICogUmFuZ2U6IDAtMTIwCiAJICovCkBAIC0xMTc3LDcgKzExNzcsNyBAQAogCiAJLyoKIAkgKiBNaW5pbXVtIHJlcXVpcmVkIGZyZWUgcnggbWVtb3J5IGJsb2NrcyBpbiBvcmRlciB0byBhc3N1cmUgb3B0aW11bQotCSAqIHBlcmZvcm1lbmNlCisJICogcGVyZm9ybWFuY2UKIAkgKgogCSAqIFJhbmdlOiAwLTEyMAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2lvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvaW8uaAppbmRleCBjMWFhYzgyLi4wMGM3NzFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvaW8uaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvaW8uaApAQCAtOTQsNyArOTQsNyBAQAogCSAqIHRyYW5zbGF0ZWQgcmVnaW9uLgogCSAqCiAJICogVGhlIHRyYW5zbGF0ZWQgcmVnaW9ucyBvY2N1ciBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gcGh5c2ljYWwgZGV2aWNlCi0JICogbWVtb3J5LCBzbyBqdXN0IGFkZCB0aGUgc2l6ZXMgb2YgdGhlIHByZWNlZWRpbmcgYWRkcmVzcyByZWdpb25zIHRvCisJICogbWVtb3J5LCBzbyBqdXN0IGFkZCB0aGUgc2l6ZXMgb2YgdGhlIHByZWNlZGluZyBhZGRyZXNzIHJlZ2lvbnMgdG8KIAkgKiBnZXQgdGhlIG9mZnNldCB0byB0aGUgbmV3IHJlZ2lvbi4KIAkgKgogCSAqIEN1cnJlbnRseSwgb25seSB0aGUgdHdvIGZpcnN0IHJlZ2lvbnMgYXJlIGFkZHJlc3NlZCwgYW5kIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wzNTAxX2NzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDM1MDFfY3MuYwppbmRleCAzZTViZWZlNC4uZmMwOGYzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wzNTAxX2NzLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wzNTAxX2NzLmMKQEAgLTI5MCw3ICsyOTAsNyBAQAogICogIFwgICAgICAgICAgICAgICBcLSBJRUVFIDgwMi4xMSAtLyBcLS0tLS0tLS0tLS0tLS0gbGVuIC0tLS0tLS0tLS0tLS0tLwogICogICBcLXN0cnVjdCB3bDM1MDFfODAyMTFfdHhfaGRyLS0vICAgXC0tLS0tLS0tIEV0aGVybmV0IEZyYW1lIC0tLS0tLS0vCiAgKgotICogUmV0dXJuID0gUG9zdGlvbiBpbiBDYXJkCisgKiBSZXR1cm4gPSBQb3NpdGlvbiBpbiBDYXJkCiAgKi8KIHN0YXRpYyB1MTYgd2wzNTAxX2dldF90eF9idWZmZXIoc3RydWN0IHdsMzUwMV9jYXJkICp0aGlzLCB1MTYgbGVuKQogewpAQCAtMTkzMiw3ICsxOTMyLDcgQEAKIAl0aGlzLT5iYXNlX2FkZHIgPSBkZXYtPmJhc2VfYWRkcjsKIAogCWlmICghd2wzNTAxX2dldF9mbGFzaF9tYWNfYWRkcih0aGlzKSkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogQ2FudCByZWFkIE1BQyBhZGRyIGluIGZsYXNoIFJPTT9cbiIsCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBDYW4ndCByZWFkIE1BQyBhZGRyIGluIGZsYXNoIFJPTT9cbiIsCiAJCSAgICAgICBkZXYtPm5hbWUpOwogCQl1bnJlZ2lzdGVyX25ldGRldihkZXYpOwogCQlnb3RvIGZhaWxlZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3JmMjk1OS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfcmYyOTU5LmMKaW5kZXggMDU5N2Q4Ni4uZTM2MTE3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfcmYyOTU5LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfcmYyOTU5LmMKQEAgLTE2OSw3ICsxNjksNyBAQAogCQl7IENSODUsICAweDAwIH0sIHsgQ1I4NiwgIDB4MTAgfSwgeyBDUjg3LCAgMHgyQSB9LAogCQl7IENSODgsICAweDEwIH0sIHsgQ1I4OSwgIDB4MjQgfSwgeyBDUjkwLCAgMHgxOCB9LAogCQkvKiB7IENSOTEsICAweDE4IH0sICovCi0JCS8qIHNob3VsZCBzb2x2ZSBjb250aW5vdXMgQ1RTIGZyYW1lIHByb2JsZW1zICovCisJCS8qIHNob3VsZCBzb2x2ZSBjb250aW51b3VzIENUUyBmcmFtZSBwcm9ibGVtcyAqLwogCQl7IENSOTEsICAweDAwIH0sCiAJCXsgQ1I5MiwgIDB4MGEgfSwgeyBDUjkzLCAgMHgwMCB9LCB7IENSOTQsICAweDAxIH0sCiAJCXsgQ1I5NSwgIDB4MDAgfSwgeyBDUjk2LCAgMHg0MCB9LCB7IENSOTcsICAweDM3IH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl91dzI0NTMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3V3MjQ1My5jCmluZGV4IDllNzRlYjEuLmJhMGEwY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3V3MjQ1My5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3V3MjQ1My5jCkBAIC0zNTMsNyArMzUzLDcgQEAKIAl9OwogCiAJc3RhdGljIGNvbnN0IHUzMiBydltdID0gewotCQlVVzI0NTNfUkVHV1JJVEUoNCwgMHgyYiksICAgIC8qIGNvbmZpZ3VyZSByZWNpZXZlciBnYWluICovCisJCVVXMjQ1M19SRUdXUklURSg0LCAweDJiKSwgICAgLyogY29uZmlndXJlIHJlY2VpdmVyIGdhaW4gKi8KIAkJVVcyNDUzX1JFR1dSSVRFKDUsIDB4MTllNGYpLCAvKiBjb25maWd1cmUgdHJhbnNtaXR0ZXIgZ2FpbiAqLwogCQlVVzI0NTNfUkVHV1JJVEUoNiwgMHhmODFhZCksIC8qIGVuYWJsZSBSWC9UWCBmaWx0ZXIgdHVuaW5nICovCiAJCVVXMjQ1M19SRUdXUklURSg3LCAweDNmZmZlKSwgLyogZGlzYWJsZSBUWCBnYWluIGluIHRlc3QgbW9kZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQveGlsaW54X2VtYWNsaXRlLmMgYi9kcml2ZXJzL25ldC94aWxpbnhfZW1hY2xpdGUuYwppbmRleCAyNjQyYWY0Li4zNzI1NzJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94aWxpbnhfZW1hY2xpdGUuYworKysgYi9kcml2ZXJzL25ldC94aWxpbnhfZW1hY2xpdGUuYwpAQCAtNzg2LDcgKzc4Niw3IEBACiAgKiBAcmVnOglyZWdpc3RlciBudW1iZXIgdG8gd3JpdGUgdG8KICAqIEB2YWw6CXZhbHVlIHRvIHdyaXRlIHRvIHRoZSByZWdpc3RlciBudW1iZXIgc3BlY2lmaWVkIGJ5IHJlZwogICoKLSAqIFRoaXMgZnVjbnRpb24gd2FpdHMgdGlsbCB0aGUgZGV2aWNlIGlzIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBNRElPCisgKiBUaGlzIGZ1bmN0aW9uIHdhaXRzIHRpbGwgdGhlIGRldmljZSBpcyByZWFkeSB0byBhY2NlcHQgYSBuZXcgTURJTwogICogcmVxdWVzdCBhbmQgdGhlbiB3cml0ZXMgdGhlIHZhbCB0byB0aGUgTURJTyBXcml0ZSBEYXRhIHJlZ2lzdGVyLgogICovCiBzdGF0aWMgaW50IHhlbWFjbGl0ZV9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWcsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC96bmV0LmMgYi9kcml2ZXJzL25ldC96bmV0LmMKaW5kZXggYWUwN2IzZC4uZWMyODAwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvem5ldC5jCisrKyBiL2RyaXZlcnMvbmV0L3puZXQuYwpAQCAtNjUyLDcgKzY1Miw3IEBACiAJCQkJCWRldi0+c3RhdHMudHhfZXJyb3JzKys7CiAKIAkJCQkvKiBUcmFuc2NlaXZlciBtYXkgYmUgc3R1Y2sgaWYgY2FibGUKLQkJCQkgKiB3YXMgcmVtb3ZlZCB3aGlsZSBlbWl0aW5nIGEKKwkJCQkgKiB3YXMgcmVtb3ZlZCB3aGlsZSBlbWl0dGluZyBhCiAJCQkJICogcGFja2V0LiBGbGlwIGl0IG9mZiwgdGhlbiBvbiB0bwogCQkJCSAqIHJlc2V0IGl0LiBUaGlzIGlzIHZlcnkgZW1waXJpY2FsLAogCQkJCSAqIGJ1dCBpdCBzZWVtcyB0byB3b3JrLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9mZHQuYyBiL2RyaXZlcnMvb2YvZmR0LmMKaW5kZXggYzlkYjQ5Yy4uOGI2M2E2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9vZi9mZHQuYworKysgYi9kcml2ZXJzL29mL2ZkdC5jCkBAIC02NzYsNyArNjc2LDcgQEAKIAogCWVhcmx5X2luaXRfZHRfY2hlY2tfZm9yX2luaXRyZChub2RlKTsKIAotCS8qIFJldHJlaXZlIGNvbW1hbmQgbGluZSAqLworCS8qIFJldHJpZXZlIGNvbW1hbmQgbGluZSAqLwogCXAgPSBvZl9nZXRfZmxhdF9kdF9wcm9wKG5vZGUsICJib290YXJncyIsICZsKTsKIAlpZiAocCAhPSBOVUxMICYmIGwgPiAwKQogCQlzdHJsY3B5KGNtZF9saW5lLCBwLCBtaW4oKGludClsLCBDT01NQU5EX0xJTkVfU0laRSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9vZl9tZGlvLmMgYi9kcml2ZXJzL29mL29mX21kaW8uYwppbmRleCBkY2Q3ODU3Li5kMzVlMzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL29mL29mX21kaW8uYworKysgYi9kcml2ZXJzL29mL29mX21kaW8uYwpAQCAtMTM2LDcgKzEzNiw3IEBACiAgKiBAaG5kbHI6IExpbmsgc3RhdGUgY2FsbGJhY2sgZm9yIHRoZSBuZXR3b3JrIGRldmljZQogICogQGlmYWNlOiBQSFkgZGF0YSBpbnRlcmZhY2UgdHlwZQogICoKLSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBwaHlfZGV2aWNlIGlmIHN1Y2Nlc3NmdWxsLiAgTlVMTCBvdGhlcndpc2UKKyAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBwaHlfZGV2aWNlIGlmIHN1Y2Nlc3NmdWwuICBOVUxMIG90aGVyd2lzZQogICovCiBzdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25wLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJpc2MvcGRjX3N0YWJsZS5jIGIvZHJpdmVycy9wYXJpc2MvcGRjX3N0YWJsZS5jCmluZGV4IDEwNjJiOGYuLjI0NmE5MmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFyaXNjL3BkY19zdGFibGUuYworKysgYi9kcml2ZXJzL3BhcmlzYy9wZGNfc3RhYmxlLmMKQEAgLTE0MSw3ICsxNDEsNyBAQAogICogQGVudHJ5OiBBIHBvaW50ZXIgdG8gYW4gYWxsb2NhdGVkIHBkY3NwYXRoX2VudHJ5LgogICogCiAgKiBUaGUgZ2VuZXJhbCBpZGVhIGlzIHRoYXQgeW91IGRvbid0IHJlYWQgZnJvbSB0aGUgU3RhYmxlIFN0b3JhZ2UgZXZlcnkgdGltZQotICogeW91IGFjY2VzcyB0aGUgZmlsZXMgcHJvdmlkZWQgYnkgdGhlIGZhY2lsaXRlcy4gV2Ugc3RvcmUgYSBjb3B5IG9mIHRoZQorICogeW91IGFjY2VzcyB0aGUgZmlsZXMgcHJvdmlkZWQgYnkgdGhlIGZhY2lsaXRpZXMuIFdlIHN0b3JlIGEgY29weSBvZiB0aGUKICAqIGNvbnRlbnQgb2YgdGhlIHN0YWJsZSBzdG9yYWdlIFdSVCB2YXJpb3VzIHBhdGhzIGluIHRoZXNlIHN0cnVjdHMuIFdlIHJlYWQKICAqIHRoZXNlIHN0cnVjdHMgd2hlbiByZWFkaW5nIHRoZSBmaWxlcywgYW5kIHdlIHdpbGwgd3JpdGUgdG8gdGhlc2Ugc3RydWN0cyB3aGVuCiAgKiB3cml0aW5nIHRvIHRoZSBmaWxlcywgYW5kIG9ubHkgdGhlbiB3cml0ZSB0aGVtIGJhY2sgdG8gdGhlIFN0YWJsZSBTdG9yYWdlLgpAQCAtMjEzLDcgKzIxMyw3IEBACiAKIAkvKiBhZGRyLCBkZXZwYXRoIGFuZCBjb3VudCBtdXN0IGJlIHdvcmQgYWxpZ25lZCAqLwogCWlmIChwZGNfc3RhYmxlX3dyaXRlKGVudHJ5LT5hZGRyLCBkZXZwYXRoLCBzaXplb2YoKmRldnBhdGgpKSAhPSBQRENfT0spIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogYW4gZXJyb3Igb2NjdXJlZCB3aGVuIHdyaXRpbmcgdG8gUERDLlxuIgorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhbiBlcnJvciBvY2N1cnJlZCB3aGVuIHdyaXRpbmcgdG8gUERDLlxuIgogCQkJCSJJdCBpcyBsaWtlbHkgdGhhdCB0aGUgU3RhYmxlIFN0b3JhZ2UgZGF0YSBoYXMgYmVlbiBjb3JydXB0ZWQuXG4iCiAJCQkJIlBsZWFzZSBjaGVjayBpdCBjYXJlZnVsbHkgdXBvbiBuZXh0IHJlYm9vdC5cbiIsIF9fZnVuY19fKTsKIAkJV0FSTl9PTigxKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGFycG9ydC9LY29uZmlnIGIvZHJpdmVycy9wYXJwb3J0L0tjb25maWcKaW5kZXggODU1ZjM4OS4uZDkyMTg1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wYXJwb3J0L0tjb25maWcKKysrIGIvZHJpdmVycy9wYXJwb3J0L0tjb25maWcKQEAgLTE0Miw3ICsxNDIsNyBAQAogCSAgdGhlIEFYODg3OTYgbmV0d29yayBjb250cm9sbGVyIGNoaXAuIFRoaXMgY29kZSBpcyBhbHNvIGF2YWlsYWJsZQogCSAgYXMgYSBtb2R1bGUgKHNheSBNKSwgY2FsbGVkIHBhcnBvcnRfYXg4ODc5Ni4KIAotCSAgVGhlIGRyaXZlciBpcyBub3QgZGVwZW5kYW50IG9uIHRoZSBBWDg4Nzk2IG5ldHdvcmsgZHJpdmVyLCBhbmQKKwkgIFRoZSBkcml2ZXIgaXMgbm90IGRlcGVuZGVudCBvbiB0aGUgQVg4ODc5NiBuZXR3b3JrIGRyaXZlciwgYW5kCiAJICBzaG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBvZiB0aGUgY2hpcC4KIAogY29uZmlnIFBBUlBPUlRfMTI4NApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJwb3J0L2llZWUxMjg0LmMgYi9kcml2ZXJzL3BhcnBvcnQvaWVlZTEyODQuYwppbmRleCA4OTAxZWNmLi5mOWZkNGIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcnBvcnQvaWVlZTEyODQuYworKysgYi9kcml2ZXJzL3BhcnBvcnQvaWVlZTEyODQuYwpAQCAtMzU1LDcgKzM1NSw3IEBACiAJCXJldHVybiAwOwogCX0KIAotCS8qIEdvIHRvIGNvbXBhYmlsaXR5IGZvcndhcmQgaWRsZSBtb2RlICovCisJLyogR28gdG8gY29tcGF0aWJpbGl0eSBmb3J3YXJkIGlkbGUgbW9kZSAqLwogCWlmIChwb3J0LT5pZWVlMTI4NC5tb2RlICE9IElFRUUxMjg0X01PREVfQ09NUEFUKQogCQlwYXJwb3J0X2llZWUxMjg0X3Rlcm1pbmF0ZSAocG9ydCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMgYi9kcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9wYy5jCmluZGV4IDhkNjJmYjcuLmEzNzU1ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMKKysrIGIvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYwpAQCAtMTQ4OCw3ICsxNDg4LDcgQEAKIAogCW91dGIoa2V5LCBpbyk7CiAJb3V0YihrZXksIGlvKTsgICAgIC8qIFdyaXRlIE1hZ2ljIFNlcXVlbmNlIHRvIEVGRVIsIGV4dGVuZGVkCi0JCQkgICAgICBmdW50aW9uIGVuYWJsZSByZWdpc3RlciAqLworCQkJICAgICAgZnVuY3Rpb24gZW5hYmxlIHJlZ2lzdGVyICovCiAJb3V0YigweDIwLCBpbyk7ICAgIC8qIFdyaXRlIEVGSVIsIGV4dGVuZGVkIGZ1bmN0aW9uIGluZGV4IHJlZ2lzdGVyICovCiAJZGV2aWQgPSBpbmIoaW8gKyAxKTsgIC8qIFJlYWQgRUZEUiwgZXh0ZW5kZWQgZnVuY3Rpb24gZGF0YSByZWdpc3RlciAqLwogCW91dGIoMHgyMSwgaW8pOwpAQCAtMTUyNyw3ICsxNTI3LDcgQEAKIAl4X29sZGlkID0gaW5iKGlvICsgMik7CiAKIAlvdXRiKGtleSwgaW8pOyAgICAgLyogV3JpdGUgTWFnaWMgQnl0ZSB0byBFRkVSLCBleHRlbmRlZAotCQkJICAgICAgZnVudGlvbiBlbmFibGUgcmVnaXN0ZXIgKi8KKwkJCSAgICAgIGZ1bmN0aW9uIGVuYWJsZSByZWdpc3RlciAqLwogCW91dGIoMHgyMCwgaW8gKyAyKTsgIC8qIFdyaXRlIEVGSVIsIGV4dGVuZGVkIGZ1bmN0aW9uIGluZGV4IHJlZ2lzdGVyICovCiAJZGV2aWQgPSBpbmIoaW8gKyAyKTsgIC8qIFJlYWQgRUZEUiwgZXh0ZW5kZWQgZnVuY3Rpb24gZGF0YSByZWdpc3RlciAqLwogCW91dGIoMHgyMSwgaW8gKyAxKTsKQEAgLTE1NjksNyArMTU2OSw3IEBACiAKIAlvdXRiKGtleSwgaW8pOwogCW91dGIoa2V5LCBpbyk7ICAgICAvKiBXcml0ZSBNYWdpYyBTZXF1ZW5jZSB0byBFRkVSLCBleHRlbmRlZAotCQkJICAgICAgZnVudGlvbiBlbmFibGUgcmVnaXN0ZXIgKi8KKwkJCSAgICAgIGZ1bmN0aW9uIGVuYWJsZSByZWdpc3RlciAqLwogCW91dGIoMHgwZCwgaW8pOyAgICAvKiBXcml0ZSBFRklSLCBleHRlbmRlZCBmdW5jdGlvbiBpbmRleCByZWdpc3RlciAqLwogCW9sZGlkID0gaW5iKGlvICsgMSk7ICAvKiBSZWFkIEVGRFIsIGV4dGVuZGVkIGZ1bmN0aW9uIGRhdGEgcmVnaXN0ZXIgKi8KIAlvdXRiKDB4MGUsIGlvKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaV9wY2locC5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMKaW5kZXggM2JjNzJkMS4uOGYzZmFmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMKQEAgLTM1MSw3ICszNTEsNyBAQAogCSAqIFRvIGhhbmRsZSBkaWZmZXJlbnQgQklPUyBiZWhhdmlvciwgd2UgbG9vayBmb3IgX09TQyBvbiBhIHJvb3QKIAkgKiBicmlkZ2UgcHJlZmVyZW50aWFsbHkgKGFjY29yZGluZyB0byBQQ0kgZncgc3BlYykuIExhdGVyIGZvcgogCSAqIE9TSFAgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgaG90cGx1ZyBjb250cm9sbGVyIGFuZCBpdHMgcGFyZW50cywKLQkgKiB1cHRvIHRoZSBob3N0IGJyaWRnZSB1bmRlciB3aGljaCB0aGlzIGNvbnRyb2xsZXIgZXhpc3RzLgorCSAqIHVwIHRvIHRoZSBob3N0IGJyaWRnZSB1bmRlciB3aGljaCB0aGlzIGNvbnRyb2xsZXIgZXhpc3RzLgogCSAqLwogCWhhbmRsZSA9IGFjcGlfZmluZF9yb290X2JyaWRnZV9oYW5kbGUocGRldik7CiAJaWYgKGhhbmRsZSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKaW5kZXggZTYxMGNmZS4uMmY2N2U5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYworKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jCkBAIC01ODUsNyArNTg1LDcgQEAKIAogCS8qCiAJICogT24gcm9vdCBicmlkZ2VzIHdpdGggaG90cGx1ZyBzbG90cyBkaXJlY3RseSB1bmRlcm5lYXRoIChpZSwKLQkgKiBubyBwMnAgYnJpZGdlIGluYmV0d2VlbiksIHdlIGNhbGwgY2xlYW51cF9icmlkZ2UoKS4gCisJICogbm8gcDJwIGJyaWRnZSBiZXR3ZWVuKSwgd2UgY2FsbCBjbGVhbnVwX2JyaWRnZSgpLiAKIAkgKgogCSAqIFRoZSBlbHNlIGNsYXVzZSBjbGVhbnMgdXAgcm9vdCBicmlkZ2VzIHRoYXQgZWl0aGVyIGhhZCBubwogCSAqIGhvdHBsdWcgc2xvdHMgYXQgYWxsLCBvciBoYWQgYSBwMnAgYnJpZGdlIHVuZGVybmVhdGguCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3JwYXBocF9jb3JlLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3JwYXBocF9jb3JlLmMKaW5kZXggZWY3NDExYy4uNzU4YWRiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFwaHBfY29yZS5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcnBhcGhwX2NvcmUuYwpAQCAtMjkwLDcgKzI5MCw3IEBACiAgKiBAZG46IGRldmljZSBub2RlIG9mIHNsb3QKICAqCiAgKiBUaGlzIHN1YnJvdXRpbmUgd2lsbCByZWdpc3RlciBhIGhvdHBsdWdhYmxlIHNsb3Qgd2l0aCB0aGUKLSAqIFBDSSBob3RwbHVnIGluZnJhc3RydWN0dXJlLiBUaGlzIHJvdXRpbmUgaXMgdHlwaWNhbHkgY2FsbGVkCisgKiBQQ0kgaG90cGx1ZyBpbmZyYXN0cnVjdHVyZS4gVGhpcyByb3V0aW5lIGlzIHR5cGljYWxseSBjYWxsZWQKICAqIGR1cmluZyBib290IHRpbWUsIGlmIHRoZSBob3RwbHVnIHNsb3RzIGFyZSBwcmVzZW50IGF0IGJvb3QgdGltZSwKICAqIG9yIGlzIGNhbGxlZCBsYXRlciwgYnkgdGhlIGRscGFyIGFkZCBjb2RlLCBpZiB0aGUgc2xvdCBpcwogICogYmVpbmcgZHluYW1pY2FsbHkgYWRkZWQgZHVyaW5nIHJ1bnRpbWUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9pbnRlbC1pb21tdS5jIGIvZHJpdmVycy9wY2kvaW50ZWwtaW9tbXUuYwppbmRleCA3ZGEzYmVmLi41MDVjMWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9pbnRlbC1pb21tdS5jCisrKyBiL2RyaXZlcnMvcGNpL2ludGVsLWlvbW11LmMKQEAgLTIyNjUsNyArMjI2NSw3IEBACiAJCS8qCiAJCSAqIFRCRDoKIAkJICogd2UgY291bGQgc2hhcmUgdGhlIHNhbWUgcm9vdCAmIGNvbnRleHQgdGFibGVzCi0JCSAqIGFtb3VuZyBhbGwgSU9NTVUncy4gTmVlZCB0byBTcGxpdCBpdCBsYXRlci4KKwkJICogYW1vbmcgYWxsIElPTU1VJ3MuIE5lZWQgdG8gU3BsaXQgaXQgbGF0ZXIuCiAJCSAqLwogCQlyZXQgPSBpb21tdV9hbGxvY19yb290X2VudHJ5KGlvbW11KTsKIAkJaWYgKHJldCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaW50cl9yZW1hcHBpbmcuYyBiL2RyaXZlcnMvcGNpL2ludHJfcmVtYXBwaW5nLmMKaW5kZXggYTIyNTU3Yi4uMzYwN2ZhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaW50cl9yZW1hcHBpbmcuYworKysgYi9kcml2ZXJzL3BjaS9pbnRyX3JlbWFwcGluZy5jCkBAIC0yODksNyArMjg5LDcgQEAKICAqIHNvdXJjZSB2YWxpZGF0aW9uIHR5cGUKICAqLwogI2RlZmluZSBTVlRfTk9fVkVSSUZZCQkweDAgIC8qIG5vIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZCAqLwotI2RlZmluZSBTVlRfVkVSSUZZX1NJRF9TUQkweDEgIC8qIHZlcmlmeSB1c2luZyBTSUQgYW5kIFNRIGZpZWxzICovCisjZGVmaW5lIFNWVF9WRVJJRllfU0lEX1NRCTB4MSAgLyogdmVyaWZ5IHVzaW5nIFNJRCBhbmQgU1EgZmllbGRzICovCiAjZGVmaW5lIFNWVF9WRVJJRllfQlVTCQkweDIgIC8qIHZlcmlmeSBidXMgb2YgcmVxdWVzdC1pZCAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaW92YS5jIGIvZHJpdmVycy9wY2kvaW92YS5jCmluZGV4IDc5MTQ5NTEuLjk2MDZlNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2lvdmEuYworKysgYi9kcml2ZXJzL3BjaS9pb3ZhLmMKQEAgLTM5MSw3ICszOTEsNyBAQAogCQkJCWJyZWFrOwogCX0KIAotCS8qIFdlIGFyZSBoZXJlIGVpdGhlciBiZWNhc3VlIHRoaXMgaXMgdGhlIGZpcnN0IHJlc2VydmVyIG5vZGUKKwkvKiBXZSBhcmUgaGVyZSBlaXRoZXIgYmVjYXVzZSB0aGlzIGlzIHRoZSBmaXJzdCByZXNlcnZlciBub2RlCiAJICogb3IgbmVlZCB0byBpbnNlcnQgcmVtYWluaW5nIG5vbiBvdmVybGFwIGFkZHIgcmFuZ2UKIAkgKi8KIAlpb3ZhID0gX19pbnNlcnRfbmV3X3JhbmdlKGlvdmFkLCBwZm5fbG8sIHBmbl9oaSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYyBiL2RyaXZlcnMvcGNpL3BjaS1zeXNmcy5jCmluZGV4IGE4YTI3N2EuLmY4ZGViM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3BjaS1zeXNmcy5jCisrKyBiL2RyaXZlcnMvcGNpL3BjaS1zeXNmcy5jCkBAIC02NDUsNyArNjQ1LDcgQEAKICAqIGEgcGVyLWJ1cyBiYXNpcy4gIFRoaXMgcm91dGluZSBjcmVhdGVzIHRoZSBmaWxlcyBhbmQgdGllcyB0aGVtIGludG8KICAqIHRoZWlyIGFzc29jaWF0ZWQgcmVhZCwgd3JpdGUgYW5kIG1tYXAgZmlsZXMgZnJvbSBwY2ktc3lzZnMuYwogICoKLSAqIE9uIGVycm9yIHVud2luZCwgYnV0IGRvbid0IHByb3BvZ2F0ZSB0aGUgZXJyb3IgdG8gdGhlIGNhbGxlcgorICogT24gZXJyb3IgdW53aW5kLCBidXQgZG9uJ3QgcHJvcGFnYXRlIHRoZSBlcnJvciB0byB0aGUgY2FsbGVyCiAgKiBhcyBpdCBpcyBvayB0byBzZXQgdXAgdGhlIFBDSSBidXMgd2l0aG91dCB0aGVzZSBmaWxlcy4KICAqLwogdm9pZCBwY2lfY3JlYXRlX2xlZ2FjeV9maWxlcyhzdHJ1Y3QgcGNpX2J1cyAqYikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3F1aXJrcy5jIGIvZHJpdmVycy9wY2kvcXVpcmtzLmMKaW5kZXggYmQ4MGY2My4uNTEyOWVkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcXVpcmtzLmMKKysrIGIvZHJpdmVycy9wY2kvcXVpcmtzLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCSAqCVRoaXMgaGFwcGVucyB0byBpbmNsdWRlIHRoZSBJREUgY29udHJvbGxlcnMuLi4uCiAJICoKIAkgKglWSUEgb25seSBhcHBseSB0aGlzIGZpeCB3aGVuIGFuIFNCIExpdmUhIGlzIHByZXNlbnQgYnV0IHVuZGVyCi0JICoJYm90aCBMaW51eCBhbmQgV2luZG93cyB0aGlzIGlzbnQgZW5vdWdoLCBhbmQgd2UgaGF2ZSBzZWVuCisJICoJYm90aCBMaW51eCBhbmQgV2luZG93cyB0aGlzIGlzbid0IGVub3VnaCwgYW5kIHdlIGhhdmUgc2VlbgogCSAqCWNvcnJ1cHRpb24gd2l0aG91dCBTQiBMaXZlISBidXQgd2l0aCB0aGluZ3MgbGlrZSAzIFVETUEgSURFCiAJICoJY29udHJvbGxlcnMuIFNvIHdlIGlnbm9yZSB0aGF0IGJpdCBvZiB0aGUgVklBIHJlY29tbWVuZGF0aW9uLi4KIAkgKi8KQEAgLTI2ODAsNyArMjY4MCw3IEBACiAgKiBUaGlzIGlzIGEgcXVpcmsgZm9yIHRoZSBSaWNvaCBNTUMgY29udHJvbGxlciBmb3VuZCBhcyBhIHBhcnQgb2YKICAqIHNvbWUgbXVsaWZ1bmN0aW9uIGNoaXBzLgogCi0gKiBUaGlzIGlzIHZlcnkgc2ltaWxpYXIgYW5kIGJhc2VkIG9uIHRoZSByaWNvaF9tbWMgZHJpdmVyIHdyaXR0ZW4gYnkKKyAqIFRoaXMgaXMgdmVyeSBzaW1pbGFyIGFuZCBiYXNlZCBvbiB0aGUgcmljb2hfbW1jIGRyaXZlciB3cml0dGVuIGJ5CiAgKiBQaGlsaXAgTGFuZ2RhbGUuIFRoYW5rIHlvdSBmb3IgdGhlc2UgbWFnaWMgc2VxdWVuY2VzLgogICoKICAqIFRoZXNlIGNoaXBzIGltcGxlbWVudCB0aGUgZm91ciBtYWluIG1lbW9yeSBjYXJkIGNvbnRyb2xsZXJzIChTRCwgTU1DLCBNUywgeEQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9pODIwOTIuYyBiL2RyaXZlcnMvcGNtY2lhL2k4MjA5Mi5jCmluZGV4IGZjNzkwNmUuLjNlNDQ3ZDAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjbWNpYS9pODIwOTIuYworKysgYi9kcml2ZXJzL3BjbWNpYS9pODIwOTIuYwpAQCAtNTQsNyArNTQsNyBAQAogCS5zZXRfbWVtX21hcAkJPSBpODIwOTJhYV9zZXRfbWVtX21hcCwKIH07CiAKLS8qIFRoZSBjYXJkIGNhbiBkbyB1cHRvIDQgc29ja2V0cywgYWxsb2NhdGUgYSBzdHJ1Y3R1cmUgZm9yIGVhY2ggb2YgdGhlbSAqLworLyogVGhlIGNhcmQgY2FuIGRvIHVwIHRvIDQgc29ja2V0cywgYWxsb2NhdGUgYSBzdHJ1Y3R1cmUgZm9yIGVhY2ggb2YgdGhlbSAqLwogCiBzdHJ1Y3Qgc29ja2V0X2luZm8gewogCWludAludW1iZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9wY21jaWFfcmVzb3VyY2UuYyBiL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jCmluZGV4IDQyZmJmMWEuLmZlNzdlODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jCkBAIC0xNzMsNyArMTczLDcgQEAKIAljID0gcF9kZXYtPmZ1bmN0aW9uX2NvbmZpZzsKIAogCWlmICghKGMtPnN0YXRlICYgQ09ORklHX0xPQ0tFRCkpIHsKLQkJZGV2X2RiZygmcF9kZXYtPmRldiwgIkNvbmZpZ3VyYXRpb24gaXNudCd0IGxvY2tlZFxuIik7CisJCWRldl9kYmcoJnBfZGV2LT5kZXYsICJDb25maWd1cmF0aW9uIGlzbid0J3QgbG9ja2VkXG4iKTsKIAkJbXV0ZXhfdW5sb2NrKCZzLT5vcHNfbXV0ZXgpOwogCQlyZXR1cm4gLUVBQ0NFUzsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9weGEyeHhfbHViYm9jay5jIGIvZHJpdmVycy9wY21jaWEvcHhhMnh4X2x1YmJvY2suYwppbmRleCAyNWFmZTYzLi5jMjE4ODhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjbWNpYS9weGEyeHhfbHViYm9jay5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL3B4YTJ4eF9sdWJib2NrLmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCQkJICogV2UgbmVlZCB0byBoYWNrIGFyb3VuZCB0aGUgY29uc3QgcXVhbGlmaWVyIGFzCiAJCQkgKiB3ZWxsIHRvIGtlZXAgdGhpcyB1Z2x5IHdvcmthcm91bmQgbG9jYWxpemVkIGFuZAogCQkJICogbm90IGZvcmNlIGl0IHRvIHRoZSByZXN0IG9mIHRoZSBjb2RlLiBCYXJmIGJhZ3MKLQkJCSAqIGF2YWxpYWJsZSBpbiB0aGUgc2VhdCBwb2NrZXQgaW4gZnJvbnQgb2YgeW91IQorCQkJICogYXZhaWxhYmxlIGluIHRoZSBzZWF0IHBvY2tldCBpbiBmcm9udCBvZiB5b3UhCiAJCQkgKi8KIAkJCSgoc29ja2V0X3N0YXRlX3QgKilzdGF0ZSktPlZjYyA9IDUwOwogCQkJKChzb2NrZXRfc3RhdGVfdCAqKXN0YXRlKS0+VnBwID0gNTA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS90aTExM3guaCBiL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oCmluZGV4IDlmZmE5N2QuLmE3MTc4OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oCisrKyBiL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oCkBAIC02OTEsNyArNjkxLDcgQEAKIAkJLyoKIAkJICogdGhvc2UgYXJlIGVpdGhlciBzaW5nbGUgb3IgZHVhbCBzbG90IENCIHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbnMKIAkJICogbGlrZSAxMzk0LCBzbWFydGNhcmQgcmVhZGVyLCBldGMuIGNoZWNrIHRoZSBUSUVBTEwgZmxhZyBmb3IgdGhlbQotCQkgKiB0aGUgVElFQUxMIGZsYWcgYmluZHMgdGhlIElSUSBvZiBhbGwgZnVuY3Rpb25zIHRvZ2hldGhlci4KKwkJICogdGhlIFRJRUFMTCBmbGFnIGJpbmRzIHRoZSBJUlEgb2YgYWxsIGZ1bmN0aW9ucyB0b2dldGhlci4KIAkJICogd2UgY2F0Y2ggdGhlIHNpbmdsZSBzbG90IHZhcmlhbnRzIGxhdGVyLgogCQkgKi8KIAkJc3lzY3RsID0gY29uZmlnX3JlYWRsKHNvY2tldCwgVEkxMTNYX1NZU1RFTV9DT05UUk9MKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF90aGVybWFsLmMgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbF9taWRfdGhlcm1hbC5jCmluZGV4IDZjMTJkYjUuLmMyZjRiZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF90aGVybWFsLmMKKysrIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfbWlkX3RoZXJtYWwuYwpAQCAtMjAyLDcgKzIwMiw3IEBACiAgICAgICAgaWYgKHJldCkKICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICAgICAvKiBTaGlmdCBiaXRzIHRvIGFjY29tb2RhdGUgdGhlIGxvd2VyIHR3byBkYXRhIGJpdHMgKi8KKyAgICAgICAvKiBTaGlmdCBiaXRzIHRvIGFjY29tbW9kYXRlIHRoZSBsb3dlciB0d28gZGF0YSBiaXRzICovCiAgICAgICAgYWRjX3ZhbCA9IChkYXRhIDw8IDIpOwogICAgICAgIGFkZHIrKzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbnAvY2FyZC5jIGIvZHJpdmVycy9wbnAvY2FyZC5jCmluZGV4IDRhNjUxZjYuLmJjMDA2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcG5wL2NhcmQuYworKysgYi9kcml2ZXJzL3BucC9jYXJkLmMKQEAgLTMyMCw3ICszMjAsNyBAQAogICogcG5wX3JlcXVlc3RfY2FyZF9kZXZpY2UgLSBTZWFyY2hlcyBmb3IgYSBQblAgZGV2aWNlIHVuZGVyIHRoZSBzcGVjaWZpZWQgY2FyZAogICogQGNsaW5rOiBwb2ludGVyIHRvIHRoZSBjYXJkIGxpbmssIGNhbm5vdCBiZSBOVUxMCiAgKiBAaWQ6IHBvaW50ZXIgdG8gYSBQblAgSUQgc3RydWN0dXJlIHRoYXQgZXhwbGFpbnMgdGhlIHJ1bGVzIGZvciBmaW5kaW5nIHRoZSBkZXZpY2UKLSAqIEBmcm9tOiBTdGFydGluZyBwbGFjZSB0byBzZWFyY2ggZnJvbS4gSWYgTlVMTCBpdCB3aWxsIHN0YXJ0IGZyb20gdGhlIGJlZ2luaW5nLgorICogQGZyb206IFN0YXJ0aW5nIHBsYWNlIHRvIHNlYXJjaCBmcm9tLiBJZiBOVUxMIGl0IHdpbGwgc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nLgogICovCiBzdHJ1Y3QgcG5wX2RldiAqcG5wX3JlcXVlc3RfY2FyZF9kZXZpY2Uoc3RydWN0IHBucF9jYXJkX2xpbmsgKmNsaW5rLAogCQkJCQljb25zdCBjaGFyICppZCwgc3RydWN0IHBucF9kZXYgKmZyb20pCkBAIC0zNjksNyArMzY5LDcgQEAKIAogLyoqCiAgKiBwbnBfcmVsZWFzZV9jYXJkX2RldmljZSAtIGNhbGwgdGhpcyB3aGVuIHRoZSBkcml2ZXIgbm8gbG9uZ2VyIG5lZWRzIHRoZSBkZXZpY2UKLSAqIEBkZXY6IHBvaW50ZXIgdG8gdGhlIFBuUCBkZXZpY2Ugc3R1Y3R1cmUKKyAqIEBkZXY6IHBvaW50ZXIgdG8gdGhlIFBuUCBkZXZpY2Ugc3RydWN0dXJlCiAgKi8KIHZvaWQgcG5wX3JlbGVhc2VfY2FyZF9kZXZpY2Uoc3RydWN0IHBucF9kZXYgKmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG5wL3BucGJpb3MvYmlvc2NhbGxzLmMgYi9kcml2ZXJzL3BucC9wbnBiaW9zL2Jpb3NjYWxscy5jCmluZGV4IDg1OTFmNmEuLmI4NTlkMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcG5wL3BucGJpb3MvYmlvc2NhbGxzLmMKKysrIGIvZHJpdmVycy9wbnAvcG5wYmlvcy9iaW9zY2FsbHMuYwpAQCAtMjE5LDcgKzIxOSw3IEBACiAJCSAgICAgICBtb2R1bGUpOwogCQlicmVhazsKIAljYXNlIFBOUF9IQVJEV0FSRV9FUlJPUjoKLQkJcHJpbnRrKEtFUk5fRVJSICJQblBCSU9TOiAlczogYSBoYXJkd2FyZSBmYWlsdXJlIGhhcyBvY2N1cmVkXG4iLAorCQlwcmludGsoS0VSTl9FUlIgIlBuUEJJT1M6ICVzOiBhIGhhcmR3YXJlIGZhaWx1cmUgaGFzIG9jY3VycmVkXG4iLAogCQkgICAgICAgbW9kdWxlKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHBzL0tjb25maWcgYi9kcml2ZXJzL3Bwcy9LY29uZmlnCmluZGV4IGYwZDMzNzYuLjI1OGNhNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHBzL0tjb25maWcKKysrIGIvZHJpdmVycy9wcHMvS2NvbmZpZwpAQCAtMzUsNyArMzUsNyBAQAogCWRlcGVuZHMgb24gUFBTICYmICFOT19IWgogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgZGlyZWN0IGluLWtlcm5lbCB0aW1lCi0JICBzeW5jcm9uaXphdGlvbiB1c2luZyBhbiBleHRlcm5hbCBQUFMgc2lnbmFsLgorCSAgc3luY2hyb25pemF0aW9uIHVzaW5nIGFuIGV4dGVybmFsIFBQUyBzaWduYWwuCiAKIAkgIEl0IGRvZXNuJ3Qgd29yayBvbiB0aWNrbGVzcyBzeXN0ZW1zIGF0IHRoZSBtb21lbnQuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHMzL3BzMy1scG0uYyBiL2RyaXZlcnMvcHMzL3BzMy1scG0uYwppbmRleCA4MDAwOTg1Li42NDM2OTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BzMy9wczMtbHBtLmMKKysrIGIvZHJpdmVycy9wczMvcHMzLWxwbS5jCkBAIC05MTksNyArOTE5LDcgQEAKICAqIEBvZmZzZXQ6IE9mZnNldCBpbiBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdHJhY2UgYnVmZmVyLgogICogQGJ1ZjogQ29weSBkZXN0aW5hdGlvbi4KICAqIEBjb3VudDogTWF4aW11bSBjb3VudCBvZiBieXRlcyB0byBjb3B5LgotICogQGJ5dGVzX2NvcGllZDogUG9pbnRlciB0byBhIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNpZXZlIHRoZSBudW1iZXIgb2YKKyAqIEBieXRlc19jb3BpZWQ6IFBvaW50ZXIgdG8gYSB2YXJpYWJsZSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbnVtYmVyIG9mCiAgKiAgYnl0ZXMgY29waWVkIHRvIEBidWYuCiAgKgogICogT24gZXJyb3IgQGJ1ZiB3aWxsIGNvbnRhaW4gYW55IHN1Y2Nlc3NmdWxseSBjb3BpZWQgdHJhY2UgYnVmZmVyIGRhdGEKQEAgLTk3NCw3ICs5NzQsNyBAQAogICogQG9mZnNldDogT2Zmc2V0IGluIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0cmFjZSBidWZmZXIuCiAgKiBAYnVmOiBBIF9fdXNlciBjb3B5IGRlc3RpbmF0aW9uLgogICogQGNvdW50OiBNYXhpbXVtIGNvdW50IG9mIGJ5dGVzIHRvIGNvcHkuCi0gKiBAYnl0ZXNfY29waWVkOiBQb2ludGVyIHRvIGEgdmFyaWFibGUgdGhhdCB3aWxsIHJlY2lldmUgdGhlIG51bWJlciBvZgorICogQGJ5dGVzX2NvcGllZDogUG9pbnRlciB0byBhIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBudW1iZXIgb2YKICAqICBieXRlcyBjb3BpZWQgdG8gQGJ1Zi4KICAqCiAgKiBPbiBlcnJvciBAYnVmIHdpbGwgY29udGFpbiBhbnkgc3VjY2Vzc2Z1bGx5IGNvcGllZCB0cmFjZSBidWZmZXIgZGF0YQpAQCAtMTA3NCw3ICsxMDc0LDcgQEAKIAogLyoqCiAgKiBwczNfbHBtX29wZW4gLSBPcGVuIHRoZSBsb2dpY2FsIHBlcmZvcm1hbmNlIG1vbml0b3IgZGV2aWNlLgotICogQHRiX3R5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiB0cmFjZSBidWZmZXIgbHYxIHNvdWxkIHVzZSBmb3IgdGhpcyBscG0KKyAqIEB0Yl90eXBlOiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdHJhY2UgYnVmZmVyIGx2MSBzaG91bGQgdXNlIGZvciB0aGlzIGxwbQogICogIGluc3RhbmNlLCBzcGVjaWZpZWQgYnkgb25lIG9mIGVudW0gcHMzX2xwbV90Yl90eXBlLgogICogQHRiX2NhY2hlOiBPcHRpb25hbCB1c2VyIHN1cHBsaWVkIGJ1ZmZlciB0byB1c2UgYXMgdGhlIHRyYWNlIGJ1ZmZlciBjYWNoZS4KICAqICBJZiBOVUxMLCB0aGUgZHJpdmVyIHdpbGwgYWxsb2NhdGUgYW5kIG1hbmFnZSBhbiBpbnRlcm5hbCBidWZmZXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BzMy9wczMtc3lzLW1hbmFnZXIuYyBiL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jCmluZGV4IGQzN2M0NDUuLjFiOTgzNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jCkBAIC04MCw3ICs4MCw3IEBACiAgKgogICogQ3VycmVudGx5IGFsbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBzeXN0ZW0gbWFuYWdlciBhcmUgZWl0aGVyCiAgKiAoMTYgYnl0ZXMgaGVhZGVyICsgOCBieXRlcyBwYXlsb2FkID0gMjQgYnl0ZXMpIG9yICgxNiBieXRlcyBoZWFkZXIKLSAqICsgMTYgYnl0ZXMgcGF5bG9hZCA9IDMyIGJ5dGVzKS4gIFRoaXMga25vd2xlZ2UgaXMgdXNlZCB0byBzaW1wbGlmeQorICogKyAxNiBieXRlcyBwYXlsb2FkID0gMzIgYnl0ZXMpLiAgVGhpcyBrbm93bGVkZ2UgaXMgdXNlZCB0byBzaW1wbGlmeQogICogdGhlIGxvZ2ljLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmFwaWRpby9yaW8tc2Nhbi5jIGIvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMKaW5kZXggM2E1OWQ1Zi4uZWU4OTM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMKKysrIGIvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMKQEAgLTI5NSw3ICsyOTUsNyBAQAogfQogCiAvKioKLSAqIHJpb19lbmFibGVfcnhfdHhfcG9ydCAtIGVuYWJsZSBpbnB1dCByZWNpZXZlciBhbmQgb3V0cHV0IHRyYW5zbWl0dGVyIG9mCisgKiByaW9fZW5hYmxlX3J4X3R4X3BvcnQgLSBlbmFibGUgaW5wdXQgcmVjZWl2ZXIgYW5kIG91dHB1dCB0cmFuc21pdHRlciBvZgogICogZ2l2ZW4gcG9ydAogICogQHBvcnQ6IE1hc3RlciBwb3J0IGFzc29jaWF0ZWQgd2l0aCB0aGUgUklPIG5ldHdvcmsKICAqIEBsb2NhbDogbG9jYWw9MSBzZWxlY3QgbG9jYWwgcG9ydCBvdGhlcndpc2UgYSBmYXIgZGV2aWNlIGlzIHJlYWNoZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmVndWxhdG9yL2NvcmUuYyBiL2RyaXZlcnMvcmVndWxhdG9yL2NvcmUuYwppbmRleCAzZmZjNjk3Li4wZmFlNTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3JlZ3VsYXRvci9jb3JlLmMKKysrIGIvZHJpdmVycy9yZWd1bGF0b3IvY29yZS5jCkBAIC0xMzEzLDcgKzEzMTMsNyBAQAogCQkJCXJldHVybiAtRUlOVkFMOwogCiAJCQkvKiBRdWVyeSBiZWZvcmUgZW5hYmxpbmcgaW4gY2FzZSBjb25maWd1cmF0aW9uCi0JCQkgKiBkZXBlbmRhbnQuICAqLworCQkJICogZGVwZW5kZW50LiAgKi8KIAkJCXJldCA9IF9yZWd1bGF0b3JfZ2V0X2VuYWJsZV90aW1lKHJkZXYpOwogCQkJaWYgKHJldCA+PSAwKSB7CiAJCQkJZGVsYXkgPSByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3JlZ3VsYXRvci9tYXg4OTUyLmMgYi9kcml2ZXJzL3JlZ3VsYXRvci9tYXg4OTUyLmMKaW5kZXggYThmNGVjZi4uZGFmZjdmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9yZWd1bGF0b3IvbWF4ODk1Mi5jCisrKyBiL2RyaXZlcnMvcmVndWxhdG9yL21heDg5NTIuYwpAQCAtMjYyLDcgKzI2Miw3IEBACiAKIAlpZiAoZXJyKSB7CiAJCWRldl93YXJuKG1heDg5NTItPmRldiwgIlZJRDAvMSBncGlvIGludmFsaWQ6ICIKLQkJCQkiRFZTIG5vdCBhdmlsYWJsZS5cbiIpOworCQkJCSJEVlMgbm90IGF2YWlsYWJsZS5cbiIpOwogCQltYXg4OTUyLT52aWQwID0gMDsKIAkJbWF4ODk1Mi0+dmlkMSA9IDA7CiAJCS8qIE1hcmsgaW52YWxpZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvaW50ZXJmYWNlLmMgYi9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYwppbmRleCA4ZWM2YjA2Li4yMzcxOWYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYworKysgYi9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYwpAQCAtNDU0LDcgKzQ1NCw3IEBACiAgKiBAcnRjOiBwb2ludGVyIHRvIHRoZSBydGMgZGV2aWNlCiAgKgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiBBSUUsIFVJRSBvciBQSUUgbW9kZSBpbnRlcnJ1cHQKLSAqIGhhcyBvY2N1cmVkIChvciBiZWVuIGVtdWxhdGVkKS4KKyAqIGhhcyBvY2N1cnJlZCAob3IgYmVlbiBlbXVsYXRlZCkuCiAgKgogICogVHJpZ2dlcnMgdGhlIHJlZ2lzdGVyZWQgaXJxX3Rhc2sgZnVuY3Rpb24gY2FsbGJhY2suCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMgYi9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jCmluZGV4IDUxOGE3NmUuLmUzOWI3N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWF0OTFybTkyMDAuYwpAQCAtNjAsNyArNjAsNyBAQAogCS8qCiAJICogVGhlIENhbGVuZGFyIEFsYXJtIHJlZ2lzdGVyIGRvZXMgbm90IGhhdmUgYSBmaWVsZCBmb3IKIAkgKiB0aGUgeWVhciAtIHNvIHRoZXNlIHdpbGwgcmV0dXJuIGFuIGludmFsaWQgdmFsdWUuICBXaGVuIGFuCi0JICogYWxhcm0gaXMgc2V0LCBhdDkxX2FsYXJtX3llYXIgd2lsbGUgc3RvcmUgdGhlIGN1cnJlbnQgeWVhci4KKwkgKiBhbGFybSBpcyBzZXQsIGF0OTFfYWxhcm1feWVhciB3aWxsIHN0b3JlIHRoZSBjdXJyZW50IHllYXIuCiAJICovCiAJdG0tPnRtX3llYXIgID0gYmNkMmJpbihkYXRlICYgQVQ5MV9SVENfQ0VOVCkgKiAxMDA7CS8qIGNlbnR1cnkgKi8KIAl0bS0+dG1feWVhciArPSBiY2QyYmluKChkYXRlICYgQVQ5MV9SVENfWUVBUikgPj4gOCk7CS8qIHllYXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1iZmluLmMgYi9kcml2ZXJzL3J0Yy9ydGMtYmZpbi5jCmluZGV4IGNhOWNmZjguLmEwZmM0Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1iZmluLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWJmaW4uYwpAQCAtMjAsOSArMjAsOSBAQAogICogd3JpdGUgd291bGQgYmUgZGlzY2FyZGVkIGFuZCB0aGluZ3MgcXVpY2tseSBmYWxsIGFwYXJ0LgogICoKICAqIFRvIGtlZXAgdGhpcyBkZWxheSBmcm9tIHNpZ25pZmljYW50bHkgZGVncmFkaW5nIHBlcmZvcm1hbmNlICh3ZSwgaW4gdGhlb3J5LAotICogd291bGQgaGF2ZSB0byBzbGVlcCBmb3IgdXAgdG8gMSBzZWNvbmQgZXZlcnl0aW1lIHdlIHdhbnRlZCB0byB3cml0ZSBhCisgKiB3b3VsZCBoYXZlIHRvIHNsZWVwIGZvciB1cCB0byAxIHNlY29uZCBldmVyeSB0aW1lIHdlIHdhbnRlZCB0byB3cml0ZSBhCiAgKiByZWdpc3RlciksIHdlIG9ubHkgY2hlY2sgdGhlIHdyaXRlIHBlbmRpbmcgc3RhdHVzIGJlZm9yZSB3ZSBzdGFydCB0byBpc3N1ZQotICogYSBuZXcgd3JpdGUuICBXZSBiYW5rIG9uIHRoZSBpZGVhIHRoYXQgaXQgZG9lc250IG1hdHRlciB3aGVuIHRoZSBzeW5jCisgKiBhIG5ldyB3cml0ZS4gIFdlIGJhbmsgb24gdGhlIGlkZWEgdGhhdCBpdCBkb2Vzbid0IG1hdHRlciB3aGVuIHRoZSBzeW5jCiAgKiBoYXBwZW5zIHNvIGxvbmcgYXMgd2UgZG9uJ3QgYXR0ZW1wdCBhbm90aGVyIHdyaXRlIGJlZm9yZSBpdCBkb2VzLiAgVGhlIG9ubHkKICAqIHRpbWUgdXNlcnNwYWNlIHdvdWxkIHRha2UgdGhpcyBwZW5hbHR5IGlzIHdoZW4gdGhleSB0cnkgYW5kIGRvIG11bHRpcGxlCiAgKiBvcGVyYXRpb25zIHJpZ2h0IGFmdGVyIGFub3RoZXIgLi4uIGJ1dCBpbiB0aGlzIGNhc2UsIHRoZXkgbmVlZCB0byB0YWtlIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLWxwYzMyeHguYyBiL2RyaXZlcnMvcnRjL3J0Yy1scGMzMnh4LmMKaW5kZXggZWM4NzAxYy4uYWUxNjI1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWxwYzMyeHguYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtbHBjMzJ4eC5jCkBAIC0yNDAsNyArMjQwLDcgQEAKIAlzcGluX2xvY2tfaW5pdCgmcnRjLT5sb2NrKTsKIAogCS8qCi0JICogVGhlIFJUQyBpcyBvbiBhIHNlcGVyYXRlIHBvd2VyIGRvbWFpbiBhbmQgY2FuIGtlZXAgaXQncyBzdGF0ZQorCSAqIFRoZSBSVEMgaXMgb24gYSBzZXBhcmF0ZSBwb3dlciBkb21haW4gYW5kIGNhbiBrZWVwIGl0J3Mgc3RhdGUKIAkgKiBhY3Jvc3MgYSBjaGlwIHBvd2VyIGN5Y2xlLiBJZiB0aGUgUlRDIGhhcyBuZXZlciBiZWVuIHByZXZpb3VzbHkKIAkgKiBzZXR1cCwgdGhlbiBzZXQgaXQgdXAgbm93IGZvciB0aGUgZmlyc3QgdGltZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy14MTIwNS5jIGIvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMKaW5kZXggOWFhZTQ5MS4uYjAwYWFkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMKQEAgLTU3Myw3ICs1NzMsNyBAQAogCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcnRjKTsKIAotCS8qIENoZWNrIGZvciBwb3dlciBmYWlsdXJlcyBhbmQgZXZlbnR1YWx5IGVuYWJsZSB0aGUgb3NjICovCisJLyogQ2hlY2sgZm9yIHBvd2VyIGZhaWx1cmVzIGFuZCBldmVudHVhbGx5IGVuYWJsZSB0aGUgb3NjICovCiAJaWYgKChlcnIgPSB4MTIwNV9nZXRfc3RhdHVzKGNsaWVudCwgJnNyKSkgPT0gMCkgewogCQlpZiAoc3IgJiBYMTIwNV9TUl9SVENGKSB7CiAJCQlkZXZfZXJyKCZjbGllbnQtPmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkXzM5OTBfZXJwLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF8zOTkwX2VycC5jCmluZGV4IDE2NTRhMjQuLjg3YTBjZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkXzM5OTBfZXJwLmMKKysrIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfMzk5MF9lcnAuYwpAQCAtMjIwNyw3ICsyMjA3LDcgQEAKICAqIERBU0RfMzk5MF9FUlBfQ09OVFJPTF9DSEVDSwogICoKICAqIERFU0NSSVBUSU9OCi0gKiAgIERvZXMgYSBnZW5lcmljIGluc3BlY3Rpb24gaWYgYSBjb250cm9sIGNoZWNrIG9jY3VyZWQgYW5kIHNldHMgdXAKKyAqICAgRG9lcyBhIGdlbmVyaWMgaW5zcGVjdGlvbiBpZiBhIGNvbnRyb2wgY2hlY2sgb2NjdXJyZWQgYW5kIHNldHMgdXAKICAqICAgdGhlIHJlbGF0ZWQgZXJyb3IgcmVjb3ZlcnkgcHJvY2VkdXJlCiAgKgogICogUEFSQU1FVEVSCkBAIC0yMjUwLDcgKzIyNTAsNyBAQAogCXN0cnVjdCBkYXNkX2Njd19yZXEgKmVycF9uZXcgPSBOVUxMOwogCWNoYXIgKnNlbnNlOwogCi0JLyogaWYgdGhpcyBwcm9ibGVtIG9jY3VyZWQgb24gYW4gYWxpYXMgcmV0cnkgb24gYmFzZSAqLworCS8qIGlmIHRoaXMgcHJvYmxlbSBvY2N1cnJlZCBvbiBhbiBhbGlhcyByZXRyeSBvbiBiYXNlICovCiAJZXJwX25ldyA9IGRhc2RfMzk5MF9lcnBfaW5zcGVjdF9hbGlhcyhlcnApOwogCWlmIChlcnBfbmV3KQogCQlyZXR1cm4gZXJwX25ldzsKQEAgLTIyODIsNyArMjI4Miw3IEBACiAgKiBEQVNEXzM5OTBfRVJQX0FERF9FUlAKICAqCiAgKiBERVNDUklQVElPTgotICogICBUaGlzIGZ1bnRpb24gYWRkcyBhbiBhZGRpdGlvbmFsIHJlcXVlc3QgYmxvY2sgKEVSUCkgdG8gdGhlIGhlYWQgb2YKKyAqICAgVGhpcyBmdW5jdGlvbiBhZGRzIGFuIGFkZGl0aW9uYWwgcmVxdWVzdCBibG9jayAoRVJQKSB0byB0aGUgaGVhZCBvZgogICogICB0aGUgZ2l2ZW4gY3FyIChvciBlcnApLgogICogICBGb3IgYSBjb21tYW5kIG1vZGUgY3FyIHRoZSBlcnAgaXMgaW5pdGlhbGl6ZWQgYXMgYW4gZGVmYXVsdCBlcnAKICAqICAgKHJldHJ5IFRJQykuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9kZXZtYXAuYyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jCmluZGV4IGNiNmE2N2IuLjQyZTFiZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jCisrKyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jCkBAIC0zMDIsNyArMzAyLDcgQEAKIC8qCiAgKiBUcnkgdG8gaW50ZXJwcmV0ZSB0aGUgZmlyc3QgZWxlbWVudCBvbiB0aGUgY29tbWEgc2VwYXJhdGVkIHBhcnNlIHN0cmluZwogICogYXMgYSBkZXZpY2UgbnVtYmVyIG9yIGEgcmFuZ2Ugb2YgZGV2aWNlcy4gSWYgdGhlIGludGVycHJldGF0aW9uIGlzCi0gKiBzdWNjZXNzZnVsbCwgY3JlYXRlIHRoZSBtYXRjaGluZyBkYXNkX2Rldm1hcCBlbnRyaWVzIGFuZCByZXR1cm4gYSBwb2ludGVyCisgKiBzdWNjZXNzZnVsLCBjcmVhdGUgdGhlIG1hdGNoaW5nIGRhc2RfZGV2bWFwIGVudHJpZXMgYW5kIHJldHVybiBhIHBvaW50ZXIKICAqIHRvIHRoZSByZXNpZHVhbCBzdHJpbmcuCiAgKiBJZiBpbnRlcnByZXRhdGlvbiBmYWlscyBvciBpbiBjYXNlIG9mIGFuIGVycm9yLCByZXR1cm4gYW4gZXJyb3IgY29kZS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jCmluZGV4IDQ1OWYyY2IuLmRiODAwNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Vja2QuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9lY2tkLmMKQEAgLTI4NTgsNyArMjg1OCw3IEBACiAJLyoKIAkgKiBzdHJ1Y3QgUEZYX2Vja2RfZGF0YSBoYXMgdXAgdG8gMiBieXRlIGFzIGV4dGVuZGVkIHBhcmFtZXRlcgogCSAqIHRoaXMgaXMgbmVlZGVkIGZvciB3cml0ZSBmdWxsIHRyYWNrIGFuZCBoYXMgdG8gYmUgbWVudGlvbmVkCi0JICogc2VwZXJhdGVseQorCSAqIHNlcGFyYXRlbHkKIAkgKiBhZGQgOCBpbnN0ZWFkIG9mIDIgdG8ga2VlcCA4IGJ5dGUgYm91bmRhcnkKIAkgKi8KIAlwZnhfZGF0YXNpemUgPSBzaXplb2Yoc3RydWN0IFBGWF9lY2tkX2RhdGEpICsgODsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3JhdzMyNzAuYyBiL2RyaXZlcnMvczM5MC9jaGFyL3JhdzMyNzAuYwppbmRleCA0YzAyMzc2Li5lMjFhNWMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY2hhci9yYXczMjcwLmMKKysrIGIvZHJpdmVycy9zMzkwL2NoYXIvcmF3MzI3MC5jCkBAIC02MDQsNyArNjA0LDcgQEAKIAkvKgogCSAqIFRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgMzI3MCBkZXZpY2Ugd2UgbmVlZCB0byBkbzoKIAkgKiAxKSBzZW5kIGEgJ3JlYWQgcGFydGl0aW9uJyBkYXRhIHN0cmVhbSB0byB0aGUgZGV2aWNlCi0JICogMikgd2FpdCBmb3IgdGhlIGF0dG4gaW50ZXJydXB0IHRoYXQgcHJlY2VlZHMgdGhlIHF1ZXJ5IHJlcGx5CisJICogMikgd2FpdCBmb3IgdGhlIGF0dG4gaW50ZXJydXB0IHRoYXQgcHJlY2VkZXMgdGhlIHF1ZXJ5IHJlcGx5CiAJICogMykgZG8gYSByZWFkIG1vZGlmaWVkIHRvIGdldCB0aGUgcXVlcnkgcmVwbHkKIAkgKiBUbyBtYWtlIHRoaW5ncyB3b3JzZSB3ZSBoYXZlIHRvIGNvcGUgd2l0aCBpbnRlcnZlbnRpb24KIAkgKiByZXF1aXJlZCAoMzI3MCBkZXZpY2Ugc3dpdGNoZWQgdG8gJ3N0YW5kLWJ5JykgYW5kIGNvbW1hbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3RhcGVfY2hhci5jIGIvZHJpdmVycy9zMzkwL2NoYXIvdGFwZV9jaGFyLmMKaW5kZXggZTA5MGEzMC4uODdjZDBhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NoYXIvdGFwZV9jaGFyLmMKKysrIGIvZHJpdmVycy9zMzkwL2NoYXIvdGFwZV9jaGFyLmMKQEAgLTEzOSw3ICsxMzksNyBAQAogCS8qCiAJICogSWYgdGhlIHRhcGUgaXNuJ3QgdGVybWluYXRlZCB5ZXQsIGRvIGl0IG5vdy4gQW5kIHNpbmNlIHdlIHRoZW4KIAkgKiBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgdGFwZSB0aGVyZSB3b3VsZG4ndCBiZSBhbnl0aGluZyB0byByZWFkCi0JICogYW55d2F5cy4gU28gd2UgcmV0dXJuIGltbWVkaWF0bHkuCisJICogYW55d2F5cy4gU28gd2UgcmV0dXJuIGltbWVkaWF0ZWx5LgogCSAqLwogCWlmKGRldmljZS0+cmVxdWlyZWRfdGFwZW1hcmtzKSB7CiAJCXJldHVybiB0YXBlX3N0ZF90ZXJtaW5hdGVfd3JpdGUoZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYyBiL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYwppbmRleCBkMzM1NTRkZi4uMmRiMTQ4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NoYXIvdHR5MzI3MC5jCisrKyBiL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYwpAQCAtMzI4LDcgKzMyOCw3IEBACiAKIAl0cCA9IChzdHJ1Y3QgdHR5MzI3MCAqKSBycS0+dmlldzsKIAlpZiAocnEtPnJjICE9IDApIHsKLQkJLyogV3JpdGUgd2Fzbid0IHN1Y2Nlc3NmdWxsLiBSZWZyZXNoIGFsbC4gKi8KKwkJLyogV3JpdGUgd2Fzbid0IHN1Y2Nlc3NmdWwuIFJlZnJlc2ggYWxsLiAqLwogCQl0cC0+dXBkYXRlX2ZsYWdzID0gVFRZX1VQREFURV9BTEw7CiAJCXR0eTMyNzBfc2V0X3RpbWVyKHRwLCAxKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYyBiL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jCmluZGV4IGE4NDU2OTUuLjYwODQxMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jCisrKyBiL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jCkBAIC0zMTgsNyArMzE4LDcgQEAKIAogLyoqCiAgICogY2N3X2RldmljZV9ub3RpZnkoKSAtIGluZm9ybSB0aGUgZGV2aWNlJ3MgZHJpdmVyIGFib3V0IGFuIGV2ZW50Ci0gICogQGNkZXY6IGRldmljZSBmb3Igd2hpY2ggYW4gZXZlbnQgb2NjdXJlZAorICAqIEBjZGV2OiBkZXZpY2UgZm9yIHdoaWNoIGFuIGV2ZW50IG9jY3VycmVkCiAgICogQGV2ZW50OiBldmVudCB0aGF0IG9jY3VycmVkCiAgICoKICAgKiBSZXR1cm5zOgpAQCAtNjg4LDcgKzY4OCw3IEBACiAJICAgIChzY3N3X3N0Y3RsKCZjZGV2LT5wcml2YXRlLT5pcmIuc2NzdykgJiBTQ1NXX1NUQ1RMX1NUQVRVU19QRU5EKSkgewogCQkvKgogCQkgKiBObyBmaW5hbCBzdGF0dXMgeWV0IG9yIGZpbmFsIHN0YXR1cyBub3QgeWV0IGRlbGl2ZXJlZAotCQkgKiB0byB0aGUgZGV2aWNlIGRyaXZlci4gQ2FuJ3QgZG8gcGF0aCB2ZXJmaWNhdGlvbiBub3csCisJCSAqIHRvIHRoZSBkZXZpY2UgZHJpdmVyLiBDYW4ndCBkbyBwYXRoIHZlcmlmaWNhdGlvbiBub3csCiAJCSAqIGRlbGF5IHVudGlsIGZpbmFsIHN0YXR1cyB3YXMgZGVsaXZlcmVkLgogCQkgKi8KIAkJY2Rldi0+cHJpdmF0ZS0+ZmxhZ3MuZG92ZXJpZnkgPSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmggYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuaAppbmRleCA4OGViZDExLi45Njg4ZjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuaAorKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuaApAQCAtNzYsNyArNzYsNyBAQAogCiAvKioKICAqIExhcmdlIHJhbmRvbSBudW1iZXJzIGFyZSBwdWxsZWQgaW4gNDA5NiBieXRlIGNodW5rcyBmcm9tIHRoZSBjcnlwdG8gY2FyZHMKLSAqIGFuZCBzdG9yZWQgaW4gYSBwYWdlLiBCZSBjYXJlZnVsbCB3aGVuIGluY3JlYXNpbmcgdGhpcyBidWZmZXIgZHVlIHRvIHNpemUKKyAqIGFuZCBzdG9yZWQgaW4gYSBwYWdlLiBCZSBjYXJlZnVsIHdoZW4gaW5jcmVhc2luZyB0aGlzIGJ1ZmZlciBkdWUgdG8gc2l6ZQogICogbGltaXRhdGlvbnMgZm9yIEFQIHJlcXVlc3RzLgogICovCiAjZGVmaW5lIFpDUllQVF9STkdfQlVGRkVSX1NJWkUJNDA5NgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9jbGF3LmMgYi9kcml2ZXJzL3MzOTAvbmV0L2NsYXcuYwppbmRleCA5ZmViNjJmLi5kYThhYTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2NsYXcuYworKysgYi9kcml2ZXJzL3MzOTAvbmV0L2NsYXcuYwpAQCAtNzc5LDcgKzc3OSw3IEBACiAJY2FzZSBDTEFXX1NUQVJUX1dSSVRFOgogCQlpZiAocF9jaC0+aXJiLT5zY3N3LmNtZC5kc3RhdCAmIERFVl9TVEFUX1VOSVRfQ0hFQ0spIHsKIAkJCWRldl9pbmZvKCZjZGV2LT5kZXYsCi0JCQkJIiVzOiBVbml0IENoZWNrIE9jY3VyZWQgaW4gIgorCQkJCSIlczogVW5pdCBDaGVjayBPY2N1cnJlZCBpbiAiCiAJCQkJIndyaXRlIGNoYW5uZWxcbiIsIGRldi0+bmFtZSk7CiAJCQljbGVhcl9iaXQoMCwgKHZvaWQgKikmcF9jaC0+SU9fYWN0aXZlKTsKIAkJCWlmIChwX2NoLT5pcmItPmVjd1swXSAmIDB4ODApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jCmluZGV4IDhjOTIxZmMuLjJkNjAyMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYwpAQCAtMTg0LDcgKzE4NCw3IEBACiBzdGF0aWMgdm9pZCBjdGNtcGNfY2h4X3NlbmRfc3dlZXAoZnNtX2luc3RhbmNlICpmc20sIGludCBldmVudCwgdm9pZCAqYXJnKTsKIAogLyoqCi0gKiBDaGVjayByZXR1cm4gY29kZSBvZiBhIHByZWNlZWRpbmcgY2N3X2RldmljZSBjYWxsLCBoYWx0X0lPIGV0Yy4uLgorICogQ2hlY2sgcmV0dXJuIGNvZGUgb2YgYSBwcmVjZWRpbmcgY2N3X2RldmljZSBjYWxsLCBoYWx0X0lPIGV0Yy4uLgogICoKICAqIGNoCToJVGhlIGNoYW5uZWwsIHRoZSBlcnJvciBiZWxvbmdzIHRvLgogICogUmV0dXJucyB0aGUgZXJyb3IgY29kZSAoIT0gMCkgdG8gaW5zcGVjdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvbGNzLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2xjcy5jCmluZGV4IDdmYmM0YWQuLjQ5ZDFjZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvbGNzLmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9sY3MuYwpAQCAtMTEyMyw3ICsxMTIzLDcgQEAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXBtLCB0bXAsICZjYXJkLT5pcG1fbGlzdCwgbGlzdCl7CiAJCXN3aXRjaCAoaXBtLT5pcG1fc3RhdGUpIHsKIAkJY2FzZSBMQ1NfSVBNX1NUQVRFX1NFVF9SRVFVSVJFRDoKLQkJCS8qIGRlbCBmcm9tIGlwbV9saXN0IHNvIG5vb25lIGVsc2UgY2FuIHRhbXBlciB3aXRoCisJCQkvKiBkZWwgZnJvbSBpcG1fbGlzdCBzbyBubyBvbmUgZWxzZSBjYW4gdGFtcGVyIHdpdGgKIAkJCSAqIHRoaXMgZW50cnkgKi8KIAkJCWxpc3RfZGVsX2luaXQoJmlwbS0+bGlzdCk7CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYXJkLT5pcG1fbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbWFpbi5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbWFpbi5jCmluZGV4IDEwYTNhM2IuLjg1Y2M1MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21haW4uYworKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tYWluLmMKQEAgLTExMDcsNyArMTEwNyw3IEBACiAJSU5JVF9MSVNUX0hFQUQoY2FyZC0+aXBfdGJkX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZjYXJkLT5jbWRfd2FpdGVyX2xpc3QpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmNhcmQtPndhaXRfcSk7Ci0JLyogaW50aWFsIG9wdGlvbnMgKi8KKwkvKiBpbml0aWFsIG9wdGlvbnMgKi8KIAlxZXRoX3NldF9pbnRpYWxfb3B0aW9ucyhjYXJkKTsKIAkvKiBJUCBhZGRyZXNzIHRha2VvdmVyICovCiAJSU5JVF9MSVNUX0hFQUQoJmNhcmQtPmlwYXRvLmVudHJpZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKaW5kZXggYTBlMDVlZi4uODUxMmI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCkBAIC0xMDgzLDcgKzEwODMsNyBAQAogCQl9CiAJCWJyZWFrOwogCWNhc2UgRlNGX1NCQUxfTUlTTUFUQ0g6Ci0JCS8qIHNob3VsZCBuZXZlciBvY2N1cmUsIGF2b2lkZWQgaW4gemZjcF9mc2Zfc2VuZF9lbHMgKi8KKwkJLyogc2hvdWxkIG5ldmVyIG9jY3VyLCBhdm9pZGVkIGluIHpmY3BfZnNmX3NlbmRfZWxzICovCiAJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWRlZmF1bHQ6CiAJCXJlcS0+c3RhdHVzIHw9IFpGQ1BfU1RBVFVTX0ZTRlJFUV9FUlJPUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKaW5kZXggOGRhNWVkNi4uOThlOTdkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKQEAgLTM5MSw3ICszOTEsNyBAQAogCWlmIChkb19RRElPKGNkZXYsIFFESU9fRkxBR19TWU5DX0lOUFVULCAwLCAwLCBRRElPX01BWF9CVUZGRVJTX1BFUl9RKSkKIAkJZ290byBmYWlsZWRfcWRpbzsKIAotCS8qIHNldCBpbmRleCBvZiBmaXJzdCBhdmFsYWJsZSBTQkFMUyAvIG51bWJlciBvZiBhdmFpbGFibGUgU0JBTFMgKi8KKwkvKiBzZXQgaW5kZXggb2YgZmlyc3QgYXZhaWxhYmxlIFNCQUxTIC8gbnVtYmVyIG9mIGF2YWlsYWJsZSBTQkFMUyAqLwogCXFkaW8tPnJlcV9xX2lkeCA9IDA7CiAJYXRvbWljX3NldCgmcWRpby0+cmVxX3FfZnJlZSwgUURJT19NQVhfQlVGRkVSU19QRVJfUSk7CiAJYXRvbWljX3NldF9tYXNrKFpGQ1BfU1RBVFVTX0FEQVBURVJfUURJT1VQLCAmcWRpby0+YWRhcHRlci0+c3RhdHVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2J1cy9jaGFyL2pzZmxhc2guYyBiL2RyaXZlcnMvc2J1cy9jaGFyL2pzZmxhc2guYwppbmRleCBlODU2NjIyLi42YjQ2NzhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NidXMvY2hhci9qc2ZsYXNoLmMKKysrIGIvZHJpdmVycy9zYnVzL2NoYXIvanNmbGFzaC5jCkBAIC0xMyw3ICsxMyw3IEBACiAgKiBUT0RPOiBFcmFzZS9wcm9ncmFtIGJvdGggYmFua3Mgb2YgYSA4TUIgU0lNTS4KICAqCiAgKiBJdCBpcyBhbnRpY2lwYXRlZCB0aGF0IHByb2dyYW1taW5nIGFuIE9TIEZsYXNoIHdpbGwgYmUgYSByb3V0aW5lCi0gKiBwcm9jZWR1cmUuIEluIHRoZSBzYW1lIHRpbWUgaXQgaXMgZXhlZWRpbmdseSBkYW5nZXJvdXMgYmVjYXVzZQorICogcHJvY2VkdXJlLiBJbiB0aGUgc2FtZSB0aW1lIGl0IGlzIGV4Y2VlZGluZ2x5IGRhbmdlcm91cyBiZWNhdXNlCiAgKiBhIHVzZXIgY2FuIHByb2dyYW0gaXRzIE9CUCBmbGFzaCB3aXRoIE9TIGltYWdlIGFuZCBlZmZlY3RpdmVseQogICoga2lsbCB0aGUgbWFjaGluZS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NidXMvY2hhci9tYXgxNjE3LmggYi9kcml2ZXJzL3NidXMvY2hhci9tYXgxNjE3LmgKaW5kZXggMGJiMDljMi4uY2QzMDgxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zYnVzL2NoYXIvbWF4MTYxNy5oCisrKyBiL2RyaXZlcnMvc2J1cy9jaGFyL21heDE2MTcuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgTUFYMTYxN19DUFVfVEVNUAkweDAxIC8qIFByb2Nlc3NvciBkaWUgdGVtcCBpbiBDCSovCiAjZGVmaW5lIE1BWDE2MTdfU1RBVFVTCQkweDAyIC8qIENoaXAgc3RhdHVzIGJpdHMJKi8KIAotLyogUmVhZC1vbmx5IHZlcnNpb25zIG9mIGNoYW5nYWJsZSByZWdpc3RlcnMuICovCisvKiBSZWFkLW9ubHkgdmVyc2lvbnMgb2YgY2hhbmdlYWJsZSByZWdpc3RlcnMuICovCiAjZGVmaW5lIE1BWDE2MTdfUkRfQ0ZHX0JZVEUJMHgwMyAvKiBDb25maWcgcmVnaXN0ZXIJCSovCiAjZGVmaW5lIE1BWDE2MTdfUkRfQ1ZSQVRFX0JZVEUJMHgwNCAvKiBUZW1wIGNvbnZlcnNpb24gcmF0ZQkqLwogI2RlZmluZSBNQVgxNjE3X1JEX0FNQl9ISUdITElNCTB4MDUgLyogQW1iaWVudCBoaWdoIGxpbWl0CSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvM3ctOXh4eC5oIGIvZHJpdmVycy9zY3NpLzN3LTl4eHguaAppbmRleCAzMzQzODI0Li4wNDBmNzIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvM3ctOXh4eC5oCisrKyBiL2RyaXZlcnMvc2NzaS8zdy05eHh4LmgKQEAgLTYxLDcgKzYxLDcgQEAKIAl7MHgwMDAwLCAiQUVOIHF1ZXVlIGVtcHR5In0sCiAJezB4MDAwMSwgIkNvbnRyb2xsZXIgcmVzZXQgb2NjdXJyZWQifSwKIAl7MHgwMDAyLCAiRGVncmFkZWQgdW5pdCBkZXRlY3RlZCJ9LAotCXsweDAwMDMsICJDb250cm9sbGVyIGVycm9yIG9jY3VyZWQifSwKKwl7MHgwMDAzLCAiQ29udHJvbGxlciBlcnJvciBvY2N1cnJlZCJ9LAogCXsweDAwMDQsICJCYWNrZ3JvdW5kIHJlYnVpbGQgZmFpbGVkIn0sCiAJezB4MDAwNSwgIkJhY2tncm91bmQgcmVidWlsZCBkb25lIn0sCiAJezB4MDAwNiwgIkluY29tcGxldGUgdW5pdCBkZXRlY3RlZCJ9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzN3LXh4eHguaCBiL2RyaXZlcnMvc2NzaS8zdy14eHh4LmgKaW5kZXggOGI5ZjlkMS4uNDlkY2YwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzN3LXh4eHguaAorKysgYi9kcml2ZXJzL3Njc2kvM3cteHh4eC5oCkBAIC04LDcgKzgsNyBAQAogCiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAxMCAzd2FyZSBJbmMuCiAKLSAgIEtlcm5lbCBjb21wYXRpYmxpdHkgQnk6CUFuZHJlIEhlZHJpY2sgPGFuZHJlQHN1c2UuY29tPgorICAgS2VybmVsIGNvbXBhdGliaWxpdHkgQnk6CUFuZHJlIEhlZHJpY2sgPGFuZHJlQHN1c2UuY29tPgogICAgTm9uLUNvcHlyaWdodCAoQykgMjAwMAlBbmRyZSBIZWRyaWNrIDxhbmRyZUBzdXNlLmNvbT4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS81M2M3MDAuc2NyIGIvZHJpdmVycy9zY3NpLzUzYzcwMC5zY3IKaW5kZXggYTA2NGEwOS4uZWM4MjJlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzUzYzcwMC5zY3IKKysrIGIvZHJpdmVycy9zY3NpLzUzYzcwMC5zY3IKQEAgLTMxLDcgKzMxLDcgQEAKIEFCU09MVVRFCVJlY2VpdmVNc2dBZGRyZXNzID0gMAk7IEFkZHIgdG8gcmVjZWl2ZSBtc2cKIDsKIDsgVGhpcyBpcyB0aGUgbWFnaWMgY29tcG9uZW50IGZvciBoYW5kbGluZyBzY2F0dGVyLWdhdGhlci4gIEVhY2ggb2YgdGhlCi07IFNHIGNvbXBvbmVudHMgaXMgcHJlY2VlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQorOyBTRyBjb21wb25lbnRzIGlzIHByZWNlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQogOyBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEgYW5kIGp1bXBzIHRvIHRoZSBuZXh0IFNHIHNlZ21lbnQuICBUaGUgZmluYWwKIDsgU0cgc2VnbWVudCBqdW1wcyBiYWNrIHRvIC4gIEhvd2V2ZXIsIHRoaXMgYWRkcmVzcyBpcyB0aGUgZmlyc3QgU0cgc2NyaXB0CiA7IHNlZ21lbnQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvNTNjNzAwX2QuaF9zaGlwcGVkIGIvZHJpdmVycy9zY3NpLzUzYzcwMF9kLmhfc2hpcHBlZAppbmRleCAwYjQyYTUxLi5hYTYyM2RhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvNTNjNzAwX2QuaF9zaGlwcGVkCisrKyBiL2RyaXZlcnMvc2NzaS81M2M3MDBfZC5oX3NoaXBwZWQKQEAgLTM0LDcgKzM0LDcgQEAKIEFCU09MVVRFCVJlY2VpdmVNc2dBZGRyZXNzID0gMAk7IEFkZHIgdG8gcmVjZWl2ZSBtc2cKIDsKIDsgVGhpcyBpcyB0aGUgbWFnaWMgY29tcG9uZW50IGZvciBoYW5kbGluZyBzY2F0dGVyLWdhdGhlci4gIEVhY2ggb2YgdGhlCi07IFNHIGNvbXBvbmVudHMgaXMgcHJlY2VlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQorOyBTRyBjb21wb25lbnRzIGlzIHByZWNlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQogOyBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEgYW5kIGp1bXBzIHRvIHRoZSBuZXh0IFNHIHNlZ21lbnQuICBUaGUgZmluYWwKIDsgU0cgc2VnbWVudCBqdW1wcyBiYWNrIHRvIC4gIEhvd2V2ZXIsIHRoaXMgYWRkcmVzcyBpcyB0aGUgZmlyc3QgU0cgc2NyaXB0CiA7IHNlZ21lbnQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvRmxhc2hQb2ludC5jIGIvZHJpdmVycy9zY3NpL0ZsYXNoUG9pbnQuYwppbmRleCBlNDBjZGZiLi5kY2Q3MTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvRmxhc2hQb2ludC5jCisrKyBiL2RyaXZlcnMvc2NzaS9GbGFzaFBvaW50LmMKQEAgLTI1MDksNyArMjUwOSw3IEBACiAJCQkJV1JfSEFSUE9PTihwb3J0ICsgaHBfYXV0b3N0YXJ0XzMsCiAJCQkJCSAgIChTRUxFQ1QgKyBTRUxDSEtfU1RSVCkpOwogCi0JCQkJLyogU2V0dXAgb3VyIFNUQVRFIHNvIHdlIGtub3cgd2hhdCBoYXBwZW5kIHdoZW4KKwkJCQkvKiBTZXR1cCBvdXIgU1RBVEUgc28gd2Uga25vdyB3aGF0IGhhcHBlbmVkIHdoZW4KIAkJCQkgICB0aGUgd2hlZWxzIGZhbGwgb2ZmLiAqLwogCQkJCWN1cnJTQ0NCLT5TY2NiX3Njc2lzdGF0ID0gU0VMRUNUX1NUOwogCkBAIC0yOTAwLDcgKzI5MDAsNyBAQAogICoKICAqIEZ1bmN0aW9uOiBGUFRfc2RlY20KICAqCi0gKiBEZXNjcmlwdGlvbjogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgcmVzcG9uY2UgdG8gdGhlIG1lc3NhZ2UgZnJvbSB0aGUKKyAqIERlc2NyaXB0aW9uOiBEZXRlcm1pbmUgdGhlIHByb3BlciByZXNwb25zZSB0byB0aGUgbWVzc2FnZSBmcm9tIHRoZQogICogICAgICAgICAgICAgIHRhcmdldCBkZXZpY2UuCiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL05DUjUzODAuYyBiL2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMKaW5kZXggZTdjZDJmYy4uMTY1ZTRkZDg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMKQEAgLTExOTgsMTIgKzExOTgsMTIgQEAKIAkJCQkgKi8KIAogCQkJCWlmICgoTkNSNTM4MF9yZWFkKE1PREVfUkVHKSAmIE1SX0RNQSkgJiYgKChiYXNyICYgQkFTUl9FTkRfRE1BX1RSQU5TRkVSKSB8fCAhKGJhc3IgJiBCQVNSX1BIQVNFX01BVENIKSkpIHsKLQkJCQkJaW50IHRyYW5zZmVyZWQ7CisJCQkJCWludCB0cmFuc2ZlcnJlZDsKIAogCQkJCQlpZiAoIWhvc3RkYXRhLT5jb25uZWN0ZWQpCiAJCQkJCQlwYW5pYygic2NzaSVkIDogcmVjZWl2ZWQgZW5kIG9mIERNQSBpbnRlcnJ1cHQgd2l0aCBubyBjb25uZWN0ZWQgY21kXG4iLCBpbnN0YW5jZS0+aG9zdG5vKTsKIAotCQkJCQl0cmFuc2ZlcmVkID0gKGhvc3RkYXRhLT5kbWFsZW4gLSBOQ1I1MzgwX2RtYV9yZXNpZHVhbChpbnN0YW5jZSkpOworCQkJCQl0cmFuc2ZlcnJlZCA9IChob3N0ZGF0YS0+ZG1hbGVuIC0gTkNSNTM4MF9kbWFfcmVzaWR1YWwoaW5zdGFuY2UpKTsKIAkJCQkJaG9zdGRhdGEtPmNvbm5lY3RlZC0+U0NwLnRoaXNfcmVzaWR1YWwgLT0gdHJhbnNmZXJyZWQ7CiAJCQkJCWhvc3RkYXRhLT5jb25uZWN0ZWQtPlNDcC5wdHIgKz0gdHJhbnNmZXJyZWQ7CiAJCQkJCWhvc3RkYXRhLT5kbWFsZW4gPSAwOwpAQCAtMTU2Myw3ICsxNTYzLDcgQEAKICAqICAgICAgYnl0ZXMgdG8gdHJhbnNmZXIsICoqZGF0YSAtIHBvaW50ZXIgdG8gZGF0YSBwb2ludGVyLgogICogCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICogICAgICBtYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgb3IgdHJhbnNmZXJlZCBvciBleGl0CisgKiAgICAgIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKiAgICAgIGlzIGluIHNhbWUgcGhhc2UuCiAgKgogICogICAgICBBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpAQCAtMTgwMCw3ICsxODAwLDcgQEAKICAqICAgICAgYnl0ZXMgdG8gdHJhbnNmZXIsICoqZGF0YSAtIHBvaW50ZXIgdG8gZGF0YSBwb2ludGVyLgogICogCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICogICAgICBtYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgb3IgdHJhbnNmZXJlZCBvciBleGl0CisgKiAgICAgIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKiAgICAgIGlzIGluIHNhbWUgcGhhc2UuCiAgKgogICogICAgICBBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjaGJhLmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYwppbmRleCAxMThjZTgzLi4wNjE5OTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYwpAQCAtNzQ3LDggKzc0Nyw4IEBACiAgKiBBcmd1bWVudHM6IFsxXSBwb2ludGVyIHRvIHZvaWQgWzFdIGludAogICoKICAqIFB1cnBvc2U6IFNldHMgU0NTSSBpbnF1aXJ5IGRhdGEgc3RyaW5ncyBmb3IgdmVuZG9yLCBwcm9kdWN0Ci0gKiBhbmQgcmV2aXNpb24gbGV2ZWwuIEFsbG93cyBzdHJpbmdzIHRvIGJlIHNldCBpbiBwbGF0Zm9ybSBkZXBlbmRhbnQKLSAqIGZpbGVzIGluc3RlYWQgb2YgaW4gT1MgZGVwZW5kYW50IGRyaXZlciBzb3VyY2UuCisgKiBhbmQgcmV2aXNpb24gbGV2ZWwuIEFsbG93cyBzdHJpbmdzIHRvIGJlIHNldCBpbiBwbGF0Zm9ybSBkZXBlbmRlbnQKKyAqIGZpbGVzIGluc3RlYWQgb2YgaW4gT1MgZGVwZW5kZW50IGRyaXZlciBzb3VyY2UuCiAgKi8KIAogc3RhdGljIHZvaWQgc2V0aW5xc3RyKHN0cnVjdCBhYWNfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCB0aW5kZXgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmggYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmgKaW5kZXggMjlhYjAwMDEuLmZmYjU4NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY3JhaWQuaAorKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmgKQEAgLTEyNTksNyArMTI1OSw3IEBACiAjZGVmaW5lIENBQ0hFX1VOU1RBQkxFCQkyCiAKIC8qCi0gKglMZXRzIHRoZSBjbGllbnQga25vdyBhdCB3aGljaCBsZXZlbCB0aGUgZGF0YSB3YXMgY29tbWl0ZWQgb24KKyAqCUxldHMgdGhlIGNsaWVudCBrbm93IGF0IHdoaWNoIGxldmVsIHRoZSBkYXRhIHdhcyBjb21taXR0ZWQgb24KICAqCWEgd3JpdGUgcmVxdWVzdAogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1zdXAuYyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1zdXAuYwppbmRleCBkZDdhZDNiLi5lN2QwZDQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tc3VwLmMKKysrIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jCkBAIC00MjEsNyArNDIxLDcgQEAKIAlpZiAoIShod19maWItPmhlYWRlci5YZmVyU3RhdGUgJiBjcHVfdG9fbGUzMihIb3N0T3duZWQpKSkKIAkJcmV0dXJuIC1FQlVTWTsKIAkvKgotCSAqCVRoZXJlIGFyZSA1IGNhc2VzIHdpdGggdGhlIHdhaXQgYW5kIHJlcG9uc2UgcmVxdWVzdGVkIGZsYWdzLgorCSAqCVRoZXJlIGFyZSA1IGNhc2VzIHdpdGggdGhlIHdhaXQgYW5kIHJlc3BvbnNlIHJlcXVlc3RlZCBmbGFncy4KIAkgKglUaGUgb25seSBpbnZhbGlkIGNhc2VzIGFyZSBpZiB0aGUgY2FsbGVyIHJlcXVlc3RzIHRvIHdhaXQgYW5kCiAJICoJZG9lcyBub3QgcmVxdWVzdCBhIHJlc3BvbnNlIGFuZCBpZiB0aGUgY2FsbGVyIGRvZXMgbm90IHdhbnQgYQogCSAqCXJlc3BvbnNlIGFuZCB0aGUgRmliIGlzIG5vdCBhbGxvY2F0ZWQgZnJvbSBwb29sLiBJZiBhIHJlc3BvbnNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWR2YW5zeXMuYyBiL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCmluZGV4IDA4MWM2ZGUuLmJmZDYxOGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCisrKyBiL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCkBAIC00NTQ0LDcgKzQ1NDQsNyBAQAogICogQ29weSA0IGJ5dGVzIHRvIExSQU0uCiAgKgogICogVGhlIHNvdXJjZSBkYXRhIGlzIGFzc3VtZWQgdG8gYmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBpbiBtZW1vcnkKLSAqIGFuZCBpcyBtYWludGFpbmVkIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgd2hlbiB3cml0ZW4gdG8gTFJBTS4KKyAqIGFuZCBpcyBtYWludGFpbmVkIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgd2hlbiB3cml0dGVuIHRvIExSQU0uCiAgKi8KIHN0YXRpYyB2b2lkCiBBc2NNZW1EV29yZENvcHlQdHJUb0xyYW0oUG9ydEFkZHIgaW9wX2Jhc2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWhhMTc0MC5jIGIvZHJpdmVycy9zY3NpL2FoYTE3NDAuYwppbmRleCBkMDU4ZjFhLi4xYzEwYjc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWhhMTc0MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9haGExNzQwLmMKQEAgLTQ2MSw3ICs0NjEsNyBAQAogCS8qIFRoZSBBZGFwdGVjIFNwZWMgc2F5cyB0aGUgY2FyZCBpcyBzbyBmYXN0IHRoYXQgdGhlIGxvb3BzCiAgICAgICAgICAgIHdpbGwgb25seSBiZSBleGVjdXRlZCBvbmNlIGluIHRoZSBjb2RlIGJlbG93LiBFdmVuIGlmIHRoaXMKICAgICAgICAgICAgd2FzIHRydWUgd2l0aCB0aGUgZmFzdGVzdCBwcm9jZXNzb3JzIHdoZW4gdGhlIHNwZWMgd2FzCi0gICAgICAgICAgIHdyaXR0ZW4sIGl0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0cnVlIHdpdGggdG9kYXlzIGZhc3QKKyAgICAgICAgICAgd3JpdHRlbiwgaXQgZG9lc24ndCBzZWVtIHRvIGJlIHRydWUgd2l0aCB0b2RheSdzIGZhc3QKICAgICAgICAgICAgcHJvY2Vzc29ycy4gV2UgcHJpbnQgYSB3YXJuaW5nIGlmIHRoZSBjb2RlIGlzIGV4ZWN1dGVkIG1vcmUKICAgICAgICAgICAgb2Z0ZW4gdGhhbiBMT09QQ05UX1dBUk4uIElmIHRoaXMgaGFwcGVucywgaXQgc2hvdWxkIGJlCiAgICAgICAgICAgIGludmVzdGlnYXRlZC4gSWYgdGhlIGNvdW50IHJlYWNoZXMgTE9PUENOVF9NQVgsIHdlIGFzc3VtZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5oIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5oCmluZGV4IDk1ZWU1MDMuLjliMDU5NDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguaAorKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LmgKQEAgLTQ3Myw3ICs0NzMsNyBAQAogICoJbyBBIHJlc2lkdWFsIGhhcyBvY2N1cnJlZCBpZiBTR19GVUxMX1JFU0lEIGlzIHNldCBpbiBzZ3B0ciwKICAqCSAgb3IgcmVzaWR1YWxfc2dwdHIgZG9lcyBub3QgaGF2ZSBTR19MSVNUX05VTEwgc2V0LgogICoKLSAqCW8gV2UgYXJlIHRyYW5zZmVyaW5nIHRoZSBsYXN0IHNlZ21lbnQgaWYgcmVzaWR1YWxfZGF0YWNudCBoYXMKKyAqCW8gV2UgYXJlIHRyYW5zZmVycmluZyB0aGUgbGFzdCBzZWdtZW50IGlmIHJlc2lkdWFsX2RhdGFjbnQgaGFzCiAgKgkgIHRoZSBTR19MQVNUX1NFRyBmbGFnIHNldC4KICAqCiAgKiBIb3N0OgpAQCAtNTE2LDcgKzUxNiw3IEBACiAgKi8KIAogLyoKLSAqIERlZmluaXRpb24gb2YgYSBzY2F0dGVyL2dhdGhlciBlbGVtZW50IGFzIHRyYW5zZmVyZWQgdG8gdGhlIGNvbnRyb2xsZXIuCisgKiBEZWZpbml0aW9uIG9mIGEgc2NhdHRlci9nYXRoZXIgZWxlbWVudCBhcyB0cmFuc2ZlcnJlZCB0byB0aGUgY29udHJvbGxlci4KICAqIFRoZSBhaWM3eHh4IGNoaXBzIG9ubHkgc3VwcG9ydCBhIDI0Yml0IGxlbmd0aC4gIFdlIHVzZSB0aGUgdG9wIGJ5dGUgb2YKICAqIHRoZSBsZW5ndGggdG8gc3RvcmUgYWRkaXRpb25hbCBhZGRyZXNzIGJpdHMgYW5kIGEgZmxhZyB0byBpbmRpY2F0ZQogICogdGhhdCBhIGdpdmVuIHNlZ21lbnQgdGVybWluYXRlcyB0aGUgdHJhbnNmZXIuICBUaGlzIGdpdmVzIHVzIGFuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnJlZyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHgucmVnCmluZGV4IDA2NjZjMjIuLjdlMTJjMzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHgucmVnCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHgucmVnCkBAIC0zMDUsNyArMzA1LDcgQEAKIH0KIAogLyoKLSAqIFNlcXVlbmNlciBJbnRlcnVwdCBTdGF0dXMKKyAqIFNlcXVlbmNlciBJbnRlcnJ1cHQgU3RhdHVzCiAgKi8KIHJlZ2lzdGVyIFNFUUlOVFNUQVQgewogCWFkZHJlc3MJCQkweDAwQwpAQCAtNjg1LDcgKzY4NSw3IEBACiB9CiAKIC8qCi0gKiBDTUMgUmVjaWV2ZSBNZXNzYWdlIDAKKyAqIENNQyBSZWNlaXZlIE1lc3NhZ2UgMAogICovCiByZWdpc3RlciBDTUNSWE1TRzAgewogCWFkZHJlc3MJCQkweDA5MApAQCAtNjk2LDcgKzY5Niw3IEBACiB9CiAKIC8qCi0gKiBPdmVybGF5IFJlY2lldmUgTWVzc2FnZSAwCisgKiBPdmVybGF5IFJlY2VpdmUgTWVzc2FnZSAwCiAgKi8KIHJlZ2lzdGVyIE9WTFlSWE1TRzAgewogCWFkZHJlc3MJCQkweDA5MApAQCAtNzMyLDcgKzczMiw3IEBACiB9CiAKIC8qCi0gKiBDTUMgUmVjaWV2ZSBNZXNzYWdlIDEKKyAqIENNQyBSZWNlaXZlIE1lc3NhZ2UgMQogICovCiByZWdpc3RlciBDTUNSWE1TRzEgewogCWFkZHJlc3MJCQkweDA5MQpAQCAtNzQyLDcgKzc0Miw3IEBACiB9CiAKIC8qCi0gKiBPdmVybGF5IFJlY2lldmUgTWVzc2FnZSAxCisgKiBPdmVybGF5IFJlY2VpdmUgTWVzc2FnZSAxCiAgKi8KIHJlZ2lzdGVyIE9WTFlSWE1TRzEgewogCWFkZHJlc3MJCQkweDA5MQpAQCAtNzc3LDcgKzc3Nyw3IEBACiB9CiAKIC8qCi0gKiBDTUMgUmVjaWV2ZSBNZXNzYWdlIDIKKyAqIENNQyBSZWNlaXZlIE1lc3NhZ2UgMgogICovCiByZWdpc3RlciBDTUNSWE1TRzIgewogCWFkZHJlc3MJCQkweDA5MgpAQCAtNzg3LDcgKzc4Nyw3IEBACiB9CiAKIC8qCi0gKiBPdmVybGF5IFJlY2lldmUgTWVzc2FnZSAyCisgKiBPdmVybGF5IFJlY2VpdmUgTWVzc2FnZSAyCiAgKi8KIHJlZ2lzdGVyIE9WTFlSWE1TRzIgewogCWFkZHJlc3MJCQkweDA5MgpAQCAtODE2LDcgKzgxNiw3IEBACiB9CiAKIC8qCi0gKiBDTUMgUmVjaWV2ZSBNZXNzYWdlIDMKKyAqIENNQyBSZWNlaXZlIE1lc3NhZ2UgMwogICovCiByZWdpc3RlciBDTUNSWE1TRzMgewogCWFkZHJlc3MJCQkweDA5MwpAQCAtODI2LDcgKzgyNiw3IEBACiB9CiAKIC8qCi0gKiBPdmVybGF5IFJlY2lldmUgTWVzc2FnZSAzCisgKiBPdmVybGF5IFJlY2VpdmUgTWVzc2FnZSAzCiAgKi8KIHJlZ2lzdGVyIE9WTFlSWE1TRzMgewogCWFkZHJlc3MJCQkweDA5MwpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAKIAogLyoKICAqIExRIFBhY2tldCBJbgotICogVGhlIGxhc3QgTFEgUGFja2V0IHJlY2lldmVkCisgKiBUaGUgbGFzdCBMUSBQYWNrZXQgcmVjZWl2ZWQKICAqLwogcmVnaXN0ZXIgTFFJTiB7CiAJYWRkcmVzcwkJCTB4MDIwCkBAIC0yNTczLDcgKzI1NzMsNyBAQAogfQogCiAvKgotICogU2hhZGRvdyBIb3N0IEFkZHJlc3MuCisgKiBTaGFkb3cgSG9zdCBBZGRyZXNzLgogICovCiByZWdpc3RlciBTSEFERFIgewogCWFkZHJlc3MJCQkweDA2MApAQCAtMzk4Myw3ICszOTgzLDcgQEAKIAogCS8qCiAJICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCwgd2hlbiBpbnRlcnJ1cHQgY29hbGVzY2luZwotCSAqIGlzIGVuYWJsZWQsIGJlZm9yZSBpc3N1ZWluZyBhIENNRENNUExUIGludGVycnVwdCBmb3IgYSBjb21wbGV0ZWQKKwkgKiBpcyBlbmFibGVkLCBiZWZvcmUgaXNzdWluZyBhIENNRENNUExUIGludGVycnVwdCBmb3IgYSBjb21wbGV0ZWQKIAkgKiBjb21tYW5kLgogCSAqLwogCUlOVF9DT0FMRVNDSU5HX1RJTUVSIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguc2VxIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5zZXEKaW5kZXggMmZiNzhlMy4uM2EzNmQ5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5zZXEKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5zZXEKQEAgLTU2Nyw3ICs1NjcsNyBAQAogCXNocglTRUxPSUQsIDQsIFNDQl9TQ1NJSUQ7CiAJLyoKIAkgKiBJZiB3ZSB3YW50IHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBkZXZpY2UsIGVuc3VyZQotCSAqIHdlIGFyZSBzZWxlY3Rpbmcgd2l0aCBhdG4gaXJyZWdhcmRsZXNzIG9mIG91ciBwYWNrZXRpemVkCisJICogd2UgYXJlIHNlbGVjdGluZyB3aXRoIGF0biByZWdhcmRsZXNzIG9mIG91ciBwYWNrZXRpemVkCiAJICogYWdyZWVtZW50LiAgU2luY2UgU1BJNCBvbmx5IGFsbG93cyB0YXJnZXQgcmVzZXQgb3IgUFBSCiAJICogbWVzc2FnZXMgaWYgdGhpcyBpcyBhIHBhY2tldGl6ZWQgY29ubmVjdGlvbiwgdGhlIGNoYW5nZQogCSAqIHRvIG91ciBuZWdvdGlhdGlvbiB0YWJsZSBlbnRyeSBmb3IgdGhpcyBzZWxlY3Rpb24gd2lsbApAQCAtOTYwLDcgKzk2MCw3IEBACiAgKiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlIGhvc3QgdG8gc2VuZCBtZXNzYWdlcyBvdXRzaWRlIG9mIGFuIGlkZW50aWZ5CiAgKiBzZXF1ZW5jZSB3aGlsZSBwcm90ZWN0aW5nIHRoZSBzZXFlbmNlciBmcm9tIHRlc3RpbmcgdGhlIE1LX01FU1NBR0UgYml0CiAgKiBvbiBhbiBTQ0IgdGhhdCBtaWdodCBub3QgYmUgZm9yIHRoZSBjdXJyZW50IG5leHVzLiAoRm9yIGV4YW1wbGUsIGEKLSAqIEJEUiBtZXNzYWdlIGluIHJlc3BvbmNlIHRvIGEgYmFkIHJlc2VsZWN0aW9uIHdvdWxkIGxlYXZlIHVzIHBvaW50ZWQgdG8KKyAqIEJEUiBtZXNzYWdlIGluIHJlc3BvbnNlIHRvIGEgYmFkIHJlc2VsZWN0aW9uIHdvdWxkIGxlYXZlIHVzIHBvaW50ZWQgdG8KICAqIGFuIFNDQiB0aGF0IGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCkuCiAgKgogICogT3RoZXJ3aXNlLCB0cmVhdCBNU0dfT1VUIGFzIGEgMSBieXRlIG1lc3NhZ2UgdG8gc2VuZCAoYWJvcnQsIGFib3J0IHRhZywKQEAgLTE1MDcsNyArMTUwNyw3IEBACiAJCSAqIElmIHRoZSBvdGhlciBGSUZPIG5lZWRzIGxvYWRpbmcsIHRoZW4gaXQKIAkJICogbXVzdCBub3QgaGF2ZSBjbGFpbWVkIHRoZSBTL0cgY2FjaGUgeWV0CiAJCSAqIChTR19DQUNIRV9BVkFJTCB3b3VsZCBoYXZlIGJlZW4gY2xlYXJlZCBpbgotCQkgKiB0aGUgb3JnaW5hbCBGSUZPIG1vZGUgYW5kIHdlIHRlc3QgdGhpcyBhYm92ZSkuCisJCSAqIHRoZSBvcmlnaW5hbCBGSUZPIG1vZGUgYW5kIHdlIHRlc3QgdGhpcyBhYm92ZSkuCiAJCSAqIFJldHVybiB0byB0aGUgaWRsZSBsb29wIHNvIHdlIGNhbiBwcm9jZXNzIHRoZQogCQkgKiBGSUZPIG5vdCBjdXJyZW50bHkgb24gdGhlIGJ1cyBmaXJzdC4KIAkJICovCkBAIC0xNTIxLDcgKzE1MjEsNyBAQAogaWRsZV9zZ2ZldGNoX3N0YXJ0OgogCS8qCiAJICogV2UgZmV0Y2ggYSAiY2FjaGVsaW5lIGFsaWduZWQiIGFuZCBzaXplZCBhbW91bnQgb2YgZGF0YQotCSAqIHNvIHdlIGRvbid0IGVuZCB1cCByZWZlcmVuY2luZyBhIG5vbi1leGlzdGFudCBwYWdlLgorCSAqIHNvIHdlIGRvbid0IGVuZCB1cCByZWZlcmVuY2luZyBhIG5vbi1leGlzdGVudCBwYWdlLgogCSAqIENhY2hlbGluZSBhbGlnbmVkIGlzIGluIHF1b3RlcyBiZWNhdXNlIHRoZSBrZXJuZWwgd2lsbAogCSAqIHNldCB0aGUgcHJlZmV0Y2ggYW1vdW50IHRvIGEgcmVhc29uYWJsZSBsZXZlbCBpZiB0aGUKIAkgKiBjYWNoZWxpbmUgc2l6ZSBpcyB1bmtub3duLgpAQCAtMTU1MSw3ICsxNTUxLDcgQEAKIAl0ZXN0CURGU1RBVFVTLCBQUkVMT0FEX0FWQUlMIGp6IHJldHVybjsKIAkvKgogCSAqIE9uIHRoZSBBLCBwcmVsb2FkaW5nIGEgc2VnbWVudCBiZWZvcmUgSERNQUVOQUNLCi0JICogY29tZXMgdHJ1ZSBjYW4gY2xvYmJlciB0aGUgc2hhZGRvdyBhZGRyZXNzIG9mIHRoZQorCSAqIGNvbWVzIHRydWUgY2FuIGNsb2JiZXIgdGhlIHNoYWRvdyBhZGRyZXNzIG9mIHRoZQogCSAqIGZpcnN0IHNlZ21lbnQgaW4gdGhlIFMvRyBGSUZPLiAgV2FpdCB1bnRpbCBpdCBpcwogCSAqIHNhZmUgdG8gcHJvY2VlZC4KIAkgKi8KQEAgLTIwMDQsMTAgKzIwMDQsMTAgQEAKIAkgKiBEZWZlciBoYW5kbGluZyBvZiB0aGlzIE5PTlBBQ0tSRVEgdW50aWwgd2UKIAkgKiBjYW4gYmUgc3VyZSBpdCBwZXJ0YWlucyB0byB0aGlzIEZJRk8uICBTQVZFUFRSUwogCSAqIHdpbGwgbm90IGJlIGFzc2VydGVkIGlmIHRoZSBOT05QQUNLUkVRIGlzIGZvciB1cywKLQkgKiBzbyB3ZSBtdXN0IHNpbXVsYXRlIGl0IGlmIHNoYWRkb3cgaXMgdmFsaWQuICBJZgotCSAqIHNoYWRkb3cgaXMgbm90IHZhbGlkLCBrZWVwIHJ1bm5pbmcgdGhpcyBGSUZPIHVudGlsIHdlCisJICogc28gd2UgbXVzdCBzaW11bGF0ZSBpdCBpZiBzaGFkb3cgaXMgdmFsaWQuICBJZgorCSAqIHNoYWRvdyBpcyBub3QgdmFsaWQsIGtlZXAgcnVubmluZyB0aGlzIEZJRk8gdW50aWwgd2UKIAkgKiBoYXZlIHNhdGlzZmllZCB0aGUgdHJhbnNmZXIgYnkgbG9hZGluZyBzZWdtZW50cyBhbmQKLQkgKiB3YWl0aW5nIGZvciBlaXRoZXIgc2hhZGRvdyB2YWxpZCBvciBsYXN0X3NlZ19kb25lLgorCSAqIHdhaXRpbmcgZm9yIGVpdGhlciBzaGFkb3cgdmFsaWQgb3IgbGFzdF9zZWdfZG9uZS4KIAkgKi8KIAl0ZXN0CU1ERkZTVEFULCBTSFZBTElEIGpueiBwa3Rfc2F2ZXB0cnM7CiBwa3Rfc2VydmljZV9maWZvOgpAQCAtMjE3MSw3ICsyMTcxLDcgQEAKIAkvKgogCSAqIFRoZSB1bmV4cGVjdGVkIG5vbnBrdCBwaGFzZSBoYW5kbGVyIGFzc3VtZXMgdGhhdCBhbnkKIAkgKiBkYXRhIGNoYW5uZWwgdXNlIHdpbGwgaGF2ZSBhIEZJRk8gcmVmZXJlbmNlIGNvdW50LiAgSXQKLQkgKiB0dXJucyBvdXQgdGhhdCB0aGUgc3RhdHVzIGhhbmRsZXIgZG9lc24ndCBuZWVkIGEgcmVmZXJuY2UKKwkgKiB0dXJucyBvdXQgdGhhdCB0aGUgc3RhdHVzIGhhbmRsZXIgZG9lc24ndCBuZWVkIGEgcmVmZXJlbmNlcwogCSAqIGNvdW50IHNpbmNlIHRoZSBzdGF0dXMgcmVjZWl2ZWQgZmxhZywgYW5kIHRodXMgY29tcGxldGlvbgogCSAqIHByb2Nlc3NpbmcsIGNhbm5vdCBiZSBzZXQgdW50aWwgdGhlIGhhbmRsZXIgaXMgZmluaXNoZWQuCiAJICogV2UgaW5jcmVtZW50IHRoZSBjb3VudCBoZXJlIHRvIG1ha2UgdGhlIG5vbnBrdCBoYW5kbGVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X2NvcmUuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5jCmluZGV4IDMyMzNiZjUuLjVmODYxN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5jCkBAIC01NjIsNyArNTYyLDcgQEAKIH0KICNlbmRpZgogCi0vKioqKioqKioqKioqKioqKioqKioqKiogTWlzY2VsYW5lb3VzIFN1cHBvcnQgRnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqIE1pc2NlbGxhbmVvdXMgU3VwcG9ydCBGdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCiAvKgogICogUmV0dXJuIHBvaW50ZXJzIHRvIHRoZSB0cmFuc2ZlciBuZWdvdGlhdGlvbiBpbmZvcm1hdGlvbgogICogZm9yIHRoZSBzcGVjaWZpZWQgb3VyX2lkL3JlbW90ZV9pZCBwYWlyLgpAQCAtNTk5LDcgKzU5OSw3IEBACiBhaGRfb3V0dyhzdHJ1Y3QgYWhkX3NvZnRjICphaGQsIHVfaW50IHBvcnQsIHVfaW50IHZhbHVlKQogewogCS8qCi0JICogV3JpdGUgbG93IGJ5dGUgZmlyc3QgdG8gYWNjb21vZGF0ZSByZWdpc3RlcnMKKwkgKiBXcml0ZSBsb3cgYnl0ZSBmaXJzdCB0byBhY2NvbW1vZGF0ZSByZWdpc3RlcnMKIAkgKiBzdWNoIGFzIFBSR01DTlQgd2hlcmUgdGhlIG9yZGVyIG1hdGVycy4KIAkgKi8KIAlhaGRfb3V0YihhaGQsIHBvcnQsIHZhbHVlICYgMHhGRik7CkBAIC0yMDY3LDcgKzIwNjcsNyBAQAogCQkgKiB0aGF0IHJlcXVpcmVzIGhvc3QgYXNzaXN0YW5jZSBmb3IgY29tcGxldGlvbi4KIAkJICogV2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UgcGhhc2UocyksIHdlIHdpbGwgYmUKIAkJICogbm90aWZpZWQgYnkgdGhlIHNlcXVlbmNlciBhZnRlciBlYWNoIGJ5dGUgaXMKLQkJICogdHJhbnNmZXJlZCBzbyB3ZSBjYW4gdHJhY2sgYnVzIHBoYXNlIGNoYW5nZXMuCisJCSAqIHRyYW5zZmVycmVkIHNvIHdlIGNhbiB0cmFjayBidXMgcGhhc2UgY2hhbmdlcy4KIAkJICoKIAkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBzZWVuIGEgSE9TVF9NU0dfTE9PUAogCQkgKiBpbnRlcnJ1cHQsIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBob3N0IG1lc3NhZ2UKQEAgLTI0ODcsNyArMjQ4Nyw3IEBACiAJCS8qCiAJCSAqIEFsdGhvdWdoIHRoZSBkcml2ZXIgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUKIAkJICogJ1NlbGVjdGlvbiBpbiBQcm9ncmVzcycgc3RhdHVzIGJpdCwgdGhlIGJ1c3kKLQkJICogTEVEIGRvZXMuICBTRUxJTkdPIGlzIG9ubHkgY2xlYXJlZCBieSBhIHN1Y2Nlc3NmdWxsCisJCSAqIExFRCBkb2VzLiAgU0VMSU5HTyBpcyBvbmx5IGNsZWFyZWQgYnkgYSBzdWNjZXNzZnVsCiAJCSAqIHNlbGVjdGlvbiwgc28gd2UgbXVzdCBtYW51YWxseSBjbGVhciBpdCB0byBpbnN1cmUKIAkJICogdGhlIExFRCB0dXJucyBvZmYganVzdCBpbmNhc2Ugbm8gZnV0dXJlIHN1Y2Nlc3NmdWwKIAkJICogc2VsZWN0aW9ucyBvY2N1ciAoZS5nLiBubyBkZXZpY2VzIG9uIHRoZSBidXMpLgpAQCAtMzU0OCw3ICszNTQ4LDcgQEAKIAkJYWhkX291dGIoYWhkLCBTRVFDVEwwLCBhaGRfaW5iKGFoZCwgU0VRQ1RMMCkgJiB+U1RFUCk7CiAgIAkJYWhkX291dGIoYWhkLCBTSU1PREUxLCBzaW1vZGUxKTsKIAkJLyoKLQkJICogU0NTSUlOVCBzZWVtcyB0byBnbGl0Y2ggb2NjYXNzaW9uYWxseSB3aGVuCisJCSAqIFNDU0lJTlQgc2VlbXMgdG8gZ2xpdGNoIG9jY2FzaW9uYWxseSB3aGVuCiAJCSAqIHRoZSBpbnRlcnJ1cHQgbWFza3MgYXJlIHJlc3RvcmVkLiAgQ2xlYXIgU0NTSUlOVAogCQkgKiBvbmUgbW9yZSB0aW1lIHNvIHRoYXQgb25seSBwZXJzaXN0ZW50IGVycm9ycwogCQkgKiBhcmUgc2VlbiBhcyBhIHJlYWwgaW50ZXJydXB0LgpAQCAtMzgzOCw3ICszODM4LDcgQEAKIAogLyoKICAqIFVwZGF0ZSB0aGUgYml0bWFzayBvZiB0YXJnZXRzIGZvciB3aGljaCB0aGUgY29udHJvbGxlciBzaG91bGQKLSAqIG5lZ290aWF0ZSB3aXRoIGF0IHRoZSBuZXh0IGNvbnZlbmllbnQgb3BvcnR1bml0eS4gIFRoaXMgY3VycmVudGx5CisgKiBuZWdvdGlhdGUgd2l0aCBhdCB0aGUgbmV4dCBjb252ZW5pZW50IG9wcG9ydHVuaXR5LiAgVGhpcyBjdXJyZW50bHkKICAqIG1lYW5zIHRoZSBuZXh0IHRpbWUgd2Ugc2VuZCB0aGUgaW5pdGlhbCBpZGVudGlmeSBtZXNzYWdlcyBmb3IKICAqIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCkBAIC00MjAwLDcgKzQyMDAsNyBAQAogCiAJLyoKIAkgKiBEdXJpbmcgcGFja2V0aXplZCB0cmFuc2ZlcnMsIHRoZSB0YXJnZXQgd2lsbAotCSAqIGdpdmUgdXMgdGhlIG9wb3J0dW5pdHkgdG8gc2VuZCBjb21tYW5kIHBhY2tldHMKKwkgKiBnaXZlIHVzIHRoZSBvcHBvcnR1bml0eSB0byBzZW5kIGNvbW1hbmQgcGFja2V0cwogCSAqIHdpdGhvdXQgdXMgYXNzZXJ0aW5nIGF0dGVudGlvbi4KIAkgKi8KIAlpZiAoKHRpbmZvLT5wcHJfb3B0aW9ucyAmIE1TR19FWFRfUFBSX0lVX1JFUSkgPT0gMCkKQEAgLTU2NTEsNyArNTY1MSw3IEBACiAKIAkJLyoKIAkJICogUmVxdWV1ZSBhbGwgdGFnZ2VkIGNvbW1hbmRzIGZvciB0aGlzIHRhcmdldAotCQkgKiBjdXJyZW50bHkgaW4gb3VyIHBvc2Vzc2lvbiBzbyB0aGV5IGNhbiBiZQorCQkgKiBjdXJyZW50bHkgaW4gb3VyIHBvc3Nlc3Npb24gc28gdGhleSBjYW4gYmUKIAkJICogY29udmVydGVkIHRvIHVudGFnZ2VkIGNvbW1hbmRzLgogCQkgKi8KIAkJYWhkX3NlYXJjaF9xaW5maWZvKGFoZCwgU0NCX0dFVF9UQVJHRVQoYWhkLCBzY2IpLApAQCAtNjI0NSw3ICs2MjQ1LDcgQEAKIC8qCiAgKiBSZXNldCB0aGUgY29udHJvbGxlciBhbmQgcmVjb3JkIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgaXQKICAqIHRoYXQgaXMgb25seSBhdmFpbGFibGUganVzdCBhZnRlciBhIHJlc2V0LiAgSWYgInJlaW5pdCIgaXMKLSAqIG5vbi16ZXJvLCB0aGlzIHJlc2V0IG9jY3VyZWQgYWZ0ZXIgaW5pdGlhbCBjb25maWd1cmF0aW9uCisgKiBub24temVybywgdGhpcyByZXNldCBvY2N1cnJlZCBhZnRlciBpbml0aWFsIGNvbmZpZ3VyYXRpb24KICAqIGFuZCB0aGUgY2FsbGVyIHJlcXVlc3RzIHRoYXQgdGhlIGNoaXAgYmUgZnVsbHkgcmVpbml0aWFsaXplZAogICogdG8gYSBydW5hYmxlIHN0YXRlLiAgQ2hpcCBpbnRlcnJ1cHRzIGFyZSAqbm90KiBlbmFibGVkIGFmdGVyCiAgKiBhIHJlaW5pdGlhbGl6YXRpb24uICBUaGUgY2FsbGVyIG11c3QgZW5hYmxlIGludGVycnVwdHMgdmlhCkBAIC02NDk1LDcgKzY0OTUsNyBAQAogCX0KIAogCS8qCi0JICogTm90ZSB0aGF0IHdlIHdlcmUgc3VjY2Vzc2Z1bGwKKwkgKiBOb3RlIHRoYXQgd2Ugd2VyZSBzdWNjZXNzZnVsCiAJICovCiAJcmV0dXJuICgwKTsgCiAKQEAgLTcwNzksNyArNzA3OSw3IEBACiAJCXJldHVybiAoRU5PTUVNKTsKIAogCS8qCi0JICogVmVyaWZ5IHRoYXQgdGhlIGNvbXBpbGVyIGhhc24ndCBvdmVyLWFncmVzc2l2ZWx5CisJICogVmVyaWZ5IHRoYXQgdGhlIGNvbXBpbGVyIGhhc24ndCBvdmVyLWFnZ3Jlc3NpdmVseQogCSAqIHBhZGRlZCBpbXBvcnRhbnQgc3RydWN0dXJlcy4KIAkgKi8KIAlpZiAoc2l6ZW9mKHN0cnVjdCBoYXJkd2FyZV9zY2IpICE9IDY0KQpAQCAtMTAwODcsNyArMTAwODcsNyBAQAogCQlyZXR1cm4gKGVycm9yKTsKIAogCS8qCi0JICogV3JpdGUgdGhlIGRhdGEuICBJZiB3ZSBkb24ndCBnZXQgdGhyb3VnaHQgdGhlIGxvb3AgYXQKKwkgKiBXcml0ZSB0aGUgZGF0YS4gIElmIHdlIGRvbid0IGdldCB0aHJvdWdoIHRoZSBsb29wIGF0CiAJICogbGVhc3Qgb25jZSwgdGhlIGFyZ3VtZW50cyB3ZXJlIGludmFsaWQuCiAJICovCiAJcmV0dmFsID0gRUlOVkFMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9vc20uYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtLmMKaW5kZXggMjVkMDY2Ni4uN2Q0ODcwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9vc20uYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5jCkBAIC0xNDQxLDcgKzE0NDEsNyBAQAogCQl1c2VydGFncyA9IGFoZF9saW51eF91c2VyX3RhZ2RlcHRoKGFoZCwgZGV2aW5mbyk7CiAJCWlmICghd2FzX3F1ZXVpbmcpIHsKIAkJCS8qCi0JCQkgKiBTdGFydCBvdXQgYWdyZXNzaXZlbHkgYW5kIGFsbG93IG91cgorCQkJICogU3RhcnQgb3V0IGFnZ3Jlc3NpdmVseSBhbmQgYWxsb3cgb3VyCiAJCQkgKiBkeW5hbWljIHF1ZXVlIGRlcHRoIGFsZ29yaXRobSB0byB0YWtlCiAJCQkgKiBjYXJlIG9mIHRoZSByZXN0LgogCQkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LmggYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LmgKaW5kZXggMTc0NDRiYy4uZjY5NTc3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5oCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaApAQCAtNDQwLDcgKzQ0MCw3IEBACiAgKglvIEEgcmVzaWR1YWwgaGFzIG9jY3VycmVkIGlmIFNHX0ZVTExfUkVTSUQgaXMgc2V0IGluIHNncHRyLAogICoJICBvciByZXNpZHVhbF9zZ3B0ciBkb2VzIG5vdCBoYXZlIFNHX0xJU1RfTlVMTCBzZXQuCiAgKgotICoJbyBXZSBhcmUgdHJhbnNmZXJpbmcgdGhlIGxhc3Qgc2VnbWVudCBpZiByZXNpZHVhbF9kYXRhY250IGhhcworICoJbyBXZSBhcmUgdHJhbnNmZXJyaW5nIHRoZSBsYXN0IHNlZ21lbnQgaWYgcmVzaWR1YWxfZGF0YWNudCBoYXMKICAqCSAgdGhlIFNHX0xBU1RfU0VHIGZsYWcgc2V0LgogICoKICAqIEhvc3Q6CkBAIC00OTQsNyArNDk0LDcgQEAKICAqLwogCiAvKgotICogRGVmaW5pdGlvbiBvZiBhIHNjYXR0ZXIvZ2F0aGVyIGVsZW1lbnQgYXMgdHJhbnNmZXJlZCB0byB0aGUgY29udHJvbGxlci4KKyAqIERlZmluaXRpb24gb2YgYSBzY2F0dGVyL2dhdGhlciBlbGVtZW50IGFzIHRyYW5zZmVycmVkIHRvIHRoZSBjb250cm9sbGVyLgogICogVGhlIGFpYzd4eHggY2hpcHMgb25seSBzdXBwb3J0IGEgMjRiaXQgbGVuZ3RoLiAgV2UgdXNlIHRoZSB0b3AgYnl0ZSBvZgogICogdGhlIGxlbmd0aCB0byBzdG9yZSBhZGRpdGlvbmFsIGFkZHJlc3MgYml0cyBhbmQgYSBmbGFnIHRvIGluZGljYXRlCiAgKiB0aGF0IGEgZ2l2ZW4gc2VnbWVudCB0ZXJtaW5hdGVzIHRoZSB0cmFuc2Zlci4gIFRoaXMgZ2l2ZXMgdXMgYW4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHgucmVnIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5yZWcKaW5kZXggOWE5NmU1NS4uYmEwYjQxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5yZWcKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5yZWcKQEAgLTM1MSw3ICszNTEsNyBAQAogCWFkZHJlc3MJCQkweDAwZAogCWFjY2Vzc19tb2RlIFJPCiAJZmllbGQJT1ZFUlJVTgkJMHg4MAotCWZpZWxkCVNIVkFMSUQJCTB4NDAJLyogU2hhZGRvdyBMYXllciBub24temVybyAqLworCWZpZWxkCVNIVkFMSUQJCTB4NDAJLyogU2hhZG93IExheWVyIG5vbi16ZXJvICovCiAJZmllbGQJRVhQX0FDVElWRQkweDEwCS8qIFNDU0kgRXhwYW5kZXIgQWN0aXZlICovCiAJZmllbGQJQ1JDVkFMRVJSCTB4MDgJLyogQ1JDIGRvZXNuJ3QgbWF0Y2ggKFUzIG9ubHkpICovCiAJZmllbGQJQ1JDRU5ERVJSCTB4MDQJLyogTm8gdGVybWluYWwgQ1JDIHBhY2tldCAoVTMgb25seSkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguc2VxIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEKaW5kZXggNWE0Y2ZjOTUuLmU2MDA0MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguc2VxCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguc2VxCkBAIC01NywxMCArNTcsMTAgQEAKICAqIGEgbGF0ZXIgdGltZS4gIFRoaXMgcHJvYmxlbSBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgaG9sZGluZyBhIHNpbmdsZSBlbnRyeQogICogaW4gc2NyYXRjaCByYW0gc2luY2UgYSByZWNvbm5lY3RpbmcgdGFyZ2V0IGNhbiByZXF1ZXN0IHNlbnNlIGFuZCB0aGlzIHdpbGwKICAqIGNyZWF0ZSB5ZXQgYW5vdGhlciBTQ0Igd2FpdGluZyBmb3Igc2VsZWN0aW9uLiAgVGhlIHNvbHV0aW9uIHVzZWQgaGVyZSBpcyB0byAKLSAqIHVzZSBieXRlIDI3IG9mIHRoZSBTQ0IgYXMgYSBwc3VlZG8tbmV4dCBwb2ludGVyIGFuZCB0byB0aHJlYWQgYSBsaXN0CisgKiB1c2UgYnl0ZSAyNyBvZiB0aGUgU0NCIGFzIGEgcHNldWRvLW5leHQgcG9pbnRlciBhbmQgdG8gdGhyZWFkIGEgbGlzdAogICogb2YgU0NCcyB0aGF0IGFyZSBhd2FpdGluZyBzZWxlY3Rpb24uICBTaW5jZSAwLTB4ZmUgYXJlIHZhbGlkIFNDQiBpbmRleGVzLCAKICAqIFNDQl9MSVNUX05VTEwgaXMgMHhmZiB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuICBBbiBlbnRyeSBpcyBhbHNvIGFkZGVkIHRvCi0gKiB0aGlzIGxpc3QgZXZlcnl0aW1lIGEgcmVxdWVzdCBzZW5zZSBvY2N1cnMgb3IgYWZ0ZXIgY29tcGxldGluZyBhIG5vbi10YWdnZWQKKyAqIHRoaXMgbGlzdCBldmVyeSB0aW1lIGEgcmVxdWVzdCBzZW5zZSBvY2N1cnMgb3IgYWZ0ZXIgY29tcGxldGluZyBhIG5vbi10YWdnZWQKICAqIGNvbW1hbmQgZm9yIHdoaWNoIGEgc2Vjb25kIFNDQiBoYXMgYmVlbiBxdWV1ZWQuICBUaGUgc2VxdWVuY2VyIHdpbGwKICAqIGF1dG9tYXRpY2FsbHkgY29uc3VtZSB0aGUgZW50cmllcy4KICAqLwpAQCAtNzUyLDcgKzc1Miw3IEBACiAKIAkvKgogCSAqIFdlIGZldGNoIGEgImNhY2hlbGluZSBhbGlnbmVkIiBhbmQgc2l6ZWQgYW1vdW50IG9mIGRhdGEKLQkgKiBzbyB3ZSBkb24ndCBlbmQgdXAgcmVmZXJlbmNpbmcgYSBub24tZXhpc3RhbnQgcGFnZS4KKwkgKiBzbyB3ZSBkb24ndCBlbmQgdXAgcmVmZXJlbmNpbmcgYSBub24tZXhpc3RlbnQgcGFnZS4KIAkgKiBDYWNoZWxpbmUgYWxpZ25lZCBpcyBpbiBxdW90ZXMgYmVjYXVzZSB0aGUga2VybmVsIHdpbGwKIAkgKiBzZXQgdGhlIHByZWZldGNoIGFtb3VudCB0byBhIHJlYXNvbmFibGUgbGV2ZWwgaWYgdGhlCiAJICogY2FjaGVsaW5lIHNpemUgaXMgdW5rbm93bi4KQEAgLTE0ODUsNyArMTQ4NSw3IEBACiAgKiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlIGhvc3QgdG8gc2VuZCBtZXNzYWdlcyBvdXRzaWRlIG9mIGFuIGlkZW50aWZ5CiAgKiBzZXF1ZW5jZSB3aGlsZSBwcm90ZWN0aW5nIHRoZSBzZXFlbmNlciBmcm9tIHRlc3RpbmcgdGhlIE1LX01FU1NBR0UgYml0CiAgKiBvbiBhbiBTQ0IgdGhhdCBtaWdodCBub3QgYmUgZm9yIHRoZSBjdXJyZW50IG5leHVzLiAoRm9yIGV4YW1wbGUsIGEKLSAqIEJEUiBtZXNzYWdlIGluIHJlc3BvbmNlIHRvIGEgYmFkIHJlc2VsZWN0aW9uIHdvdWxkIGxlYXZlIHVzIHBvaW50ZWQgdG8KKyAqIEJEUiBtZXNzYWdlIGluIHJlc3BvbnNlIHRvIGEgYmFkIHJlc2VsZWN0aW9uIHdvdWxkIGxlYXZlIHVzIHBvaW50ZWQgdG8KICAqIGFuIFNDQiB0aGF0IGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCkuCiAgKgogICogT3RoZXJ3aXNlLCB0cmVhdCBNU0dfT1VUIGFzIGEgMSBieXRlIG1lc3NhZ2UgdG8gc2VuZCAoYWJvcnQsIGFib3J0IHRhZywKQEAgLTE5OTksNyArMTk5OSw3IEBACiAgKiBmcm9tIG91dCB0byBpbiwgd2FpdCBhbiBhZGRpdGlvbmFsIGRhdGEgcmVsZWFzZSBkZWxheSBiZWZvcmUgY29udGludWluZy4KICAqLwogY2hhbmdlX3BoYXNlOgotCS8qIFdhaXQgZm9yIHByZWNlZWRpbmcgSS9PIHNlc3Npb24gdG8gY29tcGxldGUuICovCisJLyogV2FpdCBmb3IgcHJlY2VkaW5nIEkvTyBzZXNzaW9uIHRvIGNvbXBsZXRlLiAqLwogCXRlc3QJU0NTSVNJR0ksIEFDS0kgam56IC47CiAKIAkvKiBDaGFuZ2UgdGhlIHBoYXNlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X2NvcmUuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jCmluZGV4IGUwMjFiNDguLmRjMjhiMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jCkBAIC00MjcsNyArNDI3LDcgQEAKIH0KICNlbmRpZgogCi0vKioqKioqKioqKioqKioqKioqKioqKiogTWlzY2VsYW5lb3VzIFN1cHBvcnQgRnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqIE1pc2NlbGxhbmVvdXMgU3VwcG9ydCBGdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCiAvKgogICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNlcXVlbmNlciByZXBvcnRlZCBhIHJlc2lkdWFsCiAgKiBmb3IgdGhpcyBTQ0IvdHJhbnNhY3Rpb24uCkBAIC0xMjQzLDcgKzEyNDMsNyBAQAogCQkgKiB0aGF0IHJlcXVpcmVzIGhvc3QgYXNzaXN0YW5jZSBmb3IgY29tcGxldGlvbi4KIAkJICogV2hpbGUgaGFuZGxpbmcgdGhlIG1lc3NhZ2UgcGhhc2UocyksIHdlIHdpbGwgYmUKIAkJICogbm90aWZpZWQgYnkgdGhlIHNlcXVlbmNlciBhZnRlciBlYWNoIGJ5dGUgaXMKLQkJICogdHJhbnNmZXJlZCBzbyB3ZSBjYW4gdHJhY2sgYnVzIHBoYXNlIGNoYW5nZXMuCisJCSAqIHRyYW5zZmVycmVkIHNvIHdlIGNhbiB0cmFjayBidXMgcGhhc2UgY2hhbmdlcy4KIAkJICoKIAkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBzZWVuIGEgSE9TVF9NU0dfTE9PUAogCQkgKiBpbnRlcnJ1cHQsIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBob3N0IG1lc3NhZ2UKQEAgLTE0ODcsNyArMTQ4Nyw3IEBACiAJCSAgICAgICBzY2JwdHIsIGFoY19pbmIoYWhjLCBBUkdfMSksCiAJCSAgICAgICBhaGMtPnNjYl9kYXRhLT5oc2Nic1tzY2JwdHJdLnRhZyk7CiAJCWFoY19kdW1wX2NhcmRfc3RhdGUoYWhjKTsKLQkJcGFuaWMoImZvciBzYWZ0ZXkiKTsKKwkJcGFuaWMoImZvciBzYWZldHkiKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgT1VUX09GX1JBTkdFOgpAQCAtMTczMyw3ICsxNzMzLDcgQEAKIAkJLyoKIAkJICogQWx0aG91Z2ggdGhlIGRyaXZlciBkb2VzIG5vdCBjYXJlIGFib3V0IHRoZQogCQkgKiAnU2VsZWN0aW9uIGluIFByb2dyZXNzJyBzdGF0dXMgYml0LCB0aGUgYnVzeQotCQkgKiBMRUQgZG9lcy4gIFNFTElOR08gaXMgb25seSBjbGVhcmVkIGJ5IGEgc3VjY2Vzc2Z1bGwKKwkJICogTEVEIGRvZXMuICBTRUxJTkdPIGlzIG9ubHkgY2xlYXJlZCBieSBhIHN1Y2Nlc3NmdWwKIAkJICogc2VsZWN0aW9uLCBzbyB3ZSBtdXN0IG1hbnVhbGx5IGNsZWFyIGl0IHRvIGluc3VyZQogCQkgKiB0aGUgTEVEIHR1cm5zIG9mZiBqdXN0IGluY2FzZSBubyBmdXR1cmUgc3VjY2Vzc2Z1bAogCQkgKiBzZWxlY3Rpb25zIG9jY3VyIChlLmcuIG5vIGRldmljZXMgb24gdGhlIGJ1cykuCkBAIC0xOTQzLDcgKzE5NDMsNyBAQAogCQkJaWYgKGxhc3RwaGFzZSAhPSBQX0JVU0ZSRUUpIHsKIAkJCQkvKgogCQkJCSAqIFJlbmVnb3RpYXRlIHdpdGggdGhpcyBkZXZpY2UgYXQgdGhlCi0JCQkJICogbmV4dCBvcG9ydHVuaXR5IGp1c3QgaW4gY2FzZSB0aGlzIGJ1c2ZyZWUKKwkJCQkgKiBuZXh0IG9wcG9ydHVuaXR5IGp1c3QgaW4gY2FzZSB0aGlzIGJ1c2ZyZWUKIAkJCQkgKiBpcyBkdWUgdG8gYSBuZWdvdGlhdGlvbiBtaXNtYXRjaCB3aXRoIHRoZQogCQkJCSAqIGRldmljZS4KIAkJCQkgKi8KQEAgLTI0NDIsNyArMjQ0Miw3IEBACiAKIC8qCiAgKiBVcGRhdGUgdGhlIGJpdG1hc2sgb2YgdGFyZ2V0cyBmb3Igd2hpY2ggdGhlIGNvbnRyb2xsZXIgc2hvdWxkCi0gKiBuZWdvdGlhdGUgd2l0aCBhdCB0aGUgbmV4dCBjb252ZW5pZW50IG9wb3J0dW5pdHkuICBUaGlzIGN1cnJlbnRseQorICogbmVnb3RpYXRlIHdpdGggYXQgdGhlIG5leHQgY29udmVuaWVudCBvcHBvcnR1bml0eS4gIFRoaXMgY3VycmVudGx5CiAgKiBtZWFucyB0aGUgbmV4dCB0aW1lIHdlIHNlbmQgdGhlIGluaXRpYWwgaWRlbnRpZnkgbWVzc2FnZXMgZm9yCiAgKiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwpAQCAtNDEzMSw3ICs0MTMxLDcgQEAKIAogCQkvKgogCQkgKiBSZXF1ZXVlIGFsbCB0YWdnZWQgY29tbWFuZHMgZm9yIHRoaXMgdGFyZ2V0Ci0JCSAqIGN1cnJlbnRseSBpbiBvdXIgcG9zZXNzaW9uIHNvIHRoZXkgY2FuIGJlCisJCSAqIGN1cnJlbnRseSBpbiBvdXIgcG9zc2Vzc2lvbiBzbyB0aGV5IGNhbiBiZQogCQkgKiBjb252ZXJ0ZWQgdG8gdW50YWdnZWQgY29tbWFuZHMuCiAJCSAqLwogCQlhaGNfc2VhcmNoX3FpbmZpZm8oYWhjLCBTQ0JfR0VUX1RBUkdFVChhaGMsIHNjYiksCkBAIC00NTgxLDcgKzQ1ODEsNyBAQAogLyoKICAqIFJlc2V0IHRoZSBjb250cm9sbGVyIGFuZCByZWNvcmQgc29tZSBpbmZvcm1hdGlvbiBhYm91dCBpdAogICogdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSBqdXN0IGFmdGVyIGEgcmVzZXQuICBJZiAicmVpbml0IiBpcwotICogbm9uLXplcm8sIHRoaXMgcmVzZXQgb2NjdXJlZCBhZnRlciBpbml0aWFsIGNvbmZpZ3VyYXRpb24KKyAqIG5vbi16ZXJvLCB0aGlzIHJlc2V0IG9jY3VycmVkIGFmdGVyIGluaXRpYWwgY29uZmlndXJhdGlvbgogICogYW5kIHRoZSBjYWxsZXIgcmVxdWVzdHMgdGhhdCB0aGUgY2hpcCBiZSBmdWxseSByZWluaXRpYWxpemVkCiAgKiB0byBhIHJ1bmFibGUgc3RhdGUuICBDaGlwIGludGVycnVwdHMgYXJlICpub3QqIGVuYWJsZWQgYWZ0ZXIKICAqIGEgcmVpbml0aWFsaXphdGlvbi4gIFRoZSBjYWxsZXIgbXVzdCBlbmFibGUgaW50ZXJydXB0cyB2aWEKQEAgLTQ4OTksNyArNDg5OSw3IEBACiAJYWhjLT5uZXh0X3F1ZXVlZF9zY2IgPSBhaGNfZ2V0X3NjYihhaGMpOwogCiAJLyoKLQkgKiBOb3RlIHRoYXQgd2Ugd2VyZSBzdWNjZXNzZnVsbAorCSAqIE5vdGUgdGhhdCB3ZSB3ZXJlIHN1Y2Nlc3NmdWwKIAkgKi8KIAlyZXR1cm4gKDApOyAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9vc20uYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfb3NtLmMKaW5kZXggNGEzNTliYi4uYzYyNTFiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9vc20uYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5jCkBAIC0yOTQsNyArMjk0LDcgQEAKICAqIGR1YmlvdXMgYXQgYmVzdC4gIFRvIG15IGtub3dsZWRnZSwgdGhpcyBvcHRpb24gaGFzIG5ldmVyIGFjdHVhbGx5CiAgKiBzb2x2ZWQgYSBQQ0kgcGFyaXR5IHByb2JsZW0sIGJ1dCBvbiBjZXJ0YWluIG1hY2hpbmVzIHdpdGggYnJva2VuIFBDSQogICogY2hpcHNldCBjb25maWd1cmF0aW9ucyB3aGVyZSBzdHJheSBQQ0kgdHJhbnNhY3Rpb25zIHdpdGggYmFkIHBhcml0eSBhcmUKLSAqIHRoZSBub3JtIHJhdGhlciB0aGFuIHRoZSBleGNlcHRpb24sIHRoZSBlcnJvciBtZXNzYWdlcyBjYW4gYmUgb3ZlcndlbG1pbmcuCisgKiB0aGUgbm9ybSByYXRoZXIgdGhhbiB0aGUgZXhjZXB0aW9uLCB0aGUgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIG92ZXJ3aGVsbWluZy4KICAqIEl0J3MgaW5jbHVkZWQgaW4gdGhlIGRyaXZlciBmb3IgY29tcGxldGVuZXNzLgogICogICAwCSAgID0gU2h1dCBvZmYgUENJIHBhcml0eSBjaGVjawogICogICBub24tMCA9IHJldmVyc2UgcG9sYXJpdHkgcGNpIHBhcml0eSBjaGVja2luZwpAQCAtMTMxOCw3ICsxMzE4LDcgQEAKIAkJdXNlcnRhZ3MgPSBhaGNfbGludXhfdXNlcl90YWdkZXB0aChhaGMsIGRldmluZm8pOwogCQlpZiAoIXdhc19xdWV1aW5nKSB7CiAJCQkvKgotCQkJICogU3RhcnQgb3V0IGFncmVzc2l2ZWx5IGFuZCBhbGxvdyBvdXIKKwkJCSAqIFN0YXJ0IG91dCBhZ2dyZXNzaXZlbHkgYW5kIGFsbG93IG91cgogCQkJICogZHluYW1pYyBxdWV1ZSBkZXB0aCBhbGdvcml0aG0gdG8gdGFrZQogCQkJICogY2FyZSBvZiB0aGUgcmVzdC4KIAkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wY2kuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcGNpLmMKaW5kZXggMmIxMWE0Mi4uNjkxN2I0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wY2kuYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3BjaS5jCkBAIC03ODksNyArNzg5LDcgQEAKIAlhaGMtPmJ1c19pbnRyID0gYWhjX3BjaV9pbnRyOwogCWFoYy0+YnVzX2NoaXBfaW5pdCA9IGFoY19wY2lfY2hpcF9pbml0OwogCi0JLyogUmVtZWJlciBob3cgdGhlIGNhcmQgd2FzIHNldHVwIGluIGNhc2UgdGhlcmUgaXMgbm8gU0VFUFJPTSAqLworCS8qIFJlbWVtYmVyIGhvdyB0aGUgY2FyZCB3YXMgc2V0dXAgaW4gY2FzZSB0aGVyZSBpcyBubyBTRUVQUk9NICovCiAJaWYgKChhaGNfaW5iKGFoYywgSENOVFJMKSAmIFBPV1JETikgPT0gMCkgewogCQlhaGNfcGF1c2UoYWhjKTsKIAkJaWYgKChhaGMtPmZlYXR1cmVzICYgQUhDX1VMVFJBMikgIT0gMCkKQEAgLTg2MCw3ICs4NjAsNyBAQAogCX0KIAogCS8qCi0JICogV2UgY2Fubm90IHBlcmZvcm0gVUxUUkEgc3BlZWRzIHdpdGhvdXQgdGhlIHByZXNlbnNlCisJICogV2UgY2Fubm90IHBlcmZvcm0gVUxUUkEgc3BlZWRzIHdpdGhvdXQgdGhlIHByZXNlbmNlCiAJICogb2YgdGhlIGV4dGVybmFsIHByZWNpc2lvbiByZXNpc3Rvci4KIAkgKi8KIAlpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENfVUxUUkEpICE9IDApIHsKQEAgLTk2OSw3ICs5NjksNyBAQAogfQogCiAvKgotICogVGVzdCBmb3IgdGhlIHByZXNlbnNlIG9mIGV4dGVybmFsIHNyYW0gaW4gYW4KKyAqIFRlc3QgZm9yIHRoZSBwcmVzZW5jZSBvZiBleHRlcm5hbCBzcmFtIGluIGFuCiAgKiAidW5zaGFyZWQiIGNvbmZpZ3VyYXRpb24uCiAgKi8KIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21fZ3JhbS55IGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9ncmFtLnkKaW5kZXggZTQwNjQ0My4uZjE1ODZhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9ncmFtLnkKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9ncmFtLnkKQEAgLTgwMyw3ICs4MDMsNyBAQAogfAltYWNyb19hcmdsaXN0ICcsJyBUX0FSRwogCXsKIAkJaWYgKCQxID09IDApIHsKLQkJCXN0b3AoIkNvbW1hIHdpdGhvdXQgcHJlY2VlZGluZyBhcmd1bWVudCBpbiBhcmcgbGlzdCIsCisJCQlzdG9wKCJDb21tYSB3aXRob3V0IHByZWNlZGluZyBhcmd1bWVudCBpbiBhcmcgbGlzdCIsCiAJCQkgICAgIEVYX0RBVEFFUlIpOwogCQkJLyogTk9UUkVBQ0hFRCAqLwogCQl9CkBAIC0xMzE5LDggKzEzMTksOCBAQAogOwogCiAJLyoKLQkgKiBUaGlzIGdyYW1tZXIgZGlmZmVycyBmcm9tIHRoZSBvbmUgaW4gdGhlIGFpYzd4eHgKLQkgKiByZWZlcmVuY2UgbWFudWFsIHNpbmNlIHRoZSBncmFtbWVyIGxpc3RlZCB0aGVyZSBpcworCSAqIFRoaXMgZ3JhbW1hciBkaWZmZXJzIGZyb20gdGhlIG9uZSBpbiB0aGUgYWljN3h4eAorCSAqIHJlZmVyZW5jZSBtYW51YWwgc2luY2UgdGhlIGdyYW1tYXIgbGlzdGVkIHRoZXJlIGlzCiAJICogYW1iaWd1b3VzIGFuZCBjYXVzZXMgYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QuCiAJICogSXQgYWxzbyBzZWVtcyBtb3JlIGxvZ2ljYWwgYXMgdGhlICJpbW1lZGlhdGUiCiAJICogYXJndW1lbnQgaXMgbGlzdGVkIGFzIHRoZSBzZWNvbmQgYXJnIGxpa2UgdGhlCkBAIC0xNzk5LDcgKzE3OTksNyBAQAogCWluc3RyID0gc2VxX2FsbG9jKCk7CiAJZjNfaW5zdHIgPSAmaW5zdHItPmZvcm1hdC5mb3JtYXQzOwogCWlmIChhZGRyZXNzLT5zeW1ib2wgPT0gTlVMTCkgewotCQkvKiAnZG90JyByZWZlcnJlbmNlLiAgVXNlIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIgKi8KKwkJLyogJ2RvdCcgcmVmZXJlbmNlLiAgVXNlIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIgKi8KIAkJYWRkciA9IGluc3RydWN0aW9uX3B0ciArIGFkZHJlc3MtPm9mZnNldDsKIAl9IGVsc2UgaWYgKGFkZHJlc3MtPnN5bWJvbC0+dHlwZSA9PSBVTklOSVRJQUxJWkVEKSB7CiAJCS8qIGZvcndhcmQgcmVmZXJlbmNlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWNhc20vYWljYXNtX21hY3JvX2dyYW0ueSBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21fbWFjcm9fZ3JhbS55CmluZGV4IGZmNDZhYTYuLjcwODMyNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21fbWFjcm9fZ3JhbS55CisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21fbWFjcm9fZ3JhbS55CkBAIC0xMTUsNyArMTE1LDcgQEAKIHwJbWFjcm9fYXJnbGlzdCAnLCcgVF9BUkcKIAl7CiAJCWlmICgkMSA9PSAwKSB7Ci0JCQlzdG9wKCJDb21tYSB3aXRob3V0IHByZWNlZWRpbmcgYXJndW1lbnQgaW4gYXJnIGxpc3QiLAorCQkJc3RvcCgiQ29tbWEgd2l0aG91dCBwcmVjZWRpbmcgYXJndW1lbnQgaW4gYXJnIGxpc3QiLAogCQkJICAgICBFWF9EQVRBRVJSKTsKIAkJCS8qIE5PVFJFQUNIRUQgKi8KIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHhfb2xkLmMgYi9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQuYwppbmRleCA0ZmY2MGEwLi41YjIxMmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQuYworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQuYwpAQCAtOTA1LDcgKzkwNSw3IEBACiAgKiBwcm9ibGVtcyB3aXRoIGFyY2hpdGVjdHVyZXMgSSBjYW4ndCB0ZXN0IG9uIChiZWNhdXNlIEkgZG9uJ3QgaGF2ZSBvbmUsCiAgKiBzdWNoIGFzIHRoZSBBbHBoYSBiYXNlZCBzeXN0ZW1zKSB3aGljaCBoYXBwZW4gdG8gZ2l2ZSBmYXVsdHMgZm9yCiAgKiBub24tYWxpZ25lZCBtZW1vcnkgYWNjZXNzZXMsIGNhcmUgd2FzIHRha2VuIHRvIGFsaWduIHRoaXMgc3RydWN0dXJlCi0gKiBpbiBhIHdheSB0aGF0IGdhdXJhbnRlZWQgYWxsIGFjY2Vzc2VzIGxhcmdlciB0aGFuIDggYml0cyB3ZXJlIGFsaWduZWQKKyAqIGluIGEgd2F5IHRoYXQgZ3VhcmFudGVlZCBhbGwgYWNjZXNzZXMgbGFyZ2VyIHRoYW4gOCBiaXRzIHdlcmUgYWxpZ25lZAogICogb24gdGhlIGFwcHJvcHJpYXRlIGJvdW5kYXJ5LiAgSXQncyBhbHNvIG9yZ2FuaXplZCB0byB0cnkgYW5kIGJlIG1vcmUKICAqIGNhY2hlIGxpbmUgZWZmaWNpZW50LiAgQmUgY2FyZWZ1bCB3aGVuIGNoYW5naW5nIHRoaXMgbGVzdCB5b3UgbWlnaHQgaHVydAogICogb3ZlcmFsbCBwZXJmb3JtYW5jZSBhbmQgYnJpbmcgZG93biB0aGUgd3JhdGggb2YgdGhlIG1hc3Nlcy4KQEAgLTExODAsNyArMTE4MCw3IEBACiAgKiB0aGUgY2FyZCdzIHJlZ2lzdGVycyBpbiBhIGhleCBkdW1wIGZvcm1hdCB0YWlsb3JlZCB0byBlYWNoIG1vZGVsIG9mCiAgKiBjb250cm9sbGVyLgogICogCi0gKiBOT1RFOiBUSEUgQ09OVFJPTExFUiBJUyBMRUZUIElOIEFOIFVOVVNFQUJMRSBTVEFURSBCWSBUSElTIE9QVElPTi4KKyAqIE5PVEU6IFRIRSBDT05UUk9MTEVSIElTIExFRlQgSU4gQU4gVU5VU0FCTEUgU1RBVEUgQlkgVEhJUyBPUFRJT04uCiAgKiAgICAgICBZT1UgQ0FOTk9UIEJPT1QgVVAgV0lUSCBUSElTIE9QVElPTiwgSVQgSVMgRk9SIERFQlVHR0lORyBQVVJQT1NFUwogICogICAgICAgT05MWQogICovCkBAIC0zNDY3LDcgKzM0NjcsNyBAQAogICAvKiBUdXJuIG9mZiB0aGUgYnVzJyBjdXJyZW50IG9wZXJhdGlvbnMsIGFmdGVyIGFsbCwgd2Ugc2hvdWxkbid0IGhhdmUgYW55CiAgICAqIHZhbGlkIGNvbW1hbmRzIGxlZnQgdG8gY2F1c2UgYSBSU0VMSSBhbmQgU0VMTyBvbmNlIHdlJ3ZlIHRvc3NlZCB0aGUKICAgICogYnVzIGF3YXkgd2l0aCB0aGlzIHJlc2V0LCBzbyB3ZSBtaWdodCBhcyB3ZWxsIHNodXQgZG93biB0aGUgc2VxdWVuY2VyCi0gICAqIHVudGlsIHRoZSBidXMgaXMgcmVzdGFydGVkIGFzIG9wcG9zc2VkIHRvIHNhdmluZyB0aGUgY3VycmVudCBzZXR0aW5ncworICAgKiB1bnRpbCB0aGUgYnVzIGlzIHJlc3RhcnRlZCBhcyBvcHBvc2VkIHRvIHNhdmluZyB0aGUgY3VycmVudCBzZXR0aW5ncwogICAgKiBhbmQgcmVzdG9yaW5nIHRoZW0gKHdoaWNoIG1ha2VzIG5vIHNlbnNlIHRvIG1lKS4gKi8KIAogICAvKiBUdXJuIG9uIHRoZSBidXMgcmVzZXQuICovCkBAIC00MDcwLDcgKzQwNzAsNyBAQAogICAgICAgICAgICAgYWljX2Rldi0+bWF4X3FfZGVwdGggPSBhaWNfZGV2LT50ZW1wX3FfZGVwdGggPSAxOwogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFdlIHNldCB0aGlzIGNvbW1hbmQgdXAgYXMgYSBidXMgZGV2aWNlIHJlc2V0LiAgSG93ZXZlciwgd2UgaGF2ZQotICAgICAgICAgICAgICogdG8gY2xlYXIgdGhlIHRhZyB0eXBlIGFzIGl0J3MgY2F1c2luZyB1cyBwcm9ibGVtcy4gIFdlIHNob3VsZG50CisgICAgICAgICAgICAgKiB0byBjbGVhciB0aGUgdGFnIHR5cGUgYXMgaXQncyBjYXVzaW5nIHVzIHByb2JsZW1zLiAgV2Ugc2hvdWxkbid0CiAgICAgICAgICAgICAgKiBoYXZlIHRvIHdvcnJ5IGFib3V0IGFueSBvdGhlciBjb21tYW5kcyBiZWluZyBhY3RpdmUsIHNpbmNlIGlmCiAgICAgICAgICAgICAgKiB0aGUgZGV2aWNlIGlzIHJlZnVzaW5nIHRhZ2dlZCBjb21tYW5kcywgdGhpcyBzaG91bGQgYmUgdGhlCiAgICAgICAgICAgICAgKiBmaXJzdCB0YWdnZWQgY29tbWFuZCBzZW50IHRvIHRoZSBkZXZpY2UsIGhvd2V2ZXIsIHdlIGRvIGhhdmUKQEAgLTk3NDgsNyArOTc0OCw3IEBACiAgICAgfQogCiAgICAgLyoKLSAgICAgKiBXZSBhcmUgY29tbWl0ZWQgbm93LCBldmVyeXRoaW5nIGhhcyBiZWVuIGNoZWNrZWQgYW5kIHRoaXMgY2FyZAorICAgICAqIFdlIGFyZSBjb21taXR0ZWQgbm93LCBldmVyeXRoaW5nIGhhcyBiZWVuIGNoZWNrZWQgYW5kIHRoaXMgY2FyZAogICAgICAqIGhhcyBiZWVuIGZvdW5kLCBub3cgd2UganVzdCBzZXQgaXQgdXAKICAgICAgKi8KIApAQCAtOTkwNiw3ICs5OTA2LDcgQEAKICAgICogIDI6IEFsbCBQQ0kgY29udHJvbGxlcnMgd2l0aCBCSU9TX0VOQUJMRUQgbmV4dCwgYWNjb3JkaW5nIHRvIEJJT1MKICAgICogICAgIGFkZHJlc3MsIGdvaW5nIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QuCiAgICAqICAzOiBSZW1haW5pbmcgVkxCL0VJU0EgY29udHJvbGxlcnMgZ29pbmcgaW4gc2xvdCBvcmRlci4KLSAgICogIDQ6IFJlbWFpbmluZyBQQ0kgY29udHJvbGxlcnMsIGdvaW5nIGluIFBDSSBkZXZpY2Ugb3JkZXIgKHJldmVyc2FibGUpCisgICAqICA0OiBSZW1haW5pbmcgUENJIGNvbnRyb2xsZXJzLCBnb2luZyBpbiBQQ0kgZGV2aWNlIG9yZGVyIChyZXZlcnNpYmxlKQogICAgKi8KIAogICB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQvYWljN3h4eC5zZXEgYi9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQvYWljN3h4eC5zZXEKaW5kZXggMTU2NWJlOS4uODIzZmYyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHhfb2xkL2FpYzd4eHguc2VxCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC9haWM3eHh4LnNlcQpAQCAtNTEsNyArNTEsNyBAQAogICogdXNlIGJ5dGUgMjcgb2YgdGhlIFNDQiBhcyBhIHBzZXVkby1uZXh0IHBvaW50ZXIgYW5kIHRvIHRocmVhZCBhIGxpc3QKICAqIG9mIFNDQnMgdGhhdCBhcmUgYXdhaXRpbmcgc2VsZWN0aW9uLiAgU2luY2UgMC0weGZlIGFyZSB2YWxpZCBTQ0IgaW5kZXhlcywgCiAgKiBTQ0JfTElTVF9OVUxMIGlzIDB4ZmYgd2hpY2ggaXMgb3V0IG9mIHJhbmdlLiAgQW4gZW50cnkgaXMgYWxzbyBhZGRlZCB0bwotICogdGhpcyBsaXN0IGV2ZXJ5dGltZSBhIHJlcXVlc3Qgc2Vuc2Ugb2NjdXJzIG9yIGFmdGVyIGNvbXBsZXRpbmcgYSBub24tdGFnZ2VkCisgKiB0aGlzIGxpc3QgZXZlcnkgdGltZSBhIHJlcXVlc3Qgc2Vuc2Ugb2NjdXJzIG9yIGFmdGVyIGNvbXBsZXRpbmcgYSBub24tdGFnZ2VkCiAgKiBjb21tYW5kIGZvciB3aGljaCBhIHNlY29uZCBTQ0IgaGFzIGJlZW4gcXVldWVkLiAgVGhlIHNlcXVlbmNlciB3aWxsCiAgKiBhdXRvbWF0aWNhbGx5IGNvbnN1bWUgdGhlIGVudHJpZXMuCiAgKi8KQEAgLTY5Niw3ICs2OTYsNyBAQAogICogVGhpcyBpcyBkb25lIHRvIGFsbG93IHRoZSBoc290IHRvIHNlbmQgbWVzc2FnZXMgb3V0c2lkZSBvZiBhbiBpZGVudGlmeQogICogc2VxdWVuY2Ugd2hpbGUgcHJvdGVjdGluZyB0aGUgc2VxZW5jZXIgZnJvbSB0ZXN0aW5nIHRoZSBNS19NRVNTQUdFIGJpdAogICogb24gYW4gU0NCIHRoYXQgbWlnaHQgbm90IGJlIGZvciB0aGUgY3VycmVudCBuZXh1cy4gKEZvciBleGFtcGxlLCBhCi0gKiBCRFIgbWVzc2FnZSBpbiByZXNwb25jZSB0byBhIGJhZCByZXNlbGVjdGlvbiB3b3VsZCBsZWF2ZSB1cyBwb2ludGVkIHRvCisgKiBCRFIgbWVzc2FnZSBpbiByZXNwb25zZSB0byBhIGJhZCByZXNlbGVjdGlvbiB3b3VsZCBsZWF2ZSB1cyBwb2ludGVkIHRvCiAgKiBhbiBTQ0IgdGhhdCBkb2Vzbid0IGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aCB0aGUgY3VycmVudCB0YXJnZXQpLgogICogT3RoZXJ3aXNlLCB0cmVhdCBNU0dfT1VUIGFzIGEgMSBieXRlIG1lc3NhZ2UgdG8gc2VuZCAoYWJvcnQsIGFib3J0IHRhZywKICAqIGJ1cyBkZXZpY2UgcmVzZXQpLgpAQCAtNzE2LDggKzcxNiw4IEBACiAJfSBlbHNlIHsKIAkJYW5kCVNJTkRFWCwweDcsU0NCX1RDTDsJLyogbHVuICovCiAJfQotCWFuZAlBLERJU0NFTkIsU0NCX0NPTlRST0w7CS8qIG1hc2sgb2ZmIGRpc2Nvbm5lY3QgcHJpdmxlZGdlICovCi0Jb3IJU0lOREVYLEE7CQkvKiBvciBpbiBkaXNjb25uZWN0IHByaXZsZWRnZSAqLworCWFuZAlBLERJU0NFTkIsU0NCX0NPTlRST0w7CS8qIG1hc2sgb2ZmIGRpc2Nvbm5lY3QgcHJpdmlsZWdlICovCisJb3IJU0lOREVYLEE7CQkvKiBvciBpbiBkaXNjb25uZWN0IHByaXZpbGVnZSAqLwogCW9yCVNJTkRFWCxNU0dfSURFTlRJRllGTEFHOwogcF9tZXNnb3V0X21rX21lc3NhZ2U6CiAJdGVzdAlTQ0JfQ09OVFJPTCxNS19NRVNTQUdFICBqeiBwX21lc2dvdXRfdGFnOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzk0eHgvYWljOTR4eF9yZWdfZGVmLmggYi9kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3JlZ19kZWYuaAppbmRleCA0MDI3M2E3Li5kZDZjYzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3JlZ19kZWYuaAorKysgYi9kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3JlZ19kZWYuaApAQCAtMjEzNCw3ICsyMTM0LDcgQEAKICogVGhlIGhvc3QgYWNjZXNzZXMgdGhpcyBzY3JhdGNoIGluIGEgZGlmZmVyZW50IG1hbm5lciBmcm9tIHRoZQogKiBsaW5rIHNlcXVlbmNlci4gVGhlIHNlcXVlbmNlciBoYXMgdG8gdXNlIExTRVEgcmVnaXN0ZXJzCiAqIExtU0NSUEFHRSBhbmQgTG1NblNDUlBBR0UgdG8gYWNjZXNzIHRoZSBzY3JhdGNoIG1lbW9yeS4gQSBmbGF0Ci0qIG1hcHBpbmcgb2YgdGhlIHNjcmF0Y2ggbWVtb3J5IGlzIGF2YWxpYWJsZSBmb3Igc29mdHdhcmUKKyogbWFwcGluZyBvZiB0aGUgc2NyYXRjaCBtZW1vcnkgaXMgYXZhaWxhYmxlIGZvciBzb2Z0d2FyZQogKiBjb252ZW5pZW5jZSBhbmQgdG8gcHJldmVudCBjb3JydXB0aW9uIHdoaWxlIHRoZSBzZXF1ZW5jZXIgaXMKICogcnVubmluZy4gVGhpcyBtZW1vcnkgaXMgbWFwcGVkIG9udG8gYWRkcmVzc2VzIDgwMGggLSA5RkZoLgogKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FybS9hY29ybnNjc2kuYyBiL2RyaXZlcnMvc2NzaS9hcm0vYWNvcm5zY3NpLmMKaW5kZXggZWMxNjY3Mi4uYzQ1NGU0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FybS9hY29ybnNjc2kuYworKysgYi9kcml2ZXJzL3Njc2kvYXJtL2Fjb3Juc2NzaS5jCkBAIC0xMDAsNyArMTAwLDcgQEAKICAqLwogI2RlZmluZSBUSU1FT1VUX1RJTUUgMTAKIC8qCi0gKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBoYXZlIHZlcmJvc2UgZXhwbGFpbmF0aW9uIG9mIFNDU0kKKyAqIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgdmVyYm9zZSBleHBsYW5hdGlvbiBvZiBTQ1NJCiAgKiBzdGF0dXMvbWVzc2FnZXMuCiAgKi8KICN1bmRlZiBDT05GSUdfQUNPUk5TQ1NJX0NPTlNUQU5UUwpAQCAtMTU2MSw3ICsxNTYxLDcgQEAKIAkvKgogCSAqIElmIHdlIHdlcmUgbmVnb2NpYXRpbmcgc3luYyB0cmFuc2Zlciwgd2UgZG9uJ3QgeWV0IGtub3cgaWYKIAkgKiB0aGlzIFJFSkVDVCBpcyBmb3IgdGhlIHN5bmMgdHJhbnNmZXIgb3IgZm9yIHRoZSB0YWdnZWQgcXVldWUvd2lkZQotCSAqIHRyYW5zZmVyLiAgUmUtaW5pdGlhdGUgc3luYyB0cmFuc2ZlciBuZWdvY2lhdGlvbiBub3csIGFuZCBpZgorCSAqIHRyYW5zZmVyLiAgUmUtaW5pdGlhdGUgc3luYyB0cmFuc2ZlciBuZWdvdGlhdGlvbiBub3csIGFuZCBpZgogCSAqIHdlIGdvdCBhIFJFSkVDVCBpbiByZXNwb25zZSB0byBTRFRSLCB0aGVuIGl0J2xsIGJlIHNldCB0byBET05FLgogCSAqLwogCWlmIChob3N0LT5kZXZpY2VbaG9zdC0+U0NwbnQtPmRldmljZS0+aWRdLnN5bmNfc3RhdGUgPT0gU1lOQ19TRU5UX1JFUVVFU1QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXJtL2Fjb3Juc2NzaS5oIGIvZHJpdmVycy9zY3NpL2FybS9hY29ybnNjc2kuaAppbmRleCA4ZDIxNzJhLi4wMWJjNzE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL2Fjb3Juc2NzaS5oCisrKyBiL2RyaXZlcnMvc2NzaS9hcm0vYWNvcm5zY3NpLmgKQEAgLTIyMyw4ICsyMjMsOCBAQAogICogU3luY2hyb25vdXMgdHJhbnNmZXIgc3RhdGUKICAqLwogdHlwZWRlZiBlbnVtIHsJCQkJCS8qIFN5bmNocm9ub3VzIHRyYW5zZmVyIHN0YXRlCQkqLwotICAgIFNZTkNfQVNZTkNIUk9OT1VTLAkJCQkvKiBkb24ndCBuZWdvY2lhdGUgc3luY2hyb25vdXMgdHJhbnNmZXJzKi8KLSAgICBTWU5DX05FR09DSUFURSwJCQkJLyogc3RhcnQgbmVnb2NpYXRpb24JCQkqLworICAgIFNZTkNfQVNZTkNIUk9OT1VTLAkJCQkvKiBkb24ndCBuZWdvdGlhdGUgc3luY2hyb25vdXMgdHJhbnNmZXJzKi8KKyAgICBTWU5DX05FR09DSUFURSwJCQkJLyogc3RhcnQgbmVnb3RpYXRpb24JCQkqLwogICAgIFNZTkNfU0VOVF9SRVFVRVNULAkJCQkvKiBzZW50IFNEVFIgbWVzc2FnZQkJCSovCiAgICAgU1lOQ19DT01QTEVURUQsCQkJCS8qIHJlY2VpdmVkIFNEVFIgcmVwbHkJCQkqLwogfSBzeW5jeGZlcl90OwpAQCAtMzIyLDcgKzMyMiw3IEBACiAgICAgLyogcGVyLWRldmljZSBpbmZvICovCiAgICAgc3RydWN0IHsKIAl1bnNpZ25lZCBjaGFyCXN5bmNfeGZlcjsJCS8qIHN5bmNocm9ub3VzIHRyYW5zZmVyIChTQklDIHZhbHVlKQkqLwotCXN5bmN4ZmVyX3QJc3luY19zdGF0ZTsJCS8qIHN5bmMgeGZlciBuZWdvY2lhdGlvbiBzdGF0ZQkJKi8KKwlzeW5jeGZlcl90CXN5bmNfc3RhdGU7CQkvKiBzeW5jIHhmZXIgbmVnb3RpYXRpb24gc3RhdGUJCSovCiAJdW5zaWduZWQgY2hhcglkaXNjb25uZWN0X29rOjE7CS8qIGRldmljZSBjYW4gZGlzY29ubmVjdAkJKi8KICAgICB9IGRldmljZVs4XTsKICAgICB1bnNpZ25lZCBsb25nCWJ1c3lsdW5zWzY0IC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpXTsvKiBhcnJheSBvZiBiaXRzIGluZGljYXRpbmcgTFVOcyBidXN5CSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXJtL2FyeGVzY3NpLmMgYi9kcml2ZXJzL3Njc2kvYXJtL2FyeGVzY3NpLmMKaW5kZXggMjgzNmZlMi4uYTc1MGFhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FybS9hcnhlc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9hcm0vYXJ4ZXNjc2kuYwpAQCAtMjI4LDcgKzIyOCw3IEBACiAgKiBQYXJhbXMgIDogYnVmZmVyIC0gYSBidWZmZXIgdG8gd3JpdGUgaW5mb3JtYXRpb24gdG8KICAqCSAgICAgc3RhcnQgIC0gYSBwb2ludGVyIGludG8gdGhpcyBidWZmZXIgc2V0IGJ5IHRoaXMgcm91dGluZSB0byB0aGUgc3RhcnQKICAqCQkgICAgICBvZiB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uCi0gKgkgICAgIG9mZnNldCAtIG9mZnNldCBpbnRvIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSByZWFkIHVwdG8uCisgKgkgICAgIG9mZnNldCAtIG9mZnNldCBpbnRvIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSByZWFkIHVwIHRvLgogICoJICAgICBsZW5ndGggLSBsZW5ndGggb2YgYnVmZmVyCiAgKgkgICAgIGhvc3Rfbm8gLSBob3N0IG51bWJlciB0byByZXR1cm4gaW5mb3JtYXRpb24gZm9yCiAgKgkgICAgIGlub3V0ICAtIDAgZm9yIHJlYWRpbmcsIDEgZm9yIHdyaXRpbmcuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXJtL2N1bWFuYV8yLmMgYi9kcml2ZXJzL3Njc2kvYXJtL2N1bWFuYV8yLmMKaW5kZXggYzk5MDJiNS4uNTQ3OTg3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FybS9jdW1hbmFfMi5jCisrKyBiL2RyaXZlcnMvc2NzaS9hcm0vY3VtYW5hXzIuYwpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgKiBQYXJhbXMgICA6IGJ1ZmZlciAtIGEgYnVmZmVyIHRvIHdyaXRlIGluZm9ybWF0aW9uIHRvCiAgKgkgICAgICBzdGFydCAgLSBhIHBvaW50ZXIgaW50byB0aGlzIGJ1ZmZlciBzZXQgYnkgdGhpcyByb3V0aW5lIHRvIHRoZSBzdGFydAogICoJCSAgICAgICBvZiB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uCi0gKgkgICAgICBvZmZzZXQgLSBvZmZzZXQgaW50byBpbmZvcm1hdGlvbiB0aGF0IHdlIGhhdmUgcmVhZCB1cHRvLgorICoJICAgICAgb2Zmc2V0IC0gb2Zmc2V0IGludG8gaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIHJlYWQgdXAgdG8uCiAgKgkgICAgICBsZW5ndGggLSBsZW5ndGggb2YgYnVmZmVyCiAgKgkgICAgICBob3N0X25vIC0gaG9zdCBudW1iZXIgdG8gcmV0dXJuIGluZm9ybWF0aW9uIGZvcgogICoJICAgICAgaW5vdXQgIC0gMCBmb3IgcmVhZGluZywgMSBmb3Igd3JpdGluZy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcm0vZWVzb3guYyBiL2RyaXZlcnMvc2NzaS9hcm0vZWVzb3guYwppbmRleCBkODQzNTEzLi5lZGZkMTJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL2Vlc294LmMKKysrIGIvZHJpdmVycy9zY3NpL2FybS9lZXNveC5jCkBAIC00MjksNyArNDI5LDcgQEAKICAqIFBhcmFtcyAgIDogYnVmZmVyIC0gYSBidWZmZXIgdG8gd3JpdGUgaW5mb3JtYXRpb24gdG8KICAqCSAgICAgIHN0YXJ0ICAtIGEgcG9pbnRlciBpbnRvIHRoaXMgYnVmZmVyIHNldCBieSB0aGlzIHJvdXRpbmUgdG8gdGhlIHN0YXJ0CiAgKgkJICAgICAgIG9mIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi4KLSAqCSAgICAgIG9mZnNldCAtIG9mZnNldCBpbnRvIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSByZWFkIHVwdG8uCisgKgkgICAgICBvZmZzZXQgLSBvZmZzZXQgaW50byBpbmZvcm1hdGlvbiB0aGF0IHdlIGhhdmUgcmVhZCB1cCB0by4KICAqCSAgICAgIGxlbmd0aCAtIGxlbmd0aCBvZiBidWZmZXIKICAqCSAgICAgIGhvc3Rfbm8gLSBob3N0IG51bWJlciB0byByZXR1cm4gaW5mb3JtYXRpb24gZm9yCiAgKgkgICAgICBpbm91dCAgLSAwIGZvciByZWFkaW5nLCAxIGZvciB3cml0aW5nLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FybS9mYXMyMTYuYyBiL2RyaXZlcnMvc2NzaS9hcm0vZmFzMjE2LmMKaW5kZXggMmIyY2UyMS4uZTg1YzQwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FybS9mYXMyMTYuYworKysgYi9kcml2ZXJzL3Njc2kvYXJtL2ZhczIxNi5jCkBAIC0yMTE5LDcgKzIxMTksNyBAQAogCSAqIGV4ZWN1dGVkLCB1bmxlc3MgYSB0YXJnZXQgY29ubmVjdHMgdG8gdXMuCiAJICovCiAJaWYgKGluZm8tPnJlcVNDcG50KQotCQlwcmludGsoS0VSTl9XQVJOSU5HICJzY3NpJWQuJWM6IGxvb3NpbmcgcmVxdWVzdCBjb21tYW5kXG4iLAorCQlwcmludGsoS0VSTl9XQVJOSU5HICJzY3NpJWQuJWM6IGxvc2luZyByZXF1ZXN0IGNvbW1hbmRcbiIsCiAJCQlpbmZvLT5ob3N0LT5ob3N0X25vLCAnMCcgKyBTQ3BudC0+ZGV2aWNlLT5pZCk7CiAJaW5mby0+cmVxU0NwbnQgPSBTQ3BudDsKIH0KQEAgLTIyOTQsNyArMjI5NCw3IEBACiAJCSAqIElmIHdlIGRvbid0IGhhdmUgYW4gSVJRLCB0aGVuIHdlIG11c3QgcG9sbCB0aGUgY2FyZCBmb3IKIAkJICogaXQncyBpbnRlcnJ1cHQsIGFuZCB1c2UgdGhhdCB0byBjYWxsIHRoaXMgZHJpdmVyJ3MKIAkJICogaW50ZXJydXB0IHJvdXRpbmUuICBUaGF0IHdheSwgd2Uga2VlcCB0aGUgY29tbWFuZAotCQkgKiBwcm9ncmVzc2luZy4gIE1heWJlIHdlIGNhbiBhZGQgc29tZSBpbnRlbGlnZW5jZSBoZXJlCisJCSAqIHByb2dyZXNzaW5nLiAgTWF5YmUgd2UgY2FuIGFkZCBzb21lIGludGVsbGlnZW5jZSBoZXJlCiAJCSAqIGFuZCBnbyB0byBzbGVlcCBpZiB3ZSBrbm93IHRoYXQgdGhlIGRldmljZSBpcyBnb2luZwogCQkgKiB0byBiZSBzb21lIHRpbWUgKGVnLCBkaXNjb25uZWN0ZWQpLgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcm0vZmFzMjE2LmggYi9kcml2ZXJzL3Njc2kvYXJtL2ZhczIxNi5oCmluZGV4IGYzMGY4ZDYuLjg0YjcxMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hcm0vZmFzMjE2LmgKKysrIGIvZHJpdmVycy9zY3NpL2FybS9mYXMyMTYuaApAQCAtMjAzLDExICsyMDMsMTEgQEAKIH0gZmFzZG1hdHlwZV90OwogCiB0eXBlZGVmIGVudW0gewotCW5lZ193YWl0LAkJCQkJLyogTmVnb2NpYXRlIHdpdGggZGV2aWNlCQkqLwotCW5lZ19pbnByb2dyZXNzLAkJCQkJLyogTmVnb2NpYXRpb24gc2VudAkJCSovCi0JbmVnX2NvbXBsZXRlLAkJCQkJLyogTmVnb2NpYXRpb24gY29tcGxldGUJCQkqLwotCW5lZ190YXJnY29tcGxldGUsCQkJCS8qIFRhcmdldCBjb21wbGV0ZWQgbmVnb2NpYXRpb24JCSovCi0JbmVnX2ludmFsaWQJCQkJCS8qIE5lZ29jaWF0aW9uIG5vdCBzdXBwb3J0ZWQJCSovCisJbmVnX3dhaXQsCQkJCQkvKiBOZWdvdGlhdGUgd2l0aCBkZXZpY2UJCSovCisJbmVnX2lucHJvZ3Jlc3MsCQkJCQkvKiBOZWdvdGlhdGlvbiBzZW50CQkJKi8KKwluZWdfY29tcGxldGUsCQkJCQkvKiBOZWdvdGlhdGlvbiBjb21wbGV0ZQkJCSovCisJbmVnX3Rhcmdjb21wbGV0ZSwJCQkJLyogVGFyZ2V0IGNvbXBsZXRlZCBuZWdvdGlhdGlvbgkJKi8KKwluZWdfaW52YWxpZAkJCQkJLyogTmVnb3RpYXRpb24gbm90IHN1cHBvcnRlZAkJKi8KIH0gbmVnX3Q7CiAKICNkZWZpbmUgTUFHSUMJMHg0NDEyOTZiZFVMCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXJtL3Bvd2VydGVjLmMgYi9kcml2ZXJzL3Njc2kvYXJtL3Bvd2VydGVjLmMKaW5kZXggZTIyOTdiNC4uOTI3NGMwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FybS9wb3dlcnRlYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9hcm0vcG93ZXJ0ZWMuYwpAQCAtMjMyLDcgKzIzMiw3IEBACiAgKiBQYXJhbXMgICA6IGJ1ZmZlciAgLSBhIGJ1ZmZlciB0byB3cml0ZSBpbmZvcm1hdGlvbiB0bwogICoJICAgICAgc3RhcnQgICAtIGEgcG9pbnRlciBpbnRvIHRoaXMgYnVmZmVyIHNldCBieSB0aGlzIHJvdXRpbmUgdG8gdGhlIHN0YXJ0CiAgKgkJICAgICAgICBvZiB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uCi0gKgkgICAgICBvZmZzZXQgIC0gb2Zmc2V0IGludG8gaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIHJlYWQgdXB0by4KKyAqCSAgICAgIG9mZnNldCAgLSBvZmZzZXQgaW50byBpbmZvcm1hdGlvbiB0aGF0IHdlIGhhdmUgcmVhZCB1cCB0by4KICAqCSAgICAgIGxlbmd0aCAgLSBsZW5ndGggb2YgYnVmZmVyCiAgKgkgICAgICBpbm91dCAgIC0gMCBmb3IgcmVhZGluZywgMSBmb3Igd3JpdGluZy4KICAqIFJldHVybnMgIDogbGVuZ3RoIG9mIGRhdGEgd3JpdHRlbiB0byBidWZmZXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXRhcmlfTkNSNTM4MC5jIGIvZHJpdmVycy9zY3NpL2F0YXJpX05DUjUzODAuYwppbmRleCA4OGIyOTI4Li5lYTQzOWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXRhcmlfTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9hdGFyaV9OQ1I1MzgwLmMKQEAgLTQ2NCw3ICs0NjQsNyBAQAogICoKICAqIFBhcmFtZXRlcnM6IFNjc2lfQ21uZCAqY21kCiAgKiAgICBUaGUgY29tbWFuZCB0byB3b3JrIG9uLiBUaGUgZmlyc3Qgc2NhdHRlciBidWZmZXIncyBkYXRhIGFyZQotICogICAgYXNzdW1lZCB0byBiZSBhbHJlYWR5IHRyYW5zZmVyZWQgaW50byBwdHIvdGhpc19yZXNpZHVhbC4KKyAqICAgIGFzc3VtZWQgdG8gYmUgYWxyZWFkeSB0cmFuc2ZlcnJlZCBpbnRvIHB0ci90aGlzX3Jlc2lkdWFsLgogICovCiAKIHN0YXRpYyB2b2lkIG1lcmdlX2NvbnRpZ3VvdXNfYnVmZmVycyhTY3NpX0NtbmQgKmNtZCkKQEAgLTE3MjAsNyArMTcyMCw3IEBACiAgKglieXRlcyB0byB0cmFuc2ZlciwgKipkYXRhIC0gcG9pbnRlciB0byBkYXRhIHBvaW50ZXIuCiAgKgogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBhcmUgdHJhbnNmZXJlZCBvciBleGl0CisgKgltYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgYXJlIHRyYW5zZmVycmVkIG9yIGV4aXQKICAqCWlzIGluIHNhbWUgcGhhc2UuCiAgKgogICoJQWxzbywgKnBoYXNlLCAqY291bnQsICpkYXRhIGFyZSBtb2RpZmllZCBpbiBwbGFjZS4KQEAgLTE5MTEsNyArMTkxMSw3IEBACiAgKglieXRlcyB0byB0cmFuc2ZlciwgKipkYXRhIC0gcG9pbnRlciB0byBkYXRhIHBvaW50ZXIuCiAgKgogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcmVkIG9yIGV4aXQKKyAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKglpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqCUFsc28sICpwaGFzZSwgKmNvdW50LCAqZGF0YSBhcmUgbW9kaWZpZWQgaW4gcGxhY2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXRwODcwdS5jIGIvZHJpdmVycy9zY3NpL2F0cDg3MHUuYwppbmRleCA3NjAyOWQ1Li43ZTZlY2E0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXRwODcwdS5jCisrKyBiL2RyaXZlcnMvc2NzaS9hdHA4NzB1LmMKQEAgLTEyMjgsNyArMTIyOCw3IEBACiAJcHJpbnRrKCIgXG4leCAleCAleCAlc1xuICIsYXNzaWduaWRfbWFwLG1idWZbMF0sbWJ1ZlsxXSwmbWJ1ZlsyXSk7ICovCiAJaSA9IDE1OwogCWogPSBtYnVmWzBdOwotCWlmICgoaiAmIDB4MjApICE9IDApIHsJLyogYml0NT0xOklEIHVwdG8gNyAgICAgICovCisJaWYgKChqICYgMHgyMCkgIT0gMCkgewkvKiBiaXQ1PTE6SUQgdXAgdG8gNyAgICAgICovCiAJCWkgPSA3OwogCX0KIAlpZiAoKGogJiAweDA2KSA9PSAwKSB7CS8qIElEdmFsaWQ/ICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYmUyaXNjc2kvYmVfY21kcy5oIGIvZHJpdmVycy9zY3NpL2JlMmlzY3NpL2JlX2NtZHMuaAppbmRleCA1MjE4ZGU0Li5mYmQxZGMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYmUyaXNjc2kvYmVfY21kcy5oCisrKyBiL2RyaXZlcnMvc2NzaS9iZTJpc2NzaS9iZV9jbWRzLmgKQEAgLTg3Nyw3ICs4NzcsNyBAQAogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfUERVX1NJWkVfRVhDRUVEU19EU0wgMwkvKiBDb25uZWN0aW9uIGdvdCBpbnZhbGlkYXRlZAogCQkJCQkJICogaW50ZXJuYWxseQotCQkJCQkJICogZHVlIHRvIGEgcmVjaWV2ZWQgUERVCisJCQkJCQkgKiBkdWUgdG8gYSByZWNlaXZlZCBQRFUKIAkJCQkJCSAqIHNpemUgPiBEU0wKIAkJCQkJCSAqLwogI2RlZmluZSBDWE5fS0lMTEVEX0JVUlNUX0xFTl9NSVNNQVRDSCAgIDQJLyogQ29ubmVjdGlvbiBnb3QgaW52YWxpZGF0ZWQKQEAgLTg4Niw3ICs4ODYsNyBAQAogCQkJCQkJICogRkJML01CTC4KIAkJCQkJCSAqLwogI2RlZmluZSBDWE5fS0lMTEVEX0FIU19SQ1ZECQk1CS8qIENvbm5lY3Rpb24gZ290IGludmFsaWRhdGVkCi0JCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byBhIHJlY2lldmVkCisJCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byBhIHJlY2VpdmVkCiAJCQkJCQkgKiBQRFUgSGRyIHRoYXQgaGFzCiAJCQkJCQkgKiBBSFMgKi8KICNkZWZpbmUgQ1hOX0tJTExFRF9IRFJfRElHRVNUX0VSUgk2CS8qIENvbm5lY3Rpb24gZ290IGludmFsaWRhdGVkCkBAIC04OTksMTIgKzg5OSwxMiBAQAogCQkJCQkJICogcGR1IGhkcgogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfU1RBTEVfSVRUX1RUVF9SQ1ZECTgJLyogQ29ubmVjdGlvbiBnb3QgaW52YWxpZGF0ZWQKLQkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIGEgcmVjaWV2ZWQKKwkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIGEgcmVjZWl2ZWQKIAkJCQkJCSAqIElUVC9UVFQgdGhhdCBkb2VzIG5vdCBiZWxvbmcKIAkJCQkJCSAqIHRvIHRoaXMgQ29ubmVjdGlvbgogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfSU5WQUxJRF9JVFRfVFRUX1JDVkQgOQkvKiBDb25uZWN0aW9uIGdvdCBpbnZhbGlkYXRlZAotCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gcmVjaWV2ZWQKKwkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIHJlY2VpdmVkCiAJCQkJCQkgKiBJVFQvVFRUIHZhbHVlID4gTWF4CiAJCQkJCQkgKiBTdXBwb3J0ZWQgSVRUcy9UVFRzCiAJCQkJCQkgKi8KQEAgLTkzNiwyMSArOTM2LDIxIEBACiAJCQkJCQkgKiBpbmRleC4KIAkJCQkJCSAqLwogI2RlZmluZSBDWE5fS0lMTEVEX09WRVJfUlVOX1JFU0lEVUFMCTE2CS8qIENvbW1hbmQgZ290IGludmFsaWRhdGVkCi0JCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byByZWNpdmVkCisJCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byByZWNlaXZlZAogCQkJCQkJICogY29tbWFuZCBoYXMgcmVzaWR1YWwKIAkJCQkJCSAqIG92ZXIgcnVuIGJ5dGVzLgogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfVU5ERVJfUlVOX1JFU0lEVUFMCTE3CS8qIENvbW1hbmQgZ290IGludmFsaWRhdGVkCi0JCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byByZWNpdmVkCisJCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byByZWNlaXZlZAogCQkJCQkJICogY29tbWFuZCBoYXMgcmVzaWR1YWwgdW5kZXIKIAkJCQkJCSAqIHJ1biBieXRlcy4KIAkJCQkJCSAqLwogI2RlZmluZSBDTURfS0lMTEVEX0lOVkFMSURfU1RBVFNOX1JDVkQJMTgJLyogQ29tbWFuZCBnb3QgaW52YWxpZGF0ZWQKLQkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIGEgcmVjaWV2ZWQKKwkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIGEgcmVjZWl2ZWQKIAkJCQkJCSAqIFBEVSBoYXMgYW4gaW52YWxpZCBTdGF0dXNTTgogCQkJCQkJICovCiAjZGVmaW5lIENNRF9LSUxMRURfSU5WQUxJRF9SMlRfUkNWRAkxOQkvKiBDb21tYW5kIGdvdCBpbnZhbGlkYXRlZAotCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYSByZWNpZXZlZAorCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYSByZWNlaXZlZAogCQkJCQkJICogYW4gUjJUIHdpdGggc29tZSBpbnZhbGlkCiAJCQkJCQkgKiBmaWVsZHMgaW4gaXQKIAkJCQkJCSAqLwpAQCAtOTczLDcgKzk3Myw3IEBACiAJCQkJCQkgKi8KICNkZWZpbmUgQ01EX0NYTl9LSUxMRURfSU5WQUxJRF9EQVRBU05fUkNWRCAyNAkvKiBDb21tYW5kIGdvdCBpbnZhbGlkYXRlZAogCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYQotCQkJCQkJICogcmVjaWV2ZWQgUERVIGhhcyBhbiBpbnZhbGlkCisJCQkJCQkgKiByZWNlaXZlZCBQRFUgaGFzIGFuIGludmFsaWQKIAkJCQkJCSAqIERhdGFTTgogCQkJCQkJICovCiAjZGVmaW5lIENYTl9JTlZBTElEQVRFX05PVElGWQkJMjUJLyogQ29ubmVjdGlvbiBpbnZhbGlkYXRpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2NvcmUuYyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2NvcmUuYwppbmRleCAxY2Q1YzhiLi45MTgzOGM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9jb3JlLmMKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfY29yZS5jCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkJCS8qCiAJCQkgKiBFUlJfUFNTIGJpdCBuZWVkcyB0byBiZSBjbGVhcmVkIGFzIHdlbGwgaW4gY2FzZQogCQkJICogaW50ZXJydXBzIGFyZSBzaGFyZWQgc28gZHJpdmVyJ3MgaW50ZXJydXB0IGhhbmRsZXIgaXMKLQkJCSAqIHN0aWxsIGNhbGxlZCBldmVudGhvdWdoIGl0IGlzIGFscmVhZHkgbWFza2VkIG91dC4KKwkJCSAqIHN0aWxsIGNhbGxlZCBldmVuIHRob3VnaCBpdCBpcyBhbHJlYWR5IG1hc2tlZCBvdXQuCiAJCQkgKi8KIAkJCWN1cnJfdmFsdWUgPSByZWFkbCgKIAkJCQkJYmZhLT5pb2MuaW9jX3JlZ3MucHNzX2Vycl9zdGF0dXNfcmVnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2RlZnNfc3ZjLmggYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9kZWZzX3N2Yy5oCmluZGV4IDY0OGM4NDEuLjIwN2Y1OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2RlZnNfc3ZjLmgKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZGVmc19zdmMuaApAQCAtMTQ1LDcgKzE0NSw3IEBACiAJdTMyCWlvaF9kYXRhX29vcl9ldmVudDsJLyogIERhdGEgb3V0IG9mIHJhbmdlICovCiAJdTMyCWlvaF9yb19vb29fZXZlbnQ7CS8qICBSZWxhdGl2ZSBvZmZzZXQgb3V0IG9mIHJhbmdlICovCiAJdTMyCWlvaF9jcHVfb3duZWRfZXZlbnQ7CS8qICBJT0ggaGl0IC1pb3N0IG93bmVkIGJ5IGYvdyAqLwotCXUzMglpb2hfdW5leHBfZnJhbWVfZXZlbnQ7CS8qICB1bmV4cGVjdGVkIGZyYW1lIHJlY2lldmVkCisJdTMyCWlvaF91bmV4cF9mcmFtZV9ldmVudDsJLyogIHVuZXhwZWN0ZWQgZnJhbWUgcmVjZWl2ZWQKIAkJCQkJCSAqICAgY291bnQgKi8KIAl1MzIJaW9oX2Vycl9pbnQ7CQkvKiAgSU9IIGVycm9yIGludCBkdXJpbmcgZGF0YS1waGFzZQogCQkJCQkJICogICBmb3Igc2NzaSB3cml0ZQpAQCAtNTY2LDggKzU2Niw4IEBACiAJdTMyCWlucHV0X3JlcXM7CQkvKiAgRGF0YSBpbi1ib3VuZCByZXF1ZXN0cwkqLwogCXUzMglvdXRwdXRfcmVxczsJCS8qICBEYXRhIG91dC1ib3VuZCByZXF1ZXN0cwkqLwogCXUzMglpb19jb21wczsJCS8qICBUb3RhbCBJTyBDb21wbGV0aW9ucwkqLwotCXUzMgl3cl90aHJvdWdocHV0OwkJLyogIFdyaXRlIGRhdGEgdHJhbnNmZXJlZCBpbiBieXRlcyAqLwotCXUzMglyZF90aHJvdWdocHV0OwkJLyogIFJlYWQgZGF0YSB0cmFuc2ZlcmVkIGluIGJ5dGVzICAqLworCXUzMgl3cl90aHJvdWdocHV0OwkJLyogIFdyaXRlIGRhdGEgdHJhbnNmZXJyZWQgaW4gYnl0ZXMgKi8KKwl1MzIJcmRfdGhyb3VnaHB1dDsJCS8qICBSZWFkIGRhdGEgdHJhbnNmZXJyZWQgaW4gYnl0ZXMgICovCiAKIAl1MzIJaW9jb21wX29rOwkJLyogIFNsb3dwYXRoIElPIGNvbXBsZXRpb25zCSovCiAJdTMyCWlvY29tcF91bmRlcnJ1bjsJLyogIElPIHVuZGVycnVuCQkqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmMuaCBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2ZjLmgKaW5kZXggOGU3NjRmYS4uYmYwMDY3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmMuaAorKysgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mYy5oCkBAIC0zMTUsNyArMzE1LDcgQEAKIAkJCXF1ZXJ5X2RiYzoxLAogCQkJaGdfc3VwcDoxOwogI2VuZGlmCi0JX19iZTE2CQlyeHN6OwkJLyogcmVjaWV2ZSBkYXRhX2ZpZWxkIHNpemUgKi8KKwlfX2JlMTYJCXJ4c3o7CQkvKiByZWNlaXZlIGRhdGFfZmllbGQgc2l6ZSAqLwogCV9fYmUxNgkJY29uc2VxOwogCV9fYmUxNgkJcm9fYml0bWFwOwogCV9fYmUzMgkJZV9kX3RvdjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjcy5jIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmMKaW5kZXggZjY3NGY5My4uOWI0M2NhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmMKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmMKQEAgLTEwMzMsNyArMTAzMyw3IEBACiAKIAogLyoKLSAqIExvb2t1cCBmb3IgYSB2cG9ydCB3aXRoaW5nIGEgZmFicmljIGdpdmVuIGl0cyBwd3duCisgKiBMb29rdXAgZm9yIGEgdnBvcnQgd2l0aGluIGEgZmFicmljIGdpdmVuIGl0cyBwd3duCiAgKi8KIHN0cnVjdCBiZmFfZmNzX3Zwb3J0X3MgKgogYmZhX2Zjc19mYWJyaWNfdnBvcnRfbG9va3VwKHN0cnVjdCBiZmFfZmNzX2ZhYnJpY19zICpmYWJyaWMsIHd3bl90IHB3d24pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3MuaCBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjcy5oCmluZGV4IDBmZDYzMTYuLjYxY2RjZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjcy5oCisrKyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjcy5oCkBAIC03MDUsNyArNzA1LDcgQEAKIAlSUFNNX0VWRU5UX0FERFJFU1NfQ0hBTkdFID0gMTUsIC8qICBScG9ydCdzIFBJRCBoYXMgY2hhbmdlZCAgICAgKi8KIAlSUFNNX0VWRU5UX0FERFJFU1NfRElTQyA9IDE2LCAgIC8qICBOZWVkIHRvIERpc2NvdmVyIHJwb3J0J3MgUElEICovCiAJUlBTTV9FVkVOVF9QUkxPX1JDVkQgICA9IDE3LCAgICAvKiAgUFJMTyBmcm9tIHJlbW90ZSBkZXZpY2UgICAgICovCi0JUlBTTV9FVkVOVF9QTE9HSV9SRVRSWSA9IDE4LCAgICAvKiAgUmV0cnkgUExPR0kgY29udGlub3VzbHkgKi8KKwlSUFNNX0VWRU5UX1BMT0dJX1JFVFJZID0gMTgsICAgIC8qICBSZXRyeSBQTE9HSSBjb250aW51b3VzbHkgKi8KIH07CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3NfbHBvcnQuYyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjc19scG9ydC5jCmluZGV4IDQzZmE5ODZiLi4xZDZiZThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3NfbHBvcnQuYworKysgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3NfbHBvcnQuYwpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIAkJfSBlbHNlIHsKIAkJCS8qCiAJCQkgKiBGb3IgYSBiYXNlIHBvcnQsIHdlIHNob3VsZCBmaXJzdCByZWdpc3RlciB0aGUgSEJBCi0JCQkgKiBhdHJpYnV0ZS4gVGhlIEhCQSBhdHRyaWJ1dGUgYWxzbyBjb250YWlucyB0aGUgYmFzZQorCQkJICogYXR0cmlidXRlLiBUaGUgSEJBIGF0dHJpYnV0ZSBhbHNvIGNvbnRhaW5zIHRoZSBiYXNlCiAJCQkgKiAgcG9ydCByZWdpc3RyYXRpb24uCiAJCQkgKi8KIAkJCWJmYV9zbV9zZXRfc3RhdGUoZmRtaSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX3N2Yy5jIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmMKaW5kZXggMWQzNDkyMS4uMTZkOWE1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmMKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmMKQEAgLTEwMzUsNyArMTAzNSw3IEBACiAgKiBAcGFyYW1baW5dCXJwb3J0CUJGQSBycG9ydCBwb2ludGVyLiBDb3VsZCBiZSBsZWZ0IE5VTEwgZm9yIFdLQSBycG9ydHMKICAqIEBwYXJhbVtpbl0JdmZfaWQJdmlydHVhbCBGYWJyaWMgSUQKICAqIEBwYXJhbVtpbl0JbHBfdGFnCWxwb3J0IHRhZwotICogQHBhcmFtW2luXQljdHMJdXNlIENvbnRpbm91cyBzZXF1ZW5jZQorICogQHBhcmFtW2luXQljdHMJdXNlIENvbnRpbnVvdXMgc2VxdWVuY2UKICAqIEBwYXJhbVtpbl0JY29zCWZjIENsYXNzIG9mIFNlcnZpY2UKICAqIEBwYXJhbVtpbl0JcmVxbGVuCXJlcXVlc3QgbGVuZ3RoLCBkb2VzIG5vdCBpbmNsdWRlIEZDSFMgbGVuZ3RoCiAgKiBAcGFyYW1baW5dCWZjaHMJZmMgSGVhZGVyIFBvaW50ZXIuIFRoZSBoZWFkZXIgY29udGVudCB3aWxsIGJlIGNvcGllZApAQCAtNTAyMiw3ICs1MDIyLDcgQEAKIH0KIAogLyoKLSAqIFJlZ2lzdGVyIGhhbmRsZXIgZm9yIGFsbCB1bnNvbGljdGVkIHJlY2lldmUgZnJhbWVzLgorICogUmVnaXN0ZXIgaGFuZGxlciBmb3IgYWxsIHVuc29saWN0ZWQgcmVjZWl2ZSBmcmFtZXMuCiAgKgogICogQHBhcmFtW2luXQliZmEJCUJGQSBpbnN0YW5jZQogICogQHBhcmFtW2luXQl1ZnJlY3YJcmVjZWl2ZSBoYW5kbGVyIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9zdmMuaCBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX3N2Yy5oCmluZGV4IDMzMWFkOTkuLjU5MDJhNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX3N2Yy5oCisrKyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX3N2Yy5oCkBAIC0xMjcsNyArMTI3LDcgQEAKIAkJCQkJICogcnBvcnQgbmV4dXMgaXMgZXN0YWJsaXNoZWQKIAkJCQkJICovCiAJc3RydWN0IGZjaHNfcwlmY2hzOwkvKiAgcmVxdWVzdCBGQyBoZWFkZXIgc3RydWN0dXJlICovCi0JdTgJCWN0czsJLyogIGNvbnRpbm91cyBzZXF1ZW5jZSAqLworCXU4CQljdHM7CS8qICBjb250aW51b3VzIHNlcXVlbmNlICovCiAJdTgJCWNsYXNzOwkvKiAgRkMgY2xhc3MgZm9yIHRoZSByZXF1ZXN0L3Jlc3BvbnNlICovCiAJdTE2CW1heF9mcm1zejsJLyogIG1heCBzZW5kIGZyYW1lIHNpemUgKi8KIAl1MTYJdmZfaWQ7CS8qICB2c2FuIHRhZyBpZiBhcHBsaWNhYmxlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYmZhL2JmYWQuYyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhZC5jCmluZGV4IDQ0NTI0Y2YuLjBmZDUxMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhZC5jCkBAIC0xMjc4LDcgKzEyNzgsNyBAQAogCQkJICogaW50ZXJydXB0cyBpbnRvIG9uZSB2ZWN0b3IsIHNvIGV2ZW4gaWYgd2UKIAkJCSAqIGNhbiB0cnkgdG8gcmVxdWVzdCBsZXNzIHZlY3RvcnMsIHdlIGRvbid0CiAJCQkgKiBrbm93IGhvdyB0byBhc3NvY2lhdGUgaW50ZXJydXB0IGV2ZW50cyB0bwotCQkJICogIHZlY3RvcnMuIExpbnV4IGRvZXNuJ3QgZHVwaWNhdGUgdmVjdG9ycworCQkJICogIHZlY3RvcnMuIExpbnV4IGRvZXNuJ3QgZHVwbGljYXRlIHZlY3RvcnMKIAkJCSAqIGluIHRoZSBNU0lYIHRhYmxlIGZvciB0aGlzIGNhc2UuCiAJCQkgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JueDJmYy81N3h4X2hzaV9ibngyZmMuaCBiL2RyaXZlcnMvc2NzaS9ibngyZmMvNTd4eF9oc2lfYm54MmZjLmgKaW5kZXggNjlkMDMxZC4uOTdhNjFiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JueDJmYy81N3h4X2hzaV9ibngyZmMuaAorKysgYi9kcml2ZXJzL3Njc2kvYm54MmZjLzU3eHhfaHNpX2JueDJmYy5oCkBAIC04OTgsNyArODk4LDcgQEAKIAogCiAvKgotICogRkNvRSBjb25lY3Rpb24gZGF0YSBiYXNlCisgKiBGQ29FIGNvbm5lY3Rpb24gZGF0YSBiYXNlCiAgKi8KIHN0cnVjdCBmY29lX2Nvbm5fZGIgewogI2lmIGRlZmluZWQoX19CSUdfRU5ESUFOKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfZWxzLmMgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19lbHMuYwppbmRleCA3YTExYTI1Li41MmMzNTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19lbHMuYworKysgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19lbHMuYwpAQCAtMzk3LDcgKzM5Nyw3IEBACiAJCQkgICAgICZlbHNfcmVxLT5yZXFfZmxhZ3MpKSB7CiAJCUJOWDJGQ19FTFNfREJHKCJUaW1lciBjb250ZXh0IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhpcyAiCiAJCQkgICAiZWxzIC0gMHgleFxuIiwgZWxzX3JlcS0+eGlkKTsKLQkJLyogVGhpcyBJTyBkb2VzbnQgcmVjZWl2ZSBjbGVhbnVwIGNvbXBsZXRpb24gKi8KKwkJLyogVGhpcyBJTyBkb2Vzbid0IHJlY2VpdmUgY2xlYW51cCBjb21wbGV0aW9uICovCiAJCWtyZWZfcHV0KCZlbHNfcmVxLT5yZWZjb3VudCwgYm54MmZjX2NtZF9yZWxlYXNlKTsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX2lvLmMgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19pby5jCmluZGV4IGQzZmMzMDIuLjFkZWNlZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX2lvLmMKKysrIGIvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfaW8uYwpAQCAtMTI3Myw3ICsxMjczLDcgQEAKIAkJCQkJCSBibngyZmNfY21kX3JlbGVhc2UpOwogCQkJCQkJCS8qIHRpbWVyIGhvbGQgKi8KIAkJCQlyYyA9IGJueDJmY19pbml0aWF0ZV9hYnRzKGNtZCk7Ci0JCQkJLyogYWJ0cyBzaG91bGRudCBmYWlsIGluIHRoaXMgY29udGV4dCAqLworCQkJCS8qIGFidHMgc2hvdWxkbid0IGZhaWwgaW4gdGhpcyBjb250ZXh0ICovCiAJCQkJV0FSTl9PTihyYyAhPSBTVUNDRVNTKTsKIAkJCX0gZWxzZQogCQkJCXByaW50ayhLRVJOX0VSUiBQRlggImx1bl9yc3Q6IGFidHMgYWxyZWFkeSBpbiIKQEAgLTEzMDgsNyArMTMwOCw3IEBACiAJCQkJa3JlZl9wdXQoJmlvX3JlcS0+cmVmY291bnQsCiAJCQkJCSBibngyZmNfY21kX3JlbGVhc2UpOyAvKiB0aW1lciBob2xkICovCiAJCQlyYyA9IGJueDJmY19pbml0aWF0ZV9hYnRzKGNtZCk7Ci0JCQkvKiBhYnRzIHNob3VsZG50IGZhaWwgaW4gdGhpcyBjb250ZXh0ICovCisJCQkvKiBhYnRzIHNob3VsZG4ndCBmYWlsIGluIHRoaXMgY29udGV4dCAqLwogCQkJV0FSTl9PTihyYyAhPSBTVUNDRVNTKTsKIAogCQl9IGVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX3RndC5jIGIvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfdGd0LmMKaW5kZXggN2NjMDVlNC4uYTJlMzgzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfdGd0LmMKKysrIGIvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfdGd0LmMKQEAgLTM5NSw3ICszOTUsNyBAQAogCQlycCA9IHJwb3J0LT5kZF9kYXRhOwogCQlpZiAocnBvcnQtPnBvcnRfaWQgPT0gRkNfRklEX0RJUl9TRVJWKSB7CiAJCQkvKgotCQkJICogYm54MmZjX3Jwb3J0IHN0cnVjdHVyZSBkb2VzbnQgZXhpc3QgZm9yCisJCQkgKiBibngyZmNfcnBvcnQgc3RydWN0dXJlIGRvZXNuJ3QgZXhpc3QgZm9yCiAJCQkgKiBkaXJlY3Rvcnkgc2VydmVyLgogCQkJICogV2Ugc2hvdWxkIG5vdCBjb21lIGhlcmUsIGFzIGxwb3J0IHdpbGwKIAkJCSAqIHRha2UgY2FyZSBvZiBmYWJyaWMgbG9naW4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ibngyaS9ibngyaV9od2kuYyBiL2RyaXZlcnMvc2NzaS9ibngyaS9ibngyaV9od2kuYwppbmRleCAxZGEzNGMwLi5mMGI4OTUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYm54MmkvYm54MmlfaHdpLmMKKysrIGIvZHJpdmVycy9zY3NpL2JueDJpL2JueDJpX2h3aS5jCkBAIC0xNzMsNyArMTczLDcgQEAKIAogLyoqCiAgKiBibngyaV9nZXRfcnFfYnVmIC0gY29weSBSUSBidWZmZXIgY29udGVudHMgdG8gZHJpdmVyIGJ1ZmZlcgotICogQGNvbm46CQlpc2NzaSBjb25uZWN0aW9uIG9uIHdoaWNoIFJRIGV2ZW50IG9jY3VyZWQKKyAqIEBjb25uOgkJaXNjc2kgY29ubmVjdGlvbiBvbiB3aGljaCBSUSBldmVudCBvY2N1cnJlZAogICogQHB0cjoJCWRyaXZlciBidWZmZXIgdG8gd2hpY2ggUlEgYnVmZmVyIGNvbnRlbnRzIGlzIHRvCiAgKgkJCWJlIGNvcGllZAogICogQGxlbjoJCWxlbmd0aCBvZiB2YWxpZCBkYXRhIGluc2lkZSBSUSBidWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9jeGdiaS9saWJjeGdiaS5oIGIvZHJpdmVycy9zY3NpL2N4Z2JpL2xpYmN4Z2JpLmgKaW5kZXggMGEyMGZkNS4uOTI2Nzg0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2N4Z2JpL2xpYmN4Z2JpLmgKKysrIGIvZHJpdmVycy9zY3NpL2N4Z2JpL2xpYmN4Z2JpLmgKQEAgLTI2Miw5ICsyNjIsOSBAQAogZW51bSBjeGdiaV9za2NiX2ZsYWdzIHsKIAlTS0NCRl9UWF9ORUVEX0hEUiwJLyogcGFja2V0IG5lZWRzIGEgaGVhZGVyICovCiAJU0tDQkZfUlhfQ09BTEVTQ0VELAkvKiByZWNlaXZlZCB3aG9sZSBwZHUgKi8KLQlTS0NCRl9SWF9IRFIsCQkvKiByZWNpZXZlZCBwZHUgaGVhZGVyICovCi0JU0tDQkZfUlhfREFUQSwJCS8qIHJlY2lldmVkIHBkdSBwYXlsb2FkICovCi0JU0tDQkZfUlhfU1RBVFVTLAkvKiByZWNpZXZlZCBkZHAgc3RhdHVzICovCisJU0tDQkZfUlhfSERSLAkJLyogcmVjZWl2ZWQgcGR1IGhlYWRlciAqLworCVNLQ0JGX1JYX0RBVEEsCQkvKiByZWNlaXZlZCBwZHUgcGF5bG9hZCAqLworCVNLQ0JGX1JYX1NUQVRVUywJLyogcmVjZWl2ZWQgZGRwIHN0YXR1cyAqLwogCVNLQ0JGX1JYX0RBVEFfRERQRCwJLyogcGR1IHBheWxvYWQgZGRwJ2QgKi8KIAlTS0NCRl9SWF9IQ1JDX0VSUiwJLyogaGVhZGVyIGRpZ2VzdCBlcnJvciAqLwogCVNLQ0JGX1JYX0RDUkNfRVJSLAkvKiBkYXRhIGRpZ2VzdCBlcnJvciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2RjMzk1eC5jIGIvZHJpdmVycy9zY3NpL2RjMzk1eC5jCmluZGV4IGIwZjg1MjMuLmIxMGIzODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9kYzM5NXguYworKysgYi9kcml2ZXJzL3Njc2kvZGMzOTV4LmMKQEAgLTIzNSw3ICsyMzUsNyBAQAogCiAJdTggc2dfY291bnQ7CQkJLyogTm8gb2YgSFcgc2cgZW50cmllcyBmb3IgdGhpcyByZXF1ZXN0ICovCiAJdTggc2dfaW5kZXg7CQkJLyogSW5kZXggb2YgSFcgc2cgZW50cnkgZm9yIHRoaXMgcmVxdWVzdCAqLwotCXNpemVfdCB0b3RhbF94ZmVyX2xlbmd0aDsJLyogVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyB0byBiZSB0cmFuc2ZlcmVkICovCisJc2l6ZV90IHRvdGFsX3hmZXJfbGVuZ3RoOwkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVtYWluaW5nIHRvIGJlIHRyYW5zZmVycmVkICovCiAJc2l6ZV90IHJlcXVlc3RfbGVuZ3RoOwkJLyogVG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoaXMgcmVxdWVzdCAqLwogCS8qCiAJICogVGhlIHNlbnNlIGJ1ZmZlciBoYW5kbGluZyBmdW5jdGlvbiwgcmVxdWVzdF9zZW5zZSwgdXNlcwpAQCAtMTc3NCw3ICsxNzc0LDcgQEAKIAkJZGMzOTV4X3N0YXRldihhY2IsIHNyYiwgJnNjc2lfc3RhdHVzKTsKIAogCQkvKiAKLQkJICogaWYgdGhlcmUgd2VyZSBhbnkgZXhjZXB0aW9uIG9jY3VyZWQgc2NzaV9zdGF0dXMKKwkJICogaWYgdGhlcmUgd2VyZSBhbnkgZXhjZXB0aW9uIG9jY3VycmVkIHNjc2lfc3RhdHVzCiAJCSAqIHdpbGwgYmUgbW9kaWZ5IHRvIGJ1cyBmcmVlIHBoYXNlIG5ldyBzY3NpX3N0YXR1cwogCQkgKiB0cmFuc2ZlciBvdXQgZnJvbSAuLi4gcHJldmlvdXMgZGMzOTV4X3N0YXRldgogCQkgKi8KQEAgLTE5NTQsMTEgKzE5NTQsMTEgQEAKIHN0YXRpYyB2b2lkIHNnX3VwZGF0ZV9saXN0KHN0cnVjdCBTY3NpUmVxQmxrICpzcmIsIHUzMiBsZWZ0KQogewogCXU4IGlkeDsKLQl1MzIgeGZlcnJlZCA9IHNyYi0+dG90YWxfeGZlcl9sZW5ndGggLSBsZWZ0OyAvKiBieXRlcyB0cmFuc2ZlcmVkICovCisJdTMyIHhmZXJyZWQgPSBzcmItPnRvdGFsX3hmZXJfbGVuZ3RoIC0gbGVmdDsgLyogYnl0ZXMgdHJhbnNmZXJyZWQgKi8KIAlzdHJ1Y3QgU0dlbnRyeSAqcHNnZSA9IHNyYi0+c2VnbWVudF94ICsgc3JiLT5zZ19pbmRleDsKIAogCWRwcmludGtkYmcoREJHXzAsCi0JCSJzZ191cGRhdGVfbGlzdDogVHJhbnNmZXJlZCAlaSBvZiAlaSBieXRlcywgJWkgcmVtYWluXG4iLAorCQkic2dfdXBkYXRlX2xpc3Q6IFRyYW5zZmVycmVkICVpIG9mICVpIGJ5dGVzLCAlaSByZW1haW5cbiIsCiAJCXhmZXJyZWQsIHNyYi0+dG90YWxfeGZlcl9sZW5ndGgsIGxlZnQpOwogCWlmICh4ZmVycmVkID09IDApIHsKIAkJLyogbm90aGluZyB0byB1cGRhdGUgc2luY2Ugd2UgZGlkIG5vdCB0cmFuc2ZlciBhbnkgZGF0YSAqLwpAQCAtMTk5MCw3ICsxOTkwLDcgQEAKIAogCiAvKgotICogV2UgaGF2ZSB0cmFuc2ZlcmVkIGEgc2luZ2xlIGJ5dGUgKFBJTyBtb2RlPykgYW5kIG5lZWQgdG8gdXBkYXRlCisgKiBXZSBoYXZlIHRyYW5zZmVycmVkIGEgc2luZ2xlIGJ5dGUgKFBJTyBtb2RlPykgYW5kIG5lZWQgdG8gdXBkYXRlCiAgKiB0aGUgY291bnQgb2YgYnl0ZXMgcmVtYWluaW5nICh0b3RhbF94ZmVyX2xlbmd0aCkgYW5kIHVwZGF0ZSB0aGUgc2cKICAqIGVudHJ5IHRvIGVpdGhlciBwb2ludCB0byBuZXh0IGJ5dGUgaW4gdGhlIGN1cnJlbnQgc2cgZW50cnksIG9yIG9mCiAgKiBhbHJlYWR5IGF0IHRoZSBlbmQgdG8gcG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHNnIGVudHJ5CkBAIC0yMDI5LDcgKzIwMjksNyBAQAogCiAKIC8qCi0gKiBUaG9zZSBubyBvZiBieXRlcyB3aWxsIGJlIHRyYW5zZmVyZWQgdy8gUElPIHRocm91Z2ggdGhlIFNDU0kgRklGTworICogVGhvc2Ugbm8gb2YgYnl0ZXMgd2lsbCBiZSB0cmFuc2ZlcnJlZCB3LyBQSU8gdGhyb3VnaCB0aGUgU0NTSSBGSUZPCiAgKiBTZWVtcyB0byBiZSBuZWVkZWQgZm9yIHVua25vd24gcmVhc29uczsgY291bGQgYmUgYSBoYXJkd2FyZSBidWcgOi0oCiAgKi8KICNkZWZpbmUgREMzOTV4X0xBU1RQSU8gNApAQCAtMjI1Niw3ICsyMjU2LDcgQEAKIAkJCURDMzk1eF9yZWFkMzIoYWNiLCBUUk1fUzEwNDBfRE1BX0NYQ05UKSwKIAkJCXNyYi0+dG90YWxfeGZlcl9sZW5ndGgsIGRfbGVmdF9jb3VudGVyKTsKICNpZiBEQzM5NXhfTEFTVFBJTwotCQkvKiBLRzogTGVzcyB0aGFuIG9yIGVxdWFsIHRvIDQgYnl0ZXMgY2FuIG5vdCBiZSB0cmFuc2ZlcmVkIHZpYSBETUEsIGl0IHNlZW1zLiAqLworCQkvKiBLRzogTGVzcyB0aGFuIG9yIGVxdWFsIHRvIDQgYnl0ZXMgY2FuIG5vdCBiZSB0cmFuc2ZlcnJlZCB2aWEgRE1BLCBpdCBzZWVtcy4gKi8KIAkJaWYgKGRfbGVmdF9jb3VudGVyCiAJCSAgICAmJiBzcmItPnRvdGFsX3hmZXJfbGVuZ3RoIDw9IERDMzk1eF9MQVNUUElPKSB7CiAJCQlzaXplX3QgbGVmdF9pbyA9IHNyYi0+dG90YWxfeGZlcl9sZW5ndGg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGMzOTV4LmggYi9kcml2ZXJzL3Njc2kvZGMzOTV4LmgKaW5kZXggYjM4MzYwZS4uZmJmMzVlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2RjMzk1eC5oCisrKyBiL2RyaXZlcnMvc2NzaS9kYzM5NXguaApAQCAtNjE3LDcgKzYxNyw3IEBACiAjZGVmaW5lIE5UQ19ET19TRU5EX1NUQVJUCQkweDA4CS8qIFNlbmQgc3RhcnQgY29tbWFuZCBTUElOVVAJCSovCiAjZGVmaW5lIE5UQ19ET19ESVNDT05ORUNUCQkweDA0CS8qIEVuYWJsZSBTQ1NJIGRpc2Nvbm5lY3QJCSovCiAjZGVmaW5lIE5UQ19ET19TWU5DX05FR08JCTB4MDIJLyogU3luYyBuZWdvdGlhdGlvbgkJCSovCi0jZGVmaW5lIE5UQ19ET19QQVJJVFlfQ0hLCQkweDAxCS8qIChpdCBzb3VsZCBkZWZpbmUgYXQgTkFDKQkJKi8KKyNkZWZpbmUgTlRDX0RPX1BBUklUWV9DSEsJCTB4MDEJLyogKGl0IHNob3VsZCBkZWZpbmUgYXQgTkFDKQkJKi8KIAkJCQkJCS8qIFBhcml0eSBjaGVjayBlbmFibGUJCQkqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfYWx1YS5jIGIvZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfYWx1YS5jCmluZGV4IDdjYWUwYmMuLjQyZmU1MjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2FsdWEuYworKysgYi9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9hbHVhLmMKQEAgLTU0MSw3ICs1NDEsNyBAQAogICoKICAqIEV2YWx1YXRlIHRoZSBUYXJnZXQgUG9ydCBHcm91cCBTdGF0ZS4KICAqIFJldHVybnMgU0NTSV9ESF9ERVZfT0ZGTElORUQgaWYgdGhlIHBhdGggaXMKLSAqIGZvdW5kIHRvIGJlIHVudXNlYWJsZS4KKyAqIGZvdW5kIHRvIGJlIHVudXNhYmxlLgogICovCiBzdGF0aWMgaW50IGFsdWFfcnRwZyhzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkZXYsIHN0cnVjdCBhbHVhX2RoX2RhdGEgKmgpCiB7CkBAIC02MjAsNyArNjIwLDcgQEAKIAkJYnJlYWs7CiAJY2FzZSBUUEdTX1NUQVRFX09GRkxJTkU6CiAJY2FzZSBUUEdTX1NUQVRFX1VOQVZBSUxBQkxFOgotCQkvKiBQYXRoIHVudXNlYWJsZSBmb3IgdW5hdmFpbGFibGUvb2ZmbGluZSAqLworCQkvKiBQYXRoIHVudXNhYmxlIGZvciB1bmF2YWlsYWJsZS9vZmZsaW5lICovCiAJCWVyciA9IFNDU0lfREhfREVWX09GRkxJTkVEOwogCQlicmVhazsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2RwdC9zeXNfaW5mby5oIGIvZHJpdmVycy9zY3NpL2RwdC9zeXNfaW5mby5oCmluZGV4IGE5MGM0Y2IuLmE0YWExYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9kcHQvc3lzX2luZm8uaAorKysgYi9kcml2ZXJzL3Njc2kvZHB0L3N5c19pbmZvLmgKQEAgLTc5LDkgKzc5LDkgQEAKICAgIHR5cGVkZWYgc3RydWN0ICB7CiAjZW5kaWYKIAotICAgdVNIT1JUICAgICAgIGN5bGluZGVyczsgICAgICAvKiBVcHRvIDEwMjQgKi8KLSAgIHVDSEFSICAgICAgICBoZWFkczsgICAgICAgICAgLyogVXB0byAyNTUgKi8KLSAgIHVDSEFSICAgICAgICBzZWN0b3JzOyAgICAgICAgLyogVXB0byA2MyAqLworICAgdVNIT1JUICAgICAgIGN5bGluZGVyczsgICAgICAvKiBVcCB0byAxMDI0ICovCisgICB1Q0hBUiAgICAgICAgaGVhZHM7ICAgICAgICAgIC8qIFVwIHRvIDI1NSAqLworICAgdUNIQVIgICAgICAgIHNlY3RvcnM7ICAgICAgICAvKiBVcCB0byA2MyAqLwogCiAjaWZkZWYgIF9fY3BsdXNwbHVzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9lYXRhLmMgYi9kcml2ZXJzL3Njc2kvZWF0YS5jCmluZGV4IDUzOTI1YWMuLjBlYjRmZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9lYXRhLmMKKysrIGIvZHJpdmVycy9zY3NpL2VhdGEuYwpAQCAtNjMsNyArNjMsNyBAQAogICogICAgICAgICAgZXA6W3l8bl0gICAgICBlaXNhX3Byb2JlPVsxfDBdICBDT05GSUdfRUlTQSBkZWZpbmVkCiAgKiAgICAgICAgICBwcDpbeXxuXSAgICAgIHBjaV9wcm9iZT1bMXwwXSAgIENPTkZJR19QQ0kgIGRlZmluZWQKICAqCi0gKiAgICAgICAgICBUaGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gcGVyZm9ybSBwcm9iaW5nIGlmIHRoZSBjb3JyaXNwb25kaW5nCisgKiAgICAgICAgICBUaGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gcGVyZm9ybSBwcm9iaW5nIGlmIHRoZSBjb3JyZXNwb25kaW5nCiAgKiAgICAgICAgICBidXMgaXMgY29uZmlndXJlZCBhbmQgdG8gc2tpcCBwcm9iaW5nIG90aGVyd2lzZS4KICAqCiAgKiAgICAgICAgKyBJZiBwY2lfcHJvYmUgaXMgaW4gZWZmZWN0IGFuZCBhIGxpc3Qgb2YgSS9PICBwb3J0cyBpcyBzcGVjaWZpZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9mY29lL2Zjb2VfY3Rsci5jIGIvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMKaW5kZXggYzkzZjAwNy4uOWQzOGJlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMKKysrIGIvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMKQEAgLTY1Niw3ICs2NTYsNyBAQAogCQkgKiBJZiBub24tRklQLCB3ZSBtYXkgaGF2ZSBnb3R0ZW4gYW4gU0lEIGJ5IGFjY2VwdGluZyBhbiBGTE9HSQogCQkgKiBmcm9tIGEgcG9pbnQtdG8tcG9pbnQgY29ubmVjdGlvbi4gIFN3aXRjaCB0byB1c2luZwogCQkgKiB0aGUgc291cmNlIG1hYyBiYXNlZCBvbiB0aGUgU0lELiAgVGhlIGRlc3RpbmF0aW9uCi0JCSAqIE1BQyBpbiB0aGlzIGNhc2Ugd291bGQgaGF2ZSBiZWVuIHNldCBieSByZWNldmluZyB0aGUKKwkJICogTUFDIGluIHRoaXMgY2FzZSB3b3VsZCBoYXZlIGJlZW4gc2V0IGJ5IHJlY2VpdmluZyB0aGUKIAkJICogRkxPR0kuCiAJCSAqLwogCQlpZiAoZmlwLT5zdGF0ZSA9PSBGSVBfU1RfTk9OX0ZJUCkgewpAQCAtMTg3Niw3ICsxODc2LDcgQEAKICAqIGZjb2VfY3Rscl92bl9ycG9ydF9jYWxsYmFjayAtIEV2ZW50IGhhbmRsZXIgZm9yIHJwb3J0IGV2ZW50cy4KICAqIEBscG9ydDogVGhlIGxwb3J0IHdoaWNoIGlzIHJlY2VpdmluZyB0aGUgZXZlbnQKICAqIEByZGF0YTogcmVtb3RlIHBvcnQgcHJpdmF0ZSBkYXRhCi0gKiBAZXZlbnQ6IFRoZSBldmVudCB0aGF0IG9jY3VyZWQKKyAqIEBldmVudDogVGhlIGV2ZW50IHRoYXQgb2NjdXJyZWQKICAqCiAgKiBMb2NraW5nIE5vdGU6ICBUaGUgcnBvcnQgbG9jayBtdXN0IG5vdCBiZSBoZWxkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZmRvbWFpbi5jIGIvZHJpdmVycy9zY3NpL2Zkb21haW4uYwppbmRleCA2OWI3YWE1Li42NDNmNmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZmRvbWFpbi5jCisrKyBiL2RyaXZlcnMvc2NzaS9mZG9tYWluLmMKQEAgLTE3NCw3ICsxNzQsNyBAQAogIEZ1dHVyZSBEb21haW4gc29sZCBET1MgQklPUyBzb3VyY2UgZm9yICQyNTAgYW5kIHRoZSBVTipYIGRyaXZlciBzb3VyY2Ugd2FzCiAgJDc1MCwgYnV0IHRoZXNlIHJlcXVpcmVkIGEgbm9uLWRpc2Nsb3N1cmUgYWdyZWVtZW50LCBzbyBldmVuIGlmIEkgY291bGQKICBoYXZlIGFmZm9yZGVkIHRoZW0sIHRoZXkgd291bGQgKm5vdCogaGF2ZSBiZWVuIHVzZWZ1bCBmb3Igd3JpdGluZyB0aGlzCi0gcHVibGljYWxseSBkaXN0cmlidXRhYmxlIGRyaXZlci4gIEZ1dHVyZSBEb21haW4gdGVjaG5pY2FsIHN1cHBvcnQgaGFzCisgcHVibGljbHkgZGlzdHJpYnV0YWJsZSBkcml2ZXIuICBGdXR1cmUgRG9tYWluIHRlY2huaWNhbCBzdXBwb3J0IGhhcwogIHByb3ZpZGVkIHNvbWUgaW5mb3JtYXRpb24gb24gdGhlIHBob25lIGFuZCBoYXZlIHNlbnQgYSBmZXcgdXNlZnVsIEZBWHMuCiAgVGhleSBoYXZlIGJlZW4gbXVjaCBtb3JlIGhlbHBmdWwgc2luY2UgdGhleSBzdGFydGVkIHRvIHJlY29nbml6ZSB0aGF0IHRoZQogIHdvcmQgIkxpbnV4IiByZWZlcnMgdG8gYW4gb3BlcmF0aW5nIHN5c3RlbSA6LSkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZm5pYy9mbmljX2Zjcy5jIGIvZHJpdmVycy9zY3NpL2ZuaWMvZm5pY19mY3MuYwppbmRleCAyYjQ4ZDc5Li4zYzUzYzM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZm5pYy9mbmljX2Zjcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfZmNzLmMKQEAgLTQxMSw3ICs0MTEsNyBAQAogCQkJZXJyID0gdm5pY19ycV9maWxsKCZmbmljLT5ycVtpXSwgZm5pY19hbGxvY19ycV9mcmFtZSk7CiAJCQlpZiAoZXJyKQogCQkJCXNob3N0X3ByaW50ayhLRVJOX0VSUiwgZm5pYy0+bHBvcnQtPmhvc3QsCi0JCQkJCSAgICAgImZuaWNfYWxsb2NfcnFfZnJhbWUgY2FudCBhbGxvYyIKKwkJCQkJICAgICAiZm5pY19hbGxvY19ycV9mcmFtZSBjYW4ndCBhbGxvYyIKIAkJCQkJICAgICAiIGZyYW1lXG4iKTsKIAkJfQogCQl0b3RfcnFfd29ya19kb25lICs9IGN1cl93b3JrX2RvbmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZm5pYy9mbmljX3Njc2kuYyBiL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfc2NzaS5jCmluZGV4IDIyZDAyNDAuLjUzOGIzMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfc2NzaS5jCkBAIC0xMTIzLDcgKzExMjMsNyBAQAogCQkJCQkgICAgZmNfbHVuLnNjc2lfbHVuLCBpb19yZXEpKSB7CiAJCQkvKgogCQkJICogUmV2ZXJ0IHRoZSBjbWQgc3RhdGUgYmFjayB0byBvbGQgc3RhdGUsIGlmCi0JCQkgKiBpdCBoYXNudCBjaGFuZ2VkIGluIGJldHdlZW4uIFRoaXMgY21kIHdpbGwgZ2V0CisJCQkgKiBpdCBoYXNuJ3QgY2hhbmdlZCBpbiBiZXR3ZWVuLiBUaGlzIGNtZCB3aWxsIGdldAogCQkJICogYWJvcnRlZCBsYXRlciBieSBzY3NpX2VoLCBvciBjbGVhbmVkIHVwIGR1cmluZwogCQkJICogbHVuIHJlc2V0CiAJCQkgKi8KQEAgLTEyMDgsNyArMTIwOCw3IEBACiAJCQkJCSAgICBmY19sdW4uc2NzaV9sdW4sIGlvX3JlcSkpIHsKIAkJCS8qCiAJCQkgKiBSZXZlcnQgdGhlIGNtZCBzdGF0ZSBiYWNrIHRvIG9sZCBzdGF0ZSwgaWYKLQkJCSAqIGl0IGhhc250IGNoYW5nZWQgaW4gYmV0d2Vlbi4gVGhpcyBjbWQgd2lsbCBnZXQKKwkJCSAqIGl0IGhhc24ndCBjaGFuZ2VkIGluIGJldHdlZW4uIFRoaXMgY21kIHdpbGwgZ2V0CiAJCQkgKiBhYm9ydGVkIGxhdGVyIGJ5IHNjc2lfZWgsIG9yIGNsZWFuZWQgdXAgZHVyaW5nCiAJCQkgKiBsdW4gcmVzZXQKIAkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2dfTkNSNTM4MC5jIGIvZHJpdmVycy9zY3NpL2dfTkNSNTM4MC5jCmluZGV4IDQyN2E1NmQuLjgxMTgyYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9nX05DUjUzODAuYworKysgYi9kcml2ZXJzL3Njc2kvZ19OQ1I1MzgwLmMKQEAgLTU2Niw3ICs1NjYsNyBAQAogICoJQGRzdDogYnVmZmVyIHRvIHJlYWQgaW50bwogICoJQGxlbjogYnVmZmVyIGxlbmd0aAogICoKLSAqCVBlcmZvcm0gYSBwc3VlZG8gRE1BIG1vZGUgcmVhZCBmcm9tIGFuIE5DUjUzQzQwMCBvciBlcXVpdmFsZW50CisgKglQZXJmb3JtIGEgcHNldWRvIERNQSBtb2RlIHJlYWQgZnJvbSBhbiBOQ1I1M0M0MDAgb3IgZXF1aXZhbGVudAogICoJY29udHJvbGxlcgogICovCiAgCkBAIC02NTAsNyArNjUwLDcgQEAKICAqCUBkc3Q6IGJ1ZmZlciB0byByZWFkIGludG8KICAqCUBsZW46IGJ1ZmZlciBsZW5ndGgKICAqCi0gKglQZXJmb3JtIGEgcHN1ZWRvIERNQSBtb2RlIHJlYWQgZnJvbSBhbiBOQ1I1M0M0MDAgb3IgZXF1aXZhbGVudAorICoJUGVyZm9ybSBhIHBzZXVkbyBETUEgbW9kZSByZWFkIGZyb20gYW4gTkNSNTNDNDAwIG9yIGVxdWl2YWxlbnQKICAqCWNvbnRyb2xsZXIKICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ2R0aC5oIGIvZHJpdmVycy9zY3NpL2dkdGguaAppbmRleCAxMjBhMDYyLi5kOTY5ODU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZ2R0aC5oCisrKyBiL2RyaXZlcnMvc2NzaS9nZHRoLmgKQEAgLTg5NSw3ICs4OTUsNyBAQAogICAgICAgICB1OCAgICAgICAgICBsZHJfbm87ICAgICAgICAgICAgICAgICAvKiBsb2cuIGRyaXZlIG5vLiAqLwogICAgICAgICB1OCAgICAgICAgICByd19hdHRyaWJzOyAgICAgICAgICAgICAvKiByL3cgYXR0cmlidXRlcyAqLwogICAgICAgICB1OCAgICAgICAgICBjbHVzdGVyX3R5cGU7ICAgICAgICAgICAvKiBjbHVzdGVyIHByb3BlcnRpZXMgKi8KLSAgICAgICAgdTggICAgICAgICAgbWVkaWFfY2hhbmdlZDsgICAgICAgICAgLyogRmxhZzpNT1VOVC9VTk1PVU5UIG9jY3VyZWQgKi8KKyAgICAgICAgdTggICAgICAgICAgbWVkaWFfY2hhbmdlZDsgICAgICAgICAgLyogRmxhZzpNT1VOVC9VTk1PVU5UIG9jY3VycmVkICovCiAgICAgICAgIHUzMiAgICAgICAgIHN0YXJ0X3NlYzsgICAgICAgICAgICAgIC8qIHN0YXJ0IHNlY3RvciAqLwogICAgIH0gaGRyW01BWF9MRFJJVkVTXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogaG9zdCBkcml2ZXMgKi8KICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2d2cDExLmMgYi9kcml2ZXJzL3Njc2kvZ3ZwMTEuYwppbmRleCAyY2UyNmViLi41MGJiNTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuYworKysgYi9kcml2ZXJzL3Njc2kvZ3ZwMTEuYwpAQCAtMzAwLDcgKzMwMCw3IEBACiAJLyoKIAkgKiBSdW1vcnMgc3RhdGUgdGhhdCBzb21lIEdWUCByYW0gYm9hcmRzIHVzZSB0aGUgc2FtZSBwcm9kdWN0CiAJICogY29kZSBhcyB0aGUgU0NTSSBjb250cm9sbGVycy4gVGhlcmVmb3JlIGlmIHRoZSBib2FyZC1zaXplCi0JICogaXMgbm90IDY0S0Igd2UgYXN1bWUgaXQgaXMgYSByYW0gYm9hcmQgYW5kIGJhaWwgb3V0LgorCSAqIGlzIG5vdCA2NEtCIHdlIGFzc3VtZSBpdCBpcyBhIHJhbSBib2FyZCBhbmQgYmFpbCBvdXQuCiAJICovCiAJaWYgKHpvcnJvX3Jlc291cmNlX2xlbih6KSAhPSAweDEwMDAwKQogCQlyZXR1cm4gLUVOT0RFVjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pbW0uYyBiL2RyaXZlcnMvc2NzaS9pbW0uYwppbmRleCA5OWFhMGU1Li4yNmNkOWQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaW1tLmMKKysrIGIvZHJpdmVycy9zY3NpL2ltbS5jCkBAIC0zLDcgKzMsNyBAQAogICogCiAgKiAoVGhlIElNTSBpcyB0aGUgZW1iZWRkZWQgY29udHJvbGxlciBpbiB0aGUgWklQIFBsdXMgZHJpdmUuKQogICogCi0gKiBNeSB1bm9mZmljYWwgY29tcGFueSBhY3JvbnltIGxpc3QgaXMgMjEgcGFnZXMgbG9uZzoKKyAqIE15IHVub2ZmaWNpYWwgY29tcGFueSBhY3JvbnltIGxpc3QgaXMgMjEgcGFnZXMgbG9uZzoKICAqICAgICAgRkxBOiAgICBGb3VyIGxldHRlciBhY3JvbnltIHdpdGggYnVpbHQgaW4gZmFjaWxpdHkgZm9yCiAgKiAgICAgICAgICAgICAgZnV0dXJlIGV4cGFuc2lvbiB0byBmaXZlIGxldHRlcnMuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pbml0aW8uYyBiL2RyaXZlcnMvc2NzaS9pbml0aW8uYwppbmRleCA5NjI3ZDA2Li5kZDc0MWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaW5pdGlvLmMKKysrIGIvZHJpdmVycy9zY3NpL2luaXRpby5jCkBAIC0yNDIsNyArMjQyLDcgQEAKIAogc3RhdGljIHU4IGluaXRpb19yYXRlX3RibFs4XSA9CS8qIGZhc3QgMjAgICAgICAqLwogewotCQkJCS8qIG5hbm9zZWNvbmQgZGV2aWRlIGJ5IDQgKi8KKwkJCQkvKiBuYW5vc2Vjb25kIGRpdmlkZSBieSA0ICovCiAJMTIsCQkJLyogNTBucywgIDIwTSAgICovCiAJMTgsCQkJLyogNzVucywgIDEzLjNNICovCiAJMjUsCQkJLyogMTAwbnMsIDEwTSAgICovCkBAIC0xOTE3LDcgKzE5MTcsNyBAQAogfQogCiAvKioKLSAqCWludF9pbml0aW9fc2NzaV9yZXNlbAktCVJlc2VsZWN0aW9uIG9jY3VyZWQKKyAqCWludF9pbml0aW9fc2NzaV9yZXNlbAktCVJlc2VsZWN0aW9uIG9jY3VycmVkCiAgKglAaG9zdDogSW5pdElPIGhvc3QgYWRhcHRlcgogICoKICAqCUEgU0NTSSByZXNlbGVjdGlvbiBldmVudCBoYXMgYmVlbiBzaWduYWxsZWQgYW5kIHRoZSBpbnRlcnJ1cHQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pbml0aW8uaCBiL2RyaXZlcnMvc2NzaS9pbml0aW8uaAppbmRleCBlNThhZjllLi4yMTliOTAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaW5pdGlvLmgKKysrIGIvZHJpdmVycy9zY3NpL2luaXRpby5oCkBAIC0xMTYsNyArMTE2LDcgQEAKICNkZWZpbmUgVFVMX1NCdXNJZCAgICAgIDB4ODkJLyogMDkgUiAgIFNDU0kgQlVTIElEICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFRVTF9TVGltZU91dCAgICAweDhBCS8qIDBBIFcgICBTZWwvUmVzZWwgVGltZSBPdXQgUmVnaXN0ZXIgICAqLwogI2RlZmluZSBUVUxfU0lkZW50ICAgICAgMHg4QQkvKiAwQSBSICAgSWRlbnRpZnkgTWVzc2FnZSBSZWdpc3RlciAgICAgKi8KLSNkZWZpbmUgVFVMX1NBdmFpbCAgICAgIDB4OEEJLyogMEEgUiAgIEF2YWlsaWFibGUgQ291bnRlciBSZWdpc3RlciAgICovCisjZGVmaW5lIFRVTF9TQXZhaWwgICAgICAweDhBCS8qIDBBIFIgICBBdmFpbGFibGUgQ291bnRlciBSZWdpc3RlciAgICovCiAjZGVmaW5lIFRVTF9TRGF0YSAgICAgICAweDhCCS8qIDBCIFIvVyBTQ1NJIGRhdGEgaW4vb3V0ICAgICAgICAgICAgICAqLwogI2RlZmluZSBUVUxfU0ZpZm8gICAgICAgMHg4QwkvKiAwQyBSL1cgRklGTyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgVFVMX1NTaWduYWwgICAgIDB4OTAJLyogMTAgUi9XIFNDU0kgc2lnbmFsIGluL291dCAgICAgICAgICAgICovCkBAIC0zODksNyArMzg5LDcgQEAKIC8qIEJpdCBEZWZpbml0aW9uIGZvciBzdGF0dXMgKi8KICNkZWZpbmUgU0NCX1JFTlQgICAgICAgIDB4MDEKICNkZWZpbmUgU0NCX1BFTkQgICAgICAgIDB4MDIKLSNkZWZpbmUgU0NCX0NPTlRJRyAgICAgIDB4MDQJLyogQ29udGlnZW50IEFsbGVnaWFuY2UgKi8KKyNkZWZpbmUgU0NCX0NPTlRJRyAgICAgIDB4MDQJLyogQ29udGluZ2VudCBBbGxlZ2lhbmNlICovCiAjZGVmaW5lIFNDQl9TRUxFQ1QgICAgICAweDA4CiAjZGVmaW5lIFNDQl9CVVNZICAgICAgICAweDEwCiAjZGVmaW5lIFNDQl9ET05FICAgICAgICAweDIwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaXBzLmMgYi9kcml2ZXJzL3Njc2kvaXBzLmMKaW5kZXggYjI1MTFhYy4uMjE4ZjcxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2lwcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9pcHMuYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAvKiAgICAgICAgICAtIEZpeCBwYXRoL25hbWUgZm9yIHNjc2lfaG9zdHMuaCBpbmNsdWRlIGZvciAyLjYga2VybmVscyAgICAgICAgICovCiAvKiAgICAgICAgICAtIEZpeCBzb3J0IG9yZGVyIG9mIDdrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICAgICAgICAtIFJlbW92ZSAzIHVudXNlZCAiaW5saW5lIiBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiA3LjEyLnh4ICAtIFVzZSBTVEFUSUMgZnVuY3Rpb25zIHdoZXJlZXZlciBwb3NzaWJsZSAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA3LjEyLnh4ICAtIFVzZSBTVEFUSUMgZnVuY3Rpb25zIHdoZXJldmVyIHBvc3NpYmxlICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgIC0gQ2xlYW4gdXAgZGVwcmVjYXRlZCBNT0RVTEVfUEFSTSBjYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qIDcuMTIuMDUgIC0gUmVtb3ZlIFZlcnNpb24gTWF0Y2hpbmcgcGVyIElCTSByZXF1ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE2NjUsNyArMTY2NSw3IEBACiAJaW50IGRhdGFzaXplOwogCiAJLyogVHJvbWJvbmUgaXMgdGhlIG9ubHkgY29wcGVyaGVhZCB0aGF0IGNhbiBkbyBwYWNrZXQgZmxhc2gsIGJ1dCBvbmx5Ci0JICogZm9yIGZpcm13YXJlLiBObyBvbmUgc2FpZCBpdCBoYWQgdG8gbWFrZSBzZW5jZS4gKi8KKwkgKiBmb3IgZmlybXdhcmUuIE5vIG9uZSBzYWlkIGl0IGhhZCB0byBtYWtlIHNlbnNlLiAqLwogCWlmIChJUFNfSVNfVFJPTUJPTkUoaGEpICYmIHB0LT5Db3BwQ1AuY21kLmZsYXNoZncudHlwZSA9PSBJUFNfRldfSU1BR0UpIHsKIAkJaWYgKGlwc191c3JjbWQoaGEsIHB0LCBzY2IpKQogCQkJcmV0dXJuIElQU19TVUNDRVNTOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2lwcy5oIGIvZHJpdmVycy9zY3NpL2lwcy5oCmluZGV4IDRlNDlmYmMuLmYyZGYwNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pcHMuaAorKysgYi9kcml2ZXJzL3Njc2kvaXBzLmgKQEAgLTExOTMsNyArMTE5Myw3IEBACiAjZGVmaW5lIElQU19WRVJfU0VCUklORyAiNy4xMi4wMiIKICNkZWZpbmUgSVBTX1ZFUl9LRVlXRVNUICI3LjEyLjAyIgogCi0vKiBDb21wYXRhYmlsaXR5IElEcyBmb3IgdmFyaW91cyBhZGFwdGVycyAqLworLyogQ29tcGF0aWJpbGl0eSBJRHMgZm9yIHZhcmlvdXMgYWRhcHRlcnMgKi8KICNkZWZpbmUgSVBTX0NPTVBBVF9VTktOT1dOICIiCiAjZGVmaW5lIElQU19DT01QQVRfQ1VSUkVOVCAiS1c3MTAiCiAjZGVmaW5lIElQU19DT01QQVRfU0VSVkVSQUlEMSAiMi4yNS4wMSIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pc2NzaV90Y3AuYyBiL2RyaXZlcnMvc2NzaS9pc2NzaV90Y3AuYwppbmRleCBhODYwNDUyLi4zZGY5ODUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmMKKysrIGIvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5jCkBAIC0yOTUsNyArMjk1LDcgQEAKIAkJcmMgPSBpc2NzaV9zd190Y3BfeG1pdF9zZWdtZW50KHRjcF9jb25uLCBzZWdtZW50KTsKIAkJLyoKIAkJICogV2UgbWF5IG5vdCBoYXZlIGJlZW4gYWJsZSB0byBzZW5kIGRhdGEgYmVjYXVzZSB0aGUgY29ubgotCQkgKiBpcyBnZXR0aW5nIHN0b3BwZWQuIGxpYmlzY3NpIHdpbGwga25vdyBzbyBwcm9wb2dhdGUgZXJyCisJCSAqIGlzIGdldHRpbmcgc3RvcHBlZC4gbGliaXNjc2kgd2lsbCBrbm93IHNvIHByb3BhZ2F0ZSBlcnIKIAkJICogZm9yIGl0IHRvIGRvIHRoZSByaWdodCB0aGluZy4KIAkJICovCiAJCWlmIChyYyA9PSAtRUFHQUlOKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2V4Y2guYyBiL2RyaXZlcnMvc2NzaS9saWJmYy9mY19leGNoLmMKaW5kZXggMjgyMzFiYS4uNzcwMzVhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2V4Y2guYworKysgYi9kcml2ZXJzL3Njc2kvbGliZmMvZmNfZXhjaC5jCkBAIC0xMDQyLDcgKzEwNDIsNyBAQAogfQogCiAvKioKLSAqIGZjX3NlcV9lbHNfcnNwX3NlbmQoKSAtIFNlbmQgYW4gRUxTIHJlc3BvbnNlIHVzaW5nIGluZm9tYXRpb24gZnJvbQorICogZmNfc2VxX2Vsc19yc3Bfc2VuZCgpIC0gU2VuZCBhbiBFTFMgcmVzcG9uc2UgdXNpbmcgaW5mb3JtYXRpb24gZnJvbQogICoJCQkgICB0aGUgZXhpc3Rpbmcgc2VxdWVuY2UvZXhjaGFuZ2UuCiAgKiBAZnA6CSAgICAgIFRoZSByZWNlaXZlZCBmcmFtZQogICogQGVsc19jbWQ6ICBUaGUgRUxTIGNvbW1hbmQgdG8gYmUgc2VudApAQCAtMTE1Myw3ICsxMTUzLDcgQEAKICAqIGZjX2V4Y2hfc2VuZF9iYV9yanQoKSAtIFNlbmQgQkxTIFJlamVjdAogICogQHJ4X2ZwOiAgVGhlIGZyYW1lIGJlaW5nIHJlamVjdGVkCiAgKiBAcmVhc29uOiBUaGUgcmVhc29uIHRoZSBmcmFtZSBpcyBiZWluZyByZWplY3RlZAotICogQGV4cGxhbjogVGhlIGV4cGxhaW5hdGlvbiBmb3IgdGhlIHJlamVjdGlvbgorICogQGV4cGxhbjogVGhlIGV4cGxhbmF0aW9uIGZvciB0aGUgcmVqZWN0aW9uCiAgKgogICogVGhpcyBpcyBmb3IgcmVqZWN0aW5nIEJBX0FCVFMgb25seS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2ZjcC5jIGIvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2ZjcC5jCmluZGV4IGIxYjAzYWYuLjViNzk5YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9saWJmYy9mY19mY3AuYworKysgYi9kcml2ZXJzL3Njc2kvbGliZmMvZmNfZmNwLmMKQEAgLTg3MCw3ICs4NzAsNyBAQAogCQkJCWZzcC0+c2NzaV9yZXNpZCA9IG50b2hsKHJwX2V4LT5mcl9yZXNpZCk7CiAJCQkJLyoKIAkJCQkgKiBUaGUgY21uZC0+dW5kZXJmbG93IGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZgotCQkJCSAqIGJ5dGVzIHRoYXQgbXVzdCBiZSB0cmFuc2ZlcmVkIGZvciB0aGlzCisJCQkJICogYnl0ZXMgdGhhdCBtdXN0IGJlIHRyYW5zZmVycmVkIGZvciB0aGlzCiAJCQkJICogY29tbWFuZC4gIFByb3ZpZGVkIGEgc2Vuc2UgY29uZGl0aW9uIGlzIG5vdAogCQkJCSAqIHByZXNlbnQsIG1ha2Ugc3VyZSB0aGUgYWN0dWFsIGFtb3VudAogCQkJCSAqIHRyYW5zZmVycmVkIGlzIGF0IGxlYXN0IHRoZSB1bmRlcmZsb3cgdmFsdWUKQEAgLTEzMDYsNyArMTMwNiw3IEBACiB9CiAKIC8qKgotICogZmNfdG1fZG9uZSgpIC0gVGFzayBNYW5hZ21lbnQgcmVzcG9uc2UgaGFuZGxlcgorICogZmNfdG1fZG9uZSgpIC0gVGFzayBNYW5hZ2VtZW50IHJlc3BvbnNlIGhhbmRsZXIKICAqIEBzZXE6IFRoZSBzZXF1ZW5jZSB0aGF0IHRoZSByZXNwb25zZSBpcyBvbgogICogQGZwOgkgVGhlIHJlc3BvbnNlIGZyYW1lCiAgKiBAYXJnOiBUaGUgRkNQIHBhY2tldCB0aGUgcmVzcG9uc2UgaXMgZm9yCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGliZmMvZmNfbHBvcnQuYyBiL2RyaXZlcnMvc2NzaS9saWJmYy9mY19scG9ydC5jCmluZGV4IDhjMDhiMjEuLjkwNmJiY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9saWJmYy9mY19scG9ydC5jCisrKyBiL2RyaXZlcnMvc2NzaS9saWJmYy9mY19scG9ydC5jCkBAIC01Miw3ICs1Miw3IEBACiAgKiB3aGlsZSBtYWtpbmcgdGhlIGNhbGxiYWNrLiBUbyBlbnN1cmUgdGhhdCB0aGUgcnBvcnQgaXMgbm90IGZyZWUnZCB3aGlsZQogICogcHJvY2Vzc2luZyB0aGUgY2FsbGJhY2sgdGhlIHJwb3J0IGNhbGxiYWNrcyBhcmUgc2VyaWFsaXplZCB0aHJvdWdoIGEKICAqIHNpbmdsZS10aHJlYWRlZCB3b3JrcXVldWUuIEFuIHJwb3J0IHdvdWxkIG5ldmVyIGJlIGZyZWUnZCB3aGlsZSBpbiBhCi0gKiBjYWxsYmFjayBoYW5kbGVyIGJlY3Vhc2Ugbm8gb3RoZXIgcnBvcnQgd29yayBpbiB0aGlzIHF1ZXVlIGNhbiBiZSBleGVjdXRlZAorICogY2FsbGJhY2sgaGFuZGxlciBiZWNhdXNlIG5vIG90aGVyIHJwb3J0IHdvcmsgaW4gdGhpcyBxdWV1ZSBjYW4gYmUgZXhlY3V0ZWQKICAqIGF0IHRoZSBzYW1lIHRpbWUuCiAgKgogICogV2hlbiBkaXNjb3Zlcnkgc3VjY2VlZHMgb3IgZmFpbHMgYSBjYWxsYmFjayBpcyBtYWRlIHRvIHRoZSBscG9ydCBhcwpAQCAtMTYzLDcgKzE2Myw3IEBACiAgKiBmY19scG9ydF9ycG9ydF9jYWxsYmFjaygpIC0gRXZlbnQgaGFuZGxlciBmb3IgcnBvcnQgZXZlbnRzCiAgKiBAbHBvcnQ6IFRoZSBscG9ydCB3aGljaCBpcyByZWNlaXZpbmcgdGhlIGV2ZW50CiAgKiBAcmRhdGE6IHByaXZhdGUgcmVtb3RlIHBvcnQgZGF0YQotICogQGV2ZW50OiBUaGUgZXZlbnQgdGhhdCBvY2N1cmVkCisgKiBAZXZlbnQ6IFRoZSBldmVudCB0aGF0IG9jY3VycmVkCiAgKgogICogTG9ja2luZyBOb3RlOiBUaGUgcnBvcnQgbG9jayBzaG91bGQgbm90IGJlIGhlbGQgd2hlbiBjYWxsaW5nCiAgKgkJIHRoaXMgZnVuY3Rpb24uCkBAIC0zNzksNyArMzc5LDcgQEAKIAogLyoqCiAgKiBmY19scG9ydF9yZWN2X3JsaXJfcmVxKCkgLSBIYW5kbGUgcmVjZWl2ZWQgUmVnaXN0ZXJlZCBMaW5rIEluY2lkZW50IFJlcG9ydC4KLSAqIEBscG9ydDogRmlicmUgQ2hhbm5lbCBsb2NhbCBwb3J0IHJlY2lldmluZyB0aGUgUkxJUgorICogQGxwb3J0OiBGaWJyZSBDaGFubmVsIGxvY2FsIHBvcnQgcmVjZWl2aW5nIHRoZSBSTElSCiAgKiBAZnA6CSAgIFRoZSBSTElSIHJlcXVlc3QgZnJhbWUKICAqCiAgKiBMb2NraW5nIE5vdGU6IFRoZSBscG9ydCBsb2NrIGlzIGV4cGVjdGVkIHRvIGJlIGhlbGQgYmVmb3JlIGNhbGxpbmcKQEAgLTM5Niw3ICszOTYsNyBAQAogCiAvKioKICAqIGZjX2xwb3J0X3JlY3ZfZWNob19yZXEoKSAtIEhhbmRsZSByZWNlaXZlZCBFQ0hPIHJlcXVlc3QKLSAqIEBscG9ydDogVGhlIGxvY2FsIHBvcnQgcmVjaWV2aW5nIHRoZSBFQ0hPCisgKiBAbHBvcnQ6IFRoZSBsb2NhbCBwb3J0IHJlY2VpdmluZyB0aGUgRUNITwogICogQGZwOgkgICBFQ0hPIHJlcXVlc3QgZnJhbWUKICAqCiAgKiBMb2NraW5nIE5vdGU6IFRoZSBscG9ydCBsb2NrIGlzIGV4cGVjdGVkIHRvIGJlIGhlbGQgYmVmb3JlIGNhbGxpbmcKQEAgLTQzMiw3ICs0MzIsNyBAQAogCiAvKioKICAqIGZjX2xwb3J0X3JlY3Zfcm5pZF9yZXEoKSAtIEhhbmRsZSByZWNlaXZlZCBSZXF1ZXN0IE5vZGUgSUQgZGF0YSByZXF1ZXN0Ci0gKiBAbHBvcnQ6IFRoZSBsb2NhbCBwb3J0IHJlY2lldmluZyB0aGUgUk5JRAorICogQGxwb3J0OiBUaGUgbG9jYWwgcG9ydCByZWNlaXZpbmcgdGhlIFJOSUQKICAqIEBmcDoJICAgVGhlIFJOSUQgcmVxdWVzdCBmcmFtZQogICoKICAqIExvY2tpbmcgTm90ZTogVGhlIGxwb3J0IGxvY2sgaXMgZXhwZWN0ZWQgdG8gYmUgaGVsZCBiZWZvcmUgY2FsbGluZwpAQCAtNDkxLDcgKzQ5MSw3IEBACiAKIC8qKgogICogZmNfbHBvcnRfcmVjdl9sb2dvX3JlcSgpIC0gSGFuZGxlIHJlY2VpdmVkIGZhYnJpYyBMT0dPIHJlcXVlc3QKLSAqIEBscG9ydDogVGhlIGxvY2FsIHBvcnQgcmVjaWV2aW5nIHRoZSBMT0dPCisgKiBAbHBvcnQ6IFRoZSBsb2NhbCBwb3J0IHJlY2VpdmluZyB0aGUgTE9HTwogICogQGZwOgkgICBUaGUgTE9HTyByZXF1ZXN0IGZyYW1lCiAgKgogICogTG9ja2luZyBOb3RlOiBUaGUgbHBvcnQgbG9jayBpcyBleGVjdGVkIHRvIGJlIGhlbGQgYmVmb3JlIGNhbGxpbmcKQEAgLTc3MSw3ICs3NzEsNyBAQAogCiAvKioKICAqIGZjX2xwb3J0X3JlY3ZfZmxvZ2lfcmVxKCkgLSBSZWNlaXZlIGEgRkxPR0kgcmVxdWVzdAotICogQGxwb3J0OiBUaGUgbG9jYWwgcG9ydCB0aGF0IHJlY2lldmVkIHRoZSByZXF1ZXN0CisgKiBAbHBvcnQ6IFRoZSBsb2NhbCBwb3J0IHRoYXQgcmVjZWl2ZWQgdGhlIHJlcXVlc3QKICAqIEByeF9mcDogVGhlIEZMT0dJIGZyYW1lCiAgKgogICogQSByZWNlaXZlZCBGTE9HSSByZXF1ZXN0IGluZGljYXRlcyBhIHBvaW50LXRvLXBvaW50IGNvbm5lY3Rpb24uCkBAIC04NTgsNyArODU4LDcgQEAKICAqIGlmIGFuIHJwb3J0IHNob3VsZCBoYW5kbGUgdGhlIHJlcXVlc3QuCiAgKgogICogTG9ja2luZyBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdGhlIGxwb3J0Ci0gKgkJIGxvY2sgaGVsZCBiZWN1YXNlIGl0IHdpbGwgZ3JhYiB0aGUgbG9jay4KKyAqCQkgbG9jayBoZWxkIGJlY2F1c2UgaXQgd2lsbCBncmFiIHRoZSBsb2NrLgogICovCiBzdGF0aWMgdm9pZCBmY19scG9ydF9yZWN2X2Vsc19yZXEoc3RydWN0IGZjX2xwb3J0ICpscG9ydCwKIAkJCQkgIHN0cnVjdCBmY19mcmFtZSAqZnApCkBAIC05MjUsNyArOTI1LDcgQEAKICAqIEBmcDogVGhlIGZyYW1lIHRoZSByZXF1ZXN0IGlzIGluCiAgKgogICogTG9ja2luZyBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdGhlIGxwb3J0Ci0gKgkJIGxvY2sgaGVsZCBiZWN1YXNlIGl0IG1heSBncmFiIHRoZSBsb2NrLgorICoJCSBsb2NrIGhlbGQgYmVjYXVzZSBpdCBtYXkgZ3JhYiB0aGUgbG9jay4KICAqLwogc3RhdGljIHZvaWQgZmNfbHBvcnRfcmVjdl9yZXEoc3RydWN0IGZjX2xwb3J0ICpscG9ydCwKIAkJCSAgICAgIHN0cnVjdCBmY19mcmFtZSAqZnApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19leHBhbmRlci5jIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXhwYW5kZXIuYwppbmRleCBmM2Y2OTNiLi44NzRlMjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19leHBhbmRlci5jCisrKyBiL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V4cGFuZGVyLmMKQEAgLTI0MCw3ICsyNDAsNyBAQAogCQkJCSAgICAgICBkaXNjX3Jlc3AsIERJU0NPVkVSX1JFU1BfU0laRSk7CiAJCWlmIChyZXMpCiAJCQlyZXR1cm4gcmVzOwotCQkvKiBUaGlzIGlzIGRldGVjdGluZyBhIGZhaWx1cmUgdG8gdHJhbnNtaXQgaW5pdGFsCisJCS8qIFRoaXMgaXMgZGV0ZWN0aW5nIGEgZmFpbHVyZSB0byB0cmFuc21pdCBpbml0aWFsCiAJCSAqIGRldiB0byBob3N0IEZJUyBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBHLjUgb2YKIAkJICogc2FzLTIgciAwNGIgKi8KIAkJZHIgPSAmKChzdHJ1Y3Qgc21wX3Jlc3AgKilkaXNjX3Jlc3ApLT5kaXNjOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19hdHRyLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2F0dHIuYwppbmRleCA0ZTBmYWEwLi4xN2Q3ODkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2F0dHIuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2F0dHIuYwpAQCAtNDUxNSw3ICs0NTE1LDcgQEAKICAqIERlc2NyaXB0aW9uOgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRyYW5zcG9ydCBhZnRlciB0aGUgQGZjX3Zwb3J0J3Mgc3ltYm9saWMgbmFtZQogICogaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBmdW5jdGlvbiByZS1yZWdpc3RlcnMgdGhlIHN5bWJvbGljIG5hbWUgd2l0aCB0aGUKLSAqIHN3aXRjaCB0byBwcm9wb2dhdGUgdGhlIGNoYW5nZSBpbnRvIHRoZSBmYWJyaWMgaWYgdGhlIHZwb3J0IGlzIGFjdGl2ZS4KKyAqIHN3aXRjaCB0byBwcm9wYWdhdGUgdGhlIGNoYW5nZSBpbnRvIHRoZSBmYWJyaWMgaWYgdGhlIHZwb3J0IGlzIGFjdGl2ZS4KICAqKi8KIHN0YXRpYyB2b2lkCiBscGZjX3NldF92cG9ydF9zeW1ib2xpY19uYW1lKHN0cnVjdCBmY192cG9ydCAqZmNfdnBvcnQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2JzZy5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ic2cuYwppbmRleCA3OTNiOWYxLi43N2IyODcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2JzZy5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYnNnLmMKQEAgLTE5MzksNyArMTkzOSw3IEBACiAgKiBAcnh4cmk6IFJlY2VpdmUgZXhjaGFuZ2UgaWQKICAqIEBsZW46IE51bWJlciBvZiBkYXRhIGJ5dGVzCiAgKgotICogVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgYW5kIHBvc3RzIGEgZGF0YSBidWZmZXIgb2Ygc3VmZmljaWVudCBzaXplIHRvIHJlY2lldmUKKyAqIFRoaXMgZnVuY3Rpb24gYWxsb2NhdGVzIGFuZCBwb3N0cyBhIGRhdGEgYnVmZmVyIG9mIHN1ZmZpY2llbnQgc2l6ZSB0byByZWNlaXZlCiAgKiBhbiB1bnNvbGljdGVkIENUIGNvbW1hbmQuCiAgKiovCiBzdGF0aWMgaW50IGxwZmNkaWFnX2xvb3BfcG9zdF9yeGJ1ZnMoc3RydWN0IGxwZmNfaGJhICpwaGJhLCB1aW50MTZfdCByeHhyaSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZGVidWdmcy5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19kZWJ1Z2ZzLmMKaW5kZXggYTc1MzU4MS4uM2Q5Njc3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19kZWJ1Z2ZzLmMKQEAgLTkwOCw3ICs5MDgsNyBAQAogCWlmICghZGVidWcpCiAJCWdvdG8gb3V0OwogCi0JLyogUm91bmQgdG8gcGFnZSBib3VuZHJ5ICovCisJLyogUm91bmQgdG8gcGFnZSBib3VuZGFyeSAqLwogCXByaW50ayhLRVJOX0VSUiAiOTA1OSBCTEtHUkQ6ICAlczogX2R1bXBfYnVmX2RhdGE9MHglcFxuIiwKIAkJCV9fZnVuY19fLCBfZHVtcF9idWZfZGF0YSk7CiAJZGVidWctPmJ1ZmZlciA9IF9kdW1wX2J1Zl9kYXRhOwpAQCAtOTM4LDcgKzkzOCw3IEBACiAJaWYgKCFkZWJ1ZykKIAkJZ290byBvdXQ7CiAKLQkvKiBSb3VuZCB0byBwYWdlIGJvdW5kcnkgKi8KKwkvKiBSb3VuZCB0byBwYWdlIGJvdW5kYXJ5ICovCiAJcHJpbnRrKEtFUk5fRVJSCSI5MDYwIEJMS0dSRDogJXM6IF9kdW1wX2J1Zl9kaWY9MHglcCBmaWxlPSVzXG4iLAogCQlfX2Z1bmNfXywgX2R1bXBfYnVmX2RpZiwgZmlsZS0+Zl9kZW50cnktPmRfbmFtZS5uYW1lKTsKIAlkZWJ1Zy0+YnVmZmVyID0gX2R1bXBfYnVmX2RpZjsKQEAgLTIxNTgsNyArMjE1OCw3IEBACiAJCQlkZWJ1Z2ZzX2NyZWF0ZV9kaXIobmFtZSwgcGhiYS0+aGJhX2RlYnVnZnNfcm9vdCk7CiAJCWlmICghdnBvcnQtPnZwb3J0X2RlYnVnZnNfcm9vdCkgewogCQkJbHBmY19wcmludGZfdmxvZyh2cG9ydCwgS0VSTl9FUlIsIExPR19JTklULAotCQkJCQkgIjA0MTcgQ2FudCBjcmVhdGUgZGVidWdmc1xuIik7CisJCQkJCSAiMDQxNyBDYW4ndCBjcmVhdGUgZGVidWdmc1xuIik7CiAJCQlnb3RvIGRlYnVnX2ZhaWxlZDsKIAkJfQogCQlhdG9taWNfaW5jKCZwaGJhLT5kZWJ1Z2ZzX3Zwb3J0X2NvdW50KTsKQEAgLTIyMTEsNyArMjIxMSw3IEBACiAJCQkJIHZwb3J0LCAmbHBmY19kZWJ1Z2ZzX29wX25vZGVsaXN0KTsKIAlpZiAoIXZwb3J0LT5kZWJ1Z19ub2RlbGlzdCkgewogCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX0lOSVQsCi0JCQkJICIwNDA5IENhbnQgY3JlYXRlIGRlYnVnZnMgbm9kZWxpc3RcbiIpOworCQkJCSAiMDQwOSBDYW4ndCBjcmVhdGUgZGVidWdmcyBub2RlbGlzdFxuIik7CiAJCWdvdG8gZGVidWdfZmFpbGVkOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19lbHMuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZWxzLmMKaW5kZXggNzM1MDI4Zi4uZDM0YjY5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19lbHMuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2Vscy5jCkBAIC0xMDIsNyArMTAyLDcgQEAKIAkJCSBwaGJhLT5wcG9ydC0+cG9ydF9zdGF0ZSk7CiAKIAkvKiBDTEVBUl9MQSBzaG91bGQgcmUtZW5hYmxlIGxpbmsgYXR0ZW50aW9uIGV2ZW50cyBhbmQKLQkgKiB3ZSBzaG91bGQgdGhlbiBpbWVkaWF0ZWx5IHRha2UgYSBMQVRUIGV2ZW50LiBUaGUKKwkgKiB3ZSBzaG91bGQgdGhlbiBpbW1lZGlhdGVseSB0YWtlIGEgTEFUVCBldmVudC4gVGhlCiAJICogTEFUVCBwcm9jZXNzaW5nIHNob3VsZCBjYWxsIGxwZmNfbGlua2Rvd24oKSB3aGljaAogCSAqIHdpbGwgY2xlYW51cCBhbnkgbGVmdCBvdmVyIGluLXByb2dyZXNzIGRpc2NvdmVyeQogCSAqIGV2ZW50cy4KQEAgLTE1OTksNyArMTU5OSw3IEBACiAgKiBUaGlzIHJvdXRpbmUgaXMgdGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGlzc3VpbmcgdGhlIFBvcnQKICAqIExvZ2luIChQTE9HSSkgY29tbWFuZC4gRm9yIFBMT0dJIGNvbXBsZXRpb24sIHRoZXJlIG11c3QgYmUgYW4gYWN0aXZlCiAgKiBuZGxwIG9uIHRoZSB2cG9ydCBub2RlIGxpc3QgdGhhdCBtYXRjaGVzIHRoZSByZW1vdGUgbm9kZSBJRCBmcm9tIHRoZQotICogUExPR0kgcmVwb25zZSBJT0NCLiBJZiBzdWNoIG5kbHAgZG9lcyBub3QgZXhpc3QsIHRoZSBQTE9HSSBpcyBzaW1wbHkKKyAqIFBMT0dJIHJlc3BvbnNlIElPQ0IuIElmIHN1Y2ggbmRscCBkb2VzIG5vdCBleGlzdCwgdGhlIFBMT0dJIGlzIHNpbXBseQogICogaWdub3JlZCBhbmQgY29tbWFuZCBJT0NCIHJlbGVhc2VkLiBUaGUgUExPR0kgcmVzcG9uc2UgSU9DQiBzdGF0dXMgaXMKICAqIGNoZWNrZWQgZm9yIGVycm9yIGNvbmRpdG9ucy4gSWYgdGhlcmUgaXMgZXJyb3Igc3RhdHVzIHJlcG9ydGVkLCBQTE9HSQogICogcmV0cnkgc2hhbGwgYmUgYXR0ZW1wdGVkIGJ5IGludm9raW5nIHRoZSBscGZjX2Vsc19yZXRyeSgpIHJvdXRpbmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2hiYWRpc2MuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaGJhZGlzYy5jCmluZGV4IDE1NGM3MTUuLjMwMTQ5ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaGJhZGlzYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaGJhZGlzYy5jCkBAIC03MzksNyArNzM5LDcgQEAKIAogLyoKICAqIFRoaXMgaXMgb25seSBjYWxsZWQgdG8gaGFuZGxlIEZDIHdvcmtlciBldmVudHMuIFNpbmNlIHRoaXMgYSByYXJlCi0gKiBvY2N1cmFuY2UsIHdlIGFsbG9jYXRlIGEgc3RydWN0IGxwZmNfd29ya19ldnQgc3RydWN0dXJlIGhlcmUgaW5zdGVhZCBvZgorICogb2NjdXJyZW5jZSwgd2UgYWxsb2NhdGUgYSBzdHJ1Y3QgbHBmY193b3JrX2V2dCBzdHJ1Y3R1cmUgaGVyZSBpbnN0ZWFkIG9mCiAgKiBlbWJlZGRpbmcgaXQgaW4gdGhlIElPQ0IuCiAgKi8KIGludApAQCAtMTM0OCw3ICsxMzQ4LDcgQEAKIAlpbnQgcmM7CiAKIAlzcGluX2xvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKLQkvKiBJZiB0aGUgRkNGIGlzIG5vdCBhdmFpbGFiZSBkbyBub3RoaW5nLiAqLworCS8qIElmIHRoZSBGQ0YgaXMgbm90IGF2YWlsYWJsZSBkbyBub3RoaW5nLiAqLwogCWlmICghKHBoYmEtPmZjZi5mY2ZfZmxhZyAmIEZDRl9BVkFJTEFCTEUpKSB7CiAJCXBoYmEtPmhiYV9mbGFnICY9IH4oRkNGX1RTX0lOUFJPRyB8IEZDRl9SUl9JTlBST0cpOwogCQlzcGluX3VubG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOwpAQCAtMTUzOCw3ICsxNTM4LDcgQEAKIAogCQkvKgogCQkgKiBJZiB1c2VyIGRpZCBub3Qgc3BlY2lmeSBhbnkgYWRkcmVzc2luZyBtb2RlLCBvciBpZiB0aGUKLQkJICogcHJlZmVyZWQgYWRkcmVzc2luZyBtb2RlIHNwZWNpZmllZCBieSB1c2VyIGlzIG5vdCBzdXBwb3J0ZWQKKwkJICogcHJlZmVycmVkIGFkZHJlc3NpbmcgbW9kZSBzcGVjaWZpZWQgYnkgdXNlciBpcyBub3Qgc3VwcG9ydGVkCiAJCSAqIGJ5IEZDRiwgYWxsb3cgZmFicmljIHRvIHBpY2sgdGhlIGFkZHJlc3NpbmcgbW9kZS4KIAkJICovCiAJCSphZGRyX21vZGUgPSBiZl9nZXQobHBmY19mY2ZfcmVjb3JkX21hY19hZGRyX3Byb3YsCkBAIC0xNTUzLDcgKzE1NTMsNyBAQAogCQkJCUZDRkNOQ1RfQU1fU1BNQSkgPwogCQkJCUxQRkNfRkNGX1NQTUEgOiBMUEZDX0ZDRl9GUE1BOwogCQkvKgotCQkgKiBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYSBwcmVmZXJlZCBhZGRyZXNzIG1vZGUsIHVzZSB0aGUKKwkJICogSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGEgcHJlZmVycmVkIGFkZHJlc3MgbW9kZSwgdXNlIHRoZQogCQkgKiBhZGRyIG1vZGUgb25seSBpZiBGQ0Ygc3VwcG9ydCB0aGUgYWRkcl9tb2RlLgogCQkgKi8KIAkJZWxzZSBpZiAoKGNvbm5fZW50cnktPmNvbm5fcmVjLmZsYWdzICYgRkNGQ05DVF9BTV9WQUxJRCkgJiYKQEAgLTMxMTcsNyArMzExNyw3IEBACiAJCSAqIGJhY2sgYXQgcmVnIGxvZ2luIHN0YXRlIHNvIHRoaXMKIAkJICogbWJveCBuZWVkcyB0byBiZSBpZ25vcmVkIGJlY2FzZQogCQkgKiB0aGVyZSBpcyBhbm90aGVyIHJlZyBsb2dpbiBpbgotCQkgKiBwcm9jY2Vzcy4KKwkJICogcHJvY2Vzcy4KIAkJICovCiAJCXNwaW5fbG9ja19pcnEoc2hvc3QtPmhvc3RfbG9jayk7CiAJCW5kbHAtPm5scF9mbGFnICY9IH5OTFBfSUdOUl9SRUdfQ01QTDsKQEAgLTQ0NzcsNyArNDQ3Nyw3IEBACiAJaWYgKCh2cG9ydC0+ZmNfZmxhZyAmIEZDX1JTQ05fTU9ERSkgJiYKIAkgICAgISh2cG9ydC0+ZmNfZmxhZyAmIEZDX05ESVNDX0FDVElWRSkpIHsKIAkJaWYgKGxwZmNfcnNjbl9wYXlsb2FkX2NoZWNrKHZwb3J0LCBkaWQpKSB7Ci0JCQkvKiBJZiB3ZSd2ZSBhbHJlYWR5IHJlY2lldmVkIGEgUExPR0kgZnJvbSB0aGlzIE5Qb3J0CisJCQkvKiBJZiB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIGEgUExPR0kgZnJvbSB0aGlzIE5Qb3J0CiAJCQkgKiB3ZSBkb24ndCBuZWVkIHRvIHRyeSB0byBkaXNjb3ZlciBpdCBhZ2Fpbi4KIAkJCSAqLwogCQkJaWYgKG5kbHAtPm5scF9mbGFnICYgTkxQX1JDVl9QTE9HSSkKQEAgLTQ0OTMsNyArNDQ5Myw3IEBACiAJCX0gZWxzZQogCQkJbmRscCA9IE5VTEw7CiAJfSBlbHNlIHsKLQkJLyogSWYgd2UndmUgYWxyZWFkeSByZWNpZXZlZCBhIFBMT0dJIGZyb20gdGhpcyBOUG9ydCwKKwkJLyogSWYgd2UndmUgYWxyZWFkeSByZWNlaXZlZCBhIFBMT0dJIGZyb20gdGhpcyBOUG9ydCwKIAkJICogb3Igd2UgYXJlIGFscmVhZHkgaW4gdGhlIHByb2Nlc3Mgb2YgZGlzY292ZXJ5IG9uIGl0LAogCQkgKiB3ZSBkb24ndCBuZWVkIHRvIHRyeSB0byBkaXNjb3ZlciBpdCBhZ2Fpbi4KIAkJICovCkBAIC01NzU2LDcgKzU3NTYsNyBAQAogICogQHNpemU6IFNpemUgb2YgdGhlIGRhdGEgYnVmZmVyLgogICogQHJlY190eXBlOiBSZWNvcmQgdHlwZSB0byBiZSBzZWFyY2hlZC4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIGNvbmZpZyByZWdpb24gZGF0YSB0byBmaW5kIHRoZSBiZWdpbmluZworICogVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyBjb25maWcgcmVnaW9uIGRhdGEgdG8gZmluZCB0aGUgYmVnaW5uaW5nCiAgKiBvZiB0aGUgcmVjb3JkIHNwZWNpZmllZCBieSByZWNvcmRfdHlwZS4gSWYgcmVjb3JkIGZvdW5kLCB0aGlzCiAgKiBmdW5jdGlvbiByZXR1cm4gcG9pbnRlciB0byB0aGUgcmVjb3JkIGVsc2UgcmV0dXJuIE5VTEwuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaW5pdC5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19pbml0LmMKaW5kZXggZTZlYmU1MS4uNTA1Zjg4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19pbml0LmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19pbml0LmMKQEAgLTQ0NjYsNyArNDQ2Niw3IEBACiB9CiAKIC8qKgotICogbHBmY19pbml0X2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBpbml0IGFwaSBmdWNudGlvbiBqdW1wIHRhYmxlCisgKiBscGZjX2luaXRfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIGluaXQgYXBpIGZ1bmN0aW9uIGp1bXAgdGFibGUKICAqIEBwaGJhOiBUaGUgaGJhIHN0cnVjdCBmb3Igd2hpY2ggdGhpcyBjYWxsIGlzIGJlaW5nIGV4ZWN1dGVkLgogICogQGRldl9ncnA6IFRoZSBIQkEgUENJLURldmljZSBncm91cCBudW1iZXIuCiAgKgpAQCAtNDg1MCw3ICs0ODUwLDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqIAkwIC0gc3VjY2Vzc2Z1bAotICogCS1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqIAktRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIGludApAQCAtNTczMCw3ICs1NzMwLDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqIAkwIC0gc3VjY2Vzc2Z1bAotICogCS1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqIAktRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIHN0YXRpYyBpbnQKQEAgLTU4MzUsNyArNTgzNSw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAJMCAtIHN1Y2Nlc3NmdWwKLSAqIAktRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAJLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiBzdGF0aWMgaW50CkBAIC01ODk0LDcgKzU4OTQsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogc3RhdGljIGludApAQCAtNjE4OSw3ICs2MTg5LDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqICAgICAgMCAtIHN1Y2Nlc3NmdWwKLSAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIHN0YXRpYyB2b2lkCkBAIC02MjUzLDcgKzYyNTMsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogaW50CkBAIC02NDk4LDcgKzY0OTgsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogdm9pZApAQCAtNjU0Myw3ICs2NTQzLDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqICAgICAgMCAtIHN1Y2Nlc3NmdWwKLSAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICoqLwogc3RhdGljIGludAogbHBmY19zbGk0X2NxX2V2ZW50X3Bvb2xfY3JlYXRlKHN0cnVjdCBscGZjX2hiYSAqcGhiYSkKQEAgLTY3MDQsNyArNjcwNCw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbWJveC5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tYm94LmMKaW5kZXggZGJhMzJkZi4uZmJhYjk3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tYm94LmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tYm94LmMKQEAgLTE4MzQsNyArMTgzNCw3IEBACiAgKiBAZmNmX2luZGV4OiBpbmRleCB0byBmY2YgdGFibGUuCiAgKgogICogVGhpcyByb3V0aW5lIHJvdXRpbmUgYWxsb2NhdGVzIGFuZCBjb25zdHJ1Y3RzIG5vbi1lbWJlZGRlZCBtYWlsYm94IGNvbW1hbmQKLSAqIGZvciByZWFkaW5nIGEgRkNGIHRhYmxlIGVudHJ5IHJlZmVyZWQgYnkgQGZjZl9pbmRleC4KKyAqIGZvciByZWFkaW5nIGEgRkNGIHRhYmxlIGVudHJ5IHJlZmVycmVkIGJ5IEBmY2ZfaW5kZXguCiAgKgogICogUmV0dXJuOiBwb2ludGVyIHRvIHRoZSBtYWlsYm94IGNvbW1hbmQgY29uc3RydWN0ZWQgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlCiAgKiBOVUxMLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ubC5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ubC5oCmluZGV4IGYzY2ZiZTIuLmYyYjFiYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbmwuaAorKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25sLmgKQEAgLTUwLDcgKzUwLDcgQEAKICAqIGFuZCBzdWJjYXRlZ29yeS4gVGhlIGV2ZW50IHR5cGUgbXVzdCBjb21lIGZpcnN0LgogICogVGhlIHN1YmNhdGVnb3J5IGZ1cnRoZXIgZGVmaW5lcyB0aGUgZGF0YSB0aGF0IGZvbGxvd3MgaW4gdGhlIHJlc3QKICAqIG9mIHRoZSBwYXlsb2FkLiBFYWNoIGNhdGVnb3J5IHdpbGwgaGF2ZSBpdHMgb3duIHVuaXF1ZSBoZWFkZXIgcGx1cwotICogYW55IGFkZHRpb25hbCBkYXRhIHVuaXF1ZSB0byB0aGUgc3ViY2F0ZWdvcnkuCisgKiBhbnkgYWRkaXRpb25hbCBkYXRhIHVuaXF1ZSB0byB0aGUgc3ViY2F0ZWdvcnkuCiAgKiBUaGUgcGF5bG9hZCBzZW50IHZpYSB0aGUgZmMgdHJhbnNwb3J0IGlzIG9uZS13YXkgZHJpdmVyLT5hcHBsaWNhdGlvbi4KICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25wb3J0ZGlzYy5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ucG9ydGRpc2MuYwppbmRleCA1MmIzNTE1Li4wZDkyZDQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25wb3J0ZGlzYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbnBvcnRkaXNjLmMKQEAgLTY1OCw3ICs2NTgsNyBAQAogCXJldHVybiAwOwogfQogLyoqCi0gKiBscGZjX3JlbGVhc2VfcnBpIC0gUmVsZWFzZSBhIFJQSSBieSBpc3N1ZWluZyB1bnJlZ19sb2dpbiBtYWlsYm94IGNtZC4KKyAqIGxwZmNfcmVsZWFzZV9ycGkgLSBSZWxlYXNlIGEgUlBJIGJ5IGlzc3VpbmcgdW5yZWdfbG9naW4gbWFpbGJveCBjbWQuCiAgKiBAcGhiYSA6IFBvaW50ZXIgdG8gbHBmY19oYmEgc3RydWN0dXJlLgogICogQHZwb3J0OiBQb2ludGVyIHRvIGxwZmNfdnBvcnQgc3RydWN0dXJlLgogICogQHJwaSAgOiBycGkgdG8gYmUgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMKaW5kZXggMmI5NjJiMC4uZmU3Y2M4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMKQEAgLTU3Nyw3ICs1NzcsNyBAQAogCQkJaW9jYi0+dW4uZmNwaTY0LmJkbC5hZGRySGlnaCA9IDA7CiAJCQlpb2NiLT51bHBCZGVDb3VudCA9IDA7CiAJCQlpb2NiLT51bHBMZSA9IDA7Ci0JCQkvKiBmaWxsIGluIHJlc3BvbmNlIEJERSAqLworCQkJLyogZmlsbCBpbiByZXNwb25zZSBCREUgKi8KIAkJCWlvY2ItPnVuc2xpMy5mY3BfZXh0LnJiZGUudHVzLmYuYmRlRmxhZ3MgPQogCQkJCQkJCUJVRkZfVFlQRV9CREVfNjQ7CiAJCQlpb2NiLT51bnNsaTMuZmNwX2V4dC5yYmRlLnR1cy5mLmJkZVNpemUgPQpAQCAtMTIxNywxMCArMTIxNywxMCBAQAogCQkJCSAgICAgKDIgKiBzaXplb2Yoc3RydWN0IHVscF9iZGU2NCkpKTsKIAkJCWRhdGFfYmRlLT5hZGRySGlnaCA9IHB1dFBhZGRySGlnaChwaHlzYWRkcik7CiAJCQlkYXRhX2JkZS0+YWRkckxvdyA9IHB1dFBhZGRyTG93KHBoeXNhZGRyKTsKLQkJCS8qIGViZGUgY291bnQgaW5jbHVkZXMgdGhlIHJlc3BvbmNlIGJkZSBhbmQgZGF0YSBicGwgKi8KKwkJCS8qIGViZGUgY291bnQgaW5jbHVkZXMgdGhlIHJlc3BvbnNlIGJkZSBhbmQgZGF0YSBicGwgKi8KIAkJCWlvY2JfY21kLT51bnNsaTMuZmNwX2V4dC5lYmRlX2NvdW50ID0gMjsKIAkJfSBlbHNlIHsKLQkJCS8qIGViZGUgY291bnQgaW5jbHVkZXMgdGhlIHJlc3BvbmNlIGJkZSBhbmQgZGF0YSBiZGVzICovCisJCQkvKiBlYmRlIGNvdW50IGluY2x1ZGVzIHRoZSByZXNwb25zZSBiZGUgYW5kIGRhdGEgYmRlcyAqLwogCQkJaW9jYl9jbWQtPnVuc2xpMy5mY3BfZXh0LmViZGVfY291bnQgPSAobnVtX2JkZSArIDEpOwogCQl9CiAJfSBlbHNlIHsKQEAgLTIzODAsNyArMjM4MCw3IEBACiAJCX0KIAkJLyoKIAkJICogVGhlIGNtbmQtPnVuZGVyZmxvdyBpcyB0aGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0Ci0JCSAqIGJlIHRyYW5zZmVyZWQgZm9yIHRoaXMgY29tbWFuZC4gIFByb3ZpZGVkIGEgc2Vuc2UgY29uZGl0aW9uCisJCSAqIGJlIHRyYW5zZmVycmVkIGZvciB0aGlzIGNvbW1hbmQuICBQcm92aWRlZCBhIHNlbnNlIGNvbmRpdGlvbgogCQkgKiBpcyBub3QgcHJlc2VudCwgbWFrZSBzdXJlIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkIGlzIGF0CiAJCSAqIGxlYXN0IHRoZSB1bmRlcmZsb3cgdmFsdWUgb3IgZmFpbC4KIAkJICovCkBAIC0yODczLDcgKzI4NzMsNyBAQAogfQogCiAvKioKLSAqIGxwZmNfc2NzaV9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgc2NzaSBhcGkgZnVjbnRpb24ganVtcCB0YWJsZQorICogbHBmY19zY3NpX2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBzY3NpIGFwaSBmdW5jdGlvbiBqdW1wIHRhYmxlCiAgKiBAcGhiYTogVGhlIGhiYSBzdHJ1Y3QgZm9yIHdoaWNoIHRoaXMgY2FsbCBpcyBiZWluZyBleGVjdXRlZC4KICAqIEBkZXZfZ3JwOiBUaGUgSEJBIFBDSS1EZXZpY2UgZ3JvdXAgbnVtYmVyLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5oIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmgKaW5kZXggNTkzMjI3My4uY2U2NDViMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmgKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmgKQEAgLTEzMCw3ICsxMzAsNyBAQAogCWRtYV9hZGRyX3Qgbm9uc2dfcGh5czsJLyogTm9uIHNjYXR0ZXItZ2F0aGVyIHBoeXNpY2FsIGFkZHJlc3MuICovCiAKIAkvKgotCSAqIGRhdGEgYW5kIGRtYV9oYW5kbGUgYXJlIHRoZSBrZXJuZWwgdmlydXRhbCBhbmQgYnVzIGFkZHJlc3Mgb2YgdGhlCisJICogZGF0YSBhbmQgZG1hX2hhbmRsZSBhcmUgdGhlIGtlcm5lbCB2aXJ0dWFsIGFuZCBidXMgYWRkcmVzcyBvZiB0aGUKIAkgKiBkbWEtYWJsZSBidWZmZXIgY29udGFpbmluZyB0aGUgZmNwX2NtZCwgZmNwX3JzcCBhbmQgYSBzY2F0dGVyCiAJICogZ2F0aGVyIGJkZSBsaXN0IHRoYXQgc3VwcG9ydHMgdGhlIHNnX3RhYmxlc2l6ZSB2YWx1ZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2xpLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5jCmluZGV4IDQ3NDZkY2QuLmRhY2FiYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2xpLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zbGkuYwpAQCAtMjgxNyw3ICsyODE3LDcgQEAKICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGludGVycnVwdCBjb250ZXh0IHdoZW4gdGhlcmUgaXMgYSByaW5nCiAgKiBldmVudCBmb3IgdGhlIGZjcCByaW5nLiBUaGUgY2FsbGVyIGRvZXMgbm90IGhvbGQgYW55IGxvY2suCiAgKiBUaGUgZnVuY3Rpb24gcHJvY2Vzc2VzIGVhY2ggcmVzcG9uc2UgaW9jYiBpbiB0aGUgcmVzcG9uc2UgcmluZyB1bnRpbCBpdAotICogZmluZHMgYW4gaW9jYiB3aXRoIExFIGJpdCBzZXQgYW5kIGNoYWlucyBhbGwgdGhlIGlvY2JzIHVwdG8gdGhlIGlvY2Igd2l0aAorICogZmluZHMgYW4gaW9jYiB3aXRoIExFIGJpdCBzZXQgYW5kIGNoYWlucyBhbGwgdGhlIGlvY2JzIHVwIHRvIHRoZSBpb2NiIHdpdGgKICAqIExFIGJpdCBzZXQuIFRoZSBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBvZiB0aGUgY29tbWFuZCBpb2NiCiAgKiBpZiB0aGUgcmVzcG9uc2UgaW9jYiBpbmRpY2F0ZXMgYSBjb21wbGV0aW9uIGZvciBhIGNvbW1hbmQgaW9jYiBvciBpdCBpcwogICogYW4gYWJvcnQgY29tcGxldGlvbi4gVGhlIGZ1bmN0aW9uIHdpbGwgY2FsbCBscGZjX3NsaV9wcm9jZXNzX3Vuc29sX2lvY2IKQEAgLTUxMTcsNyArNTExNyw3IEBACiAKIAkvKiBTZXR0aW5nIHN0YXRlIHVua25vd24gc28gbHBmY19zbGlfYWJvcnRfaW9jYl9yaW5nCiAJICogd291bGQgZ2V0IElPQ0JfRVJST1IgZnJvbSBscGZjX3NsaV9pc3N1ZV9pb2NiLCBhbGxvd2luZwotCSAqIGl0IHRvIGZhaWwgYWxsIG91c3RhbmRpbmcgU0NTSSBJTy4KKwkgKiBpdCB0byBmYWlsIGFsbCBvdXRzdGFuZGluZyBTQ1NJIElPLgogCSAqLwogCXNwaW5fbG9ja19pcnEoJnBoYmEtPnBwb3J0LT53b3JrX3BvcnRfbG9jayk7CiAJcGhiYS0+cHBvcnQtPndvcmtfcG9ydF9ldmVudHMgJj0gfldPUktFUl9NQk9YX1RNTzsKQEAgLTYwMzEsNyArNjAzMSw3IEBACiB9CiAKIC8qKgotICogbHBmY19tYm94X2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBtYm94IGFwaSBmdWNudGlvbiBqdW1wIHRhYmxlCisgKiBscGZjX21ib3hfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIG1ib3ggYXBpIGZ1bmN0aW9uIGp1bXAgdGFibGUKICAqIEBwaGJhOiBUaGUgaGJhIHN0cnVjdCBmb3Igd2hpY2ggdGhpcyBjYWxsIGlzIGJlaW5nIGV4ZWN1dGVkLgogICogQGRldl9ncnA6IFRoZSBIQkEgUENJLURldmljZSBncm91cCBudW1iZXIuCiAgKgpAQCAtNjg0Nyw3ICs2ODQ3LDcgQEAKIH0KIAogLyoqCi0gKiBscGZjX3NsaV9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgc2xpIGFwaSBmdWNudGlvbiBqdW1wIHRhYmxlCisgKiBscGZjX3NsaV9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgc2xpIGFwaSBmdW5jdGlvbiBqdW1wIHRhYmxlCiAgKiBAcGhiYTogVGhlIGhiYSBzdHJ1Y3QgZm9yIHdoaWNoIHRoaXMgY2FsbCBpcyBiZWluZyBleGVjdXRlZC4KICAqIEBkZXZfZ3JwOiBUaGUgSEJBIFBDSS1EZXZpY2UgZ3JvdXAgbnVtYmVyLgogICoKQEAgLTc1MjEsNyArNzUyMSw3IEBACiAJc3RydWN0IGxwZmNfZG1hYnVmICptcCwgKm5leHRfbXA7CiAJc3RydWN0IGxpc3RfaGVhZCAqc2xwID0gJnByaW5nLT5wb3N0YnVmcTsKIAotCS8qIFNlYXJjaCBwb3N0YnVmcSwgZnJvbSB0aGUgYmVnaW5pbmcsIGxvb2tpbmcgZm9yIGEgbWF0Y2ggb24gdGFnICovCisJLyogU2VhcmNoIHBvc3RidWZxLCBmcm9tIHRoZSBiZWdpbm5pbmcsIGxvb2tpbmcgZm9yIGEgbWF0Y2ggb24gdGFnICovCiAJc3Bpbl9sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1wLCBuZXh0X21wLCAmcHJpbmctPnBvc3RidWZxLCBsaXN0KSB7CiAJCWlmIChtcC0+YnVmZmVyX3RhZyA9PSB0YWcpIHsKQEAgLTc1NjUsNyArNzU2NSw3IEBACiAJc3RydWN0IGxwZmNfZG1hYnVmICptcCwgKm5leHRfbXA7CiAJc3RydWN0IGxpc3RfaGVhZCAqc2xwID0gJnByaW5nLT5wb3N0YnVmcTsKIAotCS8qIFNlYXJjaCBwb3N0YnVmcSwgZnJvbSB0aGUgYmVnaW5pbmcsIGxvb2tpbmcgZm9yIGEgbWF0Y2ggb24gcGh5cyAqLworCS8qIFNlYXJjaCBwb3N0YnVmcSwgZnJvbSB0aGUgYmVnaW5uaW5nLCBsb29raW5nIGZvciBhIG1hdGNoIG9uIHBoeXMgKi8KIAlzcGluX2xvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobXAsIG5leHRfbXAsICZwcmluZy0+cG9zdGJ1ZnEsIGxpc3QpIHsKIAkJaWYgKG1wLT5waHlzID09IHBoeXMpIHsKQEAgLTg0MzgsNyArODQzOCw3IEBACiAgKiBmb3IgcG9zc2libGUgZXJyb3IgYXR0ZW50aW9uIGV2ZW50cy4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIGhvc3Rsb2NrCiAgKiB3aXRoIHNwaW5fbG9ja19pcnEoKS4KICAqCi0gKiBUaGlzIGZ1Y250aW9uIHJldHVybnMgMSB3aGVuIHRoZXJlIGlzIEVycm9yIEF0dGVudGlvbiBpbiB0aGUgSG9zdCBBdHRlbnRpb24KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgogICogUmVnaXN0ZXIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCiAgKiovCiBzdGF0aWMgaW50CkBAIC04NDkxLDcgKzg0OTEsNyBAQAogICogZm9yIHBvc3NpYmxlIGVycm9yIGF0dGVudGlvbiBldmVudHMuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBob3N0bG9jawogICogd2l0aCBzcGluX2xvY2tfaXJxKCkuCiAgKgotICogVGhpcyBmdWNudGlvbiByZXR1cm5zIDEgd2hlbiB0aGVyZSBpcyBFcnJvciBBdHRlbnRpb24gaW4gdGhlIEhvc3QgQXR0ZW50aW9uCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZXJlIGlzIEVycm9yIEF0dGVudGlvbiBpbiB0aGUgSG9zdCBBdHRlbnRpb24KICAqIFJlZ2lzdGVyIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgogICoqLwogc3RhdGljIGludApAQCAtODU4MSw3ICs4NTgxLDcgQEAKICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGltZXIgc29mdCBpbnRlcnJ1cHQgY29udGV4dCB0byBjaGVjayBIQkEncwogICogZXJyb3IgYXR0ZW50aW9uIHJlZ2lzdGVyIGJpdCBmb3IgZXJyb3IgYXR0ZW50aW9uIGV2ZW50cy4KICAqCi0gKiBUaGlzIGZ1Y250aW9uIHJldHVybnMgMSB3aGVuIHRoZXJlIGlzIEVycm9yIEF0dGVudGlvbiBpbiB0aGUgSG9zdCBBdHRlbnRpb24KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgogICogUmVnaXN0ZXIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCiAgKiovCiBpbnQKQEAgLTk2ODQsNyArOTY4NCw3IEBACiAgKiBAY3E6IFBvaW50ZXIgdG8gdGhlIGNvbXBsZXRpb24gcXVldWUuCiAgKiBAd2NxZTogUG9pbnRlciB0byBhIGNvbXBsZXRpb24gcXVldWUgZW50cnkuCiAgKgotICogVGhpcyByb3V0aW5lIHByb2Nlc3MgYSBzbG93LXBhdGggd29yay1xdWV1ZSBvciByZWNpZXZlIHF1ZXVlIGNvbXBsZXRpb24gcXVldWUKKyAqIFRoaXMgcm91dGluZSBwcm9jZXNzIGEgc2xvdy1wYXRoIHdvcmstcXVldWUgb3IgcmVjZWl2ZSBxdWV1ZSBjb21wbGV0aW9uIHF1ZXVlCiAgKiBlbnRyeS4KICAqCiAgKiBSZXR1cm46IHRydWUgaWYgd29yayBwb3N0ZWQgdG8gd29ya2VyIHRocmVhZCwgb3RoZXJ3aXNlIGZhbHNlLgpAQCAtMTI5NzEsNyArMTI5NzEsNyBAQAogICogcmVjb3JkIGFuZCBwcm9jZXNzaW5nIGl0IG9uZSBhdCBhIHRpbWUgc3RhcnRpbmcgZnJvbSB0aGUgQGZjZl9pbmRleAogICogZm9yIGluaXRpYWwgRkNGIGRpc2NvdmVyeSBvciBmYXN0IEZDRiBmYWlsb3ZlciByZWRpc2NvdmVyeS4KICAqCi0gKiBSZXR1cm4gMCBpZiB0aGUgbWFpbGJveCBjb21tYW5kIGlzIHN1Ym1pdHRlZCBzdWNlc3NmdWxseSwgbm9uZSAwCisgKiBSZXR1cm4gMCBpZiB0aGUgbWFpbGJveCBjb21tYW5kIGlzIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHksIG5vbmUgMAogICogb3RoZXJ3aXNlLgogICoqLwogaW50CkBAIC0xMzAzMiw3ICsxMzAzMiw3IEBACiAgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCB0byByZWFkIGFuIEZDRiByZWNvcmQgaW5kaWNhdGVkIGJ5IEBmY2ZfaW5kZXgKICAqIGFuZCB0byB1c2UgaXQgZm9yIEZMT0dJIHJvdW5kcm9iaW4gRkNGIGZhaWxvdmVyLgogICoKLSAqIFJldHVybiAwIGlmIHRoZSBtYWlsYm94IGNvbW1hbmQgaXMgc3VibWl0dGVkIHN1Y2Vzc2Z1bGx5LCBub25lIDAKKyAqIFJldHVybiAwIGlmIHRoZSBtYWlsYm94IGNvbW1hbmQgaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseSwgbm9uZSAwCiAgKiBvdGhlcndpc2UuCiAgKiovCiBpbnQKQEAgLTEzMDc4LDcgKzEzMDc4LDcgQEAKICAqIFRoaXMgcm91dGluZSBpcyBpbnZva2VkIHRvIHJlYWQgYW4gRkNGIHJlY29yZCBpbmRpY2F0ZWQgYnkgQGZjZl9pbmRleCB0bwogICogZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBlbGlnaWJsZSBmb3IgRkxPR0kgcm91bmRyb2JpbiBmYWlsb3ZlciBsaXN0LgogICoKLSAqIFJldHVybiAwIGlmIHRoZSBtYWlsYm94IGNvbW1hbmQgaXMgc3VibWl0dGVkIHN1Y2Vzc2Z1bGx5LCBub25lIDAKKyAqIFJldHVybiAwIGlmIHRoZSBtYWlsYm94IGNvbW1hbmQgaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseSwgbm9uZSAwCiAgKiBvdGhlcndpc2UuCiAgKiovCiBpbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmMKaW5kZXggYzIxMjY5NC4uZjI2ODRkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmMKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmMKQEAgLTI4NCw3ICsyODQsNyBAQAogCiAJYWRhcHRlci0+aG9zdC0+bWF4X2lkID0gMTY7CS8qIG1heCB0YXJnZXRzIHBlciBjaGFubmVsICovCiAKLQlhZGFwdGVyLT5ob3N0LT5tYXhfbHVuID0gNzsJLyogVXB0byA3IGx1bnMgZm9yIG5vbiBkaXNrIGRldmljZXMgKi8KKwlhZGFwdGVyLT5ob3N0LT5tYXhfbHVuID0gNzsJLyogVXAgdG8gNyBsdW5zIGZvciBub24gZGlzayBkZXZpY2VzICovCiAKIAlhZGFwdGVyLT5ob3N0LT5jbWRfcGVyX2x1biA9IG1heF9jbWRfcGVyX2x1bjsKIApAQCAtMzczNCw3ICszNzM0LDcgQEAKIAkgKiBjaGVjayBpcyB0aGUgYXBwbGljYXRpb24gY29uZm9ybXMgdG8gTklULiBXZSBkbyBub3QgaGF2ZSB0byBkbyBtdWNoCiAJICogaW4gdGhhdCBjYXNlLgogCSAqIFdlIGV4cGxvaXQgdGhlIGZhY3QgdGhhdCB0aGUgc2lnbmF0dXJlIGlzIHN0b3JlZCBpbiB0aGUgdmVyeQotCSAqIGJlZ2luaW5nIG9mIHRoZSBzdHJ1Y3R1cmUuCisJICogYmVnaW5uaW5nIG9mIHRoZSBzdHJ1Y3R1cmUuCiAJICovCiAKIAlpZiggY29weV9mcm9tX3VzZXIoc2lnbmF0dXJlLCBhcmcsIDcpICkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5oIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmgKaW5kZXggODUzNDExOS4uOWE3ODk3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmgKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmgKQEAgLTUzMiw5ICs1MzIsOSBAQAogCiAvKgogICogc3RydWN0IG1jb250cm9sbGVyIGlzIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlcnMgaW4gdGhlCi0gKiBzeXN0ZW0uIEl0cyB1cHRvIHRoZSBhcHBsaWNhdGlvbiBob3cgdG8gdXNlIHRoZSBpbmZvcm1hdGlvbi4gV2UgYXJlIHBhc3NpbmcKKyAqIHN5c3RlbS4gSXRzIHVwIHRvIHRoZSBhcHBsaWNhdGlvbiBob3cgdG8gdXNlIHRoZSBpbmZvcm1hdGlvbi4gV2UgYXJlIHBhc3NpbmcKICAqIGFzIG11Y2ggaW5mbyBhYm91dCB0aGUgY2FyZHMgYXMgcG9zc2libGUgYW5kIHVzZWZ1bC4gQmVmb3JlIGlzc3VpbmcgdGhlCi0gKiBjYWxsIHRvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmRzLCB0aGUgYXBwbGljYWl0b24gbmVlZHMgdG8gaXNzdWUgYQorICogY2FsbCB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYXJkcywgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGlzc3VlIGEKICAqIGlvY3RsIGZpcnN0IHRvIGZpbmQgb3V0IHRoZSBudW1iZXIgb2YgY29udHJvbGxlcnMgaW4gdGhlIHN5c3RlbS4KICAqLwogI2RlZmluZSBNQVhfQ09OVFJPTExFUlMgMzIKQEAgLTgwNCw3ICs4MDQsNyBAQAogCXVuc2lnbmVkIGxvbmcJCWJhc2U7CiAJdm9pZCBfX2lvbWVtCQkqbW1pb19iYXNlOwogCi0JLyogbWJveDY0IHdpdGggbWJveCBub3QgYWxpZ25lZCBvbiAxNi1ieXRlIGJvdW5kcnkgKi8KKwkvKiBtYm94NjQgd2l0aCBtYm94IG5vdCBhbGlnbmVkIG9uIDE2LWJ5dGUgYm91bmRhcnkgKi8KIAltYm94NjRfdAkqdW5hX21ib3g2NDsKIAlkbWFfYWRkcl90CXVuYV9tYm94NjRfZG1hOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWJveF9kZWZzLmggYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWJveF9kZWZzLmgKaW5kZXggY2UyNDg3YS4uZTAxYzZmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21ib3hfZGVmcy5oCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tYm94X2RlZnMuaApAQCAtNjYwLDcgKzY2MCw3IEBACiAgKiBAbHBhcmFtCTogbG9naWNhbCBkcml2ZXMgcGFyYW1ldGVycwogICogQHNwYW4JOiBzcGFuCiAgKgotICogOC1MRCBsb2dpY2FsIGRyaXZlIHdpdGggdXB0byA4IHNwYW5zCisgKiA4LUxEIGxvZ2ljYWwgZHJpdmUgd2l0aCB1cCB0byA4IHNwYW5zCiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAlsb2dkcnZfcGFyYW1fdAlscGFyYW07CkBAIC02NzMsNyArNjczLDcgQEAKICAqIEBscGFyYW0JOiBsb2dpY2FsIGRyaXZlcyBwYXJhbWV0ZXJzCiAgKiBAc3Bhbgk6IHNwYW4KICAqCi0gKiA4LUxEIGxvZ2ljYWwgZHJpdmUgd2l0aCB1cHRvIDQgc3BhbnMKKyAqIDgtTEQgbG9naWNhbCBkcml2ZSB3aXRoIHVwIHRvIDQgc3BhbnMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogCWxvZ2Rydl9wYXJhbV90CWxwYXJhbTsKQEAgLTcyMCw3ICs3MjAsNyBAQAogICogQGxkcnYJOiBsb2dpY2FsIGRyaXZlcyBpbmZvcm1hdGlvbgogICogQHBkcnYJOiBwaHlzaWNhbCBkcml2ZXMgaW5mb3JtYXRpb24KICAqCi0gKiBEaXNrIGFycmF5IGZvciA4TEQgbG9naWNhbCBkcml2ZXMgd2l0aCB1cHRvIDggc3BhbnMKKyAqIERpc2sgYXJyYXkgZm9yIDhMRCBsb2dpY2FsIGRyaXZlcyB3aXRoIHVwIHRvIDggc3BhbnMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogCXVpbnQ4X3QJCQludW1sZHJ2OwpAQCAtNzM3LDcgKzczNyw3IEBACiAgKiBAbGRydgk6IGxvZ2ljYWwgZHJpdmVzIGluZm9ybWF0aW9uCiAgKiBAcGRydgk6IHBoeXNpY2FsIGRyaXZlcyBpbmZvcm1hdGlvbgogICoKLSAqIERpc2sgYXJyYXkgZm9yIDhMRCBsb2dpY2FsIGRyaXZlcyB3aXRoIHVwdG8gNCBzcGFucworICogRGlzayBhcnJheSBmb3IgOExEIGxvZ2ljYWwgZHJpdmVzIHdpdGggdXAgdG8gNCBzcGFucwogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAJdWludDhfdAkJCW51bWxkcnY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbWJveC5jIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX21ib3guYwppbmRleCA1NzA4Y2IyLi4xZGJhMzI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbWJveC5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9tYm94LmMKQEAgLTI2ODksNyArMjY4OSw3IEBACiAJCQkJKE1CT1hfUkVTRVRfV0FJVCArIE1CT1hfUkVTRVRfRVhUX1dBSVQpIC0gaSkpOwogCQl9CiAKLQkJLy8gYmFpbG91dCBpZiBubyByZWNvdmVyeSBoYXBwZW5kZWQgaW4gcmVzZXQgdGltZQorCQkvLyBiYWlsb3V0IGlmIG5vIHJlY292ZXJ5IGhhcHBlbmVkIGluIHJlc2V0IHRpbWUKIAkJaWYgKGFkYXB0ZXItPm91dHN0YW5kaW5nX2NtZHMgPT0gMCkgewogCQkJYnJlYWs7CiAJCX0KQEAgLTM0NTIsNyArMzQ1Miw3IEBACiAgKiBtZWdhcmFpZF9tYm94X3NldHVwX2RldmljZV9tYXAgLSBtYW5hZ2UgZGV2aWNlIGlkcwogICogQGFkYXB0ZXIJOiBEcml2ZXIncyBzb2Z0IHN0YXRlCiAgKgotICogTWFuYW5nZSB0aGUgZGV2aWNlIGlkcyB0byBoYXZlIGFuIGFwcHJvcHJhaXRlIG1hcHBpbmcgYmV0d2VlbiB0aGUga2VybmVsCisgKiBNYW5hbmdlIHRoZSBkZXZpY2UgaWRzIHRvIGhhdmUgYW4gYXBwcm9wcmlhdGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBrZXJuZWwKICAqIHNjc2kgYWRkcmVzc2VzIGFuZCBtZWdhcmFpZCBzY3NpIGFuZCBsb2dpY2FsIGRyaXZlIGFkZHJlc3Nlcy4gV2UgZXhwb3J0CiAgKiBzY3NpIGRldmljZXMgb24gdGhlaXIgYWN0dWFsIGFkZHJlc3Nlcywgd2hlcmVhcyB0aGUgbG9naWNhbCBkcml2ZXMgYXJlCiAgKiBleHBvcnRlZCBvbiBhIHZpcnR1YWwgc2NzaSBjaGFubmVsLgpAQCAtMzk3Myw3ICszOTczLDcgQEAKICAqIE5PVEU6IFRoZSBjb21tYW5kcyBpc3N1YW5jZSBmdW5jdGlvbmFsaXR5IGlzIG5vdCBnZW5lcmFsaXplZCBhbmQKICAqIGltcGxlbWVudGVkIGluIGNvbnRleHQgb2YgImdldCBsZCBtYXAiIGNvbW1hbmQgb25seS4gSWYgcmVxdWlyZWQsIHRoZQogICogY29tbWFuZCBpc3N1YW5jZSBsb2dpY2FsIGNhbiBiZSB0cml2aWFsbHkgcHVsbGVkIG91dCBhbmQgaW1wbGVtZW50ZWQgYXMgYQotICogc3RhbmRhbG9uZSBsaWJhcnkuIEZvciBub3csIHRoaXMgc2hvdWxkIHN1ZmZpY2Ugc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIKKyAqIHN0YW5kYWxvbmUgbGlicmFyeS4gRm9yIG5vdywgdGhpcyBzaG91bGQgc3VmZmljZSBzaW5jZSB0aGVyZSBpcyBubyBvdGhlcgogICogdXNlciBvZiB0aGlzIGludGVyZmFjZS4KICAqCiAgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5oIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5oCmluZGV4IDYzNWIyMjguLjA0NmRjYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaAorKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKQEAgLTEzNDcsNyArMTM0Nyw3IEBACiAJc3RydWN0IHRpbWVyX2xpc3QgaW9fY29tcGxldGlvbl90aW1lcjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGludGVybmFsX3Jlc2V0X3BlbmRpbmdfcTsKIAotCS8qIFB0ciB0byBoYmEgc3BlY2ZpYyBpbmZvcm1hdGlvbiAqLworCS8qIFB0ciB0byBoYmEgc3BlY2lmaWMgaW5mb3JtYXRpb24gKi8KIAl2b2lkICpjdHJsX2NvbnRleHQ7CiAJdTgJbXNpX2ZsYWc7CiAJc3RydWN0IG1zaXhfZW50cnkgbXNpeGVudHJ5OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYwppbmRleCBiYmQxMGM4Li42NmQ0Y2VhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYworKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYwpAQCAtMTY5OCw3ICsxNjk4LDcgQEAKICAqIG1lZ2FzYXNfd2FpdF9mb3Jfb3V0c3RhbmRpbmcgLQlXYWl0IGZvciBhbGwgb3V0c3RhbmRpbmcgY21kcwogICogQGluc3RhbmNlOgkJCQlBZGFwdGVyIHNvZnQgc3RhdGUKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciB1cHRvIE1FR0FTQVNfUkVTRVRfV0FJVF9USU1FIHNlY29uZHMgZm9yIEZXIHRvCisgKiBUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciB1cCB0byBNRUdBU0FTX1JFU0VUX1dBSVRfVElNRSBzZWNvbmRzIGZvciBGVyB0bwogICogY29tcGxldGUgYWxsIGl0cyBvdXRzdGFuZGluZyBjb21tYW5kcy4gUmV0dXJucyBlcnJvciBpZiBvbmUgb3IgbW9yZSBJT3MKICAqIGFyZSBwZW5kaW5nIGFmdGVyIHRoaXMgdGltZSBwZXJpb2QuIEl0IGFsc28gbWFya3MgdGhlIGNvbnRyb2xsZXIgZGVhZC4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXBpL21waTJfaW5pdC5oIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXBpL21waTJfaW5pdC5oCmluZGV4IDIwZTZiODguLjE2NTQ1NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21waS9tcGkyX2luaXQuaAorKysgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcGkvbXBpMl9pbml0LmgKQEAgLTIxLDcgKzIxLDcgQEAKICAqICAwNS0yMS0wOCAgMDIuMDAuMDUgIEZpeGVkIHR5cG8gaW4gbmFtZSBvZiBNcGkyU2VwUmVxdWVzdF90LgogICogIDEwLTAyLTA4ICAwMi4wMC4wNiAgUmVtb3ZlZCBVbnRhZ2dlZCBhbmQgTm8gRGlzY29ubmVjdCB2YWx1ZXMgZnJvbSBTQ1NJIElPCiAgKiAgICAgICAgICAgICAgICAgICAgICBDb250cm9sIGZpZWxkIFRhc2sgQXR0cmlidXRlIGZsYWdzLgotICogICAgICAgICAgICAgICAgICAgICAgTW92ZWQgTFVOIGZpZWxkIGRlZmluZXMgdG8gbXBpMi5oIGJlY2FzdWUgdGhleSBhcmUKKyAqICAgICAgICAgICAgICAgICAgICAgIE1vdmVkIExVTiBmaWVsZCBkZWZpbmVzIHRvIG1waTIuaCBiZWNhdXNlIHRoZXkgYXJlCiAgKiAgICAgICAgICAgICAgICAgICAgICBjb21tb24gdG8gbWFueSBzdHJ1Y3R1cmVzLgogICogIDA1LTA2LTA5ICAwMi4wMC4wNyAgQ2hhbmdlZCB0YXNrIG1hbmFnZW1lbnQgdHlwZSBvZiBRdWVyeSBVbml0IEF0dGVudGlvbiB0bwogICogICAgICAgICAgICAgICAgICAgICAgUXVlcnkgQXN5bmNocm9ub3VzIEV2ZW50LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19iYXNlLmMgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2Jhc2UuYwppbmRleCA1ZTAwMWZmLi4zMzQ2MzU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2Jhc2UuYworKysgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2Jhc2UuYwpAQCAtOTI1LDcgKzkyNSw3IEBACiB9CiAKIC8qKgotICogbXB0MnNhc19iYXNlX3JlbGVhc2VfY2FsbGJhY2tfaGFuZGxlciAtIGNsZWFyIGludGVydXB0IGNhbGxiYWNrIGhhbmRsZXIKKyAqIG1wdDJzYXNfYmFzZV9yZWxlYXNlX2NhbGxiYWNrX2hhbmRsZXIgLSBjbGVhciBpbnRlcnJ1cHQgY2FsbGJhY2sgaGFuZGxlcgogICogQGNiX2lkeDogY2FsbGJhY2sgaW5kZXgKICAqCiAgKiBSZXR1cm4gbm90aGluZy4KQEAgLTExMTMsNyArMTExMyw3IEBACiAgKiBAaW9jOiBwZXIgYWRhcHRlciBvYmplY3QKICAqCiAgKiBDaGVjayB0byBzZWUgaWYgY2FyZCBpcyBjYXBhYmxlIG9mIE1TSVgsIGFuZCBzZXQgbnVtYmVyCi0gKiBvZiBhdmFsaWFibGUgbXNpeCB2ZWN0b3JzCisgKiBvZiBhdmFpbGFibGUgbXNpeCB2ZWN0b3JzCiAgKi8KIHN0YXRpYyBpbnQKIF9iYXNlX2NoZWNrX2VuYWJsZV9tc2l4KHN0cnVjdCBNUFQyU0FTX0FEQVBURVIgKmlvYykKQEAgLTE1OTUsNyArMTU5NSw3IEBACiAKIAogLyoqCi0gKiBtcHQyc2FzX2Jhc2VfcHV0X3NtaWRfaGlfcHJpb3JpdHkgLSBzZW5kIFRhc2sgTWFuYWdtZW50IHJlcXVlc3QgdG8gZmlybXdhcmUKKyAqIG1wdDJzYXNfYmFzZV9wdXRfc21pZF9oaV9wcmlvcml0eSAtIHNlbmQgVGFzayBNYW5hZ2VtZW50IHJlcXVlc3QgdG8gZmlybXdhcmUKICAqIEBpb2M6IHBlciBhZGFwdGVyIG9iamVjdAogICogQHNtaWQ6IHN5c3RlbSByZXF1ZXN0IG1lc3NhZ2UgaW5kZXgKICAqCkBAIC0yNTk5LDcgKzI1OTksNyBAQAogCQlpbnRfc3RhdHVzID0gcmVhZGwoJmlvYy0+Y2hpcC0+SG9zdEludGVycnVwdFN0YXR1cyk7CiAJCWlmIChpbnRfc3RhdHVzICYgTVBJMl9ISVNfSU9DMlNZU19EQl9TVEFUVVMpIHsKIAkJCWRoc3ByaW50ayhpb2MsIHByaW50ayhNUFQyU0FTX0lORk9fRk1UICIlczogIgotCQkJICAgICJzdWNjZXNzZnVsbCBjb3VudCglZCksIHRpbWVvdXQoJWQpXG4iLCBpb2MtPm5hbWUsCisJCQkgICAgInN1Y2Nlc3NmdWwgY291bnQoJWQpLCB0aW1lb3V0KCVkKVxuIiwgaW9jLT5uYW1lLAogCQkJICAgIF9fZnVuY19fLCBjb3VudCwgdGltZW91dCkpOwogCQkJcmV0dXJuIDA7CiAJCX0KQEAgLTI2NDAsNyArMjY0MCw3IEBACiAJCWludF9zdGF0dXMgPSByZWFkbCgmaW9jLT5jaGlwLT5Ib3N0SW50ZXJydXB0U3RhdHVzKTsKIAkJaWYgKCEoaW50X3N0YXR1cyAmIE1QSTJfSElTX1NZUzJJT0NfREJfU1RBVFVTKSkgewogCQkJZGhzcHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgIiVzOiAiCi0JCQkgICAgInN1Y2Nlc3NmdWxsIGNvdW50KCVkKSwgdGltZW91dCglZClcbiIsIGlvYy0+bmFtZSwKKwkJCSAgICAic3VjY2Vzc2Z1bCBjb3VudCglZCksIHRpbWVvdXQoJWQpXG4iLCBpb2MtPm5hbWUsCiAJCQkgICAgX19mdW5jX18sIGNvdW50LCB0aW1lb3V0KSk7CiAJCQlyZXR1cm4gMDsKIAkJfSBlbHNlIGlmIChpbnRfc3RhdHVzICYgTVBJMl9ISVNfSU9DMlNZU19EQl9TVEFUVVMpIHsKQEAgLTI2ODgsNyArMjY4OCw3IEBACiAJCWRvb3JiZWxsX3JlZyA9IHJlYWRsKCZpb2MtPmNoaXAtPkRvb3JiZWxsKTsKIAkJaWYgKCEoZG9vcmJlbGxfcmVnICYgTVBJMl9ET09SQkVMTF9VU0VEKSkgewogCQkJZGhzcHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgIiVzOiAiCi0JCQkgICAgInN1Y2Nlc3NmdWxsIGNvdW50KCVkKSwgdGltZW91dCglZClcbiIsIGlvYy0+bmFtZSwKKwkJCSAgICAic3VjY2Vzc2Z1bCBjb3VudCglZCksIHRpbWVvdXQoJWQpXG4iLCBpb2MtPm5hbWUsCiAJCQkgICAgX19mdW5jX18sIGNvdW50LCB0aW1lb3V0KSk7CiAJCQlyZXR1cm4gMDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jb25maWcuYyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY29uZmlnLmMKaW5kZXggNmFmZDY3Yi4uNjg2MTI0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jb25maWcuYworKysgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2NvbmZpZy5jCkBAIC05Myw3ICs5Myw3IEBACiAgKiBAbXBpX3JlcGx5OiByZXBseSBtZXNzYWdlIGZyYW1lCiAgKiBDb250ZXh0OiBub25lLgogICoKLSAqIEZ1bmN0aW9uIGZvciBkaXNwbGF5aW5nIGRlYnVnIGluZm8gaGVscGZ1bGwgd2hlbiBkZWJ1Z2dpbmcgaXNzdWVzCisgKiBGdW5jdGlvbiBmb3IgZGlzcGxheWluZyBkZWJ1ZyBpbmZvIGhlbHBmdWwgd2hlbiBkZWJ1Z2dpbmcgaXNzdWVzCiAgKiBpbiB0aGlzIG1vZHVsZS4KICAqLwogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY3RsLmMgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2N0bC5jCmluZGV4IGU5MmI3N2EuLjFjNmQyYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY3RsLmMKKysrIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jdGwuYwpAQCAtMTE2LDcgKzExNiw3IEBACiAgKiBAbXBpX3JlcGx5OiByZXBseSBtZXNzYWdlIGZyYW1lCiAgKiBDb250ZXh0OiBub25lLgogICoKLSAqIEZ1bmN0aW9uIGZvciBkaXNwbGF5aW5nIGRlYnVnIGluZm8gaGVscGZ1bGwgd2hlbiBkZWJ1Z2dpbmcgaXNzdWVzCisgKiBGdW5jdGlvbiBmb3IgZGlzcGxheWluZyBkZWJ1ZyBpbmZvIGhlbHBmdWwgd2hlbiBkZWJ1Z2dpbmcgaXNzdWVzCiAgKiBpbiB0aGlzIG1vZHVsZS4KICAqLwogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfc2NzaWguYyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfc2NzaWguYwppbmRleCA2Y2ViNzc1Li5kMjA2NGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX3Njc2loLmMKKysrIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19zY3NpaC5jCkBAIC0zOTcsNyArMzk3LDcgQEAKICAqIEBpc19yYWlkOiBbZmxhZ10gMSA9IHJhaWQgb2JqZWN0LCAwID0gc2FzIG9iamVjdAogICoKICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIGRldmljZSBzaG91bGQgYmUgZmlyc3QgcmVwb3J0ZWQgZGV2aWNlIHRvCi0gKiB0byBzY3NpLW1sIG9yIHNhcyB0cmFuc3BvcnQsIHRoaXMgcHVycG9zZSBpcyBmb3IgcGVyc2lzdGFudCBib290IGRldmljZS4KKyAqIHRvIHNjc2ktbWwgb3Igc2FzIHRyYW5zcG9ydCwgdGhpcyBwdXJwb3NlIGlzIGZvciBwZXJzaXN0ZW50IGJvb3QgZGV2aWNlLgogICogVGhlcmUgYXJlIHByaW1hcnksIGFsdGVybmF0ZSwgYW5kIGN1cnJlbnQgZW50cmllcyBpbiBiaW9zIHBhZ2UgMi4gVGhlIG9yZGVyCiAgKiBwcmlvcml0eSBpcyBwcmltYXJ5LCBhbHRlcm5hdGUsIHRoZW4gY3VycmVudC4gIFRoaXMgcm91dGluZSBzYXZlcwogICogdGhlIGNvcnJlc3BvbmRpbmcgZGV2aWNlIG9iamVjdCBhbmQgaXNfcmFpZCBmbGFnIGluIHRoZSBpb2Mgb2JqZWN0LgpAQCAtMjY3MSwxMCArMjY3MSwxMCBAQAogICogQGhhbmRsZTogZGV2aWNlIGhhbmRsZQogICogQ29udGV4dDogaW50ZXJydXB0IHRpbWUuCiAgKgotICogVGhpcyBjb2RlIGlzIHRvIGluaXRpYXRlIHRoZSBkZXZpY2UgcmVtb3ZhbCBoYW5kc2hha2UgcHJvdG9jYWwKKyAqIFRoaXMgY29kZSBpcyB0byBpbml0aWF0ZSB0aGUgZGV2aWNlIHJlbW92YWwgaGFuZHNoYWtlIHByb3RvY29sCiAgKiB3aXRoIGNvbnRyb2xsZXIgZmlybXdhcmUuICBUaGlzIGZ1bmN0aW9uIHdpbGwgaXNzdWUgdGFyZ2V0IHJlc2V0CiAgKiB1c2luZyBoaWdoIHByaW9yaXR5IHJlcXVlc3QgcXVldWUuICBJdCB3aWxsIHNlbmQgYSBzYXMgaW91bml0Ci0gKiBjb250cm9sbCByZXF1ZXN0IChNUEkyX1NBU19PUF9SRU1PVkVfREVWSUNFKSBmcm9tIHRoaXMgY29tcGxldGlvbi4KKyAqIGNvbnRyb2wgcmVxdWVzdCAoTVBJMl9TQVNfT1BfUkVNT1ZFX0RFVklDRSkgZnJvbSB0aGlzIGNvbXBsZXRpb24uCiAgKgogICogVGhpcyBpcyBkZXNpZ25lZCB0byBzZW5kIG11bGlwbGUgdGFzayBtYW5hZ2VtZW50IHJlcXVlc3QgYXQgdGhlIHNhbWUKICAqIHRpbWUgdG8gdGhlIGZpZm8uIElmIHRoZSBmaWZvIGlzIGZ1bGwsIHdlIHdpbGwgYXBwZW5kIHRoZSByZXF1ZXN0LApAQCAtMjc0OSw5ICsyNzQ5LDkgQEAKICAqIEByZXBseTogcmVwbHkgbWVzc2FnZSBmcmFtZShsb3dlciAzMmJpdCBhZGRyKQogICogQ29udGV4dDogaW50ZXJydXB0IHRpbWUuCiAgKgotICogVGhpcyBpcyB0aGUgc2FzIGlvdW5pdCBjb250cm9sbCBjb21wbGV0aW9uIHJvdXRpbmUuCisgKiBUaGlzIGlzIHRoZSBzYXMgaW91bml0IGNvbnRyb2wgY29tcGxldGlvbiByb3V0aW5lLgogICogVGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIGNvZGUgdG8gaW5pdGlhdGUgdGhlIGRldmljZSByZW1vdmFsCi0gKiBoYW5kc2hha2UgcHJvdG9jYWwgd2l0aCBjb250cm9sbGVyIGZpcm13YXJlLgorICogaGFuZHNoYWtlIHByb3RvY29sIHdpdGggY29udHJvbGxlciBmaXJtd2FyZS4KICAqCiAgKiBSZXR1cm4gMSBtZWFuaW5nIG1mIHNob3VsZCBiZSBmcmVlZCBmcm9tIF9iYXNlX2ludGVycnVwdAogICogICAgICAgIDAgbWVhbnMgdGhlIG1mIGlzIGZyZWVkIGZyb20gdGhpcyBmdW5jdGlvbi4KQEAgLTI4NzgsOCArMjg3OCw4IEBACiAgKgogICogVGhpcyBpcyB0aGUgdGFyZ2V0IHJlc2V0IGNvbXBsZXRpb24gcm91dGluZS4KICAqIFRoaXMgY29kZSBpcyBwYXJ0IG9mIHRoZSBjb2RlIHRvIGluaXRpYXRlIHRoZSBkZXZpY2UgcmVtb3ZhbAotICogaGFuZHNoYWtlIHByb3RvY2FsIHdpdGggY29udHJvbGxlciBmaXJtd2FyZS4KLSAqIEl0IHdpbGwgc2VuZCBhIHNhcyBpb3VuaXQgY29udHJvbGwgcmVxdWVzdCAoTVBJMl9TQVNfT1BfUkVNT1ZFX0RFVklDRSkKKyAqIGhhbmRzaGFrZSBwcm90b2NvbCB3aXRoIGNvbnRyb2xsZXIgZmlybXdhcmUuCisgKiBJdCB3aWxsIHNlbmQgYSBzYXMgaW91bml0IGNvbnRyb2wgcmVxdWVzdCAoTVBJMl9TQVNfT1BfUkVNT1ZFX0RFVklDRSkKICAqCiAgKiBSZXR1cm4gMSBtZWFuaW5nIG1mIHNob3VsZCBiZSBmcmVlZCBmcm9tIF9iYXNlX2ludGVycnVwdAogICogICAgICAgIDAgbWVhbnMgdGhlIG1mIGlzIGZyZWVkIGZyb20gdGhpcyBmdW5jdGlvbi4KQEAgLTI5ODQsNyArMjk4NCw3IEBACiAgKgogICogVGhpcyByb3V0aW5lIGFkZGVkIHRvIGJldHRlciBoYW5kbGUgY2FibGUgYnJlYWtlci4KICAqCi0gKiBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgZHJpdmVyIHJlY2lldmVzIG11bHRpcGxlIGV4cGFuZGVyCisgKiBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgZHJpdmVyIHJlY2VpdmVzIG11bHRpcGxlIGV4cGFuZGVyCiAgKiBhZGQgYW5kIGRlbGV0ZSBldmVudHMgaW4gYSBzaW5nbGUgc2hvdC4gIFdoZW4gdGhlcmUgaXMgYSBkZWxldGUgZXZlbnQKICAqIHRoZSByb3V0aW5lIHdpbGwgdm9pZCBhbnkgcGVuZGluZyBhZGQgZXZlbnRzIHdhaXRpbmcgaW4gdGhlIGV2ZW50IHF1ZXVlLgogICoKQEAgLTM1MTEsNyArMzUxMSw3IEBACiAKICNpZmRlZiBDT05GSUdfU0NTSV9NUFQyU0FTX0xPR0dJTkcKIC8qKgotICogX3Njc2loX3Njc2lfaW9jX2luZm8gLSB0cmFuc2xhdGVkIG5vbi1zdWNjZXNzZnVsbCBTQ1NJX0lPIHJlcXVlc3QKKyAqIF9zY3NpaF9zY3NpX2lvY19pbmZvIC0gdHJhbnNsYXRlZCBub24tc3VjY2Vzc2Z1bCBTQ1NJX0lPIHJlcXVlc3QKICAqIEBpb2M6IHBlciBhZGFwdGVyIG9iamVjdAogICogQHNjbWQ6IHBvaW50ZXIgdG8gc2NzaSBjb21tYW5kIG9iamVjdAogICogQG1waV9yZXBseTogcmVwbHkgbWYgcGF5bG9hZCByZXR1cm5lZCBmcm9tIGZpcm13YXJlCkBAIC01MTM4LDcgKzUxMzgsNyBAQAogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHI7CiAKLQlkZXd0cHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgImJyb2FkY2FzdCBwcmltYXRpdmU6ICIKKwlkZXd0cHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgImJyb2FkY2FzdCBwcmltaXRpdmU6ICIKIAkgICAgInBoeSBudW1iZXIoJWQpLCB3aWR0aCglZClcbiIsIGlvYy0+bmFtZSwgZXZlbnRfZGF0YS0+UGh5TnVtLAogCSAgICBldmVudF9kYXRhLT5Qb3J0V2lkdGgpKTsKIAlkdG1wcmludGsoaW9jLCBwcmludGsoTVBUMlNBU19JTkZPX0ZNVCAiJXM6IGVudGVyXG4iLCBpb2MtPm5hbWUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMgYi9kcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMKaW5kZXggNDZjYzM4Mi4uODM1ZDhkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL25jcjUzYzh4eC5jCisrKyBiL2RyaXZlcnMvc2NzaS9uY3I1M2M4eHguYwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAKIH0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08IFJFU0VMX1RBRyA+LS0tLS0tLS0tLS0tLS0tLS0tLSovLHsKIAkvKgogCSoqCVJlYWQgSURFTlRJRlkgKyBTSU1QTEUgKyBUQUcgdXNpbmcgYSBzaW5nbGUgTU9WRS4KLQkqKglBZ3Jlc3NpdmUgb3B0aW1pemF0aW9uLCBpcydudCBpdD8KKwkqKglBZ2dyZXNzaXZlIG9wdGltaXphdGlvbiwgaXMnbnQgaXQ/CiAJKioJTm8gbmVlZCB0byB0ZXN0IHRoZSBTSU1QTEUgVEFHIG1lc3NhZ2UsIHNpbmNlIHRoZSAKIAkqKglkcml2ZXIgb25seSBzdXBwb3J0cyBjb25mb3JtYW50IGRldmljZXMgZm9yIHRhZ3MuIDstKQogCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbnNwMzIuYyBiL2RyaXZlcnMvc2NzaS9uc3AzMi5jCmluZGV4IDZiOGIwMjEuLmY2YTUwYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9uc3AzMi5jCisrKyBiL2RyaXZlcnMvc2NzaS9uc3AzMi5jCkBAIC0xMjg4LDcgKzEyODgsNyBAQAogCQkJbnNwMzJfZGJnKE5TUDMyX0RFQlVHX0lOVFIsICJTU0FDSz0weCVseCIsIAogCQkJCSAgICBuc3AzMl9yZWFkNChiYXNlLCBTQVZFRF9TQUNLX0NOVCkpOwogCi0JCQlzY3NpX3NldF9yZXNpZChTQ3BudCwgMCk7IC8qIGFsbCBkYXRhIHRyYW5zZmVyZWQhICovCisJCQlzY3NpX3NldF9yZXNpZChTQ3BudCwgMCk7IC8qIGFsbCBkYXRhIHRyYW5zZmVycmVkISAqLwogCQl9CiAKIAkJLyoKQEAgLTE2MzAsNyArMTYzMCw3IEBACiAKIAkJCS8qCiAJCQkgKiBJZiBTQVZFRFNBQ0tDTlQgPT0gMCwgaXQgbWVhbnMgU2F2ZWREYXRhUG9pbnRlciBpcwotCQkJICogY29tZSBhZnRlciBkYXRhIHRyYW5zZmVyaW5nLgorCQkJICogY29tZSBhZnRlciBkYXRhIHRyYW5zZmVycmluZy4KIAkJCSAqLwogCQkJaWYgKHNfc2Fja2xlbiA+IDApIHsKIAkJCQkvKgpAQCAtMTc4NSw3ICsxNzg1LDcgQEAKIAkJICAgdGhlIGhlYWQgZWxlbWVudCBvZiB0aGUgc2cuIHJlc3RsZW4gaXMgY29ycmVjdGx5IGNhbGN1bGF0ZWQuICovCiAJfQogCi0JLyogY2FsY3VsYXRlIHRoZSByZXN0IGxlbmd0aCBmb3IgdHJhbnNmZXJpbmcgKi8KKwkvKiBjYWxjdWxhdGUgdGhlIHJlc3QgbGVuZ3RoIGZvciB0cmFuc2ZlcnJpbmcgKi8KIAlyZXN0bGVuID0gc2VudGxlbiAtIHNfc2Fja2xlbjsKIAogCS8qIHVwZGF0ZSBhZGp1c3RpbmcgY3VycmVudCBTRyB0YWJsZSBlbnRyeSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL25zcDMyLmggYi9kcml2ZXJzL3Njc2kvbnNwMzIuaAppbmRleCA5NTY1YWNmLi5jMDIyMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbnNwMzIuaAorKysgYi9kcml2ZXJzL3Njc2kvbnNwMzIuaApAQCAtNTA3LDcgKzUwNyw3IEBACiAvKgogICogU0NTSSBUQVJHRVQvTFVOIGRlZmluaXRpb24KICAqLwotI2RlZmluZSBOU1AzMl9IT1NUX1NDU0lJRCAgICA3ICAvKiBTQ1NJIGluaXRpYXRvciBpcyBldmVyeXRpbWUgZGVmaW5lZCBhcyA3ICovCisjZGVmaW5lIE5TUDMyX0hPU1RfU0NTSUlEICAgIDcgIC8qIFNDU0kgaW5pdGlhdG9yIGlzIGV2ZXJ5IHRpbWUgZGVmaW5lZCBhcyA3ICovCiAjZGVmaW5lIE1BWF9UQVJHRVQJICAgICA4CiAjZGVmaW5lIE1BWF9MVU4JCSAgICAgOAkvKiBYWFg6IEluIFNQSTMsIG1heCBudW1iZXIgb2YgTFVOIGlzIDY0LiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvb3NzdC5jIGIvZHJpdmVycy9zY3NpL29zc3QuYwppbmRleCA1MjFlMjE4Li41OGY1YmU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvb3NzdC5jCisrKyBiL2RyaXZlcnMvc2NzaS9vc3N0LmMKQEAgLTEzNjYsNyArMTM2Niw3IEBACiAvKiBUaGUgdmFsdWVzIGJlbG93IGFyZSBiYXNlZCBvbiB0aGUgT25TdHJlYW0gZnJhbWUgcGF5bG9hZCBzaXplIG9mIDMySyA9PSAyKioxNSwKICAqIHRoYXQgaXMsIE9TU1RfRlJBTUVfU0hJRlQgKyBPU1NUX1NFQ1RPUl9TSElGVCBtdXN0IGJlIDE1LiBXaXRoIGEgbWluaW11bSBibG9jawogICogc2l6ZSBvZiA1MTIgYnl0ZXMsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byByZXNvbHZlIDMySy81MTIgPT0gNjQgPT0gMioqNiBwb3NpdGlvbnMKLSAqIGluc2lkZSBlYWNoIGZyYW1lLiBGaW5hbHksIE9TU1RfU0VDVE9SX01BU0sgPT0gMioqT1NTVF9GUkFNRV9TSElGVCAtIDEuCisgKiBpbnNpZGUgZWFjaCBmcmFtZS4gRmluYWxseSwgT1NTVF9TRUNUT1JfTUFTSyA9PSAyKipPU1NUX0ZSQU1FX1NISUZUIC0gMS4KICAqLwogI2RlZmluZSBPU1NUX0ZSQU1FX1NISUZUICA2CiAjZGVmaW5lIE9TU1RfU0VDVE9SX1NISUZUIDkKQEAgLTMxMzEsNyArMzEzMSw3IEBACiAJCX0KICNpZiBERUJVRwogCQlpZiAoZGVidWdnaW5nKQotCQkJcHJpbnRrKE9TU1RfREVCX01TRyAiJXM6RDogRmx1c2hpbmcgJWQgYnl0ZXMsIFRyYW5zZmVyaW5nICVkIGJ5dGVzIGluICVkIGxibG9ja3MuXG4iLAorCQkJcHJpbnRrKE9TU1RfREVCX01TRyAiJXM6RDogRmx1c2hpbmcgJWQgYnl0ZXMsIFRyYW5zZmVycmluZyAlZCBieXRlcyBpbiAlZCBsYmxvY2tzLlxuIiwKIAkJCSAgCQkJIG5hbWUsIG9mZnNldCwgdHJhbnNmZXIsIGJsa3MpOwogI2VuZGlmCiAKQEAgLTM4MTEsNyArMzgxMSw3IEBACiAKIAkJCWlmICh0cmFuc2ZlciA9PSAwKSB7CiAJCQkJcHJpbnRrKEtFUk5fV0FSTklORwotCQkJCSAgIiVzOlc6IE5vdGhpbmcgY2FuIGJlIHRyYW5zZmVyZWQsIHJlcXVlc3RlZCAlWmQsIHRhcGUgYmxvY2sgc2l6ZSAoJWQlYykuXG4iLAorCQkJCSAgIiVzOlc6IE5vdGhpbmcgY2FuIGJlIHRyYW5zZmVycmVkLCByZXF1ZXN0ZWQgJVpkLCB0YXBlIGJsb2NrIHNpemUgKCVkJWMpLlxuIiwKIAkJCSAgIAkJbmFtZSwgY291bnQsIFNUcC0+YmxvY2tfc2l6ZSA8IDEwMjQ/CiAJCQkJCVNUcC0+YmxvY2tfc2l6ZTpTVHAtPmJsb2NrX3NpemUvMTAyNCwKIAkJCQkgICAgICAgCVNUcC0+YmxvY2tfc2l6ZTwxMDI0PydiJzonaycpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL29zc3QuaCBiL2RyaXZlcnMvc2NzaS9vc3N0LmgKaW5kZXggMTFkMjZjNS4uYjRmZWE5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL29zc3QuaAorKysgYi9kcml2ZXJzL3Njc2kvb3NzdC5oCkBAIC00MTMsNyArNDEzLDcgQEAKICAqIEFVWAogICovCiB0eXBlZGVmIHN0cnVjdCBvc19hdXhfcyB7Ci0gICAgICAgIF9fYmUzMiAgICAgICAgICBmb3JtYXRfaWQ7ICAgICAgICAgICAgICAvKiBoYXJkd2FyZSBjb21wYWJpbGl0eSBBVVggaXMgYmFzZWQgb24gKi8KKyAgICAgICAgX19iZTMyICAgICAgICAgIGZvcm1hdF9pZDsgICAgICAgICAgICAgIC8qIGhhcmR3YXJlIGNvbXBhdGliaWxpdHkgQVVYIGlzIGJhc2VkIG9uICovCiAgICAgICAgIGNoYXIgICAgICAgICAgICBhcHBsaWNhdGlvbl9zaWdbNF07ICAgICAvKiBkcml2ZXIgdXNlZCB0byB3cml0ZSB0aGlzIG1lZGlhICovCiAgICAgICAgIF9fYmUzMiAgICAgICAgICBoZHdyOyAgICAgICAgICAgICAgICAgICAvKiByZXNlcnZlZCAqLwogICAgICAgICBfX2JlMzIgICAgICAgICAgdXBkYXRlX2ZyYW1lX2NudHI7ICAgICAgLyogZm9yIGNvbmZpZ3VyYXRpb24gZnJhbWUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wY21jaWEvbnNwX2NzLmMgYi9kcml2ZXJzL3Njc2kvcGNtY2lhL25zcF9jcy5jCmluZGV4IGJlM2YzM2QuLjU0YmRmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9wY21jaWEvbnNwX2NzLmMKKysrIGIvZHJpdmVycy9zY3NpL3BjbWNpYS9uc3BfY3MuYwpAQCAtNzQyLDcgKzc0Miw3IEBACiAKIAkJcmVzID0gbnNwX2ZpZm9fY291bnQoU0NwbnQpIC0gb2NvdW50OwogCQkvL25zcF9kYmcoTlNQX0RFQlVHX0RBVEFfSU8sICJwdHI9MHglcCB0aGlzPTB4JXggb2NvdW50PTB4JXggcmVzPTB4JXgiLCBTQ3BudC0+U0NwLnB0ciwgU0NwbnQtPlNDcC50aGlzX3Jlc2lkdWFsLCBvY291bnQsIHJlcyk7Ci0JCWlmIChyZXMgPT0gMCkgeyAvKiBpZiBzb21lIGRhdGEgYXZpbGFibGUgPyAqLworCQlpZiAocmVzID09IDApIHsgLyogaWYgc29tZSBkYXRhIGF2YWlsYWJsZSA/ICovCiAJCQlpZiAoc3RhdCA9PSBCVVNQSEFTRV9EQVRBX0lOKSB7IC8qIHBoYXNlIGNoYW5nZWQ/ICovCiAJCQkJLy9uc3BfZGJnKE5TUF9ERUJVR19EQVRBX0lPLCAiIHdhaXQgZm9yIGRhdGEgdGhpcz0lZCIsIFNDcG50LT5TQ3AudGhpc19yZXNpZHVhbCk7CiAJCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jCmluZGV4IDE4YjZjNTUuLjhiN2RiMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jCisrKyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jCkBAIC0zMzksNyArMzM5LDcgQEAKIAogLyoqCiAgKiBiYXI0X3NoaWZ0IC0gZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHNoaWZ0IEJBUiBiYXNlIGFkZHJlc3MKLSAqIEBwbTgwMDFfaGEgOiBvdXIgaGJhIGNhcmQgaW5mb21hdGlvbgorICogQHBtODAwMV9oYSA6IG91ciBoYmEgY2FyZCBpbmZvcm1hdGlvbgogICogQHNoaWZ0VmFsdWUgOiBzaGlmdGluZyB2YWx1ZSBpbiBtZW1vcnkgYmFyLgogICovCiBzdGF0aWMgaW50IGJhcjRfc2hpZnQoc3RydWN0IHBtODAwMV9oYmFfaW5mbyAqcG04MDAxX2hhLCB1MzIgc2hpZnRWYWx1ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5oIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmgKaW5kZXggODMzYTUyMC4uOTA5MTMyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmgKKysrIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmgKQEAgLTIwOSw3ICsyMDksNyBAQAogCiAvKgogICogYnJpZWYgdGhlIGRhdGEgc3RydWN0dXJlIG9mIFNBVEEgQ29tcGxldGlvbiBSZXNwb25zZQotICogdXNlIHRvIGRpc2NyaWJlIHRoZSBzYXRhIHRhc2sgcmVzcG9uc2UgKDY0IGJ5dGVzKQorICogdXNlIHRvIGRlc2NyaWJlIHRoZSBzYXRhIHRhc2sgcmVzcG9uc2UgKDY0IGJ5dGVzKQogICovCiBzdHJ1Y3Qgc2F0YV9jb21wbGV0aW9uX3Jlc3AgewogCV9fbGUzMgl0YWc7CkBAIC05NTEsNyArOTUxLDcgQEAKICNkZWZpbmUgUENJRV9FVkVOVF9JTlRFUlJVUFQJCTB4MDAzMDQ0CiAjZGVmaW5lIFBDSUVfRVJST1JfSU5URVJSVVBUX0VOQUJMRQkweDAwMzA0OAogI2RlZmluZSBQQ0lFX0VSUk9SX0lOVEVSUlVQVAkJMHgwMDMwNEMKLS8qIHNpZ25hdHVyZSBkZWZpbnRpb24gZm9yIGhvc3Qgc2NyYXRjaCBwYWQwIHJlZ2lzdGVyICovCisvKiBzaWduYXR1cmUgZGVmaW5pdGlvbiBmb3IgaG9zdCBzY3JhdGNoIHBhZDAgcmVnaXN0ZXIgKi8KICNkZWZpbmUgU1BDX1NPRlRfUkVTRVRfU0lHTkFUVVJFCTB4MjUyYWNiY2QKIC8qIFNpZ25hdHVyZSBmb3IgU29mdCBSZXNldCAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaCBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5oCmluZGV4IGJkYjZiMjcuLmFhMDVlNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5oCisrKyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5oCkBAIC00NDUsNyArNDQ1LDcgQEAKIHN0cnVjdCBmd19jb250cm9sX2V4IHsKIAlzdHJ1Y3QgZndfY29udHJvbF9pbmZvICpmd19jb250cm9sOwogCXZvaWQJCQkqYnVmZmVyOy8qIGtlZXAgYnVmZmVyIHBvaW50ZXIgdG8gYmUKLQlmcmVlZCB3aGVuIHRoZSByZXNwb25jZSBjb21lcyovCisJZnJlZWQgd2hlbiB0aGUgcmVzcG9uc2UgY29tZXMqLwogCXZvaWQJCQkqdmlydEFkZHI7Lyoga2VlcCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIGRhdGEgKi8KIAl2b2lkCQkJKnVzckFkZHI7Lyoga2VlcCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlCiAJdXNlciBkYXRhICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jIGIvZHJpdmVycy9zY3NpL3BtY3JhaWQuYwppbmRleCBiY2Y4NThlLi45NmQ1YWQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmMKQEAgLTIxMyw3ICsyMTMsNyBAQAogICogcG1jcmFpZF9zbGF2ZV9jb25maWd1cmUgLSBDb25maWd1cmVzIGEgU0NTSSBkZXZpY2UKICAqIEBzY3NpX2Rldjogc2NzaSBkZXZpY2Ugc3RydWN0CiAgKgotICogVGhpcyBmdWNudGlvbiBpcyBleGVjdXRlZCBieSBTQ1NJIG1pZCBsYXllciBqdXN0IGFmdGVyIGEgZGV2aWNlIGlzIGZpcnN0CisgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IFNDU0kgbWlkIGxheWVyIGp1c3QgYWZ0ZXIgYSBkZXZpY2UgaXMgZmlyc3QKICAqIHNjYW5uZWQgKGkuZS4gaXQgaGFzIHJlc3BvbmRlZCB0byBhbiBJTlFVSVJZKS4gRm9yIFZTRVQgcmVzb3VyY2VzLCB0aGUKICAqIHRpbWVvdXQgdmFsdWUgKGRlZmF1bHQgMzBzKSB3aWxsIGJlIG92ZXItd3JpdHRlbiB0byBhIGhpZ2hlciB2YWx1ZSAoNjBzKQogICogYW5kIG1heF9zZWN0b3JzIHZhbHVlIHdpbGwgYmUgb3Zlci13cml0dGVuIHRvIDUxMi4gSXQgYWxzbyBzZXRzIHF1ZXVlIGRlcHRoCkBAIC0yMTIyLDcgKzIxMjIsNyBAQAogICoKICAqIFRoaXMgZnVuY3Rpb24gZXhlY3V0ZXMgbW9zdCBvZiB0aGUgc3RlcHMgcmVxdWlyZWQgZm9yIElPQSByZXNldC4gVGhpcyBnZXRzCiAgKiBjYWxsZWQgYnkgdXNlciB0aHJlYWRzIChtb2Rwcm9iZS9pbnNtb2Qvcm1tb2QpIHRpbWVyLCB0YXNrbGV0IGFuZCBtaWRsYXllcidzCi0gKiAnZWhfJyB0aHJlYWQuIEFjY2VzcyB0byB2YXJpYWJsZXMgdXNlZCBmb3IgY29udHJvbGluZyB0aGUgcmVzZXQgc2VxdWVuY2UgaXMKKyAqICdlaF8nIHRocmVhZC4gQWNjZXNzIHRvIHZhcmlhYmxlcyB1c2VkIGZvciBjb250cm9sbGluZyB0aGUgcmVzZXQgc2VxdWVuY2UgaXMKICAqIHN5bmNocm9uaXplZCB1c2luZyBob3N0IGxvY2suIFZhcmlvdXMgZnVuY3Rpb25zIGNhbGxlZCBkdXJpbmcgcmVzZXQgcHJvY2VzcwogICogd291bGQgbWFrZSB1c2Ugb2YgYSBzaW5nbGUgY29tbWFuZCBibG9jaywgcG9pbnRlciB0byB3aGljaCBpcyBhbHNvIHN0b3JlZCBpbgogICogYWRhcHRlciBpbnN0YW5jZSBzdHJ1Y3R1cmUuCkBAIC0yOTk0LDcgKzI5OTQsNyBAQAogCiAJLyogSWYgdGhlIGFib3J0IHRhc2sgaXMgbm90IHRpbWVkIG91dCB3ZSB3aWxsIGdldCBhIEdvb2QgY29tcGxldGlvbgogCSAqIGFzIHNlbnNlX2tleSwgb3RoZXJ3aXNlIHdlIG1heSBnZXQgb25lIHRoZSBmb2xsb3dpbmcgcmVzcG9uc2VzCi0JICogZHVlIHRvIHN1YnNxdWVudCBidXMgcmVzZXQgb3IgZGV2aWNlIHJlc2V0LiBJbiBjYXNlIElPQVNDIGlzCisJICogZHVlIHRvIHN1YnNlcXVlbnQgYnVzIHJlc2V0IG9yIGRldmljZSByZXNldC4gSW4gY2FzZSBJT0FTQyBpcwogCSAqIE5SX1NZTkNfUkVRVUlSRUQsIHNldCBzeW5jX3JlcWQgZmxhZyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcmVzb3VyY2UKIAkgKi8KIAlpZiAoaW9hc2MgPT0gUE1DUkFJRF9JT0FTQ19VQV9CVVNfV0FTX1JFU0VUIHx8CkBAIC0zOTMzLDcgKzM5MzMsNyBAQAogCiAJCQkvKiBpZiBhYm9ydCB0YXNrIGNvdWxkbid0IGZpbmQgdGhlIGNvbW1hbmQgaS5lIGl0IGdvdAogCQkJICogY29tcGxldGVkIHByaW9yIHRvIGFib3J0aW5nLCByZXR1cm4gZ29vZCBjb21wbGV0aW9uLgotCQkJICogaWYgY29tbWFuZCBnb3QgYWJvcnRlZCBzdWNjZXNmdWxseSBvciB0aGVyZSB3YXMgSU9BCisJCQkgKiBpZiBjb21tYW5kIGdvdCBhYm9ydGVkIHN1Y2Nlc3NmdWxseSBvciB0aGVyZSB3YXMgSU9BCiAJCQkgKiByZXNldCBkdWUgdG8gYWJvcnQgdGFzayBpdHNlbGYgZ2V0dGluZyB0aW1lZG91dCB0aGVuCiAJCQkgKiByZXR1cm4gLUVUSU1FRE9VVAogCQkJICovCkBAIC01OTMyLDcgKzU5MzIsNyBAQAogCSAqIEhvd2V2ZXIsIGZpcm13YXJlIHN1cHBvcnRzIDY0LWJpdCBzdHJlYW1pbmcgRE1BIGJ1ZmZlcnMsIHdoZXJlYXMKIAkgKiBjb2hlcmVudCBidWZmZXJzIGFyZSB0byBiZSAzMi1iaXQuIFNpbmNlIHBjaV9hbGxvY19jb25zaXN0ZW50IGFsd2F5cwogCSAqIHJldHVybnMgbWVtb3J5IHdpdGhpbiA0R0IgKGlmIG5vdCwgY2hhbmdlIHRoaXMgbG9naWMpLCBjb2hlcmVudAotCSAqIGJ1ZmZlcnMgYXJlIHdpdGhpbiBmaXJtd2FyZSBhY2NlcHRpYmxlIGFkZHJlc3MgcmFuZ2VzLgorCSAqIGJ1ZmZlcnMgYXJlIHdpdGhpbiBmaXJtd2FyZSBhY2NlcHRhYmxlIGFkZHJlc3MgcmFuZ2VzLgogCSAqLwogCWlmICgoc2l6ZW9mKGRtYV9hZGRyX3QpID09IDQpIHx8CiAJICAgIHBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BX0JJVF9NQVNLKDY0KSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcG1jcmFpZC5oIGIvZHJpdmVycy9zY3NpL3BtY3JhaWQuaAppbmRleCA0ZGIyMTBkLi4zNGU0YzkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG1jcmFpZC5oCisrKyBiL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmgKQEAgLTEwMjQsNyArMTAyNCw3IEBACiAKIAogLyoKLSAqIHBtY3JhaWRfaW9jdGxfaGVhZGVyIC0gZGVmaW5pdGlvbiBvZiBoZWFkZXIgc3RydWN0dXJlIHRoYXQgcHJlY2VlZHMgYWxsIHRoZQorICogcG1jcmFpZF9pb2N0bF9oZWFkZXIgLSBkZWZpbml0aW9uIG9mIGhlYWRlciBzdHJ1Y3R1cmUgdGhhdCBwcmVjZWRlcyBhbGwgdGhlCiAgKiBidWZmZXJzIGdpdmVuIGFzIGlvY3RsIGFyZ3VtZW50cy4KICAqCiAgKiAuc2lnbmF0dXJlICAgICAgICAgICA6IGFsd2F5cyBBU0NJSSBzdHJpbmcsICJQTUNSQUlEIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTEyODAuYyBiL2RyaXZlcnMvc2NzaS9xbGExMjgwLmMKaW5kZXggNWRlYzY4NC4uOGJhNTc0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTEyODAuYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMTI4MC5jCkBAIC03OCw3ICs3OCw3IEBACiAJLSBDbGVhbiB1cCB2Y2hhbiBoYW5kbGluZwogICAgIFJldiAgMy4yMy4zMyBKdWx5IDMsIDIwMDMsIEplcyBTb3JlbnNlbgogCS0gRG9uJ3QgZGVmaW5lIHJlZ2lzdGVyIGFjY2VzcyBtYWNyb3MgYmVmb3JlIGRlZmluZSBkZXRlcm1pbmluZyBNTUlPLgotCSAgVGhpcyBqdXN0IGhhcHBlbmQgdG8gd29yayBvdXQgb24gaWE2NCBidXQgbm90IGVsc2V3aGVyZS4KKwkgIFRoaXMganVzdCBoYXBwZW5lZCB0byB3b3JrIG91dCBvbiBpYTY0IGJ1dCBub3QgZWxzZXdoZXJlLgogCS0gRG9uJ3QgdHJ5IGFuZCByZWFkIGZyb20gdGhlIGNhcmQgd2hpbGUgaXQgaXMgaW4gcmVzZXQgYXMKIAkgIGl0IHdvbid0IHJlc3BvbmQgYW5kIGNhdXNlcyBhbiBNQ0EKICAgICBSZXYgIDMuMjMuMzIgSnVuZSAyMywgMjAwMywgSmVzIFNvcmVuc2VuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZGVmLmggYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZGVmLmgKaW5kZXggNmM1MWMwYS4uZWUyMDM1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kZWYuaApAQCAtMjA4Niw3ICsyMDg2LDcgQEAKIH07CiAKIC8qCi0gKiBTTlMgY29tbWFuZCBzdHJ1Y3R1cmVzIC0tIGZvciAyMjAwIGNvbXBhdGFiaWxpdHkuCisgKiBTTlMgY29tbWFuZCBzdHJ1Y3R1cmVzIC0tIGZvciAyMjAwIGNvbXBhdGliaWxpdHkuCiAgKi8KICNkZWZpbmUJUkZUX0lEX1NOU19TQ01EX0xFTgkyMgogI2RlZmluZQlSRlRfSURfU05TX0NNRF9TSVpFCTYwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaCBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9mdy5oCmluZGV4IDYzMWZlZmMuLmY1YmEwOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9mdy5oCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9mdy5oCkBAIC01MzksNyArNTM5LDcgQEAKIAkgKiBJZiBESUYgRXJyb3IgaXMgc2V0IGluIGNvbXBfc3RhdHVzLCB0aGVzZSBhZGRpdGlvbmFsIGZpZWxkcyBhcmUKIAkgKiBkZWZpbmVkOgogCSAqICZkYXRhWzEwXSA6IHVpbnQ4X3QgcmVwb3J0X3J1bnRfYmdbMl07CS0gY29tcHV0ZWQgZ3VhcmQKLQkgKiAmZGF0YVsxMl0gOiB1aW50OF90IGFjdHVhbF9kaWZbOF07CQktIERJRiBEYXRhIHJlY2lldmVkCisJICogJmRhdGFbMTJdIDogdWludDhfdCBhY3R1YWxfZGlmWzhdOwkJLSBESUYgRGF0YSByZWNlaXZlZAogCSAqICZkYXRhWzIwXSA6IHVpbnQ4X3QgZXhwZWN0ZWRfZGlmWzhdOwkJLSBESUYgRGF0YSBjb21wdXRlZAogCSovCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lzci5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lzci5jCmluZGV4IGQxN2VkOWEuLjcxMjUxOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaXNyLmMKQEAgLTQxNCw3ICs0MTQsNyBAQAogCQkJCSAgICAibWFya2VkIE9GRkxJTkUhXG4iKTsKIAkJCQl2aGEtPmZsYWdzLm9ubGluZSA9IDA7CiAJCQl9IGVsc2UgewotCQkJCS8qIENoZWNrIHRvIHNlZSBpZiBNUEkgdGltZW91dCBvY2N1cmVkICovCisJCQkJLyogQ2hlY2sgdG8gc2VlIGlmIE1QSSB0aW1lb3V0IG9jY3VycmVkICovCiAJCQkJaWYgKChtYnggJiBNQlhfMykgJiYgKGhhLT5mbGFncy5wb3J0MCkpCiAJCQkJCXNldF9iaXQoTVBJX1JFU0VUX05FRURFRCwKIAkJCQkJICAgICZ2aGEtPmRwY19mbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbWJ4LmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbWJ4LmMKaW5kZXggN2E3YzBlYy4uMzQ4OTMzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX21ieC5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9tYnguYwpAQCAtMzAzLDcgKzMwMyw3IEBACiAJCQkgICAgIXRlc3RfYml0KElTUF9BQk9SVF9SRVRSWSwgJnZoYS0+ZHBjX2ZsYWdzKSkgewogCiAJCQkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkJCSAgICAiTWFpbGJveCBjb21tYW5kIHRpbWVvdXQgb2NjdXJlZC4gIgorCQkJCSAgICAiTWFpbGJveCBjb21tYW5kIHRpbWVvdXQgb2NjdXJyZWQuICIKIAkJCQkgICAgIlNjaGVkdWxpbmcgSVNQICIgImFib3J0LiBlZWhfYnVzeTogMHgleFxuIiwKIAkJCQkgICAgaGEtPmZsYWdzLmVlaF9idXN5KTsKIAkJCQlzZXRfYml0KElTUF9BQk9SVF9ORUVERUQsICZ2aGEtPmRwY19mbGFncyk7CkBAIC0zMjEsNyArMzIxLDcgQEAKIAkJCSAgICAhdGVzdF9iaXQoSVNQX0FCT1JUX1JFVFJZLCAmdmhhLT5kcGNfZmxhZ3MpKSB7CiAKIAkJCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCi0JCQkJICAgICJNYWlsYm94IGNvbW1hbmQgdGltZW91dCBvY2N1cmVkLiAiCisJCQkJICAgICJNYWlsYm94IGNvbW1hbmQgdGltZW91dCBvY2N1cnJlZC4gIgogCQkJCSAgICAiSXNzdWluZyBJU1AgYWJvcnQuXG4iKTsKIAogCQkJCXNldF9iaXQoQUJPUlRfSVNQX0FDVElWRSwgJnZoYS0+ZHBjX2ZsYWdzKTsKQEAgLTM3ODksNyArMzc4OSw3IEBACiAJbWNwLT5tYlsyMF0gPSBMU1coTVNEKG1yZXEtPnNlbmRfZG1hKSk7CiAJbWNwLT5tYlsyMV0gPSBNU1coTVNEKG1yZXEtPnNlbmRfZG1hKSk7CiAKLQkvKiByZWNpZXZlIGRhdGEgYWRkcmVzcyAqLworCS8qIHJlY2VpdmUgZGF0YSBhZGRyZXNzICovCiAJbWNwLT5tYlsxNl0gPSBMU1cobXJlcS0+cmN2X2RtYSk7CiAJbWNwLT5tYlsxN10gPSBNU1cobXJlcS0+cmN2X2RtYSk7CiAJbWNwLT5tYls2XSA9IExTVyhNU0QobXJlcS0+cmN2X2RtYSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX254LmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbnguYwppbmRleCA3NmVjODc2Li40NTVmZTEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbnguYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbnguYwpAQCAtMjU5OCw3ICsyNTk4LDcgQEAKICAqIHFsYTgyeHhfc3RhcnRfc2NzaSgpIC0gU2VuZCBhIFNDU0kgY29tbWFuZCB0byB0aGUgSVNQCiAgKiBAc3A6IGNvbW1hbmQgdG8gc2VuZCB0byB0aGUgSVNQCiAgKgotICogUmV0dXJucyBub24temVybyBpZiBhIGZhaWx1cmUgb2NjdXJlZCwgZWxzZSB6ZXJvLgorICogUmV0dXJucyBub24temVybyBpZiBhIGZhaWx1cmUgb2NjdXJyZWQsIGVsc2UgemVyby4KICAqLwogaW50CiBxbGE4Mnh4X3N0YXJ0X3Njc2koc3JiX3QgKnNwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYwppbmRleCA3NWE5NjZjLi5hYTc3NDc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYwpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAKIAogZWhfYnVzX3Jlc2V0X2RvbmU6CiAJcWxhX3ByaW50ayhLRVJOX0lORk8sIHZoYS0+aHcsICIlczogcmVzZXQgJXNcbiIsIF9fZnVuY19fLAotCSAgICAocmV0ID09IEZBSUxFRCkgPyAiZmFpbGVkIiA6ICJzdWNjZWRlZCIpOworCSAgICAocmV0ID09IEZBSUxFRCkgPyAiZmFpbGVkIiA6ICJzdWNjZWVkZWQiKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xMTM2LDcgKzExMzYsNyBAQAogCiBlaF9ob3N0X3Jlc2V0X2xvY2s6CiAJcWxhX3ByaW50ayhLRVJOX0lORk8sIGhhLCAiJXM6IHJlc2V0ICVzXG4iLCBfX2Z1bmNfXywKLQkgICAgKHJldCA9PSBGQUlMRUQpID8gImZhaWxlZCIgOiAic3VjY2VkZWQiKTsKKwkgICAgKHJldCA9PSBGQUlMRUQpID8gImZhaWxlZCIgOiAic3VjY2VlZGVkIik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzkwMiw3ICszOTAyLDcgQEAKIAkJCWNvbnRpbnVlOwogCQlpZiAoYXRvbWljX3JlYWQoJm90aGVyX3BkZXYtPmVuYWJsZV9jbnQpKSB7CiAJCQlERUJVRzE3KHFsYV9wcmludGsoS0VSTl9JTkZPLCBoYSwKLQkJCSAgICAiRm91bmQgUENJIGZ1bmMgYXZhaWxhYmUgYW5kIGVuYWJsZWQgYXQgMHgleFxuIiwKKwkJCSAgICAiRm91bmQgUENJIGZ1bmMgYXZhaWxhYmxlIGFuZCBlbmFibGVkIGF0IDB4JXhcbiIsCiAJCQkgICAgZm4pKTsKIAkJCXBjaV9kZXZfcHV0KG90aGVyX3BkZXYpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfZGVmLmggYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfZGVmLmgKaW5kZXggYzFmOGQxYi4uNDc1Nzg3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oCisrKyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9kZWYuaApAQCAtMTgyLDcgKzE4Miw3IEBACiAJdWludDE2X3QgZmxhZ3M7CQkvKiAoMSkgU3RhdHVzIGZsYWdzLiAqLwogCiAjZGVmaW5lIFNSQl9ETUFfVkFMSUQJCUJJVF8zCS8qIERNQSBCdWZmZXIgbWFwcGVkLiAqLwotI2RlZmluZSBTUkJfR09UX1NFTlNFCQlCSVRfNAkvKiBzZW5zZSBkYXRhIHJlY2lldmVkLiAqLworI2RlZmluZSBTUkJfR09UX1NFTlNFCQlCSVRfNAkvKiBzZW5zZSBkYXRhIHJlY2VpdmVkLiAqLwogCXVpbnQ4X3Qgc3RhdGU7CQkvKiAoMSkgU3RhdHVzIGZsYWdzLiAqLwogCiAjZGVmaW5lIFNSQl9OT19RVUVVRV9TVEFURQkgMAkvKiBSZXF1ZXN0IGlzIGluIGJldHdlZW4gc3RhdGVzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfaW5pdC5jIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2luaXQuYwppbmRleCBiYmIyZTkwLi40OGUyMjQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfaW5pdC5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pbml0LmMKQEAgLTEzMzgsNyArMTMzOCw3IEBACiAJfQogCiAJREVCVUcyKHByaW50aygic2NzaSVsZDogaW5pdGlhbGl6ZSBhZGFwdGVyOiAlc1xuIiwgaGEtPmhvc3Rfbm8sCi0JICAgIHN0YXR1cyA9PSBRTEFfRVJST1IgPyAiRkFJTEVEIiA6ICJTVUNDRURFRCIpKTsKKwkgICAgc3RhdHVzID09IFFMQV9FUlJPUiA/ICJGQUlMRUQiIDogIlNVQ0NFRURFRCIpKTsKIAlyZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfbnZyYW0uaCBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9udnJhbS5oCmluZGV4IGIzODMxYmQyLi45NDVjYzMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfbnZyYW0uaAorKysgYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfbnZyYW0uaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZQkgRk05M0M1NkFfRVJBU0UJICAgICAgMHgzCiAjZGVmaW5lCSBGTTkzQzU2QV9FUkFTRV9BTEwgICAweDAKIAotLyogQ29tbWFuZCBFeHRlbnRpb25zICovCisvKiBDb21tYW5kIEV4dGVuc2lvbnMgKi8KICNkZWZpbmUJIEZNOTNDNTZBX1dFTl9FWFQJIDB4MwogI2RlZmluZQkgRk05M0M1NkFfV1JJVEVfQUxMX0VYVAkgMHgxCiAjZGVmaW5lCSBGTTkzQzU2QV9XRFNfRVhUCSAweDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmMKaW5kZXggYTRhY2IwZC4uMjMwYmEwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X29zLmMKQEAgLTEyMTMsNyArMTIxMyw3IEBACiAKIAljbGVhcl9iaXQoRFBDX1JFU0VUX0FDVElWRSwgJmhhLT5kcGNfZmxhZ3MpOwogCURFQlVHMihwcmludGsoInNjc2klbGQ6IHJlY292ZXIgYWRhcHRlcjogJXNcbiIsIGhhLT5ob3N0X25vLAotCSAgICBzdGF0dXMgPT0gUUxBX0VSUk9SID8gIkZBSUxFRCIgOiAiU1VDQ0VERUQiKSk7CisJICAgIHN0YXR1cyA9PSBRTEFfRVJST1IgPyAiRkFJTEVEIiA6ICJTVUNDRUVERUQiKSk7CiAKIAlyZXR1cm4gc3RhdHVzOwogfQpAQCAtMjExMCw3ICsyMTEwLDcgQEAKIAogCXFsNF9wcmludGsoS0VSTl9JTkZPLCBoYSwKIAkgICAgInNjc2klbGQ6JWQ6JWQ6IEFib3J0IGNvbW1hbmQgLSAlc1xuIiwKLQkgICAgaGEtPmhvc3Rfbm8sIGlkLCBsdW4sIChyZXQgPT0gU1VDQ0VTUykgPyAic3VjY2VkZWQiIDogImZhaWxlZCIpOworCSAgICBoYS0+aG9zdF9ubywgaWQsIGx1biwgKHJldCA9PSBTVUNDRVNTKSA/ICJzdWNjZWVkZWQiIDogImZhaWxlZCIpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTIyNzgsNyArMjI3OCw3IEBACiAJCXJldHVybl9zdGF0dXMgPSBTVUNDRVNTOwogCiAJcWw0X3ByaW50ayhLRVJOX0lORk8sIGhhLCAiSE9TVCBSRVNFVCAlcy5cbiIsCi0JCSAgIHJldHVybl9zdGF0dXMgPT0gRkFJTEVEID8gIkZBSUxFRCIgOiAiU1VDQ0VERUQiKTsKKwkJICAgcmV0dXJuX3N0YXR1cyA9PSBGQUlMRUQgPyAiRkFJTEVEIiA6ICJTVUNDRUVERUQiKTsKIAogCXJldHVybiByZXR1cm5fc3RhdHVzOwogfQpAQCAtMjQ5Miw3ICsyNDkyLDcgQEAKIAkvKiBJbml0aWFsaXplIGRldmljZSBvciByZXN1bWUgaWYgaW4gc3VzcGVuZGVkIHN0YXRlICovCiAJcmMgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTsKIAlpZiAocmMpIHsKLQkJcWw0X3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLCAic2NzaSVsZDogJXM6IENhbnQgcmUtZW5hYmxlICIKKwkJcWw0X3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLCAic2NzaSVsZDogJXM6IENhbid0IHJlLWVuYWJsZSAiCiAJCSAgICAiZGV2aWNlIGFmdGVyIHJlc2V0XG4iLCBoYS0+aG9zdF9ubywgX19mdW5jX18pOwogCQlnb3RvIGV4aXRfc2xvdF9yZXNldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9kZWJ1Zy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYwppbmRleCBmYTU3NThjLi42ODg4YjJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9kZWJ1Zy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX2RlYnVnLmMKQEAgLTI0NTQsNyArMjQ1NCw3IEBACiAJCXByaW50ayhLRVJOX0lORk8gInNjc2lfZGVidWc6IHNsYXZlX2Rlc3Ryb3kgPCV1ICV1ICV1ICV1PlxuIiwKIAkJICAgICAgIHNkcC0+aG9zdC0+aG9zdF9ubywgc2RwLT5jaGFubmVsLCBzZHAtPmlkLCBzZHAtPmx1bik7CiAJaWYgKGRldmlwKSB7Ci0JCS8qIG1ha2UgdGhpcyBzbG90IGF2YWxpYWJsZSBmb3IgcmUtdXNlICovCisJCS8qIG1ha2UgdGhpcyBzbG90IGF2YWlsYWJsZSBmb3IgcmUtdXNlICovCiAJCWRldmlwLT51c2VkID0gMDsKIAkJc2RwLT5ob3N0ZGF0YSA9IE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfbmV0bGluay5jIGIvZHJpdmVycy9zY3NpL3Njc2lfbmV0bGluay5jCmluZGV4IGEyZWQyMDEuLjI2YThhNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX25ldGxpbmsuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9uZXRsaW5rLmMKQEAgLTQ5OSw3ICs0OTksNyBAQAogCQkJCVNDU0lfTkxfR1JQX0NOVCwgc2NzaV9ubF9yY3ZfbXNnLCBOVUxMLAogCQkJCVRISVNfTU9EVUxFKTsKIAlpZiAoIXNjc2lfbmxfc29jaykgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiByZWdpc3RlciBvZiByZWNpZXZlIGhhbmRsZXIgZmFpbGVkXG4iLAorCQlwcmludGsoS0VSTl9FUlIgIiVzOiByZWdpc3RlciBvZiByZWNlaXZlIGhhbmRsZXIgZmFpbGVkXG4iLAogCQkJCV9fZnVuY19fKTsKIAkJbmV0bGlua191bnJlZ2lzdGVyX25vdGlmaWVyKCZzY3NpX25ldGxpbmtfbm90aWZpZXIpOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV90Z3RfbGliLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV90Z3RfbGliLmMKaW5kZXggZjY3MjgyMC4uOGJjYThjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfdGd0X2xpYi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zY3NpX3RndF9saWIuYwpAQCAtOTMsNyArOTMsNyBAQAogCiAJLyoKIAkgKiBUaGUgYmxrIGhlbHBlcnMgYXJlIHVzZWQgdG8gdGhlIFJFQUQvV1JJVEUgcmVxdWVzdHMKLQkgKiB0cmFuc2ZlcmluZyBkYXRhIGZyb20gYSBpbml0aWF0b3IgcG9pbnQgb2Ygdmlldy4gU2luY2UKKwkgKiB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIGEgaW5pdGlhdG9yIHBvaW50IG9mIHZpZXcuIFNpbmNlCiAJICogd2UgYXJlIGluIHRhcmdldCBtb2RlIHdlIHdhbnQgdGhlIG9wcG9zaXRlLgogCSAqLwogCXJxID0gYmxrX2dldF9yZXF1ZXN0KHNob3N0LT51c3BhY2VfcmVxX3EsICF3cml0ZSwgZ2ZwX21hc2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYwppbmRleCAyOTQxZDJkLi5mZGYzZmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYwpAQCAtMjM3OCw3ICsyMzc4LDcgQEAKICAqIGZjX3JlbW92ZV9ob3N0IC0gY2FsbGVkIHRvIHRlcm1pbmF0ZSBhbnkgZmNfdHJhbnNwb3J0LXJlbGF0ZWQgZWxlbWVudHMgZm9yIGEgc2NzaSBob3N0LgogICogQHNob3N0OglXaGljaCAmU2NzaV9Ib3N0CiAgKgotICogVGhpcyByb3V0aW5lIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBwcmVjZWVkaW5nIHRoZQorICogVGhpcyByb3V0aW5lIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgdGhlCiAgKiBhIGRyaXZlcidzIGNhbGwgdG8gc2NzaV9yZW1vdmVfaG9zdCgpLgogICoKICAqIFdBUk5JTkc6IEEgZHJpdmVyIHV0aWxpemluZyB0aGUgZmNfdHJhbnNwb3J0LCB3aGljaCBmYWlscyB0byBjYWxsCkBAIC0yNDU4LDcgKzI0NTgsNyBAQAogfQogCiAvKioKLSAqIGZjX3N0YXJnZXRfZGVsZXRlIC0gY2FsbGVkIHRvIGRlbGV0ZSB0aGUgc2NzaSBkZWNlbmRlbnRzIG9mIGFuIHJwb3J0CisgKiBmY19zdGFyZ2V0X2RlbGV0ZSAtIGNhbGxlZCB0byBkZWxldGUgdGhlIHNjc2kgZGVzY2VuZGFudHMgb2YgYW4gcnBvcnQKICAqIEB3b3JrOglyZW1vdGUgcG9ydCB0byBiZSBvcGVyYXRlZCBvbi4KICAqCiAgKiBEZWxldGVzIHRhcmdldCBhbmQgYWxsIHNkZXZzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NkLmMgYi9kcml2ZXJzL3Njc2kvc2QuYwppbmRleCBiNjFlYmVjLi5iZDA4MDZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAKICAqCUBhcmc6IHRoaXMgaXMgdGhpcmQgYXJndW1lbnQgZ2l2ZW4gdG8gaW9jdGwoMikgc3lzdGVtIGNhbGwuCiAgKglPZnRlbiBjb250YWlucyBhIHBvaW50ZXIuCiAgKgotICoJUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwgKHNvbWUgaW9jdGxzIHJldHVybiBwb3N0aXZlIG51bWJlcnMgb24KKyAqCVJldHVybnMgMCBpZiBzdWNjZXNzZnVsIChzb21lIGlvY3RscyByZXR1cm4gcG9zaXRpdmUgbnVtYmVycyBvbgogICoJc3VjY2VzcyBhcyB3ZWxsKS4gUmV0dXJucyBhIG5lZ2F0ZWQgZXJybm8gdmFsdWUgaW4gY2FzZSBvZiBlcnJvci4KICAqCiAgKglOb3RlOiBtb3N0IGlvY3RscyBhcmUgZm9yd2FyZCBvbnRvIHRoZSBibG9jayBzdWJzeXN0ZW0gb3IgZnVydGhlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NyLmMgYi9kcml2ZXJzL3Njc2kvc3IuYwppbmRleCBhZWZhZGM2Li45NTAxOWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3IuYworKysgYi9kcml2ZXJzL3Njc2kvc3IuYwpAQCAtNTY3LDcgKzU2Nyw3IEBACiAJLnJldmFsaWRhdGVfZGlzayA9IHNyX2Jsb2NrX3JldmFsaWRhdGVfZGlzaywKIAkvKiAKIAkgKiBObyBjb21wYXRfaW9jdGwgZm9yIG5vdyBiZWNhdXNlIHNyX2Jsb2NrX2lvY3RsIG5ldmVyCi0JICogc2VlbXMgdG8gcGFzcyBhcmJpdGFyeSBpb2N0bHMgZG93biB0byBob3N0IGRyaXZlcnMuCisJICogc2VlbXMgdG8gcGFzcyBhcmJpdHJhcnkgaW9jdGxzIGRvd24gdG8gaG9zdCBkcml2ZXJzLgogCSAqLwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N1bjNfTkNSNTM4MC5jIGIvZHJpdmVycy9zY3NpL3N1bjNfTkNSNTM4MC5jCmluZGV4IDRmMGU1NDguLjA3ZWFlZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zdW4zX05DUjUzODAuYworKysgYi9kcml2ZXJzL3Njc2kvc3VuM19OQ1I1MzgwLmMKQEAgLTQ2Nyw3ICs0NjcsNyBAQAogICoKICAqIFBhcmFtZXRlcnM6IHN0cnVjdCBzY3NpX2NtbmQgKmNtZAogICogICAgVGhlIGNvbW1hbmQgdG8gd29yayBvbi4gVGhlIGZpcnN0IHNjYXR0ZXIgYnVmZmVyJ3MgZGF0YSBhcmUKLSAqICAgIGFzc3VtZWQgdG8gYmUgYWxyZWFkeSB0cmFuc2ZlcmVkIGludG8gcHRyL3RoaXNfcmVzaWR1YWwuCisgKiAgICBhc3N1bWVkIHRvIGJlIGFscmVhZHkgdHJhbnNmZXJyZWQgaW50byBwdHIvdGhpc19yZXNpZHVhbC4KICAqLwogCiBzdGF0aWMgdm9pZCBtZXJnZV9jb250aWd1b3VzX2J1ZmZlcnMoc3RydWN0IHNjc2lfY21uZCAqY21kKQpAQCAtMTcxNyw3ICsxNzE3LDcgQEAKICAqCWJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqIAogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBhcmUgdHJhbnNmZXJlZCBvciBleGl0CisgKgltYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgYXJlIHRyYW5zZmVycmVkIG9yIGV4aXQKICAqCWlzIGluIHNhbWUgcGhhc2UuCiAgKgogICogCUFsc28sICpwaGFzZSwgKmNvdW50LCAqZGF0YSBhcmUgbW9kaWZpZWQgaW4gcGxhY2UuCkBAIC0xOTA0LDcgKzE5MDQsNyBAQAogICoJYnl0ZXMgdG8gdHJhbnNmZXIsICoqZGF0YSAtIHBvaW50ZXIgdG8gZGF0YSBwb2ludGVyLgogICogCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIG9yIHRyYW5zZmVyZWQgb3IgZXhpdAorICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIG9yIHRyYW5zZmVycmVkIG9yIGV4aXQKICAqCWlzIGluIHNhbWUgcGhhc2UuCiAgKgogICogCUFsc28sICpwaGFzZSwgKmNvdW50LCAqZGF0YSBhcmUgbW9kaWZpZWQgaW4gcGxhY2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3ltNTNjNDE2LmMgYi9kcml2ZXJzL3Njc2kvc3ltNTNjNDE2LmMKaW5kZXggMTkwMTA3YS4uMDEyYzg2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N5bTUzYzQxNi5jCisrKyBiL2RyaXZlcnMvc2NzaS9zeW01M2M0MTYuYwpAQCAtNzc0LDcgKzc3NCw3IEBACiAKIAkvKiBwcmludGsoInN5bTUzYzQxNl9yZXNldFxuIik7ICovCiAJYmFzZSA9IFNDcG50LT5kZXZpY2UtPmhvc3QtPmlvX3BvcnQ7Ci0JLyogc2VhcmNoIHNjc2lfaWQgLSBmaXhtZSwgd2Ugc2hvdWxkbnQgbmVlZCB0byBpdGVyYXRlIGZvciB0aGlzISAqLworCS8qIHNlYXJjaCBzY3NpX2lkIC0gZml4bWUsIHdlIHNob3VsZG4ndCBuZWVkIHRvIGl0ZXJhdGUgZm9yIHRoaXMhICovCiAJZm9yKGkgPSAwOyBpIDwgaG9zdF9pbmRleCAmJiBzY3NpX2lkID09IC0xOyBpKyspCiAJCWlmKGhvc3RzW2ldLmJhc2UgPT0gYmFzZSkKIAkJCXNjc2lfaWQgPSBob3N0c1tpXS5zY3NpX2lkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzEuaCBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncxLmgKaW5kZXggN2IwOGQ2Yy4uNjM5NTJlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzEuaAorKysgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3MS5oCkBAIC0xNDQ5LDcgKzE0NDksNyBAQAogCQlQQUREUl9CIChtc2dfd2VpcmRfc2VlbiksCiAJLyoKIAkgKiAgV2UgZG9ubm90IGhhbmRsZSBleHRlbmRlZCBtZXNzYWdlcyBmcm9tIFNDUklQVFMuCi0JICogIFJlYWQgdGhlIGFtb3VudCBvZiBkYXRhIGNvcnJlcG9uZGluZyB0byB0aGUgCisJICogIFJlYWQgdGhlIGFtb3VudCBvZiBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gdGhlIAogCSAqICBtZXNzYWdlIGxlbmd0aCBhbmQgY2FsbCB0aGUgQyBjb2RlLgogCSAqLwogCVNDUl9DT1BZICgxKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncyLmggYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3Mi5oCmluZGV4IGFlMWZiMTcuLmM4N2Q3MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncyLmgKKysrIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzIuaApAQCAtMTMyNiw3ICsxMzI2LDcgQEAKIAkJUEFERFJfQiAobXNnX3dlaXJkX3NlZW4pLAogCS8qCiAJICogIFdlIGRvbm5vdCBoYW5kbGUgZXh0ZW5kZWQgbWVzc2FnZXMgZnJvbSBTQ1JJUFRTLgotCSAqICBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSBjb3JyZXBvbmRpbmcgdG8gdGhlIAorCSAqICBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSAKIAkgKiAgbWVzc2FnZSBsZW5ndGggYW5kIGNhbGwgdGhlIEMgY29kZS4KIAkgKi8KIAlTQ1JfU1RPUkVfUkVMIChzY3JhdGNoYSwgMSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYyBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1faGlwZC5jCmluZGV4IDJjM2U4OWQuLmQ5MmZlNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1faGlwZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1faGlwZC5jCkBAIC0yNDU3LDcgKzI0NTcsNyBAQAogCQl9CiAKIAkJLyoKLQkJICogIFRoZSBkYXRhIGluIHRoZSBkbWEgZmlmbyBoYXMgbm90IGJlZW4gdHJhbnNmZXJlZCB0bworCQkgKiAgVGhlIGRhdGEgaW4gdGhlIGRtYSBmaWZvIGhhcyBub3QgYmVlbiB0cmFuc2ZlcnJlZCB0bwogCQkgKiAgdGhlIHRhcmdldCAtPiBhZGQgdGhlIGFtb3VudCB0byB0aGUgcmVzdAogCQkgKiAgYW5kIGNsZWFyIHRoZSBkYXRhLgogCQkgKiAgQ2hlY2sgdGhlIHNzdGF0MiByZWdpc3RlciBpbiBjYXNlIG9mIHdpZGUgdHJhbnNmZXIuCkBAIC01MDk0LDcgKzUwOTQsNyBAQAogfQogCiAvKgotICogIEx1biBjb250cm9sIGJsb2NrIGRlYWxsb2NhdGlvbi4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbGlkIHJlbWFpbmcgTENCcworICogIEx1biBjb250cm9sIGJsb2NrIGRlYWxsb2NhdGlvbi4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbGlkIHJlbWFpbmluZyBMQ0JzCiAgKiAgZm9yIHRoZSB0YXJnZXQuCiAgKi8KIGludCBzeW1fZnJlZV9sY2Ioc3RydWN0IHN5bV9oY2IgKm5wLCB1X2NoYXIgdG4sIHVfY2hhciBsbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fbWFsbG9jLmMgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX21hbGxvYy5jCmluZGV4IDg4M2NhYzEuLjZmOWFmMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fbWFsbG9jLmMKKysrIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9tYWxsb2MuYwpAQCAtNTAsNyArNTAsNyBAQAogICogIGZyb20gdGhlIFNDUklQVFMgY29kZS4gSW4gYWRkaXRpb24sIGNhY2hlIGxpbmUgYWxpZ25tZW50IAogICogIGlzIGd1YXJhbnRlZWQgZm9yIHBvd2VyIG9mIDIgY2FjaGUgbGluZSBzaXplLgogICoKLSAqICBUaGlzIGFsbG9jYXRvciBoYXMgYmVlbiBkZXZlbG9wcGVkIGZvciB0aGUgTGludXggc3ltNTNjOHh4ICAKKyAqICBUaGlzIGFsbG9jYXRvciBoYXMgYmVlbiBkZXZlbG9wZWQgZm9yIHRoZSBMaW51eCBzeW01M2M4eHggIAogICogIGRyaXZlciwgc2luY2UgdGhpcyBPL1MgZG9lcyBub3QgcHJvdmlkZSBuYXR1cmFsbHkgYWxpZ25lZCAKICAqICBhbGxvY2F0aW9ucy4KICAqICBJdCBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyB0aGUgZHJpdmVyIHRvIHVzZSBwcml2YXRlIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3dkMzNjOTMuYyBiL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmMKaW5kZXggNWY2OTdlMC4uNDQ2OGFlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3dkMzNjOTMuYworKysgYi9kcml2ZXJzL3Njc2kvd2QzM2M5My5jCkBAIC0xODQzLDcgKzE4NDMsNyBAQAogICoKICAqIFRoZSBvcmlnaW5hbCBkcml2ZXIgdXNlZCB0byByZWx5IG9uIGEgZml4ZWQgc3hfdGFibGUsIGNvbnRhaW5pbmcgcGVyaW9kcwogICogZm9yIChvbmx5KSB0aGUgbG93ZXIgbGltaXRzIG9mIHRoZSByZXNwZWN0aXZlIGlucHV0LWNsb2NrLWZyZXF1ZW5jeSByYW5nZXMKLSAqICg4LTEwLzEyLTE1LzE2LTIwIE1IeikuIEFsdGhvdWdoIGl0IHNlZW1zLCB0aGF0IG5vIHByb2JsZW1zIG9jdXJyZWQgd2l0aAorICogKDgtMTAvMTItMTUvMTYtMjAgTUh6KS4gQWx0aG91Z2ggaXQgc2VlbXMsIHRoYXQgbm8gcHJvYmxlbXMgb2NjdXJyZWQgd2l0aAogICogdGhpcyBzZXR0aW5nIHNvIGZhciwgaXQgbWlnaHQgYmUgZGVzaXJhYmxlIHRvIGFkanVzdCB0aGUgdHJhbnNmZXIgcGVyaW9kcwogICogY2xvc2VyIHRvIHRoZSByZWFsbHkgYXR0YWNoZWQsIHBvc3NpYmx5IDI1JSBoaWdoZXIsIGlucHV0LWNsb2NrLCBzaW5jZQogICogLSB0aGUgd2QzM2M5MyBtYXkgcmVhbGx5IHVzZSBhIHNpZ25pZmljYW50IHNob3J0ZXIgcGVyaW9kLCB0aGFuIGl0IGhhcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3dkNzAwMC5jIGIvZHJpdmVycy9zY3NpL3dkNzAwMC5jCmluZGV4IGRiNDUxYWUuLjllZTBhZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS93ZDcwMDAuYworKysgYi9kcml2ZXJzL3Njc2kvd2Q3MDAwLmMKQEAgLTgzNyw3ICs4MzcsNyBAQAogCQl9CiAJfQogCi0JLyogVGFrZSB0aGUgbG9jaywgdGhlbiBjaGVjayB3ZSBkaWRudCBnZXQgYmVhdGVuLCBpZiBzbyB0cnkgYWdhaW4gKi8KKwkvKiBUYWtlIHRoZSBsb2NrLCB0aGVuIGNoZWNrIHdlIGRpZG4ndCBnZXQgYmVhdGVuLCBpZiBzbyB0cnkgYWdhaW4gKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmc2NicG9vbF9sb2NrLCBmbGFncyk7CiAJaWYgKGZyZWVzY2JzIDwgbmVlZGVkKSB7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjYnBvb2xfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZmkvc2ZpX2NvcmUuYyBiL2RyaXZlcnMvc2ZpL3NmaV9jb3JlLmMKaW5kZXggMDQxMTNlNS4uMWU4MjRmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZmkvc2ZpX2NvcmUuYworKysgYi9kcml2ZXJzL3NmaS9zZmlfY29yZS5jCkBAIC01MTUsNyArNTE1LDcgQEAKIH0KIAogLyoKLSAqIFRoZSByZWFzb24gd2UgcHV0IGl0IGhlcmUgYmVjYXN1ZSB3ZSBuZWVkIHdhaXQgdGlsbCB0aGUgL3N5cy9maXJtd2FyZQorICogVGhlIHJlYXNvbiB3ZSBwdXQgaXQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgd2FpdCB0aWxsIHRoZSAvc3lzL2Zpcm13YXJlCiAgKiBpcyBzZXR1cCwgdGhlbiBvdXIgaW50ZXJmYWNlIGNhbiBiZSByZWdpc3RlcmVkIGluIC9zeXMvZmlybXdhcmUvc2ZpCiAgKi8KIGNvcmVfaW5pdGNhbGwoc2ZpX3N5c2ZzX2luaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvYW1iYS1wbDAyMi5jIGIvZHJpdmVycy9zcGkvYW1iYS1wbDAyMi5jCmluZGV4IDVhNGUwYWYuLjU4MjUzNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2FtYmEtcGwwMjIuYworKysgYi9kcml2ZXJzL3NwaS9hbWJhLXBsMDIyLmMKQEAgLTY2MSw3ICs2NjEsNyBAQAogewogCiAJLyoKLQkgKiBUaGUgRklGTyBkZXB0aCBpcyBkaWZmZXJlbnQgaW5iZXR3ZWVuIHByaW1lY2VsbCB2YXJpYW50cy4KKwkgKiBUaGUgRklGTyBkZXB0aCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBwcmltZWNlbGwgdmFyaWFudHMuCiAJICogSSBiZWxpZXZlIGZpbGxpbmcgaW4gdG9vIG11Y2ggaW4gdGhlIEZJRk8gbWlnaHQgY2F1c2UKIAkgKiBlcnJvbnMgaW4gOGJpdCB3aWRlIHRyYW5zZmVycyBvbiBBUk0gdmFyaWFudHMgKGp1c3QgOCB3b3JkcwogCSAqIEZJRk8sIG1lYW5zIG9ubHkgOHg4ID0gNjQgYml0cyBpbiBGSUZPKSBhdCBsZWFzdC4KQEAgLTcyMiw3ICs3MjIsNyBAQAogCQkgKiBUaGlzIGlubmVyIHJlYWRlciB0YWtlcyBjYXJlIG9mIHRoaW5ncyBhcHBlYXJpbmcgaW4gdGhlIFJYCiAJCSAqIEZJRk8gYXMgd2UncmUgdHJhbnNtaXR0aW5nLiBUaGlzIHdpbGwgaGFwcGVuIGEgbG90IHNpbmNlIHRoZQogCQkgKiBjbG9jayBzdGFydHMgcnVubmluZyB3aGVuIHlvdSBwdXQgdGhpbmdzIGludG8gdGhlIFRYIEZJRk8sCi0JCSAqIGFuZCB0aGVuIHRoaW5ncyBhcmUgY29udGlub3VzbHkgY2xvY2tlZCBpbnRvIHRoZSBSWCBGSUZPLgorCQkgKiBhbmQgdGhlbiB0aGluZ3MgYXJlIGNvbnRpbnVvdXNseSBjbG9ja2VkIGludG8gdGhlIFJYIEZJRk8uCiAJCSAqLwogCQl3aGlsZSAoKHJlYWR3KFNTUF9TUihwbDAyMi0+dmlydGJhc2UpKSAmIFNTUF9TUl9NQVNLX1JORSkKIAkJICAgICAgICYmIChwbDAyMi0+cnggPCBwbDAyMi0+cnhfZW5kKSkgewpAQCAtODQyLDcgKzg0Miw3IEBACiAKIAl1bm1hcF9mcmVlX2RtYV9zY2F0dGVyKHBsMDIyKTsKIAotCS8qIFVwZGF0ZSB0b3RhbCBieXRlcyB0cmFuc2ZlcmVkICovCisJLyogVXBkYXRlIHRvdGFsIGJ5dGVzIHRyYW5zZmVycmVkICovCiAJbXNnLT5hY3R1YWxfbGVuZ3RoICs9IHBsMDIyLT5jdXJfdHJhbnNmZXItPmxlbjsKIAlpZiAocGwwMjItPmN1cl90cmFuc2Zlci0+Y3NfY2hhbmdlKQogCQlwbDAyMi0+Y3VyX2NoaXAtPgpAQCAtMTIyNCw3ICsxMjI0LDcgQEAKIAkJCQkgIm51bWJlciBvZiBieXRlcyBvbiBhIDE2Yml0IGJ1cz8pXG4iLAogCQkJCSAodTMyKSAocGwwMjItPnJ4IC0gcGwwMjItPnJ4X2VuZCkpOwogCQl9Ci0JCS8qIFVwZGF0ZSB0b3RhbCBieXRlcyB0cmFuc2ZlcmVkICovCisJCS8qIFVwZGF0ZSB0b3RhbCBieXRlcyB0cmFuc2ZlcnJlZCAqLwogCQltc2ctPmFjdHVhbF9sZW5ndGggKz0gcGwwMjItPmN1cl90cmFuc2Zlci0+bGVuOwogCQlpZiAocGwwMjItPmN1cl90cmFuc2Zlci0+Y3NfY2hhbmdlKQogCQkJcGwwMjItPmN1cl9jaGlwLT4KQEAgLTE0MTUsMTEgKzE0MTUsMTEgQEAKIAkJICAgICAgIFNTUF9DUjEocGwwMjItPnZpcnRiYXNlKSk7CiAKIAkJZGV2X2RiZygmcGwwMjItPmFkZXYtPmRldiwgInBvbGxpbmcgdHJhbnNmZXIgb25nb2luZyAuLi5cbiIpOwotCQkvKiBGSVhNRTogaW5zZXJ0IGEgdGltZW91dCBzbyB3ZSBkb24ndCBoYW5nIGhlcmUgaW5kZWZpbmF0ZWx5ICovCisJCS8qIEZJWE1FOiBpbnNlcnQgYSB0aW1lb3V0IHNvIHdlIGRvbid0IGhhbmcgaGVyZSBpbmRlZmluaXRlbHkgKi8KIAkJd2hpbGUgKHBsMDIyLT50eCA8IHBsMDIyLT50eF9lbmQgfHwgcGwwMjItPnJ4IDwgcGwwMjItPnJ4X2VuZCkKIAkJCXJlYWR3cml0ZXIocGwwMjIpOwogCi0JCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVyZWQgKi8KKwkJLyogVXBkYXRlIHRvdGFsIGJ5dGUgdHJhbnNmZXJyZWQgKi8KIAkJbWVzc2FnZS0+YWN0dWFsX2xlbmd0aCArPSBwbDAyMi0+Y3VyX3RyYW5zZmVyLT5sZW47CiAJCWlmIChwbDAyMi0+Y3VyX3RyYW5zZmVyLT5jc19jaGFuZ2UpCiAJCQlwbDAyMi0+Y3VyX2NoaXAtPmNzX2NvbnRyb2woU1NQX0NISVBfREVTRUxFQ1QpOwpAQCAtMjEyOSw3ICsyMTI5LDcgQEAKIAkJCSJwcm9iZSAtIHByb2JsZW0gcmVnaXN0ZXJpbmcgc3BpIG1hc3RlclxuIik7CiAJCWdvdG8gZXJyX3NwaV9yZWdpc3RlcjsKIAl9Ci0JZGV2X2RiZyhkZXYsICJwcm9iZSBzdWNjZWRlZFxuIik7CisJZGV2X2RiZyhkZXYsICJwcm9iZSBzdWNjZWVkZWRcbiIpOwogCS8qCiAJICogRGlzYWJsZSB0aGUgc2lsaWNvbiBibG9jayBwY2xrIGFuZCBhbnkgdm9sdGFnZSBkb21haW4gYW5kIGp1c3QKIAkgKiBwb3dlciBpdCB1cCBhbmQgY2xvY2sgaXQgd2hlbiBpdCdzIG5lZWRlZApAQCAtMjE4NCw3ICsyMTg0LDcgQEAKIAlzcGlfdW5yZWdpc3Rlcl9tYXN0ZXIocGwwMjItPm1hc3Rlcik7CiAJc3BpX21hc3Rlcl9wdXQocGwwMjItPm1hc3Rlcik7CiAJYW1iYV9zZXRfZHJ2ZGF0YShhZGV2LCBOVUxMKTsKLQlkZXZfZGJnKCZhZGV2LT5kZXYsICJyZW1vdmUgc3VjY2VkZWRcbiIpOworCWRldl9kYmcoJmFkZXYtPmRldiwgInJlbW92ZSBzdWNjZWVkZWRcbiIpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9hdTE1NTBfc3BpLmMgYi9kcml2ZXJzL3NwaS9hdTE1NTBfc3BpLmMKaW5kZXggM2M5YWRlNi4uYjUwNTYzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvYXUxNTUwX3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL2F1MTU1MF9zcGkuYwpAQCAtNDgwLDcgKzQ4MCw3IEBACiAJCWF1MXh4eF9kYmRtYV9zdG9wKGh3LT5kbWFfcnhfY2gpOwogCQlhdTF4eHhfZGJkbWFfc3RvcChody0+ZG1hX3R4X2NoKTsKIAotCQkvKiBnZXQgbnVtYmVyIG9mIHRyYW5zZmVyZWQgYnl0ZXMgKi8KKwkJLyogZ2V0IG51bWJlciBvZiB0cmFuc2ZlcnJlZCBieXRlcyAqLwogCQlody0+cnhfY291bnQgPSBody0+bGVuIC0gYXUxeHh4X2dldF9kbWFfcmVzaWR1ZShody0+ZG1hX3J4X2NoKTsKIAkJaHctPnR4X2NvdW50ID0gaHctPmxlbiAtIGF1MXh4eF9nZXRfZG1hX3Jlc2lkdWUoaHctPmRtYV90eF9jaCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL2R3X3NwaS5jIGIvZHJpdmVycy9zcGkvZHdfc3BpLmMKaW5kZXggOWE2MTk2NC4uYjFhNGI5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvZHdfc3BpLmMKKysrIGIvZHJpdmVycy9zcGkvZHdfc3BpLmMKQEAgLTM0NSw3ICszNDUsNyBAQAogCiB2b2lkIGR3X3NwaV94ZmVyX2RvbmUoc3RydWN0IGR3X3NwaSAqZHdzKQogewotCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVyZWQgcmV0dXJuIGNvdW50IGFjdHVhbCBieXRlcyByZWFkICovCisJLyogVXBkYXRlIHRvdGFsIGJ5dGUgdHJhbnNmZXJyZWQgcmV0dXJuIGNvdW50IGFjdHVhbCBieXRlcyByZWFkICovCiAJZHdzLT5jdXJfbXNnLT5hY3R1YWxfbGVuZ3RoICs9IGR3cy0+bGVuOwogCiAJLyogTW92ZSB0byBuZXh0IHRyYW5zZmVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9kd19zcGkuaCBiL2RyaXZlcnMvc3BpL2R3X3NwaS5oCmluZGV4IGZiMGJjZTUuLmIyM2U0NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2R3X3NwaS5oCisrKyBiL2RyaXZlcnMvc3BpL2R3X3NwaS5oCkBAIC00Niw3ICs0Niw3IEBACiAjZGVmaW5lIFNQSV9JTlRfUlhGSQkJCSgxIDw8IDQpCiAjZGVmaW5lIFNQSV9JTlRfTVNUSQkJCSgxIDw8IDUpCiAKLS8qIFRYIFJYIGludGVycnVwdCBsZXZlbCB0aHJlc2hob2xkLCBtYXggY2FuIGJlIDI1NiAqLworLyogVFggUlggaW50ZXJydXB0IGxldmVsIHRocmVzaG9sZCwgbWF4IGNhbiBiZSAyNTYgKi8KICNkZWZpbmUgU1BJX0lOVF9USFJFU0hPTEQJCTMyCiAKIGVudW0gZHdfc3NpX3R5cGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvZXA5M3h4X3NwaS5jIGIvZHJpdmVycy9zcGkvZXA5M3h4X3NwaS5jCmluZGV4IDBiYTM1ZGYuLmQzNTcwMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2VwOTN4eF9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9lcDkzeHhfc3BpLmMKQEAgLTUxMiw3ICs1MTIsNyBAQAogICoKICAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIG9uZSBTUEkgdHJhbnNmZXIgZ2l2ZW4gaW4gQHQuIEZ1bmN0aW9uIHdhaXRzIHVudGlsCiAgKiB0cmFuc2ZlciBpcyBjb21wbGV0ZSAobWF5IHNsZWVwKSBhbmQgdXBkYXRlcyBAbXNnLT5zdGF0dXMgYmFzZWQgb24gd2hldGhlcgotICogdHJhbnNmZXIgd2FzIHN1Y2Nlc2Z1bGx5IHByb2Nlc3NlZCBvciBub3QuCisgKiB0cmFuc2ZlciB3YXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCBvciBub3QuCiAgKi8KIHN0YXRpYyB2b2lkIGVwOTN4eF9zcGlfcHJvY2Vzc190cmFuc2ZlcihzdHJ1Y3QgZXA5M3h4X3NwaSAqZXNwaSwKIAkJCQkJc3RydWN0IHNwaV9tZXNzYWdlICptc2csCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMgYi9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMKaW5kZXggYTQyOWIwMS4uOWM3NGFhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYwpAQCAtNzAwLDcgKzcwMCw3IEBACiAJaWYgKCFweGEyNXhfc3NwX2NvbXAoZHJ2X2RhdGEpKQogCQl3cml0ZV9TU1RPKDAsIHJlZyk7CiAKLQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkIHJldHVybiBjb3VudCBhY3R1YWwgYnl0ZXMgcmVhZCAqLworCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkIHJldHVybiBjb3VudCBhY3R1YWwgYnl0ZXMgcmVhZCAqLwogCWRydl9kYXRhLT5jdXJfbXNnLT5hY3R1YWxfbGVuZ3RoICs9IGRydl9kYXRhLT5sZW4gLQogCQkJCShkcnZfZGF0YS0+cnhfZW5kIC0gZHJ2X2RhdGEtPnJ4KTsKIApAQCAtNzU5LDcgKzc1OSw3IEBACiAKIAkJLyoKIAkJICogUFhBMjV4X1NTUCBoYXMgbm8gdGltZW91dCwgc2V0IHVwIHJ4IHRocmVzaG91bGQgZm9yIHRoZQotCQkgKiByZW1haW5nIFJYIGJ5dGVzLgorCQkgKiByZW1haW5pbmcgUlggYnl0ZXMuCiAJCSAqLwogCQlpZiAocHhhMjV4X3NzcF9jb21wKGRydl9kYXRhKSkgewogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGkuYyBiL2RyaXZlcnMvc3BpL3NwaS5jCmluZGV4IDM0YmIxN2YuLjgyYjlhNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaS5jCkBAIC05NTcsNyArOTU3LDcgQEAKICAqIGRyaXZlcnMgbWF5IERNQSBkaXJlY3RseSBpbnRvIGFuZCBvdXQgb2YgdGhlIG1lc3NhZ2UgYnVmZmVycy4KICAqCiAgKiBUaGlzIGNhbGwgc2hvdWxkIGJlIHVzZWQgYnkgZHJpdmVycyB0aGF0IHJlcXVpcmUgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUKLSAqIFNQSSBidXMuIEl0IGhhcyB0byBiZSBwcmVjZWVkZWQgYnkgYSBzcGlfYnVzX2xvY2sgY2FsbC4gVGhlIFNQSSBidXMgbXVzdAorICogU1BJIGJ1cy4gSXQgaGFzIHRvIGJlIHByZWNlZGVkIGJ5IGEgc3BpX2J1c19sb2NrIGNhbGwuIFRoZSBTUEkgYnVzIG11c3QKICAqIGJlIHJlbGVhc2VkIGJ5IGEgc3BpX2J1c191bmxvY2sgY2FsbCB3aGVuIHRoZSBleGNsdXNpdmUgYWNjZXNzIGlzIG92ZXIuCiAgKgogICogSXQgcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MsIGVsc2UgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpX2JmaW41eHguYyBiL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMKaW5kZXggYTI4NDYyNC4uYmRiNzI4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3BpX2JmaW41eHguYworKysgYi9kcml2ZXJzL3NwaS9zcGlfYmZpbjV4eC5jCkBAIC05MDUsNyArOTA1LDcgQEAKIAkJCSJJTyB3cml0ZSBlcnJvciFcbiIpOwogCQltZXNzYWdlLT5zdGF0ZSA9IEVSUk9SX1NUQVRFOwogCX0gZWxzZSB7Ci0JCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVyZWQgKi8KKwkJLyogVXBkYXRlIHRvdGFsIGJ5dGUgdHJhbnNmZXJyZWQgKi8KIAkJbWVzc2FnZS0+YWN0dWFsX2xlbmd0aCArPSBkcnZfZGF0YS0+bGVuX2luX2J5dGVzOwogCQkvKiBNb3ZlIHRvIG5leHQgdHJhbnNmZXIgb2YgdGhpcyBtc2cgKi8KIAkJbWVzc2FnZS0+c3RhdGUgPSBiZmluX3NwaV9uZXh0X3RyYW5zZmVyKGRydl9kYXRhKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jIGIvZHJpdmVycy9zcGkvc3BpX2ZzbF9lc3BpLmMKaW5kZXggOTAwZTkyMS4uNDk2Zjg5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zcGkvc3BpX2ZzbF9lc3BpLmMKKysrIGIvZHJpdmVycy9zcGkvc3BpX2ZzbF9lc3BpLmMKQEAgLTQ3NCw3ICs0NzQsNyBAQAogCW1wYzh4eHhfc3BpID0gc3BpX21hc3Rlcl9nZXRfZGV2ZGF0YShzcGktPm1hc3Rlcik7CiAJcmVnX2Jhc2UgPSBtcGM4eHh4X3NwaS0+cmVnX2Jhc2U7CiAKLQlod19tb2RlID0gY3MtPmh3X21vZGU7IC8qIFNhdmUgb3JnaW5hbCBzZXR0aW5ncyAqLworCWh3X21vZGUgPSBjcy0+aHdfbW9kZTsgLyogU2F2ZSBvcmlnaW5hbCBzZXR0aW5ncyAqLwogCWNzLT5od19tb2RlID0gbXBjOHh4eF9zcGlfcmVhZF9yZWcoCiAJCQkmcmVnX2Jhc2UtPmNzbW9kZVtzcGktPmNoaXBfc2VsZWN0XSk7CiAJLyogbWFzayBvdXQgYml0cyB3ZSBhcmUgZ29pbmcgdG8gc2V0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NzYi9wY2kuYyBiL2RyaXZlcnMvc3NiL3BjaS5jCmluZGV4IGE0NjdiMjAuLjZmMzQ5NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL3BjaS5jCisrKyBiL2RyaXZlcnMvc3NiL3BjaS5jCkBAIC02NzAsNyArNjcwLDcgQEAKIAkJc3NiX3ByaW50ayhLRVJOX0VSUiBQRlggIk5vIFNQUk9NIGF2YWlsYWJsZSFcbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9Ci0JaWYgKGJ1cy0+Y2hpcGNvLmRldikgewkvKiBjYW4gYmUgdW5hdmFpbGlibGUhICovCisJaWYgKGJ1cy0+Y2hpcGNvLmRldikgewkvKiBjYW4gYmUgdW5hdmFpbGFibGUhICovCiAJCS8qCiAJCSAqIGdldCBTUFJPTSBvZmZzZXQ6IFNTQl9TUFJPTV9CQVNFMSBleGNlcHQgZm9yCiAJCSAqIGNoaXBjb21tb24gcmV2ID49IDMxIG9yIGNoaXAgSUQgaXMgMHg0MzEyIGFuZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2Ivc3Byb20uYyBiL2RyaXZlcnMvc3NiL3Nwcm9tLmMKaW5kZXggNGY3Y2M4ZC4uNWYzNGQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zc2Ivc3Byb20uYworKysgYi9kcml2ZXJzL3NzYi9zcHJvbS5jCkBAIC0xODUsNyArMTg1LDcgQEAKIAkvKiB0aGlzIHJvdXRpbmUgZGlmZmVycyBmcm9tIHNwZWNzIGFzIHdlIGRvIG5vdCBhY2Nlc3MgU1BST00gZGlyZWN0bHkKIAkgICBvbiBQQ01DSUEgKi8KIAlpZiAoYnVzLT5idXN0eXBlID09IFNTQl9CVVNUWVBFX1BDSSAmJgotCSAgICBidXMtPmNoaXBjby5kZXYgJiYJLyogY2FuIGJlIHVuYXZhaWxpYmxlISAqLworCSAgICBidXMtPmNoaXBjby5kZXYgJiYJLyogY2FuIGJlIHVuYXZhaWxhYmxlISAqLwogCSAgICBidXMtPmNoaXBjby5kZXYtPmlkLnJldmlzaW9uID49IDMxKQogCQlyZXR1cm4gYnVzLT5jaGlwY28uY2FwYWJpbGl0aWVzICYgU1NCX0NISVBDT19DQVBfU1BST007CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaHRjMi9BUjYwMDAvYXI2a19nbWJveF9oY2l1YXJ0LmMgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2h0YzIvQVI2MDAwL2FyNmtfZ21ib3hfaGNpdWFydC5jCmluZGV4IGM2NDg4ZTAuLjQxMjIzZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaHRjMi9BUjYwMDAvYXI2a19nbWJveF9oY2l1YXJ0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9odGMyL0FSNjAwMC9hcjZrX2dtYm94X2hjaXVhcnQuYwpAQCAtMjM3LDcgKzIzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcFByb3QtPkNyZWRpdHNDdXJyZW50U2VlaykpOwogICAgICAgICAKICAgICAgICAgaWYgKHBQcm90LT5DcmVkaXRzQXZhaWxhYmxlID49IHBQcm90LT5DcmVkaXRzQ3VycmVudFNlZWspIHsKLSAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIGVub3VnaCBjcmVkaXRzIHRvIGZ1bGxmaWxsIGF0IGxlYXN0IDEgcGFja2V0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlICovCisgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSBlbm91Z2ggY3JlZGl0cyB0byBmdWxmaWxsIGF0IGxlYXN0IDEgcGFja2V0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlICovCiAgICAgICAgICAgICBwUHJvdC0+Q3JlZGl0c0N1cnJlbnRTZWVrID0gMDsKICAgICAgICAgICAgIHBQcm90LT5TZW5kU3RhdGVGbGFncyAmPSB+SENJX1NFTkRfV0FJVF9DUkVESVRTOyAgCiAgICAgICAgICAgICBkb1BlbmRpbmdTZW5kcyA9IHRydWU7CkBAIC0yODUsNyArMjg1LDcgQEAKIHsKICAgICBzdHJ1Y3QgZ21ib3hfcHJvdG9faGNpX3VhcnQgICpwUHJvdCA9IChzdHJ1Y3QgZ21ib3hfcHJvdG9faGNpX3VhcnQgKilwQ29udGV4dDsgCiAgICAgCi0gICAgICAgIC8qIHRhcmdldCBhc3NlcnRpb24gb2NjdXJlZCAqLyAgICAgICAgICAgCisgICAgICAgIC8qIHRhcmdldCBhc3NlcnRpb24gb2NjdXJyZWQgKi8gICAgICAgICAgIAogICAgIE5vdGlmeVRyYW5zcG9ydEZhaWx1cmUocFByb3QsIFN0YXR1cyk7ICAKIH0KIApAQCAtNTA3LDcgKzUwNyw3IEBACiAgICAgICAgIAogICAgIH0gd2hpbGUgKGZhbHNlKTsKICAgICAgICAgCi0gICAgICAgIC8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgcmVjaWV2ZXIgKi8KKyAgICAgICAgLyogY2hlY2sgaWYgd2UgbmVlZCB0byBkaXNhYmxlIHRoZSByZWNlaXZlciAqLwogICAgIGlmIChzdGF0dXMgfHwgYmxvY2tSZWN2KSB7CiAgICAgICAgIERldkdNYm94SVJRQWN0aW9uKHBQcm90LT5wRGV2LCBHTUJPWF9SRUNWX0lSUV9ESVNBQkxFLCBQUk9DX0lPX1NZTkMpOyAKICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvYWdncl9yZWN2X2FwaS5oIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2FnZ3JfcmVjdl9hcGkuaAppbmRleCA2N2EwNTg0Li41ZWFkNThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvYWdncl9yZWN2X2FwaS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9hZ2dyX3JlY3ZfYXBpLmgKQEAgLTcyLDcgKzcyLDcgQEAKICAqIFRoaXMgZXZlbnQgaXMgdG8gaW5pdGlhdGUvbW9kaWZ5IHRoZSByZWNlaXZlIHNpZGUgd2luZG93LgogICogVGFyZ2V0IHdpbGwgc2VuZCBXTUlfQUREQkFfUkVRX0VWRU5USUQgZXZlbnQgdG8gaG9zdCAtIHRvIHNldHVwIAogICogcmVjdiByZS1vcmRlcmluZyBxdWV1ZXMuIFRhcmdldCB3aWxsIG5lZ290aWF0ZSBBRERCQSB3aXRoIHBlZXIsIAotICogYW5kIGluZGljYXRlIHZpYSB0aGlzIGV2ZW50IGFmdGVyIHN1Y2Nlc2Z1bGx5IGNvbXBsZXRpbmcgdGhlIAorICogYW5kIGluZGljYXRlIHZpYSB0aGlzIGV2ZW50IGFmdGVyIHN1Y2Nlc3NmdWxseSBjb21wbGV0aW5nIHRoZSAKICAqIG5lZ290aWF0aW9uLiBUaGlzIGhhcHBlbnMgaW4gdHdvIHNpdHVhdGlvbnM6CiAgKiAgMS4gSW5pdGlhbCBzZXR1cCBvZiBhZ2dyZWdhdGlvbgogICogIDIuIFJlbmVnb3RpYXRpb24gb2YgY3VycmVudCByZWN2IHdpbmRvdy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vYV9oY2kuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vYV9oY2kuaAppbmRleCAwOGNiMDEzLi4zNzlkNjUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2FfaGNpLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9hX2hjaS5oCkBAIC0xMjQsNyArMTI0LDcgQEAKICNkZWZpbmUgUEFMX05VTV9DT01QTF9EQVRBX0JMT0NLX0VWRU5UICAgICAgICAgICAgICAweDQ4CiAjZGVmaW5lIFBBTF9TSE9SVF9SQU5HRV9NT0RFX0NIQU5HRV9DT01QTF9FVkVOVCAgICAgMHg0QwogI2RlZmluZSBQQUxfQU1QX1NUQVRVU19DSEFOR0VfRVZFTlQgICAgICAgICAgICAgICAgIDB4NEQKLS8qPT09PT09PT0gRW5kIG9mIFBBTCBldmVudHMgZGVmaW5pdG9uID09PT09PT09PT09PT09PT09Ki8KKy8qPT09PT09PT0gRW5kIG9mIFBBTCBldmVudHMgZGVmaW5pdGlvbiA9PT09PT09PT09PT09PT09PSovCiAKIAogLyo9PT09PT09PSBUaW1lb3V0cyAobm90IHBhcnQgb2YgSENJIGNtZCwgYnV0IGlucHV0IHRvIFBBTCBlbmdpbmUpID09PT09PT09PSovCkBAIC00MzAsNyArNDMwLDcgQEAKICAgICB1OCBod19lcnJfY29kZTsKIH0gUE9TVFBBQ0sgSENJX0VWRU5UX0hXX0VSUjsKIAotLyogRmx1c2ggb2NjdXJlZCBldmVudCAqLworLyogRmx1c2ggb2NjdXJyZWQgZXZlbnQgKi8KIC8qIFFvcyBWaW9sYXRpb24gZXZlbnQgKi8KIHR5cGVkZWYgc3RydWN0ICBoY2lfZXZlbnRfaGFuZGxlX3QgewogICAgIHU4IGV2ZW50X2NvZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2RiZ2xvZy5oIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9kYmdsb2cuaAppbmRleCAzYTNkMDBkLi5iN2ExMjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2RiZ2xvZy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vZGJnbG9nLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgREJHTE9HX01PRFVMRUlEX05VTV9NQVggICAgICAgICAgMTYgLyogVXBwZXIgbGltaXQgaXMgd2lkdGggb2YgbWFzayAqLwogCiAvKgotICogUGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBkZWZpbml0aW9uIG9mIGFueSBuZXcgbW9kdWxlIGludHJkdWNlZCBpcyBjYXB0dXJlZAorICogUGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBkZWZpbml0aW9uIG9mIGFueSBuZXcgbW9kdWxlIGludHJvZHVjZWQgaXMgY2FwdHVyZWQKICAqIGJldHdlZW4gdGhlIERCR0xPR19NT0RVTEVJRF9TVEFSVCBhbmQgREJHTE9HX01PRFVMRUlEX0VORCBkZWZpbmVzLiBUaGUgCiAgKiBzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBwYXJzZXIgdG8gY29ycmVjdGx5IHBpY2sgdXAgdGhlIHZhbHVlcyBmb3IKICAqIGRpZmZlcmVudCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9lcHBpbmdfdGVzdC5oIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9lcHBpbmdfdGVzdC5oCmluZGV4IDVjNDBkOGEuLjcwMjdmYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vZXBwaW5nX3Rlc3QuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2VwcGluZ190ZXN0LmgKQEAgLTkyLDcgKzkyLDcgQEAKICNkZWZpbmUgRVBQSU5HX0NNRF9SRVNFVF9SRUNWX0NOVCAgICAgICAyICAgLyogcmVzZXQgcmVjdiBjb3VudCAqLwogI2RlZmluZSBFUFBJTkdfQ01EX0NBUFRVUkVfUkVDVl9DTlQgICAgIDMgICAvKiBmZXRjaCByZWN2IGNvdW50LCA0LWJ5dGUgY291bnQgcmV0dXJuZWQgaW4gQ21kQnVmZmVyX3QgKi8KICNkZWZpbmUgRVBQSU5HX0NNRF9OT19FQ0hPICAgICAgICAgICAgICA0ICAgLyogbm9uLWVjaG8gcGFja2V0IHRlc3QgKHR4LW9ubHkpICovCi0jZGVmaW5lIEVQUElOR19DTURfQ09OVF9SWF9TVEFSVCAgICAgICAgNSAgIC8qIGNvbnRpbm91cyBSWCBwYWNrZXRzLCBwYXJhbWV0ZXJzIGFyZSBpbiBDbWRCdWZmZXJfaCAqLworI2RlZmluZSBFUFBJTkdfQ01EX0NPTlRfUlhfU1RBUlQgICAgICAgIDUgICAvKiBjb250aW51b3VzIFJYIHBhY2tldHMsIHBhcmFtZXRlcnMgYXJlIGluIENtZEJ1ZmZlcl9oICovCiAjZGVmaW5lIEVQUElOR19DTURfQ09OVF9SWF9TVE9QICAgICAgICAgNiAgIC8qIHN0b3AgY29udGludW91cyBSWCBwYWNrZXQgdHJhbnNtaXNzaW9uICovCiAKICAgICAvKiB0ZXN0IGNvbW1hbmQgcGFyYW1ldGVycyBtYXkgYmUgbm8gbW9yZSB0aGFuIDggYnl0ZXMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vaW5pX2RzZXQuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vaW5pX2RzZXQuaAppbmRleCA4YmZjNzU5Li5hOWUwNWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2luaV9kc2V0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9pbmlfZHNldC5oCkBAIC0zMSw3ICszMSw3IEBACiAgKi8KIHR5cGVkZWYgZW51bSB7CiAjaWYgZGVmaW5lZChBUjYwMDJfUkVWNCkgfHwgZGVmaW5lZChBUjYwMDMpCi0vKiBBZGQgdGhlc2UgZGVmaW5pdGlvbnMgZm9yIGNvbXBhdGFiaWxpdHkgICovCisvKiBBZGQgdGhlc2UgZGVmaW5pdGlvbnMgZm9yIGNvbXBhdGliaWxpdHkgICovCiAjZGVmaW5lIFdIQUxfSU5JX0RBVEFfSURfQkJfUkZHQUlOX0xOQTEgV0hBTF9JTklfREFUQV9JRF9CQl9SRkdBSU4KICNkZWZpbmUgV0hBTF9JTklfREFUQV9JRF9CQl9SRkdBSU5fTE5BMiBXSEFMX0lOSV9EQVRBX0lEX0JCX1JGR0FJTgogICAgIFdIQUxfSU5JX0RBVEFfSURfTlVMTCAgICAgICAgICAgICAgID0wLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi90ZXN0Y21kLmggYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL3Rlc3RjbWQuaAppbmRleCA5Y2ExZjJhLi43ZDk0YWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL3Rlc3RjbWQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL3Rlc3RjbWQuaApAQCAtNDMsOCArNDMsOCBAQAogICAgIFBOMTVfUEFUVEVSTgogfVRYX0RBVEFfUEFUVEVSTjsKIAotLyogQ29udGlub3VzIHR4Ci0gICBtb2RlIDogVENNRF9DT05UX1RYX09GRiAtIERpc2FibGluZyBjb250aW5vdXMgdHgKKy8qIENvbnRpbnVvdXMgdHgKKyAgIG1vZGUgOiBUQ01EX0NPTlRfVFhfT0ZGIC0gRGlzYWJsaW5nIGNvbnRpbnVvdXMgdHgKICAgICAgICAgICBUQ01EX0NPTlRfVFhfU0lORSAtIEVuYWJsZSBjb250aW51b3VzIHVubW9kdWxhdGVkIHR4CiAgICAgICAgICAgVENNRF9DT05UX1RYX0ZSQU1FLSBFbmFibGUgY29udGludW91cyBtb2R1bGF0ZWQgdHgKICAgIGZyZXEgOiBDaGFubmVsIGZyZXEgaW4gTWh6LiAoZS5nIDI0MTIgZm9yIGNoYW5uZWwgMSBpbiAxMSBnKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi93bWkuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21pLmgKaW5kZXggYzY0NWFmMy4uNGU2MzQzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi93bWkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL3dtaS5oCkBAIC0xNTY4LDggKzE1NjgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggdG8gcHMtcG9sbCBtb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IDMgKi8KIAotCXUzMiBzY29Db250U3RvbXBNYXg7ICAgLyogbWF4IG51bWJlciBvZiBjb250aW5vdXMgc3RvbXAgYWxsb3dlZCBpbiBvcHQgbW9kZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhjZWRkZWQgc3dpdGNoIHRvIHBzcG9sbCBtb2RlCisJdTMyIHNjb0NvbnRTdG9tcE1heDsgICAvKiBtYXggbnVtYmVyIG9mIGNvbnRpbnVvdXMgc3RvbXAgYWxsb3dlZCBpbiBvcHQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhjZWVkZWQgc3dpdGNoIHRvIHBzcG9sbCBtb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gMyAqLwogCiAJdTMyIHNjb01pbmxvd1JhdGVNYnBzOyAvKiBMb3cgcmF0ZSB0aHJlc2hvbGQgKi8KQEAgLTIwODQsNyArMjA4NCw3IEBACiAvKgogICogQlNTIElORk8gSERSIHZlcnNpb24gMi4wCiAgKiBXaXRoIDYgYnl0ZXMgSFRDIGhlYWRlciBhbmQgNiBieXRlcyBvZiBXTUkgaGVhZGVyCi0gKiBXTUlfQlNTX0lORk9fSERSIGNhbm5vdCBiZSBhY2NvbW9kYXRlZCBpbiB0aGUgcmVtb3ZlZCA4MDIuMTEgbWFuYWdlbWVudAorICogV01JX0JTU19JTkZPX0hEUiBjYW5ub3QgYmUgYWNjb21tb2RhdGVkIGluIHRoZSByZW1vdmVkIDgwMi4xMSBtYW5hZ2VtZW50CiAgKiBoZWFkZXIgc3BhY2UuCiAgKiAtIFJlZHVjZSB0aGUgaWVNYXNrIHRvIDIgYnl0ZXMgYXMgb25seSB0d28gYml0IGZsYWdzIGFyZSB1c2VkCiAgKiAtIFJlbW92ZSByc3NpIGFuZCBjb21wdXRlIGl0IG9uIHRoZSBob3N0LiByc3NpID0gc25yIC0gOTUKQEAgLTI5MTEsNyArMjkxMSw3IEBACiAgICAgdTggcGt0SUQ7IC8qIHBhY2tldCBJRCB0byBpZGVudGlmeSBwYXJlbnQgcGFja2V0ICovCiAgICAgdTggcmF0ZUlkeDsgLyogcmF0ZSBpbmRleCBvbiBzdWNjZXNzZnVsIHRyYW5zbWlzc2lvbiAqLwogICAgIHU4IGFja0ZhaWx1cmVzOyAvKiBudW1iZXIgb2YgQUNLIGZhaWx1cmVzIGluIHR4IGF0dGVtcHQgKi8KLSNpZiAwIC8qIG9wdGlvbmFsIHBhcmFtcyBjdXJyZW50bHkgb21taXR0ZWQuICovCisjaWYgMCAvKiBvcHRpb25hbCBwYXJhbXMgY3VycmVudGx5IG9taXR0ZWQuICovCiAgICAgdTMyIHF1ZXVlRGVsYXk7IC8vIHVzZWMgZGVsYXkgbWVhc3VyZWQgVHggU3RhcnQgdGltZSAtIGhvc3QgZGVsaXZlcnkgdGltZQogICAgIHUzMiBtZWRpYURlbGF5OyAvLyB1c2VjIGRlbGF5IG1lYXN1cmVkIEFDSyByeCB0aW1lIC0gaG9zdCBkZWxpdmVyeSB0aW1lCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21peC5oIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi93bWl4LmgKaW5kZXggNWViYjgyOC4uMzZhY2JhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi93bWl4LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi93bWl4LmgKQEAgLTE5MSw3ICsxOTEsNyBAQAogfSBQT1NUUEFDSyBXTUlYX0dQSU9fSU5UUl9BQ0tfQ01EOwogCiAvKgotICogVGFyZ2V0IGluZm9ybXMgSG9zdCBvZiBHUElPIGludGVycnVwdHMgdGhhdCBoYXZlIG9jdXJyZWQgc2luY2UgdGhlCisgKiBUYXJnZXQgaW5mb3JtcyBIb3N0IG9mIEdQSU8gaW50ZXJydXB0cyB0aGF0IGhhdmUgb2NjdXJyZWQgc2luY2UgdGhlCiAgKiBsYXN0IFdNSVhfR0lQT19JTlRSX0FDS19DTUQgd2FzIHJlY2VpdmVkLiAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiAtLQogICogdGhlIGN1cnJlbnQgR1BJTyBpbnB1dCB2YWx1ZXMgaXMgcHJvdmlkZWQgLS0gaW4gb3JkZXIgdG8gc3VwcG9ydAogICogdXNlIG9mIGEgR1BJTyBpbnRlcnJ1cHQgYXMgYSBEYXRhIFZhbGlkIHNpZ25hbCBmb3Igb3RoZXIgR1BJTyBwaW5zLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2h0Y19hcGkuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9odGNfYXBpLmgKaW5kZXggMWJjMjQ4OC4uNGZiNzY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2h0Y19hcGkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvaHRjX2FwaS5oCkBAIC0yMDksNyArMjA5LDcgQEAKIHR5cGVkZWYgZW51bSBfSFRDX0NSRURJVF9ESVNUX1JFQVNPTiB7CiAgICAgSFRDX0NSRURJVF9ESVNUX1NFTkRfQ09NUExFVEUgPSAwLCAgICAgLyogY3JlZGl0cyBhdmFpbGFibGUgYXMgYSByZXN1bHQgb2YgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZCBvcGVyYXRpb25zIChNQU5EQVRPUlkpIHJlc3VsdGluZyBpbiBjcmVkaXQgcmVwb3J0cyAqLwotICAgIEhUQ19DUkVESVRfRElTVF9BQ1RJVklUWV9DSEFOR0UgPSAxLCAgIC8qIGEgY2hhbmdlIGluIGVuZHBvaW50IGFjdGl2aXR5IG9jY3VyZWQgKE9QVElPTkFMKSAqLworICAgIEhUQ19DUkVESVRfRElTVF9BQ1RJVklUWV9DSEFOR0UgPSAxLCAgIC8qIGEgY2hhbmdlIGluIGVuZHBvaW50IGFjdGl2aXR5IG9jY3VycmVkIChPUFRJT05BTCkgKi8KICAgICBIVENfQ1JFRElUX0RJU1RfU0VFS19DUkVESVRTLCAgICAgICAgICAvKiBhbiBlbmRwb2ludCBuZWVkcyB0byAic2VlayIgY3JlZGl0cyAoT1BUSU9OQUwpICovCiAgICAgSFRDX0RVTVBfQ1JFRElUX1NUQVRFICAgICAgICAgICAgICAgICAgLyogZm9yIGRlYnVnZ2luZywgZHVtcCBhbnkgc3RhdGUgaW5mb3JtYXRpb24gdGhhdCBpcyBrZXB0IGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiAqLwpAQCAtMjUzLDcgKzI1Myw3IEBACiAgICAgdTMyIFJ4UGFja2V0c0J1bmRsZWQ7ICAgICAgIC8qIGNvdW50IG9mIHJlY3YgcGFja2V0cyByZWNlaXZlZCBpbiBhIGJ1bmRsZSAqLwogICAgIHUzMiBSeEJ1bmRsZUxvb2tBaGVhZHM7ICAgICAvKiBjb3VudCBvZiBudW1iZXIgb2YgYnVuZGxlZCBsb29rYWhlYWRzICovCiAgICAgdTMyIFJ4QnVuZGxlSW5kRnJvbUhkcjsgICAgIC8qIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYnVuZGxlIGluZGljYXRpb25zIGZyb20gdGhlIEhUQyBoZWFkZXIgKi8KLSAgICB1MzIgUnhBbGxvY1RocmVzaEhpdDsgICAgICAgLyogY291bnQgb2YgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgcmVjdiBhbGxvY2F0aW9uIHRocmVzaGhvbGQgd2FzIGhpdCAqLworICAgIHUzMiBSeEFsbG9jVGhyZXNoSGl0OyAgICAgICAvKiBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSByZWN2IGFsbG9jYXRpb24gdGhyZXNob2xkIHdhcyBoaXQgKi8KICAgICB1MzIgUnhBbGxvY1RocmVzaEJ5dGVzOyAgICAgLyogdG90YWwgbnVtYmVyIG9mIGJ5dGVzICovCiB9OwogCkBAIC0zOTEsNyArMzkxLDcgQEAKICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysqLwogdm9pZCAgICAgICAgSFRDU3RvcChIVENfSEFORExFIEhUQ0hhbmRsZSk7CiAvKisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gIEBkZXNjOiBEZXN0b3J5IEhUQyBzZXJ2aWNlCisgIEBkZXNjOiBEZXN0cm95IEhUQyBzZXJ2aWNlCiAgIEBmdW5jdGlvbiBuYW1lOiBIVENEZXN0cm95CiAgIEBpbnB1dDogSFRDSGFuZGxlIAogICBAb3V0cHV0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9taXNjZHJ2L2NyZWRpdF9kaXN0LmMgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL21pc2NkcnYvY3JlZGl0X2Rpc3QuYwppbmRleCBhZTU0ZTFmLi4zM2ZhMDIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL21pc2NkcnYvY3JlZGl0X2Rpc3QuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL21pc2NkcnYvY3JlZGl0X2Rpc3QuYwpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgICAgIGNyZWRpdHMgPSBtaW4ocENyZWRJbmZvLT5DdXJyZW50RnJlZUNyZWRpdHMscEVQRGlzdC0+VHhDcmVkaXRzU2Vlayk7CiAKICAgICAgICAgaWYgKGNyZWRpdHMgPj0gcEVQRGlzdC0+VHhDcmVkaXRzU2VlaykgewotICAgICAgICAgICAgICAgIC8qIHdlIGZvdW5kIHNvbWUgdG8gZnVsbGZpbGwgdGhlIHNlZWsgcmVxdWVzdCAqLworICAgICAgICAgICAgICAgIC8qIHdlIGZvdW5kIHNvbWUgdG8gZnVsZmlsbCB0aGUgc2VlayByZXF1ZXN0ICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0zNjQsOCArMzY0LDggQEAKIAogICAgICAgICAgICAgaWYgKChwQ3VyRXBEaXN0LT5UeENyZWRpdHNBc3NpZ25lZCAtIG5lZWQpID49IHBDdXJFcERpc3QtPlR4Q3JlZGl0c01pbikgewogICAgICAgICAgICAgICAgICAgICAvKiB0aGUgY3VycmVudCBvbmUgaGFzIGJlZW4gYWxsb2NhdGVkIG1vcmUgdGhhbiBpdCdzIG1pbmltdW0gYW5kIGl0Ci0gICAgICAgICAgICAgICAgICAgICAqIGhhcyBlbm91Z2ggY3JlZGl0cyBhc3NpZ25lZCBhYm92ZSBpdCdzIG1pbmltdW0gdG8gZnVsbGZpbGwgb3VyIG5lZWQKLSAgICAgICAgICAgICAgICAgICAgICogdHJ5IHRvIHRha2UgYXdheSBqdXN0IGVub3VnaCB0byBmdWxsZmlsbCBvdXIgbmVlZCAqLworICAgICAgICAgICAgICAgICAgICAgKiBoYXMgZW5vdWdoIGNyZWRpdHMgYXNzaWduZWQgYWJvdmUgaXQncyBtaW5pbXVtIHRvIGZ1bGZpbGwgb3VyIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICogdHJ5IHRvIHRha2UgYXdheSBqdXN0IGVub3VnaCB0byBmdWxmaWxsIG91ciBuZWVkICovCiAgICAgICAgICAgICAgICAgUmVkdWNlQ3JlZGl0cyhwQ3JlZEluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQ3VyRXBEaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEN1ckVwRGlzdC0+VHhDcmVkaXRzQXNzaWduZWQgLSBuZWVkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvb3MvbGludXgvYXI2MDAwX2FuZHJvaWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvb3MvbGludXgvYXI2MDAwX2FuZHJvaWQuYwppbmRleCBjOTZmNmU5Li40YWE3NWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9hbmRyb2lkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9vcy9saW51eC9hcjYwMDBfYW5kcm9pZC5jCkBAIC0zNzIsNyArMzcyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobmVlZFdha2UpIHsKLSAgICAgICAgICAgIC8qIGtlZXAgaG9zdCB3YWtlIHVwIGlmIHRoZXJlIGlzIGFueSBldmVudCBhbmQgcGFja2F0ZSBjb21taW5nIGluKi8KKyAgICAgICAgICAgIC8qIGtlZXAgaG9zdCB3YWtlIHVwIGlmIHRoZXJlIGlzIGFueSBldmVudCBhbmQgcGFja2F0ZSBjb21pbmcgaW4qLwogICAgICAgICAgICAgaWYgKHdvd2xlZG9uKSB7CiAgICAgICAgICAgICAgICAgY2hhciBidWZbMzJdOwogICAgICAgICAgICAgICAgIGludCBsZW4gPSBzcHJpbnRmKGJ1ZiwgIm9uIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvb3MvbGludXgvYXI2MDAwX2Rydi5jCmluZGV4IDI3Y2IwMmQuLjk3ZDZjZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvb3MvbGludXgvYXI2MDAwX2Rydi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvb3MvbGludXgvYXI2MDAwX2Rydi5jCkBAIC01MjAsNyArNTIwLDcgQEAKIGludAogYXI2MDAwX2RiZ2xvZ19nZXRfZGVidWdfbG9ncyhzdHJ1Y3QgYXI2X3NvZnRjICphcikKIHsKLSAgICB1MzIgZGF0YVs4XTsgLyogU2hvdWxkIGJlIGFibGUgdG8gYWNjb21vZGF0ZSBzdHJ1Y3QgZGJnbG9nX2J1Zl9zICovCisgICAgdTMyIGRhdGFbOF07IC8qIFNob3VsZCBiZSBhYmxlIHRvIGFjY29tbW9kYXRlIHN0cnVjdCBkYmdsb2dfYnVmX3MgKi8KICAgICB1MzIgYWRkcmVzczsKICAgICB1MzIgbGVuZ3RoOwogICAgIHUzMiBkcm9wcGVkOwpAQCAtMjA2Myw3ICsyMDYzLDcgQEAKICAqIC0gSW4gY2FzZSBvZiBzdXJwcmlzZSByZW1vdmFsLCB0aGUgaGNkIGFscmVhZHkgZnJlZXMgdXAgdGhlIHBlbmRpbmcKICAqICAgZm9yIHRoZSBkZXZpY2UgYW5kIGhlbmNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gdW5yZWdpc3RlciB0aGUgZnVuY3Rpb24KICAqICAgZHJpdmVyIGlub3JkZXIgdG8gZ2V0IHRoZXNlIHJlcXVlc3RzLiBGb3IgcGxhbm5lZCByZW1vdmFsLCB0aGUgZnVuY3Rpb24KLSAqICAgZHJpdmVyIGhhcyB0byBleHBsaWN0bHkgdW5yZWdpc3RlciBpdHNlbGYgdG8gaGF2ZSB0aGUgaGNkIHJldHVybiBhbGwgdGhlCisgKiAgIGRyaXZlciBoYXMgdG8gZXhwbGljaXRseSB1bnJlZ2lzdGVyIGl0c2VsZiB0byBoYXZlIHRoZSBoY2QgcmV0dXJuIGFsbCB0aGUKICAqICAgcGVuZGluZyByZXF1ZXN0cyBiZWZvcmUgdGhlIGRhdGEgc3RydWN0dXJlcyBmb3IgdGhlIGRldmljZXMgYXJlIGZyZWVkIHVwLgogICogICBOb3RlIHRoYXQgYXMgcGVyIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgZnVuY3Rpb24gZHJpdmVyIHdpbGwKICAqICAgZW5kIHVwIHJlbGVhc2luZyBhbGwgdGhlIGRldmljZXMgc2luY2UgdGhlcmUgaXMgbm8gQVBJIHRvIHNlbGVjdGl2ZWx5CkBAIC0yOTgyLDcgKzI5ODIsNyBAQAogICAgIC8qIElmIHRhcmdldCBpcyBub3QgYXNzb2NpYXRlZCAqLwogICAgIGlmKCAoIWFyLT5hckNvbm5lY3RlZCAmJiAhYnlwYXNzd21pKQogI2lmZGVmIENPTkZJR19IT1NUX1RDTURfU1VQUE9SVAotICAgICAvKiBUQ01EIGRvZXNudCBzdXBwb3J0IGFueSBkYXRhLCBmcmVlIHRoZSBidWYgYW5kIHJldHVybiAqLworICAgICAvKiBUQ01EIGRvZXNuJ3Qgc3VwcG9ydCBhbnkgZGF0YSwgZnJlZSB0aGUgYnVmIGFuZCByZXR1cm4gKi8KICAgICB8fCAoYXItPmFyVGFyZ2V0TW9kZSA9PSBBUjYwMDBfVENNRF9NT0RFKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewpAQCAtNjM5Myw3ICs2MzkzLDcgQEAKIC8qCiAgKiBBZGQgc3VwcG9ydCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBhIHZpcnR1YWwgYWRhcHRlciBmb3Igc29mdCBBUC4KICAqIFNvbWUgT1MgcmVxdWlyZXMgZGlmZmVyZW50IGFkYXB0ZXJzIG5hbWVzIGZvciBzdGF0aW9uIGFuZCBzb2Z0IEFQIG1vZGUuCi0gKiBUbyBzdXBwb3J0IHRoZXNlIHJlcXVpcmVtZW50LCBjcmVhdGUgYW5kIGRlc3RvcnkgYSBuZXRkZXZpY2UgIGluc3RhbmNlCisgKiBUbyBzdXBwb3J0IHRoZXNlIHJlcXVpcmVtZW50LCBjcmVhdGUgYW5kIGRlc3Ryb3kgYSBuZXRkZXZpY2UgIGluc3RhbmNlCiAgKiB3aGVuIHRoZSBBUCBtb2RlIGlzIG9wZXJhdGlvbmFsLiBBIGZ1bGwgZmxlZGdlZCBzdXBwb3J0IGZvciB2aXJ1YWwgZGV2aWNlCiAgKiBpcyBub3QgaW1wbGVtZW50ZWQuIFJhdGhlciBhIHZpcnR1YWwgaW50ZXJmYWNlIGlzIGNyZWF0ZWQgYW5kIGlzIGxpbmtlZAogICogd2l0aCB0aGUgZXhpc3RpbmcgcGh5c2ljYWwgZGV2aWNlIGluc3RhbmNlIGR1cmluZyB0aGUgb3BlcmF0aW9uIG9mIHRoZSAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvd21pL3dtaS5jIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC93bWkvd21pLmMKaW5kZXggMGRkYWVlMi4uYTAwYmYwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC93bWkvd21pLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC93bWkvd21pLmMKQEAgLTQ4NjcsNyArNDg2Nyw3IEBACiAjaWZkZWYgQ09ORklHX0hPU1RfVENNRF9TVVBQT1JUCiAvKiBXTUkgIGxheWVyIGRvZXNuJ3QgbmVlZCB0byBrbm93IHRoZSBkYXRhIHR5cGUgb2YgdGhlIHRlc3QgY21kLgogICAgVGhpcyB3b3VsZCBiZSBiZW5lZmljaWFsIGZvciBjdXN0b21lcnMgbGlrZSBRdWFsY29tbSwgd2hvIG1pZ2h0Ci0gICBoYXZlIGRpZmZlcmVudCB0ZXN0IGNvbW1hbmQgcmVxdWlyZW1lbnRzIGZyb20gZGlmZmVybnQgbWFudWZhY3R1cmVycworICAgaGF2ZSBkaWZmZXJlbnQgdGVzdCBjb21tYW5kIHJlcXVpcmVtZW50cyBmcm9tIGRpZmZlcmVudCBtYW51ZmFjdHVyZXJzCiAgKi8KIGludAogd21pX3Rlc3RfY21kKHN0cnVjdCB3bWlfdCAqd21pcCwgdTggKmJ1ZiwgdTMyIGxlbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vQWRhcHRlci5oIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9BZGFwdGVyLmgKaW5kZXggMzI5MDllMi4uMjBjY2EyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9BZGFwdGVyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9BZGFwdGVyLmgKQEAgLTQxMiw3ICs0MTIsNyBAQAogCiAJLy8gdGhpcyB0byBrZWVwIHRyYWNrIG9mIHRoZSBUeCBhbmQgUnggTWFpbEJveCBSZWdpc3RlcnMuCiAJYXRvbWljX3QJCSAgICBDdXJyTnVtRnJlZVR4RGVzYzsKLQkvLyB0byBrZWVwIHRyYWNrIHRoZSBubyBvZiBieXRlIHJlY2lldmVkCisJLy8gdG8ga2VlcCB0cmFjayB0aGUgbm8gb2YgYnl0ZSByZWNlaXZlZAogCVVTSE9SVAkJCQlQcmV2TnVtUmVjdkRlc2NzOwogCVVTSE9SVAkJCQlDdXJyTnVtUmVjdkRlc2NzOwogCVVJTlQJCQkJdTMyVG90YWxEU0Q7CkBAIC01MjcsNyArNTI3LDcgQEAKIAlCT09MRUFOCQkJYlN0YXR1c1dyaXRlOwogCVVJTlQJCQl1aU5WTURTRFNpemU7CiAJVUlOVAkJCXVpVmVuZG9yRXh0bkZsYWc7Ci0JIC8vaXQgd2lsbCBhbHdheXMgcmVwcmVzZW50IGNob29zZWQgRFNEIGF0IGFueSBwb2ludCBvZiB0aW1lLgorCSAvL2l0IHdpbGwgYWx3YXlzIHJlcHJlc2VudCBjaG9zZW4gRFNEIGF0IGFueSBwb2ludCBvZiB0aW1lLgogCSAvLyBHZW5lcmFsbHkgaXQgaXMgQWN0aXZlIERTRCBidXQgaW4gY2FzZSBvZiBOVk0gUkQvV1IgaXQgbWlnaHQgYmUgZGlmZmVyZW50LgogCVVJTlQJCQl1bEZsYXNoQ2FsU3RhcnQ7CiAJVUxPTkcgICAgICAgICAgICAgICAgICAgdWxGbGFzaENvbnRyb2xTZWN0aW9uU3RhcnQ7CkBAIC01NDYsMTAgKzU0NiwxMCBAQAogCVBGTEFTSF9DU19JTkZPIHBzRmxhc2hDU0luZm8gOwogCVBGTEFTSDJYX1ZFTkRPUlNQRUNJRklDX0lORk8gcHNGbGFzaDJ4VmVuZG9ySW5mbzsKIAlVSU5UIHVpRmxhc2hCYXNlQWRkOyAvL0ZsYXNoIHN0YXJ0IGFkZHJlc3MKLQlVSU5UIHVpQWN0aXZlSVNPT2Zmc2V0OyAvL0FjdGl2ZSBJU08gb2Zmc2V0IGNob29zZW4gYmVmb3JlIGYvdyBkb3dubG9hZAorCVVJTlQgdWlBY3RpdmVJU09PZmZzZXQ7IC8vQWN0aXZlIElTTyBvZmZzZXQgY2hvc2VuIGJlZm9yZSBmL3cgZG93bmxvYWQKIAlGTEFTSDJYX1NFQ1RJT05fVkFMIGVBY3RpdmVJU087IC8vQWN0aXZlIElTTyBzZWN0aW9uIHZhbAotCUZMQVNIMlhfU0VDVElPTl9WQUwgZUFjdGl2ZURTRDsJLy9BY3RpdmUgRFNEIHZhbCBjaG9vc2VuIGJlZm9yZSBmL3cgZG93bmxvYWQKLQlVSU5UIHVpQWN0aXZlRFNET2Zmc2V0QXRGd0RsZDsgIC8vRm9yIGFjY2Vzc2luZyBBY3RpdmUgRFNEIGNob29zZW4gYmVmb3JlIGYvdyBkb3dubG9hZAorCUZMQVNIMlhfU0VDVElPTl9WQUwgZUFjdGl2ZURTRDsJLy9BY3RpdmUgRFNEIHZhbCBjaG9zZW4gYmVmb3JlIGYvdyBkb3dubG9hZAorCVVJTlQgdWlBY3RpdmVEU0RPZmZzZXRBdEZ3RGxkOyAgLy9Gb3IgYWNjZXNzaW5nIEFjdGl2ZSBEU0QgY2hvc2VuIGJlZm9yZSBmL3cgZG93bmxvYWQKIAlVSU5UIHVpRmxhc2hMYXlvdXRNYWpvclZlcnNpb24gOwogCVVJTlQgdWlGbGFzaExheW91dE1pbm9yVmVyc2lvbjsKIAlCT09MRUFOIGJBbGxEU0RXcml0ZUFsbG93IDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vQ21Ib3N0LmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0NtSG9zdC5jCmluZGV4IDliZTE4NGYuLmMwZWU5NWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vQ21Ib3N0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9DbUhvc3QuYwpAQCAtMzg0LDcgKzM4NCw3IEBACiAJCX0KIAkJaWYocHNmQ1NUeXBlLT5jQ1BhY2tldENsYXNzaWZpY2F0aW9uUnVsZS51OFByb3RvY29sID09IDApCiAJCXsKLQkJCS8vd2UgZGlkbnQgZ2V0IHByb3RvY29sIGZpZWxkIGZpbGxlZCBpbiBieSB0aGUgQlMKKwkJCS8vd2UgZGlkbid0IGdldCBwcm90b2NvbCBmaWVsZCBmaWxsZWQgaW4gYnkgdGhlIEJTCiAJCQlwc3RDbGFzc2lmaWVyRW50cnktPnVjUHJvdG9jb2xMZW5ndGg9MDsKIAkJfQogCQllbHNlCkBAIC04NzksNyArODc5LDcgQEAKIAogCQkJCQkJLyoKIAkJCQkJCQlQYXNzaW5nIHRoZSBhcmd1bWVudCB1OFBIU0kgaW5zdGVhZCBvZiBjbHNpZC4gQmVjYXVzZSBmb3IgREwgd2l0aCBubyBjbGFzc2lmaWVyIHJ1bGUsCi0JCQkJCQkJY2xzaWQgd2lsbCBiZSB6ZXJvIGhlbmNlIHdlIGNhbnQgaGF2ZSBtdWx0aXBsZSBQSFMgcnVsZXMgZm9yIHRoZSBzYW1lIFNGLgorCQkJCQkJCWNsc2lkIHdpbGwgYmUgemVybyBoZW5jZSB3ZSBjYW4ndCBoYXZlIG11bHRpcGxlIFBIUyBydWxlcyBmb3IgdGhlIHNhbWUgU0YuCiAJCQkJCQkJVG8gc3VwcG9ydCBtdWx0aXBsZSBQSFMgcnVsZSwgcGFzc2luZyB1OFBIU0kuCiAJCQkJCQkqLwogCkBAIC0xMTAzLDcgKzExMDMsNyBAQAogCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAidThUcmFmZmljSW5kaWNhdGlvblByZWZlcmVuY2UJOiAweCVYIiwKIAkJcHN0QWRkSW5kaWNhdGlvbi0+c2ZBdXRob3JpemVkU2V0LnU4VHJhZmZpY0luZGljYXRpb25QcmVmZXJlbmNlKTsKIAotCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAiIFRvdGFsIENsYXNzaWZpZXJzIFJlY2lldmVkCQk6IDB4JVgiLHBzdEFkZEluZGljYXRpb24tPnNmQXV0aG9yaXplZFNldC51OFRvdGFsQ2xhc3NpZmllcnMpOworCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAiIFRvdGFsIENsYXNzaWZpZXJzIFJlY2VpdmVkCQk6IDB4JVgiLHBzdEFkZEluZGljYXRpb24tPnNmQXV0aG9yaXplZFNldC51OFRvdGFsQ2xhc3NpZmllcnMpOwogCiAJbkN1ckNsYXNzaWZpZXJDbnQgPSBwc3RBZGRJbmRpY2F0aW9uLT5zZkF1dGhvcml6ZWRTZXQudThUb3RhbENsYXNzaWZpZXJzOwogCkBAIC0xMzA1LDcgKzEzMDUsNyBAQAogCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAidThUcmFmZmljSW5kaWNhdGlvblByZWZlcmVuY2UJOiAweCUwMlgiLAogCQlwc3RBZGRJbmRpY2F0aW9uLT5zZkFkbWl0dGVkU2V0LnU4VHJhZmZpY0luZGljYXRpb25QcmVmZXJlbmNlKTsKIAotCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAiIFRvdGFsIENsYXNzaWZpZXJzIFJlY2lldmVkCQk6IDB4JVgiLHBzdEFkZEluZGljYXRpb24tPnNmQWRtaXR0ZWRTZXQudThUb3RhbENsYXNzaWZpZXJzKTsKKwlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgIiBUb3RhbCBDbGFzc2lmaWVycyBSZWNlaXZlZAkJOiAweCVYIixwc3RBZGRJbmRpY2F0aW9uLT5zZkFkbWl0dGVkU2V0LnU4VG90YWxDbGFzc2lmaWVycyk7CiAKIAluQ3VyQ2xhc3NpZmllckNudCA9IHBzdEFkZEluZGljYXRpb24tPnNmQWRtaXR0ZWRTZXQudThUb3RhbENsYXNzaWZpZXJzOwogCkBAIC0xNTAyLDcgKzE1MDIsNyBAQAogCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAiIHU4VHJhZmZpY0luZGljYXRpb25QcmVmZXJlbmNlCTogMHglWCIsCiAJCXBzdEFkZEluZGljYXRpb24tPnNmQWN0aXZlU2V0LnU4VHJhZmZpY0luZGljYXRpb25QcmVmZXJlbmNlKTsKIAotCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAiIFRvdGFsIENsYXNzaWZpZXJzIFJlY2lldmVkCQk6IDB4JVgiLHBzdEFkZEluZGljYXRpb24tPnNmQWN0aXZlU2V0LnU4VG90YWxDbGFzc2lmaWVycyk7CisJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX09USEVSUywgRFVNUF9DT05UUk9MLCBEQkdfTFZMX0FMTCwgICIgVG90YWwgQ2xhc3NpZmllcnMgUmVjZWl2ZWQJCTogMHglWCIscHN0QWRkSW5kaWNhdGlvbi0+c2ZBY3RpdmVTZXQudThUb3RhbENsYXNzaWZpZXJzKTsKIAogCW5DdXJDbGFzc2lmaWVyQ250ID0gcHN0QWRkSW5kaWNhdGlvbi0+c2ZBY3RpdmVTZXQudThUb3RhbENsYXNzaWZpZXJzOwogCkBAIC0xNjk2LDcgKzE2OTYsNyBAQAogCQkvL05vIFNwZWNpYWwgaGFuZGxpbmcgc2VuZCB0aGUgbWVzc2FnZSBhcyBpdCBpcwogCQlyZXR1cm4gMTsKIAl9Ci0JLy8gRm9yIERTQV9SRVEsIG9ubHkgdXB0byAicHNmQXV0aG9yaXplZFNldCIgcGFyYW1ldGVyIHNob3VsZCBiZSBhY2Nlc3NlZCBieSBkcml2ZXIhCisJLy8gRm9yIERTQV9SRVEsIG9ubHkgdXAgdG8gInBzZkF1dGhvcml6ZWRTZXQiIHBhcmFtZXRlciBzaG91bGQgYmUgYWNjZXNzZWQgYnkgZHJpdmVyIQogCiAJcHN0QWRkSW5kaWNhdGlvbj1rbWFsbG9jKHNpemVvZigqcHN0QWRkSW5kaWNhdGlvbiksIEdGUF9LRVJORUwpOwogCWlmKE5VTEw9PXBzdEFkZEluZGljYXRpb24pCkBAIC0xNzg4LDcgKzE3ODgsNyBAQAogCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIENPTk5fTVNHLCBEQkdfTFZMX0FMTCwgIkluc2lkZSBSZXN0b3JlQ21Db250cm9sUmVzcG9uc2VNZXNzYWdlICIpOwogCS8qCiAJLy9OZWVkIHRvIEFsbG9jYXRlIG1lbW9yeSB0byBjb250YWluIHRoZSBTVVBFUiBMYXJnZSBzdHJ1Y3R1cmVzCi0JLy9PdXIgZHJpdmVyIGNhbnQgY3JlYXRlIHRoZXNlIHN0cnVjdHVyZXMgb24gU3RhY2sgOigKKwkvL091ciBkcml2ZXIgY2FuJ3QgY3JlYXRlIHRoZXNlIHN0cnVjdHVyZXMgb24gU3RhY2sgOigKIAkqLwogCXBzdEFkZEluZGljYXRpb25EZXN0PWttYWxsb2Moc2l6ZW9mKHN0TG9jYWxTRkFkZEluZGljYXRpb25BbHQpLCBHRlBfS0VSTkVMKTsKIApAQCAtMTk1Nyw3ICsxOTU3LDcgQEAKIHsKIAkvKgogCS8vTmVlZCB0byBBbGxvY2F0ZSBtZW1vcnkgdG8gY29udGFpbiB0aGUgU1VQRVIgTGFyZ2Ugc3RydWN0dXJlcwotCS8vT3VyIGRyaXZlciBjYW50IGNyZWF0ZSB0aGVzZSBzdHJ1Y3R1cmVzIG9uIFN0YWNrCisJLy9PdXIgZHJpdmVyIGNhbid0IGNyZWF0ZSB0aGVzZSBzdHJ1Y3R1cmVzIG9uIFN0YWNrCiAJKi8KIAlBZGFwdGVyLT5jYURzeFJlcVJlc3A9a21hbGxvYyhzaXplb2Yoc3RMb2NhbFNGQWRkSW5kaWNhdGlvbkFsdCkrTEVBREVSX1NJWkUsIEdGUF9LRVJORUwpOwogCWlmKCFBZGFwdGVyLT5jYURzeFJlcVJlc3ApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0hvc3RNSUJTSW50ZXJmYWNlLmggYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0hvc3RNSUJTSW50ZXJmYWNlLmgKaW5kZXggZjE3YTRmMS4uZTM0NTMxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9Ib3N0TUlCU0ludGVyZmFjZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vSG9zdE1JQlNJbnRlcmZhY2UuaApAQCAtNjIsNyArNjIsNyBAQAogCVVMT05HCQkJTnVtRGVzVXNlZDsKIAlVTE9ORwkJCUN1cnJOdW1GcmVlRGVzYzsKIAlVTE9ORwkJCVByZXZOdW1GcmVlRGVzYzsKLQkvLyB0byBrZWVwIHRyYWNrIHRoZSBubyBvZiBieXRlIHJlY2lldmVkCisJLy8gdG8ga2VlcCB0cmFjayB0aGUgbm8gb2YgYnl0ZSByZWNlaXZlZAogCVVMT05HCQkJUHJldk51bVJjZXZCeXRlczsKIAlVTE9ORwkJCUN1cnJOdW1SY2V2Qnl0ZXM7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSVB2NlByb3RvY29sLmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0lQdjZQcm90b2NvbC5jCmluZGV4IDkxYjZmYmUuLjViNGZkMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSVB2NlByb3RvY29sLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9JUHY2UHJvdG9jb2wuYwpAQCAtMjg3LDcgKzI4Nyw3IEBACiAKIAlmb3IodWlMb29wSW5kZXg9MDt1aUxvb3BJbmRleDx1aUNvdW50SVBTcmNBZGRyZXNzZXM7dWlMb29wSW5kZXgrPXVpSXB2NkFkZHJOb0xvbmdXb3JkcykKIAl7Ci0JCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9UWCwgSVBWNl9EQkcsIERCR19MVkxfQUxMLCAiXG4gU3JjIElwdjYgQWRkcmVzcyBJbiBSZWNpZXZlZCBQYWNrZXQgOiBcbiAiKTsKKwkJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX1RYLCBJUFY2X0RCRywgREJHX0xWTF9BTEwsICJcbiBTcmMgSXB2NiBBZGRyZXNzIEluIFJlY2VpdmVkIFBhY2tldCA6IFxuICIpOwogCQlEdW1wSXB2NkFkZHJlc3MoYXVsU3JjSVApOwogCQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfVFgsIElQVjZfREJHLCBEQkdfTFZMX0FMTCwgIlxuIFNyYyBJcHY2IE1hc2sgSW4gQ2xhc3NpZmllciBSdWxlOiBcbiIpOwogCQlEdW1wSXB2NkFkZHJlc3MoJnBzdENsYXNzaWZpZXJSdWxlLT5zdFNyY0lwQWRkcmVzcy51bElwdjZNYXNrW3VpTG9vcEluZGV4XSk7CkBAIC0zNDAsNyArMzQwLDcgQEAKIAogCWZvcih1aUxvb3BJbmRleD0wO3VpTG9vcEluZGV4PHVpQ291bnRJUERlc3RpbmF0aW9uQWRkcmVzc2VzO3VpTG9vcEluZGV4Kz11aUlwdjZBZGRyTm9Mb25nV29yZHMpCiAJewotCQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfVFgsIElQVjZfREJHLCBEQkdfTFZMX0FMTCwgIlxuIERlc3RpbmF0aW9uIElwdjYgQWRkcmVzcyBJbiBSZWNpZXZlZCBQYWNrZXQgOiBcbiAiKTsKKwkJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX1RYLCBJUFY2X0RCRywgREJHX0xWTF9BTEwsICJcbiBEZXN0aW5hdGlvbiBJcHY2IEFkZHJlc3MgSW4gUmVjZWl2ZWQgUGFja2V0IDogXG4gIik7CiAJCUR1bXBJcHY2QWRkcmVzcyhhdWxEZXN0SVApOwogCQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfVFgsIElQVjZfREJHLCBEQkdfTFZMX0FMTCwgIlxuIERlc3RpbmF0aW9uIElwdjYgTWFzayBJbiBDbGFzc2lmaWVyIFJ1bGU6IFxuIik7CiAJCUR1bXBJcHY2QWRkcmVzcygmcHN0Q2xhc3NpZmllclJ1bGUtPnN0RGVzdElwQWRkcmVzcy51bElwdjZNYXNrW3VpTG9vcEluZGV4XSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZUlkbGVNb2RlLmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZUlkbGVNb2RlLmMKaW5kZXggYmY1YzBhZC4uOTZmYTRlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VJZGxlTW9kZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlSWRsZU1vZGUuYwpAQCAtMTEsNyArMTEsNyBAQAogCiAKIFJldHVybjoJCQkJQkNNX1NUQVRVU19TVUNDRVNTIC0gSWYgV2FrZXVwIG9mIHRoZSBIVyBJbnRlcmZhY2Ugd2FzIHN1Y2Nlc3NmdWwuCi0JCQkJCQlPdGhlciAgICAgICAgICAgLSBJZiBhbiBlcnJvciBvY2N1cmVkLgorCQkJCQkJT3RoZXIgICAgICAgICAgIC0gSWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAqLwogCiAKQEAgLTI2LDcgKzI2LDcgQEAKIAogCiBSZXR1cm46CQkJCUJDTV9TVEFUVVNfU1VDQ0VTUyAtIElmIElkbGUgbW9kZSByZXNwb25zZSByZWxhdGVkIEhXIGNvbmZpZ3VyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCi0JCQkJCQlPdGhlciAgICAgICAgICAgLSBJZiBhbiBlcnJvciBvY2N1cmVkLgorCQkJCQkJT3RoZXIgICAgICAgICAgIC0gSWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VJc3IuYyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlSXNyLmMKaW5kZXggMjIwZmY5Mi4uNjc3MTlkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VJc3IuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZUlzci5jCkBAIC04MCw4ICs4MCw4IEBACiAJCX0KIAkJY2FzZSAtRUlOUFJPR1JFU1M6CiAJCXsKLQkJCS8vVGhpcyBzaXR1YXRpb24gbWF5IGhhcHBlbmQgd2hlbiBVUkJ1bmxpbmsgaXMgdXNlZC4gZm9yIGRldGFpbCBjaGVjayB1c2JfdW5saW5rX3VyYiBkb2N1bWVudGF0aW9uLgotCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBJTlRGX0lOSVQsIERCR19MVkxfQUxMLCJJbXBvc3NpYmUgY29uZGl0aW9uIGhhcyBvY2N1cmVkLi4uIHNvbWV0aGluZyB2ZXJ5IGJhZCBpcyBnb2luZyBvbiIpOworCQkJLy9UaGlzIHNpdHVhdGlvbiBtYXkgaGFwcGVuZWQgd2hlbiBVUkJ1bmxpbmsgaXMgdXNlZC4gZm9yIGRldGFpbCBjaGVjayB1c2JfdW5saW5rX3VyYiBkb2N1bWVudGF0aW9uLgorCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBJTlRGX0lOSVQsIERCR19MVkxfQUxMLCJJbXBvc3NpYmUgY29uZGl0aW9uIGhhcyBvY2N1cnJlZC4uLiBzb21ldGhpbmcgdmVyeSBiYWQgaXMgZ29pbmcgb24iKTsKIAkJCWJyZWFrIDsKIAkJCS8vcmV0dXJuOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZVJ4LmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZVJ4LmMKaW5kZXggNTMzZjhlYi4uODA2ZWY1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VSeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlUnguYwpAQCAtMzQsNyArMzQsNyBAQAogCXJldHVybiBwUmNiOwogfQogCi0vKnRoaXMgaXMgcmVjZWl2ZSBjYWxsIGJhY2sgLSB3aGVuIHBrdCBhdmlsYWJsZSBmb3IgcmVjZWl2ZSAoQlVMSyBJTi0gZW5kIHBvaW50KSovCisvKnRoaXMgaXMgcmVjZWl2ZSBjYWxsIGJhY2sgLSB3aGVuIHBrdCBhdmFpbGFibGUgZm9yIHJlY2VpdmUgKEJVTEsgSU4tIGVuZCBwb2ludCkqLwogc3RhdGljIHZvaWQgcmVhZF9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsKQEAgLTEyMyw3ICsxMjMsNyBAQAogCWlmKChudG9ocyhwTGVhZGVyLT5WY2lkKSA9PSBWQ0lEX0NPTlRST0xfUEFDS0VUKSB8fAogCSAgICAoIShwTGVhZGVyLT5TdGF0dXMgPj0gMHgyMCAgJiYgIHBMZWFkZXItPlN0YXR1cyA8PSAweDNGKSkpCiAJewotCSAgICBCQ01fREVCVUdfUFJJTlQocHNJbnRmQWRhcHRlci0+cHNBZGFwdGVyLERCR19UWVBFX1JYLCBSWF9DVFJMLCBEQkdfTFZMX0FMTCwgIlJlY2l2ZWQgY29udHJvbCBwa3QuLi4iKTsKKwkgICAgQkNNX0RFQlVHX1BSSU5UKHBzSW50ZkFkYXB0ZXItPnBzQWRhcHRlcixEQkdfVFlQRV9SWCwgUlhfQ1RSTCwgREJHX0xWTF9BTEwsICJSZWNlaXZlZCBjb250cm9sIHBrdC4uLiIpOwogCQkqKFBVU0hPUlQpc2tiLT5kYXRhID0gcExlYWRlci0+U3RhdHVzOwogICAgICAgIAltZW1jcHkoc2tiLT5kYXRhK3NpemVvZihVU0hPUlQpLCB1cmItPnRyYW5zZmVyX2J1ZmZlciArCiAJCQkoc2l6ZW9mKExFQURFUikpLCBwTGVhZGVyLT5QTGVuZ3RoKTsKQEAgLTE0Miw3ICsxNDIsNyBAQAogCQkgICogRGF0YSBQYWNrZXQsIEZvcm1hdCBhIHByb3BlciBFdGhlcm5ldCBIZWFkZXIKICAgICAgICAgCSAgKiBhbmQgZ2l2ZSBpdCB0byB0aGUgc3RhY2sKIAkJICAqLwotICAgICAgICBCQ01fREVCVUdfUFJJTlQocHNJbnRmQWRhcHRlci0+cHNBZGFwdGVyLERCR19UWVBFX1JYLCBSWF9EQVRBLCBEQkdfTFZMX0FMTCwgIlJlY2l2ZWQgRGF0YSBwa3QuLi4iKTsKKyAgICAgICAgQkNNX0RFQlVHX1BSSU5UKHBzSW50ZkFkYXB0ZXItPnBzQWRhcHRlcixEQkdfVFlQRV9SWCwgUlhfREFUQSwgREJHX0xWTF9BTEwsICJSZWNlaXZlZCBEYXRhIHBrdC4uLiIpOwogCQlza2JfcmVzZXJ2ZShza2IsIDIgKyBTS0JfUkVTRVJWRV9QSFNfQllURVMpOwogCQltZW1jcHkoc2tiLT5kYXRhK0VUSF9ITEVOLCAoUFVDSEFSKXVyYi0+dHJhbnNmZXJfYnVmZmVyICsgc2l6ZW9mKExFQURFUiksIHBMZWFkZXItPlBMZW5ndGgpOwogCQlza2ItPmRldiA9IEFkYXB0ZXItPmRldjsKQEAgLTE1MSw3ICsxNTEsNyBAQAogCQlza2JfcHV0IChza2IsIHBMZWFkZXItPlBMZW5ndGggKyBFVEhfSExFTik7CiAJCUFkYXB0ZXItPlBhY2tJbmZvW1F1ZXVlSW5kZXhdLnVpVG90YWxSeEJ5dGVzKz1wTGVhZGVyLT5QTGVuZ3RoOwogCQlBZGFwdGVyLT5QYWNrSW5mb1tRdWV1ZUluZGV4XS51aVRoaXNQZXJpb2RSeEJ5dGVzKz0gcExlYWRlci0+UExlbmd0aDsKLSAgICAgICAgQkNNX0RFQlVHX1BSSU5UKHBzSW50ZkFkYXB0ZXItPnBzQWRhcHRlcixEQkdfVFlQRV9SWCwgUlhfREFUQSwgREJHX0xWTF9BTEwsICJSZWNpdmVkIERhdGEgcGt0IG9mIGxlbiA6MHglWCIsIHBMZWFkZXItPlBMZW5ndGgpOworICAgICAgICBCQ01fREVCVUdfUFJJTlQocHNJbnRmQWRhcHRlci0+cHNBZGFwdGVyLERCR19UWVBFX1JYLCBSWF9EQVRBLCBEQkdfTFZMX0FMTCwgIlJlY2VpdmVkIERhdGEgcGt0IG9mIGxlbiA6MHglWCIsIHBMZWFkZXItPlBMZW5ndGgpOwogCiAJCWlmKG5ldGlmX3J1bm5pbmcoQWRhcHRlci0+ZGV2KSkKIAkJewpAQCAtMjM3LDcgKzIzNyw3IEBACiAKIAogUmV0dXJuOgkJCQlUUlVFICAtIElmIFJ4IHdhcyBzdWNjZXNzZnVsLgotCQkJCQlPdGhlciAtIElmIGFuIGVycm9yIG9jY3VyZWQuCisJCQkJCU90aGVyIC0gSWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAqLwogCiBCT09MRUFOIEludGVyZmFjZVJ4IChQU19JTlRFUkZBQ0VfQURBUFRFUiBwc0ludGZBZGFwdGVyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9Jb2N0bC5oIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9Jb2N0bC5oCmluZGV4IGU0ZjhlYjcuLmY4NTljZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSW9jdGwuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0lvY3RsLmgKQEAgLTI0MSw3ICsyNDEsNyBAQAogCiB0eXBlZGVmIGVudW0gX0ZMQVNIMlhfU0VDVElPTl9WQUwKIHsKLQlOT19TRUNUSU9OX1ZBTCA9IDAsIC8vbm8gc2VjdGlvbiBpcyBjaG9vc2VuIHdoZW4gYWJzb2x1dGUgb2Zmc2V0IGlzIGdpdmVuIGZvciBSRC9XUgorCU5PX1NFQ1RJT05fVkFMID0gMCwgLy9ubyBzZWN0aW9uIGlzIGNob3NlbiB3aGVuIGFic29sdXRlIG9mZnNldCBpcyBnaXZlbiBmb3IgUkQvV1IKIAlJU09fSU1BR0UxLAogCUlTT19JTUFHRTIsCiAJRFNEMCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vTGVha3lCdWNrZXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vTGVha3lCdWNrZXQuYwppbmRleCBmNGNmNDFjLi5hNTVkNDIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0xlYWt5QnVja2V0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9MZWFreUJ1Y2tldC5jCkBAIC0yMTMsNyArMjEzLDcgQEAKIAkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9UWCwgVFhfUEFDS0VUUywgREJHX0xWTF9BTEwsICJGb3IgUXVldWU6ICV6ZFxuIiwgcHNTRi1BZGFwdGVyLT5QYWNrSW5mbyk7CiAJCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfVFgsIFRYX1BBQ0tFVFMsIERCR19MVkxfQUxMLCAiXG5BdmFpbGFibGUgVG9rZW5zID0gJWQgcmVxdWlyZWQgPSAlZFxuIiwKIAkJCQkJcHNTRi0+dWlDdXJyZW50VG9rZW5Db3VudCwgaVBhY2tldExlbik7Ci0JCQkJLy90aGlzIHBhcnQgaW5kaWNhdGVzIHRoYXQgYmVjdWFzZSBvZiBub24tYXZhaWxhYmlsaXR5IG9mIHRoZSB0b2tlbnMKKwkJCQkvL3RoaXMgcGFydCBpbmRpY2F0ZXMgdGhhdCBiZWNhdXNlIG9mIG5vbi1hdmFpbGFiaWxpdHkgb2YgdGhlIHRva2VucwogCQkJCS8vcGt0IGhhcyBub3QgYmVlbiBzZW5kIG91dCBoZW5jZSBzZXR0aW5nIHRoZSBwZW5kaW5nIGZsYWcgaW5kaWNhdGluZyB0aGUgaG9zdCB0byBzZW5kIGl0IG91dAogCQkJCS8vZmlyc3QgbmV4dCBpdGVyYXRpb24gIC4KIAkJCQlwc1NGLT51aVBlbmRlZExhc3QgPSBUUlVFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9NaXNjLmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL01pc2MuYwppbmRleCBkNjI0ZjM1Li5jNTAwM2I2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL01pc2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL01pc2MuYwpAQCAtNjAyLDcgKzYwMiw3IEBACiAJCQkJQWRhcHRlci0+TGlua1N0YXR1cz1MSU5LVVBfRE9ORTsKIAkJCQlBZGFwdGVyLT5iUEhTRW5hYmxlZCA9ICoocHVjQnVmZmVyKzMpOwogICAgICAgICAgICAgICAgCUFkYXB0ZXItPmJFVEhDU0VuYWJsZWQgPSAqKHB1Y0J1ZmZlcis0KSAmIEVUSF9DU19NQVNLOwotCQkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX1BSSU5USywgMCwgMCwgIlBIUyBTdXBwb3J0IFN0YXR1cyBSZWNpZXZlZCBJbiBMaW5rVXAgQWNrIDogJXggXG4iLEFkYXB0ZXItPmJQSFNFbmFibGVkKTsKKwkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIDAsIDAsICJQSFMgU3VwcG9ydCBTdGF0dXMgUmVjZWl2ZWQgSW4gTGlua1VwIEFjayA6ICV4IFxuIixBZGFwdGVyLT5iUEhTRW5hYmxlZCk7CiAJCQkJaWYoKEZBTFNFID09IEFkYXB0ZXItPmJTaHV0U3RhdHVzKSYmCiAJCQkJCShGQUxTRSA9PSBBZGFwdGVyLT5JZGxlTW9kZSkpCiAJCQkJewpAQCAtMTE1Myw3ICsxMTUzLDcgQEAKIAogCS8qCiAgICAgICogMS4gSWYgdGhlIExFRCBTZXR0aW5ncyBmYWlscywgZG8gbm90IHN0b3AgYW5kIGRvIHRoZSBGaXJtd2FyZSBkb3dubG9hZC4KLSAgICAgKiAyLiBUaGlzIGluaXQgd291bGQgaGFwcGVuZCBvbmx5IGlmIHRoZSBjZmcgZmlsZSBpcyBwcmVzZW50LCBlbHNlCisgICAgICogMi4gVGhpcyBpbml0IHdvdWxkIGhhcHBlbmVkIG9ubHkgaWYgdGhlIGNmZyBmaWxlIGlzIHByZXNlbnQsIGVsc2UKICAgICAgKiAgICBjYWxsIGZyb20gdGhlIGlvY3RsIGNvbnRleHQuCiAgICAgICovCiAKQEAgLTExODUsNyArMTE4NSw3IEBACiAJCXN0YXR1cyA9IFByb3BhZ2F0ZUNhbFBhcmFtc0Zyb21GbGFzaFRvTWVtb3J5KHBzX2FkYXB0ZXIpOwogCQlpZihzdGF0dXMpCiAJCXsKLQkJCUJDTV9ERUJVR19QUklOVChwc19hZGFwdGVyLERCR19UWVBFX0lOSVRFWElULCBNUF9JTklULCBEQkdfTFZMX0FMTCwiIFByb3BvZ2F0aW9uIG9mIENhbCBwYXJhbSBmYWlsZWQgLi4iICk7CisJCQlCQ01fREVCVUdfUFJJTlQocHNfYWRhcHRlcixEQkdfVFlQRV9JTklURVhJVCwgTVBfSU5JVCwgREJHX0xWTF9BTEwsIiBQcm9wYWdhdGlvbiBvZiBDYWwgcGFyYW0gZmFpbGVkIC4uIiApOwogCQkJZ290byBPVVQ7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL1Fvcy5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9Rb3MuYwppbmRleCBmZWFkZTk0Li5jOTcwMjBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL1Fvcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vUW9zLmMKQEAgLTcyNyw3ICs3MjcsNyBAQAogCiAJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsIERCR19UWVBFX1RYLCBJUFY0X0RCRywgREJHX0xWTF9BTEwsICAiJXMgIENMUyBVc2VyUHJpbzoleCBDTFMgVkxBTklEOiV4XG4iLF9fRlVOQ1RJT05fXyxudG9ocygqKChVU0hPUlQgKilwc3RDbGFzc2lmaWVyUnVsZS0+dXNVc2VyUHJpb3JpdHkpKSxwc3RDbGFzc2lmaWVyUnVsZS0+dXNWTEFOSUQpOwogCi0JLyogSW4gY2FzZSBGVyBkaWRuJ3QgcmVjaWV2ZSB0aGUgVExWLCB0aGUgcHJpb3JpdHkgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQgKi8KKwkvKiBJbiBjYXNlIEZXIGRpZG4ndCByZWNlaXZlIHRoZSBUTFYsIHRoZSBwcmlvcml0eSBmaWVsZCBzaG91bGQgYmUgaWdub3JlZCAqLwogCWlmKHBzdENsYXNzaWZpZXJSdWxlLT51c1ZhbGlkaXR5Qml0TWFwICYgKDE8PFBLVF9DTEFTU0lGSUNBVElPTl9VU0VSX1BSSU9SSVRZX1ZBTElEKSkKIAl7CiAJCWlmKHBzdEV0aENzUGt0SW5mby0+ZU53cGt0RXRoRnJhbWVUeXBlIT1lRXRoODAyUVZMQU5GcmFtZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vY250cmxfU2lnbmFsaW5nSW50ZXJmYWNlLmggYi9kcml2ZXJzL3N0YWdpbmcvYmNtL2NudHJsX1NpZ25hbGluZ0ludGVyZmFjZS5oCmluZGV4IDg5MDc3ODQuLmFiMTMxODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vY250cmxfU2lnbmFsaW5nSW50ZXJmYWNlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9jbnRybF9TaWduYWxpbmdJbnRlcmZhY2UuaApAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBWRU5ET1JfUEhTX1BBUkFNX0xFTkdUSCAxMAogI2RlZmluZSBNQVhfTlVNX0FDVElWRV9CUyAxMAogI2RlZmluZSBBVVRIX1RPS0VOX0xFTkdUSAkxMAotI2RlZmluZSBOVU1fSEFSUV9DSEFOTkVMUwkxNgkvL0NoYW5nZWQgZnJvbSAxMCB0byAxNiB0byBhY2NvbW9kYXRlIGFsbCBIQVJRIGNoYW5uZWxzCisjZGVmaW5lIE5VTV9IQVJRX0NIQU5ORUxTCTE2CS8vQ2hhbmdlZCBmcm9tIDEwIHRvIDE2IHRvIGFjY29tbW9kYXRlIGFsbCBIQVJRIGNoYW5uZWxzCiAjZGVmaW5lIFZFTkRPUl9DTEFTU0lGSUVSX1BBUkFNX0xFTkdUSCAxIC8vQ2hhbmdlZCB0aGUgc2l6ZSB0byAxIGJ5dGUgc2luY2Ugd2UgZG50IHVzZSBpdAogI2RlZmluZSAgVkVORE9SX1NQRUNJRl9RT1NfUEFSQU0gMQogI2RlZmluZSBWRU5ET1JfUEhTX1BBUkFNX0xFTkdUSAkxMApAQCAtMTA5LDEzICsxMDksMTMgQEAKICAgICBCX1VJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIHU4UEhTSTsKIAkvKiogIFBIU0YgTGVuZ3RoIE9mIFRoZSBTZXJ2aWNlIEZsb3cqLwogICAgIEJfVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgdThQSFNGTGVuZ3RoOwotICAgIC8qKiBTdHJpbmcgb2YgYnl0ZXMgY29udGFpbmluZyBoZWFkZXIgaW5mb3JtYXRpb24gdG8gYmUgc3VwcmVzc2VkIGJ5IHRoZSBzZW5kaW5nIENTIGFuZCByZWNvbnN0cnVjdGVkIGJ5IHRoZSByZWNlaXZpbmcgQ1MqLworICAgIC8qKiBTdHJpbmcgb2YgYnl0ZXMgY29udGFpbmluZyBoZWFkZXIgaW5mb3JtYXRpb24gdG8gYmUgc3VwcHJlc3NlZCBieSB0aGUgc2VuZGluZyBDUyBhbmQgcmVjb25zdHJ1Y3RlZCBieSB0aGUgcmVjZWl2aW5nIENTKi8KICAgICBCX1VJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIHU4UEhTRltNQVhfUEhTX0xFTkdUSFNdOwogCS8qKiAgUEhTTSBMZW5ndGggT2YgVGhlIFNlcnZpY2UgRmxvdyovCiAgICAgQl9VSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICB1OFBIU01MZW5ndGg7CiAJLyoqICBQSFMgTWFzayBmb3IgdGhlIFNGKi8KICAgICBCX1VJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIHU4UEhTTVtNQVhfUEhTX0xFTkdUSFNdOwotCS8qKiAgOGJpdCBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgc3VwcmVzc2VkIGZvciB0aGUgU2VydmljZSBGbG93Ki8KKwkvKiogIDhiaXQgVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHN1cHByZXNzZWQgZm9yIHRoZSBTZXJ2aWNlIEZsb3cqLwogICAgIEJfVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgdThQSFNTOwogCS8qKiAgOGJpdCBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgUGFja2V0IEhlYWRlciBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIHByaW9yIHRvIHN1cHJlc3Npb24gKi8KICAgICBCX1VJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIHU4UEhTVjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vbnZtLmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL252bS5jCmluZGV4IGM3MjkyMzcuLjRkYTViN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vbnZtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9udm0uYwpAQCAtMzEzLDcgKzMxMyw3IEBACiAvLwkJdWlOdW1CeXRlcyAtIE51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gdGhlIEVFUFJPTS4KIC8vCiAvLyBSZXR1cm5zOgotLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBFRVBST00gcmVhZCBpcyBzdWNjZXNzZnVsbC4KKy8vCQlPU0FMX1NUQVRVU19TVUNDRVNTIC0gaWYgRUVQUk9NIHJlYWQgaXMgc3VjY2Vzc2Z1bC4KIC8vCQk8RkFJTFVSRT4JCQktIGlmIGZhaWxlZC4KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtNDMxLDcgKzQzMSw3IEBACiAvLwkJdWlOdW1CeXRlcyAtIE51bWJlciBvZiBieXRlcyB0byBiZSByZWFkIGZyb20gdGhlIEZMQVNILgogLy8KIC8vIFJldHVybnM6Ci0vLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIEZMQVNIIHJlYWQgaXMgc3VjY2Vzc2Z1bGwuCisvLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIEZMQVNIIHJlYWQgaXMgc3VjY2Vzc2Z1bC4KIC8vCQk8RkFJTFVSRT4JCQktIGlmIGZhaWxlZC4KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTE3NCw3ICsxMTc0LDcgQEAKIAlpZihOVUxMID09IHBUZW1wQnVmZikKIAkJZ290byBCZWNlZW1GbGFzaEJ1bGtXcml0ZV9FWElUOwogLy8KLS8vIGNoZWNrIGlmIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4gaXMgb3ZlcmxhcHBlZCBhY2Nyb3NzIHNlY3RvcnMKKy8vIGNoZWNrIGlmIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4gaXMgb3ZlcmxhcHBlZCBhY3Jvc3Mgc2VjdG9ycwogLy8KIAlpZih1aU9mZnNldCt1aU51bUJ5dGVzIDwgdWlTZWN0Qm91bmRhcnkpCiAJewpAQCAtMTM5MCw3ICsxMzkwLDcgQEAKIAkJZ290byBCZWNlZW1GbGFzaEJ1bGtXcml0ZVN0YXR1c19FWElUOwogCiAvLwotLy8gY2hlY2sgaWYgdGhlIGRhdGEgdG8gYmUgd3JpdHRlbiBpcyBvdmVybGFwcGVkIGFjY3Jvc3Mgc2VjdG9ycworLy8gY2hlY2sgaWYgdGhlIGRhdGEgdG8gYmUgd3JpdHRlbiBpcyBvdmVybGFwcGVkIGFjcm9zcyBzZWN0b3JzCiAvLwogCWlmKHVpT2Zmc2V0K3VpTnVtQnl0ZXMgPCB1aVNlY3RCb3VuZGFyeSkKIAl7CkBAIC0yMDIwLDcgKzIwMjAsNyBAQAogLy8JCXVpTnVtQnl0ZXMgLSBOdW1iZXIgb2YgYnl0ZXMgdG8gYmUgcmVhZCBmcm9tIHRoZSBOVk0uCiAvLwogLy8gUmV0dXJuczoKLS8vCQlPU0FMX1NUQVRVU19TVUNDRVNTIC0gaWYgTlZNIHJlYWQgaXMgc3VjY2Vzc2Z1bGwuCisvLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIE5WTSByZWFkIGlzIHN1Y2Nlc3NmdWwuCiAvLwkJPEZBSUxVUkU+CQkJLSBpZiBmYWlsZWQuCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTIwODMsNyArMjA4Myw3IEBACiAvLwkJdWlOdW1CeXRlcyAtIE51bWJlciBvZiBieXRlcyB0byBiZSB3cml0dGVuLi4KIC8vCiAvLyBSZXR1cm5zOgotLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBOVk0gd3JpdGUgaXMgc3VjY2Vzc2Z1bGwuCisvLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIE5WTSB3cml0ZSBpcyBzdWNjZXNzZnVsLgogLy8JCTxGQUlMVVJFPgkJCS0gaWYgZmFpbGVkLgogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMjE4LDcgKzIyMTgsNyBAQAogLy8gICAgICAgICAgdWlTZWN0b3JTaXplIC0gc2VjdG9yIHNpemUKIC8vCiAvLyBSZXR1cm5zOgotLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBOVk0gd3JpdGUgaXMgc3VjY2Vzc2Z1bGwuCisvLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIE5WTSB3cml0ZSBpcyBzdWNjZXNzZnVsLgogLy8JCTxGQUlMVVJFPgkJCS0gaWYgZmFpbGVkLgogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yNDMwLDcgKzI0MzAsNyBAQAogKklucHV0IFBhcmFtZXRlcjoKICoJCUFkYXB0ZXIgZGF0YSBzdHJ1Y3R1cmUKICpSZXR1cm4gVmFsdWUgOgotKgkJMC4gbWVhbnMgc3VjZXNzOworKgkJMC4gbWVhbnMgc3VjY2VzczsKICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0yOTk4LDcgKzI5OTgsNyBAQAogCS8qCiAJKglDb25zaWRlcmluZyBhbGwgdGhlIHNlY3Rpb24gZm9yIHdoaWNoIGVuZCBvZmZzZXQgY2FuIGJlIGNhbGN1bGF0ZWQgb3IgZGlyZWN0bHkgZ2l2ZW4KIAkqCWluIENTIFN0cnVjdHVyZS4gaWYgbWF0Y2hpbmcgY2FzZSBkb2VzIG5vdCBleGlzdCwgcmV0dXJuIFNUQVRVU19GQUlMVVJFIGluZGljYXRpbmcgc2VjdGlvbgotCSoJZW5kb2Zmc2V0IGNhbid0IGJlIGNhbGN1bGF0ZWQgb3IgZ2l2ZW4gaW4gQ1MgU3R1Y3R1cmUuCisJKgllbmRvZmZzZXQgY2FuJ3QgYmUgY2FsY3VsYXRlZCBvciBnaXZlbiBpbiBDUyBTdHJ1Y3R1cmUuCiAJKi8KIAogCUlOVCBTZWN0U3RhcnRPZmZzZXQgPSAwIDsKQEAgLTMxNzMsNyArMzE3Myw3IEBACiAqCUB1aU51bUJ5dGVzIDogTnVtYmVyIG9mIEJ5dGVzIGZvciBSZWFkCiAqCiAqCVJldHVybiB2YWx1ZTotCi0qCQlyZXR1cm4gdHJ1ZSBvbiBzdWNlc3MgYW5kIFNUQVRVU19GQUlMVVJFIG9uIGZhaWwuCisqCQlyZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzIGFuZCBTVEFUVVNfRkFJTFVSRSBvbiBmYWlsLgogKi8KIAogSU5UIEJjbUZsYXNoMnhCdWxrUmVhZCgKQEAgLTMyNDEsNyArMzI0MSw3IEBACiAqCUB1aU51bUJ5dGVzIDogTnVtYmVyIG9mIEJ5dGVzIGZvciBXcml0ZQogKgogKglSZXR1cm4gdmFsdWU6LQotKgkJcmV0dXJuIHRydWUgb24gc3VjZXNzIGFuZCBTVEFUVVNfRkFJTFVSRSBvbiBmYWlsLgorKgkJcmV0dXJuIHRydWUgb24gc3VjY2VzcyBhbmQgU1RBVFVTX0ZBSUxVUkUgb24gZmFpbC4KICoKICovCiAKQEAgLTMzMDgsNyArMzMwOCw3IEBACiAqCUBBZGFwdGVyIDotRHJpdmVycyBwcml2YXRlIERhdGEgU3RydWN0dXJlCiAqCiAqCVJldHVybiBWYWx1ZTotCi0qCQlSZXR1cm4gU1RBVFVTX1NVQ0VTUyBpZiBnZXQgc3VjZXNzIGluIHNldHRpbmcgdGhlIHJpZ2h0IERTRCBlbHNlIG5lZ2FpdmUgZXJyb3IgY29kZQorKgkJUmV0dXJuIFNUQVRVU19TVUNFU1MgaWYgZ2V0IHN1Y2Nlc3MgaW4gc2V0dGluZyB0aGUgcmlnaHQgRFNEIGVsc2UgbmVnYWl2ZSBlcnJvciBjb2RlCiAqCiAqKi8KIHN0YXRpYyBJTlQgQmNtR2V0QWN0aXZlRFNEKFBNSU5JX0FEQVBURVIgQWRhcHRlcikKQEAgLTMzODQsNyArMzM4NCw3IEBACiAqCUB1aU9mZnNldCA6IE9mZnNldCBwcm92aWRlZCBpbiB0aGUgRmxhc2gKICoKICoJUmV0dXJuIFZhbHVlOi0KLSoJU3VjZXNzOi1UUlVFICwgIG9mZnNldCBpcyB3cml0YWJsZQorKglTdWNjZXNzOi1UUlVFICwgIG9mZnNldCBpcyB3cml0YWJsZQogKglGYWlsdXJlOi1GQUxTRSwgb2Zmc2V0IGlzIFJPCiAqCiAqKi8KQEAgLTM0NDEsNyArMzQ0MSw3IEBACiAJQEFkYXB0ZXI6LURyaXZlciBwcml2YXRlIERhdGEgU3RydWN0dXJlCiAqCiAqCVJldHVybiB2YWx1ZTotCi0qCVN1Y2VzczotIFNUQVRVU19TVUNFU1MKKyoJU3VjY2VzczotIFNUQVRVU19TVUNFU1MKICoJRmFpbHVyZTotIG5lZ2F0aXZlIGVycm9yIGNvZGUKICoqLwogCkBAIC0zNzgzLDcgKzM3ODMsNyBAQAogCQkJCQkvLyBUaGlzIGlzIGEgU1BFQ0lBTCBDYXNlIHdoaWNoIHdpbGwgb25seSBoYXBwZW4gaWYgdGhlIGN1cnJlbnQgaGlnaGVzdCBwcmlvcml0eSBJU08gaGFzIHByaW9yaXR5IHZhbHVlID0gMHg3RkZGRkZGRi4KIAkJCQkJLy8gV2Ugd2lsbCB3cml0ZSAxIHRvIHRoZSBjdXJyZW50IEhpZ2hlc3QgcHJpb3JpdHkgSVNPIEFuZCB0aGVuIHNoYWxsIGluY3JlYXNlIHRoZSBwcmlvcml0eSBvZiB0aGUgcmVxdWVzdGVkIElTTwogCQkJCQkvLyBieSB1c2VyCi0JCQkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX09USEVSUywgTlZNX1JXLCBEQkdfTFZMX0FMTCwgIlNlY3RJbWFnZVByaW9yaXR5IHdyYXBhcm91bmQgaGFwcGVuZCwgZUZsYXNoMnhTZWN0VmFsOiAweCV4XG4iLGVGbGFzaDJ4U2VjdFZhbCk7CisJCQkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX09USEVSUywgTlZNX1JXLCBEQkdfTFZMX0FMTCwgIlNlY3RJbWFnZVByaW9yaXR5IHdyYXBhcm91bmQgaGFwcGVuZWQsIGVGbGFzaDJ4U2VjdFZhbDogMHgleFxuIixlRmxhc2gyeFNlY3RWYWwpOwogCQkJCQlTZWN0SW1hZ2VQcmlvcml0eSA9IGh0b25sKDB4MSk7CiAJCQkJCVN0YXR1cyA9IEJjbUZsYXNoMnhCdWxrV3JpdGUoQWRhcHRlciwKIAkJCQkJCQkJJlNlY3RJbWFnZVByaW9yaXR5LApAQCAtMzg1Myw3ICszODUzLDcgQEAKIAkJCQkJLy8gVGhpcyBpcyBhIFNQRUNJQUwgQ2FzZSB3aGljaCB3aWxsIG9ubHkgaGFwcGVuIGlmIHRoZSBjdXJyZW50IGhpZ2hlc3QgcHJpb3JpdHkgRFNEIGhhcyBwcmlvcml0eSB2YWx1ZSA9IDB4N0ZGRkZGRkYuCiAJCQkJCS8vIFdlIHdpbGwgd3JpdGUgMSB0byB0aGUgY3VycmVudCBIaWdoZXN0IHByaW9yaXR5IERTRCBBbmQgdGhlbiBzaGFsbCBpbmNyZWFzZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlcXVlc3RlZCBEU0QKIAkJCQkJLy8gYnkgdXNlcgotCQkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIE5WTV9SVywgREJHX0xWTF9BTEwsICJTZWN0SW1hZ2VQcmlvcml0eSB3cmFwYXJvdW5kIGhhcHBlbmQsIGVGbGFzaDJ4U2VjdFZhbDogMHgleFxuIixlRmxhc2gyeFNlY3RWYWwpOworCQkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIE5WTV9SVywgREJHX0xWTF9BTEwsICJTZWN0SW1hZ2VQcmlvcml0eSB3cmFwYXJvdW5kIGhhcHBlbmVkLCBlRmxhc2gyeFNlY3RWYWw6IDB4JXhcbiIsZUZsYXNoMnhTZWN0VmFsKTsKIAkJCQkJU2VjdEltYWdlUHJpb3JpdHkgPSBodG9ubCgweDEpOwogCiAJCQkJCVN0YXR1cyA9IEJjbUZsYXNoMnhCdWxrV3JpdGUoQWRhcHRlciwKQEAgLTQxMTksNyArNDExOSw3IEBACiAJCQkJCQkJCQkJCQlNQVhfUldfU0laRSk7CiAJCQkJSXNUaGlzSGVhZGVyU2VjdG9yID0gRkFMU0UgOwogCQkJfQotCQkJLy9zdWJzdHJhY3RpbmcgdGhlIHdyaXR0ZW4gRGF0YQorCQkJLy9zdWJ0cmFjdGluZyB0aGUgd3JpdHRlbiBEYXRhCiAJCQl1aVRvdGFsRGF0YVRvQ29weSA9IHVpVG90YWxEYXRhVG9Db3B5IC0gQWRhcHRlci0+dWlTZWN0b3JTaXplIDsKIAkJfQogCkBAIC00MjUwLDcgKzQyNTAsNyBAQAogCQkJCUlzVGhpc0hlYWRlclNlY3RvciA9IEZBTFNFIDsKIAkJCX0KIAotCQkJLy9zdWJzdHJhY3RpbmcgdGhlIHdyaXR0ZW4gRGF0YQorCQkJLy9zdWJ0cmFjdGluZyB0aGUgd3JpdHRlbiBEYXRhCiAJCQl1aVRvdGFsRGF0YVRvQ29weSA9IHVpVG90YWxEYXRhVG9Db3B5IC0gQWRhcHRlci0+dWlTZWN0b3JTaXplIDsKIAkJfQogCkBAIC00MjY4LDcgKzQyNjgsNyBAQAogQGVGbGFzaDJ4U2VjdGlvblZhbCA6LSBGbGFzaCBzZWN0aW9uIHZhbCB3aGljaCBoYXMgaGVhZGVyCiAKIFJldHVybiBWYWx1ZSA6LQotCVN1Y2VzcyA6LSBJZiBTZWN0aW9uIGlzIHByZXNlbnQgYW5kIHdyaXRhYmxlLCBjb3JydXB0IHRoZSBzaWcgYW5kIHJldHVybiBTVEFUVVNfU1VDQ0VTUworCVN1Y2Nlc3MgOi0gSWYgU2VjdGlvbiBpcyBwcmVzZW50IGFuZCB3cml0YWJsZSwgY29ycnVwdCB0aGUgc2lnIGFuZCByZXR1cm4gU1RBVFVTX1NVQ0NFU1MKIAlGYWlsdXJlIDotUmV0dXJuIG5lZ2F0aXZlIGVycm9yIGNvZGUKIAogCkBAIC00MzAxLDcgKzQzMDEsNyBAQAogQGVGbGFzaFNlY3Rpb25WYWwgOi0gRmxhc2ggc2VjdGlvbiB2YWwgd2hpY2ggaGFzIGhlYWRlcgogCiBSZXR1cm4gVmFsdWUgOi0KLQlTdWNlc3MgOi0gSWYgU2VjdGlvbiBpcyBwcmVzZW50IGFuZCB3cml0YWJsZSB3cml0ZSB0aGUgc2lnIGFuZCByZXR1cm4gU1RBVFVTX1NVQ0NFU1MKKwlTdWNjZXNzIDotIElmIFNlY3Rpb24gaXMgcHJlc2VudCBhbmQgd3JpdGFibGUgd3JpdGUgdGhlIHNpZyBhbmQgcmV0dXJuIFNUQVRVU19TVUNDRVNTCiAJRmFpbHVyZSA6LVJldHVybiBuZWdhdGl2ZSBlcnJvciBjb2RlCiAKICoqLwpAQCAtNDUwNCw3ICs0NTA0LDcgQEAKIAkJCSAgICAgaW4gY2FzZSBvZiBudW1vZkJ5dGVzICBlcXVhbCB6ZXJvIGNvbXBsZXRlIHNlY3Rpb24gd2lsbCBiZSBjb3BpZWQuCiAKIFJldHVybiBWYWx1ZXMtCi0JU3VjZXNzIDogUmV0dXJuIFNUQVRVU19TVUNDRVNTCisJU3VjY2VzcyA6IFJldHVybiBTVEFUVVNfU1VDQ0VTUwogCUZhaWxsdXJlIDotIHJldHVybiBuZWdhdGl2ZSBlcnJvciBjb2RlCiAKICoqLwpAQCAtNDYyMSw3ICs0NjIxLDcgQEAKIEB1aU9mZnNldCA6LSBGbGFzaCBvZmZzZXQgdGhhdCBoYXMgdG8gYmUgd3JpdHRlbi4KIAogUmV0dXJuIHZhbHVlIDotCi0JU3VjZXNzIDotIE9uIHN1Y2VzcyByZXR1cm4gU1RBVFVTX1NVQ0NFU1MKKwlTdWNjZXNzIDotIE9uIHN1Y2Nlc3MgcmV0dXJuIFNUQVRVU19TVUNDRVNTCiAJRmFpbGx1cmUgOi0gUmV0dXJuIG5lZ2F0aXZlIGVycm9yIGNvZGUKIAogKiovCkBAIC00NjM0LDcgKzQ2MzQsNyBAQAogCVVJTlQgdWlTZWN0QWxpZ25BZGRyID0gMDsKIAlVSU5UIHNpZyA9IDA7CiAKLQkvL21ha2luZyB0aGUgb2Zmc2V0IHNlY3RvciBhbGxpZ25lZAorCS8vbWFraW5nIHRoZSBvZmZzZXQgc2VjdG9yIGFsaWduZWQKIAl1aVNlY3RBbGlnbkFkZHIgPSB1aU9mZnNldCAmIH4oQWRhcHRlci0+dWlTZWN0b3JTaXplIC0gMSk7CiAKIApAQCAtNDY0Myw3ICs0NjQzLDcgQEAKIAkodWlTZWN0QWxpZ25BZGRyID09IEJjbUdldFNlY3Rpb25WYWxFbmRPZmZzZXQoQWRhcHRlcixEU0QwKS0gQWRhcHRlci0+dWlTZWN0b3JTaXplKSkKIAl7CiAKLQkJLy9vZmZzZXQgZnJvbSB0aGUgc2VjdG9yIGJvdW5kcnkgaGF2aW5nIHRoZSBoZWFkZXIgbWFwCisJCS8vb2Zmc2V0IGZyb20gdGhlIHNlY3RvciBib3VuZGFyeSBoYXZpbmcgdGhlIGhlYWRlciBtYXAKIAkJb2Zmc2V0VG9Qcm90ZWN0ID0gQWRhcHRlci0+cHNGbGFzaDJ4Q1NJbmZvLT5PZmZzZXRGcm9tRFNEU3RhcnRGb3JEU0RIZWFkZXIgJSBBZGFwdGVyLT51aVNlY3RvclNpemU7CiAJCUhlYWRlclNpemVUb1Byb3RlY3QgPSBzaXplb2YoRFNEX0hFQURFUik7CiAJCWJIYXNIZWFkZXIgPSBUUlVFIDsKQEAgLTQ2OTcsNyArNDY5Nyw3IEBACiBAQWRhcGF0ZXIgOi0gQmNtIERyaXZlciBQcml2YXRlIERhdGEgU3RydWN0dXJlCiAKIE91dFB1dDotCi0JU2VsZWN0IHRoZSBBcHByb3ByaWF0ZSBjaGlwIGFuZCByZXRybiBzdGF0dXMgU3VjZXNzCisJU2VsZWN0IHRoZSBBcHByb3ByaWF0ZSBjaGlwIGFuZCByZXRybiBzdGF0dXMgU3VjY2VzcwogKiovCiBzdGF0aWMgSU5UIEJjbURvQ2hpcFNlbGVjdChQTUlOSV9BREFQVEVSIEFkYXB0ZXIsIFVJTlQgb2Zmc2V0KQogewpAQCAtNTA4Niw3ICs1MDg2LDcgQEAKIAl7CiAJCWlmKElzU2VjdGlvbldyaXRhYmxlKEFkYXB0ZXIsZUZsYXNoMnhTZWN0aW9uVmFsKSAhPSBUUlVFKQogCQl7Ci0JCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIDAsIDAsIlNlY3Rpb24gaXMgbm90IFdyaXRhYmxlLi4uSGVuY2UgY2FudCBDb3JydXB0IHNpZ25hdHVyZSIpOworCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfUFJJTlRLLCAwLCAwLCJTZWN0aW9uIGlzIG5vdCBXcml0YWJsZS4uLkhlbmNlIGNhbid0IENvcnJ1cHQgc2lnbmF0dXJlIik7CiAJCQlyZXR1cm4gU0VDVE9SX0lTX05PVF9XUklUQUJMRTsKIAkJfQogCX0KQEAgLTUxNTUsNyArNTE1NSw3IEBACiAKIAlpZihJc1NlY3Rpb25Xcml0YWJsZShBZGFwdGVyLGVGbGFzaDJ4U2VjdGlvblZhbCkgIT0gVFJVRSkKIAl7Ci0JCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX1BSSU5USywgMCwgMCwiU2VjdGlvbiBpcyBub3QgV3JpdGFibGUuLi5IZW5jZSBjYW50IENvcnJ1cHQgc2lnbmF0dXJlIik7CisJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX1BSSU5USywgMCwgMCwiU2VjdGlvbiBpcyBub3QgV3JpdGFibGUuLi5IZW5jZSBjYW4ndCBDb3JydXB0IHNpZ25hdHVyZSIpOwogCQlyZXR1cm4gU0VDVE9SX0lTX05PVF9XUklUQUJMRTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvUkVBRE1FIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9SRUFETUUKaW5kZXggOTllNjc2Ni4uZjhmYWNiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9SRUFETUUKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9SRUFETUUKQEAgLTcxLDcgKzcxLDcgQEAKIHBhc3NpdmUgb3BlcmF0aW9uLiBUcmFuc21pc3Npb24gb24gdGhvc2UgY2hhbm5lbHMgaXMgc3VwcHJlc3NlZCB1bnRpbAogYXBwcm9wcmlhdGUgb3RoZXIgdHJhZmZpYyBpcyBvYnNlcnZlZCBvbiB0aG9zZSBjaGFubmVscy4KIAotV2l0aGluIHRoZSBkcml2ZXIsIHdlIHVzZSB0aGUgZmljdGljaW91cyBjb3VudHJ5IGNvZGUgIlgyIiB0byByZXByZXNlbnQgdGhpcworV2l0aGluIHRoZSBkcml2ZXIsIHdlIHVzZSB0aGUgZmljdGl0aW91cyBjb3VudHJ5IGNvZGUgIlgyIiB0byByZXByZXNlbnQgdGhpcwogd29ybGR3aWRlIHJlZ3VsYXRvcnkgZG9tYWluLiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gaW50ZXJmYWNlIHRvIGNvbmZpZ3VyZSBhCiBkaWZmZXJlbnQgZG9tYWluLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaF9zZG1tYy5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGhfc2RtbWMuYwppbmRleCA2NTMxM2ZhLi43MWMzNTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaF9zZG1tYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoX3NkbW1jLmMKQEAgLTI2NCw3ICsyNjQsNyBAQAogfQogI2VuZGlmCQkJCS8qIGRlZmluZWQoT09CX0lOVFJfT05MWSkgJiYgZGVmaW5lZChIV19PT0IpICovCiAKLS8qIENvbmZpZ3VyZSBjYWxsYmFjayB0byBjbGllbnQgd2hlbiB3ZSByZWNpZXZlIGNsaWVudCBpbnRlcnJ1cHQgKi8KKy8qIENvbmZpZ3VyZSBjYWxsYmFjayB0byBjbGllbnQgd2hlbiB3ZSByZWNlaXZlIGNsaWVudCBpbnRlcnJ1cHQgKi8KIGV4dGVybiBTRElPSF9BUElfUkMKIHNkaW9oX2ludGVycnVwdF9yZWdpc3RlcihzZGlvaF9pbmZvX3QgKnNkLCBzZGlvaF9jYl9mbl90IGZuLCB2b2lkICphcmdoKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfY3VzdG9tX2dwaW8uYyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX2N1c3RvbV9ncGlvLmMKaW5kZXggY2JmYTFjMS4uMWNmNmM1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfY3VzdG9tX2dwaW8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9jdXN0b21fZ3Bpby5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8bWFjaC9ncGlvLmg+CiAjZW5kaWYKIAotLyogQ3VzdG9tZXIgc3BlY2lmaWMgSG9zdCBHUElPIGRlZmludGlvbiAgKi8KKy8qIEN1c3RvbWVyIHNwZWNpZmljIEhvc3QgR1BJTyBkZWZpbml0aW9uICAqLwogc3RhdGljIGludCBkaGRfb29iX2dwaW9fbnVtID0gLTE7CS8qIEdHIDE5ICovCiAKIG1vZHVsZV9wYXJhbShkaGRfb29iX2dwaW9fbnVtLCBpbnQsIDA2NDQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfbGludXguYyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX2xpbnV4LmMKaW5kZXggMDJjNmQ0NC4uZGQwMzc1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfbGludXguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9saW51eC5jCkBAIC00NzgsNyArNDc4LDcgQEAKIAkJCWRoZF9zZXRfcGFja2V0X2ZpbHRlcigxLCBkaGQpOwogCiAJCQkvKiBpZiBkdGltIHNraXAgc2V0dXAgYXMgZGVmYXVsdCBmb3JjZSBpdAotCQkJICogdG8gd2FrZSBlYWNoIHRocmlkIGR0aW0KKwkJCSAqIHRvIHdha2UgZWFjaCB0aGlyZCBkdGltCiAJCQkgKiBmb3IgYmV0dGVyIHBvd2VyIHNhdmluZy4KIAkJCSAqIE5vdGUgdGhhdCBzaWRlIGVmZmVjdCBpcyBjaGFuY2UgdG8gbWlzcyBCQy9NQwogCQkJICogcGFja2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9zZGlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9zZGlvLmMKaW5kZXggMTA2NjI3MC4uNDY0ZjUyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfc2Rpby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX3NkaW8uYwpAQCAtMzY1OSw3ICszNjU5LDcgQEAKIAkJCSAqIGNvbnRyb2wgcGt0IHJlY2VpdmVzLgogCQkJICogTGF0ZXIgd2UgdXNlIGJ1ZmZlci1wb2xsIGZvciBkYXRhIGFzIHdlbGwKIAkJCSAqIGFzIGNvbnRyb2wgcGFja2V0cy4KLQkJCSAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjdWFzZSBkaGQgcmVjZWl2ZXMgZnVsbAorCQkJICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGRoZCByZWNlaXZlcyBmdWxsCiAJCQkgKiBmcmFtZSBpbiBnU1BJIHVubGlrZSBTRElPLgogCQkJICogQWZ0ZXIgdGhlIGZyYW1lIGlzIHJlY2VpdmVkIHdlIGhhdmUgdG8KIAkJCSAqIGRpc3Rpbmd1aXNoIHdoZXRoZXIgaXQgaXMgZGF0YQpAQCAtMzc0NCw3ICszNzQ0LDcgQEAKIAkJCQkJYnVzLT5kaGQtPnJ4X2Vycm9ycysrOwogCQkJCQlkaGRfb3Nfc2R1bmxvY2tfcnhxKGJ1cy0+ZGhkKTsKIAkJCQkJLyogRm9yY2UgcmV0cnkgdy9ub3JtYWwgaGVhZGVyIHJlYWQuCi0JCQkJCSAqIERvbid0IGF0dGVtcCBOQUsgZm9yCisJCQkJCSAqIERvbid0IGF0dGVtcHQgTkFLIGZvcgogCQkJCQkgKiBnU1BJCiAJCQkJCSAqLwogCQkJCQlkaGRzZGlvX3J4ZmFpbChidXMsIHRydWUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsX21hYzgwMjExLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsX21hYzgwMjExLmMKaW5kZXggNzc0YjRlOS4uYzFiMDdhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bF9tYWM4MDIxMS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xfbWFjODAyMTEuYwpAQCAtMTA3OSw3ICsxMDc5LDcgQEAKIAkgKi8KIAlody0+bWF4X3JhdGVzID0gMjsJLyogUHJpbWFyeSByYXRlIGFuZCAxIGZhbGxiYWNrIHJhdGUgKi8KIAotCWh3LT5jaGFubmVsX2NoYW5nZV90aW1lID0gNyAqIDEwMDA7CS8qIGNoYW5uZWwgY2hhbmdlIHRpbWUgaXMgZGVwZW5kYW50IG9uIGNoaXAgYW5kIGJhbmQgICovCisJaHctPmNoYW5uZWxfY2hhbmdlX3RpbWUgPSA3ICogMTAwMDsJLyogY2hhbm5lbCBjaGFuZ2UgdGltZSBpcyBkZXBlbmRlbnQgb24gY2hpcCBhbmQgYmFuZCAgKi8KIAlody0+d2lwaHktPmludGVyZmFjZV9tb2RlcyA9IEJJVChOTDgwMjExX0lGVFlQRV9TVEFUSU9OKTsKIAogCWh3LT5yYXRlX2NvbnRyb2xfYWxnb3JpdGhtID0gIm1pbnN0cmVsX2h0IjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX2FtcGR1LmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19hbXBkdS5jCmluZGV4IGM2Y2RjZDkuLmYwMDg2NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX2FtcGR1LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfYW1wZHUuYwpAQCAtODksNyArODksNyBAQAogLyogc3RydWN0dXJlIHRvIGhvbGQgdHggZmlmbyBpbmZvcm1hdGlvbiBhbmQgcHJlLWxvYWRpbmcgc3RhdGUKICAqIGNvdW50ZXJzIHNwZWNpZmljIHRvIHR4IHVuZGVyZmxvd3Mgb2YgYW1wZHVzCiAgKiBzb21lIGNvdW50ZXJzIG1pZ2h0IGJlIHJlZHVuZGFudCB3aXRoIHRoZSBvbmVzIGluIHdsYyBvciBhbXBkdSBzdHJ1Y3R1cmVzLgotICogVGhpcyBhbGxvd3MgdG8gbWFpbnRhaW4gYSBzcGVjaWZpYyBzdGF0ZSBpbmRlcGVuZGFudGx5IG9mCisgKiBUaGlzIGFsbG93cyB0byBtYWludGFpbiBhIHNwZWNpZmljIHN0YXRlIGluZGVwZW5kZW50bHkgb2YKICAqIGhvdyBvZnRlbiBhbmQvb3Igd2hlbiB0aGUgd2xjIGNvdW50ZXJzIGFyZSB1cGRhdGVkLgogICovCiB0eXBlZGVmIHN0cnVjdCB3bGNfZmlmb19pbmZvIHsKQEAgLTI2NSw3ICsyNjUsNyBAQAogCiAJc2NiX2FtcGR1LT5tYXhfcGR1ID0gKHU4KSBhbXBkdS0+d2xjLT5wdWItPnR1bmFibGVzLT5hbXBkdW51bW1wZHU7CiAKLQkvKiBnbyBiYWNrIHRvIGxlZ2FjeSBzaXplIGlmIHNvbWUgcHJlbG9hZGluZyBpcyBvY2N1cmluZyAqLworCS8qIGdvIGJhY2sgdG8gbGVnYWN5IHNpemUgaWYgc29tZSBwcmVsb2FkaW5nIGlzIG9jY3VycmluZyAqLwogCWZvciAoaSA9IDA7IGkgPCBOVU1fRkZQTERfRklGTzsgaSsrKSB7CiAJCWlmIChhbXBkdS0+Zmlmb190YltpXS5hbXBkdV9wbGRfc2l6ZSA+IEZGUExEX1BMRF9JTkNSKQogCQkJc2NiX2FtcGR1LT5tYXhfcGR1ID0gQU1QRFVfTlVNX01QRFVfTEVHQUNZOwpAQCAtNDA2LDcgKzQwNiw3IEBACiAJCS8qCiAJCSAgIGNvbXB1dGUgYSBuZXcgZG1hIHhmZXIgcmF0ZSBmb3IgbWF4X21wZHUgQCBtYXggbWNzLgogCQkgICBUaGlzIGlzIHRoZSBtaW5pbXVtIGRtYSByYXRlIHRoYXQKLQkJICAgY2FuIGFjaGVpdmUgbm8gdW5mZXJmbG93IGNvbmRpdGlvbiBmb3IgdGhlIGN1cnJlbnQgbXBkdSBzaXplLgorCQkgICBjYW4gYWNoaWV2ZSBubyB1bmZlcmZsb3cgY29uZGl0aW9uIGZvciB0aGUgY3VycmVudCBtcGR1IHNpemUuCiAJCSAqLwogCQkvKiBub3RlIDogd2UgZGl2aWRlL211bHRpcGx5IGJ5IDEwMCB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93cyAqLwogCQlmaWZvLT5kbWF4ZmVycmF0ZSA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19ibWFjLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19ibWFjLmMKaW5kZXggNWE5NmRjMy4uNGI2ZTE4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfYm1hYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX2JtYWMuYwpAQCAtMTkxNSw3ICsxOTE1LDcgQEAKIAogCXBoeV9id19jbGtiaXRzID0gd2xjX3BoeV9jbGtfYndiaXRzKHdsY19ody0+YmFuZC0+cGkpOwogCi0JLyogU3BlY2ZpYyByZXNldCBzZXF1ZW5jZSByZXF1aXJlZCBmb3IgTlBIWSByZXYgMyBhbmQgNCAqLworCS8qIFNwZWNpZmljIHJlc2V0IHNlcXVlbmNlIHJlcXVpcmVkIGZvciBOUEhZIHJldiAzIGFuZCA0ICovCiAJaWYgKFdMQ0lTTlBIWSh3bGNfaHctPmJhbmQpICYmIE5SRVZfR0Uod2xjX2h3LT5iYW5kLT5waHlyZXYsIDMpICYmCiAJICAgIE5SRVZfTEUod2xjX2h3LT5iYW5kLT5waHlyZXYsIDQpKSB7CiAJCS8qIFNldCB0aGUgUEhZIGJhbmR3aWR0aCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfbWFpbi5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfbWFpbi5jCmluZGV4IDYzOWI1ZDcuLjcxN2ZjZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX21haW4uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19tYWluLmMKQEAgLTgyOTUsNyArODI5NSw3IEBACiAJcmV0dXJuIChxLT5zdG9wcGVkICYgcHJpb19tYXNrKSA9PSBwcmlvX21hc2s7CiB9CiAKLS8qIHByb3BvZ2F0ZSB0aGUgZmxvdyBjb250cm9sIHRvIGFsbCBpbnRlcmZhY2VzIHVzaW5nIHRoZSBnaXZlbiB0eCBxdWV1ZSAqLworLyogcHJvcGFnYXRlIHRoZSBmbG93IGNvbnRyb2wgdG8gYWxsIGludGVyZmFjZXMgdXNpbmcgdGhlIGdpdmVuIHR4IHF1ZXVlICovCiB2b2lkIHdsY190eGZsb3djb250cm9sKHN0cnVjdCB3bGNfaW5mbyAqd2xjLCBzdHJ1Y3Qgd2xjX3R4cV9pbmZvICpxaSwKIAkJICAgICAgIGJvb2wgb24sIGludCBwcmlvKQogewpAQCAtODQ2Miw3ICs4NDYyLDcgQEAKIH0KIAogLyoKLSAqIEZsYWcgJ3NjYW4gaW4gcHJvZ3Jlc3MnIHRvIHdpdGhvbGQgZHluYW1pYyBwaHkgY2FsaWJyYXRpb24KKyAqIEZsYWcgJ3NjYW4gaW4gcHJvZ3Jlc3MnIHRvIHdpdGhob2xkIGR5bmFtaWMgcGh5IGNhbGlicmF0aW9uCiAgKi8KIHZvaWQgd2xjX3NjYW5fc3RhcnQoc3RydWN0IHdsY19pbmZvICp3bGMpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19yYXRlLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19yYXRlLmMKaW5kZXggMGNmYTM2MC4uZDI4NGYxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfcmF0ZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX3JhdGUuYwpAQCAtMzMyLDcgKzMzMiw3IEBACiAJCXJldHVybiBmYWxzZTsKIH0KIAotLyogY2FsdWNsYXRlIHRoZSByYXRlIG9mIGEgcngnZCBmcmFtZSBhbmQgcmV0dXJuIGl0IGFzIGEgcmF0ZXNwZWMgKi8KKy8qIGNhbGN1bGF0ZSB0aGUgcmF0ZSBvZiBhIHJ4J2QgZnJhbWUgYW5kIHJldHVybiBpdCBhcyBhIHJhdGVzcGVjICovCiByYXRlc3BlY190IEJDTUZBU1RQQVRIIHdsY19jb21wdXRlX3JzcGVjKGQxMXJ4aGRyX3QgKnJ4aCwgdTggKnBsY3ApCiB7CiAJaW50IHBoeV90eXBlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmggYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvYmNtc3JvbV9mbXQuaAppbmRleCBhZTJiZmY4Li40NzY4OTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvYmNtc3JvbV9mbXQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvYmNtc3JvbV9mbXQuaApAQCAtMTAzLDcgKzEwMyw3IEBACiAKICNkZWZpbmUJU1JPTV9DUkNSRVYJCTYzCiAKLS8qIFNST00gUmV2IDQ6IFJlYWxsb2NhdGUgdGhlIHNvZnR3YXJlIHBhcnQgb2YgdGhlIHNyb20gdG8gYWNjb21vZGF0ZQorLyogU1JPTSBSZXYgNDogUmVhbGxvY2F0ZSB0aGUgc29mdHdhcmUgcGFydCBvZiB0aGUgc3JvbSB0byBhY2NvbW1vZGF0ZQogICogTUlNTyBmZWF0dXJlcy4gSXQgYXNzdW1lcyB1cCB0byB0d28gUENJRSBmdW5jdGlvbnMgYW5kIDQ0MCBieXRlcwogICogb2YgdXNlYWJsZSBzcm9tIGkuZS4gdGhlIHVzZWFibGUgc3RvcmFnZSBpbiBjaGlwcyB3aXRoIE9UUCB0aGF0CiAgKiBpbXBsZW1lbnRzIGhhcmR3YXJlIHJlZHVuZGFuY3kuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvaG5kc29jLmggYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvaG5kc29jLmgKaW5kZXggOTc0N2NjNC4uNjQzNTY4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2huZHNvYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvaW5jbHVkZS9obmRzb2MuaApAQCAtMTgxLDcgKzE4MSw3IEBACiAgKiBjb252ZW50aW9ucyBmb3IgdGhlIHVzZSB0aGUgZmxhc2ggc3BhY2U6CiAgKi8KIAotLyogTWludW11bSBhbW91bnQgb2YgZmxhc2ggd2Ugc3VwcG9ydCAqLworLyogTWluaW11bSBhbW91bnQgb2YgZmxhc2ggd2Ugc3VwcG9ydCAqLwogI2RlZmluZSBGTEFTSF9NSU4JCTB4MDAwMjAwMDAJLyogTWluaW11bSBmbGFzaCBzaXplICovCiAKIC8qIEEgYm9vdC9iaW5hcnkgbWF5IGhhdmUgYW4gZW1iZWRkZWQgYmxvY2sgdGhhdCBkZXNjcmliZXMgaXRzIHNpemUgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtb3RwLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtb3RwLmMKaW5kZXggYmE3MWMxMC4uMTc5OTEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbW90cC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21vdHAuYwpAQCAtMjEzLDcgKzIxMyw3IEBACiAJcmV0dXJuIChpbnQpc3Q7CiB9CiAKLS8qIENhbGN1bGF0ZSBtYXggSFcvU1cgcmVnaW9uIGJ5dGUgc2l6ZSBieSBzdWJzdHJhY3RpbmcgZnVzZSByZWdpb24gYW5kIGNoZWNrc3VtIHNpemUsCisvKiBDYWxjdWxhdGUgbWF4IEhXL1NXIHJlZ2lvbiBieXRlIHNpemUgYnkgc3VidHJhY3RpbmcgZnVzZSByZWdpb24gYW5kIGNoZWNrc3VtIHNpemUsCiAgKiBvc2l6ZXcgaXMgb2ktPndzaXplIChPVFAgc2l6ZSAtIEdVIHNpemUpIGluIHdvcmRzCiAgKi8KIHN0YXRpYyBpbnQgaXB4b3RwX21heF9yZ25zeihzaV90ICpzaWgsIGludCBvc2l6ZXcpCkBAIC0yMjksNyArMjI5LDcgQEAKIAkJcmV0ID0gb3NpemV3ICogMiAtIE9UUF9TWl9GVV83MiAtIE9UUF9TWl9DSEVDS1NVTTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJQVNTRVJUKDApOwkvKiBEb24ndCBrb253IGFib3V0IHRoaXMgY2hpcCAqLworCQlBU1NFUlQoMCk7CS8qIERvbid0IGtub3cgYWJvdXQgdGhpcyBjaGlwICovCiAJfQogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21zcm9tLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtc3JvbS5jCmluZGV4IGVjYTM1YjkuLjg1MGJmYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21zcm9tLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbXNyb20uYwpAQCAtMTg1OSw3ICsxODU5LDcgQEAKIAogCS8qCiAJICogQXBwbHkgQ1JDIG92ZXIgU1JPTSBjb250ZW50IHJlZ2FyZGxlc3MgU1JPTSBpcyBwcmVzZW50IG9yIG5vdCwKLQkgKiBhbmQgdXNlIHZhcmlhYmxlIDxkZXZwYXRoPnNyb21yZXYncyBleGlzdGFuY2UgaW4gZmxhc2ggdG8gZGVjaWRlCisJICogYW5kIHVzZSB2YXJpYWJsZSA8ZGV2cGF0aD5zcm9tcmV2J3MgZXhpc3RlbmNlIGluIGZsYXNoIHRvIGRlY2lkZQogCSAqIGlmIHdlIHNob3VsZCByZXR1cm4gYW4gZXJyb3Igd2hlbiBDUkMgZmFpbHMgb3IgcmVhZCBTUk9NIHZhcmlhYmxlcwogCSAqIGZyb20gZmxhc2guCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvaG5kZG1hLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvaG5kZG1hLmMKaW5kZXggOGE4MWViOS4uYmUzMzlmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2huZGRtYS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9obmRkbWEuYwpAQCAtMTE3OSw3ICsxMTc5LDcgQEAKIAkJICAgKHJhbmdlID09IEhORERNQV9SQU5HRV9BTEwpID8gImFsbCIgOgogCQkgICAoKHJhbmdlID09CiAJCSAgICAgSE5ERE1BX1JBTkdFX1RSQU5TTUlUVEVEKSA/ICJ0cmFuc21pdHRlZCIgOgotCQkgICAgInRyYW5zZmVyZWQiKSkpOworCQkgICAgInRyYW5zZmVycmVkIikpKTsKIAogCWlmIChkaS0+dHhpbiA9PSBkaS0+dHhvdXQpCiAJCXJldHVybjsKQEAgLTE1NDksNyArMTU0OSw3IEBACiAgKiBJZiByYW5nZSBpcyBITkRETUFfUkFOR0VfVFJBTlNNSVRURUQsIHJlY2xhaW0gZGVzY3JpcHRvcnMgdGhhdCBoYXZlIGJlCiAgKiB0cmFuc21pdHRlZCBhcyBub3RlZCBieSB0aGUgaGFyZHdhcmUgIkN1cnJEZXNjciIgcG9pbnRlci4KICAqIElmIHJhbmdlIGlzIEhORERNQV9SQU5HRV9UUkFOU0ZFUkVELCByZWNsYWltIGRlc2NyaXB0b3JzIHRoYXQgaGF2ZSBiZQotICogdHJhbnNmZXJlZCBieSB0aGUgRE1BIGFzIG5vdGVkIGJ5IHRoZSBoYXJkd2FyZSAiQWN0aXZlRGVzY3IiIHBvaW50ZXIuCisgKiB0cmFuc2ZlcnJlZCBieSB0aGUgRE1BIGFzIG5vdGVkIGJ5IHRoZSBoYXJkd2FyZSAiQWN0aXZlRGVzY3IiIHBvaW50ZXIuCiAgKiBJZiByYW5nZSBpcyBITkRETUFfUkFOR0VfQUxMLCByZWNsYWltIGFsbCB0eGQocykgcG9zdGVkIHRvIHRoZSByaW5nIGFuZAogICogcmV0dXJuIGFzc29jaWF0ZWQgcGFja2V0IHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGhhcmR3YXJlIHBvaW50ZXJzLgogICovCkBAIC0xNTYzLDcgKzE1NjMsNyBAQAogCQkgICAocmFuZ2UgPT0gSE5ERE1BX1JBTkdFX0FMTCkgPyAiYWxsIiA6CiAJCSAgICgocmFuZ2UgPT0KIAkJICAgICBITkRETUFfUkFOR0VfVFJBTlNNSVRURUQpID8gInRyYW5zbWl0dGVkIiA6Ci0JCSAgICAidHJhbnNmZXJlZCIpKSk7CisJCSAgICAidHJhbnNmZXJyZWQiKSkpOwogCiAJaWYgKGRpLT5udHhkID09IDApCiAJCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NicGNtY2lhLmggYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvc2JwY21jaWEuaAppbmRleCA2Yjk5MjNmNS4uZDRjMTU2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NicGNtY2lhLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NicGNtY2lhLmgKQEAgLTEwOSw3ICsxMDksNyBAQAogI2RlZmluZQlDSVNUUExfQ0ZUQUJMRQkJMHgxYgkvKiBDb25maWcgdGFibGUgZW50cnkgKi8KICNkZWZpbmUJQ0lTVFBMX0VORAkJMHhmZgkvKiBFbmQgb2YgdGhlIENJUyB0dXBsZSBjaGFpbiAqLwogCi0vKiBGdW5jdGlvbiBpZGVudGlmaWVyIHByb3ZpZGVzIGNvbnRleHQgZm9yIHRoZSBmdW5jdGlvbiBleHRlbnRpb25zIHR1cGxlICovCisvKiBGdW5jdGlvbiBpZGVudGlmaWVyIHByb3ZpZGVzIGNvbnRleHQgZm9yIHRoZSBmdW5jdGlvbiBleHRlbnNpb25zIHR1cGxlICovCiAjZGVmaW5lIENJU1RQTF9GSURfU0RJTwkJMHgwYwkvKiBFeHRlbnNpb25zIGRlZmluZWQgYnkgU0RJTyBzcGVjICovCiAKIC8qIEZ1bmN0aW9uIGV4dGVuc2lvbnMgZm9yIExBTnMgKGFzc3VtZWQgZm9yIGV4dGVuc2lvbnMgb3RoZXIgdGhhbiBTRElPKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NpdXRpbHMuYyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9zaXV0aWxzLmMKaW5kZXggZWQxNjhjZS4uNmViZDdmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NpdXRpbHMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvc2l1dGlscy5jCkBAIC0xMzE5LDcgKzEzMTksNyBAQAogfQogCiAvKgotICogIGNsb2NrIGNvbnRyb2wgcG9saWN5IGZ1bmN0aW9uIHRocm91Z2h0IGNoaXBjb21tb24KKyAqICBjbG9jayBjb250cm9sIHBvbGljeSBmdW5jdGlvbiB0aHJvdWdoIGNoaXBjb21tb24KICAqCiAgKiAgICBzZXQgZHluYW1pYyBjbGsgY29udHJvbCBtb2RlIChmb3JjZXNsb3csIGZvcmNlZmFzdCwgZHluYW1pYykKICAqICAgIHJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgZm9yY2luZyBmYXN0IGNsb2NrCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2NvbWVkaV9mb3BzLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2NvbWVkaV9mb3BzLmMKaW5kZXggYTRjZWIyOWMuLmU3ZTcyYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvY29tZWRpX2ZvcHMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2NvbWVkaV9mb3BzLmMKQEAgLTIwNjQsNyArMjA2NCw3IEBACiAJCQkgICAgIENPTUVESV9DQl9PVkVSRkxPVykpIHsKIAkJcnVuZmxhZ3NfbWFzayB8PSBTUkZfUlVOTklORzsKIAl9Ci0JLyogcmVtZW1iZXIgaWYgYW4gZXJyb3IgZXZlbnQgaGFzIG9jY3VyZWQsIHNvIGFuIGVycm9yCisJLyogcmVtZW1iZXIgaWYgYW4gZXJyb3IgZXZlbnQgaGFzIG9jY3VycmVkLCBzbyBhbiBlcnJvcgogCSAqIGNhbiBiZSByZXR1cm5lZCB0aGUgbmV4dCB0aW1lIHRoZSB1c2VyIGRvZXMgYSByZWFkKCkgKi8KIAlpZiAocy0+YXN5bmMtPmV2ZW50cyAmIChDT01FRElfQ0JfRVJST1IgfCBDT01FRElfQ0JfT1ZFUkZMT1cpKSB7CiAJCXJ1bmZsYWdzX21hc2sgfD0gU1JGX0VSUk9SOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9BUENJMTcxMF9DaHJvbm8uYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvQVBDSTE3MTBfQ2hyb25vLmMKaW5kZXggNjQ0YmRhNC4uNDgyYTQxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9BUENJMTcxMF9DaHJvbm8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL0FQQ0kxNzEwX0Nocm9uby5jCkBAIC0xMjQsOSArMTI0LDkgQEAKIHwgICAgICAgICAgICAgICAgICAgICAtNTogVGhlIHNlbGVjdGVkIFBDSSBpbnB1dCBjbG9jayBpcyB3cm9uZyAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgIC02OiBUaW1pbmcgdW5pdHkgc2VsZWN0aW9uIGlzIHdyb25nICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgLTc6IEJhc2UgdGltaW5nIHNlbGVjdGlvbiBpcyB3cm9uZyAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAtODogWW91IGNhbiBub3QgdXNlZCB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpY2ggICAgfAorfCAgICAgICAgICAgICAgICAgICAgIC04OiBZb3UgY2FuIG5vdCB1c2VkIHRoZSA0ME1IeiBjbG9jayBzZWxlY3Rpb24gd2l0aCAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAtOTogWW91IGNhbiBub3QgdXNlZCB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpY2ggICAgfAorfCAgICAgICAgICAgICAgICAgICAgIC05OiBZb3UgY2FuIG5vdCB1c2VkIHRoZSA0ME1IeiBjbG9jayBzZWxlY3Rpb24gd2l0aCAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgQ0hST05PUyB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogKi8KQEAgLTcyMSwxMCArNzIxLDEwIEBACiAJCQkJCQkJCX0KIAkJCQkJCQl9IGVsc2UgewogCQkJICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0JCQkJCQkJCS8qIFlvdSBjYW4gbm90IHVzZWQgdGhlIDQwTUh6IGNsb2NrIHNlbGVjdGlvbiB3aWNoIHRoaXMgYm9hcmQgKi8KKwkJCQkJCQkJLyogWW91IGNhbiBub3QgdXNlIHRoZSA0ME1IeiBjbG9jayBzZWxlY3Rpb24gd2l0aCB0aGlzIGJvYXJkICovCiAJCQkgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotCQkJCQkJCQlEUFJJTlRLKCJZb3UgY2FuIG5vdCB1c2VkIHRoZSA0ME1IeiBjbG9jayBzZWxlY3Rpb24gd2ljaCB0aGlzIGJvYXJkXG4iKTsKKwkJCQkJCQkJRFBSSU5USygiWW91IGNhbiBub3QgdXNlZCB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpdGggdGhpcyBib2FyZFxuIik7CiAJCQkJCQkJCWlfUmV0dXJuVmFsdWUgPQogCQkJCQkJCQkJLTg7CiAJCQkJCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9hZGRpX2FtY2NfUzU5MjAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvYWRkaV9hbWNjX1M1OTIwLmMKaW5kZXggOTBlNzFlMS4uYjk3MzA5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9hZGRpX2FtY2NfUzU5MjAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2FkZGlfYW1jY19TNTkyMC5jCkBAIC01OSw3ICs1OSw3IEBACiAvKistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyovCiAvKnwgSW5wdXQgUGFyYW1ldGVycyAgOiBpbnQgICAgaV9OYk9mV29yZHNUb1JlYWQgOiBOYnIuIG9mIHdvcmQgdG8gcmVhZCAgICAgICAgfCovCiAvKnwgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZHdfUENJQm9hcmRFZXByb21BZGRyZXNzIDogQWRkcmVzcyBvZiB0aGUgZWVwcm9tIHwqLwotLyp8ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgICB3X0VlcHJvbVN0YXJ0QWRkcmVzcyA6IEVlcHJvbSBzdHJhdCBhZGRyZXNzICAgICB8Ki8KKy8qfCAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICAgd19FZXByb21TdGFydEFkZHJlc3MgOiBFZXByb20gc3RhcnQgYWRkcmVzcyAgICAgfCovCiAvKistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyovCiAvKnwgT3V0cHV0IFBhcmFtZXRlcnMgOiB1bnNpZ25lZCBzaG9ydCAqIHB3X0RhdGFSZWFkIDogUmVhZCBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICB8Ki8KIC8qKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTIwMzIuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTIwMzIuYwppbmRleCA5ZGQ4NTdkLi4wMDIyOTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kyMDMyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMjAzMi5jCkBAIC00OTgsNyArNDk4LDcgQEAKIAlzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2ID0gZDsKIAl1bnNpZ25lZCBpbnQgdWlfRE87CiAKLQl1aV9ETyA9IGlubChkZXZwcml2LT5pb2Jhc2UgKyBBUENJMjAzMl9ESUdJVEFMX09QX0lSUSkgJiAweDE7CS8qIENoZWNrIGlmIFZDQyBPUiBDQyBpbnRlcnJ1cHQgaGFzIG9jY3VyZWQuICovCisJdWlfRE8gPSBpbmwoZGV2cHJpdi0+aW9iYXNlICsgQVBDSTIwMzJfRElHSVRBTF9PUF9JUlEpICYgMHgxOwkvKiBDaGVjayBpZiBWQ0MgT1IgQ0MgaW50ZXJydXB0IGhhcyBvY2N1cnJlZC4gKi8KIAogCWlmICh1aV9ETyA9PSAwKSB7CiAJCXByaW50aygiXG5JbnRlcnJ1cHQgZnJvbSB1bktub3duIHNvdXJjZVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMTIwLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMTIwLmMKaW5kZXggYTgxM2ZkYi4uZmM2MTIxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzEyMC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMxMjAuYwpAQCAtMTQ4LDcgKzE0OCw3IEBACiAJdW5zaWduZWQgc2hvcnQgdXNfQ29udmVydFRpbWluZywgdXNfVG1wVmFsdWUsIGk7CiAJdW5zaWduZWQgY2hhciBiX1RtcDsKIAotCS8qICBmaXggY29udmVydGlvbiB0aW1lIHRvIDEwIHVzICovCisJLyogIGZpeCBjb252ZXJzaW9uIHRpbWUgdG8gMTAgdXMgKi8KIAlpZiAoIWRldnByaXYtPnVpX0VvY0Vvc0NvbnZlcnNpb25UaW1lKSB7CiAJCXByaW50aygiTm8gdGltZXIwIFZhbHVlIHVzaW5nIDEwIHVzXG4iKTsKIAkJdXNfQ29udmVydFRpbWluZyA9IDEwOwpAQCAtMjUxLDcgKzI1MSw3IEBACiAJCQkJQVBDSTMxMjBfU0VMRUNUX1RJTUVSXzBfV09SRDsKIAkJCW91dGIoYl9UbXAsIGRldnByaXYtPmlvYmFzZSArIEFQQ0kzMTIwX1RJTUVSX0NSVDApOwogCi0JCQkvKiBTZXQgdGhlIGNvbnZlcnRpb24gdGltZSAqLworCQkJLyogU2V0IHRoZSBjb252ZXJzaW9uIHRpbWUgKi8KIAkJCW91dHcodXNfQ29udmVydFRpbWluZywKIAkJCQlkZXZwcml2LT5pb2Jhc2UgKyBBUENJMzEyMF9USU1FUl9WQUxVRSk7CiAKQEAgLTMxMSw3ICszMTEsNyBAQAogCQkJCUFQQ0kzMTIwX1NFTEVDVF9USU1FUl8wX1dPUkQ7CiAJCQlvdXRiKGJfVG1wLCBkZXZwcml2LT5pb2Jhc2UgKyBBUENJMzEyMF9USU1FUl9DUlQwKTsKIAotCQkJLyogU2V0IHRoZSBjb252ZXJ0aW9uIHRpbWUgKi8KKwkJCS8qIFNldCB0aGUgY29udmVyc2lvbiB0aW1lICovCiAJCQlvdXR3KHVzX0NvbnZlcnRUaW1pbmcsCiAJCQkJZGV2cHJpdi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfVkFMVUUpOwogCkBAIC0zNTQsOSArMzU0LDkgQEAKIAkJCS8qIFN0YXJ0IGNvbnZlcnNpb24gKi8KIAkJCW91dHcoMCwgZGV2cHJpdi0+aW9iYXNlICsgQVBDSTMxMjBfU1RBUlRfQ09OVkVSU0lPTik7CiAKLQkJCS8qIFdhaXRpbmcgb2YgZW5kIG9mIGNvbnZlcnRpb24gaWYgaW50ZXJydXB0IGlzIG5vdCBpbnN0YWxsZWQgKi8KKwkJCS8qIFdhaXRpbmcgb2YgZW5kIG9mIGNvbnZlcnNpb24gaWYgaW50ZXJydXB0IGlzIG5vdCBpbnN0YWxsZWQgKi8KIAkJCWlmIChkZXZwcml2LT5iX0VvY0Vvc0ludGVycnVwdCA9PSBBUENJMzEyMF9ESVNBQkxFKSB7Ci0JCQkJLyogV2FpdGluZyB0aGUgZW5kIG9mIGNvbnZlcnRpb24gKi8KKwkJCQkvKiBXYWl0aW5nIHRoZSBlbmQgb2YgY29udmVyc2lvbiAqLwogCQkJCWRvIHsKIAkJCQkJdXNfVG1wVmFsdWUgPQogCQkJCQkJaW53KGRldnByaXYtPmlvYmFzZSArCkBAIC04NTQsNyArODU0LDcgQEAKIAkJCQliX0RpZ2l0YWxPdXRwdXRSZWdpc3RlcikgJiAweEYwKSB8CiAJCQlBUENJMzEyMF9TRUxFQ1RfVElNRVJfMF9XT1JEOwogCQlvdXRiKGJfVG1wLCBkZXYtPmlvYmFzZSArIEFQQ0kzMTIwX1RJTUVSX0NSVDApOwotCQkvKiBTZXQgdGhlIGNvbnZlcnRpb24gdGltZSAqLworCQkvKiBTZXQgdGhlIGNvbnZlcnNpb24gdGltZSAqLwogCQlvdXR3KCgodW5zaWduZWQgc2hvcnQpIHVpX1RpbWVyVmFsdWUwKSwKIAkJCWRldi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfVkFMVUUpOwogCQlicmVhazsKQEAgLTg3Miw3ICs4NzIsNyBAQAogCQkJCWJfRGlnaXRhbE91dHB1dFJlZ2lzdGVyKSAmIDB4RjApIHwKIAkJCUFQQ0kzMTIwX1NFTEVDVF9USU1FUl8xX1dPUkQ7CiAJCW91dGIoYl9UbXAsIGRldi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfQ1JUMCk7Ci0JCS8qIFNldCB0aGUgY29udmVydGlvbiB0aW1lICovCisJCS8qIFNldCB0aGUgY29udmVyc2lvbiB0aW1lICovCiAJCW91dHcoKCh1bnNpZ25lZCBzaG9ydCkgdWlfVGltZXJWYWx1ZTEpLAogCQkJZGV2LT5pb2Jhc2UgKyBBUENJMzEyMF9USU1FUl9WQUxVRSk7CiAKQEAgLTg4OSw3ICs4ODksNyBAQAogCQkJQVBDSTMxMjBfU0VMRUNUX1RJTUVSXzBfV09SRDsKIAkJb3V0YihiX1RtcCwgZGV2LT5pb2Jhc2UgKyBBUENJMzEyMF9USU1FUl9DUlQwKTsKIAotCQkvKiBTZXQgdGhlIGNvbnZlcnRpb24gdGltZSAqLworCQkvKiBTZXQgdGhlIGNvbnZlcnNpb24gdGltZSAqLwogCQlvdXR3KCgodW5zaWduZWQgc2hvcnQpIHVpX1RpbWVyVmFsdWUwKSwKIAkJCWRldi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfVkFMVUUpOwogCQlicmVhazsKQEAgLTExMDQsNyArMTEwNCw3IEBACiAKIC8qCiAgKiA0Ci0gKiBhbW91bnQgb2YgYnl0ZXMgdG8gYmUgdHJhbnNmZXJlZCBzZXQgdHJhbnNmZXIgY291bnQgdXNlZCBBRERPTgorICogYW1vdW50IG9mIGJ5dGVzIHRvIGJlIHRyYW5zZmVycmVkIHNldCB0cmFuc2ZlciBjb3VudCB1c2VkIEFERE9OCiAgKiBNV1RDIHJlZ2lzdGVyIGNvbW1lbnRlZCB0ZXN0aW5nCiAgKiBvdXRsKGRldnByaXYtPnVpX0RtYUJ1ZmZlclVzZXNpemVbMF0sCiAgKiBkZXZwcml2LT5pX0lvYmFzZUFkZG9uK0FNQ0NfT1BfUkVHX0FNV1RDKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMxMjAuaCBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMxMjAuaAppbmRleCBiM2M4MTk3Li41MGViMGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMTIwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzEyMC5oCkBAIC0xNjksNyArMTY5LDcgQEAKIAogCXVuc2lnbmVkIGNoYXIgYl9UeXBlOwkJLyogRU9DIG9yIEVPUyAqLwogCXVuc2lnbmVkIGNoYXIgYl9JbnRlcnJ1cHRGbGFnOwkvKiBJbnRlcnJ1cHQgdXNlIG9yIG5vdCAgICAgICAgICAgICAgICAgICAgKi8KLQl1bnNpZ25lZCBpbnQgdWlfQ29udmVydFRpbWluZzsJLyogU2VsZWN0aW9uIG9mIHRoZSBjb252ZXJ0aW9uIHRpbWUgICAgICAgICovCisJdW5zaWduZWQgaW50IHVpX0NvbnZlcnRUaW1pbmc7CS8qIFNlbGVjdGlvbiBvZiB0aGUgY29udmVyc2lvbiB0aW1lICAgICAgICAqLwogCXVuc2lnbmVkIGNoYXIgYl9OYnJPZkNoYW5uZWw7CS8qIE51bWJlciBvZiBjaGFubmVsIHRvIHJlYWQgICAgICAgICAgICAgICAqLwogCXVuc2lnbmVkIGludCB1aV9DaGFubmVsTGlzdFtNQVhfQU5BTE9HSU5QVVRfQ0hBTk5FTFNdOwkvKiBOdW1iZXIgb2YgdGhlIGNoYW5uZWwgdG8gYmUgcmVhZCAgICAgICAgKi8KIAl1bnNpZ25lZCBpbnQgdWlfUmFuZ2VMaXN0W01BWF9BTkFMT0dJTlBVVF9DSEFOTkVMU107CS8qIEdhaW4gb2YgZWFjaCBjaGFubmVsICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzIwMC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzIwMC5jCmluZGV4IGE5M2UyMzQuLmM3NWExYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMyMDAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMjAwLmMKQEAgLTEwMyw3ICsxMDMsNyBAQAogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsqLwogLyp8IElucHV0IFBhcmFtZXRlcnMgIDogaW50ICAgIGlfTmJPZldvcmRzVG9SZWFkIDogTmJyLiBvZiB3b3JkIHRvIHJlYWQgICAgICAgIHwqLwogLyp8ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGR3X1BDSUJvYXJkRWVwcm9tQWRkcmVzcyA6IEFkZHJlc3Mgb2YgdGhlIGVlcHJvbSB8Ki8KLS8qfCAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICAgd19FZXByb21TdGFydEFkZHJlc3MgOiBFZXByb20gc3RyYXQgYWRkcmVzcyAgICAgfCovCisvKnwgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAgIHdfRWVwcm9tU3RhcnRBZGRyZXNzIDogRWVwcm9tIHN0YXJ0IGFkZHJlc3MgICAgIHwqLwogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsqLwogLyp8IE91dHB1dCBQYXJhbWV0ZXJzIDogdW5zaWduZWQgc2hvcnQgKiBwd19EYXRhUmVhZCA6IFJlYWQgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgfCovCiAvKistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyovCkBAIC04NDksNyArODQ5LDcgQEAKICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA6U2luZ2xlIFJlYWQKICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE6UmVhZCBtb3JlIGNoYW5uZWwKICAgMjpTaW5nbGUgc2NhbgotICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzpDb250aW5vdXMgU2NhbgorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzpDb250aW51b3VzIFNjYW4KICAgZGF0YVsxM10gICAgICAgICAgOk51bWJlciBvZiBjaGFubmVscyB0byByZWFkCiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbMTRdICAgICAgICAgIDpSVEQgY29ubmVjdGlvbiB0eXBlCiAgIDowOlJURCBub3QgdXNlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkbF9wY2k5MTE4LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRsX3BjaTkxMTguYwppbmRleCA3NjYxMDNjLi42MzJkNWQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRsX3BjaTkxMTguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRsX3BjaTkxMTguYwpAQCAtMjMsNyArMjMsNyBAQAogLSBJZiBjbWQtPnNjYW5fYmVnaW5fc3JjPVRSSUdfRVhUIHRoZW4gdHJpZ2dlciBpbnB1dCBpcyBUR0lOIChwaW4gNDYpLgogLSBJZiBjbWQtPmNvbnZlcnRfc3JjPVRSSUdfRVhUIHRoZW4gdHJpZ2dlciBpbnB1dCBpcyBFWFRUUkcgKHBpbiA0NCkuCiAtIElmIGNtZC0+c3RhcnRfc3JjL3N0b3Bfc3JjPVRSSUdfRVhUIHRoZW4gdHJpZ2dlciBpbnB1dCBpcyBUR0lOIChwaW4gNDYpLgotLSBJdCBpcyBub3QgbmVjY2Vzc2FyeSB0byBoYXZlIGNtZC5zY2FuX2VuZF9hcmc9Y21kLmNoYW5saXN0X2xlbiBidXQKKy0gSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBoYXZlIGNtZC5zY2FuX2VuZF9hcmc9Y21kLmNoYW5saXN0X2xlbiBidXQKICAgY21kLnNjYW5fZW5kX2FyZyBtb2R1bG8gY21kLmNoYW5saXN0X2xlbiBtdXN0IGJ5IDAuCiAtIElmIHJldHVybiB2YWx1ZSBvZiBjbWR0ZXN0IGlzIDUgdGhlbiB5b3UndmUgYmFkIGNoYW5uZWwgbGlzdAogICAoaXQgaXNuJ3QgcG9zc2libGUgbWl4dHVyZSBTLkUuIGFuZCBESUZGIGlucHV0cyBvciBiaXBvbGFyIGFuZCB1bmlwb2xhcgpAQCAtODIzLDcgKzgyMyw3IEBACiAJCW1vdmVfYmxvY2tfZnJvbV9kbWEoZGV2LCBzLAogCQkJCSAgICBkZXZwcml2LT5kbWFidWZfdmlydFtkZXZwcml2LT5kbWFfYWN0YnVmXSwKIAkJCQkgICAgc2FtcGxlc2luYnVmKTsKLQkJbSA9IG0gLSBzYW1wbHM7CQkvKiBtPSBob3cgbWFueSBzYW1wbGVzIHdhcyB0cmFuc2ZlcmVkICovCisJCW0gPSBtIC0gc2FtcGxzOwkJLyogbT0gaG93IG1hbnkgc2FtcGxlcyB3YXMgdHJhbnNmZXJyZWQgKi8KIAl9CiAvKiBEUFJJTlRLKCJZWVlcbiIpOyAqLwogCkBAIC0xMjk3LDcgKzEyOTcsNyBAQAogCURQUklOVEsoIjMgZG1hbGVuMD0lZCBkbWFsZW4xPSVkXG4iLCBkbWFsZW4wLCBkbWFsZW4xKTsKIAkvKiB0cmFuc2ZlciB3aXRob3V0IFRSSUdfV0FLRV9FT1MgKi8KIAlpZiAoIShkZXZwcml2LT5haV9mbGFncyAmIFRSSUdfV0FLRV9FT1MpKSB7Ci0JCS8qIGlmIGl0J3MgcG9zc2libGUgdGhlbiBhbGxpZ24gRE1BIGJ1ZmZlcnMgdG8gbGVuZ3RoIG9mIHNjYW4gKi8KKwkJLyogaWYgaXQncyBwb3NzaWJsZSB0aGVuIGFsaWduIERNQSBidWZmZXJzIHRvIGxlbmd0aCBvZiBzY2FuICovCiAJCWkgPSBkbWFsZW4wOwogCQlkbWFsZW4wID0KIAkJICAgIChkbWFsZW4wIC8gKGRldnByaXYtPmFpX25fcmVhbHNjYW5sZW4gPDwgMSkpICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZHExMmIuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZHExMmIuYwppbmRleCA0YjQ3MDAwLi41MzYxZjMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRxMTJiLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkcTEyYi5jCkBAIC02NSw3ICs2NSw3IEBACiAgICB3cml0dGVuIGJ5IGplcmVteSB0aGVsZXIgPHRoZWxlcmdAaWIuY25lYS5nb3YuYXI+CiAKICAgIGluc3RpdHV0byBiYWxzZWlybwotICAgY29taXNpb24gbmFjaW9uYWwgZGUgZW5lcmdpYSBhdG9taWNhCisgICBjb21taXNzaW9uIG5hY2lvbmFsIGRlIGVuZXJnaWEgYXRvbWljYQogICAgdW5pdmVyc2lkYWQgbmFjaW9uYWwgZGUgY3V5bwogICAgYXJnZW50aW5hCiAKQEAgLTM0Miw3ICszNDIsNyBAQAogCS8qIGNvbnZlcnQgbiBzYW1wbGVzICovCiAJZm9yIChuID0gMDsgbiA8IGluc24tPm47IG4rKykgewogCi0JCS8qIHdhaXQgZm9yIGVuZCBvZiBjb252ZXJ0aW9uICovCisJCS8qIHdhaXQgZm9yIGVuZCBvZiBjb252ZXJzaW9uICovCiAJCWkgPSAwOwogCQlkbyB7CiAJCQkvKiB1ZGVsYXkoMSk7ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWR2X3BjaTE3MTAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZHZfcGNpMTcxMC5jCmluZGV4IDQ2NmU2OWYuLmRhMmI3NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZHZfcGNpMTcxMC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZHZfcGNpMTcxMC5jCkBAIC05OCw3ICs5OCw3IEBACiAjZGVmaW5lCVN0YXR1c19GRQkweDAxMDAJLyogMT1GSUZPIGlzIGVtcHR5ICovCiAjZGVmaW5lIFN0YXR1c19GSAkweDAyMDAJLyogMT1GSUZPIGlzIGhhbGYgZnVsbCAqLwogI2RlZmluZSBTdGF0dXNfRkYJMHgwNDAwCS8qIDE9RklGTyBpcyBmdWxsLCBmYXRhbCBlcnJvciAqLwotI2RlZmluZSBTdGF0dXNfSVJRCTB4MDgwMAkvKiAxPUlSUSBvY2N1cmVkICovCisjZGVmaW5lIFN0YXR1c19JUlEJMHgwODAwCS8qIDE9SVJRIG9jY3VycmVkICovCiAvKiBiaXRzIGZyb20gY29udHJvbCByZWdpc3RlciAoUENJMTcxeF9DT05UUk9MKSAqLwogI2RlZmluZSBDb250cm9sX0NOVDAJMHgwMDQwCS8qIDE9Q05UMCBoYXZlIGV4dGVybmFsIHNvdXJjZSwKIAkJCQkgKiAwPWhhdmUgaW50ZXJuYWwgMTAwa0h6IHNvdXJjZSAqLwpAQCAtMTE2MSw3ICsxMTYxLDcgQEAKIAl9CiAKIAlpZiAobl9jaGFuID4gMSkgewotCQljaGFuc2VnbWVudFswXSA9IGNoYW5saXN0WzBdOwkvKiAgZmlyc3QgY2hhbm5lbCBpcyBldmVyeXRpbWUgb2sgKi8KKwkJY2hhbnNlZ21lbnRbMF0gPSBjaGFubGlzdFswXTsJLyogIGZpcnN0IGNoYW5uZWwgaXMgZXZlcnkgdGltZSBvayAqLwogCQlmb3IgKGkgPSAxLCBzZWdsZW4gPSAxOyBpIDwgbl9jaGFuOyBpKyssIHNlZ2xlbisrKSB7CS8qICBidWlsZCBwYXJ0IG9mIGNoYW5saXN0ICovCiAJCQkvKiAgcHJpbnRrKCIlZC4gJWQgJWRcbiIsaSxDUl9DSEFOKGNoYW5saXN0W2ldKSxDUl9SQU5HRShjaGFubGlzdFtpXSkpOyAqLwogCQkJaWYgKGNoYW5saXN0WzBdID09IGNoYW5saXN0W2ldKQpAQCAtMTE3Niw5ICsxMTc2LDkgQEAKIAkJCSAgICAoQ1JfQ0hBTihjaGFuc2VnbWVudFtpIC0gMV0pICsgMSkgJSBzLT5uX2NoYW47CiAJCQlpZiAoQ1JfQVJFRihjaGFuc2VnbWVudFtpIC0gMV0pID09IEFSRUZfRElGRikKIAkJCQlub3dtdXN0YmVjaGFuID0gKG5vd211c3RiZWNoYW4gKyAxKSAlIHMtPm5fY2hhbjsKLQkJCWlmIChub3dtdXN0YmVjaGFuICE9IENSX0NIQU4oY2hhbmxpc3RbaV0pKSB7CS8qICBjaGFubmVsIGxpc3QgaXNuJ3QgY29udGlub3VzIDotKCAqLworCQkJaWYgKG5vd211c3RiZWNoYW4gIT0gQ1JfQ0hBTihjaGFubGlzdFtpXSkpIHsJLyogIGNoYW5uZWwgbGlzdCBpc24ndCBjb250aW51b3VzIDotKCAqLwogCQkJCXByaW50awotCQkJCSAgICAoImNoYW5uZWwgbGlzdCBtdXN0IGJlIGNvbnRpbm91cyEgY2hhbmxpc3RbJWldPSVkIGJ1dCBtdXN0IGJlICVkIG9yICVkIVxuIiwKKwkJCQkgICAgKCJjaGFubmVsIGxpc3QgbXVzdCBiZSBjb250aW51b3VzISBjaGFubGlzdFslaV09JWQgYnV0IG11c3QgYmUgJWQgb3IgJWQhXG4iLAogCQkJCSAgICAgaSwgQ1JfQ0hBTihjaGFubGlzdFtpXSksIG5vd211c3RiZWNoYW4sCiAJCQkJICAgICBDUl9DSEFOKGNoYW5saXN0WzBdKSk7CiAJCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY2JfcGNpZGFzLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY2JfcGNpZGFzLmMKaW5kZXggMDk0MTY0My4uNjE5NjhhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jYl9wY2lkYXMuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAjZGVmaW5lICAgSU5UX01BU0sgMHgzCQkvKiAgbWFzayBvZiBpbnRlcnJ1cHQgc2VsZWN0IGJpdHMgKi8KICNkZWZpbmUgICBJTlRFIDB4NAkJLyogIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgICBEQUhGSUUgMHg4CQkvKiAgZGFjIGhhbGYgZnVsbCBpbnRlcnJ1cHQgZW5hYmxlICovCi0jZGVmaW5lICAgRU9BSUUJMHgxMAkJLyogIGVuZCBvZiBhcXVpc2l0aW9uIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgICBFT0FJRQkweDEwCQkvKiAgZW5kIG9mIGFjcXVpc2l0aW9uIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgICBEQUhGSQkweDIwCQkvKiAgZGFjIGhhbGYgZnVsbCByZWFkIHN0YXR1cyAvIHdyaXRlIGludGVycnVwdCBjbGVhciAqLwogI2RlZmluZSAgIEVPQUkgMHg0MAkJLyogIHJlYWQgZW5kIG9mIGFjcS4gaW50ZXJydXB0IHN0YXR1cyAvIHdyaXRlIGNsZWFyICovCiAjZGVmaW5lICAgSU5UIDB4ODAJCS8qICByZWFkIGludGVycnVwdCBzdGF0dXMgLyB3cml0ZSBjbGVhciAqLwpAQCAtNDQwLDcgKzQ0MCw3IEBACiAJdW5zaWduZWQgaW50IGRpdmlzb3IxOwogCXVuc2lnbmVkIGludCBkaXZpc29yMjsKIAl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgY291bnQ7CS8qICBudW1iZXIgb2YgYW5hbG9nIGlucHV0IHNhbXBsZXMgcmVtYWluaW5nICovCi0Jdm9sYXRpbGUgdW5zaWduZWQgaW50IGFkY19maWZvX2JpdHM7CS8qICBiaXRzIHRvIHdyaXRlIHRvIGludGVydXB0L2FkY2ZpZm8gcmVnaXN0ZXIgKi8KKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgYWRjX2ZpZm9fYml0czsJLyogIGJpdHMgdG8gd3JpdGUgdG8gaW50ZXJydXB0L2FkY2ZpZm8gcmVnaXN0ZXIgKi8KIAl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgczU5MzNfaW50Y3NyX2JpdHM7CS8qICBiaXRzIHRvIHdyaXRlIHRvIGFtY2MgczU5MzMgaW50ZXJydXB0IGNvbnRyb2wvc3RhdHVzIHJlZ2lzdGVyICovCiAJdm9sYXRpbGUgdW5zaWduZWQgaW50IGFvX2NvbnRyb2xfYml0czsJLyogIGJpdHMgdG8gd3JpdGUgdG8gYW8gY29udHJvbCBhbmQgc3RhdHVzIHJlZ2lzdGVyICovCiAJc2hvcnQgYWlfYnVmZmVyW0FJX0JVRkZFUl9TSVpFXTsKQEAgLTE2NTMsNyArMTY1Myw3IEBACiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAl9IGVsc2UgaWYgKHN0YXR1cyAmIEVPQUkpIHsKIAkJY29tZWRpX2Vycm9yKGRldiwKLQkJCSAgICAgImJ1ZyEgZW5jb3VudGVyZWQgZW5kIG9mIGFxdWlzaXRpb24gaW50ZXJydXB0PyIpOworCQkJICAgICAiYnVnISBlbmNvdW50ZXJlZCBlbmQgb2YgYWNxdWlzaXRpb24gaW50ZXJydXB0PyIpOwogCQkvKiAgY2xlYXIgRU9BIGludGVycnVwdCBsYXRjaCAqLwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5zcGlubG9jaywgZmxhZ3MpOwogCQlvdXR3KGRldnByaXYtPmFkY19maWZvX2JpdHMgfCBFT0FJLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhczY0LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY2JfcGNpZGFzNjQuYwppbmRleCAyNTgzZTE2Li4xZTMyNDE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY2JfcGNpZGFzNjQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY2JfcGNpZGFzNjQuYwpAQCAtMTA0LDcgKzEwNCw3IEBACiAjZW5kaWYKIAogI2RlZmluZSBUSU1FUl9CQVNFIDI1CQkvKiAgNDBNSHogbWFzdGVyIGNsb2NrICovCi0jZGVmaW5lIFBSRVNDQUxFRF9USU1FUl9CQVNFCTEwMDAwCS8qICAxMDBrSHogJ3ByZXNjYWxlZCcgY2xvY2sgZm9yIHNsb3cgYXF1aXNpdGlvbiwgbWF5YmUgSSdsbCBzdXBwb3J0IHRoaXMgc29tZWRheSAqLworI2RlZmluZSBQUkVTQ0FMRURfVElNRVJfQkFTRQkxMDAwMAkvKiAgMTAwa0h6ICdwcmVzY2FsZWQnIGNsb2NrIGZvciBzbG93IGFjcXVpc2l0aW9uLCBtYXliZSBJJ2xsIHN1cHBvcnQgdGhpcyBzb21lZGF5ICovCiAjZGVmaW5lIERNQV9CVUZGRVJfU0laRSAweDEwMDAKIAogI2RlZmluZSBQQ0lfVkVORE9SX0lEX0NPTVBVVEVSQk9BUkRTCTB4MTMwNwpAQCAtMTM2LDcgKzEzNiw3IEBACiAJQURDX0RFTEFZX0lOVEVSVkFMX1VQUEVSX1JFRyA9IDB4MWMsCS8qICB1cHBlciA4IGJpdHMgb2YgZGVsYXkgaW50ZXJ2YWwgY291bnRlciAqLwogCUFEQ19DT1VOVF9MT1dFUl9SRUcgPSAweDFlLAkvKiAgbG93ZXIgMTYgYml0cyBvZiBoYXJkd2FyZSBjb252ZXJzaW9uL3NjYW4gY291bnRlciAqLwogCUFEQ19DT1VOVF9VUFBFUl9SRUcgPSAweDIwLAkvKiAgdXBwZXIgOCBiaXRzIG9mIGhhcmR3YXJlIGNvbnZlcnNpb24vc2NhbiBjb3VudGVyICovCi0JQURDX1NUQVJUX1JFRyA9IDB4MjIsCS8qICBzb2Z0d2FyZSB0cmlnZ2VyIHRvIHN0YXJ0IGFxdWlzaXRpb24gKi8KKwlBRENfU1RBUlRfUkVHID0gMHgyMiwJLyogIHNvZnR3YXJlIHRyaWdnZXIgdG8gc3RhcnQgYWNxdWlzaXRpb24gKi8KIAlBRENfQ09OVkVSVF9SRUcgPSAweDI0LAkvKiAgaW5pdGlhdGVzIHNpbmdsZSBjb252ZXJzaW9uICovCiAJQURDX1FVRVVFX0NMRUFSX1JFRyA9IDB4MjYsCS8qICBjbGVhcnMgYWRjIHF1ZXVlICovCiAJQURDX1FVRVVFX0xPQURfUkVHID0gMHgyOCwJLyogIGxvYWRzIGFkYyBxdWV1ZSAqLwpAQCAtMTk5LDcgKzE5OSw3IEBACiAJQURDX0lOVFJfRU9TQ0FOX0JJVFMgPSAweDIsCS8qICBpbnRlcnJ1cHQgZW5kIG9mIHNjYW4gKi8KIAlBRENfSU5UUl9FT1NFUV9CSVRTID0gMHgzLAkvKiAgaW50ZXJydXB0IGVuZCBvZiBzZXF1ZW5jZSAocHJvYmFibHkgd29udCB1c2UgdGhpcyBpdCdzIHByZXR0eSBmYW5jeSkgKi8KIAlFTl9BRENfSU5UUl9TUkNfQklUID0gMHg0LAkvKiAgZW5hYmxlIGFkYyBpbnRlcnJ1cHQgc291cmNlICovCi0JRU5fQURDX0RPTkVfSU5UUl9CSVQgPSAweDgsCS8qICBlbmFibGUgYWRjIGFxdWlzaXRpb24gZG9uZSBpbnRlcnJ1cHQgKi8KKwlFTl9BRENfRE9ORV9JTlRSX0JJVCA9IDB4OCwJLyogIGVuYWJsZSBhZGMgYWNxdWlzaXRpb24gZG9uZSBpbnRlcnJ1cHQgKi8KIAlEQUNfSU5UUl9TUkNfTUFTSyA9IDB4MzAsCiAJREFDX0lOVFJfUUVNUFRZX0JJVFMgPSAweDAsCiAJREFDX0lOVFJfSElHSF9DSEFOX0JJVFMgPSAweDEwLApAQCAtMjg2Nyw3ICsyODY3LDcgQEAKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAotCS8qICBzdGFydCBhcXVpc2l0aW9uICovCisJLyogIHN0YXJ0IGFjcXVpc2l0aW9uICovCiAJaWYgKGNtZC0+c3RhcnRfc3JjID09IFRSSUdfTk9XKSB7CiAJCXdyaXRldygwLCBwcml2KGRldiktPm1haW5faW9iYXNlICsgQURDX1NUQVJUX1JFRyk7CiAJCURFQlVHX1BSSU5UKCJzb2Z0IHRyaWdcbiIpOwpAQCAtMjk0Miw3ICsyOTQyLDcgQEAKIC8qIFJlYWQgZnJvbSAzMiBiaXQgd2lkZSBhaSBmaWZvIG9mIDQwMjAgLSBkZWFsIHdpdGggaW5zYW5lIGdyZXkgY29kaW5nIG9mIHBvaW50ZXJzLgogICogVGhlIHBjaS00MDIwIGhhcmR3YXJlIG9ubHkgc3VwcG9ydHMKICAqIGRtYSB0cmFuc2ZlcnMgKGl0IG9ubHkgc3VwcG9ydHMgdGhlIHVzZSBvZiBwaW8gZm9yIGRyYWluaW5nIHRoZSBsYXN0IHJlbWFpbmluZwotICogcG9pbnRzIGZyb20gdGhlIGZpZm8gd2hlbiBhIGRhdGEgYXF1aXNpdGlvbiBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCkuCisgKiBwb2ludHMgZnJvbSB0aGUgZmlmbyB3aGVuIGEgZGF0YSBhY3F1aXNpdGlvbiBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZCkuCiAgKi8KIHN0YXRpYyB2b2lkIHBpb19kcmFpbl9haV9maWZvXzMyKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYpCiB7CkBAIC0zMDQ2LDcgKzMwNDYsNyBAQAogCQljb21lZGlfZXJyb3IoZGV2LCAiZmlmbyBvdmVycnVuIik7CiAJCWFzeW5jLT5ldmVudHMgfD0gQ09NRURJX0NCX0VPQSB8IENPTUVESV9DQl9FUlJPUjsKIAl9Ci0JLyogIHNwaW4gbG9jayBtYWtlcyBzdXJlIG5vb25lIGVsc2UgY2hhbmdlcyBwbHggZG1hIGNvbnRyb2wgcmVnICovCisJLyogIHNwaW4gbG9jayBtYWtlcyBzdXJlIG5vIG9uZSBlbHNlIGNoYW5nZXMgcGx4IGRtYSBjb250cm9sIHJlZyAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7CiAJZG1hMV9zdGF0dXMgPSByZWFkYihwcml2KGRldiktPnBseDkwODBfaW9iYXNlICsgUExYX0RNQTFfQ1NfUkVHKTsKIAlpZiAocGx4X3N0YXR1cyAmIElDU19ETUExX0EpIHsJLyogIGRtYSBjaGFuIDEgaW50ZXJydXB0ICovCkBAIC0zMTcwLDcgKzMxNzAsNyBAQAogCWFzeW5jID0gcy0+YXN5bmM7CiAJY21kID0gJmFzeW5jLT5jbWQ7CiAKLQkvKiAgc3BpbiBsb2NrIG1ha2VzIHN1cmUgbm9vbmUgZWxzZSBjaGFuZ2VzIHBseCBkbWEgY29udHJvbCByZWcgKi8KKwkvKiAgc3BpbiBsb2NrIG1ha2VzIHN1cmUgbm8gb25lIGVsc2UgY2hhbmdlcyBwbHggZG1hIGNvbnRyb2wgcmVnICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAlkbWEwX3N0YXR1cyA9IHJlYWRiKHByaXYoZGV2KS0+cGx4OTA4MF9pb2Jhc2UgKyBQTFhfRE1BMF9DU19SRUcpOwogCWlmIChwbHhfc3RhdHVzICYgSUNTX0RNQTBfQSkgewkvKiAgZG1hIGNoYW4gMCBpbnRlcnJ1cHQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jb21lZGlfdGVzdC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NvbWVkaV90ZXN0LmMKaW5kZXggYjIyMGIzMC4uYTgwNDc0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NvbWVkaV90ZXN0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NvbWVkaV90ZXN0LmMKQEAgLTgxLDcgKzgxLDcgQEAKIC8qIERhdGEgdW5pcXVlIHRvIHRoaXMgZHJpdmVyICovCiBzdHJ1Y3Qgd2F2ZWZvcm1fcHJpdmF0ZSB7CiAJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7Ci0Jc3RydWN0IHRpbWV2YWwgbGFzdDsJLyogdGltZSBhdCB3aGljaCBsYXN0IHRpbWVyIGludGVycnVwdCBvY2N1cmVkICovCisJc3RydWN0IHRpbWV2YWwgbGFzdDsJLyogdGltZSBhdCB3aGljaCBsYXN0IHRpbWVyIGludGVycnVwdCBvY2N1cnJlZCAqLwogCXVuc2lnbmVkIGludCB1dm9sdF9hbXBsaXR1ZGU7CS8qIHdhdmVmb3JtIGFtcGxpdHVkZSBpbiBtaWNyb3ZvbHRzICovCiAJdW5zaWduZWQgbG9uZyB1c2VjX3BlcmlvZDsJLyogd2F2ZWZvcm0gcGVyaW9kIGluIG1pY3Jvc2Vjb25kcyAqLwogCXVuc2lnbmVkIGxvbmcgdXNlY19jdXJyZW50OwkvKiBjdXJyZW50IHRpbWUgKG1vZHVsbyB3YXZlZm9ybSBwZXJpb2QpICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFzMTgwMC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RhczE4MDAuYwppbmRleCA2ZWE5M2Y5Li42MGMyYjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFzMTgwMC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kYXMxODAwLmMKQEAgLTEwODcsNyArMTA4Nyw3IEBACiAJcmV0dXJuOwogfQogCi0vKiBmbHVzaGVzIHJlbWFpbmluZyBkYXRhIGZyb20gYm9hcmQgd2hlbiBleHRlcm5hbCB0cmlnZ2VyIGhhcyBzdG9wcGVkIGFxdWlzaXRpb24KKy8qIGZsdXNoZXMgcmVtYWluaW5nIGRhdGEgZnJvbSBib2FyZCB3aGVuIGV4dGVybmFsIHRyaWdnZXIgaGFzIHN0b3BwZWQgYWNxdWlzaXRpb24KICAqIGFuZCB3ZSBhcmUgdXNpbmcgZG1hIHRyYW5zZmVycyAqLwogc3RhdGljIHZvaWQgZGFzMTgwMF9mbHVzaF9kbWEoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwKIAkJCSAgICAgIHN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RhczgwMC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RhczgwMC5jCmluZGV4IGFlY2FlZGMuLjk2ZDQxYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kYXM4MDAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFzODAwLmMKQEAgLTM5MSw3ICszOTEsNyBAQAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnNwaW5sb2NrLCBpcnFfZmxhZ3MpOwogCW91dGIoQ09OVFJPTDEsIGRldi0+aW9iYXNlICsgREFTODAwX0dBSU4pOwkvKiBzZWxlY3QgYmFzZSBhZGRyZXNzICsgNyB0byBiZSBTVEFUVVMyIHJlZ2lzdGVyICovCiAJc3RhdHVzID0gaW5iKGRldi0+aW9iYXNlICsgREFTODAwX1NUQVRVUzIpICYgU1RBVFVTMl9IQ0VOOwotCS8qIGRvbid0IHJlbGVhc2Ugc3BpbmxvY2sgeWV0IHNpbmNlIHdlIHdhbnQgdG8gbWFrZSBzdXJlIG5vb25lIGVsc2UgZGlzYWJsZXMgaGFyZHdhcmUgY29udmVyc2lvbnMgKi8KKwkvKiBkb24ndCByZWxlYXNlIHNwaW5sb2NrIHlldCBzaW5jZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBubyBvbmUgZWxzZSBkaXNhYmxlcyBoYXJkd2FyZSBjb252ZXJzaW9ucyAqLwogCWlmIChzdGF0dXMgPT0gMCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnNwaW5sb2NrLCBpcnFfZmxhZ3MpOwogCQlyZXR1cm4gSVJRX0hBTkRMRUQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZG1tMzJhdC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RtbTMyYXQuYwppbmRleCA2OTM3MjhlLi4yYjRlNmU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZG1tMzJhdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kbW0zMmF0LmMKQEAgLTUzMiw3ICs1MzIsNyBAQAogCQltc2IgPSBkbW1faW5iKGRldiwgRE1NMzJBVF9BSU1TQik7CiAKIAkJLyogaW52ZXJ0IHNpZ24gYml0IHRvIG1ha2UgcmFuZ2UgdW5zaWduZWQsIHRoaXMgaXMgYW4KLQkJICAgaWRpb3N5bmNyYWN5IG9mIHRoZSBkaWFtb25kIGJvYXJkLCBpdCByZXR1cm4KKwkJICAgaWRpb3N5bmNyYXN5IG9mIHRoZSBkaWFtb25kIGJvYXJkLCBpdCByZXR1cm4KIAkJICAgY29udmVyc2lvbnMgYXMgYSBzaWduZWQgdmFsdWUsIGkuZS4gLTMyNzY4IHRvCiAJCSAgIDMyNzY3LCBmbGlwcGluZyB0aGUgYml0IGFuZCBpbnRlcnByZXRpbmcgaXQgYXMKIAkJICAgc2lnbmVkIGdpdmVzIHlvdSBhIHJhbmdlIG9mIDAgdG8gNjU1MzUgd2hpY2ggaXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kdDI4MTEuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kdDI4MTEuYwppbmRleCBhMTY2NGNhLi4wMTMxZDUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZHQyODExLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2R0MjgxMS5jCkBAIC01NjAsNyArNTYwLDcgQEAKIAlzd2l0Y2ggKGRldi0+aV9hZG1vZGUpIHsKIAljYXNlIENPTUVESV9NREVNQU5EOgogCQlkZXYtPm50cmlnID0gYWR0cmlnLT5uIC0gMTsKLQkJLyogbm90IG5lY2Nlc3NhcnkgKi8KKwkJLyogbm90IG5lY2Vzc2FyeSAqLwogCQkvKnByaW50aygiZHQyODExOiBBRCBzb2Z0IHRyaWdnZXJcbiIpOyAqLwogCQkvKm91dGIoRFQyODExX0NMUkVSUk9SfERUMjgxMV9JTlRFTkIsCiAJCQlkZXYtPmlvYmFzZStEVDI4MTFfQURDU1IpOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2R0OTgxMi5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2R0OTgxMi5jCmluZGV4IDA2MDU5ODUuLjMyZDljNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kdDk4MTIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZHQ5ODEyLmMKQEAgLTc3Myw3ICs3NzMsNyBAQAogCQkJcmV0dmFsID0gZHQ5ODEyX3JlYWRfaW5mbyhkZXYsIDEsICZmdywgc2l6ZW9mKGZ3KSk7CiAJCQlpZiAocmV0dmFsID09IDApIHsKIAkJCQlkZXZfaW5mbygmaW50ZXJmYWNlLT5kZXYsCi0JCQkJCSAidXNiX3Jlc2V0X2NvbmZpZ3VyYXRpb24gc3VjY2VkZWQgIgorCQkJCQkgInVzYl9yZXNldF9jb25maWd1cmF0aW9uIHN1Y2NlZWRlZCAiCiAJCQkJCSAiYWZ0ZXIgJWQgaXRlcmF0aW9uc1xuIiwgaSk7CiAJCQkJYnJlYWs7CiAJCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZ3NjX2hwZGkuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9nc2NfaHBkaS5jCmluZGV4IDE2NjFiNTcuLmJjMDIwZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9nc2NfaHBkaS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9nc2NfaHBkaS5jCkBAIC0xMDMxLDcgKzEwMzEsNyBAQAogCQl3cml0ZWwoaHBkaV9pbnRyX3N0YXR1cywKIAkJICAgICAgIHByaXYoZGV2KS0+aHBkaV9pb2Jhc2UgKyBJTlRFUlJVUFRfU1RBVFVTX1JFRyk7CiAJfQotCS8qICBzcGluIGxvY2sgbWFrZXMgc3VyZSBub29uZSBlbHNlIGNoYW5nZXMgcGx4IGRtYSBjb250cm9sIHJlZyAqLworCS8qICBzcGluIGxvY2sgbWFrZXMgc3VyZSBubyBvbmUgZWxzZSBjaGFuZ2VzIHBseCBkbWEgY29udHJvbCByZWcgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5zcGlubG9jaywgZmxhZ3MpOwogCWRtYTBfc3RhdHVzID0gcmVhZGIocHJpdihkZXYpLT5wbHg5MDgwX2lvYmFzZSArIFBMWF9ETUEwX0NTX1JFRyk7CiAJaWYgKHBseF9zdGF0dXMgJiBJQ1NfRE1BMF9BKSB7CS8qICBkbWEgY2hhbiAwIGludGVycnVwdCAqLwpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5zcGlubG9jaywgZmxhZ3MpOwogCi0JLyogIHNwaW4gbG9jayBtYWtlcyBzdXJlIG5vb25lIGVsc2UgY2hhbmdlcyBwbHggZG1hIGNvbnRyb2wgcmVnICovCisJLyogIHNwaW4gbG9jayBtYWtlcyBzdXJlIG5vIG9uZSBlbHNlIGNoYW5nZXMgcGx4IGRtYSBjb250cm9sIHJlZyAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7CiAJZG1hMV9zdGF0dXMgPSByZWFkYihwcml2KGRldiktPnBseDkwODBfaW9iYXNlICsgUExYX0RNQTFfQ1NfUkVHKTsKIAlpZiAocGx4X3N0YXR1cyAmIElDU19ETUExX0EpIHsJLyogIFhYWCAqLy8qICBkbWEgY2hhbiAxIGludGVycnVwdCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2ljcF9tdWx0aS5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2ljcF9tdWx0aS5jCmluZGV4IDBiYWIzOWIuLjEyNjU1MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9pY3BfbXVsdGkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvaWNwX211bHRpLmMKQEAgLTcxNSw3ICs3MTUsNyBAQAogCWlzIGJ1aWx0IGNvcnJlY3RseQogCiBQYXJhbWV0ZXJzOgotCXN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYJUG9pbnRlciB0byBjdXJyZW50IHNldmljZSBzdHJ1Y3R1cmUKKwlzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2CVBvaW50ZXIgdG8gY3VycmVudCBzZXJ2aWNlIHN0cnVjdHVyZQogCXN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzCVBvaW50ZXIgdG8gY3VycmVudCBzdWJkZXZpY2Ugc3RydWN0dXJlCiAJdW5zaWduZWQgaW50ICpjaGFubGlzdAlQb2ludGVyIHRvIHBhY2tlZCBjaGFubmVsIGxpc3QKIAl1bnNpZ25lZCBpbnQgbl9jaGFuCU51bWJlciBvZiBjaGFubmVscyB0byBzY2FuCkBAIC03NzIsNyArNzcyLDcgQEAKIAlTdGF0dXMgcmVnaXN0ZXIuCiAKIFBhcmFtZXRlcnM6Ci0Jc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldglQb2ludGVyIHRvIGN1cnJlbnQgc2V2aWNlIHN0cnVjdHVyZQorCXN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYJUG9pbnRlciB0byBjdXJyZW50IHNlcnZpY2Ugc3RydWN0dXJlCiAJc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMJUG9pbnRlciB0byBjdXJyZW50IHN1YmRldmljZSBzdHJ1Y3R1cmUKIAl1bnNpZ25lZCBpbnQgKmNoYW5saXN0CVBvaW50ZXIgdG8gcGFja2VkIGNoYW5uZWwgbGlzdAogCXVuc2lnbmVkIGludCBuX2NoYW4JTnVtYmVyIG9mIGNoYW5uZWxzIHRvIHNjYW4KQEAgLTg0OCw3ICs4NDgsNyBAQAogCVRoaXMgZnVuY3Rpb24gcmVzZXRzIHRoZSBpY3AgbXVsdGkgZGV2aWNlIHRvIGEgJ3NhZmUnIHN0YXRlCiAKIFBhcmFtZXRlcnM6Ci0Jc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldglQb2ludGVyIHRvIGN1cnJlbnQgc2V2aWNlIHN0cnVjdHVyZQorCXN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYJUG9pbnRlciB0byBjdXJyZW50IHNlcnZpY2Ugc3RydWN0dXJlCiAKIFJldHVybnM6aW50CTAgPSBzdWNjZXNzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9tZTQwMDAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9tZTQwMDAuYwppbmRleCA3NTUxMWJhLi5iNjkyZmVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbWU0MDAwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL21lNDAwMC5jCkBAIC0xODEwLDcgKzE4MTAsNyBAQAogCQkgICAgICAgYWlfY29udGV4dC0+aXJxX3N0YXR1c19yZWcpICYKIAkgICAgTUU0MDAwX0lSUV9TVEFUVVNfQklUX0FJX0hGKSB7CiAJCUlTUl9QREVCVUcKLQkJICAgICgibWU0MDAwX2FpX2lzcigpOiBGaWZvIGhhbGYgZnVsbCBpbnRlcnJ1cHQgb2NjdXJlZFxuIik7CisJCSAgICAoIm1lNDAwMF9haV9pc3IoKTogRmlmbyBoYWxmIGZ1bGwgaW50ZXJydXB0IG9jY3VycmVkXG4iKTsKIAogCQkvKiBSZWFkIHN0YXR1cyByZWdpc3RlciB0byBmaW5kIG91dCB3aGF0IGhhcHBlbmVkICovCiAJCXRtcCA9IG1lNDAwMF9pbmwoZGV2LCBhaV9jb250ZXh0LT5jdHJsX3JlZyk7CkBAIC0xOTAzLDcgKzE5MDMsNyBAQAogCWlmIChtZTQwMDBfaW5sKGRldiwKIAkJICAgICAgIGFpX2NvbnRleHQtPmlycV9zdGF0dXNfcmVnKSAmIE1FNDAwMF9JUlFfU1RBVFVTX0JJVF9TQykgewogCQlJU1JfUERFQlVHCi0JCSAgICAoIm1lNDAwMF9haV9pc3IoKTogU2FtcGxlIGNvdW50ZXIgaW50ZXJydXB0IG9jY3VyZWRcbiIpOworCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6IFNhbXBsZSBjb3VudGVyIGludGVycnVwdCBvY2N1cnJlZFxuIik7CiAKIAkJcy0+YXN5bmMtPmV2ZW50cyB8PSBDT01FRElfQ0JfQkxPQ0sgfCBDT01FRElfQ0JfRU9BOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbXBjNjI0LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbXBjNjI0LmMKaW5kZXggYTg5ZWViZC4uZGQwOWE2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL21wYzYyNC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9tcGM2MjQuYwpAQCAtMzksOCArMzksOCBAQAogCiBDb25maWd1cmF0aW9uIE9wdGlvbnM6CiAgIFswXSAtIEkvTyBiYXNlIGFkZHJlc3MKLSAgWzFdIC0gY29udmVydGlvbiByYXRlCi0JQ29udmVydGlvbiByYXRlICBSTVMgbm9pc2UgIEVmZmVjdGl2ZSBOdW1iZXIgT2YgQml0cworICBbMV0gLSBjb252ZXJzaW9uIHJhdGUKKwlDb252ZXJzaW9uIHJhdGUgIFJNUyBub2lzZSAgRWZmZWN0aXZlIE51bWJlciBPZiBCaXRzCiAJMCAgICAgIDMuNTJrSHogICAgICAgIDIzdVYgICAgICAgICAgICAgICAgMTcKIAkxICAgICAgMS43NmtIeiAgICAgICAzLjV1ViAgICAgICAgICAgICAgICAyMAogCTIgICAgICAgODgwSHogICAgICAgICAydVYgICAgICAgICAgICAgICAgMjEuMwpAQCAtOTMsOCArOTMsOCBAQAogI2RlZmluZSBNUEM2MjRfRE1ZX0JJVCAgICAgICAgICAoMTw8MzApCiAjZGVmaW5lIE1QQzYyNF9TR05fQklUICAgICAgICAgICgxPDwyOSkKIAotLyogQ29udmVydGlvbiBzcGVlZHMgKi8KLS8qIE9TUjQgT1NSMyBPU1IyIE9TUjEgT1NSMCAgQ29udmVydGlvbiByYXRlICBSTVMgbm9pc2UgIEVOT0JeCisvKiBDb252ZXJzaW9uIHNwZWVkcyAqLworLyogT1NSNCBPU1IzIE9TUjIgT1NSMSBPU1IwICBDb252ZXJzaW9uIHJhdGUgIFJNUyBub2lzZSAgRU5PQl4KICAqICBYICAgIDAgICAgMCAgICAwICAgIDEgICAgICAgIDMuNTJrSHogICAgICAgIDIzdVYgICAgICAxNwogICogIFggICAgMCAgICAwICAgIDEgICAgMCAgICAgICAgMS43NmtIeiAgICAgICAzLjV1ViAgICAgIDIwCiAgKiAgWCAgICAwICAgIDAgICAgMSAgICAxICAgICAgICAgODgwSHogICAgICAgICAydVYgICAgICAyMS4zCkBAIC0yMjcsNyArMjI3LDcgQEAKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcHJpbnRrCi0JCSAgICAoS0VSTl9FUlIgImlsbGVnYWwgY29udmVydGlvbiByYXRlIHNldHRpbmchIgorCQkgICAgKEtFUk5fRVJSICJpbGxlZ2FsIGNvbnZlcnNpb24gcmF0ZSBzZXR0aW5nISIKIAkJCSIgVmFsaWQgbnVtYmVycyBhcmUgMC4uOS4gVXNpbmcgOSA9PiA2Ljg3NSBIeiwgIik7CiAJCWRldnByaXYtPnVsQ29udmVydGlvblJhdGUgPSBNUEM2MjRfU1BFRURfM181Ml9rSHo7CiAJfQpAQCAtMjk2LDcgKzI5Niw3IEBACiAJfQogCiAJZm9yIChuID0gMDsgbiA8IGluc24tPm47IG4rKykgewotCQkvKiAgVHJpZ2dlciB0aGUgY29udmVydGlvbiAqLworCQkvKiAgVHJpZ2dlciB0aGUgY29udmVyc2lvbiAqLwogCQlvdXRiKE1QQzYyNF9BRFNDSywgZGV2LT5pb2Jhc2UgKyBNUEM2MjRfQURDKTsKIAkJdWRlbGF5KDEpOwogCQlvdXRiKE1QQzYyNF9BRENTIHwgTVBDNjI0X0FEU0NLLCBkZXYtPmlvYmFzZSArIE1QQzYyNF9BREMpOwpAQCAtMzA0LDcgKzMwNCw3IEBACiAJCW91dGIoMCwgZGV2LT5pb2Jhc2UgKyBNUEM2MjRfQURDKTsKIAkJdWRlbGF5KDEpOwogCi0JCS8qICBXYWl0IGZvciB0aGUgY29udmVydGlvbiB0byBlbmQgKi8KKwkJLyogIFdhaXQgZm9yIHRoZSBjb252ZXJzaW9uIHRvIGVuZCAqLwogCQlmb3IgKGkgPSAwOyBpIDwgVElNRU9VVDsgaSsrKSB7CiAJCQl1Y1BvcnQgPSBpbmIoZGV2LT5pb2Jhc2UgKyBNUEM2MjRfQURDKTsKIAkJCWlmICh1Y1BvcnQgJiBNUEM2MjRfQURCVVNZKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2F0X2EyMTUwLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfYXRfYTIxNTAuYwppbmRleCA0ZDAwNTNlLi5jMTkyYjcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfYXRfYTIxNTAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfYXRfYTIxNTAuYwpAQCAtMTA0LDEwICsxMDQsMTAgQEAKICNkZWZpbmUgU1RBVFVTX1JFRwkJMHgxMgkvKiAgcmVhZCBvbmx5ICovCiAjZGVmaW5lICAgRk5FX0JJVAkJMHgxCS8qICBmaWZvIG5vdCBlbXB0eSAqLwogI2RlZmluZSAgIE9WRkxfQklUCQkweDgJLyogIGZpZm8gb3ZlcmZsb3cgKi8KLSNkZWZpbmUgICBFREFRX0JJVAkJMHgxMAkvKiAgZW5kIG9mIGFxdWlzaXRpb24gaW50ZXJydXB0ICovCisjZGVmaW5lICAgRURBUV9CSVQJCTB4MTAJLyogIGVuZCBvZiBhY3F1aXNpdGlvbiBpbnRlcnJ1cHQgKi8KICNkZWZpbmUgICBEQ0FMX0JJVAkJMHgyMAkvKiAgb2Zmc2V0IGNhbGlicmF0aW9uIGluIHByb2dyZXNzICovCi0jZGVmaW5lICAgSU5UUl9CSVQJCTB4NDAJLyogIGludGVycnVwdCBoYXMgb2NjdXJlZCAqLwotI2RlZmluZSAgIERNQV9UQ19CSVQJCTB4ODAJLyogIGRtYSB0ZXJtaW5hbCBjb3VudCBpbnRlcnJ1cHQgaGFzIG9jY3VyZWQgKi8KKyNkZWZpbmUgICBJTlRSX0JJVAkJMHg0MAkvKiAgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCAqLworI2RlZmluZSAgIERNQV9UQ19CSVQJCTB4ODAJLyogIGRtYSB0ZXJtaW5hbCBjb3VudCBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkICovCiAjZGVmaW5lICAgSURfQklUUyh4KQkoKCh4KSA+PiA4KSAmIDB4MykKICNkZWZpbmUgSVJRX0RNQV9DTlRSTF9SRUcJCTB4MTIJLyogIHdyaXRlIG9ubHkgKi8KICNkZWZpbmUgICBETUFfQ0hBTl9CSVRTKHgpCQkoKHgpICYgMHg3KQkvKiAgc2V0cyBkbWEgY2hhbm5lbCAqLwpAQCAtNDM0LDcgKzQzNCw3IEBACiAJcy0+Y2FuY2VsID0gYTIxNTBfY2FuY2VsOwogCiAJLyogbmVlZCB0byBkbyB0aGlzIGZvciBzb2Z0d2FyZSBjb3VudGluZyBvZiBjb21wbGV0ZWQgY29udmVyc2lvbnMsIHRvCi0JICogcHJldmVudCBoYXJkd2FyZSBjb3VudCBmcm9tIHN0b3BwaW5nIGFxdWlzaXRpb24gKi8KKwkgKiBwcmV2ZW50IGhhcmR3YXJlIGNvdW50IGZyb20gc3RvcHBpbmcgYWNxdWlzaXRpb24gKi8KIAlvdXR3KEhXX0NPVU5UX0RJU0FCTEUsIGRldi0+aW9iYXNlICsgSTgyNTNfTU9ERV9SRUcpOwogCiAJLyogIHNldCBjYXJkJ3MgaXJxIGFuZCBkbWEgbGV2ZWxzICovCkBAIC03MjksNyArNzI5LDcgQEAKIAkvKiAgc2VuZCB0cmlnZ2VyIGNvbmZpZyBiaXRzICovCiAJb3V0dyh0cmlnZ2VyX2JpdHMsIGRldi0+aW9iYXNlICsgVFJJR0dFUl9SRUcpOwogCi0JLyogIHN0YXJ0IGFxdWlzaXRpb24gZm9yIHNvZnQgdHJpZ2dlciAqLworCS8qICBzdGFydCBhY3F1aXNpdGlvbiBmb3Igc29mdCB0cmlnZ2VyICovCiAJaWYgKGNtZC0+c3RhcnRfc3JjID09IFRSSUdfTk9XKSB7CiAJCW91dHcoMCwgZGV2LT5pb2Jhc2UgKyBGSUZPX1NUQVJUX1JFRyk7CiAJfQpAQCAtNzY4LDcgKzc2OCw3IEBACiAJLyogIHNldHVwIHN0YXJ0IHRyaWdnZXJpbmcgKi8KIAlvdXR3KDAsIGRldi0+aW9iYXNlICsgVFJJR0dFUl9SRUcpOwogCi0JLyogIHN0YXJ0IGFxdWlzaXRpb24gZm9yIHNvZnQgdHJpZ2dlciAqLworCS8qICBzdGFydCBhY3F1aXNpdGlvbiBmb3Igc29mdCB0cmlnZ2VyICovCiAJb3V0dygwLCBkZXYtPmlvYmFzZSArIEZJRk9fU1RBUlRfUkVHKTsKIAogCS8qIHRoZXJlIGlzIGEgMzUuNiBzYW1wbGUgZGVsYXkgZm9yIGRhdGEgdG8gZ2V0IHRocm91Z2ggdGhlIGFudGlhbGlhcyBmaWx0ZXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9sYWJwYy5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2xhYnBjLmMKaW5kZXggMjQxZmU1Mi4uYWI4ZjM3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2xhYnBjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2xhYnBjLmMKQEAgLTE4MywxMSArMTgzLDExIEBACiAjZGVmaW5lICAgT1ZFUlJVTl9CSVQJMHgyCiAvKiBmaWZvIG92ZXJmbG93ICovCiAjZGVmaW5lICAgT1ZFUkZMT1dfQklUCTB4NAotLyogdGltZXIgaW50ZXJydXB0IGhhcyBvY2N1cmVkICovCisvKiB0aW1lciBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkICovCiAjZGVmaW5lICAgVElNRVJfQklUCTB4OAotLyogZG1hIHRlcm1pbmFsIGNvdW50IGhhcyBvY2N1cmVkICovCisvKiBkbWEgdGVybWluYWwgY291bnQgaGFzIG9jY3VycmVkICovCiAjZGVmaW5lICAgRE1BVENfQklUCTB4MTAKLS8qIGV4dGVybmFsIHRyaWdnZXIgaGFzIG9jY3VyZWQgKi8KKy8qIGV4dGVybmFsIHRyaWdnZXIgaGFzIG9jY3VycmVkICovCiAjZGVmaW5lICAgRVhUX1RSSUdfQklUCTB4NDAKIC8qIDEyMDAgYm9hcmRzIG9ubHkgKi8KICNkZWZpbmUgU1RBVFVTMl9SRUcJMHgxZApAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIAlyYW5nZSA9IENSX1JBTkdFKGNtZC0+Y2hhbmxpc3RbMF0pOwogCWFyZWYgPSBDUl9BUkVGKGNtZC0+Y2hhbmxpc3RbMF0pOwogCi0JLyogbWFrZSBzdXJlIGJvYXJkIGlzIGRpc2FibGVkIGJlZm9yZSBzZXR0aW5nIHVwIGFxdWlzaXRpb24gKi8KKwkvKiBtYWtlIHN1cmUgYm9hcmQgaXMgZGlzYWJsZWQgYmVmb3JlIHNldHRpbmcgdXAgYWNxdWlzaXRpb24gKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5zcGlubG9jaywgZmxhZ3MpOwogCWRldnByaXYtPmNvbW1hbmQyX2JpdHMgJj0gflNXVFJJR19CSVQgJiB+SFdUUklHX0JJVCAmIH5QUkVUUklHX0JJVDsKIAlkZXZwcml2LT53cml0ZV9ieXRlKGRldnByaXYtPmNvbW1hbmQyX2JpdHMsIGRldi0+aW9iYXNlICsgQ09NTUFORDJfUkVHKTsKQEAgLTEzNDksNyArMTM0OSw3IEBACiAJCWRldnByaXYtPmNvbW1hbmQzX2JpdHMgJj0gfkFEQ19GTkVfSU5UUl9FTl9CSVQ7CiAJZGV2cHJpdi0+d3JpdGVfYnl0ZShkZXZwcml2LT5jb21tYW5kM19iaXRzLCBkZXYtPmlvYmFzZSArIENPTU1BTkQzX1JFRyk7CiAKLQkvKiAgc3RhcnR1cCBhcXVpc2l0aW9uICovCisJLyogIHN0YXJ0dXAgYWNxdWlzaXRpb24gKi8KIAogCS8qICBjb21tYW5kMiByZWcgKi8KIAkvKiAgdXNlIDIgY2FzY2FkZWQgY291bnRlcnMgZm9yIHBhY2luZyAqLwpAQCAtMTU3MSw4ICsxNTcxLDggQEAKIAlkZXZwcml2LT53cml0ZV9ieXRlKDB4MSwgZGV2LT5pb2Jhc2UgKyBETUFUQ19DTEVBUl9SRUcpOwogfQogCi0vKiBtYWtlcyBzdXJlIGFsbCBkYXRhIGFjcXVpcmVkIGJ5IGJvYXJkIGlzIHRyYW5zZmVyZWQgdG8gY29tZWRpICh1c2VkCi0gKiB3aGVuIGFxdWlzaXRpb24gaXMgdGVybWluYXRlZCBieSBzdG9wX3NyYyA9PSBUUklHX0VYVCkuICovCisvKiBtYWtlcyBzdXJlIGFsbCBkYXRhIGFjcXVpcmVkIGJ5IGJvYXJkIGlzIHRyYW5zZmVycmVkIHRvIGNvbWVkaSAodXNlZAorICogd2hlbiBhY3F1aXNpdGlvbiBpcyB0ZXJtaW5hdGVkIGJ5IHN0b3Bfc3JjID09IFRSSUdfRVhUKS4gKi8KIHN0YXRpYyB2b2lkIGxhYnBjX2RyYWluX2RyZWdzKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYpCiB7CiAJaWYgKGRldnByaXYtPmN1cnJlbnRfdHJhbnNmZXIgPT0gaXNhX2RtYV90cmFuc2ZlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9wY2lkaW8uYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9wY2lkaW8uYwppbmRleCAwMDVkMmZlLi44ZGQzYTAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfcGNpZGlvLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX3BjaWRpby5jCkBAIC04MjEsNyArODIxLDcgQEAKIAkJCWNtZC0+c2Nhbl9iZWdpbl9hcmcgPSBNQVhfU1BFRUQ7CiAJCQllcnIrKzsKIAkJfQotCQkvKiBubyBtaW51bXVtIHNwZWVkICovCisJCS8qIG5vIG1pbmltdW0gc3BlZWQgKi8KIAl9IGVsc2UgewogCQkvKiBUUklHX0VYVCAqLwogCQkvKiBzaG91bGQgYmUgbGV2ZWwvZWRnZSwgaGkvbG8gc3BlY2lmaWNhdGlvbiBoZXJlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODEyLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODEyLmMKaW5kZXggYzZkY2U0YS4uMDlmZjQ3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxMi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTIuYwpAQCAtMzQsNyArMzQsNyBAQAogICoJICAgICAgIGFuZCBJIGNhbm4ndCB0ZXN0IGFsbCBmZWF0dXJlcy4pCiAgKgogICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgaW5zbiBhbmQgY21kIGludGVyZmFjZXMuIFNvbWUgYm9hcmRzIHN1cHBvcnQgb25seSBpbnNuCi0gKiBiZWNvdXNlIHRoZWlyIGhhcmR3YXJlIGRvbid0IGFsbG93IG1vcmUgKFBDTC04MTMvQiwgQUNMLTgxMTMsIElTTy04MTMpLgorICogYmVjYXVzZSB0aGVpciBoYXJkd2FyZSBkb24ndCBhbGxvdyBtb3JlIChQQ0wtODEzL0IsIEFDTC04MTEzLCBJU08tODEzKS4KICAqIERhdGEgdHJhbnNmZXIgb3ZlciBETUEgaXMgc3VwcG9ydGVkIG9ubHkgd2hlbiB5b3UgbWVhc3VyZSBvbmx5IG9uZQogICogY2hhbm5lbCwgdGhpcyBpcyB0b28gaGFyZHdhcmUgbGltaXRhdGlvbiBvZiB0aGVzZSBib2FyZHMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxNi5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxNi5jCmluZGV4IGVmM2NjNGYuLjhmM2ZjNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODE2LmMKQEAgLTk1NCw3ICs5NTQsNyBAQAogCX0KIAogCWlmIChjaGFubGVuID4gMSkgewotCQkvKiAgZmlyc3QgY2hhbm5lbCBpcyBldmVyeXRpbWUgb2sgKi8KKwkJLyogIGZpcnN0IGNoYW5uZWwgaXMgZXZlcnkgdGltZSBvayAqLwogCQljaGFuc2VnbWVudFswXSA9IGNoYW5saXN0WzBdOwogCQlmb3IgKGkgPSAxLCBzZWdsZW4gPSAxOyBpIDwgY2hhbmxlbjsgaSsrLCBzZWdsZW4rKykgewogCQkJLyogIGJ1aWxkIHBhcnQgb2YgY2hhbmxpc3QgKi8KQEAgLTk2OCwxMCArOTY4LDEwIEBACiAJCQlub3dtdXN0YmVjaGFuID0KIAkJCSAgICAoQ1JfQ0hBTihjaGFuc2VnbWVudFtpIC0gMV0pICsgMSkgJSBjaGFubGVuOwogCQkJaWYgKG5vd211c3RiZWNoYW4gIT0gQ1JfQ0hBTihjaGFubGlzdFtpXSkpIHsKLQkJCQkvKiAgY2hhbm5lbCBsaXN0IGlzbid0IGNvbnRpbm91cyA6LSggKi8KKwkJCQkvKiAgY2hhbm5lbCBsaXN0IGlzbid0IGNvbnRpbnVvdXMgOi0oICovCiAJCQkJcHJpbnRrKEtFUk5fV0FSTklORwogCQkJCSAgICAgICAiY29tZWRpJWQ6IHBjbDgxNjogY2hhbm5lbCBsaXN0IG11c3QgIgotCQkJCSAgICAgICAiYmUgY29udGlub3VzISBjaGFubGlzdFslaV09JWQgYnV0ICIKKwkJCQkgICAgICAgImJlIGNvbnRpbnVvdXMhIGNoYW5saXN0WyVpXT0lZCBidXQgIgogCQkJCSAgICAgICAibXVzdCBiZSAlZCBvciAlZCFcbiIsIGRldi0+bWlub3IsCiAJCQkJICAgICAgIGksIENSX0NIQU4oY2hhbmxpc3RbaV0pLCBub3dtdXN0YmVjaGFuLAogCQkJCSAgICAgICBDUl9DSEFOKGNoYW5saXN0WzBdKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODE4LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODE4LmMKaW5kZXggZjU4ZDc1Yi4uZTNlZWEwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxOC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTguYwpAQCAtMTIzMSw3ICsxMjMxLDcgQEAKIAl9CiAKIAlpZiAobl9jaGFuID4gMSkgewotCQkvKiAgZmlyc3QgY2hhbm5lbCBpcyBldmVyeXRpbWUgb2sgKi8KKwkJLyogIGZpcnN0IGNoYW5uZWwgaXMgZXZlcnkgdGltZSBvayAqLwogCQljaGFuc2VnbWVudFswXSA9IGNoYW5saXN0WzBdOwogCQkvKiAgYnVpbGQgcGFydCBvZiBjaGFubGlzdCAqLwogCQlmb3IgKGkgPSAxLCBzZWdsZW4gPSAxOyBpIDwgbl9jaGFuOyBpKyssIHNlZ2xlbisrKSB7CkBAIC0xMjQ1LDkgKzEyNDUsOSBAQAogCQkJCWJyZWFrOwogCQkJbm93bXVzdGJlY2hhbiA9CiAJCQkgICAgKENSX0NIQU4oY2hhbnNlZ21lbnRbaSAtIDFdKSArIDEpICUgcy0+bl9jaGFuOwotCQkJaWYgKG5vd211c3RiZWNoYW4gIT0gQ1JfQ0hBTihjaGFubGlzdFtpXSkpIHsJLyogIGNoYW5uZWwgbGlzdCBpc24ndCBjb250aW5vdXMgOi0oICovCisJCQlpZiAobm93bXVzdGJlY2hhbiAhPSBDUl9DSEFOKGNoYW5saXN0W2ldKSkgewkvKiAgY2hhbm5lbCBsaXN0IGlzbid0IGNvbnRpbnVvdXMgOi0oICovCiAJCQkJcHJpbnRrCi0JCQkJICAgICgiY29tZWRpJWQ6IHBjbDgxODogY2hhbm5lbCBsaXN0IG11c3QgYmUgY29udGlub3VzISBjaGFubGlzdFslaV09JWQgYnV0IG11c3QgYmUgJWQgb3IgJWQhXG4iLAorCQkJCSAgICAoImNvbWVkaSVkOiBwY2w4MTg6IGNoYW5uZWwgbGlzdCBtdXN0IGJlIGNvbnRpbnVvdXMhIGNoYW5saXN0WyVpXT0lZCBidXQgbXVzdCBiZSAlZCBvciAlZCFcbiIsCiAJCQkJICAgICBkZXYtPm1pbm9yLCBpLCBDUl9DSEFOKGNoYW5saXN0W2ldKSwKIAkJCQkgICAgIG5vd211c3RiZWNoYW4sIENSX0NIQU4oY2hhbmxpc3RbMF0pKTsKIAkJCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY21taW8uYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY21taW8uYwppbmRleCA1YzgzMmQ3Li5mMmU4OGU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jCkBAIC03MzMsNyArNzMzLDcgQEAKIAkJYnJlYWs7CiAKIAljYXNlIElOU05fQ09ORklHX0RJT19RVUVSWToKLQkJLyogcmV0cmVpdmUgZnJvbSBzaGFkb3cgcmVnaXN0ZXIgKi8KKwkJLyogcmV0cmlldmUgZnJvbSBzaGFkb3cgcmVnaXN0ZXIgKi8KIAkJZGF0YVsxXSA9CiAJCSAgICAocy0+aW9fYml0cyAmICgxIDw8IGNoYW4pKSA/IENPTUVESV9PVVRQVVQgOiBDT01FRElfSU5QVVQ7CiAJCXJldHVybiBpbnNuLT5uOwpAQCAtMTI3OSw3ICsxMjc5LDcgQEAKIAkgICAibm8gYnVzeSB3YWl0aW5nIiBwb2xpY3kuIFRoZSBmYWN0IGlzIHRoYXQgdGhlIGhhcmR3YXJlIGlzCiAJICAgbm9ybWFsbHkgc28gZmFzdCB0aGF0IHdlIHVzdWFsbHkgb25seSBuZWVkIG9uZSB0aW1lIHRocm91Z2ggdGhlIGxvb3AKIAkgICBhbnl3YXkuIFRoZSBsb25nZXIgdGltZW91dCBpcyBmb3IgcmFyZSBvY2Nhc2lvbnMgYW5kIGZvciBkZXRlY3RpbmcKLQkgICBub24tZXhpc3RhbnQgaGFyZHdhcmUuICAqLworCSAgIG5vbi1leGlzdGVudCBoYXJkd2FyZS4gICovCiAKIAl3aGlsZSAocmV0cnktLSkgewogCQlpZiAoaW5iKGlvYmFzZSArIDMpICYgMHg4MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY211aW8uYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY211aW8uYwppbmRleCA3YTkyODc0Li5iMmMyYzg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jCkBAIC02MDUsNyArNjA1LDcgQEAKIAkJYnJlYWs7CiAKIAljYXNlIElOU05fQ09ORklHX0RJT19RVUVSWToKLQkJLyogcmV0cmVpdmUgZnJvbSBzaGFkb3cgcmVnaXN0ZXIgKi8KKwkJLyogcmV0cmlldmUgZnJvbSBzaGFkb3cgcmVnaXN0ZXIgKi8KIAkJZGF0YVsxXSA9CiAJCSAgICAocy0+aW9fYml0cyAmICgxIDw8IGNoYW4pKSA/IENPTUVESV9PVVRQVVQgOiBDT01FRElfSU5QVVQ7CiAJCXJldHVybiBpbnNuLT5uOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3F1YXRlY2hfZGFxcF9jcy5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3F1YXRlY2hfZGFxcF9jcy5jCmluZGV4IGViYmE5YmIuLjgyOTQyZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9xdWF0ZWNoX2RhcXBfY3MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcXVhdGVjaF9kYXFwX2NzLmMKQEAgLTM5MCw3ICszOTAsNyBAQAogCiAJb3V0Yih2LCBkZXYtPmlvYmFzZSArIERBUVBfQ09OVFJPTCk7CiAKLQkvKiBSZXNldCBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzIChteSBjYXJkIGhhcyBhIHRlbmRhbmN5IHRvIHJlcXVpcmUKKwkvKiBSZXNldCBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzIChteSBjYXJkIGhhcyBhIHRlbmRlbmN5IHRvIHJlcXVpcmUKIAkgKiByZXF1aXJlIG11bHRpcGxlIHJlYWRzIG9uIHRoZSBzdGF0dXMgcmVnaXN0ZXIgdG8gYWNoaWV2ZSB0aGlzKQogCSAqLwogCkBAIC03NTIsNyArNzUyLDcgQEAKIAogCW91dGIodiwgZGV2LT5pb2Jhc2UgKyBEQVFQX0NPTlRST0wpOwogCi0JLyogUmVzZXQgYW55IHBlbmRpbmcgaW50ZXJydXB0cyAobXkgY2FyZCBoYXMgYSB0ZW5kYW5jeSB0byByZXF1aXJlCisJLyogUmVzZXQgYW55IHBlbmRpbmcgaW50ZXJydXB0cyAobXkgY2FyZCBoYXMgYSB0ZW5kZW5jeSB0byByZXF1aXJlCiAJICogcmVxdWlyZSBtdWx0aXBsZSByZWFkcyBvbiB0aGUgc3RhdHVzIHJlZ2lzdGVyIHRvIGFjaGlldmUgdGhpcykKIAkgKi8KIAljb3VudGVyID0gMTAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3J0ZDUyMC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3J0ZDUyMC5jCmluZGV4IDM1Nzg1OGQuLjdmMDllZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9ydGQ1MjAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcnRkNTIwLmMKQEAgLTc1LDcgKzc1LDcgQEAKICAgICBkYXMxODAwLCBzaW5jZSB0aGV5IGhhdmUgdGhlIGJlc3QgZG9jdW1lbnRlZCBjb2RlLiAgRHJpdmVyCiAgICAgY2JfcGNpZGFzNjQuYyB1c2VzIHRoZSBzYW1lIERNQSBjb250cm9sbGVyLgogCi0gICAgQXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoZSBBYm91dCBpbnRlcnJ1cHQgZG9lc250IHdvcmsgaWYgU2FtcGxlIGlzCisgICAgQXMgZmFyIGFzIEkgY2FuIHRlbGwsIHRoZSBBYm91dCBpbnRlcnJ1cHQgZG9lc24ndCB3b3JrIGlmIFNhbXBsZSBpcwogICAgIGFsc28gZW5hYmxlZC4gIEl0IHR1cm5zIG91dCB0aGF0IEFib3V0IHJlYWxseSBpc24ndCBuZWVkZWQsIHNpbmNlCiAgICAgd2UgYWx3YXlzIGNvdW50IGRvd24gc2FtcGxlcyByZWFkLgogCkBAIC0zNzAsNyArMzcwLDcgQEAKIAkvKiB0aW1lciBnYXRlICh3aGVuIGVuYWJsZWQpICovCiAJdTggdXRjR2F0ZVs0XTsJCS8qIDEgZXh0cmEgYWxsb3dzIHNpbXBsZSByYW5nZSBjaGVjayAqLwogCi0JLyogc2hhZG93IHJlZ2lzdGVycyBhZmZlY3Qgb3RoZXIgcmVnaXN0ZXJzLCBidXQgY2FudCBiZSByZWFkIGJhY2sgKi8KKwkvKiBzaGFkb3cgcmVnaXN0ZXJzIGFmZmVjdCBvdGhlciByZWdpc3RlcnMsIGJ1dCBjYW4ndCBiZSByZWFkIGJhY2sgKi8KIAkvKiBUaGUgbWFjcm9zIGJlbG93IHVwZGF0ZSB0aGVzZSBvbiB3cml0ZXMgKi8KIAl1MTYgaW50TWFzazsJCS8qIGludGVycnVwdCBtYXNrICovCiAJdTE2IGludENsZWFyTWFzazsJLyogaW50ZXJydXB0IGNsZWFyIG1hc2sgKi8KQEAgLTQ4NSw3ICs0ODUsNyBAQAogI2RlZmluZSBSdGRBZGNGaWZvR2V0KGRldikgXAogCXJlYWR3KGRldnByaXYtPmxhczErTEFTMV9BRENfRklGTykKIAotLyogUmVhZCB0d28gQURDIGRhdGEgdmFsdWVzIChET0VTTlQgV09SSykgKi8KKy8qIFJlYWQgdHdvIEFEQyBkYXRhIHZhbHVlcyAoRE9FU04nVCBXT1JLKSAqLwogI2RlZmluZSBSdGRBZGNGaWZvR2V0MihkZXYpIFwKIAlyZWFkbChkZXZwcml2LT5sYXMxK0xBUzFfQURDX0ZJRk8pCiAKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCQkJRFBSSU5USygicnRkNTIwOiBQQ0kgbGF0ZW5jeSA9ICVkXG4iLCBwY2lfbGF0ZW5jeSk7CiAJCX0KIAotCQkvKiBVbmRvY3VtZW50ZWQgRVBMRCB2ZXJzaW9uIChkb2VzbnQgbWF0Y2ggUlREIGRyaXZlciByZXN1bHRzKSAqLworCQkvKiBVbmRvY3VtZW50ZWQgRVBMRCB2ZXJzaW9uIChkb2Vzbid0IG1hdGNoIFJURCBkcml2ZXIgcmVzdWx0cykgKi8KIAkJLypEUFJJTlRLICgicnRkNTIwOiBSZWFkaW5nIGVwbGQgZnJvbSAlcFxuIiwKIAkJICAgZGV2cHJpdi0+bGFzMCswKTsKIAkJICAgZXBsZF92ZXJzaW9uID0gcmVhZGwgKGRldnByaXYtPmxhczArMCk7CkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogLyoKICAgImluc3RydWN0aW9ucyIgcmVhZC93cml0ZSBkYXRhIGluICJvbmUtc2hvdCIgb3IgInNvZnR3YXJlLXRyaWdnZXJlZCIKICAgbW9kZSAoc2ltcGxlc3QgY2FzZSkuCi0gIFRoaXMgZG9lc250IHVzZSBpbnRlcnJ1cHRzLgorICBUaGlzIGRvZXNuJ3QgdXNlIGludGVycnVwdHMuCiAKICAgTm90ZSwgd2UgZG9uJ3QgZG8gYW55IHNldHRsaW5nIGRlbGF5cy4gIFVzZSBhIGluc3RydWN0aW9uIGxpc3QgdG8KICAgc2VsZWN0LCBkZWxheSwgdGhlbiByZWFkLgpAQCAtMjEyMCw3ICsyMTIwLDcgQEAKIH0KIAogLyoKLSAgU3RvcCBhIHJ1bm5pbmcgZGF0YSBhcXVpc2l0aW9uLgorICBTdG9wIGEgcnVubmluZyBkYXRhIGFjcXVpc2l0aW9uLgogKi8KIHN0YXRpYyBpbnQgcnRkX2FpX2NhbmNlbChzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2LCBzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9zNjI2LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvczYyNi5jCmluZGV4IGQ1YmEzYWIuLjIzZmM2NGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9zNjI2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3M2MjYuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAJaW50IGdvdF9yZWdpb25zOwogCXNob3J0IGFsbG9jYXRlZEJ1ZjsKIAl1aW50OF90IGFpX2NtZF9ydW5uaW5nOwkvKiAgYWlfY21kIGlzIHJ1bm5pbmcgKi8KLQl1aW50OF90IGFpX2NvbnRpbm91czsJLyogIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJdWludDhfdCBhaV9jb250aW5vdXM7CS8qICBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAlpbnQgYWlfc2FtcGxlX2NvdW50OwkvKiAgbnVtYmVyIG9mIHNhbXBsZXMgdG8gYWNxdWlyZSAqLwogCXVuc2lnbmVkIGludCBhaV9zYW1wbGVfdGltZXI7CiAJLyogIHRpbWUgYmV0d2VlbiBzYW1wbGVzIGluICB1bml0cyBvZiB0aGUgdGltZXIgKi8KQEAgLTEwNDgsNyArMTA0OCw3IEBACiAJdWludDhfdCBncm91cDsKIAl1aW50MTZfdCBpcnFiaXQ7CiAKLQlERUJVRygiczYyNl9pcnFfaGFuZGxlcjogaW50ZXJydXB0IHJlcXVlc3QgcmVjaWV2ZWQhISFcbiIpOworCURFQlVHKCJzNjI2X2lycV9oYW5kbGVyOiBpbnRlcnJ1cHQgcmVxdWVzdCByZWNlaXZlZCEhIVxuIik7CiAKIAlpZiAoZGV2LT5hdHRhY2hlZCA9PSAwKQogCQlyZXR1cm4gSVJRX05PTkU7CkBAIC0xMTY1LDE0ICsxMTY1LDE0IEBACiAJCQkJCQkJKDE2ICogZ3JvdXApKSkKIAkJCQkJICAgID09IDEgJiYgY21kLT5zdGFydF9zcmMgPT0gVFJJR19FWFQpIHsKIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBFZGdlIGNhcHR1cmUgaW50ZXJydXB0IHJlY2lldmVkIGZyb20gY2hhbm5lbCAlZFxuIiwKKwkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IEVkZ2UgY2FwdHVyZSBpbnRlcnJ1cHQgcmVjZWl2ZWQgZnJvbSBjaGFubmVsICVkXG4iLAogCQkJCQkJICAgICBjbWQtPnN0YXJ0X2FyZyk7CiAKIAkJCQkJCS8qICBTdGFydCBleGVjdXRpbmcgdGhlIFJQUyBwcm9ncmFtLiAqLwogCQkJCQkJTUNfRU5BQkxFKFBfTUMxLCBNQzFfRVJQUzEpOwogCiAJCQkJCQlERUJVRwotCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogYXF1aXNpdGlvbiBzdGFydCB0cmlnZ2VyZWQhISFcbiIpOworCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogYWNxdWlzaXRpb24gc3RhcnQgdHJpZ2dlcmVkISEhXG4iKTsKIAogCQkJCQkJaWYgKGNtZC0+c2Nhbl9iZWdpbl9zcmMgPT0KIAkJCQkJCSAgICBUUklHX0VYVCkgewpAQCAtMTE5NCw3ICsxMTk0LDcgQEAKIAkJCQkJICAgICYmIGNtZC0+c2Nhbl9iZWdpbl9zcmMgPT0KIAkJCQkJICAgIFRSSUdfRVhUKSB7CiAJCQkJCQlERUJVRwotCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogRWRnZSBjYXB0dXJlIGludGVycnVwdCByZWNpZXZlZCBmcm9tIGNoYW5uZWwgJWRcbiIsCisJCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBFZGdlIGNhcHR1cmUgaW50ZXJydXB0IHJlY2VpdmVkIGZyb20gY2hhbm5lbCAlZFxuIiwKIAkJCQkJCSAgICAgY21kLT5zY2FuX2JlZ2luX2FyZyk7CiAKIAkJCQkJCS8qICBUcmlnZ2VyIEFEQyBzY2FuIGxvb3Agc3RhcnQgYnkgc2V0dGluZyBSUFMgU2lnbmFsIDAuICovCkBAIC0xMjM2LDcgKzEyMzYsNyBAQAogCQkJCQkgICAgPT0gMQogCQkJCQkgICAgJiYgY21kLT5jb252ZXJ0X3NyYyA9PSBUUklHX0VYVCkgewogCQkJCQkJREVCVUcKLQkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IEVkZ2UgY2FwdHVyZSBpbnRlcnJ1cHQgcmVjaWV2ZWQgZnJvbSBjaGFubmVsICVkXG4iLAorCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogRWRnZSBjYXB0dXJlIGludGVycnVwdCByZWNlaXZlZCBmcm9tIGNoYW5uZWwgJWRcbiIsCiAJCQkJCQkgICAgIGNtZC0+Y29udmVydF9hcmcpOwogCiAJCQkJCQkvKiAgVHJpZ2dlciBBREMgc2NhbiBsb29wIHN0YXJ0IGJ5IHNldHRpbmcgUlBTIFNpZ25hbCAwLiAqLwpAQCAtMTgwNSw3ICsxODA1LDcgQEAKIAkJREVCVUcoInM2MjZfYWlfY21kOiBOVUxMIGNvbW1hbmRcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9IGVsc2UgewotCQlERUJVRygiczYyNl9haV9jbWQ6IGNvbW1hbmQgcmVjaWV2ZWQhISFcbiIpOworCQlERUJVRygiczYyNl9haV9jbWQ6IGNvbW1hbmQgcmVjZWl2ZWQhISFcbiIpOwogCX0KIAogCWlmIChkZXYtPmlycSA9PSAwKSB7CkBAIC0xODgwLDcgKzE4ODAsNyBAQAogCQlkZXZwcml2LT5haV9jb250aW5vdXMgPSAwOwogCQlicmVhazsKIAljYXNlIFRSSUdfTk9ORToKLQkJLyogIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJCS8qICBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAkJZGV2cHJpdi0+YWlfY29udGlub3VzID0gMTsKIAkJZGV2cHJpdi0+YWlfc2FtcGxlX2NvdW50ID0gMDsKIAkJYnJlYWs7CkBAIC0yNTcwLDcgKzI1NzAsNyBAQAogCXdoaWxlICgoUlI3MTQ2KFBfSTJDQ1RSTCkgJiAoSTJDX0JVU1kgfCBJMkNfRVJSKSkgPT0gSTJDX0JVU1kpCiAJCTsKIAotCS8qICBSZXR1cm4gbm9uLXplcm8gaWYgSTJDIGVycm9yIG9jY3VyZWQuICovCisJLyogIFJldHVybiBub24temVybyBpZiBJMkMgZXJyb3Igb2NjdXJyZWQuICovCiAJcmV0dXJuIFJSNzE0NihQX0kyQ0NUUkwpICYgSTJDX0VSUjsKIAogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eC5jCmluZGV4IGJlOTNjMzAuLmU1NDNlNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4LmMKQEAgLTI4NSw3ICsyODUsNyBAQAogCXNob3J0IGludCBhb19jbWRfcnVubmluZzsKIAkvKiBwd20gaXMgcnVubmluZyAqLwogCXNob3J0IGludCBwd21fY21kX3J1bm5pbmc7Ci0JLyogY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwkvKiBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAlzaG9ydCBpbnQgYWlfY29udGlub3VzOwogCXNob3J0IGludCBhb19jb250aW5vdXM7CiAJLyogbnVtYmVyIG9mIHNhbXBsZXMgdG8gYWNxdWlyZSAqLwpAQCAtNTAwLDcgKzUwMCw3IEBACiAKIAkvKiB0ZXN0LCBpZiB3ZSB0cmFuc21pdCBvbmx5IGEgZml4ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKi8KIAlpZiAoISh0aGlzX3VzYmR1eHN1Yi0+YWlfY29udGlub3VzKSkgewotCQkvKiBub3QgY29udGlub3VzLCBmaXhlZCBudW1iZXIgb2Ygc2FtcGxlcyAqLworCQkvKiBub3QgY29udGludW91cywgZml4ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKi8KIAkJdGhpc191c2JkdXhzdWItPmFpX3NhbXBsZV9jb3VudC0tOwogCQkvKiBhbGwgc2FtcGxlcyByZWNlaXZlZD8gKi8KIAkJaWYgKHRoaXNfdXNiZHV4c3ViLT5haV9zYW1wbGVfY291bnQgPCAwKSB7CkBAIC02NTMsNyArNjUzLDcgQEAKIAkJLyogdGltZXIgemVybyAqLwogCQl0aGlzX3VzYmR1eHN1Yi0+YW9fY291bnRlciA9IHRoaXNfdXNiZHV4c3ViLT5hb190aW1lcjsKIAotCQkvKiBoYW5kbGUgbm9uIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJCS8qIGhhbmRsZSBub24gY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJCWlmICghKHRoaXNfdXNiZHV4c3ViLT5hb19jb250aW5vdXMpKSB7CiAJCQkvKiBmaXhlZCBudW1iZXIgb2Ygc2FtcGxlcyAqLwogCQkJdGhpc191c2JkdXhzdWItPmFvX3NhbXBsZV9jb3VudC0tOwpAQCAtOTU3LDcgKzk1Nyw3IEBACiAJaWYgKCFjbWQtPnNjYW5fYmVnaW5fc3JjIHx8IHRtcCAhPSBjbWQtPnNjYW5fYmVnaW5fc3JjKQogCQllcnIrKzsKIAotCS8qIHNjYW5uaW5nIGlzIGNvbnRpbm91cyAqLworCS8qIHNjYW5uaW5nIGlzIGNvbnRpbnVvdXMgKi8KIAl0bXAgPSBjbWQtPmNvbnZlcnRfc3JjOwogCWNtZC0+Y29udmVydF9zcmMgJj0gVFJJR19OT1c7CiAJaWYgKCFjbWQtPmNvbnZlcnRfc3JjIHx8IHRtcCAhPSBjbWQtPmNvbnZlcnRfc3JjKQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAKIAkJdXAoJnRoaXNfdXNiZHV4c3ViLT5zZW0pOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KLQkvKiBzZXQgY3VycmVudCBjaGFubmVsIG9mIHRoZSBydW5uaW5nIGFxdWlzaXRpb24gdG8gemVybyAqLworCS8qIHNldCBjdXJyZW50IGNoYW5uZWwgb2YgdGhlIHJ1bm5pbmcgYWNxdWlzaXRpb24gdG8gemVybyAqLwogCXMtPmFzeW5jLT5jdXJfY2hhbiA9IDA7CiAKIAl0aGlzX3VzYmR1eHN1Yi0+ZHV4X2NvbW1hbmRzWzFdID0gY21kLT5jaGFubGlzdF9sZW47CkBAIC0xMjg0LDcgKzEyODQsNyBAQAogCQl0aGlzX3VzYmR1eHN1Yi0+YWlfc2FtcGxlX2NvdW50ID0gY21kLT5zdG9wX2FyZzsKIAkJdGhpc191c2JkdXhzdWItPmFpX2NvbnRpbm91cyA9IDA7CiAJfSBlbHNlIHsKLQkJLyogY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwkJLyogY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJCXRoaXNfdXNiZHV4c3ViLT5haV9jb250aW5vdXMgPSAxOwogCQl0aGlzX3VzYmR1eHN1Yi0+YWlfc2FtcGxlX2NvdW50ID0gMDsKIAl9CkBAIC0xNTE1LDcgKzE1MTUsNyBAQAogCS8qIGp1c3Qgbm93IHdlIHNjYW4gYWxzbyBpbiB0aGUgaGlnaCBzcGVlZCBtb2RlIGV2ZXJ5IGZyYW1lICovCiAJLyogdGhpcyBpcyBkdWUgdG8gZWhjaSBkcml2ZXIgbGltaXRhdGlvbnMgKi8KIAlpZiAoMCkgewkJLyogKHRoaXNfdXNiZHV4c3ViLT5oaWdoX3NwZWVkKSAqLwotCQkvKiBzdGFydCBpbW1pZGlhdGVseSBhIG5ldyBzY2FuICovCisJCS8qIHN0YXJ0IGltbWVkaWF0ZWx5IGEgbmV3IHNjYW4gKi8KIAkJLyogdGhlIHNhbXBsaW5nIHJhdGUgaXMgc2V0IGJ5IHRoZSBjb3ZlcnNpb24gcmF0ZSAqLwogCQljbWQtPnNjYW5fYmVnaW5fc3JjICY9IFRSSUdfRk9MTE9XOwogCX0gZWxzZSB7CkBAIC0xNTI1LDcgKzE1MjUsNyBAQAogCWlmICghY21kLT5zY2FuX2JlZ2luX3NyYyB8fCB0bXAgIT0gY21kLT5zY2FuX2JlZ2luX3NyYykKIAkJZXJyKys7CiAKLQkvKiBzY2FubmluZyBpcyBjb250aW5vdXMgKi8KKwkvKiBzY2FubmluZyBpcyBjb250aW51b3VzICovCiAJdG1wID0gY21kLT5jb252ZXJ0X3NyYzsKIAkvKiB3ZSBhbHdheXMgb3V0cHV0IGF0IDFrSHoganVzdCBub3cgYWxsIGNoYW5uZWxzIGF0IG9uY2UgKi8KIAlpZiAoMCkgewkJLyogKHRoaXNfdXNiZHV4c3ViLT5oaWdoX3NwZWVkKSAqLwpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAKIAlkZXZfZGJnKCZ0aGlzX3VzYmR1eHN1Yi0+aW50ZXJmYWNlLT5kZXYsCiAJCSJjb21lZGklZDogJXNcbiIsIGRldi0+bWlub3IsIF9fZnVuY19fKTsKIAotCS8qIHNldCBjdXJyZW50IGNoYW5uZWwgb2YgdGhlIHJ1bm5pbmcgYXF1aXNpdGlvbiB0byB6ZXJvICovCisJLyogc2V0IGN1cnJlbnQgY2hhbm5lbCBvZiB0aGUgcnVubmluZyBhY3F1aXNpdGlvbiB0byB6ZXJvICovCiAJcy0+YXN5bmMtPmN1cl9jaGFuID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgY21kLT5jaGFubGlzdF9sZW47ICsraSkgewogCQljaGFuID0gQ1JfQ0hBTihjbWQtPmNoYW5saXN0W2ldKTsKQEAgLTE2OTQsNyArMTY5NCw3IEBACiAJdGhpc191c2JkdXhzdWItPmFvX2NvdW50ZXIgPSB0aGlzX3VzYmR1eHN1Yi0+YW9fdGltZXI7CiAKIAlpZiAoY21kLT5zdG9wX3NyYyA9PSBUUklHX0NPVU5UKSB7Ci0JCS8qIG5vdCBjb250aW5vdXMgKi8KKwkJLyogbm90IGNvbnRpbnVvdXMgKi8KIAkJLyogY291bnRlciAqLwogCQkvKiBoaWdoIHNwZWVkIGFsc28gc2NhbnMgZXZlcnl0aGluZyBhdCBvbmNlICovCiAJCWlmICgwKSB7CS8qICh0aGlzX3VzYmR1eHN1Yi0+aGlnaF9zcGVlZCkgKi8KQEAgLTE3MDgsNyArMTcwOCw3IEBACiAJCX0KIAkJdGhpc191c2JkdXhzdWItPmFvX2NvbnRpbm91cyA9IDA7CiAJfSBlbHNlIHsKLQkJLyogY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwkJLyogY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJCXRoaXNfdXNiZHV4c3ViLT5hb19jb250aW5vdXMgPSAxOwogCQl0aGlzX3VzYmR1eHN1Yi0+YW9fc2FtcGxlX2NvdW50ID0gMDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4ZmFzdC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eGZhc3QuYwppbmRleCA1YjE1ZTZkLi4yYThlNzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4ZmFzdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXhmYXN0LmMKQEAgLTE4MCw3ICsxODAsNyBAQAogCS8qIGNvbWVkaSBkZXZpY2UgZm9yIHRoZSBpbnRlcnJ1cHQgY29udGV4dCAqLwogCXN0cnVjdCBjb21lZGlfZGV2aWNlICpjb21lZGlkZXY7CiAJc2hvcnQgaW50IGFpX2NtZF9ydW5uaW5nOwkvKiBhc3luY2hyb25vdXMgY29tbWFuZCBpcyBydW5uaW5nICovCi0Jc2hvcnQgaW50IGFpX2NvbnRpbm91czsJLyogY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwlzaG9ydCBpbnQgYWlfY29udGlub3VzOwkvKiBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAlsb25nIGludCBhaV9zYW1wbGVfY291bnQ7CS8qIG51bWJlciBvZiBzYW1wbGVzIHRvIGFjcXVpcmUgKi8KIAl1aW50OF90ICpkdXhfY29tbWFuZHM7CS8qIGNvbW1hbmRzICovCiAJaW50IGlnbm9yZTsJCS8qIGNvdW50ZXIgd2hpY2ggaWdub3JlcyB0aGUgZmlyc3QKQEAgLTM5Miw3ICszOTIsNyBAQAogCXAgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsKIAlpZiAoIXVkZnMtPmlnbm9yZSkgewogCQlpZiAoIXVkZnMtPmFpX2NvbnRpbm91cykgewotCQkJLyogbm90IGNvbnRpbm91cywgZml4ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKi8KKwkJCS8qIG5vdCBjb250aW51b3VzLCBmaXhlZCBudW1iZXIgb2Ygc2FtcGxlcyAqLwogCQkJbiA9IHVyYi0+YWN0dWFsX2xlbmd0aCAvIHNpemVvZih1aW50MTZfdCk7CiAJCQlpZiAodW5saWtlbHkodWRmcy0+YWlfc2FtcGxlX2NvdW50IDwgbikpIHsKIAkJCQkvKgpAQCAtNzc1LDcgKzc3NSw3IEBACiAJCXVwKCZ1ZGZzLT5zZW0pOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KLQkvKiBzZXQgY3VycmVudCBjaGFubmVsIG9mIHRoZSBydW5uaW5nIGFxdWlzaXRpb24gdG8gemVybyAqLworCS8qIHNldCBjdXJyZW50IGNoYW5uZWwgb2YgdGhlIHJ1bm5pbmcgYWNxdWlzaXRpb24gdG8gemVybyAqLwogCXMtPmFzeW5jLT5jdXJfY2hhbiA9IDA7CiAKIAkvKgpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKIAkJfQogCQl1ZGZzLT5haV9jb250aW5vdXMgPSAwOwogCX0gZWxzZSB7Ci0JCS8qIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJCS8qIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCQl1ZGZzLT5haV9jb250aW5vdXMgPSAxOwogCQl1ZGZzLT5haV9zYW1wbGVfY291bnQgPSAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcHRtMTIxNy9jbGVhcnBhZF90bTEyMTcuYyBiL2RyaXZlcnMvc3RhZ2luZy9jcHRtMTIxNy9jbGVhcnBhZF90bTEyMTcuYwppbmRleCA3NmU0Yjc4Li4wZmU3MTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3B0bTEyMTcvY2xlYXJwYWRfdG0xMjE3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NwdG0xMjE3L2NsZWFycGFkX3RtMTIxNy5jCkBAIC01Miw3ICs1Miw3IEBACiAjZGVmaW5lIFRNQTEyMTdfREVWX1NUQVRVUwkJMHgxMwkvKiBEZXZpY2UgU3RhdHVzICovCiAjZGVmaW5lIFRNQTEyMTdfSU5UX1NUQVRVUwkJMHgxNAkvKiBJbnRlcnJ1cHQgU3RhdHVzICovCiAKLS8qIENvbnRyb2xsZXIgY2FuIGRldGVjdCB1cHRvIDIgcG9zc2libGUgZmluZ2VyIHRvdWNoZXMuCisvKiBDb250cm9sbGVyIGNhbiBkZXRlY3QgdXAgdG8gMiBwb3NzaWJsZSBmaW5nZXIgdG91Y2hlcy4KICAqIEVhY2ggZmluZ2VyIHRvdWNoIHByb3ZpZGVzICAxMiBiaXQgWCBZIGNvLW9yZGluYXRlcywgdGhlIHZhbHVlcyBhcmUgc3BsaXQKICAqIGFjcm9zcyAyIHJlZ2lzdGVycywgYW5kIGFuIDggYml0ICBaIHZhbHVlICovCiAjZGVmaW5lIFRNQTEyMTdfRklOR0VSX1NUQVRFCQkweDE4IC8qIEZpbmdlciBTdGF0ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfY21kcy5jIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfY21kcy5jCmluZGV4IDE0Mjk2MDg1Li4zNzM1ZWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9jbWRzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfY21kcy5jCkBAIC05MTQsNyArOTE0LDcgQEAKICAqIFJldHVybjoKICAqCXN0YXR1cwogICoKLSAqIENsb3NlciBhcGxpY2F0aW9uIGhhbmRsZSBhbmQgcmVsZWFzZSBhcHAgc3BlY2lmaWMKKyAqIENsb3NlciBhcHBsaWNhdGlvbiBoYW5kbGUgYW5kIHJlbGVhc2UgYXBwIHNwZWNpZmljCiAgKiByZXNvdXJjZXMuCiAgKi8KIGVudW0gQkNfU1RBVFVTIGNyeXN0YWxoZF91c2VyX2Nsb3NlKHN0cnVjdCBjcnlzdGFsaGRfY21kICpjdHgsIHN0cnVjdCBjcnlzdGFsaGRfdXNlciAqdWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9ody5jIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfaHcuYwppbmRleCAxM2E1MTRkLi41YWNmMzllIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9ody5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2h3LmMKQEAgLTMwMiw3ICszMDIsNyBAQAogCWNyeXN0YWxoZF9lbmFibGVfaW50ZXJydXB0cyhhZHApOwogCiAJLyogRW5hYmxlIHRoZSBvcHRpb24gZm9yIGdldHRpbmcgdGhlIHRvdGFsIG5vLiBvZiBEV09SRFMKLQkgKiB0aGF0IGhhdmUgYmVlbiB0cmFuc2ZlcmVkIGJ5IHRoZSBSWERNQSBlbmdpbmUKKwkgKiB0aGF0IGhhdmUgYmVlbiB0cmFuc2ZlcnJlZCBieSB0aGUgUlhETUEgZW5naW5lCiAJICovCiAJZGJnX29wdGlvbnMgPSBjcnlzdGFsaGRfcmVnX3JkKGFkcCwgTUlTQzFfRE1BX0RFQlVHX09QVElPTlNfUkVHKTsKIAlkYmdfb3B0aW9ucyB8PSAweDEwOwpAQCAtMTc3Niw3ICsxNzc2LDcgQEAKIAkJcmV0dXJuIHN0czsKIAl9CiAKLQkvKkdldCB0aGUgUmVzcG9uY2UgQWRkcmVzcyovCisJLypHZXQgdGhlIFJlc3BvbnNlIEFkZHJlc3MqLwogCWNtZF9yZXNfYWRkciA9IGJjX2RlY19yZWdfcmQoaHctPmFkcCwgQ3B1MkhzdE1ieDEpOwogCiAJLypSZWFkIHRoZSBSZXNwb25zZSovCkBAIC0yMzY3LDcgKzIzNjcsNyBAQAogCUJDTUxPRyhCQ01MT0dfSU5GTywgImNsb2NrIGlzIG1vdmluZyB0byAlZCB3aXRoIG4gJWQgd2l0aCB2Y29fbWcgJWRcbiIsCiAJICAgICAgIGh3LT5jb3JlX2Nsb2NrX21oeiwgbiwgdmNvX21nKTsKIAotCS8qIENoYW5nZSB0aGUgRFJBTSByZWZyZXNoIHJhdGUgdG8gYWNjb21vZGF0ZSB0aGUgbmV3IGZyZXF1ZW5jeSAqLworCS8qIENoYW5nZSB0aGUgRFJBTSByZWZyZXNoIHJhdGUgdG8gYWNjb21tb2RhdGUgdGhlIG5ldyBmcmVxdWVuY3kgKi8KIAkvKiByZWZyZXNoIHJlZyA9ICgocmVmcmVzaF9yYXRlICogY2xvY2tfcmF0ZSkvMTYpIC0gMTsgcm91bmRpbmcgdXAqLwogCXJlZnJlc2hfcmVnID0gKDcgKiBody0+Y29yZV9jbG9ja19taHogLyAxNik7CiAJYmNfZGVjX3JlZ193cihody0+YWRwLCBTRFJBTV9SRUZfUEFSQU0sICgoMSA8PCAxMikgfCByZWZyZXNoX3JlZykpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuYyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmMKaW5kZXggZjI3NGM3Ny4uNWNjMzQyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5jCkBAIC0xNDU1LDcgKzE0NTUsNyBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIElmIHRoZSBkZXNjcmlwdG9yIGhhcyBub3QgcmVjb3ZlcmVkLCB0aGVuIGxlYXZpbmcgdGhlIEVNUFRZCiAgICAgICAgICAgICAgKiBlbnRyeSBzZXQgd2lsbCBub3Qgc2lnbmFsIHRvIHRoZSBNVVNZQ0MgdGhhdCB0aGlzIGRlc2NyaXB0b3IKLSAgICAgICAgICAgICAqIGhhcyBiZWVuIHNlcnZpY2VkLiBUaGUgSW50ZXJydXB0IFF1ZXVlIGNhbiB0aGVuIHN0YXJ0IGxvb3NpbmcKKyAgICAgICAgICAgICAqIGhhcyBiZWVuIHNlcnZpY2VkLiBUaGUgSW50ZXJydXB0IFF1ZXVlIGNhbiB0aGVuIHN0YXJ0IGxvc2luZwogICAgICAgICAgICAgICogYXZhaWxhYmxlIGRlc2NyaXB0b3JzIGFuZCBNVVNZQ0MgZXZlbnR1YWxseSBlbmNvdW50ZXJzIGFuZAogICAgICAgICAgICAgICogcmVwb3J0cyB0aGUgSU5URlVMTCBjb25kaXRpb24uICBQZXIgbWFudWFsLCBjaGFuZ2luZyBhbnkgYml0CiAgICAgICAgICAgICAgKiBtYXJrcyBkZXNjcmlwdG9yIGFzIGF2YWlsYWJsZSwgdGh1cyB0aGUgdXNlIG9mIGRpZmZlcmVudApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuaCBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmgKaW5kZXggZDJjOTFlZi4uNjhmMzY2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5oCkBAIC03NCw3ICs3NCw3IEBACiAKICNkZWZpbmUgSU5UX1FVRVVFX1NJWkUgICAgTVVTWUNDX05JUUQKIAotLyogUkFNIGltYWdlIG9mIE1VU1lDQyByZWdpc3RlcnMgbGF5ZWQgb3V0IGFzIGEgQyBzdHJ1Y3R1cmUgKi8KKy8qIFJBTSBpbWFnZSBvZiBNVVNZQ0MgcmVnaXN0ZXJzIGxhaWQgb3V0IGFzIGEgQyBzdHJ1Y3R1cmUgKi8KICAgICBzdHJ1Y3QgbXVzeWNjX2dyb3VwcgogICAgIHsKICAgICAgICAgVklOVDMyICAgICAgdGhwWzMyXTsgICAgLyogVHJhbnNtaXQgSGVhZCBQb2ludGVyIFs1LTI5XSAgICAgICAgICAgKi8KQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgVklOVDMyICAgICAgcGNkOyAgICAgICAgLyogUG9ydCBDb25maWd1cmF0aW9uIERlc2NyaXB0b3IgWzUtMTldICAgKi8KICAgICB9OwogCi0vKiBoYXJkd2FyZSBNVVNZQ0MgcmVnaXN0ZXJzIGxheWVkIG91dCBhcyBhIEMgc3RydWN0dXJlICovCisvKiBoYXJkd2FyZSBNVVNZQ0MgcmVnaXN0ZXJzIGxhaWQgb3V0IGFzIGEgQyBzdHJ1Y3R1cmUgKi8KICAgICBzdHJ1Y3QgbXVzeWNjX2dsb2JhbHIKICAgICB7CiAgICAgICAgIFZJTlQzMiAgICAgIGdicDsgICAgICAgIC8qIEdyb3VwIEJhc2UgUG9pbnRlciAgICAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3BtY2M0X2RlZnMuaCBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvcG1jYzRfZGVmcy5oCmluZGV4IDE4NjM0N2IuLmEzOTUwNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvcG1jYzRfZGVmcy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvcG1jYzRfZGVmcy5oCkBAIC01NCw4ICs1NCw4IEBACiAjZGVmaW5lIE1VU1lDQ19NVFUgICAgICAgICAgMjA0OCAgLyogZGVmYXVsdCAqLwogI2RlZmluZSBNVVNZQ0NfVFhERVNDX01JTiAgIDEwICAgIC8qIEhETEMgbW9kZSBkZWZhdWx0ICovCiAjZGVmaW5lIE1VU1lDQ19SWERFU0NfTUlOICAgMTggICAgLyogSERMQyBtb2RlIGRlZmF1bHQgKi8KLSNkZWZpbmUgTVVTWUNDX1RYREVTQ19UUkFOUyA0ICAgICAvKiBUcmFuc3BhcmVudCBtb2RlIG1pbnVtdW0gIyBvZiBUWCBkZXNjcmlwdG9ycyAqLwotI2RlZmluZSBNVVNZQ0NfUlhERVNDX1RSQU5TIDEyICAgIC8qIFRyYW5zcGFyZW50IG1vZGUgbWludW11bSAjIG9mIFJYIGRlc2NyaXB0b3JzICovCisjZGVmaW5lIE1VU1lDQ19UWERFU0NfVFJBTlMgNCAgICAgLyogVHJhbnNwYXJlbnQgbW9kZSBtaW5pbXVtICMgb2YgVFggZGVzY3JpcHRvcnMgKi8KKyNkZWZpbmUgTVVTWUNDX1JYREVTQ19UUkFOUyAxMiAgICAvKiBUcmFuc3BhcmVudCBtb2RlIG1pbmltdW0gIyBvZiBSWCBkZXNjcmlwdG9ycyAqLwogCiAjZGVmaW5lIE1BWF9ERUZBVUxUX0lGUUxFTiAgMzIgICAgLyogbmV0d29yayBxbGVuICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlY3JjLmMgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZWNyYy5jCmluZGV4IDUxMjMyOTQuLjNmM2NkNjBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZWNyYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlY3JjLmMKQEAgLTk1LDcgKzk1LDcgQEAKIAogICAgIC8qCiAgICAgICogaWYgdGFibGUgbm90IHlldCBjcmVhdGVkLCBkbyBzby4gRG9uJ3QgY2FyZSBhYm91dCAiZXh0cmEiIHRpbWUKLSAgICAgKiBjaGVja2luZyB0aGlzIGV2ZXJ5dGltZSBzYmVDcmMoKSBpcyBjYWxsZWQsIHNpbmNlIENSQyBjYWxjdWxhdGlvbnMgYXJlCisgICAgICogY2hlY2tpbmcgdGhpcyBldmVyeSB0aW1lIHNiZUNyYygpIGlzIGNhbGxlZCwgc2luY2UgQ1JDIGNhbGN1bGF0aW9ucyBhcmUKICAgICAgKiBhbHJlYWR5IHRpbWUgY29uc3VtaW5nCiAgICAgICovCiAgICAgaWYgKCFjcmNUYWJsZUluaXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZXByb2MuYyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlcHJvYy5jCmluZGV4IDcwYjliMzMuLmY0MjUzMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlcHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlcHJvYy5jCkBAIC0yMzksNyArMjM5LDcgQEAKICAgICAgKi8KIAogI2lmIDEKLSAgICAvKiAjNCAtIGludGVwcmV0YXRpb24gb2YgYWJvdmUgPSBzZXQgRU9GLCByZXR1cm4gbGVuICovCisgICAgLyogIzQgLSBpbnRlcnByZXRhdGlvbiBvZiBhYm92ZSA9IHNldCBFT0YsIHJldHVybiBsZW4gKi8KICAgICAqZW9mID0gMTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9hZGRyZXNzX21hcC5oIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfYWRkcmVzc19tYXAuaAppbmRleCBlNmM4Y2IzLi40MjVlOTI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9hZGRyZXNzX21hcC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2FkZHJlc3NfbWFwLmgKQEAgLTg1Niw3ICs4NTYsNyBAQAogICovCiAKIC8qCi0gKiBzdHJ1Y3R1cmUgZm9yIHNwYWNlIGF2YWlsaWFibGUgcmVnIGluIHJ4bWFjIGFkZHJlc3MgbWFwLgorICogc3RydWN0dXJlIGZvciBzcGFjZSBhdmFpbGFibGUgcmVnIGluIHJ4bWFjIGFkZHJlc3MgbWFwLgogICogbG9jYXRlZCBhdCBhZGRyZXNzIDB4NDA5NAogICoKICAqIDMxLTE3OiByZXNlcnZlZApAQCAtMTAzMSw3ICsxMDMxLDcgQEAKICAqIDMxOiByZXNldCBNSUkgbWdtdAogICogMzAtNjogdW51c2VkCiAgKiA1OiBzY2FuIGF1dG8gaW5jcmVtZW50Ci0gKiA0OiBwcmVhbWJsZSBzdXByZXNzCisgKiA0OiBwcmVhbWJsZSBzdXBwcmVzcwogICogMzogdW5kZWZpbmVkCiAgKiAyLTA6IG1nbXQgY2xvY2sgcmVzZXQKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9waHkuaAppbmRleCA3ODM0OWFkLi45NDZjMGM1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmgKQEAgLTQ2OCw3ICs0NjgsNyBAQAogI2RlZmluZSBUUlVFUEhZX0FORUdfQ09NUExFVEUgICAgICAgICAgIDEKICNkZWZpbmUgVFJVRVBIWV9BTkVHX0RJU0FCTEVEICAgICAgICAgICAyCiAKLS8qIERlZmluZSBkdXBsZXggYWR2ZXJ0aXNtZW50IGZsYWdzICovCisvKiBEZWZpbmUgZHVwbGV4IGFkdmVydGlzZW1lbnQgZmxhZ3MgKi8KICNkZWZpbmUgVFJVRVBIWV9BRFZfRFVQTEVYX05PTkUgICAgICAgICAweDAwCiAjZGVmaW5lIFRSVUVQSFlfQURWX0RVUExFWF9GVUxMICAgICAgICAgMHgwMQogI2RlZmluZSBUUlVFUEhZX0FEVl9EVVBMRVhfSEFMRiAgICAgICAgIDB4MDIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9yeC5jCmluZGV4IDMzOTEzNmYuLmZjNmJkNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcnguYwpAQCAtMTIyLDcgKzEyMiw3IEBACiAJICogbnVtYmVyIG9mIGVudHJpZXMgaW4gRkJSMS4KIAkgKgogCSAqIEZCUjEgaG9sZHMgImxhcmdlIiBmcmFtZXMsIEZCUjAgaG9sZHMgInNtYWxsIiBmcmFtZXMuICBJZiBGQlIxCi0JICogZW50cmllcyBhcmUgaHVnZSBpbiBvcmRlciB0byBhY2NvbW9kYXRlIGEgImp1bWJvIiBmcmFtZSwgdGhlbiBpdAorCSAqIGVudHJpZXMgYXJlIGh1Z2UgaW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgYSAianVtYm8iIGZyYW1lLCB0aGVuIGl0CiAJICogd2lsbCBoYXZlIGxlc3MgZW50cmllcy4gIENvbnZlcnNlbHksIEZCUjEgd2lsbCBub3cgYmUgcmVsaWVkIHVwb24KIAkgKiB0byBjYXJyeSBtb3JlICJub3JtYWwiIGZyYW1lcywgdGh1cyBpdCdzIGVudHJ5IHNpemUgYWxzbyBpbmNyZWFzZXMKIAkgKiBhbmQgdGhlIG51bWJlciBvZiBlbnRyaWVzIGdvZXMgdXAgdG9vIChzaW5jZSBpdCBub3cgY2FycmllcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaXNyLmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuYwppbmRleCBjZTRkOTMwLi5mNzE2ZTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuYwpAQCAtNDY2LDcgKzQ2Niw3IEBACiAJCS8qIEhhbmRsZSBTTFYgVGltZW91dCBJbnRlcnJ1cHQgKi8KIAkJaWYgKHN0YXR1cyAmIEVUX0lOVFJfU0xWX1RJTUVPVVQpIHsKIAkJCS8qCi0JCQkgKiBUaGlzIG1lYW5zIGEgdGltZW91dCBoYXMgb2NjdXJlZCBvbiBhIHJlYWQgb3IKKwkJCSAqIFRoaXMgbWVhbnMgYSB0aW1lb3V0IGhhcyBvY2N1cnJlZCBvbiBhIHJlYWQgb3IKIAkJCSAqIHdyaXRlIHJlcXVlc3QgdG8gb25lIG9mIHRoZSBKQUdDb3JlIHJlZ2lzdGVycy4gVGhlCiAJCQkgKiBHbG9iYWwgUmVzb3VyY2VzIGJsb2NrIGhhcyB0ZXJtaW5hdGVkIHRoZSByZXF1ZXN0CiAJCQkgKiBhbmQgb24gYSByZWFkIHJlcXVlc3QsIHJldHVybmVkIGEgImZha2UiIHZhbHVlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfbmV0ZGV2LmMgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9uZXRkZXYuYwppbmRleCAwYzI5OGNhLi5iMjViYWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9uZXRkZXYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9uZXRkZXYuYwpAQCAtNDE1LDcgKzQxNSw3IEBACiAJICovCiAJUGFja2V0RmlsdGVyID0gYWRhcHRlci0+UGFja2V0RmlsdGVyOwogCi0JLyogQ2xlYXIgdGhlICdtdWx0aWNhc3QnIGZsYWcgbG9jYWxseTsgYmVjdWFzZSB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUKKwkvKiBDbGVhciB0aGUgJ211bHRpY2FzdCcgZmxhZyBsb2NhbGx5OyBiZWNhdXNlIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZQogCSAqIGZsYWcgdG8gY2hlY2sgbXVsdGljYXN0LCBhbmQgbXVsdGlwbGUgbXVsdGljYXN0IGFkZHJlc3NlcyBjYW4gYmUKIAkgKiBzZXQsIHRoaXMgaXMgdGhlIGVhc2llc3Qgd2F5IHRvIGRldGVybWluZSBpZiBtb3JlIHRoYW4gb25lCiAJICogbXVsdGljYXN0IGFkZHJlc3MgaXMgYmVpbmcgc2V0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9kZXYuaCBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZGV2LmgKaW5kZXggNGE4OWJkMS4uMGI2M2YwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9kZXYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2Rldi5oCkBAIC0zMCw3ICszMCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWFkX3JlZwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHZhbHVlIG9mIGEgZ2l2ZW4gQVNJQyByZWdpc3Rlci4KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgdmFsdWUgb2YgYSBnaXZlbiBBU0lDIHJlZ2lzdGVyLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgIG9mZnNldCAtIEFTSUMgcmVnaXN0ZXIgb2Zmc2V0CkBAIC00OSw3ICs0OSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF93cml0ZV9yZWcKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHZhbHVlIGZvciBhIGdpdmVuIEFTSUMgcmVnaXN0ZXIuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gQVNJQyByZWdpc3Rlci4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgICBvZmZzZXQgLSBBU0lDIHJlZ2lzdGVyIG9mZnNldApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9ody5jIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9ody5jCmluZGV4IGZmNjkxZDkuLmVlYjdkZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfaHcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2h3LmMKQEAgLTkwLDcgKzkwLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2FzaWNfcmVhZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEFTSUMKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgQVNJQwogLy8gICAgICAgICAgICAgcmVnaXN0ZXIuCiAvLyBJbnB1dDoKIC8vICAgIGRldiAtIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZQpAQCAtMTA3LDcgKzEwNyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9hc2ljX3dyaXRlCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEFTSUMKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEFTSUMKIC8vICAgICAgICAgICAgIHJlZ2lzdGVyLgogLy8gSW5wdXQ6CiAvLyAgICBkZXYgLSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTEyNCw3ICsxMjQsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVhZF9maWZvX2xlbgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIEFTSUMgVXBsaW5rIEZJRk8gc3RhdHVzIHJlZ2lzdGVyCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIEFTSUMgVXBsaW5rIEZJRk8gc3RhdHVzIHJlZ2lzdGVyCiAvLyAgICAgICAgICAgICB3aGljaCB3aWxsIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyBpbiB0aGUgVXBsaW5rIEZJRk8uCiAvLyAgICAgICAgICAgICBTaXh0ZWVuIGJ5dGVzIGFyZSBzdWJ0cmFjdGVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBU0lDIGRvZXMgbm90CiAvLyAgICAgICAgICAgICByZWFjaCBpdHMgdGhyZXNob2xkLgpAQCAtMTQ4LDcgKzE0OCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWFkX2RwcmFtCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCiAvLyAgICAgICAgICAgICAoRWxlY3RyYWJ1enogQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMTc1LDcgKzE3NSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF93cml0ZV9kcHJhbQotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KIC8vICAgICAgICAgICAgIChFbGVjdHJhYnV6eiBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0yMDEsNyArMjAxLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3JlYWRfZHByYW1fbWFnXzE2Ci0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCiAvLyAgICAgICAgICAgICAoTWFnbmVtaXRlIEFTSUMgb25seSkKIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTIzMyw3ICsyMzMsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfd3JpdGVfZHByYW1fbWFnXzE2Ci0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgd3JpdGUgdG8gYSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKE1hZ25lbWl0ZSBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0yNjMsNyArMjYzLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3JlYWRfZHByYW1fbWFnXzMyCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCiAvLyAgICAgICAgICAgICAoTWFnbmVtaXRlIEFTSUMgb25seSkKIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTI5MCw3ICsyOTAsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfd3JpdGVfZHByYW1fbWFnXzMyCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgd3JpdGUgdG8gYSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKE1hZ25lbWl0ZSBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0zMTUsNyArMzE1LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2VuYWJsZV9pbnRlcnJ1cHRzCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgZW5hYmxlIGludGVycnVwdHMgYmFzZSBvbiB0aGUgY3VycmVudCBpbnRlcnJ1cHQgbWFzay4KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgZW5hYmxlIGludGVycnVwdHMgYmFzZSBvbiB0aGUgY3VycmVudCBpbnRlcnJ1cHQgbWFzay4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vIE91dHB1dDoKQEAgLTM0MCw3ICszNDAsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfZGlzYWJsZV9pbnRlcnJ1cHRzCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGlzYWJsZSBhbGwgaW50ZXJydXB0cy4KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGlzYWJsZSBhbGwgaW50ZXJydXB0cy4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vIE91dHB1dDoKQEAgLTM2NCw3ICszNjQsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVzZXRfYXNpYwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIENhcmQgU2VydmljZSBmdW5jdGlvbiB0byByZXNldCB0aGUKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2FsbCB0aGUgQ2FyZCBTZXJ2aWNlIGZ1bmN0aW9uIHRvIHJlc2V0IHRoZQogLy8gICAgICAgICAgICAgQVNJQy4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTQwOCw3ICs0MDgsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVzZXRfY2FyZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0IHRoZSBjYXJkCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0IHRoZSBjYXJkCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyBPdXRwdXQ6CkBAIC01NzEsNyArNTcxLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2Noa2NhcmQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgZGV2aWNlIGlzIHByZXNlbnRseSBhdmFpbGFibGUgb24KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50bHkgYXZhaWxhYmxlIG9uCiAvLyAgICAgICAgICAgICB0aGUgc3lzdGVtLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtNjA3LDcgKzYwNyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9oYmNoawotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGhlYXJ0IGJlYXQgY2hlY2sgb2YgdGhlIERTUCBhcworLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBwZXJmb3JtIHRoZSBoZWFydCBiZWF0IGNoZWNrIG9mIHRoZSBEU1AgYXMKIC8vICAgICAgICAgICAgIHdlbGwgYXMgdGhlIEFTSUMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC04MjgsNyArODI4LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3NlbmRfY21kCi0vLyBEZXNjcmlwdG9uOgorLy8gRGVzY3JpcHRpb246CiAvLyBJbnB1dDoKIC8vIE91dHB1dDoKIC8vCkBAIC05MDgsNyArOTA4LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3JlY2VpdmVfY21kCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCBhIG1lc3NhZ2UgZnJvbSB0aGUgZHByYW0gYXJlYS4KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCBhIG1lc3NhZ2UgZnJvbSB0aGUgZHByYW0gYXJlYS4KIC8vIElucHV0OgogLy8gICAgZGV2IC0gbmV0d29yayBkZXZpY2Ugc3RydWN0dXJlCiAvLyAgICBwYnVmZmVyIC0gY2FsbGVyIHN1cHBseSBhZGRyZXNzIHRvIGJ1ZmZlcgpAQCAtMTAwMyw3ICsxMDAzLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Byb2NfZHJ2bXNnCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcHJvY2VzcyB0aGUgdmFyaW91cyBkcml2ZXIgbWVzc2FnZXMuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHByb2Nlc3MgdGhlIHZhcmlvdXMgZHJpdmVyIG1lc3NhZ2VzLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgIHBueHRwaCAtIHBvaW50ZXIgdG8gbmV4dCBwc2V1ZG8gaGVhZGVyCkBAIC0xMjg1LDcgKzEyODUsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcGFyc2VfZHByYW1fbXNnCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcGFyc2UgdGhlIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB0aGUgRFNQCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHBhcnNlIHRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIERTUAogLy8gICAgICAgICAgICAgdmlhIHRoZSBEUFJBTSBpbnRlcmZhY2UuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0xNDQyLDcgKzE0NDIsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfZmx1c2hfZmlmbwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGZsdXNoIG9uZSBwYWNrZXQgZnJvbSB0aGUgZG93bmxpbmsKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmx1c2ggb25lIHBhY2tldCBmcm9tIHRoZSBkb3dubGluawogLy8gICAgICAgICAgICAgRklGTy4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMTU4Nyw3ICsxNTg3LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2NvcHlfdXBfcGt0Ci0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcHVsbCBGbGFyaW9uIHBhY2tldHMgb3V0IG9mIHRoZSBEb3dubGluaworLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBwdWxsIEZsYXJpb24gcGFja2V0cyBvdXQgb2YgdGhlIERvd25saW5rCiAvLyAgICAgICAgICAgICBGSUZPIGFuZCBjb252ZXJ0IGl0IHRvIGFuIGV0aGVybmV0IHBhY2tldC4gIFRoZSBldGhlcm5ldCBwYWNrZXQgd2lsbAogLy8gICAgICAgICAgICAgdGhlbiBiZSBkZWxpdmVyIHRvIHRoZSBUQ1AvSVAgc3RhY2suCiAvLyBJbnB1dDoKQEAgLTE3NzMsNyArMTc3Myw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jb3B5X2Rvd25fcGt0Ci0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGNvbnZlcnQgaXQgdG8KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGNvbnZlcnQgaXQgdG8KIC8vICAgICAgICAgICAgIGEgRmxhcmlvbiBwYWNrZXQgcHJpb3IgdG8gc2VuZGluZyBpdCB0byB0aGUgQVNJQyBEb3dubGluawogLy8gICAgICAgICAgICAgRklGTy4KIC8vIElucHV0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9kb3dubG9hZC5jIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9kb3dubG9hZC5jCmluZGV4IDhlNjIyNDIuLjE5NzJiNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfZG93bmxvYWQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2Rvd25sb2FkLmMKQEAgLTQ4OCw3ICs0ODgsNyBAQAogLy8gUGFyYW1ldGVyczogIHN0cnVjdCBmdDEwMDBfZGV2aWNlICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgICAgICAgICAgICB1MTYgKipwVXNGaWxlIC0gRFNQIGltYWdlIGZpbGUgcG9pbnRlciBpbiB1MTYKIC8vICAgICAgICAgICAgICB1OCAgKipwVWNGaWxlIC0gRFNQIGltYWdlIGZpbGUgcG9pbnRlciBpbiB1OAotLy8gICAgICAgICAgICAgIGxvbmcgICB3b3JkX2xlbmd0aCAtIGxlbmdodCBvZiB0aGUgYnVmZmVyIHRvIGJlIHdyaXR0ZW4KKy8vICAgICAgICAgICAgICBsb25nICAgd29yZF9sZW5ndGggLSBsZW5ndGggb2YgdGhlIGJ1ZmZlciB0byBiZSB3cml0dGVuCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gRFBSQU0KIC8vCiAvLyBSZXR1cm5zOiAgICAgU1RBVFVTX1NVQ0NFU1MgLSBzdWNjZXNzCkBAIC02MjgsNyArNjI4LDcgQEAKIC8vIFBhcmFtZXRlcnM6ICBzdHJ1Y3QgZnQxMDAwX2RldmljZSAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyAgICAgICAgICAgICAgdTE2ICoqcFVzRmlsZSAtIERTUCBpbWFnZSBmaWxlIHBvaW50ZXIgaW4gdTE2CiAvLyAgICAgICAgICAgICAgdTggICoqcFVjRmlsZSAtIERTUCBpbWFnZSBmaWxlIHBvaW50ZXIgaW4gdTgKLS8vICAgICAgICAgICAgICBsb25nICAgd29yZF9sZW5ndGggLSBsZW5naHQgb2YgdGhlIGJ1ZmZlciB0byBiZSB3cml0dGVuCisvLyAgICAgICAgICAgICAgbG9uZyAgIHdvcmRfbGVuZ3RoIC0gbGVuZ3RoIG9mIHRoZSBidWZmZXIgdG8gYmUgd3JpdHRlbgogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIERQUkFNCiAvLwogLy8gUmV0dXJuczogICAgIFNUQVRVU19TVUNDRVNTIC0gc3VjY2VzcwpAQCAtODE3LDcgKzgxNyw3IEBACiAJCQkJCQkgKiBFcnJvciwgYmV5b25kIGJvb3QgY29kZSByYW5nZS4KIAkJCQkJCSAqLwogCQkJCQkJREVCVUcKLQkJCQkJCSAgICAoIkZUMTAwMDpkb3dubG9hZDpEb3dubG9hZCBlcnJvcjogUmVxdWVzdGVkIGxlbj0lZCBleGNlZWRzIEJPT1QgY29kZSBib3VuZHJ5LlxuIiwKKwkJCQkJCSAgICAoIkZUMTAwMDpkb3dubG9hZDpEb3dubG9hZCBlcnJvcjogUmVxdWVzdGVkIGxlbj0lZCBleGNlZWRzIEJPT1QgY29kZSBib3VuZGFyeS5cbiIsCiAJCQkJCQkgICAgIChpbnQpd29yZF9sZW5ndGgpOwogCQkJCQkJc3RhdHVzID0gU1RBVFVTX0ZBSUxVUkU7CiAJCQkJCQlicmVhazsKQEAgLTk1MCw3ICs5NTAsNyBAQAogCQkJCQkJICogRXJyb3IsIGJleW9uZCBib290IGNvZGUgcmFuZ2UuCiAJCQkJCQkgKi8KIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBEU1AgY29kZSBib3VuZHJ5LlxuIiwKKwkJCQkJCSAgICAoIkZUMTAwMDpkb3dubG9hZDpEb3dubG9hZCBlcnJvcjogUmVxdWVzdGVkIGxlbj0lZCBleGNlZWRzIERTUCBjb2RlIGJvdW5kYXJ5LlxuIiwKIAkJCQkJCSAgICAgKGludCl3b3JkX2xlbmd0aCk7CiAJCQkJCQlzdGF0dXMgPSBTVEFUVVNfRkFJTFVSRTsKIAkJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9ody5jIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9ody5jCmluZGV4IDc4ZGNkNDkuLjY4NGU2OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaHcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2h3LmMKQEAgLTU4NSw3ICs1ODUsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVzZXRfYXNpYwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIENhcmQgU2VydmljZSBmdW5jdGlvbiB0byByZXNldCB0aGUKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2FsbCB0aGUgQ2FyZCBTZXJ2aWNlIGZ1bmN0aW9uIHRvIHJlc2V0IHRoZQogLy8gICAgICAgICAgICAgQVNJQy4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTYyNiw3ICs2MjYsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVzZXRfY2FyZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0IHRoZSBjYXJkCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2V0IHRoZSBjYXJkCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyBPdXRwdXQ6CkBAIC05MTcsNyArOTE3LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2NvcHlfZG93bl9wa3QKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGV0aGVybmV0IHBhY2tldCBhbmQgY29udmVydCBpdCB0bworLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGV0aGVybmV0IHBhY2tldCBhbmQgY29udmVydCBpdCB0bwogLy8gICAgICAgICAgICAgYSBGbGFyaW9uIHBhY2tldCBwcmlvciB0byBzZW5kaW5nIGl0IHRvIHRoZSBBU0lDIERvd25saW5rCiAvLyAgICAgICAgICAgICBGSUZPLgogLy8gSW5wdXQ6CkBAIC0xMDc1LDEwICsxMDc1LDEwIEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jb3B5X3VwX3BrdAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYSBwYWNrZXQgZnJvbSB0aGUgRklGTyB1cCBsaW5rIGFuZAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlIGEgcGFja2V0IGZyb20gdGhlIEZJRk8gdXAgbGluayBhbmQKIC8vICAgICAgICAgICAgIGNvbnZlcnQgaXQgaW50byBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGRlbGl2ZXIgaXQgdG8gdGhlIElQIHN0YWNrCiAvLyBJbnB1dDoKLS8vICAgICB1cmIgLSB0aGUgcmVjZXZpbmcgdXNiIHVyYgorLy8gICAgIHVyYiAtIHRoZSByZWNlaXZpbmcgdXNiIHVyYgogLy8KIC8vIE91dHB1dDoKIC8vICAgICBzdGF0dXMgLSBGQUlMVVJFCkBAIC0xMTgyLDcgKzExODIsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfc3VibWl0X3J4X3VyYgotLy8gRGVzY3JpcHRvbjogdGhlIHJlY2VpdmluZyBmdW5jdGlvbiBvZiB0aGUgbmV0d29yayBkcml2ZXIKKy8vIERlc2NyaXB0aW9uOiB0aGUgcmVjZWl2aW5nIGZ1bmN0aW9uIG9mIHRoZSBuZXR3b3JrIGRyaXZlcgogLy8KIC8vIElucHV0OgogLy8gICAgIGluZm8gLSBhIHByaXZhdGUgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBkZXZpY2UgaW5mb3JtYXRpb24KQEAgLTEzMTYsNyArMTMxNiw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jaGtjYXJkCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50bHkgYXZhaWxhYmxlIG9uCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudGx5IGF2YWlsYWJsZSBvbgogLy8gICAgICAgICAgICAgdGhlIHN5c3RlbS4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTEzNjMsNyArMTM2Myw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWNlaXZlX2NtZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgYSBtZXNzYWdlIGZyb20gdGhlIGRwcmFtIGFyZWEuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgYSBtZXNzYWdlIGZyb20gdGhlIGRwcmFtIGFyZWEuCiAvLyBJbnB1dDoKIC8vICAgIGRldiAtIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgcGJ1ZmZlciAtIGNhbGxlciBzdXBwbHkgYWRkcmVzcyB0byBidWZmZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaW9jdGwuaCBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaW9jdGwuaAppbmRleCAzZjcyZDViLi42YThhMTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2lvY3RsLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9pb2N0bC5oCkBAIC01NSw3ICs1NSw3IEBACiAgICB1bnNpZ25lZCBjaGFyICAgICBzZXFfbnVtOyAgICAgICAgICAvL3NlcXVlbmNlIG51bWJlcgogICAgdW5zaWduZWQgY2hhciAgICAgcnN2ZDI7ICAgICAgICAgICAgLy9yZXNlcnZlZAogICAgdW5zaWduZWQgc2hvcnQgICAgcW9zX2NsYXNzOyAgICAgICAgLy9RdWFsaXR5IG9mIFNlcnZpY2UgY2xhc3MgKE5vdCBhcHBsaWNhYmxlIG9uIE1vYmlsZSkKLSAgIHVuc2lnbmVkIHNob3J0ICAgIGNoZWNrc3VtOyAgICAgICAgIC8vUHN1ZWRvIGhlYWRlciBjaGVja3N1bQorICAgdW5zaWduZWQgc2hvcnQgICAgY2hlY2tzdW07ICAgICAgICAgLy9Qc2V1ZG8gaGVhZGVyIGNoZWNrc3VtCiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0lPQ1RMX0dFVF9WRVIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfdXNiLmggYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX3VzYi5oCmluZGV4IGUwNDdjMDMuLmYyZWNiM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfdXNiLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF91c2IuaApAQCAtMzY0LDcgKzM2NCw3IEBACiAKICNkZWZpbmUgSVNSX0VNUFRZCQkJKHU4KTB4MDAgCSAvLyBubyBiaXRzIHNldCBpbiBJU1IKIAotI2RlZmluZSBJU1JfRE9PUkJFTExfQUNLCSh1OCkweDAxCQkgLy8gIHRoZSBkb29yYmVsbCBpIHNlbnQgaGFzIGJlZW4gcmVjaWV2ZWQuCisjZGVmaW5lIElTUl9ET09SQkVMTF9BQ0sJKHU4KTB4MDEJCSAvLyAgdGhlIGRvb3JiZWxsIGkgc2VudCBoYXMgYmVlbiByZWNlaXZlZC4KIAogI2RlZmluZSBJU1JfRE9PUkJFTExfUEVORAkodTgpMHgwMiAJIC8vICBkb29yYmVsbCBmb3IgbWUKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvZ2VuZXJpY19zZXJpYWwuYwppbmRleCA0NjY5ODhkLi5mMjlkZGE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvZ2VuZXJpY19zZXJpYWwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvZ2VuZXJpY19zZXJpYWwuYwpAQCAtMTEzLDcgKzExMyw3IEBACiAKIAkJYyA9IGNvdW50OwogIAotCQkvKiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB3ZSAiT1dOIiB0aGUgImhlYWQiLiBOb29uZSBlbHNlIGNhbiAKKwkJLyogVGhpcyBpcyBzYWZlIGJlY2F1c2Ugd2UgIk9XTiIgdGhlICJoZWFkIi4gTm8gb25lIGVsc2UgY2FuIAogCQkgICBjaGFuZ2UgdGhlICJoZWFkIjogd2Ugb3duIHRoZSBwb3J0X3dyaXRlX211dGV4LiAqLwogCQkvKiBEb24ndCBvdmVycnVuIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqLwogCQl0ID0gU0VSSUFMX1hNSVRfU0laRSAtIHBvcnQtPnhtaXRfaGVhZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vbWFwLmggYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL21hcC5oCmluZGV4IDgzNjY5NzguLjI4YTY2MTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vbWFwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9tYXAuaApAQCAtODcsNyArODcsNyBAQAogKiogVGhlIFRvcG9sb2d5IGFycmF5IGNvbnRhaW5zIHRoZSBJRCBvZiB0aGUgdW5pdCBjb25uZWN0ZWQgdG8gZWFjaCBvZiB0aGUKICoqIGZvdXIgbGlua3Mgb24gdGhpcyB1bml0LiBUaGUgZW50cnkgd2lsbCBiZSAweEZGRkYgaWYgTk9USElORyBpcyBjb25uZWN0ZWQKICoqIHRvIHRoZSBsaW5rLCBvciB3aWxsIGJlIDB4RkYwMCBpZiBhbiBVTktOT1dOIHVuaXQgaXMgY29ubmVjdGVkIHRvIHRoZSBsaW5rLgotKiogVGhlIE5hbWUgZmllbGQgaXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLCB1cHRvIDMxIGNoYXJhY3RlcnMsIGNvbnRhaW5pbmcKKyoqIFRoZSBOYW1lIGZpZWxkIGlzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgdXAgdG8gMzEgY2hhcmFjdGVycywgY29udGFpbmluZwogKiogdGhlICdjdXRlJyBuYW1lIHRoYXQgdGhlIHN5c2FkbWluL3VzZXJzIGtub3cgdGhlIFJUQSBieS4gSXQgaXMgcGVybWlzc2libGUKICoqIGZvciB0aGlzIHN0cmluZyB0byBjb250YWluIGFueSBjaGFyYWN0ZXIgaW4gdGhlIHJhbmdlIFwwNDAgdG8gXDE3NiBpbmNsdXNpdmUuCiAqKiBJbiBwYXJ0aWN1bGFyLCBjdHJsIHNlcXVlbmNlcyBhbmQgREVMICgweDdGLCBcMTc3KSBhcmUgbm90IGFsbG93ZWQuIFRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2Jvb3QuYwppbmRleCBkOTU2ZGQzLi5mZmEwMWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2Jvb3QuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2Jvb3QuYwpAQCAtMTA5LDcgKzEwOSw3IEBACiAJcmlvX2RwcmludGsoUklPX0RFQlVHX0JPT1QsICJEYXRhIGF0IHVzZXIgYWRkcmVzcyAlcFxuIiwgcmJwLT5EYXRhUCk7CiAKIAkvKgotCSAqKiBDaGVjayB0aGF0IHdlIGhhdmUgc2V0IGFzc2lkZSBlbm91Z2ggbWVtb3J5IGZvciB0aGlzCisJICoqIENoZWNrIHRoYXQgd2UgaGF2ZSBzZXQgYXNpZGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhpcwogCSAqLwogCWlmIChyYnAtPkNvdW50ID4gU0lYVFlfRk9VUl9LKSB7CiAJCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiUlRBIEJvb3QgQ29kZSBUb28gTGFyZ2UhXG4iKTsKQEAgLTI5Myw3ICsyOTMsNyBAQAogCQkvKgogCQkgKiogICAgICAgICAgICAgICAgICAgICBTIFQgTyBQICEKIAkJICoqCi0JCSAqKiBVcHRvIHRoaXMgcG9pbnQgdGhlIGNvZGUgaGFzIGJlZW4gZmFpcmx5IHJhdGlvbmFsLCBhbmQgcG9zc2libHkKKwkJICoqIFVwIHRvIHRoaXMgcG9pbnQgdGhlIGNvZGUgaGFzIGJlZW4gZmFpcmx5IHJhdGlvbmFsLCBhbmQgcG9zc2libHkKIAkJICoqIGV2ZW4gc3RyYWlnaHQgZm9yd2FyZC4gV2hhdCBmb2xsb3dzIGlzIGEgcGlsZSBvZiBjcnVkIHRoYXQgd2lsbAogCQkgKiogbWFnaWNhbGx5IHR1cm4gaW50byBzaXggYnl0ZXMgb2YgdHJhbnNwdXRlciBhc3NlbWJsZXIuIE5vcm1hbGx5CiAJCSAqKiB5b3Ugd291bGQgZXhwZWN0IGFuIGFycmF5IG9yIHNvbWV0aGluZywgYnV0LCBiZWluZyBtZSwgSSBoYXZlCkBAIC00MTksNyArNDE5LDcgQEAKIAkJcmlvX2RwcmludGsoUklPX0RFQlVHX0JPT1QsICJTZXQgY29udHJvbCBwb3J0XG4iKTsKIAogCQkvKgotCQkgKiogTm93LCB3YWl0IGZvciB1cHRvIGZpdmUgc2Vjb25kcyBmb3IgdGhlIFRwIHRvIHNldHVwIHRoZSBwYXJtbWFwCisJCSAqKiBOb3csIHdhaXQgZm9yIHVwIHRvIGZpdmUgc2Vjb25kcyBmb3IgdGhlIFRwIHRvIHNldHVwIHRoZSBwYXJtbWFwCiAJCSAqKiBwb2ludGVyOgogCQkgKi8KIAkJZm9yICh3YWl0X2NvdW50ID0gMDsgKHdhaXRfY291bnQgPCBwLT5SSU9Db25mLlN0YXJ0dXBUaW1lKSAmJiAocmVhZHcoJkhvc3RQLT5fX1Bhcm1NYXBSKSA9PSBPbGRQYXJtTWFwKTsgd2FpdF9jb3VudCsrKSB7CkBAIC00NzUsNyArNDc1LDcgQEAKIAogCQkvKgogCQkgKiogbm93IHdhaXQgZm9yIHRoZSBjYXJkIHRvIHNldCBhbGwgdGhlIHBhcm1tYXAtPlhYWCBzdHVmZgotCQkgKiogdGhpcyBpcyBhIHdhaXQgb2YgdXB0byB0d28gc2Vjb25kcy4uLi4KKwkJICoqIHRoaXMgaXMgYSB3YWl0IG9mIHVwIHRvIHR3byBzZWNvbmRzLi4uLgogCQkgKi8KIAkJcmlvX2RwcmludGsoUklPX0RFQlVHX0JPT1QsICJMb29raW5nIGZvciBpbml0X2RvbmUgLSAlZCB0aWNrc1xuIiwgcC0+UklPQ29uZi5TdGFydHVwVGltZSk7CiAJCUhvc3RQLT50aW1lb3V0X2lkID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvY21kLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2NtZC5jCmluZGV4IGYxMjEzNTcuLjYxZWZkNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvY21kLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9jbWQuYwpAQCAtODYzLDcgKzg2Myw3IEBACiAJICoqIGJlaW5nIHRyYW5zZmVycmVkIGZyb20gdGhlIHdyaXRlIHF1ZXVlIGludG8gdGhlIHRyYW5zbWl0IHBhY2tldHMKIAkgKiogKGFkZF90cmFuc21pdCkgYW5kIG5vIGZ1cnRodXIgdHJhbnNtaXQgaW50ZXJydXB0IHdpbGwgYmUgc2VudCBmb3IgdGhhdAogCSAqKiBkYXRhLiBUaGUgbmV4dCBpbnRlcnJ1cHQgd2lsbCBvY2N1ciB1cCB0byA1MDBtcyBsYXRlciAoUklPSW50ciBpcyBjYWxsZWQKLQkgKiogdHdpY2UgYSBzZWNvbmQgYXMgYSBzYWZ0ZXkgbWVhc3VyZSkuIFRoaXMgd2FzIHRoZSBjYXNlIHdoZW4ga2VybWl0IHdhcworCSAqKiB0d2ljZSBhIHNlY29uZCBhcyBhIHNhZmV0eSBtZWFzdXJlKS4gVGhpcyB3YXMgdGhlIGNhc2Ugd2hlbiBrZXJtaXQgd2FzCiAJICoqIHVzZWQgdG8gc2VuZCBkYXRhIGludG8gYSBSSU8gcG9ydC4gQWZ0ZXIgZWFjaCBwYWNrZXQgd2FzIHNlbnQsIFRDRkxTSAogCSAqKiB3YXMgY2FsbGVkIHRvIGZsdXNoIHRoZSByZWFkIHF1ZXVlIHByZWVtcHRpdmVseS4gUG9ydFAtPkluVXNlIHdhcwogCSAqKiBpbmNyZW1lbnRlZCwgdGhlcmVieSBibG9ja2luZyB0aGUgNiBieXRlIGFja25vd2xlZGdlbWVudCBwYWNrZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvcm91dGUuYyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvcm91dGUuYwppbmRleCBmOWI5MzZhLi44NzU3Mzc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3JvdXRlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9yb3V0ZS5jCkBAIC00NTAsNyArNDUwLDcgQEAKIAkJICoqIHdlIHJlc2V0IHRoZSB1bml0LCBiZWNhdXNlIHdlIGRpZG4ndCBib290IGl0LgogCQkgKiogSG93ZXZlciwgaWYgdGhlIHRhYmxlIGlzIGZ1bGwsIGl0IGNvdWxkIGJlIHRoYXQgd2UgZGlkIGJvb3QKIAkJICoqIHRoaXMgdW5pdCwgYW5kIHNvIHdlIHdvbid0IHJlYm9vdCBpdCwgYmVjYXVzZSBpdCBpc24ndCByZWFsbHkKLQkJICoqIGFsbCB0aGF0IGRpc2FzdGVyb3VzIHRvIGtlZXAgdGhlIG9sZCBiaW5zIGluIG1vc3QgY2FzZXMuIFRoaXMKKwkJICoqIGFsbCB0aGF0IGRpc2FzdHJvdXMgdG8ga2VlcCB0aGUgb2xkIGJpbnMgaW4gbW9zdCBjYXNlcy4gVGhpcwogCQkgKiogaXMgYSByYXRoZXIgdGFja3kgZmVhdHVyZSwgYnV0IHdlIGFyZSBvbiB0aGUgZWRnZSBvZiByZWFsbGl0eQogCQkgKiogaGVyZSwgYmVjYXVzZSB0aGUgaW1wbGljYXRpb24gaXMgdGhhdCBzb21lb25lIGhhcyBjb25uZWN0ZWQKIAkJICoqIDE2K01BWF9FWFRSQV9VTklUUyBvbnRvIG9uZSBob3N0LgpAQCAtNjc4LDcgKzY3OCw3IEBACiAKIAlIb3N0UC0+TWFwcGluZ1tVbml0SWRdLkZsYWdzICY9IH5CRUVOX0hFUkU7CiAKLQkvKiByaW9fZHByaW50KFJJT19ERUJVR19ST1VURSwgKCJVbml0ICVkIERPRVNOVCBLTk9XIFRIRSBIT1NUIVxuIiwgVW5pdElkKSk7ICovCisJLyogcmlvX2RwcmludChSSU9fREVCVUdfUk9VVEUsICgiVW5pdCAlZCBET0VTTidUIEtOT1cgVEhFIEhPU1QhXG4iLCBVbml0SWQpKTsgKi8KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW90dHkuYyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvdHR5LmMKaW5kZXggOGE5MDM5My4uZTdlOTkxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW90dHkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3R0eS5jCkBAIC0xMjQsNyArMTI0LDcgQEAKIAl9CiAKIAkvKgotCSAqKiBHcmFiIHBvaW50ZXIgdG8gdGhlIHBvcnQgc3R1Y3R1cmUKKwkgKiogR3JhYiBwb2ludGVyIHRvIHRoZSBwb3J0IHN0cnVjdHVyZQogCSAqLwogCVBvcnRQID0gcC0+UklPUG9ydHBbU3lzUG9ydF07CS8qIEdldCBjb250cm9sIHN0cnVjICovCiAJcmlvX2RwcmludGsoUklPX0RFQlVHX1RUWSwgIlBvcnRQOiAlcFxuIiwgUG9ydFApOwpAQCAtMTYxLDcgKzE2MSw3IEBACiAJfQogCiAJLyoKLQkgKiogSWYgdGhlIFJUQSBoYXMgbm90IGJvb3RlZCB5ZXQgYW5kIHRoZSB1c2VyIGhhcyBjaG9vc2VuIHRvIGJsb2NrCisJICoqIElmIHRoZSBSVEEgaGFzIG5vdCBib290ZWQgeWV0IGFuZCB0aGUgdXNlciBoYXMgY2hvc2VuIHRvIGJsb2NrCiAJICoqIHVudGlsIHRoZSBSVEEgaXMgcHJlc2VudCB0aGVuIHdlIG11c3Qgc3BpbiBoZXJlIHdhaXRpbmcgZm9yCiAJICoqIHRoZSBSVEEgdG8gYm9vdC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3N4LmMKaW5kZXggMTI5MTQ2Mi4uNGY5NGFhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3N4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3N4LmMKQEAgLTE1OCwxMyArMTU4LDEzIEBACiAgKiBSZWFkeWluZyBmb3IgcmVsZWFzZSBvbiAyLjAueCAoc29ycnkgRGF2aWQsIDEuMDEgYmVjb21lcyAxLjEgZm9yIFJDUykuIAogICoKICAqIFJldmlzaW9uIDAuMTIgIDE5OTkvMDMvMjggMDk6MjA6MTAgIHdvbGZmCi0gKiBGaXhlZCBwcm9ibGVtIGluIDAuMTEsIGNvbnRpbnVlaW5nIGNsZWFudXAuCisgKiBGaXhlZCBwcm9ibGVtIGluIDAuMTEsIGNvbnRpbnVpbmcgY2xlYW51cC4KICAqCiAgKiBSZXZpc2lvbiAwLjExICAxOTk5LzAzLzI4IDA4OjQ2OjQ0ICB3b2xmZgogICogY2xlYW51cC4gTm90IGdvb2QuCiAgKgogICogUmV2aXNpb24gMC4xMCAgMTk5OS8wMy8yOCAwODowOTo0MyAgd29sZmYKLSAqIEZpeGVkIGxvb3NpbmcgY2hhcmFjdGVycyBvbiBjbG9zZS4KKyAqIEZpeGVkIGxvc2luZyBjaGFyYWN0ZXJzIG9uIGNsb3NlLgogICoKICAqIFJldmlzaW9uIDAuOSAgMTk5OS8wMy8yMSAyMjo1MjowMSAgd29sZmYKICAqIFBvcnRlZCBiYWNrIHRvIDIuMi4uLi4gKG1pbm9yIHRoaW5ncykKQEAgLTE1ODgsNyArMTU4OCw3IEBACiAjZGVmaW5lIFIwCQlpZiAocmVhZF9zeF9ieXRlKGJvYXJkLCBpKSAhPSAweDU1KSByZXR1cm4gMQogI2RlZmluZSBSMQkJaWYgKHJlYWRfc3hfYnl0ZShib2FyZCwgaSkgIT0gMHhhYSkgcmV0dXJuIDEKIAotLyogVGhpcyBtZW10ZXN0IHRha2VzIGEgaHVtYW4tbm90aWNhYmxlIHRpbWUuIFlvdSBub3JtYWxseSBvbmx5IGRvIGl0CisvKiBUaGlzIG1lbXRlc3QgdGFrZXMgYSBodW1hbi1ub3RpY2VhYmxlIHRpbWUuIFlvdSBub3JtYWxseSBvbmx5IGRvIGl0CiAgICBvbmNlIGEgYm9vdCwgc28gSSBndWVzcyB0aGF0IGl0IGlzIHdvcnRoIGl0LiAqLwogc3RhdGljIGludCBkb19tZW10ZXN0KHN0cnVjdCBzeF9ib2FyZCAqYm9hcmQsIGludCBtaW4sIGludCBtYXgpCiB7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQAogI2RlZmluZSBSMQkJaWYgKHJlYWRfc3hfd29yZChib2FyZCwgaSkgIT0gMHhhYTU1KSByZXR1cm4gMQogCiAjaWYgMAotLyogVGhpcyBtZW10ZXN0IHRha2VzIGEgaHVtYW4tbm90aWNhYmxlIHRpbWUuIFlvdSBub3JtYWxseSBvbmx5IGRvIGl0CisvKiBUaGlzIG1lbXRlc3QgdGFrZXMgYSBodW1hbi1ub3RpY2VhYmxlIHRpbWUuIFlvdSBub3JtYWxseSBvbmx5IGRvIGl0CiAgICBvbmNlIGEgYm9vdCwgc28gSSBndWVzcyB0aGF0IGl0IGlzIHdvcnRoIGl0LiAqLwogc3RhdGljIGludCBkb19tZW10ZXN0X3coc3RydWN0IHN4X2JvYXJkICpib2FyZCwgaW50IG1pbiwgaW50IG1heCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJtLmgKaW5kZXggZmI5YjQyNC4uYTMzOTQwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJtLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJtLmgKQEAgLTEzMSw3ICsxMzEsNyBAQAogCXUzMiBwcmVfYWRkOwkvKiBEZXN0aW5hdGlvbiBmb3JtYXQ6ICovCiAJdTMyIGJhY2tncm91bmQ7CS8qIERlc3RpbmF0aW9uIGFkZCAqLwogCXUzMiBkc3RfYnVmZmVyOwkvKiBEZXN0aW5hdGlvbiBidWZmZXIuIEluZGV4IGludG8gYnVmZmVyX2xpc3QgKi8KLQl1MzIgYXJnMDsJCS8qIFJlbG9jLW9wIGRlcGVuZGFudCAqLworCXUzMiBhcmcwOwkJLyogUmVsb2Mtb3AgZGVwZW5kZW50ICovCiAJdTMyIGFyZzE7CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2Rydi5jCmluZGV4IDQ0Y2QwOTUuLmQwMWQ0NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2Rydi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2Rydi5jCkBAIC01NjEsNyArNTYxLDcgQEAKIAkJa2ZyZWUoZGV2X3ByaXYpOwogCQlkZXYtPmRldl9wcml2YXRlID0gTlVMTDsKIAotCQkvKmRlc3RvcnkgVkJUIGRhdGEqLworCQkvKmRlc3Ryb3kgVkJUIGRhdGEqLwogCQlwc2JfaW50ZWxfZGVzdHJveV9iaW9zKGRldik7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9iaW9zLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9iaW9zLmMKaW5kZXggZjViY2QxMS4uNDhhYzhiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfYmlvcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX2Jpb3MuYwpAQCAtMjcxLDcgKzI3MSw3IEBACiB9CiAKIC8qKgotICogRGVzdG9yeSBhbmQgZnJlZSBWQlQgZGF0YQorICogRGVzdHJveSBhbmQgZnJlZSBWQlQgZGF0YQogICovCiB2b2lkIHBzYl9pbnRlbF9kZXN0cm95X2Jpb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX3Nkdm8uYyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX3Nkdm8uYwppbmRleCA3MzFhNWEyLi4xZDJiYjAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2by5jCkBAIC01NzMsNyArNTczLDcgQEAKIAkvKiBNYWtlIGFsbCBmaWVsZHMgb2YgdGhlICBhcmdzL3JldCB0byB6ZXJvICovCiAJbWVtc2V0KGJ5QXJncywgMCwgc2l6ZW9mKGJ5QXJncykpOwogCi0JLyogRmlsbCB1cCB0aGUgYXJndWVtZW50IHZhbHVlczsgKi8KKwkvKiBGaWxsIHVwIHRoZSBhcmd1bWVudCB2YWx1ZXM7ICovCiAJYnlBcmdzWzBdID0gKHU4KSAoaW4wb3V0cHV0bWFzayAmIDB4RkYpOwogCWJ5QXJnc1sxXSA9ICh1OCkgKChpbjBvdXRwdXRtYXNrID4+IDgpICYgMHhGRik7CiAJYnlBcmdzWzJdID0gKHU4KSAoaW4xb3V0cHV0bWFzayAmIDB4RkYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmggYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvX3JlZ3MuaAppbmRleCBhMWQxNDc1Li5jNzEwN2EzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvX3JlZ3MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvX3JlZ3MuaApAQCAtMjE3LDcgKzIxNyw3IEBACiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAogLyoqCi0gKiBUYWtlcyBhIHN0cnVjdCBwc2JfaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2Ygd2hpY2ggb3V0cHV0cyBhcmUgdGFyZ2V0dGVkIGJ5CisgKiBUYWtlcyBhIHN0cnVjdCBwc2JfaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2Ygd2hpY2ggb3V0cHV0cyBhcmUgdGFyZ2V0ZWQgYnkKICAqIGZ1dHVyZSBvdXRwdXQgY29tbWFuZHMuCiAgKgogICogQWZmZWN0ZWQgY29tbWFuZHMgaW5jbHVlIFNFVF9PVVRQVVRfVElNSU5HU19QQVJUWzEyXSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX3R0bV9mZW5jZV91c2VyLmggYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl90dG1fZmVuY2VfdXNlci5oCmluZGV4IGZjMTNmODkuLjc2MmEwNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX3R0bV9mZW5jZV91c2VyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfdHRtX2ZlbmNlX3VzZXIuaApAQCAtMTMwLDcgKzEzMCw3IEBACiB9OwogCiAvKgotICogSW9jdGwgb2Zmc2V0cyBmcm9tZSBleHRlbnN0aW9uIHN0YXJ0LgorICogSW9jdGwgb2Zmc2V0cyBmcm9tIGV4dGVuc3Rpb24gc3RhcnQuCiAgKi8KIAogI2RlZmluZSBUVE1fRkVOQ0VfU0lHTkFMRUQgMHgwMQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDcudHh0IGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDcudHh0CmluZGV4IDA2YTc2ZGEuLjlkYjFmMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LnR4dAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy50eHQKQEAgLTIsNyArMiw3IEBACiAKIFBldGUgRWJlcmxlaW4gPHBldGVAc2Vuc29yYXkuY29tPgogCi1UaGUgZHJpdmVyIHdhcyBvcmlnbmFsbHkgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCBhbmQgaXMgY3VycmVudGx5IGhvc3RlZCBhdDoKK1RoZSBkcml2ZXIgd2FzIG9yaWdpbmFsbHkgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCBhbmQgaXMgY3VycmVudGx5IGhvc3RlZCBhdDoKIGh0dHA6Ly9uaWtvc2FwaS5vcmcvd2lraS9pbmRleC5waHAvV0lTX0dvNzAwN19MaW51eF9kcml2ZXIKIFRoZSBnbzcwMDcgZmlybXdhcmUgY2FuIGJlIGFjcXVpcmVkIGZyb20gdGhlIHBhY2thZ2Ugb24gdGhlIHNpdGUgYWJvdmUuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9ibGt2c2NfZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvYmxrdnNjX2Rydi5jCmluZGV4IGFmNzg5OTMuLjY4YWQxN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9ibGt2c2NfZHJ2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2Jsa3ZzY19kcnYuYwpAQCAtODk0LDcgKzg5NCw3IEBACiAKIC8qCiAgKiBXZSBicmVhayB0aGUgcmVxdWVzdCBpbnRvIDEgb3IgbW9yZSBibGt2c2NfcmVxdWVzdHMgYW5kIHN1Ym1pdAotICogdGhlbS4gIElmIHdlIGNhbnQgc3VibWl0IHRoZW0gYWxsLCB3ZSBwdXQgdGhlbSBvbiB0aGUKKyAqIHRoZW0uICBJZiB3ZSBjYW4ndCBzdWJtaXQgdGhlbSBhbGwsIHdlIHB1dCB0aGVtIG9uIHRoZQogICogcGVuZGluZ19saXN0LiBUaGUgYmxrdnNjX3JlcXVlc3QoKSB3aWxsIHdvcmsgb24gdGhlIHBlbmRpbmdfbGlzdC4KICAqLwogc3RhdGljIGludCBibGt2c2NfZG9fcmVxdWVzdChzdHJ1Y3QgYmxvY2tfZGV2aWNlX2NvbnRleHQgKmJsa2RldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9jaGFubmVsX21nbXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9odi9jaGFubmVsX21nbXQuYwppbmRleCBiYzAzOTNhLi4wNmI1NzMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvY2hhbm5lbF9tZ210LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2NoYW5uZWxfbWdtdC5jCkBAIC0xNjYsNyArMTY2LDcgQEAKICAqIGZyb20gSHlwZXItVi4gVGhpcyBzdHViIHJlc3BvbmRzIHRvIHRoZSBkZWZhdWx0IG5lZ290aWF0ZSBtZXNzYWdlcwogICogdGhhdCBjb21lIGluIGZvciBldmVyeSBub24gSURFL1NDU0kvTmV0d29yayByZXF1ZXN0LgogICogVGhpcyBiZWhhdmlvciBpcyBub3JtYWxseSBvdmVyd3JpdHRlbiBpbiB0aGUgaHZfdXRpbHMgZHJpdmVyLiBUaGF0Ci0gKiBkcml2ZXIgaGFuZGxlcyByZXF1ZXN0cyBsaWtlIGdyYWNlZnVsbCBzaHV0ZG93biwgaGVhcnRiZWF0cyBldGMuCisgKiBkcml2ZXIgaGFuZGxlcyByZXF1ZXN0cyBsaWtlIGdyYWNlZnVsIHNodXRkb3duLCBoZWFydGJlYXRzIGV0Yy4KICAqCiAgKiBNYWlubHkgdXNlZCBieSBIeXBlci1WIGRyaXZlcnMuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2LmMKaW5kZXggMmQ0OTJhZC4uMGIwNmY0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2LmMKQEAgLTM3LDcgKzM3LDcgQEAKIAogLyoKICAqIHF1ZXJ5X2h5cGVydmlzb3JfcHJlc2VuY2UKLSAqIC0gUXVlcnkgdGhlIGNwdWlkIGZvciBwcmVzZW5zZSBvZiB3aW5kb3dzIGh5cGVydmlzb3IKKyAqIC0gUXVlcnkgdGhlIGNwdWlkIGZvciBwcmVzZW5jZSBvZiB3aW5kb3dzIGh5cGVydmlzb3IKICAqLwogc3RhdGljIGludCBxdWVyeV9oeXBlcnZpc29yX3ByZXNlbmNlKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfYXBpLmggYi9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfYXBpLmgKaW5kZXggNzExNGZjZS4uNDNhNzIyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2FwaS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odl9hcGkuaApAQCAtNTMsMTQgKzUzLDE0IEBACiAKIC8qCiAgKiBIVl9TVEFUVVNfSU5WQUxJRF9BTElHTk1FTlQKLSAqIFRoZSBoeXBlcnZpc29yIGNvdWxkIG5vdCBwZXJmb3JtIHRoZSBvcGVyYXRpb24gYmVhY3VzZSBhIHBhcmFtZXRlciBoYXMgYW4KKyAqIFRoZSBoeXBlcnZpc29yIGNvdWxkIG5vdCBwZXJmb3JtIHRoZSBvcGVyYXRpb24gYmVjYXVzZSBhIHBhcmFtZXRlciBoYXMgYW4KICAqIGludmFsaWQgYWxpZ25tZW50LgogICovCiAjZGVmaW5lIEhWX1NUQVRVU19JTlZBTElEX0FMSUdOTUVOVAkJCSgodTE2KTB4MDAwNCkKIAogLyoKICAqIEhWX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUgotICogVGhlIGh5cGVydmlzb3IgY291bGQgbm90IHBlcmZvcm0gdGhlIG9wZXJhdGlvbiBiZWFjdXNlIGFuIGludmFsaWQgcGFyYW1ldGVyCisgKiBUaGUgaHlwZXJ2aXNvciBjb3VsZCBub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGJlY2F1c2UgYW4gaW52YWxpZCBwYXJhbWV0ZXIKICAqIHdhcyBzcGVjaWZpZWQuCiAgKi8KICNkZWZpbmUgSFZfU1RBVFVTX0lOVkFMSURfUEFSQU1FVEVSCQkJKCh1MTYpMHgwMDA1KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2t2cC5oIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2t2cC5oCmluZGV4IGUwNjlmNTkuLjhjNDAyZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9rdnAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfa3ZwLmgKQEAgLTM2LDcgKzM2LDcgQEAKICAqIHJlZ2lzdHJ5LgogICoKICAqIE5vdGU6ICBUaGlzIHZhbHVlIGlzIHVzZWQgaW4gZGVmaW5pbmcgdGhlIEtWUCBleGNoYW5nZSBtZXNzYWdlIC0gdGhpcyB2YWx1ZQotICogY2Fubm90IGJlIG1vZGlmaWVkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBtZXNzYWdlIHNpemUgYW5kIGNvbXBhdGFiaWxpdHkuCisgKiBjYW5ub3QgYmUgbW9kaWZpZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG1lc3NhZ2Ugc2l6ZSBhbmQgY29tcGF0aWJpbGl0eS4KICAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X3V0aWwuYyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odl91dGlsLmMKaW5kZXggNDc5MmYyYy4uMmRmMTU2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X3V0aWwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfdXRpbC5jCkBAIC04MCw3ICs4MCw3IEBACiAJCQkJZXhlY3V0ZV9zaHV0ZG93biA9IHRydWU7CiAKIAkJCQlEUFJJTlRfSU5GTyhWTUJVUywgIlNodXRkb3duIHJlcXVlc3QgcmVjZWl2ZWQgLSIKLQkJCQkJICAgICIgZ3JhY2VmdWxsIHNodXRkb3duIGluaXRpYXRlZCIpOworCQkJCQkgICAgIiBncmFjZWZ1bCBzaHV0ZG93biBpbml0aWF0ZWQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJaWNtc2doZHJwLT5zdGF0dXMgPSBIVl9FX0ZBSUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvcm5kaXNfZmlsdGVyLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvcm5kaXNfZmlsdGVyLmMKaW5kZXggZTcxODljZC4uMDQ4Mzc2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L3JuZGlzX2ZpbHRlci5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9ybmRpc19maWx0ZXIuYwpAQCAtNTg1LDcgKzU4NSw3IEBACiAJCXJldCA9IC0xOwogCQlEUFJJTlRfRVJSKE5FVFZTQywgInRpbWVvdXQgYmVmb3JlIHdlIGdvdCBhIHNldCByZXNwb25zZS4uLiIpOwogCQkvKgotCQkgKiBXZSBjYW50IGRlYWxsb2NhdGUgdGhlIHJlcXVlc3Qgc2luY2Ugd2UgbWF5IHN0aWxsIHJlY2VpdmUgYQorCQkgKiBXZSBjYW4ndCBkZWFsbG9jYXRlIHRoZSByZXF1ZXN0IHNpbmNlIHdlIG1heSBzdGlsbCByZWNlaXZlIGEKIAkJICogc2VuZCBjb21wbGV0aW9uIGZvciBpdC4KIAkJICovCiAJCWdvdG8gRXhpdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi90b29scy9odl9rdnBfZGFlbW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvdG9vbHMvaHZfa3ZwX2RhZW1vbi5jCmluZGV4IGY1YTJkZDYuLmFhNzdhOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi90b29scy9odl9rdnBfZGFlbW9uLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L3Rvb2xzL2h2X2t2cF9kYWVtb24uYwpAQCAtMjAyLDcgKzIwMiw3IEBACiAKIAkJCS8qCiAJCQkgKiBXZSBvbmx5IHN1cHBvcnQgQUZfSU5FVCBhbmQgQUZfSU5FVDYKLQkJCSAqIGFuZCB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgaXMgc2VwZXJhdGVkIGJ5IGEgIjsiLgorCQkJICogYW5kIHRoZSBsaXN0IG9mIGFkZHJlc3NlcyBpcyBzZXBhcmF0ZWQgYnkgYSAiOyIuCiAJCQkgKi8KIAkJCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyID0KIAkJCQkoc3RydWN0IHNvY2thZGRyX2luNiAqKSBjdXJwLT5pZmFfYWRkcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vRG9jdW1lbnRhdGlvbi9paW9fdXRpbHMuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vRG9jdW1lbnRhdGlvbi9paW9fdXRpbHMuaAppbmRleCA4MDk1NzI3Li5mZDc4ZTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL0RvY3VtZW50YXRpb24vaWlvX3V0aWxzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9Eb2N1bWVudGF0aW9uL2lpb191dGlscy5oCkBAIC01NTYsNyArNTU2LDcgQEAKIAkJaWYgKHN0cmNtcCh0ZW1wLCB2YWwpICE9IDApIHsKIAkJCXByaW50ZigiUG9zc2libGUgZmFpbHVyZSBpbiBzdHJpbmcgd3JpdGUgb2YgJXMgIgogCQkJCSJTaG91bGQgYmUgJXMgIgotCQkJCSJ3cml0ZW4gdG8gJXNcJXNcbiIsCisJCQkJIndyaXR0ZW4gdG8gJXNcJXNcbiIsCiAJCQkJdGVtcCwKIAkJCQl2YWwsCiAJCQkJYmFzZWRpciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAxLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMS5oCmluZGV4IGM5YmYyMmMuLjIzZmU1NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAxLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDEuaApAQCAtNzAsNyArNzAsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwMV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMy5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDMuaAppbmRleCBiMzkzMjNlLi5iODg2ODgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAzLmgKQEAgLTY1LDcgKzY1LDcgQEAKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGlzMTYyMDNfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDQuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA0LmgKaW5kZXggZTllZDdjYi4uZTYxODQ0NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDQuaApAQCAtNzMsNyArNzMsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwNF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwOS5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDkuaAppbmRleCA0ZTk3NTk2Li44YjBkYTEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwOS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA5LmgKQEAgLTEwOSw3ICsxMDksNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwOV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIyMC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMjAuaAppbmRleCA3MDEzMzE0Li40ZDU3NThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIyMC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjIwLmgKQEAgLTEzMiw3ICsxMzIsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIyMF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyNDAuaAppbmRleCA1MWE4MDdkLi43NmE0NTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjQwLmgKQEAgLTEzMiw3ICsxMzIsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjI0MF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcS5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHEuaAppbmRleCA1NzliM2EyLi4xMTQwMjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxLmgKQEAgLTU3LDcgKzU3LDcgQEAKIC8qIFJlYm9vdCBtZW1vcnkgY29udGVudCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX0NUUkxfMl9SRUJPT1RfTUVNT1JZCTB4MTAKIAotLyogSW50ZXJ1cHQgRW5hYmxlIC0gYXBwbGllcyBkYXRhIHJlYWR5IHRvIHRoZSBSRFkgcGFkICovCisvKiBJbnRlcnJ1cHQgRW5hYmxlIC0gYXBwbGllcyBkYXRhIHJlYWR5IHRvIHRoZSBSRFkgcGFkICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfQ1RSTF8yX0VOQUJMRV9JTlRFUlJVUFQJMHgwOAogCiAvKiBFbmFibGUgRGF0YSBSZWFkeSBHZW5lcmF0aW9uIC0gcmVsYXRpb25zaGlwIHdpdGggcHJldmlvdXMgdW5jbGVhciBpbiBkb2NzICovCkBAIC03MCwzNCArNzAsMzQgQEAKICAqIC0gb3B0aW9uIGZvciAxNiBiaXQgbGVmdCBqdXN0aWZpZWQgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19DVFJMXzJfREFUQV9BTElHTk1FTlRfMTZfQklUX0xFRlRfSlVTVElGSUVECTB4MDEKIAotLyogSW50ZXJ1cHQgcmVsYXRlZCBzdHVmZiAqLworLyogSW50ZXJydXB0IHJlbGF0ZWQgc3R1ZmYgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19BRERSCQkJMHgyMwogCiAvKiBTd2l0Y2ggZnJvbSBvciBjb21iaW5hdGlvbiBmbyBjb25kaXRpb25zIHRvIGFuZCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0JPT0xFQU5fQU5ECQkweDgwCiAKLS8qIExhdGNoIGludGVydXB0IHJlcXVlc3QsCisvKiBMYXRjaCBpbnRlcnJ1cHQgcmVxdWVzdCwKICAqIGlmIG9uIGFjayBtdXN0IGJlIGdpdmVuIGJ5IHJlYWRpbmcgdGhlIGFjayByZWdpc3RlciAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0xBVENIX1NSQwkJMHg0MAogCi0vKiBaIEludGVydXB0IG9uIEhpZ2ggKGFib3ZlIHRocmVzaG9sZCkqLworLyogWiBJbnRlcnJ1cHQgb24gSGlnaCAoYWJvdmUgdGhyZXNob2xkKSovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9DRkdfSU5URVJSVVBUX1pfSElHSAkweDIwCi0vKiBaIEludGVydXB0IG9uIExvdyAqLworLyogWiBJbnRlcnJ1cHQgb24gTG93ICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9DRkdfSU5URVJSVVBUX1pfTE9XCTB4MTAKLS8qIFkgSW50ZXJ1cHQgb24gSGlnaCAqLworLyogWSBJbnRlcnJ1cHQgb24gSGlnaCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0lOVEVSUlVQVF9ZX0hJR0gJMHgwOAotLyogWSBJbnRlcnVwdCBvbiBMb3cgKi8KKy8qIFkgSW50ZXJydXB0IG9uIExvdyAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0lOVEVSUlVQVF9ZX0xPVwkweDA0Ci0vKiBYIEludGVydXB0IG9uIEhpZ2ggKi8KKy8qIFggSW50ZXJydXB0IG9uIEhpZ2ggKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19JTlRFUlJVUFRfWF9ISUdICTB4MDIKLS8qIFggSW50ZXJ1cHQgb24gTG93ICovCisvKiBYIEludGVycnVwdCBvbiBMb3cgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19JTlRFUlJVUFRfWF9MT1cgMHgwMQogCi0vKiBSZWdpc3RlciB0aGF0IGdpdmVzIGRlc2NyaXB0aW9uIG9mIHdoYXQgY2F1c2VkIGludGVydXB0CisvKiBSZWdpc3RlciB0aGF0IGdpdmVzIGRlc2NyaXB0aW9uIG9mIHdoYXQgY2F1c2VkIGludGVycnVwdAogICogLSBsYXRjaGVkIGlmIHNldCBpbiBDRkdfQUREUkVTICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfQUREUgkJCTB4MjQKIC8qIHRvcCBiaXQgaWdub3JlZCAqLwotLyogSW50ZXJ1cHQgQWN0aXZlICovCisvKiBJbnRlcnJ1cHQgQWN0aXZlICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfSU5URVJSVVBUX0FDVElWQVRFRAkweDQwCiAvKiBJbnRlcnVwdHMgdGhhdCBoYXZlIGJlZW4gdHJpZ2dlcmVkICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfSU5URVJSVVBUX1pfSElHSAkweDIwCkBAIC0xMjMsNyArMTIzLDcgQEAKICNkZWZpbmUgTElTM0wwMkRRX1JFR19TVEFUVVNfWF9ORVdfREFUQQkJCTB4MDEKIAogLyogVGhlIGFjY2VsZXJvbWV0ZXIgcmVhZGluZ3MgLSBsb3cgYW5kIGhpZ2ggYnl0ZXMuCi1Gb3JtIG9mIGhpZ2ggYnl0ZSBkZXBlbmRhbnQgb24ganVzdGlmaWNhdGlvbiBzZXQgaW4gY3RybCByZWcgKi8KK0Zvcm0gb2YgaGlnaCBieXRlIGRlcGVuZGVudCBvbiBqdXN0aWZpY2F0aW9uIHNldCBpbiBjdHJsIHJlZyAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX09VVF9YX0xfQUREUgkJCTB4MjgKICNkZWZpbmUgTElTM0wwMkRRX1JFR19PVVRfWF9IX0FERFIJCQkweDI5CiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfT1VUX1lfTF9BRERSCQkJMHgyQQpAQCAtMTU1LDcgKzE1NSw3IEBACiAgKiBAaW50ZXI6CQl1c2VkIHRvIGNoZWNrIGlmIG5ldyBpbnRlcnJ1cHQgaGFzIGJlZW4gdHJpZ2dlcmVkCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBsaXMzbDAyZHFfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfY29yZS5jCmluZGV4IGM0YjRhYjcuLjMwNjdmOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcV9jb3JlLmMKQEAgLTc3LDcgKzc3LDcgQEAKIC8qKgogICogbGlzM2wwMmRxX3NwaV93cml0ZV9yZWdfOCgpIC0gd3JpdGUgc2luZ2xlIGJ5dGUgdG8gYSByZWdpc3RlcgogICogQGRldjogZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBjaGlsZCBvZiBhY3R1YWwgZGV2aWNlIChpaW9fZGV2IG9yIGlpb190cmlnKQotICogQHJlZ19hZGRyZXNzOiB0aGUgYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXIgdG8gYmUgd3JpdGVuCisgKiBAcmVnX2FkZHJlc3M6IHRoZSBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB0byBiZSB3cml0dGVuCiAgKiBAdmFsOiB0aGUgdmFsdWUgdG8gd3JpdGUKICAqKi8KIGludCBsaXMzbDAyZHFfc3BpX3dyaXRlX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX3JpbmcuYwppbmRleCAyYzQ2MWEzLi41MjlhM2NjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcV9yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfcmluZy5jCkBAIC0yMTcsNyArMjE3LDcgQEAKIC8qKgogICogbGlzM2wwMmRxX3JlYWRfYWxsKCkgUmVhZHMgYWxsIGNoYW5uZWxzIGN1cnJlbnRseSBzZWxlY3RlZAogICogQHN0OgkJZGV2aWNlIHNwZWNpZmljIHN0YXRlCi0gKiBAcnhfYXJyYXk6CShkbWEgY2FwYWJsZSkgcmVjaWV2ZSBhcnJheSwgbXVzdCBiZSBhdCBsZWFzdAorICogQHJ4X2FycmF5OgkoZG1hIGNhcGFibGUpIHJlY2VpdmUgYXJyYXksIG11c3QgYmUgYXQgbGVhc3QKICAqCQk0Km51bWJlciBvZiBjaGFubmVscwogICoqLwogc3RhdGljIGludCBsaXMzbDAyZHFfcmVhZF9hbGwoc3RydWN0IGxpczNsMDJkcV9zdGF0ZSAqc3QsIHU4ICpyeF9hcnJheSkKQEAgLTQwOSw3ICs0MDksNyBAQAogICoKICAqIEFzIHRoZSB0cmlnZ2VyIG1heSBvY2N1ciBvbiBhbnkgZGF0YSBlbGVtZW50IGJlaW5nIHVwZGF0ZWQgaXQgaXMKICAqIHJlYWxseSByYXRoZXIgbGlrZWx5IHRvIG9jY3VyIGR1cmluZyB0aGUgcmVhZCBmcm9tIHRoZSBwcmV2aW91cwotICogdHJpZ2dlciBldmVudC4gIFRoZSBvbmx5IHdheSB0byBkaXNjb3ZlciBpZiB0aGlzIGhhcyBvY2N1cmVkIG9uCisgKiB0cmlnZ2VyIGV2ZW50LiAgVGhlIG9ubHkgd2F5IHRvIGRpc2NvdmVyIGlmIHRoaXMgaGFzIG9jY3VycmVkIG9uCiAgKiBib2FyZHMgbm90IHN1cHBvcnRpbmcgbGV2ZWwgaW50ZXJydXB0cyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgbGluZS4KICAqIElmIGl0IGlzIGluZGljYXRpbmcgYW5vdGhlciBpbnRlcnJ1cHQgYW5kIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhCiAgKiBoYW5kbGVyIGxvb2tpbmcgYXQgaXQsIHRoZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGNvcmUgdGhhdCB3ZSBuZWVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL3NjYTMwMDAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCmluZGV4IDIzODkyODQuLmRiNzEwMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCkBAIC0xODUsNyArMTg1LDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IHNjYTMwMDBfY2hpcF9pbmZvIC0gbW9kZWwgZGVwZW5kYW50IHBhcmFtZXRlcnMKKyAqIHN0cnVjdCBzY2EzMDAwX2NoaXBfaW5mbyAtIG1vZGVsIGRlcGVuZGVudCBwYXJhbWV0ZXJzCiAgKiBAbmFtZTogCQkJbW9kZWwgaWRlbnRpZmljYXRpb24KICAqIEBzY2FsZToJCQlzdHJpbmcgY29udGFpbmluZyBmbG9hdGluZyBwb2ludCBzY2FsZSBmYWN0b3IKICAqIEB0ZW1wX291dHB1dDoJCXNvbWUgZGV2aWNlcyBoYXZlIHRlbXBlcmF0dXJlIHNlbnNvcnMuCkBAIC0yMTMsNyArMjEzLDcgQEAKICAqIHNjYTMwMDBfcmVhZF9kYXRhKCkgcmVhZCBhIHNlcmllcyBvZiB2YWx1ZXMgZnJvbSB0aGUgZGV2aWNlCiAgKiBAZGV2OgkJZGV2aWNlCiAgKiBAcmVnX2FkZHJlc3NfaGlnaDoJc3RhcnQgYWRkcmVzcyAoZGVjcmVtZW50ZWQgcmVhZCkKLSAqIEByeDoJCQlwb2ludGVyIHdoZXJlIHJlY2lldmVkIGRhdGEgaXMgcGxhY2VkLiBDYWxsZWUKKyAqIEByeDoJCQlwb2ludGVyIHdoZXJlIHJlY2VpdmVkIGRhdGEgaXMgcGxhY2VkLiBDYWxsZWUKICAqCQkJcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhpcy4KICAqIEBsZW46CQludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMF9yaW5nLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL3NjYTMwMDBfcmluZy5jCmluZGV4IGM4NzJmZGQuLmE3MzBhNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMF9yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9zY2EzMDAwX3JpbmcuYwpAQCAtNDMsNyArNDMsNyBAQAogICoJCQlsZWFkaW5nIGJ5dGUgdXNlZCBpbiBidXMgY29tbXMuCiAgKgogICogQ3VycmVudGx5IGRvZXMgbm90IHByb3ZpZGUgdGltZXN0YW1wcy4gIEFzIHRoZSBoYXJkd2FyZSBkb2Vzbid0IGFkZCB0aGVtIHRoZXkKLSAqIGNhbiBvbmx5IGJlIGluZmVycmVkIGFwcm94aW1hdGVseSBmcm9tIHJpbmcgYnVmZmVyIGV2ZW50cyBzdWNoIGFzIDUwJSBmdWxsCisgKiBjYW4gb25seSBiZSBpbmZlcnJlZCBhcHByb3hpbWF0ZWx5IGZyb20gcmluZyBidWZmZXIgZXZlbnRzIHN1Y2ggYXMgNTAlIGZ1bGwKICAqIGFuZCBrbm93bGVkZ2Ugb2Ygd2hlbiBidWZmZXIgd2FzIGxhc3QgZW1wdGllZC4gIFRoaXMgaXMgbGVmdCB0byB1c2Vyc3BhY2UuCiAgKiovCiBzdGF0aWMgaW50IHNjYTMwMDBfcmlwX2h3X3JiKHN0cnVjdCBpaW9fcmluZ19idWZmZXIgKnIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDcyOThfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3Mjk4X3JpbmcuYwppbmRleCAxOWQxYWNlLi45MDY4ZDdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDcyOThfcmluZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzI5OF9yaW5nLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLyoqCiAgKiBhZDcyOThfcG9sbF9mdW5jX3RoKCkgdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gc3BpIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIHNwaSBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NDc2X3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzQ3Nl9yaW5nLmMKaW5kZXggMWQ2NTRjOC4uOTJkOTM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NDc2X3JpbmcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc0NzZfcmluZy5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIC8qKgogICogYWQ3NDc2X3BvbGxfZnVuY190aCgpIHRoIG9mIHRyaWdnZXIgbGF1bmNoZWQgcG9sbGluZyB0byByaW5nIGJ1ZmZlcgogICoKLSAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cmluZywgbGVhdmUgdGltZXN0YW1waW5nIHVudGlsCisgKiBBcyBzYW1wbGluZyBvbmx5IG9jY3VycyBvbiBpMmMgY29tbXMgb2NjdXJyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKICAqIHRoZW4uICBTb21lIHRyaWdnZXJzIHdpbGwgZ2VuZXJhdGUgdGhlaXIgb3duIHRpbWUgc3RhbXAuICBDdXJyZW50bHkKICAqIHRoZXJlIGlzIG5vIHdheSBvZiBub3RpZnlpbmcgdGhlbSB3aGVuIG5vIG9uZSBjYXJlcy4KICAqKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzg4N19yaW5nLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc4ODdfcmluZy5jCmluZGV4IDJkN2ZlNjUuLmRhNzdmMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzg4N19yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3ODg3X3JpbmcuYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAvKioKICAqIGFkNzg4N19wb2xsX2Z1bmNfdGgoKSB0aCBvZiB0cmlnZ2VyIGxhdW5jaGVkIHBvbGxpbmcgdG8gcmluZyBidWZmZXIKICAqCi0gKiBBcyBzYW1wbGluZyBvbmx5IG9jY3VycyBvbiBzcGkgY29tbXMgb2NjdXJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAorICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gc3BpIGNvbW1zIG9jY3VycmluZywgbGVhdmUgdGltZXN0YW1waW5nIHVudGlsCiAgKiB0aGVuLiAgU29tZSB0cmlnZ2VycyB3aWxsIGdlbmVyYXRlIHRoZWlyIG93biB0aW1lIHN0YW1wLiAgQ3VycmVudGx5CiAgKiB0aGVyZSBpcyBubyB3YXkgb2Ygbm90aWZ5aW5nIHRoZW0gd2hlbiBubyBvbmUgY2FyZXMuCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3OTl4X2NvcmUuYwppbmRleCBlNTA4NDFiLi5mMDRlNjQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzk5eF9jb3JlLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogCiAJbXV0ZXhfbG9jaygmZGV2X2luZm8tPm1sb2NrKTsKIAltYXNrID0gMSA8PCB0aGlzX2F0dHItPmFkZHJlc3M7Ci0JLyogSWYgcmluZyBidWZmZXIgY2FwdHVyZSBpcyBvY2N1cmluZywgcXVlcnkgdGhlIGJ1ZmZlciAqLworCS8qIElmIHJpbmcgYnVmZmVyIGNhcHR1cmUgaXMgb2NjdXJyaW5nLCBxdWVyeSB0aGUgYnVmZmVyICovCiAJaWYgKGlpb19yaW5nX2VuYWJsZWQoZGV2X2luZm8pKSB7CiAJCWRhdGEgPSByZXQgPSBhZDc5OXhfc2luZ2xlX2NoYW5uZWxfZnJvbV9yaW5nKHN0LCBtYXNrKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3OTl4X3JpbmcuYwppbmRleCA1NmFiYzM5Li4wODc1YTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfcmluZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzk5eF9yaW5nLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogLyoqCiAgKiBhZDc5OXhfcG9sbF9mdW5jX3RoKCkgdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gaTJjIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19jb3JlLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYwppbmRleCBkZGUwOTdhLi5kZTgzYzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAJCWdvdG8gZXJyb3JfcmV0OwogCX0KIAotCS8qIElmIHJpbmcgYnVmZmVyIGNhcHR1cmUgaXMgb2NjdXJpbmcsIHF1ZXJ5IHRoZSBidWZmZXIgKi8KKwkvKiBJZiByaW5nIGJ1ZmZlciBjYXB0dXJlIGlzIG9jY3VycmluZywgcXVlcnkgdGhlIGJ1ZmZlciAqLwogCWlmIChpaW9fcmluZ19lbmFibGVkKGRldl9pbmZvKSkgewogCQltYXNrID0gbWF4MTM2M19tb2RlX3RhYmxlW3RoaXNfYXR0ci0+YWRkcmVzc10ubW9kZW1hc2s7CiAJCWRhdGEgPSBtYXgxMzYzX3NpbmdsZV9jaGFubmVsX2Zyb21fcmluZyhtYXNrLCBzdCk7CkBAIC0xNDI1LDcgKzE0MjUsNyBAQAogfQogCiAvKgotICogVG8ga2VlcCB0aGlzIG1hbmFnYWJsZSB3ZSBhbHdheXMgdXNlIG9uZSBvZiAzIHNjYW4gbW9kZXMuCisgKiBUbyBrZWVwIHRoaXMgbWFuYWdlYWJsZSB3ZSBhbHdheXMgdXNlIG9uZSBvZiAzIHNjYW4gbW9kZXMuCiAgKiBTY2FuIDAuLi4zLCAwLTEsMi0zIGFuZCAxLTAsMy0yCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IF9fbWF4MTM2M19jaGVja19ldmVudF9tYXNrKGludCB0aGlzbWFzaywgaW50IGNoZWNrbWFzaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL21heDEzNjNfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKaW5kZXggNTUzMmYzZS4uZDM2ZmNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKQEAgLTEwOCw3ICsxMDgsNyBAQAogLyoqCiAgKiBtYXgxMzYzX3BvbGxfZnVuY190aCgpIC0gdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gaTJjIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9jaHJkZXYuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vY2hyZGV2LmgKaW5kZXggOThkMWEyYy4uNGZjYjk5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9jaHJkZXYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2NocmRldi5oCkBAIC0zMyw3ICszMyw3IEBACiAvKioKICAqIHN0cnVjdCBpaW9fZXZlbnRfZGF0YSAtIFRoZSBhY3R1YWwgZXZlbnQgYmVpbmcgcHVzaGVkIHRvIHVzZXJzcGFjZQogICogQGlkOgkJZXZlbnQgaWRlbnRpZmllcgotICogQHRpbWVzdGFtcDoJYmVzdCBlc3RpbWF0ZSBvZiB0aW1lIG9mIGV2ZW50IG9jY3VyYW5jZSAob2Z0ZW4gZnJvbQorICogQHRpbWVzdGFtcDoJYmVzdCBlc3RpbWF0ZSBvZiB0aW1lIG9mIGV2ZW50IG9jY3VycmVuY2UgKG9mdGVuIGZyb20KICAqCQl0aGUgaW50ZXJydXB0IGhhbmRsZXIpCiAgKi8KIHN0cnVjdCBpaW9fZXZlbnRfZGF0YSB7CkBAIC00Miw3ICs0Miw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBpaW9fZGV0ZWN0ZWRfZXZlbnRfbGlzdCAtIGxpc3QgZWxlbWVudCBmb3IgZXZlbnRzIHRoYXQgaGF2ZSBvY2N1cmVkCisgKiBzdHJ1Y3QgaWlvX2RldGVjdGVkX2V2ZW50X2xpc3QgLSBsaXN0IGVsZW1lbnQgZm9yIGV2ZW50cyB0aGF0IGhhdmUgb2NjdXJyZWQKICAqIEBsaXN0OgkJbGlua2VkIGxpc3QgaGVhZGVyCiAgKiBAZXY6CQkJdGhlIGV2ZW50IGl0c2VsZgogICogQHNoYXJlZF9wb2ludGVyOgl1c2VkIHdoZW4gdGhlIGV2ZW50IGlzIHNoYXJlZCAtIGkuZS4gY2FuIGJlIGVzY2FsbGF0ZWQKQEAgLTk4LDcgKzk4LDcgQEAKICAqIEBsaXN0OgkJbGlzdCBoZWFkZXIKICAqIEByZWZjb3VudDoJCWFzIHRoZSBoYW5kbGVyIG1heSBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBkZXZpY2UKICAqCQkJc2lkZSBldmVudHMsIHJlZmVyZW5jZSBjb3VudGluZyBlbnN1cmVzIGNsZWFuIHJlbW92YWwKLSAqIEBleGlzdF9sb2NrOgkJcHJldmVudHMgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gcmVmY291bnQgdXNlYWdlLgorICogQGV4aXN0X2xvY2s6CQlwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byByZWZjb3VudCB1c2FnZS4KICAqIEBoYW5kbGVyOgkJZXZlbnQgaGFuZGxlciBmdW5jdGlvbiAtIGNhbGxlZCBvbiBldmVudCBpZiB0aGlzCiAgKgkJCWV2ZW50X2hhbmRsZXIgaXMgZW5hYmxlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2d5cm8vYWRpczE2MDYwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCmluZGV4IDcwMGViMzkuLmFlNTNlNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiBAdXNfdzoJCWFjdHVhbCBzcGlfZGV2aWNlIHRvIHdyaXRlIGNvbmZpZwogICogQHVzX3I6CQlhY3R1YWwgc3BpX2RldmljZSB0byByZWFkIGJhY2sgZGF0YQogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKLSAqIEBidWY6CQl0cmFuc21pdCBvciByZWNpZXZlIGJ1ZmZlcgorICogQGJ1ZjoJCXRyYW5zbWl0IG9yIHJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjA2MF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2d5cm8vYWRpczE2MDgwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCmluZGV4IGZiNDMzNmMuLmVmOWUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiBzdHJ1Y3QgYWRpczE2MDgwX3N0YXRlIC0gZGV2aWNlIGluc3RhbmNlIHNwZWNpZmljIGRhdGEKICAqIEB1czoJCQlhY3R1YWwgc3BpX2RldmljZSB0byB3cml0ZSBkYXRhCiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQotICogQGJ1ZjoJCXRyYW5zbWl0IG9yIHJlY2lldmUgYnVmZmVyCisgKiBAYnVmOgkJdHJhbnNtaXQgb3IgcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MDgwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaAppbmRleCBjMWZkNDM2NC4uMTM2OTUwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9neXJvL2FkaXMxNjI2MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaApAQCAtOTEsNyArOTEsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICogQG5lZ2F0ZToJCW5lZ2F0ZSB0aGUgc2NhbGUgcGFyYW1ldGVyCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2lpby5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9paW8uaAppbmRleCAyNDhiZGQyLi43MTI3ZjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2lpby5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaWlvLmgKQEAgLTkyLDcgKzkyLDcgQEAKICAqCQkJY2hhbmdlcwogICogQGF2YWlsYWJsZV9zY2FuX21hc2tzOiBbRFJJVkVSXSBvcHRpb25hbCBhcnJheSBvZiBhbGxvd2VkIGJpdG1hc2tzCiAgKiBAdHJpZzoJCVtJTlRFUk5dIGN1cnJlbnQgZGV2aWNlIHRyaWdnZXIgKHJpbmcgYnVmZmVyIG1vZGVzKQotICogQHBvbGxmdW5jOgkJW0RSSVZFUl0gZnVuY3Rpb24gcnVuIG9uIHRyaWdnZXIgYmVpbmcgcmVjaWV2ZWQKKyAqIEBwb2xsZnVuYzoJCVtEUklWRVJdIGZ1bmN0aW9uIHJ1biBvbiB0cmlnZ2VyIGJlaW5nIHJlY2VpdmVkCiAgKiovCiBzdHJ1Y3QgaWlvX2RldiB7CiAJaW50CQkJCWlkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2MzAwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaAppbmRleCAxZjI1ZDY4Li5jMDk1NzU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaApAQCAtOTksNyArOTksNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjMwMF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzNTAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCmluZGV4IGIwMDAwMWUuLmIxYWQ0ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCkBAIC0xMDUsNyArMTA1LDcgQEAKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGlzMTYzNTBfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaAppbmRleCA2ZmYzM2UxLi43YTEyNzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaApAQCAtMTMxLDcgKzEzMSw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2NDAwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYwppbmRleCBmM2JmMTExLi4xNzk1ZWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCkBAIC0yNTgsNyArMjU4LDcgQEAKIAkJCQkJCQkgICAtPmRldF9ldmVudHMubGlzdCkpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJvcl9yZXQ7Ci0JCS8qIFNpbmdsZSBhY2Nlc3MgZGV2aWNlIHNvIG5vb25lIGVsc2UgY2FuIGdldCB0aGUgZGF0YSAqLworCQkvKiBTaW5nbGUgYWNjZXNzIGRldmljZSBzbyBubyBvbmUgZWxzZSBjYW4gZ2V0IHRoZSBkYXRhICovCiAJCW11dGV4X2xvY2soJmV2X2ludC0+ZXZlbnRfbGlzdF9sb2NrKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzUzLmgKaW5kZXggNzBkYWJhZTYuLjNiOWM3ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oCkBAIC02Miw3ICs2Miw3IEBACiAgKiBAdXM6CQkJYWN0dWFsIHNwaV9kZXZpY2UKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGU3NzUzX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1NC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKaW5kZXggOGZhYTliMy4uMGFhMDUyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKQEAgLTgwLDcgKzgwLDcgQEAKICAqIEB1czoJCQlhY3R1YWwgc3BpX2RldmljZQogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkZTc3NTRfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU4LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaAppbmRleCBkZjViYjdiLi5jNmZkOTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaApAQCAtOTgsNyArOTgsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkZTc3NThfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU5LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaAppbmRleCBlOWQxYzQzLi5jYzc2YzJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaApAQCAtNDMsNyArNDMsNyBAQAogICogQHVzOgkJCWFjdHVhbCBzcGlfZGV2aWNlCiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRlNzc1OV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc4NTQuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCmluZGV4IDRhZDg0YTMuLjc5YTIxMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCkBAIC0xNDksNyArMTQ5LDcgQEAKICAqIEBzcGk6CQkJYWN0dWFsIHNwaV9kZXZpY2UKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGU3ODU0X3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmluZ19nZW5lcmljLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL3JpbmdfZ2VuZXJpYy5oCmluZGV4IGYyMWFjMDkuLjMyOTQ4ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmluZ19nZW5lcmljLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9yaW5nX2dlbmVyaWMuaApAQCAtMzAsNyArMzAsNyBAQAogICogQGV2ZW50X2NvZGU6CQlldmVudCBpbmRlbnRpZmljYXRpb24gY29kZQogICogQHRpbWVzdGFtcDoJCXRpbWUgb2YgZXZlbnQKICAqCi0gKiBUeXBpY2FsIHVzZWNhc2UgaXMgdG8gZXNjYWxhdGUgYSA1MCUgcmluZyBmdWxsIHRvIDc1JSBmdWxsIGlmIG5vb25lIGhhcyB5ZXQKKyAqIFR5cGljYWwgdXNlY2FzZSBpcyB0byBlc2NhbGF0ZSBhIDUwJSByaW5nIGZ1bGwgdG8gNzUlIGZ1bGwgaWYgbm8gb25lIGhhcyB5ZXQKICAqIHJlYWQgdGhlIGZpcnN0IGV2ZW50LiBDbGVhcmx5IHRoZSA1MCUgZnVsbCBpcyBubyBsb25nZXIgb2YgaW50ZXJlc3QgaW4KICAqIHR5cGljYWwgdXNlIGNhc2UuCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L1RPRE8gYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L1RPRE8KaW5kZXggYTI0ZTVlZC4uYzczM2Q3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9UT0RPCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvVE9ETwpAQCAtMSw3ICsxLDcgQEAKIFRPRE8KIC0tLS0KIAotR2V0IHRoZSBtZW1yYXIgZHJpdmVyIGNsZWFuZWQgdXAgYW5kIHVwc3RyZWFtIChkZXBlbmRhbmN5IGJsb2NraW5nIFNTVCkKK0dldCB0aGUgbWVtcmFyIGRyaXZlciBjbGVhbmVkIHVwIGFuZCB1cHN0cmVhbSAoZGVwZW5kZW5jeSBibG9ja2luZyBTU1QpCiBSZXBsYWNlIGxvbmcvc2hvcnQgcHJlc3Mgd2l0aCB0d28gdmlydHVhbCBidXR0b25zCiBSZXZpZXcgdGhlIHByaW50a3MgYW5kIGtpbGwgb2ZmIGFueSBsZWZ0IG92ZXIgU1RfRVJSOiBtZXNzYWdlcwogUmV2aWV3IHRoZSBtaXNjIGRldmljZSBpb2N0bHMgZm9yIDMyLzY0Yml0IHNhZmV0eSBhbmQgc2FuaXR5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdC5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3QuYwppbmRleCBjZTRhOWY3Li44MWMyNGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0LmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCS8qIEluaXQgdGhlIGRldmljZSAqLwogCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CiAJaWYgKHJldCkgewotCQlwcl9lcnIoImRldmljZSBjYW50IGJlIGVuYWJsZWRcbiIpOworCQlwcl9lcnIoImRldmljZSBjYW4ndCBiZSBlbmFibGVkXG4iKTsKIAkJZ290byBkb19mcmVlX21lbTsKIAl9CiAJc3N0X2Rydl9jdHgtPnBjaSA9IHBjaV9kZXZfZ2V0KHBjaSk7CkBAIC00NTMsNyArNDUzLDcgQEAKIAlwY2lfcmVzdG9yZV9zdGF0ZShwY2kpOwogCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CiAJaWYgKHJldCkKLQkJcHJfZXJyKCJkZXZpY2UgY2FudCBiZSBlbmFibGVkXG4iKTsKKwkJcHJfZXJyKCJkZXZpY2UgY2FuJ3QgYmUgZW5hYmxlZFxuIik7CiAKIAltdXRleF9sb2NrKCZzc3RfZHJ2X2N0eC0+c3N0X2xvY2spOwogCXNzdF9kcnZfY3R4LT5zc3Rfc3RhdGUgPSBTU1RfVU5fSU5JVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2FwcF9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2FwcF9pbnRlcmZhY2UuYwppbmRleCBhMzY3OTkxLi4xZDA2MjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9hcHBfaW50ZXJmYWNlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfYXBwX2ludGVyZmFjZS5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAlpZiAoIXNzdF9kcnZfY3R4LT5tbWFwX21lbSkKIAkJcmV0dXJuIC1FSU87CiAKLQkvKiByb3VuZCBpdCB1cCB0byB0aGUgcGFnZSBib25kYXJ5ICAqLworCS8qIHJvdW5kIGl0IHVwIHRvIHRoZSBwYWdlIGJvdW5kYXJ5ICAqLwogCS8qbWVtX2FyZWEgPSAodm9pZCAqKSgoKCh1bnNpZ25lZCBsb25nKXNzdF9kcnZfY3R4LT5tbWFwX21lbSkKIAkJCQkrIFBBR0VfU0laRSAtIDEpICYgUEFHRV9NQVNLKTsqLwogCW1lbV9hcmVhID0gKHZvaWQgKikgUEFHRV9BTElHTigodW5zaWduZWQgaW50KSBzc3RfZHJ2X2N0eC0+bW1hcF9tZW0pOwpAQCAtODcxLDcgKzg3MSw3IEBACiB9CiAKIC8qKgotICogaW50ZWxfc3N0X2lvY3RsX2RzcCAtIHJlY2lldmVzIHRoZSBkZXZpY2UgaW9jdGwncworICogaW50ZWxfc3N0X2lvY3RsX2RzcCAtIHJlY2VpdmVzIHRoZSBkZXZpY2UgaW9jdGwncwogICoKICAqIEBjbWQ6SW9jdGwgY21kCiAgKiBAYXJnOmRhdGEKQEAgLTEwNjcsNyArMTA2Nyw3IEBACiAJCQlyZXR2YWwgPSAtRUZBVUxUOwogCQkJYnJlYWs7CiAJCX0KLQkJcHJfZGVidWcoIlNFVF9WT0xVTUUgcmVjaWV2ZWQgZm9yICVkIVxuIiwKKwkJcHJfZGVidWcoIlNFVF9WT0xVTUUgcmVjZWl2ZWQgZm9yICVkIVxuIiwKIAkJCQlzZXRfdm9sLnN0cmVhbV9pZCk7CiAJCWlmIChtaW5vciA9PSBTVFJFQU1fTU9EVUxFICYmIHNldF92b2wuc3RyZWFtX2lkID09IDApIHsKIAkJCXByX2RlYnVnKCJpbnZhbGlkIG9wZXJhdGlvbiFcbiIpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAKIAkJCXJldHZhbCA9IC1FRkFVTFQ7CiAJCQlicmVhazsKIAkJfQotCQlwcl9kZWJ1ZygiSU9DVExfR0VUX1ZPTFVNRSByZWNpZXZlZCBmb3Igc3RyZWFtID0gJWQhXG4iLAorCQlwcl9kZWJ1ZygiSU9DVExfR0VUX1ZPTFVNRSByZWNlaXZlZCBmb3Igc3RyZWFtID0gJWQhXG4iLAogCQkJCWdldF92b2wuc3RyZWFtX2lkKTsKIAkJaWYgKG1pbm9yID09IFNUUkVBTV9NT0RVTEUgJiYgZ2V0X3ZvbC5zdHJlYW1faWQgPT0gMCkgewogCQkJcHJfZGVidWcoImludmFsaWQgb3BlcmF0aW9uIVxuIik7CkBAIC0xMTE3LDcgKzExMTcsNyBAQAogCQkJcmV0dmFsID0gLUVGQVVMVDsKIAkJCWJyZWFrOwogCQl9Ci0JCXByX2RlYnVnKCJTTkRSVl9TU1RfU0VUX1ZPTFVNRSByZWNpZXZlZCBmb3IgJWQhXG4iLAorCQlwcl9kZWJ1ZygiU05EUlZfU1NUX1NFVF9WT0xVTUUgcmVjZWl2ZWQgZm9yICVkIVxuIiwKIAkJCXNldF9tdXRlLnN0cmVhbV9pZCk7CiAJCWlmIChtaW5vciA9PSBTVFJFQU1fTU9EVUxFICYmIHNldF9tdXRlLnN0cmVhbV9pZCA9PSAwKSB7CiAJCQlyZXR2YWwgPSAtRVBFUk07CkBAIC0xMTUzLDcgKzExNTMsNyBAQAogCWNhc2UgX0lPQ19OUihTTkRSVl9TU1RfTU1BUF9DQVBUVVJFKTogewogCQlzdHJ1Y3Qgc25kX3NzdF9tbWFwX2J1ZmZzIG1tYXBfYnVmOwogCi0JCXByX2RlYnVnKCJTTkRSVl9TU1RfTU1BUF9QTEFZL0NBUFRVUkUgcmVjaWV2ZWQhXG4iKTsKKwkJcHJfZGVidWcoIlNORFJWX1NTVF9NTUFQX1BMQVkvQ0FQVFVSRSByZWNlaXZlZCFcbiIpOwogCQlpZiAobWlub3IgIT0gU1RSRUFNX01PRFVMRSkgewogCQkJcmV0dmFsID0gLUVCQURSUUM7CiAJCQlicmVhazsKQEAgLTEyMzksNyArMTIzOSw3IEBACiAJY2FzZSBfSU9DX05SKFNORFJWX1NTVF9TRVRfVEFSR0VUX0RFVklDRSk6IHsKIAkJc3RydWN0IHNuZF9zc3RfdGFyZ2V0X2RldmljZSB0YXJnZXRfZGV2aWNlOwogCi0JCXByX2RlYnVnKCJTRVRfVEFSR0VUX0RFVklDRSByZWNpZXZlZCFcbiIpOworCQlwcl9kZWJ1ZygiU0VUX1RBUkdFVF9ERVZJQ0UgcmVjZWl2ZWQhXG4iKTsKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZ0YXJnZXRfZGV2aWNlLCAodm9pZCBfX3VzZXIgKilhcmcsCiAJCQkJc2l6ZW9mKHRhcmdldF9kZXZpY2UpKSkgewogCQkJcmV0dmFsID0gLUVGQVVMVDsKQEAgLTEyNTYsNyArMTI1Niw3IEBACiAJY2FzZSBfSU9DX05SKFNORFJWX1NTVF9EUklWRVJfSU5GTyk6IHsKIAkJc3RydWN0IHNuZF9zc3RfZHJpdmVyX2luZm8gaW5mbzsKIAotCQlwcl9kZWJ1ZygiU05EUlZfU1NUX0RSSVZFUl9JTkZPIHJlY2l2ZWRcbiIpOworCQlwcl9kZWJ1ZygiU05EUlZfU1NUX0RSSVZFUl9JTkZPIHJlY2VpdmVkXG4iKTsKIAkJaW5mby52ZXJzaW9uID0gU1NUX1ZFUlNJT05fTlVNOwogCQkvKiBoYXJkIGNvZGluZywgc2h1ZCBnZXQgc3VtaG93IGxhdGVyICovCiAJCWluZm8uYWN0aXZlX3BjbV9zdHJlYW1zID0gc3N0X2Rydl9jdHgtPnN0cmVhbV9jbnQgLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHJ2X2ludGVyZmFjZS5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHJ2X2ludGVyZmFjZS5jCmluZGV4IGVhOGUyNTEuLmU5YzE4MjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2Rydl9pbnRlcmZhY2UuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kcnZfaW50ZXJmYWNlLmMKQEAgLTMxNSw3ICszMTUsNyBAQAogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoJnNzdF9kcnZfY3R4LT5wY2ktPmRldik7CiAKIAlpZiAoc3N0X2Rydl9jdHgtPnNzdF9zdGF0ZSA9PSBTU1RfU1VTUEVOREVEKSB7Ci0JCS8qIExQRSBpcyBzdXNwZW5kZWQsIHJlc3VtZSBpdCBiZWZvcmUgcHJvY2VkaW5nKi8KKwkJLyogTFBFIGlzIHN1c3BlbmRlZCwgcmVzdW1lIGl0IGJlZm9yZSBwcm9jZWVkaW5nKi8KIAkJcHJfZGVidWcoIlJlc3VtaW5nIGZyb20gU3VzcGVuZGVkIHN0YXRlXG4iKTsKIAkJcmV0dmFsID0gaW50ZWxfc3N0X3Jlc3VtZShzc3RfZHJ2X2N0eC0+cGNpKTsKIAkJaWYgKHJldHZhbCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHNwLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYwppbmRleCA2ZTVjOTE1Li5iZmZlNGM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYwpAQCAtMzUwLDcgKzM1MCw3IEBACiAKIH0KIAotLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb2VyIGRvd25sb2FkaW5nIHRoZSBjb2RlYy9wb3N0cHJvY2Vzc2luZworLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBjb2RlYy9wb3N0cHJvY2Vzc2luZwogbGlicmFyeSBpcyBzZXQgZm9yIGRvd25sb2FkIHRvIFNTVCBEU1AqLwogc3RhdGljIGludCBzc3RfdmFsaWRhdGVfbGlicmFyeShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3X2xpYiwKIAkJc3RydWN0IGxpYl9zbG90X2luZm8gKnNsb3QsCkBAIC00MDUsNyArNDA1LDcgQEAKIAogfQogCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIEZXIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgbGliYXJ5IGRvd25sb2FkCisvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIEZXIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgbGlicmFyeSBkb3dubG9hZAogVGhpcyBmdW5jdGlvbiBwcmVwYXJlcyB0aGUgbGlicmFyeSB0byBkb3dubG9hZCovCiBpbnQgc3N0X2xvYWRfbGlicmFyeShzdHJ1Y3Qgc25kX3NzdF9saWJfZG93bmxvYWQgKmxpYiwgdTggb3BzKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZndfaXBjLmggYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaAppbmRleCA4ZGYzMTNkLi4wZjBjNWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaApAQCAtMTExLDcgKzExMSw3IEBACiAjZGVmaW5lIElQQ19TU1RfUEVSSU9EX0VMQVBTRUQgMHg5NyAvKiBwZXJpb2QgZWxhcHNlZCAqLwogI2RlZmluZSBJUENfSUFfVEFSR0VUX0RFVl9DSE5HRCAweDk4IC8qIGVycm9yIGluIHByb2Nlc3NpbmcgYSBzdHJlYW0gKi8KIAotI2RlZmluZSBJUENfU1NUX0VSUk9SX0VWRU5UIDB4OTkgLyogQnVmZmVyIG92ZXIgcnVuIG9jY3VyZWQgKi8KKyNkZWZpbmUgSVBDX1NTVF9FUlJPUl9FVkVOVCAweDk5IC8qIEJ1ZmZlciBvdmVyIHJ1biBvY2N1cnJlZCAqLwogLyogTDJTIG1lc3NhZ2VzICovCiAjZGVmaW5lIElQQ19TQ19ERFJfTElOS19VUCAweEMwCiAjZGVmaW5lIElQQ19TQ19ERFJfTElOS19ET1dOIDB4QzEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbS5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKaW5kZXggNzk1ZTQyYS4uZGQ1OGJlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKQEAgLTk4LDcgKzk4LDcgQEAKIAkJaWYgKHNzdF9kcnZfY3R4LT5zdHJlYW1zW2ldLnN0YXR1cyA9PSBTVFJFQU1fVU5fSU5JVCkKIAkJCXJldHVybiBpOwogCX0KLQlwcl9kZWJ1ZygiRGlkbnQgZmluZCBlbXB0eSBzdHJlYW0gZm9yIG1yc3RcbiIpOworCXByX2RlYnVnKCJEaWRuJ3QgZmluZCBlbXB0eSBzdHJlYW0gZm9yIG1yc3RcbiIpOwogCXJldHVybiAtRUJVU1k7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbV9lbmNvZGVkLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9zdHJlYW1fZW5jb2RlZC5jCmluZGV4IDI5NzUzYzcuLmQ1ZjA3YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbV9lbmNvZGVkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtX2VuY29kZWQuYwpAQCAtOTE0LDcgKzkxNCw3IEBACiAJCSh2b2lkICopICgodW5zaWduZWQgbG9uZykgcmFyX2J1ZmZlcnMuYnVzX2FkZHJlc3MpOwogCQlwcl9kZWJ1ZygiUkFSIGJ1ZiBhZGRyIGluIERuUiAoaW5wdXQgYnVmZmVyIGZ1bmN0aW9uKTB4JWx1IiwKIAkJCQkgKHVuc2lnbmVkIGxvbmcpIHN0cl9pbmZvLT5kZWNvZGVfaWJ1Zik7Ci0JCXByX2RlYnVnKCJyYXIgaW4gRG5SIGRlY29kZSBmdW50aW9uL291dHB1dCBiX2FkZCByYXIgPTB4JWx1IiwKKwkJcHJfZGVidWcoInJhciBpbiBEblIgZGVjb2RlIGZ1bmN0aW9uL291dHB1dCBiX2FkZCByYXIgPTB4JWx1IiwKIAkJCQkodW5zaWduZWQgbG9uZykgcmFyX2J1ZmZlcnMuYnVzX2FkZHJlc3MpOwogCQkqaW5wdXRfaW5kZXggPSBpICsgMTsKIAkJc3RyX2luZm8tPmRlY29kZV9pc2l6ZSA9IGRidWZzLT5pYnVmcy0+YnVmZl9lbnRyeVtpXS5zaXplOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5jCmluZGV4IGZiMjI5MjEuLmQyMDc2MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxtaWQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmMKQEAgLTc3Myw3ICs3NzMsNyBAQAogCQlpZiAocmV0X3ZhbCkKIAkJCXJldHVybiByZXRfdmFsOwogCQlzc3RfY2FyZF92ZW5kb3JfaWQgPSAodmVuZG9yX2FkZHIudmFsdWUgJiAoTUFTSzJ8TUFTSzF8TUFTSzApKTsKLQkJcHJfZGVidWcoIm9yZ2luYWwgbiBleHRyYXRlZCB2ZW5kb3IgaWQgPSAweCV4ICVkXG4iLAorCQlwcl9kZWJ1Zygib3JpZ2luYWwgbiBleHRyYXRlZCB2ZW5kb3IgaWQgPSAweCV4ICVkXG4iLAogCQkJCXZlbmRvcl9hZGRyLnZhbHVlLCBzc3RfY2FyZF92ZW5kb3JfaWQpOwogCQlpZiAoc3N0X2NhcmRfdmVuZG9yX2lkIDwgMCB8fCBzc3RfY2FyZF92ZW5kb3JfaWQgPiAyKSB7CiAJCQlwcl9lcnIoInZlbmRvciBjYXJkIG5vdCBzdXBwb3J0ZWQhIVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmggYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmgKaW5kZXggY2E4ODFiNy4uZTc3ZGE4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxtaWQuaApAQCAtOTAsNyArOTAsNyBAQAogICogQGNhcmRfaW5kZXg6IHNvdW5kIGNhcmQgaW5kZXgKICAqIEBjYXJkX2lkOiBzb3VuZCBjYXJkIGlkIGRldGVjdGVkCiAgKiBAc3N0ZHJ2X29wczogcHRyIHRvIHNzdCBkcml2ZXIgb3BzCi0gKiBAcGRldjogcHRyIHRvIHBsYXRmcm9tIGRldmljZQorICogQHBkZXY6IHB0ciB0byBwbGF0Zm9ybSBkZXZpY2UKICAqIEBpcnE6IGludGVycnVwdCBudW1iZXIgZGV0ZWN0ZWQKICAqIEBwbWljX3N0YXR1czogRGV2aWNlIHN0YXR1cyBvZiBzb3VuZCBjYXJkCiAgKiBAaW50X2Jhc2U6IHB0ciB0byBNTUlPIGludGVycnVwdCByZWdpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9pbml0LmMgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3IvaW5pdC5jCmluZGV4IDVjMDFmMjguLjhhZjdjODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9pbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2tldWNyL2luaXQuYwpAQCAtOTAsNyArOTAsNyBAQAogCiAJcmVzdWx0ID0gRU5FX1NlbmRTY3NpQ21kKHVzLCBGRElSX1JFQUQsICZidWYsIDApOwogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiRXhlY3Rpb24gTVMgSW5pdCBDb2RlIEZhaWwgISFcbiIpOworCQlwcmludGsoS0VSTl9FUlIgIkV4ZWN1dGlvbiBNUyBJbml0IENvZGUgRmFpbCAhIVxuIik7CiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAJfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAlyZXN1bHQgPSBFTkVfU2VuZFNjc2lDbWQodXMsIEZESVJfUkVBRCwgJmJ1ZiwgMCk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpIHsKIAkJcHJpbnRrKEtFUk5fRVJSCi0JCSAgICAgICAiRXhlY3Rpb24gU00gSW5pdCBDb2RlIEZhaWwgISEgcmVzdWx0ID0gJXhcbiIsIHJlc3VsdCk7CisJCSAgICAgICAiRXhlY3V0aW9uIFNNIEluaXQgQ29kZSBGYWlsICEhIHJlc3VsdCA9ICV4XG4iLCByZXN1bHQpOwogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2tldWNyL3NtaWxtYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYwppbmRleCAyY2JlOWY4Li45NWM2ODhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYworKysgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYwpAQCAtNjQsNyArNjQsNyBAQAogZXh0ZXJuIHN0cnVjdCBBRERSRVNTICAgIE1lZGlhOwogZXh0ZXJuIHN0cnVjdCBDSVNfQVJFQSAgIENpc0FyZWE7CiAKLS8vQklUIENvbnRyb2xsIE1hY3JvCisvL0JJVCBDb250cm9sIE1hY3JvCiBCWVRFIEJpdERhdGFbXSA9IHsgMHgwMSwweDAyLDB4MDQsMHgwOCwweDEwLDB4MjAsMHg0MCwweDgwIH0gOwogI2RlZmluZSBTZXRfRF9CaXQoYSxiKSAgICAoYVsoQllURSkoKGIpLzgpXXw9IEJpdERhdGFbKGIpJThdKQogI2RlZmluZSBDbHJfRF9CaXQoYSxiKSAgICAoYVsoQllURSkoKGIpLzgpXSY9fkJpdERhdGFbKGIpJThdKQpAQCAtNzYsNyArNzYsNyBAQAogCiAKIC8vCi0vLy8vUG93ZXIgQ29udHJvbGwgJiBNZWRpYSBFeGlzdCBDaGVjayBGdW5jdGlvbgorLy8vL1Bvd2VyIENvbnRyb2wgJiBNZWRpYSBFeGlzdCBDaGVjayBGdW5jdGlvbgogLy8vLy0tLS0tIEluaXRfRF9TbWFydE1lZGlhKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vaW50IEluaXRfRF9TbWFydE1lZGlhKHZvaWQpCiAvL3sKQEAgLTU3NSw3ICs1NzUsNyBAQAogLy8gICAgcmV0dXJuKFNVQ0NFU1MpOwogLy99CiAvLwotLy8vL1Bvd2VyIENvbnRyb2xsICYgTWVkaWEgRXhpc3QgQ2hlY2sgU3Vicm91dGluZQorLy8vL1Bvd2VyIENvbnRyb2wgJiBNZWRpYSBFeGlzdCBDaGVjayBTdWJyb3V0aW5lCiAvLy8vLS0tLS0gSW5pdGlhbGl6ZV9EX01lZGlhKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy92b2lkIEluaXRpYWxpemVfRF9NZWRpYSh2b2lkKQogLy97CkBAIC03MzgsNyArNzM4LDcgQEAKIC8vICAgIHJldHVybihTVUNDRVNTKTsKIC8vfQogKi8KLS8vU21hcnRNZWRpYSBQaHlzaWNhbCBBZGRyZXNzIENvbnRyb2xsIFN1YnJvdXRpbmUKKy8vU21hcnRNZWRpYSBQaHlzaWNhbCBBZGRyZXNzIENvbnRyb2wgU3Vicm91dGluZQogLy8tLS0tLSBDb252X0RfTWVkaWFBZGRyKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbnQgQ29udl9EX01lZGlhQWRkcihzdHJ1Y3QgdXNfZGF0YSAqdXMsIERXT1JEIGFkZHIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbHN1Yi5jIGIvZHJpdmVycy9zdGFnaW5nL2tldWNyL3NtaWxzdWIuYwppbmRleCA4MGRhNjFjLi40ZmU0NzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbHN1Yi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9zbWlsc3ViLmMKQEAgLTU3LDcgKzU3LDcgQEAKICNkZWZpbmUgT0REICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAvLyBPZGQgUGFnZSBmb3IgMjU2Ynl0ZS9wYWdlCiAKIAotLy9TbWFydE1lZGlhIFJlZHVuZGFudCBidWZmZXIgZGF0YSBDb250cm9sbCBTdWJyb3V0aW5lCisvL1NtYXJ0TWVkaWEgUmVkdW5kYW50IGJ1ZmZlciBkYXRhIENvbnRyb2wgU3Vicm91dGluZQogLy8tLS0tLSBDaGVja19EX0RhdGFCbGFuaygpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbnQgQ2hlY2tfRF9EYXRhQmxhbmsoQllURSAqcmVkdW5kYW50KQogewpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAKICAgICB9CiB9CiAvKgotLy8vL1NtYXJ0TWVkaWEgUG93ZXIgQ29udHJvbGwgU3Vicm91dGluZQorLy8vL1NtYXJ0TWVkaWEgUG93ZXIgQ29udHJvbCBTdWJyb3V0aW5lCiAvLy8vLS0tLS0gQ250X0RfUmVzZXQoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvL3ZvaWQgQ250X0RfUmVzZXQodm9pZCkKIC8vewpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAKIC8vfQogLy8KICovCi0vL1NtYXJ0TWVkaWEgRUNDIENvbnRyb2xsIFN1YnJvdXRpbmUKKy8vU21hcnRNZWRpYSBFQ0MgQ29udHJvbCBTdWJyb3V0aW5lCiAvLy0tLS0tIENoZWNrX0RfUmVhZEVycm9yKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW50IENoZWNrX0RfUmVhZEVycm9yKEJZVEUgKnJlZHVuZGFudCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9saXJjL2xpcmNfZW5lMDEwMC5oIGIvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKaW5kZXggNzc2YjY5My4uMDZiZWJkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKQEAgLTgxLDcgKzgxLDcgQEAKIAogLyogQ0lSIGJsb2NrIHNldHRpbmdzICovCiAjZGVmaW5lIEVORV9DSVJfQ09ORjEJCTB4RkVDMAotI2RlZmluZSBFTkVfQ0lSX0NPTkYxX0FEQ19PTgkweDcJIC8qIHJlY2lldmVyIG9uIGdwaW80MCBlbmFibGVkICovCisjZGVmaW5lIEVORV9DSVJfQ09ORjFfQURDX09OCTB4NwkgLyogcmVjZWl2ZXIgb24gZ3BpbzQwIGVuYWJsZWQgKi8KICNkZWZpbmUgRU5FX0NJUl9DT05GMV9MRUFSTjEJKDEgPDwgMykgLyogZW5hYmxlZCBvbiBsZWFybmluZyBtb2RlICovCiAjZGVmaW5lIEVORV9DSVJfQ09ORjFfVFhfT04JMHgzMAkgLyogZW5hYmxlZCBvbiB0cmFuc21pdCAqLwogI2RlZmluZSBFTkVfQ0lSX0NPTkYxX1RYX0NBUlIJKDEgPDwgNykgLyogc2VuZCBUWCBjYXJyaWVyIG9yIG5vdCAqLwpAQCAtOTYsNyArOTYsNyBAQAogCiAvKiB0cmFuc21pdHRlciAtIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKi8KIC8qIEtCMzkyNkMgYW5kIGhpZ2hlciAqLwotLyogdHJhbnNtaXNzaW9uIGlzIHZlcnkgc2ltaWxpYXIgdG8gcmVjaWV2aW5nLCBhIGJ5dGUgaXMgd3JpdHRlbiB0byAqLworLyogdHJhbnNtaXNzaW9uIGlzIHZlcnkgc2ltaWxhciB0byByZWNlaXZpbmcsIGEgYnl0ZSBpcyB3cml0dGVuIHRvICovCiAvKiBFTkVfVFhfSU5QVVQsIGluIHNhbWUgbWFubmVyIGFzIGl0IGlzIHJlYWQgZnJvbSBzYW1wbGUgYnVmZmVyICovCiAvKiBzYW1wbGUgcGVyaW9kIGlzIGZpeGVkKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfaGFuZGxlci5jIGIvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfaGFuZGxlci5jCmluZGV4IGNmY2FhOGUuLjFkOTM5OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyX2hhbmRsZXIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL21lbXJhcl9oYW5kbGVyLmMKQEAgLTY5MCw3ICs2OTAsNyBAQAogICoJQGlub2RlOiBpbm9kZSB0byBvcGVuCiAgKglAZmlscDogZmlsZSBoYW5kbGUKICAqCi0gKglBcyB3ZSBzdXBwb3J0IG11bHRpcGxlIGFyYml0YXJ5IG9wZW5zIHRoZXJlIGlzIG5vIHdvcmsgdG8gYmUgZG9uZQorICoJQXMgd2Ugc3VwcG9ydCBtdWx0aXBsZSBhcmJpdHJhcnkgb3BlbnMgdGhlcmUgaXMgbm8gd29yayB0byBiZSBkb25lCiAgKglyZWFsbHkuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHA0X292ZXJsYXkuYyBiL2RyaXZlcnMvc3RhZ2luZy9tc20vbWRwNF9vdmVybGF5LmMKaW5kZXggZGUyODRjMi4uYjlhY2Y1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHA0X292ZXJsYXkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcDRfb3ZlcmxheS5jCkBAIC02OTYsNyArNjk2LDcgQEAKIAlzdGFnZSA9IHBpcGUtPm1peGVyX3N0YWdlOwogCW1peGVyID0gcGlwZS0+bWl4ZXJfbnVtOwogCi0JaWYgKHBpcGUgIT0gY3RybC0+c3RhZ2VbbWl4ZXJdW3N0YWdlXSkJLyogbm90IHJ1bmluZyAqLworCWlmIChwaXBlICE9IGN0cmwtPnN0YWdlW21peGVyXVtzdGFnZV0pCS8qIG5vdCBydW5uaW5nICovCiAJCXJldHVybjsKIAogCS8qIE1EUF9MQVlFUk1JWEVSX0lOX0NGRywgc2hhcmQgYnkgYm90aCBtaXhlciAwIGFuZCAxICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHBfcHBwX2RxLmMgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcF9wcHBfZHEuYwppbmRleCAzZGMxYzBjLi4zYTY4N2M3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcF9wcHBfZHEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcF9wcHBfZHEuYwpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCW1zbV9mYl9lbnN1cmVfbWVtX2NvaGVyZW5jeV9hZnRlcl9kbWEoam9iLT5pbmZvLCAmam9iLT5yZXEsIDEpOwogCiAJCS8qIFNjaGVkdWxlIGpvYnMgZm9yIGNsZWFudXAKLQkJICogQSBzZXBlcmF0ZSB3b3JrZXIgdGhyZWFkIGRvZXMgdGhpcyAqLworCQkgKiBBIHNlcGFyYXRlIHdvcmtlciB0aHJlYWQgZG9lcyB0aGlzICovCiAJCXF1ZXVlX2RlbGF5ZWRfd29yayhtZHBfcHBwX2Rqb2JfY2xuciwgJmpvYi0+Y2xlYW5lciwKIAkJCW1kcF90aW1lcl9kdXJhdGlvbik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21zbS9tc21fZmIuYyBiL2RyaXZlcnMvc3RhZ2luZy9tc20vbXNtX2ZiLmMKaW5kZXggYTJmMjlkNC4uZTdlZjgzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL21zbS9tc21fZmIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21zbV9mYi5jCkBAIC04NTksNyArODU5LDcgQEAKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgotCQlNU01fRkJfRVJSKCJtc21fZmJfaW5pdDogZmIgJWQgdW5rb3duIGltYWdlIHR5cGUhXG4iLAorCQlNU01fRkJfRVJSKCJtc21fZmJfaW5pdDogZmIgJWQgdW5rbm93biBpbWFnZSB0eXBlIVxuIiwKIAkJCSAgIG1mZC0+aW5kZXgpOwogCQlyZXR1cm4gcmV0OwogCX0KQEAgLTE3OTMsOSArMTc5Myw5IEBACiAvKgogICogTk9URTogVGhlIHVzZXJzcGFjZSBpc3N1ZXMgYmxpdCBvcGVyYXRpb25zIGluIGEgc2VxdWVuY2UsIHRoZSBzZXF1ZW5jZQogICogc3RhcnQgd2l0aCBhIG9wZXJhdGlvbiBtYXJrZWQgU1RBUlQgYW5kIGVuZHMgaW4gYW4gb3BlcmF0aW9uIG1hcmtlZAotICogRU5ELiBJdCBpcyBndXJhbnRlZWQgYnkgdGhlIHVzZXJzcGFjZSB0aGF0IGFsbCB0aGUgYmxpdCBvcGVyYXRpb25zCisgKiBFTkQuIEl0IGlzIGd1YXJhbnRlZWQgYnkgdGhlIHVzZXJzcGFjZSB0aGF0IGFsbCB0aGUgYmxpdCBvcGVyYXRpb25zCiAgKiBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQgYXJlIG9ubHkgd2l0aGluIHRoZSByZWdpb25zIG9mIGFyZWFzIGRlc2lnbmF0ZWQKLSAqIGJ5IHRoZSBTVEFSVCBhbmQgRU5EIG9wZXJhdGlvbnMgYW5kIHRoYXQgdGhlIHVzZXJzcGFjZSBkb2VzbnQgbW9kaWZ5CisgKiBieSB0aGUgU1RBUlQgYW5kIEVORCBvcGVyYXRpb25zIGFuZCB0aGF0IHRoZSB1c2Vyc3BhY2UgZG9lc24ndCBtb2RpZnkKICAqIHRob3NlIGFyZWFzLiBIZW5jZSBpdCB3b3VsZCBiZSBlbm91Z2ggdG8gcGVyZm9ybSBiYXJyaWVyL2NhY2hlIG9wZXJhdGlvbnMKICAqIG9ubHkgb24gdGhlIFNUQVJUIGFuZCBFTkQgb3BlcmF0aW9ucy4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWNtZC1xdWV1ZS5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWNtZC1xdWV1ZS5oCmluZGV4IDU5ZDIyMTQuLjYxNDY1M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1jbWQtcXVldWUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtY21kLXF1ZXVlLmgKQEAgLTIxNCw3ICsyMTQsNyBAQAogCS8qCiAJICogV2FybmluZzogVGhpcyBjb2RlIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggZGV2aWNlcyB0aGF0CiAJICogaGF2ZSAyNTYgcXVldWVzIG9yIGxlc3MuIERldmljZXMgd2l0aCBtb3JlIHRoYW4gMTYgcXVldWVzCi0JICogYXJlIGxheWVkIG91dCBpbiBtZW1vcnkgdG8gYWxsb3cgY29yZXMgcXVpY2sgYWNjZXNzIHRvCisJICogYXJlIGxhaWQgb3V0IGluIG1lbW9yeSB0byBhbGxvdyBjb3JlcyBxdWljayBhY2Nlc3MgdG8KIAkgKiBldmVyeSAxNnRoIHF1ZXVlLiBUaGlzIHJlZHVjZXMgY2FjaGUgdGhyYXNoaW5nIHdoZW4geW91IGFyZQogCSAqIHJ1bm5pbmcgMTYgcXVldWVzIHBlciBwb3J0IHRvIHN1cHBvcnQgbG9ja2xlc3Mgb3BlcmF0aW9uLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWZwYS5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWZwYS5oCmluZGV4IDUwYThjOTEuLjFmMDRmOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1mcGEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtZnBhLmgKQEAgLTE5NSw3ICsxOTUsNyBAQAogCWN2bXhfZnBhX2lvYmRtYV9kYXRhX3QgZGF0YTsKIAogCS8qCi0JICogSGFyZHdhcmUgb25seSB1c2VzIDY0IGJpdCBhbGxpZ25lZCBsb2NhdGlvbnMsIHNvIGNvbnZlcnQKKwkgKiBIYXJkd2FyZSBvbmx5IHVzZXMgNjQgYml0IGFsaWduZWQgbG9jYXRpb25zLCBzbyBjb252ZXJ0CiAJICogZnJvbSBieXRlIGFkZHJlc3MgdG8gNjQtYml0IGluZGV4CiAJICovCiAJZGF0YS5zLnNjcmFkZHIgPSBzY3JfYWRkciA+PiAzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci1ib2FyZC5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci1ib2FyZC5oCmluZGV4IDYxMWE4ZTAuLmI0NjViZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItYm9hcmQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLWJvYXJkLmgKQEAgLTgxLDcgKzgxLDcgQEAKICAqIEBwaHlfYWRkcjogIFRoZSBhZGRyZXNzIG9mIHRoZSBQSFkgdG8gcHJvZ3JhbQogICogQGxpbmtfZmxhZ3M6CiAgKiAgICAgICAgICAgICAgICAgIEZsYWdzIHRvIGNvbnRyb2wgYXV0b25lZ290aWF0aW9uLiAgQml0IDAgaXMgYXV0b25lZ290aWF0aW9uCi0gKiAgICAgICAgICAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRvIG1haW50YWluIGJhY2t3YXJlIGNvbXBhdGFiaWxpdHkuCisgKiAgICAgICAgICAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRvIG1haW50YWluIGJhY2t3YXJlIGNvbXBhdGliaWxpdHkuCiAgKiBAbGlua19pbmZvOiBMaW5rIHNwZWVkIHRvIHByb2dyYW0uIElmIHRoZSBzcGVlZCBpcyB6ZXJvIGFuZCBhdXRvbmVnb3RpYXRpb24KICAqICAgICAgICAgICAgICAgICAgaXMgZW5hYmxlZCwgYWxsIHBvc3NpYmxlIG5lZ290aWF0aW9uIHNwZWVkcyBhcmUgYWR2ZXJ0aXNlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLXV0aWwuYyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItdXRpbC5jCmluZGV4IDQxZWY4YTQuLjEzMTE4MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItdXRpbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItdXRpbC5jCkBAIC0zNjIsNyArMzYyLDcgQEAKIH0KIAogLyoqCi0gKiBSZXR1cm5zIHRoZSBJUEQvUEtPIHBvcnQgbnVtYmVyIGZvciBhIHBvcnQgb24gdGVoIGdpdmVuCisgKiBSZXR1cm5zIHRoZSBJUEQvUEtPIHBvcnQgbnVtYmVyIGZvciBhIHBvcnQgb24gdGhlIGdpdmVuCiAgKiBpbnRlcmZhY2UuCiAgKgogICogQGludGVyZmFjZTogSW50ZXJmYWNlIHRvIHVzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci5jIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci5jCmluZGV4IDU5MTUwNjYuLmU5YzVjODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLmMKQEAgLTY5MSw3ICs2OTEsNyBAQAogCiAJCWlmICghcmV0cnlfY250KQogCQkJY3ZteF9kcHJpbnRmKCJXQVJOSU5HOiBGSVhfSVBEX1BUUl9BTElHTk1FTlQgIgotCQkJCSAgICAgImdldF93b3JrKCkgdGltZW91dCBvY2N1cmVkLlxuIik7CisJCQkJICAgICAiZ2V0X3dvcmsoKSB0aW1lb3V0IG9jY3VycmVkLlxuIik7CiAKIAkJLyogRnJlZSBwYWNrZXQgKi8KIAkJaWYgKHdvcmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtbWRpby5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LW1kaW8uaAppbmRleCBmNDVkYzQ5Li5kODhhYjhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtbWRpby5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1tZGlvLmgKQEAgLTI1NCw3ICsyNTQsNyBAQAogI2RlZmluZSBNRElPX0NMQVVTRV80NV9SRUFEX0lOQyAyCiAjZGVmaW5lIE1ESU9fQ0xBVVNFXzQ1X1JFQUQgICAgIDMKIAotLyogTU1EIGlkZW50aWZpZXJzLCBtb3N0bHkgZm9yIGFjY2Vzc2luZyBkZXZpY2VzIHdpdGhpbmcgWEVOUEFLIG1vZHVsZXMuICovCisvKiBNTUQgaWRlbnRpZmllcnMsIG1vc3RseSBmb3IgYWNjZXNzaW5nIGRldmljZXMgd2l0aGluIFhFTlBBSyBtb2R1bGVzLiAqLwogI2RlZmluZSBDVk1YX01NRF9ERVZJQ0VfUE1BX1BNRCAgICAgIDEKICNkZWZpbmUgQ1ZNWF9NTURfREVWSUNFX1dJUyAgICAgICAgICAyCiAjZGVmaW5lIENWTVhfTU1EX0RFVklDRV9QQ1MgICAgICAgICAgMwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBrby5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBrby5oCmluZGV4IGYwNjhjMTkuLmRlMzQxMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wa28uaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtcGtvLmgKQEAgLTk4LDcgKzk4LDcgQEAKIAkvKgogCSAqIFBLTyBkb2Vzbid0IGRvIGFueSBsb2NraW5nLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCiAJICogYXBwbGljYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgY29yZSBpcyBhY2Nlc3NpbmcKLQkgKiB0aGUgc2FtZSBxdWV1ZSBhdCB0aGUgc21hZSB0aW1lCisJICogdGhlIHNhbWUgcXVldWUgYXQgdGhlIHNhbWUgdGltZQogCSAqLwogCUNWTVhfUEtPX0xPQ0tfTk9ORSA9IDAsCiAJLyoKQEAgLTMyNCw3ICszMjQsNyBAQAogICogLSBDVk1YX1BLT19MT0NLX05PTkUKICAqICAgICAgLSBQS08gZG9lc24ndCBkbyBhbnkgbG9ja2luZy4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5CiAgKiAgICAgICAgICBvZiB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgY29yZQotICogICAgICAgICAgaXMgYWNjZXNzaW5nIHRoZSBzYW1lIHF1ZXVlIGF0IHRoZSBzbWFlIHRpbWUuCisgKiAgICAgICAgICBpcyBhY2Nlc3NpbmcgdGhlIHNhbWUgcXVldWUgYXQgdGhlIHNhbWUgdGltZS4KICAqIC0gQ1ZNWF9QS09fTE9DS19BVE9NSUNfVEFHCiAgKiAgICAgIC0gUEtPIHBlcmZvcm1zIGFuIGF0b21pYyB0YWdzd2l0Y2ggdG8gaW5zdXJlIGV4Y2x1c2l2ZQogICogICAgICAgICAgYWNjZXNzIHRvIHRoZSBvdXRwdXQgcXVldWUuIFRoaXMgd2lsbCBtYWludGFpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBvdy5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBvdy5oCmluZGV4IGJmOWUwNjkuLjk5OWFlZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wb3cuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtcG93LmgKQEAgLTE0OTIsOCArMTQ5Miw4IEBACiAvKioKICAqIFN3aXRjaCB0byBhIE5VTEwgdGFnLCB3aGljaCBlbmRzIGFueSBvcmRlcmluZyBvcgogICogc3luY2hyb25pemF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBQT1cgZm9yIHRoZSBjdXJyZW50Ci0gKiB3b3JrIHF1ZXVlIGVudHJ5LiAgVGhpcyBvcGVyYXRpb24gY29tcGxldGVzIGltbWVkaWF0bHksCi0gKiBzbyBjb21wbGV0ZXRpb24gc2hvdWxkIG5vdCBiZSB3YWl0ZWQgZm9yLgorICogd29yayBxdWV1ZSBlbnRyeS4gIFRoaXMgb3BlcmF0aW9uIGNvbXBsZXRlcyBpbW1lZGlhdGVseSwKKyAqIHNvIGNvbXBsZXRpb24gc2hvdWxkIG5vdCBiZSB3YWl0ZWQgZm9yLgogICogVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCB3YWl0IGZvciBwcmV2aW91cyB0YWcgc3dpdGNoZXMgdG8gY29tcGxldGUsCiAgKiBzbyB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgYW55IHByZXZpb3VzIHRhZyBzd2l0Y2hlcyBoYXZlIGNvbXBsZXRlZC4KICAqLwpAQCAtMTUzMiw4ICsxNTMyLDggQEAKIC8qKgogICogU3dpdGNoIHRvIGEgTlVMTCB0YWcsIHdoaWNoIGVuZHMgYW55IG9yZGVyaW5nIG9yCiAgKiBzeW5jaHJvbml6YXRpb24gcHJvdmlkZWQgYnkgdGhlIFBPVyBmb3IgdGhlIGN1cnJlbnQKLSAqIHdvcmsgcXVldWUgZW50cnkuICBUaGlzIG9wZXJhdGlvbiBjb21wbGV0ZXMgaW1tZWRpYXRseSwKLSAqIHNvIGNvbXBsZXRldGlvbiBzaG91bGQgbm90IGJlIHdhaXRlZCBmb3IuCisgKiB3b3JrIHF1ZXVlIGVudHJ5LiAgVGhpcyBvcGVyYXRpb24gY29tcGxldGVzIGltbWVkaWF0ZWx5LAorICogc28gY29tcGxldGlvbiBzaG91bGQgbm90IGJlIHdhaXRlZCBmb3IuCiAgKiBUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciBhbnkgcGVuZGluZyB0YWcgc3dpdGNoZXMgdG8gY29tcGxldGUKICAqIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBzd2l0Y2ggdG8gTlVMTC4KICAqLwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAKIAogLyoqCiAgKiBQZXJmb3JtcyBhIHRhZyBzd2l0Y2ggYW5kIHRoZW4gYW4gaW1tZWRpYXRlIGRlc2NoZWR1bGUuIFRoaXMgY29tcGxldGVzCi0gKiBpbW1lZGlhdGx5LCBzbyBjb21wbGV0aW9uIG11c3Qgbm90IGJlIHdhaXRlZCBmb3IuICBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UCisgKiBpbW1lZGlhdGVseSwgc28gY29tcGxldGlvbiBtdXN0IG5vdCBiZSB3YWl0ZWQgZm9yLiAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVAogICogdXBkYXRlIHRoZSB3cWUgaW4gRFJBTSB0byBtYXRjaCBhcmd1bWVudHMuCiAgKgogICogVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCB3YWl0IGZvciBhbnkgcHJpb3IgdGFnIHN3aXRjaGVzIHRvIGNvbXBsZXRlLCBzbyB0aGUKQEAgLTE3NTgsNyArMTc1OCw3IEBACiAKIC8qKgogICogUGVyZm9ybXMgYSB0YWcgc3dpdGNoIGFuZCB0aGVuIGFuIGltbWVkaWF0ZSBkZXNjaGVkdWxlLiBUaGlzIGNvbXBsZXRlcwotICogaW1tZWRpYXRseSwgc28gY29tcGxldGlvbiBtdXN0IG5vdCBiZSB3YWl0ZWQgZm9yLiAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVAorICogaW1tZWRpYXRlbHksIHNvIGNvbXBsZXRpb24gbXVzdCBub3QgYmUgd2FpdGVkIGZvci4gIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QKICAqIHVwZGF0ZSB0aGUgd3FlIGluIERSQU0gdG8gbWF0Y2ggYXJndW1lbnRzLgogICoKICAqIFRoaXMgZnVuY3Rpb24gd2FpdHMgZm9yIGFueSBwcmlvciB0YWcgc3dpdGNoZXMgdG8gY29tcGxldGUsIHNvIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC11dGlsLmggYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXV0aWwuaAppbmRleCAyMzQ2NzU2Li5jNzQ1YTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXV0aWwuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXV0aWwuaApAQCAtNTUsNyArNTUsNyBAQAogCQlyZXR1cm4gMjsKIAllbHNlIGlmIChpcGRfcG9ydCA8IDQwKQkvKiBJbnRlcmZhY2UgMyBmb3IgbG9vcGJhY2sgKi8KIAkJcmV0dXJuIDM7Ci0JZWxzZSBpZiAoaXBkX3BvcnQgPT0gNDApCS8qIE5vbiBleGlzdGFudCBpbnRlcmZhY2UgZm9yIFBPVzAgKi8KKwllbHNlIGlmIChpcGRfcG9ydCA9PSA0MCkJLyogTm9uIGV4aXN0ZW50IGludGVyZmFjZSBmb3IgUE9XMCAqLwogCQlyZXR1cm4gNDsKIAllbHNlCiAJCXBhbmljKCJJbGxlZ2FsIGlwZF9wb3J0ICVkIHBhc3NlZCB0byBJTlRFUkZBQ0VcbiIsIGlwZF9wb3J0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uX3hvXzEuYyBiL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uX3hvXzEuYwppbmRleCBiMTU0YmU3Li5iNWQyMWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbl94b18xLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL29scGNfZGNvbi9vbHBjX2Rjb25feG9fMS5jCkBAIC04MCw3ICs4MCw3IEBACiAJbG9iICY9IH4oMSA8PCBEQ09OX0lSUSk7CiAJb3V0Yihsb2IsIDB4NGQwKTsKIAotCS8qIFJlZ2lzdGVyIHRoZSBpbnRlcnVwdCBoYW5kbGVyICovCisJLyogUmVnaXN0ZXIgdGhlIGludGVycnVwdCBoYW5kbGVyICovCiAJaWYgKHJlcXVlc3RfaXJxKERDT05fSVJRLCAmZGNvbl9pbnRlcnJ1cHQsIDAsICJEQ09OIiwgZGNvbikpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJvbHBjLWRjb246IGZhaWxlZCB0byByZXF1ZXN0IERDT04ncyBpcnFcbiIpOwogCQlnb3RvIGVycl9yZXFfaXJxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3BvaG1lbGZzL2NyeXB0by5jIGIvZHJpdmVycy9zdGFnaW5nL3BvaG1lbGZzL2NyeXB0by5jCmluZGV4IDY1NDA4NjQuLjVjY2EyNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9wb2htZWxmcy9jcnlwdG8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcG9obWVsZnMvY3J5cHRvLmMKQEAgLTc0NSw3ICs3NDUsNyBAQAogCiAJLyoKIAkgKiBBdCB0aGlzIHBvaW50IE5FVEZTX0NBUEFCSUxJVElFUyByZXNwb25zZSBjb21tYW5kCi0JICogc2hvdWxkIHNldHVwIHN1cGVyYmxvY2sgaW4gYSB3YXksIHdoaWNoIGlzIGFjY2VwdGlibGUKKwkgKiBzaG91bGQgc2V0dXAgc3VwZXJibG9jayBpbiBhIHdheSwgd2hpY2ggaXMgYWNjZXB0YWJsZQogCSAqIGZvciBib3RoIGNsaWVudCBhbmQgc2VydmVyLCBzbyBpZiBzZXJ2ZXIgcmVmdXNlcyBjb25uZWN0aW9uLAogCSAqIGl0IHdpbGwgc2VuZCBlcnJvciBpbiB0cmFuc2FjdGlvbiByZXNwb25zZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9xdWF0ZWNoX3VzYjIvcXVhdGVjaF91c2IyLmMgYi9kcml2ZXJzL3N0YWdpbmcvcXVhdGVjaF91c2IyL3F1YXRlY2hfdXNiMi5jCmluZGV4IGM0NWIwOWUuLmNhMDk4Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9xdWF0ZWNoX3VzYjIvcXVhdGVjaF91c2IyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3F1YXRlY2hfdXNiMi9xdWF0ZWNoX3VzYjIuYwpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgKiB2YWx1ZSBvZiB0aGUgbGluZSBzdGF0dXMgZmxhZ3MgZnJvbSB0aGUgcG9ydAogICogQHNoYWRvd01TUjogTGFzdCByZWNlaXZlZCBzdGF0ZSBvZiB0aGUgbW9kZW0gc3RhdHVzIHJlZ2lzdGVyLCBob2xkcwogICogdGhlIHZhbHVlIG9mIHRoZSBtb2RlbSBzdGF0dXMgcmVjZWl2ZWQgZnJvbSB0aGUgcG9ydAotICogQHJjdl9mbHVzaDogRmxhZyBpbmRpY2F0aW5nIHRoYXQgYSByZWNlaXZlIGZsdXNoIGhhcyBvY2N1cmVkIG9uCisgKiBAcmN2X2ZsdXNoOiBGbGFnIGluZGljYXRpbmcgdGhhdCBhIHJlY2VpdmUgZmx1c2ggaGFzIG9jY3VycmVkIG9uCiAgKiB0aGUgaGFyZHdhcmUuCiAgKiBAeG1pdF9mbHVzaDogRmxhZyBpbmRpY2F0aW5nIHRoYXQgYSB0cmFuc21pdCBmbHVzaCBoYXMgYmVlbiBwcm9jZXNzZWQgYnkKICAqIHRoZSBoYXJkd2FyZS4KQEAgLTE1Niw3ICsxNTYsNyBAQAogICogaW5jbHVkZXMgdGhlIHNpemUgKGV4Y2x1ZGluZyBoZWFkZXIpIG9mIFVSQnMgdGhhdCBoYXZlIGJlZW4gc3VibWl0dGVkIGJ1dAogICogaGF2ZSBub3QgeWV0IGJlZW4gc2VudCB0byB0byB0aGUgZGV2aWNlLCBhbmQgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gc2VudCBvdXQKICAqIG9mIHRoZSBwb3J0IGJ1dCBub3QgeWV0IHJlcG9ydGVkIHNlbnQgYnkgdGhlICJ4bWl0X2VtcHR5IiBtZXNzYWdlcyAod2hpY2gKLSAqIGluZGljYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBlYWNoIHRpbWUgdGhleSBhcmUgcmVjaWV2ZWQsIGRlc3BpdGUgdGhlCisgKiBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgZWFjaCB0aW1lIHRoZXkgYXJlIHJlY2VpdmVkLCBkZXNwaXRlIHRoZQogICogbWlzbGVhZGluZyBuYW1lKS4KICAqIC0gU3RhcnRzIGF0IHplcm8gd2hlbiBwb3J0IGlzIGluaXRpYWxpc2VkLgogICogLSBpcyBpbmNyZW1lbnRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgZGF0YSB0byBiZSB3cml0dGVuIChubyBoZWFkZXJzKQpAQCAtNjQ5LDcgKzY0OSw3IEBACiAJLyogYWx0aG91Z2ggdGhlIFVTQiBzaWRlIGlzIG5vdyBlbXB0eSwgdGhlIFVBUlQgaXRzZWxmIG1heQogCSAqIHN0aWxsIGJlIHB1c2hpbmcgY2hhcmFjdGVycyBvdXQgb3ZlciB0aGUgbGluZSwgc28gd2UgaGF2ZSB0bwogCSAqIHdhaXQgdGVzdGluZyB0aGUgYWN0dWFsIGxpbmUgc3RhdHVzIHVudGlsIHRoZSBsaW5lcyBjaGFuZ2UKLQkgKiBpbmRpY2F0aW5nIHRoYXQgdGhlIGRhdGEgaXMgZG9uZSB0cmFuc2ZlcmluZy4gKi8KKwkgKiBpbmRpY2F0aW5nIHRoYXQgdGhlIGRhdGEgaXMgZG9uZSB0cmFuc2ZlcnJpbmcuICovCiAJLyogRklYTUU6IHNsb3cgdGhpcyBwb2xsaW5nIGRvd24gc28gaXQgZG9lc24ndCBydW4gdGhlIFVTQiBidXMgZmxhdCBvdXQKIAkgKiBpZiBpdCBhY3R1YWxseSBoYXMgdG8gc3BlbmQgYW55IHRpbWUgaW4gdGhpcyBsb29wICh3aGljaCBpdCBub3JtYWxseQogCSAqIGRvZXNuJ3QgYmVjYXVzZSB0aGUgYnVmZmVyIGlzIG5lYXJseSBlbXB0eSkgKi8KQEAgLTcyNiw3ICs3MjYsNyBAQAogCQlyZXR1cm4gMDsKIAl9IGVsc2UgaWYgKHBvcnRfZXh0cmEtPnR4X3BlbmRpbmdfYnl0ZXMgPj0gUVQyX0ZJRk9fREVQVEgpIHsKIAkJLyogYnVmZmVyIGlzIGZ1bGwgKD09KS4gPiBzaG91bGQgbm90IG9jY3VyLCBidXQgd291bGQgaW5kaWNhdGUKLQkJICogdGhhdCBhbiBvdmVyZmxvdyBoYWQgb2NjdXJlZCAqLworCQkgKiB0aGF0IGFuIG92ZXJmbG93IGhhZCBvY2N1cnJlZCAqLwogCQlkYmcoIiVzKCk6IHBvcnQgdHJhbnNtaXQgYnVmZmVyIGlzIGZ1bGwhIiwgX19mdW5jX18pOwogCQkvKiBzY2hlZHVsZV93b3JrKCZwb3J0LT53b3JrKTsgY29tbWVudGVkIGluIHZlbmRvciBkcml2ZXIgKi8KIAkJcmV0dXJuIDA7CkBAIC04MjMsNyArODIzLDcgQEAKIAkgKiByZWR1Y2UgdGhlIGZyZWUgc3BhY2UgY291bnQgYnkgdGhlIHNpemUgb2YgdGhlIGRpc3BhdGNoZWQgd3JpdGUuCiAJICogV2hlbiBhICJ0cmFuc21pdCBlbXB0eSIgbWVzc2FnZSBjb21lcyBiYWNrIHVwIHRoZSBVU0IgcmVhZCBzdHJlYW0sCiAJICogd2UgZGVjcmVtZW50IHRoZSBjb3VudCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcG9ydGVkIHNlbnQsIHRodXMKLQkgKiBrZWVwaW5nIHRyYWNrIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2VudCBhbmQgcmVjaWV2ZWQgYnl0ZXMuCisJICoga2VlcGluZyB0cmFjayBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNlbnQgYW5kIHJlY2VpdmVkIGJ5dGVzLgogCSAqLwogCiAJcm9vbSA9IChRVDJfRklGT19ERVBUSCAtIHBvcnRfZXh0cmEtPnR4X3BlbmRpbmdfYnl0ZXMpOwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAKIAl9CiB9CiAKLS8qKiBAYnJpZWYgUmV0cmVpdmUgdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgZnJvbSB0aGUgZGV2aWNlCisvKiogQGJyaWVmIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIGZyb20gdGhlIGRldmljZQogICoKICAqIElzc3VlcyBhIEdFVF9SRUdJU1RFUiB2ZW5kb3Itc3BjaWZpYyByZXF1ZXN0IG92ZXIgdGhlIFVTQiBjb250cm9sCiAgKiBwaXBlIHRvIG9idGFpbiBhIHZhbHVlIGJhY2sgZnJvbSBhIHNwZWNpZmljIHJlZ2lzdGVyIG9uIGEgc3BlY2lmaWMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY2hpcC9ydG1wX3BoeS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmgKaW5kZXggOTg0NTRkZi4uYTUyMjIxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQAogCQkJREJHUFJJTlRfRVJSKCJCQlAgd3JpdGUgUiVkPTB4JXggZmFpbC4gQnVzeUNudD0gJWQuYlBDSWNsa09mZiA9ICVkLiBcbiIsIF9JLCBCYnBDc3Iud29yZCwgQnVzeUNudCwgKF9BKS0+YlBDSWNsa09mZik7CVwKIAkJfQkJCQkJCQkJCQkJCQkJCQkJXAogCX0gZWxzZSB7CQkJCQkJCVwKLQkJREJHUFJJTlRfRVJSKCIqKioqKiogQkJQX1dyaXRlX0xhdGNoIEJ1ZmZlciBleGNlZWRzIG1heCBib3VuZHJ5ICoqKioqKiBcbiIpOwlcCisJCURCR1BSSU5UX0VSUigiKioqKioqIEJCUF9Xcml0ZV9MYXRjaCBCdWZmZXIgZXhjZWVkcyBtYXggYm91bmRhcnkgKioqKioqIFxuIik7CVwKIAl9CQkJCQkJCQkJCQkJCQkJCQkJXAogfQogI2VuZGlmIC8qIFJUTVBfTUFDX1BDSSAvLyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vYmFfYWN0aW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYwppbmRleCA2MmY2ZjZiLi4xMzNiYzFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIi4uL3J0X2NvbmZpZy5oIgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogCi0jZGVmaW5lIEJBX09SSV9JTklUX1NFUQkJKHBFbnRyeS0+VHhTZXFbVElEXSkJLyoxICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGFsIHNlcXVlbmNlIG51bWJlciBvZiBCQSBzZXNzaW9uICovCisjZGVmaW5lIEJBX09SSV9JTklUX1NFUQkJKHBFbnRyeS0+VHhTZXFbVElEXSkJLyoxICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbCBzZXF1ZW5jZSBudW1iZXIgb2YgQkEgc2Vzc2lvbiAqLwogCiAjZGVmaW5lIE9SSV9TRVNTSU9OX01BWF9SRVRSWQk4CiAjZGVmaW5lIE9SSV9CQV9TRVNTSU9OX1RJTUVPVVQJKDIwMDApCS8qIG1zICovCkBAIC0xNDg3LDcgKzE0ODcsNyBAQAogCiAJCS8qCiAJCSAqIGZsdXNoIGFsbCBwZW5kaW5nIHJlb3JkZXJpbmcgbXBkdXMKLQkJICogYW5kIHJlY2V2aW5nIG1wZHUgdG8gdXBwZXIgbGF5ZXIKKwkJICogYW5kIHJlY2VpdmluZyBtcGR1IHRvIHVwcGVyIGxheWVyCiAJCSAqIG1ha2UgdGNwL2lwIHRvIHRha2UgY2FyZSByZW9yZGVyaW5nIG1lY2hhbmlzbQogCQkgKi8KIAkJLypiYV9yZWZyZXNoX3Jlb3JkZXJpbmdfbXBkdXMocEFkLCBwQkFFbnRyeSk7ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fYWVzLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fYWVzLmMKaW5kZXggYTk5ODc5Yi4uZDcwZDIyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2Flcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9hZXMuYwpAQCAtODU4LDcgKzg1OCw3IEBACiBzdGF0aWMgdWludDMyIEtUMlsyNTZdOwogc3RhdGljIHVpbnQzMiBLVDNbMjU2XTsKIAotLyogcGxhdGZvcm0taW5kZXBlbmRhbnQJMzItYml0IGludGVnZXIgbWFuaXB1bGF0aW9uCW1hY3JvcyAqLworLyogcGxhdGZvcm0taW5kZXBlbmRlbnQJMzItYml0IGludGVnZXIgbWFuaXB1bGF0aW9uCW1hY3JvcyAqLwogCiAjZGVmaW5lCUdFVF9VSU5UMzIobixiLGkpCQkJCQkJXAogewkJCQkJCQkJCQkJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9jZmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9jZmcuYwppbmRleCAyNGY0MzkzLi43MjdmNzk5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2NmZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9jZmcuYwpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICAgIHBBZGFwdGVyCVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKICAgICAgICAga2V5U3RyaW5nCVdQQSBwcmUtc2hhcmVkIGtleSBzdHJpbmcKICAgICAgICAgcEhhc2hTdHIJU3RyaW5nIHVzZWQgZm9yIHBhc3N3b3JkIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgaGFzaFN0ckxlbglMZW5naHQgb2YgdGhlIGhhc2ggc3RyaW5nCisgICAgICAgIGhhc2hTdHJMZW4JTGVuZ3RoIG9mIHRoZSBoYXNoIHN0cmluZwogICAgICAgICBwUE1LQnVmCQlPdXRwdXQgYnVmZmVyIG9mIFdQQVBTSyBrZXkKIAogICAgIFJldHVybjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YS5jCmluZGV4IGY2YzE5M2MuLjMzNzk5ZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGEuYwpAQCAtMzM3LDcgKzMzNyw3IEBACiAKIAkvKiAqLwogCS8qIEluIFdNTS1VQVBTRCwgbWxtZSBmcmFtZSBzaG91bGQgYmUgc2V0IHBzbSBhcyBwb3dlciBzYXZpbmcgYnV0IHByb2JlIHJlcXVlc3QgZnJhbWUgKi8KLQkvKiBEYXRhLU51bGwgcGFja2V0cyBhbHNlIHBhc3MgdGhyb3VnaCBNTVJlcXVlc3QgaW4gUlQyODYwLCBob3dldmVyLCB3ZSBob3BlIGNvbnRyb2wgdGhlIHBzbSBiaXQgdG8gcGFzcyBBUFNEICovCisJLyogRGF0YS1OdWxsIHBhY2tldHMgYWxzbyBwYXNzIHRocm91Z2ggTU1SZXF1ZXN0IGluIFJUMjg2MCwgaG93ZXZlciwgd2UgaG9wZSBjb250cm9sIHRoZSBwc20gYml0IHRvIHBhc3MgQVBTRCAqLwogLyogICAgICBpZiAoKHBIZWFkZXJfODAyXzExLT5GQy5UeXBlICE9IEJUWVBFX0RBVEEpICYmIChwSGVhZGVyXzgwMl8xMS0+RkMuVHlwZSAhPSBCVFlQRV9DTlRMKSkgKi8KIAl7CiAJCWlmICgocEhlYWRlcl84MDJfMTEtPkZDLlN1YlR5cGUgPT0gU1VCVFlQRV9BQ1RJT04pIHx8CkBAIC0xOTMzLDcgKzE5MzMsNyBAQAogCiAJaWYgKFR5cGVMZW4gPD0gMTUwMCkgewkvKiA4MDIuMywgODAyLjMgTExDICovCiAJCS8qCi0JCSAgIERlc3RNQUMoNikgKyBTcmNNQUMoNikgKyBMZW5naHQoMikgKworCQkgICBEZXN0TUFDKDYpICsgU3JjTUFDKDYpICsgTGVuZ3RoKDIpICsKIAkJICAgRFNBUCgxKSArIFNTQVAoMSkgKyBDb250cm9sKDEpICsKIAkJICAgaWYgdGhlIERTQVAgPSAweEFBLCBTU0FQPTB4QUEsIENvbnRvcmwgPSAweDAzLCBpdCBoYXMgYSA1LWJ5dGVzIFNOQVAgaGVhZGVyLgogCQkgICA9PiArIFNOQVAgKDUsIE9yaWdpbmF0aW9uSUQoMykgKyBldGhlclR5cGUoMikpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YV9wY2kuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3BjaS5jCmluZGV4IDdhZjU5ZmYuLmJlZjBiYmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3BjaS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3BjaS5jCkBAIC00MzgsMTMgKzQzOCwxMyBAQAogCS8qIEFkZCBSeCBzaXplIHRvIGNoYW5uZWwgbG9hZCBjb3VudGVyLCB3ZSBzaG91bGQgaWdub3JlIGVycm9yIGNvdW50cyAqLwogCXBBZC0+U3RhQ2ZnLkNMQnVzeUJ5dGVzICs9IChwUnhELT5TREwwICsgMTQpOwogCi0JLyogRHJvcCBUb0RzIHByb21pc2NvdXMgZnJhbWUsIGl0IGlzIG9wZW5lZCBkdWUgdG8gQ0NYIDIgY2hhbm5lbCBsb2FkIHN0YXRpc3RpY3MgKi8KKwkvKiBEcm9wIFRvRHMgcHJvbWlzY3VvdXMgZnJhbWUsIGl0IGlzIG9wZW5lZCBkdWUgdG8gQ0NYIDIgY2hhbm5lbCBsb2FkIHN0YXRpc3RpY3MgKi8KIAlpZiAocEhlYWRlciAhPSBOVUxMKSB7CiAJCWlmIChwSGVhZGVyLT5GQy5Ub0RzKSB7CiAJCQlyZXR1cm4gKE5ESVNfU1RBVFVTX0ZBSUxVUkUpOwogCQl9CiAJfQotCS8qIERyb3Agbm90IFUyTSBmcmFtZXMsIGNhbnQncyBkcm9wIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIGRyb3AgYmVhY29uIGluIHRoaXMgY2FzZSAqLworCS8qIERyb3Agbm90IFUyTSBmcmFtZXMsIGNhbid0J3MgZHJvcCBoZXJlIGJlY2F1c2Ugd2Ugd2lsbCBkcm9wIGJlYWNvbiBpbiB0aGlzIGNhc2UgKi8KIAkvKiBJIGFtIGtpbmQgb2YgZG91YnRpbmcgdGhlIFUyTSBiaXQgb3BlcmF0aW9uICovCiAJLyogaWYgKHBSeEQtPlUyTSA9PSAwKSAqLwogCS8qICAgICAgcmV0dXJuKE5ESVNfU1RBVFVTX0ZBSUxVUkUpOyAqLwpAQCAtOTM5LDcgKzkzOSw3IEBACiAJLyogKi8KIAkvKiAqLwogCS8qIEluIFdNTS1VQVBTRCwgbWxtZSBmcmFtZSBzaG91bGQgYmUgc2V0IHBzbSBhcyBwb3dlciBzYXZpbmcgYnV0IHByb2JlIHJlcXVlc3QgZnJhbWUgKi8KLQkvKiBEYXRhLU51bGwgcGFja2V0cyBhbHNlIHBhc3MgdGhyb3VnaCBNTVJlcXVlc3QgaW4gUlQyODYwLCBob3dldmVyLCB3ZSBob3BlIGNvbnRyb2wgdGhlIHBzbSBiaXQgdG8gcGFzcyBBUFNEICovCisJLyogRGF0YS1OdWxsIHBhY2tldHMgYWxzbyBwYXNzIHRocm91Z2ggTU1SZXF1ZXN0IGluIFJUMjg2MCwgaG93ZXZlciwgd2UgaG9wZSBjb250cm9sIHRoZSBwc20gYml0IHRvIHBhc3MgQVBTRCAqLwogCWlmIChwSGVhZGVyXzgwMl8xMS0+RkMuVHlwZSAhPSBCVFlQRV9EQVRBKSB7CiAJCWlmICgocEhlYWRlcl84MDJfMTEtPkZDLlN1YlR5cGUgPT0gU1VCVFlQRV9QUk9CRV9SRVEpCiAJCSAgICB8fCAhKHBBZC0+Q29tbW9uQ2ZnLmJBUFNEQ2FwYWJsZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfdXNiLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YV91c2IuYwppbmRleCA3YzU2YzJmLi41NjM3ODU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YV91c2IuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YV91c2IuYwpAQCAtNzAyLDcgKzcwMiw3IEBACiAJKnBSeFBlbmRpbmcJCQlwZW5kaW5nIHJlY2VpdmVkIHBhY2tldCBmbGFnCiAKIFJldHVybiBWYWx1ZToKLSAgICB0aGUgcmVjaWV2ZWQgcGFja2V0CisgICAgdGhlIHJlY2VpdmVkIHBhY2tldAogCiBOb3RlOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC04NTAsNyArODUwLDcgQEAKIAkvKiBBZGQgUnggc2l6ZSB0byBjaGFubmVsIGxvYWQgY291bnRlciwgd2Ugc2hvdWxkIGlnbm9yZSBlcnJvciBjb3VudHMgKi8KIAlwQWQtPlN0YUNmZy5DTEJ1c3lCeXRlcyArPSAocFJ4V0ktPk1QRFV0b3RhbEJ5dGVDb3VudCArIDE0KTsKIAotCS8qIERyb3AgVG9EcyBwcm9taXNjb3VzIGZyYW1lLCBpdCBpcyBvcGVuZWQgZHVlIHRvIENDWCAyIGNoYW5uZWwgbG9hZCBzdGF0aXN0aWNzICovCisJLyogRHJvcCBUb0RzIHByb21pc2N1b3VzIGZyYW1lLCBpdCBpcyBvcGVuZWQgZHVlIHRvIENDWCAyIGNoYW5uZWwgbG9hZCBzdGF0aXN0aWNzICovCiAJaWYgKHBIZWFkZXItPkZDLlRvRHMpIHsKIAkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLCAoIkVycjtGQy5Ub0RzXG4iKSk7CiAJCXJldHVybiBORElTX1NUQVRVU19GQUlMVVJFOwpAQCAtODYwLDcgKzg2MCw3IEBACiAJCURCR1BSSU5UX1JBVyhSVF9ERUJVR19FUlJPUiwgKCJyZWNlaXZlZCBwYWNrZXQgdG9vIGxvbmdcbiIpKTsKIAkJcmV0dXJuIE5ESVNfU1RBVFVTX0ZBSUxVUkU7CiAJfQotCS8qIERyb3Agbm90IFUyTSBmcmFtZXMsIGNhbnQncyBkcm9wIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIGRyb3AgYmVhY29uIGluIHRoaXMgY2FzZSAqLworCS8qIERyb3Agbm90IFUyTSBmcmFtZXMsIGNhbid0J3MgZHJvcCBoZXJlIGJlY2F1c2Ugd2Ugd2lsbCBkcm9wIGJlYWNvbiBpbiB0aGlzIGNhc2UgKi8KIAkvKiBJIGFtIGtpbmQgb2YgZG91YnRpbmcgdGhlIFUyTSBiaXQgb3BlcmF0aW9uICovCiAJLyogaWYgKHBSeEQtPlUyTSA9PSAwKSAqLwogCS8qICAgICAgcmV0dXJuKE5ESVNfU1RBVFVTX0ZBSUxVUkUpOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX21hY19wY2kuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9tYWNfcGNpLmMKaW5kZXggMjFlZWQyNS4uZDA2ZjBhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX21hY19wY2kuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fbWFjX3BjaS5jCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQAogCSAgIHBBZC0+Q2hlY2tEbWFCdXN5Q291bnQgPSAwOwogCSAgIH0KIAkgKi8KLS8qS0ggRGVidWc6TXkgb3JpZ2luYWwgY29kZXMgaGF2ZSB0aGUgZm9sbHdvaW5nIGNvZGVzLCBidXQgY3VycmVjbnQgY29kZXMgZG8gbm90IGhhdmUgaXQuICovCisvKktIIERlYnVnOk15IG9yaWdpbmFsIGNvZGVzIGhhdmUgdGhlIGZvbGxvd2luZyBjb2RlcywgYnV0IGN1cnJlY250IGNvZGVzIGRvIG5vdCBoYXZlIGl0LiAqLwogLyogRGlzYWJsZSBmb3Igc3RhYmlsaXR5LiBJZiBQQ0lFIExpbmsgQ29udHJvbCBpcyBtb2RpZmllZCBmb3IgYWR2YW5jZSBwb3dlciBzYXZlLCByZS1jb3ZlcnkgdGhpcyBjb2RlIHNlZ21lbnQuICovCiAJUlRNUF9JT19XUklURTMyKHBBZCwgUEJGX1NZU19DVFJMLCAweDEyODApOwogLypPUFNUQVRVU19TRVRfRkxBRyhwQWQsIGZPUF9TVEFUVVNfQ0xLU0VMRUNUXzQwTUhaKTsgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zYW5pdHkuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zYW5pdHkuYwppbmRleCA2YjAwM2M5Li4zYmZiNGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc2FuaXR5LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3Nhbml0eS5jCkBAIC02Nyw3ICs2Nyw3IEBACiAKIAlpZiAoKE1zZ0xlbiAhPSBzaXplb2Yoc3RydWN0IHJ0X21sbWVfYWRkYmFfcmVxKSkpIHsKIAkJREJHUFJJTlQoUlRfREVCVUdfVFJBQ0UsCi0JCQkgKCJNbG1lQWRkQkFSZXFTYW5pdHkgZmFpbCAtIG1lc3NhZ2UgbGVuZ2h0IG5vdCBjb3JyZWN0LlxuIikpOworCQkJICgiTWxtZUFkZEJBUmVxU2FuaXR5IGZhaWwgLSBtZXNzYWdlIGxlbmd0aCBub3QgY29ycmVjdC5cbiIpKTsKIAkJcmV0dXJuIEZBTFNFOwogCX0KIApAQCAtMTA0LDcgKzEwNCw3IEBACiAKIAlpZiAoKE1zZ0xlbiAhPSBzaXplb2Yoc3RydWN0IHJ0X21sbWVfZGVsYmFfcmVxKSkpIHsKIAkJREJHUFJJTlQoUlRfREVCVUdfRVJST1IsCi0JCQkgKCJNbG1lRGVsQkFSZXFTYW5pdHkgZmFpbCAtIG1lc3NhZ2UgbGVuZ2h0IG5vdCBjb3JyZWN0LlxuIikpOworCQkJICgiTWxtZURlbEJBUmVxU2FuaXR5IGZhaWwgLSBtZXNzYWdlIGxlbmd0aCBub3QgY29ycmVjdC5cbiIpKTsKIAkJcmV0dXJuIEZBTFNFOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3N5bmMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zeW5jLmMKaW5kZXggZjg0MTk0ZC4uYWVmZTFiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3N5bmMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc3luYy5jCkBAIC02OTQsNyArNjk0LDcgQEAKIAkJCU1pbmlwb3J0TU1SZXF1ZXN0KHBBZCwgMCwgcE91dEJ1ZmZlciwgRnJhbWVMZW4pOwogCQkJTWxtZUZyZWVNZW1vcnkocEFkLCBwT3V0QnVmZmVyKTsKIAkJfQotCQkvKiBGb3IgU0NBTl9DSVNDT19QQVNTSVZFLCBkbyBub3RoaW5nIGFuZCBzaWxlbnRseSB3YWl0IGZvciBiZWFjb24gb3Igb3RoZXIgcHJvYmUgcmVwb25zZSAqLworCQkvKiBGb3IgU0NBTl9DSVNDT19QQVNTSVZFLCBkbyBub3RoaW5nIGFuZCBzaWxlbnRseSB3YWl0IGZvciBiZWFjb24gb3Igb3RoZXIgcHJvYmUgcmVzcG9uc2UgKi8KIAogCQlwQWQtPk1sbWUuU3luY01hY2hpbmUuQ3VyclN0YXRlID0gU0NBTl9MSVNURU47CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3dwYS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3dwYS5jCmluZGV4IDAwNDBmNDUuLjYxNmViZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV93cGEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fd3BhLmMKQEAgLTEyMjIsNyArMTIyMiw3IEBACiAKIAlOb3RlOgogCQlBbGwgdGhlc2UgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHdwYS5oCi0JCUZvciBzdXBwbGljYW50LCB0aGVyZSBpcyBvbmx5IEVBUE9MIEtleSBtZXNzYWdlIGF2YWxpYWJsZQorCQlGb3Igc3VwcGxpY2FudCwgdGhlcmUgaXMgb25seSBFQVBPTCBLZXkgbWVzc2FnZSBhdmFpbGFibGUKIAogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKi8KQEAgLTEyNjcsNyArMTI2Nyw3IEBACiAJCWludAkJcHJlZml4X2xlbgktCXRoZSBsZW5ndGggb2YgdGhlIGxhYmVsCiAJCXU4CSpkYXRhCQktCWEgc3BlY2lmaWMgZGF0YSB3aXRoIHZhcmlhYmxlIGxlbmd0aAogCQlpbnQJCWRhdGFfbGVuCS0JdGhlIGxlbmd0aCBvZiBhIHNwZWNpZmljIGRhdGEKLQkJaW50CQlsZW4JCQktCXRoZSBvdXRwdXQgbGVuZ2h0CisJCWludAkJbGVuCQkJLQl0aGUgb3V0cHV0IGxlbmd0aAogCiAJUmV0dXJuIFZhbHVlOgogCQl1OAkqb3V0cHV0CQktCXRoZSBjYWxjdWxhdGVkIHJlc3VsdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vbWxtZS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vbWxtZS5jCmluZGV4IGQ5YzNmZDUuLmU0OGVhYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL21sbWUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9tbG1lLmMKQEAgLTYzMiw3ICs2MzIsNyBAQAogCQkJcENoaXBPcHMtPkFzaWNIYWx0QWN0aW9uKHBBZCk7CiAJfQogCi0JUlRNUHVzZWNEZWxheSg1MDAwKTsJLyogIDUgbXNlYyB0byBndXJhbnRlZSBBbnQgRGl2ZXJzaXR5IHRpbWVyIGNhbmNlbGVkICovCisJUlRNUHVzZWNEZWxheSg1MDAwKTsJLyogIDUgbXNlYyB0byBndWFyYW50ZWUgQW50IERpdmVyc2l0eSB0aW1lciBjYW5jZWxlZCAqLwogCiAJTWxtZVF1ZXVlRGVzdHJveSgmcEFkLT5NbG1lLlF1ZXVlKTsKIAlOZGlzRnJlZVNwaW5Mb2NrKCZwQWQtPk1sbWUuVGFza0xvY2spOwpAQCAtMTEwNywxNCArMTEwNywxNCBAQAogCQkJCQkqcEluaXRUeFJhdGVJZHggPQogCQkJCQkgICAgUmF0ZVN3aXRjaFRhYmxlMTFOMVNbMV07CiAJCQkJCURCR1BSSU5UX1JBVyhSVF9ERUJVR19FUlJPUiwKLQkJCQkJCSAgICAgKCJEUlM6IHVua293biBtb2RlLGRlZmF1bHQgdXNlIDExTiAxUyBBUCBcbiIpKTsKKwkJCQkJCSAgICAgKCJEUlM6IHVua25vd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMVMgQVAgXG4iKSk7CiAJCQkJfSBlbHNlIHsKIAkJCQkJKnBwVGFibGUgPSBSYXRlU3dpdGNoVGFibGUxMU4yUzsKIAkJCQkJKnBUYWJsZVNpemUgPSBSYXRlU3dpdGNoVGFibGUxMU4yU1swXTsKIAkJCQkJKnBJbml0VHhSYXRlSWR4ID0KIAkJCQkJICAgIFJhdGVTd2l0Y2hUYWJsZTExTjJTWzFdOwogCQkJCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsCi0JCQkJCQkgICAgICgiRFJTOiB1bmtvd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMlMgQVAgXG4iKSk7CisJCQkJCQkgICAgICgiRFJTOiB1bmtub3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDJTIEFQIFxuIikpOwogCQkJCX0KIAkJCX0gZWxzZSB7CiAJCQkJaWYgKHBBZC0+Q29tbW9uQ2ZnLlR4U3RyZWFtID09IDEpIHsKQEAgLTExMjMsNyArMTEyMyw3IEBACiAJCQkJCSpwSW5pdFR4UmF0ZUlkeCA9CiAJCQkJCSAgICBSYXRlU3dpdGNoVGFibGUxMU4xU1sxXTsKIAkJCQkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLAotCQkJCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDFTIEFQIFxuIikpOworCQkJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlLGRlZmF1bHQgdXNlIDExTiAxUyBBUCBcbiIpKTsKIAkJCQl9IGVsc2UgewogCQkJCQkqcHBUYWJsZSA9IFJhdGVTd2l0Y2hUYWJsZTExTjJTRm9yQUJhbmQ7CiAJCQkJCSpwVGFibGVTaXplID0KQEAgLTExMzEsMTEgKzExMzEsMTEgQEAKIAkJCQkJKnBJbml0VHhSYXRlSWR4ID0KIAkJCQkJICAgIFJhdGVTd2l0Y2hUYWJsZTExTjJTRm9yQUJhbmRbMV07CiAJCQkJCURCR1BSSU5UX1JBVyhSVF9ERUJVR19FUlJPUiwKLQkJCQkJCSAgICAgKCJEUlM6IHVua293biBtb2RlLGRlZmF1bHQgdXNlIDExTiAyUyBBUCBcbiIpKTsKKwkJCQkJCSAgICAgKCJEUlM6IHVua25vd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMlMgQVAgXG4iKSk7CiAJCQkJfQogCQkJfQogCQkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLAotCQkJCSAgICAgKCJEUlM6IHVua293biBtb2RlIChTdXBSYXRlTGVuPSVkLCBFeHRSYXRlTGVuPSVkLCBNQ1NTZXRbMF09MHgleCwgTUNTU2V0WzFdPTB4JXgpXG4iLAorCQkJCSAgICAgKCJEUlM6IHVua25vd24gbW9kZSAoU3VwUmF0ZUxlbj0lZCwgRXh0UmF0ZUxlbj0lZCwgTUNTU2V0WzBdPTB4JXgsIE1DU1NldFsxXT0weCV4KVxuIiwKIAkJCQkgICAgICBwQWQtPlN0YUFjdGl2ZS5TdXBSYXRlTGVuLAogCQkJCSAgICAgIHBBZC0+U3RhQWN0aXZlLkV4dFJhdGVMZW4sCiAJCQkJICAgICAgcEFkLT5TdGFBY3RpdmUuU3VwcG9ydGVkUGh5SW5mby5NQ1NTZXRbMF0sCkBAIC0xMzY4LDcgKzEzNjgsNyBAQAogCQkJCQlpZiAoKHBBZC0+U3RhQ2ZnLkxhc3RTY2FuVGltZSArCiAJCQkJCSAgICAgMTAgKiBPU19IWikgPCBwQWQtPk1sbWUuTm93MzIpIHsKIAkJCQkJCURCR1BSSU5UKFJUX0RFQlVHX1RSQUNFLAotCQkJCQkJCSAoIk1NQ0hLIC0gUm9hbWluZywgTm8gZWxpZ2FibGUgZW50cnksIHRyeSBuZXcgc2NhbiFcbiIpKTsKKwkJCQkJCQkgKCJNTUNISyAtIFJvYW1pbmcsIE5vIGVsaWdpYmxlIGVudHJ5LCB0cnkgbmV3IHNjYW4hXG4iKSk7CiAJCQkJCQlwQWQtPlN0YUNmZy5TY2FuQ250ID0gMjsKIAkJCQkJCXBBZC0+U3RhQ2ZnLkxhc3RTY2FuVGltZSA9CiAJCQkJCQkgICAgcEFkLT5NbG1lLk5vdzMyOwpAQCAtMjgyOCw3ICsyODI4LDcgQEAKIAogLyogSVJRTCA9IFBBU1NJVkVfTEVWRUwgKi8KIC8qIElSUUwgPSBESVNQQVRDSF9MRVZFTCAqLwotLyogYkxpbmtVcCBpcyB0byBpZGVudGlmeSB0aGUgaW5pdGFsIGxpbmsgc3BlZWQuICovCisvKiBiTGlua1VwIGlzIHRvIGlkZW50aWZ5IHRoZSBpbml0aWFsIGxpbmsgc3BlZWQuICovCiAvKiBUUlVFIGluZGljYXRlcyB0aGUgcmF0ZSB1cGRhdGUgYXQgbGlua3VwLCB3ZSBzaG91bGQgbm90IHRyeSB0byBzZXQgdGhlIHJhdGUgYXQgNTRNYnBzLiAqLwogdm9pZCBNbG1lVXBkYXRlVHhSYXRlcyhzdHJ1Y3QgcnRfcnRtcF9hZGFwdGVyICpwQWQsIElOIEJPT0xFQU4gYkxpbmtVcCwgdTggYXBpZHgpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9ydG1wX2luaXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3J0bXBfaW5pdC5jCmluZGV4IGQzNTlhMTQuLjVmYTE5M2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3J0bXBfaW5pdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3J0bXBfaW5pdC5jCkBAIC0yMDM3LDcgKzIwMzcsNyBAQAogCiAJCQlwRW50cnktPkZJRk9Db3VudCA9IDA7CiAJCQlwRW50cnktPk9uZVNlY1R4Tm9SZXRyeU9rQ291bnQrKzsKLQkJCS8qIHVwZGF0ZSBOb0RhdGFJZGxlQ291bnQgd2hlbiBzdWNlc3NmdWwgc2VuZCBwYWNrZXQgdG8gU1RBLiAqLworCQkJLyogdXBkYXRlIE5vRGF0YUlkbGVDb3VudCB3aGVuIHN1Y2Nlc3NmdWwgc2VuZCBwYWNrZXQgdG8gU1RBLiAqLwogCQkJcEVudHJ5LT5Ob0RhdGFJZGxlQ291bnQgPSAwOwogCQkJcEVudHJ5LT5Db250aW51ZVR4RmFpbENudCA9IDA7CiAJCX0KQEAgLTI1MTYsNyArMjUxNiw3IEBACiAJLypwQWQtPlR1cm5BZ2dyQnVsa0luQ291bnQgPSAwOyAqLwogCXBBZC0+YlVzYlR4QnVsa0FnZ3JlID0gMDsKIAotCS8qIGluaXQgYXMgdW5zZWQgdmFsdWUgdG8gZW5zdXJlIGRyaXZlciB3aWxsIHNldCB0byBNQ1Ugb25jZS4gKi8KKwkvKiBpbml0IGFzIHVudXNlZCB2YWx1ZSB0byBlbnN1cmUgZHJpdmVyIHdpbGwgc2V0IHRvIE1DVSBvbmNlLiAqLwogCXBBZC0+TGVkSW5kaWNhdG9yU3RyZW5ndGggPSAweEZGOwogCiAJcEFkLT5Db21tb25DZmcuTWF4UGt0T25lVHhCdWxrID0gMjsKQEAgLTMwNzYsMTEgKzMwNzYsMTEgQEAKIAk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCVJvdXRpbmUgRGVzY3JpcHRpb246Ci0JCVNldCBMRUQgU2lnbmFsIFN0cmVndGgKKwkJU2V0IExFRCBTaWduYWwgU3RyZW5ndGgKIAogCUFyZ3VtZW50czoKIAkJcEFkCQkJCQkJUG9pbnRlciB0byBvdXIgYWRhcHRlcgotCQlEYm0JCQkJCQlTaWduYWwgU3RyZWd0aAorCQlEYm0JCQkJCQlTaWduYWwgU3RyZW5ndGgKIAogCVJldHVybiBWYWx1ZToKIAkJTm9uZQpAQCAtMzA5MCw3ICszMDkwLDcgQEAKIAlOb3RlOgogCQlDYW4gYmUgcnVuIG9uIGFueSBJUlFMIGxldmVsLgogCi0JCUFjY29yZGluZyB0byBNaWNyb3NvZnQgWmVybyBDb25maWcgV2lyZWxlc3MgU2lnbmFsIFN0cmVndGggZGVmaW5pdGlvbiBhcyBiZWxvd3MuCisJCUFjY29yZGluZyB0byBNaWNyb3NvZnQgWmVybyBDb25maWcgV2lyZWxlc3MgU2lnbmFsIFN0cmVuZ3RoIGRlZmluaXRpb24gYXMgYmVsb3dzLgogCQk8PSAtOTAgIE5vIFNpZ25hbAogCQk8PSAtODEgIFZlcnkgTG93CiAJCTw9IC03MSAgTG93CkBAIC0zMTE4LDcgKzMxMTgsNyBAQAogCQkJbkxlZCA9IDMxOwogCiAJCS8qICovCi0JCS8qIFVwZGF0ZSBTaWduYWwgU3RyZWd0aCB0byBmaXJtd2FyZSBpZiBjaGFuZ2VkLiAqLworCQkvKiBVcGRhdGUgU2lnbmFsIFN0cmVuZ3RoIHRvIGZpcm13YXJlIGlmIGNoYW5nZWQuICovCiAJCS8qICovCiAJCWlmIChwQWQtPkxlZEluZGljYXRvclN0cmVuZ3RoICE9IG5MZWQpIHsKIAkJCUFzaWNTZW5kQ29tbWFuZFRvTWN1KHBBZCwgMHg1MSwgMHhmZiwgbkxlZCwKQEAgLTMxNjYsNyArMzE2Niw3IEBACiAJCWlmIChwQWQtPkNvbW1vbkNmZy5QU1BYbGluaykKIAkJCXJ4X2ZpbHRlcl9mbGFnID0gUFNQWExJTks7CiAJCWVsc2UKLQkJCXJ4X2ZpbHRlcl9mbGFnID0gU1RBTk9STUFMOwkvKiBTdGFpb24gbm90IGRyb3AgY29udHJvbCBmcmFtZSB3aWxsIGZhaWwgV2lGaSBDZXJ0aWZpY2F0aW9uLiAqLworCQkJcnhfZmlsdGVyX2ZsYWcgPSBTVEFOT1JNQUw7CS8qIFN0YXRpb24gbm90IGRyb3AgY29udHJvbCBmcmFtZSB3aWxsIGZhaWwgV2lGaSBDZXJ0aWZpY2F0aW9uLiAqLwogCQlSVE1QX0lPX1dSSVRFMzIocEFkLCBSWF9GSUxUUl9DRkcsIHJ4X2ZpbHRlcl9mbGFnKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3NwZWN0cnVtLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9zcGVjdHJ1bS5jCmluZGV4IGMwZDJmNDIuLmNlYjYyMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3NwZWN0cnVtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vc3BlY3RydW0uYwpAQCAtMTA1OCw4ICsxMDU4LDggQEAKIAkJMy4gTWVhc3VyZSBUb2tlbi4KIAkJNC4gTWVhc3VyZSBSZXF1ZXN0IE1vZGUuCiAJCTUuIE1lYXN1cmUgUmVxdWVzdCBUeXBlLgotCQk2LiBMZW5ndGggb2YgUmVwb3J0IEluZm9tYXRpb24KLQkJNy4gUG9pbnRlciBvZiBSZXBvcnQgSW5mb21hdGlvbiBCdWZmZXIuCisJCTYuIExlbmd0aCBvZiBSZXBvcnQgSW5mb3JtYXRpb24KKwkJNy4gUG9pbnRlciBvZiBSZXBvcnQgSW5mb3JtYXRpb24gQnVmZmVyLgogCiAJUmV0dXJuCTogTm9uZS4KIAk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTQwMCw3ICsxNDAwLDcgQEAKIAlQYXJhbWV0cnM6CiAJCTEuIE1MTUUgbWVzc2FnZSBjb250YWluaW5nIHRoZSByZWNlaXZlZCBmcmFtZQogCQkyLiBtZXNzYWdlIGxlbmd0aC4KLQkJMy4gQ2hhbm5lbCBzd2l0Y2ggYW5ub3VuY2VtZW50IGluZm9tYXRpb24gYnVmZmVyLgorCQkzLiBDaGFubmVsIHN3aXRjaCBhbm5vdW5jZW1lbnQgaW5mb3JtYXRpb24gYnVmZmVyLgogCiAJUmV0dXJuCTogTm9uZS4KIAk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTQ2NSw3ICsxNDY1LDcgQEAKIAlQYXJhbWV0cnM6CiAJCTEuIE1MTUUgbWVzc2FnZSBjb250YWluaW5nIHRoZSByZWNlaXZlZCBmcmFtZQogCQkyLiBtZXNzYWdlIGxlbmd0aC4KLQkJMy4gTWVhc3VyZW1lbnQgcmVxdWVzdCBpbmZvbWF0aW9uIGJ1ZmZlci4KKwkJMy4gTWVhc3VyZW1lbnQgcmVxdWVzdCBpbmZvcm1hdGlvbiBidWZmZXIuCiAKIAlSZXR1cm4JOiBOb25lLgogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTM4LDggKzE1MzgsOCBAQAogCVBhcmFtZXRyczoKIAkJMS4gTUxNRSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHJlY2VpdmVkIGZyYW1lCiAJCTIuIG1lc3NhZ2UgbGVuZ3RoLgotCQkzLiBNZWFzdXJlbWVudCByZXBvcnQgaW5mb21hdGlvbiBidWZmZXIuCi0JCTQuIGJhc2ljIHJlcG9ydCBpbmZvbWF0aW9uIGJ1ZmZlci4KKwkJMy4gTWVhc3VyZW1lbnQgcmVwb3J0IGluZm9ybWF0aW9uIGJ1ZmZlci4KKwkJNC4gYmFzaWMgcmVwb3J0IGluZm9ybWF0aW9uIGJ1ZmZlci4KIAogCVJldHVybgk6IE5vbmUuCiAJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvbWxtZS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9tbG1lLmgKaW5kZXggY2QxZWUzZC4uYTI4NTg1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9tbG1lLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9tbG1lLmgKQEAgLTM3NCw3ICszNzQsNyBAQAogc3RydWN0IHJ0X2h0X3BoeV9pbmZvIHsKIAlCT09MRUFOIGJIdEVuYWJsZTsJLyogSWYgd2Ugc2hvdWxkIHVzZSBodCByYXRlLiAqLwogCUJPT0xFQU4gYlByZU5IdDsJLyogSWYgd2Ugc2hvdWxkIHVzZSBodCByYXRlLiAqLwotCS8qU3Vic3RyYWN0IGZyb20gSFQgQ2FwYWJpbGl0eSBJRSAqLworCS8qU3VidHJhY3QgZnJvbSBIVCBDYXBhYmlsaXR5IElFICovCiAJdTggTUNTU2V0WzE2XTsKIH07CiAKQEAgLTM5Miw3ICszOTIsNyBAQAogCXUxNiBBbXNkdVNpemU6MTsJLyogTWF4IHJlY2VpdmluZyBBLU1TRFUgc2l6ZSAqLwogCXUxNiByc3Y6NTsKIAotCS8qU3Vic3RyYWN0IGZyb20gQWRkaW9udCBIVCBJTkZPIElFICovCisJLypTdWJ0cmFjdCBmcm9tIEFkZGlvbnQgSFQgSU5GTyBJRSAqLwogCXU4IE1heFJBbXBkdUZhY3RvcjoyOwogCXU4IE1wZHVEZW5zaXR5OjM7CiAJdTggRXh0Q2hhbk9mZnNldDoyOwkvKiBQbGVhc2Ugbm90ZSB0aGUgZGlmZmVyZW5jZSB3aXRoIGZvbGxvd2luZyAgICAgdTggICBOZXdFeHRDaGFubmVsT2Zmc2V0OyBmcm9tIDgwMi4xMW4gKi8KQEAgLTQxMCw3ICs0MTAsNyBAQAogCXU4IEJTU0NvZXhpc3QyMDQwOwogfTsKIAotLyogICBmaWVsZCBpbiBBZGR0aW9uYWwgSFQgSW5mb3JtYXRpb24gSUUgLiAqLworLyogICBmaWVsZCBpbiBBZGRpdGlvbmFsIEhUIEluZm9ybWF0aW9uIElFIC4gKi8KIHN0cnVjdCBQQUNLRUQgcnRfYWRkX2h0aW5mbyB7CiAJdTggRXh0Q2hhbk9mZnNldDoyOwogCXU4IFJlY29tV2lkdGg6MTsKQEAgLTg1Nyw3ICs4NTcsNyBAQAogfTsKIAogLyogTUxNRSBBVVggZGF0YSBzdHJ1Y3R1cmUgdGhhdCBob2xkcyB0ZW1wb3JhcmxpeSBzZXR0aW5ncyBkdXJpbmcgYSBjb25uZWN0aW9uIGF0dGVtcHQuICovCi0vKiBPbmNlIHRoaXMgYXR0ZW1wIHN1Y2NlZWRzLCBhbGwgc2V0dGluZ3Mgd2lsbCBiZSBjb3B5IHRvIHBBZC0+U3RhQWN0aXZlLiAqLworLyogT25jZSB0aGlzIGF0dGVtcHQgc3VjY2VlZHMsIGFsbCBzZXR0aW5ncyB3aWxsIGJlIGNvcHkgdG8gcEFkLT5TdGFBY3RpdmUuICovCiAvKiBBIGNvbm5lY3Rpb24gYXR0ZW1wdCAodXNlciBzZXQgT0lELCByb2FtaW5nLCBDQ1ggZmFzdCByb2FtaW5nLC4uKSBjb25zaXN0cyBvZiAqLwogLyogc2V2ZXJhbCBzdGVwcyAoSk9JTiwgQVVUSCwgQVNTT0Mgb3IgUkVBU1NPQykgYW5kIG1heSBmYWlsIGF0IGFueSBzdGVwLiBXZSBwdXJwb3NlbHkgKi8KIC8qIHNlcGFyYXRlIHRoaXMgdW5kZXItdHJpYWwgc2V0dGluZ3MgYXdheSBmcm9tIHBBZC0+U3RhQWN0aXZlIHNvIHRoYXQgb25jZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9saW51eC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9saW51eC5jCmluZGV4IGU1YjA0MjcuLjE1ODMzNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfbGludXguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X2xpbnV4LmMKQEAgLTI4Myw3ICsyODMsNyBAQAogCUFyZ3VtZW50czoKIAkJcEFkIAlQb2ludGVyIHRvIG91ciBhZGFwdGVyCiAJCXBJbnNBTVNEVUhkcglFV0MgQS1NU0RVIGZvcm1hdCBoYXMgZXh0cmEgMTQtYnl0ZXMgaGVhZGVyLiBpZiBUUlVFLCBpbnNlcnQgdGhpcyAxNC1ieXRlIGhkciBpbiBmcm9udCBvZiBNU0RVLgotCQkqcFNyY1RvdGFsTGVuCQkJcmV0dXJuIHRvdGFsIHBhY2tldCBsZW5ndGguIFRoaXMgbGVuZ2h0IGlzIGNhbGN1bGF0ZWQgd2l0aCA4MDIuMyBmb3JtYXQgcGFja2V0LgorCQkqcFNyY1RvdGFsTGVuCQkJcmV0dXJuIHRvdGFsIHBhY2tldCBsZW5ndGguIFRoaXMgbGVuZ3RoIGlzIGNhbGN1bGF0ZWQgd2l0aCA4MDIuMyBmb3JtYXQgcGFja2V0LgogCiAJUmV0dXJuIFZhbHVlOgogCQlORElTX1NUQVRVU19TVUNDRVNTCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X3BjaV9yYnVzLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X3BjaV9yYnVzLmMKaW5kZXggZTVmYjY3Yy4uZjgwYWI0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9wY2lfcmJ1cy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfcGNpX3JidXMuYwpAQCAtNjE5LDcgKzYxOSw3IEBACiAJICAgT3Iga2VybmVsIHdpbGwgcGFuaWMgYWZ0ZXIgaWZjb25maWcgcmEwIGRvd24gc29tZXRpbWVzICovCiAKIAkvKiAqLwotCS8qIEluaXRhbCB0aGUgSW50ZXJydXB0IHNvdXJjZS4gKi8KKwkvKiBJbml0aWFsIHRoZSBJbnRlcnJ1cHQgc291cmNlLiAqLwogCS8qICovCiAJSW50U291cmNlLndvcmQgPSAweDAwMDAwMDAwTDsKIC8qICAgICAgTWN1SW50U291cmNlLndvcmQgPSAweDAwMDAwMDAwTDsgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRtcC5oIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydG1wLmgKaW5kZXggZDE2YjA2YS4uM2MzMTM0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydG1wLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydG1wLmgKQEAgLTc1Niw3ICs3NTYsNyBAQAogLyogKi8KIHN0cnVjdCBydF9wcml2YXRlIHsKIAl1MzIgU3lzdGVtUmVzZXRDbnQ7CS8qIFN5c3RlbSByZXNldCBjb3VudGVyICovCi0JdTMyIFR4UmluZ0Z1bGxDbnQ7CS8qIFR4IHJpbmcgZnVsbCBvY2N1cnJhbmNlIG51bWJlciAqLworCXUzMiBUeFJpbmdGdWxsQ250OwkvKiBUeCByaW5nIGZ1bGwgb2NjdXJyZW5jZSBudW1iZXIgKi8KIAl1MzIgUGh5UnhFcnJDbnQ7CS8qIFBIWSBSeCBlcnJvciBjb3VudCwgZm9yIGRlYnVnIHB1cnBvc2UsIG1pZ2h0IG1vdmUgdG8gZ2xvYmFsIGNvdW50ZXIgKi8KIAkvKiBWYXJpYWJsZXMgZm9yIFdFUCBlbmNyeXB0aW9uIC8gZGVjcnlwdGlvbiBpbiBydG1wX3dlcC5jICovCiAJdTMyIEZDU0NSQzMyOwpAQCAtOTI1LDcgKzkyNSw3IEBACiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogc3RydWN0IHJlb3JkZXJpbmdfbXBkdSB7CiAJc3RydWN0IHJlb3JkZXJpbmdfbXBkdSAqbmV4dDsKLQl2b2lkICpwUGFja2V0OwkvKiBjb3ZlcnRlZCB0byA4MDIuMyBmcmFtZSAqLworCXZvaWQgKnBQYWNrZXQ7CS8qIGNvbnZlcnRlZCB0byA4MDIuMyBmcmFtZSAqLwogCWludCBTZXF1ZW5jZTsJCS8qIHNlcXVlbmNlIG51bWJlciBvZiBNUERVICovCiAJQk9PTEVBTiBiQU1TRFU7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9zdGFfaW9jdGwuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvc3RhX2lvY3RsLmMKaW5kZXggNTcxN2UxMi4uNDliMTAxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9zdGFfaW9jdGwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3N0YV9pb2N0bC5jCkBAIC0yNDYwLDcgKzI0NjAsNyBAQAogCQl9CiAJfQogCi0JewkJCS8qIGRldGVybWluZSB0aGlzIGlvY3RsIGNvbW1hbmQgaXMgY29tbWluZyBmcm9tIHdoaWNoIGludGVyZmFjZS4gKi8KKwl7CQkJLyogZGV0ZXJtaW5lIHRoaXMgaW9jdGwgY29tbWFuZCBpcyBjb21pbmcgZnJvbSB3aGljaCBpbnRlcmZhY2UuICovCiAJCXBPYmotPmlvY3RsX2lmX3R5cGUgPSBJTlRfTUFJTjsKIAkJcE9iai0+aW9jdGxfaWYgPSBNQUlOX01CU1NJRDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9idWxrLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9idWxrLmMKaW5kZXggZDI3NDZmOC4uNjc5YjgwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg3MC9jb21tb24vcnR1c2JfYnVsay5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2J1bGsuYwpAQCAtMjk4LDcgKzI5OCw3IEBACiAJCQkJLyp8fCAoIChUaGlzQnVsa1NpemUgIT0gMCkgICYmIChwVHhXSS0+QU1QRFUgPT0gMCkpICovCiAJCQkJKSB7CiAJCQkJLyogRm9yIFVTQiAxLjEgb3IgcGVlciB3aGljaCBkaWRuJ3Qgc3VwcG9ydCBBTVBEVSwgbGltaXQgdGhlIEJ1bGtPdXQgc2l6ZS4gKi8KLQkJCQkvKiBGb3IgcGVyZm9ybWVuY2UgaW4gYi9nIG1vZGUsIG5vdyBqdXN0IGNoZWNrIGZvciBVU0IgMS4xIGFuZCBkaWRuJ3QgY2FyZSBhYm91dCB0aGUgQVBNRFUgb3Igbm90ISAyMDA4LzA2LzA0LiAqLworCQkJCS8qIEZvciBwZXJmb3JtYW5jZSBpbiBiL2cgbW9kZSwgbm93IGp1c3QgY2hlY2sgZm9yIFVTQiAxLjEgYW5kIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBBUE1EVSBvciBub3QhIDIwMDgvMDYvMDQuICovCiAJCQkJcEhUVFhDb250ZXh0LT5FTmV4dEJ1bGtPdXRQb3NpdGlvbiA9CiAJCQkJICAgIFRtcEJ1bGtFbmRQb3M7CiAJCQkJYnJlYWs7CkBAIC0zMTEsNyArMzExLDcgQEAKIAkJCQkgICAgVG1wQnVsa0VuZFBvczsKIAkJCQlicmVhazsKIAkJCX0gZWxzZSBpZiAoKChwQWQtPkJ1bGtPdXRNYXhQYWNrZXRTaXplIDwgNTEyKSAmJiAoKFRoaXNCdWxrU2l6ZSAmIDB4ZmZmZmY4MDApICE9IDApKSAvKnx8ICggKFRoaXNCdWxrU2l6ZSAhPSAwKSAgJiYgKHBUeFdJLT5BTVBEVSA9PSAwKSkgKi8pIHsJLyogRm9yIFVTQiAxLjEgb3IgcGVlciB3aGljaCBkaWRuJ3Qgc3VwcG9ydCBBTVBEVSwgbGltaXQgdGhlIEJ1bGtPdXQgc2l6ZS4gKi8KLQkJCQkvKiBGb3IgcGVyZm9ybWVuY2UgaW4gYi9nIG1vZGUsIG5vdyBqdXN0IGNoZWNrIGZvciBVU0IgMS4xIGFuZCBkaWRuJ3QgY2FyZSBhYm91dCB0aGUgQVBNRFUgb3Igbm90ISAyMDA4LzA2LzA0LiAqLworCQkJCS8qIEZvciBwZXJmb3JtYW5jZSBpbiBiL2cgbW9kZSwgbm93IGp1c3QgY2hlY2sgZm9yIFVTQiAxLjEgYW5kIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBBUE1EVSBvciBub3QhIDIwMDgvMDYvMDQuICovCiAJCQkJcEhUVFhDb250ZXh0LT5FTmV4dEJ1bGtPdXRQb3NpdGlvbiA9CiAJCQkJICAgIFRtcEJ1bGtFbmRQb3M7CiAJCQkJYnJlYWs7CkBAIC0xMDE2LDcgKzEwMTYsNyBAQAogCQkJCVJUVVNCQnVsa091dE51bGxGcmFtZShwQWQpOwogCQkJfQogCQl9Ci0JCS8qIDguIE5vIGRhdGEgYXZhbGlhYmxlICovCisJCS8qIDguIE5vIGRhdGEgYXZhaWxhYmxlICovCiAJCWVsc2UKIAkJCTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9kYXRhLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9kYXRhLmMKaW5kZXggNjkzNjg4Ni4uNWI3MmJjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg3MC9jb21tb24vcnR1c2JfZGF0YS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2RhdGEuYwpAQCAtNzEsNyArNzEsNyBAQAogCiAJUm91dGluZQlEZXNjcmlwdGlvbjoKIAkJVGhpcyBzdWJyb3V0aW5lIHdpbGwgc2NhbiB0aHJvdWdoIHJlbGVhdGl2ZSByaW5nIGRlc2NyaXB0b3IgdG8gZmluZAotCQlvdXQgYXZhbGlhYmxlIGZyZWUgcmluZyBkZXNjcmlwdG9yIGFuZCBjb21wYXJlIHdpdGggcmVxdWVzdCBzaXplLgorCQlvdXQgYXZhaWxhYmxlIGZyZWUgcmluZyBkZXNjcmlwdG9yIGFuZCBjb21wYXJlIHdpdGggcmVxdWVzdCBzaXplLgogCiAJQXJndW1lbnRzOgogCQlwQWQJUG9pbnRlcgl0byBvdXIgYWRhcHRlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTEuaAppbmRleCBkYzYwOGM3Li4xNmFhNmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTEuaApAQCAtMTA5OSw3ICsxMDk5LDcgQEAKIAkgKiBub3Qgc2V0LiBBcyBzb21lIGNhcmRzIG1heSBoYXZlIGRpZmZlcmVudCBIVyBxdWV1ZXMgdGhhdAogCSAqIG9uZSBtaWdodCB3YW50IHRvIHVzZSBmb3IgZGF0YSBhbmQgbWFuYWdlbWVudCBmcmFtZXMKIAkgKiB0aGUgb3B0aW9uIHRvIGhhdmUgdHdvIGNhbGxiYWNrcyBtaWdodCBiZSB1c2VmdWwuCi0JICogVGhpcyBmdWNudGlvbiBjYW4ndCBzbGVlcC4KKwkgKiBUaGlzIGZ1bmN0aW9uIGNhbid0IHNsZWVwLgogCSAqLwogCWludCAoKnNvZnRtYWNfaGFyZF9zdGFydF94bWl0KShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpAQCAtMTEzOCw5ICsxMTM4LDkgQEAKIAkgKiBpdCBpcyBjYWxsZWQgaW4gYSB3b3JrX3F1ZXVlIHdoZW4gc3dpdGhjaW5nIHRvIGFkLWhvYyBtb2RlCiAJICogb3IgaW4gYmVoYWxmIG9mIGl3bGlzdCBzY2FuIHdoZW4gdGhlIGNhcmQgaXMgYXNzb2NpYXRlZAogCSAqIGFuZCByb290IHVzZXIgYXNrIGZvciBhIHNjYW4uCi0JICogdGhlIGZ1Y250aW9uIHN0b3Bfc2NhbiBzaG91bGQgc3RvcCBib3RoIHRoZSBzeW5jcm8gYW5kCisJICogdGhlIGZ1bmN0aW9uIHN0b3Bfc2NhbiBzaG91bGQgc3RvcCBib3RoIHRoZSBzeW5jcm8gYW5kCiAJICogYmFja2dyb3VuZCBzY2FubmluZyBhbmQgY2FuIHNsZWVwLgotCSAqIFRoZSBmdWNudGlvbiBzdGFydF9zY2FuIHNob3VsZCBpbml0aWF0ZSB0aGUgYmFja2dyb3VuZAorCSAqIFRoZSBmdW5jdGlvbiBzdGFydF9zY2FuIHNob3VsZCBpbml0aWF0ZSB0aGUgYmFja2dyb3VuZAogCSAqIHNjYW5uaW5nIGFuZCBjYW4ndCBzbGVlcC4KIAkgKi8KIAl2b2lkICgqc2Nhbl9zeW5jcm8pKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKaW5kZXggNzcxZTAxOS4uNzM2YTE0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCkBAIC0xOTU0LDcgKzE5NTQsNyBAQAogCiAKIAotLyogZm9sbG93aW5nIGFyZSBmb3IgYSBzaW1wbGllciBUWCBxdWV1ZSBtYW5hZ2VtZW50LgorLyogZm9sbG93aW5nIGFyZSBmb3IgYSBzaW1wbGVyIFRYIHF1ZXVlIG1hbmFnZW1lbnQuCiAgKiBJbnN0ZWFkIG9mIHVzaW5nIG5ldGlmX1tzdG9wL3dha2VdX3F1ZXVlIHRoZSBkcml2ZXIKICAqIHdpbGwgdXNlcyB0aGVzZSB0d28gZnVuY3Rpb24gKHBsdXMgYSByZXNldCBvbmUpLCB0aGF0CiAgKiB3aWxsIGludGVybmFsbHkgdXNlcyB0aGUga2VybmVsIG5ldGlmXyogYW5kIHRha2VzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfY29yZS5jCmluZGV4IDcwYWIwMDguLjIxNTVhNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfY29yZS5jCkBAIC0xNTkxLDcgKzE1OTEsNyBAQAogCQlwcml2LT5SU1NJID0gUlNTSTsKIAkJLyogU1EgdHJhbnNsYXRpb24gZm9ybXVsYSBpcyBwcm92aWRlZCBieSBTRDMgRFouIDIwMDYuMDYuMjcgKi8KIAkJaWYgKHF1YWxpdHkgPj0gMTI3KQotCQkJcXVhbGl0eSA9IDE7IC8qMDsgKi8gLyogMCB3aWxsIGNhdXNlIGVwYyB0byBzaG93IHNpZ25hbCB6ZXJvICwgd2FsayBhcm91ZCBub3c7ICovCisJCQlxdWFsaXR5ID0gMTsgLyowOyAqLyAvKiAwIHdpbGwgY2F1c2UgZXBjIHRvIHNob3cgc2lnbmFsIHplcm8gLCB3YWxrIGFyb3VuZCBub3c7ICovCiAJCWVsc2UgaWYgKHF1YWxpdHkgPCAyNykKIAkJCXF1YWxpdHkgPSAxMDA7CiAJCWVsc2UKQEAgLTM4ODMsNyArMzg4Myw3IEBACiAJICogSWYgdGhlIHBhY2tldCBwcmV2aW91cyBvZiB0aGUgbmljIHBvaW50ZXIgaGFzIGJlZW4KIAkgKiBwcm9jZXNzZWQgdGhpcyBkb2Vzbid0IG1hdHRlcjogaXQgd2lsbCBiZSBjaGVja2VkCiAJICogaGVyZSBhdCB0aGUgbmV4dCByb3VuZC4gQW55d2F5IGlmIG5vIG1vcmUgcGFja2V0IGFyZQotCSAqIFRYZWQgbm8gbWVtb3J5IGxlYWsgb2Njb3VyIGF0IGFsbC4KKwkgKiBUWGVkIG5vIG1lbW9yeSBsZWFrIG9jY3VyIGF0IGFsbC4KIAkgKi8KIAogCXN3aXRjaCAocHJpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2RtLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2RtLmMKaW5kZXggZmM0OTA3OC4uMjYxMDg1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9kbS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfZG0uYwpAQCAtMTIzLDcgKzEyMyw3IEBACiAvLwogLy8JRGVzY3JpcHRpb246CiAvLwkJQ2FsbGJhY2sgZnVuY3Rpb24gb2YgVXBkYXRlVHhQb3dlcldvcmtJdGVtLgotLy8JCUJlY2F1c2Ugb2Ygc29tZSBldmVudCBoYXBwZW5kLCBlLmcuIENDWCBUUEMsIEhpZ2ggUG93ZXIgTWVjaGFuaXNtLAorLy8JCUJlY2F1c2Ugb2Ygc29tZSBldmVudCBoYXBwZW5lZCwgZS5nLiBDQ1ggVFBDLCBIaWdoIFBvd2VyIE1lY2hhbmlzbSwKIC8vCQlXZSB1cGRhdGUgVHggcG93ZXIgb2YgY3VycmVudCBjaGFubmVsIGFnYWluLgogLy8KIHZvaWQgcnRsODE4MF90eF9wd193cSAoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQpAQCAtOTg0LDcgKzk4NCw3IEBACiAJCXsKIAkJCXByaXYtPlRyeXVwaW5nQ291bnQgPSAwOwogCQkJLy8KLQkJCS8vIFdoZW4gdHJhbnNmZXJpbmcgZnJvbSBDQ0sgdG8gT0ZETSwgRElHIGlzIGFuIGltcG9ydGFudCBpc3N1ZS4KKwkJCS8vIFdoZW4gdHJhbnNmZXJyaW5nIGZyb20gQ0NLIHRvIE9GRE0sIERJRyBpcyBhbiBpbXBvcnRhbnQgaXNzdWUuCiAJCQkvLwogCQkJaWYocHJpdi0+Q3VycmVudE9wZXJhUmF0ZSA9PSAyMikKIAkJCQliVXBkYXRlSW5pdGlhbEdhaW4gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9ydGw4MjI1ejIuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfcnRsODIyNXoyLmMKaW5kZXggMmEyYWZkNS4uM2YwOWY3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9ydGw4MjI1ejIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX3J0bDgyMjV6Mi5jCkBAIC0zNzgsNyArMzc4LDcgQEAKIAltYXNrID0gKGxvdzJoaWdoKSA/IDB4MDEgOiAoKCh1MzIpMHgwMSkgPDwgKDEyLTEpKTsKIAogCS8qCi0JICogV2UgbXVzdCBzZXQgZGF0YSBwaW4gdG8gSFcgY29udHJvbGVkLCBvdGhlcndpc2UgUkYgY2FuJ3QgZHJpdmVyIGl0CisJICogV2UgbXVzdCBzZXQgZGF0YSBwaW4gdG8gSFcgY29udHJvbGxlZCwgb3RoZXJ3aXNlIFJGIGNhbid0IGRyaXZlciBpdAogCSAqIGFuZCB2YWx1ZSBSRiByZWdpc3RlciB3b24ndCBiZSBhYmxlIHRvIHJlYWQgYmFjayBwcm9wZXJseS4KIAkgKi8KIAl3cml0ZV9uaWNfd29yZChkZXYsIFJGUGluc0VuYWJsZSwgKG92YWwyICYgKH4weDAxKSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4NWJfaW5pdC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4NWJfaW5pdC5jCmluZGV4IDNiZGY5YjMuLjRiMGI4MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODViX2luaXQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTg1Yl9pbml0LmMKQEAgLTEyNzMsNyArMTI3Myw3IEBACiAJLyoKIAkJU3RvcCBCZWFjb24uCiAKLQkJVmlzdGEgYWRkIGEgQWRob2MgcHJvZmlsZSwgSFcgcmFkaW8gb2ZmIHVudGlsbCBPSURfRE9UMTFfUkVTRVRfUkVRVUVTVAorCQlWaXN0YSBhZGQgYSBBZGhvYyBwcm9maWxlLCBIVyByYWRpbyBvZmYgdW50aWwgT0lEX0RPVDExX1JFU0VUX1JFUVVFU1QKIAkJRHJpdmVyIHdvdWxkIHNldCBNU1I9Tk9fTElOSywgdGhlbiBIVyBSYWRpbyBPTiwgTWdudFF1ZXVlIFN0dWNrLgogCQlCZWNhdXNlIEJjbiBETUEgaXNuJ3QgY29tcGxldGUsIG1nbnQgcXVldWUgd291bGQgc3R1Y2sgdW50aWwgQmNuIHBhY2tldCBzZW5kLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTEuaAppbmRleCAzY2EzODgxLi5kYmUyMWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExLmgKQEAgLTE5NjcsNyArMTk2Nyw3IEBACiAgICAgICAgIHUxNiBwcmV2X3NlcV9jdGw7ICAgICAgIC8qIHVzZWQgdG8gZHJvcCBkdXBsaWNhdGUgZnJhbWVzICovCiAKIAkvKiBtYXAgb2YgYWxsb3dlZCBjaGFubmVscy4gMCBpcyBkdW1teSAqLwotCS8vIEZJWE1FOiByZW1lYmVyIHRvIGRlZmF1bHQgdG8gYSBiYXNpYyBjaGFubmVsIHBsYW4gZGVwZW5kaW5nIG9mIHRoZSBQSFkgdHlwZQorCS8vIEZJWE1FOiByZW1lbWJlciB0byBkZWZhdWx0IHRvIGEgYmFzaWMgY2hhbm5lbCBwbGFuIGRlcGVuZGluZyBvZiB0aGUgUEhZIHR5cGUKICNpZmRlZiBFTkFCTEVfRE9UMTFECiAJdm9pZCogcERvdDExZEluZm87CiAJYm9vbCBiR2xvYmFsRG9tYWluOwpAQCAtMjEyMSw3ICsyMTIxLDcgQEAKIAkgKiBub3Qgc2V0LiBBcyBzb21lIGNhcmRzIG1heSBoYXZlIGRpZmZlcmVudCBIVyBxdWV1ZXMgdGhhdAogCSAqIG9uZSBtaWdodCB3YW50IHRvIHVzZSBmb3IgZGF0YSBhbmQgbWFuYWdlbWVudCBmcmFtZXMKIAkgKiB0aGUgb3B0aW9uIHRvIGhhdmUgdHdvIGNhbGxiYWNrcyBtaWdodCBiZSB1c2VmdWwuCi0JICogVGhpcyBmdWNudGlvbiBjYW4ndCBzbGVlcC4KKwkgKiBUaGlzIGZ1bmN0aW9uIGNhbid0IHNsZWVwLgogCSAqLwogCWludCAoKnNvZnRtYWNfaGFyZF9zdGFydF94bWl0KShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICppZWVlODAyMTEpOwpAQCAtMjE2MCw5ICsyMTYwLDkgQEAKIAkgKiBpdCBpcyBjYWxsZWQgaW4gYSB3b3JrX3F1ZXVlIHdoZW4gc3dpdGhjaW5nIHRvIGFkLWhvYyBtb2RlCiAJICogb3IgaW4gYmVoYWxmIG9mIGl3bGlzdCBzY2FuIHdoZW4gdGhlIGNhcmQgaXMgYXNzb2NpYXRlZAogCSAqIGFuZCByb290IHVzZXIgYXNrIGZvciBhIHNjYW4uCi0JICogdGhlIGZ1Y250aW9uIHN0b3Bfc2NhbiBzaG91bGQgc3RvcCBib3RoIHRoZSBzeW5jcm8gYW5kCisJICogdGhlIGZ1bmN0aW9uIHN0b3Bfc2NhbiBzaG91bGQgc3RvcCBib3RoIHRoZSBzeW5jcm8gYW5kCiAJICogYmFja2dyb3VuZCBzY2FubmluZyBhbmQgY2FuIHNsZWVwLgotCSAqIFRoZSBmdWNudGlvbiBzdGFydF9zY2FuIHNob3VsZCBpbml0aWF0ZSB0aGUgYmFja2dyb3VuZAorCSAqIFRoZSBmdW5jdGlvbiBzdGFydF9zY2FuIHNob3VsZCBpbml0aWF0ZSB0aGUgYmFja2dyb3VuZAogCSAqIHNjYW5uaW5nIGFuZCBjYW4ndCBzbGVlcC4KIAkgKi8KIAl2b2lkICgqc2Nhbl9zeW5jcm8pKHN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICppZWVlODAyMTEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfcnguYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKaW5kZXggYWRkMDE1ZS4uZWQ1YTM4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfcnguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCkBAIC0xNDI2LDcgKzE0MjYsNyBAQAogc3RhdGljIHU4IHFvc19vdWlbUU9TX09VSV9MRU5dID0geyAweDAwLCAweDUwLCAweEYyIH07CiAKIC8qCi0qIE1ha2UgdGhlciBzdHJ1Y3R1cmUgd2UgcmVhZCBmcm9tIHRoZSBiZWFjb24gcGFja2V0IGhhcworKiBNYWtlIHRoZSBzdHJ1Y3R1cmUgd2UgcmVhZCBmcm9tIHRoZSBiZWFjb24gcGFja2V0IHRvIGhhdmUKICogdGhlIHJpZ2h0IHZhbHVlcwogKi8KIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZlcmlmeV9xb3NfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3Fvc19pbmZvcm1hdGlvbl9lbGVtZW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKaW5kZXggZjY5MjJkNC4uN2Q0Y2JhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwpAQCAtMjAyMyw3ICsyMDIzLDcgQEAKIAkJCQkJCQlyZXR1cm4gMTsKIAkJCQkJCX0KIAkJCQkJCWVsc2UKLQkJCQkJCXsJLy9maWxsaW5nIHRoZSBQZWVySFRDYXAuIC8vbWF5YmUgbm90IG5lY2Nlc2FyeSBhcyB3ZSBjYW4gZ2V0IGl0cyBpbmZvIGZyb20gY3VycmVudF9uZXR3b3JrLgorCQkJCQkJewkvL2ZpbGxpbmcgdGhlIFBlZXJIVENhcC4gLy9tYXliZSBub3QgbmVjZXNzYXJ5IGFzIHdlIGNhbiBnZXQgaXRzIGluZm8gZnJvbSBjdXJyZW50X25ldHdvcmsuCiAJCQkJCQkJbWVtY3B5KGllZWUtPnBIVEluZm8tPlBlZXJIVENhcEJ1ZiwgbmV0d29yay0+YnNzaHQuYmRIVENhcEJ1ZiwgbmV0d29yay0+YnNzaHQuYmRIVENhcExlbik7CiAJCQkJCQkJbWVtY3B5KGllZWUtPnBIVEluZm8tPlBlZXJIVEluZm9CdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRJbmZvQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUSW5mb0xlbik7CiAJCQkJCQl9CkBAIC0yMTYzLDcgKzIxNjMsNyBAQAogCXJldHVybiAwOwogfQogCi0vKiBmb2xsb3dpbmcgYXJlIGZvciBhIHNpbXBsaWVyIFRYIHF1ZXVlIG1hbmFnZW1lbnQuCisvKiBmb2xsb3dpbmcgYXJlIGZvciBhIHNpbXBsZXIgVFggcXVldWUgbWFuYWdlbWVudC4KICAqIEluc3RlYWQgb2YgdXNpbmcgbmV0aWZfW3N0b3Avd2FrZV1fcXVldWUgdGhlIGRyaXZlcgogICogd2lsbCB1c2VzIHRoZXNlIHR3byBmdW5jdGlvbiAocGx1cyBhIHJlc2V0IG9uZSksIHRoYXQKICAqIHdpbGwgaW50ZXJuYWxseSB1c2VzIHRoZSBrZXJuZWwgbmV0aWZfKiBhbmQgdGFrZXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9IVC5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hULmgKaW5kZXggZjk2ODgxNy4uNTZhMTIwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hULmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hULmgKQEAgLTY0LDcgKzY0LDcgQEAKIH1IVF9DSEFOTkVMX1dJRFRILCAqUEhUX0NIQU5ORUxfV0lEVEg7CiAKIC8vCi0vLyBSZXByZXNlbnQgRXh0ZW50aW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcworLy8gUmVwcmVzZW50IEV4dGVuc2lvbiBDaGFubmVsIE9mZnNldCBpbiBIVCBDYXBhYmlsaXRpZXMKIC8vIFRoaXMgaXMgYXZhaWxhYmxlIG9ubHkgaW4gNDBNaHogbW9kZS4KIC8vCiB0eXBlZGVmIGVudW0gX0hUX0VYVENITkxfT0ZGU0VUewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jCmluZGV4IGEyYTRmZTkuLmY3YTlkYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMKQEAgLTQ1OSw3ICs0NTksNyBAQAogLyoqCiAqIEZ1bmN0aW9uOglIVElPVEFjdElzRGlzYWJsZU1DUzE1CiAqCi0qIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2V2aW5nIE1DUzE1CisqIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2VpdmluZyBNQ1MxNQogKgogKiBJbnB1dDoKICoJCQlQQURBUFRFUgkJQWRhcHRlciwKQEAgLTQ5Niw3ICs0OTYsNyBAQAogLyoqCiAqIEZ1bmN0aW9uOglIVElPVEFjdElzRGlzYWJsZU1DU1R3b1NwYXRpYWxTdHJlYW0KICoKLSogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZXZpbmcgQWxsIDIgc3MgcGFja2V0cworKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNlaXZpbmcgQWxsIDIgc3MgcGFja2V0cwogKgogKiBJbnB1dDoKICoJCQlQQURBUFRFUgkJQWRhcHRlciwKQEAgLTE2ODEsNyArMTY4MSw3IEBACiAJLy9pZiBpbiBoYWxmIE4gbW9kZSwgc2V0IHRvIDIwTSBiYW5kd2lkdGggcGxlYXNlIDA5LjA4LjIwMDggV0IuCiAJaWYgKEJhbmR3aWR0aD09SFRfQ0hBTk5FTF9XSURUSF8yMF80MCAmJiAoIWllZWUtPkdldEhhbGZObW9kZVN1cHBvcnRCeUFQc0hhbmRsZXIoaWVlZSkpKQogCSB7Ci0JIAkJLy8gSGFuZGxlIElsbGVnYWwgZXh0ZW50aW9uIGNoYW5uZWwgb2Zmc2V0ISEKKwkgCQkvLyBIYW5kbGUgSWxsZWdhbCBleHRlbnNpb24gY2hhbm5lbCBvZmZzZXQhIQogCQlpZihpZWVlLT5jdXJyZW50X25ldHdvcmsuY2hhbm5lbDwyICYmIE9mZnNldD09SFRfRVhUQ0hOTF9PRkZTRVRfTE9XRVIpCiAJCQlPZmZzZXQgPSBIVF9FWFRDSE5MX09GRlNFVF9OT19FWFQ7CiAJCWlmKE9mZnNldD09SFRfRVhUQ0hOTF9PRkZTRVRfVVBQRVIgfHwgT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9MT1dFUikgewpAQCAtMTY5OCw3ICsxNjk4LDcgQEAKIAogCXBIVEluZm8tPmJTd0J3SW5Qcm9ncmVzcyA9IHRydWU7CiAKLQkvLyBUT0RPOiAyMDA3LjcuMTMgYnkgRW1pbHkgV2FpdCAyMDAwbXMgIGluIG9yZGVyIHRvIGdhcmFudGVlIHRoYXQgc3dpdGNoaW5nCisJLy8gVE9ETzogMjAwNy43LjEzIGJ5IEVtaWx5IFdhaXQgMjAwMG1zICBpbiBvcmRlciB0byBndWFyYW50ZWUgdGhhdCBzd2l0Y2hpbmcKIAkvLyAgIGJhbmR3aWR0aCBpcyBleGVjdXRlZCBhZnRlciBzY2FuIGlzIGZpbmlzaGVkLiBJdCBpcyBhIHRlbXBvcmFsIHNvbHV0aW9uCiAJLy8gICBiZWNhdXNlIHNvZnR3YXJlIHNob3VsZCBnYW5yYW50ZWUgdGhlIGxhc3Qgb3BlcmF0aW9uIG9mIHN3aXRjaGluZyBiYW5kd2lkdGgKIAkvLyAgIGlzIGV4ZWN1dGVkIHByb3BlcmxseS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9UUy5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTLmgKaW5kZXggYmFhYWMyMS4uZTdlMjZmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAl1MTYJCQkJUnhUaW1lb3V0SW5kaWNhdGVTZXE7CiAJc3RydWN0IGxpc3RfaGVhZAkJUnhQZW5kaW5nUGt0TGlzdDsKIAlzdHJ1Y3QgdGltZXJfbGlzdAkJUnhQa3RQZW5kaW5nVGltZXI7Ci0JQkFfUkVDT1JECQkJUnhBZG1pdHRlZEJBUmVjb3JkOwkgLy8gRm9yIEJBIFJlY2VwaWVudAorCUJBX1JFQ09SRAkJCVJ4QWRtaXR0ZWRCQVJlY29yZDsJIC8vIEZvciBCQSBSZWNpcGllbnQKIAl1MTYJCQkJUnhMYXN0U2VxTnVtOwogCXU4CQkJCVJ4TGFzdEZyYWdOdW07CiAJdTgJCQkJbnVtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jCmluZGV4IDI5ZWVjZjAuLmFkNjg3MmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMKQEAgLTEzNSw3ICsxMzUsNyBAQAogCVJlc2V0VHNDb21tb25JbmZvKCZwVFMtPlRzQ29tbW9uSW5mbyk7CiAJcFRTLT5SeEluZGljYXRlU2VxID0gMHhmZmZmOyAvLyBUaGlzIGluZGljYXRlIHRoZSBSeEluZGljYXRlU2VxIGlzIG5vdCB1c2VkIG5vdyEhCiAJcFRTLT5SeFRpbWVvdXRJbmRpY2F0ZVNlcSA9IDB4ZmZmZjsgLy8gVGhpcyBpbmRpY2F0ZSB0aGUgUnhUaW1lb3V0SW5kaWNhdGVTZXEgaXMgbm90IHVzZWQgbm93ISEKLQlSZXNldEJhRW50cnkoJnBUUy0+UnhBZG1pdHRlZEJBUmVjb3JkKTsJICAvLyBGb3IgQkEgUmVjZXBpZW50CisJUmVzZXRCYUVudHJ5KCZwVFMtPlJ4QWRtaXR0ZWRCQVJlY29yZCk7CSAgLy8gRm9yIEJBIFJlY2lwaWVudAogfQogCiB2b2lkIFRTSW5pdGlhbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2RldmljZSAqaWVlZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9yODE5eEVfcGh5LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvcjgxOXhFX3BoeS5jCmluZGV4IGRmYTRlMTEuLjllNzgyOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9yODE5eEVfcGh5LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL3I4MTl4RV9waHkuYwpAQCAtMjAzMiwxMyArMjAzMiwxMyBAQAogCXsKIAkJY2FzZSBIVF9DSEFOTkVMX1dJRFRIXzIwOgogCQkJcmVnQndPcE1vZGUgfD0gQldfT1BNT0RFXzIwTUhaOwotCQkgICAgICAgLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2FzdWUgd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcworCQkgICAgICAgLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2F1c2Ugd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcwogCQkJd3JpdGVfbmljX2J5dGUocHJpdiwgQldfT1BNT0RFLCByZWdCd09wTW9kZSk7CiAJCQlicmVhazsKIAogCQljYXNlIEhUX0NIQU5ORUxfV0lEVEhfMjBfNDA6CiAJCQlyZWdCd09wTW9kZSAmPSB+QldfT1BNT0RFXzIwTUhaOwotICAgICAgICAJCS8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhc3VlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKKyAgICAgICAgCQkvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXVzZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCiAJCQl3cml0ZV9uaWNfYnl0ZShwcml2LCBCV19PUE1PREUsIHJlZ0J3T3BNb2RlKTsKIAkJCWJyZWFrOwogCkBAIC0yMTE2LDcgKzIxMTYsNyBAQAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKmZ1bmN0aW9uOiAgVGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYmFuZHdpdGggc3dpdGNoIHdvcmsuCisgKmZ1bmN0aW9uOiAgVGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYmFuZHdpZHRoIHN3aXRjaCB3b3JrLgogICogICBpbnB1dDogIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYKICAqICAgCSAgICAgSFRfQ0hBTk5FTF9XSURUSAlCYW5kd2lkdGggIC8vMjBNIG9yIDQwTQogICogICAJICAgICBIVF9FWFRDSE5MX09GRlNFVCBPZmZzZXQgCSAgIC8vVXBwZXIsIExvd2VyLCBvciBEb24ndCBjYXJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTEuaAppbmRleCBjMGI4NDRkLi5lNzE2ZjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExLmgKQEAgLTE5NjUsNyArMTk2NSw3IEBACiAJdTE2IHByZXZfc2VxX2N0bDsgICAgICAgLyogdXNlZCB0byBkcm9wIGR1cGxpY2F0ZSBmcmFtZXMgKi8KIAogCS8qIG1hcCBvZiBhbGxvd2VkIGNoYW5uZWxzLiAwIGlzIGR1bW15ICovCi0JLy8gRklYTUU6IHJlbWViZXIgdG8gZGVmYXVsdCB0byBhIGJhc2ljIGNoYW5uZWwgcGxhbiBkZXBlbmRpbmcgb2YgdGhlIFBIWSB0eXBlCisJLy8gRklYTUU6IHJlbWVtYmVyIHRvIGRlZmF1bHQgdG8gYSBiYXNpYyBjaGFubmVsIHBsYW4gZGVwZW5kaW5nIG9mIHRoZSBQSFkgdHlwZQogCXZvaWQqIHBEb3QxMWRJbmZvOwogCWJvb2wgYkdsb2JhbERvbWFpbjsKIAlpbnQgcmF0ZTsgICAgICAgLyogY3VycmVudCByYXRlICovCkBAIC0yMTE5LDcgKzIxMTksNyBAQAogCSAqIG5vdCBzZXQuIEFzIHNvbWUgY2FyZHMgbWF5IGhhdmUgZGlmZmVyZW50IEhXIHF1ZXVlcyB0aGF0CiAJICogb25lIG1pZ2h0IHdhbnQgdG8gdXNlIGZvciBkYXRhIGFuZCBtYW5hZ2VtZW50IGZyYW1lcwogCSAqIHRoZSBvcHRpb24gdG8gaGF2ZSB0d28gY2FsbGJhY2tzIG1pZ2h0IGJlIHVzZWZ1bC4KLQkgKiBUaGlzIGZ1Y250aW9uIGNhbid0IHNsZWVwLgorCSAqIFRoaXMgZnVuY3Rpb24gY2FuJ3Qgc2xlZXAuCiAJICovCiAJaW50ICgqc29mdG1hY19oYXJkX3N0YXJ0X3htaXQpKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CkBAIC0yMTU4LDkgKzIxNTgsOSBAQAogCSAqIGl0IGlzIGNhbGxlZCBpbiBhIHdvcmtfcXVldWUgd2hlbiBzd2l0aGNpbmcgdG8gYWQtaG9jIG1vZGUKIAkgKiBvciBpbiBiZWhhbGYgb2YgaXdsaXN0IHNjYW4gd2hlbiB0aGUgY2FyZCBpcyBhc3NvY2lhdGVkCiAJICogYW5kIHJvb3QgdXNlciBhc2sgZm9yIGEgc2Nhbi4KLQkgKiB0aGUgZnVjbnRpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKKwkgKiB0aGUgZnVuY3Rpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKIAkgKiBiYWNrZ3JvdW5kIHNjYW5uaW5nIGFuZCBjYW4gc2xlZXAuCi0JICogVGhlIGZ1Y250aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCisJICogVGhlIGZ1bmN0aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCiAJICogc2Nhbm5pbmcgYW5kIGNhbid0IHNsZWVwLgogCSAqLwogCXZvaWQgKCpzY2FuX3N5bmNybykoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfcnguYwppbmRleCA0OThiNTIwLi5hNDE0MzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKQEAgLTEzOTksNyArMTM5OSw3IEBACiBzdGF0aWMgdTggcW9zX291aVtRT1NfT1VJX0xFTl0gPSB7IDB4MDAsIDB4NTAsIDB4RjIgfTsKIAogLyoKLSogTWFrZSB0aGVyIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgaGFzCisqIE1ha2UgdGhlIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgdG8gaGF2ZQogKiB0aGUgcmlnaHQgdmFsdWVzCiAqLwogc3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X3Fvc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfcW9zX2luZm9ybWF0aW9uX2VsZW1lbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwppbmRleCA0OTkyZDYzLi40ZWMwYTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCkBAIC0xOTczLDcgKzE5NzMsNyBAQAogCQkJCQkJCXJldHVybiAxOwogCQkJCQkJfQogCQkJCQkJZWxzZQotCQkJCQkJewkvL2ZpbGxpbmcgdGhlIFBlZXJIVENhcC4gLy9tYXliZSBub3QgbmVjY2VzYXJ5IGFzIHdlIGNhbiBnZXQgaXRzIGluZm8gZnJvbSBjdXJyZW50X25ldHdvcmsuCisJCQkJCQl7CS8vZmlsbGluZyB0aGUgUGVlckhUQ2FwLiAvL21heWJlIG5vdCBuZWNlc3NhcnkgYXMgd2UgY2FuIGdldCBpdHMgaW5mbyBmcm9tIGN1cnJlbnRfbmV0d29yay4KIAkJCQkJCQltZW1jcHkoaWVlZS0+cEhUSW5mby0+UGVlckhUQ2FwQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUQ2FwQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUQ2FwTGVuKTsKIAkJCQkJCQltZW1jcHkoaWVlZS0+cEhUSW5mby0+UGVlckhUSW5mb0J1ZiwgbmV0d29yay0+YnNzaHQuYmRIVEluZm9CdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRJbmZvTGVuKTsKIAkJCQkJCX0KQEAgLTIxMTMsNyArMjExMyw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxpZXIgVFggcXVldWUgbWFuYWdlbWVudC4KKy8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxlciBUWCBxdWV1ZSBtYW5hZ2VtZW50LgogICogSW5zdGVhZCBvZiB1c2luZyBuZXRpZl9bc3RvcC93YWtlXV9xdWV1ZSB0aGUgZHJpdmVyCiAgKiB3aWxsIHVzZXMgdGhlc2UgdHdvIGZ1bmN0aW9uIChwbHVzIGEgcmVzZXQgb25lKSwgdGhhdAogICogd2lsbCBpbnRlcm5hbGx5IHVzZXMgdGhlIGtlcm5lbCBuZXRpZl8qIGFuZCB0YWtlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hULmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaAppbmRleCBjZGU2MDNmLi4wYjFhMWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaApAQCAtNjQsNyArNjQsNyBAQAogfUhUX0NIQU5ORUxfV0lEVEgsICpQSFRfQ0hBTk5FTF9XSURUSDsKIAogLy8KLS8vIFJlcHJlc2VudCBFeHRlbnRpb24gQ2hhbm5lbCBPZmZzZXQgaW4gSFQgQ2FwYWJpbGl0aWVzCisvLyBSZXByZXNlbnQgRXh0ZW5zaW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcwogLy8gVGhpcyBpcyBhdmFpbGFibGUgb25seSBpbiA0ME1oeiBtb2RlLgogLy8KIHR5cGVkZWYgZW51bSBfSFRfRVhUQ0hOTF9PRkZTRVR7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMKaW5kZXggNTBmNGY1OS4uZTg4YTgzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYwpAQCAtNDIzLDcgKzQyMyw3IEBACiAvKioKICogRnVuY3Rpb246CUhUSU9UQWN0SXNEaXNhYmxlTUNTMTUKICoKLSogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZXZpbmcgTUNTMTUKKyogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZWl2aW5nIE1DUzE1CiAqCiAqIElucHV0OgogKgkJCVBBREFQVEVSCQlBZGFwdGVyLApAQCAtNDYwLDcgKzQ2MCw3IEBACiAvKioKICogRnVuY3Rpb246CUhUSU9UQWN0SXNEaXNhYmxlTUNTVHdvU3BhdGlhbFN0cmVhbQogKgotKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNldmluZyBBbGwgMiBzcyBwYWNrZXRzCisqIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2VpdmluZyBBbGwgMiBzcyBwYWNrZXRzCiAqCiAqIElucHV0OgogKgkJCVBBREFQVEVSCQlBZGFwdGVyLApAQCAtMTQwOSw3ICsxNDA5LDcgQEAKIAkvL2lmIGluIGhhbGYgTiBtb2RlLCBzZXQgdG8gMjBNIGJhbmR3aWR0aCBwbGVhc2UgMDkuMDguMjAwOCBXQi4KIAlpZihCYW5kd2lkdGg9PUhUX0NIQU5ORUxfV0lEVEhfMjBfNDAgJiYgKCFpZWVlLT5HZXRIYWxmTm1vZGVTdXBwb3J0QnlBUHNIYW5kbGVyKGllZWUtPmRldikpKQogCSB7Ci0JCQkvLyBIYW5kbGUgSWxsZWdhbCBleHRlbnRpb24gY2hhbm5lbCBvZmZzZXQhIQorCQkJLy8gSGFuZGxlIElsbGVnYWwgZXh0ZW5zaW9uIGNoYW5uZWwgb2Zmc2V0ISEKIAkJaWYoaWVlZS0+Y3VycmVudF9uZXR3b3JrLmNoYW5uZWw8MiAmJiBPZmZzZXQ9PUhUX0VYVENITkxfT0ZGU0VUX0xPV0VSKQogCQkJT2Zmc2V0ID0gSFRfRVhUQ0hOTF9PRkZTRVRfTk9fRVhUOwogCQlpZihPZmZzZXQ9PUhUX0VYVENITkxfT0ZGU0VUX1VQUEVSIHx8IE9mZnNldD09SFRfRVhUQ0hOTF9PRkZTRVRfTE9XRVIpIHsKQEAgLTE0MjYsNyArMTQyNiw3IEBACiAKIAlwSFRJbmZvLT5iU3dCd0luUHJvZ3Jlc3MgPSB0cnVlOwogCi0JLy8gVE9ETzogMjAwNy43LjEzIGJ5IEVtaWx5IFdhaXQgMjAwMG1zICBpbiBvcmRlciB0byBnYXJhbnRlZSB0aGF0IHN3aXRjaGluZworCS8vIFRPRE86IDIwMDcuNy4xMyBieSBFbWlseSBXYWl0IDIwMDBtcyAgaW4gb3JkZXIgdG8gZ3VhcmFudGVlIHRoYXQgc3dpdGNoaW5nCiAJLy8gICBiYW5kd2lkdGggaXMgZXhlY3V0ZWQgYWZ0ZXIgc2NhbiBpcyBmaW5pc2hlZC4gSXQgaXMgYSB0ZW1wb3JhbCBzb2x1dGlvbgogCS8vICAgYmVjYXVzZSBzb2Z0d2FyZSBzaG91bGQgZ2FucmFudGVlIHRoZSBsYXN0IG9wZXJhdGlvbiBvZiBzd2l0Y2hpbmcgYmFuZHdpZHRoCiAJLy8gICBpcyBleGVjdXRlZCBwcm9wZXJsbHkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UUy5oCmluZGV4IGJhYWFjMjEuLmU3ZTI2ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UUy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UUy5oCkBAIC00NCw3ICs0NCw3IEBACiAJdTE2CQkJCVJ4VGltZW91dEluZGljYXRlU2VxOwogCXN0cnVjdCBsaXN0X2hlYWQJCVJ4UGVuZGluZ1BrdExpc3Q7CiAJc3RydWN0IHRpbWVyX2xpc3QJCVJ4UGt0UGVuZGluZ1RpbWVyOwotCUJBX1JFQ09SRAkJCVJ4QWRtaXR0ZWRCQVJlY29yZDsJIC8vIEZvciBCQSBSZWNlcGllbnQKKwlCQV9SRUNPUkQJCQlSeEFkbWl0dGVkQkFSZWNvcmQ7CSAvLyBGb3IgQkEgUmVjaXBpZW50CiAJdTE2CQkJCVJ4TGFzdFNlcU51bTsKIAl1OAkJCQlSeExhc3RGcmFnTnVtOwogCXU4CQkJCW51bTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYwppbmRleCBjM2ZjYWFlLi45NTdjZTRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jCkBAIC0xMzUsNyArMTM1LDcgQEAKIAlSZXNldFRzQ29tbW9uSW5mbygmcFRTLT5Uc0NvbW1vbkluZm8pOwogCXBUUy0+UnhJbmRpY2F0ZVNlcSA9IDB4ZmZmZjsgLy8gVGhpcyBpbmRpY2F0ZSB0aGUgUnhJbmRpY2F0ZVNlcSBpcyBub3QgdXNlZCBub3chIQogCXBUUy0+UnhUaW1lb3V0SW5kaWNhdGVTZXEgPSAweGZmZmY7IC8vIFRoaXMgaW5kaWNhdGUgdGhlIFJ4VGltZW91dEluZGljYXRlU2VxIGlzIG5vdCB1c2VkIG5vdyEhCi0JUmVzZXRCYUVudHJ5KCZwVFMtPlJ4QWRtaXR0ZWRCQVJlY29yZCk7CSAgLy8gRm9yIEJBIFJlY2VwaWVudAorCVJlc2V0QmFFbnRyeSgmcFRTLT5SeEFkbWl0dGVkQkFSZWNvcmQpOwkgIC8vIEZvciBCQSBSZWNpcGllbnQKIH0KIAogdm9pZCBUU0luaXRpYWxpemUoc3RydWN0IGllZWU4MDIxMV9kZXZpY2UgKmllZWUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3NjYXR0ZXJ3YWxrLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3NjYXR0ZXJ3YWxrLmMKaW5kZXggNDlmNDAxZi4uMzU0M2E2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9zY2F0dGVyd2Fsay5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvc2NhdHRlcndhbGsuYwpAQCAtNzEsNyArNzEsNyBAQAogCQkJCSB1bnNpZ25lZCBpbnQgbW9yZSkKIHsKIAkvKiB3YWxrLT5kYXRhIG1heSBiZSBwb2ludGluZyB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgbmV4dCBwYWdlOwotCSAgIGhvd2V2ZXIsIHdlIGtub3cgd2UgdHJhbnNmZXJlZCBhdCBsZWFzdCBvbmUgYnl0ZS4gIFNvLAorCSAgIGhvd2V2ZXIsIHdlIGtub3cgd2UgdHJhbnNmZXJyZWQgYXQgbGVhc3Qgb25lIGJ5dGUuICBTbywKIAkgICB3YWxrLT5kYXRhIC0gMSB3aWxsIGJlIGEgdmlydHVhbCBhZGRyZXNzIGluIHRoZSBtYXBwZWQgcGFnZS4gKi8KIAogCWlmIChvdXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOTJVX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5MlVfY29yZS5jCmluZGV4IGRhNjEyZTYuLmU4MWI4YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5MlVfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5MlVfY29yZS5jCkBAIC00NjAsNyArNDYwLDcgQEAKIC8qIHU4IHJlYWRfcGh5X2NjayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBhZHIpOyAqLwogLyogdTggcmVhZF9waHlfb2ZkbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBhZHIpOyAqLwogLyogdGhpcyBtaWdodCBzdGlsbCBjYWxsZWQgaW4gd2hhdCB3YXMgdGhlIFBIWSBydGw4MTg1L3J0bDgxOTIgY29tbW9uIGNvZGUKLSAqIHBsYW5zIGFyZSB0byBwb3NzaWJpbHR5IHR1cm4gaXQgYWdhaW4gaW4gb25lIGNvbW1vbiBjb2RlLi4uCisgKiBwbGFucyBhcmUgdG8gcG9zc2liaWxpdHkgdHVybiBpdCBhZ2FpbiBpbiBvbmUgY29tbW9uIGNvZGUuLi4KICAqLwogaW5saW5lIHZvaWQgZm9yY2VfcGNpX3Bvc3Rpbmcoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKQEAgLTEzNzgsNyArMTM3OCw3IEBACiAJCS8vdHhfYWdnX2Rlc2MtPkxJTklQID0gMDsKIAkJLy90eF9hZ2dfZGVzYy0+Q21kSW5pdCA9IDE7CiAJCXR4X2FnZ19kZXNjLT5PZmZzZXQgPSAgc2l6ZW9mKHR4X2Z3aW5mb184MTl4X3VzYikgKyA4OwotCQkvKiBhbHJlYWR5IHJhdyBkYXRhLCBuZWVkIG5vdCB0byBzdWJzdHJhY3QgaGVhZGVyIGxlbmd0aCAqLworCQkvKiBhbHJlYWR5IHJhdyBkYXRhLCBuZWVkIG5vdCB0byBzdWJ0cmFjdCBoZWFkZXIgbGVuZ3RoICovCiAJCXR4X2FnZ19kZXNjLT5Qa3RTaXplID0gc2tiLT5sZW4gJiAweGZmZmY7CiAKIAkJLypEV09SRCAxKi8KQEAgLTI4ODgsNyArMjg4OCw3IEBACiAJUlRfVFJBQ0UoQ09NUF9FUFJPTSwgIjw9PT09PT09PT09PSVzKCksIGVwcm9tdHlwZTolZFxuIiwgX19GVU5DVElPTl9fLCBwcml2LT5lcHJvbXR5cGUpOwogfQogCi0vL3VzZWQgdG8gc3dhcCBlbmRpYW4uIGFzIG50b2hsICYgaHRvbmwgYXJlIG5vdCBuZWNjZXNzYXJ5IHRvIHN3YXAgZW5kaWFuLCBzbyB1c2UgdGhpcyBpbnN0ZWFkLgorLy91c2VkIHRvIHN3YXAgZW5kaWFuLiBhcyBudG9obCAmIGh0b25sIGFyZSBub3QgbmVjZXNzYXJ5IHRvIHN3YXAgZW5kaWFuLCBzbyB1c2UgdGhpcyBpbnN0ZWFkLgogc3RhdGljIGlubGluZSB1MTYgZW5kaWFuX3N3YXAodTE2KiBkYXRhKQogewogCXUxNiB0bXAgPSAqZGF0YTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfSFRUeXBlLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX0hUVHlwZS5oCmluZGV4IDAxZjU4YjkuLjJhYzQyMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfSFRUeXBlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9IVFR5cGUuaApAQCAtNjUsNyArNjUsNyBAQAogfUhUX0NIQU5ORUxfV0lEVEgsICpQSFRfQ0hBTk5FTF9XSURUSDsKIAogLy8KLS8vIFJlcHJlc2VudCBFeHRlbnRpb24gQ2hhbm5lbCBPZmZzZXQgaW4gSFQgQ2FwYWJpbGl0aWVzCisvLyBSZXByZXNlbnQgRXh0ZW5zaW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcwogLy8gVGhpcyBpcyBhdmFpbGFibGUgb25seSBpbiA0ME1oeiBtb2RlLgogLy8KIHR5cGVkZWYgZW51bSBfSFRfRVhUQ0hOTF9PRkZTRVR7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX3BoeS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9waHkuYwppbmRleCA0MTY4NGU4Li5jNDU4NmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX3BoeS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfcGh5LmMKQEAgLTE1MzEsMTMgKzE1MzEsMTMgQEAKIAl7CiAJCWNhc2UgSFRfQ0hBTk5FTF9XSURUSF8yMDoKIAkJCXJlZ0J3T3BNb2RlIHw9IEJXX09QTU9ERV8yME1IWjsKLQkJICAgICAgIC8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhc3VlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKKwkJICAgICAgIC8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhdXNlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKIAkJCXdyaXRlX25pY19ieXRlKGRldiwgQldfT1BNT0RFLCByZWdCd09wTW9kZSk7CiAJCQlicmVhazsKIAogCQljYXNlIEhUX0NIQU5ORUxfV0lEVEhfMjBfNDA6CiAJCQlyZWdCd09wTW9kZSAmPSB+QldfT1BNT0RFXzIwTUhaOwotCQkJLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2FzdWUgd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcworCQkJLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2F1c2Ugd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcwogCQkJd3JpdGVfbmljX2J5dGUoZGV2LCBCV19PUE1PREUsIHJlZ0J3T3BNb2RlKTsKIAkJCWJyZWFrOwogCkBAIC0xNjQ3LDcgKzE2NDcsNyBAQAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKmZ1bmN0aW9uOiAgVGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYmFuZHdpdGggc3dpdGNoIHdvcmsuCisgKmZ1bmN0aW9uOiAgVGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYmFuZHdpZHRoIHN3aXRjaCB3b3JrLgogICogICBpbnB1dDogIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYKICAqICAgCSAgICAgSFRfQ0hBTk5FTF9XSURUSAlCYW5kd2lkdGggIC8vMjBNIG9yIDQwTQogICogICAJICAgICBIVF9FWFRDSE5MX09GRlNFVCBPZmZzZXQgCSAgIC8vVXBwZXIsIExvd2VyLCBvciBEb24ndCBjYXJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2NtZC5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9jbWQuaAppbmRleCAzYTk0NWI1Li4yZGM3ODQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2NtZC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfY21kLmgKQEAgLTY1Niw3ICs2NTYsNyBAQAogLyoKICAqIFJlc3VsdDoKICAqIDB4MDA6IHN1Y2Nlc3MKLSAqIDB4MDE6IHN1Y2VzcywgYW5kIGNoZWNrIFJlc3BvbnNlLgorICogMHgwMTogc3VjY2VzcywgYW5kIGNoZWNrIFJlc3BvbnNlLgogICogMHgwMjogY21kIGlnbm9yZWQgZHVlIHRvIGR1cGxpY2F0ZWQgc2VxdWNuZSBudW1iZXIKICAqIDB4MDM6IGNtZCBkcm9wcGVkIGR1ZSB0byBpbnZhbGlkIGNtZCBjb2RlCiAgKiAweDA0OiByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbGVkLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2xlZC5oCmluZGV4IDk5NGVmODIuLjgwODVlNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbGVkLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9sZWQuaApAQCAtNzgsMTQgKzc4LDE0IEBACiB9OwogCiBzdHJ1Y3QgbGVkX3ByaXYgewotCS8qIGFkZCBmb3IgbGVkIGNvbnRyb2xsICovCisJLyogYWRkIGZvciBsZWQgY29udHJvbCAqLwogCXN0cnVjdCBMRURfODcxeAkJU3dMZWQwOwogCXN0cnVjdCBMRURfODcxeAkJU3dMZWQxOwogCWVudW0gTEVEX1NUUkFURUdZXzg3MXgJTGVkU3RyYXRlZ3k7CiAJdTgJCQliUmVnVXNlTGVkOwogCXZvaWQgKCpMZWRDb250cm9sSGFuZGxlcikoc3RydWN0IF9hZGFwdGVyICpwYWRhcHRlciwKIAkJCQkgIGVudW0gTEVEX0NUTF9NT0RFIExlZEFjdGlvbik7Ci0JLyogYWRkIGZvciBsZWQgY29udHJvbGwgKi8KKwkvKiBhZGQgZm9yIGxlZCBjb250cm9sICovCiB9OwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuYwppbmRleCA5OGJhNzYwLi44NjY1NTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuYwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAKIAkJCSAgICAgIChzdHJ1Y3QgbmRpc193bGFuX2Jzc2lkX2V4ICopcGRldl9uZXR3b3JrKTsKIH0KIAotLyp0aGUgZnVjbnRpb24gaXMgYXQgcGFzc2l2ZV9sZXZlbCovCisvKnRoZSBmdW5jdGlvbiBpcyBhdCBwYXNzaXZlX2xldmVsKi8KIHZvaWQgcjg3MTJfam9pbmJzc19yZXNldChzdHJ1Y3QgX2FkYXB0ZXIgKnBhZGFwdGVyKQogewogCWludCBpOwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAKIAlyZXR1cm4gcGh0cHJpdi0+aHRfb3B0aW9uOwogfQogCi0vKiB0aGUgZnVjbnRpb24gaXMgPiBwYXNzaXZlX2xldmVsIChpbiBjcml0aWNhbF9zZWN0aW9uKSAqLworLyogdGhlIGZ1bmN0aW9uIGlzID4gcGFzc2l2ZV9sZXZlbCAoaW4gY3JpdGljYWxfc2VjdGlvbikgKi8KIHN0YXRpYyB2b2lkIHVwZGF0ZV9odF9jYXAoc3RydWN0IF9hZGFwdGVyICpwYWRhcHRlciwgdTggKnBpZSwgdWludCBpZV9sZW4pCiB7CiAJdTggKnAsIG1heF9hbXBkdV9zejsKQEAgLTE4MDMsNyArMTgwMyw3IEBACiAJfQogfQogCi0vKnRoZSBmdWNudGlvbiBpcyA+PSBwYXNzaXZlX2xldmVsKi8KKy8qdGhlIGZ1bmN0aW9uIGlzID49IHBhc3NpdmVfbGV2ZWwqLwogdW5zaWduZWQgaW50IHI4NzEyX2FkZF9odF9hZGR0X2luZm8oc3RydWN0IF9hZGFwdGVyICpwYWRhcHRlciwKIAkJCSAgICAgIHU4ICppbl9pZSwgdTggKm91dF9pZSwKIAkJCSAgICAgIHVpbnQgaW5fbGVuLCB1aW50ICpwb3V0X2xlbikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmgKaW5kZXggMmIzNWI3NC4uMjc5NDgwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAkJCQkJCSAqICBzaW5nbGUtdG9uZSovCiAjZGVmaW5lCVdJRklfTVBfQ1RYX0JBQ0tHUk9VTkRfUEVORElORwkweDAwMDgwMDAwIC8qIHBlbmRpbmcgaW4gY29udCwgdHgKIAkJCQkJKiBiYWNrZ3JvdW5kIGR1ZSB0byBvdXQgb2Ygc2tiKi8KLSNkZWZpbmUJV0lGSV9NUF9DVFhfQ0NLX0hXCTB4MDAxMDAwMDAJLyogaW4gY29udGlub3VzIHR4Ki8KKyNkZWZpbmUJV0lGSV9NUF9DVFhfQ0NLX0hXCTB4MDAxMDAwMDAJLyogaW4gY29udGludW91cyB0eCovCiAjZGVmaW5lCVdJRklfTVBfQ1RYX0NDS19DUwkweDAwMjAwMDAwCS8qIGluIGNvbnQsIHR4IHdpdGggY2FycmllcgogCQkJCQkJICogc3VwcHJlc3Npb24qLwogI2RlZmluZSAgIFdJRklfTVBfTFBCS19TVEFURQkweDAwNDAwMDAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21wX3BoeV9yZWdkZWYuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbXBfcGh5X3JlZ2RlZi5oCmluZGV4IGUzODZmYjAuLjIzNTMyYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbXBfcGh5X3JlZ2RlZi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbXBfcGh5X3JlZ2RlZi5oCkBAIC0zOCw3ICszOCw3IEBACiAgKiAyLiAweDgwMC8weDkwMC8weEEwMC8weEMwMC8weEQwMC8weEUwMAogICogMy4gUkYgcmVnaXN0ZXIgMHgwMC0yRQogICogNC4gQml0IE1hc2sgZm9yIEJCL1JGIHJlZ2lzdGVyCi0gKiA1LiBPdGhlciBkZWZpbnRpb24gZm9yIEJCL1JGIFIvVworICogNS4gT3RoZXIgZGVmaW5pdGlvbiBmb3IgQkIvUkYgUi9XCiAgKgogICogMS4gUE1BQyBkdXBsaWNhdGUgcmVnaXN0ZXIgZHVlIHRvIGNvbm5lY3Rpb246IFJGX01vZGUsIFRSeFJOLCBOdW1PZiBMLVNURgogICogMS4gUGFnZTEoMHgxMDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi91c2JfaGFsaW5pdC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvdXNiX2hhbGluaXQuYwppbmRleCAwZTk0ODNiLi40NjI4N2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi91c2JfaGFsaW5pdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3VzYl9oYWxpbml0LmMKQEAgLTExMiw3ICsxMTIsNyBAQAogCQkvKiBJbml0aWFsaXphdGlvbiBmb3IgcG93ZXIgb24gc2VxdWVuY2UsICovCiAJCXI4NzEyX3dyaXRlOChwYWRhcHRlciwgU1BTMF9DVFJMICsgMSwgMHg1Myk7CiAJCXI4NzEyX3dyaXRlOChwYWRhcHRlciwgU1BTMF9DVFJMLCAweDU3KTsKLQkJLyogRW5hYmxlIEFGRSBNYWNybyBCbG9jaydzIEJhbmRnYXAgYWRuIEVuYWJsZSBBRkUgTWFjcm8KKwkJLyogRW5hYmxlIEFGRSBNYWNybyBCbG9jaydzIEJhbmRnYXAgYW5kIEVuYWJsZSBBRkUgTWFjcm8KIAkJICogQmxvY2sncyBNYmlhcwogCQkgKi8KIAkJdmFsOCA9IHI4NzEyX3JlYWQ4KHBhZGFwdGVyLCBBRkVfTUlTQyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5oIGIvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X2NoaXAuaAppbmRleCA3MTNjNWVhLi45ZjdjZDgyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X2NoaXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5oCkBAIC0xODAsOCArMTgwLDggQEAKICNkZWZpbmUgQ1VSX0VSUiAgICAgICAgICAgICAgICAgMHg3MCAgICAvKiBjdXJyZW50IGVycm9yICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBERUZfRVJSICAgICAgICAgICAgICAgICAweDcxICAgIC8qIHNwZWNpZmljIGNvbW1hbmQgZXJyb3IgICAgICAgICAgICovCiAKLS8qLS0tLSBzZW5zZSBrZXkgSW5mb21hdGlvbiAtLS0tKi8KLSNkZWZpbmUgU05TS0VZSU5GT19MRU4gICAgICAgICAgMyAgICAgICAvKiBsZW5ndGggb2Ygc2Vuc2Uga2V5IGluZm9tYXRpb24gICAqLworLyotLS0tIHNlbnNlIGtleSBJbmZvcm1hdGlvbiAtLS0tKi8KKyNkZWZpbmUgU05TS0VZSU5GT19MRU4gICAgICAgICAgMyAgICAgICAvKiBsZW5ndGggb2Ygc2Vuc2Uga2V5IGluZm9ybWF0aW9uICAgKi8KIAogI2RlZmluZSBTS1NWICAgICAgICAgICAgICAgICAgICAweDgwCiAjZGVmaW5lIENEQl9JTExFR0FMICAgICAgICAgICAgIDB4NDAKQEAgLTIzNSwxMyArMjM1LDEzIEBACiAgICAgdW5zaWduZWQgY2hhciAgIHNlZ19ubzsJCS8qIHNlZ21lbnQgTm8uICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgdW5zaWduZWQgY2hhciAgIHNlbnNlX2tleTsJCS8qIGJ5dGU1IDogSUxJICAgICAgICAgICAgICAgICAgICAgICovCiAJCQkJCQkvKiBiaXQzLTAgOiBzZW5zZSBrZXkgICAgICAgICAgICAgICovCi0gICAgdW5zaWduZWQgY2hhciAgIGluZm9bNF07CQkvKiBpbmZvbWF0aW9uICAgICAgICAgICAgICAgICAgICAgICAqLworICAgIHVuc2lnbmVkIGNoYXIgICBpbmZvWzRdOwkJLyogaW5mb3JtYXRpb24gICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgdW5zaWduZWQgY2hhciAgIGFkX3NlbnNlX2xlbjsJLyogYWRkaXRpb25hbCBzZW5zZSBkYXRhIGxlbmd0aCAgICAgKi8KLSAgICB1bnNpZ25lZCBjaGFyICAgY21kX2luZm9bNF07CS8qIGNvbW1hbmQgc3BlY2lmaWMgaW5mb21hdGlvbiAgICAgICovCisgICAgdW5zaWduZWQgY2hhciAgIGNtZF9pbmZvWzRdOwkvKiBjb21tYW5kIHNwZWNpZmljIGluZm9ybWF0aW9uICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgYXNjOwkJLyogQVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgYXNjcTsJCS8qIEFTQ1EgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgdW5zaWduZWQgY2hhciAgIHJmdTsJCS8qIEZSVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgdW5zaWduZWQgY2hhciAgIHNuc19rZXlfaW5mb1szXTsJLyogc2Vuc2Uga2V5IHNwZWNpZmljIGluZm9tYXRpb24gICAgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgc25zX2tleV9pbmZvWzNdOwkvKiBzZW5zZSBrZXkgc3BlY2lmaWMgaW5mb3JtYXRpb24gICAgKi8KIH07CiAKIC8qIFBDSSBPcGVyYXRpb24gUmVnaXN0ZXIgQWRkcmVzcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X3Njc2kuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9zY3NpLmgKaW5kZXggZmFjMTIyYy4uNjRiODQ5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X3Njc2kuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfc2NzaS5oCkBAIC04NSw3ICs4NSw3IEBACiAjZGVmaW5lIENISVBfTk9STUFMTU9ERQkJMHgwMAogI2RlZmluZSBDSElQX0RFQlVHTU9ERQkJMHgwMQogCi0vKiBTRCBQYXNzIFRocm91Z2ggQ29tbWFuZCBFeHRlbnRpb24gKi8KKy8qIFNEIFBhc3MgVGhyb3VnaCBDb21tYW5kIEV4dGVuc2lvbiAqLwogI2RlZmluZSBTRF9QQVNTX1RIUlVfTU9ERQkweEQwCiAjZGVmaW5lIFNEX0VYRUNVVEVfTk9fREFUQQkweEQxCiAjZGVmaW5lIFNEX0VYRUNVVEVfUkVBRAkJMHhEMgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9zZC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9zZC5jCmluZGV4IDIxYmZhNTcuLjhkMDY2YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3Ivc2QuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3NkLmMKQEAgLTE3MTksNyArMTcxOSw3IEBACiAJfQogCiBTZWFyY2hfRmluaXNoOgotCVJUU1hfREVCVUdQKCJGaW5hbCBjaG9vc2VuIHBoYXNlOiAlZFxuIiwgZmluYWxfcGhhc2UpOworCVJUU1hfREVCVUdQKCJGaW5hbCBjaG9zZW4gcGhhc2U6ICVkXG4iLCBmaW5hbF9waGFzZSk7CiAJcmV0dXJuIGZpbmFsX3BoYXNlOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc2VwL3NlcF9kcml2ZXIuYyBiL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlci5jCmluZGV4IDcxYTVmYmMuLmMyZjI2NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlci5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlci5jCkBAIC01ODYsNyArNTg2LDcgQEAKIAlkZXZfZGJnKCZzZXAtPnBkZXYtPmRldiwgInBvbGw6IHNlbmRfY3QgaXMgJWx4IHJlcGx5IGN0IGlzICVseFxuIiwKIAkJc2VwLT5zZW5kX2N0LCBzZXAtPnJlcGx5X2N0KTsKIAotCS8qIENoZWNrIGlmIGVycm9yIG9jY3VyZWQgZHVyaW5nIHBvbGwgKi8KKwkvKiBDaGVjayBpZiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcG9sbCAqLwogCXJldHZhbDIgPSBzZXBfcmVhZF9yZWcoc2VwLCBIV19IT1NUX1NFUF9IT1NUX0dQUjNfUkVHX0FERFIpOwogCWlmIChyZXR2YWwyICE9IDB4MCkgewogCQlkZXZfd2Fybigmc2VwLT5wZGV2LT5kZXYsICJwb2xsOyBwb2xsIGVycm9yICV4XG4iLCByZXR2YWwyKTsKQEAgLTExMDYsNyArMTEwNiw3IEBACiAJCQlsbGlfYXJyYXlbY291bnRdLmJsb2NrX3NpemUpOwogCX0KIAotCS8qIFNldCBvdXRwdXQgcGFyYW1zIGFjb3JkaW5nIHRvIHRoZSBpbl9vdXQgZmxhZyAqLworCS8qIFNldCBvdXRwdXQgcGFyYW1zIGFjY29yZGluZyB0byB0aGUgaW5fb3V0IGZsYWcgKi8KIAlpZiAoaW5fb3V0X2ZsYWcgPT0gU0VQX0RSSVZFUl9JTl9GTEFHKSB7CiAJCSpsbGlfYXJyYXlfcHRyID0gbGxpX2FycmF5OwogCQlzZXAtPmRtYV9yZXNfYXJyW3NlcC0+bnJfZGNiX2NyZWF0XS5pbl9udW1fcGFnZXMgPSBudW1fcGFnZXM7CkBAIC0xNTc3LDcgKzE1NzcsNyBAQAogCiAJCS8qCiAJCSAqIElmIHRoaXMgaXMgbm90IHRoZSBsYXN0IHRhYmxlIC0KLQkJICogdGhlbiBhbGxpZ24gaXQgdG8gdGhlIGJsb2NrIHNpemUKKwkJICogdGhlbiBhbGlnbiBpdCB0byB0aGUgYmxvY2sgc2l6ZQogCQkgKi8KIAkJaWYgKCFsYXN0X3RhYmxlX2ZsYWcpCiAJCQl0YWJsZV9kYXRhX3NpemUgPQpAQCAtMTk3NCw3ICsxOTc0LDcgQEAKIAlkZXZfZGJnKCZzZXAtPnBkZXYtPmRldiwgIlNFUF9EUklWRVJfRU5UUklFU19QRVJfVEFCTEVfSU5fU0VQIGlzICV4XG4iLAogCQlTRVBfRFJJVkVSX0VOVFJJRVNfUEVSX1RBQkxFX0lOX1NFUCk7CiAKLQkvKiBDYWxsIHRoZSBmdWNudGlvbiB0aGF0IGNyZWF0ZXMgdGFibGUgZnJvbSB0aGUgbGxpIGFycmF5cyAqLworCS8qIENhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0YWJsZSBmcm9tIHRoZSBsbGkgYXJyYXlzICovCiAJZXJyb3IgPSBzZXBfY29uc3RydWN0X2RtYV90YWJsZXNfZnJvbV9sbGkoc2VwLCBsbGlfaW5fYXJyYXksCiAJCXNlcC0+ZG1hX3Jlc19hcnJbc2VwLT5ucl9kY2JfY3JlYXRdLmluX251bV9wYWdlcywKIAkJbGxpX291dF9hcnJheSwKQEAgLTI0MTYsNyArMjQxNiw3IEBACiAgKglAY21kOiBjb21tYW5kCiAgKglAYXJnOiBwb2ludGVyIHRvIGFyZ3VtZW50IHN0cnVjdHVyZQogICoKLSAqCUltcGxlbWVudCB0aGUgaW9jdGwgbWV0aG9kcyBhdmFpbGJsZSBvbiB0aGUgU0VQIGRldmljZS4KKyAqCUltcGxlbWVudCB0aGUgaW9jdGwgbWV0aG9kcyBhdmFpbGFibGUgb24gdGhlIFNFUCBkZXZpY2UuCiAgKi8KIHN0YXRpYyBsb25nIHNlcF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc2VwL3NlcF9kcml2ZXJfY29uZmlnLmggYi9kcml2ZXJzL3N0YWdpbmcvc2VwL3NlcF9kcml2ZXJfY29uZmlnLmgKaW5kZXggZDNiOTIyMC4uMTAzMzQyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyX2NvbmZpZy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlcl9jb25maWcuaApAQCAtNjUsMTEgKzY1LDExIEBACiAjZGVmaW5lIFNFUF9EUklWRVJfTUlOX0RBVEFfU0laRV9QRVJfVEFCTEUJCTE2CiAKIC8qIGZsYWcgdGhhdCBzaWduaWZpZXMgdGFoIHRoZSBsb2NrIGlzCi1jdXJyZW50bHkgaGVsZCBieSB0aGUgcHJvY2Nlc3MgKHN0cnVjdCBmaWxlKSAqLworY3VycmVudGx5IGhlbGQgYnkgdGhlIHByb2Nlc3MgKHN0cnVjdCBmaWxlKSAqLwogI2RlZmluZSBTRVBfRFJJVkVSX09XTl9MT0NLX0ZMQUcgICAgICAgICAgICAgICAgICAgICAgICAxCiAKIC8qIGZsYWcgdGhhdCBzaWduaWZpZXMgdGFoIHRoZSBsb2NrIGlzIGN1cnJlbnRseSBOT1QKLWhlbGQgYnkgdGhlIHByb2NjZXNzIChzdHJ1Y3QgZmlsZSkgKi8KK2hlbGQgYnkgdGhlIHByb2Nlc3MgKHN0cnVjdCBmaWxlKSAqLwogI2RlZmluZSBTRVBfRFJJVkVSX0RJU09XTl9MT0NLX0ZMQUcgICAgICAgICAgICAgICAgICAgICAwCiAKIC8qIGluZGljYXRlcyB3aGV0aGVyIGRyaXZlciBoYXMgbWFwcGVkL3VubWFwcGVkIHNoYXJlZCBhcmVhICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9SRUFETUUgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9SRUFETUUKaW5kZXggNzBmNDkwOTkuLmI4M2JiYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL1JFQURNRQorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9SRUFETUUKQEAgLTMzLDcgKzMzLDcgQEAKIAktIE5BUEk/CiAJLSB3YXN0ZWQgb3ZlcmhlYWQgb2YgZXh0cmEgc3RhdHMKIAktIHN0YXRlIHZhcmlhYmxlcyBmb3IgdGhpbmdzIHRoYXQgYXJlCi0JICBlYXNpbHkgYXZhaWxibGUgYW5kIHNob3VsZG4ndCBiZSBrZXB0IGluIGNhcmQgc3RydWN0dXJlLCBjYXJkbnVtLCAuLi4KKwkgIGVhc2lseSBhdmFpbGFibGUgYW5kIHNob3VsZG4ndCBiZSBrZXB0IGluIGNhcmQgc3RydWN0dXJlLCBjYXJkbnVtLCAuLi4KIAkgIHNsb3RudW1iZXIsIGV2ZW50cywgLi4uCiAJLSBnZXQgcmlkIG9mIHNsaWNfc3BpbmxvY2sgd3JhcHBlcgogCS0gdm9sYXRpbGUgPT0gYmFkIGRlc2lnbiA9PiBiYWQgY29kZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NtN3h4L3NtdGNmYi5jIGIvZHJpdmVycy9zdGFnaW5nL3NtN3h4L3NtdGNmYi5jCmluZGV4IGQwMDdlNGEuLjc4YTE2YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zbTd4eC9zbXRjZmIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvc203eHgvc210Y2ZiLmMKQEAgLTk2NSw3ICs5NjUsNyBAQAogCQlnb3RvIGZhaWxlZDsKIAogCXNtdGNmYl9zZXRtb2RlKHNmYik7Ci0JLyogUHJpbWFyeSBkaXNwbGF5IHN0YXJ0aW5nIGZyb20gMCBwb3N0aW9uICovCisJLyogUHJpbWFyeSBkaXNwbGF5IHN0YXJ0aW5nIGZyb20gMCBwb3NpdGlvbiAqLwogCWh3LkJhc2VBZGRyZXNzSW5WUkFNID0gMDsKIAlzZmItPmZiLnBhciA9ICZodzsKIApAQCAtMTA1NSw3ICsxMDU1LDcgQEAKIAogCXBkZXYtPmRldi5wb3dlci5wb3dlcl9zdGF0ZSA9IG1zZzsKIAotCS8qIGFkZGl0aW9uYWx5IHR1cm4gb2ZmIGFsbCBmdW5jdGlvbiBibG9ja3MgaW5jbHVkaW5nIGludGVybmFsIFBMTHMgKi8KKwkvKiBhZGRpdGlvbmFsbHkgdHVybiBvZmYgYWxsIGZ1bmN0aW9uIGJsb2NrcyBpbmNsdWRpbmcgaW50ZXJuYWwgUExMcyAqLwogCXNtdGNfc2VxdygweDIxLCAweGZmKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAva2V5aGVscC5jIGIvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAva2V5aGVscC5jCmluZGV4IDIzY2Y3ZjQuLjE3MGYzODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL2tleWhlbHAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9rZXloZWxwLmMKQEAgLTY5LDcgKzY5LDcgQEAKIAltZW1zZXQoa2V5X29mZnNldHMsIDAsIHNpemVvZihrZXlfb2Zmc2V0cykpOwogCWtwID0gc3RhdGVfdGJsICsgbnN0YXRlcyArIDE7CiAJd2hpbGUgKCprcCsrKSB7Ci0JCS8qIGNvdW50IG9jY3VycmFuY2VzIG9mIGVhY2ggZnVuY3Rpb24gKi8KKwkJLyogY291bnQgb2NjdXJyZW5jZXMgb2YgZWFjaCBmdW5jdGlvbiAqLwogCQlmb3IgKGkgPSAwOyBpIDwgbnN0YXRlczsgaSsrLCBrcCsrKSB7CiAJCQlpZiAoISprcCkKIAkJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL3Nwa2d1aWRlLnR4dCBiL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL3Nwa2d1aWRlLnR4dAppbmRleCAyNDM2MmViLi5mMzIxMDU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9zcGtndWlkZS50eHQKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAvc3BrZ3VpZGUudHh0CkBAIC0xMDkxLDcgKzEwOTEsNyBAQAogCiBUaGVyZSBpcyBubyB3YXkgdG8gc2F2ZSB0aGVzZSB3aW5kb3cgc2V0dGluZ3MsIGFuZCB5b3UgY2FuIG9ubHkgaGF2ZSBvbmUKIHdpbmRvdyBkZWZpbmVkIGZvciBlYWNoIHZpcnR1YWwgY29uc29sZS4gIFRoZXJlIGlzIGFsc28gbm8gd2F5IHRvIGhhdmUKLXdpbmRvd3MgYXV0b21hdGljbHkgZGVmaW5lZCBmb3Igc3BlY2lmaWMgYXBwbGljYXRpb25zLgord2luZG93cyBhdXRvbWF0aWNhbGx5IGRlZmluZWQgZm9yIHNwZWNpZmljIGFwcGxpY2F0aW9ucy4KIAogSW4gb3JkZXIgdG8gZGVmaW5lIGEgd2luZG93LCB1c2UgdGhlIHJldmlldyBrZXlzIHRvIG1vdmUgeW91ciByZWFkaW5nCiBjdXJzb3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJlYSB5b3Ugd2FudCB0byBkZWZpbmUuICBUaGVuIHByZXNzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mZnNwb3J0LmMgYi9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mZnNwb3J0LmMKaW5kZXggMDA3YjI0Yi4uMjBkYWU3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmZzcG9ydC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2Zmc3BvcnQuYwpAQCAtMzgsNyArMzgsNyBAQAogKiBPdXRwdXRzOiAgICAgIE51bWJlciBvZiBVc2VkIEJpdHMKICogICAgICAgICAgICAgICAwLCBpZiB0aGUgYXJndW1lbnQgaXMgMAogKiBEZXNjcmlwdGlvbjogIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCBieSBhIGdpdmVuIHBvd2VyIG9mIDIgbnVtYmVyCi0qICAgICAgICAgICAgICAgTnVtYmVyIGNhbiBiZSB1cHRvIDMyIGJpdAorKiAgICAgICAgICAgICAgIE51bWJlciBjYW4gYmUgdXAgdG8gMzIgYml0CiAqJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYqLwogaW50IEdMT0JfQ2FsY19Vc2VkX0JpdHModTMyIG4pCiB7CkBAIC02NTMsNyArNjUzLDcgQEAKIAl9CiAJZGV2LT5xdWV1ZS0+cXVldWVkYXRhID0gZGV2OwogCi0JLyogQXMgTGludXggYmxvY2sgbGF5ZXIgZG9lbnMndCBzdXBwb3J0ID40S0IgaGFyZHdhcmUgc2VjdG9yLCAgKi8KKwkvKiBBcyBMaW51eCBibG9jayBsYXllciBkb2VzJ3Qgc3VwcG9ydCA+NEtCIGhhcmR3YXJlIHNlY3RvciwgICovCiAJLyogSGVyZSB3ZSBmb3JjZSByZXBvcnQgNTEyIGJ5dGUgaGFyZHdhcmUgc2VjdG9yIHNpemUgdG8gS2VybmVsICovCiAJYmxrX3F1ZXVlX2xvZ2ljYWxfYmxvY2tfc2l6ZShkZXYtPnF1ZXVlLCA1MTIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mbGFzaC5jIGIvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmxhc2guYwppbmRleCBhMmY4MjAwLi5hZWFkMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mbGFzaC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2ZsYXNoLmMKQEAgLTk2NSw3ICs5NjUsNyBAQAogCWlmICgwID09ICpmaXJzdF9mYWlsZWRfY21kKQogCQkqZmlyc3RfZmFpbGVkX2NtZCA9IFBlbmRpbmdDTURbaWR4XS5TQkRDbWRJbmRleDsKIAotCW5hbmRfZGJnX3ByaW50KE5BTkRfREJHX0RFQlVHLCAiVW5jb3JyZWN0YWJsZSBlcnJvciBoYXMgb2NjdXJlZCAiCisJbmFuZF9kYmdfcHJpbnQoTkFORF9EQkdfREVCVUcsICJVbmNvcnJlY3RhYmxlIGVycm9yIGhhcyBvY2N1cnJlZCAiCiAJCSJ3aGlsZSBleGVjdXRpbmcgJXUgQ29tbWFuZCAldSBhY2Nlc2luZyBCbG9jayAldVxuIiwKIAkJKHVuc2lnbmVkIGludClwX0JUYWJsZUNoYW5nZXNEZWx0YS0+ZnRsX2NtZF9jbnQsCiAJCVBlbmRpbmdDTURbaWR4XS5DTUQsCkBAIC0xODc5LDcgKzE4NzksNyBAQAogfQogCiAvKgotICogU2VhY2ggaW4gdGhlIExldmVsMiBDYWNoZSB0YWJsZSB0byBmaW5kIHRoZSBjYWNoZSBpdGVtLgorICogU2VhcmNoIGluIHRoZSBMZXZlbDIgQ2FjaGUgdGFibGUgdG8gZmluZCB0aGUgY2FjaGUgaXRlbS4KICAqIElmIGZpbmQsIHJlYWQgdGhlIGRhdGEgZnJvbSB0aGUgTkFORCBwYWdlIG9mIEwyIENhY2hlLAogICogT3RoZXJ3aXNlLCByZXR1cm4gRkFJTC4KICAqLwpAQCAtMzk4OSw3ICszOTg5LDcgQEAKICogSW5wdXRzOiAgICAgICBpbmRleCB0byBibG9jayB0aGF0IHdhcyBqdXN0IGluY3JlbWVudGVkIGFuZCBpcyBhdCB0aGUgbWF4CiAqIE91dHB1dHM6ICAgICAgUEFTUz0wIC8gRkFJTD0xCiAqIERlc2NyaXB0aW9uOiAgSWYgYW55IGVyYXNlIGNvdW50cyBhdCBNQVgsIGFkanVzdHMgZXJhc2UgY291bnQgb2YgZXZlcnkKLSogICAgICAgICAgICAgICBibG9jayBieSBzdWJzdHJhY3RpbmcgbGVhc3Qgd29ybgorKiAgICAgICAgICAgICAgIGJsb2NrIGJ5IHN1YnRyYWN0aW5nIGxlYXN0IHdvcm4KICogICAgICAgICAgICAgICBjb3VudGVyIGZyb20gY291bnRlciB2YWx1ZSBvZiBldmVyeSBlbnRyeSBpbiB3ZWFyIHRhYmxlCiAqJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYqLwogc3RhdGljIGludCBGVExfQWRqdXN0X1JlbGF0aXZlX0VyYXNlX0NvdW50KHUzMiBJbmRleF9vZl9NQVgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3RlX3JtaTQvc3luYXB0aWNzX2kyY19ybWk0LmMgYi9kcml2ZXJzL3N0YWdpbmcvc3RlX3JtaTQvc3luYXB0aWNzX2kyY19ybWk0LmMKaW5kZXggZDU1YThlNC4uM2U2OGQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3N0ZV9ybWk0L3N5bmFwdGljc19pMmNfcm1pNC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zdGVfcm1pNC9zeW5hcHRpY3NfaTJjX3JtaTQuYwpAQCAtNzEsNyArNzEsNyBAQAogI2RlZmluZSBTWU5BUFRJQ1NfUk1JNF9ERVZJQ0VfQ09OVFJPTF9GVU5DX05VTQkoMHgwMSkKIAogLyoqCi0gKiBzdHJ1Y3Qgc3luYXB0aWNzX3JtaTRfZm5fZGVzYyAtIGNvbnRhaW5zIHRoZSBmdW50aW9uIGRlc2NyaXB0b3IgaW5mb3JtYXRpb24KKyAqIHN0cnVjdCBzeW5hcHRpY3Nfcm1pNF9mbl9kZXNjIC0gY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlc2NyaXB0b3IgaW5mb3JtYXRpb24KICAqIEBxdWVyeV9iYXNlX2FkZHI6IGJhc2UgYWRkcmVzcyBmb3IgcXVlcnkKICAqIEBjbWRfYmFzZV9hZGRyOiBiYXNlIGFkZHJlc3MgZm9yIGNvbW1hbmQKICAqIEBjdHJsX2Jhc2VfYWRkcjogYmFzZSBhZGRyZXNzIGZvciBjb250cm9sCkBAIC05Miw3ICs5Miw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBzeW5hcHRpY3Nfcm1pNF9mbiAtIGNvbnRhaW5zIHRoZSBmdW50aW9uIGluZm9ybWF0aW9uCisgKiBzdHJ1Y3Qgc3luYXB0aWNzX3JtaTRfZm4gLSBjb250YWlucyB0aGUgZnVuY3Rpb24gaW5mb3JtYXRpb24KICAqIEBmbl9udW1iZXI6IGZ1bmN0aW9uIG51bWJlcgogICogQG51bV9vZl9kYXRhX3NvdXJjZXM6IG51bWJlciBvZiBkYXRhIHNvdXJjZXMKICAqIEBudW1fb2ZfZGF0YV9wb2ludHM6IG51bWJlciBvZiBmaW5nZXJzIHRvdWNoZWQKQEAgLTE1MSw3ICsxNTEsNyBAQAogICogQGlucHV0X2RldjogcG9pbnRlciBmb3IgaW5wdXQgZGV2aWNlCiAgKiBAaTJjX2NsaWVudDogcG9pbnRlciBmb3IgaTJjIGNsaWVudAogICogQGJvYXJkOiBjb25zdGFudCBwb2ludGVyIGZvciB0b3VjaCBwbGF0Zm9ybSBkYXRhCi0gKiBAZm5fbGlzdF9tdXRleDogbXV0ZXggZm9yIGZ1bnRpb24gbGlzdAorICogQGZuX2xpc3RfbXV0ZXg6IG11dGV4IGZvciBmdW5jdGlvbiBsaXN0CiAgKiBAcm1pNF9wYWdlX211dGV4OiBtdXRleCBmb3Igcm1pNCBwYWdlCiAgKiBAY3VycmVudF9wYWdlOiB2YXJpYWJsZSBmb3IgaW50ZWdlcgogICogQG51bWJlcl9vZl9pbnRlcnJ1cHRfcmVnaXN0ZXI6IGludGVycnVwdCByZWdpc3RlcnMgY291bnQKQEAgLTI3OCw3ICsyNzgsNyBAQAogCXR4YnVmWzBdCT0gYWRkcmVzcyAmIE1BU0tfOEJJVDsKIAl0eGJ1ZlsxXQk9IGRhdGE7CiAJcmV0dmFsCQk9IGkyY19tYXN0ZXJfc2VuZChwZGF0YS0+aTJjX2NsaWVudCwgdHhidWYsIDIpOwotCS8qIEFkZCBpbiByZXRyeSBvbiB3cml0ZXMgb25seSBpbiBjZXJ0aWFuIGVycm9yIHJldHVybiB2YWx1ZXMgKi8KKwkvKiBBZGQgaW4gcmV0cnkgb24gd3JpdGVzIG9ubHkgaW4gY2VydGFpbiBlcnJvciByZXR1cm4gdmFsdWVzICovCiAJaWYgKHJldHZhbCAhPSAyKSB7CiAJCWRldl9lcnIoJmkyYy0+ZGV2LCAiJXM6ZmFpbGVkOiVkXG4iLCBfX2Z1bmNfXywgcmV0dmFsKTsKIAkJcmV0dmFsID0gLUVJTzsKQEAgLTU2MSw3ICs1NjEsNyBAQAogCX0KIAkvKgogCSAqIDJEIGRhdGEgc291cmNlcyBoYXZlIG9ubHkgMyBiaXRzIGZvciB0aGUgbnVtYmVyIG9mIGZpbmdlcnMKLQkgKiBzdXBwb3J0ZWQgLSBzbyB0aGUgZW5jb2RpbmcgaXMgYSBiaXQgd2llcmQuCisJICogc3VwcG9ydGVkIC0gc28gdGhlIGVuY29kaW5nIGlzIGEgYml0IHdlaXJkLgogCSAqLwogCWlmICgocXVlcmllc1sxXSAmIE1BU0tfM0JJVCkgPD0gNCkKIAkJLyogYWRkIDEgc2luY2UgemVybyBiYXNlZCAqLwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAKICAqIHN5bmFwdGljc19ybWk0X3JlbW92ZSgpIC0gUmVtb3ZlcyB0aGUgaTJjLWNsaWVudCB0b3VjaHNjcmVlbiBkcml2ZXIKICAqIEBjbGllbnQ6IGkyYyBjbGllbnQgc3RydWN0dXJlIHBvaW50ZXIKICAqCi0gKiBUaGlzIGZ1bnRpb24gdXNlcyB0byByZW1vdmUgdGhlIGkyYy1jbGllbnQKKyAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0byByZW1vdmUgdGhlIGkyYy1jbGllbnQKICAqIHRvdWNoc2NyZWVuIGRyaXZlciBhbmQgcmV0dXJucyBpbnRlZ2VyLgogICovCiBzdGF0aWMgaW50IF9fZGV2ZXhpdCBzeW5hcHRpY3Nfcm1pNF9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKQEAgLTEwNTMsNyArMTA1Myw3IEBACiAgKiBzeW5hcHRpY3Nfcm1pNF9zdXNwZW5kKCkgLSBzdXNwZW5kIHRoZSB0b3VjaCBzY3JlZW4gY29udHJvbGxlcgogICogQGRldjogcG9pbnRlciB0byBkZXZpY2Ugc3RydWN0dXJlCiAgKgotICogVGhpcyBmdW50aW9uIGlzIHVzZWQgdG8gc3VzcGVuZCB0aGUKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzdXNwZW5kIHRoZQogICogdG91Y2ggcGFuZWwgY29udHJvbGxlciBhbmQgcmV0dXJucyBpbnRlZ2VyCiAgKi8KIHN0YXRpYyBpbnQgc3luYXB0aWNzX3JtaTRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCkBAIC0xMDg5LDcgKzEwODksNyBAQAogICogc3luYXB0aWNzX3JtaTRfcmVzdW1lKCkgLSByZXN1bWUgdGhlIHRvdWNoIHNjcmVlbiBjb250cm9sbGVyCiAgKiBAZGV2OiBwb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUKICAqCi0gKiBUaGlzIGZ1bnRpb24gaXMgdXNlZCB0byByZXN1bWUgdGhlIHRvdWNoIHBhbmVsCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVzdW1lIHRoZSB0b3VjaCBwYW5lbAogICogY29udHJvbGxlciBhbmQgcmV0dXJucyBpbnRlZ2VyLgogICovCiBzdGF0aWMgaW50IHN5bmFwdGljc19ybWk0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCkBAIC0xMTQ4LDcgKzExNDgsNyBAQAogLyoqCiAgKiBzeW5hcHRpY3Nfcm1pNF9pbml0KCkgLSBJbml0aWFsaXplIHRoZSB0b3VjaHNjcmVlbiBkcml2ZXIKICAqCi0gKiBUaGlzIGZ1bnRpb24gdXNlcyB0byBpbml0aWFsaXplcyB0aGUgc3luYXB0aWNzCisgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdG8gaW5pdGlhbGl6ZXMgdGhlIHN5bmFwdGljcwogICogdG91Y2hzY3JlZW4gZHJpdmVyIGFuZCByZXR1cm5zIGludGVnZXIuCiAgKi8KIHN0YXRpYyBpbnQgX19pbml0IHN5bmFwdGljc19ybWk0X2luaXQodm9pZCkKQEAgLTExNTgsNyArMTE1OCw3IEBACiAvKioKICAqIHN5bmFwdGljc19ybWk0X2V4aXQoKSAtIERlLWluaXRpYWxpemUgdGhlIHRvdWNoc2NyZWVuIGRyaXZlcgogICoKLSAqIFRoaXMgZnVudGlvbiB1c2VzIHRvIGRlLWluaXRpYWxpemUgdGhlIHN5bmFwdGljcworICogVGhpcyBmdW5jdGlvbiB1c2VzIHRvIGRlLWluaXRpYWxpemUgdGhlIHN5bmFwdGljcwogICogdG91Y2hzY3JlZW4gZHJpdmVyIGFuZCByZXR1cm5zIG5vbmUuCiAgKi8KIHN0YXRpYyB2b2lkIF9fZXhpdCBzeW5hcHRpY3Nfcm1pNF9leGl0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9fdGlvbWFwLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9fdGlvbWFwLmgKaW5kZXggMWUwMjczZS4uN2NiNTg3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvX3Rpb21hcC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL190aW9tYXAuaApAQCAtMzY2LDcgKzM2Niw3IEBACiAgKiAgPT09PT09PT0gc21faW50ZXJydXB0X2RzcCA9PT09PT09PQogICogIFB1cnBvc2U6CiAgKiAgICAgIFNldCBpbnRlcnJ1cHQgdmFsdWUgJiBzZW5kIGFuIGludGVycnVwdCB0byB0aGUgRFNQIHByb2Nlc3NvcihzKS4KLSAqICAgICAgVGhpcyBpcyB0eXBpY2FseSB1c2VkIHdoZW4gbWFpbGJveCBpbnRlcnJ1cHQgbWVjaGFuaXNtcyBhbGxvdyBkYXRhCisgKiAgICAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiBtYWlsYm94IGludGVycnVwdCBtZWNoYW5pc21zIGFsbG93IGRhdGEKICAqICAgICAgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGludGVycnVwdCBzdWNoIGFzIGZvciBPTUFQJ3MgQ01EL0RBVEEgcmVncy4KICAqICBQYXJhbWV0ZXJzOgogICogICAgICBkZXZfY29udGV4dDogICAgSGFuZGxlIHRvIEJyaWRnZSBkcml2ZXIgZGVmaW5lZCBkZXZpY2UgaW5mby4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL2Nobmxfc20uYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL2Nobmxfc20uYwppbmRleCA4MzgxMTMwLi42ZDY2ZTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9jaG5sX3NtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvY2hubF9zbS5jCkBAIC01NzgsNyArNTc4LDcgQEAKIAkJfSBlbHNlIGlmIChzdGF0X3N5bmMgPT0gLUVQRVJNKSB7CiAJCQkvKiBUaGlzIGNhbiBvY2N1ciB3aGVuIHRoZSB1c2VyIG1vZGUgdGhyZWFkIGlzCiAJCQkgKiBhYm9ydGVkICheQyksIG9yIHdoZW4gX1ZXSU4zMl9XYWl0U2luZ2xlT2JqZWN0KCkKLQkJCSAqIGZhaWxzIGR1ZSB0byB1bmtvd24gY2F1c2VzLiAqLworCQkJICogZmFpbHMgZHVlIHRvIHVua25vd24gY2F1c2VzLiAqLwogCQkJLyogRXZlbiB0aG91Z2ggV2FpdCBmYWlsZWQsIHRoZXJlIG1heSBiZSBzb21ldGhpbmcgaW4KIAkJCSAqIHRoZSBROiAqLwogCQkJaWYgKGxpc3RfZW1wdHkoJnBjaG5sLT5pb19jb21wbGV0aW9ucykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9keW5sb2FkL2Nsb2FkLmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvZHlubG9hZC9jbG9hZC5jCmluZGV4IDM5MDA0MDkuLjVjZWNkMjM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvZHlubG9hZC9jbG9hZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9keW5sb2FkL2Nsb2FkLmMKQEAgLTcxOCw3ICs3MTgsNyBAQAogCSAqIGFzIGEgdGVtcG9yYXJ5IGZvciAuZGxsdmlldyByZWNvcmQgY29uc3RydWN0aW9uLgogCSAqIEFsbG9jYXRlIHN0b3JhZ2UgZm9yIHRoZSB3aG9sZSB0YWJsZS4gIEFkZCAxIHRvIHRoZSBzZWN0aW9uIGNvdW50CiAJICogaW4gY2FzZSBhIHRyYW1wb2xpbmUgc2VjdGlvbiBpcyBhdXRvLWdlbmVyYXRlZCBhcyB3ZWxsIGFzIHRoZQotCSAqIHNpemUgb2YgdGhlIHRyYW1wb2xpbmUgc2VjdGlvbiBuYW1lIHNvIERMTFZpZXcgZG9lbnMndCBnZXQgbG9zdC4KKwkgKiBzaXplIG9mIHRoZSB0cmFtcG9saW5lIHNlY3Rpb24gbmFtZSBzbyBETExWaWV3IGRvZXMndCBnZXQgbG9zdC4KIAkgKi8KIAogCXNpeiA9IHN5bV9jb3VudCAqIHNpemVvZihzdHJ1Y3QgbG9jYWxfc3ltYm9sKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ody9od19tbXUuYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ody9od19tbXUuYwppbmRleCAwMTRmNWQ1Li5jMjE0ZGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaHcvaHdfbW11LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2h3L2h3X21tdS5jCkBAIC01OSw3ICs1OSw3IEBACiAgKiBSRVRVUk5TOgogICoKICAqICAgICAgIFR5cGUJCTogaHdfc3RhdHVzCi0gKiAgICAgICBEZXNjcmlwdGlvbiAgICAgOiAwCQkgLS0gTm8gZXJyb3JzIG9jY3VyZWQKKyAqICAgICAgIERlc2NyaXB0aW9uICAgICA6IDAJCSAtLSBObyBlcnJvcnMgb2NjdXJyZWQKICAqCQkJIFJFVF9CQURfTlVMTF9QQVJBTSAgICAgLS0gQSBQb2ludGVyCiAgKgkJCQkJCVBhcmFtYXRlciB3YXMgc2V0IHRvIE5VTEwKICAqCkBAIC0xMDIsNyArMTAyLDcgQEAKICAqIFJFVFVSTlM6CiAgKgogICogICAgICAgVHlwZQkgICAgCTogaHdfc3RhdHVzCi0gKiAgICAgICBEZXNjcmlwdGlvbiAgICAgOiAwCQkgLS0gTm8gZXJyb3JzIG9jY3VyZWQKKyAqICAgICAgIERlc2NyaXB0aW9uICAgICA6IDAJCSAtLSBObyBlcnJvcnMgb2NjdXJyZWQKICAqCQkJIFJFVF9CQURfTlVMTF9QQVJBTSAgICAgLS0gQSBQb2ludGVyIFBhcmFtYXRlcgogICoJCQkJCQkgICB3YXMgc2V0IHRvIE5VTEwKICAqCQkJIFJFVF9QQVJBTV9PVVRfT0ZfUkFOR0UgLS0gSW5wdXQgUGFyYW1ldGVyIG91dApAQCAtMTQ3LDcgKzE0Nyw3IEBACiAgKiBSRVRVUk5TOgogICoKICAqICAgICAgIFR5cGUJICAgIAk6IGh3X3N0YXR1cwotICogICAgICAgRGVzY3JpcHRpb24gICAgIDogMAkJIC0tIE5vIGVycm9ycyBvY2N1cmVkCisgKiAgICAgICBEZXNjcmlwdGlvbiAgICAgOiAwCQkgLS0gTm8gZXJyb3JzIG9jY3VycmVkCiAgKgkJCSBSRVRfQkFEX05VTExfUEFSQU0gICAgIC0tIEEgUG9pbnRlciBQYXJhbWF0ZXIKICAqCQkJCQkJCXdhcyBzZXQgdG8gTlVMTAogICoJCQkgUkVUX1BBUkFNX09VVF9PRl9SQU5HRSAtLSBJbnB1dCBQYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9fY2hubF9zbS5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL19jaG5sX3NtLmgKaW5kZXggZDYwZTI1Mi4uNmU3YWI0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL19jaG5sX3NtLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL19jaG5sX3NtLmgKQEAgLTE0NCw3ICsxNDQsNyBAQAogCXM4IGNobmxfbW9kZTsJCS8qIENobmwgbW9kZSBhbmQgYXR0cmlidXRlcyAqLwogCS8qIENobmwgSS9PIGNvbXBsZXRpb24gZXZlbnQgKHVzZXIgbW9kZSkgKi8KIAl2b2lkICp1c2VyX2V2ZW50OwotCS8qIEFic3RyYWN0IHN5bmNyb25pemF0aW9uIG9iamVjdCAqLworCS8qIEFic3RyYWN0IHN5bmNocm9uaXphdGlvbiBvYmplY3QgKi8KIAlzdHJ1Y3Qgc3luY19vYmplY3QgKnN5bmNfZXZlbnQ7CiAJdTMyIHByb2Nlc3M7CQkvKiBQcm9jZXNzIHdoaWNoIGNyZWF0ZWQgdGhpcyBjaGFubmVsICovCiAJdTMyIGNiX2FyZzsJCS8qIEFyZ3VtZW50IHRvIHVzZSB3aXRoIGNhbGxiYWNrICovCkBAIC0xNTYsNyArMTU2LDcgQEAKIAlzdHJ1Y3QgbGlzdF9oZWFkIGlvX2NvbXBsZXRpb25zOwogCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9wYWNrZXRzX2xpc3Q7CS8qIExpc3Qgb2YgZnJlZSBJcnBzICovCiAJc3RydWN0IG50Znlfb2JqZWN0ICpudGZ5X29iajsKLQl1MzIgYnl0ZXNfbW92ZWQ7CS8qIFRvdGFsIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcmVkICovCisJdTMyIGJ5dGVzX21vdmVkOwkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgKi8KIAogCS8qIEZvciBEU1AtRE1BICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbGsuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbGsuaAppbmRleCBiMjM5NTAzLi42ODUzNDFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY2xrLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Nsay5oCkBAIC01NSw3ICs1NSw3IEBACiAgKiAgICAgIEluaXRpYWxpemVzIHByaXZhdGUgc3RhdGUgb2YgQ0xLIG1vZHVsZS4KICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6Ci0gKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VyZWQuCisgKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VycmVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKiAgICAgIENMSyBpbml0aWFsaXplZC4KQEAgLTcxLDcgKzcxLDcgQEAKICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6CiAgKiAgICAgIDA6CVN1Y2Nlc3MuCi0gKgktRVBFUk06CUVycm9yIG9jY3VyZWQgd2hpbGUgZW5hYmxpbmcgdGhlIGNsb2NrLgorICoJLUVQRVJNOglFcnJvciBvY2N1cnJlZCB3aGlsZSBlbmFibGluZyB0aGUgY2xvY2suCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqLwpAQCAtODYsNyArODYsNyBAQAogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FUEVSTTogICAgICBFcnJvciBvY2N1cmVkIHdoaWxlIGRpc2FibGluZyB0aGUgY2xvY2suCisgKiAgICAgIC1FUEVSTTogICAgICBFcnJvciBvY2N1cnJlZCB3aGlsZSBkaXNhYmxpbmcgdGhlIGNsb2NrLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbW0uaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbW0uaAppbmRleCAyN2EyMWI1Li5hZmYyMjA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY21tLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NtbS5oCkBAIC0xOTAsNyArMTkwLDcgQEAKICAqICAgICAgSW5pdGlhbGl6ZXMgcHJpdmF0ZSBzdGF0ZSBvZiBDTU0gbW9kdWxlLgogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKLSAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJlZC4KKyAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJyZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqICAgICAgQ01NIGluaXRpYWxpemVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NvZC5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NvZC5oCmluZGV4IDUzYmQ0YmIuLmNiNjg0YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jb2QuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY29kLmgKQEAgLTI0OSw3ICsyNDksNyBAQAogICogIFBhcmFtZXRlcnM6CiAgKiAgICAgIE5vbmUuCiAgKiAgUmV0dXJuczoKLSAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJlZC4KKyAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJyZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqICAgICAgQSByZXF1aXJlbWVudCBmb3IgZWFjaCBvZiB0aGUgb3RoZXIgcHVibGljIENPRCBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZGV2LmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZGV2LmgKaW5kZXggZjQxZTQ3OC4uZjkyYjRiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rldi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kZXYuaApAQCAtNDk3LDcgKzQ5Nyw3IEBACiAgKiAgICAgIEluaXRpYWxpemUgREVWJ3MgcHJpdmF0ZSBzdGF0ZSwga2VlcGluZyBhIHJlZmVyZW5jZSBjb3VudCBvbiBlYWNoIGNhbGwuCiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgotICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cmVkLgorICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cnJlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICogICAgICBUUlVFOiBBIHJlcXVpcmVtZW50IGZvciB0aGUgb3RoZXIgcHVibGljIERFViBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHJ2LmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHJ2LmgKaW5kZXggMjVlZjFhMi4uOWNkYmQ5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rydi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kcnYuaApAQCAtMTU0LDcgKzE1NCw3IEBACiAgKiAgUGFyYW1ldGVyczoKICAqICAgICAgZHJ2X29iajogICAgICAgIExvY2F0aW9uIHRvIHN0b3JlIGNyZWF0ZWQgRFJWIE9iamVjdCBoYW5kbGUuCiAgKiAgUmV0dXJuczoKLSAqICAgICAgMDogICAgICAgIFN1Y2VzcworICogICAgICAwOiAgICAgICAgU3VjY2VzcwogICogICAgICAtRU5PTUVNOiAgICBGYWlsZWQgaW4gTWVtb3J5IGFsbG9jYXRpb24KICAqICAgICAgLUVQRVJNOiAgICAgIEdlbmVyYWwgRmFpbHVyZQogICogIFJlcXVpcmVzOgpAQCAtMTcwLDcgKzE3MCw3IEBACiAgKiAgICAgIFRoZXJlIGlzIG9uZSBEcml2ZXIgT2JqZWN0IGZvciB0aGUgRHJpdmVyIHJlcHJlc2VudGluZwogICogICAgICB0aGUgZHJpdmVyIGl0c2VsZi4gSXQgY29udGFpbnMgdGhlIGxpc3Qgb2YgZGV2aWNlCiAgKiAgICAgIE9iamVjdHMgYW5kIHRoZSBsaXN0IG9mIERldmljZSBFeHRlbnNpb25zIGluIHRoZSBzeXN0ZW0uCi0gKiAgICAgIEFsc28gaXQgY2FuIGhvbGQgb3RoZXIgbmVjY2Vzc2FyeQorICogICAgICBBbHNvIGl0IGNhbiBob2xkIG90aGVyIG5lY2Vzc2FyeQogICogICAgICBpbmZvcm1hdGlvbiBpbiBpdHMgc3RvcmFnZSBhcmVhLgogICovCiBleHRlcm4gaW50IGRydl9jcmVhdGUoc3RydWN0IGRydl9vYmplY3QgKipkcnZfb2JqKTsKQEAgLTE4MCw3ICsxODAsNyBAQAogICogIFB1cnBvc2U6CiAgKiAgICAgIGRlc3Ryb3lzIHRoZSBEZXYgT2JqZWN0IGxpc3QsIERydkV4dCBsaXN0CiAgKiAgICAgIGFuZCBkZXN0cm95IHRoZSBEUlYgb2JqZWN0Ci0gKiAgICAgIENhbGxlZCB1cG9uIGRyaXZlciB1bkxvYWRpbmcub3IgdW5zdWNjZXNmdWwgbG9hZGluZyBvZiB0aGUgZHJpdmVyLgorICogICAgICBDYWxsZWQgdXBvbiBkcml2ZXIgdW5Mb2FkaW5nLm9yIHVuc3VjY2Vzc2Z1bCBsb2FkaW5nIG9mIHRoZSBkcml2ZXIuCiAgKiAgUGFyYW1ldGVyczoKICAqICAgICAgZHJpdmVyX29iajogICAgIEhhbmRsZSB0byBEcml2ZXIgb2JqZWN0IC4KICAqICBSZXR1cm5zOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2RzcGRlZnMuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kc3BkZWZzLmgKaW5kZXggYzJiYTI2Yy4uZWQzMmJmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2RzcGRlZnMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHNwZGVmcy5oCkBAIC01Miw3ICs1Miw3IEBACiAgKiAgICAgIGRldl9jdHh0OiAgICBIYW5kbGUgdG8gQnJpZGdlIGRyaXZlciBkZWZpbmVkIGRldmljZSBjb250ZXh0LgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KKyAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgogICogICAgICAtRVBFUk06ICAgICAgT3RoZXIsIHVuc3BlY2lmaWVkIGVycm9yLgogICogIFJlcXVpcmVzOgogICogICAgICBkZXZfY3R4dCAhPSBOVUxMCkBAIC05MSw3ICs5MSw3IEBACiAgKiAgICAgIGRzcF9hZGRyOiAgICAgICBEU1AgYWRkcmVzcyBhdCB3aGljaCB0byBzdGFydCBleGVjdXRpb24uCiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgorICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cnJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCiAgKiAgICAgIC1FUEVSTTogICAgICBPdGhlciwgdW5zcGVjaWZpZWQgZXJyb3IuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIGRldl9jdHh0ICE9IE5VTEwKQEAgLTE0Miw3ICsxNDIsNyBAQAogICogICAgICBtZW1fdHlwZTogICAgICAgTWVtb3J5IHNwYWNlIG9uIERTUCB0byB3aGljaCB0byB0cmFuc2Zlci4KICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCisgKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VycmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KICAqICAgICAgLUVQRVJNOiAgICAgIE90aGVyLCB1bnNwZWNpZmllZCBlcnJvci4KICAqICBSZXF1aXJlczoKICAqICAgICAgZGV2X2N0eHQgIT0gTlVMTDsKQEAgLTIwNSw3ICsyMDUsNyBAQAogICogICAgICBkZXZfY3R4dDogICAgSGFuZGxlIHRvIEJyaWRnZSBkcml2ZXIgZGVmaW5lZCBkZXZpY2UgY29udGV4dC4KICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCisgKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VycmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KICAqICAgICAgLUVQRVJNOiAgICAgIE90aGVyLCB1bnNwZWNpZmllZCBlcnJvci4KICAqICBSZXF1aXJlczoKICAqICAgICAgZGV2X2N0eHQgIT0gTlVMTApAQCAtMjQ4LDcgKzI0OCw3IEBACiAgKiAgICAgIG1lbV90eXBlOiAgICAgICBNZW1vcnkgc3BhY2Ugb24gRFNQIGZyb20gd2hpY2ggdG8gdHJhbnNmZXIuCiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgorICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cnJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCiAgKiAgICAgIC1FUEVSTTogICAgICBPdGhlciwgdW5zcGVjaWZpZWQgZXJyb3IuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIGRldl9jdHh0ICE9IE5VTEw7CkBAIC0yNzQsNyArMjc0LDcgQEAKICAqICAgICAgbWVtX3R5cGU6ICAgICAgIE1lbW9yeSBzcGFjZSBvbiBEU1AgdG8gd2hpY2ggdG8gdHJhbnNmZXIuCiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgorICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cnJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCiAgKiAgICAgIC1FUEVSTTogICAgICBPdGhlciwgdW5zcGVjaWZpZWQgZXJyb3IuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIGRldl9jdHh0ICE9IE5VTEw7CkBAIC02MDEsNyArNjAxLDcgQEAKICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgICAgIFN1Y2Nlc3M7CiAgKiAgICAgIC1FRkFVTFQ6ICAgICAgICBJbnZhbGlkIGNobmxfb2JqLgotICogICAgICAtRVRJTUVET1VUOiBUaW1lb3V0IG9jY3VyZWQgYmVmb3JlIGNoYW5uZWwgY291bGQgYmUgaWRsZWQuCisgKiAgICAgIC1FVElNRURPVVQ6IFRpbWVvdXQgb2NjdXJyZWQgYmVmb3JlIGNoYW5uZWwgY291bGQgYmUgaWRsZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL21nci5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL21nci5oCmluZGV4IGU1MDZjNGQuLjQ3YjAzMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9tZ3IuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvbWdyLmgKQEAgLTE3Niw3ICsxNzYsNyBAQAogICogICAgICBtZ3JfaGFuZGxlOiAgICAgSGFuZGxlIHRvIHRoZSBNYW5hZ2VyIE9iamVjdAogICogICAgICBkY2RfaGFuZGxlOiAgICAgUHRyIHRvIHJlY2VpdmUgdGhlIERDRCBIYW5kbGUuCiAgKiAgUmV0dXJuczoKLSAqICAgICAgMDogICAgICAgIFN1Y2VzcworICogICAgICAwOiAgICAgICAgU3VjY2VzcwogICogICAgICAtRVBFUk06ICAgICAgRmFpbHVyZSB0byBnZXQgdGhlIEhhbmRsZQogICogIFJlcXVpcmVzOgogICogICAgICBNR1IgaXMgaW5pdGlhbGl6ZWQuCkBAIC0xOTUsNyArMTk1LDcgQEAKICAqICAgICAgY2FsbC4gSW5pdGlhbGl6ZXMgdGhlIERDRC4KICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6Ci0gKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VyZWQuCisgKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VycmVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKiAgICAgIFRSVUU6IEEgcmVxdWlyZW1lbnQgZm9yIHRoZSBvdGhlciBwdWJsaWMgTUdSIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9ub2RlLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2Uvbm9kZS5oCmluZGV4IDUzZGEwZWYuLjE2MzcxZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9ub2RlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL25vZGUuaApAQCAtNDQsNyArNDQsNyBAQAogICogICAgICAtRVNQSVBFOiAgICAgICAgaUFsZyBmdW5jdGlvbnMgbm90IGZvdW5kIGZvciBhIERBSVMgbm9kZS4KICAqICAgICAgLUVET006ICAgICAgICAgYXR0cl9pbiAhPSBOVUxMIGFuZCBhdHRyX2luLT5wcmlvIG91dCBvZgogICogICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLgotICogICAgICAtRVBFUk06ICAgICAgICAgIEEgZmFpbHVyZSBvY2N1cmVkLCB1bmFibGUgdG8gYWxsb2NhdGUgbm9kZS4KKyAqICAgICAgLUVQRVJNOiAgICAgICAgICBBIGZhaWx1cmUgb2NjdXJyZWQsIHVuYWJsZSB0byBhbGxvY2F0ZSBub2RlLgogICogICAgICAtRUJBRFI6ICAgIFByb2NjZXNzb3IgaXMgbm90IGluIHRoZSBydW5uaW5nIHN0YXRlLgogICogIFJlcXVpcmVzOgogICogICAgICBub2RlX2luaXQodm9pZCkgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3Byb2MuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wcm9jLmgKaW5kZXggNWUwOWZkMS4uZjAwZGZmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3Byb2MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHJvYy5oCkBAIC04OSw3ICs4OSw3IEBACiAgKiAgUmV0dXJuczoKICAqICAgICAgMCAgICAgOiAgICAgICBTVUNDRVNTCiAgKiAgICAgIC1FRkFVTFQgOiAgICAgICBJbnZhbGlkIHByb2Nlc3NvciBoYW5kbGUuCi0gKiAgICAgIC1FVElNRTogICAgICAgQSBUaW1lb3V0IE9jY3VyZWQgYmVmb3JlIHRoZSBDb250cm9sIGluZm9ybWF0aW9uCisgKiAgICAgIC1FVElNRTogICAgICAgQSBUaW1lb3V0IE9jY3VycmVkIGJlZm9yZSB0aGUgQ29udHJvbCBpbmZvcm1hdGlvbgogICoJCQkgIGNvdWxkIGJlIHNlbnQuCiAgKiAgICAgIC1FUEVSTSAgIDogICAgICAgR2VuZXJhbCBGYWlsdXJlLgogICogIFJlcXVpcmVzOgpAQCAtMTY5LDcgKzE2OSw3IEBACiAgKiAgICAgIDAgICAgIDogICAgICAgU3VjY2Vzcy4KICAqICAgICAgLUVGQVVMVCA6ICAgICAgIEludmFsaWQgcHJvY2Vzc29yIGhhbmRsZS4KICAqICAgICAgLUVCQURSOiAgICBUaGUgcHJvY2Vzc29yIGlzIG5vdCBpbiB0aGUgUFJPQ19SVU5OSU5HIHN0YXRlLgotICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cmVkIGJlZm9yZSB0aGUgRFNQIHJlc3BvbmRlZCB0byB0aGUKKyAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJyZWQgYmVmb3JlIHRoZSBEU1AgcmVzcG9uZGVkIHRvIHRoZQogICoJCQkgIHF1ZXJyeS4KICAqICAgICAgLUVQRVJNICAgOiAgICAgICBVbmFibGUgdG8gZ2V0IFJlc291cmNlIEluZm9ybWF0aW9uCiAgKiAgUmVxdWlyZXM6CkBAIC0yMjksNyArMjI5LDcgQEAKICAqICAgICAgY2FsbC4KICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6Ci0gKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VyZWQuCisgKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VycmVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKiAgICAgIFRSVUU6IEEgcmVxdWlyZW1lbnQgZm9yIHRoZSBvdGhlciBwdWJsaWMgUFJPQyBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHdyLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHdyLmgKaW5kZXggNWUzYWIyMS4uMGZiMDY2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3B3ci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wd3IuaApAQCAtNDYsNyArNDYsNyBAQAogICogICAgICAwOiAgICAgICAgICAgIFN1Y2Nlc3MuCiAgKiAgICAgIDA6IFN1Y2Nlc3MsIGJ1dCB0aGUgRFNQIHdhcyBhbHJlYWR5IGFzbGVlcC4KICAqICAgICAgLUVJTlZBTDogICAgVGhlIHNwZWNpZmllZCBzbGVlcF9jb2RlIGlzIG5vdCBzdXBwb3J0ZWQuCi0gKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VyZWQgd2hpbGUgd2FpdGluZyBmb3IgRFNQIHNsZWVwCisgKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VycmVkIHdoaWxlIHdhaXRpbmcgZm9yIERTUCBzbGVlcAogICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1hdGlvbi4KICAqICAgICAgLUVQRVJNOiAgICAgICAgICBHZW5lcmFsIGZhaWx1cmUsIHVuYWJsZSB0byBzZW5kIHNsZWVwIGNvbW1hbmQgdG8KICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRFNQLgpAQCAtNjcsNyArNjcsNyBAQAogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICAgICAgU3VjY2Vzcy4KICAqICAgICAgMDogIFN1Y2Nlc3MsIGJ1dCB0aGUgRFNQIHdhcyBhbHJlYWR5IGF3YWtlLgotICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cmVkIHdoaWxlIHdhaXRpbmcgZm9yIHdha2UKKyAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJyZWQgd2hpbGUgd2FpdGluZyBmb3Igd2FrZQogICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1hdGlvbi4KICAqICAgICAgLUVQRVJNOiAgICAgICAgICBHZW5lcmFsIGZhaWx1cmUsIHVuYWJsZSB0byBzZW5kIHdha2UgY29tbWFuZCB0bwogICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEU1AuCkBAIC04NSw3ICs4NSw3IEBACiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgICAgICBTdWNjZXNzLgogICogICAgICAwOiAgU3VjY2VzcywgYnV0IHRoZSBEU1Agd2FzIGFscmVhZHkgYXdha2UuCi0gKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VyZWQgd2hpbGUgd2FpdGluZyBmb3Igd2FrZQorICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cnJlZCB3aGlsZSB3YWl0aW5nIGZvciB3YWtlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWF0aW9uLgogICogICAgICAtRVBFUk06ICAgICAgICAgIEdlbmVyYWwgZmFpbHVyZSwgdW5hYmxlIHRvIHNlbmQgd2FrZSBjb21tYW5kIHRvCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIERTUC4KQEAgLTEwMyw3ICsxMDMsNyBAQAogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICAgICAgU3VjY2Vzcy4KICAqICAgICAgMDogIFN1Y2Nlc3MsIGJ1dCB0aGUgRFNQIHdhcyBhbHJlYWR5IGF3YWtlLgotICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cmVkIHdoaWxlIHdhaXRpbmcgZm9yIHdha2UKKyAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJyZWQgd2hpbGUgd2FpdGluZyBmb3Igd2FrZQogICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1hdGlvbi4KICAqICAgICAgLUVQRVJNOiAgICAgICAgICBHZW5lcmFsIGZhaWx1cmUsIHVuYWJsZSB0byBzZW5kIHdha2UgY29tbWFuZCB0bwogICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEU1AuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvcG1nci9kZXYuYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9wbWdyL2Rldi5jCmluZGV4IDlhMzhkODYuLjUyMjgxMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9wbWdyL2Rldi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9wbWdyL2Rldi5jCkBAIC03ODcsNyArNzg3LDcgQEAKIAogCS8qCiAJICogRklYTUU6IHRoaXMgY29kZSBuZWVkcyBzdHJ1Y3QgcHJvY19vYmplY3QgdG8gaGF2ZSBhIGxpc3RfaGVhZAotCSAqIGF0IHRoZSBiZWdpbmluZy4gSWYgbm90LCB0aGlzIGNhbiBnbyBob3JyaWJseSB3cm9uZy4KKwkgKiBhdCB0aGUgYmVnaW5uaW5nLiBJZiBub3QsIHRoaXMgY2FuIGdvIGhvcnJpYmx5IHdyb25nLgogCSAqLwogCWxpc3RfZm9yX2VhY2goY3VyciwgJmRldl9vYmotPnByb2NfbGlzdCkKIAkJcHJvY19ub3RpZnlfY2xpZW50cygodm9pZCAqKWN1cnIsIHJldCk7CkBAIC04MTAsNyArODEwLDcgQEAKIAlpZiAoIWRldl9ub2RlX29iaikKIAkJc3RhdHVzID0gLUVGQVVMVDsKIAotCS8qIFJldHJpZXZlIHRoZSBkZXZpY2Ugb2JqZWN0IGhhbmRsZSBvcmlnaW5hbHkgc3RvcmVkIHdpdGgKKwkvKiBSZXRyaWV2ZSB0aGUgZGV2aWNlIG9iamVjdCBoYW5kbGUgb3JpZ2luYWxseSBzdG9yZWQgd2l0aAogCSAqIHRoZSBkZXZfbm9kZTogKi8KIAlpZiAoIXN0YXR1cykgewogCQkvKiBjaGVjayB0aGUgZGV2aWNlIHN0cmluZyBhbmQgdGhlbiBzdG9yZSBkZXYgb2JqZWN0ICovCkBAIC05ODYsNyArOTg2LDcgQEAKIAkvKiBBZGQgRGV2T2JqZWN0IHRvIHRhaWwuICovCiAJLyoKIAkgKiBGSVhNRTogdGhpcyBjb2RlIG5lZWRzIHN0cnVjdCBwcm9jX29iamVjdCB0byBoYXZlIGEgbGlzdF9oZWFkCi0JICogYXQgdGhlIGJlZ2luaW5nLiBJZiBub3QsIHRoaXMgY2FuIGdvIGhvcnJpYmx5IHdyb25nLgorCSAqIGF0IHRoZSBiZWdpbm5pbmcuIElmIG5vdCwgdGhpcyBjYW4gZ28gaG9ycmlibHkgd3JvbmcuCiAJICovCiAJbGlzdF9hZGRfdGFpbCgoc3RydWN0IGxpc3RfaGVhZCAqKXByb2Nfb2JqLCAmZGV2X29iai0+cHJvY19saXN0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9kcnYuYwppbmRleCA4Yzg4NTgzLi5kYjgyMTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9kcnYuYwpAQCAtNjA5LDcgKzYwOSw3IEBACiAJREJDX1JFUVVJUkUoZGV2X25vZGVfc3RyZyAhPSBOVUxMKTsKIAogCS8qCi0JICogIEFsbG9jYXRlIG1lbW9yeSB0byBob2xkIHRoZSBzdHJpbmcuIFRoaXMgd2lsbCBsaXZlIHVudGlsbAorCSAqICBBbGxvY2F0ZSBtZW1vcnkgdG8gaG9sZCB0aGUgc3RyaW5nLiBUaGlzIHdpbGwgbGl2ZSB1bnRpbAogCSAqICBpdCBpcyBmcmVlZCBpbiB0aGUgUmVsZWFzZSByZXNvdXJjZXMuIFVwZGF0ZSB0aGUgZHJpdmVyIG9iamVjdAogCSAqICBsaXN0LgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3Ivbmxkci5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3Ivbmxkci5jCmluZGV4IGZiNWMyYmEuLjBlNzBjYmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9ubGRyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3Ivbmxkci5jCkBAIC01Nyw5ICs1Nyw5IEBACiAgKiAgIHV1dXV1dXV1fGZ1ZWVlZWVlfGZ1ZGRkZGRkfGZ1Y2NjY2NjfAogICogIHdoZXJlCiAgKiAgICAgIHUgPSB1bnVzZWQKLSAqICAgICAgY2NjY2NjID0gcHJlZmVyZWQvcmVxdWlyZWQgZHluYW1pYyBtZW0gc2VnaWQgZm9yIGNyZWF0ZSBwaGFzZSBkYXRhL2NvZGUKLSAqICAgICAgZGRkZGRkID0gcHJlZmVyZWQvcmVxdWlyZWQgZHluYW1pYyBtZW0gc2VnaWQgZm9yIGRlbGV0ZSBwaGFzZSBkYXRhL2NvZGUKLSAqICAgICAgZWVlZWVlID0gcHJlZmVyZWQvcmVxLiBkeW5hbWljIG1lbSBzZWdpZCBmb3IgZXhlY3V0ZSBwaGFzZSBkYXRhL2NvZGUKKyAqICAgICAgY2NjY2NjID0gcHJlZmVycmVkL3JlcXVpcmVkIGR5bmFtaWMgbWVtIHNlZ2lkIGZvciBjcmVhdGUgcGhhc2UgZGF0YS9jb2RlCisgKiAgICAgIGRkZGRkZCA9IHByZWZlcnJlZC9yZXF1aXJlZCBkeW5hbWljIG1lbSBzZWdpZCBmb3IgZGVsZXRlIHBoYXNlIGRhdGEvY29kZQorICogICAgICBlZWVlZWUgPSBwcmVmZXJyZWQvcmVxLiBkeW5hbWljIG1lbSBzZWdpZCBmb3IgZXhlY3V0ZSBwaGFzZSBkYXRhL2NvZGUKICAqICAgICAgZiA9IGZsYWcgaW5kaWNhdGluZyBpZiBtZW1vcnkgaXMgcHJlZmVycmVkIG9yIHJlcXVpcmVkOgogICoJICBmID0gMSBpZiByZXF1aXJlZCwgZiA9IDAgaWYgcHJlZmVycmVkLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL3Byb2MuYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL3Byb2MuYwppbmRleCBjNGU1YzRlMC4uMjQyZGQxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvcHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL3Byb2MuYwpAQCAtMTY3MCw3ICsxNjcwLDcgQEAKIAlpZiAoIXN0YXR1cykgewogCQlkZXZfZGJnKGJyaWRnZSwgIiVzOiBwcm9jZXNzb3IgaW4gc3RhbmRieSBtb2RlXG4iLCBfX2Z1bmNfXyk7CiAJCXBfcHJvY19vYmplY3QtPnByb2Nfc3RhdGUgPSBQUk9DX1NUT1BQRUQ7Ci0JCS8qIERlc3RvcnkgdGhlIE5vZGUgTWFuYWdlciwgbXNnX2N0cmwgTWFuYWdlciAqLworCQkvKiBEZXN0cm95IHRoZSBOb2RlIE1hbmFnZXIsIG1zZ19jdHJsIE1hbmFnZXIgKi8KIAkJaWYgKCEoZGV2X2Rlc3Ryb3kyKHBfcHJvY19vYmplY3QtPmRldl9vYmopKSkgewogCQkJLyogRGVzdHJveSB0aGUgbXNnX2N0cmwgYnkgY2FsbGluZyBtc2dfZGVsZXRlICovCiAJCQlkZXZfZ2V0X21zZ19tZ3IocF9wcm9jX29iamVjdC0+ZGV2X29iaiwgJmhtc2dfbWdyKTsKQEAgLTE4MjcsNyArMTgyNyw3IEBACiAKIAkvKiBUaGlzIGlzIG5lZWRlZCBvbmx5IHdoZW4gRGV2aWNlIGlzIGxvYWRlZCB3aGVuIGl0IGlzCiAJICogYWxyZWFkeSAnQUNUSVZFJyAqLwotCS8qIERlc3RvcnkgdGhlIE5vZGUgTWFuYWdlciwgbXNnX2N0cmwgTWFuYWdlciAqLworCS8qIERlc3Ryb3kgdGhlIE5vZGUgTWFuYWdlciwgbXNnX2N0cmwgTWFuYWdlciAqLwogCWlmICghZGV2X2Rlc3Ryb3kyKHByb2Nfb2JqLT5kZXZfb2JqKSkgewogCQkvKiBEZXN0cm95IHRoZSBtc2dfY3RybCBieSBjYWxsaW5nIG1zZ19kZWxldGUgKi8KIAkJZGV2X2dldF9tc2dfbWdyKHByb2Nfb2JqLT5kZXZfb2JqLCAmaG1zZ19tZ3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RtNjAwMC90bTYwMDAtdmlkZW8uYyBiL2RyaXZlcnMvc3RhZ2luZy90bTYwMDAvdG02MDAwLXZpZGVvLmMKaW5kZXggYzgwYTMxNi4uMTdkYjY2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RtNjAwMC90bTYwMDAtdmlkZW8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdG02MDAwL3RtNjAwMC12aWRlby5jCkBAIC0xODIsNyArMTgyLDcgQEAKIAlpZiAoIWJ1ZikKIAkJcmV0dXJuOwogCi0JLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bGwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCisJLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KIAlvdXRwID0gdmlkZW9idWZfdG9fdm1hbGxvYygmKCpidWYpLT52Yik7CiAKIAlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2NkMTg2NS5oIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9jZDE4NjUuaAppbmRleCA5OTQwOTY2Li44YzJhZDY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2NkMTg2NS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvY2QxODY1LmgKQEAgLTksNyArOSw3IEBACiAgKiAgICAgIFBsZWFzZSBETyBjb250YWN0IGlvOC1saW51eEBzcGVjaWFsaXguY28udWsgaWYgeW91IHJlcXVpcmUKICAqICAgICAgc3VwcG9ydC4KICAqCi0gKiAgICAgIFRoaXMgZHJpdmVyIHdhcyBkZXZlbG9wcGVkIGluIHRoZSBCaXRXaXphcmQgbGludXggZGV2aWNlCisgKiAgICAgIFRoaXMgZHJpdmVyIHdhcyBkZXZlbG9wZWQgaW4gdGhlIEJpdFdpemFyZCBsaW51eCBkZXZpY2UKICAqICAgICAgZHJpdmVyIHNlcnZpY2UuIElmIHlvdSByZXF1aXJlIGEgbGludXggZGV2aWNlIGRyaXZlciBmb3IgeW91cgogICogICAgICBwcm9kdWN0LCBwbGVhc2UgY29udGFjdCBkZXZpY2VzQEJpdFdpemFyZC5ubCBmb3IgYSBxdW90ZS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2VwY2EuYyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvZXBjYS5jCmluZGV4IDdhZDM2MzguLjdmMTM2OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvZXBjYS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvZXBjYS5jCkBAIC03LDcgKzcsNyBAQAogCSoqIFRoaXMgZHJpdmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnkgRGlnaSAqKgogCiAJTXVjaCBvZiB0aGlzIGRlc2lnbiBhbmQgY29kZSBjYW1lIGZyb20gZXBjYS5jIHdoaWNoIHdhcwotCWNvcHlyaWdodCAoQykgMTk5NCwgMTk5NSBUcm95IERlIEpvbmdoLCBhbmQgc3Vic3F1ZW50bHkKKwljb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUgVHJveSBEZSBKb25naCwgYW5kIHN1YnNlcXVlbnRseQogCW1vZGlmaWVkIGJ5IERhdmlkIE51Z2VudCwgQ2hyaXN0b3BoIExhbWV0ZXIsIE1pa2UgTWNMYWdhbi4KIAogCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC00NzEsNyArNDcxLDcgQEAKIAltZW1vZmYoY2gpOwogCiAJLyoKLQkgKiBUaGUgY2hhbm5lbCBoYXMgb2ZmaWNpYWx5IGJlZW4gY2xvc2VkLiBUaGUgbmV4dCB0aW1lIGl0IGlzIG9wZW5lZCBpdAorCSAqIFRoZSBjaGFubmVsIGhhcyBvZmZpY2lhbGx5IGJlZW4gY2xvc2VkLiBUaGUgbmV4dCB0aW1lIGl0IGlzIG9wZW5lZCBpdAogCSAqIHdpbGwgaGF2ZSB0byByZWluaXRpYWxpemVkLiBTZXQgYSBmbGFnIHRvIGluZGljYXRlIHRoaXMuCiAJICovCiAJLyogUHJldmVudCBmdXR1cmUgRGlnaSBwcm9ncmFtbWVkIGludGVycnVwdHMgZnJvbSBjb21pbmcgYWN0aXZlICovCkBAIC05NzUsNyArOTc1LDcgQEAKIAogCS8qCiAJICogTm90ZSA6IElmIGxpbG8gd2FzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBkcml2ZXIgYW5kIHRoZSBpZ25vcmUKLQkgKiBlcGNhY29uZmlnIG9wdGlvbiB3YXMgY2hvb3NlbiAoZGlnaWVwY2E9MikgdGhlbiBuYmRldnMgYW5kIG51bV9jYXJkcworCSAqIGVwY2Fjb25maWcgb3B0aW9uIHdhcyBjaG9zZW4gKGRpZ2llcGNhPTIpIHRoZW4gbmJkZXZzIGFuZCBudW1fY2FyZHMKIAkgKiB3aWxsIGVxdWFsIDAgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBva2F5OyBQQ0kgY2FyZHMgd2lsbCBzdGlsbCBiZQogCSAqIHBpY2tlZCB1cCBpZiBkZXRlY3RlZC4KIAkgKi8KQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAKIAltZW1hZGRyID0gYmQtPnJlX21hcF9tZW1iYXNlOwogCiAJLyoKLQkgKiBUaGUgYmVsb3cgYXNzaWdubWVudCB3aWxsIHNldCBiYyB0byBwb2ludCBhdCB0aGUgQkVHSU5JTkcgb2YgdGhlCisJICogVGhlIGJlbG93IGFzc2lnbm1lbnQgd2lsbCBzZXQgYmMgdG8gcG9pbnQgYXQgdGhlIEJFR0lOTklORyBvZiB0aGUKIAkgKiBjYXJkcyBjaGFubmVsIHN0cnVjdHVyZXMuIEZvciAxIGNhcmQgdGhlcmUgd2lsbCBiZSBiZXR3ZWVuIDggYW5kIDY0CiAJICogb2YgdGhlc2Ugc3RydWN0dXJlcy4KIAkgKi8KIAliYyA9IG1lbWFkZHIgKyBDSEFOU1RSVUNUOwogCiAJLyoKLQkgKiBUaGUgYmVsb3cgYXNzaWdubWVudCB3aWxsIHNldCBnZCB0byBwb2ludCBhdCB0aGUgQkVHSU5JTkcgb2YgZ2xvYmFsCisJICogVGhlIGJlbG93IGFzc2lnbm1lbnQgd2lsbCBzZXQgZ2QgdG8gcG9pbnQgYXQgdGhlIEJFR0lOTklORyBvZiBnbG9iYWwKIAkgKiBtZW1vcnkgYWRkcmVzcyAweGMwMC4gVGhlIGZpcnN0IGRhdGEgaW4gdGhhdCBnbG9iYWwgbWVtb3J5IGFjdHVhbGx5CiAJICogc3RhcnRzIGF0IGFkZHJlc3MgMHhjMWEuIFRoZSBjb21tYW5kIGluIHBvaW50ZXIgYmVnaW5zIGF0IDB4ZDEwLgogCSAqLwpAQCAtMTQ5Miw3ICsxNDkyLDcgQEAKIAkJLyoKIAkJICogVGhlIHR3byBhc3NpZ25tZW50cyBiZWxvdyBnZXQgdGhlIGN1cnJlbnQgbW9kZW0gc3RhdHVzCiAJCSAqIChtc3RhdCkgYW5kIHRoZSBwcmV2aW91cyBtb2RlbSBzdGF0dXMgKGxzdGF0KS4gVGhlc2UgYXJlCi0JCSAqIHVzZWZ1bCBiZWN1YXNlIGFuIGV2ZW50IGNvdWxkIHNpZ25hbCBhIGNoYW5nZSBpbiBtb2RlbQorCQkgKiB1c2VmdWwgYmVjYXVzZSBhbiBldmVudCBjb3VsZCBzaWduYWwgYSBjaGFuZ2UgaW4gbW9kZW0KIAkJICogc2lnbmFscyBpdHNlbGYuCiAJCSAqLwogCQltc3RhdCA9IHJlYWRiKGV2ZW50YnVmICsgMik7CkBAIC0xODk3LDcgKzE4OTcsNyBAQAogCQkvKgogCQkgKiBFdmVuIGlmIGhlYWQgaGFzIHdyYXBwZWQgYXJvdW5kIG9ubHkgcmVwb3J0IHRoZSBhbW91bnQgb2YKIAkJICogZGF0YSB0byBiZSBlcXVhbCB0byB0aGUgc2l6ZSAtIHRhaWwuIFJlbWVtYmVyIG1lbWNweSBjYW4ndAotCQkgKiBhdXRvbWF0aWNseSB3cmFwIGFyb3VuZCB0aGUgcmVjZWl2ZSBidWZmZXIuCisJCSAqIGF1dG9tYXRpY2FsbHkgd3JhcCBhcm91bmQgdGhlIHJlY2VpdmUgYnVmZmVyLgogCQkgKi8KIAkJZGF0YVRvUmVhZCA9ICh3cmFwZ2FwIDwgYnl0ZXNBdmFpbGFibGUpID8gd3JhcGdhcAogCQkJCQkJCTogYnl0ZXNBdmFpbGFibGU7CkBAIC0yNTQzLDcgKzI1NDMsNyBAQAogCQkJCQlicmVhazsKIAkJCS8qCiAJCQkgKiBJZiB0aGUgaW5kZXggaW5jcmVtZW50ZWQgYWJvdmUgcmVmZXJzIHRvIGEKLQkJCSAqIGxlZ2l0YW1hdGUgYm9hcmQgdHlwZSBzZXQgaXQgaGVyZS4KKwkJCSAqIGxlZ2l0aW1hdGUgYm9hcmQgdHlwZSBzZXQgaXQgaGVyZS4KIAkJCSAqLwogCQkJaWYgKGluZGV4IDwgRVBDQV9OVU1fVFlQRVMpCiAJCQkJYm9hcmQudHlwZSA9IGxvb3A7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmh3LmggYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmh3LmgKaW5kZXggYzBiYTZjMC4uOGRmMmY0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJody5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kyaHcuaApAQCAtMzM1LDcgKzMzNSw3IEBACiBpbiBmYWN0IGdlbmVyYXRlcyBhIHJlc2V0IHB1bHNlIG9uIHRoZSBib2FyZC4gVGhpcyBwdWxzZSBpcyBndWFyYW50ZWVkIHRvIGxhc3QKIGxlc3MgdGhhbiAxMCBtaWxsaXNlY29uZHMuIFRoZSBhZGRpdGlvbmFsIGRlbGF5IGVuc3VyZXMgdGhlIDE0MDAgaGFzIGhhZCB0aGUKIGNoYW5jZSB0byByZXNwb25kIHN1ZmZpY2llbnRseSB0byB0aGUgZmlyc3QgcmVzZXQuIFdoeSBub3QgYSBsb25nZXIgZGVsYXk/IE11Y2gKLW1vcmUgdGhhbiA1MCBtaWxsaXNlY29uZHMgZ2V0cyB0byBiZSBub3RpY2FibGUsIGJ1dCB0aGUgYm9hcmQgd291bGQgc3RpbGwgd29yay4KK21vcmUgdGhhbiA1MCBtaWxsaXNlY29uZHMgZ2V0cyB0byBiZSBub3RpY2VhYmxlLCBidXQgdGhlIGJvYXJkIHdvdWxkIHN0aWxsIHdvcmsuCiAKIE9uY2UgYWxsIDE2IGJ5dGVzIG9mIHRoZSBQb3dlci1vbiBSZXNldCBNZXNzYWdlIGhhdmUgYmVlbiByZWFkLCB0aGUgYm9vdHN0cmFwCiBmaXJtd2FyZSBpcyByZWFkeSB0byByZWNlaXZlIGxvYWR3YXJlLgpAQCAtMzk5LDcgKzM5OSw3IEBACiAJCS8vIGV4cGFuZGFibGUgcHJvZHVjdHMgbXVzdCByZXBvcnQgYSBNQVAgb2YgYXZhaWxhYmxlIGNoYW5uZWxzLiBTaW5jZSAKIAkJLy8gZWFjaCBVQVJUIHN1cHBvcnRzIGZvdXIgcG9ydHMsIHdlIHJlcHJlc2VudCBlYWNoIFVBUlQgZm91bmQgYnkgYQogCQkvLyBzaW5nbGUgYml0LiBVc2luZyB0d28gYnl0ZXMgdG8gc3VwcGx5IHRoZSBtYXBwaW5nIGluZm9ybWF0aW9uIHdlCi0JCS8vIHJlcG9ydCB0aGUgcHJlc2Vuc2Ugb3IgYWJzZW5zZSBvZiB1cCB0byAxNiBVQVJUUywgb3IgNjQgcG9ydHMgaW4KKwkJLy8gcmVwb3J0IHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHVwIHRvIDE2IFVBUlRTLCBvciA2NCBwb3J0cyBpbgogCQkvLyBzdGVwcyBvZiA0IHBvcnRzLiBGb3IgLUlJRVggcHJvZHVjdHMsIHRoZSBwb3J0cyBhcmUgbnVtYmVyZWQKIAkJLy8gc3RhcnRpbmcgYXQgdGhlIGJveCBjbG9zZXN0IHRvIHRoZSBjb250cm9sbGVyIGluIHRoZSAiY2hhaW4iLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmxpYi5jIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJsaWIuYwppbmRleCAwZDEwYjg5Li4xM2EzY2FiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmxpYi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kybGliLmMKQEAgLTgyMSw3ICs4MjEsNyBAQAogLy8KIC8vIERlc2NyaXB0aW9uOgogLy8gU3RyaXBzIGRhdGEgZnJvbSB0aGUgaW5wdXQgYnVmZmVyIGFuZCB3cml0ZXMgaXQgdG8gcERlc3QuIElmIHRoZXJlIGlzIGEKLS8vIGNvbGxvc2FsIGJsdW5kZXIsIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksIHJldHVybnMgLTEuCisvLyBjb2xvc3NhbCBibHVuZGVyLCAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLCByZXR1cm5zIC0xLgogLy8gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBzdGF0aWMgaW50CkBAIC05MDksNyArOTA5LDcgQEAKIC8vIFJldHVybnM6ICAgIE51bWJlciBvZiBieXRlcyBzdHJpcHBlZCwgb3IgLTEgZm9yIGVycm9yCiAvLwogLy8gRGVzY3JpcHRpb246Ci0vLyBTdHJpcHMgYW55IGRhdGEgZnJvbSB0aGUgaW5wdXQgYnVmZmVyLiBJZiB0aGVyZSBpcyBhIGNvbGxvc2FsIGJsdW5kZXIsCisvLyBTdHJpcHMgYW55IGRhdGEgZnJvbSB0aGUgaW5wdXQgYnVmZmVyLiBJZiB0aGVyZSBpcyBhIGNvbG9zc2FsIGJsdW5kZXIsCiAvLyAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLCByZXR1cm5zIC0xLiBPdGhlcndpc2UsIHJldHVybnMgdGhlCiAvLyBudW1iZXIgb2YgYnl0ZXMgc3RyaXBwZWQuCiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtOTYzLDcgKzk2Myw3IEBACiAvLyBSZXR1cm5zOiAgICBOdW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCBvciAtMSBmb3IgZXJyb3IKIC8vCiAvLyBEZXNjcmlwdGlvbjoKLS8vIElmIHRoZXJlIGlzIGEgY29sbG9zYWwgYmx1bmRlciwgKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwKKy8vIElmIHRoZXJlIGlzIGEgY29sb3NzYWwgYmx1bmRlciwgKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwKIC8vIHJldHVybnMgLTEuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0cmlwcGVkLiBPdGhlcndpc2UsCiAvLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIGluIHRoZSBidWZmZXIuCiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTAwMSw3ICsxMDAxLDcgQEAKIC8vCiAvLyBEZXNjcmlwdGlvbjoKIC8vIFF1ZXVlcyB0aGUgZGF0YSBhdCBwU291cmNlIHRvIGJlIHNlbnQgYXMgZGF0YSBwYWNrZXRzIHRvIHRoZSBib2FyZC4gSWYgdGhlcmUKLS8vIGlzIGEgY29sbG9zYWwgYmx1bmRlciwgKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwgcmV0dXJucyAtMS4KKy8vIGlzIGEgY29sb3NzYWwgYmx1bmRlciwgKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwgcmV0dXJucyAtMS4KIC8vIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIFdoYXQgaWYgdGhlcmUgaXMgbm90IGVub3VnaAogLy8gcm9vbSBmb3IgYWxsIHRoZSBkYXRhPyBJZiBwQ2gtPmNoYW5uZWxPcHRpb25zICYgQ09fTkJMT0NLX1dSSVRFIGlzIHNldCwgdGhlbgogLy8gd2UgdHJhbnNmZXIgYXMgbWFueSBjaGFyYWN0ZXJzIGFzIHdlIGNhbiBub3csIHRoZW4gcmV0dXJuLiBJZiB0aGlzIGJpdCBpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaXAybWFpbi5jIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaXAybWFpbi5jCmluZGV4IGVhN2E4ZmIuLmJhMDc0ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2lwMm1haW4uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pcDJtYWluLmMKQEAgLTE4MjQsNyArMTgyNCw3IEBACiAvLwkJaXAydHJhY2UgKENIQU5OLCBJVFJDX1BVVEMsIDEwLCAxLCBzdHJpcCApOwogCiAJCS8vCi0JCS8vIFdlIG1heSBuZWVkIHRvIHJlc3RhcnQgaTJPdXRwdXQgaWYgaXQgZG9lcyBub3QgZnVsbGZpbGwgdGhpcyByZXF1ZXN0CisJCS8vIFdlIG1heSBuZWVkIHRvIHJlc3RhcnQgaTJPdXRwdXQgaWYgaXQgZG9lcyBub3QgZnVsZmlsbCB0aGlzIHJlcXVlc3QKIAkJLy8KIAkJc3RyaXAgPSBpMk91dHB1dCggcENoLCBwQ2gtPlBidWYsIHBDaC0+UGJ1Zl9zdHVmZik7CiAJCWlmICggc3RyaXAgIT0gcENoLT5QYnVmX3N0dWZmICkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXguYyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4LmMKaW5kZXggMTdhMWJlNS4uY2IyNGM2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeC5jCkBAIC05LDcgKzksNyBAQAogICogICAgICBzdXBwb3J0LiBCdXQgcGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gKHNwZWNpYWxpeC50eHQpCiAgKiAgICAgIGZpcnN0LgogICoKLSAqICAgICAgVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BwZWQgaW4gdGhlIEJpdFdpemFyZCBsaW51eCBkZXZpY2UKKyAqICAgICAgVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BlZCBpbiB0aGUgQml0V2l6YXJkIGxpbnV4IGRldmljZQogICogICAgICBkcml2ZXIgc2VydmljZS4gSWYgeW91IHJlcXVpcmUgYSBsaW51eCBkZXZpY2UgZHJpdmVyIGZvciB5b3VyCiAgKiAgICAgIHByb2R1Y3QsIHBsZWFzZSBjb250YWN0IGRldmljZXNAQml0V2l6YXJkLm5sIGZvciBhIHF1b3RlLgogICoKQEAgLTk3OCw3ICs5NzgsNyBAQAogCXNwaW5fbG9ja19pcnFzYXZlKCZicC0+bG9jaywgZmxhZ3MpOwogCXN4X291dChicCwgQ0QxODZ4X0NBUiwgcG9ydF9Obyhwb3J0KSk7CiAKLQkvKiBUaGUgU3BlY2lhbGl4IGJvYXJkIGRvZW5zJ3QgaW1wbGVtZW50IHRoZSBSVFMgbGluZXMuCisJLyogVGhlIFNwZWNpYWxpeCBib2FyZCBkb2VzJ3QgaW1wbGVtZW50IHRoZSBSVFMgbGluZXMuCiAJICAgVGhleSBhcmUgdXNlZCB0byBzZXQgdGhlIElSUSBsZXZlbC4gRG9uJ3QgdG91Y2ggdGhlbS4gKi8KIAlpZiAoc3hfY3J0c2N0cyh0dHkpKQogCQlwb3J0LT5NU1ZSID0gTVNWUl9EVFIgfCAoc3hfaW4oYnAsIENEMTg2eF9NU1ZSKSAmIE1TVlJfUlRTKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4X2lvOC5oIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXhfaW84LmgKaW5kZXggYzYzMDA1Mi4uMTIxNWQ3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXhfaW84LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXhfaW84LmgKQEAgLTEwLDcgKzEwLDcgQEAKICAqICAgICAgUGxlYXNlIERPIGNvbnRhY3QgaW84LWxpbnV4QHNwZWNpYWxpeC5jby51ayBpZiB5b3UgcmVxdWlyZQogICogICAgICBzdXBwb3J0LgogICoKLSAqICAgICAgVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BwZWQgaW4gdGhlIEJpdFdpemFyZCBsaW51eCBkZXZpY2UKKyAqICAgICAgVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BlZCBpbiB0aGUgQml0V2l6YXJkIGxpbnV4IGRldmljZQogICogICAgICBkcml2ZXIgc2VydmljZS4gSWYgeW91IHJlcXVpcmUgYSBsaW51eCBkZXZpY2UgZHJpdmVyIGZvciB5b3VyCiAgKiAgICAgIHByb2R1Y3QsIHBsZWFzZSBjb250YWN0IGRldmljZXNAQml0V2l6YXJkLm5sIGZvciBhIHF1b3RlLgogICoKQEAgLTc5LDcgKzc5LDcgQEAKIAogI2RlZmluZSBTUEVDSUFMSVhfTUFHSUMJCTB4MDkwNwogCi0jZGVmaW5lIFNYX0NDUl9USU1FT1VUIDEwMDAwICAgLyogQ0NSIHRpbWVvdXQuIFlvdSBtYXkgbmVlZCB0byB3YWl0IHVwdG8KKyNkZWZpbmUgU1hfQ0NSX1RJTUVPVVQgMTAwMDAgICAvKiBDQ1IgdGltZW91dC4gWW91IG1heSBuZWVkIHRvIHdhaXQgdXAgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBpbnRlcm5hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciBpcyBhdmFpbGFibGUgYWdhaW4gYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgZ2l2ZSBpdCBhIGNvbW1hbmQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX2hjZC5jIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfaGNkLmMKaW5kZXggZTIzNDg0OS4uMGYwMmE0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfaGNkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfaGNkLmMKQEAgLTE5NCw3ICsxOTQsNyBAQAogICoKICAqIFNvLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcG9ydHMgaXMgMzEgKCBwb3J0IDAgdG8gcG9ydCAzMCkgPwogICoKLSAqIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGFjdHVhbCB0cmFuc2ZlcmVkIGxlbmd0aCBpbiBieXRlLiBJZiBub3RoaW5nIGhhcworICogVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgYWN0dWFsIHRyYW5zZmVycmVkIGxlbmd0aCBpbiBieXRlLiBJZiBub3RoaW5nIGhhcwogICogYmVlbiBjaGFuZ2VkLCByZXR1cm4gMC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgbnVtYmVyIG9mIHBvcnRzIGlzIGxlc3MgdGhhbiBvcgogICogZXF1YWwgdG8gNiAoVkhDSV9OUE9SVFM9PTcpLCByZXR1cm4gMS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX2NhOTFjeDQyLmMgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX2NhOTFjeDQyLmMKaW5kZXggZDRhNDhjNC4uYTQwMDcyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV9jYTkxY3g0Mi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYwpAQCAtNjIxLDcgKzYyMSw3IEBACiAKIAkvKgogCSAqIExldCdzIGFsbG9jYXRlIHRoZSByZXNvdXJjZSBoZXJlIHJhdGhlciB0aGFuIGZ1cnRoZXIgdXAgdGhlIHN0YWNrIGFzCi0JICogaXQgYXZvaWRzIHB1c2hpbmcgbG9hZHMgb2YgYnVzIGRlcGVuZGFudCBzdHVmZiB1cCB0aGUgc3RhY2sKKwkgKiBpdCBhdm9pZHMgcHVzaGluZyBsb2FkcyBvZiBidXMgZGVwZW5kZW50IHN0dWZmIHVwIHRoZSBzdGFjawogCSAqLwogCXJldHZhbCA9IGNhOTFjeDQyX2FsbG9jX3Jlc291cmNlKGltYWdlLCBzaXplKTsKIAlpZiAocmV0dmFsKSB7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQAogCQlwY2lfYXR0ciA9IGRlc3QtPnByaXZhdGU7CiAJfQogCi0JLyogQ2hlY2sgd2UgY2FuIGRvIGZ1bGxmaWxsIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKi8KKwkvKiBDaGVjayB3ZSBjYW4gZG8gZnVsZmlsbCByZXF1aXJlZCBhdHRyaWJ1dGVzICovCiAJaWYgKCh2bWVfYXR0ci0+YXNwYWNlICYgfihWTUVfQTE2IHwgVk1FX0EyNCB8IFZNRV9BMzIgfCBWTUVfVVNFUjEgfAogCQlWTUVfVVNFUjIpKSAhPSAwKSB7CiAKQEAgLTEwNjksNyArMTA2OSw3IEBACiAJCWdvdG8gZXJyX2N5Y2xlOwogCX0KIAotCS8qIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gZnVsbGZpbGwgc291cmNlIGFuZCBkZXN0aW5hdGlvbiAqLworCS8qIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gZnVsZmlsbCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uICovCiAJaWYgKCEoKChzcmMtPnR5cGUgPT0gVk1FX0RNQV9QQ0kpICYmIChkZXN0LT50eXBlID09IFZNRV9ETUFfVk1FKSkgfHwKIAkJKChzcmMtPnR5cGUgPT0gVk1FX0RNQV9WTUUpICYmIChkZXN0LT50eXBlID09IFZNRV9ETUFfUENJKSkpKSB7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmMgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX3RzaTE0OC5jCmluZGV4IGIwMGE1M2UuLjEwNmFhOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguYwpAQCAtOTI4LDcgKzkyOCw3IEBACiAJc3Bpbl9sb2NrKCZpbWFnZS0+bG9jayk7CiAKIAkvKiBMZXQncyBhbGxvY2F0ZSB0aGUgcmVzb3VyY2UgaGVyZSByYXRoZXIgdGhhbiBmdXJ0aGVyIHVwIHRoZSBzdGFjayBhcwotCSAqIGl0IGF2b2lkcyBwdXNoaW5nIGxvYWRzIG9mIGJ1cyBkZXBlbmRhbnQgc3R1ZmYgdXAgdGhlIHN0YWNrLiBJZiBzaXplCisJICogaXQgYXZvaWRzIHB1c2hpbmcgbG9hZHMgb2YgYnVzIGRlcGVuZGVudCBzdHVmZiB1cCB0aGUgc3RhY2suIElmIHNpemUKIAkgKiBpcyB6ZXJvLCBhbnkgZXhpc3RpbmcgcmVzb3VyY2Ugd2lsbCBiZSBmcmVlZC4KIAkgKi8KIAlyZXR2YWwgPSB0c2kxNDhfYWxsb2NfcmVzb3VyY2UoaW1hZ2UsIHNpemUpOwpAQCAtMTMyMCw3ICsxMzIwLDcgQEAKIAogCS8qCiAJICogV3JpdGVzIGFyZSBwb3N0ZWQuIFdlIG5lZWQgdG8gZG8gYSByZWFkIG9uIHRoZSBWTUUgYnVzIHRvIGZsdXNoIG91dAotCSAqIGFsbCBvZiB0aGUgd3JpdGVzIGJlZm9yZSB3ZSBjaGVjayBmb3IgZXJyb3JzLiBXZSBjYW4ndCBndWFyZW50ZWUKKwkgKiBhbGwgb2YgdGhlIHdyaXRlcyBiZWZvcmUgd2UgY2hlY2sgZm9yIGVycm9ycy4gV2UgY2FuJ3QgZ3VhcmFudGVlCiAJICogdGhhdCByZWFkaW5nIHRoZSBkYXRhIHdlIGhhdmUganVzdCB3cml0dGVuIGlzIHNhZmUuIEl0IGlzIGJlbGlldmVkCiAJICogdGhhdCB0aGVyZSBpc24ndCBhbnkgcmVhZCwgd3JpdGUgcmUtb3JkZXJpbmcsIHNvIHdlIGNhbiByZWFkIGFueQogCSAqIGxvY2F0aW9uIGluIFZNRSBzcGFjZSwgc28gbGV0cyByZWFkIHRoZSBEZXZpY2UgSUQgZnJvbSB0aGUgdHNpMTQ4J3MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmggYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX3RzaTE0OC5oCmluZGV4IDlmOTdmYTguLmEzYWMyZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguaApAQCAtMjEyLDcgKzIxMiw3IEBACiAjZGVmaW5lIFRTSTE0OF9MQ1NSX09GRlNFVF9PVEFUCQkweDFDCiAKIC8qCi0gKiBWTUVidXMgaW50ZXJ1cHQgYWNrCisgKiBWTUVidXMgaW50ZXJydXB0IGFjawogICogb2Zmc2V0ICAyMDAKICAqLwogI2RlZmluZSBUU0kxNDhfTENTUl9WSUFDSzEJMHgyMDQKQEAgLTYxMyw3ICs2MTMsNyBAQAogLyoKICAqICBQQ0ktWCBTdGF0dXMgUmVnaXN0ZXIgKENSRyArJDA1NCkKICAqLwotI2RlZmluZSBUU0kxNDhfUENGU19QQ0lYU1RBVF9SU0NFTSAgICAgKDE8PDI5KQkvKiBSZWNpZXZlZCBTcGxpdCBDb21wIEVycm9yICovCisjZGVmaW5lIFRTSTE0OF9QQ0ZTX1BDSVhTVEFUX1JTQ0VNICAgICAoMTw8MjkpCS8qIFJlY2VpdmVkIFNwbGl0IENvbXAgRXJyb3IgKi8KICNkZWZpbmUgVFNJMTQ4X1BDRlNfUENJWFNUQVRfRE1DUlNfTSAgICg3PDwyNikJLyogbWF4IEN1bXVsYXRpdmUgUmVhZCBTaXplICovCiAjZGVmaW5lIFRTSTE0OF9QQ0ZTX1BDSVhTVEFUX0RNT1NUX00gICAoNzw8MjMpCS8qIG1heCBvdXRzdGFuZGluZyBTcGxpdCBUcmFucwogCQkJCQkJICovCkBAIC05ODIsOCArOTgyLDggQEAKICNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9DTlRTX0lSUTEgICAgICgyPDwyMikJLyogSVJRMSB0byBDbnRyICovCiAjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfQ05UU19JUlEyICAgICAoMzw8MjIpCS8qIElSUTIgdG8gQ250ciAqLwogCi0jZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfTSAgICAgICAoMzw8MjApCS8qIEVkZ2UgaW50ZXJ1cHQgTUFTSyAqLwotI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0VER0lTX0RJUyAgICAgKDE8PDIwKQkvKiBFZGdlIGludGVydXB0IERpc2FibGUgKi8KKyNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9FREdJU19NICAgICAgICgzPDwyMCkJLyogRWRnZSBpbnRlcnJ1cHQgTUFTSyAqLworI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0VER0lTX0RJUyAgICAgKDE8PDIwKQkvKiBFZGdlIGludGVycnVwdCBEaXNhYmxlICovCiAjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfSVJRMSAgICAoMjw8MjApCS8qIElSUTEgdG8gRWRnZSAqLwogI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0VER0lTX0lSUTIgICAgKDM8PDIwKQkvKiBJUlEyIHRvIEVkZ2UgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3ZtZS92bWVfYXBpLnR4dCBiL2RyaXZlcnMvc3RhZ2luZy92bWUvdm1lX2FwaS50eHQKaW5kZXggYTkxMGEwYy4uNDkxMGU5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3ZtZS92bWVfYXBpLnR4dAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL3ZtZV9hcGkudHh0CkBAIC02LDcgKzYsNyBAQAogCiBBcyB3aXRoIG90aGVyIHN1YnN5c3RlbXMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwsIFZNRSBkZXZpY2UgZHJpdmVycyByZWdpc3Rlcgogd2l0aCB0aGUgVk1FIHN1YnN5c3RlbSwgdHlwaWNhbGx5IGNhbGxlZCBmcm9tIHRoZSBkZXZpY2VzIGluaXQgcm91dGluZS4gIFRoaXMgaXMKLWFjaGlldmVkIHZpYSBhIGNhbGwgdG8gdGhlIGZvbGx3b2luZyBmdW5jdGlvbjoKK2FjaGlldmVkIHZpYSBhIGNhbGwgdG8gdGhlIGZvbGxvd2luZyBmdW5jdGlvbjoKIAogCWludCB2bWVfcmVnaXN0ZXJfZHJpdmVyIChzdHJ1Y3Qgdm1lX2RyaXZlciAqZHJpdmVyKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBACiA9PT09PT09PT09PT09PQogCiBNYXN0ZXIgd2luZG93cyBwcm92aWRlIGFjY2VzcyBmcm9tIHRoZSBsb2NhbCBwcm9jZXNzb3Jbc10gb3V0IG9udG8gdGhlIFZNRSBidXMuCi1UaGUgbnVtYmVyIG9mIHdpbmRvd3MgYXZhaWxhYmxlIGFuZCB0aGUgYXZhaWxhYmxlIGFjY2VzcyBtb2RlcyBpcyBkZXBlbmRhbnQgb24KK1RoZSBudW1iZXIgb2Ygd2luZG93cyBhdmFpbGFibGUgYW5kIHRoZSBhdmFpbGFibGUgYWNjZXNzIG1vZGVzIGlzIGRlcGVuZGVudCBvbgogdGhlIHVuZGVybHlpbmcgY2hpcHNldC4gQSB3aW5kb3cgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZSBpdCBjYW4gYmUgdXNlZC4KIAogCkBAIC0xNjMsNyArMTYzLDcgQEAKIAogU2xhdmUgd2luZG93cyBwcm92aWRlIGRldmljZXMgb24gdGhlIFZNRSBidXMgYWNjZXNzIGludG8gbWFwcGVkIHBvcnRpb25zIG9mIHRoZQogbG9jYWwgbWVtb3J5LiBUaGUgbnVtYmVyIG9mIHdpbmRvd3MgYXZhaWxhYmxlIGFuZCB0aGUgYWNjZXNzIG1vZGVzIHRoYXQgY2FuIGJlCi11c2VkIGlzIGRlcGVuZGFudCBvbiB0aGUgdW5kZXJseWluZyBjaGlwc2V0LiBBIHdpbmRvdyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCit1c2VkIGlzIGRlcGVuZGVudCBvbiB0aGUgdW5kZXJseWluZyBjaGlwc2V0LiBBIHdpbmRvdyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCiBpdCBjYW4gYmUgdXNlZC4KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L2NhcmQuYyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvY2FyZC5jCmluZGV4IDk1MWEzYTguLjI3MjFlMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvY2FyZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvY2FyZC5jCkBAIC0xMTg2LDcgKzExODYsNyBAQAogICAgICAgICAgICAgd0R1cmF0aW9uICs9IDE7IC8vIDEgVFUgZm9yIGNoYW5uZWwgc3dpdGNoaW5nCiAKICAgICAgICAgICAgIGlmICgoTE9EV09SRChxd1N0YXJ0VFNGKSA9PSAwKSAmJiAoSElEV09SRChxd1N0YXJ0VFNGKSA9PSAwKSkgewotICAgICAgICAgICAgICAgIC8vIHN0YXJ0IGltZWRpYXRlbHkgYnkgc2V0dGluZyBzdGFydCBUU0YgPT0gY3VycmVudCBUU0YgKyAyIFRVCisgICAgICAgICAgICAgICAgLy8gc3RhcnQgaW1tZWRpYXRlbHkgYnkgc2V0dGluZyBzdGFydCBUU0YgPT0gY3VycmVudCBUU0YgKyAyIFRVCiAgICAgICAgICAgICAgICAgTE9EV09SRChxd1N0YXJ0VFNGKSA9IExPRFdPUkQocXdDdXJyVFNGKSArIDIwNDg7CiAgICAgICAgICAgICAgICAgSElEV09SRChxd1N0YXJ0VFNGKSA9IEhJRFdPUkQocXdDdXJyVFNGKTsKICAgICAgICAgICAgICAgICBpZiAoTE9EV09SRChxd0N1cnJUU0YpID4gTE9EV09SRChxd1N0YXJ0VFNGKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9kZXZpY2VfbWFpbi5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9kZXZpY2VfbWFpbi5jCmluZGV4IGVmYWYxOWIuLmFkMzljODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvZGV2aWNlX21haW4uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L2RldmljZV9tYWluLmMKQEAgLTEzNyw3ICsxMzcsNyBAQAogLyogSVBfYnl0ZV9hbGlnbltdIGlzIHVzZWQgZm9yIElQIGhlYWRlciB1bnNpZ25lZCBsb25nIGJ5dGUgYWxpZ25lZAogICAgMDogaW5kaWNhdGUgdGhlIElQIGhlYWRlciB3b24ndCBiZSB1bnNpZ25lZCBsb25nIGJ5dGUgYWxpZ25lZC4oRGVmYXVsdCkgLgogICAgMTogaW5kaWNhdGUgdGhlIElQIGhlYWRlciB3aWxsIGJlIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkLgotICAgICAgSW4gc29tZSBlbnZpcm9tZW50LCB0aGUgSVAgaGVhZGVyIHNob3VsZCBiZSB1bnNpZ25lZCBsb25nIGJ5dGUgYWxpZ25lZCwKKyAgICAgIEluIHNvbWUgZW52aXJvbm1lbnQsIHRoZSBJUCBoZWFkZXIgc2hvdWxkIGJlIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkLAogICAgICAgb3IgdGhlIHBhY2tldCB3aWxsIGJlIGRyb3BlZCB3aGVuIHdlIHJlY2VpdmUgaXQuIChlZzogSVBWUykKICovCiBERVZJQ0VfUEFSQU0oSVBfYnl0ZV9hbGlnbiwiRW5hYmxlIElQIGhlYWRlciBkd29yZCBhbGlnbmVkIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L3djbWQuYyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd2NtZC5jCmluZGV4IGFiZDY3NDUuLmMzMDE3MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd2NtZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd2NtZC5jCkBAIC01ODcsNyArNTg3LDcgQEAKICAgICAgICAgICAgIGlmICgocE1nbXQtPmVDdXJyTW9kZSA9PSBXTUFDX01PREVfRVNTX1NUQSkgJiYgKHBNZ210LT5lQ3VyclN0YXRlID09IFdNQUNfU1RBVEVfSk9JTlRFRCkpIHsKIAogCQkvLyBDYWxsIG1nciB0byBiZWdpbiB0aGUgZGVhdXRoZW50aWNhdGlvbgotICAgICAgICAgICAgICAgIC8vIHJlYXNvbiA9ICgzKSBiZWFjdXNlIHN0YSBoYXMgbGVmdCBFU1MKKyAgICAgICAgICAgICAgICAvLyByZWFzb24gPSAoMykgYmVjYXVzZSBzdGEgaGFzIGxlZnQgRVNTCiAgICAgICAgICAgICAgICAgaWYgKHBNZ210LT5lQ3VyclN0YXRlPj0gV01BQ19TVEFURV9BVVRIKSB7CiAgICAgICAgICAgICAgICAgICAgIHZNZ3JEZUF1dGhlbkJlZ2luU3RhKCh2b2lkICopcERldmljZSwgcE1nbXQsIHBNZ210LT5hYnlDdXJyQlNTSUQsICgzKSwgJlN0YXR1cyk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93bWdyLmggYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L3dtZ3IuaAppbmRleCAxNDFlODBiLi5lM2FlNTYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L3dtZ3IuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L3dtZ3IuaApAQCAtMjIwLDcgKzIyMCw3IEBACiAqLwogCiAKLS8vIFR4IE1hbmFnbWVudCBQYWNrZXQgZGVzY3JpcHRvcgorLy8gVHggTWFuYWdlbWVudCBQYWNrZXQgZGVzY3JpcHRvcgogdHlwZWRlZiBzdHJ1Y3QgdGFnU1R4TWdtdFBhY2tldCB7CiAKICAgICBQVVdMQU5fODAyMTFIRFIgICAgIHA4MDIxMUhlYWRlcjsKQEAgLTIzMCw3ICsyMzAsNyBAQAogfSBTVHhNZ210UGFja2V0LCAqUFNUeE1nbXRQYWNrZXQ7CiAKIAotLy8gUnggTWFuYWdtZW50IFBhY2tldCBkZXNjcmlwdG9yCisvLyBSeCBNYW5hZ2VtZW50IFBhY2tldCBkZXNjcmlwdG9yCiB0eXBlZGVmIHN0cnVjdCB0YWdTUnhNZ210UGFja2V0IHsKIAogICAgIFBVV0xBTl84MDIxMUhEUiAgICAgcDgwMjExSGVhZGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni9yeHR4LmMgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3J4dHguYwppbmRleCA4ZjE4NTc4Li41MTg1ZDYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3J4dHguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3J4dHguYwpAQCAtMTkzOCw3ICsxOTM4LDcgQEAKICAqICBPdXQ6CiAgKiAgICAgIG5vbmUKICAqCi0gKiBSZXR1cm4gVmFsdWU6IENNRF9TVEFUVVNfUEVORElORyBpZiBNQUMgVHggcmVzb3VyY2UgYXZhbGlhYmxlOyBvdGhlcndpc2UgRkFMU0UKKyAqIFJldHVybiBWYWx1ZTogQ01EX1NUQVRVU19QRU5ESU5HIGlmIE1BQyBUeCByZXNvdXJjZSBhdmFpbGFibGU7IG90aGVyd2lzZSBGQUxTRQogICoKIC0qLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3djbWQuYyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvd2NtZC5jCmluZGV4IGI4M2I2NjAuLjAxOWZiNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvd2NtZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvd2NtZC5jCkBAIC00MjEsNyArNDIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcE1nbXQtPmVTY2FuU3RhdGUgPSBXTUFDX0lTX1NDQU5OSU5HOwogICAgICAgICAgICAgICAgICAgICBwRGV2aWNlLT5ieVNjYW5CQlR5cGUgPSBwRGV2aWNlLT5ieUJCVHlwZTsgIC8vbHVjYXMKICAgICAgICAgICAgICAgICAgICAgcERldmljZS0+YlN0b3BEYXRhUGt0ID0gVFJVRTsKLSAgICAgICAgICAgICAgICAgICAgLy8gVHVybiBvZmYgUkNSX0JTU0lEIGZpbHRlciBldmVyeXRpbWUKKyAgICAgICAgICAgICAgICAgICAgLy8gVHVybiBvZmYgUkNSX0JTU0lEIGZpbHRlciBldmVyeSB0aW1lCiAgICAgICAgICAgICAgICAgICAgIE1BQ3ZSZWdCaXRzT2ZmKHBEZXZpY2UsIE1BQ19SRUdfUkNSLCBSQ1JfQlNTSUQpOwogICAgICAgICAgICAgICAgICAgICBwRGV2aWNlLT5ieVJ4TW9kZSAmPSB+UkNSX0JTU0lEOwogCkBAIC02MDQsNyArNjA0LDcgQEAKICAgICAgICAgICAgIC8vIGlmIEluZnJhIG1vZGUKICAgICAgICAgICAgIGlmICgocE1nbXQtPmVDdXJyTW9kZSA9PSBXTUFDX01PREVfRVNTX1NUQSkgJiYgKHBNZ210LT5lQ3VyclN0YXRlID09IFdNQUNfU1RBVEVfSk9JTlRFRCkpIHsKICAgICAgICAgICAgICAgICAvLyBDYWxsIG1nciB0byBiZWdpbiB0aGUgZGVhdXRoZW50aWNhdGlvbgotICAgICAgICAgICAgICAgIC8vIHJlYXNvbiA9ICgzKSBiZWFjdXNlIHN0YSBoYXMgbGVmdCBFU1MKKyAgICAgICAgICAgICAgICAvLyByZWFzb24gPSAoMykgYmVjYXVzZSBzdGEgaGFzIGxlZnQgRVNTCiAJICAgICAgaWYgKHBNZ210LT5lQ3VyclN0YXRlID49IFdNQUNfU1RBVEVfQVVUSCkgewogCQl2TWdyRGVBdXRoZW5CZWdpblN0YSgodm9pZCAqKXBEZXZpY2UsCiAJCQkJICAgICBwTWdtdCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvd21nci5oIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93bWdyLmgKaW5kZXggNTk0ZjNhOC4uMTNkZmIzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93bWdyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93bWdyLmgKQEAgLTIxOCw3ICsyMTgsNyBAQAogCiAKIAotLy8gVHggTWFuYWdtZW50IFBhY2tldCBkZXNjcmlwdG9yCisvLyBUeCBNYW5hZ2VtZW50IFBhY2tldCBkZXNjcmlwdG9yCiB0eXBlZGVmIHN0cnVjdCB0YWdTVHhNZ210UGFja2V0IHsKIAogICAgIFBVV0xBTl84MDIxMUhEUiAgICAgcDgwMjExSGVhZGVyOwpAQCAtMjI4LDcgKzIyOCw3IEBACiB9IFNUeE1nbXRQYWNrZXQsICpQU1R4TWdtdFBhY2tldDsKIAogCi0vLyBSeCBNYW5hZ21lbnQgUGFja2V0IGRlc2NyaXB0b3IKKy8vIFJ4IE1hbmFnZW1lbnQgUGFja2V0IGRlc2NyaXB0b3IKIHR5cGVkZWYgc3RydWN0IHRhZ1NSeE1nbXRQYWNrZXQgewogCiAgICAgUFVXTEFOXzgwMjExSERSICAgICBwODAyMTFIZWFkZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2RtYS5jIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNkbWEuYwppbmRleCAxNmI4ZWMxLi5jNDYxZDRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2RtYS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzZG1hLmMKQEAgLTEwODIsNyArMTA4Miw3IEBACiAJLyoKIAkgKiBpZiB0aGUgZGF0YSByZWNlaXZlZCBleGNlZWRzIHRoZSBzaXplIG9mIHRoZSBETUEgYnVmZmVyLAogCSAqIGNsaXAgdGhlIGRhdGEgdG8gdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4gIHRoaXMgY2FuIGxlYWQKLQkgKiB0byBsb29zaW5nIHNvbWUgZGF0YSwgYnV0IGlzIG5vdCBkaWZmZXJlbnQgdGhhbiBkb2luZworCSAqIHRvIGxvc2luZyBzb21lIGRhdGEsIGJ1dCBpcyBub3QgZGlmZmVyZW50IHRoYW4gZG9pbmcKIAkgKiBub24tcGFja2V0IHJlYWRzIG9uIHRoZSBvdGhlciBlbmRwb2ludHMuCiAJICovCiAJaWYgKGRzaXplID4gZG1hX3AtPnNpemUgLSBkbWFfcC0+b2Zmc2V0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNsZXAycGVwLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xlcDJwZXAuYwppbmRleCA2MGI2ZjM1Li43NjgyMWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xlcDJwZXAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xlcDJwZXAuYwpAQCAtMTI2LDcgKzEyNiw3IEBACiAJY3lfYXNfcGh5c2ljYWxfZW5kcG9pbnRfc3RhdGUgZGVzaXJlZDsKIAogCS8qCi0JICogbm90ZSwgdGhlcmUgaXMgbm8gZXJyb3IgY2hlY2tpbmcgaGVyZSBiZWN1YXNlCisJICogbm90ZSwgdGhlcmUgaXMgbm8gZXJyb3IgY2hlY2tpbmcgaGVyZSBiZWNhdXNlCiAJICogSVNPIGVycm9yIGNoZWNraW5nIGhhcHBlbnMgd2hlbiB0aGUgQVBJIGlzIGNhbGxlZC4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNsb3dsZXZlbC5jIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNsb3dsZXZlbC5jCmluZGV4IGQ0M2RkODUuLjk2YTg2ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbG93bGV2ZWwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xvd2xldmVsLmMKQEAgLTQzMiw3ICs0MzIsNyBAQAogKiBpcyByZWNlaXZlZC4gIFdoZW4gYSBjb21wbGV0ZSByZXF1ZXN0IGlzIHJlY2VpdmVkLCB0aGUgY2FsbGJhY2sKICogYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3RzIG9uIHRoYXQgY29udGV4dCBpcyBjYWxsZWQuICBXaGVuIGEgY29tcGxldGUKICogcmVzcG9uc2UgaXMgcmVjZXZpZWQsIHRoZSBjYWxsYmFjayBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QgdGhhdAotKiBnZW5lcmF0ZWQgdGhlIHJlcG9uc2UgaXMgY2FsbGVkLgorKiBnZW5lcmF0ZWQgdGhlIHJlc3BvbnNlIGlzIGNhbGxlZC4KICovCiB2b2lkCiBjeV9hc19tYWlsX2JveF9pbnRlcnJ1cHRfaGFuZGxlcihjeV9hc19kZXZpY2UgKmRldl9wKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNtaXNjLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc21pc2MuYwppbmRleCA3ODUyNDEwLi40NTY0ZmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc21pc2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc21pc2MuYwpAQCAtNDI4LDcgKzQyOCw3IEBACiAJCQkJaWYgKHYgJiBDWV9BU19NRU1fUDBfVk1fU0VUX0NGR01PREUpCiAJCQkJCWN5X2FzX2hhbF9wcmludF9tZXNzYWdlKAogCQkJCQkiaW5pdGlhbGl6YXRpb24gbWVzc2FnZSAiCi0JCQkJCSJyZWNpZXZlZCwgYnV0IGNvbmZpZyBiaXQgIgorCQkJCQkicmVjZWl2ZWQsIGJ1dCBjb25maWcgYml0ICIKIAkJCQkJInN0aWxsIHNldFxuIik7CiAKIAkJCQl2ID0gY3lfYXNfaGFsX3JlYWRfcmVnaXN0ZXIoZGV2X3AtPnRhZywKQEAgLTQzNiw3ICs0MzYsNyBAQAogCQkJCWlmICgodiAmIENZX0FTX01FTV9SU1RfUlNUQ01QVCkgPT0gMCkKIAkJCQkJY3lfYXNfaGFsX3ByaW50X21lc3NhZ2UoCiAJCQkJCSJpbml0aWFsaXphdGlvbiBtZXNzYWdlICIKLQkJCQkJInJlY2lldmVkLCBidXQgcmVzZXQgY29tcGxldGUgIgorCQkJCQkicmVjZWl2ZWQsIGJ1dCByZXNldCBjb21wbGV0ZSAiCiAJCQkJCSJiaXQgc3RpbGwgbm90IHNldFxuIik7CiAJCQl9CiAJCQlicmVhazsKQEAgLTIzODEsNyArMjM4MSw3IEBACiAJLyoKIAkgKiByZWxlYXNlIHRoZSB3ZXN0IGJyaWRnZSBtaWNyby1fY29udHJvbGxlciBmcm9tIHJlc2V0LAogCSAqIHNvIHRoYXQgZmlybXdhcmUgaW5pdGlhbGl6YXRpb24gY2FuIGNvbXBsZXRlLiB0aGUgYXR0ZW1wdAotCSAqIHRvIHJlbGVhc2UgYW50aW9jaCByZXNldCBpcyBtYWRlIHVwdG8gOCB0aW1lcy4KKwkgKiB0byByZWxlYXNlIGFudGlvY2ggcmVzZXQgaXMgbWFkZSB1cCB0byA4IHRpbWVzLgogCSAqLwogCXYgPSAweDAzOwogCWNvdW50ID0gMHgwODsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbXRwLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc210cC5jCmluZGV4IDM2ODk4NDYuLjg1OTgzNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbXRwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNtdHAuYwpAQCAtMzQ2LDcgKzM0Niw3IEBACiAKIAkJZGV2X3AtPm10cF9ldmVudF9jYiA9IGV2ZW50X2NfYjsKIAkJLyoKLQkJKiB3ZSByZWdpc3RlciBoZXJlIGJlY3Vhc2UgdGhlIHN0YXJ0IHJlcXVlc3QgbWF5IGNhdXNlCisJCSogd2UgcmVnaXN0ZXIgaGVyZSBiZWNhdXNlIHRoZSBzdGFydCByZXF1ZXN0IG1heSBjYXVzZQogCQkqIGV2ZW50cyB0byBvY2N1ciBiZWZvcmUgdGhlIHJlc3BvbnNlIHRvIHRoZSBzdGFydCByZXF1ZXN0LgogCQkqLwogCQljeV9hc19sbF9yZWdpc3Rlcl9yZXF1ZXN0X2NhbGxiYWNrKGRldl9wLApAQCAtNDI0LDcgKzQyNCw3IEBACiAJCWdvdG8gZGVzdHJveTsKIAogCS8qCi0JKiB3ZSBzdWNlc3NmdWxseSBzaHV0ZG93biB0aGUgc3RhY2ssIHNvIGRlY3JlbWVudAorCSogd2Ugc3VjY2Vzc2Z1bGx5IHNodXRkb3duIHRoZSBzdGFjaywgc28gZGVjcmVtZW50CiAJKiB0byBtYWtlIHRoZSBjb3VudCB6ZXJvLgogCSovCiAJZGV2X3AtPm10cF9jb3VudC0tOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNzdG9yYWdlLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3N0b3JhZ2UuYwppbmRleCAyNDUxNDA0Li43YWJkNmEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3N0b3JhZ2UuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3N0b3JhZ2UuYwpAQCAtMTc3Myw3ICsxNzczLDcgQEAKIAlpZiAodW5pdCA+IDI1NSkKIAkJcmV0dXJuIENZX0FTX0VSUk9SX05PX1NVQ0hfVU5JVDsKIAotCS8qIFdlIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gc3VjZXNzIGlmIHRoZSBudW1iZXIgb2YKKwkvKiBXZSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIHN1Y2Nlc3MgaWYgdGhlIG51bWJlciBvZgogCSogYmxvY2tzIGlzIHplcm8KIAkqLwogCWlmIChudW1fYmxvY2tzID09IDApIHsKQEAgLTE5NjksNyArMTk2OSw3IEBACiAJaWYgKGN5X2FzX2RldmljZV9pc191c2JfYXN5bmNfcGVuZGluZyhkZXZfcCwgNikpCiAJCXJldHVybiBDWV9BU19FUlJPUl9BU1lOQ19QRU5ESU5HOwogCi0JLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNlc3MgaWYgdGhlIG51bWJlciBvZgorCS8qIFdlIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gc3VjY2VzcyBpZiB0aGUgbnVtYmVyIG9mCiAJKiBibG9ja3MgaXMgemVybwogCSovCiAJaWYgKG51bV9ibG9ja3MgPT0gMCkKQEAgLTMyODUsNyArMzI4NSw3IEBACiAJaWYgKGNhbGxiYWNrID09IDApCiAJCXJldHVybiBDWV9BU19FUlJPUl9OVUxMX0NBTExCQUNLOwogCi0JLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNlc3MgaWYgdGhlIG51bWJlciBvZgorCS8qIFdlIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gc3VjY2VzcyBpZiB0aGUgbnVtYmVyIG9mCiAJICogYmxvY2tzIGlzIHplcm8KIAkgKi8KIAlpZiAoKChtaXNjX2J1ZiZDWV9TRElPX0JMT0NLTU9ERSkgIT0gMCkgJiYgKGFyZ3VtZW50ID09IDApKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3VzYi5jIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXN1c2IuYwppbmRleCA5MmVhNDI1Li4xYjU1ZTYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3VzYi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzdXNiLmMKQEAgLTczOSw3ICs3MzksNyBAQAogCQljeV9hc191c2JfcmVzZXRfZV9wMF9zdGF0ZShkZXZfcCk7CiAKIAkJLyoKLQkJKiB3ZSByZWdpc3RlciBoZXJlIGJlY3Vhc2UgdGhlIHN0YXJ0IHJlcXVlc3QgbWF5IGNhdXNlCisJCSogd2UgcmVnaXN0ZXIgaGVyZSBiZWNhdXNlIHRoZSBzdGFydCByZXF1ZXN0IG1heSBjYXVzZQogCQkqIGV2ZW50cyB0byBvY2N1ciBiZWZvcmUgdGhlIHJlc3BvbnNlIHRvIHRoZSBzdGFydCByZXF1ZXN0LgogCQkqLwogCQljeV9hc19sbF9yZWdpc3Rlcl9yZXF1ZXN0X2NhbGxiYWNrKGRldl9wLApAQCAtODY3LDcgKzg2Nyw3IEBACiAJCWdvdG8gZGVzdHJveTsKIAogCS8qCi0JICogd2Ugc3VjZXNzZnVsbHkgc2h1dGRvd24gdGhlIHN0YWNrLCBzbworCSAqIHdlIHN1Y2Nlc3NmdWxseSBzaHV0ZG93biB0aGUgc3RhY2ssIHNvCiAJICogZGVjcmVtZW50IHRvIG1ha2UgdGhlIGNvdW50IHplcm8uCiAJICovCiAJY3lfYXNfdXNiX2NsZWFudXAoZGV2X3ApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9tYWNoLW9tYXAyL2N5YXNoYWxvbWFwX2tlcm5lbC5jIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9tYWNoLW9tYXAyL2N5YXNoYWxvbWFwX2tlcm5lbC5jCmluZGV4IDIxY2RiMDYuLjNiY2VkY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jeWFzaGFsb21hcF9rZXJuZWwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL21hY2gtb21hcDIvY3lhc2hhbG9tYXBfa2VybmVsLmMKQEAgLTg3LDcgKzg3LDcgQEAKIAogCiAvKgotICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGhhbmRsZSBzdG9yYWdlIGVuZHBvaW50IHRyYW5zZmVycyB1cHRvIDQgS0IKKyAqIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB3ZSBoYW5kbGUgc3RvcmFnZSBlbmRwb2ludCB0cmFuc2ZlcnMgdXAgdG8gNCBLQgogICogd2l0aGluIHRoZSBIQUwgaXRzZWxmLgogICovCiAgI2RlZmluZSBDWUFTU1RPUkFHRV9XUklURV9FUF9OVU0JKDQpCkBAIC0xMDgsMTIgKzEwOCwxMiBAQAogCQkJCSgoZXApID09IDYpIHx8ICgoZXApID09IDgpKQogCiAvKgotICogcGVyc2lzdGFudCwgc3RvcmVzIGN1cnJlbnQgR1BNQyBpbnRlcmZhY2UgY2ZnIG1vZGUKKyAqIHBlcnNpc3RlbnQsIHN0b3JlcyBjdXJyZW50IEdQTUMgaW50ZXJmYWNlIGNmZyBtb2RlCiAgKi8KIHN0YXRpYyB1aW50OF90IHBuYW5kXzE2Yml0OwogCiAvKgotICoga2VlcCBwcm9jZXNzaW5nIG5ldyBXQiBEUlEgaW4gSVNSIHVudGlsbCBhbGwgaGFuZGxlZCAocGVyZm9ybWFuY2UgZmVhdHVyZSkKKyAqIGtlZXAgcHJvY2Vzc2luZyBuZXcgV0IgRFJRIGluIElTUiB1bnRpbCBhbGwgaGFuZGxlZCAocGVyZm9ybWFuY2UgZmVhdHVyZSkKICAqLwogI2RlZmluZSBQUk9DRVNTX01VTFRJUExFX0RSUV9JTl9JU1IgKDEpCiAKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCSAqIGRtYV94ZmVyX3N6IC0gc2l6ZSBvZiB0aGUgbmV4dCBkbWEgeGZlciBvbiBQIHBvcnQKIAkgKiBzZWdfeGZlcl9jbnQgLSAgY291bnRzIHhmZXJlZCBieXRlcyBmb3IgaW4gY3VycmVudCBzZ19saXN0CiAJICoJCW1lbW9yeSBzZWdtZW50Ci0JICogcmVxX3hmZXJfY250IC0gdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVyZWQgc28gZmFyIGluCisJICogcmVxX3hmZXJfY250IC0gdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkIHNvIGZhciBpbgogCSAqCQljdXJyZW50IHJlcXVlc3QKIAkgKiByZXFfbGVuZ3RoIC0gdG90YWwgcmVxdWVzdCBsZW5ndGgKIAkgKi8KQEAgLTIxNjAsNyArMjE2MCw3IEBACiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBjcmVhdGUgYSBzbGVlcCBjaGFubmVsLgogICogVGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyB0aGUgc2xlZXAgY2hhbm5lbCBvYmplY3QKLSAqIHNsZWVwIGNoYW5uZWwgKHdoaWNoIGlzIExpbnV4ICJ3YWl0X3F1ZXVlX2hlYWRfdCB3cSIgZm9yIHRoaXMgcGF0aWN1bGFyIEhBTCkKKyAqIHNsZWVwIGNoYW5uZWwgKHdoaWNoIGlzIExpbnV4ICJ3YWl0X3F1ZXVlX2hlYWRfdCB3cSIgZm9yIHRoaXMgcGFydGljdWxhciBIQUwpCiAgKiBwYXNzZWQgYXMgYSBwb2ludGVyLCBhbmQgYWxscG9jYXRlZCBieSB0aGUgY2FsbGVyCiAgKiAodHlwaWNhbGx5IGFzIGEgbG9jYWwgdmFyIG9uIHRoZSBzdGFjaykgIkNyZWF0ZSIgd29yZCBzaG91bGQgcmVhZCBhcwogICogIlNsZWVwT24iLCB0aGlzIGZ1bmMgZG9lc24ndCBhY3R1YWxseSBjcmVhdGUgYW55dGhpbmcKQEAgLTIzNjQsNyArMjM2NCw3IEBACiAJICovCiAJY3lfYXNfaGFsX2dwbWNfZW5hYmxlXzE2Yml0X2J1cyhjeV90cnVlKTsKICNlbHNlCi0gICAvKiBBc3RvcmlhIGFuZCBHUE1DIGFyZSBhbHJlYWR5IGluIDggYml0IG1vZGUsIGpzdXQgaW5pdGlhbGl6ZSBQTkFORF9DRkcgKi8KKyAgIC8qIEFzdG9yaWEgYW5kIEdQTUMgYXJlIGFscmVhZHkgaW4gOCBiaXQgbW9kZSwganVzdCBpbml0aWFsaXplIFBOQU5EX0NGRyAqLwogCWFzdF9wX25hbmRfY2FzZGlfd3JpdGUoQ1lfQVNfTUVNX1BOQU5EX0NGRywgMHgwMDAwKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL3BsYXQtb21hcC9pbmNsdWRlL21hY2gvd2VzdGJyaWRnZS93ZXN0YnJpZGdlLW9tYXAzLXBuYW5kLWhhbC9jeWFzaGFsb21hcF9rZXJuZWwuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNoYWxvbWFwX2tlcm5lbC5oCmluZGV4IDgwZGQ1MzAuLjY0MjZlYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNoYWxvbWFwX2tlcm5lbC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNoYWxvbWFwX2tlcm5lbC5oCkBAIC0yMCw3ICsyMCw3IEBACiAqLwogCiAvKgotICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWZpbnRpb24gb2YgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmluaXRpb24gb2YgdGhlIGhhcmR3YXJlIGFic3RyYWN0aW9uCiAgKiBsYXllciBvbiBPTUFQMzQzMCB0YWxraW5nIHRvIHRoZSBXZXN0IEJyaWRnZSBBc3RvcmlhIGRldmljZQogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNtZW1tYXAuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNtZW1tYXAuaAppbmRleCAzZWVlMTkyLi40NmYwNmVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL3BsYXQtb21hcC9pbmNsdWRlL21hY2gvd2VzdGJyaWRnZS93ZXN0YnJpZGdlLW9tYXAzLXBuYW5kLWhhbC9jeWFzbWVtbWFwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc21lbW1hcC5oCkBAIC01MSw3ICs1MSw3IEBACiAgKiAJCQkJCQkJR1BNQ19BRERSCiAgKgkJCQkJCQlbQTg6QTFdLT51cERbNzowXQogICogSU5UIwktR1BNQ19uV1BfR1BJT182MgotICogREFDSwktTi9DCQkJCSBub3QgY29uZWN0ZWQKKyAqIERBQ0sJLU4vQwkJCQkgbm90IGNvbm5lY3RlZAogICogV0FLRVVQLUdQSU9fMTY3CiAgKiBSRVNFVC1HUElPXzEyNgogICogUi9CCS1HUE1DX1dBSVQyX0dQSU9fNjQKQEAgLTEwOCw3ICsxMDgsNyBAQAogCSAqCQkJCQl3aWxsIGJlIG1vbml0b3JlZAogCSAqIFBGX0VOX0VOR0lORSAtIDEtIEVOQUJMRVMgRU5HSU5FLCBidXQgaXQgbmVlZHMgdG8gYmUgc3RhcnRlZCBhZnRlcgogCSAqCQkJCQl0aGF0IEMgY3RybCByZWcgYml0IDAKLQkgKiBQRl9GSUZPX1RIUkVTSE9MRCAtIEZJRk8gdGhyZXNoaG9sZCBpbiBudW1iZXIgb2YgQlVTKDggb3IgMTYpIHdvcmRzCisJICogUEZfRklGT19USFJFU0hPTEQgLSBGSUZPIHRocmVzaG9sZCBpbiBudW1iZXIgb2YgQlVTKDggb3IgMTYpIHdvcmRzCiAJICogUEZfV0VJR0hURURfUFJJTyAgLSBOVU0gb2YgY3ljbGVzIGdyYW50ZWQgdG8gUEZFIGlmIFJORF9ST0JJTgogCSAqCQkJCQlwcmlvcml0aXphdGlvbiBpcyBlbmFibGVkCiAJICogUEZfUk9VTkRfUk9CSU4gIC0gaWYgZW5hYmxlZCwgZ2l2ZXMgcHJpb3JpdHkgdG8gb3RoZXIgQ1MsIGJ1dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9ibG9jay9jeWFzYmxrZGV2X3F1ZXVlLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2Jsb2NrL2N5YXNibGtkZXZfcXVldWUuYwppbmRleCAwYmJiOGEzLi5kMTk5NmEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2Jsb2NrL2N5YXNibGtkZXZfcXVldWUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2Jsb2NrL2N5YXNibGtkZXZfcXVldWUuYwpAQCAtMjIyLDcgKzIyMiw3IEBACiAJCQljb250aW51ZTsKIAkJfQogCi0JCS8qIG5ldyByZXEgcmVjaWV2ZWQsIGlzc3VlIGl0IHRvIHRoZSBkcml2ZXIgICovCisJCS8qIG5ldyByZXEgcmVjZWl2ZWQsIGlzc3VlIGl0IHRvIHRoZSBkcml2ZXIgICovCiAJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CiAKIAkJI2lmbmRlZiBXRVNUQlJJREdFX05ERUJVRwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RldmljZS5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RldmljZS5oCmluZGV4IDBjMDcyNmI2Li42NDUyYTkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZGV2aWNlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RldmljZS5oCkBAIC0xMTksNyArMTE5LDcgQEAKICNkZWZpbmUgQ1lfQVNfUkVRVUVTVF9MSVNUX1NUQVRFX1FVRVVFRCAoMHgwMCkKIC8qIFRoZSByZXF1ZXN0IGlzIHNlbnQsIHdhaXRpbmcgZm9yIHJlc3BvbnNlICovCiAjZGVmaW5lIENZX0FTX1JFUVVFU1RfTElTVF9TVEFURV9XQUlUSU5HICgweDAxKQotLyogVGhlIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLCBwcm9jZXNzaW5nIHJlcG9uc2UgKi8KKy8qIFRoZSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCwgcHJvY2Vzc2luZyByZXNwb25zZSAqLwogI2RlZmluZSBDWV9BU19SRVFVRVNUX0xJU1RfU1RBVEVfUkVDRUlWRUQgKDB4MDIpCiAvKiBUaGUgcmVxdWVzdC9yZXNwb25zZSBpcyBiZWluZyBjYW5jZWxlZCAqLwogI2RlZmluZSBDWV9BU19SRVFVRVNUX0xJU1RfU1RBVEVfQ0FOQ0VMSU5HICgweDAzKQpAQCAtNTE3LDcgKzUxNyw3IEBACiAJY3lfYXNfbGxfcmVxdWVzdF9saXN0X25vZGUgKnJlcXVlc3RfcXVldWVfcDsKIAkvKiBUaGUgbGlzdCBub2RlIGluIHRoZSByZXF1ZXN0IHF1ZXVlICovCiAJY3lfYXNfbGxfcmVxdWVzdF9saXN0X25vZGUgKmxhc3Rfbm9kZV9wOwotCS8qIEluZGV4IHVwdG8gd2hpY2ggZGF0YSBpcyBzdG9yZWQuICovCisJLyogSW5kZXggdXAgdG8gd2hpY2ggZGF0YSBpcyBzdG9yZWQuICovCiAJdWludDE2X3QgcXVldWVfaW5kZXg7CiAJLyogSW5kZXggdG8gdGhlIG5leHQgcmVxdWVzdCBpbiB0aGUgcXVldWUuICovCiAJdWludDE2X3QgcnF0X2luZGV4OwpAQCAtNzY4LDcgKzc2OCw3IEBACiAJdWludDMyX3QgbXRwX2NvdW50OwogCS8qIFRoZSBNVFAgZXZlbnQgY2FsbGJhY2sgc3VwcGxpZWQgYnkgdGhlIGNsaWVudCAqLwogCWN5X2FzX210cF9ldmVudF9jYWxsYmFjayBtdHBfZXZlbnRfY2I7Ci0JLyogVGhlIGN1cnJlbnQgYmxvY2sgdGFibGUgdG8gYmUgdHJhbnNmZXJlZCAqLworCS8qIFRoZSBjdXJyZW50IGJsb2NrIHRhYmxlIHRvIGJlIHRyYW5zZmVycmVkICovCiAJY3lfYXNfbXRwX2Jsb2NrX3RhYmxlICp0cF9ibGtfdGJsOwogCiAJY3lfYXNfY19iX3F1ZXVlICpmdW5jX2Nic19tdHA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZG1hLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZG1hLmgKaW5kZXggOGRhYjVlOS4uMTZkYzlmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RtYS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkbWEuaApAQCAtMTA4LDcgKzEwOCw3IEBACiAgICBjb21wbGV0ZXMgYSByZXF1ZXN0ZWQgRE1BIG9wZXJhdGlvbi4KIAogICAgUmV0dXJucwotICAgQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtb2R1bGUgaW5pdGlhbGl6ZWQgc3VjZXNzZnVsbHkKKyAgIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbW9kdWxlIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseQogICAgQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCBkdXJpbmcKIAkJaW5pdGlhbGl6YXRpb24KICAgIENZX0FTX0VSUk9SX0FMUkVBRFlfUlVOTklORyAtIHRoZSBETUEgbW9kdWxlIHdhcyBhbHJlYWR5IHJ1bm5pbmcKQEAgLTEzMSw3ICsxMzEsNyBAQAogICAgdGhlbiBmcmVlaW5nIHRoZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRE1BIGVuZHBvaW50LgogCiAgICBSZXR1cm5zCi0gICBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1vZHVsZSBzaHV0ZG93biBzdWNlc3NmdWxseQorICAgQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtb2R1bGUgc2h1dGRvd24gc3VjY2Vzc2Z1bGx5CiAgICBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBETUEgbW9kdWxlIHdhcyBub3QgcnVubmluZwogCiAgICBTZWUgQWxzbwpAQCAtMTYxLDcgKzE2MSw3IEBACiAKICAgIFJldHVybnMKICAgIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgdHJhZmZpYyBvbiB0aGUgZW5kcG9pbnQgaXMgY2FuY2VsZWQKLQlzdWNlc3NmdWxseQorCXN1Y2Nlc3NmdWxseQogCiAgICBTZWUgQWxzbwogKi8KQEAgLTI2Niw3ICsyNjYsNyBAQAogICAgd2lsbCBoYXZlIHRvIG1haW50YWluIGEgbGlzdCBvZiBzbGVlcCBjaGFubmVscyB0byB3YWtlLgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgcXVldWUgaGFzIGRyYWluZWQgc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBxdWV1ZSBoYXMgZHJhaW5lZCBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9FTkRQT0lOVCAtIHRoZSBlbmRwb2ludCBnaXZlbiBpcyBub3QgdmFsaWQKICAgICogQ1lfQVNfRVJST1JfTkVTVEVEX1NMRUVQIC0gQ3lBc0RtYVF1ZXVlUmVxdWVzdCgpIHdhcyByZXF1ZXN0ZWQKICAgICoJb24gYW4gZW5kcG9pbnQgd2hlcmUgQ3lBc0RtYVF1ZXVlUmVxdWVzdCB3YXMgYWxyZWFkeSBjYWxsZWQKQEAgLTI5NSw3ICsyOTUsNyBAQAogICAgQ3lBc0hhbERtYVNldHVwUmVhZCgpIGZ1bmN0b2lucy4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHZhbHVlIHdhcyBzZXQgc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSB2YWx1ZSB3YXMgc2V0IHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1NJWkUgLSB0aGUgc2l6ZSB2YWx1ZSB3YXMgbm90IHZhbGlkCiAqLwogZXh0ZXJuIGN5X2FzX3JldHVybl9zdGF0dXNfdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2Vyci5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2Vyci5oCmluZGV4IGY3OGQ2MDIuLjJjZDBhZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNlcnIuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZXJyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICovCiAKIC8qIFN1bW1hcnkKLSAgIFRoZSBmdW5jdGlvbiBjb21wbGV0ZWQgc3VjZXNzZnVsbHkKKyAgIFRoZSBmdW5jdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CiAqLwogI2RlZmluZSBDWV9BU19FUlJPUl9TVUNDRVNTCSAoMCkKIApAQCAtNzk2LDcgKzc5Niw3IEBACiAgICBEZXNjcmlwdGlvbgogICAgVGhpcyBlcnJvciBpcyByZXR1cm5lZCB3aGVuIGFuIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQgdGhhdCBjYW5ub3QgYmUKICAgIGNvbXBsZXRlZCB3aGlsZSB0aGUgVVNCIHN0YWNrIGlzIGNvbm5lY3RlZCB0byBhIFVTQiBob3N0LiAgSW4gb3JkZXIKLSAgIHRvIHN1Y2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSBkZXNpcmVkIG9wZXJhdGlvbiwgQ3lBc1VzYkRpc2Nvbm5lY3QoKQorICAgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSBkZXNpcmVkIG9wZXJhdGlvbiwgQ3lBc1VzYkRpc2Nvbm5lY3QoKQogICAgbXVzdCBiZSBjYWxsZWQgdG8gZGlzY29ubmVjdCBmcm9tIHRoZSBob3N0LgogKi8KICNkZWZpbmUgQ1lfQVNfRVJST1JfVVNCX0NPTk5FQ1RFRCAoNTMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaGFsZG9jLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaGFsZG9jLmgKaW5kZXggMjgxMzZhZC4uNWJjYmU5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2hhbGRvYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNoYWxkb2MuaApAQCAtNTk3LDcgKzU5Nyw3IEBACiAgICBDeUFzSGFsU2xlZXBDaGFubmVsLgogCiAgICBSZXR1cm5zCi0gICBDeVRydWUgaXMgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNlc3NmdWwsIGFuZCBDeUZhbHNlIG90aGVyd2lzZQorICAgQ3lUcnVlIGlzIHRoZSBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYW5kIEN5RmFsc2Ugb3RoZXJ3aXNlCiAKICAgIFNlZSBBbHNvCiAgICAqIEN5QXNIYWxTbGVlcENoYW5uZWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNpbnRyLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaW50ci5oCmluZGV4IDNkNzA2M2UuLjYwYTZmZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNpbnRyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2ludHIuaApAQCAtNjksNyArNjksNyBAQAogCiAgICBSZXR1cm5zCiAgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgaW50ZXJydXB0IG1vZHVsZSB3YXMgc3RvcHBlZAotICAgKglzdWNlc3NmdWxseQorICAgKglzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgaW50ZXJydXB0IG1vZHVsZSB3YXMgbm90CiAgICAqCXJ1bm5pbmcKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc21pc2MuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNtaXNjLmgKaW5kZXggMmYwNzAxOC4uZGY3YzJiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc21pc2MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzbWlzYy5oCkBAIC02MjAsNyArNjIwLDcgQEAKICAgICogTmVzdGFibGU6IFlFUwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgZmlybXdhcmUgd2FzIHN1Y2Vzc2Z1bGx5IGRvd25sb2FkZWQKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBmaXJtd2FyZSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWQKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqCXdhcyBub3QgY29uZmlndXJlZApAQCAtODM2LDcgKzgzNiw3IEBACiAgICBvd25lcnNoaXAuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBwIHBvcnQgc3VjZXNzZnVsbHkgYWNxdWlyZWQgdGhlCisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgcCBwb3J0IHN1Y2Nlc3NmdWxseSBhY3F1aXJlZCB0aGUKICAgICogCXJlc291cmNlIG9mIGludGVyZXN0CiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFCiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVECkBAIC04NzksNyArODc5LDcgQEAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBOTwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgcCBwb3J0IHN1Y2Vzc2Z1bGx5IHJlbGVhc2VkCisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgcCBwb3J0IHN1Y2Nlc3NmdWxseSByZWxlYXNlZAogICAgKgl0aGUgcmVzb3VyY2Ugb2YgaW50ZXJlc3QKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQKQEAgLTkyOSw3ICs5MjksNyBAQAogCiAgICBSZXR1cm5zCiAgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgdHJhY2UgY29uZmlndXJhdGlvbiBoYXMgYmVlbgotICAgKglzdWNlc3NmdWxseSBjaGFuZ2VkCisgICAqCXN1Y2Nlc3NmdWxseSBjaGFuZ2VkCiAgICAqIENZX0FTX0VSUk9SX05PX1NVQ0hfQlVTIC0gdGhlIGJ1cyBzcGVjaWZpZWQgZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfTk9fU1VDSF9ERVZJQ0UgLSB0aGUgc3BlY2lmaWVkIG1lZGlhL2RldmljZQogICAgKglwYWlyIGRvZXMgbm90IGV4aXN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzcHJvdG9jb2wuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNwcm90b2NvbC5oCmluZGV4IDMxNzgwNWYuLjc3M2I2NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNwcm90b2NvbC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNwcm90b2NvbC5oCkBAIC03NTYsNyArNzU2LDcgQEAKIAkgKiAxIDogRGVidWcgbW9kZQogCiAgICBEZXNjcmlwdGlvbgotICAgVGhpcyByZXBvbnNlIGlzIHNlbnQgdG8gcmV0dXJuIHRoZSBmaXJtd2FyZSB2ZXJzaW9uCisgICBUaGlzIHJlc3BvbnNlIGlzIHNlbnQgdG8gcmV0dXJuIHRoZSBmaXJtd2FyZSB2ZXJzaW9uCiAgICBudW1iZXIgdG8gdGhlIHJlcXVlc3Rvci4KICAqLwogI2RlZmluZSBDWV9SRVNQX0ZJUk1XQVJFX1ZFUlNJT04gKDE2KQpAQCAtMzY1NSw3ICszNjU1LDcgQEAKICAgIFRoaXMgcmVxdWVzdCBpcyBzZW50IHRvIHRoZSBXZXN0IEJyaWRnZSB3aGVuIHRoZSBQIHBvcnQKICAgIG5lZWRzIHRvIHNlbmQgZGF0YSB0byB0aGUgSG9zdCBpbiBhIFR1cmJvIEVuZHBvaW50LgogICAgVXBvbiByZWNlaXZpbmcgdGhpcyBldmVudCwgRmlybXdhcmUgd2lsbCBtYWtlIHRoZSBlbmQgcG9pbnQKLSAgIGF2aWxhYmxlIGZvciB0aGUgUCBwb3J0LiBJZiB0aGUgbGVuZ3RoIGlzIHplcm8sIHRoZW4KKyAgIGF2YWlsYWJsZSBmb3IgdGhlIFAgcG9ydC4gSWYgdGhlIGxlbmd0aCBpcyB6ZXJvLCB0aGVuCiAgICBmaXJtd2FyZSB3aWxsIHNlbmQgYSB6ZXJvIGxlbmd0aCBwYWNrZXQuCiAKICAgIERpcmVjdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3N0b3JhZ2UuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNzdG9yYWdlLmgKaW5kZXggNjRmMDc4Yy4uNTJiOTNjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3N0b3JhZ2UuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzc3RvcmFnZS5oCkBAIC04MzIsNyArODMyLDcgQEAKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuCiAgICAqCWxvYWRlZCBpbnRvIFdlc3QgQnJpZGdlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFIC0gYW4gaW52YWxpZCBoYW5kbGUgd2FzIHBhc3NlZCBpbgotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1vZHVsZSBzdGFydGVkIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbW9kdWxlIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZwogICAgKgl3aXRoIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWQpAQCAtODgyLDcgKzg4Miw3IEBACiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFIC0gYW4gaW52YWxpZCBoYW5kbGUgd2FzCiAgICAqCXBhc3NlZCBpbgogICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQKLSAgICoJZG93biBzdWNlc3NmdWxseQorICAgKglkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkCiAgICAqCWNvbW11bmljYXRpbmcgd2l0aCB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HCkBAIC05MzQsNyArOTM0LDcgQEAKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUgLSBhbiBpbnZhbGlkIGhhbmRsZQogICAgKgl3YXMgcGFzc2VkIGluCiAgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgZnVuY3Rpb24gd2FzIHJlZ2lzdGVyZWQKLSAgICoJc3VjZXNzZnVsbHkKKyAgICoJc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIHN0YWNrIGlzIG5vdCBydW5uaW5nCiAKICAgIFNlZSBBbHNvCkBAIC05ODEsNyArOTgxLDcgQEAKICAgICoJYmVlbiBzdGFydGVkCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFIC0gYW4gaW52YWxpZCBoYW5kbGUgd2FzCiAgICAqCXBhc3NlZCBpbgotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyByZXF1ZXN0IHdhcyBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsbHkKICAgICoJdHJhbnNtaXR0ZWQgdG8gdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcKICAgICoJd2l0aCB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCkBAIC0xMDM0LDcgKzEwMzQsNyBAQAogICAgKgliZWVuIHN0YXJ0ZWQKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUgLSBhbiBpbnZhbGlkIGhhbmRsZQogICAgKgl3YXMgcGFzc2VkIGluCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbWVkaWEgd2FzIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbWVkaWEgd2FzIHN1Y2Nlc3NmdWxseQogICAgKglyZWxlYXNlZAogICAgKiBDWV9BU19FUlJPUl9NRURJQV9OT1RfQ0xBSU1FRCAtIHRoZSBtZWRpYSB3YXMgbm90CiAgICAqCWNsYWltZWQgYnkgdGhlIFAgcG9ydApAQCAtMTkwNSw3ICsxOTA1LDcgQEAKICAgIGRpZmZlciBiZXR3ZWVuIFNEIGNhcmRzLgogCiAgICBBIGxhcmdlIGVyYXNlIGNhbiB0YWtlIGEgd2hpbGUgdG8gY29tcGxldGUgZGVwZW5kaW5nIG9uIHRoZSBTRAotICAgY2FyZC4gSW4gc3VjaCBhIGNhc2UgaXQgaXMgcmVjY29tZW5kZWQgdGhhdCBhbiBhc3luYyBjYWxsIGlzIG1hZGUuCisgICBjYXJkLiBJbiBzdWNoIGEgY2FzZSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFuIGFzeW5jIGNhbGwgaXMgbWFkZS4KIAogICAgUmV0dXJucwogICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gQVBJIGNhbGwgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAKICAgICoJcmVxdWlyZWQgYmVmb3JlIGVyYXNlIGlzIGFsbG93ZWQKICAgICogQ1lfQVNfRVJST1JfTk9fU1VDSF9CVVMKICAgICogQ1lfQVNfRVJST1JfTk9fU1VDSF9ERVZJQ0UKLSAgICogQ1lfQVNfRVJST1JfTk9UX1NVUFBPUlRFRCAtIEVyYXNlIGlzIGN1cnJlbmx5IG9ubHkgc3VwcG9ydGVkCisgICAqIENZX0FTX0VSUk9SX05PVF9TVVBQT1JURUQgLSBFcmFzZSBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQKICAgICoJb24gU0QgYW5kIHVzaW5nIFNEIG9ubHkgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWQogCkBAIC0xOTg1LDcgKzE5ODUsNyBAQAogICAgKgl0eXBlIHdhcyBtYWRlCiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4KICAgICoJcmVhZGluZyBmcm9tIHRoZSBtZWRpYQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0ZVTkNUSU9OIC0gQW4gSU8gYXR0ZW1wdCB3YXMgbWFkZSB0bwpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAKICAgICoJcGFpciBkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAKICovCiBjeV9hc19yZXR1cm5fc3RhdHVzX3QKQEAgLTIwOTUsNyArMjA5NSw3IEBACiAgICAqCXBhaXIgZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogICAgKi8KIGN5X2FzX3JldHVybl9zdGF0dXNfdAogY3lfYXNfc2Rpb19yZXNldF9jYXJkKApAQCAtMjEzOSw3ICsyMTM5LDcgQEAKICAgICogQ1lfQVNfRVJST1JfTk9fU1VDSF9ERVZJQ0UgLSB0aGUgc3BlY2lmaWVkIG1lZGlhL2RldmljZSBwYWlyCiAgICAqCWRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQotICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMgcmVjaWV2ZWQKKyAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkCiAgICAqCWZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluIHJlYWRpbmcKICAgICoJZnJvbSB0aGUgbWVkaWEKQEAgLTIxOTgsNyArMjE5OCw3IEBACiAgICAqIENZX0FTX0VSUk9SX05PX1NVQ0hfREVWSUNFIC0gdGhlIHNwZWNpZmllZCBtZWRpYS9kZXZpY2UKICAgICogcGFpciBkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKLSAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzIHJlY2lldmVkCisgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcyByZWNlaXZlZAogICAgKiBmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbgogICAgKiByZWFkaW5nIGZyb20gdGhlIG1lZGlhCkBAIC0yMjYyLDcgKzIyNjIsNyBAQAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeQogICAgKglhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluCiAgICAqCXJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9GVU5DVElPTiAtIEFuIElPIGF0dGVtcHQgd2FzIG1hZGUKQEAgLTIzMTksNyArMjMxOSw3IEBACiAgICAqCXBhaXIgZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfQVNZTkNfUEVORElORyAtIGFuIGFzeW5jIG9wZXJhdGlvbiBpcyBwZW5kaW5nCiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQotICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMgcmVjaWV2ZWQKKyAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkCiAgICAqCWZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluCiAgICAqCXJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKQEAgLTIzOTYsNyArMjM5Niw3IEBACiAgICAqIENZX0FTX0VSUk9SX0FTWU5DX1BFTkRJTkcgLSBhbiBhc3luYyBvcGVyYXRpb24gaXMgcGVuZGluZwogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluCiAgICAqCXJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9GVU5DVElPTiAtIEFuIElPIGF0dGVtcHQgd2FzIG1hZGUKQEAgLTI0NzEsNyArMjQ3MSw3IEBACiAgICAqIHBhaXIgZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbgogICAgKglyZWFkaW5nIGZyb20gdGhlIG1lZGlhCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfRlVOQ1RJT04gLSBBbiBJTyBhdHRlbXB0IHdhcyBtYWRlCkBAIC0yNzE0LDcgKzI3MTQsNyBAQAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeQogICAgKglhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yCiAgICAqCWluIHJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9GVU5DVElPTiAtIEFuIElPIGF0dGVtcHQgd2FzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzdXNiLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzdXNiLmgKaW5kZXggNGE1NDllMS4uZTNiYTljYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3VzYi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXN1c2IuaApAQCAtNDY0LDcgKzQ2NCw3IEBACiAgICBiZSBzZWxlY3RlZCBvbiBhIHBhcnRpdGlvbmVkIHN0b3JhZ2UgZGV2aWNlLgogCiAgICBEZXNjcmlwdGlvbgotICAgV2VzdCBCcmlkZ2UgZmlybXdhcmUgc3VwcG9ydHMgY3JlYXRpbmcgdXB0byB0d28KKyAgIFdlc3QgQnJpZGdlIGZpcm13YXJlIHN1cHBvcnRzIGNyZWF0aW5nIHVwIHRvIHR3bwogICAgcGFydGl0aW9ucyBvbiBtYXNzIHN0b3JhZ2UgZGV2aWNlcyBjb25uZWN0ZWQgdG8KICAgIFdlc3QgQnJpZGdlLiAgV2hlbiB0aGVyZSBhcmUgdHdvIHBhcnRpdGlvbnMgb24gYSBkZXZpY2UsCiAgICB0aGUgdXNlciBjYW4gY2hvb3NlIHdoaWNoIG9mIHRoZXNlIHBhcnRpdGlvbnMgc2hvdWxkIGJlCkBAIC02OTgsNyArNjk4LDcgQEAKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKICAgICoJaW50byBXZXN0IEJyaWRnZQotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nIHdpdGgKICAgICoJdGhlIFdlc3QgQnJpZGdlIGRldmljZQogCkBAIC03NTIsNyArNzUyLDcgQEAKICAgICogTmVzdGFibGU6IFlFUwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtNzkxLDcgKzc5MSw3IEBACiAgICAqIE5lc3RhYmxlOiBZRVMKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTgyNSw3ICs4MjUsNyBAQAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IFllcyAoaWYgY2Igc3VwcGxpZWQpCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC04NTUsMTMgKzg1NSwxMyBAQAogICAgdGhlIFVTQiBzdGFjawogCiAgICBEZXNjcmlwdGlvbgotICAgVGhpcyBmdW5jdGlvbiBzZW5kcyBhIHJlcXVlc3QgdG8gV2VzdCBCcmlkZ2UgdG8gcmV0cmVpdmUKKyAgIFRoaXMgZnVuY3Rpb24gc2VuZHMgYSByZXF1ZXN0IHRvIFdlc3QgQnJpZGdlIHRvIHJldHJpZXZlCiAgICB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uCiAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBZZXMgKGlmIGNiIHN1cHBsaWVkKQogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtOTA2LDcgKzkwNiw3IEBACiAgICBDaGFwdGVyIDkuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC05OTMsNyArOTkzLDcgQEAKICAgIERlc2NyaXB0aW9uCiAgICBUaGlzIGRhdGEgc3RydWN0dXJlIHRoZSBidWZmZXIgdG8gaG9sZCB0aGUgZGVzY3JpcHRvcgogICAgZGF0YSwgYW5kIGFuIGluL291dCBwYXJhbWV0ZXIgdGkgaW5kaWNhdGUgdGhlCi0gICBsZW5naHQgb2YgdGhlIGJ1ZmZlciBhbmQgZGVzY3JpcHRvciBkYXRhIGluIGJ5dGVzLgorICAgbGVuZ3RoIG9mIHRoZSBidWZmZXIgYW5kIGRlc2NyaXB0b3IgZGF0YSBpbiBieXRlcy4KIAogICAgU2VlIEFsc28KICAgICogQ3lBc1VzYkdldERlc2NyaXB0b3IKQEAgLTEwMjcsNyArMTAyNyw3IEBACiAgICBDaGFwdGVyIDkuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC0xMTA2LDcgKzExMDYsNyBAQAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IE5PCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC0xMTQwLDcgKzExNDAsNyBAQAogICAgQWRkIGRvY3VtZW50YXRpb24gYWJvdXQgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBsaW1pdGF0aW9ucwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtMTE4MSw3ICsxMTgxLDcgQEAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBOTwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtMTIxOSw3ICsxMjE5LDcgQEAKICAgIGZ1bmN0aW9ucyBzdG9yZSBhd2F5IHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCB0aGlzCiAgICBDeUFzVXNiQ29tbWl0Q29uZmlnKCkgYWN0dWFsbHkgZmluZHMgdGhlCiAgICBiZXN0IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlIHJlcXVlc3RlZCBlbmRwb2ludAotICAgY29uZmlndXJhdGlvbiBhbmQgc2VuZHMgdGhzaSBvcHRpbWFsCisgICBjb25maWd1cmF0aW9uIGFuZCBzZW5kcyB0aGlzIG9wdGltYWwKICAgIGNvbmZpdXJhdGlvbiBkb3duIHRvIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UuCiAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBZRVMgKGlmIGNiIHN1cHBsaWVkKQpAQCAtMTI2OCw3ICsxMjY4LDcgQEAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBOTwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcgd2l0aAogICAgKgl0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIFVTQiBzdGFjayBpcyBub3QgcnVubmluZwpAQCAtMTMxMSw3ICsxMzExLDcgQEAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBZRVMKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nIHdpdGgKICAgICoJdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBVU0Igc3RhY2sgaXMgbm90IHJ1bm5pbmcKQEAgLTEzNTUsNyArMTM1NSw3IEBACiAgICBhIHplcm8gbGVuZ3RoIHBhY2tldCB0cmFuc21pdHRlZCB0byB0aGUgVVNCIGhvc3QuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZyB3aXRoCiAgICAqCXRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgVVNCIHN0YWNrIGlzIG5vdCBydW5uaW5nCkBAIC0xMzk1LDcgKzEzOTUsNyBAQAogICAgaW4gYSB6ZXJvIGxlbmd0aCBwYWNrZXQgdHJhbnNtaXR0ZWQgdG8gdGhlIFVTQiBob3N0LgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcgd2l0aAogICAgKgl0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIFVTQiBzdGFjayBpcyBub3QgcnVubmluZwpAQCAtMTQzNSw3ICsxNDM1LDcgQEAKIAogICAgUmV0dXJucwogICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93bgotICAgKglzdWNlc3NmdWxseQorICAgKglzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgVVNCIHN0YWNrIGlzIG5vdAogICAgKglydW5uaW5nCiAgICAqIENZX0FTX0VSUk9SX0FTWU5DX05PVF9QRU5ESU5HIC0gbm8gYXN5bmNocm9ub3VzIFVTQgpAQCAtMTc5MSw3ICsxNzkxLDcgQEAKICAgIGRldmljZSBzaG91bGQgYmUgbWFkZSB2aXNpYmxlIHRvIFVTQi4KIAogICAgRGVzY3JpcHRpb24KLSAgIFdlc3QgQnJpZGdlIGZpcm13YXJlIHN1cHBvcnRzIHRoZSBjcmVhdGlvbiBvZiB1cHRvIHR3bworICAgV2VzdCBCcmlkZ2UgZmlybXdhcmUgc3VwcG9ydHMgdGhlIGNyZWF0aW9uIG9mIHVwIHRvIHR3bwogICAgcGFydGl0aW9ucyBvbiBtYXNzIHN0b3JhZ2UgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIFdlc3QgQnJpZGdlCiAgICBkZXZpY2UuICBXaGVuIHRoZXJlIGFyZSB0d28gcGFydGl0aW9ucyBvbiBhIGRldmljZSwgdGhlIHVzZXIgY2FuCiAgICBjaG9vc2Ugd2hpY2ggb2YgdGhlc2UgcGFydGl0aW9ucyBzaG91bGQgYmUgbWFkZSB2aXNpYmxlIHRvIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWRzLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tZHMuYwppbmRleCA5Y2ZlYTk0Li5jOWYwZThmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tZHMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tZHMuYwpAQCAtNDkyLDcgKzQ5Miw3IEBACiAKIAkJCVR4RGVzSW5kZXggPSBwTWRzLT5UeERlc0luZGV4OyAvKiBHZXQgdGhlIGN1cnJlbnQgSUQgKi8KIAkJCXBUeERlcy0+RGVzY3JpcHRvcl9JRCA9IFR4RGVzSW5kZXg7Ci0JCQlwTWRzLT5UeERlc0Zyb21bVHhEZXNJbmRleF0gPSAyOyAvKiBTdG9yaW5nIHRoZSBpbmZvcm1hdGlvbiBvZiBzb3VyY2UgY29tbWluZyBmcm9tICovCisJCQlwTWRzLT5UeERlc0Zyb21bVHhEZXNJbmRleF0gPSAyOyAvKiBTdG9yaW5nIHRoZSBpbmZvcm1hdGlvbiBvZiBzb3VyY2UgY29taW5nIGZyb20gKi8KIAkJCXBNZHMtPlR4RGVzSW5kZXgrKzsKIAkJCXBNZHMtPlR4RGVzSW5kZXggJT0gTUFYX1VTQl9UWF9ERVNDUklQVE9SOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9SRUFETUUudWJ1bnR1IGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvUkVBRE1FLnVidW50dQppbmRleCA0N2JlYWVjLi5lZGVlOGI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9SRUFETUUudWJ1bnR1CisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1JFQURNRS51YnVudHUKQEAgLTExNiw3ICsxMTYsNyBAQAogCiBUaGUgQWdlcmUgU3lzdGVtcyBsaWNlbnNlIGFwcGxpZXMuIFRoaXMgaXMgd2h5IEkgaW5jbHVkZSB0aGUgb3JpZ2luYWwKIFJFQURNRS53bGFnczQ5LiBUaGUgaW5zdHJ1Y3Rpb25zIGluIHRoYXQgZmlsZSBhcmUgYm9ndXMgbm93LiBJIGFsc28KLWluY2x1ZGUgdGhlIG1hbiBwYWdlLiBFdmVudGhvdWdoIHNldHRpbmcgcGFyYW1ldGVycyBvbiB0aGUgbW9kdWxlCitpbmNsdWRlIHRoZSBtYW4gcGFnZS4gRXZlbiB0aG91Z2ggc2V0dGluZyBwYXJhbWV0ZXJzIG9uIHRoZSBtb2R1bGUKIGRvZXMgbm90IHdvcmsgYW55bW9yZSBidXQgaXQgcHJvdmlkZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhbGwgdGhlCiBzZXR0aW5ncy4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvVE9ETyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1RPRE8KaW5kZXggMTRhYTQxNS4uOTQwMzJiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvVE9ETworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9UT0RPCkBAIC0xLDcgKzEsNyBAQAogRmlyc3Qgb2YgYWxsLCB0aGUgYmVzdCB0aGluZyB3b3VsZCBiZSB0aGF0IHRoaXMgZHJpdmVyIGJlY29tZXMgb2Jzb2x0ZSBieQogYWRkaW5nIHN1cHBvcnQgZm9yIEhlcm1lcyBJSSBhbmQgSGVybWVzIElJLjUgY2FyZHMgdG8gdGhlIGV4aXN0aW5nIG9yaW5vY28KIGRyaXZlci4gVGhlIG9yaW5vY28gZHJpdmVyIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEhlcm1lcyBJIGJhc2VkIGNhcmRzLgotU2luY2UgdGhpcyB3aWxsIG5vdCBoYXBwZW4gYnkgbWFnaWMgYW5kIGhhcyBub3QgaGFwcGVuZCB1bnRpbCBub3cgdGhpcworU2luY2UgdGhpcyB3aWxsIG5vdCBoYXBwZW4gYnkgbWFnaWMgYW5kIGhhcyBub3QgaGFwcGVuZWQgdW50aWwgbm93IHRoaXMKIGRyaXZlciBwcm92aWRlcyBhIHN0b3AtZ2FwIHNvbHV0aW9uIGZvciB0aGVzZSB0eXBlIG9mIGNhcmRzLgogCiBIYXZpbmcgc2FpZCB0aGF0LCB0aGUgZm9sbG93aW5nIHdpc2hsaXN0IGNvbWVzIHRvIG1pbmQgdG8gbWFrZSB0aGUgZHJpdmVyCkBAIC0xOCw3ICsxOCw3IEBACiAJLSB0aGUgZHJpdmVyIGlzIHNwbGl0IGludG8gYSBIZXJtZXMgSUkgYW5kIGEgSGVybWVzIElJLjUgcGFydCwgaXQKIAkgIHdvdWxkIGJlIG5pY2UgdG8gaGFuZGxlIGJvdGggd2l0aCBvbmUgbW9kdWxlIGluc3RlYWQgb2YgdHdvCiAJLSByZXZpZXcgYnkgdGhlIHdpcmVsZXNzIGRldmVsb3BlciBjb21tdW5pdHkKLQktIHZlcmlmeSB0aGUgY29kZSBhZ2FpbnN0IHRoZSBjb2Rpbmcgc3RhbmRhcmRzIGZvciBhIHByb3BwZXIgbGludXgKKwktIHZlcmlmeSB0aGUgY29kZSBhZ2FpbnN0IHRoZSBjb2Rpbmcgc3RhbmRhcmRzIGZvciBhIHByb3BlciBsaW51eAogCSAgZHJpdmVyCiAJLSByZXNvbHZlIGxpY2Vuc2UgaXNzdWVzICg/KQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2YuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZi5jCmluZGV4IGQ0YmRkM2UuLmE3MzMxN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZi5jCkBAIC01NDAsNyArNTQwLDcgQEAKICoKICouQ09ORElUSU9OUwogKiBFeGNlcHQgZm9yIGhjZl9hY3Rpb24gd2l0aCBIQ0ZfQUNUX0lOVF9GT1JDRV9PTiBvciBIQ0ZfQUNUX0lOVF9PRkYgYXMgcGFyYW1ldGVyIG9yIGhjZl9jb25uZWN0IHdpdGggYW4gSS9PCi0qIGFkZHJlc3MgKGkuZS4gbm90IEhDRl9ESVNDT05ORUNUKSwgYWxsIGhjZi1mdW5jdGlvbiBjYWxscyBNVVNUIGJlIHByZWNlZWRlZCBieSBhIGNhbGwgb2YgaGNmX2FjdGlvbiB3aXRoCisqIGFkZHJlc3MgKGkuZS4gbm90IEhDRl9ESVNDT05ORUNUKSwgYWxsIGhjZi1mdW5jdGlvbiBjYWxscyBNVVNUIGJlIHByZWNlZGVkIGJ5IGEgY2FsbCBvZiBoY2ZfYWN0aW9uIHdpdGgKICogSENGX0FDVF9JTlRfT0ZGIGFzIHBhcmFtZXRlci4KICogTm90ZSB0aGF0IGhjZl9jb25uZWN0IGRlZmF1bHRzIHRvIE5JQyBpbnRlcnJ1cHQgZGlzYWJsZWQgbW9kZSwgaS5lLiBhcyBpZiBoY2ZfYWN0aW9uKCBIQ0ZfQUNUX0lOVF9PRkYgKQogKiB3YXMgY2FsbGVkLgpAQCAtODQzLDcgKzg0Myw3IEBACiAqLk1PRFVMRQkJaW50IGhjZl9jbnRsKCBJRkJQIGlmYnAsIGhjZl8xNiBjbWQgKQogKi5QVVJQT1NFCQlDb25uZWN0IG9yIGRpc2Nvbm5lY3QgYSBzcGVjaWZpYyBwb3J0IHRvIGEgc3BlY2lmaWMgbmV0d29yay4KICohISAgOz8/Pz8/Pz8/Pz8/Pz8/Pz8gY29udGludWUgbmVlZHMgbW9yZSBleHBsYW5hdGlvbgotKgkJCQlyZWNvdmVycyBieSBtZWFucyBvZiAiY29udGludWUiIHdoZW4gdGhlIGNvbm5lY3QgcHJvY2VzIGluIENDWCBtb2RlIGZhaWxzCisqCQkJCXJlY292ZXJzIGJ5IG1lYW5zIG9mICJjb250aW51ZSIgd2hlbiB0aGUgY29ubmVjdCBwcm9jZXNzIGluIENDWCBtb2RlIGZhaWxzCiAqCQkJCUVuYWJsZXMgb3IgZGlzYWJsZXMgZGF0YSB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiBmb3IgdGhlIE5JQy4KICoJCQkJQWN0aXZhdGVzIHN0YXRpYyBOSUMgY29uZmlndXJhdGlvbiBmb3IgYSBzcGVjaWZpYyBwb3J0IGF0IGNvbm5lY3QuCiAqCQkJCUFjdGl2YXRlcyBzdGF0aWMgY29uZmlndXJhdGlvbiBmb3IgYWxsIHBvcnRzIGF0IGVuYWJsZS4KQEAgLTExNzAsMTIgKzExNzAsMTIgQEAKIAkJaW9fYWRkciA9IGlvX2Jhc2U7CiAJfQogCi0jaWYgMCAvLzs/IGlmIGEgc3Vic2VxdWVudCBoY2ZfY29ubmVjdCBpcyBwcmVjZWVkZWQgYnkgYW4gaGNmX2Rpc2Nvbm5lY3QgdGhlIHdha2V1cCBpcyBub3QgbmVlZGVkICEhCisjaWYgMCAvLzs/IGlmIGEgc3Vic2VxdWVudCBoY2ZfY29ubmVjdCBpcyBwcmVjZWRlZCBieSBhbiBoY2ZfZGlzY29ubmVjdCB0aGUgd2FrZXVwIGlzIG5vdCBuZWVkZWQgISEKICNpZiBIQ0ZfU0xFRVAKICAgICBPVVRfUE9SVF9XT1JEKCAuLi4uLitIUkVHX0lPLCBIUkVHX0lPX1dBS0VVUF9BU1lOQyApOyAJICAgIC8vT1BXIG5vdCB5ZXQgdXNlYWJsZQogCU1TRl9XQUlUKDgwMCk7CQkJCQkJCQkvLyBNU0YtZGVmaW5lZCBmdW5jdGlvbiB0byB3YWl0IG4gbWljcm9zZWNvbmRzLgogCW5vdGUgdGhhdCBNU0ZfV0FJVCB1c2VzIG5vdCB5ZXQgZGVmaW5lZCEhISEgSUZCX0lPQmFzZSBhbmQgSUZCX1RpY2tJbmkgKHZpYSBQUk9UX0NOVF9JTkkpCi0Jc28gYmUgY2FyZWZ1bGwgaWYgdGhpcyBjb2RlIGlzIHJlc3RvcmVkCisJc28gYmUgY2FyZWZ1bCBpZiB0aGlzIGNvZGUgaXMgcmVzdG9yZWQKICNlbmRpZiAvLyBIQ0ZfU0xFRVAKICNlbmRpZiAvLyAwCiAKQEAgLTE1NjMsNyArMTU2Myw3IEBACiAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBNU0YgdG8gc3VwcGx5IHRoZSBIQ0Ygd2l0aCBuZXcvbW9yZSBidWZmZXJzIGZvciByZWNlaXZlIHB1cnBvc2VzLgogKiBUaGUgSENGIGNhbiBiZSB1c2VkIGluIDIgZmFzaGlvbnM6IHdpdGggYW5kIHdpdGhvdXQgZW5jYXBzdWxhdGlvbiBmb3IgZGF0YSB0cmFuc2Zlci4KICogVGhpcyBpcyBjb250cm9sbGVkIGF0IGNvbXBpbGUgdGltZSBieSB0aGUgSENGX0VOQyBiaXQgb2YgdGhlIEhDRl9FTkNBUCBzeXN0ZW0gY29uc3RhbnQuCi0qIEFzIGEgY29uc2VxdWVuY2UsIHNvbWUgYWRkaXRpb25hbCBjb25zdGFpbnRzIGFwcGx5IHRvIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvciBhbmQgdGhlIGJ1ZmZlcnMgYXNzb2NpYXRlZAorKiBBcyBhIGNvbnNlcXVlbmNlLCBzb21lIGFkZGl0aW9uYWwgY29uc3RyYWludHMgYXBwbHkgdG8gdGhlIG51bWJlciBvZiBkZXNjcmlwdG9yIGFuZCB0aGUgYnVmZmVycyBhc3NvY2lhdGVkCiAqIHdpdGggdGhlIGZpcnN0IDIgZGVzY3JpcHRvcnMuIEluZGVwZW5kZW50IG9mIHRoZSBlbmNhcHN1bGF0aW9uIGZlYXR1cmUsIHRoZSBDT1VOVCBmaWVsZHMgYXJlIGlnbm9yZWQuCiAqIEEgc3BlY2lhbCBjYXNlIGlzIHRoZSBzdXBwbHlpbmcgb2YgdGhlIERFTFdBIGRlc2NyaXB0b3IsIHdoaWNoIG11c3QgYmUgc3VwcGxpZWQgYXMgdGhlIGZpcnN0IGRlc2NyaXB0b3IuCiAqCkBAIC0xNzM1LDcgKzE3MzUsNyBAQAogKiAtIGluIGNhc2UgZW5jYXBzdWxhdGlvbiBieSB0aGUgSENGIGlzIHNlbGVjdGVkOgogKgkgIC0JVGhlIEZyYW1lTGlzdCBkb2VzIG5vdCBjb25zaXN0cyBvZiBhdCBsZWFzdCAyIERlc2NyaXB0b3JzLgogKgkgIC0JVGhlIGZpcnN0IGRhdGFidWZmZXIgZG9lcyBub3QgY29udGFpbiBleGFjdGx5IHRoZSAoc3BhY2UgZm9yKSB0aGUgODAyLjExIGhlYWRlciAoPT0gMjggd29yZHMpCi0qCSAgLQlUaGUgZmlyc3QgZGF0YWJ1ZmZlciBkb2VzIG5vdCBoYXZlIGEgc2l6ZSB0byBhZGRpdGlvbmFsbHkgYWNjb21vZGF0ZSB0aGUgODAyLjMgaGVhZGVyIGFuZCB0aGUKKyoJICAtCVRoZSBmaXJzdCBkYXRhYnVmZmVyIGRvZXMgbm90IGhhdmUgYSBzaXplIHRvIGFkZGl0aW9uYWxseSBhY2NvbW1vZGF0ZSB0aGUgODAyLjMgaGVhZGVyIGFuZCB0aGUKICoJCVNOQVAgaGVhZGVyIG9mIHRoZSBmcmFtZSBhZnRlciBlbmNhcHN1bGF0aW9uICg9PSAzOSB3b3JkcykuCiAqCSAgLQlUaGUgc2Vjb25kIGRhdGFidWZmZXIgZG9lcyBub3QgY29udGFpbiBhdCBsZWFzdCBEQSwgU0EgYW5kICd0eXBlL2xlbmd0aCcgKD09MTQgYnl0ZXMgb3IgNyB3b3JkcykKICohISBUaGUgMm5kIHBhcnQgb2YgdGhlIGxpc3Qgb2YgYXNzZXJ0cyBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggcHV0X2ZyYW1lX2xzdCwgaW4gb3JkZXIgdG8gZ2V0CkBAIC0xNzYyLDE0ICsxNzYyLDE0IEBACiAqCS0gQ29weSBEQS9TQSBmaWVsZHMgZnJvbSB0aGUgMm5kIGJ1ZmZlcgogKiAgIC0gQ2FsY3VsYXRlIHRvdGFsIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSAoc25hcC1oZWFkZXIgKyB0eXBlLWZpZWxkICsgdGhlIGxlbmd0aCBvZiBhbGwgYnVmZmVyIGZyYWdtZW50cwogKiAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSA4MDIuMyBmcmFtZSAoaS5lIGFsbCBkZXNjcmlwdG9ycyBleGNlcHQgdGhlIGZpcnN0KSwgYnV0IG5vdCB0aGUgRGVzdGluYXRpb25BZGRyZXNzLAotKiAgICAgU291cmNlQWRkcmVzcyBhbmQgbGVuZ2h0LWZpZWxkKQorKiAgICAgU291cmNlQWRkcmVzcyBhbmQgbGVuZ3RoLWZpZWxkKQogKiAgICAgQXNzZXJ0IHRoZSBtZXNzYWdlIGxlbmd0aAogKgkgIFdyaXRlIGxlbmd0aC4gTm90ZSB0aGF0IHRoZSBtZXNzYWdlIGlzIGluIEJFIGZvcm1hdCwgaGVuY2Ugb24gTEUgcGxhdGZvcm1zIHRoZSBsZW5ndGggbXVzdCBiZSBjb252ZXJ0ZWQKICoJICA7PyBUSElTIElTIE5PVCBXSEFUIENVUlJFTlRMWSBJUyBJTVBMRU1FTlRFRAogKgktIFdyaXRlIHNuYXAgaGVhZGVyLiBOb3RlIHRoYXQgdGhlIGxhc3QgYnl0ZSBvZiB0aGUgc25hcCBoZWFkZXIgaXMgTk9UIGNvcGllZCwgdGhhdCBieXRlIGlzIGFscmVhZHkgaW4KICoJICBwbGFjZSBhcyByZXN1bHQgb2YgdGhlIGNhbGwgdG8gaGNmX2VuY2FwLgogKglOb3RlIHRoYXQgdGhlcmUgYXJlIG1hbnkgd2F5cyB0byBza2luIGEgY2F0LiBUbyBleHByZXNzIHRoZSBvZmZzZXRzIGluIHRoZSAxc3QgYnVmZmVyIHdoaWxlIHdyaXRpbmcKLSoJdGhlIHNuYXAgaGVhZGVyLCBIRlNfVFlQRSBpcyBjaG9vc2VuIGFzIGEgcmVmZXJlbmNlIHBvaW50IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGdyYXNwIHRoYXQgdGhlIHNuYXAgaGVhZGVyCisqCXRoZSBzbmFwIGhlYWRlciwgSEZTX1RZUEUgaXMgY2hvc2VuIGFzIGEgcmVmZXJlbmNlIHBvaW50IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGdyYXNwIHRoYXQgdGhlIHNuYXAgaGVhZGVyCiAqCWFuZCBlbmNhcHN1YWx0aW9uIHR5cGUgYXJlIGF0IGxlYXN0IHJlbGF0aXZlIGluIHRoZSByaWdodC4KICo4Ogltb2RpZnkgMXN0IGRlc2NyaXB0b3IgdG8gcmVmbGVjdCBtb3ZlZCBwYXJ0IG9mIHRoZSA4MDIuMyBoZWFkZXIgKyBTbmFwLWhlYWRlcgogKgltb2RpZnkgMm5kIGRlc2NyaXB0b3IgdG8gc2tpcCB0aGUgbW92ZWQgcGFydCBvZiB0aGUgODAyLjMgaGVhZGVyIChEQS9TQQpAQCAtMTkzMyw3ICsxOTMzLDcgQEAKICoJSENGX1NVQ0NFU1MJCQlTdWNjZXNzCiAqISEJdmlhIGNtZF9leGUgKCB0eXBlID49IENGR19SSURfRldfTUlOICkKICoJSENGX0VSUl9OT19OSUMJCU5JQyByZW1vdmVkIGR1cmluZyByZXRyaWV2YWwKLSoJSENGX0VSUl9USU1FX09VVAlFeHBlY3RlZCBIZXJtZXMgZXZlbnQgZGlkIG5vdCBvY2N1cmUgaW4gZXhwZWN0ZWQgdGltZQorKglIQ0ZfRVJSX1RJTUVfT1VUCUV4cGVjdGVkIEhlcm1lcyBldmVudCBkaWQgbm90IG9jY3VyIGluIGV4cGVjdGVkIHRpbWUKICohIQl2aWEgY21kX2V4ZSBhbmQgc2V0dXBfYmFwICh0eXBlID49IENGR19SSURfRldfTUlOICkKICoJSENGX0VSUl9ERUZVTkNUXy4uLglIQ0YgaXMgaW4gZGVmdW5jdCBtb2RlIChiaXRzIDB4N0YgcmVmbGVjdCBjYXVzZSkKICoKQEAgLTI5NTgsNyArMjk1OCw3IEBACiAqCWhjZl9zZXJ2aWNlX25pYyBpcyBhbHNvIHNraXBwZWQgaW4gdGhvc2UgY2FzZXMuCiAqCVRvIHByZXZlbnQgdGhhdCBoY2Zfc2VydmljZV9uaWMgcmVwb3J0cyBib2d1cyBpbmZvcm1hdGlvbiB0byB0aGUgTVNGIHdpdGggYWxsIC0gcG9zc2libHkgZGlmZmljdWx0IHRvCiAqCWRlYnVnIC0gdW5kZXNpcmFibGUgc2lkZSBlZmZlY3RzLCBpdCBpcyBwYXJhbW91bnQgdG8gY2hlY2sgdGhlIE5JQyBwcmVzZW5jZS4gSW4gZm9ybWVyIGRheXMgdGhlIHByZXNlbmNlCi0qCXRlc3Qgd2FzIGJhc2VkIG9uIHRoZSBIZXJtZXMgcmVnaXN0ZXIgSFJFR19TV18wLiBTaW5jZSBpbiBIQ0ZfQUNUX0lOVF9PRkYgaXMgY2hvb3NlbiBmb3Igc3RyYXRlZ3kgYmFzZWQgb24KKyoJdGVzdCB3YXMgYmFzZWQgb24gdGhlIEhlcm1lcyByZWdpc3RlciBIUkVHX1NXXzAuIFNpbmNlIGluIEhDRl9BQ1RfSU5UX09GRiBpcyBjaG9zZW4gZm9yIHN0cmF0ZWd5IGJhc2VkIG9uCiAqCUhSRUdfRVZfU1RBVCwgdGhpcyBpcyBub3cgYWxzbyB1c2VkIGluIGhjZl9zZXJ2aWNlX25pYy4gVGhlIG1vdGl2YXRpb24gdG8gY2hhbmdlIHN0cmF0ZWd5IGlzIHBhcnRseQogKglkdWUgdG8gaW5jb25zaXN0ZW50IEYvVyBpbXBsZW1lbnRhdGlvbnMgd2l0aCByZXNwZWN0IHRvIEhSRUdfU1dfMCBtYW5pcHVsYXRpb24gYXJvdW5kIHJlc2V0IGFuZCBkb3dubG9hZC4KICoJTm90ZSB0aGF0IGluIHBvbGxlZCBlbnZpcm9ubWVudHMgQ2FyZCBSZW1vdmFsIGlzIG5vdCBkZXRlY3RlZCBieSBJTlRfT0ZGIHdoaWNoIG1ha2VzIHRoZSBjaGVjayBpbgpAQCAtNDA0OCw3ICs0MDQ4LDcgQEAKIAlIQ0ZBU1NFUlQoIHdvcmRfbGVuID09IDAgfHwgd29yZF9sZW4gPT0gMiB8fCB3b3JkX2xlbiA9PSA0LCB3b3JkX2xlbiApCiAJSENGQVNTRVJUKCB3b3JkX2xlbiA9PSAwIHx8ICgoaGNmXzMyKWJ1ZnAgJiAxICkgPT0gMCwgKGhjZl8zMilidWZwICkKIAlIQ0ZBU1NFUlQoIHdvcmRfbGVuIDw9IGxlbiwgTUVSR0UyKCB3b3JkX2xlbiwgbGVuICkgKQotCS8vc2VlIHB1dF9mcmFnIGZvciBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGJlIGNhcmVmdWxsIGFib3V0IHdoYXQgYXJlIGludCdzIGFuZCB3aGF0IGFyZQorCS8vc2VlIHB1dF9mcmFnIGZvciBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGJlIGNhcmVmdWwgYWJvdXQgd2hhdCBhcmUgaW50J3MgYW5kIHdoYXQgYXJlCiAJLy9oY2ZfMTYncwogCWlmICggd29yZF9sZW4gKSB7CQkJCQkJCQkvLy4gIGlmIHRoZXJlIGlzIGFueXRoaW5nIHRvIGNvbnZlcnQKIGhjZl84IGM7CkBAIC00NzEyLDcgKzQ3MTIsNyBAQAogKglOb3RlIHRoYXQgbGVuIGlzIHVuc2lnbmVkLCBzbyBldmVuIE1TRiBJL0YgdmlvbGF0aW9uIHdvcmtzIG91dCBPLksuCiAqCVRoZSAnMicgaW4gdGhlIGV4cHJlc3Npb24gImxlbisyIiBpcyB1c2VkIGJlY2F1c2UgMSB3b3JkIGlzIG5lZWRlZCBmb3IgTCBpdHNlbGYgYW5kIDEgd29yZCBpcyBuZWVkZWQKICoJZm9yIHRoZSB6ZXJvLXNlbnRpbmVsCi0qODoJdXBkYXRlIE1haWxCb3ggSW5mbyBsZW5ndGggcmVwb3J0IHRvIE1TRiB3aXRoICJvbGRlc3QiIE1CIEluZm8gQmxvY2sgc2l6ZS4gQmUgY2FyZWZ1bGwgaGVyZSwgaWYgeW91IGdldAorKjg6CXVwZGF0ZSBNYWlsQm94IEluZm8gbGVuZ3RoIHJlcG9ydCB0byBNU0Ygd2l0aCAib2xkZXN0IiBNQiBJbmZvIEJsb2NrIHNpemUuIEJlIGNhcmVmdWwgaGVyZSwgaWYgeW91IGdldAogKgloZXJlIGJlZm9yZSB0aGUgTWFpbEJveCBpcyByZWdpc3RlcmVkLCB5b3UgY2FuJ3QgcmVhZCBmcm9tIHRoZSBidWZmZXIgYWRkcmVzc2VkIGJ5IElGQl9NQnAgKGl0IGlzIHRoZQogKglOdWxsIGJ1ZmZlcikgc28gZG9uJ3QgbW92ZSB0aGlzIGNvZGUgdGlsbCB0aGUgZW5kIG9mIHRoaXMgcm91dGluZSBidXQga2VlcCBpdCB3aGVyZSB0aGVyZSBpcyBnYXJ1YW50ZWVkCiAqCWEgYnVmZmVyLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmZGVmLmggYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2ZkZWYuaAppbmRleCA0ZTIwMTcxLi5jYjE5NjZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2ZkZWYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2ZkZWYuaApAQCAtMzE1LDcgKzMxNSw3IEBACiAKICNpZiBIQ0ZfRE1BCiAvLyoqKioqKioqKioqKioqKioqKioqKioqKiogRE1BIChidXMgbWFzdGVyaW5nKQotCS8vIEJlIGNhcmVmdWxsIHRvIHVzZSB0aGVzZSByZWdpc3RlcnMgb25seSBhdCBhIGdlbnVpbmUgMzIgYml0cyBOSUMKKwkvLyBCZSBjYXJlZnVsIHRvIHVzZSB0aGVzZSByZWdpc3RlcnMgb25seSBhdCBhIGdlbnVpbmUgMzIgYml0cyBOSUMKIAkvLyBPbiAxNiBiaXRzIE5JQ3MsIHRoZXNlIGFkZHJlc3NlcyBhcmUgbWFwcGVkIGludG8gdGhlIHJhbmdlIDB4MDAgdGhyb3VnaCAweDNGIHdpdGggYWxsIGNvbnNlcXVlbmNlcwogCS8vIHRoZXJlb2YsIGUuZy4gIEhSRUdfRE1BX0NUUkwgcmVnaXN0ZXIgbWFwcyB0byBIUkVHX0NNRC4KICNkZWZpbmUgSFJFR19ETUFfQ1RSTAkJCQkJCTB4MDA0MApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvd2xfd2V4dC5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvd2xfd2V4dC5jCmluZGV4IDllNWRhMDguLjUyMmEzMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL3dsX3dleHQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi93bF93ZXh0LmMKQEAgLTI1NzUsNyArMjU3NSw3IEBACiAgICAgICAgICAqIFRoaXMgbG9va3MgbGlrZSBhIG5pY2UgcGxhY2UgdG8gdGVzdCBpZiB0aGUgSENGIGlzIHN0aWxsCiAgICAgICAgICAqIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgY2FyZC4gSXQgc2VlbXMgdGhhdCBzb21ldGltZXMgQkFQXzEKICAgICAgICAgICogZ2V0cyBjb3JydXB0ZWQuIEJ5IGxvb2tpbmcgYXQgdGhlIGNvbW1lbnRzIGluIEhDRiB0aGUKLSAgICAgICAgICogY2F1c2UgaXMgc3RpbGwgYSBtaXN0ZXJ5LiBPa2F5LCB0aGUgY29tbXVuaWNhdGlvbiB0byB0aGUKKyAgICAgICAgICogY2F1c2UgaXMgc3RpbGwgYSBteXN0ZXJ5LiBPa2F5LCB0aGUgY29tbXVuaWNhdGlvbiB0byB0aGUKICAgICAgICAgICogY2FyZCBpcyBkZWFkLCByZXNldCB0aGUgY2FyZCB0byByZXZpdmUuCiAgICAgICAgICAqLwogCWlmKChscC0+aGNmQ3R4LklGQl9DYXJkU3RhdCAmIENBUkRfU1RBVF9ERUZVTkNUKSAhPSAwKQpAQCAtMzkyNCw3ICszOTI0LDcgQEAKIAltZW1zZXQoIG1zZywgMCwgc2l6ZW9mKCBtc2cgKSk7CiAKIAotCS8qIEJlY3Vhc2UgTUlDIGZhaWx1cmVzIGFyZSBub3QgcGFydCBvZiB0aGUgV2lyZWxlc3MgRXh0ZW5zaW9ucyB5ZXQsIHRoZXkKKwkvKiBCZWNhdXNlIE1JQyBmYWlsdXJlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFdpcmVsZXNzIEV4dGVuc2lvbnMgeWV0LCB0aGV5CiAJICAgbXVzdCBiZSBwYXNzZWQgYXMgYSBzdHJpbmcgdXNpbmcgYW4gSVdFVkNVU1RPTSBldmVudC4gSW4gb3JkZXIgZm9yIHRoZQogCSAgIGV2ZW50IHRvIGJlIGVmZmVjdGl2ZSwgdGhlIHN0cmluZyBmb3JtYXQgbXVzdCBiZSBrbm93biBieSBib3RoIHRoZQogCSAgIGRyaXZlciBhbmQgdGhlIHN1cHBsaWNhbnQuIFRoZSBmb2xsb3dpbmcgaXMgdGhlIHN0cmluZyBmb3JtYXQgdXNlZCBieSB0aGUKQEAgLTM5OTksNyArMzk5OSw3IEBACiAJCW1lbWNweSggJmRhdGEucmF3RGF0YSwgJiggbHAtPmx0dlJlY29yZC51LnU4WzFdICksIDg4ICk7CiAJCXdwYV9pZSA9IHdsX3BhcnNlX3dwYV9pZSggJmRhdGEsICZsZW5ndGggKTsKIAotCQkvKiBCZWN1YXNlIHRoaXMgZXZlbnQgKEFzc29jaWF0aW9uIFdQQS1JRSkgaXMgbm90IHBhcnQgb2YgdGhlIFdpcmVsZXNzCisJCS8qIEJlY2F1c2UgdGhpcyBldmVudCAoQXNzb2NpYXRpb24gV1BBLUlFKSBpcyBub3QgcGFydCBvZiB0aGUgV2lyZWxlc3MKIAkJRXh0ZW5zaW9ucyB5ZXQsIGl0IG11c3QgYmUgcGFzc2VkIGFzIGEgc3RyaW5nIHVzaW5nIGFuIElXRVZDVVNUT00gZXZlbnQuCiAJCUluIG9yZGVyIGZvciB0aGUgZXZlbnQgdG8gYmUgZWZmZWN0aXZlLCB0aGUgc3RyaW5nIGZvcm1hdCBtdXN0IGJlIGtub3duCiAJCWJ5IGJvdGggdGhlIGRyaXZlciBhbmQgdGhlIHN1cHBsaWNhbnQuIFRoZSBmb2xsb3dpbmcgaXMgdGhlIHN0cmluZyBmb3JtYXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyNS9UT0RPIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDI1L1RPRE8KaW5kZXggMTRhYTQxNS4uOTQwMzJiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDI1L1RPRE8KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDI1L1RPRE8KQEAgLTEsNyArMSw3IEBACiBGaXJzdCBvZiBhbGwsIHRoZSBiZXN0IHRoaW5nIHdvdWxkIGJlIHRoYXQgdGhpcyBkcml2ZXIgYmVjb21lcyBvYnNvbHRlIGJ5CiBhZGRpbmcgc3VwcG9ydCBmb3IgSGVybWVzIElJIGFuZCBIZXJtZXMgSUkuNSBjYXJkcyB0byB0aGUgZXhpc3Rpbmcgb3Jpbm9jbwogZHJpdmVyLiBUaGUgb3Jpbm9jbyBkcml2ZXIgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgSGVybWVzIEkgYmFzZWQgY2FyZHMuCi1TaW5jZSB0aGlzIHdpbGwgbm90IGhhcHBlbiBieSBtYWdpYyBhbmQgaGFzIG5vdCBoYXBwZW5kIHVudGlsIG5vdyB0aGlzCitTaW5jZSB0aGlzIHdpbGwgbm90IGhhcHBlbiBieSBtYWdpYyBhbmQgaGFzIG5vdCBoYXBwZW5lZCB1bnRpbCBub3cgdGhpcwogZHJpdmVyIHByb3ZpZGVzIGEgc3RvcC1nYXAgc29sdXRpb24gZm9yIHRoZXNlIHR5cGUgb2YgY2FyZHMuCiAKIEhhdmluZyBzYWlkIHRoYXQsIHRoZSBmb2xsb3dpbmcgd2lzaGxpc3QgY29tZXMgdG8gbWluZCB0byBtYWtlIHRoZSBkcml2ZXIKQEAgLTE4LDcgKzE4LDcgQEAKIAktIHRoZSBkcml2ZXIgaXMgc3BsaXQgaW50byBhIEhlcm1lcyBJSSBhbmQgYSBIZXJtZXMgSUkuNSBwYXJ0LCBpdAogCSAgd291bGQgYmUgbmljZSB0byBoYW5kbGUgYm90aCB3aXRoIG9uZSBtb2R1bGUgaW5zdGVhZCBvZiB0d28KIAktIHJldmlldyBieSB0aGUgd2lyZWxlc3MgZGV2ZWxvcGVyIGNvbW11bml0eQotCS0gdmVyaWZ5IHRoZSBjb2RlIGFnYWluc3QgdGhlIGNvZGluZyBzdGFuZGFyZHMgZm9yIGEgcHJvcHBlciBsaW51eAorCS0gdmVyaWZ5IHRoZSBjb2RlIGFnYWluc3QgdGhlIGNvZGluZyBzdGFuZGFyZHMgZm9yIGEgcHJvcGVyIGxpbnV4CiAJICBkcml2ZXIKIAktIHJlc29sdmUgbGljZW5zZSBpc3N1ZXMgKD8pCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMnN0YS5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yc3RhLmMKaW5kZXggZWQ3NTFmNC4uMjFmMjVhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yc3RhLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yc3RhLmMKQEAgLTE5NzYsNyArMTk3Niw3IEBACiAKIAl3bGFuZGV2LT5uc2RjYXBzID0gUDgwMjExX05TRENBUF9IV0ZSQUdNRU5UIHwgUDgwMjExX05TRENBUF9BVVRPSk9JTjsKIAotCS8qIEluaXRpYWxpemUgdGhlIGRldmljZSBwcml2YXRlIGRhdGEgc3R1Y3R1cmUuICovCisJLyogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUuICovCiAJaHctPmRvdDExX2Rlc2lyZWRfYnNzX3R5cGUgPSAxOwogCiAJcmV0dXJuIHdsYW5kZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmJfc2V0bW9kZS5jIGIvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZiX3NldG1vZGUuYwppbmRleCA4NzYyYTUzLi45NjY5YzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmJfc2V0bW9kZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Yl9zZXRtb2RlLmMKQEAgLTc4MzQsNyArNzgzNCw3IEBACiAJCQkJCQk9PSA2MDApKSB7CiAJCQlpbmRleCsrOwogCQl9Ci0JCS8qIEFsYW4gMTAvMTkvMjAwNzsgZG8gdGhlIHNpbWlsaWFyIGFkanVzdG1lbnQgbGlrZSBYR0lTZWFyY2hDUlQxUmF0ZSgpICovCisJCS8qIEFsYW4gMTAvMTkvMjAwNzsgZG8gdGhlIHNpbWlsYXIgYWRqdXN0bWVudCBsaWtlIFhHSVNlYXJjaENSVDFSYXRlKCkgKi8KIAkJaWYgKChwVkJJbmZvLT5SZWZJbmRleFtSZWZyZXNoUmF0ZVRhYmxlSW5kZXhdLlhSZXMgPT0gMTAyNCkKIAkJCQkmJiAocFZCSW5mby0+UmVmSW5kZXhbUmVmcmVzaFJhdGVUYWJsZUluZGV4XS5ZUmVzCiAJCQkJCQk9PSA3NjgpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmdhdHlwZXMuaCBiL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Z2F0eXBlcy5oCmluZGV4IDRiODc5NTEuLmQ2MTNlODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Z2F0eXBlcy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Z2F0eXBlcy5oCkBAIC04NSw3ICs4NSw3IEBACiAJCQkJCSAgICB1bnNpZ25lZCBsb25nICopOwogfTsKIAotLyogQWRkdGlvbmFsIElPQ1RMIGZvciBjb21tdW5pY2F0aW9uIHhnaWZiIDw+IFggZHJpdmVyICAgICAgICAqLworLyogQWRkaXRpb25hbCBJT0NUTCBmb3IgY29tbXVuaWNhdGlvbiB4Z2lmYiA8PiBYIGRyaXZlciAgICAgICAgKi8KIC8qIElmIGNoYW5naW5nIHRoaXMsIHhnaWZiLmggbXVzdCBhbHNvIGJlIGNoYW5nZWQgKGZvciB4Z2lmYikgKi8KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9hbHVhLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9hbHVhLmMKaW5kZXggMmM1ZmNmZS4uMzBjYmI3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfYWx1YS5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2FsdWEuYwpAQCAtNDk2LDggKzQ5Niw4IEBACiAJbm9ub3BfZGVsYXlfbXNlY3MgPSB0Z19wdF9ncC0+dGdfcHRfZ3Bfbm9ub3BfZGVsYXlfbXNlY3M7CiAJc3Bpbl91bmxvY2soJnRnX3B0X2dwX21lbS0+dGdfcHRfZ3BfbWVtX2xvY2spOwogCS8qCi0JICogUHJvY2VzcyBBTFVBX0FDQ0VTU19TVEFURV9BQ1RJVkVfT1BUTUlaRUQgaW4gYSBzZXBlcmF0ZSBjb25kaXRpb25hbAotCSAqIHN0YXRlbWVudCBzbyB0aGUgY29tcGxpZXIga25vd3MgZXhwbGljdGx5IHRvIGNoZWNrIHRoaXMgY2FzZSBmaXJzdC4KKwkgKiBQcm9jZXNzIEFMVUFfQUNDRVNTX1NUQVRFX0FDVElWRV9PUFRNSVpFRCBpbiBhIHNlcGFyYXRlIGNvbmRpdGlvbmFsCisJICogc3RhdGVtZW50IHNvIHRoZSBjb21waWxlciBrbm93cyBleHBsaWNpdGx5IHRvIGNoZWNrIHRoaXMgY2FzZSBmaXJzdC4KIAkgKiBGb3IgdGhlIE9wdGltaXplZCBBTFVBIGFjY2VzcyBzdGF0ZSBjYXNlLCB3ZSB3YW50IHRvIHByb2Nlc3MgdGhlCiAJICogaW5jb21pbmcgZmFicmljIGNtZCBBU0FQLi4KIAkgKi8KQEAgLTExNTcsNyArMTE1Nyw3IEBACiAJCXNwaW5fdW5sb2NrKCZsdV9ncC0+bHVfZ3BfbG9jayk7CiAJCS8qCiAJCSAqCi0JCSAqIGx1X2dwX21lbSBpcyBhc3NvaWNhdGVkIHdpdGggYSBzaW5nbGUKKwkJICogbHVfZ3BfbWVtIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZQogCQkgKiBzdHJ1Y3Qgc2VfZGV2aWNlLT5kZXZfYWx1YV9sdV9ncF9tZW0sIGFuZCBpcyByZWxlYXNlZCB3aGVuCiAJCSAqIHN0cnVjdCBzZV9kZXZpY2UgaXMgcmVsZWFzZWQgdmlhIGNvcmVfYWx1YV9mcmVlX2x1X2dwX21lbSgpLgogCQkgKgpAQCAtMTQyOSw3ICsxNDI5LDcgQEAKIAkJfQogCQlzcGluX3VubG9jaygmdGdfcHRfZ3AtPnRnX3B0X2dwX2xvY2spOwogCQkvKgotCQkgKiB0Z19wdF9ncF9tZW0gaXMgYXNzb2ljYXRlZCB3aXRoIGEgc2luZ2xlCisJCSAqIHRnX3B0X2dwX21lbSBpcyBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUKIAkJICogc2VfcG9ydC0+c2VwX2FsdWFfdGdfcHRfZ3BfbWVtLCBhbmQgaXMgcmVsZWFzZWQgdmlhCiAJCSAqIGNvcmVfYWx1YV9mcmVlX3RnX3B0X2dwX21lbSgpLgogCQkgKgpAQCAtMTk2Myw3ICsxOTYzLDcgQEAKIAkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IEVuYWJsaW5nIEFMVUEgRW11bGF0aW9uIGZvciBTUEMtMyIKIAkJCSIgZGV2aWNlXG4iLCBUUkFOU1BPUlQoZGV2KS0+bmFtZSk7CiAJCS8qCi0JCSAqIEFzc29pY2F0ZSB0aGlzIHN0cnVjdCBzZV9kZXZpY2Ugd2l0aCB0aGUgZGVmYXVsdCBBTFVBCisJCSAqIEFzc29jaWF0ZSB0aGlzIHN0cnVjdCBzZV9kZXZpY2Ugd2l0aCB0aGUgZGVmYXVsdCBBTFVBCiAJCSAqIExVTiBHcm91cC4KIAkJICovCiAJCWx1X2dwX21lbSA9IGNvcmVfYWx1YV9hbGxvY2F0ZV9sdV9ncF9tZW0oZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKaW5kZXggM2ZiOGUzMi4uZDI1ZTIwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMKQEAgLTM3MSw3ICszNzEsNyBAQAogCWlmICghKGVuYWJsZSkpIHsKIAkJLyoKIAkJICogZGV2ZS0+c2VfbHVuX2FjbCB3aWxsIGJlIE5VTEwgZm9yIGRlbW8tbW9kZSBjcmVhdGVkIExVTnMKLQkJICogdGhhdCBoYXZlIG5vdCBiZWVuIGV4cGxpY3RseSBjb25jZXJ0ZWQgdG8gTWFwcGVkTFVOcyAtPgorCQkgKiB0aGF0IGhhdmUgbm90IGJlZW4gZXhwbGljaXRseSBjb25jZXJ0ZWQgdG8gTWFwcGVkTFVOcyAtPgogCQkgKiBzdHJ1Y3Qgc2VfbHVuX2FjbCwgYnV0IHdlIHJlbW92ZSBkZXZlLT5hbHVhX3BvcnRfbGlzdCBmcm9tCiAJCSAqIHBvcnQtPnNlcF9hbHVhX2xpc3QuIFRoaXMgYWxzbyBtZWFucyB0aGF0IGFjdGl2ZSBVQXMgYW5kCiAJCSAqIE5vZGVBQ0wgY29udGV4dCBzcGVjaWZpYyBQUiBtZXRhZGF0YSBmb3IgZGVtby1tb2RlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfbGliLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfbGliLmMKaW5kZXggZDU3YWQ2Ny4uMWUxOTNmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX2xpYi5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19saWIuYwpAQCAtNDMzLDcgKzQzMyw3IEBACiAJCS8qCiAJCSAqIEdvIGFoZWFkIGFuZCBkbyB0aGUgbG93ZXIgY2FzZSBjb252ZXJzaW9uIG9mIHRoZSByZWNlaXZlZAogCQkgKiAxMiBBU0NJSSBjaGFyYWN0ZXJzIHJlcHJlc2VudGluZyB0aGUgSVNJRCBpbiB0aGUgVHJhbnNwb3J0SUQKLQkJICogZm9yIGNvbXBhcmlzaW9uIGFnYWluc3QgdGhlIHJ1bm5pbmcgaVNDU0kgc2Vzc2lvbidzIElTSUQgZnJvbQorCQkgKiBmb3IgY29tcGFyaXNvbiBhZ2FpbnN0IHRoZSBydW5uaW5nIGlTQ1NJIHNlc3Npb24ncyBJU0lEIGZyb20KIAkJICogaXNjc2lfdGFyZ2V0LmM6bGlvX3Nlc3NfZ2V0X2luaXRpYXRvcl9zaWQoKQogCQkgKi8KIAkJZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuYwppbmRleCAwMmY1NTNhLi4xNTBjNDMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9maWxlLmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jCkBAIC0xNTksNyArMTU5LDcgQEAKICNlbmRpZgogLyoJZmxhZ3MgfD0gT19ESVJFQ1Q7ICovCiAJLyoKLQkgKiBJZiBmZF9idWZmZXJlZF9pbz0xIGhhcyBub3QgYmVlbiBzZXQgZXhwbGljdGx5ICh0aGUgZGVmYXVsdCksCisJICogSWYgZmRfYnVmZmVyZWRfaW89MSBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY2l0bHkgKHRoZSBkZWZhdWx0KSwKIAkgKiB1c2UgT19TWU5DIHRvIGZvcmNlIEZJTEVJTyB3cml0ZXMgdG8gZGlzay4KIAkgKi8KIAlpZiAoIShmZF9kZXYtPmZiZF9mbGFncyAmIEZEQkRfVVNFX0JVRkZFUkVEX0lPKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3ByLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wci5jCmluZGV4IDI1MjFmNzUuLmE3OWY1MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3ByLmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfcHIuYwpAQCAtNDc4LDcgKzQ3OCw3IEBACiAJCWJyZWFrOwogCX0KIAkvKgotCSAqIENhc2Ugd2hlcmUgdGhlIENEQiBpcyBleHBsaWN0bHkgYWxsb3dlZCBpbiB0aGUgYWJvdmUgc3dpdGNoCisJICogQ2FzZSB3aGVyZSB0aGUgQ0RCIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBpbiB0aGUgYWJvdmUgc3dpdGNoCiAJICogc3RhdGVtZW50LgogCSAqLwogCWlmICghKHJldCkgJiYgIShvdGhlcl9jZGIpKSB7CkBAIC0zNzM1LDcgKzM3MzUsNyBAQAogCQlyZXR1cm4gUFlYX1RSQU5TUE9SVF9MVV9DT01NX0ZBSUxVUkU7CiAKIAlpZiAoY21kLT5kYXRhX2xlbmd0aCA8IDI0KSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIlNQQy1QUjogUmVjaWV2ZWQgUFIgT1VUIHBhcmFtZXRlciBsaXN0IgorCQlwcmludGsoS0VSTl9XQVJOSU5HICJTUEMtUFI6IFJlY2VpdmVkIFBSIE9VVCBwYXJhbWV0ZXIgbGlzdCIKIAkJCSIgbGVuZ3RoIHRvbyBzbWFsbDogJXVcbiIsIGNtZC0+ZGF0YV9sZW5ndGgpOwogCQlyZXR1cm4gUFlYX1RSQU5TUE9SVF9JTlZBTElEX1BBUkFNRVRFUl9MSVNUOwogCX0KQEAgLTM3NzgsNyArMzc3OCw3IEBACiAJICovCiAJaWYgKCEoc3BlY19pX3B0KSAmJiAoKGNkYlsxXSAmIDB4MWYpICE9IFBST19SRUdJU1RFUl9BTkRfTU9WRSkgJiYKIAkgICAgKGNtZC0+ZGF0YV9sZW5ndGggIT0gMjQpKSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIlNQQy1QUjogUmVjaWV2ZWQgUFIgT1VUIGlsbGVnYWwgcGFyYW1ldGVyIgorCQlwcmludGsoS0VSTl9XQVJOSU5HICJTUEMtUFI6IFJlY2VpdmVkIFBSIE9VVCBpbGxlZ2FsIHBhcmFtZXRlciIKIAkJCSIgbGlzdCBsZW5ndGg6ICV1XG4iLCBjbWQtPmRhdGFfbGVuZ3RoKTsKIAkJcmV0dXJuIFBZWF9UUkFOU1BPUlRfSU5WQUxJRF9QQVJBTUVURVJfTElTVDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV90cmFuc3BvcnQuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jCmluZGV4IGJmNmFhOGEuLjk1ODNiMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jCkBAIC03MTksNyArNzE5LDcgQEAKIAkJCWNtZC0+c2VfbHVuID0gTlVMTDsKIAkJCS8qCiAJCQkgKiBTb21lIGZhYnJpYyBtb2R1bGVzIGxpa2UgdGNtX2xvb3AgY2FuIHJlbGVhc2UKLQkJCSAqIHRoZWlyIGludGVybmFsbHkgYWxsb2NhdGVkIEkvTyByZWZyZW5jZSBub3cgYW5kCisJCQkgKiB0aGVpciBpbnRlcm5hbGx5IGFsbG9jYXRlZCBJL08gcmVmZXJlbmNlIG5vdyBhbmQKIAkJCSAqIHN0cnVjdCBzZV9jbWQgbm93LgogCQkJICovCiAJCQlpZiAoQ01EX1RGTyhjbWQpLT5jaGVja19zdG9wX2ZyZWUgIT0gTlVMTCkgewpAQCAtMjAyOSw3ICsyMDI5LDcgQEAKIAkgKiBJZiB0aGUgcmVjZWl2ZWQgQ0RCIGhhcyBhbGVhZHkgYmVlbiBBQk9SVEVEIGJ5IHRoZSBnZW5lcmljCiAJICogdGFyZ2V0IGVuZ2luZSwgd2Ugbm93IGNhbGwgdHJhbnNwb3J0X2NoZWNrX2Fib3J0ZWRfc3RhdHVzKCkKIAkgKiB0byBxdWV1ZSBhbnkgZGVsYXRlZCBUQVNLX0FCT1JURUQgc3RhdHVzIGZvciB0aGUgcmVjZWl2ZWQgQ0RCIHRvIHRoZQotCSAqIGZhYnJpYyBtb2R1bGUgYXMgd2UgYXJlIGV4cGVjdGluZyBubyBmdXRoZXIgaW5jb21pbmcgREFUQSBPVVQKKwkgKiBmYWJyaWMgbW9kdWxlIGFzIHdlIGFyZSBleHBlY3Rpbmcgbm8gZnVydGhlciBpbmNvbWluZyBEQVRBIE9VVAogCSAqIHNlcXVlbmNlcyBhdCB0aGlzIHBvaW50LgogCSAqLwogCWlmICh0cmFuc3BvcnRfY2hlY2tfYWJvcnRlZF9zdGF0dXMoY21kLCAxKSAhPSAwKQpAQCAtMjUwMSw3ICsyNTAxLDcgQEAKIAlpZiAoU0VfREVWKGNtZCktPmRldl90YXNrX2F0dHJfdHlwZSAhPSBTQU1fVEFTS19BVFRSX0VNVUxBVEVEKQogCQlyZXR1cm4gMTsKIAkvKgotCSAqIENoZWNrIGZvciB0aGUgZXhpc3RhbmNlIG9mIEhFQURfT0ZfUVVFVUUsIGFuZCBpZiB0cnVlIHJldHVybiAxCisJICogQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgSEVBRF9PRl9RVUVVRSwgYW5kIGlmIHRydWUgcmV0dXJuIDEKIAkgKiB0byBhbGxvdyB0aGUgcGFzc2VkIHN0cnVjdCBzZV9jbWQgbGlzdCBvZiB0YXNrcyB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuCiAJICovCiAJIGlmIChjbWQtPnNhbV90YXNrX2F0dHIgPT0gVEFTS19BVFRSX0hPUSkgewpAQCAtMjU0Nyw3ICsyNTQ3LDcgQEAKIAlpZiAoYXRvbWljX3JlYWQoJlNFX0RFVihjbWQpLT5kZXZfb3JkZXJlZF9zeW5jKSAhPSAwKSB7CiAJCS8qCiAJCSAqIE90aGVyd2lzZSwgYWRkIGNtZCB3LyB0YXNrcyB0byBkZWxheWVkIGNtZCBxdWV1ZSB0aGF0Ci0JCSAqIHdpbGwgYmUgZHJhaW5lZCB1cG9uIGNvbXBldGlvbiBvZiBIRUFEX09GX1FVRVVFIHRhc2suCisJCSAqIHdpbGwgYmUgZHJhaW5lZCB1cG9uIGNvbXBsZXRpb24gb2YgSEVBRF9PRl9RVUVVRSB0YXNrLgogCQkgKi8KIAkJc3Bpbl9sb2NrKCZTRV9ERVYoY21kKS0+ZGVsYXllZF9jbWRfbG9jayk7CiAJCWNtZC0+c2VfY21kX2ZsYWdzIHw9IFNDRl9ERUxBWUVEX0NNRF9GUk9NX1NBTV9BVFRSOwpAQCAtMjU4OSw3ICsyNTg5LDcgQEAKIAl9CiAJLyoKIAkgKiBDYWxsIHRyYW5zcG9ydF9jbWRfY2hlY2tfc3RvcCgpIHRvIHNlZSBpZiBhIGZhYnJpYyBleGNlcHRpb24KLQkgKiBoYXMgb2NjdXJlZCB0aGF0IHByZXZlbnRzIGV4ZWN1dGlvbi4KKwkgKiBoYXMgb2NjdXJyZWQgdGhhdCBwcmV2ZW50cyBleGVjdXRpb24uCiAJICovCiAJaWYgKCEodHJhbnNwb3J0X2NtZF9jaGVja19zdG9wKGNtZCwgMCwgVFJBTlNQT1JUX1BST0NFU1NJTkcpKSkgewogCQkvKgpAQCAtMzEwOSw3ICszMTA5LDcgQEAKIAlpZiAocmV0ICE9IDApIHsKIAkJY21kLT50cmFuc3BvcnRfd2FpdF9mb3JfdGFza3MgPSAmdHJhbnNwb3J0X25vcF93YWl0X2Zvcl90YXNrczsKIAkJLyoKLQkJICogU2V0IFNDU0kgYWRkaXRpb25hbCBzZW5zZSBjb2RlIChBU0MpIHRvICdMVU4gTm90IEFjY2Vzc2FibGUnOworCQkgKiBTZXQgU0NTSSBhZGRpdGlvbmFsIHNlbnNlIGNvZGUgKEFTQykgdG8gJ0xVTiBOb3QgQWNjZXNzaWJsZSc7CiAJCSAqIFRoZSBBTFVBIGFkZGl0aW9uYWwgc2Vuc2UgY29kZSBxdWFsaWZpZXIgKEFTQ1EpIGlzIGRldGVybWluZWQKIAkJICogYnkgdGhlIEFMVUEgcHJpbWFyeSBvciBzZWNvbmRhcnkgYWNjZXNzIHN0YXRlLi4KIAkJICovCkBAIC0zODY3LDcgKzM4NjcsNyBAQAogCQl9CiAJfQogCS8qCi0JICogQ2hlY2sgZm9yIGEgY2FsbGJhY2ssIHVzZWQgYnkgYW1vdW5nc3Qgb3RoZXIgdGhpbmdzCisJICogQ2hlY2sgZm9yIGEgY2FsbGJhY2ssIHVzZWQgYnkgYW1vbmdzdCBvdGhlciB0aGluZ3MKIAkgKiBYRFdSSVRFX1JFQURfMTAgZW11bGF0aW9uLgogCSAqLwogCWlmIChjbWQtPnRyYW5zcG9ydF9jb21wbGV0ZV9jYWxsYmFjaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3VhLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV91YS5jCmluZGV4IGEyZWYzNDYuLmRmMzU1MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3VhLmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdWEuYwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAJCX0KIAkJLyoKIAkJICogT3RoZXJ3aXNlIGZvciB0aGUgZGVmYXVsdCAwMGIsIHJlbGVhc2UgdGhlIFVOSVQgQVRURU5USU9OCi0JCSAqIGNvbmRpdGlvbi4gIFJldHVybiB0aGUgQVNDL0FTQ1Egb2YgdGhlIGhpZ2VzdCBwcmlvcml0eSBVQQorCQkgKiBjb25kaXRpb24uICBSZXR1cm4gdGhlIEFTQy9BU0NRIG9mIHRoZSBoaWdoZXN0IHByaW9yaXR5IFVBCiAJCSAqIChoZWFkIG9mIHRoZSBsaXN0KSBpbiB0aGUgb3V0Z29pbmcgQ0hFQ0tfQ09ORElUSU9OICsgc2Vuc2UuCiAJCSAqLwogCQlpZiAoaGVhZCkgewpAQCAtMzA0LDcgKzMwNCw3IEBACiAJICogbWF0Y2hpbmcgc3RydWN0IHNlX2x1bi4KIAkgKgogCSAqIE9uY2UgdGhlIHJldHVybmluZyBBU0MvQVNDUSB2YWx1ZXMgYXJlIHNldCwgd2UgZ28gYWhlYWQgYW5kCi0JICogcmVsZWFzZSBhbGwgb2YgdGhlIFVuaXQgQXR0ZW50aW9uIGNvbmRpdGlvbnMgZm9yIHRoZSBhc3NvaWNhdGVkCisJICogcmVsZWFzZSBhbGwgb2YgdGhlIFVuaXQgQXR0ZW50aW9uIGNvbmRpdGlvbnMgZm9yIHRoZSBhc3NvY2lhdGVkCiAJICogc3RydWN0IHNlX2x1bi4KIAkgKi8KIAlzcGluX2xvY2soJmRldmUtPnVhX2xvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmMgYi9kcml2ZXJzL3RlbGVwaG9ueS9peGouYwppbmRleCBiMDAxMDE5Li5kNWY5MjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RlbGVwaG9ueS9peGouYworKysgYi9kcml2ZXJzL3RlbGVwaG9ueS9peGouYwpAQCAtMTY5LDcgKzE2OSw3IEBACiAgKiBBZGRlZCBzdXBwb3J0IGZvciBMaW51eCAyLjQueCBrZXJuZWxzLgogICoKICAqIFJldmlzaW9uIDMuNzcgIDIwMDEvMDEvMDkgMDQ6MDA6NTIgIGVva2Vyc29uCi0gKiBMaW5ldGVzdCB3aWxsIG5vdyB0ZXN0IHRoZSBsaW5lLCBldmVuIGlmIGl0IGhhcyBwcmV2aW91c2x5IHN1Y2NlZGVkLgorICogTGluZXRlc3Qgd2lsbCBub3cgdGVzdCB0aGUgbGluZSwgZXZlbiBpZiBpdCBoYXMgcHJldmlvdXNseSBzdWNjZWVkZWQuCiAgKgogICogUmV2aXNpb24gMy43NiAgMjAwMS8wMS8wOCAxOToyNzowMCAgZW9rZXJzb24KICAqIEZpeGVkIHByb2JsZW0gd2l0aCBzdGFuZGFyZCBjYWJsZSBvbiBJbnRlcm5ldCBQaG9uZUNBUkQuCkBAIC0zNTIsNyArMzUyLDcgQEAKIAkJfSBlbHNlIHsKIAkJCWotPmZza3NpemUgPSA4MDAwOwogCQkJaWYoaXhqZGVidWcgJiAweDAyMDApIHsKLQkJCQlwcmludGsoIklYSiBwaG9uZSVkIC0gYWxsb2NhdGUgc3VjY2VkZWRcbiIsIGotPmJvYXJkKTsKKwkJCQlwcmludGsoIklYSiBwaG9uZSVkIC0gYWxsb2NhdGUgc3VjY2VlZGVkXG4iLCBqLT5ib2FyZCk7CiAJCQl9CiAJCX0KIAl9CkBAIC00ODcsNyArNDg3LDcgQEAKIDgtOQkJSGFyZHdhcmUgU3RhdHVzIFJlZ2lzdGVyCQkJUmVhZCBPbmx5CiBBLUIJCUhhcmR3YXJlIENvbnRyb2wgUmVnaXN0ZXIJCQlSZWFkIFdyaXRlCiBDLUQgSG9zdCBUcmFuc21pdCAoV3JpdGUpIERhdGEgQnVmZmVyIEFjY2VzcyBQb3J0IChidWZmZXIgaW5wdXQpV3JpdGUgT25seQotRS1GIEhvc3QgUmVjaWV2ZSAoUmVhZCkgRGF0YSBCdWZmZXIgQWNjZXNzIFBvcnQgKGJ1ZmZlciBpbnB1dCkJUmVhZCBPbmx5CitFLUYgSG9zdCBSZWNlaXZlIChSZWFkKSBEYXRhIEJ1ZmZlciBBY2Nlc3MgUG9ydCAoYnVmZmVyIGlucHV0KQlSZWFkIE9ubHkKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIGlubGluZSB2b2lkIGl4al9yZWFkX0hTUihJWEogKmopCkBAIC00MTk1LDcgKzQxOTUsNyBAQAogCQkJaXhqX1dyaXRlRFNQQ29tbWFuZCgweEUzMzgsIGopOwkvKiBTZXQgRWNobyBTdXBwcmVzc2VyIEF0dGVudWF0aW9uIHRvIDBkQiAqLwogCiAJCQkvKiBOb3cgd2UgY2FuIHNldCB0aGUgQUdDIGluaXRpYWwgcGFyYW1ldGVycyBhbmQgdHVybiBpdCBvbiAqLwotCQkJaXhqX1dyaXRlRFNQQ29tbWFuZCgweENGOTAsIGopOwkvKiBTZXQgQUdDIE1pbnVtdW0gZ2FpbiAqLworCQkJaXhqX1dyaXRlRFNQQ29tbWFuZCgweENGOTAsIGopOwkvKiBTZXQgQUdDIE1pbmltdW0gZ2FpbiAqLwogCQkJaXhqX1dyaXRlRFNQQ29tbWFuZCgweDAwMjAsIGopOwkvKiB0byAwLjEyNSAoLTE4ZEIpICovCiAJCiAJCQlpeGpfV3JpdGVEU1BDb21tYW5kKDB4Q0Y5MSwgaik7CS8qIFNldCBBR0MgTWF4aW11bSBnYWluICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RlbGVwaG9ueS9peGouaCBiL2RyaXZlcnMvdGVsZXBob255L2l4ai5oCmluZGV4IDRjMzJhNDMuLjJjODQxMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGVsZXBob255L2l4ai5oCisrKyBiL2RyaXZlcnMvdGVsZXBob255L2l4ai5oCkBAIC0xMTQ5LDcgKzExNDksNyBAQAogCXVuc2lnbmVkIGludCBmaXJzdHJpbmc6MTsgLyogRmlyc3QgcmluZyBjYWRlbmNlIGlzIGNvbXBsZXRlICovCiAJdW5zaWduZWQgaW50IHBzdG5jaGVjazoxOwkvKiBDdXJyZW50bHkgY2hlY2tpbmcgdGhlIFBTVE4gTGluZSAqLwogCXVuc2lnbmVkIGludCBwc3RuX3JtcjoxOwotCXVuc2lnbmVkIGludCB4OjM7CS8qIHVuc2VkIGJpdHMgKi8KKwl1bnNpZ25lZCBpbnQgeDozOwkvKiB1bnVzZWQgYml0cyAqLwogCiB9IElYSl9GTEFHUzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvaHZjL2h2Y19pdWN2LmMgYi9kcml2ZXJzL3R0eS9odmMvaHZjX2l1Y3YuYwppbmRleCBjMzQyNWJiLi5iNmY3ZDUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9odmMvaHZjX2l1Y3YuYworKysgYi9kcml2ZXJzL3R0eS9odmMvaHZjX2l1Y3YuYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAJCWRlZmF1bHQ6CiAJCQl3cml0dGVuID0gLUVJTzsKIAkJfQotCQkvKiByZW1vdmUgYnVmZmVyIGlmIGFuIGVycm9yIGhhcyBvY2N1cmVkIG9yIHJlY2VpdmVkIGRhdGEKKwkJLyogcmVtb3ZlIGJ1ZmZlciBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQgb3IgcmVjZWl2ZWQgZGF0YQogCQkgKiBpcyBub3QgY29ycmVjdCAqLwogCQlpZiAocmMgfHwgKHJiLT5tYnVmLT52ZXJzaW9uICE9IE1TR19WRVJTSU9OKSB8fAogCQkJICAocmItPm1zZy5sZW5ndGggICAgIT0gTVNHX1NJWkUocmItPm1idWYtPmRhdGFsZW4pKSkKQEAgLTYyMCw3ICs2MjAsNyBAQAogICoJCXRoZSBpbmRleCBvZiBhbiBzdHJ1Y3QgaHZjX2l1Y3ZfcHJpdmF0ZSBpbnN0YW5jZS4KICAqCiAgKiBUaGlzIHJvdXRpbmUgbm90aWZpZXMgdGhlIEhWQyBiYWNrLWVuZCB0aGF0IGEgdHR5IGhhbmd1cCAoY2FycmllciBsb3NzLAotICogdmlydHVhbCBvciBvdGhlcndpc2UpIGhhcyBvY2N1cmVkLgorICogdmlydHVhbCBvciBvdGhlcndpc2UpIGhhcyBvY2N1cnJlZC4KICAqIFRoZSB6L1ZNIElVQ1YgSFZDIGRldmljZSBkcml2ZXIgaWdub3JlcyB2aXJ0dWFsIGhhbmd1cHMgKHZoYW5ndXAoKSkKICAqIHRvIGtlZXAgYW4gZXhpc3RpbmcgSVVDViBjb21tdW5pY2F0aW9uIHBhdGggZXN0YWJsaXNoZWQuCiAgKiAoQmFja2dyb3VuZDogdmhhbmd1cCgpIGlzIGNhbGxlZCBmcm9tIHVzZXIgc3BhY2UgKGJ5IGdldHR5IG9yIGxvZ2luKSB0bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvaHZjL2h2Y192aW8uYyBiL2RyaXZlcnMvdHR5L2h2Yy9odmNfdmlvLmMKaW5kZXggNWUyZjUyYi4uZTZlZWExNCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvaHZjL2h2Y192aW8uYworKysgYi9kcml2ZXJzL3R0eS9odmMvaHZjX3Zpby5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIHZpbyBkcml2ZXIgaW50ZXJmYWNlIHRvIGh2Y19jb25zb2xlLmMKICAqCi0gKiBUaGlzIGNvZGUgd2FzIG1vdmVkIGhlcmUgdG8gYWxsb3cgdGhlIHJlbWFpbmcgY29kZSB0byBiZSByZXVzZWQgYXMgYQorICogVGhpcyBjb2RlIHdhcyBtb3ZlZCBoZXJlIHRvIGFsbG93IHRoZSByZW1haW5pbmcgY29kZSB0byBiZSByZXVzZWQgYXMgYQogICogZ2VuZXJpYyBwb2xsaW5nIG1vZGUgd2l0aCBzZW1pLXJlbGlhYmxlIHRyYW5zcG9ydCBkcml2ZXIgY29yZSB0byB0aGUKICAqIGNvbnNvbGUgYW5kIHR0eSBzdWJzeXN0ZW1zLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L2h2Yy9odmNzLmMgYi9kcml2ZXJzL3R0eS9odmMvaHZjcy5jCmluZGV4IGJlZjIzOGYuLjRjOGI2NjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9odmMvaHZjcy5jCisrKyBiL2RyaXZlcnMvdHR5L2h2Yy9odmNzLmMKQEAgLTExOCw3ICsxMTgsNyBAQAogICogYXJjaC9wb3dlcmVwYy9pbmNsdWRlL2FzbS9odmNzZXJ2ZXIuaAogICoKICAqIDEuMy4yIC0+IDEuMy4zIFJlcGxhY2VkIHlpZWxkKCkgaW4gaHZjc19jbG9zZSgpIHdpdGggdHR5X3dhaXRfdW50aWxfc2VudCgpIHRvCi0gKiBwcmV2ZW50IHBvc3NpYmxlIGxvY2t1cCB3aXRoIHJlYWx0aW1lIHNjaGVkdWxpbmcgYXMgc2ltaWxhcmlseSBwb2ludGVkIG91dCBieQorICogcHJldmVudCBwb3NzaWJsZSBsb2NrdXAgd2l0aCByZWFsdGltZSBzY2hlZHVsaW5nIGFzIHNpbWlsYXJseSBwb2ludGVkIG91dCBieQogICogYWtwbSBpbiBodmNfY29uc29sZS4gIENoYW5nZWQgcmVzdWx0ZWQgaW4gdGhlIHJlbW92YWwgb2YgaHZjc19maW5hbF9jbG9zZSgpCiAgKiB0byByZW9yZGVyIGNsZWFudXAgb3BlcmF0aW9ucyBhbmQgcHJldmVudCBkaXNjYXJkaW5nIG9mIHBlbmRpbmcgZGF0YSBkdXJpbmcKICAqIGFuIGh2Y3NfY2xvc2UoKS4gIFJlbW92ZWQgc3BpbmxvY2sgcHJvdGVjdGlvbiBvZiBodmNzX3N0cnVjdCBkYXRhIG1lbWJlcnMgaW4KQEAgLTU4MSw3ICs1ODEsNyBAQAogCQkJLyoKIAkJCSAqIFdlIGFyZSBzdGlsbCBvYmxpZ2F0ZWQgdG8gZGVsaXZlciB0aGUgZGF0YSB0byB0aGUKIAkJCSAqIGh5cGVydmlzb3IgZXZlbiBpZiB0aGUgdHR5IGhhcyBiZWVuIGNsb3NlZCBiZWNhdXNlCi0JCQkgKiB3ZSBjb21taXRlZCB0byBkZWxpdmVyaW5nIGl0LiAgQnV0IGRvbid0IHRyeSB0byB3YWtlCisJCQkgKiB3ZSBjb21taXR0ZWQgdG8gZGVsaXZlcmluZyBpdC4gIEJ1dCBkb24ndCB0cnkgdG8gd2FrZQogCQkJICogYSBub24tZXhpc3RlbnQgdHR5LgogCQkJICovCiAJCQlpZiAodHR5KSB7CkBAIC0xMzQ5LDcgKzEzNDksNyBAQAogCXNwaW5fbG9ja19pcnFzYXZlKCZodmNzZC0+bG9jaywgZmxhZ3MpOwogCiAJLyoKLQkgKiBTb21laG93IGFuIG9wZW4gc3VjY2VkZGVkIGJ1dCB0aGUgZGV2aWNlIHdhcyByZW1vdmVkIG9yIHRoZQorCSAqIFNvbWVob3cgYW4gb3BlbiBzdWNjZWVkZWQgYnV0IHRoZSBkZXZpY2Ugd2FzIHJlbW92ZWQgb3IgdGhlCiAJICogY29ubmVjdGlvbiB0ZXJtaW5hdGVkIGJldHdlZW4gdGhlIHZ0eS1zZXJ2ZXIgYW5kIHBhcnRuZXIgdnR5IGR1cmluZwogCSAqIHRoZSBtaWRkbGUgb2YgYSB3cml0ZSBvcGVyYXRpb24/ICBUaGlzIGlzIGEgY3J1bW15IHBsYWNlIHRvIGRvIHRoaXMKIAkgKiBidXQgd2Ugd2FudCB0byBrZWVwIGl0IGFsbCBpbiB0aGUgc3BpbmxvY2suCkBAIC0xNDIwLDcgKzE0MjAsNyBAQAogfQogCiAvKgotICogVGhpcyBpcyByZWFsbHkgYXNraW5nIGhvdyBtdWNoIGNhbiB3ZSBndWFyZW50ZWUgdGhhdCB3ZSBjYW4gc2VuZCBvciB0aGF0IHdlCisgKiBUaGlzIGlzIHJlYWxseSBhc2tpbmcgaG93IG11Y2ggY2FuIHdlIGd1YXJhbnRlZSB0aGF0IHdlIGNhbiBzZW5kIG9yIHRoYXQgd2UKICAqIGFic29sdXRlbHkgV0lMTCBCVUZGRVIgaWYgd2UgY2FuJ3Qgc2VuZCBpdC4gIFRoaXMgZHJpdmVyIE1VU1QgaG9ub3IgdGhlCiAgKiByZXR1cm4gdmFsdWUsIGhlbmNlIHRoZSByZWFzb24gZm9yIGh2Y3Nfc3RydWN0IGJ1ZmZlcmluZy4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbXhzZXIuaCBiL2RyaXZlcnMvdHR5L214c2VyLmgKaW5kZXggNDE4NzhhNi4uMGJmNzk0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvbXhzZXIuaAorKysgYi9kcml2ZXJzL3R0eS9teHNlci5oCkBAIC0xMTMsNyArMTEzLDcgQEAKICNkZWZpbmUgTU9YQV9NVVNUX0lJUl9SVE8JCTB4MEMKICNkZWZpbmUgTU9YQV9NVVNUX0lJUl9MU1IJCTB4MDYKIAotLyogcmVjaWV2ZWQgWG9uL1hvZmYgb3Igc3BlY2ljYWwgaW50ZXJydXB0IHBlbmRpbmcgKi8KKy8qIHJlY2VpdmVkIFhvbi9Yb2ZmIG9yIHNwZWNpY2FsIGludGVycnVwdCBwZW5kaW5nICovCiAjZGVmaW5lIE1PWEFfTVVTVF9JSVJfWFNDCQkweDEwCiAKIC8qIFJUUy9DVFMgY2hhbmdlIHN0YXRlIGludGVycnVwdCBwZW5kaW5nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9uX2dzbS5jIGIvZHJpdmVycy90dHkvbl9nc20uYwppbmRleCAxNzZmNjMyLi40N2Y4Y2RiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9uX2dzbS5jCisrKyBiL2RyaXZlcnMvdHR5L25fZ3NtLmMKQEAgLTc0LDcgKzc0LDcgQEAKICNlbmRpZgogCiAvKgotICogU2VtaS1hcmJpdGFyeSBidWZmZXIgc2l6ZSBsaW1pdHMuIDA3MTAgaXMgbm9ybWFsbHkgcnVuIHdpdGggMzItNjQgYnl0ZQorICogU2VtaS1hcmJpdHJhcnkgYnVmZmVyIHNpemUgbGltaXRzLiAwNzEwIGlzIG5vcm1hbGx5IHJ1biB3aXRoIDMyLTY0IGJ5dGUKICAqIGxpbWl0cyBzbyB0aGlzIGlzIHBsZW50eQogICovCiAjZGVmaW5lIE1BWF9NUlUgNTEyCkBAIC04Miw3ICs4Miw3IEBACiAKIC8qCiAgKglFYWNoIGJsb2NrIG9mIGRhdGEgd2UgaGF2ZSBxdWV1ZWQgdG8gZ28gb3V0IGlzIGluIHRoZSBmb3JtIG9mCi0gKglhIGdzbV9tc2cgd2hpY2ggaG9sZHMgZXZlcnl0aGluZyB3ZSBuZWVkIGluIGEgbGluayBsYXllciBpbmRlcGVuZGFudAorICoJYSBnc21fbXNnIHdoaWNoIGhvbGRzIGV2ZXJ5dGhpbmcgd2UgbmVlZCBpbiBhIGxpbmsgbGF5ZXIgaW5kZXBlbmRlbnQKICAqCWZvcm1hdAogICovCiAKQEAgLTExOTMsOCArMTE5Myw4IEBACiAJCWJyZWFrOwogCQkvKiBPcHRpb25hbCB1bnN1cHBvcnRlZCBjb21tYW5kcyAqLwogCWNhc2UgQ01EX1BOOgkvKiBQYXJhbWV0ZXIgbmVnb3RpYXRpb24gKi8KLQljYXNlIENNRF9SUE46CS8qIFJlbW90ZSBwb3J0IG5lZ290YXRpb24gKi8KLQljYXNlIENNRF9TTkM6CS8qIFNlcnZpY2UgbmVnb3RhdGlvbiBjb21tYW5kICovCisJY2FzZSBDTURfUlBOOgkvKiBSZW1vdGUgcG9ydCBuZWdvdGlhdGlvbiAqLworCWNhc2UgQ01EX1NOQzoJLyogU2VydmljZSBuZWdvdGlhdGlvbiBjb21tYW5kICovCiAJZGVmYXVsdDoKIAkJLyogUmVwbHkgdG8gYmFkIGNvbW1hbmRzIHdpdGggYW4gTlNDICovCiAJCWJ1ZlswXSA9IGNvbW1hbmQ7CkBAIC0yMDI2LDcgKzIwMjYsNyBAQAogICoJQG11eDogbXV4IHRvIGZyZWUKICAqCiAgKglEaXNwb3NlIG9mIGFsbG9jYXRlZCByZXNvdXJjZXMgZm9yIGEgZGVhZCBtdXguIE5vIHJlZmNvdW50aW5nCi0gKglhdCBwcmVzZW50IHNvIHRoZSBtdXggbXVzdCBiZSB0cnVlbHkgZGVhZC4KKyAqCWF0IHByZXNlbnQgc28gdGhlIG11eCBtdXN0IGJlIHRydWx5IGRlYWQuCiAgKi8KIHZvaWQgZ3NtX2ZyZWVfbXV4KHN0cnVjdCBnc21fbXV4ICpnc20pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9ub3pvbWkuYyBiL2RyaXZlcnMvdHR5L25vem9taS5jCmluZGV4IGY0ZjExMTYuLmZkMGE5ODUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9ub3pvbWkuYworKysgYi9kcml2ZXJzL3R0eS9ub3pvbWkuYwpAQCAtMTY3Myw3ICsxNjczLDcgQEAKIAogLyoKICAqIGNhbGxlZCB3aGVuIHRoZSB1c2Vyc3BhY2UgcHJvY2VzcyB3cml0ZXMgdG8gdGhlIHR0eSAoL2Rldi9ub3oqKS4KLSAqIERhdGEgaXMgaW5zZXJ0ZWQgaW50byBhIGZpZm8sIHdoaWNoIGlzIHRoZW4gcmVhZCBhbmQgdHJhbnNmZXJlZCB0byB0aGUgbW9kZW0uCisgKiBEYXRhIGlzIGluc2VydGVkIGludG8gYSBmaWZvLCB3aGljaCBpcyB0aGVuIHJlYWQgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBtb2RlbS4KICAqLwogc3RhdGljIGludCBudHR5X3dyaXRlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwKIAkJICAgICAgaW50IGNvdW50KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvcm9ja2V0LmMgYi9kcml2ZXJzL3R0eS9yb2NrZXQuYwppbmRleCAzNzgwZGE4Li4wMzZmZWViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9yb2NrZXQuYworKysgYi9kcml2ZXJzL3R0eS9yb2NrZXQuYwpAQCAtMjA2MCw3ICsyMDYwLDcgQEAKIAkJCXNDbG9ja1ByZXNjYWxlID0gMHgxOTsKIAkJCXJwX2JhdWRfYmFzZVtpXSA9IDIzMDQwMDsKIAkJfSBlbHNlIHsKLQkJCS8qIG1vZCA0IChkZXZpZGUgYnkgNSkgcHJlc2NhbGUgKi8KKwkJCS8qIG1vZCA0IChkaXZpZGUgYnkgNSkgcHJlc2NhbGUgKi8KIAkJCXNDbG9ja1ByZXNjYWxlID0gMHgxNDsKIAkJCXJwX2JhdWRfYmFzZVtpXSA9IDQ2MDgwMDsKIAkJfQpAQCAtMjE4Myw3ICsyMTgzLDcgQEAKIAkJc0Nsb2NrUHJlc2NhbGUgPSAweDE5OwkvKiBtb2QgOSAoZGl2aWRlIGJ5IDEwKSBwcmVzY2FsZSAqLwogCQlycF9iYXVkX2Jhc2VbaV0gPSAyMzA0MDA7CiAJfSBlbHNlIHsKLQkJc0Nsb2NrUHJlc2NhbGUgPSAweDE0OwkvKiBtb2QgNCAoZGV2aWRlIGJ5IDUpIHByZXNjYWxlICovCisJCXNDbG9ja1ByZXNjYWxlID0gMHgxNDsJLyogbW9kIDQgKGRpdmlkZSBieSA1KSBwcmVzY2FsZSAqLwogCQlycF9iYXVkX2Jhc2VbaV0gPSA0NjA4MDA7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MC5jIGIvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAuYwppbmRleCBiM2I4ODFiLi42NjExNTM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MC5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLmMKQEAgLTE2MjksNyArMTYyOSw3IEBACiAJCQkgICAgdXAtPnBvcnQuaW90eXBlID09IFVQSU9fRFdBUEIzMikgJiYKIAkJCSAgKGlpciAmIFVBUlRfSUlSX0JVU1kpID09IFVBUlRfSUlSX0JVU1kpIHsKIAkJCS8qIFRoZSBEZXNpZ25XYXJlIEFQQiBVQVJUIGhhcyBhbiBCdXN5IERldGVjdCAoMHgwNykKLQkJCSAqIGludGVycnVwdCBtZWFuaW5nIGFuIExDUiB3cml0ZSBhdHRlbXB0IG9jY3VyZWQgd2hpbGUgdGhlCisJCQkgKiBpbnRlcnJ1cHQgbWVhbmluZyBhbiBMQ1Igd3JpdGUgYXR0ZW1wdCBvY2N1cnJlZCB3aGlsZSB0aGUKIAkJCSAqIFVBUlQgd2FzIGJ1c3kuIFRoZSBpbnRlcnJ1cHQgbXVzdCBiZSBjbGVhcmVkIGJ5IHJlYWRpbmcKIAkJCSAqIHRoZSBVQVJUIHN0YXR1cyByZWdpc3RlciAoVVNSKSBhbmQgdGhlIExDUiByZS13cml0dGVuLiAqLwogCQkJdW5zaWduZWQgaW50IHN0YXR1czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jIGIvZHJpdmVycy90dHkvc2VyaWFsLzgyNTBfcGNpLmMKaW5kZXggOGI4OTMwZi4uNzM4Y2VjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsLzgyNTBfcGNpLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsLzgyNTBfcGNpLmMKQEAgLTQzMyw3ICs0MzMsNyBAQAogLyoKICAqIFNJSUcgc2VyaWFsIGNhcmRzIGhhdmUgYW4gUENJIGludGVyZmFjZSBjaGlwIHdoaWNoIGFsc28gY29udHJvbHMKICAqIHRoZSBVQVJUIGNsb2NraW5nIGZyZXF1ZW5jeS4gRWFjaCBVQVJUIGNhbiBiZSBjbG9ja2VkIGluZGVwZW5kZW50bHkKLSAqIChleGNlcHQgY2FyZHMgZXF1aXBlZCB3aXRoIDQgVUFSVHMpIGFuZCBpbml0aWFsIGNsb2NraW5nIHNldHRpbmdzCisgKiAoZXhjZXB0IGNhcmRzIGVxdWlwcGVkIHdpdGggNCBVQVJUcykgYW5kIGluaXRpYWwgY2xvY2tpbmcgc2V0dGluZ3MKICAqIGFyZSBzdG9yZWQgaW4gdGhlIEVFUFJPTSBjaGlwLiBJdCBjYW4gY2F1c2UgcHJvYmxlbXMgYmVjYXVzZSB0aGlzCiAgKiB2ZXJzaW9uIG9mIHNlcmlhbCBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IGRpZmZlcmVudGx5IGNsb2NrZWQgVUFSVCdzCiAgKiBvbiBzaW5nbGUgUENJIGNhcmQuIFRvIHByZXZlbnQgdGhpcywgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIHNldApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2FtYmEtcGwwMTEuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9hbWJhLXBsMDExLmMKaW5kZXggNTc3MzFlOC4uNmRlZWU0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL2FtYmEtcGwwMTEuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvYW1iYS1wbDAxMS5jCkBAIC01MjAsNyArNTIwLDcgQEAKIAogCS8qCiAJICogV2UgZG9uJ3QgaGF2ZSBhIFRYIGJ1ZmZlciBxdWV1ZWQsIHNvIHRyeSB0byBxdWV1ZSBvbmUuCi0JICogSWYgd2Ugc3VjY2VzZnVsbHkgcXVldWVkIGEgYnVmZmVyLCBtYXNrIHRoZSBUWCBJUlEuCisJICogSWYgd2Ugc3VjY2Vzc2Z1bGx5IHF1ZXVlZCBhIGJ1ZmZlciwgbWFzayB0aGUgVFggSVJRLgogCSAqLwogCWlmIChwbDAxMV9kbWFfdHhfcmVmaWxsKHVhcCkgPiAwKSB7CiAJCXVhcC0+aW0gJj0gflVBUlQwMTFfVFhJTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pY29tLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaWNvbS5jCmluZGV4IDUzYTQ2ODIuLjhhODY5ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pY29tLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2ljb20uYwpAQCAtMTI0OCw3ICsxMjQ4LDcgQEAKIAkJfQogCX0KIAotCS8qIEVuYWJsZSBUcmFuc21pdHRlciBhbmQgUmVjaWV2ZXIgKi8KKwkvKiBFbmFibGUgVHJhbnNtaXR0ZXIgYW5kIFJlY2VpdmVyICovCiAJb2Zmc2V0ID0KIAkgICAgKHVuc2lnbmVkIGxvbmcpICZJQ09NX1BPUlQtPnN0YXRTdGctPnJjdlswXSAtCiAJICAgICh1bnNpZ25lZCBsb25nKSBJQ09NX1BPUlQtPnN0YXRTdGc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvaW14LmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaW14LmMKaW5kZXggZGZjZjRiMS4uY2IzNmIwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9pbXguYwpAQCAtNzgsNyArNzgsNyBAQAogI2RlZmluZSAgVVJYRF9GUk1FUlIgICAgICgxPDwxMikKICNkZWZpbmUgIFVSWERfQlJLICAgICAgICAoMTw8MTEpCiAjZGVmaW5lICBVUlhEX1BSRVJSICAgICAgKDE8PDEwKQotI2RlZmluZSAgVUNSMV9BREVOICAgICAgICgxPDwxNSkgLyogQXV0byBkZWN0ZWN0IGludGVycnVwdCAqLworI2RlZmluZSAgVUNSMV9BREVOICAgICAgICgxPDwxNSkgLyogQXV0byBkZXRlY3QgaW50ZXJydXB0ICovCiAjZGVmaW5lICBVQ1IxX0FEQlIgICAgICAgKDE8PDE0KSAvKiBBdXRvIGRldGVjdCBiYXVkIHJhdGUgKi8KICNkZWZpbmUgIFVDUjFfVFJEWUVOICAgICAoMTw8MTMpIC8qIFRyYW5zbWl0dGVyIHJlYWR5IGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgIFVDUjFfSURFTiAgICAgICAoMTw8MTIpIC8qIElkbGUgY29uZGl0aW9uIGludGVycnVwdCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2lwMjJ6aWxvZy5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2lwMjJ6aWxvZy5jCmluZGV4IGViZmY0YTEuLjdiMWNkYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaXAyMnppbG9nLmMKQEAgLTM3NSw3ICszNzUsNyBAQAogCQkgKiBiZSBuaWNlIHRvIHRyYW5zbWl0IGNvbnNvbGUgd3JpdGVzIGp1c3QgbGlrZSB3ZSBub3JtYWxseSB3b3VsZCBmb3IKIAkJICogYSBUVFkgbGluZS4gKGllLiBidWZmZXJlZCBhbmQgVFggaW50ZXJydXB0IGRyaXZlbikuICBUaGF0IGlzIG5vdAogCQkgKiBlYXN5IGJlY2F1c2UgY29uc29sZSB3cml0ZXMgY2Fubm90IHNsZWVwLiAgT25lIHNvbHV0aW9uIG1pZ2h0IGJlCi0JCSAqIHRvIHBvbGwgb24gZW5vdWdoIHBvcnQtPnhtaXQgc3BhY2UgYmVjb21taW5nIGZyZWUuICAtRGF2ZU0KKwkJICogdG8gcG9sbCBvbiBlbm91Z2ggcG9ydC0+eG1pdCBzcGFjZSBiZWNvbWluZyBmcmVlLiAgLURhdmVNCiAJCSAqLwogCQlpZiAoIShzdGF0dXMgJiBUeF9CVUZfRU1QKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtLmggYi9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbS5oCmluZGV4IDM4YTUwOWMuLmI3MDRjOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtLmgKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2pzbS9qc20uaApAQCAtMjczLDcgKzI3Myw3IEBACiAJIHU4IGZjdHI7CQkvKiBXUglGQ1RSIC0gRmVhdHVyZSBDb250cm9sIFJlZyAqLwogCSB1OCBlZnI7CQkvKiBXUglFRlIgLSBFbmhhbmNlZCBGdW5jdGlvbiBSZWcgKi8KIAkgdTggdGZpZm87CQkvKiBXUglUWENOVC9UWFRSRyAtIFRyYW5zbWl0IEZJRk8gUmVnICovCi0JIHU4IHJmaWZvOwkJLyogV1IJUlhDTlQvUlhUUkcgLSBSZWNpZXZlIEZJRk8gUmVnICovCisJIHU4IHJmaWZvOwkJLyogV1IJUlhDTlQvUlhUUkcgLSBSZWNlaXZlIEZJRk8gUmVnICovCiAJIHU4IHhvZmZjaGFyMTsJLyogV1IJWE9GRiAxIC0gWE9mZiBDaGFyYWN0ZXIgMSBSZWcgKi8KIAkgdTggeG9mZmNoYXIyOwkvKiBXUglYT0ZGIDIgLSBYT2ZmIENoYXJhY3RlciAyIFJlZyAqLwogCSB1OCB4b25jaGFyMTsJLyogV1IJWE9OIDEgLSBYb24gQ2hhcmFjdGVyIDEgUmVnICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtX25lby5jCmluZGV4IDc5NjBkOTYuLjQ1MzhjM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtX25lby5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtX25lby5jCkBAIC0zODEsNyArMzgxLDcgQEAKIAkJLyogQ29weSBkYXRhIGZyb20gdWFydCB0byB0aGUgcXVldWUgKi8KIAkJbWVtY3B5X2Zyb21pbyhjaC0+Y2hfcnF1ZXVlICsgaGVhZCwgJmNoLT5jaF9uZW9fdWFydC0+dHhyeGJ1cnN0LCBuKTsKIAkJLyoKLQkJICogU2luY2UgUlhfRklGT19EQVRBX0VSUk9SIHdhcyAwLCB3ZSBhcmUgZ3VhcmVudGVlZAorCQkgKiBTaW5jZSBSWF9GSUZPX0RBVEFfRVJST1Igd2FzIDAsIHdlIGFyZSBndWFyYW50ZWVkCiAJCSAqIHRoYXQgYWxsIHRoZSBkYXRhIGN1cnJlbnRseSBpbiB0aGUgRklGTyBpcyBmcmVlIG9mCiAJCSAqIGJyZWFrcyBhbmQgcGFyaXR5L2ZyYW1lL29ydW4gZXJyb3JzLgogCQkgKi8KQEAgLTEyMTAsNyArMTIxMCw3IEBACiAJCQkgKiBXaHkgd291bGQgSSBjaGVjayBFVkVSWSBwb3NzaWJpbGl0eSBvZiB0eXBlIG9mCiAJCQkgKiBpbnRlcnJ1cHQsIHdoZW4gd2Uga25vdyBpdHMgVFhSRFk/Pz8KIAkJCSAqIEJlY3V6IGZvciBzb21lIHJlYXNvbiwgZXZlbiB0aG8gd2UgZ290IHRyaWdnZXJlZCBmb3IgVFhSRFksCi0JCQkgKiBpdCBzZWVtcyB0byBiZSBvY2Nhc3Npb25hbGx5IHdyb25nLiBJbnN0ZWFkIG9mIFRYLCB3aGljaAorCQkJICogaXQgc2VlbXMgdG8gYmUgb2NjYXNpb25hbGx5IHdyb25nLiBJbnN0ZWFkIG9mIFRYLCB3aGljaAogCQkJICogaXQgc2hvdWxkIGJlLCBJIHdhcyBnZXR0aW5nIHRoaW5ncyBsaWtlIFJYRFkgdG9vLiBXZWlyZC4KIAkJCSAqLwogCQkJbmVvX3BhcnNlX2lzcihicmQsIHBvcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21heDMxMDcuaCBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTA3LmgKaW5kZXggN2FiNjMyMzkuLjg0MTVmYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTA3LmgKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL21heDMxMDcuaApAQCAtMzY5LDcgKzM2OSw3IEBACiAJc3RydWN0IHNwaV9kZXZpY2UgKnNwaTsKIAogI2lmIGRlZmluZWQoQ09ORklHX0dQSU9MSUIpCi0JLyogR1BJTyBjaGlwIHN0dWN0dXJlICovCisJLyogR1BJTyBjaGlwIHN0cnVjdHVyZSAqLwogCXN0cnVjdCBncGlvX2NoaXAgY2hpcDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmMKaW5kZXggMzdlMTNjMy4uMmY1NDhhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tcnN0X21heDMxMTAuYwpAQCAtMjMsNyArMjMsNyBAQAogICogICAgMSB3b3JkLiBJZiBTUEkgbWFzdGVyIGNvbnRyb2xsZXIgZG9lc24ndCBzdXBwb3J0IHNjbGsgZnJlcXVlbmN5IGNoYW5nZSwKICAqICAgIHRoZW4gdGhlIGNoYXIgbmVlZCBiZSBzZW50IG91dCBvbmUgYnkgb25lIHdpdGggc29tZSBkZWxheQogICoKLSAqIDIuIEN1cnJlbnRseSBvbmx5IFJYIGF2YWlsYWJlIGludGVycnJ1cHQgaXMgdXNlZCwgbm8gbmVlZCBmb3Igd2FpdGluZyBUWEUKKyAqIDIuIEN1cnJlbnRseSBvbmx5IFJYIGF2YWlsYWJsZSBpbnRlcnJydXB0IGlzIHVzZWQsIG5vIG5lZWQgZm9yIHdhaXRpbmcgVFhFCiAgKiAgICBpbnRlcnJ1cHQgZm9yIGEgbG93IHNwZWVkIFVBUlQgZGV2aWNlCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5oIGIvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5oCmluZGV4IGQxZWY0M2EuLmMzN2VhNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tcnN0X21heDMxMTAuaAorKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmgKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2RlZmluZSBXQ19JUlFfTUFTSwkJKDB4RiA8PCA4KQogI2RlZmluZSBXQ19UWEVfSVJRX0VOQUJMRQkoMSA8PCAxMSkJLyogVFggZW1wdHkgaXJxICovCi0jZGVmaW5lIFdDX1JYQV9JUlFfRU5BQkxFCSgxIDw8IDEwKQkvKiBSWCBhdmFpbGFiZSBpcnEgKi8KKyNkZWZpbmUgV0NfUlhBX0lSUV9FTkFCTEUJKDEgPDwgMTApCS8qIFJYIGF2YWlsYWJsZSBpcnEgKi8KICNkZWZpbmUgV0NfUEFSX0hJR0hfSVJRX0VOQUJMRQkoMSA8PCA5KQogI2RlZmluZSBXQ19SRUNfQUNUX0lSUV9FTkFCTEUJKDEgPDwgOCkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21zbV9zZXJpYWxfaHMuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tc21fc2VyaWFsX2hzLmMKaW5kZXggYjkwNmYxMS4uNjI0NzAxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL21zbV9zZXJpYWxfaHMuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXNtX3NlcmlhbF9ocy5jCkBAIC00OTUsNyArNDk1LDcgQEAKICAqCiAgKiBJbnRlcnJ1cHRzIHNob3VsZCBiZSBkaXNhYmxlZCBiZWZvcmUgd2UgYXJlIGNhbGxlZCwgYXMKICAqIHdlIG1vZGlmeSBTZXQgQmF1ZCByYXRlCi0gKiBTZXQgcmVjZWl2ZSBzdGFsZSBpbnRlcnJ1cHQgbGV2ZWwsIGRlcGVuZGFudCBvbiBCaXQgUmF0ZQorICogU2V0IHJlY2VpdmUgc3RhbGUgaW50ZXJydXB0IGxldmVsLCBkZXBlbmRlbnQgb24gQml0IFJhdGUKICAqIEdvYWwgaXMgdG8gaGF2ZSBhcm91bmQgOCBtcyBiZWZvcmUgaW5kaWNhdGUgc3RhbGUuCiAgKiByb3VuZHVwICgoKEJpdCBSYXRlICogLjAwOCkgLyAxMCkgKyAxCiAgKi8KQEAgLTEzNTAsNyArMTM1MCw3IEBACiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmdXBvcnQtPmxvY2ssIGZsYWdzKTsKIAlpZiAobXNtX3Vwb3J0LT5jbGtfc3RhdGUgPT0gTVNNX0hTX0NMS19PRkYpIHsKLQkJLyogaWdub3JlIHRoZSBmaXJzdCBpcnEgLSBpdCBpcyBhIHBlbmRpbmcgaXJxIHRoYXQgb2NjdXJlZAorCQkvKiBpZ25vcmUgdGhlIGZpcnN0IGlycSAtIGl0IGlzIGEgcGVuZGluZyBpcnEgdGhhdCBvY2N1cnJlZAogCQkgKiBiZWZvcmUgZW5hYmxlX2lycSgpICovCiAJCWlmIChtc21fdXBvcnQtPnJ4X3dha2V1cC5pZ25vcmUpCiAJCQltc21fdXBvcnQtPnJ4X3dha2V1cC5pZ25vcmUgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL29tYXAtc2VyaWFsLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvb21hcC1zZXJpYWwuYwppbmRleCA3NjM1Mzc5Li40N2NhZGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvb21hcC1zZXJpYWwuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvb21hcC1zZXJpYWwuYwpAQCAtMTMsNyArMTMsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogTm90ZTogVGhpcyBkcml2ZXIgaXMgbWFkZSBzZXBlcmF0ZSBmcm9tIDgyNTAgZHJpdmVyIGFzIHdlIGNhbm5vdAorICogTm90ZTogVGhpcyBkcml2ZXIgaXMgbWFkZSBzZXBhcmF0ZSBmcm9tIDgyNTAgZHJpdmVyIGFzIHdlIGNhbm5vdAogICogb3ZlciBsb2FkIDgyNTAgZHJpdmVyIHdpdGggb21hcCBwbGF0Zm9ybSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvcgogICogZmVhdHVyZXMgbGlrZSBETUEsIGl0IG1ha2VzIGVhc2llciB0byBpbXBsZW1lbnQgZmVhdHVyZXMgbGlrZSBETUEgYW5kCiAgKiBoYXJkd2FyZSBmbG93IGNvbnRyb2wgYW5kIHNvZnR3YXJlIGZsb3cgY29udHJvbCBjb25maWd1cmF0aW9uIHdpdGgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9wbWFjX3ppbG9nLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvcG1hY196aWxvZy5jCmluZGV4IDViOWNkZTcuLmUxYzhkNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9wbWFjX3ppbG9nLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL3BtYWNfemlsb2cuYwpAQCAtMzMwLDcgKzMzMCw3IEBACiAJCSAqIFdoZW4gdGhhdCBoYXBwZW5zLCBJIGRpc2FibGUgdGhlIHJlY2VpdmUgc2lkZSBvZiB0aGUgZHJpdmVyLgogCQkgKiBOb3RlIHRoYXQgd2hhdCBJJ3ZlIGJlZW4gZXhwZXJpZW5jaW5nIGlzIGEgcmVhbCBpcnEgbG9vcCB3aGVyZQogCQkgKiBJJ20gZ2V0dGluZyBmbG9vZGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdHVhbCBwb3J0IHNwZWVkLgotCQkgKiBTb21ldGhpbmcgc3RhbmdlIGlzIGdvaW5nIG9uIHdpdGggdGhlIEhXCisJCSAqIFNvbWV0aGluZyBzdHJhbmdlIGlzIGdvaW5nIG9uIHdpdGggdGhlIEhXCiAJCSAqLwogCQlpZiAoKCsrbG9vcHMpID4gMTAwMCkKIAkJCWdvdG8gZmxvb2Q7CkBAIC0zOTYsNyArMzk2LDcgQEAKIAkJICogYmUgbmljZSB0byB0cmFuc21pdCBjb25zb2xlIHdyaXRlcyBqdXN0IGxpa2Ugd2Ugbm9ybWFsbHkgd291bGQgZm9yCiAJCSAqIGEgVFRZIGxpbmUuIChpZS4gYnVmZmVyZWQgYW5kIFRYIGludGVycnVwdCBkcml2ZW4pLiAgVGhhdCBpcyBub3QKIAkJICogZWFzeSBiZWNhdXNlIGNvbnNvbGUgd3JpdGVzIGNhbm5vdCBzbGVlcC4gIE9uZSBzb2x1dGlvbiBtaWdodCBiZQotCQkgKiB0byBwb2xsIG9uIGVub3VnaCBwb3J0LT54bWl0IHNwYWNlIGJlY29tbWluZyBmcmVlLiAgLURhdmVNCisJCSAqIHRvIHBvbGwgb24gZW5vdWdoIHBvcnQtPnhtaXQgc3BhY2UgYmVjb21pbmcgZnJlZS4gIC1EYXZlTQogCQkgKi8KIAkJaWYgKCEoc3RhdHVzICYgVHhfQlVGX0VNUCkpCiAJCQlyZXR1cm47CkBAIC04MDksNyArODA5LDcgQEAKICNlbmRpZiAvKiAhQ09ORklHX1BQQ19QTUFDICovCiAKIC8qCi0gKiBGaXhaZXJvQnVnLi4uLldvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgU0NDIHJlY2V2aW5nIGNoYW5uZWwuCisgKiBGaXhaZXJvQnVnLi4uLldvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgU0NDIHJlY2VpdmluZyBjaGFubmVsLgogICogSW5zcGlyZWQgZnJvbSBEYXJ3aW4gY29kZSwgMTUgU2VwdC4gMjAwMCAgLURhbk0KICAqCiAgKiBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIHByZXZlbnRzIGEgcHJvYmxlbSB0aGF0IGlzIHNlZW4gd2l0aCBPJ0hhcmUgQVNJQ3MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc2Ftc3VuZy5jCmluZGV4IDIzMzVlZGEuLjllMmZhOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL3NhbXN1bmcuYwpAQCAtNjQsNyArNjQsNyBAQAogI2RlZmluZSB0eF9lbmFibGVkKHBvcnQpICgocG9ydCktPnVudXNlZFswXSkKICNkZWZpbmUgcnhfZW5hYmxlZChwb3J0KSAoKHBvcnQpLT51bnVzZWRbMV0pCiAKLS8qIGZsYWcgdG8gaWdub3JlIGFsbCBjaGFyYWN0ZXJzIGNvbW1pbmcgaW4gKi8KKy8qIGZsYWcgdG8gaWdub3JlIGFsbCBjaGFyYWN0ZXJzIGNvbWluZyBpbiAqLwogI2RlZmluZSBSWFNUQVRfRFVNTVlfUkVBRCAoMHgxMDAwMDAwMCkKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgczNjMjR4eF91YXJ0X3BvcnQgKnRvX291cnBvcnQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCkKQEAgLTI5MSw3ICsyOTEsNyBAQAogCQlnb3RvIG91dDsKIAl9CiAKLQkvKiBpZiB0aGVyZSBpc250IGFueXRoaW5nIG1vcmUgdG8gdHJhbnNtaXQsIG9yIHRoZSB1YXJ0IGlzIG5vdworCS8qIGlmIHRoZXJlIGlzbid0IGFueXRoaW5nIG1vcmUgdG8gdHJhbnNtaXQsIG9yIHRoZSB1YXJ0IGlzIG5vdwogCSAqIHN0b3BwZWQsIGRpc2FibGUgdGhlIHVhcnQgYW5kIGV4aXQKIAkqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvc2gtc2NpLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc2gtc2NpLmMKaW5kZXggZWI3OTU4Yy4uYTdiMDgzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL3NoLXNjaS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zaC1zY2kuYwpAQCAtODEyLDcgKzgxMiw3IEBACiB9CiAKIC8qCi0gKiBIZXJlIHdlIGRlZmluZSBhIHRyYW5zaXN0aW9uIG5vdGlmaWVyIHNvIHRoYXQgd2UgY2FuIHVwZGF0ZSBhbGwgb2Ygb3VyCisgKiBIZXJlIHdlIGRlZmluZSBhIHRyYW5zaXRpb24gbm90aWZpZXIgc28gdGhhdCB3ZSBjYW4gdXBkYXRlIGFsbCBvZiBvdXIKICAqIHBvcnRzJyBiYXVkIHJhdGUgd2hlbiB0aGUgcGVyaXBoZXJhbCBjbG9jayBjaGFuZ2VzLgogICovCiBzdGF0aWMgaW50IHNjaV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvc25fY29uc29sZS5jIGIvZHJpdmVycy90dHkvc2VyaWFsL3NuX2NvbnNvbGUuYwppbmRleCBjZmY5YTMwLi4zNzdhZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc25fY29uc29sZS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zbl9jb25zb2xlLmMKQEAgLTE0Niw3ICsxNDYsNyBAQAogfTsKIAogLyogdGhlIGNvbnNvbGUgZG9lcyBvdXRwdXQgaW4gdHdvIGRpc3RpbmN0bHkgZGlmZmVyZW50IHdheXM6Ci0gKiBzeW5jaHJvbm91cyAocmF3KSBhbmQgYXN5bmNocm9ub3VzIChidWZmZXJlZCkuICBpbml0YWxseSwgZWFybHlfcHJpbnRrCisgKiBzeW5jaHJvbm91cyAocmF3KSBhbmQgYXN5bmNocm9ub3VzIChidWZmZXJlZCkuICBpbml0aWFsbHksIGVhcmx5X3ByaW50awogICogZG9lcyBzeW5jaHJvbm91cyBvdXRwdXQuICBhbnkgZGF0YSB3cml0dGVuIGdvZXMgZGlyZWN0bHkgdG8gdGhlIFNBTAogICogdG8gYmUgb3V0cHV0IChpbmNpZGVudGFsbHksIGl0IGlzIGludGVybmFsbHkgYnVmZmVyZWQgYnkgdGhlIFNBTCkKICAqIGFmdGVyIGludGVycnVwdHMgYW5kIHRpbWVycyBhcmUgaW5pdGlhbGl6ZWQgYW5kIGF2YWlsYWJsZSBmb3IgdXNlLApAQCAtNDgxLDcgKzQ4MSw3IEBACiAJd2hpbGUgKHBvcnQtPnNjX29wcy0+c2FsX2lucHV0X3BlbmRpbmcoKSkgewogCQljaCA9IHBvcnQtPnNjX29wcy0+c2FsX2dldGMoKTsKIAkJaWYgKGNoIDwgMCkgewotCQkJcHJpbnRrKEtFUk5fRVJSICJzbl9jb25zb2xlOiBBbiBlcnJvciBvY2N1cmVkIHdoaWxlICIKKwkJCXByaW50ayhLRVJOX0VSUiAic25fY29uc29sZTogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgIgogCQkJICAgICAgICJvYnRhaW5pbmcgZGF0YSBmcm9tIHRoZSBjb25zb2xlICgweCUweClcbiIsIGNoKTsKIAkJCWJyZWFrOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zdW56aWxvZy5jCmluZGV4IDk5ZmY5YWIuLjhlOTE2ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zdW56aWxvZy5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zdW56aWxvZy5jCkBAIC00NzQsNyArNDc0LDcgQEAKIAkJICogYmUgbmljZSB0byB0cmFuc21pdCBjb25zb2xlIHdyaXRlcyBqdXN0IGxpa2Ugd2Ugbm9ybWFsbHkgd291bGQgZm9yCiAJCSAqIGEgVFRZIGxpbmUuIChpZS4gYnVmZmVyZWQgYW5kIFRYIGludGVycnVwdCBkcml2ZW4pLiAgVGhhdCBpcyBub3QKIAkJICogZWFzeSBiZWNhdXNlIGNvbnNvbGUgd3JpdGVzIGNhbm5vdCBzbGVlcC4gIE9uZSBzb2x1dGlvbiBtaWdodCBiZQotCQkgKiB0byBwb2xsIG9uIGVub3VnaCBwb3J0LT54bWl0IHNwYWNlIGJlY29tbWluZyBmcmVlLiAgLURhdmVNCisJCSAqIHRvIHBvbGwgb24gZW5vdWdoIHBvcnQtPnhtaXQgc3BhY2UgYmVjb21pbmcgZnJlZS4gIC1EYXZlTQogCQkgKi8KIAkJaWYgKCEoc3RhdHVzICYgVHhfQlVGX0VNUCkpCiAJCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zeW5jbGluay5jIGIvZHJpdmVycy90dHkvc3luY2xpbmsuYwppbmRleCAxODg4OGQwLi4yN2RhMjNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zeW5jbGluay5jCisrKyBiL2RyaXZlcnMvdHR5L3N5bmNsaW5rLmMKQEAgLTQwNzIsNyArNDA3Miw3IEBACiAJCiAJaWYgKCByZXF1ZXN0X2lycShpbmZvLT5pcnFfbGV2ZWwsbWdzbF9pbnRlcnJ1cHQsaW5mby0+aXJxX2ZsYWdzLAogCQlpbmZvLT5kZXZpY2VfbmFtZSwgaW5mbyApIDwgMCApIHsKLQkJcHJpbnRrKCAiJXMoJWQpOkNhbnQgcmVxdWVzdCBpbnRlcnJ1cHQgb24gZGV2aWNlICVzIElSUT0lZFxuIiwKKwkJcHJpbnRrKCAiJXMoJWQpOkNhbid0IHJlcXVlc3QgaW50ZXJydXB0IG9uIGRldmljZSAlcyBJUlE9JWRcbiIsCiAJCQlfX0ZJTEVfXyxfX0xJTkVfXyxpbmZvLT5kZXZpY2VfbmFtZSwgaW5mby0+aXJxX2xldmVsICk7CiAJCWdvdG8gZXJyb3V0OwogCX0KQEAgLTQwOTUsNyArNDA5NSw3IEBACiAJCWluZm8tPm1lbW9yeV9iYXNlID0gaW9yZW1hcF9ub2NhY2hlKGluZm8tPnBoeXNfbWVtb3J5X2Jhc2UsCiAJCQkJCQkJCTB4NDAwMDApOwogCQlpZiAoIWluZm8tPm1lbW9yeV9iYXNlKSB7Ci0JCQlwcmludGsoICIlcyglZCk6Q2FudCBtYXAgc2hhcmVkIG1lbW9yeSBvbiBkZXZpY2UgJXMgTWVtQWRkcj0lMDhYXG4iLAorCQkJcHJpbnRrKCAiJXMoJWQpOkNhbid0IG1hcCBzaGFyZWQgbWVtb3J5IG9uIGRldmljZSAlcyBNZW1BZGRyPSUwOFhcbiIsCiAJCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfbWVtb3J5X2Jhc2UgKTsKIAkJCWdvdG8gZXJyb3V0OwogCQl9CkBAIC00MTA5LDcgKzQxMDksNyBAQAogCQlpbmZvLT5sY3JfYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX2xjcl9iYXNlLAogCQkJCQkJCQlQQUdFX1NJWkUpOwogCQlpZiAoIWluZm8tPmxjcl9iYXNlKSB7Ci0JCQlwcmludGsoICIlcyglZCk6Q2FudCBtYXAgTENSIG1lbW9yeSBvbiBkZXZpY2UgJXMgTWVtQWRkcj0lMDhYXG4iLAorCQkJcHJpbnRrKCAiJXMoJWQpOkNhbid0IG1hcCBMQ1IgbWVtb3J5IG9uIGRldmljZSAlcyBNZW1BZGRyPSUwOFhcbiIsCiAJCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfbGNyX2Jhc2UgKTsKIAkJCWdvdG8gZXJyb3V0OwogCQl9CkBAIC00MTE5LDcgKzQxMTksNyBAQAogCQkvKiBjbGFpbSBETUEgY2hhbm5lbCAqLwogCQkKIAkJaWYgKHJlcXVlc3RfZG1hKGluZm8tPmRtYV9sZXZlbCxpbmZvLT5kZXZpY2VfbmFtZSkgPCAwKXsKLQkJCXByaW50ayggIiVzKCVkKTpDYW50IHJlcXVlc3QgRE1BIGNoYW5uZWwgb24gZGV2aWNlICVzIERNQT0lZFxuIiwKKwkJCXByaW50ayggIiVzKCVkKTpDYW4ndCByZXF1ZXN0IERNQSBjaGFubmVsIG9uIGRldmljZSAlcyBETUE9JWRcbiIsCiAJCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPmRtYV9sZXZlbCApOwogCQkJbWdzbF9yZWxlYXNlX3Jlc291cmNlcyggaW5mbyApOwogCQkJcmV0dXJuIC1FTk9ERVY7CkBAIC00MTMyLDcgKzQxMzIsNyBAQAogCX0KIAkKIAlpZiAoIG1nc2xfYWxsb2NhdGVfZG1hX2J1ZmZlcnMoaW5mbykgPCAwICkgewotCQlwcmludGsoICIlcyglZCk6Q2FudCBhbGxvY2F0ZSBETUEgYnVmZmVycyBvbiBkZXZpY2UgJXMgRE1BPSVkXG4iLAorCQlwcmludGsoICIlcyglZCk6Q2FuJ3QgYWxsb2NhdGUgRE1BIGJ1ZmZlcnMgb24gZGV2aWNlICVzIERNQT0lZFxuIiwKIAkJCV9fRklMRV9fLF9fTElORV9fLGluZm8tPmRldmljZV9uYW1lLCBpbmZvLT5kbWFfbGV2ZWwgKTsKIAkJZ290byBlcnJvdXQ7CiAJfQkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3N5bmNsaW5rX2d0LmMgYi9kcml2ZXJzL3R0eS9zeW5jbGlua19ndC5jCmluZGV4IGEzNWRkNTQuLjE4YjQ4Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3N5bmNsaW5rX2d0LmMKKysrIGIvZHJpdmVycy90dHkvc3luY2xpbmtfZ3QuYwpAQCAtMzQ5MSw3ICszNDkxLDcgQEAKIAogCWluZm8tPnJlZ19hZGRyID0gaW9yZW1hcF9ub2NhY2hlKGluZm8tPnBoeXNfcmVnX2FkZHIsIFNMR1RfUkVHX1NJWkUpOwogCWlmICghaW5mby0+cmVnX2FkZHIpIHsKLQkJREJHRVJSKCgiJXMgY2FudCBtYXAgZGV2aWNlIHJlZ2lzdGVycywgYWRkcj0lMDhYXG4iLAorCQlEQkdFUlIoKCIlcyBjYW4ndCBtYXAgZGV2aWNlIHJlZ2lzdGVycywgYWRkcj0lMDhYXG4iLAogCQkJaW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfcmVnX2FkZHIpKTsKIAkJaW5mby0+aW5pdF9lcnJvciA9IERpYWdTdGF0dXNfQ2FudEFzc2lnblBjaVJlc291cmNlczsKIAkJZ290byBlcnJvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zeW5jbGlua21wLmMgYi9kcml2ZXJzL3R0eS9zeW5jbGlua21wLmMKaW5kZXggMzI3MzQzNi4uYzc3ODMxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc3luY2xpbmttcC5jCisrKyBiL2RyaXZlcnMvdHR5L3N5bmNsaW5rbXAuYwpAQCAtMzU5NSw3ICszNTk1LDcgQEAKIAlpbmZvLT5tZW1vcnlfYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX21lbW9yeV9iYXNlLAogCQkJCQkJCQlTQ0FfTUVNX1NJWkUpOwogCWlmICghaW5mby0+bWVtb3J5X2Jhc2UpIHsKLQkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbnQgbWFwIHNoYXJlZCBtZW1vcnksIE1lbUFkZHI9JTA4WFxuIiwKKwkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbid0IG1hcCBzaGFyZWQgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCiAJCQlfX0ZJTEVfXyxfX0xJTkVfXyxpbmZvLT5kZXZpY2VfbmFtZSwgaW5mby0+cGh5c19tZW1vcnlfYmFzZSApOwogCQlpbmZvLT5pbml0X2Vycm9yID0gRGlhZ1N0YXR1c19DYW50QXNzaWduUGNpUmVzb3VyY2VzOwogCQlnb3RvIGVycm91dDsKQEAgLTM2MDMsNyArMzYwMyw3IEBACiAKIAlpbmZvLT5sY3JfYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX2xjcl9iYXNlLCBQQUdFX1NJWkUpOwogCWlmICghaW5mby0+bGNyX2Jhc2UpIHsKLQkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbnQgbWFwIExDUiBtZW1vcnksIE1lbUFkZHI9JTA4WFxuIiwKKwkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbid0IG1hcCBMQ1IgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCiAJCQlfX0ZJTEVfXyxfX0xJTkVfXyxpbmZvLT5kZXZpY2VfbmFtZSwgaW5mby0+cGh5c19sY3JfYmFzZSApOwogCQlpbmZvLT5pbml0X2Vycm9yID0gRGlhZ1N0YXR1c19DYW50QXNzaWduUGNpUmVzb3VyY2VzOwogCQlnb3RvIGVycm91dDsKQEAgLTM2MTIsNyArMzYxMiw3IEBACiAKIAlpbmZvLT5zY2FfYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX3NjYV9iYXNlLCBQQUdFX1NJWkUpOwogCWlmICghaW5mby0+c2NhX2Jhc2UpIHsKLQkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbnQgbWFwIFNDQSBtZW1vcnksIE1lbUFkZHI9JTA4WFxuIiwKKwkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbid0IG1hcCBTQ0EgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCiAJCQlfX0ZJTEVfXyxfX0xJTkVfXyxpbmZvLT5kZXZpY2VfbmFtZSwgaW5mby0+cGh5c19zY2FfYmFzZSApOwogCQlpbmZvLT5pbml0X2Vycm9yID0gRGlhZ1N0YXR1c19DYW50QXNzaWduUGNpUmVzb3VyY2VzOwogCQlnb3RvIGVycm91dDsKQEAgLTM2MjIsNyArMzYyMiw3IEBACiAJaW5mby0+c3RhdGN0cmxfYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX3N0YXRjdHJsX2Jhc2UsCiAJCQkJCQkJCVBBR0VfU0laRSk7CiAJaWYgKCFpbmZvLT5zdGF0Y3RybF9iYXNlKSB7Ci0JCXByaW50ayggIiVzKCVkKTolcyBDYW50IG1hcCBTQ0EgU3RhdHVzL0NvbnRyb2wgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCisJCXByaW50ayggIiVzKCVkKTolcyBDYW4ndCBtYXAgU0NBIFN0YXR1cy9Db250cm9sIG1lbW9yeSwgTWVtQWRkcj0lMDhYXG4iLAogCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfc3RhdGN0cmxfYmFzZSApOwogCQlpbmZvLT5pbml0X2Vycm9yID0gRGlhZ1N0YXR1c19DYW50QXNzaWduUGNpUmVzb3VyY2VzOwogCQlnb3RvIGVycm91dDsKQEAgLTM4NjksNyArMzg2OSw3IEBACiAJCQkJCXBvcnRfYXJyYXlbMF0tPmlycV9mbGFncywKIAkJCQkJcG9ydF9hcnJheVswXS0+ZGV2aWNlX25hbWUsCiAJCQkJCXBvcnRfYXJyYXlbMF0pIDwgMCApIHsKLQkJCXByaW50ayggIiVzKCVkKTolcyBDYW50IHJlcXVlc3QgaW50ZXJydXB0LCBJUlE9JWRcbiIsCisJCQlwcmludGsoICIlcyglZCk6JXMgQ2FuJ3QgcmVxdWVzdCBpbnRlcnJ1cHQsIElSUT0lZFxuIiwKIAkJCQlfX0ZJTEVfXyxfX0xJTkVfXywKIAkJCQlwb3J0X2FycmF5WzBdLT5kZXZpY2VfbmFtZSwKIAkJCQlwb3J0X2FycmF5WzBdLT5pcnFfbGV2ZWwgKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmMKaW5kZXggOTM2YTRlYS4uZDdkNTBiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdHR5X2lvLmMKKysrIGIvZHJpdmVycy90dHkvdHR5X2lvLmMKQEAgLTIxMzQsNyArMjEzNCw3IEBACiAgKglhY3R1YWxseSBoYXMgZHJpdmVyIGxldmVsIG1lYW5pbmcgYW5kIHRyaWdnZXJzIGEgVkMgcmVzaXplLgogICoKICAqCUxvY2tpbmc6Ci0gKgkJRHJpdmVyIGRlcGVuZGFudC4gVGhlIGRlZmF1bHQgZG9fcmVzaXplIG1ldGhvZCB0YWtlcyB0aGUKKyAqCQlEcml2ZXIgZGVwZW5kZW50LiBUaGUgZGVmYXVsdCBkb19yZXNpemUgbWV0aG9kIHRha2VzIHRoZQogICoJdHR5IHRlcm1pb3MgbXV0ZXggYW5kIGN0cmxfbG9jay4gVGhlIGNvbnNvbGUgdGFrZXMgaXRzIG93biBsb2NrCiAgKgl0aGVuIGNhbGxzIGludG8gdGhlIGRlZmF1bHQgbWV0aG9kLgogICovCkBAIC0yMTU1LDcgKzIxNTUsNyBAQAogICoJdGlvY2NvbnMJLQlhbGxvdyBhZG1pbiB0byBtb3ZlIGxvZ2ljYWwgY29uc29sZQogICoJQGZpbGU6IHRoZSBmaWxlIHRvIGJlY29tZSBjb25zb2xlCiAgKgotICoJQWxsb3cgdGhlIGFkbWluc3RyYXRvciB0byBtb3ZlIHRoZSByZWRpcmVjdGVkIGNvbnNvbGUgZGV2aWNlCisgKglBbGxvdyB0aGUgYWRtaW5pc3RyYXRvciB0byBtb3ZlIHRoZSByZWRpcmVjdGVkIGNvbnNvbGUgZGV2aWNlCiAgKgogICoJTG9ja2luZzogdXNlcyByZWRpcmVjdF9sb2NrIHRvIGd1YXJkIHRoZSByZWRpcmVjdCBpbmZvcm1hdGlvbgogICovCkBAIC0yMjkwLDcgKzIyOTAsNyBAQAogLyoqCiAgKgl0aW9jZ3BncnAJCS0JZ2V0IHByb2Nlc3MgZ3JvdXAKICAqCUB0dHk6IHR0eSBwYXNzZWQgYnkgdXNlcgotICoJQHJlYWxfdHR5OiB0dHkgc2lkZSBvZiB0aGUgdHR5IHBhc2VkIGJ5IHRoZSB1c2VyIGlmIGEgcHR5IGVsc2UgdGhlIHR0eQorICoJQHJlYWxfdHR5OiB0dHkgc2lkZSBvZiB0aGUgdHR5IHBhc3NlZCBieSB0aGUgdXNlciBpZiBhIHB0eSBlbHNlIHRoZSB0dHkKICAqCUBwOiByZXR1cm5lZCBwaWQKICAqCiAgKglPYnRhaW4gdGhlIHByb2Nlc3MgZ3JvdXAgb2YgdGhlIHR0eS4gSWYgdGhlcmUgaXMgbm8gcHJvY2VzcyBncm91cApAQCAtMjM2Nyw3ICsyMzY3LDcgQEAKIC8qKgogICoJdGlvY2dzaWQJCS0JZ2V0IHNlc3Npb24gaWQKICAqCUB0dHk6IHR0eSBwYXNzZWQgYnkgdXNlcgotICoJQHJlYWxfdHR5OiB0dHkgc2lkZSBvZiB0aGUgdHR5IHBhc2VkIGJ5IHRoZSB1c2VyIGlmIGEgcHR5IGVsc2UgdGhlIHR0eQorICoJQHJlYWxfdHR5OiB0dHkgc2lkZSBvZiB0aGUgdHR5IHBhc3NlZCBieSB0aGUgdXNlciBpZiBhIHB0eSBlbHNlIHRoZSB0dHkKICAqCUBwOiBwb2ludGVyIHRvIHJldHVybmVkIHNlc3Npb24gaWQKICAqCiAgKglPYnRhaW4gdGhlIHNlc3Npb24gaWQgb2YgdGhlIHR0eS4gSWYgdGhlcmUgaXMgbm8gc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvdHR5X2lvY3RsLmMgYi9kcml2ZXJzL3R0eS90dHlfaW9jdGwuYwppbmRleCAxYTExMzVkLi4yMTU3NGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS90dHlfaW9jdGwuYworKysgYi9kcml2ZXJzL3R0eS90dHlfaW9jdGwuYwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAJY2JhdWQgPSB0ZXJtaW9zLT5jX2NmbGFnICYgQ0JBVUQ7CiAKICNpZmRlZiBCT1RIRVIKLQkvKiBNYWdpYyB0b2tlbiBmb3IgYXJiaXRhcnkgc3BlZWQgdmlhIGNfaXNwZWVkL2Nfb3NwZWVkICovCisJLyogTWFnaWMgdG9rZW4gZm9yIGFyYml0cmFyeSBzcGVlZCB2aWEgY19pc3BlZWQvY19vc3BlZWQgKi8KIAlpZiAoY2JhdWQgPT0gQk9USEVSKQogCQlyZXR1cm4gdGVybWlvcy0+Y19vc3BlZWQ7CiAjZW5kaWYKQEAgLTI4Myw3ICsyODMsNyBAQAogCWlmIChjYmF1ZCA9PSBCMCkKIAkJcmV0dXJuIHR0eV90ZXJtaW9zX2JhdWRfcmF0ZSh0ZXJtaW9zKTsKIAotCS8qIE1hZ2ljIHRva2VuIGZvciBhcmJpdGFyeSBzcGVlZCB2aWEgY19pc3BlZWQqLworCS8qIE1hZ2ljIHRva2VuIGZvciBhcmJpdHJhcnkgc3BlZWQgdmlhIGNfaXNwZWVkKi8KIAlpZiAoY2JhdWQgPT0gQk9USEVSKQogCQlyZXR1cm4gdGVybWlvcy0+Y19pc3BlZWQ7CiAKQEAgLTQ0OSw3ICs0NDksNyBAQAogICoJQG5ldzogTmV3IHRlcm1pb3MKICAqCUBvbGQ6IE9sZCB0ZXJtaW9zCiAgKgotICoJUHJvcG9nYXRlIHRoZSBoYXJkd2FyZSBzcGVjaWZpYyB0ZXJtaW5hbCBzZXR0aW5nIGJpdHMgZnJvbQorICoJUHJvcGFnYXRlIHRoZSBoYXJkd2FyZSBzcGVjaWZpYyB0ZXJtaW5hbCBzZXR0aW5nIGJpdHMgZnJvbQogICoJdGhlIG9sZCB0ZXJtaW9zIHN0cnVjdHVyZSB0byB0aGUgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGluIGNhc2VzCiAgKgl3aGVyZSB0aGUgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCByZWNvbmZpZ3VyYXRpb24gb3IgYXMgYSBoZWxwZXIKICAqCWluIHNvbWUgY2FzZXMgd2hlcmUgb25seSBtaW5pbWFsIHJlY29uZmlndXJhdGlvbiBpcyBzdXBwb3J0ZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3Z0L3Z0LmMgYi9kcml2ZXJzL3R0eS92dC92dC5jCmluZGV4IGM4M2NkZmIuLjRiZWExZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3Z0L3Z0LmMKKysrIGIvZHJpdmVycy90dHkvdnQvdnQuYwpAQCAtMzk2Myw3ICszOTYzLDcgQEAKICAqICBvZiAzMiBwaXhlbHMuIFVzZXJzcGFjZSBmb250ZGF0YSBpcyBzdG9yZWQgd2l0aCAzMiBieXRlcyAoc2hvcnRzL2ludHMsIAogICogIGRlcGVuZGluZyBvbiB3aWR0aCkgcmVzZXJ2ZWQgZm9yIGVhY2ggY2hhcmFjdGVyIHdoaWNoIGlzIGtpbmRhIHdhc3R5LCBidXQgCiAgKiAgdGhpcyBpcyBkb25lIGluIG9yZGVyIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgRUdBL1ZHQSBmb250cy4gSXQgCi0gKiAgaXMgdXB0byB0aGUgYWN0dWFsIGxvdy1sZXZlbCBjb25zb2xlLWRyaXZlciBjb252ZXJ0IGRhdGEgaW50byBpdHMgZmF2b3JpdGUKKyAqICBpcyB1cCB0byB0aGUgYWN0dWFsIGxvdy1sZXZlbCBjb25zb2xlLWRyaXZlciBjb252ZXJ0IGRhdGEgaW50byBpdHMgZmF2b3JpdGUKICAqICBmb3JtYXQgKG1heWJlIHdlIHNob3VsZCBhZGQgYSBgZm9udG9mZnNldCcgZmllbGQgdG8gdGhlIGBkaXNwbGF5JwogICogIHN0cnVjdHVyZSBzbyB3ZSB3b24ndCBoYXZlIHRvIGNvbnZlcnQgdGhlIGZvbnRkYXRhIGFsbCB0aGUgdGltZS4KICAqICAvSmVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYyBiL2RyaXZlcnMvdWlvL3Vpb19wcnVzcy5jCmluZGV4IGRhZjZlNzcuLmU2N2I1NjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdWlvL3Vpb19wcnVzcy5jCisrKyBiL2RyaXZlcnMvdWlvL3Vpb19wcnVzcy5jCkBAIC0zOSw3ICszOSw3IEBACiBNT0RVTEVfUEFSTV9ERVNDKGV4dHJhbV9wb29sX3N6LCAiZXh0ZXJuYWwgcmFtIHBvb2wgc2l6ZSB0byBhbGxvY2F0ZSIpOwogCiAvKgotICogSG9zdCBldmVudCBJUlEgbnVtYmVycyBmcm9tIFBSVVNTIC0gUFJVU1MgY2FuIGdlbmVyYXRlIHVwdG8gOCBpbnRlcnJ1cHQKKyAqIEhvc3QgZXZlbnQgSVJRIG51bWJlcnMgZnJvbSBQUlVTUyAtIFBSVVNTIGNhbiBnZW5lcmF0ZSB1cCB0byA4IGludGVycnVwdAogICogZXZlbnRzIHRvIEFJTlRDIG9mIEFSTSBob3N0IHByb2Nlc3NvciAtIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBJUEMgYi93IFBSVVNTCiAgKiBmaXJtd2FyZSBhbmQgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiwgYXN5bmMgbm90aWZpY2F0aW9uIGZyb20gUFJVIGZpcm13YXJlCiAgKiB0byB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vdWVhZ2xlLWF0bS5jIGIvZHJpdmVycy91c2IvYXRtL3VlYWdsZS1hdG0uYwppbmRleCBiMjY4ZTlmLi5lNzE1MjFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9hdG0vdWVhZ2xlLWF0bS5jCisrKyBiL2RyaXZlcnMvdXNiL2F0bS91ZWFnbGUtYXRtLmMKQEAgLTEyODMsNyArMTI4Myw3IEBACiAKIAkvKiBpbiBidWxrIG1vZGUgdGhlIG1vZGVtIGhhdmUgcHJvYmxlbSB3aXRoIGhpZ2ggcmF0ZQogCSAqIGNoYW5naW5nIGludGVybmFsIHRpbWluZyBjb3VsZCBpbXByb3ZlIHRoaW5ncywgYnV0IHRoZQotCSAqIHZhbHVlIGlzIG1pc3RlcmlvdXMuCisJICogdmFsdWUgaXMgbXlzdGVyaW91cy4KIAkgKiBBREk5MzAgZG9uJ3Qgc3VwcG9ydCBpdCAoLUVQSVBFIGVycm9yKS4KIAkgKi8KIApAQCAtMTc0Myw3ICsxNzQzLDcgQEAKIAkJCQlnb3RvIG91dDsKIAkJfQogCX0gZWxzZSB7Ci0JCS8qIFRoaXMgcmVhbHkgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJLyogVGhpcyByZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJdWVhX2VycihJTlNfVE9fVVNCREVWKHNjKSwgImJhZCBjbXZzIHZlcnNpb24gJWRcbiIsIHZlcik7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTE3OTgsNyArMTc5OCw3IEBACiAJCQkJZ290byBvdXQ7CiAJCX0KIAl9IGVsc2UgewotCQkvKiBUaGlzIHJlYWx5IHNob3VsZCBub3QgaGFwcGVuICovCisJCS8qIFRoaXMgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuICovCiAJCXVlYV9lcnIoSU5TX1RPX1VTQkRFVihzYyksICJiYWQgY212cyB2ZXJzaW9uICVkXG4iLCB2ZXIpOwogCQlnb3RvIG91dDsKIAl9CkBAIC0xODI5LDcgKzE4MjksNyBAQAogCiAJLyogbWFzayBpbnRlcnJ1cHQgKi8KIAlzYy0+Ym9vdGluZyA9IDE7Ci0JLyogV2UgbmVlZCB0byBzZXQgdGhpcyBoZXJlIGJlY2F1c2UsIGEgYWNrIHRpbWVvdXQgY291bGQgaGF2ZSBvY2N1cmVkLAorCS8qIFdlIG5lZWQgdG8gc2V0IHRoaXMgaGVyZSBiZWNhdXNlLCBhIGFjayB0aW1lb3V0IGNvdWxkIGhhdmUgb2NjdXJyZWQsCiAJICogYnV0IGJlZm9yZSB3ZSBzdGFydCB0aGUgcmVib290LCB0aGUgYWNrIG9jY3VycyBhbmQgc2V0IHRoaXMgdG8gMS4KIAkgKiBTbyB3ZSB3aWxsIGZhaWxlZCB0byB3YWl0IFJlYWR5IENNVi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtZHJ2LmMgYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWRydi5jCmluZGV4IGI2ZDQ5MjMuLjYyMDUwZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtZHJ2LmMKKysrIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1kcnYuYwpAQCAtMjcsNyArMjcsNyBAQAogICogdGhlIGxpbmsgYmV0d2VlbiB0aGUgY29tbW9uIGhhcmR3YXJlIHBhcnRzIGFuZCB0aGUgc3ViZHJpdmVycyAoZS5nLgogICogaW50ZXJydXB0IGhhbmRsaW5nKS4KICAqCi0gKiBUaGUgYzY3eDAwIGhhcyAyIFNJRSdzIChzZXJpYWwgaW50ZXJmYWNlIGVuZ2luZSkgd2ljaCBjYW4gYmUgY29uZmlndXJlZAorICogVGhlIGM2N3gwMCBoYXMgMiBTSUUncyAoc2VyaWFsIGludGVyZmFjZSBlbmdpbmUpIHdoaWNoIGNhbiBiZSBjb25maWd1cmVkCiAgKiB0byBiZSBob3N0LCBkZXZpY2Ugb3IgT1RHICh3aXRoIHNvbWUgbGltaXRhdGlvbnMsIEUuRy4gb25seSBTSUUxIGNhbiBiZSBPVEcpLgogICoKICAqIERlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gY29uZmlndXJhdGlvbiwgdGhlIFNJRSdzIGFyZSBjcmVhdGVkIGFuZApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1oY2QuaCBiL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtaGNkLmgKaW5kZXggNzRlNDQ2Mi4uZTNkNDkzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1oY2QuaAorKysgYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWhjZC5oCkBAIC0zNCw3ICszNCw3IEBACiAvKgogICogVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGRlcGVuZCBvbiB0aGUgQ1BVIHNwZWVkLCBidXMgc3BlZWQsIC4uLgogICogVGhlc2UgY2FuIGJlIHR1bmVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMsIGUuZy4gaWYgaXNvY2hyb25vdXMgdHJhbnNmZXJzCi0gKiBhcmUgdmVyeSBpbXBvcnRhbnQsIGJhbmR3aXRoIGNhbiBiZSBzYWNyaWZpY2VkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZQorICogYXJlIHZlcnkgaW1wb3J0YW50LCBiYW5kd2lkdGggY2FuIGJlIHNhY3JpZmljZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlCiAgKiAxbXMgZGVhZGxpbmUgd2lsbCBiZSBtZXQuCiAgKiBJZiBidWxrIHRyYW5zZmVycyBhcmUgaW1wb3J0YW50LCB0aGUgTUFYX0ZSQU1FX0JXIGNhbiBiZSBpbmNyZWFzZWQsCiAgKiBidXQgc29tZSAob3IgbWFueSkgaXNvY2hyb25vdXMgZGVhZGxpbmVzIG1pZ2h0IG5vdCBiZSBtZXQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLXNjaGVkLmMgYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLXNjaGVkLmMKaW5kZXggZjZiM2MyNS4uYTAzZmJjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1zY2hlZC5jCisrKyBiL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtc2NoZWQuYwpAQCAtOTA3LDcgKzkwNyw3IEBACiAKIC8qIFJlbW92ZSBhbGwgdGQncyBmcm9tIHRoZSBsaXN0IHdoaWNoIGNvbWUKICAqIGFmdGVyIGxhc3RfdGQgYW5kIGFyZSBtZWFudCBmb3IgdGhlIHNhbWUgcGlwZS4KLSAqIFRoaXMgaXMgdXNlZCB3aGVuIGEgc2hvcnQgcGFja2V0IGhhcyBvY2N1cmVkICovCisgKiBUaGlzIGlzIHVzZWQgd2hlbiBhIHNob3J0IHBhY2tldCBoYXMgb2NjdXJyZWQgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBjNjd4MDBfY2xlYXJfcGlwZShzdHJ1Y3QgYzY3eDAwX2hjZCAqYzY3eDAwLAogCQkJCSAgICAgc3RydWN0IGM2N3gwMF90ZCAqbGFzdF90ZCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaCBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaAppbmRleCA1ZWViNTcwLi5iNGVhNTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmgKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5oCkBAIC01Miw3ICs1Miw3IEBACiAgKi8KIAogLyoKLSAqIFRoZSBvbmx5IHJlYXNvbiB0byBoYXZlIHNldmVyYWwgYnVmZmVycyBpcyB0byBhY2NvbW9kYXRlIGFzc3VtcHRpb25zCisgKiBUaGUgb25seSByZWFzb24gdG8gaGF2ZSBzZXZlcmFsIGJ1ZmZlcnMgaXMgdG8gYWNjb21tb2RhdGUgYXNzdW1wdGlvbnMKICAqIGluIGxpbmUgZGlzY2lwbGluZXMuIFRoZXkgYXNrIGZvciBlbXB0eSBzcGFjZSBhbW91bnQsIHJlY2VpdmUgb3VyIFVSQiBzaXplLAogICogYW5kIHByb2NlZWQgdG8gaXNzdWUgc2V2ZXJhbCAxLWNoYXJhY3RlciB3cml0ZXMsIGFzc3VtaW5nIHRoZXkgd2lsbCBmaXQuCiAgKiBUaGUgdmVyeSBmaXJzdCB3cml0ZSB0YWtlcyBhIGNvbXBsZXRlIFVSQi4gRm9ydHVuYXRlbHksIHRoaXMgb25seSBoYXBwZW5zCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jCmluZGV4IDZhNTQ2MzQuLjM4NWFjYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jCkBAIC00ODMsNyArNDgzLDcgQEAKIAkJfQogCiAJCWRvbmUgKz0gbl9jaGFyYWN0ZXJzOwotCQkvKiBUZXJtaW5hdGUgaWYgZW5kLW9mLW1lc3NhZ2UgYml0IHJlY2lldmVkIGZyb20gZGV2aWNlICovCisJCS8qIFRlcm1pbmF0ZSBpZiBlbmQtb2YtbWVzc2FnZSBiaXQgcmVjZWl2ZWQgZnJvbSBkZXZpY2UgKi8KIAkJaWYgKChidWZmZXJbOF0gJiAgMHgwMSkgJiYgKGFjdHVhbCA+PSBuX2NoYXJhY3RlcnMgKyAxMikpCiAJCQlyZW1haW5pbmcgPSAwOwogCQllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jIGIvZHJpdmVycy91c2IvY29yZS9oY2QuYwppbmRleCAwMmI0ZGJmLi44ZWVkMDVkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9oY2QuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCkBAIC03MDAsNyArNzAwLDcgQEAKIAkvKiBUaGUgVVNCIDIuMCBzcGVjIHNheXMgMjU2IG1zLiAgVGhpcyBpcyBjbG9zZSBlbm91Z2ggYW5kIHdvbid0CiAJICogZXhjZWVkIHRoYXQgbGltaXQgaWYgSFogaXMgMTAwLiBUaGUgbWF0aCBpcyBtb3JlIGNsdW5reSB0aGFuCiAJICogbWF5YmUgZXhwZWN0ZWQsIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIHRpbWVycyBmb3IgVVNCIGRldmljZXMKLQkgKiBmaXJlIGF0IHRoZSBzYW1lIHRpbWUgdG8gZ2l2ZSB0aGUgQ1BVIGEgYnJlYWsgaW5iZXR3ZWVuICovCisJICogZmlyZSBhdCB0aGUgc2FtZSB0aW1lIHRvIGdpdmUgdGhlIENQVSBhIGJyZWFrIGluIGJldHdlZW4gKi8KIAlpZiAoaGNkLT51c2VzX25ld19wb2xsaW5nID8gSENEX1BPTExfUkgoaGNkKSA6CiAJCQkobGVuZ3RoID09IDAgJiYgaGNkLT5zdGF0dXNfdXJiICE9IE5VTEwpKQogCQltb2RfdGltZXIgKCZoY2QtPnJoX3RpbWVyLCAoamlmZmllcy8oSFovNCkgKyAxKSAqIChIWi80KSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwppbmRleCA1NjRlYWE1Li44ZmI3NTQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKQEAgLTE2NDksNyArMTY0OSw3IEBACiAKIAkvKiBtYXJrIHRoZSBkZXZpY2UgYXMgaW5hY3RpdmUsIHNvIGFueSBmdXJ0aGVyIHVyYiBzdWJtaXNzaW9ucyBmb3IKIAkgKiB0aGlzIGRldmljZSAoYW5kIGFueSBvZiBpdHMgY2hpbGRyZW4pIHdpbGwgZmFpbCBpbW1lZGlhdGVseS4KLQkgKiB0aGlzIHF1aWVzY2VzIGV2ZXJ5dGluZyBleGNlcHQgcGVuZGluZyB1cmJzLgorCSAqIHRoaXMgcXVpZXNjZXMgZXZlcnl0aGluZyBleGNlcHQgcGVuZGluZyB1cmJzLgogCSAqLwogCXVzYl9zZXRfZGV2aWNlX3N0YXRlKHVkZXYsIFVTQl9TVEFURV9OT1RBVFRBQ0hFRCk7CiAJZGV2X2luZm8oJnVkZXYtPmRldiwgIlVTQiBkaXNjb25uZWN0LCBkZXZpY2UgbnVtYmVyICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZWFybHkvZWhjaS1kYmdwLmMgYi9kcml2ZXJzL3VzYi9lYXJseS9laGNpLWRiZ3AuYwppbmRleCAwYmMwNmUyLi5hNmEzNTBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9lYXJseS9laGNpLWRiZ3AuYworKysgYi9kcml2ZXJzL3VzYi9lYXJseS9laGNpLWRiZ3AuYwpAQCAtNjQ4LDcgKzY0OCw3IEBACiAJCWlmICghKHBvcnRzYyAmIFBPUlRfQ09OTkVDVCkpCiAJCQlyZXR1cm4gLUVOT1RDT05OOwogCi0JCS8qIGJvbWIgb3V0IGNvbXBsZXRlbHkgaWYgc29tZXRoaW5nIHdlaXJkIGhhcHBlbmQgKi8KKwkJLyogYm9tYiBvdXQgY29tcGxldGVseSBpZiBzb21ldGhpbmcgd2VpcmQgaGFwcGVuZWQgKi8KIAkJaWYgKChwb3J0c2MgJiBQT1JUX0NTQykpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmMKaW5kZXggZjhkZDcyNi4uNmU0MmFhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5jCkBAIC0yNzgsNyArMjc4LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogQ2FsY3VsYXRlcyBmaWZvIHN0YXJ0IG9mIGVuZHBvaW50IGJhc2VkIG9uIHByZWNlZWRpbmcgZW5kcG9pbnRzICovCisvKiBDYWxjdWxhdGVzIGZpZm8gc3RhcnQgb2YgZW5kcG9pbnQgYmFzZWQgb24gcHJlY2VkaW5nIGVuZHBvaW50cyAqLwogc3RhdGljIGludCB1ZGNfc2V0X3R4Zmlmb19hZGRyKHN0cnVjdCB1ZGNfZXAgKmVwKQogewogCXN0cnVjdCB1ZGMJKmRldjsKQEAgLTIxMzcsNyArMjEzNyw3IEBACiAJaWYgKHVzZV9kbWEpIHsKIAkJLyogQk5BIGV2ZW50ID8gKi8KIAkJaWYgKHRtcCAmIEFNRF9CSVQoVURDX0VQU1RTX0JOQSkpIHsKLQkJCURCRyhkZXYsICJCTkEgZXAlZG91dCBvY2N1cmVkIC0gREVTUFRSID0gJXggXG4iLAorCQkJREJHKGRldiwgIkJOQSBlcCVkb3V0IG9jY3VycmVkIC0gREVTUFRSID0gJXggXG4iLAogCQkJCQllcC0+bnVtLCByZWFkbCgmZXAtPnJlZ3MtPmRlc3B0cikpOwogCQkJLyogY2xlYXIgQk5BICovCiAJCQl3cml0ZWwodG1wIHwgQU1EX0JJVChVRENfRVBTVFNfQk5BKSwgJmVwLT5yZWdzLT5zdHMpOwpAQCAtMjE1MSw3ICsyMTUxLDcgQEAKIAl9CiAJLyogSEUgZXZlbnQgPyAqLwogCWlmICh0bXAgJiBBTURfQklUKFVEQ19FUFNUU19IRSkpIHsKLQkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsICJIRSBlcCVkb3V0IG9jY3VyZWRcbiIsIGVwLT5udW0pOworCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwgIkhFIGVwJWRvdXQgb2NjdXJyZWRcbiIsIGVwLT5udW0pOwogCiAJCS8qIGNsZWFyIEhFICovCiAJCXdyaXRlbCh0bXAgfCBBTURfQklUKFVEQ19FUFNUU19IRSksICZlcC0+cmVncy0+c3RzKTsKQEAgLTIzNTQsNyArMjM1NCw3IEBACiAJCS8qIEJOQSA/ICovCiAJCWlmIChlcHN0cyAmIEFNRF9CSVQoVURDX0VQU1RTX0JOQSkpIHsKIAkJCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LAotCQkJCSJCTkEgZXAlZGluIG9jY3VyZWQgLSBERVNQVFIgPSAlMDhseCBcbiIsCisJCQkJIkJOQSBlcCVkaW4gb2NjdXJyZWQgLSBERVNQVFIgPSAlMDhseCBcbiIsCiAJCQkJZXAtPm51bSwKIAkJCQkodW5zaWduZWQgbG9uZykgcmVhZGwoJmVwLT5yZWdzLT5kZXNwdHIpKTsKIApAQCAtMjM2Nyw3ICsyMzY3LDcgQEAKIAkvKiBIRSBldmVudCA/ICovCiAJaWYgKGVwc3RzICYgQU1EX0JJVChVRENfRVBTVFNfSEUpKSB7CiAJCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LAotCQkJIkhFIGVwJWRuIG9jY3VyZWQgLSBERVNQVFIgPSAlMDhseCBcbiIsCisJCQkiSEUgZXAlZG4gb2NjdXJyZWQgLSBERVNQVFIgPSAlMDhseCBcbiIsCiAJCQllcC0+bnVtLCAodW5zaWduZWQgbG9uZykgcmVhZGwoJmVwLT5yZWdzLT5kZXNwdHIpKTsKIAogCQkvKiBjbGVhciBIRSAqLwpAQCAtMjM4NCw3ICsyMzg0LDcgQEAKIAkJCXJlcSA9IGxpc3RfZW50cnkoZXAtPnF1ZXVlLm5leHQsCiAJCQkJCXN0cnVjdCB1ZGNfcmVxdWVzdCwgcXVldWUpOwogCQkJLyoKLQkJCSAqIGxlbmd0aCBieXRlcyB0cmFuc2ZlcmVkCisJCQkgKiBsZW5ndGggYnl0ZXMgdHJhbnNmZXJyZWQKIAkJCSAqIGNoZWNrIGRtYSBkb25lIG9mIGxhc3QgZGVzYy4gaW4gUFBCRFUgbW9kZQogCQkJICovCiAJCQlpZiAodXNlX2RtYV9wcGJfZHUpIHsKQEAgLTI3ODQsNyArMjc4NCw3IEBACiAJCQkJCS8qIHdyaXRlIGZpZm8gKi8KIAkJCQkJdWRjX3R4Zmlmb193cml0ZShlcCwgJnJlcS0+cmVxKTsKIAotCQkJCQkvKiBsZW5naCBieXRlcyB0cmFuc2ZlcmVkICovCisJCQkJCS8qIGxlbmdoIGJ5dGVzIHRyYW5zZmVycmVkICovCiAJCQkJCWxlbiA9IHJlcS0+cmVxLmxlbmd0aCAtIHJlcS0+cmVxLmFjdHVhbDsKIAkJCQkJaWYgKGxlbiA+IGVwLT5lcC5tYXhwYWNrZXQpCiAJCQkJCQlsZW4gPSBlcC0+ZXAubWF4cGFja2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuaCBiL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmgKaW5kZXggNGJiYWJiYi4uMWQxYzc1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuaAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5oCkBAIC01ODQsNyArNTg0LDcgQEAKICAqIFNFVCBhbmQgR0VUIGJpdGZpZWxkcyBpbiB1MzIgdmFsdWVzCiAgKiB2aWEgY29uc3RhbnRzIGZvciBtYXNrL29mZnNldDoKICAqIDxiaXRfZmllbGRfc3R1Yl9uYW1lPiBpcyB0aGUgdGV4dCBiZXR3ZWVuCi0gKiBVRENfIGFuZCBfTUFTS3xfT0ZTIG9mIGFwcHJvcGlhdGUKKyAqIFVEQ18gYW5kIF9NQVNLfF9PRlMgb2YgYXBwcm9wcmlhdGUKICAqIGNvbnN0YW50CiAgKgogICogc2V0IGJpdGZpZWxkIHZhbHVlIGluIHUzMiB1MzJWYWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9hdDkxX3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMKaW5kZXggYmI4ZGRmMC4uOWI3Y2RiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMKQEAgLTgyNiw3ICs4MjYsNyBAQAogCXJldHVybiBzdGF0dXM7CiB9CiAKLS8qIHJlaW5pdCA9PSByZXN0b3JlIGluaXRhbCBzb2Z0d2FyZSBzdGF0ZSAqLworLyogcmVpbml0ID09IHJlc3RvcmUgaW5pdGlhbCBzb2Z0d2FyZSBzdGF0ZSAqLwogc3RhdGljIHZvaWQgdWRjX3JlaW5pdChzdHJ1Y3QgYXQ5MV91ZGMgKnVkYykKIHsKIAl1MzIgaTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYwppbmRleCBjMjI1MWM0Li44MjMxNGVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jCkBAIC00Miw3ICs0Miw3IEBACiBzdGF0aWMgc3RydWN0IHVzYl9jb21wb3NpdGVfZHJpdmVyICpjb21wb3NpdGU7CiBzdGF0aWMgaW50ICgqY29tcG9zaXRlX2dhZGdldF9iaW5kKShzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kZXYgKmNkZXYpOwogCi0vKiBTb21lIHN5c3RlbXMgd2lsbCBuZWVkIHJ1bnRpbWUgb3ZlcnJpZGVzIGZvciB0aGUgIHByb2R1Y3QgaWRlbnRpZmVycworLyogU29tZSBzeXN0ZW1zIHdpbGwgbmVlZCBydW50aW1lIG92ZXJyaWRlcyBmb3IgdGhlICBwcm9kdWN0IGlkZW50aWZpZXJzCiAgKiBwdWJsaXNoZWQgaW4gdGhlIGRldmljZSBkZXNjcmlwdG9yLCBlaXRoZXIgbnVtYmVycyBvciBzdHJpbmdzIG9yIGJvdGguCiAgKiBTdHJpbmcgcGFyYW1ldGVycyBhcmUgaW4gVVRGLTggKHN1cGVyc2V0IG9mIEFTQ0lJJ3MgNyBiaXQgY2hhcmFjdGVycykuCiAgKi8KQEAgLTIwNSwxNCArMjA1LDE0IEBACiAgKiB1c2JfaW50ZXJmYWNlX2lkKCkgaXMgY2FsbGVkIGZyb20gdXNiX2Z1bmN0aW9uLmJpbmQoKSBjYWxsYmFja3MgdG8KICAqIGFsbG9jYXRlIG5ldyBpbnRlcmZhY2UgSURzLiAgVGhlIGZ1bmN0aW9uIGRyaXZlciB3aWxsIHRoZW4gc3RvcmUgdGhhdAogICogSUQgaW4gaW50ZXJmYWNlLCBhc3NvY2lhdGlvbiwgQ0RDIHVuaW9uLCBhbmQgb3RoZXIgZGVzY3JpcHRvcnMuICBJdAotICogd2lsbCBhbHNvIGhhbmRsZSBhbnkgY29udHJvbCByZXF1ZXN0cyB0YXJnZXR0ZWQgYXQgdGhhdCBpbnRlcmZhY2UsCisgKiB3aWxsIGFsc28gaGFuZGxlIGFueSBjb250cm9sIHJlcXVlc3RzIHRhcmdldGVkIGF0IHRoYXQgaW50ZXJmYWNlLAogICogcGFydGljdWxhcmx5IGNoYW5naW5nIGl0cyBhbHRzZXR0aW5nIHZpYSBzZXRfYWx0KCkuICBUaGVyZSBtYXkKICAqIGFsc28gYmUgY2xhc3Mtc3BlY2lmaWMgb3IgdmVuZG9yLXNwZWNpZmljIHJlcXVlc3RzIHRvIGhhbmRsZS4KICAqCiAgKiBBbGwgaW50ZXJmYWNlIGlkZW50aWZpZXIgc2hvdWxkIGJlIGFsbG9jYXRlZCB1c2luZyB0aGlzIHJvdXRpbmUsIHRvCiAgKiBlbnN1cmUgdGhhdCBmb3IgZXhhbXBsZSBkaWZmZXJlbnQgZnVuY3Rpb25zIGRvbid0IHdyb25nbHkgYXNzaWduCiAgKiBkaWZmZXJlbnQgbWVhbmluZ3MgdG8gdGhlIHNhbWUgaWRlbnRpZmllci4gIE5vdGUgdGhhdCBzaW5jZSBpbnRlcmZhY2UKLSAqIGlkZW50aWZlcnMgYXJlIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMsIGZ1bmN0aW9ucyB1c2VkIGluIG1vcmUgdGhhbgorICogaWRlbnRpZmllcnMgYXJlIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMsIGZ1bmN0aW9ucyB1c2VkIGluIG1vcmUgdGhhbgogICogb25lIGNvbmZpZ3VyYXRpb24gKG9yIG1vcmUgdGhhbiBvbmNlIGluIGEgZ2l2ZW4gY29uZmlndXJhdGlvbikgbmVlZAogICogbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHJlbGV2YW50IGRlc2NyaXB0b3JzLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX2F1ZGlvLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9hdWRpby5jCmluZGV4IDAwOTc1ZWQuLjlhYmVjZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX2F1ZGlvLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfYXVkaW8uYwpAQCAtNzQyLDcgKzc0Miw3IEBACiB9CiAKIC8qKgotICogYXVkaW9fYmluZF9jb25maWcgLSBhZGQgVVNCIGF1ZGlvIGZ1Y250aW9uIHRvIGEgY29uZmlndXJhdGlvbgorICogYXVkaW9fYmluZF9jb25maWcgLSBhZGQgVVNCIGF1ZGlvIGZ1bmN0aW9uIHRvIGEgY29uZmlndXJhdGlvbgogICogQGM6IHRoZSBjb25maWd1cmF0aW9uIHRvIHN1cGNhcmQgdGhlIFVTQiBhdWRpbyBmdW5jdGlvbgogICogQ29udGV4dDogc2luZ2xlIHRocmVhZGVkIGR1cmluZyBnYWRnZXQgc2V0dXAKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9uY20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX25jbS5jCmluZGV4IDEzMGVlZTYuLjg2OTAyYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX25jbS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX25jbS5jCkBAIC0xMTEsNyArMTExLDcgQEAKICNkZWZpbmUgTlRCX09VVF9TSVpFCQkxNjM4NAogCiAvKgotICogc2ticyBvZiBzaXplIGxlc3MgdGhhbiB0aGF0IHdpbGwgbm90IGJlIGFsbGlnbmVkCisgKiBza2JzIG9mIHNpemUgbGVzcyB0aGFuIHRoYXQgd2lsbCBub3QgYmUgYWxpZ25lZAogICogdG8gTkNNJ3MgZHdOdGJJbk1heFNpemUgdG8gc2F2ZSBidXMgYmFuZHdpZHRoCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuaCBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmgKaW5kZXggYmVhNWI4Mi4uZTM1ZTI0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuaAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5oCkBAIC0yMDgsMTQgKzIwOCwxNCBAQAogLyogRnJhbWUgc3RhdHVzIGZpZWxkICovCiAvKiBSZWNlaXZlIHNpZGUgKi8KICNkZWZpbmUgRlJBTUVfT0sgICAgICAgICAgICAgICAweDAwMDAwMDAwIC8qIEZyYW1lIHRyYW5taXR0ZWQgb3IgcmVjZWl2ZWQgT0sgKi8KLSNkZWZpbmUgRlJBTUVfRVJST1IgICAgICAgICAgICAweDgwMDAwMDAwIC8qIEVycm9yIG9jY3VyZWQgb24gZnJhbWUgKi8KKyNkZWZpbmUgRlJBTUVfRVJST1IgICAgICAgICAgICAweDgwMDAwMDAwIC8qIEVycm9yIG9jY3VycmVkIG9uIGZyYW1lICovCiAjZGVmaW5lIFNUQVJUX0ZSQU1FX0xPU1QgICAgICAgMHg0MDAwMDAwMCAvKiBTVEFSVF9GUkFNRV9MT1NUICovCiAjZGVmaW5lIEVORF9GUkFNRV9MT1NUICAgICAgICAgMHgyMDAwMDAwMCAvKiBFTkRfRlJBTUVfTE9TVCAqLwogI2RlZmluZSBSWF9FUl9OT05PQ1QgICAgICAgICAgIDB4MTAwMDAwMDAgLyogUnggTm9uIE9jdGV0IEFsaWduZWQgUGFja2V0ICovCiAjZGVmaW5lIFJYX0VSX0JJVFNUVUZGICAgICAgICAgMHgwODAwMDAwMCAvKiBGcmFtZSBBYm9ydGVkIC0tUmVjZWl2ZWQgcGFja2V0CiAJCQkJCSAgICAgd2l0aCBiaXQgc3R1ZmYgZXJyb3IgKi8KICNkZWZpbmUgUlhfRVJfQ1JDICAgICAgICAgICAgICAweDA0MDAwMDAwIC8qIFJlY2VpdmVkIHBhY2tldCB3aXRoIENSQyBlcnJvciAqLwotI2RlZmluZSBSWF9FUl9PVkVSVU4gICAgICAgICAgIDB4MDIwMDAwMDAgLyogT3Zlci1ydW4gb2NjdXJlZCBvbiByZWNlcHRpb24gKi8KKyNkZWZpbmUgUlhfRVJfT1ZFUlVOICAgICAgICAgICAweDAyMDAwMDAwIC8qIE92ZXItcnVuIG9jY3VycmVkIG9uIHJlY2VwdGlvbiAqLwogI2RlZmluZSBSWF9FUl9QSUQgICAgICAgICAgICAgIDB4MDEwMDAwMDAgLyogV3JvbmcgUElEIHJlY2VpdmVkICovCiAvKiBUcmFubWl0IHNpZGUgKi8KICNkZWZpbmUgVFhfRVJfTkFLICAgICAgICAgICAgICAweDAwODAwMDAwIC8qIFJlY2VpdmVkIE5BSyBoYW5kc2hha2UgKi8KQEAgLTM3OSw3ICszNzksNyBAQAogI2RlZmluZSBUX0xTUCAgICAgICAgIDB4MDEwMDAwMDAgICAgICAgICAvKiBMb3ctc3BlZWQgdHJhbnNhY3Rpb24gKi8KICNkZWZpbmUgVF9QSUQgICAgICAgICAweDAwYzAwMDAwICAgICAgICAgLyogcGFja2V0IGlkICovCiAjZGVmaW5lIFRfTkFLICAgICAgICAgMHgwMDEwMDAwMCAgICAgICAgIC8qIE5vIGFjay4gKi8KLSNkZWZpbmUgVF9TVEFMICAgICAgICAweDAwMDgwMDAwICAgICAgICAgLyogU3RhbGwgcmVjaWV2ZWQgKi8KKyNkZWZpbmUgVF9TVEFMICAgICAgICAweDAwMDgwMDAwICAgICAgICAgLyogU3RhbGwgcmVjZWl2ZWQgKi8KICNkZWZpbmUgVF9UTyAgICAgICAgICAweDAwMDQwMDAwICAgICAgICAgLyogdGltZSBvdXQgKi8KICNkZWZpbmUgVF9VTiAgICAgICAgICAweDAwMDIwMDAwICAgICAgICAgLyogdW5kZXJydW4gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91ZGNfY29yZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91ZGNfY29yZS5jCmluZGV4IDkxMmNiOGUuLjA3NDk5YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdWRjX2NvcmUuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VkY19jb3JlLmMKQEAgLTQ2NCw3ICs0NjQsNyBAQAogCiAJbWF4ID0gbGUxNl90b19jcHUoZGVzYy0+d01heFBhY2tldFNpemUpOwogCi0JLyogRGlzYWJsZSBhdXRvbWF0aWMgemxwIGdlbmVyYXRpb24uICBEcml2ZXIgaXMgcmVwb25zaWJsZSB0byBpbmRpY2F0ZQorCS8qIERpc2FibGUgYXV0b21hdGljIHpscCBnZW5lcmF0aW9uLiAgRHJpdmVyIGlzIHJlc3BvbnNpYmxlIHRvIGluZGljYXRlCiAJICogZXhwbGljaXRseSB0aHJvdWdoIHJlcS0+cmVxLnplcm8uICBUaGlzIGlzIG5lZWRlZCB0byBlbmFibGUgbXVsdGktdGQKIAkgKiByZXF1ZXN0LiAqLwogCXpsdCA9IDE7CkBAIC02NDgsNyArNjQ4LDcgQEAKIAkJCXwgRVBfUVVFVUVfSEVBRF9TVEFUVVNfSEFMVCkpOwogCWRRSC0+c2l6ZV9pb2NfaW50X3N0cyAmPSB0ZW1wOwogCi0JLyogRW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgUUggd2lsbCBvY2N1cmUgYmVmb3JlIHByaW1pbmcuICovCisJLyogRW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgUUggd2lsbCBvY2N1ciBiZWZvcmUgcHJpbWluZy4gKi8KIAl3bWIoKTsKIAogCS8qIFByaW1lIGVuZHBvaW50IGJ5IHdyaXRpbmcgMSB0byBFTkRQVFBSSU1FICovCkBAIC0xNDU5LDcgKzE0NTksNyBAQAogCQkJCXN0YXR1cyA9IC1FSUxTRVE7CiAJCQkJYnJlYWs7CiAJCQl9IGVsc2UKLQkJCQlFUlIoIlVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQgKDB4JXgpIVxuIiwKKwkJCQlFUlIoIlVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkICgweCV4KSFcbiIsCiAJCQkJCWVycm9ycyk7CiAKIAkJfSBlbHNlIGlmIChsZTMyX3RvX2NwdShjdXJyX3RkLT5zaXplX2lvY19zdHMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmgKaW5kZXggMjBhZWNlZS4uZTg4Y2NlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5oCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuaApAQCAtMTUsNyArMTUsNyBAQAogCXU4IHJlczFbMjU2XTsKIAl1MTYgY2FwbGVuZ3RoOwkJLyogQ2FwYWJpbGl0eSBSZWdpc3RlciBMZW5ndGggKi8KIAl1MTYgaGNpdmVyc2lvbjsJCS8qIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgVmVyc2lvbiAqLwotCXUzMiBoY3NwYXJhbXM7CQkvKiBIb3N0IENvbnRyb2xsZXIgU3RydWN0dWFsIFBhcmFtZXRlcnMgKi8KKwl1MzIgaGNzcGFyYW1zOwkJLyogSG9zdCBDb250cm9sbGVyIFN0cnVjdHVyYWwgUGFyYW1ldGVycyAqLwogCXUzMiBoY2NwYXJhbXM7CQkvKiBIb3N0IENvbnRyb2xsZXIgQ2FwYWJpbGl0eSBQYXJhbWV0ZXJzICovCiAJdTggcmVzMlsyMF07CiAJdTMyIGRjaXZlcnNpb247CQkvKiBEZXZpY2UgQ29udHJvbGxlciBJbnRlcmZhY2UgVmVyc2lvbiAqLwpAQCAtNTIsNyArNTIsNyBAQAogCXU4IHJlczFbMjU2XTsKIAl1MTYgY2FwbGVuZ3RoOwkJLyogQ2FwYWJpbGl0eSBSZWdpc3RlciBMZW5ndGggKi8KIAl1MTYgaGNpdmVyc2lvbjsJCS8qIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgVmVyc2lvbiAqLwotCXUzMiBoY3NwYXJhbXM7CQkvKiBIb3N0IENvbnRyb2xsZXIgU3RydWN0dWFsIFBhcmFtZXRlcnMgKi8KKwl1MzIgaGNzcGFyYW1zOwkJLyogSG9zdCBDb250cm9sbGVyIFN0cnVjdHVyYWwgUGFyYW1ldGVycyAqLwogCXUzMiBoY2NwYXJhbXM7CQkvKiBIb3N0IENvbnRyb2xsZXIgQ2FwYWJpbGl0eSBQYXJhbWV0ZXJzICovCiAJdTggcmVzMlsyMF07CiAJdTMyIGRjaXZlcnNpb247CQkvKiBEZXZpY2UgQ29udHJvbGxlciBJbnRlcmZhY2UgVmVyc2lvbiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2dtaWRpLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZ21pZGkuYwppbmRleCAwYWI3ZTE0Li40N2I4NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZ21pZGkuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZ21pZGkuYwpAQCAtNjcsNyArNjcsNyBAQAogbW9kdWxlX3BhcmFtKGlkLCBjaGFycCwgMDQ0NCk7CiBNT0RVTEVfUEFSTV9ERVNDKGlkLCAiSUQgc3RyaW5nIGZvciB0aGUgVVNCIE1JREkgR2FkZ2V0IGFkYXB0ZXIuIik7CiAKLS8qIFNvbWUgc3lzdGVtcyB3aWxsIHdhbnQgZGlmZmVyZW50IHByb2R1Y3QgaWRlbnRpZmVycyBwdWJsaXNoZWQgaW4gdGhlCisvKiBTb21lIHN5c3RlbXMgd2lsbCB3YW50IGRpZmZlcmVudCBwcm9kdWN0IGlkZW50aWZpZXJzIHB1Ymxpc2hlZCBpbiB0aGUKICAqIGRldmljZSBkZXNjcmlwdG9yLCBlaXRoZXIgbnVtYmVycyBvciBzdHJpbmdzIG9yIGJvdGguICBUaGVzZSBzdHJpbmcKICAqIHBhcmFtZXRlcnMgYXJlIGluIFVURi04IChzdXBlcnNldCBvZiBBU0NJSSdzIDcgYml0IGNoYXJhY3RlcnMpLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGFuZ3dlbGxfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGFuZ3dlbGxfdWRjLmMKaW5kZXggMWVjYThiNC4uOWNlZTg4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xhbmd3ZWxsX3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sYW5nd2VsbF91ZGMuYwpAQCAtNjQyLDcgKzY0Miw3IEBACiAJZHFoLT5kdGRfc3RhdHVzICY9IGR0ZF9zdGF0dXM7CiAJZGV2X3ZkYmcoJmRldi0+cGRldi0+ZGV2LCAiZHFoLT5kdGRfc3RhdHVzID0gMHgleFxuIiwgZHFoLT5kdGRfc3RhdHVzKTsKIAotCS8qIGVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIGRRSCB3aWxsIG9jY3VyZSBiZWZvcmUgcHJpbWluZyAqLworCS8qIGVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIGRRSCB3aWxsIG9jY3VyIGJlZm9yZSBwcmltaW5nICovCiAJd21iKCk7CiAKIAkvKiB3cml0ZSAxIHRvIGVuZHB0cHJpbWUgcmVnaXN0ZXIgdG8gUFJJTUUgZW5kcG9pbnQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9tdl91ZGNfY29yZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L212X3VkY19jb3JlLmMKaW5kZXggZDU0NjhhNy4uYjYyYjI2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L212X3VkY19jb3JlLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L212X3VkY19jb3JlLmMKQEAgLTMyNSw3ICszMjUsNyBAQAogCiAJCQkvKgogCQkJICogRW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgUUggd2lsbAotCQkJICogb2NjdXJlIGJlZm9yZSBwcmltaW5nLgorCQkJICogb2NjdXIgYmVmb3JlIHByaW1pbmcuCiAJCQkgKi8KIAkJCXdtYigpOwogCkBAIC0zMzgsNyArMzM4LDcgQEAKIAkJCSYgRVBfUVVFVUVfSEVBRF9ORVhUX1BPSU5URVJfTUFTSzs7CiAJCWRxaC0+c2l6ZV9pb2NfaW50X3N0cyA9IDA7CiAKLQkJLyogRW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgUUggd2lsbCBvY2N1cmUgYmVmb3JlIHByaW1pbmcuICovCisJCS8qIEVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIFFIIHdpbGwgb2NjdXIgYmVmb3JlIHByaW1pbmcuICovCiAJCXdtYigpOwogCiAJCS8qIFByaW1lIHRoZSBFbmRwb2ludCAqLwpAQCAtMTg0NSw3ICsxODQ1LDcgQEAKIAkJcmV0dXJuIElSUV9OT05FOwogCX0KIAotCS8qIENsZWFyIGFsbCB0aGUgaW50ZXJydXB0cyBvY2N1cmVkICovCisJLyogQ2xlYXIgYWxsIHRoZSBpbnRlcnJ1cHRzIG9jY3VycmVkICovCiAJd3JpdGVsKHN0YXR1cywgJnVkYy0+b3BfcmVncy0+dXNic3RzKTsKIAogCWlmIChzdGF0dXMgJiBVU0JTVFNfRVJSKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMKaW5kZXggZDA5MTU1Yi4uMjQ2OTZmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jCkBAIC0xMTcsNyArMTE3LDcgQEAKIAogLyogZW5hYmxlX3N1c3BlbmQgLS0gV2hlbiBlbmFibGVkLCB0aGUgZHJpdmVyIHdpbGwgcmVzcG9uZCB0bwogICogVVNCIHN1c3BlbmQgcmVxdWVzdHMgYnkgcG93ZXJpbmcgZG93biB0aGUgTkVUMjI4MC4gIE90aGVyd2lzZSwKLSAqIFVTQiBzdXNwZW5kIHJlcXVlc3RzIHdpbGwgYmUgaWdub3JlZC4gIFRoaXMgaXMgYWNjZXB0aWJsZSBmb3IKKyAqIFVTQiBzdXNwZW5kIHJlcXVlc3RzIHdpbGwgYmUgaWdub3JlZC4gIFRoaXMgaXMgYWNjZXB0YWJsZSBmb3IKICAqIHNlbGYtcG93ZXJlZCBkZXZpY2VzCiAgKi8KIHN0YXRpYyBpbnQgZW5hYmxlX3N1c3BlbmQgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L25va2lhLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbm9raWEuYwppbmRleCBiNTM2NGY5ZC4uNTVjYTYzYWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbm9raWEuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbm9raWEuYwpAQCAtMjAzLDcgKzIwMyw3IEBACiAJCWdvdG8gZXJyX3VzYjsKIAl9CiAKLQkvKiBmaW5hbHkgcmVnaXN0ZXIgdGhlIGNvbmZpZ3VyYXRpb24gKi8KKwkvKiBmaW5hbGx5IHJlZ2lzdGVyIHRoZSBjb25maWd1cmF0aW9uICovCiAJc3RhdHVzID0gdXNiX2FkZF9jb25maWcoY2RldiwgJm5va2lhX2NvbmZpZ181MDBtYV9kcml2ZXIsCiAJCQlub2tpYV9iaW5kX2NvbmZpZyk7CiAJaWYgKHN0YXR1cyA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHJpbnRlci5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3ByaW50ZXIuYwppbmRleCAxMmZmNmNmLi5jM2YyYmQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHJpbnRlci5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9wcmludGVyLmMKQEAgLTEyNiw3ICsxMjYsNyBAQAogI2RlZmluZSBQUklOVEVSX1ZFTkRPUl9OVU0JMHgwNTI1CQkvKiBOZXRDaGlwICovCiAjZGVmaW5lIFBSSU5URVJfUFJPRFVDVF9OVU0JMHhhNGE4CQkvKiBMaW51eC1VU0IgUHJpbnRlciBHYWRnZXQgKi8KIAotLyogU29tZSBzeXN0ZW1zIHdpbGwgd2FudCBkaWZmZXJlbnQgcHJvZHVjdCBpZGVudGlmZXJzIHB1Ymxpc2hlZCBpbiB0aGUKKy8qIFNvbWUgc3lzdGVtcyB3aWxsIHdhbnQgZGlmZmVyZW50IHByb2R1Y3QgaWRlbnRpZmllcnMgcHVibGlzaGVkIGluIHRoZQogICogZGV2aWNlIGRlc2NyaXB0b3IsIGVpdGhlciBudW1iZXJzIG9yIHN0cmluZ3Mgb3IgYm90aC4gIFRoZXNlIHN0cmluZwogICogcGFyYW1ldGVycyBhcmUgaW4gVVRGLTggKHN1cGVyc2V0IG9mIEFTQ0lJJ3MgNyBiaXQgY2hhcmFjdGVycykuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyN3hfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMjd4X3VkYy5jCmluZGV4IDJlZmQ2NzMuLjc4YTM5YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyN3hfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTI3eF91ZGMuYwpAQCAtNjAyLDcgKzYwMiw3IEBACiAvKioKICAqIGluY19lcF9zdGF0c19ieXRlcyAtIFVwZGF0ZSBlcCBzdGF0cyBjb3VudHMKICAqIEBlcDogcGh5c2ljYWwgZW5kcG9pbnQKLSAqIEBjb3VudDogYnl0ZXMgdHJhbnNmZXJlZCBvbiBlbmRwb2ludAorICogQGNvdW50OiBieXRlcyB0cmFuc2ZlcnJlZCBvbiBlbmRwb2ludAogICogQGlzX2luOiBlcCBkaXJlY3Rpb24gKFVTQl9ESVJfSU4gb3IgMCkKICAqLwogc3RhdGljIHZvaWQgaW5jX2VwX3N0YXRzX2J5dGVzKHN0cnVjdCBweGFfZXAgKmVwLCBpbnQgY291bnQsIGludCBpc19pbikKQEAgLTg3Nyw3ICs4NzcsNyBAQAogICogSWYgdGhlcmUgaXMgbGVzcyBzcGFjZSBpbiByZXF1ZXN0IHRoYW4gYnl0ZXMgcmVjZWl2ZWQgaW4gT1VUIGVuZHBvaW50LAogICogYnl0ZXMgYXJlIGxlZnQgaW4gdGhlIE9VVCBlbmRwb2ludC4KICAqCi0gKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIHdlcmUgYWN0dWFsbHkgdHJhbnNmZXJlZAorICogUmV0dXJucyBob3cgbWFueSBieXRlcyB3ZXJlIGFjdHVhbGx5IHRyYW5zZmVycmVkCiAgKi8KIHN0YXRpYyBpbnQgcmVhZF9wYWNrZXQoc3RydWN0IHB4YV9lcCAqZXAsIHN0cnVjdCBweGEyN3hfcmVxdWVzdCAqcmVxKQogewpAQCAtOTE0LDcgKzkxNCw3IEBACiAgKiBlbmRwb2ludC4gSWYgdGhlcmUgYXJlIG5vIGJ5dGVzIHRvIHRyYW5zZmVyLCBkb2Vzbid0IHdyaXRlIGFueXRoaW5nCiAgKiB0byBwaHlzaWNhbCBlbmRwb2ludC4KICAqCi0gKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIHdlcmUgYWN0dWFsbHkgdHJhbnNmZXJlZC4KKyAqIFJldHVybnMgaG93IG1hbnkgYnl0ZXMgd2VyZSBhY3R1YWxseSB0cmFuc2ZlcnJlZC4KICAqLwogc3RhdGljIGludCB3cml0ZV9wYWNrZXQoc3RydWN0IHB4YV9lcCAqZXAsIHN0cnVjdCBweGEyN3hfcmVxdWVzdCAqcmVxLAogCQkJdW5zaWduZWQgaW50IG1heCkKQEAgLTk5MSw3ICs5OTEsNyBAQAogICogY2FsbGVyIGd1YXJhbnRlZXMgYXQgbGVhc3Qgb25lIHBhY2tldCBidWZmZXIgaXMgcmVhZHkgKG9yIGEgemxwKS4KICAqIERvZXNuJ3QgY29tcGxldGUgdGhlIHJlcXVlc3QsIHRoYXQncyB0aGUgY2FsbGVyJ3Mgam9iCiAgKgotICogUmV0dXJucyAxIGlmIHJlcXVlc3QgZnVsbHkgdHJhbnNmZXJlZCwgMCBpZiBwYXJ0aWFsIHRyYW5zZmVyCisgKiBSZXR1cm5zIDEgaWYgcmVxdWVzdCBmdWxseSB0cmFuc2ZlcnJlZCwgMCBpZiBwYXJ0aWFsIHRyYW5zZmVyCiAgKi8KIHN0YXRpYyBpbnQgd3JpdGVfZmlmbyhzdHJ1Y3QgcHhhX2VwICplcCwgc3RydWN0IHB4YTI3eF9yZXF1ZXN0ICpyZXEpCiB7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQAogICogU2VuZHMgYSByZXF1ZXN0IChvciBhIHBhcnQgb2YgdGhlIHJlcXVlc3QpIHRvIHRoZSBjb250cm9sIGVuZHBvaW50IChlcDAgaW4pLgogICogSWYgdGhlIHJlcXVlc3QgZG9lc24ndCBmaXQsIHRoZSByZW1haW5pbmcgcGFydCB3aWxsIGJlIHNlbnQgZnJvbSBpcnEuCiAgKiBUaGUgcmVxdWVzdCBpcyBjb25zaWRlcmVkIGZ1bGx5IHdyaXR0ZW4gb25seSBpZiBlaXRoZXIgOgotICogICAtIGxhc3Qgd3JpdGUgdHJhbnNmZXJlZCBhbGwgcmVtYWluaW5nIGJ5dGVzLCBidXQgZmlmbyB3YXMgbm90IGZ1bGx5IGZpbGxlZAorICogICAtIGxhc3Qgd3JpdGUgdHJhbnNmZXJyZWQgYWxsIHJlbWFpbmluZyBieXRlcywgYnV0IGZpZm8gd2FzIG5vdCBmdWxseSBmaWxsZWQKICAqICAgLSBsYXN0IHdyaXRlIHdhcyBhIDAgbGVuZ3RoIHdyaXRlCiAgKgogICogUmV0dXJucyAxIGlmIHJlcXVlc3QgZnVsbHkgd3JpdHRlbiwgMCBpZiByZXF1ZXN0IG9ubHkgcGFydGlhbGx5IHNlbnQKQEAgLTE1NDgsNyArMTU0OCw3IEBACiAgKiBweGFfdWRjX3dha2V1cCAtIEZvcmNlIHVkYyBkZXZpY2Ugb3V0IG9mIHN1c3BlbmQKICAqIEBfZ2FkZ2V0OiB1c2IgZ2FkZ2V0CiAgKgotICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWxsLCBlcnJvciBjb2RlIG90aGVyd2lzZQorICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIGVycm9yIGNvZGUgb3RoZXJ3aXNlCiAgKi8KIHN0YXRpYyBpbnQgcHhhX3VkY193YWtldXAoc3RydWN0IHVzYl9nYWRnZXQgKl9nYWRnZXQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvczNjLWhzb3RnLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvczNjLWhzb3RnLmMKaW5kZXggZWY4MjVjMy4uMDkxMjY3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3MzYy1oc290Zy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MtaHNvdGcuYwpAQCAtNDEsOCArNDEsOCBAQAogLyogRVAwX01QU19MSU1JVAogICoKICAqIFVuZm9ydHVuYXRlbHkgdGhlcmUgc2VlbXMgdG8gYmUgYSBsaW1pdCBvZiB0aGUgYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4KLSAqIGJlIHRyYW5zZmVyZWQgYnkgSU4gdHJhbnNhY3Rpb25zIG9uIEVQMC4gVGhpcyBpcyBlaXRoZXIgMTI3IGJ5dGVzIG9yIDMKLSAqIHBhY2tldHMgKHdoaWNoIHByYWN0aWFsbHkgbWVhbnMgMSBwYWNrZXQgYW5kIDYzIGJ5dGVzIG9mIGRhdGEpIHdoZW4gdGhlCisgKiBiZSB0cmFuc2ZlcnJlZCBieSBJTiB0cmFuc2FjdGlvbnMgb24gRVAwLiBUaGlzIGlzIGVpdGhlciAxMjcgYnl0ZXMgb3IgMworICogcGFja2V0cyAod2hpY2ggcHJhY3RpY2FsbHkgbWVhbnMgMSBwYWNrZXQgYW5kIDYzIGJ5dGVzIG9mIGRhdGEpIHdoZW4gdGhlCiAgKiBNUFMgaXMgc2V0IHRvIDY0LgogICoKICAqIFRoaXMgbWVhbnMgaWYgd2UgYXJlIHdhbnRpbmcgdG8gbW92ZSA+MTI3IGJ5dGVzIG9mIGRhdGEsIHdlIG5lZWQgdG8KQEAgLTc4Myw3ICs3ODMsNyBAQAogCQkgICAgICAgaHNvdGctPnJlZ3MgKyBTM0NfRElFUElOVChpbmRleCkpOwogCiAJLyogTm90ZSwgdHJ5aW5nIHRvIGNsZWFyIHRoZSBOQUsgaGVyZSBjYXVzZXMgcHJvYmxlbXMgd2l0aCB0cmFuc21pdAotCSAqIG9uIHRoZSBTM0M2NDAwIGVuZGluZyB1cCB3aXRoIHRoZSBUWEZJRk8gYmVjb21taW5nIGZ1bGwuICovCisJICogb24gdGhlIFMzQzY0MDAgZW5kaW5nIHVwIHdpdGggdGhlIFRYRklGTyBiZWNvbWluZyBmdWxsLiAqLwogCiAJLyogY2hlY2sgZXAgaXMgZW5hYmxlZCAqLwogCWlmICghKHJlYWRsKGhzb3RnLT5yZWdzICsgZXBjdHJsX3JlZykgJiBTM0NfRHhFUENUTF9FUEVuYSkpCkBAIC0xMTc2LDEwICsxMTc2LDEwIEBACiAJCXdyaXRlbChjdHJsLCBoc290Zy0+cmVncyArIHJlZyk7CiAKIAkJZGV2X2RiZyhoc290Zy0+ZGV2LAotCQkJIndyaXRlbiBEeEVQQ1RMPTB4JTA4eCB0byAlMDh4IChEeEVQQ1RMPTB4JTA4eClcbiIsCisJCQkid3JpdHRlbiBEeEVQQ1RMPTB4JTA4eCB0byAlMDh4IChEeEVQQ1RMPTB4JTA4eClcbiIsCiAJCQljdHJsLCByZWcsIHJlYWRsKGhzb3RnLT5yZWdzICsgcmVnKSk7CiAKLQkJLyogZG9uJ3QgYmVsaXZlIHdlIG5lZWQgdG8gYW55dGhpbmcgbW9yZSB0byBnZXQgdGhlIEVQCisJCS8qIGRvbid0IGJlbGlldmUgd2UgbmVlZCB0byBhbnl0aGluZyBtb3JlIHRvIGdldCB0aGUgRVAKIAkJICogdG8gcmVwbHkgd2l0aCBhIFNUQUxMIHBhY2tldCAqLwogCX0KIH0KQEAgLTE0MTYsNyArMTQxNiw3IEBACiAgKiB0cmFuc2FjdGlvbi4KICAqCiAgKiBOb3RlLCBzaW5jZSB3ZSBkb24ndCB3cml0ZSBhbnkgZGF0YSB0byB0aGUgVHhGSUZPLCB0aGVuIGl0IGlzCi0gKiBjdXJyZW50bHkgYmVsaXZlZCB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIHdhaXQgZm9yIGFueSBzcGFjZSBpbgorICogY3VycmVudGx5IGJlbGlldmVkIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gd2FpdCBmb3IgYW55IHNwYWNlIGluCiAgKiB0aGUgVHhGSUZPLgogICovCiBzdGF0aWMgdm9pZCBzM2NfaHNvdGdfc2VuZF96bHAoc3RydWN0IHMzY19oc290ZyAqaHNvdGcsCkBAIC0xNTQwLDcgKzE1NDAsNyBAQAogICogdGhhdCByZXF1aXJlcyBwcm9jZXNzaW5nLCBzbyBmaW5kIG91dCB3aGF0IGlzIGluIHRoZXJlIGFuZCBkbyB0aGUKICAqIGFwcHJvcHJpYXRlIHJlYWQuCiAgKgotICogVGhlIFJYRklGTyBpcyBhIHRydWUgRklGTywgdGhlIHBhY2tldHMgY29tbWluZyBvdXQgYXJlIHN0aWxsIGluIHBhY2tldAorICogVGhlIFJYRklGTyBpcyBhIHRydWUgRklGTywgdGhlIHBhY2tldHMgY29taW5nIG91dCBhcmUgc3RpbGwgaW4gcGFja2V0CiAgKiBjaHVua3MsIHNvIGlmIHlvdSBoYXZlIHggcGFja2V0cyByZWNlaXZlZCBvbiBhbiBlbmRwb2ludCB5b3UnbGwgZ2V0IHgKICAqIEZJRk8gZXZlbnRzIGRlbGl2ZXJlZCwgZWFjaCB3aXRoIGEgcGFja2V0J3Mgd29ydGggb2YgZGF0YSBpbiBpdC4KICAqCkBAIC0yMTg4LDcgKzIxODgsNyBAQAogCiAJLyogdGhlc2UgbmV4dCB0d28gc2VlbSB0byBjcm9wLXVwIG9jY2FzaW9uYWxseSBjYXVzaW5nIHRoZSBjb3JlCiAJICogdG8gc2h1dGRvd24gdGhlIFVTQiB0cmFuc2Zlciwgc28gdHJ5IGNsZWFyaW5nIHRoZW0gYW5kIGxvZ2dpbmcKLQkgKiB0aGUgb2NjdXJlbmNlLiAqLworCSAqIHRoZSBvY2N1cnJlbmNlLiAqLwogCiAJaWYgKGdpbnRzdHMgJiBTM0NfR0lOVFNUU19HT1VUTmFrRWZmKSB7CiAJCWRldl9pbmZvKGhzb3RnLT5kZXYsICJHT1VUTmFrRWZmIHRyaWdnZXJlZFxuIik7CkBAIC0yNDY5LDcgKzI0NjksNyBAQAogCS5xdWV1ZQkJPSBzM2NfaHNvdGdfZXBfcXVldWUsCiAJLmRlcXVldWUJPSBzM2NfaHNvdGdfZXBfZGVxdWV1ZSwKIAkuc2V0X2hhbHQJPSBzM2NfaHNvdGdfZXBfc2V0aGFsdCwKLQkvKiBub3RlLCBkb24ndCBiZWxpdmUgd2UgaGF2ZSBhbnkgY2FsbCBmb3IgdGhlIGZpZm8gcm91dGluZXMgKi8KKwkvKiBub3RlLCBkb24ndCBiZWxpZXZlIHdlIGhhdmUgYW55IGNhbGwgZm9yIHRoZSBmaWZvIHJvdXRpbmVzICovCiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZwppbmRleCA5NDgzYWNkLi5lMGUwNzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcKKysrIGIvZHJpdmVycy91c2IvaG9zdC9LY29uZmlnCkBAIC00MDIsNyArNDAyLDcgQEAKIAlkZXBlbmRzIG9uIFVTQl9GSENJX0hDRCAmJiBERUJVR19GUwogCWhlbHAKIAkgIFNheSAieSIgdG8gc2VlIHNvbWUgRkhDSSBkZWJ1ZyBpbmZvcm1hdGlvbiBhbmQgc3RhdGlzdGljcwotCSAgdGhyb3VnaHQgZGVidWdmcy4KKwkgIHRocm91Z2ggZGVidWdmcy4KIAogY29uZmlnIFVTQl9VMTMyX0hDRAogCXRyaXN0YXRlICJFbGFuIFUxMzIgQWRhcHRlciBIb3N0IENvbnRyb2xsZXIiCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCmluZGV4IGY4NmQzZmEuLjMzM2RkYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oCkBAIC02NDQsNyArNjQ0LDcgQEAKIC8qCiAgKiBPbiBjZXJ0YWluIHBwYy00NHggU29DIHRoZXJlIGlzIGEgSFcgaXNzdWUsIHRoYXQgY291bGQgb25seSB3b3JrZWQgYXJvdW5kIHdpdGgKICAqIGV4cGxpY2l0IHN1c3BlbmQvb3BlcmF0ZSBvZiBPSENJLiBUaGlzIGZ1bmN0aW9uIGhlcmVieSBtYWtlcyBzZW5zZSBvbmx5IG9uIHRoYXQgYXJjaC4KLSAqIE90aGVyIGNvbW1vbiBiaXRzIGFyZSBkZXBlbmRhbnQgb24gaGFzX2FtY2NfdXNiMjMgcXVpcmsgZmxhZy4KKyAqIE90aGVyIGNvbW1vbiBiaXRzIGFyZSBkZXBlbmRlbnQgb24gaGFzX2FtY2NfdXNiMjMgcXVpcmsgZmxhZy4KICAqLwogI2lmZGVmIENPTkZJR180NHgKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfb2hjaV9oY2ZzKHN0cnVjdCBlaGNpX2hjZCAqZWhjaSwgaW50IG9wZXJhdGlvbmFsKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9maGNpLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9maGNpLWhjZC5jCmluZGV4IGI4NGZmN2UuLjE5MjIzYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktaGNkLmMKQEAgLTQwMSw3ICs0MDEsNyBAQAogCQkvKiAxIHRkIGZybyBzZXR1cCwxIGZvciBhY2sgKi8KIAkJc2l6ZSA9IDI7CiAJY2FzZSBQSVBFX0JVTEs6Ci0JCS8qIG9uZSB0ZCBmb3IgZXZlcnkgNDA5NiBieXRlcyhjYW4gYmUgdXB0byA4aykgKi8KKwkJLyogb25lIHRkIGZvciBldmVyeSA0MDk2IGJ5dGVzKGNhbiBiZSB1cCB0byA4aykgKi8KIAkJc2l6ZSArPSB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggLyA0MDk2OwogCQkvKiAuLi5hZGQgZm9yIGFueSByZW1haW5pbmcgYnl0ZXMuLi4gKi8KIAkJaWYgKCh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggJSA0MDk2KSAhPSAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9maGNpLXRkcy5jIGIvZHJpdmVycy91c2IvaG9zdC9maGNpLXRkcy5jCmluZGV4IDM4ZmUwNTguLjBlYTU3N2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS10ZHMuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktdGRzLmMKQEAgLTQwLDcgKzQwLDcgQEAKICNkZWZpbmUgVERfUlhFUgkJMHgwMDIwIC8qIFJ4IGVycm9yIG9yIG5vdCAqLwogCiAjZGVmaW5lIFREX05BSwkJMHgwMDEwIC8qIE5vIGFjay4gKi8KLSNkZWZpbmUgVERfU1RBTAkJMHgwMDA4IC8qIFN0YWxsIHJlY2lldmVkICovCisjZGVmaW5lIFREX1NUQUwJCTB4MDAwOCAvKiBTdGFsbCByZWNlaXZlZCAqLwogI2RlZmluZSBURF9UTwkJMHgwMDA0IC8qIHRpbWUgb3V0ICovCiAjZGVmaW5lIFREX1VOCQkweDAwMDIgLyogdW5kZXJydW4gKi8KICNkZWZpbmUgVERfTk8JCTB4MDAxMCAvKiBSeCBOb24gT2N0ZXQgQWxpZ25lZCBQYWNrZXQgKi8KQEAgLTI3NCw3ICsyNzQsNyBAQAogICogSXQgaXMgYWxzbyBwcmVwYXJpbmcgdGhlIFREcyBmb3IgbmV3IGZyYW1lcy4gSWYgdGhlIFR4IGludGVycnVwdHMKICAqIGFyZSBkaXNhYmxlZCwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBjYWxsIHRoYXQgcm91dGluZSB0byBnZXQKICAqIGNvbmZpcm1hdGlvbiBhYm91dCB0aGUgc3VibWl0dGVkIGZyYW1lcy4gT3RoZXJ3aXNlLCB0aGUgcm91dGluZSBpcwotICogY2FsbGVkIGZyb21lIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGR1cmluZyB0aGUgVHggaW50ZXJydXB0LgorICogY2FsbGVkIGZyb20gdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgZHVyaW5nIHRoZSBUeCBpbnRlcnJ1cHQuCiAgKiBJbiB0aGF0IGNhc2UgdGhlIGFwcGxpY2F0aW9uIGlzIGluZm9ybWVkIGJ5IGNhbGxpbmcgdGhlIGFwcGxpY2F0aW9uCiAgKiBzcGVjaWZpYyAnZmhjaV90cmFuc2FjdGlvbl9jb25maXJtJyByb3V0aW5lCiAgKi8KQEAgLTMzNyw3ICszMzcsNyBAQAogCQkJCQlwa3QtPnN0YXR1cyA9IFVTQl9URF9SWF9FUl9OT05PQ1Q7CiAJCQkJZWxzZQogCQkJCQlmaGNpX2Vycih1c2ItPmZoY2ksICJpbGxlZ2FsIGVycm9yICIKLQkJCQkJCSAib2NjdXJlZFxuIik7CisJCQkJCQkgIm9jY3VycmVkXG4iKTsKIAkJCX0gZWxzZSBpZiAodGRfc3RhdHVzICYgVERfTkFLKQogCQkJCXBrdC0+c3RhdHVzID0gVVNCX1REX1RYX0VSX05BSzsKIAkJCWVsc2UgaWYgKHRkX3N0YXR1cyAmIFREX1RPKQpAQCAtMzQ3LDcgKzM0Nyw3IEBACiAJCQllbHNlIGlmICh0ZF9zdGF0dXMgJiBURF9TVEFMKQogCQkJCXBrdC0+c3RhdHVzID0gVVNCX1REX1RYX0VSX1NUQUxMOwogCQkJZWxzZQotCQkJCWZoY2lfZXJyKHVzYi0+ZmhjaSwgImlsbGVnYWwgZXJyb3Igb2NjdXJlZFxuIik7CisJCQkJZmhjaV9lcnIodXNiLT5maGNpLCAiaWxsZWdhbCBlcnJvciBvY2N1cnJlZFxuIik7CiAJCX0gZWxzZSBpZiAoKGV4dHJhX2RhdGEgJiBURF9UT0tfSU4pICYmCiAJCQkJcGt0LT5sZW4gPiB0ZF9sZW5ndGggLSBDUkNfU0laRSkgewogCQkJcGt0LT5zdGF0dXMgPSBVU0JfVERfUlhfREFUQV9VTkRFUlVOOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9maGNpLmggYi9kcml2ZXJzL3VzYi9ob3N0L2ZoY2kuaAppbmRleCA3MWMzY2FhLi5kYzY5MzlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2ZoY2kuaAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2ZoY2kuaApAQCAtODIsNyArODIsNyBAQAogI2RlZmluZSBVU0JfVERfUlhfRVJfTk9OT0NUCTB4NDAwMDAwMDAgLyogVHggTm9uIE9jdGV0IEFsaWduZWQgUGFja2V0ICovCiAjZGVmaW5lIFVTQl9URF9SWF9FUl9CSVRTVFVGRgkweDIwMDAwMDAwIC8qIEZyYW1lIEFib3J0ZWQtUmVjZWl2ZWQgcGt0ICovCiAjZGVmaW5lIFVTQl9URF9SWF9FUl9DUkMJMHgxMDAwMDAwMCAvKiBDUkMgZXJyb3IgKi8KLSNkZWZpbmUgVVNCX1REX1JYX0VSX09WRVJVTgkweDA4MDAwMDAwIC8qIE92ZXIgLSBydW4gb2NjdXJlZCAqLworI2RlZmluZSBVU0JfVERfUlhfRVJfT1ZFUlVOCTB4MDgwMDAwMDAgLyogT3ZlciAtIHJ1biBvY2N1cnJlZCAqLwogI2RlZmluZSBVU0JfVERfUlhfRVJfUElECTB4MDQwMDAwMDAgLyogd3JvbmcgUElEIHJlY2VpdmVkICovCiAjZGVmaW5lIFVTQl9URF9SWF9EQVRBX1VOREVSVU4JMHgwMjAwMDAwMCAvKiBzaG9ydGVyIHRoYW4gZXhwZWN0ZWQgKi8KICNkZWZpbmUgVVNCX1REX1JYX0RBVEFfT1ZFUlVOCTB4MDEwMDAwMDAgLyogbG9uZ2VyIHRoYW4gZXhwZWN0ZWQgKi8KQEAgLTM2Myw3ICszNjMsNyBAQAogc3RydWN0IHRkIHsKIAl2b2lkICpkYXRhOwkJIC8qIGEgcG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXIgKi8KIAl1bnNpZ25lZCBpbnQgbGVuOwkgLyogbGVuZ3RoIG9mIHRoZSBkYXRhIHRvIGJlIHN1Ym1pdHRlZCAqLwotCXVuc2lnbmVkIGludCBhY3R1YWxfbGVuOyAvKiBhY3R1YWwgYnl0ZXMgdHJhbnNmZXJlZCBvbiB0aGlzIHRkICovCisJdW5zaWduZWQgaW50IGFjdHVhbF9sZW47IC8qIGFjdHVhbCBieXRlcyB0cmFuc2ZlcnJlZCBvbiB0aGlzIHRkICovCiAJZW51bSBmaGNpX3RhX3R5cGUgdHlwZTsJIC8qIHRyYW5zYWN0aW9uIHR5cGUgKi8KIAl1OCB0b2dnbGU7CQkgLyogdG9nZ2xlIGZvciBuZXh0IHRyYW5zLiB3aXRoaW4gdGhpcyBURCAqLwogCXUxNiBpc29faW5kZXg7CQkgLyogSVNPIHRyYW5zYWN0aW9uIGluZGV4ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2lteDIxLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9pbXgyMS1oY2QuYwppbmRleCAyNTYyZTkyLi5hZjA1NzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2lteDIxLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvaW14MjEtaGNkLmMKQEAgLTEzMjMsNyArMTMyMyw3IEBACiAgKiAoYW5kIGhlbmNlIG5vIGludGVycnVwdCBvY2N1cnMpLgogICogVGhpcyBjYXVzZXMgdGhlIHRyYW5zZmVyIGluIHF1ZXN0aW9uIHRvIGhhbmcuCiAgKiBUaGUga2x1ZGdlIGJlbG93IGNoZWNrcyBmb3IgdGhpcyBjb25kaXRpb24gYXQgZWFjaCBTT0YgYW5kIHByb2Nlc3NlcyBhbnkKLSAqIGJsb2NrZWQgRVREcyAoYWZ0ZXIgYW4gYXJiaXRhcnkgMTAgZnJhbWUgd2FpdCkKKyAqIGJsb2NrZWQgRVREcyAoYWZ0ZXIgYW4gYXJiaXRyYXJ5IDEwIGZyYW1lIHdhaXQpCiAgKgogICogV2l0aCBhIHNpbmdsZSBhY3RpdmUgdHJhbnNmZXIgdGhlIHVzYnRlc3QgdGVzdCBzdWl0ZSB3aWxsIHJ1biBmb3IgZGF5cwogICogd2l0aG91dCB0aGUga2x1ZGdlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LmggYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNnguaAppbmRleCAxMmRiOTYxLi45YTJjNDAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNnguaAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNnguaApAQCAtMTMsNyArMTMsNyBAQAogCiAvKiBGdWxsIHNwZWVkOiBtYXggIyBvZiBieXRlcyB0byB0cmFuc2ZlciBmb3IgYSBzaW5nbGUgdXJiCiAgICBhdCBhIHRpbWUgbXVzdCBiZSA8IDEwMjQgJiYgbXVzdCBiZSBtdWx0aXBsZSBvZiA2NC4KLSAgIDgzMiBhbGxvd3MgdHJhbnNmZXJpbmcgNGtpQiB3aXRoaW4gNSBmcmFtZXMuICovCisgICA4MzIgYWxsb3dzIHRyYW5zZmVycmluZyA0a2lCIHdpdGhpbiA1IGZyYW1lcy4gKi8KICNkZWZpbmUgTUFYX1RSQU5TRkVSX1NJWkVfRlVMTFNQRUVECTgzMgogCiAvKiBMb3cgc3BlZWQ6IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzY2hlZHVsZSBpbiB2ZXJ5IGJpZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMzYyLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMzYyLWhjZC5jCmluZGV4IDY2MmNkMDAuLmY5NzU3MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTM2Mi1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDEzNjItaGNkLmMKQEAgLTU0Niw3ICs1NDYsNyBAQAogCQkJaWYgKHVzYl9waXBlY29udHJvbCh1cmItPnBpcGUpKSB7CiAJCQkJZXAtPm5leHRwaWQgPSBVU0JfUElEX0FDSzsKIAkJCQkvKiBzYXZlIHRoZSBkYXRhIHVuZGVycnVuIGVycm9yIGNvZGUgZm9yIGxhdGVyIGFuZAotCQkJCSAqIHByb2NlZGUgd2l0aCB0aGUgc3RhdHVzIHN0YWdlCisJCQkJICogcHJvY2VlZCB3aXRoIHRoZSBzdGF0dXMgc3RhZ2UKIAkJCQkgKi8KIAkJCQl1cmItPmFjdHVhbF9sZW5ndGggKz0gUFREX0dFVF9DT1VOVChwdGQpOwogCQkJCUJVR19PTih1cmItPmFjdHVhbF9sZW5ndGggPiB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jCmluZGV4IGU3Mjg4NjMuLmQ1NTcyMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaGNkLmMKQEAgLTE2Miw3ICsxNjIsNyBAQAogCQkvLyBjYXNlIFBJUEVfSU5URVJSVVBUOgogCQkvLyBjYXNlIFBJUEVfQlVMSzoKIAkJZGVmYXVsdDoKLQkJCS8qIG9uZSBURCBmb3IgZXZlcnkgNDA5NiBCeXRlcyAoY2FuIGJlIHVwdG8gOEspICovCisJCQkvKiBvbmUgVEQgZm9yIGV2ZXJ5IDQwOTYgQnl0ZXMgKGNhbiBiZSB1cCB0byA4SykgKi8KIAkJCXNpemUgKz0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoIC8gNDA5NjsKIAkJCS8qIC4uLiBhbmQgZm9yIGFueSByZW1haW5pbmcgYnl0ZXMgLi4uICovCiAJCQlpZiAoKHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAlIDQwOTYpICE9IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L294dTIxMGhwLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9veHUyMTBocC1oY2QuYwppbmRleCA0NGU0ZGViMy4uNGE3NzFmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9veHUyMTBocC1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L294dTIxMGhwLWhjZC5jCkBAIC0yODc5LDcgKzI4NzksNyBAQAogCS8qIE9rLCB3ZSBoYXZlIG1vcmUgam9iIHRvIGRvISA6KSAqLwogCiAJZm9yIChpID0gMDsgaSA8IG51bSAtIDE7IGkrKykgewotCQkvKiBHZXQgZnJlZSBtaWNybyBVUkIgcG9sbCB0aWxsIGEgZnJlZSB1cmIgaXMgcmVjaWV2ZWQgKi8KKwkJLyogR2V0IGZyZWUgbWljcm8gVVJCIHBvbGwgdGlsbCBhIGZyZWUgdXJiIGlzIHJlY2VpdmVkICovCiAKIAkJZG8gewogCQkJbXVyYiA9IChzdHJ1Y3QgdXJiICopIG94dV9tdXJiX2FsbG9jKG94dSk7CkBAIC0yOTExLDcgKzI5MTEsNyBAQAogCiAJLyogTGFzdCB1cmIgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyAgKi8KIAotCS8qIEdldCBmcmVlIG1pY3JvIFVSQiBwb2xsIHRpbGwgYSBmcmVlIHVyYiBpcyByZWNpZXZlZCAqLworCS8qIEdldCBmcmVlIG1pY3JvIFVSQiBwb2xsIHRpbGwgYSBmcmVlIHVyYiBpcyByZWNlaXZlZCAqLwogCWRvIHsKIAkJbXVyYiA9IChzdHJ1Y3QgdXJiICopIG94dV9tdXJiX2FsbG9jKG94dSk7CiAJCWlmICghbXVyYikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvd2hjaS9xc2V0LmMgYi9kcml2ZXJzL3VzYi9ob3N0L3doY2kvcXNldC5jCmluZGV4IGRjMGFiODMuLmQ2ZTE3NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvd2hjaS9xc2V0LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC93aGNpL3FzZXQuYwpAQCAtNzM5LDcgKzczOSw3IEBACiAgKiBwcm9jZXNzX2luYWN0aXZlX3F0ZCAtIHByb2Nlc3MgYW4gaW5hY3RpdmUgKGJ1dCBub3QgaGFsdGVkKSBxVEQuCiAgKgogICogVXBkYXRlIHRoZSB1cmIgd2l0aCB0aGUgdHJhbnNmZXIgYnl0ZXMgZnJvbSB0aGUgcVRELCBpZiB0aGUgdXJiIGlzCi0gKiBjb21wbGV0ZWx5IHRyYW5zZmVyZWQgb3IgKGluIHRoZSBjYXNlIG9mIGFuIElOIG9ubHkpIHRoZSBMUEYgaXMKKyAqIGNvbXBsZXRlbHkgdHJhbnNmZXJyZWQgb3IgKGluIHRoZSBjYXNlIG9mIGFuIElOIG9ubHkpIHRoZSBMUEYgaXMKICAqIHNldCwgdGhlbiB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGUgYW5kIHRoZSB1cmIgc2hvdWxkIGJlIHJldHVybmVkCiAgKiB0byB0aGUgc3lzdGVtLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCmluZGV4IDlhMzY0NWYuLjE5NmUwMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCkBAIC03NDEsNyArNzQxLDcgQEAKIAlpbnQJCQlyZXR2YWw7CiAKIAkvKiBXYWl0IGEgYml0IGlmIGVpdGhlciBvZiB0aGUgcm9vdGh1YnMgbmVlZCB0byBzZXR0bGUgZnJvbSB0aGUKLQkgKiB0cmFuc2lzdGlvbiBpbnRvIGJ1cyBzdXNwZW5kLgorCSAqIHRyYW5zaXRpb24gaW50byBidXMgc3VzcGVuZC4KIAkgKi8KIAlpZiAodGltZV9iZWZvcmUoamlmZmllcywgeGhjaS0+YnVzX3N0YXRlWzBdLm5leHRfc3RhdGVjaGFuZ2UpIHx8CiAJCQl0aW1lX2JlZm9yZShqaWZmaWVzLApAQCAtMjA3Miw3ICsyMDcyLDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCXZkZXYgPSB4aGNpLT5kZXZzW3VkZXYtPnNsb3RfaWRdOwotCS8qIE1hcmsgZWFjaCBlbmRwb2ludCBhcyBiZWluZyBpbiB0cmFuc2lzdGlvbiwgc28KKwkvKiBNYXJrIGVhY2ggZW5kcG9pbnQgYXMgYmVpbmcgaW4gdHJhbnNpdGlvbiwgc28KIAkgKiB4aGNpX3VyYl9lbnF1ZXVlKCkgd2lsbCByZWplY3QgYWxsIFVSQnMuCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG51bV9lcHM7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC94aGNpLmggYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaAppbmRleCA3MTFkZTI1Li4wN2UyNjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaApAQCAtODczLDcgKzg3Myw3IEBACiAjZGVmaW5lIENPTVBfQ01EX0FCT1JUCTI1CiAvKiBTdG9wcGVkIC0gdHJhbnNmZXIgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzdG9wIGVuZHBvaW50IGNvbW1hbmQgKi8KICNkZWZpbmUgQ09NUF9TVE9QCTI2Ci0vKiBTYW1lIGFzIENPTVBfRVBfU1RPUFBFRCwgYnV0IHRoZSB0cmFuc2ZlcmVkIGxlbmd0aCBpbiB0aGUgZXZlbnQgaXMgaW52YWxpZCAqLworLyogU2FtZSBhcyBDT01QX0VQX1NUT1BQRUQsIGJ1dCB0aGUgdHJhbnNmZXJyZWQgbGVuZ3RoIGluIHRoZSBldmVudCBpcyBpbnZhbGlkICovCiAjZGVmaW5lIENPTVBfU1RPUF9JTlZBTAkyNwogLyogQ29udHJvbCBBYm9ydCBFcnJvciAtIERlYnVnIENhcGFiaWxpdHkgLSBjb250cm9sIHBpcGUgYWJvcnRlZCAqLwogI2RlZmluZSBDT01QX0RCR19BQk9SVAkyOApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaW1hZ2UvbWljcm90ZWsuYyBiL2RyaXZlcnMvdXNiL2ltYWdlL21pY3JvdGVrLmMKaW5kZXggYzkwYzg5ZC4uYTAwMzc5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW1hZ2UvbWljcm90ZWsuYworKysgYi9kcml2ZXJzL3VzYi9pbWFnZS9taWNyb3Rlay5jCkBAIC02OSw3ICs2OSw3IEBACiAgKgkyMDAwMDUxMyBhZGRlZCBJRHMgZm9yIGFsbCBwcm9kdWN0cyBzdXBwb3J0ZWQgYnkgV2luZG93cyBkcml2ZXIgKGpvaG4pCiAgKgkyMDAwMDUxNCBSZXdyb3RlIG10c19zY3NpX3F1ZXVlY29tbWFuZCB0byB1c2UgVVJCcyAoam9obikKICAqCTIwMDAwNTE0IFZlcnNpb24gMC4wLjhqCi0gKiAgICAgIDIwMDAwNTE0IEZpeCByZXBvcnRpbmcgb2Ygbm9uLWV4aXN0YW50IGRldmljZXMgdG8gU0NTSSBsYXllciAoam9obikKKyAqICAgICAgMjAwMDA1MTQgRml4IHJlcG9ydGluZyBvZiBub24tZXhpc3RlbnQgZGV2aWNlcyB0byBTQ1NJIGxheWVyIChqb2huKQogICoJMjAwMDA1MTQgQWRkZWQgTVRTX0RFQlVHX0lOVCAoam9obikKICAqCTIwMDAwNTE0IENoYW5nZWQgInVzYi1taWNyb3RlayIgdG8gIm1pY3JvdGVrIiBmb3IgY29uc2lzdGVuY3kgKGpvaG4pCiAgKgkyMDAwMDUxNCBTdHVwaWQgYnVnIGZpeGVzIChqb2huKQpAQCAtNTU3LDE0ICs1NTcsMTQgQEAKIAogCWlmICggIW1lbWNtcCggc3JiLT5jbW5kLCBtdHNfcmVhZF9pbWFnZV9zaWcsIG10c19yZWFkX2ltYWdlX3NpZ19sZW4gKQogKSB7IAkJcGlwZSA9IHVzYl9yY3ZidWxrcGlwZShkZXNjLT51c2JfZGV2LGRlc2MtPmVwX2ltYWdlKTsKLQkJTVRTX0RFQlVHKCAidHJhbnNmZXJpbmcgZnJvbSBkZXNjLT5lcF9pbWFnZSA9PSAlZFxuIiwKKwkJTVRTX0RFQlVHKCAidHJhbnNmZXJyaW5nIGZyb20gZGVzYy0+ZXBfaW1hZ2UgPT0gJWRcbiIsCiAJCQkgICAoaW50KWRlc2MtPmVwX2ltYWdlICk7CiAJfSBlbHNlIGlmICggTVRTX0RJUkVDVElPTl9JU19JTihzcmItPmNtbmRbMF0pICkgewogCQkJcGlwZSA9IHVzYl9yY3ZidWxrcGlwZShkZXNjLT51c2JfZGV2LGRlc2MtPmVwX3Jlc3BvbnNlKTsKLQkJCU1UU19ERUJVRyggInRyYW5zZmVyaW5nIGZyb20gZGVzYy0+ZXBfcmVzcG9uc2UgPT0gJWRcbiIsCisJCQlNVFNfREVCVUcoICJ0cmFuc2ZlcnJpbmcgZnJvbSBkZXNjLT5lcF9yZXNwb25zZSA9PSAlZFxuIiwKIAkJCQkgICAoaW50KWRlc2MtPmVwX3Jlc3BvbnNlKTsKIAl9IGVsc2UgewotCQlNVFNfREVCVUcoInRyYW5zZmVyaW5nIHRvIGRlc2MtPmVwX291dCA9PSAlZFxuIiwKKwkJTVRTX0RFQlVHKCJ0cmFuc2ZlcnJpbmcgdG8gZGVzYy0+ZXBfb3V0ID09ICVkXG4iLAogCQkJICAoaW50KWRlc2MtPmVwX291dCk7CiAJCXBpcGUgPSB1c2Jfc25kYnVsa3BpcGUoZGVzYy0+dXNiX2RldixkZXNjLT5lcF9vdXQpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvaW93YXJyaW9yLmMgYi9kcml2ZXJzL3VzYi9taXNjL2lvd2Fycmlvci5jCmluZGV4IGU1NzNlNDcwNC4uYTIxOTBiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2lvd2Fycmlvci5jCkBAIC00MCw3ICs0MCw3IEBACiAjaWZkZWYgQ09ORklHX1VTQl9EWU5BTUlDX01JTk9SUwogI2RlZmluZSBJT1dBUlJJT1JfTUlOT1JfQkFTRQkwCiAjZWxzZQotI2RlZmluZSBJT1dBUlJJT1JfTUlOT1JfQkFTRQkyMDgJLy8gU0tFTEVUT05fTUlOT1JfQkFTRSAxOTIgKyAxNiwgbm90IG9mZmljYWwgeWV0CisjZGVmaW5lIElPV0FSUklPUl9NSU5PUl9CQVNFCTIwOAkvLyBTS0VMRVRPTl9NSU5PUl9CQVNFIDE5MiArIDE2LCBub3Qgb2ZmaWNpYWwgeWV0CiAjZW5kaWYKIAogLyogaW50ZXJydXB0IGlucHV0IHF1ZXVlIHNpemUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL290Zy9pc3AxMzAxX29tYXAuYyBiL2RyaXZlcnMvdXNiL290Zy9pc3AxMzAxX29tYXAuYwppbmRleCA4YzZmZGVmLi5lMjU3MDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9vdGcvaXNwMTMwMV9vbWFwLmMKKysrIGIvZHJpdmVycy91c2Ivb3RnL2lzcDEzMDFfb21hcC5jCkBAIC0xNTMxLDcgKzE1MzEsNyBAQAogCWkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGlzcCk7CiAJaXNwLT5jbGllbnQgPSBpMmM7CiAKLQkvKiB2ZXJpZnkgdGhlIGNoaXAgKHNob3VsZG4ndCBiZSBuZWNlc2FyeSkgKi8KKwkvKiB2ZXJpZnkgdGhlIGNoaXAgKHNob3VsZG4ndCBiZSBuZWNlc3NhcnkpICovCiAJc3RhdHVzID0gaXNwMTMwMV9nZXRfdTE2KGlzcCwgSVNQMTMwMV9WRU5ET1JfSUQpOwogCWlmIChzdGF0dXMgIT0gSTJDX1ZFTkRPUl9JRF9QSElMSVBTKSB7CiAJCWRldl9kYmcoJmkyYy0+ZGV2LCAibm90IHBoaWxpcHMgaWQ6ICVkXG4iLCBzdGF0dXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivb3RnL2xhbmd3ZWxsX290Zy5jIGIvZHJpdmVycy91c2Ivb3RnL2xhbmd3ZWxsX290Zy5jCmluZGV4IDdmOWI4Y2QuLmU5NzNmZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL290Zy9sYW5nd2VsbF9vdGcuYworKysgYi9kcml2ZXJzL3VzYi9vdGcvbGFuZ3dlbGxfb3RnLmMKQEAgLTU4MCw3ICs1ODAsNyBAQAogCQl0aW1lID0gVEJfQlVTX1NVU1BFTkQ7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRldl9kYmcobG53LT5kZXYsICJ1bmtvd24gdGltZXIsIGNhbm5vdCBlbmFibGUgaXRcbiIpOworCQlkZXZfZGJnKGxudy0+ZGV2LCAidW5rbm93biB0aW1lciwgY2Fubm90IGVuYWJsZSBpdFxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTEzODEsNyArMTM4MSw3IEBACiAJCQl9IGVsc2UgaWYgKCFpb3RnLT5oc20uYV9idXNfcmVxICYmIGlvdGctPm90Zy5ob3N0ICYmCiAJCQkJCWlvdGctPm90Zy5ob3N0LT5iX2hucF9lbmFibGUpIHsKIAkJCQkvKiBJdCBpcyBub3Qgc2FmZSBlbm91Z2ggdG8gZG8gYSBmYXN0Ci0JCQkJICogdHJhbnNpc3Rpb24gZnJvbSBBX1dBSVRfQkNPTiB0bworCQkJCSAqIHRyYW5zaXRpb24gZnJvbSBBX1dBSVRfQkNPTiB0bwogCQkJCSAqIEFfU1VTUEVORCAqLwogCQkJCW1zbGVlcCgxMDAwMCk7CiAJCQkJaWYgKGlvdGctPmhzbS5hX2J1c19yZXEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvYWlyY2FibGUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jCmluZGV4IDBkYjZhY2UuLmFiYTIwMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKiBXaGVuIHJlYWRpbmcgdGhlIHByb2Nlc3MgaXMgYWxtb3N0IGVxdWFsIGV4Y2VwdCB0aGF0IHRoZSBoZWFkZXIgc3RhcnRzIHdpdGgKICAqIDB4MDAgMHgyMC4KICAqCi0gKiBUaGUgZGV2aWNlIHNpbXBseSBuZWVkIHNvbWUgc3R1ZmYgdG8gdW5kZXJzdGFuZCBkYXRhIGNvbW1pbmcgZnJvbSB0aGUgdXNiCisgKiBUaGUgZGV2aWNlIHNpbXBseSBuZWVkIHNvbWUgc3R1ZmYgdG8gdW5kZXJzdGFuZCBkYXRhIGNvbWluZyBmcm9tIHRoZSB1c2IKICAqIGJ1ZmZlcjogVGhlIEZpcnN0IGFuZCBTZWNvbmQgYnl0ZSBpcyB1c2VkIGZvciBhIEhlYWRlciwgdGhlIFRoaXJkIGFuZCBGb3VydGgKICAqIHRlbGxzIHRoZSAgZGV2aWNlIHRoZSBhbW91bnQgb2YgaW5mb3JtYXRpb24gdGhlIHBhY2thZ2UgaG9sZHMuCiAgKiBQYWNrYWdlcyBhcmUgNjAgYnl0ZXMgbG9uZyBIZWFkZXIgU3R1ZmYuCkBAIC0zMCw3ICszMCw3IEBACiAgKiBvbmUuCiAgKgogICogVGhlIGRyaXZlciByZWdpc3RlcnMgaGltc2VsZiB3aXRoIHRoZSBVU0Itc2VyaWFsIGNvcmUgYW5kIHRoZSBVU0IgQ29yZS4gSSBoYWQKLSAqIHRvIGltcGxlbWVudCBhIHByb2JlIGZ1bmN0aW9uIGFnYWlucyBVU0Itc2VyaWFsLCBiZWNhdXNlIG90aGVyIHdheSwgdGhlCisgKiB0byBpbXBsZW1lbnQgYSBwcm9iZSBmdW5jdGlvbiBhZ2FpbnN0IFVTQi1zZXJpYWwsIGJlY2F1c2Ugb3RoZXIgd2F5LCB0aGUKICAqIGRyaXZlciB3YXMgYXR0YWNoaW5nIGhpbXNlbGYgdG8gYm90aCBpbnRlcmZhY2VzLiBJIGhhdmUgdHJ5ZWQgd2l0aCBkaWZmZXJlbnQKICAqIGNvbmZpZ3VyYXRpb25zIG9mIHVzYl9zZXJpYWxfZHJpdmVyIHdpdGggb3V0IGV4aXQsIG9ubHkgdGhlIHByb2JlIGZ1bmN0aW9uCiAgKiBjb3VsZCBoYW5kbGUgdGhpcyBjb3JyZWN0bHkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTB4LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTB4LmMKaW5kZXggNGRmM2UwYy4uMGYxMWFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYwpAQCAtMTAxLDcgKzEwMSw3IEBACiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MUYyKSB9LCAvKiBDMTAwNyBIRiBiYW5kIFJGSUQgY29udHJvbGxlciAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODIxOCkgfSwgLyogTGlwb3dza3kgSW5kdXN0cmllIEVsZWt0cm9uaWsgR21iSCwgSEFSUC0xICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjJCKSB9LCAvKiBNb2RlbSBFREdFKEdTTSkgQ29tYW5kZXIgMiAqLwotCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODI2QikgfSwgLyogQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4sIEZhc3R0cmF4IEdQUyBkZW1vc3RyYXRpb24gbW9kdWxlICovCisJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjZCKSB9LCAvKiBDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLiwgRmFzdHRyYXggR1BTIGRlbW9uc3RyYXRpb24gbW9kdWxlICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjkzKSB9LCAvKiBUZWxlZ2VzeXMgRVRSWDJVU0IgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgyRjkpIH0sIC8qIFByb2N5b24gQVZTICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MzQxKSB9LCAvKiBTaWVtZW5zIE1DMzVQVSBHUFJTIE1vZGVtICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYwppbmRleCA5ODdlOWJmLi5kOTkwNmViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeXByZXNzX204LmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqCiAgKiAgTG9ubmllIE1lbmRleiA8ZGlnbm9tZUBnbWFpbC5jb20+CiAgKiAgMDQtMTAtMjAwNAotICoJRHJpdmVyIG1vZGlmaWVkIHRvIHN1cHBvcnQgZHluYW1pYyBsaW5lIHNldHRpbmdzLiAgVmFyaW91cyBpbXByb3ZtZW50cworICoJRHJpdmVyIG1vZGlmaWVkIHRvIHN1cHBvcnQgZHluYW1pYyBsaW5lIHNldHRpbmdzLiAgVmFyaW91cyBpbXByb3ZlbWVudHMKICAqICAgICAgYW5kIGZlYXR1cmVzLgogICoKICAqICBOZWlsIFdoZWxjaGVsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCmluZGV4IDY1OTY3YjMuLmE5NzNjN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBTZWUgRG9jdW1lbnRhdGlvbi91c2IvdXNiLXNlcmlhbC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhpcwogICogZHJpdmVyCiAgKgotICogU2VlIGh0dHA6Ly9mdGRpLXVzYi1zaW8uc291cmNlZm9yZ2UubmV0IGZvciB1cHRvIGRhdGUgdGVzdGluZyBpbmZvCisgKiBTZWUgaHR0cDovL2Z0ZGktdXNiLXNpby5zb3VyY2Vmb3JnZS5uZXQgZm9yIHVwIHRvIGRhdGUgdGVzdGluZyBpbmZvCiAgKglhbmQgZXh0cmEgZG9jdW1lbnRhdGlvbgogICoKICAqIENoYW5nZSBlbnRyaWVzIGZyb20gMjAwNCBhbmQgZWFybGllciBjYW4gYmUgZm91bmQgaW4gdmVyc2lvbnMgb2YgdGhpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwppbmRleCBmMWFlZGZhLi5hYmYwOTViZSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMKQEAgLTE5ODEsNyArMTk4MSw3IEBACiAJaWYgKGNvZGUgPT0gSU9TUF9TVEFUVVNfT1BFTl9SU1ApIHsKIAkJZWRnZV9wb3J0LT50eENyZWRpdHMgPSBHRVRfVFhfQlVGRkVSX1NJWkUoYnl0ZTMpOwogCQllZGdlX3BvcnQtPm1heFR4Q3JlZGl0cyA9IGVkZ2VfcG9ydC0+dHhDcmVkaXRzOwotCQlkYmcoIiVzIC0gUG9ydCAldSBPcGVuIFJlc3BvbnNlIEluaXRhbCBNU1IgPSAlMDJ4IFR4QnVmZmVyU2l6ZSA9ICVkIiwgX19mdW5jX18sIGVkZ2Vfc2VyaWFsLT5yeFBvcnQsIGJ5dGUyLCBlZGdlX3BvcnQtPnR4Q3JlZGl0cyk7CisJCWRiZygiJXMgLSBQb3J0ICV1IE9wZW4gUmVzcG9uc2UgSW5pdGlhbCBNU1IgPSAlMDJ4IFR4QnVmZmVyU2l6ZSA9ICVkIiwgX19mdW5jX18sIGVkZ2Vfc2VyaWFsLT5yeFBvcnQsIGJ5dGUyLCBlZGdlX3BvcnQtPnR4Q3JlZGl0cyk7CiAJCWhhbmRsZV9uZXdfbXNyKGVkZ2VfcG9ydCwgYnl0ZTIpOwogCiAJCS8qIHNlbmQgdGhlIGN1cnJlbnQgbGluZSBzZXR0aW5ncyB0byB0aGUgcG9ydCBzbyB3ZSBhcmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5oIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmgKaW5kZXggZGNlZDdlYy4uYWQ5YzFkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmgKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmgKQEAgLTY4LDcgKzY4LDcgQEAKICNkZWZpbmUgUFJPQ19TRVRfQ09NX0VOVFJZCQkyCiAKIAotLyogVGhlIGZvbGxvd2luZyBzdHVyY3R1cmUgaXMgcGFzc2VkIHRvIHRoZSB3cml0ZSAqLworLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaXMgcGFzc2VkIHRvIHRoZSB3cml0ZSAqLwogc3RydWN0IHByb2NXcml0ZSB7CiAJaW50CUNvbW1hbmQ7CiAJdW5pb24gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwppbmRleCBkODQzNDkxLi4wYWFjMDBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYwpAQCAtNDMzLDcgKzQzMyw3IEBACiAKIAkvKiBXZSBjYW4gb25seSBzZW5kIGEgbWF4aW11bSBvZiAxIGFsaWduZWQgYnl0ZSBwYWdlIGF0IGEgdGltZSAqLwogCi0JLyogY2FsdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyBsZWZ0IGluIHRoZSBmaXJzdCBwYWdlICovCisJLyogY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgbGVmdCBpbiB0aGUgZmlyc3QgcGFnZSAqLwogCXdyaXRlX2xlbmd0aCA9IEVQUk9NX1BBR0VfU0laRSAtCiAJCQkJKHN0YXJ0X2FkZHJlc3MgJiAoRVBST01fUEFHRV9TSVpFIC0gMSkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aWNvbi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGljb24uYwppbmRleCAyMDFmNjA5Li5hNmY2M2NjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aWNvbi5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpY29uLmMKQEAgLTExNiw3ICsxMTYsNyBAQAogCQl9IGVsc2UgewogCQkJaWYgKChkYXRhWzBdID09IDB4MDApICYmIChkYXRhWzFdID09IDB4MDEpKSB7CiAJCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsKLQkJCQkvKiBDVFMgc3RhdHVzIGluZm9tYXRpb24gcGFja2FnZSAqLworCQkJCS8qIENUUyBzdGF0dXMgaW5mb3JtYXRpb24gcGFja2FnZSAqLwogCQkJCWlmIChkYXRhWzJdID09IDB4MDApCiAJCQkJCXByaXYtPmN0cyA9IGZhbHNlOwogCQkJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvZW5lX3ViNjI1MC5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9lbmVfdWI2MjUwLmMKaW5kZXggMDhlMDM3NC4uMGU1YWFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9lbmVfdWI2MjUwLmMKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9lbmVfdWI2MjUwLmMKQEAgLTU2Miw3ICs1NjIsNyBAQAogCiAJcmVzdWx0ID0gZW5lX3NlbmRfc2NzaV9jbWQodXMsIEZESVJfUkVBRCwgTlVMTCwgMCk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpIHsKLQkJVVNfREVCVUdQKCJFeGVjdGlvbiBTRCBJbml0IENvZGUgRmFpbCAhIVxuIik7CisJCVVTX0RFQlVHUCgiRXhlY3V0aW9uIFNEIEluaXQgQ29kZSBGYWlsICEhXG4iKTsKIAkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKIAl9CiAKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiAJcmVzdWx0ID0gZW5lX3NlbmRfc2NzaV9jbWQodXMsIEZESVJfUkVBRCwgJmJ1ZiwgMCk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpIHsKLQkJVVNfREVCVUdQKCJFeGVjdGlvbiBTRCBJbml0IENvZGUgRmFpbCAhIVxuIik7CisJCVVTX0RFQlVHUCgiRXhlY3V0aW9uIFNEIEluaXQgQ29kZSBGYWlsICEhXG4iKTsKIAkJcmV0dXJuIFVTQl9TVE9SX1RSQU5TUE9SVF9FUlJPUjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaXNkMjAwLmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jCmluZGV4IDZiOTk4MmMuLjA5ZTUyYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaXNkMjAwLmMKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYwpAQCAtMTUxMCw3ICsxNTEwLDcgQEAKICAqIFByb3RvY29sIGFuZCBUcmFuc3BvcnQgZm9yIHRoZSBJU0QyMDAgQVNJQwogICoKICAqIFRoaXMgcHJvdG9jb2wgYW5kIHRyYW5zcG9ydCBhcmUgZm9yIEFUQSBkZXZpY2VzIGNvbm5lY3RlZCB0byBhbiBJU0QyMDAKLSAqIEFTSUMuICBBbiBBVEFQSSBkZXZpY2UgdGhhdCBpcyBjb25lY3RlZCBhcyBhIHNsYXZlIGRldmljZSB3aWxsIGJlCisgKiBBU0lDLiAgQW4gQVRBUEkgZGV2aWNlIHRoYXQgaXMgY29ubmVjdGVkIGFzIGEgc2xhdmUgZGV2aWNlIHdpbGwgYmUKICAqIGRldGVjdGVkIGluIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYW5kIHRoZSBwcm90b2NvbCB3aWxsCiAgKiBiZSBjaGFuZ2VkIHRvIGFuIEFUQVBJIHByb3RvY29sIChUcmFuc3BhcmVudCBTQ1NJKS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3Njc2lnbHVlLmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3Njc2lnbHVlLmMKaW5kZXggNjg5ZWUxZi4uMTNiOGJjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9zY3NpZ2x1ZS5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2NzaWdsdWUuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiB7CiAJc3RydWN0IHVzX2RhdGEgKnVzID0gaG9zdF90b191cyhzZGV2LT5ob3N0KTsKIAotCS8qIE1hbnkgZGV2aWNlcyBoYXZlIHRyb3VibGUgdHJhbnNmZXJpbmcgbW9yZSB0aGFuIDMyS0IgYXQgYSB0aW1lLAorCS8qIE1hbnkgZGV2aWNlcyBoYXZlIHRyb3VibGUgdHJhbnNmZXJyaW5nIG1vcmUgdGhhbiAzMktCIGF0IGEgdGltZSwKIAkgKiB3aGlsZSBvdGhlcnMgaGF2ZSB0cm91YmxlIHdpdGggbW9yZSB0aGFuIDY0Sy4gQXQgdGhpcyB0aW1lIHdlCiAJICogYXJlIGxpbWl0aW5nIGJvdGggdG8gMzJLICg2NCBzZWN0b3JlcykuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3NodXR0bGVfdXNiYXQuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jCmluZGV4IGJkM2Y0MTUuLjBiMDAwOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jCkBAIC0zNDAsNyArMzQwLDcgQEAKIH0KIAogLyoKLSAqIFN0b3JlcyBjcml0aWNhbCBpbmZvcm1hdGlvbiBpbiBpbnRlcm5hbCByZWdpc3RlcnMgaW4gcHJlcGFydGlvbiBmb3IgdGhlIGV4ZWN1dGlvbgorICogU3RvcmVzIGNyaXRpY2FsIGluZm9ybWF0aW9uIGluIGludGVybmFsIHJlZ2lzdGVycyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIGV4ZWN1dGlvbgogICogb2YgYSBjb25kaXRpb25hbCB1c2JhdF9yZWFkX2Jsb2NrcyBvciB1c2JhdF93cml0ZV9ibG9ja3MgY2FsbC4KICAqLwogc3RhdGljIGludCB1c2JhdF9zZXRfc2h1dHRsZV9mZWF0dXJlcyhzdHJ1Y3QgdXNfZGF0YSAqdXMsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS9jcnlwdG8uYyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL2NyeXB0by5jCmluZGV4IDgyN2M4N2YuLjdlNGJmOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL2NyeXB0by5jCisrKyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL2NyeXB0by5jCkBAIC0xODAsNyArMTgwLDcgQEAKICAqICAgICB1c2luZyB0aGUgMTQgYnl0ZXMgb2YgQGEgdG8gZmlsbCB1cAogICogICAgIGIxLnttYWNfaGVhZGVyLGUwLHNlY3VyaXR5X3Jlc2VydmVkLHBhZGRpbmd9LgogICoKLSAqIE5PVEU6IFRoZSBkZWZpbml0b24gb2YgbChhKSBpbiBXVVNCMS4wWzYuNV0gdnMgdGhlIGRlZmluaXRpb24gb2YKKyAqIE5PVEU6IFRoZSBkZWZpbml0aW9uIG9mIGwoYSkgaW4gV1VTQjEuMFs2LjVdIHZzIHRoZSBkZWZpbml0aW9uIG9mCiAgKiAgICAgICBsKG0pIGlzIG9ydGhvZ29uYWwsIHRoZXkgYmVhciBubyByZWxhdGlvbnNoaXAsIHNvIGl0IGlzIG5vdAogICogICAgICAgaW4gY29uZmxpY3Qgd2l0aCB0aGUgcGFyYW1ldGVyJ3MgcmVsYXRpb24gdGhhdAogICogICAgICAgV1VTQjEuMFs2LjQuMl0pIGRlZmluZXMuCkBAIC0yNzIsNyArMjcyLDcgQEAKIAogCS8qIE5vdyB3ZSBjcnlwdCB0aGUgTUlDIFRhZyAoKml2KSB3aXRoIEF4IC0tIHZhbHVlcyBwZXIgV1VTQjEuMFs2LjVdCiAJICogVGhlIHByb2NlZHVyZSBpcyB0byBBRVMgY3J5cHQgdGhlIEEwIGJsb2NrIGFuZCBYT1IgdGhlIE1JQwotCSAqIFRhZyBhZ2FpbnMgaXQ7IHdlIG9ubHkgZG8gdGhlIGZpcnN0IDggYnl0ZXMgYW5kIHBsYWNlIGl0CisJICogVGFnIGFnYWluc3QgaXQ7IHdlIG9ubHkgZG8gdGhlIGZpcnN0IDggYnl0ZXMgYW5kIHBsYWNlIGl0CiAJICogZGlyZWN0bHkgaW4gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KIAkgKgogCSAqIFBPUyBDcnlwdG8gQVBJOiBzaXplIGlzIGFzc3VtZWQgdG8gYmUgQUVTJ3MgYmxvY2sgc2l6ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3Jlc2VydmF0aW9uLmMgYi9kcml2ZXJzL3VzYi93dXNiY29yZS9yZXNlcnZhdGlvbi5jCmluZGV4IDRlZDk3MzYuLjZmNGZhZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3Jlc2VydmF0aW9uLmMKKysrIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmVzZXJ2YXRpb24uYwpAQCAtNzEsNyArNzEsNyBAQAogCiAvKioKICAqIHd1c2JoY19yc3ZfZXN0YWJsaXNoIC0gZXN0YWJsaXNoIGEgcmVzZXJ2YXRpb24gZm9yIHRoZSBjbHVzdGVyCi0gKiBAd3VzYmhjOiB0aGUgV1VTQiBIQyByZXF1ZXN0aW5nIGEgYmFuZHdpdGggcmVzZXJ2YXRpb24KKyAqIEB3dXNiaGM6IHRoZSBXVVNCIEhDIHJlcXVlc3RpbmcgYSBiYW5kd2lkdGggcmVzZXJ2YXRpb24KICAqLwogaW50IHd1c2JoY19yc3ZfZXN0YWJsaXNoKHN0cnVjdCB3dXNiaGMgKnd1c2JoYykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3JoLmMgYi9kcml2ZXJzL3VzYi93dXNiY29yZS9yaC5jCmluZGV4IGMxNzViNzMuLjM5ZGUzOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3JoLmMKKysrIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmguYwpAQCAtMTMzLDcgKzEzMyw3IEBACiAgKiAgICAgICAgICAgYmlnIG9mIGEgcHJvYmxlbSBbYW5kIHdlIGNhbid0IG1ha2UgaXQgYW4gc3BpbmxvY2sKICAqICAgICAgICAgICBiZWNhdXNlIG90aGVyIHBhcnRzIG5lZWQgdG8gdGFrZSBpdCBhbmQgc2xlZXBdIC4KICAqCi0gKiAgICAgICAgICAgQHVzYl9oY2QgaXMgcmVmY291bnRlZCwgc28gaXQgd29uJ3QgZGlzc2FwZWFyIHVuZGVyIHVzCisgKiAgICAgICAgICAgQHVzYl9oY2QgaXMgcmVmY291bnRlZCwgc28gaXQgd29uJ3QgZGlzYXBwZWFyIHVuZGVyIHVzCiAgKiAgICAgICAgICAgYW5kIGJlZm9yZSBraWxsaW5nIGEgaG9zdCwgdGhlIHBvbGxpbmcgb2YgdGhlIHJvb3QgaHViCiAgKiAgICAgICAgICAgd291bGQgYmUgc3RvcHBlZCBhbnl3YXkuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXJwaXBlLmMgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS1ycGlwZS5jCmluZGV4IDhjYjlkODAuLmNhODAxNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXJwaXBlLmMKKysrIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtcnBpcGUuYwpAQCAtMjQsNyArMjQsNyBAQAogICoKICAqIFJQSVBFCiAgKgotICogICBUYXJnZXR0ZWQgYXQgZGlmZmVyZW50IGRvd25zdHJlYW0gZW5kcG9pbnRzCisgKiAgIFRhcmdldGVkIGF0IGRpZmZlcmVudCBkb3duc3RyZWFtIGVuZHBvaW50cwogICoKICAqICAgRGVzY3JpcHRvcjogdXNlIHRvIGNvbmZpZyB0aGUgcmVtb3RlIHBpcGUuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EteGZlci5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EteGZlci5jCmluZGV4IDg0Yjc0NGMuLjZjY2Q5M2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXhmZXIuYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS14ZmVyLmMKQEAgLTYxLDcgKzYxLDcgQEAKICAqCiAgKiAgICAgVHdvIG1ldGhvZHMgaXQgY291bGQgYmUgZG9uZToKICAqCi0gKiAgICAgKGEpIHNldCB1cCBhIHRpbWVyIGV2ZXJ5dGltZSBhbiBycGlwZSdzIHVzZSBjb3VudCBkcm9wcyB0byAxCisgKiAgICAgKGEpIHNldCB1cCBhIHRpbWVyIGV2ZXJ5IHRpbWUgYW4gcnBpcGUncyB1c2UgY291bnQgZHJvcHMgdG8gMQogICogICAgICAgICAod2hpY2ggbWVhbnMgdW51c2VkKSBvciB3aGVuIGEgdHJhbnNmZXIgZW5kcy4gUmVzZXQgdGhlCiAgKiAgICAgICAgIHRpbWVyIHdoZW4gYSB4ZmVyIGlzIHF1ZXVlZC4gSWYgdGhlIHRpbWVyIGV4cGlyZXMsIHJlbGVhc2UKICAqICAgICAgICAgdGhlIHJwaXBlIFtzZWUgcnBpcGVfZXBfZGlzYWJsZSgpXS4KQEAgLTE0MCw3ICsxNDAsNyBAQAogCiAJc3RydWN0IHdhaGMgKndhOwkJLyogV2lyZSBhZGFwdGVyIHdlIGFyZSBwbHVnZ2VkIHRvICovCiAJc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICplcDsKLQlzdHJ1Y3QgdXJiICp1cmI7CQkvKiBVUkIgd2UgYXJlIHRyYW5zZmVyaW5nIGZvciAqLworCXN0cnVjdCB1cmIgKnVyYjsJCS8qIFVSQiB3ZSBhcmUgdHJhbnNmZXJyaW5nIGZvciAqLwogCXN0cnVjdCB3YV9zZWcgKipzZWc7CQkvKiB0cmFuc2ZlciBzZWdtZW50cyAqLwogCXU4IHNlZ3MsIHNlZ3Nfc3VibWl0dGVkLCBzZWdzX2RvbmU7CiAJdW5zaWduZWQgaXNfaW5ib3VuZDoxOwpAQCAtMTYxLDcgKzE2MSw3IEBACiB9CiAKIC8qCi0gKiBEZXN0b3J5IGEgdHJhbnNmZXIgc3RydWN0dXJlCisgKiBEZXN0cm95IGEgdHJhbnNmZXIgc3RydWN0dXJlCiAgKgogICogTm90ZSB0aGF0IHRoZSB4ZmVyLT5zZWdbaW5kZXhdIHRoaW5naWVzIGZvbGxvdyB0aGUgVVJCIGxpZmUgY3ljbGUsCiAgKiBzbyB3ZSBuZWVkIHRvIHB1dCB0aGVtLCBub3QgZnJlZSB0aGVtLgpAQCAtNDk0LDcgKzQ5NCw3IEBACiAgKiBmdW5jdGlvbiBkb2VzIGFsbW9zdCB0aGUgc2FtZSB0aGluZyBhbmQgdGhleSB3b3JrIGNsb3NlbHkKICAqIHRvZ2V0aGVyLgogICoKLSAqIElmIHRoZSBzZWcgcmVxdWVzdCBoYXMgZmFpbGVkIGJ1dCB0aGlzIERUTyBwaGFzZSBoYXMgc3VjZWVkZWQsCisgKiBJZiB0aGUgc2VnIHJlcXVlc3QgaGFzIGZhaWxlZCBidXQgdGhpcyBEVE8gcGhhc2UgaGFzIHN1Y2NlZWRlZCwKICAqIHdhX3NlZ19jYigpIGhhcyBhbHJlYWR5IGZhaWxlZCB0aGUgc2VnbWVudCBhbmQgbW92ZWQgdGhlCiAgKiBzdGF0dXMgdG8gV0FfU0VHX0VSUk9SLCBzbyB0aGlzIHdpbGwgZ28gdGhyb3VnaCAnY2FzZSAwJyBhbmQKICAqIGVmZmVjdGl2ZWx5IGRvIG5vdGhpbmcuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS93dXNiaGMuaCBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3d1c2JoYy5oCmluZGV4IDZiZDQyNmIuLjNhMmQwOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3d1c2JoYy5oCisrKyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3d1c2JoYy5oCkBAIC0yMzEsNyArMjMxLDcgQEAKICAqCiAgKiAgICBNb3N0IG9mIHRoZSB0aW1lcyB3aGVuIHlvdSBuZWVkIHRvIHVzZSBpdCwgaXQgd2lsbCBiZSBub24tTlVMTCwKICAqICAgIHNvIHRoZXJlIGlzIG5vIHJlYWwgbmVlZCB0byBjaGVjayBmb3IgaXQgKHd1c2JfZGV2IHdpbGwKLSAqICAgIGRpc3NhcGVhciBiZWZvcmUgdXNiX2RldikuCisgKiAgICBkaXNhcHBlYXIgYmVmb3JlIHVzYl9kZXYpLgogICoKICAqICAtIFRoZSBmb2xsb3dpbmcgZmllbGRzIG5lZWQgdG8gYmUgZmlsbGVkIG91dCBiZWZvcmUgY2FsbGluZwogICogICAgd3VzYmhjX2NyZWF0ZSgpOiBwb3J0c19tYXgsIG1tY2llc19tYXgsIG1tY2llX3thZGQscm19LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91d2IvZHJpdmVyLmMgYi9kcml2ZXJzL3V3Yi9kcml2ZXIuYwppbmRleCAwOGJkNmRiLi4zZTU0NTRhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvZHJpdmVyLmMKKysrIGIvZHJpdmVycy91d2IvZHJpdmVyLmMKQEAgLTYxLDcgKzYxLDcgQEAKIAogCiAvKioKLSAqIElmIGEgYmVhY29uIGRpc3NhcGVhcnMgZm9yIGxvbmdlciB0aGFuIHRoaXMsIHRoZW4gd2UgY29uc2lkZXIgdGhlCisgKiBJZiBhIGJlYWNvbiBkaXNhcHBlYXJzIGZvciBsb25nZXIgdGhhbiB0aGlzLCB0aGVuIHdlIGNvbnNpZGVyIHRoZQogICogZGV2aWNlIHdobyB3YXMgcmVwcmVzZW50ZWQgYnkgdGhhdCBiZWFjb24gdG8gYmUgZ29uZS4KICAqCiAgKiBFQ01BLTM2OFsxNy4yLjMsIGxhc3QgcGFyYV0gZXN0YWJsaXNoZXMgdGhhdCBhIGRldmljZSBtdXN0IG5vdApkaWZmIC0tZ2l0IGEvZHJpdmVycy91d2IvZHJwLmMgYi9kcml2ZXJzL3V3Yi9kcnAuYwppbmRleCBhOGQ4M2UyLi4zZmJjZjc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3V3Yi9kcnAuYworKysgYi9kcml2ZXJzL3V3Yi9kcnAuYwpAQCAtMjcsNyArMjcsNyBAQAogCiAvKiBEUlAgQ29uZmxpY3QgQWN0aW9ucyAoW0VDTUEtMzY4IDJuZCBFZGl0aW9uXSAxNy40LjYpICovCiBlbnVtIHV3Yl9kcnBfY29uZmxpY3RfYWN0aW9uIHsKLQkvKiBSZXNlcnZhdGlvbiBpcyBtYW50YWluZWQsIG5vIGFjdGlvbiBuZWVkZWQgKi8KKwkvKiBSZXNlcnZhdGlvbiBpcyBtYWludGFpbmVkLCBubyBhY3Rpb24gbmVlZGVkICovCiAJVVdCX0RSUF9DT05GTElDVF9NQU5UQUlOID0gMCwKIAkKIAkvKiB0aGUgZGV2aWNlIHNoYWxsIG5vdCB0cmFuc21pdCBmcmFtZXMgaW4gY29uZmxpY3RpbmcgTUFTcyBpbgpAQCAtNzQxLDEyICs3NDEsMTIgQEAKICAqIERSUCBub3RpZmljYXRpb25zIGNhbiBvY2N1ciBmb3IgdGhyZWUgZGlmZmVyZW50IHJlYXNvbnM6CiAgKgogICogLSBVV0JfRFJQX05PVElGX0RSUF9JRV9SRUNWRDogb25lIG9yIG1vcmUgRFJQIElFcyB3aXRoIHRoZSBSQyBhcwotICogICB0aGUgdGFyZ2V0IG9yIHNvdXJjZSBoYXZlIGJlZW4gcmVjaWV2ZWQuCisgKiAgIHRoZSB0YXJnZXQgb3Igc291cmNlIGhhdmUgYmVlbiByZWNlaXZlZC4KICAqCiAgKiAgIFRoZXNlIERSUCBJRXMgY291bGQgYmUgbmV3IG9yIGZvciBhbiBleGlzdGluZyByZXNlcnZhdGlvbi4KICAqCiAgKiAgIElmIHRoZSBEUlAgSUUgZm9yIGFuIGV4aXN0aW5nIHJlc2VydmF0aW9uIGNlYXNlcyB0byBiZSB0bwotICogICByZWNpZXZlZCBmb3IgYXQgbGVhc3QgbU1heExvc3RCZWFjb25zLCB0aGUgcmVzZXJ2YXRpb24gc2hvdWxkIGJlCisgKiAgIHJlY2VpdmVkIGZvciBhdCBsZWFzdCBtTWF4TG9zdEJlYWNvbnMsIHRoZSByZXNlcnZhdGlvbiBzaG91bGQgYmUKICAqICAgY29uc2lkZXJlZCB0byBiZSB0ZXJtaW5hdGVkLiAgTm90ZSB0aGF0IHRoZSBURVJNSU5BVEUgcmVhc29uIChzZWUKICAqICAgYmVsb3cpIG1heSBub3QgYWx3YXlzIGJlIHNpZ25hbGxlZCAoZS5nLiwgdGhlIHJlbW90ZSBkZXZpY2UgaGFzCiAgKiAgIHR3byBvciBtb3JlIHJlc2VydmF0aW9ucyBlc3RhYmxpc2hlZCB3aXRoIHRoZSBSQykuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3V3Yi9sYy1yYy5jIGIvZHJpdmVycy91d2IvbGMtcmMuYwppbmRleCBiMDA5MWM3Li5iNDM5NWY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3V3Yi9sYy1yYy5jCisrKyBiL2RyaXZlcnMvdXdiL2xjLXJjLmMKQEAgLTE2OCw3ICsxNjgsNyBAQAogCX0KIAogCWlmICh1d2JfbWFjX2FkZHJfdW5zZXQoJmFkZHIpIHx8IHV3Yl9tYWNfYWRkcl9iY2FzdCgmYWRkcikpIHsKLQkJYWRkci5kYXRhWzBdID0gMHgwMjsgLyogbG9jYWxseSBhZG1pbnN0ZXJlZCBhbmQgdW5pY2FzdCAqLworCQlhZGRyLmRhdGFbMF0gPSAweDAyOyAvKiBsb2NhbGx5IGFkbWluaXN0ZXJlZCBhbmQgdW5pY2FzdCAqLwogCQlnZXRfcmFuZG9tX2J5dGVzKCZhZGRyLmRhdGFbMV0sIHNpemVvZihhZGRyLmRhdGEpLTEpOwogCiAJCXJlc3VsdCA9IHV3Yl9yY19tYWNfYWRkcl9zZXQocmMsICZhZGRyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL3Jlc2V0LmMgYi9kcml2ZXJzL3V3Yi9yZXNldC5jCmluZGV4IDI3ODQ5MjkuLjNkZTYzMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXdiL3Jlc2V0LmMKKysrIGIvZHJpdmVycy91d2IvcmVzZXQuYwpAQCAtNTIsNyArNTIsNyBAQAogCSJjYW5jZWxsZWQiLAogCSJpbnZhbGlkIHN0YXRlIiwKIAkiaW52YWxpZCBzaXplIiwKLQkiYWNrIG5vdCByZWNpZXZlZCIsCisJImFjayBub3QgcmVjZWl2ZWQiLAogCSJubyBtb3JlIGFzaWUgbm90aWZpY2F0aW9uIiwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL3VtYy1kZXYuYyBiL2RyaXZlcnMvdXdiL3VtYy1kZXYuYwppbmRleCBjY2QyMTg0Li5iMjk0OGVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3V3Yi91bWMtZGV2LmMKKysrIGIvZHJpdmVycy91d2IvdW1jLWRldi5jCkBAIC03OCw3ICs3OCw3IEBACiAgKiBGaXJzdCB3ZSB1bnJlZ2lzdGVyIHRoZSBkZXZpY2UsIG1ha2Ugc3VyZSB0aGUgZHJpdmVyIGNhbiBkbyBpdCdzCiAgKiByZXNvdXJjZSByZWxlYXNlIHRoaW5nIGFuZCB0aGVuIHdlIHRyeSB0byByZWxlYXNlIGFueSBsZWZ0IG92ZXIKICAqIHJlc291cmNlcy4gV2UgdGFrZSBhIHJlZiB0byB0aGUgZGV2aWNlLCB0byBtYWtlIHN1cmUgaXQgZG9lc24ndAotICogZGlzc2FwZWFyIHVuZGVyIG91ciBmZWV0LgorICogZGlzYXBwZWFyIHVuZGVyIG91ciBmZWV0LgogICovCiB2b2lkIHVtY19kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgdW1jX2RldiAqdW1jKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdG1lbF9sY2RmYi5jIGIvZHJpdmVycy92aWRlby9hdG1lbF9sY2RmYi5jCmluZGV4IGNjZWNmOTkuLjQ0ODRjNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXRtZWxfbGNkZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F0bWVsX2xjZGZiLmMKQEAgLTYzNyw3ICs2MzcsNyBAQAogICogIAltYWduaXR1ZGUgd2hpY2ggbmVlZHMgdG8gYmUgc2NhbGVkIGluIHRoaXMgZnVuY3Rpb24gZm9yIHRoZSBoYXJkd2FyZS4KICAqCVRoaW5ncyB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbiBhcmUgaG93IG1hbnkgY29sb3IgcmVnaXN0ZXJzLCBpZgogICoJYW55LCBhcmUgc3VwcG9ydGVkIHdpdGggdGhlIGN1cnJlbnQgY29sb3IgdmlzdWFsLiBXaXRoIHRydWVjb2xvciBtb2RlCi0gKglubyBjb2xvciBwYWxldHRlcyBhcmUgc3VwcG9ydGVkLiBIZXJlIGEgcHN1ZWRvIHBhbGV0dGUgaXMgY3JlYXRlZAorICoJbm8gY29sb3IgcGFsZXR0ZXMgYXJlIHN1cHBvcnRlZC4gSGVyZSBhIHBzZXVkbyBwYWxldHRlIGlzIGNyZWF0ZWQKICAqCXdoaWNoIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbiBwc2V1ZG9fcGFsZXR0ZSBpbiBzdHJ1Y3QgZmJfaW5mby4gRm9yCiAgKglwc2V1ZG9jb2xvciBtb2RlIHdlIGhhdmUgYSBsaW1pdGVkIGNvbG9yIHBhbGV0dGUuIFRvIGRlYWwgd2l0aCB0aGlzCiAgKgl3ZSBjYW4gcHJvZ3JhbSB3aGF0IGNvbG9yIGlzIGRpc3BsYXllZCBmb3IgYSBwYXJ0aWN1bGFyIHBpeGVsIHZhbHVlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jIGIvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jCmluZGV4IGQ0MzdiM2QuLmViYjg5M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMKQEAgLTMxMjQsMTIgKzMxMjQsMTIgQEAKIAkJTSA9IHBsbF9yZWdzWzJdOwogCiAJCS8qCi0JCSAqIFBMTCBGZWVkYmFjayBEaXZpZGVyIE4gKERlcGVuZGFudCBvbiBDTE9DS19DTlRMKToKKwkJICogUExMIEZlZWRiYWNrIERpdmlkZXIgTiAoRGVwZW5kZW50IG9uIENMT0NLX0NOVEwpOgogCQkgKi8KIAkJTiA9IHBsbF9yZWdzWzcgKyAoY2xvY2tfY250bCAmIDMpXTsKIAogCQkvKgotCQkgKiBQTEwgUG9zdCBEaXZpZGVyIFAgKERlcGVuZGFudCBvbiBDTE9DS19DTlRMKToKKwkJICogUExMIFBvc3QgRGl2aWRlciBQIChEZXBlbmRlbnQgb24gQ0xPQ0tfQ05UTCk6CiAJCSAqLwogCQlQID0gMSA8PCAocGxsX3JlZ3NbNl0gPj4gKChjbG9ja19jbnRsICYgMykgPDwgMSkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2F0eS9tYWNoNjRfY3Vyc29yLmMgYi9kcml2ZXJzL3ZpZGVvL2F0eS9tYWNoNjRfY3Vyc29yLmMKaW5kZXggMmJhOGIzYy4uNDZmNzJlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9hdHkvbWFjaDY0X2N1cnNvci5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYXR5L21hY2g2NF9jdXJzb3IuYwpAQCAtNTEsNyArNTEsNyBAQAogICogdG8gYSBsYXJnZXIgbnVtYmVyIGFuZCBzYXR1cmF0ZSBDVVJfSE9SWl9QT1NOIHRvIHplcm8uCiAgKgogICogaWYgWSBiZWNvbWVzIG5lZ2F0aXZlLCBDVVJfVkVSVF9PRkZTRVQgbXVzdCBiZSBhZGp1c3RlZCB0byBhIGxhcmdlciBudW1iZXIsCi0gKiBDVVJfT0ZGU0VUIG11c3QgYmUgYWRqdXN0ZWQgdG8gYSBwb2ludCB0byB0aGUgYXBwcm9wcmFpdGUgbGluZSBpbiB0aGUgY3Vyc29yCisgKiBDVVJfT0ZGU0VUIG11c3QgYmUgYWRqdXN0ZWQgdG8gYSBwb2ludCB0byB0aGUgYXBwcm9wcmlhdGUgbGluZSBpbiB0aGUgY3Vyc29yCiAgKiBkZWZpbml0YXRpb24gYW5kIENVUl9WRVJUX1BPU04gbXVzdCBiZSBzYXR1cmF0ZWQgdG8gemVyby4KICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2F1MTIwMGZiLmMgYi9kcml2ZXJzL3ZpZGVvL2F1MTIwMGZiLmMKaW5kZXggNGVhMTg3ZC4uNWRmZjMyYSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9hdTEyMDBmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYXUxMjAwZmIuYwpAQCAtMTU3Miw3ICsxNTcyLDcgQEAKIAkvKiBDb3B5IG1vbml0b3Igc3BlY3MgZnJvbSBwYW5lbCBkYXRhICovCiAJLyogZml4bWU6IHdlJ3JlIHNldHRpbmcgdXAgTENEIGNvbnRyb2xsZXIgd2luZG93cywgc28gdGhlc2UgZG9udCBnaXZlIGEKIAlkYW1uIGFzIHRvIHdoYXQgdGhlIG1vbml0b3Igc3BlY3MgYXJlICh0aGUgcGFuZWwgaXRzZWxmIGRvZXMsIGJ1dCB0aGF0Ci0JaXNudCBkb25lIGhlcmUuLi5zbyBtYXliZSBuZWVkIGEgZ2VuZXJpYyBjYXRjaGFsbCBtb25pdG9yIHNldHRpbmc/Pz8gKi8KKwlpc24ndCBkb25lIGhlcmUuLi5zbyBtYXliZSBuZWVkIGEgZ2VuZXJpYyBjYXRjaGFsbCBtb25pdG9yIHNldHRpbmc/Pz8gKi8KIAltZW1jcHkoJmZiaS0+bW9uc3BlY3MsICZwYW5lbC0+bW9uc3BlY3MsIHNpemVvZihzdHJ1Y3QgZmJfbW9uc3BlY3MpKTsKIAogCS8qIFdlIGZpcnN0IHRyeSB0aGUgdXNlciBtb2RlIHBhc3NlZCBpbiBhcmd1bWVudC4gSWYgdGhhdCBmYWlsZWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2NvcmdpX2xjZC5jCmluZGV4IGFmNjA5ODMuLmM2NTMzYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2NvcmdpX2xjZC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2NvcmdpX2xjZC5jCkBAIC0xMDksNyArMTA5LDcgQEAKICNkZWZpbmUgQ09SR0lCTF9CQVRUTE9XICAgICAgIDB4MDIKIAogLyoKLSAqIFRoaXMgaXMgb25seSBhIHBzdWVkbyBJMkMgaW50ZXJmYWNlLiBXZSBjYW4ndCB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbAorICogVGhpcyBpcyBvbmx5IGEgcHNldWRvIEkyQyBpbnRlcmZhY2UuIFdlIGNhbid0IHVzZSB0aGUgc3RhbmRhcmQga2VybmVsCiAgKiByb3V0aW5lcyBhcyB0aGUgaW50ZXJmYWNlIGlzIHdyaXRlIG9ubHkuIFdlIGp1c3QgYXNzdW1lIHRoZSBkYXRhIGlzIGFja2VkLi4uCiAgKi8KIHN0YXRpYyB2b2lkIGxjZHRnX3NzcF9pMmNfc2VuZChzdHJ1Y3QgY29yZ2lfbGNkICpsY2QsIHVpbnQ4X3QgZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbG9jb21vbGNkLmMKaW5kZXggYmJjYTMxMi4uYmUyMGI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbG9jb21vbGNkLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbG9jb21vbGNkLmMKQEAgLTYsNyArNiw3IEBACiAgKiBHUEwgdjIKICAqCiAgKiBUaGlzIGRyaXZlciBhc3N1bWVzIHNpbmdsZSBDUFUuIFRoYXQncyBva2F5LCBiZWNhdXNlIGNvbGxpZSBpcwotICogc2xpZ2h0bHkgb2xkIGhhcmR3YXJlLCBhbmQgbm9vbmUgaXMgZ29pbmcgdG8gcmV0cm9maXQgc2Vjb25kIENQVSB0bworICogc2xpZ2h0bHkgb2xkIGhhcmR3YXJlLCBhbmQgbm8gb25lIGlzIGdvaW5nIHRvIHJldHJvZml0IHNlY29uZCBDUFUgdG8KICAqIG9sZCBQREEuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iZmluX2FkdjczOTNmYi5oIGIvZHJpdmVycy92aWRlby9iZmluX2FkdjczOTNmYi5oCmluZGV4IDhjN2Y5ZTQuLmNkNTkxYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmZpbl9hZHY3MzkzZmIuaAorKysgYi9kcml2ZXJzL3ZpZGVvL2JmaW5fYWR2NzM5M2ZiLmgKQEAgLTg3LDEyICs4NywxMiBAQAogCiBzdGF0aWMgY29uc3QgdTggaW5pdF9OVFNDW10gPSB7CiAJMHgwMCwgMHgxRSwJLyogUG93ZXIgdXAgYWxsIERBQ3MgYW5kIFBMTCAqLwotCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLworCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLwogCTB4OEMsIDB4MUYsCS8qIE5UU0MgU3ViY2FycmllciBGcmVxdWVuY3kgKi8KIAkweDhELCAweDdDLAkvKiBOVFNDIFN1YmNhcnJpZXIgRnJlcXVlbmN5ICovCiAJMHg4RSwgMHhGMCwJLyogTlRTQyBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwpAQCAtMTA5LDEyICsxMDksMTIgQEAKIAogc3RhdGljIGNvbnN0IHU4IGluaXRfUEFMW10gPSB7CiAJMHgwMCwgMHgxRSwJLyogUG93ZXIgdXAgYWxsIERBQ3MgYW5kIFBMTCAqLwotCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLworCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLwogCTB4OEMsIDB4Q0IsCS8qIFBBTCBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwogCTB4OEQsIDB4OEEsCS8qIFBBTCBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwogCTB4OEUsIDB4MDksCS8qIFBBTCBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9jb25zb2xlL2ZvbnRfbWluaV80eDYuYyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9mb250X21pbmlfNHg2LmMKaW5kZXggYTE5YTdmMy4uZmE2ZTY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9jb25zb2xlL2ZvbnRfbWluaV80eDYuYworKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZm9udF9taW5pXzR4Ni5jCkBAIC0xLDUgKzEsNSBAQAogCi0vKiBIYW5kIGNvbXBvc2VkICJNaW5pc2N1bGUiIDR4NiBmb250LCB3aXRoIGJpbmFyeSBkYXRhIGdlbmVyYXRlZCB1c2luZworLyogSGFuZCBjb21wb3NlZCAiTWludXNjdWxlIiA0eDYgZm9udCwgd2l0aCBiaW5hcnkgZGF0YSBnZW5lcmF0ZWQgdXNpbmcKICAqIFBlcmwgc3R1Yi4KICAqCiAgKiBVc2UgJ3BlcmwgLXggbWluaV80eDYuYyA8IG1pbmlfNHg2LmMgPiBuZXdfdmVyc2lvbi5jJyB0byByZWdlbmVyYXRlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2RhOHh4LWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2RhOHh4LWZiLmMKaW5kZXggOGQ2MWVmOS4uOGI3ZDQ3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9kYTh4eC1mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZGE4eHgtZmIuYwpAQCAtNzYzLDcgKzc2Myw3IEBACiAKIAkvKgogCSAqIFNldCBmbGFnIHRvIDAgYW5kIHdhaXQgZm9yIGlzciB0byBzZXQgdG8gMS4gSXQgd291bGQgc2VlbSB0aGVyZSBpcyBhCi0JICogcmFjZSBjb25kaXRpb24gaGVyZSB3aGVyZSB0aGUgSVNSIGNvdWxkIGhhdmUgb2NjdXJlZCBqdXN0IGJlZm9yZSBvcgorCSAqIHJhY2UgY29uZGl0aW9uIGhlcmUgd2hlcmUgdGhlIElTUiBjb3VsZCBoYXZlIG9jY3VycmVkIGp1c3QgYmVmb3JlIG9yCiAJICoganVzdCBhZnRlciB0aGlzIHNldC4gQnV0IHNpbmNlIHdlIGFyZSBqdXN0IGNvYXJzZWx5IHdhaXRpbmcgZm9yCiAJICogYSBmcmFtZSB0byBjb21wbGV0ZSB0aGVuIHRoYXQncyBPSy4gaS5lLiBpZiB0aGUgZnJhbWUgY29tcGxldGVkCiAJICoganVzdCBiZWZvcmUgdGhpcyBjb2RlIGV4ZWN1dGVkIHRoZW4gd2UgaGF2ZSB0byB3YWl0IGFub3RoZXIgZnVsbApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9kaXNwbGF5L2Rpc3BsYXktc3lzZnMuYyBiL2RyaXZlcnMvdmlkZW8vZGlzcGxheS9kaXNwbGF5LXN5c2ZzLmMKaW5kZXggZjZhMDlhYi4uMGM2NDdkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9kaXNwbGF5L2Rpc3BsYXktc3lzZnMuYworKysgYi9kcml2ZXJzL3ZpZGVvL2Rpc3BsYXkvZGlzcGxheS1zeXNmcy5jCkBAIC0xODIsNyArMTgyLDcgQEAKIAltdXRleF9sb2NrKCZkZGV2LT5sb2NrKTsKIAlkZXZpY2VfdW5yZWdpc3RlcihkZGV2LT5kZXYpOwogCW11dGV4X3VubG9jaygmZGRldi0+bG9jayk7Ci0JLy8gTWFyayBkZXZpY2UgaW5kZXggYXMgYXZhbGlhYmxlCisJLy8gTWFyayBkZXZpY2UgaW5kZXggYXMgYXZhaWxhYmxlCiAJbXV0ZXhfbG9jaygmYWxsb2NhdGVkX2RzcF9sb2NrKTsKIAlpZHJfcmVtb3ZlKCZhbGxvY2F0ZWRfZHNwLCBkZGV2LT5pZHgpOwogCW11dGV4X3VubG9jaygmYWxsb2NhdGVkX2RzcF9sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZXA5M3h4LWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2VwOTN4eC1mYi5jCmluZGV4IGIzNThkMDQuLmNiZGIxYmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZXA5M3h4LWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9lcDkzeHgtZmIuYwpAQCAtNDU2LDcgKzQ1Niw3IEBACiAJICogVGhlcmUgaXMgYSBidWcgaW4gdGhlIGVwOTN4eCBmcmFtZWJ1ZmZlciB3aGljaCBjYXVzZXMgcHJvYmxlbXMKIAkgKiBpZiBiaXQgMjcgb2YgdGhlIHBoeXNpY2FsIGFkZHJlc3MgaXMgc2V0LgogCSAqIFNlZTogaHR0cDovL21hcmMuaW5mby8/bD1saW51eC1hcm0ta2VybmVsJm09MTEwMDYxMjQ1NTAyMDAwJnc9MgotCSAqIFRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgYW55IG9mZmljYWwgZXJyYXRhIGZvciB0aGlzLCBidXQgSQorCSAqIFRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgYW55IG9mZmljaWFsIGVycmF0YSBmb3IgdGhpcywgYnV0IEkKIAkgKiBoYXZlIGNvbmZpcm1lZCB0aGUgcHJvYmxlbSBleGlzdHMgb24gbXkgaGFyZHdhcmUgKGVwOTMxNSkgYXQKIAkgKiBsZWFzdC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jIGIvZHJpdmVycy92aWRlby9mYnN5c2ZzLmMKaW5kZXggZjRhMzI3Ny4uMDQyNTFjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYnN5c2ZzLmMKKysrIGIvZHJpdmVycy92aWRlby9mYnN5c2ZzLmMKQEAgLTMzLDcgKzMzLDcgQEAKICAqIGZvciBkcml2ZXIgcHJpdmF0ZSBkYXRhIChpbmZvLT5wYXIpLiBpbmZvLT5wYXIgKGlmIGFueSkgd2lsbCBiZQogICogYWxpZ25lZCB0byBzaXplb2YobG9uZykuCiAgKgotICogUmV0dXJucyB0aGUgbmV3IHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLgorICogUmV0dXJucyB0aGUgbmV3IHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAqCiAgKi8KIHN0cnVjdCBmYl9pbmZvICpmcmFtZWJ1ZmZlcl9hbGxvYyhzaXplX3Qgc2l6ZSwgc3RydWN0IGRldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mbTJmYi5jIGIvZHJpdmVycy92aWRlby9mbTJmYi5jCmluZGV4IDFiMGZlYjguLmQwNTMzYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZm0yZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZtMmZiLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICAqCWJ1ZmZlciBuZWVkcyBhbiBhbW91bnQgb2YgbWVtb3J5IG9mIDEuNzY5LjQ3MiBieXRlcyB3aGljaAogICoJaXMgbmVhciB0byAyIE1CeXRlICh0aGUgYWxsb2NhdGVkIGFkZHJlc3Mgc3BhY2Ugb2YgWm9ycm8yKS4KICAqCVRoZSBtZW1vcnkgaXMgY2hhbm5lbCBpbnRlcmxlYXZlZC4gVGhhdCBtZWFucyBldmVyeSBjaGFubmVsCi0gKglvd25zIGZvdXIgVlJBTXMuIFVuZm9ydHVuYXRseSBtb3N0IEZyYW1lTWFzdGVycyBJSSBhcmUKKyAqCW93bnMgZm91ciBWUkFNcy4gVW5mb3J0dW5hdGVseSBtb3N0IEZyYW1lTWFzdGVycyBJSSBhcmUKICAqCW5vdCBhc3NlbWJsZWQgd2l0aCBtZW1vcnkgZm9yIHRoZSBhbHBoYSBjaGFubmVsLiBJbiB0aGlzCiAgKgljYXNlIGl0IGNvdWxkIGJlIHBvc3NpYmxlIHRvIGFkZCB0aGUgZnJhbWUgYnVmZmVyIGludG8gdGhlCiAgKglub3JtYWwgbWVtb3J5IHBvb2wuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYyBiL2RyaXZlcnMvdmlkZW8vZnNsLWRpdS1mYi5jCmluZGV4IDkwNDhmODcuLmJlZGY1YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZnNsLWRpdS1mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZnNsLWRpdS1mYi5jCkBAIC04ODIsNyArODgyLDcgQEAKICAqIHdoaWNoIG5lZWRzIHRvIGJlIHNjYWxlZCBpbiB0aGlzIGZ1bmN0aW9uIGZvciB0aGUgaGFyZHdhcmUuIFRoaW5ncyB0byB0YWtlCiAgKiBpbnRvIGNvbnNpZGVyYXRpb24gYXJlIGhvdyBtYW55IGNvbG9yIHJlZ2lzdGVycywgaWYgYW55LCBhcmUgc3VwcG9ydGVkIHdpdGgKICAqIHRoZSBjdXJyZW50IGNvbG9yIHZpc3VhbC4gV2l0aCB0cnVlY29sb3IgbW9kZSBubyBjb2xvciBwYWxldHRlcyBhcmUKLSAqIHN1cHBvcnRlZC4gSGVyZSBhIHBzdWVkbyBwYWxldHRlIGlzIGNyZWF0ZWQgd2hpY2ggd2Ugc3RvcmUgdGhlIHZhbHVlIGluCisgKiBzdXBwb3J0ZWQuIEhlcmUgYSBwc2V1ZG8gcGFsZXR0ZSBpcyBjcmVhdGVkIHdoaWNoIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbgogICogcHNldWRvX3BhbGV0dGUgaW4gc3RydWN0IGZiX2luZm8uIEZvciBwc2V1ZG9jb2xvciBtb2RlIHdlIGhhdmUgYSBsaW1pdGVkCiAgKiBjb2xvciBwYWxldHRlLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2diZWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2diZWZiLmMKaW5kZXggOTMzODk5ZC4uN2U3YjdhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9nYmVmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZ2JlZmIuYwpAQCAtNzIxLDcgKzcyMSw3IEBACiAKIAkgICBUaWxlcyBoYXZlIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGV5IGNhbiBiZSBhbGxvY2F0ZWQgaW5kaXZpZHVhbGx5IGluCiAJICAgbWVtb3J5LiBIb3dldmVyLCB0aGlzIG1hcHBpbmcgaXMgbm90IGxpbmVhciBhdCBhbGwsIHdoaWNoIGlzIG5vdAotCSAgIHJlYWxseSBjb252aWVuaWVudC4gSW4gb3JkZXIgdG8gc3VwcG9ydCBsaW5lYXIgYWRkcmVzc2luZywgdGhlIEdCRQorCSAgIHJlYWxseSBjb252ZW5pZW50LiBJbiBvcmRlciB0byBzdXBwb3J0IGxpbmVhciBhZGRyZXNzaW5nLCB0aGUgR0JFCiAJICAgRE1BIGhhcmR3YXJlIGlzIGZvb2xlZCBpbnRvIHRoaW5raW5nIHRoZSBzY3JlZW4gaXMgb25seSBvbmUgdGlsZQogCSAgIGxhcmdlIGFuZCBidXQgaGFzIGEgZ3JlYXRlciBoZWlnaHQsIHNvIHRoYXQgdGhlIERNQSB0cmFuc2ZlciBjb3ZlcnMKIAkgICB0aGUgc2FtZSByZWdpb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaCBiL2RyaXZlcnMvdmlkZW8vZ2VvZGUvbHhmYi5oCmluZGV4IGJlOGNjYjQuLmNmY2Q4MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZ2VvZGUvbHhmYi5oCisrKyBiL2RyaXZlcnMvdmlkZW8vZ2VvZGUvbHhmYi5oCkBAIC0xMTcsNyArMTE3LDcgQEAKIH07CiAKICNkZWZpbmUgR1BfQkxUX1NUQVRVU19DRQkJKDEgPDwgNCkJLyogY21kIGJ1ZiBlbXB0eSAqLwotI2RlZmluZSBHUF9CTFRfU1RBVFVTX1BCCQkoMSA8PCAwKQkvKiBwcmltYXRpdmUgYnVzeSAqLworI2RlZmluZSBHUF9CTFRfU1RBVFVTX1BCCQkoMSA8PCAwKQkvKiBwcmltaXRpdmUgYnVzeSAqLwogCiAKIC8qIERpc3BsYXkgQ29udHJvbGxlciByZWdpc3RlcnMgKHRhYmxlIDYtNDcgZnJvbSB0aGUgZGF0YSBib29rKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9pODEwL2k4MTBfYWNjZWwuYyBiL2RyaXZlcnMvdmlkZW8vaTgxMC9pODEwX2FjY2VsLmMKaW5kZXggZjViZWRlZS4uNzY3MmQyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9pODEwL2k4MTBfYWNjZWwuYworKysgYi9kcml2ZXJzL3ZpZGVvL2k4MTAvaTgxMF9hY2NlbC5jCkBAIC0xMTIsNyArMTEyLDcgQEAKICAqIEBwYXI6IHBvaW50ZXIgdG8gaTgxMGZiX3BhciBzdHJ1Y3R1cmUKICAqCiAgKiBERVNDUklQVElPTjoKLSAqIENoZWNrcy93YWl0cyBmb3Igc3VmZmljZW50IHNwYWNlIGluIHJpbmdidWZmZXIgb2Ygc2l6ZQorICogQ2hlY2tzL3dhaXRzIGZvciBzdWZmaWNpZW50IHNwYWNlIGluIHJpbmdidWZmZXIgb2Ygc2l6ZQogICogc3BhY2UuICBSZXR1cm5zIHRoZSB0YWlsIG9mIHRoZSBidWZmZXIKICAqLyAKIHN0YXRpYyBpbmxpbmUgdTMyIGJlZ2luX2lyaW5nKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1MzIgc3BhY2UpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYyBiL2RyaXZlcnMvdmlkZW8va3lyby9TVEc0MDAwT3ZlcmxheURldmljZS5jCmluZGV4IGE4Yzk3MTMuLjBhZWVhYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8va3lyby9TVEc0MDAwT3ZlcmxheURldmljZS5jCisrKyBiL2RyaXZlcnMvdmlkZW8va3lyby9TVEc0MDAwT3ZlcmxheURldmljZS5jCkBAIC00MTcsNyArNDE3LDcgQEAKIAkvKioqKioqKioqKioqKioqKiogSG9yaXpvbnRhbCBkZWNpbWF0aW9uL3NjYWxpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAJLyoKLQkgKiBOb3cgd2UgaGFuZGxlIHRoZSBob3Jpem9udGFsIGNhc2UsIHRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcmlzb24gb2YKKwkgKiBOb3cgd2UgaGFuZGxlIHRoZSBob3Jpem9udGFsIGNhc2UsIHRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YKIAkgKiB0aGUgdmVydGljYWwgY2FzZSBpbiB0aGF0IHdlIGRlY2ltYXRlIGJ5IGZhY3RvcnMgb2YgMi4gIGFzIHdlIGFyZQogCSAqIHdvcmtpbmcgaW4gd29yZHMgd2Ugc2hvdWxkIGFsd2F5cyBiZSBhYmxlIHRvIGRlY2ltYXRlIGJ5IHRoZXNlCiAJICogZmFjdG9ycy4gIGFzIHdlIGFsd2F5cyBoYXZlIHRvIGhhdmUgYSBidWZmZXIgd2hpY2ggaXMgYWxpZ25lZCB0byBhCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwMFJlZy5oIGIvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBSZWcuaAppbmRleCAyNDQ1NDllLi41ZDYyNjk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwMFJlZy5oCisrKyBiL2RyaXZlcnMvdmlkZW8va3lyby9TVEc0MDAwUmVnLmgKQEAgLTE2LDcgKzE2LDcgQEAKIAogLyoKICAqIE1hY3JvcyB0aGF0IGFjY2VzcyBtZW1vcnkgbWFwcGVkIGNhcmQgcmVnaXN0ZXJzIGluIFBDSSBzcGFjZQotICogQWRkIGFuIGFwcHJvcHJhaXRlIHNlY3Rpb24gZm9yIHlvdXIgT1Mgb3IgcHJvY2Vzc29yIGFyY2hpdGVjdHVyZS4KKyAqIEFkZCBhbiBhcHByb3ByaWF0ZSBzZWN0aW9uIGZvciB5b3VyIE9TIG9yIHByb2Nlc3NvciBhcmNoaXRlY3R1cmUuCiAgKi8KICNpZiBkZWZpbmVkKF9fS0VSTkVMX18pCiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX0RBQzEwNjQuaCBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX0RBQzEwNjQuaAppbmRleCBjNmVkNzgwLi4xZTZlNDViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9EQUMxMDY0LmgKKysrIGIvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfREFDMTA2NC5oCkBAIC00Niw3ICs0Niw3IEBACiAjZGVmaW5lICAgICAgTTEwNjRfWERWSUNMS0NUUkxfRFZJTE9PUENUTCAgICAgICAweDMwCiAJLyogQ1JUQzIgcGl4ZWwgY2xvY2sgYWxsb3dlZCB0bygwKS9ibG9ja2VkIGZyb20oMSkgZHJpdmluZyBDUlRDMiAqLwogI2RlZmluZSAgICAgIE0xMDY0X1hEVklDTEtDVFJMX0MyRFZJQ0xLRU4gICAgICAgMHg0MAotCS8qIFAxUExMIGxvb3AgZmlsdGVyIGJhbmR3aXRoIHNlbGVjdGlvbiAqLworCS8qIFAxUExMIGxvb3AgZmlsdGVyIGJhbmR3aWR0aCBzZWxlY3Rpb24gKi8KICNkZWZpbmUgICAgICBNMTA2NF9YRFZJQ0xLQ1RSTF9QMUxPT1BCV0RUQ1RMICAgIDB4ODAKICNkZWZpbmUgTTEwNjRfWENVUkNPTDBSRUQJMHgwOAogI2RlZmluZSBNMTA2NF9YQ1VSQ09MMEdSRUVOCTB4MDkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jIGIvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfVGkzMDI2LmMKaW5kZXggODM1YWFhYS4uOWE0NGNlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfVGkzMDI2LmMKKysrIGIvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfVGkzMDI2LmMKQEAgLTM4Nyw3ICszODcsNyBAQAogCQkJaHctPkRBQ3JlZ1tQT1MzMDI2X1hNSVNDQ1RSTF0gPSBUVlAzMDI2X1hNSVNDQ1RSTF9EQUNfUFVQIHwgVFZQMzAyNl9YTUlTQ0NUUkxfREFDXzhCSVQgfCBUVlAzMDI2X1hNSVNDQ1RSTF9QU0VMX0RJUyB8IFRWUDMwMjZfWE1JU0NDVFJMX1BTRUxfTE9XOwogCQkJYnJlYWs7CiAJCWNhc2UgMTY6Ci0JCQkvKiBYTEFUQ0hDVFJMIHNob3VsZCBiZSBfNF8xIC8gXzJfMS4uLiBXaHkgaXMgbm90PyAoXzJfMSBpcyB1c2VkIGV2ZXJ5dGltZSkgKi8KKwkJCS8qIFhMQVRDSENUUkwgc2hvdWxkIGJlIF80XzEgLyBfMl8xLi4uIFdoeSBpcyBub3Q/IChfMl8xIGlzIHVzZWQgZXZlcnkgdGltZSkgKi8KIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YVFJVRUNPTE9SQ1RSTF0gPSAobWluZm8tPmZiY29uLnZhci5ncmVlbi5sZW5ndGggPT0gNSkgPyAoVFZQMzAyNl9YVFJVRUNPTE9SQ1RSTF9ESVJFQ1RDT0xPUiB8IFRWUDMwMjZfWFRSVUVDT0xPUkNUUkxfT1JHQl8xNTU1KSA6IChUVlAzMDI2X1hUUlVFQ09MT1JDVFJMX0RJUkVDVENPTE9SIHwgVFZQMzAyNl9YVFJVRUNPTE9SQ1RSTF9SR0JfNTY1KTsKIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YTVVYQ1RSTF0gPSBtdXhjdHJsIHwgVFZQMzAyNl9YTVVYQ1RSTF9QSVhFTF8xNkJJVDsKIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YQ0xLQ1RSTF0gPSBUVlAzMDI2X1hDTEtDVFJMX1NSQ19QTEwgfCBUVlAzMDI2X1hDTEtDVFJMX0RJVjI7CkBAIC0zOTksNyArMzk5LDcgQEAKIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YQ0xLQ1RSTF0gPSBUVlAzMDI2X1hDTEtDVFJMX1NSQ19QTEwgfCBUVlAzMDI2X1hDTEtDVFJMX0RJVjQ7CiAJCQlicmVhazsKIAkJY2FzZSAzMjoKLQkJCS8qIFhMQVRDSENUUkwgc2hvdWxkIGJlIF8yXzEgLyBfMV8xLi4uIFdoeSBpcyBub3Q/IChfMl8xIGlzIHVzZWQgZXZlcnl0aW1lKSAqLworCQkJLyogWExBVENIQ1RSTCBzaG91bGQgYmUgXzJfMSAvIF8xXzEuLi4gV2h5IGlzIG5vdD8gKF8yXzEgaXMgdXNlZCBldmVyeSB0aW1lKSAqLwogCQkJaHctPkRBQ3JlZ1tQT1MzMDI2X1hNVVhDVFJMXSA9IG11eGN0cmwgfCBUVlAzMDI2X1hNVVhDVFJMX1BJWEVMXzMyQklUOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmMgYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmMKaW5kZXggNWNlNmZhNi4uNDRiZjhkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuYwpAQCAtNjIxLDcgKzYyMSw3IEBACiAJCXZhci0+eW9mZnNldCA9IHZhci0+eXJlc192aXJ0dWFsIC0gdmFyLT55cmVzOwogCiAJaWYgKGJwcCA9PSAxNiAmJiB2YXItPmdyZWVuLmxlbmd0aCA9PSA1KSB7Ci0JCWJwcC0tOyAvKiBhbiBhcnRpZmljYWwgdmFsdWUgLSAxNSAqLworCQlicHAtLTsgLyogYW4gYXJ0aWZpY2lhbCB2YWx1ZSAtIDE1ICovCiAJfQogCiAJZm9yIChyZ2J0ID0gdGFibGU7IHJnYnQtPmJwcCA8IGJwcDsgcmdidCsrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuaCBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuaAppbmRleCBmOTZhNDcxLi4xMWVkNTdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmgKKysrIGIvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5oCkBAIC0xMiw3ICsxMiw3IEBACiAjdW5kZWYgTUFUUk9YRkJfREVCVUcKIAogLyogaGVhdnkgZGVidWdnaW5nOiAqLwotLyogLS0gbG9ncyBwdXRjW3NdLCBzbyBldmVyeXRpbWUgYSBjaGFyIGlzIGRpc3BsYXllZCwgaXQncyBsb2dnZWQgKi8KKy8qIC0tIGxvZ3MgcHV0Y1tzXSwgc28gZXZlcnkgdGltZSBhIGNoYXIgaXMgZGlzcGxheWVkLCBpdCdzIGxvZ2dlZCAqLwogI3VuZGVmIE1BVFJPWEZCX0RFQlVHX0hFQVZZCiAKIC8qIFRoaXMgb25lIF9jb3VsZF8gY2F1c2UgaW5maW5pdGUgbG9vcHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vbnVjOTAwZmIuaCBiL2RyaXZlcnMvdmlkZW8vbnVjOTAwZmIuaAppbmRleCA2YzIzYWEzLi5iYzdjOTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL251YzkwMGZiLmgKKysrIGIvZHJpdmVycy92aWRlby9udWM5MDBmYi5oCkBAIC04LDcgKzgsNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICBBdXRoZXI6CisgKiAgIEF1dGhvcjoKICAqICAgICAgICBXYW5nIFFpYW5nKHJ1cmFsaXR5LmxpbnV4QGdtYWlsLmNvbSkgIDIwMDkvMTIvMTYKICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZyBiL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnCmluZGV4IDE1ZTdmMTkuLjE5NmZhMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnCkBAIC02NCw3ICs2NCw3IEBACiAJZGVwZW5kcyBvbiBGQl9PTUFQICYmIEZCX09NQVBfTENEQ19FWFRFUk5BTAogCWhlbHAKIAkgIFNheSBZIGhlcmUsIGlmIHlvdXIgdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgYXJlIGNhcGFibGUgb2YKLQkgIG5vdGlmeWluZyB0aGUgZnJhbWUgYnVmZmVyIGRyaXZlciB3aGVuIGEgY2hhbmdlIGhhcyBvY2N1cmVkIGluCisJICBub3RpZnlpbmcgdGhlIGZyYW1lIGJ1ZmZlciBkcml2ZXIgd2hlbiBhIGNoYW5nZSBoYXMgb2NjdXJyZWQgaW4KIAkgIHRoZSBmcmFtZSBidWZmZXIgY29udGVudCBhbmQgdGh1cyBhIHJlbG9hZCBvZiB0aGUgaW1hZ2UgZGF0YSB0bwogCSAgdGhlIGV4dGVybmFsIGZyYW1lIGJ1ZmZlciBpcyByZXF1aXJlZC4gSWYgdW5zdXJlLCBzYXkgTi4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwMi9kc3MvaGRtaS5jIGIvZHJpdmVycy92aWRlby9vbWFwMi9kc3MvaGRtaS5jCmluZGV4IDBkNDRmMDcuLmE5ODFkZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vb21hcDIvZHNzL2hkbWkuYworKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAyL2Rzcy9oZG1pLmMKQEAgLTU4Nyw3ICs1ODcsNyBAQAogCXN0cnVjdCBoZG1pX2NtIGNtOwogCXN0cnVjdCBvbWFwX3ZpZGVvX3RpbWluZ3MgZWRpZF90aW1pbmdzOwogCi0JLyogc2VhY2ggYmxvY2sgMCwgdGhlcmUgYXJlIDQgRFREcyBhcnJhbmdlZCBpbiBwcmlvcml0eSBvcmRlciAqLworCS8qIHNlYXJjaCBibG9jayAwLCB0aGVyZSBhcmUgNCBEVERzIGFycmFuZ2VkIGluIHByaW9yaXR5IG9yZGVyICovCiAJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgRURJRF9TSVpFX0JMT0NLMF9USU1JTkdfREVTQ1JJUFRPUjsgY291bnQrKykgewogCQljdXJyZW50X2Rlc2NyaXB0b3JfYWRkcnMgPQogCQkJRURJRF9ERVNDUklQVE9SX0JMT0NLMF9BRERSRVNTICsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jIGIvZHJpdmVycy92aWRlby9weGEzeHgtZ2N1LmMKaW5kZXggY2Y0YmViOS4uMDI4M2M3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9weGEzeHgtZ2N1LmMKKysrIGIvZHJpdmVycy92aWRlby9weGEzeHgtZ2N1LmMKQEAgLTI1LDcgKzI1LDcgQEAKIAogLyoKICAqIFdBUk5JTkc6IFRoaXMgY29udHJvbGxlciBpcyBhdHRhY2hlZCB0byBTeXN0ZW0gQnVzIDIgb2YgdGhlIFBYQSB3aGljaAotICogbmVlZHMgaXRzIGFyYml0ZXIgdG8gYmUgZW5hYmxlZCBleHBsaWN0bHkgKENLRU5CICYgMTw8OSkuCisgKiBuZWVkcyBpdHMgYXJiaXRlciB0byBiZSBlbmFibGVkIGV4cGxpY2l0bHkgKENLRU5CICYgMTw8OSkuCiAgKiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGRvIHRoaXMgZnJvbSBMaW51eCwgc28geW91IG5lZWQgdG8gdGVhY2gKICAqIHlvdXIgYm9vdGxvYWRlciBmb3Igbm93LgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYi5oIGIvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmIuaAppbmRleCBlNGMzZjIxLi40ZTk0OTBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYi5oCisrKyBiL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiLmgKQEAgLTE1Myw3ICsxNTMsNyBAQAogCXVuc2lnbmVkIGNoYXIgQ1JUQ1syNV07ICAgICAgIC8qIENydGMgQ29udHJvbGxlciAqLwogCXVuc2lnbmVkIGNoYXIgU2VxdWVuY2VyWzVdOyAgIC8qIFZpZGVvIFNlcXVlbmNlciAqLwogCXVuc2lnbmVkIGNoYXIgR3JhcGhpY3NbOV07ICAgIC8qIFZpZGVvIEdyYXBoaWNzICovCi0JdW5zaWduZWQgY2hhciBBdHRyaWJ1dGVbMjFdOyAgLyogVmlkZW8gQXRyaWJ1dGUgKi8KKwl1bnNpZ25lZCBjaGFyIEF0dHJpYnV0ZVsyMV07ICAvKiBWaWRlbyBBdHRyaWJ1dGUgKi8KIAogCXVuc2lnbmVkIGludCBtb2RlLCByZWZyZXNoOwogCXVuc2lnbmVkIGNoYXIgU1IwOCwgU1IwRSwgU1IwRjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiX2RyaXZlci5jIGIvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMKaW5kZXggNDg3OTExZS4uYTJkYzFhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMKKysrIGIvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMKQEAgLTM4NSw3ICszODUsNyBAQAogCUJDSV9TRU5EKEdsb2JhbEJpdG1hcERlc2NyaXB0b3IpOwogCiAJLyoKLQkgKiBJIGRvbid0IGtub3cgd2h5LCBzZW5kaW5nIHRoaXMgdHdpY2UgZml4ZXMgdGhlIGludGlhbCBibGFjayBzY3JlZW4sCisJICogSSBkb24ndCBrbm93IHdoeSwgc2VuZGluZyB0aGlzIHR3aWNlIGZpeGVzIHRoZSBpbml0aWFsIGJsYWNrIHNjcmVlbiwKIAkgKiBwcmV2ZW50cyBYIGZyb20gY3Jhc2hpbmcgYXQgbGVhc3QgaW4gVG9zaGliYSBsYXB0b3BzIHdpdGggU2F2YWdlSVguCiAJICogLS1Ub255CiAJICovCkBAIC0yMjExLDcgKzIyMTEsNyBAQAogCQlnb3RvIGZhaWxlZF9tbWlvOwogCiAJdmlkZW9fbGVuID0gc2F2YWdlX2luaXRfaHcocGFyKTsKLQkvKiBGSVhNRTogY2FudCBiZSBuZWdhdGl2ZSAqLworCS8qIEZJWE1FOiBjYW4ndCBiZSBuZWdhdGl2ZSAqLwogCWlmICh2aWRlb19sZW4gPCAwKSB7CiAJCWVyciA9IHZpZGVvX2xlbjsKIAkJZ290byBmYWlsZWRfbW1pbzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jIGIvZHJpdmVycy92aWRlby9zbTUwMWZiLmMKaW5kZXggNDZkMWE2NC4uNTZlZjZiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9zbTUwMWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9zbTUwMWZiLmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogCXJldHVybiAodW5zaWduZWQgbG9uZyludW1lcmF0b3I7CiB9CiAKLS8qIHNtNTAxZmJfaHpfdG9fcHMgaXMgaWRlbnRpY2FsIHRvIHRoZSBvcG9zaXRlIHRyYW5zZm9ybSAqLworLyogc201MDFmYl9oel90b19wcyBpcyBpZGVudGljYWwgdG8gdGhlIG9wcG9zaXRlIHRyYW5zZm9ybSAqLwogCiAjZGVmaW5lIHNtNTAxZmJfaHpfdG9fcHMoeCkgc201MDFmYl9wc190b19oeih4KQogCkBAIC0xNzE5LDcgKzE3MTksNyBAQAogCSAgICAgICAoaGVhZCA9PSBIRUFEX0NSVCkgPyAmc201MDFmYl9vcHNfY3J0IDogJnNtNTAxZmJfb3BzX3BubCwKIAkgICAgICAgc2l6ZW9mKHN0cnVjdCBmYl9vcHMpKTsKIAotCS8qIHVwZGF0ZSBvcHMgZGVwZW5kYW50IG9uIHdoYXQgd2UndmUgYmVlbiBwYXNzZWQgKi8KKwkvKiB1cGRhdGUgb3BzIGRlcGVuZGVudCBvbiB3aGF0IHdlJ3ZlIGJlZW4gcGFzc2VkICovCiAKIAlpZiAoKHBkLT5mbGFncyAmIFNNNTAxRkJfRkxBR19VU0VfSFdDVVJTT1IpID09IDApCiAJCXBhci0+b3BzLmZiX2N1cnNvciA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3NzdGZiLmMgYi9kcml2ZXJzL3ZpZGVvL3NzdGZiLmMKaW5kZXggMmFiNzA0MS4uMjMwMWMyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9zc3RmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vc3N0ZmIuYwpAQCAtMjIxLDcgKzIyMSw3IEBACiAJd2hpbGUoMSkgewogCQlpZiAoX19zc3RfcmVhZCh2YmFzZSwgU1RBVFVTKSAmIFNUQVRVU19GQklfQlVTWSkgewogCQkJZl9kZGRwcmludGsoInN0YXR1czogYnVzeVxuIik7Ci0vKiBGSVhNRSBiYXNpY2FseSwgdGhpcyBpcyBhIGJ1c3kgd2FpdC4gbWF5YmUgbm90IHRoYXQgZ29vZC4gb2ggd2VsbDsKKy8qIEZJWE1FIGJhc2ljYWxseSwgdGhpcyBpcyBhIGJ1c3kgd2FpdC4gbWF5YmUgbm90IHRoYXQgZ29vZC4gb2ggd2VsbDsKICAqIHRoaXMgaXMgYSBzbWFsbCBsb29wIGFmdGVyIGFsbC4KICAqIE9yIG1heWJlIHdlIHNob3VsZCB1c2UgbWRlbGF5KCkgb3IgdWRlbGF5KCkgaGVyZSBpbnN0ZWFkID8gKi8KIAkJCWNvdW50ID0gMDsKQEAgLTUwMSw3ICs1MDEsNyBAQAogCX0KIAogCWlmIChJU19WT09ET08yKHBhcikpIHsKLQkJLyogdm9vZG9vMiBoYXMgMzIgcGl4ZWwgd2lkZSB0aWxlcyAsIEJVVCBzdGFuZ2UgdGhpbmdzCisJCS8qIHZvb2RvbzIgaGFzIDMyIHBpeGVsIHdpZGUgdGlsZXMgLCBCVVQgc3RyYW5nZSB0aGluZ3MKIAkJICAgaGFwcGVuIHdpdGggb2RkIG51bWJlciBvZiB0aWxlcyAqLwogCQlwYXItPnRpbGVzX2luX1ggPSAoaW5mby0+dmFyLnhyZXMgKyA2MyApIC8gNjQgKiAyOwogCX0gZWxzZSB7CkBAIC05MjAsMTEgKzkyMCwxMSBAQAogICogd2UgZ2V0IHRoZSAxc3QgYnl0ZSAoTSB2YWx1ZSkgb2YgcHJlc2V0IGYxLGY3IGFuZCBmQgogICogd2h5IHRob3NlIDMgPyBtbW1oLi4uIGZvciBub3csIGknbGwgZG8gaXQgdGhlIGdsaWRlIHdheS4uLgogICogYW5kIGFzayBxdWVzdGlvbnMgbGF0ZXIuIGFueXdheSwgaXQgc2VlbXMgdGhhdCBhbGwgdGhlIGZyZXEgcmVnaXN0ZXJzIGFyZQotICogcmVhbHkgYXQgdGhlaXIgZGVmYXVsdCBzdGF0ZSAoY2Ygc3BlY3MpIHNvIGkgYXNrIGFnYWluLCB3aHkgdGhvc2UgMyByZWdzID8KKyAqIHJlYWxseSBhdCB0aGVpciBkZWZhdWx0IHN0YXRlIChjZiBzcGVjcykgc28gaSBhc2sgYWdhaW4sIHdoeSB0aG9zZSAzIHJlZ3MgPwogICogbW1tbWguLiBpdCBzZWVtcyB0aGF0J3MgbXVjaCBtb3JlIHVnbHkgdGhhbiBpIHRob3VnaHQuIHdlIHVzZSBmMCBhbmQgZkEgZm9yCiAgKiBwbGwgcHJvZ3JhbW1pbmcsIHNvIGluIGZhY3QsIHdlICpob3BlKiB0aGF0IHRoZSBmMSwgZjcgJiBmQiB3b24ndCBiZQogICogdG91Y2hlZC4uLgotICogaXMgaXQgcmVhbHkgc2FmZSA/IGhvdyBjYW4gaSByZXNldCB0aGlzIHJhbWRhYyA/IGdlZWUuLi4KKyAqIGlzIGl0IHJlYWxseSBzYWZlID8gaG93IGNhbiBpIHJlc2V0IHRoaXMgcmFtZGFjID8gZ2VlZS4uLgogICovCiBzdGF0aWMgaW50IF9fZGV2aW5pdCBzc3RfZGV0ZWN0X2ljcyhzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oIGIvZHJpdmVycy92aWRlby9zdGljb3JlLmgKaW5kZXggN2ZlNWJlNC4uYWRkZjdiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9zdGljb3JlLmgKKysrIGIvZHJpdmVycy92aWRlby9zdGljb3JlLmgKQEAgLTc5LDcgKzc5LDcgQEAKIAkgdTggY3Vycl9tb247CQkJLyogY3VycmVudCBtb25pdG9yIGNvbmZpZ3VyZWQgKi8KIAkgdTggZnJpZW5kbHlfYm9vdDsJCS8qIGluIGZyaWVuZGx5IGJvb3QgbW9kZSAqLwogCXMxNiBwb3dlcjsJCQkvKiBwb3dlciBjYWxjdWxhdGlvbiAoaW4gV2F0dHMpICovCi0JczMyIGZyZXFfcmVmOwkJCS8qIGZyZXF1ZW5jeSByZWZyZW5jZSAqLworCXMzMiBmcmVxX3JlZjsJCQkvKiBmcmVxdWVuY3kgcmVmZXJlbmNlICovCiAJdTMyIHN0aV9tZW1fYWRkcjsJCS8qIHBvaW50ZXIgdG8gZ2xvYmFsIHN0aSBtZW1vcnkgKHNpemU9c3RpX21lbV9yZXF1ZXN0KSAqLwogCXUzMiBmdXR1cmVfcHRyOyAJCS8qIHBvaW50ZXIgdG8gZnV0dXJlIGRhdGEgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3RkZnhmYi5jIGIvZHJpdmVycy92aWRlby90ZGZ4ZmIuYwppbmRleCAzZWU1ZTYzLi5hOTliOTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3RkZnhmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdGRmeGZiLmMKQEAgLTg3NywxMiArODc3LDEyIEBACiAJZWxzZQogCQl0ZGZ4X3JvcCA9IFRERlhfUk9QX1hPUjsKIAotCS8qIGFzdW1lIGFsd2F5cyByZWN0LT5oZWlnaHQgPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyByZWN0LT5oZWlnaHQgPCA0MDk2ICovCiAJaWYgKGR5ICsgcmVjdC0+aGVpZ2h0ID4gNDA5NSkgewogCQlkc3RiYXNlID0gc3RyaWRlICogZHk7CiAJCWR5ID0gMDsKIAl9Ci0JLyogYXN1bWUgYWx3YXlzIHJlY3QtPndpZHRoIDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgcmVjdC0+d2lkdGggPCA0MDk2ICovCiAJaWYgKGR4ICsgcmVjdC0+d2lkdGggPiA0MDk1KSB7CiAJCWRzdGJhc2UgKz0gZHggKiBicHAgPj4gMzsKIAkJZHggPSAwOwpAQCAtOTE1LDIyICs5MTUsMjIgQEAKIAl1MzIgZHN0YmFzZSA9IDA7CiAJdTMyIHNyY2Jhc2UgPSAwOwogCi0JLyogYXN1bWUgYWx3YXlzIGFyZWEtPmhlaWdodCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIGFyZWEtPmhlaWdodCA8IDQwOTYgKi8KIAlpZiAoc3kgKyBhcmVhLT5oZWlnaHQgPiA0MDk1KSB7CiAJCXNyY2Jhc2UgPSBzdHJpZGUgKiBzeTsKIAkJc3kgPSAwOwogCX0KLQkvKiBhc3VtZSBhbHdheXMgYXJlYS0+d2lkdGggPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyBhcmVhLT53aWR0aCA8IDQwOTYgKi8KIAlpZiAoc3ggKyBhcmVhLT53aWR0aCA+IDQwOTUpIHsKIAkJc3JjYmFzZSArPSBzeCAqIGJwcCA+PiAzOwogCQlzeCA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyBhcmVhLT5oZWlnaHQgPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyBhcmVhLT5oZWlnaHQgPCA0MDk2ICovCiAJaWYgKGR5ICsgYXJlYS0+aGVpZ2h0ID4gNDA5NSkgewogCQlkc3RiYXNlID0gc3RyaWRlICogZHk7CiAJCWR5ID0gMDsKIAl9Ci0JLyogYXN1bWUgYWx3YXlzIGFyZWEtPndpZHRoIDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgYXJlYS0+d2lkdGggPCA0MDk2ICovCiAJaWYgKGR4ICsgYXJlYS0+d2lkdGggPiA0MDk1KSB7CiAJCWRzdGJhc2UgKz0gZHggKiBicHAgPj4gMzsKIAkJZHggPSAwOwpAQCAtMTAwMywxMiArMTAwMywxMiBAQAogI2Vsc2UKIAlzcmNmbXQgPSAweDQwMDAwMDsKICNlbmRpZgotCS8qIGFzdW1lIGFsd2F5cyBpbWFnZS0+aGVpZ2h0IDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgaW1hZ2UtPmhlaWdodCA8IDQwOTYgKi8KIAlpZiAoZHkgKyBpbWFnZS0+aGVpZ2h0ID4gNDA5NSkgewogCQlkc3RiYXNlID0gc3RyaWRlICogZHk7CiAJCWR5ID0gMDsKIAl9Ci0JLyogYXN1bWUgYWx3YXlzIGltYWdlLT53aWR0aCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIGltYWdlLT53aWR0aCA8IDQwOTYgKi8KIAlpZiAoZHggKyBpbWFnZS0+d2lkdGggPiA0MDk1KSB7CiAJCWRzdGJhc2UgKz0gZHggKiBicHAgPj4gMzsKIAkJZHggPSAwOwpAQCAtMTEyNCw3ICsxMTI0LDcgQEAKIAkJICogbG93ZXIgaGFsZiAobGVhc3Qgc2lnbmlmaWNhbnQgNjQgYml0cykgb2YgYSAxMjggYml0IHdvcmQKIAkJICogYW5kIHBhdHRlcm4gMSB0aGUgdXBwZXIgaGFsZi4gSWYgeW91IGV4YW1pbmUgdGhlIGRhdGEgb2YKIAkJICogdGhlIGN1cnNvciBpbWFnZSB0aGUgZ3JhcGhpY3MgY2FyZCB1c2VzIHRoZW4gZnJvbSB0aGUKLQkJICogYmVnaW5pbmcgeW91IHNlZSBsaW5lIG9uZSBvZiBwYXR0ZXJuIDAsIGxpbmUgb25lIG9mCisJCSAqIGJlZ2lubmluZyB5b3Ugc2VlIGxpbmUgb25lIG9mIHBhdHRlcm4gMCwgbGluZSBvbmUgb2YKIAkJICogcGF0dGVybiAxLCBsaW5lIHR3byBvZiBwYXR0ZXJuIDAsIGxpbmUgdHdvIG9mIHBhdHRlcm4gMSwKIAkJICogZXRjIGV0Yy4gVGhlIGxpbmVhciBzdHJpZGUgZm9yIHRoZSBjdXJzb3IgaXMgYWx3YXlzIDE2IGJ5dGVzCiAJCSAqICgxMjggYml0cykgd2hpY2ggaXMgdGhlIG1heGltdW0gY3Vyc29yIHdpZHRoIHRpbWVzIHR3byBmb3IKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdG1pb2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL3RtaW9mYi5jCmluZGV4IDk3MTBiZjguLjBjMzQxZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdG1pb2ZiLmMKKysrIGIvZHJpdmVycy92aWRlby90bWlvZmIuYwpAQCAtMzU5LDcgKzM1OSw3IEBACiB7CiAJc3RydWN0IHRtaW9mYl9wYXIgKnBhciA9IGluZm8tPnBhcjsKIAkvKgotCSAqIFRoaXMgY29kZSBjYW4gYmUgY2FsbGVkIHdoaXRoIGludGVycnVwdHMgZGlzYWJsZWQuCisJICogVGhpcyBjb2RlIGNhbiBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLgogCSAqIFNvIGluc3RlYWQgb2YgcmVsYXlpbmcgb24gaXJxIHRvIHRyaWdnZXIgdGhlIGV2ZW50LAogCSAqIHBvbGwgdGhlIHN0YXRlIHRpbGwgdGhlIG5lY2Vzc2FyeSBjb21tYW5kIGlzIGV4ZWN1dGVkLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby91ZGxmYi5jIGIvZHJpdmVycy92aWRlby91ZGxmYi5jCmluZGV4IDJjODM2NGUuLjY4MDQxZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdWRsZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3VkbGZiLmMKQEAgLTc2OSw3ICs3NjksNyBAQAogCiAJCS8qCiAJCSAqIElmIHdlIGhhdmUgYSBkYW1hZ2UtYXdhcmUgY2xpZW50LCB0dXJuIGZiX2RlZmlvICJvZmYiCi0JCSAqIFRvIGF2b2lkIHBlcmYgaW1hY3Qgb2YgdW5lY2Vzc2FyeSBwYWdlIGZhdWx0IGhhbmRsaW5nLgorCQkgKiBUbyBhdm9pZCBwZXJmIGltYWN0IG9mIHVubmVjZXNzYXJ5IHBhZ2UgZmF1bHQgaGFuZGxpbmcuCiAJCSAqIERvbmUgYnkgcmVzZXR0aW5nIHRoZSBkZWxheSBmb3IgdGhpcyBmYl9pbmZvIHRvIGEgdmVyeQogCQkgKiBsb25nIHBlcmlvZC4gUGFnZXMgd2lsbCBiZWNvbWUgd3JpdGFibGUgYW5kIHN0YXkgdGhhdCB3YXkuCiAJCSAqIFJlc2V0IHRvIG5vcm1hbCB2YWx1ZSB3aGVuIGFsbCBjbGllbnRzIGhhdmUgY2xvc2VkIHRoaXMgZmIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYyBiL2RyaXZlcnMvdmlkZW8vdmdhMTZmYi5jCmluZGV4IDI4Y2NhYjQuLjUzYjJjNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmdhMTZmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdmdhMTZmYi5jCkBAIC0xNTIsNyArMTUyLDcgQEAKIH0KIAogLyogU2V0IHRoZSBFbmFibGUgU2V0L1Jlc2V0IFJlZ2lzdGVyIGFuZCByZXR1cm4gaXRzIG9sZCB2YWx1ZS4gIAotICAgVGhlIGNvZGUgaGVyZSBhbHdheXMgdXNlcyB2YWx1ZSAweGYgZm9yIHRoc2kgcmVnaXN0ZXIuICovCisgICBUaGUgY29kZSBoZXJlIGFsd2F5cyB1c2VzIHZhbHVlIDB4ZiBmb3IgdGhpcyByZWdpc3Rlci4gKi8KIHN0YXRpYyBpbmxpbmUgaW50IHNldHNyKGludCBzcikKIHsKIAlpbnQgb2xkc3I7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5jIGIvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuYwppbmRleCBkMDVjY2I2Li4zNTQ1OGE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmMKQEAgLTE3NCw3ICsxNzQsNyBAQAogCX0KIAogCS8qIElmIGFkanVzdCBHYW1tYSB2YWx1ZSBpbiBTQU1NLCBmaWxsIElHQTEsCi0JICAgSUdBMiBHYW1tYSB0YWJsZSBzaW11bHRhbm91cy4gKi8KKwkgICBJR0EyIEdhbW1hIHRhYmxlIHNpbXVsdGFuZW91cy4gKi8KIAkvKiBTd2l0Y2ggdG8gSUdBMiBHYW1tYSBUYWJsZSAqLwogCWlmICgoYWN0aXZlX2RldmljZV9hbW91bnQgPiAxKSAmJgogCQkhKCh2aWFwYXJpbmZvLT5jaGlwX2luZm8tPmdmeF9jaGlwX25hbWUgPT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmggYi9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5oCmluZGV4IDE2NzBiYTguLmYyM2JlMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmgKKysrIGIvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuaApAQCAtMjEsNyArMjEsNyBAQAogI2lmbmRlZiBfX1ZJQVVUSUxJVFlfSF9fCiAjZGVmaW5lIF9fVklBVVRJTElUWV9IX18KIAotLyogVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGdldCBpbmZvbWF0aW9uIGFib3V0IGRldmljZSdzIHN0YXRlICovCisvKiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGRldmljZSdzIHN0YXRlICovCiB2b2lkIHZpYWZiX2dldF9kZXZpY2Vfc3VwcG9ydF9zdGF0ZSh1MzIgKnN1cHBvcnRfc3RhdGUpOwogdm9pZCB2aWFmYl9nZXRfZGV2aWNlX2Nvbm5lY3Rfc3RhdGUodTMyICpjb25uZWN0X3N0YXRlKTsKIGJvb2wgdmlhZmJfbGNkX2dldF9zdXBwb3J0X2V4cGFuZF9zdGF0ZSh1MzIgeHJlcywgdTMyIHlyZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby92aWEvdmlhZmJkZXYuYyBiL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYWZiZGV2LmMKaW5kZXggZjU1NWI4OS4uYjY0ODE4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby92aWEvdmlhZmJkZXYuYworKysgYi9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFmYmRldi5jCkBAIC0yMDE5LDcgKzIwMTksNyBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXByaW50ayhLRVJOX0lORk8KLSAgICAgICAiVklBIEdyYXBoaWNzIEludGVyZ3JhdGlvbiBDaGlwc2V0IGZyYW1lYnVmZmVyICVkLiVkIGluaXRpYWxpemluZ1xuIiwKKyAgICAgICAiVklBIEdyYXBoaWNzIEludGVncmF0aW9uIENoaXBzZXQgZnJhbWVidWZmZXIgJWQuJWQgaW5pdGlhbGl6aW5nXG4iLAogCSAgICAgICBWRVJTSU9OX01BSk9SLCBWRVJTSU9OX01JTk9SKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdzEwMGZiLmMgYi9kcml2ZXJzL3ZpZGVvL3cxMDBmYi5jCmluZGV4IGQ4YjEyYzMuLmM4YmU4YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdzEwMGZiLmMKKysrIGIvZHJpdmVycy92aWRlby93MTAwZmIuYwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAKIAl1bmlvbiBncmFwaGljX3ZfZGlzcF91IGdyYXBoaWNfdl9kaXNwOwogCXVuaW9uIGNydGNfdG90YWxfdSBjcnRjX3RvdGFsOwogCi0JLyogdzMyMDAgZG9lc250IGxpa2UgdW5kZWZpbmVkIGJpdHMgYmVpbmcgc2V0IHNvIHplcm8gcmVnaXN0ZXIgdmFsdWVzIGZpcnN0ICovCisJLyogdzMyMDAgZG9lc24ndCBsaWtlIHVuZGVmaW5lZCBiaXRzIGJlaW5nIHNldCBzbyB6ZXJvIHJlZ2lzdGVyIHZhbHVlcyBmaXJzdCAqLwogCiAJYWN0aXZlX2hfZGlzcC52YWwgPSAwOwogCWFjdGl2ZV9oX2Rpc3AuZi5hY3RpdmVfaF9zdGFydD1tb2RlLT5sZWZ0X21hcmdpbjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jIGIvZHJpdmVycy93MS9tYXN0ZXJzL29tYXBfaGRxLmMKaW5kZXggMzhlOTZhYi4uNWVmMzg1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy93MS9tYXN0ZXJzL29tYXBfaGRxLmMKKysrIGIvZHJpdmVycy93MS9tYXN0ZXJzL29tYXBfaGRxLmMKQEAgLTU0NSw3ICs1NDUsNyBAQAogCQlyZXR1cm47CiAJfQogCi0JLyogU2Vjb25kIHdyaXRlLCBkYXRhIHRyYW5zZmVyZWQuIFJlbGVhc2UgdGhlIG1vZHVsZSAqLworCS8qIFNlY29uZCB3cml0ZSwgZGF0YSB0cmFuc2ZlcnJlZC4gUmVsZWFzZSB0aGUgbW9kdWxlICovCiAJaWYgKGhkcV9kYXRhLT5pbml0X3RyYW5zID4gMSkgewogCQlvbWFwX2hkcV9wdXQoaGRxX2RhdGEpOwogCQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmhkcV9kYXRhLT5oZHFfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnIGIvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCmluZGV4IGI2OWQ3MTQuLjFiMGY5OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZworKysgYi9kcml2ZXJzL3dhdGNoZG9nL0tjb25maWcKQEAgLTkzMyw3ICs5MzMsNyBAQAogCWRlcGVuZHMgb24gU09DX1BOWDgzMzUKIAloZWxwCiAJICBIYXJkd2FyZSBkcml2ZXIgZm9yIHRoZSBQTlg4MzN4J3Mgd2F0Y2hkb2cuIFRoaXMgaXMgYQotCSAgd2F0Y2hkb2cgdGltZXIgdGhhdCB3aWxsIHJlYm9vdCB0aGUgbWFjaGluZSBhZnRlciBhIHByb2dyYW1hYmxlCisJICB3YXRjaGRvZyB0aW1lciB0aGF0IHdpbGwgcmVib290IHRoZSBtYWNoaW5lIGFmdGVyIGEgcHJvZ3JhbW1hYmxlCiAJICB0aW1lciBoYXMgZXhwaXJlZCBhbmQgbm8gcHJvY2VzcyBoYXMgd3JpdHRlbiB0byAvZGV2L3dhdGNoZG9nIGR1cmluZwogCSAgdGhhdCB0aW1lLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL01ha2VmaWxlIGIvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZQppbmRleCBkNTIwYmY5Li4zZjg2MDhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvTWFrZWZpbGUKQEAgLTQsNyArNCw3IEBACiAKICMgT25seSBvbmUgd2F0Y2hkb2cgY2FuIHN1Y2NlZWQuIFdlIHByb2JlIHRoZSBJU0EvUENJL1VTQiBiYXNlZAogIyB3YXRjaGRvZy1jYXJkcyBmaXJzdCwgdGhlbiB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHdhdGNoZG9nCi0jIGRyaXZlcnMgYW5kIHRoZW4gdGhlIGFyY2hpdGVjdHVyZSBpbmRlcGVuZGFudCAic29mdGRvZyIgZHJpdmVyLgorIyBkcml2ZXJzIGFuZCB0aGVuIHRoZSBhcmNoaXRlY3R1cmUgaW5kZXBlbmRlbnQgInNvZnRkb2ciIGRyaXZlci4KICMgVGhpcyBtZWFucyB0aGF0IGlmIHlvdXIgSVNBL1BDSS9VU0IgY2FyZCBpc24ndCBkZXRlY3RlZCB0aGF0CiAjIHlvdSBjYW4gZmFsbCBiYWNrIHRvIGFuIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBkcml2ZXIgYW5kIGlmCiAjIHRoYXQgYWxzbyBmYWlscyB0aGVuIHlvdSBjYW4gZmFsbCBiYWNrIHRvIHRoZSBzb2Z0d2FyZSB3YXRjaGRvZwpAQCAtMTUzLDcgKzE1Myw3IEBACiAjIFhlbgogb2JqLSQoQ09ORklHX1hFTl9XRFQpICs9IHhlbl93ZHQubwogCi0jIEFyY2hpdGVjdHVyZSBJbmRlcGVuZGFudAorIyBBcmNoaXRlY3R1cmUgSW5kZXBlbmRlbnQKIG9iai0kKENPTkZJR19XTTgzMVhfV0FUQ0hET0cpICs9IHdtODMxeF93ZHQubwogb2JqLSQoQ09ORklHX1dNODM1MF9XQVRDSERPRykgKz0gd204MzUwX3dkdC5vCiBvYmotJChDT05GSUdfTUFYNjNYWF9XQVRDSERPRykgKz0gbWF4NjN4eF93ZHQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL2FjcXVpcmV3ZHQuYwppbmRleCAyZmZjZTRkLi5iNmEyYjU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL2FjcXVpcmV3ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL2FjcXVpcmV3ZHQuYwpAQCAtMjYsNyArMjYsNyBAQAogICoJVGhlb3J5IG9mIE9wZXJhdGlvbjoKICAqCQlUaGUgV2F0Y2gtRG9nIFRpbWVyIGlzIHByb3ZpZGVkIHRvIGVuc3VyZSB0aGF0IHN0YW5kYWxvbmUKICAqCQlTeXN0ZW1zIGNhbiBhbHdheXMgcmVjb3ZlciBmcm9tIGNhdGFzdHJvcGhpYyBjb25kaXRpb25zIHRoYXQKLSAqCQljYXVzZWQgdGhlIENQVSB0byBjcmFzaC4gVGhpcyBjb25kaXRpb24gbWF5IGhhdmUgb2NjdXJlZCBieQorICoJCWNhdXNlZCB0aGUgQ1BVIHRvIGNyYXNoLiBUaGlzIGNvbmRpdGlvbiBtYXkgaGF2ZSBvY2N1cnJlZCBieQogICoJCWV4dGVybmFsIEVNSSBvciBhIHNvZnR3YXJlIGJ1Zy4gV2hlbiB0aGUgQ1BVIHN0b3BzIHdvcmtpbmcKICAqCQljb3JyZWN0bHksIGhhcmR3YXJlIG9uIHRoZSBib2FyZCB3aWxsIGVpdGhlciBwZXJmb3JtIGEgaGFyZHdhcmUKICAqCQlyZXNldCAoY29sZCBib290KSBvciBhIG5vbi1tYXNrYWJsZSBpbnRlcnJ1cHQgKE5NSSkgdG8gYnJpbmcgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3BjODc0MTNfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3BjODc0MTNfd2R0LmMKaW5kZXggMTM5ZDc3My4uYjdjMTM5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9wYzg3NDEzX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvcGM4NzQxM193ZHQuYwpAQCAtNDksNyArNDksNyBAQAogI2RlZmluZSBXRFRfREFUQV9JT19QT1JUICAgIChXRFRfSU5ERVhfSU9fUE9SVCsxKQogI2RlZmluZSBTV0NfTEROICAgICAgICAgICAgIDB4MDQKICNkZWZpbmUgU0lPQ0ZHMiAgICAgICAgICAgICAweDIyCS8qIFNlcmlhbCBJTyByZWdpc3RlciAqLwotI2RlZmluZSBXRENUTCAgICAgICAgICAgICAgIDB4MTAJLyogV2F0Y2hkb2ctVGltZXItQ29udHJvbGwtUmVnaXN0ZXIgKi8KKyNkZWZpbmUgV0RDVEwgICAgICAgICAgICAgICAweDEwCS8qIFdhdGNoZG9nLVRpbWVyLUNvbnRyb2wtUmVnaXN0ZXIgKi8KICNkZWZpbmUgV0RUTyAgICAgICAgICAgICAgICAweDExCS8qIFdhdGNoZG9nIHRpbWVvdXQgcmVnaXN0ZXIgKi8KICNkZWZpbmUgV0RDRkcgICAgICAgICAgICAgICAweDEyCS8qIFdhdGNoZG9nIGNvbmZpZyByZWdpc3RlciAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3NiYzcyNDBfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3NiYzcyNDBfd2R0LmMKaW5kZXggNjdkZGViMS4uZmYxMTUwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9zYmM3MjQwX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvc2JjNzI0MF93ZHQuYwpAQCAtMjczLDcgKzI3Myw3IEBACiAKIAkvKiBUaGUgSU8gcG9ydCAweDA0MyB1c2VkIHRvIGRpc2FibGUgdGhlIHdhdGNoZG9nCiAJICogaXMgYWxyZWFkeSBjbGFpbWVkIGJ5IHRoZSBzeXN0ZW0gdGltZXIsIHNvIHdlCi0JICogY2FudCByZXF1ZXN0X3JlZ2lvbigpIGl0IC4uLiovCisJICogY2FuJ3QgcmVxdWVzdF9yZWdpb24oKSBpdCAuLi4qLwogCiAJaWYgKHRpbWVvdXQgPCAxIHx8IHRpbWVvdXQgPiBTQkM3MjQwX01BWF9USU1FT1VUKSB7CiAJCXRpbWVvdXQgPSBTQkM3MjQwX1RJTUVPVVQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3NjaDMxMXhfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3NjaDMxMXhfd2R0LmMKaW5kZXggYjYxYWIxYy4uYzdjZjRiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9zY2gzMTF4X3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvc2NoMzExeF93ZHQuYwpAQCAtMjAxLDcgKzIwMSw3IEBACiAJc3Bpbl9sb2NrKCZzY2gzMTF4X3dkdF9kYXRhLmlvX2xvY2spOwogCiAJLyogLS0gV2F0Y2hkb2cgdGltZXIgY29udHJvbCAtLQotCSAqIEJpdCAwICAgU3RhdHVzIEJpdDogMCA9IFRpbWVyIGNvdW50aW5nLCAxID0gVGltZW91dCBvY2N1cmVkCisJICogQml0IDAgICBTdGF0dXMgQml0OiAwID0gVGltZXIgY291bnRpbmcsIDEgPSBUaW1lb3V0IG9jY3VycmVkCiAJICogQml0IDEgICBSZXNlcnZlZAogCSAqIEJpdCAyICAgRm9yY2UgVGltZW91dDogMSA9IEZvcmNlcyBXRCB0aW1lb3V0IGV2ZW50IChzZWxmLWNsZWFuaW5nKQogCSAqIEJpdCAzICAgUDIwIEZvcmNlIFRpbWVvdXQgZW5hYmxlZDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvc2h3ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvc2h3ZHQuYwppbmRleCA0ZTNlN2ViLi5kYjg0ZjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3Nod2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9zaHdkdC5jCkBAIC01MCw3ICs1MCw3IEBACiAgKiBuZWNzc2FyeS4KICAqCiAgKiBBcyBhIHJlc3VsdCBvZiB0aGlzIHRpbWluZyBwcm9ibGVtLCB0aGUgb25seSBtb2RlcyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkKLSAqIGZlYXNpYmxlIGFyZSB0aGUgNDA5NiBhbmQgdGhlIDIwNDggZGl2aXNvcnMsIHdoaWNoIHllaWxkIDUuMjUgYW5kIDIuNjJtcworICogZmVhc2libGUgYXJlIHRoZSA0MDk2IGFuZCB0aGUgMjA0OCBkaXZpc29ycywgd2hpY2ggeWllbGQgNS4yNSBhbmQgMi42Mm1zCiAgKiBvdmVyZmxvdyBwZXJpb2RzIHJlc3BlY3RpdmVseS4KICAqCiAgKiBBbHNvLCBzaW5jZSB3ZSBjYW4ndCByZWFsbHkgZXhwZWN0IHVzZXJzcGFjZSB0byBiZSByZXNwb25zaXZlIGVub3VnaApkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9zbXNjMzdiNzg3X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9zbXNjMzdiNzg3X3dkdC5jCmluZGV4IGRmODhjZmEuLmU5N2IwNDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvc21zYzM3Yjc4N193ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3Ntc2MzN2I3ODdfd2R0LmMKQEAgLTE5MSw3ICsxOTEsNyBAQAogc3RhdGljIGlubGluZSB2b2lkIHdkdF90aW1lcl9jdHJsKHVuc2lnbmVkIGNoYXIgcmVnKQogewogCS8qIC0tIFdhdGNoZG9nIHRpbWVyIGNvbnRyb2wgLS0KLQkgKiBCaXQgMCAgIFN0YXR1cyBCaXQ6IDAgPSBUaW1lciBjb3VudGluZywgMSA9IFRpbWVvdXQgb2NjdXJlZAorCSAqIEJpdCAwICAgU3RhdHVzIEJpdDogMCA9IFRpbWVyIGNvdW50aW5nLCAxID0gVGltZW91dCBvY2N1cnJlZAogCSAqIEJpdCAxICAgUG93ZXIgTEVEIFRvZ2dsZTogMCA9IERpc2FibGUgVG9nZ2xlLCAxID0gVG9nZ2xlIGF0IDEgSHoKIAkgKiBCaXQgMiAgIEZvcmNlIFRpbWVvdXQ6IDEgPSBGb3JjZXMgV0QgdGltZW91dCBldmVudCAoc2VsZi1jbGVhbmluZykKIAkgKiBCaXQgMyAgIFAyMCBGb3JjZSBUaW1lb3V0IGVuYWJsZWQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3NwODA1X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9zcDgwNV93ZHQuYwppbmRleCAwYTBlZmU3Li4wZDgwZTA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3NwODA1X3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvc3A4MDVfd2R0LmMKQEAgLTkwLDcgKzkwLDcgQEAKIAkvKgogCSAqIHNwODA1IHJ1bnMgY291bnRlciB3aXRoIGdpdmVuIHZhbHVlIHR3aWNlLCBhZnRlciB0aGUgZW5kIG9mIGZpcnN0CiAJICogY291bnRlciBpdCBnaXZlcyBhbiBpbnRlcnJ1cHQgYW5kIHRoZW4gc3RhcnRzIGNvdW50ZXIgYWdhaW4uIElmCi0JICogaW50ZXJydXB0IGFscmVhZHkgb2NjdXJlZCB0aGVuIGl0IHJlc2V0cyB0aGUgc3lzdGVtLiBUaGlzIGlzIHdoeQorCSAqIGludGVycnVwdCBhbHJlYWR5IG9jY3VycmVkIHRoZW4gaXQgcmVzZXRzIHRoZSBzeXN0ZW0uIFRoaXMgaXMgd2h5CiAJICogbG9hZCBpcyBoYWxmIG9mIHdoYXQgc2hvdWxkIGJlIHJlcXVpcmVkLgogCSAqLwogCWxvYWQgPSBkaXZfdTY0KHJhdGUsIDIpICogdGltZW91dCAtIDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9ldmVudHMuYyBiL2RyaXZlcnMveGVuL2V2ZW50cy5jCmluZGV4IDAzNjM0M2IuLjQyZDZjOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2V2ZW50cy5jCisrKyBiL2RyaXZlcnMveGVuL2V2ZW50cy5jCkBAIC01LDcgKzUsNyBAQAogICogZG9tYWluIGdldHMgMTAyNCBldmVudCBjaGFubmVscywgYnV0IE5SX0lSUSBpcyBub3QgdGhhdCBsYXJnZSwgd2UKICAqIG11c3QgZHluYW1pY2FsbHkgbWFwIGlycXM8LT5ldmVudCBjaGFubmVscy4gIFRoZSBldmVudCBjaGFubmVscwogICogaW50ZXJmYWNlIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBieSBkZWZpbmluZyBhIHhlbiBpbnRlcnJ1cHQKLSAqIGNoaXAuICBXaGVuIGFuIGV2ZW50IGlzIHJlY2lldmVkLCBpdCBpcyBtYXBwZWQgdG8gYW4gaXJxIGFuZCBzZW50CisgKiBjaGlwLiAgV2hlbiBhbiBldmVudCBpcyByZWNlaXZlZCwgaXQgaXMgbWFwcGVkIHRvIGFuIGlycSBhbmQgc2VudAogICogdGhyb3VnaCB0aGUgbm9ybWFsIGludGVycnVwdCBwcm9jZXNzaW5nIHBhdGguCiAgKgogICogVGhlcmUgYXJlIGZvdXIga2luZHMgb2YgZXZlbnRzIHdoaWNoIGNhbiBiZSBtYXBwZWQgdG8gYW4gZXZlbnQKQEAgLTQxNiw3ICs0MTYsNyBAQAogI2lmZGVmIENPTkZJR19YODZfSU9fQVBJQwogCS8qCiAJICogRm9yIGFuIEhWTSBndWVzdCBvciBkb21haW4gMCB3aGljaCBzZWUgInJlYWwiIChlbXVsYXRlZCBvcgotCSAqIGFjdHVhbCByZXBlY3RpdmVseSkgR1NJcyB3ZSBhbGxvY2F0ZSBkeW5hbWljIElSUXMKKwkgKiBhY3R1YWwgcmVzcGVjdGl2ZWx5KSBHU0lzIHdlIGFsbG9jYXRlIGR5bmFtaWMgSVJRcwogCSAqIGUuZy4gdGhvc2UgY29ycmVzcG9uZGluZyB0byBldmVudCBjaGFubmVscyBvciBNU0lzCiAJICogZXRjLiBmcm9tIHRoZSByYW5nZSBhYm92ZSB0aG9zZSAicmVhbCIgR1NJcyB0byBhdm9pZAogCSAqIGNvbGxpc2lvbnMuCg==