ZGlmZiAtLWdpdCBhL0NSRURJVFMgYi9DUkVESVRTCmluZGV4IDk5NTY2YjEuLmVlOTA5ZjIgMTAwNjQ0Ci0tLSBhL0NSRURJVFMKKysrIGIvQ1JFRElUUwpAQCAtOTU5LDcgKzk1OSw3IEBACiBTOiBCb3VsZGVyLCBDb2xvcmFkbyA4MDMwMgogUzogVVNBCiAKLU46IEhlaWtvIEVpc3NmZWxkdAorTjogSGVpa28gRWnDn2ZlbGR0CiBFOiBoZWlrb0Bjb2xvc3N1cy5lc2NhcGUuZGUgaGVpa29AdW5pZml4LmRlCiBEOiB2ZXJpZnlfYXJlYSBzdHVmZiwgZ2VuZXJpYyBTQ1NJIGZpeGVzCiBEOiBTQ1NJIFByb2dyYW1taW5nIEhPV1RPCkBAIC0xOTg4LDggKzE5ODgsOCBAQAogRTogdmxAa2tpLm9yZwogRDogS2VybmVsIHNtYmZzICh0byBtb3VudCBXZlcsIE5UIGFuZCBPUy8yIG5ldHdvcmsgZHJpdmVzLikKIEQ6IE5DUCBmaWxlc3lzdGVtIHN1cHBvcnQgKHRvIG1vdW50IE5ldFdhcmUgdm9sdW1lcykKLVM6IFZvbiBPc3NpZXR6a3kgU3RyLiAxMgotUzogMzcwODUgR29ldHRpbmdlbgorUzogVm9uLU9zc2lldHpreS1TdHIuIDEyCitTOiAzNzA4NSBHw7Z0dGluZ2VuCiBTOiBHZXJtYW55CiAKIE46IEtldmluIExlbnRpbgpAQCAtMjQzMSwxMSArMjQzMSwxMSBAQAogUzogQmVhdmVydG9uLCBPcmVnb24gOTcwMDUKIFM6IFVTQQogCi1OOiBFYmVyaGFyZCBNb2Vua2ViZXJnCitOOiBFYmVyaGFyZCBNw7Zua2ViZXJnCiBFOiBlbW9lbmtlQGd3ZGcuZGUKIEQ6IENEUk9NIGRyaXZlciAic2JwY2QiIChNYXRzdXNoaXRhL1BhbmFzb25pYy9Tb3VuZGJsYXN0ZXIpCi1TOiBSdWhzdHJhdGhvZWhlIDIgYi4KLVM6IEQtMzcwODUgR29ldHRpbmdlbgorUzogUnVoc3RyYXRow7ZoZSAyIGIuCitTOiBELTM3MDg1IEfDtnR0aW5nZW4KIFM6IEdlcm1hbnkKIAogTjogVGhvbWFzIE1vbGluYQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL01ha2VmaWxlCmluZGV4IDFhN2Y1MzAuLjA1NGE3ZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9NYWtlZmlsZQorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svTWFrZWZpbGUKQEAgLTE2NSw3ICsxNjUsNyBAQAogCUB0b3VjaCAkQAogCiAjIyMKLSMgUnVsZXMgdG8gZ2VuZXJhdGUgcG9zdHNjcmlwdHMgYW5kIFBORyBpbWdhZ2VzIGZyb20gLmZpZyBmb3JtYXQgZmlsZXMKKyMgUnVsZXMgdG8gZ2VuZXJhdGUgcG9zdHNjcmlwdHMgYW5kIFBORyBpbWFnZXMgZnJvbSAuZmlnIGZvcm1hdCBmaWxlcwogcXVpZXRfY21kX2ZpZzJlcHMgPSBGSUcyRVBTICRACiAgICAgICBjbWRfZmlnMmVwcyA9IGZpZzJkZXYgLUxlcHMgJDwgJEAKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL210ZG5hbmQudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tdGRuYW5kLnRtcGwKaW5kZXggNmZiYzQxZC4uOTU3Y2Y1YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL210ZG5hbmQudG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbXRkbmFuZC50bXBsCkBAIC0yODIsNyArMjgyLDcgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JLyogbWFwIHBoeXNpY2FsIGFkcmVzcyAqLworCS8qIG1hcCBwaHlzaWNhbCBhZGRyZXNzICovCiAJYmFzZWFkZHIgPSAodW5zaWduZWQgbG9uZylpb3JlbWFwKENISVBfUEhZU0lDQUxfQUREUkVTUywgMTAyNCk7CiAJaWYoIWJhc2VhZGRyKXsKIAkJcHJpbnRrKCJJb3JlbWFwIHRvIGFjY2VzcyBOQU5EIGNoaXAgZmFpbGVkXG4iKTsKQEAgLTMwNiw3ICszMDYsNyBAQAogCXRoaXMtPmRldl9yZWFkeSA9IGJvYXJkX2Rldl9yZWFkeTsKIAl0aGlzLT5lY2Ntb2RlID0gTkFORF9FQ0NfU09GVDsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4gKGJvYXJkX210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9pb3I7CkBAIC0zNDAsNyArMzQwLDcgQEAKIAkvKiBSZWxlYXNlIHJlc291cmNlcywgdW5yZWdpc3RlciBkZXZpY2UgKi8KIAluYW5kX3JlbGVhc2UgKGJvYXJkX210ZCk7CiAKLQkvKiB1bm1hcCBwaHlzaWNhbCBhZHJlc3MgKi8KKwkvKiB1bm1hcCBwaHlzaWNhbCBhZGRyZXNzICovCiAJaW91bm1hcCgodm9pZCAqKWJhc2VhZGRyKTsKIAkKIAkvKiBGcmVlIHRoZSBNVEQgZGV2aWNlIHN0cnVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9TdWJtaXRDaGVja2xpc3QgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdAppbmRleCAxOWU3ZjY1Li4zNGUwNmQyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdAorKysgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdApAQCAtNjcsNyArNjcsNyBAQAogMjA6IENoZWNrIHRoYXQgaXQgYWxsIHBhc3NlcyBgbWFrZSBoZWFkZXJzX2NoZWNrJy4KIAogMjE6IEhhcyBiZWVuIGNoZWNrZWQgd2l0aCBpbmplY3Rpb24gb2YgYXQgbGVhc3Qgc2xhYiBhbmQgcGFnZS1hbGxvY2F0aW9uCi0gICAgZmF1aWx1cmVzLiAgU2VlIERvY3VtZW50YXRpb24vZmF1bHQtaW5qZWN0aW9uLy4KKyAgICBmYWlsdXJlcy4gIFNlZSBEb2N1bWVudGF0aW9uL2ZhdWx0LWluamVjdGlvbi8uCiAKICAgICBJZiB0aGUgbmV3IGNvZGUgaXMgc3Vic3RhbnRpYWwsIGFkZGl0aW9uIG9mIHN1YnN5c3RlbS1zcGVjaWZpYyBmYXVsdAogICAgIGluamVjdGlvbiBtaWdodCBiZSBhcHByb3ByaWF0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdEcml2ZXJzCmluZGV4IGQ3ZTI2NDIuLjI0ZjJlYjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycwpAQCAtMzYsOCArMzYsNyBAQAogCUlmIHRoZSBjb2RlIGFyZWEgaGFzIGEgZ2VuZXJhbCBtYWludGFpbmVyIHRoZW4gcGxlYXNlIHN1Ym1pdCBpdCB0bwogCXRoZSBtYWludGFpbmVyIGxpc3RlZCBpbiBNQUlOVEFJTkVSUyBpbiB0aGUga2VybmVsIGZpbGUuIElmIHRoZQogCW1haW50YWluZXIgZG9lcyBub3QgcmVzcG9uZCBvciB5b3UgY2Fubm90IGZpbmQgdGhlIGFwcHJvcHJpYXRlCi0JbWFpbnRhaW5lciB0aGVuIHBsZWFzZSBjb250YWN0IE1hcmNlbG8gVG9zYXR0aQotCTxtYXJjZWxvLnRvc2F0dGlAY3ljbGFkZXMuY29tPi4KKwltYWludGFpbmVyIHRoZW4gcGxlYXNlIGNvbnRhY3QgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+LgogCiBMaW51eCAyLjY6CiAJVGhlIHNhbWUgcnVsZXMgYXBwbHkgYXMgMi40IGV4Y2VwdCB0aGF0IHlvdSBzaG91bGQgZm9sbG93IGxpbnV4LWtlcm5lbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0RNQS50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvRE1BLnR4dAppbmRleCAzN2Y0ZWRjLi4zZWQ4MjM4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvRE1BLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvRE1BLnR4dApAQCAtNSw3ICs1LDcgQEAKIC0tLS0tLS0tLS0tLQogCiAgICBUaGUga2VybmVsIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBtYW5hZ2UgRE1BIHRyYW5zZmVycwotICAgdXNpbmcgdGhlIERNQSBjaGFubmVscyBpbiB0aGUgY3B1LCBzbyB0aGF0IHRoZSBjZW50cmFsCisgICB1c2luZyB0aGUgRE1BIGNoYW5uZWxzIGluIHRoZSBDUFUsIHNvIHRoYXQgdGhlIGNlbnRyYWwKICAgIGR1dHkgb2YgbWFuYWdpbmcgY2hhbm5lbCBtYXBwaW5ncywgYW5kIHByb2dyYW1taW5nIHRoZQogICAgY2hhbm5lbCBnZW5lcmF0b3JzIGlzIGluIG9uZSBwbGFjZS4KIApAQCAtMTcsMjQgKzE3LDI0IEBACiAgICBjaGFubmVscyB0byBhbGwgc291cmNlcywgd2hpY2ggbWVhbnMgdGhhdCBzb21lIGRldmljZXMKICAgIGhhdmUgYSByZXN0cmljdGVkIG51bWJlciBvZiBjaGFubmVscyB0aGF0IGNhbiBiZSB1c2VkLgogCi0gICBUbyBhbGxvdyBmbGV4aWJpbHR5IGZvciBlYWNoIGNwdSB0eXBlIGFuZCBib2FyZCwgdGhlCi0gICBkbWEgY29kZSBjYW4gYmUgZ2l2ZW4gYW4gZG1hIG9yZGVyaW5nIHN0cnVjdHVyZSB3aGljaAorICAgVG8gYWxsb3cgZmxleGliaWxpdHkgZm9yIGVhY2ggQ1BVIHR5cGUgYW5kIGJvYXJkLCB0aGUKKyAgIERNQSBjb2RlIGNhbiBiZSBnaXZlbiBhIERNQSBvcmRlcmluZyBzdHJ1Y3R1cmUgd2hpY2gKICAgIGFsbG93cyB0aGUgb3JkZXIgb2YgY2hhbm5lbCBzZWFyY2ggdG8gYmUgc3BlY2lmaWVkLCBhcwogICAgd2VsbCBhcyBhbGxvd2luZyB0aGUgcHJvaGliaXRpb24gb2YgY2VydGFpbiBjbGFpbXMuCiAKICAgIHN0cnVjdCBzM2MyNHh4X2RtYV9vcmRlciBoYXMgYSBsaXN0IG9mIGNoYW5uZWxzLCBhbmQKLSAgIGVhY2ggY2hhbm5lbCB3aXRoaW4gaGFzIGEgc2xvdCBmb3IgYSBsaXN0IG9mIGRtYQotICAgY2hhbm5lbCBudW1iZXJzLiBUaGUgc2xvdHMgYXJlIHNlYXJjaGVkIGluIG9yZGVyLCBmb3IKLSAgIHRoZSBwcmVzZW5jZSBvZiBhIGRtYSBjaGFubmVsIG51bWJlciB3aXRoIERNQV9DSF9WQUxJRAotICAgb3JyZWQgaW4uCisgICBlYWNoIGNoYW5uZWwgd2l0aGluIGhhcyBhIHNsb3QgZm9yIGEgbGlzdCBvZiBETUEKKyAgIGNoYW5uZWwgbnVtYmVycy4gVGhlIHNsb3RzIGFyZSBzZWFyY2hlZCBpbiBvcmRlciBmb3IKKyAgIHRoZSBwcmVzZW5jZSBvZiBhIERNQSBjaGFubmVsIG51bWJlciB3aXRoIERNQV9DSF9WQUxJRAorICAgb3ItZWQgaW4uCiAKICAgIElmIHRoZSBvcmRlciBoYXMgdGhlIGZsYWcgRE1BX0NIX05FVkVSIHNldCwgdGhlbiBhZnRlcgogICAgY2hlY2tpbmcgdGhlIGNoYW5uZWwgbGlzdCwgdGhlIHN5c3RlbSB3aWxsIHJldHVybiBubwogICAgZm91bmQgY2hhbm5lbCwgdGh1cyBkZW55aW5nIHRoZSByZXF1ZXN0LgogCiAgICBBIGJvYXJkIHN1cHBvcnQgZmlsZSBjYW4gY2FsbCBzM2MyNHh4X2RtYV9vcmRlcl9zZXQoKQotICAgdG8gcmVnaXN0ZXIgYW4gY29tcGxldGUgb3JkZXJpbmcgc2V0LiBUaGUgcm91dGluZSB3aWxsCi0gICBjb3B5IHRoZSBkYXRhLCBzbyB0aGUgb3JpZ2luYWwgY2FuIGJlIGRpc2NhcmVkIHdpdGgKKyAgIHRvIHJlZ2lzdGVyIGEgY29tcGxldGUgb3JkZXJpbmcgc2V0LiBUaGUgcm91dGluZSB3aWxsCisgICBjb3B5IHRoZSBkYXRhLCBzbyB0aGUgb3JpZ2luYWwgY2FuIGJlIGRpc2NhcmRlZCB3aXRoCiAgICBfX2luaXRkYXRhLgogCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY2Ryb20vY2Ryb20tc3RhbmRhcmQudGV4IGIvRG9jdW1lbnRhdGlvbi9jZHJvbS9jZHJvbS1zdGFuZGFyZC50ZXgKaW5kZXggOTJmOTRlNS4uYzcxM2FlYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9jZHJvbS9jZHJvbS1zdGFuZGFyZC50ZXgKKysrIGIvRG9jdW1lbnRhdGlvbi9jZHJvbS9jZHJvbS1zdGFuZGFyZC50ZXgKQEAgLTEwMDksNyArMTAwOSw3IEBACiBcY2Ryb20tcmVsYXRlZCBjb2RlIGluIHRoZSAyLjEta2VybmVsLiAgVGhhbmtzIHRvIFNjb3R0IFNueWRlciBhbmQKIEdlcmQgS25vcnIsIHdobyB3ZXJlIHRoZSBmaXJzdCB0byBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgZm9yIFNDU0kKIGFuZCBJREUtQ0QgZHJpdmVycyBhbmQgYWRkZWQgbWFueSBpZGVhcyBmb3IgZXh0ZW5zaW9uIG9mIHRoZSBkYXRhCi1zdHJ1Y3R1cmVzIHJlbGF0aXZlIHRvIGtlcm5lbH4yLjAuICBGdXJ0aGVyIHRoYW5rcyB0byBIZWlrbyBFaXNzZmVsZHQsCitzdHJ1Y3R1cmVzIHJlbGF0aXZlIHRvIGtlcm5lbH4yLjAuICBGdXJ0aGVyIHRoYW5rcyB0byBIZWlrbyBFaXtcc3p9ZmVsZHQsCiBUaG9tYXMgUXVpbm90LCBKb24gVG9tYnMsIEtlbiBQaXp6aW5pLCBFYmVyaGFyZCBNXCJvbmtlYmVyZyBhbmQgQW5kcmV3CiBLcm9sbCwgdGhlIFxsaW51eFwgXGNkcm9tXCBkZXZpY2UgZHJpdmVyIGRldmVsb3BlcnMgd2hvIHdlcmUga2luZAogZW5vdWdoIHRvIGdpdmUgc3VnZ2VzdGlvbnMgYW5kIGNyaXRpY2lzbXMgZHVyaW5nIHRoZSB3cml0aW5nLiBGaW5hbGx5CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dAppbmRleCA2YzQ2NzMwLi5lNjI0NGNkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlcy50eHQKQEAgLTIxODgsNyArMjE4OCw3IEBACiAKIDEzNi0xNDMgY2hhcglVbml4OTggUFRZIHNsYXZlcwogCQkgIDAgPSAvZGV2L3B0cy8wCUZpcnN0IFVuaXg5OCBwc2V1ZG8tVFRZCi0JCSAgMSA9IC9kZXYvcHRzLzEJU2Vjb25kIFVuaXg5OCBwZXN1ZG8tVFRZCisJCSAgMSA9IC9kZXYvcHRzLzEJU2Vjb25kIFVuaXg5OCBwc2V1ZG8tVFRZCiAJCSAgICAuLi4KIAogCQlUaGVzZSBkZXZpY2Ugbm9kZXMgYXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHdpdGgKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldnJlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9kZXZyZXMudHh0CmluZGV4IDg1NjkwNzIuLjM4N2I4YTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldnJlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvZGV2cmVzLnR4dApAQCAtMzIsNyArMzIsNyBAQAogCiBGb3Igb25lIHJlYXNvbiBvciBhbm90aGVyLCBsb3cgbGV2ZWwgZHJpdmVycyBkb24ndCByZWNlaXZlIGFzIG11Y2gKIGF0dGVudGlvbiBvciB0ZXN0aW5nIGFzIGNvcmUgY29kZSwgYW5kIGJ1Z3Mgb24gZHJpdmVyIGRldGFjaCBvcgotaW5pdGlsYWl6YXRpb24gZmFpbHVyZSBkb2Vzbid0IGhhcHBlbiBvZnRlbiBlbm91Z2ggdG8gYmUgbm90aWNlYWJsZS4KK2luaXRpYWxpemF0aW9uIGZhaWx1cmUgZG9uJ3QgaGFwcGVuIG9mdGVuIGVub3VnaCB0byBiZSBub3RpY2VhYmxlLgogSW5pdCBmYWlsdXJlIHBhdGggaXMgd29yc2UgYmVjYXVzZSBpdCdzIG11Y2ggbGVzcyB0cmF2ZWxsZWQgd2hpbGUKIG5lZWRzIHRvIGhhbmRsZSBtdWx0aXBsZSBlbnRyeSBwb2ludHMuCiAKQEAgLTE2MCw3ICsxNjAsNyBAQAogICBkZXZyZXNfcmVsZWFzZV9ncm91cChkZXYsIE5VTEwpOwogICByZXR1cm4gZXJyX2NvZGU7CiAKLUFzIHJlc291cmNlIGFjcXVpc2lvbiBmYWlsdXJlIHVzdWFsbHkgbWVhbnMgcHJvYmUgZmFpbHVyZSwgY29uc3RydWN0cworQXMgcmVzb3VyY2UgYWNxdWlzaXRpb24gZmFpbHVyZSB1c3VhbGx5IG1lYW5zIHByb2JlIGZhaWx1cmUsIGNvbnN0cnVjdHMKIGxpa2UgYWJvdmUgYXJlIHVzdWFsbHkgdXNlZnVsIGluIG1pZGxheWVyIGRyaXZlciAoZS5nLiBsaWJhdGEgY29yZQogbGF5ZXIpIHdoZXJlIGludGVyZmFjZSBmdW5jdGlvbiBzaG91bGRuJ3QgaGF2ZSBzaWRlIGVmZmVjdCBvbiBmYWlsdXJlLgogRm9yIExMRHMsIGp1c3QgcmV0dXJuaW5nIGVycm9yIGNvZGUgc3VmZmljZXMgaW4gbW9zdCBjYXNlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvZGVmZXJyZWRfaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9kZWZlcnJlZF9pby50eHQKaW5kZXggNzNjZjlmYi4uNjM4ODNhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9mYi9kZWZlcnJlZF9pby50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9kZWZlcnJlZF9pby50eHQKQEAgLTMsNyArMyw3IEBACiAKIERlZmVycmVkIElPIGlzIGEgd2F5IHRvIGRlbGF5IGFuZCByZXB1cnBvc2UgSU8uIEl0IHVzZXMgaG9zdCBtZW1vcnkgYXMgYQogYnVmZmVyIGFuZCB0aGUgTU1VIHBhZ2VmYXVsdCBhcyBhIHByZXRyaWdnZXIgZm9yIHdoZW4gdG8gcGVyZm9ybSB0aGUgZGV2aWNlCi1JTy4gVGhlIGZvbGxvd2luZyBleGFtcGxlIG1heSBiZSBhIHVzZWZ1bCBleHBsYWluYXRpb24gb2YgaG93IG9uZSBzdWNoIHNldHVwCitJTy4gVGhlIGZvbGxvd2luZyBleGFtcGxlIG1heSBiZSBhIHVzZWZ1bCBleHBsYW5hdGlvbiBvZiBob3cgb25lIHN1Y2ggc2V0dXAKIHdvcmtzOgogCiAtIHVzZXJzcGFjZSBhcHAgbGlrZSBYZmJkZXYgbW1hcHMgZnJhbWVidWZmZXIKQEAgLTI4LDcgKzI4LDcgQEAKIAogRm9yIHNvbWUgdHlwZXMgb2Ygbm9udm9sYXRpbGUgaGlnaCBsYXRlbmN5IGRpc3BsYXlzLCB0aGUgZGVzaXJlZCBpbWFnZSBpcwogdGhlIGZpbmFsIGltYWdlIHJhdGhlciB0aGFuIHRoZSBpbnRlcm1lZGlhdGUgc3RhZ2VzIHdoaWNoIGlzIHdoeSBpdCdzIG9rYXkKLXRvIG5vdCB1cGRhdGUgZm9yIGVhY2ggd3JpdGUgdGhhdCBpcyBvY2N1cmluZy4KK3RvIG5vdCB1cGRhdGUgZm9yIGVhY2ggd3JpdGUgdGhhdCBpcyBvY2N1cnJpbmcuCiAKIEl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IHRoaXMgaXMgdXNlZnVsIGluIG90aGVyIHNjZW5hcmlvcyBhcyB3ZWxsLiBQYXVsIE11bmR0CiBoYXMgbWVudGlvbmVkIGEgY2FzZSB3aGVyZSBpdCBpcyBiZW5lZmljaWFsIHRvIHVzZSB0aGUgcGFnZSBjb3VudCB0byBkZWNpZGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvOXAudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy85cC50eHQKaW5kZXggZDZmZDZjNi4uYjkwZjUzNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy85cC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy85cC50eHQKQEAgLTU0LDcgKzU0LDcgQEAKICAgYW5hbWU9bmFtZQlhbmFtZSBzcGVjaWZpZXMgdGhlIGZpbGUgdHJlZSB0byBhY2Nlc3Mgd2hlbiB0aGUgc2VydmVyIGlzCiAgIAkJb2ZmZXJpbmcgc2V2ZXJhbCBleHBvcnRlZCBmaWxlIHN5c3RlbXMuCiAKLSAgY2FjaGU9bW9kZQlzcGVjaWZpZXMgYSBjYWNoZWluZyBwb2xpY3kuICBCeSBkZWZhdWx0LCBubyBjYWNoZXMgYXJlIHVzZWQuCisgIGNhY2hlPW1vZGUJc3BlY2lmaWVzIGEgY2FjaGluZyBwb2xpY3kuICBCeSBkZWZhdWx0LCBubyBjYWNoZXMgYXJlIHVzZWQuCiAJCQlsb29zZSA9IG5vIGF0dGVtcHRzIGFyZSBtYWRlIGF0IGNvbnNpc3RlbmN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbmRlZCBmb3IgZXhjbHVzaXZlLCByZWFkLW9ubHkgbW91bnRzCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvTG9ja2luZyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvTG9ja2luZwppbmRleCBmZTI2Y2M5Li4zN2MxMGNiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL0xvY2tpbmcKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9Mb2NraW5nCkBAIC0yMjQsNyArMjI0LDcgQEAKIHJlZGlydHlfcGFnZV9mb3Jfd3JpdGVwYWdlKCksIHRoZW4gdW5sb2NrIHRoZSBwYWdlIGFuZCByZXR1cm4gemVyby4KIFRoaXMgbWF5IGFsc28gYmUgZG9uZSB0byBhdm9pZCBpbnRlcm5hbCBkZWFkbG9ja3MsIGJ1dCByYXJlbHkuCiAKLUlmIHRoZSBmaWxlc3l0ZW0gaXMgY2FsbGVkIGZvciBzeW5jIHRoZW4gaXQgbXVzdCB3YWl0IG9uIGFueQorSWYgdGhlIGZpbGVzeXN0ZW0gaXMgY2FsbGVkIGZvciBzeW5jIHRoZW4gaXQgbXVzdCB3YWl0IG9uIGFueQogaW4tcHJvZ3Jlc3MgSS9PIGFuZCB0aGVuIHN0YXJ0IG5ldyBJL08uCiAKIFRoZSBmaWxlc3lzdGVtIHNob3VsZCB1bmxvY2sgdGhlIHBhZ2Ugc3luY2hyb25vdXNseSwgYmVmb3JlIHJldHVybmluZyB0byB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0My50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDMudHh0CmluZGV4IDRhZWNjOWIuLmI0NWYzYzFiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0My50eHQKQEAgLTEzMCwxMiArMTMwLDEyIEBACiAKIEpvdXJuYWxpbmcgQmxvY2sgRGV2aWNlIGxheWVyCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlIEpvdXJuYWxpbmcgQmxvY2sgRGV2aWNlIGxheWVyIChKQkQpIGlzbid0IGV4dDMgc3BlY2lmaWMuICBJdCB3YXMgZGVzaWduIHRvCi1hZGQgam91cm5hbGluZyBjYXBhYmlsaXRpZXMgb24gYSBibG9jayBkZXZpY2UuICBUaGUgZXh0MyBmaWxlc3lzdGVtIGNvZGUgd2lsbAotaW5mb3JtIHRoZSBKQkQgb2YgbW9kaWZpY2F0aW9ucyBpdCBpcyBwZXJmb3JtaW5nIChjYWxsZWQgYSB0cmFuc2FjdGlvbikuICBUaGUKLWpvdXJuYWwgc3VwcG9ydHMgdGhlIHRyYW5zYWN0aW9ucyBzdGFydCBhbmQgc3RvcCwgYW5kIGluIGNhc2Ugb2YgY3Jhc2gsIHRoZQotam91cm5hbCBjYW4gcmVwbGF5ZWQgdGhlIHRyYW5zYWN0aW9ucyB0byBwdXQgdGhlIHBhcnRpdGlvbiBiYWNrIGluIGEKLWNvbnNpc3RlbnQgc3RhdGUgZmFzdC4KK1RoZSBKb3VybmFsaW5nIEJsb2NrIERldmljZSBsYXllciAoSkJEKSBpc24ndCBleHQzIHNwZWNpZmljLiAgSXQgd2FzIGRlc2lnbmVkCit0byBhZGQgam91cm5hbGluZyBjYXBhYmlsaXRpZXMgdG8gYSBibG9jayBkZXZpY2UuICBUaGUgZXh0MyBmaWxlc3lzdGVtIGNvZGUKK3dpbGwgaW5mb3JtIHRoZSBKQkQgb2YgbW9kaWZpY2F0aW9ucyBpdCBpcyBwZXJmb3JtaW5nIChjYWxsZWQgYSB0cmFuc2FjdGlvbikuCitUaGUgam91cm5hbCBzdXBwb3J0cyB0aGUgdHJhbnNhY3Rpb25zIHN0YXJ0IGFuZCBzdG9wLCBhbmQgaW4gY2FzZSBvZiBhIGNyYXNoLAordGhlIGpvdXJuYWwgY2FuIHJlcGxheSB0aGUgdHJhbnNhY3Rpb25zIHRvIHF1aWNrbHkgcHV0IHRoZSBwYXJ0aXRpb24gYmFjayBpbnRvCithIGNvbnNpc3RlbnQgc3RhdGUuCiAKIEhhbmRsZXMgcmVwcmVzZW50IGEgc2luZ2xlIGF0b21pYyB1cGRhdGUgdG8gYSBmaWxlc3lzdGVtLiAgSkJEIGNhbiBoYW5kbGUgYW4KIGV4dGVybmFsIGpvdXJuYWwgb24gYSBibG9jayBkZXZpY2UuCkBAIC0xNjQsNyArMTY0LDcgQEAKIEluIHRoZSBldmVudCBvZiBhIGNyYXNoLCB0aGUgam91cm5hbCBjYW4gYmUgcmVwbGF5ZWQsIGJyaW5naW5nIGJvdGggZGF0YSBhbmQKIG1ldGFkYXRhIGludG8gYSBjb25zaXN0ZW50IHN0YXRlLiAgVGhpcyBtb2RlIGlzIHRoZSBzbG93ZXN0IGV4Y2VwdCB3aGVuIGRhdGEKIG5lZWRzIHRvIGJlIHJlYWQgZnJvbSBhbmQgd3JpdHRlbiB0byBkaXNrIGF0IHRoZSBzYW1lIHRpbWUgd2hlcmUgaXQKLW91dHBlcmZvcm1zIGFsbCBvdGhlcnMgbW9kZXMuCitvdXRwZXJmb3JtcyBhbGwgb3RoZXIgbW9kZXMuCiAKIENvbXBhdGliaWxpdHkKIC0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZmlsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9maWxlcy50eHQKaW5kZXggMTMzZTIxMy4uYmIwMTQyZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9maWxlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9maWxlcy50eHQKQEAgLTc2LDEzICs3NiwxMyBAQAogNS4gSGFuZGxpbmcgb2YgdGhlIGZpbGUgc3RydWN0dXJlcyBpcyBzcGVjaWFsLiBTaW5jZSB0aGUgbG9vay11cAogICAgb2YgdGhlIGZkIChmZ2V0KCkvZmdldF9saWdodCgpKSBhcmUgbG9jay1mcmVlLCBpdCBpcyBwb3NzaWJsZQogICAgdGhhdCBsb29rLXVwIG1heSByYWNlIHdpdGggdGhlIGxhc3QgcHV0KCkgb3BlcmF0aW9uIG9uIHRoZQotICAgZmlsZSBzdHJ1Y3R1cmUuIFRoaXMgaXMgYXZvaWRlZCB1c2luZyB0aGUgcmN1cmVmIEFQSXMKKyAgIGZpbGUgc3RydWN0dXJlLiBUaGlzIGlzIGF2b2lkZWQgdXNpbmcgYXRvbWljX2luY19ub3RfemVybygpCiAgICBvbiAtPmZfY291bnQgOgogCiAJcmN1X3JlYWRfbG9jaygpOwogCWZpbGUgPSBmY2hlY2tfZmlsZXMoZmlsZXMsIGZkKTsKIAlpZiAoZmlsZSkgewotCQlpZiAocmN1cmVmX2luY19sZigmZmlsZS0+Zl9jb3VudCkpCisJCWlmIChhdG9taWNfaW5jX25vdF96ZXJvKCZmaWxlLT5mX2NvdW50KSkKIAkJCSpmcHV0X25lZWRlZCA9IDE7CiAJCWVsc2UKIAkJLyogRGlkbid0IGdldCB0aGUgcmVmZXJlbmNlLCBzb21lb25lJ3MgZnJlZWQgKi8KQEAgLTkyLDcgKzkyLDcgQEAKIAkuLi4uCiAJcmV0dXJuIGZpbGU7CiAKLSAgIHJjdXJlZl9pbmNfbGYoKSBkZXRlY3RzIGlmIHJlZmNvdW50cyBpcyBhbHJlYWR5IHplcm8gb3IKKyAgIGF0b21pY19pbmNfbm90X3plcm8oKSBkZXRlY3RzIGlmIHJlZmNvdW50cyBpcyBhbHJlYWR5IHplcm8gb3IKICAgIGdvZXMgdG8gemVybyBkdXJpbmcgaW5jcmVtZW50LiBJZiBpdCBkb2VzLCB3ZSBmYWlsCiAgICBmZ2V0KCkvZmdldF9saWdodCgpLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnR4dAppbmRleCBlNWMxZGY1Li5kZWM5OTQ1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQKQEAgLTgxMyw5ICs4MTMsOSBAQAogc2luY2UgdGhlIHN5c3RlbSBmaXJzdCBib290ZWQuICBGb3IgYSBxdWljayBsb29rLCBzaW1wbHkgY2F0IHRoZSBmaWxlOgogCiAgID4gY2F0IC9wcm9jL3N0YXQKLSAgY3B1ICAyMjU1IDM0IDIyOTAgMjI2MjU1NjMgNjI5MCAxMjcgNDU2Ci0gIGNwdTAgMTEzMiAzNCAxNDQxIDExMzExNzE4IDM2NzUgMTI3IDQzOAotICBjcHUxIDExMjMgMCA4NDkgMTEzMTM4NDUgMjYxNCAwIDE4CisgIGNwdSAgMjI1NSAzNCAyMjkwIDIyNjI1NTYzIDYyOTAgMTI3IDQ1NiAwCisgIGNwdTAgMTEzMiAzNCAxNDQxIDExMzExNzE4IDM2NzUgMTI3IDQzOCAwCisgIGNwdTEgMTEyMyAwIDg0OSAxMTMxMzg0NSAyNjE0IDAgMTggMAogICBpbnRyIDExNDkzMDU0OCAxMTMxOTk3ODggMyAwIDUgMjYzIDAgNCBbLi4uIGxvdHMgbW9yZSBudW1iZXJzIC4uLl0KICAgY3R4dCAxOTkwNDczCiAgIGJ0aW1lIDEwNjIxOTEzNzYKQEAgLTgzNSw2ICs4MzUsNyBAQAogLSBpb3dhaXQ6IHdhaXRpbmcgZm9yIEkvTyB0byBjb21wbGV0ZQogLSBpcnE6IHNlcnZpY2luZyBpbnRlcnJ1cHRzCiAtIHNvZnRpcnE6IHNlcnZpY2luZyBzb2Z0aXJxcworLSBzdGVhbDogaW52b2x1bnRhcnkgd2FpdAogCiBUaGUgImludHIiIGxpbmUgZ2l2ZXMgY291bnRzIG9mIGludGVycnVwdHMgIHNlcnZpY2VkIHNpbmNlIGJvb3QgdGltZSwgZm9yIGVhY2gKIG9mIHRoZSAgcG9zc2libGUgc3lzdGVtIGludGVycnVwdHMuICAgVGhlIGZpcnN0ICBjb2x1bW4gIGlzIHRoZSAgdG90YWwgb2YgIGFsbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3N5c2ZzLnR4dAppbmRleCA0YjVjYTI2Li40NTk4ZWY3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3N5c2ZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3N5c2ZzLnR4dApAQCAtNTEsNyArNTEsNyBAQAogYXR0cmlidXRlcy4KIAogQXR0cmlidXRlcyBzaG91bGQgYmUgQVNDSUkgdGV4dCBmaWxlcywgcHJlZmVyYWJseSB3aXRoIG9ubHkgb25lIHZhbHVlCi1wZXIgZmlsZS4gSXQgaXMgbm90ZWQgdGhhdCBpdCBtYXkgbm90IGJlIGVmZmljaWVudCB0byBjb250YWluIG9ubHkKK3BlciBmaWxlLiBJdCBpcyBub3RlZCB0aGF0IGl0IG1heSBub3QgYmUgZWZmaWNpZW50IHRvIGNvbnRhaW4gb25seSBvbmUKIHZhbHVlIHBlciBmaWxlLCBzbyBpdCBpcyBzb2NpYWxseSBhY2NlcHRhYmxlIHRvIGV4cHJlc3MgYW4gYXJyYXkgb2YKIHZhbHVlcyBvZiB0aGUgc2FtZSB0eXBlLiAKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0CmluZGV4IDZmOGUxNmUuLjlkMDE5ZDMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Zmcy50eHQKQEAgLTcwNiw3ICs3MDYsNyBAQAogICAgICAgICB3YW50cyB0byBtYWtlIGl0IGEgZnJlZSBwYWdlLiAgSWYgLT5yZWxlYXNlcGFnZSBzdWNjZWVkcywgdGhlCiAgICAgICAgIHBhZ2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGFkZHJlc3Nfc3BhY2UgYW5kIGJlY29tZSBmcmVlLgogCi0JVGhlIHNlY29uZCBjYXNlIGlmIHdoZW4gYSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUgdG8gaW52YWxpZGF0ZQorCVRoZSBzZWNvbmQgY2FzZSBpcyB3aGVuIGEgcmVxdWVzdCBoYXMgYmVlbiBtYWRlIHRvIGludmFsaWRhdGUKICAgICAgICAgc29tZSBvciBhbGwgcGFnZXMgaW4gYW4gYWRkcmVzc19zcGFjZS4gIFRoaXMgY2FuIGhhcHBlbgogICAgICAgICB0aHJvdWdoIHRoZSBmYWR2aWNlKFBPU0lYX0ZBRFZfRE9OVE5FRUQpIHN5c3RlbSBjYWxsIG9yIGJ5IHRoZQogICAgICAgICBmaWxlc3lzdGVtIGV4cGxpY2l0bHkgcmVxdWVzdGluZyBpdCBhcyBuZnMgYW5kIDlmcyBkbyAod2hlbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXByb3RvY29sIGIvRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXByb3RvY29sCmluZGV4IDU3OWI5MmQuLjEwNTE4ZGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaTJjL2kyYy1wcm90b2NvbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9pMmMtcHJvdG9jb2wKQEAgLTY4LDcgKzY4LDcgQEAKIAogICBGbGFncyBJMkNfTV9JR05PUkVfTkFLCiAgICAgTm9ybWFsbHkgbWVzc2FnZSBpcyBpbnRlcnJ1cHRlZCBpbW1lZGlhdGVseSBpZiB0aGVyZSBpcyBbTkFdIGZyb20gdGhlCi0gICAgY2xpZW50LiBTZXR0aW5nIHRoaXMgZmxhZyB0cmVhdHMgYW55IFtOQV0gYXPCoFtBXSwgYW5kIGFsbCBvZgorICAgIGNsaWVudC4gU2V0dGluZyB0aGlzIGZsYWcgdHJlYXRzIGFueSBbTkFdIGFzIFtBXSwgYW5kIGFsbCBvZgogICAgIG1lc3NhZ2UgaXMgc2VudC4KICAgICBUaGVzZSBtZXNzYWdlcyBtYXkgc3RpbGwgZmFpbCB0byBTQ0wgbG8tPmhpIHRpbWVvdXQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWE2NC9lcnJfaW5qZWN0LnR4dCBiL0RvY3VtZW50YXRpb24vaWE2NC9lcnJfaW5qZWN0LnR4dAppbmRleCA2NDQ5YTcwLi4yMjNlNGYwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lhNjQvZXJyX2luamVjdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pYTY0L2Vycl9pbmplY3QudHh0CkBAIC0yMSwxMCArMjEsMTAgQEAKIAogQmVsb3cgaXMgYSBzYW1wbGUgYXBwbGljYXRpb24gYXMgcGFydCBvZiB0aGUgd2hvbGUgdG9vbC4gVGhlIHNhbXBsZQogY2FuIGJlIHVzZWQgYXMgYSB3b3JraW5nIHRlc3QgdG9vbC4gT3IgaXQgY2FuIGJlIGV4cGFuZGVkIHRvIGluY2x1ZGUKLW1vcmUgZmVhdHVyZXMuIEl0IGFsc28gY2FuIGJlIGEgaW50ZWdyYXRlZCBpbnRvIGEgbGliYXJ5IG9yIG90aGVyIHVzZXIKK21vcmUgZmVhdHVyZXMuIEl0IGFsc28gY2FuIGJlIGEgaW50ZWdyYXRlZCBpbnRvIGEgbGlicmFyeSBvciBvdGhlciB1c2VyCiBhcHBsaWNhdGlvbiB0byBoYXZlIG1vcmUgdGhvcm91Z2ggdGVzdC4KIAotVGhlIHNhbXBsZSBhcHBsaWNhdGlvbiB0YWtlcyBlcnIuY29uZiBhcyBlcnJvciBjb25maWd1YXRpb24gaW5wdXQuIEdjYworVGhlIHNhbXBsZSBhcHBsaWNhdGlvbiB0YWtlcyBlcnIuY29uZiBhcyBlcnJvciBjb25maWd1cmF0aW9uIGlucHV0LiBHQ0MKIGNvbXBpbGVzIHRoZSBjb2RlLiBBZnRlciB5b3UgaW5zdGFsbCBlcnJfaW5qZWN0IGRyaXZlciwgeW91IGNhbiBydW4KIHRoaXMgc2FtcGxlIGFwcGxpY2F0aW9uIHRvIGluamVjdCBlcnJvcnMuCiAKQEAgLTgwOSw3ICs4MDksNyBAQAogCX0KIAogCS8qIENyZWF0ZSBzZW1hcGhvcmU6IElmIG9uZV9sb2NrLCBvbmUgc2VtYXBob3JlIGZvciBhbGwgcHJvY2Vzc29ycy4KLQkgICBPdGhlcndpc2UsIG9uZSBzZW1wYXBob3JlIGZvciBlYWNoIHByb2Nlc3Nvci4gKi8KKwkgICBPdGhlcndpc2UsIG9uZSBzZW1hcGhvcmUgZm9yIGVhY2ggcHJvY2Vzc29yLiAqLwogCWlmIChvbmVfbG9jaykgewogCQlpZiAoY3JlYXRlX3NlbSgwKSkgewogCQkJcHJpbnRmKCJDYW4gbm90IGNyZWF0ZSBzZW1hcGhvcmUuLi5leGl0XG4iKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvYXRhcmlrYmQudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9hdGFyaWtiZC50eHQKaW5kZXggYWIwNTA2Mi4uZjNhM2JhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9hdGFyaWtiZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9hdGFyaWtiZC50eHQKQEAgLTE3MCw3ICsxNzAsNyBAQAoga2V5cy4gQW55IGtleXMgZG93biBhdCBwb3dlci11cCBhcmUgcHJlc3VtZWQgdG8gYmUgc3R1Y2ssIGFuZCB0aGVpciBCUkVBSwogKHNpYykgY29kZSBpcyByZXR1cm5lZCAod2hpY2ggd2l0aG91dCB0aGUgcHJlY2VkaW5nIE1BS0UgY29kZSBpcyBhIGZsYWcgZm9yIGEKIGtleWJvYXJkIGVycm9yKS4gSWYgdGhlIGNvbnRyb2xsZXIgc2VsZi10ZXN0IGNvbXBsZXRlcyB3aXRob3V0IGVycm9yLCB0aGUgY29kZQotMHhGMCBpcyByZXR1cm5lZC4gKFRoaXMgY29kZSB3aWxsIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZlcnNpb24vcmxlYXNlIG9mCisweEYwIGlzIHJldHVybmVkLiAoVGhpcyBjb2RlIHdpbGwgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGUgdmVyc2lvbi9yZWxlYXNlIG9mCiB0aGUgaWtiZCBjb250cm9sbGVyLiBUaGUgZmlyc3QgcmVsZWFzZSBvZiB0aGUgaWtiZCBpcyB2ZXJzaW9uIDB4RjAsIHNob3VsZAogdGhlcmUgYmUgYSBzZWNvbmQgcmVsZWFzZSBpdCB3aWxsIGJlIDB4RjEsIGFuZCBzbyBvbi4pCiBUaGUgaWtiZCBkZWZhdWx0cyB0byBhIG1vdXNlIHBvc2l0aW9uIHJlcG9ydGluZyB3aXRoIHRocmVzaG9sZCBvZiAxIHVuaXQgaW4KQEAgLTQxMyw3ICs0MTMsNyBAQAogICAgICAgICAgICAgJW5ubm5tbW1tICAgOyB3aGVyZSBtIGlzIEpPWVNUSUNLMSBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgOyBhbmQgbiBpcyBKT1lTVElDSzAgc3RhdGUKIAotU2V0cyB0aGUgaWtiZCB0byBkbyBub3RoaW5nIGJ1dCBtb25pdG9yIHRoZSBzZXJpYWwgY29tbWFuZCBsbmUsIG1haW50YWluIHRoZQorU2V0cyB0aGUgaWtiZCB0byBkbyBub3RoaW5nIGJ1dCBtb25pdG9yIHRoZSBzZXJpYWwgY29tbWFuZCBsaW5lLCBtYWludGFpbiB0aGUKIHRpbWUtb2YtZGF5IGNsb2NrLCBhbmQgbW9uaXRvciB0aGUgam95c3RpY2suIFRoZSByYXRlIHNldHMgdGhlIGludGVydmFsCiBiZXR3ZWVuIGpveXN0aWNrIHNhbXBsZXMuCiBOLkIuIFRoZSB1c2VyIHNob3VsZCBub3Qgc2V0IHRoZSByYXRlIGhpZ2hlciB0aGFuIHRoZSBzZXJpYWwgY29tbXVuaWNhdGlvbnMKQEAgLTQ0NiwxMCArNDQ2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA7IHVudGlsIHZlcnRpY2FsIGN1cnNvciBrZXkgaXMgZ2VuZXJhdGVkIGJlZm9yZSBSWQogICAgICAgICAgICAgICAgICAgICAgICAgOyBoYXMgZWxhcHNlZAogICAgIFZYICAgICAgICAgICAgICAgICAgOyBsZW5ndGggKGluIHRlbnRocyBvZiBzZWNvbmRzKSBvZiBqb3lzdGljayBjbG9zdXJlCi0gICAgICAgICAgICAgICAgICAgICAgICA7IHVudGlsIGhvcml6b250YWwgY3Vyc29yIGtleXN0b2tlcyBhcmUgZ2VuZXJhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICA7IHVudGlsIGhvcml6b250YWwgY3Vyc29yIGtleXN0cm9rZXMgYXJlIGdlbmVyYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgOyBhZnRlciBSWCBoYXMgZWxhcHNlZAogICAgIFZZICAgICAgICAgICAgICAgICAgOyBsZW5ndGggKGluIHRlbnRocyBvZiBzZWNvbmRzKSBvZiBqb3lzdGljayBjbG9zdXJlCi0gICAgICAgICAgICAgICAgICAgICAgICA7IHVudGlsIHZlcnRpY2FsIGN1cnNvciBrZXlzdG9rZXMgYXJlIGdlbmVyYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgOyB1bnRpbCB2ZXJ0aWNhbCBjdXJzb3Iga2V5c3Ryb2tlcyBhcmUgZ2VuZXJhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICA7IGFmdGVyIFJZIGhhcyBlbGFwc2VkCiAKIEluIHRoaXMgbW9kZSwgam95c3RpY2sgMCBpcyBzY2FubmVkIGluIGEgd2F5IHRoYXQgc2ltdWxhdGVzIGN1cnNvciBrZXlzdHJva2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9mZi50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2ZmLnR4dAppbmRleCAwODVlYjE1Li5kZWQ0ZDVmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lucHV0L2ZmLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2ZmLnR4dApAQCAtMSw1ICsxLDUgQEAKIEZvcmNlIGZlZWRiYWNrIGZvciBMaW51eC4KLUJ5IEpvaGFubiBEZW5ldXggPGRlbmV1eEBpZnJhbmNlLmNvbT4gb24gMjAwMS8wNC8yMi4KK0J5IEpvaGFubiBEZW5ldXggPGpvaGFubi5kZW5ldXhAZ21haWwuY29tPiBvbiAyMDAxLzA0LzIyLgogVXBkYXRlZCBieSBBbnNzaSBIYW5udWxhIDxhbnNzaS5oYW5udWxhQGdtYWlsLmNvbT4gb24gMjAwNi8wNC8wOS4KIFlvdSBtYXkgcmVkaXN0cmlidXRlIHRoaXMgZmlsZS4gUGxlYXNlIHJlbWVtYmVyIHRvIGluY2x1ZGUgc2hhcGUuZmlnIGFuZAogaW50ZXJhY3RpdmUuZmlnIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2lmb3JjZS1wcm90b2NvbC50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2lmb3JjZS1wcm90b2NvbC50eHQKaW5kZXggODc3N2QyZC4uM2FjOTI0MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9pZm9yY2UtcHJvdG9jb2wudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvaWZvcmNlLXByb3RvY29sLnR4dApAQCAtNCwxMCArNCwxMCBAQAogZnJvbSBJbW1lcnNlLiBUaGF0J3Mgd2h5IHlvdSBzaG91bGQgbm90IHRydXN0IHdoYXQgaXMgd3JpdHRlbiBpbiB0aGlzCiBkb2N1bWVudC4gVGhpcyBkb2N1bWVudCBpcyBpbnRlbmRlZCB0byBoZWxwIHVuZGVyc3RhbmRpbmcgdGhlIHByb3RvY29sLgogVGhpcyBpcyBub3QgYSByZWZlcmVuY2UuIENvbW1lbnRzIGFuZCBjb3JyZWN0aW9ucyBhcmUgd2VsY29tZS4gIFRvIGNvbnRhY3QgbWUsCi1zZW5kIGFuIGVtYWlsIHRvOiBkZW5ldXhAaWZyYW5jZS5jb20KK3NlbmQgYW4gZW1haWwgdG86IGpvaGFubi5kZW5ldXhAZ21haWwuY29tCiAKICoqIFdBUk5JTkcgKioKLUkgbWF5IG5vdCBiZSBoZWxkIHJlc3BvbnNpYmxlIGZvciBhbnkgZGFtbWFnZSBvciBoYXJtIGNhdXNlZCBpZiB5b3UgdHJ5IHRvCitJIHNoYWxsIG5vdCBiZSBoZWxkIHJlc3BvbnNpYmxlIGZvciBhbnkgZGFtYWdlIG9yIGhhcm0gY2F1c2VkIGlmIHlvdSB0cnkgdG8KIHNlbmQgZGF0YSB0byB5b3VyIEktRm9yY2UgZGV2aWNlIGJhc2VkIG9uIHdoYXQgeW91IHJlYWQgaW4gdGhpcyBkb2N1bWVudC4KIAogKiogUHJlbGltaW5hcnkgTm90ZXM6CkBAIC0xNTEsMTMgKzE1MSwxMyBAQAogUXVlcnkgY29tbWFuZC4gTGVuZ3RoIHZhcmllcyBhY2NvcmRpbmcgdG8gdGhlIHF1ZXJ5IHR5cGUuCiBUaGUgZ2VuZXJhbCBmb3JtYXQgb2YgdGhpcyBwYWNrZXQgaXM6CiBmZiAwMSBRVUVSWSBbSU5ERVhdIENIRUNLU1VNCi1yZXBvbnNlcyBhcmUgb2YgdGhlIHNhbWUgZm9ybToKK3Jlc3BvbnNlcyBhcmUgb2YgdGhlIHNhbWUgZm9ybToKIEZGIExFTiBRVUVSWSBWQUxVRV9RVUVSSUVEIENIRUNLU1VNMgogd2hlcmUgTEVOID0gMSArIGxlbmd0aChWQUxVRV9RVUVSSUVEKQogCiAqKioqIFF1ZXJ5IHJhbSBzaXplICoqKioKIFFVRVJZID0gNDIgKCdCJ3VmZmVyIHNpemUpCi1UaGUgZGV2aWNlIHNob3VsZCByZXBseSB3aXRoIHRoZSBzYW1lIHBhY2tldCBwbHVzIHR3byBhZGRpdGlvbm5hbCBieXRlcworVGhlIGRldmljZSBzaG91bGQgcmVwbHkgd2l0aCB0aGUgc2FtZSBwYWNrZXQgcGx1cyB0d28gYWRkaXRpb25hbCBieXRlcwogY29udGFpbmluZyB0aGUgc2l6ZSBvZiB0aGUgbWVtb3J5OgogZmYgMDMgNDIgMDMgZTggQ1Mgd291bGQgbWVhbiB0aGF0IHRoZSBkZXZpY2UgaGFzIDEwMDAgYnl0ZXMgb2YgcmFtIGF2YWlsYWJsZS4KIApAQCAtMjM0LDE5ICsyMzQsMjMgQEAKIAogKiogQXBwZW5kaXg6IEhvdyB0byBzdHVkeSB0aGUgcHJvdG9jb2wgPyAqKgogCi0xLiBHZW5lcmF0ZSBlZmZlY3RzIHVzaW5nIHRoZSBmb3JjZSBlZGl0b3IgcHJvdmlkZWQgd2l0aCB0aGUgRGlyZWN0WCBTREssIG9yIHVzZSBJbW1lcnNpb24gU3R1ZGlvIChmcmVlbHkgYXZhaWxhYmxlIGF0IHRoZWlyIHdlYiBzaXRlIGluIHRoZSBkZXZlbG9wZXIgc2VjdGlvbjogd3d3LmltbWVyc2lvbi5jb20pCi0yLiBTdGFydCBhIHNvZnQgc3B5aW5nIFJTMjMyIG9yIFVTQiAoZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBjb25uZWN0ZWQgeW91ciBqb3lzdGljay93aGVlbCkuIEkgdXNlZCBDb21Qb3J0U3B5IGZyb20gZkNvZGVyIChhbHBoYSB2ZXJzaW9uISkKKzEuIEdlbmVyYXRlIGVmZmVjdHMgdXNpbmcgdGhlIGZvcmNlIGVkaXRvciBwcm92aWRlZCB3aXRoIHRoZSBEaXJlY3RYIFNESywgb3IgCit1c2UgSW1tZXJzaW9uIFN0dWRpbyAoZnJlZWx5IGF2YWlsYWJsZSBhdCB0aGVpciB3ZWIgc2l0ZSBpbiB0aGUgZGV2ZWxvcGVyIHNlY3Rpb246IAord3d3LmltbWVyc2lvbi5jb20pCisyLiBTdGFydCBhIHNvZnQgc3B5aW5nIFJTMjMyIG9yIFVTQiAoZGVwZW5kaW5nIG9uIHdoZXJlIHlvdSBjb25uZWN0ZWQgeW91ciAKK2pveXN0aWNrL3doZWVsKS4gSSB1c2VkIENvbVBvcnRTcHkgZnJvbSBmQ29kZXIgKGFscGhhIHZlcnNpb24hKQogMy4gUGxheSB0aGUgZWZmZWN0LCBhbmQgd2F0Y2ggd2hhdCBoYXBwZW5zIG9uIHRoZSBzcHkgc2NyZWVuLgogCiBBIGZldyB3b3JkcyBhYm91dCBDb21Qb3J0U3B5OgotQXQgZmlyc3QgZ2xhbmNlLCB0aGlzIHNvZnQgc2VlbXMsIGh1bSwgd2VsbC4uLiBidWdneS4gSW4gZmFjdCwgZGF0YSBhcHBlYXIgd2l0aCBhIGZldyBzZWNvbmRzIGxhdGVuY3kuIFBlcnNvbm5hbHksIEkgcmVzdGFydCBpdCBldmVyeSB0aW1lIEkgcGxheSBhbiBlZmZlY3QuCitBdCBmaXJzdCBnbGFuY2UsIHRoaXMgc29mdHdhcmUgc2VlbXMsIGh1bSwgd2VsbC4uLiBidWdneS4gSW4gZmFjdCwgZGF0YSBhcHBlYXIgd2l0aCBhCitmZXcgc2Vjb25kcyBsYXRlbmN5LiBQZXJzb25hbGx5LCBJIHJlc3RhcnQgaXQgZXZlcnkgdGltZSBJIHBsYXkgYW4gZWZmZWN0LgogUmVtZW1iZXIgaXQncyBmcmVlIChhcyBpbiBmcmVlIGJlZXIpIGFuZCBhbHBoYSEKIAogKiogVVJMUyAqKgogQ2hlY2sgd3d3LmltbWVyc2UuY29tIGZvciBJbW1lcnNpb24gU3R1ZGlvLCBhbmQgd3d3LmZjb2Rlci5jb20gZm9yIENvbVBvcnRTcHkuCiAKICoqIEF1dGhvciBvZiB0aGlzIGRvY3VtZW50ICoqCi1Kb2hhbm4gRGVuZXV4IDxkZW5ldXhAaWZyYW5jZS5jb20+CitKb2hhbm4gRGVuZXV4IDxqb2hhbm4uZGVuZXV4QGdtYWlsLmNvbT4KIEhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmVzaWwudW5pdi1tcnMuZnIvfmpkZW5ldXgvcHJvamVjdHMvZmYvCiAKIEFkZGl0aW9ucyBieSBWb2p0ZWNoIFBhdmxpay4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvaW5wdXQtcHJvZ3JhbW1pbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC1wcm9ncmFtbWluZy50eHQKaW5kZXggNGQ5MzJkYy4uNDdmYzg2OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC1wcm9ncmFtbWluZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC1wcm9ncmFtbWluZy50eHQKQEAgLTc5LDcgKzc5LDcgQEAKIGJvb3RpbmcgdGhlIGtlcm5lbCwgaXQgZ3JhYnMgdGhlIHJlcXVpcmVkIHJlc291cmNlcyAoaXQgc2hvdWxkIGFsc28gY2hlY2sKIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRldmljZSkuCiAKLVRoZW4gaXQgYWxsb2NhdGVzIGEgbmV3IGlucHV0IGRldmljZSBzdHJ1Y3R1cmUgd2l0aCBpbnB1dF9hbG9vY2F0ZV9kZXZpY2UoKQorVGhlbiBpdCBhbGxvY2F0ZXMgYSBuZXcgaW5wdXQgZGV2aWNlIHN0cnVjdHVyZSB3aXRoIGlucHV0X2FsbG9jYXRlX2RldmljZSgpCiBhbmQgc2V0cyB1cCBpbnB1dCBiaXRmaWVsZHMuIFRoaXMgd2F5IHRoZSBkZXZpY2UgZHJpdmVyIHRlbGxzIHRoZSBvdGhlcgogcGFydHMgb2YgdGhlIGlucHV0IHN5c3RlbXMgd2hhdCBpdCBpcyAtIHdoYXQgZXZlbnRzIGNhbiBiZSBnZW5lcmF0ZWQgb3IKIGFjY2VwdGVkIGJ5IHRoaXMgaW5wdXQgZGV2aWNlLiBPdXIgZXhhbXBsZSBkZXZpY2UgY2FuIG9ubHkgZ2VuZXJhdGUgRVZfS0VZCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vQ1JFRElUUyBiL0RvY3VtZW50YXRpb24vaXNkbi9DUkVESVRTCmluZGV4IDdjMTdjODMuLjhjYWM2YzIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaXNkbi9DUkVESVRTCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9DUkVESVRTCkBAIC00MCw3ICs0MCw3IEBACiBQZWRybyBSb3F1ZSBNYXJxdWVzIChyb3F1ZUBkaS5mYy51bC5wdCkKICAgRm9yIGxvdCBvZiBuZXcgaWRlYXMgYW5kIHRoZSBwY2JpdCBkcml2ZXIuCiAKLUViZXJoYXJkIE1vZW5rZWJlcmcgKGVtb2Vua2VAZ3dkZy5kZSkKK0ViZXJoYXJkIE3Dtm5rZWJlcmcgKGVtb2Vua2VAZ3dkZy5kZSkKICAgRm9yIHRlc3RpbmcgYW5kIGhlbHAgdG8gZ2V0IGludG8ga2VybmVsLgogCiBUaG9tYXMgTmV1bWFubiAodG5AcnVoci5kZSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuY29uY2FwIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5jb25jYXAKaW5kZXggMmYxMTRiYS4uYTc2ZDc0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5jb25jYXAKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5jb25jYXAKQEAgLTExMSw3ICsxMTEsNyBAQAogCXN0cnVjdCBjb25jYXBfcHJvdG8gKiAgKCpwcm90b19uZXcpICh2b2lkKTsKIAogCS8qIGRlbGV0ZSBlbmNhcHN1bGF0aW9uIHByb3RvY29sIGluc3RhbmNlIGFuZCBmcmVlIGFsbCBpdHMgcmVzb3VyY2VzLgotCSAgIGNwcm90IG1heSBubyBsb2dlciBiZSByZWZlcmVuY2VkIGFmdGVyIGNhbGxpbmcgdGhpcyAqLworCSAgIGNwcm90IG1heSBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciBjYWxsaW5nIHRoaXMgKi8KIAl2b2lkICgqcHJvdG9fZGVsKShzdHJ1Y3QgY29uY2FwX3Byb3RvICpjcHJvdCk7CiAKIAkvKiBpbml0aWFsaXplIHRoZSBwcm90b2NvbCdzIGRhdGEuIFRvIGJlIGNhbGxlZCBhdCBpbnRlcmZhY2Ugc3RhcnR1cApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9qYXZhLnR4dCBiL0RvY3VtZW50YXRpb24vamF2YS50eHQKaW5kZXggM2NjZTNmYi4uZTZhNzIzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9qYXZhLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2phdmEudHh0CkBAIC0zNyw3ICszNyw3IEBACiAgICBvciB0aGUgZm9sbG93aW5nLCBpZiB5b3Ugd2FudCB0byBiZSBtb3JlIHNlbGVjdGl2ZToKICAgICAgJzpBcHBsZXQ6TTo6PCEtLWFwcGxldDo6L3Vzci9iaW4vYXBwbGV0dmlld2VyOicKIAotICAgT2YgY2F1c2UgeW91IGhhdmUgdG8gZml4IHRoZSBwYXRoIG5hbWVzLiBHaXZlbiBwYXRoL2ZpbGUgbmFtZXMgaW4gdGhpcworICAgT2YgY291cnNlIHlvdSBoYXZlIHRvIGZpeCB0aGUgcGF0aCBuYW1lcy4gVGhlIHBhdGgvZmlsZSBuYW1lcyBnaXZlbiBpbiB0aGlzCiAgICBkb2N1bWVudCBtYXRjaCB0aGUgRGViaWFuIDIuMSBzeXN0ZW0uIChpLmUuIGpkayBpbnN0YWxsZWQgaW4gL3VzciwKICAgIGN1c3RvbSB3cmFwcGVycyBmcm9tIHRoaXMgZG9jdW1lbnQgaW4gL3Vzci9sb2NhbCkKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jcy50eHQgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1kb2NzLnR4dAppbmRleCBkOWUzYjE5Li41YTRlZjQ4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1kb2NzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1kb2NzLnR4dApAQCAtNzYsOSArNzYsOSBAQAogICAgICAqIFRpdGxlOiAiQ29uY2VwdHVhbCBBcmNoaXRlY3R1cmUgb2YgdGhlIExpbnV4IEtlcm5lbCIKICAgICAgICBBdXRob3I6IEl2YW4gVC4gQm93bWFuLgogICAgICAgIFVSTDogaHR0cDovL3BsZy51d2F0ZXJsb28uY2Evfml0Ym93bWFuL3BhcGVycy9DUzc0NkctYTEuaHRtbAotICAgICAgIEtleXdvcmRzOiBjb25jZXB0dWFsIHNvZnR3YXJlIGFycXVpdGVjdHVyZSwgZXh0cmFjdGVkIGRlc2lnbiwKKyAgICAgICBLZXl3b3JkczogY29uY2VwdHVhbCBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUsIGV4dHJhY3RlZCBkZXNpZ24sCiAgICAgICAgcmV2ZXJzZSBlbmdpbmVlcmluZywgc3lzdGVtIHN0cnVjdHVyZS4KLSAgICAgICBEZXNjcmlwdGlvbjogQ29uY2VwdHVhbCBzb2Z0d2FyZSBhcnF1aXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICBEZXNjcmlwdGlvbjogQ29uY2VwdHVhbCBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKICAgICAgICBhdXRvbWF0aWNhbGx5IGV4dHJhY3RlZCBmcm9tIHRoZSBzb3VyY2UgY29kZS4gVmVyeSBkZXRhaWxlZC4gR29vZAogICAgICAgIGZpZ3VyZXMuIEdpdmVzIGdvb2Qgb3ZlcmFsbCBrZXJuZWwgdW5kZXJzdGFuZGluZy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAppbmRleCA3YmY2YmQyLi42YWNjZDM2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dApAQCAtMjIyLDkgKzIyMiw2IEBACiAJCQlXYXJuaW5nOiBNYW55IG9mIHRoZXNlIG9wdGlvbnMgY2FuIHByb2R1Y2UgYSBsb3Qgb2YKIAkJCW91dHB1dCBhbmQgbWFrZSB5b3VyIHN5c3RlbSB1bnVzYWJsZS4gQmUgdmVyeSBjYXJlZnVsLgogCi0KLQlhY3BpX2Zha2VfZWNkdAlbSFcsQUNQSV0gV29ya2Fyb3VuZCBmYWlsdXJlIGR1ZSB0byBCSU9TIGxhY2tpbmcgRUNEVAotCiAJYWNwaV9wbV9nb29kCVtYODYtMzIsWDg2LTY0XQogCQkJT3ZlcnJpZGUgdGhlIHBtdGltZXIgYnVnIGRldGVjdGlvbjogZm9yY2UgdGhlIGtlcm5lbAogCQkJdG8gYXNzdW1lIHRoYXQgdGhpcyBtYWNoaW5lJ3MgcG10aW1lciBsYXRjaGVzIGl0cyB2YWx1ZQpAQCAtMjk3LDkgKzI5NCw2IEBACiAJYXBtPQkJW0FQTV0gQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudAogCQkJU2VlIGhlYWRlciBvZiBhcmNoL2kzODYva2VybmVsL2FwbS5jLgogCi0JYXBwbGljb209CVtIV10KLQkJCUZvcm1hdDogPG1lbT4sPGlycT4KLQogCWFyY3JpbWk9CVtIVyxORVRdIEFSQ25ldCAtICJSSU0gSSIgKGVudGlyZWx5IG1lbS1tYXBwZWQpIGNhcmRzCiAJCQlGb3JtYXQ6IDxpbz4sPGlycT4sPG5vZGVJRD4KIApAQCAtMzQ1LDEyICszMzksNiBAQAogCQkJRm9ybWF0OiA8aW8+LDxpcnE+LDxtb2RlPgogCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL25ldC9oYW1yYWRpby9iYXljb21fc2VyX2hkeC5jLgogCi0JYmxrbXRkX2RldmljZT0JW0hXLE1URF0KLQlibGttdGRfZXJhc2Vzej0KLQlibGttdGRfcm89Ci0JYmxrbXRkX2JzPQotCWJsa210ZF9jb3VudD0KLQogCWJvb3RfZGVsYXk9CU1pbGxpc2Vjb25kcyB0byBkZWxheSBlYWNoIHByaW50ayBkdXJpbmcgYm9vdC4KIAkJCVZhbHVlcyBsYXJnZXIgdGhhbiAxMCBzZWNvbmRzICgxMDAwMCkgYXJlIGNoYW5nZWQgdG8KIAkJCW5vIGRlbGF5ICgwKS4KQEAgLTUxNSw4ICs1MDMsNiBAQAogCWNzODl4MF9tZWRpYT0JW0hXLE5FVF0KIAkJCUZvcm1hdDogeyByajQ1IHwgYXVpIHwgYm5jIH0KIAotCWN5Y2xhZGVzPQlbSFcsU0VSSUFMXSBDeWNsYWRlcyBtdWx0aS1zZXJpYWwgcG9ydCBhZGFwdGVyLgotCiAJZGFzZD0JCVtIVyxORVRdCiAJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jLgogCkBAIC01NzQsMTAgKzU2MCw2IEBACiAJCQlTZWUgZHJpdmVycy9jaGFyL1JFQURNRS5lcGNhIGFuZAogCQkJRG9jdW1lbnRhdGlvbi9kaWdpZXBjYS50eHQuCiAKLQlkbWFzY2M9CQlbSFcsQVgyNSxTRVJJQUxdIEFYLjI1IFo4MFNDQyBkcml2ZXIgd2l0aCBETUEKLQkJCXN1cHBvcnQgYXZhaWxhYmxlLgotCQkJRm9ybWF0OiA8aW9fZGV2MD5bLDxpb19kZXYxPlssLi48aW9fZGV2MzI+XV0KLQogCWRtYXNvdW5kPQlbSFcsT1NTXSBTb3VuZCBzdWJzeXN0ZW0gYnVmZmVycwogCiAJZHNjYzQuc2V0dXA9CVtORVRdCkBAIC02MDgsMTcgKzU5MCwxMCBAQAogCQkJMDogcG9sbGluZyBtb2RlCiAJCQlub24tMDogaW50ZXJydXB0IG1vZGUgKGRlZmF1bHQpCiAKLQllZGE9CQlbSFcsUFMyXQotCi0JZWRiPQkJW0hXLFBTMl0KLQogCWVkZD0JCVtFRERdCiAJCQlGb3JtYXQ6IHsib2ZbZl0iIHwgInNrW2lwbWJyXSJ9CiAJCQlTZWUgY29tbWVudCBpbiBhcmNoL2kzODYvYm9vdC9lZGQuUwogCi0JZWljb249CQlbSFcsSVNETl0KLQkJCUZvcm1hdDogPGlkPiw8bWVtYmFzZT4sPGlycT4KLQogCWVpc2FfaXJxX2VkZ2U9CVtQQVJJU0MsSFddCiAJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvcGFyaXNjL2Vpc2EuYy4KIApAQCAtODk0LDkgKzg2OSw2IEBACiAJbGFwaWNfdGltZXJfYzJfb2sJW1g4Ni0zMix4ODYtNjQsQVBJQ10gdHJ1c3QgdGhlIGxvY2FsIGFwaWMgdGltZXIgaW4KIAkJCUMyIHBvd2VyIHN0YXRlLgogCi0JbGFzaT0JCVtIVyxTQ1NJXSBQQVJJU0MgTEFTSSBkcml2ZXIgZm9yIHRoZSA1M2M3MDAgY2hpcAotCQkJRm9ybWF0OiBhZGRyOjxpbz4saXJxOjxpcnE+Ci0KIAlsaWJhdGEubm9hY3BpCVtMSUJBVEFdIERpc2FibGVzIHVzZSBvZiBBQ1BJIGluIGxpYmF0YSBzdXNwZW5kL3Jlc3VtZQogCQkJd2hlbiBzZXQuCiAJCQlGb3JtYXQ6IDxpbnQ+CkBAIC0xMTQ0LDkgKzExMTYsNiBAQAogCW5vYXBpYwkJW1NNUCxBUElDXSBUZWxscyB0aGUga2VybmVsIHRvIG5vdCBtYWtlIHVzZSBvZiBhbnkKIAkJCUlPQVBJQ3MgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgc3lzdGVtLgogCi0Jbm9hc3luYwkJW0hXLE02OEtdIERpc2FibGVzIGFzeW5jIGFuZCBzeW5jIG5lZ290aWF0aW9uIGZvcgotCQkJYWxsIGRldmljZXMuCi0KIAlub2JhdHMJCVtQUENdIERvIG5vdCB1c2UgQkFUcyBmb3IgbWFwcGluZyBrZXJuZWwgbG93bWVtCiAJCQlvbiAiQ2xhc3NpYyIgUFBDIGNvcmVzLgogCkBAIC0xNDU4LDYgKzE0MjcsNyBAQAogCQkJUGFyYW06IDxudW1iZXI+IC0gc3RlcC9idWNrZXQgc2l6ZSBhcyBhIHBvd2VyIG9mIDIgZm9yCiAJCQkJc3RhdGlzdGljYWwgdGltZSBiYXNlZCBwcm9maWxpbmcuCiAJCQlQYXJhbTogInNsZWVwIiAtIHByb2ZpbGUgRC1zdGF0ZSBzbGVlcGluZyAobWlsbGlzZWNzKQorCQkJUGFyYW06ICJrdm0iIC0gcHJvZmlsZSBWTSBleGl0cy4KIAogCXByb2Nlc3Nvci5tYXhfY3N0YXRlPQlbSFcsQUNQSV0KIAkJCUxpbWl0IHByb2Nlc3NvciB0byBtYXhpbXVtIEMtc3RhdGUKQEAgLTE1ODQsOSArMTU1NCw2IEBACiAJc2ExMTAwaXIJW05FVF0KIAkJCVNlZSBkcml2ZXJzL25ldC9pcmRhL3NhMTEwMF9pci5jLgogCi0Jc2I9CQlbSFcsT1NTXQotCQkJRm9ybWF0OiA8aW8+LDxpcnE+LDxkbWE+LDxkbWEyPgotCiAJc2JuaT0JCVtORVRdIEdyYW5jaCBTQk5JMTIgbGVhc2VkIGxpbmUgYWRhcHRlcgogCiAJc2MxMjAwd2R0PQlbSFcsV0RUXSBTQzEyMDAgV0RUICh3YXRjaGRvZykgZHJpdmVyCkBAIC0xNjMwLDggKzE1OTcsNiBAQAogCiAJc2VyaWFsbnVtYmVyCVtCVUdTPVg4Ni0zMl0KIAotCXNnX2RlZl9yZXNlcnZlZF9zaXplPQlbU0NTSV0KLQogCXNoYXBlcnM9CVtORVRdCiAJCQlNYXhpbWFsIG51bWJlciBvZiBzaGFwZXJzLgogCkBAIC0yMDIyLDEwICsxOTg3LDYgQEAKIAlub3JhbmRtYXBzCURvbid0IHVzZSBhZGRyZXNzIHNwYWNlIHJhbmRvbWl6YXRpb24KIAkJCUVxdWl2YWxlbnQgdG8gZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC9yYW5kb21pemVfdmFfc3BhY2UKIAotIAl1bndpbmRfZGVidWc9TiAJTiA+IDAgd2lsbCBlbmFibGUgZHdhcmYyIHVud2luZGVyIGRlYnVnZ2luZwotCQkJVGhpcyBpcyB1c2VmdWwgdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gd2h5Ci0JCQl5b3UgZ290IGEgImR3YXJmMiB1bndpbmRlciBzdHVjayIKLQogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiBUT0RPOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tNjhrL2tlcm5lbC1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vbTY4ay9rZXJuZWwtb3B0aW9ucy50eHQKaW5kZXggOGE1MjNmNi4uMjQ4NTg5ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tNjhrL2tlcm5lbC1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL202OGsva2VybmVsLW9wdGlvbnMudHh0CkBAIC04OTAsMTAgKzg5MCw3IEBACiA1LjUuMikgbm9hc3luYwogLS0tLS0tLS0tLS0tLS0KIAotU3ludGF4OiBub2FzeW5jOjAKLQotICBEaXNhYmxlcyBhc3luYyBhbmQgc3luYyBuZWdvdGlhdGlvbiBmb3IgYWxsIGRldmljZXMuICBBbnkgdmFsdWUKLSAgYWZ0ZXIgdGhlIGNvbG9uIGlzIGFjY2VwdGFibGUgKGFuZCBoYXMgdGhlIHNhbWUgZWZmZWN0KS4KK1tPQlNPTEVURSwgUkVNT1ZFRF0KIAogNS41LjMpIG5vZGlzY29ubmVjdAogLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FCmluZGV4IGFmYjMxYzEuLjVjODMzNDEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWlwcy9BVTF4eHhfSURFLlJFQURNRQorKysgYi9Eb2N1bWVudGF0aW9uL21pcHMvQVUxeHh4X0lERS5SRUFETUUKQEAgLTU5LDcgKzU5LDcgQEAKICAgQ09ORklHX0JMS19ERVZfSURFX0FVMVhYWF9QSU9fREJETUEgICAgLSBlbmFibGUgdGhlIFBJTytEQkRNQSBtb2RlCiAgIENPTkZJR19CTEtfREVWX0lERV9BVTFYWFhfTURNQTJfREJETUEgIC0gZW5hYmxlIHRoZSBNV0RNQSBtb2RlCiAgIENPTkZJR19CTEtfREVWX0lERV9BVTFYWFhfQlVSU1RBQkxFX09OIC0gc2V0IEJ1cnN0YWJsZSBGSUZPIGluIERCRE1BCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcgogICBDT05GSUdfQkxLX0RFVl9JREVfQVUxWFhYX1NFUVRTX1BFUl9SUSAtIG1heGltdW0gdHJhbnNmZXIgc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlciBkZXNjcmlwdG9yCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbXV0ZXgtZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vbXV0ZXgtZGVzaWduLnR4dAppbmRleCA1MWY5MzUxLi5hYTYwZDFmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL211dGV4LWRlc2lnbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9tdXRleC1kZXNpZ24udHh0CkBAIC0xMzMsNCArMTMzLDYgQEAKICBpbnQgIG11dGV4X3RyeWxvY2soc3RydWN0IG11dGV4ICpsb2NrKTsKICB2b2lkIG11dGV4X3VubG9jayhzdHJ1Y3QgbXV0ZXggKmxvY2spOwogIGludCAgbXV0ZXhfaXNfbG9ja2VkKHN0cnVjdCBtdXRleCAqbG9jayk7Ci0KKyB2b2lkIG11dGV4X2xvY2tfbmVzdGVkKHN0cnVjdCBtdXRleCAqbG9jaywgdW5zaWduZWQgaW50IHN1YmNsYXNzKTsKKyBpbnQgIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZV9uZXN0ZWQoc3RydWN0IG11dGV4ICpsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3ViY2xhc3MpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JjbTQzeHgudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JjbTQzeHgudHh0CmluZGV4IGExMzY3MjEuLmQ2MDJjOGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9iY200M3h4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYmNtNDN4eC50eHQKQEAgLTM3LDcgKzM3LDcgQEAKIHJlcXVpcmVkLiBUaGUgZmlybXdhcmUgdXNlZCBieSB0aGUgY2hpcCBpcyB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5CiBvZiBCcm9hZGNvbSBhbmQgdGhleSBoYXZlIG5vdCBnaXZlbiB0aGUgYmNtNDN4eCB0ZWFtIHJlZGlzdHJpYnV0aW9uCiByaWdodHMgdG8gdGhpcyBmaXJtd2FyZS4gIFNpbmNlIHdlIGNhbm5vdCBsZWdhbGx5IHJlZGlzdHJpYnV0ZQotdGhlIGZpcndtYXJlIHdlIGNhbm5vdCBpbmNsdWRlIGl0IHdpdGggdGhlIGRyaXZlci4gRnVydGhlcm1vcmUsIGl0Cit0aGUgZmlybXdhcmUgd2UgY2Fubm90IGluY2x1ZGUgaXQgd2l0aCB0aGUgZHJpdmVyLiBGdXJ0aGVybW9yZSwgaXQKIGNhbm5vdCBiZSBwbGFjZWQgaW4gdGhlIGRvd25sb2FkYWJsZSBhcmNoaXZlcyBvZiBhbnkgZGlzdHJpYnV0aW5nCiBvcmdhbml6YXRpb247IHRoZXJlZm9yZSwgdGhlIHVzZXIgaXMgcmVzcG9uc2libGUgZm9yIG9idGFpbmluZyB0aGUKIGZpcm13YXJlIGFuZCBwbGFjaW5nIGl0IGluIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBzbyB0aGF0IHRoZSBkcml2ZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC50eHQKaW5kZXggNmFlMmZlZi4uNzQ3YTVkMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC50eHQKQEAgLTI5Myw3ICsyOTMsNyBAQAogCXdoZW4gdGhlIGNvbm5lY3Rpb24gY2xvc2VzLCBzbyB0aGF0IGNvbm5lY3Rpb25zIGVzdGFibGlzaGVkIGluIHRoZQogCW5lYXIgZnV0dXJlIGNhbiB1c2UgdGhlc2UgdG8gc2V0IGluaXRpYWwgY29uZGl0aW9ucy4gIFVzdWFsbHksIHRoaXMKIAlpbmNyZWFzZXMgb3ZlcmFsbCBwZXJmb3JtYW5jZSwgYnV0IG1heSBzb21ldGltZXMgY2F1c2UgcGVyZm9ybWFuY2UKLQlkZWdyZWRhdGlvbi4gIElmIHNldCwgVENQIHdpbGwgbm90IGNhY2hlIG1ldHJpY3Mgb24gY2xvc2luZworCWRlZ3JhZGF0aW9uLiAgSWYgc2V0LCBUQ1Agd2lsbCBub3QgY2FjaGUgbWV0cmljcyBvbiBjbG9zaW5nCiAJY29ubmVjdGlvbnMuCiAKIHRjcF9vcnBoYW5fcmV0cmllcyAtIElOVEVHRVIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcnhycGMudHh0CmluZGV4IGMzNmI2NGIuLmMzNjY5YTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3J4cnBjLnR4dApAQCAtNjg5LDcgKzY4OSw3IEBACiAgICAgIGJ1ZmZlcnMgbWFuaXB1bGF0ZWQgZGlyZWN0bHkuCiAKIFRvIHVzZSB0aGUgUnhSUEMgZmFjaWxpdHksIGEga2VybmVsIHV0aWxpdHkgbXVzdCBzdGlsbCBvcGVuIGFuIEFGX1JYUlBDIHNvY2tldCwKLWJpbmQgYW4gYWRkZXNzIGFzIGFwcHJvcHJpYXRlIGFuZCBsaXN0ZW4gaWYgaXQncyB0byBiZSBhIHNlcnZlciBzb2NrZXQsIGJ1dAorYmluZCBhbiBhZGRyZXNzIGFzIGFwcHJvcHJpYXRlIGFuZCBsaXN0ZW4gaWYgaXQncyB0byBiZSBhIHNlcnZlciBzb2NrZXQsIGJ1dAogdGhlbiBpdCBwYXNzZXMgdGhpcyB0byB0aGUga2VybmVsIGludGVyZmFjZSBmdW5jdGlvbnMuCiAKIFRoZSBrZXJuZWwgaW50ZXJmYWNlIGZ1bmN0aW9ucyBhcmUgYXMgZm9sbG93czoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy91ZHBsaXRlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy91ZHBsaXRlLnR4dAppbmRleCA2YmUwOWJhLi5iNjQwOWNhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdWRwbGl0ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3VkcGxpdGUudHh0CkBAIC0xMiw3ICsxMiw3IEBACiAgIEZvciBpbi1kZXB0aCBpbmZvcm1hdGlvbiwgeW91IGNhbiBjb25zdWx0OgogCiAgICBvIFRoZSBVRFAtTGl0ZSBIb21lcGFnZTogaHR0cDovL3d3dy5lcmcuYWJkbi5hYy51ay91c2Vycy9nZXJyaXQvdWRwLWxpdGUvCi0gICAgICAgRm9tIGhlcmUgeW91IGNhbiBhbHNvIGRvd25sb2FkIHNvbWUgZXhhbXBsZSBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZS4KKyAgICAgICBGcm9tIGhlcmUgeW91IGNhbiBhbHNvIGRvd25sb2FkIHNvbWUgZXhhbXBsZSBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZS4KIAogICAgbyBUaGUgVURQLUxpdGUgSE9XVE8gb24KICAgICAgICBodHRwOi8vd3d3LmVyZy5hYmRuLmFjLnVrL3VzZXJzL2dlcnJpdC91ZHAtbGl0ZS9maWxlcy9VRFAtTGl0ZS1IT1dUTy50eHQKQEAgLTIyMyw3ICsyMjMsNyBAQAogICBXaGlsZSBpdCBpcyBpbXBvcnRhbnQgdGhhdCBzdWNoIGNhc2VzIGFyZSBkZWFsdCB3aXRoIGNvcnJlY3RseSwgdGhleQogICBhcmUgKGFubm95aW5nbHkpIHJhcmU6IFVEUC1MaXRlIGlzIGRlc2lnbmVkIGZvciBvcHRpbWlzaW5nIG11bHRpbWVkaWEKICAgcGVyZm9ybWFuY2Ugb3ZlciB3aXJlbGVzcyAob3IgZ2VuZXJhbGx5IG5vaXN5KSBsaW5rcyBhbmQgdGh1cyBzbWFsbGVyCi0gIGNvdmVyYWdlIGxlbmdodHMgYXJlIGxpa2VseSB0byBiZSBleHBlY3RlZC4KKyAgY292ZXJhZ2UgbGVuZ3RocyBhcmUgbGlrZWx5IHRvIGJlIGV4cGVjdGVkLgogCiAKICAgVikgVURQLUxJVEUgUlVOVElNRSBTVEFUSVNUSUNTIEFORCBUSEVJUiBNRUFOSU5HCkBAIC0yNTksNyArMjU5LDcgQEAKICAgVkkpIElQVEFCTEVTCiAKICAgVGhlcmUgaXMgcGFja2V0IG1hdGNoIHN1cHBvcnQgZm9yIFVEUC1MaXRlIGFzIHdlbGwgYXMgc3VwcG9ydCBmb3IgdGhlIExPRyB0YXJnZXQuCi0gIElmIHlvdSBjb3B5IGFuZCBwYXN0ZSB0aGUgZm9sbG93aW5nIGxpbmUgaW50byAvZXRjL3Byb3Rjb2xzLAorICBJZiB5b3UgY29weSBhbmQgcGFzdGUgdGhlIGZvbGxvd2luZyBsaW5lIGludG8gL2V0Yy9wcm90b2NvbHMsCiAKICAgdWRwbGl0ZSAxMzYgICAgIFVEUC1MaXRlICAgICAgICAjIFVEUC1MaXRlIFtSRkMgMzgyOF0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AtYW5kLXN3YXAtZmlsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AtYW5kLXN3YXAtZmlsZXMudHh0CmluZGV4IDA2ZjkxMWEuLmYyODE4ODYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLWFuZC1zd2FwLWZpbGVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC1hbmQtc3dhcC1maWxlcy50eHQKQEAgLTM5LDcgKzM5LDcgQEAKIHdoZXJlIDxzd2FwX2ZpbGVfcGFydGl0aW9uPiBpcyB0aGUgcGFydGl0aW9uIG9uIHdoaWNoIHRoZSBzd2FwIGZpbGUgaXMgbG9jYXRlZAogYW5kIDxzd2FwX2ZpbGVfb2Zmc2V0PiBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBzd2FwIGhlYWRlciBkZXRlcm1pbmVkIGJ5IHRoZQogYXBwbGljYXRpb24gaW4gMikgKG9mIGNvdXJzZSwgdGhpcyBzdGVwIG1heSBiZSBjYXJyaWVkIG91dCBhdXRvbWF0aWNhbGx5Ci1ieSB0aGUgc2FtZSBhcHBsaWNhdGlvbiB0aGF0IGRldGVybWllcyB0aGUgc3dhcCBmaWxlJ3MgaGVhZGVyIG9mZnNldCB1c2luZyB0aGUKK2J5IHRoZSBzYW1lIGFwcGxpY2F0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc3dhcCBmaWxlJ3MgaGVhZGVyIG9mZnNldCB1c2luZyB0aGUKIEZJQk1BUCBpb2N0bCkKIAogT1IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9lZWgtcGNpLWVycm9yLXJlY292ZXJ5LnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9lZWgtcGNpLWVycm9yLXJlY292ZXJ5LnR4dAppbmRleCA0NTMwZDFiLi5kZjdhZmU0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvZWVoLXBjaS1lcnJvci1yZWNvdmVyeS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2VlaC1wY2ktZXJyb3ItcmVjb3ZlcnkudHh0CkBAIC0zNiw4ICszNiw4IEBACiBFRUggd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgdG8gZ3VhcmQgYWdhaW5zdCBoYXJkd2FyZSBmYWlsdXJlLCBzdWNoCiBhcyBQQ0kgY2FyZHMgZHlpbmcgZnJvbSBoZWF0LCBodW1pZGl0eSwgZHVzdCwgdmlicmF0aW9uIGFuZCBiYWQKIGVsZWN0cmljYWwgY29ubmVjdGlvbnMuIFRoZSB2YXN0IG1ham9yaXR5IG9mIEVFSCBlcnJvcnMgc2VlbiBpbgotInJlYWwgbGlmZSIgYXJlIGR1ZSB0byBlaXRociBwb29ybHkgc2VhdGVkIFBDSSBjYXJkcywgb3IsCi11bmZvcnR1bmF0ZWx5IHF1aXRlIGNvbW1vbmx5LCBkdWUgZGV2aWNlIGRyaXZlciBidWdzLCBkZXZpY2UgZmlybXdhcmUKKyJyZWFsIGxpZmUiIGFyZSBkdWUgdG8gZWl0aGVyIHBvb3JseSBzZWF0ZWQgUENJIGNhcmRzLCBvciwKK3VuZm9ydHVuYXRlbHkgcXVpdGUgY29tbW9ubHksIGR1ZSB0byBkZXZpY2UgZHJpdmVyIGJ1Z3MsIGRldmljZSBmaXJtd2FyZQogYnVncywgYW5kIHNvbWV0aW1lcyBQQ0kgY2FyZCBoYXJkd2FyZSBidWdzLgogCiBUaGUgbW9zdCBjb21tb24gc29mdHdhcmUgYnVnLCBpcyBvbmUgdGhhdCBjYXVzZXMgdGhlIGRldmljZSB0bwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL21wYzUyeHgtZGV2aWNlLXRyZWUtYmluZGluZ3MudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL21wYzUyeHgtZGV2aWNlLXRyZWUtYmluZGluZ3MudHh0CmluZGV4IGU1OWZjYmIuLjVmN2Q1MzYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9tcGM1Mnh4LWRldmljZS10cmVlLWJpbmRpbmdzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvbXBjNTJ4eC1kZXZpY2UtdHJlZS1iaW5kaW5ncy50eHQKQEAgLTE3LDEyICsxNywxMiBAQAogZGVzY3JpYmVzIHdoYXQgZGV2aWNlcyBhcmUgcHJlc2VudCBvbiB0aGUgYm9hcmQgYW5kIGhvdyB0aGV5IGFyZQogY29ubmVjdGVkLiAgVGhlIGRldmljZSB0cmVlIGNhbiBlaXRoZXIgYmUgcGFzc2VkIGFzIGEgYmluYXJ5IGJsb2IgKGFzCiBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2Jvb3Rpbmctd2l0aG91dC1vZi50eHQpLCBvciBwYXNzZWQKLWJ5IE9wZW4gRmlybWFyZSAoSUVFRSAxMjc1KSBjb21wYXRpYmxlIGZpcm13YXJlIHVzaW5nIGFuIE9GIGNvbXBhdGlibGUKK2J5IE9wZW4gRmlybXdhcmUgKElFRUUgMTI3NSkgY29tcGF0aWJsZSBmaXJtd2FyZSB1c2luZyBhbiBPRiBjb21wYXRpYmxlCiBjbGllbnQgaW50ZXJmYWNlIEFQSS4KIAogVGhpcyBkb2N1bWVudCBzcGVjaWZpZXMgdGhlIHJlcXVpcmVtZW50cyBvbiB0aGUgZGV2aWNlLXRyZWUgZm9yIG1wYzUyMDAKIGJhc2VkIGJvYXJkcy4gIFRoZXNlIHJlcXVpcmVtZW50cyBhcmUgYWJvdmUgYW5kIGJleW9uZCB0aGUgZGV0YWlscwotc3BlY2lmaWVkIGluIGVpdGhlciB0aGUgT3BlbkZpcm13YXJlIHNwZWMgb3IgYm9vdGluZy13aXRob3V0LW9mLnR4dAorc3BlY2lmaWVkIGluIGVpdGhlciB0aGUgT3BlbiBGaXJtd2FyZSBzcGVjIG9yIGJvb3Rpbmctd2l0aG91dC1vZi50eHQKIAogQWxsIG5ldyBtcGM1MjAwLWJhc2VkIGJvYXJkcyBhcmUgZXhwZWN0ZWQgdG8gbWF0Y2ggdGhpcyBkb2N1bWVudC4gIEluCiBjYXNlcyB3aGVyZSB0aGlzIGRvY3VtZW50IGlzIG5vdCBzdWZmaWNpZW50IHRvIHN1cHBvcnQgYSBuZXcgYm9hcmQgcG9ydCwKQEAgLTczLDggKzczLDggQEAKIHNlbGVjdGVkLgogCiBUaGUgc3BsaXQgYmV0d2VlbiB0aGUgTVBDNTIwMCBhbmQgdGhlIE1QQzUyMDBCIGxlYXZlcyBhIGJpdCBvZiBhCi1jb25udW5kcnVtLiAgSG93IHNob3VsZCB0aGUgY29tcGF0aWJsZSBwcm9wZXJ0eSBiZSBzZXQgdXAgdG8gcHJvdmlkZQotbWF4aW11bSBjb21wYXRhYmlsaXR5IGluZm9ybWF0aW9uOyBidXQgc3RpbGwgYWN1cmF0ZWx5IGRlc2NyaWJlIHRoZQorY29udW5kcnVtLiAgSG93IHNob3VsZCB0aGUgY29tcGF0aWJsZSBwcm9wZXJ0eSBiZSBzZXQgdXAgdG8gcHJvdmlkZQorbWF4aW11bSBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uOyBidXQgc3RpbGwgYWNjdXJhdGVseSBkZXNjcmliZSB0aGUKIGNoaXA/ICBGb3IgdGhlIE1QQzUyMDA7IHRoZSBhbnN3ZXIgaXMgZWFzeS4gIE1vc3Qgb2YgdGhlIFNvQyBkZXZpY2VzCiBvcmlnaW5hbGx5IGFwcGVhcmVkIG9uIHRoZSBNUEM1MjAwLiAgU2luY2UgdGhleSBkaWRuJ3QgZXhpc3QgYW55d2hlcmUKIGVsc2U7IHRoZSA1MjAwIGNvbXBhdGlibGUgcHJvcGVydGllcyB3aWxsIGNvbnRhaW4gb25seSBvbmUgaXRlbTsKQEAgLTg0LDcgKzg0LDcgQEAKIHNpbGljb24gYnVncyBhbmQgaXQgYWRkcyBhIHNtYWxsIG51bWJlciBvZiBlbmhhbmNlbWVudHMuICBNb3N0IG9mIHRoZQogZGV2aWNlcyBlaXRoZXIgcHJvdmlkZSBleGFjdGx5IHRoZSBzYW1lIGludGVyZmFjZSBhcyBvbiB0aGUgNTIwMC4gIEEgZmV3CiBkZXZpY2VzIGhhdmUgZXh0cmEgZnVuY3Rpb25zIGJ1dCBzdGlsbCBoYXZlIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgbW9kZS4KLVRvIGV4cHJlc3MgdGhpcyBpbmZvbWF0aW9uIGFzIGNvbXBsZXRlbHkgYXMgcG9zc2libGUsIDUyMDBCIGRldmljZSB0cmVlcworVG8gZXhwcmVzcyB0aGlzIGluZm9ybWF0aW9uIGFzIGNvbXBsZXRlbHkgYXMgcG9zc2libGUsIDUyMDBCIGRldmljZSB0cmVlcwogc2hvdWxkIGhhdmUgdHdvIGl0ZW1zIGluIHRoZSBjb21wYXRpYmxlIGxpc3Q7CiAibXBjNTIwMGItPGRldmljZT5cMG1wYzUyMDAtPGRldmljZT4iLiAgSXQgaXMgKnN0cm9uZ2x5KiByZWNvbW1lbmRlZAogdGhhdCA1MjAwQiBkZXZpY2UgdHJlZXMgZm9sbG93IHRoaXMgY29udmVudGlvbiAoaW5zdGVhZCBvZiBvbmx5IGxpc3RpbmcKQEAgLTE5OSw3ICsxOTksNyBAQAogYXRhQDxhZGRyPglhdGEJCW1wYzUyMDAtYXRhCSAgSURFIEFUQSBpbnRlcmZhY2UKIGkyY0A8YWRkcj4JaTJjCQltcGM1MjAwLWkyYwkgIEkyQyBjb250cm9sbGVyCiB1c2JAPGFkZHI+CXVzYi1vaGNpLWJlCW1wYzUyMDAtb2hjaSxvaGNpLWJlCVVTQiBjb250cm9sbGVyCi14bGJAPGFkZHI+CXhsYgkJbXBjNTIwMC14bGIJICBYTEIgYXJicml0cmF0b3IKK3hsYkA8YWRkcj4JeGxiCQltcGM1MjAwLXhsYgkgIFhMQiBhcmJpdHJhdG9yCiAKIEltcG9ydGFudCBjaGlsZCBub2RlIHByb3BlcnRpZXMKIG5hbWUJCXR5cGUJCWRlc2NyaXB0aW9uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvYWljNzl4eC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWljNzl4eC50eHQKaW5kZXggNmFhOWE4OS4uNjgzY2NhZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzc5eHgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9haWM3OXh4LnR4dApAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgbGlzdCBzaXplIHRvIGF2b2lkIFNDU0kgbWFsbG9jIHBvb2wgZnJhZ21lbnRhdGlvbi4KICAgICAgICAgLSBDbGVhbnVwIGNoYW5uZWwgZGlzcGxheSBpbiBvdXIgL3Byb2Mgb3V0cHV0LgogICAgICAgICAtIFdvcmthcm91bmQgZHVwbGljYXRlIGRldmljZSBlbnRyaWVzIGluIHRoZSBtaWQtbGF5ZXIKLSAgICAgICAgICBkZXZsaWNlIGxpc3QgZHVyaW5nIGFkZC1zaW5nbGUtZGV2aWNlLgorICAgICAgICAgIGRldmljZSBsaXN0IGR1cmluZyBhZGQtc2luZ2xlLWRldmljZS4KIAogICAgMS4zLjYgKE1hcmNoIDI4dGgsIDIwMDMpCiAgICAgICAgIC0gQ29ycmVjdCBhIGRvdWJsZSBmcmVlIGluIHRoZSBEb21haW4gVmFsaWRhdGlvbiBjb2RlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzd4eHgudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzd4eHgudHh0CmluZGV4IDVmMzRkMmIuLmI3ZTIzOGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9haWM3eHh4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWljN3h4eC50eHQKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICAtIEFkZCBzdXBwb3J0IGZvciAyLjUuWCdzIHNjc2lfcmVwb3J0X2RldmljZV9yZXNldCgpLgogCiAgICA2LjIuMzQgKE1heSA1dGgsIDIwMDMpCi0gICAgICAgIC0gRml4IGxvY2tpbmcgcmVncmVzc2lvbiBpbnN0cm9kdWNlZCBpbiA2LjIuMjkgdGhhdAorICAgICAgICAtIEZpeCBsb2NraW5nIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiA2LjIuMjkgdGhhdAogICAgICAgICAgIGNvdWxkIGNhdXNlIGEgbG9jayBvcmRlciByZXZlcnNhbCBiZXR3ZWVuIHRoZSBpb19yZXF1ZXN0X2xvY2sKICAgICAgICAgICBhbmQgb3VyIHBlci1zb2Z0YyBsb2NrLiAgVGhpcyB3YXMgb25seSBwb3NzaWJsZSBvbiBSSDksCiAgICAgICAgICAgU3VTRSwgYW5kIGtlcm5lbC5vcmcgMi40Llgga2VybmVscy4KQEAgLTI2NCw3ICsyNjQsNyBAQAogICAgICAgICAgICAgICBPcHRpb246IHRhZ19pbmZvOnt7dmFsdWVbLHZhbHVlLi4uXX1bLHt2YWx1ZVssdmFsdWUuLi5dfS4uLl19CiAgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IHRoZSBwZXItdGFyZ2V0IHRhZ2dlZCBxdWV1ZSBkZXB0aCBvbiBhCiAgICAgICAgICAgICAgICAgICAgICAgcGVyIGNvbnRyb2xsZXIgYmFzaXMuICBCb3RoIGNvbnRyb2xsZXJzIGFuZCB0YXJnZXRzCi0gICAgICAgICAgICAgICAgICAgICAgbWF5IGJlIG9tbWl0dGVkIGluZGljYXRpbmcgdGhhdCB0aGV5IHNob3VsZCByZXRhaW4KKyAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQgdGhleSBzaG91bGQgcmV0YWluCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdGFnIGRlcHRoLgogICAgICAgICAgICAgRXhhbXBsZXM6IHRhZ19pbmZvOnt7MTYsMzIsMzIsNjQsOCw4LCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMn0KICAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMApAQCAtMjkwLDcgKzI5MCw3IEBACiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICBPcHRpb246IGR2OiB7dmFsdWVbLHZhbHVlLi4uXX0gCiAgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IERvbWFpbiBWYWxpZGF0aW9uIFBvbGljeSBvbiBhIHBlci1jb250cm9sbGVyIGJhc2lzLgotICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbW1pdHRlZCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICB0aGV5IHNob3VsZCByZXRhaW4gdGhlIGRlZmF1bHQgcmVhZCBzdHJlYW1pbmcgc2V0dGluZy4KICAgICAgICAgICAgICBFeGFtcGxlOiBkdjp7LTEsMCwsMSwxLDB9CiAgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgbGVhdmUgRFYgYXQgaXRzIGRlZmF1bHQgc2V0dGluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9hcmNtc3Jfc3BlYy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYXJjbXNyX3NwZWMudHh0CmluZGV4IDVlMDA0MjMuLjQ1ZDk0ODIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9hcmNtc3Jfc3BlYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FyY21zcl9zcGVjLnR4dApAQCAtMyw3ICszLDcgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoqCVVzYWdlIG9mIElPUDMzMSBhZGFwdGVyCiAqKgkoQWxsIEluL091dCBpcyBpbiBJT1AzMzEncyB2aWV3KQotKioJMS4gTWVzc2FnZSAwIC0tPiBJbml0VGhyZWFkIG1lc3NhZ2UgYW5kIHJldHJ1biBjb2RlCisqKgkxLiBNZXNzYWdlIDAgLS0+IEluaXRUaHJlYWQgbWVzc2FnZSBhbmQgcmV0dXJuIGNvZGUKICoqCTIuIERvb3JiZWxsIGlzIHVzZWQgZm9yIFJTLTIzMiBlbXVsYXRpb24KICoqCQlpbkRvb3JCZWxsIDogICAgYml0MCAtLSBkYXRhIGluIHJlYWR5CiAqKgkJCShEUklWRVIgREFUQSBXUklURSBPSykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9pYm1tY2EudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2libW1jYS50eHQKaW5kZXggYTA4ZTIyNS4uYTgxMDQyMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpL2libW1jYS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2libW1jYS50eHQKQEAgLTIxLDcgKzIxLDcgQEAKICAgIHZlcnNpb25zIG9sZGVyIHRoYW4gNC4wIGRvIG5vdCB3b3JrIHdpdGgga2VybmVscyAyLjQuMCBvciBsYXRlciEgSWYgeW91CiAgICB0cnkgdG8gY29tcGlsZSB5b3VyIGtlcm5lbCB3aXRoIHRoZSB3cm9uZyBkcml2ZXIgc291cmNlLCB0aGUgCiAgICBjb21waWxhdGlvbiBpcyBhYm9ydGVkIGFuZCB5b3UgZ2V0IGEgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlLiBUaGlzIGlzCi0gICBubyBidWcgaW4gdGhlIGRyaXZlci4gSXQgcHJldmVudHMgeW91IGZyb20gdXNpbmcgdGhlIHdyb25nIHNvdXJjZWNvZGUKKyAgIG5vIGJ1ZyBpbiB0aGUgZHJpdmVyOyBpdCBwcmV2ZW50cyB5b3UgZnJvbSB1c2luZyB0aGUgd3Jvbmcgc291cmNlIGNvZGUKICAgIHdpdGggdGhlIHdyb25nIGtlcm5lbCB2ZXJzaW9uLgogCiAgICBBdXRob3JzIG9mIHRoaXMgRHJpdmVyCkBAIC01OCw3ICs1OCw3IEBACiAgICA1IFVzZXJzJyBNYW51YWwKICAgICAgNS4xIENvbW1hbmRsaW5lIFBhcmFtZXRlcnMKICAgICAgNS4yIFRyb3VibGVzaG9vdGluZwotICAgICA1LjMgQnVncmVwb3J0cworICAgICA1LjMgQnVnIHJlcG9ydHMKICAgICAgNS40IFN1cHBvcnQgV1dXLXBhZ2UKICAgIDYgUmVmZXJlbmNlcwogICAgNyBDcmVkaXRzIHRvCkBAIC03MSwxMyArNzEsMTMgQEAKIAogICAgMSBBYnN0cmFjdAogICAgLS0tLS0tLS0tLQotICAgVGhpcyBSRUFETUUtZmlsZSBkZXNjcmliZXMgdGhlIElCTSBTQ1NJLXN1YnN5c3RlbSBsb3cgbGV2ZWwgZHJpdmVyIGZvciAKLSAgIExpbnV4LiBUaGUgZGVzY3JpcHRpb25zIHdoaWNoIHdlcmUgZm9ybWVybHkga2VwdCBpbiB0aGUgc291cmNlLWNvZGUgaGF2ZSAKLSAgIGJlZW4gdGFrZW4gb3V0IHRvIHRoaXMgZmlsZSB0byBlYXNpZnkgdGhlIGNvZGVzJyByZWFkYWJpbGl0eS4gVGhlIGRyaXZlciAKKyAgIFRoaXMgUkVBRE1FLWZpbGUgZGVzY3JpYmVzIHRoZSBJQk0gU0NTSS1zdWJzeXN0ZW0gbG93IGxldmVsIGRyaXZlciBmb3IKKyAgIExpbnV4LiBUaGUgZGVzY3JpcHRpb25zIHdoaWNoIHdlcmUgZm9ybWVybHkga2VwdCBpbiB0aGUgc291cmNlIGNvZGUgaGF2ZQorICAgYmVlbiB0YWtlbiBvdXQgb2YgdGhpcyBmaWxlIHRvIHNpbXBsaWZ5IHRoZSBjb2RlcyByZWFkYWJpbGl0eS4gVGhlIGRyaXZlcgogICAgZGVzY3JpcHRpb24gaGFzIGJlZW4gdXBkYXRlZCwgYXMgbW9zdCBvZiB0aGUgZm9ybWVyIGRlc2NyaXB0aW9uIHdhcyBhbHJlYWR5Ci0gICBxdWl0ZSBvdXRkYXRlZC4gVGhlIGhpc3Rvcnkgb2YgdGhlIGRyaXZlciBkZXZlbG9wbWVudCBpcyBhbHNvIGtlcHQgaW5zaWRlIAotICAgaGVyZS4gTXVsdGlwbGUgaGlzdG9yaWNhbCBkZXZlbG9wbWVudHMgaGF2ZSBiZWVuIHN1bW1hcml6ZWQgdG8gc2hvcnRlbiB0aGUgCi0gICB0ZXh0c2l6ZSBhIGJpdC4gQXQgdGhlIGVuZCBvZiB0aGlzIGZpbGUgeW91IGNhbiBmaW5kIGEgc21hbGwgbWFudWFsIGZvciAKKyAgIHF1aXRlIG91dGRhdGVkLiBUaGUgaGlzdG9yeSBvZiB0aGUgZHJpdmVyIGRldmVsb3BtZW50IGlzIGFsc28ga2VwdCBpbnNpZGUKKyAgIGhlcmUuIE11bHRpcGxlIGhpc3RvcmljYWwgZGV2ZWxvcG1lbnRzIGhhdmUgYmVlbiBzdW1tYXJpemVkIHRvIHNob3J0ZW4gdGhlCisgICB0ZXh0IHNpemUgYSBiaXQuIEF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlIHlvdSBjYW4gZmluZCBhIHNtYWxsIG1hbnVhbCBmb3IKICAgIHRoaXMgZHJpdmVyIGFuZCBoaW50cyB0byBnZXQgaXQgcnVubmluZyBvbiB5b3VyIG1hY2hpbmUuCiAKICAgIDIgRHJpdmVyIERlc2NyaXB0aW9uCkBAIC0xODYsNyArMTg2LDcgQEAKICAgIGJldHdlZW4gMCBhbmQgNykuIFRoZSBJQk0gU0NTSS0yIEYvVyBhZGFwdGVyIG9mZmVycyB0aGlzIG9uIHVwIHRvIHR3bwogICAgYnVzc2VzIGFuZCBwcm92aWRlcyBzdXBwb3J0IGZvciAzMCBsb2dpY2FsIGRldmljZXMgYXQgdGhlIHNhbWUgdGltZSwgd2hlcmUKICAgIGluIHdpZGUtYWRkcmVzc2luZyBtb2RlIHlvdSBjYW4gaGF2ZSAxNiBwdW5zIHdpdGggMzIgbHVucyBvbiBlYWNoIGRldmljZS4KLSAgIFRoaXMgc2VjdGlvbiBkZXhyaWJlcyB5b3UgdGhlIGhhbmRsaW5nIG9mIGRldmljZXMgb24gbm9uLUYvVyBhZGFwdGVycy4KKyAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGhhbmRsaW5nIG9mIGRldmljZXMgb24gbm9uLUYvVyBhZGFwdGVycy4KICAgIEp1c3QgaW1hZ2luZSwgdGhhdCB5b3UgY2FuIGhhdmUgMTYgKiAzMiA9IDUxMiBkZXZpY2VzIG9uIGEgRi9XIGFkYXB0ZXIKICAgIHdoaWNoIG1lYW5zIGEgbG90IG9mIHBvc3NpYmxlIGRldmljZXMgZm9yIHN1Y2ggYSBzbWFsbCBtYWNoaW5lLgogCkBAIC0yMDksMTAgKzIwOSwxMCBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIE9uZSBjb25zZXF1ZW5jZSBvZiBpbmZvcm1hdGlvbiBoaWRpbmcgaXMgdGhhdCB0aGUgcmVhbCAocHVuLGx1bikgICAgCiAgICBudW1iZXJzIGFyZSBhbHNvIGhpZGRlbi4gVGhlIHR3byBwb3NzaWJpbGl0aWVzIHRvIGdldCBhcm91bmQgdGhpcyBwcm9ibGVtCi0gICBpcyB0byBvZmZlciBmYWtlIHB1bi9sdW4gY29tYmluYXRpb25zIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIHRvIAorICAgYXJlIHRvIG9mZmVyIGZha2UgcHVuL2x1biBjb21iaW5hdGlvbnMgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gb3IgdG8gCiAgICBkZWxldGUgdGhlIHdob2xlIG1hcHBpbmcgb2YgdGhlIGFkYXB0ZXIgYW5kIHRvIHJlYXNzaWduIHRoZSBsZG5zLCB1c2luZwogICAgdGhlIGltbWVkaWF0ZSBhc3NpZ24gY29tbWFuZCBvZiB0aGUgU0NTSS1zdWJzeXN0ZW0gZm9yIHByb2JpbmcgdGhyb3VnaAotICAgYWxsIHBvc3NpYmxlIHB1bi9sdW4gY29tYmluYXRpb25zLiBhIGxkbiBpcyBhICJsb2dpY2FsIGRldmljZSBudW1iZXIiCisgICBhbGwgcG9zc2libGUgcHVuL2x1biBjb21iaW5hdGlvbnMuICBBbiBsZG4gaXMgYSAibG9naWNhbCBkZXZpY2UgbnVtYmVyIgogICAgd2hpY2ggaXMgdXNlZCBieSBJQk0gU0NTSS1zdWJzeXN0ZW1zIHRvIGFjY2VzcyBzb21lIHZhbGlkIFNDU0ktZGV2aWNlLgogICAgQXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBkcml2ZXIsIHRoZSBmb2xsb3dpbmcgYXBwcm9hY2ggCiAgICB3YXMgdXNlZDoKQEAgLTI1MSw5ICsyNTEsOSBAQAogICAgbHVuPjAgb3IgdG8gbm9uLWV4aXN0aW5nIGRldmljZXMsIGluIG9yZGVyIHRvIHNhdGlzZnkgdGhlIHN1YnN5c3RlbSwgaWYgCiAgICB0aGVyZSBhcmUgbGVzcyB0aGFuIDE1IFNDU0ktZGV2aWNlcyBjb25uZWN0ZWQuIEluIHRoZSBjYXNlIG9mIG1vcmUgdGhhbiAxNSAKICAgIGRldmljZXMsIHRoZSBkeW5hbWljYWwgbWFwcGluZyBnb2VzIGFjdGl2ZS4gSWYgdGhlIGdldF9zY3NpW11bXSByZXBvcnRzIGEgCi0gICBkZXZpY2UgdG8gYmUgZXhpc3RhbnQsIGJ1dCBpdCBoYXMgbm8gbGRuIGFzc2lnbmVkLCBpdCBnZXRzIGEgbGRuIG91dCBvZiA3IAotICAgdG8gMTQuIFRoZSBudW1iZXJzIGFyZSBhc3NpZ25lZCBpbiBjeWNsaWMgb3JkZXIuIFRoZXJlZm9yZSBpdCB0YWtlcyA4IAotICAgZHluYW1pY2FsIHJlYXNzaWdubWVudHMgb24gdGhlIFNDU0ktZGV2aWNlcywgdW50aWwgYSBjZXJ0YWluIGRldmljZSAKKyAgIGRldmljZSB0byBiZSBleGlzdGVudCwgYnV0IGl0IGhhcyBubyBsZG4gYXNzaWduZWQsIGl0IGdldHMgYW4gbGRuIG91dCBvZiA3CisgICB0byAxNC4gVGhlIG51bWJlcnMgYXJlIGFzc2lnbmVkIGluIGN5Y2xpYyBvcmRlciwgdGhlcmVmb3JlIGl0IHRha2VzIDggCisgICBkeW5hbWljYWwgcmVhc3NpZ25tZW50cyBvbiB0aGUgU0NTSS1kZXZpY2VzIHVudGlsIGEgY2VydGFpbiBkZXZpY2UgCiAgICBsb3NlcyBpdHMgbGRuIGFnYWluLiBUaGlzIGFzc3VyZXMgdGhhdCBkeW5hbWljYWwgcmVtYXBwaW5nIGlzIGF2b2lkZWQgCiAgICBkdXJpbmcgaW50ZW5zZSBJL08gYmV0d2VlbiB1cCB0byAxNSBTQ1NJLWRldmljZXMgKG1lYW5zIHB1bixsdW4gCiAgICBjb21iaW5hdGlvbnMpLiBBIGZ1cnRoZXIgYWR2YW50YWdlIG9mIHRoaXMgbWV0aG9kIGlzIHRoYXQgcGVvcGxlIHdobwpAQCAtNTUxLDcgKzU1MSw3IEBACiAgICAgICB0aGFuIGRldmljZXMgYXJlIGF2YWlsYWJsZSwgdGhleSBhcmUgYXNzaWduZWQgdG8gbm9uIGV4aXN0aW5nIHB1bixsdW4KICAgICAgIGNvbWJpbmF0aW9ucyB0byBzYXRpc2Z5IHRoZSBhZGFwdGVyLiBXaXRoIHRoaXMsIHRoZSBkeW5hbWljYWwgbWFwcGluZwogICAgICAgd2FzIHBvc3NpYmxlIHRvIGltcGxlbWVudC4gKEZvciBmdXJ0aGVyIGluZm8gc2VlIHRoZSB0ZXh0IGluIHRoZSAKLSAgICAgIHNvdXJjZS1jb2RlIGFuZCBpbiB0aGUgZGVzY3JpcHRpb24gYmVsb3cuIFJlYWQgdGhlIGRlc2NyaXB0aW9uCisgICAgICBzb3VyY2UgY29kZSBhbmQgaW4gdGhlIGRlc2NyaXB0aW9uIGJlbG93LiBSZWFkIHRoZSBkZXNjcmlwdGlvbgogICAgICAgYmVsb3cgQkVGT1JFIGluc3RhbGxpbmcgdGhpcyBkcml2ZXIgb24geW91ciBzeXN0ZW0hKQogICAgMikgQ2hhbmdlZCB0aGUgbmFtZSBJQk1NQ0FfRFJJVkVSX1ZFUlNJT04gdG8gSUJNTUNBX1NDU0lfRFJJVkVSX1ZFUlNJT04uCiAgICAzKSBUaGUgTEVELWRpc3BsYXkgc2hvd3Mgb24gUFMvMi05NSBubyBsb25nZXIgdGhlIGxkbiwgYnV0IHRoZSBTQ1NJLUlECkBAIC03NjIsOSArNzYyLDkgQEAKICAgIC0gTWljaGFlbCBMYW5nCiAKICAgIEFwciAyMywgMjAwMCAodjMuMnByZTEpCi0gICAxKSBEdXJpbmcgYSB2ZXJ5IGxvbmcgdGltZSwgSSBjb2xsZWN0ZWQgYSBodWdlIGFtb3VudCBvZiBidWdyZXBvcnRzIGZyb20KKyAgIDEpIER1cmluZyBhIHZlcnkgbG9uZyB0aW1lLCBJIGNvbGxlY3RlZCBhIGh1Z2UgYW1vdW50IG9mIGJ1ZyByZXBvcnRzIGZyb20KICAgICAgIHZhcmlvdXMgcGVvcGxlLCB0cnlpbmcgcmVhbGx5IHF1aXRlIGRpZmZlcmVudCB0aGluZ3Mgb24gdGhlaXIgU0NTSS0KLSAgICAgIFBTLzJzLiBUb2RheSwgYWxsIHRoZXNlIGJ1Z3JlcG9ydHMgYXJlIHRha2VuIGludG8gYWNjb3VudCBhbmQgc2hvdWxkIGJlCisgICAgICBQUy8ycy4gVG9kYXksIGFsbCB0aGVzZSBidWcgcmVwb3J0cyBhcmUgdGFrZW4gaW50byBhY2NvdW50IGFuZCBzaG91bGQgYmUKICAgICAgIG1vc3RseSBzb2x2ZWQuIFRoZSBtYWpvciB0b3BpY3Mgd2VyZToKICAgICAgIC0gRHJpdmVyIGNyYXNoZXMgZHVyaW5nIGJvb3R0aW1lIGJ5IG5vIG9idmlvdXMgcmVhc29uLgogICAgICAgLSBEcml2ZXIgcGFuaWNzIHdoaWxlIHRoZSBtaWRsZXZlbC1TQ1NJLWRyaXZlciBpcyB0cnlpbmcgdG8gaW5xdWlyZQpAQCAtODE5LDcgKzgxOSw3IEBACiAgICAtIE1pY2hhZWwgTGFuZwogICAgCiAgICBKdWx5IDE3LCAyMDAwICh2My4ycHJlOCkKLSAgIEEgbG9uZyBwZXJpb2Qgb2YgY29sbGVjdGluZyBidWdyZXBvcnRzIGZyb20gYWxsIGNvcm5lcnMgb2YgdGhlIHdvcmxkCisgICBBIGxvbmcgcGVyaW9kIG9mIGNvbGxlY3RpbmcgYnVnIHJlcG9ydHMgZnJvbSBhbGwgY29ybmVycyBvZiB0aGUgd29ybGQKICAgIG5vdyBsZWFkIHRvIHRoZSBmb2xsb3dpbmcgY29ycmVjdGlvbnMgdG8gdGhlIGNvZGU6CiAgICAxKSBTQ1NJLTIgRi9XIHN1cHBvcnQgY3Jhc2hlZCB3aXRoIGEgQ09NTUFORCBFUlJPUi4gVGhlIHJlYXNvbiBmb3IgdGhpcyAKICAgICAgIHdhcyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGRpc2FibGUgRmFzdC1TQ1NJIGZvciB0aGUgZXh0ZXJuYWwgYnVzLgpAQCAtODczLDcgKzg3Myw3IEBACiAgICBKdWx5IDI2LCAyMDAwICh2My4ycHJlMTEpCiAgICAxKSBJIHBhc3NlZCBhIGhvcnJpYmxlIHdlZWtlbmQgZ2V0dGluZyBtYWQgd2l0aCBOTUlzIG9uIGtlcm5lbCAyLjIuMTQgYW5kCiAgICAgICBhIG1vZGVsIDk1OTUuIEFza2luZyBhcm91bmQgaW4gdGhlIGNvbW11bml0eSwgbm9ib2R5IGV4Y2VwdCBvZiBtZSBoYXMKLSAgICAgIHNlZW4gc3VjaCBlcnJvcnMuIFdlaXJlZCwgYnV0IEkgYW0gdHJ5aW5nIHRvIHJlY29tcGlsZSBldmVyeXRoaW5nIG9uCisgICAgICBzZWVuIHN1Y2ggZXJyb3JzLiBXZWlyZCwgYnV0IEkgYW0gdHJ5aW5nIHRvIHJlY29tcGlsZSBldmVyeXRoaW5nIG9uCiAgICAgICB0aGUgbW9kZWwgOTU5NS4gTWF5YmUsIGFzIEkgdXNlIGEgc3BlY2lhbGx5IG1vZGlmaWVkIGdjYywgdGhhdCBjb3VsZAogICAgICAgY2F1c2UgcHJvYmxlbXMuIEJ1dCwgaXQgd2FzIG5vdCB0aGUgcmVhc29uLiBUaGUgdHJ1ZSBiYWNrZ3JvdW5kIHdhcywKICAgICAgIHRoYXQgdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQgZm9yIGkzODYgYW5kIHRoZSA5NTk1IGhhcyBhIDQ4NkRYLTIuIApAQCAtODg2LDcgKzg4Niw3IEBACiAgICAgICBhbGl2ZSByb3RhdG9yIGR1cmluZyBib290dGltZS4gVGhpcyBtYWtlcyBzZW5zZSwgd2hlbiBubyBtb25pdG9yIGlzIAogICAgICAgY29ubmVjdGVkIHRvIHRoZSBzeXN0ZW0uIFlvdSBjYW4gZ2V0IHJpZCBvZiBhbGwgZGlzcGxheSBhY3Rpdml0eSwgaWYKICAgICAgIHlvdSBkbyBub3QgdXNlIGFueSBwYXJhbWV0ZXIgb3IganVzdCBpYm1tY2FzY3NpPWFjdGl2aXR5LCBmb3IgdGhlIAotICAgICAgaGFyZGRyaXZlIGFjdGl2aXR5IExFRCwgZXhpc3RhbnQgb24gYWxsIFBTLzIsIGV4Y2VwdCBtb2RlbHMgODU5NS1YWFguCisgICAgICBoYXJkZHJpdmUgYWN0aXZpdHkgTEVELCBleGlzdGVudCBvbiBhbGwgUFMvMiwgZXhjZXB0IG1vZGVscyA4NTk1LVhYWC4KICAgICAgIElmIG5vIG1vbml0b3IgaXMgYXZhaWxhYmxlLCBwbGVhc2UgdXNlIGlibW1jYXNjc2k9ZGlzcGxheSwgd2hpY2ggd29ya3MKICAgICAgIGZpbmUgdG9nZXRoZXIgd2l0aCB0aGUgbGludXhpbmZvIHV0aWxpdHkgZm9yIHRoZSBMRUQtcGFuZWwuCiAgICAtIE1pY2hhZWwgTGFuZwpAQCAtMTExNSw3ICsxMTE1LDcgQEAKICAgICAgICAgSWYgdGhpcyByZWFsbHkgaGFwcGVucywgZG8gYWxzbyBzZW5kIGUtbWFpbCB0byB0aGUgbWFpbnRhaW5lciwgYXMKIAlmb3JjZWQgZGV0ZWN0aW9uIHNob3VsZCBiZSBuZXZlciBuZWNlc3NhcnkuIEZvcmNlZCBkZXRlY3Rpb24gaXMgaW4KIAlwcmluY2lwYWwgc29tZSBmbGF3IG9mIHRoZSBkcml2ZXIgYWRhcHRlciBkZXRlY3Rpb24gYW5kIGdvZXMgaW50byAKLQlidWdyZXBvcnRzLgorCWJ1ZyByZXBvcnRzLgogICAgICBROiBUaGUgZHJpdmVyIHNjcmV3cyB1cCwgaWYgaXQgc3RhcnRzIHRvIHByb2JlIFNDU0ktZGV2aWNlcywgaXMgdGhlcmUKICAgICAgICAgc29tZSB3YXkgb3V0IG9mIGl0PwogICAgICBBOiBZZXMsIHRoYXQgd2FzIHNvbWUgcmVjb2duaXRpb24gcHJvYmxlbSBvZiB0aGUgY29ycmVjdCBTQ1NJLWFkYXB0ZXIKQEAgLTExNzIsNyArMTE3Miw3IEBACiAJcmVjb21tZW5kZWQgdmVyc2lvbiBpcyAzLjIgb3IgbGF0ZXIuIEhlcmUsIHRoZSBGL1cgc3VwcG9ydCBpcyBpbgogCWEgc3RhYmxlIGFuZCByZWxpYWJsZSBjb25kaXRpb24uIFdpZGUtYWRkcmVzc2luZyBpcyBpbiBhZGRpdGlvbiAKIAlzdXBwb3J0ZWQuCi0gICAgIFE6IEkgZ2V0IGEgT29vcHMgbWVzc2FnZSBhbmQgc29tZXRoaW5nIGxpa2UgImtpbGxpbmcgaW50ZXJydXB0Ii4KKyAgICAgUTogSSBnZXQgYW4gT29wcyBtZXNzYWdlIGFuZCBzb21ldGhpbmcgbGlrZSAia2lsbGluZyBpbnRlcnJ1cHQiLgogICAgICBBOiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlIElCTSBTQ1NJLXN1YnN5c3RlbSBvbmx5IHNlbmRzIGEgCiAgICAgICAgIHRlcm1pbmF0aW9uIHN0YXR1cyBiYWNrLCBpZiBzb21lIGVycm9yIGFwcGVhcmVkLiBJbiBmb3JtZXIgcmVsZWFzZXMKIAlvZiB0aGUgZHJpdmVyLCBpdCB3YXMgbm90IGNoZWNrZWQsIGlmIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgYmxvY2sKQEAgLTEyMTMsMjEgKzEyMTMsMjEgQEAKIAlwcm9ibGVtLiBOb3QgeWV0IHRyaWVkLCBidXQgZ3Vlc3NpbmcgdGhhdCBpdCBjb3VsZCB3b3JrLiBUbyBnZXQgdGhpcywKIAlzZXQgdW5jaGVja2VkX2lzYV9kbWEgYXJndW1lbnQgb2YgaWJtbWNhLmggZnJvbSAwIHRvIDEuCiAKLSAgIDUuMyBCdWdyZXBvcnRzCisgICA1LjMgQnVnIHJlcG9ydHMKICAgIC0tLS0tLS0tLS0tLS0tCi0gICBJZiB5b3UgcmVhbGx5IGZpbmQgYnVncyBpbiB0aGUgc291cmNlY29kZSBvciB0aGUgZHJpdmVyIHdpbGwgc3VjY2Vzc2Z1bGx5CisgICBJZiB5b3UgcmVhbGx5IGZpbmQgYnVncyBpbiB0aGUgc291cmNlIGNvZGUgb3IgdGhlIGRyaXZlciB3aWxsIHN1Y2Nlc3NmdWxseQogICAgcmVmdXNlIHRvIHdvcmsgb24geW91ciBtYWNoaW5lLCB5b3Ugc2hvdWxkIHNlbmQgYSBidWcgcmVwb3J0IHRvIG1lLiBUaGUKICAgIGJlc3QgZm9yIHRoaXMgaXMgdG8gZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgb24gdGhlIFdXVy1wYWdlIGZvciB0aGlzCiAgICBkcml2ZXIuIEZpbGwgb3V0IHRoZSBidWctcmVwb3J0IGZvcm0sIHBsYWNlZCBvbiB0aGUgV1dXLXBhZ2UgYW5kIHNoaXAgaXQsCiAgICBzbyB0aGUgYnVncyBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50IHdpdGggbWF4aW11bSBlZmZvcnRzLiBCdXQsIHBsZWFzZQogICAgZG8gbm90IHNlbmQgYnVnIHJlcG9ydHMgYWJvdXQgdGhpcyBkcml2ZXIgdG8gTGludXMgVG9ydmFsZHMgb3IgTGVvbmFyZAotICAgWnVia29mZiwgYXMgTGludXMgaXMgYnVycmllZCBpbiBFLU1haWwgYW5kIExlb25hcmQgaXMgc3VwZXJ2aXNpbmcgYWxsCisgICBadWJrb2ZmLCBhcyBMaW51cyBpcyBidXJpZWQgaW4gRS1NYWlsIGFuZCBMZW9uYXJkIGlzIHN1cGVydmlzaW5nIGFsbAogICAgU0NTSS1kcml2ZXJzIGFuZCB3b24ndCBoYXZlIHRoZSB0aW1lIGxlZnQgdG8gbG9vayBpbnNpZGUgZXZlcnkgc2luZ2xlCiAgICBkcml2ZXIgdG8gZml4IGEgYnVnIGFuZCBlc3BlY2lhbGx5IERPIE5PVCBzZW5kIG1vZGlmaWVkIGNvZGUgdG8gTGludXMKICAgIFRvcnZhbGRzIG9yIEFsYW4gSi4gQ294IHdoaWNoIGhhcyBub3QgYmVlbiBjaGVja2VkIGhlcmUhISEgVGhleSBhcmUgYm90aAotICAgcXVpdGUgYnVycmllZCBpbiBFLW1haWwgKGFzIG1lLCBzb21ldGltZXMsIHRvbykgYW5kIG9uZSBzaG91bGQgZmlyc3QgY2hlY2sKKyAgIHF1aXRlIGJ1cmllZCBpbiBFLW1haWwgKGFzIG1lLCBzb21ldGltZXMsIHRvbykgYW5kIG9uZSBzaG91bGQgZmlyc3QgY2hlY2sKICAgIGZvciBwcm9ibGVtcyBvbiBteSBsb2NhbCB0ZXN0c3RhbmQuIFJlY2VudGx5LCBJIGdvdCBhIGxvdCBvZiAKLSAgIGJ1Z3JlcG9ydHMgZm9yIGVycm9ycyBpbiB0aGUgaWJtbWNhLmMgY29kZSwgd2hpY2ggSSBjb3VsZCBub3QgaW1hZ2luZSwgYnV0CisgICBidWcgcmVwb3J0cyBmb3IgZXJyb3JzIGluIHRoZSBpYm1tY2EuYyBjb2RlLCB3aGljaCBJIGNvdWxkIG5vdCBpbWFnaW5lLCBidXQKICAgIGEgbG9vayBpbnNpZGUgc29tZSBMaW51eC1kaXN0cmlidXRpb24gc2hvd2VkIG1lIHF1aXRlIG9mdGVuIHNvbWUgbW9kaWZpZWQKICAgIGNvZGUsIHdoaWNoIGRpZCBubyBsb25nZXIgd29yayBvbiBtb3N0IG90aGVyIG1hY2hpbmVzIHRoYW4gdGhlIG9uZSBvZiB0aGUKICAgIG1vZGlmaWVyLiBPaywgc28gbm93IHRoYXQgdGhlcmUgaXMgbWFpbnRlbmFuY2Ugc2VydmljZSBhdmFpbGFibGUgZm9yIHRoaXMKQEAgLTEyNjEsNyArMTI2MSw3IEBACiAgICBzb21lIGUtbWFpbCBkaXJlY3RseSwgYnV0IGF0IGxlYXN0IHdpdGggdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgcmVxdWlyZWQgYnkKICAgIHRoZSBmb3JtdWxhci4KICAgIAotICAgSWYgeW91IGhhdmUgZXh0ZW5zaXZlIGJ1Z3JlcG9ydHMsIGluY2x1ZGluZyBPb29wcyBtZXNzYWdlcyBhbmQgCisgICBJZiB5b3UgaGF2ZSBleHRlbnNpdmUgYnVnIHJlcG9ydHMsIGluY2x1ZGluZyBPb3BzIG1lc3NhZ2VzIGFuZAogICAgc2NyZWVuLXNob3RzLCBwbGVhc2UgZmVlbCBmcmVlIHRvIHNlbmQgaXQgZGlyZWN0bHkgdG8gdGhlIGFkZHJlc3MKICAgIG9mIHRoZSBtYWludGFpbmVyLCB0b28uIFRoZSBjdXJyZW50IGFkZHJlc3Mgb2YgdGhlIG1haW50YWluZXIgaXM6CiAgICAKQEAgLTEzMTgsNyArMTMxOCw3IEBACiAJCWRldGFpbGVkIGJ1ZyByZXBvcnRzIGFuZCBpZGVhcyBmb3IgdGhpcyBkcml2ZXIgKGFuZCBoaXMgCiAJCXBhdGllbmNlIDstKSkuCiAgICBBbGFuIEouIENveCAgCi0gICAgICAgICAgICAgICAgZm9yIGhpcyBidWdyZXBvcnRzIGFuZCBoaXMgYm9sZCBhY3Rpdml0aWVzIGluIGNyb3NzLWNoZWNraW5nCisgICAgICAgICAgICAgICAgZm9yIGhpcyBidWcgcmVwb3J0cyBhbmQgaGlzIGJvbGQgYWN0aXZpdGllcyBpbiBjcm9zcy1jaGVja2luZwogCQl0aGUgZHJpdmVyLWNvZGUgd2l0aCBoaXMgdGVzdHN0YW5kLgogCQkKICAgIDcuMiBTcG9uc29ycyAmIFN1cHBvcnRlcnMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2hhcmVkc3VidHJlZS50eHQgYi9Eb2N1bWVudGF0aW9uL3NoYXJlZHN1YnRyZWUudHh0CmluZGV4IGNjZjFjZWIuLjczNjU0MDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2hhcmVkc3VidHJlZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zaGFyZWRzdWJ0cmVlLnR4dApAQCAtMTUzLDYgKzE1Myw3IEBACiAJI2luY2x1ZGUgPHN0ZGlvLmg+CiAJI2luY2x1ZGUgPHN0ZGxpYi5oPgogCSNpbmNsdWRlIDx1bmlzdGQuaD4KKwkjaW5jbHVkZSA8c3RyaW5nLmg+CiAJI2luY2x1ZGUgPHN5cy9tb3VudC5oPgogCSNpbmNsdWRlIDxzeXMvZnN1aWQuaD4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9EQUkudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9EQUkudHh0CmluZGV4IDU4Y2JmZDAuLjNmZWViOWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvREFJLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL0RBSS50eHQKQEAgLTIwLDEyICsyMCwxMiBAQAogPT09CiAKICBJMlMgaXMgYSBjb21tb24gNCB3aXJlIERBSSB1c2VkIGluIEhpRmksIFNUQiBhbmQgcG9ydGFibGUgZGV2aWNlcy4gVGhlIFR4IGFuZAotUnggbGluZXMgYXJlIHVzZWQgZm9yIGF1ZGlvIHRyYW5zbWlzaW9uLCB3aGlsc3QgdGhlIGJpdCBjbG9jayAoQkNMSykgYW5kCitSeCBsaW5lcyBhcmUgdXNlZCBmb3IgYXVkaW8gdHJhbnNtaXNzaW9uLCB3aGlsc3QgdGhlIGJpdCBjbG9jayAoQkNMSykgYW5kCiBsZWZ0L3JpZ2h0IGNsb2NrIChMUkMpIHN5bmNocm9uaXNlIHRoZSBsaW5rLiBJMlMgaXMgZmxleGlibGUgaW4gdGhhdCBlaXRoZXIgdGhlCiBjb250cm9sbGVyIG9yIENPREVDIGNhbiBkcml2ZSAobWFzdGVyKSB0aGUgQkNMSyBhbmQgTFJDIGNsb2NrIGxpbmVzLiBCaXQgY2xvY2sKIHVzdWFsbHkgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgc2FtcGxlIHJhdGUgYW5kIHRoZSBtYXN0ZXIgc3lzdGVtIGNsb2NrCiAoU1lTQ0xLKS4gTFJDTEsgaXMgdGhlIHNhbWUgYXMgdGhlIHNhbXBsZSByYXRlLiBBIGZldyBkZXZpY2VzIHN1cHBvcnQgc2VwYXJhdGUKLUFEQyBhbmQgREFDIExSQ0xLJ3MsIHRoaXMgYWxsb3dzIGZvciBzaW1pbHRhbmlvdXMgY2FwdHVyZSBhbmQgcGxheWJhY2sgYXQKK0FEQyBhbmQgREFDIExSQ0xLJ3MsIHRoaXMgYWxsb3dzIGZvciBzaW11bHRhbmVvdXMgY2FwdHVyZSBhbmQgcGxheWJhY2sgYXQKIGRpZmZlcmVudCBzYW1wbGUgcmF0ZXMuCiAKIEkyUyBoYXMgc2V2ZXJhbCBkaWZmZXJlbnQgb3BlcmF0aW5nIG1vZGVzOi0KQEAgLTQxLDEyICs0MSwxMiBAQAogUENNCiA9PT0KIAotUENNIGlzIGFub3RoZXIgNCB3aXJlIGludGVyZmFjZSwgdmVyeSBzaW1pbGFyIHRvIEkyUywgdGhhdCBjYW4gc3VwcG9ydCBhIG1vcmUKK1BDTSBpcyBhbm90aGVyIDQgd2lyZSBpbnRlcmZhY2UsIHZlcnkgc2ltaWxhciB0byBJMlMsIHdoaWNoIGNhbiBzdXBwb3J0IGEgbW9yZQogZmxleGlibGUgcHJvdG9jb2wuIEl0IGhhcyBiaXQgY2xvY2sgKEJDTEspIGFuZCBzeW5jIChTWU5DKSBsaW5lcyB0aGF0IGFyZSB1c2VkCiB0byBzeW5jaHJvbmlzZSB0aGUgbGluayB3aGlsc3QgdGhlIFR4IGFuZCBSeCBsaW5lcyBhcmUgdXNlZCB0byB0cmFuc21pdCBhbmQKIHJlY2VpdmUgdGhlIGF1ZGlvIGRhdGEuIEJpdCBjbG9jayB1c3VhbGx5IHZhcmllcyBkZXBlbmRpbmcgb24gc2FtcGxlIHJhdGUKIHdoaWxzdCBzeW5jIHJ1bnMgYXQgdGhlIHNhbXBsZSByYXRlLiBQQ00gYWxzbyBzdXBwb3J0cyBUaW1lIERpdmlzaW9uCi1NdWx0aXBsZXhpbmcgKFRETSkgaW4gdGhhdCBzZXZlcmFsIGRldmljZXMgY2FuIHVzZSB0aGUgYnVzIHNpbWlsdGFuaXVvc2x5IChUaGlzCitNdWx0aXBsZXhpbmcgKFRETSkgaW4gdGhhdCBzZXZlcmFsIGRldmljZXMgY2FuIHVzZSB0aGUgYnVzIHNpbXVsdGFuZW91c2x5ICh0aGlzCiBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgbmV0d29yayBtb2RlKS4KIAogQ29tbW9uIFBDTSBvcGVyYXRpbmcgbW9kZXM6LQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9jbG9ja2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2Nsb2NraW5nLnR4dAppbmRleCBlOTM5NjBkLi4xNDkzMDg4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2Nsb2NraW5nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2Nsb2NraW5nLnR4dApAQCAtMiwyMCArMiwyMCBAQAogPT09PT09PT09PT09PT0KIAogVGhpcyB0ZXh0IGRlc2NyaWJlcyB0aGUgYXVkaW8gY2xvY2tpbmcgdGVybXMgaW4gQVNvQyBhbmQgZGlnaXRhbCBhdWRpbyBpbgotZ2VuZXJhbC4gTm90ZTogQXVkaW8gY2xvY2tpbmcgY2FuIGJlIGNvbXBsZXggIQorZ2VuZXJhbC4gTm90ZTogQXVkaW8gY2xvY2tpbmcgY2FuIGJlIGNvbXBsZXghCiAKIAogTWFzdGVyIENsb2NrCiAtLS0tLS0tLS0tLS0KIAotRXZlcnkgYXVkaW8gc3Vic3lzdGVtIGlzIGRyaXZlbiBieSBhIG1hc3RlciBjbG9jayAoc29tZXRpbWVzIHJlZmVyZWQgdG8gYXMgTUNMSworRXZlcnkgYXVkaW8gc3Vic3lzdGVtIGlzIGRyaXZlbiBieSBhIG1hc3RlciBjbG9jayAoc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIE1DTEsKIG9yIFNZU0NMSykuIFRoaXMgYXVkaW8gbWFzdGVyIGNsb2NrIGNhbiBiZSBkZXJpdmVkIGZyb20gYSBudW1iZXIgb2Ygc291cmNlcwogKGUuZy4gY3J5c3RhbCwgUExMLCBDUFUgY2xvY2spIGFuZCBpcyByZXNwb25zaWJsZSBmb3IgcHJvZHVjaW5nIHRoZSBjb3JyZWN0CiBhdWRpbyBwbGF5YmFjayBhbmQgY2FwdHVyZSBzYW1wbGUgcmF0ZXMuCiAKLVNvbWUgbWFzdGVyIGNsb2NrcyAoZS5nLiBQTEwncyBhbmQgQ1BVIGJhc2VkIGNsb2NrcykgYXJlIGNvbmZpZ3VhcmJsZSBpbiB0aGF0CitTb21lIG1hc3RlciBjbG9ja3MgKGUuZy4gUExMJ3MgYW5kIENQVSBiYXNlZCBjbG9ja3MpIGFyZSBjb25maWd1cmFibGUgaW4gdGhhdAogdGhlaXIgc3BlZWQgY2FuIGJlIGFsdGVyZWQgYnkgc29mdHdhcmUgKGRlcGVuZGluZyBvbiB0aGUgc3lzdGVtIHVzZSBhbmQgdG8gc2F2ZQotcG93ZXIpLiBPdGhlciBtYXN0ZXIgY2xvY2tzIGFyZSBmaXhlZCBhdCBhdCBzZXQgZnJlcXVlbmN5IChpLmUuIGNyeXN0YWxzKS4KK3Bvd2VyKS4gT3RoZXIgbWFzdGVyIGNsb2NrcyBhcmUgZml4ZWQgYXQgYSBzZXQgZnJlcXVlbmN5IChpLmUuIGNyeXN0YWxzKS4KIAogCiBEQUkgQ2xvY2tzCkBAIC00NCw3ICs0NCw3IEBACiBpdCdzIGJlc3QgdG8gY29uZmlndXJlIEJDTEsgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSBzcGVlZCAoZGVwZW5kaW5nIG9uIHlvdXIKIHJhdGUsIG51bWJlciBvZiBjaGFubmVscyBhbmQgd29yZHNpemUpIHRvIHNhdmUgb24gcG93ZXIuCiAKLUl0J3MgYWxzbyBkZXNpcmVhYmxlIHRvIHVzZSB0aGUgY29kZWMgKGlmIHBvc3NpYmxlKSB0byBkcml2ZSAob3IgbWFzdGVyKSB0aGUKK0l0J3MgYWxzbyBkZXNpcmFibGUgdG8gdXNlIHRoZSBjb2RlYyAoaWYgcG9zc2libGUpIHRvIGRyaXZlIChvciBtYXN0ZXIpIHRoZQogYXVkaW8gY2xvY2tzIGFzIGl0J3MgdXN1YWxseSBnaXZlcyBtb3JlIGFjY3VyYXRlIHNhbXBsZSByYXRlcyB0aGFuIHRoZSBDUFUuCiAKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9jb2RlYy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2NvZGVjLnR4dAppbmRleCA0ODk4M2M3Li4xZTc2NmFkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2NvZGVjLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2NvZGVjLnR4dApAQCAtMTksNyArMTksNyBAQAogIDYpIERBUE0gZXZlbnQgaGFuZGxlci4KICA3KSBEQUMgRGlnaXRhbCBtdXRlIGNvbnRyb2wuCiAKLUl0J3MgcHJvYmFibHkgYmVzdCB0byB1c2UgdGhpcyBndWlkZSBpbiBjb25qdWN0aW9uIHdpdGggdGhlIGV4aXN0aW5nIGNvZGVjCitJdCdzIHByb2JhYmx5IGJlc3QgdG8gdXNlIHRoaXMgZ3VpZGUgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgZXhpc3RpbmcgY29kZWMKIGRyaXZlciBjb2RlIGluIHNvdW5kL3NvYy9jb2RlY3MvCiAKIEFTb0MgQ29kZWMgZHJpdmVyIGJyZWFrZG93bgpAQCAtMjgsNyArMjgsNyBAQAogMSAtIENvZGVjIERBSSBhbmQgUENNIGNvbmZpZ3VyYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBFYWNoIGNvZGVjIGRyaXZlciBtdXN0IGhhdmUgYSBzdHJ1Y3Qgc25kX3NvY19jb2RlY19kYWkgdG8gZGVmaW5lIGl0J3MgREFJIGFuZAotUENNJ3MgY2FwYWJsaXRpZXMgYW5kIG9wZXJhdGlvbnMuIFRoaXMgc3RydWN0IGlzIGV4cG9ydGVkIHNvIHRoYXQgaXQgY2FuIGJlCitQQ00ncyBjYXBhYmlsaXRpZXMgYW5kIG9wZXJhdGlvbnMuIFRoaXMgc3RydWN0IGlzIGV4cG9ydGVkIHNvIHRoYXQgaXQgY2FuIGJlCiByZWdpc3RlcmVkIHdpdGggdGhlIGNvcmUgYnkgeW91ciBtYWNoaW5lIGRyaXZlci4KIAogZS5nLgpAQCAtNjcsNyArNjcsNyBAQAogCiAyIC0gQ29kZWMgY29udHJvbCBJTwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoZSBjb2RlYyBjYW4gdXN1c2FsbHkgYmUgY29udHJvbGxlZCB2aWEgYW4gSTJDIG9yIFNQSSBzdHlsZSBpbnRlcmZhY2UgKEFDOTcKK1RoZSBjb2RlYyBjYW4gdXN1YWxseSBiZSBjb250cm9sbGVkIHZpYSBhbiBJMkMgb3IgU1BJIHN0eWxlIGludGVyZmFjZSAoQUM5NwogY29tYmluZXMgY29udHJvbCB3aXRoIGRhdGEgaW4gdGhlIERBSSkuIFRoZSBjb2RlYyBkcml2ZXJzIHdpbGwgaGF2ZSB0byBwcm92aWRlCiBmdW5jdGlvbnMgdG8gcmVhZCBhbmQgd3JpdGUgdGhlIGNvZGVjIHJlZ2lzdGVycyBhbG9uZyB3aXRoIHN1cHBseWluZyBhIHJlZ2lzdGVyCiBjYWNoZTotCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2RhcG0udHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9kYXBtLnR4dAppbmRleCBjMTE4NzdmLi5hYjA3NjZmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2RhcG0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvZGFwbS50eHQKQEAgLTExLDcgKzExLDcgQEAKIAogREFQTSBpcyBhbHNvIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgdG8gYWxsIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zIGFzIGFsbCBwb3dlcgogc3dpdGNoaW5nIGlzIGRvbmUgd2l0aGluIHRoZSBBU29DIGNvcmUuIE5vIGNvZGUgY2hhbmdlcyBvciByZWNvbXBpbGluZyBhcmUKLXJlcXVpcmVkIGZvciB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucy4gREFQTSBtYWtlcyBwb3dlciBzd2l0Y2hpbmcgZGVzY2lzaW9ucyBiYXNlZAorcmVxdWlyZWQgZm9yIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zLiBEQVBNIG1ha2VzIHBvd2VyIHN3aXRjaGluZyBkZWNpc2lvbnMgYmFzZWQKIHVwb24gYW55IGF1ZGlvIHN0cmVhbSAoY2FwdHVyZS9wbGF5YmFjaykgYWN0aXZpdHkgYW5kIGF1ZGlvIG1peGVyIHNldHRpbmdzCiB3aXRoaW4gdGhlIGRldmljZS4KIApAQCAtMzgsNyArMzgsNyBAQAogICAgICAgRW5hYmxlZCBhbmQgZGlzYWJsZWQgd2hlbiBzdHJlYW0gcGxheWJhY2svY2FwdHVyZSBpcyBzdGFydGVkIGFuZAogICAgICAgc3RvcHBlZCByZXNwZWN0aXZlbHkuIGUuZy4gYXBsYXksIGFyZWNvcmQuCiAKLUFsbCBEQVBNIHBvd2VyIHN3aXRjaGluZyBkZXNjaXNvbnMgYXJlIG1hZGUgYXV0b21hdGljYWxseSBieSBjb25zdWx0aW5nIGFuIGF1ZGlvCitBbGwgREFQTSBwb3dlciBzd2l0Y2hpbmcgZGVjaXNpb25zIGFyZSBtYWRlIGF1dG9tYXRpY2FsbHkgYnkgY29uc3VsdGluZyBhbiBhdWRpbwogcm91dGluZyBtYXAgb2YgdGhlIHdob2xlIG1hY2hpbmUuIFRoaXMgbWFwIGlzIHNwZWNpZmljIHRvIGVhY2ggbWFjaGluZSBhbmQKIGNvbnNpc3RzIG9mIHRoZSBpbnRlcmNvbm5lY3Rpb25zIGJldHdlZW4gZXZlcnkgYXVkaW8gY29tcG9uZW50IChpbmNsdWRpbmcKIGludGVybmFsIGNvZGVjIGNvbXBvbmVudHMpLiBBbGwgYXVkaW8gY29tcG9uZW50cyB0aGF0IGVmZmVjdCBwb3dlciBhcmUgY2FsbGVkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL292ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2Mvb3ZlcnZpZXcudHh0CmluZGV4IDc1M2M1Y2MuLmM0N2NlOTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2Mvb3ZlcnZpZXcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2Mvb3ZlcnZpZXcudHh0CkBAIC0yLDE4ICsyLDE5IEBACiA9PT09PT09PT09PT09PQogCiBUaGUgb3ZlcmFsbCBwcm9qZWN0IGdvYWwgb2YgdGhlIEFMU0EgU3lzdGVtIG9uIENoaXAgKEFTb0MpIGxheWVyIGlzIHRvIHByb3ZpZGUKLWJldHRlciBBTFNBIHN1cHBvcnQgZm9yIGVtYmVkZGVkIHN5c3RlbSBvbiBjaGlwIHByb2Nlc29ycyAoZS5nLiBweGEyeHgsIGF1MXgwMCwKK2JldHRlciBBTFNBIHN1cHBvcnQgZm9yIGVtYmVkZGVkIHN5c3RlbS1vbi1jaGlwIHByb2Nlc3NvcnMgKGUuZy4gcHhhMnh4LCBhdTF4MDAsCiBpTVgsIGV0YykgYW5kIHBvcnRhYmxlIGF1ZGlvIGNvZGVjcy4gQ3VycmVudGx5IHRoZXJlIGlzIHNvbWUgc3VwcG9ydCBpbiB0aGUKIGtlcm5lbCBmb3IgU29DIGF1ZGlvLCBob3dldmVyIGl0IGhhcyBzb21lIGxpbWl0YXRpb25zOi0KIAogICAqIEN1cnJlbnRseSwgY29kZWMgZHJpdmVycyBhcmUgb2Z0ZW4gdGlnaHRseSBjb3VwbGVkIHRvIHRoZSB1bmRlcmx5aW5nIFNvQwotICAgIGNwdS4gVGhpcyBpcyBub3QgaWRlYWwgYW5kIGxlYWRzIHRvIGNvZGUgZHVwbGljYXRpb24gaS5lLiBMaW51eCBub3cgaGFzIDQKKyAgICBDUFUuIFRoaXMgaXMgbm90IGlkZWFsIGFuZCBsZWFkcyB0byBjb2RlIGR1cGxpY2F0aW9uIGkuZS4gTGludXggbm93IGhhcyA0CiAgICAgZGlmZmVyZW50IHdtODczMSBkcml2ZXJzIGZvciA0IGRpZmZlcmVudCBTb0MgcGxhdGZvcm1zLgogCi0gICogVGhlcmUgaXMgbm8gc3RhbmRhcmQgbWV0aG9kIHRvIHNpZ25hbCB1c2VyIGluaXRpYXRlZCBhdWRpbyBldmVudHMuCi0gICAgZS5nLiBIZWFkcGhvbmUvTWljIGluc2VydGlvbiwgSGVhZHBob25lL01pYyBkZXRlY3Rpb24gYWZ0ZXIgYW4gaW5zZXJ0aW9uCi0gICAgZXZlbnQuIFRoZXNlIGFyZSBxdWl0ZSBjb21tb24gZXZlbnRzIG9uIHBvcnRhYmxlIGRldmljZXMgYW5kIG9mdGVyIHJlcXVpcmUKLSAgICBtYWNoaW5lIHNwZWNpZmljIGNvZGUgdG8gcmUgcm91dGUgYXVkaW8sIGVuYWJsZSBhbXBzIGV0YyBhZnRlciBzdWNoIGFuIGV2ZW50LgorICAqIFRoZXJlIGlzIG5vIHN0YW5kYXJkIG1ldGhvZCB0byBzaWduYWwgdXNlciBpbml0aWF0ZWQgYXVkaW8gZXZlbnRzIChlLmcuCisgICAgSGVhZHBob25lL01pYyBpbnNlcnRpb24sIEhlYWRwaG9uZS9NaWMgZGV0ZWN0aW9uIGFmdGVyIGFuIGluc2VydGlvbgorICAgIGV2ZW50KS4gVGhlc2UgYXJlIHF1aXRlIGNvbW1vbiBldmVudHMgb24gcG9ydGFibGUgZGV2aWNlcyBhbmQgb2Z0ZW4gcmVxdWlyZQorICAgIG1hY2hpbmUgc3BlY2lmaWMgY29kZSB0byByZS1yb3V0ZSBhdWRpbywgZW5hYmxlIGFtcHMsIGV0Yy4sIGFmdGVyIHN1Y2ggYW4KKyAgICBldmVudC4KIAogICAqIEN1cnJlbnQgZHJpdmVycyB0ZW5kIHRvIHBvd2VyIHVwIHRoZSBlbnRpcmUgY29kZWMgd2hlbiBwbGF5aW5nCiAgICAgKG9yIHJlY29yZGluZykgYXVkaW8uIFRoaXMgaXMgZmluZSBmb3IgYSBQQywgYnV0IHRlbmRzIHRvIHdhc3RlIGEgbG90IG9mCkBAIC00NCw3ICs0NSw3IEBACiAgICAgc2lnbmFscyB0aGUgY29kZWMgd2hlbiB0byBjaGFuZ2UgcG93ZXIgc3RhdGVzLgogCiAgICogTWFjaGluZSBzcGVjaWZpYyBjb250cm9sczogQWxsb3cgbWFjaGluZXMgdG8gYWRkIGNvbnRyb2xzIHRvIHRoZSBzb3VuZCBjYXJkCi0gICAgZS5nLiB2b2x1bWUgY29udHJvbCBmb3Igc3BlYWtlciBhbXAuCisgICAgKGUuZy4gdm9sdW1lIGNvbnRyb2wgZm9yIHNwZWFrZXIgYW1wKS4KIAogVG8gYWNoaWV2ZSBhbGwgdGhpcywgQVNvQyBiYXNpY2FsbHkgc3BsaXRzIGFuIGVtYmVkZGVkIGF1ZGlvIHN5c3RlbSBpbnRvIDMKIGNvbXBvbmVudHMgOi0KQEAgLTU3LDcgKzU4LDcgQEAKICAgICBpbnRlcmZhY2UgZHJpdmVycyAoZS5nLiBJMlMsIEFDOTcsIFBDTSkgZm9yIHRoYXQgcGxhdGZvcm0uCiAKICAgKiBNYWNoaW5lIGRyaXZlcjogVGhlIG1hY2hpbmUgZHJpdmVyIGhhbmRsZXMgYW55IG1hY2hpbmUgc3BlY2lmaWMgY29udHJvbHMgYW5kCi0gICAgYXVkaW8gZXZlbnRzLiBpLmUuIHR1cmluZyBvbiBhbiBhbXAgYXQgc3RhcnQgb2YgcGxheWJhY2suCisgICAgYXVkaW8gZXZlbnRzIChlLmcuIHR1cm5pbmcgb24gYW4gYW1wIGF0IHN0YXJ0IG9mIHBsYXliYWNrKS4KIAogCiBEb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL3BsYXRmb3JtLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvcGxhdGZvcm0udHh0CmluZGV4IGU5NWIxNmQuLmQ0Njc4YjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvcGxhdGZvcm0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvcGxhdGZvcm0udHh0CkBAIC0yMCw3ICsyMCw3IEBACiAJaW50ICgqdHJpZ2dlcikoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICosIGludCk7CiB9OwogCi1UaGUgcGxhdGZvcm0gZHJpdmVyIGV4cG9ydHMgaXQncyBETUEgZnVuY3Rpb25haWx0eSB2aWEgc3RydWN0IHNuZF9zb2NfcGxhdGZvcm06LQorVGhlIHBsYXRmb3JtIGRyaXZlciBleHBvcnRzIGl0cyBETUEgZnVuY3Rpb25hbGl0eSB2aWEgc3RydWN0IHNuZF9zb2NfcGxhdGZvcm06LQogCiBzdHJ1Y3Qgc25kX3NvY19wbGF0Zm9ybSB7CiAJY2hhciAqbmFtZTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvcG9wc19jbGlja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wb3BzX2NsaWNrcy50eHQKaW5kZXggMmNmN2VlNS4uMzM3MWJkOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wb3BzX2NsaWNrcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wb3BzX2NsaWNrcy50eHQKQEAgLTIsNyArMiw3IEBACiA9PT09PT09PT09PT09PT09PT09PT0KIAogUG9wcyBhbmQgY2xpY2tzIGFyZSB1bndhbnRlZCBhdWRpbyBhcnRpZmFjdHMgY2F1c2VkIGJ5IHRoZSBwb3dlcmluZyB1cCBhbmQgZG93bgotb2YgY29tcG9uZW50cyB3aXRoaW4gdGhlIGF1ZGlvIHN1YnN5c3RlbS4gVGhpcyBpcyBub3RpY2FibGUgb24gUEMncyB3aGVuIGFuCitvZiBjb21wb25lbnRzIHdpdGhpbiB0aGUgYXVkaW8gc3Vic3lzdGVtLiBUaGlzIGlzIG5vdGljZWFibGUgb24gUENzIHdoZW4gYW4KIGF1ZGlvIG1vZHVsZSBpcyBlaXRoZXIgbG9hZGVkIG9yIHVubG9hZGVkIChhdCBtb2R1bGUgbG9hZCB0aW1lIHRoZSBzb3VuZCBjYXJkIGlzCiBwb3dlcmVkIHVwIGFuZCBjYXVzZXMgYSBwb3BwaW5nIG5vaXNlIG9uIHRoZSBzcGVha2VycykuCiAKQEAgLTE2LDcgKzE2LDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFBsYXliYWNrIHBvcHMgaW4gcG9ydGFibGUgYXVkaW8gc3Vic3lzdGVtcyBjYW5ub3QgYmUgY29tcGxldGVseSBlbGltaW5hdGVkIGF0bSwKLWhvd2V2ZXIgZnV0dXJlIGF1ZGlvIGNvZGVjIGhhcmR3YXJlIHdpbGwgaGF2ZSBiZXR0ZXIgcG9wIGFuZCBjbGljayBzdXByZXNzaW9uLgoraG93ZXZlciBmdXR1cmUgYXVkaW8gY29kZWMgaGFyZHdhcmUgd2lsbCBoYXZlIGJldHRlciBwb3AgYW5kIGNsaWNrIHN1cHByZXNzaW9uLgogUG9wcyBjYW4gYmUgcmVkdWNlZCB3aXRoaW4gcGxheWJhY2sgYnkgcG93ZXJpbmcgdGhlIGF1ZGlvIGNvbXBvbmVudHMgaW4gYQogc3BlY2lmaWMgb3JkZXIuIFRoaXMgb3JkZXIgaXMgZGlmZmVyZW50IGZvciBzdGFydHVwIGFuZCBzaHV0ZG93biBhbmQgZm9sbG93cwogc29tZSBiYXNpYyBydWxlczotCkBAIC0zMyw3ICszMyw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENhcHR1cmUgYXJ0aWZhY3RzIGFyZSBzb21ld2hhdCBlYXNpZXIgdG8gZ2V0IHJpZCBhcyB3ZSBjYW4gZGVsYXkgYWN0aXZhdGluZyB0aGUKLUFEQyB1bnRpbCBhbGwgdGhlIHBvcHMgaGF2ZSBvY2N1cmVkLiBUaGlzIGZvbGxvd3Mgc2ltaWxhciBwb3dlciBydWxlcyB0bworQURDIHVudGlsIGFsbCB0aGUgcG9wcyBoYXZlIG9jY3VycmVkLiBUaGlzIGZvbGxvd3Mgc2ltaWxhciBwb3dlciBydWxlcyB0bwogcGxheWJhY2sgaW4gdGhhdCBjb21wb25lbnRzIGFyZSBwb3dlcmVkIGluIGEgc2VxdWVuY2UgZGVwZW5kaW5nIHVwb24gc3RyZWFtCiBzdGFydHVwIG9yIHNodXRkb3duLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaS9weGEyeHggYi9Eb2N1bWVudGF0aW9uL3NwaS9weGEyeHgKaW5kZXggMjE1ZTNiOC4uZjM4NTNjYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zcGkvcHhhMnh4CisrKyBiL0RvY3VtZW50YXRpb24vc3BpL3B4YTJ4eApAQCAtMSw0ICsxLDQgQEAKLe+7v1BYQTJ4eCBTUEkgb24gU1NQIGRyaXZlciBIT1dUTworUFhBMnh4IFNQSSBvbiBTU1AgZHJpdmVyIEhPV1RPCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFRoaXMgYSBtaW5pIGhvd3RvIG9uIHRoZSBweGEyeHhfc3BpIGRyaXZlci4gIFRoZSBkcml2ZXIgdHVybnMgYSBQWEEyeHgKIHN5bmNocm9ub3VzIHNlcmlhbCBwb3J0IGludG8gYSBTUEkgbWFzdGVyIGNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGhpbmtwYWQtYWNwaS50eHQgYi9Eb2N1bWVudGF0aW9uL3RoaW5rcGFkLWFjcGkudHh0CmluZGV4IDNiOTViYmEuLmVjNDk5MjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGhpbmtwYWQtYWNwaS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90aGlua3BhZC1hY3BpLnR4dApAQCAtMTAzNSw3ICsxMDM1LDcgQEAKIAogQW4gZW5hYmxlZCBmYW4gaW4gbGV2ZWwgImF1dG8iIG1heSBzdG9wIHNwaW5uaW5nIGlmIHRoZSBFQyBkZWNpZGVzIHRoZQogVGhpbmtQYWQgaXMgY29vbCBlbm91Z2ggYW5kIGRvZXNuJ3QgbmVlZCB0aGUgZXh0cmEgYWlyZmxvdy4gIFRoaXMgaXMKLW5vcm1hbCwgYW5kIHRoZSBFQyB3aWxsIHNwaW4gdGhlIGZhbiB1cCBpZiB0aGUgdmFyaW9zIHRoZXJtYWwgcmVhZGluZ3MKK25vcm1hbCwgYW5kIHRoZSBFQyB3aWxsIHNwaW4gdGhlIGZhbiB1cCBpZiB0aGUgdmFyaW91cyB0aGVybWFsIHJlYWRpbmdzCiByaXNlIHRvbyBtdWNoLgogCiBPbiB0aGUgWDQwLCB0aGlzIHNlZW1zIHRvIGRlcGVuZCBvbiB0aGUgQ1BVIGFuZCBIREQgdGVtcGVyYXR1cmVzLgpAQCAtMTIwMyw3ICsxMjAzLDcgQEAKIEVuYWJsaW5nIGRlYnVnZ2luZyBvdXRwdXQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIG1vZHVsZSB0YWtlcyBhIGRlYnVnIHBhcmFtYXRlciB3aGljaCBjYW4gYmUgdXNlZCB0byBzZWxlY3RpdmVseQorVGhlIG1vZHVsZSB0YWtlcyBhIGRlYnVnIHBhcmFtZXRlciB3aGljaCBjYW4gYmUgdXNlZCB0byBzZWxlY3RpdmVseQogZW5hYmxlIHZhcmlvdXMgY2xhc3NlcyBvZiBkZWJ1Z2dpbmcgb3V0cHV0LCBmb3IgZXhhbXBsZToKIAogCSBtb2Rwcm9iZSBpYm1fYWNwaSBkZWJ1Zz0weGZmZmYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvdXNiLXNlcmlhbC50eHQKaW5kZXggNGUwYjYyYi4uOGIwNzdlNDMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0CkBAIC0zMzgsNyArMzM4LDcgQEAKICAgVGhpcyBkcml2ZXIgaXMgZm9yIHRoZSBNQ1QgVVNCLVJTMjMyIENvbnZlcnRlciAoMjUgcGluLCBNb2RlbCBOby4KICAgVTIzMi1QMjUpIGZyb20gTWFnaWMgQ29udHJvbCBUZWNobm9sb2d5IENvcnAuICh0aGVyZSBpcyBhbHNvIGEgOSBwaW4KICAgTW9kZWwgTm8uIFUyMzItUDkpLiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZGV2aWNlIGNhbiBiZSBmb3VuZCBhdAotICB0aGUgbWFudWZhY3R1cmUncyB3ZWItc2l0ZTogaHR0cDovL3d3dy5tY3QuY29tLnR3LgorICB0aGUgbWFudWZhY3R1cmVyJ3Mgd2ViLXNpdGU6IGh0dHA6Ly93d3cubWN0LmNvbS50dy4KIAogICBUaGUgZHJpdmVyIGlzIGdlbmVyYWxseSB3b3JraW5nLCB0aG91Z2ggaXQgc3RpbGwgbmVlZHMgc29tZSBtb3JlIHRlc3RpbmcuCiAgIEl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgQmVsa2luIFVTQiBTZXJpYWwgQWRhcHRlciBGNVUxMDMgZHJpdmVyIGFuZCBpdHMKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL2Vycl9tYXJ2ZWwuYyBiL2FyY2gvYWxwaGEva2VybmVsL2Vycl9tYXJ2ZWwuYwppbmRleCBmMjk1NmFjLi40OTc4NzdiIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9lcnJfbWFydmVsLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvZXJyX21hcnZlbC5jCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCX0JCiAKIAkvKgotCSAqIEEgc3lzdGVtIGV2ZW50IG9yIGVycm9yIGhhcyBvY2N1cmVkLCBoYW5kbGUgaXQgaGVyZS4KKwkgKiBBIHN5c3RlbSBldmVudCBvciBlcnJvciBoYXMgb2NjdXJyZWQsIGhhbmRsZSBpdCBoZXJlLgogCSAqCiAJICogQW55IGVycm9ycyBpbiB0aGUgbG9nb3V0IGZyYW1lIGhhdmUgYWxyZWFkeSBiZWVuIGNsZWFyZWQgYnkgdGhlCiAJICogUEFMY29kZSwgc28ganVzdCBwYXJzZSBpdC4KZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL2Vycl90aXRhbi5jIGIvYXJjaC9hbHBoYS9rZXJuZWwvZXJyX3RpdGFuLmMKaW5kZXggNTQzZDk2ZC4uNmYzODY3OCAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9rZXJuZWwvZXJyX3RpdGFuLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvZXJyX3RpdGFuLmMKQEAgLTU5MSw3ICs1OTEsNyBAQAogCQkoc3RydWN0IGVsX1BSSVZBVEVFUl9lbnZkYXRhX21jaGVjayAqKQogCQkoKHVuc2lnbmVkIGxvbmcpbWNoa19oZWFkZXIgKyBtY2hrX2hlYWRlci0+c3lzX29mZnNldCk7CiAKLQkvKiBUT0RPIC0gY2F0YWdvcml6ZSBlcnJvcnMsIGZvciBub3csIG5vIGVycm9yICovCisJLyogVE9ETyAtIGNhdGVnb3JpemUgZXJyb3JzLCBmb3Igbm93LCBubyBlcnJvciAqLwogCiAJaWYgKCFwcmludCkKIAkJcmV0dXJuIHN0YXR1czsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL29zZl9zeXMuYyBiL2FyY2gvYWxwaGEva2VybmVsL29zZl9zeXMuYwppbmRleCBjZTg1NzE1Li42NDEzYzVmIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9vc2Zfc3lzLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvb3NmX3N5cy5jCkBAIC03MTUsNyArNzE1LDcgQEAKIAkJLyogCiAJCSAqIEFscGhhIEFyY2hpdGVjdHVyZSBIYW5kYm9vayA0LjcuNy4zOgogCQkgKiBUbyBiZSBmdWxseSBJRUVFIGNvbXBpYW50LCB3ZSBtdXN0IHRyYWNrIHRoZSBjdXJyZW50IElFRUUKLQkJICogZXhjZXB0aW9uIHN0YXRlIGluIHNvZnR3YXJlLCBiZWNhdXNlIHNwdXJyaW91cyBiaXRzIGNhbiBiZQorCQkgKiBleGNlcHRpb24gc3RhdGUgaW4gc29mdHdhcmUsIGJlY2F1c2Ugc3B1cmlvdXMgYml0cyBjYW4gYmUKIAkJICogc2V0IGluIHRoZSB0cmFwIHNoYWRvdyBvZiBhIHNvZnR3YXJlLWNvbXBsZXRlIGluc24uCiAJCSAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tlcm5lbC9zbXAuYyBiL2FyY2gvYWxwaGEva2VybmVsL3NtcC5jCmluZGV4IGFkMTc2NDQuLmY0YWIyMzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL3NtcC5jCisrKyBiL2FyY2gvYWxwaGEva2VybmVsL3NtcC5jCkBAIC00MzksNyArNDM5LDYgQEAKIAkJCQkoKGNoYXIgKiljcHViYXNlICsgaSpod3JwYi0+cHJvY2Vzc29yX3NpemUpOwogCQkJaWYgKChjcHUtPmZsYWdzICYgMHgxY2MpID09IDB4MWNjKSB7CiAJCQkJc21wX251bV9wcm9iZWQrKzsKLQkJCQkvKiBBc3N1bWUgaGVyZSB0aGF0ICJ3aGFtaSIgPT0gaW5kZXggKi8KIAkJCQljcHVfc2V0KGksIGNwdV9wcmVzZW50X21hcCk7CiAJCQkJY3B1LT5wYWxfcmV2aXNpb24gPSBib290X2NwdV9wYWxyZXY7CiAJCQl9CmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2tlcm5lbC9zeXNfYWxjb3IuYyBiL2FyY2gvYWxwaGEva2VybmVsL3N5c19hbGNvci5jCmluZGV4IDQ5YmVkZmIuLmQxODdkMDEgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL3N5c19hbGNvci5jCisrKyBiL2FyY2gvYWxwaGEva2VybmVsL3N5c19hbGNvci5jCkBAIC0xMzgsNyArMTM4LDcgQEAKIAogCWZvciAoaSA9IDE2OyBpIDwgNDg7ICsraSkgewogCQkvKiBPbiBBbGNvciwgYXQgbGVhc3QsIGxpbmVzIDIwLi4zMCBhcmUgbm90IGNvbm5lY3RlZAotCQkgICBhbmQgY2FuIGdlbmVyYXRlIHNwdXJyaW91cyBpbnRlcnJ1cHRzIGlmIHdlIHR1cm4gdGhlbQorCQkgICBhbmQgY2FuIGdlbmVyYXRlIHNwdXJpb3VzIGludGVycnVwdHMgaWYgd2UgdHVybiB0aGVtCiAJCSAgIG9uIHdoaWxlIElSUSBwcm9iaW5nLiAgKi8KIAkJaWYgKGkgPj0gMTYrMjAgJiYgaSA8PSAxNiszMCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9rZXJuZWwvc3lzX3Npby5jIGIvYXJjaC9hbHBoYS9rZXJuZWwvc3lzX3Npby5jCmluZGV4IDE0YjVhNzUuLmVlN2I5MDAgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL3N5c19zaW8uYworKysgYi9hcmNoL2FscGhhL2tlcm5lbC9zeXNfc2lvLmMKQEAgLTc4LDcgKzc4LDcgQEAKICAqIGV4YW1wbGUsIHNvdW5kIGJvYXJkcyBzZWVtIHRvIGxpa2UgdXNpbmcgSVJRIDkuCiAgKgogICogVGhpcyBpcyBOT1QgaG93IHdlIHNob3VsZCBkbyBpdC4gUElSUTAtWCBzaG91bGQgaGF2ZQotICogdGhlaXIgb3duIElSUSdzLCB0aGUgd2F5IGludGVsIHVzZXMgdGhlIElPLUFQSUMgaXJxJ3MuCisgKiB0aGVpciBvd24gSVJRcywgdGhlIHdheSBpbnRlbCB1c2VzIHRoZSBJTy1BUElDIElSUXMuCiAgKi8KIAogc3RhdGljIHZvaWQgX19pbml0CmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2xpYi9jaGVja3N1bS5jIGIvYXJjaC9hbHBoYS9saWIvY2hlY2tzdW0uYwppbmRleCA4Njk4ZTA3Li4xOTlmNmVmIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2xpYi9jaGVja3N1bS5jCisrKyBiL2FyY2gvYWxwaGEvbGliL2NoZWNrc3VtLmMKQEAgLTUsNyArNSw3IEBACiAgKiBpbiBhbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFubmVyIGR1ZSB0byBzcGVlZC4uCiAgKiBDb21tZW50cyBpbiBvdGhlciB2ZXJzaW9ucyBpbmRpY2F0ZSB0aGF0IHRoZSBhbGdvcml0aG1zIGFyZSBmcm9tIFJGQzEwNzEKICAqCi0gKiBhY2NlbGxlcmF0ZWQgdmVyc2lvbnMgKGFuZCAyMTI2NCBhc3NlbWJseSB2ZXJzaW9ucyApIGNvbnRyaWJ1dGVkIGJ5CisgKiBhY2NlbGVyYXRlZCB2ZXJzaW9ucyAoYW5kIDIxMjY0IGFzc2VtYmx5IHZlcnNpb25zICkgY29udHJpYnV0ZWQgYnkKICAqCVJpY2sgR29ydG9uCTxyaWNrLmdvcnRvbkBhbHBoYS1wcm9jZXNzb3IuY29tPgogICovCiAgCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL2xpYi9jc3VtX3BhcnRpYWxfY29weS5jIGIvYXJjaC9hbHBoYS9saWIvY3N1bV9wYXJ0aWFsX2NvcHkuYwppbmRleCA0Y2E3NWM3Li40MDczNmRhIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2xpYi9jc3VtX3BhcnRpYWxfY29weS5jCisrKyBiL2FyY2gvYWxwaGEvbGliL2NzdW1fcGFydGlhbF9jb3B5LmMKQEAgLTIsNyArMiw3IEBACiAgKiBjc3VtX3BhcnRpYWxfY29weSAtIGRvIElQIGNoZWNrc3VtbWluZyBhbmQgY29weQogICoKICAqIChDKSBDb3B5cmlnaHQgMTk5NiBMaW51cyBUb3J2YWxkcwotICogYWNjZWxsZXJhdGVkIHZlcnNpb25zIChhbmQgMjEyNjQgYXNzZW1ibHkgdmVyc2lvbnMgKSBjb250cmlidXRlZCBieQorICogYWNjZWxlcmF0ZWQgdmVyc2lvbnMgKGFuZCAyMTI2NCBhc3NlbWJseSB2ZXJzaW9ucyApIGNvbnRyaWJ1dGVkIGJ5CiAgKglSaWNrIEdvcnRvbgk8cmljay5nb3J0b25AYWxwaGEtcHJvY2Vzc29yLmNvbT4KICAqCiAgKiBEb24ndCBsb29rIGF0IHRoaXMgdG9vIGNsb3NlbHkgLSB5b3UnbGwgZ28gbWFkLiBUaGUgdGhpbmdzCmRpZmYgLS1naXQgYS9hcmNoL2FscGhhL21tL2luaXQuYyBiL2FyY2gvYWxwaGEvbW0vaW5pdC5jCmluZGV4IDVlNmRhNDcuLjQwYzE1ZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvbW0vaW5pdC5jCisrKyBiL2FyY2gvYWxwaGEvbW0vaW5pdC5jCkBAIC0yMzUsNyArMjM1LDcgQEAKIAkJCXVuc2lnbmVkIGxvbmcgcGZuID0gY3JiLT5tYXBbaV0ucGEgPj4gUEFHRV9TSElGVDsKIAkJCWNyYi0+bWFwW2ldLnZhID0gdmFkZHI7CiAJCQlmb3IgKGogPSAwOyBqIDwgY3JiLT5tYXBbaV0uY291bnQ7ICsraikgewotCQkJCS8qIE5ld2VyIGNvbnNvbGUncyAoZXNwZWNpYWxseSBvbiBsYXJnZXIKKwkJCQkvKiBOZXdlciBjb25zb2xlcyAoZXNwZWNpYWxseSBvbiBsYXJnZXIKIAkJCQkgICBzeXN0ZW1zKSBtYXkgcmVxdWlyZSBtb3JlIHBhZ2VzIG9mCiAJCQkJICAgUFRFcy4gR3JhYiBhZGRpdGlvbmFsIHBhZ2VzIGFzIG5lZWRlZC4gKi8KIAkJCQlpZiAocG1kICE9IHBtZF9vZmZzZXQocGdkLCB2YWRkcikpIHsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvb3Byb2ZpbGUvb3BfaW1wbC5oIGIvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9pbXBsLmgKaW5kZXggNmI5Nzg5My4uYjJiODdhZSAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9pbXBsLmgKKysrIGIvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9pbXBsLmgKQEAgLTM4LDcgKzM4LDcgQEAKIAl1bnNpZ25lZCBsb25nIG5lZWRfcmVzZXQ7CiB9OwogCi0vKiBQZXItYXJjaGl0ZWN0dXJlIGNvbmZpZ3VyeSBhbmQgaG9va3MuICAqLworLyogUGVyLWFyY2hpdGVjdHVyZSBjb25maWd1cmF0aW9uIGFuZCBob29rcy4gICovCiBzdHJ1Y3Qgb3BfYXhwX21vZGVsIHsKIAl2b2lkICgqcmVnX3NldHVwKSAoc3RydWN0IG9wX3JlZ2lzdGVyX2NvbmZpZyAqLAogCQkJICAgc3RydWN0IG9wX2NvdW50ZXJfY29uZmlnICosCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCA0Y2VlOTM4Li5hMGNkYWFmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL0tjb25maWcKQEAgLTg1MSw3ICs4NTEsNyBAQAogCWhlbHAKIAkgIGtleGVjIGlzIGEgc3lzdGVtIGNhbGwgdGhhdCBpbXBsZW1lbnRzIHRoZSBhYmlsaXR5IHRvIHNodXRkb3duIHlvdXIKIAkgIGN1cnJlbnQga2VybmVsLCBhbmQgdG8gc3RhcnQgYW5vdGhlciBrZXJuZWwuICBJdCBpcyBsaWtlIGEgcmVib290Ci0JICBidXQgaXQgaXMgaW5kZXBlZGVudCBvZiB0aGUgc3lzdGVtIGZpcm13YXJlLiAgIEFuZCBsaWtlIGEgcmVib290CisJICBidXQgaXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5c3RlbSBmaXJtd2FyZS4gICBBbmQgbGlrZSBhIHJlYm9vdAogCSAgeW91IGNhbiBzdGFydCBhbnkga2VybmVsIHdpdGggaXQsIG5vdCBqdXN0IExpbnV4LgogCiAJICBJdCBpcyBhbiBvbmdvaW5nIHByb2Nlc3MgdG8gYmUgY2VydGFpbiB0aGUgaGFyZHdhcmUgaW4gYSBtYWNoaW5lCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTEvZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2dwaW8uYwppbmRleCBiYTRhMWJiLi5hYTJkMzY1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTEvZ3Bpby5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MS9ncGlvLmMKQEAgLTQzOSw3ICs0MzksNyBAQAogCQlmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKywgcGluKyspIHsKIAkJCS8qCiAJCQkgKiBDYW4gdXNlIHRoZSAic2ltcGxlIiBhbmQgbm90ICJlZGdlIiBoYW5kbGVyIHNpbmNlIGl0J3MKLQkJCSAqIHNob3J0ZXIsIGFuZCB0aGUgQUlDIGhhbmRsZXMgaW50ZXJ1cHRzIHNhbmVseS4KKwkJCSAqIHNob3J0ZXIsIGFuZCB0aGUgQUlDIGhhbmRsZXMgaW50ZXJydXB0cyBzYW5lbHkuCiAJCQkgKi8KIAkJCXNldF9pcnFfY2hpcChwaW4sICZncGlvX2lycWNoaXApOwogCQkJc2V0X2lycV9oYW5kbGVyKHBpbiwgaGFuZGxlX3NpbXBsZV9pcnEpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9pcnEuYyBiL2FyY2gvYXJtL21hY2gtb21hcDEvaXJxLmMKaW5kZXggMDczMzA3OC4uMWRhOWQ1OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9pcnEuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2lycS5jCkBAIC01LDcgKzUsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNCBOb2tpYSBDb3Jwb3JhdGlvbgogICogV3JpdHRlbiBieSBUb255IExpbmRncmVuIDx0b255QGF0b21pZGUuY29tPgotICogTWFqb3IgY2xlYW51cHMgYnkgSnVoYSBZcmr2bOQgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KKyAqIE1ham9yIGNsZWFudXBzIGJ5IEp1aGEgWXJqw7Zsw6QgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KICAqCiAgKiBDb21wbGV0ZWx5IHJlLXdyaXR0ZW4gdG8gc3VwcG9ydCB2YXJpb3VzIE9NQVAgY2hpcHMgd2l0aCBiYW5rIHNwZWNpZmljCiAgKiBpbnRlcnJ1cHQgaGFuZGxlcnMuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL3RpbWVyLWdwLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3RpbWVyLWdwLmMKaW5kZXggNjJlODAxZS4uOGQzMjJjMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi90aW1lci1ncC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvdGltZXItZ3AuYwpAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEgQ29ycG9yYXRpb24KICAqIEF1dGhvcjogUGF1bCBNdW5kdCA8cGF1bC5tdW5kdEBub2tpYS5jb20+Ci0gKiAgICAgICAgIEp1aGEgWXJq9mzkIDxqdWhhLnlyam9sYUBub2tpYS5jb20+CisgKiAgICAgICAgIEp1aGEgWXJqw7Zsw6QgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KICAqIE9NQVAgRHVhbC1tb2RlIHRpbWVyIGZyYW1ld29yayBzdXBwb3J0IGJ5IFRpbW8gVGVyYXMKICAqCiAgKiBTb21lIHBhcnRzIGJhc2VkIG9mZiBvZiBUSSdzIDI0eHggY29kZToKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9jbG9jay5jIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2Nsb2NrLmMKaW5kZXggY2FiOWQ2Mi4uMmJmYWE2MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2Nsb2NrLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2Nsb2NrLmMKQEAgLTIzOCw3ICsyMzgsNyBAQAogCX0KIAogCS8qIFdlIG11c3QgYmUgY2FyZWZ1bCBkaXNhYmxpbmcgdGhlIGNsb2NrcyB3ZSBhcmUgbm90IGludGVuZGluZyB0bwotCSAqIGJlIHVzaW5nIGF0IGJvb3QgdGltZSwgYXMgc3Vic3l0ZW1zIHN1Y2ggYXMgdGhlIExDRCB3aGljaCBkbworCSAqIGJlIHVzaW5nIGF0IGJvb3QgdGltZSwgYXMgc3Vic3lzdGVtcyBzdWNoIGFzIHRoZSBMQ0Qgd2hpY2ggZG8KIAkgKiB0aGVpciBvd24gRE1BIHJlcXVlc3RzIHRvIHRoZSBidXMgY2FuIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbG9ja3VwCiAJICogaWYgdGhleSB3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHJlcXVlc3RpbmcgYnVzIGFjY2Vzcy4KIAkgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEyL2Nsb2NrLmMgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTIvY2xvY2suYwppbmRleCA4NTQzZGQ2Li40NTg5OTM2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTIvY2xvY2suYworKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTIvY2xvY2suYwpAQCAtNjg5LDcgKzY4OSw3IEBACiAJfQogCiAJLyogV2UgbXVzdCBiZSBjYXJlZnVsIGRpc2FibGluZyB0aGUgY2xvY2tzIHdlIGFyZSBub3QgaW50ZW5kaW5nIHRvCi0JICogYmUgdXNpbmcgYXQgYm9vdCB0aW1lLCBhcyBzdWJzeXRlbXMgc3VjaCBhcyB0aGUgTENEIHdoaWNoIGRvCisJICogYmUgdXNpbmcgYXQgYm9vdCB0aW1lLCBhcyBzdWJzeXN0ZW1zIHN1Y2ggYXMgdGhlIExDRCB3aGljaCBkbwogCSAqIHRoZWlyIG93biBETUEgcmVxdWVzdHMgdG8gdGhlIGJ1cyBjYW4gY2F1c2UgdGhlIHN5c3RlbSB0byBsb2NrdXAKIAkgKiBpZiB0aGV5IHdoZXJlIGluIHRoZSBtaWRkbGUgb2YgcmVxdWVzdGluZyBidXMgYWNjZXNzLgogCSAqCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0NDMvY2xvY2suYyBiL2FyY2gvYXJtL21hY2gtczNjMjQ0My9jbG9jay5jCmluZGV4IDU4NDAyOTQuLmI0MmY5NTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQ0My9jbG9jay5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQ0My9jbG9jay5jCkBAIC0xMDA1LDcgKzEwMDUsNyBAQAogCX0KIAogCS8qIFdlIG11c3QgYmUgY2FyZWZ1bCBkaXNhYmxpbmcgdGhlIGNsb2NrcyB3ZSBhcmUgbm90IGludGVuZGluZyB0bwotCSAqIGJlIHVzaW5nIGF0IGJvb3QgdGltZSwgYXMgc3Vic3l0ZW1zIHN1Y2ggYXMgdGhlIExDRCB3aGljaCBkbworCSAqIGJlIHVzaW5nIGF0IGJvb3QgdGltZSwgYXMgc3Vic3lzdGVtcyBzdWNoIGFzIHRoZSBMQ0Qgd2hpY2ggZG8KIAkgKiB0aGVpciBvd24gRE1BIHJlcXVlc3RzIHRvIHRoZSBidXMgY2FuIGNhdXNlIHRoZSBzeXN0ZW0gdG8gbG9ja3VwCiAJICogaWYgdGhleSB3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHJlcXVlc3RpbmcgYnVzIGFjY2Vzcy4KIAkgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbndmcGUvZnBvcGNvZGUuaCBiL2FyY2gvYXJtL253ZnBlL2Zwb3Bjb2RlLmgKaW5kZXggMDA5MGIxOS4uNzg2ZTRjOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbndmcGUvZnBvcGNvZGUuaAorKysgYi9hcmNoL2FybS9ud2ZwZS9mcG9wY29kZS5oCkBAIC03OCwxMSArNzgsMTEgQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKIHwgIFByZWNpc2lvbiAgICAgICAgICAgICAgfCB1IHwgdiB8IEZQU1IuRVAgfCBsZW5ndGggIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKLXwgU2luZ2xlICAgICAgICAgICAgICAgICAgfCAwIPwgMCB8ICAgIHggICAgfCAxIHdvcmRzIHwKLXwgRG91YmxlICAgICAgICAgICAgICAgICAgfCAxIPwgMSB8ICAgIHggICAgfCAyIHdvcmRzIHwKLXwgRXh0ZW5kZWQgICAgICAgICAgICAgICAgfCAxIPwgMSB8ICAgIHggICAgfCAzIHdvcmRzIHwKLXwgUGFja2VkIGRlY2ltYWwgICAgICAgICAgfCAxIPwgMSB8ICAgIDAgICAgfCAzIHdvcmRzIHwKLXwgRXhwYW5kZWQgcGFja2VkIGRlY2ltYWwgfCAxIPwgMSB8ICAgIDEgICAgfCA0IHdvcmRzIHwKK3wgU2luZ2xlICAgICAgICAgICAgICAgICAgfCAwIHwgMCB8ICAgIHggICAgfCAxIHdvcmRzIHwKK3wgRG91YmxlICAgICAgICAgICAgICAgICAgfCAxIHwgMSB8ICAgIHggICAgfCAyIHdvcmRzIHwKK3wgRXh0ZW5kZWQgICAgICAgICAgICAgICAgfCAxIHwgMSB8ICAgIHggICAgfCAzIHdvcmRzIHwKK3wgUGFja2VkIGRlY2ltYWwgICAgICAgICAgfCAxIHwgMSB8ICAgIDAgICAgfCAzIHdvcmRzIHwKK3wgRXhwYW5kZWQgcGFja2VkIGRlY2ltYWwgfCAxIHwgMSB8ICAgIDEgICAgfCA0IHdvcmRzIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKIE5vdGU6IHggPSBkb24ndCBjYXJlCiAqLwpAQCAtOTIsMTAgKzkyLDEwIEBACiArLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHcgfCB4IHwgTnVtYmVyIG9mIHJlZ2lzdGVycyB0byB0cmFuc2ZlciB8CiArLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDAg/CAxIHwgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IDEg/CAwIHwgIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IDEg/CAxIHwgIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18IDAg/CAwIHwgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IDAgfCAxIHwgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IDEgfCAwIHwgIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IDEgfCAxIHwgIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IDAgfCAwIHwgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAqLwogCkBAIC0xNTYsMTAgKzE1NiwxMCBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLSsKIHwgIFJvdW5kaW5nIFByZWNpc2lvbiAgICAgfCBlIHwgZiB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0rLS0tKwotfCBJRUVFIFNpbmdsZSBwcmVjaXNpb24gICB8IDAg/CAwIHwKLXwgSUVFRSBEb3VibGUgcHJlY2lzaW9uICAgfCAwIPwgMSB8Ci18IElFRUUgRXh0ZW5kZWQgcHJlY2lzaW9uIHwgMSD8IDAgfAotfCB1bmRlZmluZWQgKHRyYXApICAgICAgICB8IDEg/CAxIHwKK3wgSUVFRSBTaW5nbGUgcHJlY2lzaW9uICAgfCAwIHwgMCB8Cit8IElFRUUgRG91YmxlIHByZWNpc2lvbiAgIHwgMCB8IDEgfAorfCBJRUVFIEV4dGVuZGVkIHByZWNpc2lvbiB8IDEgfCAwIHwKK3wgdW5kZWZpbmVkICh0cmFwKSAgICAgICAgfCAxIHwgMSB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0rLS0tKwogKi8KIApAQCAtMTY4LDEwICsxNjgsMTAgQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLSsKIHwgIFJvdW5kaW5nIE1vZGUgICAgICAgICAgICAgICAgICB8IGcgfCBoIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLSsKLXwgUm91bmQgdG8gbmVhcmVzdCAoZGVmYXVsdCkgICAgICB8IDAg/CAwIHwKLXwgUm91bmQgdG93YXJkIHBsdXMgaW5maW5pdHkgICAgICB8IDAg/CAxIHwKLXwgUm91bmQgdG93YXJkIG5lZ2F0aXZlIGluZmluaXR5ICB8IDEg/CAwIHwKLXwgUm91bmQgdG93YXJkIHplcm8gICAgICAgICAgICAgICB8IDEg/CAxIHwKK3wgUm91bmQgdG8gbmVhcmVzdCAoZGVmYXVsdCkgICAgICB8IDAgfCAwIHwKK3wgUm91bmQgdG93YXJkIHBsdXMgaW5maW5pdHkgICAgICB8IDAgfCAxIHwKK3wgUm91bmQgdG93YXJkIG5lZ2F0aXZlIGluZmluaXR5ICB8IDEgfCAwIHwKK3wgUm91bmQgdG93YXJkIHplcm8gICAgICAgICAgICAgICB8IDEgfCAxIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLSsKICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYwppbmRleCAwNWEzODQ5Li5kY2JiYTA3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvZG1hLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jCkBAIC0yLDcgKzIsNyBAQAogICogbGludXgvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAzIE5va2lhIENvcnBvcmF0aW9uCi0gKiBBdXRob3I6IEp1aGEgWXJq9mzkIDxqdWhhLnlyam9sYUBub2tpYS5jb20+CisgKiBBdXRob3I6IEp1aGEgWXJqw7Zsw6QgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KICAqIERNQSBjaGFubmVsIGxpbmtpbmcgZm9yIDE2MTAgYnkgU2FtdWVsIE9ydGl6IDxzYW11ZWwub3J0aXpAbm9raWEuY29tPgogICogR3JhcGhpY3MgRE1BIGFuZCBMQ0QgRE1BIGdyYXBoaWNzIHRyYW5mb3JtYXRpb25zCiAgKiBieSBJbXJlIERlYWsgPGltcmUuZGVha0Bub2tpYS5jb20+CmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvZ3Bpby5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2dwaW8uYwppbmRleCAzMzc0NTVkLi42MDk3NzUzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvZ3Bpby5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9ncGlvLmMKQEAgLTQsNyArNCw3IEBACiAgKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgT01BUCBHUElPCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMDUgTm9raWEgQ29ycG9yYXRpb24KLSAqIFdyaXR0ZW4gYnkgSnVoYSBZcmr2bOQgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KKyAqIFdyaXR0ZW4gYnkgSnVoYSBZcmrDtmzDpCA8anVoYS55cmpvbGFAbm9raWEuY29tPgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9LY29uZmlnIGIvYXJjaC9hdnIzMi9LY29uZmlnCmluZGV4IGQxMjM0NmEuLmJiZWNiZDggMTAwNjQ0Ci0tLSBhL2FyY2gvYXZyMzIvS2NvbmZpZworKysgYi9hcmNoL2F2cjMyL0tjb25maWcKQEAgLTE4OSw3ICsxODksNyBAQAogCiBlbmRtZW51CiAKLW1lbnUgIlBvd2VyIG1hbmFnbWVudCBvcHRpb25zIgorbWVudSAiUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zIgogCiBtZW51ICJDUFUgRnJlcXVlbmN5IHNjYWxpbmciCiAKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vS2NvbmZpZyBiL2FyY2gvYmxhY2tmaW4vS2NvbmZpZwppbmRleCA0YzVjYTlkLi5hZDI4ZGM3IDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL0tjb25maWcKKysrIGIvYXJjaC9ibGFja2Zpbi9LY29uZmlnCkBAIC02MTMsODUgKzYxMyw4NiBAQAogCWJvb2wgIkxvY2F0ZSBpbnRlcnJ1cHQgZW50cnkgY29kZSBpbiBMMSBNZW1vcnkiCiAJZGVmYXVsdCB5CiAJaGVscAotCSAgSWYgZW5hYmxlZCBpbnRlcnJ1cHQgZW50cnkgY29kZSAoU1RPUkUvUkVTVE9SRSBDT05URVhUKSBpcyBsaW5rZWQKLQkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LihsZXNzIGxhdGVuY3kpCisJICBJZiBlbmFibGVkLCBpbnRlcnJ1cHQgZW50cnkgY29kZSAoU1RPUkUvUkVTVE9SRSBDT05URVhUKSBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgRVhDUFRfSVJRX1NZU0NfTDEKLQlib29sICJMb2NhdGUgZW50aXJlIEFTTSBsb3dsZXZlbCBleGNlcGV0aW9uIC8gaW50ZXJydXB0IC0gU3lzY2FsbCBhbmQgQ1BMQiBoYW5kbGVyIGNvZGUgaW4gTDEgTWVtb3J5IgorCWJvb2wgIkxvY2F0ZSBlbnRpcmUgQVNNIGxvd2xldmVsIGV4Y2VwdGlvbiAvIGludGVycnVwdCAtIFN5c2NhbGwgYW5kIENQTEIgaGFuZGxlciBjb2RlIGluIEwxIE1lbW9yeSIKIAlkZWZhdWx0IHkKIAloZWxwCi0JICBJZiBlbmFibGVkIGVudGlyZSBBU00gbG93bGV2ZWwgZXhjZXB0aW9uIGFuZCBpbnRlcnJ1cHQgZW50cnkgY29kZSAoU1RPUkUvUkVTVE9SRSBDT05URVhUKSBpcyBsaW5rZWQKLQkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LihsZXNzIGxhdGVuY3kpCisJICBJZiBlbmFibGVkLCB0aGUgZW50aXJlIEFTTSBsb3dsZXZlbCBleGNlcHRpb24gYW5kIGludGVycnVwdCBlbnRyeSBjb2RlCisJICAoU1RPUkUvUkVTVE9SRSBDT05URVhUKSBpcyBsaW5rZWQgaW50byBMMSBpbnN0cnVjdGlvbiBtZW1vcnkuIAorCSAgKGxlc3MgbGF0ZW5jeSkKIAogY29uZmlnIERPX0lSUV9MMQogCWJvb2wgIkxvY2F0ZSBmcmVxdWVudGx5IGNhbGxlZCBkb19pcnEgZGlzcGF0Y2hlciBmdW5jdGlvbiBpbiBMMSBNZW1vcnkiCiAJZGVmYXVsdCB5CiAJaGVscAotCSAgSWYgZW5hYmxlZCBmcmVxdWVudGx5IGNhbGxlZCBkb19pcnEgZGlzcGF0Y2hlciBmdW5jdGlvbiBpcyBsaW5rZWQKLQkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LihsZXNzIGxhdGVuY3kpCisJICBJZiBlbmFibGVkLCB0aGUgZnJlcXVlbnRseSBjYWxsZWQgZG9faXJxIGRpc3BhdGNoZXIgZnVuY3Rpb24gaXMgbGlua2VkCisJICBpbnRvIEwxIGluc3RydWN0aW9uIG1lbW9yeS4gKGxlc3MgbGF0ZW5jeSkKIAogY29uZmlnIENPUkVfVElNRVJfSVJRX0wxCiAJYm9vbCAiTG9jYXRlIGZyZXF1ZW50bHkgY2FsbGVkIHRpbWVyX2ludGVycnVwdCgpIGZ1bmN0aW9uIGluIEwxIE1lbW9yeSIKIAlkZWZhdWx0IHkKIAloZWxwCi0JICBJZiBlbmFibGVkIGZyZXF1ZW50bHkgY2FsbGVkIHRpbWVyX2ludGVycnVwdCgpIGZ1bmN0aW9uIGlzIGxpbmtlZAotCSAgaW50byBMMSBpbnN0cnVjdGlvbiBtZW1vcnkuKGxlc3MgbGF0ZW5jeSkKKwkgIElmIGVuYWJsZWQsIHRoZSBmcmVxdWVudGx5IGNhbGxlZCB0aW1lcl9pbnRlcnJ1cHQoKSBmdW5jdGlvbiBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgSURMRV9MMQogCWJvb2wgIkxvY2F0ZSBmcmVxdWVudGx5IGlkbGUgZnVuY3Rpb24gaW4gTDEgTWVtb3J5IgogCWRlZmF1bHQgeQogCWhlbHAKLQkgIElmIGVuYWJsZWQgZnJlcXVlbnRseSBjYWxsZWQgaWRsZSBmdW5jdGlvbiBpcyBsaW5rZWQKLQkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LihsZXNzIGxhdGVuY3kpCisJICBJZiBlbmFibGVkLCB0aGUgZnJlcXVlbnRseSBjYWxsZWQgaWRsZSBmdW5jdGlvbiBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgU0NIRURVTEVfTDEKIAlib29sICJMb2NhdGUga2VybmVsIHNjaGVkdWxlIGZ1bmN0aW9uIGluIEwxIE1lbW9yeSIKIAlkZWZhdWx0IHkKIAloZWxwCi0JICBJZiBlbmFibGVkIGZyZXF1ZW50bHkgY2FsbGVkIGtlcm5lbCBzY2hlZHVsZSBpcyBsaW5rZWQKLQkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LihsZXNzIGxhdGVuY3kpCisJICBJZiBlbmFibGVkLCB0aGUgZnJlcXVlbnRseSBjYWxsZWQga2VybmVsIHNjaGVkdWxlIGlzIGxpbmtlZAorCSAgaW50byBMMSBpbnN0cnVjdGlvbiBtZW1vcnkuIChsZXNzIGxhdGVuY3kpCiAKIGNvbmZpZyBBUklUSE1FVElDX09QU19MMQogCWJvb2wgIkxvY2F0ZSBrZXJuZWwgb3duZWQgYXJpdGhtZXRpYyBmdW5jdGlvbnMgaW4gTDEgTWVtb3J5IgogCWRlZmF1bHQgeQogCWhlbHAKLQkgIElmIGVuYWJsZWQgYXJpdGhtZXRpYyBmdW5jdGlvbnMgYXJlIGxpbmtlZAotCSAgaW50byBMMSBpbnN0cnVjdGlvbiBtZW1vcnkuKGxlc3MgbGF0ZW5jeSkKKwkgIElmIGVuYWJsZWQsIGFyaXRobWV0aWMgZnVuY3Rpb25zIGFyZSBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgQUNDRVNTX09LX0wxCiAJYm9vbCAiTG9jYXRlIGFjY2Vzc19vayBmdW5jdGlvbiBpbiBMMSBNZW1vcnkiCiAJZGVmYXVsdCB5CiAJaGVscAotCSAgSWYgZW5hYmxlZCBhY2Nlc3Nfb2sgZnVuY3Rpb24gaXMgbGlua2VkCi0JICBpbnRvIEwxIGluc3RydWN0aW9uIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgdGhlIGFjY2Vzc19vayBmdW5jdGlvbiBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgTUVNU0VUX0wxCiAJYm9vbCAiTG9jYXRlIG1lbXNldCBmdW5jdGlvbiBpbiBMMSBNZW1vcnkiCiAJZGVmYXVsdCB5CiAJaGVscAotCSAgSWYgZW5hYmxlZCBtZW1zZXQgZnVuY3Rpb24gaXMgbGlua2VkCi0JICBpbnRvIEwxIGluc3RydWN0aW9uIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgdGhlIG1lbXNldCBmdW5jdGlvbiBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgTUVNQ1BZX0wxCiAJYm9vbCAiTG9jYXRlIG1lbWNweSBmdW5jdGlvbiBpbiBMMSBNZW1vcnkiCiAJZGVmYXVsdCB5CiAJaGVscAotCSAgSWYgZW5hYmxlZCBtZW1jcHkgZnVuY3Rpb24gaXMgbGlua2VkCi0JICBpbnRvIEwxIGluc3RydWN0aW9uIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgdGhlIG1lbWNweSBmdW5jdGlvbiBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgU1lTX0JGSU5fU1BJTkxPQ0tfTDEKIAlib29sICJMb2NhdGUgc3lzX2JmaW5fc3BpbmxvY2sgZnVuY3Rpb24gaW4gTDEgTWVtb3J5IgogCWRlZmF1bHQgeQogCWhlbHAKLQkgIElmIGVuYWJsZWQgc3lzX2JmaW5fc3BpbmxvY2sgZnVuY3Rpb24gaXMgbGlua2VkCi0JICBpbnRvIEwxIGluc3RydWN0aW9uIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgc3lzX2JmaW5fc3BpbmxvY2sgZnVuY3Rpb24gaXMgbGlua2VkCisJICBpbnRvIEwxIGluc3RydWN0aW9uIG1lbW9yeS4gKGxlc3MgbGF0ZW5jeSkKIAogY29uZmlnIElQX0NIRUNLU1VNX0wxCiAJYm9vbCAiTG9jYXRlIElQIENoZWNrc3VtIGZ1bmN0aW9uIGluIEwxIE1lbW9yeSIKIAlkZWZhdWx0IG4KIAloZWxwCi0JICBJZiBlbmFibGVkIElQIENoZWNrc3VtIGZ1bmN0aW9uIGlzIGxpbmtlZAotCSAgaW50byBMMSBpbnN0cnVjdGlvbiBtZW1vcnkuKGxlc3MgbGF0ZW5jeSkKKwkgIElmIGVuYWJsZWQsIHRoZSBJUCBDaGVja3N1bSBmdW5jdGlvbiBpcyBsaW5rZWQKKwkgIGludG8gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgQ0FDSEVMSU5FX0FMSUdORURfTDEKIAlib29sICJMb2NhdGUgY2FjaGVsaW5lX2FsaWduZWQgZGF0YSB0byBMMSBEYXRhIE1lbW9yeSIKQEAgLTY5OSwyNCArNzAwLDI0IEBACiAJZGVmYXVsdCBuIGlmIEJGNTR4CiAJZGVwZW5kcyBvbiAhQkY1MzEKIAloZWxwCi0JICBJZiBlbmFibGVkIGNhY2hlbGluZV9hbmxpZ25lZCBkYXRhIGlzIGxpbmtlZAotCSAgaW50byBMMSBkYXRhIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgY2FjaGVsaW5lX2FubGlnbmVkIGRhdGEgaXMgbGlua2VkCisJICBpbnRvIEwxIGRhdGEgbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBjb25maWcgU1lTQ0FMTF9UQUJfTDEKIAlib29sICJMb2NhdGUgU3lzY2FsbCBUYWJsZSBMMSBEYXRhIE1lbW9yeSIKIAlkZWZhdWx0IG4KIAlkZXBlbmRzIG9uICFCRjUzMQogCWhlbHAKLQkgIElmIGVuYWJsZWQgdGhlIFN5c2NhbGwgTFVUIGlzIGxpbmtlZAotCSAgaW50byBMMSBkYXRhIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgdGhlIFN5c2NhbGwgTFVUIGlzIGxpbmtlZAorCSAgaW50byBMMSBkYXRhIG1lbW9yeS4gKGxlc3MgbGF0ZW5jeSkKIAogY29uZmlnIENQTEJfU1dJVENIX1RBQl9MMQogCWJvb2wgIkxvY2F0ZSBDUExCIFN3aXRjaCBUYWJsZXMgTDEgRGF0YSBNZW1vcnkiCiAJZGVmYXVsdCBuCiAJZGVwZW5kcyBvbiAhQkY1MzEKIAloZWxwCi0JICBJZiBlbmFibGVkIHRoZSBDUExCIFN3aXRjaCBUYWJsZXMgYXJlIGxpbmtlZAotCSAgaW50byBMMSBkYXRhIG1lbW9yeS4obGVzcyBsYXRlbmN5KQorCSAgSWYgZW5hYmxlZCwgdGhlIENQTEIgU3dpdGNoIFRhYmxlcyBhcmUgbGlua2VkCisJICBpbnRvIEwxIGRhdGEgbWVtb3J5LiAobGVzcyBsYXRlbmN5KQogCiBlbmRtZW51CiAKQEAgLTEwMjksMTMgKzEwMzAsMTMgQEAKIAkgIGZyb20uCiAKIGNvbmZpZyBERUJVR19JQ0FDSEVfQ0hFQ0sKLQlib29sICJDaGVjayBJbnN0cnVjdGlvbiBjYWNoZSBjb2hlcmFuY3kiCisJYm9vbCAiQ2hlY2sgSW5zdHJ1Y3Rpb24gY2FjaGUgY29oZXJlbmN5IgogCWRlcGVuZHMgb24gREVCVUdfS0VSTkVMCiAJZGVwZW5kcyBvbiBERUJVR19IV0VSUgogCWhlbHAKLQkgIFNheSBZIGhlcmUgaWYgeW91IGFyZSBnZXR0aW5nIHdpZXJkIHVuZXhwbGFpbmVkIGVycm9ycy4gVGhpcyB3aWxsCi0JICBlbnN1cmUgdGhhdCBpY2FjaGUgaXMgd2hhdCBTRFJBTSBzYXlzIGl0IHNob3VsZCBiZSwgYnkgZG9pbmcgYQotCSAgYnl0ZSB3aXNlIGNvbXBhcmlzaW9uIGJldHdlZW4gU0RSQU0gYW5kIGluc3RydWN0aW9uIGNhY2hlLiBUaGlzCisJICBTYXkgWSBoZXJlIGlmIHlvdSBhcmUgZ2V0dGluZyB3ZWlyZCB1bmV4cGxhaW5lZCBlcnJvcnMuIFRoaXMgd2lsbAorCSAgZW5zdXJlIHRoYXQgaWNhY2hlIGlzIHdoYXQgU0RSQU0gc2F5cyBpdCBzaG91bGQgYmUgYnkgZG9pbmcgYQorCSAgYnl0ZSB3aXNlIGNvbXBhcmlzb24gYmV0d2VlbiBTRFJBTSBhbmQgaW5zdHJ1Y3Rpb24gY2FjaGUuIFRoaXMKIAkgIGFsc28gcmVsb2NhdGVzIHRoZSBpcnFfcGFuaWMoKSBmdW5jdGlvbiB0byBMMSBtZW1vcnksICh3aGljaCBpcwogCSAgdW4tY2FjaGVkKS4KIApkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjEwL0tjb25maWcgYi9hcmNoL2NyaXMvYXJjaC12MTAvS2NvbmZpZwppbmRleCBjN2VhOWVmLi5mMWNlNmY2IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MTAvS2NvbmZpZworKysgYi9hcmNoL2NyaXMvYXJjaC12MTAvS2NvbmZpZwpAQCAtMTgyLDcgKzE4Miw3IEBACiAJICBzZXQgdGhpcyB0byBzYW1lIGFzIENPTkZJR19FVFJBWF9MRUQxRyAobm9ybWFsbHkgMikuCiAKIGNvbmZpZyBFVFJBWF9MRUQ4WQotCWludCAiRWlndGggeWVsbG93IExFRCBiaXQiCisJaW50ICJFaWdodGggeWVsbG93IExFRCBiaXQiCiAJZGVwZW5kcyBvbiBFVFJBWF9DU1AwX0xFRFMKIAlkZWZhdWx0ICIyIgogCWhlbHAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9ib290L2NvbXByZXNzZWQvbWlzYy5jIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKaW5kZXggZmZiOGQyMS4uZTIwNWQyZSAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKQEAgLTgsNyArOCw3IEBACiAgKgogICogbWFsbG9jIGJ5IEhhbm51IFNhdm9sYWluZW4gMTk5MyBhbmQgTWF0dGhpYXMgVXJsaWNocyAxOTk0CiAgKiBwdXRzIGJ5IE5pY2sgSG9sbG93YXkgMTk5MywgYmV0dGVyIHB1dHMgYnkgTWFydGluIE1hcmVzIDE5OTUKLSAqIGFkb3B0YXRpb24gZm9yIExpbnV4L0NSSVMgQXhpcyBDb21tdW5pY2F0aW9ucyBBQiwgMTk5OQorICogYWRhcHRhdGlvbiBmb3IgTGludXgvQ1JJUyBBeGlzIENvbW11bmljYXRpb25zIEFCLCAxOTk5CiAgKiAKICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAvZHJpdmVycy9wY2Y4NTYzLmMgYi9hcmNoL2NyaXMvYXJjaC12MTAvZHJpdmVycy9wY2Y4NTYzLmMKaW5kZXggMWRlMDAyNi4uYzI2M2I4MiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2RyaXZlcnMvcGNmODU2My5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9kcml2ZXJzL3BjZjg1NjMuYwpAQCAtNCw3ICs0LDcgQEAKICAqIEZyb20gUGhpbGxpcHMnIGRhdGFzaGVldDoKICAqCiAgKiBUaGUgUENGODU2MyBpcyBhIENNT1MgcmVhbC10aW1lIGNsb2NrL2NhbGVuZGFyIG9wdGltaXplZCBmb3IgbG93IHBvd2VyCi0gKiBjb25zdW1wdGlvbi4gQSBwcm9ncmFtbWFibGUgY2xvY2sgb3V0cHV0LCBpbnRlcnVwdCBvdXRwdXQgYW5kIHZvbHRhZ2UKKyAqIGNvbnN1bXB0aW9uLiBBIHByb2dyYW1tYWJsZSBjbG9jayBvdXRwdXQsIGludGVycnVwdCBvdXRwdXQgYW5kIHZvbHRhZ2UKICAqIGxvdyBkZXRlY3RvciBhcmUgYWxzbyBwcm92aWRlZC4gQWxsIGFkZHJlc3MgYW5kIGRhdGEgYXJlIHRyYW5zZmVycmVkCiAgKiBzZXJpYWxseSB2aWEgdHdvLWxpbmUgYmlkaXJlY3Rpb25hbCBJMkMtYnVzLiBNYXhpbXVtIGJ1cyBzcGVlZCBpcwogICogNDAwIGtiaXRzL3MuIFRoZSBidWlsdC1pbiB3b3JkIGFkZHJlc3MgcmVnaXN0ZXIgaXMgaW5jcmVtZW50ZWQKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvZGVidWdwb3J0LmMgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2RlYnVncG9ydC5jCmluZGV4IDJiNTM2Y2EuLjkzNjc5YTQgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvZGVidWdwb3J0LmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9kZWJ1Z3BvcnQuYwpAQCAtODMsNyArODMsNyBAQAogICoKICAqIFJldmlzaW9uIDEuNCAgMjAwMi8xMS8xOSAxNDozNToyNCAgc3RhcnZpawogICogQ2hhbmdlcyBmcm9tIGxpbnV4IDIuNAotICogQ2hhbmdlZCBzdHJ1Y3QgaW5pdGlhbGl6ZXIgc3ludGF4IHRvIHRoZSBjdXJyZW50bHkgcHJlZmVyZWQgbm90YXRpb24KKyAqIENoYW5nZWQgc3RydWN0IGluaXRpYWxpemVyIHN5bnRheCB0byB0aGUgY3VycmVudGx5IHByZWZlcnJlZCBub3RhdGlvbgogICoKICAqIFJldmlzaW9uIDEuMyAgMjAwMi8xMS8wNiAwOTo0NzowMyAgc3RhcnZpawogICogTW9kaWZpZWQgZm9yIG5ldyBpbnRlcnJ1cHQgbWFjcm9zCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2VudHJ5LlMgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2VudHJ5LlMKaW5kZXggYWU0NWQ0NS4uYzU4NDRjYiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9lbnRyeS5TCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvZW50cnkuUwpAQCAtOTcsNyArOTcsNyBAQAogICoKICAqICBSZXZpc2lvbiAxLjM2ICAyMDAxLzExLzIyIDEzOjM2OjM2ICBiam9ybncKICAqICAqIEluIHJldF9mcm9tX2ludHIsIGNoZWNrIHJlZ3MtPmRjY3IgZm9yIHVzZXJtb2RlIHJlZW50cmFuY2UgaW5zdGVhZCBvZgotICogICAgRENDUiBleHBsaWNpdGVseSAoYmVjYXVzZSB0aGUgbGF0dGVyIG1pZ2h0IG5vdCByZWZsZWN0IGN1cnJlbnQgcmVhbGl0eSkKKyAqICAgIERDQ1IgZXhwbGljaXRseSAoYmVjYXVzZSB0aGUgbGF0dGVyIG1pZ2h0IG5vdCByZWZsZWN0IGN1cnJlbnQgcmVhbGl0eSkKICAqICAqIEluIG1tdV9idXNfZmF1bHQsIHNldCAkcjkgX2FmdGVyXyBjYWxsaW5nIHRoZSBDLWNvZGUgaW5zdGVhZCBvZiBiZWZvcmUKICAqICAgIHNpbmNlICRyOSBpcyBjYWxsLWNsb2JiZXJlZCBhbmQgaXMgcG90ZW50aWFsbHkgbmVlZGVkIGFmdGVyd2FyZHMKICAqCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2Zhc3R0aW1lci5jIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9mYXN0dGltZXIuYwppbmRleCA4Y2JkZjU5Li5kM2VhMDUyIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2Zhc3R0aW1lci5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvZmFzdHRpbWVyLmMKQEAgLTg0LDcgKzg0LDcgQEAKICAqIHdpdGggdGltZSBiYXNlZCBvbiBqaWZmaWVzIGFuZCAqUl9USU1FUjBfREFUQSwgdXNlcyBhIHRhYmxlCiAgKiBmb3IgZmFzdCBjb252ZXJzaW9uIG9mIHRpbWVyIHZhbHVlIHRvIG1pY3Jvc2Vjb25kcy4KICAqIChNdWNoIGZhc3RlciB0aGUgc3RhbmRhcmQgZG9fZ2V0dGltZW9mZGF5KCkgYW5kIHdlIGRvbid0IHJlYWxseQotICogd2FuJ3QgdG8gdXNlIHRoZSB0cnVlIHRpbWUgLSB3ZSB3YW4ndCB0aGUgInVwdGltZSIgc28gdGltZXJzIGRvbid0IHNjcmV3IHVwCisgKiB3YW50IHRvIHVzZSB0aGUgdHJ1ZSB0aW1lIC0gd2Ugd2FudCB0aGUgInVwdGltZSIgc28gdGltZXJzIGRvbid0IHNjcmV3IHVwCiAgKiB3aGVuIHdlIGNoYW5nZSB0aGUgdGltZS4KICAqIFRPRE86IEFkZCBlZmZpY2llbnQgc3VwcG9ydCBmb3IgY29udGludW91cyB0aW1lcnMgYXMgd2VsbC4KICAqCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2lycS5jIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9pcnEuYwppbmRleCA5NjA5NGNiLi44NDVjOTVmNiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9pcnEuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2lycS5jCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICAgICAgICAgZXRyYXhfaXJ2LT52W2ldID0gd2VpcmRfaXJxOwogCi0JLyogSW5pdGlhbGl6ZSBJUlEgaGFuZGxlciBkZXNjcmlwdGlvcnMuICovCisJLyogSW5pdGlhbGl6ZSBJUlEgaGFuZGxlciBkZXNjcmlwdG9ycy4gKi8KIAlmb3IoaSA9IDI7IGkgPCBOUl9JUlFTOyBpKyspIHsKIAkJaXJxX2Rlc2NbaV0uY2hpcCA9ICZjcmlzdjEwX2lycV90eXBlOwogCQlzZXRfaW50X3ZlY3RvcihpLCBpbnRlcnJ1cHRbaV0pOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9rZ2RiLmMgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2tnZGIuYwppbmRleCAwNzYyOGExLi43N2Y0YjE0IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2tnZGIuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL2tnZGIuYwpAQCAtOTU5LDcgKzk1OSw3IEBACiAKIAkvKiBTZW5kIHJlZ2lzdGVyIGNvbnRlbnRzLiBXZSBwcm9iYWJseSBvbmx5IG5lZWQgdG8gc2VuZCB0aGUKIAkgKiBQQywgZnJhbWUgcG9pbnRlciBhbmQgc3RhY2sgcG9pbnRlciBoZXJlLiBPdGhlciByZWdpc3RlcnMgd2lsbCBiZQotCSAqIGV4cGxpY2l0ZWx5IGFza2VkIGZvci4gQnV0IGZvciBub3csIHNlbmQgYWxsLiAKKwkgKiBleHBsaWNpdGx5IGFza2VkIGZvci4gQnV0IGZvciBub3csIHNlbmQgYWxsLgogCSAqLwogCQogCWZvciAocmVnbm8gPSBSMDsgcmVnbm8gPD0gVVNQOyByZWdubysrKSB7CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IGI2ODMxY2UuLjFhMzc2MGMgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9rZXJuZWwvcHJvY2Vzcy5jCkBAIC02NCw3ICs2NCw3IEBACiAjaWYgZGVmaW5lZChDT05GSUdfRVRSQVhfV0FUQ0hET0cpICYmICFkZWZpbmVkKENPTkZJR19TVklOVE9fU0lNKQogCWNhdXNlX29mX2RlYXRoID0gMHhiZWRlYWQ7CiAjZWxzZQotCS8qIFNpbmNlIHdlIGRvbnQgcGxhbiB0byBrZWVwIG9uIHJlc2V0aW5nIHRoZSB3YXRjaGRvZywKKwkvKiBTaW5jZSB3ZSBkb250IHBsYW4gdG8ga2VlcCBvbiByZXNldHRpbmcgdGhlIHdhdGNoZG9nLAogCSAgIHRoZSBrZXkgY2FuIGJlIGFyYml0cmFyeSBoZW5jZSB0aHJlZSAqLwogCSpSX1dBVENIRE9HID0gSU9fRklFTEQoUl9XQVRDSERPRywga2V5LCAzKSB8CiAJCUlPX1NUQVRFKFJfV0FUQ0hET0csIGVuYWJsZSwgc3RhcnQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjEwL2tlcm5lbC9zaGFkb3dzLmMgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL3NoYWRvd3MuYwppbmRleCAzOGZkNDRkLi4zMjYxNzhhIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL3NoYWRvd3MuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MTAva2VybmVsL3NoYWRvd3MuYwpAQCAtMjAsNyArMjAsNyBAQAogICogVGhlc2UgYXJlIG9ubHkgdXNhYmxlIGlmIHRoZXJlIGFjdHVhbGx5IElTIGEgbGF0Y2ggY29ubmVjdGVkCiAgKiB0byB0aGUgY29ycmVzcG9uZGluZyBleHRlcm5hbCBjaGlwLXNlbGVjdCBwaW4uCiAgKgotICogQSBjb21tb24gdXNhZ2UgaXMgdGhhdCBDU1AwIGNvbnRyb2xzIExFRCdzIGFuZCBDU1A0IHZpZGVvIGNoaXBzLgorICogQSBjb21tb24gdXNhZ2UgaXMgdGhhdCBDU1AwIGNvbnRyb2xzIExFRHMgYW5kIENTUDQgdmlkZW8gY2hpcHMuCiAgKi8KIAogdW5zaWduZWQgbG9uZyBwb3J0X2NzZTFfc2hhZG93OwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjEwL2xpYi9kcmFtX2luaXQuUyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9saWIvZHJhbV9pbml0LlMKaW5kZXggOWNmODM5My4uNmE2YmRmZCAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2xpYi9kcmFtX2luaXQuUworKysgYi9hcmNoL2NyaXMvYXJjaC12MTAvbGliL2RyYW1faW5pdC5TCkBAIC00MCw3ICs0MCw3IEBACiAgKiBDb3B5IHdhcm5pbmcgZnJvbSBoZWFkLlMgYWJvdXQgcjggYW5kIHI5CiAgKgogICogUmV2aXNpb24gMS43ICAyMDAxLzA0LzE4IDEyOjA1OjM5ICBiam9ybncKLSAqIEZpeGVkIGNvbW1lbnRzLCBhbmQgZXhwbGljaXRlbHkgaW5jbHVkZSBjb25maWcuaCB0byBiZSBzdXJlIGl0cyB0aGVyZQorICogRml4ZWQgY29tbWVudHMsIGFuZCBleHBsaWNpdGx5IGluY2x1ZGUgY29uZmlnLmggdG8gYmUgc3VyZSBpdHMgdGhlcmUKICAqCiAgKiBSZXZpc2lvbiAxLjYgIDIwMDEvMDQvMTAgMDY6MjA6MTYgIHN0YXJ2aWsKICAqIERlbGF5IHNob3VsZCBiZSAyMDB1cywgbm90IDIwMG5zCkBAIC02Niw3ICs2Niw3IEBACiAgKi8KIAogLyogSnVzdCB0byBiZSBjZXJ0YWluIHRoZSBjb25maWcgZmlsZSBpcyBpbmNsdWRlZCwgd2UgaW5jbHVkZSBpdCBoZXJlCi0gKiBleHBsaWNpdGVseSBpbnN0ZWFkIG9mIGRlcGVuZGluZyBvbiBpdCBiZWluZyBpbmNsdWRlZCBpbiB0aGUgZmlsZSB0aGF0CisgKiBleHBsaWNpdGx5IGluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIGl0IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBmaWxlIHRoYXQKICAqIHVzZXMgdGhpcyBjb2RlLgogICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9saWIvc3RyaW5nLmMgYi9hcmNoL2NyaXMvYXJjaC12MTAvbGliL3N0cmluZy5jCmluZGV4IDhmZmRlNDkuLjE1ZDY2NjIgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9saWIvc3RyaW5nLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjEwL2xpYi9zdHJpbmcuYwpAQCAtNDEsNyArNDEsNyBAQAogICAgICBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGlzIGFibGUgdG8gbWFrZSBzb21ldGhpbmcgdXNlZnVsIG9mIHRoaXMuCiAgICAgICBBcyBpdCBpcyBub3c6IHIxMCAtPiByMTM7IHIxMSAtPiByMTEgKG5vcCk7IHIxMiAtPiByMTIgKG5vcCkuCiAKLSAgICAgSWYgZ2NjIHdhcyBhbGxyaWdodCwgaXQgcmVhbGx5IHdvdWxkIG5lZWQgbm8gdGVtcG9yYXJpZXMsIGFuZCBubworICAgICBJZiBnY2Mgd2FzIGFscmlnaHQsIGl0IHJlYWxseSB3b3VsZCBuZWVkIG5vIHRlbXBvcmFyaWVzLCBhbmQgbm8KICAgICAgc3RhY2sgc3BhY2UgdG8gc2F2ZSBzdHVmZiBvbi4gKi8KIAogICByZWdpc3RlciB2b2lkICpyZXR1cm5fZHN0IF9fYXNtX18gKCJyMTAiKSA9IHBkc3Q7CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MTAvbGliL3VzZXJjb3B5LmMgYi9hcmNoL2NyaXMvYXJjaC12MTAvbGliL3VzZXJjb3B5LmMKaW5kZXggNDM3NzhkNS4uYTEyYzcwOCAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2xpYi91c2VyY29weS5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9saWIvdXNlcmNvcHkuYwpAQCAtMzgsNyArMzgsNyBAQAogICAgICBBcyBpdCBpcyBub3c6IHIxMCAtPiByMTM7IHIxMSAtPiByMTEgKG5vcCk7IHIxMiAtPiByMTIgKG5vcCkuCiAKICAgICAgRklYTUU6IENvbW1lbnQgZm9yIG9sZCBnY2MgdmVyc2lvbi4gIENoZWNrLgotICAgICBJZiBnY2Mgd2FzIGFsbHJpZ2h0LCBpdCByZWFsbHkgd291bGQgbmVlZCBubyB0ZW1wb3JhcmllcywgYW5kIG5vCisgICAgIElmIGdjYyB3YXMgYWxyaWdodCwgaXQgcmVhbGx5IHdvdWxkIG5lZWQgbm8gdGVtcG9yYXJpZXMsIGFuZCBubwogICAgICBzdGFjayBzcGFjZSB0byBzYXZlIHN0dWZmIG9uLiAqLwogCiAgIHJlZ2lzdGVyIGNoYXIgKmRzdCBfX2FzbV9fICgicjEzIikgPSBwZHN0OwpAQCAtMjAwLDcgKzIwMCw3IEBACiAgICAgIEFzIGl0IGlzIG5vdzogcjEwIC0+IHIxMzsgcjExIC0+IHIxMSAobm9wKTsgcjEyIC0+IHIxMiAobm9wKS4KIAogICAgICBGSVhNRTogQ29tbWVudCBmb3Igb2xkIGdjYyB2ZXJzaW9uLiAgQ2hlY2suCi0gICAgIElmIGdjYyB3YXMgYWxscmlnaHQsIGl0IHJlYWxseSB3b3VsZCBuZWVkIG5vIHRlbXBvcmFyaWVzLCBhbmQgbm8KKyAgICAgSWYgZ2NjIHdhcyBhbHJpZ2h0LCBpdCByZWFsbHkgd291bGQgbmVlZCBubyB0ZW1wb3JhcmllcywgYW5kIG5vCiAgICAgIHN0YWNrIHNwYWNlIHRvIHNhdmUgc3R1ZmYgb24uICAqLwogCiAgIHJlZ2lzdGVyIGNoYXIgKmRzdCBfX2FzbV9fICgicjEzIikgPSBwZHN0OwpAQCAtMzgwLDcgKzM4MCw3IEBACiAgICAgICBBcyBpdCBpcyBub3c6IHIxMCAtPiByMTM7IHIxMSAtPiByMTEgKG5vcCk7IHIxMiAtPiByMTIgKG5vcCkuCiAKICAgICAgRklYTUU6IENvbW1lbnQgZm9yIG9sZCBnY2MgdmVyc2lvbi4gIENoZWNrLgotICAgICBJZiBnY2Mgd2FzIGFsbHJpZ2h0LCBpdCByZWFsbHkgd291bGQgbmVlZCBubyB0ZW1wb3JhcmllcywgYW5kIG5vCisgICAgIElmIGdjYyB3YXMgYWxyaWdodCwgaXQgcmVhbGx5IHdvdWxkIG5lZWQgbm8gdGVtcG9yYXJpZXMsIGFuZCBubwogICAgICBzdGFjayBzcGFjZSB0byBzYXZlIHN0dWZmIG9uLiAqLwogCiAgIHJlZ2lzdGVyIGNoYXIgKmRzdCBfX2FzbV9fICgicjEzIikgPSBwdG87CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvYm9vdC9jb21wcmVzc2VkL21pc2MuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L2NvbXByZXNzZWQvbWlzYy5jCmluZGV4IDExOTAyNjkuLjAxNjliYTEgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L2NvbXByZXNzZWQvbWlzYy5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9ib290L2NvbXByZXNzZWQvbWlzYy5jCkBAIC04LDcgKzgsNyBAQAogICoKICAqIG1hbGxvYyBieSBIYW5udSBTYXZvbGFpbmVuIDE5OTMgYW5kIE1hdHRoaWFzIFVybGljaHMgMTk5NAogICogcHV0cyBieSBOaWNrIEhvbGxvd2F5IDE5OTMsIGJldHRlciBwdXRzIGJ5IE1hcnRpbiBNYXJlcyAxOTk1Ci0gKiBhZG9wdGF0aW9uIGZvciBMaW51eC9DUklTIEF4aXMgQ29tbXVuaWNhdGlvbnMgQUIsIDE5OTkKKyAqIGFkYXB0YXRpb24gZm9yIExpbnV4L0NSSVMgQXhpcyBDb21tdW5pY2F0aW9ucyBBQiwgMTk5OQogICoKICAqLwogCkBAIC0xNTEsNyArMTUxLDcgQEAKIAlkbyB7CiAJCXJzID0gUkVHX1JEKHNlciwgcmVnaV9zZXIsIHJzX3N0YXRfZGluKTsKIAl9Ci0Jd2hpbGUgKCFycy50cl9yZHkpOy8qIFdhaXQgZm9yIHRyYW5jZWl2ZXIuICovCisJd2hpbGUgKCFycy50cl9yZHkpOy8qIFdhaXQgZm9yIHRyYW5zY2VpdmVyLiAqLwogCiAJUkVHX1dSKHNlciwgcmVnaV9zZXIsIHJ3X2RvdXQsIGRvdXQpOwogfQpAQCAtMjY0LDcgKzI2NCw3IEBACiAJdHJfY3RybC5zdG9wX2JpdHMgPSAxOwkvKiAyIHN0b3AgYml0cy4gKi8KIAogCS8qCi0JICogVGhlIGJhdWRyYXRlIHNldHVwIGlzIGEgYml0IGZpc2h5LCBidXQgaW4gdGhlIGVuZCB0aGUgdHJhbmNlaXZlciBpcworCSAqIFRoZSBiYXVkcmF0ZSBzZXR1cCBpcyBhIGJpdCBmaXNoeSwgYnV0IGluIHRoZSBlbmQgdGhlIHRyYW5zY2VpdmVyIGlzCiAJICogc2V0IHRvIDQ4MDAgYW5kIHRoZSByZWNlaXZlciB0byAxMTUyMDAuIFRoZSBtYWdpYyB2YWx1ZSBpcwogCSAqIDI5LjQ5MyBNSHouCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9heGlzZmxhc2htYXAuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jCmluZGV4IDUxODBkNDUuLjNlYzEyZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jCkBAIC0yMDUsNyArMjA1LDcgQEAKIC8qCiAgKiBQcm9iZSBlYWNoIGNoaXAgc2VsZWN0IGluZGl2aWR1YWxseSBmb3IgZmxhc2ggY2hpcHMuIElmIHRoZXJlIGFyZSBjaGlwcyBvbgogICogYm90aCBjc2UwIGFuZCBjc2UxLCB0aGUgbXRkX2luZm8gc3RydWN0cyB3aWxsIGJlIGNvbmNhdGVuYXRlZCB0byBvbmUgc3RydWN0Ci0gKiBzbyB0aGF0IE1URCBwYXJ0aXRpb25zIGNhbiBjcm9zcyBjaGlwIGJvdW5kcmllcy4KKyAqIHNvIHRoYXQgTVREIHBhcnRpdGlvbnMgY2FuIGNyb3NzIGNoaXAgYm91bmRhcmllcy4KICAqCiAgKiBUaGUgb25seSBrbm93biByZXN0cmljdGlvbiB0byBob3cgeW91IGNhbiBtb3VudCB5b3VyIGNoaXBzIGlzIHRoYXQgZWFjaAogICogY2hpcCBzZWxlY3QgbXVzdCBob2xkIHNpbWlsYXIgZmxhc2ggY2hpcHMuIEJ1dCB5b3UgbmVlZCBleHRlcm5hbCBoYXJkd2FyZQpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvaTJjLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9pMmMuYwppbmRleCBlMTJmNmNjLi5mMWVkZDJlIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9pMmMuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9pMmMuYwpAQCAtMjc1LDcgKzI3NSw3IEBACiAJCWFjayA9IDA7CiAJaTJjX2RlbGF5KENMT0NLX0hJR0hfVElNRS8yKTsKIAlpZighYWNrKXsKLQkJaWYoIWkyY19nZXRiaXQoKSkgLyogcmVjZWl2ZXIgcHVsbGQgU0RBIGxvdyAqLworCQlpZighaTJjX2dldGJpdCgpKSAvKiByZWNlaXZlciBwdWxsZWQgU0RBIGxvdyAqLwogCQkJYWNrID0gMTsKIAkJaTJjX2RlbGF5KENMT0NLX0hJR0hfVElNRS8yKTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9uYW5kZmxhc2guYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL25hbmRmbGFzaC5jCmluZGV4IDkzZGRlYTRkLi41Y2UwMTVjIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9uYW5kZmxhc2guYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9uYW5kZmxhc2guYwpAQCAtMTM4LDcgKzEzOCw3IEBACiAJLyogRW5hYmxlIHRoZSBmb2xsb3dpbmcgZm9yIGEgZmxhc2ggYmFzZWQgYmFkIGJsb2NrIHRhYmxlICovCiAJdGhpcy0+b3B0aW9ucyA9IE5BTkRfVVNFX0ZMQVNIX0JCVDsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4gKGNyaXN2MzJfbXRkLCAxKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0X2lvcjsKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL3BjZjg1NjMuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL3BjZjg1NjMuYwppbmRleCBkYTQ3OWExLi42ZGJkNzAwIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9wY2Y4NTYzLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvcGNmODU2My5jCkBAIC00LDcgKzQsNyBAQAogICogRnJvbSBQaGlsbGlwcycgZGF0YXNoZWV0OgogICoKICAqIFRoZSBQQ0Y4NTYzIGlzIGEgQ01PUyByZWFsLXRpbWUgY2xvY2svY2FsZW5kYXIgb3B0aW1pemVkIGZvciBsb3cgcG93ZXIKLSAqIGNvbnN1bXB0aW9uLiBBIHByb2dyYW1tYWJsZSBjbG9jayBvdXRwdXQsIGludGVydXB0IG91dHB1dCBhbmQgdm9sdGFnZQorICogY29uc3VtcHRpb24uIEEgcHJvZ3JhbW1hYmxlIGNsb2NrIG91dHB1dCwgaW50ZXJydXB0IG91dHB1dCBhbmQgdm9sdGFnZQogICogbG93IGRldGVjdG9yIGFyZSBhbHNvIHByb3ZpZGVkLiBBbGwgYWRkcmVzcyBhbmQgZGF0YSBhcmUgdHJhbnNmZXJyZWQKICAqIHNlcmlhbGx5IHZpYSB0d28tbGluZSBiaWRpcmVjdGlvbmFsIEkyQy1idXMuIE1heGltdW0gYnVzIHNwZWVkIGlzCiAgKiA0MDAga2JpdHMvcy4gVGhlIGJ1aWx0LWluIHdvcmQgYWRkcmVzcyByZWdpc3RlciBpcyBpbmNyZW1lbnRlZApkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9mYXN0dGltZXIuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvZmFzdHRpbWVyLmMKaW5kZXggNzllMWU0Yy4uYjQwNTUxZiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9mYXN0dGltZXIuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2Zhc3R0aW1lci5jCkBAIC05Nyw3ICs5Nyw3IEBACiAgKiB3aXRoIHRpbWUgYmFzZWQgb24gamlmZmllcyBhbmQgKlJfVElNRVIwX0RBVEEsIHVzZXMgYSB0YWJsZQogICogZm9yIGZhc3QgY29udmVyc2lvbiBvZiB0aW1lciB2YWx1ZSB0byBtaWNyb3NlY29uZHMuCiAgKiAoTXVjaCBmYXN0ZXIgdGhlIHN0YW5kYXJkIGRvX2dldHRpbWVvZmRheSgpIGFuZCB3ZSBkb24ndCByZWFsbHkKLSAqIHdhbid0IHRvIHVzZSB0aGUgdHJ1ZSB0aW1lIC0gd2Ugd2FuJ3QgdGhlICJ1cHRpbWUiIHNvIHRpbWVycyBkb24ndCBzY3JldyB1cAorICogd2FudCB0byB1c2UgdGhlIHRydWUgdGltZSAtIHdlIHdhbnQgdGhlICJ1cHRpbWUiIHNvIHRpbWVycyBkb24ndCBzY3JldyB1cAogICogd2hlbiB3ZSBjaGFuZ2UgdGhlIHRpbWUuCiAgKiBUT0RPOiBBZGQgZWZmaWNpZW50IHN1cHBvcnQgZm9yIGNvbnRpbnVvdXMgdGltZXJzIGFzIHdlbGwuCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9pcnEuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvaXJxLmMKaW5kZXggY2MzNjFiZi4uYTlhY2FhMjcgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9pcnEuYwpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZpcnFfbG9jaywgZmxhZ3MpOwogICAgICAgICBpbnRyX21hc2sgPSBSRUdfUkRfSU5UKGludHJfdmVjdCwgaXJxX3JlZ3NbY3B1XSwgcndfbWFzayk7CiAKLQkvKiBSZW1lbWJlcjsgMSBsZXQgdGhydSwgMCBibG9jay4gKi8KKwkvKiBSZW1lbWJlcjsgMSBsZXQgdGhyb3VnaCwgMCBibG9jay4gKi8KIAlpbnRyX21hc2sgJj0gfigxIDw8IChpcnEgLSBGSVJTVF9JUlEpKTsKIAogCVJFR19XUl9JTlQoaW50cl92ZWN0LCBpcnFfcmVnc1tjcHVdLCByd19tYXNrLCBpbnRyX21hc2spOwpAQCAtMTU2LDcgKzE1Niw3IEBACiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZpcnFfbG9jaywgZmxhZ3MpOwogICAgICAgICBpbnRyX21hc2sgPSBSRUdfUkRfSU5UKGludHJfdmVjdCwgaXJxX3JlZ3NbY3B1XSwgcndfbWFzayk7CiAKLQkvKiBSZW1lbWJlcjsgMSBsZXQgdGhydSwgMCBibG9jay4gKi8KKwkvKiBSZW1lbWJlcjsgMSBsZXQgdGhyb3VnaCwgMCBibG9jay4gKi8KIAlpbnRyX21hc2sgfD0gKDEgPDwgKGlycSAtIEZJUlNUX0lSUSkpOwogCiAJUkVHX1dSX0lOVChpbnRyX3ZlY3QsIGlycV9yZWdzW2NwdV0sIHJ3X21hc2ssIGludHJfbWFzayk7CkBAIC0zMDgsNyArMzA4LDcgQEAKIAkgKi8KIAlpcnFfZW50ZXIoKTsKIAotCS8qIEdldCB3aGljaCBJUlFzIHRoYXQgaGFwcGVuZC4gKi8KKwkvKiBHZXQgd2hpY2ggSVJRcyB0aGF0IGhhcHBlbmVkLiAqLwogCW1hc2tlZCA9IFJFR19SRF9JTlQoaW50cl92ZWN0LCBpcnFfcmVnc1tjcHVdLCByX21hc2tlZF92ZWN0KTsKIAogCS8qIENhbGN1bGF0ZSBuZXcgSVJRIG1hc2sgd2l0aCB0aGVzZSBJUlFzIGRpc2FibGVkLiAqLwpAQCAtMzY2LDcgKzM2Niw3IEBACiAJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogCQlldHJheF9pcnYtPnZbaV0gPSB3ZWlyZF9pcnE7CiAKLQkvKiBQb2ludCBhbGwgSVJRJ3MgdG8gYmFkIGhhbmRsZXJzLiAqLworCS8qIFBvaW50IGFsbCBJUlFzIHRvIGJhZCBoYW5kbGVycy4gKi8KIAlmb3IgKGkgPSBGSVJTVF9JUlEsIGogPSAwOyBqIDwgTlJfSVJRUzsgaSsrLCBqKyspIHsKIAkJaXJxX2Rlc2Nbal0uY2hpcCA9ICZjcmlzdjMyX2lycV90eXBlOwogCQlzZXRfZXhjZXB0aW9uX3ZlY3RvcihpLCBpbnRlcnJ1cHRbal0pOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYwppbmRleCA2MzI2MzUxLi5iNzJhMTU1IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYwpAQCAtMTYyLDcgKzE2Miw3IEBACiAJLyogUHV0IHRoZSBzd2l0Y2ggc3RhY2sgcmlnaHQgYmVsb3cgdGhlIHB0X3JlZ3MuICovCiAJc3dzdGFjayA9ICgoc3RydWN0IHN3aXRjaF9zdGFjayAqKSBjaGlsZHJlZ3MpIC0gMTsKIAotCS8qIFBhcmFtYXRlciB0byByZXRfZnJvbV9zeXNfY2FsbC4gMCBpcyBkb24ndCByZXN0YXJ0IHRoZSBzeXNjYWxsLiAqLworCS8qIFBhcmFtZXRlciB0byByZXRfZnJvbV9zeXNfY2FsbC4gMCBpcyBkb24ndCByZXN0YXJ0IHRoZSBzeXNjYWxsLiAqLwogCXN3c3RhY2stPnI5ID0gMDsKIAogCS8qCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3NpZ25hbC5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9zaWduYWwuYwppbmRleCA3Y2Q2YWM4Li4wMjRjYzY5IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvc2lnbmFsLmMKQEAgLTM0Nyw3ICszNDcsNyBAQAogLyogR3JhYiBhbmQgc2V0dXAgYSBzaWduYWwgZnJhbWUuCiAgKgogICogQmFzaWNhbGx5IGEgbG90IG9mIHN0YXRlLWluZm8gaXMgc3RhY2tlZCwgYW5kIGFycmFuZ2VkIGZvciB0aGUKLSAqIHVzZXItbW9kZSBwcm9ncmFtIHRvIHJldHVybiB0byB0aGUga2VybmVsIHVzaW5nIGVpdGhlciBhIHRyYW1waWxpbmUKKyAqIHVzZXItbW9kZSBwcm9ncmFtIHRvIHJldHVybiB0byB0aGUga2VybmVsIHVzaW5nIGVpdGhlciBhIHRyYW1wb2xpbmUKICAqIHdoaWNoIHBlcmZvcm1zIHRoZSBzeXNjYWxsIHNpZ3JldHVybigpLCBvciBhIHByb3ZpZGVkIHVzZXItbW9kZQogICogdHJhbXBvbGluZS4KICAgKi8KQEAgLTY0MSw3ICs2NDEsNyBAQAogCQl1c2VyX3JlZ3ModGkpLT5zcGMgPSAwOwogCX0KIAkvKiBGSVhNRTogRmlsdGVyIG91dCBmYWxzZSBoL3cgYnJlYWtwb2ludCBoaXRzIChpLmUuIEVEQQotCSAgIG5vdCB3aXRoaW5nIGFueSBjb25maWd1cmVkIGgvdyBicmVha3BvaW50IHJhbmdlKS4gU3luY2hyb25pemUgd2l0aAorCSAgIG5vdCB3aXRoaW4gYW55IGNvbmZpZ3VyZWQgaC93IGJyZWFrcG9pbnQgcmFuZ2UpLiBTeW5jaHJvbml6ZSB3aXRoCiAJICAgd2hhdCBhbHJlYWR5IGV4aXN0cyBmb3Iga2VybmVsIGRlYnVnZ2luZy4gICovCiAJaWYgKCgodXNlcl9yZWdzKHRpKS0+ZXhzICYgMHhmZjAwKSA+PiA4KSA9PSBCUkVBS184X0lOVFJfVkVDVCkgewogCQkvKiBCcmVhayA4OiBzdWJ0cmFjdCAyIGZyb20gRVJQIHVubGVzcyBpbiBhIGRlbGF5IHNsb3QuICovCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3NtcC5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9zbXAuYwppbmRleCA2OTc0OTRiLi4xNzFjOTZlIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3NtcC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvc21wLmMKQEAgLTE0Miw3ICsxNDIsNyBAQAogCXJldHVybiAtMTsKIH0KIAotLyogU2Vjb25kYXJ5IENQVXMgc3RhcnRzIHVpbmcgQyBoZXJlLiBIZXJlIHdlIG5lZWQgdG8gc2V0dXAgQ1BVCisvKiBTZWNvbmRhcnkgQ1BVcyBzdGFydHMgdXNpbmcgQyBoZXJlLiBIZXJlIHdlIG5lZWQgdG8gc2V0dXAgQ1BVCiAgKiBzcGVjaWZpYyBzdHVmZiBzdWNoIGFzIHRoZSBsb2NhbCB0aW1lciBhbmQgdGhlIE1NVS4gKi8KIHZvaWQgX19pbml0IHNtcF9jYWxsaW4odm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvdGltZS5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC90aW1lLmMKaW5kZXggYmUwYTAxNi4uMmY3ZThlMiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC90aW1lLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC90aW1lLmMKQEAgLTk5LDcgKzk5LDcgQEAKIC8qIEZyb20gdGltZXIgTURTIGRlc2NyaWJpbmcgdGhlIGhhcmR3YXJlIHdhdGNoZG9nOgogICogNC4zLjEgV2F0Y2hkb2cgT3BlcmF0aW9uCiAgKiBUaGUgd2F0Y2hkb2cgdGltZXIgaXMgYW4gOC1iaXQgdGltZXIgd2l0aCBhIGNvbmZpZ3VyYWJsZSBzdGFydCB2YWx1ZS4KLSAqIE9uY2Ugc3RhcnRlZCB0aGUgd2hhdGNoZG9nIGNvdW50cyBkb3dud2FyZHMgd2l0aCBhIGZyZXF1ZW5jeSBvZiA3NjMgSHoKKyAqIE9uY2Ugc3RhcnRlZCB0aGUgd2F0Y2hkb2cgY291bnRzIGRvd253YXJkcyB3aXRoIGEgZnJlcXVlbmN5IG9mIDc2MyBIegogICogKDEwMC8xMzEwNzIgTUh6KS4gV2hlbiB0aGUgd2F0Y2hkb2cgY291bnRzIGRvd24gdG8gMSwgaXQgZ2VuZXJhdGVzIGFuCiAgKiBOTUkgKE5vbiBNYXNrYWJsZSBJbnRlcnJ1cHQpLCBhbmQgd2hlbiBpdCBjb3VudHMgZG93biB0byAwLCBpdCByZXNldHMgdGhlCiAgKiBjaGlwLgpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC90cmFwcy5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC90cmFwcy5jCmluZGV4IDI0NjJiMWUuLjE3ZmQzZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3RyYXBzLmMKQEAgLTEwNSw3ICsxMDUsNyBAQAogCiAvKgogICogVGhpcyBnZXRzIGNhbGxlZCBmcm9tIGVudHJ5LlMgd2hlbiB0aGUgd2F0Y2hkb2cgaGFzIGJpdHRlbi4gU2hvdyBzb21ldGhpbmcKLSAqIHNpbWlsaWFyIHRvIGFuIE9vcHMgZHVtcCwgYW5kIGlmIHRoZSBrZXJuZWwgaWYgY29uZmlndXJlZCB0byBiZSBhIG5pY2UgZG9nZ3k7CisgKiBzaW1pbGFyIHRvIGFuIE9vcHMgZHVtcCwgYW5kIGlmIHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZCB0byBiZSBhIG5pY2UgZG9nZ3k7CiAgKiBoYWx0IGluc3RlYWQgb2YgcmVib290LgogICovCiB2b2lkCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvbGliL2RyYW1faW5pdC5TIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2xpYi9kcmFtX2luaXQuUwppbmRleCAxNThiM2RiLi4yMThmYmUyIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvbGliL2RyYW1faW5pdC5TCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9saWIvZHJhbV9pbml0LlMKQEAgLTEyLDcgKzEyLDcgQEAKICAqLwogCiAvKiBKdXN0IHRvIGJlIGNlcnRhaW4gdGhlIGNvbmZpZyBmaWxlIGlzIGluY2x1ZGVkLCB3ZSBpbmNsdWRlIGl0IGhlcmUKLSAqIGV4cGxpY2l0ZWx5IGluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIGl0IGJlaW5nIGluY2x1ZGVkIGluIHRoZSBmaWxlIHRoYXQKKyAqIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiBkZXBlbmRpbmcgb24gaXQgYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGZpbGUgdGhhdAogICogdXNlcyB0aGlzIGNvZGUuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2xpYi9zdHJpbmcuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9saWIvc3RyaW5nLmMKaW5kZXggOThlMjgyYS4uNjc0MGIyYyAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2xpYi9zdHJpbmcuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvbGliL3N0cmluZy5jCkBAIC00MSw3ICs0MSw3IEBACiAgICAgIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgaXMgYWJsZSB0byBtYWtlIHNvbWV0aGluZyB1c2VmdWwgb2YgdGhpcy4KICAgICAgIEFzIGl0IGlzIG5vdzogcjEwIC0+IHIxMzsgcjExIC0+IHIxMSAobm9wKTsgcjEyIC0+IHIxMiAobm9wKS4KIAotICAgICBJZiBnY2Mgd2FzIGFsbHJpZ2h0LCBpdCByZWFsbHkgd291bGQgbmVlZCBubyB0ZW1wb3JhcmllcywgYW5kIG5vCisgICAgIElmIGdjYyB3YXMgYWxyaWdodCwgaXQgcmVhbGx5IHdvdWxkIG5lZWQgbm8gdGVtcG9yYXJpZXMsIGFuZCBubwogICAgICBzdGFjayBzcGFjZSB0byBzYXZlIHN0dWZmIG9uLiAqLwogCiAgIHJlZ2lzdGVyIHZvaWQgKnJldHVybl9kc3QgX19hc21fXyAoInIxMCIpID0gcGRzdDsKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9saWIvdXNlcmNvcHkuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9saWIvdXNlcmNvcHkuYwppbmRleCBmMGIwODQ2Li4wNGQwY2YzIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvbGliL3VzZXJjb3B5LmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2xpYi91c2VyY29weS5jCkBAIC0zNCw3ICszNCw3IEBACiAgICAgIEFzIGl0IGlzIG5vdzogcjEwIC0+IHIxMzsgcjExIC0+IHIxMSAobm9wKTsgcjEyIC0+IHIxMiAobm9wKS4KIAogICAgICBGSVhNRTogQ29tbWVudCBmb3Igb2xkIGdjYyB2ZXJzaW9uLiAgQ2hlY2suCi0gICAgIElmIGdjYyB3YXMgYWxscmlnaHQsIGl0IHJlYWxseSB3b3VsZCBuZWVkIG5vIHRlbXBvcmFyaWVzLCBhbmQgbm8KKyAgICAgSWYgZ2NjIHdhcyBhbHJpZ2h0LCBpdCByZWFsbHkgd291bGQgbmVlZCBubyB0ZW1wb3JhcmllcywgYW5kIG5vCiAgICAgIHN0YWNrIHNwYWNlIHRvIHNhdmUgc3R1ZmYgb24uICovCiAKICAgcmVnaXN0ZXIgY2hhciAqZHN0IF9fYXNtX18gKCJyMTMiKSA9IHBkc3Q7CkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgQXMgaXQgaXMgbm93OiByMTAgLT4gcjEzOyByMTEgLT4gcjExIChub3ApOyByMTIgLT4gcjEyIChub3ApLgogCiAgICAgIEZJWE1FOiBDb21tZW50IGZvciBvbGQgZ2NjIHZlcnNpb24uICBDaGVjay4KLSAgICAgSWYgZ2NjIHdhcyBhbGxyaWdodCwgaXQgcmVhbGx5IHdvdWxkIG5lZWQgbm8gdGVtcG9yYXJpZXMsIGFuZCBubworICAgICBJZiBnY2Mgd2FzIGFscmlnaHQsIGl0IHJlYWxseSB3b3VsZCBuZWVkIG5vIHRlbXBvcmFyaWVzLCBhbmQgbm8KICAgICAgc3RhY2sgc3BhY2UgdG8gc2F2ZSBzdHVmZiBvbi4gICovCiAKICAgcmVnaXN0ZXIgY2hhciAqZHN0IF9fYXNtX18gKCJyMTMiKSA9IHBkc3Q7CkBAIC0zMzIsNyArMzMyLDcgQEAKICAgICAgIEFzIGl0IGlzIG5vdzogcjEwIC0+IHIxMzsgcjExIC0+IHIxMSAobm9wKTsgcjEyIC0+IHIxMiAobm9wKS4KIAogICAgICBGSVhNRTogQ29tbWVudCBmb3Igb2xkIGdjYyB2ZXJzaW9uLiAgQ2hlY2suCi0gICAgIElmIGdjYyB3YXMgYWxscmlnaHQsIGl0IHJlYWxseSB3b3VsZCBuZWVkIG5vIHRlbXBvcmFyaWVzLCBhbmQgbm8KKyAgICAgSWYgZ2NjIHdhcyBhbHJpZ2h0LCBpdCByZWFsbHkgd291bGQgbmVlZCBubyB0ZW1wb3JhcmllcywgYW5kIG5vCiAgICAgIHN0YWNrIHNwYWNlIHRvIHNhdmUgc3R1ZmYgb24uICovCiAKICAgcmVnaXN0ZXIgY2hhciAqZHN0IF9fYXNtX18gKCJyMTMiKSA9IHB0bzsKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9tbS90bGIuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9tbS90bGIuYwppbmRleCBjMmQxMmU5Li5hMDc2ZWY2IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvbW0vdGxiLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL21tL3RsYi5jCkBAIC0zMCw4ICszMCw4IEBACiAgKiBUaGUgVExCIGNhbiBob3N0IHVwIHRvIDI1NiBkaWZmZXJlbnQgbW0gY29udGV4dHMgYXQgdGhlIHNhbWUgdGltZS4gVGhlIHJ1bm5pbmcKICAqIGNvbnRleHQgaXMgZm91bmQgaW4gdGhlIFBJRCByZWdpc3Rlci4gRWFjaCBUTEIgZW50cnkgY29udGFpbnMgYSBwYWdlX2lkIHRoYXQKICAqIGhhcyB0byBtYXRjaCB0aGUgUElEIHJlZ2lzdGVyIHRvIGdpdmUgYSBoaXQuIHBhZ2VfaWRfbWFwIGtlZXBzIHRyYWNrIG9mIHdoaWNoCi0gKiBtbSdzIGlzIGFzc2lnbmVkIHRvIHdoaWNoIHBhZ2VfaWQncywgbWFraW5nIHN1cmUgaXQncyBrbm93biB3aGVuIHRvCi0gKiBpbnZhbGlkYXRlIFRMQiBlbnRyaWVzLgorICogbW0gaXMgYXNzaWduZWQgdG8gd2hpY2ggcGFnZV9pZCwgbWFraW5nIHN1cmUgaXQncyBrbm93biB3aGVuIHRvIGludmFsaWRhdGUgVExCCisgKiBlbnRyaWVzLgogICoKICAqIFRoZSBsYXN0IHBhZ2VfaWQgaXMgbmV2ZXIgcnVubmluZywgaXQgaXMgdXNlZCBhcyBhbiBpbnZhbGlkIHBhZ2VfaWQgc28gdGhhdAogICogaXQncyBwb3NzaWJsZSB0byBtYWtlIFRMQiBlbnRyaWVzIHRoYXQgd2lsbCBuZXJ2ZXIgbWF0Y2guCkBAIC0xODgsNyArMTg4LDcgQEAKIAlzcGluX3VubG9jaygmbW11X2NvbnRleHRfbG9jayk7CiAKIAkvKgotCSAqIFJlbWVtYmVyIHRoZSBwZ2QgZm9yIHRoZSBmYXVsdCBoYW5kbGVycy4gS2VlcCBhIHNlcGVyYXRlIGNvcHkgb2YgaXQKKwkgKiBSZW1lbWJlciB0aGUgcGdkIGZvciB0aGUgZmF1bHQgaGFuZGxlcnMuIEtlZXAgYSBzZXBhcmF0ZSBjb3B5IG9mIGl0CiAJICogYmVjYXVzZSBjdXJyZW50IGFuZCBhY3RpdmVfbW0gbWlnaHQgYmUgaW52YWxpZCBhdCBwb2ludHMgd2hlcmUKIAkgKiB0aGVyZSdzIHN0aWxsIGEgbmVlZCB0byBkZXJlZmVyIHRoZSBwZ2QuCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMva2VybmVsL2lycS5jIGIvYXJjaC9jcmlzL2tlcm5lbC9pcnEuYwppbmRleCA5MDNlYTYyLi41YzI3ZmY4IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMva2VybmVsL2lycS5jCisrKyBiL2FyY2gvY3Jpcy9rZXJuZWwvaXJxLmMKQEAgLTcsNyArNyw3IEBACiAgKiAgICAgIEF1dGhvcnM6IEJqb3JuIFdlc2VuIChiam9ybndAYXhpcy5jb20pCiAgKgogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjb2RlIHVzZWQgYnkgdmFyaW91cyBJUlEgaGFuZGxpbmcgcm91dGluZXM6Ci0gKiBhc2tpbmcgZm9yIGRpZmZlcmVudCBJUlEncyBzaG91bGQgYmUgZG9uZSB0aHJvdWdoIHRoZXNlIHJvdXRpbmVzCisgKiBhc2tpbmcgZm9yIGRpZmZlcmVudCBJUlFzIHNob3VsZCBiZSBkb25lIHRocm91Z2ggdGhlc2Ugcm91dGluZXMKICAqIGluc3RlYWQgb2YganVzdCBncmFiYmluZyB0aGVtLiBUaHVzIHNldHVwcyB3aXRoIGRpZmZlcmVudCBJUlEgbnVtYmVycwogICogc2hvdWxkbid0IHJlc3VsdCBpbiBhbnkgd2VpcmQgc3VycHJpc2VzLCBhbmQgaW5zdGFsbGluZyBuZXcgaGFuZGxlcnMKICAqIHNob3VsZCBiZSBlYXNpZXIuCkBAIC0xNSw3ICsxNSw3IEBACiAgKi8KIAogLyoKLSAqIElSUSdzIGFyZSBpbiBmYWN0IGltcGxlbWVudGVkIGEgYml0IGxpa2Ugc2lnbmFsIGhhbmRsZXJzIGZvciB0aGUga2VybmVsLgorICogSVJRcyBhcmUgaW4gZmFjdCBpbXBsZW1lbnRlZCBhIGJpdCBsaWtlIHNpZ25hbCBoYW5kbGVycyBmb3IgdGhlIGtlcm5lbC4KICAqIE5hdHVyYWxseSBpdCdzIG5vdCBhIDE6MSByZWxhdGlvbiwgYnV0IHRoZXJlIGFyZSBzaW1pbGFyaXRpZXMuCiAgKi8KIApAQCAtODMsOSArODMsOSBAQAogCiAKIC8qIGNhbGxlZCBieSB0aGUgYXNzZW1ibGVyIElSUSBlbnRyeSBmdW5jdGlvbnMgZGVmaW5lZCBpbiBpcnEuaAotICogdG8gZGlzcGF0Y2ggdGhlIGludGVycnVwdHMgdG8gcmVnaXN0cmVkIGhhbmRsZXJzCisgKiB0byBkaXNwYXRjaCB0aGUgaW50ZXJydXB0cyB0byByZWdpc3RlcmVkIGhhbmRsZXJzCiAgKiBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCB1cG9uIGVudHJ5IC0gZGVwZW5kaW5nIG9uIGlmIHRoZQotICogaW50ZXJydXB0IHdhcyByZWdpc3RyZWQgd2l0aCBJUlFGX0RJU0FCTEVEIG9yIG5vdCwgaW50ZXJydXB0cworICogaW50ZXJydXB0IHdhcyByZWdpc3RlcmVkIHdpdGggSVJRRl9ESVNBQkxFRCBvciBub3QsIGludGVycnVwdHMKICAqIGFyZSByZS1lbmFibGVkIG9yIG5vdC4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvbW0vZmF1bHQuYyBiL2FyY2gvY3Jpcy9tbS9mYXVsdC5jCmluZGV4IDhhYWI4MTQuLjMwMzRmM2YgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9tbS9mYXVsdC5jCisrKyBiL2FyY2gvY3Jpcy9tbS9mYXVsdC5jCkBAIC0xMyw3ICsxMyw3IEBACiAgKiAgRml4ZWQgd2FybmluZy4KICAqCiAgKiAgUmV2aXNpb24gMS4xOCAgMjAwNS8wMS8xMiAwODoxMDoxNCAgc3RhcnZpawotICogIFJlYWRkZWQgdGhlIGNoYW5nZSBvZiBmcmFtZXR5cGUgd2hlbiBoYW5kbGluZyBrZXJuZWwgcGFnZSBmYXVsdCBmaXh1cAorICogIFJlLWFkZGVkIHRoZSBjaGFuZ2Ugb2YgZnJhbWV0eXBlIHdoZW4gaGFuZGxpbmcga2VybmVsIHBhZ2UgZmF1bHQgZml4dXAKICAqICBmb3IgdjEwLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCB0aGF0IHRoZSBDUFUgcmVtYWtlcyB0aGUgZmF1bHRpbmcKICAqICBhY2Nlc3MuCiAgKgpAQCAtNDksNyArNDksNyBAQAogICoKICAqICBSZXZpc2lvbiAxLjggIDIwMDMvMDcvMDQgMTM6MDI6NDggIHRvYmlhc2EKICAqICBNb3ZlZCBjb2RlIHNuaXBwZXQgZnJvbSBhcmNoL2NyaXMvbW0vZmF1bHQuYyB0aGF0IHNlYXJjaGVzIGZvciBmaXh1cCBjb2RlCi0gKiAgdG8gc2VwZXJhdGUgZnVuY3Rpb24gaW4gYXJjaC1zcGVjaWZpYyBmaWxlcy4KKyAqICB0byBzZXBhcmF0ZSBmdW5jdGlvbiBpbiBhcmNoLXNwZWNpZmljIGZpbGVzLgogICoKICAqICBSZXZpc2lvbiAxLjcgIDIwMDMvMDEvMjIgMDY6NDg6MzggIHN0YXJ2aWsKICAqICBGaXhlZCB3YXJuaW5ncyBpc3N1ZWQgYnkgR0NDIDMuMi4xCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvbW0vaW5pdC5jIGIvYXJjaC9jcmlzL21tL2luaXQuYwppbmRleCBiNzg0MmZmLi4wYzgzM2QxIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvbW0vaW5pdC5jCisrKyBiL2FyY2gvY3Jpcy9tbS9pbml0LmMKQEAgLTgsNyArOCw3IEBACiAgKgogICogICRMb2c6IGluaXQuYyx2ICQKICAqICBSZXZpc2lvbiAxLjExICAyMDA0LzA1LzI4IDA5OjI4OjU2ICBzdGFydmlrCi0gKiAgQ2FsY3VsYXRpb24gb2YgbG9vcHNfcGVyX3VzZWMgbW92ZWQgYmVjYXVzZSBpbml0YWxpemF0aW9uIG9yZGVyIGhhcyBjaGFuZ2VkCisgKiAgQ2FsY3VsYXRpb24gb2YgbG9vcHNfcGVyX3VzZWMgbW92ZWQgYmVjYXVzZSBpbml0aWFsaXphdGlvbiBvcmRlciBoYXMgY2hhbmdlZAogICogIGluIExpbnV4IDIuNi4KICAqCiAgKiAgUmV2aXNpb24gMS4xMCAgMjAwNC8wNS8xNCAwNzo1ODowNSAgc3RhcnZpawpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL21tL3RsYi5jIGIvYXJjaC9jcmlzL21tL3RsYi5jCmluZGV4IGM0YTk4ZTIuLmI3ZjhkZTUgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9tbS90bGIuYworKysgYi9hcmNoL2NyaXMvbW0vdGxiLmMKQEAgLTE2LDcgKzE2LDcgQEAKIC8qIFRoZSBUTEIgY2FuIGhvc3QgdXAgdG8gNjQgZGlmZmVyZW50IG1tIGNvbnRleHRzIGF0IHRoZSBzYW1lIHRpbWUuCiAgKiBUaGUgcnVubmluZyBjb250ZXh0IGlzIFJfTU1VX0NPTlRFWFQsIGFuZCBlYWNoIFRMQiBlbnRyeSBjb250YWlucyBhCiAgKiBwYWdlX2lkIHRoYXQgaGFzIHRvIG1hdGNoIHRvIGdpdmUgYSBoaXQuIEluIHBhZ2VfaWRfbWFwLCB3ZSBrZWVwIHRyYWNrCi0gKiBvZiB3aGljaCBtbSdzIHdlIGhhdmUgYXNzaWduZWQgd2hpY2ggcGFnZV9pZCdzLCBzbyB0aGF0IHdlIGtub3cgd2hlbgorICogb2Ygd2hpY2ggbW0gd2UgaGF2ZSBhc3NpZ25lZCB0byB3aGljaCBwYWdlX2lkLCBzbyB0aGF0IHdlIGtub3cgd2hlbgogICogdG8gaW52YWxpZGF0ZSBUTEIgZW50cmllcy4KICAqCiAgKiBUaGUgbGFzdCBwYWdlX2lkIGlzIG5ldmVyIHJ1bm5pbmcgLSBpdCBpcyB1c2VkIGFzIGFuIGludmFsaWQgcGFnZV9pZApkaWZmIC0tZ2l0IGEvYXJjaC9mcnYva2VybmVsL2lycS5jIGIvYXJjaC9mcnYva2VybmVsL2lycS5jCmluZGV4IDdkZGI2OTAuLjczYWJhZTc2IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9mcnYva2VybmVsL2lycS5jCkBAIC0xMzQsNyArMTM0LDcgQEAKIH07CiAKIC8qCi0gKiBoYW5kbGVzIGFsbCBub3JtYWwgZGV2aWNlIElSUSdzCisgKiBoYW5kbGVzIGFsbCBub3JtYWwgZGV2aWNlIElSUXMKICAqIC0gcmVnaXN0ZXJzIGFyZSByZWZlcnJlZCB0byBieSB0aGUgX19mcmFtZSB2YXJpYWJsZSAoR1IyOCkKICAqIC0gSVJRIGRpc3RyaWJ1dGlvbiBpcyBjb21wbGljYXRlZCBpbiB0aGlzIGFyY2ggYmVjYXVzZSBvZiB0aGUgbWFueSBQSUNzLCB0aGUKICAqICAgd2F5IHRoZXkgd29yayBhbmQgdGhlIHdheSB0aGV5IGNhc2NhZGUKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC9zZW1hcGhvcmUuYyBiL2FyY2gvZnJ2L2tlcm5lbC9zZW1hcGhvcmUuYwppbmRleCA4ZTE4MmNlLi43ZWUzYTE0IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvc2VtYXBob3JlLmMKKysrIGIvYXJjaC9mcnYva2VybmVsL3NlbWFwaG9yZS5jCkBAIC0xMzksNyArMTM5LDcgQEAKIAl3YWl0ZXIgPSBsaXN0X2VudHJ5KHNlbS0+d2FpdF9saXN0Lm5leHQsIHN0cnVjdCBzZW1fd2FpdGVyLCBsaXN0KTsKIAogCS8qIFdlIG11c3QgYmUgY2FyZWZ1bCBub3QgdG8gdG91Y2ggJ3dhaXRlcicgYWZ0ZXIgd2Ugc2V0IC0+dGFzayA9IE5VTEwuCi0JICogSXQgaXMgYW4gYWxsb2NhdGVkIG9uIHRoZSB3YWl0ZXIncyBzdGFjayBhbmQgbWF5IGJlY29tZSBpbnZhbGlkIGF0CisJICogSXQgaXMgYWxsb2NhdGVkIG9uIHRoZSB3YWl0ZXIncyBzdGFjayBhbmQgbWF5IGJlY29tZSBpbnZhbGlkIGF0CiAJICogYW55IHRpbWUgYWZ0ZXIgdGhhdCBwb2ludCAoZHVlIHRvIGEgd2FrZXVwIGZyb20gYW5vdGhlciBzb3VyY2UpLgogCSAqLwogCWxpc3RfZGVsX2luaXQoJndhaXRlci0+bGlzdCk7CmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvdGltZS5jIGIvYXJjaC9mcnYva2VybmVsL3RpbWUuYwppbmRleCBlODNlMGJjLi45MjVmYjAxIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC90aW1lLmMKQEAgLTY2LDcgKzY2LDcgQEAKIAkvKgogCSAqIEhlcmUgd2UgYXJlIGluIHRoZSB0aW1lciBpcnEgaGFuZGxlci4gV2UganVzdCBoYXZlIGlycXMgbG9jYWxseQogCSAqIGRpc2FibGVkIGJ1dCB3ZSBkb24ndCBrbm93IGlmIHRoZSB0aW1lcl9iaCBpcyBydW5uaW5nIG9uIHRoZSBvdGhlcgotCSAqIENQVS4gV2UgbmVlZCB0byBhdm9pZCB0byBTTVAgcmFjZSB3aXRoIGl0LiBOT1RFOiB3ZSBkb24nIHQgbmVlZAorCSAqIENQVS4gV2UgbmVlZCB0byBhdm9pZCB0byBTTVAgcmFjZSB3aXRoIGl0LiBOT1RFOiB3ZSBkb24ndCBuZWVkCiAJICogdGhlIGlycSB2ZXJzaW9uIG9mIHdyaXRlX2xvY2sgYmVjYXVzZSBhcyBqdXN0IHNhaWQgd2UgaGF2ZSBpcnEKIAkgKiBsb2NhbGx5IGRpc2FibGVkLiAtYXJjYQogCSAqLwpAQCAtMTI2LDcgKzEyNiw3IEBACiAKIAkvKiBGSVggYnkgZHFnIDogU2V0IHRvIHplcm8gZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IGhhdmUgdG9kICovCiAJLyogd2l0aG91dCB0aGlzIHRpbWUgaXMgdW5kZWZpbmVkIGFuZCBjYW4gb3ZlcmZsb3cgdGltZV90LCBjYXVzaW5nICAqLwotCS8qIHZlcnkgc3RhbmdlIGVycm9ycyAqLworCS8qIHZlcnkgc3RyYW5nZSBlcnJvcnMgKi8KIAl5ZWFyID0gMTk4MDsKIAltb24gPSBkYXkgPSAxOwogCWhvdXIgPSBtaW4gPSBzZWMgPSAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9oODMwMC9LY29uZmlnLmRlYnVnIGIvYXJjaC9oODMwMC9LY29uZmlnLmRlYnVnCmluZGV4IDk5NmQ5N2UuLmVlNjcxYzMgMTAwNjQ0Ci0tLSBhL2FyY2gvaDgzMDAvS2NvbmZpZy5kZWJ1ZworKysgYi9hcmNoL2g4MzAwL0tjb25maWcuZGVidWcKQEAgLTQyLDE2ICs0MiwxNiBAQAogCSAgUmVxdWlyZSBlQ29zL1JlZEJvb3QKIAogY29uZmlnIERFRkFVTFRfQ01ETElORQotCWJvb2wgIlVzZSBidWlsZGluIGNvbW1hbmRsaW5lIgorCWJvb2wgIlVzZSBidWlsdGluIGNvbW1hbmRsaW5lIgogCWRlZmF1bHQgbgogCWhlbHAKLQkgIGJ1aWxkaW4ga2VybmVsIGNvbW1hbmRsaW5lIGVuYWJsZWQuCisJICBidWlsdGluIGtlcm5lbCBjb21tYW5kbGluZSBlbmFibGVkLgogCiBjb25maWcgS0VSTkVMX0NPTU1BTkQKIAlzdHJpbmcgIkJ1aWxkaW4gY29tbW1hbmQgc3RyaW5nIgogCWRlcGVuZHMgb24gREVGQVVMVF9DTURMSU5FCiAJaGVscAotCSAgYnVpbGRpbiBrZXJuZWwgY29tbWFuZGxpbmUgc3RyaW5ncy4KKwkgIGJ1aWx0aW4ga2VybmVsIGNvbW1hbmRsaW5lIHN0cmluZ3MuCiAKIGNvbmZpZyBCTEtERVZfUkVTRVJWRQogCWJvb2wgIkJMS0RFViBSZXNlcnZlZCBNZW1vcnkiCmRpZmYgLS1naXQgYS9hcmNoL2g4MzAwL2tlcm5lbC9pcnEuYyBiL2FyY2gvaDgzMDAva2VybmVsL2lycS5jCmluZGV4IDQzZDIxZTkuLjhkZWM0ZGQgMTAwNjQ0Ci0tLSBhL2FyY2gvaDgzMDAva2VybmVsL2lycS5jCisrKyBiL2FyY2gvaDgzMDAva2VybmVsL2lycS5jCkBAIC02OCw3ICs2OCw3IEBACiB9CiAKIC8qCi0gKiBoODMwMCBpbnRlcnJ1cHQgY29udHJvbGVyIGltcGxlbWVudGF0aW9uCisgKiBoODMwMCBpbnRlcnJ1cHQgY29udHJvbGxlciBpbXBsZW1lbnRhdGlvbgogICovCiBzdHJ1Y3QgaXJxX2NoaXAgaDgzMDBpcnFfY2hpcCA9IHsKIAkubmFtZQkJPSAiSDgzMDAtSU5UQyIsCmRpZmYgLS1naXQgYS9hcmNoL2g4MzAwL2tlcm5lbC90aW1lLmMgYi9hcmNoL2g4MzAwL2tlcm5lbC90aW1lLmMKaW5kZXggMzMwNjM4Mi4uZTM3YzgzNSAxMDA2NDQKLS0tIGEvYXJjaC9oODMwMC9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvaDgzMDAva2VybmVsL3RpbWUuYwpAQCAtNTMsNyArNTMsNyBAQAogCiAJLyogRklYIGJ5IGRxZyA6IFNldCB0byB6ZXJvIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHRvZCAqLwogCS8qIHdpdGhvdXQgdGhpcyB0aW1lIGlzIHVuZGVmaW5lZCBhbmQgY2FuIG92ZXJmbG93IHRpbWVfdCwgY2F1c2luZyAgKi8KLQkvKiB2ZXJ5IHN0YW5nZSBlcnJvcnMgKi8KKwkvKiB2ZXJ5IHN0cmFuZ2UgZXJyb3JzICovCiAJeWVhciA9IDE5ODA7CiAJbW9uID0gZGF5ID0gMTsKIAlob3VyID0gbWluID0gc2VjID0gMDsKZGlmZiAtLWdpdCBhL2FyY2gvaDgzMDAva2VybmVsL3RyYXBzLmMgYi9hcmNoL2g4MzAwL2tlcm5lbC90cmFwcy5jCmluZGV4IGY5NzE4MzAuLmY4ZjdkN2VhIDEwMDY0NAotLS0gYS9hcmNoL2g4MzAwL2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvaDgzMDAva2VybmVsL3RyYXBzLmMKQEAgLTUsNyArNSw3IEBACiAgKiBDbG9uZWQgZnJvbSBMaW51eC9tNjhrLgogICoKICAqIE5vIG9yaWdpbmFsIENvcHlyaWdodCBob2xkZXIgbGlzdGVkLAotICogUHJvYmFiaWx5IG9yaWdpbmFsIChDKSBSb21hbiBaaXBwZWwgKGFzc2lnbmVkIERKRCwgMTk5OSkKKyAqIFByb2JhYmxlIG9yaWdpbmFsIChDKSBSb21hbiBaaXBwZWwgKGFzc2lnbmVkIERKRCwgMTk5OSkKICAqCiAgKiBDb3B5cmlnaHQgMTk5OS0yMDAwIEQuIEplZmYgRGlvbm5lLCA8amVmZkBydC1jb250cm9sLmNvbT4KICAqCmRpZmYgLS1naXQgYS9hcmNoL2g4MzAwL3BsYXRmb3JtL2g4cy9pbnRzLmMgYi9hcmNoL2g4MzAwL3BsYXRmb3JtL2g4cy9pbnRzLmMKaW5kZXggYTcxZDZlMi4uNTUxZmQ1ZiAxMDA2NDQKLS0tIGEvYXJjaC9oODMwMC9wbGF0Zm9ybS9oOHMvaW50cy5jCisrKyBiL2FyY2gvaDgzMDAvcGxhdGZvcm0vaDhzL2ludHMuYwpAQCAtMTc5LDcgKzE3OSw3IEBACiAJaWYgKHVzZV9rbWFsbG9jKQogCQlpcnFfaGFuZGxlID0ga21hbGxvYyhzaXplb2YoaXJxX2hhbmRsZXJfdCksIEdGUF9BVE9NSUMpOwogCWVsc2UgewotCQkvKiB1c2UgYm9vdG1lbSBhbGxvY2F0ZXIgKi8KKwkJLyogdXNlIGJvb3RtZW0gYWxsb2NhdG9yICovCiAJCWlycV9oYW5kbGUgPSAoaXJxX2hhbmRsZXJfdCAqKWFsbG9jX2Jvb3RtZW0oc2l6ZW9mKGlycV9oYW5kbGVyX3QpKTsKIAkJaXJxX2hhbmRsZSA9IChpcnFfaGFuZGxlcl90ICopKCh1bnNpZ25lZCBsb25nKWlycV9oYW5kbGUgfCAweDgwMDAwMDAwKTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL2g4MzAwL3BsYXRmb3JtL2g4cy9pbnRzX2g4cy5jIGIvYXJjaC9oODMwMC9wbGF0Zm9ybS9oOHMvaW50c19oOHMuYwppbmRleCA5MzM5NWQyLi5mYWE4YTQ1IDEwMDY0NAotLS0gYS9hcmNoL2g4MzAwL3BsYXRmb3JtL2g4cy9pbnRzX2g4cy5jCisrKyBiL2FyY2gvaDgzMDAvcGxhdGZvcm0vaDhzL2ludHNfaDhzLmMKQEAgLTYzLDcgKzYzLDcgQEAKIAl7SDgzMDBfR1BJT19QMixIODMwMF9HUElPX0I2fSx7SDgzMDBfR1BJT19QMixIODMwMF9HUElPX0I3fSwKIH07CiAKLS8qIElSUSB0byBHUElPIHBpbm5vIHRyYW5zcmF0ZSAqLworLyogSVJRIHRvIEdQSU8gcGluIHRyYW5zbGF0aW9uICovCiAjZGVmaW5lIElSUV9HUElPX01BUChpcnFiaXQsaXJxLHBvcnQsYml0KQkJCSAgXAogZG8gewkJCQkJCQkJICBcCiAJaWYgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilJVFNSICYgaXJxYml0KSB7CSAgXApkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L0tjb25maWcgYi9hcmNoL2kzODYvS2NvbmZpZwppbmRleCBkMWJlZGJmLi5mNmU0NGZjIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvS2NvbmZpZworKysgYi9hcmNoL2kzODYvS2NvbmZpZwpAQCAtMzkyLDcgKzM5Miw3IEBACiAJICB3aWxsIGxvb2sgYXQgdGhlIG1hY2hpbmUgY2hlY2sgcmVnaXN0ZXJzIHRvIHNlZSBpZiBhbnl0aGluZyBoYXBwZW5lZC4KIAkgIE5vbi1mYXRhbCBwcm9ibGVtcyBhdXRvbWF0aWNhbGx5IGdldCBjb3JyZWN0ZWQgKGJ1dCBzdGlsbCBsb2dnZWQpLgogCSAgRGlzYWJsZSB0aGlzIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlZSB0aGVzZSBtZXNzYWdlcy4KLQkgIFNlZWluZyB0aGUgbWVzc2FnZXMgdGhpcyBvcHRpb24gcHJpbnRzIG91dCBtYXkgYmUgaW5kaWNhdGl2ZSBvZiBkeWluZyBoYXJkd2FyZSwKKwkgIFNlZWluZyB0aGUgbWVzc2FnZXMgdGhpcyBvcHRpb24gcHJpbnRzIG91dCBtYXkgYmUgaW5kaWNhdGl2ZSBvZiBkeWluZwogCSAgb3Igb3V0LW9mLXNwZWMgKGllLCBvdmVyY2xvY2tlZCkgaGFyZHdhcmUuCiAJICBUaGlzIG9wdGlvbiBvbmx5IGRvZXMgc29tZXRoaW5nIG9uIGNlcnRhaW4gQ1BVcy4KIAkgIChBTUQgQXRobG9uL0R1cm9uIGFuZCBJbnRlbCBQZW50aXVtIDQpCkBAIC02MzEsNyArNjMxLDcgQEAKIAlkZWZhdWx0IG4gaWYgWDg2X1BDCiAJZGVmYXVsdCB5IGlmIChYODZfTlVNQVEgfHwgWDg2X1NVTU1JVCkKIAloZWxwCi0JICBOVU1BIHN1cHBvcnQgZm9yIGkzODYuIFRoaXMgaXMgY3VycmVudGx5IGhpZ2ggZXhwZXJpbWVudGFsCisJICBOVU1BIHN1cHBvcnQgZm9yIGkzODYuIFRoaXMgaXMgY3VycmVudGx5IGhpZ2hseSBleHBlcmltZW50YWwKIAkgIGFuZCBzaG91bGQgYmUgb25seSB1c2VkIGZvciBrZXJuZWwgZGV2ZWxvcG1lbnQuIEl0IG1pZ2h0IGFsc28KIAkgIGNhdXNlIGJvb3QgZmFpbHVyZXMuCiAKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9LY29uZmlnIGIvYXJjaC9pYTY0L0tjb25maWcKaW5kZXggYzg5MTA4ZS4uYmVmNDc3MiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L0tjb25maWcKKysrIGIvYXJjaC9pYTY0L0tjb25maWcKQEAgLTQ1Miw5ICs0NTIsOSBAQAogY29uZmlnIElBNjRfTUNfRVJSX0lOSkVDVAogCXRyaXN0YXRlICJNQyBlcnJvciBpbmplY3Rpb24gc3VwcG9ydCIKIAloZWxwCi0JICBTZWxldHMgd2hldGhlciBzdXBwb3J0IGZvciBNQyBlcnJvciBpbmplY3Rpb24uIEJ5IGVuYWJsaW5nIHRoZQotCSAgc3VwcG9ydCwga2VybmVsIHByb3ZpZGUgc3lzZnMgaW50ZXJmYWNlIGZvciB1c2VyIGFwcGxpY2F0aW9uIHRvCi0JICBjYWxsIE1DIGVycm9yIGluamVjdGlvbiBQQUwgcHJvY2VkdXJlIHRvIGluamVjdCB2YXJpb3VzIGVycm9ycy4KKwkgIEFkZHMgc3VwcG9ydCBmb3IgTUMgZXJyb3IgaW5qZWN0aW9uLiBJZiBlbmFibGVkLCB0aGUga2VybmVsIAorCSAgd2lsbCBwcm92aWRlIGEgc3lzZnMgaW50ZXJmYWNlIGZvciB1c2VyIGFwcGxpY2F0aW9ucyB0bworCSAgY2FsbCBNQyBlcnJvciBpbmplY3Rpb24gUEFMIHByb2NlZHVyZXMgdG8gaW5qZWN0IHZhcmlvdXMgZXJyb3JzLgogCSAgVGhpcyBpcyBhIHVzZWZ1bCB0b29sIGZvciBNQ0EgdGVzdGluZy4KIAogCSAgSWYgeW91J3JlIHVuc3VyZSwgZG8gbm90IHNlbGVjdCB0aGlzIG9wdGlvbi4KQEAgLTQ5MSw3ICs0OTEsNyBAQAogCSAgYnV0IGl0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeXN0ZW0gZmlybXdhcmUuICAgQW5kIGxpa2UgYSByZWJvb3QKIAkgIHlvdSBjYW4gc3RhcnQgYW55IGtlcm5lbCB3aXRoIGl0LCBub3QganVzdCBMaW51eC4KIAotCSAgVGhlIG5hbWUgY29tZXMgZnJvbSB0aGUgc2ltaWxpYXJpdHkgdG8gdGhlIGV4ZWMgc3lzdGVtIGNhbGwuCisJICBUaGUgbmFtZSBjb21lcyBmcm9tIHRoZSBzaW1pbGFyaXR5IHRvIHRoZSBleGVjIHN5c3RlbSBjYWxsLgogCiAJICBJdCBpcyBhbiBvbmdvaW5nIHByb2Nlc3MgdG8gYmUgY2VydGFpbiB0aGUgaGFyZHdhcmUgaW4gYSBtYWNoaW5lCiAJICBpcyBwcm9wZXJseSBzaHV0ZG93biwgc28gZG8gbm90IGJlIHN1cnByaXNlZCBpZiB0aGlzIGNvZGUgZG9lcyBub3QKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9rZXJuZWwvaXJxLmMgYi9hcmNoL20zMnIva2VybmVsL2lycS5jCmluZGV4IGY4ZDg2NTAuLmQwYzViMGIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9tMzJyL2tlcm5lbC9pcnEuYwpAQCAtNzEsNyArNzEsNyBAQAogfQogCiAvKgotICogZG9fSVJRIGhhbmRsZXMgYWxsIG5vcm1hbCBkZXZpY2UgSVJRJ3MgKHRoZSBzcGVjaWFsCisgKiBkb19JUlEgaGFuZGxlcyBhbGwgbm9ybWFsIGRldmljZSBJUlFzICh0aGUgc3BlY2lhbAogICogU01QIGNyb3NzLUNQVSBpbnRlcnJ1cHRzIGhhdmUgdGhlaXIgb3duIHNwZWNpZmljCiAgKiBoYW5kbGVycykuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL20zMnIva2VybmVsL3NpZ25hbC5jCmluZGV4IDkxNmZhZjYuLmE3NTNkNzkgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9tMzJyL2tlcm5lbC9zaWduYWwuYwpAQCAtMzU4LDcgKzM1OCw3IEBACiAKIAlzaWduciA9IGdldF9zaWduYWxfdG9fZGVsaXZlcigmaW5mbywgJmthLCByZWdzLCBOVUxMKTsKIAlpZiAoc2lnbnIgPiAwKSB7Ci0JCS8qIFJlZW5hYmxlIGFueSB3YXRjaHBvaW50cyBiZWZvcmUgZGVsaXZlcmluZyB0aGUKKwkJLyogUmUtZW5hYmxlIGFueSB3YXRjaHBvaW50cyBiZWZvcmUgZGVsaXZlcmluZyB0aGUKIAkJICogc2lnbmFsIHRvIHVzZXIgc3BhY2UuIFRoZSBwcm9jZXNzb3IgcmVnaXN0ZXIgd2lsbAogCQkgKiBoYXZlIGJlZW4gY2xlYXJlZCBpZiB0aGUgd2F0Y2hwb2ludCB0cmlnZ2VyZWQKIAkJICogaW5zaWRlIHRoZSBrZXJuZWwuCmRpZmYgLS1naXQgYS9hcmNoL20zMnIva2VybmVsL3NtcC5jIGIvYXJjaC9tMzJyL2tlcm5lbC9zbXAuYwppbmRleCAzNjAxMjkxLi5jODM3YmMxMyAxMDA2NDQKLS0tIGEvYXJjaC9tMzJyL2tlcm5lbC9zbXAuYworKysgYi9hcmNoL20zMnIva2VybmVsL3NtcC5jCkBAIC0yMDIsNyArMjAyLDcgQEAKIH0KIAogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwotLyogVExCIGZsdXNoIHJlcXVlc3QgUm91dGlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogVExCIGZsdXNoIHJlcXVlc3QgUm91dGluZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KgpAQCAtMzc4LDcgKzM3OCw3IEBACiAgKiBOYW1lOiAgICAgICAgIGZsdXNoX3RsYl9vdGhlcnMKICAqCiAgKiBEZXNjcmlwdGlvbjogIFRoaXMgcm91dGluZSByZXF1ZXN0cyBvdGhlciBDUFUgdG8gZXhlY3V0ZSBmbHVzaCBUTEIuCi0gKiAgICAgICAgICAgICAgIDEuU2V0dXAgcGFybWV0ZXJzLgorICogICAgICAgICAgICAgICAxLlNldHVwIHBhcmFtZXRlcnMuCiAgKiAgICAgICAgICAgICAgIDIuU2VuZCAnSU5WQUxJREFURV9UTEJfSVBJJyB0byBvdGhlciBDUFUuCiAgKiAgICAgICAgICAgICAgICAgUmVxdWVzdCBvdGhlciBDUFUgdG8gZXhlY3V0ZSAnc21wX2ludmFsaWRhdGVfaW50ZXJydXB0KCknLgogICogICAgICAgICAgICAgICAzLldhaXQgZm9yIG90aGVyIENQVXMgb3BlcmF0aW9uIGZpbmlzaGVkLgpAQCAtNTAyLDcgKzUwMiw3IEBACiB9CiAKIC8qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Ki8KLS8qIFN0b3AgQ1BVIHJlcXVlc3QgUm91dGlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogU3RvcCBDUFUgcmVxdWVzdCBSb3V0aW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KgpAQCAtNTY2LDcgKzU2Niw3IEBACiB9CiAKIC8qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Ki8KLS8qIENhbGwgZnVuY3Rpb24gUm91dGlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIENhbGwgZnVuY3Rpb24gUm91dGluZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Ki8KIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSoKQEAgLTY5MCw3ICs2OTAsNyBAQAogfQogCiAvKj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSovCi0vKiBUaW1lciBSb3V0aW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBUaW1lciBSb3V0aW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSovCiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qCkBAIC04MDIsNyArODAyLDcgQEAKIH0KIAogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwotLyogU2VuZCBJUEkgUm91dGlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogU2VuZCBJUEkgUm91dGluZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KgpAQCAtODE0LDcgKzgxNCw3IEBACiAgKgogICogQXJndW1lbnRzOiAgICBpcGlfbnVtIC0gTnVtYmVyIG9mIElQSQogICogICAgICAgICAgICAgICB0cnkgLSAgMCA6IFNlbmQgSVBJIGNlcnRhaW5seS4KLSAqICAgICAgICAgICAgICAgICAgICAgITAgOiBUaGUgZm9sbG93aW5nIElQSSBpcyBub3Qgc2VuZGVkIHdoZW4gVGFyZ2V0IENQVQorICogICAgICAgICAgICAgICAgICAgICAhMCA6IFRoZSBmb2xsb3dpbmcgSVBJIGlzIG5vdCBzZW50IHdoZW4gVGFyZ2V0IENQVQogICogICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBub3QgcmVjZWl2ZWQgdGhlIGJlZm9yZSBJUEkuCiAgKgogICogUmV0dXJuczogICAgICB2b2lkIChjYW5ub3QgZmFpbCkKQEAgLTg0NCw3ICs4NDQsNyBAQAogICogQXJndW1lbnRzOiAgICBjcHVfbWFzayAtIEJpdG1hcCBvZiB0YXJnZXQgQ1BVcyBsb2dpY2FsIElECiAgKiAgICAgICAgICAgICAgIGlwaV9udW0gLSBOdW1iZXIgb2YgSVBJCiAgKiAgICAgICAgICAgICAgIHRyeSAtICAwIDogU2VuZCBJUEkgY2VydGFpbmx5LgotICogICAgICAgICAgICAgICAgICAgICAhMCA6IFRoZSBmb2xsb3dpbmcgSVBJIGlzIG5vdCBzZW5kZWQgd2hlbiBUYXJnZXQgQ1BVCisgKiAgICAgICAgICAgICAgICAgICAgICEwIDogVGhlIGZvbGxvd2luZyBJUEkgaXMgbm90IHNlbnQgd2hlbiBUYXJnZXQgQ1BVCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIG5vdCByZWNlaXZlZCB0aGUgYmVmb3JlIElQSS4KICAqCiAgKiBSZXR1cm5zOiAgICAgIHZvaWQgKGNhbm5vdCBmYWlsKQpAQCAtODg1LDcgKzg4NSw3IEBACiAgKiBBcmd1bWVudHM6ICAgIGNwdV9tYXNrIC0gQml0bWFwIG9mIHRhcmdldCBDUFVzIHBoeXNpY2FsIElECiAgKiAgICAgICAgICAgICAgIGlwaV9udW0gLSBOdW1iZXIgb2YgSVBJCiAgKiAgICAgICAgICAgICAgIHRyeSAtICAwIDogU2VuZCBJUEkgY2VydGFpbmx5LgotICogICAgICAgICAgICAgICAgICAgICAhMCA6IFRoZSBmb2xsb3dpbmcgSVBJIGlzIG5vdCBzZW5kZWQgd2hlbiBUYXJnZXQgQ1BVCisgKiAgICAgICAgICAgICAgICAgICAgICEwIDogVGhlIGZvbGxvd2luZyBJUEkgaXMgbm90IHNlbnQgd2hlbiBUYXJnZXQgQ1BVCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIG5vdCByZWNlaXZlZCB0aGUgYmVmb3JlIElQSS4KICAqCiAgKiBSZXR1cm5zOiAgICAgIElQSUNSaSByZWdzdGVyIHZhbHVlLgpkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2tlcm5lbC9zbXBib290LmMgYi9hcmNoL20zMnIva2VybmVsL3NtcGJvb3QuYwppbmRleCA5ZGFlNDEwLi4wZTM4M2RhIDEwMDY0NAotLS0gYS9hcmNoL20zMnIva2VybmVsL3NtcGJvb3QuYworKysgYi9hcmNoL20zMnIva2VybmVsL3NtcGJvb3QuYwpAQCAtMTMzLDcgKzEzMyw3IEBACiBzdGF0aWMgdm9pZCB1bm1hcF9jcHVfdG9fcGh5c2lkKGludCwgaW50KTsKIAogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwotLyogQm9vdCB1cCBBUHMgUm91dGlucyA6IEJTUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogQm9vdCB1cCBBUHMgUm91dGluZXMgOiBCU1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwogdm9pZCBfX2RldmluaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZCkKIHsKQEAgLTQwNCw3ICs0MDQsNyBAQAogfQogCiAvKj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSovCi0vKiBBY3RpdmF0ZSBhIHNlY29uZGFyeSBwcm9jZXNzb3IgUm91dGlucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBBY3RpdmF0ZSBhIHNlY29uZGFyeSBwcm9jZXNzb3IgUm91dGluZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSovCiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qCkBAIC01MDksNyArNTA5LDcgQEAKIH0KIAogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwotLyogQm9vdCB1cCBDUFVzIGNvbW1vbiBSb3V0aW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogQm9vdCB1cCBDUFVzIGNvbW1vbiBSb3V0aW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qPSo9Kj0qLwogc3RhdGljIHZvaWQgX19pbml0IHNob3dfbXBfaW5mbyhpbnQgbnJfY3B1KQogewpkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2tlcm5lbC9zeXNfbTMyci5jIGIvYXJjaC9tMzJyL2tlcm5lbC9zeXNfbTMyci5jCmluZGV4IDBmYzJlZmUuLjZkN2E4MGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9rZXJuZWwvc3lzX20zMnIuYworKysgYi9hcmNoL20zMnIva2VybmVsL3N5c19tMzJyLmMKQEAgLTIxNCw3ICsyMTQsNyBAQAogCiBhc21saW5rYWdlIGludCBzeXNfY2FjaGVmbHVzaCh2b2lkICphZGRyLCBpbnQgYnl0ZXMsIGludCBjYWNoZSkKIHsKLQkvKiBUaGlzIHNob3VsZCBmbHVzaCBtb3JlIHNlbGVjdGl2bHkgLi4uICAqLworCS8qIFRoaXMgc2hvdWxkIGZsdXNoIG1vcmUgc2VsZWN0aXZlbHkgLi4uICAqLwogCV9mbHVzaF9jYWNoZV9hbGwoKTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9hbWlnYS9wY21jaWEuYyBiL2FyY2gvbTY4ay9hbWlnYS9wY21jaWEuYwppbmRleCBmYzU3YzZlLi4xODY2NjJjIDEwMDY0NAotLS0gYS9hcmNoL202OGsvYW1pZ2EvcGNtY2lhLmMKKysrIGIvYXJjaC9tNjhrL2FtaWdhL3BjbWNpYS5jCkBAIC0zMyw3ICszMyw3IEBACiAKIAogLyogY29weSBhIHR1cGxlLCBpbmNsdWRpbmcgdHVwbGUgaGVhZGVyLiByZXR1cm4gbmIgYnl0ZXMgY29waWVkICovCi0vKiBiZSBjYXJlZnVsbCBhcyB0aGlzIG1heSB0cmlnZ2VyIGEgR0FZTEVfSVJRX1dSIGludGVycnVwdCAhICovCisvKiBiZSBjYXJlZnVsIGFzIHRoaXMgbWF5IHRyaWdnZXIgYSBHQVlMRV9JUlFfV1IgaW50ZXJydXB0ICEgKi8KIAogaW50IHBjbWNpYV9jb3B5X3R1cGxlKHVuc2lnbmVkIGNoYXIgdHVwbGVfaWQsIHZvaWQgKnR1cGxlLCBpbnQgbWF4X2xlbikKIHsKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9DSEFOR0VTIGIvYXJjaC9tNjhrL2lmcHNwMDYwL0NIQU5HRVMKaW5kZXggYzFlNzEyZC4uYmE5NjU5NiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2lmcHNwMDYwL0NIQU5HRVMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL0NIQU5HRVMKQEAgLTQsNyArNCw3IEBACiBNNjgwNjAgU29mdHdhcmUgUGFja2FnZQogUHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKIAotTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IMKpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogVEhFIFNPRlRXQVJFIGlzIHByb3ZpZGVkIG9uIGFuICJBUyBJUyIgYmFzaXMgYW5kIHdpdGhvdXQgd2FycmFudHkuCiBUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL01JU0MgYi9hcmNoL202OGsvaWZwc3AwNjAvTUlTQwppbmRleCBiN2U2NDRiLi4xYTYzOTEzIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvTUlTQworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvTUlTQwpAQCAtNCw3ICs0LDcgQEAKIE02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlCiBQcm9kdWN0aW9uIFJlbGVhc2UgUDEuMDAgLS0gT2N0b2JlciAxMCwgMTk5NAogCi1NNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgwqkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBUSEUgU09GVFdBUkUgaXMgcHJvdmlkZWQgb24gYW4gIkFTIElTIiBiYXNpcyBhbmQgd2l0aG91dCB3YXJyYW50eS4KIFRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaWZwc3AwNjAvUkVBRE1FIGIvYXJjaC9tNjhrL2lmcHNwMDYwL1JFQURNRQppbmRleCBlM2JjZWQ0Li5mNmY4ZjVjIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvUkVBRE1FCisrKyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9SRUFETUUKQEAgLTQsNyArNCw3IEBACiBNNjgwNjAgU29mdHdhcmUgUGFja2FnZQogUHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKIAotTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IMKpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogVEhFIFNPRlRXQVJFIGlzIHByb3ZpZGVkIG9uIGFuICJBUyBJUyIgYmFzaXMgYW5kIHdpdGhvdXQgd2FycmFudHkuCiBUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL1RFU1QuRE9DIGIvYXJjaC9tNjhrL2lmcHNwMDYwL1RFU1QuRE9DCmluZGV4IDVlNTkwMGMuLjFiYTNhZWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9URVNULkRPQworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvVEVTVC5ET0MKQEAgLTQsNyArNCw3IEBACiBNNjgwNjAgU29mdHdhcmUgUGFja2FnZQogUHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKIAotTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IMKpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogVEhFIFNPRlRXQVJFIGlzIHByb3ZpZGVkIG9uIGFuICJBUyBJUyIgYmFzaXMgYW5kIHdpdGhvdXQgd2FycmFudHkuCiBUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL2ZwbHNwLmRvYyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9mcGxzcC5kb2MKaW5kZXggZmI2MzdjNC4uODk3MzBhOSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2lmcHNwMDYwL2ZwbHNwLmRvYworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvZnBsc3AuZG9jCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9mcHNwLmRvYyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9mcHNwLmRvYwppbmRleCA0MDgzMTUyLi4yM2Q1MTNmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvZnBzcC5kb2MKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL2Zwc3AuZG9jCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9mc2tlbGV0b24uUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9mc2tlbGV0b24uUwppbmRleCBhNDVhNGZmLi4wYTFhZTRmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvZnNrZWxldG9uLlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL2Zza2VsZXRvbi5TCkBAIC00LDcgKzQsNyBAQAogfE02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlCiB8UHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKIHwKLXxNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCit8TTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IMKpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIHwKIHxUSEUgU09GVFdBUkUgaXMgcHJvdmlkZWQgb24gYW4gIkFTIElTIiBiYXNpcyBhbmQgd2l0aG91dCB3YXJyYW50eS4KIHxUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL2lsc3AuZG9jIGIvYXJjaC9tNjhrL2lmcHNwMDYwL2lsc3AuZG9jCmluZGV4IGY2ZmFlNmQuLjRlNjI5MmYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9pbHNwLmRvYworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvaWxzcC5kb2MKQEAgLTQsNyArNCw3IEBACiBNNjgwNjAgU29mdHdhcmUgUGFja2FnZQogUHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKIAotTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IMKpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogVEhFIFNPRlRXQVJFIGlzIHByb3ZpZGVkIG9uIGFuICJBUyBJUyIgYmFzaXMgYW5kIHdpdGhvdXQgd2FycmFudHkuCiBUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL2lza2VsZXRvbi5TIGIvYXJjaC9tNjhrL2lmcHNwMDYwL2lza2VsZXRvbi5TCmluZGV4IGIyZGJkZjUuLjkxYTljNjUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9pc2tlbGV0b24uUworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvaXNrZWxldG9uLlMKQEAgLTQsNyArNCw3IEBACiB8TTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIHxQcm9kdWN0aW9uIFJlbGVhc2UgUDEuMDAgLS0gT2N0b2JlciAxMCwgMTk5NAogfAotfE02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK3xNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgwqkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogfAogfFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogfFRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaWZwc3AwNjAvaXNwLmRvYyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9pc3AuZG9jCmluZGV4IDVhOTBmZGUuLjlkYWRkNzIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9pc3AuZG9jCisrKyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9pc3AuZG9jCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9vcy5TIGIvYXJjaC9tNjhrL2lmcHNwMDYwL29zLlMKaW5kZXggYWE0ZGY4Ny4uN2EwZDZlNCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2lmcHNwMDYwL29zLlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL29zLlMKQEAgLTQsNyArNCw3IEBACiB8TTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIHxQcm9kdWN0aW9uIFJlbGVhc2UgUDEuMDAgLS0gT2N0b2JlciAxMCwgMTk5NAogfAotfE02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK3xNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgwqkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogfAogfFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogfFRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2ZwbHNwLlMgYi9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2ZwbHNwLlMKaW5kZXggZmRiNzliOS4uM2I3ZWEyZCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9mcGxzcC5TCisrKyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBsc3AuUwpAQCAtNCw3ICs0LDcgQEAKIE02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlCiBQcm9kdWN0aW9uIFJlbGVhc2UgUDEuMDAgLS0gT2N0b2JlciAxMCwgMTk5NAogCi1NNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCitNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgwqkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBUSEUgU09GVFdBUkUgaXMgcHJvdmlkZWQgb24gYW4gIkFTIElTIiBiYXNpcyBhbmQgd2l0aG91dCB3YXJyYW50eS4KIFRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2Zwc3AuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBzcC5TCmluZGV4IDNiNTk3YTkuLjZjMWE5YTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBzcC5TCisrKyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBzcC5TCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnRlc3QuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnRlc3QuUwppbmRleCAyZWRjYmFlLi4xZjk0NzkxIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2Z0ZXN0LlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9mdGVzdC5TCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvaWxzcC5TIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9pbHNwLlMKaW5kZXggYWZhNzQyMi4uOTcwYWJhZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9pbHNwLlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9pbHNwLlMKQEAgLTQsNyArNCw3IEBACiBNNjgwNjAgU29mdHdhcmUgUGFja2FnZQogUHJvZHVjdGlvbiBSZWxlYXNlIFAxLjAwIC0tIE9jdG9iZXIgMTAsIDE5OTQKIAotTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IKkgMTk5MywgMTk5NCBNb3Rvcm9sYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UgQ29weXJpZ2h0IMKpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogVEhFIFNPRlRXQVJFIGlzIHByb3ZpZGVkIG9uIGFuICJBUyBJUyIgYmFzaXMgYW5kIHdpdGhvdXQgd2FycmFudHkuCiBUbyB0aGUgbWF4aW11bSBleHRlbnQgcGVybWl0dGVkIGJ5IGFwcGxpY2FibGUgbGF3LApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9pc3AuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvaXNwLlMKaW5kZXggYjI2OTA5MS4uNmRjY2RhNyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9pc3AuUworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2lzcC5TCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvaXRlc3QuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvaXRlc3QuUwppbmRleCBiYTRhMzBjLi5iZWNhNDdlIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2l0ZXN0LlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9pdGVzdC5TCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvcGZwc3AuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvcGZwc3AuUwppbmRleCAwYzk5N2M0Li41MWI5ZjdkIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL3BmcHNwLlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9wZnBzcC5TCkBAIC00LDcgKzQsNyBAQAogTTY4MDYwIFNvZnR3YXJlIFBhY2thZ2UKIFByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CiAKLU02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCCpIDE5OTMsIDE5OTQgTW90b3JvbGEgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK002ODA2MCBTb2Z0d2FyZSBQYWNrYWdlIENvcHlyaWdodCDCqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFRIRSBTT0ZUV0FSRSBpcyBwcm92aWRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzIGFuZCB3aXRob3V0IHdhcnJhbnR5LgogVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYWMvY29uZmlnLmMgYi9hcmNoL202OGsvbWFjL2NvbmZpZy5jCmluZGV4IDg1NDdkYmMuLjAxYjQ2OGIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9tYWMvY29uZmlnLmMKKysrIGIvYXJjaC9tNjhrL21hYy9jb25maWcuYwpAQCAtMjg0LDcgKzI4NCw3IEBACiAJfSwKIAogCS8qCi0JICoJV2VpcmRpZmllZCBNYWNJSSBoYXJkd2FyZSAtIGFsbCBzdWJ0bGV5IGRpZmZlcmVudC4gR2VlIHRoYW5rcworCSAqCVdlaXJkaWZpZWQgTWFjSUkgaGFyZHdhcmUgLSBhbGwgc3VidGx5IGRpZmZlcmVudC4gR2VlIHRoYW5rcwogCSAqCUFwcGxlLiBBbGwgdGhlc2UgYm94ZXMgc2VlbSB0byBoYXZlIFZJQTIgaW4gYSBkaWZmZXJlbnQgcGxhY2UgdG8KIAkgKgl0aGUgTWFjSUkgKCsxQTAwMCByYXRoZXIgdGhhbiArNDAwMCkKIAkgKiBDU0E6IHNlZSBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90ZWNobm90ZXMvaHcvaHdfMDkuaHRtbApAQCAtNzA3LDcgKzcwNyw3IEBACiAJICogQWxsIG9mIHRoZXNlIHByb2JhYmx5IGhhdmUgb25ib2FyZCBTT05JQyBpbiB0aGUgRG9jayB3aGljaAogCSAqIG1lYW5zIHdlJ2xsIGhhdmUgdG8gcHJvYmUgZm9yIGl0IGV2ZW50dWFsbHkuCiAJICoKLQkgKiBBcmUgdGhlc2UgcmVhbGxseSBNQUNfVklBX0lJY2k/IFRoZSBkZXZlbG9wZXIgbm90ZXMgZm9yIHRoZQorCSAqIEFyZSB0aGVzZSByZWFsbHkgTUFDX1ZJQV9JSWNpPyBUaGUgZGV2ZWxvcGVyIG5vdGVzIGZvciB0aGUKIAkgKiBEdW9zIHNob3cgcHJldHR5IG11Y2ggdGhlIHNhbWUgY3VzdG9tIHBhcnRzIGFzIGluIG1vc3Qgb2YKIAkgKiB0aGUgb3RoZXIgUG93ZXJCb29rcyB3aGljaCB3b3VsZCBpbXBseSBNQUNfVklBX1FVQURSQS4KIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYWMvaW9wLmMgYi9hcmNoL202OGsvbWFjL2lvcC5jCmluZGV4IDBjZWEyMWYuLjViMjc5OWUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9tYWMvaW9wLmMKKysrIGIvYXJjaC9tNjhrL21hYy9pb3AuYwpAQCAtMTAwLDcgKzEwMCw3IEBACiAgKiBmaW5pc2hlZDsgdGhpcyBmdW5jdGlvbiBtb3ZlcyB0aGUgbWVzc2FnZSBzdGF0ZSB0byBNU0dfQ09NUExFVEUgYW5kIHNpZ25hbHMKICAqIHRoZSBJT1AuIFRoaXMgdHdvLXN0ZXAgcHJvY2VzcyBpcyBwcm92aWRlZCB0byBhbGxvdyB0aGUgaGFuZGxlciB0byBkZWZlcgogICogbWVzc2FnZSBwcm9jZXNzaW5nIHRvIGEgYm90dG9tLWhhbGYgaGFuZGxlciBpZiB0aGUgcHJvY2Vzc2luZyB3aWxsIHRha2UKLSAqIGEgc2lnbmlmaWdhbnQgYW1vdW50IG9mIHRpbWUgKGhhbmRsZXJzIGFyZSBjYWxsZWQgYXQgaW50ZXJydXB0IHRpbWUgc28gdGhleQorICogYSBzaWduaWZpY2FudCBhbW91bnQgb2YgdGltZSAoaGFuZGxlcnMgYXJlIGNhbGxlZCBhdCBpbnRlcnJ1cHQgdGltZSBzbyB0aGV5CiAgKiBzaG91bGQgZXhlY3V0ZSBxdWlja2x5LikKICAqLwogCkBAIC0xMjAsNyArMTIwLDcgQEAKIAogLyojZGVmaW5lIERFQlVHX0lPUCovCiAKLS8qIFNldCB0byBub25lemVybyBpZiB0aGUgSU9QcyBhcmUgcHJlc2VudC4gU2V0IGJ5IGlvcF9pbml0KCkgKi8KKy8qIFNldCB0byBub24temVybyBpZiB0aGUgSU9QcyBhcmUgcHJlc2VudC4gU2V0IGJ5IGlvcF9pbml0KCkgKi8KIAogaW50IGlvcF9zY2NfcHJlc2VudCxpb3BfaXNtX3ByZXNlbnQ7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYWMvb3NzLmMgYi9hcmNoL202OGsvbWFjL29zcy5jCmluZGV4IGQ3YmUxNjkuLjUwNjAzZDMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9tYWMvb3NzLmMKKysrIGIvYXJjaC9tNjhrL21hYy9vc3MuYwpAQCAtOCw3ICs4LDcgQEAKICAqCiAgKiA5OTA1MDIgKGptdCkgLSBNYWpvciByZXdyaXRlIGZvciBuZXcgaW50ZXJydXB0IGFyY2hpdGVjdHVyZSBhcyB3ZWxsIGFzIHNvbWUKICAqCQkgIHJlY2VudCBpbnNpZ2h0cyBpbnRvIE9TUyBvcGVyYXRpb25hbCBkZXRhaWxzLgotICogOTkwNjEwIChqbXQpIC0gTm93IHRha2luZyBmdWxsbCBhZHZhbnRhZ2Ugb2YgdGhlIE9TUy4gSW50ZXJydXB0cyBhcmUgbWFwcGVkCisgKiA5OTA2MTAgKGptdCkgLSBOb3cgdGFraW5nIGZ1bGwgYWR2YW50YWdlIG9mIHRoZSBPU1MuIEludGVycnVwdHMgYXJlIG1hcHBlZAogICoJCSAgdG8gbW9zdGx5IG1hdGNoIHRoZSBBL1VYIGludGVycnVwdCBzY2hlbWUgc3VwcG9ydGVkIG9uIHRoZQogICoJCSAgVklBIHNpZGUuIEFsc28gYWRkZWQgc3VwcG9ydCBmb3IgZW5hYmxpbmcgdGhlIElTTSBpcnEgYWdhaW4KICAqCQkgIHNpbmNlIHdlIG5vdyBoYXZlIGEgZnVuY3Rpb25hbCBJT1AgbWFuYWdlci4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYWMvdmlhLmMgYi9hcmNoL202OGsvbWFjL3ZpYS5jCmluZGV4IGQ1Y2FjNzIuLjhkZjI3MGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9tYWMvdmlhLmMKKysrIGIvYXJjaC9tNjhrL21hYy92aWEuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKgk2NTIyIFZlcnNhdGlsZSBJbnRlcmZhY2UgQWRhcHRlciAoVklBKQogICoKLSAqCVRoZXJlIGFyZSB0d28gb2YgdGhlc2Ugb24gdGhlIE1hYyBJSS4gU29tZSBJUlEncyBhcmUgdmVjdG9yZWQKKyAqCVRoZXJlIGFyZSB0d28gb2YgdGhlc2Ugb24gdGhlIE1hYyBJSS4gU29tZSBJUlFzIGFyZSB2ZWN0b3JlZAogICoJdmlhIHRoZW0gYXMgYXJlIGFzc29ydGVkIGJpdHMgYW5kIGJvYnMgLSBlZyBSVEMsIEFEQi4KICAqCiAgKiBDU0E6IE1vdG9yb2xhIHNlZW1zIHRvIGhhdmUgcmVtb3ZlZCBkb2N1bWVudGF0aW9uIG9uIHRoZSA2NTIyIGZyb20KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9tYXRoLWVtdS9mcF9sb2cuYyBiL2FyY2gvbTY4ay9tYXRoLWVtdS9mcF9sb2cuYwppbmRleCA4N2I0ZjAxLi5iMTAzM2FlIDEwMDY0NAotLS0gYS9hcmNoL202OGsvbWF0aC1lbXUvZnBfbG9nLmMKKysrIGIvYXJjaC9tNjhrL21hdGgtZW11L2ZwX2xvZy5jCkBAIC02NSw3ICs2NSw3IEBACiAJZnBfY29weV9leHQoJnNyYzIsIGRlc3QpOwogCiAJLyoKLQkgKiBUaGUgdGF5bG9yIHJvdyBhcnJvdW5kIGEgZm9yIHNxcnQoeCkgaXM6CisJICogVGhlIHRheWxvciByb3cgYXJvdW5kIGEgZm9yIHNxcnQoeCkgaXM6CiAJICoJc3FydCh4KSA9IHNxcnQoYSkgKyAxLygyKnNxcnQoYSkpKih4LWEpICsgUgogCSAqIFdpdGggYT0xIHRoaXMgZ2l2ZXM6CiAJICoJc3FydCh4KSA9IDEgKyAxLzIqKHgtMSkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9xNDAvcTQwaW50cy5jIGIvYXJjaC9tNjhrL3E0MC9xNDBpbnRzLmMKaW5kZXggYWQzZWQxZi4uNDYxNjFjZSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3E0MC9xNDBpbnRzLmMKKysrIGIvYXJjaC9tNjhrL3E0MC9xNDBpbnRzLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogfTsKIAogLyogY29tcGxhaW4gb25seSB0aGlzIG1hbnkgdGltZXMgYWJvdXQgc3B1cmlvdXMgaW50cyA6ICovCi1zdGF0aWMgaW50IGNjbGVpcnE9NjA7ICAgIC8qIElTQSBkZXYgSVJRJ3MqLworc3RhdGljIGludCBjY2xlaXJxPTYwOyAgICAvKiBJU0EgZGV2IElSUXMqLwogLypzdGF0aWMgaW50IGNjbGlycT02MDsqLyAgICAgLyogaW50ZXJuYWwgKi8KIAogLyogRklYTUU6IGFkZCBzaGFyZWQgaW50cyxtYXNrLHVubWFzayxwcm9iaW5nLi4uLiAqLwpAQCAtMjM0LDcgKzIzNCw3IEBACiAgKiBUaGVyZSBpcyBhIGxpdHRsZSBtZXNzIHdydCB3aGljaCBJUlEgcmVhbGx5IGNhdXNlZCB0aGlzIGlycSByZXF1ZXN0LiBUaGUKICAqIG1haW4gcHJvYmxlbSBpcyB0aGF0IElJUlFfUkVHIGFuZCBFSVJRX1JFRyByZWZsZWN0IHRoZSBzdGF0ZSB3aGVuIHRoZXkKICAqIGFyZSByZWFkIC0gd2hpY2ggaXMgbG9uZyBhZnRlciB0aGUgcmVxdWVzdCBjYW1lIGluLiBJbiB0aGVvcnkgSVJRcyBzaG91bGQKLSAqIG5vdCBqdXN0IGdvIGF3YXkgYnV0IHRoZXkgb2NjYXNzaW9uYWxseSBkbworICogbm90IGp1c3QgZ28gYXdheSBidXQgdGhleSBvY2Nhc2lvbmFsbHkgZG8KICAqLwogCQkJCWlmIChpcnEgPiA0ICYmIGlycSA8PSAxNSAmJiBtZXh0X2Rpc2FibGVkKSB7CiAJCQkJCS8qYWxpYXNlZF9pcnErKzsqLwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3N1bjMvbW11X2VtdS5jIGIvYXJjaC9tNjhrL3N1bjMvbW11X2VtdS5jCmluZGV4IDdhMGUzYTIuLmZiMGY2YTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9zdW4zL21tdV9lbXUuYworKysgYi9hcmNoL202OGsvc3VuMy9tbXVfZW11LmMKQEAgLTIzOSw3ICsyMzksNyBAQAogLyogZ2V0cyBhbiBlbXB0eSBjb250ZXh0LiAgaWYgZnVsbCwga2lsbHMgdGhlIG5leHQgY29udGV4dCBsaXN0ZWQgdG8KICAgIGRpZSBmaXJzdCAqLwogLyogVGhpcyBjb250ZXh0IGludmFsaWRhdGlvbiBzY2hlbWUgaXMsIHdlbGwsIHRvdGFsbHkgYXJiaXRyYXJ5LCBJJ20KLSAgIHN1cmUgaXQgY291bGQgYmUgbXVjaCBtb3JlIGludGVsbGVnZW50Li4uICBidXQgaXQgZ2V0cyB0aGUgam9iIGRvbmUKKyAgIHN1cmUgaXQgY291bGQgYmUgbXVjaCBtb3JlIGludGVsbGlnZW50Li4uICBidXQgaXQgZ2V0cyB0aGUgam9iIGRvbmUKICAgIGZvciBub3cgd2l0aG91dCBtdWNoIG92ZXJoZWFkIGluIG1ha2luZyBpdCdzIGRlY2lzaW9uLiAqLwogLyogdG9kbzogY29tZSB1cCB3aXRoIG9wdGltaXplZCBzY2hlbWUgZm9yIGZsdXNoaW5nIGNvbnRleHRzICovCiB1bnNpZ25lZCBsb25nIGdldF9mcmVlX2NvbnRleHQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCmRpZmYgLS1naXQgYS9hcmNoL202OGsvdG9vbHMvYW1pZ2EvZG1lc2cuYyBiL2FyY2gvbTY4ay90b29scy9hbWlnYS9kbWVzZy5jCmluZGV4IGU4OTI3NDguLjczNDBmNWIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay90b29scy9hbWlnYS9kbWVzZy5jCisrKyBiL2FyY2gvbTY4ay90b29scy9hbWlnYS9kbWVzZy5jCkBAIC0zLDcgKzMsNyBAQAogICoJCQkJCSAgIGluIENoaXAgUkFNIHdpdGggdGhlIGtlcm5lbCBjb21tYW5kCiAgKgkJCQkJICAgbGluZSBvcHRpb24gYGRlYnVnPW1lbScuCiAgKgotICogIKkgQ29weXJpZ2h0IDE5OTYgYnkgR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4KKyAqICDCqSBDb3B5cmlnaHQgMTk5NiBieSBHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0QGxpbnV4LW02OGsub3JnPgogICoKICAqCiAgKiAgVXNhZ2U6CmRpZmYgLS1naXQgYS9hcmNoL202OGtub21tdS9wbGF0Zm9ybS81MzA3L3BpdC5jIGIvYXJjaC9tNjhrbm9tbXUvcGxhdGZvcm0vNTMwNy9waXQuYwppbmRleCBlNTNjNDQ2Li5mMTgzNTJmIDEwMDY0NAotLS0gYS9hcmNoL202OGtub21tdS9wbGF0Zm9ybS81MzA3L3BpdC5jCisrKyBiL2FyY2gvbTY4a25vbW11L3BsYXRmb3JtLzUzMDcvcGl0LmMKQEAgLTgzLDcgKzgzLDcgQEAKIAogCS8qCiAJICogSWYgd2UgYXJlIHN0aWxsIGluIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSB1cGNvdW50IGFuZCBhCi0JICogdGltZXIgaW50ZXJ1cHQgaXMgcGVuZGluZywgdGhlbiBhZGQgb24gYSB0aWNrcyB3b3J0aCBvZiB0aW1lLgorCSAqIHRpbWVyIGludGVycnVwdCBpcyBwZW5kaW5nLCB0aGVuIGFkZCBvbiBhIHRpY2tzIHdvcnRoIG9mIHRpbWUuCiAJICovCiAJb2Zmc2V0ID0gKChwbXIgLSBwY250cikgKiAoMTAwMDAwMCAvIEhaKSkgLyBwbXI7CiAJaWYgKChvZmZzZXQgPCAoMTAwMDAwMCAvIEhaIC8gMikpICYmICgqaXByICYgTUNGUElUX0lNUl9JQklUKSkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9LY29uZmlnIGIvYXJjaC9taXBzL0tjb25maWcKaW5kZXggNGRjMTQyZC4uM2VjZmY1ZSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL0tjb25maWcKKysrIGIvYXJjaC9taXBzL0tjb25maWcKQEAgLTE4MTIsNyArMTgxMiw3IEBACiAJICBidXQgaXQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5c3RlbSBmaXJtd2FyZS4gICBBbmQgbGlrZSBhIHJlYm9vdAogCSAgeW91IGNhbiBzdGFydCBhbnkga2VybmVsIHdpdGggaXQsIG5vdCBqdXN0IExpbnV4LgogCi0JICBUaGUgbmFtZSBjb21lcyBmcm9tIHRoZSBzaW1pbGlhcml0eSB0byB0aGUgZXhlYyBzeXN0ZW0gY2FsbC4KKwkgIFRoZSBuYW1lIGNvbWVzIGZyb20gdGhlIHNpbWlsYXJpdHkgdG8gdGhlIGV4ZWMgc3lzdGVtIGNhbGwuCiAKIAkgIEl0IGlzIGFuIG9uZ29pbmcgcHJvY2VzcyB0byBiZSBjZXJ0YWluIHRoZSBoYXJkd2FyZSBpbiBhIG1hY2hpbmUKIAkgIGlzIHByb3Blcmx5IHNodXRkb3duLCBzbyBkbyBub3QgYmUgc3VycHJpc2VkIGlmIHRoaXMgY29kZSBkb2VzIG5vdApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9tb2R1bGUuYyBiL2FyY2gvbWlwcy9rZXJuZWwvbW9kdWxlLmMKaW5kZXggY2IwODAxNC4uZTdlZDBhYyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9tb2R1bGUuYworKysgYi9hcmNoL21pcHMva2VybmVsL21vZHVsZS5jCkBAIC0zODEsNyArMzgxLDcgQEAKIAlyZXR1cm4gZTsKIH0KIAotLyogUHV0IGluIGRiZSBsaXN0IGlmIG5lY2Nlc3NhcnkuICovCisvKiBQdXQgaW4gZGJlIGxpc3QgaWYgbmVjZXNzYXJ5LiAqLwogaW50IG1vZHVsZV9maW5hbGl6ZShjb25zdCBFbGZfRWhkciAqaGRyLAogCQkgICAgY29uc3QgRWxmX1NoZHIgKnNlY2hkcnMsCiAJCSAgICBzdHJ1Y3QgbW9kdWxlICptZSkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wY2kvcGNpLWV4Y2l0ZS5jIGIvYXJjaC9taXBzL3BjaS9wY2ktZXhjaXRlLmMKaW5kZXggM2M4NmM3Ny4uOGE1Njg3NiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9wY2ktZXhjaXRlLmMKKysrIGIvYXJjaC9taXBzL3BjaS9wY2ktZXhjaXRlLmMKQEAgLTEzMSw3ICsxMzEsNyBAQAogCQlvY2Rfd3JpdGVsKDB4MDAwMDAwMDAsIGJhciArIDB4MTAwKTsKIAl9CiAKLQkvKiBGaW5hbGx5LCBlbmFibGUgdGhlIFBDSSBpbnRlcnVwdCAqLworCS8qIEZpbmFsbHksIGVuYWJsZSB0aGUgUENJIGludGVycnVwdCAqLwogI2lmIFVTQl9JUlEgPiA3CiAJc2V0X2MwX2ludGNvbnRyb2woMSA8PCBVU0JfSVJRKTsKICNlbHNlCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvc25pL3BjaW10LmMgYi9hcmNoL21pcHMvc25pL3BjaW10LmMKaW5kZXggMzliYjE1Zi4uNGRmMDcwZiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3NuaS9wY2ltdC5jCisrKyBiL2FyY2gvbWlwcy9zbmkvcGNpbXQuYwpAQCAtMjQ2LDcgKzI0Niw3IEBACiAJCS8qCiAJCSAqIE5vdGU6IEFTSUMgUENJJ3MgYnVpbHRpbiBpbnRlcnJ1cHQgYWNoa25vd2xlZGdlIGZlYXR1cmUgaXMKIAkJICogYnJva2VuLiAgVXNpbmcgaXQgbWF5IHJlc3VsdCBpbiBsb3NzIG9mIHNvbWUgb3IgYWxsIGk4MjU5Ci0JCSAqIGludGVydXB0cywgc28gZG9uJ3QgdXNlIFBDSU1UX0lOVF9BQ0tOT1dMRURHRSAuLi4KKwkJICogaW50ZXJydXB0cywgc28gZG9uJ3QgdXNlIFBDSU1UX0lOVF9BQ0tOT1dMRURHRSAuLi4KIAkJICovCiAJCWlycSA9IGk4MjU5X2lycSgpOwogCQlpZiAodW5saWtlbHkoaXJxIDwgMCkpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2NwdV9zZXR1cF82eHguUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1X3NldHVwXzZ4eC5TCmluZGV4IDhiNGE0ZWUuLmYxZWUwYjMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1X3NldHVwXzZ4eC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvY3B1X3NldHVwXzZ4eC5TCkBAIC0xMTMsNyArMTEzLDcgQEAKICAqIGFyb3VuZCAjMyBhbmQgd2l0aCB0aGUgc2FtZSBmaXggd2UgdXNlLiBXZSBtYXkgd2FudCB0bwogICogY2hlY2sgaWYgdGhlIENQVSBpcyB1c2luZyA2MHggYnVzIG1vZGUgaW4gd2hpY2ggY2FzZQogICogdGhlIHdvcmthcm91bmQgZm9yIGVycmF0YSAjNCBpcyB1c2VsZXNzLiBBbHNvLCB3ZSBtYXkKLSAqIHdhbnQgdG8gZXhwbGljaXRlbHkgY2xlYXIgSElEMF9OT1BEU1QgYXMgdGhpcyBpcyBub3QKKyAqIHdhbnQgdG8gZXhwbGljaXRseSBjbGVhciBISUQwX05PUERTVCBhcyB0aGlzIGlzIG5vdAogICogbmVlZGVkIG9uY2Ugd2UgaGF2ZSBhcHBsaWVkIHdvcmthcm91bmQgIzUgKHRob3VnaCBpdCdzCiAgKiBub3Qgc2V0IGJ5IEFwcGxlJ3MgZmlybXdhcmUgYXQgbGVhc3QpLgogICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2lycS5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9pcnEuYwppbmRleCAyMjUwZjllLi5iMGU1ZGViIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2lycS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaXJxLmMKQEAgLTQ5MSw3ICs0OTEsNyBAQAogCiAJCQkvKiBMZWdhY3kgZmxhZ3MgYXJlIGxlZnQgdG8gZGVmYXVsdCBhdCB0aGlzIHBvaW50LAogCQkJICogb25lIGNhbiB0aGVuIHVzZSBpcnFfY3JlYXRlX21hcHBpbmcoKSB0bwotCQkJICogZXhwbGljaXRlbHkgY2hhbmdlIHRoZW0KKwkJCSAqIGV4cGxpY2l0bHkgY2hhbmdlIHRoZW0KIAkJCSAqLwogCQkJb3BzLT5tYXAoaG9zdCwgaSwgaSk7CiAJCX0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbDJjcl82eHguUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbDJjcl82eHguUwppbmRleCA4NThmMjhhLi4yYTJmM2MzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2wyY3JfNnh4LlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9sMmNyXzZ4eC5TCkBAIC0xLDYgKzEsNiBAQAogLyoKIAlMMkNSIGZ1bmN0aW9ucwotCUNvcHlyaWdodCCpIDE5OTctMTk5OCBieSBQb3dlckxvZ2l4IFIgJiBELCBJbmMuCisJQ29weXJpZ2h0IMKpIDE5OTctMTk5OCBieSBQb3dlckxvZ2l4IFIgJiBELCBJbmMuCiAKIAlUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogCWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWcgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWcKaW5kZXggMjI5ZDM1NS4uZWEyMmNhZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZwpAQCAtMTIwLDcgKzEyMCw3IEBACiAJZGVwZW5kcyBvbiBQUENfSUJNX0NFTExfQkxBREUKIAloZWxwCiAJICBQTUkgKFBsYXRmb3JtIE1hbmFnZW1lbnQgSW50ZXJydXB0KSBpcyBhIHdheSB0bwotCSAgY29tbXVuaWNhdGUgd2l0aCB0aGUgQk1DIChCYXNlYm9hcmQgTWFuZ2VtZW50IENvbnRyb2xsZXIpLgorCSAgY29tbXVuaWNhdGUgd2l0aCB0aGUgQk1DIChCYXNlYm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyKS4KIAkgIEl0IGlzIHVzZWQgaW4gc29tZSBJQk0gQ2VsbCBibGFkZXMuCiAJZGVmYXVsdCBtCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9maWxlLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvZmlsZS5jCmluZGV4IGQ3MmIxNmQ2Li5kOWU1NmE1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvZmlsZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9maWxlLmMKQEAgLTc0OCw3ICs3NDgsNyBAQAogCWlmIChjb3VudCkKIAkJZ290byBvdXQ7CiAKLQkvKiB3cml0ZSBh0ZUgbXVjaCBhcyBwb3NzaWJsZSAqLworCS8qIHdyaXRlIGFzIG11Y2ggYXMgcG9zc2libGUgKi8KIAlmb3IgKGNvdW50ID0gNCwgdWRhdGErKzsgKGNvdW50ICsgNCkgPD0gbGVuOyBjb3VudCArPSA0LCB1ZGF0YSsrKSB7CiAJCWludCByZXQ7CiAJCXJldCA9IF9fZ2V0X3VzZXIod2JveF9kYXRhLCB1ZGF0YSk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGxlYi9zY2NfdWhjLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGxlYi9zY2NfdWhjLmMKaW5kZXggYTdjNTQ4Yi4uYjU5YzM4YSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsZWIvc2NjX3VoYy5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbGViL3NjY191aGMuYwpAQCAtMzYsNyArMzYsNyBAQAogfQogCiAvKgotICogVUhDKHVzYiBob3N0IGNvbnRyb2xlcikgZW5hYmxlIGZ1bmN0aW9uLgorICogVUhDKHVzYiBob3N0IGNvbnRyb2xsZXIpIGVuYWJsZSBmdW5jdGlvbi4KICAqIGFmZmVjdCB0byBib3RoIG9mIE9IQ0kgYW5kIEVIQ0kgY29yZSBtb2R1bGUuCiAgKi8KIHN0YXRpYyB2b2lkIGVuYWJsZV9zY2NfdWhjKHN0cnVjdCBwY2lfZGV2ICpkZXYpCmRpZmYgLS1naXQgYS9hcmNoL3NoNjQva2VybmVsL3BjaV9zaDUuYyBiL2FyY2gvc2g2NC9rZXJuZWwvcGNpX3NoNS5jCmluZGV4IDM4OGJiNzEuLmI0ZDk1MzQgMTAwNjQ0Ci0tLSBhL2FyY2gvc2g2NC9rZXJuZWwvcGNpX3NoNS5jCisrKyBiL2FyY2gvc2g2NC9rZXJuZWwvcGNpX3NoNS5jCkBAIC00ODAsNyArNDgwLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICAgICAgfQogCi0JLyogVGhlIHBjaSBzdWJzeXRlbSBuZWVkcyB0byBrbm93IHdoZXJlIG1lbW9yeSBpcyBhbmQgaG93IG11Y2gKKwkvKiBUaGUgcGNpIHN1YnN5c3RlbSBuZWVkcyB0byBrbm93IHdoZXJlIG1lbW9yeSBpcyBhbmQgaG93IG11Y2gKIAkgKiBvZiBpdCB0aGVyZSBpcy4gSSd2ZSBzaW1wbHkgbWFkZSB0aGVzZSBnbG9iYWxzLiBBIGJldHRlciBtZWNoYW5pc20KIAkgKiBpcyBwcm9iYWJseSBuZWVkZWQuCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL3VtL0tjb25maWcgYi9hcmNoL3VtL0tjb25maWcKaW5kZXggZDg5MjVkMi4uZGQxNjg5YiAxMDA2NDQKLS0tIGEvYXJjaC91bS9LY29uZmlnCisrKyBiL2FyY2gvdW0vS2NvbmZpZwpAQCAtMyw3ICszLDcgQEAKIAlvcHRpb24gZGVmY29uZmlnX2xpc3QKIAlkZWZhdWx0ICJhcmNoLyRBUkNIL2RlZmNvbmZpZyIKIAotIyBVTUwgdXNlcyB0aGUgZ2VuZXJpYyBJUlEgc3Vnc3lzdGVtCisjIFVNTCB1c2VzIHRoZSBnZW5lcmljIElSUSBzdWJzeXN0ZW0KIGNvbmZpZyBHRU5FUklDX0hBUkRJUlFTCiAJYm9vbAogCWRlZmF1bHQgeQpkaWZmIC0tZ2l0IGEvYXJjaC91bS9kcml2ZXJzL2xpbmUuYyBiL2FyY2gvdW0vZHJpdmVycy9saW5lLmMKaW5kZXggNzZmZTBiMC4uODNiZjE1YSAxMDA2NDQKLS0tIGEvYXJjaC91bS9kcml2ZXJzL2xpbmUuYworKysgYi9hcmNoL3VtL2RyaXZlcnMvbGluZS5jCkBAIC0zNSw3ICszNSw3IEBACiAvKgogICogUmV0dXJucyB0aGUgZnJlZSBzcGFjZSBpbnNpZGUgdGhlIHJpbmcgYnVmZmVyIG9mIHRoaXMgbGluZS4KICAqCi0gKiBTaG91bGQgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgbGluZS0+bG9jayAodGhpcyBkb2VzIG5vdCBtb2RpZnkgZGF0YXMpLgorICogU2hvdWxkIGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGxpbmUtPmxvY2sgKHRoaXMgZG9lcyBub3QgbW9kaWZ5IGRhdGEpLgogICovCiBzdGF0aWMgaW50IHdyaXRlX3Jvb20oc3RydWN0IGxpbmUgKmxpbmUpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3VtL2RyaXZlcnMvbnVsbC5jIGIvYXJjaC91bS9kcml2ZXJzL251bGwuYwppbmRleCAyMWFkM2Q3Li4yYjQ1YTE0IDEwMDY0NAotLS0gYS9hcmNoL3VtL2RyaXZlcnMvbnVsbC5jCisrKyBiL2FyY2gvdW0vZHJpdmVycy9udWxsLmMKQEAgLTksNyArOSw3IEBACiAjaW5jbHVkZSAiY2hhbl91c2VyLmgiCiAjaW5jbHVkZSAib3MuaCIKIAotLyogVGhpcyBhZGRyZXNzIGlzIHVzZWQgb25seSBhcyBhIHVuaXF1ZSBpZGVudGlmZXIgKi8KKy8qIFRoaXMgYWRkcmVzcyBpcyB1c2VkIG9ubHkgYXMgYSB1bmlxdWUgaWRlbnRpZmllciAqLwogc3RhdGljIGludCBudWxsX2NoYW47CiAKIHN0YXRpYyB2b2lkICpudWxsX2luaXQoY2hhciAqc3RyLCBpbnQgZGV2aWNlLCBjb25zdCBzdHJ1Y3QgY2hhbl9vcHRzICpvcHRzKQpkaWZmIC0tZ2l0IGEvYXJjaC91bS9kcml2ZXJzL3N0ZGVycl9jb25zb2xlLmMgYi9hcmNoL3VtL2RyaXZlcnMvc3RkZXJyX2NvbnNvbGUuYwppbmRleCA0NzM5ZGQ1Li5kMDdhOTdmIDEwMDY0NAotLS0gYS9hcmNoL3VtL2RyaXZlcnMvc3RkZXJyX2NvbnNvbGUuYworKysgYi9hcmNoL3VtL2RyaXZlcnMvc3RkZXJyX2NvbnNvbGUuYwpAQCAtOCw3ICs4LDcgQEAKIC8qIHRyaXZpYWwgY29uc29sZSBkcml2ZXIgLS0gc2ltcGx5IGR1bXAgZXZlcnl0aGluZyB0byBzdGRlcnIgICAgICAgICAgICAgICAgICAgICovCiAKIC8qCi0gKiBEb24ndCByZWdpc3RlciBieSBkZWZhdWx0IC0tIGFzIHRoaXMgcmVnaXN0ZXJlcyB2ZXJ5IGVhcmx5IGluIHRoZQorICogRG9uJ3QgcmVnaXN0ZXIgYnkgZGVmYXVsdCAtLSBhcyB0aGlzIHJlZ2lzdGVycyB2ZXJ5IGVhcmx5IGluIHRoZQogICogYm9vdCBwcm9jZXNzIGl0IGJlY29tZXMgdGhlIGRlZmF1bHQgY29uc29sZS4KICAqCiAgKiBJbml0aWFsaXplZCBhdCBpbml0IHRpbWUuCmRpZmYgLS1naXQgYS9hcmNoL3VtL2tlcm5lbC9nbW9uX3N5bXMuYyBiL2FyY2gvdW0va2VybmVsL2dtb25fc3ltcy5jCmluZGV4IDEzYWExMTUuLjczNGY4NzMgMTAwNjQ0Ci0tLSBhL2FyY2gvdW0va2VybmVsL2dtb25fc3ltcy5jCisrKyBiL2FyY2gvdW0va2VybmVsL2dtb25fc3ltcy5jCkBAIC0xMiw4ICsxMiw4IEBACiAgKiB2ZXJzaW9ucyBpbiBsaWJnY292LgogICoKICAqIFNpbmNlIFN1U0UgYmFja3BvcnRlZCB0aGUgZml4LCB3ZSBjYW5ub3QgaGFuZGxlIGl0IGRlcGVuZGluZyBvbiBHQ0MgdmVyc2lvbi4KLSAqIFNvLCB1bmNvbmRpdGluYWxseSBleHBvcnQgaXQuIEJ1dCBhbHNvIGdpdmUgaXQgYSB3ZWFrIGRlY2xhcmF0aW9uLCB3aGljaCB3aWxsCi0gKiBiZSBvdmVycmlkZW4gYnkgYW55IG90aGVyIG9uZS4KKyAqIFNvLCB1bmNvbmRpdGlvbmFsbHkgZXhwb3J0IGl0LiBCdXQgYWxzbyBnaXZlIGl0IGEgd2VhayBkZWNsYXJhdGlvbiwgd2hpY2ggd2lsbAorICogYmUgb3ZlcnJpZGRlbiBieSBhbnkgb3RoZXIgb25lLgogICovCiAKIGV4dGVybiB2b2lkIF9fZ2Nvdl9pbml0KHZvaWQgKikgX19hdHRyaWJ1dGVfXygod2VhaykpOwpkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvaXJxLmMgYi9hcmNoL3VtL2tlcm5lbC9pcnEuYwppbmRleCAyNzdmY2UxLi43MGMyZDYyIDEwMDY0NAotLS0gYS9hcmNoL3VtL2tlcm5lbC9pcnEuYworKysgYi9hcmNoL3VtL2tlcm5lbC9pcnEuYwpAQCAtMzI2LDcgKzMyNiw3IEBACiB9CiAKIC8qCi0gKiBkb19JUlEgaGFuZGxlcyBhbGwgbm9ybWFsIGRldmljZSBJUlEncyAodGhlIHNwZWNpYWwKKyAqIGRvX0lSUSBoYW5kbGVzIGFsbCBub3JtYWwgZGV2aWNlIElSUXMgKHRoZSBzcGVjaWFsCiAgKiBTTVAgY3Jvc3MtQ1BVIGludGVycnVwdHMgaGF2ZSB0aGVpciBvd24gc3BlY2lmaWMKICAqIGhhbmRsZXJzKS4KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL3VtL2tlcm5lbC9wdHJhY2UuYwppbmRleCBhMGViYTA4Li40N2I1N2I0IDEwMDY0NAotLS0gYS9hcmNoL3VtL2tlcm5lbC9wdHJhY2UuYworKysgYi9hcmNoL3VtL2tlcm5lbC9wdHJhY2UuYwpAQCAtMjM3LDcgKzIzNyw3IEBACiAJLyogVXNlci1tb2RlIGVpcD8gKi8KIAlpbmZvLnNpX2FkZHIgPSBVUFRfSVNfVVNFUihyZWdzKSA/ICh2b2lkIF9fdXNlciAqKSBVUFRfSVAocmVncykgOiBOVUxMOwogCi0JLyogU2VuZCB1cyB0aGUgZmFrZXkgU0lHVFJBUCAqLworCS8qIFNlbmQgdXMgdGhlIGZha2UgU0lHVFJBUCAqLwogCWZvcmNlX3NpZ19pbmZvKFNJR1RSQVAsICZpbmZvLCB0c2spOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3VtL3N5cy1pMzg2L2J1Zy5jIGIvYXJjaC91bS9zeXMtaTM4Ni9idWcuYwppbmRleCAyMDBjOGJhLi5hNDM2MGI1IDEwMDY0NAotLS0gYS9hcmNoL3VtL3N5cy1pMzg2L2J1Zy5jCisrKyBiL2FyY2gvdW0vc3lzLWkzODYvYnVnLmMKQEAgLTYsNyArNiw3IEBACiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgogCiAvKiBNb3N0bHkgY29waWVkIGZyb20gaTM4Ni94ODZfODYgLSBlbGltaW5hdGVkIHRoZSBlaXAgPCBQQUdFX09GRlNFVCBiZWNhdXNlCi0gKiB0aGF0J3Mgbm90IHJlbGV2ZW50IGluIHNrYXMgbW9kZS4KKyAqIHRoYXQncyBub3QgcmVsZXZhbnQgaW4gc2thcyBtb2RlLgogICovCiAKIGludCBpc192YWxpZF9idWdhZGRyKHVuc2lnbmVkIGxvbmcgZWlwKQpkaWZmIC0tZ2l0IGEvYXJjaC91bS9zeXMtaTM4Ni90bHMuYyBiL2FyY2gvdW0vc3lzLWkzODYvdGxzLmMKaW5kZXggYjAyMjY2YS4uZmNhZmY4NiAxMDA2NDQKLS0tIGEvYXJjaC91bS9zeXMtaTM4Ni90bHMuYworKysgYi9hcmNoL3VtL3N5cy1pMzg2L3Rscy5jCkBAIC00NSw3ICs0NSw3IEBACiAgKiBYWFg6IENvbnNpZGVyIGxlYXZpbmcgb25lIGZyZWUgc2xvdCBmb3IgZ2xpYmMgdXNhZ2UgYXQgZmlyc3QgcGxhY2UuIFRoaXMgbXVzdAogICogYmUgZG9uZSBoZXJlIChhbmQgYnkgY2hhbmdpbmcgR0RUX0VOVFJZX1RMU18qIG1hY3JvcykgYW5kIG5vd2hlcmUgZWxzZS4KICAqCi0gKiBBbHNvLCB0aGlzIG11c3QgYmUgdGVzdGVkIHdoZW4gY29tcGlsaW5nIGluIFNLQVMgbW9kZSB3aXRoIGRpbmFtaWMgbGlua2luZworICogQWxzbywgdGhpcyBtdXN0IGJlIHRlc3RlZCB3aGVuIGNvbXBpbGluZyBpbiBTS0FTIG1vZGUgd2l0aCBkeW5hbWljIGxpbmtpbmcKICAqIGFuZCBydW5uaW5nIGFnYWluc3QgTlBUTC4KICAqLwogc3RhdGljIGludCBnZXRfZnJlZV9pZHgoc3RydWN0IHRhc2tfc3RydWN0KiB0YXNrKQpkaWZmIC0tZ2l0IGEvYXJjaC91bS9zeXMteDg2XzY0L2J1Zy5jIGIvYXJjaC91bS9zeXMteDg2XzY0L2J1Zy5jCmluZGV4IDIwMGM4YmEuLmE0MzYwYjUgMTAwNjQ0Ci0tLSBhL2FyY2gvdW0vc3lzLXg4Nl82NC9idWcuYworKysgYi9hcmNoL3VtL3N5cy14ODZfNjQvYnVnLmMKQEAgLTYsNyArNiw3IEBACiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgogCiAvKiBNb3N0bHkgY29waWVkIGZyb20gaTM4Ni94ODZfODYgLSBlbGltaW5hdGVkIHRoZSBlaXAgPCBQQUdFX09GRlNFVCBiZWNhdXNlCi0gKiB0aGF0J3Mgbm90IHJlbGV2ZW50IGluIHNrYXMgbW9kZS4KKyAqIHRoYXQncyBub3QgcmVsZXZhbnQgaW4gc2thcyBtb2RlLgogICovCiAKIGludCBpc192YWxpZF9idWdhZGRyKHVuc2lnbmVkIGxvbmcgZWlwKQpkaWZmIC0tZ2l0IGEvYXJjaC92ODUwL2tlcm5lbC9tZTIuYyBiL2FyY2gvdjg1MC9rZXJuZWwvbWUyLmMKaW5kZXggMzhiZTVjMS4uMDA3MTE1ZCAxMDA2NDQKLS0tIGEvYXJjaC92ODUwL2tlcm5lbC9tZTIuYworKysgYi9hcmNoL3Y4NTAva2VybmVsL21lMi5jCkBAIC01OCwxMyArNTgsMTMgQEAKIHZvaWQgbWUyX3VhcnRfcHJlX2NvbmZpZ3VyZSAodW5zaWduZWQgY2hhbiwgdW5zaWduZWQgY2ZsYWdzLCB1bnNpZ25lZCBiYXVkKQogewogCWlmIChjaGFuID09IDApIHsKLQkJLyogU3BlY2lmeSB0aGF0IHRoZSByZWxldmVudCBwaW5zIG9uIHRoZSBjaGlwIHNob3VsZCBkbworCQkvKiBTcGVjaWZ5IHRoYXQgdGhlIHJlbGV2YW50IHBpbnMgb24gdGhlIGNoaXAgc2hvdWxkIGRvCiAJCSAgIHNlcmlhbCBJL08sIG5vdCBkaXJlY3QgSS9PLiAgKi8KIAkJTUUyX1BPUlQxX1BNQyB8PSAweEM7CiAJCS8qIFNwZWNpZnkgdGhhdCB3ZSdyZSB1c2luZyB0aGUgVUFSVCwgbm90IHRoZSBDU0kgZGV2aWNlLiAqLwogCQlNRTJfUE9SVDFfUEZDIHw9IDB4QzsKIAl9IGVsc2UgaWYgKGNoYW4gPT0gMSkgewotCQkvKiBTcGVjaWZ5IHRoYXQgdGhlIHJlbGV2ZW50IHBpbnMgb24gdGhlIGNoaXAgc2hvdWxkIGRvCisJCS8qIFNwZWNpZnkgdGhhdCB0aGUgcmVsZXZhbnQgcGlucyBvbiB0aGUgY2hpcCBzaG91bGQgZG8KIAkJICAgc2VyaWFsIEkvTywgbm90IGRpcmVjdCBJL08uICAqLwogCQlNRTJfUE9SVDJfUE1DIHw9IDB4NjsKIAkJLyogU3BlY2lmeSB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBVQVJULCBub3QgdGhlIENTSSBkZXZpY2UuICovCmRpZmYgLS1naXQgYS9hcmNoL3Y4NTAva2VybmVsL3J0ZV9tYl9hX3BjaS5jIGIvYXJjaC92ODUwL2tlcm5lbC9ydGVfbWJfYV9wY2kuYwppbmRleCAzNWE0YmQ1Li43MTY1NDc4IDEwMDY0NAotLS0gYS9hcmNoL3Y4NTAva2VybmVsL3J0ZV9tYl9hX3BjaS5jCisrKyBiL2FyY2gvdjg1MC9rZXJuZWwvcnRlX21iX2FfcGNpLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogCQkgICBkZWZhdWx0IHVzZXMuICAqLwogCiAJCS8qIFNpZ25pZmljYW50IGFkZHJlc3MgYml0cyB1c2VkIGZvciBkZWNvZGluZyBQQ0kgR0NTNSBzcGFjZQotCQkgICBhY2Nlc3Nlc3MuICAqLworCQkgICBhY2Nlc3Nlcy4gICovCiAJCU1CX0FfUENJX0RNUlIgPSB+KE1CX0FfUENJX01FTV9TSVpFIC0gMSk7CiAKIAkJLyogSSBkb24ndCB1bmRlcnN0YW5kIHRoaXMsIGJ1dCB0aGUgU29sdXRpb25HZWFyIGV4YW1wbGUgY29kZQpAQCAtNzc1LDcgKzc3NSw3IEBACiAvKiBGcmVlIGFuZCB1bm1hcCBhIGNvbnNpc3RlbnQgRE1BIGJ1ZmZlci4gIENQVV9BRERSIGFuZCBETUFfQUREUiBtdXN0CiAgICBiZSB2YWx1ZXMgdGhhdCB3ZXJlIHJldHVybmVkIGZyb20gcGNpX2FsbG9jX2NvbnNpc3RlbnQuICBTSVpFIG11c3QgYmUKICAgIHRoZSBzYW1lIGFzIHdoYXQgYXMgcGFzc2VkIGludG8gcGNpX2FsbG9jX2NvbnNpc3RlbnQuICBSZWZlcmVuY2VzIHRvCi0gICB0aGUgbWVtb3J5IGFuZCBtYXBwaW5ncyBhc3Nvc2NpYXRlZCB3aXRoIENQVV9BRERSIG9yIERNQV9BRERSIHBhc3QKKyAgIHRoZSBtZW1vcnkgYW5kIG1hcHBpbmdzIGFzc29jaWF0ZWQgd2l0aCBDUFVfQUREUiBvciBETUFfQUREUiBwYXN0CiAgICB0aGlzIGNhbGwgYXJlIGlsbGVnYWwuICAqLwogdm9pZAogcGNpX2ZyZWVfY29uc2lzdGVudCAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHNpemVfdCBzaXplLCB2b2lkICpjcHVfYWRkciwKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjXzMyLmMgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzY18zMi5jCmluZGV4IGIyODUwNWMuLjFkYzFlMTkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjXzMyLmMKKysrIGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2NfMzIuYwpAQCAtMjUsNyArMjUsNyBAQAogCiAvKgogICogR2V0dGluZyB0byBwcm92YWJsZSBzYWZlIGluIHBsYWNlIGRlY29tcHJlc3Npb24gaXMgaGFyZC4KLSAqIFdvcnN0IGNhc2UgYmVoYXZpb3VycyBuZWVkIHRvIGJlIGFuYWxpemVkLgorICogV29yc3QgY2FzZSBiZWhhdmlvdXJzIG5lZWQgdG8gYmUgYW5hbHl6ZWQuCiAgKiBCYWNrZ3JvdW5kIGluZm9ybWF0aW9uOgogICoKICAqIFRoZSBmaWxlIGxheW91dCBpczoKQEAgLTk0LDcgKzk0LDcgQEAKICAqIEFkZGluZyAzMjc2OCBpbnN0ZWFkIG9mIDMyNzY3IGp1c3QgbWFrZXMgZm9yIHJvdW5kIG51bWJlcnMuCiAgKiBBZGRpbmcgdGhlIGRlY29tcHJlc3Nvcl9zaXplIGlzIG5lY2Vzc2FyeSBhcyBpdCBtdXNodCBsaXZlIGFmdGVyIGFsbAogICogb2YgdGhlIGRhdGEgYXMgd2VsbC4gIExhc3QgSSBtZWFzdXJlZCB0aGUgZGVjb21wcmVzc29yIGlzIGFib3V0IDE0Sy4KLSAqIDEwSyBvZiBhY3R1YWxsIGRhdGEgYW5kIDRLIG9mIGJzcy4KKyAqIDEwSyBvZiBhY3R1YWwgZGF0YSBhbmQgNEsgb2YgYnNzLgogICoKICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzY182NC5jIGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2NfNjQuYwppbmRleCBmOTMyYjBlLi42ZWEwMTVhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzY182NC5jCisrKyBiL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjXzY0LmMKQEAgLTI1LDcgKzI1LDcgQEAKIAogLyoKICAqIEdldHRpbmcgdG8gcHJvdmFibGUgc2FmZSBpbiBwbGFjZSBkZWNvbXByZXNzaW9uIGlzIGhhcmQuCi0gKiBXb3JzdCBjYXNlIGJlaGF2aW91cnMgbmVlZCB0byBiZSBhbmFsaXplZC4KKyAqIFdvcnN0IGNhc2UgYmVoYXZpb3VycyBuZWVkIHRvIGJlIGFuYWx5emVkLgogICogQmFja2dyb3VuZCBpbmZvcm1hdGlvbjoKICAqCiAgKiBUaGUgZmlsZSBsYXlvdXQgaXM6CkBAIC05NCw3ICs5NCw3IEBACiAgKiBBZGRpbmcgMzI3NjggaW5zdGVhZCBvZiAzMjc2NyBqdXN0IG1ha2VzIGZvciByb3VuZCBudW1iZXJzLgogICogQWRkaW5nIHRoZSBkZWNvbXByZXNzb3Jfc2l6ZSBpcyBuZWNlc3NhcnkgYXMgaXQgbXVzaHQgbGl2ZSBhZnRlciBhbGwKICAqIG9mIHRoZSBkYXRhIGFzIHdlbGwuICBMYXN0IEkgbWVhc3VyZWQgdGhlIGRlY29tcHJlc3NvciBpcyBhYm91dCAxNEsuCi0gKiAxMEsgb2YgYWN0dWFsbCBkYXRhIGFuZCA0SyBvZiBic3MuCisgKiAxMEsgb2YgYWN0dWFsIGRhdGEgYW5kIDRLIG9mIGJzcy4KICAqCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jIGIvYXJjaC94ODYva2VybmVsL2FjcGkvYm9vdC5jCmluZGV4IGYyOGIyZTIuLjI4OTI0N2QgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9hY3BpL2Jvb3QuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvYWNwaS9ib290LmMKQEAgLTk5LDcgKzk5LDcgQEAKIAogLyoKICAqIFRoZSBkZWZhdWx0IGludGVycnVwdCByb3V0aW5nIG1vZGVsIGlzIFBJQyAoODI1OSkuICBUaGlzIGdldHMKLSAqIG92ZXJyaWRlbiBpZiBJT0FQSUNzIGFyZSBlbnVtZXJhdGVkIChiZWxvdykuCisgKiBvdmVycmlkZGVuIGlmIElPQVBJQ3MgYXJlIGVudW1lcmF0ZWQgKGJlbG93KS4KICAqLwogZW51bSBhY3BpX2lycV9tb2RlbF9pZCBhY3BpX2lycV9tb2RlbCA9IEFDUElfSVJRX01PREVMX1BJQzsKIApAQCAtNDE0LDggKzQxNCw4IEBACiAgKgogICogUG9ydCAweDRkMC00ZDEgYXJlIEVDTFIxIGFuZCBFQ0xSMiwgdGhlIEVkZ2UvTGV2ZWwgQ29udHJvbCBSZWdpc3RlcnMKICAqIGZvciB0aGUgODI1OSBQSUMuICBiaXRbbl0gPSAxIG1lYW5zIGlycVtuXSBpcyBMZXZlbCwgb3RoZXJ3aXNlIEVkZ2UuCi0gKiBFQ0xSMSBpcyBJUlEncyAwLTcgKElSUSAwLCAxLCAyIG11c3QgYmUgMCkKLSAqIEVDTFIyIGlzIElSUSdzIDgtMTUgKElSUSA4LCAxMyBtdXN0IGJlIDApCisgKiBFQ0xSMSBpcyBJUlFzIDAtNyAoSVJRIDAsIDEsIDIgbXVzdCBiZSAwKQorICogRUNMUjIgaXMgSVJRcyA4LTE1IChJUlEgOCwgMTMgbXVzdCBiZSAwKQogICovCiAKIHZvaWQgX19pbml0IGFjcGlfcGljX3NjaV9zZXRfdHJpZ2dlcih1bnNpZ25lZCBpbnQgaXJxLCB1MTYgdHJpZ2dlcikKQEAgLTQyNyw3ICs0MjcsNyBAQAogCW9sZCA9IGluYigweDRkMCkgfCAoaW5iKDB4NGQxKSA8PCA4KTsKIAogCS8qCi0JICogSWYgd2UgdXNlIEFDUEkgdG8gc2V0IFBDSSBpcnEncywgdGhlbiB3ZSBzaG91bGQgY2xlYXIgRUxDUgorCSAqIElmIHdlIHVzZSBBQ1BJIHRvIHNldCBQQ0kgSVJRcywgdGhlbiB3ZSBzaG91bGQgY2xlYXIgRUxDUgogCSAqIHNpbmNlIHdlIHdpbGwgc2V0IGl0IGNvcnJlY3RseSBhcyB3ZSBlbmFibGUgdGhlIFBDSSBpcnEKIAkgKiByb3V0aW5nLgogCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FwaWNfMzIuYyBiL2FyY2gveDg2L2tlcm5lbC9hcGljXzMyLmMKaW5kZXggNzkzMzQxZi4uMDhiMDdjMSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2FwaWNfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpY18zMi5jCkBAIC05NDcsNyArOTQ3LDcgQEAKIAkgKiBTZXQgdXAgTFZUMCwgTFZUMToKIAkgKgogCSAqIHNldCB1cCB0aHJvdWdoLWxvY2FsLUFQSUMgb24gdGhlIEJQJ3MgTElOVDAuIFRoaXMgaXMgbm90Ci0JICogc3RyaWN0bHkgbmVjZXNzZXJ5IGluIHB1cmUgc3ltbWV0cmljLUlPIG1vZGUsIGJ1dCBzb21ldGltZXMKKwkgKiBzdHJpY3RseSBuZWNlc3NhcnkgaW4gcHVyZSBzeW1tZXRyaWMtSU8gbW9kZSwgYnV0IHNvbWV0aW1lcwogCSAqIHdlIGRlbGVnYXRlIGludGVycnVwdHMgdG8gdGhlIDgyNTlBLgogCSAqLwogCS8qCkBAIC05OTgsNyArOTk4LDcgQEAKIAl9IGVsc2UgewogCQlpZiAoZXNyX2Rpc2FibGUpCiAJCQkvKgotCQkJICogU29tZXRoaW5nIHVudHJhY2VibGUgaXMgY3JlYXRpbmcgYmFkIGludGVycnVwdHMgb24KKwkJCSAqIFNvbWV0aGluZyB1bnRyYWNlYWJsZSBpcyBjcmVhdGluZyBiYWQgaW50ZXJydXB0cyBvbgogCQkJICogc2Vjb25kYXJ5IHF1YWRzIC4uLiBmb3IgdGhlIG1vbWVudCwganVzdCBsZWF2ZSB0aGUKIAkJCSAqIEVTUiBkaXNhYmxlZCAtIHdlIGNhbid0IGRvIGFueXRoaW5nIHVzZWZ1bCB3aXRoIHRoZQogCQkJICogZXJyb3JzIGFueXdheSAtIG1ibGlnaApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2FwbV8zMi5jIGIvYXJjaC94ODYva2VybmVsL2FwbV8zMi5jCmluZGV4IDMyZjIzNjUuLjE3MDg5YTAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcG1fMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBtXzMyLmMKQEAgLTU3LDcgKzU3LDcgQEAKICAqICAgICAgICAgc2NyZWVuLWJsYW5raW5nIGFuZCBncG0gKFN0ZXBoZW4gUm90aHdlbGwpOyBMaW51eCAxLjk5LjQKICAqICAgIDEuMmE6U2ltcGxlIGNoYW5nZSB0byBzdG9wIG15c3RlcmlvdXMgYnVnIHJlcG9ydHMgd2l0aCBTTVAgYWxzbyBhZGRlZAogICoJICAgbGV2ZWxzIHRvIHRoZSBwcmludGsgY2FsbHMuIEFQTSBpcyBub3QgZGVmaW5lZCBmb3IgU01QIG1hY2hpbmVzLgotICogICAgICAgICBUaGUgbmV3IHJlcGxhY21lbnQgZm9yIGl0IGlzLCBidXQgTGludXggZG9lc24ndCB5ZXQgc3VwcG9ydCB0aGlzLgorICogICAgICAgICBUaGUgbmV3IHJlcGxhY2VtZW50IGZvciBpdCBpcywgYnV0IExpbnV4IGRvZXNuJ3QgeWV0IHN1cHBvcnQgdGhpcy4KICAqICAgICAgICAgQWxhbiBDb3ggTGludXggMi4xLjU1CiAgKiAgICAxLjM6IFNldCB1cCBhIHZhbGlkIGRhdGEgZGVzY3JpcHRvciAweDQwIGZvciBidWdneSBCSU9TJ3MKICAqICAgIDEuNDogVXBncmFkZWQgdG8gc3VwcG9ydCBBUE0gMS4yLiBJbnRlZ3JhdGVkIFRoaW5rUGFkIHN1c3BlbmQgcGF0Y2ggYnkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYW1kLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2FtZC5jCmluZGV4IDVmOGFmODcuLjFmZjg4YzcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYW1kLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9hbWQuYwpAQCAtMjY2LDcgKzI2Niw3IEBACiAjaWZkZWYgQ09ORklHX1g4Nl9IVAogCS8qCiAJICogT24gYSBBTUQgbXVsdGkgY29yZSBzZXR1cCB0aGUgbG93ZXIgYml0cyBvZiB0aGUgQVBJQyBpZAotCSAqIGRpc3Rpbmd1c2ggdGhlIGNvcmVzLgorCSAqIGRpc3Rpbmd1aXNoIHRoZSBjb3Jlcy4KIAkgKi8KIAlpZiAoYy0+eDg2X21heF9jb3JlcyA+IDEpIHsKIAkJaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY2VudGF1ci5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jZW50YXVyLmMKaW5kZXggNDczZWFjOC4uOTY4MWZhMSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jZW50YXVyLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jZW50YXVyLmMKQEAgLTUzLDcgKzUzLDcgQEAKIAkJCWNvbnRpbnVlOwogCQkvKgogCQkgKglEb24ndCBNQ1Igb3ZlciByZXNlcnZlZCBzcGFjZS4gSWdub3JlIHRoZSBJU0EgaG9sZQotCQkgKgl3ZSBmcm9iIGFyb3VuZCB0aGF0IGNhdGFzdHJvcGh5IGFscmVhZHkKKwkJICoJd2UgZnJvYiBhcm91bmQgdGhhdCBjYXRhc3Ryb3BoZSBhbHJlYWR5CiAJCSAqLwogCQkgCQkJCiAJCWlmIChlODIwLm1hcFtpXS50eXBlID09IEU4MjBfUkVTRVJWRUQpCkBAIC0yODcsNyArMjg3LDcgQEAKIAkJYy0+eDg2X2NhcGFiaWxpdHlbNV0gPSBjcHVpZF9lZHgoMHhDMDAwMDAwMSk7CiAJfQogCi0JLyogQ3lyaXggSUlJIGZhbWlseSBuZWVkcyBDWDggJiBQR0UgZXhwbGljaXR5IGVuYWJsZWQuICovCisJLyogQ3lyaXggSUlJIGZhbWlseSBuZWVkcyBDWDggJiBQR0UgZXhwbGljaXRseSBlbmFibGVkLiAqLwogCWlmIChjLT54ODZfbW9kZWwgPj02ICYmIGMtPng4Nl9tb2RlbCA8PSA5KSB7CiAJCXJkbXNyIChNU1JfVklBX0ZDUiwgbG8sIGhpKTsKIAkJbG8gfD0gKDE8PDEgfCAxPDw3KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCmluZGV4IGQ1MDYyMDEuLmUyZmNmMjAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwpAQCAtMjA3LDcgKzIwNyw3IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IHg4Nl9meHNyX3NldHVwKGNoYXIgKiBzKQogewotCS8qIFRlbGwgYWxsIHRoZSBvdGhlciBDUFUncyB0byBub3QgdXNlIGl0Li4uICovCisJLyogVGVsbCBhbGwgdGhlIG90aGVyIENQVXMgdG8gbm90IHVzZSBpdC4uLiAqLwogCWRpc2FibGVfeDg2X2Z4c3IgPSAxOwogCiAJLyoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9jcHVmcmVxLW5mb3JjZTIuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9jcHVmcmVxLW5mb3JjZTIuYwppbmRleCAzMmYwYmRhLi5mMDNlOTE1MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL2NwdWZyZXEtbmZvcmNlMi5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9jcHVmcmVxLW5mb3JjZTIuYwpAQCAtMjYwLDcgKzI2MCw3IEBACiAKIAlmcmVxcy5vbGQgPSBuZm9yY2UyX2dldChwb2xpY3ktPmNwdSk7CiAJZnJlcXMubmV3ID0gdGFyZ2V0X2ZzYiAqIGZpZCAqIDEwMDsKLQlmcmVxcy5jcHUgPSAwOwkJLyogT25seSBvbmUgQ1BVIG9uIG5Gb3JjZTIgcGxhdHRmb3JtcyAqLworCWZyZXFzLmNwdSA9IDA7CQkvKiBPbmx5IG9uZSBDUFUgb24gbkZvcmNlMiBwbGF0Zm9ybXMgKi8KIAogCWlmIChmcmVxcy5vbGQgPT0gZnJlcXMubmV3KQogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9neC1zdXNwbW9kLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvZ3gtc3VzcG1vZC5jCmluZGV4IGVkMmJkYTEuLjJlZDdkYjIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9neC1zdXNwbW9kLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL2d4LXN1c3Btb2QuYwpAQCAtMTIsMTIgKzEyLDEyIEBACiAgKiAgICAgIG9mIGFueSBuYXR1cmUgcmVzdWx0aW5nIGR1ZSB0byB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuIFRoaXMKICAqICAgICAgc29mdHdhcmUgaXMgcHJvdmlkZWQgQVMtSVMgd2l0aCBubyB3YXJyYW50aWVzLgogICoKLSAqIFRoZW9yaXRpY2FsIG5vdGU6CisgKiBUaGVvcmV0aWNhbCBub3RlOgogICoKICAqCShzZWUgR2VvZGUodG0pIENTNTUzMCBtYW51YWwgKHJldi40LjEpIHBhZ2UuNTYpCiAgKgogICoJQ1BVIGZyZXF1ZW5jeSBjb250cm9sIG9uIE5hdFNlbWkgR2VvZGUgR1gxL0dYTFYgcHJvY2Vzc29yIGFuZCBDUzU1eDAKLSAqCWFyZSBiYXNlZCBvbiBTdXNwZW5kIE1vZHVyYXRpb24uCisgKglhcmUgYmFzZWQgb24gU3VzcGVuZCBNb2R1bGF0aW9uLgogICoKICAqCVN1c3BlbmQgTW9kdWxhdGlvbiB3b3JrcyBieSBhc3NlcnRpbmcgYW5kIGRlLWFzc2VydGluZyB0aGUgU1VTUCMgcGluCiAgKgl0byBDUFUoR1gxL0dYTFYpIGZvciBjb25maWd1cmFibGUgZHVyYXRpb25zLiBXaGVuIGFzc2VydGluZyBTVVNQIwpAQCAtMTAxLDExICsxMDEsMTEgQEAKIAogLyogU1VTQ0ZHIGJpdHMgKi8KICNkZWZpbmUgU1VTTU9ECQkoMTw8MCkJLyogZW5hYmxlL2Rpc2FibGUgc3VzcGVuZCBtb2R1bGF0aW9uICovCi0vKiB0aGUgYmVsb3dzIHN1cHBvcnQgb25seSB3aXRoIGNzNTUzMCAoYWZ0ZXIgcmV2LjEuMikvY3M1NTMwQSAqLworLyogdGhlIGJlbG93IGlzIHN1cHBvcnRlZCBvbmx5IHdpdGggY3M1NTMwIChhZnRlciByZXYuMS4yKS9jczU1MzBBICovCiAjZGVmaW5lIFNNSVNQRFVQCSgxPDwxKQkvKiBzZWxlY3QgaG93IFNNSSByZS1lbmFibGUgc3VzcGVuZCBtb2R1bGF0aW9uOiAqLwogCQkJCS8qIElSUVRDIHRpbWVyIG9yIHJlYWQgU01JIHNwZWVkdXAgZGlzYWJsZSByZWcuKEYxQkFSWzA4LTA5aF0pICovCiAjZGVmaW5lIFNVU0NGRwkJKDE8PDIpCS8qIGVuYWJsZSBwb3dlcmluZyBkb3duIGEgR1hMViBwcm9jZXNzb3IuICJTcGVjaWFsIDNWb2x0IFN1c3BlbmQiIG1vZGUgKi8KLS8qIHRoZSBiZWxvd3Mgc3VwcG9ydCBvbmx5IHdpdGggY3M1NTMwQSAqLworLyogdGhlIGJlbG93IGlzIHN1cHBvcnRlZCBvbmx5IHdpdGggY3M1NTMwQSAqLwogI2RlZmluZSBQV1JTVkVfSVNBCSgxPDwzKQkvKiBzdG9wIElTQSBjbG9jayAgKi8KICNkZWZpbmUgUFdSU1ZFCQkoMTw8NCkJLyogYWN0aXZlIGlkbGUgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs2LmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazYuYwppbmRleCA0MjQwNWI0Li5lYjliNjJiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazYuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazYuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgVGhpcyBmaWxlIHdhcyBiYXNlZCB1cG9uIGNvZGUgaW4gUG93ZXJ0d2VhayBMaW51eCAoaHR0cDovL3Bvd2VydHdlYWsuc2YubmV0KQotICogIChDKSAyMDAwLTIwMDMgIERhdmUgSm9uZXMsIEFyamFuIHZhbiBkZSBWZW4sIEphbm5lIFDkbmvkbOQsIERvbWluaWsgQnJvZG93c2tpLgorICogIChDKSAyMDAwLTIwMDMgIERhdmUgSm9uZXMsIEFyamFuIHZhbiBkZSBWZW4sIEphbm5lIFDDpG5rw6Rsw6QsIERvbWluaWsgQnJvZG93c2tpLgogICoKICAqICBMaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHUEwgTGljZW5zZSB2ZXJzaW9uIDIuCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazguYwppbmRleCBjMDZhYzY4Li45YzM2YTUzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazguYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NwdWZyZXEvcG93ZXJub3ctazguYwpAQCAtMTY4LDcgKzE2OCw3IEBACiAJcmV0dXJuOwogfQogCi0vKiB0aGUgdm9sdGFnZSBzdGFiYWxpemF0aW9uIHRpbWUgKi8KKy8qIHRoZSB2b2x0YWdlIHN0YWJpbGl6YXRpb24gdGltZSAqLwogc3RhdGljIHZvaWQgY291bnRfb2ZmX3ZzdChzdHJ1Y3QgcG93ZXJub3dfazhfZGF0YSAqZGF0YSkKIHsKIAl1ZGVsYXkoZGF0YS0+dnN0YWJsZSAqIFZTVF9VTklUU18yMFVTKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9wb3dlcm5vdy1rOC5oIGIvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmgKaW5kZXggYjA2YzgxMi4uN2M0ZjZlMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmgKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jcHVmcmVxL3Bvd2Vybm93LWs4LmgKQEAgLTE0OCwxMCArMTQ4LDEwIEBACiAjZGVmaW5lIFBMTF9MT0NLX0NPTlZFUlNJT04gKDEwMDAvNSkgLyogbXMgdG8gbnMsIHRoZW4gZGl2aWRlIGJ5IGNsb2NrIHBlcmlvZCAqLwogCiAjZGVmaW5lIE1BWElNVU1fVklEX1NURVBTIDEgIC8qIEN1cnJlbnQgY3B1cyBvbmx5IGFsbG93IGEgc2luZ2xlIHN0ZXAgb2YgMjVtViAqLwotI2RlZmluZSBWU1RfVU5JVFNfMjBVUyAyMCAgIC8qIFZvbHRhZ2UgU3RhYmFsaXphdGlvbiBUaW1lIGlzIGluIHVuaXRzIG9mIDIwdXMgKi8KKyNkZWZpbmUgVlNUX1VOSVRTXzIwVVMgMjAgICAvKiBWb2x0YWdlIFN0YWJpbGl6YXRpb24gVGltZSBpcyBpbiB1bml0cyBvZiAyMHVzICovCiAKIC8qCi0gKiBNb3N0IHZhbHVlcyBvZiBpbnRlcmVzdCBhcmUgZW5vY29kZWQgaW4gYSBzaW5nbGUgZmllbGQgb2YgdGhlIF9QU1MKKyAqIE1vc3QgdmFsdWVzIG9mIGludGVyZXN0IGFyZSBlbmNvZGVkIGluIGEgc2luZ2xlIGZpZWxkIG9mIHRoZSBfUFNTCiAgKiBlbnRyaWVzOiB0aGUgImNvbnRyb2wiIHZhbHVlLgogICovCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY3lyaXguYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY3lyaXguYwppbmRleCAxMjJkMmQ3Li44OGQ2NmZiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2N5cml4LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9jeXJpeC5jCkBAIC05Myw3ICs5Myw3IEBACiAKIAkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwogCQljY3IzID0gZ2V0Q3g4NihDWDg2X0NDUjMpOwotCQlzZXRDeDg2KENYODZfQ0NSMywgKGNjcjMgJiAweDBmKSB8IDB4MTApOyAvKiBlbmFibGUgTUFQRU4gICovCisJCXNldEN4ODYoQ1g4Nl9DQ1IzLCAoY2NyMyAmIDB4MGYpIHwgMHgxMCk7IC8qIGVuYWJsZSBNQVBFTiAqLwogCQljY3I1ID0gZ2V0Q3g4NihDWDg2X0NDUjUpOwogCQlpZiAoY2NyNSAmIDIpCiAJCQlzZXRDeDg2KENYODZfQ0NSNSwgY2NyNSAmIDB4ZmQpOyAgLyogcmVzZXQgU0xPUCAqLwpAQCAtMTE1LDkgKzExNSw5IEBACiAKIAlwcmludGsoS0VSTl9JTkZPICJFbmFibGUgTWVtb3J5IGFjY2VzcyByZW9yZGVyIG9uIEN5cml4L05TQyBwcm9jZXNzb3IuXG4iKTsKIAljY3IzID0gZ2V0Q3g4NihDWDg2X0NDUjMpOwotCXNldEN4ODYoQ1g4Nl9DQ1IzLCAoY2NyMyAmIDB4MGYpIHwgMHgxMCk7IC8qIGVuYWJsZSBNQVBFTqAgKi8KKwlzZXRDeDg2KENYODZfQ0NSMywgKGNjcjMgJiAweDBmKSB8IDB4MTApOyAvKiBlbmFibGUgTUFQRU4gKi8KIAotCS8qIExvYWQvU3RvcmUgU2VyaWFsaXplIHRvIG1lbSBhY2Nlc3MgZGlzYWJsZSAoPXJlb3JkZXIgaXQpoCAqLworCS8qIExvYWQvU3RvcmUgU2VyaWFsaXplIHRvIG1lbSBhY2Nlc3MgZGlzYWJsZSAoPXJlb3JkZXIgaXQpICovCiAJc2V0Q3g4NihDWDg2X1BDUjAsIGdldEN4ODYoQ1g4Nl9QQ1IwKSAmIH4weDgwKTsKIAkvKiBzZXQgbG9hZC9zdG9yZSBzZXJpYWxpemUgZnJvbSAxR0IgdG8gNEdCICovCiAJY2NyMyB8PSAweGUwOwpAQCAtMTQ2LDcgKzE0Niw3IEBACiAJcHJpbnRrKEtFUk5fSU5GTyAiRW5hYmxlIEluY3JlbWVudG9yIG9uIEN5cml4L05TQyBwcm9jZXNzb3IuXG4iKTsKIAogCWNjcjMgPSBnZXRDeDg2KENYODZfQ0NSMyk7Ci0Jc2V0Q3g4NihDWDg2X0NDUjMsIChjY3IzICYgMHgwZikgfCAweDEwKTsgLyogZW5hYmxlIE1BUEVOoCAqLworCXNldEN4ODYoQ1g4Nl9DQ1IzLCAoY2NyMyAmIDB4MGYpIHwgMHgxMCk7IC8qIGVuYWJsZSBNQVBFTiAqLwogCS8qIFBDUjEgLS0gUGVyZm9ybWFuY2UgQ29udHJvbCAqLwogCS8qIEluY3JlbWVudG9yIG9uLCB3aGF0ZXZlciB0aGF0IGlzICovCiAJc2V0Q3g4NihDWDg2X1BDUjEsIGdldEN4ODYoQ1g4Nl9QQ1IxKSB8IDB4MDIpOwpAQCAtMjU2LDcgKzI1Niw3IEBACiAJCXUzMiB2ZW5kb3IsIGRldmljZTsKIAkJLyogSXQgaXNuJ3QgcmVhbGx5IGEgUENJIHF1aXJrIGRpcmVjdGx5LCBidXQgdGhlIGN1cmUgaXMgdGhlCiAJCSAgIHNhbWUuIFRoZSBNZWRpYUdYIGhhcyBkZWVwIG1hZ2ljIFNNTSBzdHVmZiB0aGF0IGhhbmRsZXMgdGhlCi0JCSAgIFNCIGVtdWxhdGlvbi4gSXQgdGhvd3MgYXdheSB0aGUgZmlmbyBvbiBkaXNhYmxlX2RtYSgpIHdoaWNoCisJCSAgIFNCIGVtdWxhdGlvbi4gSXQgdGhyb3dzIGF3YXkgdGhlIGZpZm8gb24gZGlzYWJsZV9kbWEoKSB3aGljaAogCQkgICBpcyB3cm9uZyBhbmQgcnVpbnMgdGhlIGF1ZGlvLiAKIAogCQkgICBCdWcyOiBWU0ExIGhhcyBhIHdyYXAgYnVnIHNvIHRoYXQgdXNpbmcgbWF4aW11bSBzaXplZCBETUEgCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvY3lyaXguYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9jeXJpeC5jCmluZGV4IDIyODdkNDguLjk5NjRiZTMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9jeXJpeC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9jeXJpeC5jCkBAIC0xNDcsMTAgKzE0NywxMCBAQAogCXdyaXRlX2NyMChjcjApOwogCXdiaW52ZCgpOwogCi0JLyogQ3lyaXggQVJScyAtIGV2ZXJ5dGhpbmcgZWxzZSB3ZXJlIGV4Y2x1ZGVkIGF0IHRoZSB0b3AgKi8KKwkvKiBDeXJpeCBBUlJzIC0gZXZlcnl0aGluZyBlbHNlIHdhcyBleGNsdWRlZCBhdCB0aGUgdG9wICovCiAJY2NyMyA9IGdldEN4ODYoQ1g4Nl9DQ1IzKTsKIAotCS8qIEN5cml4IEFSUnMgLSBldmVyeXRoaW5nIGVsc2Ugd2VyZSBleGNsdWRlZCBhdCB0aGUgdG9wICovCisJLyogQ3lyaXggQVJScyAtIGV2ZXJ5dGhpbmcgZWxzZSB3YXMgZXhjbHVkZWQgYXQgdGhlIHRvcCAqLwogCXNldEN4ODYoQ1g4Nl9DQ1IzLCAoY2NyMyAmIDB4MGYpIHwgMHgxMCk7CiAKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9nZW5lcmljLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvZ2VuZXJpYy5jCmluZGV4IDU2ZjY0ZTMuLjk5MmYwOGQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9nZW5lcmljLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL2dlbmVyaWMuYwpAQCAtMTgyLDcgKzE4Miw3IEBACiAKIC8qKgogICogQ2hlY2tzIGFuZCB1cGRhdGVzIGFuIGZpeGVkLXJhbmdlIE1UUlIgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSB2YWx1ZSBpdAotICogc2hvdWxkIGhhdmUuIElmIEs4IGV4dGVuc3Rpb25zIGFyZSB3YW50ZWQsIHVwZGF0ZSB0aGUgSzggU1lTQ0ZHIE1TUiBhbHNvLgorICogc2hvdWxkIGhhdmUuIElmIEs4IGV4dGVudGlvbnMgYXJlIHdhbnRlZCwgdXBkYXRlIHRoZSBLOCBTWVNDRkcgTVNSIGFsc28uCiAgKiBzZWUgQU1EIHB1YmxpY2F0aW9uIG5vLiAyNDU5MywgY2hhcHRlciA3LjguMSwgcGFnZSAyMzMgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAqIFxwYXJhbSBtc3IgTVNSIGFkZHJlc3Mgb2YgdGhlIE1UVFIgd2hpY2ggc2hvdWxkIGJlIGNoZWNrZWQgYW5kIHVwZGF0ZWQKICAqIFxwYXJhbSBjaGFuZ2VkIHBvaW50ZXIgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlIE1UUlIgbmVlZGVkIHRvIGJlIGNoYW5nZWQKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9tYWluLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvbWFpbi5jCmluZGV4IDVlNGJlMzAuLjlhYmJkZjcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9tYWluLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL21haW4uYwpAQCAtNzQ4LDcgKzc0OCw3IEBACiAJaWYgKHVzZV9pbnRlbCgpKQogCQltdHJyX3N0YXRlX3dhcm4oKTsKIAllbHNlIHsKLQkJLyogVGhlIENQVXMgaGF2ZW4ndCBNVFJSIGFuZCBzZWVtZXMgbm90IHN1cHBvcnQgU01QLiBUaGV5IGhhdmUKKwkJLyogVGhlIENQVXMgaGF2ZW4ndCBNVFJSIGFuZCBzZWVtIHRvIG5vdCBzdXBwb3J0IFNNUC4gVGhleSBoYXZlCiAJCSAqIHNwZWNpZmljIGRyaXZlcnMsIHdlIHVzZSBhIHRyaWNreSBtZXRob2QgdG8gc3VwcG9ydAogCQkgKiBzdXNwZW5kL3Jlc3VtZSBmb3IgdGhlbS4KIAkJICogVEJEOiBpcyB0aGVyZSBhbnkgc3lzdGVtIHdpdGggc3VjaCBDUFUgd2hpY2ggc3VwcG9ydHMKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9lODIwXzMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvZTgyMF8zMi5jCmluZGV4IGQ1ODAzOWUuLjU4ZmQ1NGUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9lODIwXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2U4MjBfMzIuYwpAQCAtNzA2LDcgKzcwNiw3IEBACiAJaW50IGk7CiAKIAkvKgotCSAqIFNlYXJjaCBmb3IgdGhlIGJpZ2VzdCBnYXAgaW4gdGhlIGxvdyAzMiBiaXRzIG9mIHRoZSBlODIwCisJICogU2VhcmNoIGZvciB0aGUgYmlnZ2VzdCBnYXAgaW4gdGhlIGxvdyAzMiBiaXRzIG9mIHRoZSBlODIwCiAJICogbWVtb3J5IHNwYWNlLgogCSAqLwogCWxhc3QgPSAweDEwMDAwMDAwMHVsbDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9ocGV0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvaHBldC5jCmluZGV4IDIyZDhmMDAuLjUzMzAzZjIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9ocGV0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2hwZXQuYwpAQCAtMzUzLDcgKzM1Myw3IEBACiAJICoKIAkgKiBocGV0IHBlcmlvZCBpcyBpbiBmZW10byBzZWNvbmRzIHBlciBjeWNsZQogCSAqIHNvIHdlIG5lZWQgdG8gY29udmVydCB0aGlzIHRvIG5zL2N5YyB1bml0cwotCSAqIGFwcm94aW1hdGVkIGJ5IG11bHQvMl5zaGlmdAorCSAqIGFwcHJveGltYXRlZCBieSBtdWx0LzJec2hpZnQKIAkgKgogCSAqICBmc2VjL2N5YyAqIDFuc2VjLzEwMDAwMDBmc2VjID0gbnNlYy9jeWMgPSBtdWx0LzJec2hpZnQKIAkgKiAgZnNlYy9jeWMgKiAxbnMvMTAwMDAwMGZzZWMgKiAyXnNoaWZ0ID0gbXVsdApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2k4MjUzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvaTgyNTMuYwppbmRleCA1Y2M4ODQxLi5hNDJjODA3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaTgyNTMuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaTgyNTMuYwpAQCAtODYsNyArODYsNyBAQAogICogT24gVVAgdGhlIFBJVCBjYW4gc2VydmUgYWxsIG9mIHRoZSBwb3NzaWJsZSB0aW1lciBmdW5jdGlvbnMuIE9uIFNNUCBzeXN0ZW1zCiAgKiBpdCBjYW4gYmUgc29sZWx5IHVzZWQgZm9yIHRoZSBnbG9iYWwgdGljay4KICAqCi0gKiBUaGUgcHJvZmlsaW5nIGFuZCB1cGRhdGUgY2FwYWJpbGl0ZXMgYXJlIHN3aXRjaGVkIG9mZiBvbmNlIHRoZSBsb2NhbCBhcGljIGlzCisgKiBUaGUgcHJvZmlsaW5nIGFuZCB1cGRhdGUgY2FwYWJpbGl0aWVzIGFyZSBzd2l0Y2hlZCBvZmYgb25jZSB0aGUgbG9jYWwgYXBpYyBpcwogICogcmVnaXN0ZXJlZC4gVGhpcyBtZWNoYW5pc20gcmVwbGFjZXMgdGhlIHByZXZpb3VzICNpZmRlZiBMT0NBTF9BUElDIC0KICAqICF1c2luZ19hcGljX3RpbWVyIGRlY2lzaW9ucyBpbiBkb190aW1lcl9pbnRlcnJ1cHRfaG9vaygpCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9pb19hcGljXzMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvaW9fYXBpY18zMi5jCmluZGV4IDBjNTVlOWQuLmYzNWM2ZWIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9pb19hcGljXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2lvX2FwaWNfMzIuYwpAQCAtNTg0LDcgKzU4NCw3IEBACiAKIAlpbWJhbGFuY2UgPSBtb3ZlX3RoaXNfbG9hZDsKIAkKLQkvKiBGb3IgcGh5c2ljYWxfYmFsYW5jZSBjYXNlLCB3ZSBhY2N1bWxhdGVkIGJvdGggbG9hZAorCS8qIEZvciBwaHlzaWNhbF9iYWxhbmNlIGNhc2UsIHdlIGFjY3VtdWxhdGVkIGJvdGggbG9hZAogCSAqIHZhbHVlcyBpbiB0aGUgb25lIG9mIHRoZSBzaWJsaW5ncyBjcHVfaXJxW10sCiAJICogdG8gdXNlIHRoZSBzYW1lIGNvZGUgZm9yIHBoeXNpY2FsIGFuZCBsb2dpY2FsIHByb2Nlc3NvcnMKIAkgKiBhcyBtdWNoIGFzIHBvc3NpYmxlLiAKQEAgLTI0NzUsNyArMjQ3NSw3IEBACiB9CiAKIC8qCi0gKiBNU0kgbWVzYWdlIGNvbXBvc2l0aW9uCisgKiBNU0kgbWVzc2FnZSBjb21wb3NpdGlvbgogICovCiAjaWZkZWYgQ09ORklHX1BDSV9NU0kKIHN0YXRpYyBpbnQgbXNpX2NvbXBvc2VfbXNnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgaXJxLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2lvX2FwaWNfNjQuYyBiL2FyY2gveDg2L2tlcm5lbC9pb19hcGljXzY0LmMKaW5kZXggMWMyYzdiZi4uYjNjMmQyNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2lvX2FwaWNfNjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaW9fYXBpY182NC5jCkBAIC0xNzcwLDcgKzE3NzAsNyBAQAogCiAvKgogICoKLSAqIElSUSdzIHRoYXQgYXJlIGhhbmRsZWQgYnkgdGhlIFBJQyBpbiB0aGUgTVBTIElPQVBJQyBjYXNlLgorICogSVJRcyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHRoZSBQSUMgaW4gdGhlIE1QUyBJT0FQSUMgY2FzZS4KICAqIC0gSVJRMiBpcyB0aGUgY2FzY2FkZSBJUlEsIGFuZCBjYW5ub3QgYmUgYSBpby1hcGljIElSUS4KICAqICAgTGludXggZG9lc24ndCByZWFsbHkgY2FyZSwgYXMgaXQncyBub3QgYWN0dWFsbHkgdXNlZAogICogICBmb3IgYW55IGludGVycnVwdCBoYW5kbGluZyBhbnl3YXkuCkBAIC0xOTIxLDcgKzE5MjEsNyBAQAogfQogCiAvKgotICogTVNJIG1lc2FnZSBjb21wb3NpdGlvbgorICogTVNJIG1lc3NhZ2UgY29tcG9zaXRpb24KICAqLwogI2lmZGVmIENPTkZJR19QQ0lfTVNJCiBzdGF0aWMgaW50IG1zaV9jb21wb3NlX21zZyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgaW50IGlycSwgc3RydWN0IG1zaV9tc2cgKm1zZykKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9tY2VfNjQuYyBiL2FyY2gveDg2L2tlcm5lbC9tY2VfNjQuYwppbmRleCAyY2YyMGRlLi4wN2JiZmU3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvbWNlXzY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL21jZV82NC5jCkBAIC0zMjAsNyArMzIwLDcgQEAKICNpZmRlZiBDT05GSUdfWDg2X01DRV9JTlRFTAogLyoqKgogICogbWNlX2xvZ190aGVybV90aHJvdF9ldmVudCAtIExvZ3MgdGhlIHRoZXJtYWwgdGhyb3R0bGluZyBldmVudCB0byBtY2Vsb2cKLSAqIEBjcHU6IFRoZSBDUFUgb24gd2hpY2ggdGhlIGV2ZW50IG9jY3VyZWQuCisgKiBAY3B1OiBUaGUgQ1BVIG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZC4KICAqIEBzdGF0dXM6IEV2ZW50IHN0YXR1cyBpbmZvcm1hdGlvbgogICoKICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgdGhlcm1hbCBpbnRlcnJ1cHQgYWZ0ZXIgdGhlCkBAIC02ODgsNyArNjg4LDcgQEAKIAlyZXR1cm4gMTsKIH0KIAotLyogbWNlPW9mZiBkaXNhYmxlcyBtYWNoaW5lIGNoZWNrLiBOb3RlIHlvdSBjYW4gcmVlbmFibGUgaXQgbGF0ZXIKKy8qIG1jZT1vZmYgZGlzYWJsZXMgbWFjaGluZSBjaGVjay4gTm90ZSB5b3UgY2FuIHJlLWVuYWJsZSBpdCBsYXRlcgogICAgdXNpbmcgc3lzZnMuCiAgICBtY2U9VE9MRVJBTkNFTEVWRUwgKG51bWJlciwgc2VlIGFib3ZlKQogICAgbWNlPWJvb3Rsb2cgTG9nIE1DRXMgZnJvbSBiZWZvcmUgYm9vdGluZy4gRGlzYWJsZWQgYnkgZGVmYXVsdCBvbiBBTUQuCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZV8zMi5jIGIvYXJjaC94ODYva2VybmVsL21wcGFyc2VfMzIuYwppbmRleCAxM2FiYjRlLi43YTA1YTdmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvbXBwYXJzZV8zMi5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9tcHBhcnNlXzMyLmMKQEAgLTEwMDEsNyArMTAwMSw3IEBACiAKIAkvKiAKIAkgKiBVc2UgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIElSUXMgMC0xNS4gIFVubGVzcwotCSAqIG92ZXJyaWRlbiBieSAoTUFEVCkgaW50ZXJydXB0IHNvdXJjZSBvdmVycmlkZSBlbnRyaWVzLgorCSAqIG92ZXJyaWRkZW4gYnkgKE1BRFQpIGludGVycnVwdCBzb3VyY2Ugb3ZlcnJpZGUgZW50cmllcy4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewogCQlpbnQgaWR4OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3B0cmFjZV8zMi5jIGIvYXJjaC94ODYva2VybmVsL3B0cmFjZV8zMi5jCmluZGV4IDk5MTAyZWMuLmZmNTQzMWMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9wdHJhY2VfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcHRyYWNlXzMyLmMKQEAgLTYzMiw3ICs2MzIsNyBAQAogCS8qIFVzZXItbW9kZSBlaXA/ICovCiAJaW5mby5zaV9hZGRyID0gdXNlcl9tb2RlX3ZtKHJlZ3MpID8gKHZvaWQgX191c2VyICopIHJlZ3MtPmVpcCA6IE5VTEw7CiAKLQkvKiBTZW5kIHVzIHRoZSBmYWtleSBTSUdUUkFQICovCisJLyogU2VuZCB1cyB0aGUgZmFrZSBTSUdUUkFQICovCiAJZm9yY2Vfc2lnX2luZm8oU0lHVFJBUCwgJmluZm8sIHRzayk7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cF8zMi5jIGIvYXJjaC94ODYva2VybmVsL3NldHVwXzMyLmMKaW5kZXggZTRmMTk5MS4uYmEyZTE2NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3NldHVwXzMyLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NldHVwXzMyLmMKQEAgLTYyNCw3ICs2MjQsNyBAQAogCS8qCiAJICogTk9URTogYmVmb3JlIHRoaXMgcG9pbnQgX25vYm9keV8gaXMgYWxsb3dlZCB0byBhbGxvY2F0ZQogCSAqIGFueSBtZW1vcnkgdXNpbmcgdGhlIGJvb3RtZW0gYWxsb2NhdG9yLiAgQWx0aG91Z2ggdGhlCi0JICogYWxsb2N0b3IgaXMgbm93IGluaXRpYWxpc2VkIG9ubHkgdGhlIGZpcnN0IDhNYiBvZiB0aGUga2VybmVsCisJICogYWxsb2NhdG9yIGlzIG5vdyBpbml0aWFsaXNlZCBvbmx5IHRoZSBmaXJzdCA4TWIgb2YgdGhlIGtlcm5lbAogCSAqIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBtYXBwZWQuICBBbGwgYWxsb2NhdGlvbnMgYmVmb3JlCiAJICogcGFnaW5nX2luaXQoKSBoYXMgY29tcGxldGVkIG11c3QgdXNlIHRoZSBhbGxvY19ib290bWVtX2xvd19wYWdlcygpCiAJICogdmFyaWFudCAod2hpY2ggYWxsb2NhdGVzIERNQSdhYmxlIG1lbW9yeSkgYW5kIGNhcmUgbXVzdCBiZSB0YWtlbgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3NpZ25hbF8zMi5jIGIvYXJjaC94ODYva2VybmVsL3NpZ25hbF8zMi5jCmluZGV4IDZkYzM5NGIuLjliZGQ4MzAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zaWduYWxfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvc2lnbmFsXzMyLmMKQEAgLTU5NCw3ICs1OTQsNyBAQAogCiAJc2lnbnIgPSBnZXRfc2lnbmFsX3RvX2RlbGl2ZXIoJmluZm8sICZrYSwgcmVncywgTlVMTCk7CiAJaWYgKHNpZ25yID4gMCkgewotCQkvKiBSZWVuYWJsZSBhbnkgd2F0Y2hwb2ludHMgYmVmb3JlIGRlbGl2ZXJpbmcgdGhlCisJCS8qIFJlLWVuYWJsZSBhbnkgd2F0Y2hwb2ludHMgYmVmb3JlIGRlbGl2ZXJpbmcgdGhlCiAJCSAqIHNpZ25hbCB0byB1c2VyIHNwYWNlLiBUaGUgcHJvY2Vzc29yIHJlZ2lzdGVyIHdpbGwKIAkJICogaGF2ZSBiZWVuIGNsZWFyZWQgaWYgdGhlIHdhdGNocG9pbnQgdHJpZ2dlcmVkCiAJCSAqIGluc2lkZSB0aGUga2VybmVsLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3NpZ25hbF82NC5jIGIvYXJjaC94ODYva2VybmVsL3NpZ25hbF82NC5jCmluZGV4IDY4MzgwMmIuLmFiMDg2YjAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zaWduYWxfNjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvc2lnbmFsXzY0LmMKQEAgLTQxMCw3ICs0MTAsNyBAQAogCiAJc2lnbnIgPSBnZXRfc2lnbmFsX3RvX2RlbGl2ZXIoJmluZm8sICZrYSwgcmVncywgTlVMTCk7CiAJaWYgKHNpZ25yID4gMCkgewotCQkvKiBSZWVuYWJsZSBhbnkgd2F0Y2hwb2ludHMgYmVmb3JlIGRlbGl2ZXJpbmcgdGhlCisJCS8qIFJlLWVuYWJsZSBhbnkgd2F0Y2hwb2ludHMgYmVmb3JlIGRlbGl2ZXJpbmcgdGhlCiAJCSAqIHNpZ25hbCB0byB1c2VyIHNwYWNlLiBUaGUgcHJvY2Vzc29yIHJlZ2lzdGVyIHdpbGwKIAkJICogaGF2ZSBiZWVuIGNsZWFyZWQgaWYgdGhlIHdhdGNocG9pbnQgdHJpZ2dlcmVkCiAJCSAqIGluc2lkZSB0aGUga2VybmVsLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3NtcF8zMi5jIGIvYXJjaC94ODYva2VybmVsL3NtcF8zMi5jCmluZGV4IDI2MjFjYTMuLmYzMjExNTMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zbXBfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvc21wXzMyLmMKQEAgLTY5LDcgKzY5LDcgQEAKICAqCiAgKgkJQiBzdGVwcGluZyBDUFVzIG1heSBoYW5nLiBUaGVyZSBhcmUgaGFyZHdhcmUgd29yayBhcm91bmRzCiAgKglmb3IgdGhpcy4gV2Ugd2FybiBhYm91dCBpdCBpbiBjYXNlIHlvdXIgYm9hcmQgZG9lc24ndCBoYXZlIHRoZSB3b3JrCi0gKglhcm91bmRzLiBCYXNpY2FsbHkgdGhhdHMgc28gSSBjYW4gdGVsbCBhbnlvbmUgd2l0aCBhIEIgc3RlcHBpbmcKKyAqCWFyb3VuZHMuIEJhc2ljYWxseSB0aGF0J3Mgc28gSSBjYW4gdGVsbCBhbnlvbmUgd2l0aCBhIEIgc3RlcHBpbmcKICAqCUNQVSBhbmQgU01QIHByb2JsZW1zICJ0b3VnaCIuCiAgKgogICoJU3BlY2lmaWMgaXRlbXMgW0Zyb20gUGVudGl1bSBQcm9jZXNzb3IgU3BlY2lmaWNhdGlvbiBVcGRhdGVdCkBAIC0yNzMsNyArMjczLDcgQEAKICAqIDFhMSkgY3B1X2NsZWFyKGNwdSwgb2xkX21tLT5jcHVfdm1fbWFzayk7CiAgKiAJU3RvcCBpcGkgZGVsaXZlcnkgZm9yIHRoZSBvbGQgbW0uIFRoaXMgaXMgbm90IHN5bmNocm9uaXplZCB3aXRoCiAgKiAJdGhlIG90aGVyIGNwdXMsIGJ1dCBzbXBfaW52YWxpZGF0ZV9pbnRlcnJ1cHQgaWdub3JlIGZsdXNoIGlwaXMKLSAqIAlmb3IgdGhlIHdyb25nIG1tLCBhbmQgaW4gdGhlIHdvcnN0IGNhc2Ugd2UgcGVyZm9ybSBhIHN1cGVyZmxvdXMKKyAqIAlmb3IgdGhlIHdyb25nIG1tLCBhbmQgaW4gdGhlIHdvcnN0IGNhc2Ugd2UgcGVyZm9ybSBhIHN1cGVyZmx1b3VzCiAgKiAJdGxiIGZsdXNoLgogICogMWEyKSBzZXQgY3B1X3RsYnN0YXRlIHRvIFRMQlNUQVRFX09LCiAgKiAJTm93IHRoZSBzbXBfaW52YWxpZGF0ZV9pbnRlcnJ1cHQgd29uJ3QgY2FsbCBsZWF2ZV9tbSBpZiBjcHUwCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvc21wYm9vdF8zMi5jIGIvYXJjaC94ODYva2VybmVsL3NtcGJvb3RfMzIuYwppbmRleCA3YjhmZGZhLi5lZjBmMzRlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvc21wYm9vdF8zMi5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9zbXBib290XzMyLmMKQEAgLTQyMSw3ICs0MjEsNyBAQAogCS8qCiAJICogV2UgbmVlZCB0byBob2xkIGNhbGxfbG9jaywgc28gdGhlcmUgaXMgbm8gaW5jb25zaXN0ZW5jeQogCSAqIGJldHdlZW4gdGhlIHRpbWUgc21wX2NhbGxfZnVuY3Rpb24oKSBkZXRlcm1pbmVzIG51bWJlciBvZgotCSAqIElQSSByZWNlaXBpZW50cywgYW5kIHRoZSB0aW1lIHdoZW4gdGhlIGRldGVybWluYXRpb24gaXMgbWFkZQorCSAqIElQSSByZWNpcGllbnRzLCBhbmQgdGhlIHRpbWUgd2hlbiB0aGUgZGV0ZXJtaW5hdGlvbiBpcyBtYWRlCiAJICogZm9yIHdoaWNoIGNwdXMgcmVjZWl2ZSB0aGUgSVBJLiBIb2xkaW5nIHRoaXMKIAkgKiBsb2NrIGhlbHBzIHVzIHRvIG5vdCBpbmNsdWRlIHRoaXMgY3B1IGluIGEgY3VycmVudGx5IGluIHByb2dyZXNzCiAJICogc21wX2NhbGxfZnVuY3Rpb24oKS4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zbXBib290XzY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvc21wYm9vdF82NC5jCmluZGV4IGZkMWZmZjYuLmI3ZTc2OGQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zbXBib290XzY0LmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NtcGJvb3RfNjQuYwpAQCAtMzUxLDcgKzM1MSw3IEBACiAJLyoKIAkgKiBXZSBuZWVkIHRvIGhvbGQgY2FsbF9sb2NrLCBzbyB0aGVyZSBpcyBubyBpbmNvbnNpc3RlbmN5CiAJICogYmV0d2VlbiB0aGUgdGltZSBzbXBfY2FsbF9mdW5jdGlvbigpIGRldGVybWluZXMgbnVtYmVyIG9mCi0JICogSVBJIHJlY2VpcGllbnRzLCBhbmQgdGhlIHRpbWUgd2hlbiB0aGUgZGV0ZXJtaW5hdGlvbiBpcyBtYWRlCisJICogSVBJIHJlY2lwaWVudHMsIGFuZCB0aGUgdGltZSB3aGVuIHRoZSBkZXRlcm1pbmF0aW9uIGlzIG1hZGUKIAkgKiBmb3Igd2hpY2ggY3B1cyByZWNlaXZlIHRoZSBJUEkgaW4gZ2VuYXBpY19mbGF0LmMuIEhvbGRpbmcgdGhpcwogCSAqIGxvY2sgaGVscHMgdXMgdG8gbm90IGluY2x1ZGUgdGhpcyBjcHUgaW4gYSBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MKIAkgKiBzbXBfY2FsbF9mdW5jdGlvbigpLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3N1bW1pdF8zMi5jIGIvYXJjaC94ODYva2VybmVsL3N1bW1pdF8zMi5jCmluZGV4IDkxYzdhY2MuLjcyZjQ2MzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9zdW1taXRfMzIuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvc3VtbWl0XzMyLmMKQEAgLTY0LDcgKzY0LDcgQEAKIAogCXN3aXRjaCAocmlvX2RldnNbd3BlZ19udW1dLT50eXBlKXsKIAljYXNlIENvbXBhdFdQRUc6Ci0JCS8qIFRoZSBDb21wYXRhYmlsaXR5IFdpbm5pcGVnIGNvbnRyb2xzIHRoZSAyIGxlZ2FjeSBidXNlcywKKwkJLyogVGhlIENvbXBhdGliaWxpdHkgV2lubmlwZWcgY29udHJvbHMgdGhlIDIgbGVnYWN5IGJ1c2VzLAogCQkgKiB0aGUgNjZNSHogUENJIGJ1cyBbMiBzbG90c10gYW5kIHRoZSAyICJleHRyYSIgYnVzZXMgaW4gY2FzZQogCQkgKiBhIFBDSS1QQ0kgYnJpZGdlIGNhcmQgaXMgdXNlZCBpbiBlaXRoZXIgc2xvdDogdG90YWwgNSBidXNlcy4KIAkJICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvc3VzcGVuZF82NC5jIGIvYXJjaC94ODYva2VybmVsL3N1c3BlbmRfNjQuYwppbmRleCA2MjJiYjAyLi5iYzlmNTljIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvc3VzcGVuZF82NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9zdXNwZW5kXzY0LmMKQEAgLTEyNCw3ICsxMjQsNyBAQAogCWludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAJc3RydWN0IHRzc19zdHJ1Y3QgKnQgPSAmcGVyX2NwdShpbml0X3RzcywgY3B1KTsKIAotCXNldF90c3NfZGVzYyhjcHUsdCk7CS8qIFRoaXMganVzdCBtb2RpZmllcyBtZW1vcnk7IHNob3VsZCBub3QgYmUgbmVjY2Vzc2FyeS4gQnV0Li4uIFRoaXMgaXMgbmVjY2Vzc2FyeSwgYmVjYXVzZSAzODYgaGFyZHdhcmUgaGFzIGNvbmNlcHQgb2YgYnVzeSBUU1Mgb3Igc29tZSBzaW1pbGFyIHN0dXBpZGl0eS4gKi8KKwlzZXRfdHNzX2Rlc2MoY3B1LHQpOwkvKiBUaGlzIGp1c3QgbW9kaWZpZXMgbWVtb3J5OyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeS4gQnV0Li4uIFRoaXMgaXMgbmVjZXNzYXJ5LCBiZWNhdXNlIDM4NiBoYXJkd2FyZSBoYXMgY29uY2VwdCBvZiBidXN5IFRTUyBvciBzb21lIHNpbWlsYXIgc3R1cGlkaXR5LiAqLwogCiAJY3B1X2dkdChjcHUpW0dEVF9FTlRSWV9UU1NdLnR5cGUgPSA5OwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvdHJhcHNfNjQuYyBiL2FyY2gveDg2L2tlcm5lbC90cmFwc182NC5jCmluZGV4IGRmNjkwYzMuLmQwYzJiYzcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC90cmFwc182NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC90cmFwc182NC5jCkBAIC0yMDEsNyArMjAxLDcgQEAKICNkZWZpbmUgTVNHKHR4dCkgb3BzLT53YXJuaW5nKGRhdGEsIHR4dCkKIAogLyoKLSAqIHg4Ni02NCBjYW4gaGF2ZSB1cHRvIHRocmVlIGtlcm5lbCBzdGFja3M6IAorICogeDg2LTY0IGNhbiBoYXZlIHVwIHRvIHRocmVlIGtlcm5lbCBzdGFja3M6IAogICogcHJvY2VzcyBzdGFjawogICogaW50ZXJydXB0IHN0YWNrCiAgKiBzZXZlcmUgZXhjZXB0aW9uIChkb3VibGUgZmF1bHQsIG5taSwgc3RhY2sgZmF1bHQsIGRlYnVnLCBtY2UpIGhhcmR3YXJlIHN0YWNrCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvdHNjXzMyLmMgYi9hcmNoL3g4Ni9rZXJuZWwvdHNjXzMyLmMKaW5kZXggYjhhN2NmNi4uZDc4NDQ0YyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3RzY18zMi5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC90c2NfMzIuYwpAQCAtNTksNyArNTksNyBAQAogfQogRVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfdHNjX3Vuc3RhYmxlKTsKIAotLyogQWNjZWxsZXJhdG9ycyBmb3Igc2NoZWRfY2xvY2soKQorLyogQWNjZWxlcmF0b3JzIGZvciBzY2hlZF9jbG9jaygpCiAgKiBjb252ZXJ0IGZyb20gY3ljbGVzKDY0Yml0cykgPT4gbmFub3NlY29uZHMgKDY0Yml0cykKICAqICBiYXNpYyBlcXVhdGlvbjoKICAqCQlucyA9IGN5Y2xlcyAvIChmcmVxIC8gbnNfcGVyX3NlYykKQEAgLTc0LDcgKzc0LDcgQEAKICAqCUFuZCBzaW5jZSBTQyBpcyBhIGNvbnN0YW50IHBvd2VyIG9mIHR3bywgd2UgY2FuIGNvbnZlcnQgdGhlIGRpdgogICogIGludG8gYSBzaGlmdC4KICAqCi0gKiAgV2UgY2FuIHVzZSBraHogZGl2aXNvciBpbnN0ZWFkIG9mIG1oeiB0byBrZWVwIGEgYmV0dGVyIHBlcmNpc2lvbiwgc2luY2UKKyAqICBXZSBjYW4gdXNlIGtoeiBkaXZpc29yIGluc3RlYWQgb2YgbWh6IHRvIGtlZXAgYSBiZXR0ZXIgcHJlY2lzaW9uLCBzaW5jZQogICogIGN5YzJuc19zY2FsZSBpcyBsaW1pdGVkIHRvIDEwXjYgKiAyXjEwLCB3aGljaCBmaXRzIGluIDMyIGJpdHMuCiAgKiAgKG1hdGhpZXUuZGVzbm95ZXJzQHBvbHltdGwuY2EpCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL3ZzeXNjYWxsXzY0LmMgYi9hcmNoL3g4Ni9rZXJuZWwvdnN5c2NhbGxfNjQuYwppbmRleCA3OGYyMjUwLi5hZDQwMDVjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvdnN5c2NhbGxfNjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvdnN5c2NhbGxfNjQuYwpAQCAtNTMsNyArNTMsNyBAQAogLyoKICAqIHZzeXNjYWxsX2d0b2RfZGF0YSBjb250YWlucyBkYXRhIHRoYXQgaXMgOgogICogLSByZWFkb25seSBmcm9tIHZzeXNjYWxscwotICogLSB3cml0ZW4gYnkgdGltZXIgaW50ZXJydXB0IG9yIHN5c3RjbCAoL3Byb2Mvc3lzL2tlcm5lbC92c3lzY2FsbDY0KQorICogLSB3cml0dGVuIGJ5IHRpbWVyIGludGVycnVwdCBvciBzeXN0Y2wgKC9wcm9jL3N5cy9rZXJuZWwvdnN5c2NhbGw2NCkKICAqIFRyeSB0byBrZWVwIHRoaXMgc3RydWN0dXJlIGFzIHNtYWxsIGFzIHBvc3NpYmxlIHRvIGF2b2lkIGNhY2hlIGxpbmUgcGluZyBwb25ncwogICovCiBpbnQgX192Z2V0Y3B1X21vZGUgX19zZWN0aW9uX3ZnZXRjcHVfbW9kZTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21hY2gtZGVmYXVsdC9zZXR1cC5jIGIvYXJjaC94ODYvbWFjaC1kZWZhdWx0L3NldHVwLmMKaW5kZXggM2YwODAxMC4uMGMyOGEwNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbWFjaC1kZWZhdWx0L3NldHVwLmMKKysrIGIvYXJjaC94ODYvbWFjaC1kZWZhdWx0L3NldHVwLmMKQEAgLTEwOCw3ICsxMDgsNyBAQAogICogbWNhX25taV9ob29rIC0gaG9vayBpbnRvIE1DQSBzcGVjaWZpYyBOTUkgY2hhaW4KICAqCiAgKiBEZXNjcmlwdGlvbjoKLSAqCVRoZSBNQ0EgKE1pY3JvY2hhbm5lbCBBcmNpdGVjdHVyZSkgaGFzIGFuIE5NSSBjaGFpbiBmb3IgTk1JIHNvdXJjZXMKKyAqCVRoZSBNQ0EgKE1pY3JvY2hhbm5lbCBBcmNoaXRlY3R1cmUpIGhhcyBhbiBOTUkgY2hhaW4gZm9yIE5NSSBzb3VyY2VzCiAgKglhbG9uZyB0aGUgTUNBIGJ1cy4gIFVzZSB0aGlzIHRvIGhvb2sgaW50byB0aGF0IGNoYWluIGlmIHlvdSB3aWxsIG5lZWQKICAqCWl0LgogICoqLwpAQCAtMTMxLDcgKzEzMSw3IEBACiAJcmV0dXJuIDE7CiB9CiAKLV9fc2V0dXAoIm5vX2lwaV9icm9hZGNhc3QiLCBub19pcGlfYnJvYWRjYXN0KTsKK19fc2V0dXAoIm5vX2lwaV9icm9hZGNhc3Q9Iiwgbm9faXBpX2Jyb2FkY2FzdCk7CiAKIHN0YXRpYyBpbnQgX19pbml0IHByaW50X2lwaV9tb2RlKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tYWNoLWdlbmVyaWMvZGVmYXVsdC5jIGIvYXJjaC94ODYvbWFjaC1nZW5lcmljL2RlZmF1bHQuYwppbmRleCA4Njg1MjA4Li4xYWYwY2M3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tYWNoLWdlbmVyaWMvZGVmYXVsdC5jCisrKyBiL2FyY2gveDg2L21hY2gtZ2VuZXJpYy9kZWZhdWx0LmMKQEAgLTEsNSArMSw1IEBACiAvKiAKLSAqIERlZmF1bHQgZ2VuZXJpYyBBUElDIGRyaXZlci4gVGhpcyBoYW5kbGVzIHVwdG8gOCBDUFVzLgorICogRGVmYXVsdCBnZW5lcmljIEFQSUMgZHJpdmVyLiBUaGlzIGhhbmRsZXMgdXAgdG8gOCBDUFVzLgogICovCiAjZGVmaW5lIEFQSUNfREVGSU5JVElPTiAxCiAjaW5jbHVkZSA8bGludXgvdGhyZWFkcy5oPgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbWFjaC1nZW5lcmljL3Byb2JlLmMgYi9hcmNoL3g4Ni9tYWNoLWdlbmVyaWMvcHJvYmUuYwppbmRleCA0MTIxZDE1Li5mNDEwZDNjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tYWNoLWdlbmVyaWMvcHJvYmUuYworKysgYi9hcmNoL3g4Ni9tYWNoLWdlbmVyaWMvcHJvYmUuYwpAQCAtNTYsNyArNTYsNyBAQAogCS8qCiAJICogVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gc3dpdGNoIHRvIGJpZ3NtcCBtb2RlIHdoZW4KIAkgKiAtIFRoZXJlIGlzIG5vIGFwaWM9IG9wdGlvbiBzcGVjaWZpZWQgYnkgdGhlIHVzZXIKLQkgKiAtIGdlbmVyaWNfYXBpY19wcm9iZSgpIGhhcyBjaG9vc2VuIGFwaWNfZGVmYXVsdCBhcyB0aGUgc3ViX2FyY2gKKwkgKiAtIGdlbmVyaWNfYXBpY19wcm9iZSgpIGhhcyBjaG9zZW4gYXBpY19kZWZhdWx0IGFzIHRoZSBzdWJfYXJjaAogCSAqIC0gd2UgZmluZCBtb3JlIHRoYW4gOCBDUFVzIGluIGFjcGkgTEFQSUMgbGlzdGluZyB3aXRoIHhBUElDIHN1cHBvcnQKIAkgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbWFjaC12b3lhZ2VyL3ZveWFnZXJfc21wLmMgYi9hcmNoL3g4Ni9tYWNoLXZveWFnZXIvdm95YWdlcl9zbXAuYwppbmRleCBmOTNhNzMwLi4zNjFhYzUxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tYWNoLXZveWFnZXIvdm95YWdlcl9zbXAuYworKysgYi9hcmNoL3g4Ni9tYWNoLXZveWFnZXIvdm95YWdlcl9zbXAuYwpAQCAtMzg5LDcgKzM4OSw3IEBACiAKIAkvKiBUaGUgYm9vdCBDUFUgbXVzdCBiZSBleHRlbmRlZCAqLwogCXZveWFnZXJfZXh0ZW5kZWRfdmljX3Byb2Nlc3NvcnMgPSAxPDxib290X2NwdV9pZDsKLQkvKiBpbml0aWFsbHksIGFsbCBvZiB0aGUgZmlyc3QgOCBjcHUncyBjYW4gYm9vdCAqLworCS8qIGluaXRpYWxseSwgYWxsIG9mIHRoZSBmaXJzdCA4IENQVXMgY2FuIGJvb3QgKi8KIAl2b3lhZ2VyX2FsbG93ZWRfYm9vdF9wcm9jZXNzb3JzID0gMHhmZjsKIAkvKiBzZXQgdXAgZXZlcnl0aGluZyBmb3IganVzdCB0aGlzIENQVSwgd2UgY2FuIGFsdGVyCiAJICogdGhpcyBhcyB3ZSBzdGFydCB0aGUgb3RoZXIgQ1BVcyBsYXRlciAqLwpAQCAtMTAxMCw3ICsxMDEwLDcgQEAKIAogLyogZXhlY3V0ZSBhIHRocmVhZCBvbiBhIG5ldyBDUFUuICBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG11c3QgYmUKICAqIHByZXZpb3VzbHkgc2V0IHVwLiAgVGhpcyBpcyB1c2VkIHRvIHNjaGVkdWxlIGEgZnVuY3Rpb24gZm9yCi0gKiBleGVjdXRpb24gb24gYWxsIENQVSdzIC0gc2V0IHVwIHRoZSBmdW5jdGlvbiB0aGVuIGJyb2FkY2FzdCBhCisgKiBleGVjdXRpb24gb24gYWxsIENQVXMgLSBzZXQgdXAgdGhlIGZ1bmN0aW9uIHRoZW4gYnJvYWRjYXN0IGEKICAqIGZ1bmN0aW9uX2ludGVycnVwdCBDUEkgdG8gY29tZSBoZXJlIG9uIGVhY2ggQ1BVICovCiBzdGF0aWMgdm9pZAogc21wX2NhbGxfZnVuY3Rpb25faW50ZXJydXB0KHZvaWQpCkBAIC0xMDk1LDcgKzEwOTUsNyBAQAogICogQ1BJIGhlcmUuICBXZSBkb24ndCB1c2UgdGhpcyBhY3R1YWxseSBmb3IgY291bnRpbmcgc28gbG9zaW5nCiAgKiB0aWNrcyBkb2Vzbid0IG1hdHRlciAKICAqCi0gKiBGSVhNRTogRm9yIHRob3NlIENQVSdzIHdoaWNoIGFjdHVhbGx5IGhhdmUgYSBsb2NhbCBBUElDLCB3ZSBjb3VsZAorICogRklYTUU6IEZvciB0aG9zZSBDUFVzIHdoaWNoIGFjdHVhbGx5IGhhdmUgYSBsb2NhbCBBUElDLCB3ZSBjb3VsZAogICogdHJ5IHRvIHVzZSBpdCB0byB0cmlnZ2VyIHRoaXMgaW50ZXJydXB0IGluc3RlYWQgb2YgaGF2aW5nIHRvCiAgKiBicm9hZGNhc3QgdGhlIHRpbWVyIHRpY2suICBVbmZvcnR1bmF0ZWx5LCBhbGwgbXkgcGVudGl1bSBEWUFEcyBoYXZlCiAgKiBubyBsb2NhbCBBUElDLCBzbyBJIGNhbid0IGRvIHRoaXMKQEAgLTEyODcsNyArMTI4Nyw3IEBACiAKIAkvKgogCSAqIFdlIHRha2UgdGhlICdsb25nJyByZXR1cm4gcGF0aCwgYW5kIHRoZXJlIGV2ZXJ5IHN1YnN5c3RlbQotCSAqIGdyYWJzIHRoZSBhcHJvcHJpYXRlIGxvY2tzIChrZXJuZWwgbG9jay8gaXJxIGxvY2spLgorCSAqIGdyYWJzIHRoZSBhcHByb3ByaWF0ZSBsb2NrcyAoa2VybmVsIGxvY2svIGlycSBsb2NrKS4KIAkgKgogCSAqIHdlIG1pZ2h0IHdhbnQgdG8gZGVjb3VwbGUgcHJvZmlsaW5nIGZyb20gdGhlICdsb25nIHBhdGgnLAogCSAqIGFuZCBkbyB0aGUgcHJvZmlsaW5nIHRvdGFsbHkgaW4gYXNzZW1ibHkuCkBAIC0xNzU5LDcgKzE3NTksNyBAQAogCXJlYWxfbWFzayA9IGNwdXNfYWRkcihtYXNrKVswXSAmIHZveWFnZXJfZXh0ZW5kZWRfdmljX3Byb2Nlc3NvcnM7CiAJCiAJaWYoY3B1c19hZGRyKG1hc2spWzBdID09IDApCi0JCS8qIGNhbid0IGhhdmUgbm8gY3B1J3MgdG8gYWNjZXB0IHRoZSBpbnRlcnJ1cHQgLS0gZXh0cmVtZWx5CisJCS8qIGNhbid0IGhhdmUgbm8gQ1BVcyB0byBhY2NlcHQgdGhlIGludGVycnVwdCAtLSBleHRyZW1lbHkKIAkJICogYmFkIHRoaW5ncyB3aWxsIGhhcHBlbiAqLwogCQlyZXR1cm47CiAKQEAgLTE3OTEsNyArMTc5MSw3IEBACiAJfQogCS8qIHRoaXMgaXMgbWFnaWMsIHdlIG5vdyBoYXZlIHRoZSBjb3JyZWN0IGFmZmluaXR5IG1hcHMsIHNvCiAJICogZW5hYmxlIHRoZSBpbnRlcnJ1cHQuICBUaGlzIHdpbGwgc2VuZCBhbiBlbmFibGUgQ1BJIHRvCi0JICogdGhvc2UgY3B1J3Mgd2hvIG5lZWQgdG8gZW5hYmxlIGl0IGluIHRoZWlyIGxvY2FsIG1hc2tzLAorCSAqIHRob3NlIENQVXMgd2hvIG5lZWQgdG8gZW5hYmxlIGl0IGluIHRoZWlyIGxvY2FsIG1hc2tzLAogCSAqIGNhdXNpbmcgdGhlbSB0byBjb3JyZWN0IGZvciB0aGUgbmV3IGFmZmluaXR5IC4gSWYgdGhlCiAJICogaW50ZXJydXB0IGlzIGN1cnJlbnRseSBnbG9iYWxseSBkaXNhYmxlZCwgaXQgd2lsbCBzaW1wbHkgYmUKIAkgKiBkaXNhYmxlZCBhZ2FpbiBhcyBpdCBjb21lcyBpbiAodm95YWdlciBsYXp5IGRpc2FibGUpLiAgSWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21hY2gtdm95YWdlci92b3lhZ2VyX3RocmVhZC5jIGIvYXJjaC94ODYvbWFjaC12b3lhZ2VyL3ZveWFnZXJfdGhyZWFkLmMKaW5kZXggZjlkNTk1My4uNTBmOTM2NiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbWFjaC12b3lhZ2VyL3ZveWFnZXJfdGhyZWFkLmMKKysrIGIvYXJjaC94ODYvbWFjaC12b3lhZ2VyL3ZveWFnZXJfdGhyZWFkLmMKQEAgLTY0LDcgKzY0LDcgQEAKIHsKIAlpZih2b3lhZ2VyX3N0YXR1cy5zd2l0Y2hfb2ZmKSB7CiAJCQotCQkvKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29uZmlndXJlYWJsZSB2aWEgcHJvYyAqLworCQkvKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29uZmlndXJhYmxlIHZpYSBwcm9jICovCiAJCWV4ZWN1dGUoInVtYXNrIDYwMDsgZWNobyAwID4gL2V0Yy9pbml0cnVubHZsOyBraWxsIC1IVVAgMSIpOwogCX0gZWxzZSBpZih2b3lhZ2VyX3N0YXR1cy5wb3dlcl9mYWlsKSB7CiAJCVZERUJVRygoIlZveWFnZXIgZGFlbW9uIGRldGVjdGVkIEFDIHBvd2VyIGZhaWx1cmVcbiIpKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2Jvb3RfaW9yZW1hcF8zMi5jIGIvYXJjaC94ODYvbW0vYm9vdF9pb3JlbWFwXzMyLmMKaW5kZXggNGRlOTVhMS4uZjE0ZGEyYSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vYm9vdF9pb3JlbWFwXzMyLmMKKysrIGIvYXJjaC94ODYvbW0vYm9vdF9pb3JlbWFwXzMyLmMKQEAgLTEwLDcgKzEwLDcgQEAKIAogLyoKICAqIFdlIG5lZWQgdG8gdXNlIHRoZSAyLWxldmVsIHBhZ2V0YWJsZSBmdW5jdGlvbnMsIGJ1dCBDT05GSUdfWDg2X1BBRQotICoga2VlcHMgdGhhdCBmcm9tIGhhcHBlbm5pbmcuICBJZiBhbnlvbmUgaGFzIGEgYmV0dGVyIHdheSwgSSdtIGxpc3RlbmluZy4KKyAqIGtlZXBzIHRoYXQgZnJvbSBoYXBwZW5pbmcuICBJZiBhbnlvbmUgaGFzIGEgYmV0dGVyIHdheSwgSSdtIGxpc3RlbmluZy4KICAqCiAgKiBib290X3B0ZV90IGlzIGRlZmluZWQgb25seSBpZiB0aGlzIGFsbCB3b3JrcyBjb3JyZWN0bHkKICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZGlzY29udGlnXzMyLmMgYi9hcmNoL3g4Ni9tbS9kaXNjb250aWdfMzIuYwppbmRleCAxMzg5Mzc3Li5mZTYwOGE0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9kaXNjb250aWdfMzIuYworKysgYi9hcmNoL3g4Ni9tbS9kaXNjb250aWdfMzIuYwpAQCAtMjczLDcgKzI3Myw3IEBACiAJICogV2hlbiBtYXBwaW5nIGEgTlVNQSBtYWNoaW5lIHdlIGFsbG9jYXRlIHRoZSBub2RlX21lbV9tYXAgYXJyYXlzCiAJICogZnJvbSBub2RlIGxvY2FsIG1lbW9yeS4gIFRoZXkgYXJlIHRoZW4gbWFwcGVkIGRpcmVjdGx5IGludG8gS1ZBCiAJICogYmV0d2VlbiB6b25lIG5vcm1hbCBhbmQgdm1hbGxvYyBzcGFjZS4gIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZgotCSAqIHRoaXMgc3BhY2UgYW5kIHVzZSBpdCB0byBhZGp1c3QgdGhlIGJvdW5kcnkgYmV0d2VlbiBaT05FX05PUk1BTAorCSAqIHRoaXMgc3BhY2UgYW5kIHVzZSBpdCB0byBhZGp1c3QgdGhlIGJvdW5kYXJ5IGJldHdlZW4gWk9ORV9OT1JNQUwKIAkgKiBhbmQgWk9ORV9ISUdITUVNLgogCSAqLwogCWZpbmRfbWF4X3BmbigpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZmF1bHRfMzIuYyBiL2FyY2gveDg2L21tL2ZhdWx0XzMyLmMKaW5kZXggYjY5NWQ3MC4uNTAzZGZjMCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vZmF1bHRfMzIuYworKysgYi9hcmNoL3g4Ni9tbS9mYXVsdF8zMi5jCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogCS8qIFdoZW4gcnVubmluZyBpbiB0aGUga2VybmVsIHdlIGV4cGVjdCBmYXVsdHMgdG8gb2NjdXIgb25seSB0bwogCSAqIGFkZHJlc3NlcyBpbiB1c2VyIHNwYWNlLiAgQWxsIG90aGVyIGZhdWx0cyByZXByZXNlbnQgZXJyb3JzIGluIHRoZQotCSAqIGtlcm5lbCBhbmQgc2hvdWxkIGdlbmVyYXRlIGFuIE9PUFMuICBVbmZvcnR1bmF0bHksIGluIHRoZSBjYXNlIG9mIGFuCisJICoga2VybmVsIGFuZCBzaG91bGQgZ2VuZXJhdGUgYW4gT09QUy4gIFVuZm9ydHVuYXRlbHksIGluIHRoZSBjYXNlIG9mIGFuCiAJICogZXJyb25lb3VzIGZhdWx0IG9jY3VycmluZyBpbiBhIGNvZGUgcGF0aCB3aGljaCBhbHJlYWR5IGhvbGRzIG1tYXBfc2VtCiAJICogd2Ugd2lsbCBkZWFkbG9jayBhdHRlbXB0aW5nIHRvIHZhbGlkYXRlIHRoZSBmYXVsdCBhZ2FpbnN0IHRoZQogCSAqIGFkZHJlc3Mgc3BhY2UuICBMdWNraWx5IHRoZSBrZXJuZWwgb25seSB2YWxpZGx5IHJlZmVyZW5jZXMgdXNlcgpAQCAtMzYyLDcgKzM2Miw3IEBACiAJICogZXhjZXB0aW9ucyB0YWJsZS4KIAkgKgogCSAqIEFzIHRoZSB2YXN0IG1ham9yaXR5IG9mIGZhdWx0cyB3aWxsIGJlIHZhbGlkIHdlIHdpbGwgb25seSBwZXJmb3JtCi0JICogdGhlIHNvdXJjZSByZWZlcmVuY2UgY2hlY2sgd2hlbiB0aGVyZSBpcyBhIHBvc3NpYmlsdHkgb2YgYSBkZWFkbG9jay4KKwkgKiB0aGUgc291cmNlIHJlZmVyZW5jZSBjaGVjayB3aGVuIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgYSBkZWFkbG9jay4KIAkgKiBBdHRlbXB0IHRvIGxvY2sgdGhlIGFkZHJlc3Mgc3BhY2UsIGlmIHdlIGNhbm5vdCB3ZSB0aGVuIHZhbGlkYXRlIHRoZQogCSAqIHNvdXJjZS4gIElmIHRoaXMgaXMgaW52YWxpZCB3ZSBjYW4gc2tpcCB0aGUgYWRkcmVzcyBzcGFjZSBjaGVjaywKIAkgKiB0aHVzIGF2b2lkaW5nIHRoZSBkZWFkbG9jay4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2ZhdWx0XzY0LmMgYi9hcmNoL3g4Ni9tbS9mYXVsdF82NC5jCmluZGV4IDAwYmU3ZjAuLjY0NGI0ZjcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL2ZhdWx0XzY0LmMKKysrIGIvYXJjaC94ODYvbW0vZmF1bHRfNjQuYwpAQCAtMzczLDcgKzM3Myw3IEBACiAgYWdhaW46CiAJLyogV2hlbiBydW5uaW5nIGluIHRoZSBrZXJuZWwgd2UgZXhwZWN0IGZhdWx0cyB0byBvY2N1ciBvbmx5IHRvCiAJICogYWRkcmVzc2VzIGluIHVzZXIgc3BhY2UuICBBbGwgb3RoZXIgZmF1bHRzIHJlcHJlc2VudCBlcnJvcnMgaW4gdGhlCi0JICoga2VybmVsIGFuZCBzaG91bGQgZ2VuZXJhdGUgYW4gT09QUy4gIFVuZm9ydHVuYXRseSwgaW4gdGhlIGNhc2Ugb2YgYW4KKwkgKiBrZXJuZWwgYW5kIHNob3VsZCBnZW5lcmF0ZSBhbiBPT1BTLiAgVW5mb3J0dW5hdGVseSwgaW4gdGhlIGNhc2Ugb2YgYW4KIAkgKiBlcnJvbmVvdXMgZmF1bHQgb2NjdXJyaW5nIGluIGEgY29kZSBwYXRoIHdoaWNoIGFscmVhZHkgaG9sZHMgbW1hcF9zZW0KIAkgKiB3ZSB3aWxsIGRlYWRsb2NrIGF0dGVtcHRpbmcgdG8gdmFsaWRhdGUgdGhlIGZhdWx0IGFnYWluc3QgdGhlCiAJICogYWRkcmVzcyBzcGFjZS4gIEx1Y2tpbHkgdGhlIGtlcm5lbCBvbmx5IHZhbGlkbHkgcmVmZXJlbmNlcyB1c2VyCkBAIC0zODEsNyArMzgxLDcgQEAKIAkgKiBleGNlcHRpb25zIHRhYmxlLgogCSAqCiAJICogQXMgdGhlIHZhc3QgbWFqb3JpdHkgb2YgZmF1bHRzIHdpbGwgYmUgdmFsaWQgd2Ugd2lsbCBvbmx5IHBlcmZvcm0KLQkgKiB0aGUgc291cmNlIHJlZmVyZW5jZSBjaGVjayB3aGVuIHRoZXJlIGlzIGEgcG9zc2liaWx0eSBvZiBhIGRlYWRsb2NrLgorCSAqIHRoZSBzb3VyY2UgcmVmZXJlbmNlIGNoZWNrIHdoZW4gdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZiBhIGRlYWRsb2NrLgogCSAqIEF0dGVtcHQgdG8gbG9jayB0aGUgYWRkcmVzcyBzcGFjZSwgaWYgd2UgY2Fubm90IHdlIHRoZW4gdmFsaWRhdGUgdGhlCiAJICogc291cmNlLiAgSWYgdGhpcyBpcyBpbnZhbGlkIHdlIGNhbiBza2lwIHRoZSBhZGRyZXNzIHNwYWNlIGNoZWNrLAogCSAqIHRodXMgYXZvaWRpbmcgdGhlIGRlYWRsb2NrLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vc3JhdF82NC5jIGIvYXJjaC94ODYvbW0vc3JhdF82NC5jCmluZGV4IDU2MDg5Y2MuLmVhODUxNzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL3NyYXRfNjQuYworKysgYi9hcmNoL3g4Ni9tbS9zcmF0XzY0LmMKQEAgLTIxOCw3ICsyMTgsNyBAQAogLyoKICAqIFVwZGF0ZSBub2Rlc19hZGQgYW5kIGRlY2lkZSBpZiB0byBpbmNsdWRlIGFkZCBhcmUgaW4gdGhlIHpvbmUuCiAgKiBCb3RoIFNQQVJTRSBhbmQgUkVTRVJWRSBuZWVkIG5vZGVzX2FkZCBpbmZvbWF0aW9uLgotICogVGhpcyBjb2RlIHN1cHBvcnRzIG9uZSBjb250aWdpb3VzIGhvdCBhZGQgYXJlYSBwZXIgbm9kZS4KKyAqIFRoaXMgY29kZSBzdXBwb3J0cyBvbmUgY29udGlndW91cyBob3QgYWRkIGFyZWEgcGVyIG5vZGUuCiAgKi8KIHN0YXRpYyBpbnQgcmVzZXJ2ZV9ob3RhZGQoaW50IG5vZGUsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvb3Byb2ZpbGUvb3BfeDg2X21vZGVsLmggYi9hcmNoL3g4Ni9vcHJvZmlsZS9vcF94ODZfbW9kZWwuaAppbmRleCBhYmIxYWE5Li40NWI2MDVmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9vcHJvZmlsZS9vcF94ODZfbW9kZWwuaAorKysgYi9hcmNoL3g4Ni9vcHJvZmlsZS9vcF94ODZfbW9kZWwuaApAQCAtMjksNyArMjksNyBAQAogc3RydWN0IHB0X3JlZ3M7CiAKIC8qIFRoZSBtb2RlbCB2dGFibGUgYWJzdHJhY3RzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCi0gKiB2YXJpb3VzIHg4NiBDUFUgbW9kZWwncyBwZXJmY3RyIHN1cHBvcnQuCisgKiB2YXJpb3VzIHg4NiBDUFUgbW9kZWxzJyBwZXJmY3RyIHN1cHBvcnQuCiAgKi8KIHN0cnVjdCBvcF94ODZfbW9kZWxfc3BlYyB7CiAJdW5zaWduZWQgaW50IGNvbnN0IG51bV9jb3VudGVyczsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BjaS9pcnEuYyBiL2FyY2gveDg2L3BjaS9pcnEuYwppbmRleCBjNTIxNTBmLi44OGQ4ZjVjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9wY2kvaXJxLmMKKysrIGIvYXJjaC94ODYvcGNpL2lycS5jCkBAIC0xNjksNyArMTY5LDcgQEAKIH0KIAogLyoKLSAqIENvbW1vbiBJUlEgcm91dGluZyBwcmFjdGljZTogbnliYmxlcyBpbiBjb25maWcgc3BhY2UsCisgKiBDb21tb24gSVJRIHJvdXRpbmcgcHJhY3RpY2U6IG5pYmJsZXMgaW4gY29uZmlnIHNwYWNlLAogICogb2Zmc2V0IGJ5IHNvbWUgbWFnaWMgY29uc3RhbnQuCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgcmVhZF9jb25maWdfbnliYmxlKHN0cnVjdCBwY2lfZGV2ICpyb3V0ZXIsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbnIpCkBAIC01ODUsNyArNTg1LDcgQEAKIAkvKiBGSVhNRTogV2Ugc2hvdWxkIG1vdmUgc29tZSBvZiB0aGUgcXVpcmsgZml4dXAgc3R1ZmYgaGVyZSAqLwogCiAJLyoKLQkgKiB3b3JrIGFyb3VuZHMgZm9yIHNvbWUgYnVnZ3kgQklPU2VzCisJICogd29ya2Fyb3VuZHMgZm9yIHNvbWUgYnVnZ3kgQklPU2VzCiAJICovCiAJaWYgKGRldmljZSA9PSBQQ0lfREVWSUNFX0lEX1ZJQV84MkM1ODZfMCkgewogCQlzd2l0Y2gocm91dGVyLT5kZXZpY2UpIHsKZGlmZiAtLWdpdCBhL2FyY2gveHRlbnNhL3BsYXRmb3JtLWlzcy9uZXR3b3JrLmMgYi9hcmNoL3h0ZW5zYS9wbGF0Zm9ybS1pc3MvbmV0d29yay5jCmluZGV4IGYwOTk2MmYuLmI2MWZiMzYgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL3BsYXRmb3JtLWlzcy9uZXR3b3JrLmMKKysrIGIvYXJjaC94dGVuc2EvcGxhdGZvcm0taXNzL25ldHdvcmsuYwpAQCAtNzk4LDcgKzc5OCw3IEBACiAKICN1bmRlZiBFUlIKIAotX19zZXR1cCgiZXRoIiwgaXNzX25ldF9zZXR1cCk7CitfX3NldHVwKCJldGg9IiwgaXNzX25ldF9zZXR1cCk7CiAKIC8qCiAgKiBJbml0aWFsaXplIGFsbCBJU1MgRXRoZXJuZXQgZGV2aWNlcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgaW4gaXNzX25ldF9zZXR1cC4KZGlmZiAtLWdpdCBhL2Jsb2NrL2VsZXZhdG9yLmMgYi9ibG9jay9lbGV2YXRvci5jCmluZGV4IDk1MmFlZTAuLjQ0NmFlYTIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2VsZXZhdG9yLmMKKysrIGIvYmxvY2svZWxldmF0b3IuYwpAQCAtMzkwLDcgKzM5MCw3IEBACiAKIC8qCiAgKiBJbnNlcnQgcnEgaW50byBkaXNwYXRjaCBxdWV1ZSBvZiBxLiAgUXVldWUgbG9jayBtdXN0IGJlIGhlbGQgb24KLSAqIGVudHJ5LiAgcnEgaXMgc29ydCBpbnN0ZWQgaW50byB0aGUgZGlzcGF0Y2ggcXVldWUuIFRvIGJlIHVzZWQgYnkKKyAqIGVudHJ5LiAgcnEgaXMgc29ydCBpbnN0ZWFkIGludG8gdGhlIGRpc3BhdGNoIHF1ZXVlLiBUbyBiZSB1c2VkIGJ5CiAgKiBzcGVjaWZpYyBlbGV2YXRvcnMuCiAgKi8KIHZvaWQgZWx2X2Rpc3BhdGNoX3NvcnQoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSkKZGlmZiAtLWdpdCBhL2NyeXB0by9hcGkuYyBiL2NyeXB0by9hcGkuYwppbmRleCA0Y2NjNWFmLi4xZjVjNzI0IDEwMDY0NAotLS0gYS9jcnlwdG8vYXBpLmMKKysrIGIvY3J5cHRvL2FwaS5jCkBAIC02LDcgKzYsNyBAQAogICogQ29weXJpZ2h0IChjKSAyMDA1IEhlcmJlcnQgWHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KICAqCiAgKiBQb3J0aW9ucyBkZXJpdmVkIGZyb20gQ3J5cHRvYXBpLCBieSBBbGV4YW5kZXIgS2plbGRhYXMgPGFzdG9yQGZhc3Qubm8+Ci0gKiBhbmQgTmV0dGxlLCBieSBOaWVscyBN9mxsZXIuCisgKiBhbmQgTmV0dGxlLCBieSBOaWVscyBNw7ZsbGVyLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2ZjcnlwdC5jIGIvY3J5cHRvL2ZjcnlwdC5jCmluZGV4IDljMmJiNTMuLmQxNjE5NDkgMTAwNjQ0Ci0tLSBhL2NyeXB0by9mY3J5cHQuYworKysgYi9jcnlwdG8vZmNyeXB0LmMKQEAgLTEwLDcgKzEwLDcgQEAKICAqCiAgKiBCYXNlZCBvbiBjb2RlOgogICoKLSAqIENvcHlyaWdodCAoYykgMTk5NSAtIDIwMDAgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuCisgKiBDb3B5cmlnaHQgKGMpIDE5OTUgLSAyMDAwIEt1bmdsaWdhIFRla25pc2thIEjDtmdza29sYW4KICAqIChSb3lhbCBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgU3RvY2tob2xtLCBTd2VkZW4pLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvS2NvbmZpZyBiL2RyaXZlcnMvYWNwaS9LY29uZmlnCmluZGV4IGI4MzM4OTEuLjVkMGUyNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9LY29uZmlnCisrKyBiL2RyaXZlcnMvYWNwaS9LY29uZmlnCkBAIC01Miw3ICs1Miw3IEBACiAJZGVwZW5kcyBvbiBQUk9DX0ZTCiAJLS0taGVscC0tLQogCSAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGlzIG9wdGlvbiBhbGxvd3MKLQkgIGRlcHJpY2F0ZWQgL3Byb2MvYWNwaS8gZmlsZXMgdG8gZXhpc3QsIGV2ZW4gd2hlbgorCSAgZGVwcmVjYXRlZCAvcHJvYy9hY3BpLyBmaWxlcyB0byBleGlzdCwgZXZlbiB3aGVuCiAJICB0aGV5IGhhdmUgYmVlbiByZXBsYWNlZCBieSBmdW5jdGlvbnMgaW4gL3N5cy4KIAkgIFRoZSBkZXByZWNhdGVkIGZpbGVzIChhbmQgdGhlaXIgcmVwbGFjZW1lbnRzKSBpbmNsdWRlOgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9haGNpLmMgYi9kcml2ZXJzL2F0YS9haGNpLmMKaW5kZXggMTBiYzNmNi4uNDdjODA2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYWhjaS5jCisrKyBiL2RyaXZlcnMvYXRhL2FoY2kuYwpAQCAtMTQ3OSw3ICsxNDc5LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIGhtbW0uLi4gYSBzcHVyaW91cyBpbnRlcnVwdCAqLworCS8qIGhtbW0uLi4gYSBzcHVyaW91cyBpbnRlcnJ1cHQgKi8KIAogCS8qIGlmICFOQ1EsIGlnbm9yZS4gIE5vIG1vZGVybiBBVEEgZGV2aWNlIGhhcyBicm9rZW4gSFNNCiAJICogaW1wbGVtZW50YXRpb24gZm9yIG5vbi1OQ1EgY29tbWFuZHMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtc2ZmLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2ZmLmMKaW5kZXggZjllNGNkNS4uODIyN2M0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLXNmZi5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYwpAQCAtODU2LDcgKzg1Niw3IEBACiAgKglAcGRldjogUENJIGRldmljZQogICoKICAqCVNvbWUgUENJIEFUQSBkZXZpY2VzIHJlcG9ydCBzaW1wbGV4IG1vZGUgYnV0IGluIGZhY3QgY2FuIGJlIHRvbGQgdG8KLSAqCWVudGVyIG5vbiBzaW1wbGV4IG1vZGUuIFRoaXMgaW1wbGVtZW50cyB0aGUgbmVjY2Vzc2FyeSBsb2dpYyB0bworICoJZW50ZXIgbm9uIHNpbXBsZXggbW9kZS4gVGhpcyBpbXBsZW1lbnRzIHRoZSBuZWNlc3NhcnkgbG9naWMgdG8KICAqCXBlcmZvcm0gdGhlIHRhc2sgb24gc3VjaCBkZXZpY2VzLiBDYWxsaW5nIGl0IG9uIG90aGVyIGRldmljZXMgd2lsbAogICoJaGF2ZSAtdW5kZWZpbmVkLSBiZWhhdmlvdXIuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfY21kNjR4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX2NtZDY0eC5jCmluZGV4IDllNDEyYzIuLjdhY2JiZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfY21kNjR4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9jbWQ2NHguYwpAQCAtMjE1LDcgKzIxNSw3IEBACiAJcmVnVSAmPSB+KDB4MDUgPDwgYWRldi0+ZGV2bm8pOwogCiAJaWYgKGFkZXYtPmRtYV9tb2RlID49IFhGRVJfVURNQV8wKSB7Ci0JCS8qIE1lcmdlIHRoZ2UgdGltaW5nIHZhbHVlICovCisJCS8qIE1lcmdlIHRoZSB0aW1pbmcgdmFsdWUgKi8KIAkJcmVnVSB8PSB1ZG1hX2RhdGFbYWRldi0+ZG1hX21vZGUgLSBYRkVSX1VETUFfMF0gPDwgc2hpZnQ7CiAJCS8qIE1lcmdlIHRoZSBjb250cm9sIGJpdHMgKi8KIAkJcmVnVSB8PSAxIDw8IGFkZXYtPmRldm5vOyAvKiBVRE1BIG9uICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2NzNTUzMC5jIGIvZHJpdmVycy9hdGEvcGF0YV9jczU1MzAuYwppbmRleCA1N2U4MjdlLi5lMTgxOGZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2NzNTUzMC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTMwLmMKQEAgLTEzOCw3ICsxMzgsNyBAQAogICoKICAqCUNhbGxlZCB3aGVuIHRoZSBsaWJhdGEgbGF5ZXIgaXMgYWJvdXQgdG8gaXNzdWUgYSBjb21tYW5kLiBXZSB3cmFwCiAgKgl0aGlzIGludGVyZmFjZSBzbyB0aGF0IHdlIGNhbiBsb2FkIHRoZSBjb3JyZWN0IEFUQSB0aW1pbmdzIGlmCi0gKgluZWNjZXNzYXJ5LiAgU3BlY2lmaWNhbGx5IHdlIGhhdmUgYSBwcm9ibGVtIHRoYXQgdGhlcmUgaXMgb25seQorICoJbmVjZXNzYXJ5LiAgU3BlY2lmaWNhbGx5IHdlIGhhdmUgYSBwcm9ibGVtIHRoYXQgdGhlcmUgaXMgb25seQogICoJb25lIE1XRE1BL1VETUEgYml0LgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTM1LmMgYi9kcml2ZXJzL2F0YS9wYXRhX2NzNTUzNS5jCmluZGV4IDM1Nzg1OTMuLjAxMzI0NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTM1LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9jczU1MzUuYwpAQCAtMjUsNyArMjUsNyBAQAogICogRG9jdW1lbnRhdGlvbjoKICAqCUF2YWlsYWJsZSBmcm9tIEFNRCB3ZWIgc2l0ZS4KICAqIFRPRE8KLSAqCVJldmlldyBlcnJhdGEgdG8gc2VlIGlmIHNlcmlhbGl6aW5nIGlzIG5lY2Nlc3NhcnkKKyAqCVJldmlldyBlcnJhdGEgdG8gc2VlIGlmIHNlcmlhbGl6aW5nIGlzIG5lY2Vzc2FyeQogICovCiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfaXQ4MjF4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX2l0ODIxeC5jCmluZGV4IDk4OGVmNzMuLmNhOWFhZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfaXQ4MjF4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9pdDgyMXguYwpAQCAtMTA1LDcgKzEwNSw3IEBACiAKIC8qCiAgKglXZSBhbGxvdyB1c2VycyB0byBmb3JjZSB0aGUgY2FyZCBpbnRvIG5vbiByYWlkIG1vZGUgd2l0aG91dAotICoJZmxhc2hpbmcgdGhlIGFsdGVybmF0aXZlIEJJT1MuIFRoaXMgaXMgYWxzbyBuZWNjZXNzYXJ5IHJpZ2h0IG5vdworICoJZmxhc2hpbmcgdGhlIGFsdGVybmF0aXZlIEJJT1MuIFRoaXMgaXMgYWxzbyBuZWNlc3NhcnkgcmlnaHQgbm93CiAgKglmb3IgZW1iZWRkZWQgcGxhdGZvcm1zIHRoYXQgY2Fubm90IHJ1biBhIFBDIEJJT1MgYnV0IGFyZSB1c2luZyB0aGlzCiAgKglkZXZpY2UuCiAgKi8KQEAgLTM4Myw3ICszODMsNyBAQAogICoJQGFwOiBBVEEgcG9ydAogICoJQGRldmljZTogRGV2aWNlIG51bWJlciAobm90IHBvaW50ZXIpCiAgKgotICoJRGV2aWNlIHNlbGVjdGlvbiBob29rLiBJZiBuZWNjZXNzYXJ5IHBlcmZvcm0gY2xvY2sgc3dpdGNoaW5nCisgKglEZXZpY2Ugc2VsZWN0aW9uIGhvb2suIElmIG5lY2Vzc2FyeSBwZXJmb3JtIGNsb2NrIHN3aXRjaGluZwogICovCiAKIHN0YXRpYyB2b2lkIGl0ODIxeF9wYXNzdGhydV9kZXZfc2VsZWN0KHN0cnVjdCBhdGFfcG9ydCAqYXAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMKaW5kZXggZDU0ODMwOC4uYzBkOWUwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9tcGlpeC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfbXBpaXguYwpAQCAtMTI5LDcgKzEyOSw3IEBACiAgKgogICoJQ2FsbGVkIHdoZW4gdGhlIGxpYmF0YSBsYXllciBpcyBhYm91dCB0byBpc3N1ZSBhIGNvbW1hbmQuIFdlIHdyYXAKICAqCXRoaXMgaW50ZXJmYWNlIHNvIHRoYXQgd2UgY2FuIGxvYWQgdGhlIGNvcnJlY3QgQVRBIHRpbWluZ3MgaWYKLSAqCW5lY2Nlc3NhcnkuIE91ciBsb2dpYyBhbHNvIGNsZWFycyBUSU1FMC9USU1FMSBmb3IgdGhlIG90aGVyIGRldmljZSBzbworICoJbmVjZXNzYXJ5LiBPdXIgbG9naWMgYWxzbyBjbGVhcnMgVElNRTAvVElNRTEgZm9yIHRoZSBvdGhlciBkZXZpY2Ugc28KICAqCXRoYXQsIGV2ZW4gaWYgd2UgZ2V0IHRoaXMgd3JvbmcsIGN5Y2xlcyB0byB0aGUgb3RoZXIgZGV2aWNlIHdpbGwKICAqCWJlIG1hZGUgUElPMC4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9uczg3NDEwLmMgYi9kcml2ZXJzL2F0YS9wYXRhX25zODc0MTAuYwppbmRleCA2ZThlNTU3Li45ZmU2NmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX25zODc0MTAuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX25zODc0MTAuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiAgKgogICoJQ2FsbGVkIHdoZW4gdGhlIGxpYmF0YSBsYXllciBpcyBhYm91dCB0byBpc3N1ZSBhIGNvbW1hbmQuIFdlIHdyYXAKICAqCXRoaXMgaW50ZXJmYWNlIHNvIHRoYXQgd2UgY2FuIGxvYWQgdGhlIGNvcnJlY3QgQVRBIHRpbWluZ3MgaWYKLSAqCW5lY2Nlc3NhcnkuCisgKgluZWNlc3NhcnkuCiAgKi8KIAogc3RhdGljIHVuc2lnbmVkIGludCBuczg3NDEwX3FjX2lzc3VlX3Byb3Qoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfb2xkcGlpeC5jIGIvZHJpdmVycy9hdGEvcGF0YV9vbGRwaWl4LmMKaW5kZXggM2NkNWViMi4uNDRkYTA5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9vbGRwaWl4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9vbGRwaWl4LmMKQEAgLTIwMCw3ICsyMDAsNyBAQAogICoKICAqCUNhbGxlZCB3aGVuIHRoZSBsaWJhdGEgbGF5ZXIgaXMgYWJvdXQgdG8gaXNzdWUgYSBjb21tYW5kLiBXZSB3cmFwCiAgKgl0aGlzIGludGVyZmFjZSBzbyB0aGF0IHdlIGNhbiBsb2FkIHRoZSBjb3JyZWN0IEFUQSB0aW1pbmdzIGlmCi0gKgluZWNjZXNzYXJ5LiBPdXIgbG9naWMgYWxzbyBjbGVhcnMgVElNRTAvVElNRTEgZm9yIHRoZSBvdGhlciBkZXZpY2Ugc28KKyAqCW5lY2Vzc2FyeS4gT3VyIGxvZ2ljIGFsc28gY2xlYXJzIFRJTUUwL1RJTUUxIGZvciB0aGUgb3RoZXIgZGV2aWNlIHNvCiAgKgl0aGF0LCBldmVuIGlmIHdlIGdldCB0aGlzIHdyb25nLCBjeWNsZXMgdG8gdGhlIG90aGVyIGRldmljZSB3aWxsCiAgKgliZSBtYWRlIFBJTzAuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfcmFkaXN5cy5jIGIvZHJpdmVycy9hdGEvcGF0YV9yYWRpc3lzLmMKaW5kZXggZDViNzY0OS4uODEwOWIwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9yYWRpc3lzLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9yYWRpc3lzLmMKQEAgLTE2MSw3ICsxNjEsNyBAQAogICoKICAqCUNhbGxlZCB3aGVuIHRoZSBsaWJhdGEgbGF5ZXIgaXMgYWJvdXQgdG8gaXNzdWUgYSBjb21tYW5kLiBXZSB3cmFwCiAgKgl0aGlzIGludGVyZmFjZSBzbyB0aGF0IHdlIGNhbiBsb2FkIHRoZSBjb3JyZWN0IEFUQSB0aW1pbmdzIGlmCi0gKgluZWNjZXNzYXJ5LiBPdXIgbG9naWMgYWxzbyBjbGVhcnMgVElNRTAvVElNRTEgZm9yIHRoZSBvdGhlciBkZXZpY2Ugc28KKyAqCW5lY2Vzc2FyeS4gT3VyIGxvZ2ljIGFsc28gY2xlYXJzIFRJTUUwL1RJTUUxIGZvciB0aGUgb3RoZXIgZGV2aWNlIHNvCiAgKgl0aGF0LCBldmVuIGlmIHdlIGdldCB0aGlzIHdyb25nLCBjeWNsZXMgdG8gdGhlIG90aGVyIGRldmljZSB3aWxsCiAgKgliZSBtYWRlIFBJTzAuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfc2MxMjAwLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3NjMTIwMC5jCmluZGV4IDIxZWJjNDguLjcyNWE4NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfc2MxMjAwLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9zYzEyMDAuYwpAQCAtMTU2LDcgKzE1Niw3IEBACiAgKgogICoJQ2FsbGVkIHdoZW4gdGhlIGxpYmF0YSBsYXllciBpcyBhYm91dCB0byBpc3N1ZSBhIGNvbW1hbmQuIFdlIHdyYXAKICAqCXRoaXMgaW50ZXJmYWNlIHNvIHRoYXQgd2UgY2FuIGxvYWQgdGhlIGNvcnJlY3QgQVRBIHRpbWluZ3MgaWYKLSAqCW5lY2Nlc3NhcnkuICBTcGVjaWZpY2FsbHkgd2UgaGF2ZSBhIHByb2JsZW0gdGhhdCB0aGVyZSBpcyBvbmx5CisgKgluZWNlc3NhcnkuICBTcGVjaWZpY2FsbHkgd2UgaGF2ZSBhIHByb2JsZW0gdGhhdCB0aGVyZSBpcyBvbmx5CiAgKglvbmUgTVdETUEvVURNQSBiaXQuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lsNjgwLmMKaW5kZXggNGRjMmU3My4uNWMxZTljYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKgogICoJSWYgeW91IGhhdmUgc3RyYW5nZSBwcm9ibGVtcyB3aXRoIG5WaWRpYSBjaGlwc2V0IHN5c3RlbXMgcGxlYXNlCiAgKglzZWUgdGhlIFNJIHN1cHBvcnQgZG9jdW1lbnRhdGlvbiBhbmQgdXBkYXRlIHlvdXIgc3lzdGVtIEJJT1MKLSAqCWlmIG5lY2Nlc3NhcnkKKyAqCWlmIG5lY2Vzc2FyeQogICoKICAqIFRPRE8KICAqCUlmIHdlIGtub3cgYWxsIG91ciBkZXZpY2VzIGFyZSBMQkEyOCAob3IgTEJBMjggc2l6ZWQpICB3ZSBjb3VsZCB1c2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfdmlhLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3ZpYS5jCmluZGV4IDVkNDFiNjYuLmVhN2E5YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfdmlhLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV92aWEuYwpAQCAtNDIwLDcgKzQyMCw3IEBACiAgKglAcGRldjogUENJIGRldmljZQogICoJQGZsYWdzOiBjb25maWd1cmF0aW9uIGZsYWdzCiAgKgotICoJU2V0IHRoZSBGSUZPIHByb3BlcnRpZXMgZm9yIHRoaXMgZGV2aWNlIGlmIG5lY2Nlc3NhcnkuIFVzZWQgYm90aCBvbgorICoJU2V0IHRoZSBGSUZPIHByb3BlcnRpZXMgZm9yIHRoaXMgZGV2aWNlIGlmIG5lY2Vzc2FyeS4gVXNlZCBib3RoIG9uCiAgKglzZXQgdXAgYW5kIG9uIGFuZCB0aGUgcmVzdW1lIHBhdGgKICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMgYi9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMKaW5kZXggOTRlYmM5ZC4uZjhmNzEzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vZmlyZXN0cmVhbS5jCisrKyBiL2RyaXZlcnMvYXRtL2ZpcmVzdHJlYW0uYwpAQCAtMTU5Niw3ICsxNTk2LDcgQEAKIAogCS8qIHByaW50IHRoZSBiaXRzIGluIHRoZSBJU1IgcmVnaXN0ZXIuICovCiAJaWYgKGZzX2RlYnVnICYgRlNfREVCVUdfSVJRKSB7Ci0JCS8qIFRoZSBGU19ERUJVRyB0aGluZ3MgYXJlIHVubmVjY2VzYXJ5IGhlcmUuIEJ1dCB0aGlzIHdheSBpdCBpcworCQkvKiBUaGUgRlNfREVCVUcgdGhpbmdzIGFyZSB1bm5lY2Vzc2FyeSBoZXJlLiBCdXQgdGhpcyB3YXkgaXQgaXMKIAkJICAgY2xlYXIgZm9yIGdyZXAgdGhhdCB0aGVzZSBhcmUgZGVidWcgcHJpbnRzLiAqLwogCQlmc19kcHJpbnRrIChGU19ERUJVR19JUlEsICAiSVJRIHN0YXR1czoiKTsKIAkJZm9yIChpPTA7aTwyNztpKyspIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9LY29uZmlnIGIvZHJpdmVycy9ibG9jay9LY29uZmlnCmluZGV4IGNhNGQ3ZjAuLmNlNGIxZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svS2NvbmZpZworKysgYi9kcml2ZXJzL2Jsb2NrL0tjb25maWcKQEAgLTIwNCwyMyArMjA0LDYgQEAKIAlib29sCiAJZGVmYXVsdCBCTEtfREVWX1VCRAogCi1jb25maWcgTU1BUFBFUgotCXRyaXN0YXRlICJFeGFtcGxlIElPIG1lbW9yeSBkcml2ZXIgKEJST0tFTikiCi0JZGVwZW5kcyBvbiBVTUwgJiYgQlJPS0VOCi0JLS0taGVscC0tLQotICAgICAgICAgIFRoZSBVc2VyLU1vZGUgTGludXggcG9ydCBjYW4gcHJvdmlkZSBzdXBwb3J0IGZvciBJTyBNZW1vcnkKLSAgICAgICAgICBlbXVsYXRpb24gd2l0aCB0aGlzIG9wdGlvbi4gIFRoaXMgYWxsb3dzIGEgaG9zdCBmaWxlIHRvIGJlCi0gICAgICAgICAgc3BlY2lmaWVkIGFzIGFuIEkvTyByZWdpb24gb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuIFRoYXQgZmlsZQotICAgICAgICAgIHdpbGwgYmUgbWFwcGVkIGludG8gVU1MJ3Mga2VybmVsIGFkZHJlc3Mgc3BhY2Ugd2hlcmUgYSBkcml2ZXIgY2FuCi0gICAgICAgICAgbG9jYXRlIGl0IGFuZCBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBtZW1vcnksIGluY2x1ZGluZwotICAgICAgICAgIHByb3ZpZGluZyBhbiBpbnRlcmZhY2UgdG8gaXQgZm9yIFVNTCBwcm9jZXNzZXMgdG8gdXNlLgotCi0gICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotICAgICAgICAgIDxodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldC9pb21lbS5odG1sPi4KLQotICAgICAgICAgIElmIHlvdSdkIGxpa2UgdG8gYmUgYWJsZSB0byBwcm92aWRlIGEgc2ltdWxhdGVkIElPIHBvcnQgc3BhY2UgZm9yCi0gICAgICAgICAgVXNlci1Nb2RlIExpbnV4IHByb2Nlc3Nlcywgc2F5IFkuICBJZiB1bnN1cmUsIHNheSBOLgotCiBjb25maWcgQkxLX0RFVl9MT09QCiAJdHJpc3RhdGUgIkxvb3BiYWNrIGRldmljZSBzdXBwb3J0IgogCS0tLWhlbHAtLS0KQEAgLTM1MSw3ICszMzQsNyBAQAogCWRlZmF1bHQgIjE2IgogCWRlcGVuZHMgb24gQkxLX0RFVl9SQU0KIAloZWxwCi0JICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxNiBSQU0gZGlza3MuIENoYW5nZSB0aGlzIGlmIHlvdSBrbm93IHdoYXQKKwkgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2IFJBTSBkaXNrcy4gQ2hhbmdlIHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UKIAkgIGFyZSBkb2luZy4gSWYgeW91IGJvb3QgZnJvbSBhIGZpbGVzeXN0ZW0gdGhhdCBuZWVkcyB0byBiZSBleHRyYWN0ZWQKIAkgIGluIG1lbW9yeSwgeW91IHdpbGwgbmVlZCBhdCBsZWFzdCBvbmUgUkFNIGRpc2sgKGUuZy4gcm9vdCBvbiBjcmFtZnMpLgogCkBAIC0zNjEsNyArMzQ0LDcgQEAKIAlkZWZhdWx0ICI0MDk2IgogCWhlbHAKIAkgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwOTYga2lsb2J5dGVzLiBPbmx5IGNoYW5nZSB0aGlzIGlmIHlvdSBrbm93Ci0JICB3aGF0IGFyZSB5b3UgZG9pbmcuCisJICB3aGF0IHlvdSBhcmUgZG9pbmcuCiAKIGNvbmZpZyBCTEtfREVWX1JBTV9CTE9DS1NJWkUKIAlpbnQgIkRlZmF1bHQgUkFNIGRpc2sgYmxvY2sgc2l6ZSAoYnl0ZXMpIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCA1ODljYmJkLi41NmUyMzA0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqCiAgKiBNYXhpbXVtIG51bWJlciBvZiBsb29wIGRldmljZXMgd2hlbiBjb21waWxlZC1pbiBub3cgc2VsZWN0YWJsZSBieSBwYXNzaW5nCiAgKiBtYXhfbG9vcD08MS0yNTU+IHRvIHRoZSBrZXJuZWwgb24gYm9vdC4KLSAqIEVyaWsgSS4gQm9sc/gsIDxlcmlraUBoaW1vbGRlLm5vPiwgT2N0IDMxLCAxOTk5CisgKiBFcmlrIEkuIEJvbHPDuCwgPGVyaWtpQGhpbW9sZGUubm8+LCBPY3QgMzEsIDE5OTkKICAqCiAgKiBDb21wbGV0ZWx5IHJld3JpdGUgcmVxdWVzdCBoYW5kbGluZyB0byBiZSBtYWtlX3JlcXVlc3RfZm4gc3R5bGUgYW5kCiAgKiBub24gYmxvY2tpbmcsIHB1c2hpbmcgd29yayB0byBhIGhlbHBlciB0aHJlYWQuIExvdHMgb2YgZml4ZXMgZnJvbQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9uYmQuYyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKaW5kZXggYWM0YTBjYi4uNjMzMmFjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuYworKysgYi9kcml2ZXJzL2Jsb2NrL25iZC5jCkBAIC01MDgsNyArNTA4LDYgQEAKIAkJbmJkX2VuZF9yZXF1ZXN0KHJlcSk7CiAJCXNwaW5fbG9jayhxLT5xdWV1ZV9sb2NrKTsKIAl9Ci0JcmV0dXJuOwogfQogCiBzdGF0aWMgaW50IG5iZF9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcmQuYyBiL2RyaXZlcnMvYmxvY2svcmQuYwppbmRleCAwODE3NmQyLi40N2Y4YWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JkLmMKKysrIGIvZHJpdmVycy9ibG9jay9yZC5jCkBAIC0zNjUsNyArMzY1LDcgQEAKIAkJLyoKIAkJICogRGVlcCBiYWRuZXNzLiAgcmRfYmxrZGV2X3BhZ2VjYWNoZV9JTygpIG5lZWRzIHRvIGFsbG9jYXRlCiAJCSAqIHBhZ2VjYWNoZSBwYWdlcyB3aXRoaW4gYSByZXF1ZXN0X2ZuLiAgV2UgY2Fubm90IHJlY3VyIGJhY2sKLQkJICogaW50byB0aGUgZmlsZXN5dGVtIHdoaWNoIGlzIG1vdW50ZWQgYXRvcCB0aGUgcmFtZGlzaywgYmVjYXVzZQorCQkgKiBpbnRvIHRoZSBmaWxlc3lzdGVtIHdoaWNoIGlzIG1vdW50ZWQgYXRvcCB0aGUgcmFtZGlzaywgYmVjYXVzZQogCQkgKiB0aGF0IHdvdWxkIGRlYWRsb2NrIG9uIGZzIGxvY2tzLiAgQW5kIHdlIHJlYWxseSBkb24ndCB3YW50CiAJCSAqIHRvIHJlZW50ZXIgcmRfYmxrZGV2X3BhZ2VjYWNoZV9JTyB3aGVuIHdlJ3JlIGFscmVhZHkgd2l0aGluCiAJCSAqIHRoYXQgZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvY3ljbGFkZXMuYyBiL2RyaXZlcnMvY2hhci9jeWNsYWRlcy5jCmluZGV4IGQxNTIzNGMuLmQxYmQwZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9jeWNsYWRlcy5jCisrKyBiL2RyaXZlcnMvY2hhci9jeWNsYWRlcy5jCkBAIC0zNTksNyArMzU5LDcgQEAKICAqCiAgKiBSZXZpc2lvbiAxLjM2LjMuOCAgMTk5Ni8wNi8wNyAxNjoyOTowMCAgYmVudHNvbgogICogc3RhcnRpbmcgbWlub3IgbnVtYmVyIGF0IHplcm87IGFkZGVkIG1pc3NpbmcgdmVyaWZ5X2FyZWEKLSAqIGFzIG5vdGVkIGJ5IEhlaWtvIEVpc3NmZWxkdCA8aGVpa29AY29sb3NzdXMuZXNjYXBlLmRlPgorICogYXMgbm90ZWQgYnkgSGVpa28gRWnDn2ZlbGR0IDxoZWlrb0Bjb2xvc3N1cy5lc2NhcGUuZGU+CiAgKgogICogUmV2aXNpb24gMS4zNi4zLjcgIDE5OTYvMDQvMTkgMjE6MDY6MTggIGJlbnRzb24KICAqIHJlbW92ZSB1bm5lZWRlZCBib290IG1lc3NhZ2UgJiBmaXggQ0xPQ0FMIGhhcmR3YXJlIGZsb3cKQEAgLTcyNyw4ICs3MjcsNiBAQAogICAgZHJpdmVyIHRvIHByb2JlIGFkZHJlc3NlcyBhdCBhIGRpZmZlcmVudCBhZGRyZXNzLCBhZGQgaXQgdG8KICAgIHRoaXMgdGFibGUuICBJZiB0aGUgZHJpdmVyIGlzIHByb2Jpbmcgc29tZSBvdGhlciBib2FyZCBhbmQKICAgIGNhdXNpbmcgcHJvYmxlbXMsIHJlbW92ZSB0aGUgb2ZmZW5kaW5nIGFkZHJlc3MgZnJvbSB0aGlzIHRhYmxlLgotICAgVGhlIGN5X3NldHVwIGZ1bmN0aW9uIGV4dHJhY3RzIGFkZGl0aW9uYWwgYWRkcmVzc2VzIGZyb20gdGhlCi0gICBib290IG9wdGlvbnMgbGluZS4gIFRoZSBmb3JtIGlzICJjeWNsYWRlcz1hZGRyZXNzLGFkZHJlc3MuLi4iCiAqLwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGN5X2lzYV9hZGRyZXNzZXNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX2hhc2h0YWIuYyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX2hhc2h0YWIuYwppbmRleCAzYWQzMTkwLi40YjhlN2RiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9oYXNodGFiLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9kcm1faGFzaHRhYi5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiBTaW1wbGUgb3BlbiBoYXNoIHRhYiBpbXBsZW1lbnRhdGlvbi4KICAqCiAgKiBBdXRob3JzOgotICogVGhvbWFzIEhlbGxzdHL2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KKyAqIFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMtYXQtdHVuZ3N0ZW5ncmFwaGljcy1kb3QtY29tPgogICovCiAKICNpbmNsdWRlICJkcm1QLmgiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9oYXNodGFiLmggYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9oYXNodGFiLmgKaW5kZXggMGYxMzc2Ny4uNTczZTMzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS9kcm1faGFzaHRhYi5oCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX2hhc2h0YWIuaApAQCAtMjksNyArMjksNyBAQAogICogU2ltcGxlIG9wZW4gaGFzaCB0YWIgaW1wbGVtZW50YXRpb24uCiAgKgogICogQXV0aG9yczoKLSAqIFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqLwogCiAjaWZuZGVmIERSTV9IQVNIVEFCX0gKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX21tLmMgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9tbS5jCmluZGV4IDNlNmJjMTQuLjg2ZjRlYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX21tLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fbW0uYwpAQCAtMzgsNyArMzgsNyBAQAogICogQWxpZ25lZCBhbGxvY2F0aW9ucyBjYW4gYWxzbyBzZWUgaW1wcm92ZW1lbnQuCiAgKgogICogQXV0aG9yczoKLSAqIFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqLwogCiAjaW5jbHVkZSAiZHJtUC5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9kcm1fcGNpLmMgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9wY2kuYwppbmRleCBlMjkyYmIwLi5iNTVkNWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9wY2kuYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL2RybV9wY2kuYwpAQCAtOCwxMiArOCwxMiBAQAogICogXHRvZG8gSW1wbGVtZW50IHRoZSByZW1haW5pbmcgaW9jdGwncyBmb3IgdGhlIFBDSSBwb29scy4KICAqIFx0b2RvIFRoZSB3cmFwcGVycyBoZXJlIGFyZSBzbyB0aGluIHRoYXQgdGhleSB3b3VsZCBiZSBiZXR0ZXIgb2ZmIGlubGluZWQuLgogICoKLSAqIFxhdXRob3IgSm9zZSBGb25zZWNhIDxqcmZvbnNlY2FAdHVuZ3N0ZW5ncmFwaGljcy5jb20+CisgKiBcYXV0aG9yIEpvc8OpIEZvbnNlY2EgPGpyZm9uc2VjYUB0dW5nc3RlbmdyYXBoaWNzLmNvbT4KICAqIFxhdXRob3IgTGVpZiBEZWxnYXNzIDxsZGVsZ2Fzc0ByZXRpbmFsYnVybi5uZXQ+CiAgKi8KIAogLyoKLSAqIENvcHlyaWdodCAyMDAzIEpvc++/vUZvbnNlY2EuCisgKiBDb3B5cmlnaHQgMjAwMyBKb3PDqSBGb25zZWNhLgogICogQ29weXJpZ2h0IDIwMDMgTGVpZiBEZWxnYXNzLgogICogQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9zYXJlYS5oIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fc2FyZWEuaAppbmRleCBmNTQ2Njk2Li5lMDQwZjQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9zYXJlYS5oCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX3NhcmVhLmgKQEAgLTIsNyArMiw3IEBACiAgKiBcZmlsZSBkcm1fc2FyZWEuaAogICogXGJyaWVmIFNBUkVBIGRlZmluaXRpb25zCiAgKgotICogXGF1dGhvciBNaWNoZWwgRORuemVyIDxtaWNoZWxAZGFlbnplci5uZXQ+CisgKiBcYXV0aG9yIE1pY2hlbCBEw6RuemVyIDxtaWNoZWxAZGFlbnplci5uZXQ+CiAgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX3NtYW4uYyBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX3NtYW4uYwppbmRleCA4NDIxYTkzLi45MjZmMTQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9zbWFuLmMKKysrIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fc21hbi5jCkBAIC0zMyw3ICszMyw3IEBACiAgKiBzdHJ1Y3Qgb3IgYSBjb250ZXh0IGlkZW50aWZpZXIuCiAgKgogICogQXV0aG9yczoKLSAqIFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqLwogCiAjaW5jbHVkZSAiZHJtX3NtYW4uaCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vZHJtX3NtYW4uaCBiL2RyaXZlcnMvY2hhci9kcm0vZHJtX3NtYW4uaAppbmRleCAzOWEzOWZlLi4wOGVjZjgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL2RybV9zbWFuLmgKKysrIGIvZHJpdmVycy9jaGFyL2RybS9kcm1fc21hbi5oCkBAIC0zMyw3ICszMyw3IEBACiAgKiBzdHJ1Y3Qgb3IgYSBjb250ZXh0IGlkZW50aWZpZXIuCiAgKgogICogQXV0aG9yczoKLSAqIFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqLwogCiAjaWZuZGVmIERSTV9TTUFOX0gKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9kcm0vcjEyOF9kcnYuaCBiL2RyaXZlcnMvY2hhci9kcm0vcjEyOF9kcnYuaAppbmRleCAyNTBkMmFhLi41MDQxYmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3IxMjhfZHJ2LmgKKysrIGIvZHJpdmVycy9jaGFyL2RybS9yMTI4X2Rydi5oCkBAIC0yOSw3ICsyOSw3IEBACiAgKiAgICBSaWNrYXJkIEUuIChSaWspIEZhaXRoIDxmYWl0aEB2YWxpbnV4LmNvbT4KICAqICAgIEtldmluIEUuIE1hcnRpbiA8bWFydGluQHZhbGludXguY29tPgogICogICAgR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPgotICogICAgTWljaGVsIETvv716ZXIgPGRhZW56ZXJtQHN0dWRlbnQuZXRoei5jaD4KKyAqICAgIE1pY2hlbCBEw6RuemVyIDxkYWVuemVybUBzdHVkZW50LmV0aHouY2g+CiAgKi8KIAogI2lmbmRlZiBfX1IxMjhfRFJWX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9yYWRlb25faXJxLmMgYi9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9pcnEuYwppbmRleCAyYjI0MDdlLi44NGY1YmMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9pcnEuYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9pcnEuYwpAQCAtMjcsNyArMjcsNyBAQAogICoKICAqIEF1dGhvcnM6CiAgKiAgICBLZWl0aCBXaGl0d2VsbCA8a2VpdGhAdHVuZ3N0ZW5ncmFwaGljcy5jb20+Ci0gKiAgICBNaWNoZWwgRO+/vXplciA8bWljaGVsQGRhZW56ZXIubmV0PgorICogICAgTWljaGVsIETDpG56ZXIgPG1pY2hlbEBkYWVuemVyLm5ldD4KICAqLwogCiAjaW5jbHVkZSAiZHJtUC5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS9yYWRlb25fc3RhdGUuYyBiL2RyaXZlcnMvY2hhci9kcm0vcmFkZW9uX3N0YXRlLmMKaW5kZXggNjljOWYyZmUuLmY4MjRmMmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3JhZGVvbl9zdGF0ZS5jCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vcmFkZW9uX3N0YXRlLmMKQEAgLTMwMDUsNyArMzAwNSw3IEBACiAJCS8qCiAJCSAqIFRoaXMgaW9jdGwoKSBkb2Vzbid0IHdvcmsgb24gNjQtYml0IHBsYXRmb3JtcyBiZWNhdXNlIGh3X2xvY2sgaXMgYQogCQkgKiBwb2ludGVyIHdoaWNoIGNhbid0IGZpdCBpbnRvIGFuIGludC1zaXplZCB2YXJpYWJsZS4gIEFjY29yZGluZyB0bwotCQkgKiBNaWNoZWwgRORuemVyLCB0aGUgaW9jdGwoKSBpcyBvbmx5IHVzZWQgb24gZW1iZWRkZWQgcGxhdGZvcm1zLCBzbworCQkgKiBNaWNoZWwgRMOkbnplciwgdGhlIGlvY3RsKCkgaXMgb25seSB1c2VkIG9uIGVtYmVkZGVkIHBsYXRmb3Jtcywgc28KIAkJICogbm90IHN1cHBvcnRpbmcgaXQgc2hvdWxkbid0IGJlIGEgcHJvYmxlbS4gIElmIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkKIAkJICogaXMgbmVlZGVkIG9uIDY0LWJpdCBwbGF0Zm9ybXMsIGEgbmV3IGlvY3RsKCkgd291bGQgaGF2ZSB0byBiZSBhZGRlZCwKIAkJICogc28gYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yIHRoZSBlbWJlZGRlZCBwbGF0Zm9ybXMgY2FuIGJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL3Npc19tbS5jIGIvZHJpdmVycy9jaGFyL2RybS9zaXNfbW0uYwppbmRleCA4YzY2ODM4Li42YmUxYzU3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS9zaXNfbW0uYworKysgYi9kcml2ZXJzL2NoYXIvZHJtL3Npc19tbS5jCkBAIC0yOCw3ICsyOCw3IEBACiAKIC8qCiAgKiBBdXRob3JzOgotICogICAgVGhvbWFzIEhlbGxzdHL2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KKyAqICAgIFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMtYXQtdHVuZ3N0ZW5ncmFwaGljcy1kb3QtY29tPgogICovCiAKICNpbmNsdWRlICJkcm1QLmgiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvZHJtL3ZpYV9tbS5jIGIvZHJpdmVycy9jaGFyL2RybS92aWFfbW0uYwppbmRleCA5YWZjMTY4Li4zZmZiZjg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZHJtL3ZpYV9tbS5jCisrKyBiL2RyaXZlcnMvY2hhci9kcm0vdmlhX21tLmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqLwogLyoKLSAqIEF1dGhvcnM6IFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiBBdXRob3JzOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqLwogCiAjaW5jbHVkZSAiZHJtUC5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2RybS92aWFfdmVyaWZpZXIuaCBiL2RyaXZlcnMvY2hhci9kcm0vdmlhX3ZlcmlmaWVyLmgKaW5kZXggMjhiNTAyOS4uZDZmODIxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2RybS92aWFfdmVyaWZpZXIuaAorKysgYi9kcml2ZXJzL2NoYXIvZHJtL3ZpYV92ZXJpZmllci5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKICAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAqCi0gKiBBdXRob3I6IFRob21hcyBIZWxsc3Ry9m0gMjAwNC4KKyAqIEF1dGhvcjogVGhvbWFzIEhlbGxzdHLDtm0gMjAwNC4KICAqLwogCiAjaWZuZGVmIF9WSUFfVkVSSUZJRVJfSF8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9lc3AuYyBiL2RyaXZlcnMvY2hhci9lc3AuYwppbmRleCAwZjhmYjEzLi4yODYwNzc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvZXNwLmMKKysrIGIvZHJpdmVycy9jaGFyL2VzcC5jCkBAIC0xOSw3ICsxOSw3IEBACiAgKgogICogIHJzX3NldF90ZXJtaW9zIGZpeGVkIHRvIGxvb2sgYWxzbyBmb3IgY2hhbmdlcyBvZiB0aGUgaW5wdXQKICAqICAgICAgZmxhZ3MgSU5QQ0ssIEJSS0lOVCwgUEFSTVJLLCBJR05QQVIgYW5kIElHTkJSSy4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXJuZCBBbmjvv71wbCAwNS8xNy85Ni4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXJuZCBBbmjDpHVwbCAwNS8xNy85Ni4KICAqCiAgKiAtLS0gRW5kIG9mIG5vdGljZXMgZnJvbSBzZXJpYWwuYyAtLS0KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMgYi9kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMKaW5kZXggZTEzZGQxOC4uM2YzNWExYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jCisrKyBiL2RyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYwpAQCAtMTAsNyArMTAsNyBAQAogICogTW9zdGx5IGJhc2VkIG9uIG9yaWdpbmFsIGRyaXZlcjoKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEgQ29ycG9yYXRpb24KLSAqIEF1dGhvcjogSnVoYSBZcmrvv73vv708anVoYS55cmpvbGFAbm9raWEuY29tPgorICogQXV0aG9yOiBKdWhhIFlyasO2bMOkIDxqdWhhLnlyam9sYUBub2tpYS5jb20+CiAgKgogICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaThrLmMgYi9kcml2ZXJzL2NoYXIvaThrLmMKaW5kZXggY2Q0MDY0MS4uMzBlNTY0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2k4ay5jCisrKyBiL2RyaXZlcnMvY2hhci9pOGsuYwpAQCAtMzcxLDE0ICszNzEsMTQgQEAKIAlpbnQgZm5fa2V5LCBjcHVfdGVtcCwgYWNfcG93ZXI7CiAJaW50IGxlZnRfZmFuLCByaWdodF9mYW4sIGxlZnRfc3BlZWQsIHJpZ2h0X3NwZWVkOwogCi0JY3B1X3RlbXAJPSBpOGtfZ2V0X3RlbXAoMCk7CQkJLyogMTExMDAgtXMgKi8KLQlsZWZ0X2Zhbgk9IGk4a19nZXRfZmFuX3N0YXR1cyhJOEtfRkFOX0xFRlQpOwkvKiAgIDU4MCC1cyAqLwotCXJpZ2h0X2Zhbgk9IGk4a19nZXRfZmFuX3N0YXR1cyhJOEtfRkFOX1JJR0hUKTsJLyogICA1ODAgtXMgKi8KLQlsZWZ0X3NwZWVkCT0gaThrX2dldF9mYW5fc3BlZWQoSThLX0ZBTl9MRUZUKTsJLyogICA1ODAgtXMgKi8KLQlyaWdodF9zcGVlZAk9IGk4a19nZXRfZmFuX3NwZWVkKEk4S19GQU5fUklHSFQpOwkvKiAgIDU4MCC1cyAqLwotCWZuX2tleQkJPSBpOGtfZ2V0X2ZuX3N0YXR1cygpOwkJCS8qICAgNzUwILVzICovCisJY3B1X3RlbXAJPSBpOGtfZ2V0X3RlbXAoMCk7CQkJLyogMTExMDAgwrVzICovCisJbGVmdF9mYW4JPSBpOGtfZ2V0X2Zhbl9zdGF0dXMoSThLX0ZBTl9MRUZUKTsJLyogICA1ODAgwrVzICovCisJcmlnaHRfZmFuCT0gaThrX2dldF9mYW5fc3RhdHVzKEk4S19GQU5fUklHSFQpOwkvKiAgIDU4MCDCtXMgKi8KKwlsZWZ0X3NwZWVkCT0gaThrX2dldF9mYW5fc3BlZWQoSThLX0ZBTl9MRUZUKTsJLyogICA1ODAgwrVzICovCisJcmlnaHRfc3BlZWQJPSBpOGtfZ2V0X2Zhbl9zcGVlZChJOEtfRkFOX1JJR0hUKTsJLyogICA1ODAgwrVzICovCisJZm5fa2V5CQk9IGk4a19nZXRfZm5fc3RhdHVzKCk7CQkJLyogICA3NTAgwrVzICovCiAJaWYgKHBvd2VyX3N0YXR1cykKLQkJYWNfcG93ZXIgPSBpOGtfZ2V0X3Bvd2VyX3N0YXR1cygpOwkJLyogMTQ3MDAgtXMgKi8KKwkJYWNfcG93ZXIgPSBpOGtfZ2V0X3Bvd2VyX3N0YXR1cygpOwkJLyogMTQ3MDAgwrVzICovCiAJZWxzZQogCQlhY19wb3dlciA9IC0xOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvbl90dHkuYyBiL2RyaXZlcnMvY2hhci9uX3R0eS5jCmluZGV4IDAzODA1NjkuLjU5NmM3MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9uX3R0eS5jCisrKyBiL2RyaXZlcnMvY2hhci9uX3R0eS5jCkBAIC00MzcsNyArNDM3LDcgQEAKICAqCUBjOiBjaGFyYWN0ZXIgaW5wdXQKICAqCUB0dHk6IHRlcm1pbmFsIGRldmljZQogICoKLSAqCVBlcmZvcm0gZXJhc2UgYW5kIG5lY2Nlc3Nhcnkgb3V0cHV0IHdoZW4gYW4gZXJhc2UgY2hhcmFjdGVyIGlzCisgKglQZXJmb3JtIGVyYXNlIGFuZCBuZWNlc3Nhcnkgb3V0cHV0IHdoZW4gYW4gZXJhc2UgY2hhcmFjdGVyIGlzCiAgKglwcmVzZW50IGluIHRoZSBzdHJlYW0gZnJvbSB0aGUgZHJpdmVyIGxheWVyLiBIYW5kbGVzIHRoZSBjb21wbGV4aXRpZXMKICAqCW9mIFVURi04IG11bHRpYnl0ZSBzeW1ib2xzLgogICovCkBAIC02NTcsNyArNjU3LDcgQEAKICAqCUBjOiBjaGFyYWN0ZXIKICAqCiAgKglQcm9jZXNzIGEgcGFyaXR5IGVycm9yIGFuZCBxdWV1ZSB0aGUgcmlnaHQgZGF0YSB0byBpbmRpY2F0ZQotICoJdGhlIGVycm9yIGNhc2UgaWYgbmVjY2Vzc2FyeS4gTG9ja2luZyBhcyBwZXIgbl90dHlfcmVjZWl2ZV9idWYuCisgKgl0aGUgZXJyb3IgY2FzZSBpZiBuZWNlc3NhcnkuIExvY2tpbmcgYXMgcGVyIG5fdHR5X3JlY2VpdmVfYnVmLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgbl90dHlfcmVjZWl2ZV9wYXJpdHlfZXJyb3Ioc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAkJCQkJICAgICAgdW5zaWduZWQgY2hhciBjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3JvY2tldC5jIGIvZHJpdmVycy9jaGFyL3JvY2tldC5jCmluZGV4IDdlNmEzYTQuLmQ4MzQxOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9yb2NrZXQuYworKysgYi9kcml2ZXJzL2NoYXIvcm9ja2V0LmMKQEAgLTU2Myw3ICs1NjMsNyBAQAogCQkvKiAgR2V0IGEgcHRyIHRvIHRoZSBib2FyZCdzIGNvbnRyb2wgc3RydWN0ICovCiAJCWN0bHAgPSBzQ3RsTnVtVG9DdGxQdHIoY3RybCk7CiAKLQkJLyogIEdldCB0aGUgaW50ZXJ1cHQgc3RhdHVzIGZyb20gdGhlIGJvYXJkICovCisJCS8qICBHZXQgdGhlIGludGVycnVwdCBzdGF0dXMgZnJvbSB0aGUgYm9hcmQgKi8KICNpZmRlZiBDT05GSUdfUENJCiAJCWlmIChjdGxwLT5CdXNUeXBlID09IGlzUENJKQogCQkJQ3RsTWFzayA9IHNQQ0lHZXRDb250cm9sbGVySW50U3RhdHVzKGN0bHApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3NvbnlwaS5jIGIvZHJpdmVycy9jaGFyL3NvbnlwaS5jCmluZGV4IDk3ODJjYjQuLjg3N2U1M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9zb255cGkuYworKysgYi9kcml2ZXJzL2NoYXIvc29ueXBpLmMKQEAgLTcsNyArNyw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA1IE5hcmF5YW5hbiBSIFMgPG5hcnNAa2FkYW1iYS5vcmc+CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgQWxj9HZlIDx3d3cuYWxjb3ZlLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY8O0dmUgPHd3dy5hbGNvdmUuY29tPgogICoKICAqIENvcHlyaWdodCAoQykgMjAwMSBNaWNoYWVsIEFzaGxleSA8bS5hc2hsZXlAdW5zdy5lZHUuYXU+CiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3R0eV9pby5jIGIvZHJpdmVycy9jaGFyL3R0eV9pby5jCmluZGV4IDEzYTUzNTcuLmYzNmZlY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci90dHlfaW8uYworKysgYi9kcml2ZXJzL2NoYXIvdHR5X2lvLmMKQEAgLTk0Myw3ICs5NDMsNyBAQAogICoJQHR0eTogdGVybWluYWwgdG8gYWN0aXZhdGUgbGRpc2Mgb24KICAqCiAgKglTZXQgdGhlIFRUWV9MRElTQyBmbGFnIHdoZW4gdGhlIGxpbmUgZGlzY2lwbGluZSBjYW4gYmUgY2FsbGVkCi0gKglhZ2Fpbi4gRG8gbmVjY2Vzc2FyeSB3YWtldXBzIGZvciBleGlzdGluZyBzbGVlcGVycy4KKyAqCWFnYWluLiBEbyBuZWNlc3Nhcnkgd2FrZXVwcyBmb3IgZXhpc3Rpbmcgc2xlZXBlcnMuCiAgKgogICoJTm90ZTogbm9ib2R5IHNob3VsZCBzZXQgdGhpcyBiaXQgZXhjZXB0IHZpYSB0aGlzIGZ1bmN0aW9uLiBDbGVhcmluZwogICoJZGlyZWN0bHkgaXMgYWxsb3dlZC4KQEAgLTE1MDQsNyArMTUwNCw3IEBACiAgKgogICoJVGhlIHVzZXIgaGFzIGFza2VkIHZpYSBzeXN0ZW0gY2FsbCBmb3IgdGhlIHRlcm1pbmFsIHRvIGJlIGh1bmcgdXAuCiAgKglXZSBkbyB0aGlzIHN5bmNocm9ub3VzbHkgc28gdGhhdCB3aGVuIHRoZSBzeXNjYWxsIHJldHVybnMgdGhlIHByb2Nlc3MKLSAqCWlzIGNvbXBsZXRlLiBUaGF0IGd1YXJhbnRlZSBpcyBuZWNjZXNzYXJ5IGZvciBzZWN1cml0eSByZWFzb25zLgorICoJaXMgY29tcGxldGUuIFRoYXQgZ3VhcmFudGVlIGlzIG5lY2Vzc2FyeSBmb3Igc2VjdXJpdHkgcmVhc29ucy4KICAqLwogCiB2b2lkIHR0eV92aGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KQpAQCAtMTY5MSw3ICsxNjkxLDcgQEAKICAqCUB0dHk6IHR0eSB0byBzdGFydAogICoKICAqCVN0YXJ0IGEgdHR5IHRoYXQgaGFzIGJlZW4gc3RvcHBlZCBpZiBhdCBhbGwgcG9zc2libGUuIFBlcmZvcm0KLSAqCWFueSBuZWNjZXNzYXJ5IHdha2V1cHMgYW5kIHByb3BhZ2F0ZSB0aGUgVElPQ1BLVCBzdGF0dXMuIElmIHRoaXMKKyAqCWFueSBuZWNlc3Nhcnkgd2FrZXVwcyBhbmQgcHJvcGFnYXRlIHRoZSBUSU9DUEtUIHN0YXR1cy4gSWYgdGhpcwogICoJaXMgdGhlIHR0eSB3YXMgcHJldmlvdXMgc3RvcHBlZCBhbmQgaXMgYmVpbmcgc3RhcnRlZCB0aGVuIHRoZQogICoJZHJpdmVyIHN0YXJ0IG1ldGhvZCBpcyBpbnZva2VkIGFuZCB0aGUgbGluZSBkaXNjaXBsaW5lIHdva2VuLgogICoKQEAgLTI4NzcsNyArMjg3Nyw3IEBACiAgKglAdHR5OiB0dHkgdG8gZmFrZSBpbnB1dCBpbnRvCiAgKglAcDogcG9pbnRlciB0byBjaGFyYWN0ZXIKICAqCi0gKglGYWtlIGlucHV0IHRvIGEgdHR5IGRldmljZS4gRG9lcyB0aGUgbmVjY2Vzc2FyeSBsb2NraW5nIGFuZAorICoJRmFrZSBpbnB1dCB0byBhIHR0eSBkZXZpY2UuIERvZXMgdGhlIG5lY2Vzc2FyeSBsb2NraW5nIGFuZAogICoJaW5wdXQgbWFuYWdlbWVudC4KICAqCiAgKglGSVhNRTogZG9lcyBub3QgaG9ub3VyIGZsb3cgY29udHJvbCA/PwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL3R0eV9pb2N0bC5jIGIvZHJpdmVycy9jaGFyL3R0eV9pb2N0bC5jCmluZGV4IDBkZWYwODkuLjdhMDAzNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci90dHlfaW9jdGwuYworKysgYi9kcml2ZXJzL2NoYXIvdHR5X2lvY3RsLmMKQEAgLTQ0NCw3ICs0NDQsNyBAQAogICoJQGFyZzogdXNlciBkYXRhCiAgKglAb3B0OiBvcHRpb24gaW5mb3JtYXRpb24KICAqCi0gKglIZWxwZXIgZnVuY3Rpb24gdG8gcHJlcGFyZSB0ZXJtaW9zIGRhdGEgYW5kIHJ1biBuZWNjZXNzYXJ5IG90aGVyCisgKglIZWxwZXIgZnVuY3Rpb24gdG8gcHJlcGFyZSB0ZXJtaW9zIGRhdGEgYW5kIHJ1biBuZWNlc3Nhcnkgb3RoZXIKICAqCWZ1bmN0aW9ucyBiZWZvcmUgdXNpbmcgY2hhbmdlX3Rlcm1pb3MgdG8gZG8gdGhlIGFjdHVhbCBjaGFuZ2VzLgogICoKICAqCUxvY2tpbmc6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXRyYW5zYWN0aW9uLmMgYi9kcml2ZXJzL2ZpcmV3aXJlL2Z3LXRyYW5zYWN0aW9uLmMKaW5kZXggOTk1OWI3OS4uYzAwZDRhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9maXJld2lyZS9mdy10cmFuc2FjdGlvbi5jCisrKyBiL2RyaXZlcnMvZmlyZXdpcmUvZnctdHJhbnNhY3Rpb24uYwpAQCAtMjI4LDcgKzIyOCw3IEBACiAgKgogICogQHBhcmFtIGNhcmQgdGhlIGNhcmQgZnJvbSB3aGljaCB0byBzZW5kIHRoZSByZXF1ZXN0CiAgKiBAcGFyYW0gdGNvZGUgdGhlIHRjb2RlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAgRG8gbm90IHVzZQotICogICBUQ09ERV9MT0NLX1JFUVVFU1QgZGlyZWN0bHksIGluc3RlZCB1c2UgVENPREVfTE9DS19NQVNLX1NXQVAKKyAqICAgVENPREVfTE9DS19SRVFVRVNUIGRpcmVjdGx5LCBpbnN0ZWFkIHVzZSBUQ09ERV9MT0NLX01BU0tfU1dBUAogICogICBldGMuIHRvIHNwZWNpZnkgdGNvZGUgYW5kIGV4dF90Y29kZS4KICAqIEBwYXJhbSBub2RlX2lkIHRoZSBkZXN0aW5hdGlvbiBub2RlIElEIChidXMgSUQgYW5kIFBIWSBJRCBjb25jYXRlbmF0ZWQpCiAgKiBAcGFyYW0gZ2VuZXJhdGlvbiB0aGUgZ2VuZXJhdGlvbiBmb3Igd2hpY2ggbm9kZV9pZCBpcyB2YWxpZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1mZi5jIGIvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1mZi5jCmluZGV4IDIyMzI5ZmUuLjRjMjEwZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtZmYuYworKysgYi9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLWZmLmMKQEAgLTEsNiArMSw0IEBACiAvKgotICogJElkOiBoaWQtZmYuYyx2IDEuMiAyMDAyLzA0LzE4IDIyOjAyOjQ3IGpkZW5ldXggRXhwICQKLSAqCiAgKiAgRm9yY2UgZmVlZGJhY2sgc3VwcG9ydCBmb3IgaGlkIGRldmljZXMuCiAgKiAgTm90IGFsbCBoaWQgZGV2aWNlcyB1c2UgdGhlIHNhbWUgcHJvdG9jb2wuIEZvciBleGFtcGxlLCBzb21lIHVzZSBQSUQsCiAgKiAgb3RoZXIgdXNlIHRoZWlyIG93biBwcm9wcmlldGFyeSBwcm9jb3RvbC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jIGIvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKaW5kZXggYTNiNTZjOC4uMmQzOWQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKKysrIGIvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKQEAgLTIsNyArMiw3IEBACiAgICAgZ2w1MjBzbS5jIC0gUGFydCBvZiBsbV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3IgaGFyZHdhcmUKICAgICAgICAgICAgICAgICBtb25pdG9yaW5nCiAgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5ICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPgogICAgIENvcHlyaWdodCAoYykgMjAwNSAgICAgICAgTWFhcnRlbiBEZXByZXogPG1hYXJ0ZW5kZXByZXpAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogCiAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTgwNSw3ICs4MDUsNyBAQAogCiAKIE1PRFVMRV9BVVRIT1IoIkZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sICIKLQkiS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+LCAiCisJIkt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LCAiCiAJIk1hYXJ0ZW4gRGVwcmV6IDxtYWFydGVuZGVwcmV6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiR0w1MjBTTSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vc2lzNTU5NS5jIGIvZHJpdmVycy9od21vbi9zaXM1NTk1LmMKaW5kZXggODYwYjcxYy4uN2UyZDk3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9zaXM1NTk1LmMKKysrIGIvZHJpdmVycy9od21vbi9zaXM1NTk1LmMKQEAgLTMsNyArMyw3IEBACiAJCWZvciBoYXJkd2FyZSBtb25pdG9yaW5nCiAKICAgICBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDAxIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCi0JCQlLefZzdGkgTeRsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4sIGFuZAorCQkJS3nDtnN0aSBNw6Rsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4sIGFuZAogCQkJTWFyayBELiBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPgogICAgIFBvcnRlZCB0byBMaW51eCAyLjYgYnkgQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PiB3aXRoCiAgICAgdGhlIGhlbHAgb2YgSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3ZpYTY4NmEuYyBiL2RyaXZlcnMvaHdtb24vdmlhNjg2YS5jCmluZGV4IDhmNjNkYWQuLjI2MzViYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdmlhNjg2YS5jCisrKyBiL2RyaXZlcnMvaHdtb24vdmlhNjg2YS5jCkBAIC0zLDcgKzMsNyBAQAogCQlmb3IgaGFyZHdhcmUgbW9uaXRvcmluZwogCiAgICAgQ29weXJpZ2h0IChjKSAxOTk4IC0gMjAwMiAgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwKLQkJCUt59nN0aSBN5Gxra2kgPGttYWxra2lAY2MuaHV0LmZpPiwKKwkJCUt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LAogCQkJTWFyayBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPiwKIAkJCWFuZCBCb2IgRG91Z2hlcnR5IDxib2JkQHN0YW5mb3JkLmVkdT4KICAgICAoU29tZSBjb252ZXJzaW9uLWZhY3RvciBkYXRhIHdlcmUgY29udHJpYnV0ZWQgYnkgSm9uYXRoYW4gVGVoIFNvb24gWWV3CkBAIC04NjYsNyArODY2LDcgQEAKIAl9CiB9CiAKLU1PRFVMRV9BVVRIT1IoIkt59nN0aSBN5Gxra2kgPGttYWxra2lAY2MuaHV0LmZpPiwgIgorTU9EVUxFX0FVVEhPUigiS3nDtnN0aSBNw6Rsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4sICIKIAkgICAgICAiTWFyayBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPiAiCiAJICAgICAgImFuZCBCb2IgRG91Z2hlcnR5IDxib2JkQHN0YW5mb3JkLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVklBIDY4NkEgU2Vuc29yIGRldmljZSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tYml0LmMgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1iaXQuYwppbmRleCA3ZjBhMGE2Li5hMzdjYjZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1iaXQuYworKysgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1iaXQuYwpAQCAtMTgsNyArMTgsNyBAQAogICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgkJICAgICAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBXaXRoIHNvbWUgY2hhbmdlcyBmcm9tIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sIEt59nN0aSBN5Gxra2kKKy8qIFdpdGggc29tZSBjaGFuZ2VzIGZyb20gRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwgS3nDtnN0aSBNw6Rsa2tpCiAgICA8a21hbGtraUBjYy5odXQuZmk+IGFuZCBKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4gKi8KIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tcGNhLmMgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYwppbmRleCAzNmZkZjk3Li4yYTE2MjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYworKysgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYwpAQCAtMzUwLDcgKzM1MCw3IEBACiAJcGNhX291dHcoYWRhcCwgSTJDX1BDQV9BRFIsIG93biA8PCAxKTsKIAogCXBjYV9zZXRfY29uKGFkYXAsIEkyQ19QQ0FfQ09OX0VOU0lPIHwgY2xvY2spOwotCXVkZWxheSg1MDApOyAvKiA1MDAgtXMgZm9yIG9zY2lsYXRvciB0byBzdGFiaWxpc2UgKi8KKwl1ZGVsYXkoNTAwKTsgLyogNTAwIMK1cyBmb3Igb3NjaWxhdG9yIHRvIHN0YWJpbGlzZSAqLwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2YuYyBiL2RyaXZlcnMvaTJjL2FsZ29zL2kyYy1hbGdvLXBjZi5jCmluZGV4IGVjYjJjMmQuLmFiMmU2ZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2FsZ29zL2kyYy1hbGdvLXBjZi5jCisrKyBiL2RyaXZlcnMvaTJjL2FsZ29zL2kyYy1hbGdvLXBjZi5jCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCQkgICAgICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIFdpdGggc29tZSBjaGFuZ2VzIGZyb20gS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCAKKy8qIFdpdGggc29tZSBjaGFuZ2VzIGZyb20gS3nDtnN0aSBNw6Rsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4gYW5kCiAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+ICxhbmQgYWxzbyBmcm9tIE1hcnRpbiBCYWlsZXkKICAgIDxtYmFpbGV5QGxpdHRsZWZlZXQtaW5jLmNvbT4gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcgYi9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZwppbmRleCBkZTk1Yzc1Li5jNDY2YzZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZwpAQCAtMjc4LDcgKzI3OCw3IEBACiAJZGVwZW5kcyBvbiBBUkNIX0lYUDIwMDAKIAlzZWxlY3QgSTJDX0FMR09CSVQKIAloZWxwCi0JICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuIEludGVsIElYUDIwMDAoMjQwMCwgMjgwMCwgMjg1MCkgYmFzZWQgCisJICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuIEludGVsIElYUDIwMDAgKDI0MDAsIDI4MDAsIDI4NTApIGJhc2VkIAogCSAgc3lzdGVtIGFuZCBhcmUgdXNpbmcgR1BJTyBsaW5lcyBmb3IgYW4gSTJDIGJ1cy4KIAogCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiBJZiBzbywgdGhlIG1vZHVsZQpAQCAtMjkzLDggKzI5Myw4IEBACiAJZGVmYXVsdCB5CiAJaGVscAogCSAgVGhpcyBleHBvc2VzIHRoZSB2YXJpb3VzIFBvd2VyTWFjIGkyYyBpbnRlcmZhY2VzIHRvIHRoZSBsaW51eCBpMmMKLQkgIGxheWVyIGFuZCB0byB1c2VybGFuZC4gSXQgaXMgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMgb24gdGhlIHBvd2VtYWMKLQkgIHBsYXRmb3JtLCB0aHVzIHNob3VsZCBnZW5lcmFsbHkgYmUgZW5hYmxlZC4KKwkgIGxheWVyIGFuZCB0byB1c2VybGFuZC4gSXQgaXMgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMgb24gdGhlIFBvd2VyTWFjCisJICBwbGF0Zm9ybSwgYW5kIHNob3VsZCBnZW5lcmFsbHkgYmUgZW5hYmxlZC4KIAogCSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIGkyYy1wb3dlcm1hYy4KQEAgLTQzOCwxMiArNDM4LDEyIEBACiAJdHJpc3RhdGUgIlNpbXRlYyBHZW5lcmljIEkyQyBpbnRlcmZhY2UiCiAJc2VsZWN0IEkyQ19BTEdPQklUCiAJaGVscAotCSAgSWYgeW91IHNheSB5ZXMgdG8gdGhpcyBvcHRpb24sIHN1cHBvcnQgd2lsbCBiZSBpbmNseWRlZCBmb3IKKwkgIElmIHlvdSBzYXkgeWVzIHRvIHRoaXMgb3B0aW9uLCBzdXBwb3J0IHdpbGwgYmUgaW5jbHVkZWQgZm9yCiAJICB0aGUgU2ltdGVjIEdlbmVyaWMgSTJDIGludGVyZmFjZS4gVGhpcyBkcml2ZXIgaXMgZm9yIHRoZQogCSAgc2ltcGxlIEkyQyBidXMgdXNlZCBvbiBuZXdlciBTaW10ZWMgcHJvZHVjdHMgZm9yIGdlbmVyYWwKIAkgIEkyQywgc3VjaCBhcyBEREMgb24gdGhlIFNpbXRlYyBCQkQyMDE2QS4KIAotCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbGQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlCisJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28sIHRoZSBtb2R1bGUKIAkgIHdpbGwgYmUgY2FsbGVkIGkyYy1zaW10ZWMuCiAKIGNvbmZpZyBTQ3gyMDBfSTJDCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWVsZWt0b3IuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCmluZGV4IDgwNGYwYTUuLmI3YTk5NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCQkgICAgICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIFdpdGggc29tZSBjaGFuZ2VzIGZyb20gS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCBldmVuCisvKiBXaXRoIHNvbWUgY2hhbmdlcyBmcm9tIEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCBldmVuCiAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+ICovCiAKIC8qIFBhcnRpYWx5IHJld3JpdGVuIGJ5IE9sZWcgSS4gVmRvdmlraW4gZm9yIG1tYXBwZWQgc3VwcG9ydCBvZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jCmluZGV4IDk4MzJmNzcuLmY5OTcyZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMKQEAgLTcsNyArNyw3IEBACiAgICAgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDQgR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4KIAogICAgIEJhc2VkIG9uIGkyYyBTdXBwb3J0IGZvciBWaWEgVGVjaG5vbG9naWVzIDgyQzU4NkIgU291dGggQnJpZGdlCi0gICAgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IEt59nN0aSBN5Gxra2kgPGttYWxra2lAY2MuaHV0LmZpPgorICAgIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPgogCiAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pYm1faWljLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlibV9paWMuYwppbmRleCBlMDhiYWNhLi45YjQzZmY3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pYm1faWljLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pYm1faWljLmMKQEAgLTE4LDcgKzE4LDcgQEAKICAqICAgCUNvcHlyaWdodCAxOTk1LTk3IFNpbW9uIEcuIFZvZ2wKICAqICAgICAgICAgICAgICAgIDE5OTgtOTkgSGFucyBCZXJnbHVuZAogICoKLSAqICAgCVdpdGggc29tZSBjaGFuZ2VzIGZyb20gS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+IAorICogICAJV2l0aCBzb21lIGNoYW5nZXMgZnJvbSBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPgogICoJYW5kIGV2ZW4gRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1vbWFwLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW9tYXAuYwppbmRleCBlNDcxZTNiLi44OWEzMDAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW9tYXAuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW9tYXAuYwpAQCAtOCw3ICs4LDcgQEAKICAqIFRvbnkgTGluZGdyZW4gPHRvbnlAYXRvbWlkZS5jb20+IGFuZCBJbXJlIERlYWsgPGltcmUuZGVha0Bub2tpYS5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEgQ29ycG9yYXRpb24KICAqCi0gKiBDbGVhbmVkIHVwIGJ5IEp1aGEgWXJq9mzkIDxqdWhhLnlyam9sYUBub2tpYS5jb20+CisgKiBDbGVhbmVkIHVwIGJ5IEp1aGEgWXJqw7Zsw6QgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcGFycG9ydC1saWdodC5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0LmMKaW5kZXggNDlhOTVlMi4uYzZmYWY5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0LmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0LmMKQEAgLTcsNyArNyw3IEBACiAgICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMCBTaW1vbiBHLiBWb2dsCiAgICBXaXRoIHNvbWUgY2hhbmdlcyBmcm9tOgogICAgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPgotICAgS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+CisgICBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPgogICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcGFycG9ydC5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LmMKaW5kZXggMDM5YTA3Zi4uNTliYTIwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LmMKQEAgLTcsNyArNyw3IEBACiAgICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMCBTaW1vbiBHLiBWb2dsCiAgICBXaXRoIHNvbWUgY2hhbmdlcyBmcm9tOgogICAgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPgotICAgS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+CisgICBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPgogICAgCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdmlhLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXZpYS5jCmluZGV4IDgxNTIwODYuLjYxNzE2ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdmlhLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy12aWEuYwpAQCAtNCw3ICs0LDcgQEAKIAogICAgIGkyYyBTdXBwb3J0IGZvciBWaWEgVGVjaG5vbG9naWVzIDgyQzU4NkIgU291dGggQnJpZGdlCiAKLSAgICBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTkgS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+CisgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+CiAKICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNzYsNyArMTc2LDcgQEAKIH0KIAogCi1NT0RVTEVfQVVUSE9SKCJLefZzdGkgTeRsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4iKTsKK01PRFVMRV9BVVRIT1IoIkt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oImkyYyBmb3IgVmlhIHZ0ODJjNTg2YiBzb3V0aGJyaWRnZSIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXZpYXByby5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy12aWFwcm8uYwppbmRleCBlZGMyNzUwLi5jOWNlNzdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXZpYXByby5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdmlhcHJvLmMKQEAgLTIsNyArMiw3IEBACiAgICAgaTJjLXZpYXByby5jIC0gUGFydCBvZiBsbV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3IgaGFyZHdhcmUKICAgICAgICAgICAgICAgbW9uaXRvcmluZwogICAgIENvcHlyaWdodCAoYykgMTk5OCAtIDIwMDIgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCi0gICAgUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiwgS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+LAorICAgIFBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4sIEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LAogICAgIE1hcmsgRC4gU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDUgLSAyMDA3ICBKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvaTJjLWNvcmUuYyBiL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMKaW5kZXggZTczZDU4Yy4uMWE0ZThkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvaTJjLWNvcmUuYworKysgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCkBAIC0xNyw3ICsxNyw3IEBACiAgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCQkgICAgICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIFdpdGggc29tZSBjaGFuZ2VzIGZyb20gS3n2c3RpIE3kbGtraSA8a21hbGtraUBjYy5odXQuZmk+LgorLyogV2l0aCBzb21lIGNoYW5nZXMgZnJvbSBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPi4KICAgIEFsbCBTTUJ1cy1yZWxhdGVkIHRoaW5ncyBhcmUgd3JpdHRlbiBieSBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+CiAgICBTTUJ1cyAyLjAgc3VwcG9ydCBieSBNYXJrIFN0dWRlYmFrZXIgPG1kc3h5ejEyM0B5YWhvby5jb20+IGFuZAogICAgSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtY2QuYyBiL2RyaXZlcnMvaWRlL2lkZS1jZC5jCmluZGV4IGNhODQzNTIuLjU3YTVmNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS1jZC5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1jZC5jCkBAIC0xMjAsNyArMTIwLDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgICBSZWZvcm1hdCB0byBtYXRjaCBrZXJuZWwgdGFiYmluZyBzdHlsZS4KICAqICAgICAgICAgICAgICAgICAgICAgICBBZGQgQ0RST01fR0VUX1VQQyBpb2N0bC4KICAqIDMuMTAgIEFwciAxMCwgMTk5NiAtLSBGaXggY29tcGlsYXRpb24gZXJyb3Igd2l0aCBTVEFOREFSRF9BVEFQSS4KLSAqIDMuMTEgIEFwciAyOSwgMTk5NiAtLSBQYXRjaCBmcm9tIEhlaWtvIEVpc3NmZWxkdCA8aGVpa29AY29sb3NzdXMuZXNjYXBlLmRlPgorICogMy4xMSAgQXByIDI5LCAxOTk2IC0tIFBhdGNoIGZyb20gSGVpa28gRWnDn2ZlbGR0IDxoZWlrb0Bjb2xvc3N1cy5lc2NhcGUuZGU+CiAgKiAgICAgICAgICAgICAgICAgICAgICAgdG8gcmVtb3ZlIHJlZHVuZGFudCB2ZXJpZnlfYXJlYSBjYWxscy4KICAqIDMuMTIgIE1heSAgNywgMTk5NiAtLSBSdWRpbWVudGFyeSBjaGFuZ2VyIHN1cHBvcnQuICBCYXNlZCBvbiBwYXRjaGVzCiAgKiAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gR2VyaGFyZCBadWJlciA8enViZXJAYmVybGluLnNuYWZ1LmRlPi4KQEAgLTI1Niw3ICsyNTYsNyBAQAogICoJCQktIE1pbmltaXplIHRoZSBUT0MgcmVhZGluZyAtIG9ubHkgZG8gaXQgd2hlbiB3ZQogICoJCQkgIGtub3cgYSBtZWRpYSBjaGFuZ2UgaGFzIG9jY3VycmVkLgogICoJCQktIE1vdmVkIGFsbCB0aGUgQ0RST01SRUFEeCBpb2N0bHMgdG8gdGhlIFVuaWZvcm0gbGF5ZXIuCi0gKgkJCS0gSGVpa28gRWlzc2ZlbGR0IDxoZWlrb0Bjb2xvc3N1cy5lc2NhcGUuZGU+IHN1cHBsaWVkCisgKgkJCS0gSGVpa28gRWnDn2ZlbGR0IDxoZWlrb0Bjb2xvc3N1cy5lc2NhcGUuZGU+IHN1cHBsaWVkCiAgKgkJCSAgc29tZSBmaXhlcyBmb3IgQ0RJLgogICoJCQktIENELVJPTSBsZWF2aW5nIGRvb3IgbG9ja2VkIGZpeCBmcm9tIEFuZHJpZXMKICAqCQkJICBCcm91d2VyIDxBbmRyaWVzLkJyb3V3ZXJAY3dpLm5sPgpAQCAtMjM0MSw3ICsyMzQxLDcgQEAKIAkJICAgSWYgd2UgZ2V0IGFuIGVycm9yIGZvciB0aGUgcmVndWxhciBjYXNlLCB3ZSBhc3N1bWUKIAkJICAgYSBDREkgd2l0aG91dCBhZGRpdGlvbmFsIGF1ZGlvIHRyYWNrcy4gSW4gdGhpcyBjYXNlCiAJCSAgIHRoZSByZWFkYWJsZSBUT0MgaXMgZW1wdHkgKENESSB0cmFja3MgYXJlIG5vdCBpbmNsdWRlZCkKLQkJICAgYW5kIG9ubHkgaG9sZHMgdGhlIExlYWRvdXQgZW50cnkuIEhlaWtvIEVp32ZlbGR0ICovCisJCSAgIGFuZCBvbmx5IGhvbGRzIHRoZSBMZWFkb3V0IGVudHJ5LiBIZWlrbyBFacOfZmVsZHQgKi8KIAkJbnRyYWNrcyA9IDA7CiAJCXN0YXQgPSBjZHJvbV9yZWFkX3RvY2VudHJ5KGRyaXZlLCBDRFJPTV9MRUFET1VULCAxLCAwLAogCQkJCQkgICAoY2hhciAqKSZ0b2MtPmhkciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS10YXBlLmMgYi9kcml2ZXJzL2lkZS9pZGUtdGFwZS5jCmluZGV4IGU1YTg2YTkuLjdiOTE4MWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS10YXBlLmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLXRhcGUuYwpAQCAtNTY1LDcgKzU2NSw3IEBACiAgKglUaGUgZm9sbG93aW5nIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNlbGVjdCB0aGUgcG9pbnQgaW4gdGhlIGludGVybmFsCiAgKgl0YXBlIGZpZm8gaW4gd2hpY2ggd2Ugd2lsbCBzdGFydCB0byByZWZpbGwgdGhlIGJ1ZmZlci4gRGVjcmVhc2luZwogICoJdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXIgd2lsbCBpbXByb3ZlIHRoZSBzeXN0ZW0ncyBsYXRlbmN5IGFuZAotICoJaW50ZXJhY3RpdmUgcmVzcG9uc2UsIHdoaWxlIHVzaW5nIGEgaGlnaCB2YWx1ZSBtaWdodCBpbXByb3ZlIHN5dGVtCisgKglpbnRlcmFjdGl2ZSByZXNwb25zZSwgd2hpbGUgdXNpbmcgYSBoaWdoIHZhbHVlIG1pZ2h0IGltcHJvdmUgc3lzdGVtCiAgKgl0aHJvdWdocHV0LgogICovCiAjZGVmaW5lIElERVRBUEVfRklGT19USFJFU0hPTEQgCQkyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9sZWdhY3kvcTQwaWRlLmMgYi9kcml2ZXJzL2lkZS9sZWdhY3kvcTQwaWRlLmMKaW5kZXggNDRjZGI3NC4uYTczZGIxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvbGVnYWN5L3E0MGlkZS5jCisrKyBiL2RyaXZlcnMvaWRlL2xlZ2FjeS9xNDBpZGUuYwpAQCAtMTAxLDcgKzEwMSw3IEBACiAKIC8qIAogICogdGhlIHN0YXRpYyBhcnJheSBpcyBuZWVkZWQgdG8gaGF2ZSB0aGUgbmFtZSByZXBvcnRlZCBpbiAvcHJvYy9pb3BvcnRzLAotICogaHdpZi0+bmFtZSB1bmZvcnR1bmF0ZWx5IGlzbrR0IGF2YWlsYWJsZSB5ZXQKKyAqIGh3aWYtPm5hbWUgdW5mb3J0dW5hdGVseSBpc24ndCBhdmFpbGFibGUgeWV0CiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICpxNDBfaWRlX25hbWVzW1E0MElERV9OVU1fSFdJRlNdPXsKIAkiaWRlMCIsICJpZGUxIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvcGNpL2l0ODIxeC5jIGIvZHJpdmVycy9pZGUvcGNpL2l0ODIxeC5jCmluZGV4IDFhN2RkZDEuLjVjOTk3NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3BjaS9pdDgyMXguYworKysgYi9kcml2ZXJzL2lkZS9wY2kvaXQ4MjF4LmMKQEAgLTk1LDcgKzk1LDcgQEAKIAogLyoKICAqCVdlIGFsbG93IHVzZXJzIHRvIGZvcmNlIHRoZSBjYXJkIGludG8gbm9uIHJhaWQgbW9kZSB3aXRob3V0Ci0gKglmbGFzaGluZyB0aGUgYWx0ZXJuYXRpdmUgQklPUy4gVGhpcyBpcyBhbHNvIG5lY2Nlc3NhcnkgcmlnaHQgbm93CisgKglmbGFzaGluZyB0aGUgYWx0ZXJuYXRpdmUgQklPUy4gVGhpcyBpcyBhbHNvIG5lY2Vzc2FyeSByaWdodCBub3cKICAqCWZvciBlbWJlZGRlZCBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgcnVuIGEgUEMgQklPUyBidXQgYXJlIHVzaW5nIHRoaXMKICAqCWRldmljZS4KICAqLwpAQCAtNTY0LDcgKzU2NCw3IEBACiAKIAkvKgogCSAqCU5vdCBpbiB0aGUgZG9jcyBidXQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcmVuY2UgZHJpdmVyCi0JICoJdGhpcyBpcyBuZWNjZXNzYXJ5LgorCSAqCXRoaXMgaXMgbmVjZXNzYXJ5LgogCSAqLwogCiAJcGNpX3JlYWRfY29uZmlnX2J5dGUoaHdpZi0+cGNpX2RldiwgMHgwOCwgJmNvbmYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvcGNpL3NpaW1hZ2UuYyBiL2RyaXZlcnMvaWRlL3BjaS9zaWltYWdlLmMKaW5kZXggZGM5MTVjYi4uNmQ5OTQ0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvcGNpL3NpaW1hZ2UuYworKysgYi9kcml2ZXJzL2lkZS9wY2kvc2lpbWFnZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKgogICoJSWYgeW91IGhhdmUgc3RyYW5nZSBwcm9ibGVtcyB3aXRoIG5WaWRpYSBjaGlwc2V0IHN5c3RlbXMgcGxlYXNlCiAgKglzZWUgdGhlIFNJIHN1cHBvcnQgZG9jdW1lbnRhdGlvbiBhbmQgdXBkYXRlIHlvdXIgc3lzdGVtIEJJT1MKLSAqCWlmIG5lY2Nlc3NhcnkKKyAqCWlmIG5lY2Vzc2FyeQogICoKICAqICBUaGUgRGVsbCBEUkFDNCBoYXMgc29tZSBpbnRlcmVzdGluZyBmZWF0dXJlcyBpbmNsdWRpbmcgZWZmZWN0aXZlbHkgaG90CiAgKiAgdW5wbHVnZ2luZy9yZXBsdWdnaW5nIHRoZSB2aXJ0dWFsIENEIGludGVyZmFjZSB3aGVuIHRoZSBEUkFDIGlzIHJlc2V0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9maXhwLWFyaXRoLmggYi9kcml2ZXJzL2lucHV0L2ZpeHAtYXJpdGguaAppbmRleCBlZDNkMmRhLi4zMDg5ZDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2ZpeHAtYXJpdGguaAorKysgYi9kcml2ZXJzL2lucHV0L2ZpeHAtYXJpdGguaApAQCAtMjQsNyArMjQsNyBAQAogICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKICAqCiAgKiBTaG91bGQgeW91IG5lZWQgdG8gY29udGFjdCBtZSwgdGhlIGF1dGhvciwgeW91IGNhbiBkbyBzbyBieQotICogZS1tYWlsIC0gbWFpbCB5b3VyIG1lc3NhZ2UgdG8gPGRlbmV1eEBpZnJhbmNlLmNvbT4KKyAqIGUtbWFpbCAtIG1haWwgeW91ciBtZXNzYWdlIHRvIDxqb2hhbm4uZGVuZXV4QGdtYWlsLmNvbT4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svZGI5LmMgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2RiOS5jCmluZGV4IDI3ZmM0NzUuLmE2Y2E5ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvam95c3RpY2svZGI5LmMKKysrIGIvZHJpdmVycy9pbnB1dC9qb3lzdGljay9kYjkuYwpAQCAtNCw3ICs0LDcgQEAKICAqICBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSBWb2p0ZWNoIFBhdmxpawogICoKICAqICBCYXNlZCBvbiB0aGUgd29yayBvZjoKLSAqCUFuZHJlZSBCb3JybWFubgkJTWF0cyBTavZ2YWxsCisgKglBbmRyZWUgQm9ycm1hbm4JCU1hdHMgU2rDtnZhbGwKICAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9pZm9yY2UvTWFrZWZpbGUgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9NYWtlZmlsZQppbmRleCAxN2FlNDJiLi43NGRhZmY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2lmb3JjZS9NYWtlZmlsZQpAQCAtMSw3ICsxLDcgQEAKICMKICMgTWFrZWZpbGUgZm9yIHRoZSBJLUZvcmNlIGRyaXZlcgogIwotIyBCeSBKb2hhbm4gRGVuZXV4IDxkZW5ldXhAaWZyYW5jZS5jb20+CisjIEJ5IEpvaGFubiBEZW5ldXggPGpvaGFubi5kZW5ldXhAZ21haWwuY29tPgogIwogCiAjIEdvYWwgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9vbWFwLWtleXBhZC5jCmluZGV4IDc2ZjE5NjkuLmJhYmM5MTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvb21hcC1rZXlwYWQuYworKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL29tYXAta2V5cGFkLmMKQEAgLTQsNyArNCw3IEBACiAgKiBPTUFQIEtleXBhZCBEcml2ZXIKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTm9raWEgQ29ycG9yYXRpb24KLSAqIFdyaXR0ZW4gYnkgVGltbyBUZXLkcyA8ZXh0LXRpbW8udGVyYXNAbm9raWEuY29tPgorICogV3JpdHRlbiBieSBUaW1vIFRlcsOkcyA8ZXh0LXRpbW8udGVyYXNAbm9raWEuY29tPgogICoKICAqIEFkZGVkIHN1cHBvcnQgZm9yIEgyICYgSDMgS2V5cGFkCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVGV4YXMgSW5zdHJ1bWVudHMKQEAgLTQ4MSw2ICs0ODEsNiBAQAogbW9kdWxlX2luaXQob21hcF9rcF9pbml0KTsKIG1vZHVsZV9leGl0KG9tYXBfa3BfZXhpdCk7CiAKLU1PRFVMRV9BVVRIT1IoIlRpbW8gVGVy5HMiKTsKK01PRFVMRV9BVVRIT1IoIlRpbW8gVGVyw6RzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIk9NQVAgS2V5cGFkIERyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL0tjb25maWcgYi9kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZwppbmRleCA3YWNjNjM1Li44ZjVjN2I5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZworKysgYi9kcml2ZXJzL2lucHV0L21pc2MvS2NvbmZpZwpAQCAtNzAsOSArNzAsOSBAQAogCXNlbGVjdCBMRURTX0NMQVNTCiAJc2VsZWN0IENIRUNLX1NJR05BVFVSRQogCWhlbHAKLQkgIFNheSBZIGhlcmUgZm9yIHN1cHBvcnQgb2YgV2luc3Ryb24gbGFwdG9wIGJ1dHRvbiBpbnRlcmZhY2UsIHVzZWQgb24KKwkgIFNheSBZIGhlcmUgZm9yIHN1cHBvcnQgb2YgV2lzdHJvbiBsYXB0b3AgYnV0dG9uIGludGVyZmFjZXMsIHVzZWQgb24KIAkgIGxhcHRvcHMgb2YgdmFyaW91cyBicmFuZHMsIGluY2x1ZGluZyBBY2VyIGFuZCBGdWppdHN1LVNpZW1lbnMuIElmCi0JICBhdmFpbGFibGUsIG1haWwgYW5kIHdpZmkgbGVkcyB3aWxsIGJlIGNvbnRyb2xhYmxlIHZpYSAvc3lzL2NsYXNzL2xlZHMuCisJICBhdmFpbGFibGUsIG1haWwgYW5kIHdpZmkgTEVEcyB3aWxsIGJlIGNvbnRyb2xsYWJsZSB2aWEgL3N5cy9jbGFzcy9sZWRzLgogCiAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwKIAkgIGJlIGNhbGxlZCB3aXN0cm9uX2J0bnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL3BzbW91c2UtYmFzZS5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9wc21vdXNlLWJhc2UuYwppbmRleCBkYTMxNmQxLi4yMWE5YzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL3BzbW91c2UtYmFzZS5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvcHNtb3VzZS1iYXNlLmMKQEAgLTkwNiw3ICs5MDYsNyBAQAogCiAvKgogICogcHNtb3VzZV9kZWFjdGl2YXRlKCkgcHV0cyB0aGUgbW91c2UgaW50byBwb2xsIG1vZGUgc28gdGhhdCB3ZSBkb24ndCBnZXQgbW90aW9uCi0gKiByZXBvcnRzIGZyb20gaXQgdW5sZXNzIHdlIGV4cGxpY2l0ZWx5IHJlcXVlc3QgaXQuCisgKiByZXBvcnRzIGZyb20gaXQgdW5sZXNzIHdlIGV4cGxpY2l0bHkgcmVxdWVzdCBpdC4KICAqLwogCiBzdGF0aWMgdm9pZCBwc21vdXNlX2RlYWN0aXZhdGUoc3RydWN0IHBzbW91c2UgKnBzbW91c2UpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvdnN4eHhhYS5jCmluZGV4IDRhMzIxNTcuLjQwNGVlZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbW91c2UvdnN4eHhhYS5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvdnN4eHhhYS5jCkBAIC0zMzAsNyArMzMwLDcgQEAKIAogCS8qCiAJICogQ2hlY2sgZm9yIFBvd2VyLU9uLVJlc2V0IHBhY2tldHMuIFRoZXNlIGFyZSBzZW50IG91dAotCSAqIGFmdGVyIHBsdWdnaW5nIHRoZSBtb3VzZSBpbiwgb3Igd2hlbiBleHBsaWNpdGVseQorCSAqIGFmdGVyIHBsdWdnaW5nIHRoZSBtb3VzZSBpbiwgb3Igd2hlbiBleHBsaWNpdGx5CiAJICogcmVxdWVzdGVkIGJ5IHNlbmRpbmcgJ1QnLgogCSAqCiAJICogWzBdOgkxCTAJMQkwCVIzCVIyCVIxCVIwCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vYWN0MjAwMC9hY3QyMDAwX2lzYS5jIGIvZHJpdmVycy9pc2RuL2FjdDIwMDAvYWN0MjAwMF9pc2EuYwppbmRleCAwOWVhNTBkLi44MTllYTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vYWN0MjAwMC9hY3QyMDAwX2lzYS5jCisrKyBiL2RyaXZlcnMvaXNkbi9hY3QyMDAwL2FjdDIwMDBfaXNhLmMKQEAgLTEyNiw3ICsxMjYsNyBAQAogCiAvKgogICogSW5zdGFsbCBpbnRlcnJ1cHQgaGFuZGxlciwgZW5hYmxlIGlycSBvbiBjYXJkLgotICogSWYgaXJxIGlzIC0xLCBjaG9vc2UgbmV4dCBmcmVlIGlycSwgZWxzZSBpcnEgaXMgZ2l2ZW4gZXhwbGljaXRlbHkuCisgKiBJZiBpcnEgaXMgLTEsIGNob29zZSBuZXh0IGZyZWUgaXJxLCBlbHNlIGlycSBpcyBnaXZlbiBleHBsaWNpdGx5LgogICovCiBpbnQKIGFjdDIwMDBfaXNhX2NvbmZpZ19pcnEoYWN0MjAwMF9jYXJkICogY2FyZCwgc2hvcnQgaXJxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2NhcGlmdW5jLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vY2FwaWZ1bmMuYwppbmRleCA4MmVkYzFjLi40ZDQyNWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vY2FwaWZ1bmMuYworKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vY2FwaWZ1bmMuYwpAQCAtMzIxLDcgKzMyMSw3IEBACiAJCQkJICBEQkdfQkxLKCgoKGNoYXIgKikobG9uZylHRVRfRFdPUkQoJm1zZy5pbmZvLmRhdGFfYjNfaW5kLkRhdGEpKSArIGksCiAJCQkJICAJKChkbGVuZ3RoIC0gaSkgPCAyNTYpID8gKGRsZW5ndGggLSBpKSA6IDI1NikpCiAJCQkJICBpZiAoIShteURyaXZlckRlYnVnSGFuZGxlLmRiZ01hc2sgJiBETF9QUlYwKSkKLQkJCQkJICBicmVhazsgLyogbm90IG1vcmUgaWYgbm90IGV4cGxpY2l0ZWx5IHJlcXVlc3RlZCAqLworCQkJCQkgIGJyZWFrOyAvKiBub3QgbW9yZSBpZiBub3QgZXhwbGljaXRseSByZXF1ZXN0ZWQgKi8KIAkJCQl9CiAJCQl9CiAJCQlicmVhazsKQEAgLTk2NSw3ICs5NjUsNyBAQAogCQkJCQkoKEdFVF9XT1JEKCZtc2ctPmluZm8uZGF0YV9iM19yZXEuRGF0YV9MZW5ndGgpIC0gaikgPAogCQkJCQkgIDI1NikgPyAoR0VUX1dPUkQoJm1zZy0+aW5mby5kYXRhX2IzX3JlcS5EYXRhX0xlbmd0aCkgLSBqKSA6IDI1NikpCiAJCQkJaWYgKCEobXlEcml2ZXJEZWJ1Z0hhbmRsZS5kYmdNYXNrICYgRExfUFJWMCkpCi0JCQkJCWJyZWFrOwkvKiBub3QgbW9yZSBpZiBub3QgZXhwbGljaXRlbHkgcmVxdWVzdGVkICovCisJCQkJCWJyZWFrOwkvKiBub3QgbW9yZSBpZiBub3QgZXhwbGljaXRseSByZXF1ZXN0ZWQgKi8KIAkJCX0KIAkJfQogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvYW1kNzkzMF9mbi5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2FtZDc5MzBfZm4uYwppbmRleCAzYjE5Y2FlLi5jMGQ3MDM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvYW1kNzkzMF9mbi5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9hbWQ3OTMwX2ZuLmMKQEAgLTc2Nyw3ICs3NjcsNyBAQAogICAgICAgICAgICAgICAgIC8qIHJlYWQgKi8KICAgICAgICAgICAgICAgICBpZiAoKnB0cisrID49IDB4MTAwKSB7CiAJCQlpZiAoY21kIDwgOCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0enQgUmVnaXN0ZXIgenVy/GNrICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2V0IHJlZ2lzdGVyICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJCeXRlQU1EKGNzLCBjbWQpOwogCQkJZWxzZSB7CiAJCQkJd0J5dGVBTUQoY3MsIDB4MDAsIGNtZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvZW50ZXJub3dfcGNpLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvZW50ZXJub3dfcGNpLmMKaW5kZXggYjczMDI3Zi4uMzlmNDIxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L2VudGVybm93X3BjaS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9lbnRlcm5vd19wY2kuYwpAQCAtNzUsMTYgKzc1LDE2IEBACiBzdGF0aWMgY29uc3QgY2hhciAqZW50ZXJub3dfcGNpX3JldiA9ICIkUmV2aXNpb246IDEuMS40LjUgJCI7CiAKIAotLyogZvxyIFBvd2VySVNETiBQQ0kgKi8KKy8qIGZvciBQb3dlcklTRE4gUENJICovCiAjZGVmaW5lIFRKX0FNRF9JUlEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMAogI2RlZmluZSBUSl9MRUQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAKICNkZWZpbmUgVEpfTEVEMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwCiAKIAotLyogRGFzIEZlbnN0ZXIgenVtIEFNRC4uLgotICogQWIgQWRyZXNzZSBody5uamV0LmJhc2UgKyBUSl9BTURfUE9SVCB3ZXJkZW4gdm9tIEFNRCBqZXdlaWxzIDggQml0IGluCi0gKiBkZW4gVGlnZXJKZXQgaS9vLVJhdW0gZ2VtYXBwdAotICogLT4gMHgwMSBkZXMgQU1EIGJlaSBody5uamV0LmJhc2UgKyAwQzQgKi8KKy8qIFRoZSB3aW5kb3cgdG8gW3RoZV0gQU1EIFtjaGlwXS4uLgorICogRnJvbSBhZGRyZXNzIGh3Lm5qZXQuYmFzZSArIFRKX0FNRF9QT1JUIG9ud2FyZHMsIHRoZSBBTUQKKyAqIG1hcHMgW2NvbnNlY3V0aXZlL211bHRpcGxlXSA4IGJpdHMgaW50byB0aGUgVGlnZXJKZXQgSS9PIHNwYWNlCisgKiAtPiAweDAxIG9mIHRoZSBBTUQgYXQgaHcubmpldC5iYXNlICsgMEM0ICovCiAjZGVmaW5lIFRKX0FNRF9QT1JUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhDMAogCiAKQEAgLTk2LDExICs5NiwxMSBAQAogc3RhdGljIHVuc2lnbmVkIGNoYXIKIFJlYWRCeXRlQW1kNzkzMChzdHJ1Y3QgSXNkbkNhcmRTdGF0ZSAqY3MsIHVuc2lnbmVkIGNoYXIgb2Zmc2V0KQogewotCS8qIGRpcmVrdGVzIFJlZ2lzdGVyICovCisJLyogZGlyZWN0IHJlZ2lzdGVyICovCiAJaWYob2Zmc2V0IDwgOCkKIAkJcmV0dXJuIChpbmIoY3MtPmh3Lm5qZXQuaXNhYyArIDQqb2Zmc2V0KSk7CiAKLQkvKiBpbmRpcmVrdGVzIFJlZ2lzdGVyICovCisJLyogaW5kaXJlY3QgcmVnaXN0ZXIgKi8KIAllbHNlIHsKIAkJb3V0YihvZmZzZXQsIGNzLT5ody5uamV0LmlzYWMgKyA0KkFNRF9DUik7CiAJCXJldHVybihpbmIoY3MtPmh3Lm5qZXQuaXNhYyArIDQqQU1EX0RSKSk7CkBAIC0xMTEsMTEgKzExMSwxMSBAQAogc3RhdGljIHZvaWQKIFdyaXRlQnl0ZUFtZDc5MzAoc3RydWN0IElzZG5DYXJkU3RhdGUgKmNzLCB1bnNpZ25lZCBjaGFyIG9mZnNldCwgdW5zaWduZWQgY2hhciB2YWx1ZSkKIHsKLQkvKiBkaXJla3RlcyBSZWdpc3RlciAqLworCS8qIGRpcmVjdCByZWdpc3RlciAqLwogCWlmKG9mZnNldCA8IDgpCiAJCW91dGIodmFsdWUsIGNzLT5ody5uamV0LmlzYWMgKyA0Km9mZnNldCk7CiAKLQkvKiBpbmRpcmVrdGVzIFJlZ2lzdGVyICovCisJLyogaW5kaXJlY3QgcmVnaXN0ZXIgKi8KIAllbHNlIHsKIAkJb3V0YihvZmZzZXQsIGNzLT5ody5uamV0LmlzYWMgKyA0KkFNRF9DUik7CiAJCW91dGIodmFsdWUsIGNzLT5ody5uamV0LmlzYWMgKyA0KkFNRF9EUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3BjaS5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19wY2kuYwppbmRleCAwNzcwODBhLi5mYmE4YjYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3BjaS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfcGNpLmMKQEAgLTEsNiArMSw2IEBACiAvKiAkSWQ6IGhmY19wY2kuYyx2IDEuNDguMi40IDIwMDQvMDIvMTEgMTM6MjE6MzMga2VpbCBFeHAgJAogICoKLSAqIGxvdyBsZXZlbCBkcml2ZXIgZm9yIENDRLRzIGhmYy1wY2kgYmFzZWQgY2FyZHMKKyAqIGxvdyBsZXZlbCBkcml2ZXIgZm9yIENDRCdzIGhmYy1wY2kgYmFzZWQgY2FyZHMKICAqCiAgKiBBdXRob3IgICAgICAgV2VybmVyIENvcm5lbGl1cwogICogICAgICAgICAgICAgIGJhc2VkIG9uIGV4aXN0aW5nIGRyaXZlciBmb3IgQ0NEIGhmYyBJU0EgY2FyZHMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9pc2RuaGRsYy5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2lzZG5oZGxjLmMKaW5kZXggMjY4ZGNlZC4uYzY5YTc3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L2lzZG5oZGxjLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L2lzZG5oZGxjLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogaXNkbmhkbGMuYyAgLS0gIEdlbmVyYWwgcHVycG9zZSBJU0ROIEhETEMgZGVjb2Rlci4KICAqCi0gKkNvcHlyaWdodCAoQykgMjAwMglXb2xmZ2FuZyBN/GVzICAgICAgPHdvbGZnYW5nQGlrc3ctbXVlZXMuZGU+CisgKkNvcHlyaWdodCAoQykgMjAwMglXb2xmZ2FuZyBNw7xlcyAgICAgIDx3b2xmZ2FuZ0Bpa3N3LW11ZWVzLmRlPgogICoJCTIwMDEgCUZyb2RlIElzYWtzZW4gICAgICA8ZmlzYWtzZW5AYmV3YW4uY29tPgogICogICAgICAgICAgICAgIDIwMDEgCUthaSBHZXJtYXNjaGV3c2tpICA8a2FpLmdlcm1hc2NoZXdza2lAZ214LmRlPgogICoKQEAgLTI3LDcgKzI3LDcgQEAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotTU9EVUxFX0FVVEhPUigiV29sZmdhbmcgTfxlcyA8d29sZmdhbmdAaWtzdy1tdWVlcy5kZT4sICIKK01PRFVMRV9BVVRIT1IoIldvbGZnYW5nIE3DvGVzIDx3b2xmZ2FuZ0Bpa3N3LW11ZWVzLmRlPiwgIgogCSAgICAgICJGcm9kZSBJc2Frc2VuIDxmaXNha3NlbkBiZXdhbi5jb20+LCAiCiAJICAgICAgIkthaSBHZXJtYXNjaGV3c2tpIDxrYWkuZ2VybWFzY2hld3NraUBnbXguZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdlbmVyYWwgcHVycG9zZSBJU0ROIEhETEMgZGVjb2RlciIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2lzZG5oZGxjLmggYi9kcml2ZXJzL2lzZG4vaGlzYXgvaXNkbmhkbGMuaAppbmRleCA0NTE2N2QyLi5jZjBhOTVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvaXNkbmhkbGMuaAorKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaXNkbmhkbGMuaApAQCAtNSw3ICs1LDcgQEAKICAqIE5lY2Nlc3NhcnkgYmVjYXVzZSBzb21lIElTRE4gZGV2aWNlcyBkb24ndCBoYXZlIEhETEMKICAqIGNvbnRyb2xsZXJzLiBBbHNvIGluY2x1ZGVkOiBhIGJpdCByZXZlcnNhbCB0YWJsZS4KICAqCi0gKkNvcHlyaWdodCAoQykgMjAwMiAgICBXb2xmZ2FuZyBN/GVzICAgICAgPHdvbGZnYW5nQGlrc3ctbXVlZXMuZGU+CisgKkNvcHlyaWdodCAoQykgMjAwMiAgICBXb2xmZ2FuZyBNw7xlcyAgICAgIDx3b2xmZ2FuZ0Bpa3N3LW11ZWVzLmRlPgogICoJCTIwMDEgCUZyb2RlIElzYWtzZW4gICAgICA8ZmlzYWtzZW5AYmV3YW4uY29tPgogICogICAgICAgICAgICAgIDIwMDEgCUthaSBHZXJtYXNjaGV3c2tpICA8a2FpLmdlcm1hc2NoZXdza2lAZ214LmRlPgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9qYWRlLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvamFkZS5jCmluZGV4IDQzZDYxZDEuLjcwODQwYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9qYWRlLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L2phZGUuYwpAQCAtMzA0LDcgKzMwNCw3IEBACiAJY3MtPkJDX1dyaXRlX1JlZyhjcywgMSwgamFkZV9IRExDX0lNUiwgIDB4MDApOwogCS8qIFNldHVwIGhvc3QgYWNjZXNzIHRvIGhkbGMgY29udHJvbGxlciAqLwogCWphZGVfd3JpdGVfaW5kaXJlY3QoY3MsIGphZGVfSERMQ0NOVFJBQ0NFU1MsIChqYWRlSU5ESVJFQ1RfSEFIMXxqYWRlSU5ESVJFQ1RfSEFIMikpOwotCS8qIFVubWFzayBIRExDIGludCAoZG9utHQgZm9yZ2V0IERTUCBpbnQgbGF0ZXIgb24pKi8KKwkvKiBVbm1hc2sgSERMQyBpbnQgKGRvbid0IGZvcmdldCBEU1AgaW50IGxhdGVyIG9uKSovCiAJY3MtPkJDX1dyaXRlX1JlZyhjcywgLTEsamFkZV9JTlQsIChqYWRlSU5UX0hETEMxfGphZGVJTlRfSERMQzIpKTsKIAogCS8qIG9uY2UgYWdhaW4gVFJBTlNQQVJFTlQgKi8JCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vcGNiaXQvY2FwaS5jIGIvZHJpdmVycy9pc2RuL3BjYml0L2NhcGkuYwppbmRleCA3YjU1ZTE1Li5hYzVhOTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vcGNiaXQvY2FwaS5jCisrKyBiL2RyaXZlcnMvaXNkbi9wY2JpdC9jYXBpLmMKQEAgLTE1LDkgKzE1LDkgQEAKIAogLyoKICAqICAgICAgICBEb2N1bWVudGF0aW9uOgotICogICAgICAgIC0gIkNvbW1vbiBJU0ROIEFQSSAtIFBlcmZpbCBQb3J0dWd16nMgLSBWZXJz428gMi4xIiwKKyAqICAgICAgICAtICJDb21tb24gSVNETiBBUEkgLSBQZXJmaWwgUG9ydHVndcOqcyAtIFZlcnPDo28gMi4xIiwKICAqICAgICAgICAgICBUZWxlY29tIFBvcnR1Z2FsLCBGZXYgMTk5Mi4KLSAqICAgICAgICAtICJDb21tb24gSVNETiBBUEkgLSBFc3BlY2lmaWNh5+NvIGRlIHByb3RvY29sb3MgcGFyYSAKKyAqICAgICAgICAtICJDb21tb24gSVNETiBBUEkgLSBFc3BlY2lmaWNhw6fDo28gZGUgcHJvdG9jb2xvcyBwYXJhCiAgKiAgICAgICAgICAgYWNlc3NvIGFvcyBjYW5haXMgQiIsIEluZXNjLCBKYW4gMTk5NC4KICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1zM2MyNHh4LmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1zM2MyNHh4LmMKaW5kZXggNTA5MTQ0My4uMGZkNjQwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtczNjMjR4eC5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLXMzYzI0eHguYwpAQCAtNDMsNyArNDMsNyBAQAogCXN0cnVjdCBzM2MyNHh4X2dwaW9fbGVkICpsZWQgPSB0b19ncGlvKGxlZF9jZGV2KTsKIAlzdHJ1Y3QgczNjMjR4eF9sZWRfcGxhdGRhdGEgKnBkID0gbGVkLT5wZGF0YTsKIAotCS8qIHRoZXJlIHdpbGwgYmUgYSBzb3J0IGRlbGF5IGJldHdlZW4gc2V0dGluZyB0aGUgb3V0cHV0IGFuZAorCS8qIHRoZXJlIHdpbGwgYmUgYSBzaG9ydCBkZWxheSBiZXR3ZWVuIHNldHRpbmcgdGhlIG91dHB1dCBhbmQKIAkgKiBnb2luZyBmcm9tIG91dHB1dCB0byBpbnB1dCB3aGVuIHVzaW5nIHRyaXN0YXRlLiAqLwogCiAJczNjMjQxMF9ncGlvX3NldHBpbihwZC0+Z3BpbywgKHZhbHVlID8gMSA6IDApIF4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUuYyBiL2RyaXZlcnMvbWFjaW50b3NoL3ZpYS1wbXUuYwppbmRleCBmN2M1MDliLi5kYzc0MWQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC92aWEtcG11LmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdmlhLXBtdS5jCkBAIC0xNTIxLDcgKzE1MjEsNyBAQAogCQkJcmVxID0gY3VycmVudF9yZXE7CiAJCQkvKiAKIAkJCSAqIEZvciBQTVUgc2xlZXAgYW5kIGZyZXEgY2hhbmdlIHJlcXVlc3RzLCB3ZSBsb2NrIHRoZQotCQkJICogUE1VIHVudGlsIGl0J3MgZXhwbGljaXRlbHkgdW5sb2NrZWQuIFRoaXMgYXZvaWRzIGFueQorCQkJICogUE1VIHVudGlsIGl0J3MgZXhwbGljaXRseSB1bmxvY2tlZC4gVGhpcyBhdm9pZHMgYW55CiAJCQkgKiBzcHVycmlvdXMgZXZlbnQgcG9sbGluZyBnZXR0aW5nIGluCiAJCQkgKi8KIAkJCWN1cnJlbnRfcmVxID0gcmVxLT5uZXh0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1jcnlwdC5jIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCmluZGV4IGI0MWY5NDUuLjBlYjU0MTY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNyeXB0LmMKKysrIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCkBAIC0xMTMsNyArMTEzLDcgQEAKICAqIERpZmZlcmVudCBJViBnZW5lcmF0aW9uIGFsZ29yaXRobXM6CiAgKgogICogcGxhaW46IHRoZSBpbml0aWFsIHZlY3RvciBpcyB0aGUgMzItYml0IGxpdHRsZS1lbmRpYW4gdmVyc2lvbiBvZiB0aGUgc2VjdG9yCi0gKiAgICAgICAgbnVtYmVyLCBwYWRkZWQgd2l0aCB6ZXJvcyBpZiBuZWNjZXNzYXJ5LgorICogICAgICAgIG51bWJlciwgcGFkZGVkIHdpdGggemVyb3MgaWYgbmVjZXNzYXJ5LgogICoKICAqIGVzc2l2OiAiZW5jcnlwdGVkIHNlY3RvcnxzYWx0IGluaXRpYWwgdmVjdG9yIiwgdGhlIHNlY3RvciBudW1iZXIgaXMKICAqICAgICAgICBlbmNyeXB0ZWQgd2l0aCB0aGUgYnVsayBjaXBoZXIgdXNpbmcgYSBzYWx0IGFzIGtleS4gVGhlIHNhbHQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEuYwppbmRleCAxNjc3NWEwLi44NTQ3OGQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMS5jCkBAIC05LDcgKzksNyBAQAogICoKICAqIEJldHRlciByZWFkLWJhbGFuY2luZyBjb2RlIHdyaXR0ZW4gYnkgTWlrYSBLdW9wcGFsYSA8bWlrdUBpa2kuZmk+LCAyMDAwCiAgKgotICogRml4ZXMgdG8gcmVjb25zdHJ1Y3Rpb24gYnkgSmFrb2Ig2HN0ZXJnYWFyZCIgPGpha29iQG9zdGVuZmVsZC5kaz4KKyAqIEZpeGVzIHRvIHJlY29uc3RydWN0aW9uIGJ5IEpha29iIMOYc3RlcmdhYXJkIiA8amFrb2JAb3N0ZW5mZWxkLmRrPgogICogVmFyaW91cyBmaXhlcyBieSBOZWlsIEJyb3duIDxuZWlsYkBjc2UudW5zdy5lZHUuYXU+CiAgKgogICogQ2hhbmdlcyBieSBQZXRlciBULiBCcmV1ZXIgPHB0YkBpdC51YzNtLmVzPiAzMS8xLzIwMDMgdG8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9obHAuYyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3NhYTcxNDZfaGxwLmMKaW5kZXggZDI5MDU3Mi4uOWM5MDUzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9obHAuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2hscC5jCkBAIC0zMTIsNyArMzEyLDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JLyogYnViYmxlIHNvcnQgdGhlIGZpcnN0ILRjb3VudLQgaXRlbXMgb2YgdGhlIGFycmF5ILR2YWx1ZXO0ICovCisJLyogYnViYmxlIHNvcnQgdGhlIGZpcnN0IEBjb3VudCBpdGVtcyBvZiB0aGUgYXJyYXkgQHZhbHVlcyAqLwogCWZvciggdG9wID0gKmNvdW50OyB0b3AgPiAwOyB0b3AtLSkgewogCQlmb3IoIGxvdyA9IDAsIGhpZ2ggPSAxOyBoaWdoIDwgdG9wOyBsb3crKywgaGlnaCsrKSB7CiAJCQlpZiggdmFsdWVzW2xvd10gPiB2YWx1ZXNbaGlnaF0gKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9idDg3OC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvYnQ4eHgvYnQ4NzguYwppbmRleCBlY2E2MDJkLi44NWUzNmExZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvYnQ4eHgvYnQ4NzguYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9idDg3OC5jCkBAIC0yODAsNyArMjgwLDcgQEAKIAkJaWYgKCEoYXN0YXQgPSAoc3RhdCAmIG1hc2spKSkKIAkJCXJldHVybiBJUlFfTk9ORTsJLyogdGhpcyBpbnRlcnJ1cHQgaXMgbm90IGZvciBtZSAqLwogLyoJCWRwcmludGsoImJ0ODc4KCVkKSBkZWJ1ZzogaXJxIGNvdW50ICVkLCBzdGF0IDB4JTguOHgsIG1hc2sgMHglOC44eFxuIixidC0+bnIsY291bnQsc3RhdCxtYXNrKTsgKi8KLQkJYnR3cml0ZShhc3RhdCwgQlQ4NzhfQUlOVF9TVEFUKTsJLyogdHJ5IHRvIGNsZWFyIGludGVydXB0IGNvbmRpdGlvbiAqLworCQlidHdyaXRlKGFzdGF0LCBCVDg3OF9BSU5UX1NUQVQpOwkvKiB0cnkgdG8gY2xlYXIgaW50ZXJydXB0IGNvbmRpdGlvbiAqLwogCiAKIAkJaWYgKGFzdGF0ICYgKEJUODc4X0FTQ0VSUiB8IEJUODc4X0FPQ0VSUikpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2NpbmVyZ3lUMi9jaW5lcmd5VDIuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2NpbmVyZ3lUMi9jaW5lcmd5VDIuYwppbmRleCAxNTRhN2NlLi5hMDVlNWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9jaW5lcmd5VDIvY2luZXJneVQyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvY2luZXJneVQyL2NpbmVyZ3lUMi5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIFRlcnJhVGVjIENpbmVyZ3kgVLIvcWFudSBVU0IyIERWQi1UIGFkYXB0ZXIuCisgKiBUZXJyYVRlYyBDaW5lcmd5IFTCsi9xYW51IFVTQjIgRFZCLVQgYWRhcHRlci4KICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgRGFuaWVsIE1hY2sgPGRhbmllbEBxYW51LmRlPiBhbmQKICAqCQkgICAgSG9sZ2VyIFdhZWNodGxlciA8aG9sZ2VyQHFhbnUuZGU+CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1idWRnZXQvZHZiLXR0dXNiLWJ1ZGdldC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvdHR1c2ItYnVkZ2V0L2R2Yi10dHVzYi1idWRnZXQuYwppbmRleCAyODhlNzlmLi43OTAyYWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1idWRnZXQvZHZiLXR0dXNiLWJ1ZGdldC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0dXNiLWJ1ZGdldC9kdmItdHR1c2ItYnVkZ2V0LmMKQEAgLTEyOCw3ICsxMjgsNyBAQAogCXN0cnVjdCBkdmJfZnJvbnRlbmQqIGZlOwogfTsKIAotLyogdWdseSB3b3JrYXJvdW5kIC4uLiBkb24ndCBrbm93IHdoeSBpdCdzIG5lY2Nlc3NhcnkgdG8gcmVhZCAqLworLyogdWdseSB3b3JrYXJvdW5kIC4uLiBkb24ndCBrbm93IHdoeSBpdCdzIG5lY2Vzc2FyeSB0byByZWFkICovCiAvKiBhbGwgcmVzdWx0IGNvZGVzLiAqLwogCiAjZGVmaW5lIERFQlVHIDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKaW5kZXggZGQ2YTdkNi4uM2FiZDlmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKQEAgLTEyNTksNyArMTI1OSw3IEBACiAJCS5oYXNfcmFkaW8JPSAxLAogCX0sCiAJW0JUVFZfQk9BUkRfTElGRVRFQ185NDE1XSA9IHsKLQkJLyogVGltIFL2c3Rlcm11bmR0IDxyb3N0ZXJtQHVuaS1tdWVuc3Rlci5kZT4KKwkJLyogVGltIFLDtnN0ZXJtdW5kdCA8cm9zdGVybUB1bmktbXVlbnN0ZXIuZGU+CiAJCWluIGRlLmNvbXAub3MudW5peC5saW51eC5oYXJkd2FyZToKIAkJCW9wdGlvbnMgYnR0diBjYXJkPTAgcGxsPTEgcmFkaW89MSBncGlvbWFzaz0weDE4ZTAKIAkJCWdwaW9tdXggPTB4NDRjNzFmLDB4NDRkNzFmLDAsMHg0NGQ3MWYsMHg0NGRmZmYKQEAgLTI4MjQsNyArMjgyNCw3IEBACiAJfSwKIAkJLyogLS0tLSBjYXJkIDB4OGIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCVtCVFRWX0JPQVJEX1BWX000OTAwXSA9IHsKLQkJLyogU+lyZ2lvIEZvcnRpZXIgPHNlcmdpb2ZvcnRpZXJAeWFob28uY29tLmJyPiAqLworCQkvKiBTw6lyZ2lvIEZvcnRpZXIgPHNlcmdpb2ZvcnRpZXJAeWFob28uY29tLmJyPiAqLwogCQkubmFtZSAgICAgICAgICAgPSAiUHJvbGluayBQaXhlbFZpZXcgUGxheVRWIE1QRUcyIFBWLU00OTAwIiwKIAkJLnZpZGVvX2lucHV0cyAgID0gMywKIAkJLmF1ZGlvX2lucHV0cyAgID0gMSwKQEAgLTQ3MDksMTggKzQ3MDksMTggQEAKICAqCiAgKiBUaGUgYm9hcmQgaGFyZHdpcmUgWTAgKHhwb2ludCkgdG8gTVVYMSBhbmQgTVVYT1VUIHRvIFlpbi4KICAqIEdQSU8gcGlucyBhcmUgd2lyZWQgYXM6Ci0gKiAgR1BJT1swOjNdIC0gQVhbMDozXSAoeHBvaW50KSAtIFAxWzA6M10gKG1pY3JvY29udHJvbGVyKQotICogIEdQSU9bNDo2XSAtIEFZWzA6Ml0gKHhwb2ludCkgLSBQMVs0OjZdIChtaWNyb2NvbnRyb2xlcikKLSAqICBHUElPWzddICAgLSBEQVRBICh4cG9pbnQpICAgIC0gUDFbN10gKG1pY3JvY29udHJvbGVyKQotICogIEdQSU9bOF0gICAtICAgICAgICAgICAgICAgICAgLSBQM1s1XSAobWljcm9jb250cm9sZXIpCi0gKiAgR1BJT1s5XSAgIC0gUkVTRVQgKHhwb2ludCkgICAtIFAzWzZdIChtaWNyb2NvbnRyb2xlcikKLSAqICBHUElPWzEwXSAgLSBTVFJPQkUgKHhwb2ludCkgIC0gUDNbN10gKG1pY3JvY29udHJvbGVyKQotICogIEdQSU5UUiAgICAtICAgICAgICAgICAgICAgICAgLSBQM1s0XSAobWljcm9jb250cm9sZXIpCisgKiAgR1BJT1swOjNdIC0gQVhbMDozXSAoeHBvaW50KSAtIFAxWzA6M10gKG1pY3JvY29udHJvbGxlcikKKyAqICBHUElPWzQ6Nl0gLSBBWVswOjJdICh4cG9pbnQpIC0gUDFbNDo2XSAobWljcm9jb250cm9sbGVyKQorICogIEdQSU9bN10gICAtIERBVEEgKHhwb2ludCkgICAgLSBQMVs3XSAobWljcm9jb250cm9sbGVyKQorICogIEdQSU9bOF0gICAtICAgICAgICAgICAgICAgICAgLSBQM1s1XSAobWljcm9jb250cm9sbGVyKQorICogIEdQSU9bOV0gICAtIFJFU0VUICh4cG9pbnQpICAgLSBQM1s2XSAobWljcm9jb250cm9sbGVyKQorICogIEdQSU9bMTBdICAtIFNUUk9CRSAoeHBvaW50KSAgLSBQM1s3XSAobWljcm9jb250cm9sbGVyKQorICogIEdQSU5UUiAgICAtICAgICAgICAgICAgICAgICAgLSBQM1s0XSAobWljcm9jb250cm9sbGVyKQogICoKLSAqIFRoZSBtaWNyb2NvbnRyb2xlciBpcyBhIDgwQzMyIGxpa2UuIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjaGFuZ2UgeHBvaW50Ci0gKiBjb25maWd1cmF0aW9uIGVpdGhlciBkaXJlY3RseSAoYXMgd2UgYXJlIGRvaW5nKSBvciB1c2luZyB0aGUgbWljcm9jb250cm9sZXIKKyAqIFRoZSBtaWNyb2NvbnRyb2xsZXIgaXMgYSA4MEMzMiBsaWtlLiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY2hhbmdlIHhwb2ludAorICogY29uZmlndXJhdGlvbiBlaXRoZXIgZGlyZWN0bHkgKGFzIHdlIGFyZSBkb2luZykgb3IgdXNpbmcgdGhlIG1pY3JvY29udHJvbGxlcgogICogd2hpY2ggaXMgYWxzbyB3aXJlZCB0byBJMkMgaW50ZXJmYWNlLiBJIGhhdmUgbm8gZnVydGhlciBpbmZvIG9uIHRoZQotICogbWljcm9jb250cm9sZXIgZmVhdHVyZXMsIG9uZSB3b3VsZCBuZWVkIHRvIGRpc2Fzc2VtYmx5IHRoZSBmaXJtd2FyZS4KKyAqIG1pY3JvY29udHJvbGxlciBmZWF0dXJlcywgb25lIHdvdWxkIG5lZWQgdG8gZGlzYXNzZW1ibHkgdGhlIGZpcm13YXJlLgogICogbm90ZTogdGhlIHZlbmRvciByZWZ1c2VkIHRvIGdpdmUgYW55IGluZm9ybWF0aW9uIG9uIHRoaXMgcHJvZHVjdCwgYWxsCiAgKiAgICAgICB0aGF0IHN0dWZmIHdhcyBmb3VuZCB1c2luZyBhIG11bHRpbWV0ZXIhIDopCiAgKi8KQEAgLTQ3ODgsNyArNDc4OCw3IEBACiAgKiBUaGUgYW5hbG9nIHN3aXRjaCBpcyBjb250cm9sbGVkIGJ5IHRoZSAibWFzdGVyIiwgYnV0IHRoZSBkZXRlY3Rpb24gb3JkZXIKICAqIG9mIHRoZSBmb3VyIEJUODc4QSBjaGlwcyBpcyBpbiBhbiBvcmRlciB3aGljaCBJIGp1c3QgZG9uJ3QgdW5kZXJzdGFuZC4KICAqIFRoZSAibWFzdGVyIiBpcyBhY3R1YWxseSB0aGUgc2Vjb25kIGNvbnRyb2xsZXIgdG8gYmUgZGV0ZWN0ZWQuICBUaGUKLSAqIGxvZ2ljIG9uIHRoZSBib2FyZCB1c2VzIGxvZ2ljYWwgbnVtYmVycyBmb3IgdGhlIDQgY29udHJvbGVycywgYnV0CisgKiBsb2dpYyBvbiB0aGUgYm9hcmQgdXNlcyBsb2dpY2FsIG51bWJlcnMgZm9yIHRoZSA0IGNvbnRyb2xsZXJzLCBidXQKICAqIHRob3NlIG51bWJlcnMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZXRlY3Rpb24gc2VxdWVuY2UuICBXaGVuIHdvcmtpbmcKICAqIHdpdGggdGhlIGFuYWxvZyBzd2l0Y2gsIHdlIG5lZWQgdG8gIm1hcCIgZnJvbSB0aGUgZGV0ZWN0aW9uIHNlcXVlbmNlCiAgKiBvdmVyIHRvIHRoZSBib2FyZCdzIGxvZ2ljYWwgY29udHJvbGxlciBudW1iZXIuICBUaGlzIG1hcHBpbmcgc2VxdWVuY2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKaW5kZXggYjhkNTMyNy4uZTQ2NzY4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKQEAgLTkwNyw3ICs5MDcsNyBAQAogCiAJLyogc3RvcCBpbyBpbiBjYXNlIGl0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MgKi8KIAlpZiAoZGV2LT5zdHJlYW0gPT0gU1RSRUFNX09OKSB7Ci0JCWVtMjh4eF92aWRlb2RiZygiVklESU9DX1NFVF9GTVQ6IGludGVydXB0aW5nIHN0cmVhbVxuIik7CisJCWVtMjh4eF92aWRlb2RiZygiVklESU9DX1NFVF9GTVQ6IGludGVycnVwdGluZyBzdHJlYW1cbiIpOwogCQlpZiAoKHJldCA9IGVtMjh4eF9zdHJlYW1faW50ZXJydXB0KGRldikpKQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL21leWUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbWV5ZS5jCmluZGV4IDc1MzNmYzIuLjY5MjgzOTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbWV5ZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbWV5ZS5jCkBAIC0zLDcgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwMS0yMDA0IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgQWxj9HZlIDx3d3cuYWxjb3ZlLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY8O0dmUgPHd3dy5hbGNvdmUuY29tPgogICoKICAqIENvcHlyaWdodCAoQykgMjAwMCBBbmRyZXcgVHJpZGdlbGwgPHRyaWRnZUB2YWxpbnV4LmNvbT4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL21leWUuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbWV5ZS5oCmluZGV4IDMyM2QwMDcuLmQ1MzU3NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbWV5ZS5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbWV5ZS5oCkBAIC0zLDcgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwMS0yMDA0IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgQWxj9HZlIDx3d3cuYWxjb3ZlLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY8O0dmUgPHd3dy5hbGNvdmUuY29tPgogICoKICAqIENvcHlyaWdodCAoQykgMjAwMCBBbmRyZXcgVHJpZGdlbGwgPHRyaWRnZUB2YWxpbnV4LmNvbT4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTUyNDZhLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTUyNDZhLmMKaW5kZXggZTIwYWEzNi4uYWQwMjMyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE1MjQ2YS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNTI0NmEuYwpAQCAtMTk2LDEwICsxOTYsMTAgQEAKIAlyZXR1cm4gaTJjX3NlbmRidWYodCwgYnVmWzBdLCBjdC0xLCBidWYrMSk7CiB9CiAKLS8qIEdldCBjb3VudCBudW1iZXIgb2YgYnl0ZXMgZnJvbSBJskMtZGV2aWNlIGF0IGFkZHJlc3MgYWRyLCBzdG9yZSB0aGVtIGluIGJ1Zi4KKy8qIEdldCBjb3VudCBudW1iZXIgb2YgYnl0ZXMgZnJvbSBJwrJDLWRldmljZSBhdCBhZGRyZXNzIGFkciwgc3RvcmUgdGhlbSBpbiBidWYuCiAgKiBTdGFydCAmIHN0b3AgaGFuZHNoYWtpbmcgaXMgZG9uZSBieSB0aGlzIHJvdXRpbmUsIGFjayB3aWxsIGJlIHNlbnQgYWZ0ZXIgdGhlCiAgKiBsYXN0IGJ5dGUgdG8gaW5oaWJpdCBmdXJ0aGVyIHNlbmRpbmcgb2YgZGF0YS4gSWYgdWFjY2VzcyBpcyAndHJ1ZScsIGRhdGEgaXMKLSAqIHdyaXR0ZW4gdG8gdXNlci1zcGFjZSB3aXRoIHB1dF91c2VyLiBSZXR1cm5zIC0xIGlmIEmyQy1kZXZpY2UgZGlkbid0IHNlbmQKKyAqIHdyaXR0ZW4gdG8gdXNlci1zcGFjZSB3aXRoIHB1dF91c2VyLiBSZXR1cm5zIC0xIGlmIEnCskMtZGV2aWNlIGRpZG4ndCBzZW5kCiAgKiBhY2tub3dsZWRnZSwgMCBvdGhlcndpc2UKICAqLwogc3RhdGljIGludCBpMmNfZ2V0ZGF0YShzdHJ1Y3Qgc2FhNTI0NmFfZGV2aWNlICp0LCBpbnQgY291bnQsIHU4ICpidWYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTUyNDkuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNTI0OS5jCmluZGV4IDE3ZjFlMmUuLjk0YmI1OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNTI0OS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNTI0OS5jCkBAIC0yOTEsMTAgKzI5MSwxMCBAQAogCXJldHVybiBpMmNfc2VuZGJ1Zih0LCBidWZbMF0sIGN0LTEsIGJ1ZisxKTsKIH0KIAotLyogR2V0IGNvdW50IG51bWJlciBvZiBieXRlcyBmcm9tIEmyQy1kZXZpY2UgYXQgYWRkcmVzcyBhZHIsIHN0b3JlIHRoZW0gaW4gYnVmLiBTdGFydCAmIHN0b3AKKy8qIEdldCBjb3VudCBudW1iZXIgb2YgYnl0ZXMgZnJvbSBJwrJDLWRldmljZSBhdCBhZGRyZXNzIGFkciwgc3RvcmUgdGhlbSBpbiBidWYuIFN0YXJ0ICYgc3RvcAogICogaGFuZHNoYWtpbmcgaXMgZG9uZSBieSB0aGlzIHJvdXRpbmUsIGFjayB3aWxsIGJlIHNlbnQgYWZ0ZXIgdGhlIGxhc3QgYnl0ZSB0byBpbmhpYml0IGZ1cnRoZXIKICAqIHNlbmRpbmcgb2YgZGF0YS4gSWYgdWFjY2VzcyBpcyAndHJ1ZScsIGRhdGEgaXMgd3JpdHRlbiB0byB1c2VyLXNwYWNlIHdpdGggcHV0X3VzZXIuCi0gKiBSZXR1cm5zIC0xIGlmIEmyQy1kZXZpY2UgZGlkbid0IHNlbmQgYWNrbm93bGVkZ2UsIDAgb3RoZXJ3aXNlCisgKiBSZXR1cm5zIC0xIGlmIEnCskMtZGV2aWNlIGRpZG4ndCBzZW5kIGFja25vd2xlZGdlLCAwIG90aGVyd2lzZQogICovCiAKIHN0YXRpYyBpbnQgaTJjX2dldGRhdGEoc3RydWN0IHNhYTUyNDlfZGV2aWNlICp0LCBpbnQgY291bnQsIHU4ICpidWYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL3ZpY2FtLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3VzYnZpZGVvL3ZpY2FtLmMKaW5kZXggZmY1NTUxMi4uZGIzYzllMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby91c2J2aWRlby92aWNhbS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXNidmlkZW8vdmljYW0uYwpAQCAtOTU1LDcgKzk1NSw3IEBACiAJCXJlcXVlc3RbN10gPSByZWFsU2h1dHRlciA+PiA4OwogCX0KIAotCS8vIFBlciBKb2huIE1hcmt1cyBCavhybmRhbGVuLCBieXRlIGF0IGluZGV4IDggY2F1c2VzIHByb2JsZW1zIGlmIGl0IGlzbid0IDAKKwkvLyBQZXIgSm9obiBNYXJrdXMgQmrDuHJuZGFsZW4sIGJ5dGUgYXQgaW5kZXggOCBjYXVzZXMgcHJvYmxlbXMgaWYgaXQgaXNuJ3QgMAogCXJlcXVlc3RbOF0gPSAwOwogCS8vIGJ5dGVzIDktMTUgZG8gbm90IHNlZW0gdG8gYWZmZWN0IGV4cG9zdXJlIG9yIGltYWdlIHF1YWxpdHkKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWNvbW1vbi5jIGIvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWNvbW1vbi5jCmluZGV4IGMzNDQwYjIuLjMyMTI0OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdjRsMi1jb21tb24uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3Y0bDItY29tbW9uLmMKQEAgLTM3LDcgKzM3LDcgQEAKICAqIFZpZGVvNGxpbnV4IDEvMiBpbnRlZ3JhdGlvbiBieSBKdXN0aW4gU2Nob2VtYW4KICAqIDxqdXN0aW5Ac3VudGlnZXIuZWUudXAuYWMuemE+CiAgKiAyLjQgUFJPQ0ZTIHN1cHBvcnQgcG9ydGVkIGZyb20gMi40IGtlcm5lbHMgYnkKLSAqICBJ8WFraSBHYXJj7WEgRXR4ZWJhcnJpYSA8Z2FyZXR4ZUBldXNrYWxuZXQubmV0PgorICogIEnDsWFraSBHYXJjw61hIEV0eGViYXJyaWEgPGdhcmV0eGVAZXVza2FsbmV0Lm5ldD4KICAqIE1ha2VmaWxlIGZpeCBieSAiVy4gTWljaGFlbCBQZXR1bGxvIiA8bWlrZUBmbHluLm9yZz4KICAqIDIuNCBkZXZmcyBzdXBwb3J0IHBvcnRlZCBmcm9tIDIuNCBrZXJuZWxzIGJ5CiAgKiAgRGFuIE1lcmlsbGF0IDxkYW5AbWVyaWxsYXQub3JnPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9SRUFETUUgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQppbmRleCBhODFmODUxLi45MTFmYzMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQorKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQpAQCAtMzAsMTMgKzMwLDEzIEBACiAJQnVnIGZpeGVzCiAJQ29yZSBjb2RlIGV4dGVuc2lvbnMKIAotQXV2byBI5GtraW5lbiwgVW5pdmVyc2l0eSBvZiBIZWxzaW5raSBGaW5sYW5kCitBdXZvIEjDpGtraW5lbiwgVW5pdmVyc2l0eSBvZiBIZWxzaW5raSBGaW5sYW5kCiAJTEFOIE9TTSBjb2RlCiAJL1Byb2MgaW50ZXJmYWNlIHRvIExBTiBjbGFzcwogCUJ1ZyBmaXhlcwogCUNvcmUgY29kZSBleHRlbnNpb25zCiAKLVRhbmVsaSBW5Gjka2FuZ2FzLCBVbml2ZXJzaXR5IG9mIEhlbHNpbmtpIEZpbmxhbmQKK1RhbmVsaSBWw6Row6RrYW5nYXMsIFVuaXZlcnNpdHkgb2YgSGVsc2lua2kgRmlubGFuZAogCUZpeGVzIHRvIGkyb19jb25maWcKIAogQ1JFRElUUwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9leGVjLW9zbS5jIGIvZHJpdmVycy9tZXNzYWdlL2kyby9leGVjLW9zbS5jCmluZGV4IGNlOGYxYTMuLjZjYmNjMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vZXhlYy1vc20uYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2V4ZWMtb3NtLmMKQEAgLTE1LDggKzE1LDggQEAKICAqCiAgKglGaXhlcy9hZGRpdGlvbnM6CiAgKgkJUGhpbGlwcCBSdW1wZgotICoJCUp1aGEgU2llduRuZW4gPEp1aGEuU2lldmFuZW5AY3MuSGVsc2lua2kuRkk+Ci0gKgkJQXV2byBI5GtraW5lbiA8QXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GST4KKyAqCQlKdWhhIFNpZXbDpG5lbiA8SnVoYS5TaWV2YW5lbkBjcy5IZWxzaW5raS5GST4KKyAqCQlBdXZvIEjDpGtraW5lbiA8QXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GST4KICAqCQlEZWVwYWsgU2F4ZW5hIDxkZWVwYWtAcGxleGl0eS5uZXQ+CiAgKgkJQm9qaSBUIEthbm5hbnRoYW5hbSA8Ym9qaS50Lmthbm5hbnRoYW5hbUBpbnRlbC5jb20+CiAgKgkJQWxhbiBDb3ggPGFsYW5AcmVkaGF0LmNvbT46CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19jb25maWcuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2NvbmZpZy5jCmluZGV4IDg0ZTA0NmUuLmMwZmI3N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2NvbmZpZy5jCisrKyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2NvbmZpZy5jCkBAIC0xMCwxMiArMTAsMTIgQEAKICAqCQlBZGRlZCBiYXNpYyBpb2N0bCgpIHN1cHBvcnQKICAqCURlZXBhayBTYXhlbmEgKDA2LzA3LzE5OTkpOgogICoJCUFkZGVkIHNvZnR3YXJlIGRvd25sb2FkIGlvY3RsIChzdGlsbCB0ZXN0aW5nKQotICoJQXV2byBI5GtraW5lbiAoMDkvMTAvMTk5OSk6CisgKglBdXZvIEjDpGtraW5lbiAoMDkvMTAvMTk5OSk6CiAgKgkJQ2hhbmdlcyB0byBpMm9fY2ZnX3JlcGx5KCksIGlvY3RsX3Bhcm1zKCkKICAqCQlBZGRlZCBpb2N0X3ZhbGlkYXRlKCkKLSAqCVRhbmVsaSBW5Gjka2FuZ2FzICgwOS8zMC8xOTk5KToKKyAqCVRhbmVsaSBWw6Row6RrYW5nYXMgKDA5LzMwLzE5OTkpOgogICoJCUZpeGVkIGlvY3RsX3N3ZGwoKQotICoJVGFuZWxpIFbkaORrYW5nYXMgKDEwLzA0LzE5OTkpOgorICoJVGFuZWxpIFbDpGjDpGthbmdhcyAoMTAvMDQvMTk5OSk6CiAgKgkJQ2hhbmdlZCBpb2N0bF9zd2RsKCksIGltcGxlbWVudGVkIGlvY3RsX3N3dWwoKSBhbmQgaW9jdGxfc3dkZWwoKQogICoJRGVlcGFrIFNheGVuYSAoMTEvMTgvMTk5OSk6CiAgKgkJQWRkZWQgZXZlbnQgbWFuYWdtZW5ldCBzdXBwb3J0CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19wcm9jLmMgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19wcm9jLmMKaW5kZXggMDY4OTJhYy4uNmZkZDA3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fcHJvYy5jCisrKyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Byb2MuYwpAQCAtMTksOCArMTksOCBAQAogICoKICAqCiAgKglGaXhlcy9hZGRpdGlvbnM6Ci0gKgkJSnVoYSBTaWV25G5lbiAoSnVoYS5TaWV2YW5lbkBjcy5IZWxzaW5raS5GSSksCi0gKgkJQXV2byBI5GtraW5lbiAoQXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GSSkKKyAqCQlKdWhhIFNpZXbDpG5lbiAoSnVoYS5TaWV2YW5lbkBjcy5IZWxzaW5raS5GSSksCisgKgkJQXV2byBIw6Rra2luZW4gKEF1dm8uSGFra2luZW5AY3MuSGVsc2lua2kuRkkpCiAgKgkJVW5pdmVyc2l0eSBvZiBIZWxzaW5raSwgRGVwYXJ0bWVudCBvZiBDb21wdXRlciBTY2llbmNlCiAgKgkJCUxBTiBlbnRyaWVzCiAgKgkJTWFya3VzIExpZGVsIDxNYXJrdXMuTGlkZWxAc2hhZG93Y29ubmVjdC5jb20+CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2lvcC5jIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pb3AuYwppbmRleCBhMWVjMTZhLi43ODE0YTA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2lvcC5jCisrKyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaW9wLmMKQEAgLTE1LDggKzE1LDggQEAKICAqCiAgKglGaXhlcy9hZGRpdGlvbnM6CiAgKgkJUGhpbGlwcCBSdW1wZgotICoJCUp1aGEgU2llduRuZW4gPEp1aGEuU2lldmFuZW5AY3MuSGVsc2lua2kuRkk+Ci0gKgkJQXV2byBI5GtraW5lbiA8QXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GST4KKyAqCQlKdWhhIFNpZXbDpG5lbiA8SnVoYS5TaWV2YW5lbkBjcy5IZWxzaW5raS5GST4KKyAqCQlBdXZvIEjDpGtraW5lbiA8QXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GST4KICAqCQlEZWVwYWsgU2F4ZW5hIDxkZWVwYWtAcGxleGl0eS5uZXQ+CiAgKgkJQm9qaSBUIEthbm5hbnRoYW5hbSA8Ym9qaS50Lmthbm5hbnRoYW5hbUBpbnRlbC5jb20+CiAgKgkJQWxhbiBDb3ggPGFsYW5AcmVkaGF0LmNvbT46CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lc3NhZ2UvaTJvL3BjaS5jIGIvZHJpdmVycy9tZXNzYWdlL2kyby9wY2kuYwppbmRleCAzNjYxZTZlLi42ODVhODk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL3BjaS5jCisrKyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vcGNpLmMKQEAgLTE1LDggKzE1LDggQEAKICAqCiAgKglGaXhlcy9hZGRpdGlvbnM6CiAgKgkJUGhpbGlwcCBSdW1wZgotICoJCUp1aGEgU2llduRuZW4gPEp1aGEuU2lldmFuZW5AY3MuSGVsc2lua2kuRkk+Ci0gKgkJQXV2byBI5GtraW5lbiA8QXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GST4KKyAqCQlKdWhhIFNpZXbDpG5lbiA8SnVoYS5TaWV2YW5lbkBjcy5IZWxzaW5raS5GST4KKyAqCQlBdXZvIEjDpGtraW5lbiA8QXV2by5IYWtraW5lbkBjcy5IZWxzaW5raS5GST4KICAqCQlEZWVwYWsgU2F4ZW5hIDxkZWVwYWtAcGxleGl0eS5uZXQ+CiAgKgkJQm9qaSBUIEthbm5hbnRoYW5hbSA8Ym9qaS50Lmthbm5hbnRoYW5hbUBpbnRlbC5jb20+CiAgKgkJQWxhbiBDb3ggPGFsYW5AcmVkaGF0LmNvbT46CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwppbmRleCBhMjBhNTFlLi4yNTcxNjE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcKQEAgLTEwLDggKzEwLDggQEAKIAkgLS0taGVscC0tLQogCSAgVGhpcyBpcyB0aGUgY29yZSBkcml2ZXIgZm9yIHRoZSBTaWxpY29uIE1vdGlvbiBTTTUwMSBtdWx0aW1lZGlhCiAJICBjb21wYW5pb24gY2hpcC4gVGhpcyBkZXZpY2UgaXMgYSBtdWx0aWZ1bmN0aW9uIGRldmljZSB3aGljaCBtYXkKLQkgIHByb3ZpZGUgbnVtZXJvdXMgaW50ZXJmYWNlcyBpbmNsdWRpbmcgVVNCIGhvc3QgY29udHJvbGxlciBVU0IgZ2FkZ2V0LAotCSAgQXN5bmNyb25vdXMgU2VyaWFsIHBvcnRzLCBBdWRpbyBmdW5jdGlvbnMgYW5kIGEgZHVhbCBkaXNwbGF5IHZpZGVvCisJICBwcm92aWRlIG51bWVyb3VzIGludGVyZmFjZXMgaW5jbHVkaW5nIFVTQiBob3N0IGNvbnRyb2xsZXIsIFVTQiBnYWRnZXQsCisJICBhc3luY2hyb25vdXMgc2VyaWFsIHBvcnRzLCBhdWRpbyBmdW5jdGlvbnMsIGFuZCBhIGR1YWwgZGlzcGxheSB2aWRlbwogCSAgaW50ZXJmYWNlLiBUaGUgZGV2aWNlIG1heSBiZSBjb25uZWN0ZWQgYnkgUENJIG9yIGxvY2FsIGJ1cyB3aXRoCiAJICB2YXJ5aW5nIGZ1bmN0aW9ucyBlbmFibGVkLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvS2NvbmZpZyBiL2RyaXZlcnMvbWlzYy9LY29uZmlnCmluZGV4IGNmMDJkZGMuLmI1ZTY3YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWlzYy9LY29uZmlnCkBAIC0xODAsNyArMTgwLDcgQEAKIAkgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZHJpdmVyIHNlZSAKIAkgIDxmaWxlOkRvY3VtZW50YXRpb24vdGhpbmtwYWQtYWNwaS50eHQ+IGFuZCA8aHR0cDovL2libS1hY3BpLnNmLm5ldC8+IC4KIAotCSAgVGhpcyBkcml2ZXIgd2FzIGZvcm1lbHkga25vd24gYXMgaWJtLWFjcGkuCisJICBUaGlzIGRyaXZlciB3YXMgZm9ybWVybHkga25vd24gYXMgaWJtLWFjcGkuCiAKIAkgIElmIHlvdSBoYXZlIGFuIElCTSBvciBMZW5vdm8gVGhpbmtQYWQgbGFwdG9wLCBzYXkgWSBvciBNIGhlcmUuCiAKQEAgLTIxNCw3ICsyMTQsNyBAQAogCWRlZmF1bHQgeQogCS0tLWhlbHAtLS0KIAkgIEFsbG93cyB0aGUgdGhpbmtwYWRfYWNwaSBkcml2ZXIgdG8gaGFuZGxlIHJlbW92YWJsZSBiYXlzLiAgSXQgd2lsbAotCSAgZWxldHJpY2FsbHkgZGlzYWJsZSB0aGUgZGV2aWNlIGluIHRoZSBiYXksIGFuZCBhbHNvIGdlbmVyYXRlCisJICBlbGVjdHJpY2FsbHkgZGlzYWJsZSB0aGUgZGV2aWNlIGluIHRoZSBiYXksIGFuZCBhbHNvIGdlbmVyYXRlCiAJICBub3RpZmljYXRpb25zIHdoZW4gdGhlIGJheSBsZXZlciBpcyBlamVjdGVkIG9yIGluc2VydGVkLgogCiAJICBJZiB5b3UgYXJlIG5vdCBzdXJlLCBzYXkgWSBoZXJlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuYyBiL2RyaXZlcnMvbWlzYy9pYm1hc20vcmVtb3RlLmMKaW5kZXggMWQ5ZGVmYi4uNDc3YmI0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuYworKysgYi9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSBJQk0gQ29ycG9yYXRpb24sIDIwMDQKICAqCi0gKiBBdXRob3JzOiBNYXggQXNi9mNrIDxhbWF4QHVzLmlibS5jb20+CisgKiBBdXRob3JzOiBNYXggQXNiw7ZjayA8YW1heEB1cy5pYm0uY29tPgogICogICAgICAgICAgVmVybm9uIE1hdWVyeSA8dmVybnV4QHVzLmlibS5jb20+CiAgKgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvc29ueS1sYXB0b3AuYyBiL2RyaXZlcnMvbWlzYy9zb255LWxhcHRvcC5jCmluZGV4IDFiZmJiODcuLmJiMTM4NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9zb255LWxhcHRvcC5jCisrKyBiL2RyaXZlcnMvbWlzYy9zb255LWxhcHRvcC5jCkBAIC0xNCw3ICsxNCw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA1IE5hcmF5YW5hbiBSIFMgPG5hcnNAa2FkYW1iYS5vcmc+CiAgKgotICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgQWxj9HZlIDx3d3cuYWxjb3ZlLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY8O0dmUgPHd3dy5hbGNvdmUuY29tPgogICoKICAqIENvcHlyaWdodCAoQykgMjAwMSBNaWNoYWVsIEFzaGxleSA8bS5hc2hsZXlAdW5zdy5lZHUuYXU+CiAgKgpAQCAtMjc3LDcgKzI3Nyw3IEBACiBzdGF0aWMgREVDTEFSRV9XT1JLKHNvbnlfbGFwdG9wX3JlbGVhc2Vfa2V5X3dvcmssCiAJCWRvX3NvbnlfbGFwdG9wX3JlbGVhc2Vfa2V5KTsKIAotLyogZm9yd2FyZCBldmVudCB0byB0aGUgaW5wdXQgc3Vic3l0ZW0gKi8KKy8qIGZvcndhcmQgZXZlbnQgdG8gdGhlIGlucHV0IHN1YnN5c3RlbSAqLwogc3RhdGljIHZvaWQgc29ueV9sYXB0b3BfcmVwb3J0X2lucHV0X2V2ZW50KHU4IGV2ZW50KQogewogCXN0cnVjdCBpbnB1dF9kZXYgKmpvZ19kZXYgPSBzb255X2xhcHRvcF9pbnB1dC5qb2dfZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbWFwcy9LY29uZmlnIGIvZHJpdmVycy9tdGQvbWFwcy9LY29uZmlnCmluZGV4IDJhMmExMjUuLmE1OTJmYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvS2NvbmZpZworKysgYi9kcml2ZXJzL210ZC9tYXBzL0tjb25maWcKQEAgLTU0LDcgKzU0LDcgQEAKIAloZWxwCiAJICBUaGlzIGlzIHRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgZGF0YSBidXMgb2YgdGhlIGZsYXNoIGRldmljZXMKIAkgIGluIG9jdGV0cy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEgZGF0YSBidXMgd2lkdGggb2YgMzIKLQkgIGJpdHMsIHlvdSB3b3VsZCBzZXQgdGhlIGJ1cyB3aWR0aCBvY3RlY3QgdmFsdWUgdG8gNC4gVGhpcyBpcworCSAgYml0cywgeW91IHdvdWxkIHNldCB0aGUgYnVzIHdpZHRoIG9jdGV0IHZhbHVlIHRvIDQuIFRoaXMgaXMKIAkgIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgQ0ZJIGRyaXZlcnMuCiAJICBJZ25vcmUgdGhpcyBvcHRpb24gaWYgeW91IHVzZSBydW4tdGltZSBwaHlzbWFwIGNvbmZpZ3VyYXRpb24KIAkgIChpLmUuLCBydW4tdGltZSBjYWxsaW5nIHBoeXNtYXBfY29uZmlndXJlKCkpLgpAQCAtNzMsMTIgKzczLDEyIEBACiAJZGVwZW5kcyBvbiBQTUNfTVNQICYmIE1URF9DRkkKIAlzZWxlY3QgTVREX1BBUlRJVElPTlMKIAloZWxwCi0JICBUaGlzIHByb3ZpZGVzIGEgJ21hcHBpbmcnIGRyaXZlciB3aGljaCBzdXBwb3J0IHRoZSB3YXkKLSAgICAgICAgICBpbiB3aGljaCB1c2VyLXByb2dyYW1tYWJsZSBmbGFzaCBjaGlwcyBhcmUgY29ubmVjdGVkIG9uIHRoZQotICAgICAgICAgIFBNQy1TaWVycmEgTVNQIGV2YWwvZGVtbyBib2FyZHMKKwkgIFRoaXMgcHJvdmlkZXMgYSAnbWFwcGluZycgZHJpdmVyIHdoaWNoIHN1cHBvcnRzIHRoZSB3YXkKKwkgIGluIHdoaWNoIHVzZXItcHJvZ3JhbW1hYmxlIGZsYXNoIGNoaXBzIGFyZSBjb25uZWN0ZWQgb24gdGhlCisJICBQTUMtU2llcnJhIE1TUCBldmFsL2RlbW8gYm9hcmRzLgogCiBjaG9pY2UKLQlwcm9tcHQgIk1heGltdW0gbWFwcGFibGUgbWVtb3J5IGF2aWFsYWJsZSBmb3IgZmxhc2ggSU8iCisJcHJvbXB0ICJNYXhpbXVtIG1hcHBhYmxlIG1lbW9yeSBhdmFpbGFibGUgZm9yIGZsYXNoIElPIgogCWRlcGVuZHMgb24gTVREX1BNQ19NU1BfRVZNCiAJZGVmYXVsdCBNU1BfRkxBU0hfTUFQX0xJTUlUXzMyTQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC84MTM5dG9vLmMgYi9kcml2ZXJzL25ldC84MTM5dG9vLmMKaW5kZXggOTczYjY4NC4uZWVmNmZlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvODEzOXRvby5jCisrKyBiL2RyaXZlcnMvbmV0LzgxMzl0b28uYwpAQCAtNzMsNyArNzMsNyBAQAogCiAJCUplYW4tSmFjcXVlcyBNaWNoZWwgLSBidWcgZml4CiAKLQkJVG9iaWFzIFJpbmdzdHL2bSAtIFJ4IGludGVycnVwdCBzdGF0dXMgY2hlY2tpbmcgc3VnZ2VzdGlvbgorCQlUb2JpYXMgUmluZ3N0csO2bSAtIFJ4IGludGVycnVwdCBzdGF0dXMgY2hlY2tpbmcgc3VnZ2VzdGlvbgogCiAJCUFuZHJldyBNb3J0b24gLSBDbGVhciBibG9ja2VkIHNpZ25hbHMsIGF2b2lkCiAJCWJ1ZmZlciBvdmVycnVuIHNldHRpbmcgY3VycmVudC0+Y29tbS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L0tjb25maWcgYi9kcml2ZXJzL25ldC9LY29uZmlnCmluZGV4IDJjYWZhNWMuLmNlMzRiNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvS2NvbmZpZwpAQCAtODU1LDcgKzg1NSw3IEBACiAJZGVwZW5kcyBvbiBCRklOX01BQyAmJiBCRjUzNwogCWRlZmF1bHQgeQogCWhlbHAKLQkgIFRvIGdldCBtYXhpbXVtIG5ldHdvcmsgcGVyZm9ybWFjZSwgeW91IHNob3VsZCB1c2UgTDEgbWVtb3J5IGFzIHJ4L3R4IGJ1ZmZlcnMuCisJICBUbyBnZXQgbWF4aW11bSBuZXR3b3JrIHBlcmZvcm1hbmNlLCB5b3Ugc2hvdWxkIHVzZSBMMSBtZW1vcnkgYXMgcngvdHggYnVmZmVycy4KIAkgIFNheSBOIGhlcmUgaWYgeW91IHdhbnQgdG8gcmVzZXJ2ZSBMMSBtZW1vcnkgZm9yIG90aGVyIHVzZXMuCiAKIGNvbmZpZyBCRklOX1RYX0RFU0NfTlVNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hbWQ4MTExZS5jIGIvZHJpdmVycy9uZXQvYW1kODExMWUuYwppbmRleCAxY2M3NGVjLi5lZWJmNWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hbWQ4MTExZS5jCisrKyBiL2RyaXZlcnMvbmV0L2FtZDgxMTFlLmMKQEAgLTExMTEsNyArMTExMSw3IEBACiAKIAlyZXR1cm4gbmV3X3N0YXRzOwogfQotLyogVGhpcyBmdW5jdGlvbiByZWNhbGN1bGF0ZSB0aGUgaW50ZXJ1cHQgY29hbGVzY2luZyAgbW9kZSBvbiBldmVyeSBpbnRlcnJ1cHQKKy8qIFRoaXMgZnVuY3Rpb24gcmVjYWxjdWxhdGUgdGhlIGludGVycnVwdCBjb2FsZXNjaW5nICBtb2RlIG9uIGV2ZXJ5IGludGVycnVwdAogYWNjb3JkaW5nIHRvIHRoZSBkYXRhcmF0ZSBhbmQgdGhlIHBhY2tldCByYXRlLgogKi8KIHN0YXRpYyBpbnQgYW1kODExMWVfY2FsY19jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYXJpYWRuZS5jIGIvZHJpdmVycy9uZXQvYXJpYWRuZS5jCmluZGV4IDNmYTNiY2MuLjEwZjNhMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FyaWFkbmUuYworKysgYi9kcml2ZXJzL25ldC9hcmlhZG5lLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogIEFtaWdhIExpbnV4L202OGsgQXJpYWRuZSBFdGhlcm5ldCBEcml2ZXIKICAqCi0gKiAgqSBDb3B5cmlnaHQgMTk5NS0yMDAzIGJ5IEdlZXJ0IFV5dHRlcmhvZXZlbiAoZ2VlcnRAbGludXgtbTY4ay5vcmcpCisgKiAgwqkgQ29weXJpZ2h0IDE5OTUtMjAwMyBieSBHZWVydCBVeXR0ZXJob2V2ZW4gKGdlZXJ0QGxpbnV4LW02OGsub3JnKQogICoJCQkgICAgIFBldGVyIERlIFNjaHJpanZlciAocDJAbWluZC5iZSkKICAqCiAgKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hcmlhZG5lLmggYi9kcml2ZXJzL25ldC9hcmlhZG5lLmgKaW5kZXggZjc5MTNkNS4uYmI2MTNmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXJpYWRuZS5oCisrKyBiL2RyaXZlcnMvbmV0L2FyaWFkbmUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQW1pZ2EgTGludXgvbTY4ayBBcmlhZG5lIEV0aGVybmV0IERyaXZlcgogICoKLSAqICCpIENvcHlyaWdodCAxOTk1IGJ5IEdlZXJ0IFV5dHRlcmhvZXZlbiAoZ2VlcnRAbGludXgtbTY4ay5vcmcpCisgKiAgwqkgQ29weXJpZ2h0IDE5OTUgYnkgR2VlcnQgVXl0dGVyaG9ldmVuIChnZWVydEBsaW51eC1tNjhrLm9yZykKICAqCQkJUGV0ZXIgRGUgU2NocmlqdmVyCiAgKgkJICAgICAgIChQZXRlci5EZVNjaHJpanZlckBsaW51eC5jYy5rdWxldXZlbi5hYy5iZSkKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdTEwMDBfZXRoLmMgYi9kcml2ZXJzL25ldC9hdTEwMDBfZXRoLmMKaW5kZXggMTg1Zjk4ZS4uNTA0YjdjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXUxMDAwX2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L2F1MTAwMF9ldGguYwpAQCAtNTQyLDcgKzU0Miw3IEBACiBzdGF0aWMgaW50IG51bV9pZnM7CiAKIC8qCi0gKiBTZXR1cCB0aGUgYmFzZSBhZGRyZXNzIGFuZCBpbnRlcnVwdCBvZiB0aGUgQXUxeHh4IGV0aGVybmV0IG1hY3MKKyAqIFNldHVwIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGludGVycnVwdCBvZiB0aGUgQXUxeHh4IGV0aGVybmV0IG1hY3MKICAqIGJhc2VkIG9uIGNwdSB0eXBlIGFuZCB3aGV0aGVyIHRoZSBpbnRlcmZhY2UgaXMgZW5hYmxlZCBpbiBzeXNfcGluZnVuYwogICogcmVnaXN0ZXIuIFRoZSBsYXN0IGludGVyZmFjZSBpcyBlbmFibGVkIGlmIFNZU19QRl9OSTIgKGJpdCA0KSBpcyAwLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfc3lzZnMuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jCmluZGV4IDgwYzBjOGMuLjg1NWRjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jCisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9zeXNmcy5jCkBAIC01NSw3ICs1NSw3IEBACiBzdGF0aWMgc3RydWN0IGNsYXNzICpuZXRkZXZfY2xhc3M7CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEYXRhIFN0cnVjdHVyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKiBCb25kaW5nIHN5c2ZzIGxvY2suICBXaHkgY2FuJ3Qgd2UganVzdCB1c2UgdGhlIHN1YnN5dGVtIGxvY2s/CisvKiBCb25kaW5nIHN5c2ZzIGxvY2suICBXaHkgY2FuJ3Qgd2UganVzdCB1c2UgdGhlIHN1YnN5c3RlbSBsb2NrPwogICogQmVjYXVzZSBrb2JqZWN0X3JlZ2lzdGVyIHRyaWVzIHRvIGFjcXVpcmUgdGhlIHN1YnN5c3RlbSBsb2NrLiAgSWYKICAqIHdlIGFscmVhZHkgaG9sZCB0aGUgbG9jayAod2hpY2ggd2Ugd291bGQgaWYgdGhlIHVzZXIgd2FzIGNyZWF0aW5nCiAgKiBhIG5ldyBib25kIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZSksIHdlIGRlYWRsb2NrLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZTEwMC5jIGIvZHJpdmVycy9uZXQvZTEwMC5jCmluZGV4IDY0ZjM1ZTIuLjNkYmFlYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2UxMDAuYworKysgYi9kcml2ZXJzL25ldC9lMTAwLmMKQEAgLTEzMjQsNyArMTMyNCw3IEBACiAJCWlmICghLS1jb3VudGVyKSBicmVhazsKIAl9CiAKLQkvKiBhY2sgYW55IGludGVydXB0cywgc29tZXRoaW5nIGNvdWxkIGhhdmUgYmVlbiBzZXQgKi8KKwkvKiBhY2sgYW55IGludGVycnVwdHMsIHNvbWV0aGluZyBjb3VsZCBoYXZlIGJlZW4gc2V0ICovCiAJaW93cml0ZTgofjAsICZuaWMtPmNzci0+c2NiLnN0YXRfYWNrKTsKIAogCS8qIGlmIHRoZSBjb21tYW5kIGZhaWxlZCwgb3IgaXMgbm90IE9LLCBub3RpZnkgYW5kIHJldHVybiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCmluZGV4IDA0NzI2MzguLmYxY2UzNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYworKysgYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMKQEAgLTM1OTAsNyArMzU5MCw3IEBACiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYWRhcHRlci0+c3RhdHNfbG9jaywgZmxhZ3MpOwogCi0JLyogdGhlc2UgY291bnRlcnMgYXJlIG1vZGlmaWVkIGZyb20gZTEwMDBfYWRqdXN0X3RiaV9zdGF0cywKKwkvKiB0aGVzZSBjb3VudGVycyBhcmUgbW9kaWZpZWQgZnJvbSBlMTAwMF90YmlfYWRqdXN0X3N0YXRzLAogCSAqIGNhbGxlZCBmcm9tIHRoZSBpbnRlcnJ1cHQgY29udGV4dCwgc28gdGhleSBtdXN0IG9ubHkKIAkgKiBiZSB3cml0dGVuIHdoaWxlIGhvbGRpbmcgYWRhcHRlci0+c3RhdHNfbG9jawogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmVhbG54LmMgYi9kcml2ZXJzL25ldC9mZWFsbnguYwppbmRleCA0M2Y3NjQ3Li43YmI5YzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZWFsbnguYworKysgYi9kcml2ZXJzL25ldC9mZWFsbnguYwpAQCAtMTExLDcgKzExMSw2IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIk15c29uIE1URC04eHggMTAwLzEwTSBFdGhlcm5ldCBQQ0kgQWRhcHRlciBEcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIG1vZHVsZV9wYXJhbShtYXhfaW50ZXJydXB0X3dvcmssIGludCwgMCk7Ci0vL01PRFVMRV9QQVJNKG1pbl9wY2lfbGF0ZW5jeSwgImkiKTsKIG1vZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwKTsKIG1vZHVsZV9wYXJhbShyeF9jb3B5YnJlYWssIGludCwgMCk7CiBtb2R1bGVfcGFyYW0obXVsdGljYXN0X2ZpbHRlcl9saW1pdCwgaW50LCAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvLzZwYWNrLmMgYi9kcml2ZXJzL25ldC9oYW1yYWRpby82cGFjay5jCmluZGV4IGFkOWUzMjcuLmUwMTE5ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvLzZwYWNrLmMKKysrIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vNnBhY2suYwpAQCAtMyw3ICszLDcgQEAKICAqCQlkZXZpY2VzIGxpa2UgVFRZLiBJdCBpbnRlcmZhY2VzIGJldHdlZW4gYSByYXcgVFRZIGFuZCB0aGUKICAqCQlrZXJuZWwncyBBWC4yNSBwcm90b2NvbCBsYXllcnMuCiAgKgotICogQXV0aG9yczoJQW5kcmVhcyBL9m5zZ2VuIDxhamtAaWVoay5yd3RoLWFhY2hlbi5kZT4KKyAqIEF1dGhvcnM6CUFuZHJlYXMgS8O2bnNnZW4gPGFqa0BpZWhrLnJ3dGgtYWFjaGVuLmRlPgogICogICAgICAgICAgICAgIFJhbGYgQmFlY2hsZSBETDVSQiA8cmFsZkBsaW51eC1taXBzLm9yZz4KICAqCiAgKiBRdWl0ZSBhIGxvdCBvZiBzdHVmZiAic3RvbGVuIiBieSBKb2VyZyBSZXV0ZXIgZnJvbSBzbGlwLmMsIHdyaXR0ZW4gYnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL0tjb25maWcgYi9kcml2ZXJzL25ldC9oYW1yYWRpby9LY29uZmlnCmluZGV4IDM2ZDJjN2QuLjYyZDVkNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vS2NvbmZpZwpAQCAtNjQsNyArNjQsNyBAQAogCSAgZG1hc2NjLiBJZiB5b3UgZG9uJ3QgcGFzcyBhbnkgcGFyYW1ldGVyIHRvIHRoZSBkcml2ZXIsIGFsbAogCSAgcG9zc2libGUgSS9PIGFkZHJlc3NlcyBhcmUgcHJvYmVkLiBUaGlzIGNvdWxkIGlycml0YXRlIG90aGVyIGRldmljZXMKIAkgIHRoYXQgYXJlIGN1cnJlbnRseSBub3QgaW4gdXNlLiBZb3UgbWF5IHNwZWNpZnkgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzCi0JICB0byBiZSBwcm9iZWQgYnkgImRtYXNjYz1hZGRyMSxhZGRyMiwuLi4iICh3aGVuIGNvbXBpbGVkIGludG8gdGhlCisJICB0byBiZSBwcm9iZWQgYnkgImRtYXNjYy5pbz1hZGRyMSxhZGRyMiwuLi4iICh3aGVuIGNvbXBpbGVkIGludG8gdGhlCiAJICBrZXJuZWwgaW1hZ2UpIG9yICJpbz1hZGRyMSxhZGRyMiwuLi4iICh3aGVuIGxvYWRlZCBhcyBhIG1vZHVsZSkuIFRoZQogCSAgbmV0d29yayBpbnRlcmZhY2VzIHdpbGwgYmUgY2FsbGVkIGRtYXNjYzAgYW5kIGRtYXNjYzEgZm9yIHRoZSBib2FyZAogCSAgZGV0ZWN0ZWQgZmlyc3QsIGRtYXNjYzIgYW5kIGRtYXNjYzMgZm9yIHRoZSBzZWNvbmQgb25lLCBhbmQgc28gb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2FjdGlzeXMtc2lyLmMgYi9kcml2ZXJzL25ldC9pcmRhL2FjdGlzeXMtc2lyLmMKaW5kZXggY2NmNmVjNS4uNzM2ZDI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9hY3Rpc3lzLXNpci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvYWN0aXN5cy1zaXIuYwpAQCAtMjEsNyArMjEsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIAogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICogIAotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzIAogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqICAgICAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvYWN0aXN5cy5jIGIvZHJpdmVycy9uZXQvaXJkYS9hY3Rpc3lzLmMKaW5kZXggYjJlMzFmNC4uYWUwYjgwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9hY3Rpc3lzLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9hY3Rpc3lzLmMKQEAgLTE5LDcgKzE5LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiAKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqICAKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcyAKICAqICAgICBwcm92aWRlZCAiQVMtSVMiIGFuZCBhdCBubyBjaGFyZ2UuCiAgKiAgICAgCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmMgYi9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmMKaW5kZXggYTgyZDhmOS4uMTI1N2UxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuYwpAQCAtNTk1LDcgKzU5NSw3IEBACiAgIE9VVEIgKChwaHlzYWRkciA+PiAxOCkgJiAweGZmLCBPQk9FX1JJTkdfQkFTRTEpOwogICBPVVRCICgocGh5c2FkZHIgPj4gMjYpICYgMHgzZiwgT0JPRV9SSU5HX0JBU0UyKTsKIAotICAvKkVuYWJsZSBETUEgY29udHJvbGVyIGluIGJ5dGUgbW9kZSBhbmQgUlggKi8KKyAgLypFbmFibGUgRE1BIGNvbnRyb2xsZXIgaW4gYnl0ZSBtb2RlIGFuZCBSWCAqLwogICBPVVRCIChDT05GSUcwSF9ETUFfT04sIE9CT0VfQ09ORklHMEgpOwogCiAgIC8qIFN0YXJ0IHVwIHRoZSBjbG9ja3MgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jIGIvZHJpdmVycy9uZXQvaXJkYS9naXJiaWwtc2lyLmMKaW5kZXggMGQyZmU4N2YuLjczODUzMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqIAotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLmMgYi9kcml2ZXJzL25ldC9pcmRhL2dpcmJpbC5jCmluZGV4IDI0OGFlYjBjLi4xZjU3MzkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2dpcmJpbC5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLmMKQEAgLTE2LDcgKzE2LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiAKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqICAKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcyAKICAqICAgICBwcm92aWRlZCAiQVMtSVMiIGFuZCBhdCBubyBjaGFyZ2UuCiAgKiAgICAgCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2lycG9ydC5oIGIvZHJpdmVycy9uZXQvaXJkYS9pcnBvcnQuaAppbmRleCAzZjQ2Yjg0Li42NmZjMjQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2lycG9ydC5oCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvaXJwb3J0LmgKQEAgLTE3LDcgKzE3LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiAKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMgCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvaXJ0dHktc2lyLmMgYi9kcml2ZXJzL25ldC9pcmRhL2lydHR5LXNpci5jCmluZGV4IDZmNWY2OTcuLjJjNmY3YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvaXJ0dHktc2lyLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9pcnR0eS1zaXIuYwpAQCAtMjAsNyArMjAsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIAogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICogIAotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzIAogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqICAgICAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuYyBiL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuYwppbmRleCAxMmI5Mzc4Li5hODczZDJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5jCkBAIC0yMCw3ICsyMCw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKiAgCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMgCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuaCBiL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuaAppbmRleCBkYWNmNjcxLi5iYmRjOTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmgKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5oCkBAIC0xOSw3ICsxOSw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKiAgCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMgCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICogICAgIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS90ZWtyYW0tc2lyLmMgYi9kcml2ZXJzL25ldC9pcmRhL3Rla3JhbS1zaXIuYwppbmRleCAwZGQ2YmM3Li5kMWNlNWFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL3Rla3JhbS1zaXIuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL3Rla3JhbS1zaXIuYwpAQCAtMTgsNyArMTgsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIAogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICogIAotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzIAogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqICAgICAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvdGVrcmFtLmMgYi9kcml2ZXJzL25ldC9pcmRhL3Rla3JhbS5jCmluZGV4IDhmNjI1ODIuLjliZmQyNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvdGVrcmFtLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS90ZWtyYW0uYwpAQCAtMTYsNyArMTYsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIAogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICogIAotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzIAogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqICAgICAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvdzgzOTc3YWZfaXIuaCBiL2RyaXZlcnMvbmV0L2lyZGEvdzgzOTc3YWZfaXIuaAppbmRleCAwYjc2NjFkLi44N2MzOTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL3c4Mzk3N2FmX2lyLmgKKysrIGIvZHJpdmVycy9uZXQvaXJkYS93ODM5NzdhZl9pci5oCkBAIC0xNiw3ICsxNiw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKiAgCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMgCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICogICAgIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmF0c2VtaS5jIGIvZHJpdmVycy9uZXQvbmF0c2VtaS5jCmluZGV4IDUwZTFlYzYuLjk1MzExNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25hdHNlbWkuYworKysgYi9kcml2ZXJzL25ldC9uYXRzZW1pLmMKQEAgLTk5Niw3ICs5OTYsNyBAQAogICAgYSBkZWxheS4gIE5vdGUgdGhhdCBwcmUtMi4wLjM0IGtlcm5lbHMgaGFkIGEgY2FjaGUtYWxpZ25tZW50IGJ1ZyB0aGF0CiAgICBtYWRlIHVkZWxheSgpIHVucmVsaWFibGUuCiAgICBUaGUgb2xkIG1ldGhvZCBvZiB1c2luZyBhbiBJU0EgYWNjZXNzIGFzIGEgZGVsYXksIF9fU0xPV19ET1dOX0lPX18sIGlzCi0gICBkZXByaWNhdGVkLgorICAgZGVwcmVjYXRlZC4KICovCiAjZGVmaW5lIGVlcHJvbV9kZWxheShlZV9hZGRyKQlyZWFkbChlZV9hZGRyKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbWM5MTF4LmMgYi9kcml2ZXJzL25ldC9zbWM5MTF4LmMKaW5kZXggN2M2MGRmNC4uZGQxOGFmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc21jOTExeC5jCisrKyBiL2RyaXZlcnMvbmV0L3NtYzkxMXguYwpAQCAtMTIyMyw3ICsxMjIzLDcgQEAKIAkJfQogI2VuZGlmCiAKLQkJLyogSGFuZGxlIFBIWSBpbnRlcnVwdCBjb25kaXRpb24gKi8KKwkJLyogSGFuZGxlIFBIWSBpbnRlcnJ1cHQgY29uZGl0aW9uICovCiAJCWlmIChzdGF0dXMgJiBJTlRfU1RTX1BIWV9JTlRfKSB7CiAJCQlEQkcoU01DX0RFQlVHX01JU0MsICIlczogUEhZIGlycVxuIiwgZGV2LT5uYW1lKTsKIAkJCXNtYzkxMXhfcGh5X2ludGVycnVwdChkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc3BpZGVyX25ldC5jIGIvZHJpdmVycy9uZXQvc3BpZGVyX25ldC5jCmluZGV4IDU3MTA2MGEuLmJjY2FlN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NwaWRlcl9uZXQuYworKysgYi9kcml2ZXJzL25ldC9zcGlkZXJfbmV0LmMKQEAgLTE2MzksNyArMTYzOSw3IEBACiAKIC8qKgogICogc3BpZGVyX25ldF9pbnRlcnJ1cHQgLSBpbnRlcnJ1cHQgaGFuZGxlciBmb3Igc3BpZGVyX25ldAotICogQGlycTogaW50ZXJ1cHQgbnVtYmVyCisgKiBAaXJxOiBpbnRlcnJ1cHQgbnVtYmVyCiAgKiBAcHRyOiBwb2ludGVyIHRvIG5ldF9kZXZpY2UKICAqIEByZWdzOiBQVSByZWdpc3RlcnMKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90YzM1ODE1LmMgYi9kcml2ZXJzL25ldC90YzM1ODE1LmMKaW5kZXggODAzOGYyOC4uZDg4N2MwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGMzNTgxNS5jCisrKyBiL2RyaXZlcnMvbmV0L3RjMzU4MTUuYwpAQCAtMTY1NCw3ICsxNjU0LDcgQEAKIAkJCQkJcGFuaWNfcXVldWVzKGRldik7CiAJCQkJfQogI2VuZGlmCi0JCQkJLyogcGFzcyBCRCB0byBjb250cm9sZXIgKi8KKwkJCQkvKiBwYXNzIEJEIHRvIGNvbnRyb2xsZXIgKi8KICNpZm5kZWYgVEMzNTgxNV9VU0VfUEFDS0VEQlVGRkVSCiAJCQkJaWYgKCFscC0+cnhfc2tic1tjdXJpZF0uc2tiKSB7CiAJCQkJCWxwLT5yeF9za2JzW2N1cmlkXS5za2IgPQpAQCAtMTY5NCw3ICsxNjk0LDcgQEAKIAkJfQogI2VuZGlmCiAJCWZvciAoaSA9IDA7IGkgPCAoYmRfY291bnQgKyAxKSAvIDIgKyAxOyBpKyspIHsKLQkJCS8qIHBhc3MgRkQgdG8gY29udHJvbGVyICovCisJCQkvKiBwYXNzIEZEIHRvIGNvbnRyb2xsZXIgKi8KICNpZmRlZiBERUJVRwogCQkJbHAtPnJmZF9jdXItPmZkLkZETmV4dCA9IGNwdV90b19sZTMyKDB4ZGVhZGRlYWQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3R1bGlwL3dpbmJvbmQtODQwLmMgYi9kcml2ZXJzL25ldC90dWxpcC93aW5ib25kLTg0MC5jCmluZGV4IDNjOGUzYjYuLjM1ZDBjZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bGlwL3dpbmJvbmQtODQwLmMKKysrIGIvZHJpdmVycy9uZXQvdHVsaXAvd2luYm9uZC04NDAuYwpAQCAtNDgzLDcgKzQ4Myw3IEBACiAgICBhIGRlbGF5LiAgTm90ZSB0aGF0IHByZS0yLjAuMzQga2VybmVscyBoYWQgYSBjYWNoZS1hbGlnbm1lbnQgYnVnIHRoYXQKICAgIG1hZGUgdWRlbGF5KCkgdW5yZWxpYWJsZS4KICAgIFRoZSBvbGQgbWV0aG9kIG9mIHVzaW5nIGFuIElTQSBhY2Nlc3MgYXMgYSBkZWxheSwgX19TTE9XX0RPV05fSU9fXywgaXMKLSAgIGRlcHJpY2F0ZWQuCisgICBkZXByZWNhdGVkLgogKi8KICNkZWZpbmUgZWVwcm9tX2RlbGF5KGVlX2FkZHIpCWlvcmVhZDMyKGVlX2FkZHIpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnIGIvZHJpdmVycy9uZXQvdXNiL0tjb25maWcKaW5kZXggOGRjMDlhMy4uNWE5NmQ3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvdXNiL0tjb25maWcKQEAgLTcxLDcgKzcxLDcgQEAKIAlzZWxlY3QgTUlJCiAJLS0taGVscC0tLQogCSAgU2F5IFkgaGVyZSBpZiB5b3Uga25vdyB5b3UgaGF2ZSBQZWdhc3VzIG9yIFBlZ2FzdXMtSUkgYmFzZWQgYWRhcHRlci4KLQkgIElmIGluIGRvdWJ0IHRoZW4gbG9vayBhdCA8ZmlsZTpkcml2ZXJzL3VzYi9uZXQvcGVnYXN1cy5oPiBmb3IgdGhlCisJICBJZiBpbiBkb3VidCB0aGVuIGxvb2sgYXQgPGZpbGU6ZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuaD4gZm9yIHRoZQogCSAgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcy4KIAogCSAgSWYgeW91ciBwYXJ0aWN1bGFyIGFkYXB0ZXIgaXMgbm90IGluIHRoZSBsaXN0IGFuZCB5b3UgYXJlIF9zdXJlXyBpdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMgYi9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYwppbmRleCA0YWUwNTc5Li41YzRhOTJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYworKysgYi9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAKICAqCiAgKglTY2FuIHRoZSBxdWV1ZXMgbG9va2luZyBmb3IgdHJhbnNtaXR0ZWQgcGFja2V0cyB0aGF0CiAgKgl3ZSBjYW4gY29tcGxldGUgYW5kIGNsZWFuIHVwLiBVcGRhdGUgYW55IHN0YXRpc3RpY3MgYXMKLSAqCW5lY2Nlc3NhcnkvCisgKgluZWNlc3NhcnkvCiAgKi8KIAogc3RhdGljIGludCB2ZWxvY2l0eV90eF9zcnYoc3RydWN0IHZlbG9jaXR5X2luZm8gKnZwdHIsIHUzMiBzdGF0dXMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfeG1pdC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYmNtNDN4eC9iY200M3h4X3htaXQuaAppbmRleCA5ZWNmMmJmLi40N2MxMzVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iY200M3h4L2JjbTQzeHhfeG1pdC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JjbTQzeHgvYmNtNDN4eF94bWl0LmgKQEAgLTg3LDcgKzg3LDcgQEAKIAogLyogUlggaGVhZGVyIGFzIHJlY2VpdmVkIGZyb20gdGhlIGhhcmR3YXJlLiAqLwogc3RydWN0IGJjbTQzeHhfcnhoZHIgewotCS8qIEZyYW1lIExlbmd0aC4gTXVzdCBiZSBnZW5lcmF0ZWQgZXhwbGljaXRlbHkgaW4gUElPIG1vZGUuICovCisJLyogRnJhbWUgTGVuZ3RoLiBNdXN0IGJlIGdlbmVyYXRlZCBleHBsaWNpdGx5IGluIFBJTyBtb2RlLiAqLwogCV9fbGUxNiBmcmFtZV9sZW5ndGg7CiAJUEFEX0JZVEVTKDIpOwogCS8qIEZsYWdzIGZpZWxkIDEgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIxMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIxMDAuYwppbmRleCA3YTc3OTc1Li5hNmM3OTA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMTAwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MjEwMC5jCkBAIC02MDQ3LDcgKzYwNDcsNyBAQAogCSAqIGVuZHMgdXAgY2F1c2luZyBwcm9ibGVtcy4gIFNvLCB3ZSBqdXN0IGhhbmRsZQogCSAqIHRoZSBXWCBleHRlbnNpb25zIHRocm91Z2ggdGhlIGlwdzIxMDBfaW9jdGwgaW50ZXJmYWNlICovCiAKLQkvKiBtZW1zZXQoKSBwdXRzIGV2ZXJ5dGhpbmcgdG8gMCwgc28gd2Ugb25seSBoYXZlIGV4cGxpY2l0ZWx5IHNldAorCS8qIG1lbXNldCgpIHB1dHMgZXZlcnl0aGluZyB0byAwLCBzbyB3ZSBvbmx5IGhhdmUgZXhwbGljaXRseSBzZXQKIAkgKiB0aG9zZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHNvbWV0aGluZyBlbHNlICovCiAKIAkvKiBJZiBwb3dlciBtYW5hZ2VtZW50IGlzIHR1cm5lZCBvbiwgZGVmYXVsdCB0byBBVVRPIG1vZGUgKi8KQEAgLTc1MDksNyArNzUwOSw3IEBACiAJc3dpdGNoICh3cnF1LT5wb3dlci5mbGFncyAmIElXX1BPV0VSX01PREUpIHsKIAljYXNlIElXX1BPV0VSX09OOgkvKiBJZiBub3Qgc3BlY2lmaWVkICovCiAJY2FzZSBJV19QT1dFUl9NT0RFOgkvKiBJZiBzZXQgYWxsIG1hc2sgKi8KLQljYXNlIElXX1BPV0VSX0FMTF9SOgkvKiBJZiBleHBsaWNpdGVseSBzdGF0ZSBhbGwgKi8KKwljYXNlIElXX1BPV0VSX0FMTF9SOgkvKiBJZiBleHBsaWNpdGx5IHN0YXRlIGFsbCAqLwogCQlicmVhazsKIAlkZWZhdWx0OgkJLyogT3RoZXJ3aXNlIHdlIGRvbid0IHN1cHBvcnQgaXQgKi8KIAkJSVBXX0RFQlVHX1dYKCJTRVQgUE0gTW9kZTogJVggbm90IHN1cHBvcnRlZC5cbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMjAwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyMjAwLmMKaW5kZXggZmViOGZjYi4uZTNjODI4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MjIwMC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzIyMDAuYwpAQCAtOTYwMyw3ICs5NjAzLDcgQEAKIAlzd2l0Y2ggKHdycXUtPnBvd2VyLmZsYWdzICYgSVdfUE9XRVJfTU9ERSkgewogCWNhc2UgSVdfUE9XRVJfT046CS8qIElmIG5vdCBzcGVjaWZpZWQgKi8KIAljYXNlIElXX1BPV0VSX01PREU6CS8qIElmIHNldCBhbGwgbWFzayAqLwotCWNhc2UgSVdfUE9XRVJfQUxMX1I6CS8qIElmIGV4cGxpY2l0ZWx5IHN0YXRlIGFsbCAqLworCWNhc2UgSVdfUE9XRVJfQUxMX1I6CS8qIElmIGV4cGxpY2l0bHkgc3RhdGUgYWxsICovCiAJCWJyZWFrOwogCWRlZmF1bHQ6CQkvKiBPdGhlcndpc2Ugd2UgZG9uJ3Qgc3VwcG9ydCBpdCAqLwogCQlJUFdfREVCVUdfV1goIlNFVCBQTSBNb2RlOiAlWCBub3Qgc3VwcG9ydGVkLlxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL25ldHdhdmVfY3MuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL25ldHdhdmVfY3MuYwppbmRleCBjMmQ3MWFmLi4yNDAyY2I4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9uZXR3YXZlX2NzLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbmV0d2F2ZV9jcy5jCkBAIC00LDE4ICs0LDE4IEBACiAgKiBWZXJzaW9uOiAgICAgICAwLjQuMQogICogRGVzY3JpcHRpb246ICAgTmV0d2F2ZSBBaXJTdXJmZXIgV2lyZWxlc3MgTEFOIFBDIENhcmQgZHJpdmVyCiAgKiBTdGF0dXM6ICAgICAgICBFeHBlcmltZW50YWwuCi0gKiBBdXRob3JzOiAgICAgICBKb2huIE1hcmt1cyBCavhybmRhbGVuIDxqb2hubUBjcy51aXQubm8+CisgKiBBdXRob3JzOiAgICAgICBKb2huIE1hcmt1cyBCasO4cm5kYWxlbiA8am9obm1AY3MudWl0Lm5vPgogICogICAgICAgICAgICAgICAgRGFnIEJyYXR0bGkgPGRhZ2JAY3MudWl0Lm5vPgogICogICAgICAgICAgICAgICAgRGF2aWQgSGluZHMgPGRhaGluZHNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogICogQ3JlYXRlZCBhdDogICAgQSBsb25nIHRpbWUgYWdvIQogICogTW9kaWZpZWQgYXQ6ICAgTW9uIE5vdiAxMCAxMTo1NDozNyAxOTk3CiAgKiBNb2RpZmllZCBieTogICBEYWcgQnJhdHRsaSA8ZGFnYkBjcy51aXQubm8+CiAgKiAKLSAqICAgICBDb3B5cmlnaHQgKGMpIDE5OTcgVW5pdmVyc2l0eSBvZiBUcm9tc/gsIE5vcndheQorICogICAgIENvcHlyaWdodCAoYykgMTk5NyBVbml2ZXJzaXR5IG9mIFRyb21zw7gsIE5vcndheQogICoKICAqIFJldmlzaW9uIEhpc3Rvcnk6CiAgKgotICogICAwOC1Ob3YtOTcgMTU6MTQ6NDcgICBKb2huIE1hcmt1cyBCavhybmRhbGVuIDxqb2hubUBjcy51aXQubm8+CisgKiAgIDA4LU5vdi05NyAxNToxNDo0NyAgIEpvaG4gTWFya3VzIEJqw7hybmRhbGVuIDxqb2hubUBjcy51aXQubm8+CiAgKiAgICAtIEZpeGVkIHNvbWUgYnVncyBpbiBuZXR3YXZlX3J4IGFuZCBjbGVhbmVkIGl0IHVwIGEgYml0LiAKICAqICAgICAgKE9uZSBvZiB0aGUgYnVncyB3b3VsZCBoYXZlIGRlc3Ryb3llZCBwYWNrZXRzIHdoZW4gcmVjZWl2aW5nCiAgKiAgICAgIG11bHRpcGxlIHBhY2tldHMgcGVyIGludGVycnVwdCkuIApAQCAtMTU4LDcgKzE1OCw3IEBACiBtb2R1bGVfcGFyYW0ocGNfZGVidWcsIGludCwgMCk7CiAjZGVmaW5lIERFQlVHKG4sIGFyZ3MuLi4pIGlmIChwY19kZWJ1Zz4obikpIHByaW50ayhLRVJOX0RFQlVHIGFyZ3MpCiBzdGF0aWMgY2hhciAqdmVyc2lvbiA9Ci0ibmV0d2F2ZV9jcy5jIDAuMy4wIFRodSBKdWwgMTcgMTQ6MzY6MDIgMTk5NyAoSm9obiBNYXJrdXMgQmr4cm5kYWxlbilcbiI7CisibmV0d2F2ZV9jcy5jIDAuMy4wIFRodSBKdWwgMTcgMTQ6MzY6MDIgMTk5NyAoSm9obiBNYXJrdXMgQmrDuHJuZGFsZW4pXG4iOwogI2Vsc2UKICNkZWZpbmUgREVCVUcobiwgYXJncy4uLikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvS2NvbmZpZyBiL2RyaXZlcnMvcnRjL0tjb25maWcKaW5kZXggNjQyMGE5MC4uY2JkZTc3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvS2NvbmZpZworKysgYi9kcml2ZXJzL3J0Yy9LY29uZmlnCkBAIC0yNDAsNyArMjQwLDcgQEAKIAlkZXBlbmRzIG9uIE1FTkVMQVVTCiAJaGVscAogCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3UgZ2V0IHN1cHBvcnQgZm9yIHRoZSBSVEMgb24gdGhlCi0JICBUV0w5MjMzMCAiTWVuZWxhdXMiIHBvd2VyIG1hbmdlbWVudCBjaGlwLCB1c2VkIHdpdGggT01BUDIKKwkgIFRXTDkyMzMwICJNZW5lbGF1cyIgcG93ZXIgbWFuYWdlbWVudCBjaGlwLCB1c2VkIHdpdGggT01BUDIKIAkgIHBsYXRmb3Jtcy4gIFRoZSBzdXBwb3J0IGlzIGludGVncmF0ZWQgd2l0aCB0aGUgcmVzdCBvZgogCSAgdGhlIE1lbmVsYXVzIGRyaXZlcjsgaXQncyBub3Qgc2VwYXJhdGUgbW9kdWxlLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF8zOTkwX2VycC5jIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfMzk5MF9lcnAuYwppbmRleCA4YjlkNjhmLi41YjczODVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF8zOTkwX2VycC5jCisrKyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkXzM5OTBfZXJwLmMKQEAgLTQwLDcgKzQwLDcgQEAKICAqCiAgKiAgIEVhY2ggYml0IGNvbmZpZ3VyYXRpb24gbGVhZGluZyB0byBhbiBhY3Rpb24gY29kZSAyIChFeGl0IHdpdGgKICAqICAgcHJvZ3JhbW1pbmcgZXJyb3Igb3IgdW51c3VhbCBjb25kaXRpb24gaW5kaWNhdGlvbikKLSAqICAgYXJlIGhhbmRsZWQgYXMgZmF0YWwgZXJyb3K0cy4KKyAqICAgYXJlIGhhbmRsZWQgYXMgZmF0YWwgZXJyb3JzLgogICoKICAqICAgQWxsIG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBoYW5kbGVkIGFzIHJlY292ZXJhYmxlIGVycm9ycy4KICAqCkBAIC0yMDAxLDcgKzIwMDEsNyBAQAogCQlzd2l0Y2ggKHNlbnNlWzI4XSkgewogCQljYXNlIDB4MTc6CiAJCQkvKiBpc3N1ZSBhIERpYWdub3N0aWMgQ29udHJvbCBjb21tYW5kIHdpdGggYW4KLQkJCSAqIEluaGliaXQgV3JpdGUgc3ViY29tbWFuZCBhbmQgY29udHJvbGVyIG1vZGlmaWVyICovCisJCQkgKiBJbmhpYml0IFdyaXRlIHN1YmNvbW1hbmQgYW5kIGNvbnRyb2xsZXIgbW9kaWZpZXIgKi8KIAkJCWVycCA9IGRhc2RfMzk5MF9lcnBfRENUTChlcnAsIDB4MjApOwogCQkJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3NjbHBfY3BpLmMgYi9kcml2ZXJzL3MzOTAvY2hhci9zY2xwX2NwaS5jCmluZGV4IDI5ZmUyYTUuLjgyYTEzZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9jaGFyL3NjbHBfY3BpLmMKKysrIGIvZHJpdmVycy9zMzkwL2NoYXIvc2NscF9jcGkuYwpAQCAtMTU3LDcgKzE1Nyw3IEBACiAJc2NscF9hc2NlYmNfc3RyKGV2Yi0+c3lzdGVtX25hbWUsIENQSV9MRU5HVEhfU1lTVEVNX05BTUUpOwogCUVCQ19UT1VQUEVSKGV2Yi0+c3lzdGVtX25hbWUsIENQSV9MRU5HVEhfU1lTVEVNX05BTUUpOwogCi0JLyogc2V0IHN5dGVtIGxldmVsICovCisJLyogc2V0IHN5c3RlbSBsZXZlbCAqLwogCWV2Yi0+c3lzdGVtX2xldmVsID0gTElOVVhfVkVSU0lPTl9DT0RFOwogCiAJLyogc2V0IHN5c3BsZXggbmFtZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Npby9jbWYuYyBiL2RyaXZlcnMvczM5MC9jaW8vY21mLmMKaW5kZXggYjk2MGY2Ni4uNzI1YjBkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2Npby9jbWYuYworKysgYi9kcml2ZXJzL3MzOTAvY2lvL2NtZi5jCkBAIC0xNTgsNyArMTU4LDcgQEAKIAlpZiAoY291bnQgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQkvKiB2YWx1ZSBjb21lcyBpbiB1bml0cyBvZiAxMjggtXNlYyAqLworCS8qIHZhbHVlIGNvbWVzIGluIHVuaXRzIG9mIDEyOCDCtXNlYyAqLwogCXJldCA9IHRpbWVfdG9fbnNlYyh2YWx1ZSk7CiAJZG9fZGl2KHJldCwgY291bnQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21haW4uYyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbWFpbi5jCmluZGV4IDQ0OTkzNzIuLjZiZjNlYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbWFpbi5jCisrKyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbWFpbi5jCkBAIC0zLDcgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAwMSBJQk0gRGV1dHNjaGxhbmQgRW50d2lja2x1bmcgR21iSCwgSUJNIENvcnBvcmF0aW9uCiAgKiBBdXRob3Iocyk6IEZyaXR6IEVsZmVydCAoZWxmZXJ0QGRlLmlibS5jb20sIGZlbGZlcnRAbWlsbGVudXguY29tKQotICogRml4ZXMgYnkgOiBKb2NoZW4gUvZocmlnIChyb2VocmlnQGRlLmlibS5jb20pCisgKiBGaXhlcyBieSA6IEpvY2hlbiBSw7ZocmlnIChyb2VocmlnQGRlLmlibS5jb20pCiAgKiAgICAgICAgICAgIEFybmFsZG8gQ2FydmFsaG8gZGUgTWVsbyA8YWNtZUBjb25lY3RpdmEuY29tLmJyPgogCSAgICAgIFBldGVyIFRpZWRlbWFubiAocHRpZWRlbUBkZS5pYm0uY29tKQogICogRHJpdmVyIE1vZGVsIHN0dWZmIGJ5IDogQ29ybmVsaWEgSHVjayA8Y29ybmVsaWEuaHVja0BkZS5pYm0uY29tPgpAQCAtMTksNyArMTksNyBAQAogICogIERpZXRlciBXZWxsZXJkaWVrICh3ZWxAZGUuaWJtLmNvbSkKICAqICBNYXJ0aW4gU2Nod2lkZWZza3kgKHNjaHdpZGVmc2t5QGRlLmlibS5jb20pCiAgKiAgRGVuaXMgSm9zZXBoIEJhcnJvdyAoZGpiYXJyb3dAZGUuaWJtLmNvbSxiYXJyb3dfZGpAeWFob28uY29tKQotICogIEpvY2hlbiBS9mhyaWcgKHJvZWhyaWdAZGUuaWJtLmNvbSkKKyAqICBKb2NoZW4gUsO2aHJpZyAocm9laHJpZ0BkZS5pYm0uY29tKQogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtODg1LDcgKzg4NSw3IEBACiAJfQogCiAJLyoqCi0JICogRG9utHQgc2V0dXAgYSB0aW1lciBmb3IgcmVjZWl2aW5nIHRoZSBpbml0aWFsIFJYIGZyYW1lCisJICogRG9uJ3Qgc2V0dXAgYSB0aW1lciBmb3IgcmVjZWl2aW5nIHRoZSBpbml0aWFsIFJYIGZyYW1lCiAJICogaWYgaW4gY29tcGF0aWJpbGl0eSBtb2RlLCBzaW5jZSBWTSBUQ1AgZGVsYXlzIHRoZSBpbml0aWFsCiAJICogZnJhbWUgdW50aWwgaXQgaGFzIHNvbWUgZGF0YSB0byBzZW5kLgogCSAqLwpAQCAtOTA1LDEwICs5MDUsMTAgQEAKIAkJY2N3X2NoZWNrX3JldHVybl9jb2RlKGNoLCByYywgImluaXQgSU8iKTsKIAl9CiAJLyoqCi0JICogSWYgaW4gY29tcGF0aWJpbGl0eSBtb2RlIHNpbmNlIHdlIGRvbrR0IHNldHVwIGEgdGltZXIsIHdlCisJICogSWYgaW4gY29tcGF0aWJpbGl0eSBtb2RlIHNpbmNlIHdlIGRvbid0IHNldHVwIGEgdGltZXIsIHdlCiAJICogYWxzbyBzaWduYWwgUlggY2hhbm5lbCB1cCBpbW1lZGlhdGVseS4gVGhpcyBlbmFibGVzIHVzCiAJICogdG8gc2VuZCBwYWNrZXRzIGVhcmx5IHdoaWNoIGluIHR1cm4gdXN1YWxseSB0cmlnZ2VycyBzb21lCi0JICogcmVwbHkgZnJvbSBWTSBUQ1Agd2hpY2ggYnJpbmdzIHVwIHRoZSBSWCBjaGFubmVsIHRvIGl0tHMKKwkgKiByZXBseSBmcm9tIFZNIFRDUCB3aGljaCBicmluZ3MgdXAgdGhlIFJYIGNoYW5uZWwgdG8gaXQncwogCSAqIGZpbmFsIHN0YXRlLgogCSAqLwogCWlmICgoQ0hBTk5FTF9ESVJFQ1RJT04oY2gtPmZsYWdzKSA9PSBSRUFEKSAmJgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oCmluZGV4IDAzYjUxMDIuLjlhYmJhOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY3JhaWQuaAorKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmgKQEAgLTE1MjYsNyArMTUyNiw3IEBACiAJX19sZTMyCQkJY2FwYWNpdHloaWdoOwogfTsKIAotI2RlZmluZSBGU0NTX05PVENMRUFOCTB4MDAwMSAgLyogZnNjayBpcyBuZWNjZXNzYXJ5IGJlZm9yZSBtb3VudGluZyAqLworI2RlZmluZSBGU0NTX05PVENMRUFOCTB4MDAwMSAgLyogZnNjayBpcyBuZWNlc3NhcnkgYmVmb3JlIG1vdW50aW5nICovCiAjZGVmaW5lIEZTQ1NfUkVBRE9OTFkJMHgwMDAyCS8qIHBvc3NpYmxlIHJlc3VsdCBvZiBicm9rZW4gbWlycm9yICovCiAjZGVmaW5lIEZTQ1NfSElEREVOCTB4MDAwNAkvKiBzaG91bGQgYmUgaWdub3JlZCAtIHNldCBkdXJpbmcgYSBjbGVhciAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWhhMTUyeC5jIGIvZHJpdmVycy9zY3NpL2FoYTE1MnguYwppbmRleCBmMDhlNzFlLi5hNThjMjY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWhhMTUyeC5jCisrKyBiL2RyaXZlcnMvc2NzaS9haGExNTJ4LmMKQEAgLTEsNiArMSw2IEBACiAvKiBhaGExNTJ4LmMgLS0gQWRhcHRlYyBBSEEtMTUyeCBkcml2ZXIKLSAqIEF1dGhvcjogSvxyZ2VuIEUuIEZpc2NoZXIsIGZpc2NoZXJAbm9yYml0LmRlCi0gKiBDb3B5cmlnaHQgMTk5My0yMDA0IEr8cmdlbiBFLiBGaXNjaGVyCisgKiBBdXRob3I6IErDvHJnZW4gRS4gRmlzY2hlciwgZmlzY2hlckBub3JiaXQuZGUKKyAqIENvcHlyaWdodCAxOTkzLTIwMDQgSsO8cmdlbiBFLiBGaXNjaGVyCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQpAQCAtMzU3LDcgKzM1Nyw3IEBACiAJY2hlY2tfY29uZGl0aW9uID0gMHgwODAwLAkvKiByZXF1ZXN0aW5nIHNlbnNlIGFmdGVyIENIRUNLIENPTkRJVElPTiAqLwogfTsKIAotTU9EVUxFX0FVVEhPUigiSvxyZ2VuIEZpc2NoZXIiKTsKK01PRFVMRV9BVVRIT1IoIkrDvHJnZW4gRmlzY2hlciIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKEFIQTE1MlhfUkVWSUQpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9jYW0uaCBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2NhbS5oCmluZGV4IDI2ZjE3ZTMuLjY4N2FlZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2NhbS5oCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2NhbS5oCkBAIC00OCw3ICs0OCw3IEBACiAJQ0FNX1JFUV9BQk9SVEVELAkvKiBDQ0IgcmVxdWVzdCBhYm9ydGVkIGJ5IHRoZSBob3N0ICovCiAJQ0FNX1VBX0FCT1JULAkJLyogVW5hYmxlIHRvIGFib3J0IENDQiByZXF1ZXN0ICovCiAJQ0FNX1JFUV9DTVBfRVJSLAkvKiBDQ0IgcmVxdWVzdCBjb21wbGV0ZWQgd2l0aCBhbiBlcnJvciAqLwotCUNBTV9CVVNZLAkJLyogQ0FNIHN1YnN5dGVtIGlzIGJ1c3kgKi8KKwlDQU1fQlVTWSwJCS8qIENBTSBzdWJzeXN0ZW0gaXMgYnVzeSAqLwogCUNBTV9SRVFfSU5WQUxJRCwJLyogQ0NCIHJlcXVlc3Qgd2FzIGludmFsaWQgKi8KIAlDQU1fUEFUSF9JTlZBTElELAkvKiBTdXBwbGllZCBQYXRoIElEIGlzIGludmFsaWQgKi8KIAlDQU1fU0VMX1RJTUVPVVQsCS8qIFRhcmdldCBTZWxlY3Rpb24gVGltZW91dCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2RjMzk1eC5jIGIvZHJpdmVycy9zY3NpL2RjMzk1eC5jCmluZGV4IGZkNDJkNDcuLmE5ZGVmNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9kYzM5NXguYworKysgYi9kcml2ZXJzL3Njc2kvZGMzOTV4LmMKQEAgLTE4MDgsMTIgKzE4MDgsMTIgQEAKIAlpcnFyZXR1cm5fdCBoYW5kbGVkID0gSVJRX05PTkU7CiAKIAkvKgotCSAqIENoZWNrIGZvciBwZW5kaW5nIGludGVydXB0CisJICogQ2hlY2sgZm9yIHBlbmRpbmcgaW50ZXJydXB0CiAJICovCiAJc2NzaV9zdGF0dXMgPSBEQzM5NXhfcmVhZDE2KGFjYiwgVFJNX1MxMDQwX1NDU0lfU1RBVFVTKTsKIAlkbWFfc3RhdHVzID0gREMzOTV4X3JlYWQ4KGFjYiwgVFJNX1MxMDQwX0RNQV9TVEFUVVMpOwogCWlmIChzY3NpX3N0YXR1cyAmIFNDU0lJTlRFUlJVUFQpIHsKLQkJLyogaW50ZXJ1cHQgcGVuZGluZyAtIGxldCdzIHByb2Nlc3MgaXQhICovCisJCS8qIGludGVycnVwdCBwZW5kaW5nIC0gbGV0J3MgcHJvY2VzcyBpdCEgKi8KIAkJZGMzOTV4X2hhbmRsZV9pbnRlcnJ1cHQoYWNiLCBzY3NpX3N0YXR1cyk7CiAJCWhhbmRsZWQgPSBJUlFfSEFORExFRDsKIAl9CkBAIC00NTc5LDcgKzQ1NzksNyBAQAogCWlmIChhY2ItPmNvbmZpZyAmIEhDQ19TQ1NJX1JFU0VUKQogCQlyZXNldF9zY3NpX2J1cyhhY2IpOwogCi0JLyogY2xlYXIgYW55IHBlbmRpbmcgaW50ZXJ1cHQgc3RhdGUgKi8KKwkvKiBjbGVhciBhbnkgcGVuZGluZyBpbnRlcnJ1cHQgc3RhdGUgKi8KIAlEQzM5NXhfcmVhZDgoYWNiLCBUUk1fUzEwNDBfU0NTSV9JTlRTVEFUVVMpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbWJveC5jIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX21ib3guYwppbmRleCBlNGU0YzZhLi43ODc3OTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbWJveC5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9tYm94LmMKQEAgLTQyNyw3ICs0MjcsNyBAQAogICogQGlkCQk6IHBjaSBkZXZpY2UgaWQgb2YgdGhlIGNsYXNzIG9mIGNvbnRyb2xsZXJzCiAgKgogICogVGhpcyByb3V0aW5lIHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgYWRhcHRlciBpcyBkZXRlY3RlZCBieSB0aGUKLSAqIFBDSSBob3RwbHVnIHN1c2JzeXRlbS4KKyAqIFBDSSBob3RwbHVnIHN1c2JzeXN0ZW0uCiAgKi8KIHN0YXRpYyBpbnQgX19kZXZpbml0CiBtZWdhcmFpZF9wcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pbml0LmMgYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfaW5pdC5jCmluZGV4IDFlMjlmNTEuLmQ2OTJjNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pbml0LmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2luaXQuYwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAKICAqIHFsYTR4eHhfc3RhcnRfZmlybXdhcmUgLSBzdGFydHMgcWxhNHh4eCBmaXJtd2FyZQogICogQGhhOiBQb2ludGVyIHRvIGhvc3QgYWRhcHRlciBzdHJ1Y3R1cmUuCiAgKgotICogVGhpcyByb3V0aW5lIHBlcmZvcm1zIHRoZSBuZWNjZXNzYXJ5IHN0ZXBzIHRvIHN0YXJ0IHRoZSBmaXJtd2FyZSBmb3IKKyAqIFRoaXMgcm91dGluZSBwZXJmb3JtcyB0aGUgbmVjZXNzYXJ5IHN0ZXBzIHRvIHN0YXJ0IHRoZSBmaXJtd2FyZSBmb3IKICAqIHRoZSBRTEE0MDEwIGFkYXB0ZXIuCiAgKiovCiBzdGF0aWMgaW50IHFsYTR4eHhfc3RhcnRfZmlybXdhcmUoc3RydWN0IHNjc2lfcWxhX2hvc3QgKmhhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NkLmMgYi9kcml2ZXJzL3Njc2kvc2QuYwppbmRleCA2OWY1NDJjLi5hNjliMTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2QuYworKysgYi9kcml2ZXJzL3Njc2kvc2QuYwpAQCAtNjc2LDcgKzY3Niw3IEBACiAgKglzdWNjZXNzIGFzIHdlbGwpLiBSZXR1cm5zIGEgbmVnYXRlZCBlcnJubyB2YWx1ZSBpbiBjYXNlIG9mIGVycm9yLgogICoKICAqCU5vdGU6IG1vc3QgaW9jdGxzIGFyZSBmb3J3YXJkIG9udG8gdGhlIGJsb2NrIHN1YnN5c3RlbSBvciBmdXJ0aGVyCi0gKglkb3duIGluIHRoZSBzY3NpIHN1YnN5dGVtLgorICoJZG93biBpbiB0aGUgc2NzaSBzdWJzeXN0ZW0uCiAgKiovCiBzdGF0aWMgaW50IHNkX2lvY3RsKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHAsIAogCQkgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3VuM19OQ1I1MzgwLmMgYi9kcml2ZXJzL3Njc2kvc3VuM19OQ1I1MzgwLmMKaW5kZXggZGMxNWEyMi4uNGFhZmU4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N1bjNfTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9zdW4zX05DUjUzODAuYwpAQCAtMTU5Niw3ICsxNTk2LDcgQEAKICAgICAgKiBJTyB3aGlsZSBTRUwgaXMgdHJ1ZS4gQnV0IGFnYWluLCB0aGVyZSBhcmUgc29tZSBkaXNrcyBvdXQgdGhlIGluIHRoZQogICAgICAqIHdvcmxkIHRoYXQgZG8gdGhhdCBuZXZlcnRoZWxlc3MuIChTb21lYm9keSBjbGFpbWVkIHRoYXQgdGhpcyBhbm5vdW5jZXMKICAgICAgKiByZXNlbGVjdGlvbiBjYXBhYmlsaXR5IG9mIHRoZSB0YXJnZXQuKSBTbyB3ZSBiZXR0ZXIgc2tpcCB0aGF0IHRlc3QgYW5kCi0gICAgICogb25seSB3YWl0IGZvciBCU1kuLi4gKEZhbW91cyBnZXJtYW4gd29yZHM6IERlciBLbPxnZXJlIGdpYnQgbmFjaCA6LSkKKyAgICAgKiBvbmx5IHdhaXQgZm9yIEJTWS4uLiAoRmFtb3VzIGdlcm1hbiB3b3JkczogRGVyIEtsw7xnZXJlIGdpYnQgbmFjaCA6LSkKICAgICAgKi8KIAogICAgIHdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCB0aW1lb3V0KSAmJiAhKE5DUjUzODBfcmVhZChTVEFUVVNfUkVHKSAmIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzIuaCBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncyLmgKaW5kZXggNmU1Yjk1Mi4uYWUxZmIxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzIuaAorKysgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3Mi5oCkBAIC0xNzgxLDcgKzE3ODEsNyBAQAogCSAqICBXaGlsZSB0ZXN0aW5nIHdpdGggYm9ndXMgUVVBTlRVTSBkcml2ZXMsIHRoZSBDMTAxMCAKIAkgKiAgc29tZXRpbWVzIHJhaXNlZCBhIHNwdXJpb3VzIHBoYXNlIG1pc21hdGNoIHdpdGggCiAJICogIFdTUiBhbmQgdGhlIENITU9WKDEpIHRyaWdnZXJlZCBhbm90aGVyIFBNLgotCSAqICBXYWl0aW5nIGV4cGxpY2l0ZWx5IGZvciB0aGUgUEhBU0Ugc2VlbWVkIHRvIGF2b2lkIAorCSAqICBXYWl0aW5nIGV4cGxpY2l0bHkgZm9yIHRoZSBQSEFTRSBzZWVtZWQgdG8gYXZvaWQKIAkgKiAgdGhlIG5lc3RlZCBwaGFzZSBtaXNtYXRjaC4gQnR3LCB0aGlzIGRpZG4ndCBoYXBwZW4gCiAJICogIHVzaW5nIG15IElCTSBkcml2ZXMuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvd2QzM2M5My5oIGIvZHJpdmVycy9zY3NpL3dkMzNjOTMuaAppbmRleCA2MWZmYjg2Li4wMDEyM2YyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvd2QzM2M5My5oCisrKyBiL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmgKQEAgLTE1NSw3ICsxNTUsNyBAQAogI2RlZmluZSBXRDMzQzkzX0ZTXzEyXzE1IE9XTklEX0ZTXzEyCiAjZGVmaW5lIFdEMzNDOTNfRlNfMTZfMjAgT1dOSURfRlNfMTYKIAotICAgLyogcGFzcyBpbnB1dC1jbG9jayBleHBsaWNpdGVseS4gYWNjZXB0ZWQgbWh6IHZhbHVlcyBhcmUgOC0xMCwxMi0yMCAqLworICAgLyogcGFzcyBpbnB1dC1jbG9jayBleHBsaWNpdGx5LiBhY2NlcHRlZCBtaHogdmFsdWVzIGFyZSA4LTEwLDEyLTIwICovCiAjZGVmaW5lIFdEMzNDOTNfRlNfTUhaKG1oeikgKG1oeikKIAogICAgLyogQ29udHJvbCByZWdpc3RlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvS2NvbmZpZyBiL2RyaXZlcnMvc2VyaWFsL0tjb25maWcKaW5kZXggZDZhZTM4ZS4uODc2NjVkN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL0tjb25maWcKKysrIGIvZHJpdmVycy9zZXJpYWwvS2NvbmZpZwpAQCAtNjIsMTEgKzYyLDExIEBACiAJICBrZXJuZWwgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgZmlyc3Qgc2VyaWFsIGxpbmUsIC9kZXYvdHR5UzAsIGFzCiAJICBzeXN0ZW0gY29uc29sZS4KIAotCSAgeW91IGNhbiBzZXQgdGhhdCB1c2luZyBhIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9uIHN1Y2ggYXMKKwkgIFlvdSBjYW4gc2V0IHRoYXQgdXNpbmcgYSBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbiBzdWNoIGFzCiAJICAiY29uc29sZT11YXJ0ODI1MCxpbywweDNmOCw5NjAwbjgiCiAJICAiY29uc29sZT11YXJ0ODI1MCxtbWlvLDB4ZmY1ZTAwMDAsMTE1MjAwbjgiLgotCSAgYW5kIGl0IHdpbGwgc3dpdGNoIHRvIG5vcm1hbCBzZXJpYWwgY29uc29sZSB3aGVuIGNvcnJlcG9uZGluZyBwb3J0IGlzCi0JICByZWFkeS4KKwkgIGFuZCBpdCB3aWxsIHN3aXRjaCB0byBub3JtYWwgc2VyaWFsIGNvbnNvbGUgd2hlbiB0aGUgY29ycmVzcG9uZGluZyAKKwkgIHBvcnQgaXMgcmVhZHkuCiAJICAiZWFybHljb249dWFydDgyNTAsaW8sMHgzZjgsOTYwMG44IgogCSAgImVhcmx5Y29uPXVhcnQ4MjUwLG1taW8sMHhmZjVlMDAwMCwxMTUyMDBuOCIuCiAJICBpdCB3aWxsIG5vdCBvbmx5IHNldHVwIGVhcmx5IGNvbnNvbGUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9zM2MyNDEwLmMgYi9kcml2ZXJzL3NlcmlhbC9zM2MyNDEwLmMKaW5kZXggM2YyNmM0Yi4uZTc3M2M4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvczNjMjQxMC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3MzYzI0MTAuYwpAQCAtMjAsOCArMjAsOCBAQAogICoJCSAgICAgLSBTM0MyNDEwIGFuZCBTM0MyNDQwIHNlcmlhbCBzdXBwb3J0CiAgKgkJICAgICAtIFBvd2VyIE1hbmFnZW1lbnQgc3VwcG9ydAogICoJCSAgICAgLSBGaXggY29uc29sZSB2aWEgSXJEQSBkZXZpY2VzCi0gKgkJICAgICAtIFN5c1JlcSAoSGVyYmVydCBQ9nR6bCkKLSAqCQkgICAgIC0gQnJlYWsgY2hhcmFjdGVyIGhhbmRsaW5nIChIZXJiZXJ0IFD2dHpsKQorICoJCSAgICAgLSBTeXNSZXEgKEhlcmJlcnQgUMO2dHpsKQorICoJCSAgICAgLSBCcmVhayBjaGFyYWN0ZXIgaGFuZGxpbmcgKEhlcmJlcnQgUMO2dHpsKQogICoJCSAgICAgLSBzcGluLWxvY2sgaW5pdGlhbGlzYXRpb24gKERpbWl0cnkgQW5kcmljKQogICoJCSAgICAgLSBhZGRlZCBjbG9jayBjb250cm9sCiAgKgkJICAgICAtIHVwZGF0ZWQgaW5pdCBjb2RlIHRvIHVzZSBwbGF0Zm9ybV9kZXZpY2UgaW5mbwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvbXBjNTJ4eF9wc2Nfc3BpLmMgYi9kcml2ZXJzL3NwaS9tcGM1Mnh4X3BzY19zcGkuYwppbmRleCBlOWFiYTkzLi43MDUxZTZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9tcGM1Mnh4X3BzY19zcGkuYworKysgYi9kcml2ZXJzL3NwaS9tcGM1Mnh4X3BzY19zcGkuYwpAQCAtMTgxLDcgKzE4MSw3IEBACiAJCX0KIAogCi0JCS8qIGVuYWJsZSBpbnRlcnVwdHMgYW5kIHdhaXQgZm9yIHdha2UgdXAKKwkJLyogZW5hYmxlIGludGVycnVwdHMgYW5kIHdhaXQgZm9yIHdha2UgdXAKIAkJICogaWYganVzdCBvbmUgYnl0ZSBpcyBleHBlY3RlZCB0aGUgUnggRklGTyBnZW5lcmVyYXRlcyBubwogCQkgKiBGRlVMTCBpbnRlcnJ1cHQsIHNvIGFjdGl2YXRlIHRoZSBSeFJEWSBpbnRlcnJ1cHQKIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGg3YTQweF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9saDdhNDB4X3VkYy5jCmluZGV4IGU3OGMyZGQuLjM2N2I3NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9saDdhNDB4X3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9saDdhNDB4X3VkYy5jCkBAIC0xMjcyLDcgKzEyNzIsNyBAQAogCQkJLyoKIAkJCSAqIEF0dGVtcHRzIHRvIGhhbHQgSU4gZW5kcG9pbnRzIHdpbGwgZmFpbCAocmV0dXJuaW5nIC1FQUdBSU4pCiAJCQkgKiBpZiBhbnkgdHJhbnNmZXIgcmVxdWVzdHMgYXJlIHN0aWxsIHF1ZXVlZCwgb3IgaWYgdGhlIGNvbnRyb2xsZXIKLQkJCSAqIEZJRk8gc3RpbGwgaG9sZHMgYnl0ZXMgdGhhdCB0aGUgaG9zdCBoYXNuknQgY29sbGVjdGVkLgorCQkJICogRklGTyBzdGlsbCBob2xkcyBieXRlcyB0aGF0IHRoZSBob3N0IGhhc24ndCBjb2xsZWN0ZWQuCiAJCQkgKi8KIAkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVwLT5kZXYtPmxvY2ssIGZsYWdzKTsKIAkJCURFQlVHCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaHViLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktaHViLmMKaW5kZXggMGRjYjQxNi4uNzM1ZGI0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWh1Yi5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1odWIuYwpAQCAtNDUxLDcgKzQ1MSw3IEBACiAKIAkvKiBTb21lIGJvYXJkcyAobW9zdGx5IFZJQT8pIHJlcG9ydCBib2d1cyBvdmVyY3VycmVudCBpbmRpY2F0aW9ucywKIAkgKiBjYXVzaW5nIG1hc3NpdmUgbG9nIHNwYW0gdW5sZXNzIHdlIGNvbXBsZXRlbHkgaWdub3JlIHRoZW0uICBJdAotCSAqIG1heSBiZSByZWxldmFudCB0aGF0IFZJQSBWVDgyMzUgY29udHJvbGVycywgd2hlcmUgUE9SVF9QT1dFUiBpcworCSAqIG1heSBiZSByZWxldmFudCB0aGF0IFZJQSBWVDgyMzUgY29udHJvbGxlcnMsIHdoZXJlIFBPUlRfUE9XRVIgaXMKIAkgKiBhbHdheXMgc2V0LCBzZWVtIHRvIGNsZWFyIFBPUlRfT0NDIGFuZCBQT1JUX0NTQyB3aGVuIHdyaXRpbmcgdG8KIAkgKiBQT1JUX1BPV0VSOyB0aGF0J3Mgc3VycHJpc2luZywgYnV0IG1heWJlIHdpdGhpbi1zcGVjLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9zbDgxMS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvc2w4MTEtaGNkLmMKaW5kZXggOTRkODU5YS4uYmEzNzBjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9zbDgxMS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3NsODExLWhjZC5jCkBAIC0xNTU2LDcgKzE1NTYsNyBAQAogCQloY2QtPnBvd2VyX2J1ZGdldCA9IHNsODExLT5ib2FyZC0+cG93ZXIgKiAyOwogCX0KIAotCS8qIGVuYWJsZSBwb3dlciBhbmQgaW50ZXJ1cHRzICovCisJLyogZW5hYmxlIHBvd2VyIGFuZCBpbnRlcnJ1cHRzICovCiAJcG9ydF9wb3dlcihzbDgxMSwgMSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2ltYWdlL0tjb25maWcgYi9kcml2ZXJzL3VzYi9pbWFnZS9LY29uZmlnCmluZGV4IDk1Y2U3MDMuLjc1OTVkZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2ltYWdlL0tjb25maWcKKysrIGIvZHJpdmVycy91c2IvaW1hZ2UvS2NvbmZpZwpAQCAtMSw1ICsxLDUgQEAKICMKLSMgVVNCIEltYWdlaW5nIGRldmljZXMgY29uZmlndXJhdGlvbgorIyBVU0IgSW1hZ2luZyBkZXZpY2VzIGNvbmZpZ3VyYXRpb24KICMKIGNvbW1lbnQgIlVTQiBJbWFnaW5nIGRldmljZXMiCiAJZGVwZW5kcyBvbiBVU0IKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvY3l0aGVybS5jIGIvZHJpdmVycy91c2IvbWlzYy9jeXRoZXJtLmMKaW5kZXggMDRlODdhYy4uMjY3N2ZlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9jeXRoZXJtLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy9jeXRoZXJtLmMKQEAgLTExOCw3ICsxMTgsNyBAQAogCQkJCWN5dGhlcm0tPmJyaWdodG5lc3MsIGJ1ZmZlciwgOCk7CiAJaWYgKHJldHZhbCkKIAkJZGV2X2RiZygmY3l0aGVybS0+dWRldi0+ZGV2LCAicmV0dmFsID0gJWRcbiIsIHJldHZhbCk7Ci0JLyogSW5mb3JtILVDIHRoYXQgd2UgaGF2ZSBjaGFuZ2VkIHRoZSBicmlnaHRuZXNzIHNldHRpbmcgKi8KKwkvKiBJbmZvcm0gwrVDIHRoYXQgd2UgaGF2ZSBjaGFuZ2VkIHRoZSBicmlnaHRuZXNzIHNldHRpbmcgKi8KIAlyZXR2YWwgPSB2ZW5kb3JfY29tbWFuZChjeXRoZXJtLT51ZGV2LCBXUklURV9SQU0sIEJSSUdIVE5FU1NfU0VNLAogCQkJCTB4MDEsIGJ1ZmZlciwgOCk7CiAJaWYgKHJldHZhbCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvZW1pMjYuYyBiL2RyaXZlcnMvdXNiL21pc2MvZW1pMjYuYwppbmRleCA1YzBhMjZjLi5jZDEzNzU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9taXNjL2VtaTI2LmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy9lbWkyNi5jCkBAIC0xLDcgKzEsNyBAQAogLyogCiAgKiBFbWFnaWMgRU1JIDJ8NiB1c2IgYXVkaW8gaW50ZXJmYWNlIGZpcm13YXJlIGxvYWRlci4KICAqIENvcHlyaWdodCAoQykgMjAwMgotICogCVRhcGlvIExheHN0cvZtICh0YXBpby5sYXhzdHJvbUBpcHRpbWUuZmkpCisgKiAJVGFwaW8gTGF4c3Ryw7ZtICh0YXBpby5sYXhzdHJvbUBpcHRpbWUuZmkpCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjQ5LDcgKzI0OSw3IEBACiBtb2R1bGVfaW5pdChlbWkyNl9pbml0KTsKIG1vZHVsZV9leGl0KGVtaTI2X2V4aXQpOwogCi1NT0RVTEVfQVVUSE9SKCJ0YXBpbyBsYXhzdHL2bSIpOworTU9EVUxFX0FVVEhPUigiVGFwaW8gTGF4c3Ryw7ZtIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkVtYWdpYyBFTUkgMnw2IGZpcm13YXJlIGxvYWRlci4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jIGIvZHJpdmVycy91c2IvbWlzYy9lbWk2Mi5jCmluZGV4IDIzMTUzZWEuLjQ3NThjYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvZW1pNjIuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2VtaTYyLmMKQEAgLTEsNyArMSw3IEBACiAvKiAKICAqIEVtYWdpYyBFTUkgMnw2IHVzYiBhdWRpbyBpbnRlcmZhY2UgZmlybXdhcmUgbG9hZGVyLgogICogQ29weXJpZ2h0IChDKSAyMDAyCi0gKiAJVGFwaW8gTGF4c3Ry9m0gKHRhcGlvLmxheHN0cm9tQGlwdGltZS5maSkKKyAqIAlUYXBpbyBMYXhzdHLDtm0gKHRhcGlvLmxheHN0cm9tQGlwdGltZS5maSkKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYXMgcHVibGlzaGVkIGJ5CkBAIC0yOTIsNyArMjkyLDcgQEAKIG1vZHVsZV9pbml0KGVtaTYyX2luaXQpOwogbW9kdWxlX2V4aXQoZW1pNjJfZXhpdCk7CiAKLU1PRFVMRV9BVVRIT1IoInRhcGlvIGxheHN0cvZtIik7CitNT0RVTEVfQVVUSE9SKCJUYXBpbyBMYXhzdHLDtm0iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRW1hZ2ljIEVNSSA2fDJtIGZpcm13YXJlIGxvYWRlci4iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL0NoYW5nZUxvZy5oaXN0b3J5IGIvZHJpdmVycy91c2Ivc2VyaWFsL0NoYW5nZUxvZy5oaXN0b3J5CmluZGV4IDUyYzRmN2IuLmMxYjI3OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9DaGFuZ2VMb2cuaGlzdG9yeQorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvQ2hhbmdlTG9nLmhpc3RvcnkKQEAgLTQwMCw3ICs0MDAsNyBAQAogCiAgKDExLzExLzIwMDEpIGdraAogCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBtMTI1IGRldmljZXMsIGFuZCBhZGRlZCBjaGVjayB0byBwcmV2ZW50IG9vcHNlcwotCWZvciBDbGnpIGRldmljZXMgdGhhdCBsaWUgYWJvdXQgdGhlIG51bWJlciBvZiBwb3J0cyB0aGV5IGhhdmUuCisJZm9yIENsacOpIGRldmljZXMgdGhhdCBsaWUgYWJvdXQgdGhlIG51bWJlciBvZiBwb3J0cyB0aGV5IGhhdmUuCiAKICAoMDgvMzAvMjAwMSkgZ2toCiAJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIENsaWUgZGV2aWNlcywgYm90aCB0aGUgMy41IGFuZCA0LjAgb3MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnCmluZGV4IDk5ZmVmZWQuLjRhODY2OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnCkBAIC01MjcsNyArNTI3LDcgQEAKIAlkZXBlbmRzIG9uIFVTQl9TRVJJQUwgJiYgRVhQRVJJTUVOVEFMCiAJLS0taGVscC0tLQogCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgYSBjeWJlckphY2sgcGlucGFkL2UtY29tIFVTQiBjaGlwY2FyZAotCSAgcmVhZGVyLiBUaGlzIGlzIGFuIGludGVyZmFjZSB0byBJU08gNzgxNiBjb21wYXRpYmxlIGNvbnRhY3RiYXNlZAorCSAgcmVhZGVyLiBUaGlzIGlzIGFuIGludGVyZmFjZSB0byBJU08gNzgxNiBjb21wYXRpYmxlIGNvbnRhY3QtYmFzZWQKIAkgIGNoaXBjYXJkcywgZS5nLiBHU00gU0lNcy4KIAogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCmluZGV4IDY1MjU3ODYuLjhhOGE2YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCkBAIC04Myw3ICs4Myw3IEBACiAgKgogICogKDE4L0p1bi8yMDAzKSBJYW4gQWJib3R0CiAgKiAgICAgIEFkZGVkIERldmljZSBJRCBvZiB0aGUgVVNCIHJlbGFpcyBmcm9tIFJ1ZG9sZiBHdWdsZXIgKGJhY2twb3J0ZWQgZnJvbQotICogICAgICBQaGlsaXBwIEf8aHJpbmcncyBwYXRjaCBmb3IgMi41Lngga2VybmVsKS4KKyAqICAgICAgUGhpbGlwcCBHw7xocmluZydzIHBhdGNoIGZvciAyLjUueCBrZXJuZWwpLgogICogICAgICBNb3ZlZCByZWFkIHRyYW5zZmVyIGJ1ZmZlciByZWFsbG9jYXRpb24gaW50byBzdGFydHVwIGZ1bmN0aW9uLgogICogICAgICBGcmVlIGV4aXN0aW5nIHdyaXRlIHVyYiBhbmQgdHJhbnNmZXIgYnVmZmVyIGluIHN0YXJ0dXAgZnVuY3Rpb24uCiAgKiAgICAgIE9ubHkgdXNlIHVyYnMgaW4gd3JpdGUgdXJiIHBvb2wgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uaCBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCmluZGV4IGI1N2I5MGEuLmI1MWNiYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBCaWxsIFJ5ZGVyIC0gYnJ5ZGVyQHNnaS5jb20gZm9ybWVybHkgb2YgU2lsaWNvbiBHcmFwaGljcywgSW5jLi0gd3JvdGUgdGhlIAogICogRlRESV9TSU8gaW1wbGVtZW50YXRpb24uCiAgKgotICogUGhpbGlwcCBH/GhyaW5nIC0gcGdAZnV0dXJld2FyZS5hdCAtIGFkZGVkIHRoZSBEZXZpY2UgSUQgb2YgdGhlIFVTQiByZWxhaXMKKyAqIFBoaWxpcHAgR8O8aHJpbmcgLSBwZ0BmdXR1cmV3YXJlLmF0IC0gYWRkZWQgdGhlIERldmljZSBJRCBvZiB0aGUgVVNCIHJlbGFpcwogICogZnJvbSBSdWRvbGYgR3VnbGVyCiAgKgogICovCkBAIC00NCw3ICs0NCw3IEBACiAjZGVmaW5lIEZURElfQUNUWldBVkVfUElECTB4RjJEMAogCiAKLS8qIHd3dy5zdGFydGluZy1wb2ludC1zeXN0ZW1zLmNvbSC1Q2hhbWVsZW9uIGRldmljZSAqLworLyogd3d3LnN0YXJ0aW5nLXBvaW50LXN5c3RlbXMuY29tIMK1Q2hhbWVsZW9uIGRldmljZSAqLwogI2RlZmluZSBGVERJX01JQ1JPX0NIQU1FTEVPTl9QSUQJMHhDQUEwCS8qIFByb2R1Y3QgSWQgKi8KIAogLyogd3d3LmlydHJhbnMuZGUgZGV2aWNlICovCkBAIC00MTksNyArNDE5LDcgQEAKIAogLyoKICAqIFRlcmF0cm9uaWsgcHJvZHVjdCBpZHMuCi0gKiBTdWJtaXR0ZWQgYnkgTy4gV/ZsZmVsc2NobmVpZGVyLgorICogU3VibWl0dGVkIGJ5IE8uIFfDtmxmZWxzY2huZWlkZXIuCiAgKi8KICNkZWZpbmUgRlRESV9URVJBVFJPTklLX1ZDUF9QSUQJIDB4RUM4OAkvKiBUZXJhdHJvbmlrIGRldmljZSAocHJlZmVycmluZyBWQ1AgZHJpdmVyIG9uIHdpbmRvd3MpICovCiAjZGVmaW5lIEZURElfVEVSQVRST05JS19EMlhYX1BJRCAweEVDODkJLyogVGVyYXRyb25payBkZXZpY2UgKHByZWZlcnJpbmcgRDJYWCBkcml2ZXIgb24gd2luZG93cykgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pcGFxLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaXBhcS5jCmluZGV4IGU4MzZhZDAuLjliMzhhMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pcGFxLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lwYXEuYwpAQCAtMzA2LDcgKzMwNiw3IEBACiAJeyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwNzA1KSB9LCAvKiBUT1NISUJBIFBvY2tldCBQQyBlMzEwICovCiAJeyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwNzA2KSB9LCAvKiBUT1NISUJBIFBvY2tldCBQQyBlNzQwICovCiAJeyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwNzA3KSB9LCAvKiBUT1NISUJBIFBvY2tldCBQQyBlMzMwIFNlcmllcyAqLwotCXsgVVNCX0RFVklDRSgweDA5MzAsIDB4MDcwOCkgfSwgLyogVE9TSElCQSBQb2NrZXQgUEMgZTM1MKBTZXJpZXMgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwOTMwLCAweDA3MDgpIH0sIC8qIFRPU0hJQkEgUG9ja2V0IFBDIGUzNTAgU2VyaWVzICovCiAJeyBVU0JfREVWSUNFKDB4MDkzMCwgMHgwNzA5KSB9LCAvKiBUT1NISUJBIFBvY2tldCBQQyBlNzUwIFNlcmllcyAqLwogCXsgVVNCX0RFVklDRSgweDA5MzAsIDB4MDcwQSkgfSwgLyogVE9TSElCQSBQb2NrZXQgUEMgZTQwMCBTZXJpZXMgKi8KIAl7IFVTQl9ERVZJQ0UoMHgwOTMwLCAweDA3MEIpIH0sIC8qIFRPU0hJQkEgUG9ja2V0IFBDIGU4MDAgU2VyaWVzICovCkBAIC00ODgsNyArNDg4LDcgQEAKIAl7IFVTQl9ERVZJQ0UoMHgwQkY4LCAweDEwMDEpIH0sIC8qIEZ1aml0c3UgU2llbWVucyBDb21wdXRlcnMgVVNCIFN5bmMgKi8KIAl7IFVTQl9ERVZJQ0UoMHgwQzQ0LCAweDAzQTIpIH0sIC8qIE1vdG9yb2xhIGlERU4gU21hcnRwaG9uZSAqLwogCXsgVVNCX0RFVklDRSgweDBDOEUsIDB4NjAwMCkgfSwgLyogQ2Vzc2NvbSBMdXhpYW4gU2VyaWVzICovCi0JeyBVU0JfREVWSUNFKDB4MENBRCwgMHg5MDAxKSB9LCAvKiBNb3Rvcm9sYSBQb3dlclBhZCBQb2NrZXQgUEOgRGV2aWNlICovCisJeyBVU0JfREVWSUNFKDB4MENBRCwgMHg5MDAxKSB9LCAvKiBNb3Rvcm9sYSBQb3dlclBhZCBQb2NrZXQgUEMgRGV2aWNlICovCiAJeyBVU0JfREVWSUNFKDB4MEY0RSwgMHgwMjAwKSB9LCAvKiBGcmVlZG9tIFNjaWVudGlmaWMgVVNCIFN5bmMgKi8KIAl7IFVTQl9ERVZJQ0UoMHgwRjk4LCAweDAyMDEpIH0sIC8qIEN5YmVyYmFuayBVU0IgU3luYyAqLwogCXsgVVNCX0RFVklDRSgweDBGQjgsIDB4MzAwMSkgfSwgLyogV2lzdHJvbiBVU0IgU3luYyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaXNkMjAwLmMKaW5kZXggNjgzMWRjYS4uOTNhNzcyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jCkBAIC0zLDcgKzMsNyBAQAogICogJElkOiBpc2QyMDAuYyx2IDEuMTYgMjAwMi8wNC8yMiAwMzozOTo0MyBtZGhhcm0gRXhwICQKICAqCiAgKiBDdXJyZW50IGRldmVsb3BtZW50IGFuZCBtYWludGVuYW5jZToKLSAqICAgKEMpIDIwMDEtMjAwMiBCavZybiBTdGVuYmVyZyAoYmpvcm5AaGF4eC5zZSkKKyAqICAgKEMpIDIwMDEtMjAwMiBCasO2cm4gU3RlbmJlcmcgKGJqb3JuQGhheHguc2UpCiAgKgogICogRGV2ZWxvcGVkIHdpdGggdGhlIGFzc2lzdGFuY2Ugb2Y6CiAgKiAgIChDKSAyMDAyIEFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQub3JnPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaCBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmgKaW5kZXggOWI2NTZlYy4uMjJhYjIzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaAorKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oCkBAIC00MDcsNyArNDA3LDcgQEAKIAkJIkZpbmVQaXggMTQwMFpvb20iLAogCQlVU19TQ19VRkksIFVTX1BSX0RFVklDRSwgTlVMTCwgVVNfRkxfRklYX0lOUVVJUlkgfCBVU19GTF9TSU5HTEVfTFVOKSwKIAotLyogUmVwb3J0ZWQgYnkgUGV0ZXIgV+RjaHRsZXIgPHB3YWVjaHRsZXJAbG9ld2Uta29tcC5kZT4KKy8qIFJlcG9ydGVkIGJ5IFBldGVyIFfDpGNodGxlciA8cHdhZWNodGxlckBsb2V3ZS1rb21wLmRlPgogICogVGhlIGRldmljZSBuZWVkcyB0aGUgZmxhZ3Mgb25seS4KICAqLwogVU5VU1VBTF9ERVYoICAweDA0Y2UsIDB4MDAwMiwgMHgwMDc0LCAweDAwNzQsCkBAIC0xNTUxLDcgKzE1NTEsNyBAQAogCQlVU19GTF9HT19TTE9XICksCiAKIC8qCi0gKiBEYXZpZCBI5HJkZW1hbiA8ZGF2aWRAMmdlbi5jb20+CisgKiBEYXZpZCBIw6RyZGVtYW4gPGRhdmlkQDJnZW4uY29tPgogICogVGhlIGtleSBtYWtlcyB0aGUgU0NTSSBzdGFjayBwcmludCBjb25mdXNpbmcgKGJ1dCBoYXJtbGVzcykgbWVzc2FnZXMKICAqLwogVU5VU1VBTF9ERVYoICAweDQxNDYsIDB4YmEwMSwgMHgwMTAwLCAweDAxMDAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL0tjb25maWcgYi9kcml2ZXJzL3ZpZGVvL0tjb25maWcKaW5kZXggYjNiZjRlYy4uZmI5ZDhkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9LY29uZmlnCisrKyBiL2RyaXZlcnMvdmlkZW8vS2NvbmZpZwpAQCAtNjYxLDcgKzY2MSw3IEBACiAgICAgICAgaGVscAogICAgICAgICAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBIZWN1YmEgYm9hcmQuIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQKICAgICAgICAgIHdpdGggYW4gRS1JbmsgODAweDYwMCBkaXNwbGF5IGFuZCB4ODYgU0JDcyB0aHJvdWdoIGEgMTYgYml0IEdQSU8KLSAgICAgICAgIGludGVyZmFjZSAoOCBiaXQgZGF0YSwgNCBiaXQgY29udHJvbCkuIElmIHlvdSBhbnRpY3BhdGUgdXNpbmcKKyAgICAgICAgIGludGVyZmFjZSAoOCBiaXQgZGF0YSwgNCBiaXQgY29udHJvbCkuIElmIHlvdSBhbnRpY2lwYXRlIHVzaW5nCiAgICAgICAgICB0aGlzIGRyaXZlciwgc2F5IFkgb3IgTTsgb3RoZXJ3aXNlIHNheSBOLiBZb3UgbXVzdCBzcGVjaWZ5IHRoZQogICAgICAgICAgR1BJTyBJTyBhZGRyZXNzIHRvIGJlIHVzZWQgZm9yIHNldHRpbmcgY29udHJvbCBhbmQgZGF0YS4KIApAQCAtODE1LDcgKzgxNSw3IEBACiAJaGVscAogCSAgVGhpcyBpcyB0aGUgZnJhbWVidWZmZXIgZGV2aWNlIGZvciB0aGUgU3VuIFhWUi01MDAgYW5kIHNpbWlsYXIKIAkgIGdyYXBoaWNzIGNhcmRzIGJhc2VkIHVwb24gdGhlIDNETEFCUyBXaWxkY2F0IGNoaXBzZXQuICBUaGUgZHJpdmVyCi0JICBvbmx5IHdvcmtzIG9uIHNwYXJjNjQgc3lzdGVtcyB3aGVyZSB0aGUgc3lzdGVtIGZpcndtYXJlIGhhcworCSAgb25seSB3b3JrcyBvbiBzcGFyYzY0IHN5c3RlbXMgd2hlcmUgdGhlIHN5c3RlbSBmaXJtd2FyZSBoYXMKIAkgIG1vc3RseSBpbml0aWFsaXplZCB0aGUgY2FyZCBhbHJlYWR5LiAgSXQgaXMgdHJlYXRlZCBhcyBhCiAJICBjb21wbGV0ZWx5IGR1bWIgZnJhbWVidWZmZXIgZGV2aWNlLgogCkBAIC04MjgsNyArODI4LDcgQEAKIAloZWxwCiAJICBUaGlzIGlzIHRoZSBmcmFtZWJ1ZmZlciBkZXZpY2UgZm9yIHRoZSBTdW4gWFZSLTI1MDAgYW5kIHNpbWlsYXIKIAkgIGdyYXBoaWNzIGNhcmRzIGJhc2VkIHVwb24gdGhlIDNETEFCUyBXaWxkY2F0IGNoaXBzZXQuICBUaGUgZHJpdmVyCi0JICBvbmx5IHdvcmtzIG9uIHNwYXJjNjQgc3lzdGVtcyB3aGVyZSB0aGUgc3lzdGVtIGZpcndtYXJlIGhhcworCSAgb25seSB3b3JrcyBvbiBzcGFyYzY0IHN5c3RlbXMgd2hlcmUgdGhlIHN5c3RlbSBmaXJtd2FyZSBoYXMKIAkgIG1vc3RseSBpbml0aWFsaXplZCB0aGUgY2FyZCBhbHJlYWR5LiAgSXQgaXMgdHJlYXRlZCBhcyBhCiAJICBjb21wbGV0ZWx5IGR1bWIgZnJhbWVidWZmZXIgZGV2aWNlLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2FtaWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2FtaWZiLmMKaW5kZXggZjJlMjQzYy4uNGM5ZWMzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9hbWlmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYW1pZmIuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKwogICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICB8dXBwZXJfbWFyZ2luICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8Ci0gICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgpSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAorICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLS0tLS0tLS0tKy0tLS0tLS0rCiAgICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKQEAgLTEzMywxNSArMTMzLDE1IEBACiAgICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgfCAgICAgICB8Ci0gICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgpSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLS0tLS0tLS0tKy0tLS0tLS0rCiAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxsb3dlcl9tYXJnaW4gICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKLSAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICClICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CiAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgfHZzeW5jX2xlbiAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAotICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIKUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CiAgICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKwogCiAKQEAgLTMyNSw3ICszMjUsNyBAQAogICAgQ0NJUiAtPiBQQUwKICAgIC0tLS0tLS0tLS0tCiAKLSAgICAgIC0gYSBzY2FubGluZSBpcyA2NCC1cyBsb25nLCBvZiB3aGljaCA1Mi40OCC1cyBhcmUgdmlzaWJsZS4gVGhpcyBpcyBhYm91dAorICAgICAgLSBhIHNjYW5saW5lIGlzIDY0IMK1cyBsb25nLCBvZiB3aGljaCA1Mi40OCDCtXMgYXJlIHZpc2libGUuIFRoaXMgaXMgYWJvdXQKICAgICAgICAgNzM2IHZpc2libGUgNzAgbnMgcGl4ZWxzIHBlciBsaW5lLgogICAgICAgLSB3ZSBoYXZlIDYyNSBzY2FubGluZXMsIG9mIHdoaWNoIDU3NSBhcmUgdmlzaWJsZSAoaW50ZXJsYWNlZCk7IGFmdGVyCiAgICAgICAgIHJvdW5kaW5nIHRoaXMgYmVjb21lcyA1NzYuCkBAIC0zMzMsNyArMzMzLDcgQEAKICAgIFJFVE1BIC0+IE5UU0MKICAgIC0tLS0tLS0tLS0tLS0KIAotICAgICAgLSBhIHNjYW5saW5lIGlzIDYzLjUgtXMgbG9uZywgb2Ygd2hpY2ggNTMuNSC1cyBhcmUgdmlzaWJsZS4gIFRoaXMgaXMgYWJvdXQKKyAgICAgIC0gYSBzY2FubGluZSBpcyA2My41IMK1cyBsb25nLCBvZiB3aGljaCA1My41IMK1cyBhcmUgdmlzaWJsZS4gIFRoaXMgaXMgYWJvdXQKICAgICAgICAgNzM2IHZpc2libGUgNzAgbnMgcGl4ZWxzIHBlciBsaW5lLgogICAgICAgLSB3ZSBoYXZlIDUyNSBzY2FubGluZXMsIG9mIHdoaWNoIDQ4NSBhcmUgdmlzaWJsZSAoaW50ZXJsYWNlZCk7IGFmdGVyCiAgICAgICAgIHJvdW5kaW5nIHRoaXMgYmVjb21lcyA0ODQuCkBAIC04MDIsNyArODAyLDcgQEAKIAogc3RhdGljIHVfc2hvcnQgZG9fdm1vZGVfZnVsbCA9IDA7CS8qIENoYW5nZSB0aGUgVmlkZW8gTW9kZSAqLwogc3RhdGljIHVfc2hvcnQgZG9fdm1vZGVfcGFuID0gMDsJLyogVXBkYXRlIHRoZSBWaWRlbyBNb2RlICovCi1zdGF0aWMgc2hvcnQgZG9fYmxhbmsgPSAwOwkJLyogKFVuKUJsYW5rIHRoZSBTY3JlZW4gKLExKSAqLworc3RhdGljIHNob3J0IGRvX2JsYW5rID0gMDsJCS8qIChVbilCbGFuayB0aGUgU2NyZWVuICjCsTEpICovCiBzdGF0aWMgdV9zaG9ydCBkb19jdXJzb3IgPSAwOwkJLyogTW92ZSB0aGUgQ3Vyc29yICovCiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jIGIvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jCmluZGV4IGFiZTBjNDMuLmQ3NzVlYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqCQkJICAgQW50aG9ueSBUb25nIDxhdG9uZ0B1aXVjLmVkdT4KICAqCiAgKiAgR2VuZXJpYyBMQ0Qgc3VwcG9ydCB3cml0dGVuIGJ5IERhbmllbCBNYW50aW9uZSwgcG9ydGVkIGZyb20gMi40LjIwIGJ5IEFsZXggS2VybgotICogIE1hbnkgVGhhbmtzIHRvIFZpbGxlIFN5cmrkbOQgZm9yIHBhdGNoZXMgYW5kIGZpeGluZyBuYXN0aW5nIDE2IGJpdCBjb2xvciBidWcuCisgKiAgTWFueSBUaGFua3MgdG8gVmlsbGUgU3lyasOkbMOkIGZvciBwYXRjaGVzIGFuZCBmaXhpbmcgbmFzdGluZyAxNiBiaXQgY29sb3IgYnVnLgogICoKICAqICBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwogICogIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9yCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnCmluZGV4IGEyMmNjZjkuLjI2NzQyMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICBUaGUgc2Nyb2xsYmFjayBidWZmZXIgb2YgdGhlIHN0YW5kYXJkIFZHQSBjb25zb2xlIGlzIGxvY2F0ZWQgaW4KIAkgdGhlIFZHQSBSQU0uICBUaGUgc2l6ZSBvZiB0aGlzIFJBTSBpcyBmaXhlZCBhbmQgaXMgcXVpdGUgc21hbGwuCiAJIElmIHlvdSByZXF1aXJlIGEgbGFyZ2VyIHNjcm9sbGJhY2sgYnVmZmVyLCB0aGlzIGNhbiBiZSBwbGFjZWQgaW4KLQkgU3lzdGVtIFJBTSB3aGljaCBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZHVyaW5nIGludGlhbGl6YXRpb24uCisJIFN5c3RlbSBSQU0gd2hpY2ggaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIAkgUGxhY2luZyB0aGUgc2Nyb2xsYmFjayBidWZmZXIgaW4gU3lzdGVtIFJBTSB3aWxsIHNsaWdodGx5IHNsb3cKIAkgZG93biB0aGUgY29uc29sZS4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9pbnRlbGZiL2ludGVsZmJkcnYuYyBiL2RyaXZlcnMvdmlkZW8vaW50ZWxmYi9pbnRlbGZiZHJ2LmMKaW5kZXggZThlMzhlZC4uNDgxZDU4ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vaW50ZWxmYi9pbnRlbGZiZHJ2LmMKKysrIGIvZHJpdmVycy92aWRlby9pbnRlbGZiL2ludGVsZmJkcnYuYwpAQCAtNCw3ICs0LDcgQEAKICAqIExpbnV4IGZyYW1lYnVmZmVyIGRyaXZlciBmb3IgSW50ZWwoUikgODMwTS84NDVHLzg1MkdNLzg1NUdNLzg2NUcvOTE1Ry85MTVHTS8KICAqIDk0NUcvOTQ1R00gaW50ZWdyYXRlZCBncmFwaGljcyBjaGlwcy4KICAqCi0gKiBDb3B5cmlnaHQgqSAyMDAyLCAyMDAzIERhdmlkIERhd2VzIDxkYXdlc0B4ZnJlZTg2Lm9yZz4KKyAqIENvcHlyaWdodCDCqSAyMDAyLCAyMDAzIERhdmlkIERhd2VzIDxkYXdlc0B4ZnJlZTg2Lm9yZz4KICAqICAgICAgICAgICAgICAgICAgIDIwMDQgU3lsdmFpbiBNZXllcgogICogICAgICAgICAgICAgICAgICAgMjAwNiBEYXZpZCBBaXJsaWUKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ludGVsZmIvaW50ZWxmYmh3LmMgYi9kcml2ZXJzL3ZpZGVvL2ludGVsZmIvaW50ZWxmYmh3LmMKaW5kZXggMmEwZTMyMC4uNWY2ZmI3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9pbnRlbGZiL2ludGVsZmJody5jCisrKyBiL2RyaXZlcnMvdmlkZW8vaW50ZWxmYi9pbnRlbGZiaHcuYwpAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBMaW51eCBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIEludGVsKFIpIDg2NUcgaW50ZWdyYXRlZCBncmFwaGljcyBjaGlwcy4KICAqCi0gKiBDb3B5cmlnaHQgqSAyMDAyLCAyMDAzIERhdmlkIERhd2VzIDxkYXdlc0B4ZnJlZTg2Lm9yZz4KKyAqIENvcHlyaWdodCDCqSAyMDAyLCAyMDAzIERhdmlkIERhd2VzIDxkYXdlc0B4ZnJlZTg2Lm9yZz4KICAqICAgICAgICAgICAgICAgICAgIDIwMDQgU3lsdmFpbiBNZXllcgogICoKICAqIFRoaXMgZHJpdmVyIGNvbnNpc3RzIG9mIHR3byBwYXJ0cy4gIFRoZSBmaXJzdCBwYXJ0IChpbnRlbGZiZHJ2LmMpIHByb3ZpZGVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZyBiL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnCmluZGV4IDdmNGQyNWIuLmY0ZmNmMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdmlkZW8vb21hcC9LY29uZmlnCkBAIC04LDcgKzgsNyBAQAogICAgICAgICAgIEZyYW1lIGJ1ZmZlciBkcml2ZXIgZm9yIE9NQVAgYmFzZWQgYm9hcmRzLgogCiBjb25maWcgRkJfT01BUF9CT09UTE9BREVSX0lOSVQKLQlib29sICJDaGVjayBib290bG9hZGVyIGluaXRpYWxpemFpb24iCisJYm9vbCAiQ2hlY2sgYm9vdGxvYWRlciBpbml0aWFsaXphdGlvbiIKIAlkZXBlbmRzIG9uIEZCX09NQVAKIAloZWxwCiAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBjaGVja2luZyBpZiB0aGUgYm9vdGxvYWRlciBoYXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vczNjMjQxMGZiLmMgYi9kcml2ZXJzL3ZpZGVvL3MzYzI0MTBmYi5jCmluZGV4IGFlMDhkNDUuLjU4NTdjY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vczNjMjQxMGZiLmMKKysrIGIvZHJpdmVycy92aWRlby9zM2MyNDEwZmIuYwpAQCAtNTYsNyArNTYsNyBAQAogICoJLSBBZGQgc3VwcG9ydCBmb3IgZGlmZmVyZW50IGRldmljZXMKICAqCS0gQmFja2xpZ2h0IHN1cHBvcnQKICAqCi0gKiAyMDA0LTA5LTA1OiBIZXJiZXJ0IFD2dHpsIDxoZXJiZXJ0QDEzdGhmbG9vci5hdD4KKyAqIDIwMDQtMDktMDU6IEhlcmJlcnQgUMO2dHpsIDxoZXJiZXJ0QDEzdGhmbG9vci5hdD4KICAqCS0gYWRkZWQgY2xvY2sgKGRlLSlhbGxvY2F0aW9uIGNvZGUKICAqCS0gYWRkZWQgZml4ZW0gZmJtZW0gb3B0aW9uCiAgKgpAQCAtNjQsNyArNjQsNyBAQAogICoJLSBjb2RlIGNsZWFudXAKICAqCS0gYWRkZWQgYSBmb3Jnb3R0ZW4gcmV0dXJuIGluIGgxOTQwZmJfaW5pdAogICoKLSAqIDIwMDQtMDctMTk6IEhlcmJlcnQgUPZ0emwgPGhlcmJlcnRAMTN0aGZsb29yLmF0PgorICogMjAwNC0wNy0xOTogSGVyYmVydCBQw7Z0emwgPGhlcmJlcnRAMTN0aGZsb29yLmF0PgogICoJLSBjb2RlIGNsZWFudXAgYW5kIGV4dGVuZGVkIGRlYnVnZ2luZwogICoKICAqIDIwMDQtMDctMTU6IEFybmF1ZCBQYXRhcmQgPGFybmF1ZC5wYXRhcmRAcnRwLW5ldC5vcmc+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3Zlcm1pbGlvbi92ZXJtaWxpb24uYyBiL2RyaXZlcnMvdmlkZW8vdmVybWlsaW9uL3Zlcm1pbGlvbi5jCmluZGV4IGZmOWU4MDUuLmMzMWY1NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmVybWlsaW9uL3Zlcm1pbGlvbi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdmVybWlsaW9uL3Zlcm1pbGlvbi5jCkBAIC0yMyw4ICsyMyw4IEBACiAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICoKICAqIEF1dGhvcnM6Ci0gKiAgIFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+Ci0gKiAgIE1pY2hlbCBE5G56ZXIgPG1pY2hlbC1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiAgIFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMtYXQtdHVuZ3N0ZW5ncmFwaGljcy1kb3QtY29tPgorICogICBNaWNoZWwgRMOkbnplciA8bWljaGVsLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqICAgQWxhbiBIb3VyaWhhbmUgPGFsYW5oLWF0LXR1bmdzdGVuZ3JhcGhpY3MtZG90LWNvbT4KICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3Zlcm1pbGlvbi92ZXJtaWxpb24uaCBiL2RyaXZlcnMvdmlkZW8vdmVybWlsaW9uL3Zlcm1pbGlvbi5oCmluZGV4IDFmYzY2OTUuLmM0YWJhNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmVybWlsaW9uL3Zlcm1pbGlvbi5oCisrKyBiL2RyaXZlcnMvdmlkZW8vdmVybWlsaW9uL3Zlcm1pbGlvbi5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICoKICAqIEF1dGhvcnM6Ci0gKiAgIFRob21hcyBIZWxsc3Ry9m0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+CisgKiAgIFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMtYXQtdHVuZ3N0ZW5ncmFwaGljcy1kb3QtY29tPgogICovCiAKICNpZm5kZWYgX1ZFUk1JTElPTl9IXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9pNjMwMGVzYi5jIGIvZHJpdmVycy93YXRjaGRvZy9pNjMwMGVzYi5jCmluZGV4IGM1OTgyNTAuLmYyMzY5NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvaTYzMDBlc2IuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL2k2MzAwZXNiLmMKQEAgLTIsNyArMiw3IEBACiAgKglpNjMwMGVzYjoJV2F0Y2hkb2cgdGltZXIgZHJpdmVyIGZvciBJbnRlbCA2MzAwRVNCIGNoaXBzZXQKICAqCiAgKgkoYykgQ29weXJpZ2h0IDIwMDQgR29vZ2xlIEluYy4KLSAqCShjKSBDb3B5cmlnaHQgMjAwNSBEYXZpZCBI5HJkZW1hbiA8ZGF2aWRAMmdlbi5jb20+CisgKgkoYykgQ29weXJpZ2h0IDIwMDUgRGF2aWQgSMOkcmRlbWFuIDxkYXZpZEAyZ2VuLmNvbT4KICAqCiAgKglUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKgltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMTksNyArMTksNyBAQAogICoJSW5pdGlhbCB2ZXJzaW9uIDAuMDEKICAqICAyMDA0WVlaWiBSb3NzIEJpcm8KICAqICAJVmVyc2lvbiAwLjAyCi0gKiAgMjAwNTAyMTAgRGF2aWQgSORyZGVtYW4gPGRhdmlkQDJnZW4uY29tPgorICogIDIwMDUwMjEwIERhdmlkIEjDpHJkZW1hbiA8ZGF2aWRAMmdlbi5jb20+CiAgKiAgICAgIFBvcnRlZCBkcml2ZXIgdG8ga2VybmVsIDIuNgogICovCiAKQEAgLTUyMSw3ICs1MjEsNyBAQAogbW9kdWxlX2luaXQod2F0Y2hkb2dfaW5pdCk7CiBtb2R1bGVfZXhpdCh3YXRjaGRvZ19jbGVhbnVwKTsKIAotTU9EVUxFX0FVVEhPUigiUm9zcyBCaXJvIGFuZCBEYXZpZCBI5HJkZW1hbiIpOworTU9EVUxFX0FVVEhPUigiUm9zcyBCaXJvIGFuZCBEYXZpZCBIw6RyZGVtYW4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiV2F0Y2hkb2cgZHJpdmVyIGZvciBJbnRlbCA2MzAwRVNCIGNoaXBzZXRzIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfTUlTQ0RFVihXQVRDSERPR19NSU5PUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL2lUQ09fdmVuZG9yX3N1cHBvcnQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvaVRDT192ZW5kb3Jfc3VwcG9ydC5jCmluZGV4IDQxNTA4MzkuLmNhZmM0NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvaVRDT192ZW5kb3Jfc3VwcG9ydC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvaVRDT192ZW5kb3Jfc3VwcG9ydC5jCkBAIC0xMTUsNyArMTE1LDcgQEAKICAqCSAgRm9yIFA0RFB4OgogICoJICBCSU9TIHNldHVwIC0+IEFkdmFuY2VkIC0+IEkvTyBEZXZpY2UgQ29uZmlndXJhdGlvbiAtPiBXYXRjaCBEb2cKICAqCSBUaGlzIHNldHRpbmcgZW5hYmxlcyBvciBkaXNhYmxlcyBXYXRjaGRvZyBmdW5jdGlvbi4gV2hlbiBlbmFibGVkLCB0aGUKLSAqCSBkZWZhdWx0IHdhdGNoZG9nIHRpbWVyIGlzIHNldCB0byBiZSA1IG1pbnV0ZXMgKGFib3V0IDTigJkzNeKAnSkuIEl0IGlzCisgKgkgZGVmYXVsdCB3YXRjaGRvZyB0aW1lciBpcyBzZXQgdG8gYmUgNSBtaW51dGVzIChhYm91dCA0bTM1cykuIEl0IGlzCiAgKgkgZW5vdWdoIHRvIGxvYWQgYW5kIHJ1biB0aGUgT1MuIFRoZSBhcHBsaWNhdGlvbiAoc2VydmljZSBvciBkcml2ZXIpIGhhcwogICoJIHRvIHRha2Ugb3ZlciB0aGUgY29udHJvbCBvbmNlIE9TIGlzIHJ1bm5pbmcgdXAgYW5kIGJlZm9yZSB3YXRjaGRvZwogICoJIGV4cGlyZXMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3c4MzY5N2hmX3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy93ODM2OTdoZl93ZHQuYwppbmRleCBkOWU4MjFkLi41MTgyNmMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3c4MzY5N2hmX3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvdzgzNjk3aGZfd2R0LmMKQEAgLTgsNyArOCw3IEBACiAgKgl3aGljaCBpcyBiYXNlZCBvbiB3ZHQuYy4KICAqCU9yaWdpbmFsIGNvcHlyaWdodCBtZXNzYWdlczoKICAqCi0gKgkoYykgQ29weXJpZ2h0IDIwMDMgUOFkcmFpZyBCcmFkeSA8UEBkcmFpZ0JyYWR5LmNvbT4KKyAqCShjKSBDb3B5cmlnaHQgMjAwMyBQw6FkcmFpZyBCcmFkeSA8UEBkcmFpZ0JyYWR5LmNvbT4KICAqCiAgKgkoYykgQ29weXJpZ2h0IDIwMDAtMjAwMSBNYXJlayBNaWNoYWxraWV3aWN6IDxtYXJla21AbGludXgub3JnLnBsPgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvem9ycm8vem9ycm8uaWRzIGIvZHJpdmVycy96b3Jyby96b3Jyby5pZHMKaW5kZXggNWJkNGIwNWQuLjU2MGZlZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvem9ycm8vem9ycm8uaWRzCisrKyBiL2RyaXZlcnMvem9ycm8vem9ycm8uaWRzCkBAIC0yOTUsNyArMjk1LDcgQEAKIAkwMTAwICBSSCA4MDBDIFtIRCBDb250cm9sbGVyXQogCTAyMDAgIFJIIDgwMEMgW1JBTSBFeHBhbnNpb25dCiAwODYxICBLYXRvCi0jIFRoZSBSYWluYm93IElJIGFuZCBJSUkgYXJlIGFjdHVhbGx5IG1hZGUgYnkgSW5nZW5pZXVyYvxybyBIZWxmcmljaAorIyBUaGUgUmFpbmJvdyBJSSBhbmQgSUlJIGFyZSBhY3R1YWxseSBtYWRlIGJ5IEluZ2VuaWV1cmLDvHJvIEhlbGZyaWNoCiAJMjAwMCAgUmFpbmJvdyBJSSBbR3JhcGhpY3MgQ2FyZF0KIAkyMTAwICBSYWluYm93IElJSSBbR3JhcGhpY3MgQ2FyZF0KIAk4MDAwICBNZWxvZHkgTVBFRyBbQXVkaW8gQ2FyZF0KZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbTg2LmMgYi9mcy9iaW5mbXRfZW04Ni5jCmluZGV4IDU3NmRkN2QuLmY5NWFlOTcgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9lbTg2LmMKKysrIGIvZnMvYmluZm10X2VtODYuYwpAQCAtMiw3ICsyLDcgQEAKICAqICBsaW51eC9mcy9iaW5mbXRfZW04Ni5jCiAgKgogICogIEJhc2VkIG9uIGxpbnV4L2ZzL2JpbmZtdF9zY3JpcHQuYwotICogIENvcHlyaWdodCAoQykgMTk5NiAgTWFydGluIHZvbiBM9ndpcworICogIENvcHlyaWdodCAoQykgMTk5NiAgTWFydGluIHZvbiBMw7Z3aXMKICAqICBvcmlnaW5hbCAjIS1jaGVja2luZyBpbXBsZW1lbnRlZCBieSB0eXRzby4KICAqCiAgKiAgZW04NiBjaGFuZ2VzIENvcHlyaWdodCAoQykgMTk5NyAgSmltIFBhcmFkaXMKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9taXNjLmMgYi9mcy9iaW5mbXRfbWlzYy5jCmluZGV4IDQyZTk0YjMuLmI1M2M3ZTUgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9taXNjLmMKKysrIGIvZnMvYmluZm10X21pc2MuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgYmluZm10X21pc2MuYwogICoKLSAqICBDb3B5cmlnaHQgKEMpIDE5OTcgUmljaGFyZCBH/G50aGVyCisgKiAgQ29weXJpZ2h0IChDKSAxOTk3IFJpY2hhcmQgR8O8bnRoZXIKICAqCiAgKiAgYmluZm10X21pc2MgZGV0ZWN0cyBiaW5hcmllcyB2aWEgYSBtYWdpYyBvciBmaWxlbmFtZSBleHRlbnNpb24gYW5kIGludm9rZXMKICAqICBhIHNwZWNpZmllZCB3cmFwcGVyLiBUaGlzIHNob3VsZCBvYnNvbGV0ZSBiaW5mbXRfamF2YSwgYmluZm10X2VtODYgYW5kCmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfc2NyaXB0LmMgYi9mcy9iaW5mbXRfc2NyaXB0LmMKaW5kZXggNGQwZTBmNi4uYWIzMzkzOSAxMDA2NDQKLS0tIGEvZnMvYmluZm10X3NjcmlwdC5jCisrKyBiL2ZzL2JpbmZtdF9zY3JpcHQuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgbGludXgvZnMvYmluZm10X3NjcmlwdC5jCiAgKgotICogIENvcHlyaWdodCAoQykgMTk5NiAgTWFydGluIHZvbiBM9ndpcworICogIENvcHlyaWdodCAoQykgMTk5NiAgTWFydGluIHZvbiBMw7Z3aXMKICAqICBvcmlnaW5hbCAjIS1jaGVja2luZyBpbXBsZW1lbnRlZCBieSB0eXRzby4KICAqLwogCmRpZmYgLS1naXQgYS9mcy9pc29mcy9pbm9kZS5jIGIvZnMvaXNvZnMvaW5vZGUuYwppbmRleCBhYTM1OWEyLi4wOWUzZDMwIDEwMDY0NAotLS0gYS9mcy9pc29mcy9pbm9kZS5jCisrKyBiL2ZzL2lzb2ZzL2lub2RlLmMKQEAgLTMsNyArMyw3IEBACiAgKgogICogIChDKSAxOTkxICBMaW51cyBUb3J2YWxkcyAtIG1pbml4IGZpbGVzeXN0ZW0KICAqICAgICAgMTk5MiwgMTk5MywgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgTW9kaWZpZWQgZm9yIElTTyA5NjYwIGZpbGVzeXN0ZW0uCi0gKiAgICAgIDE5OTQgIEViZXJoYXJkIE1vZW5rZWJlcmcgLSBtdWx0aSBzZXNzaW9uIGhhbmRsaW5nLgorICogICAgICAxOTk0ICBFYmVyaGFyZCBNw7Zua2ViZXJnIC0gbXVsdGkgc2Vzc2lvbiBoYW5kbGluZy4KICAqICAgICAgMTk5NSAgTWFyayBEb2JpZSAtIGFsbG93IG1vdW50aW5nIG9mIHNvbWUgd2VpcmQgVmlkZW9DRHMgYW5kIFBob3RvQ0RzLgogICoJMTk5NyAgR29yZG9uIENoYWZmZWUgLSBKb2xpZXQgQ0RzCiAgKgkxOTk4ICBFcmljIExhbW1lcnRzIC0gSVNPIDk2NjAgTGV2ZWwgMwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kdHJlZS5jIGIvZnMvamZzL2pmc19kdHJlZS5jCmluZGV4IGRmMGI4NTMuLmRmMjVlY2MgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfZHRyZWUuYworKysgYi9mcy9qZnMvamZzX2R0cmVlLmMKQEAgLTc3Myw3ICs3NzMsNyBAQAogCSAgICAgIGdldENoaWxkOgogCQkvKiB1cGRhdGUgbWF4LiBudW1iZXIgb2YgcGFnZXMgdG8gc3BsaXQgKi8KIAkJaWYgKEJUX1NUQUNLX0ZVTEwoYnRzdGFjaykpIHsKLQkJCS8qIFNvbWV0aGluZydzIGNvcnJ1cHRlZCwgbWFyayBmaWxlc3l0ZW0gZGlydHkgc28KKwkJCS8qIFNvbWV0aGluZydzIGNvcnJ1cHRlZCwgbWFyayBmaWxlc3lzdGVtIGRpcnR5IHNvCiAJCQkgKiBjaGtkc2sgd2lsbCBmaXggaXQuCiAJCQkgKi8KIAkJCWpmc19lcnJvcihzYiwgInN0YWNrIG92ZXJydW4gaW4gZHRTZWFyY2ghIik7CmRpZmYgLS1naXQgYS9mcy9uZnMvbmZzcm9vdC5jIGIvZnMvbmZzL25mc3Jvb3QuYwppbmRleCBlODdiNDRlLi40YjAzMzQ1IDEwMDY0NAotLS0gYS9mcy9uZnMvbmZzcm9vdC5jCisrKyBiL2ZzL25mcy9uZnNyb290LmMKQEAgLTQzLDcgKzQzLDcgQEAKICAqCQkJCWZyb20gYmVpbmcgdXNlZCAodGhhbmtzIHRvIExlbyBTcGlla21hbikKICAqCUFuZHkgV2Fsa2VyCToJQWxsb3cgdG8gc3BlY2lmeSB0aGUgTkZTIHNlcnZlciBpbiBuZnNfcm9vdAogICoJCQkJd2l0aG91dCBnaXZpbmcgYSBwYXRoIG5hbWUKLSAqCVN3ZW4gVGj8bW1sZXIJOglBbGxvdyB0byBzcGVjaWZ5IHRoZSBORlMgb3B0aW9ucyBpbiBuZnNfcm9vdAorICoJU3dlbiBUaMO8bW1sZXIJOglBbGxvdyB0byBzcGVjaWZ5IHRoZSBORlMgb3B0aW9ucyBpbiBuZnNfcm9vdAogICoJCQkJd2l0aG91dCBnaXZpbmcgYSBwYXRoIG5hbWUuIEZpeCBCT09UUCByZXF1ZXN0CiAgKgkJCQlmb3IgZG9tYWlubmFtZSAoZG9tYWlubmFtZSBpcyBOSVMgZG9tYWluLCBub3QKICAqCQkJCUROUyBkb21haW4hKS4gU2tpcCBkdW1teSBkZXZpY2VzIGZvciBCT09UUC4KZGlmZiAtLWdpdCBhL2ZzL250ZnMvQ2hhbmdlTG9nIGIvZnMvbnRmcy9DaGFuZ2VMb2cKaW5kZXggMzQ1Nzk4ZS4uMzdjMTFlMSAxMDA2NDQKLS0tIGEvZnMvbnRmcy9DaGFuZ2VMb2cKKysrIGIvZnMvbnRmcy9DaGFuZ2VMb2cKQEAgLTM4Miw3ICszODIsNyBAQAogCSAgb3duIGxvY2tpbmcgc28gaXQgZG9lcyBub3QgbWF0dGVyIGlmIHRoZSB2ZnMgaW5vZGUgaXMgbG9ja2VkLgogCS0gRml4IGJ1ZyBpbiBtZnQgcmVjb3JkIHdyaXRpbmcgd2hlcmUgd2UgZm9yZ290IHRvIHNldCB0aGUgZGV2aWNlIGluCiAJICB0aGUgYnVmZmVycyB3aGVuIG1hcHBpbmcgdGhlbSBhZnRlciB0aGUgVk0gaGFkIGRpc2NhcmRlZCB0aGVtLgotCSAgVGhhbmtzIHRvIE1hcnRpbiBNT0tSRUrFoCBmb3IgdGhlIGJ1ZyByZXBvcnQuCisJICBUaGFua3MgdG8gTWFydGluIE1PS1JFSsOFIGZvciB0aGUgYnVnIHJlcG9ydC4KIAogMi4xLjIyIC0gTWFueSBidWcgYW5kIHJhY2UgZml4ZXMgYW5kIGVycm9yIGhhbmRsaW5nIGltcHJvdmVtZW50cy4KIApAQCAtMTU4NSw3ICsxNTg1LDcgQEAKIAkgIGZvciByZWFkaW5nICRNRlQgKG50ZnNfbWZ0X3JlYWRwYWdlKS4gSW4gdGhlIHByb2Nlc3MgY3JlYXRlIGRlZGljYXRlZAogCSAgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb25zIChudGZzX21mdF9hb3BzKSBmb3IgJE1GVCBpbm9kZSBtYXBwaW5nLiBBbHNvCiAJICByZW1vdmVkIHRoZSBub3cgc3VwZXJmbHVvdXMgZXhwb3J0cyBmcm9tIHRoZSBrZXJuZWwgY29yZSBwYXRjaC4KLQktIEZpeCBhIGJ1ZyB3aGVyZSBrZnJlZSgpIHdhcyB1c2VkIGluc3RlZCBvZiBudGZzX2ZyZWUoKS4KKwktIEZpeCBhIGJ1ZyB3aGVyZSBrZnJlZSgpIHdhcyB1c2VkIGluc3RlYWQgb2YgbnRmc19mcmVlKCkuCiAJLSBDaGFuZ2UgbWFwX21mdF9yZWNvcmQoKSB0byB0YWtlIG50ZnNfaW5vZGUgYXMgYXJndW1lbnQgaW5zdGVhZCBvZgogCSAgdmZzIGlub2RlLiBEaXRvIGZvciB1bm1hcF9tZnRfcmVjb3JkKCkuIEFkYXB0IGFsbCBjYWxsZXJzLgogCS0gQWRkIHBvaW50ZXIgdG8gbnRmc192b2x1bWUgdG8gbnRmc19pbm9kZS4KZGlmZiAtLWdpdCBhL2ZzL250ZnMvc3lzY3RsLmMgYi9mcy9udGZzL3N5c2N0bC5jCmluZGV4IDQ4NDdmYmYuLjllZjg1ZTYgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvc3lzY3RsLmMKKysrIGIvZnMvbnRmcy9zeXNjdGwuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBzeXNjdGwuYyAtIENvZGUgZm9yIHN5c2N0bCBoYW5kbGluZyBpbiBOVEZTIExpbnV4IGtlcm5lbCBkcml2ZXIuIFBhcnQgb2YKICAqCSAgICAgIHRoZSBMaW51eC1OVEZTIHByb2plY3QuIEFkYXB0ZWQgZnJvbSB0aGUgb2xkIE5URlMgZHJpdmVyLAotICoJICAgICAgQ29weXJpZ2h0IChDKSAxOTk3IE1hcnRpbiB2b24gTPZ3aXMsIFLpZ2lzIER1Y2hlc25lCisgKgkgICAgICBDb3B5cmlnaHQgKEMpIDE5OTcgTWFydGluIHZvbiBMw7Z3aXMsIFLDqWdpcyBEdWNoZXNuZQogICoKICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA1IEFudG9uIEFsdGFwYXJtYWtvdgogICoKZGlmZiAtLWdpdCBhL2ZzL250ZnMvc3lzY3RsLmggYi9mcy9udGZzL3N5c2N0bC5oCmluZGV4IGJlZGE1YmY5Li5kNGY4Y2U5IDEwMDY0NAotLS0gYS9mcy9udGZzL3N5c2N0bC5oCisrKyBiL2ZzL250ZnMvc3lzY3RsLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogc3lzY3RsLmggLSBEZWZpbmVzIGZvciBzeXNjdGwgaGFuZGxpbmcgaW4gTlRGUyBMaW51eCBrZXJuZWwgZHJpdmVyLiBQYXJ0IG9mCiAgKgkgICAgICB0aGUgTGludXgtTlRGUyBwcm9qZWN0LiBBZGFwdGVkIGZyb20gdGhlIG9sZCBOVEZTIGRyaXZlciwKLSAqCSAgICAgIENvcHlyaWdodCAoQykgMTk5NyBNYXJ0aW4gdm9uIEz2d2lzLCBS6WdpcyBEdWNoZXNuZQorICoJICAgICAgQ29weXJpZ2h0IChDKSAxOTk3IE1hcnRpbiB2b24gTMO2d2lzLCBSw6lnaXMgRHVjaGVzbmUKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAwNCBBbnRvbiBBbHRhcGFybWFrb3YKICAqCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9kY2FjaGUuYyBiL2ZzL29jZnMyL2RjYWNoZS5jCmluZGV4IDAxNGU3MzkuLjMwOTRkZGIgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2RjYWNoZS5jCisrKyBiL2ZzL29jZnMyL2RjYWNoZS5jCkBAIC0zNzYsNyArMzc2LDcgQEAKICAqIGRpcmVjdG9yeSBsb2Nrcy4gVGhlIGRlbnRyaWVzIGhhdmUgYWxyZWFkeSBiZWVuIGRlbGV0ZWQgb24gb3RoZXIKICAqIG5vZGVzIHZpYSBvY2ZzMl9yZW1vdGVfZGVudHJ5X2RlbGV0ZSgpLgogICoKLSAqIE5vcm1hbGx5LCB0aGUgVkZTIGhhbmRsZXMgdGhlIGRfbW92ZSgpIGZvciB0aGUgZmlsZSBzeXRlbSwgYWZ0ZXIKKyAqIE5vcm1hbGx5LCB0aGUgVkZTIGhhbmRsZXMgdGhlIGRfbW92ZSgpIGZvciB0aGUgZmlsZSBzeXN0ZW0sIGFmdGVyCiAgKiB0aGUgLT5yZW5hbWUoKSBjYWxsYmFjay4gT0NGUzIgd2FudHMgdG8gaGFuZGxlIHRoaXMgaW50ZXJuYWxseSwgc28KICAqIHRoZSBuZXcgbG9jayBjYW4gYmUgY3JlYXRlZCBhdG9taWNhbGx5IHdpdGggcmVzcGVjdCB0byB0aGUgY2x1c3Rlci4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMvc3VwZXIuYyBiL2ZzL3JlaXNlcmZzL3N1cGVyLmMKaW5kZXggNTdhZGZlOS4uOThjMzc4MSAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMvc3VwZXIuYworKysgYi9mcy9yZWlzZXJmcy9zdXBlci5jCkBAIC0zMTksNyArMzE5LDcgQEAKIAogLyogdG8gcHJvdGVjdCBmaWxlIGJlaW5nIHVubGlua2VkIGZyb20gZ2V0dGluZyBsb3N0IHdlICJzYWZlIiBsaW5rIGZpbGVzCiAgICBiZWluZyB1bmxpbmtlZC4gVGhpcyBsaW5rIHdpbGwgYmUgZGVsZXRlZCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbiB3aXRoIGxhc3QKLSAgIGl0ZW0gb2YgZmlsZS4gbW91bnRpbmcgdGhlIGZpbGVzeXRlbSB3ZSBzY2FuIGFsbCB0aGVzZSBsaW5rcyBhbmQgcmVtb3ZlCisgICBpdGVtIG9mIGZpbGUuIG1vdW50aW5nIHRoZSBmaWxlc3lzdGVtIHdlIHNjYW4gYWxsIHRoZXNlIGxpbmtzIGFuZCByZW1vdmUKICAgIGZpbGVzIHdoaWNoIGFsbW9zdCBnb3QgbG9zdCAqLwogdm9pZCBhZGRfc2F2ZV9saW5rKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKnRoLAogCQkgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgdHJ1bmNhdGUpCmRpZmYgLS1naXQgYS9mcy9zdXBlci5jIGIvZnMvc3VwZXIuYwppbmRleCBkMjhmZGU3Li5jZWFmMmUzIDEwMDY0NAotLS0gYS9mcy9zdXBlci5jCisrKyBiL2ZzL3N1cGVyLmMKQEAgLTE1LDcgKzE1LDcgQEAKICAqICBBZGRlZCBrZXJuZWxkIHN1cHBvcnQ6IEphY3F1ZXMgR2VsaW5hcyBhbmQgQmpvcm4gRWt3YWxsCiAgKiAgQWRkZWQgY2hhbmdlX3Jvb3Q6IFdlcm5lciBBbG1lc2JlcmdlciAmIEhhbnMgTGVybWVuLCBGZWIgJzk2CiAgKiAgQWRkZWQgb3B0aW9ucyB0byAvcHJvYy9tb3VudHM6Ci0gKiAgICBUb3JiavZybiBMaW5kaCAodG9yYmpvcm4ubGluZGhAZ29wdGEuc2UpLCBBcHJpbCAxNCwgMTk5Ni4KKyAqICAgIFRvcmJqw7ZybiBMaW5kaCAodG9yYmpvcm4ubGluZGhAZ29wdGEuc2UpLCBBcHJpbCAxNCwgMTk5Ni4KICAqICBBZGRlZCBkZXZmcyBzdXBwb3J0OiBSaWNoYXJkIEdvb2NoIDxyZ29vY2hAYXRuZi5jc2lyby5hdT4sIDEzLUpBTi0xOTk4CiAgKiAgSGVhdmlseSByZXdyaXR0ZW4gZm9yICdvbmUgZnMgLSBvbmUgdHJlZScgZGNhY2hlIGFyY2hpdGVjdHVyZS4gQVYsIE1hciAyMDAwCiAgKi8KQEAgLTQxNyw3ICs0MTcsNyBAQAogfQogCiAvKgotICogQ2FsbCB0aGUgLT5zeW5jX2ZzIHN1cGVyX29wIGFnYWluc3QgYWxsIGZpbGVzeXRlbXMgd2hpY2ggYXJlIHIvdyBhbmQKKyAqIENhbGwgdGhlIC0+c3luY19mcyBzdXBlcl9vcCBhZ2FpbnN0IGFsbCBmaWxlc3lzdGVtcyB3aGljaCBhcmUgci93IGFuZAogICogd2hpY2ggaW1wbGVtZW50IGl0LgogICoKICAqIFRoaXMgb3BlcmF0aW9uIGlzIGNhcmVmdWwgdG8gYXZvaWQgdGhlIGxpdmVsb2NrIHdoaWNoIGNvdWxkIGVhc2lseSBoYXBwZW4KQEAgLTQyNSw3ICs0MjUsNyBAQAogICogaXMgdXNlZCBvbmx5IGhlcmUuICBXZSBzZXQgaXQgYWdhaW5zdCBhbGwgZmlsZXN5c3RlbXMgYW5kIHRoZW4gY2xlYXIgaXQgYXMKICAqIHdlIHN5bmMgdGhlbS4gIFNvIHJlZGlydGllZCBmaWxlc3lzdGVtcyBhcmUgc2tpcHBlZC4KICAqCi0gKiBCdXQgaWYgcHJvY2VzcyBBIGlzIGN1cnJlbnRseSBydW5uaW5nIHN5bmNfZmlsZXN5dGVtcyBhbmQgdGhlbiBwcm9jZXNzIEIKKyAqIEJ1dCBpZiBwcm9jZXNzIEEgaXMgY3VycmVudGx5IHJ1bm5pbmcgc3luY19maWxlc3lzdGVtcyBhbmQgdGhlbiBwcm9jZXNzIEIKICAqIGNhbGxzIHN5bmNfZmlsZXN5c3RlbXMgYXMgd2VsbCwgcHJvY2VzcyBCIHdpbGwgc2V0IGFsbCB0aGUgc19uZWVkX3N5bmNfZnMKICAqIGZsYWdzIGFnYWluLCB3aGljaCB3aWxsIGNhdXNlIHByb2Nlc3MgQSB0byByZXN5bmMgZXZlcnl0aGluZy4gIEZpeCB0aGF0IHdpdGgKICAqIGEgbG9jYWwgbXV0ZXguCmRpZmYgLS1naXQgYS9mcy9zeXNmcy9maWxlLmMgYi9mcy9zeXNmcy9maWxlLmMKaW5kZXggZDNiZTFlNy4uMjdkMTc4NSAxMDA2NDQKLS0tIGEvZnMvc3lzZnMvZmlsZS5jCisrKyBiL2ZzL3N5c2ZzL2ZpbGUuYwpAQCAtNTQwLDcgKzU0MCw3IEBACiAvKioKICAqCXN5c2ZzX2NyZWF0ZV9maWxlIC0gY3JlYXRlIGFuIGF0dHJpYnV0ZSBmaWxlIGZvciBhbiBvYmplY3QuCiAgKglAa29iajoJb2JqZWN0IHdlJ3JlIGNyZWF0aW5nIGZvci4gCi0gKglAYXR0cjoJYXRycmlidXRlIGRlc2NyaXB0b3IuCisgKglAYXR0cjoJYXR0cmlidXRlIGRlc2NyaXB0b3IuCiAgKi8KIAogaW50IHN5c2ZzX2NyZWF0ZV9maWxlKHN0cnVjdCBrb2JqZWN0ICoga29iaiwgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGF0dHIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hYWVjMjAwMC9hYWVjMjAwMC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYWFlYzIwMDAvYWFlYzIwMDAuaAppbmRleCAwMDIyMjc5Li5hNmQxZWUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hYWVjMjAwMC9hYWVjMjAwMC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWFhZWMyMDAwL2FhZWMyMDAwLmgKQEAgLTE0MCwxMSArMTQwLDExIEBACiAjZGVmaW5lIFRJTUVSM19DTEVBUglfX1JFRygweDgwMDAwZTBjKQkvKiBUaW1lciAzIENsZWFyIFJlZ2lzdGVyICovCiAKIC8qIFRpbWVyIENvbnRyb2wgcmVnaXN0ZXIgYml0cyAqLwotI2RlZmluZSBUSU1FUl9DVFJMX0VOQUJMRQkoMSA8PCA3KSAvKiBFbmFibGUgKFN0YXJ0wrAgVGltZXIgKi8KKyNkZWZpbmUgVElNRVJfQ1RSTF9FTkFCTEUJKDEgPDwgNykgLyogRW5hYmxlIChTdGFydCBUaW1lcikgKi8KICNkZWZpbmUgVElNRVJfQ1RSTF9QRVJJT0RJQwkoMSA8PCA2KSAvKiBQZXJpb2RpYyBSdW5uaW5nIE1vZGUgKi8KICNkZWZpbmUgVElNRVJfQ1RSTF9GUkVFX1JVTk5JTkcgKDAgPDwgNikgLyogTm9ybWFsIFJ1bm5pbmcgTW9kZSAqLwogI2RlZmluZSBUSU1FUl9DVFJMX0NMS1NFTF81MDhLCSgxIDw8IDMpIC8qIDUwOEtIeiBDbG9jayBzZWxlY3QgKFRpbWVyIDEsIDIpICovCi0jZGVmaW5lIFRJTUVSX0NUUkxfQ0xLU0VMXzJLCSgwIDw8IDMpIC8qIDJLSHogQ2xvY2sgU2VsZWN0IChUaW1lciAxLCAyKSovCisjZGVmaW5lIFRJTUVSX0NUUkxfQ0xLU0VMXzJLCSgwIDw8IDMpIC8qIDJLSHogQ2xvY2sgU2VsZWN0IChUaW1lciAxLCAyKSAqLwogCiAvKiBQb3dlciBhbmQgU3RhdGUgQ29udHJvbCAqLwogI2RlZmluZSBQT1dFUl9CQVNFCV9fUkVHKDB4ODAwMDA0MDApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vZG1hLW1hcHBpbmcuaCBiL2luY2x1ZGUvYXNtLWFybS9kbWEtbWFwcGluZy5oCmluZGV4IDY3ODEzNGIuLjFlYjhhYWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9kbWEtbWFwcGluZy5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9kbWEtbWFwcGluZy5oCkBAIC00MDEsNyArNDAxLDcgQEAKICAqCiAgKiBPbiB0aGUgU0EtMTExMSwgYSBidWcgbGltaXRzIERNQSB0byBvbmx5IGNlcnRhaW4gcmVnaW9ucyBvZiBSQU0uCiAgKiBPbiB0aGUgSVhQNDI1LCB0aGUgUENJIGluYm91bmQgd2luZG93IGlzIDY0TUIgKDI1Nk1CIHRvdGFsIFJBTSkKLSAqIE9uIHNvbWUgQURJIGVuZ2luZWVyaW5nIHN5dGVtcywgUENJIGluYm91bmQgd2luZG93IGlzIDMyTUIgKDEyTUIgdG90YWwgUkFNKQorICogT24gc29tZSBBREkgZW5naW5lZXJpbmcgc3lzdGVtcywgUENJIGluYm91bmQgd2luZG93IGlzIDMyTUIgKDEyTUIgdG90YWwgUkFNKQogICoKICAqIFRoZSBmb2xsb3dpbmcgYXJlIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSB0aGUgZG1hYm91bmNlIHN1YnlzdGVtCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYmxhY2tmaW4vc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9zeXN0ZW0uaAppbmRleCAyYjNkNDdkLi40YTkyNzM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1ibGFja2Zpbi9zeXN0ZW0uaAorKysgYi9pbmNsdWRlL2FzbS1ibGFja2Zpbi9zeXN0ZW0uaApAQCAtMTI4LDkgKzEyOCw3IEBACiAjZGVmaW5lIG1iKCkgICBhc20gdm9sYXRpbGUgKCIiICAgOiA6IDoibWVtb3J5IikKICNkZWZpbmUgcm1iKCkgIGFzbSB2b2xhdGlsZSAoIiIgICA6IDogOiJtZW1vcnkiKQogI2RlZmluZSB3bWIoKSAgYXNtIHZvbGF0aWxlICgiIiAgIDogOiA6Im1lbW9yeSIpCi0jZGVmaW5lIHNldF9ybWIodmFyLCB2YWx1ZSkgICAgZG8geyAodm9pZCkgeGNoZygmdmFyLCB2YWx1ZSk7IH0gd2hpbGUgKDApCi0jZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSAgICAgc2V0X3JtYih2YXIsIHZhbHVlKQotI2RlZmluZSBzZXRfd21iKHZhciwgdmFsdWUpICAgIGRvIHsgdmFyID0gdmFsdWU7IHdtYigpOyB9IHdoaWxlICgwKQorI2RlZmluZSBzZXRfbWIodmFyLCB2YWx1ZSkgZG8geyAodm9pZCkgeGNoZygmdmFyLCB2YWx1ZSk7IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgcmVhZF9iYXJyaWVyX2RlcGVuZHMoKSAJCWRvIHsgfSB3aGlsZSgwKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1oODMwMC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLWg4MzAwL3N5c3RlbS5oCmluZGV4IDc4MDcwMTguLjJjMWU4M2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWg4MzAwL3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvYXNtLWg4MzAwL3N5c3RlbS5oCkBAIC04Miw4ICs4Miw3IEBACiAjZGVmaW5lIG1iKCkgICBhc20gdm9sYXRpbGUgKCIiICAgOiA6IDoibWVtb3J5IikKICNkZWZpbmUgcm1iKCkgIGFzbSB2b2xhdGlsZSAoIiIgICA6IDogOiJtZW1vcnkiKQogI2RlZmluZSB3bWIoKSAgYXNtIHZvbGF0aWxlICgiIiAgIDogOiA6Im1lbW9yeSIpCi0jZGVmaW5lIHNldF9ybWIodmFyLCB2YWx1ZSkgICAgZG8geyB4Y2hnKCZ2YXIsIHZhbHVlKTsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgc2V0X21iKHZhciwgdmFsdWUpICAgICBzZXRfcm1iKHZhciwgdmFsdWUpCisjZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSBkbyB7IHhjaGcoJnZhciwgdmFsdWUpOyB9IHdoaWxlICgwKQogCiAjaWZkZWYgQ09ORklHX1NNUAogI2RlZmluZSBzbXBfbWIoKQltYigpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1tNjhrbm9tbXUvc3lzdGVtLmggYi9pbmNsdWRlL2FzbS1tNjhrbm9tbXUvc3lzdGVtLmgKaW5kZXggMWJkMTE0Mi4uMTViNGM3ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbTY4a25vbW11L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvYXNtLW02OGtub21tdS9zeXN0ZW0uaApAQCAtMTA0LDggKzEwNCw3IEBACiAjZGVmaW5lIG1iKCkgICBhc20gdm9sYXRpbGUgKCIiICAgOiA6IDoibWVtb3J5IikKICNkZWZpbmUgcm1iKCkgIGFzbSB2b2xhdGlsZSAoIiIgICA6IDogOiJtZW1vcnkiKQogI2RlZmluZSB3bWIoKSAgYXNtIHZvbGF0aWxlICgiIiAgIDogOiA6Im1lbW9yeSIpCi0jZGVmaW5lIHNldF9ybWIodmFyLCB2YWx1ZSkgICAgZG8geyB4Y2hnKCZ2YXIsIHZhbHVlKTsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgc2V0X21iKHZhciwgdmFsdWUpICAgICBzZXRfcm1iKHZhciwgdmFsdWUpCisjZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSBkbyB7IHhjaGcoJnZhciwgdmFsdWUpOyB9IHdoaWxlICgwKQogCiAjaWZkZWYgQ09ORklHX1NNUAogI2RlZmluZSBzbXBfbWIoKQltYigpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1taXBzL3BjaS9icmlkZ2UuaCBiL2luY2x1ZGUvYXNtLW1pcHMvcGNpL2JyaWRnZS5oCmluZGV4IGI4NGZlZWIuLjVmNGI5ZDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvcGNpL2JyaWRnZS5oCisrKyBiL2luY2x1ZGUvYXNtLW1pcHMvcGNpL2JyaWRnZS5oCkBAIC01MzgsNyArNTM4LDcgQEAKIAkJIEJSSURHRV9JU1JfUE1VX0VTSVpFX0ZBVUxUKQogCiAvKgotICogTGlzdCBvZiBFcnJvcnMgd2hpY2ggYXJlIGZhdGFsIGFuZCBraWxsIHRoZSBzeXRlbQorICogTGlzdCBvZiBFcnJvcnMgd2hpY2ggYXJlIGZhdGFsIGFuZCBraWxsIHRoZSBzeXN0ZW0KICAqLwogI2RlZmluZSBCUklER0VfSVNSX0VSUk9SX0ZBVEFMCQlcCiAJCSgoQlJJREdFX0lTUl9YVEFMS19FUlJPUiAmIH5CUklER0VfSVNSX1hSRUFEX1JFUV9USU1FT1VUKXxcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wb3dlcnBjL2lvLmggYi9pbmNsdWRlL2FzbS1wb3dlcnBjL2lvLmgKaW5kZXggYmYxNGFiNC4uZTQ0Y2RmYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9pby5oCisrKyBiL2luY2x1ZGUvYXNtLXBvd2VycGMvaW8uaApAQCAtNTIyLDcgKzUyMiw3IEBACiAjZWxzZQogLyoKICAqIEVuZm9yY2Ugc3luY2hyb25pc2F0aW9uIG9mIHN0b3JlcyB2cy4gc3Bpbl91bmxvY2sKLSAqICh0aGlzIGRvZXMgaXQgZXhwbGljaXRlbHksIHRob3VnaCBvdXIgaW1wbGVtZW50YXRpb24gb2Ygc3Bpbl91bmxvY2sKKyAqICh0aGlzIGRvZXMgaXQgZXhwbGljaXRseSwgdGhvdWdoIG91ciBpbXBsZW1lbnRhdGlvbiBvZiBzcGluX3VubG9jawogICogZG9lcyBpdCBpbXBsaWNpdGVseSB0b28pCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBtbWlvd2Iodm9pZCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXBvd2VycGMvcGFjYS5oIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wYWNhLmgKaW5kZXggOThjNmJkNS4uZjZkZmNlMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcG93ZXJwYy9wYWNhLmgKKysrIGIvaW5jbHVkZS9hc20tcG93ZXJwYy9wYWNhLmgKQEAgLTEyMSw3ICsxMjEsNSBAQAogCiBleHRlcm4gc3RydWN0IHBhY2Ffc3RydWN0IHBhY2FbXTsKIAotdm9pZCBzZXR1cF9ib290X3BhY2Eodm9pZCk7Ci0KICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYgLyogX0FTTV9QT1dFUlBDX1BBQ0FfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc2gvc2U3NzUxLmggYi9pbmNsdWRlL2FzbS1zaC9zZTc3NTEuaAppbmRleCAwMmNhOTM0Li5iMzY3OTJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zaC9zZTc3NTEuaAorKysgYi9pbmNsdWRlL2FzbS1zaC9zZTc3NTEuaApAQCAtMzYsNyArMzYsNyBAQAogI2RlZmluZSBQQV9MRUQJCTB4YmEwMDAwMDAJLyogTEVEICovCiAjZGVmaW5lCVBBX0JDUgkJMHhiYjAwMDAwMAkvKiBGUEdBIG9uIHRoZSBNUzc3NTFTRTAxICovCiAKLSNkZWZpbmUgUEFfTVJTSFBDCTB4YjgzZmZmZTAJLyogTVItU0hQQy0wMSBQQ01DSUEgY29udHJvbGVyICovCisjZGVmaW5lIFBBX01SU0hQQwkweGI4M2ZmZmUwCS8qIE1SLVNIUEMtMDEgUENNQ0lBIGNvbnRyb2xsZXIgKi8KICNkZWZpbmUgUEFfTVJTSFBDX01XMQkweGI4NDAwMDAwCS8qIE1SLVNIUEMtMDEgbWVtb3J5IHdpbmRvdyBiYXNlICovCiAjZGVmaW5lIFBBX01SU0hQQ19NVzIJMHhiODUwMDAwMAkvKiBNUi1TSFBDLTAxIGF0dHJpYnV0ZSB3aW5kb3cgYmFzZSAqLwogI2RlZmluZSBQQV9NUlNIUENfSU8JMHhiODYwMDAwMAkvKiBNUi1TSFBDLTAxIEkvTyB3aW5kb3cgYmFzZSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tc2gvc3lzdGVtaDc3NTEuaCBiL2luY2x1ZGUvYXNtLXNoL3N5c3RlbWg3NzUxLmgKaW5kZXggYjE0M2JiMi4uNDE2MTEyMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tc2gvc3lzdGVtaDc3NTEuaAorKysgYi9pbmNsdWRlL2FzbS1zaC9zeXN0ZW1oNzc1MS5oCkBAIC0zNiw3ICszNiw3IEBACiAjZGVmaW5lIFBBX0xFRAkJMHhiYTAwMDAwMAkvKiBMRUQgKi8KICNkZWZpbmUJUEFfQkNSCQkweGJiMDAwMDAwCS8qIEZQR0Egb24gdGhlIE1TNzc1MVNFMDEgKi8KIAotI2RlZmluZSBQQV9NUlNIUEMJMHhiODNmZmZlMAkvKiBNUi1TSFBDLTAxIFBDTUNJQSBjb250cm9sZXIgKi8KKyNkZWZpbmUgUEFfTVJTSFBDCTB4YjgzZmZmZTAJLyogTVItU0hQQy0wMSBQQ01DSUEgY29udHJvbGxlciAqLwogI2RlZmluZSBQQV9NUlNIUENfTVcxCTB4Yjg0MDAwMDAJLyogTVItU0hQQy0wMSBtZW1vcnkgd2luZG93IGJhc2UgKi8KICNkZWZpbmUgUEFfTVJTSFBDX01XMgkweGI4NTAwMDAwCS8qIE1SLVNIUEMtMDEgYXR0cmlidXRlIHdpbmRvdyBiYXNlICovCiAjZGVmaW5lIFBBX01SU0hQQ19JTwkweGI4NjAwMDAwCS8qIE1SLVNIUEMtMDEgSS9PIHdpbmRvdyBiYXNlICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1zaDY0L3N5c3RlbS5oIGIvaW5jbHVkZS9hc20tc2g2NC9zeXN0ZW0uaAppbmRleCA1ZmY5NDY0Li5iZTJhMTVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1zaDY0L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvYXNtLXNoNjQvc3lzdGVtLmgKQEAgLTYyLDggKzYyLDcgQEAKICNkZWZpbmUgc21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCkJZG8geyB9IHdoaWxlICgwKQogI2VuZGlmIC8qIENPTkZJR19TTVAgKi8KIAotI2RlZmluZSBzZXRfcm1iKHZhciwgdmFsdWUpIGRvIHsgKHZvaWQpeGNoZygmdmFyLCB2YWx1ZSk7IH0gd2hpbGUgKDApCi0jZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSBzZXRfcm1iKHZhciwgdmFsdWUpCisjZGVmaW5lIHNldF9tYih2YXIsIHZhbHVlKSBkbyB7ICh2b2lkKXhjaGcoJnZhciwgdmFsdWUpOyB9IHdoaWxlICgwKQogCiAvKiBJbnRlcnJ1cHQgQ29udHJvbCAqLwogI2lmbmRlZiBIQVJEX0NMSQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tdjg1MC9zeXN0ZW0uaCBiL2luY2x1ZGUvYXNtLXY4NTAvc3lzdGVtLmgKaW5kZXggMGRlMjQ4MS4uYTM0ZGRmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tdjg1MC9zeXN0ZW0uaAorKysgYi9pbmNsdWRlL2FzbS12ODUwL3N5c3RlbS5oCkBAIC02Niw4ICs2Niw3IEBACiAjZGVmaW5lIHJtYigpCQkJbWIgKCkKICNkZWZpbmUgd21iKCkJCQltYiAoKQogI2RlZmluZSByZWFkX2JhcnJpZXJfZGVwZW5kcygpCSgodm9pZCkwKQotI2RlZmluZSBzZXRfcm1iKHZhciwgdmFsdWUpCWRvIHsgeGNoZyAoJnZhciwgdmFsdWUpOyB9IHdoaWxlICgwKQotI2RlZmluZSBzZXRfbWIodmFyLCB2YWx1ZSkJc2V0X3JtYiAodmFyLCB2YWx1ZSkKKyNkZWZpbmUgc2V0X21iKHZhciwgdmFsdWUpCWRvIHsgeGNoZyAoJnZhciwgdmFsdWUpOyB9IHdoaWxlICgwKQogCiAjZGVmaW5lIHNtcF9tYigpCW1iICgpCiAjZGVmaW5lIHNtcF9ybWIoKQlybWIgKCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLXg4Ni9ocGV0LmggYi9pbmNsdWRlL2FzbS14ODYvaHBldC5oCmluZGV4IDRmNTE1MTkuLmIxZjNjMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLXg4Ni9ocGV0LmgKKysrIGIvaW5jbHVkZS9hc20teDg2L2hwZXQuaApAQCAtMywxMiArMyw2IEBACiAKICNpZmRlZiBDT05GSUdfSFBFVF9USU1FUgogCi0vKgotICogRG9jdW1lbnRhdGlvbiBvbiBIUEVUIGNhbiBiZSBmb3VuZCBhdDoKLSAqICAgICAgaHR0cDovL3d3dy5pbnRlbC5jb20vaWFsL2hvbWUvc3AvcGNtbXNwZWMuaHRtCi0gKiAgICAgIGZ0cDovL2Rvd25sb2FkLmludGVsLmNvbS9pYWwvaG9tZS9zcC9tbXRzMDk4LnBkZgotICovCi0KICNkZWZpbmUgSFBFVF9NTUFQX1NJWkUJCTEwMjQKIAogI2RlZmluZSBIUEVUX0lECQkJMHgwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2Ryb20uaCBiL2luY2x1ZGUvbGludXgvY2Ryb20uaAppbmRleCAyYjY0MWIxLi5jNmQzZTIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nkcm9tLmgKKysrIGIvaW5jbHVkZS9saW51eC9jZHJvbS5oCkBAIC0yLDcgKzIsNyBAQAogICogLS0gPGxpbnV4L2Nkcm9tLmg+CiAgKiBHZW5lcmFsIGhlYWRlciBmaWxlIGZvciBsaW51eCBDRC1ST00gZHJpdmVycyAKICAqIENvcHlyaWdodCAoQykgMTk5MiAgICAgICAgIERhdmlkIEdpbGxlciwgcmFmZXRtYWRAb3h5LmVkdQotICogICAgICAgICAgICAgICAxOTk0LCAxOTk1ICAgRWJlcmhhcmQgTW9lbmtlYmVyZywgZW1vZW5rZUBnd2RnLmRlCisgKiAgICAgICAgICAgICAgIDE5OTQsIDE5OTUgICBFYmVyaGFyZCBNw7Zua2ViZXJnLCBlbW9lbmtlQGd3ZGcuZGUKICAqICAgICAgICAgICAgICAgMTk5NiAgICAgICAgIERhdmlkIHZhbiBMZWV1d2VuLCBkYXZpZEB0bS50bm8ubmwKICAqICAgICAgICAgICAgICAgMTk5NywgMTk5OCAgIEVyaWsgQW5kZXJzZW4sIGFuZGVyc2VlQGRlYmlhbi5vcmcKICAqICAgICAgICAgICAgICAgMTk5OC0yMDAyICAgIEplbnMgQXhib2UsIGF4Ym9lQHN1c2UuZGUKQEAgLTc2LDcgKzc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNkcm9tX211bHRpc2Vzc2lvbikgKi8KICNkZWZpbmUgQ0RST01fR0VUX01DTgkJMHg1MzExIC8qIE9idGFpbiB0aGUgIlVuaXZlcnNhbCBQcm9kdWN0IENvZGUiIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF2YWlsYWJsZSAoc3RydWN0IGNkcm9tX21jbikgKi8KLSNkZWZpbmUgQ0RST01fR0VUX1VQQwkJQ0RST01fR0VUX01DTiAgLyogVGhpcyBvbmUgaXMgZGVwcmljYXRlZCwgCisjZGVmaW5lIENEUk9NX0dFVF9VUEMJCUNEUk9NX0dFVF9NQ04gIC8qIFRoaXMgb25lIGlzIGRlcHJlY2F0ZWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGhlcmUgYW55d2F5IGZvciBjb21wYXRpYmlsaXR5ICovCiAjZGVmaW5lIENEUk9NUkVTRVQJCTB4NTMxMiAvKiBoYXJkLXJlc2V0IHRoZSBkcml2ZSAqLwogI2RlZmluZSBDRFJPTVZPTFJFQUQJCTB4NTMxMyAvKiBHZXQgdGhlIGRyaXZlJ3Mgdm9sdW1lIHNldHRpbmcgCkBAIC01MDYsNyArNTA2LDcgQEAKICNkZWZpbmUgR1BNT0RFX1RPX1BST1RFQ1RfUEFHRQkJMHgxZAogI2RlZmluZSBHUE1PREVfQ0FQQUJJTElUSUVTX1BBR0UJMHgyYQogI2RlZmluZSBHUE1PREVfQUxMX1BBR0VTCQkweDNmCi0vKiBOb3QgaW4gTXQuIEZ1amksIGJ1dCBpbiBBVEFQSSAyLjYgLS0gZGVwcmljYXRlZCBub3cgaW4gZmF2b3IKKy8qIE5vdCBpbiBNdC4gRnVqaSwgYnV0IGluIEFUQVBJIDIuNiAtLSBkZXByZWNhdGVkIG5vdyBpbiBmYXZvcgogICogb2YgTU9ERV9TRU5TRV9QT1dFUl9QQUdFICovCiAjZGVmaW5lIEdQTU9ERV9DRFJPTV9QQUdFCQkweDBkCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY3J5cHRvLmggYi9pbmNsdWRlL2xpbnV4L2NyeXB0by5oCmluZGV4IGZjMzI2OTQuLmYzMTEwZWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3J5cHRvLmgKKysrIGIvaW5jbHVkZS9saW51eC9jcnlwdG8uaApAQCAtNiw3ICs2LDcgQEAKICAqIENvcHlyaWdodCAoYykgMjAwNSBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+CiAgKgogICogUG9ydGlvbnMgZGVyaXZlZCBmcm9tIENyeXB0b2FwaSwgYnkgQWxleGFuZGVyIEtqZWxkYWFzIDxhc3RvckBmYXN0Lm5vPgotICogYW5kIE5ldHRsZSwgYnkgTmllbHMgTfZsbGVyLgorICogYW5kIE5ldHRsZSwgYnkgTmllbHMgTcO2bGxlci4KICAqIAogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgKaW5kZXggMTY1N2U5OS4uMWJjY2U2NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMTUzNiw3ICsxNTM2LDcgQEAKIAogZXh0ZXJuIGludCBkb190cnVuY2F0ZShzdHJ1Y3QgZGVudHJ5ICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgaW50IHRpbWVfYXR0cnMsCiAJCSAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCk7Ci1leHRlcm4gbG9uZyBkb19zeXNfb3BlbihpbnQgZmRmLCBjb25zdCBjaGFyIF9fdXNlciAqZmlsZW5hbWUsIGludCBmbGFncywKK2V4dGVybiBsb25nIGRvX3N5c19vcGVuKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSwgaW50IGZsYWdzLAogCQkJaW50IG1vZGUpOwogZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxwX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiBleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pcG1pX3NtaS5oIGIvaW5jbHVkZS9saW51eC9pcG1pX3NtaS5oCmluZGV4IGVmYTI5MmEuLjU2YWU0MzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaXBtaV9zbWkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lwbWlfc21pLmgKQEAgLTExOCw3ICsxMTgsNyBAQAogCS8qIEVuYWJsZS9kaXNhYmxlIGZpcm13YXJlIG1haW50ZW5hbmNlIG1vZGUuICBOb3RlIHRoYXQgdGhpcwogCSAgIGlzICpub3QqIHRoZSBtb2RlcyBkZWZpbmVkLCB0aGlzIGlzIHNpbXBseSBhbiBvbi9vZmYKIAkgICBzZXR0aW5nLiAgVGhlIG1lc3NhZ2UgaGFuZGxlciBkb2VzIHRoZSBtb2RlIGhhbmRsaW5nLiAgTm90ZQotCSAgIHRoYXQgdGhpcyBpcyBjYWxsZWQgZnJvbSBpbnRlcnVwdCBjb250ZXh0LCBzbyBpdCBjYW5ub3QKKwkgICB0aGF0IHRoaXMgaXMgY2FsbGVkIGZyb20gaW50ZXJydXB0IGNvbnRleHQsIHNvIGl0IGNhbm5vdAogCSAgIGJsb2NrLiAqLwogCXZvaWQgKCpzZXRfbWFpbnRlbmFuY2VfbW9kZSkodm9pZCAqc2VuZF9pbmZvLCBpbnQgZW5hYmxlKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zZWN1cml0eS5oIGIvaW5jbHVkZS9saW51eC9zZWN1cml0eS5oCmluZGV4IGZmM2Y4NTcuLmFjMDUwODMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2VjdXJpdHkuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgKQEAgLTgzMiw5ICs4MzIsMTEgQEAKICAqCWluY29taW5nIHNrX2J1ZmYgQHNrYiBoYXMgYmVlbiBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHNvY2tldCwgQHNrLgogICoJQHNrIGNvbnRhaW5zIHRoZSBzb2NrIChub3Qgc29ja2V0KSBhc3NvY2lhdGVkIHdpdGggdGhlIGluY29taW5nIHNrX2J1ZmYuCiAgKglAc2tiIGNvbnRhaW5zIHRoZSBpbmNvbWluZyBuZXR3b3JrIGRhdGEuCi0gKiBAc29ja2V0X2dldHBlZXJzZWM6CisgKiBAc29ja2V0X2dldHBlZXJzZWNfc3RyZWFtOgogICoJVGhpcyBob29rIGFsbG93cyB0aGUgc2VjdXJpdHkgbW9kdWxlIHRvIHByb3ZpZGUgcGVlciBzb2NrZXQgc2VjdXJpdHkKLSAqCXN0YXRlIHRvIHVzZXJzcGFjZSB2aWEgZ2V0c29ja29wdCBTT19HRVRQRUVSU0VDLgorICoJc3RhdGUgZm9yIHVuaXggb3IgY29ubmVjdGVkIHRjcCBzb2NrZXRzIHRvIHVzZXJzcGFjZSB2aWEgZ2V0c29ja29wdAorICoJU09fR0VUUEVFUlNFQy4gIEZvciB0Y3Agc29ja2V0cyB0aGlzIGNhbiBiZSBtZWFuaW5nZnVsIGlmIHRoZQorICoJc29ja2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBpcHNlYyBTQS4KICAqCUBzb2NrIGlzIHRoZSBsb2NhbCBzb2NrZXQuCiAgKglAb3B0dmFsIHVzZXJzcGFjZSBtZW1vcnkgd2hlcmUgdGhlIHNlY3VyaXR5IHN0YXRlIGlzIHRvIGJlIGNvcGllZC4KICAqCUBvcHRsZW4gdXNlcnNwYWNlIGludCB3aGVyZSB0aGUgbW9kdWxlIHNob3VsZCBjb3B5IHRoZSBhY3R1YWwgbGVuZ3RoCkBAIC04NDMsNiArODQ1LDE3IEBACiAgKglieSB0aGUgY2FsbGVyLgogICoJUmV0dXJuIDAgaWYgYWxsIGlzIHdlbGwsIG90aGVyd2lzZSwgdHlwaWNhbCBnZXRzb2Nrb3B0IHJldHVybgogICoJdmFsdWVzLgorICogQHNvY2tldF9nZXRwZWVyc2VjX2RncmFtOgorICogCVRoaXMgaG9vayBhbGxvd3MgdGhlIHNlY3VyaXR5IG1vZHVsZSB0byBwcm92aWRlIHBlZXIgc29ja2V0IHNlY3VyaXR5CisgKiAJc3RhdGUgZm9yIHVkcCBzb2NrZXRzIG9uIGEgcGVyLXBhY2tldCBiYXNpcyB0byB1c2Vyc3BhY2UgdmlhCisgKiAJZ2V0c29ja29wdCBTT19HRVRQRUVSU0VDLiAgVGhlIGFwcGxpY2F0aW9uIG11c3QgZmlyc3QgaGF2ZSBpbmRpY2F0ZWQKKyAqIAl0aGUgSVBfUEFTU1NFQyBvcHRpb24gdmlhIGdldHNvY2tvcHQuICBJdCBjYW4gdGhlbiByZXRyaWV2ZSB0aGUKKyAqIAlzZWN1cml0eSBzdGF0ZSByZXR1cm5lZCBieSB0aGlzIGhvb2sgZm9yIGEgcGFja2V0IHZpYSB0aGUgU0NNX1NFQ1VSSVRZCisgKiAJYW5jaWxsYXJ5IG1lc3NhZ2UgdHlwZS4KKyAqIAlAc2tiIGlzIHRoZSBza2J1ZmYgZm9yIHRoZSBwYWNrZXQgYmVpbmcgcXVlcmllZAorICogCUBzZWNkYXRhIGlzIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBpbiB3aGljaCB0byBjb3B5IHRoZSBzZWN1cml0eSBkYXRhCisgKiAJQHNlY2xlbiBpcyB0aGUgbWF4aW11bSBsZW5ndGggZm9yIEBzZWNkYXRhCisgKiAJUmV0dXJuIDAgb24gc3VjY2VzcywgZXJyb3Igb24gZmFpbHVyZS4KICAqIEBza19hbGxvY19zZWN1cml0eToKICAqICAgICAgQWxsb2NhdGUgYW5kIGF0dGFjaCBhIHNlY3VyaXR5IHN0cnVjdHVyZSB0byB0aGUgc2stPnNrX3NlY3VyaXR5IGZpZWxkLAogICogICAgICB3aGljaCBpcyB1c2VkIHRvIGNvcHkgc2VjdXJpdHkgYXR0cmlidXRlcyBiZXR3ZWVuIGxvY2FsIHN0cmVhbSBzb2NrZXRzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXJkYS9pcnR0cC5oIGIvaW5jbHVkZS9uZXQvaXJkYS9pcnR0cC5oCmluZGV4IGNmODBjMWEuLjMyYzM4NWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lyZGEvaXJ0dHAuaAorKysgYi9pbmNsdWRlL25ldC9pcmRhL2lydHRwLmgKQEAgLTU2LDcgKzU2LDcgQEAKIAogLyogUmVjZWl2ZSBxdWV1ZSBzaXplcyAqLwogLyogTWluaW11bSBvZiBjcmVkaXQgdGhhdCB0aGUgcGVlciBzaG91bGQgaG9sZC4KLSAqIElmIHRoZSBwZWVyIGhhcyBsZXNzIGNyZWRpdHMgdGhhbiA5IGZyYW1lcywgd2Ugd2lsbCBleHBsaWNpdGVseSBzZW5kCisgKiBJZiB0aGUgcGVlciBoYXMgbGVzcyBjcmVkaXRzIHRoYW4gOSBmcmFtZXMsIHdlIHdpbGwgZXhwbGljaXRseSBzZW5kCiAgKiBoaW0gc29tZSBjcmVkaXRzICh0aHJvdWdoIGlydHRwX2dpdmVfY3JlZGl0KCkgYW5kIGEgc3BlY2lmaWMgZnJhbWUpLgogICogTm90ZSB0aGF0IHdoZW4gd2UgZ2l2ZSBjcmVkaXRzIGl0J3MgbGlrZWx5IHRoYXQgaXQgd29uJ3QgYmUgc2VudCBpbgogICogdGhpcyBMQVAgd2luZG93LCBidXQgaW4gdGhlIG5leHQgb25lLiBTbywgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIHBlZXIKQEAgLTY2LDcgKzY2LDcgQEAKIC8qIFRoaXMgaXMgdGhlIGRlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgY3JlZGl0cyBoZWxkIGJ5IHRoZSBwZWVyLCBzbyB0aGUKICAqIGRlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIGhlIGNhbiBzZW5kIHVzIGJlZm9yZSBuZWVkaW5nIGZsb3cKICAqIGNvbnRyb2wgYW5zd2VyIGZyb20gdXMgKHRoaXMgbWF5IGJlIG5lZ29jaWF0ZWQgZGlmZmVyZW50bHkgYXQgVFNBUCBzZXR1cCkuCi0gKiBXZSB3YW50IHRvIG1pbmltaXNlIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgaGF2ZSB0byBleHBsaWNpdGVseSBzZW5kIHNvbWUKKyAqIFdlIHdhbnQgdG8gbWluaW1pc2UgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgc2VuZCBzb21lCiAgKiBjcmVkaXQgdG8gdGhlIHBlZXIsIGhvcGluZyB3ZSBjYW4gcGlnZ3liYWNrIGl0IG9uIHRoZSByZXR1cm4gZGF0YS4gSW4KICAqIHBhcnRpY3VsYXIsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgdXMgdG8gc2VuZCBjcmVkaXQgbW9yZSB0aGFuIG9uY2UKICAqIHBlciBMQVAgd2luZG93LgpkaWZmIC0tZ2l0IGEvaW5pdC9tYWluLmMgYi9pbml0L21haW4uYwppbmRleCAwZGQwZTdhLi5mNjA1YTk2IDEwMDY0NAotLS0gYS9pbml0L21haW4uYworKysgYi9pbml0L21haW4uYwpAQCAtNzAsMTUgKzcwLDcgQEAKIC8qCiAgKiBUaGlzIGlzIG9uZSBvZiB0aGUgZmlyc3QgLmMgZmlsZXMgYnVpbHQuIEVycm9yIG91dCBlYXJseSBpZiB3ZSBoYXZlIGNvbXBpbGVyCiAgKiB0cm91YmxlLgotICoKLSAqIFZlcnNpb25zIG9mIGdjYyBvbGRlciB0aGFuIHRoYXQgbGlzdGVkIGJlbG93IG1heSBhY3R1YWxseSBjb21waWxlIGFuZCBsaW5rCi0gKiBva2F5LCBidXQgdGhlIGVuZCBwcm9kdWN0IGNhbiBoYXZlIHN1YnRsZSBydW4gdGltZSBidWdzLiAgVG8gYXZvaWQgYXNzb2NpYXRlZAotICogYm9ndXMgYnVnIHJlcG9ydHMsIHdlIGZsYXRseSByZWZ1c2UgdG8gY29tcGlsZSB3aXRoIGEgZ2NjIHRoYXQgaXMga25vd24gdG8gYmUKLSAqIHRvbyBvbGQgZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmcuCiAgKi8KLSNpZiAoX19HTlVDX18gPCAzKSB8fCAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA8IDIpCi0jZXJyb3IgU29ycnksIHlvdXIgR0NDIGlzIHRvbyBvbGQuIEl0IGJ1aWxkcyBpbmNvcnJlY3Qga2VybmVscy4KLSNlbmRpZgogCiAjaWYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA9PSAxICYmIF9fR05VQ19QQVRDSExFVkVMX18gPT0gMAogI3dhcm5pbmcgZ2NjLTQuMS4wIGlzIGtub3duIHRvIG1pc2NvbXBpbGUgdGhlIGtlcm5lbC4gIEEgZGlmZmVyZW50IGNvbXBpbGVyIHZlcnNpb24gaXMgcmVjb21tZW5kZWQuCkBAIC0yODgsNyArMjgwLDcgQEAKIAkJcmV0dXJuIDA7CiAKIAkvKgotCSAqIFByZWVtcHRpdmUgbWFpbnRlbmFuY2UgZm9yICJ3aHkgZGlkbid0IG15IG1pc3BlbGxlZCBjb21tYW5kCisJICogUHJlZW1wdGl2ZSBtYWludGVuYW5jZSBmb3IgIndoeSBkaWRuJ3QgbXkgbWlzc3BlbGxlZCBjb21tYW5kCiAJICogbGluZSB3b3JrPyIKIAkgKi8KIAlpZiAoc3RyY2hyKHBhcmFtLCAnLicpICYmICghdmFsIHx8IHN0cmNocihwYXJhbSwgJy4nKSA8IHZhbCkpIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9ocnRpbWVyLmMgYi9rZXJuZWwvaHJ0aW1lci5jCmluZGV4IGIyYjJjMmIuLmI2ZDJmZjcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9ocnRpbWVyLmMKKysrIGIva2VybmVsL2hydGltZXIuYwpAQCAtNDEyLDcgKzQxMiw3IEBACiAJLyoKIAkgKiBXaGVuIHRoZSBjYWxsYmFjayBpcyBydW5uaW5nLCB3ZSBkbyBub3QgcmVwcm9ncmFtIHRoZSBjbG9jayBldmVudAogCSAqIGRldmljZS4gVGhlIHRpbWVyIGNhbGxiYWNrIGlzIGVpdGhlciBydW5uaW5nIG9uIGEgZGlmZmVyZW50IENQVSBvcgotCSAqIHRoZSBjYWxsYmFjayBpcyBleGVjdXRlZCBpbiB0aGUgaHJ0aW1lcl9pbnRlcnVwdCBjb250ZXh0LiBUaGUKKwkgKiB0aGUgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgaW4gdGhlIGhydGltZXJfaW50ZXJydXB0IGNvbnRleHQuIFRoZQogCSAqIHJlcHJvZ3JhbW1pbmcgaXMgaGFuZGxlZCBlaXRoZXIgYnkgdGhlIHNvZnRpcnEsIHdoaWNoIGNhbGxlZCB0aGUKIAkgKiBjYWxsYmFjayBvciBhdCB0aGUgZW5kIG9mIHRoZSBocnRpbWVyX2ludGVycnVwdC4KIAkgKi8KQEAgLTYzOCw3ICs2MzgsNyBAQAogI2VuZGlmCiAKIC8qCi0gKiBDb3VudGVycGFydCB0byBsb2NrX3RpbWVyX2Jhc2UgYWJvdmU6CisgKiBDb3VudGVycGFydCB0byBsb2NrX2hydGltZXJfYmFzZSBhYm92ZToKICAqLwogc3RhdGljIGlubGluZQogdm9pZCB1bmxvY2tfaHJ0aW1lcl9iYXNlKGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lciwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpCmRpZmYgLS1naXQgYS9rZXJuZWwvcGFuaWMuYyBiL2tlcm5lbC9wYW5pYy5jCmluZGV4IDM4ODZiZDguLjZmNmUwM2UgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wYW5pYy5jCisrKyBiL2tlcm5lbC9wYW5pYy5jCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAqICAnRicgLSBNb2R1bGUgaGFzIGJlZW4gZm9yY2libHkgbG9hZGVkLgogICogICdTJyAtIFNNUCB3aXRoIENQVXMgbm90IGRlc2lnbmVkIGZvciBTTVAuCiAgKiAgJ1InIC0gVXNlciBmb3JjZWQgYSBtb2R1bGUgdW5sb2FkLgotICogICdNJyAtIE1hY2hpbmUgaGFkIGEgbWFjaGluZSBjaGVjayBleHBlcmllbmNlLgorICogICdNJyAtIFN5c3RlbSBleHBlcmllbmNlZCBhIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9uLgogICogICdCJyAtIFN5c3RlbSBoYXMgaGl0IGJhZF9wYWdlLgogICogICdVJyAtIFVzZXJzcGFjZS1kZWZpbmVkIG5hdWdodGluZXNzLgogICoKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9zbmFwc2hvdC5jIGIva2VybmVsL3Bvd2VyL3NuYXBzaG90LmMKaW5kZXggY2NjOTVhYy4uNzgwMzliNCAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL3NuYXBzaG90LmMKKysrIGIva2VybmVsL3Bvd2VyL3NuYXBzaG90LmMKQEAgLTEwMDUsMTEgKzEwMDUsMTIgQEAKIAl9CiAJbWVtb3J5X2JtX3Bvc2l0aW9uX3Jlc2V0KG9yaWdfYm0pOwogCW1lbW9yeV9ibV9wb3NpdGlvbl9yZXNldChjb3B5X2JtKTsKLQlkbyB7CisJZm9yKDs7KSB7CiAJCXBmbiA9IG1lbW9yeV9ibV9uZXh0X3BmbihvcmlnX2JtKTsKLQkJaWYgKGxpa2VseShwZm4gIT0gQk1fRU5EX09GX01BUCkpCi0JCQljb3B5X2RhdGFfcGFnZShtZW1vcnlfYm1fbmV4dF9wZm4oY29weV9ibSksIHBmbik7Ci0JfSB3aGlsZSAocGZuICE9IEJNX0VORF9PRl9NQVApOworCQlpZiAodW5saWtlbHkocGZuID09IEJNX0VORF9PRl9NQVApKQorCQkJYnJlYWs7CisJCWNvcHlfZGF0YV9wYWdlKG1lbW9yeV9ibV9uZXh0X3Bmbihjb3B5X2JtKSwgcGZuKTsKKwl9CiB9CiAKIC8qIFRvdGFsIG51bWJlciBvZiBpbWFnZSBwYWdlcyAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkLmMgYi9rZXJuZWwvc2NoZWQuYwppbmRleCBhZmU3NmVjLi43NTgxZTMzIDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWQuYworKysgYi9rZXJuZWwvc2NoZWQuYwpAQCAtMzMxMCw3ICszMzEwLDYgQEAKIC8qCiAgKiBBY2NvdW50IHVzZXIgY3B1IHRpbWUgdG8gYSBwcm9jZXNzLgogICogQHA6IHRoZSBwcm9jZXNzIHRoYXQgdGhlIGNwdSB0aW1lIGdldHMgYWNjb3VudGVkIHRvCi0gKiBAaGFyZGlycV9vZmZzZXQ6IHRoZSBvZmZzZXQgdG8gc3VidHJhY3QgZnJvbSBoYXJkaXJxX2NvdW50KCkKICAqIEBjcHV0aW1lOiB0aGUgY3B1IHRpbWUgc3BlbnQgaW4gdXNlciBzcGFjZSBzaW5jZSB0aGUgbGFzdCB1cGRhdGUKICAqLwogdm9pZCBhY2NvdW50X3VzZXJfdGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNwdXRpbWVfdCBjcHV0aW1lKQpAQCAtNTE0Niw3ICs1MTQ1LDcgQEAKIH0KIAogLyoKLSAqIEZpZ3VyZSBvdXQgd2hlcmUgdGFzayBvbiBkZWFkIENQVSBzaG91bGQgZ28sIHVzZSBmb3JjZSBpZiBuZWNjZXNzYXJ5LgorICogRmlndXJlIG91dCB3aGVyZSB0YXNrIG9uIGRlYWQgQ1BVIHNob3VsZCBnbywgdXNlIGZvcmNlIGlmIG5lY2Vzc2FyeS4KICAqIE5PVEU6IGludGVycnVwdHMgc2hvdWxkIGJlIGRpc2FibGVkIGJ5IHRoZSBjYWxsZXIKICAqLwogc3RhdGljIHZvaWQgbW92ZV90YXNrX29mZl9kZWFkX2NwdShpbnQgZGVhZF9jcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKQEAgLTU1MjUsNyArNTUyNCw3IEBACiAKIAljYXNlIENQVV9PTkxJTkU6CiAJY2FzZSBDUFVfT05MSU5FX0ZST1pFTjoKLQkJLyogU3RyaWN0bHkgdW5uZWNjZXNzYXJ5LCBhcyBmaXJzdCB1c2VyIHdpbGwgd2FrZSBpdC4gKi8KKwkJLyogU3RyaWN0bHkgdW5uZWNlc3NhcnksIGFzIGZpcnN0IHVzZXIgd2lsbCB3YWtlIGl0LiAqLwogCQl3YWtlX3VwX3Byb2Nlc3MoY3B1X3JxKGNwdSktPm1pZ3JhdGlvbl90aHJlYWQpOwogCQlicmVhazsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3Rhc2tzdGF0cy5jIGIva2VybmVsL3Rhc2tzdGF0cy5jCmluZGV4IDlmMzYwZjYuLjM1NGU3NGIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90YXNrc3RhdHMuYworKysgYi9rZXJuZWwvdGFza3N0YXRzLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCiAJc3RhdHMtPnZlcnNpb24gPSBUQVNLU1RBVFNfVkVSU0lPTjsKIAkvKgotCSAqIEFjY291bnRpbmcgc3Vic3l0ZW1zIGNhbiBhbHNvIGFkZCBjYWxscyBoZXJlIHRvIG1vZGlmeQorCSAqIEFjY291bnRpbmcgc3Vic3lzdGVtcyBjYW4gYWxzbyBhZGQgY2FsbHMgaGVyZSB0byBtb2RpZnkKIAkgKiBmaWVsZHMgb2YgdGFza3N0YXRzLgogCSAqLwogCXJldHVybiByYzsKZGlmZiAtLWdpdCBhL2xpYi9hcmd2X3NwbGl0LmMgYi9saWIvYXJndl9zcGxpdC5jCmluZGV4IGZhZDZjZTQuLjUyMDVhOGQgMTAwNjQ0Ci0tLSBhL2xpYi9hcmd2X3NwbGl0LmMKKysrIGIvbGliL2FyZ3Zfc3BsaXQuYwpAQCAtNCw3ICs0LDggQEAKIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+Ci0jaW5jbHVkZSA8bGludXgvYnVnLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogCiBzdGF0aWMgY29uc3QgY2hhciAqc2tpcF9zZXAoY29uc3QgY2hhciAqY3ApCiB7CmRpZmYgLS1naXQgYS9saWIva2VybmVsX2xvY2suYyBiL2xpYi9rZXJuZWxfbG9jay5jCmluZGV4IGUwZmRmZGQuLmY3M2UyZjggMTAwNjQ0Ci0tLSBhL2xpYi9rZXJuZWxfbG9jay5jCisrKyBiL2xpYi9rZXJuZWxfbG9jay5jCkBAIC0yLDcgKzIsNyBAQAogICogbGliL2tlcm5lbF9sb2NrLmMKICAqCiAgKiBUaGlzIGlzIHRoZSB0cmFkaXRpb25hbCBCS0wgLSBiaWcga2VybmVsIGxvY2suIExhcmdlbHkKLSAqIHJlbGVnYXRlZCB0byBvYnNvbGVzY2Vuc2UsIGJ1dCB1c2VkIGJ5IHZhcmlvdXMgbGVzcworICogcmVsZWdhdGVkIHRvIG9ic29sZXNjZW5jZSwgYnV0IHVzZWQgYnkgdmFyaW91cyBsZXNzCiAgKiBpbXBvcnRhbnQgKG9yIGxhenkpIHN1YnN5c3RlbXMuCiAgKi8KICNpbmNsdWRlIDxsaW51eC9zbXBfbG9jay5oPgpkaWZmIC0tZ2l0IGEvbGliL2tvYmplY3RfdWV2ZW50LmMgYi9saWIva29iamVjdF91ZXZlbnQuYwppbmRleCAyZTRlYWU1Li41ODg2MTQ3IDEwMDY0NAotLS0gYS9saWIva29iamVjdF91ZXZlbnQuYworKysgYi9saWIva29iamVjdF91ZXZlbnQuYwpAQCAtMTI2LDcgKzEyNiw3IEBACiAJZWxzZQogCQlzdWJzeXN0ZW0gPSBrb2JqZWN0X25hbWUoJmtzZXQtPmtvYmopOwogCWlmICghc3Vic3lzdGVtKSB7Ci0JCXByX2RlYnVnKCJ1bnNldCBzdWJzeXRlbSBjYXVzZWQgdGhlIGV2ZW50IHRvIGRyb3AhXG4iKTsKKwkJcHJfZGVidWcoInVuc2V0IHN1YnN5c3RlbSBjYXVzZWQgdGhlIGV2ZW50IHRvIGRyb3AhXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQogCmRpZmYgLS1naXQgYS9tbS9LY29uZmlnIGIvbW0vS2NvbmZpZwppbmRleCBiMWYwM2IwLi5jMDcwZWMwIDEwMDY0NAotLS0gYS9tbS9LY29uZmlnCisrKyBiL21tL0tjb25maWcKQEAgLTM3LDcgKzM3LDcgQEAKIAkgIGluIHRoZWlyIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2VzLCBhbmQgdGhpcyBvcHRpb24gcHJvdmlkZXMKIAkgIG1vcmUgZWZmaWNpZW50IGhhbmRsaW5nIG9mIHRoZXNlIGhvbGVzLiAgSG93ZXZlciwgdGhlIHZhc3QKIAkgIG1ham9yaXR5IG9mIGhhcmR3YXJlIGhhcyBxdWl0ZSBmbGF0IGFkZHJlc3Mgc3BhY2VzLCBhbmQKLQkgIGNhbiBoYXZlIGRlZ3JhZGVkIHBlcmZvcm1hbmNlIGZyb20gZXh0cmEgb3ZlcmhlYWQgdGhhdAorCSAgY2FuIGhhdmUgZGVncmFkZWQgcGVyZm9ybWFuY2UgZnJvbSB0aGUgZXh0cmEgb3ZlcmhlYWQgdGhhdAogCSAgdGhpcyBvcHRpb24gaW1wb3Nlcy4KIAogCSAgTWFueSBOVU1BIGNvbmZpZ3VyYXRpb25zIHdpbGwgaGF2ZSB0aGlzIGFzIHRoZSBvbmx5IG9wdGlvbi4KZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCAwMzQ2MTdmLi44YjgwOWVjIDEwMDY0NAotLS0gYS9tbS9odWdldGxiLmMKKysrIGIvbW0vaHVnZXRsYi5jCkBAIC0xMDE3LDcgKzEwMTcsNyBAQAogCiAJLyogSWYgd2UgYXJlIGJlbG93IHRoZSBjdXJyZW50IHJlZ2lvbiB0aGVuIGEgbmV3IHJlZ2lvbiBpcyByZXF1aXJlZC4KIAkgKiBTdWJ0bGUsIGFsbG9jYXRlIGEgbmV3IHJlZ2lvbiBhdCB0aGUgcG9zaXRpb24gYnV0IG1ha2UgaXQgemVybwotCSAqIHNpemUgc3VjaCB0aGF0IHdlIGNhbiBndWFyZW50ZWUgdG8gcmVjb3JkIHRoZSByZXNlcnZhdGlvbi4gKi8KKwkgKiBzaXplIHN1Y2ggdGhhdCB3ZSBjYW4gZ3VhcmFudGVlIHRvIHJlY29yZCB0aGUgcmVzZXJ2YXRpb24uICovCiAJaWYgKCZyZy0+bGluayA9PSBoZWFkIHx8IHQgPCByZy0+ZnJvbSkgewogCQlucmcgPSBrbWFsbG9jKHNpemVvZigqbnJnKSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghbnJnKQpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnkuYwppbmRleCAxNDI2ODNkLi5lZWZkNWI2IDEwMDY0NAotLS0gYS9tbS9tZW1vcnkuYworKysgYi9tbS9tZW1vcnkuYwpAQCAtMjcxMyw3ICsyNzEzLDcgQEAKIAkJcmV0dXJuIDA7CiAKIAlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0JLyogaWdub3JlIGVycm9ycywganVzdCBjaGVjayBob3cgbXVjaCB3YXMgc3VjZXNzZnVsbHkgdHJhbnNmZXJlZCAqLworCS8qIGlnbm9yZSBlcnJvcnMsIGp1c3QgY2hlY2sgaG93IG11Y2ggd2FzIHN1Y2Nlc3NmdWxseSB0cmFuc2ZlcnJlZCAqLwogCXdoaWxlIChsZW4pIHsKIAkJaW50IGJ5dGVzLCByZXQsIG9mZnNldDsKIAkJdm9pZCAqbWFkZHI7CmRpZmYgLS1naXQgYS9tbS9tZW1vcnlfaG90cGx1Zy5jIGIvbW0vbWVtb3J5X2hvdHBsdWcuYwppbmRleCAwOTFiOWM2Li4xODMzODc5IDEwMDY0NAotLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jCisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmMKQEAgLTEyMSw3ICsxMjEsNyBAQAogCQllcnIgPSBfX2FkZF9zZWN0aW9uKHpvbmUsIGkgPDwgUEZOX1NFQ1RJT05fU0hJRlQpOwogCiAJCS8qCi0JCSAqIEVFWElTVCBpcyBmaW5hbGx5IGRlYWxlZCB3aXRoIGJ5IGlvcmVzb3VyY2UgY29sbGlzaW9uCisJCSAqIEVFWElTVCBpcyBmaW5hbGx5IGRlYWx0IHdpdGggYnkgaW9yZXNvdXJjZSBjb2xsaXNpb24KIAkJICogY2hlY2suIHNlZSBhZGRfbWVtb3J5KCkgPT4gcmVnaXN0ZXJfbWVtb3J5X3Jlc291cmNlKCkKIAkJICogV2FybmluZyB3aWxsIGJlIHByaW50ZWQgaWYgdGhlcmUgaXMgY29sbGlzaW9uLgogCQkgKi8KZGlmZiAtLWdpdCBhL21tL21lbXBvb2wuYyBiL21tL21lbXBvb2wuYwppbmRleCAwMmQ1ZWMzLi5hNDZlYjFiIDEwMDY0NAotLS0gYS9tbS9tZW1wb29sLmMKKysrIGIvbW0vbWVtcG9vbC5jCkBAIC0yOTksNyArMjk5LDcgQEAKIAogLyoKICAqIEEgY29tbW9ubHkgdXNlZCBhbGxvYyBhbmQgZnJlZSBmbiB0aGF0IGttYWxsb2Mva2ZyZWVzIHRoZSBhbW91bnQgb2YgbWVtb3J5Ci0gKiBzcGVjZmllZCBieSBwb29sX2RhdGEKKyAqIHNwZWNpZmllZCBieSBwb29sX2RhdGEKICAqLwogdm9pZCAqbWVtcG9vbF9rbWFsbG9jKGdmcF90IGdmcF9tYXNrLCB2b2lkICpwb29sX2RhdGEpCiB7CmRpZmYgLS1naXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmMKaW5kZXggNGQ2ZWUwMy4uNmEyMDdlOCAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZS5jCisrKyBiL21tL21pZ3JhdGUuYwpAQCAtNzA2LDcgKzcwNiw3IEBACiAgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyBhZnRlciAxMCBhdHRlbXB0cyBvciBpZiBubyBwYWdlcwogICogYXJlIG1vdmFibGUgYW55bW9yZSBiZWNhdXNlIHRvIGhhcyBiZWNvbWUgZW1wdHkKICAqIG9yIG5vIHJldHJ5YWJsZSBwYWdlcyBleGlzdCBhbnltb3JlLiBBbGwgcGFnZXMgd2lsbCBiZQotICogcmV0cnVuZWQgdG8gdGhlIExSVSBvciBmcmVlZC4KKyAqIHJldHVybmVkIHRvIHRoZSBMUlUgb3IgZnJlZWQuCiAgKgogICogUmV0dXJuOiBOdW1iZXIgb2YgcGFnZXMgbm90IG1pZ3JhdGVkIG9yIGVycm9yIGNvZGUuCiAgKi8KZGlmZiAtLWdpdCBhL21tL25vbW11LmMgYi9tbS9ub21tdS5jCmluZGV4IDQyZmI4NGUuLjhmMDkzMzMgMTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKKysrIGIvbW0vbm9tbXUuYwpAQCAtMTc1LDcgKzE3NSw4IEBACiB2b2lkICpfX3ZtYWxsb2ModW5zaWduZWQgbG9uZyBzaXplLCBnZnBfdCBnZnBfbWFzaywgcGdwcm90X3QgcHJvdCkKIHsKIAkvKgotCSAqIGttYWxsb2MgZG9lc24ndCBsaWtlIF9fR0ZQX0hJR0hNRU0gZm9yIHNvbWUgcmVhc29uCisJICogIFlvdSBjYW4ndCBzcGVjaWZ5IF9fR0ZQX0hJR0hNRU0gd2l0aCBrbWFsbG9jKCkgc2luY2Uga21hbGxvYygpCisJICogcmV0dXJucyBvbmx5IGEgbG9naWNhbCBhZGRyZXNzLgogCSAqLwogCXJldHVybiBrbWFsbG9jKHNpemUsIChnZnBfbWFzayB8IF9fR0ZQX0NPTVApICYgfl9fR0ZQX0hJR0hNRU0pOwogfQpkaWZmIC0tZ2l0IGEvbW0vcGFnZS13cml0ZWJhY2suYyBiL21tL3BhZ2Utd3JpdGViYWNrLmMKaW5kZXggNzg0NTQ2Mi4uODM4YTVlMyAxMDA2NDQKLS0tIGEvbW0vcGFnZS13cml0ZWJhY2suYworKysgYi9tbS9wYWdlLXdyaXRlYmFjay5jCkBAIC05ODksNyArOTg5LDcgQEAKICAqIG1hcHBpbmcgaXMgcGlubmVkIGJ5IHRoZSB2bWEncyAtPnZtX2ZpbGUgcmVmZXJlbmNlLgogICoKICAqIFdlIHRha2UgY2FyZSB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHBhZ2Ugd2FzIHRydW5jYXRlZCBmcm9tIHRoZQotICogbWFwcGluZyBieSByZS1jaGVja2luZyBwYWdlX21hcHBpbmcoKSBpbnNvZGUgdHJlZV9sb2NrLgorICogbWFwcGluZyBieSByZS1jaGVja2luZyBwYWdlX21hcHBpbmcoKSBpbnNpZGUgdHJlZV9sb2NrLgogICovCiBpbnQgX19zZXRfcGFnZV9kaXJ0eV9ub2J1ZmZlcnMoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7CmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmMKaW5kZXggNDNmNzU3Zi4uZGE2OWQ4MyAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxvYy5jCisrKyBiL21tL3BhZ2VfYWxsb2MuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiAKICNpZmRlZiBDT05GSUdfQVJDSF9QT1BVTEFURVNfTk9ERV9NQVAKICAgLyoKLSAgICogTUFYX0FDVElWRV9SRUdJT05TIGRldGVybWluZXMgdGhlIG1heG1pbXVtIG51bWJlciBvZiBkaXN0aW5jdAorICAgKiBNQVhfQUNUSVZFX1JFR0lPTlMgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlzdGluY3QKICAgICogcmFuZ2VzIG9mIG1lbW9yeSAoUkFNKSB0aGF0IG1heSBiZSByZWdpc3RlcmVkIHdpdGggYWRkX2FjdGl2ZV9yYW5nZSgpLgogICAgKiBSYW5nZXMgcGFzc2VkIHRvIGFkZF9hY3RpdmVfcmFuZ2UoKSB3aWxsIGJlIG1lcmdlZCBpZiBwb3NzaWJsZQogICAgKiBzbyB0aGUgbnVtYmVyIG9mIHRpbWVzIGFkZF9hY3RpdmVfcmFuZ2UoKSBjYW4gYmUgY2FsbGVkIGlzCkBAIC0xMjYwLDcgKzEyNjAsNyBAQAogICogc2tpcCBvdmVyIHpvbmVzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGJ5IHRoZSBjcHVzZXQsIG9yIHRoYXQgaGF2ZQogICogYmVlbiByZWNlbnRseSAoaW4gbGFzdCBzZWNvbmQpIGZvdW5kIHRvIGJlIG5lYXJseSBmdWxsLiAgU2VlIGZ1cnRoZXIKICAqIGNvbW1lbnRzIGluIG1tem9uZS5oLiAgUmVkdWNlcyBjYWNoZSBmb290cHJpbnQgb2Ygem9uZWxpc3Qgc2NhbnMKLSAqIHRoYXQgaGF2ZSB0byBza2lwIG92ZXIgYWxvdCBvZiBmdWxsIG9yIHVuYWxsb3dlZCB6b25lcy4KKyAqIHRoYXQgaGF2ZSB0byBza2lwIG92ZXIgYSBsb3Qgb2YgZnVsbCBvciB1bmFsbG93ZWQgem9uZXMuCiAgKgogICogSWYgdGhlIHpvbmVsaXN0IGNhY2hlIGlzIHByZXNlbnQgaW4gdGhlIHBhc3NlZCBpbiB6b25lbGlzdCwgdGhlbgogICogcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG93ZWQgbm9kZSBtYXNrIChlaXRoZXIgdGhlIGN1cnJlbnQKQEAgLTIzNTgsNyArMjM1OCw3IEBACiAJCV9fYnVpbGRfYWxsX3pvbmVsaXN0cyhOVUxMKTsKIAkJY3B1c2V0X2luaXRfY3VycmVudF9tZW1zX2FsbG93ZWQoKTsKIAl9IGVsc2UgewotCQkvKiB3ZSBoYXZlIHRvIHN0b3AgYWxsIGNwdXMgdG8gZ3VhcmFubnRlZSB0aGVyZSBpcyBubyB1c2VyCisJCS8qIHdlIGhhdmUgdG8gc3RvcCBhbGwgY3B1cyB0byBndWFyYW50ZWUgdGhlcmUgaXMgbm8gdXNlcgogCQkgICBvZiB6b25lbGlzdCAqLwogCQlzdG9wX21hY2hpbmVfcnVuKF9fYnVpbGRfYWxsX3pvbmVsaXN0cywgTlVMTCwgTlJfQ1BVUyk7CiAJCS8qIGNwdXNldCByZWZyZXNoIHJvdXRpbmUgc2hvdWxkIGJlIGhlcmUgKi8KQEAgLTI4NjQsNyArMjg2NCw3IEBACiAKIC8qCiAgKiBCYXNpYyBpdGVyYXRvciBzdXBwb3J0LiBSZXR1cm4gdGhlIG5leHQgYWN0aXZlIHJhbmdlIG9mIFBGTnMgZm9yIGEgbm9kZQotICogTm90ZTogbmlkID09IE1BWF9OVU1OT0RFUyByZXR1cm5zIG5leHQgcmVnaW9uIHJlZ2FyZGxlcyBvZiBub2RlCisgKiBOb3RlOiBuaWQgPT0gTUFYX05VTU5PREVTIHJldHVybnMgbmV4dCByZWdpb24gcmVnYXJkbGVzcyBvZiBub2RlCiAgKi8KIHN0YXRpYyBpbnQgX19tZW1pbml0IG5leHRfYWN0aXZlX3JlZ2lvbl9pbmRleF9pbl9uaWQoaW50IGluZGV4LCBpbnQgbmlkKQogewpkaWZmIC0tZ2l0IGEvbW0vcHJpb190cmVlLmMgYi9tbS9wcmlvX3RyZWUuYwppbmRleCBiNGU3NmMyLi42MDNhZTk4IDEwMDY0NAotLS0gYS9tbS9wcmlvX3RyZWUuYworKysgYi9tbS9wcmlvX3RyZWUuYwpAQCAtMzQsNyArMzQsNyBAQAogICogUmFkaXggcHJpb3JpdHkgc2VhcmNoIHRyZWUgZm9yIGFkZHJlc3Nfc3BhY2UtPmlfbW1hcAogICoKICAqIEZvciBlYWNoIHZtYSB0aGF0IG1hcCBhIHVuaXF1ZSBzZXQgb2YgZmlsZSBwYWdlcyBpLmUuLCB1bmlxdWUgW3JhZGl4X2luZGV4LAotICogaGVhcF9pbmRleF0gdmFsdWUsIHdlIGhhdmUgYSBjb3JyZXNwb25pbmcgcHJpb3JpdHkgc2VhcmNoIHRyZWUgbm9kZS4gSWYKKyAqIGhlYXBfaW5kZXhdIHZhbHVlLCB3ZSBoYXZlIGEgY29ycmVzcG9uZGluZyBwcmlvcml0eSBzZWFyY2ggdHJlZSBub2RlLiBJZgogICogbXVsdGlwbGUgdm1hcyBoYXZlIGlkZW50aWNhbCBbcmFkaXhfaW5kZXgsIGhlYXBfaW5kZXhdIHZhbHVlLCB0aGVuIG9uZSBvZgogICogdGhlbSBpcyB1c2VkIGFzIGEgdHJlZSBub2RlIGFuZCBvdGhlcnMgYXJlIHN0b3JlZCBpbiBhIHZtX3NldCBsaXN0LiBUaGUgdHJlZQogICogbm9kZSBwb2ludHMgdG8gdGhlIGZpcnN0IHZtYSAoaGVhZCkgb2YgdGhlIGxpc3QgdXNpbmcgdm1fc2V0LmhlYWQuCmRpZmYgLS1naXQgYS9tbS9zbGFiLmMgYi9tbS9zbGFiLmMKaW5kZXggNTRlYjU1NS4uY2ZhNmJlNCAxMDA2NDQKLS0tIGEvbW0vc2xhYi5jCisrKyBiL21tL3NsYWIuYwpAQCAtMjYsNyArMjYsNyBAQAogICogaW5pdGlhbGl6ZWQgb2JqZWN0cy4KICAqCiAgKiBUaGlzIG1lYW5zLCB0aGF0IHlvdXIgY29uc3RydWN0b3IgaXMgdXNlZCBvbmx5IGZvciBuZXdseSBhbGxvY2F0ZWQKLSAqIHNsYWJzIGFuZCB5b3UgbXVzdCBwYXNzIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBpbnRpYWxpemF0aW9ucyB0bworICogc2xhYnMgYW5kIHlvdSBtdXN0IHBhc3Mgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGluaXRpYWxpemF0aW9ucyB0bwogICoga21lbV9jYWNoZV9mcmVlLgogICoKICAqIEVhY2ggY2FjaGUgY2FuIG9ubHkgc3VwcG9ydCBvbmUgbWVtb3J5IHR5cGUgKEdGUF9ETUEsIEdGUF9ISUdITUVNLApAQCAtMTM2OSw3ICsxMzY5LDcgQEAKIAkJICogc3RydWN0dXJlIGlzIHVzdWFsbHkgYWxsb2NhdGVkIGZyb20ga21lbV9jYWNoZV9jcmVhdGUoKSBhbmQKIAkJICogZ2V0cyBkZXN0cm95ZWQgYXQga21lbV9jYWNoZV9kZXN0cm95KCkuCiAJCSAqLwotCQkvKiBmYWxsIHRocnUgKi8KKwkJLyogZmFsbCB0aHJvdWdoICovCiAjZW5kaWYKIAljYXNlIENQVV9VUF9DQU5DRUxFRDoKIAljYXNlIENQVV9VUF9DQU5DRUxFRF9GUk9aRU46CkBAIC0zODA2LDcgKzM4MDYsNyBAQAogRVhQT1JUX1NZTUJPTF9HUEwoa21lbV9jYWNoZV9uYW1lKTsKIAogLyoKLSAqIFRoaXMgaW5pdGlhbGl6ZXMga21lbV9saXN0MyBvciByZXNpemVzIHZhcmlvaXVzIGNhY2hlcyBmb3IgYWxsIG5vZGVzLgorICogVGhpcyBpbml0aWFsaXplcyBrbWVtX2xpc3QzIG9yIHJlc2l6ZXMgdmFyaW91cyBjYWNoZXMgZm9yIGFsbCBub2Rlcy4KICAqLwogc3RhdGljIGludCBhbGxvY19rbWVtbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwKQogewpkaWZmIC0tZ2l0IGEvbW0vc3dhcC5jIGIvbW0vc3dhcC5jCmluZGV4IGE2NWVmZjguLjlhYzg4MzIgMTAwNjQ0Ci0tLSBhL21tL3N3YXAuYworKysgYi9tbS9zd2FwLmMKQEAgLTUsNyArNSw3IEBACiAgKi8KIAogLyoKLSAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBvcGVyZWF0aW9uIG9mIHRoZQorICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIG9wZXJhdGlvbiBvZiB0aGUKICAqIExpbnV4IFZNIHN1YnN5c3RlbS4gRmluZS10dW5pbmcgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaW4KICAqIERvY3VtZW50YXRpb24vc3lzY3RsL3ZtLnR4dC4KICAqIFN0YXJ0ZWQgMTguMTIuOTEKZGlmZiAtLWdpdCBhL21tL3ZtYWxsb2MuYyBiL21tL3ZtYWxsb2MuYwppbmRleCAyZTAxYWYzLi5hZjc3ZTE3IDEwMDY0NAotLS0gYS9tbS92bWFsbG9jLmMKKysrIGIvbW0vdm1hbGxvYy5jCkBAIC0yNDcsNyArMjQ3LDcgQEAKIEVYUE9SVF9TWU1CT0xfR1BMKF9fZ2V0X3ZtX2FyZWEpOwogCiAvKioKLSAqCWdldF92bV9hcmVhICAtICByZXNlcnZlIGEgY29udGluZ291cyBrZXJuZWwgdmlydHVhbCBhcmVhCisgKglnZXRfdm1fYXJlYSAgLSAgcmVzZXJ2ZSBhIGNvbnRpZ3VvdXMga2VybmVsIHZpcnR1YWwgYXJlYQogICoJQHNpemU6CQlzaXplIG9mIHRoZSBhcmVhCiAgKglAZmxhZ3M6CQklVk1fSU9SRU1BUCBmb3IgSS9PIG1hcHBpbmdzIG9yIFZNX0FMTE9DCiAgKgpAQCAtMzAzLDcgKzMwMyw3IEBACiB9CiAKIC8qKgotICoJcmVtb3ZlX3ZtX2FyZWEgIC0gIGZpbmQgYW5kIHJlbW92ZSBhIGNvbnRpbmdvdXMga2VybmVsIHZpcnR1YWwgYXJlYQorICoJcmVtb3ZlX3ZtX2FyZWEgIC0gIGZpbmQgYW5kIHJlbW92ZSBhIGNvbnRpbnVvdXMga2VybmVsIHZpcnR1YWwgYXJlYQogICoJQGFkZHI6CQliYXNlIGFkZHJlc3MKICAqCiAgKglTZWFyY2ggZm9yIHRoZSBrZXJuZWwgVk0gYXJlYSBzdGFydGluZyBhdCBAYWRkciwgYW5kIHJlbW92ZSBpdC4KQEAgLTM2NCw3ICszNjQsNyBAQAogICoJdmZyZWUgIC0gIHJlbGVhc2UgbWVtb3J5IGFsbG9jYXRlZCBieSB2bWFsbG9jKCkKICAqCUBhZGRyOgkJbWVtb3J5IGJhc2UgYWRkcmVzcwogICoKLSAqCUZyZWUgdGhlIHZpcnR1YWxseSBjb250aWd1b3VzIG1lbW9yeSBhcmVhIHN0YXJ0aW5nIGF0IEBhZGRyLCBhcworICoJRnJlZSB0aGUgdmlydHVhbGx5IGNvbnRpbnVvdXMgbWVtb3J5IGFyZWEgc3RhcnRpbmcgYXQgQGFkZHIsIGFzCiAgKglvYnRhaW5lZCBmcm9tIHZtYWxsb2MoKSwgdm1hbGxvY18zMigpIG9yIF9fdm1hbGxvYygpLiBJZiBAYWRkciBpcwogICoJTlVMTCwgbm8gb3BlcmF0aW9uIGlzIHBlcmZvcm1lZC4KICAqCmRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jCmluZGV4IGNiNDc0Y2MuLmU1YTk1OTcgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC0xNDEsNyArMTQxLDcgQEAKICAqIHBlcmNlbnRhZ2VzIG9mIHRoZSBscnUgYW5kIGFnZWFibGUgY2FjaGVzLiAgVGhpcyBzaG91bGQgYmFsYW5jZSB0aGUgc2Vla3MKICAqIGdlbmVyYXRlZCBieSB0aGVzZSBzdHJ1Y3R1cmVzLgogICoKLSAqIElmIHRoZSB2bSBlbmNvdW50ZWQgbWFwcGVkIHBhZ2VzIG9uIHRoZSBMUlUgaXQgaW5jcmVhc2UgdGhlIHByZXNzdXJlIG9uCisgKiBJZiB0aGUgdm0gZW5jb3VudGVyZWQgbWFwcGVkIHBhZ2VzIG9uIHRoZSBMUlUgaXQgaW5jcmVhc2UgdGhlIHByZXNzdXJlIG9uCiAgKiBzbGFiIHRvIGF2b2lkIHN3YXBwaW5nLgogICoKICAqIFdlIGRvIHdlaXJkIHRoaW5ncyB0byBhdm9pZCAoc2Nhbm5lZCpzZWVrcyplbnRyaWVzKSBvdmVyZmxvd2luZyAzMiBiaXRzLgpkaWZmIC0tZ2l0IGEvbmV0LzlwL0tjb25maWcgYi9uZXQvOXAvS2NvbmZpZwppbmRleCBlZWNiZjEyLi43MWJjMTEwIDEwMDY0NAotLS0gYS9uZXQvOXAvS2NvbmZpZworKysgYi9uZXQvOXAvS2NvbmZpZwpAQCAtMjcsNSArMjcsNSBAQAogCWJvb2wgIkRlYnVnIGluZm9ybWF0aW9uIgogCWRlcGVuZHMgb24gTkVUXzlQCiAJaGVscAotCSAgU2F5IFkgaWYgeW91IHdhbnQgdGhlIDlQIHN1YnNpc3RlbSB0byBsb2cgZGVidWcgaW5mb3JtYXRpb24uCisJICBTYXkgWSBpZiB5b3Ugd2FudCB0aGUgOVAgc3Vic3lzdGVtIHRvIGxvZyBkZWJ1ZyBpbmZvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvbmV0L2F4MjUvYXgyNV9kc19pbi5jIGIvbmV0L2F4MjUvYXgyNV9kc19pbi5jCmluZGV4IGUzN2QyMTcuLjgyNzNiMTIgMTAwNjQ0Ci0tLSBhL25ldC9heDI1L2F4MjVfZHNfaW4uYworKysgYi9uZXQvYXgyNS9heDI1X2RzX2luLmMKQEAgLTc1LDcgKzc1LDcgQEAKIAkJfQogCQlheDI1X2RhbWFfb24oYXgyNSk7CiAKLQkJLyogYWNjb3JkaW5nIHRvIERLNEVHtHMgc3BlYyB3ZSBhcmUgcmVxdWlyZWQgdG8KKwkJLyogYWNjb3JkaW5nIHRvIERLNEVHJ3Mgc3BlYyB3ZSBhcmUgcmVxdWlyZWQgdG8KIAkJICogc2VuZCBhIFJSIFJFU1BPTlNFIEZJTkFMIE5SPTAuCiAJCSAqLwogCmRpZmYgLS1naXQgYS9uZXQvYXgyNS9heDI1X2RzX3N1YnIuYyBiL25ldC9heDI1L2F4MjVfZHNfc3Vici5jCmluZGV4IGE0OTc3M2YuLmI1ZTU5NzggMTAwNjQ0Ci0tLSBhL25ldC9heDI1L2F4MjVfZHNfc3Vici5jCisrKyBiL25ldC9heDI1L2F4MjVfZHNfc3Vici5jCkBAIC00MSw3ICs0MSw3IEBACiAJYXgyNV9jYiAqYXgyNW87CiAJc3RydWN0IGhsaXN0X25vZGUgKm5vZGU7CiAKLQkvKiBQbGVhc2Ugbm90ZSB0aGF0IG5laXRoZXIgREs0RUe0cyBub3IgREcyRkVGtHMKKwkvKiBQbGVhc2Ugbm90ZSB0aGF0IG5laXRoZXIgREs0RUcncyBub3IgREcyRkVGJ3MKIAkgKiBEQU1BIHNwZWMgbWVudGlvbiB0aGUgZm9sbG93aW5nIGJlaGF2aW91ciBhcyBzZWVuCiAJICogd2l0aCBUaGVGaXJtd2FyZToKIAkgKgpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9ibmVwL2NvcmUuYyBiL25ldC9ibHVldG9vdGgvYm5lcC9jb3JlLmMKaW5kZXggMWY3OGMzZS4uMzQ3ZTkzNSAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9ibmVwL2NvcmUuYworKysgYi9uZXQvYmx1ZXRvb3RoL2JuZXAvY29yZS5jCkBAIC0yLDcgKzIsNyBAQAogICAgQk5FUCBpbXBsZW1lbnRhdGlvbiBmb3IgTGludXggQmx1ZXRvb3RoIHN0YWNrIChCbHVlWikuCiAgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBJbnZlbnRlbCBTeXN0ZW1lcwogICAgV3JpdHRlbiAyMDAxLTIwMDIgYnkKLQlDbOltZW50IE1vcmVhdSA8Y2xlbWVudC5tb3JlYXVAaW52ZW50ZWwuZnI+CisJQ2zDqW1lbnQgTW9yZWF1IDxjbGVtZW50Lm1vcmVhdUBpbnZlbnRlbC5mcj4KIAlEYXZpZCBMaWJhdWx0ICA8ZGF2aWQubGliYXVsdEBpbnZlbnRlbC5mcj4KIAogICAgQ29weXJpZ2h0IChDKSAyMDAyIE1heGltIEtyYXNueWFuc2t5IDxtYXhrQHF1YWxjb21tLmNvbT4KZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvYm5lcC9uZXRkZXYuYyBiL25ldC9ibHVldG9vdGgvYm5lcC9uZXRkZXYuYwppbmRleCA5MDkyODE2Li45NWUzODM3IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2JuZXAvbmV0ZGV2LmMKKysrIGIvbmV0L2JsdWV0b290aC9ibmVwL25ldGRldi5jCkBAIC0yLDcgKzIsNyBAQAogICAgQk5FUCBpbXBsZW1lbnRhdGlvbiBmb3IgTGludXggQmx1ZXRvb3RoIHN0YWNrIChCbHVlWikuCiAgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBJbnZlbnRlbCBTeXN0ZW1lcwogICAgV3JpdHRlbiAyMDAxLTIwMDIgYnkKLQlDbOltZW50IE1vcmVhdSA8Y2xlbWVudC5tb3JlYXVAaW52ZW50ZWwuZnI+CisJQ2zDqW1lbnQgTW9yZWF1IDxjbGVtZW50Lm1vcmVhdUBpbnZlbnRlbC5mcj4KIAlEYXZpZCBMaWJhdWx0ICA8ZGF2aWQubGliYXVsdEBpbnZlbnRlbC5mcj4KIAogICAgQ29weXJpZ2h0IChDKSAyMDAyIE1heGltIEtyYXNueWFuc2t5IDxtYXhrQHF1YWxjb21tLmNvbT4KZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL2VidGFibGVzLmMgYi9uZXQvYnJpZGdlL25ldGZpbHRlci9lYnRhYmxlcy5jCmluZGV4IGQ1YTA5ZWEuLjgxNzE2OWUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvbmV0ZmlsdGVyL2VidGFibGVzLmMKKysrIGIvbmV0L2JyaWRnZS9uZXRmaWx0ZXIvZWJ0YWJsZXMuYwpAQCAtODcxLDcgKzg3MSw3IEBACiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiAKLQkvKiB3ZSBub3cga25vdyB0aGUgZm9sbG93aW5nIChhbG9uZyB3aXRoIEU9bWOyKToKKwkvKiB3ZSBub3cga25vdyB0aGUgZm9sbG93aW5nIChhbG9uZyB3aXRoIEU9bWPCsik6CiAJICAgLSB0aGUgbnIgb2YgZW50cmllcyBpbiBlYWNoIGNoYWluIGlzIHJpZ2h0CiAJICAgLSB0aGUgc2l6ZSBvZiB0aGUgYWxsb2NhdGVkIHNwYWNlIGlzIHJpZ2h0CiAJICAgLSBhbGwgdmFsaWQgaG9va3MgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgY2hhaW4KZGlmZiAtLWdpdCBhL25ldC9jb3JlL3BrdGdlbi5jIGIvbmV0L2NvcmUvcGt0Z2VuLmMKaW5kZXggN2FjNzAzMS4uYzQ3MTllZCAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmMKKysrIGIvbmV0L2NvcmUvcGt0Z2VuLmMKQEAgLTYsNyArNiw3IEBACiAgKgogICogQWxleGV5IEt1em5ldHNvdiAgPGt1em5ldEBtczIuaW5yLmFjLnJ1PgogICogQmVuIEdyZWVhciA8Z3JlZWFyYkBjYW5kZWxhdGVjaC5jb20+Ci0gKiBKZW5zIEzl5XMgPGplbnMubGFhc0BkYXRhLnNsdS5zZT4KKyAqIEplbnMgTMOlw6VzIDxqZW5zLmxhYXNAZGF0YS5zbHUuc2U+CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKZGlmZiAtLWdpdCBhL25ldC9pZWVlODAyMTEvaWVlZTgwMjExX3d4LmMgYi9uZXQvaWVlZTgwMjExL2llZWU4MDIxMV93eC5jCmluZGV4IDliNThkZDYuLmQzMDllOGYgMTAwNjQ0Ci0tLSBhL25ldC9pZWVlODAyMTEvaWVlZTgwMjExX3d4LmMKKysrIGIvbmV0L2llZWU4MDIxMS9pZWVlODAyMTFfd3guYwpAQCAtNDA5LDcgKzQwOSw3IEBACiAJCQkJCSAgICAgICAoKmNyeXB0KS0+cHJpdik7CiAJCXNlYy5mbGFncyB8PSAoMSA8PCBrZXkpOwogCQkvKiBUaGlzIGVuc3VyZXMgYSBrZXkgd2lsbCBiZSBhY3RpdmF0ZWQgaWYgbm8ga2V5IGlzCi0JCSAqIGV4cGxpY2l0ZWx5IHNldCAqLworCQkgKiBleHBsaWNpdGx5IHNldCAqLwogCQlpZiAoa2V5ID09IHNlYy5hY3RpdmVfa2V5KQogCQkJc2VjLmZsYWdzIHw9IFNFQ19BQ1RJVkVfS0VZOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9LY29uZmlnIGIvbmV0L2lwdjQvS2NvbmZpZwppbmRleCBkODk0ZjYxLi45ZjlmZDJjIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9LY29uZmlnCisrKyBiL25ldC9pcHY0L0tjb25maWcKQEAgLTU2MCw3ICs1NjAsNyBAQAogCWRlcGVuZHMgb24gRVhQRVJJTUVOVEFMCiAJZGVmYXVsdCBuCiAJLS0taGVscC0tLQotCVRDUC1JbGxpbm9pcyBpcyBhIHNlbmRlci1zaWRlIG1vZGlmaWNhdGlvIG9mIFRDUCBSZW5vIGZvcgorCVRDUC1JbGxpbm9pcyBpcyBhIHNlbmRlci1zaWRlIG1vZGlmaWNhdGlvbiBvZiBUQ1AgUmVubyBmb3IKIAloaWdoIHNwZWVkIGxvbmcgZGVsYXkgbGlua3MuIEl0IHVzZXMgcm91bmQtdHJpcC10aW1lIHRvCiAJYWRqdXN0IHRoZSBhbHBoYSBhbmQgYmV0YSBwYXJhbWV0ZXJzIHRvIGFjaGlldmUgYSBoaWdoZXIgYXZlcmFnZQogCXRocm91Z2hwdXQgYW5kIG1haW50YWluIGZhaXJuZXNzLgpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvZGlzY292ZXJ5LmMgYi9uZXQvaXJkYS9kaXNjb3ZlcnkuYwppbmRleCBhZjBjZWE3Li44MGMzM2Y0IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9kaXNjb3ZlcnkuYworKysgYi9uZXQvaXJkYS9kaXNjb3ZlcnkuYwpAQCAtMjAyLDcgKzIwMiw3IEBACiAJLyogRHJvcCB0aGUgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgdGhlIGhpZ2hlciBsYXllcnMsIGFzCiAJICogd2UgY2FuJ3QgZ3VhcmFudGVlIHRoZXkgd29uJ3QgY2FsbCB1cyBiYWNrIGFuZCBjcmVhdGUgYQogCSAqIGRlYWRsb2NrLiBXZSB3aWxsIHdvcmsgb24gb3VyIG93biBwcml2YXRlIGRhdGEsIHNvIHdlCi0JICogZG9uJ3QgY2FyZSB0byBiZSBpbnRlcnVwdGVkLiAtIEplYW4gSUkgKi8KKwkgKiBkb24ndCBjYXJlIHRvIGJlIGludGVycnVwdGVkLiAtIEplYW4gSUkgKi8KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsb2ctPmhiX3NwaW5sb2NrLCBmbGFncyk7CiAKIAlpZihidWZmZXIgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lyaWFwLmMgYi9uZXQvaXJkYS9pcmlhcC5jCmluZGV4IGVlMzg4OWYuLmRjNWUzNGEgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lyaWFwLmMKKysrIGIvbmV0L2lyZGEvaXJpYXAuYwpAQCAtMTgsNyArMTgsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lyaWFwX2V2ZW50LmMgYi9uZXQvaXJkYS9pcmlhcF9ldmVudC5jCmluZGV4IDk5YjE4ZGMuLjhmYjlkNzIgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lyaWFwX2V2ZW50LmMKKysrIGIvbmV0L2lyZGEvaXJpYXBfZXZlbnQuYwpAQCAtMTgsNyArMTgsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lyaWFzX29iamVjdC5jIGIvbmV0L2lyZGEvaXJpYXNfb2JqZWN0LmMKaW5kZXggY2YzMDI0NS4uY2JjZjA0MyAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJpYXNfb2JqZWN0LmMKKysrIGIvbmV0L2lyZGEvaXJpYXNfb2JqZWN0LmMKQEAgLTE2LDcgKzE2LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxhbi9pcmxhbl9jbGllbnQuYyBiL25ldC9pcmRhL2lybGFuL2lybGFuX2NsaWVudC5jCmluZGV4IDg3MDM5YzIuLmZmZjUyZDUgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFuL2lybGFuX2NsaWVudC5jCisrKyBiL25ldC9pcmRhL2lybGFuL2lybGFuX2NsaWVudC5jCkBAIC0yMCw3ICsyMCw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMKICAqICAgICBwcm92aWRlZCAiQVMtSVMiIGFuZCBhdCBubyBjaGFyZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJsYW4vaXJsYW5fY2xpZW50X2V2ZW50LmMgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9jbGllbnRfZXZlbnQuYwppbmRleCA4NDNhYjZmLi42YWZjZWU1IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxhbi9pcmxhbl9jbGllbnRfZXZlbnQuYworKysgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9jbGllbnRfZXZlbnQuYwpAQCAtMTcsNyArMTcsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybGFuL2lybGFuX2NvbW1vbi5jIGIvbmV0L2lyZGEvaXJsYW4vaXJsYW5fY29tbW9uLmMKaW5kZXggZjU3NzhlZi4uYTRiNTZlMiAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJsYW4vaXJsYW5fY29tbW9uLmMKKysrIGIvbmV0L2lyZGEvaXJsYW4vaXJsYW5fY29tbW9uLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxhbi9pcmxhbl9ldGguYyBiL25ldC9pcmRhL2lybGFuL2lybGFuX2V0aC5jCmluZGV4IDM0MGYwNGEuLjdmOWM4NTQgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFuL2lybGFuX2V0aC5jCisrKyBiL25ldC9pcmRhL2lybGFuL2lybGFuX2V0aC5jCkBAIC0xOSw3ICsxOSw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMKICAqICAgICBwcm92aWRlZCAiQVMtSVMiIGFuZCBhdCBubyBjaGFyZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJsYW4vaXJsYW5fZXZlbnQuYyBiL25ldC9pcmRhL2lybGFuL2lybGFuX2V2ZW50LmMKaW5kZXggNjIzZTBmZC4uYTk3NTBhOCAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJsYW4vaXJsYW5fZXZlbnQuYworKysgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9ldmVudC5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKiAgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICAqICAgICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc/ggYWRtaXQgbGlhYmlsaXR5IG5vcgorICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXPDuCBhZG1pdCBsaWFiaWxpdHkgbm9yCiAgKiAgICAgcHJvdmlkZSB3YXJyYW50eSBmb3IgYW55IG9mIHRoaXMgc29mdHdhcmUuIFRoaXMgbWF0ZXJpYWwgaXMKICAqICAgICBwcm92aWRlZCAiQVMtSVMiIGFuZCBhdCBubyBjaGFyZ2UuCiAgKgpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJsYW4vaXJsYW5fZmlsdGVyLmMgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9maWx0ZXIuYwppbmRleCBlNjM0NmI4Li40Mzg0YmU5IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxhbi9pcmxhbl9maWx0ZXIuYworKysgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9maWx0ZXIuYwpAQCAtMTYsNyArMTYsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybGFuL2lybGFuX3Byb3ZpZGVyLmMgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9wcm92aWRlci5jCmluZGV4IGFhYzY2NDMuLjEzZGI5NDIgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFuL2lybGFuX3Byb3ZpZGVyLmMKKysrIGIvbmV0L2lyZGEvaXJsYW4vaXJsYW5fcHJvdmlkZXIuYwpAQCAtMjAsNyArMjAsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybGFuL2lybGFuX3Byb3ZpZGVyX2V2ZW50LmMgYi9uZXQvaXJkYS9pcmxhbi9pcmxhbl9wcm92aWRlcl9ldmVudC5jCmluZGV4IGVmNDAxYmQuLjEwZWNlNWEgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFuL2lybGFuX3Byb3ZpZGVyX2V2ZW50LmMKKysrIGIvbmV0L2lyZGEvaXJsYW4vaXJsYW5fcHJvdmlkZXJfZXZlbnQuYwpAQCAtMTYsNyArMTYsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybGFwX2V2ZW50LmMgYi9uZXQvaXJkYS9pcmxhcF9ldmVudC5jCmluZGV4IGE4Yjg4NzMuLjRjMzNiZjUgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFwX2V2ZW50LmMKKysrIGIvbmV0L2lyZGEvaXJsYXBfZXZlbnQuYwpAQCAtMTksNyArMTksNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybGFwX2ZyYW1lLmMgYi9uZXQvaXJkYS9pcmxhcF9mcmFtZS5jCmluZGV4IDc3YWMyN2UuLjRmMzc2NDUgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFwX2ZyYW1lLmMKKysrIGIvbmV0L2lyZGEvaXJsYXBfZnJhbWUuYwpAQCAtMTgsNyArMTgsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybG1wLmMgYi9uZXQvaXJkYS9pcmxtcC5jCmluZGV4IDdkYjkyY2UuLmNlZGZmODAgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybG1wLmMKKysrIGIvbmV0L2lyZGEvaXJsbXAuYwpAQCAtMTgsNyArMTgsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybG1wX2V2ZW50LmMgYi9uZXQvaXJkYS9pcmxtcF9ldmVudC5jCmluZGV4IDY1ZmZhOTguLjFiYmE4N2U3IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxtcF9ldmVudC5jCisrKyBiL25ldC9pcmRhL2lybG1wX2V2ZW50LmMKQEAgLTE4LDcgKzE4LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxtcF9mcmFtZS5jIGIvbmV0L2lyZGEvaXJsbXBfZnJhbWUuYwppbmRleCA1NTkzMDJkLi4wYTc5ZDlhIDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxtcF9mcmFtZS5jCisrKyBiL25ldC9pcmRhL2lybG1wX2ZyYW1lLmMKQEAgLTE4LDcgKzE4LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcm1vZC5jIGIvbmV0L2lyZGEvaXJtb2QuYwppbmRleCA4YmE3MDNkLi4wMTU1NGI5IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcm1vZC5jCisrKyBiL25ldC9pcmRhL2lybW9kLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcnF1ZXVlLmMgYi9uZXQvaXJkYS9pcnF1ZXVlLmMKaW5kZXggZDA1OGI0Ni4uNDBjMjhlZiAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJxdWV1ZS5jCisrKyBiL25ldC9pcmRhL2lycXVldWUuYwpAQCAtMjgsNyArMjgsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lyc3lzY3RsLmMgYi9uZXQvaXJkYS9pcnN5c2N0bC5jCmluZGV4IDUyNTM0M2ExLi41NjVjYmYwIDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcnN5c2N0bC5jCisrKyBiL25ldC9pcmRhL2lyc3lzY3RsLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcnR0cC5jIGIvbmV0L2lyZGEvaXJ0dHAuYwppbmRleCAxMzExOTc2Li45N2RiMTU4IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcnR0cC5jCisrKyBiL25ldC9pcmRhL2lydHRwLmMKQEAgLTE4LDcgKzE4LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS90aW1lci5jIGIvbmV0L2lyZGEvdGltZXIuYwppbmRleCBkM2E2ZWU4Li5kNzMwMDk5IDEwMDY0NAotLS0gYS9uZXQvaXJkYS90aW1lci5jCisrKyBiL25ldC9pcmRhL3RpbWVyLmMKQEAgLTE4LDcgKzE4LDcgQEAKICAqICAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogICogICAgIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21z+CBhZG1pdCBsaWFiaWxpdHkgbm9yCisgKiAgICAgTmVpdGhlciBEYWcgQnJhdHRsaSBub3IgVW5pdmVyc2l0eSBvZiBUcm9tc8O4IGFkbWl0IGxpYWJpbGl0eSBub3IKICAqICAgICBwcm92aWRlIHdhcnJhbnR5IGZvciBhbnkgb2YgdGhpcyBzb2Z0d2FyZS4gVGhpcyBtYXRlcmlhbCBpcwogICogICAgIHByb3ZpZGVkICJBUy1JUyIgYW5kIGF0IG5vIGNoYXJnZS4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS93cmFwcGVyLmMgYi9uZXQvaXJkYS93cmFwcGVyLmMKaW5kZXggYTdhN2YxOS4uZTcxMjg2NyAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvd3JhcHBlci5jCisrKyBiL25ldC9pcmRhL3dyYXBwZXIuYwpAQCAtMjAsNyArMjAsNyBAQAogICogICAgIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAgKiAgICAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgIE5laXRoZXIgRGFnIEJyYXR0bGkgbm9yIFVuaXZlcnNpdHkgb2YgVHJvbXP4IGFkbWl0IGxpYWJpbGl0eSBub3IKKyAqICAgICBOZWl0aGVyIERhZyBCcmF0dGxpIG5vciBVbml2ZXJzaXR5IG9mIFRyb21zw7ggYWRtaXQgbGlhYmlsaXR5IG5vcgogICogICAgIHByb3ZpZGUgd2FycmFudHkgZm9yIGFueSBvZiB0aGlzIHNvZnR3YXJlLiBUaGlzIG1hdGVyaWFsIGlzCiAgKiAgICAgcHJvdmlkZWQgIkFTLUlTIiBhbmQgYXQgbm8gY2hhcmdlLgogICoKZGlmZiAtLWdpdCBhL25ldC9pdWN2L2l1Y3YuYyBiL25ldC9pdWN2L2l1Y3YuYwppbmRleCA5ODMwNThkLi5hMmY1YTZlYSAxMDA2NDQKLS0tIGEvbmV0L2l1Y3YvaXVjdi5jCisrKyBiL25ldC9pdWN2L2l1Y3YuYwpAQCAtMzg5LDcgKzM4OSw3IEBACiAgKiBpdWN2X2RlY2xhcmVfY3B1CiAgKiBAZGF0YTogdW51c2VkCiAgKgotICogRGVjbGFyZSBhIGludGVydXB0IGJ1ZmZlciBvbiB0aGlzIGNwdS4KKyAqIERlY2xhcmUgYSBpbnRlcnJ1cHQgYnVmZmVyIG9uIHRoaXMgY3B1LgogICovCiBzdGF0aWMgdm9pZCBpdWN2X2RlY2xhcmVfY3B1KHZvaWQgKmRhdGEpCiB7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X0NPTk5NQVJLLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X0NPTk5NQVJLLmMKaW5kZXggOGNjMzI0Yi4uODU2NzkzZSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci94dF9DT05OTUFSSy5jCisrKyBiL25ldC9uZXRmaWx0ZXIveHRfQ09OTk1BUksuYwpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2lwLmg+CiAjaW5jbHVkZSA8bmV0L2NoZWNrc3VtLmg+CiAKLU1PRFVMRV9BVVRIT1IoIkhlbnJpayBOb3Jkc3Ryb20gPGhub0BtYXJhc3l0ZW1zLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIkhlbnJpayBOb3Jkc3Ryb20gPGhub0BtYXJhc3lzdGVtcy5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIklQIHRhYmxlcyBDT05OTUFSSyBtYXRjaGluZyBtb2R1bGUiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBUygiaXB0X0NPTk5NQVJLIik7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMKaW5kZXggMTA3MWZjNS4uOWY2NzkyMCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jCisrKyBiL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuYwpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlci94X3RhYmxlcy5oPgogI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlci94dF9jb25ubWFyay5oPgogCi1NT0RVTEVfQVVUSE9SKCJIZW5yaWsgTm9yZHN0cm9tIDxobm9AbWFyYXN5dGVtcy5jb20+Iik7CitNT0RVTEVfQVVUSE9SKCJIZW5yaWsgTm9yZHN0cm9tIDxobm9AbWFyYXN5c3RlbXMuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJJUCB0YWJsZXMgY29ubm1hcmsgbWF0Y2ggbW9kdWxlIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVMoImlwdF9jb25ubWFyayIpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9saW1pdC5jIGIvbmV0L25ldGZpbHRlci94dF9saW1pdC5jCmluZGV4IDRmY2NhNzkuLmYyNjNhNzcgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIveHRfbGltaXQuYworKysgYi9uZXQvbmV0ZmlsdGVyL3h0X2xpbWl0LmMKQEAgLTEsNSArMSw1IEBACi0vKiAoQykgMTk5OSBK6XL0bWUgZGUgVml2aWUgPGRldml2aWVAaW5mby5lbnNlcmIudS1ib3JkZWF1eC5mcj4KLSAqIChDKSAxOTk5IEhlcnbpIEV5Y2hlbm5lIDxleWNoZW5uZUBpbmZvLmVuc2VyYi51LWJvcmRlYXV4LmZyPgorLyogKEMpIDE5OTkgSsOpcsO0bWUgZGUgVml2aWUgPGRldml2aWVAaW5mby5lbnNlcmIudS1ib3JkZWF1eC5mcj4KKyAqIChDKSAxOTk5IEhlcnbDqSBFeWNoZW5uZSA8ZXljaGVubmVAaW5mby5lbnNlcmIudS1ib3JkZWF1eC5mcj4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9lbV9tZXRhLmMgYi9uZXQvc2NoZWQvZW1fbWV0YS5jCmluZGV4IGU5OTg5NjEuLmNlZGE4ODkgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9lbV9tZXRhLmMKKysrIGIvbmV0L3NjaGVkL2VtX21ldGEuYwpAQCAtNTUsNyArNTUsNyBAQAogICogCXBwcDAuLjkuCiAgKgogICogCU5PVEU6IENlcnRhaW4gbWV0YSB2YWx1ZXMgZGVwZW5kIG9uIG90aGVyIHN1YnN5c3RlbXMgYW5kIGFyZQotICogCSAgICAgIG9ubHkgYXZhaWxhYmxlIGlmIHRoYXQgc3Vic3l0ZW0gaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsLgorICogCSAgICAgIG9ubHkgYXZhaWxhYmxlIGlmIHRoYXQgc3Vic3lzdGVtIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CmRpZmYgLS1naXQgYS9zb3VuZC9jb3JlL3NlcS9zZXFfbWlkaV9lbXVsLmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfbWlkaV9lbXVsLmMKaW5kZXggZDdjNGZiOC4uMTdiM2U2ZiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxX21pZGlfZW11bC5jCisrKyBiL3NvdW5kL2NvcmUvc2VxL3NlcV9taWRpX2VtdWwuYwpAQCAtNzEsNyArNzEsNyBAQAogICogc3VjaCBhcyBHTSwgR1MgYW5kIFhHLgogICogVGhlcmUgbW9kZXMgdGhhdCB0aGlzIG1vZHVsZSB3aWxsIHJ1biBpbiBhcmU6CiAgKiAgIEdlbmVyaWMgTUlESSAtIG5vIGludGVycHJldGF0aW9uIGF0IGFsbCwgaXQgd2lsbCBqdXN0IHNhdmUgY3VycmVudCB2YWx1ZXMKLSAqICAgICAgICAgICAgICAgICAgb2YgY29udHJvbGVycyBldGMuCisgKiAgICAgICAgICAgICAgICAgIG9mIGNvbnRyb2xsZXJzIGV0Yy4KICAqICAgR00gLSBZb3UgY2FuIHVzZSBhbGwgZ21fIHByZWZpeGVkIGVsZW1lbnRzIG9mIGNoYW4uICBDb250cm9scywgUlBOLCBOUlBOLAogICogICAgICAgIFN5c0V4IHdpbGwgYmUgaW50ZXJwcmVkZWQgYXMgZGVmaW5lZCBpbiBHZW5lcmFsIE1pZGkuCiAgKiAgIEdTIC0gWW91IGNhbiB1c2UgYWxsIGdzXyBwcmVmaXhlZCBlbGVtZW50cyBvZiBjaGFuLiBDb2RlcyBmb3IgR1Mgd2lsbCBiZQpAQCAtMTc2LDcgKzE3Niw3IEBACiAJCQkJICAgZXYtPmRhdGEuY29udHJvbC52YWx1ZSk7CiAJCWJyZWFrOwogCWNhc2UgU05EUlZfU0VRX0VWRU5UX05PTlJFR1BBUkFNOgotCQkvKiBCcmVhayBpdCBiYWNrIGludG8gaXRzIGNvbnRyb2xlciB2YWx1ZXMgKi8KKwkJLyogQnJlYWsgaXQgYmFjayBpbnRvIGl0cyBjb250cm9sbGVyIHZhbHVlcyAqLwogCQljaGFuLT5wYXJhbV90eXBlID0gU05EUlZfTUlESV9QQVJBTV9UWVBFX05PTlJFR0lTVEVSRUQ7CiAJCWNoYW4tPmNvbnRyb2xbTUlESV9DVExfTVNCX0RBVEFfRU5UUlldCiAJCQk9IChldi0+ZGF0YS5jb250cm9sLnZhbHVlID4+IDcpICYgMHg3ZjsKQEAgLTE4OSw3ICsxODksNyBAQAogCQlucnBuKG9wcywgZHJ2LCBjaGFuLCBjaGFuc2V0KTsKIAkJYnJlYWs7CiAJY2FzZSBTTkRSVl9TRVFfRVZFTlRfUkVHUEFSQU06Ci0JCS8qIEJyZWFrIGl0IGJhY2sgaW50byBpdHMgY29udHJvbGVyIHZhbHVlcyAqLworCQkvKiBCcmVhayBpdCBiYWNrIGludG8gaXRzIGNvbnRyb2xsZXIgdmFsdWVzICovCiAJCWNoYW4tPnBhcmFtX3R5cGUgPSBTTkRSVl9NSURJX1BBUkFNX1RZUEVfUkVHSVNURVJFRDsKIAkJY2hhbi0+Y29udHJvbFtNSURJX0NUTF9NU0JfREFUQV9FTlRSWV0KIAkJCT0gKGV2LT5kYXRhLmNvbnRyb2wudmFsdWUgPj4gNykgJiAweDdmOwpAQCAtMjY3LDcgKzI2Nyw3IEBACiB9CiAKIC8qCi0gKiBEbyBhbGwgZHJpdmVyIGluZGVwZW5kZW50IG9wZXJhdGlvbnMgZm9yIHRoaXMgY29udHJvbGVyIGFuZCBwYXNzCisgKiBEbyBhbGwgZHJpdmVyIGluZGVwZW5kZW50IG9wZXJhdGlvbnMgZm9yIHRoaXMgY29udHJvbGxlciBhbmQgcGFzcwogICogZXZlbnRzIHRoYXQgbmVlZCB0byB0YWtlIHBsYWNlIGltbWVkaWF0ZWx5IHRvIHRoZSBkcml2ZXIuCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL29wbDMvb3BsM19taWRpLmMgYi9zb3VuZC9kcml2ZXJzL29wbDMvb3BsM19taWRpLmMKaW5kZXggMWI2ZjIyNy4uMzU1N2I2ZSAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9vcGwzL29wbDNfbWlkaS5jCisrKyBiL3NvdW5kL2RyaXZlcnMvb3BsMy9vcGwzX21pZGkuYwpAQCAtODA4LDcgKzgwOCw3IEBACiB9CiAKIC8qCi0gKiBEZWFsIHdpdGggYSBjb250cm9sZXIgdHlwZSBldmVudC4gIFRoaXMgaW5jbHVkZXMgYWxsIHR5cGVzIG9mCisgKiBEZWFsIHdpdGggYSBjb250cm9sbGVyIHR5cGUgZXZlbnQuICBUaGlzIGluY2x1ZGVzIGFsbCB0eXBlcyBvZgogICogY29udHJvbCBldmVudHMsIG5vdCBqdXN0IHRoZSBtaWRpIGNvbnRyb2xsZXJzCiAgKi8KIHZvaWQgc25kX29wbDNfY29udHJvbCh2b2lkICpwLCBpbnQgdHlwZSwgc3RydWN0IHNuZF9taWRpX2NoYW5uZWwgKmNoYW4pCmRpZmYgLS1naXQgYS9zb3VuZC9pc2EvZXMxOHh4LmMgYi9zb3VuZC9pc2EvZXMxOHh4LmMKaW5kZXggNGE3MzY3YS4uYzFhZjI4ZiAxMDA2NDQKLS0tIGEvc291bmQvaXNhL2VzMTh4eC5jCisrKyBiL3NvdW5kL2lzYS9lczE4eHguYwpAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNuZF9wY21fZm9ybWF0X3dpZHRoKHJ1bnRpbWUtPmZvcm1hdCkgPT0gMTYgPyAweDA0IDogMHgwMCkgfAogICAgICAgICAgICAgICAgICAgICAgICAgIChzbmRfcGNtX2Zvcm1hdF91bnNpZ25lZChydW50aW1lLT5mb3JtYXQpID8gMHgwMCA6IDB4MjApKTsKIAotICAgICAgICAvKiBTZXQgRE1BIGNvbnRyb2xlciAqLworICAgICAgICAvKiBTZXQgRE1BIGNvbnRyb2xsZXIgKi8KICAgICAgICAgc25kX2RtYV9wcm9ncmFtKGNoaXAtPmRtYTEsIHJ1bnRpbWUtPmRtYV9hZGRyLCBzaXplLCBETUFfTU9ERV9SRUFEIHwgRE1BX0FVVE9JTklUKTsKIAogCXJldHVybiAwOwpAQCAtNjg5LDcgKzY4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNuZF9wY21fZm9ybWF0X3dpZHRoKHJ1bnRpbWUtPmZvcm1hdCkgPT0gMTYgPyAweDA0IDogMHgwMCkgfAogICAgICAgICAgICAgICAgICAgICAgICAgIChzbmRfcGNtX2Zvcm1hdF91bnNpZ25lZChydW50aW1lLT5mb3JtYXQpID8gMHgwMCA6IDB4MjApKTsKIAotICAgICAgICAvKiBTZXQgRE1BIGNvbnRyb2xlciAqLworICAgICAgICAvKiBTZXQgRE1BIGNvbnRyb2xsZXIgKi8KICAgICAgICAgc25kX2RtYV9wcm9ncmFtKGNoaXAtPmRtYTEsIHJ1bnRpbWUtPmRtYV9hZGRyLCBzaXplLCBETUFfTU9ERV9XUklURSB8IERNQV9BVVRPSU5JVCk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3NvdW5kL21pcHMvYXUxeDAwLmMgYi9zb3VuZC9taXBzL2F1MXgwMC5jCmluZGV4IDhhNjFhMTEuLjI0NDYwYTUgMTAwNjQ0Ci0tLSBhL3NvdW5kL21pcHMvYXUxeDAwLmMKKysrIGIvc291bmQvbWlwcy9hdTF4MDAuYwpAQCAtNDk4LDggKzQ5OCw4IEBACiAJaW50ICAgICAgICAgICAgIGk7CiAKIAlzcGluX2xvY2soJmF1MTAwMC0+YWM5N19sb2NrKTsKLS8qIHdvdWxkIHJhdGhlciB1c2UgdGhlIGludGVydXB0IHRoYW4gdGhpcyBwb2xsaW5nIGJ1dCBpdCB3b3JrcyBhbmQgSSBjYW4ndAotZ2V0IHRoZSBpbnRlcnVwdCBkcml2ZW4gY2FzZSB0byB3b3JrIGVmZmljaWVudGx5ICovCisvKiB3b3VsZCByYXRoZXIgdXNlIHRoZSBpbnRlcnJ1cHQgdGhhbiB0aGlzIHBvbGxpbmcgYnV0IGl0IHdvcmtzIGFuZCBJIGNhbid0CitnZXQgdGhlIGludGVycnVwdCBkcml2ZW4gY2FzZSB0byB3b3JrIGVmZmljaWVudGx5ICovCiAJZm9yIChpID0gMDsgaSA8IDB4NTAwMDsgaSsrKQogCQlpZiAoIShhdTEwMDAtPmFjOTdfaW9wb3J0LT5zdGF0dXMgJiBBQzk3Q19DUCkpCiAJCQlicmVhazsKQEAgLTUzNSw4ICs1MzUsOCBAQAogCWludCBpOwogCiAJc3Bpbl9sb2NrKCZhdTEwMDAtPmFjOTdfbG9jayk7Ci0vKiB3b3VsZCByYXRoZXIgdXNlIHRoZSBpbnRlcnVwdCB0aGFuIHRoaXMgcG9sbGluZyBidXQgaXQgd29ya3MgYW5kIEkgY2FuJ3QKLWdldCB0aGUgaW50ZXJ1cHQgZHJpdmVuIGNhc2UgdG8gd29yayBlZmZpY2llbnRseSAqLworLyogd291bGQgcmF0aGVyIHVzZSB0aGUgaW50ZXJydXB0IHRoYW4gdGhpcyBwb2xsaW5nIGJ1dCBpdCB3b3JrcyBhbmQgSSBjYW4ndAorZ2V0IHRoZSBpbnRlcnJ1cHQgZHJpdmVuIGNhc2UgdG8gd29yayBlZmZpY2llbnRseSAqLwogCWZvciAoaSA9IDA7IGkgPCAweDUwMDA7IGkrKykKIAkJaWYgKCEoYXUxMDAwLT5hYzk3X2lvcG9ydC0+c3RhdHVzICYgQUM5N0NfQ1ApKQogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYwppbmRleCBmNzAyODZhLi4yNjgxOWUyIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jCisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMKQEAgLTE5MSw3ICsxOTEsNyBAQAogCiAJLyogSW5pdCBhdWRpbyBjb3JlLgogCSAqIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB3ZSBkbyByZXF1ZXN0X2lycSBvdGhlcndpc2Ugd2UgY2FuIGdldCBzcHVyaW91cwotCSAqIGludGVydXB0cyB0aGF0IHdlIGRvIG5vdCBoYW5kbGUgcHJvcGVybHkgYW5kIG1ha2UgYSBtZXNzIG9mIHRoaW5ncyAqLworCSAqIGludGVycnVwdHMgdGhhdCB3ZSBkbyBub3QgaGFuZGxlIHByb3Blcmx5IGFuZCBtYWtlIGEgbWVzcyBvZiB0aGluZ3MgKi8KIAlpZiAoKGVyciA9IHZvcnRleF9jb3JlX2luaXQoY2hpcCkpICE9IDApIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJodyBjb3JlIGluaXQgZmFpbGVkXG4iKTsKIAkJZ290byBjb3JlX291dDsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zb2MtY29yZS5jIGIvc291bmQvc29jL3NvYy1jb3JlLmMKaW5kZXggOTE2NTFiZC4uZTZhNjdiNSAxMDA2NDQKLS0tIGEvc291bmQvc29jL3NvYy1jb3JlLmMKKysrIGIvc291bmQvc29jL3NvYy1jb3JlLmMKQEAgLTI2NCw3ICsyNjQsNyBAQAogfQogCiAvKgotICogUG93ZXIgZG93biB0aGUgYXVkaW8gc3Vic3l0ZW0gcG1kb3duX3RpbWUgbXNlY3MgYWZ0ZXIgY2xvc2UgaXMgY2FsbGVkLgorICogUG93ZXIgZG93biB0aGUgYXVkaW8gc3Vic3lzdGVtIHBtZG93bl90aW1lIG1zZWNzIGFmdGVyIGNsb3NlIGlzIGNhbGxlZC4KICAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBwb3BzIG9yIGNsaWNrcyBpbiBiZXR3ZWVuIGFueSBtdXNpYyB0cmFja3MKICAqIGR1ZSB0byBEQVBNIHBvd2VyIGN5Y2xpbmcuCiAgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zb2MtZGFwbS5jIGIvc291bmQvc29jL3NvYy1kYXBtLmMKaW5kZXggYjMxOTNlNi4uMjlhNTQ2ZiAxMDA2NDQKLS0tIGEvc291bmQvc29jL3NvYy1kYXBtLmMKKysrIGIvc291bmQvc29jL3NvYy1kYXBtLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqICAgIG8gQXV0b21hdGljIE1pYyBCaWFzIHN1cHBvcnQKICAqICAgIG8gSmFjayBpbnNlcnRpb24gcG93ZXIgZXZlbnQgaW5pdGlhdGlvbiAtIGUuZy4gaHAgaW5zZXJ0aW9uIHdpbGwgZW5hYmxlCiAgKiAgICAgIHNpbmtzLCBkYWNzLCBldGMKLSAqICAgIG8gRGVsYXllZCBwb3dlcmRvd24gb2YgYXVkaW8gc3VzYnN5dGVtIHRvIHJlZHVjZSBwb3BzIGJldHdlZW4gYSBxdWljaworICogICAgbyBEZWxheWVkIHBvd2VyZG93biBvZiBhdWRpbyBzdXNic3lzdGVtIHRvIHJlZHVjZSBwb3BzIGJldHdlZW4gYSBxdWljawogICogICAgICBkZXZpY2UgcmVvcGVuLgogICoKICAqICBUb2RvOgpkaWZmIC0tZ2l0IGEvc291bmQvc3ludGgvZW11eC9lbXV4X3N5bnRoLmMgYi9zb3VuZC9zeW50aC9lbXV4L2VtdXhfc3ludGguYwppbmRleCAzNzMzMTE4Li40NzgzNjliIDEwMDY0NAotLS0gYS9zb3VuZC9zeW50aC9lbXV4L2VtdXhfc3ludGguYworKysgYi9zb3VuZC9zeW50aC9lbXV4L2VtdXhfc3ludGguYwpAQCAtMzE3LDcgKzMxNyw3IEBACiAKIAogLyoKLSAqIERlYWwgd2l0aCBhIGNvbnRyb2xlciB0eXBlIGV2ZW50LiAgVGhpcyBpbmNsdWRlcyBhbGwgdHlwZXMgb2YKKyAqIERlYWwgd2l0aCBhIGNvbnRyb2xsZXIgdHlwZSBldmVudC4gIFRoaXMgaW5jbHVkZXMgYWxsIHR5cGVzIG9mCiAgKiBjb250cm9sIGV2ZW50cywgbm90IGp1c3QgdGhlIG1pZGkgY29udHJvbGxlcnMKICAqLwogdm9pZAo=