ZGlmZiAtLWdpdCBhL0NSRURJVFMgYi9DUkVESVRTCmluZGV4IDFkMzlhNmQuLmRjYTZhYmMgMTAwNjQ0Ci0tLSBhL0NSRURJVFMKKysrIGIvQ1JFRElUUwpAQCAtMTY3Nyw3ICsxNjc3LDcgQEAKIEQ6IEFzc29ydGVkIFZJQSB4ODYgc3VwcG9ydC4KIEQ6IDIuNSBBR1BHQVJUIG92ZXJoYXVsLgogRDogQ1BVRlJFUSBtYWludGVuYW5jZS4KLUQ6IEZlZG9yYSBrZXJuZWwgbWFpbnRhaW5lbmNlLgorRDogRmVkb3JhIGtlcm5lbCBtYWludGVuYW5jZS4KIEQ6IE1pc2MvT3RoZXIuCiBTOiAzMTQgTGl0dGxldG9uIFJkLCBXZXN0Zm9yZCwgTUEgMDE4ODYsIFVTQQogCkBAIC0zMjExLDcgKzMyMTEsNyBAQAogRToganNpbW1vbnNAaW5mcmFkZWFkLm9yZwogRToganNpbW1vbnNAdXNlcnMuc2YubmV0IAogRDogRnJhbWUgYnVmZmVyIGRldmljZSBtYWludGFpbmVyCi1EOiBpbnB1dCBsYXllciBkZXZlbG9wZW1lbnQgCitEOiBpbnB1dCBsYXllciBkZXZlbG9wbWVudAogRDogdHR5L2NvbnNvbGUgbGF5ZXIKIEQ6IHZhcmlvdXMgbWlwc2VsIGRldmljZXMgCiBTOiAxMTUgQ2FybWVsIEF2ZW51ZSAKQEAgLTMyOTAsNyArMzI5MCw3IEBACiBOOiBNYW5mcmVkIFNwcmF1bAogRTogbWFuZnJlZEBjb2xvcmZ1bGxpZmUuY29tCiBXOiBodHRwOi8vd3d3LmNvbG9yZnVsbGlmZS5jb20vfm1hbmZyZWQKLUQ6IExvdHMgb2YgdGlueSBoYWNrcy4gTGFyZ2VyIGltcHJvdm1lbnRzIHRvIFN5c1YgSVBDIG1zZywKK0Q6IExvdHMgb2YgdGlueSBoYWNrcy4gTGFyZ2VyIGltcHJvdmVtZW50cyB0byBTeXNWIElQQyBtc2csCiBEOiBzbGFiLCBwaXBlLCBzZWxlY3QuCiBTOiA3MTcwMSBTY2h3aWViZXJkaW5nZW4KIFM6IEdlcm1hbnkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNzcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNzcwppbmRleCBiNTg1ZWMyLi4yOTc5YzQwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1jc3MKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY3NzCkBAIC0yOSw3ICsyOSw3IEBACiAJCWxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCiBEZXNjcmlwdGlvbjoJQ29udGFpbnMgdGhlIFBJTS9QQU0vUE9NIHZhbHVlcywgYXMgcmVwb3J0ZWQgYnkgdGhlCiAJCWNoYW5uZWwgc3Vic3lzdGVtIHdoZW4gbGFzdCBxdWVyaWVkIGJ5IHRoZSBjb21tb24gSS9PCi0JCWxheWVyICh0aGlzIGltcGxpZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgbmVjY2Vzc2FyaWx5CisJCWxheWVyICh0aGlzIGltcGxpZXMgdGhhdCB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgbmVjZXNzYXJpbHkKIAkJaW4gc3luYyB3aXRoIHRoZSB2YWx1ZXMgY3VycmVudCBpbiB0aGUgY2hhbm5lbCBzdWJzeXN0ZW0pLgogCQlOb3RlOiBUaGlzIGlzIGFuIEkvTy1zdWJjaGFubmVsIHNwZWNpZmljIGF0dHJpYnV0ZS4KIFVzZXJzOgkJczM5MC10b29scywgSEFMCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGVkCmluZGV4IGVkZmY2NjMuLjM2NDZlYzggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGVkCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGVkCkBAIC0zMyw1ICszMyw1IEBACiBEZXNjcmlwdGlvbjoKIAkJSW52ZXJ0IHRoZSBMRUQgb24vb2ZmIHN0YXRlLiBUaGlzIHBhcmFtZXRlciBpcyBzcGVjaWZpYyB0bwogCQlncGlvIGFuZCBiYWNrbGlnaHQgdHJpZ2dlcnMuIEluIGNhc2Ugb2YgdGhlIGJhY2tsaWdodCB0cmlnZ2VyLAotCQlpdCBpcyB1c2VmdWxsIHdoZW4gZHJpdmluZyBhIExFRCB3aGljaCBpcyBpbnRlbmRlZCB0byBpbmRpY2F0ZQorCQlpdCBpcyB1c2VmdWwgd2hlbiBkcml2aW5nIGEgTEVEIHdoaWNoIGlzIGludGVuZGVkIHRvIGluZGljYXRlCiAJCWEgZGV2aWNlIGluIGEgc3RhbmRieSBsaWtlIHN0YXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2R2Yi9kdmJwcm9wZXJ0eS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHZiL2R2YnByb3BlcnR5LnhtbAppbmRleCA1ZjU3YzdjLi45N2YzOTdlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHZiL2R2YnByb3BlcnR5LnhtbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHZiL2R2YnByb3BlcnR5LnhtbApAQCAtNDAsNyArNDAsNyBAQAogCiAJCQk8cGFyYT5DZW50cmFsIGZyZXF1ZW5jeSBvZiB0aGUgY2hhbm5lbC48L3BhcmE+CiAKLQkJCTxwYXJhPkZvciBJU0RCLVQgdGhlIGNoYW5uZWxzIGFyZSB1c2FsbHkgdHJhbnNtaXR0ZWQgd2l0aCBhbiBvZmZzZXQgb2YgMTQza0h6LiBFLmcuIGEKKwkJCTxwYXJhPkZvciBJU0RCLVQgdGhlIGNoYW5uZWxzIGFyZSB1c3VhbGx5IHRyYW5zbWl0dGVkIHdpdGggYW4gb2Zmc2V0IG9mIDE0M2tIei4gRS5nLiBhCiAJCQkJdmFsaWQgZnJlcXVuY3kgY291bGQgYmUgNDc0MTQzIGtIei4gVGhlIHN0ZXBwaW5nIGlzIGJvdW5kIHRvIHRoZSBiYW5kd2lkdGggb2YKIAkJCQl0aGUgY2hhbm5lbCB3aGljaCBpcyA2TUh6LjwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2R2Yi9mcm9udGVuZC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHZiL2Zyb250ZW5kLnhtbAppbmRleCA3OGQ3NTZkLi42MGM2OTc2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHZiL2Zyb250ZW5kLnhtbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHZiL2Zyb250ZW5kLnhtbApAQCAtMTM5LDcgKzEzOSw3IEBACiA8c2VjdGlvbiBpZD0iZnJvbnRlbmRfc2VjX3RvbmUiPgogPHRpdGxlPlNFQyBjb250aW51b3VzIHRvbmU8L3RpdGxlPgogCi08cGFyYT5UaGUgY29udGlub3VzIDIyS0h6IHRvbmUgaXMgdXN1YWxseSB1c2VkIHdpdGggbm9uLURpU0VxQyBjYXBhYmxlIExOQnMgdG8gc3dpdGNoIHRoZQorPHBhcmE+VGhlIGNvbnRpbnVvdXMgMjJLSHogdG9uZSBpcyB1c3VhbGx5IHVzZWQgd2l0aCBub24tRGlTRXFDIGNhcGFibGUgTE5CcyB0byBzd2l0Y2ggdGhlCiBoaWdoL2xvdyBiYW5kIG9mIGEgZHVhbC1iYW5kIExOQi4gV2hlbiB1c2luZyBEaVNFcUMgZXB1aXBtZW50IHRoaXMgdm9sdGFnZSBoYXMgdG8KIGJlIHN3aXRjaGVkIGNvbnNpc3RlbnRseSB0byB0aGUgRGlTRXFDIGNvbW1hbmRzIGFzIGRlc2NyaWJlZCBpbiB0aGUgRGlTRXFDCiBzcGVjLjwvcGFyYT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtbG9ja2luZy50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1sb2NraW5nLnRtcGwKaW5kZXggZjY2ZjRkZi4uNjdlN2FiNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1sb2NraW5nLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1sb2NraW5nLnRtcGwKQEAgLTE3NjMsNyArMTc2Myw3IEBACiBUaGVyZSBpcyBhIGZ1cnRodXIgb3B0aW1pemF0aW9uIHBvc3NpYmxlIGhlcmU6IHJlbWVtYmVyIG91ciBvcmlnaW5hbAogY2FjaGUgY29kZSwgd2hlcmUgdGhlcmUgd2VyZSBubyByZWZlcmVuY2UgY291bnRzIGFuZCB0aGUgY2FsbGVyIHNpbXBseQogaGVsZCB0aGUgbG9jayB3aGVuZXZlciB1c2luZyB0aGUgb2JqZWN0PyAgVGhpcyBpcyBzdGlsbCBwb3NzaWJsZTogaWYKLXlvdSBob2xkIHRoZSBsb2NrLCBub29uZSBjYW4gZGVsZXRlIHRoZSBvYmplY3QsIHNvIHlvdSBkb24ndCBuZWVkIHRvCit5b3UgaG9sZCB0aGUgbG9jaywgbm8gb25lIGNhbiBkZWxldGUgdGhlIG9iamVjdCwgc28geW91IGRvbid0IG5lZWQgdG8KIGdldCBhbmQgcHV0IHRoZSByZWZlcmVuY2UgY291bnQuCiA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9saWJhdGEudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9saWJhdGEudG1wbAppbmRleCA4YzU0MTFjLi5jZGQxYmI5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbGliYXRhLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2xpYmF0YS50bXBsCkBAIC0xMDMyLDcgKzEwMzIsNyBAQAogCSAgIDxsaXN0aXRlbT4KIAkgICA8cGFyYT4KIAkgICBUaGlzIGlzIGluZGljYXRlZCBieSBJQ1JDIGJpdCBpbiB0aGUgRVJST1IgcmVnaXN0ZXIgYW5kCi0JICAgbWVhbnMgdGhhdCBjb3JydXB0aW9uIG9jY3VycmVkIGR1cmluZyBkYXRhIHRyYW5zZmVyLiAgVXB0bworCSAgIG1lYW5zIHRoYXQgY29ycnVwdGlvbiBvY2N1cnJlZCBkdXJpbmcgZGF0YSB0cmFuc2Zlci4gIFVwIHRvCiAJICAgQVRBL0FUQVBJLTcsIHRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCB0aGlzIGJpdCBpcyBvbmx5CiAJICAgYXBwbGljYWJsZSB0byBVRE1BIHRyYW5zZmVycyBidXQgQVRBL0FUQVBJLTggZHJhZnQgcmV2aXNpb24KIAkgICAxZiBzYXlzIHRoYXQgdGhlIGJpdCBtYXkgYmUgYXBwbGljYWJsZSB0byBtdWx0aXdvcmQgRE1BIGFuZApAQCAtMTA0NSwxMCArMTA0NSwxMCBAQAogCSAgIDx0ZXJtPkFCUlQgZXJyb3IgZHVyaW5nIGRhdGEgdHJhbnNmZXIgb3Igb24gY29tcGxldGlvbjwvdGVybT4KIAkgICA8bGlzdGl0ZW0+CiAJICAgPHBhcmE+Ci0JICAgVXB0byBBVEEvQVRBUEktNywgdGhlIHN0YW5kYXJkIHNwZWNpZmllcyB0aGF0IEFCUlQgY291bGQgYmUKKwkgICBVcCB0byBBVEEvQVRBUEktNywgdGhlIHN0YW5kYXJkIHNwZWNpZmllcyB0aGF0IEFCUlQgY291bGQgYmUKIAkgICBzZXQgb24gSUNSQyBlcnJvcnMgYW5kIG9uIGNhc2VzIHdoZXJlIGEgZGV2aWNlIGlzIG5vdCBhYmxlCiAJICAgdG8gY29tcGxldGUgYSBjb21tYW5kLiAgQ29tYmluZWQgd2l0aCB0aGUgZmFjdCB0aGF0IE1XRE1BCi0JICAgYW5kIFBJTyB0cmFuc2ZlciBlcnJvcnMgYXJlbid0IGFsbG93ZWQgdG8gdXNlIElDUkMgYml0IHVwdG8KKwkgICBhbmQgUElPIHRyYW5zZmVyIGVycm9ycyBhcmVuJ3QgYWxsb3dlZCB0byB1c2UgSUNSQyBiaXQgdXAgdG8KIAkgICBBVEEvQVRBUEktNywgaXQgc2VlbXMgdG8gaW1wbHkgdGhhdCBBQlJUIGJpdCBhbG9uZSBjb3VsZAogCSAgIGluZGljYXRlIHRyYW5mZXIgZXJyb3JzLgogCSAgIDwvcGFyYT4KQEAgLTExMjIsNyArMTEyMiw3IEBACiAJPHBhcmE+CiAJRGVwZW5kaW5nIG9uIGNvbW1hbmRzLCBub3QgYWxsIFNUQVRVUy9FUlJPUiBiaXRzIGFyZQogCWFwcGxpY2FibGUuICBUaGVzZSBub24tYXBwbGljYWJsZSBiaXRzIGFyZSBtYXJrZWQgd2l0aAotCSZxdW90O25hJnF1b3Q7IGluIHRoZSBvdXRwdXQgZGVzY3JpcHRpb25zIGJ1dCB1cHRvIEFUQS9BVEFQSS03CisJJnF1b3Q7bmEmcXVvdDsgaW4gdGhlIG91dHB1dCBkZXNjcmlwdGlvbnMgYnV0IHVwIHRvIEFUQS9BVEFQSS03CiAJbm8gZGVmaW5pdGlvbiBvZiAmcXVvdDtuYSZxdW90OyBjYW4gYmUgZm91bmQuICBIb3dldmVyLAogCUFUQS9BVEFQSS04IGRyYWZ0IHJldmlzaW9uIDFmIGRlc2NyaWJlcyAmcXVvdDtOL0EmcXVvdDsgYXMKIAlmb2xsb3dzLgpAQCAtMTUwNyw3ICsxNTA3LDcgQEAKIAogCTxsaXN0aXRlbT4KIAk8cGFyYT4KLQlDSFMgc2V0IHVwIHdpdGggSU5JVElBTElaRSBERVZJQ0UgUEFSQU1FVEVSUyAoc2VsZG9tbHkgdXNlZCkKKwlDSFMgc2V0IHVwIHdpdGggSU5JVElBTElaRSBERVZJQ0UgUEFSQU1FVEVSUyAoc2VsZG9tIHVzZWQpCiAJPC9wYXJhPgogCTwvbGlzdGl0ZW0+CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tdGRuYW5kLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbXRkbmFuZC50bXBsCmluZGV4IDYyMGViM2YuLjZmMjQyZDUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tdGRuYW5kLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL210ZG5hbmQudG1wbApAQCAtNDg1LDcgKzQ4NSw3IEBACiAJCQkJUmVlZC1Tb2xvbW9uIGxpYnJhcnkuCiAJCQk8L3BhcmE+CiAJCQk8cGFyYT4KLQkJCQlUaGUgRUNDIGJ5dGVzIG11c3QgYmUgcGxhY2VkIGltbWlkaWF0ZWx5IGFmdGVyIHRoZSBkYXRhCisJCQkJVGhlIEVDQyBieXRlcyBtdXN0IGJlIHBsYWNlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgZGF0YQogCQkJCWJ5dGVzIGluIG9yZGVyIHRvIG1ha2UgdGhlIHN5bmRyb21lIGdlbmVyYXRvciB3b3JrLiBUaGlzCiAJCQkJaXMgY29udHJhcnkgdG8gdGhlIHVzdWFsIGxheW91dCB1c2VkIGJ5IHNvZnR3YXJlIEVDQy4gVGhlCiAJCQkJc2VwYXJhdGlvbiBvZiBkYXRhIGFuZCBvdXQgb2YgYmFuZCBhcmVhIGlzIG5vdCBsb25nZXIKQEAgLTYyOSw3ICs2MjksNyBAQAogCQkJCWhvbGRzIHRoZSBiYWQgYmxvY2sgdGFibGUuIFN0b3JlIGEgcG9pbnRlciB0byB0aGUgcGF0dGVybiAgCiAJCQkJaW4gdGhlIHBhdHRlcm4gZmllbGQuIEZ1cnRoZXIgdGhlIGxlbmd0aCBvZiB0aGUgcGF0dGVybiBoYXMgdG8gYmUgCiAJCQkJc3RvcmVkIGluIGxlbiBhbmQgdGhlIG9mZnNldCBpbiB0aGUgc3BhcmUgYXJlYSBtdXN0IGJlIGdpdmVuCi0JCQkJaW4gdGhlIG9mZnMgbWVtYmVyIG9mIHRoZSBuYW5kX2JidF9kZXNjciBzdHVjdHVyZS4gRm9yIG1pcnJvcmVkCisJCQkJaW4gdGhlIG9mZnMgbWVtYmVyIG9mIHRoZSBuYW5kX2JidF9kZXNjciBzdHJ1Y3R1cmUuIEZvciBtaXJyb3JlZAogCQkJCWJhZCBibG9jayB0YWJsZXMgZGlmZmVyZW50IHBhdHRlcm5zIGFyZSBtYW5kYXRvcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CiAJCQkJPGxpc3RpdGVtPjxwYXJhPlRhYmxlIGNyZWF0aW9uPC9wYXJhPgogCQkJCTxwYXJhPlNldCB0aGUgb3B0aW9uIE5BTkRfQkJUX0NSRUFURSB0byBlbmFibGUgdGhlIHRhYmxlIGNyZWF0aW9uCkBAIC02NDgsNyArNjQ4LDcgQEAKIAkJCQk8bGlzdGl0ZW0+PHBhcmE+VGFibGUgdmVyc2lvbiBjb250cm9sPC9wYXJhPgogCQkJCTxwYXJhPlNldCB0aGUgb3B0aW9uIE5BTkRfQkJUX1ZFUlNJT04gdG8gZW5hYmxlIHRoZSB0YWJsZSB2ZXJzaW9uIGNvbnRyb2wuCiAJCQkJSXQncyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5hYmxlIHRoaXMgZm9yIG1pcnJvcmVkIHRhYmxlcyB3aXRoIHdyaXRlCi0JCQkJc3VwcG9ydC4gSXQgbWFrZXMgc3VyZSB0aGF0IHRoZSByaXNrIG9mIGxvb3NpbmcgdGhlIGJhZCBibG9jaworCQkJCXN1cHBvcnQuIEl0IG1ha2VzIHN1cmUgdGhhdCB0aGUgcmlzayBvZiBsb3NpbmcgdGhlIGJhZCBibG9jawogCQkJCXRhYmxlIGluZm9ybWF0aW9uIGlzIHJlZHVjZWQgdG8gdGhlIGxvc3Mgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZQogCQkJCW9uZSB3b3JuIG91dCBibG9jayB3aGljaCBzaG91bGQgYmUgbWFya2VkIGJhZC4gVGhlIHZlcnNpb24gaXMgc3RvcmVkIGluCiAJCQkJNCBjb25zZWN1dGl2ZSBieXRlcyBpbiB0aGUgc3BhcmUgYXJlYSBvZiB0aGUgZGV2aWNlLiBUaGUgcG9zaXRpb24gb2YKQEAgLTEwNjAsMTkgKzEwNjAsMTkgQEAKIDxyb3c+CiA8ZW50cnk+MHgzRDwvZW50cnk+CiA8ZW50cnk+RUNDIGJ5dGUgMjE8L2VudHJ5PgotPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIGVpZ3RoIDI1NiBCeXRlcyBvZiBkYXRhCis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMCBvZiB0aGUgZWlnaHRoIDI1NiBCeXRlcyBvZiBkYXRhCiBpbiB0aGlzIHBhZ2U8L2VudHJ5PgogPC9yb3c+CiA8cm93PgogPGVudHJ5PjB4M0U8L2VudHJ5PgogPGVudHJ5PkVDQyBieXRlIDIyPC9lbnRyeT4KLTxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAxIG9mIHRoZSBlaWd0aCAyNTYgQnl0ZXMgb2YgZGF0YQorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDEgb2YgdGhlIGVpZ2h0aCAyNTYgQnl0ZXMgb2YgZGF0YQogaW4gdGhpcyBwYWdlPC9lbnRyeT4KIDwvcm93PgogPHJvdz4KIDxlbnRyeT4weDNGPC9lbnRyeT4KIDxlbnRyeT5FQ0MgYnl0ZSAyMzwvZW50cnk+Ci08ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMiBvZiB0aGUgZWlndGggMjU2IEJ5dGVzIG9mIGRhdGEKKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAyIG9mIHRoZSBlaWdodGggMjU2IEJ5dGVzIG9mIGRhdGEKIGluIHRoaXMgcGFnZTwvZW50cnk+CiA8L3Jvdz4KIDwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3JlZ3VsYXRvci50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3JlZ3VsYXRvci50bXBsCmluZGV4IDUzZjRmOGQuLjM0NmU1NTIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9yZWd1bGF0b3IudG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svcmVndWxhdG9yLnRtcGwKQEAgLTI2Nyw4ICsyNjcsOCBAQAogICAgICA8c2VjdDEgaWQ9Im1hY2hpbmUtY29uc3RyYWludCI+CiAgICAgICAgPHRpdGxlPkNvbnN0cmFpbnRzPC90aXRsZT4KICAgICAgICA8cGFyYT4KLQkgQXMgd2VsbCBhcyBkZWZpbmluaW5nIHRoZSBjb25uZWN0aW9ucyB0aGUgbWFjaGluZSBpbnRlcmZhY2UKLQkgYWxzbyBwcm92aWRlcyBjb25zdHJhaW50cyBkZWZpbmluaW5nIHRoZSBvcGVyYXRpb25zIHRoYXQKKwkgQXMgd2VsbCBhcyBkZWZpbmluZyB0aGUgY29ubmVjdGlvbnMgdGhlIG1hY2hpbmUgaW50ZXJmYWNlCisJIGFsc28gcHJvdmlkZXMgY29uc3RyYWludHMgZGVmaW5pbmcgdGhlIG9wZXJhdGlvbnMgdGhhdAogCSBjbGllbnRzIGFyZSBhbGxvd2VkIHRvIHBlcmZvcm0gYW5kIHRoZSBwYXJhbWV0ZXJzIHRoYXQgbWF5IGJlCiAJIHNldC4gIFRoaXMgaXMgcmVxdWlyZWQgc2luY2UgZ2VuZXJhbGx5IHJlZ3VsYXRvciBkZXZpY2VzIHdpbGwKIAkgb2ZmZXIgbW9yZSBmbGV4aWJpbGl0eSB0aGFuIGl0IGlzIHNhZmUgdG8gdXNlIG9uIGEgZ2l2ZW4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay91aW8taG93dG8udG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay91aW8taG93dG8udG1wbAppbmRleCBiNDY2NWI5Li43YzRiNTE0ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Vpby1ob3d0by50bXBsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay91aW8taG93dG8udG1wbApAQCAtNzk3LDcgKzc5Nyw3IEBACiAJcGVyZm9ybSBzb21lIGluaXRpYWxpemF0aW9uLiBBZnRlciB0aGF0LCB5b3VyIGhhcmR3YXJlCiAJc3RhcnRzIHdvcmtpbmcgYW5kIHdpbGwgZ2VuZXJhdGUgYW4gaW50ZXJydXB0IGFzIHNvb24KIAlhcyBpdCdzIGZpbmlzaGVkLCBoYXMgc29tZSBkYXRhIGF2YWlsYWJsZSwgb3IgbmVlZHMgeW91cgotCWF0dGVudGlvbiBiZWNhdXNlIGFuIGVycm9yIG9jY3VyZWQuCisJYXR0ZW50aW9uIGJlY2F1c2UgYW4gZXJyb3Igb2NjdXJyZWQuCiAJPC9wYXJhPgogCTxwYXJhPgogCTxmaWxlbmFtZT4vZGV2L3Vpb1g8L2ZpbGVuYW1lPiBpcyBhIHJlYWQtb25seSBmaWxlLiBBCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdXNiLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdXNiLnRtcGwKaW5kZXggYWYyOTM2MC4uOGQ1N2MxOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3VzYi50bXBsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay91c2IudG1wbApAQCAtNjkwLDcgKzY5MCw3IEBACiAJCSAgICA8L3BhcmE+PHBhcmE+CiAJCSAgICBUaGlzIHJlcXVlc3QgbGV0cyBrZXJuZWwgZHJpdmVycyB0YWxrIHRvIHVzZXIgbW9kZSBjb2RlCiAJCSAgICB0aHJvdWdoIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBldmVuIHdoZW4gdGhleSBkb24ndCBjcmVhdGUKLQkJICAgIGEgY2hhcmFjdG9yIG9yIGJsb2NrIHNwZWNpYWwgZGV2aWNlLgorCQkgICAgYSBjaGFyYWN0ZXIgb3IgYmxvY2sgc3BlY2lhbCBkZXZpY2UuCiAJCSAgICBJdCdzIGFsc28gYmVlbiB1c2VkIHRvIGRvIHRoaW5ncyBsaWtlIGFzayBkZXZpY2VzIHdoYXQKIAkJICAgIGRldmljZSBzcGVjaWFsIGZpbGUgc2hvdWxkIGJlIHVzZWQuCiAJCSAgICBUd28gcHJlLWRlZmluZWQgaW9jdGxzIGFyZSB1c2VkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2NvbW1vbi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2NvbW1vbi54bWwKaW5kZXggZGJhYjc5Yy4uOTAyODcyMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Y0bC9jb21tb24ueG1sCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvY29tbW9uLnhtbApAQCAtMTAwLDcgKzEwMCw3IEBACiAKICAgICAgIDxwYXJhPkJ5IGNvbnZlbnRpb24gc3lzdGVtIGFkbWluaXN0cmF0b3JzIGNyZWF0ZSB2YXJpb3VzCiBjaGFyYWN0ZXIgZGV2aWNlIHNwZWNpYWwgZmlsZXMgd2l0aCB0aGVzZSBtYWpvciBhbmQgbWlub3IgbnVtYmVycyBpbgotdGhlIDxmaWxlbmFtZT4vZGV2PC9maWxlbmFtZT4gZGlyZWN0b3J5LiBUaGUgbmFtZXMgcmVjb21lbmRlZCBmb3IgdGhlCit0aGUgPGZpbGVuYW1lPi9kZXY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuIFRoZSBuYW1lcyByZWNvbW1lbmRlZCBmb3IgdGhlCiBkaWZmZXJlbnQgVjRMMiBkZXZpY2UgdHlwZXMgYXJlIGxpc3RlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZXZpY2VzIiAvPi4KIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Y0bC9jb250cm9scy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2NvbnRyb2xzLnhtbAppbmRleCAyZmFlM2U4Li5hOTIwZWU4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2NvbnRyb2xzLnhtbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2NvbnRyb2xzLnhtbApAQCAtMTI0Myw3ICsxMjQzLDcgQEAKIAkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk11dGVzIHRoZSBhdWRpbyB3aGVuCiBjYXB0dXJpbmcuIFRoaXMgaXMgbm90IGRvbmUgYnkgbXV0aW5nIGF1ZGlvIGhhcmR3YXJlLCB3aGljaCBjYW4gc3RpbGwKIHByb2R1Y2UgYSBzbGlnaHQgaGlzcywgYnV0IGluIHRoZSBlbmNvZGVyIGl0c2VsZiwgZ3VhcmFudGVlaW5nIGEgZml4ZWQKLWFuZCByZXByb2R1Y2FibGUgYXVkaW8gYml0c3RyZWFtLiAwID0gdW5tdXRlZCwgMSA9IG11dGVkLjwvZW50cnk+CithbmQgcmVwcm9kdWNpYmxlIGF1ZGlvIGJpdHN0cmVhbS4gMCA9IHVubXV0ZWQsIDEgPSBtdXRlZC48L2VudHJ5PgogCSAgICAgIDwvcm93PgogCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CiAJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLWVuY29kaW5nIj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvZGV2LXN1YmRldi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2Rldi1zdWJkZXYueG1sCmluZGV4IDIxY2FmZjYuLjA1YzhmZWYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvZGV2LXN1YmRldi54bWwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Y0bC9kZXYtc3ViZGV2LnhtbApAQCAtOTAsNyArOTAsNyBAQAogICAgIHByb2Nlc3NpbmcgaGFyZHdhcmUuPC9wYXJhPgogCiAgICAgPGZpZ3VyZSBpZD0icGlwZWxpbmUtc2NhbGluZyI+Ci0gICAgICA8dGl0bGU+SW1hZ2UgRm9ybWF0IE5lZ290YXRpb24gb24gUGlwZWxpbmVzPC90aXRsZT4KKyAgICAgIDx0aXRsZT5JbWFnZSBGb3JtYXQgTmVnb3RpYXRpb24gb24gUGlwZWxpbmVzPC90aXRsZT4KICAgICAgIDxtZWRpYW9iamVjdD4KIAk8aW1hZ2VvYmplY3Q+CiAJICA8aW1hZ2VkYXRhIGZpbGVyZWY9InBpcGVsaW5lLnBkZiIgZm9ybWF0PSJQUyIgLz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvbGlidjRsLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvbGlidjRsLnhtbAppbmRleCBjMTRmYzNkLi4zY2IxMGVjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL2xpYnY0bC54bWwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Y0bC9saWJ2NGwueG1sCkBAIC0xNDAsNyArMTQwLDcgQEAKIAkJCTxwYXJhPmludCB2NGwyX2dldF9jb250cm9sKGludCBmZCwgaW50IGNpZCkgLQogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgdmFsdWUgb2YgMCAtIDY1NTM1LCBzY2FsZWQgdG8gZnJvbSB0aGUgYWN0dWFsIHJhbmdlCiBvZiB0aGUgZ2l2ZW4gdjRsIGNvbnRyb2wgaWQuIHdoZW4gdGhlIGNpZCBkb2VzIG5vdCBleGlzdCwgY291bGQgbm90IGJlCi1hY2Nlc3NlZCBmb3Igc29tZSByZWFzb24sIG9yIHNvbWUgZXJyb3Igb2NjdXJlZCAwIGlzIHJldHVybmVkLgorYWNjZXNzZWQgZm9yIHNvbWUgcmVhc29uLCBvciBzb21lIGVycm9yIG9jY3VycmVkIDAgaXMgcmV0dXJuZWQuCiA8L3BhcmE+PC9saXN0aXRlbT4KIDwvaXRlbWl6ZWRsaXN0PgogCQk8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL3JlbW90ZV9jb250cm9sbGVycy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL3JlbW90ZV9jb250cm9sbGVycy54bWwKaW5kZXggM2MzYjY2N2IuLjE2MGU0NjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvcmVtb3RlX2NvbnRyb2xsZXJzLnhtbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL3JlbW90ZV9jb250cm9sbGVycy54bWwKQEAgLTEzMyw3ICsxMzMsNyBAQAogPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9MRUZUPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5MZWZ0IGtleTwvZW50cnk+PGVudHJ5PkxFRlQ8L2VudHJ5Pjwvcm93PgogPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9SSUdIVDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+UmlnaHQga2V5PC9lbnRyeT48ZW50cnk+UklHSFQ8L2VudHJ5Pjwvcm93PgogCi08cm93PjxlbnRyeT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+TWlzY2VsYW5lb3VzIGtleXM8L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+TWlzY2VsbGFuZW91cyBrZXlzPC9lbXBoYXNpcz48L2VudHJ5Pjwvcm93PgogCiA8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0RPVDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+UmV0dXJuIGEgZG90PC9lbnRyeT48ZW50cnk+LjwvZW50cnk+PC9yb3c+CiA8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0ZOPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5TZWxlY3QgYSBmdW5jdGlvbjwvZW50cnk+PGVudHJ5PkZVTkNUSU9OPC9lbnRyeT48L3Jvdz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svd3JpdGluZy1hbi1hbHNhLWRyaXZlci50bXBsCmluZGV4IDBiYTE0OWQuLjU4Y2VkMjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIudG1wbApAQCAtNDc4NCw3ICs0Nzg0LDcgQEAKICAgICAgICAgRk0gcmVnaXN0ZXJzIGNhbiBiZSBkaXJlY3RseSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBkaXJlY3QtRk0gQVBJLAogICAgICAgZGVmaW5lZCBpbiA8ZmlsZW5hbWU+Jmx0O3NvdW5kL2Fzb3VuZF9mbS5oJmd0OzwvZmlsZW5hbWU+LiBJbgogICAgICAgQUxTQSBuYXRpdmUgbW9kZSwgRk0gcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoCi0gICAgICB0aGUgSGFyZHdhcmUtRGVwZW5kYW50IERldmljZSBkaXJlY3QtRk0gZXh0ZW5zaW9uIEFQSSwgd2hlcmVhcyBpbgorICAgICAgdGhlIEhhcmR3YXJlLURlcGVuZGVudCBEZXZpY2UgZGlyZWN0LUZNIGV4dGVuc2lvbiBBUEksIHdoZXJlYXMgaW4KICAgICAgIE9TUyBjb21wYXRpYmxlIG1vZGUsIEZNIHJlZ2lzdGVycyBjYW4gYmUgYWNjZXNzZWQgd2l0aCB0aGUgT1NTCiAgICAgICBkaXJlY3QtRk0gY29tcGF0aWJsZSBBUEkgaW4gPGZpbGVuYW1lPi9kZXYvZG1mbVg8L2ZpbGVuYW1lPiBkZXZpY2UuIAogICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9QQ0kvTVNJLUhPV1RPLnR4dCBiL0RvY3VtZW50YXRpb24vUENJL01TSS1IT1dUTy50eHQKaW5kZXggZGNmN2FjYy4uM2Y1ZTBiMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9QQ0kvTVNJLUhPV1RPLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1BDSS9NU0ktSE9XVE8udHh0CkBAIC0yNTMsOCArMjUzLDggQEAKIG11c3QgYmUgYSBwb3dlciBvZiB0d28pLiAgSW4gYWRkaXRpb24sIHRoZSBNU0kgaW50ZXJydXB0IHZlY3RvcnMgbXVzdAogYmUgYWxsb2NhdGVkIGNvbnNlY3V0aXZlbHksIHNvIHRoZSBzeXN0ZW0gbWF5IG5vdCBiZSBhYmxlIHRvIGFsbG9jYXRlCiBhcyBtYW55IHZlY3RvcnMgZm9yIE1TSSBhcyBpdCBjb3VsZCBmb3IgTVNJLVguICBPbiBzb21lIHBsYXRmb3JtcywgTVNJCi1pbnRlcnJ1cHRzIG11c3QgYWxsIGJlIHRhcmdldHRlZCBhdCB0aGUgc2FtZSBzZXQgb2YgQ1BVcyB3aGVyZWFzIE1TSS1YCi1pbnRlcnJ1cHRzIGNhbiBhbGwgYmUgdGFyZ2V0dGVkIGF0IGRpZmZlcmVudCBDUFVzLgoraW50ZXJydXB0cyBtdXN0IGFsbCBiZSB0YXJnZXRlZCBhdCB0aGUgc2FtZSBzZXQgb2YgQ1BVcyB3aGVyZWFzIE1TSS1YCitpbnRlcnJ1cHRzIGNhbiBhbGwgYmUgdGFyZ2V0ZWQgYXQgZGlmZmVyZW50IENQVXMuCiAKIDQuNS4yIFNwaW5sb2NrcwogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1NlY3VyaXR5QnVncyBiL0RvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCmluZGV4IDI2YzNiMzYuLmE2NjBkNDkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCisrKyBiL0RvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCkBAIC0yOCw3ICsyOCw3IEBACiBBIGRpc2Nsb3N1cmUgZGF0ZSBpcyBuZWdvdGlhdGVkIGJ5IHRoZSBzZWN1cml0eSB0ZWFtIHdvcmtpbmcgd2l0aCB0aGUKIGJ1ZyBzdWJtaXR0ZXIgYXMgd2VsbCBhcyB2ZW5kb3JzLiAgSG93ZXZlciwgdGhlIGtlcm5lbCBzZWN1cml0eSB0ZWFtCiBob2xkcyB0aGUgZmluYWwgc2F5IHdoZW4gc2V0dGluZyBhIGRpc2Nsb3N1cmUgZGF0ZS4gIFRoZSB0aW1lZnJhbWUgZm9yCi1kaXNjbG9zdXJlIGlzIGZyb20gaW1tZWRpYXRlIChlc3AuIGlmIGl0J3MgYWxyZWFkeSBwdWJsaWNhbGx5IGtub3duKQorZGlzY2xvc3VyZSBpcyBmcm9tIGltbWVkaWF0ZSAoZXNwLiBpZiBpdCdzIGFscmVhZHkgcHVibGljbHkga25vd24pCiB0byBhIGZldyB3ZWVrcy4gIEFzIGEgYmFzaWMgZGVmYXVsdCBwb2xpY3ksIHdlIGV4cGVjdCByZXBvcnQgZGF0ZSB0bwogZGlzY2xvc3VyZSBkYXRlIHRvIGJlIG9uIHRoZSBvcmRlciBvZiA3IGRheXMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdEcml2ZXJzCmluZGV4IDM4ZDJhYWIuLjMxOWJhYTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycwpAQCAtMTAxLDcgKzEwMSw3IEBACiAJCWNvbXBsZXRlIG92ZXJ2aWV3IG9mIHRoZSBwb3dlciBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvCiAJCWRyaXZlcnMgc2VlIERvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQgLgogCi1Db250cm9sOglJbiBnZW5lcmFsIGlmIHRoZXJlIGlzIGFjdGl2ZSBtYWludGFpbmFuY2Ugb2YgYSBkcml2ZXIgYnkKK0NvbnRyb2w6CUluIGdlbmVyYWwgaWYgdGhlcmUgaXMgYWN0aXZlIG1haW50ZW5hbmNlIG9mIGEgZHJpdmVyIGJ5CiAJCXRoZSBhdXRob3IgdGhlbiBwYXRjaGVzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGVtIHVubGVzcwogCQl0aGV5IGFyZSB0b3RhbGx5IG9idmlvdXMgYW5kIHdpdGhvdXQgbmVlZCBvZiBjaGVja2luZy4KIAkJSWYgeW91IHdhbnQgdG8gYmUgdGhlIGNvbnRhY3QgYW5kIHVwZGF0ZSBwb2ludCBmb3IgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwppbmRleCA2ODllMjM3Li5lNDM5Y2QwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCisrKyBiL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKQEAgLTcyOSw3ICs3MjksNyBAQAogICA8aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNS80LzcvMTgzPgogCiBBbmRpIEtsZWVuLCAiT24gc3VibWl0dGluZyBrZXJuZWwgcGF0Y2hlcyIKLSAgU29tZSBzdHJhdGVnaWVzIHRvIGdldCBkaWZmaWN1bHQgb3IgY29udHJvdmVyc2FsIGNoYW5nZXMgaW4uCisgIFNvbWUgc3RyYXRlZ2llcyB0byBnZXQgZGlmZmljdWx0IG9yIGNvbnRyb3ZlcnNpYWwgY2hhbmdlcyBpbi4KICAgaHR0cDovL2hhbG9iYXRlcy5kZS9vbi1zdWJtaXR0aW5nLXBhdGNoZXMucGRmCiAKIC0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9JWFA0eHggYi9Eb2N1bWVudGF0aW9uL2FybS9JWFA0eHgKaW5kZXggMTMzYzVmYS4uN2I5MzUxZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hcm0vSVhQNHh4CisrKyBiL0RvY3VtZW50YXRpb24vYXJtL0lYUDR4eApAQCAtMzYsNyArMzYsNyBAQAogLSBUaW1lcnMgKHdhdGNoZG9nLCBPUykKIAogVGhlIGZvbGxvd2luZyBjb21wb25lbnRzIG9mIHRoZSBjaGlwcyBhcmUgbm90IHN1cHBvcnRlZCBieSBMaW51eCBhbmQKLXJlcXVpcmUgdGhlIHVzZSBvZiBJbnRlbCdzIHByb3BpZXRhcnkgQ1NSIHNvZnRhcmU6CityZXF1aXJlIHRoZSB1c2Ugb2YgSW50ZWwncyBwcm9wcmlldGFyeSBDU1Igc29mdGFyZToKIAogLSBVU0IgZGV2aWNlIGludGVyZmFjZQogLSBOZXR3b3JrIGludGVyZmFjZXMgKEhTUywgVXRvcGlhLCBOUEVzLCBldGMpCkBAIC00Nyw3ICs0Nyw3IEBACiAKICAgIGh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tL2Rlc2lnbi9uZXR3b3JrL3Byb2R1Y3RzL25wZmFtaWx5L2l4cDQyNS5odG0gICAgCiAKLURPIE5PVCBQT1NUIFFVRVNUSU9OUyBUTyBUSEUgTElOVVggTUFJTElORyBMSVNUUyBSRUdBUkRJTkcgVEhFIFBST1BJRVRBUlkKK0RPIE5PVCBQT1NUIFFVRVNUSU9OUyBUTyBUSEUgTElOVVggTUFJTElORyBMSVNUUyBSRUdBUkRJTkcgVEhFIFBST1BSSUVUQVJZCiBTT0ZUV0FSRS4KIAogVGhlcmUgYXJlIHNldmVyYWwgd2Vic2l0ZXMgdGhhdCBwcm92aWRlIGRpcmVjdGlvbnMvcG9pbnRlcnMgb24gdXNpbmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9TdXNwZW5kLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9TdXNwZW5kLnR4dAppbmRleCA3ZWRkMGUyLi4xY2E2M2IzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvU3VzcGVuZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1N1c3BlbmQudHh0CkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICBBbGxvd3MgdGhlIGVudGlyZSBtZW1vcnkgdG8gYmUgY2hlY2tzdW1tZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUKICAgICBzdXNwZW5kIHRvIHNlZSBpZiB0aGVyZSBoYXMgYmVlbiBhbnkgY29ycnVwdGlvbiBvZiB0aGUgY29udGVudHMuCiAKLSAgICBOb3RlLCB0aGUgdGltZSB0byBjYWxjdWxhdGUgdGhlIENSQyBpcyBkZXBlbmRhbnQgb24gdGhlIENQVSBzcGVlZAorICAgIE5vdGUsIHRoZSB0aW1lIHRvIGNhbGN1bGF0ZSB0aGUgQ1JDIGlzIGRlcGVuZGVudCBvbiB0aGUgQ1BVIHNwZWVkCiAgICAgYW5kIHRoZSBzaXplIG9mIG1lbW9yeS4gRm9yIGFuIDY0TWJ5dGUgUkFNIGFyZWEgb24gYW4gMjAwTUh6CiAgICAgUzNDMjQxMCwgdGhpcyBjYW4gdGFrZSBhcHByb3hpbWF0ZWx5IDQgc2Vjb25kcyB0byBjb21wbGV0ZS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9HUElPLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvR1BJTy50eHQKaW5kZXggMDU4NTBjNi4uNTEzZjI1NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9HUElPLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nL0dQSU8udHh0CkBAIC01LDcgKzUsNyBAQAogLS0tLS0tLS0tLS0tCiAKIFRoaXMgb3V0bGluZXMgdGhlIFNhbXN1bmcgR1BJTyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIGFyY2hpdGVjdHVyZQotc3BlY2ZpYyBjYWxscyBwcm92aWRlZCBhbG9uZ2lzZGUgdGhlIGRyaXZlcnMvZ3BpbyBjb3JlLgorc3BlY2lmaWMgY2FsbHMgcHJvdmlkZWQgYWxvbmdpc2RlIHRoZSBkcml2ZXJzL2dwaW8gY29yZS4KIAogCiBTM0MyNFhYIChMZWdhY3kpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQKaW5kZXggMmE3YjM4Yy4uYzZkODRjZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dApAQCAtNDk3LDcgKzQ5Nyw3IEBACiBlbnRyaWVzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBkbWEgYWRkcmVzcyBtYXBwaW5ncyBmaWxsZWQgaW4gYXQgdGhlCiBhcHByb3ByaWF0ZSB0aW1lLiBBcyBhbiBvcHRpbWl6YXRpb24sIGNvbnRpZ3VvdXMgcGh5c2ljYWwgcGFnZXMgY2FuIGJlCiBjb3ZlcmVkIGJ5IGEgc2luZ2xlIGVudHJ5IHdoZXJlIDxwYWdlPiByZWZlcnMgdG8gdGhlIGZpcnN0IHBhZ2UgYW5kIDxsZW4+Ci1jb3ZlcnMgdGhlIHJhbmdlIG9mIHBhZ2VzICh1cHRvIDE2IGNvbnRpZ3VvdXMgcGFnZXMgY291bGQgYmUgY292ZXJlZCB0aGlzCitjb3ZlcnMgdGhlIHJhbmdlIG9mIHBhZ2VzICh1cCB0byAxNiBjb250aWd1b3VzIHBhZ2VzIGNvdWxkIGJlIGNvdmVyZWQgdGhpcwogd2F5KS4gVGhlcmUgaXMgYSBoZWxwZXIgcm91dGluZSAoYmxrX3JxX21hcF9zZykgd2hpY2ggZHJpdmVycyBjYW4gdXNlIHRvIGJ1aWxkCiB0aGUgc2cgbGlzdC4KIApAQCAtNTY1LDcgKzU2NSw3IEBACiAJLgogCWludCB0YWc7CS8qIGNvbW1hbmQgdGFnIGFzc29jaWF0ZWQgd2l0aCByZXF1ZXN0ICovCiAJdm9pZCAqc3BlY2lhbDsgIC8qIHNhbWUgYXMgYmVmb3JlICovCi0JY2hhciAqYnVmZmVyOyAgIC8qIHZhbGlkIG9ubHkgZm9yIGxvdyBtZW1vcnkgYnVmZmVycyB1cHRvCisJY2hhciAqYnVmZmVyOyAgIC8qIHZhbGlkIG9ubHkgZm9yIGxvdyBtZW1vcnkgYnVmZmVycyB1cCB0bwogCQkJIGN1cnJlbnRfbnJfc2VjdG9ycyAqLwogCS4KIAkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdS1ob3RwbHVnLnR4dCBiL0RvY3VtZW50YXRpb24vY3B1LWhvdHBsdWcudHh0CmluZGV4IDQ1ZDVhMjEuLmEyMGJmZDQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vY3B1LWhvdHBsdWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vY3B1LWhvdHBsdWcudHh0CkBAIC0xOTYsNyArMTk2LDcgQEAKIAkjVG8gZGlzcGxheSB0aGUgY3VycmVudCBjcHUgc3RhdGUuCiAJI2NhdCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL29ubGluZQogCi1ROiBXaHkgY2FudCBpIHJlbW92ZSBDUFUwIG9uIHNvbWUgc3lzdGVtcz8KK1E6IFdoeSBjYW4ndCBpIHJlbW92ZSBDUFUwIG9uIHNvbWUgc3lzdGVtcz8KIEE6IFNvbWUgYXJjaGl0ZWN0dXJlcyBtYXkgaGF2ZSBzb21lIHNwZWNpYWwgZGVwZW5kZW5jeSBvbiBhIGNlcnRhaW4gQ1BVLgogCiBGb3IgZS5nIGluIElBNjQgcGxhdGZvcm1zIHdlIGhhdmUgYWJpbGl0eSB0byBzZW50IHBsYXRmb3JtIGludGVycnVwdHMgdG8gdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RlbGxfcmJ1LnR4dCBiL0RvY3VtZW50YXRpb24vZGVsbF9yYnUudHh0CmluZGV4IDE1MTc0OTguLmQyNjJlMjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGVsbF9yYnUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGVsbF9yYnUudHh0CkBAIC02Miw3ICs2Miw3IEBACiBmaWxlLgogVGhpcyBmaWxlIGlzIHRoZW4gY29waWVkIHRvIC9zeXMvY2xhc3MvZmlybXdhcmUvZGVsbF9yYnUvZGF0YS4KIE9uY2UgdGhpcyBmaWxlIGdldHMgdG8gdGhlIGRyaXZlciwgdGhlIGRyaXZlciBleHRyYWN0cyBwYWNrZXRfc2l6ZSBkYXRhIGZyb20KLXRoZSBmaWxlIGFuZCBzcHJlYWRzIGl0IGFjY3Jvc3MgdGhlIHBoeXNpY2FsIG1lbW9yeSBpbiBjb250aWd1b3VzIHBhY2tldF9zaXplZAordGhlIGZpbGUgYW5kIHNwcmVhZHMgaXQgYWNyb3NzIHRoZSBwaHlzaWNhbCBtZW1vcnkgaW4gY29udGlndW91cyBwYWNrZXRfc2l6ZWQKIHNwYWNlLgogVGhpcyBtZXRob2QgbWFrZXMgc3VyZSB0aGF0IGFsbCB0aGUgcGFja2V0cyBnZXQgdG8gdGhlIGRyaXZlciBpbiBhIHNpbmdsZSBvcGVyYXRpb24uCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1zZXJ2aWNlLXRpbWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXNlcnZpY2UtdGltZS50eHQKaW5kZXggN2QwMDY2OC4uZmIxZDRhMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXNlcnZpY2UtdGltZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXNlcnZpY2UtdGltZS50eHQKQEAgLTM3LDcgKzM3LDcgQEAKID09PT09PT09PQogCiBkbS1zZXJ2aWNlLXRpbWUgYWRkcyB0aGUgSS9PIHNpemUgdG8gJ2luLWZsaWdodC1zaXplJyB3aGVuIHRoZSBJL08gaXMKLWRpc3BhdGNoZWQgYW5kIHN1YnN0cmFjdHMgd2hlbiBjb21wbGV0ZWQuCitkaXNwYXRjaGVkIGFuZCBzdWJ0cmFjdHMgd2hlbiBjb21wbGV0ZWQuCiBCYXNpY2FsbHksIGRtLXNlcnZpY2UtdGltZSBzZWxlY3RzIGEgcGF0aCBoYXZpbmcgbWluaW11bSBzZXJ2aWNlIHRpbWUKIHdoaWNoIGlzIGNhbGN1bGF0ZWQgYnk6CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9mYi9zbTUwMWZiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9mYi9zbTUwMWZiLnR4dAppbmRleCA3ZDMxOWZiLi45ZDlmMDA5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZmIvc201MDFmYi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ZiL3NtNTAxZmIudHh0CkBAIC0xOCw5ICsxOCw5IEBACiAtIGVkaWQgOiB2ZXJiYXRpbSBFRElEIGRhdGEgYmxvY2sgZGVzY3JpYmluZyBhdHRhY2hlZCBkaXNwbGF5LgogICBEYXRhIGZyb20gdGhlIGRldGFpbGVkIHRpbWluZyBkZXNjcmlwdG9yIHdpbGwgYmUgdXNlZCB0bwogICBwcm9ncmFtIHRoZSBkaXNwbGF5IGNvbnRyb2xsZXIuCi0tIGxpdHRsZS1lbmRpYW46IGF2YWlsaWFibGUgb24gYmlnIGVuZGlhbiBzeXN0ZW1zLCB0bworLSBsaXR0bGUtZW5kaWFuOiBhdmFpbGFibGUgb24gYmlnIGVuZGlhbiBzeXN0ZW1zLCB0bwogICBzZXQgZGlmZmVyZW50IGZvcmVpZ24gZW5kaWFuLgotLSBiaWctZW5kaWFuOiBhdmFpbGlhYmxlIG9uIGxpdHRsZSBlbmRpYW4gc3lzdGVtcywgdG8KKy0gYmlnLWVuZGlhbjogYXZhaWxhYmxlIG9uIGxpdHRsZSBlbmRpYW4gc3lzdGVtcywgdG8KICAgc2V0IGRpZmZlcmVudCBmb3JlaWduIGVuZGlhbi4KIAogRXhhbXBsZSBmb3IgTVBDNTIwMDoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZnNsLXVwbS1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZnNsLXVwbS1uYW5kLnR4dAppbmRleCBhNDhiMmNhLi4wMGYxZjU0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZzbC11cG0tbmFuZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc2wtdXBtLW5hbmQudHh0CkBAIC0xNSw3ICsxNSw3IEBACiAtIGdwaW9zIDogbWF5IHNwZWNpZnkgb3B0aW9uYWwgR1BJT3MgY29ubmVjdGVkIHRvIHRoZSBSZWFkeS1Ob3QtQnVzeSBwaW5zCiAJKFIvQiMpLiBGb3IgbXVsdGktY2hpcCBkZXZpY2VzLCAibiIgR1BJTyBkZWZpbml0aW9ucyBhcmUgcmVxdWlyZWQKIAlhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjaGlwcy4KLS0gY2hpcC1kZWxheSA6IGNoaXAgZGVwZW5kZW50IGRlbGF5IGZvciB0cmFuc2ZlcmluZyBkYXRhIGZyb20gYXJyYXkgdG8KKy0gY2hpcC1kZWxheSA6IGNoaXAgZGVwZW5kZW50IGRlbGF5IGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIGFycmF5IHRvCiAJcmVhZCByZWdpc3RlcnMgKHRSKS4gUmVxdWlyZWQgaWYgcHJvcGVydHkgImdwaW9zIiBpcyBub3QgdXNlZAogCShSL0IjIHBpbnMgbm90IGNvbm5lY3RlZCkuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3NqYTEwMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc2phMTAwMC50eHQKaW5kZXggZDZkMjA5ZC4uYzJkYmNlYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc2phMTAwMC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc2phMTAwMC50eHQKQEAgLTM5LDcgKzM5LDcgQEAKIAogLSBueHAsbm8tY29tcGFyYXRvci1ieXBhc3MgOiBBbGxvd3MgdG8gZGlzYWJsZSB0aGUgQ0FOIGlucHV0IGNvbXBlcmF0b3IuCiAKLUZvciBmdXRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBoYXZlIGEgbG9vayB0byB0aGUgU0pBMTAwMCBkYXRhIHNoZWV0LgorRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBoYXZlIGEgbG9vayB0byB0aGUgU0pBMTAwMCBkYXRhIHNoZWV0LgogCiBFeGFtcGxlczoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21waWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21waWMudHh0CmluZGV4IDhhYTEwZjQuLjRmNjE0NTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGljLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBpYy50eHQKQEAgLTE5OSw3ICsxOTksNyBAQAogCiBFWEFNUExFIDUKIAkvKgotCSAqIERlZmluaXRpb24gb2YgYW4gZXJyb3IgaW50ZXJydXB0IChpbnRlcnVwdCB0eXBlIDEpLgorCSAqIERlZmluaXRpb24gb2YgYW4gZXJyb3IgaW50ZXJydXB0IChpbnRlcnJ1cHQgdHlwZSAxKS4KIAkgKiBTb0MgaW50ZXJydXB0IG51bWJlciBpcyAxNiBhbmQgdGhlIHNwZWNpZmljIGVycm9yCiAgICAgICAgICAqIGludGVycnVwdCBiaXQgaW4gdGhlIGVycm9yIGludGVycnVwdCBzdW1tYXJ5IHJlZ2lzdGVyCiAJICogaXMgMjMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZHZiLXVzYiBiL0RvY3VtZW50YXRpb24vZHZiL1JFQURNRS5kdmItdXNiCmluZGV4IGM4MjM4ZTQuLmM0ZDk2M2E2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZHZiLXVzYgorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZHZiLXVzYgpAQCAtMTM4LDcgKzEzOCw3IEBACiBpbiB0aGUgZGV2aWNlKS4KIAogSWYgeW91IHdhbnQgdG8gZW5hYmxlIGRlYnVnIG91dHB1dCwgeW91IGhhdmUgdG8gbG9hZCB0aGUgZHJpdmVyIG1hbnVhbGx5IGFuZAotZnJvbSB3aXRoaW5nIHRoZSBkdmIta2VybmVsIGN2cyByZXBvc2l0b3J5LgorZnJvbSB3aXRoaW4gdGhlIGR2Yi1rZXJuZWwgY3ZzIHJlcG9zaXRvcnkuCiAKIGZpcnN0IGhhdmUgYSBsb29rLCB3aGljaCBkZWJ1ZyBsZXZlbCBhcmUgYXZhaWxhYmxlOgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9jaS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jaS50eHQKaW5kZXggNGEwYzJiNS4uNmMzYmRhNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kdmIvY2kudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZHZiL2NpLnR4dApAQCAtNDcsNyArNDcsNyBAQAogCiAqIENJIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotVGhlIENJIG1vZHVsZSBzdXBwb3J0IGlzIGxhcmdlbHkgZGVwZW5kYW50IHVwb24gdGhlIGZpcm13YXJlIG9uIHRoZSBjYXJkcworVGhlIENJIG1vZHVsZSBzdXBwb3J0IGlzIGxhcmdlbHkgZGVwZW5kZW50IHVwb24gdGhlIGZpcm13YXJlIG9uIHRoZSBjYXJkcwogU29tZSBjYXJkcyBkbyBzdXBwb3J0IGFsbW9zdCBhbGwgb2YgdGhlIGF2YWlsYWJsZSBDSSBtb2R1bGVzLiBUaGVyZSBpcwogbm90aGluZyBtdWNoIHRoYXQgY2FuIGJlIGRvbmUgaW4gb3JkZXIgdG8gbWFrZSBhZGRpdGlvbmFsIENJIG1vZHVsZXMKIHdvcmtpbmcgd2l0aCB0aGVzZSBjYXJkcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL2ZhcS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9mYXEudHh0CmluZGV4IDEyMTgzMmUuLjk3YjEzNzMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZHZiL2ZhcS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kdmIvZmFxLnR4dApAQCAtMTA2LDcgKzEwNiw3IEBACiA1LiBUaGUgZHZiX25ldCBkZXZpY2UgZG9lc24ndCBnaXZlIG1lIGFueSBwYWNrZXRzIGF0IGFsbAogCiAJUnVuIHRjcGR1bXAgb24gdGhlIGR2YjBfMCBpbnRlcmZhY2UuIFRoaXMgc2V0cyB0aGUgaW50ZXJmYWNlCi0JaW50byBwcm9taXNjb3VzIG1vZGUgc28gaXQgYWNjZXB0cyBhbnkgcGFja2V0cyBmcm9tIHRoZSBQSUQKKwlpbnRvIHByb21pc2N1b3VzIG1vZGUgc28gaXQgYWNjZXB0cyBhbnkgcGFja2V0cyBmcm9tIHRoZSBQSUQKIAl5b3UgaGF2ZSBjb25maWd1cmVkIHdpdGggdGhlIGR2Ym5ldCB1dGlsaXR5LiBDaGVjayBpZiB0aGVyZQogCWFyZSBhbnkgcGFja2V0cyB3aXRoIHRoZSBJUCBhZGRyIGFuZCBNQUMgYWRkciB5b3UgaGF2ZQogCWNvbmZpZ3VyZWQgd2l0aCBpZmNvbmZpZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZWRhYy50eHQgYi9Eb2N1bWVudGF0aW9uL2VkYWMudHh0CmluZGV4IGNjYzA3YzIuLjI0OTgyMmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZWRhYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9lZGFjLnR4dApAQCAtNzQxLDcgKzc0MSw3IEBACiAgICBBcyBFREFDIEFQSSBtYXBzIHRoZSBtaW5pbXVtIHVuaXR5IGlzIGNzcm93cywgdGhlIGRyaXZlciBzZXF1ZW5jaWFsbHkKICAgIG1hcHMgY2hhbm5lbC9kaW1tIGludG8gZGlmZmVyZW50IGNzcm93cy4KIAotICAgRm9yIGV4YW1wbGUsIHN1cG9zaW5nIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgorICAgRm9yIGV4YW1wbGUsIHN1cHBvc2luZyB0aGUgZm9sbG93aW5nIGxheW91dDoKIAlDaDAgcGh5IHJkMCwgd3IwICgweDA2M2Y0MDMxKTogMiByYW5rcywgVURJTU1zCiAJICBkaW1tIDAgMTAyNCBNYiBvZmZzZXQ6IDAsIGJhbms6IDgsIHJhbms6IDEsIHJvdzogMHg0MDAwLCBjb2w6IDB4NDAwCiAJICBkaW1tIDEgMTAyNCBNYiBvZmZzZXQ6IDQsIGJhbms6IDgsIHJhbms6IDEsIHJvdzogMHg0MDAwLCBjb2w6IDB4NDAwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Vpc2EudHh0IGIvRG9jdW1lbnRhdGlvbi9laXNhLnR4dAppbmRleCBmMjk3ZmMxLi4zOGNmMGM3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Vpc2EudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZWlzYS50eHQKQEAgLTg0LDcgKzg0LDcgQEAKIAogaWRfdGFibGUJOiBhbiBhcnJheSBvZiBOVUxMIHRlcm1pbmF0ZWQgRUlTQSBpZCBzdHJpbmdzLAogCQkgIGZvbGxvd2VkIGJ5IGFuIGVtcHR5IHN0cmluZy4gRWFjaCBzdHJpbmcgY2FuCi0JCSAgb3B0aW9uYWxseSBiZSBwYWlyZWQgd2l0aCBhIGRyaXZlci1kZXBlbmRhbnQgdmFsdWUKKwkJICBvcHRpb25hbGx5IGJlIHBhaXJlZCB3aXRoIGEgZHJpdmVyLWRlcGVuZGVudCB2YWx1ZQogCQkgIChkcml2ZXJfZGF0YSkuCiAKIGRyaXZlcgkJOiBhIGdlbmVyaWMgZHJpdmVyLCBzdWNoIGFzIGRlc2NyaWJlZCBpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi92aWFmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3ZpYWZiLnR4dAppbmRleCAxYTJlOGFhLi40NDRlMzRiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZiL3ZpYWZiLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3ZpYWZiLnR4dApAQCAtMjA0LDcgKzIwNCw3IEBACiAKICAgICBzdXBwb3J0ZWRfb3V0cHV0X2RldmljZXMKIAotICAgICAgICBUaGlzIHJlYWQtb25seSBmaWxlIGNvbnRhaW5zIGEgZnVsbCAnLCcgc2VwZXJhdGVkIGxpc3QgY29udGFpbmluZyBhbGwKKyAgICAgICAgVGhpcyByZWFkLW9ubHkgZmlsZSBjb250YWlucyBhIGZ1bGwgJywnIHNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgYWxsCiAgICAgICAgIG91dHB1dCBkZXZpY2VzIHRoYXQgY291bGQgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uIEl0IGlzIGxpa2VseQogICAgICAgICB0aGF0IG5vdCBhbGwgb2YgdGhvc2UgaGF2ZSBhIGNvbm5lY3RvciBvbiB5b3VyIGhhcmR3YXJlIGJ1dCBpdCBzaG91bGQKICAgICAgICAgcHJvdmlkZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZmlndXJlIG91dCB3aGljaCBvZiB0aG9zZSBuYW1lcyBtYXRjaApAQCAtMjI1LDcgKzIyNSw3IEBACiAgICAgICAgIFRoaXMgY2FuIGhhcHBlbiBmb3IgZXhhbXBsZSBpZiBvbmx5IG9uZSAodGhlIG90aGVyKSBpZ2EgaXMgdXNlZC4KICAgICAgICAgV3JpdGluZyB0byB0aGVzZSBmaWxlcyBhbGxvd3MgYWRqdXN0aW5nIHRoZSBvdXRwdXQgZGV2aWNlcyBkdXJpbmcKICAgICAgICAgcnVudGltZS4gT25lIGNhbiBhZGQgbmV3IGRldmljZXMsIHJlbW92ZSBleGlzdGluZyBvbmVzIG9yIHN3aXRjaAotICAgICAgICBiZXR3ZWVuIGlnYXMuIEVzc2VudGlhbGx5IHlvdSBjYW4gd3JpdGUgYSAnLCcgc2VwZXJhdGVkIGxpc3Qgb2YgZGV2aWNlCisgICAgICAgIGJldHdlZW4gaWdhcy4gRXNzZW50aWFsbHkgeW91IGNhbiB3cml0ZSBhICcsJyBzZXBhcmF0ZWQgbGlzdCBvZiBkZXZpY2UKICAgICAgICAgbmFtZXMgKG9yIGEgc2luZ2xlIG9uZSkgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBvdXRwdXQgdG8gdGhvc2UKICAgICAgICAgZmlsZXMuIFlvdSBjYW4gYWRkIGEgJysnIG9yICctJyBhcyBhIHByZWZpeCBhbGxvd2luZyBzaW1wbGUgYWRkaXRpb24KICAgICAgICAgYW5kIHJlbW92YWwgb2YgZGV2aWNlcy4gU28gYSBwcmVmaXggJysnIGFkZHMgdGhlIGRldmljZXMgZnJvbSB5b3VyIGxpc3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYXV0b2ZzNC1tb3VudC1jb250cm9sLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYXV0b2ZzNC1tb3VudC1jb250cm9sLnR4dAppbmRleCA1MTk4NmJmLi40Yzk1OTM1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2F1dG9mczQtbW91bnQtY29udHJvbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hdXRvZnM0LW1vdW50LWNvbnRyb2wudHh0CkBAIC0zMDksNyArMzA5LDcgQEAKIEFVVE9GU19ERVZfSU9DVExfVElNRU9VVF9DTUQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2V0IHRoZSBleHBpcmUgdGltZW91dCBmb3IgbW91bnRzIHdpdGhpbmcgYW4gYXV0b2ZzIG1vdW50IHBvaW50LgorU2V0IHRoZSBleHBpcmUgdGltZW91dCBmb3IgbW91bnRzIHdpdGhpbiBhbiBhdXRvZnMgbW91bnQgcG9pbnQuCiAKIFRoZSBjYWxsIHJlcXVpcmVzIGFuIGluaXRpYWxpemVkIHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsIHdpdGggdGhlCiBpb2N0bGZkIGZpZWxkIHNldCB0byB0aGUgZGVzY3JpcHRvciBvYnRhaW5lZCBmcm9tIHRoZSBvcGVuIGNhbGwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvbmV0ZnMtYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9uZXRmcy1hcGkudHh0CmluZGV4IDE5MDJjNTcuLmExNjdhYjggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9uZXRmcy1hcGkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9uZXRmcy1hcGkudHh0CkBAIC05NSw3ICs5NSw3IEBACiB0aGUgdHJlZS4gIFRoZSBuZXRmcyBjYW4gZXZlbiBtaXggaW5kaWNlcyBhbmQgZGF0YSBmaWxlcyBhdCB0aGUgc2FtZSBsZXZlbCwgYnV0CiBpdCdzIG5vdCByZWNvbW1lbmRlZC4KIAotRWFjaCBpbmRleCBlbnRyeSBjb25zaXN0cyBvZiBhIGtleSBvZiBpbmRldGVybWluYXRlIGxlbmd0aCBwbHVzIHNvbWUgYXV4aWxsaWFyeQorRWFjaCBpbmRleCBlbnRyeSBjb25zaXN0cyBvZiBhIGtleSBvZiBpbmRldGVybWluYXRlIGxlbmd0aCBwbHVzIHNvbWUgYXV4aWxpYXJ5CiBkYXRhLCBhbHNvIG9mIGluZGV0ZXJtaW5hdGUgbGVuZ3RoLgogCiBUaGVyZSBhcmUgc29tZSBsaW1pdHMgb24gaW5kaWNlczoKQEAgLTIwMywyMyArMjAzLDIzIEBACiAKICAgICAgSWYgdGhlIGZ1bmN0aW9uIGlzIGFic2VudCwgYSBmaWxlIHNpemUgb2YgMCBpcyBhc3N1bWVkLgogCi0gKDYpIEEgZnVuY3Rpb24gdG8gcmV0cmlldmUgYXV4aWxsaWFyeSBkYXRhIGZyb20gdGhlIG5ldGZzIFtvcHRpb25hbF0uCisgKDYpIEEgZnVuY3Rpb24gdG8gcmV0cmlldmUgYXV4aWxpYXJ5IGRhdGEgZnJvbSB0aGUgbmV0ZnMgW29wdGlvbmFsXS4KIAogICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIG5ldGZzIGRhdGEgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZQotICAgICBjb29raWUgYWNxdWlzaXRpb24gZnVuY3Rpb24gYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhdXhpbGxpYXJ5IGRhdGEgdGhhdAotICAgICBpdCBtYXkgcHJvdmlkZS4gIEl0IHNob3VsZCB3cml0ZSB0aGUgYXV4aWxsaWFyeSBkYXRhIGludG8gdGhlIGdpdmVuIGJ1ZmZlcgorICAgICBjb29raWUgYWNxdWlzaXRpb24gZnVuY3Rpb24gYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhdXhpbGlhcnkgZGF0YSB0aGF0CisgICAgIGl0IG1heSBwcm92aWRlLiAgSXQgc2hvdWxkIHdyaXRlIHRoZSBhdXhpbGlhcnkgZGF0YSBpbnRvIHRoZSBnaXZlbiBidWZmZXIKICAgICAgYW5kIHJldHVybiB0aGUgcXVhbnRpdHkgaXQgd3JvdGUuCiAKLSAgICAgSWYgdGhpcyBmdW5jdGlvbiBpcyBhYnNlbnQsIHRoZSBhdXhpbGxpYXJ5IGRhdGEgbGVuZ3RoIHdpbGwgYmUgc2V0IHRvIDAuCisgICAgIElmIHRoaXMgZnVuY3Rpb24gaXMgYWJzZW50LCB0aGUgYXV4aWxpYXJ5IGRhdGEgbGVuZ3RoIHdpbGwgYmUgc2V0IHRvIDAuCiAKLSAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXV4aWxsaWFyeSBkYXRhIGJ1ZmZlciBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBrZXkKKyAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXV4aWxpYXJ5IGRhdGEgYnVmZmVyIG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIGtleQogICAgICBsZW5ndGguICBBIG5ldGZzIG11c3RuJ3QgcmVseSBvbiBiZWluZyBhYmxlIHRvIHByb3ZpZGUgbW9yZSB0aGFuIDQwMCBieXRlcwogICAgICBmb3IgYm90aC4KIAotICg3KSBBIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBhdXhpbGxpYXJ5IGRhdGEgW29wdGlvbmFsXS4KKyAoNykgQSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYXV4aWxpYXJ5IGRhdGEgW29wdGlvbmFsXS4KIAogICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHRvIGNoZWNrIHRoYXQgYSBtYXRjaCBmb3VuZCBpbiB0aGUgY2FjaGUgZm9yCi0gICAgIHRoaXMgb2JqZWN0IGlzIHZhbGlkLiAgRm9yIGluc3RhbmNlIHdpdGggQUZTIGl0IGNvdWxkIGNoZWNrIHRoZSBhdXhpbGxpYXJ5CisgICAgIHRoaXMgb2JqZWN0IGlzIHZhbGlkLiAgRm9yIGluc3RhbmNlIHdpdGggQUZTIGl0IGNvdWxkIGNoZWNrIHRoZSBhdXhpbGlhcnkKICAgICAgZGF0YSBhZ2FpbnN0IHRoZSBkYXRhIHZlcnNpb24gbnVtYmVyIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgdG8gZGV0ZXJtaW5lCiAgICAgIHdoZXRoZXIgdGhlIGluZGV4IGVudHJ5IGluIGEgY2FjaGUgaXMgc3RpbGwgdmFsaWQuCiAKQEAgLTIzMiw3ICsyMzIsNyBAQAogCSgqKSBGU0NBQ0hFX0NIRUNLQVVYX05FRURTX1VQREFURQktIHRoZSBlbnRyeSByZXF1aXJlcyB1cGRhdGUKIAkoKikgRlNDQUNIRV9DSEVDS0FVWF9PQlNPTEVURQkJLSB0aGUgZW50cnkgc2hvdWxkIGJlIGRlbGV0ZWQKIAotICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGJlIHVzZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGF1eGlsbGlhcnkgZGF0YSBpbgorICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGJlIHVzZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGF1eGlsaWFyeSBkYXRhIGluCiAgICAgIHRoZSBjYWNoZSBhbmQgY29weSBpdCBpbnRvIHRoZSBuZXRmcydzIHN0cnVjdHVyZXMuCiAKICAoOCkgQSBwYWlyIG9mIGZ1bmN0aW9ucyB0byBtYW5hZ2UgY29udGV4dHMgZm9yIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzL2NvbmZpZ2ZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY29uZmlnZnMvY29uZmlnZnMudHh0CmluZGV4IGZhYmNiMGUuLmRkNTdiYjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY29uZmlnZnMvY29uZmlnZnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY29uZmlnZnMvY29uZmlnZnMudHh0CkBAIC00MDksNyArNDA5LDcgQEAKIHJtZGlyKDIpLiAgVGhleSBhbHNvIGFyZSBub3QgY29uc2lkZXJlZCB3aGVuIHJtZGlyKDIpIG9uIHRoZSBwYXJlbnQKIGdyb3VwIGlzIGNoZWNraW5nIGZvciBjaGlsZHJlbi4KIAotW0RlcGVuZGFudCBTdWJzeXN0ZW1zXQorW0RlcGVuZGVudCBTdWJzeXN0ZW1zXQogCiBTb21ldGltZXMgb3RoZXIgZHJpdmVycyBkZXBlbmQgb24gcGFydGljdWxhciBjb25maWdmcyBpdGVtcy4gIEZvcgogZXhhbXBsZSwgb2NmczIgbW91bnRzIGRlcGVuZCBvbiBhIGhlYXJ0YmVhdCByZWdpb24gaXRlbS4gIElmIHRoYXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0NC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQudHh0CmluZGV4IDZiMDUwNDYuLmM3OWVjNTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0NC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dApAQCAtOTcsNyArOTcsNyBAQAogKiBJbm9kZSBhbGxvY2F0aW9uIHVzaW5nIGxhcmdlIHZpcnR1YWwgYmxvY2sgZ3JvdXBzIHZpYSBmbGV4X2JnCiAqIGRlbGF5ZWQgYWxsb2NhdGlvbgogKiBsYXJnZSBibG9jayAodXAgdG8gcGFnZXNpemUpIHN1cHBvcnQKLSogZWZmaWNlbnQgbmV3IG9yZGVyZWQgbW9kZSBpbiBKQkQyIGFuZCBleHQ0KGF2b2lkIHVzaW5nIGJ1ZmZlciBoZWFkIHRvIGZvcmNlCisqIGVmZmljaWVudCBuZXcgb3JkZXJlZCBtb2RlIGluIEpCRDIgYW5kIGV4dDQoYXZvaWQgdXNpbmcgYnVmZmVyIGhlYWQgdG8gZm9yY2UKICAgdGhlIG9yZGVyaW5nKQogCiBbMV0gRmlsZXN5c3RlbXMgd2l0aCBhIGJsb2NrIHNpemUgb2YgMWsgbWF5IHNlZSBhIGxpbWl0IGltcG9zZWQgYnkgdGhlCkBAIC0xMDYsNyArMTA2LDcgQEAKIDIuMiBDYW5kaWRhdGUgZmVhdHVyZXMgZm9yIGZ1dHVyZSBpbmNsdXNpb24KIAogKiBPbmxpbmUgZGVmcmFnIChwYXRjaGVzIGF2YWlsYWJsZSBidXQgbm90IHdlbGwgdGVzdGVkKQotKiByZWR1Y2VkIG1rZTJmcyB0aW1lIHZpYSBsYXp5IGl0YWJsZSBpbml0aWFsaXphdGlvbiBpbiBjb25qdWN0aW9uIHdpdGgKKyogcmVkdWNlZCBta2UyZnMgdGltZSB2aWEgbGF6eSBpdGFibGUgaW5pdGlhbGl6YXRpb24gaW4gY29uanVuY3Rpb24gd2l0aAogICB0aGUgdW5pbml0X2JnIGZlYXR1cmUgKGNhcGFiaWxpdHkgdG8gZG8gdGhpcyBpcyBhdmFpbGFibGUgaW4gZTJmc3Byb2dzCiAgIGJ1dCBhIGtlcm5lbCB0aHJlYWQgdG8gZG8gbGF6eSB6ZXJvaW5nIG9mIHVudXNlZCBpbm9kZSB0YWJsZSBibG9ja3MKICAgYWZ0ZXIgZmlsZXN5c3RlbSBpcyBmaXJzdCBtb3VudGVkIGlzIHJlcXVpcmVkIGZvciBzYWZldHkpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczItdWV2ZW50cy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczItdWV2ZW50cy50eHQKaW5kZXggZmQ5NjZkYy4uZDgxODg5NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLXVldmVudHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi11ZXZlbnRzLnR4dApAQCAtNjIsNyArNjIsNyBAQAogCiBUaGUgUkVNT1ZFIHVldmVudCBpcyBnZW5lcmF0ZWQgYXQgdGhlIGVuZCBvZiBhbiB1bnN1Y2Nlc3NmdWwgbW91bnQKIG9yIGF0IHRoZSBlbmQgb2YgYSB1bW91bnQgb2YgdGhlIGZpbGVzeXN0ZW0uIEFsbCBSRU1PVkUgdWV2ZW50cyB3aWxsCi1oYXZlIGJlZW4gcHJlY2VlZGVkIGJ5IGF0IGxlYXN0IGFuIEFERCB1ZXZlbnQgZm9yIHRoZSBzYW1lIGZpbGV5c3RlbSwKK2hhdmUgYmVlbiBwcmVjZWRlZCBieSBhdCBsZWFzdCBhbiBBREQgdWV2ZW50IGZvciB0aGUgc2FtZSBmaWxleXN0ZW0sCiBhbmQgdW5saWtlIHRoZSBvdGhlciB1ZXZlbnRzIGlzIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBrZXJuZWwncwoga29iamVjdCBzdWJzeXN0ZW0uCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczIudHh0CmluZGV4IDBiNTljMDIuLjRjZGE5MjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLnR4dApAQCAtMTEsNyArMTEsNyBAQAogZmVhdHVyZXMgb2YgR0ZTIGlzIHBlcmZlY3QgY29uc2lzdGVuY3kgLS0gY2hhbmdlcyBtYWRlIHRvIHRoZSBmaWxlIHN5c3RlbQogb24gb25lIG1hY2hpbmUgc2hvdyB1cCBpbW1lZGlhdGVseSBvbiBhbGwgb3RoZXIgbWFjaGluZXMgaW4gdGhlIGNsdXN0ZXIuCiAKLUdGUyB1c2VzIGludGVyY2hhbmdhYmxlIGludGVyLW5vZGUgbG9ja2luZyBtZWNoYW5pc21zLCB0aGUgY3VycmVudGx5CitHRlMgdXNlcyBpbnRlcmNoYW5nZWFibGUgaW50ZXItbm9kZSBsb2NraW5nIG1lY2hhbmlzbXMsIHRoZSBjdXJyZW50bHkKIHN1cHBvcnRlZCBtZWNoYW5pc21zIGFyZToKIAogICBsb2NrX25vbG9jayAtLSBhbGxvd3MgZ2ZzIHRvIGJlIHVzZWQgYXMgYSBsb2NhbCBmaWxlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbnRmcy50eHQKaW5kZXggOTMzYmM2Ni4uNzkxYWY4ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL250ZnMudHh0CkBAIC0zNTAsNyArMzUwLDcgQEAKIGFscmVhZHkgaW4gc3luYyB3aGljaCB3aWxsIGJlIHRoZSBjYXNlIG9uIGEgY2xlYW4gc2h1dGRvd24gb2YgV2luZG93cy4gIElmIHRoZQogbWlycm9ycyBhcmUgbm90IGNsZWFuLCB5b3UgY2FuIHNwZWNpZnkgdGhlICJzeW5jIiBvcHRpb24gaW5zdGVhZCBvZiAibm9zeW5jIgogYW5kIHRoZSBEZXZpY2UtTWFwcGVyIGRyaXZlciB3aWxsIHRoZW4gY29weSB0aGUgZW50aXJldHkgb2YgdGhlICJTb3VyY2UgRGV2aWNlIgotdG8gdGhlICJUYXJnZXQgRGV2aWNlIiBvciBpZiB5b3Ugc3BlY2lmaWVkIG11bHRpcGxlZCB0YXJnZXQgZGV2aWNlcyB0byBhbGwgb2YKK3RvIHRoZSAiVGFyZ2V0IERldmljZSIgb3IgaWYgeW91IHNwZWNpZmllZCBtdWx0aXBsZSB0YXJnZXQgZGV2aWNlcyB0byBhbGwgb2YKIHRoZW0uCiAKIE9uY2UgeW91IGhhdmUgeW91ciB0YWJsZSwgc2F2ZSBpdCBpbiBhIGZpbGUgc29tZXdoZXJlIChlLmcuIC9ldGMvbnRmc3ZvbHVtZTEpLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vY2ZzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL29jZnMyLnR4dAppbmRleCA1MzkzZTY2Li45ZWQ5MjBhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL29jZnMyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL29jZnMyLnR4dApAQCAtODAsNyArODAsNyBAQAogbm91c2VyX3hhdHRyCQlEaXNhYmxlcyBFeHRlbmRlZCBVc2VyIEF0dHJpYnV0ZXMuCiBhY2wJCQlFbmFibGVzIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIHN1cHBvcnQuCiBub2FjbAkJKCopCURpc2FibGVzIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIHN1cHBvcnQuCi1yZXN2X2xldmVsPTIJKCopCVNldCBob3cgYWdyZXNzaXZlIGFsbG9jYXRpb24gcmVzZXJ2YXRpb25zIHdpbGwgYmUuCityZXN2X2xldmVsPTIJKCopCVNldCBob3cgYWdncmVzc2l2ZSBhbGxvY2F0aW9uIHJlc2VydmF0aW9ucyB3aWxsIGJlLgogCQkJVmFsaWQgdmFsdWVzIGFyZSBiZXR3ZWVuIDAgKHJlc2VydmF0aW9ucyBvZmYpIHRvIDgKIAkJCShtYXhpbXVtIHNwYWNlIGZvciByZXNlcnZhdGlvbnMpLgogZGlyX3Jlc3ZfbGV2ZWw9CSgqKQlCeSBkZWZhdWx0LCBkaXJlY3RvcnkgcmVzZXJ2YXRpb25zIHdpbGwgc2NhbGUgd2l0aCBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BhdGgtbG9va3VwLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAudHh0CmluZGV4IGViNTljOGIuLjM1NzE2NjcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAudHh0CkBAIC00Miw3ICs0Miw3IEBACiBBIG5hbWUgc3RyaW5nIHNwZWNpZmllcyBhIHN0YXJ0IChyb290IGRpcmVjdG9yeSwgY3dkLCBmZC1yZWxhdGl2ZSkgYW5kIGEKIHNlcXVlbmNlIG9mIGVsZW1lbnRzIChkaXJlY3RvcnkgZW50cnkgbmFtZXMpLCB3aGljaCB0b2dldGhlciByZWZlciB0byBhIHBhdGggaW4KIHRoZSBuYW1lc3BhY2UuIEEgcGF0aCBpcyByZXByZXNlbnRlZCBhcyBhIChkZW50cnksIHZmc21vdW50KSB0dXBsZS4gVGhlIG5hbWUKLWVsZW1lbnRzIGFyZSBzdWItc3RyaW5ncywgc2VwZXJhdGVkIGJ5ICcvJy4KK2VsZW1lbnRzIGFyZSBzdWItc3RyaW5ncywgc2VwYXJhdGVkIGJ5ICcvJy4KIAogTmFtZSBsb29rdXBzIHdpbGwgd2FudCB0byBmaW5kIGEgcGFydGljdWxhciBwYXRoIHRoYXQgYSBuYW1lIHN0cmluZyByZWZlcnMgdG8KICh1c3VhbGx5IHRoZSBmaW5hbCBlbGVtZW50LCBvciBwYXJlbnQgb2YgZmluYWwgZWxlbWVudCkuIFRoaXMgaXMgZG9uZSBieSB0YWtpbmcKQEAgLTM1NCw3ICszNTQsNyBAQAogCiBXaGF0IHRoaXMgc2hvd3MgaXMgdGhhdCBmYWlsZWQgcmN1LXdhbGsgbG9va3VwcywgaWUuIG9uZXMgdGhhdCBhcmUgcmVzdGFydGVkCiBlbnRpcmVseSB3aXRoIHJlZi13YWxrLCBhcmUgcXVpdGUgcmFyZS4gRXZlbiB0aGUgInZmc3Rlc3QiIGNhc2Ugd2hpY2gKLXNwZWNpZmljYWxseSBoYXMgY29uY3VycmVudCByZW5hbWVzL21rZGlyL3JtZGlyLyBjcmVhdC91bmxpbmsvZXRjIHRvIGV4Y2VyY2lzZQorc3BlY2lmaWNhbGx5IGhhcyBjb25jdXJyZW50IHJlbmFtZXMvbWtkaXIvcm1kaXIvIGNyZWF0L3VubGluay9ldGMgdG8gZXhlcmNpc2UKIHN1Y2ggcmFjZXMgaXMgbm90IHNob3dpbmcgYSBodWdlIGFtb3VudCBvZiByZXN0YXJ0cy4KIAogRHJvcHBpbmcgZnJvbSByY3Utd2FsayB0byByZWYtd2FsayBtZWFuIHRoYXQgd2UgaGF2ZSBlbmNvdW50ZXJlZCBhIGRlbnRyeSB3aGVyZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb2htZWxmcy9uZXR3b3JrX3Byb3RvY29sLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvbmV0d29ya19wcm90b2NvbC50eHQKaW5kZXggNDBlYTZjMi4uNjVlMDNkZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb2htZWxmcy9uZXR3b3JrX3Byb3RvY29sLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BvaG1lbGZzL25ldHdvcmtfcHJvdG9jb2wudHh0CkBAIC0yMCw3ICsyMCw3IEBACiBzbyBvbmUgY2FuIGV4dGVuZCBwcm90b2NvbCBhcyBuZWVkZWQgd2l0aG91dCBicmVha2luZyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIGxvbmcKIGFzIG9sZCBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLiBBbGwgc3RyaW5nIGxlbmd0aHMgaW5jbHVkZSB0YWlsIDAgYnl0ZS4KIAotQWxsIGNvbW1hbnMgYXJlIHRyYW5zZmVyZWQgb3ZlciB0aGUgbmV0d29yayBpbiBiaWctZW5kaWFuLiBDUFUgZW5kaWFuZXNzIGlzIHVzZWQgYXQgdGhlIGVuZCBwZWVycy4KK0FsbCBjb21tYW5kcyBhcmUgdHJhbnNmZXJyZWQgb3ZlciB0aGUgbmV0d29yayBpbiBiaWctZW5kaWFuLiBDUFUgZW5kaWFuZXNzIGlzIHVzZWQgYXQgdGhlIGVuZCBwZWVycy4KIAogQGNtZCAtIGNvbW1hbmQgbnVtYmVyLCB3aGljaCBzcGVjaWZpZXMgY29tbWFuZCB0byBiZSBwcm9jZXNzZWQuIEZvbGxvd2luZwogCWNvbW1hbmRzIGFyZSB1c2VkIGN1cnJlbnRseToKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0CmluZGV4IDIzY2FlNjUuLmIwYjgxNGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnR4dApAQCAtNTQzLDcgKzU0Myw3IEBACiAgIHRoZWlyIHN0YXRpc3RpY3MgYXJlIHVzZWQgYnkga2VybmVsIGRldmVsb3BlcnMgYW5kIGludGVyZXN0ZWQgdXNlcnMgdG8KICAgZGV0ZXJtaW5lIHRoZSBvY2N1cnJlbmNlIG9mIGludGVycnVwdHMgb2YgdGhlIGdpdmVuIHR5cGUuCiAKLVRoZSBhYm92ZSBJUlEgdmVjdG9ycyBhcmUgZGlzcGxheWVkIG9ubHkgd2hlbiByZWxldmVudC4gIEZvciBleGFtcGxlLAorVGhlIGFib3ZlIElSUSB2ZWN0b3JzIGFyZSBkaXNwbGF5ZWQgb25seSB3aGVuIHJlbGV2YW50LiAgRm9yIGV4YW1wbGUsCiB0aGUgdGhyZXNob2xkIHZlY3RvciBkb2VzIG5vdCBleGlzdCBvbiB4ODZfNjQgcGxhdGZvcm1zLiAgT3RoZXJzIGFyZQogc3VwcHJlc3NlZCB3aGVuIHRoZSBzeXN0ZW0gaXMgYSB1bmlwcm9jZXNzb3IuICBBcyBvZiB0aGlzIHdyaXRpbmcsIG9ubHkKIGkzODYgYW5kIHg4Nl82NCBwbGF0Zm9ybXMgc3VwcG9ydCB0aGUgbmV3IElSUSB2ZWN0b3IgZGlzcGxheXMuCkBAIC0xMjAyLDcgKzEyMDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBXID0gY2FuIGRvIHdyaXRlIG9wZXJhdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgVSA9IGNhbiBkbyB1bmJsYW5rCiAgIGZsYWdzICAgICAgICAgICAgICAgIEUgPSBpdCBpcyBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgIEMgPSBpdCBpcyBwcmVmZXJlZCBjb25zb2xlCisgICAgICAgICAgICAgICAgICAgICAgIEMgPSBpdCBpcyBwcmVmZXJyZWQgY29uc29sZQogICAgICAgICAgICAgICAgICAgICAgICBCID0gaXQgaXMgcHJpbWFyeSBib290IGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGl0IGlzIHVzZWQgZm9yIHByaW50ayBidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGl0IGlzIG5vdCBhIFRUWSBidXQgYSBCcmFpbGxlIGRldmljZQpAQCAtMTMzMSw3ICsxMzMxLDcgQEAKIERvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dC4KIAogQ2F2ZWF0OiB3aGVuIGEgcGFyZW50IHRhc2sgaXMgc2VsZWN0ZWQsIHRoZSBvb20ga2lsbGVyIHdpbGwgc2FjcmlmaWNlIGFueSBmaXJzdAotZ2VuZXJhdGlvbiBjaGlsZHJlbiB3aXRoIHNlcGVyYXRlIGFkZHJlc3Mgc3BhY2VzIGluc3RlYWQsIGlmIHBvc3NpYmxlLiAgVGhpcworZ2VuZXJhdGlvbiBjaGlsZHJlbiB3aXRoIHNlcGFyYXRlIGFkZHJlc3Mgc3BhY2VzIGluc3RlYWQsIGlmIHBvc3NpYmxlLiAgVGhpcwogYXZvaWRzIHNlcnZlcnMgYW5kIGltcG9ydGFudCBzeXN0ZW0gZGFlbW9ucyBmcm9tIGJlaW5nIGtpbGxlZCBhbmQgbG9zZXMgdGhlCiBtaW5pbWFsIGFtb3VudCBvZiB3b3JrLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NxdWFzaGZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3F1YXNoZnMudHh0CmluZGV4IDJkNzhmMTkuLmQ0ZDQxNDY1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NxdWFzaGZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NxdWFzaGZzLnR4dApAQCAtMjE5LDcgKzIxOSw3IEBACiByZWZlcmVuY2UgdG8gd2hlcmUgdGhlIGFjdHVhbCB2YWx1ZSBpcyBzdG9yZWQpLiAgVGhpcyBhbGxvd3MgbGFyZ2UgdmFsdWVzCiB0byBiZSBzdG9yZWQgb3V0IG9mIGxpbmUgaW1wcm92aW5nIHNjYW5uaW5nIGFuZCBsb29rdXAgcGVyZm9ybWFuY2UgYW5kIGl0CiBhbHNvIGFsbG93cyB2YWx1ZXMgdG8gYmUgZGUtZHVwbGljYXRlZCwgdGhlIHZhbHVlIGJlaW5nIHN0b3JlZCBvbmNlLCBhbmQKLWFsbCBvdGhlciBvY2N1cmVuY2VzIGhvbGRpbmcgYW4gb3V0IG9mIGxpbmUgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUuCithbGwgb3RoZXIgb2NjdXJyZW5jZXMgaG9sZGluZyBhbiBvdXQgb2YgbGluZSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZS4KIAogVGhlIHhhdHRyIGxpc3RzIGFyZSBwYWNrZWQgaW50byBjb21wcmVzc2VkIDhLIG1ldGFkYXRhIGJsb2Nrcy4KIFRvIHJlZHVjZSBvdmVyaGVhZCBpbiBpbm9kZXMsIHJhdGhlciB0aGFuIHN0b3JpbmcgdGhlIG9uLWRpc2sKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKaW5kZXggZjgwNmU1MC4uNTk3ZjcyOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKQEAgLTYyLDcgKzYyLDcgQEAKIAogTWl4aW5nIHR5cGVzLCBleHByZXNzaW5nIG11bHRpcGxlIGxpbmVzIG9mIGRhdGEsIGFuZCBkb2luZyBmYW5jeQogZm9ybWF0dGluZyBvZiBkYXRhIGlzIGhlYXZpbHkgZnJvd25lZCB1cG9uLiBEb2luZyB0aGVzZSB0aGluZ3MgbWF5IGdldAoteW91IHB1YmxpY2FsbHkgaHVtaWxpYXRlZCBhbmQgeW91ciBjb2RlIHJld3JpdHRlbiB3aXRob3V0IG5vdGljZS4gCit5b3UgcHVibGljbHkgaHVtaWxpYXRlZCBhbmQgeW91ciBjb2RlIHJld3JpdHRlbiB3aXRob3V0IG5vdGljZS4gCiAKIAogQW4gYXR0cmlidXRlIGRlZmluaXRpb24gaXMgc2ltcGx5OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0CmluZGV4IDgwODE1ZWQuLjIxYTdkYzQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Zmcy50eHQKQEAgLTk3LDcgKzk3LDcgQEAKIFRoZSBwYXNzZWQgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZGVzY3JpYmVzIHlvdXIgZmlsZXN5c3RlbS4gV2hlbiBhCiByZXF1ZXN0IGlzIG1hZGUgdG8gbW91bnQgYSBmaWxlc3lzdGVtIG9udG8gYSBkaXJlY3RvcnkgaW4geW91ciBuYW1lc3BhY2UsCiB0aGUgVkZTIHdpbGwgY2FsbCB0aGUgYXBwcm9wcmlhdGUgbW91bnQoKSBtZXRob2QgZm9yIHRoZSBzcGVjaWZpYwotZmlsZXN5c3RlbS4gIE5ldyB2ZnNtb3VudCByZWZlcmluZyB0byB0aGUgdHJlZSByZXR1cm5lZCBieSAtPm1vdW50KCkKK2ZpbGVzeXN0ZW0uICBOZXcgdmZzbW91bnQgcmVmZXJyaW5nIHRvIHRoZSB0cmVlIHJldHVybmVkIGJ5IC0+bW91bnQoKQogd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgbW91bnRwb2ludCwgc28gdGhhdCB3aGVuIHBhdGhuYW1lIHJlc29sdXRpb24KIHJlYWNoZXMgdGhlIG1vdW50cG9pbnQgaXQgd2lsbCBqdW1wIGludG8gdGhlIHJvb3Qgb2YgdGhhdCB2ZnNtb3VudC4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtZGVsYXllZC1sb2dnaW5nLWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dAppbmRleCA1MjgyZTNlLi4yY2UzNjQzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dApAQCAtNDIsNyArNDIsNyBAQAogVGhpcyByZWxvZ2dpbmcgdGVjaG5pcXVlIGFsc28gYWxsb3dzIG9iamVjdHMgdG8gYmUgbW92ZWQgZm9yd2FyZCBpbiB0aGUgbG9nIHNvCiB0aGF0IGFuIG9iamVjdCBiZWluZyByZWxvZ2dlZCBkb2VzIG5vdCBwcmV2ZW50IHRoZSB0YWlsIG9mIHRoZSBsb2cgZnJvbSBldmVyCiBtb3ZpbmcgZm9yd2FyZC4gIFRoaXMgY2FuIGJlIHNlZW4gaW4gdGhlIHRhYmxlIGFib3ZlIGJ5IHRoZSBjaGFuZ2luZwotKGluY3JlYXNpbmcpIExTTiBvZiBlYWNoIHN1YnNxdWVudCB0cmFuc2FjdGlvbiAtIHRoZSBMU04gaXMgZWZmZWN0aXZlbHkgYQorKGluY3JlYXNpbmcpIExTTiBvZiBlYWNoIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb24gLSB0aGUgTFNOIGlzIGVmZmVjdGl2ZWx5IGEKIGRpcmVjdCBlbmNvZGluZyBvZiB0aGUgbG9jYXRpb24gaW4gdGhlIGxvZyBvZiB0aGUgdHJhbnNhY3Rpb24uCiAKIFRoaXMgcmVsb2dnaW5nIGlzIGFsc28gdXNlZCB0byBpbXBsZW1lbnQgbG9uZy1ydW5uaW5nLCBtdWx0aXBsZS1jb21taXQKQEAgLTMzOCw3ICszMzgsNyBAQAogaW50byB0aGUgbmV3IENJTCwgdGhlbiBjaGVja3BvaW50IHRyYW5zYWN0aW9uIGNvbW1pdCBjb2RlIGNhbm5vdCB1c2UgbG9nIGl0ZW1zCiB0byBzdG9yZSB0aGUgbGlzdCBvZiBsb2cgdmVjdG9ycyB0aGF0IG5lZWQgdG8gYmUgd3JpdHRlbiBpbnRvIHRoZSB0cmFuc2FjdGlvbi4KIEhlbmNlIGxvZyB2ZWN0b3JzIG5lZWQgdG8gYmUgYWJsZSB0byBiZSBjaGFpbmVkIHRvZ2V0aGVyIHRvIGFsbG93IHRoZW0gdG8gYmUKLWRldGF0Y2hlZCBmcm9tIHRoZSBsb2cgaXRlbXMuIFRoYXQgaXMsIHdoZW4gdGhlIENJTCBpcyBmbHVzaGVkIHRoZSBtZW1vcnkKK2RldGFjaGVkIGZyb20gdGhlIGxvZyBpdGVtcy4gVGhhdCBpcywgd2hlbiB0aGUgQ0lMIGlzIGZsdXNoZWQgdGhlIG1lbW9yeQogYnVmZmVyIGFuZCBsb2cgdmVjdG9yIGF0dGFjaGVkIHRvIGVhY2ggbG9nIGl0ZW0gbmVlZHMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlCiBjaGVja3BvaW50IGNvbnRleHQgc28gdGhhdCB0aGUgbG9nIGl0ZW0gY2FuIGJlIHJlbGVhc2VkLiBJbiBkaWFncmFtbWF0aWMgZm9ybSwKIHRoZSBDSUwgd291bGQgbG9vayBsaWtlIHRoaXMgYmVmb3JlIHRoZSBmbHVzaDoKQEAgLTU3Nyw3ICs1NzcsNyBAQAogcGVuZGluZyB0cmFuc2FjdGlvbnMuIFRodXMgdGhlIHBpbm5pbmcgYW5kIHVucGlubmluZyBvZiBhIGxvZyBpdGVtIGlzIHN5bW1ldHJpYwogYXMgdGhlcmUgaXMgYSAxOjEgcmVsYXRpb25zaGlwIHdpdGggdHJhbnNhY3Rpb24gY29tbWl0IGFuZCBsb2cgaXRlbSBjb21wbGV0aW9uLgogCi1Gb3IgZGVsYXllZCBsb2dnaW5nLCBob3dldmVyLCB3ZSBoYXZlIGFuIGFzc3ltZXRyaWMgdHJhbnNhY3Rpb24gY29tbWl0IHRvCitGb3IgZGVsYXllZCBsb2dnaW5nLCBob3dldmVyLCB3ZSBoYXZlIGFuIGFzeW1tZXRyaWMgdHJhbnNhY3Rpb24gY29tbWl0IHRvCiBjb21wbGV0aW9uIHJlbGF0aW9uc2hpcC4gRXZlcnkgdGltZSBhbiBvYmplY3QgaXMgcmVsb2dnZWQgaW4gdGhlIENJTCBpdCBnb2VzCiB0aHJvdWdoIHRoZSBjb21taXQgcHJvY2VzcyB3aXRob3V0IGEgY29ycmVzcG9uZGluZyBjb21wbGV0aW9uIGJlaW5nIHJlZ2lzdGVyZWQuCiBUaGF0IGlzLCB3ZSBub3cgaGF2ZSBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQKQEAgLTc4MCw3ICs3ODAsNyBAQAogRnJvbSB0aGlzLCBpdCBjYW4gYmUgc2VlbiB0aGF0IHRoZSBvbmx5IGxpZmUgY3ljbGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvCiBsb2dnaW5nIG1ldGhvZHMgYXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGxpZmUgY3ljbGUgLSB0aGV5IHN0aWxsIGhhdmUgdGhlIHNhbWUKIGJlZ2lubmluZyBhbmQgZW5kIGFuZCBleGVjdXRpb24gY29uc3RyYWludHMuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGFyZSBpbiB0aGUKLWNvbW1pdGluZyBvZiB0aGUgbG9nIGl0ZW1zIHRvIHRoZSBsb2cgaXRzZWxmIGFuZCB0aGUgY29tcGxldGlvbiBwcm9jZXNzaW5nLgorY29tbWl0dGluZyBvZiB0aGUgbG9nIGl0ZW1zIHRvIHRoZSBsb2cgaXRzZWxmIGFuZCB0aGUgY29tcGxldGlvbiBwcm9jZXNzaW5nLgogSGVuY2UgZGVsYXllZCBsb2dnaW5nIHNob3VsZCBub3QgaW50cm9kdWNlIGFueSBjb25zdHJhaW50cyBvbiBsb2cgaXRlbQogYmVoYXZpb3VyLCBhbGxvY2F0aW9uIG9yIGZyZWVpbmcgdGhhdCBkb24ndCBhbHJlYWR5IGV4aXN0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydSBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CmluZGV4IDVlYjNiOWQuLjkxNWYzMjAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CkBAIC03OCw3ICs3OCw3IEBACiAKIFRoZSBmaXJzdCBhbmQgc2Vjb25kIHJldmlzaW9uIG9mIHRoZSB1R3VydSBjaGlwIGluIHJlYWxpdHkgaXMgYSBXaW5ib25kCiBXODNMOTUwRCBpbiBkaXNndWlzZSAoZGVzcGl0ZSBBYml0IGNsYWltaW5nIGl0IGlzICJhIG5ldyBtaWNyb3Byb2Nlc3NvcgotZGVzaWduZWQgYnkgdGhlIEFCSVQgRW5naW5lZXJzIikuIFVuZm9ydHVuYXRseSB0aGlzIGRvZXNuJ3QgaGVscCBzaW5jZSB0aGUKK2Rlc2lnbmVkIGJ5IHRoZSBBQklUIEVuZ2luZWVycyIpLiBVbmZvcnR1bmF0ZWx5IHRoaXMgZG9lc24ndCBoZWxwIHNpbmNlIHRoZQogVzgzTDk1MEQgaXMgYSBnZW5lcmljIG1pY3JvY29udHJvbGxlciB3aXRoIGEgY3VzdG9tIEFiaXQgYXBwbGljYXRpb24gcnVubmluZwogb24gaXQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1LWRhdGFzaGVldCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1LWRhdGFzaGVldAppbmRleCBkOTI1MWVmLi44ZDJiZThhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydS1kYXRhc2hlZXQKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUtZGF0YXNoZWV0CkBAIC01LDkgKzUsOSBAQAogZGF0YXNoZWV0IGZyb20gQWJpdC4gVGhlIGRhdGEgSSBoYXZlIGdvdCBvbiB1R3VydSBoYXZlIEkgYXNzZW1ibGVkIHRocm91Z2gKIG15IHdlYWsga25vd2xlZGdlIGluICJiYWNrd2FyZHMgZW5naW5lZXJpbmciLgogQW5kIGp1c3QgZm9yIHRoZSByZWNvcmQsIHlvdSBtYXkgaGF2ZSBub3RpY2VkIHVHdXJ1IGlzbid0IGEgY2hpcCBkZXZlbG9wZWQgYnkKLUFiaXQsIGFzIHRoZXkgY2xhaW0gaXQgdG8gYmUuIEl0J3MgcmVhbHkganVzdCBhbiBtaWNyb3Byb2Nlc3NvciAodUMpIGNyZWF0ZWQgYnkKK0FiaXQsIGFzIHRoZXkgY2xhaW0gaXQgdG8gYmUuIEl0J3MgcmVhbGx5IGp1c3QgYW4gbWljcm9wcm9jZXNzb3IgKHVDKSBjcmVhdGVkIGJ5CiBXaW5ib25kIChXODNMOTUwRCkuIEFuZCBubywgcmVhZGluZyB0aGUgbWFudWFsIGZvciB0aGlzIHNwZWNpZmljIHVDIG9yCi1tYWlsaW5nICBXaW5kYm9uZCBmb3IgaGVscCB3b24ndCBnaXZlIGFueSB1c2VmdWxsIGRhdGEgYWJvdXQgdUd1cnUsIGFzIGl0IGlzCittYWlsaW5nICBXaW5kYm9uZCBmb3IgaGVscCB3b24ndCBnaXZlIGFueSB1c2VmdWwgZGF0YSBhYm91dCB1R3VydSwgYXMgaXQgaXMKIHRoZSBwcm9ncmFtIGluc2lkZSB0aGUgdUMgdGhhdCBpcyByZXNwb25kaW5nIHRvIGNhbGxzLgogCiBPbGxlIFNhbmRiZXJnIDxvbGxlYnVsbEBnbWFpbC5jb20+LCAyMDA1LTA1LTI1CkBAIC00MSw3ICs0MSw3IEBACiAKIEFmdGVyIHdpZGVyIHRlc3Rpbmcgb2YgdGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgc29tZSB2YXJpYW50cyBvZiB0aGUgdUd1cnUgaGF2ZQogdHVybmVkIHVwIHdoaWNoIHdpbGwgaG9sZCAweDAwIGluc3RlYWQgb2YgMHhBQyBhdCB0aGUgQ01EIHBvcnQsIHRodXMgd2UgYWxzbwotaGF2ZSB0byB0ZXN0IENNRCBmb3IgdHdvIGRpZmZlcmVudCB2YWx1ZXMuIE9uIHRoZXNlIHVHdXJ1J3MgREFUQSB3aWxsIGluaXRhbGx5CitoYXZlIHRvIHRlc3QgQ01EIGZvciB0d28gZGlmZmVyZW50IHZhbHVlcy4gT24gdGhlc2UgdUd1cnUncyBEQVRBIHdpbGwgaW5pdGlhbGx5CiBob2xkIDB4MDkgYW5kIHdpbGwgb25seSBob2xkIDB4MDggYWZ0ZXIgcmVhZGluZyBDTUQgZmlyc3QsIHNvIENNRCBtdXN0IGJlIHJlYWQKIGZpcnN0IQogCkBAIC0zMDgsNSArMzA4LDUgQEAKIHJlc3VsdGVkIGluIGEgX3Blcm1hbmVudF8gcmVwcm9ncmFtbWluZyBvZiB0aGUgdm9sdGFnZXMsIGx1Y2tpbHkgSSBoYWQgdGhlCiBzZW5zb3JzIHBhcnQgY29uZmlndXJlZCBzbyB0aGF0IGl0IHdvdWxkIHNodXRkb3duIG15IHN5c3RlbSBvbiBhbnkgb3V0IG9mIHNwZWMKIHZvbHRhZ2VzIHdoaWNoIHByb3ByYWJseSBzYWZlZCBteSBjb21wdXRlciAoYWZ0ZXIgYSByZWJvb3QgSSBtYW5hZ2VkIHRvCi1pbW1lZGlhdGx5IGVudGVyIHRoZSBiaW9zIGFuZCByZWxvYWQgdGhlIGRlZmF1bHRzKS4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0CitpbW1lZGlhdGVseSBlbnRlciB0aGUgYmlvcyBhbmQgcmVsb2FkIHRoZSBkZWZhdWx0cykuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdAogdGhlIHJlYWQvd3JpdGUgY3ljbGUgZm9yIHRoZSBub24gc2Vuc29yIHBhcnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHNlbnNvciBwYXJ0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUzIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUzCmluZGV4IGZhNTk4YWEuLmE2Y2NmZTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1MworKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydTMKQEAgLTQ3LDcgKzQ3LDcgQEAKIHRoZSBBYml0IHVHdXJ1IGNoaXAsIGZvdW5kIG9uIHJlY2VudCBBYml0IHVHdXJ1IGZlYXR1cmluZyBtb3RoZXJib2FyZHMuCiAKIFRoZSAzcmQgcmV2aXNpb24gb2YgdGhlIHVHdXJ1IGNoaXAgaW4gcmVhbGl0eSBpcyBhIFdpbmJvbmQgVzgzTDk1MUcuCi1VbmZvcnR1bmF0bHkgdGhpcyBkb2Vzbid0IGhlbHAgc2luY2UgdGhlIFc4M0w5NTFHIGlzIGEgZ2VuZXJpYyBtaWNyb2NvbnRyb2xsZXIKK1VuZm9ydHVuYXRlbHkgdGhpcyBkb2Vzbid0IGhlbHAgc2luY2UgdGhlIFc4M0w5NTFHIGlzIGEgZ2VuZXJpYyBtaWNyb2NvbnRyb2xsZXIKIHdpdGggYSBjdXN0b20gQWJpdCBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGl0LgogCiBEZXNwaXRlIEFiaXQgbm90IHJlbGVhc2luZyBhbnkgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB1R3VydSByZXZpc2lvbiAzLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cyBiL0RvY3VtZW50YXRpb24vaHdtb24vcG1idXMKaW5kZXggZjJkNDJlOC4uZGM0OTMzZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cworKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzCkBAIC0xNTAsMTEgKzE1MCwxMSBAQAogYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5LgogCiBpblhfaW5wdXQJCU1lYXN1cmVkIHZvbHRhZ2UuIEZyb20gUkVBRF9WSU4gb3IgUkVBRF9WT1VUIHJlZ2lzdGVyLgotaW5YX21pbgkJCU1pbnVtdW0gVm9sdGFnZS4KK2luWF9taW4JCQlNaW5pbXVtIFZvbHRhZ2UuCiAJCQlGcm9tIFZJTl9VVl9XQVJOX0xJTUlUIG9yIFZPVVRfVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KIGluWF9tYXgJCQlNYXhpbXVtIHZvbHRhZ2UuCiAJCQlGcm9tIFZJTl9PVl9XQVJOX0xJTUlUIG9yIFZPVVRfT1ZfV0FSTl9MSU1JVCByZWdpc3Rlci4KLWluWF9sY3JpdAkJQ3JpdGljYWwgbWludW11bSBWb2x0YWdlLgoraW5YX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIFZvbHRhZ2UuCiAJCQlGcm9tIFZJTl9VVl9GQVVMVF9MSU1JVCBvciBWT1VUX1VWX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgogaW5YX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gdm9sdGFnZS4KIAkJCUZyb20gVklOX09WX0ZBVUxUX0xJTUlUIG9yIFZPVVRfT1ZfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCkBAIC0xNjksNyArMTY5LDcgQEAKIGN1cnJYX2lucHV0CQlNZWFzdXJlZCBjdXJyZW50LiBGcm9tIFJFQURfSUlOIG9yIFJFQURfSU9VVCByZWdpc3Rlci4KIGN1cnJYX21heAkJTWF4aW11bSBjdXJyZW50LgogCQkJRnJvbSBJSU5fT0NfV0FSTl9MSU1JVCBvciBJT1VUX09DX1dBUk5fTElNSVQgcmVnaXN0ZXIuCi1jdXJyWF9sY3JpdAkJQ3JpdGljYWwgbWludW11bSBvdXRwdXQgY3VycmVudC4KK2N1cnJYX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIG91dHB1dCBjdXJyZW50LgogCQkJRnJvbSBJT1VUX1VDX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgogY3VyclhfY3JpdAkJQ3JpdGljYWwgbWF4aW11bSBjdXJyZW50LgogCQkJRnJvbSBJSU5fT0NfRkFVTFRfTElNSVQgb3IgSU9VVF9PQ19GQVVMVF9MSU1JVCByZWdpc3Rlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKaW5kZXggODNhNjk4Ny4uOGY2M2MyNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKQEAgLTU3OSw3ICs1NzksNyBAQAogZmFuWzEtKl1fZmF1bHQKIHRlbXBbMS0qXV9mYXVsdAogCQlJbnB1dCBmYXVsdCBjb25kaXRpb24KLQkJMDogbm8gZmF1bHQgb2NjdXJlZAorCQkwOiBubyBmYXVsdCBvY2N1cnJlZAogCQkxOiBmYXVsdCBjb25kaXRpb24KIAkJUk8KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkCmluZGV4IGVjYmMxZTQuLjEyOWIwYTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzgxZAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc4MWQKQEAgLTQwMyw3ICs0MDMsNyBAQAogCiAweDgwIC0gc2VlbXMgdG8gdHVybiBmYW5zIG9mZiBhZnRlciBzb21lIHRpbWUoMS0yIG1pbnV0ZXMpLi4uIG1pZ2h0IGJlCiBzb21lIGZvcm0gb2YgYXV0by1mYW4tY29udHJvbCBiYXNlZCBvbiB0ZW1wPyBobW0gKFFmYW4/IHRoaXMgbW9ibyBpcyBhbgotb2xkIEFTVVMsIGl0IGlzbid0IG1hcmtldGVkIGFzIFFmYW4uIE1heWJlIHNvbWUgYmV0YSBwcmUtYXR0ZW1wIGF0IFFmYW4KK29sZCBBU1VTLCBpdCBpc24ndCBtYXJrZXRlZCBhcyBRZmFuLiBNYXliZSBzb21lIGJldGEgcHJlLWF0dGVtcHQgYXQgUWZhbgogdGhhdCB3YXMgZHJvcHBlZCBhdCB0aGUgQklPUykKIDB4ODEgLSBvZmYKIDB4ODIgLSBzbGlnaHRseSAib24tbmVyIiB0aGFuIG9mZiwgYnV0IG15IGZhbnMgZG8gbm90IGdldCB0byBtb3ZlLiBJIGNhbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkCmluZGV4IDU2NjNlNDkuLjkwMzg3YzMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkxZAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MWQKQEAgLTkzLDcgKzkzLDcgQEAKIG1ldGhvZCBvZiBhIHNpbmdsZSBzeXNmcyBiZWVwX21hc2sgZmlsZSB0byBhIG5ld2VyIG1ldGhvZCB1c2luZyBtdWx0aXBsZQogKl9iZWVwIGZpbGVzIGFzIGRlc2NyaWJlZCBpbiAuLi4vRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UuCiAKLUEgc2ltaWxhciBjaGFuZ2UgaGFzIG9jY3VyZWQgZm9yIHRoZSBiaXRtYXAgY29ycmVzcG9uZGluZyB0byB0aGUgYWxhcm1zLiBUaGUKK0Egc2ltaWxhciBjaGFuZ2UgaGFzIG9jY3VycmVkIGZvciB0aGUgYml0bWFwIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFsYXJtcy4gVGhlCiBvcmlnaW5hbCBsZWdhY3kgbWV0aG9kIHVzZWQgYSBzaW5nbGUgc3lzZnMgYWxhcm1zIGZpbGUgY29udGFpbmluZyBhIGJpdG1hcAogb2YgdHJpZ2dlcmVkIGFsYXJtcy4gVGhlIG5ld2VyIG1ldGhvZCB1c2VzIG11bHRpcGxlIHN5c2ZzICpfYWxhcm0gZmlsZXMKIChhZ2FpbiBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gZGVzY3JpYmVkIGluIHN5c2ZzLWludGVyZmFjZSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBhcnBvcnQtbGlnaHQgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBhcnBvcnQtbGlnaHQKaW5kZXggYmRjOWNiYi4uYzIyZWUwNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0CisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGFycG9ydC1saWdodApAQCAtNCw3ICs0LDcgQEAKIAogVGhpcyBkcml2ZXIgaXMgYSBsaWdodCB2ZXJzaW9uIG9mIGkyYy1wYXJwb3J0LiBJdCBkb2Vzbid0IGRlcGVuZCAgICAgICAgCiBvbiB0aGUgcGFycG9ydCBkcml2ZXIsIGFuZCB1c2VzIGRpcmVjdCBJL08gYWNjZXNzIGluc3RlYWQuIFRoaXMgbWlnaHQgYmUKLXByZWZlcmVkIG9uIGVtYmVkZGVkIHN5c3RlbXMgd2hlcmUgd2FzdGluZyBtZW1vcnkgZm9yIHRoZSBjbGVhbiBidXQgaGVhdnkKK3ByZWZlcnJlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zIHdoZXJlIHdhc3RpbmcgbWVtb3J5IGZvciB0aGUgY2xlYW4gYnV0IGhlYXZ5CiBwYXJwb3J0IGhhbmRsaW5nIGlzIG5vdCBhbiBvcHRpb24uIFRoZSBkcmF3YmFjayBpcyBhIHJlZHVjZWQgcG9ydGFiaWxpdHkKIGFuZCB0aGUgaW1wb3NzaWJpbGl0eSB0byBkYWlzeS1jaGFpbiBvdGhlciBwYXJhbGxlbCBwb3J0IGRldmljZXMuICAgICAgICAgICAgICAgICAKICAgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXNpczk2eCBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CmluZGV4IDcwZTZhMGMuLjBiOTc5ZjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CkBAIC0zNSw3ICszNSw3IEBACiAKIChrZXJuZWwgdmVyc2lvbnMgbGF0ZXIgdGhhbiAyLjQuMTggbWF5IGZpbGwgaW4gdGhlICJVbmtub3duInMpCiAKLUlmIHlvdSBjYW50IHNlZSBpdCBwbGVhc2UgbG9vayBvbiBxdWlya19zaXNfOTZ4X3NtYnVzCitJZiB5b3UgY2FuJ3Qgc2VlIGl0IHBsZWFzZSBsb29rIG9uIHF1aXJrX3Npc185Nnhfc21idXMKIChkcml2ZXJzL3BjaS9xdWlya3MuYykgKGFsc28gaWYgc291dGhicmlkZ2UgZGV0ZWN0aW9uIGZhaWxzKQogCiBJIHN1c3BlY3QgdGhhdCB0aGlzIGRyaXZlciBjb3VsZCBiZSBtYWRlIHRvIHdvcmsgZm9yIHRoZSBmb2xsb3dpbmcgU2lTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXRhb3MtZXZtIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy10YW9zLWV2bQppbmRleCA5MTQ2ZTMzLi42M2Y2MmJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXRhb3MtZXZtCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdGFvcy1ldm0KQEAgLTEzLDcgKzEzLDcgQEAKIAogKiBUQU9TIFRTTDI1NTAgRVZNCiAKLUZvciBhZGR0aW9uYWwgaW5mb3JtYXRpb24gb24gVEFPUyBwcm9kdWN0cywgcGxlYXNlIHNlZQorRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gVEFPUyBwcm9kdWN0cywgcGxlYXNlIHNlZQogICBodHRwOi8vd3d3LnRhb3NpbmMuY29tLwogCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJvL1JFQURNRSBiL0RvY3VtZW50YXRpb24vaTJvL1JFQURNRQppbmRleCAwZWJmNThjLi5lZTkxZTI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kyby9SRUFETUUKKysrIGIvRG9jdW1lbnRhdGlvbi9pMm8vUkVBRE1FCkBAIC01Myw3ICs1Myw3IEBACiBCb3hIaWxsIENvcnBvcmF0aW9uCiAJTG9hbiBvZiBpbml0aWFsIEZpYnJlQ2hhbm5lbCBkaXNrIGFycmF5IHVzZWQgZm9yIGRldmVsb3BtZW50IHdvcmsuCiAKLUV1cm9wZWFuIENvbWlzc2lvbgorRXVyb3BlYW4gQ29tbWlzc2lvbgogCUZ1bmRpbmcgdGhlIHdvcmsgZG9uZSBieSB0aGUgVW5pdmVyc2l0eSBvZiBIZWxzaW5raQogCiBTeXNLb25uZWN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmctdGVzdC5jIGIvRG9jdW1lbnRhdGlvbi9pYTY0L2FsaWFzaW5nLXRlc3QuYwppbmRleCAzZGZiNzZjLi41Y2FhMmFmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmctdGVzdC5jCisrKyBiL0RvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy10ZXN0LmMKQEAgLTE3Nyw3ICsxNzcsNyBAQAogCiAJCQkvKgogCQkJICogSXQncyBPSyBpZiB0aGUgUk9NIGlzIHVucmVhZGFibGUuICBNYXliZSB0aGVyZQotCQkJICogaXMgbm8gUk9NLCBvciBzb21lIG90aGVyIGVycm9yIG9jdXJyZWQuICBUaGUKKwkJCSAqIGlzIG5vIFJPTSwgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC4gIFRoZQogCQkJICogaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgbm8gTUNBIGhhcHBlbmVkLgogCQkJICovCiAJCQlpZiAocmMgPiAwKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1wYXJwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvam95c3RpY2stcGFycG9ydC50eHQKaW5kZXggMWM4NTZmMy4uNTY4NzBjNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1wYXJwb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2pveXN0aWNrLXBhcnBvcnQudHh0CkBAIC0yNzIsNyArMjcyLDcgQEAKIAogICBBbHNvLCB0aGUgY29ubmVjdGlvbiBpcyBhIGJpdCBtb3JlIGNvbXBsZXguIFlvdSdsbCBuZWVkIGEgYnVuY2ggb2YgZGlvZGVzLAogYW5kIG9uZSBwdWxsdXAgcmVzaXN0b3IuIEZpcnN0LCB5b3UgY29ubmVjdCB0aGUgRGlyZWN0aW9ucyBhbmQgdGhlIGJ1dHRvbgotdGhlIHNhbWUgYXMgZm9yIGRiOSwgaG93ZXZlciB3aXRoIHRoZSBkaW9kZXMgaW5iZXR3ZWVuLgordGhlIHNhbWUgYXMgZm9yIGRiOSwgaG93ZXZlciB3aXRoIHRoZSBkaW9kZXMgYmV0d2Vlbi4KIAogCSAgICBEaW9kZXMKIChwaW4gMikgLS0tLS18PHwtLS0tPiBVcApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9yb3RhcnktZW5jb2Rlci50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dAppbmRleCA4YjQxMjlkLi45NDNlOGY2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dApAQCAtNDYsNyArNDYsNyBAQAogCiBkKSBGYWxsaW5nIGVkZ2Ugb24gY2hhbm5lbCBCLCBjaGFubmVsIEEgaW4gbG93IHN0YXRlCiAJUGFya2luZyBwb3NpdGlvbi4gSWYgdGhlIGVuY29kZXIgZW50ZXJzIHRoaXMgc3RhdGUsIGEgZnVsbCB0cmFuc2l0aW9uCi0Jc2hvdWxkIGhhdmUgaGFwcGVuZCwgdW5sZXNzIGl0IGZsaXBwZWQgYmFjayBvbiBoYWxmIHRoZSB3YXkuIFRoZQorCXNob3VsZCBoYXZlIGhhcHBlbmVkLCB1bmxlc3MgaXQgZmxpcHBlZCBiYWNrIG9uIGhhbGYgdGhlIHdheS4gVGhlCiAJJ2FybWVkJyBzdGF0ZSB0ZWxscyB1cyBhYm91dCB0aGF0LgogCiAyLiBQbGF0Zm9ybSByZXF1aXJlbWVudHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvd2Fsa2VyYTA3MDEudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC93YWxrZXJhMDcwMS50eHQKaW5kZXggOGY0Mjg5ZS4uNTYxMzg1ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC93YWxrZXJhMDcwMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC93YWxrZXJhMDcwMS50eHQKQEAgLTc3LDcgKzc3LDcgQEAKIAogMjQgYmluK29jdCB2YWx1ZXMgKyAxIGJpbiB2YWx1ZSA9IDI0KjQrMSBiaXRzICA9IDk3IGJpdHMKIAotKFdhcm5pbmcsIHB1bHNlcyBvbiBBQ0sgYXIgaW52ZXJ0ZWQgYnkgdHJhbnNpc3RvciwgaXJxIGlzIHJpc2VkIHVwIG9uIHN5bmMKKyhXYXJuaW5nLCBwdWxzZXMgb24gQUNLIGFyZSBpbnZlcnRlZCBieSB0cmFuc2lzdG9yLCBpcnEgaXMgcmFpc2VkIHVwIG9uIHN5bmMKIHRvIGJpbiBjaGFuZ2Ugb3Igb2N0YWwgdmFsdWUgdG8gYmluIGNoYW5nZSkuCiAKIEJpbmFyeSBkYXRhIHJlcHJlc2VudGF0aW9uczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXJxZmxhZ3MtdHJhY2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lycWZsYWdzLXRyYWNpbmcudHh0CmluZGV4IDZhNDQ0ODcuLjY3YWE3MWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaXJxZmxhZ3MtdHJhY2luZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pcnFmbGFncy10cmFjaW5nLnR4dApAQCAtNTMsNSArNTMsNSBAQAogdHVybiBpdHNlbGYgb2ZmLiBJLmUuIHRoZSBsb2NrIHZhbGlkYXRvciB3aWxsIHN0aWxsIGJlIHJlbGlhYmxlLiBUaGVyZQogc2hvdWxkIGJlIG5vIGNyYXNoZXMgZHVlIHRvIGlycS10cmFjaW5nIGJ1Z3MuIChleGNlcHQgaWYgdGhlIGFzc2VtYmx5CiBjaGFuZ2VzIGJyZWFrIG90aGVyIGNvZGUgYnkgbW9kaWZ5aW5nIGNvbmRpdGlvbnMgb3IgcmVnaXN0ZXJzIHRoYXQKLXNob3VsZG50IGJlKQorc2hvdWxkbid0IGJlKQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFLkNBUEkgYi9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFLkNBUEkKaW5kZXggMzA5ZWI1ZS4uMTY4OGI1YSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pc2RuL0lOVEVSRkFDRS5DQVBJCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9JTlRFUkZBQ0UuQ0FQSQpAQCAtMjQwLDcgKzI0MCw3IEBACiBtZXNzYWdlcyBiZXR3ZWVuIHRoZWlyIHRyYW5zcG9ydCBlbmNvZGluZyBkZXNjcmliZWQgaW4gdGhlIENBUEkgMi4wIHN0YW5kYXJkCiBhbmQgdGhlaXIgX2Ntc2cgc3RydWN0dXJlIHJlcHJlc2VudGF0aW9uLiBOb3RlIHRoYXQgY2FwaV9jbXNnMm1lc3NhZ2UoKSBkb2VzCiBub3Qga25vdyBvciBjaGVjayB0aGUgc2l6ZSBvZiBpdHMgZGVzdGluYXRpb24gYnVmZmVyLiBUaGUgY2FsbGVyIG11c3QgbWFrZQotc3VyZSBpdCBpcyBiaWcgZW5vdWdoIHRvIGFjY29tb2RhdGUgdGhlIHJlc3VsdGluZyBDQVBJIG1lc3NhZ2UuCitzdXJlIGl0IGlzIGJpZyBlbm91Z2ggdG8gYWNjb21tb2RhdGUgdGhlIHJlc3VsdGluZyBDQVBJIG1lc3NhZ2UuCiAKIAogNS4gTG93ZXIgTGF5ZXIgSW50ZXJmYWNlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2J1aWxkLnR4dCBiL0RvY3VtZW50YXRpb24va2J1aWxkL2tidWlsZC50eHQKaW5kZXggZjE0MzFkMC4uN2MyYTg5YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2J1aWxkLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9rYnVpbGQudHh0CkBAIC0yNiwxMSArMjYsMTEgQEAKIAogQUZMQUdTX01PRFVMRQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFkZHRpb25hbCBtb2R1bGUgc3BlY2lmaWMgb3B0aW9ucyB0byB1c2UgZm9yICQoQVMpLgorQWRkaXRpb25hbCBtb2R1bGUgc3BlY2lmaWMgb3B0aW9ucyB0byB1c2UgZm9yICQoQVMpLgogCiBBRkxBR1NfS0VSTkVMCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQWRkdGlvbmFsIG9wdGlvbnMgZm9yICQoQVMpIHdoZW4gdXNlZCBmb3IgYXNzZW1ibGVyCitBZGRpdGlvbmFsIG9wdGlvbnMgZm9yICQoQVMpIHdoZW4gdXNlZCBmb3IgYXNzZW1ibGVyCiBjb2RlIGZvciBjb2RlIHRoYXQgaXMgY29tcGlsZWQgYXMgYnVpbHQtaW4uCiAKIEtDRkxBR1MKQEAgLTM5LDEyICszOSwxMiBAQAogCiBDRkxBR1NfS0VSTkVMCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQWRkdGlvbmFsIG9wdGlvbnMgZm9yICQoQ0MpIHdoZW4gdXNlZCB0byBjb21waWxlCitBZGRpdGlvbmFsIG9wdGlvbnMgZm9yICQoQ0MpIHdoZW4gdXNlZCB0byBjb21waWxlCiBjb2RlIHRoYXQgaXMgY29tcGlsZWQgYXMgYnVpbHQtaW4uCiAKIENGTEFHU19NT0RVTEUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BZGR0aW9uYWwgbW9kdWxlIHNwZWNpZmljIG9wdGlvbnMgdG8gdXNlIGZvciAkKENDKS4KK0FkZGl0aW9uYWwgbW9kdWxlIHNwZWNpZmljIG9wdGlvbnMgdG8gdXNlIGZvciAkKENDKS4KIAogTERGTEFHU19NT0RVTEUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IGQyYjUxNTAuLmNjODVhOTIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC02OTksNyArNjk5LDcgQEAKIAlla2dkYm9jPQlbWDg2LEtHREJdIEFsbG93IGVhcmx5IGtlcm5lbCBjb25zb2xlIGRlYnVnZ2luZwogCQkJZWtnZGJvYz1rYmQKIAotCQkJVGhpcyBpcyBkZXNnaW5lZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKKwkJCVRoaXMgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCiAJCQl0aGUgYm9vdCBhcmd1bWVudDogZWFybHlwcmludGs9dmdhCiAKIAllZGQ9CQlbRUREXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rdm0vbW11LnR4dCBiL0RvY3VtZW50YXRpb24va3ZtL21tdS50eHQKaW5kZXggMTQyY2M1MS4uZjQ2YWE1OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rdm0vbW11LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2t2bS9tbXUudHh0CkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgICAgICAgICBhbmQgZnJhbWVidWZmZXItYmFzZWQgZGlzcGxheXMKIC0gZm9vdHByaW50OiAgIGtlZXAgdGhlIGFtb3VudCBvZiBwaW5uZWQga2VybmVsIG1lbW9yeSBsb3cgKG1vc3QgbWVtb3J5CiAgICAgICAgICAgICAgICBzaG91bGQgYmUgc2hyaW5rYWJsZSkKLS0gcmVsaWFibGl0eTogIGF2b2lkIG11bHRpcGFnZSBvciBHRlBfQVRPTUlDIGFsbG9jYXRpb25zCistIHJlbGlhYmlsaXR5OiAgYXZvaWQgbXVsdGlwYWdlIG9yIEdGUF9BVE9NSUMgYWxsb2NhdGlvbnMKIAogQWNyb255bXMKID09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2t2bS9wcGMtcHYudHh0IGIvRG9jdW1lbnRhdGlvbi9rdm0vcHBjLXB2LnR4dAppbmRleCBhN2YyMjQ0Li4zYWI5NjljIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2t2bS9wcGMtcHYudHh0CisrKyBiL0RvY3VtZW50YXRpb24va3ZtL3BwYy1wdi50eHQKQEAgLTEzNiw3ICsxMzYsNyBAQAogPT09PT09PT09PT09PT09PT09PT0KIAogVGhlICJsZCIgYW5kICJzdGQiIGluc3RydWN0aW9ucyBhcmUgdHJhbnNvcm1lZCB0byAibHd6IiBhbmQgInN0dyIgaW5zdHJ1Y3Rpb25zCi1yZXNwZWN0aXZlbHkgb24gMzIgYml0IHN5c3RlbXMgd2l0aCBhbiBhZGRlZCBvZmZzZXQgb2YgNCB0byBhY2NvbW9kYXRlIGZvciBiaWcKK3Jlc3BlY3RpdmVseSBvbiAzMiBiaXQgc3lzdGVtcyB3aXRoIGFuIGFkZGVkIG9mZnNldCBvZiA0IHRvIGFjY29tbW9kYXRlIGZvciBiaWcKIGVuZGlhbm5lc3MuCiAKIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIG1hcHBpbmcgdGhlIExpbnV4IGtlcm5lbCBwZXJmb3JtcyB3aGVuIHJ1bm5pbmcgYXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va3ZtL3RpbWVrZWVwaW5nLnR4dCBiL0RvY3VtZW50YXRpb24va3ZtL3RpbWVrZWVwaW5nLnR4dAppbmRleCAwYzUwMzNhLi5kZjg5NDYzNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rdm0vdGltZWtlZXBpbmcudHh0CisrKyBiL0RvY3VtZW50YXRpb24va3ZtL3RpbWVrZWVwaW5nLnR4dApAQCAtODEsNyArODEsNyBAQAogIHdoZW4gdGhlIGdhdGUgaXMgaGlnaCAoYWx3YXlzIHRydWUgZm9yIHRpbWVycyAwIGFuZCAxKS4gIFdoZW4gdGhlIGNvdW50CiAgcmVhY2hlcyB6ZXJvLCB0aGUgb3V0cHV0IGdvZXMgaGlnaC4KIAotTW9kZSAxOiBUcmlnZ2VyZWQgT25lLXNob3QuICBUaGUgb3V0cHV0IGlzIGludGlhbGx5IHNldCBoaWdoLiAgV2hlbiB0aGUgZ2F0ZQorTW9kZSAxOiBUcmlnZ2VyZWQgT25lLXNob3QuICBUaGUgb3V0cHV0IGlzIGluaXRpYWxseSBzZXQgaGlnaC4gIFdoZW4gdGhlIGdhdGUKICBsaW5lIGlzIHNldCBoaWdoLCBhIGNvdW50ZG93biBpcyBpbml0aWF0ZWQgKHdoaWNoIGRvZXMgbm90IHN0b3AgaWYgdGhlIGdhdGUgaXMKICBsb3dlcmVkKSwgZHVyaW5nIHdoaWNoIHRoZSBvdXRwdXQgaXMgc2V0IGxvdy4gIFdoZW4gdGhlIGNvdW50IHJlYWNoZXMgemVybywKICB0aGUgb3V0cHV0IGdvZXMgaGlnaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVkaWEtZnJhbWV3b3JrLnR4dCBiL0RvY3VtZW50YXRpb24vbWVkaWEtZnJhbWV3b3JrLnR4dAppbmRleCBmZDQ4YWRkLi43NmEyMDg3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21lZGlhLWZyYW1ld29yay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9tZWRpYS1mcmFtZXdvcmsudHh0CkBAIC0xOTQsNyArMTk0LDcgQEAKIAogTGlua3MgYXJlIHJlcHJlc2VudGVkIGJ5IGEgc3RydWN0IG1lZGlhX2xpbmsgaW5zdGFuY2UsIGRlZmluZWQgaW4KIGluY2x1ZGUvbWVkaWEvbWVkaWEtZW50aXR5LmguIEVhY2ggZW50aXR5IHN0b3JlcyBhbGwgbGlua3Mgb3JpZ2luYXRpbmcgYXQgb3IKLXRhcmdldHRpbmcgYW55IG9mIGl0cyBwYWRzIGluIGEgbGlua3MgYXJyYXkuIEEgZ2l2ZW4gbGluayBpcyB0aHVzIHN0b3JlZAordGFyZ2V0aW5nIGFueSBvZiBpdHMgcGFkcyBpbiBhIGxpbmtzIGFycmF5LiBBIGdpdmVuIGxpbmsgaXMgdGh1cyBzdG9yZWQKIHR3aWNlLCBvbmNlIGluIHRoZSBzb3VyY2UgZW50aXR5IGFuZCBvbmNlIGluIHRoZSB0YXJnZXQgZW50aXR5LiBUaGUgYXJyYXkgaXMKIHByZS1hbGxvY2F0ZWQgYW5kIGdyb3dzIGR5bmFtaWNhbGx5IGFzIG5lZWRlZC4KIApAQCAtMzQ4LDYgKzM0OCw2IEBACiB3aXRoIHRoZSBNRURJQV9MTktfRkxfRFlOQU1JQyBmbGFnLgogCiBJZiBvdGhlciBvcGVyYXRpb25zIG5lZWQgdG8gYmUgZGlzYWxsb3dlZCBvbiBzdHJlYW1pbmcgZW50aXRpZXMgKHN1Y2ggYXMKLWNoYW5naW5nIGVudGl0aWVzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycykgZHJpdmVycyBjYW4gZXhwbGljdGx5IGNoZWNrIHRoZQorY2hhbmdpbmcgZW50aXRpZXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzKSBkcml2ZXJzIGNhbiBleHBsaWNpdGx5IGNoZWNrIHRoZQogbWVkaWFfZW50aXR5IHN0cmVhbV9jb3VudCBmaWVsZCB0byBmaW5kIG91dCBpZiBhbiBlbnRpdHkgaXMgc3RyZWFtaW5nLiBUaGlzCiBvcGVyYXRpb24gbXVzdCBiZSBkb25lIHdpdGggdGhlIG1lZGlhX2RldmljZSBncmFwaF9tdXRleCBoZWxkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FCmluZGV4IDhhY2UzNWUuLmNjODg3ZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWlwcy9BVTF4eHhfSURFLlJFQURNRQorKysgYi9Eb2N1bWVudGF0aW9uL21pcHMvQVUxeHh4X0lERS5SRUFETUUKQEAgLTM5LDEzICszOSwxMyBAQAogICAgICAgSW50ZXJmYWNlIGFuZCBMaW51eCBEZXZpY2UgRHJpdmVyIiBBcHBsaWNhdGlvbiBOb3RlLgogCiAKLUZJTEVTLCBDT05GSUdTIEFORCBDT01QQVRBQklMSVRZCitGSUxFUywgQ09ORklHUyBBTkQgQ09NUEFUSUJJTElUWQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVHdvIGZpbGVzIGFyZSBpbnRyb2R1Y2VkOgogCiAgIGEpICdhcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1hdTF4MDAvYXUxeHh4X2lkZS5oJwotICAgICBjb250YWluZXMgOiBzdHJ1Y3QgX2F1aWRlX2h3aWYKKyAgICAgY29udGFpbnMgOiBzdHJ1Y3QgX2F1aWRlX2h3aWYKICAgICAgICAgICAgICAgICAgdGltaW5nIHBhcmFtZXRlcnMgZm9yIFBJTyBtb2RlIDAvMS8yLzMvNAogICAgICAgICAgICAgICAgICB0aW1pbmcgcGFyYW1ldGVycyBmb3IgTVdETUEgMC8xLzIKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaWNzOTMyczQwMSBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2ljczkzMnM0MDEKaW5kZXggMDdhNzM5Zi4uYmRhYzY3ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaWNzOTMyczQwMQorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9pY3M5MzJzNDAxCkBAIC01LDcgKzUsNyBAQAogICAqIElEVCBJQ1M5MzJTNDAxCiAgICAgUHJlZml4OiAnaWNzOTMyczQwMScKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NjkKLSAgICBEYXRhc2hlZXQ6IFB1YmxpY2FsbHkgYXZhaWxhYmxlIGF0IHRoZSBJRFQgd2Vic2l0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBJRFQgd2Vic2l0ZQogCiBBdXRob3I6IERhcnJpY2sgSi4gV29uZwogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvM2MzNTkudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzNjMzU5LnR4dAppbmRleCA0YWY4MDcxLi5kYWRmZTgxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvM2MzNTkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy8zYzM1OS50eHQKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogVmFyaWFibGUgTVRVIHNpemU6CiAKLVRoZSBkcml2ZXIgY2FuIGhhbmRsZSBhIE1UVSBzaXplIHVwdG8gZWl0aGVyIDQ1MDAgb3IgMTgwMDAgZGVwZW5kaW5nIHVwb24gCitUaGUgZHJpdmVyIGNhbiBoYW5kbGUgYSBNVFUgc2l6ZSB1cCB0byBlaXRoZXIgNDUwMCBvciAxODAwMCBkZXBlbmRpbmcgdXBvbiAKIHJpbmcgc3BlZWQuICBUaGUgZHJpdmVyIGFsc28gY2hhbmdlcyB0aGUgc2l6ZSBvZiB0aGUgcmVjZWl2ZSBidWZmZXJzIGFzIHBhcnQKIG9mIHRoZSBtdHUgcmUtc2l6aW5nLCBzbyBpZiB5b3Ugc2V0IG10dSA9IDE4MDAwLCB5b3Ugd2lsbCBuZWVkIHRvIGJlIGFibGUKIHRvIGFsbG9jYXRlIDE2ICogKHNrX2J1ZmYgd2l0aCAxODAwMCBidWZmZXIgc2l6ZSkgY2FsbCBpdCAxODUwMCBieXRlcyBwZXIgcmluZyAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjIwMCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjIwMAppbmRleCA2MTZhOGU1Li5iNzY1OGJlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvUkVBRE1FLmlwdzIyMDAKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL1JFQURNRS5pcHcyMjAwCkBAIC0yNTYsNyArMjU2LDcgQEAKIAogV2hlcmUgJFZBTFVFIHdvdWxkIGJlIGEgbnVtYmVyIGluIHRoZSBjYXNlIG9mIHRoaXMgc3lzZnMgZW50cnkuICBUaGUgCiBpbnB1dCB0byBzeXNmcyBmaWxlcyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgbnVtYmVyLiAgRm9yIGV4YW1wbGUsIHRoZSAKLWZpcm13YXJlIGxvYWRlciB1c2VkIGJ5IGhvdHBsdWcgdXRpbGl6ZXMgc3lzZnMgZW50cmllcyBmb3IgdHJhbnNmZXJpbmcgCitmaXJtd2FyZSBsb2FkZXIgdXNlZCBieSBob3RwbHVnIHV0aWxpemVzIHN5c2ZzIGVudHJpZXMgZm9yIHRyYW5zZmVycmluZyAKIHRoZSBmaXJtd2FyZSBpbWFnZSBmcm9tIHVzZXIgc3BhY2UgaW50byB0aGUgZHJpdmVyLgogCiBUaGUgSW50ZWwoUikgUFJPL1dpcmVsZXNzIDI5MTVBQkcgRHJpdmVyIGZvciBMaW51eCBleHBvc2VzIHN5c2ZzIGVudHJpZXMgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQKaW5kZXggYjM2ZTc0MS4uZTI3MjAyYmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQKQEAgLTM2OCw3ICszNjgsNyBAQAogCQlncmF0dWl0b3VzIEFSUCBpcyBsb3N0LCBjb21tdW5pY2F0aW9uIG1heSBiZQogCQlkaXNydXB0ZWQuCiAKLQkJV2hlbiB0aGlzIHBvbGljeSBpcyB1c2VkIGluIGNvbmp1Y3Rpb24gd2l0aCB0aGUgbWlpCisJCVdoZW4gdGhpcyBwb2xpY3kgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBtaWkKIAkJbW9uaXRvciwgZGV2aWNlcyB3aGljaCBhc3NlcnQgbGluayB1cCBwcmlvciB0byBiZWluZwogCQlhYmxlIHRvIGFjdHVhbGx5IHRyYW5zbWl0IGFuZCByZWNlaXZlIGFyZSBwYXJ0aWN1bGFybHkKIAkJc3VzY2VwdGlibGUgdG8gbG9zcyBvZiB0aGUgZ3JhdHVpdG91cyBBUlAsIGFuZCBhbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvTGludXgtQ0FJRi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9MaW51eC1DQUlGLnR4dAppbmRleCA3ZmU3YTlhLi5lNTJmZDYyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9MaW51eC1DQUlGLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9MaW51eC1DQUlGLnR4dApAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAtIENGTVVYIENBSUYgTXV4IGxheWVyLiBIYW5kbGVzIG11bHRpcGxleGluZyBiZXR3ZWVuIG11bHRpcGxlCiAJcGh5c2ljYWwgYmVhcmVycyBhbmQgbXVsdGlwbGUgY2hhbm5lbHMgc3VjaCBhcyBWRUksIERhdGFncmFtLCBldGMuCiAJVGhlIE1VWCBrZWVwcyB0cmFjayBvZiB0aGUgZXhpc3RpbmcgQ0FJRiBDaGFubmVscyBhbmQKLQlQaHlzaWNhbCBJbnN0YW5jZXMgYW5kIHNlbGVjdHMgdGhlIGFwcm9wcmlhdGUgaW5zdGFuY2UgYmFzZWQKKwlQaHlzaWNhbCBJbnN0YW5jZXMgYW5kIHNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIGluc3RhbmNlIGJhc2VkCiAJb24gQ2hhbm5lbC1JZCBhbmQgUGh5c2ljYWwtSUQuCiAKICAgICAgIC0gQ0ZGUk1MIENBSUYgRnJhbWluZyBsYXllci4gSGFuZGxlcyBGcmFtaW5nIGkuZS4gRnJhbWUgbGVuZ3RoCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9zcGlfcG9ydGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9zcGlfcG9ydGluZy50eHQKaW5kZXggMGNiOGNiOS4uOWVmZDA2OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvc3BpX3BvcnRpbmcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYWlmL3NwaV9wb3J0aW5nLnR4dApAQCAtMTUwLDcgKzE1MCw3IEBACiB2b2lkIHNzcGlfc2lnX3hmZXIoYm9vbCB4ZmVyLCBzdHJ1Y3QgY2ZzcGlfZGV2ICpkZXYpCiB7CiAJLyogSWYgeGZlciBpcyB0cnVlIHRoZW4geW91IHNob3VsZCBhc3NlcnQgdGhlIFNQSV9JTlQgdG8gaW5kaWNhdGUgdG8KLQkgKiB0aGUgbWFzdGVyIHRoYXQgeW91IGFyZSByZWFkeSB0byByZWNpZXZlIHRoZSBkYXRhIGZyb20gdGhlIG1hc3RlcgorCSAqIHRoZSBtYXN0ZXIgdGhhdCB5b3UgYXJlIHJlYWR5IHRvIHJlY2VpdmUgdGhlIGRhdGEgZnJvbSB0aGUgbWFzdGVyCiAJICogU1BJLiBJZiB4ZmVyIGlzIGZhbHNlIHRoZW4geW91IHNob3VsZCBkZS1hc3NlcnQgU1BJX0lOVCB0byBpbmRpY2F0ZQogCSAqIHRoYXQgdGhlIHRyYW5zZmVyIGlzIGRvbmUuCiAJICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CmluZGV4IDViMDRiNjcuLjU2Y2EzYjcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgdGhlIHVzZXIgYXBwbGljYXRpb24gdXNpbmcgdGhlIGNvbW1vbiBDQU4gZmlsdGVyIG1lY2hhbmlzbXMuIEluc2lkZQogICB0aGlzIGZpbHRlciBkZWZpbml0aW9uIHRoZSAoaW50ZXJlc3RlZCkgdHlwZSBvZiBlcnJvcnMgbWF5IGJlCiAgIHNlbGVjdGVkLiBUaGUgcmVjZXB0aW9uIG9mIGVycm9yIGZyYW1lcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICBUaGUgZm9ybWF0IG9mIHRoZSBDQU4gZXJyb3IgZnJhbWUgaXMgYnJpZWZseSBkZWNyaWJlZCBpbiB0aGUgTGludXgKKyAgVGhlIGZvcm1hdCBvZiB0aGUgQ0FOIGVycm9yIGZyYW1lIGlzIGJyaWVmbHkgZGVzY3JpYmVkIGluIHRoZSBMaW51eAogICBoZWFkZXIgZmlsZSAiaW5jbHVkZS9saW51eC9jYW4vZXJyb3IuaCIuCiAKIDQuIEhvdyB0byB1c2UgU29ja2V0IENBTgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2llZWU4MDIxNTQudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2llZWU4MDIxNTQudHh0CmluZGV4IDIzYzk5NWUuLmY0MWVhMjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZWVlODAyMTU0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaWVlZTgwMjE1NC50eHQKQEAgLTksNyArOSw3IEBACiBvZiBJRUVFIDgwMi4xNS40IC8gWmlnQmVlIC8gNkxvV1BBTiBwcm90b2NvbHMuIElFRUUgODAyLjE1LjQgaXMgYSBzdGFjawogb2YgcHJvdG9jb2xzIGZvciBvcmdhbml6aW5nIExvdy1SYXRlIFdpcmVsZXNzIFBlcnNvbmFsIEFyZWEgTmV0d29ya3MuCiAKLUN1cnJlbnRseSBvbmx5IElFRUUgODAyLjE1LjQgbGF5ZXIgaXMgaW1wbGVtZW50ZWQuIFdlIGhhdmUgY2hvb3NlbgorQ3VycmVudGx5IG9ubHkgSUVFRSA4MDIuMTUuNCBsYXllciBpcyBpbXBsZW1lbnRlZC4gV2UgaGF2ZSBjaG9zZW4KIHRvIHVzZSBwbGFpbiBCZXJrZWxleSBzb2NrZXQgQVBJLCB0aGUgZ2VuZXJpYyBMaW51eCBuZXR3b3JraW5nIHN0YWNrCiB0byB0cmFuc2ZlciBJRUVFIDgwMi4xNS40IG1lc3NhZ2VzIGFuZCBhIHNwZWNpYWwgcHJvdG9jb2wgb3ZlciBnZW5ldGxpbmsKIGZvciBjb25maWd1cmF0aW9uL21hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vbHltcGljLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vbHltcGljLnR4dAppbmRleCBjNjVhOTQwLi5iOTViNWJmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2x5bXBpYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29seW1waWMudHh0CkBAIC02NSw3ICs2NSw3IEBACiAKIFZhcmlhYmxlIE1UVSBzaXplOgogCi1UaGUgZHJpdmVyIGNhbiBoYW5kbGUgYSBNVFUgc2l6ZSB1cHRvIGVpdGhlciA0NTAwIG9yIDE4MDAwIGRlcGVuZGluZyB1cG9uIAorVGhlIGRyaXZlciBjYW4gaGFuZGxlIGEgTVRVIHNpemUgdXAgdG8gZWl0aGVyIDQ1MDAgb3IgMTgwMDAgZGVwZW5kaW5nIHVwb24gCiByaW5nIHNwZWVkLiAgVGhlIGRyaXZlciBhbHNvIGNoYW5nZXMgdGhlIHNpemUgb2YgdGhlIHJlY2VpdmUgYnVmZmVycyBhcyBwYXJ0CiBvZiB0aGUgbXR1IHJlLXNpemluZywgc28gaWYgeW91IHNldCBtdHUgPSAxODAwMCwgeW91IHdpbGwgbmVlZCB0byBiZSBhYmxlCiB0byBhbGxvY2F0ZSAxNiAqIChza19idWZmIHdpdGggMTgwMDAgYnVmZmVyIHNpemUpIGNhbGwgaXQgMTg1MDAgYnl0ZXMgcGVyIHJpbmcgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGFja2V0X21tYXAudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BhY2tldF9tbWFwLnR4dAppbmRleCAwNzM4OTRkLi40YWNlYTY2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGFja2V0X21tYXAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9wYWNrZXRfbW1hcC50eHQKQEAgLTIyMyw3ICsyMjMsNyBAQAogCiBBIGZyYW1lIGNhbiBiZSBvZiBhbnkgc2l6ZSB3aXRoIHRoZSBvbmx5IGNvbmRpdGlvbiBpdCBjYW4gZml0IGluIGEgYmxvY2suIEEgYmxvY2sKIGNhbiBvbmx5IGhvbGQgYW4gaW50ZWdlciBudW1iZXIgb2YgZnJhbWVzLCBvciBpbiBvdGhlciB3b3JkcywgYSBmcmFtZSBjYW5ub3QgCi1iZSBzcGF3bmVkIGFjY3Jvc3MgdHdvIGJsb2Nrcywgc28gdGhlcmUgYXJlIHNvbWUgZGV0YWlscyB5b3UgaGF2ZSB0byB0YWtlIGludG8gCitiZSBzcGF3bmVkIGFjcm9zcyB0d28gYmxvY2tzLCBzbyB0aGVyZSBhcmUgc29tZSBkZXRhaWxzIHlvdSBoYXZlIHRvIHRha2UgaW50byAKIGFjY291bnQgd2hlbiBjaG9vc2luZyB0aGUgZnJhbWVfc2l6ZS4gU2VlICJNYXBwaW5nIGFuZCB1c2Ugb2YgdGhlIGNpcmN1bGFyIAogYnVmZmVyIChyaW5nKSIuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zMmlvLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zMmlvLnR4dAppbmRleCA5ZDRlMGY0Li40YmUwYzAzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvczJpby50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3MyaW8udHh0CkBAIC0zNyw3ICszNyw3IEBACiBUaGUgY29ycmVzcG9uZGluZyBhZGFwdGVyJ3MgTEVEIHdpbGwgYmxpbmsgbXVsdGlwbGUgdGltZXMuCiAKIDMuCUZlYXR1cmVzIHN1cHBvcnRlZDoKLWEuIEp1bWJvIGZyYW1lcy4gWGZyYW1lIEkvSUkgc3VwcG9ydHMgTVRVIHVwdG8gOTYwMCBieXRlcywKK2EuIEp1bWJvIGZyYW1lcy4gWGZyYW1lIEkvSUkgc3VwcG9ydHMgTVRVIHVwIHRvIDk2MDAgYnl0ZXMsCiBtb2RpZmlhYmxlIHVzaW5nIGlmY29uZmlnIGNvbW1hbmQuCiAKIGIuIE9mZmxvYWRzLiBTdXBwb3J0cyBjaGVja3N1bSBvZmZsb2FkKFRDUC9VRFAvSVApIG9uIHRyYW5zbWl0CkBAIC00OSw3ICs0OSw3IEBACiBJQk0geFNlcmllcykuCiAKIGQuIE1TSS9NU0ktWC4gQ2FuIGJlIGVuYWJsZWQgb24gcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhpcyBmZWF0dXJlCi0oSUE2NCwgWGVvbikgcmVzdWx0aW5nIGluIG5vdGljZWFibGUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQodXB0byA3JQorKElBNjQsIFhlb24pIHJlc3VsdGluZyBpbiBub3RpY2VhYmxlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50KHVwIHRvIDclCiBvbiBjZXJ0YWluIHBsYXRmb3JtcykuCiAKIGUuIFN0YXRpc3RpY3MuIENvbXByZWhlbnNpdmUgTUFDLWxldmVsIGFuZCBzb2Z0d2FyZSBzdGF0aXN0aWNzIGRpc3BsYXllZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RjLWFjdGlvbnMtZW52LXJ1bGVzLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Yy1hY3Rpb25zLWVudi1ydWxlcy50eHQKaW5kZXggZGNhZGY2Zi4uNzBkNmNmNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RjLWFjdGlvbnMtZW52LXJ1bGVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGMtYWN0aW9ucy1lbnYtcnVsZXMudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1UaGUgImVudmlyb21lbnRhbCIgcnVsZXMgZm9yIGF1dGhvcnMgb2YgYW55IG5ldyB0YyBhY3Rpb25zIGFyZToKK1RoZSAiZW52aXJvbm1lbnRhbCIgcnVsZXMgZm9yIGF1dGhvcnMgb2YgYW55IG5ldyB0YyBhY3Rpb25zIGFyZToKIAogMSkgSWYgeW91IHN0ZWFsZXRoIG9yIGJvcnJvd2V0aCBhbnkgcGFja2V0IHRob3Ugc2hhbHQgYmUgYnJhbmNoaW5nCiBmcm9tIHRoZSByaWdodGVvdXMgcGF0aCBhbmQgdGhvdSBzaGFsdCBjbG9uZXRoLgpAQCAtMjAsNyArMjAsNyBAQAogMykgRHJvcHBpbmcgcGFja2V0cyB5b3UgZG9uJ3Qgb3duIGlzIGEgbm8tbm8uIFlvdSBzaW1wbHkgcmV0dXJuCiBUQ19BQ1RfU0hPVCB0byB0aGUgY2FsbGVyIGFuZCB0aGV5IHdpbGwgZHJvcCBpdC4KIAotVGhlICJlbnZpcm9tZW50YWwiIHJ1bGVzIGZvciBjYWxsZXJzIG9mIGFjdGlvbnMgKHFkaXNjcyBldGMpIGFyZToKK1RoZSAiZW52aXJvbm1lbnRhbCIgcnVsZXMgZm9yIGNhbGxlcnMgb2YgYWN0aW9ucyAocWRpc2NzIGV0YykgYXJlOgogCiAqKSBUaG91IGFydCByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBhbnl0aGluZyByZXR1cm5lZCBhcyBiZWluZwogVENfQUNUX1NIT1QvU1RPTEVOL1FVRVVFRC4gSWYgbm9uZSBvZiBUQ19BQ1RfU0hPVC9TVE9MRU4vUVVFVUVEIGlzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dAppbmRleCBmMDIzYmE2Li4xOTcxYmNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQKQEAgLTM2Nyw3ICszNjcsNyBAQAogc3VzcGVuZCBtZXRob2RzIHdlcmUgY2FsbGVkLCBmb3IgZXhhbXBsZSBieSBjb21wbGV0ZSByZWluaXRpYWxpemF0aW9uLgogVGhpcyBtYXkgYmUgdGhlIGhhcmRlc3QgcGFydCwgYW5kIHRoZSBvbmUgbW9zdCBwcm90ZWN0ZWQgYnkgTkRBJ2QgZG9jdW1lbnRzCiBhbmQgY2hpcCBlcnJhdGEuICBJdCdzIHNpbXBsZXN0IGlmIHRoZSBoYXJkd2FyZSBzdGF0ZSBoYXNuJ3QgY2hhbmdlZCBzaW5jZQotdGhlIHN1c3BlbmQgd2FzIGNhcnJpZWQgb3V0LCBidXQgdGhhdCBjYW4ndCBiZSBndWFyYW50ZWVkIChpbiBmYWN0LCBpdCB1c3VzYWxseQordGhlIHN1c3BlbmQgd2FzIGNhcnJpZWQgb3V0LCBidXQgdGhhdCBjYW4ndCBiZSBndWFyYW50ZWVkIChpbiBmYWN0LCBpdCB1c3VhbGx5CiBpcyBub3QgdGhlIGNhc2UpLgogCiBEcml2ZXJzIG11c3QgYWxzbyBiZSBwcmVwYXJlZCB0byBub3RpY2UgdGhhdCB0aGUgZGV2aWNlIGhhcyBiZWVuIHJlbW92ZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvbm90aWZpZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvbm90aWZpZXJzLnR4dAppbmRleCBhZTFiN2VjLi5jZjk4MDcwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL25vdGlmaWVycy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9ub3RpZmllcnMudHh0CkBAIC0yNCw3ICsyNCw3IEBACiAJCQliZSBmcm96ZW4gaW1tZWRpYXRlbHkuCiAKIFBNX1BPU1RfSElCRVJOQVRJT04JVGhlIHN5c3RlbSBtZW1vcnkgc3RhdGUgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSBhCi0JCQloaWJlcm5hdGlvbiBpbWFnZSBvciBhbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUKKwkJCWhpYmVybmF0aW9uIGltYWdlIG9yIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUKIAkJCWhpYmVybmF0aW9uLiAgRGV2aWNlIGRyaXZlcnMnIC5yZXN1bWUoKSBjYWxsYmFja3MgaGF2ZQogCQkJYmVlbiBleGVjdXRlZCBhbmQgdGFza3MgaGF2ZSBiZWVuIHRoYXdlZC4KIApAQCAtMzgsNyArMzgsNyBAQAogCiBQTV9TVVNQRU5EX1BSRVBBUkUJVGhlIHN5c3RlbSBpcyBwcmVwYXJpbmcgZm9yIGEgc3VzcGVuZC4KIAotUE1fUE9TVF9TVVNQRU5ECQlUaGUgc3lzdGVtIGhhcyBqdXN0IHJlc3VtZWQgb3IgYW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcKK1BNX1BPU1RfU1VTUEVORAkJVGhlIHN5c3RlbSBoYXMganVzdCByZXN1bWVkIG9yIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZwogCQkJdGhlIHN1c3BlbmQuCURldmljZSBkcml2ZXJzJyAucmVzdW1lKCkgY2FsbGJhY2tzIGhhdmUKIAkJCWJlZW4gZXhlY3V0ZWQgYW5kIHRhc2tzIGhhdmUgYmVlbiB0aGF3ZWQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvb3BwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvb3BwLnR4dAppbmRleCBjZDQ0NTU4Li41YWU3MGExMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci9vcHAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvb3BwLnR4dApAQCAtMTc4LDcgKzE3OCw3IEBACiAJCWlmICghSVNfRVJSKG9wcCkpCiAJCQlzb2Nfc3dpdGNoX3RvX2ZyZXFfdm9sdGFnZShmcmVxKTsKIAkJZWxzZQotCQkJLyogZG8gc29tZXRoaW5nIHdoZW4gd2UgY2FudCBzYXRpc2Z5IHRoZSByZXEgKi8KKwkJCS8qIGRvIHNvbWV0aGluZyB3aGVuIHdlIGNhbid0IHNhdGlzZnkgdGhlIHJlcSAqLwogCQkvKiBkbyBvdGhlciBzdHVmZiAqLwogCSB9CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dAppbmRleCBlYTcxODg5Li5hYzE5MGNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AudHh0CkBAIC0xOTIsNyArMTkyLDcgQEAKIGRpc3RpbmN0aW9ucyBiZXR3ZWVuIFNVU1BFTkQgYW5kIEZSRUVaRS4KIAogQTogRG9pbmcgU1VTUEVORCB3aGVuIHlvdSBhcmUgYXNrZWQgdG8gZG8gRlJFRVpFIGlzIGFsd2F5cyBjb3JyZWN0LAotYnV0IGl0IG1heSBiZSB1bm5lY2Nlc3NhcmlseSBzbG93LiBJZiB5b3Ugd2FudCB5b3VyIGRyaXZlciB0byBzdGF5IHNpbXBsZSwKK2J1dCBpdCBtYXkgYmUgdW5uZWNlc3NhcmlseSBzbG93LiBJZiB5b3Ugd2FudCB5b3VyIGRyaXZlciB0byBzdGF5IHNpbXBsZSwKIHNsb3duZXNzIG1heSBub3QgbWF0dGVyIHRvIHlvdS4gSXQgY2FuIGFsd2F5cyBiZSBmaXhlZCBsYXRlci4KIAogRm9yIGRldmljZXMgbGlrZSBkaXNrIGl0IGRvZXMgbWF0dGVyLCB5b3UgZG8gbm90IHdhbnQgdG8gc3BpbmRvd24gZm9yCkBAIC0yMzcsNyArMjM3LDcgQEAKIAogICAgICAgcnVubmluZyBzeXN0ZW0sIHVzZXIgYXNrcyBmb3Igc3VzcGVuZC10by1kaXNrCiAKLSAgICAgIHVzZXIgcHJvY2Vzc2VzIGFyZSBzdG9wcGVkIChpbiBjb21tb24gY2FzZSB0aGVyZSBhcmUgbm9uZSwgYnV0IHdpdGggcmVzdW1lLWZyb20taW5pdHJkLCBub29uZSBrbm93cykKKyAgICAgIHVzZXIgcHJvY2Vzc2VzIGFyZSBzdG9wcGVkIChpbiBjb21tb24gY2FzZSB0aGVyZSBhcmUgbm9uZSwgYnV0IHdpdGggcmVzdW1lLWZyb20taW5pdHJkLCBubyBvbmUga25vd3MpCiAKICAgICAgIHJlYWQgaW1hZ2UgZnJvbSBkaXNrCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dAppbmRleCA4MTY4MGY5Li4xMTAxYmVlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3VzZXJsYW5kLXN3c3VzcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci91c2VybGFuZC1zd3N1c3AudHh0CkBAIC05OCw3ICs5OCw3IEBACiBUaGUgZGV2aWNlJ3MgcmVhZCgpIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCB0byB0cmFuc2ZlciB0aGUgc25hcHNob3QgaW1hZ2UgZnJvbQogdGhlIGtlcm5lbC4gIEl0IGhhcyB0aGUgZm9sbG93aW5nIGxpbWl0YXRpb25zOgogLSB5b3UgY2Fubm90IHJlYWQoKSBtb3JlIHRoYW4gb25lIHZpcnR1YWwgbWVtb3J5IHBhZ2UgYXQgYSB0aW1lCi0tIHJlYWQoKXMgYWNjcm9zcyBwYWdlIGJvdW5kYXJpZXMgYXJlIGltcG9zc2libGUgKGllLiBpZiB5cHUgcmVhZCgpIDEvMiBvZgorLSByZWFkKClzIGFjcm9zcyBwYWdlIGJvdW5kYXJpZXMgYXJlIGltcG9zc2libGUgKGllLiBpZiB5cHUgcmVhZCgpIDEvMiBvZgogCWEgcGFnZSBpbiB0aGUgcHJldmlvdXMgY2FsbCwgeW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHJlYWQoKQogCV9hdF8gX21vc3RfIDEvMiBvZiB0aGUgcGFnZSBpbiB0aGUgbmV4dCBjYWxsKQogCkBAIC0xMzcsNyArMTM3LDcgQEAKIG1lYW5zLCBzdWNoIGFzIGNoZWNrc3VtcywgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHNuYXBzaG90IGltYWdlLgogCiBUaGUgc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgdXRpbGl0aWVzIE1VU1QgbG9jayB0aGVtc2VsdmVzIGluIG1lbW9yeSwKLXByZWZlcnJhYmx5IHVzaW5nIG1sb2NrYWxsKCksIGJlZm9yZSBjYWxsaW5nIFNOQVBTSE9UX0ZSRUVaRS4KK3ByZWZlcmFibHkgdXNpbmcgbWxvY2thbGwoKSwgYmVmb3JlIGNhbGxpbmcgU05BUFNIT1RfRlJFRVpFLgogCiBUaGUgc3VzcGVuZGluZyB1dGlsaXR5IE1VU1QgY2hlY2sgdGhlIHZhbHVlIHN0b3JlZCBieSBTTkFQU0hPVF9DUkVBVEVfSU1BR0UKIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSB0aGUgbGFzdCBhcmd1bWVudCBvZiBpb2N0bCgpIGFuZCBwcm9jZWVkCkBAIC0xNDcsNyArMTQ3LDcgQEAKIAkoYSkJVGhlIHN1c3BlbmRpbmcgdXRpbGl0eSBNVVNUIE5PVCBjbG9zZSB0aGUgc25hcHNob3QgZGV2aWNlCiAJCV91bmxlc3NfIHRoZSB3aG9sZSBzdXNwZW5kIHByb2NlZHVyZSBpcyB0byBiZSBjYW5jZWxsZWQsIGluCiAJCXdoaWNoIGNhc2UsIGlmIHRoZSBzbmFwc2hvdCBpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLCB0aGUKLQkJc3VzcGVuZGluZyB1dGlsaXR5IFNIT1VMRCBkZXN0cm95IGl0LCBwcmVmZXJyYWJseSBieSB6YXBwaW5nCisJCXN1c3BlbmRpbmcgdXRpbGl0eSBTSE9VTEQgZGVzdHJveSBpdCwgcHJlZmVyYWJseSBieSB6YXBwaW5nCiAJCWl0cyBoZWFkZXIuICBJZiB0aGUgc3VzcGVuZCBpcyBub3QgdG8gYmUgY2FuY2VsbGVkLCB0aGUKIAkJc3lzdGVtIE1VU1QgYmUgcG93ZXJlZCBvZmYgb3IgcmVib290ZWQgYWZ0ZXIgdGhlIHNuYXBzaG90CiAJCWltYWdlIGhhcyBiZWVuIHNhdmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2h2Y3MudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2h2Y3MudHh0CmluZGV4IDZkOGJlMzQuLmE3MzBjYTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9odmNzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvaHZjcy50eHQKQEAgLTUyOCw3ICs1MjgsNyBAQAogb3JkZXIgdGhhbiBob3cgdGhleSB3b3VsZCBiZSBleHBvc2VkIG9uIG1vZHVsZSBsb2FkLiAgUmVib290aW5nIG9yCiByZWxvYWRpbmcgdGhlIG1vZHVsZSBhZnRlciBkeW5hbWljIGFkZGl0aW9uIG1heSByZXN1bHQgaW4gdGhlIC9kZXYvaHZjcyoKIGFuZCB2dHktc2VydmVyIGNvdXBsaW5nIGNoYW5naW5nIGlmIGEgdnR5LXNlcnZlciBhZGFwdGVyIHdhcyBhZGRlZCBpbiBhCi1zbG90IGluYmV0d2VlbiB0d28gb3RoZXIgdnR5LXNlcnZlciBhZGFwdGVycy4gIFJlZmVyIHRvIHRoZSBzZWN0aW9uIGFib3ZlCitzbG90IGJldHdlZW4gdHdvIG90aGVyIHZ0eS1zZXJ2ZXIgYWRhcHRlcnMuICBSZWZlciB0byB0aGUgc2VjdGlvbiBhYm92ZQogb24gaG93IHRvIGRldGVybWluZSB3aGljaCB2dHktc2VydmVyIGdvZXMgd2l0aCB3aGljaCAvZGV2L2h2Y3MqIG5vZGUuCiBIaW50OyBsb29rIGF0IHRoZSBzeXNmcyAiaW5kZXgiIGF0dHJpYnV0ZSBmb3IgdGhlIHZ0eS1zZXJ2ZXIuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubHBmYyBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubHBmYwppbmRleCA1ZTgzNzY5Li5jNTZlYzk5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmxwZmMKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5scGZjCkBAIC0zNTIsNyArMzUyLDcgQEAKIAkgIGxwZmNfc2NzaXBvcnQuYwogCSogSW4gcmVtb3RlIHBvcnQgY2hhbmdlczogbm8gbG9uZ2VyIG51bGxpbmcgdGFyZ2V0LT5wbm9kZSB3aGVuCiAJICByZW1vdmluZyBmcm9tIG1hcHBlZCBsaXN0LiBQbm9kZSBnZXQgbnVsbGVkIHdoZW4gdGhlIG5vZGUgaXMKLQkgIGZyZWVkIChhZnRlciBub2RldiB0bW8pLiBUaGlzIGJ1ZyB3YXMgY2F1c2luZyBpL28gcmVjaWV2ZWQgaW4KKwkgIGZyZWVkIChhZnRlciBub2RldiB0bW8pLiBUaGlzIGJ1ZyB3YXMgY2F1c2luZyBpL28gcmVjZWl2ZWQgaW4KIAkgIHRoZSBzbWFsbCB3aW5kb3cgd2hpbGUgdGhlIGRldmljZSB3YXMgYmxvY2tlZCB0byBiZSBlcnJvcmVkIHcvCiAJICBkaWRfbm9fY29ubmVjdC4gV2l0aCB0aGUgZml4LCBpdCByZXR1cm5zIGhvc3RfYnVzeQogCSAgKHBlciB0aGUgcHJlLXJlbW90ZSBwb3J0IGNoYW5nZXMpLgpAQCAtNTMwLDcgKzUzMCw3IEBACiAJICBjb2hlcmVudCBtYXBwaW5ncy4gIE5vdGU6IFRoZXJlIGFyZSBtb3JlIGNvbnNpc3RlbnQgbWFwcGluZ3MKIAkgIHRoYXQgYXJlIHVzaW5nIHBjaV9kbWFfc3luYyBjYWxscy4gUHJvYmFibHkgdGhlc2Ugc2hvdWxkIGJlCiAJICByZW1vdmVkIGFzIHdlbGwuCi0JKiBNb2RpZmllZCBscGZjX2ZyZWVfc2NzaV9idWYgdG8gYWNjb21vZGF0ZSBhbGwgdGhyZWUgc2NzaV9idWYKKwkqIE1vZGlmaWVkIGxwZmNfZnJlZV9zY3NpX2J1ZiB0byBhY2NvbW1vZGF0ZSBhbGwgdGhyZWUgc2NzaV9idWYKIAkgIGZyZWUgdHlwZXMgdG8gYWxsZXZpYXRlIG1pc2NlbGxhbmVvdXMgcGFuaWNzIHdpdGggY2FibGUgcHVsbAogCSAgdGVzdGluZy4KIAkqIFNldCBob3RwbHVnIHRvIGRlZmF1bHQgMCBhbmQgbHBmY190YXJnZXRfcmVtb3ZlIHRvIG5vdCByZW1vdmUKQEAgLTU4Myw3ICs1ODMsNyBAQAogCSAgaW5jbHVkZWQgbW9yZSB0aGFuIG9uY2UuCiAJKiBSZXBsYWNlZCAic2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOwogCSAgc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KSIgd2l0aCAibXNsZWVwKHRpbWVvdXQpIi4KLQkqIEZpeG5vZGUgd2FzIGxvb3Npbmcgc3RhcmdldCB3aGVuIHJlZGlzY292ZXJlZC4gV2Ugc2F3IG1lc3NhZ2VzCisJKiBGaXhub2RlIHdhcyBsb3Npbmcgc3RhcmdldCB3aGVuIHJlZGlzY292ZXJlZC4gV2Ugc2F3IG1lc3NhZ2VzCiAJICBsaWtlOiBscGZjIDAwMDA6MDQ6MDIuMDogMDowMjYzIENhbm5vdCBibG9jayBzY3NpIHRhcmdldCBhcyBhCiAJICByZXN1bHQuICBNb3ZlZCBzdGFyZ2V0IGZpZWxkIGludG8gc3RydWN0IGxwZmNfdGFyZ2V0IHdoaWNoIGlzCiAJICByZWZlcmVuY2VkIGZyb20gdGhlIG5vZGUuCkBAIC02MDQsNyArNjA0LDcgQEAKIAkqIE1ha2UgMyBmdW5jdGlvbnMgc3RhdGljOiBscGZjX2dldF9oYmFfc3ltX25vZGVfbmFtZSwKIAkgIGxwZmNfaW50cl9wcmVwIGFuZCBscGZjX3NldHVwX3NsaW1fYWNjZXNzLiAgTW92ZSBscGZjX2ludHJfcHJlcAogCSAgYW5kIGxwZmNfc2V0dXBfc2xpbV9hY2Nlc3Mgc28gdGhleSdyZSBkZWZpbmVkIGJlZm9yZSBiZWluZyB1c2VkLgotCSogUmVtb3ZlIGFuIHVuZWNlc3NhcnkgbGlzdF9kZWwoKSBpbiBscGZjX2hiYWRpc2MuYy4KKwkqIFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBsaXN0X2RlbCgpIGluIGxwZmNfaGJhZGlzYy5jLgogCSogU2V0IG5scF9zdGF0ZSBiZWZvcmUgY2FsbGluZyBscGZjX25scF9saXN0KCkgc2luY2UgdGhpcyB3aWxsCiAJICBwb3RlbnRpYWxseSBjYWxsIGZjX3RhcmdldF91bmJsb2NrIHdoaWNoIG1heSBjYXVzZSBhIHJhY2UgaW4KIAkgIHF1ZXVlY29tbWFuZCBieSByZWxlYXNpbmcgaG9zdF9sb2NrLgpAQCAtNzUzLDcgKzc1Myw3IEBACiAJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xMgogCSogUmVtb3ZlZCB1c2VkICNkZWZpbmVzOiBERUZBVUxUX1BDSV9MQVRFTkNZX0NMT0NLUyBhbmQKIAkgIFBDSV9MQVRFTkNZX1ZBTFVFIGZyb20gbHBmY19ody5oLgotCSogQ2hhbmdlcyB0byBhY2NvbW9kYXRlIHJuaWQuCisJKiBDaGFuZ2VzIHRvIGFjY29tbW9kYXRlIHJuaWQuCiAJKiBGaXggUlNDTiBoYW5kbGluZyBzbyBSU0NOIE5TIHF1ZXJpZXMgb25seSBlZmZlY3QgTlBvcnRzIGZvdW5kIGluCiAJICBSU0NOIGRhdGEuCiAJKiBJZiB3ZSByY3YgYSBwbG9naSBvbiBhIE5Qb3J0IHF1ZXVlZCB1cCBmb3IgZGlzY292ZXJ5LCBjbGVhciB0aGUKQEAgLTgxMyw3ICs4MTMsNyBAQAogCSAgY291bnRlciBpbnN0ZWFkLCBicmRfbm8gaXNuJ3QgcmV1c2VkIGFueW1vcmUuICBBbHNvIHNvbWUgdGlueQogCSAgd2hpdGVzcGFjZSBjbGVhbnVwcyBpbiBzdXJyb3VuZGluZyBjb2RlLgogCSogUmVvcmRlciBmdW5jdGlvbnMgaW4gbHBmY19lbHMuYyB0byByZW1vdmUgbmVlZCBmb3IgcHJvdG90eXBlcy4KLQkqIFJlbW92ZWQgdW5zZWQgcHJvdG90eXBlcyBmcm9tIGxwZmNfY3J0bi5oIC0KKwkqIFJlbW92ZWQgdW51c2VkIHByb3RvdHlwZXMgZnJvbSBscGZjX2NydG4uaCAtCiAJICBscGZjX2lwX3RpbWVvdXRfaGFuZGxlciwgbHBmY19yZWFkX3BjaSBhbmQgbHBmY19yZXZva2UuCiAJKiBSZW1vdmVkIHNvbWUgdW51c2VkIHByb3RvdHlwZXMgZnJvbSBscGZjX2NydG4uaCAtCiAJICBscGZjX3Njc2lfaGJhX3Jlc2V0LCBscGZjX3Njc2lfaXNzdWVfaW5xc24sCkBAIC04NjMsNyArODYzLDcgQEAKIAkqIE1pbmltYWwgc3VwcG9ydCBmb3IgU0NTSSBmbGF0IHNwYWNlIGFkZHJlc3Npbmcvdm9sdW1lIHNldAogCSAgYWRkcmVzc2luZy4gIFVzZSAxNiBiaXRzIG9mIExVTiBhZGRyZXNzIHNvIHRoYXQgZmxhdAogCSAgYWRkcmVzc2luZy9WU0Egd2lsbCB3b3JrLgotCSogQ2hhbmdlZCAyIG9jY3VyZW5jZXMgb2YgaWYoIDEgIT0gZih4KSkgdG8gaWYoZih4KSAhPSAxKQorCSogQ2hhbmdlZCAyIG9jY3VycmVuY2VzIG9mIGlmKCAxICE9IGYoeCkpIHRvIGlmKGYoeCkgIT0gMSkKIAkqIERyb3AgaW5jbHVkZSBvZiBscGZjX2NmZ3Bhcm0uaC4KIAkqIFJlZHVjZSBzdGFjayB1c2FnZSBvZiBscGZjX2ZkbWlfY21kIGluIGxwZmNfY3QuYy4KIAkqIEFkZCBtaW5pbXVtIHJhbmdlIGNoZWNraW5nIHByb3BlcnR5IHRvIC9zeXMgd3JpdGUvc3RvcmUKQEAgLTE0NDksNyArMTQ0OSw3IEBACiAJKiBSZW1vdmVkIGxwZmNfZWxzX2Noa19sYXR0IGZyb20gdGhlIGxwZmNfY29uZmlnX3Bvc3QgZnVuY3Rpb24uCiAJICBscGZjX2Vsc19jaGtfbGF0dCB3aWxsIGVuYWJsZSB0aGUgbGluayBldmVudCBpbnRlcnJ1cHRzIHdoZW4KIAkgIGZsb2dpIGlzIHBlbmRpbmcgd2hpY2ggY2F1c2VzIHR3byBkaXNjb3Zlcnkgc3RhdGUgbWFjaGluZXMKLQkgIHJ1bm5pbmcgcGFyYWxsZWx5LgorCSAgcnVubmluZyBwYXJhbGxlbGx5LgogCSogQWRkIHBjaV9kaXNhYmxlX2RldmljZSB0byB1bmxvYWQgcGF0aC4KIAkqIE1vdmUgbHBmY19zbGVlcF9ldmVudCBmcm9tIGxwZmNfZmNwLmMgdG8gbHBmY191dGlsX2lvY3RsLmMKIAkqIENhbGwgZG1hX21hcF9zaW5nbGUoKSAmIHBjaV9tYXBfc2luZ2xlKCkgZGlyZWN0bHkgaW5zdGVhZCBvZiB2aWEKQEAgLTE1OTAsNyArMTU5MCw3IEBACiAJICBFTFhfV1JJVEVfSFMgRUxYX1dSSVRFX0hBIEVMWF9XUklURV9DQSBFTFhfUkVBRF9IQwogCSAgRUxYX1JFQURfSFMgRUxYX1JFQURfSEEgRUxYX1JFQURfQ0EgRUxYX1JFQURfTUIgRUxYX1JFU0VUCiAJICBFTFhfUkVBRF9IQkEgRUxYX0lOU1RBTkNFIEVMWF9MSVAuICBBbHNvIGludHJvZHVjZWQKLQkgIGF0dHJpYnV0ZSAic2V0IiB0byBiZSB1c2VkIGluIGNvbmp1Y3Rpb24gd2l0aCB0aGUgYWJvdmUKKwkgIGF0dHJpYnV0ZSAic2V0IiB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGFib3ZlCiAJICBhdHRyaWJ1dGVzLgogCSogUmVtb3ZlZCBETElOSywgZW5xdWUgYW5kIGRlcXVlIGRlY2xhcmF0aW9ucyBub3cgdGhhdCBjbG9jawogCSAgZG9lc24ndCB1c2UgdGhlbSBhbnltb3JlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5tZWdhcmFpZAppbmRleCA1ZTA3ZDMyLi5kMjA1MmZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubWVnYXJhaWQKQEAgLTE2OCw3ICsxNjgsNyBAQAogCiAxLglTb3J0ZWQgb3V0IFBDSSBJRHMgdG8gcmVtb3ZlIG1lZ2FyYWlkIHN1cHBvcnQgb3ZlcmxhcHMuCiAJQmFzZWQgb24gdGhlIHBhdGNoIGZyb20gRGFuaWVsLCBzb3J0ZWQgb3V0IFBDSSBJRHMgYWxvbmcgd2l0aAotCWNoYXJhY3RvciBub2RlIG5hbWUgY2hhbmdlIGZyb20gJ21lZ2FkZXYnIHRvICdtZWdhZGV2X2xlZ2FjeScgdG8gYXZvaWQKKwljaGFyYWN0ZXIgbm9kZSBuYW1lIGNoYW5nZSBmcm9tICdtZWdhZGV2JyB0byAnbWVnYWRldl9sZWdhY3knIHRvIGF2b2lkCiAJY29uZmxpY3QuCiAJLS0tCiAJSG9wZWZ1bGx5IHdlJ2xsIGJlIGdldHRpbmcgdGhlIGJ1aWxkIHJlc3RyaWN0aW9uIHphcHBlZCBtdWNoIHNvb25lciwgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eCBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubmNyNTNjOHh4CmluZGV4IDhiMjc4YzEuLjkyODhlM2Q4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eApAQCAtMjAwLDcgKzIwMCw3IEBACiAJICBCeSBkZWZhdWx0IHRoZSBkcml2ZXIgdXNlcyBib3RoIElSUUZfU0hBUkVEIGFuZCBJUlFGX0RJU0FCTEVELgogCSAgT3B0aW9uICduY3I1M2M4eHg9aXJxbToweDIwJyBtYXkgYmUgdXNlZCB3aGVuIGFuIElSUSBpcyBzaGFyZWQgYnkgCiAJICBhIDUzQzhYWCBhZGFwdGVyIGFuZCBhIG5ldHdvcmsgYm9hcmQuCi0JLSBUaW55IG1pc3BlbGxpbmcgZml4ZWQgKEFCT1JUIGluc3RlYWQgb2YgQUJSVCkuIFdhcyBmb3J0dW5hdGVseSAKKwktIFRpbnkgbWlzc3BlbGxpbmcgZml4ZWQgKEFCT1JUIGluc3RlYWQgb2YgQUJSVCkuIFdhcyBmb3J0dW5hdGVseSAKIAkgIGhhcm1sZXNzLgogCS0gTmVnb3RpYXRlIFNZTkMgZGF0YSB0cmFuc2ZlcnMgd2l0aCBDQ1MgZGV2aWNlcy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5zeW01M2M4eHggYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eAppbmRleCAwMmZmYmMxLi5jMTkzMzcwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eApAQCAtNDU3LDcgKzQ1Nyw3IEBACiBTYXQgRGVjIDE5ICAyMTowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQogCSogdmVyc2lvbiBzeW01M2M4eHgtMS4wCiAJLSBEZWZpbmUgc29tZSBuZXcgSU8gcmVnaXN0ZXJzIGZvciB0aGUgODk2IChpc3RhdDEsIG1ib3gwLCBtYm94MSkKLQktIFJldmFtcCBzbGlnaGx5IHRoZSBTeW1iaW9zIE5WUkFNIGxheS1vdXQgYmFzZWQgb24gdGhlIGV4Y2VycHQgb2YgCisJLSBSZXZhbXAgc2xpZ2h0bHkgdGhlIFN5bWJpb3MgTlZSQU0gbGF5LW91dCBiYXNlZCBvbiB0aGUgZXhjZXJwdCBvZiAKIAkgIHRoZSBoZWFkZXIgZmlsZSBJIHJlY2VpdmVkIGZyb20gU3ltYmlvcy4KIAktIENoZWNrIHRoZSBQQ0kgYnVzIG51bWJlciBmb3IgdGhlIGJvb3Qgb3JkZXIgKFVzaW5nIGEgZmFzdCAKIAkgIFBDSSBjb250cm9sbGVyIGJlaGluZyBhIFBDSS1QQ0kgYnJpZGdlIHNlZW1zIHN1Yi1vcHRpbWFsKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9haGExNTJ4LnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9haGExNTJ4LnR4dAppbmRleCAyOWNlNmQ4Li45NDg0ODczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvYWhhMTUyeC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FoYTE1MngudHh0CkBAIC0xMjQsNyArMTI0LDcgQEAKIHRoZSByaWdodCBnZW9tZXRyeSB0byBiZSBhYmxlIHRvIGludGVycHJldCBpdC4KIAogTW9yZW92ZXIgdGhlcmUgYXJlIGNlcnRhaW4gbGltaXRhdGlvbnMgdG8gdGhlIEMvSC9TIGFkZHJlc3Npbmcgc2NoZW1lLAotbmFtZWx5IHRoZSBhZGRyZXNzIHNwYWNlIGlzIGxpbWl0ZWQgdG8gdXB0byAyNTUgaGVhZHMsIHVwdG8gNjMgc2VjdG9ycworbmFtZWx5IHRoZSBhZGRyZXNzIHNwYWNlIGlzIGxpbWl0ZWQgdG8gdXAgdG8gMjU1IGhlYWRzLCB1cCB0byA2MyBzZWN0b3JzCiBhbmQgYSBtYXhpbXVtIG9mIDEwMjMgY3lsaW5kZXJzLgogCiBUaGUgQUhBLTE1MjIgQklPUyBjYWxjdWxhdGVzIHRoZSBnZW9tZXRyeSBieSBmaXhpbmcgdGhlIG51bWJlciBvZiBoZWFkcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzc5eHgudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzc5eHgudHh0CmluZGV4IDE2ZTA1NGMuLjY0YWM3MDkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9haWM3OXh4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWljNzl4eC50eHQKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICAgICAgICBPcHRpb246IHRhZ19pbmZvOnt7dmFsdWVbLHZhbHVlLi4uXX1bLHt2YWx1ZVssdmFsdWUuLi5dfS4uLl19CiAgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IHRoZSBwZXItdGFyZ2V0IHRhZ2dlZCBxdWV1ZSBkZXB0aCBvbiBhCiAgICAgICAgICAgICAgICAgICAgICAgcGVyIGNvbnRyb2xsZXIgYmFzaXMuICBCb3RoIGNvbnRyb2xsZXJzIGFuZCB0YXJnZXRzCi0gICAgICAgICAgICAgICAgICAgICAgbWF5IGJlIG9tbWl0dGVkIGluZGljYXRpbmcgdGhhdCB0aGV5IHNob3VsZCByZXRhaW4KKyAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQgdGhleSBzaG91bGQgcmV0YWluCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdGFnIGRlcHRoLgogICAgICAgICAgICAgRXhhbXBsZXM6IHRhZ19pbmZvOnt7MTYsMzIsMzIsNjQsOCw4LCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMn0KICAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMApAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJkX3N0cm1fYml0bWFzayBpcyBhIDE2IGJpdCBoZXggdmFsdWUgaW4gd2hpY2gKICAgICAgICAgICAgICAgICAgICAgICBlYWNoIGJpdCByZXByZXNlbnRzIGEgdGFyZ2V0LiAgU2V0dGluZyB0aGUgdGFyZ2V0J3MKICAgICAgICAgICAgICAgICAgICAgICBiaXQgdG8gJzEnIGVuYWJsZXMgcmVhZCBzdHJlYW1pbmcgZm9yIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuICBDb250cm9sbGVycyBtYXkgYmUgb21taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LiAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogcmRfc3RybTp7MHgwMDQxfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgIE9wdGlvbjogZHY6IHt2YWx1ZVssdmFsdWUuLi5dfQogICAgICAgICAgIERlZmluaXRpb246IFNldCBEb21haW4gVmFsaWRhdGlvbiBQb2xpY3kgb24gYSBwZXItY29udHJvbGxlciBiYXNpcy4KLSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogZHY6ey0xLDAsLDEsMSwwfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIGxlYXZlIERWIGF0IGl0cyBkZWZhdWx0IHNldHRpbmcuCkBAIC0zNDAsNyArMzQwLDcgQEAKICAgICAgICAgICAgICAgT3B0aW9uOiBwcmVjb21wOiB7dmFsdWVbLHZhbHVlLi4uXX0KICAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgSU8gQ2VsbCBwcmVjb21wZW5zYXRpb24gdmFsdWUgb24gYSBwZXItY29udHJvbGxlcgogICAgICAgICAgICAgICAgICAgICAgIGJhc2lzLgotICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbW1pdHRlZCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICB0aGV5IHNob3VsZCByZXRhaW4gdGhlIGRlZmF1bHQgcHJlY29tcGVuc2F0aW9uIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogcHJlY29tcDp7MHgxfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIHNldCBwcmVjb21wZW5zYXRpb24gdG8gMS4KQEAgLTM1Myw3ICszNTMsNyBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgT3B0aW9uOiBzbGV3cmF0ZToge3ZhbHVlWyx2YWx1ZS4uLl19CiAgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IElPIENlbGwgc2xldyByYXRlIG9uIGEgcGVyLWNvbnRyb2xsZXIgYmFzaXMuCi0gICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9tbWl0dGVkIGluZGljYXRpbmcgdGhhdAorICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbWl0dGVkIGluZGljYXRpbmcgdGhhdAogICAgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hvdWxkIHJldGFpbiB0aGUgZGVmYXVsdCBzbGV3IHJhdGUgc2V0dGluZy4KICAgICAgICAgICAgICBFeGFtcGxlOiBzbGV3cmF0ZTp7MHgxfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIHNldCBzbGV3IHJhdGUgdG8gMS4KQEAgLTM2Niw3ICszNjYsNyBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgT3B0aW9uOiBhbXBsaXR1ZGU6IHt2YWx1ZVssdmFsdWUuLi5dfQogICAgICAgICAgIERlZmluaXRpb246IFNldCBJTyBDZWxsIHNpZ25hbCBhbXBsaXR1ZGUgb24gYSBwZXItY29udHJvbGxlciBiYXNpcy4KLSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogYW1wbGl0dWRlOnsweDF9CiAgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgc2V0IGFtcGxpdHVkZSB0byAxLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2libW1jYS50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvaWJtbWNhLnR4dAppbmRleCA0NWQ2MWFkLi5hYzQxYTlmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvaWJtbWNhLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvaWJtbWNhLnR4dApAQCAtMzAzLDcgKzMwMyw3IEBACiAgICAoc2NiKSBhbmQgY2FsbHMgYSBsb2NhbCBmdW5jdGlvbiBpc3N1ZV9jbWQoKSwgd2hpY2ggd3JpdGVzIGEgc2NiIAogICAgY29tbWFuZCBpbnRvIHN1YnN5c3RlbSBJL08gcG9ydHMuIE9uY2UgdGhlIHNjYiBjb21tYW5kIGlzIGNhcnJpZWQgb3V0LCAKICAgIHRoZSBpbnRlcnJ1cHRfaGFuZGxlcigpIGlzIGludm9rZWQuIElmIGEgZGV2aWNlIGlzIGRldGVybWluZWQgdG8gYmUgCi0gICBleGlzdGFudCBhbmQgaXQgaGFzIG5vdCBhc3NpZ25lZCBhbnkgbGRuLCBpdCBnZXRzIG9uZSBkeW5hbWljYWxseS4KKyAgIGV4aXN0ZW50IGFuZCBpdCBoYXMgbm90IGFzc2lnbmVkIGFueSBsZG4sIGl0IGdldHMgb25lIGR5bmFtaWNhbGx5LgogICAgRm9yIHRoaXMsIHRoZSB3aG9sZSBzdHVmZiBpcyBkb25lIGluIGlibW1jYV9xdWV1ZWNvbW1hbmQoKS4KIAogICAgMi42IEFib3J0ICYgUmVzZXQgQ29tbWFuZHMKQEAgLTc0MSw3ICs3NDEsNyBAQAogICAgICAgc29tZSBlcnJvciBhcHBlYXJlZCwgZWxzZSBpdCBpcyB1bmRlZmluZWQuIE5vdywgdGhpcyBpcyBmaXhlZC4gQmVmb3JlCiAgICAgICBhbnkgU0NCIGNvbW1hbmQgZ2V0cyBxdWV1ZWQsIHRoZSB0c2IuZGV2X3N0YXR1cyBpcyBzZXQgdG8gMCwgc28gdGhlIAogICAgICAgY21kLT5yZXN1bHQgd29uJ3Qgc2NyZXcgdXAgTGludXggaGlnaGVyIGxldmVsIGRyaXZlcnMuCi0gICAyKSBUaGUgcmVzZXQtZnVuY3Rpb24gaGFzIHNsaWdodGx5IGltcHJvdmVkLiBUaGlzIGlzIHN0aWxsIHBsYW5lZCBmb3IgCisgICAyKSBUaGUgcmVzZXQtZnVuY3Rpb24gaGFzIHNsaWdodGx5IGltcHJvdmVkLiBUaGlzIGlzIHN0aWxsIHBsYW5uZWQgZm9yIAogICAgICAgYWJvcnQuIER1cmluZyB0aGUgYWJvcnQgYW5kIHRoZSByZXNldCBmdW5jdGlvbiwgbm8gaW50ZXJydXB0cyBhcmUgCiAgICAgICBhbGxvd2VkLiBUaGlzIGlzIGhvd2V2ZXIgcXVpdGUgaGFyZCB0byBjb3BlIHdpdGgsIHNvIHRoZSBJTlQtc3RhdHVzCiAgICAgICByZWdpc3RlciBpcyByZWFkLiBXaGVuIHRoZSBpbnRlcnJ1cHQgZ2V0cyBxdWV1ZWQsIG9uZSBjYW4gZmluZCBpdHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpLWNoYW5nZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKaW5kZXggMDMyMzk5Yi4uYWRlMDQ2ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKQEAgLTEwMiw3ICsxMDIsNyBAQAogCiBJZiB5b3UgaW5zbW9kIHRoZSBkcml2ZXIgd2l0aCAiaW5zbW9kIGRlYnVnPTEiLCBpdCB3aWxsIGJlIHZlcmJvc2UgYW5kCiBwcmludHMgYSBsb3Qgb2Ygc3R1ZmYgdG8gdGhlIHN5c2xvZy4gIENvbXBpbGluZyB0aGUga2VybmVsIHdpdGgKLUNPTkZJR19TQ1NJX0NPTlNUQU5UUz15IGltcHJvdmVzIHRoZSBxdWFsaXR5IG9mIHRoZSBlcnJvciBtZXNzYWdlcyBhbG90CitDT05GSUdfU0NTSV9DT05TVEFOVFM9eSBpbXByb3ZlcyB0aGUgcXVhbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZXMgYSBsb3QKIGJlY2F1c2UgdGhlIGtlcm5lbCB3aWxsIHRyYW5zbGF0ZSB0aGUgZXJyb3IgY29kZXMgaW50byBodW1hbi1yZWFkYWJsZQogc3RyaW5ncyB0aGVuLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9laC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9laC50eHQKaW5kZXggN2FjYmViYi4uNmZmMTZiNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZWgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2VoLnR4dApAQCAtMjkwLDcgKzI5MCw3IEBACiAJU0NTSSB0cmFuc3BvcnRzL0xMRERzIGF1dG9tYXRpY2FsbHkgYWNxdWlyZSBzZW5zZSBkYXRhIG9uCiAJY29tbWFuZCBmYWlsdXJlcyAoYXV0b3NlbnNlKS4gIEF1dG9zZW5zZSBpcyByZWNvbW1lbmRlZCBmb3IKIAlwZXJmb3JtYW5jZSByZWFzb25zIGFuZCBhcyBzZW5zZSBpbmZvcm1hdGlvbiBjb3VsZCBnZXQgb3V0IG9mCi0Jc3luYyBpbmJldHdlZW4gb2NjdXJyZW5jZSBvZiBDSEVDSyBDT05ESVRJT04gYW5kIHRoaXMgYWN0aW9uLgorCXN5bmMgYmV0d2VlbiBvY2N1cnJlbmNlIG9mIENIRUNLIENPTkRJVElPTiBhbmQgdGhpcyBhY3Rpb24uCiAKIAlOb3RlIHRoYXQgaWYgYXV0b3NlbnNlIGlzIG5vdCBzdXBwb3J0ZWQsIHNjbWQtPnNlbnNlX2J1ZmZlcgogCWNvbnRhaW5zIGludmFsaWQgc2Vuc2UgZGF0YSB3aGVuIGVycm9yLWNvbXBsZXRpbmcgdGhlIHNjbWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9mY190cmFuc3BvcnQudHh0CmluZGV4IGUwMDE5MmQuLmY3OTI4MmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZmNfdHJhbnNwb3J0LnR4dApAQCAtMjkxLDcgKzI5MSw3IEBACiBWcG9ydCBzdXBwb3J0IGJ5IExMREQ6CiAKICAgVGhlIExMREQgaW5kaWNhdGVzIHN1cHBvcnQgZm9yIHZwb3J0cyBieSBzdXBwbHlpbmcgYSB2cG9ydF9jcmVhdGUoKQotICBmdW5jdGlvbiBpbiB0aGUgdHJhbnNwb3J0IHRlbXBsYXRlLiAgVGhlIHByZXNlbnNlIG9mIHRoaXMgZnVuY3Rpb24gd2lsbAorICBmdW5jdGlvbiBpbiB0aGUgdHJhbnNwb3J0IHRlbXBsYXRlLiAgVGhlIHByZXNlbmNlIG9mIHRoaXMgZnVuY3Rpb24gd2lsbAogICBjYXVzZSB0aGUgY3JlYXRpb24gb2YgdGhlIG5ldyBhdHRyaWJ1dGVzIG9uIHRoZSBmY19ob3N0LiAgQXMgcGFydCBvZgogICB0aGUgcGh5c2ljYWwgcG9ydCBjb21wbGV0aW5nIGl0cyBpbml0aWFsaXphdGlvbiByZWxhdGl2ZSB0byB0aGUKICAgdHJhbnNwb3J0LCBpdCBzaG91bGQgc2V0IHRoZSBtYXhfbnBpdl92cG9ydHMgYXR0cmlidXRlIHRvIGluZGljYXRlIHRoZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbW94YS1zbWFydGlvIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbW94YS1zbWFydGlvCmluZGV4IGQxMDQ0MzkuLjVkMmEzM2IgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2VyaWFsL21veGEtc21hcnRpbworKysgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9tb3hhLXNtYXJ0aW8KQEAgLTQ3Myw3ICs0NzMsNyBAQAogICAgc3BkX25vcm1hbAkgIFVzZSAgMzguNGtiICB3aGVuICB0aGUgYXBwbGljYXRpb24gcmVxdWVzdHMgMzguNGtiLgogICAgc3BkX2N1c3QJICBVc2UgIHRoZSBjdXN0b20gZGl2aXNvciB0byBzZXQgdGhlIHNwZWVkIHdoZW4gIHRoZQogCQkgIGFwcGxpY2F0aW9uIHJlcXVlc3RzIDM4LjRrYi4KLSAgIGRpdmlzb3IJICBUaGlzIG9wdGlvbiBzZXQgdGhlIGN1c3RvbSBkaXZpc29uLgorICAgZGl2aXNvcgkgIFRoaXMgb3B0aW9uIHNldCB0aGUgY3VzdG9tIGRpdmlzaW9uLgogICAgYmF1ZF9iYXNlCSAgVGhpcyBvcHRpb24gc2V0IHRoZSBiYXNlIGJhdWQgcmF0ZS4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsL25fZ3NtLnR4dCBiL0RvY3VtZW50YXRpb24vc2VyaWFsL25fZ3NtLnR4dAppbmRleCAzOTdmNDFhLi5hNWQ5MTEyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NlcmlhbC9uX2dzbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbl9nc20udHh0CkBAIC0zNCw3ICszNCw3IEBACiAJLyogY29uZmlndXJlIHRoZSBzZXJpYWwgcG9ydCA6IHNwZWVkLCBmbG93IGNvbnRyb2wgLi4uICovCiAKIAkvKiBzZW5kIHRoZSBBVCBjb21tYW5kcyB0byBzd2l0Y2ggdGhlIG1vZGVtIHRvIENNVVggbW9kZQotCSAgIGFuZCBjaGVjayB0aGF0IGl0J3Mgc3VjY2VzZnVsIChzaG91bGQgcmV0dXJuIE9LKSAqLworCSAgIGFuZCBjaGVjayB0aGF0IGl0J3Mgc3VjY2Vzc2Z1bCAoc2hvdWxkIHJldHVybiBPSykgKi8KIAl3cml0ZShmZCwgIkFUK0NNVVg9MFxyIiwgMTApOwogCiAJLyogZXhwZXJpZW5jZSBzaG93ZWQgdGhhdCBzb21lIG1vZGVtcyBuZWVkIHNvbWUgdGltZSBiZWZvcmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9BTFNBLUNvbmZpZ3VyYXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKaW5kZXggMTgxYmE1Yi4uOTgyMmFmYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKQEAgLTMyMiw3ICszMjIsNyBAQAogICAgICJwb3J0IiBuZWVkcyB0byBtYXRjaCB0aGUgQkFTRSBBRERSRVNTIGp1bXBlciBvbiB0aGUgY2FyZCAoMHgyMjAgb3IgMHgyNDApCiAgICAgb3IgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2FyZCdzIEVFUFJPTSBmb3IgY2FyZHMgdGhhdCBoYXZlIGFuIEVFUFJPTSBhbmQKICAgICB0aGVpciAiQ09ORklHIE1PREUiIGp1bXBlciBzZXQgdG8gIkVFUFJPTSBTRVRUSU5HIi4gVGhlIG90aGVyIHZhbHVlcyBjYW4KLSAgICBiZSBjaG9vc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCisgICAgYmUgY2hvc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCiAKICAgICBJZiBkbWEyIGlzIHNwZWNpZmllZCBhbmQgZGlmZmVyZW50IGZyb20gZG1hMSwgdGhlIGNhcmQgd2lsbCBvcGVyYXRlIGluCiAgICAgZnVsbC1kdXBsZXggbW9kZS4gV2hlbiBkbWExPTMsIG9ubHkgZG1hMj0wIGlzIHZhbGlkIGFuZCB0aGUgb25seSB3YXkgdG8KQEAgLTM1Niw3ICszNTYsNyBAQAogICAgICJwb3J0IiBuZWVkcyB0byBtYXRjaCB0aGUgQkFTRSBBRERSRVNTIGp1bXBlciBvbiB0aGUgY2FyZCAoMHgyMjAgb3IgMHgyNDApCiAgICAgb3IgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2FyZCdzIEVFUFJPTSBmb3IgY2FyZHMgdGhhdCBoYXZlIGFuIEVFUFJPTSBhbmQKICAgICB0aGVpciAiQ09ORklHIE1PREUiIGp1bXBlciBzZXQgdG8gIkVFUFJPTSBTRVRUSU5HIi4gVGhlIG90aGVyIHZhbHVlcyBjYW4KLSAgICBiZSBjaG9vc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCisgICAgYmUgY2hvc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCiAKICAgICBJZiBkbWEyIGlzIHNwZWNpZmllZCBhbmQgZGlmZmVyZW50IGZyb20gZG1hMSwgdGhlIGNhcmQgd2lsbCBvcGVyYXRlIGluCiAgICAgZnVsbC1kdXBsZXggbW9kZS4gV2hlbiBkbWExPTMsIG9ubHkgZG1hMj0wIGlzIHZhbGlkIGFuZCB0aGUgb25seSB3YXkgdG8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5PU1MgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9SRUFETUUuT1NTCmluZGV4IGM2MTVkZWIuLjRiZTI1OTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5PU1MKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUkVBRE1FLk9TUwpAQCAtMTM1Miw3ICsxMzUyLDcgQEAKIFRoZSBQQ00yMCBjb250YWlucyBhIHJhZGlvIHR1bmVyLCB3aGljaCBpcyBhbHNvIGNvbnRyb2xsZWQgYnkKIEFDSS4gVGhpcyByYWRpbyB0dW5lciBpcyBzdXBwb3J0ZWQgYnkgdGhlIEFDSSBkcml2ZXIgdG9nZXRoZXIgd2l0aCB0aGUKIG1pcm9wY20yMC5vIG1vZHVsZS4gQWxzbyB0aGUgNy1iYW5kIGVxdWFsaXplciBpcyBpbnRlZ3JhdGVkCi0obGltaXRlZCBieSB0aGUgT1NTLWRlc2lnbikuIERldmVsb3BlbWVudCBoYXMgc3RhcnRlZCBhbmQgbWF5YmUKKyhsaW1pdGVkIGJ5IHRoZSBPU1MtZGVzaWduKS4gRGV2ZWxvcG1lbnQgaGFzIHN0YXJ0ZWQgYW5kIG1heWJlCiBmaW5pc2hlZCBmb3IgdGhlIFJEUyBkZWNvZGVyIG9uIHRoaXMgY2FyZCwgdG9vLiBZb3Ugd2lsbCBiZSBhYmxlIHRvCiByZWFkIFJhZGlvVGV4dCwgdGhlIFByb2dyYW1tZSBTZXJ2aWNlIG5hbWUsIFByb2dyYW1tZSBUWXBlIGFuZAogb3RoZXJzLiBFdmVuIHRoZSB2NGwgcmFkaW8gbW9kdWxlIGJlbmVmaXRzIGZyb20gaXQgd2l0aCBhIHJlZmluZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3BpL3B4YTJ4eCBiL0RvY3VtZW50YXRpb24vc3BpL3B4YTJ4eAppbmRleCA2OGE0ZmUzLi40OTNkYWRhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NwaS9weGEyeHgKKysrIGIvRG9jdW1lbnRhdGlvbi9zcGkvcHhhMnh4CkBAIC0xNDMsNyArMTQzLDcgQEAKIE5PVEU6IHRoZSBTUEkgZHJpdmVyIGNhbm5vdCBjb250cm9sIHRoZSBjaGlwIHNlbGVjdCBpZiBTU1BGUk0gaXMgdXNlZCwgc28gdGhlCiBjaGlwc2VsZWN0IGlzIGRyb3BwZWQgYWZ0ZXIgZWFjaCBzcGlfdHJhbnNmZXIuICBNb3N0IGRldmljZXMgbmVlZCBjaGlwIHNlbGVjdAogYXNzZXJ0ZWQgYXJvdW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlLiAgVXNlIFNTUEZSTSBhcyBhIEdQSU8gKHRocm91Z2ggY3NfY29udHJvbCkKLXRvIGFjY29tb2RhdGUgdGhlc2UgY2hpcHMuCit0byBhY2NvbW1vZGF0ZSB0aGVzZSBjaGlwcy4KIAogCiBOU1NQIFNMQVZFIFNBTVBMRQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLWxtNzBsbHAgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscAppbmRleCAzNGE5Y2ZkLi40NjNmNmQwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscApAQCAtNDYsNyArNDYsNyBAQAogCiBOb3RlIHRoYXQgc2luY2UgdGhlIExNNzAgdXNlcyBhICIzLXdpcmUiIHZhcmlhbnQgb2YgU1BJLCB0aGUgU0kvU08gcGluCiBpcyBjb25uZWN0ZWQgdG8gYm90aCBwaW4gRDcgKGFzIE1hc3RlciBPdXQpIGFuZCBTZWxlY3QgKGFzIE1hc3RlciBJbikKLXVzaW5nIGFuIGFycmFuZ21lbnQgdGhhdCBsZXRzIGVpdGhlciB0aGUgcGFycG9ydCBvciB0aGUgTE03MCBwdWxsIHRoZQordXNpbmcgYW4gYXJyYW5nZW1lbnQgdGhhdCBsZXRzIGVpdGhlciB0aGUgcGFycG9ydCBvciB0aGUgTE03MCBwdWxsIHRoZQogcGluIGxvdy4gIFRoaXMgY2FuJ3QgYmUgc2hhcmVkIHdpdGggdHJ1ZSBTUEkgZGV2aWNlcywgYnV0IG90aGVyIDMtd2lyZQogZGV2aWNlcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTSS9TTyBwaW4uCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVsZXBob255L2l4ai50eHQgYi9Eb2N1bWVudGF0aW9uL3RlbGVwaG9ueS9peGoudHh0CmluZGV4IDRmYjMxNGQuLmRiOTRmYjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVsZXBob255L2l4ai50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWxlcGhvbnkvaXhqLnR4dApAQCAtNTEsNyArNTEsNyBAQAogU3BlY2lmaWNhbGx5LCB2ZXJ5IG9sZCBJbnRlcm5ldCBQaG9uZUpBQ0sgY2FyZHMgaGF2ZSBub24tc3RhbmRhcmQKIEcuNzIzLjEgY29kZWNzIChkdWUgdG8gdGhlIGVhcmx5IG5hdHVyZSBvZiB0aGUgRFNQcyBpbiB0aG9zZSBkYXlzKS4KIFRoZSBhdXRvLWNvbnZlcnNpb24gY29kZSB0byBicmluZyB0aG9zZSBjYXJkcyBpbnRvIGNvbXBsaWFuY2Ugd2l0aAotdG9kYXlzIHN0YW5kYXJkcyBpcyBhdmFpbGFibGUgYXMgYSBiaW5hcnkgb25seSBtb2R1bGUgdG8gdGhvc2UgcGVvcGxlCit0b2RheSdzIHN0YW5kYXJkcyBpcyBhdmFpbGFibGUgYXMgYSBiaW5hcnkgb25seSBtb2R1bGUgdG8gdGhvc2UgcGVvcGxlCiBuZWVkaW5nIGl0LiAgSWYgeW91IGJvdWdodCB5b3VyIGNhcmQgYWZ0ZXIgMTk5NyBvciBzbywgeW91IGFyZSBPSyAtCiBpdCdzIG9ubHkgdGhlIHZlcnkgb2xkIGNhcmRzIHRoYXQgYXJlIGFmZmVjdGVkLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL3JpbmctYnVmZmVyLWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3JpbmctYnVmZmVyLWRlc2lnbi50eHQKaW5kZXggZDI5OWZmMy4uN2QzNTBiNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90cmFjZS9yaW5nLWJ1ZmZlci1kZXNpZ24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvcmluZy1idWZmZXItZGVzaWduLnR4dApAQCAtMjM3LDcgKzIzNyw3IEBACiAgICAgICB8d3JpdHRlbiAgfAogICAgICAgKy0tLS0tLS0tLSsKICAgICAgIHx3cml0dGVuICB8Ci0gICAgICArLS0tLS0tLS0tKyAgPC0tLSBuZXh0IHBvc2l0b24gZm9yIHdyaXRlIChjdXJyZW50IGNvbW1pdCkKKyAgICAgICstLS0tLS0tLS0rICA8LS0tIG5leHQgcG9zaXRpb24gZm9yIHdyaXRlIChjdXJyZW50IGNvbW1pdCkKICAgICAgIHwgZW1wdHkgICB8CiAgICAgICArLS0tLS0tLS0tKwogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5wdnJ1c2IyIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUucHZydXNiMgppbmRleCBhNzQ3MjAwLi4yMTM3YjU4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5wdnJ1c2IyCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLnB2cnVzYjIKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgIHRvIHByb3ZpZGUgYSBzdHJlYW1pbmcgQVBJIHVzYWJsZSBieSBhIHJlYWQoKSBzeXN0ZW0gY2FsbCBzdHlsZSBvZgogICAgIEkvTy4gIFJpZ2h0IG5vdyB0aGlzIGlzIHRoZSBvbmx5IGxheWVyIG9uIHRvcCBvZiBwdnJ1c2IyLWlvLltjaF0sCiAgICAgaG93ZXZlciB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgaGVyZSB3YXMgaW50ZW5kZWQgdG8gYWxsb3cgZm9yCi0gICAgb3RoZXIgc3R5bGVzIG9mIEkvTyB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIGFkZGl0b25hbCBtb2R1bGVzLCBsaWtlCisgICAgb3RoZXIgc3R5bGVzIG9mIEkvTyB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlcywgbGlrZQogICAgIG1tYXAoKSdlZCBidWZmZXJzIG9yIHNvbWV0aGluZyBldmVuIG1vcmUgZXhvdGljLgogCiAgIHB2cnVzYjItbWFpbi5jIC0gVGhpcyBpcyB0aGUgdG9wIGxldmVsIG9mIHRoZSBkcml2ZXIuICBNb2R1bGUgbGV2ZWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FCmluZGV4IDNhMzY3Y2QuLjdjYmY0ZmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRQpAQCAtNzAsNyArNzAsNyBAQAogaW5zdGVhZCBvZiBtYWlsaW5nIG1lIGRpcmVjdGx5LiAgVGhlIGNoYW5jZSB0aGF0IHNvbWVvbmUgd2l0aCB0aGUKIHNhbWUgY2FyZCBsaXN0ZW5zIHRoZXJlIGlzIG11Y2ggaGlnaGVyLi4uCiAKLUZvciBwcm9ibGVtcyB3aXRoIHNvdW5kOiAgVGhlcmUgYXJlIGFsb3Qgb2YgZGlmZmVyZW50IHN5c3RlbXMgdXNlZAorRm9yIHByb2JsZW1zIHdpdGggc291bmQ6ICBUaGVyZSBhcmUgYSBsb3Qgb2YgZGlmZmVyZW50IHN5c3RlbXMgdXNlZAogZm9yIFRWIHNvdW5kIGFsbCBvdmVyIHRoZSB3b3JsZC4gIEFuZCB0aGVyZSBhcmUgYWxzbyBkaWZmZXJlbnQgY2hpcHMKIHdoaWNoIGRlY29kZSB0aGUgYXVkaW8gc2lnbmFsLiAgUmVwb3J0cyBhYm91dCBzb3VuZCBwcm9ibGVtcyAoInN0ZXJlbwogZG9lcydudCB3b3JrIikgYXJlIHByZXR0eSB1c2VsZXNzIHVubGVzcyB5b3UgaW5jbHVkZSBzb21lIGRldGFpbHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUuZnJlZXplIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKaW5kZXggNDI1OWRjYy4uNWVkZGZhMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKQEAgLTMzLDcgKzMzLDcgQEAKIAogSSd2ZSBzZWVuIHJlcG9ydHMgdGhhdCBidHR2IDAuNy54IGNyYXNoZXMgd2hlcmVhcyAwLjgueCB3b3JrcyByb2NrIHNvbGlkCiBmb3Igc29tZSBwZW9wbGUuICBUaHVzIHByb2JhYmx5IGEgc21hbGwgYnVnbGV0IGxlZnQgc29tZXdoZXJlIGluIGJ0dHYKLTAuNy54LiAgSSBoYXZlIG5vIGlkZWEgd2hlcmUgZXhhY3RseSwgaXQgd29ya3Mgc3RhYmxlIGZvciBtZSBhbmQgYWxvdCBvZgorMC43LnguICBJIGhhdmUgbm8gaWRlYSB3aGVyZSBleGFjdGx5LCBpdCB3b3JrcyBzdGFibGUgZm9yIG1lIGFuZCBhIGxvdCBvZgogb3RoZXIgcGVvcGxlLiAgQnV0IGluIGNhc2UgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgMC43LnggdmVyc2lvbnMgeW91CiBjYW4gZ2l2ZSAwLjgueCBhIHRyeSAuLi4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NvdW5kLUZBUSBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Tb3VuZC1GQVEKaW5kZXggYmM1ZTQxZC4uMzk1ZjZjNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NvdW5kLUZBUQorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU291bmQtRkFRCkBAIC0yLDcgKzIsNyBAQAogYnR0diBhbmQgc291bmQgbWluaSBob3d0bwogPT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGVyZSBhcmUgYWxvdCBvZiBkaWZmZXJlbnQgYnQ4NDgvODQ5Lzg3OC84NzkgYmFzZWQgYm9hcmRzIGF2YWlsYWJsZS4KK1RoZXJlIGFyZSBhIGxvdCBvZiBkaWZmZXJlbnQgYnQ4NDgvODQ5Lzg3OC84NzkgYmFzZWQgYm9hcmRzIGF2YWlsYWJsZS4KIE1ha2luZyB2aWRlbyB3b3JrIG9mdGVuIGlzIG5vdCBhIGJpZyBkZWFsLCBiZWNhdXNlIHRoaXMgaXMgaGFuZGxlZAogY29tcGxldGVseSBieSB0aGUgYnQ4eHggY2hpcCwgd2hpY2ggaXMgY29tbW9uIG9uIGFsbCBib2FyZHMuICBCdXQKIHNvdW5kIGlzIGhhbmRsZWQgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IHdheXMgb24gZWFjaCBib2FyZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcHhhX2NhbWVyYS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3B4YV9jYW1lcmEudHh0CmluZGV4IDRmNmQwY2EuLjUxZWQxNTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcHhhX2NhbWVyYS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9weGFfY2FtZXJhLnR4dApAQCAtODQsMTIgKzg0LDEyIEBACiAgICAgICAgdHJhbnNmZXIgaXMgbm90IHN0YXJ0ZWQuIE9uICJFbmQgT2YgRnJhbWUiIGludGVycnVwdCwgdGhlIGlycSBoYW5kbGVyCiAgICAgICAgc3RhcnRzIHRoZSBETUEgY2hhaW4uCiAgICAgIC0gY2FwdHVyZSBvZiBvbmUgdmlkZW9idWZmZXIKLSAgICAgICBUaGUgRE1BIGNoYWluIHN0YXJ0cyB0cmFuc2ZlcmluZyBkYXRhIGludG8gdmlkZW9idWZmZXIgUkFNIHBhZ2VzLgotICAgICAgIFdoZW4gYWxsIHBhZ2VzIGFyZSB0cmFuc2ZlcmVkLCB0aGUgRE1BIGlycSBpcyByYWlzZWQgb24gIkVORElOVFIiIHN0YXR1cworICAgICAgIFRoZSBETUEgY2hhaW4gc3RhcnRzIHRyYW5zZmVycmluZyBkYXRhIGludG8gdmlkZW9idWZmZXIgUkFNIHBhZ2VzLgorICAgICAgIFdoZW4gYWxsIHBhZ2VzIGFyZSB0cmFuc2ZlcnJlZCwgdGhlIERNQSBpcnEgaXMgcmFpc2VkIG9uICJFTkRJTlRSIiBzdGF0dXMKICAgICAgLSBmaW5pc2hpbmcgb25lIHZpZGVvYnVmZmVyCiAgICAgICAgVGhlIERNQSBpcnEgaGFuZGxlciBtYXJrcyB0aGUgdmlkZW9idWZmZXIgYXMgImRvbmUiLCBhbmQgcmVtb3ZlcyBpdCBmcm9tCiAgICAgICAgdGhlIGFjdGl2ZSBydW5uaW5nIHF1ZXVlCi0gICAgICAgTWVhbndoaWxlLCB0aGUgbmV4dCB2aWRlb2J1ZmZlciAoaWYgdGhlcmUgaXMgb25lKSwgaXMgdHJhbnNmZXJlZCBieSBETUEKKyAgICAgICBNZWFud2hpbGUsIHRoZSBuZXh0IHZpZGVvYnVmZmVyIChpZiB0aGVyZSBpcyBvbmUpLCBpcyB0cmFuc2ZlcnJlZCBieSBETUEKICAgICAgLSBmaW5pc2hpbmcgdGhlIGxhc3QgdmlkZW9idWZmZXIKICAgICAgICBPbiB0aGUgRE1BIGlycSBvZiB0aGUgbGFzdCB2aWRlb2J1ZmZlciwgdGhlIFFDSSBpcyBzdG9wcGVkLgogCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogICAgICBUaGlzIHN0cnVjdHVyZSBpcyBwb2ludGVkIGJ5IGRtYS0+c2dfY3B1LgogICAgICBUaGUgZGVzY3JpcHRvcnMgYXJlIHVzZWQgYXMgZm9sbG93cyA6Ci0gICAgICAtIGRlc2Mtc2dbaV06IGktdGggZGVzY3JpcHRvciwgdHJhbnNmZXJpbmcgdGhlIGktdGggc2cKKyAgICAgIC0gZGVzYy1zZ1tpXTogaS10aCBkZXNjcmlwdG9yLCB0cmFuc2ZlcnJpbmcgdGhlIGktdGggc2cKICAgICAgICAgZWxlbWVudCB0byB0aGUgdmlkZW8gYnVmZmVyIHNjYXR0ZXIgZ2F0aGVyCiAgICAgICAtIGZpbmlzaGVyOiBoYXMgZGRhZHI9REFERFJfU1RPUCwgZGNtZD1FTkRJUlFFTgogICAgICAgLSBsaW5rZXI6IGhhcyBkZGFkcj0gZGVzYy1zZ1swXSBvZiBuZXh0IHZpZGVvIGJ1ZmZlciwgZGNtZD0wCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CmluZGV4IDNiMTU2MDguLmNmMjFmN2EgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CkBAIC0zNDMsNyArMzQzLDcgQEAKIAllcnIgPSB2NGwyX2RldmljZV9jYWxsX3VudGlsX2Vycih2NGwyX2RldiwgMCwgY29yZSwgZ19jaGlwX2lkZW50LCAmY2hpcCk7CiAKIEFueSBlcnJvciBleGNlcHQgLUVOT0lPQ1RMQ01EIHdpbGwgZXhpdCB0aGUgbG9vcCB3aXRoIHRoYXQgZXJyb3IuIElmIG5vCi1lcnJvcnMgKGV4Y2VwdCAtRU5PSU9DVExDTUQpIG9jY3VyZWQsIHRoZW4gMCBpcyByZXR1cm5lZC4KK2Vycm9ycyAoZXhjZXB0IC1FTk9JT0NUTENNRCkgb2NjdXJyZWQsIHRoZW4gMCBpcyByZXR1cm5lZC4KIAogVGhlIHNlY29uZCBhcmd1bWVudCB0byBib3RoIGNhbGxzIGlzIGEgZ3JvdXAgSUQuIElmIDAsIHRoZW4gYWxsIHN1YmRldnMgYXJlCiBjYWxsZWQuIElmIG5vbi16ZXJvLCB0aGVuIG9ubHkgdGhvc2Ugd2hvc2UgZ3JvdXAgSUQgbWF0Y2ggdGhhdCB2YWx1ZSB3aWxsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL2FjdGl2ZV9tbS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL2FjdGl2ZV9tbS50eHQKaW5kZXggNGVlMWY2NC4uZGJmNDU4MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92bS9hY3RpdmVfbW0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdm0vYWN0aXZlX21tLnR4dApAQCAtNzQsNyArNzQsNyBAQAogYW5kIHRoaW5ncyBsaWtlIHRoYXQpLgogCiBBbnl3YXksIEkgcHV0IGEgcHJlLXBhdGNoLTIuMy4xMy0xIG9uIGZ0cC5rZXJuZWwub3JnIGp1c3QgYSBtb21lbnQgYWdvLAotYmVjYXVzZSBpdCBzbGlnaHRseSBjaGFuZ2VzIHRoZSBpbnRlcmZhY2VzIHRvIGFjY29tb2RhdGUgdGhlIGFscGhhICh3aG8KK2JlY2F1c2UgaXQgc2xpZ2h0bHkgY2hhbmdlcyB0aGUgaW50ZXJmYWNlcyB0byBhY2NvbW1vZGF0ZSB0aGUgYWxwaGEgKHdobwogd291bGQgaGF2ZSB0aG91Z2h0IGl0LCBidXQgdGhlIGFscGhhIGFjdHVhbGx5IGVuZHMgdXAgaGF2aW5nIG9uZSBvZiB0aGUKIHVnbGllc3QgY29udGV4dCBzd2l0Y2ggY29kZXMgLSB1bmxpa2UgdGhlIG90aGVyIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhlIE1NCiBhbmQgcmVnaXN0ZXIgc3RhdGUgaXMgc2VwYXJhdGUsIHRoZSBhbHBoYSBQQUxjb2RlIGpvaW5zIHRoZSB0d28sIGFuZCB5b3UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vaHVnZXRsYnBhZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKaW5kZXggNDU3NjM0Yy4uZjg1NTFiMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKQEAgLTcyLDcgKzcyLDcgQEAKIGFsbG9jYXRpbmcgaHVnZSBwYWdlcyBhcyBtZW1vcnkgaGFzIG5vdCB5ZXQgYmVjb21lIGZyYWdtZW50ZWQuCiAKIFNvbWUgcGxhdGZvcm1zIHN1cHBvcnQgbXVsdGlwbGUgaHVnZSBwYWdlIHNpemVzLiAgVG8gYWxsb2NhdGUgaHVnZSBwYWdlcwotb2YgYSBzcGVjaWZpYyBzaXplLCBvbmUgbXVzdCBwcmVjZWVkIHRoZSBodWdlIHBhZ2VzIGJvb3QgY29tbWFuZCBwYXJhbWV0ZXJzCitvZiBhIHNwZWNpZmljIHNpemUsIG9uZSBtdXN0IHByZWNlZGUgdGhlIGh1Z2UgcGFnZXMgYm9vdCBjb21tYW5kIHBhcmFtZXRlcnMKIHdpdGggYSBodWdlIHBhZ2Ugc2l6ZSBzZWxlY3Rpb24gcGFyYW1ldGVyICJodWdlcGFnZXN6PTxzaXplPiIuICA8c2l6ZT4gbXVzdAogYmUgc3BlY2lmaWVkIGluIGJ5dGVzIHdpdGggb3B0aW9uYWwgc2NhbGUgc3VmZml4IFtrS21NZ0ddLiAgVGhlIGRlZmF1bHQgaHVnZQogcGFnZSBzaXplIG1heSBiZSBzZWxlY3RlZCB3aXRoIHRoZSAiZGVmYXVsdF9odWdlcGFnZXN6PTxzaXplPiIgYm9vdCBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL292ZXJjb21taXQtYWNjb3VudGluZyBiL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCmluZGV4IDIxYzdiMWYuLjcwNmQ3ZWQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCisrKyBiL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCkBAIC00LDcgKzQsNyBAQAogCQlhZGRyZXNzIHNwYWNlIGFyZSByZWZ1c2VkLiBVc2VkIGZvciBhIHR5cGljYWwgc3lzdGVtLiBJdAogCQllbnN1cmVzIGEgc2VyaW91c2x5IHdpbGQgYWxsb2NhdGlvbiBmYWlscyB3aGlsZSBhbGxvd2luZwogCQlvdmVyY29tbWl0IHRvIHJlZHVjZSBzd2FwIHVzYWdlLiAgcm9vdCBpcyBhbGxvd2VkIHRvIAotCQlhbGxvY2F0ZSBzbGlnaGx5IG1vcmUgbWVtb3J5IGluIHRoaXMgbW9kZS4gVGhpcyBpcyB0aGUgCisJCWFsbG9jYXRlIHNsaWdodGx5IG1vcmUgbWVtb3J5IGluIHRoaXMgbW9kZS4gVGhpcyBpcyB0aGUgCiAJCWRlZmF1bHQuCiAKIDEJLQlBbHdheXMgb3ZlcmNvbW1pdC4gQXBwcm9wcmlhdGUgZm9yIHNvbWUgc2NpZW50aWZpYwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyNDIzIGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyNDIzCmluZGV4IDkwYTY1ZDIuLjNmOThiNTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX2RzMjQyMworKysgYi9Eb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV9kczI0MjMKQEAgLTIxLDggKzIxLDggQEAKIAogRWFjaCBsaW5lcyB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBvZiA0MiBieXRlcyByZWFkIGZyb20gdGhlIGNvdW50ZXIgYW5kCiBtZW1vcnkgcGFnZSBhbG9uZyB0aGUgY3JjPVlFUyBvciBOTyBmb3IgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZWFkIG9wZXJhdGlvbgotd2FzIHN1Y2Nlc3NmdWxsIGFuZCBDUkMgbWF0Y2hlZC4KLUlmIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWxsLCB0aGVyZSBpcyBhbHNvIGluIHRoZSBlbmQgb2YgZWFjaCBsaW5lCit3YXMgc3VjY2Vzc2Z1bCBhbmQgQ1JDIG1hdGNoZWQuCitJZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLCB0aGVyZSBpcyBhbHNvIGluIHRoZSBlbmQgb2YgZWFjaCBsaW5lCiBhIGNvdW50ZXIgdmFsdWUgZXhwcmVzc2VkIGFzIGFuIGludGVnZXIgYWZ0ZXIgYz0KIAogTWVhbmluZyBvZiA0MiBieXRlcyByZXByZXNlbnRlZCBpcyBmb2xsb3dpbmc6CkBAIC0zNCw3ICszNCw3IEBACiAgLSBjcmM9WUVTL05PIGluZGljYXRpbmcgd2hldGhlciByZWFkIHdhcyBvayBhbmQgY3JjIG1hdGNoZWQKICAtIGM9PGludD4gY3VycmVudCBjb3VudGVyIHZhbHVlCiAKLWV4YW1wbGUgZnJvbSB0aGUgc3VjY2Vzc2Z1bGwgcmVhZDoKK2V4YW1wbGUgZnJvbSB0aGUgc3VjY2Vzc2Z1bCByZWFkOgogMDAgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNmQgMzggMDAgZmYgZmYgMDAgMDAgZmUgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgY3JjPVlFUyBjPTIKIDAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIGUwIDFmIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIGNyYz1ZRVMgYz0yCiAwMCAyOSBjNiA1ZCAxOCAwMCAwMCAwMCAwMCAwNCAzNyAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiBjcmM9WUVTIGM9NDA4Nzk4NzYxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3cxLm5ldGxpbmsgYi9Eb2N1bWVudGF0aW9uL3cxL3cxLm5ldGxpbmsKaW5kZXggODA0NDQ1Zi4uZjU5YTMxOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi93MS93MS5uZXRsaW5rCisrKyBiL0RvY3VtZW50YXRpb24vdzEvdzEubmV0bGluawpAQCAtODEsNyArODEsNyBAQAogZm9ybWF0OgogCiAJY25fbXNnIChDTl9XMV9JRFguQ05fVzFfVkFMIGFzIGlkLCBsZW4gaXMgZXF1YWwgdG8gc2l6ZW9mKHN0cnVjdAotCXcxX25ldGxpbmtfbXNnKSBwbHVzIG51bWJlciBvZiBtYXN0ZXJzIG11bHRpcGxlZCBieSA0KQorCXcxX25ldGxpbmtfbXNnKSBwbHVzIG51bWJlciBvZiBtYXN0ZXJzIG11bHRpcGxpZWQgYnkgNCkKIAl3MV9uZXRsaW5rX21zZyAodHlwZTogVzFfTElTVF9NQVNURVJTLCBsZW4gaXMgZXF1YWwgdG8KIAkJbnVtYmVyIG9mIG1hc3RlcnMgbXVsdGlwbGllZCBieSA0ICh1MzIgc2l6ZSkpCiAJaWQwIC4uLiBpZE4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvaHB3ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKaW5kZXggOWMyNGQ1Zi4uOTQ4ODA3OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKQEAgLTgsNyArOCw3IEBACiAgVGhlIEhQIGlMTzIgTk1JIFdhdGNoZG9nIGRyaXZlciBpcyBhIGtlcm5lbCBtb2R1bGUgdGhhdCBwcm92aWRlcyBiYXNpYwogIHdhdGNoZG9nIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBhZGRlZCBiZW5lZml0IG9mIE5NSSBzb3VyY2luZy4gQm90aCB0aGUKICB3YXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgTk1JIHNvdXJjaW5nIGNhcGFiaWxpdHkgbmVlZCB0byBiZSBlbmFibGVkCi0gYnkgdGhlIHVzZXIuIFJlbWVtYmVyIHRoYXQgdGhlIHR3byBtb2RlcyBhcmUgbm90IGRlcGVuZGFudCBvbiBvbmUgYW5vdGhlci4KKyBieSB0aGUgdXNlci4gUmVtZW1iZXIgdGhhdCB0aGUgdHdvIG1vZGVzIGFyZSBub3QgZGVwZW5kZW50IG9uIG9uZSBhbm90aGVyLgogIEEgdXNlciBjYW4gaGF2ZSB0aGUgTk1JIHNvdXJjaW5nIHdpdGhvdXQgdGhlIHdhdGNoZG9nIHRpbWVyIGFuZCB2aWNlLXZlcnNhLgogCiAgV2F0Y2hkb2cgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIGxpa2UgYW55IG90aGVyIGNvbW1vbiB3YXRjaGRvZyBkcml2ZXIuIFRoYXQKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggNmI0YjljZC4uNjQ5NjAwYyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTY5MTYsNiArNjkxNiwxMyBAQAogUzoJTWFpbnRhaW5lZAogRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYKIAorWEVOIE5FVFdPUksgQkFDS0VORCBEUklWRVIKK006CUlhbiBDYW1wYmVsbCA8aWFuLmNhbXBiZWxsQGNpdHJpeC5jb20+CitMOgl4ZW4tZGV2ZWxAbGlzdHMueGVuc291cmNlLmNvbSAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrLyoKKwogWEVOIFBDSSBTVUJTWVNURU0KIE06CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KIEw6CXhlbi1kZXZlbEBsaXN0cy54ZW5zb3VyY2UuY29tIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2VsZi5oCmluZGV4IDliYWFlOGEuLmRhNTQ0OWUgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vZWxmLmgKKysrIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9lbGYuaApAQCAtMTAxLDcgKzEwMSw3IEBACiAKICNkZWZpbmUgRUxGX1BMQVRfSU5JVChfciwgbG9hZF9hZGRyKQlfci0+cjAgPSAwCiAKLS8qIFRoZSByZWdpc3RlcnMgYXJlIGxheWVkIG91dCBpbiBwdF9yZWdzIGZvciBQQUwgYW5kIHN5c2NhbGwKKy8qIFRoZSByZWdpc3RlcnMgYXJlIGxhaWQgb3V0IGluIHB0X3JlZ3MgZm9yIFBBTCBhbmQgc3lzY2FsbAogICAgY29udmVuaWVuY2UuICBSZS1vcmRlciB0aGVtIGZvciB0aGUgbGluZWFyIGVsZl9ncmVnc2V0X3QuICAqLwogCiBzdHJ1Y3QgcHRfcmVnczsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL2NvcmVfbGNhLmMgYi9hcmNoL2FscGhhL2tlcm5lbC9jb3JlX2xjYS5jCmluZGV4IDQ4NDNmNmUuLmNiMjgwMWMgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL2NvcmVfbGNhLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvY29yZV9sY2EuYwpAQCAtMTMzLDcgKzEzMyw3IEBACiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAKLQkvKiBSZXNldCBzdGF0dXMgcmVnaXN0ZXIgdG8gYXZvaWQgbG9vc2luZyBlcnJvcnMuICAqLworCS8qIFJlc2V0IHN0YXR1cyByZWdpc3RlciB0byBhdm9pZCBsb3NpbmcgZXJyb3JzLiAgKi8KIAlzdGF0MCA9ICoodnVscClMQ0FfSU9DX1NUQVQwOwogCSoodnVscClMQ0FfSU9DX1NUQVQwID0gc3RhdDA7CiAJbWIoKTsKQEAgLTE3MCw3ICsxNzAsNyBAQAogCiAJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkvKiBhdm9pZCBnZXR0aW5nIGhpdCBieSBtYWNoaW5lIGNoZWNrICovCiAKLQkvKiBSZXNldCBzdGF0dXMgcmVnaXN0ZXIgdG8gYXZvaWQgbG9vc2luZyBlcnJvcnMuICAqLworCS8qIFJlc2V0IHN0YXR1cyByZWdpc3RlciB0byBhdm9pZCBsb3NpbmcgZXJyb3JzLiAgKi8KIAlzdGF0MCA9ICoodnVscClMQ0FfSU9DX1NUQVQwOwogCSoodnVscClMQ0FfSU9DX1NUQVQwID0gc3RhdDA7CiAJbWIoKTsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL2Vycl9tYXJ2ZWwuYyBiL2FyY2gvYWxwaGEva2VybmVsL2Vycl9tYXJ2ZWwuYwppbmRleCA2NDhhZTg4Li5hZTU0YWQ5IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9lcnJfbWFydmVsLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvZXJyX21hcnZlbC5jCkBAIC0xMDI3LDcgKzEwMjcsNyBAQAogCSAqIG5vcm1hbCBvcGVyYXRpb24sIGRpc21pc3MgdGhlbS4KIAkgKgogCSAqIERpc21pc3MgaWY6Ci0JICoJQ19TVEFUCQk9IDB4MTQgCQkoRXJyb3IgUmVwb25zZSkKKwkgKglDX1NUQVQJCT0gMHgxNCAJCShFcnJvciBSZXNwb25zZSkKIAkgKglDX1NUUzwzPgk9IDAgICAgCQkoQ19BRERSIHZhbGlkKQogCSAqCUNfQUREUjw0Mj4JPSAxICAgIAkJKEkvTykKIAkgKglDX0FERFI8MzE6MjI+CT0gMTExMTEweHhiCShQQ0kgQ29uZmlnIHNwYWNlKQpkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9saWIvZXY2Ny1zdHJyY2hyLlMgYi9hcmNoL2FscGhhL2xpYi9ldjY3LXN0cnJjaHIuUwppbmRleCAzZmQ4YmY0Li5kZDBkOGM2IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2xpYi9ldjY3LXN0cnJjaHIuUworKysgYi9hcmNoL2FscGhhL2xpYi9ldjY3LXN0cnJjaHIuUwpAQCAtODIsNyArODIsNyBAQAogJGVvczoKIAluZWdxCXQxLCB0NAkJIyBFIDogaXNvbGF0ZSBmaXJzdCBudWxsIGJ5dGUgbWF0Y2gKIAlhbmQJdDEsIHQ0LCB0NAkjIEUgOgotCXN1YnEJdDQsIDEsIHQ1CSMgRSA6IGJ1aWxkIGEgbWFzayBvZiB0aGUgYnl0ZXMgdXB0by4uLgorCXN1YnEJdDQsIDEsIHQ1CSMgRSA6IGJ1aWxkIGEgbWFzayBvZiB0aGUgYnl0ZXMgdXAgdG8uLi4KIAlvcgl0NCwgdDUsIHQ0CSMgRSA6IC4uLiBhbmQgaW5jbHVkaW5nIHRoZSBudWxsCiAKIAlhbmQJdDMsIHQ0LCB0MwkjIEUgOiBtYXNrIG91dCBjaGFyIG1hdGNoZXMgYWZ0ZXIgbnVsbApkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9saWIvZmxzLmMgYi9hcmNoL2FscGhhL2xpYi9mbHMuYwppbmRleCAzMmFmYWEzLi5kZGQwNDhjIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2xpYi9mbHMuYworKysgYi9hcmNoL2FscGhhL2xpYi9mbHMuYwpAQCAtNiw3ICs2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KIAogLyogVGhpcyBpcyBmbHMoeCktMSwgZXhjZXB0IHplcm8gaXMgaGVsZCB0byB6ZXJvLiAgVGhpcyBhbGxvd3MgbW9zdAotICAgZWZmaWNlbnQgaW5wdXQgaW50byBleHRibCwgcGx1cyBpdCBhbGxvd3MgZWFzeSBoYW5kbGluZyBvZiBmbHMoMCk9MC4gICovCisgICBlZmZpY2llbnQgaW5wdXQgaW50byBleHRibCwgcGx1cyBpdCBhbGxvd3MgZWFzeSBoYW5kbGluZyBvZiBmbHMoMCk9MC4gICovCiAKIGNvbnN0IHVuc2lnbmVkIGNoYXIgX19mbHNtMV90YWJbMjU2XSA9IAogewpkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9saWIvc3RycmNoci5TIGIvYXJjaC9hbHBoYS9saWIvc3RycmNoci5TCmluZGV4IDgyY2ZkMGEuLjE5NzBkYzAgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvbGliL3N0cnJjaHIuUworKysgYi9hcmNoL2FscGhhL2xpYi9zdHJyY2hyLlMKQEAgLTU0LDcgKzU0LDcgQEAKICRlb3M6CiAJbmVncQl0MSwgdDQJCSMgZTAgICAgOiBpc29sYXRlIGZpcnN0IG51bGwgYnl0ZSBtYXRjaAogCWFuZAl0MSwgdDQsIHQ0CSMgZTEgICAgOgotCXN1YnEJdDQsIDEsIHQ1CSMgZTAgICAgOiBidWlsZCBhIG1hc2sgb2YgdGhlIGJ5dGVzIHVwdG8uLi4KKwlzdWJxCXQ0LCAxLCB0NQkjIGUwICAgIDogYnVpbGQgYSBtYXNrIG9mIHRoZSBieXRlcyB1cCB0by4uLgogCW9yCXQ0LCB0NSwgdDQJIyBlMSAgICA6IC4uLiBhbmQgaW5jbHVkaW5nIHRoZSBudWxsCiAKIAlhbmQJdDMsIHQ0LCB0MwkjIGUwICAgIDogbWFzayBvdXQgY2hhciBtYXRjaGVzIGFmdGVyIG51bGwKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvb3Byb2ZpbGUvb3BfbW9kZWxfZXY2Ny5jIGIvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9tb2RlbF9ldjY3LmMKaW5kZXggNzAzMDIwOC4uNWI5ZDE3OCAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9tb2RlbF9ldjY3LmMKKysrIGIvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9tb2RlbF9ldjY3LmMKQEAgLTE5Miw3ICsxOTIsNyBAQAogCQljYXNlIFRSQVBfSU5WQUxJRDE6CiAJCWNhc2UgVFJBUF9JTlZBTElEMjoKIAkJY2FzZSBUUkFQX0lOVkFMSUQzOgotCQkJLyogUGlwZWxpbmUgcmVkaXJlY3Rpb24gb2N1cnJlZC4gUE1QQyBwb2ludHMKKwkJCS8qIFBpcGVsaW5lIHJlZGlyZWN0aW9uIG9jY3VycmVkLiBQTVBDIHBvaW50cwogCQkJICAgdG8gUEFMY29kZS4gUmVjb2duaXplIElUQiBtaXNzIGJ5IFBBTGNvZGUKIAkJCSAgIG9mZnNldCBhZGRyZXNzLCBhbmQgZ2V0IGFjdHVhbCBQQyBmcm9tCiAJCQkgICBFWENfQUREUi4gICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCA1YjlmNzhiLi5mZGM5ZDRkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL0tjb25maWcKQEAgLTY5NCw3ICs2OTQsNyBAQAogCSAgdGhlIFNhbXN1bmcgU01ESzI0MTAgZGV2ZWxvcG1lbnQgYm9hcmQgKGFuZCBkZXJpdmF0aXZlcykuCiAKIAkgIE5vdGUsIHRoZSBTM0MyNDE2IGFuZCB0aGUgUzNDMjQ1MCBhcmUgc28gY2xvc2UgdGhhdCB0aGV5IGV2ZW4gc2hhcmUKLQkgIHRoZSBzYW1lIFNvQyBJRCBjb2RlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gc2VwZXJhdGUgbWFjaGluZQorCSAgdGhlIHNhbWUgU29DIElEIGNvZGUuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBzZXBhcmF0ZSBtYWNoaW5lCiAJICBkaXJlY3RvcnkgKG5vIGFyY2gvYXJtL21hY2gtczNjMjQ1MCkgYXMgdGhlIFMzQzI0MTYgd2FzIGZpcnN0LgogCiBjb25maWcgQVJDSF9TM0M2NFhYCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnLW5vbW11IGIvYXJjaC9hcm0vS2NvbmZpZy1ub21tdQppbmRleCA5MDFlNmRmLi4yY2VmOGUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9LY29uZmlnLW5vbW11CisrKyBiL2FyY2gvYXJtL0tjb25maWctbm9tbXUKQEAgLTM0LDcgKzM0LDcgQEAKIAkgIHVzZWQgaW5zdGVhZCBvZiB0aGUgYXV0by1wcm9iaW5nIHdoaWNoIHV0aWxpemVzIHRoZSByZWdpc3Rlci4KIAogY29uZmlnIFJFTUFQX1ZFQ1RPUlNfVE9fUkFNCi0JYm9vbCAnSW5zdGFsbCB2ZWN0b3JzIHRvIHRoZSBiZWdpbmluZyBvZiBSQU0nIGlmIERSQU1fQkFTRQorCWJvb2wgJ0luc3RhbGwgdmVjdG9ycyB0byB0aGUgYmVnaW5uaW5nIG9mIFJBTScgaWYgRFJBTV9CQVNFCiAJZGVwZW5kcyBvbiBEUkFNX0JBU0UKIAloZWxwCiAJICBUaGUga2VybmVsIG5lZWRzIHRvIGNoYW5nZSB0aGUgaGFyZHdhcmUgZXhjZXB0aW9uIHZlY3RvcnMuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb21tb24vcGwzMzAuYyBiL2FyY2gvYXJtL2NvbW1vbi9wbDMzMC5jCmluZGV4IDhmMGY4NmQuLjk3OTEyZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbW1vbi9wbDMzMC5jCisrKyBiL2FyY2gvYXJtL2NvbW1vbi9wbDMzMC5jCkBAIC0xMDQ1LDcgKzEwNDUsNyBAQAogCXVuc2lnbmVkIGxjbnQwLCBsY250MSwgbGptcDAsIGxqbXAxOwogCXN0cnVjdCBfYXJnX0xQRU5EIGxwZW5kOwogCi0JLyogTWF4IGl0ZXJhdGlvbnMgcG9zc2liaWxlIGluIERNQUxQIGlzIDI1NiAqLworCS8qIE1heCBpdGVyYXRpb25zIHBvc3NpYmxlIGluIERNQUxQIGlzIDI1NiAqLwogCWlmICgqYnVyc3RzID49IDI1NioyNTYpIHsKIAkJbGNudDEgPSAyNTY7CiAJCWxjbnQwID0gMjU2OwpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAKIAl9CiAKIAlmb3IgKGV2ID0gMDsgZXYgPCBwaS0+cGNmZy5udW1fZXZlbnRzOyBldisrKSB7Ci0JCWlmICh2YWwgJiAoMSA8PCBldikpIHsgLyogRXZlbnQgb2NjdXJlZCAqLworCQlpZiAodmFsICYgKDEgPDwgZXYpKSB7IC8qIEV2ZW50IG9jY3VycmVkICovCiAJCQlzdHJ1Y3QgcGwzMzBfdGhyZWFkICp0aHJkOwogCQkJdTMyIGludGVuID0gcmVhZGwocmVncyArIElOVEVOKTsKIAkJCWludCBhY3RpdmU7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9mcHN0YXRlLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9mcHN0YXRlLmgKaW5kZXggZWU1ZTAzZS4uM2FkNGMxMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vZnBzdGF0ZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2Zwc3RhdGUuaApAQCAtMTgsNyArMTgsNyBAQAogICogVkZQIHN0b3JhZ2UgYXJlYSBoYXM6CiAgKiAgLSBGUEVYQywgRlBTQ1IsIEZQSU5TVCBhbmQgRlBJTlNUMi4KICAqICAtIDE2IG9yIDMyIGRvdWJsZSBwcmVjaXNpb24gZGF0YSByZWdpc3RlcnMKLSAqICAtIGFuIGltcGxlbWVudGF0aW9uLWRlcGVuZGFudCB3b3JkIG9mIHN0YXRlIGZvciBGTERNWC9GU1RNWCAocHJlLUFSTXY2KQorICogIC0gYW4gaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IHdvcmQgb2Ygc3RhdGUgZm9yIEZMRE1YL0ZTVE1YIChwcmUtQVJNdjYpCiAgKiAKICAqICBGUEVYQyB3aWxsIGFsd2F5cyBiZSBub24temVybyBvbmNlIHRoZSBWRlAgaGFzIGJlZW4gdXNlZCBpbiB0aGlzIHByb2Nlc3MuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsdWUtY2FjaGUuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsdWUtY2FjaGUuaAppbmRleCBjN2FmYmM1Li43ZTMwODc0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbHVlLWNhY2hlLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vZ2x1ZS1jYWNoZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoX0NBQ0hFKSAmJiAhZGVmaW5lZChNVUxUSV9DQUNIRSkKLSNlcnJvciBVbmtub3duIGNhY2hlIG1haW50YWluZW5jZSBtb2RlbAorI2Vycm9yIFVua25vd24gY2FjaGUgbWFpbnRlbmFuY2UgbW9kZWwKICNlbmRpZgogCiAjaWZuZGVmIE1VTFRJX0NBQ0hFCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbHVlLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbHVlLmgKaW5kZXggMGVjMzVkMS4uZmJmNzFkNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vZ2x1ZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsdWUuaApAQCAtMTAsOCArMTAsOCBAQAogICoKICAqICBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsdWUgdG8gc3RpY2sgdGhlIHByb2Nlc3Nvci1zcGVjaWZpYyBiaXRzCiAgKiAgaW50byB0aGUga2VybmVsIGluIGFuIGVmZmljaWVudCBtYW5uZXIuICBUaGUgaWRlYSBpcyB0byB1c2UgYnJhbmNoZXMKLSAqICB3aGVuIHdlJ3JlIG9ubHkgdGFyZ2V0dGluZyBvbmUgY2xhc3Mgb2YgVExCLCBvciBpbmRpcmVjdCBjYWxscwotICogIHdoZW4gd2UncmUgdGFyZ2V0dGluZyBtdWx0aXBsZSBjbGFzc2VzIG9mIFRMQnMuCisgKiAgd2hlbiB3ZSdyZSBvbmx5IHRhcmdldGluZyBvbmUgY2xhc3Mgb2YgVExCLCBvciBpbmRpcmVjdCBjYWxscworICogIHdoZW4gd2UncmUgdGFyZ2V0aW5nIG11bHRpcGxlIGNsYXNzZXMgb2YgVExCcy4KICAqLwogI2lmZGVmIF9fS0VSTkVMX18KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vaGFyZHdhcmUvcGwwODAuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2hhcmR3YXJlL3BsMDgwLmgKaW5kZXggZjM1Yjg2ZS4uZTRhMDRlNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vaGFyZHdhcmUvcGwwODAuaAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9oYXJkd2FyZS9wbDA4MC5oCkBAIC0xNiw3ICsxNiw3IEBACiAgKiBtYWtlIGl0IG5vdCBlbnRpZXJseSBjb21wYXRpYmxlIHdpdGggdGhlIFBMMDgwIHNwZWNpZmljYXRpb24gZnJvbQogICogQVJNLiBXaGVuIGluIGRvdWJ0LCBjaGVjayB0aGUgU2Ftc3VuZyBkb2N1bWVudGF0aW9uIGZpcnN0LgogICoKLSAqIFRoZSBTYW1zdW5nIGRlZmluZXMgYXJlIFBMMDgwUywgYW5kIGFkZCBhbiBleHRyYSBjb250cm9sbCByZWdpc3RlciwKKyAqIFRoZSBTYW1zdW5nIGRlZmluZXMgYXJlIFBMMDgwUywgYW5kIGFkZCBhbiBleHRyYSBjb250cm9sIHJlZ2lzdGVyLAogICogdGhlIGFiaWxpdHkgdG8gbW92ZSBtb3JlIHRoYW4gMl4xMSBjb3VudHMgb2YgZGF0YSBhbmQgc29tZSBleHRyYQogICogT25lTkFORCBmZWF0dXJlcy4KICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3N5c3RlbS5oCmluZGV4IDlhODc4MjMuLjg4NWJlMDkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3N5c3RlbS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3N5c3RlbS5oCkBAIC0yNDksNyArMjQ5LDcgQEAKICAqIGNhY2hlIHRvdGFsbHkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhY2hlIGJlY29tZXMgaW5jb25zaXN0ZW50LCBhbmQsCiAgKiBzaW5jZSB3ZSB1c2Ugbm9ybWFsIGxvYWRzL3N0b3JlcyBhcyB3ZWxsLCB0aGlzIGlzIHJlYWxseSBiYWQuCiAgKiBUeXBpY2FsbHksIHRoaXMgY2F1c2VzIG9vcHNlbiBpbiBmaWxwX2Nsb3NlLCBidXQgY291bGQgaGF2ZSBvdGhlciwKLSAqIG1vcmUgZGlzYXN0ZXJvdXMgZWZmZWN0cy4gIFRoZXJlIGFyZSB0d28gd29yay1hcm91bmRzOgorICogbW9yZSBkaXNhc3Ryb3VzIGVmZmVjdHMuICBUaGVyZSBhcmUgdHdvIHdvcmstYXJvdW5kczoKICAqICAxLiBEaXNhYmxlIGludGVycnVwdHMgYW5kIGVtdWxhdGUgdGhlIGF0b21pYyBzd2FwCiAgKiAgMi4gQ2xlYW4gdGhlIGNhY2hlLCBwZXJmb3JtIGF0b21pYyBzd2FwLCBmbHVzaCB0aGUgY2FjaGUKICAqCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS91Y29udGV4dC5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vdWNvbnRleHQuaAppbmRleCA0N2YwMjNhLi4xNDc0OWFlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS91Y29udGV4dC5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3Vjb250ZXh0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAKICNlbmRpZgogCiAjaWZkZWYgQ09ORklHX0lXTU1YVAotLyogaXdtbXh0X2FyZWEgaXMgMHg5OCBieXRlcyBsb25nLCBwcmVjZWVkZWQgYnkgOCBieXRlcyBvZiBzaWduYXR1cmUgKi8KKy8qIGl3bW14dF9hcmVhIGlzIDB4OTggYnl0ZXMgbG9uZywgcHJlY2VkZWQgYnkgOCBieXRlcyBvZiBzaWduYXR1cmUgKi8KICNkZWZpbmUgSVdNTVhUX01BR0lDCQkweDEyZWY4NDJhCiAjZGVmaW5lIElXTU1YVF9TVE9SQUdFX1NJWkUJKElXTU1YVF9TSVpFICsgOCkKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3N3cF9lbXVsYXRlLmMgYi9hcmNoL2FybS9rZXJuZWwvc3dwX2VtdWxhdGUuYwppbmRleCA3YTU3NjA5Mi4uNDBlZTdlNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3N3cF9lbXVsYXRlLmMKKysrIGIvYXJjaC9hcm0va2VybmVsL3N3cF9lbXVsYXRlLmMKQEAgLTE1OCw3ICsxNTgsNyBAQAogCiAJaWYgKHJlcyA9PSAwKSB7CiAJCS8qCi0JCSAqIEJhcnJpZXIgYWxzbyByZXF1aXJlZCBiZXR3ZWVuIGFxdWlyaW5nIGEgbG9jayBmb3IgYQorCQkgKiBCYXJyaWVyIGFsc28gcmVxdWlyZWQgYmV0d2VlbiBhY3F1aXJpbmcgYSBsb2NrIGZvciBhCiAJCSAqIHByb3RlY3RlZCByZXNvdXJjZSBhbmQgYWNjZXNzaW5nIHRoZSByZXNvdXJjZS4gSW5zZXJ0ZWQgZm9yCiAJCSAqIHNhbWUgcmVhc29uIGFzIGFib3ZlLgogCQkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9ib2FyZC1jYXJtZXZhLmMgYi9hcmNoL2FybS9tYWNoLWF0OTEvYm9hcmQtY2FybWV2YS5jCmluZGV4IDJlNzRhMTkuLjI5NWUxZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYXQ5MS9ib2FyZC1jYXJtZXZhLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2JvYXJkLWNhcm1ldmEuYwpAQCAtNzYsNyArNzYsNyBAQAogCS5wdWxsdXBfcGluCT0gQVQ5MV9QSU5fUEQ5LAogfTsKIAotLyogRklYTUU6IHVzZXIgZGVwZW5kYW50ICovCisvKiBGSVhNRTogdXNlciBkZXBlbmRlbnQgKi8KIC8vIHN0YXRpYyBzdHJ1Y3QgYXQ5MV9jZl9kYXRhIF9faW5pdGRhdGEgY2FybWV2YV9jZl9kYXRhID0gewogLy8JLmRldF9waW4JPSBBVDkxX1BJTl9QQjAsCiAvLwkucnN0X3Bpbgk9IEFUOTFfUElOX1BDNSwKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9pbmNsdWRlL21hY2gvYXQ5MV9tY2kuaCBiL2FyY2gvYXJtL21hY2gtYXQ5MS9pbmNsdWRlL21hY2gvYXQ5MV9tY2kuaAppbmRleCAyN2FjNmY1Li4wMjE4MmMxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTEvaW5jbHVkZS9tYWNoL2F0OTFfbWNpLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9hdDkxX21jaS5oCkBAIC0xMDIsNyArMTAyLDcgQEAKICNkZWZpbmUJCUFUOTFfTUNJX1JESVJFCQkoMSA8PCAxNykJLyogUmVzcG9uc2UgRGlyZWN0aW9uIEVycm9yICovCiAjZGVmaW5lCQlBVDkxX01DSV9SQ1JDRQkJKDEgPDwgMTgpCS8qIFJlc3BvbnNlIENSQyBFcnJvciAqLwogI2RlZmluZQkJQVQ5MV9NQ0lfUkVOREUJCSgxIDw8IDE5KQkvKiBSZXNwb25zZSBFbmQgQml0IEVycm9yICovCi0jZGVmaW5lCQlBVDkxX01DSV9SVE9FCQkoMSA8PCAyMCkJLyogUmVwb25zZSBUaW1lLW91dCBFcnJvciAqLworI2RlZmluZQkJQVQ5MV9NQ0lfUlRPRQkJKDEgPDwgMjApCS8qIFJlc3BvbnNlIFRpbWUtb3V0IEVycm9yICovCiAjZGVmaW5lCQlBVDkxX01DSV9EQ1JDRQkJKDEgPDwgMjEpCS8qIERhdGEgQ1JDIEVycm9yICovCiAjZGVmaW5lCQlBVDkxX01DSV9EVE9FCQkoMSA8PCAyMikJLyogRGF0YSBUaW1lLW91dCBFcnJvciAqLwogI2RlZmluZQkJQVQ5MV9NQ0lfT1ZSRQkJKDEgPDwgMzApCS8qIE92ZXJydW4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9pbmNsdWRlL21hY2gvZ3Bpby5oIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9ncGlvLmgKaW5kZXggZGRlYjY0NS4uMDU2ZGM2NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9ncGlvLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9ncGlvLmgKQEAgLTIwOCw3ICsyMDgsNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKiB3cmFwcGVycyBmb3IgIm5ldyBzdHlsZSIgR1BJTyBjYWxscy4gdGhlIG9sZCBBVDkxLXNwZWNmaWMgb25lcyBzaG91bGQKKy8qIHdyYXBwZXJzIGZvciAibmV3IHN0eWxlIiBHUElPIGNhbGxzLiB0aGUgb2xkIEFUOTEtc3BlY2lmaWMgb25lcyBzaG91bGQKICAqIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCAoYWxvbmcgd2l0aCB0aGlzIGVycm5vLmggaW5jbHVzaW9uKSwgYW5kIHRoZQogICogZ3BpbyByZXF1ZXN0L2ZyZWUgY2FsbHMgc2hvdWxkIHByb2JhYmx5IGJlIGltcGxlbWVudGVkLgogICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvY3NwL2RtYWMvZG1hY0h3X2V4dHJhLmMgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvY3NwL2RtYWMvZG1hY0h3X2V4dHJhLmMKaW5kZXggNzdmODRiNC4uYTFmMzI4MyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2NzcC9kbWFjL2RtYWNId19leHRyYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9jc3AvZG1hYy9kbWFjSHdfZXh0cmEuYwpAQCAtNTUxLDcgKzU1MSw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqCi0qICBAYnJpZWYgICBDaGVjayB0aGUgZXhpc3RhbmNlIG9mIHBlbmRpbmcgZGVzY3JpcHRvcgorKiAgQGJyaWVmICAgQ2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBwZW5kaW5nIGRlc2NyaXB0b3IKICoKICogIFRoaXMgZnVuY3Rpb24gY29uZmlybWVzIGlmIHRoZXJlIGlzIGFueSBwZW5kaW5nIGRlc2NyaXB0b3IgaW4gdGhlIGNoYWluCiAqICB0byBwcm9ncmFtIHRoZSBjaGFubmVsCkBAIC03NzUsNyArNzc1LDcgQEAKIC8qKgogKiAgQGJyaWVmICAgUmVhZCBkYXRhIERNQWVkIHRvIG1lbW9yeQogKgotKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcmluZyBmcm9tOgorKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcnJpbmcgZnJvbToKICogICAgICAgICAgLSBNZW1vcnkgdG8gbWVtb3J5CiAqICAgICAgICAgIC0gUGVyaXBoZXJhbCB0byBtZW1vcnkKICoKQEAgLTk0MSw3ICs5NDEsNyBAQAogLyoqCiAqICBAYnJpZWYgICBTZXRzIGNoYW5uZWwgc3BlY2lmaWMgdXNlciBkYXRhCiAqCi0qICBUaGlzIGZ1bmN0aW9uIGFzc29jaWF0ZXMgdXNlciBkYXRhIHRvIGEgc3BlY2lmIERNQSBjaGFubmVsCisqICBUaGlzIGZ1bmN0aW9uIGFzc29jaWF0ZXMgdXNlciBkYXRhIHRvIGEgc3BlY2lmaWMgRE1BIGNoYW5uZWwKICoKICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9kbWEuYyBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9kbWEuYwppbmRleCA4ZDFiYWYzLi5kODdhZDMwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvZG1hLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2RtYS5jCkBAIC02MjksNyArNjI5LDcgQEAKICogICBDb25maWd1cmVzIGEgRE1BIGNoYW5uZWwuCiAqCiAqICAgQHJldHVybgotKiAgICAgICA+PSAwICAgIC0gSW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWxsLgorKiAgICAgICA+PSAwICAgIC0gSW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwuCiAqCiAqICAgICAgIC1FQlVTWSAgLSBEZXZpY2UgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQuCiAqICAgICAgIC1FTk9ERVYgLSBEZXZpY2UgaGFuZGVkIGluIGlzIGludmFsaWQuCkBAIC02NzMsNyArNjczLDcgQEAKIC8qKgogKiAgIEluaXRpYWxpemVzIGFsbCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgRE1BLgogKiAgIEByZXR1cm4KLSogICAgICAgPj0gMCAgICAtIEluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsbC4KKyogICAgICAgPj0gMCAgICAtIEluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLgogKgogKiAgICAgICAtRUJVU1kgIC0gRGV2aWNlIGlzIGN1cnJlbnRseSBiZWluZyB1c2VkLgogKiAgICAgICAtRU5PREVWIC0gRGV2aWNlIGhhbmRlZCBpbiBpcyBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvY3NwL2RtYWNIdy5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvY3NwL2RtYWNIdy5oCmluZGV4IDZjOGRhMmIuLmU2YTFkYzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL2NzcC9kbWFjSHcuaAorKysgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9jc3AvZG1hY0h3LmgKQEAgLTM2Miw3ICszNjIsNyBAQAogLyoqCiAqICBAYnJpZWYgICBSZWFkIGRhdGEgRE1BIHRyYW5zZmVycmVkIHRvIG1lbW9yeQogKgotKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcmluZyBmcm9tOgorKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcnJpbmcgZnJvbToKICogICAgICAgICAgLSBNZW1vcnkgdG8gbWVtb3J5CiAqICAgICAgICAgIC0gUGVyaXBoZXJhbCB0byBtZW1vcnkKICoKQEAgLTQ0Niw3ICs0NDYsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgotKiAgQGJyaWVmICAgQ2hlY2sgdGhlIGV4aXN0YW5jZSBvZiBwZW5kaW5nIGRlc2NyaXB0b3IKKyogIEBicmllZiAgIENoZWNrIHRoZSBleGlzdGVuY2Ugb2YgcGVuZGluZyBkZXNjcmlwdG9yCiAqCiAqICBUaGlzIGZ1bmN0aW9uIGNvbmZpcm1lcyBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBkZXNjcmlwdG9yIGluIHRoZSBjaGFpbgogKiAgdG8gcHJvZ3JhbSB0aGUgY2hhbm5lbApAQCAtNTQyLDcgKzU0Miw3IEBACiAvKioKICogIEBicmllZiAgIFNldHMgY2hhbm5lbCBzcGVjaWZpYyB1c2VyIGRhdGEKICoKLSogIFRoaXMgZnVuY3Rpb24gYXNzb2NpYXRlcyB1c2VyIGRhdGEgdG8gYSBzcGVjaWYgRE1BIGNoYW5uZWwKKyogIFRoaXMgZnVuY3Rpb24gYXNzb2NpYXRlcyB1c2VyIGRhdGEgdG8gYSBzcGVjaWZpYyBETUEgY2hhbm5lbAogKgogKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvY2hpcGNId19kZWYuaCBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvY3NwL2NoaXBjSHdfZGVmLmgKaW5kZXggNzBlYWVhOC4uMTYxOTczMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvY2hpcGNId19kZWYuaAorKysgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9jaGlwY0h3X2RlZi5oCkBAIC0xODAsNyArMTgwLDcgQEAKIAogI2RlZmluZSBjaGlwY0h3X1hUQUxfRlJFUV9IeiAgICAgICAgICAgICAgICAgICAgMjUwMDAwMDAJLyogUmVmZXJlbmNlIGNsb2NrIGZyZXF1ZW5jeSBpbiBIeiAqLwogCi0vKiBQcm9ncmFtYWJsZSBwaW4gZGVmaW5lcyAqLworLyogUHJvZ3JhbW1hYmxlIHBpbiBkZWZpbmVzICovCiAjZGVmaW5lIGNoaXBjSHdfUElOX0dQSU8obikgICAgICAgICAgICAgICAgICAgICAoKCgobikgPj0gMCkgJiYgKChuKSA8IChjaGlwY0h3X0dQSU9fQ09VTlQpKSkgPyAobikgOiAweEZGRkZGRkZGKQogCQkJCQkJCQkJICAgICAvKiBHUElPIHBpbiAwIC0gNjAgKi8KICNkZWZpbmUgY2hpcGNId19QSU5fVUFSVFRYRCAgICAgICAgICAgICAgICAgICAgIChjaGlwY0h3X0dQSU9fQ09VTlQgKyAwKQkvKiBVQVJUIFRyYW5zbWl0ICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9jaGlwY0h3X2lubGluZS5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvY2hpcGNId19pbmxpbmUuaAppbmRleCBjNzg4MzNhLi4wMzIzOGMyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9jaGlwY0h3X2lubGluZS5oCisrKyBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvY3NwL2NoaXBjSHdfaW5saW5lLmgKQEAgLTgzMiw3ICs4MzIsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgotKiAgQGJyaWVmICAgTG93ZXIgbGF5ZXIgZnVudGlvbiB0byBlbmFibGUvZGlzYWJsZSBhIGNsb2NrIG9mIGEgY2VydGFpbiBkZXZpY2UKKyogIEBicmllZiAgIExvd2VyIGxheWVyIGZ1bmN0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGEgY2xvY2sgb2YgYSBjZXJ0YWluIGRldmljZQogKgogKiAgVGhpcyBmdW5jdGlvbiBlbmFibGVzL2Rpc2FibGVzIGEgY29yZSBjbG9jawogKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvaW50Y0h3X3JlZy5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvaW50Y0h3X3JlZy5oCmluZGV4IGUwMWZjNDYuLjBhZWI2YTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvY3NwL2ludGNId19yZWcuaAorKysgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9pbnRjSHdfcmVnLmgKQEAgLTEwOSw5ICsxMDksOSBAQAogI2RlZmluZSBJTlRDSFdfSU5UQzBfRE1BMEMwICAgICAgICAgICAgICAgKDE8PElOVENIV19JTlRDMF9ETUEwQzBfQklUTlVNKQogCiAvKiBJTlRDMSAtIGludGVycnVwdCBjb250cm9sbGVyIDEgKi8KLSNkZWZpbmUgSU5UQ0hXX0lOVEMxX0REUlZQTVBfQklUTlVNICAgICAgIDI3CS8qIEREUiBhbmQgVlBNIFBMTCBjbG9jayBwaGFzZSByZWxhdGlvbnNoaXAgaW50ZXJ1cHQgKE5vdCBmb3IgQTApICovCisjZGVmaW5lIElOVENIV19JTlRDMV9ERFJWUE1QX0JJVE5VTSAgICAgICAyNwkvKiBERFIgYW5kIFZQTSBQTEwgY2xvY2sgcGhhc2UgcmVsYXRpb25zaGlwIGludGVycnVwdCAoTm90IGZvciBBMCkgKi8KICNkZWZpbmUgSU5UQ0hXX0lOVEMxX0REUlZQTVRfQklUTlVNICAgICAgIDI2CS8qIEREUiBhbmQgVlBNIEhXIHBoYXNlIGFsaWduIHRpbWVvdXQgaW50ZXJydXB0IChOb3QgZm9yIEEwKSAqLwotI2RlZmluZSBJTlRDSFdfSU5UQzFfRERSUF9CSVROVU0gICAgICAgICAgMjYJLyogRERSIGFuZCBQTEwgY2xvY2sgcGhhc2UgcmVsYXRpb25zaGlwIGludGVydXB0IChGb3IgQTAgb25seSkpICovCisjZGVmaW5lIElOVENIV19JTlRDMV9ERFJQX0JJVE5VTSAgICAgICAgICAyNgkvKiBERFIgYW5kIFBMTCBjbG9jayBwaGFzZSByZWxhdGlvbnNoaXAgaW50ZXJydXB0IChGb3IgQTAgb25seSkpICovCiAjZGVmaW5lIElOVENIV19JTlRDMV9SVEMyX0JJVE5VTSAgICAgICAgICAyNQkvKiBSZWFsIHRpbWUgY2xvY2sgdGFtcGVyIGludGVycnVwdCAqLwogI2RlZmluZSBJTlRDSFdfSU5UQzFfVkRFQ19CSVROVU0gICAgICAgICAgMjQJLyogSGFudHJvIFZpZGVvIERlY29kZXIgaW50ZXJydXB0ICovCiAvKiBCaXRzIDEzLTIzIGFyZSBub24tc2VjdXJlIHZlcnNpb25zIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNlY3VyZSBiaXRzIGluIFNJTlRDIGJpdHMgMC0xMC4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvcmVnX3VtaS5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9yZWdfdW1pLmgKaW5kZXggMDZhMzU1NC4uMDk5Mjg0MiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9yZWdfdW1pLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9yZWdfdW1pLmgKQEAgLTg4LDcgKzg4LDcgQEAKIC8qIFJFR19VTUlfRkxBU0gwLzEvMl9UQ1IsIFJFR19VTUlfU1JBTTAvMV9UQ1IgYml0cyAqLwogLyogRW5hYmxlIHdhaXQgcGluIGR1cmluZyBidXJzdCB3cml0ZSBvciByZWFkICovCiAjZGVmaW5lIFJFR19VTUlfVENSX1dBSVRFTiAgICAgICAgICAgICAgMHg4MDAwMDAwMAotLyogRW5hYmxlIG1lbSBjdHJsciB0byB3b3JrIGl3dGggZXh0IG1lbSBvZiBsb3dlciBmcmVxIHRoYW4gQUhCIGNsayAqLworLyogRW5hYmxlIG1lbSBjdHJsciB0byB3b3JrIHdpdGggZXh0IG1lbSBvZiBsb3dlciBmcmVxIHRoYW4gQUhCIGNsayAqLwogI2RlZmluZSBSRUdfVU1JX1RDUl9MT1dGUkVRICAgICAgICAgICAgIDB4NDAwMDAwMDAKIC8qIDE9c3luY2ggd3JpdGUsIDA9YXN5bmMgd3JpdGUgKi8KICNkZWZpbmUgUkVHX1VNSV9UQ1JfTUVNVFlQRV9TWU5DV1JJVEUgICAweDIwMDAwMDAwCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvYm9hcmQtbmV1cm9zLW9zZDIuYyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1uZXVyb3Mtb3NkMi5jCmluZGV4IDZjMzg5ZmYuLjNlN2JlMmQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1uZXVyb3Mtb3NkMi5jCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1uZXVyb3Mtb3NkMi5jCkBAIC0xMSw3ICsxMSw3IEBACiAgKiBETTY0NFgtRVZNIGJvYXJkLiBJdCBoYXM6CiAgKiAJRE02NDQ2TTAyIG1vZHVsZSB3aXRoIDI1Nk1CIE5BTkQsIDI1Nk1CIFJBTSwgVExWMzIwQUlDMzIgQUlDLAogICogCVVTQiwgRXRoZXJuZXQsIFNEL01NQywgVUFSVCwgVEhTODIwMCwgVFZQNzAwMCBmb3IgdmlkZW8uCi0gKiAJQWRkaXRpb25hbHkgcmVhbHRpbWUgY2xvY2ssIElSIHJlbW90ZSBjb250cm9sIHJlY2VpdmVyLAorICogCUFkZGl0aW9uYWxseSByZWFsdGltZSBjbG9jaywgSVIgcmVtb3RlIGNvbnRyb2wgcmVjZWl2ZXIsCiAgKiAJSVIgQmxhc3RlciBiYXNlZCBvbiBNU1A0MzAgKGZpcm13YXJlIGFsdGhvdWdoIGlzIGRpZmZlcmVudAogICogCWZyb20gdXNlZCBpbiBETTY0NFgtRVZNKSwgaW50ZXJuYWwgQVRBLTYgMy414oCdIEhERCBkcml2ZQogICogCXdpdGggUEFUQSBpbnRlcmZhY2UsIHR3byBtdXhlZCByZWQtZ3JlZW4gbGVkcy4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9jcHVmcmVxLmMgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvY3B1ZnJlcS5jCmluZGV4IDRhNjhjMmIuLjBhOTViZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9jcHVmcmVxLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2NwdWZyZXEuYwpAQCAtMTY3LDcgKzE2Nyw3IEBACiAJLyoKIAkgKiBUaW1lIG1lYXN1cmVtZW50IGFjcm9zcyB0aGUgdGFyZ2V0KCkgZnVuY3Rpb24geWllbGRzIH4xNTAwLTE4MDB1cwogCSAqIHRpbWUgdGFrZW4gd2l0aCBubyBkcml2ZXJzIG9uIG5vdGlmaWNhdGlvbiBsaXN0LgotCSAqIFNldHRpbmcgdGhlIGxhdGVuY3kgdG8gMjAwMCB1cyB0byBhY2NvbW9kYXRlIGFkZGl0aW9uIG9mIGRyaXZlcnMKKwkgKiBTZXR0aW5nIHRoZSBsYXRlbmN5IHRvIDIwMDAgdXMgdG8gYWNjb21tb2RhdGUgYWRkaXRpb24gb2YgZHJpdmVycwogCSAqIHRvIHByZS9wb3N0IGNoYW5nZSBub3RpZmljYXRpb24gbGlzdC4KIAkgKi8KIAlwb2xpY3ktPmNwdWluZm8udHJhbnNpdGlvbl9sYXRlbmN5ID0gMjAwMCAqIDEwMDA7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvZGE4NTAuYyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kYTg1MC5jCmluZGV4IDY4ZmU0YzIuLmI5NWI5MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kYTg1MC5jCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kYTg1MC5jCkBAIC0xMTIzLDcgKzExMjMsNyBAQAogCSAqIFRoaXMgaGVscHMga2VlcGluZyB0aGUgcGVyaXBoZXJhbHMgb24gdGhpcyBkb21haW4gaW5zdWxhdGVkCiAJICogZnJvbSBDUFUgZnJlcXVlbmN5IGNoYW5nZXMgY2F1c2VkIGJ5IERWRlMuIFRoZSBmaXJtd2FyZSBzZXRzCiAJICogYm90aCBQTEwwIGFuZCBQTEwxIHRvIHRoZSBzYW1lIGZyZXF1ZW5jeSBzbywgdGhlcmUgc2hvdWxkIG5vdAotCSAqIGJlIGFueSBub3RpY2libGUgY2hhbmdlIGV2ZW4gaW4gbm9uLURWRlMgdXNlIGNhc2VzLgorCSAqIGJlIGFueSBub3RpY2VhYmxlIGNoYW5nZSBldmVuIGluIG5vbi1EVkZTIHVzZSBjYXNlcy4KIAkgKi8KIAlkYTg1MF9zZXRfYXN5bmMzX3NyYygxKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RtMzU1LmMgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG0zNTUuYwppbmRleCA3NjM2NGQxMzQuLmY2ODAxMjIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kbTM1NS5jCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kbTM1NS5jCkBAIC0zMTQsNyArMzE0LDcgQEAKIAkubmFtZSA9ICJ0aW1lcjIiLAogCS5wYXJlbnQgPSAmcGxsMV9hdXhfY2xrLAogCS5scHNjID0gREFWSU5DSV9MUFNDX1RJTUVSMiwKLQkudXNlY291bnQgPSAxLCAgICAgICAgICAgICAgLyogUkVWSVNJVDogd2h5IGNhbnQnIHRoaXMgYmUgZGlzYWJsZWQ/ICovCisJLnVzZWNvdW50ID0gMSwgICAgICAgICAgICAgIC8qIFJFVklTSVQ6IHdoeSBjYW4ndCcgdGhpcyBiZSBkaXNhYmxlZD8gKi8KIH07CiAKIHN0YXRpYyBzdHJ1Y3QgY2xrIHRpbWVyM19jbGsgPSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG02NDR4LmMgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG02NDR4LmMKaW5kZXggOWEyMzc2Yi4uNWY4YTY1NCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RtNjQ0eC5jCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kbTY0NHguYwpAQCAtMjc0LDcgKzI3NCw3IEBACiAJLm5hbWUgPSAidGltZXIyIiwKIAkucGFyZW50ID0gJnBsbDFfYXV4X2NsaywKIAkubHBzYyA9IERBVklOQ0lfTFBTQ19USU1FUjIsCi0JLnVzZWNvdW50ID0gMSwgICAgICAgICAgICAgIC8qIFJFVklTSVQ6IHdoeSBjYW50JyB0aGlzIGJlIGRpc2FibGVkPyAqLworCS51c2Vjb3VudCA9IDEsICAgICAgICAgICAgICAvKiBSRVZJU0lUOiB3aHkgY2FuJ3QnIHRoaXMgYmUgZGlzYWJsZWQ/ICovCiB9OwogCiBzdGF0aWMgc3RydWN0IGNsa19sb29rdXAgZG02NDR4X2Nsa3NbXSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9pbmNsdWRlL21hY2gvY3B1dHlwZS5oIGIvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2luY2x1ZGUvbWFjaC9jcHV0eXBlLmgKaW5kZXggY2VhNmI4OS4uOTU3ZmI4NyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2luY2x1ZGUvbWFjaC9jcHV0eXBlLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2luY2x1ZGUvbWFjaC9jcHV0eXBlLmgKQEAgLTQsNyArNCw3IEBACiAgKiBBdXRob3I6IEtldmluIEhpbG1hbiwgRGVlcCBSb290IFN5c3RlbXMsIExMQwogICoKICAqIERlZmluZXMgdGhlIGNwdV9pc18qKCkgbWFjcm9zIGZvciBydW50aW1lIGRldGVjdGlvbiBvZiBEYVZpbmNpCi0gKiBkZXZpY2UgdHlwZS4gIEluIGFkZHRpb24sIGlmIHN1cHBvcnQgZm9yIGEgZ2l2ZW4gZGV2aWNlIGlzIG5vdAorICogZGV2aWNlIHR5cGUuICBJbiBhZGRpdGlvbiwgaWYgc3VwcG9ydCBmb3IgYSBnaXZlbiBkZXZpY2UgaXMgbm90CiAgKiBjb21waWxlZCBpbiB0byB0aGUga2VybmVsLCB0aGUgbWFjcm9zIHJldHVybiAwIHNvIHRoYXQKICAqIHJlc3VsdGluZyBjb2RlIGNhbiBiZSBvcHRpbWl6ZWQgb3V0LgogICoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZXA5M3h4L2dwaW8uYyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L2dwaW8uYwppbmRleCAxODBiOGE5Li5hNWE5ZmY3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9ncGlvLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgvZ3Bpby5jCkBAIC0xMDEsNyArMTAxLDcgQEAKIHN0YXRpYyB2b2lkIGVwOTN4eF9ncGlvX2ZfaXJxX2hhbmRsZXIodW5zaWduZWQgaW50IGlycSwgc3RydWN0IGlycV9kZXNjICpkZXNjKQogewogCS8qCi0JICogbWFwIGRpc2NvbnRpZ3VvdXMgaHcgaXJxIHJhbmdlIHRvIGNvbnRpbm91cyBzdyBpcnEgcmFuZ2U6CisJICogbWFwIGRpc2NvbnRpZ3VvdXMgaHcgaXJxIHJhbmdlIHRvIGNvbnRpbnVvdXMgc3cgaXJxIHJhbmdlOgogCSAqCiAJICogIElSUV9FUDkzWFhfR1BJT3swLi43fU1VWCAtPiBncGlvX3RvX2lycShFUDkzWFhfR1BJT19MSU5FX0YoezAuLjd9KQogCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L2luY2x1ZGUvbWFjaC9ncGlvLmggYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvaW5jbHVkZS9tYWNoL2dwaW8uaAppbmRleCA5Mzk3MjhiLi5iZTkyNjZiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWV4eW5vczQvaW5jbHVkZS9tYWNoL2dwaW8uaAorKysgYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvaW5jbHVkZS9tYWNoL2dwaW8uaApAQCAtMTgsNyArMTgsNyBAQAogI2RlZmluZSBncGlvX2NhbnNsZWVwCV9fZ3Bpb19jYW5zbGVlcAogI2RlZmluZSBncGlvX3RvX2lycQlfX2dwaW9fdG9faXJxCiAKLS8qIFByYWN0aWNhbGx5LCBHUElPIGJhbmtzIHVwdG8gR1BaIGFyZSB0aGUgY29uZmlndXJhYmxlIGdwaW8gYmFua3MgKi8KKy8qIFByYWN0aWNhbGx5LCBHUElPIGJhbmtzIHVwIHRvIEdQWiBhcmUgdGhlIGNvbmZpZ3VyYWJsZSBncGlvIGJhbmtzICovCiAKIC8qIEdQSU8gYmFuayBzaXplcyAqLwogI2RlZmluZSBFWFlOT1M0X0dQSU9fQTBfTlIJKDgpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWV4eW5vczQvbWN0LmMgYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvbWN0LmMKaW5kZXggYWY4MmE4Zi4uMTRhYzEwYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L21jdC5jCisrKyBiL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9tY3QuYwpAQCAtMjc2LDcgKzI3Niw3IEBACiAJLyogdXBkYXRlIGludGVycnVwdCBjb3VudCBidWZmZXIgKi8KIAlleHlub3M0X21jdF93cml0ZSh0bXAsIG1ldnQtPmJhc2UgKyBNQ1RfTF9JQ05UQl9PRkZTRVQpOwogCi0JLyogZW5hYmxlIE1DVCB0aWNrIGludGVydXB0ICovCisJLyogZW5hYmxlIE1DVCB0aWNrIGludGVycnVwdCAqLwogCWV4eW5vczRfbWN0X3dyaXRlKDB4MSwgbWV2dC0+YmFzZSArIE1DVF9MX0lOVF9FTkJfT0ZGU0VUKTsKIAogCXRtcCA9IF9fcmF3X3JlYWRsKG1ldnQtPmJhc2UgKyBNQ1RfTF9UQ09OX09GRlNFVCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWV4eW5vczQvc2V0dXAtc2RoY2ktZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1leHlub3M0L3NldHVwLXNkaGNpLWdwaW8uYwppbmRleCAxYjNkM2EyZC4uZThkMDhiZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L3NldHVwLXNkaGNpLWdwaW8uYworKysgYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvc2V0dXAtc2RoY2ktZ3Bpby5jCkBAIC0zOCwxNCArMzgsMTQgQEAKIAlzd2l0Y2ggKHdpZHRoKSB7CiAJY2FzZSA4OgogCQlmb3IgKGdwaW8gPSBFWFlOT1M0X0dQSzEoMyk7IGdwaW8gPD0gRVhZTk9TNF9HUEsxKDYpOyBncGlvKyspIHsKLQkJCS8qIERhdGEgcGluIEdQSzFbMzo2XSB0byBzcGVjaWFsLWZ1bnRpb24gMyAqLworCQkJLyogRGF0YSBwaW4gR1BLMVszOjZdIHRvIHNwZWNpYWwtZnVuY3Rpb24gMyAqLwogCQkJczNjX2dwaW9fY2ZncGluKGdwaW8sIFMzQ19HUElPX1NGTigzKSk7CiAJCQlzM2NfZ3Bpb19zZXRwdWxsKGdwaW8sIFMzQ19HUElPX1BVTExfVVApOwogCQkJczVwX2dwaW9fc2V0X2RydnN0cihncGlvLCBTNVBfR1BJT19EUlZTVFJfTFY0KTsKIAkJfQogCWNhc2UgNDoKIAkJZm9yIChncGlvID0gRVhZTk9TNF9HUEswKDMpOyBncGlvIDw9IEVYWU5PUzRfR1BLMCg2KTsgZ3BpbysrKSB7Ci0JCQkvKiBEYXRhIHBpbiBHUEswWzM6Nl0gdG8gc3BlY2lhbC1mdW50aW9uIDIgKi8KKwkJCS8qIERhdGEgcGluIEdQSzBbMzo2XSB0byBzcGVjaWFsLWZ1bmN0aW9uIDIgKi8KIAkJCXMzY19ncGlvX2NmZ3BpbihncGlvLCBTM0NfR1BJT19TRk4oMikpOwogCQkJczNjX2dwaW9fc2V0cHVsbChncGlvLCBTM0NfR1BJT19QVUxMX1VQKTsKIAkJCXM1cF9ncGlvX3NldF9kcnZzdHIoZ3BpbywgUzVQX0dQSU9fRFJWU1RSX0xWNCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWV4eW5vczQvc2V0dXAtc2RoY2kuYyBiL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9zZXR1cC1zZGhjaS5jCmluZGV4IDg1Zjk0MzMuLjFlODNmOGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9zZXR1cC1zZGhjaS5jCisrKyBiL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9zZXR1cC1zZGhjaS5jCkBAIC0zNSw3ICszNSw3IEBACiB7CiAJdTMyIGN0cmwyLCBjdHJsMzsKIAotCS8qIGRvbid0IG5lZWQgdG8gYWx0ZXIgYW55dGhpbmcgYWNvcmRpbmcgdG8gY2FyZC10eXBlICovCisJLyogZG9uJ3QgbmVlZCB0byBhbHRlciBhbnl0aGluZyBhY2NvcmRpbmcgdG8gY2FyZC10eXBlICovCiAKIAljdHJsMiA9IHJlYWRsKHIgKyBTM0NfU0RIQ0lfQ09OVFJPTDIpOwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWlvcDEzeHgvcGNpLmMgYi9hcmNoL2FybS9tYWNoLWlvcDEzeHgvcGNpLmMKaW5kZXggNzczZWEwYy4uYmEzZGFlMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3BjaS5jCisrKyBiL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9wY2kuYwpAQCAtMjI1LDcgKzIyNSw3IEBACiAvKiBUaGlzIHJvdXRpbmUgY2hlY2tzIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29uZmlndXJhdGlvbiBjeWNsZS4gIElmIGFuIGVycm9yCiAgKiB3YXMgZGV0ZWN0ZWQgaXQgcmV0dXJucyA+MCwgZWxzZSBpdCByZXR1cm5zIGEgMC4gIFRoZSBlcnJvcnMgYmVpbmcgY2hlY2tlZAogICogYXJlIHBhcml0eSwgbWFzdGVyIGFib3J0LCB0YXJnZXQgYWJvcnQgKG1hc3RlciBhbmQgdGFyZ2V0KS4gIFRoZXNlIHR5cGVzIG9mCi0gKiBlcnJvcnMgb2NjdXJlIGR1cmluZyBhIGNvbmZpZyBjeWNsZSB3aGVyZSB0aGVyZSBpcyBubyBkZXZpY2UsIGxpa2UgZHVyaW5nCisgKiBlcnJvcnMgb2NjdXIgZHVyaW5nIGEgY29uZmlnIGN5Y2xlIHdoZXJlIHRoZXJlIGlzIG5vIGRldmljZSwgbGlrZSBkdXJpbmcKICAqIHRoZSBkaXNjb3Zlcnkgc3RhZ2UuCiAgKi8KIHN0YXRpYyBpbnQgaW9wMTN4eF9hdHV4X3BjaV9zdGF0dXMoaW50IGNsZWFyKQpAQCAtMzMyLDcgKzMzMiw3IEBACiAvKiBUaGlzIHJvdXRpbmUgY2hlY2tzIHRoZSBzdGF0dXMgb2YgdGhlIGxhc3QgY29uZmlndXJhdGlvbiBjeWNsZS4gIElmIGFuIGVycm9yCiAgKiB3YXMgZGV0ZWN0ZWQgaXQgcmV0dXJucyA+MCwgZWxzZSBpdCByZXR1cm5zIGEgMC4gIFRoZSBlcnJvcnMgYmVpbmcgY2hlY2tlZAogICogYXJlIHBhcml0eSwgbWFzdGVyIGFib3J0LCB0YXJnZXQgYWJvcnQgKG1hc3RlciBhbmQgdGFyZ2V0KS4gIFRoZXNlIHR5cGVzIG9mCi0gKiBlcnJvcnMgb2NjdXJlIGR1cmluZyBhIGNvbmZpZyBjeWNsZSB3aGVyZSB0aGVyZSBpcyBubyBkZXZpY2UsIGxpa2UgZHVyaW5nCisgKiBlcnJvcnMgb2NjdXIgZHVyaW5nIGEgY29uZmlnIGN5Y2xlIHdoZXJlIHRoZXJlIGlzIG5vIGRldmljZSwgbGlrZSBkdXJpbmcKICAqIHRoZSBkaXNjb3Zlcnkgc3RhZ2UuCiAgKi8KIHN0YXRpYyBpbnQgaW9wMTN4eF9hdHVlX3BjaV9zdGF0dXMoaW50IGNsZWFyKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1raXJrd29vZC90c3gxeC1jb21tb24uYyBiL2FyY2gvYXJtL21hY2gta2lya3dvb2QvdHN4MXgtY29tbW9uLmMKaW5kZXggZjc4MTE2NC4uMjQyOTRiMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1raXJrd29vZC90c3gxeC1jb21tb24uYworKysgYi9hcmNoL2FybS9tYWNoLWtpcmt3b29kL3RzeDF4LWNvbW1vbi5jCkBAIC0xNSw3ICsxNSw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAxNiBNaUIgTk9SIGZsYXNoLiBUaGUgc3RydWN0IG10ZF9wYXJ0aXRpb24gaXMgbm90IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQotICogICAgIHBhcnRpdGlvbnMgb24gdGhlIGRldmljZSBiZWNhdXNlIHdlIHdhbnQgdG8ga2VlcCBjb21wYXRhYmlsaXR5IHdpdGgKKyAqICAgICBwYXJ0aXRpb25zIG9uIHRoZSBkZXZpY2UgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoCiAgKiAgICAgdGhlIFFOQVAgZmlybXdhcmUuCiAgKiBMYXlvdXQgYXMgdXNlZCBieSBRTkFQOgogICogIDB4MDAwMDAwMDAtMHgwMDA4MDAwMCA6ICJVLUJvb3QiCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWxwYzMyeHgvcG0uYyBiL2FyY2gvYXJtL21hY2gtbHBjMzJ4eC9wbS5jCmluZGV4IGU3NmQ0MWIuLmI5YzgwNTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtbHBjMzJ4eC9wbS5jCisrKyBiL2FyY2gvYXJtL21hY2gtbHBjMzJ4eC9wbS5jCkBAIC00MSw3ICs0MSw3IEBACiAgKiBEUkFNIGNsb2NraW5nIGFuZCByZWZyZXNoIGFyZSBzbGlnaHRseSBkaWZmZXJlbnQgZm9yIHN5c3RlbXMgd2l0aCBERFIKICAqIERSQU0gb3IgcmVndWxhciBTRFJBTSBkZXZpY2VzLiBJZiBTRFJBTSBpcyB1c2VkIGluIHRoZSBzeXN0ZW0sIHRoZQogICogU0RSQU0gd2lsbCBzdGlsbCBiZSBhY2Nlc3NpYmxlIGluIGRpcmVjdC1ydW4gbW9kZS4gSW4gRERSIGJhc2VkIHN5c3RlbXMsCi0gKiBhIHRyYW5zaXN0aW9uIHRvIGRpcmVjdC1ydW4gbW9kZSB3aWxsIHN0b3AgYWxsIEREUiBhY2Nlc3NlcyAobm8gY2xvY2tzKS4KKyAqIGEgdHJhbnNpdGlvbiB0byBkaXJlY3QtcnVuIG1vZGUgd2lsbCBzdG9wIGFsbCBERFIgYWNjZXNzZXMgKG5vIGNsb2NrcykuCiAgKiBCZWNhdXNlIG9mIHRoaXMsIHRoZSBjb2RlIHRvIHN3aXRjaCBwb3dlciBtb2RlcyBhbmQgdGhlIGNvZGUgdG8gZW50ZXIKICAqIGFuZCBleGl0IERSQU0gc2VsZi1yZWZyZXNoIG1vZGVzIG11c3Qgbm90IGJlIGV4ZWN1dGVkIGluIERSQU0uIEEgc21hbGwKICAqIHNlY3Rpb24gb2YgSVJBTSBpcyB1c2VkIGluc3RlYWQgZm9yIHRoaXMuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW1tcC90aW1lLmMgYi9hcmNoL2FybS9tYWNoLW1tcC90aW1lLmMKaW5kZXggYWViOWFlMi4uOTk4MzNiOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1tbXAvdGltZS5jCisrKyBiL2FyY2gvYXJtL21hY2gtbW1wL3RpbWUuYwpAQCAtOSw3ICs5LDcgQEAKICAqICAgMjAwOC0wNC0xMTogSmFzb24gQ2hhZ2FzIDxKYXNvbi5jaGFnYXNAbWFydmVsbC5jb20+CiAgKiAgIDIwMDgtMTAtMDg6IEJpbiBZYW5nIDxiaW4ueWFuZ0BtYXJ2ZWxsLmNvbT4KICAqCi0gKiBUaGUgdGltZXJzIG1vZHVsZSBhY3R1YWxseSBpbmNsdWRlcyB0aHJlZSB0aW1lcnMsIGVhY2ggdGltZXIgd2l0aCB1cHRvCisgKiBUaGUgdGltZXJzIG1vZHVsZSBhY3R1YWxseSBpbmNsdWRlcyB0aHJlZSB0aW1lcnMsIGVhY2ggdGltZXIgd2l0aCB1cCB0bwogICogdGhyZWUgbWF0Y2ggY29tcGFyYXRvcnMuIFRpbWVyICMwIGlzIHVzZWQgaGVyZSBpbiBmcmVlLXJ1bm5pbmcgbW9kZSBhcwogICogdGhlIGNsb2NrIHNvdXJjZSwgYW5kIG1hdGNoIGNvbXBhcmF0b3IgIzEgdXNlZCBhcyBjbG9jayBldmVudCBkZXZpY2UuCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tc20vYWNwdWNsb2NrLWFybTExLmMgYi9hcmNoL2FybS9tYWNoLW1zbS9hY3B1Y2xvY2stYXJtMTEuYwppbmRleCA3ZmZiZDk4Li44MDVkNGVlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW1zbS9hY3B1Y2xvY2stYXJtMTEuYworKysgYi9hcmNoL2FybS9tYWNoLW1zbS9hY3B1Y2xvY2stYXJtMTEuYwpAQCAtMzQzLDcgKzM0Myw3IEBACiAJCX0KIAl9CiAKLQkvKiBTZXQgd2FpdCBzdGF0ZXMgZm9yIENQVSBpbmJldHdlZW4gZnJlcXVlbmN5IGNoYW5nZXMgKi8KKwkvKiBTZXQgd2FpdCBzdGF0ZXMgZm9yIENQVSBiZXR3ZWVuIGZyZXF1ZW5jeSBjaGFuZ2VzICovCiAJcmVnX2Nsa2N0bCA9IHJlYWRsKEExMVNfQ0xLX0NOVExfQUREUik7CiAJcmVnX2Nsa2N0bCB8PSAoMTAwIDw8IDE2KTsgLyogc2V0IFdUX1NUX0NOVCAqLwogCXdyaXRlbChyZWdfY2xrY3RsLCBBMTFTX0NMS19DTlRMX0FERFIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tc20vc2NtLmMgYi9hcmNoL2FybS9tYWNoLW1zbS9zY20uYwppbmRleCBjZmE4MDhkLi4yMzJmOTdhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW1zbS9zY20uYworKysgYi9hcmNoL2FybS9tYWNoLW1zbS9zY20uYwpAQCAtNDYsNyArNDYsNyBAQAogICogQGlkOiBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkCiAgKiBAYnVmOiBidWZmZXIgcmV0dXJuZWQgZnJvbSBzY21fZ2V0X2NvbW1hbmRfYnVmZmVyKCkKICAqCi0gKiBBbiBTQ00gY29tbWFuZCBpcyBsYXllZCBvdXQgaW4gbWVtb3J5IGFzIGZvbGxvd3M6CisgKiBBbiBTQ00gY29tbWFuZCBpcyBsYWlkIG91dCBpbiBtZW1vcnkgYXMgZm9sbG93czoKICAqCiAgKgktLS0tLS0tLS0tLS0tLS0tLS0tIDwtLS0gc3RydWN0IHNjbV9jb21tYW5kCiAgKgl8IGNvbW1hbmQgaGVhZGVyICB8CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2Ftcy1kZWx0YS1maXEtaGFuZGxlci5TIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9hbXMtZGVsdGEtZmlxLWhhbmRsZXIuUwppbmRleCA5MjdkNWExLi5jMWM1ZmI2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2Ftcy1kZWx0YS1maXEtaGFuZGxlci5TCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYW1zLWRlbHRhLWZpcS1oYW5kbGVyLlMKQEAgLTc5LDcgKzc5LDcgQEAKIAogCiAvKgotICogUmVnaXN0ZXIgdXNlYWdlCisgKiBSZWdpc3RlciB1c2FnZQogICogcjggIC0gdGVtcG9yYXJ5CiAgKiByOSAgLSB0aGUgZHJpdmVyIGJ1ZmZlcgogICogcjEwIC0gdGVtcG9yYXJ5CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLXN4MS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1zeDEuYwppbmRleCBkNDFmZTJkLi4wYWQ3ODFkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLXN4MS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtc3gxLmMKQEAgLTM5OSw3ICszOTksNyBAQAogCXN4MV9tbWNfaW5pdCgpOwogCiAJLyogdHVybiBvbiBVU0IgcG93ZXIgKi8KLQkvKiBzeDFfc2V0dXNicG93ZXIoMSk7IGNhbnQgZG8gaXQgaGVyZSBiZWNhdXNlIGkyYyBpcyBub3QgcmVhZHkgKi8KKwkvKiBzeDFfc2V0dXNicG93ZXIoMSk7IGNhbid0IGRvIGl0IGhlcmUgYmVjYXVzZSBpMmMgaXMgbm90IHJlYWR5ICovCiAJZ3Bpb19yZXF1ZXN0KDEsICJBX0lSREFfT0ZGIik7CiAJZ3Bpb19yZXF1ZXN0KDExLCAiQV9TV0lUQ0giKTsKIAlncGlvX3JlcXVlc3QoMTUsICJBX1VTQl9PTiIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9kZXZpY2VzLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2RldmljZXMuYwppbmRleCBiMGY0YzIzLi4zNmYyNmMzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2RldmljZXMuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2RldmljZXMuYwpAQCAtMjgxLDcgKzI4MSw3IEBACiAgKiBDbGFpbWluZyBHUElPcywgYW5kIHNldHRpbmcgdGhlaXIgZGlyZWN0aW9uIGFuZCBpbml0aWFsIHZhbHVlcywgaXMgdGhlCiAgKiByZXNwb25zaWJpbGl0eSBvZiB0aGUgZGV2aWNlIGRyaXZlcnMuICBTbyBpcyByZXNwb25kaW5nIHRvIHByb2JlKCkuCiAgKgotICogQm9hcmQtc3BlY2lmaWMga25vd2xlZ2UgbGlrZSBjcmVhdGluZyBkZXZpY2VzIG9yIHBpbiBzZXR1cCBpcyB0byBiZQorICogQm9hcmQtc3BlY2lmaWMga25vd2xlZGdlIGxpa2UgY3JlYXRpbmcgZGV2aWNlcyBvciBwaW4gc2V0dXAgaXMgdG8gYmUKICAqIGtlcHQgb3V0IG9mIGRyaXZlcnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEluIHBhcnRpY3VsYXIsIHBpbiBzZXR1cAogICogbWF5IGJlIGhhbmRsZWQgYnkgdGhlIGJvb3QgbG9hZGVyLCBhbmQgZHJpdmVycyBzaG91bGQgZXhwZWN0IGl0IHdpbGwKICAqIG5vcm1hbGx5IGhhdmUgYmVlbiBkb25lIGJ5IHRoZSB0aW1lIHRoZXkncmUgcHJvYmVkLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9pbmNsdWRlL21hY2gvYW1zLWRlbHRhLWZpcS5oIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9pbmNsdWRlL21hY2gvYW1zLWRlbHRhLWZpcS5oCmluZGV4IDdhMmRmMjkuLjIzZWVkMDAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDEvaW5jbHVkZS9tYWNoL2Ftcy1kZWx0YS1maXEuaAorKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2luY2x1ZGUvbWFjaC9hbXMtZGVsdGEtZmlxLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNlbmRpZgogCiAvKgotICogVGhlc2UgYXJlIHRoZSBvZmZzZXRzIGZyb20gdGhlIGJlZ2luaW5nIG9mIHRoZSBmaXFfYnVmZmVyLiBUaGV5IGFyZSBwdXQgaGVyZQorICogVGhlc2UgYXJlIHRoZSBvZmZzZXRzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlxX2J1ZmZlci4gVGhleSBhcmUgcHV0IGhlcmUKICAqIHNpbmNlIHRoZSBidWZmZXIgYW5kIGhlYWRlciBuZWVkIHRvIGJlIGFjY2Vzc2VkIGJ5IGRyaXZlcnMgc2VydmljaW5nIGRldmljZXMKICAqIHdoaWNoIGdlbmVyYXRlIEdQSU8gaW50ZXJydXB0cyAtIGUuZy4ga2V5Ym9hcmQsIG1vZGVtLCBob29rIHN3aXRjaC4KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1pZ2VwMDAyMC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1pZ2VwMDAyMC5jCmluZGV4IDVmOGEyZmQuLjM0Y2Y5ODIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtaWdlcDAwMjAuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLWlnZXAwMDIwLmMKQEAgLTY5Niw3ICs2OTYsNyBAQAogCWlnZXAyX2luaXRfc21zYzkxMXgoKTsKIAogCS8qCi0JICogV0xBTi1CVCBjb21ibyBtb2R1bGUgZnJvbSBNdVJhdGEgd2ljaCBoYXMgYSBNYXJ2ZWxsIFdMQU4KKwkgKiBXTEFOLUJUIGNvbWJvIG1vZHVsZSBmcm9tIE11UmF0YSB3aGljaCBoYXMgYSBNYXJ2ZWxsIFdMQU4KIAkgKiAoODhXODY4NikgKyBDU1IgQmx1ZXRvb3RoIGNoaXBzZXQuIFVzZXMgU0RJTyBpbnRlcmZhY2UuCiAJICovCiAJaWdlcDJfd2xhbl9idF9pbml0KCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLWlnZXAwMDMwLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLWlnZXAwMDMwLmMKaW5kZXggYjEwZGIwZS4uMmNmODZjMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1pZ2VwMDAzMC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtaWdlcDAwMzAuYwpAQCAtNDQwLDcgKzQ0MCw3IEBACiAJaWdlcDNfbGVkc19pbml0KCk7CiAKIAkvKgotCSAqIFdMQU4tQlQgY29tYm8gbW9kdWxlIGZyb20gTXVSYXRhIHdpY2ggaGFzIGEgTWFydmVsbCBXTEFOCisJICogV0xBTi1CVCBjb21ibyBtb2R1bGUgZnJvbSBNdVJhdGEgd2hpY2ggaGFzIGEgTWFydmVsbCBXTEFOCiAJICogKDg4Vzg2ODYpICsgQ1NSIEJsdWV0b290aCBjaGlwc2V0LiBVc2VzIFNESU8gaW50ZXJmYWNlLgogCSAqLwogCWlnZXAzX3dpZmlfYnRfaW5pdCgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9ja2RvbWFpbi5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9ja2RvbWFpbi5jCmluZGV4IGFiODc4NTQuLjZjYjZjMDMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2tkb21haW4uYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrZG9tYWluLmMKQEAgLTI1OCw3ICsyNTgsNyBAQAogICogY2xrZG1faW5pdCAtIHNldCB1cCB0aGUgY2xvY2tkb21haW4gbGF5ZXIKICAqIEBjbGtkbXM6IG9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgY2xvY2tkb21haW5zIHRvIHJlZ2lzdGVyCiAgKiBAaW5pdF9hdXRvZGVwczogb3B0aW9uYWwgcG9pbnRlciB0byBhbiBhcnJheSBvZiBhdXRvZGVwcyB0byByZWdpc3RlcgotICogQGN1c3RvbV9mdW5jczogZnVuYyBwb2ludGVycyBmb3IgYXJjaCBzcGVjZmljIGltcGxlbWVudGF0aW9ucworICogQGN1c3RvbV9mdW5jczogZnVuYyBwb2ludGVycyBmb3IgYXJjaCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMKICAqCiAgKiBTZXQgdXAgaW50ZXJuYWwgc3RhdGUuICBJZiBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgY2xvY2tkb21haW5zCiAgKiBAY2xrZG1zIHdhcyBzdXBwbGllZCwgbG9vcCB0aHJvdWdoIHRoZSBsaXN0IG9mIGNsb2NrZG9tYWlucywKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2tkb21haW4uaCBiL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2tkb21haW4uaAppbmRleCA4NWIzZGNlLi41ODIzNTg0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrZG9tYWluLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9ja2RvbWFpbi5oCkBAIC0xMjUsNyArMTI1LDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IGNsa2RtX29wcyAtIEFyY2ggc3BlY2ZpYyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMKKyAqIHN0cnVjdCBjbGtkbV9vcHMgLSBBcmNoIHNwZWNpZmljIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucwogICogQGNsa2RtX2FkZF93a2RlcDogQWRkIGEgd2FrZXVwIGRlcGVuZGVuY3kgYmV0d2VlbiBjbGsgZG9tYWlucwogICogQGNsa2RtX2RlbF93a2RlcDogRGVsZXRlIGEgd2FrZXVwIGRlcGVuZGVuY3kgYmV0d2VlbiBjbGsgZG9tYWlucwogICogQGNsa2RtX3JlYWRfd2tkZXA6IFJlYWQgd2FrZXVwIGRlcGVuZGVuY3kgc3RhdGUgYmV0d2VlbiBjbGsgZG9tYWlucwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jcHVpZGxlMzR4eC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jcHVpZGxlMzR4eC5jCmluZGV4IGE0NGM1MjMuLjFjMjQwZWYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvY3B1aWRsZTM0eHguYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2NwdWlkbGUzNHh4LmMKQEAgLTI5Nyw4ICsyOTcsOCBAQAogCiAvKioKICAqIG9tYXAzX2NwdWlkbGVfdXBkYXRlX3N0YXRlcygpIC0gVXBkYXRlIHRoZSBjcHVpZGxlIHN0YXRlcwotICogQG1wdV9kZWVwZXN0X3N0YXRlOglFbmFibGUgc3RhdGVzIHVwdG8gYW5kIGluY2x1ZGluZyB0aGlzIGZvciBtcHUgZG9tYWluCi0gKiBAY29yZV9kZWVwZXN0X3N0YXRlOglFbmFibGUgc3RhdGVzIHVwdG8gYW5kIGluY2x1ZGluZyB0aGlzIGZvciBjb3JlIGRvbWFpbgorICogQG1wdV9kZWVwZXN0X3N0YXRlOglFbmFibGUgc3RhdGVzIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhpcyBmb3IgbXB1IGRvbWFpbgorICogQGNvcmVfZGVlcGVzdF9zdGF0ZToJRW5hYmxlIHN0YXRlcyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoaXMgZm9yIGNvcmUgZG9tYWluCiAgKgogICogVGhpcyBnb2VzIHRocm91Z2ggdGhlIGxpc3Qgb2Ygc3RhdGVzIGF2YWlsYWJsZSBhbmQgZW5hYmxlcyBhbmQgZGlzYWJsZXMgdGhlCiAgKiB2YWxpZGl0eSBvZiBDIHN0YXRlcyBiYXNlZCBvbiBkZWVwZXN0IHN0YXRlIHRoYXQgY2FuIGJlIGFjaGlldmVkIGZvciB0aGUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9kZXZpY2VzLmMKaW5kZXggODRkMWI3My4uN2I4NTU4NSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9kZXZpY2VzLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9kZXZpY2VzLmMKQEAgLTI1Myw3ICsyNTMsNyBAQAogCQkJQVJSQVlfU0laRShvbWFwX2tleWJvYXJkX2xhdGVuY3kpLCAwKTsKIAogCWlmIChJU19FUlIob2QpKSB7Ci0JCVdBUk4oMSwgIkNhbnQgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwKKwkJV0FSTigxLCAiQ2FuJ3QgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwKIAkJCQkJCW5hbWUsIG9oLT5uYW1lKTsKIAkJcmV0dXJuIFBUUl9FUlIob2QpOwogCX0KQEAgLTM3Myw3ICszNzMsNyBAQAogCW9kID0gb21hcF9kZXZpY2VfYnVpbGQobmFtZSwgc3BpX251bSwgb2gsIHBkYXRhLAogCQkJCXNpemVvZigqcGRhdGEpLAlvbWFwX21jc3BpX2xhdGVuY3ksCiAJCQkJQVJSQVlfU0laRShvbWFwX21jc3BpX2xhdGVuY3kpLCAwKTsKLQlXQVJOKElTX0VSUihvZCksICJDYW50IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolc1xuIiwKKwlXQVJOKElTX0VSUihvZCksICJDYW4ndCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXNcbiIsCiAJCQkJbmFtZSwgb2gtPm5hbWUpOwogCWtmcmVlKHBkYXRhKTsKIAlyZXR1cm4gMDsKQEAgLTcyNSw3ICs3MjUsNyBAQAogCW9kID0gb21hcF9kZXZpY2VfYnVpbGQoZGV2X25hbWUsIGlkLCBvaCwgTlVMTCwgMCwKIAkJCQlvbWFwX3dkdF9sYXRlbmN5LAogCQkJCUFSUkFZX1NJWkUob21hcF93ZHRfbGF0ZW5jeSksIDApOwotCVdBUk4oSVNfRVJSKG9kKSwgIkNhbnQgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwKKwlXQVJOKElTX0VSUihvZCksICJDYW4ndCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXMuXG4iLAogCQkJCWRldl9uYW1lLCBvaC0+bmFtZSk7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2RtYS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9kbWEuYwppbmRleCAzNDkyMmIyLi5jOWZmMGU3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2RtYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZG1hLmMKQEAgLTI2Miw3ICsyNjIsNyBAQAogCQkJb21hcDJfZG1hX2xhdGVuY3ksIEFSUkFZX1NJWkUob21hcDJfZG1hX2xhdGVuY3kpLCAwKTsKIAlrZnJlZShwKTsKIAlpZiAoSVNfRVJSKG9kKSkgewotCQlwcl9lcnIoIiVzOiBDYW50IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCisJCXByX2VycigiJXM6IENhbid0IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCiAJCQlfX2Z1bmNfXywgbmFtZSwgb2gtPm5hbWUpOwogCQlyZXR1cm4gUFRSX0VSUihvZCk7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ncGlvLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2dwaW8uYwppbmRleCA0MTNkZTE4Li45NTI5ODQyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2dwaW8uYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2dwaW8uYwpAQCAtODIsNyArODIsNyBAQAogCWtmcmVlKHBkYXRhKTsKIAogCWlmIChJU19FUlIob2QpKSB7Ci0JCVdBUk4oMSwgIkNhbnQgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwKKwkJV0FSTigxLCAiQ2FuJ3QgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwKIAkJCQkJbmFtZSwgb2gtPm5hbWUpOwogCQlyZXR1cm4gUFRSX0VSUihvZCk7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9oc21tYy5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9oc21tYy5jCmluZGV4IDEzN2UxYTUuLmIyZjMwYmUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvaHNtbWMuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2hzbW1jLmMKQEAgLTQ2NSw3ICs0NjUsNyBAQAogCW9kID0gb21hcF9kZXZpY2VfYnVpbGQobmFtZSwgY3RybF9uciAtIDEsIG9oLCBtbWNfZGF0YSwKIAkJc2l6ZW9mKHN0cnVjdCBvbWFwX21tY19wbGF0Zm9ybV9kYXRhKSwgb2hsLCBvaGxfY250LCBmYWxzZSk7CiAJaWYgKElTX0VSUihvZCkpIHsKLQkJV0FSTigxLCAiQ2FudCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXMuXG4iLCBuYW1lLCBvaC0+bmFtZSk7CisJCVdBUk4oMSwgIkNhbid0IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsIG5hbWUsIG9oLT5uYW1lKTsKIAkJa2ZyZWUobW1jX2RhdGEtPnNsb3RzWzBdLm5hbWUpOwogCQlnb3RvIGRvbmU7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9tY2JzcC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9tY2JzcC5jCmluZGV4IDU2NWI5MDYuLjRhNmVmNmEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvbWNic3AuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL21jYnNwLmMKQEAgLTE0OSw3ICsxNDksNyBAQAogCQkJCUFSUkFZX1NJWkUob21hcDJfbWNic3BfbGF0ZW5jeSksIGZhbHNlKTsKIAlrZnJlZShwZGF0YSk7CiAJaWYgKElTX0VSUihvZCkpICB7Ci0JCXByX2VycigiJXM6IENhbnQgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwgX19mdW5jX18sCisJCXByX2VycigiJXM6IENhbid0IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsIF9fZnVuY19fLAogCQkJCQluYW1lLCBvaC0+bmFtZSk7CiAJCXJldHVybiBQVFJfRVJSKG9kKTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL211eC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXguYwppbmRleCBiYjA0M2NiLi5hNGFiMWUzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL211eC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4LmMKQEAgLTUxOCw3ICs1MTgsNyBAQAogCQkJc2VxX3ByaW50ZihzLCAiLyogJXMgKi9cbiIsIG0tPm11eG5hbWVzW21vZGVdKTsKIAogCQkvKgotCQkgKiBYWFg6IE1pZ2h0IGJlIHJldmlzaXRlZCB0byBzdXBwb3J0IGRpZmZlcmVuY2VzIGFjY3Jvc3MKKwkJICogWFhYOiBNaWdodCBiZSByZXZpc2l0ZWQgdG8gc3VwcG9ydCBkaWZmZXJlbmNlcyBhY3Jvc3MKIAkJICogc2FtZSBPTUFQIGdlbmVyYXRpb24uCiAJCSAqLwogCQlzZXFfcHJpbnRmKHMsICJPTUFQJWRfTVVYKCVzLCAiLCBvbWFwX2dlbiwgbTBfZGVmKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4MjQzMC5oIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXgyNDMwLmgKaW5kZXggYWRiZWEwZC4uOWZkOTMxNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXgyNDMwLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXgyNDMwLmgKQEAgLTIyLDcgKzIyLDcgQEAKICAqIGFic29sdXRlIGFkZHJlc3Nlcy4gIFRoZSBuYW1lIGluIHRoZSBtYWNybyBpcyB0aGUgbW9kZS0wIG5hbWUgb2YKICAqIHRoZSBwaW4uICBOT1RFOiBUaGVzZSByZWdpc3RlcnMgYXJlIDgtYml0cyB3aWRlLgogICoKLSAqIE5vdGUgdGhhdCB0aGVzZSBkZWZpbmVzIHVzZSBTRE1NQyBpbnN0ZWFkIG9mIE1NQyBmb3IgY29tcGFiaWxpdHkKKyAqIE5vdGUgdGhhdCB0aGVzZSBkZWZpbmVzIHVzZSBTRE1NQyBpbnN0ZWFkIG9mIE1NQyBmb3IgY29tcGF0aWJpbGl0eQogICogd2l0aCBzaWduYWwgbmFtZXMgdXNlZCBpbiAzNjMwLgogICovCiAjZGVmaW5lIE9NQVAyNDMwX0NPTlRST0xfUEFEQ09ORl9HUE1DX0NMS19PRkZTRVQJCTB4MDAwCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2RfMjQzMF9kYXRhLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2RfMjQzMF9kYXRhLmMKaW5kZXggYTg2MGZiNS4uZTZlMzgxMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kXzI0MzBfZGF0YS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZF8yNDMwX2RhdGEuYwpAQCAtMTU1OSw3ICsxNTU5LDcgQEAKIAkJCSAqIEkyQ0hTIElQJ3MgZG8gbm90IGZvbGxvdyB0aGUgdXN1YWwgcGF0dGVybi4KIAkJCSAqIHByY21fcmVnX2lkIGFsb25lIGNhbm5vdCBiZSB1c2VkIHRvIHByb2dyYW0KIAkJCSAqIHRoZSBpY2xrIGFuZCBmY2xrLiBOZWVkcyB0byBiZSBoYW5kbGVkIHVzaW5nCi0JCQkgKiBhZGRpdG9uYWwgZmxhZ3Mgd2hlbiBjbGsgaGFuZGxpbmcgaXMgbW92ZWQKKwkJCSAqIGFkZGl0aW9uYWwgZmxhZ3Mgd2hlbiBjbGsgaGFuZGxpbmcgaXMgbW92ZWQKIAkJCSAqIHRvIGh3bW9kIGZyYW1ld29yay4KIAkJCSAqLwogCQkJLm1vZHVsZV9vZmZzID0gQ09SRV9NT0QsCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfcGh5X2ludGVybmFsLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfcGh5X2ludGVybmFsLmMKaW5kZXggZTJlNjA1Zi4uMDVmNmFiYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX3BoeV9pbnRlcm5hbC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9waHlfaW50ZXJuYWwuYwpAQCAtMTEyLDEyICsxMTIsMTIgQEAKIAkJZWxzZQogCQkJLyoKIAkJCSAqIEVuYWJsZSBWQlVTIFZhbGlkLCBBVmFsaWQgYW5kIElERElHCi0JCQkgKiBoaWdoIGltcGVkZW5jZQorCQkJICogaGlnaCBpbXBlZGFuY2UKIAkJCSAqLwogCQkJX19yYXdfd3JpdGVsKElERElHIHwgQVZBTElEIHwgVkJVU1ZBTElELAogCQkJCQkJY3RybF9iYXNlICsgVVNCT1RHSFNfQ09OVFJPTCk7CiAJfSBlbHNlIHsKLQkJLyogRW5hYmxlIHNlc3Npb24gRU5EIGFuZCBJRElHIHRvIGhpZ2ggaW1wZWRlbmNlLiAqLworCQkvKiBFbmFibGUgc2Vzc2lvbiBFTkQgYW5kIElESUcgdG8gaGlnaCBpbXBlZGFuY2UuICovCiAJCV9fcmF3X3dyaXRlbChTRVNTRU5EIHwgSURESUcsIGN0cmxfYmFzZSArCiAJCQkJCVVTQk9UR0hTX0NPTlRST0wpOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF90d2wuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF90d2wuYwppbmRleCAwYThlNzRlLi4wN2Q2MTQwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfdHdsLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX3R3bC5jCkBAIC0zMDgsNyArMzA4LDcgQEAKICAqIFN0cmF0ZWd5IFNvZnR3YXJlIFNjYWxpbmcgTW9kZSAoRU5BQkxFX1ZNT0RFPTApLCBmb3Igc2V0dGluZyB0aGUgdm9sdGFnZXMsCiAgKiBpbiB0aG9zZSBzY2VuYXJpb3MgdGhpcyBiaXQgaXMgdG8gYmUgY2xlYXJlZCAoZW5hYmxlID0gZmFsc2UpLgogICoKLSAqIFJldHVybnMgMCBvbiBzdWNlc3MsIGVycm9yIGlzIHJldHVybmVkIGlmIEkyQyByZWFkL3dyaXRlIGZhaWxzLgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIGlzIHJldHVybmVkIGlmIEkyQyByZWFkL3dyaXRlIGZhaWxzLgogICovCiBpbnQgX19pbml0IG9tYXAzX3R3bF9zZXRfc3JfYml0KGJvb2wgZW5hYmxlKQogewpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbi5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbi5jCmluZGV4IDQ5YzY1MTMuLjlhZjA4NDcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW4uYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluLmMKQEAgLTE5Niw3ICsxOTYsNyBAQAogLyoqCiAgKiBwd3JkbV9pbml0IC0gc2V0IHVwIHRoZSBwb3dlcmRvbWFpbiBsYXllcgogICogQHB3cmRtX2xpc3Q6IGFycmF5IG9mIHN0cnVjdCBwb3dlcmRvbWFpbiBwb2ludGVycyB0byByZWdpc3RlcgotICogQGN1c3RvbV9mdW5jczogZnVuYyBwb2ludGVycyBmb3IgYXJjaCBzcGVjZmljIGltcGxlbWVudGF0aW9ucworICogQGN1c3RvbV9mdW5jczogZnVuYyBwb2ludGVycyBmb3IgYXJjaCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMKICAqCiAgKiBMb29wIHRocm91Z2ggdGhlIGFycmF5IG9mIHBvd2VyZG9tYWlucyBAcHdyZG1fbGlzdCwgcmVnaXN0ZXJpbmcgYWxsCiAgKiB0aGF0IGFyZSBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQgQ1BVLiBJZiBwd3JkbV9saXN0IGlzIHN1cHBsaWVkCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluLmggYi9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluLmgKaW5kZXggMDI3ZjQwYi4uZDIzZDk3OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbi5oCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW4uaApAQCAtMTIxLDcgKzEyMSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwd3JkbV9vcHMgLSBBcmNoIHNwZWNmaWMgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zCisgKiBzdHJ1Y3QgcHdyZG1fb3BzIC0gQXJjaCBzcGVjaWZpYyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMKICAqIEBwd3JkbV9zZXRfbmV4dF9wd3JzdDogU2V0IHRoZSB0YXJnZXQgcG93ZXIgc3RhdGUgZm9yIGEgcGQKICAqIEBwd3JkbV9yZWFkX25leHRfcHdyc3Q6IFJlYWQgdGhlIHRhcmdldCBwb3dlciBzdGF0ZSBzZXQgZm9yIGEgcGQKICAqIEBwd3JkbV9yZWFkX3B3cnN0OiBSZWFkIHRoZSBjdXJyZW50IHBvd2VyIHN0YXRlIG9mIGEgcGQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW5zM3h4eF9kYXRhLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluczN4eHhfZGF0YS5jCmluZGV4IDljOWMxMTMuLjQ2OWE5MjAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW5zM3h4eF9kYXRhLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbnMzeHh4X2RhdGEuYwpAQCAtNzIsNyArNzIsNyBAQAogCiAvKgogICogVGhlIFVTQlRMTCBTYXZlLWFuZC1SZXN0b3JlIG1lY2hhbmlzbSBpcyBicm9rZW4gb24KLSAqIDM0MzBzIHVwdG8gRVMzLjAgYW5kIDM2MzBFUzEuMC4gSGVuY2UgdGhpcyBmZWF0dXJlCisgKiAzNDMwcyB1cCB0byBFUzMuMCBhbmQgMzYzMEVTMS4wLiBIZW5jZSB0aGlzIGZlYXR1cmUKICAqIG5lZWRzIHRvIGJlIGRpc2FibGVkIG9uIHRoZXNlIGNoaXBzLgogICogUmVmZXI6IDM0MzAgZXJyYXRhIElEIGk0NTkgYW5kIDM2MzAgZXJyYXRhIElEIGk1NzkKICAqCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL3NtYXJ0cmVmbGV4LmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3NtYXJ0cmVmbGV4LmMKaW5kZXggOGY2NzRjOS4uMTNlMjRmOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9zbWFydHJlZmxleC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvc21hcnRyZWZsZXguYwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAgKiBkcml2ZXIgcmVnaXN0ZXIgYW5kIHNyIGRldmljZSBpbnRpYWxpenRpb24gQVBJJ3MuIE9ubHkgb25lIGNhbGwKICAqIHdpbGwgdWx0aW1hdGVseSBzdWNjZWVkLgogICoKLSAqIEN1cnJlbmx5IHRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGludGVycnJ1cHQgaGFuZGxlciBmb3IgYSBwYXJ0aWN1bGFyIFNSCisgKiBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgaW50ZXJycnVwdCBoYW5kbGVyIGZvciBhIHBhcnRpY3VsYXIgU1IKICAqIGlmIHNtYXJ0cmVmbGV4IGNsYXNzIGRyaXZlciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYW5kIGhhcwogICogcmVxdWVzdGVkIGZvciBpbnRlcnJ1cHRzIGFuZCB0aGUgU1IgaW50ZXJydXB0IGxpbmUgaW4gcHJlc2VudC4KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi92b2x0YWdlLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3ZvbHRhZ2UuYwppbmRleCBjNmZhY2Y3Li42ZmI1MjA5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL3ZvbHRhZ2UuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3ZvbHRhZ2UuYwpAQCAtODUxLDcgKzg1MSw3IEBACiAgKiBAdm9sdGRtOglwb2ludGVyIHRvIHRoZSBWREQgd2hvc2Ugdm9sdGFnZSBpcyB0byBiZSByZXNldC4KICAqCiAgKiBUaGlzIEFQSSBmaW5kcyBvdXQgdGhlIGNvcnJlY3Qgdm9sdGFnZSB0aGUgdm9sdGFnZSBkb21haW4gaXMgc3VwcG9zZWQKLSAqIHRvIGJlIGF0IGFuZCByZXNldHMgdGhlIHZvbHRhZ2UgdG8gdGhhdCBsZXZlbC4gU2hvdWxkIGJlIHVzZWQgZXhwZWNpYWxseQorICogdG8gYmUgYXQgYW5kIHJlc2V0cyB0aGUgdm9sdGFnZSB0byB0aGF0IGxldmVsLiBTaG91bGQgYmUgdXNlZCBlc3BlY2lhbGx5CiAgKiB3aGlsZSBkaXNhYmxpbmcgYW55IHZvbHRhZ2UgY29tcGVuc2F0aW9uIG1vZHVsZXMuCiAgKi8KIHZvaWQgb21hcF92b2x0YWdlX3Jlc2V0KHN0cnVjdCB2b2x0YWdlZG9tYWluICp2b2x0ZG0pCkBAIC05MTIsNyArOTEyLDcgQEAKICAqIFRoaXMgQVBJIHNlYXJjaGVzIG9ubHkgdGhyb3VnaCB0aGUgbm9uLWNvbXBlbnNhdGVkIHZvbHRhZ2VzIGludCB0aGUKICAqIHZvbHRhZ2UgdGFibGUuCiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gdGhlIHZvbHRhZ2UgdGFibGUgZW50cnkgY29ycmVzcG9uZGluZyB0byB2b2x0IG9uCi0gKiBzdWNlc3MuIFJldHVybnMgLUVOT0RBVEEgaWYgbm8gdm9sdGFnZSB0YWJsZSBleGlzaXRzIGZvciB0aGUgcGFzc2VkIHZvbHRhZ2UKKyAqIHN1Y2Nlc3MuIFJldHVybnMgLUVOT0RBVEEgaWYgbm8gdm9sdGFnZSB0YWJsZSBleGlzaXRzIGZvciB0aGUgcGFzc2VkIHZvbHRhZ2UKICAqIGRvbWFpbiBvciBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBlbnRyeS4KICAqLwogc3RydWN0IG9tYXBfdm9sdF9kYXRhICpvbWFwX3ZvbHRhZ2VfZ2V0X3ZvbHRkYXRhKHN0cnVjdCB2b2x0YWdlZG9tYWluICp2b2x0ZG0sCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYWRkci1tYXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9hZGRyLW1hcC5jCmluZGV4IDFhNWQ2YTAuLjVjZWFmZGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC9hZGRyLW1hcC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9hZGRyLW1hcC5jCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiY29tbW9uLmgiCiAKIC8qCi0gKiBUaGUgT3Jpb24gaGFzIGZ1bGx5IHByb2dyYW1hYmxlIGFkZHJlc3MgbWFwLiBUaGVyZSdzIGEgc2VwYXJhdGUgYWRkcmVzcworICogVGhlIE9yaW9uIGhhcyBmdWxseSBwcm9ncmFtbWFibGUgYWRkcmVzcyBtYXAuIFRoZXJlJ3MgYSBzZXBhcmF0ZSBhZGRyZXNzCiAgKiBtYXAgZm9yIGVhY2ggb2YgdGhlIGRldmljZSBfbWFzdGVyXyBpbnRlcmZhY2VzLCBlLmcuIENQVSwgUENJLCBQQ0llLCBVU0IsCiAgKiBHaWdhYml0IEV0aGVybmV0LCBETUEvWE9SIGVuZ2luZXMsIGV0Yy4gRWFjaCBpbnRlcmZhY2UgaGFzIGl0cyBvd24KICAqIGFkZHJlc3MgZGVjb2RlIHdpbmRvd3MgdGhhdCBhbGxvdyBpdCB0byBhY2Nlc3MgYW55IG9mIHRoZSBPcmlvbiByZXNvdXJjZXMuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvbmV0MmJpZy1zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L25ldDJiaWctc2V0dXAuYwppbmRleCA0MjllY2FmLi5hNTkzMGY4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvbmV0MmJpZy1zZXR1cC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVwLmMKQEAgLTE5MCw3ICsxOTAsNyBAQAogICogVGhlIHBvd2VyIGZyb250IExFRHMgKGJsdWUgYW5kIHJlZCkgYW5kIFNBVEEgcmVkIExFRHMgYXJlIGNvbnRyb2xsZWQgdmlhIGEKICAqIHNpbmdsZSBHUElPIGxpbmUgYW5kIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIGxlZHMtZ3BpbyBkcml2ZXIuCiAgKgotICogVGhlIFNBVEEgYmx1ZSBMRURzIGhhdmUgc29tZSBoYXJkd2FyZSBibGluayBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGRldGFpbGxlZAorICogVGhlIFNBVEEgYmx1ZSBMRURzIGhhdmUgc29tZSBoYXJkd2FyZSBibGluayBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIGRldGFpbGVkCiAgKiBpbiB0aGUgZm9sbG93aW5nIGFycmF5OgogICoKICAqIFNBVEF4IGJsdWUgTEVEIHwgU0FUQXggYWN0aXZpdHkgfCBMRUQgc3RhdGUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czIwOS1zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMKaW5kZXggZjBmNDNlMS4uZTZkNjQ0OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzMjA5LXNldHVwLmMKQEAgLTM2LDcgKzM2LDcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIDhNaUIgTk9SIGZsYXNoLiBUaGUgc3RydWN0IG10ZF9wYXJ0aXRpb24gaXMgbm90IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQotICogICAgIHBhcnRpdGlvbnMgb24gdGhlIGRldmljZSBiZWNhdXNlIHdlIHdhbnQgdG8ga2VlcCBjb21wYXRhYmlsaXR5IHdpdGgKKyAqICAgICBwYXJ0aXRpb25zIG9uIHRoZSBkZXZpY2UgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoCiAgKiAgICAgZXhpc3RpbmcgUU5BUCBmaXJtd2FyZS4KICAqCiAgKiBMYXlvdXQgYXMgdXNlZCBieSBRTkFQOgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM0MDktc2V0dXAuYwppbmRleCA5MmYzOTNmLi45ZWFjODE5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM0MDktc2V0dXAuYworKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM0MDktc2V0dXAuYwpAQCAtNTYsNyArNTYsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogOE1pQiBOT1IgZmxhc2guIFRoZSBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBpcyBub3QgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlCi0gKiAgICAgcGFydGl0aW9ucyBvbiB0aGUgZGV2aWNlIGJlY2F1c2Ugd2Ugd2FudCB0byBrZWVwIGNvbXBhdGFiaWxpdHkgd2l0aAorICogICAgIHBhcnRpdGlvbnMgb24gdGhlIGRldmljZSBiZWNhdXNlIHdlIHdhbnQgdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGgKICAqICAgICBleGlzdGluZyBRTkFQIGZpcm13YXJlLgogICoKICAqIExheW91dCBhcyB1c2VkIGJ5IFFOQVA6CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvcHhhM3h4LXJlZ3MuaCBiL2FyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9weGEzeHgtcmVncy5oCmluZGV4IGU0ZmI0NjY4Li4yMDdlY2I0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvcHhhM3h4LXJlZ3MuaAorKysgYi9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvcHhhM3h4LXJlZ3MuaApAQCAtMzgsNyArMzgsNyBAQAogI2RlZmluZSBQQ01EKHgpCQlfX1JFRygweDQwRjUwMTEwICsgKCh4KSA8PCAyKSkKIAogLyoKLSAqIFNsYXZlIFBvd2VyIE1hbmFnbWVudCBVbml0CisgKiBTbGF2ZSBQb3dlciBNYW5hZ2VtZW50IFVuaXQKICAqLwogI2RlZmluZSBBU0NSCQlfX1JFRygweDQwZjQwMDAwKQkvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gUG93ZXIgU3RhdHVzL0NvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgQVJTUgkJX19SRUcoMHg0MGY0MDAwNCkJLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIFJlc2V0IFN0YXR1cyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvaW5jbHVkZS9tYWNoL3pldXMuaCBiL2FyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC96ZXVzLmgKaW5kZXggZmFhNDA4YS4uMDY0MWYzMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvaW5jbHVkZS9tYWNoL3pldXMuaAorKysgYi9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvemV1cy5oCkBAIC02NCw3ICs2NCw3IEBACiAKIC8qCiAgKiBDUExEIHJlZ2lzdGVyczoKLSAqIE9ubHkgNCByZWdpc3RlcnMsIGJ1dCBzcHJlYWRlZCBvdmVyIGEgMzJNQiBhZGRyZXNzIHNwYWNlLgorICogT25seSA0IHJlZ2lzdGVycywgYnV0IHNwcmVhZCBvdmVyIGEgMzJNQiBhZGRyZXNzIHNwYWNlLgogICogQmUgZ2VudGxlLCBhbmQgcmVtYXAgdGhhdCBvdmVyIDMya0IuLi4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9taW9hNzAxLmMgYi9hcmNoL2FybS9tYWNoLXB4YS9taW9hNzAxLmMKaW5kZXggZGQxM2JiNi4uMjM5MjVkYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvbWlvYTcwMS5jCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL21pb2E3MDEuYwpAQCAtNDU4LDcgKzQ1OCw3IEBACiAvKgogICogU3VzcGVuZC9SZXN1bWUgYm9vdHN0cmFwIG1hbmFnZW1lbnQKICAqCi0gKiBNSU8gQTcwMSByZWJvb3Qgc2VxdWVuY2UgaXMgaGlnaGx5IFJPTSBkZXBlbmRhbnQuIEZyb20gdGhlIG9uZSBkaXNzYXNzZW1ibGVkLAorICogTUlPIEE3MDEgcmVib290IHNlcXVlbmNlIGlzIGhpZ2hseSBST00gZGVwZW5kZW50LiBGcm9tIHRoZSBvbmUgZGlzc2Fzc2VtYmxlZCwKICAqIHRoaXMgc2VxdWVuY2UgaXMgYXMgZm9sbG93cyA6CiAgKiAgIC0gZGlzYWJsZXMgaW50ZXJydXB0cwogICogICAtIGluaXRpYWxpemUgU0RSQU0gKHNlbGYgcmVmcmVzaCBSQU0gaW50byBhY3RpdmUgUkFNKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2luY2x1ZGUvbWFjaC9kbWEuaCBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvZG1hLmgKaW5kZXggY2Y2ODEzNi4uYjJiMmE1YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2luY2x1ZGUvbWFjaC9kbWEuaAorKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvaW5jbHVkZS9tYWNoL2RtYS5oCkBAIC0xOSw3ICsxOSw3IEBACiAjZGVmaW5lIE1BWF9ETUFfVFJBTlNGRVJfU0laRSAgIDB4MTAwMDAwIC8qIERhdGEgVW5pdCBpcyBoYWxmIHdvcmQgICovCiAKIC8qIFdlIHVzZSBgdmlydHVhbGAgZG1hIGNoYW5uZWxzIHRvIGhpZGUgdGhlIGZhY3Qgd2UgaGF2ZSBvbmx5IGEgbGltaXRlZAotICogbnVtYmVyIG9mIERNQSBjaGFubmVscywgYW5kIG5vdCBvZiBhbGwgb2YgdGhlbSAoZGVwZW5kYW50IG9uIHRoZSBkZXZpY2UpCisgKiBudW1iZXIgb2YgRE1BIGNoYW5uZWxzLCBhbmQgbm90IG9mIGFsbCBvZiB0aGVtIChkZXBlbmRlbnQgb24gdGhlIGRldmljZSkKICAqIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgRE1BIHNvdXJjZS4gV2UgdGhlcmVmb3JlIGxldCB0aGUgRE1BIGNvcmUgaGFuZGxlCiAgKiB0aGUgYWxsb2NhdGlvbiBvZiBoYXJkd2FyZSBjaGFubmVscyB0byBjbGllbnRzLgogKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvcmVncy1tZW0uaCBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvcmVncy1tZW0uaAppbmRleCA3ZjdjNTI5Li45ODhhNjg2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvaW5jbHVkZS9tYWNoL3JlZ3MtbWVtLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2luY2x1ZGUvbWFjaC9yZWdzLW1lbS5oCkBAIC0xMDEsNyArMTAxLDcgQEAKICNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1BNQzE2CQkoMHgwMykKIAogLyogYmFuayBjb25maWd1cmF0aW9ucyBmb3IgYmFua3MgMC4uNywgbm90ZSBiYW5rcwotICogNiBhbmQgNyBoYXZlIGRpZmZlcm50IGNvbmZpZ3VyYXRpb25zIGRlcGVuZGluZyBvbgorICogNiBhbmQgNyBoYXZlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBkZXBlbmRpbmcgb24KICAqIHRoZSBtZW1vcnkgdHlwZSBiaXRzICovCiAKICNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY3AyCQkoMHgwIDw8IDIpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvbWFjaC1uMzAuYyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLW4zMC5jCmluZGV4IDY2ZjQ0NDQuLjA3OWRjYWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLW4zMC5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLW4zMC5jCkBAIC0yNTIsNyArMjUyLDcgQEAKIAkuZGVmX3RyaWdnZXIJPSAiIiwKIH07CiAKLS8qIFRoaXMgaXMgdGhlIGJsdWUgTEVEIG9uIHRoZSBkZXZpY2UuIE9yaWdpbmFseSB1c2VkIHRvIGluZGljYXRlIEdQUyBhY3Rpdml0eQorLyogVGhpcyBpcyB0aGUgYmx1ZSBMRUQgb24gdGhlIGRldmljZS4gT3JpZ2luYWxseSB1c2VkIHRvIGluZGljYXRlIEdQUyBhY3Rpdml0eQogICogYnkgZmxhc2hpbmcuICovCiBzdGF0aWMgc3RydWN0IHMzYzI0eHhfbGVkX3BsYXRkYXRhIG4zNV9ibHVlX2xlZF9wZGF0YSA9IHsKIAkubmFtZQkJPSAiYmx1ZV9sZWQiLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDQwL21hY2gtbWluaTI0NDAuYyBiL2FyY2gvYXJtL21hY2gtczNjMjQ0MC9tYWNoLW1pbmkyNDQwLmMKaW5kZXggZGZlZGM5Yy4uZGQzMTIwZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDQwL21hY2gtbWluaTI0NDAuYworKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0NDAvbWFjaC1taW5pMjQ0MC5jCkBAIC0xNTUsNyArMTU1LDcgQEAKIAkgKiB0aGUgc2FtZSB0aW1pbmdzLCBob3dldmVyLCBhbnl0aGluZyBzbWFsbGVyIHRoYW4gMTAyNHg3NjgKIAkgKiB3aWxsIG9ubHkgYmUgZGlzcGxheWVkIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgYSAxMDI0eDc2OAogCSAqIFhHQSBvdXRwdXQgdW5sZXNzIHlvdSBhZGQgb3B0aW9uYWwgZGlwIHN3aXRjaGVzIHRvIHRoZSBzaGllbGQuCi0JICogVGhlcmVmb3JlIHRpbWluZ3MgZm9yIG90aGVyIHJlc29sdXRpb25zIGhhdmUgYmVlbiBvbW1pdGVkIGhlcmUuCisJICogVGhlcmVmb3JlIHRpbWluZ3MgZm9yIG90aGVyIHJlc29sdXRpb25zIGhhdmUgYmVlbiBvbWl0dGVkIGhlcmUuCiAJICovCiAJWzJdID0gewogCQlfTENEX0RFQ0xBUkUoCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzY0eHgvZG1hLmMgYi9hcmNoL2FybS9tYWNoLXMzYzY0eHgvZG1hLmMKaW5kZXggYzM1NTg1Yy4uYjE5NzE3MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2M2NHh4L2RtYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjNjR4eC9kbWEuYwpAQCAtMzE1LDcgKzMxNSw3IEBACiAJY2FzZSBTM0MyNDEwX0RNQU9QX0ZMVVNIOgogCQlyZXR1cm4gczNjNjR4eF9kbWFfZmx1c2goY2hhbik7CiAKLQkvKiBiZWxpdmUgUEFVU0UvUkVTVU1FIGFyZSBuby1vcHMgKi8KKwkvKiBiZWxpZXZlIFBBVVNFL1JFU1VNRSBhcmUgbm8tb3BzICovCiAJY2FzZSBTM0MyNDEwX0RNQU9QX1BBVVNFOgogCWNhc2UgUzNDMjQxMF9ETUFPUF9SRVNVTUU6CiAJY2FzZSBTM0MyNDEwX0RNQU9QX1NUQVJURUQ6CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXM1cGMxMDAvaW5jbHVkZS9tYWNoL3JlZ3MtZmIuaCBiL2FyY2gvYXJtL21hY2gtczVwYzEwMC9pbmNsdWRlL21hY2gvcmVncy1mYi5oCmluZGV4IDRiZTRjYzlhLi4wN2FhNGQ2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXM1cGMxMDAvaW5jbHVkZS9tYWNoL3JlZ3MtZmIuaAorKysgYi9hcmNoL2FybS9tYWNoLXM1cGMxMDAvaW5jbHVkZS9tYWNoL3JlZ3MtZmIuaApAQCAtMjksNyArMjksNyBAQAogI2RlZmluZSBXUEFMQ09OX0gJCQkJCSgweDE5YykKICNkZWZpbmUgV1BBTENPTl9MCQkJCQkoMHgxYTApCiAKLS8qIFBhbGxldGUgY29udHJvIGZvciBXUEFMMCBhbmQgV1BBTDEgaXMgdGhlIHNhbWUgYXMgaW4gUzNDNjR4eCwgYnV0CisvKiBQYWxldHRlIGNvbnRyb2wgZm9yIFdQQUwwIGFuZCBXUEFMMSBpcyB0aGUgc2FtZSBhcyBpbiBTM0M2NHh4LCBidXQKICAqIGRpZmZlcmVudCBmb3IgV1BBTDItNAogICovCiAvKiBJbiBXUEFMQ09OX0wgKGFrYSBXUEFMQ09OKSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zNXBjMTAwL3NldHVwLXNkaGNpLmMgYi9hcmNoL2FybS9tYWNoLXM1cGMxMDAvc2V0dXAtc2RoY2kuYwppbmRleCBmMTY5NDZlLi5iZTI1ODc5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXM1cGMxMDAvc2V0dXAtc2RoY2kuYworKysgYi9hcmNoL2FybS9tYWNoLXM1cGMxMDAvc2V0dXAtc2RoY2kuYwpAQCAtNDAsNyArNDAsNyBAQAogewogCXUzMiBjdHJsMiwgY3RybDM7CiAKLQkvKiBkb24ndCBuZWVkIHRvIGFsdGVyIGFueXRoaW5nIGFjb3JkaW5nIHRvIGNhcmQtdHlwZSAqLworCS8qIGRvbid0IG5lZWQgdG8gYWx0ZXIgYW55dGhpbmcgYWNjb3JkaW5nIHRvIGNhcmQtdHlwZSAqLwogCiAJd3JpdGVsKFMzQzY0WFhfU0RIQ0lfQ09OVFJPTDRfRFJJVkVfOW1BLCByICsgUzNDNjRYWF9TREhDSV9DT05UUk9MNCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczVwdjIxMC9pbmNsdWRlL21hY2gvZ3Bpby5oIGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9ncGlvLmgKaW5kZXggMWY0YjU5NS4uYTVhMWUzMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9ncGlvLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9ncGlvLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNkZWZpbmUgZ3Bpb19jYW5zbGVlcAlfX2dwaW9fY2Fuc2xlZXAKICNkZWZpbmUgZ3Bpb190b19pcnEJX19ncGlvX3RvX2lycQogCi0vKiBQcmFjdGljYWxseSwgR1BJTyBiYW5rcyB1cHRvIE1QMDMgYXJlIHRoZSBjb25maWd1cmFibGUgZ3BpbyBiYW5rcyAqLworLyogUHJhY3RpY2FsbHksIEdQSU8gYmFua3MgdXAgdG8gTVAwMyBhcmUgdGhlIGNvbmZpZ3VyYWJsZSBncGlvIGJhbmtzICovCiAKIC8qIEdQSU8gYmFuayBzaXplcyAqLwogI2RlZmluZSBTNVBWMjEwX0dQSU9fQTBfTlIJKDgpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXM1cHYyMTAvc2V0dXAtc2RoY2ktZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL3NldHVwLXNkaGNpLWdwaW8uYwppbmRleCA3NDY3NzdkLi4zZTNhYzA1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXM1cHYyMTAvc2V0dXAtc2RoY2ktZ3Bpby5jCisrKyBiL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS1ncGlvLmMKQEAgLTMyLDEwICszMiwxMCBAQAogCiAJc3dpdGNoICh3aWR0aCkgewogCWNhc2UgODoKLQkJLyogR1BHMVszOjZdIHNwZWNpYWwtZnVudGlvbiAzICovCisJCS8qIEdQRzFbMzo2XSBzcGVjaWFsLWZ1bmN0aW9uIDMgKi8KIAkJczNjX2dwaW9fY2ZncmFuZ2Vfbm9wdWxsKFM1UFYyMTBfR1BHMSgzKSwgNCwgUzNDX0dQSU9fU0ZOKDMpKTsKIAljYXNlIDQ6Ci0JCS8qIEdQRzBbMzo2XSBzcGVjaWFsLWZ1bnRpb24gMiAqLworCQkvKiBHUEcwWzM6Nl0gc3BlY2lhbC1mdW5jdGlvbiAyICovCiAJCXMzY19ncGlvX2NmZ3JhbmdlX25vcHVsbChTNVBWMjEwX0dQRzAoMyksIDQsIFMzQ19HUElPX1NGTigyKSk7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXM1cHYyMTAvc2V0dXAtc2RoY2kuYyBiL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS5jCmluZGV4IGMzMmUyMDIuLmE4M2I2YzkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS5jCisrKyBiL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS5jCkBAIC0zOCw3ICszOCw3IEBACiB7CiAJdTMyIGN0cmwyLCBjdHJsMzsKIAotCS8qIGRvbid0IG5lZWQgdG8gYWx0ZXIgYW55dGhpbmcgYWNvcmRpbmcgdG8gY2FyZC10eXBlICovCisJLyogZG9uJ3QgbmVlZCB0byBhbHRlciBhbnl0aGluZyBhY2NvcmRpbmcgdG8gY2FyZC10eXBlICovCiAKIAl3cml0ZWwoUzNDNjRYWF9TREhDSV9DT05UUk9MNF9EUklWRV85bUEsIHIgKyBTM0M2NFhYX1NESENJX0NPTlRST0w0KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9NYWtlZmlsZQppbmRleCBlNjk3NjkxLi40MTI1MmQyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9NYWtlZmlsZQpAQCAtNTAsNyArNTAsNyBAQAogIyBMRURzIHN1cHBvcnQKIG9iai0kKENPTkZJR19MRURTKSArPSAkKGxlZC15KQogCi0jIE1pc2NlbGFuZW91cyBmdW5jdGlvbnMKKyMgTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIG9iai0kKENPTkZJR19QTSkJCQkrPSBwbS5vIHNsZWVwLm8KIG9iai0kKENPTkZJR19TQTExMDBfU1NQKQkJKz0gc3NwLm8KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvY3B1LXNhMTEwMC5jIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvY3B1LXNhMTEwMC5jCmluZGV4IDA3ZDRlOGIuLmFhYThhY2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2NwdS1zYTExMDAuYworKysgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9jcHUtc2ExMTAwLmMKQEAgLTY4LDcgKzY4LDcgQEAKICAqIGNsb2NrIGNoYW5nZSBpbiBST00gYW5kIGp1bXAgdG8gdGhhdCBjb2RlIGZyb20gdGhlIGtlcm5lbC4gVGhlIG1haW4KICAqIGRpc2FkdmFudGFnZSBpcyB0aGF0IHRoZSBST00gaGFzIHRvIGJlIG1vZGlmaWVkLCB3aGljaCBpcyBub3QKICAqIHBvc3NpYmxlIG9uIGFsbCBTQS0xMTAwIHBsYXRmb3Jtcy4gQW5vdGhlciBkaXNhZHZhbnRhZ2UgaXMgdGhhdAotICoganVtcGluZyB0byBST00gbWFrZXMgY2xvY2sgc3dpdGNoaW5nIHVuZWNlc3NhcnkgY29tcGxpY2F0ZWQuCisgKiBqdW1waW5nIHRvIFJPTSBtYWtlcyBjbG9jayBzd2l0Y2hpbmcgdW5uZWNlc3NhcnkgY29tcGxpY2F0ZWQuCiAgKgogICogVGhlIGlkZWEgYmVoaW5kIHRoaXMgZHJpdmVyIGlzIHRoYXQgdGhlIG1lbW9yeSBjb25maWd1cmF0aW9uIGNhbiBiZQogICogY2hhbmdlZCB3aGlsZSBydW5uaW5nIGZyb20gRFJBTSAoZXZlbiB3aXRoIGludGVycnVwdHMgdHVybmVkIG9uISkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2luY2x1ZGUvbWFjaC9TQS0xMTAwLmggYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9pbmNsdWRlL21hY2gvU0EtMTEwMC5oCmluZGV4IDRmN2VhMDEuLmJhZTgyOTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2luY2x1ZGUvbWFjaC9TQS0xMTAwLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvaW5jbHVkZS9tYWNoL1NBLTExMDAuaApAQCAtMTc5NCw3ICsxNzk0LDcgQEAKICAgICAgICAgICAgICAgICAJKEREQVJfRGV2UmQgKyBEREFSX0Jyc3Q0ICsgRERBUl8xNkJpdERldiArIFwKICAgICAgICAgICAgICAgICAJIEREQVJfU2VyNFNTUFJjICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXI0U1NEUikpKQogCi0jZGVmaW5lIERDU1JfUlVOCTB4MDAwMDAwMDEJLyogRE1BIFJVTmluZyAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBEQ1NSX1JVTgkweDAwMDAwMDAxCS8qIERNQSBydW5uaW5nICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgRENTUl9JRSAJMHgwMDAwMDAwMgkvKiBETUEgSW50ZXJydXB0IEVuYWJsZSAgICAgICAgICAgICovCiAjZGVmaW5lIERDU1JfRVJST1IJMHgwMDAwMDAwNAkvKiBETUEgRVJST1IgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIERDU1JfRE9ORUEJMHgwMDAwMDAwOAkvKiBET05FIERNQSB0cmFuc2ZlciBidWZmZXIgQSAgICAgICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9qb3JuYWRhNzIwX3NzcC5jIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvam9ybmFkYTcyMF9zc3AuYwppbmRleCA5ZDQ5MGM2Li5mNTBiMDBiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9qb3JuYWRhNzIwX3NzcC5jCisrKyBiL2FyY2gvYXJtL21hY2gtc2ExMTAwL2pvcm5hZGE3MjBfc3NwLmMKQEAgLTI5LDcgKzI5LDcgQEAKIC8qKgogICogam9ybmFkYV9zc3BfcmV2ZXJzZSAtIHJldmVyc2VzIGlucHV0IGJ5dGUKICAqCi0gKiB3ZSBuZWVkIHRvIHJldmVyc2UgYWxsIGRhdGEgd2UgcmVjaWV2ZSBmcm9tIHRoZSBtY3UgZHVlIHRvIGl0cyBwaHlzaWNhbCBsb2NhdGlvbgorICogd2UgbmVlZCB0byByZXZlcnNlIGFsbCBkYXRhIHdlIHJlY2VpdmUgZnJvbSB0aGUgbWN1IGR1ZSB0byBpdHMgcGh5c2ljYWwgbG9jYXRpb24KICAqIHJldHVybnMgOiAwMTExMDExMSAtPiAxMTEwMTExMAogICovCiB1OCBpbmxpbmUgam9ybmFkYV9zc3BfcmV2ZXJzZSh1OCBieXRlKQpAQCAtMTc5LDcgKzE3OSw3IEBACiAKIHN0YXRpYyBpbnQgam9ybmFkYV9zc3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKIHsKLQkvKiBOb3RlIHRoYXQgdGhpcyBkb2VzbnQgYWN0dWFsbHkgcmVtb3ZlIHRoZSBkcml2ZXIsIHNpbmNlIHRoZXJlcyBub3RoaW5nIHRvIHJlbW92ZQorCS8qIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgcmVtb3ZlIHRoZSBkcml2ZXIsIHNpbmNlIHRoZXJlcyBub3RoaW5nIHRvIHJlbW92ZQogCSAqIEl0IGp1c3QgbWFrZXMgc3VyZSBldmVyeXRoaW5nIGlzIHR1cm5lZCBvZmYgKi8KIAlHUFNSID0gR1BJT19HUElPMjU7CiAJc3NwX2V4aXQoKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc2htb2JpbGUvYm9hcmQtYXA0ZXZiLmMgYi9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2JvYXJkLWFwNGV2Yi5jCmluZGV4IDc4M2I2NmYuLjFlMzVmYTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2htb2JpbGUvYm9hcmQtYXA0ZXZiLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9ib2FyZC1hcDRldmIuYwpAQCAtOTQ3LDcgKzk0Nyw3IEBACiAJJmFwNGV2Yl9jYW1lcmEsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBoZG1pX2luaXRfcG1fY2xvY2sodm9pZCkKK3N0YXRpYyB2b2lkIF9faW5pdCBoZG1pX2luaXRfcG1fY2xvY2sodm9pZCkKIHsKIAlzdHJ1Y3QgY2xrICpoZG1pX2ljayA9IGNsa19nZXQoJmhkbWlfZGV2aWNlLmRldiwgImljayIpOwogCWludCByZXQ7CkBAIC05ODgsMjAgKzk4OCwxNSBAQAogCXByX2RlYnVnKCJQTExDMiBzZXQgZnJlcXVlbmN5ICVsdVxuIiwgcmF0ZSk7CiAKIAlyZXQgPSBjbGtfc2V0X3BhcmVudChoZG1pX2ljaywgJnNoNzM3Ml9wbGxjMl9jbGspOwotCWlmIChyZXQgPCAwKSB7CisJaWYgKHJldCA8IDApCiAJCXByX2VycigiQ2Fubm90IHNldCBIRE1JIHBhcmVudDogJWRcbiIsIHJldCk7Ci0JCWdvdG8gb3V0OwotCX0KIAogb3V0OgogCWlmICghSVNfRVJSKGhkbWlfaWNrKSkKIAkJY2xrX3B1dChoZG1pX2ljayk7Ci0JcmV0dXJuIHJldDsKIH0KIAotZGV2aWNlX2luaXRjYWxsKGhkbWlfaW5pdF9wbV9jbG9jayk7Ci0KLXN0YXRpYyBpbnQgX19pbml0IGZzaV9pbml0X3BtX2Nsb2NrKHZvaWQpCitzdGF0aWMgdm9pZCBfX2luaXQgZnNpX2luaXRfcG1fY2xvY2sodm9pZCkKIHsKIAlzdHJ1Y3QgY2xrICpmc2lhX2ljazsKIAlpbnQgcmV0OwpAQCAtMTAxMCw3ICsxMDA1LDcgQEAKIAlpZiAoSVNfRVJSKGZzaWFfaWNrKSkgewogCQlyZXQgPSBQVFJfRVJSKGZzaWFfaWNrKTsKIAkJcHJfZXJyKCJDYW5ub3QgZ2V0IEZTSSBJQ0s6ICVkXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0OworCQlyZXR1cm47CiAJfQogCiAJcmV0ID0gY2xrX3NldF9wYXJlbnQoZnNpYV9pY2ssICZzaDczNzJfZnNpYWNrX2Nsayk7CkBAIC0xMDE4LDEwICsxMDEzLDcgQEAKIAkJcHJfZXJyKCJDYW5ub3Qgc2V0IEZTSS1BIHBhcmVudDogJWRcbiIsIHJldCk7CiAKIAljbGtfcHV0KGZzaWFfaWNrKTsKLQotCXJldHVybiByZXQ7CiB9Ci1kZXZpY2VfaW5pdGNhbGwoZnNpX2luaXRfcG1fY2xvY2spOwogCiAvKgogICogRklYTUUgISEKQEAgLTEzNDgsNiArMTM0MCw5IEBACiAJX19yYXdfd3JpdGVsKHNyY3I0ICYgfigxIDw8IDEzKSwgU1JDUjQpOwogCiAJcGxhdGZvcm1fYWRkX2RldmljZXMoYXA0ZXZiX2RldmljZXMsIEFSUkFZX1NJWkUoYXA0ZXZiX2RldmljZXMpKTsKKworCWhkbWlfaW5pdF9wbV9jbG9jaygpOworCWZzaV9pbml0X3BtX2Nsb2NrKCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBhcDRldmJfdGltZXJfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9ib2FyZC1tYWNrZXJlbC5jIGIvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9ib2FyZC1tYWNrZXJlbC5jCmluZGV4IDgxODRkNGQuLjdkYTJjYTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2htb2JpbGUvYm9hcmQtbWFja2VyZWwuYworKysgYi9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2JvYXJkLW1hY2tlcmVsLmMKQEAgLTQyMyw3ICs0MjMsNyBAQAogCS5uYW1lCQk9ICJzaF9mc2kyX2JfaGRtaSIsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBoZG1pX2luaXRfcG1fY2xvY2sodm9pZCkKK3N0YXRpYyB2b2lkIF9faW5pdCBoZG1pX2luaXRfcG1fY2xvY2sodm9pZCkKIHsKIAlzdHJ1Y3QgY2xrICpoZG1pX2ljayA9IGNsa19nZXQoJmhkbWlfZGV2aWNlLmRldiwgImljayIpOwogCWludCByZXQ7CkBAIC00NjcsMTcgKzQ2NywxMyBAQAogCXByX2RlYnVnKCJQTExDMiBzZXQgZnJlcXVlbmN5ICVsdVxuIiwgcmF0ZSk7CiAKIAlyZXQgPSBjbGtfc2V0X3BhcmVudChoZG1pX2ljaywgJnNoNzM3Ml9wbGxjMl9jbGspOwotCWlmIChyZXQgPCAwKSB7CisJaWYgKHJldCA8IDApCiAJCXByX2VycigiQ2Fubm90IHNldCBIRE1JIHBhcmVudDogJWRcbiIsIHJldCk7Ci0JCWdvdG8gb3V0OwotCX0KIAogb3V0OgogCWlmICghSVNfRVJSKGhkbWlfaWNrKSkKIAkJY2xrX3B1dChoZG1pX2ljayk7Ci0JcmV0dXJuIHJldDsKIH0KLWRldmljZV9pbml0Y2FsbChoZG1pX2luaXRfcG1fY2xvY2spOwogCiAvKiBVU0IxIChIb3N0KSAqLwogc3RhdGljIHZvaWQgdXNiMV9ob3N0X3BvcnRfcG93ZXIoaW50IHBvcnQsIGludCBwb3dlcikKQEAgLTEyMTgsNiArMTIxNCw4IEBACiAJc2g3MzcyX2FkZF9zdGFuZGFyZF9kZXZpY2VzKCk7CiAKIAlwbGF0Zm9ybV9hZGRfZGV2aWNlcyhtYWNrZXJlbF9kZXZpY2VzLCBBUlJBWV9TSVpFKG1hY2tlcmVsX2RldmljZXMpKTsKKworCWhkbWlfaW5pdF9wbV9jbG9jaygpOwogfQogCiBzdGF0aWMgdm9pZCBfX2luaXQgbWFja2VyZWxfdGltZXJfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9pbmNsdWRlL21hY2gvbW1jLmggYi9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2luY2x1ZGUvbWFjaC9tbWMuaAppbmRleCBlMTE1NjBhLi4yMWE1OWRiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2luY2x1ZGUvbWFjaC9tbWMuaAorKysgYi9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2luY2x1ZGUvbWFjaC9tbWMuaApAQCAtOSw3ICs5LDcgQEAKIAogI2lmZGVmIENPTkZJR19NQUNIX0FQNEVWQgogI2luY2x1ZGUgIm1hY2gvbW1jLWFwNGViLmgiCi0jZWxpZiBDT05GSUdfTUFDSF9NQUNLRVJFTAorI2VsaWYgZGVmaW5lZChDT05GSUdfTUFDSF9NQUNLRVJFTCkKICNpbmNsdWRlICJtYWNoL21tYy1tYWNrZXJlbC5oIgogI2Vsc2UKICNlcnJvciAidW5zdXBwb3J0ZWQgYm9hcmQuIgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9pbmNsdWRlL21hY2gvemJvb3QuaCBiL2FyY2gvYXJtL21hY2gtc2htb2JpbGUvaW5jbHVkZS9tYWNoL3pib290LmgKaW5kZXggNmQ2YTIwNS4uOTMyMGFmZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS9pbmNsdWRlL21hY2gvemJvb3QuaAorKysgYi9hcmNoL2FybS9tYWNoLXNobW9iaWxlL2luY2x1ZGUvbWFjaC96Ym9vdC5oCkBAIC0xMyw3ICsxMyw3IEBACiAjaWZkZWYgQ09ORklHX01BQ0hfQVA0RVZCCiAjZGVmaW5lIE1BQ0hfVFlQRQlNQUNIX1RZUEVfQVA0RVZCCiAjaW5jbHVkZSAibWFjaC9oZWFkLWFwNGV2Yi50eHQiCi0jZWxpZiBDT05GSUdfTUFDSF9NQUNLRVJFTAorI2VsaWYgZGVmaW5lZChDT05GSUdfTUFDSF9NQUNLRVJFTCkKICNkZWZpbmUgTUFDSF9UWVBFCU1BQ0hfVFlQRV9NQUNLRVJFTAogI2luY2x1ZGUgIm1hY2gvaGVhZC1tYWNrZXJlbC50eHQiCiAjZWxzZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC10ZWdyYS9kbWEuYyBiL2FyY2gvYXJtL21hY2gtdGVncmEvZG1hLmMKaW5kZXggZTk0NWFlMi4uZjRlZjVlYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC10ZWdyYS9kbWEuYworKysgYi9hcmNoL2FybS9tYWNoLXRlZ3JhL2RtYS5jCkBAIC0yMjMsNyArMjIzLDcgQEAKIAkgKiAgLSBDaGFuZ2UgdGhlIHNvdXJjZSBzZWxlY3RvciB0byBpbnZhbGlkIHRvIHN0b3AgdGhlIERNQSBmcm9tCiAJICogICAgRklGTyB0byBtZW1vcnkuCiAJICogIC0gUmVhZCB0aGUgc3RhdHVzIHJlZ2lzdGVyIHRvIGtub3cgdGhlIG51bWJlciBvZiBwZW5kaW5nCi0JICogICAgYnl0ZXMgdG8gYmUgdHJhbnNmZXJlZC4KKwkgKiAgICBieXRlcyB0byBiZSB0cmFuc2ZlcnJlZC4KIAkgKiAgLSBGaW5hbGx5IHN0b3Agb3IgcHJvZ3JhbSB0aGUgRE1BIHRvIHRoZSBuZXh0IGJ1ZmZlciBpbiB0aGUKIAkgKiAgICBsaXN0LgogCSAqLwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJaWYgKHN0YXR1cyAmIFNUQV9CVVNZKQogCQlyZXEtPmJ5dGVzX3RyYW5zZmVycmVkIC09IHRvX3RyYW5zZmVyOwogCi0JLyogSW4gY29udGlub3VzIHRyYW5zZmVyIG1vZGUsIERNQSBvbmx5IHRyYWNrcyB0aGUgY291bnQgb2YgdGhlCisJLyogSW4gY29udGludW91cyB0cmFuc2ZlciBtb2RlLCBETUEgb25seSB0cmFja3MgdGhlIGNvdW50IG9mIHRoZQogCSAqIGhhbGYgRE1BIGJ1ZmZlci4gU28sIGlmIHRoZSBETUEgYWxyZWFkeSBmaW5pc2hlZCBoYWxmIHRoZSBETUEKIAkgKiB0aGVuIGFkZCB0aGUgaGFsZiBidWZmZXIgdG8gdGhlIGNvbXBsZXRlZCBjb3VudC4KIAkgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC10ZWdyYS9pbmNsdWRlL21hY2gvZG1hLmggYi9hcmNoL2FybS9tYWNoLXRlZ3JhL2luY2x1ZGUvbWFjaC9kbWEuaAppbmRleCAzOTAxMWJkLi5kMDEzMmU4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXRlZ3JhL2luY2x1ZGUvbWFjaC9kbWEuaAorKysgYi9hcmNoL2FybS9tYWNoLXRlZ3JhL2luY2x1ZGUvbWFjaC9kbWEuaApAQCAtOTIsMTEgKzkyLDExIEBACiAJLyogIFRoaXMgaXMgYSBjYWxsZWQgZnJvbSB0aGUgRE1BIElTUiBjb250ZXh0IHdoZW4gdGhlIERNQSBpcyBzdGlsbCBpbgogCSAqICBwcm9ncmVzcyBhbmQgaXMgYWN0aXZlbHkgZmlsbGluZyBzYW1lIGJ1ZmZlci4KIAkgKgotCSAqICBJbiBjYXNlIG9mIGNvbnRpbm91cyBtb2RlIHJlY2VpdmUsIHRoaXMgdGhyZXNob2xkIGlzIDEvMiB0aGUgYnVmZmVyCisJICogIEluIGNhc2Ugb2YgY29udGludW91cyBtb2RlIHJlY2VpdmUsIHRoaXMgdGhyZXNob2xkIGlzIDEvMiB0aGUgYnVmZmVyCiAJICogIHNpemUuIEluIG90aGVyIGNhc2VzLCB0aGlzIHdpbGwgbm90IGV2ZW4gYmUgY2FsbGVkIGFzIHRoZXJlIGlzIG5vCiAJICogIGhhcmR3YXJlIHN1cHBvcnQgZm9yIGl0LgogCSAqCi0JICogSW4gdGhlIGNhc2Ugb2YgY29udGlub3VzIG1vZGUgcmVjZWl2ZSwgaWYgdGhlcmUgaXMgbmV4dCByZXEgYWxyZWFkeQorCSAqIEluIHRoZSBjYXNlIG9mIGNvbnRpbnVvdXMgbW9kZSByZWNlaXZlLCBpZiB0aGVyZSBpcyBuZXh0IHJlcSBhbHJlYWR5CiAJICogcXVldWVkLCBETUEgcHJvZ3JhbXMgdGhlIEhXIHRvIHVzZSB0aGF0IHJlcSB3aGVuIHRoaXMgcmVxIGlzCiAJICogY29tcGxldGVkLiBJZiB0aGVyZSBpcyBubyAibmV4dCByZXEiIHF1ZXVlZCwgdGhlbiBETUEgSVNSIGRvZXNuJ3QgZG8KIAkgKiBhbnl0aGluZyBiZWZvcmUgY2FsbGluZyB0aGlzIGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC11MzAwL2Nsb2NrLmMgYi9hcmNoL2FybS9tYWNoLXUzMDAvY2xvY2suYwppbmRleCBmYWJjYzQ5Li41NTM1ZGQwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXUzMDAvY2xvY2suYworKysgYi9hcmNoL2FybS9tYWNoLXUzMDAvY2xvY2suYwpAQCAtMjYzLDcgKzI2Myw3IEBACiAJdmFsID0gcmVhZHcoVTMwMF9TWVNDT05fVkJBU0UgKyBVMzAwX1NZU0NPTl9DQ1IpOwogCXZhbCAmPSB+VTMwMF9TWVNDT05fQ0NSX0kyUzBfVVNFX1ZDWE87CiAJd3JpdGV3KHZhbCwgVTMwMF9TWVNDT05fVkJBU0UgKyBVMzAwX1NZU0NPTl9DQ1IpOwotCS8qIERlYWN0aXZhdGUgVkNYTyBpZiBub29uZSBlbHNlIGlzIHVzaW5nIFZDWE8gKi8KKwkvKiBEZWFjdGl2YXRlIFZDWE8gaWYgbm8gb25lIGVsc2UgaXMgdXNpbmcgVkNYTyAqLwogCWlmICghKHZhbCAmIFUzMDBfU1lTQ09OX0NDUl9JMlMxX1VTRV9WQ1hPKSkKIAkJdmFsICY9IH5VMzAwX1NZU0NPTl9DQ1JfVFVSTl9WQ1hPX09OOwogCXdyaXRldyh2YWwsIFUzMDBfU1lTQ09OX1ZCQVNFICsgVTMwMF9TWVNDT05fQ0NSKTsKQEAgLTI4Myw3ICsyODMsNyBAQAogCXZhbCA9IHJlYWR3KFUzMDBfU1lTQ09OX1ZCQVNFICsgVTMwMF9TWVNDT05fQ0NSKTsKIAl2YWwgJj0gflUzMDBfU1lTQ09OX0NDUl9JMlMxX1VTRV9WQ1hPOwogCXdyaXRldyh2YWwsIFUzMDBfU1lTQ09OX1ZCQVNFICsgVTMwMF9TWVNDT05fQ0NSKTsKLQkvKiBEZWFjdGl2YXRlIFZDWE8gaWYgbm9vbmUgZWxzZSBpcyB1c2luZyBWQ1hPICovCisJLyogRGVhY3RpdmF0ZSBWQ1hPIGlmIG5vIG9uZSBlbHNlIGlzIHVzaW5nIFZDWE8gKi8KIAlpZiAoISh2YWwgJiBVMzAwX1NZU0NPTl9DQ1JfSTJTMF9VU0VfVkNYTykpCiAJCXZhbCAmPSB+VTMwMF9TWVNDT05fQ0NSX1RVUk5fVkNYT19PTjsKIAl3cml0ZXcodmFsLCBVMzAwX1NZU0NPTl9WQkFTRSArIFUzMDBfU1lTQ09OX0NDUik7CkBAIC02NDksNyArNjQ5LDcgQEAKICAqLwogbG9uZyBjbGtfcm91bmRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSkKIHsKLQkvKiBUT0RPOiBnZXQgYXByb3ByaWF0ZSBzd2l0Y2hlcyBmb3IgRU1JRkNMSywgQUhCQ0xLIGFuZCBNQ0xLICovCisJLyogVE9ETzogZ2V0IGFwcHJvcHJpYXRlIHN3aXRjaGVzIGZvciBFTUlGQ0xLLCBBSEJDTEsgYW5kIE1DTEsgKi8KIAkvKiBFbHNlIGRlZmF1bHQgdG8gZml4ZWQgdmFsdWUgKi8KIAogCWlmIChjbGstPnJvdW5kX3JhdGUpIHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdXg1MDAvYm9hcmQtbW9wNTAwLmMgYi9hcmNoL2FybS9tYWNoLXV4NTAwL2JvYXJkLW1vcDUwMC5jCmluZGV4IGRjODc0NmQuLmFmOTEzNzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtdXg1MDAvYm9hcmQtbW9wNTAwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC11eDUwMC9ib2FyZC1tb3A1MDAuYwpAQCAtNTIsNyArNTIsNyBAQAogCSAqIG9uIHZhbHVlIHByZXNlbnQgaW4gR3Bpb1NlbDEgdG8gR3Bpb1NlbDYgYW5kIEFsdGVybmF0RnVuY3Rpb24KIAkgKiByZWdpc3Rlci4gVGhpcyBpcyB0aGUgYXJyYXkgb2YgNyBjb25maWd1cmF0aW9uIHNldHRpbmdzLgogCSAqIE9uZSBoYXMgdG8gY29tcGlsZSB0aW1lIGRlY2lkZSB0aGVzZSBzZXR0aW5ncy4gQmVsb3cgaXMgdGhlCi0JICogZXhwbGFpbmF0aW9uIG9mIHRoZXNlIHNldHRpbmcKKwkgKiBleHBsYW5hdGlvbiBvZiB0aGVzZSBzZXR0aW5nCiAJICogR3Bpb1NlbDEgPSAweDAwID0+IFBpbnMgR1BJTzEgdG8gR1BJTzggYXJlIG5vdCB1c2VkIGFzIEdQSU8KIAkgKiBHcGlvU2VsMiA9IDB4MUUgPT4gUGlucyBHUElPMTAgdG8gR1BJTzEzIGFyZSBjb25maWd1cmVkIGFzIEdQSU8KIAkgKiBHcGlvU2VsMyA9IDB4ODAgPT4gUGluIEdQSU8yNCBpcyBjb25maWd1cmVkIGFzIEdQSU8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdXg1MDAvaW5jbHVkZS9tYWNoL2RiODUwMC1yZWdzLmggYi9hcmNoL2FybS9tYWNoLXV4NTAwL2luY2x1ZGUvbWFjaC9kYjg1MDAtcmVncy5oCmluZGV4IDBmZWZiMzQuLjE2NjQ3YjIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtdXg1MDAvaW5jbHVkZS9tYWNoL2RiODUwMC1yZWdzLmgKKysrIGIvYXJjaC9hcm0vbWFjaC11eDUwMC9pbmNsdWRlL21hY2gvZGI4NTAwLXJlZ3MuaApAQCAtNTgsNyArNTgsNyBAQAogI2RlZmluZSBVODUwMF9HUElPMl9CQVNFCShVODUwMF9QRVIyX0JBU0UgKyAweEUwMDApCiAjZGVmaW5lIFU4NTAwX0dQSU8zX0JBU0UJKFU4NTAwX1BFUjVfQkFTRSArIDB4MUUwMDApCiAKLS8qIHBlcjcgYmFzZSBhZGRyZXNzZXNzICovCisvKiBwZXI3IGJhc2UgYWRkcmVzc2VzICovCiAjZGVmaW5lIFU4NTAwX0NSX0JBU0VfRUQJKFU4NTAwX1BFUjdfQkFTRV9FRCArIDB4ODAwMCkKICNkZWZpbmUgVTg1MDBfTVRVMF9CQVNFX0VECShVODUwMF9QRVI3X0JBU0VfRUQgKyAweGEwMDApCiAjZGVmaW5lIFU4NTAwX01UVTFfQkFTRV9FRAkoVTg1MDBfUEVSN19CQVNFX0VEICsgMHhiMDAwKQpAQCAtNjgsNyArNjgsNyBAQAogI2RlZmluZSBVODUwMF9VQVJUMF9CQVNFCShVODUwMF9QRVIxX0JBU0UgKyAweDAwMDApCiAjZGVmaW5lIFU4NTAwX1VBUlQxX0JBU0UJKFU4NTAwX1BFUjFfQkFTRSArIDB4MTAwMCkKIAotLyogcGVyNiBiYXNlIGFkZHJlc3Nlc3MgKi8KKy8qIHBlcjYgYmFzZSBhZGRyZXNzZXMgKi8KICNkZWZpbmUgVTg1MDBfUk5HX0JBU0UJCShVODUwMF9QRVI2X0JBU0UgKyAweDAwMDApCiAjZGVmaW5lIFU4NTAwX1BLQV9CQVNFCQkoVTg1MDBfUEVSNl9CQVNFICsgMHgxMDAwKQogI2RlZmluZSBVODUwMF9QS0FNX0JBU0UJCShVODUwMF9QRVI2X0JBU0UgKyAweDIwMDApCkBAIC03OSwxMSArNzksMTEgQEAKICNkZWZpbmUgVTg1MDBfQ1JZUFRPMV9CQVNFCShVODUwMF9QRVI2X0JBU0UgKyAweGIwMDApCiAjZGVmaW5lIFU4NTAwX0NMS1JTVDZfQkFTRQkoVTg1MDBfUEVSNl9CQVNFICsgMHhmMDAwKQogCi0vKiBwZXI1IGJhc2UgYWRkcmVzc2VzcyAqLworLyogcGVyNSBiYXNlIGFkZHJlc3NlcyAqLwogI2RlZmluZSBVODUwMF9VU0JPVEdfQkFTRQkoVTg1MDBfUEVSNV9CQVNFICsgMHgwMDAwMCkKICNkZWZpbmUgVTg1MDBfQ0xLUlNUNV9CQVNFCShVODUwMF9QRVI1X0JBU0UgKyAweDFmMDAwKQogCi0vKiBwZXI0IGJhc2UgYWRkcmVzc2VzcyAqLworLyogcGVyNCBiYXNlIGFkZHJlc3NlcyAqLwogI2RlZmluZSBVODUwMF9CQUNLVVBSQU0wX0JBU0UJKFU4NTAwX1BFUjRfQkFTRSArIDB4MDAwMDApCiAjZGVmaW5lIFU4NTAwX0JBQ0tVUFJBTTFfQkFTRQkoVTg1MDBfUEVSNF9CQVNFICsgMHgwMTAwMCkKICNkZWZpbmUgVTg1MDBfUlRUMF9CQVNFCQkoVTg1MDBfUEVSNF9CQVNFICsgMHgwMjAwMCkKQEAgLTEwNiw3ICsxMDYsNyBAQAogI2RlZmluZSBVODUwMF9TREk1X0JBU0UJCShVODUwMF9QRVIzX0JBU0UgKyAweDgwMDApCiAjZGVmaW5lIFU4NTAwX0NMS1JTVDNfQkFTRQkoVTg1MDBfUEVSM19CQVNFICsgMHhmMDAwKQogCi0vKiBwZXIyIGJhc2UgYWRkcmVzc2VzcyAqLworLyogcGVyMiBiYXNlIGFkZHJlc3NlcyAqLwogI2RlZmluZSBVODUwMF9JMkMzX0JBU0UJCShVODUwMF9QRVIyX0JBU0UgKyAweDAwMDApCiAjZGVmaW5lIFU4NTAwX1NQSTJfQkFTRQkJKFU4NTAwX1BFUjJfQkFTRSArIDB4MTAwMCkKICNkZWZpbmUgVTg1MDBfU1BJMV9CQVNFCQkoVTg1MDBfUEVSMl9CQVNFICsgMHgyMDAwKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vY2FjaGUtdjR3Yi5TIGIvYXJjaC9hcm0vbW0vY2FjaGUtdjR3Yi5TCmluZGV4IGQzNjQ0ZGIuLmY0MGM2OTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL2NhY2hlLXY0d2IuUworKysgYi9hcmNoL2FybS9tbS9jYWNoZS12NHdiLlMKQEAgLTMyLDcgKzMyLDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICoKICAqICBTaXplICBDbGVhbiAodGlja3MpIERpcnR5ICh0aWNrcykKICAqICAgNDA5NiAgIDIxICAyMCAgMjEgICAgNTMgIDU1ICA1NApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vY2FjaGUtdjR3dC5TIGIvYXJjaC9hcm0vbW0vY2FjaGUtdjR3dC5TCmluZGV4IDQ5YzJiNjYuLmE3YjI3NmQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL2NhY2hlLXY0d3QuUworKysgYi9hcmNoL2FybS9tbS9jYWNoZS12NHd0LlMKQEAgLTM0LDcgKzM0LDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICoKICAqICoqKiBUaGlzIG5lZWRzIGJlbmNobWFya2luZwogICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9jYWNoZS12Ny5TIGIvYXJjaC9hcm0vbW0vY2FjaGUtdjcuUwppbmRleCA2MTM2ZTY4Li5kYzE4ZDgxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9jYWNoZS12Ny5TCisrKyBiL2FyY2gvYXJtL21tL2NhY2hlLXY3LlMKQEAgLTk2LDcgKzk2LDcgQEAKICAqCUZsdXNoIHRoZSBlbnRpcmUgY2FjaGUgc3lzdGVtLgogICogIFRoZSBkYXRhIGNhY2hlIGZsdXNoIGlzIG5vdyBhY2hpZXZlZCB1c2luZyBhdG9taWMgY2xlYW4gLyBpbnZhbGlkYXRlcwogICogIHdvcmtpbmcgb3V0d2FyZHMgZnJvbSBMMSBjYWNoZS4gVGhpcyBpcyBkb25lIHVzaW5nIFNldC9XYXkgYmFzZWQgY2FjaGUKLSAqICBtYWludGFpbmFuY2UgaW5zdHJ1Y3Rpb25zLgorICogIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqICBUaGUgaW5zdHJ1Y3Rpb24gY2FjaGUgY2FuIHN0aWxsIGJlIGludmFsaWRhdGVkIGJhY2sgdG8gdGhlIHBvaW50IG9mCiAgKiAgdW5pZmljYXRpb24gaW4gYSBzaW5nbGUgaW5zdHJ1Y3Rpb24uCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwLlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjAuUwppbmRleCAyMjZlM2Q4Li42YzRlN2ZkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjAuUwpAQCAtNjQsNyArNjQsNyBAQAogLyoKICAqIFRoaXMgaXMgdGhlIHNpemUgYXQgd2hpY2ggaXQgYmVjb21lcyBtb3JlIGVmZmljaWVudCB0bwogICogY2xlYW4gdGhlIHdob2xlIGNhY2hlLCByYXRoZXIgdGhhbiB1c2luZyB0aGUgaW5kaXZpZHVhbAotICogY2FjaGUgbGluZSBtYWludGFpbmVuY2UgaW5zdHJ1Y3Rpb25zLgorICogY2FjaGUgbGluZSBtYWludGVuYW5jZSBpbnN0cnVjdGlvbnMuCiAgKi8KICNkZWZpbmUgQ0FDSEVfRExJTUlUCTMyNzY4CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMGUuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMGUuUwppbmRleCA4NmQ5YzJjLi40Y2U5NDdjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjBlLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwZS5TCkBAIC02NCw3ICs2NCw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqLwogI2RlZmluZSBDQUNIRV9ETElNSVQJMzI3NjgKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIyLlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjIuUwppbmRleCA4M2QzZGQzLi5jODg4NGM1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjIuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjIuUwpAQCAtNTMsNyArNTMsNyBAQAogLyoKICAqIFRoaXMgaXMgdGhlIHNpemUgYXQgd2hpY2ggaXQgYmVjb21lcyBtb3JlIGVmZmljaWVudCB0bwogICogY2xlYW4gdGhlIHdob2xlIGNhY2hlLCByYXRoZXIgdGhhbiB1c2luZyB0aGUgaW5kaXZpZHVhbAotICogY2FjaGUgbGluZSBtYWludGFpbmVuY2UgaW5zdHJ1Y3Rpb25zLgorICogY2FjaGUgbGluZSBtYWludGVuYW5jZSBpbnN0cnVjdGlvbnMuCiAgKi8KICNkZWZpbmUgQ0FDSEVfRExJTUlUCTMyNzY4CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyNi5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDI2LlMKaW5kZXggNjg2MDQzZS4uNDEzNjg0NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDI2LlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDI2LlMKQEAgLTUzLDcgKzUzLDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICovCiAjZGVmaW5lIENBQ0hFX0RMSU1JVAkzMjc2OAogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTcyMC5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm03MjAuUwppbmRleCA2NjUyNjZkLi43YTA2ZTU5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTcyMC5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtNzIwLlMKQEAgLTYzLDcgKzYzLDcgQEAKIC8qCiAgKiBGdW5jdGlvbjogYXJtNzIwX3Byb2NfZG9faWRsZSh2b2lkKQogICogUGFyYW1zICA6IHIwID0gdW51c2VkCi0gKiBQdXJwb3NlIDogcHV0IHRoZSBwcm9jZXNzZXIgaW4gcHJvcGVyIGlkbGUgbW9kZQorICogUHVycG9zZSA6IHB1dCB0aGUgcHJvY2Vzc29yIGluIHByb3BlciBpZGxlIG1vZGUKICAqLwogRU5UUlkoY3B1X2FybTcyMF9kb19pZGxlKQogCQltb3YJcGMsIGxyCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyMC5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjAuUwppbmRleCAyMTk5ODBlLi5iNDZlYjIxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyMC5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIwLlMKQEAgLTUzLDcgKzUzLDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICovCiAjZGVmaW5lIENBQ0hFX0RMSU1JVAk2NTUzNgogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyMi5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjIuUwppbmRleCAzNjE1NGIxLi45NWJhMWZjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyMi5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIyLlMKQEAgLTU0LDcgKzU0LDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4gIChJIHRoaW5rIHRoaXMgc2hvdWxkCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4gIChJIHRoaW5rIHRoaXMgc2hvdWxkCiAgKiBiZSAzMjc2OCkuCiAgKi8KICNkZWZpbmUgQ0FDSEVfRExJTUlUCTgxOTIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtOTI1LlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTkyNS5TCmluZGV4IDg5YzVlMDAwLi41NDFlNDc3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyNS5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTI1LlMKQEAgLTc3LDcgKzc3LDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICovCiAjZGVmaW5lIENBQ0hFX0RMSU1JVAk4MTkyCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtbWFjcm9zLlMgYi9hcmNoL2FybS9tbS9wcm9jLW1hY3Jvcy5TCmluZGV4IGUzMmZhNDkuLjM0MjYxZjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MtbWFjcm9zLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1tYWNyb3MuUwpAQCAtODUsNyArODUsNyBAQAogCiAvKgogICogU2FuaXR5IGNoZWNrIHRoZSBQVEUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvZGUgYmVsb3cgLSB3aGljaCBtYWtlcwotICogY2VydGFpbiBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlc2UgYml0cyBhcmUgbGF5ZWQgb3V0LgorICogY2VydGFpbiBhc3N1bXB0aW9ucyBhYm91dCBob3cgdGhlc2UgYml0cyBhcmUgbGFpZCBvdXQuCiAgKi8KICNpZmRlZiBDT05GSUdfTU1VCiAjaWYgTF9QVEVfU0hBUkVEICE9IFBURV9FWFRfU0hBUkVECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLXY2LlMgYi9hcmNoL2FybS9tbS9wcm9jLXY2LlMKaW5kZXggODMyYjZiZC4uYmZhMGM5ZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy12Ni5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtdjYuUwpAQCAtMTMyLDcgKzEzMiw3IEBACiAJbXJjCXAxNSwgMCwgcjYsIGMzLCBjMCwgMAlAIERvbWFpbiBJRAogCW1yYwlwMTUsIDAsIHI3LCBjMiwgYzAsIDAJQCBUcmFuc2xhdGlvbiB0YWJsZSBiYXNlIDAKIAltcmMJcDE1LCAwLCByOCwgYzIsIGMwLCAxCUAgVHJhbnNsYXRpb24gdGFibGUgYmFzZSAxCi0JbXJjCXAxNSwgMCwgcjksIGMxLCBjMCwgMQlAIGF1eGlsbGFyeSBjb250cm9sIHJlZ2lzdGVyCisJbXJjCXAxNSwgMCwgcjksIGMxLCBjMCwgMQlAIGF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyCiAJbXJjCXAxNSwgMCwgcjEwLCBjMSwgYzAsIDIJQCBjby1wcm9jZXNzb3IgYWNjZXNzIGNvbnRyb2wKIAltcmMJcDE1LCAwLCByMTEsIGMxLCBjMCwgMAlAIGNvbnRyb2wgcmVnaXN0ZXIKIAlzdG1pYQlyMCwge3I0IC0gcjExfQpAQCAtMTUxLDcgKzE1MSw3IEBACiAJbWNyCXAxNSwgMCwgcjYsIGMzLCBjMCwgMAlAIERvbWFpbiBJRAogCW1jcglwMTUsIDAsIHI3LCBjMiwgYzAsIDAJQCBUcmFuc2xhdGlvbiB0YWJsZSBiYXNlIDAKIAltY3IJcDE1LCAwLCByOCwgYzIsIGMwLCAxCUAgVHJhbnNsYXRpb24gdGFibGUgYmFzZSAxCi0JbWNyCXAxNSwgMCwgcjksIGMxLCBjMCwgMQlAIGF1eGlsbGFyeSBjb250cm9sIHJlZ2lzdGVyCisJbWNyCXAxNSwgMCwgcjksIGMxLCBjMCwgMQlAIGF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyCiAJbWNyCXAxNSwgMCwgcjEwLCBjMSwgYzAsIDIJQCBjby1wcm9jZXNzb3IgYWNjZXNzIGNvbnRyb2wKIAltY3IJcDE1LCAwLCBpcCwgYzIsIGMwLCAyCUAgVFRCIGNvbnRyb2wgcmVnaXN0ZXIKIAltY3IJcDE1LCAwLCBpcCwgYzcsIGM1LCA0CUAgSVNCCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLXY3LlMgYi9hcmNoL2FybS9tbS9wcm9jLXY3LlMKaW5kZXggMjYyZmE4OC4uYzM1NjE4ZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy12Ny5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtdjcuUwpAQCAtMjM3LDcgKzIzNyw3IEBACiAJbWNyCXAxNSwgMCwgcjcsIGMyLCBjMCwgMAlAIFRUQiAwCiAJbWNyCXAxNSwgMCwgcjgsIGMyLCBjMCwgMQlAIFRUQiAxCiAJbWNyCXAxNSwgMCwgaXAsIGMyLCBjMCwgMglAIFRUQiBjb250cm9sIHJlZ2lzdGVyCi0JbWNyCXAxNSwgMCwgcjEwLCBjMSwgYzAsIDEJQCBBdXhpbGxhcnkgY29udHJvbCByZWdpc3RlcgorCW1jcglwMTUsIDAsIHIxMCwgYzEsIGMwLCAxCUAgQXV4aWxpYXJ5IGNvbnRyb2wgcmVnaXN0ZXIKIAltY3IJcDE1LCAwLCByMTEsIGMxLCBjMCwgMglAIENvLXByb2Nlc3NvciBhY2Nlc3MgY29udHJvbAogCWxkcglyNCwgPVBSUlIJCUAgUFJSUgogCWxkcglyNSwgPU5NUlIJCUAgTk1SUgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1teGMvY3B1ZnJlcS5jIGIvYXJjaC9hcm0vcGxhdC1teGMvY3B1ZnJlcS5jCmluZGV4IGNlODE0ODEuLjQyNjhhMmIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtbXhjL2NwdWZyZXEuYworKysgYi9hcmNoL2FybS9wbGF0LW14Yy9jcHVmcmVxLmMKQEAgLTEzLDcgKzEzLDcgQEAKIAogLyoKICAqIEEgZHJpdmVyIGZvciB0aGUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgaS5NWEMgQ1BVZnJlcSBtb2R1bGUuCi0gKiBUaGUgQ1BVRlJFUSBkcml2ZXIgaXMgZm9yIGNvbnRyb2xpbmcgQ1BVIGZyZXF1ZW5jeS4gSXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UKKyAqIFRoZSBDUFVGUkVRIGRyaXZlciBpcyBmb3IgY29udHJvbGxpbmcgQ1BVIGZyZXF1ZW5jeS4gSXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UKICAqIHRoZSBDUFUgY2xvY2sgc3BlZWQgb24gdGhlIGZseS4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvZW50cnktbWFjcm8uUyBiL2FyY2gvYXJtL3BsYXQtbXhjL2luY2x1ZGUvbWFjaC9lbnRyeS1tYWNyby5TCmluZGV4IGJkOWJiOTcuLjJlNDllNzEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtbXhjL2luY2x1ZGUvbWFjaC9lbnRyeS1tYWNyby5TCisrKyBiL2FyY2gvYXJtL3BsYXQtbXhjL2luY2x1ZGUvbWFjaC9lbnRyeS1tYWNyby5TCkBAIC0zMyw5ICszMyw5IEBACiAJLm1hY3JvICBhcmNoX3JldF90b191c2VyLCB0bXAxLCB0bXAyCiAJLmVuZG0KIAotCUAgdGhpcyBtYWNybyBjaGVja3Mgd2hpY2ggaW50ZXJydXB0IG9jY3VyZWQKKwlAIHRoaXMgbWFjcm8gY2hlY2tzIHdoaWNoIGludGVycnVwdCBvY2N1cnJlZAogCUAgYW5kIHJldHVybnMgaXRzIG51bWJlciBpbiBpcnFucgotCUAgYW5kIHJldHVybnMgaWYgYW4gaW50ZXJydXB0IG9jY3VyZWQgaW4gaXJxc3RhdAorCUAgYW5kIHJldHVybnMgaWYgYW4gaW50ZXJydXB0IG9jY3VycmVkIGluIGlycXN0YXQKIAkubWFjcm8JZ2V0X2lycW5yX2FuZF9iYXNlLCBpcnFuciwgaXJxc3RhdCwgYmFzZSwgdG1wCiAjaWZuZGVmIENPTkZJR19NWENfVFpJQwogCUAgTG9hZCBvZmZzZXQgJiBwcmlvcml0eSBvZiB0aGUgaGlnaGVzdCBwcmlvcml0eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1teGMvaW5jbHVkZS9tYWNoL214Y19uYW5kLmggYi9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvbXhjX25hbmQuaAppbmRleCAwNGMwZDA2Li42YmI5NmVmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvbXhjX25hbmQuaAorKysgYi9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvbXhjX25hbmQuaApAQCAtMjQsNyArMjQsNyBAQAogCiBzdHJ1Y3QgbXhjX25hbmRfcGxhdGZvcm1fZGF0YSB7CiAJdW5zaWduZWQgaW50IHdpZHRoOwkvKiBkYXRhIGJ1cyB3aWR0aCBpbiBieXRlcyAqLwotCXVuc2lnbmVkIGludCBod19lY2M6MTsJLyogMCBpZiBzdXByZXNzIGhhcmR3YXJlIEVDQyAqLworCXVuc2lnbmVkIGludCBod19lY2M6MTsJLyogMCBpZiBzdXBwcmVzcyBoYXJkd2FyZSBFQ0MgKi8KIAl1bnNpZ25lZCBpbnQgZmxhc2hfYmJ0OjE7IC8qIHNldCB0byAxIHRvIHVzZSBhIGZsYXNoIGJhc2VkIGJidCAqLwogCXN0cnVjdCBtdGRfcGFydGl0aW9uICpwYXJ0czsJLyogcGFydGl0aW9uIHRhYmxlICovCiAJaW50IG5yX3BhcnRzOwkJCS8qIHNpemUgb2YgcGFydHMgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9kZXZpY2VzLmMgYi9hcmNoL2FybS9wbGF0LW9tYXAvZGV2aWNlcy5jCmluZGV4IDdkOWY4MTUuLmVhMjhmOTggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9kZXZpY2VzLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RldmljZXMuYwpAQCAtMjgwLDcgKzI4MCw3IEBACiAgKiBDbGFpbWluZyBHUElPcywgYW5kIHNldHRpbmcgdGhlaXIgZGlyZWN0aW9uIGFuZCBpbml0aWFsIHZhbHVlcywgaXMgdGhlCiAgKiByZXNwb25zaWJpbGl0eSBvZiB0aGUgZGV2aWNlIGRyaXZlcnMuICBTbyBpcyByZXNwb25kaW5nIHRvIHByb2JlKCkuCiAgKgotICogQm9hcmQtc3BlY2lmaWMga25vd2xlZ2UgbGlrZSBjcmVhdGluZyBkZXZpY2VzIG9yIHBpbiBzZXR1cCBpcyB0byBiZQorICogQm9hcmQtc3BlY2lmaWMga25vd2xlZGdlIGxpa2UgY3JlYXRpbmcgZGV2aWNlcyBvciBwaW4gc2V0dXAgaXMgdG8gYmUKICAqIGtlcHQgb3V0IG9mIGRyaXZlcnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEluIHBhcnRpY3VsYXIsIHBpbiBzZXR1cAogICogbWF5IGJlIGhhbmRsZWQgYnkgdGhlIGJvb3QgbG9hZGVyLCBhbmQgZHJpdmVycyBzaG91bGQgZXhwZWN0IGl0IHdpbGwKICAqIG5vcm1hbGx5IGhhdmUgYmVlbiBkb25lIGJ5IHRoZSB0aW1lIHRoZXkncmUgcHJvYmVkLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jCmluZGV4IDJlYzNiNWQuLmMyMjIxN2MgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvZG1hLmMKQEAgLTEwMTksNyArMTAxOSw3IEBACiAgKiBJZiB0aGUgY2hhbm5lbCBpcyBydW5uaW5nIHRoZSBjYWxsZXIgbXVzdCBkaXNhYmxlIGludGVycnVwdHMgcHJpb3IgY2FsbGluZwogICogdGhpcyBmdW5jdGlvbiBhbmQgcHJvY2VzcyB0aGUgcmV0dXJuZWQgdmFsdWUgYmVmb3JlIHJlLWVuYWJsaW5nIGludGVycnVwdCB0bwogICogcHJldmVudCByYWNlcyB3aXRoIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gTm90ZSB0aGF0IGluIGNvbnRpbnVvdXMgbW9kZSB0aGVyZQotICogaXMgYSBjaGFuY2UgZm9yIENTU0FfTCByZWdpc3RlciBvdmVyZmxvdyBpbmJldHdlZW4gdGhlIHR3byByZWFkcyByZXN1bHRpbmcKKyAqIGlzIGEgY2hhbmNlIGZvciBDU1NBX0wgcmVnaXN0ZXIgb3ZlcmZsb3cgYmV0d2VlbiB0aGUgdHdvIHJlYWRzIHJlc3VsdGluZwogICogaW4gaW5jb3JyZWN0IHJldHVybiB2YWx1ZS4KICAqLwogZG1hX2FkZHJfdCBvbWFwX2dldF9kbWFfc3JjX3BvcyhpbnQgbGNoKQpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAKICAqIElmIHRoZSBjaGFubmVsIGlzIHJ1bm5pbmcgdGhlIGNhbGxlciBtdXN0IGRpc2FibGUgaW50ZXJydXB0cyBwcmlvciBjYWxsaW5nCiAgKiB0aGlzIGZ1bmN0aW9uIGFuZCBwcm9jZXNzIHRoZSByZXR1cm5lZCB2YWx1ZSBiZWZvcmUgcmUtZW5hYmxpbmcgaW50ZXJydXB0IHRvCiAgKiBwcmV2ZW50IHJhY2VzIHdpdGggdGhlIGludGVycnVwdCBoYW5kbGVyLiBOb3RlIHRoYXQgaW4gY29udGludW91cyBtb2RlIHRoZXJlCi0gKiBpcyBhIGNoYW5jZSBmb3IgQ0RTQV9MIHJlZ2lzdGVyIG92ZXJmbG93IGluYmV0d2VlbiB0aGUgdHdvIHJlYWRzIHJlc3VsdGluZworICogaXMgYSBjaGFuY2UgZm9yIENEU0FfTCByZWdpc3RlciBvdmVyZmxvdyBiZXR3ZWVuIHRoZSB0d28gcmVhZHMgcmVzdWx0aW5nCiAgKiBpbiBpbmNvcnJlY3QgcmV0dXJuIHZhbHVlLgogICovCiBkbWFfYWRkcl90IG9tYXBfZ2V0X2RtYV9kc3RfcG9zKGludCBsY2gpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwaW8uaCBiL2FyY2gvYXJtL3BsYXQtb21hcC9pbmNsdWRlL3BsYXQvZ3Bpby5oCmluZGV4IGQ2ZjlmYTBmLi5jYWMyZThhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwaW8uaAorKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwaW8uaApAQCAtOTMsNyArOTMsNyBAQAogLyogV3JhcHBlcnMgZm9yICJuZXcgc3R5bGUiIEdQSU8gY2FsbHMsIHVzaW5nIHRoZSBuZXcgaW5mcmFzdHJ1Y3R1cmUKICAqIHdoaWNoIGxldHMgdXMgcGx1ZyBpbiBGUEdBLCBJMkMsIGFuZCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCiAgKiAqCi0gKiBUaGUgb3JpZ2luYWwgT01BUC1zcGVjZmljIGNhbGxzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuCisgKiBUaGUgb3JpZ2luYWwgT01BUC1zcGVjaWZpYyBjYWxscyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLgogICovCiAKICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncG1jLmggYi9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwbWMuaAppbmRleCAxMmIzMTYxLi4xNTI3OTI5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwbWMuaAorKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwbWMuaApAQCAtOTAsNyArOTAsNyBAQAogCQkvKiAxLWJpdCBlY2M6IHN0b3JlZCBhdCBlbmQgb2Ygc3BhcmUgYXJlYSAqLwogCU9NQVBfRUNDX0hBTU1JTkdfQ09ERV9ERUZBVUxUID0gMCwgLyogRGVmYXVsdCwgcy93IG1ldGhvZCAqLwogCU9NQVBfRUNDX0hBTU1JTkdfQ09ERV9IVywgLyogZ3BtYyB0byBkZXRlY3QgdGhlIGVycm9yICovCi0JCS8qIDEtYml0IGVjYzogc3RvcmVkIGF0IGJlZ2luaW5nIG9mIHNwYXJlIGFyZWEgYXMgcm9tY29kZSAqLworCQkvKiAxLWJpdCBlY2M6IHN0b3JlZCBhdCBiZWdpbm5pbmcgb2Ygc3BhcmUgYXJlYSBhcyByb21jb2RlICovCiAJT01BUF9FQ0NfSEFNTUlOR19DT0RFX0hXX1JPTUNPREUsIC8qIGdwbWMgbWV0aG9kICYgcm9tY29kZSBsYXlvdXQgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9tY2JzcC5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL21jYnNwLmMKaW5kZXggZDU5OGQ5Zi4uNTU4N2FjZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL21jYnNwLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL21jYnNwLmMKQEAgLTExMDMsNyArMTEwMyw3IEBACiAJCS8qIHJlc2VuZCAqLwogCQlyZXR1cm4gLTE7CiAJfSBlbHNlIHsKLQkJLyogd2FpdCBmb3IgcmVjaWV2ZSBjb25maXJtYXRpb24gKi8KKwkJLyogd2FpdCBmb3IgcmVjZWl2ZSBjb25maXJtYXRpb24gKi8KIAkJaW50IGF0dGVtcHMgPSAwOwogCQl3aGlsZSAoIShNQ0JTUF9SRUFEKG1jYnNwLCBTUENSMSkgJiBSUkRZKSkgewogCQkJaWYgKGF0dGVtcHMrKyA+IDEwMDApIHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9tZnAuaCBiL2FyY2gvYXJtL3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9tZnAuaAppbmRleCA3NWY2NTY0Li44OWU2OGUwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvbWZwLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVkZS9wbGF0L21mcC5oCkBAIC00MzQsNyArNDM0LDcgQEAKICAqCiAgKiBtZnBfaW5pdF9hZGRyKCkgLSBhY2NlcHRzIGEgdGFibGUgb2YgIm1mcF9hZGRyX21hcCIgc3RydWN0dXJlLCB3aGljaAogICogcmVwcmVzZW50cyBhIHJhbmdlIG9mIE1GUCBwaW5zIGZyb20gInN0YXJ0IiB0byAiZW5kIiwgd2l0aCB0aGUgb2Zmc2V0Ci0gKiBiZWdpbmluZyBhdCAib2Zmc2V0IiwgdG8gZGVmaW5lIGEgc2luZ2xlIHBpbiwgbGV0ICJlbmQiID0gLTEuCisgKiBiZWdpbm5pbmcgYXQgIm9mZnNldCIsIHRvIGRlZmluZSBhIHNpbmdsZSBwaW4sIGxldCAiZW5kIiA9IC0xLgogICoKICAqIHVzZQogICoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9NYWtlZmlsZSBiL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9NYWtlZmlsZQppbmRleCBjMjA2NGMzLi4wMjkxYmQ2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXMzYzI0eHgvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L01ha2VmaWxlCkBAIC0yMyw3ICsyMyw3IEBACiBvYmotJChDT05GSUdfQ1BVX0ZSRVFfUzNDMjRYWCkJKz0gY3B1LWZyZXEubwogb2JqLSQoQ09ORklHX0NQVV9GUkVRX1MzQzI0WFhfREVCVUdGUykgKz0gY3B1LWZyZXEtZGVidWdmcy5vCiAKLSMgQXJjaGl0ZWN0dXJlIGRlcGVuZGFudCBidWlsZHMKKyMgQXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBidWlsZHMKIAogb2JqLSQoQ09ORklHX1BNX1NJTVRFQykJCSs9IHBtLXNpbXRlYy5vCiBvYmotJChDT05GSUdfUE0pCQkrPSBwbS5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXMzYzI0eHgvY3B1LWZyZXEuYyBiL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9jcHUtZnJlcS5jCmluZGV4IGVlYTc1ZmYuLmIzZDNkMDIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9jcHUtZnJlcS5jCisrKyBiL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9jcHUtZnJlcS5jCkBAIC00NTUsNyArNDU1LDcgQEAKIAogCS8qIHdoaWxzdCB3ZSB3aWxsIGJlIGNhbGxlZCBsYXRlciBvbiwgd2UgdHJ5IGFuZCByZS1zZXQgdGhlCiAJICogY3B1IGZyZXF1ZW5jaWVzIGFzIHNvb24gYXMgcG9zc2libGUgc28gdGhhdCB3ZSBkbyBub3QgZW5kCi0JICogdXAgcmVzdW1pbmcgZGV2aWNlcyBhbmQgdGhlbiBpbW1lZGlhdGxleSBoYXZpbmcgdG8gcmUtc2V0CisJICogdXAgcmVzdW1pbmcgZGV2aWNlcyBhbmQgdGhlbiBpbW1lZGlhdGVseSBoYXZpbmcgdG8gcmUtc2V0CiAJICogYSBudW1iZXIgb2Ygc2V0dGluZ3Mgb25jZSB0aGVzZSBkZXZpY2VzIGhhdmUgcmVzdGFydGVkLgogCSAqCiAJICogYXMgYSBub3RlLCBpdCBpcyBleHBlY3RlZCBkZXZpY2VzIGFyZSBub3QgdXNlZCB1bnRpbCB0aGV5CmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXMzYzI0eHgvZG1hLmMgYi9hcmNoL2FybS9wbGF0LXMzYzI0eHgvZG1hLmMKaW5kZXggNmFkMjc0ZS4uMjdlYTg1MiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L2RtYS5jCisrKyBiL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9kbWEuYwpAQCAtNTU3LDcgKzU1Nyw3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBTM0MyNDEwX0RNQUxPQURfMUxPQURFRF8xUlVOTklORzoKLQkJLyogSSBiZWxpdmUgaW4gdGhpcyBjYXNlIHdlIGRvIG5vdCBoYXZlIGFueXRoaW5nIHRvIGRvCisJCS8qIEkgYmVsaWV2ZSBpbiB0aGlzIGNhc2Ugd2UgZG8gbm90IGhhdmUgYW55dGhpbmcgdG8gZG8KIAkJICogdW50aWwgdGhlIG5leHQgYnVmZmVyIGNvbWVzIGFsb25nLCBhbmQgd2UgdHVybiBvZmYgdGhlCiAJCSAqIHJlbG9hZCAqLwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXM1cC9pcnEtZ3Bpb2ludC5jIGIvYXJjaC9hcm0vcGxhdC1zNXAvaXJxLWdwaW9pbnQuYwppbmRleCA0NmRkMDc4Li5jZDZkNjdjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXM1cC9pcnEtZ3Bpb2ludC5jCisrKyBiL2FyY2gvYXJtL3BsYXQtczVwL2lycS1ncGlvaW50LmMKQEAgLTIwOCw3ICsyMDgsNyBAQAogCX0KIAogCS8qCi0JICogY2hhaW5lZCBHUElPIGlycSBoYXMgYmVlbiBzdWNlc3NmdWxseSByZWdpc3RlcmVkLCBhbGxvY2F0ZSBuZXcgZ3BpbworCSAqIGNoYWluZWQgR1BJTyBpcnEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQsIGFsbG9jYXRlIG5ldyBncGlvCiAJICogaW50IGdyb3VwIGFuZCBhc3NpZ24gaXJxIG51Ym1lcnMKIAkgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9jbG9jay5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9jbG9jay5oCmluZGV4IDlhODJiODguLjk4M2M1NzggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvY2xvY2suaAorKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2Nsb2NrLmgKQEAgLTIxLDcgKzIxLDcgQEAKICAqIEBzZXRfcGFyZW50OiBzZXQgdGhlIGNsb2NrJ3MgcGFyZW50LCBzZWUgY2xrX3NldF9wYXJlbnQoKS4KICAqCiAgKiBHcm91cCB0aGUgY29tbW9uIGNsb2NrIGltcGxlbWVudGF0aW9ucyB0b2dldGhlciBzbyB0aGF0IHdlCi0gKiBkb24ndCBoYXZlIHRvIGtlZXAgc2V0dGluZyB0aGUgc2FtZSBmaWVscyBhZ2Fpbi4gV2UgbGVhdmUKKyAqIGRvbid0IGhhdmUgdG8ga2VlcCBzZXR0aW5nIHRoZSBzYW1lIGZpZWxkcyBhZ2Fpbi4gV2UgbGVhdmUKICAqIGVuYWJsZSBpbiBzdHJ1Y3QgY2xrLgogICoKICAqIEFkZGluZyBhbiBleHRyYSBsYXllciBvZiBpbmRpcmVjdGlvbiBpbnRvIHRoZSBwcm9jZXNzIHNob3VsZApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNmZy1oZWxwZXJzLmggYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLWhlbHBlcnMuaAppbmRleCA1NjAzZGIwLi4zYWQ4Mzg2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLWhlbHBlcnMuaAorKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLWhlbHBlcnMuaApAQCAtMTE0LDcgKzExNCw3IEBACiAgKiBvZiBjb250cm9sIHBlciBHUElPLCBnZW5lcmFsbHkgaW4gdGhlIGZvcm0gb2Y6CiAgKgkwMDAwID0gSW5wdXQKICAqCTAwMDEgPSBPdXRwdXQKLSAqCW90aGVycyA9IFNwZWNpYWwgZnVuY3Rpb25zIChkZXBlbmRhbnQgb24gYmFuaykKKyAqCW90aGVycyA9IFNwZWNpYWwgZnVuY3Rpb25zIChkZXBlbmRlbnQgb24gYmFuaykKICAqCiAgKiBOb3RlLCBzaW5jZSB0aGUgY29kZSB0byBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlcmUgYXJlIHR3byBjb250cm9sCiAgKiByZWdpc3RlcnMgaW5zdGVhZCBvZiBvbmUsIHdlIGRvIG5vdCBoYXZlIGEgc2VwYXJhdGUgc2V0IG9mIGZ1bmN0aW9ucyBmb3IKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jZmcuaCBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jZmcuaAppbmRleCA1ZTA0ZmE2Li4xNzYyZGNiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNmZy5oCkBAIC0xMjUsNyArMTI1LDcgQEAKICAqCiAgKiBUaGVzZSB2YWx1ZXMgY29udHJvbCB0aGUgc3RhdGUgb2YgdGhlIHdlYWsgcHVsbC17dXAsZG93bn0gcmVzaXN0b3JzCiAgKiBhdmFpbGFibGUgb24gbW9zdCBwaW5zIG9uIHRoZSBTM0Mgc2VyaWVzLiBOb3QgYWxsIGNoaXBzIHN1cHBvcnQgYm90aAotICogdXAgb3IgZG93biBzZXR0aW5ncywgYW5kIGl0IG1heSBiZSBkZXBlbmRhbnQgb24gdGhlIGNoaXAgdGhhdCBpcyBiZWluZworICogdXAgb3IgZG93biBzZXR0aW5ncywgYW5kIGl0IG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIGNoaXAgdGhhdCBpcyBiZWluZwogICogdXNlZCB0byB3aGV0aGVyIHRoZSBwYXJ0aWN1bGFyIG1vZGUgaXMgYXZhaWxhYmxlLgogICovCiAjZGVmaW5lIFMzQ19HUElPX1BVTExfTk9ORQkoKF9fZm9yY2UgczNjX2dwaW9fcHVsbF90KTB4MDApCkBAIC0xMzgsNyArMTM4LDcgQEAKICAqIEBwdWxsOiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHB1bGwgcmVzaXN0b3IuCiAgKgogICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgcHVsbC17dXAsZG93bn0gcmVzaXN0b3IgZm9yIHRoZQotICogc3BlY2lmaWVkIHBpbi4gSXQgd2lsbCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsbCwgb3IgYSBuZWdhdGl2ZSBlcnJvcgorICogc3BlY2lmaWVkIHBpbi4gSXQgd2lsbCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvciBhIG5lZ2F0aXZlIGVycm9yCiAgKiBjb2RlIGlmIHRoZSBwaW4gY2Fubm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBwdWxsIHNldHRpbmcuCiAgKgogICogQHB1bGwgaXMgb25lIG9mIFMzQ19HUElPX1BVTExfTk9ORSwgUzNDX0dQSU9fUFVMTF9ET1dOIG9yIFMzQ19HUElPX1BVTExfVVAuCkBAIC0yMDIsNyArMjAyLDcgQEAKICAqIEBkcnZzdHI6IFRoZSBuZXcgdmFsdWUgb2YgdGhlIGRyaXZlciBzdHJlbmd0aAogICoKICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgZHJpdmVyIHN0cmVuZ3RoIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIHBpbi4KLSAqIEl0IHdpbGwgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bGwsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiB0aGUgcGluCisgKiBJdCB3aWxsIHJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiB0aGUgcGluCiAgKiBjYW5ub3Qgc3VwcG9ydCB0aGUgcmVxdWVzdGVkIHNldHRpbmcuCiAqLwogZXh0ZXJuIGludCBzNXBfZ3Bpb19zZXRfZHJ2c3RyKHVuc2lnbmVkIGludCBwaW4sIHM1cF9ncGlvX2RydnN0cl90IGRydnN0cik7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY29yZS5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNvcmUuaAppbmRleCBkYWMzNWQwLi44Y2FkNGNmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY29yZS5oCisrKyBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jb3JlLmgKQEAgLTEwOCw3ICsxMDgsNyBAQAogICogb2YgY29udHJvbCBwZXIgR1BJTywgZ2VuZXJhbGx5IGluIHRoZSBmb3JtIG9mOgogICogMDAwMCA9IElucHV0CiAgKiAwMDAxID0gT3V0cHV0Ci0gKiBvdGhlcnMgPSBTcGVjaWFsIGZ1bmN0aW9ucyAoZGVwZW5kYW50IG9uIGJhbmspCisgKiBvdGhlcnMgPSBTcGVjaWFsIGZ1bmN0aW9ucyAoZGVwZW5kZW50IG9uIGJhbmspCiAgKgogICogTm90ZSwgc2luY2UgdGhlIGNvZGUgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSB0d28gY29udHJvbAogICogcmVnaXN0ZXJzIGluc3RlYWQgb2Ygb25lLCB3ZSBkbyBub3QgaGF2ZSBhIHNlcGFyYXRlIHNldCBvZiBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9zZGhjaS5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9zZGhjaS5oCmluZGV4IGIwYmRmMTYuLjA1OGUwOTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvc2RoY2kuaAorKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3NkaGNpLmgKQEAgLTU3LDcgKzU3LDcgQEAKICAqIEBjZmdfZ3BpbzogQ29uZmlndXJlIHRoZSBHUElPIGZvciBhIHNwZWNpZmljIGNhcmQgYml0LXdpZHRoCiAgKiBAY2ZnX2NhcmQ6IENvbmZpZ3VyZSB0aGUgaW50ZXJmYWNlIGZvciBhIHNwZWNpZmljIGNhcmQgYW5kIHNwZWVkLiBUaGlzCiAgKiAgICAgICAgICAgIGlzIG5lY2Vzc2FyeSB0aGUgY29udHJvbGxlcnMgYW5kL29yIEdQSU8gYmxvY2tzIHJlcXVpcmUgdGhlCi0gKgkgICAgICBjaGFuZ2luZyBvZiBkcml2ZXItc3RyZW5ndGggYW5kIG90aGVyIGNvbnRyb2xzIGRlcGVuZGFudCBvbgorICoJICAgICAgY2hhbmdpbmcgb2YgZHJpdmVyLXN0cmVuZ3RoIGFuZCBvdGhlciBjb250cm9scyBkZXBlbmRlbnQgb24KICAqCSAgICAgIHRoZSBjYXJkIGFuZCBzcGVlZCBvZiBvcGVyYXRpb24uCiAgKgogICogSW5pdGlhbGlzYXRpb24gZGF0YSBzcGVjaWZpYyB0byBlaXRoZXIgdGhlIG1hY2hpbmUgb3IgdGhlIHBsYXRmb3JtCkBAIC0xMDgsNyArMTA4LDcgQEAKIGV4dGVybiBzdHJ1Y3QgczNjX3NkaGNpX3BsYXRkYXRhIHMzY19oc21tYzJfZGVmX3BsYXRkYXRhOwogZXh0ZXJuIHN0cnVjdCBzM2Nfc2RoY2lfcGxhdGRhdGEgczNjX2hzbW1jM19kZWZfcGxhdGRhdGE7CiAKLS8qIEhlbHBlciBmdW5jdGlvbiBhdmFpbGFibGl0eSAqLworLyogSGVscGVyIGZ1bmN0aW9uIGF2YWlsYWJpbGl0eSAqLwogCiBleHRlcm4gdm9pZCBzM2MyNDE2X3NldHVwX3NkaGNpMF9jZmdfZ3BpbyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIGludCB3KTsKIGV4dGVybiB2b2lkIHMzYzI0MTZfc2V0dXBfc2RoY2kxX2NmZ19ncGlvKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKiwgaW50IHcpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL3MzYy1wbDMzMC5jIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL3MzYy1wbDMzMC5jCmluZGV4IGI0ZmY4ZDcuLmY4NTYzOGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9zM2MtcGwzMzAuYworKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvczNjLXBsMzMwLmMKQEAgLTY4LDcgKzY4LDcgQEAKICAqIEByZXE6IFR3byByZXF1ZXN0cyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBQTDMzMCBlbmdpbmUuCiAgKiBAY2FsbGJhY2tfZm46IENhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBjbGllbnQuCiAgKiBAcnFjZmc6IENoYW5uZWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHhmZXJzLgotICogQHhmZXJfaGVhZDogUG9pbnRlciB0byB0aGUgeGZlciB0byBiZSBuZXh0IGV4Y2VjdXRlZC4KKyAqIEB4ZmVyX2hlYWQ6IFBvaW50ZXIgdG8gdGhlIHhmZXIgdG8gYmUgbmV4dCBleGVjdXRlZC4KICAqIEBkbWFjOiBQb2ludGVyIHRvIHRoZSBETUFDIHRoYXQgbWFuYWdlcyB0aGlzIGNoYW5uZWwsIE5VTEwgaWYgdGhlCiAgKiAJY2hhbm5lbCBpcyBhdmFpbGFibGUgdG8gYmUgYWNxdWlyZWQuCiAgKiBAY2xpZW50OiBDbGllbnQgb2YgdGhpcyBjaGFubmVsLiBOVUxMIGlmIHRoZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zcGVhci9pbmNsdWRlL3BsYXQvY2xvY2suaCBiL2FyY2gvYXJtL3BsYXQtc3BlYXIvaW5jbHVkZS9wbGF0L2Nsb2NrLmgKaW5kZXggMmFlNjYwNi4uZmNjMGQwYSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zcGVhci9pbmNsdWRlL3BsYXQvY2xvY2suaAorKysgYi9hcmNoL2FybS9wbGF0LXNwZWFyL2luY2x1ZGUvcGxhdC9jbG9jay5oCkBAIC04OSw3ICs4OSw3IEBACiAgKiBAc2libGluZzogbm9kZSBmb3IgbGlzdCBvZiBjbG9ja3MgaGF2aW5nIHNhbWUgcGFyZW50cwogICogQHByaXZhdGVfZGF0YTogY2xvY2sgc3BlY2lmaWMgcHJpdmF0ZSBkYXRhCiAgKiBAbm9kZTogbGlzdCB0byBtYWludGFpbiBjbG9ja3MgbGluZWFybHkKLSAqIEBjbDogY2xvY2tsb29rIHVwIGFzc29pY2F0ZWQgd2l0aCB0aGlzIGNsb2NrCisgKiBAY2w6IGNsb2NrbG9vayB1cCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjbG9jawogICogQGRlbnQ6IG9iamVjdCBmb3IgZGVidWdmcwogICovCiBzdHJ1Y3QgY2xrIHsKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vS2NvbmZpZy5kZWJ1ZyBiL2FyY2gvYmxhY2tmaW4vS2NvbmZpZy5kZWJ1ZwppbmRleCBhY2I4Mzc5Li4yNjQxNzMxIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL0tjb25maWcuZGVidWcKKysrIGIvYXJjaC9ibGFja2Zpbi9LY29uZmlnLmRlYnVnCkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgICAgYmUgcmVwb3J0ZWQgbXVsdGlwbGUgY3ljbGVzIGFmdGVyIHRoZSBlcnJvciBoYXBwZW5zLiBUaGlzIGRlbGF5CiAJICBjYW4gY2F1c2UgdGhlIHdyb25nIGFwcGxpY2F0aW9uLCBvciBldmVuIHRoZSBrZXJuZWwgdG8gcmVjZWl2ZSBhCiAJICBzaWduYWwgdG8gYmUga2lsbGVkLiBJZiB5b3UgYXJlIGdldHRpbmcgSFcgZXJyb3JzIGluIHlvdXIgc3lzdGVtLAotCSAgdHJ5IHR1cm5pbmcgdGhpcyBvbiB0byBlbnN1cmUgdGhleSBhcmUgYXQgbGVhc3QgY29tbWluZyBmcm9tIHRoZQorCSAgdHJ5IHR1cm5pbmcgdGhpcyBvbiB0byBlbnN1cmUgdGhleSBhcmUgYXQgbGVhc3QgY29taW5nIGZyb20gdGhlCiAJICBwcm9wZXIgdGhyZWFkLgogCiAJICBPbiBwcm9kdWN0aW9uIHN5c3RlbXMsIGl0IGlzIHNhZmUgKGFuZCBhIHNtYWxsIG9wdGltaXphdGlvbikgdG8gc2F5IE4uCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL3RyYXBzLmggYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL3RyYXBzLmgKaW5kZXggOWZlMGRhNi4uNzBjNGU1MSAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS90cmFwcy5oCisrKyBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vdHJhcHMuaApAQCAtNTcsNyArNTcsNyBAQAogI2RlZmluZSBIV0NfeDMobGV2ZWwpIFwKIAkiRXh0ZXJuYWwgTWVtb3J5IEFkZHJlc3NpbmcgRXJyb3JcbiIKICNkZWZpbmUgRVhDXzB4MDQobGV2ZWwpIFwKLQkiVW5pbXBsbWVudGVkIGV4Y2VwdGlvbiBvY2N1cmVkXG4iIFwKKwkiVW5pbXBsbWVudGVkIGV4Y2VwdGlvbiBvY2N1cnJlZFxuIiBcCiAJbGV2ZWwgIiAtIE1heWJlIHlvdSBmb3Jnb3QgdG8gaW5zdGFsbCBhIGN1c3RvbSBleGNlcHRpb24gaGFuZGxlcj9cbiIKICNkZWZpbmUgSFdDX3gxMihsZXZlbCkgXAogCSJQZXJmb3JtYW5jZSBNb25pdG9yIE92ZXJmbG93XG4iCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2tlcm5lbC9rZ2RiLmMgYi9hcmNoL2JsYWNrZmluL2tlcm5lbC9rZ2RiLmMKaW5kZXggYjhjZmUzNC4uOWI4MGIxNSAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9rZXJuZWwva2dkYi5jCisrKyBiL2FyY2gvYmxhY2tmaW4va2VybmVsL2tnZGIuYwpAQCAtMTgxLDcgKzE4MSw3IEBACiAJCXJldHVybiAtRU5PU1BDOwogCX0KIAotCS8qIEJlY2FzdWUgaGFyZHdhcmUgZGF0YSB3YXRjaHBvaW50IGltcGVsZW1lbnRlZCBpbiBjdXJyZW50CisJLyogQmVjYXVzZSBoYXJkd2FyZSBkYXRhIHdhdGNocG9pbnQgaW1wZWxlbWVudGVkIGluIGN1cnJlbnQKIAkgKiBCbGFja2ZpbiBjYW4gbm90IHRyaWdnZXIgYW4gZXhjZXB0aW9uIGV2ZW50IGFzIHRoZSBoYXJkd2FyZQogCSAqIGluc3RyY3Rpb24gd2F0Y2hwb2ludCBkb2VzLCB3ZSBpZ25hb3JlIGFsbCBkYXRhIHdhdGNoIHBvaW50IGhlcmUuCiAJICogVGhleSBjYW4gYmUgdHVybmVkIG9uIGVhc2lseSBhZnRlciBmdXR1cmUgYmxhY2tmaW4gZGVzaWduCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2tlcm5lbC90cmFwcy5jIGIvYXJjaC9ibGFja2Zpbi9rZXJuZWwvdHJhcHMuYwppbmRleCA1OWMxZGY3Li42NTVmMjVkIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvYmxhY2tmaW4va2VybmVsL3RyYXBzLmMKQEAgLTk4LDcgKzk4LDcgQEAKIAkvKiBzZW5kIHRoZSBhcHByb3ByaWF0ZSBzaWduYWwgdG8gdGhlIHVzZXIgcHJvZ3JhbSAqLwogCXN3aXRjaCAodHJhcG5yKSB7CiAKLQkvKiBUaGlzIHRhYmxlIHdvcmtzIGluIGNvbmp1Y3Rpb24gd2l0aCB0aGUgb25lIGluIC4vbWFjaC1jb21tb24vZW50cnkuUworCS8qIFRoaXMgdGFibGUgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgb25lIGluIC4vbWFjaC1jb21tb24vZW50cnkuUwogCSAqIFNvbWUgZXhjZXB0aW9ucyBhcmUgaGFuZGxlZCB0aGVyZSAoaW4gYXNzZW1ibHksIGluIGV4Y2VwdGlvbiBzcGFjZSkKIAkgKiBTb21lIGFyZSBoYW5kbGVkIGhlcmUsIChpbiBDLCBpbiBpbnRlcnJ1cHQgc3BhY2UpCiAJICogU29tZSwgbGlrZSBDUExCLCBhcmUgaGFuZGxlZCBpbiBib3RoLCB3aGVyZSB0aGUgbm9ybWFsIHBhdGggaXMKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vbGliL2lucy5TIGIvYXJjaC9ibGFja2Zpbi9saWIvaW5zLlMKaW5kZXggM2VkYmQ4ZC4uNzljYWNjZSAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9saWIvaW5zLlMKKysrIGIvYXJjaC9ibGFja2Zpbi9saWIvaW5zLlMKQEAgLTY3LDcgKzY3LDcgQEAKICAqICAtIERNQSB2ZXJzaW9uLCB3aGljaCBkbyBub3Qgc3VmZmVyIGZyb20gdGhpcyBpc3N1ZS4gRE1BIHZlcnNpb25zIGhhdmUKICAqICAgICAgZGlmZmVyZW50IG5hbWUgKHByZWZpeGVkIGJ5IGRtYV8gKSwgYW5kIGFyZSBsb2NhdGVkIGluCiAgKiAgICAgIC4uL2tlcm5lbC9iZmluX2RtYV81eHguYwotICogVXNpbmcgdGhlIGRtYSByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgcmVjb21tZW5kZWQgZm9yIHRyYW5zZmVyaW5nIGxhcmdlCisgKiBVc2luZyB0aGUgZG1hIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSByZWNvbW1lbmRlZCBmb3IgdHJhbnNmZXJyaW5nIGxhcmdlCiAgKiBidWZmZXJzIGluL291dCBvZiBGSUZPcy4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2xpYi9tZW1tb3ZlLlMgYi9hcmNoL2JsYWNrZmluL2xpYi9tZW1tb3ZlLlMKaW5kZXggODBjMjQwYS4uNGVjYTU2NiAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9saWIvbWVtbW92ZS5TCisrKyBiL2FyY2gvYmxhY2tmaW4vbGliL21lbW1vdmUuUwpAQCAtNjAsNyArNjAsNyBAQAogCVtQMCsrXSA9IFIxOwogCiAJQ0MgPSBQMiA9PSAwOyAgICAgICAgICAgICAvKiBhbnkgcmVtYWluaW5nIGJ5dGVzPyAqLwotCVAzID0gSTA7ICAgICAgICAgICAgICAgICAgLyogQW1tZW5kIFAzIHRvIHVwZGF0ZWQgcHRyLiAqLworCVAzID0gSTA7ICAgICAgICAgICAgICAgICAgLyogQW1lbmQgUDMgdG8gdXBkYXRlZCBwdHIuICovCiAJSUYgIUNDIEpVTVAgLkxieXRlczsKIAlQMyA9IEkxOwogCVJUUzsKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vbWFjaC1iZjUzNy9ib2FyZHMvc3RhbXAuYyBiL2FyY2gvYmxhY2tmaW4vbWFjaC1iZjUzNy9ib2FyZHMvc3RhbXAuYwppbmRleCAyYzY5Nzg1Li4zZmEzMzU0IDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL21hY2gtYmY1MzcvYm9hcmRzL3N0YW1wLmMKKysrIGIvYXJjaC9ibGFja2Zpbi9tYWNoLWJmNTM3L2JvYXJkcy9zdGFtcC5jCkBAIC0yNTMwLDcgKzI1MzAsNyBAQAogc3RhdGljIHN0cnVjdCBwYXRhX3BsYXRmb3JtX2luZm8gYmZpbl9wYXRhX3BsYXRmb3JtX2RhdGEgPSB7CiAJLmlvcG9ydF9zaGlmdCA9IDAsCiB9OwotLyogQ29tcGFjdEZsYXNoIFN0b3JhZ2UgQ2FyZCBNZW1vcnkgTWFwcGVkIEFkcmVzc2luZworLyogQ29tcGFjdEZsYXNoIFN0b3JhZ2UgQ2FyZCBNZW1vcnkgTWFwcGVkIEFkZHJlc3NpbmcKICAqIC9SRUcgPSBBMTEgPSAxCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgYmZpbl9wYXRhX3Jlc291cmNlc1tdID0gewpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9lbnRyeS5TIGIvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9lbnRyeS5TCmluZGV4IDQ2YWI0NTcuLmY5NjkzM2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vbWFjaC1jb21tb24vZW50cnkuUworKysgYi9hcmNoL2JsYWNrZmluL21hY2gtY29tbW9uL2VudHJ5LlMKQEAgLTI2OCw3ICsyNjgsNyBAQAogCS8qIFRvIGdldCBoZXJlLCB3ZSBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gY2hhbmdlIGEgQ1BMQgogCSAqIHNvLCBoYW5kbGUgdGhpbmdzIGluIHRyYXBfYyAoQyBjb2RlKSwgYnkgbG93ZXJpbmcgdG8KIAkgKiBJUlE1LCBqdXN0IGxpa2Ugd2Ugbm9ybWFsbHkgZG8uIFNpbmNlIHRoaXMgaXMgbm90IGEKLQkgKiAibm9ybWFsIiByZXR1cm4gcGF0aCwgd2UgaGF2ZSBhIGRvIGFsb3Qgb2Ygc3R1ZmYgdG8KKwkgKiAibm9ybWFsIiByZXR1cm4gcGF0aCwgd2UgaGF2ZSBhIGRvIGEgbG90IG9mIHN0dWZmIHRvCiAJICogdGhlIHN0YWNrIHRvIGdldCByZWFkeSBzbywgd2UgY2FuIGZhbGwgdGhyb3VnaCAtIHdlCiAJICogbmVlZCB0byBtYWtlIGEgQ1BMQiBleGNlcHRpb24gbG9vayBsaWtlIGEgbm9ybWFsIGV4Y2VwdGlvbgogCSAqLwpAQCAtODE3LDcgKzgxNyw3IEBACiAJcmV0cyA9IFtzcCsrXTsKIAogCS8qCi0JICogV2hlbiB3ZSBjb21lIG91dCBvZiByZXN1bWUsIHIwIGNhcnJpZXMgIm9sZCIgdGFzaywgYmVjdWFzZSB3ZSBhcmUKKwkgKiBXaGVuIHdlIGNvbWUgb3V0IG9mIHJlc3VtZSwgcjAgY2FycmllcyAib2xkIiB0YXNrLCBiZWNhdXNlIHdlIGFyZQogCSAqIGluICJuZXciIHRhc2suCiAJICovCiAJcnRzOwpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9oZWFkLlMgYi9hcmNoL2JsYWNrZmluL21hY2gtY29tbW9uL2hlYWQuUwppbmRleCA1ODFlMmIwLi43NmRlNTcyIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL21hY2gtY29tbW9uL2hlYWQuUworKysgYi9hcmNoL2JsYWNrZmluL21hY2gtY29tbW9uL2hlYWQuUwpAQCAtMTc0LDcgKzE3NCw3IEBACiAJc3AubCA9IGxvKEtFUk5FTF9DTE9DS19TVEFDSyk7CiAJc3AuaCA9IGhpKEtFUk5FTF9DTE9DS19TVEFDSyk7CiAJY2FsbCBfaW5pdF9jbG9ja3M7Ci0Jc3AgPSB1c3A7CS8qIHVzcCBoYXNudCBiZWVuIHRvdWNoZWQsIHNvIHJlc3RvcmUgZnJvbSB0aGVyZSAqLworCXNwID0gdXNwOwkvKiB1c3AgaGFzbid0IGJlZW4gdG91Y2hlZCwgc28gcmVzdG9yZSBmcm9tIHRoZXJlICovCiAjZW5kaWYKIAogCS8qIFRoaXMgc2VjdGlvbiBrZWVwcyB0aGUgcHJvY2Vzc29yIGluIHN1cGVydmlzb3IgbW9kZQpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjEwL1JFQURNRS5tbSBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9SRUFETUUubW0KaW5kZXggNTE3ZDFmMDIuLjY3NzMxZDcgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9SRUFETUUubW0KKysrIGIvYXJjaC9jcmlzL2FyY2gtdjEwL1JFQURNRS5tbQpAQCAtMzgsNyArMzgsNyBAQAogbWFwIGR1cmluZyBrZXJuZWwtbW9kZSwgc28gdGhhdCB0aGUga2VybmVsIGVhc2lseSBjYW4gYWNjZXNzIHRoZSBjb3JyZXNwb25kaW5nCiB1c2VyLW1vZGUgcHJvY2VzcycgZGF0YS4KIAotQXMgYSBjb21wYXJpc2lvbiwgdGhlIExpbnV4L2kzODYgMi4wIHB1dHMgdGhlIGtlcm5lbCBhbmQgcGh5c2ljYWwgUkFNIGF0CitBcyBhIGNvbXBhcmlzb24sIHRoZSBMaW51eC9pMzg2IDIuMCBwdXRzIHRoZSBrZXJuZWwgYW5kIHBoeXNpY2FsIFJBTSBhdAogYWRkcmVzcyAwLCBvdmVybGFwcGluZyB3aXRoIHRoZSB1c2VyLW1vZGUgdmlydHVhbCBzcGFjZSwgc28gdGhhdCBkZXNjcmlwdG9yCiByZWdpc3RlcnMgYXJlIG5lZWRlZCBmb3IgZWFjaCBtZW1vcnkgYWNjZXNzIHRvIHNwZWNpZnkgd2hpY2ggTU1VIHNwYWNlIHRvCiBtYXAgdGhyb3VnaC4gVGhhdCBjaGFuZ2VkIGluIDIuMiwgcHV0dGluZyB0aGUga2VybmVsL3BoeXNpY2FsIFJBTSBhdCAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9kcml2ZXJzL3N5bmNfc2VyaWFsLmMgYi9hcmNoL2NyaXMvYXJjaC12MTAvZHJpdmVycy9zeW5jX3NlcmlhbC5jCmluZGV4IDM5OWRjMWVjLi44NTAyNjUzNyAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjEwL2RyaXZlcnMvc3luY19zZXJpYWwuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MTAvZHJpdmVycy9zeW5jX3NlcmlhbC5jCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8YXNtL3N5bmNfc2VyaWFsLmg+CiAjaW5jbHVkZSA8YXJjaC9pb19pbnRlcmZhY2VfbXV4Lmg+CiAKLS8qIFRoZSByZWNlaXZlciBpcyBhIGJpdCB0cmlja3kgYmVhY3VzZSBvZiB0aGUgY29udGludW91cyBzdHJlYW0gb2YgZGF0YS4qLworLyogVGhlIHJlY2VpdmVyIGlzIGEgYml0IHRyaWNreSBiZWNhdXNlIG9mIHRoZSBjb250aW51b3VzIHN0cmVhbSBvZiBkYXRhLiovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qIFRocmVlIERNQSBkZXNjcmlwdG9ycyBhcmUgbGlua2VkIHRvZ2V0aGVyLiBFYWNoIERNQSBkZXNjcmlwdG9yIGlzICAgICAqLwogLyogcmVzcG9uc2libGUgZm9yIHBvcnQtPmJ1ZmNodW5rIG9mIGEgY29tbW9uIGJ1ZmZlci4gICAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9heGlzZmxhc2htYXAuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jCmluZGV4IDNkNzUxMjUuLjdiMTU1ZjggMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jCkBAIC0yMTUsNyArMjE1LDcgQEAKIH07CiAjZW5kaWYKIAotLyogQXV4aWxsaWFyeSBwYXJ0aXRpb24gaWYgd2UgZmluZCBhbm90aGVyIGZsYXNoICovCisvKiBBdXhpbGlhcnkgcGFydGl0aW9uIGlmIHdlIGZpbmQgYW5vdGhlciBmbGFzaCAqLwogc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIGF1eF9wYXJ0aXRpb24gPSB7CiAJLm5hbWUgPSAiYXV4IiwKIAkuc2l6ZSA9IDAsCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9tYWNoLWEzL25hbmRmbGFzaC5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvbWFjaC1hMy9uYW5kZmxhc2guYwppbmRleCAyNWQ2ZjJiLi5mNThmMmMxIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9tYWNoLWEzL25hbmRmbGFzaC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL21hY2gtYTMvbmFuZGZsYXNoLmMKQEAgLTE2NSw3ICsxNjUsNyBAQAogCS8qIEVuYWJsZSB0aGUgZm9sbG93aW5nIGZvciBhIGZsYXNoIGJhc2VkIGJhZCBibG9jayB0YWJsZSAqLwogCS8qIHRoaXMtPm9wdGlvbnMgPSBOQU5EX1VTRV9GTEFTSF9CQlQ7ICovCiAKLQkvKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UgKi8KKwkvKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UgKi8KIAlpZiAobmFuZF9zY2FuKGNyaXN2MzJfbXRkLCAxKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0X210ZDsKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL21hY2gtZnMvbmFuZGZsYXNoLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9tYWNoLWZzL25hbmRmbGFzaC5jCmluZGV4IGM1YTBmNTQuLmQ1YjBjYzkgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL21hY2gtZnMvbmFuZGZsYXNoLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvbWFjaC1mcy9uYW5kZmxhc2guYwpAQCAtMTU2LDcgKzE1Niw3IEBACiAJLyogRW5hYmxlIHRoZSBmb2xsb3dpbmcgZm9yIGEgZmxhc2ggYmFzZWQgYmFkIGJsb2NrIHRhYmxlICovCiAJLyogdGhpcy0+b3B0aW9ucyA9IE5BTkRfVVNFX0ZMQVNIX0JCVDsgKi8KIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4oY3Jpc3YzMl9tdGQsIDEpKSB7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBvdXRfaW9yOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvc3luY19zZXJpYWwuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL3N5bmNfc2VyaWFsLmMKaW5kZXggYzg2MzdhOS4uYTZhMTgwYiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvc3luY19zZXJpYWwuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9zeW5jX3NlcmlhbC5jCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8YXNtL3N5bmNfc2VyaWFsLmg+CiAKIAotLyogVGhlIHJlY2VpdmVyIGlzIGEgYml0IHRyaWNreSBiZWFjdXNlIG9mIHRoZSBjb250aW51b3VzIHN0cmVhbSBvZiBkYXRhLiovCisvKiBUaGUgcmVjZWl2ZXIgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ugb2YgdGhlIGNvbnRpbnVvdXMgc3RyZWFtIG9mIGRhdGEuKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogVGhyZWUgRE1BIGRlc2NyaXB0b3JzIGFyZSBsaW5rZWQgdG9nZXRoZXIuIEVhY2ggRE1BIGRlc2NyaXB0b3IgaXMgICAgICovCiAvKiByZXNwb25zaWJsZSBmb3IgcG9ydC0+YnVmY2h1bmsgb2YgYSBjb21tb24gYnVmZmVyLiAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvZW50cnkuUyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvZW50cnkuUwppbmRleCAwZWNiNTBiLi4zYWJmMTJjIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9lbnRyeS5TCkBAIC0xODIsNyArMTgyLDcgQEAKIAltb3ZlLmQJJHIwLCBbJHNwXQogCiAJOzsgVGhlIHJlZ2lzdGVycyBjYXJyeWluZyBwYXJhbWV0ZXJzIChSMTAtUjEzKSBhcmUgaW50YWN0LiBUaGUgb3B0aW9uYWwKLQk7OyBmaWZ0aCBhbmQgc2l4dGggcGFyYW1ldGVycyBpcyBpbiBNT0YgYW5kIFNSUCByZXNwZWN0aXZseS4gUHV0IHRoZW0KKwk7OyBmaWZ0aCBhbmQgc2l4dGggcGFyYW1ldGVycyBpcyBpbiBNT0YgYW5kIFNSUCByZXNwZWN0aXZlbHkuIFB1dCB0aGVtCiAJOzsgYmFjayBvbiB0aGUgc3RhY2suCiAJc3VicQk0LCAkc3AKIAltb3ZlCSRzcnAsIFskc3BdCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2lycS5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9pcnEuYwppbmRleCA4MDIzMTc2Li42OGExYTU5IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2lycS5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvaXJxLmMKQEAgLTM3NCw3ICszNzQsNyBAQAogCWlycV9lbnRlcigpOwogCiAJZm9yIChpID0gMDsgaSA8IE5CUl9SRUdTOyBpKyspIHsKLQkJLyogR2V0IHdoaWNoIElSUXMgdGhhdCBoYXBwZW5kLiAqLworCQkvKiBHZXQgd2hpY2ggSVJRcyB0aGF0IGhhcHBlbmVkLiAqLwogCQltYXNrZWRbaV0gPSBSRUdfUkRfSU5UX1ZFQ1QoaW50cl92ZWN0LCBpcnFfcmVnc1tjcHVdLAogCQkJcl9tYXNrZWRfdmVjdCwgaSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwva2dkYi5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9rZ2RiLmMKaW5kZXggNmI2NTMzMi4uYzAzNDNjMyAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9rZ2RiLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9rZ2RiLmMKQEAgLTkyNSw3ICs5MjUsNyBAQAogCiAJCQkJCWlmIChyZWcuZWRhID49IGJwX2RfcmVnc1ticCAqIDJdICYmCiAJCQkJCSAgICByZWcuZWRhIDw9IGJwX2RfcmVnc1ticCAqIDIgKyAxXSkgewotCQkJCQkJLyogRURBIHdpdGhpbmcgcmFuZ2UgZm9yIHRoaXMgQlA7IGl0IG11c3QgYmUgdGhlIG9uZQorCQkJCQkJLyogRURBIHdpdGhpbiByYW5nZSBmb3IgdGhpcyBCUDsgaXQgbXVzdCBiZSB0aGUgb25lCiAJCQkJCQkgICB3ZSdyZSBsb29raW5nIGZvci4gKi8KIAkJCQkJCXN0b3BwZWRfZGF0YV9hZGRyZXNzID0gcmVnLmVkYTsKIAkJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYwppbmRleCA1NjJmODQ3Li4wNTcwZThjIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYwpAQCAtMTQ5LDcgKzE0OSw3IEBACiAgICAgICAgIGNoaWxkcmVncy0+cjEwID0gMDsJLyogQ2hpbGQgcmV0dXJucyAwIGFmdGVyIGEgZm9yay9jbG9uZS4gKi8KIAogCS8qIFNldCBhIG5ldyBUTFMgPwotCSAqIFRoZSBUTFMgaXMgaW4gJG1vZiBiZWFjdXNlIGl0IGlzIHRoZSA1dGggYXJndW1lbnQgdG8gc3lzX2Nsb25lLgorCSAqIFRoZSBUTFMgaXMgaW4gJG1vZiBiZWNhdXNlIGl0IGlzIHRoZSA1dGggYXJndW1lbnQgdG8gc3lzX2Nsb25lLgogCSAqLwogCWlmIChwLT5tbSAmJiAoY2xvbmVfZmxhZ3MgJiBDTE9ORV9TRVRUTFMpKSB7CiAJCXRhc2tfdGhyZWFkX2luZm8ocCktPnRscyA9IHJlZ3MtPm1vZjsKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3NpZ25hbC5jCmluZGV4IGIzYTA1YWUuLmNlNGFiMWEgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9zaWduYWwuYwpAQCAtNjEwLDcgKzYxMCw3IEBACiAJCXVzZXJfcmVncyh0aSktPnNwYyA9IDA7CiAJfQogCS8qIEZJWE1FOiBGaWx0ZXIgb3V0IGZhbHNlIGgvdyBicmVha3BvaW50IGhpdHMgKGkuZS4gRURBCi0JICAgbm90IHdpdGhpbmcgYW55IGNvbmZpZ3VyZWQgaC93IGJyZWFrcG9pbnQgcmFuZ2UpLiBTeW5jaHJvbml6ZSB3aXRoCisJICAgbm90IHdpdGhpbiBhbnkgY29uZmlndXJlZCBoL3cgYnJlYWtwb2ludCByYW5nZSkuIFN5bmNocm9uaXplIHdpdGgKIAkgICB3aGF0IGFscmVhZHkgZXhpc3RzIGZvciBrZXJuZWwgZGVidWdnaW5nLiAgKi8KIAlpZiAoKCh1c2VyX3JlZ3ModGkpLT5leHMgJiAweGZmMDApID4+IDgpID09IEJSRUFLXzhfSU5UUl9WRUNUKSB7CiAJCS8qIEJyZWFrIDg6IHN1YnRyYWN0IDIgZnJvbSBFUlAgdW5sZXNzIGluIGEgZGVsYXkgc2xvdC4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9tYWNoLWEzL2FyYml0ZXIuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9tYWNoLWEzL2FyYml0ZXIuYwppbmRleCA4YjkyNGRiLi4xNWY1YzlkIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvbWFjaC1hMy9hcmJpdGVyLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL21hY2gtYTMvYXJiaXRlci5jCkBAIC01NjgsNyArNTY4LDcgQEAKIAlSRUdfV1IobWFyYl9mb29fYnAsIHdhdGNoLT5pbnN0YW5jZSwgcndfYWNrLCBhY2spOwogCVJFR19XUihtYXJiX2ZvbywgcmVnaV9tYXJiX2ZvbywgcndfYWNrX2ludHIsIGFja19pbnRyKTsKIAotCXByaW50ayhLRVJOX0RFQlVHICJJUlEgb2NjdXJlZCBhdCAlWFxuIiwgKHVuc2lnbmVkKWdldF9pcnFfcmVncygpKTsKKwlwcmludGsoS0VSTl9ERUJVRyAiSVJRIG9jY3VycmVkIGF0ICVYXG4iLCAodW5zaWduZWQpZ2V0X2lycV9yZWdzKCkpOwogCiAJaWYgKHdhdGNoLT5jYikKIAkJd2F0Y2gtPmNiKCk7CkBAIC02MjQsNyArNjI0LDcgQEAKIAlSRUdfV1IobWFyYl9iYXJfYnAsIHdhdGNoLT5pbnN0YW5jZSwgcndfYWNrLCBhY2spOwogCVJFR19XUihtYXJiX2JhciwgcmVnaV9tYXJiX2JhciwgcndfYWNrX2ludHIsIGFja19pbnRyKTsKIAotCXByaW50ayhLRVJOX0RFQlVHICJJUlEgb2NjdXJlZCBhdCAlWFxuIiwgKHVuc2lnbmVkKWdldF9pcnFfcmVncygpLT5lcnApOworCXByaW50ayhLRVJOX0RFQlVHICJJUlEgb2NjdXJyZWQgYXQgJVhcbiIsICh1bnNpZ25lZClnZXRfaXJxX3JlZ3MoKS0+ZXJwKTsKIAogCWlmICh3YXRjaC0+Y2IpCiAJCXdhdGNoLT5jYigpOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL21hY2gtZnMvYXJiaXRlci5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL21hY2gtZnMvYXJiaXRlci5jCmluZGV4IDgyZWYyOTMuLjNmOGViYjUgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9tYWNoLWZzL2FyYml0ZXIuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvbWFjaC1mcy9hcmJpdGVyLmMKQEAgLTM5NSw3ICszOTUsNyBAQAogCVJFR19XUihtYXJiX2JwLCB3YXRjaC0+aW5zdGFuY2UsIHJ3X2FjaywgYWNrKTsKIAlSRUdfV1IobWFyYiwgcmVnaV9tYXJiLCByd19hY2tfaW50ciwgYWNrX2ludHIpOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiSVJRIG9jY3VyZWQgYXQgJWxYXG4iLCBnZXRfaXJxX3JlZ3MoKS0+ZXJwKTsKKwlwcmludGsoS0VSTl9JTkZPICJJUlEgb2NjdXJyZWQgYXQgJWxYXG4iLCBnZXRfaXJxX3JlZ3MoKS0+ZXJwKTsKIAogCWlmICh3YXRjaC0+Y2IpCiAJCXdhdGNoLT5jYigpOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2Jvb3QvcmVzY3VlL2hlYWRfdjEwLlMgYi9hcmNoL2NyaXMvYm9vdC9yZXNjdWUvaGVhZF92MTAuUwppbmRleCAyZmFmZTI0Li5hZjU1ZGYwIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYm9vdC9yZXNjdWUvaGVhZF92MTAuUworKysgYi9hcmNoL2NyaXMvYm9vdC9yZXNjdWUvaGVhZF92MTAuUwpAQCAtNyw3ICs3LDcgQEAKICAqIGZvciBlYWNoIHBhcnRpdGlvbiB0aGF0IHRoaXMgY29kZSBzaG91bGQgY2hlY2suCiAgKgogICogSWYgYW55IG9mIHRoZSBjaGVja3N1bXMgZmFpbCwgd2UgYXNzdW1lIHRoZSBmbGFzaCBpcyBzbwotICogY29ycnVwdCB0aGF0IHdlIGNhbnQgdXNlIGl0IHRvIGJvb3QgaW50byB0aGUgZnRwIGZsYXNoCisgKiBjb3JydXB0IHRoYXQgd2UgY2FuJ3QgdXNlIGl0IHRvIGJvb3QgaW50byB0aGUgZnRwIGZsYXNoCiAgKiBsb2FkZXIsIGFuZCBpbnN0ZWFkIHdlIGluaXRpYWxpemUgdGhlIHNlcmlhbCBwb3J0IHRvCiAgKiByZWNlaXZlIGEgZmxhc2gtbG9hZGVyIGFuZCBuZXcgZmxhc2ggaW1hZ2UuIHdlIGRvbnQgaW5jbHVkZQogICogYW55IGZsYXNoIGNvZGUgaGVyZSwgYnV0IGp1c3QgYWNjZXB0IGEgY2VydGFpbiBhbW91bnQgb2YKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9pbmNsdWRlL2FyY2gtdjMyL2FyY2gvaHdyZWdzL01ha2VmaWxlIGIvYXJjaC9jcmlzL2luY2x1ZGUvYXJjaC12MzIvYXJjaC9od3JlZ3MvTWFrZWZpbGUKaW5kZXggZjlhMDVkMi4uYjhiM2Y4ZCAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2luY2x1ZGUvYXJjaC12MzIvYXJjaC9od3JlZ3MvTWFrZWZpbGUKKysrIGIvYXJjaC9jcmlzL2luY2x1ZGUvYXJjaC12MzIvYXJjaC9od3JlZ3MvTWFrZWZpbGUKQEAgLTEsNiArMSw2IEBACiAjIE1ha2VmaWxlIHRvIGdlbmVyYXRlIG9yIGNvcHkgdGhlIGxhdGVzdCByZWdpc3RlciBkZWZpbml0aW9ucwogIyBhbmQgcmVsYXRlZCBkYXRhc3RydWN0dXJlcyBhbmQgaGVscGVybWFjcm9zLgotIyBUaGUgb2ZmaWNhbCBwbGFjZSBmb3IgdGhlc2UgZmlsZXMgaXMgYXQ6CisjIFRoZSBvZmZpY2lhbCBwbGFjZSBmb3IgdGhlc2UgZmlsZXMgaXMgYXQ6CiBSRUxFQVNFID89IHIxX2FsZmE1CiBPRkZJQ0lBTF9JTkNESVIgPSAvbi9hc2ljL3Byb2plY3RzL2d1aW5uZXNzL3JlbGVhc2VzLyQoUkVMRUFTRSkvZGVzaWduL3RvcC9zdy9pbmNsdWRlLwogCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvaW5jbHVkZS9hcmNoLXYzMi9hcmNoL2h3cmVncy9pb3AvTWFrZWZpbGUgYi9hcmNoL2NyaXMvaW5jbHVkZS9hcmNoLXYzMi9hcmNoL2h3cmVncy9pb3AvTWFrZWZpbGUKaW5kZXggYTkwMDU2YS4uMDc0N2EyMiAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2luY2x1ZGUvYXJjaC12MzIvYXJjaC9od3JlZ3MvaW9wL01ha2VmaWxlCisrKyBiL2FyY2gvY3Jpcy9pbmNsdWRlL2FyY2gtdjMyL2FyY2gvaHdyZWdzL2lvcC9NYWtlZmlsZQpAQCAtMSw3ICsxLDcgQEAKICMgJElkOiBNYWtlZmlsZSx2IDEuMyAyMDA0LzAxLzA3IDIwOjM0OjU1IGpvaGFuYSBFeHAgJAogIyBNYWtlZmlsZSB0byBnZW5lcmF0ZSBvciBjb3B5IHRoZSBsYXRlc3QgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKICMgYW5kIHJlbGF0ZWQgZGF0YXN0cnVjdHVyZXMgYW5kIGhlbHBlcm1hY3Jvcy4KLSMgVGhlIG9mZmljYWwgcGxhY2UgZm9yIHRoZXNlIGZpbGVzIGlzIHByb2JhYmx5IGF0OgorIyBUaGUgb2ZmaWNpYWwgcGxhY2UgZm9yIHRoZXNlIGZpbGVzIGlzIHByb2JhYmx5IGF0OgogUkVMRUFTRSA/PSByMV9hbGZhNQogSU9QT0ZGSUNJQUxfSU5DRElSID0gL24vYXNpYy9wcm9qZWN0cy9ndWlubmVzcy9yZWxlYXNlcy8kKFJFTEVBU0UpL2Rlc2lnbi90b3Avc3cvaW5jbHVkZS8KIApkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKaW5kZXggOWVhYWUyMS4uN2RmNDMwMSAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL3BndGFibGUuaAorKysgYi9hcmNoL2NyaXMvaW5jbHVkZS9hc20vcGd0YWJsZS5oCkBAIC05Nyw3ICs5Nyw3IEBACiAjZGVmaW5lIHB0ZV9jbGVhcihtbSxhZGRyLHhwKQlkbyB7IHB0ZV92YWwoKih4cCkpID0gMDsgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBwbWRfbm9uZSh4KSAgICAgKCFwbWRfdmFsKHgpKQotLyogYnkgcmVtb3ZpbmcgdGhlIF9QQUdFX0tFUk5FTCBiaXQgZnJvbSB0aGUgY29tcGFyaXNpb24sIHRoZSBzYW1lIHBtZF9iYWQKKy8qIGJ5IHJlbW92aW5nIHRoZSBfUEFHRV9LRVJORUwgYml0IGZyb20gdGhlIGNvbXBhcmlzb24sIHRoZSBzYW1lIHBtZF9iYWQKICAqIHdvcmtzIGZvciBib3RoIF9QQUdFX1RBQkxFIGFuZCBfS0VSTlBHX1RBQkxFIHBtZCBlbnRyaWVzLgogICovCiAjZGVmaW5lCXBtZF9iYWQoeCkJKChwbWRfdmFsKHgpICYgKH5QQUdFX01BU0sgJiB+X1BBR0VfS0VSTkVMKSkgIT0gX1BBR0VfVEFCTEUpCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMva2VybmVsL3RyYXBzLmMgYi9hcmNoL2NyaXMva2VybmVsL3RyYXBzLmMKaW5kZXggNTQxZWZiZjAuLjhkYTUzZjMgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL2NyaXMva2VybmVsL3RyYXBzLmMKQEAgLTE4Myw3ICsxODMsNyBAQAogCiAvKgogICogVGhpcyBnZXRzIGNhbGxlZCBmcm9tIGVudHJ5LlMgd2hlbiB0aGUgd2F0Y2hkb2cgaGFzIGJpdHRlbi4gU2hvdyBzb21ldGhpbmcKLSAqIHNpbWlsaWFyIHRvIGFuIE9vcHMgZHVtcCwgYW5kIGlmIHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZCB0byBiZSBhIG5pY2UKKyAqIHNpbWlsYXIgdG8gYW4gT29wcyBkdW1wLCBhbmQgaWYgdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkIHRvIGJlIGEgbmljZQogICogZG9nZ3ksIHRoZW4gaGFsdCBpbnN0ZWFkIG9mIHJlYm9vdC4KICAqLwogdm9pZApkaWZmIC0tZ2l0IGEvYXJjaC9mcnYvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9wY2kuaAppbmRleCAwZDU5OTc5Li5lZjAzYmFmIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRlL2FzbS9wY2kuaAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9wY2kuaApAQCAtNTQsNyArNTQsNyBAQAogI2VuZGlmCiAKIC8qCi0gKglUaGVzZSBhcmUgcHJldHR5IG11Y2ggYXJiaXRhcnkgd2l0aCB0aGUgQ29NRU0gaW1wbGVtZW50YXRpb24uCisgKglUaGVzZSBhcmUgcHJldHR5IG11Y2ggYXJiaXRyYXJ5IHdpdGggdGhlIENvTUVNIGltcGxlbWVudGF0aW9uLgogICoJV2UgaGF2ZSB0aGUgd2hvbGUgYWRkcmVzcyBzcGFjZSB0byBvdXJzZWx2ZXMuCiAgKi8KICNkZWZpbmUgUENJQklPU19NSU5fSU8JCTB4MTAwCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9pbmNsdWRlL2FzbS9zcHItcmVncy5oIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vc3ByLXJlZ3MuaAppbmRleCAwMWU2YWY1Li5kMzg4MzAyMSAxMDA2NDQKLS0tIGEvYXJjaC9mcnYvaW5jbHVkZS9hc20vc3ByLXJlZ3MuaAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9zcHItcmVncy5oCkBAIC0yNzQsNyArMjc0LDcgQEAKICNkZWZpbmUgTVNSMF9SRAkJCTB4YzAwMDAwMDAJLyogcm91bmRpbmcgbW9kZSAqLwogI2RlZmluZSBNU1IwX1JEX05FQVJFU1QJCTB4MDAwMDAwMDAJLyogLSBuZWFyZXN0ICovCiAjZGVmaW5lIE1TUjBfUkRfWkVSTwkJMHg0MDAwMDAwMAkvKiAtIHplcm8gKi8KLSNkZWZpbmUgTVNSMF9SRF9QT1NfSU5GCQkweDgwMDAwMDAwCS8qIC0gcG9zdGl2ZSBpbmZpbml0eSAqLworI2RlZmluZSBNU1IwX1JEX1BPU19JTkYJCTB4ODAwMDAwMDAJLyogLSBwb3NpdGl2ZSBpbmZpbml0eSAqLwogI2RlZmluZSBNU1IwX1JEX05FR19JTkYJCTB4YzAwMDAwMDAJLyogLSBuZWdhdGl2ZSBpbmZpbml0eSAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9mcnYvaW5jbHVkZS9hc20vdmlydGNvbnZlcnQuaCBiL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3ZpcnRjb252ZXJ0LmgKaW5kZXggNTk3ODhmYS4uYjI2ZDcwYSAxMDA2NDQKLS0tIGEvYXJjaC9mcnYvaW5jbHVkZS9hc20vdmlydGNvbnZlcnQuaAorKysgYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS92aXJ0Y29udmVydC5oCkBAIC0xLDQgKzEsNCBAQAotLyogdmlydGNvbnZlcnQuaDogdmlydHVhbC9waHlzaWNhbC9wYWdlIGFkZHJlc3MgY29udmVydGlvbgorLyogdmlydGNvbnZlcnQuaDogdmlydHVhbC9waHlzaWNhbC9wYWdlIGFkZHJlc3MgY29udmVyc2lvbgogICoKICAqIENvcHlyaWdodCAoQykgMjAwNCBSZWQgSGF0LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBXcml0dGVuIGJ5IERhdmlkIEhvd2VsbHMgKGRob3dlbGxzQHJlZGhhdC5jb20pCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvZW50cnktdGFibGUuUyBiL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS10YWJsZS5TCmluZGV4IGJmMzVmMzMuLjA2YzVhZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS10YWJsZS5TCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS10YWJsZS5TCkBAIC04Niw3ICs4Niw3IEBACiAJLmdsb2JsCQlfX2JyZWFrX2tlcm5lbHRyYXBfZml4dXBfdGFibGUKIF9fYnJlYWtfa2VybmVsdHJhcF9maXh1cF90YWJsZToKIAotCSMgaGFuZGxlciBkZWNsYXJhdGlvbiBmb3IgYSBzb2Z3YXJlIG9yIHByb2dyYW0gaW50ZXJydXB0CisJIyBoYW5kbGVyIGRlY2xhcmF0aW9uIGZvciBhIHNvZnR3YXJlIG9yIHByb2dyYW0gaW50ZXJydXB0CiAubWFjcm8gVkVDVE9SX1NPRlRQUk9HIHRicl90dCwgdmVjCiAJLnNlY3Rpb24gLnRyYXAudXNlcgogCS5vcmcJCVx0YnJfdHQKQEAgLTE0NSw3ICsxNDUsNyBAQAogCS5sb25nCQlcdmVjCiAuZW5kbQogCi0JIyBoYW5kbGVyIGRlY2xhcmF0aW9uIGZvciBhbiBNTVUgb25seSBzb2Z3YXJlIG9yIHByb2dyYW0gaW50ZXJydXB0CisJIyBoYW5kbGVyIGRlY2xhcmF0aW9uIGZvciBhbiBNTVUgb25seSBzb2Z0d2FyZSBvciBwcm9ncmFtIGludGVycnVwdAogLm1hY3JvIFZFQ1RPUl9TUF9NTVUgdGJyX3R0LCB2ZWMKICNpZmRlZiBDT05GSUdfTU1VCiAgCVZFQ1RPUl9TT0ZUUFJPRwlcdGJyX3R0LCBcdmVjCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvS2NvbmZpZyBiL2FyY2gvaWE2NC9LY29uZmlnCmluZGV4IGM0ZWEwOTIuLmU1Y2M1NmEgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9LY29uZmlnCisrKyBiL2FyY2gvaWE2NC9LY29uZmlnCkBAIC00MTQsMTEgKzQxNCwxMSBAQAogCXN1cHBvcnQuIAogCiBjb25maWcgRk9SQ0VfQ1BFSV9SRVRBUkdFVAotCWJvb2wgIkZvcmNlIGFzc3VtcHRpb24gdGhhdCBDUEVJIGNhbiBiZSByZS10YXJnZXR0ZWQiCisJYm9vbCAiRm9yY2UgYXNzdW1wdGlvbiB0aGF0IENQRUkgY2FuIGJlIHJlLXRhcmdldGVkIgogCWRlcGVuZHMgb24gUEVSTUlUX0JTUF9SRU1PVkUKIAlkZWZhdWx0IG4KIAktLS1oZWxwLS0tCi0JU2F5IFkgaWYgeW91IG5lZWQgdG8gZm9yY2UgdGhlIGFzc3VtcHRpb24gdGhhdCBDUEVJIGNhbiBiZSByZS10YXJnZXR0ZWQgdG8KKwlTYXkgWSBpZiB5b3UgbmVlZCB0byBmb3JjZSB0aGUgYXNzdW1wdGlvbiB0aGF0IENQRUkgY2FuIGJlIHJlLXRhcmdldGVkIHRvCiAJYW55IGNwdSBpbiB0aGUgc3lzdGVtLiBUaGlzIGhpbnQgaXMgYXZhaWxhYmxlIHZpYSBBQ1BJIDMuMCBzcGVjaWZpY2F0aW9ucy4KIAlUaWdlcjQgc3lzdGVtcyBhcmUgY2FwYWJsZSBvZiByZS1kaXJlY3RpbmcgQ1BFSSB0byBhbnkgQ1BVIG90aGVyIHRoYW4gQlNQLgogCVRoaXMgb3B0aW9uIGl0IHVzZWZ1bCB0byBlbmFibGUgdGhpcyBmZWF0dXJlIG9uIG9sZGVyIEJJT1MncyBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3BhbC5oIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3BhbC5oCmluZGV4IDZhMjkyNTAuLjJlNjkyODQgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9wYWwuaAorKysgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGFsLmgKQEAgLTE2NjksNyArMTY2OSw3IEBACiB9IHBhbF92cF9pbmZvX3VfdDsKIAogLyoKLSAqIFJldHVybnMgaW5mb21hdGlvbiBhYm91dCB2aXJ0dWFsIHByb2Nlc3NvciBmZWF0dXJlcworICogUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB2aXJ0dWFsIHByb2Nlc3NvciBmZWF0dXJlcwogICovCiBzdGF0aWMgaW5saW5lIHM2NAogaWE2NF9wYWxfdnBfaW5mbyAodTY0IGZlYXR1cmVfc2V0LCB1NjQgdnBfYnVmZmVyLCB1NjQgKnZwX2luZm8sIHU2NCAqdm1tX2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3BlcmZtb25fZGVmYXVsdF9zbXBsLmggYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGVyZm1vbl9kZWZhdWx0X3NtcGwuaAppbmRleCA3NDcyNGIyLi5hMmQ1NjBjIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGVyZm1vbl9kZWZhdWx0X3NtcGwuaAorKysgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGVyZm1vbl9kZWZhdWx0X3NtcGwuaApAQCAtNjcsOCArNjcsOCBAQAogICAgICAgICB1bnNpZ25lZCBsb25nICAgaXA7ICAgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgZGlkIHRoZSBvdmVyZmxvdyBpbnRlcnJ1cHQgaGFwcGVuZWQgICovCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgICB0c3RhbXA7ICAgICAgICAgICAgICAgICAvKiBhci5pdGMgd2hlbiBlbnRlcmluZyBwZXJmbW9uIGludHIuIGhhbmRsZXIgKi8KIAotICAgICAgICB1bnNpZ25lZCBzaG9ydCAgY3B1OyAgICAgICAgICAgICAgICAgICAgLyogY3B1IG9uIHdoaWNoIHRoZSBvdmVyZmxvdyBvY2N1cmVkICovCi0gICAgICAgIHVuc2lnbmVkIHNob3J0ICBzZXQ7ICAgICAgICAgICAgICAgICAgICAvKiBldmVudCBzZXQgYWN0aXZlIHdoZW4gb3ZlcmZsb3cgb2N1cnJlZCAgICovCisgICAgICAgIHVuc2lnbmVkIHNob3J0ICBjcHU7ICAgICAgICAgICAgICAgICAgICAvKiBjcHUgb24gd2hpY2ggdGhlIG92ZXJmbG93IG9jY3VycmVkICovCisgICAgICAgIHVuc2lnbmVkIHNob3J0ICBzZXQ7ICAgICAgICAgICAgICAgICAgICAvKiBldmVudCBzZXQgYWN0aXZlIHdoZW4gb3ZlcmZsb3cgb2NjdXJyZWQgICAqLwogICAgICAgICBpbnQgICAgCQl0Z2lkOyAgICAgICAgICAgICAgCS8qIHRocmVhZCBncm91cCBpZCAoZm9yIE5QVEwsIHRoaXMgaXMgZ2V0cGlkKCkpICovCiB9IHBmbV9kZWZhdWx0X3NtcGxfZW50cnlfdDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL2J0ZS5oIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL2J0ZS5oCmluZGV4IDk2Nzk4ZDIuLmNjNmM0ZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9idGUuaAorKysgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vYnRlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQAogCWJ0ZV9jb3B5KDAsIGRlc3QsIGxlbiwgKChtb2RlKSB8IEJURV9aRVJPX0ZJTEwpLCBub3RpZmljYXRpb24pCiAKIC8qCi0gKiBUaGUgZm9sbG93aW5nIGlzIHRoZSBwcmVmZXJlZCB3YXkgb2YgY2FsbGluZyBidGVfdW5hbGlnbmVkX2NvcHkKKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIHByZWZlcnJlZCB3YXkgb2YgY2FsbGluZyBidGVfdW5hbGlnbmVkX2NvcHkKICAqIElmIHRoZSBjb3B5IGlzIGZ1bGx5IGNhY2hlIGxpbmUgYWxpZ25lZCwgdGhlbiBidGVfY29weSBpcwogICogdXNlZCBpbnN0ZWFkLiAgU2luY2UgYnRlX2NvcHkgaXMgaW5saW5lZCwgdGhpcyBzYXZlcyBhIGNhbGwKICAqIHN0YWNrLiAgTk9URTogYnRlX2NvcHkgaXMgY2FsbGVkIHN5bmNocm9ub3VzbHkgYW5kIGRvZXMgYmxvY2sKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9zaHViX21tci5oIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL3NodWJfbW1yLmgKaW5kZXggN2RlMWQxZC4uYTg0ZDg3MCAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL3NodWJfbW1yLmgKKysrIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL3NodWJfbW1yLmgKQEAgLTQ1OSw3ICs0NTksNyBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qIFNvbWUgTU1ScyBhcmUgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCAob3IgY2xvc2UgZW5vdWdoKSBvbiBib3RoIFNIVUIxICovCiAvKiBhbmQgU0hVQjIgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBkZWZpbmUgYSBnZWJlcmljIG5hbWUgZm9yIHRoZSBNTVIuICAqLwotLyogSXQgaXMgYWNjZXB0aWJsZSB0byB1c2UgKGZvciBleGFtcGxlKSBTSF9JUElfSU5UIHRvIHJlZmVyZW5jZSB0aGUgICAgKi8KKy8qIEl0IGlzIGFjY2VwdGFibGUgdG8gdXNlIChmb3IgZXhhbXBsZSkgU0hfSVBJX0lOVCB0byByZWZlcmVuY2UgdGhlICAgICovCiAvKiB0aGUgSVBJIE1NUi4gVGhlIHZhbHVlIG9mIFNIX0lQSV9JTlQgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lIGJhc2VkICAqLwogLyogb24gdGhlIHR5cGUgb2YgdGhlIFNIVUIuIERvIG5vdCB1c2UgdGhlc2UgI2RlZmluZXMgaW4gcGVyZm9ybWFuY2UgICAgKi8KIC8qIGNyaXRpY2FsIGNvZGUgIG9yIGxvb3BzIC0gdGhlcmUgaXMgYSBzbWFsbCBwZXJmb3JtYW5jZSBwZW5hbHR5LiAgICAgICovCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vc2h1YmlvLmggYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vc2h1YmlvLmgKaW5kZXggNjA1MjQyMi4uZWNiOGE0OSAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL3NodWJpby5oCisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9zaHViaW8uaApAQCAtMTM4Myw3ICsxMzgzLDcgQEAKICAqIHJlc3BvbnNlIGlzIGNhcHR1cmUgaW4gSVhTTSBhbmQgSVhTUywgYW5kIElYU1NbVkFMSURdIGlzIHNldC4gVGhlICAgICoKICAqIGVycmFudCBoZWFkZXIgaXMgdGhlcmVieSBjYXB0dXJlZCwgYW5kIG5vIGZ1cnRoZXIgc3B1cmlvdXMgcmVhZCAgICAgICoKICAqIHJlc3BvbmVzIGFyZSBjYXB0dXJlZCB1bnRpbCBJWFNTW1ZBTElEXSBpcyBjbGVhcmVkIGJ5IHNldHRpbmcgdGhlICAgICoKLSAqIGFwcHJvcHJpYXRlIGJpdCBpbiBJRUNMUi5FdmVyeXRpbWUgYSBzcHVyaW91cyByZWFkIHJlc3BvbnNlIGlzICAgICAgICoKKyAqIGFwcHJvcHJpYXRlIGJpdCBpbiBJRUNMUi4gRXZlcnkgdGltZSBhIHNwdXJpb3VzIHJlYWQgcmVzcG9uc2UgaXMgICAgICoKICAqIGRldGVjdGVkLCB0aGUgU1BVUl9SRCBiaXQgb2YgdGhlIFBSQiBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbmNvbWluZyAgICoKICAqIG1lc3NhZ2UncyBTSUROIGZpZWxkIGlzIHNldC4gVGhpcyBhbHdheXMgaGFwcGVucywgcmVnYXJsZXNzIG9mICAgICAgICoKICAqIHdoZXRoZXIgYSBoZWFkZXIgaXMgY2FwdHVyZWQuIFRoZSBwcm9ncmFtbWVyIHNob3VsZCBjaGVjayAgICAgICAgICAgICoKQEAgLTI3MzgsNyArMjczOCw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkJCQkJCQkJCSoKICAqIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyB3aGljaCB3ZXJlIG5vdCBmb3JtZWQgaW50byBzdHJ1Y3R1cmVzIGFyZQkqCi0gKiBwcm9iYWJseSBpbmRlbnRpY2FsIHRvIGFub3RoZXIgcmVnaXN0ZXIsIGFuZCB0aGUgbmFtZSBvZiB0aGUJCSoKKyAqIHByb2JhYmx5IGlkZW50aWNhbCB0byBhbm90aGVyIHJlZ2lzdGVyLCBhbmQgdGhlIG5hbWUgb2YgdGhlCQkqCiAgKiByZWdpc3RlciBpcyBwcm92aWRlZCBhZ2FpbnN0IGVhY2ggb2YgdGhlc2UgcmVnaXN0ZXJzLiBUaGlzCQkqCiAgKiBpbmZvcm1hdGlvbiBuZWVkcyB0byBiZSBjaGVja2VkIGNhcmVmdWxseQkJCQkqCiAgKgkJCQkJCQkJCSoKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvY3ljbG9uZS5jIGIvYXJjaC9pYTY0L2tlcm5lbC9jeWNsb25lLmMKaW5kZXggZDUyZjFmNy4uMWI4MTFjNiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2tlcm5lbC9jeWNsb25lLmMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC9jeWNsb25lLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgLnJhdGluZyAgICAgICAgID0gMzAwLAogICAgICAgICAucmVhZCAgICAgICAgICAgPSByZWFkX2N5Y2xvbmUsCiAgICAgICAgIC5tYXNrICAgICAgICAgICA9ICgxTEwgPDwgNDApIC0gMSwKLSAgICAgICAgLm11bHQgICAgICAgICAgID0gMCwgLyp0byBiZSBjYWx1Y2xhdGVkKi8KKyAgICAgICAgLm11bHQgICAgICAgICAgID0gMCwgLyp0byBiZSBjYWxjdWxhdGVkKi8KICAgICAgICAgLnNoaWZ0ICAgICAgICAgID0gMTYsCiAgICAgICAgIC5mbGFncyAgICAgICAgICA9IENMT0NLX1NPVVJDRV9JU19DT05USU5VT1VTLAogfTsKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvcGVyZm1vbl9kZWZhdWx0X3NtcGwuYyBiL2FyY2gvaWE2NC9rZXJuZWwvcGVyZm1vbl9kZWZhdWx0X3NtcGwuYwppbmRleCA1ZjYzN2JiLi4zMGM2NDRlIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL3BlcmZtb25fZGVmYXVsdF9zbXBsLmMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC9wZXJmbW9uX2RlZmF1bHRfc21wbC5jCkBAIC0xNTAsNyArMTUwLDcgQEAKIAkgKiBjdXJyZW50ID0gdGFzayBydW5uaW5nIGF0IHRoZSB0aW1lIG9mIHRoZSBvdmVyZmxvdy4KIAkgKgogCSAqIHBlci10YXNrIG1vZGU6Ci0JICogCS0gdGhpcyBpcyB1c3VzYWxseSB0aGUgdGFzayBiZWluZyBtb25pdG9yZWQuCisJICogCS0gdGhpcyBpcyB1c3VhbGx5IHRoZSB0YXNrIGJlaW5nIG1vbml0b3JlZC4KIAkgKiAJICBVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIGl0IG1pZ2h0IGJlIGEgZGlmZmVyZW50IHRhc2sKIAkgKgogCSAqIHN5c3RlbS13aWRlOgpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9zbXBib290LmMgYi9hcmNoL2lhNjQva2VybmVsL3NtcGJvb3QuYwppbmRleCA0NGYxMWVlLi4xNGVjNjQxIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL3NtcGJvb3QuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3NtcGJvb3QuYwpAQCAtNzAzLDcgKzcwMyw3IEBACiAJCQkJZGF0YS0+Y2hpcC0+aXJxX2Rpc2FibGUoZGF0YSk7CiAJCQkJZGF0YS0+Y2hpcC0+aXJxX3NldF9hZmZpbml0eShkYXRhLCBtYXNrLCBmYWxzZSk7CiAJCQkJZGF0YS0+Y2hpcC0+aXJxX2VuYWJsZShkYXRhKTsKLQkJCQlwcmludGsgKCJSZS10YXJnZXR0aW5nIENQRUkgdG8gY3B1ICVkXG4iLCBuZXdfY3BlaV9jcHUpOworCQkJCXByaW50ayAoIlJlLXRhcmdldGluZyBDUEVJIHRvIGNwdSAlZFxuIiwgbmV3X2NwZWlfY3B1KTsKIAkJCX0KIAkJfQogCQlpZiAoIWRhdGEpIHsKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9rZXJuZWwvdG9wb2xvZ3kuYyBiL2FyY2gvaWE2NC9rZXJuZWwvdG9wb2xvZ3kuYwppbmRleCAwYmFhMWJiLi4wZTBlMGNjIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL3RvcG9sb2d5LmMKKysrIGIvYXJjaC9pYTY0L2tlcm5lbC90b3BvbG9neS5jCkBAIC00Myw3ICs0Myw3IEBACiB7CiAjaWZkZWYgQ09ORklHX0FDUEkKIAkvKgotCSAqIElmIENQRUkgY2FuIGJlIHJlLXRhcmdldHRlZCBvciBpZiB0aGlzIGlzIG5vdAorCSAqIElmIENQRUkgY2FuIGJlIHJlLXRhcmdldGVkIG9yIGlmIHRoaXMgaXMgbm90CiAJICogQ1BFSSB0YXJnZXQsIHRoZW4gaXQgaXMgaG90cGx1Z2dhYmxlCiAJICovCiAJaWYgKGNhbl9jcGVpX3JldGFyZ2V0KCkgfHwgIWlzX2NwdV9jcGVpX3RhcmdldChudW0pKQpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2t2bS9wcm9jZXNzLmMgYi9hcmNoL2lhNjQva3ZtL3Byb2Nlc3MuYwppbmRleCBiYjg2MmZiLi5iMDM5ODc0IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva3ZtL3Byb2Nlc3MuYworKysgYi9hcmNoL2lhNjQva3ZtL3Byb2Nlc3MuYwpAQCAtOTg3LDcgKzk4Nyw3IEBACiAKIHN0YXRpYyB2b2lkIGt2bV9kb19yZXN1bWVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZtbV9zYW5pdHlfY2hlY2sodmNwdSk7IC8qR3VhcmFudGVlIHZjcHUgcnVuaW5nIG9uIGhlYWx0aHkgdm1tISovCisJdm1tX3Nhbml0eV9jaGVjayh2Y3B1KTsgLypHdWFyYW50ZWUgdmNwdSBydW5uaW5nIG9uIGhlYWx0aHkgdm1tISovCiAKIAlpZiAodGVzdF9hbmRfY2xlYXJfYml0KEtWTV9SRVFfUkVTVU1FLCAmdmNwdS0+cmVxdWVzdHMpKSB7CiAJCXZjcHVfZG9fcmVzdW1lKHZjcHUpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2xpYi9kb19jc3VtLlMgYi9hcmNoL2lhNjQvbGliL2RvX2NzdW0uUwppbmRleCA2YmVjMmZjLi4xYTQzMWE1IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvbGliL2RvX2NzdW0uUworKysgYi9hcmNoL2lhNjQvbGliL2RvX2NzdW0uUwpAQCAtMjAxLDcgKzIwMSw3IEBACiAJOzsKIChwNikJYWRkcyByZXN1bHQxWzBdPTEscmVzdWx0MVswXQogKHA5KQlici5jb25kLnNwdGsgLmRvX2NzdW1fZXhpdAkvLyBpZiAoY291bnQgPT0gMSkgZXhpdAotCS8vIEZhbGwgdGhyb3VnaCB0byBjYWx1Y3VsYXRlIHRoZSBjaGVja3N1bSwgZmVlZGluZyByZXN1bHQxWzBdIGFzCisJLy8gRmFsbCB0aHJvdWdoIHRvIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0sIGZlZWRpbmcgcmVzdWx0MVswXSBhcwogCS8vIHRoZSBpbml0aWFsIHZhbHVlIGluIHJlc3VsdDFbMF0uCiAJLy8KIAkvLyBDYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGxvYWRpbmcgdHdvIDgtYnl0ZSB3b3JkcyBwZXIgbG9vcC4KZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9zbi9rZXJuZWwvaXJxLmMgYi9hcmNoL2lhNjQvc24va2VybmVsL2lycS5jCmluZGV4IDEzOWMwMTguLjgxYTFmNGUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9zbi9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9pYTY0L3NuL2tlcm5lbC9pcnEuYwpAQCAtMjI3LDcgKzIyNyw3IEBACiB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIE9uIHN5c3RlbXMgd2hpY2ggc3VwcG9ydCBDUFUgZGlzYWJsaW5nIChTSHViMiksIGFsbCBlcnJvciBpbnRlcnJ1cHRzCi0gICAgICAgICAqIGFyZSB0YXJnZXR0ZWQgYXQgdGhlIGJvb3QgQ1BVLgorICAgICAgICAgKiBhcmUgdGFyZ2V0ZWQgYXQgdGhlIGJvb3QgQ1BVLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKGlzX3NodWIyKCkgJiYgc25fcHJvbV9mZWF0dXJlX2F2YWlsYWJsZShQUkZfQ1BVX0RJU0FCTEVfU1VQUE9SVCkpCiAgICAgICAgICAgICAgICAgc2V0X2lycV9hZmZpbml0eV9pbmZvKGlycSwgY3B1X3BoeXNpY2FsX2lkKDApLCAwKTsKQEAgLTQzNSw3ICs0MzUsNyBAQAogCS8qCiAJICogQnJpZGdlIHR5cGVzIGF0dGFjaGVkIHRvIFRJTyAoYW55dGhpbmcgYnV0IFBJQykgZG8gbm90IG5lZWQgdGhpcyBXQVIKIAkgKiBzaW5jZSB0aGV5IGRvIG5vdCB0YXJnZXQgU2h1YiBJSSBpbnRlcnJ1cHQgcmVnaXN0ZXJzLiAgSWYgdGhhdAotCSAqIGV2ZXIgY2hhbmdlcywgdGhpcyBjaGVjayBuZWVkcyB0byBhY2NvbW9kYXRlLgorCSAqIGV2ZXIgY2hhbmdlcywgdGhpcyBjaGVjayBuZWVkcyB0byBhY2NvbW1vZGF0ZS4KIAkgKi8KIAlpZiAoc25faXJxX2luZm8tPmlycV9icmlkZ2VfdHlwZSAhPSBQQ0lJT19BU0lDX1RZUEVfUElDKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvc24vcGNpL3BjaWJyL3BjaWJyX2RtYS5jIGIvYXJjaC9pYTY0L3NuL3BjaS9wY2lici9wY2licl9kbWEuYwppbmRleCBjNjU5YWQ1Li4zM2RlZjY2IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvc24vcGNpL3BjaWJyL3BjaWJyX2RtYS5jCisrKyBiL2FyY2gvaWE2NC9zbi9wY2kvcGNpYnIvcGNpYnJfZG1hLmMKQEAgLTIyNyw3ICsyMjcsNyBAQAogICogYWZ0ZXIgZG9pbmcgdGhlIHJlYWQuICBGb3IgUElDIHRoaXMgcm91dGluZSB0aGVuIGZvcmNlcyBhIGZha2UgaW50ZXJydXB0CiAgKiBvbiBhbm90aGVyIGxpbmUsIHdoaWNoIGlzIGxvZ2ljYWxseSBhc3NvY2lhdGVkIHdpdGggdGhlIHNsb3QgdGhhdCB0aGUgUElPCiAgKiBpcyBhZGRyZXNzZWQgdG8uICBJdCB0aGVuIHNwaW5zIHdoaWxlIHdhdGNoaW5nIHRoZSBtZW1vcnkgbG9jYXRpb24gdGhhdAotICogdGhlIGludGVycnVwdCBpcyB0YXJnZXR0ZWQgdG8uICBXaGVuIHRoZSBpbnRlcnJ1cHQgcmVzcG9uc2UgYXJyaXZlcywgd2UgCisgKiB0aGUgaW50ZXJydXB0IGlzIHRhcmdldGVkIHRvLiAgV2hlbiB0aGUgaW50ZXJydXB0IHJlc3BvbnNlIGFycml2ZXMsIHdlIAogICogYXJlIHN1cmUgdGhhdCB0aGUgRE1BIGhhcyBsYW5kZWQgaW4gbWVtb3J5IGFuZCBpdCBpcyBzYWZlIGZvciB0aGUgZHJpdmVyCiAgKiB0byBwcm9jZWVkLglGb3IgVElPQ1AgdXNlIHRoZSBEZXZpY2UoeCkgV3JpdGUgUmVxdWVzdCBCdWZmZXIgRmx1c2ggCiAgKiBCcmlkZ2UgcmVnaXN0ZXIgc2luY2UgaXQgZW5zdXJlcyB0aGUgZGF0YSBoYXMgZW50ZXJlZCB0aGUgY29oZXJlbmNlIGRvbWFpbiwKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9tMzIxMDR1dC9tMzIxMDR1dF9wbGQuaCBiL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9tMzIxMDR1dC9tMzIxMDR1dF9wbGQuaAppbmRleCAyZGM4OWQ2Li4xZmVhZTk3IDEwMDY0NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vbTMyMTA0dXQvbTMyMTA0dXRfcGxkLmgKKysrIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL20zMjEwNHV0L20zMjEwNHV0X3BsZC5oCkBAIC00LDcgKzQsNyBAQAogLyoKICAqIGluY2x1ZGUvYXNtLW0zMnIvbTMyMTA0dXQvbTMyMTA0dXRfcGxkLmgKICAqCi0gKiBEZWZpbml0aW9ucyBmb3IgUHJvZ3JhbWFibGUgTG9naWMgRGV2aWNlKFBMRCkgb24gTTMyMTA0VVQgYm9hcmQuCisgKiBEZWZpbml0aW9ucyBmb3IgUHJvZ3JhbW1hYmxlIExvZ2ljIERldmljZShQTEQpIG9uIE0zMjEwNFVUIGJvYXJkLgogICogQmFzZWQgb24gbTMyNzAwdXRfcGxkLmgKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDIJVGFrZW8gVGFrYWhhc2hpCmRpZmYgLS1naXQgYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vbTMyNzAwdXQvbTMyNzAwdXRfcGxkLmggYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vbTMyNzAwdXQvbTMyNzAwdXRfcGxkLmgKaW5kZXggNTc2MjNiZS4uMzUyOTQ2NyAxMDA2NDQKLS0tIGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL20zMjcwMHV0L20zMjcwMHV0X3BsZC5oCisrKyBiL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9tMzI3MDB1dC9tMzI3MDB1dF9wbGQuaApAQCAtNCw3ICs0LDcgQEAKIC8qCiAgKiBpbmNsdWRlL2FzbS1tMzJyL20zMjcwMHV0L20zMjcwMHV0X3BsZC5oCiAgKgotICogRGVmaW5pdGlvbnMgZm9yIFByb2dyYW1hYmxlIExvZ2ljIERldmljZShQTEQpIG9uIE0zMjcwMFVUIGJvYXJkLgorICogRGVmaW5pdGlvbnMgZm9yIFByb2dyYW1tYWJsZSBMb2dpYyBEZXZpY2UoUExEKSBvbiBNMzI3MDBVVCBib2FyZC4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDIJVGFrZW8gVGFrYWhhc2hpCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL29wc3B1dC9vcHNwdXRfcGxkLmggYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vb3BzcHV0L29wc3B1dF9wbGQuaAppbmRleCAzZjExZWExLi42OTAxNDAxIDEwMDY0NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vb3BzcHV0L29wc3B1dF9wbGQuaAorKysgYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vb3BzcHV0L29wc3B1dF9wbGQuaApAQCAtNCw3ICs0LDcgQEAKIC8qCiAgKiBpbmNsdWRlL2FzbS1tMzJyL29wc3B1dC9vcHNwdXRfcGxkLmgKICAqCi0gKiBEZWZpbml0aW9ucyBmb3IgUHJvZ3JhbWFibGUgTG9naWMgRGV2aWNlKFBMRCkgb24gT1BTUFVUIGJvYXJkLgorICogRGVmaW5pdGlvbnMgZm9yIFByb2dyYW1tYWJsZSBMb2dpYyBEZXZpY2UoUExEKSBvbiBPUFNQVVQgYm9hcmQuCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDAyCVRha2VvIFRha2FoYXNoaQogICoKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmgKaW5kZXggYmNhMzQ3NS4uOWNkYWY3MyAxMDA2NDQKLS0tIGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmgKKysrIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgc2V0X3B0ZV9hdChtbSxhZGRyLHB0ZXAscHRldmFsKSBzZXRfcHRlKHB0ZXAscHRldmFsKQogCiAvKgotICogKHBtZHMgYXJlIGZvbGRlZCBpbnRvIHBnZHMgc28gdGhpcyBkb2VzbnQgZ2V0IGFjdHVhbGx5IGNhbGxlZCwKKyAqIChwbWRzIGFyZSBmb2xkZWQgaW50byBwZ2RzIHNvIHRoaXMgZG9lc24ndCBnZXQgYWN0dWFsbHkgY2FsbGVkLAogICogYnV0IHRoZSBkZWZpbmUgaXMgbmVlZGVkIGZvciBhIGdlbmVyaWMgaW5saW5lIGZ1bmN0aW9uLikKICAqLwogI2RlZmluZSBzZXRfcG1kKHBtZHB0ciwgcG1kdmFsKSAoKihwbWRwdHIpID0gcG1kdmFsKQpkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL21tL2ZhdWx0LmMgYi9hcmNoL20zMnIvbW0vZmF1bHQuYwppbmRleCBiOGVjMDAyLi4yYzlhZWI0IDEwMDY0NAotLS0gYS9hcmNoL20zMnIvbW0vZmF1bHQuYworKysgYi9hcmNoL20zMnIvbW0vZmF1bHQuYwpAQCAtMTIwLDcgKzEyMCw3IEBACiAKIAkvKiBXaGVuIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbCB3ZSBleHBlY3QgZmF1bHRzIHRvIG9jY3VyIG9ubHkgdG8KIAkgKiBhZGRyZXNzZXMgaW4gdXNlciBzcGFjZS4gIEFsbCBvdGhlciBmYXVsdHMgcmVwcmVzZW50IGVycm9ycyBpbiB0aGUKLQkgKiBrZXJuZWwgYW5kIHNob3VsZCBnZW5lcmF0ZSBhbiBPT1BTLiAgVW5mb3J0dW5hdGx5LCBpbiB0aGUgY2FzZSBvZiBhbgorCSAqIGtlcm5lbCBhbmQgc2hvdWxkIGdlbmVyYXRlIGFuIE9PUFMuICBVbmZvcnR1bmF0ZWx5LCBpbiB0aGUgY2FzZSBvZiBhbgogCSAqIGVycm9uZW91cyBmYXVsdCBvY2N1cnJpbmcgaW4gYSBjb2RlIHBhdGggd2hpY2ggYWxyZWFkeSBob2xkcyBtbWFwX3NlbQogCSAqIHdlIHdpbGwgZGVhZGxvY2sgYXR0ZW1wdGluZyB0byB2YWxpZGF0ZSB0aGUgZmF1bHQgYWdhaW5zdCB0aGUKIAkgKiBhZGRyZXNzIHNwYWNlLiAgTHVja2lseSB0aGUga2VybmVsIG9ubHkgdmFsaWRseSByZWZlcmVuY2VzIHVzZXIKQEAgLTEyOCw3ICsxMjgsNyBAQAogCSAqIGV4Y2VwdGlvbnMgdGFibGUuCiAJICoKIAkgKiBBcyB0aGUgdmFzdCBtYWpvcml0eSBvZiBmYXVsdHMgd2lsbCBiZSB2YWxpZCB3ZSB3aWxsIG9ubHkgcGVyZm9ybQotCSAqIHRoZSBzb3VyY2UgcmVmZXJlbmNlIGNoZWNrIHdoZW4gdGhlcmUgaXMgYSBwb3NzaWJpbHR5IG9mIGEgZGVhZGxvY2suCisJICogdGhlIHNvdXJjZSByZWZlcmVuY2UgY2hlY2sgd2hlbiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IG9mIGEgZGVhZGxvY2suCiAJICogQXR0ZW1wdCB0byBsb2NrIHRoZSBhZGRyZXNzIHNwYWNlLCBpZiB3ZSBjYW5ub3Qgd2UgdGhlbiB2YWxpZGF0ZSB0aGUKIAkgKiBzb3VyY2UuICBJZiB0aGlzIGlzIGludmFsaWQgd2UgY2FuIHNraXAgdGhlIGFkZHJlc3Mgc3BhY2UgY2hlY2ssCiAJICogdGh1cyBhdm9pZGluZyB0aGUgZGVhZGxvY2suCmRpZmYgLS1naXQgYS9hcmNoL202OGsvYXRhcmkvYXRha2V5Yi5jIGIvYXJjaC9tNjhrL2F0YXJpL2F0YWtleWIuYwppbmRleCA1ODkwODk3Li5iOTk1NTEzIDEwMDY0NAotLS0gYS9hcmNoL202OGsvYXRhcmkvYXRha2V5Yi5jCisrKyBiL2FyY2gvbTY4ay9hdGFyaS9hdGFrZXliLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICogaXQncyByZWFsbHkgaGFyZCB0byBkZWNpZGUgd2hldGhlciB0aGV5J3JlIG1vdXNlIG9yIGtleWJvYXJkIGJ5dGVzLiBTaW5jZQogICogb3ZlcnJ1bnMgdXN1YWxseSBvY2N1ciB3aGVuIG1vdmluZyB0aGUgQXRhcmkgbW91c2UgcmFwaWRseSwgdGhleSdyZSBzZWVuIGFzCiAgKiBtb3VzZSBieXRlcyBoZXJlLiBJZiB0aGlzIGlzIHdyb25nLCBvbmx5IGEgbWFrZSBjb2RlIG9mIHRoZSBrZXlib2FyZCBnZXRzCi0gKiBsb3N0LCB3aGljaCBpc24ndCB0b28gYmFkLiBMb29zaW5nIGEgYnJlYWsgY29kZSB3b3VsZCBiZSBkaXNhc3Ryb3VzLAorICogbG9zdCwgd2hpY2ggaXNuJ3QgdG9vIGJhZC4gTG9zaW5nIGEgYnJlYWsgY29kZSB3b3VsZCBiZSBkaXNhc3Ryb3VzLAogICogYmVjYXVzZSB0aGVuIHRoZSBrZXlib2FyZCByZXBlYXQgc3RyaWtlcy4uLgogICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9mcHNwMDQwL2JpbmRlYy5TIGIvYXJjaC9tNjhrL2Zwc3AwNDAvYmluZGVjLlMKaW5kZXggNzJmMTE1OS4uZjJlNzk1MiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2Zwc3AwNDAvYmluZGVjLlMKKysrIGIvYXJjaC9tNjhrL2Zwc3AwNDAvYmluZGVjLlMKQEAgLTYwOSw3ICs2MDksNyBAQAogfCAgICAgIEE2LiAgVGhpcyB0ZXN0IG9jY3VycyBvbmx5IG9uIHRoZSBmaXJzdCBwYXNzLiAgSWYgdGhlCiB8ICAgICAgcmVzdWx0IGlzIGV4YWN0bHkgMTBeTEVOLCBkZWNyZW1lbnQgSUxPRyBhbmQgZGl2aWRlCiB8ICAgICAgdGhlIG1hbnRpc3NhIGJ5IDEwLiAgVGhlIGNhbGN1bGF0aW9uIG9mIDEwXkxFTiBjYW5ub3QKLXwgICAgICBiZSBpbmV4YWN0LCBzaW5jZSBhbGwgcG93ZXJzIG9mIHRlbiB1cHRvIDEwXjI3IGFyZSBleGFjdAorfCAgICAgIGJlIGluZXhhY3QsIHNpbmNlIGFsbCBwb3dlcnMgb2YgdGVuIHVwIHRvIDEwXjI3IGFyZSBleGFjdAogfCAgICAgIGluIGV4dGVuZGVkIHByZWNpc2lvbiwgc28gdGhlIHVzZSBvZiBhIHByZXZpb3VzIHBvd2VyLW9mLXRlbgogfCAgICAgIHRhYmxlIHdpbGwgaW50cm9kdWNlIG5vIGVycm9yLgogfApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9mcHNwLlMgYi9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2Zwc3AuUwppbmRleCAyNmU4NWUyLi43OGNiNjBmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2Zwc3AuUworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2Zwc3AuUwpAQCAtMTE4MTMsNyArMTE4MTMsNyBAQAogCWJuZS5iCQlmbXVsX3VuZmxfZW5hX3NkCSMgbm8sIHNnbCBvciBkYmwKIAogIyBpZiB0aGUgcm5kIG1vZGUgaXMgYW55dGhpbmcgYnV0IFJaLCB0aGVuIHdlIGhhdmUgdG8gcmUtZG8gdGhlIGFib3ZlCi0jIG11bHRpcGxpY2F0aW9uIGJlY3Vhc2Ugd2UgdXNlZCBSWiBmb3IgYWxsLgorIyBtdWx0aXBsaWNhdGlvbiBiZWNhdXNlIHdlIHVzZWQgUlogZm9yIGFsbC4KIAlmbW92LmwJCUxfU0NSMyglYTYpLCVmcGNyCSMgc2V0IEZQQ1IKIAogZm11bF91bmZsX2VuYV9jb250OgpAQCAtMTgwOTUsNyArMTgwOTUsNyBAQAogCiAJcnRzCiAKLSMgYWRkcmVzaW5nIG1vZGUgaXMgcG9zdC1pbmNyZW1lbnQuIHdyaXRlIHRoZSByZXN1bHQgYnl0ZS4gaWYgdGhlIHdyaXRlCisjIGFkZHJlc3NpbmcgbW9kZSBpcyBwb3N0LWluY3JlbWVudC4gd3JpdGUgdGhlIHJlc3VsdCBieXRlLiBpZiB0aGUgd3JpdGUKICMgZmFpbHMgdGhlbiBkb24ndCB1cGRhdGUgdGhlIGFkZHJlc3MgcmVnaXN0ZXIuIGlmIHdyaXRlIHBhc3NlcyB0aGVuCiAjIGNhbGwgaW5jX2FyZWcoKSB0byB1cGRhdGUgdGhlIGFkZHJlc3MgcmVnaXN0ZXIuCiBmc2NjX21lbV9pbmM6CkBAIC0yMDg3Niw3ICsyMDg3Niw3IEBACiAJc3dhcAkJJWQwCQkJIyBkMCBub3cgaW4gdXBwZXIgd29yZAogCWxzbC5sCQkmMHg0LCVkMAkJIyBkMCBpbiBwcm9wZXIgcGxhY2UgZm9yIGRibCBwcmVjIGV4cAogCXRzdC5iCQlGVEVNUF9FWCglYTApCQkjIHRlc3Qgc2lnbgotCWJwbC5iCQlkc3RfZ2V0X2RtYW4JCSMgaWYgcG9zdGl2ZSwgZ28gcHJvY2VzcyBtYW50aXNzYQorCWJwbC5iCQlkc3RfZ2V0X2RtYW4JCSMgaWYgcG9zaXRpdmUsIGdvIHByb2Nlc3MgbWFudGlzc2EKIAlic2V0CQkmMHgxZiwlZDAJCSMgaWYgbmVnYXRpdmUsIHNldCBzaWduCiBkc3RfZ2V0X2RtYW46CiAJbW92LmwJCUZURU1QX0hJKCVhMCksJWQxCSMgZ2V0IG1zIG1hbnRpc3NhCkBAIC0yMjk0Myw3ICsyMjk0Myw3IEBACiAjCUZQX1NSQyhhNikgPSBwYWNrZWQgb3BlcmFuZCBub3cgYXMgYSBiaW5hcnkgRlAgbnVtYmVyCQkjCiAjCQkJCQkJCQkJIwogIyBBTEdPUklUSE0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioJIwotIwlHZXQgdGhlIGNvcnJlY3QgPGVhPiB3aGloYyBpcyB0aGUgdmFsdWUgb24gdGhlIGV4Y2VwdGlvbiBzdGFjawkjCisjCUdldCB0aGUgY29ycmVjdCA8ZWE+IHdoaWNoIGlzIHRoZSB2YWx1ZSBvbiB0aGUgZXhjZXB0aW9uIHN0YWNrCSMKICMgZnJhbWUgdy8gbWF5YmUgYSBjb3JyZWN0aW9uIGZhY3RvciBpZiB0aGUgPGVhPiBpcyAtKGFuKSBvciAoYW4pKy4JIwogIyBUaGVuLCBmZXRjaCB0aGUgb3BlcmFuZCBmcm9tIG1lbW9yeS4gSWYgdGhlIGZldGNoIGZhaWxzLCBleGl0CQkjCiAjIHRocm91Z2ggZmFjY19pbl94KCkuCQkJCQkJCSMKQEAgLTI0MDk2LDcgKzI0MDk2LDcgQEAKICMgICAgICBBNi4gIFRoaXMgdGVzdCBvY2N1cnMgb25seSBvbiB0aGUgZmlyc3QgcGFzcy4gIElmIHRoZQogIyAgICAgIHJlc3VsdCBpcyBleGFjdGx5IDEwXkxFTiwgZGVjcmVtZW50IElMT0cgYW5kIGRpdmlkZQogIyAgICAgIHRoZSBtYW50aXNzYSBieSAxMC4gIFRoZSBjYWxjdWxhdGlvbiBvZiAxMF5MRU4gY2Fubm90Ci0jICAgICAgYmUgaW5leGFjdCwgc2luY2UgYWxsIHBvd2VycyBvZiB0ZW4gdXB0byAxMF4yNyBhcmUgZXhhY3QKKyMgICAgICBiZSBpbmV4YWN0LCBzaW5jZSBhbGwgcG93ZXJzIG9mIHRlbiB1cCB0byAxMF4yNyBhcmUgZXhhY3QKICMgICAgICBpbiBleHRlbmRlZCBwcmVjaXNpb24sIHNvIHRoZSB1c2Ugb2YgYSBwcmV2aW91cyBwb3dlci1vZi10ZW4KICMgICAgICB0YWJsZSB3aWxsIGludHJvZHVjZSBubyBlcnJvci4KICMKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvcGZwc3AuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvcGZwc3AuUwppbmRleCBlNzFiYTBhLi40YWVkZWY5IDEwMDY0NAotLS0gYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL3BmcHNwLlMKKysrIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9wZnBzcC5TCkBAIC03Nzc3LDcgKzc3NzcsNyBAQAogCXN3YXAJCSVkMAkJCSMgZDAgbm93IGluIHVwcGVyIHdvcmQKIAlsc2wubAkJJjB4NCwlZDAJCSMgZDAgaW4gcHJvcGVyIHBsYWNlIGZvciBkYmwgcHJlYyBleHAKIAl0c3QuYgkJRlRFTVBfRVgoJWEwKQkJIyB0ZXN0IHNpZ24KLQlicGwuYgkJZHN0X2dldF9kbWFuCQkjIGlmIHBvc3RpdmUsIGdvIHByb2Nlc3MgbWFudGlzc2EKKwlicGwuYgkJZHN0X2dldF9kbWFuCQkjIGlmIHBvc2l0aXZlLCBnbyBwcm9jZXNzIG1hbnRpc3NhCiAJYnNldAkJJjB4MWYsJWQwCQkjIGlmIG5lZ2F0aXZlLCBzZXQgc2lnbgogZHN0X2dldF9kbWFuOgogCW1vdi5sCQlGVEVNUF9ISSglYTApLCVkMQkjIGdldCBtcyBtYW50aXNzYQpAQCAtODI0NCw3ICs4MjQ0LDcgQEAKIAlibmUuYgkJZm11bF91bmZsX2VuYV9zZAkjIG5vLCBzZ2wgb3IgZGJsCiAKICMgaWYgdGhlIHJuZCBtb2RlIGlzIGFueXRoaW5nIGJ1dCBSWiwgdGhlbiB3ZSBoYXZlIHRvIHJlLWRvIHRoZSBhYm92ZQotIyBtdWx0aXBsaWNhdGlvbiBiZWN1YXNlIHdlIHVzZWQgUlogZm9yIGFsbC4KKyMgbXVsdGlwbGljYXRpb24gYmVjYXVzZSB3ZSB1c2VkIFJaIGZvciBhbGwuCiAJZm1vdi5sCQlMX1NDUjMoJWE2KSwlZnBjcgkjIHNldCBGUENSCiAKIGZtdWxfdW5mbF9lbmFfY29udDoKQEAgLTEyOTAzLDcgKzEyOTAzLDcgQEAKICMJRlBfU1JDKGE2KSA9IHBhY2tlZCBvcGVyYW5kIG5vdyBhcyBhIGJpbmFyeSBGUCBudW1iZXIJCSMKICMJCQkJCQkJCQkjCiAjIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCi0jCUdldCB0aGUgY29ycmVjdCA8ZWE+IHdoaWhjIGlzIHRoZSB2YWx1ZSBvbiB0aGUgZXhjZXB0aW9uIHN0YWNrCSMKKyMJR2V0IHRoZSBjb3JyZWN0IDxlYT4gd2hpY2ggaXMgdGhlIHZhbHVlIG9uIHRoZSBleGNlcHRpb24gc3RhY2sJIwogIyBmcmFtZSB3LyBtYXliZSBhIGNvcnJlY3Rpb24gZmFjdG9yIGlmIHRoZSA8ZWE+IGlzIC0oYW4pIG9yIChhbikrLgkjCiAjIFRoZW4sIGZldGNoIHRoZSBvcGVyYW5kIGZyb20gbWVtb3J5LiBJZiB0aGUgZmV0Y2ggZmFpbHMsIGV4aXQJCSMKICMgdGhyb3VnaCBmYWNjX2luX3goKS4JCQkJCQkJIwpAQCAtMTQwNTYsNyArMTQwNTYsNyBAQAogIyAgICAgIEE2LiAgVGhpcyB0ZXN0IG9jY3VycyBvbmx5IG9uIHRoZSBmaXJzdCBwYXNzLiAgSWYgdGhlCiAjICAgICAgcmVzdWx0IGlzIGV4YWN0bHkgMTBeTEVOLCBkZWNyZW1lbnQgSUxPRyBhbmQgZGl2aWRlCiAjICAgICAgdGhlIG1hbnRpc3NhIGJ5IDEwLiAgVGhlIGNhbGN1bGF0aW9uIG9mIDEwXkxFTiBjYW5ub3QKLSMgICAgICBiZSBpbmV4YWN0LCBzaW5jZSBhbGwgcG93ZXJzIG9mIHRlbiB1cHRvIDEwXjI3IGFyZSBleGFjdAorIyAgICAgIGJlIGluZXhhY3QsIHNpbmNlIGFsbCBwb3dlcnMgb2YgdGVuIHVwIHRvIDEwXjI3IGFyZSBleGFjdAogIyAgICAgIGluIGV4dGVuZGVkIHByZWNpc2lvbiwgc28gdGhlIHVzZSBvZiBhIHByZXZpb3VzIHBvd2VyLW9mLXRlbgogIyAgICAgIHRhYmxlIHdpbGwgaW50cm9kdWNlIG5vIGVycm9yLgogIwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2F0YXJpaW50cy5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2F0YXJpaW50cy5oCmluZGV4IGY1OTc4OTIuLjY1NmJiYmYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9hdGFyaWludHMuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vYXRhcmlpbnRzLmgKQEAgLTE0Niw3ICsxNDYsNyBAQAogCiAvKgogICoge2VuLGRpc31hYmxlX2lycSBoYXZlIHRoZSB1c3VhbCBzZW1hbnRpY3Mgb2YgdGVtcG9yYXJ5IGJsb2NraW5nIHRoZQotICogaW50ZXJydXB0LCBidXQgbm90IGxvb3NpbmcgcmVxdWVzdHMgdGhhdCBoYXBwZW4gYmV0d2VlbiBkaXNhYmxpbmcgYW5kCisgKiBpbnRlcnJ1cHQsIGJ1dCBub3QgbG9zaW5nIHJlcXVlc3RzIHRoYXQgaGFwcGVuIGJldHdlZW4gZGlzYWJsaW5nIGFuZAogICogZW5hYmxpbmcuIFRoaXMgaXMgZG9uZSB3aXRoIHRoZSBNRlAgbWFzayByZWdpc3RlcnMuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2Jvb3RzdGQuaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9ib290c3RkLmgKaW5kZXggYmRjMWE0YS4uZTUxOGY1YSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2Jvb3RzdGQuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vYm9vdHN0ZC5oCkBAIC0zMSw3ICszMSw3IEBACiAjZGVmaW5lIF9fQk5fZmxhc2hfd3JpdGVfcmFuZ2UJCTIwCiAKIC8qIENhbGxpbmcgY29udmVudGlvbnMgY29tcGF0aWJsZSB0byAodUMpbGludXgvNjhrCi0gKiBXZSB1c2Ugc2ltbWlsYXIgbWFjcm9zIHRvIGNhbGwgaW50byB0aGUgYm9vdGxvYWRlciBhcyBmb3IgdUNsaW51eAorICogV2UgdXNlIHNpbWlsYXIgbWFjcm9zIHRvIGNhbGwgaW50byB0aGUgYm9vdGxvYWRlciBhcyBmb3IgdUNsaW51eAogICovCiAKICNkZWZpbmUgX19ic2NfcmV0dXJuKHR5cGUsIHJlcykgXApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2NvbW1wcm9jLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vY29tbXByb2MuaAppbmRleCBlZGY1ZWI2Li5hNzM5OTg1IDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vY29tbXByb2MuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vY29tbXByb2MuaApAQCAtODgsNyArODgsNyBAQAogCiAKIC8qIHJ4IGJkIHN0YXR1cy9jb250cm9sIGJpdHMgKi8KLSNkZWZpbmUgQkRfU0NfRU1QVFkJKCh1c2hvcnQpMHg4MDAwKQkvKiBSZWNpZXZlIGlzIGVtcHR5ICovCisjZGVmaW5lIEJEX1NDX0VNUFRZCSgodXNob3J0KTB4ODAwMCkJLyogUmVjZWl2ZSBpcyBlbXB0eSAqLwogI2RlZmluZSBCRF9TQ19XUkFQCSgodXNob3J0KTB4MjAwMCkJLyogTGFzdCBidWZmZXIgZGVzY3JpcHRvciBpbiB0YWJsZSAqLwogI2RlZmluZSBCRF9TQ19JTlRSUFQJKCh1c2hvcnQpMHgxMDAwKQkvKiBJbnRlcnJ1cHQgb24gY2hhbmdlICovCiAjZGVmaW5lIEJEX1NDX0xBU1QJKCh1c2hvcnQpMHgwODAwKQkvKiBMYXN0IGJ1ZmZlciBpbiBmcmFtZSBPUiBjb250cm9sIGNoYXIgKi8KQEAgLTk2LDcgKzk2LDcgQEAKICNkZWZpbmUgQkRfU0NfRklSU1QJKCh1c2hvcnQpMHgwNDAwKQkvKiAxc3QgYnVmZmVyIGluIGFuIEhETEMgZnJhbWUgKi8KICNkZWZpbmUgQkRfU0NfQUREUgkoKHVzaG9ydCkweDA0MDApCS8qIDFzdCBieXRlIGlzIGEgbXVsdGlkcm9wIGFkZHJlc3MgKi8KIAotI2RlZmluZSBCRF9TQ19DTQkoKHVzaG9ydCkweDAyMDApCS8qIENvbnRpbm91cyBtb2RlICovCisjZGVmaW5lIEJEX1NDX0NNCSgodXNob3J0KTB4MDIwMCkJLyogQ29udGludW91cyBtb2RlICovCiAjZGVmaW5lIEJEX1NDX0lECSgodXNob3J0KTB4MDEwMCkJLyogUmVjZWl2ZWQgdG9vIG1hbnkgaWRsZXMgKi8KIAogI2RlZmluZSBCRF9TQ19BTQkoKHVzaG9ydCkweDAwODApCS8qIE11bHRpZHJvcCBhZGRyZXNzIG1hdGNoICovCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vZGVsYXlfbm8uaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9kZWxheV9uby5oCmluZGV4IDU1Y2JkNjIuLmMzYTBlZGMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9kZWxheV9uby5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9kZWxheV9uby5oCkBAIC0xNiw3ICsxNiw3IEBACiAJICogbG9uZyB3b3JkIGFsaWdubWVudCB3aGljaCBpcyB0aGUgZmFzdGVyIHZlcnNpb24uCiAJICogVGhlIDB4NGE4ZSBpcyBvZiBjb3Vyc2UgYSAndHN0bCAlZnAnIGluc3RydWN0aW9uLiAgVGhpcyBpcyBiZXR0ZXIKIAkgKiB0aGFuIHVzaW5nIGEgTk9QICgweDRlNzEpIGluc3RydWN0aW9uIGJlY2F1c2UgaXQgZXhlY3V0ZXMgaW4gb25lCi0JICogY3ljbGUgbm90IHRocmVlIGFuZCBkb2Vzbid0IGFsbG93IGZvciBhbiBhcmJpdGFyeSBkZWxheSB3YWl0aW5nCisJICogY3ljbGUgbm90IHRocmVlIGFuZCBkb2Vzbid0IGFsbG93IGZvciBhbiBhcmJpdHJhcnkgZGVsYXkgd2FpdGluZwogCSAqIGZvciBidXMgY3ljbGVzIHRvIGZpbmlzaC4gIEFsc28gZnAvYTYgaXNuJ3QgbGlrZWx5IHRvIGNhdXNlIGEKIAkgKiBzdGFsbCB3YWl0aW5nIGZvciB0aGUgcmVnaXN0ZXIgdG8gYmVjb21lIHZhbGlkIGlmIHN1Y2ggaXMgYWRkZWQKIAkgKiB0byB0aGUgY29sZGZpcmUgYXQgc29tZSBzdGFnZS4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9ncGlvLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vZ3Bpby5oCmluZGV4IGM2NGM3YjcuLmIyMDQ2ODMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9ncGlvLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2dwaW8uaApAQCAtMzEsNyArMzEsNyBAQAogICogR1BJT3MgaW4gYSBzaW5nbGUgY29udHJvbCBhcmVhLCBvdGhlcnMgaGF2ZSBzb21lIEdQSU9zIGltcGxlbWVudGVkIGluCiAgKiBkaWZmZXJlbnQgbW9kdWxlcy4KICAqCi0gKiBUaGlzIGltcGxlbWVudGF0aW9uIGF0dGVtcHRzIGFjY29tb2RhdGUgdGhlIGRpZmZlcmVuY2VzIHdoaWxlIHByZXNlbnRpbmcKKyAqIFRoaXMgaW1wbGVtZW50YXRpb24gYXR0ZW1wdHMgYWNjb21tb2RhdGUgdGhlIGRpZmZlcmVuY2VzIHdoaWxlIHByZXNlbnRpbmcKICAqIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdGhhdCB3aWxsIG9wdGltaXplIHRvIGFzIGZldyBpbnN0cnVjdGlvbnMgYXMgcG9zc2libGUuCiAgKi8KICNpZiBkZWZpbmVkKENPTkZJR19NNTIwNikgfHwgZGVmaW5lZChDT05GSUdfTTUyMDZlKSB8fCBcCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyMHhzaW0uaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIweHNpbS5oCmluZGV4IDU1ZDVhNGM1Li5iNmJmMmM1IDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyMHhzaW0uaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyMHhzaW0uaApAQCAtMTU3LDcgKzE1Nyw3IEBACiAjZGVmaW5lCU1DRkZFQ19TSVpFCQkweDgwMAkJLyogUmVnaXN0ZXIgc2V0IHNpemUgKi8KIAogLyoKLSAqICBSZXNldCBDb250cm9sbCBVbml0LgorICogIFJlc2V0IENvbnRyb2wgVW5pdC4KICAqLwogI2RlZmluZQlNQ0ZfUkNSCQkJMHhGQzBBMDAwMAogI2RlZmluZQlNQ0ZfUlNSCQkJMHhGQzBBMDAwMQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201MjN4c2ltLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyM3hzaW0uaAppbmRleCA4OTk2ZGY2Li42MjM1OTIxIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyM3hzaW0uaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyM3hzaW0uaApAQCAtNDgsNyArNDgsNyBAQAogI2RlZmluZQlNQ0ZTSU1fRE1SMQkJKE1DRl9JUFNCQVIgKyAweDU0KQkvKiBBZGRyZXNzIG1hc2sgMSAqLwogCiAvKgotICogIFJlc2V0IENvbnRyb2xsIFVuaXQgKHJlbGF0aXZlIHRvIElQU0JBUikuCisgKiAgUmVzZXQgQ29udHJvbCBVbml0IChyZWxhdGl2ZSB0byBJUFNCQVIpLgogICovCiAjZGVmaW5lCU1DRl9SQ1IJCQkweDExMDAwMAogI2RlZmluZQlNQ0ZfUlNSCQkJMHgxMTAwMDEKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTI3eHNpbS5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201Mjd4c2ltLmgKaW5kZXggNzQ4NTVhNi4uNzU4ODEwZSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201Mjd4c2ltLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201Mjd4c2ltLmgKQEAgLTI4Myw3ICsyODMsNyBAQAogI2VuZGlmCiAKIC8qCi0gKiAgUmVzZXQgQ29udHJvbGwgVW5pdCAocmVsYXRpdmUgdG8gSVBTQkFSKS4KKyAqICBSZXNldCBDb250cm9sIFVuaXQgKHJlbGF0aXZlIHRvIElQU0JBUikuCiAgKi8KICNkZWZpbmUJTUNGX1JDUgkJCTB4MTEwMDAwCiAjZGVmaW5lCU1DRl9SU1IJCQkweDExMDAwMQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201MzA3c2ltLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUzMDdzaW0uaAppbmRleCA0Yzk0YzAxLi44Zjg2MDlmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUzMDdzaW0uaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUzMDdzaW0uaApAQCAtMjksNyArMjksNyBAQAogI2RlZmluZQlNQ0ZTSU1fU1dTUgkJMHgwMwkJLyogU1cgV2F0Y2hkb2cgc2VydmljZSAoci93KSAqLwogI2RlZmluZQlNQ0ZTSU1fUEFSCQkweDA0CQkvKiBQaW4gQXNzaWdubWVudCByZWcgKHIvdykgKi8KICNkZWZpbmUJTUNGU0lNX0lSUVBBUgkJMHgwNgkJLyogSW50ZXJydXB0IEFzc2lnbm1lbnQgcmVnIChyL3cpICovCi0jZGVmaW5lCU1DRlNJTV9QTExDUgkJMHgwOAkJLyogUExMIENvbnRyb2xsIFJlZyovCisjZGVmaW5lCU1DRlNJTV9QTExDUgkJMHgwOAkJLyogUExMIENvbnRyb2wgUmVnKi8KICNkZWZpbmUJTUNGU0lNX01QQVJLCQkweDBDCQkvKiBCVVMgTWFzdGVyIENvbnRyb2wgUmVnKi8KICNkZWZpbmUJTUNGU0lNX0lQUgkJMHg0MAkJLyogSW50ZXJydXB0IFBlbmQgcmVnIChyL3cpICovCiAjZGVmaW5lCU1DRlNJTV9JTVIJCTB4NDQJCS8qIEludGVycnVwdCBNYXNrIHJlZyAoci93KSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201NDA3c2ltLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTU0MDdzaW0uaAppbmRleCA3NjJjNThjLi41MWUwMGIwIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTU0MDdzaW0uaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTU0MDdzaW0uaApAQCAtMjksNyArMjksNyBAQAogI2RlZmluZQlNQ0ZTSU1fU1dTUgkJMHgwMwkJLyogU1cgV2F0Y2hkb2cgc2VydmljZSAoci93KSAqLwogI2RlZmluZQlNQ0ZTSU1fUEFSCQkweDA0CQkvKiBQaW4gQXNzaWdubWVudCByZWcgKHIvdykgKi8KICNkZWZpbmUJTUNGU0lNX0lSUVBBUgkJMHgwNgkJLyogSW50ZXJydXB0IEFzc2lnbm1lbnQgcmVnIChyL3cpICovCi0jZGVmaW5lCU1DRlNJTV9QTExDUgkJMHgwOAkJLyogUExMIENvbnRyb2xsIFJlZyovCisjZGVmaW5lCU1DRlNJTV9QTExDUgkJMHgwOAkJLyogUExMIENvbnRyb2wgUmVnKi8KICNkZWZpbmUJTUNGU0lNX01QQVJLCQkweDBDCQkvKiBCVVMgTWFzdGVyIENvbnRyb2wgUmVnKi8KICNkZWZpbmUJTUNGU0lNX0lQUgkJMHg0MAkJLyogSW50ZXJydXB0IFBlbmQgcmVnIChyL3cpICovCiAjZGVmaW5lCU1DRlNJTV9JTVIJCTB4NDQJCS8qIEludGVycnVwdCBNYXNrIHJlZyAoci93KSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL202ODM2MF9xdWljYy5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL202ODM2MF9xdWljYy5oCmluZGV4IDZkNDBmNGQuLjU5NDE0Y2MgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNjgzNjBfcXVpY2MuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTY4MzYwX3F1aWNjLmgKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAvKiBCQVNFICsgMHgwMDA6IHVzZXIgZGF0YSBtZW1vcnkgKi8KICAgICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAgICAgdWRhdGFfYmRfdWNvZGVbMHg0MDBdOyAvKnVzZXIgZGF0YSBiZCdzIFVjb2RlKi8KICAgICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAgICAgdWRhdGFfYmRbMHgyMDBdOyAgICAgICAvKnVzZXIgZGF0YSBVY29kZSAgICAgKi8KLSAgICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAgICAgdWNvZGVfZXh0WzB4MTAwXTsgICAgICAvKlVjb2RlIEV4dGVudGlvbiByYW0gKi8KKyAgICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAgICAgdWNvZGVfZXh0WzB4MTAwXTsgICAgICAvKlVjb2RlIEV4dGVuc2lvbiByYW0gKi8KICAgICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICAgICAgUkVTRVJWRUQxWzB4NTAwXTsgICAgICAvKiBSZXNlcnZlZCBhcmVhICAgICAgKi8KIH07CiAjZWxzZQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY19vc3MuaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNfb3NzLmgKaW5kZXggNzIyMWY3Mi4uM2NmMmI2ZSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY19vc3MuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjX29zcy5oCkBAIC02MSw3ICs2MSw3IEBACiAvKgogICogT1NTIEludGVycnVwdCBsZXZlbHMgZm9yIHZhcmlvdXMgc3ViLXN5c3RlbXMKICAqCi0gKiBUaGlzIG1hcHBpbmcgaXMgbGF5ZWQgb3V0IHdpdGggdHdvIHRoaW5ncyBpbiBtaW5kOiBmaXJzdCwgd2UgdHJ5IHRvIGtlZXAKKyAqIFRoaXMgbWFwcGluZyBpcyBsYWlkIG91dCB3aXRoIHR3byB0aGluZ3MgaW4gbWluZDogZmlyc3QsIHdlIHRyeSB0byBrZWVwCiAgKiB0aGluZ3Mgb24gdGhlaXIgb3duIGxldmVscyB0byBhdm9pZCBoYXZpbmcgdG8gZG8gZG91YmxlLWRpc3BhdGNoZXMuIFNlY29uZCwKICAqIHRoZSBsZXZlbHMgbWF0Y2ggYXMgY2xvc2VseSBhcyBwb3NzaWJsZSB0aGUgYWx0ZXJuYXRlIElSUSBtYXBwaW5nIG1vZGUgKGFrYQogICogIkEvVVggbW9kZSIpIGF2YWlsYWJsZSBvbiBzb21lIFZJQSBtYWNoaW5lcy4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNfdmlhLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjX3ZpYS5oCmluZGV4IDM5YWZiNDMuLmE1OTY2NWUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNfdmlhLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY192aWEuaApAQCAtMjA0LDcgKzIwNCw3IEBACiAjZGVmaW5lIHZUMkNMCTB4MTAwMCAgLyogW1ZJQSBvbmx5XSBUaW1lciB0d28gY291bnRlciBsb3cuICovCiAjZGVmaW5lIHZUMkNICTB4MTIwMCAgLyogW1ZJQSBvbmx5XSBUaW1lciB0d28gY291bnRlciBoaWdoLiAqLwogI2RlZmluZSB2U1IJMHgxNDAwICAvKiBbVklBIG9ubHldIFNoaWZ0IHJlZ2lzdGVyLiAqLwotI2RlZmluZSB2QUNSCTB4MTYwMCAgLyogW1ZJQSBvbmx5XSBBdXhpbGFyeSBjb250cm9sIHJlZ2lzdGVyLiAqLworI2RlZmluZSB2QUNSCTB4MTYwMCAgLyogW1ZJQSBvbmx5XSBBdXhpbGlhcnkgY29udHJvbCByZWdpc3Rlci4gKi8KICNkZWZpbmUgdlBDUgkweDE4MDAgIC8qIFtWSUEgb25seV0gUGVyaXBoZXJhbCBjb250cm9sIHJlZ2lzdGVyLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICBDSFJQIHNleiBuZXZlciBldmVyIHRvICp3cml0ZSogdGhpcy4KIAkJCSAqICAgICAgICAgICAgTWFjIGZhbWlseSBzYXlzIG5ldmVyIHRvICpjaGFuZ2UqIHRoaXMuCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjaW50b3NoLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjaW50b3NoLmgKaW5kZXggNTBkYjM1OS4uYzJhMWM1ZSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY2ludG9zaC5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNpbnRvc2guaApAQCAtMTQsNyArMTQsNyBAQAogZXh0ZXJuIGludCBtYWNfaXJxX3BlbmRpbmcodW5zaWduZWQgaW50KTsKIAogLyoKLSAqCUZsb3BweSBkcml2ZXIgbWFnaWMgaG9vayAtIHByb2JhYmx5IHNob3VsZG50IGJlIGhlcmUKKyAqCUZsb3BweSBkcml2ZXIgbWFnaWMgaG9vayAtIHByb2JhYmx5IHNob3VsZG4ndCBiZSBoZXJlCiAgKi8KIAogZXh0ZXJuIHZvaWQgdmlhMV9zZXRfaGVhZChpbnQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21jZnRpbWVyLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbWNmdGltZXIuaAppbmRleCA5MmIyNzZmLi4zNTFjMjcyIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbWNmdGltZXIuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbWNmdGltZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAvKgogICoJQml0IGRlZmluaXRpb25zIGZvciB0aGUgVGltZXIgTW9kZSBSZWdpc3RlciAoVE1SKS4KLSAqCVJlZ2lzdGVyIGJpdCBmbGFncyBhcmUgY29tbW9uIGFjY3Jvc3MgQ29sZEZpcmVzLgorICoJUmVnaXN0ZXIgYml0IGZsYWdzIGFyZSBjb21tb24gYWNyb3NzIENvbGRGaXJlcy4KICAqLwogI2RlZmluZQlNQ0ZUSU1FUl9UTVJfUFJFTUFTSwkweGZmMDAJCS8qIFByZXNjYWxhciBtYXNrICovCiAjZGVmaW5lCU1DRlRJTUVSX1RNUl9ESVNDRQkweDAwMDAJCS8qIERpc2FibGUgY2FwdHVyZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2tlcm5lbC9oZWFkLlMgYi9hcmNoL202OGsva2VybmVsL2hlYWQuUwppbmRleCBlZjU0MTI4Li4yNzYyMmIzIDEwMDY0NAotLS0gYS9hcmNoL202OGsva2VybmVsL2hlYWQuUworKysgYi9hcmNoL202OGsva2VybmVsL2hlYWQuUwpAQCAtMTM0LDcgKzEzNCw3IEBACiAgKglUaGFua3MgdG8gYSBzbWFsbCBoZWxwaW5nIHJvdXRpbmUgZW5hYmxpbmcgdGhlIG1tdSBnb3QgcXVpdGUgc2ltcGxlCiAgKiBhbmQgdGhlcmUgaXMgb25seSBvbmUgd2F5IGxlZnQuIG1tdV9lbmdhZ2UgbWFrZXMgYSBjb21wbGV0ZSBhIG5ldyBtYXBwaW5nCiAgKiB0aGF0IG9ubHkgaW5jbHVkZXMgdGhlIGFic29sdXRlIG5lY2Vzc2FyeSB0byBiZSBhYmxlIHRvIGp1bXAgdG8gdGhlIGZpbmFsCi0gKiBwb3N0aW9uIGFuZCB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBtYXBwaW5nLgorICogcG9zaXRpb24gYW5kIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIG1hcHBpbmcuCiAgKiBBcyB0aGlzIGNvZGUgZG9lc24ndCBuZWVkIGEgdHJhbnNwYXJlbnQgdHJhbnNsYXRpb24gcmVnaXN0ZXIgYW55bW9yZSB0aGlzCiAgKiBtZWFucyBhbGwgcmVnaXN0ZXJzIGFyZSBmcmVlIHRvIGJlIHVzZWQgYnkgbWFjaGluZXMgdGhhdCBuZWVkcyB0aGVtIGZvcgogICogb3RoZXIgcHVycG9zZXMuCkBAIC05NjksNyArOTY5LDcgQEAKIAlpc19ub3RfMDQwX29yXzA2MCgxZikKIAogCS8qCi0JICogMDQwOiBNYXAgdGhlIDE2TWVnIHJhbmdlIHBoeXNpY2FsIDB4MCB1cHRvIGxvZ2ljYWwgMHg4MDAwLjAwMDAKKwkgKiAwNDA6IE1hcCB0aGUgMTZNZWcgcmFuZ2UgcGh5c2ljYWwgMHgwIHVwIHRvIGxvZ2ljYWwgMHg4MDAwLjAwMDAKIAkgKi8KIAltbXVfbWFwCQkjMHg4MDAwMDAwMCwjMCwjMHgwMTAwMDAwMCwjX1BBR0VfTk9DQUNIRV9TCiAJLyoKQEAgLTk4Miw3ICs5ODIsNyBAQAogCiAxOgogCS8qCi0JICogMDMwOglNYXAgdGhlIDMyTWVnIHJhbmdlIHBoeXNpY2FsIDB4MCB1cHRvIGxvZ2ljYWwgMHg4MDAwLjAwMDAKKwkgKiAwMzA6CU1hcCB0aGUgMzJNZWcgcmFuZ2UgcGh5c2ljYWwgMHgwIHVwIHRvIGxvZ2ljYWwgMHg4MDAwLjAwMDAKIAkgKi8KIAltbXVfbWFwCQkjMHg4MDAwMDAwMCwjMCwjMHgwMjAwMDAwMCwjX1BBR0VfTk9DQUNIRTAzMAogCW1tdV9tYXBfdHQJIzEsIzB4NDAwMDAwMDAsIzB4MjAwMDAwMDAsI19QQUdFX05PQ0FDSEUwMzAKQEAgLTEwNzQsNyArMTA3NCw3IEBACiAJaXNfMDQwKDFmKQogCiAJLyoKLQkgKiAwMzA6IE1hcCB0aGUgMzJNZWcgcmFuZ2UgcGh5c2ljYWwgMHgwIHVwdG8gbG9naWNhbCAweGYwMDAuMDAwMAorCSAqIDAzMDogTWFwIHRoZSAzMk1lZyByYW5nZSBwaHlzaWNhbCAweDAgdXAgdG8gbG9naWNhbCAweGYwMDAuMDAwMAogCSAqLwogCW1tdV9tYXAJIzB4ZjAwMDAwMDAsIzAsIzB4MDIwMDAwMDAsI19QQUdFX05PQ0FDSEUwMzAKIApAQCAtMTA4Miw3ICsxMDgyLDcgQEAKIAogMToKIAkvKgotCSAqIDA0MDogTWFwIHRoZSAxNk1lZyByYW5nZSBwaHlzaWNhbCAweDAgdXB0byBsb2dpY2FsIDB4ZjAwMC4wMDAwCisJICogMDQwOiBNYXAgdGhlIDE2TWVnIHJhbmdlIHBoeXNpY2FsIDB4MCB1cCB0byBsb2dpY2FsIDB4ZjAwMC4wMDAwCiAJICovCiAJbW11X21hcCAjMHhmMDAwMDAwMCwjMCwjMHgwMTAwMDAwMCwjX1BBR0VfTk9DQUNIRV9TCiAKQEAgLTMwNzgsNyArMzA3OCw3IEBACiAJLyoKIAkgKiBJZiB0aGUgbG9hZGVyIGdhdmUgdXMgYSBib2FyZCB0eXBlIHRoZW4gd2UgY2FuIHVzZSB0aGF0IHRvCiAJICogc2VsZWN0IGFuIGFwcHJvcHJpYXRlIG91dHB1dCByb3V0aW5lOyBvdGhlcndpc2Ugd2UganVzdCB1c2UKLQkgKiB0aGUgQnVnIGNvZGUuICBJZiB3ZSBoYWV2IHRvIHVzZSB0aGUgQnVnIHRoYXQgbWVhbnMgdGhlIEJ1ZworCSAqIHRoZSBCdWcgY29kZS4gIElmIHdlIGhhdmUgdG8gdXNlIHRoZSBCdWcgdGhhdCBtZWFucyB0aGUgQnVnCiAJICogd29ya3NwYWNlIGhhcyB0byBiZSB2YWxpZCwgd2hpY2ggbWVhbnMgdGhlIEJ1ZyBoYXMgdG8gdXNlCiAJICogdGhlIFNSQU0sIHdoaWNoIGlzIG5vbi1zdGFuZGFyZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9rZXJuZWwvdm1saW51eC5sZHNfbm8uUyBiL2FyY2gvbTY4ay9rZXJuZWwvdm1saW51eC5sZHNfbm8uUwppbmRleCA0N2UxNWViLi5mNGQ3MTVjZCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2tlcm5lbC92bWxpbnV4Lmxkc19uby5TCisrKyBiL2FyY2gvbTY4ay9rZXJuZWwvdm1saW51eC5sZHNfbm8uUwpAQCAtMyw3ICszLDcgQEAKICAqCiAgKgkoQykgQ29weXJpZ2h0IDIwMDItMjAwNiwgR3JlZyBVbmdlcmVyIDxnZXJnQHNuYXBnZWFyLmNvbT4KICAqCi0gKglUaGlzIGxpbmtlciBzY3JpcHQgaXMgZXF1aXBlZCB0byBidWlsZCBlaXRoZXIgUk9NIGxvYWRlZCBvciBSQU0KKyAqCVRoaXMgbGlua2VyIHNjcmlwdCBpcyBlcXVpcHBlZCB0byBidWlsZCBlaXRoZXIgUk9NIGxvYWRlZCBvciBSQU0KICAqCXJ1biBrZXJuZWxzLgogICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS81MjN4L2NvbmZpZy5jIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyM3gvY29uZmlnLmMKaW5kZXggNDE4YTc2Zi4uNzFmNDQzNiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyM3gvY29uZmlnLmMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyM3gvY29uZmlnLmMKQEAgLTMsNyArMyw3IEBACiAvKgogICoJbGludXgvYXJjaC9tNjhrbm9tbXUvcGxhdGZvcm0vNTIzeC9jb25maWcuYwogICoKLSAqCVN1Yi1hcmNoaXRjdHVyZSBkZXBlbmRhbnQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgdGhlIEZyZWVzY2FsZQorICoJU3ViLWFyY2hpdGN0dXJlIGRlcGVuZGVudCBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgRnJlZXNjYWxlCiAgKgk1MjN4IENQVXMuCiAgKgogICoJQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUsIEdyZWcgVW5nZXJlciAoZ2VyZ0BzbmFwZ2Vhci5jb20pCmRpZmYgLS1naXQgYS9hcmNoL202OGsvcGxhdGZvcm0vNTI3Mi9pbnRjLmMgYi9hcmNoL202OGsvcGxhdGZvcm0vNTI3Mi9pbnRjLmMKaW5kZXggNDNlNmU5Ni4uN2U3MTVkZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyNzIvaW50Yy5jCisrKyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS81MjcyL2ludGMuYwpAQCAtMzMsNyArMzMsNyBAQAogICoKICAqIE5vdGUgdGhhdCB0aGUgZXh0ZXJuYWwgaW50ZXJydXB0cyBhcmUgZWRnZSB0cmlnZ2VyZWQgKHVubGlrZSB0aGUKICAqIGludGVybmFsIGludGVycnVwdCBzb3VyY2VzIHdoaWNoIGFyZSBsZXZlbCB0cmlnZ2VyZWQpLiBXaGljaCBtZWFucwotICogdGhleSBhbHNvIG5lZWQgYWNrbm93bGVkZ2VpbmcgdmlhIGFja25vd2xlZGdlIGJpdHMuCisgKiB0aGV5IGFsc28gbmVlZCBhY2tub3dsZWRnaW5nIHZpYSBhY2tub3dsZWRnZSBiaXRzLgogICovCiBzdHJ1Y3QgaXJxbWFwIHsKIAl1bnNpZ25lZCBjaGFyCWljcjsKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS81Mjd4L2NvbmZpZy5jIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyN3gvY29uZmlnLmMKaW5kZXggZmEzNTk1OS4uM2ViYzc2OSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyN3gvY29uZmlnLmMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyN3gvY29uZmlnLmMKQEAgLTMsNyArMyw3IEBACiAvKgogICoJbGludXgvYXJjaC9tNjhrbm9tbXUvcGxhdGZvcm0vNTI3eC9jb25maWcuYwogICoKLSAqCVN1Yi1hcmNoaXRjdHVyZSBkZXBlbmRhbnQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgdGhlIEZyZWVzY2FsZQorICoJU3ViLWFyY2hpdGN0dXJlIGRlcGVuZGVudCBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgRnJlZXNjYWxlCiAgKgk1MjcwLzUyNzEgQ1BVcy4KICAqCiAgKglDb3B5cmlnaHQgKEMpIDE5OTktMjAwNCwgR3JlZyBVbmdlcmVyIChnZXJnQHNuYXBnZWFyLmNvbSkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS81Mjh4L2NvbmZpZy5jIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyOHgvY29uZmlnLmMKaW5kZXggYWMzOWZjNi4uN2FiZTc3YSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyOHgvY29uZmlnLmMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyOHgvY29uZmlnLmMKQEAgLTMsNyArMyw3IEBACiAvKgogICoJbGludXgvYXJjaC9tNjhrbm9tbXUvcGxhdGZvcm0vNTI4eC9jb25maWcuYwogICoKLSAqCVN1Yi1hcmNoaXRjdHVyZSBkZXBlbmRhbnQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgdGhlIEZyZWVzY2FsZQorICoJU3ViLWFyY2hpdGN0dXJlIGRlcGVuZGVudCBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgRnJlZXNjYWxlCiAgKgk1MjgwLCA1MjgxIGFuZCA1MjgyIENQVXMuCiAgKgogICoJQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMsIEdyZWcgVW5nZXJlciAoZ2VyZ0BzbmFwZ2Vhci5jb20pCmRpZmYgLS1naXQgYS9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvY2FjaGUuYyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9jYWNoZS5jCmluZGV4IDIzNWQzYzQuLjcxYmVlYWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9jYWNoZS5jCisrKyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9jYWNoZS5jCkBAIC0xLDcgKzEsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyoKLSAqCWNhY2hlLmMgLS0gZ2VuZXJhbCBDb2xkRmlyZSBDYWNoZSBtYWludGFpbmVuY2UgY29kZQorICoJY2FjaGUuYyAtLSBnZW5lcmFsIENvbGRGaXJlIENhY2hlIG1haW50ZW5hbmNlIGNvZGUKICAqCiAgKglDb3B5cmlnaHQgKEMpIDIwMTAsIEdyZWcgVW5nZXJlciAoZ2VyZ0BzbmFwZ2Vhci5jb20pCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9lbnRyeS5TIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2VudHJ5LlMKaW5kZXggNTgzN2NmMC4uZWFiNjNmMCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2VudHJ5LlMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2VudHJ5LlMKQEAgLTE2Myw3ICsxNjMsNyBAQAogCiAvKgogICogVGhpcyBpcyB0aGUgZ2VuZXJpYyBpbnRlcnJ1cHQgaGFuZGxlciAoZm9yIGFsbCBoYXJkd2FyZSBpbnRlcnJ1cHQKLSAqIHNvdXJjZXMpLiBDYWxscyB1cHRvIGhpZ2ggbGV2ZWwgY29kZSB0byBkbyBhbGwgdGhlIHdvcmsuCisgKiBzb3VyY2VzKS4gQ2FsbHMgdXAgdG8gaGlnaCBsZXZlbCBjb2RlIHRvIGRvIGFsbCB0aGUgd29yay4KICAqLwogRU5UUlkoaW50aGFuZGxlcikKIAlTQVZFX0FMTApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2hlYWQuUyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9oZWFkLlMKaW5kZXggMTI5YmZmNDkuLjZhZTkxYTQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9oZWFkLlMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2hlYWQuUwpAQCAtMjAsNyArMjAsNyBAQAogCiAvKgogICoJSWYgd2UgZG9uJ3QgaGF2ZSBhIGZpeGVkIG1lbW9yeSBzaXplLCB0aGVuIGxldHMgYnVpbGQgaW4gY29kZQotICoJdG8gYXV0byBkZXRlY3QgdGhlIERSQU0gc2l6ZS4gT2J2aW91c2x5IHRoaXMgaXMgdGhlIHByZWZlcmVkCisgKgl0byBhdXRvIGRldGVjdCB0aGUgRFJBTSBzaXplLiBPYnZpb3VzbHkgdGhpcyBpcyB0aGUgcHJlZmVycmVkCiAgKgltZXRob2QsIGFuZCBzaG91bGQgd29yayBmb3IgbW9zdCBib2FyZHMuIEl0IHdvbid0IHdvcmsgZm9yIHRob3NlCiAgKgl0aGF0IGRvIG5vdCBoYXZlIHRoZWlyIFJBTSBzdGFydGluZyBhdCBhZGRyZXNzIDAsIGFuZCBpdCBvbmx5CiAgKgl3b3JrcyBvbiBTRFJBTSAobm90IGJvYXJkcyBmaXR0ZWQgd2l0aCBTUkFNKS4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9pbnRjLmMgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvaW50Yy5jCmluZGV4IGMyOGE2ZWQuLjBiYmI0MTQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9pbnRjLmMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2ludGMuYwpAQCAtMzcsNyArMzcsNyBAQAogLyoKICAqIEluIHRoZSBlYXJseSB2ZXJzaW9uIDIgY29yZSBDb2xkRmlyZSBwYXJ0cyB0aGUgSU1SIHJlZ2lzdGVyIHdhcyAxNiBiaXRzCiAgKiBpbiBzaXplLiBWZXJzaW9uIDMgKGFuZCBsYXRlciB2ZXJzaW9uIDIpIGNvcmUgcGFydHMgaGF2ZSBhIDMyIGJpdAotICogc2l6ZWQgSU1SIHJlZ2lzdGVyLiBQcm92aWRlIHNvbWUgc2l6ZSBpbmRlcGVuZGFudCBtZXRob2RzIHRvIGFjY2VzcyB0aGUKKyAqIHNpemVkIElNUiByZWdpc3Rlci4gUHJvdmlkZSBzb21lIHNpemUgaW5kZXBlbmRlbnQgbWV0aG9kcyB0byBhY2Nlc3MgdGhlCiAgKiBJTVIgcmVnaXN0ZXIuCiAgKi8KICNpZmRlZiBNQ0ZTSU1fSU1SX0lTXzE2QklUUwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL3NsdGltZXJzLmMgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvc2x0aW1lcnMuYwppbmRleCAwYTFiOTM3Li42YTg1ZGFmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvc2x0aW1lcnMuYworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvc2x0aW1lcnMuYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAJY3ljbGVzID0gbWNmc2x0X2NudDsKIAlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiAKLQkvKiBzdWJzdHJhY3QgYmVjYXVzZSBzbGljZSB0aW1lcnMgY291bnQgZG93biAqLworCS8qIHN1YnRyYWN0IGJlY2F1c2Ugc2xpY2UgdGltZXJzIGNvdW50IGRvd24gKi8KIAlyZXR1cm4gY3ljbGVzIC0gc2NudDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3E0MC9SRUFETUUgYi9hcmNoL202OGsvcTQwL1JFQURNRQppbmRleCBmODc3YjcyLi5iMjZkNWY1IDEwMDY0NAotLS0gYS9hcmNoL202OGsvcTQwL1JFQURNRQorKysgYi9hcmNoL202OGsvcTQwL1JFQURNRQpAQCAtODksNyArODksNyBAQAogb3IgZnJvbSBzb21lIElTQSBkZXZpY2VzLCBFSVJRX1JFRyBjYW4gZGlzdGluZ3Vpc2ggdXAgdG8gOCBJU0EgSVJRcy4KIAogVGhlIFE0MCBjdXN0b20gY2hpcCBpcyBwcm9ncmFtbWFibGUgdG8gcHJvdmlkZSAyIHBlcmlvZGljIHRpbWVyczoKLQktIDUwIG9yIDIwMCBIeiAtIGxldmVsIDIsICEhVEhJUyBDQU5UIEJFIERJU0FCTEVEISEKKwktIDUwIG9yIDIwMCBIeiAtIGxldmVsIDIsICEhVEhJUyBDQU4nVCBCRSBESVNBQkxFRCEhCiAJLSAxMCBvciAyMCBLSHogLSBsZXZlbCA0LCB1c2VkIGZvciBkbWEtc291bmQKIAogTGludXggdXNlcyB0aGUgMjAwIEh6IGludGVycnVwdCBmb3IgdGltZXIgYW5kIGJlZXAgYnkgZGVmYXVsdC4KZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9NYWtlZmlsZSBiL2FyY2gvbWljcm9ibGF6ZS9NYWtlZmlsZQppbmRleCA2ZjQzMmU2Li5iMjNjNDBlIDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvTWFrZWZpbGUKKysrIGIvYXJjaC9taWNyb2JsYXplL01ha2VmaWxlCkBAIC0xOCw3ICsxOCw3IEBACiAjIHJhdGhlciB0aGFuIGJvb2xzIHkvbgogCiAjIFdvcmsgb3V0IEhXIG11bHRpcGxlciBzdXBwb3J0LiBUaGlzIGlzIHRyaWNreS4KLSMgMS4gU3BhcnRhbjIgaGFzIG5vIEhXIG11bHRpcGxlcnMuCisjIDEuIFNwYXJ0YW4yIGhhcyBubyBIVyBtdWx0aXBsaWVycy4KICMgMi4gTWljcm9CbGF6ZSB2My54IGFsd2F5cyB1c2VzIHRoZW0sIGV4Y2VwdCBpbiBTcGFydGFuIDIKICMgMy4gQWxsIG90aGVyIEZQR2EvQ1BVIHZlciBjb21ib3MsIHdlIGNhbiB0cnVzdCB0aGUgQ09ORklHXyBzZXR0aW5ncwogaWZlcSAoLCQoZmluZHN0cmluZyBzcGFydGFuMiwkKENPTkZJR19YSUxJTlhfTUlDUk9CTEFaRTBfRkFNSUxZKSkpCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vaW8uaCBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9pby5oCmluZGV4IGVhZTMyMjIuLjhjZGFjMTQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9pby5oCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9pby5oCkBAIC03MCw3ICs3MCw3IEBACiAKIC8qCiAgKiByZWFkIChyZWFkYiwgcmVhZHcsIHJlYWRsLCByZWFkcSkgYW5kIHdyaXRlICh3cml0ZWIsIHdyaXRldywKLSAqIHdyaXRlbCwgd3JpdGVxKSBhY2Nlc3NvcnMgYXJlIGZvciBQQ0kgYW5kIHRodXMgbGl0dGVsIGVuZGlhbi4KKyAqIHdyaXRlbCwgd3JpdGVxKSBhY2Nlc3NvcnMgYXJlIGZvciBQQ0kgYW5kIHRodXMgbGl0dGxlIGVuZGlhbi4KICAqIExpbnV4IDIuNCBmb3IgTWljcm9ibGF6ZSBoYWQgdGhpcyB3cm9uZy4KICAqLwogc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIHJlYWRiKGNvbnN0IHZvbGF0aWxlIHZvaWQgX19pb21lbSAqYWRkcikKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmggYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCmluZGV4IDEwNzE3NjY5Li43NDZkZjkxIDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKQEAgLTc2LDcgKzc2LDcgQEAKIAkgKiBVc2VkIGZvciB2YXJpYW50cyBvZiBQQ0kgaW5kaXJlY3QgaGFuZGxpbmcgYW5kIHBvc3NpYmxlIHF1aXJrczoKIAkgKiAgU0VUX0NGR19UWVBFIC0gdXNlZCBvbiA0eHggb3IgYW55IFBIQiB0aGF0IGRvZXMgZXhwbGljaXQgdHlwZTAvMQogCSAqICBFWFRfUkVHIC0gcHJvdmlkZXMgYWNjZXNzIHRvIFBDSS1lIGV4dGVuZGVkIHJlZ2lzdGVycwotCSAqICBTVVJQUkVTU19QUklNQVJZX0JVUyAtIHdlIHN1cnByZXNzIHRoZSBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUworCSAqICBTVVJQUkVTU19QUklNQVJZX0JVUyAtIHdlIHN1cHByZXNzIHRoZSBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUwogCSAqICAgb24gRnJlZXNjYWxlIFBDSS1lIGNvbnRyb2xsZXJzIHNpbmNlIHRoZXkgdXNlZCB0aGUgUENJX1BSSU1BUllfQlVTCiAJICogICB0byBkZXRlcm1pbmUgd2hpY2ggYnVzIG51bWJlciB0byBtYXRjaCBvbiB3aGVuIGdlbmVyYXRpbmcgdHlwZTAKIAkgKiAgIGNvbmZpZyBjeWNsZXMKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2kuaCBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2kuaAppbmRleCAyMjMyZmY5NC4uYmE2NWNmNCAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3BjaS5oCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2kuaApAQCAtMTU4LDcgKzE1OCw3IEBACiBleHRlcm4gdm9pZCBwY2liaW9zX3NldHVwX2J1c19kZXZpY2VzKHN0cnVjdCBwY2lfYnVzICpidXMpOwogZXh0ZXJuIHZvaWQgcGNpYmlvc19zZXR1cF9idXNfc2VsZihzdHJ1Y3QgcGNpX2J1cyAqYnVzKTsKIAotLyogVGhpcyBwYXJ0IG9mIGNvZGUgd2FzIG9yaWdpbmFseSBpbiB4aWxpbngtcGNpLmggKi8KKy8qIFRoaXMgcGFydCBvZiBjb2RlIHdhcyBvcmlnaW5hbGx5IGluIHhpbGlueC1wY2kuaCAqLwogI2lmZGVmIENPTkZJR19QQ0lfWElMSU5YCiBleHRlcm4gdm9pZCBfX2luaXQgeGlsaW54X3BjaV9pbml0KHZvaWQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9rZXJuZWwvY3B1L2NhY2hlLmMgYi9hcmNoL21pY3JvYmxhemUva2VybmVsL2NwdS9jYWNoZS5jCmluZGV4IGNmMGFmZDkuLjRiN2Q4YTMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9rZXJuZWwvY3B1L2NhY2hlLmMKKysrIGIvYXJjaC9taWNyb2JsYXplL2tlcm5lbC9jcHUvY2FjaGUuYwpAQCAtMTI5LDcgKzEyOSw3IEBACiAgKiB0byB1c2UgZm9yIHNpbXBsZSB3ZGMgb3Igd2ljLgogICoKICAqIHN0YXJ0IGFkZHJlc3MgaXMgY2FjaGUgYWxpZ25lZAotICogZW5kIGFkZHJlc3MgaXMgbm90IGFsaWduZWQsIGlmIGVuZCBpcyBhbGlnbmVkIHRoZW4gSSBoYXZlIHRvIHN1YnN0cmFjdAorICogZW5kIGFkZHJlc3MgaXMgbm90IGFsaWduZWQsIGlmIGVuZCBpcyBhbGlnbmVkIHRoZW4gSSBoYXZlIHRvIHN1YnRyYWN0CiAgKiBjYWNoZWxpbmUgbGVuZ3RoIGJlY2F1c2UgSSBjYW4ndCBmbHVzaC9pbnZhbGlkYXRlIHRoZSBuZXh0IGNhY2hlbGluZS4KICAqIElmIGlzIG5vdCwgSSBhbGlnbiBpdCBiZWNhdXNlIEkgd2lsbCBmbHVzaC9pbnZhbGlkYXRlIHdob2xlIGxpbmUuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtY3B5LmMgYi9hcmNoL21pY3JvYmxhemUvbGliL21lbWNweS5jCmluZGV4IGNjNDk1ZDdkLi41Mjc0NmU3IDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvbGliL21lbWNweS5jCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtY3B5LmMKQEAgLTYzLDggKzYzLDggQEAKIAlpZiAobGlrZWx5KGMgPj0gNCkpIHsKIAkJdW5zaWduZWQgIHZhbHVlLCBidWZfaG9sZDsKIAotCQkvKiBBbGlnbiB0aGUgZHN0aW5hdGlvbiB0byBhIHdvcmQgYm91bmRyeS4gKi8KLQkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGFudCBtYW5uZXIuICovCisJCS8qIEFsaWduIHRoZSBkZXN0aW5hdGlvbiB0byBhIHdvcmQgYm91bmRhcnkuICovCisJCS8qIFRoaXMgaXMgZG9uZSBpbiBhbiBlbmRpYW4gaW5kZXBlbmRlbnQgbWFubmVyLiAqLwogCQlzd2l0Y2ggKCh1bnNpZ25lZCBsb25nKWRzdCAmIDMpIHsKIAkJY2FzZSAxOgogCQkJKmRzdCsrID0gKnNyYysrOwpAQCAtODAsNyArODAsNyBAQAogCQlpX2RzdCA9ICh2b2lkICopZHN0OwogCiAJCS8qIENob29zZSBhIGNvcHkgc2NoZW1lIGJhc2VkIG9uIHRoZSBzb3VyY2UgKi8KLQkJLyogYWxpZ25tZW50IHJlbGF0aXZlIHRvIGRzdGluYXRpb24uICovCisJCS8qIGFsaWdubWVudCByZWxhdGl2ZSB0byBkZXN0aW5hdGlvbi4gKi8KIAkJc3dpdGNoICgodW5zaWduZWQgbG9uZylzcmMgJiAzKSB7CiAJCWNhc2UgMHgwOgkvKiBCb3RoIGJ5dGUgb2Zmc2V0cyBhcmUgYWxpZ25lZCAqLwogCQkJaV9zcmMgID0gKGNvbnN0IHZvaWQgKilzcmM7CkBAIC0xNzMsNyArMTczLDcgQEAKIAl9CiAKIAkvKiBGaW5pc2ggb2ZmIGFueSByZW1haW5pbmcgYnl0ZXMgKi8KLQkvKiBzaW1wbGUgZmFzdCBjb3B5LCAuLi4gdW5sZXNzIGEgY2FjaGUgYm91bmRyeSBpcyBjcm9zc2VkICovCisJLyogc2ltcGxlIGZhc3QgY29weSwgLi4uIHVubGVzcyBhIGNhY2hlIGJvdW5kYXJ5IGlzIGNyb3NzZWQgKi8KIAlzd2l0Y2ggKGMpIHsKIAljYXNlIDM6CiAJCSpkc3QrKyA9ICpzcmMrKzsKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtbW92ZS5jIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1tb3ZlLmMKaW5kZXggODEwZmQ2OC4uMjE0NmMzNyAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1tb3ZlLmMKKysrIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1tb3ZlLmMKQEAgLTgzLDggKzgzLDggQEAKIAlpZiAoYyA+PSA0KSB7CiAJCXVuc2lnbmVkICB2YWx1ZSwgYnVmX2hvbGQ7CiAKLQkJLyogQWxpZ24gdGhlIGRlc3RpbmF0aW9uIHRvIGEgd29yZCBib3VuZHJ5LiAqLwotCQkvKiBUaGlzIGlzIGRvbmUgaW4gYW4gZW5kaWFuIGluZGVwZW5kYW50IG1hbm5lci4gKi8KKwkJLyogQWxpZ24gdGhlIGRlc3RpbmF0aW9uIHRvIGEgd29yZCBib3VuZGFyeS4gKi8KKwkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGVudCBtYW5uZXIuICovCiAKIAkJc3dpdGNoICgodW5zaWduZWQgbG9uZylkc3QgJiAzKSB7CiAJCWNhc2UgMzoKQEAgLTE5Myw3ICsxOTMsNyBAQAogCQlkc3QgPSAodm9pZCAqKWlfZHN0OwogCX0KIAotCS8qIHNpbXBsZSBmYXN0IGNvcHksIC4uLiB1bmxlc3MgYSBjYWNoZSBib3VuZHJ5IGlzIGNyb3NzZWQgKi8KKwkvKiBzaW1wbGUgZmFzdCBjb3B5LCAuLi4gdW5sZXNzIGEgY2FjaGUgYm91bmRhcnkgaXMgY3Jvc3NlZCAqLwogCS8qIEZpbmlzaCBvZmYgYW55IHJlbWFpbmluZyBieXRlcyAqLwogCXN3aXRjaCAoYykgewogCWNhc2UgNDoKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtc2V0LmMgYi9hcmNoL21pY3JvYmxhemUvbGliL21lbXNldC5jCmluZGV4IDgzNDU2NWQuLmRkZjY3OTMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtc2V0LmMKKysrIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1zZXQuYwpAQCAtNjQsNyArNjQsNyBAQAogCiAJaWYgKGxpa2VseShuID49IDQpKSB7CiAJCS8qIEFsaWduIHRoZSBkZXN0aW5hdGlvbiB0byBhIHdvcmQgYm91bmRhcnkgKi8KLQkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGFudCBtYW5uZXIgKi8KKwkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGVudCBtYW5uZXIgKi8KIAkJc3dpdGNoICgodW5zaWduZWQpIHNyYyAmIDMpIHsKIAkJY2FzZSAxOgogCQkJKnNyYysrID0gYzsKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9wY2kvaW5kaXJlY3RfcGNpLmMgYi9hcmNoL21pY3JvYmxhemUvcGNpL2luZGlyZWN0X3BjaS5jCmluZGV4IDI1ZjE4ZjAuLjQxOTZlYjYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9wY2kvaW5kaXJlY3RfcGNpLmMKKysrIGIvYXJjaC9taWNyb2JsYXplL3BjaS9pbmRpcmVjdF9wY2kuYwpAQCAtMTA4LDcgKzEwOCw3IEBACiAJCW91dF9sZTMyKGhvc2UtPmNmZ19hZGRyLCAoMHg4MDAwMDAwMCB8IChidXNfbm8gPDwgMTYpIHwKIAkJCSAoZGV2Zm4gPDwgOCkgfCByZWcgfCBjZmdfdHlwZSkpOwogCi0JLyogc3VycHJlc3Mgc2V0dGluZyBvZiBQQ0lfUFJJTUFSWV9CVVMgKi8KKwkvKiBzdXBwcmVzcyBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUyAqLwogCWlmIChob3NlLT5pbmRpcmVjdF90eXBlICYgSU5ESVJFQ1RfVFlQRV9TVVJQUkVTU19QUklNQVJZX0JVUykKIAkJaWYgKChvZmZzZXQgPT0gUENJX1BSSU1BUllfQlVTKSAmJgogCQkJKGJ1cy0+bnVtYmVyID09IGhvc2UtPmZpcnN0X2J1c25vKSkKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcuYXV0byBiL2FyY2gvbWljcm9ibGF6ZS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcuYXV0bwppbmRleCA1ZDg2ZmMxLi4yNWE2ZjAxIDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvcGxhdGZvcm0vZ2VuZXJpYy9LY29uZmlnLmF1dG8KKysrIGIvYXJjaC9taWNyb2JsYXplL3BsYXRmb3JtL2dlbmVyaWMvS2NvbmZpZy5hdXRvCkBAIC0yOSw3ICsyOSw3IEBACiAJICBCQVNFIEFkZHJlc3MgZm9yIGtlcm5lbAogCiBjb25maWcgWElMSU5YX01JQ1JPQkxBWkUwX0ZBTUlMWQotCXN0cmluZyAiVGFyZ2V0dGVkIEZQR0EgZmFtaWx5IgorCXN0cmluZyAiVGFyZ2V0ZWQgRlBHQSBmYW1pbHkiCiAJZGVmYXVsdCAidmlydGV4NSIKIAogY29uZmlnIFhJTElOWF9NSUNST0JMQVpFMF9VU0VfTVNSX0lOU1RSCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvS2NvbmZpZyBiL2FyY2gvbWlwcy9LY29uZmlnCmluZGV4IDgzYWE1ZmIuLjhlMjU2Y2MgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9LY29uZmlnCisrKyBiL2FyY2gvbWlwcy9LY29uZmlnCkBAIC0xMTM1LDcgKzExMzUsNyBAQAogCSAgVGhlIExvb25nc29uIDJFIHByb2Nlc3NvciBpbXBsZW1lbnRzIHRoZSBNSVBTIElJSSBpbnN0cnVjdGlvbiBzZXQKIAkgIHdpdGggbWFueSBleHRlbnNpb25zLgogCi0JICBJdCBoYXMgYW4gaW50ZXJuYWwgRlBHQSBub3J0aGJyaWRnZSwgd2hpY2ggaXMgY29tcGF0aWFibGUgdG8KKwkgIEl0IGhhcyBhbiBpbnRlcm5hbCBGUEdBIG5vcnRoYnJpZGdlLCB3aGljaCBpcyBjb21wYXRpYmxlIHRvCiAJICBib25pdG82NC4KIAogY29uZmlnIENQVV9MT09OR1NPTjJGCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvTWFrZWZpbGUgYi9hcmNoL21pcHMvTWFrZWZpbGUKaW5kZXggYWMxZDViNi4uNTNlMzUxNCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL01ha2VmaWxlCisrKyBiL2FyY2gvbWlwcy9NYWtlZmlsZQpAQCAtMTAxLDcgKzEwMSw3IEBACiAjIGNhcmVmdWxseSBhdm9pZCB0byBhZGQgaXQgcmVkdW5kYW50bHkgYmVjYXVzZSBnY2MgMy4zLzMuNCBjb21wbGFpbnMKICMgd2hlbiBmZWQgdGhlIHRvb2xjaGFpbiBkZWZhdWx0IQogIwotIyBDZXJ0YWluIGdjYyB2ZXJzaW9ucyB1cHRvIGdjYyA0LjEuMSAocHJvYmFibHkgNC4yLXN1YnZlcnNpb24gYXMgb2YKKyMgQ2VydGFpbiBnY2MgdmVyc2lvbnMgdXAgdG8gZ2NjIDQuMS4xIChwcm9iYWJseSA0LjItc3VidmVyc2lvbiBhcyBvZgogIyAyMDA2LTEwLTEwIGRvbid0IHByb3Blcmx5IGNoYW5nZSB0aGUgcHJlZGVmaW5lZCBzeW1ib2xzIGlmIC1FQiAvIC1FTAogIyBhcmUgdXNlZCwgc28gd2Uga2x1ZGdlIHRoYXQgaGVyZS4gIEEgYnVnIGhhcyBiZWVuIGZpbGVkIGF0CiAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjk0MTMuCkBAIC0zMTQsNSArMzE0LDUgQEAKIAllY2hvICcgIHZtbGludXouYmluICAgICAgICAgIC0gUmF3IGJpbmFyeSB6Ym9vdCBpbWFnZScKIAllY2hvICcgIHZtbGludXouc3JlYyAgICAgICAgIC0gU1JFQyB6Ym9vdCBpbWFnZScKIAllY2hvCi0JZWNobyAnICBUaGVzZSB3aWxsIGJlIGRlZmF1bHQgYXMgYXByb3ByaWF0ZSBmb3IgYSBjb25maWd1cmVkIHBsYXRmb3JtLicKKwllY2hvICcgIFRoZXNlIHdpbGwgYmUgZGVmYXVsdCBhcyBhcHByb3ByaWF0ZSBmb3IgYSBjb25maWd1cmVkIHBsYXRmb3JtLicKIGVuZGVmCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYWxjaGVteS9jb21tb24vY2xvY2tzLmMgYi9hcmNoL21pcHMvYWxjaGVteS9jb21tb24vY2xvY2tzLmMKaW5kZXggYWYwZmU0MS4uZjM4Mjk4YSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2FsY2hlbXkvY29tbW9uL2Nsb2Nrcy5jCisrKyBiL2FyY2gvbWlwcy9hbGNoZW15L2NvbW1vbi9jbG9ja3MuYwpAQCAtNzUsNyArNzUsNyBAQAogICogY291bnRlciwgaWYgaXQgZXhpc3RzLiAgSWYgd2UgZG9uJ3QgaGF2ZSBhbiBhY2N1cmF0ZSBwcm9jZXNzb3IKICAqIHNwZWVkLCBhbGwgb2YgdGhlIHBlcmlwaGVyYWxzIHRoYXQgZGVyaXZlIHRoZWlyIGNsb2NrcyBiYXNlZCBvbgogICogdGhpcyBhZHZlcnRpc2VkIHNwZWVkIHdpbGwgaW50cm9kdWNlIGVycm9yIGFuZCBzb21ldGltZXMgbm90IHdvcmsKLSAqIHByb3Blcmx5LiAgVGhpcyBmdW5jdGlvbiBpcyBmdXRoZXIgY29udm9sdXRlZCB0byBzdGlsbCBhbGxvdyBjb25maWd1cmF0aW9ucworICogcHJvcGVybHkuICBUaGlzIGZ1bmN0aW9uIGlzIGZ1cnRoZXIgY29udm9sdXRlZCB0byBzdGlsbCBhbGxvdyBjb25maWd1cmF0aW9ucwogICogdG8gZG8gdGhhdCBpbiBjYXNlIHRoZXkgaGF2ZSByZWFsbHksIHJlYWxseSBvbGQgc2lsaWNvbiB3aXRoIGEKICAqIHdyaXRlLW9ubHkgUExMIHJlZ2lzdGVyLgkJCS0tIERhbgogICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvb2N0ZW9uLW1vZGVsLmMgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvb2N0ZW9uLW1vZGVsLmMKaW5kZXggOWFmYzM3OS4uYzhkMzU2OCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZXhlY3V0aXZlL29jdGVvbi1tb2RlbC5jCisrKyBiL2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2V4ZWN1dGl2ZS9vY3Rlb24tbW9kZWwuYwpAQCAtNzUsNyArNzUsNyBAQAogCiAJbnVtX2NvcmVzID0gY3ZteF9vY3Rlb25fbnVtX2NvcmVzKCk7CiAKLQkvKiBNYWtlIHN1cmUgdGhlIG5vbiBleGlzdGFudCBkZXZpY2VzIGxvb2sgZGlzYWJsZWQgKi8KKwkvKiBNYWtlIHN1cmUgdGhlIG5vbiBleGlzdGVudCBkZXZpY2VzIGxvb2sgZGlzYWJsZWQgKi8KIAlzd2l0Y2ggKChjaGlwX2lkID4+IDgpICYgMHhmZikgewogCWNhc2UgNjoJCS8qIENONTBYWCAqLwogCWNhc2UgMjoJCS8qIENOMzBYWCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vb2N0ZW9uLXBsYXRmb3JtLmMgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9vY3Rlb24tcGxhdGZvcm0uYwppbmRleCBjZWNhZjYyYS4uY2Q2MWQ3MiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vb2N0ZW9uLXBsYXRmb3JtLmMKKysrIGIvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vb2N0ZW9uLXBsYXRmb3JtLmMKQEAgLTc1LDcgKzc1LDcgQEAKIAkJICogemVyby4KIAkJICovCiAKLQkJLyogQXN1bWUgdGhhdCBDUzEgaW1tZWRpYXRlbHkgZm9sbG93cy4gKi8KKwkJLyogQXNzdW1lIHRoYXQgQ1MxIGltbWVkaWF0ZWx5IGZvbGxvd3MuICovCiAJCW1pb19ib290X3JlZ19jZmcudTY0ID0KIAkJCWN2bXhfcmVhZF9jc3IoQ1ZNWF9NSU9fQk9PVF9SRUdfQ0ZHWChpICsgMSkpOwogCQlyZWdpb25fYmFzZSA9IG1pb19ib290X3JlZ19jZmcucy5iYXNlIDw8IDE2OwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vc2V0dXAuYyBiL2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL3NldHVwLmMKaW5kZXggOGIxMzliZi4uMDcwN2ZhZSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vc2V0dXAuYworKysgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9zZXR1cC5jCkBAIC02NjIsNyArNjYyLDcgQEAKIAkgKiBzb21lIG1lbW9yeSB2ZWN0b3JzLiBXaGVuIFNQQVJTRU1FTSBpcyBpbiB1c2UsIGl0IGRvZXNuJ3QKIAkgKiB2ZXJpZnkgdGhhdCB0aGUgc2l6ZSBpcyBiaWcgZW5vdWdoIGZvciB0aGUgZmluYWwKIAkgKiB2ZWN0b3JzLiBNYWtpbmcgdGhlIHNtYWxsZXN0IGNodWNrIDRNQiBzZWVtcyB0byBiZSBlbm91Z2gKLQkgKiB0byBjb25zaXN0YW50bHkgd29yay4KKwkgKiB0byBjb25zaXN0ZW50bHkgd29yay4KIAkgKi8KIAltZW1fYWxsb2Nfc2l6ZSA9IDQgPDwgMjA7CiAJaWYgKG1lbV9hbGxvY19zaXplID4gTUFYX01FTU9SWSkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9mdy9hcmMvcHJvbWxpYi5jIGIvYXJjaC9taXBzL2Z3L2FyYy9wcm9tbGliLmMKaW5kZXggYzUwOGMwMC4uYjdmOWRkMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2Z3L2FyYy9wcm9tbGliLmMKKysrIGIvYXJjaC9taXBzL2Z3L2FyYy9wcm9tbGliLmMKQEAgLTQsNyArNCw3IEBACiAgKiBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIENvcHlyaWdodCAoQykgMTk5NiBEYXZpZCBTLiBNaWxsZXIgKGRtQHNnaS5jb20pCi0gKiBDb21wYWJpbGl0eSB3aXRoIGJvYXJkIGNhY2hlcywgVWxmIENhcmxzc29uCisgKiBDb21wYXRpYmlsaXR5IHdpdGggYm9hcmQgY2FjaGVzLCBVbGYgQ2FybHNzb24KICAqLwogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGFzbS9zZ2lhbGliLmg+CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vZGVjL3Byb20uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9kZWMvcHJvbS5oCmluZGV4IGI5YzgyMDMuLmMwZWFkNjMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9kZWMvcHJvbS5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9kZWMvcHJvbS5oCkBAIC0xMDgsNyArMTA4LDcgQEAKIAogLyoKICAqIE9uIE1JUFM2NCB3ZSBoYXZlIHRvIGNhbGwgUFJPTSBmdW5jdGlvbnMgdmlhIGEgaGVscGVyCi0gKiBkaXNwYXRjaGVyIHRvIGFjY29tb2RhdGUgQUJJIGluY29tcGF0aWJpbGl0aWVzLgorICogZGlzcGF0Y2hlciB0byBhY2NvbW1vZGF0ZSBBQkkgaW5jb21wYXRpYmlsaXRpZXMuCiAgKi8KICNkZWZpbmUgX19ERUNfUFJPTV9PMzIoZnVuLCBhcmcpIGZ1biBhcmcgX19hc21fXygjZnVuKTsgXAogCQkJCSBfX2FzbV9fKCNmdW4gIiA9IGNhbGxfbzMyIikKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9mbG9wcHkuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9mbG9wcHkuaAppbmRleCA5OTJkMjMyLi5jNWM3YzBlIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vZmxvcHB5LmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2Zsb3BweS5oCkBAIC0yNCw3ICsyNCw3IEBACiAgKiBBbmQgb24gTWlwcydzIHRoZSBDTU9TIGluZm8gZmFpbHMgYWxzbyAuLi4KICAqCiAgKiBGSVhNRTogVGhpcyBpbmZvcm1hdGlvbiBzaG91bGQgY29tZSBmcm9tIHRoZSBBUkMgY29uZmlndXJhdGlvbiB0cmVlCi0gKiAgICAgICAgb3Igd2hlcmVldmVyIGEgcGFydGljdWxhciBtYWNoaW5lIGhhcyBzdG9yZWQgdGhpcyAuLi4KKyAqICAgICAgICBvciB3aGVyZXZlciBhIHBhcnRpY3VsYXIgbWFjaGluZSBoYXMgc3RvcmVkIHRoaXMgLi4uCiAgKi8KICNkZWZpbmUgRkxPUFBZMF9UWVBFIAkJZmRfZHJpdmVfdHlwZSgwKQogI2RlZmluZSBGTE9QUFkxX1RZUEUJCWZkX2RyaXZlX3R5cGUoMSkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9od19pcnEuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9od19pcnEuaAppbmRleCBhY2EwNWE0Li43N2FkZGEyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vaHdfaXJxLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2h3X2lycS5oCkBAIC0xMyw3ICsxMyw3IEBACiBleHRlcm4gYXRvbWljX3QgaXJxX2Vycl9jb3VudDsKIAogLyoKLSAqIGludGVycnVwdC1yZXRyaWdnZXI6IE5PUCBmb3Igbm93LiBUaGlzIG1heSBub3QgYmUgYXByb3ByaWF0ZSBmb3IgYWxsCisgKiBpbnRlcnJ1cHQtcmV0cmlnZ2VyOiBOT1AgZm9yIG5vdy4gVGhpcyBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBhbGwKICAqIG1hY2hpbmVzLCB3ZSdsbCBzZWUgLi4uCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vaW8uaAppbmRleCA1YjAxN2YyLi5iMDRlNGRlIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vaW8uaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vaW8uaApAQCAtMjQyLDcgKzI0Miw3IEBACiAgKiBUaGlzIHZlcnNpb24gb2YgaW9yZW1hcCBlbnN1cmVzIHRoYXQgdGhlIG1lbW9yeSBpcyBtYXJrZWQgdW5jYWNoYWJsZQogICogb24gdGhlIENQVSBhcyB3ZWxsIGFzIGhvbm91cmluZyBleGlzdGluZyBjYWNoaW5nIHJ1bGVzIGZyb20gdGhpbmdzIGxpa2UKICAqIHRoZSBQQ0kgYnVzLiBOb3RlIHRoYXQgdGhlcmUgYXJlIG90aGVyIGNhY2hlcyBhbmQgYnVmZmVycyBvbiBtYW55Ci0gKiBidXNzZXMuIEluIHBhdGljdWxhciBkcml2ZXIgYXV0aG9ycyBzaG91bGQgcmVhZCB1cCBvbiBQQ0kgd3JpdGVzCisgKiBidXNzZXMuIEluIHBhcnRpY3VsYXIgZHJpdmVyIGF1dGhvcnMgc2hvdWxkIHJlYWQgdXAgb24gUENJIHdyaXRlcwogICoKICAqIEl0J3MgdXNlZnVsIGlmIHNvbWUgY29udHJvbCByZWdpc3RlcnMgYXJlIGluIHN1Y2ggYW4gYXJlYSBhbmQKICAqIHdyaXRlIGNvbWJpbmluZyBvciByZWFkIGNhY2hpbmcgaXMgbm90IGRlc2lyYWJsZToKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9pcnFmbGFncy5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2lycWZsYWdzLmgKaW5kZXggOWVmM2IwZC4uMzA5Y2JjZCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2lycWZsYWdzLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2lycWZsYWdzLmgKQEAgLTE3NCw3ICsxNzQsNyBAQAogCSJtdGMwCVxcZmxhZ3MsICQyLCAxCQkJCQkJXG4iCiAjZWxpZiBkZWZpbmVkKENPTkZJR19DUFVfTUlQU1IyKSAmJiBkZWZpbmVkKENPTkZJR19JUlFfQ1BVKQogCS8qCi0JICogU2xvdywgYnV0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gYSByZWxhdGl2bHkgdW5saWtlbHkgcmFjZQorCSAqIFNsb3csIGJ1dCBkb2Vzbid0IHN1ZmZlciBmcm9tIGEgcmVsYXRpdmVseSB1bmxpa2VseSByYWNlCiAJICogY29uZGl0aW9uIHdlJ3JlIGhhdmluZyBzaW5jZSBkYXlzIDEuCiAJICovCiAJIgliZXF6CVxcZmxhZ3MsIDFmCQkJCQlcbiIKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtOTYzeHhfdGFnLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTk2M3h4X3RhZy5oCmluZGV4IDUzMjUwODQuLjMyOTc4ZDMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtOTYzeHhfdGFnLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY205NjN4eF90YWcuaApAQCAtNCw3ICs0LDcgQEAKICNkZWZpbmUgVEFHVkVSX0xFTgkJNAkvKiBMZW5ndGggb2YgVGFnIFZlcnNpb24gKi8KICNkZWZpbmUgVEFHTEFZT1VUX0xFTgkJNAkvKiBMZW5ndGggb2YgRmxhc2hMYXlvdXRWZXIgKi8KICNkZWZpbmUgU0lHMV9MRU4JCTIwCS8qIENvbXBhbnkgU2lnbmF0dXJlIDEgTGVuZ3RoICovCi0jZGVmaW5lIFNJRzJfTEVOCQkxNAkvKiBDb21wYW55IFNpZ25hdHVyZSAyIExlbmdodCAqLworI2RlZmluZSBTSUcyX0xFTgkJMTQJLyogQ29tcGFueSBTaWduYXR1cmUgMiBMZW5ndGggKi8KICNkZWZpbmUgQk9BUkRJRF9MRU4JCTE2CS8qIExlbmd0aCBvZiBCb2FyZElkICovCiAjZGVmaW5lIEVORElBTkZMQUdfTEVOCQkyCS8qIEVuZGlhbiBGbGFnIExlbmd0aCAqLwogI2RlZmluZSBDSElQSURfTEVOCQk2CS8qIENoaXAgSWQgTGVuZ3RoICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1pcDMyL21jMTQ2ODE4cnRjLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1pcDMyL21jMTQ2ODE4cnRjLmgKaW5kZXggYzI4YmE4ZC4uNmI2YmFiNCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtaXAzMi9tYzE0NjgxOHJ0Yy5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWlwMzIvbWMxNDY4MThydGMuaApAQCAtMjYsNyArMjYsNyBAQAogfQogCiAvKgotICogRklYTUU6IERvIGl0IHJpZ2h0LiBGb3Igbm93IGp1c3QgYXNzdW1lIHRoYXQgbm9vbmUgbGl2ZXMgaW4gMjB0aCBjZW50dXJ5CisgKiBGSVhNRTogRG8gaXQgcmlnaHQuIEZvciBub3cganVzdCBhc3N1bWUgdGhhdCBubyBvbmUgbGl2ZXMgaW4gMjB0aCBjZW50dXJ5CiAgKiBhbmQgbm8gTzIgdXNlciBpbiAyMnRoIGNlbnR1cnkgOy0pCiAgKi8KICNkZWZpbmUgbWMxNDY4MThfZGVjb2RlX3llYXIoeWVhcikgKCh5ZWFyKSArIDIwMDApCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1sb29uZ3Nvbi9jczU1MzYvY3M1NTM2LmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1sb29uZ3Nvbi9jczU1MzYvY3M1NTM2LmgKaW5kZXggMDIxZjc3Yy4uMmE4ZTJiYiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtbG9vbmdzb24vY3M1NTM2L2NzNTUzNi5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWxvb25nc29uL2NzNTUzNi9jczU1MzYuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBUaGUgaGVhZGVyIGZpbGUgb2YgY3M1NTM2IHNvdXJ0aCBicmlkZ2UuCisgKiBUaGUgaGVhZGVyIGZpbGUgb2YgY3M1NTM2IHNvdXRoIGJyaWRnZS4KICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTGVtb3RlLCBJbmMuCiAgKiBBdXRob3IgOiBqbGxpdSA8bGl1amxAbGVtb3RlLmNvbT4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjEwMDAuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjEwMDAuaAppbmRleCA2ZDFmZjkwLi42NTA1OTI1IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxMDAwLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTAwMC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIEFsY2hlbXkgU2VtaSBQYjEwMDAgUmVmZXJyZW5jZSBCb2FyZAorICogQWxjaGVteSBTZW1pIFBiMTAwMCBSZWZlcmVuY2UgQm9hcmQKICAqCiAgKiBDb3B5cmlnaHQgMjAwMSwgMjAwOCBNb250YVZpc3RhIFNvZnR3YXJlIEluYy4KICAqIEF1dGhvcjogTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLiA8c291cmNlQG12aXN0YS5jb20+CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxMjAwLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxMjAwLmgKaW5kZXggOTYyZWI1NS4uZmNlNDMzMiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTIwMC5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjEyMDAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBBTUQgQWxjaGVteSBQYjEyMDAgUmVmZXJyZW5jZSBCb2FyZAorICogQU1EIEFsY2hlbXkgUGIxMjAwIFJlZmVyZW5jZSBCb2FyZAogICogQm9hcmQgUmVnaXN0ZXJzIGRlZmluZXMuCiAgKgogICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxNTUwLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxNTUwLmgKaW5kZXggZmM0ZDc2Ni4uZjgzNWM4OCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTU1MC5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjE1NTAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBBTUQgQWxjaGVteSBTZW1pIFBCMTU1MCBSZWZlcnJlbmNlIEJvYXJkCisgKiBBTUQgQWxjaGVteSBTZW1pIFBCMTU1MCBSZWZlcmVuY2UgQm9hcmQKICAqIEJvYXJkIFJlZ2lzdGVycyBkZWZpbmVzLgogICoKICAqIENvcHlyaWdodCAyMDA0IEVtYmVkZGVkIEVkZ2UgTExDLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcG93ZXJ0di9kbWEtY29oZXJlbmNlLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wb3dlcnR2L2RtYS1jb2hlcmVuY2UuaAppbmRleCBmNzYwMjljLi5hOGU3MmNmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wb3dlcnR2L2RtYS1jb2hlcmVuY2UuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wb3dlcnR2L2RtYS1jb2hlcmVuY2UuaApAQCAtNDgsNyArNDgsNyBAQAogCQkJCS8qIGNoZWNrIGZvciBhIHZhbGlkIHBhZ2UgKi8KIAkJCQlpZiAocHRlX3ByZXNlbnQocHRlKSkgewogCQkJCQkvKiBnZXQgdGhlIHBoeXNpY2FsIGFkZHJlc3MgdGhlIHBhZ2UgaXMKLQkJCQkJICogcmVmZXJpbmcgdG8gKi8KKwkJCQkJICogcmVmZXJyaW5nIHRvICovCiAJCQkJCXBoeXNfYWRkciA9ICh1bnNpZ25lZCBsb25nKQogCQkJCQkJcGFnZV90b19waHlzKHB0ZV9wYWdlKHB0ZSkpOwogCQkJCQkvKiBhZGQgdGhlIG9mZnNldCB3aXRoaW4gdGhlIHBhZ2UgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9taXBzcmVncy5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21pcHNyZWdzLmgKaW5kZXggNGQ5ODcwOS4uNmE2ZjhhOCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21pcHNyZWdzLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21pcHNyZWdzLmgKQEAgLTkyMiw3ICs5MjIsNyBAQAogI2RlZmluZSB3cml0ZV9jMF9jb25maWc3KHZhbCkJX193cml0ZV8zMmJpdF9jMF9yZWdpc3RlcigkMTYsIDcsIHZhbCkKIAogLyoKLSAqIFRoZSBXYXRjaExvIHJlZ2lzdGVyLiAgVGhlcmUgbWF5IGJlIHVwdG8gOCBvZiB0aGVtLgorICogVGhlIFdhdGNoTG8gcmVnaXN0ZXIuICBUaGVyZSBtYXkgYmUgdXAgdG8gOCBvZiB0aGVtLgogICovCiAjZGVmaW5lIHJlYWRfYzBfd2F0Y2hsbzAoKQlfX3JlYWRfdWxvbmdfYzBfcmVnaXN0ZXIoJDE4LCAwKQogI2RlZmluZSByZWFkX2MwX3dhdGNobG8xKCkJX19yZWFkX3Vsb25nX2MwX3JlZ2lzdGVyKCQxOCwgMSkKQEAgLTk0Miw3ICs5NDIsNyBAQAogI2RlZmluZSB3cml0ZV9jMF93YXRjaGxvNyh2YWwpCV9fd3JpdGVfdWxvbmdfYzBfcmVnaXN0ZXIoJDE4LCA3LCB2YWwpCiAKIC8qCi0gKiBUaGUgV2F0Y2hIaSByZWdpc3Rlci4gIFRoZXJlIG1heSBiZSB1cHRvIDggb2YgdGhlbS4KKyAqIFRoZSBXYXRjaEhpIHJlZ2lzdGVyLiAgVGhlcmUgbWF5IGJlIHVwIHRvIDggb2YgdGhlbS4KICAqLwogI2RlZmluZSByZWFkX2MwX3dhdGNoaGkwKCkJX19yZWFkXzMyYml0X2MwX3JlZ2lzdGVyKCQxOSwgMCkKICNkZWZpbmUgcmVhZF9jMF93YXRjaGhpMSgpCV9fcmVhZF8zMmJpdF9jMF9yZWdpc3RlcigkMTksIDEpCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtYm9vdGluZm8uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290aW5mby5oCmluZGV4IGYzYzIzYTQuLjRlNGMzYTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290aW5mby5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290aW5mby5oCkBAIC0yMDAsNyArMjAwLDcgQEAKIAlDVk1YX0NISVBfVFlQRV9NQVgsCiB9OwogCi0vKiBDb21wYXRhYmlsaXR5IGFsaWFzIGZvciBOQUMzOCBuYW1lIGNoYW5nZSwgcGxhbm5lZCB0byBiZSByZW1vdmVkCisvKiBDb21wYXRpYmlsaXR5IGFsaWFzIGZvciBOQUMzOCBuYW1lIGNoYW5nZSwgcGxhbm5lZCB0byBiZSByZW1vdmVkCiAgKiBmcm9tIFNESyAxLjcgKi8KICNkZWZpbmUgQ1ZNWF9CT0FSRF9UWVBFX05BTzM4CUNWTVhfQk9BUkRfVFlQRV9OQUMzOAogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtYm9vdG1lbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWJvb3RtZW0uaAppbmRleCA4ZTcwOGJkLi44Nzc4NDViIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtYm9vdG1lbS5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290bWVtLmgKQEAgLTY3LDcgKzY3LDcgQEAKIAogLyoKICAqIFN0cnVjdHVyZSBmb3IgbmFtZWQgbWVtb3J5IGJsb2Nrcy4gIE51bWJlciBvZiBkZXNjcmlwdG9ycyBhdmFpbGFibGUKLSAqIGNhbiBiZSBjaGFuZ2VkIHdpdGhvdXQgYWZmZWN0aW5nIGNvbXBhdGlibGl0eSwgYnV0IG5hbWUgbGVuZ3RoCisgKiBjYW4gYmUgY2hhbmdlZCB3aXRob3V0IGFmZmVjdGluZyBjb21wYXRpYmlsaXR5LCBidXQgbmFtZSBsZW5ndGgKICAqIGNoYW5nZXMgcmVxdWlyZSBhIGJ1bXAgaW4gdGhlIGJvb3RtZW0gZGVzY3JpcHRvciB2ZXJzaW9uIE5vdGU6IFRoaXMKICAqIHN0cnVjdHVyZSBtdXN0IGJlIG5hdHVyYWxseSA2NCBiaXQgYWxpZ25lZCwgYXMgYSBzaW5nbGUgbWVtb3J5CiAgKiBpbWFnZSB3aWxsIGJlIHVzZWQgYnkgYm90aCAzMiBhbmQgNjQgYml0IHByb2dyYW1zLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWwyYy5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWwyYy5oCmluZGV4IDBiMzJjNWIuLjJjOGZmOWUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1sMmMuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtbDJjLmgKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCiAvKioKICAqIENvbmZpZ3VyZSBvbmUgb2YgdGhlIGZvdXIgTDIgQ2FjaGUgcGVyZm9ybWFuY2UgY291bnRlcnMgdG8gY2FwdHVyZSBldmVudAotICogb2NjdXJlbmNlcy4KKyAqIG9jY3VycmVuY2VzLgogICoKICAqIEBjb3VudGVyOiAgICAgICAgVGhlIGNvdW50ZXIgdG8gY29uZmlndXJlLiBSYW5nZSAwLi4zLgogICogQGV2ZW50OiAgICAgICAgICBUaGUgdHlwZSBvZiBMMiBDYWNoZSBldmVudCBvY2N1cnJlbmNlIHRvIGNvdW50LgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXguaAppbmRleCA5ZDkzODFlLi43ZTEyODY3IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXguaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXguaApAQCAtMTUxLDcgKzE1MSw3IEBACiAjZW5kaWYKIAogLyoqCi0gKiBDb252ZXJ0IGEgbWVtb3J5IHBvaW50ZXIgKHZvaWQqKSBpbnRvIGEgaGFyZHdhcmUgY29tcGF0YWJsZQorICogQ29udmVydCBhIG1lbW9yeSBwb2ludGVyICh2b2lkKikgaW50byBhIGhhcmR3YXJlIGNvbXBhdGlibGUKICAqIG1lbW9yeSBhZGRyZXNzICh1aW50NjRfdCkuIE9jdGVvbiBoYXJkd2FyZSB3aWRnZXRzIGRvbid0CiAgKiB1bmRlcnN0YW5kIGxvZ2ljYWwgYWRkcmVzc2VzLgogICoKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wYWNjZXNzLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vcGFjY2Vzcy5oCmluZGV4IGMyMzk0ZjguLjljZTVhMWUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wYWNjZXNzLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BhY2Nlc3MuaApAQCAtNyw3ICs3LDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCiAgKgogICogUHJvdGVjdGVkIG1lbW9yeSBhY2Nlc3MuICBVc2VkIGZvciBldmVyeXRoaW5nIHRoYXQgbWlnaHQgdGFrZSByZXZlbmdlCi0gKiBieSBzZW5kaW5nIGEgREJFIGVycm9yIGxpa2UgYWNjZXNzaW5nIHBvc3NpYmx5IG5vbi1leGlzdGFudCBtZW1vcnkgb3IKKyAqIGJ5IHNlbmRpbmcgYSBEQkUgZXJyb3IgbGlrZSBhY2Nlc3NpbmcgcG9zc2libHkgbm9uLWV4aXN0ZW50IG1lbW9yeSBvcgogICogZGV2aWNlcy4KICAqLwogI2lmbmRlZiBfQVNNX1BBQ0NFU1NfSApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BjaS9icmlkZ2UuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wY2kvYnJpZGdlLmgKaW5kZXggZjFmNTA4ZS4uYmU0NGZiMCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BjaS9icmlkZ2UuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vcGNpL2JyaWRnZS5oCkBAIC0yNjIsNyArMjYyLDcgQEAKIH0gYnJpZGdlX3Q7CiAKIC8qCi0gKiBGaWVsZCBmb3JtYXRzIGZvciBFcnJvciBDb21tYW5kIFdvcmQgYW5kIEF1eGlsbGFyeSBFcnJvciBDb21tYW5kIFdvcmQKKyAqIEZpZWxkIGZvcm1hdHMgZm9yIEVycm9yIENvbW1hbmQgV29yZCBhbmQgQXV4aWxpYXJ5IEVycm9yIENvbW1hbmQgV29yZAogICogb2YgYnJpZGdlLgogICovCiB0eXBlZGVmIHN0cnVjdCBicmlkZ2VfZXJyX2NtZHdvcmRfcyB7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vcG1jLXNpZXJyYS9tc3A3MXh4L21zcF9yZWdvcHMuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3JlZ29wcy5oCmluZGV4IDYwYTVhMzguLjdkNDE0NzQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3JlZ29wcy5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3JlZ29wcy5oCkBAIC0yMDUsNyArMjA1LDcgQEAKICAqICAgY3VzdG9tX3JlYWRfcmVnMzIoYWRkcmVzcywgdG1wKTsJPC0tIFJlYWRzIHRoZSBhZGRyZXNzIGFuZCBwdXQgdGhlIHZhbHVlCiAgKgkJCQkJCWluIHRoZSAndG1wJyB2YXJpYWJsZSBnaXZlbgogICoKLSAqCUZyb20gaGVyZSBvbiBvdXQsIHlvdSBhcmUgKGJhc2ljbHkpIGF0b21pYywgc28gZG9uJ3QgZG8gYW55dGhpbmcgdG9vCisgKglGcm9tIGhlcmUgb24gb3V0LCB5b3UgYXJlIChiYXNpY2FsbHkpIGF0b21pYywgc28gZG9uJ3QgZG8gYW55dGhpbmcgdG9vCiAgKglmYW5jeSEKICAqCUFsc28sIHRoaXMgY29kZSBtYXkgbG9vcCBpZiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgZmFpbHMgdG8gd3JpdGUKICAqCWV2ZXJ5dGhpbmcgYmFjayBzYWZlbHkgZHVlIGRvIHRoZSBvdGhlciBDUFUsIHNvIGRvIE5PVCBkbyBhbnl0aGluZwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCmluZGV4IGVhZDY5MjguLmMxMDRmMTAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKQEAgLTMzNyw3ICszMzcsNyBAQAogLyoKICAqIFJldHVybl9hZGRyZXNzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyhjb3VudCkKICAqIHdoaWNoIG9uIGNlcnRhaW4gYXJjaGl0ZWN0dXJlcyBjYW5ub3QgcmVhc29uYWJseSBiZSBpbXBsZW1lbnRlZCBpbiBHQ0MKLSAqIChNSVBTLCBBbHBoYSkgb3IgaXMgdW51c2VhYmxlIHdpdGggLWZvbWl0LWZyYW1lLXBvaW50ZXIgKGkzODYpLgorICogKE1JUFMsIEFscGhhKSBvciBpcyB1bnVzYWJsZSB3aXRoIC1mb21pdC1mcmFtZS1wb2ludGVyIChpMzg2KS4KICAqIE5vdGUgdGhhdCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoeD49MSkgaXMgZm9yYmlkZGVuIGJlY2F1c2UgR0NDCiAgKiBhYm9ydHMgY29tcGlsYXRpb24gb24gc29tZSBDUFVzLiAgSXQncyBzaW1wbHkgbm90IHBvc3NpYmxlIHRvIHVud2luZAogICogc29tZSBDUFUncyBzdGFja2ZyYW1lcy4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zZ2kvaW9jLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2dpL2lvYy5oCmluZGV4IDU3YTk3MTkuLjM4MDM0N2IgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zZ2kvaW9jLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NnaS9pb2MuaApAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgPGFzbS9zZ2kvcGkxLmg+CiAKIC8qCi0gKiBBbGwgcmVnaXN0ZXJzIGFyZSA4LWJpdCB3aWRlIGFsbGlnbmVkIG9uIDMyLWJpdCBib3VuZGFyeS4gQmFkIHRoaW5ncworICogQWxsIHJlZ2lzdGVycyBhcmUgOC1iaXQgd2lkZSBhbGlnbmVkIG9uIDMyLWJpdCBib3VuZGFyeS4gQmFkIHRoaW5ncwogICogaGFwcGVuIGlmIHlvdSB0cnkgd29yZCBhY2Nlc3MgdGhlbS4gWW91IGhhdmUgYmVlbiB3YXJuZWQuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NpYnl0ZS9zYjEyNTBfbWFjLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lieXRlL3NiMTI1MF9tYWMuaAppbmRleCA1OTFiOTA2Li43N2Y3ODcyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lieXRlL3NiMTI1MF9tYWMuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lieXRlL3NiMTI1MF9tYWMuaApAQCAtNTIwLDcgKzUyMCw3IEBACiAjZGVmaW5lIEdfTUFDX1JYX0VPUF9DT1VOVEVSKHgpICAgICBfU0JfR0VUVkFMVUUoeCwgU19NQUNfUlhfRU9QX0NPVU5URVIsIE1fTUFDX1JYX0VPUF9DT1VOVEVSKQogCiAvKgotICogTUFDIFJlY2lldmUgQWRkcmVzcyBGaWx0ZXIgRXhhY3QgTWF0Y2ggUmVnaXN0ZXJzIChUYWJsZSA5LTIxKQorICogTUFDIFJlY2VpdmUgQWRkcmVzcyBGaWx0ZXIgRXhhY3QgTWF0Y2ggUmVnaXN0ZXJzIChUYWJsZSA5LTIxKQogICogUmVnaXN0ZXJzOiBNQUNfQUREUjBfMCB0aHJvdWdoIE1BQ19BRERSN18wCiAgKiBSZWdpc3RlcnM6IE1BQ19BRERSMF8xIHRocm91Z2ggTUFDX0FERFI3XzEKICAqIFJlZ2lzdGVyczogTUFDX0FERFIwXzIgdGhyb3VnaCBNQUNfQUREUjdfMgpAQCAtNTM4LDcgKzUzOCw3IEBACiAvKiBObyBiaXRmaWVsZHMgKi8KIAogLyoKLSAqIE1BQyBSZWNpZXZlIEFkZHJlc3MgRmlsdGVyIEhhc2ggTWF0Y2ggUmVnaXN0ZXJzIChUYWJsZSA5LTIyKQorICogTUFDIFJlY2VpdmUgQWRkcmVzcyBGaWx0ZXIgSGFzaCBNYXRjaCBSZWdpc3RlcnMgKFRhYmxlIDktMjIpCiAgKiBSZWdpc3RlcnM6IE1BQ19IQVNIMF8wIHRocm91Z2ggTUFDX0hBU0g3XzAKICAqIFJlZ2lzdGVyczogTUFDX0hBU0gwXzEgdGhyb3VnaCBNQUNfSEFTSDdfMQogICogUmVnaXN0ZXJzOiBNQUNfSEFTSDBfMiB0aHJvdWdoIE1BQ19IQVNIN18yCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lnaW5mby5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NpZ2luZm8uaAppbmRleCAxY2E2NGI0Li4yMGViZWI4IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lnaW5mby5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zaWdpbmZvLmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogCiAvKgogICogc2lfY29kZSB2YWx1ZXMKLSAqIEFnYWluIHRoZXNlIGhhdmUgYmVlbiBjaG9vc2VuIHRvIGJlIElSSVggY29tcGF0aWJsZS4KKyAqIEFnYWluIHRoZXNlIGhhdmUgYmVlbiBjaG9zZW4gdG8gYmUgSVJJWCBjb21wYXRpYmxlLgogICovCiAjdW5kZWYgU0lfQVNZTkNJTwogI3VuZGVmIFNJX1RJTUVSCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc24va2xjb25maWcuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9rbGNvbmZpZy5oCmluZGV4IDA5ZTU5MGQuLmZlMDI5MDAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9rbGNvbmZpZy5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9rbGNvbmZpZy5oCkBAIC03OCw3ICs3OCw3IEBACiAgKi8KICNkZWZpbmUgTUFYX1NMT1RTX1BFUl9OT0RFCSgxICsgMiArIDYgKyAyKQogCi0vKiBYWFggaWYgZWFjaCBub2RlIGlzIGd1cmFudGVlZCB0byBoYXZlIHNvbWUgbWVtb3J5ICovCisvKiBYWFggaWYgZWFjaCBub2RlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBzb21lIG1lbW9yeSAqLwogCiAjZGVmaW5lIE1BWF9QQ0lfREVWUwkJOAogCkBAIC01MzksNyArNTM5LDcgQEAKICNkZWZpbmUgS0xTVFJVQ1RfSU9DM19UVFkgCTI0CiAKIC8qIEVhcmx5IEFjY2VzcyBJTyBwcm9tcyBhcmUgY29tcGF0aWJsZQotICAgb25seSB3aXRoIEtMU1RSVUNUIHZhbHVlcyB1cHRvIDI0LiAqLworICAgb25seSB3aXRoIEtMU1RSVUNUIHZhbHVlcyB1cCB0byAyNC4gKi8KIAogI2RlZmluZSBLTFNUUlVDVF9GSUJFUkNIQU5ORUwgCTI1CiAjZGVmaW5lIEtMU1RSVUNUX01PRF9TRVJJQUxfTlVNIDI2CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc24vc24wL2h1YmlvLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc24vc24wL2h1YmlvLmgKaW5kZXggMzFjNzZjMC4uNDYyODZkOCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL3NuMC9odWJpby5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9zbjAvaHViaW8uaApAQCAtNjIyLDcgKzYyMiw3IEBACiAgKi8KICNkZWZpbmUJSUlPX0lDUkJfUFJPQzAJCTAJLyogU291cmNlIG9mIHJlcXVlc3QgaXMgUHJvYyAwICovCiAjZGVmaW5lCUlJT19JQ1JCX1BST0MxCQkxCS8qIFNvdXJjZSBvZiByZXF1ZXN0IGlzIFByb2MgMSAqLwotI2RlZmluZQlJSU9fSUNSQl9HQl9SRVEJCTIJLyogU291cmNlIGlzIEd1cmFudGVlZCBCVyByZXF1ZXN0ICovCisjZGVmaW5lCUlJT19JQ1JCX0dCX1JFUQkJMgkvKiBTb3VyY2UgaXMgR3VhcmFudGVlZCBCVyByZXF1ZXN0ICovCiAjZGVmaW5lCUlJT19JQ1JCX0lPX1JFUQkJMwkvKiBTb3VyY2UgaXMgTm9ybWFsIElPIHJlcXVlc3QJKi8KIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zdGFja2ZyYW1lLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc3RhY2tmcmFtZS5oCmluZGV4IDU4NzMwYzUuLmI0YmEyNDQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zdGFja2ZyYW1lLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3N0YWNrZnJhbWUuaApAQCAtMzQ2LDcgKzM0Niw3IEBACiAJCSAqIHdlIGNhbid0IGRpc3BhdGNoIGl0IGRpcmVjdGx5IHdpdGhvdXQgdHJhc2hpbmcKIAkJICogc29tZSByZWdpc3RlcnMsIHNvIHdlJ2xsIHRyeSB0byBkZXRlY3QgdGhpcyB1bmxpa2VseQogCQkgKiBjYXNlIGFuZCBwcm9ncmFtIGEgc29mdHdhcmUgaW50ZXJydXB0IGluIHRoZSBWUEUsCi0JCSAqIGFzIHdvdWxkIGJlIGRvbmUgZm9yIGEgY3Jvc3MtVlBFIElQSS4gIFRvIGFjY29tb2RhdGUKKwkJICogYXMgd291bGQgYmUgZG9uZSBmb3IgYSBjcm9zcy1WUEUgSVBJLiAgVG8gYWNjb21tb2RhdGUKIAkJICogdGhlIGhhbmRsaW5nIG9mIHRoYXQgY2FzZSwgd2UncmUgZG9pbmcgYSBEVlBFIGluc3RlYWQKIAkJICogb2YganVzdCBhIERNVCBoZXJlIHRvIHByb3RlY3QgYWdhaW5zdCBvdGhlciB0aHJlYWRzLgogCQkgKiBUaGlzIGlzIGEgbG90IG9mIGNydWZ0IHRvIGNvdmVyIGEgdGlueSB3aW5kb3cuCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vd2FyLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vd2FyLmgKaW5kZXggMjIzNjFkNS4uZmExMzNjMSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3dhci5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS93YXIuaApAQCAtMjI3LDcgKzIyNyw3IEBACiAjZW5kaWYKIAogLyoKLSAqIE9uIHRoZSBSMTAwMDAgdXB0byB2ZXJzaW9uIDIuNiAobm90IHN1cmUgYWJvdXQgMi43KSB0aGVyZSBpcyBhIGJ1ZyB0aGF0CisgKiBPbiB0aGUgUjEwMDAwIHVwIHRvIHZlcnNpb24gMi42IChub3Qgc3VyZSBhYm91dCAyLjcpIHRoZXJlIGlzIGEgYnVnIHRoYXQKICAqIG1heSBjYXVzZSBsbCAvIHNjIGFuZCBsbGQgLyBzY2Qgc2VxdWVuY2VzIHRvIGV4ZWN1dGUgbm9uLWF0b21pY2FsbHkuCiAgKi8KICNpZm5kZWYgUjEwMDAwX0xMU0NfV0FSCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvano0NzQwL2JvYXJkLXFpX2xiNjAuYyBiL2FyY2gvbWlwcy9qejQ3NDAvYm9hcmQtcWlfbGI2MC5jCmluZGV4IGJjMThkYWEuLmMzYjA0YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9qejQ3NDAvYm9hcmQtcWlfbGI2MC5jCisrKyBiL2FyY2gvbWlwcy9qejQ3NDAvYm9hcmQtcWlfbGI2MC5jCkBAIC02NSw3ICs2NSw3IEBACiB9OwogCiAvKiBFYXJseSBwcm90b3R5cGVzIG9mIHRoZSBRSSBMQjYwIGhhZCBvbmx5IDFHQiBvZiBOQU5ELgotICogSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGVzZSBkZXZpY2VzIGFzd2VsbCB0aGUgcGFydGl0aW9uIGFuZCBlY2MgbGF5b3V0IGlzCisgKiBJbiBvcmRlciB0byBzdXBwb3J0IHRoZXNlIGRldmljZXMgYXMgd2VsbCB0aGUgcGFydGl0aW9uIGFuZCBlY2MgbGF5b3V0IGlzCiAgKiBpbml0aWFsaXplZCBkZXBlbmRpbmcgb24gdGhlIE5BTkQgc2l6ZSAqLwogc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIHFpX2xiNjBfcGFydGl0aW9uc18xZ2JbXSA9IHsKIAl7CkBAIC00MzksNyArNDM5LDcgQEAKIHN0YXRpYyB2b2lkIF9faW5pdCBib2FyZF9ncGlvX3NldHVwKHZvaWQpCiB7CiAJLyogV2Ugb25seSBuZWVkIHRvIGVuYWJsZS9kaXNhYmxlIHB1bGx1cCBoZXJlIGZvciBwaW5zIHVzZWQgaW4gZ2VuZXJpYwotCSAqIGRyaXZlcnMuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBkb25lIGJ5IHRoZSBkcml2ZXJzIHRoZW1zZWxmcy4gKi8KKwkgKiBkcml2ZXJzLiBFdmVyeXRoaW5nIGVsc2UgaXMgZG9uZSBieSB0aGUgZHJpdmVycyB0aGVtc2VsdmVzLiAqLwogCWp6X2dwaW9fZGlzYWJsZV9wdWxsdXAoUUlfTEI2MF9HUElPX1NEX1ZDQ19FTl9OKTsKIAlqel9ncGlvX2Rpc2FibGVfcHVsbHVwKFFJX0xCNjBfR1BJT19TRF9DRCk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL2NwdS1idWdzNjQuYyBiL2FyY2gvbWlwcy9rZXJuZWwvY3B1LWJ1Z3M2NC5jCmluZGV4IGI4YmI4YmEuLmYzMDVjYTEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvY3B1LWJ1Z3M2NC5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvY3B1LWJ1Z3M2NC5jCkBAIC03Myw3ICs3Myw3IEBACiAJCTogIjAiICg1KSwgIjEiICg4KSwgIjIiICg1KSk7CiAJYWxpZ25fbW9kKGFsaWduLCBtb2QpOwogCS8qCi0JICogVGhlIHRyYWlsaW5nIG5vcCBpcyBuZWVkZWQgdG8gZnVsbGZpbGwgdGhlIHR3by1pbnN0cnVjdGlvbgorCSAqIFRoZSB0cmFpbGluZyBub3AgaXMgbmVlZGVkIHRvIGZ1bGZpbGwgdGhlIHR3by1pbnN0cnVjdGlvbgogCSAqIHJlcXVpcmVtZW50IGJldHdlZW4gcmVhZGluZyBoaS9sbyBhbmQgc3RhcmluZyBhIG11bHQvZGl2LgogCSAqIExlYXZpbmcgaXQgb3V0IG1heSBjYXVzZSBnYXMgaW5zZXJ0IGEgbm9wIGl0c2VsZiBicmVha2luZwogCSAqIHRoZSBkZXNpcmVkIGFsaWdubWVudCBvZiB0aGUgbmV4dCBjaHVuay4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvcGVyZl9ldmVudF9taXBzeHguYyBiL2FyY2gvbWlwcy9rZXJuZWwvcGVyZl9ldmVudF9taXBzeHguYwppbmRleCBkOWE3ZGI3Li43NTI2NmZmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL3BlcmZfZXZlbnRfbWlwc3h4LmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9wZXJmX2V2ZW50X21pcHN4eC5jCkBAIC03MjEsNyArNzIxLDcgQEAKIAogLyoKICAqIE1JUFMgcGVyZm9ybWFuY2UgY291bnRlcnMgY2FuIGJlIHBlci1UQy4gVGhlIGNvbnRyb2wgcmVnaXN0ZXJzIGNhbgotICogbm90IGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGFjY3Jvc3MgQ1BVcy4gSGVuY2UgaWYgd2Ugd2FudCB0byBkbyBnbG9iYWwKKyAqIG5vdCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBhY3Jvc3MgQ1BVcy4gSGVuY2UgaWYgd2Ugd2FudCB0byBkbyBnbG9iYWwKICAqIGNvbnRyb2wsIHdlIG5lZWQgY3Jvc3MgQ1BVIGNhbGxzLiBvbl9lYWNoX2NwdSgpIGNhbiBoZWxwIHVzLCBidXQgd2UKICAqIGNhbiBub3QgbWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBlbmFibGVkLiBTbwogICogaGVyZSB3ZSBwYXVzZSBsb2NhbCBjb3VudGVycyBhbmQgdGhlbiBncmFiIGEgcndsb2NrIGFuZCBsZWF2ZSB0aGUKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC9taXBzL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggYWUxNjdkZi4uZDIxMTJkMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9wcm9jZXNzLmMKQEAgLTQxMCw3ICs0MTAsNyBAQAogCWlmICgha2FsbHN5bXNfbG9va3VwX3NpemVfb2Zmc2V0KHBjLCAmc2l6ZSwgJm9mcykpCiAJCXJldHVybiAwOwogCS8qCi0JICogUmV0dXJuIHJhIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cmVkIGF0IHRoZSBmaXJzdCBpbnN0cnVjdGlvbgorCSAqIFJldHVybiByYSBpZiBhbiBleGNlcHRpb24gb2NjdXJyZWQgYXQgdGhlIGZpcnN0IGluc3RydWN0aW9uCiAJICovCiAJaWYgKHVubGlrZWx5KG9mcyA9PSAwKSkgewogCQlwYyA9ICpyYTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvc21wLW10LmMgYi9hcmNoL21pcHMva2VybmVsL3NtcC1tdC5jCmluZGV4IGMwZTgxNDEuLjFlYzU2ZTYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvc21wLW10LmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9zbXAtbXQuYwpAQCAtMTIwLDcgKzEyMCw3IEBACiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAKLQl2cGZsYWdzID0gZHZwZSgpOwkvKiBjYW50IGFjY2VzcyB0aGUgb3RoZXIgQ1BVJ3MgcmVnaXN0ZXJzIHdoaWxzdCBNVlBFIGVuYWJsZWQgKi8KKwl2cGZsYWdzID0gZHZwZSgpOwkvKiBjYW4ndCBhY2Nlc3MgdGhlIG90aGVyIENQVSdzIHJlZ2lzdGVycyB3aGlsc3QgTVZQRSBlbmFibGVkICovCiAKIAlzd2l0Y2ggKGFjdGlvbikgewogCWNhc2UgU01QX0NBTExfRlVOQ1RJT046CmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3RpbWUuYyBiL2FyY2gvbWlwcy9rZXJuZWwvdGltZS5jCmluZGV4IGZiNzQ5NzQuLjEwODNhZDQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvdGltZS5jCkBAIC0xMDIsNyArMTAyLDcgQEAKIAljYXNlIENQVV9SNDQwMFNDOgogCWNhc2UgQ1BVX1I0NDAwTUM6CiAJCS8qCi0JCSAqIFRoZSBwdWJsaXNoZWQgZXJyYXRhIGZvciB0aGUgUjQ0MDAgdXB0byAzLjAgc2F5IHRoZSBDUFUKKwkJICogVGhlIHB1Ymxpc2hlZCBlcnJhdGEgZm9yIHRoZSBSNDQwMCB1cCB0byAzLjAgc2F5IHRoZSBDUFUKIAkJICogaGFzIHRoZSBtZmMwIGZyb20gY291bnQgYnVnLgogCQkgKi8KIAkJaWYgKChjdXJyZW50X2NwdV9kYXRhLnByb2Nlc3Nvcl9pZCAmIDB4ZmYpIDw9IDB4MzApCmRpZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3ZwZS5jIGIvYXJjaC9taXBzL2tlcm5lbC92cGUuYwppbmRleCBhYjUyYjdjLi5kYmI2YjQwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL3ZwZS5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvdnBlLmMKQEAgLTE5LDcgKzE5LDcgQEAKICAqIFZQRSBzdXBwb3J0IG1vZHVsZQogICoKICAqIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxvYWRpbmcgYSBNSVBTIFNQIHByb2dyYW0gb24gVlBFMS4KLSAqIFRoZSBTUCBlbnZpcm9tZW50IGlzIHJhdGhlciBzaW1wbGUsIG5vIHRsYidzLiAgSXQgbmVlZHMgdG8gYmUgcmVsb2NhdGFibGUKKyAqIFRoZSBTUCBlbnZpcm9ubWVudCBpcyByYXRoZXIgc2ltcGxlLCBubyB0bGIncy4gIEl0IG5lZWRzIHRvIGJlIHJlbG9jYXRhYmxlCiAgKiAob3IgcGFydGlhbGx5IGxpbmtlZCkuIFlvdSBzaG91bGQgaW5pdGlhbGlzZSB5b3VyIHN0YWNrIGluIHRoZSBzdGFydHVwCiAgKiBjb2RlLiBUaGlzIGxvYWRlciBsb29rcyBmb3IgdGhlIHN5bWJvbCBfX3N0YXJ0IGFuZCBzZXRzIHVwCiAgKiBleGVjdXRpb24gdG8gcmVzdW1lIGZyb20gdGhlcmUuIFRoZSBNSVBTIFNERSBraXQgY29udGFpbnMgc3VpdGFibGUgZXhhbXBsZXMuCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbGliL3N0cm5sZW5fdXNlci5TIGIvYXJjaC9taXBzL2xpYi9zdHJubGVuX3VzZXIuUwppbmRleCBjNzY4ZTMwMC4uNjQ0NTcxNiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2xpYi9zdHJubGVuX3VzZXIuUworKysgYi9hcmNoL21pcHMvbGliL3N0cm5sZW5fdXNlci5TCkBAIC0xNyw3ICsxNyw3IEBACiAJLnByZXZpb3VzCiAKIC8qCi0gKiBSZXR1cm4gdGhlIHNpemUgb2YgYSBzdHJpbmcgaW5jbHVkaW5nIHRoZSBlbmRpbmcgTlVMIGNoYXJhY3RlciB1cHRvIGEKKyAqIFJldHVybiB0aGUgc2l6ZSBvZiBhIHN0cmluZyBpbmNsdWRpbmcgdGhlIGVuZGluZyBOVUwgY2hhcmFjdGVyIHVwIHRvIGEKICAqIG1heGltdW0gb2YgYTEgb3IgMCBpbiBjYXNlIG9mIGVycm9yLgogICoKICAqIE5vdGU6IGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHdlIGRlbGliZXJhdGVseSBhY2NlcHQgdGhhdCBhIHVzZXIgbWF5CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbWF0aC1lbXUvZHBfZnNwLmMgYi9hcmNoL21pcHMvbWF0aC1lbXUvZHBfZnNwLmMKaW5kZXggMWRmYmQ5Mi4uZGFlZDY4MyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21hdGgtZW11L2RwX2ZzcC5jCisrKyBiL2FyY2gvbWlwcy9tYXRoLWVtdS9kcF9mc3AuYwpAQCAtNjIsNyArNjIsNyBAQAogCQlicmVhazsKIAl9CiAKLQkvKiBDQU5UIHBvc3NpYmx5IG92ZXJmbG93LHVuZGVyZmxvdywgb3IgbmVlZCByb3VuZGluZworCS8qIENBTidUIHBvc3NpYmx5IG92ZXJmbG93LHVuZGVyZmxvdywgb3IgbmVlZCByb3VuZGluZwogCSAqLwogCiAJLyogZHJvcCB0aGUgaGlkZGVuIGJpdCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21hdGgtZW11L2RwX211bC5jIGIvYXJjaC9taXBzL21hdGgtZW11L2RwX211bC5jCmluZGV4IGFhNTY2ZTcuLjA5MTc1ZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tYXRoLWVtdS9kcF9tdWwuYworKysgYi9hcmNoL21pcHMvbWF0aC1lbXUvZHBfbXVsLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogCWNhc2UgQ0xQQUlSKElFRUU3NTRfQ0xBU1NfTk9STSwgSUVFRTc1NF9DTEFTU19OT1JNKToKIAkJYnJlYWs7CiAJfQotCS8qIHJtID0geG0gKiB5bSwgcmUgPSB4ZSt5ZSBiYXNpY2x5ICovCisJLyogcm0gPSB4bSAqIHltLCByZSA9IHhlK3llIGJhc2ljYWxseSAqLwogCWFzc2VydCh4bSAmIERQX0hJRERFTl9CSVQpOwogCWFzc2VydCh5bSAmIERQX0hJRERFTl9CSVQpOwogCXsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tYXRoLWVtdS9kc2VtdWwuYyBiL2FyY2gvbWlwcy9tYXRoLWVtdS9kc2VtdWwuYwppbmRleCAzNmQ5NzVhLi4zYzRhOGM1IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbWF0aC1lbXUvZHNlbXVsLmMKKysrIGIvYXJjaC9taXBzL21hdGgtZW11L2RzZW11bC5jCkBAIC0zMiw3ICszMiw3IEBACiAgKiBub3QgY2hhbmdlIGNwMF9lcGMgZHVlIHRvIHRoZSBpbnN0cnVjdGlvbgogICoKICAqIEFjY29yZGluZyB0byB0aGUgc3BlYzoKLSAqIDEpIGl0IHNob3VsZG50IGJlIGEgYnJhbmNoIDotKQorICogMSkgaXQgc2hvdWxkbid0IGJlIGEgYnJhbmNoIDotKQogICogMikgaXQgY2FuIGJlIGEgQ09QIGluc3RydWN0aW9uIDotKAogICogMykgaWYgd2UgYXJlIHRyaW5nIHRvIHJ1biBhIHByb3RlY3RlZCBtZW1vcnkgc3BhY2Ugd2UgbXVzdCB0YWtlCiAgKiAgICBzcGVjaWFsIGNhcmUgb24gbWVtb3J5IGFjY2VzcyBpbnN0cnVjdGlvbnMgOi0oCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbWF0aC1lbXUvc3BfbXVsLmMgYi9hcmNoL21pcHMvbWF0aC1lbXUvc3BfbXVsLmMKaW5kZXggYzA2YmI0MDIuLjI3MjJhMjUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tYXRoLWVtdS9zcF9tdWwuYworKysgYi9hcmNoL21pcHMvbWF0aC1lbXUvc3BfbXVsLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogCWNhc2UgQ0xQQUlSKElFRUU3NTRfQ0xBU1NfTk9STSwgSUVFRTc1NF9DTEFTU19OT1JNKToKIAkJYnJlYWs7CiAJfQotCS8qIHJtID0geG0gKiB5bSwgcmUgPSB4ZSt5ZSBiYXNpY2x5ICovCisJLyogcm0gPSB4bSAqIHltLCByZSA9IHhlK3llIGJhc2ljYWxseSAqLwogCWFzc2VydCh4bSAmIFNQX0hJRERFTl9CSVQpOwogCWFzc2VydCh5bSAmIFNQX0hJRERFTl9CSVQpOwogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbW0vY2V4LXNiMS5TIGIvYXJjaC9taXBzL21tL2NleC1zYjEuUwppbmRleCAyZDA4MjY4Li44OWM0MTJiIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vY2V4LXNiMS5TCisrKyBiL2FyY2gvbWlwcy9tbS9jZXgtc2IxLlMKQEAgLTc5LDcgKzc5LDcgQEAKIHJlY292ZXJlZF9kY2FjaGU6CiAJLyoKIAkgKiBVbmxvY2sgQ2FjaGVFcnItRCAod2hpY2ggaW4gdHVybiB1bmxvY2tzIENhY2hlRXJyLURQQSkuCi0JICogT3VnaHQgdG8gbG9nIHRoZSBvY2N1cmVuY2Ugb2YgdGhpcyByZWNvdmVyZWQgZGNhY2hlIGVycm9yLgorCSAqIE91Z2h0IHRvIGxvZyB0aGUgb2NjdXJyZW5jZSBvZiB0aGlzIHJlY292ZXJlZCBkY2FjaGUgZXJyb3IuCiAJICovCiAJYglyZWNvdmVyZWQKIAkgbXRjMAkkMCxDMF9DRVJSX0QKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS90bGJleC5jIGIvYXJjaC9taXBzL21tL3RsYmV4LmMKaW5kZXggMDRmOWUxNy4uNWVmMjk0ZiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21tL3RsYmV4LmMKKysrIGIvYXJjaC9taXBzL21tL3RsYmV4LmMKQEAgLTM1Miw3ICszNTIsNyBAQAogCiAvKgogICogV3JpdGUgcmFuZG9tIG9yIGluZGV4ZWQgVExCIGVudHJ5LCBhbmQgY2FyZSBhYm91dCB0aGUgaGF6YXJkcyBmcm9tCi0gKiB0aGUgcHJlY2VlZGluZyBtdGMwIGFuZCBmb3IgdGhlIGZvbGxvd2luZyBlcmV0LgorICogdGhlIHByZWNlZGluZyBtdGMwIGFuZCBmb3IgdGhlIGZvbGxvd2luZyBlcmV0LgogICovCiBlbnVtIHRsYl93cml0ZV9lbnRyeSB7IHRsYl9yYW5kb20sIHRsYl9pbmRleGVkIH07CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tdGktbWFsdGEvbWFsdGEtc210Yy5jIGIvYXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zbXRjLmMKaW5kZXggZTY3ODkxNS4uNDlhMzhiMCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zbXRjLmMKKysrIGIvYXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zbXRjLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogCSAqIGNsZWFyZWQgaW4gdGhlIGFmZmluaXR5IG1hc2ssIHRoZXJlIHdpbGwgbmV2ZXIgYmUgYW55CiAJICogaW50ZXJydXB0IGZvcndhcmRpbmcuICBCdXQgYXMgc29vbiBhcyBhIHByb2dyYW0gb3Igb3BlcmF0b3IKIAkgKiBzZXRzIGFmZmluaXR5IGZvciBvbmUgb2YgdGhlIHJlbGF0ZWQgSVJRcywgd2UgbmVlZCB0byBtYWtlCi0JICogc3VyZSB0aGF0IHdlIGRvbid0IGV2ZXIgdHJ5IHRvIGZvcndhcmQgYWNyb3NzIHRoZSBWUEUgYm91bmRyeSwKKwkgKiBzdXJlIHRoYXQgd2UgZG9uJ3QgZXZlciB0cnkgdG8gZm9yd2FyZCBhY3Jvc3MgdGhlIFZQRSBib3VuZGFyeSwKIAkgKiBhdCBsZWFzdCBub3QgdW50aWwgd2UgZW5naW5lZXIgYSBzeXN0ZW0gd2hlcmUgdGhlIGludGVycnVwdAogCSAqIF9hY2soKSBvciBfZW5kKCkgZnVuY3Rpb24gY2FuIHNvbWVob3cga25vdyB0aGF0IGl0IGNvcnJlc3BvbmRzCiAJICogdG8gYW4gaW50ZXJydXB0IHRha2VuIG9uIGFub3RoZXIgVlBFLCBhbmQgcGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wY2kvb3BzLXBtY21zcC5jIGIvYXJjaC9taXBzL3BjaS9vcHMtcG1jbXNwLmMKaW5kZXggNjg3OThmOC4uOGZiZmJmMiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9vcHMtcG1jbXNwLmMKKysrIGIvYXJjaC9taXBzL3BjaS9vcHMtcG1jbXNwLmMKQEAgLTM0NCw3ICszNDQsNyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQUNDRVNTX1dSSVRFIGFuZCBQQ0lfQUNDRVNTX1JFQUQuCiAgKgogICogICAgICAgICAgICAgICBidXMgICAgICAgICAgLSBwb2ludGVyIHRvIHRoZSBidXMgbnVtYmVyIG9mIHRoZSBkZXZpY2UgdG8KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdGFyZ2V0dGVkIGZvciB0aGUgY29uZmlndXJhdGlvbiBjeWNsZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdGFyZ2V0ZWQgZm9yIHRoZSBjb25maWd1cmF0aW9uIGN5Y2xlLgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb25seSBlbGVtZW50IG9mIHRoZSBwY2lfYnVzIHN0cnVjdHVyZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGlzIGJ1cy0+bnVtYmVyLiBUaGlzIGFyZ3VtZW50IGRldGVybWluZXMKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGNvbmZpZ3VyYXRpb24gYWNjZXNzIHdpbGwgYmUgVHlwZSAwIG9yCkBAIC0zNTQsNyArMzU0LDcgQEAKICAqCiAgKiAgICAgICAgICAgICAgIGRldmZuICAgICAgICAtIHRoaXMgaXMgYW4gOC1iaXQgZmllbGQuIFRoZSBsb3dlciB0aHJlZSBiaXRzCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhlIGZ1bmN0aW9uIG51bWJlciBvZiB0aGUgZGV2aWNlIHRvCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHRhcmdldHRlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gY3ljbGUsIHdpdGgKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdGFyZ2V0ZWQgZm9yIHRoZSBjb25maWd1cmF0aW9uIGN5Y2xlLCB3aXRoCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aHJlZS1iaXQgY29tYmluYXRpb25zIGJlaW5nIGxlZ2FsLiBUaGUKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXIgZml2ZSBiaXRzIHNwZWNpZnkgdGhlIGRldmljZSBudW1iZXIsCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggbGVnYWwgdmFsdWVzIGJlaW5nIDEwIHRvIDMxLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BjaS9wY2ktYmNtMTQ4MC5jIGIvYXJjaC9taXBzL3BjaS9wY2ktYmNtMTQ4MC5jCmluZGV4IDZmNWUyNGMuLmFmOGMzMTkgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wY2kvcGNpLWJjbTE0ODAuYworKysgYi9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwLmMKQEAgLTIxMCw3ICsyMTAsNyBAQAogCVBDSUJJT1NfTUlOX0lPID0gMHgwMDAwODAwMFVMOwogCVBDSUJJT1NfTUlOX01FTSA9IDB4MDEwMDAwMDBVTDsKIAotCS8qIFNldCBJL08gcmVzb3VyY2UgbGltaXRzLiAtIHVubGltaXRlZCBmb3Igbm93IHRvIGFjY29tb2RhdGUgSFQgKi8KKwkvKiBTZXQgSS9PIHJlc291cmNlIGxpbWl0cy4gLSB1bmxpbWl0ZWQgZm9yIG5vdyB0byBhY2NvbW1vZGF0ZSBIVCAqLwogCWlvcG9ydF9yZXNvdXJjZS5lbmQgPSAweGZmZmZmZmZmVUw7CiAJaW9tZW1fcmVzb3VyY2UuZW5kID0gMHhmZmZmZmZmZlVMOwogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvcGNpL3BjaS1vY3Rlb24uYyBiL2FyY2gvbWlwcy9wY2kvcGNpLW9jdGVvbi5jCmluZGV4IDJkNzRmYzkuLmVkMWM1NDIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wY2kvcGNpLW9jdGVvbi5jCisrKyBiL2FyY2gvbWlwcy9wY2kvcGNpLW9jdGVvbi5jCkBAIC00NDEsNyArNDQxLDcgQEAKIAogCS8qCiAJICogVERPTUMgbXVzdCBiZSBzZXQgdG8gb25lIGluIFBDSSBtb2RlLiBURE9NQyBzaG91bGQgYmUgc2V0IHRvIDQKLQkgKiBpbiBQQ0ktWCBtb2RlIHRvIGFsbG93IGZvdXIgb3VzdGFuZGluZyBzcGxpdHMuIE90aGVyd2lzZSwKKwkgKiBpbiBQQ0ktWCBtb2RlIHRvIGFsbG93IGZvdXIgb3V0c3RhbmRpbmcgc3BsaXRzLiBPdGhlcndpc2UsCiAJICogc2hvdWxkIG5vdCBjaGFuZ2UgZnJvbSBpdHMgcmVzZXQgdmFsdWUuIERvbid0IHdyaXRlIFBDSV9DRkcxOQogCSAqIGluIFBDSSBtb2RlICgweDgyMDAwMDAxIHJlc2V0IHZhbHVlKSwgd3JpdGUgaXQgdG8gMHg4MjAwMDAwNAogCSAqIGFmdGVyIFBDSS1YIG1vZGUgaXMga25vd24uIE1SQkNJLE1EV0UsTURSRSAtPiBtdXN0IGJlIHplcm8uCkBAIC01MTUsNyArNTE1LDcgQEAKICNlbmRpZgkvKiBVU0VfT0NURU9OX0lOVEVSTkFMX0FSQklURVIgKi8KIAogCS8qCi0JICogUHJlZmVycmFibHkgd3JpdHRlbiB0byAxIHRvIHNldCBNTFRELiBbUkRTQVRJLFRSVEFFLAorCSAqIFByZWZlcmFibHkgd3JpdHRlbiB0byAxIHRvIHNldCBNTFRELiBbUkRTQVRJLFRSVEFFLAogCSAqIFRXVEFFLFRNQUUsRFBQTVIgLT4gbXVzdCBiZSB6ZXJvLiBUSUxUIC0+IG11c3Qgbm90IGJlIHNldCB0bwogCSAqIDEuLjcuCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvcGNpL3BjaS5jIGIvYXJjaC9taXBzL3BjaS9wY2kuYwppbmRleCAzOGJjMjgwLi4zM2JiYTdiIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvcGNpL3BjaS5jCisrKyBiL2FyY2gvbWlwcy9wY2kvcGNpLmMKQEAgLTEyNSw3ICsxMjUsNyBAQAogCWhvc2VfdGFpbCA9ICZob3NlLT5uZXh0OwogCiAJLyoKLQkgKiBEbyBub3QgcGFuaWMgaGVyZSBidXQgbGF0ZXIgLSB0aGlzIG1pZ2h0IGhhcGVuIGJlZm9yZSBjb25zb2xlIGluaXQuCisJICogRG8gbm90IHBhbmljIGhlcmUgYnV0IGxhdGVyIC0gdGhpcyBtaWdodCBoYXBwZW4gYmVmb3JlIGNvbnNvbGUgaW5pdC4KIAkgKi8KIAlpZiAoIWhvc2UtPmlvX21hcF9iYXNlKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3NldHVwLmMgYi9hcmNoL21pcHMvcG1jLXNpZXJyYS9tc3A3MXh4L21zcF9zZXR1cC5jCmluZGV4IGZiMzdhMTAuLjI0MTNlYTYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3NldHVwLmMKKysrIGIvYXJjaC9taXBzL3BtYy1zaWVycmEvbXNwNzF4eC9tc3Bfc2V0dXAuYwpAQCAtMjM5LDcgKzIzOSw3IEBACiAjaWZkZWYgQ09ORklHX1BNQ1RXSUxFRAogCS8qCiAJICogU2V0dXAgTEVEIHN0YXRlcyBiZWZvcmUgdGhlIHN1YnN5c19pbml0Y2FsbCBsb2FkcyBvdGhlcgotCSAqIGRlcGVuZGFudCBkcml2ZXJzL21vZHVsZXMuCisJICogZGVwZW5kZW50IGRyaXZlcnMvbW9kdWxlcy4KIAkgKi8KIAlwbWN0d2lsZWRfc2V0dXAoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BueDgzM3gvY29tbW9uL3BsYXRmb3JtLmMgYi9hcmNoL21pcHMvcG54ODMzeC9jb21tb24vcGxhdGZvcm0uYwppbmRleCBjZTQ1ZGYxLi44NzE2N2RjIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvcG54ODMzeC9jb21tb24vcGxhdGZvcm0uYworKysgYi9hcmNoL21pcHMvcG54ODMzeC9jb21tb24vcGxhdGZvcm0uYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAJewogCQkuYmFzZSA9IFBOWDgzM1hfSTJDMF9QT1JUU19TVEFSVCwKIAkJLmlycSA9IC0xLCAvKiBzaG91bGQgYmUgUE5YODMzWF9QSUNfSTJDMF9JTlQgYnV0IHBvbGxpbmcgaXMgZmFzdGVyICovCi0JCS5jbG9jayA9IDYsCS8qIDAgPT0gNDAwIGtIeiwgNCA9PSAxMDAga0h6KE1heGltdW0gSERNSSksIDYgPSA1MGtIeihQcmVmZXJlZCBIRENQKSAqLworCQkuY2xvY2sgPSA2LAkvKiAwID09IDQwMCBrSHosIDQgPT0gMTAwIGtIeihNYXhpbXVtIEhETUkpLCA2ID0gNTBrSHooUHJlZmVycmVkIEhEQ1ApICovCiAJCS5idXNfYWRkciA9IDAsCS8qIG5vIHNsYXZlIHN1cHBvcnQgKi8KIAl9LAogCXsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9LY29uZmlnIGIvYXJjaC9taXBzL3NnaS1pcDI3L0tjb25maWcKaW5kZXggNWU5NjBhZS4uYmM1ZTk3NiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3NnaS1pcDI3L0tjb25maWcKKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L0tjb25maWcKQEAgLTEsNyArMSw3IEBACiAjY29uZmlnIFNHSV9TTjBfWFhMCiAjCWJvb2wgIklQMjcgWFhMIgogIwlkZXBlbmRzIG9uIFNHSV9JUDI3Ci0jCSAgVGhpcyBvcHRpb25zIGFkZHMgc3VwcG9ydCBmb3IgdXNlcnNwYWNlIHByb2Nlc3NlcyB1cHRvIDE2VEIgc2l6ZS4KKyMJICBUaGlzIG9wdGlvbnMgYWRkcyBzdXBwb3J0IGZvciB1c2Vyc3BhY2UgcHJvY2Vzc2VzIHVwIHRvIDE2VEIgc2l6ZS4KICMJICBOb3JtYWxseSB0aGUgbGltaXQgaXMganVzdCAuNVRCLgogCiBjaG9pY2UKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9UT0RPIGIvYXJjaC9taXBzL3NnaS1pcDI3L1RPRE8KaW5kZXggMTlmMTUxMi4uMTYwODU3ZiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3NnaS1pcDI3L1RPRE8KKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L1RPRE8KQEAgLTEzLDcgKzEzLDcgQEAKIDkuIHN0YXJ0X3RocmVhZCBtdXN0IHR1cm4gb2ZmIFVYNjQgLi4uIGFuZCBkZWZpbmUgdGxiX3JlZmlsbF9kZWJ1Zy4KIDEwLiBOZWVkIGEgYmFkIHBtZCB0YWJsZSwgYmFkIHB0ZSB0YWJsZS4gX19iYWRfcG1kX3RhYmxlL19fYmFkX3BhZ2V0YWJsZQogZG9lcyBub3QgYWdyZWUgd2l0aCBwZ2RfYmFkL3BtZF9iYWQuCi0xMS4gQWxsIGludHJzIChpcDI3X2RvX2lycSBoYW5kbGVycykgYXJlIHRhcmdldHRlZCBhdCBjcHUgQSBvbiB0aGUgbm9kZS4KKzExLiBBbGwgaW50cnMgKGlwMjdfZG9faXJxIGhhbmRsZXJzKSBhcmUgdGFyZ2V0ZWQgYXQgY3B1IEEgb24gdGhlIG5vZGUuCiBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVyLiBPbmx5IHRoZSB0aW1lciBpbnRyIGlzIHNldCB1cCB0byBiZQogcmVjZWl2ZWQgb24gYm90aCBDcHUgQSBhbmQgQi4gKGlwMjdfZG9faXJxKCkvYnJpZGdlX3N0YXJ0dXAoKSkKIDEzLiBDYWNoZSBmbHVzaGluZyAoc3BlY2lhbGx5IHRoZSBTTVAgdmVyc2lvbikgaGFzIHRvIGJlIGludmVzdGlnYXRlZC4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LWluaXQuYyBiL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LWluaXQuYwppbmRleCA1MWQzYTRmLi45MjNjMDgwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy1pbml0LmMKKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaW5pdC5jCkBAIC05Myw3ICs5Myw3IEBACiAKIAkvKgogCSAqIFNvbWUgaW50ZXJydXB0cyBhcmUgcmVzZXJ2ZWQgYnkgaGFyZHdhcmUgb3IgYnkgc29mdHdhcmUgY29udmVudGlvbi4KLQkgKiBNYXJrIHRoZXNlIGFzIHJlc2VydmVkIHJpZ2h0IGF3YXkgc28gdGhleSB3b24ndCBiZSB1c2VkIGFjY2lkZW50bHkKKwkgKiBNYXJrIHRoZXNlIGFzIHJlc2VydmVkIHJpZ2h0IGF3YXkgc28gdGhleSB3b24ndCBiZSB1c2VkIGFjY2lkZW50YWxseQogCSAqIGxhdGVyLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPD0gQkFTRV9QQ0lfSVJROyBpKyspIHsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LWlycS5jIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaXJxLmMKaW5kZXggMTE0ODg3MS4uMGEwNDYwMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaXJxLmMKKysrIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaXJxLmMKQEAgLTQxLDcgKzQxLDcgQEAKICAqIExpbnV4IGhhcyBhIGNvbnRyb2xsZXItaW5kZXBlbmRlbnQgeDg2IGludGVycnVwdCBhcmNoaXRlY3R1cmUuCiAgKiBldmVyeSBjb250cm9sbGVyIGhhcyBhICdjb250cm9sbGVyLXRlbXBsYXRlJywgdGhhdCBpcyB1c2VkCiAgKiBieSB0aGUgbWFpbiBjb2RlIHRvIGRvIHRoZSByaWdodCB0aGluZy4gRWFjaCBkcml2ZXItdmlzaWJsZQotICogaW50ZXJydXB0IHNvdXJjZSBpcyB0cmFuc3BhcmVudGx5IHdpcmVkIHRvIHRoZSBhcHJvcHJpYXRlCisgKiBpbnRlcnJ1cHQgc291cmNlIGlzIHRyYW5zcGFyZW50bHkgd2lyZWQgdG8gdGhlIGFwcHJvcHJpYXRlCiAgKiBjb250cm9sbGVyLiBUaHVzIGRyaXZlcnMgbmVlZCBub3QgYmUgYXdhcmUgb2YgdGhlCiAgKiBpbnRlcnJ1cHQtY29udHJvbGxlci4KICAqCmRpZmYgLS1naXQgYS9hcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vY3B1LXJlZ3MuaCBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9jcHUtcmVncy5oCmluZGV4IDkwZWQ0YTMuLmM1NGVmZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9jcHUtcmVncy5oCisrKyBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9jcHUtcmVncy5oCkBAIC00OSw3ICs0OSw3IEBACiAjZGVmaW5lIEVQU1dfSU1fNgkJMHgwMDAwMDYwMAkvKiBpbnRlcnJ1cHQgbW9kZSA2ICovCiAjZGVmaW5lIEVQU1dfSU1fNwkJMHgwMDAwMDcwMAkvKiBpbnRlcnJ1cHQgbW9kZSA3ICovCiAjZGVmaW5lIEVQU1dfSUUJCQkweDAwMDAwODAwCS8qIGludGVycnVwdCBlbmFibGUgKi8KLSNkZWZpbmUgRVBTV19TCQkJMHgwMDAwMzAwMAkvKiBzb2Z0d2FyZSBhdXhpbGxpYXJ5IGJpdHMgKi8KKyNkZWZpbmUgRVBTV19TCQkJMHgwMDAwMzAwMAkvKiBzb2Z0d2FyZSBhdXhpbGlhcnkgYml0cyAqLwogI2RlZmluZSBFUFNXX1QJCQkweDAwMDA4MDAwCS8qIHRyYWNlIGVuYWJsZSAqLwogI2RlZmluZSBFUFNXX25TTAkJMHgwMDAxMDAwMAkvKiBub3Qgc3VwZXJ2aXNvciBsZXZlbCAqLwogI2RlZmluZSBFUFNXX05NSUQJCTB4MDAwMjAwMDAJLyogbm9ubWFza2FibGUgaW50ZXJydXB0IGRpc2FibGUgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2Vpc2FfZWVwcm9tLmggYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9laXNhX2VlcHJvbS5oCmluZGV4IDljOWRhOTguLjhjZThiODUgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2Vpc2FfZWVwcm9tLmgKKysrIGIvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZWlzYV9lZXByb20uaApAQCAtMjcsNyArMjcsNyBAQAogCXVfaW50OF90ICB2ZXJfbWFqOwogCXVfaW50OF90ICB2ZXJfbWluOwogCXVfaW50OF90ICBudW1fc2xvdHM7ICAgICAgICAvKiBudW1iZXIgb2YgRUlTQSBzbG90cyBpbiBzeXN0ZW0gKi8KLQl1X2ludDE2X3QgY3N1bTsgICAgICAgICAgICAgLyogY2hlY2tzdW0sIEkgZG9uJ3Qga25vdyBob3cgdG8gY2FsdWxhdGUgdGhpcyAqLworCXVfaW50MTZfdCBjc3VtOyAgICAgICAgICAgICAvKiBjaGVja3N1bSwgSSBkb24ndCBrbm93IGhvdyB0byBjYWxjdWxhdGUgdGhpcyAqLwogCXVfaW50OF90ICBwYWRbMTBdOwogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9lbnRyeS5TIGIvYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMKaW5kZXggZTU0NzcwOS4uZWFkOGQyYSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMKQEAgLTE4Nyw4ICsxODcsOCBAQAogCiAJLyogUmVnaXN0ZXIgZGVmaW5pdGlvbnMgZm9yIHRsYiBtaXNzIGhhbmRsZXIgbWFjcm9zICovCiAKLQl2YSAgPSByOAkvKiB2aXJ0dWFsIGFkZHJlc3MgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VyZWQgKi8KLQlzcGMgPSByMjQJLyogc3BhY2UgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VyZWQgKi8KKwl2YSAgPSByOAkvKiB2aXJ0dWFsIGFkZHJlc3MgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VycmVkICovCisJc3BjID0gcjI0CS8qIHNwYWNlIGZvciB3aGljaCB0aGUgdHJhcCBvY2N1cnJlZCAqLwogCiAjaWZuZGVmIENPTkZJR182NEJJVAogCkBAIC04ODIsNyArODgyLDcgQEAKIAkgKiAod2UgZG9uJ3Qgc3RvcmUgdGhlbSBpbiB0aGUgc2lnY29udGV4dCksIHNvIHNldCB0aGVtCiAJICogdG8gInByb3BlciIgdmFsdWVzIG5vdyAob3RoZXJ3aXNlIHdlJ2xsIHdpbmQgdXAgcmVzdG9yaW5nCiAJICogd2hhdGV2ZXIgd2FzIGxhc3Qgc3RvcmVkIGluIHRoZSB0YXNrIHN0cnVjdHVyZSwgd2hpY2ggbWlnaHQKLQkgKiBiZSBpbmNvbnNpc3RlbnQgaWYgYW4gaW50ZXJydXB0IG9jY3VyZWQgd2hpbGUgb24gdGhlIGdhdGV3YXkKKwkgKiBiZSBpbmNvbnNpc3RlbnQgaWYgYW4gaW50ZXJydXB0IG9jY3VycmVkIHdoaWxlIG9uIHRoZSBnYXRld2F5CiAJICogcGFnZSkuIE5vdGUgdGhhdCB3ZSBtYXkgYmUgInRyYXNoaW5nIiB2YWx1ZXMgdGhlIHVzZXIgcHV0IGluCiAJICogdGhlbSwgYnV0IHdlIGRvbid0IHN1cHBvcnQgdGhlIHVzZXIgY2hhbmdpbmcgdGhlbS4KIAkgKi8KQEAgLTExNTYsMTEgKzExNTYsMTEgQEAKIAkgKi8KIAogCXQwID0gcjEJCS8qIHRlbXBvcmFyeSByZWdpc3RlciAwICovCi0JdmEgPSByOAkJLyogdmlydHVhbCBhZGRyZXNzIGZvciB3aGljaCB0aGUgdHJhcCBvY2N1cmVkICovCisJdmEgPSByOAkJLyogdmlydHVhbCBhZGRyZXNzIGZvciB3aGljaCB0aGUgdHJhcCBvY2N1cnJlZCAqLwogCXQxID0gcjkJCS8qIHRlbXBvcmFyeSByZWdpc3RlciAxICovCiAJcHRlICA9IHIxNgkvKiBwdGUvcGh5cyBwYWdlICMgKi8KIAlwcm90ID0gcjE3CS8qIHByb3QgYml0cyAqLwotCXNwYyAgPSByMjQJLyogc3BhY2UgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VyZWQgKi8KKwlzcGMgID0gcjI0CS8qIHNwYWNlIGZvciB3aGljaCB0aGUgdHJhcCBvY2N1cnJlZCAqLwogCXB0cCA9IHIyNQkvKiBwYWdlIGRpcmVjdG9yeS9wYWdlIHRhYmxlIHBvaW50ZXIgKi8KIAogI2lmZGVmIENPTkZJR182NEJJVApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL2hlYWQuUyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9oZWFkLlMKaW5kZXggNGRiZGYwZS4uMTQ1YzVlNCAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL2hlYWQuUworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvaGVhZC5TCkBAIC0xMzEsNyArMTMxLDcgQEAKIAlsZG8gICAgICAgICAgICAgVEhSRUFEX1NaX0FMR04oJXI2KSwlc3AKIAogI2lmZGVmIENPTkZJR19TTVAKLQkvKiBTZXQgdGhlIHNtcCByZW5kZXZvdXMgYWRkcmVzcyBpbnRvIHBhZ2UgemVyby4KKwkvKiBTZXQgdGhlIHNtcCByZW5kZXp2b3VzIGFkZHJlc3MgaW50byBwYWdlIHplcm8uCiAJKiogSXQgd291bGQgYmUgc2FmZXIgdG8gZG8gdGhpcyBpbiBpbml0X3NtcF9jb25maWcoKSBidXQKIAkqKiBpdCdzIGp1c3Qgd2F5IGVhc2llciB0byBkZWFsIHdpdGggaGVyZSBiZWNhdXNlCiAJKiogb2YgNjQtYml0IGZ1bmN0aW9uIHB0cnMgYW5kIHRoZSBhZGRyZXNzIGlzIGxvY2FsIHRvIHRoaXMgZmlsZS4KZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9pbnZlbnRvcnkuYyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9pbnZlbnRvcnkuYwppbmRleCBkMjI4ZDgyLi4wODMyNGFhIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvaW52ZW50b3J5LmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL2ludmVudG9yeS5jCkBAIC05Myw3ICs5Myw3IEBACiAJY2FzZSAweDY6CQkvKiA3MDUsIDcxMCAqLwogCWNhc2UgMHg3OgkJLyogNzE1LCA3MjUgKi8KIAljYXNlIDB4ODoJCS8qIDc0NSwgNzQ3LCA3NDIgKi8KLQljYXNlIDB4QToJCS8qIDcxMiBhbmQgc2ltaWxpYXIgKi8KKwljYXNlIDB4QToJCS8qIDcxMiBhbmQgc2ltaWxhciAqLwogCWNhc2UgMHhDOgkJLyogNzE1LzY0LCBhdCBsZWFzdCAqLwogCiAJCXBkY190eXBlID0gUERDX1RZUEVfU05BS0U7CmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMKaW5kZXggNjA5YTMzMS4uMTJjMWVkMyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3NpZ25hbC5jCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYwpAQCAtMjkxLDcgKzI5MSw3IEBACiAJCURCRygxLCJzZXR1cF9ydF9mcmFtZTogZnJhbWUtPnVjID0gMHglcFxuIiwgJmZyYW1lLT51Yyk7CiAJCURCRygxLCJzZXR1cF9ydF9mcmFtZTogZnJhbWUtPnVjLnVjX21jb250ZXh0ID0gMHglcFxuIiwgJmZyYW1lLT51Yy51Y19tY29udGV4dCk7CiAJCWVyciB8PSBzZXR1cF9zaWdjb250ZXh0KCZmcmFtZS0+dWMudWNfbWNvbnRleHQsIHJlZ3MsIGluX3N5c2NhbGwpOwotCQkvKiBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGJlIGNvbnZlcnRlZCBhc3dlbGwgZm9yIHRoZSBjb21wYXQgY2FzZSAqLworCQkvKiBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGJlIGNvbnZlcnRlZCBhcyB3ZWxsIGZvciB0aGUgY29tcGF0IGNhc2UgKi8KIAkJZXJyIHw9IF9fY29weV90b191c2VyKCZmcmFtZS0+dWMudWNfc2lnbWFzaywgc2V0LCBzaXplb2YoKnNldCkpOwogCX0KIAkKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsLlMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbC5TCmluZGV4IDY4ZTc1Y2UuLjgyYTUyYjIgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsLlMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGwuUwpAQCAtNjA1LDcgKzYwNSw3IEBACiAJY29weQklcjAsICVyMjEKIAogMzoJCQotCS8qIEVycm9yIG9jY3VyZWQgb24gbG9hZCBvciBzdG9yZSAqLworCS8qIEVycm9yIG9jY3VycmVkIG9uIGxvYWQgb3Igc3RvcmUgKi8KIAkvKiBGcmVlIGxvY2sgKi8KIAlzdHcJJXIyMCwgMCglc3IyLCVyMjApCiAjaWYgRU5BQkxFX0xXU19ERUJVRwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxfdGFibGUuUyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsX3RhYmxlLlMKaW5kZXggNzQ4NjdkZi4uNGJlODVlZSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxfdGFibGUuUworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbF90YWJsZS5TCkBAIC0zNCw3ICszNCw3IEBACiAvKiBVc2UgRU5UUllfU0FNRSBmb3IgMzItYml0IHN5c2NhbGxzIHdoaWNoIGFyZSB0aGUgc2FtZSBvbiB3aWRlIGFuZAogICogbmFycm93IHBhbGludXguICBVc2UgRU5UUllfRElGRiBmb3IgdGhvc2Ugd2hlcmUgYSAzMi1iaXQgc3BlY2lmaWMKICAqIGltcGxlbWVudGF0aW9uIGlzIHJlcXVpcmVkIG9uIHdpZGUgcGFsaW51eC4gIFVzZSBFTlRSWV9DT01QIHdoZXJlCi0gKiB0aGUgY29tcGF0YWJpbGl0eSBsYXllciBoYXMgYSB1c2VmdWwgMzItYml0IGltcGxlbWVudGF0aW9uLgorICogdGhlIGNvbXBhdGliaWxpdHkgbGF5ZXIgaGFzIGEgdXNlZnVsIDMyLWJpdCBpbXBsZW1lbnRhdGlvbi4KICAqLwogI2RlZmluZSBFTlRSWV9TQU1FKF9uYW1lXykgLmR3b3JkIHN5c18jI19uYW1lXwogI2RlZmluZSBFTlRSWV9ESUZGKF9uYW1lXykgLmR3b3JkIHN5czMyXyMjX25hbWVfCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9tYXRoLWVtdS9kZmFkZC5jIGIvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZGZhZGQuYwppbmRleCBlMTQ3ZDdkLi5kMzdlMmQyIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9tYXRoLWVtdS9kZmFkZC5jCisrKyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L2RmYWRkLmMKQEAgLTMwMyw3ICszMDMsNyBAQAogCWlmKERibF9pc3plcm9faGlkZGVuKHJlc3VsdHAxKSkKIAkgICAgewogCSAgICAvKiBIYW5kbGUgbm9ybWFsaXphdGlvbiAqLwotCSAgICAvKiBBIHN0cmFpZ2h0IGZvd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZSByZXN1bHQKKwkgICAgLyogQSBzdHJhaWdodCBmb3J3YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlIHJlc3VsdAogCSAgICAgKiBhbmQgZXh0ZW5zaW9uIGxlZnQgdW50aWwgdGhlIGhpZGRlbiBiaXQgYmVjb21lcyBvbmUuICBOb3QKIAkgICAgICogYWxsIG9mIHRoZSBleHRlbnNpb24gYml0cyBuZWVkIHBhcnRpY2lwYXRlIGluIHRoZSBzaGlmdC4KIAkgICAgICogT25seSB0aGUgdHdvIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyAocm91bmQgYW5kIGd1YXJkKSBhcmUKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL21hdGgtZW11L2Rmc3ViLmMgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9kZnN1Yi5jCmluZGV4IDg3ZWJjNjAuLjJlOGI1YTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL21hdGgtZW11L2Rmc3ViLmMKKysrIGIvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZGZzdWIuYwpAQCAtMzA2LDcgKzMwNiw3IEBACiAJaWYoRGJsX2lzemVyb19oaWRkZW4ocmVzdWx0cDEpKQogCSAgICB7CiAJICAgIC8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JICAgIC8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlIHJlc3VsdAorCSAgICAvKiBBIHN0cmFpZ2h0IGZvcndhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUgcmVzdWx0CiAJICAgICAqIGFuZCBleHRlbnNpb24gbGVmdCB1bnRpbCB0aGUgaGlkZGVuIGJpdCBiZWNvbWVzIG9uZS4gIE5vdAogCSAgICAgKiBhbGwgb2YgdGhlIGV4dGVuc2lvbiBiaXRzIG5lZWQgcGFydGljaXBhdGUgaW4gdGhlIHNoaWZ0LgogCSAgICAgKiBPbmx5IHRoZSB0d28gbW9zdCBzaWduaWZpY2FudCBiaXRzIChyb3VuZCBhbmQgZ3VhcmQpIGFyZQpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZm1weWZhZGQuYyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L2ZtcHlmYWRkLmMKaW5kZXggNWRkN2Y5My4uYjA2N2M0NSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZm1weWZhZGQuYworKysgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9mbXB5ZmFkZC5jCkBAIC01MzEsNyArNTMxLDcgQEAKIAkJc2lnbl9zYXZlID0gRGJsX3NpZ25leHRlbmRlZHNpZ24ocmVzdWx0cDEpOwogCQlpZiAoRGJsX2lzemVyb19oaWRkZW4ocmVzdWx0cDEpKSB7CiAJCQkvKiBIYW5kbGUgbm9ybWFsaXphdGlvbiAqLwotCQkvKiBBIHN0cmFpZ2h0IGZvd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZQorCQkvKiBBIHN0cmFpZ2h0Zm9yd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZQogCQkgKiByZXN1bHQgYW5kIGV4dGVuc2lvbiBsZWZ0IHVudGlsIHRoZSBoaWRkZW4gYml0CiAJCSAqIGJlY29tZXMgb25lLiAgTm90IGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGJpdHMgbmVlZAogCQkgKiBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2hpZnQuICBPbmx5IHRoZSB0d28gbW9zdCAKQEAgLTExOTEsNyArMTE5MSw3IEBACiAJCXNpZ25fc2F2ZSA9IERibF9zaWduZXh0ZW5kZWRzaWduKHJlc3VsdHAxKTsKIAkJaWYgKERibF9pc3plcm9faGlkZGVuKHJlc3VsdHAxKSkgewogCQkJLyogSGFuZGxlIG5vcm1hbGl6YXRpb24gKi8KLQkJLyogQSBzdHJhaWdodCBmb3dhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUKKwkJLyogQSBzdHJhaWdodGZvcndhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUKIAkJICogcmVzdWx0IGFuZCBleHRlbnNpb24gbGVmdCB1bnRpbCB0aGUgaGlkZGVuIGJpdAogCQkgKiBiZWNvbWVzIG9uZS4gIE5vdCBhbGwgb2YgdGhlIGV4dGVuc2lvbiBiaXRzIG5lZWQKIAkJICogcGFydGljaXBhdGUgaW4gdGhlIHNoaWZ0LiAgT25seSB0aGUgdHdvIG1vc3QgCkBAIC0xODQxLDcgKzE4NDEsNyBAQAogCQlzaWduX3NhdmUgPSBTZ2xfc2lnbmV4dGVuZGVkc2lnbihyZXN1bHRwMSk7CiAJCWlmIChTZ2xfaXN6ZXJvX2hpZGRlbihyZXN1bHRwMSkpIHsKIAkJCS8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JCS8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlCisJCS8qIEEgc3RyYWlnaHRmb3J3YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlCiAJCSAqIHJlc3VsdCBhbmQgZXh0ZW5zaW9uIGxlZnQgdW50aWwgdGhlIGhpZGRlbiBiaXQKIAkJICogYmVjb21lcyBvbmUuICBOb3QgYWxsIG9mIHRoZSBleHRlbnNpb24gYml0cyBuZWVkCiAJCSAqIHBhcnRpY2lwYXRlIGluIHRoZSBzaGlmdC4gIE9ubHkgdGhlIHR3byBtb3N0IApAQCAtMjQ4Myw3ICsyNDgzLDcgQEAKIAkJc2lnbl9zYXZlID0gU2dsX3NpZ25leHRlbmRlZHNpZ24ocmVzdWx0cDEpOwogCQlpZiAoU2dsX2lzemVyb19oaWRkZW4ocmVzdWx0cDEpKSB7CiAJCQkvKiBIYW5kbGUgbm9ybWFsaXphdGlvbiAqLwotCQkvKiBBIHN0cmFpZ2h0IGZvd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZQorCQkvKiBBIHN0cmFpZ2h0Zm9yd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZQogCQkgKiByZXN1bHQgYW5kIGV4dGVuc2lvbiBsZWZ0IHVudGlsIHRoZSBoaWRkZW4gYml0CiAJCSAqIGJlY29tZXMgb25lLiAgTm90IGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGJpdHMgbmVlZAogCQkgKiBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2hpZnQuICBPbmx5IHRoZSB0d28gbW9zdCAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL21hdGgtZW11L3NmYWRkLmMgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9zZmFkZC5jCmluZGV4IDAwOGQ3MjEuLmY4MDJjZDYgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL21hdGgtZW11L3NmYWRkLmMKKysrIGIvYXJjaC9wYXJpc2MvbWF0aC1lbXUvc2ZhZGQuYwpAQCAtMjk4LDcgKzI5OCw3IEBACiAJaWYoU2dsX2lzemVyb19oaWRkZW4ocmVzdWx0KSkKIAkgICAgewogCSAgICAvKiBIYW5kbGUgbm9ybWFsaXphdGlvbiAqLwotCSAgICAvKiBBIHN0cmFpZ2h0IGZvd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZSByZXN1bHQKKwkgICAgLyogQSBzdHJhaWdodGZvcndhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUgcmVzdWx0CiAJICAgICAqIGFuZCBleHRlbnNpb24gbGVmdCB1bnRpbCB0aGUgaGlkZGVuIGJpdCBiZWNvbWVzIG9uZS4gIE5vdAogCSAgICAgKiBhbGwgb2YgdGhlIGV4dGVuc2lvbiBiaXRzIG5lZWQgcGFydGljaXBhdGUgaW4gdGhlIHNoaWZ0LgogCSAgICAgKiBPbmx5IHRoZSB0d28gbW9zdCBzaWduaWZpY2FudCBiaXRzIChyb3VuZCBhbmQgZ3VhcmQpIGFyZQpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvc2ZzdWIuYyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L3Nmc3ViLmMKaW5kZXggMjRlZWY2MS4uNWY5MGQwZiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvc2ZzdWIuYworKysgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9zZnN1Yi5jCkBAIC0zMDEsNyArMzAxLDcgQEAKIAlpZihTZ2xfaXN6ZXJvX2hpZGRlbihyZXN1bHQpKQogCSAgICB7CiAJICAgIC8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JICAgIC8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlIHJlc3VsdAorCSAgICAvKiBBIHN0cmFpZ2h0Zm9yd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZSByZXN1bHQKIAkgICAgICogYW5kIGV4dGVuc2lvbiBsZWZ0IHVudGlsIHRoZSBoaWRkZW4gYml0IGJlY29tZXMgb25lLiAgTm90CiAJICAgICAqIGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGJpdHMgbmVlZCBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2hpZnQuCiAJICAgICAqIE9ubHkgdGhlIHR3byBtb3N0IHNpZ25pZmljYW50IGJpdHMgKHJvdW5kIGFuZCBndWFyZCkgYXJlCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYml0b3BzLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYml0b3BzLmgKaW5kZXggMmU1NjE4Ny4uZjE4YzZkOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2JpdG9wcy5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9iaXRvcHMuaApAQCAtMjA5LDggKzIwOSw4IEBACiAJCXJldHVybiBCSVRTX1BFUl9MT05HOwogCiAJLyoKLQkgKiBDYWxjdWxhdGUgdGhlIGJpdCBwb3NpdGlvbiBvZiB0aGUgbGVhc3Qgc2lnbmZpY2FudCAnMScgYml0IGluIHgKLQkgKiAoc2luY2UgeCBoYXMgYmVlbiBjaGFuZ2VkIHRoaXMgd2lsbCBhY3R1YWxseSBiZSB0aGUgbGVhc3Qgc2lnbmZpY2FudAorCSAqIENhbGN1bGF0ZSB0aGUgYml0IHBvc2l0aW9uIG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCAnMScgYml0IGluIHgKKwkgKiAoc2luY2UgeCBoYXMgYmVlbiBjaGFuZ2VkIHRoaXMgd2lsbCBhY3R1YWxseSBiZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQKIAkgKiAnMCcgYml0IGluICogdGhlIG9yaWdpbmFsIHgpLiAgTm90ZTogKHggJiAteCkgZ2l2ZXMgdXMgYSBtYXNrIHRoYXQKIAkgKiBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgKiAoUklHSFQtbW9zdCkgMS1iaXQgb2YgdGhlIHZhbHVlIGluIHguCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY29tcGF0LmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY29tcGF0LmgKaW5kZXggMjI5NjExMi4uOTEwMTBlOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NvbXBhdC5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jb21wYXQuaApAQCAtMTQwLDcgKzE0MCw3IEBACiAJdW5zaWduZWQgbG9uZyB1c3AgPSByZWdzLT5ncHJbMV07CiAKIAkvKgotCSAqIFdlIGNhbnQgYWNjZXNzIGJlbG93IHRoZSBzdGFjayBwb2ludGVyIGluIHRoZSAzMmJpdCBBQkkgYW5kCisJICogV2UgY2FuJ3QgYWNjZXNzIGJlbG93IHRoZSBzdGFjayBwb2ludGVyIGluIHRoZSAzMmJpdCBBQkkgYW5kCiAJICogY2FuIGFjY2VzcyAyODggYnl0ZXMgaW4gdGhlIDY0Yml0IEFCSQogCSAqLwogCWlmICghaXNfMzJiaXRfdGFzaygpKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbS5oCmluZGV4IGU1MDMyM2YuLjQzOThhNmMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcG0uaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3BtLmgKQEAgLTk4LDcgKzk4LDcgQEAKICNkZWZpbmUgQkRfU0NfSU5UUlBUCSgweDEwMDApCS8qIEludGVycnVwdCBvbiBjaGFuZ2UgKi8KICNkZWZpbmUgQkRfU0NfTEFTVAkoMHgwODAwKQkvKiBMYXN0IGJ1ZmZlciBpbiBmcmFtZSAqLwogI2RlZmluZSBCRF9TQ19UQwkoMHgwNDAwKQkvKiBUcmFuc21pdCBDUkMgKi8KLSNkZWZpbmUgQkRfU0NfQ00JKDB4MDIwMCkJLyogQ29udGlub3VzIG1vZGUgKi8KKyNkZWZpbmUgQkRfU0NfQ00JKDB4MDIwMCkJLyogQ29udGludW91cyBtb2RlICovCiAjZGVmaW5lIEJEX1NDX0lECSgweDAxMDApCS8qIFJlYydkIHRvbyBtYW55IGlkbGVzICovCiAjZGVmaW5lIEJEX1NDX1AJCSgweDAxMDApCS8qIHhtdCBwcmVhbWJsZSAqLwogI2RlZmluZSBCRF9TQ19CUgkoMHgwMDIwKQkvKiBCcmVhayByZWNlaXZlZCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbTEuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcG0xLmgKaW5kZXggYmQwNzY1MGQuLjhlZTQyMTEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcG0xLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbTEuaApAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgc3RydWN0dXJlcyBhbmQgaW5mb3JtYXRpb24gZm9yIHRoZSBjb21tdW5pY2F0aW9uCiAgKiBwcm9jZXNzb3IgY2hhbm5lbHMuICBTb21lIENQTSBjb250cm9sIGFuZCBzdGF0dXMgaXMgYXZhaWxhYmxlCi0gKiB0aHJvdWdodCB0aGUgTVBDOHh4IGludGVybmFsIG1lbW9yeSBtYXAuICBTZWUgaW1tYXAuaCBmb3IgZGV0YWlscy4KKyAqIHRocm91Z2ggdGhlIE1QQzh4eCBpbnRlcm5hbCBtZW1vcnkgbWFwLiAgU2VlIGltbWFwLmggZm9yIGRldGFpbHMuCiAgKiBUaGlzIGZpbGUgb25seSBjb250YWlucyB3aGF0IEkgbmVlZCBmb3IgdGhlIG1vbWVudCwgbm90IHRoZSB0b3RhbAogICogQ1BNIGNhcGFiaWxpdGllcy4gIEkgKG9yIHNvbWVvbmUgZWxzZSkgd2lsbCBhZGQgZGVmaW5pdGlvbnMgYXMgdGhleQogICogYXJlIG5lZWRlZC4gIC0tIERhbgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h2Y2FsbC5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h2Y2FsbC5oCmluZGV4IGVjMDg5YWMuLjhlZGVjNzEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odmNhbGwuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHZjYWxsLmgKQEAgLTEyMiw3ICsxMjIsNyBAQAogI2RlZmluZSBIX0RBQlJYX0tFUk5FTAkJKDFVTDw8KDYzLTYyKSkKICNkZWZpbmUgSF9EQUJSWF9VU0VSCQkoMVVMPDwoNjMtNjMpKQogCi0vKiBFYWNoIGNvbnRyb2wgYmxvY2sgaGFzIHRvIGJlIG9uIGEgNEsgYm9uZGFyeSAqLworLyogRWFjaCBjb250cm9sIGJsb2NrIGhhcyB0byBiZSBvbiBhIDRLIGJvdW5kYXJ5ICovCiAjZGVmaW5lIEhfQ0JfQUxJR05NRU5UICAgICAgICAgIDQwOTYKIAogLyogcFNlcmllcyBoeXBlcnZpc29yIG9wY29kZXMgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rcHJvYmVzLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3Byb2Jlcy5oCmluZGV4IGQwZTc3MDEuLmJlMDE3MWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2twcm9iZXMuaApAQCAtNTAsNyArNTAsNyBAQAogICogSGFuZGxlIGNhc2VzIHdoZXJlOgogICogCQktIFVzZXIgcGFzc2VzIGEgPC5zeW1ib2w+IG9yIDxtb2R1bGU6LnN5bWJvbD4KICAqIAkJLSBVc2VyIHBhc3NlcyBhIDxzeW1ib2w+IG9yIDxtb2R1bGU6c3ltYm9sPgotICogCQktIFVzZXIgcGFzc2VzIGEgbm9uLWV4aXN0YW50IHN5bWJvbCwga2FsbHN5bXNfbG9va3VwX25hbWUKKyAqIAkJLSBVc2VyIHBhc3NlcyBhIG5vbi1leGlzdGVudCBzeW1ib2wsIGthbGxzeW1zX2xvb2t1cF9uYW1lCiAgKiAJCSAgcmV0dXJucyAwLiBEb24ndCBkZXJlZiB0aGUgTlVMTCBwb2ludGVyIGluIHRoYXQgY2FzZQogICovCiAjZGVmaW5lIGtwcm9iZV9sb29rdXBfbmFtZShuYW1lLCBhZGRyKQkJCQkJXApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2xwcGFjYS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2xwcGFjYS5oCmluZGV4IDI2YjhjODAuLmEwNzdhZGMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9scHBhY2EuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbHBwYWNhLmgKQEAgLTEwNSw3ICsxMDUsNyBAQAogCS8vIHByb2Nlc3Npbmcgb2YgZXh0ZXJuYWwgaW50ZXJydXB0cy4gIE5vdGUgdGhhdCBQTElDIHdpbGwgc3RvcmUgdGhlCiAJLy8gWElSUiBkaXJlY3RseSBpbnRvIHRoZSB4WGlyclZhbHVlIGZpZWxkIHNvIHRoYXQgYW5vdGhlciBYSVJSIHdpbGwKIAkvLyBub3QgYmUgcHJlc2VudGVkIHVudGlsIHRoaXMgb25lIGNsZWFycy4gIFRoZSBsYXlvdXQgb2YgdGhlIGxvdwotCS8vIDQtYnl0ZXMgb2YgdGhpcyBEd29yZCBpcyB1cHRvIFNMSUMgLSBQTElDIGp1c3QgY2hlY2tzIHdoZXRoZXIgdGhlCisJLy8gNC1ieXRlcyBvZiB0aGlzIER3b3JkIGlzIHVwIHRvIFNMSUMgLSBQTElDIGp1c3QgY2hlY2tzIHdoZXRoZXIgdGhlCiAJLy8gZW50aXJlIER3b3JkIGlzIHplcm8gb3Igbm90LiAgQSBub24temVybyB2YWx1ZSBpbiB0aGUgbG93IG9yZGVyCiAJLy8gMi1ieXRlcyB3aWxsIHJlc3VsdCBpbiBTTElDIGJlaW5nIGdyYW50ZWQgdGhlIGhpZ2hlc3QgdGhyZWFkCiAJLy8gcHJpb3JpdHkgdXBvbiByZXR1cm4uICBBIDAgd2lsbCByZXR1cm4gdG8gU0xJQyBhcyBtZWRpdW0gcHJpb3JpdHkuCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZV82NC5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhZ2VfNjQuaAppbmRleCA5MzJmODhkLi44MTJiMmNkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZV82NC5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlXzY0LmgKQEAgLTE2OSw3ICsxNjksNyBAQAogLyoKICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgaWYgYSBwcm9ncmFtIGRvZXNuJ3QgaGF2ZSBhIFBUX0dOVV9TVEFDSwogICogcHJvZ3JhbSBoZWFkZXIgZW50cnkuIFRoZSBQUEM2NCBFTEYgQUJJIGhhcyBhIG5vbiBleGVjdXRhYmxlIHN0YWNrCi0gKiBzdGFjayBieSBkZWZhdWx0LCBzbyBpbiB0aGUgYWJzZW5zZSBvZiBhIFBUX0dOVV9TVEFDSyBwcm9ncmFtIGhlYWRlcgorICogc3RhY2sgYnkgZGVmYXVsdCwgc28gaW4gdGhlIGFic2VuY2Ugb2YgYSBQVF9HTlVfU1RBQ0sgcHJvZ3JhbSBoZWFkZXIKICAqIHdlIHR1cm4gZXhlY3V0ZSBwZXJtaXNzaW9uIG9mZi4KICAqLwogI2RlZmluZSBWTV9TVEFDS19ERUZBVUxUX0ZMQUdTMzIJKFZNX1JFQUQgfCBWTV9XUklURSB8IFZNX0VYRUMgfCBcCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFzZW1pX2RtYS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Bhc2VtaV9kbWEuaAppbmRleCAxOWZkNzkzLi5lYWZhNWE1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFzZW1pX2RtYS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYXNlbWlfZG1hLmgKQEAgLTUyMiw3ICs1MjIsNyBAQAogZXh0ZXJuIHZvaWQgcGFzZW1pX2RtYV9mcmVlX2J1ZihzdHJ1Y3QgcGFzZW1pX2RtYWNoYW4gKmNoYW4sIGludCBzaXplLAogCQkJCWRtYV9hZGRyX3QgKmhhbmRsZSk7CiAKLS8qIFJvdXRpbmVzIHRvIGFsbG9jYXRlIGZsYWdzIChldmVudHMpIGZvciBjaGFubmVsIHN5bmNyb25pemF0aW9uICovCisvKiBSb3V0aW5lcyB0byBhbGxvY2F0ZSBmbGFncyAoZXZlbnRzKSBmb3IgY2hhbm5lbCBzeW5jaHJvbml6YXRpb24gKi8KIGV4dGVybiBpbnQgIHBhc2VtaV9kbWFfYWxsb2NfZmxhZyh2b2lkKTsKIGV4dGVybiB2b2lkIHBhc2VtaV9kbWFfZnJlZV9mbGFnKGludCBmbGFnKTsKIGV4dGVybiB2b2lkIHBhc2VtaV9kbWFfc2V0X2ZsYWcoaW50IGZsYWcpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKaW5kZXggNWUxNTZlMC4uYjkwZGJmOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAKIAkgKiBVc2VkIGZvciB2YXJpYW50cyBvZiBQQ0kgaW5kaXJlY3QgaGFuZGxpbmcgYW5kIHBvc3NpYmxlIHF1aXJrczoKIAkgKiAgU0VUX0NGR19UWVBFIC0gdXNlZCBvbiA0eHggb3IgYW55IFBIQiB0aGF0IGRvZXMgZXhwbGljaXQgdHlwZTAvMQogCSAqICBFWFRfUkVHIC0gcHJvdmlkZXMgYWNjZXNzIHRvIFBDSS1lIGV4dGVuZGVkIHJlZ2lzdGVycwotCSAqICBTVVJQUkVTU19QUklNQVJZX0JVUyAtIHdlIHN1cnByZXNzIHRoZSBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUworCSAqICBTVVJQUkVTU19QUklNQVJZX0JVUyAtIHdlIHN1cHByZXNzIHRoZSBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUwogCSAqICAgb24gRnJlZXNjYWxlIFBDSS1lIGNvbnRyb2xsZXJzIHNpbmNlIHRoZXkgdXNlZCB0aGUgUENJX1BSSU1BUllfQlVTCiAJICogICB0byBkZXRlcm1pbmUgd2hpY2ggYnVzIG51bWJlciB0byBtYXRjaCBvbiB3aGVuIGdlbmVyYXRpbmcgdHlwZTAKIAkgKiAgIGNvbmZpZyBjeWNsZXMKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWFjX2ZlYXR1cmUuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWFjX2ZlYXR1cmUuaAppbmRleCAwMGVlZGM1Li4xMDkwMmM5MzcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWFjX2ZlYXR1cmUuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG1hY19mZWF0dXJlLmgKQEAgLTUzLDggKzUzLDggQEAKIAogLyogSGVyZSBpcyB0aGUgaW5mYW1vdXMgc2VyaWUgb2YgT0hhcmUgYmFzZWQgbWFjaGluZXMKICAqLwotI2RlZmluZSBQTUFDX1RZUEVfQ09NRVQJCQkweDIwCS8qIEJlbGVpdmVkIHRvIGJlIFBvd2VyQm9vayAyNDAwICovCi0jZGVmaW5lIFBNQUNfVFlQRV9IT09QRVIJCTB4MjEJLyogQmVsZWl2ZWQgdG8gYmUgUG93ZXJCb29rIDM0MDAgKi8KKyNkZWZpbmUgUE1BQ19UWVBFX0NPTUVUCQkJMHgyMAkvKiBCZWxpZXZlZCB0byBiZSBQb3dlckJvb2sgMjQwMCAqLworI2RlZmluZSBQTUFDX1RZUEVfSE9PUEVSCQkweDIxCS8qIEJlbGlldmVkIHRvIGJlIFBvd2VyQm9vayAzNDAwICovCiAjZGVmaW5lIFBNQUNfVFlQRV9LQU5HQQkJCTB4MjIJLyogUG93ZXJCb29rIDM1MDAgKGZpcnN0IEczKSAqLwogI2RlZmluZSBQTUFDX1RZUEVfQUxDSEVNWQkJMHgyMwkvKiBBbGNoZW15IG1vdGhlcmJvYXJkIGJhc2UgKi8KICNkZWZpbmUgUE1BQ19UWVBFX0dBWkVMTEUJCTB4MjQJLyogU3BhcnRhY3VzLCBzb21lIDV4eHgvNnh4eCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS1jb21tb24uaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtY29tbW9uLmgKaW5kZXggNzZiYjE5NS4uODExZjA0YSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS1jb21tb24uaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLWNvbW1vbi5oCkBAIC04Niw3ICs4Niw3IEBACiAjZGVmaW5lIFBURV9SUE5fTUFTSwkofigoMVVMPDxQVEVfUlBOX1NISUZUKS0xKSkKICNlbmRpZgogCi0vKiBfUEFHRV9DSEdfTUFTSyBtYXNrcyBvZiBiaXRzIHRoYXQgYXJlIHRvIGJlIHByZXNlcnZlZCBhY2Nyb3NzCisvKiBfUEFHRV9DSEdfTUFTSyBtYXNrcyBvZiBiaXRzIHRoYXQgYXJlIHRvIGJlIHByZXNlcnZlZCBhY3Jvc3MKICAqIHBncHJvdCBjaGFuZ2VzCiAgKi8KICNkZWZpbmUgX1BBR0VfQ0hHX01BU0sJKFBURV9SUE5fTUFTSyB8IF9QQUdFX0hQVEVGTEFHUyB8IF9QQUdFX0RJUlRZIHwgXApAQCAtMTc0LDcgKzE3NCw3IEBACiAvKgogICogRG9uJ3QganVzdCBjaGVjayBmb3IgYW55IG5vbiB6ZXJvIGJpdHMgaW4gX19QQUdFX1VTRVIsIHNpbmNlIGZvciBib29rM2UKICAqIGFuZCBQVEVfNjRCSVQsIFBBR0VfS0VSTkVMX1ggY29udGFpbnMgX1BBR0VfQkFQX1NSIHdoaWNoIGlzIGFsc28gaW4KLSAqIF9QQUdFX1VTRVIuICBOZWVkIHRvIGV4cGxpY3RseSBtYXRjaCBfUEFHRV9CQVBfVVIgYml0IGluIHRoYXQgY2FzZSB0b28uCisgKiBfUEFHRV9VU0VSLiAgTmVlZCB0byBleHBsaWNpdGx5IG1hdGNoIF9QQUdFX0JBUF9VUiBiaXQgaW4gdGhhdCBjYXNlIHRvby4KICAqLwogI2RlZmluZSBwdGVfdXNlcih2YWwpCQkoKHZhbCAmIF9QQUdFX1VTRVIpID09IF9QQUdFX1VTRVIpCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9yZWdfYm9va2UuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9yZWdfYm9va2UuaAppbmRleCAzYjFhOWI3Li5iMzE2Nzk0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcmVnX2Jvb2tlLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3JlZ19ib29rZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29udGFpbnMgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgY29tbW9uIHRvIHRoZSBCb29rIEUgUG93ZXJQQwogICogc3BlY2lmaWNhdGlvbi4gIE5vdGljZSB0aGF0IHdoaWxlIHRoZSBJQk0tNDB4IHNlcmllcyBvZiBDUFVzCiAgKiBhcmUgbm90IHRydWUgQm9vayBFIFBvd2VyUENzLCB0aGV5IGJvcnJvd2VkIGEgbnVtYmVyIG9mIGZlYXR1cmVzCi0gKiBiZWZvcmUgQm9vayBFIHdhcyBmaW5hbGl6ZWQsIGFuZCBhcmUgaW5jbHVkZWQgaGVyZSBhcyB3ZWxsLiAgVW5mb3J0dW5hdGx5LAorICogYmVmb3JlIEJvb2sgRSB3YXMgZmluYWxpemVkLCBhbmQgYXJlIGluY2x1ZGVkIGhlcmUgYXMgd2VsbC4gIFVuZm9ydHVuYXRlbHksCiAgKiB0aGV5IHNvbWV0aW1lcyB1c2VkIGRpZmZlcmVudCBsb2NhdGlvbnMgdGhhbiB0cnVlIEJvb2sgRSBDUFVzIGRpZC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3B1X3ByaXYxLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3B1X3ByaXYxLmgKaW5kZXggMjUwMjBhMy4uZDhmNWM2MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwdV9wcml2MS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcHVfcHJpdjEuaApAQCAtMjIzLDcgKzIyMyw3IEBACiB9CiAKIC8qCi0gKiBUaGUgZGVjbGFyYXRpb25zIGZvbG93aW5nIGFyZSBwdXQgaGVyZSBmb3IgY29udmVuaWVuY2UKKyAqIFRoZSBkZWNsYXJhdGlvbnMgZm9sbG93aW5nIGFyZSBwdXQgaGVyZSBmb3IgY29udmVuaWVuY2UKICAqIGFuZCBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgYnkgdGhlIHBsYXRmb3JtIHNldHVwIGNvZGUuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3VuaW5vcnRoLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdW5pbm9ydGguaAppbmRleCBmNzM3NzMyLi5hZTljODk5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdW5pbm9ydGguaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdW5pbm9ydGguaApAQCAtNjAsNyArNjAsNyBAQAogICoKICAqIE9idmlvdXNseSwgdGhlIEdBUlQgaXMgbm90IGNhY2hlIGNvaGVyZW50IGFuZCBzbyBhbnkgY2hhbmdlIHRvIGl0CiAgKiBtdXN0IGJlIGZsdXNoZWQgdG8gbWVtb3J5IChvciBtYXliZSBqdXN0IG1ha2UgdGhlIEdBUlQgc3BhY2Ugbm9uCi0gKiBjYWNoYWJsZSkuIEFHUCBtZW1vcnkgaXRzZWxmIGRvZW5zJ3Qgc2VlbSB0byBiZSBjYWNoZSBjb2hlcmVudCBuZWl0aGVyLgorICogY2FjaGFibGUpLiBBR1AgbWVtb3J5IGl0c2VsZiBkb2VzJ3Qgc2VlbSB0byBiZSBjYWNoZSBjb2hlcmVudCBuZWl0aGVyLgogICoKICAqIEluIG9yZGVyIHRvIGludmFsaWRhdGUgdGhlIEdBUlQgKHdoaWNoIGlzIHByb2JhYmx5IG5lY2Vzc2FyeSB0byBpbnZhbAogICogdGhlIGJyaWRnZSBpbnRlcm5hbCBUTEJzKSwgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBoYXMgdG8gYmUgd3JpdHRlbiwKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvX2RhdGFwYWdlLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdmRzb19kYXRhcGFnZS5oCmluZGV4IDI1ZTM5MjIuLmI3M2E4MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvX2RhdGFwYWdlLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc29fZGF0YXBhZ2UuaApAQCAtNTcsNyArNTcsNyBAQAogCX0gdmVyc2lvbjsKIAogCS8qIE5vdGUgYWJvdXQgdGhlIHBsYXRmb3JtIGZsYWdzOiBpdCBub3cgb25seSBjb250YWlucyB0aGUgbHBhcgotCSAqIGJpdC4gVGhlIGFjdHVhbCBwbGF0Zm9ybSBudW1iZXIgaXMgZGVhZCBhbmQgYnVycmllZAorCSAqIGJpdC4gVGhlIGFjdHVhbCBwbGF0Zm9ybSBudW1iZXIgaXMgZGVhZCBhbmQgYnVyaWVkCiAJICovCiAJX191MzIgcGxhdGZvcm07CQkJLyogUGxhdGZvcm0gZmxhZ3MJCTB4MTggKi8KIAlfX3UzMiBwcm9jZXNzb3I7CQkvKiBQcm9jZXNzb3IgdHlwZQkJMHgxQyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9idGV4dC5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9idGV4dC5jCmluZGV4IDYyNTk0MmEuLjYwYjNlMzcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvYnRleHQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2J0ZXh0LmMKQEAgLTk5LDcgKzk5LDcgQEAKIAogLyogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBlbmFibGUgdGhlIGVhcmx5IGJvb3QgdGV4dCB3aGVuIGRvaW5nCiAgKiBPRiBib290aW5nIG9yIHdpdGhpbiBib290eCBpbml0LiBJdCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgYnRleHRfdW5tYXAoKQotICogY2FsbCBiZWZvcmUgdGhlIGxvZ2ljYWwgYWRkcmVzcyBiZWNvbWVzIHVudXNlYWJsZQorICogY2FsbCBiZWZvcmUgdGhlIGxvZ2ljYWwgYWRkcmVzcyBiZWNvbWVzIHVudXNhYmxlCiAgKi8KIHZvaWQgX19pbml0IGJ0ZXh0X3NldHVwX2Rpc3BsYXkoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGVwdGgsIGludCBwaXRjaCwKIAkJCQl1bnNpZ25lZCBsb25nIGFkZHJlc3MpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2V4Y2VwdGlvbnMtNjRlLlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2V4Y2VwdGlvbnMtNjRlLlMKaW5kZXggNWM0MzA2My4uOTY1MWFjYyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0ZS5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZXhjZXB0aW9ucy02NGUuUwpAQCAtMzc5LDcgKzM3OSw3IEBACiAJbWZzcHIJcjEzLFNQUk5fU1BSR19QQUNBCS8qIGdldCBvdXIgUEFDQSAqLwogCWIJc3lzdGVtX2NhbGxfY29tbW9uCiAKLS8qIEF1eGlsbGFyeSBQcm9jZXNzb3IgVW5hdmFpbGFibGUgSW50ZXJydXB0ICovCisvKiBBdXhpbGlhcnkgUHJvY2Vzc29yIFVuYXZhaWxhYmxlIEludGVycnVwdCAqLwogCVNUQVJUX0VYQ0VQVElPTihhcF91bmF2YWlsYWJsZSk7CiAJTk9STUFMX0VYQ0VQVElPTl9QUk9MT0coMHhmMjAsIFBST0xPR19BRERJVElPTl9OT05FKQogCUVYQ0VQVElPTl9DT01NT04oMHhmMjAsIFBBQ0FfRVhHRU4sIElOVFNfS0VFUCkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvZXhjZXB0aW9ucy02NHMuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZXhjZXB0aW9ucy02NHMuUwppbmRleCBjNTMyY2IyLi5hZWI3MzllIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2V4Y2VwdGlvbnMtNjRzLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0cy5TCkBAIC01LDcgKzUsNyBAQAogICogaGFuZGxpbmcgYW5kIG90aGVyIGZpeGVkIG9mZnNldCBzcGVjaWZpYyB0aGluZ3MuCiAgKgogICogVGhpcyBmaWxlIGlzIG1lYW50IHRvIGJlICNpbmNsdWRlZCBmcm9tIGhlYWRfNjQuUyBkdWUgdG8KLSAqIHBvc2l0aW9uIGRlcGVuZGFudCBhc3NlbWJseS4KKyAqIHBvc2l0aW9uIGRlcGVuZGVudCBhc3NlbWJseS4KICAqCiAgKiBNb3N0IG9mIHRoaXMgb3JpZ2luYXRlcyBmcm9tIGhlYWRfNjQuUyBhbmQgdGh1cyBoYXMgdGhlIHNhbWUKICAqIGNvcHlyaWdodCBoaXN0b3J5LgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzQweC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzQweC5TCmluZGV4IDlkZDIxYTguLmE5MTYyNmQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF80MHguUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNDB4LlMKQEAgLTc2Niw3ICs3NjYsNyBAQAogCSAqIG1pc3MgZ2V0IHRvIHRoaXMgcG9pbnQgdG8gbG9hZCB0aGUgVExCLgogCSAqIAlyMTAgLSBUTEJfVEFHIHZhbHVlCiAJICogCXIxMSAtIExpbnV4IFBURQotCSAqCXIxMiwgcjkgLSBhdmlsYWJsZSB0byB1c2UKKwkgKglyMTIsIHI5IC0gYXZhaWxhYmxlIHRvIHVzZQogCSAqCVBJRCAtIGxvYWRlZCB3aXRoIHByb3BlciB2YWx1ZSB3aGVuIHdlIGdldCBoZXJlCiAJICoJVXBvbiBleGl0LCB3ZSByZWxvYWQgZXZlcnl0aGluZyBhbmQgUkZJLgogCSAqIEFjdHVhbGx5LCBpdCB3aWxsIGZpdCBub3csIGJ1dCBvaCB3ZWxsLi4uLi5hIGNvbW1vbiBwbGFjZQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzQ0eC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzQ0eC5TCmluZGV4IGNiYjM0MzYuLjVlMTJiNzQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF80NHguUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNDR4LlMKQEAgLTE3OCw3ICsxNzgsNyBAQAogCU5PUk1BTF9FWENFUFRJT05fUFJPTE9HCiAJRVhDX1hGRVJfRUVfTElURSgweDBjMDAsIERvU3lzY2FsbCkKIAotCS8qIEF1eGlsbGFyeSBQcm9jZXNzb3IgVW5hdmFpbGFibGUgSW50ZXJydXB0ICovCisJLyogQXV4aWxpYXJ5IFByb2Nlc3NvciBVbmF2YWlsYWJsZSBJbnRlcnJ1cHQgKi8KIAlFWENFUFRJT04oMHgyMDIwLCBBdXhpbGxhcnlQcm9jZXNzb3JVbmF2YWlsYWJsZSwgdW5rbm93bl9leGNlcHRpb24sIEVYQ19YRkVSX0VFKQogCiAJLyogRGVjcmVtZW50ZXIgSW50ZXJydXB0ICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNjQuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF82NC5TCmluZGV4IDI3MTE0MGIuLjNhMzE5ZjkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF82NC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF82NC5TCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8YXNtL2t2bV9ib29rM3NfYXNtLmg+CiAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgogCi0vKiBUaGUgcGh5c2ljYWwgbWVtb3J5IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIHNlY29uZGFyeSBwcm9jZXNzb3IKKy8qIFRoZSBwaHlzaWNhbCBtZW1vcnkgaXMgbGFpZCBvdXQgc3VjaCB0aGF0IHRoZSBzZWNvbmRhcnkgcHJvY2Vzc29yCiAgKiBzcGluIGNvZGUgc2l0cyBhdCAweDAwMDAuLi4weDAwZmYuIE9uIHNlcnZlciwgdGhlIHZlY3RvcnMgZm9sbG93CiAgKiB1c2luZyB0aGUgbGF5b3V0IGRlc2NyaWJlZCBpbiBleGNlcHRpb25zLTY0cy5TCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF9mc2xfYm9va2UuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF9mc2xfYm9va2UuUwppbmRleCAzZTAyNzEwLi41ZWNmNTRjIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfZnNsX2Jvb2tlLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkX2ZzbF9ib29rZS5TCkBAIC0zMjYsNyArMzI2LDcgQEAKIAlOT1JNQUxfRVhDRVBUSU9OX1BST0xPRwogCUVYQ19YRkVSX0VFX0xJVEUoMHgwYzAwLCBEb1N5c2NhbGwpCiAKLQkvKiBBdXhpbGxhcnkgUHJvY2Vzc29yIFVuYXZhaWxhYmxlIEludGVycnVwdCAqLworCS8qIEF1eGlsaWFyeSBQcm9jZXNzb3IgVW5hdmFpbGFibGUgSW50ZXJydXB0ICovCiAJRVhDRVBUSU9OKDB4MjkwMCwgQXV4aWxsYXJ5UHJvY2Vzc29yVW5hdmFpbGFibGUsIHVua25vd25fZXhjZXB0aW9uLCBFWENfWEZFUl9FRSkKIAogCS8qIERlY3JlbWVudGVyIEludGVycnVwdCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9sMmNyXzZ4eC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9sMmNyXzZ4eC5TCmluZGV4IDJhMmYzYzMuLjk3ZWM4NTUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbDJjcl82eHguUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2wyY3JfNnh4LlMKQEAgLTE1MSw3ICsxNTEsNyBAQAogCSAvKioqKiBNaWdodCBiZSBhIGdvb2QgaWRlYSB0byBzZXQgTDJETyBoZXJlIC0gdG8gcHJldmVudCBpbnN0cnVjdGlvbnMKIAkgICAgICAgZnJvbSBnZXR0aW5nIGludG8gdGhlIGNhY2hlLiAgQnV0IHNpbmNlIHdlIGludmFsaWRhdGUKIAkgICAgICAgdGhlIG5leHQgdGltZSB3ZSBlbmFibGUgdGhlIGNhY2hlIGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KLQkgICAgICAgRG9uJ3QgZG8gdGhpcyB1bmxlc3MgeW91IGFjY29tb2RhdGUgYWxsIHByb2Nlc3NvciB2YXJpYXRpb25zLgorCSAgICAgICBEb24ndCBkbyB0aGlzIHVubGVzcyB5b3UgYWNjb21tb2RhdGUgYWxsIHByb2Nlc3NvciB2YXJpYXRpb25zLgogCSAgICAgICBUaGUgYml0IG1vdmVkIG9uIHRoZSA3NDUwLi4uLi4KIAkgICoqKiovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbHBhcmNmZy5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9scGFyY2ZnLmMKaW5kZXggMTY0NjgzNi4uMzAxZGI2NSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9scGFyY2ZnLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9scGFyY2ZnLmMKQEAgLTI2Miw3ICsyNjIsNyBAQAogCXNlcV9wcmludGYobSwgInN5c3RlbV9hY3RpdmVfcHJvY2Vzc29ycz0lZFxuIiwKIAkgICAgICAgICAgIHBwcF9kYXRhLmFjdGl2ZV9zeXN0ZW1fcHJvY3MpOwogCi0JLyogcG9vbCByZWxhdGVkIGVudHJpZXMgYXJlIGFwcm9wcmlhdGUgZm9yIHNoYXJlZCBjb25maWdzICovCisJLyogcG9vbCByZWxhdGVkIGVudHJpZXMgYXJlIGFwcHJvcHJpYXRlIGZvciBzaGFyZWQgY29uZmlncyAqLwogCWlmIChscHBhY2Ffb2YoMCkuc2hhcmVkX3Byb2MpIHsKIAkJdW5zaWduZWQgbG9uZyBwb29sX2lkbGVfdGltZSwgcG9vbF9wcm9jczsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wZXJmX2V2ZW50LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BlcmZfZXZlbnQuYwppbmRleCA5N2UwYWU0Li5jNDA2M2I3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3BlcmZfZXZlbnQuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BlcmZfZXZlbnQuYwpAQCAtNzU5LDcgKzc1OSw3IEBACiAKIAkvKgogCSAqIElmIGdyb3VwIGV2ZW50cyBzY2hlZHVsaW5nIHRyYW5zYWN0aW9uIHdhcyBzdGFydGVkLAotCSAqIHNraXAgdGhlIHNjaGVkdWxhYmlsaXR5IHRlc3QgaGVyZSwgaXQgd2lsbCBiZSBwZWZvcm1lZAorCSAqIHNraXAgdGhlIHNjaGVkdWxhYmlsaXR5IHRlc3QgaGVyZSwgaXQgd2lsbCBiZSBwZXJmb3JtZWQKIAkgKiBhdCBjb21taXQgdGltZSgtPmNvbW1pdF90eG4pIGFzIGEgd2hvbGUKIAkgKi8KIAlpZiAoY3B1aHctPmdyb3VwX2ZsYWcgJiBQRVJGX0VWRU5UX1RYTikKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHBjX3NhdmVfcmVncy5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcGNfc2F2ZV9yZWdzLlMKaW5kZXggZTgzYmEzZi4uMWIxNzg3ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcGNfc2F2ZV9yZWdzLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcGNfc2F2ZV9yZWdzLlMKQEAgLTE1LDcgKzE1LDcgQEAKIAogLyoKICAqIEdyYWIgdGhlIHJlZ2lzdGVyIHZhbHVlcyBhcyB0aGV5IGFyZSBub3cuCi0gKiBUaGlzIHdvbid0IGRvIGEgcGFydGljdWxhcmlseSBnb29kIGpvYiBiZWNhdXNlIHdlIHJlYWxseQorICogVGhpcyB3b24ndCBkbyBhIHBhcnRpY3VsYXJseSBnb29kIGpvYiBiZWNhdXNlIHdlIHJlYWxseQogICogd2FudCBvdXIgY2FsbGVyJ3MgY2FsbGVyJ3MgcmVnaXN0ZXJzLCBhbmQgb3VyIGNhbGxlciBoYXMKICAqIGFscmVhZHkgZXhlY3V0ZWQgaXRzIHByb2xvZ3VlLgogICogVG9EbzogV2UgY291bGQgcmVhY2ggYmFjayBpbnRvIHRoZSBjYWxsZXIncyBzYXZlIGFyZWEgdG8gZG8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbS5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMKaW5kZXggMDViNzEzOS4uZTc0ZmExMiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMKQEAgLTY4Myw3ICs2ODMsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBDT05GSUdfUEhZUF9EVU1QCi0JLyogc2NhbiB0cmVlIHRvIHNlZSBpZiBkdW1wIG9jY3VyZWQgZHVyaW5nIGxhc3QgYm9vdCAqLworCS8qIHNjYW4gdHJlZSB0byBzZWUgaWYgZHVtcCBvY2N1cnJlZCBkdXJpbmcgbGFzdCBib290ICovCiAJb2Zfc2Nhbl9mbGF0X2R0KGVhcmx5X2luaXRfZHRfc2Nhbl9waHlwX2R1bXAsIE5VTEwpOwogI2VuZGlmCiAKQEAgLTczOSw3ICs3MzksNyBAQAogCiAJREJHKCJTY2FubmluZyBDUFVzIC4uLlxuIik7CiAKLQkvKiBSZXRyZWl2ZSBDUFUgcmVsYXRlZCBpbmZvcm1hdGlvbnMgZnJvbSB0aGUgZmxhdCB0cmVlCisJLyogUmV0cmlldmUgQ1BVIHJlbGF0ZWQgaW5mb3JtYXRpb25zIGZyb20gdGhlIGZsYXQgdHJlZQogCSAqIChhbHRpdmVjIHN1cHBvcnQsIGJvb3QgQ1BVIElELCAuLi4pCiAJICovCiAJb2Zfc2Nhbl9mbGF0X2R0KGVhcmx5X2luaXRfZHRfc2Nhbl9jcHVzLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3B0cmFjZS5jCmluZGV4IDg5NWIwODIuLjU1NjEzZTMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYwpAQCAtNDYzLDcgKzQ2Myw3IEBACiAjaWZkZWYgQ09ORklHX1ZTWAogLyoKICAqIEN1cnJlbnRseSB0byBzZXQgYW5kIGFuZCBnZXQgYWxsIHRoZSB2c3ggc3RhdGUsIHlvdSBuZWVkIHRvIGNhbGwKLSAqIHRoZSBmcCBhbmQgVk1YIGNhbGxzIGFzd2VsbC4gIFRoaXMgb25seSBnZXQvc2V0cyB0aGUgbG93ZXIgMzIKKyAqIHRoZSBmcCBhbmQgVk1YIGNhbGxzIGFzIHdlbGwuICBUaGlzIG9ubHkgZ2V0L3NldHMgdGhlIGxvd2VyIDMyCiAgKiAxMjhiaXQgVlNYIHJlZ2lzdGVycy4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNkLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNkLmMKaW5kZXggNzk4MGVjMC4uNjdmNmMzYiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzZC5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhc2QuYwpAQCAtNDY1LDcgKzQ2NSw3IEBACiAJcHJfZGVidWcoInJ0YXNkOiB3aWxsIHNsZWVwIGZvciAlZCBtaWxsaXNlY29uZHNcbiIsCiAJCSAoMzAwMDAgLyBydGFzX2V2ZW50X3NjYW5fcmF0ZSkpOwogCi0JLyogUmV0cmVpdmUgZXJyb3JzIGZyb20gbnZyYW0gaWYgYW55ICovCisJLyogUmV0cmlldmUgZXJyb3JzIGZyb20gbnZyYW0gaWYgYW55ICovCiAJcmV0cmVpdmVfbnZyYW1fZXJyb3JfbG9nKCk7CiAKIAlzY2hlZHVsZV9kZWxheWVkX3dvcmtfb24oY3B1bWFza19maXJzdChjcHVfb25saW5lX21hc2spLApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zd3N1c3BfMzIuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3dzdXNwXzMyLlMKaW5kZXggYjA3NTRlMi4uYmE0ZGVlMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9zd3N1c3BfMzIuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3N3c3VzcF8zMi5TCkBAIC0xNDMsNyArMTQzLDcgQEAKIAogCS8qIERpc2FibGUgTVNSOkRSIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB0YWtlIGEgVExCIG9yCiAJICogaGFzaCBtaXNzIGR1cmluZyB0aGUgY29weSwgYXMgb3VyIGhhc2ggdGFibGUgd2lsbAotCSAqIGZvciBhIHdoaWxlIGJlIHVudXNlYWJsZS4gRm9yIC50ZXh0LCB3ZSBhc3N1bWUgd2UgYXJlCisJICogZm9yIGEgd2hpbGUgYmUgdW51c2FibGUuIEZvciAudGV4dCwgd2UgYXNzdW1lIHdlIGFyZQogCSAqIGNvdmVyZWQgYnkgYSBCQVQuIFRoaXMgd29ya3Mgb25seSBmb3Igbm9uLUc1IGF0IHRoaXMKIAkgKiBwb2ludC4gRzUgd2lsbCBuZWVkIGEgYmV0dGVyIGFwcHJvYWNoLCBwb3NzaWJseSB1c2luZwogCSAqIGEgc21hbGwgdGVtcG9yYXJ5IGhhc2ggdGFibGUgZmlsbGVkIHdpdGggbGFyZ2UgbWFwcGluZ3MsCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3RyYXBzLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3RyYXBzLmMKaW5kZXggYmQ3NGZhYy4uNWRkYjgwMSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdHJhcHMuYwpAQCAtOTU5LDcgKzk1OSw3IEBACiAJICogRVNSX0RTVCAoIT8pIG9yIDAuICBJbiB0aGUgcHJvY2VzcyBvZiBjaGFzaW5nIHRoaXMgd2l0aCB0aGUKIAkgKiBoYXJkd2FyZSBwZW9wbGUgLSBub3Qgc3VyZSBpZiBpdCBjYW4gaGFwcGVuIG9uIGFueSBpbGxlZ2FsCiAJICogaW5zdHJ1Y3Rpb24gb3Igb25seSBvbiBGUCBpbnN0cnVjdGlvbnMsIHdoZXRoZXIgdGhlcmUgaXMgYQotCSAqIHBhdHRlcm4gdG8gb2NjdXJlbmNlcyBldGMuIC1kZ2lic29uIDMxL01hci8yMDAzICovCisJICogcGF0dGVybiB0byBvY2N1cnJlbmNlcyBldGMuIC1kZ2lic29uIDMxL01hci8yMDAzICovCiAJc3dpdGNoIChkb19tYXRoZW11KHJlZ3MpKSB7CiAJY2FzZSAwOgogCQllbXVsYXRlX3NpbmdsZV9zdGVwKHJlZ3MpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC91ZGJnXzE2NTUwLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3VkYmdfMTY1NTAuYwppbmRleCBiNGIxNjdiLi5iYWEzM2E3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3VkYmdfMTY1NTAuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3VkYmdfMTY1NTAuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiB1ZGJnIGZvciBOUzE2NTUwIGNvbXBhdGFibGUgc2VyaWFsIHBvcnRzCisgKiB1ZGJnIGZvciBOUzE2NTUwIGNvbXBhdGlibGUgc2VyaWFsIHBvcnRzCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDUgUFBDIDY0IFRlYW0sIElCTSBDb3JwCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvMzIvc2lndHJhbXAuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzMyL3NpZ3RyYW1wLlMKaW5kZXggNjhkNDlkZC4uY2YwYzljOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvMzIvc2lndHJhbXAuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc28zMi9zaWd0cmFtcC5TCkBAIC0xOSw3ICsxOSw3IEBACiAKIC8qIFRoZSBub3AgaGVyZSBpcyBhIGhhY2suICBUaGUgZHdhcmYyIHVud2luZCByb3V0aW5lcyBzdWJ0cmFjdCAxIGZyb20KICAgIHRoZSByZXR1cm4gYWRkcmVzcyB0byBnZXQgYW4gYWRkcmVzcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcmVzdW1lZAotICAgY2FsbCBpbnN0cnVjdGlvbi4gIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBjYWxsIGhlcmUsIHdlIGFydGlmaWNhbGx5CisgICBjYWxsIGluc3RydWN0aW9uLiAgU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGNhbGwgaGVyZSwgd2UgYXJ0aWZpY2lhbGx5CiAgICBleHRlbmQgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIHVud2luZCBpbmZvIGJ5IGFkZGluZyBhIG5vcCBiZWZvcmUKICAgIHRoZSByZWFsIHN0YXJ0LiAgKi8KIAlub3AKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzY0L3NpZ3RyYW1wLlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9zaWd0cmFtcC5TCmluZGV4IDU5ZWI1OWIuLjQ1ZWEyODEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzY0L3NpZ3RyYW1wLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvNjQvc2lndHJhbXAuUwpAQCAtMjAsNyArMjAsNyBAQAogCiAvKiBUaGUgbm9wIGhlcmUgaXMgYSBoYWNrLiAgVGhlIGR3YXJmMiB1bndpbmQgcm91dGluZXMgc3VidHJhY3QgMSBmcm9tCiAgICB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gZ2V0IGFuIGFkZHJlc3MgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcHJlc3VtZWQKLSAgIGNhbGwgaW5zdHJ1Y3Rpb24uICBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgY2FsbCBoZXJlLCB3ZSBhcnRpZmljYWxseQorICAgY2FsbCBpbnN0cnVjdGlvbi4gIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBjYWxsIGhlcmUsIHdlIGFydGlmaWNpYWxseQogICAgZXh0ZW5kIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZSB1bndpbmQgaW5mbyBieSBwYWRkaW5nIGJlZm9yZSB0aGUKICAgIHJlYWwgc3RhcnQuICAqLwogCW5vcApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2hhc2hfbG93XzY0LlMgYi9hcmNoL3Bvd2VycGMvbW0vaGFzaF9sb3dfNjQuUwppbmRleCAzMDc5ZjZiLi41YjdkZDRlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF9sb3dfNjQuUworKysgYi9hcmNoL3Bvd2VycGMvbW0vaGFzaF9sb3dfNjQuUwpAQCAtMTkyLDggKzE5Miw4IEBACiAJcmxkaWNyCXIzLHIwLDMsNjMtMwkJLyogcjMgPSAoaGFzaCAmIG1hc2spIDw8IDMgKi8KIAogCS8qIENhbGwgcHBjX21kLmhwdGVfaW5zZXJ0ICovCi0JbGQJcjYsU1RLX1BBUk0ocjQpKHIxKQkvKiBSZXRyZWl2ZSBuZXcgcHAgYml0cyAqLwotCW1yCXI0LHIyOQkJCS8qIFJldHJlaXZlIHZhICovCisJbGQJcjYsU1RLX1BBUk0ocjQpKHIxKQkvKiBSZXRyaWV2ZSBuZXcgcHAgYml0cyAqLworCW1yCXI0LHIyOQkJCS8qIFJldHJpZXZlIHZhICovCiAJbGkJcjcsMAkJCS8qICFib2x0ZWQsICFzZWNvbmRhcnkgKi8KIAlsaQlyOCxNTVVfUEFHRV80SwkJLyogcGFnZSBzaXplICovCiAJbGQJcjksU1RLX1BBUk0ocjkpKHIxKQkvKiBzZWdtZW50IHNpemUgKi8KQEAgLTIxNSw4ICsyMTUsOCBAQAogCXJsZGljcglyMyxyMCwzLDYzLTMJLyogcjAgPSAofmhhc2ggJiBtYXNrKSA8PCAzICovCiAJCiAJLyogQ2FsbCBwcGNfbWQuaHB0ZV9pbnNlcnQgKi8KLQlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJlaXZlIG5ldyBwcCBiaXRzICovCi0JbXIJcjQscjI5CQkJLyogUmV0cmVpdmUgdmEgKi8KKwlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJpZXZlIG5ldyBwcCBiaXRzICovCisJbXIJcjQscjI5CQkJLyogUmV0cmlldmUgdmEgKi8KIAlsaQlyNyxIUFRFX1ZfU0VDT05EQVJZCS8qICFib2x0ZWQsIHNlY29uZGFyeSAqLwogCWxpCXI4LE1NVV9QQUdFXzRLCQkvKiBwYWdlIHNpemUgKi8KIAlsZAlyOSxTVEtfUEFSTShyOSkocjEpCS8qIHNlZ21lbnQgc2l6ZSAqLwpAQCAtNDk1LDggKzQ5NSw4IEBACiAJcmxkaWNyCXIzLHIwLDMsNjMtMwkJLyogcjAgPSAoaGFzaCAmIG1hc2spIDw8IDMgKi8KIAogCS8qIENhbGwgcHBjX21kLmhwdGVfaW5zZXJ0ICovCi0JbGQJcjYsU1RLX1BBUk0ocjQpKHIxKQkvKiBSZXRyZWl2ZSBuZXcgcHAgYml0cyAqLwotCW1yCXI0LHIyOQkJCS8qIFJldHJlaXZlIHZhICovCisJbGQJcjYsU1RLX1BBUk0ocjQpKHIxKQkvKiBSZXRyaWV2ZSBuZXcgcHAgYml0cyAqLworCW1yCXI0LHIyOQkJCS8qIFJldHJpZXZlIHZhICovCiAJbGkJcjcsMAkJCS8qICFib2x0ZWQsICFzZWNvbmRhcnkgKi8KIAlsaQlyOCxNTVVfUEFHRV80SwkJLyogcGFnZSBzaXplICovCiAJbGQJcjksU1RLX1BBUk0ocjkpKHIxKQkvKiBzZWdtZW50IHNpemUgKi8KQEAgLTUyMiw4ICs1MjIsOCBAQAogCXJsZGljcglyMyxyMCwzLDYzLTMJCS8qIHIwID0gKH5oYXNoICYgbWFzaykgPDwgMyAqLwogCiAJLyogQ2FsbCBwcGNfbWQuaHB0ZV9pbnNlcnQgKi8KLQlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJlaXZlIG5ldyBwcCBiaXRzICovCi0JbXIJcjQscjI5CQkJLyogUmV0cmVpdmUgdmEgKi8KKwlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJpZXZlIG5ldyBwcCBiaXRzICovCisJbXIJcjQscjI5CQkJLyogUmV0cmlldmUgdmEgKi8KIAlsaQlyNyxIUFRFX1ZfU0VDT05EQVJZCS8qICFib2x0ZWQsIHNlY29uZGFyeSAqLwogCWxpCXI4LE1NVV9QQUdFXzRLCQkvKiBwYWdlIHNpemUgKi8KIAlsZAlyOSxTVEtfUEFSTShyOSkocjEpCS8qIHNlZ21lbnQgc2l6ZSAqLwpAQCAtODEzLDggKzgxMyw4IEBACiAJcmxkaWNyCXIzLHIwLDMsNjMtMwkvKiByMCA9IChoYXNoICYgbWFzaykgPDwgMyAqLwogCiAJLyogQ2FsbCBwcGNfbWQuaHB0ZV9pbnNlcnQgKi8KLQlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJlaXZlIG5ldyBwcCBiaXRzICovCi0JbXIJcjQscjI5CQkJLyogUmV0cmVpdmUgdmEgKi8KKwlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJpZXZlIG5ldyBwcCBiaXRzICovCisJbXIJcjQscjI5CQkJLyogUmV0cmlldmUgdmEgKi8KIAlsaQlyNywwCQkJLyogIWJvbHRlZCwgIXNlY29uZGFyeSAqLwogCWxpCXI4LE1NVV9QQUdFXzY0SwogCWxkCXI5LFNUS19QQVJNKHI5KShyMSkJLyogc2VnbWVudCBzaXplICovCkBAIC04MzYsOCArODM2LDggQEAKIAlybGRpY3IJcjMscjAsMyw2My0zCS8qIHIwID0gKH5oYXNoICYgbWFzaykgPDwgMyAqLwogCiAJLyogQ2FsbCBwcGNfbWQuaHB0ZV9pbnNlcnQgKi8KLQlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJlaXZlIG5ldyBwcCBiaXRzICovCi0JbXIJcjQscjI5CQkJLyogUmV0cmVpdmUgdmEgKi8KKwlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJpZXZlIG5ldyBwcCBiaXRzICovCisJbXIJcjQscjI5CQkJLyogUmV0cmlldmUgdmEgKi8KIAlsaQlyNyxIUFRFX1ZfU0VDT05EQVJZCS8qICFib2x0ZWQsIHNlY29uZGFyeSAqLwogCWxpCXI4LE1NVV9QQUdFXzY0SwogCWxkCXI5LFNUS19QQVJNKHI5KShyMSkJLyogc2VnbWVudCBzaXplICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jIGIvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRpbHNfNjQuYwppbmRleCBhNTk5MWZhLi41OGEwMjJkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMKQEAgLTc1Myw3ICs3NTMsNyBAQAogCQltdHNwcihTUFJOX1NEUjEsIF9TRFIxKTsKIAogCS8qIEluaXRpYWxpemUgU1RBQi9TTEIuIFdlIHVzZSBhIHZpcnR1YWwgYWRkcmVzcyBhcyBpdCB3b3JrcwotCSAqIGluIHJlYWwgbW9kZSBvbiBwU2VyaWVzIGFuZCB3ZSB3YW50IGEgdmlydXRhbCBhZGRyZXNzIG9uCisJICogaW4gcmVhbCBtb2RlIG9uIHBTZXJpZXMgYW5kIHdlIHdhbnQgYSB2aXJ0dWFsIGFkZHJlc3Mgb24KIAkgKiBpU2VyaWVzIGFueXdheQogCSAqLwogCWlmIChjcHVfaGFzX2ZlYXR1cmUoQ1BVX0ZUUl9TTEIpKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL21lbS5jIGIvYXJjaC9wb3dlcnBjL21tL21lbS5jCmluZGV4IGE2NjQ5OTYuLjU3ZTU0NWIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9tZW0uYworKysgYi9hcmNoL3Bvd2VycGMvbW0vbWVtLmMKQEAgLTQyNCw3ICs0MjQsNyBAQAogCWNsZWFyX3BhZ2UocGFnZSk7CiAKIAkvKgotCSAqIFdlIHNob3VsZG50IGhhdmUgdG8gZG8gdGhpcywgYnV0IHNvbWUgdmVyc2lvbnMgb2YgZ2xpYmMKKwkgKiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzLCBidXQgc29tZSB2ZXJzaW9ucyBvZiBnbGliYwogCSAqIHJlcXVpcmUgaXQgKGxkLnNvIGFzc3VtZXMgemVybyBmaWxsZWQgcGFnZXMgYXJlIGljYWNoZSBjbGVhbikKIAkgKiAtIEFudG9uCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vbnVtYS5jIGIvYXJjaC9wb3dlcnBjL21tL251bWEuYwppbmRleCAwZGM5NWMwLi41ZWMxZGFkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vbnVtYS5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKQEAgLTQ0MCwxMSArNDQwLDExIEBACiB9CiAKIC8qCi0gKiBSZXRyZWl2ZSBhbmQgdmFsaWRhdGUgdGhlIGlibSxkeW5hbWljLW1lbW9yeSBwcm9wZXJ0eSBvZiB0aGUgZGV2aWNlIHRyZWUuCisgKiBSZXRyaWV2ZSBhbmQgdmFsaWRhdGUgdGhlIGlibSxkeW5hbWljLW1lbW9yeSBwcm9wZXJ0eSBvZiB0aGUgZGV2aWNlIHRyZWUuCiAgKgogICogVGhlIGxheW91dCBvZiB0aGUgaWJtLGR5bmFtaWMtbWVtb3J5IHByb3BlcnR5IGlzIGEgbnVtYmVyIE4gb2YgbWVtYmxvY2sKICAqIGxpc3QgZW50cmllcyBmb2xsb3dlZCBieSBOIG1lbWJsb2NrIGxpc3QgZW50cmllcy4gIEVhY2ggbWVtYmxvY2sgbGlzdCBlbnRyeQotICogY29udGFpbnMgaW5mb3JtYXRpb24gYXMgbGF5ZWQgb3V0IGluIHRoZSBvZl9kcmNvbmZfY2VsbCBzdHJ1Y3QgYWJvdmUuCisgKiBjb250YWlucyBpbmZvcm1hdGlvbiBhcyBsYWlkIG91dCBpbiB0aGUgb2ZfZHJjb25mX2NlbGwgc3RydWN0IGFib3ZlLgogICovCiBzdGF0aWMgaW50IG9mX2dldF9kcmNvbmZfbWVtb3J5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWVtb3J5LCBjb25zdCB1MzIgKipkbSkKIHsKQEAgLTQ2OCw3ICs0NjgsNyBAQAogfQogCiAvKgotICogUmV0cmVpdmUgYW5kIHZhbGlkYXRlIHRoZSBpYm0sbG1iLXNpemUgcHJvcGVydHkgZm9yIGRyY29uZiBtZW1vcnkKKyAqIFJldHJpZXZlIGFuZCB2YWxpZGF0ZSB0aGUgaWJtLGxtYi1zaXplIHByb3BlcnR5IGZvciBkcmNvbmYgbWVtb3J5CiAgKiBmcm9tIHRoZSBkZXZpY2UgdHJlZS4KICAqLwogc3RhdGljIHU2NCBvZl9nZXRfbG1iX3NpemUoc3RydWN0IGRldmljZV9ub2RlICptZW1vcnkpCkBAIC00OTAsNyArNDkwLDcgQEAKIH07CiAKIC8qCi0gKiBSZXRyZWl2ZSBhbmQgdmFsaWRhdGUgdGhlIGxpc3Qgb2YgYXNzb2NpYXRpdml0eSBhcnJheXMgZm9yIGRyY29uZgorICogUmV0cmlldmUgYW5kIHZhbGlkYXRlIHRoZSBsaXN0IG9mIGFzc29jaWF0aXZpdHkgYXJyYXlzIGZvciBkcmNvbmYKICAqIG1lbW9yeSBmcm9tIHRoZSBpYm0sYXNzb2NpYXRpdml0eS1sb29rdXAtYXJyYXlzIHByb3BlcnR5IG9mIHRoZQogICogZGV2aWNlIHRyZWUuLgogICoKQEAgLTYwNCw3ICs2MDQsNyBAQAogICogUmV0dXJucyB0aGUgc2l6ZSB0aGUgcmVnaW9uIHNob3VsZCBoYXZlIHRvIGVuZm9yY2UgdGhlIG1lbW9yeSBsaW1pdC4KICAqIFRoaXMgd2lsbCBlaXRoZXIgYmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9mIHNpemUsIGEgdHJ1bmNhdGVkIHZhbHVlLAogICogb3IgemVyby4gSWYgdGhlIHJldHVybmVkIHZhbHVlIG9mIHNpemUgaXMgMCB0aGUgcmVnaW9uIHNob3VsZCBiZQotICogZGlzY2FyZGVkIGFzIGl0IGxpZXMgd2hvbHkgYWJvdmUgdGhlIG1lbW9yeSBsaW1pdC4KKyAqIGRpc2NhcmRlZCBhcyBpdCBsaWVzIHdob2xseSBhYm92ZSB0aGUgbWVtb3J5IGxpbWl0LgogICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgbnVtYV9lbmZvcmNlX21lbW9yeV9saW1pdCh1bnNpZ25lZCBsb25nIHN0YXJ0LAogCQkJCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL3RsYl9sb3dfNjRlLlMgYi9hcmNoL3Bvd2VycGMvbW0vdGxiX2xvd182NGUuUwppbmRleCAyMjI4MTUxLi5hZjA4OTIyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vdGxiX2xvd182NGUuUworKysgYi9hcmNoL3Bvd2VycGMvbW0vdGxiX2xvd182NGUuUwpAQCAtMTkyLDcgKzE5Miw3IEBACiAJb3IJcjEwLHIxNSxyMTQKIAogQkVHSU5fTU1VX0ZUUl9TRUNUSU9OCi0JLyogU2V0IHRoZSBUTEIgcmVzZXJ2YXRpb24gYW5kIHNlYWNoIGZvciBleGlzdGluZyBlbnRyeS4gVGhlbiBsb2FkCisJLyogU2V0IHRoZSBUTEIgcmVzZXJ2YXRpb24gYW5kIHNlYXJjaCBmb3IgZXhpc3RpbmcgZW50cnkuIFRoZW4gbG9hZAogCSAqIHRoZSBlbnRyeS4KIAkgKi8KIAlQUENfVExCU1JYX0RPVCgwLHIxNikKQEAgLTQyNSw3ICs0MjUsNyBAQAogCiB2aXJ0X3BhZ2VfdGFibGVfdGxiX21pc3NfZmF1bHQ6CiAJLyogSWYgd2UgZmF1bHQgaGVyZSwgdGhpbmdzIGFyZSBhIGxpdHRsZSBiaXQgdHJpY2t5LiBXZSBuZWVkIHRvIGNhbGwKLQkgKiBlaXRoZXIgZGF0YSBvciBpbnN0cnVjdGlvbiBzdG9yZSBmYXVsdCwgYW5kIHdlIG5lZWQgdG8gcmV0cmVpdmUKKwkgKiBlaXRoZXIgZGF0YSBvciBpbnN0cnVjdGlvbiBzdG9yZSBmYXVsdCwgYW5kIHdlIG5lZWQgdG8gcmV0cmlldmUKIAkgKiB0aGUgb3JpZ2luYWwgZmF1bHQgYWRkcmVzcyBhbmQgRVNSIChmb3IgZGF0YSkuCiAJICoKIAkgKiBUaGUgdGhpbmcgaXMsIHdlIGtub3cgdGhhdCBpbiBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyBpcwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX2NlbGwuYyBiL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9vcF9tb2RlbF9jZWxsLmMKaW5kZXggYzRkMmI3MS4uY2I1MTVjZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX2NlbGwuYworKysgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfY2VsbC5jCkBAIC02Nyw3ICs2Nyw3IEBACiAKICNkZWZpbmUgTUFYX1NQVV9DT1VOVCAweEZGRkZGRgkvKiBtYXhpbXVtIDI0IGJpdCBMRlNSIHZhbHVlICovCiAKLS8qIE1pbnVtdW0gSFcgaW50ZXJ2YWwgdGltZXIgc2V0dGluZyB0byBzZW5kIHZhbHVlIHRvIHRyYWNlIGJ1ZmZlciBpcyAxMCBjeWNsZS4KKy8qIE1pbmltdW0gSFcgaW50ZXJ2YWwgdGltZXIgc2V0dGluZyB0byBzZW5kIHZhbHVlIHRvIHRyYWNlIGJ1ZmZlciBpcyAxMCBjeWNsZS4KICAqIFRvIGNvbmZpZ3VyZSBjb3VudGVyIHRvIHNlbmQgdmFsdWUgZXZlcnkgTiBjeWNsZXMgc2V0IGNvdW50ZXIgdG8KICAqIDJeMzIgLSAxIC0gTi4KICAqLwpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAKICAqIHRyYWNlIGJ1ZmZlciBhdCB0aGUgbWF4aW11bSByYXRlIHBvc3NpYmxlLiAgVGhlIHRyYWNlIGJ1ZmZlciBpcyBjb25maWd1cmVkCiAgKiB0byBzdG9yZSB0aGUgUENzLCB3cmFwcGluZyB3aGVuIGl0IGlzIGZ1bGwuICBUaGUgcGVyZm9ybWFuY2UgY291bnRlciBpcwogICogaW5pdGlhbGl6ZWQgdG8gdGhlIG1heCBoYXJkd2FyZSBjb3VudCBtaW51cyB0aGUgbnVtYmVyIG9mIGV2ZW50cywgTiwgYmV0d2VlbgotICogc2FtcGxlcy4gIE9uY2UgdGhlIE4gZXZlbnRzIGhhdmUgb2NjdXJlZCwgYSBIVyBjb3VudGVyIG92ZXJmbG93IG9jY3VycworICogc2FtcGxlcy4gIE9uY2UgdGhlIE4gZXZlbnRzIGhhdmUgb2NjdXJyZWQsIGEgSFcgY291bnRlciBvdmVyZmxvdyBvY2N1cnMKICAqIGNhdXNpbmcgdGhlIGdlbmVyYXRpb24gb2YgYSBIVyBjb3VudGVyIGludGVycnVwdCB3aGljaCBhbHNvIHN0b3BzIHRoZQogICogd3JpdGluZyBvZiB0aGUgU1BVIFBDIHZhbHVlcyB0byB0aGUgdHJhY2UgYnVmZmVyLiAgSGVuY2UgdGhlIGxhc3QgUEMKICAqIHdyaXR0ZW4gdG8gdGhlIHRyYWNlIGJ1ZmZlciBpcyB0aGUgU1BVIFBDIHRoYXQgd2Ugd2FudC4gIFVuZm9ydHVuYXRlbHksCkBAIC0xNjU2LDcgKzE2NTYsNyBAQAogCQkgKiBUaGUgY291bnRlcnMgd2VyZSBmcm96ZW4gYnkgdGhlIGludGVycnVwdC4KIAkJICogUmVlbmFibGUgdGhlIGludGVycnVwdCBhbmQgcmVzdGFydCB0aGUgY291bnRlcnMuCiAJCSAqIElmIHRoZXJlIHdhcyBhIHJhY2UgYmV0d2VlbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYW5kCi0JCSAqIHRoZSB2aXJ0dWFsIGNvdW50ZXIgcm91dGluZS4JIFRoZSB2aXJ1dGFsIGNvdW50ZXIKKwkJICogdGhlIHZpcnR1YWwgY291bnRlciByb3V0aW5lLgkgVGhlIHZpcnR1YWwgY291bnRlcgogCQkgKiByb3V0aW5lIG1heSBoYXZlIGNsZWFyZWQgdGhlIGludGVycnVwdHMuICBIZW5jZSBtdXN0CiAJCSAqIHVzZSB0aGUgdmlydF9jbnRyX2ludGVyX21hc2sgdG8gcmUtZW5hYmxlIHRoZSBpbnRlcnJ1cHRzLgogCQkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9vcF9tb2RlbF9wb3dlcjQuYyBiL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9vcF9tb2RlbF9wb3dlcjQuYwppbmRleCA4MDc3NDA5Li44ZWU1MWEyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfcG93ZXI0LmMKKysrIGIvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX3Bvd2VyNC5jCkBAIC0yMDcsNyArMjA3LDcgQEAKIAl1bnNpZ25lZCBsb25nIG1tY3JhOwogCXVuc2lnbmVkIGxvbmcgc2xvdDsKIAotCS8qIENhbnQgZG8gbXVjaCBhYm91dCBpdCAqLworCS8qIENhbid0IGRvIG11Y2ggYWJvdXQgaXQgKi8KIAlpZiAoIWN1cl9jcHVfc3BlYy0+b3Byb2ZpbGVfbW1jcmFfc2lodikKIAkJcmV0dXJuIHBjOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9scGJmaWZvLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9scGJmaWZvLmMKaW5kZXggNjM4NWQ4OC4uOTk0MGNlOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfbHBiZmlmby5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4X2xwYmZpZm8uYwpAQCAtNTcsNyArNTcsNyBAQAogc3RhdGljIHN0cnVjdCBtcGM1Mnh4X2xwYmZpZm8gbHBiZmlmbzsKIAogLyoqCi0gKiBtcGM1Mnh4X2xwYmZpZm9fa2ljayAtIFRyaWdnZXIgdGhlIG5leHQgYmxvY2sgb2YgZGF0YSB0byBiZSB0cmFuc2ZlcmVkCisgKiBtcGM1Mnh4X2xwYmZpZm9fa2ljayAtIFRyaWdnZXIgdGhlIG5leHQgYmxvY2sgb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZAogICovCiBzdGF0aWMgdm9pZCBtcGM1Mnh4X2xwYmZpZm9fa2ljayhzdHJ1Y3QgbXBjNTJ4eF9scGJmaWZvX3JlcXVlc3QgKnJlcSkKIHsKQEAgLTE3OSw3ICsxNzksNyBAQAogICoKICAqIE9uIHRyYW5zbWl0LCB0aGUgZG1hIGNvbXBsZXRpb24gaXJxIHRyaWdnZXJzIGJlZm9yZSB0aGUgZmlmbyBjb21wbGV0aW9uCiAgKiB0cmlnZ2Vycy4gIEhhbmRsZSB0aGUgZG1hIGNvbXBsZXRpb24gaGVyZSBpbnN0ZWFkIG9mIHRoZSBMUEIgRklGTyBCZXN0Y29tbQotICogdGFzayBjb21wbGV0aW9uIGlycSBiZWN1YXNlIGV2ZXJ5dGluZyBpcyBub3QgcmVhbGx5IGRvbmUgdW50aWwgdGhlIExQQiBGSUZPCisgKiB0YXNrIGNvbXBsZXRpb24gaXJxIGJlY2F1c2UgZXZlcnl0aGluZyBpcyBub3QgcmVhbGx5IGRvbmUgdW50aWwgdGhlIExQQiBGSUZPCiAgKiBjb21wbGV0aW9uIGlycSB0cmlnZ2Vycy4KICAqCiAgKiBJbiBvdGhlciB3b3JkczoKQEAgLTE5NSw3ICsxOTUsNyBAQAogICogRXhpdCBjb25kaXRpb25zOgogICogMSkgVHJhbnNmZXIgYWJvcnRlZAogICogMikgRklGTyBjb21wbGV0ZSB3aXRob3V0IERNQTsgbW9yZSBkYXRhIHRvIGRvCi0gKiAzKSBGSUZPIGNvbXBsZXRlIHdpdGhvdXQgRE1BOyBhbGwgZGF0YSB0cmFuc2ZlcmVkCisgKiAzKSBGSUZPIGNvbXBsZXRlIHdpdGhvdXQgRE1BOyBhbGwgZGF0YSB0cmFuc2ZlcnJlZAogICogNCkgRklGTyBjb21wbGV0ZSB1c2luZyBETUEKICAqCiAgKiBDb25kaXRpb24gMSBjYW4gb2NjdXIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBETUEgaXMgdXNlZC4KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4X3BpYy5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGljLmMKaW5kZXggM2RkZWE5Ni4uMWRkMTU0MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGljLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGljLmMKQEAgLTUxMiw3ICs1MTIsNyBAQAogLyoqCiAgKiBtcGM1Mnh4X2dldF9pcnEgLSBHZXQgcGVuZGluZyBpbnRlcnJ1cHQgbnVtYmVyIGhvb2sgZnVuY3Rpb24KICAqCi0gKiBDYWxsZWQgYnkgdGhlIGludGVydXB0IGhhbmRsZXIgdG8gZGV0ZXJtaW5lIHdoYXQgSVJRIGhhbmRsZXIgbmVlZHMgdG8gYmUKKyAqIENhbGxlZCBieSB0aGUgaW50ZXJydXB0IGhhbmRsZXIgdG8gZGV0ZXJtaW5lIHdoYXQgSVJRIGhhbmRsZXIgbmVlZHMgdG8gYmUKICAqIGV4ZWN1dGVkLgogICoKICAqIFN0YXR1cyBvZiBwZW5kaW5nIGludGVycnVwdHMgaXMgZGV0ZXJtaW5lZCBieSByZWFkaW5nIHRoZSBlbmNvZGVkIHN0YXR1cwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL2xzY3NhX2FsbG9jLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvbHNjc2FfYWxsb2MuYwppbmRleCAzYjg5NGY1Li4xNDcwNjk5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvbHNjc2FfYWxsb2MuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvbHNjc2FfYWxsb2MuYwpAQCAtOTAsNyArOTAsNyBAQAogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBTUFVfTFNDU0FfTlVNX0JJR19QQUdFUzsgaSsrKSB7CiAJCS8qIFhYWCBUaGlzIGlzIGxpa2VseSB0byBmYWlsLCB3ZSBzaG91bGQgdXNlIGEgc3BlY2lhbCBwb29sCi0JCSAqICAgICBzaW1pbGlhciB0byB3aGF0IGh1Z2V0bGJmcyBkb2VzLgorCQkgKiAgICAgc2ltaWxhciB0byB3aGF0IGh1Z2V0bGJmcyBkb2VzLgogCQkgKi8KIAkJY3NhLT5sc2NzYV9wYWdlc1tpXSA9IGFsbG9jX3BhZ2VzKEdGUF9LRVJORUwsCiAJCQkJCQkgIFNQVV82NEtfUEFHRV9PUkRFUik7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc2NoZWQuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jCmluZGV4IDBiMDQ2NjIuLjY1MjAzODUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jCkBAIC04NDYsNyArODQ2LDcgQEAKIAkJc3RydWN0IGxpc3RfaGVhZCAqcnEgPSAmc3B1X3ByaW8tPnJ1bnFbYmVzdF07CiAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsIHJxLCBycSkgewotCQkJLyogWFhYKGhjaCk6IGNoZWNrIGZvciBhZmZpbml0eSBoZXJlIGFzd2VsbCAqLworCQkJLyogWFhYKGhjaCk6IGNoZWNrIGZvciBhZmZpbml0eSBoZXJlIGFzIHdlbGwgKi8KIAkJCWlmIChfX25vZGVfYWxsb3dlZChjdHgsIG5vZGUpKSB7CiAJCQkJX19zcHVfZGVsX2Zyb21fcnEoY3R4KTsKIAkJCQlnb3RvIGZvdW5kOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NwdV9yZXN0b3JlLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3Jlc3RvcmUuYwppbmRleCAyMWE5Yzk1Li43MmM5MDVmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3Jlc3RvcmUuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3Jlc3RvcmUuYwpAQCAtMjg0LDcgKzI4NCw3IEBACiAJCWV4aXRfaW5zdHJzWzNdID0gQlJfSU5TVFI7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCS8qIFNQVV9TdGF0dXNbUl09MS4gTm8gYWRkaXRvbmFsIGluc3RydWN0aW9ucy4gKi8KKwkJLyogU1BVX1N0YXR1c1tSXT0xLiBObyBhZGRpdGlvbmFsIGluc3RydWN0aW9ucy4gKi8KIAkJYnJlYWs7CiAJfQogCXNwdV9zeW5jKCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvbWYuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jCmluZGV4IGI1ZTAyNmIuLjYyZGFiZTMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jCkBAIC01MSw3ICs1MSw3IEBACiBzdGF0aWMgaW50IG1mX2luaXRpYWxpemVkOwogCiAvKgotICogVGhpcyBpcyB0aGUgc3RydWN0dXJlIGxheW91dCBmb3IgdGhlIE1hY2hpbmUgRmFjaWxpdGVzIExQQVIgZXZlbnQKKyAqIFRoaXMgaXMgdGhlIHN0cnVjdHVyZSBsYXlvdXQgZm9yIHRoZSBNYWNoaW5lIEZhY2lsaXRpZXMgTFBBUiBldmVudAogICogZmxvd3MuCiAgKi8KIHN0cnVjdCB2c3BfY21kX2RhdGEgewpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3Zpb3BhdGguYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy92aW9wYXRoLmMKaW5kZXggYjVmMDVkOS4uMjM3NjA2OSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3Zpb3BhdGguYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvdmlvcGF0aC5jCkBAIC0zOTYsNyArMzk2LDcgQEAKIAkJCXZpb3BhdGhTdGF0dXNbcmVtb3RlTHBdLm1UYXJnZXRJbnN0KSkgewogCQkJcHJpbnRrKFZJT1BBVEhfS0VSTl9XQVJOCiAJCQkgICAgICAgIm1lc3NhZ2UgZnJvbSBpbnZhbGlkIHBhcnRpdGlvbi4gIgotCQkJICAgICAgICJpbnQgbXNnIHJjdmQsIHNvdXJjZSBpbnN0ICglZCkgZG9lc250IG1hdGNoICglZClcbiIsCisJCQkgICAgICAgImludCBtc2cgcmN2ZCwgc291cmNlIGluc3QgKCVkKSBkb2Vzbid0IG1hdGNoICglZClcbiIsCiAJCQkgICAgICAgdmlvcGF0aFN0YXR1c1tyZW1vdGVMcF0ubVRhcmdldEluc3QsCiAJCQkgICAgICAgZXZlbnQtPnhTb3VyY2VJbnN0YW5jZUlkKTsKIAkJCXJldHVybjsKQEAgLTQwNyw3ICs0MDcsNyBAQAogCQkJdmlvcGF0aFN0YXR1c1tyZW1vdGVMcF0ubVNvdXJjZUluc3QpKSB7CiAJCQlwcmludGsoVklPUEFUSF9LRVJOX1dBUk4KIAkJCSAgICAgICAibWVzc2FnZSBmcm9tIGludmFsaWQgcGFydGl0aW9uLiAiCi0JCQkgICAgICAgImludCBtc2cgcmN2ZCwgdGFyZ2V0IGluc3QgKCVkKSBkb2VzbnQgbWF0Y2ggKCVkKVxuIiwKKwkJCSAgICAgICAiaW50IG1zZyByY3ZkLCB0YXJnZXQgaW5zdCAoJWQpIGRvZXNuJ3QgbWF0Y2ggKCVkKVxuIiwKIAkJCSAgICAgICB2aW9wYXRoU3RhdHVzW3JlbW90ZUxwXS5tU291cmNlSW5zdCwKIAkJCSAgICAgICBldmVudC0+eFRhcmdldEluc3RhbmNlSWQpOwogCQkJcmV0dXJuOwpAQCAtNDE4LDcgKzQxOCw3IEBACiAJCSAgICB2aW9wYXRoU3RhdHVzW3JlbW90ZUxwXS5tU291cmNlSW5zdCkgewogCQkJcHJpbnRrKFZJT1BBVEhfS0VSTl9XQVJOCiAJCQkgICAgICAgIm1lc3NhZ2UgZnJvbSBpbnZhbGlkIHBhcnRpdGlvbi4gIgotCQkJICAgICAgICJhY2sgbXNnIHJjdmQsIHNvdXJjZSBpbnN0ICglZCkgZG9lc250IG1hdGNoICglZClcbiIsCisJCQkgICAgICAgImFjayBtc2cgcmN2ZCwgc291cmNlIGluc3QgKCVkKSBkb2Vzbid0IG1hdGNoICglZClcbiIsCiAJCQkgICAgICAgdmlvcGF0aFN0YXR1c1tyZW1vdGVMcF0ubVNvdXJjZUluc3QsCiAJCQkgICAgICAgZXZlbnQtPnhTb3VyY2VJbnN0YW5jZUlkKTsKIAkJCXJldHVybjsKQEAgLTQyOCw3ICs0MjgsNyBAQAogCQkgICAgdmlvcGF0aFN0YXR1c1tyZW1vdGVMcF0ubVRhcmdldEluc3QpIHsKIAkJCXByaW50ayhWSU9QQVRIX0tFUk5fV0FSTgogCQkJICAgICAgICJtZXNzYWdlIGZyb20gaW52YWxpZCBwYXJ0aXRpb24uICIKLQkJCSAgICAgICAidmlvcGF0aDogYWNrIG1zZyByY3ZkLCB0YXJnZXQgaW5zdCAoJWQpIGRvZXNudCBtYXRjaCAoJWQpXG4iLAorCQkJICAgICAgICJ2aW9wYXRoOiBhY2sgbXNnIHJjdmQsIHRhcmdldCBpbnN0ICglZCkgZG9lc24ndCBtYXRjaCAoJWQpXG4iLAogCQkJICAgICAgIHZpb3BhdGhTdGF0dXNbcmVtb3RlTHBdLm1UYXJnZXRJbnN0LAogCQkJICAgICAgIGV2ZW50LT54VGFyZ2V0SW5zdGFuY2VJZCk7CiAJCQlyZXR1cm47CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9kbWFfbGliLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9kbWFfbGliLmMKaW5kZXggMDk2OTVhZS4uMzIxYTliMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZG1hX2xpYi5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2RtYV9saWIuYwpAQCAtMzc5LDkgKzM3OSw5IEBACiB9CiBFWFBPUlRfU1lNQk9MKHBhc2VtaV9kbWFfZnJlZV9idWYpOwogCi0vKiBwYXNlbWlfZG1hX2FsbG9jX2ZsYWcgLSBBbGxvY2F0ZSBhIGZsYWcgKGV2ZW50KSBmb3IgY2hhbm5lbCBzeW5jcm9uaXphdGlvbgorLyogcGFzZW1pX2RtYV9hbGxvY19mbGFnIC0gQWxsb2NhdGUgYSBmbGFnIChldmVudCkgZm9yIGNoYW5uZWwgc3luY2hyb25pemF0aW9uCiAgKgotICogQWxsb2NhdGVzIGEgZmxhZyBmb3IgdXNlIHdpdGggY2hhbm5lbCBzeW5jcm9uaXphdGlvbiAoZXZlbnQgZGVzY3JpcHRvcnMpLgorICogQWxsb2NhdGVzIGEgZmxhZyBmb3IgdXNlIHdpdGggY2hhbm5lbCBzeW5jaHJvbml6YXRpb24gKGV2ZW50IGRlc2NyaXB0b3JzKS4KICAqIFJldHVybnMgYWxsb2NhdGVkIGZsYWcgKDAtNjMpLCA8IDAgb24gZXJyb3IuCiAgKi8KIGludCBwYXNlbWlfZG1hX2FsbG9jX2ZsYWcodm9pZCkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvTWFrZWZpbGUgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL01ha2VmaWxlCmluZGV4IDUwZjE2OTMuLmVhNDdkZjYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvTWFrZWZpbGUKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQAogb2JqLSQoQ09ORklHX1BNQUNfQkFDS0xJR0hUKQkrPSBiYWNrbGlnaHQubwogb2JqLSQoQ09ORklHX0NQVV9GUkVRX1BNQUMpCSs9IGNwdWZyZXFfMzIubwogb2JqLSQoQ09ORklHX0NQVV9GUkVRX1BNQUM2NCkJKz0gY3B1ZnJlcV82NC5vCi0jIENPTkZJR19OVlJBTSBpcyBhbiBhcmNoLiBpbmRlcGVuZGFudCB0cmlzdGF0ZSBzeW1ib2wsIGZvciBwbWFjMzIgd2UgcmVhbGx5CisjIENPTkZJR19OVlJBTSBpcyBhbiBhcmNoLiBpbmRlcGVuZGVudCB0cmlzdGF0ZSBzeW1ib2wsIGZvciBwbWFjMzIgd2UgcmVhbGx5CiAjIG5lZWQgdGhpcyB0byBiZSBhIGJvb2wuICBDaGVhdCBoZXJlIGFuZCBwcmV0ZW5kIENPTkZJR19OVlJBTT1tIGlzIHJlYWxseQogIyBDT05GSUdfTlZSQU09eQogb2JqLSQoQ09ORklHX05WUkFNOm09eSkJCSs9IG52cmFtLm8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvbG93X2kyYy5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9sb3dfaTJjLmMKaW5kZXggNDgwNTY3ZS4uZTljOGE2MCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9sb3dfaTJjLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9sb3dfaTJjLmMKQEAgLTkwNCw3ICs5MDQsNyBAQAogCXByaW50ayhLRVJOX0lORk8gIlNNVSBpMmMgJXNcbiIsIGNvbnRyb2xsZXItPmZ1bGxfbmFtZSk7CiAKIAkvKiBMb29rIGZvciBjaGlsZHMsIG5vdGUgdGhhdCB0aGV5IG1pZ2h0IG5vdCBiZSBvZiB0aGUgcmlnaHQKLQkgKiB0eXBlIGFzIG9sZGVyIGRldmljZSB0cmVlcyBtaXggaTJjIGJ1c3NlcyBhbmQgb3RoZXIgdGhpZ25zCisJICogdHlwZSBhcyBvbGRlciBkZXZpY2UgdHJlZXMgbWl4IGkyYyBidXNzZXMgYW5kIG90aGVyIHRoaW5ncwogCSAqIGF0IHRoZSBzYW1lIGxldmVsCiAJICovCiAJZm9yIChidXNub2RlID0gTlVMTDsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGNpLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL3BjaS5jCmluZGV4IGFiNjg5ODkuLmYzM2UwOGQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGNpLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wY2kuYwpAQCAtMjk5LDcgKzI5OSw3IEBACiAgKiBUaGlzIGZ1bmN0aW9uIGRlYWxzIHdpdGggc29tZSAic3BlY2lhbCBjYXNlcyIgZGV2aWNlcy4KICAqCiAgKiAgMCAtPiBObyBzcGVjaWFsIGNhc2UKLSAqICAxIC0+IFNraXAgdGhlIGRldmljZSBidXQgYWN0IGFzIGlmIHRoZSBhY2Nlc3Mgd2FzIHN1Y2Nlc3NmdWxsCisgKiAgMSAtPiBTa2lwIHRoZSBkZXZpY2UgYnV0IGFjdCBhcyBpZiB0aGUgYWNjZXNzIHdhcyBzdWNjZXNzZnVsCiAgKiAgICAgICAocmV0dXJuIDB4ZmYncyBvbiByZWFkcywgZXZlbnR1YWxseSwgY2FjaGUgY29uZmlnIHNwYWNlCiAgKiAgICAgICBhY2Nlc3NlcyBpbiBhIGxhdGVyIHZlcnNpb24pCiAgKiAtMSAtPiBIaWRlIHRoZSBkZXZpY2UgKHVuc3VjY2Vzc2Z1bCBhY2Nlc3MpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZGxwYXIuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9kbHBhci5jCmluZGV4IGI3NGE5MjMuLjU3Y2ViOTIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9kbHBhci5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9kbHBhci5jCkBAIC03NCw3ICs3NCw3IEBACiAJCXJldHVybiBOVUxMOwogCiAJLyogVGhlIGNvbmZpZ3VyZSBjb25uZWN0b3IgcmVwb3J0ZWQgbmFtZSBkb2VzIG5vdCBjb250YWluIGEKLQkgKiBwcmVjZWVkaW5nICcvJywgc28gd2UgYWxsb2NhdGUgYSBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvCisJICogcHJlY2VkaW5nICcvJywgc28gd2UgYWxsb2NhdGUgYSBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvCiAJICogcHJlcGVuZCB0aGlzIHRvIHRoZSBmdWxsX25hbWUuCiAJICovCiAJbmFtZSA9IChjaGFyICopY2N3YSArIGNjd2EtPm5hbWVfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaC5jCmluZGV4IDNjYzRkMTAuLjg5NjQ5MTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9lZWguYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoLmMKQEAgLTY1LDcgKzY1LDcgQEAKICAqICB3aXRoIEVFSC4KICAqCiAgKiAgSWRlYWxseSwgYSBQQ0kgZGV2aWNlIGRyaXZlciwgd2hlbiBzdXNwZWN0aW5nIHRoYXQgYW4gaXNvbGF0aW9uCi0gKiAgZXZlbnQgaGFzIG9jY3VyZWQgKGUuZy4gYnkgcmVhZGluZyAweGZmJ3MpLCB3aWxsIHRoZW4gYXNrIEVFSAorICogIGV2ZW50IGhhcyBvY2N1cnJlZCAoZS5nLiBieSByZWFkaW5nIDB4ZmYncyksIHdpbGwgdGhlbiBhc2sgRUVICiAgKiAgd2hldGhlciB0aGlzIGlzIHRoZSBjYXNlLCBhbmQgdGhlbiB0YWtlIGFwcHJvcHJpYXRlIHN0ZXBzIHRvCiAgKiAgcmVzZXQgdGhlIFBDSSBzbG90LCB0aGUgUENJIGRldmljZSwgYW5kIHRoZW4gcmVzdW1lIG9wZXJhdGlvbnMuCiAgKiAgSG93ZXZlciwgdW50aWwgdGhhdCBkYXksICB0aGUgY2hlY2tpbmcgaXMgZG9uZSBoZXJlLCB3aXRoIHRoZQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctY3B1LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1jcHUuYwppbmRleCBmZDUwY2NkLi5lZjhjNDU0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1jcHUuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1jcHUuYwpAQCAtMjE2LDcgKzIxNiw3IEBACiAJCSAgICAgICBjcHUsIHBjcHUsIGNwdV9zdGF0dXMpOwogCX0KIAotCS8qIElzb2xhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGFyZSBkZWZpbmF0bHkgZG9uZSBieQorCS8qIElzb2xhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGFyZSBkZWZpbml0ZWx5IGRvbmUgYnkKIAkgKiBkcnNsb3RfY2hycF9jcHUuICBJZiB0aGV5IHdlcmUgbm90IHRoZXkgd291bGQgYmUKIAkgKiBkb25lIGhlcmUuICBDaGFuZ2UgaXNvbGF0ZSBzdGF0ZSB0byBJc29sYXRlIGFuZAogCSAqIGNoYW5nZSBhbGxvY2F0aW9uLXN0YXRlIHRvIFVudXNhYmxlLgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYwppbmRleCAxNTRjNDY0Li42ZDU0MTJhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYwpAQCAtMjcyLDcgKzI3Miw3IEBACiAJcmV0dXJuIHRjZV9yZXQ7CiB9CiAKLS8qIHRoaXMgaXMgY29tcGF0YWJsZSB3aXRoIGNlbGxzIGZvciB0aGUgZGV2aWNlIHRyZWUgcHJvcGVydHkgKi8KKy8qIHRoaXMgaXMgY29tcGF0aWJsZSB3aXRoIGNlbGxzIGZvciB0aGUgZGV2aWNlIHRyZWUgcHJvcGVydHkgKi8KIHN0cnVjdCBkeW5hbWljX2RtYV93aW5kb3dfcHJvcCB7CiAJX19iZTMyCWxpb2JuOwkJLyogdGNlIHRhYmxlIG51bWJlciAqLwogCV9fYmU2NAlkbWFfYmFzZTsJLyogYWRkcmVzcyBoaSxsbyAqLwpAQCAtOTc2LDcgKzk3Niw3IEBACiAJcHJfZGVidWcoInBjaV9kbWFfZGV2X3NldHVwX3BTZXJpZXNMUDogJXNcbiIsIHBjaV9uYW1lKGRldikpOwogCiAJLyogZGV2IHNldHVwIGZvciBMUEFSIGlzIGEgbGl0dGxlIHRyaWNreSwgc2luY2UgdGhlIGRldmljZSB0cmVlIG1pZ2h0Ci0JICogY29udGFpbiB0aGUgZG1hLXdpbmRvdyBwcm9wZXJ0aWVzIHBlci1kZXZpY2UgYW5kIG5vdCBuZWNjZXNhcmlseQorCSAqIGNvbnRhaW4gdGhlIGRtYS13aW5kb3cgcHJvcGVydGllcyBwZXItZGV2aWNlIGFuZCBub3QgbmVjZXNzYXJpbHkKIAkgKiBmb3IgdGhlIGJ1cy4gU28gd2UgbmVlZCB0byBzZWFyY2ggdXB3YXJkcyBpbiB0aGUgdHJlZSB1bnRpbCB3ZQogCSAqIGVpdGhlciBoaXQgYSBkbWEtd2luZG93IHByb3BlcnR5LCBPUiBmaW5kIGEgcGFyZW50IHdpdGggYSB0YWJsZQogCSAqIGFscmVhZHkgYWxsb2NhdGVkLgpAQCAtMTAzMyw3ICsxMDMzLDcgQEAKIAogCQkvKgogCQkgKiB0aGUgZGV2aWNlIHRyZWUgbWlnaHQgY29udGFpbiB0aGUgZG1hLXdpbmRvdyBwcm9wZXJ0aWVzCi0JCSAqIHBlci1kZXZpY2UgYW5kIG5vdCBuZWNjZXNhcmlseSBmb3IgdGhlIGJ1cy4gU28gd2UgbmVlZCB0bworCQkgKiBwZXItZGV2aWNlIGFuZCBub3QgbmVjZXNzYXJpbHkgZm9yIHRoZSBidXMuIFNvIHdlIG5lZWQgdG8KIAkJICogc2VhcmNoIHVwd2FyZHMgaW4gdGhlIHRyZWUgdW50aWwgd2UgZWl0aGVyIGhpdCBhIGRtYS13aW5kb3cKIAkJICogcHJvcGVydHksIE9SIGZpbmQgYSBwYXJlbnQgd2l0aCBhIHRhYmxlIGFscmVhZHkgYWxsb2NhdGVkLgogCQkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy94aWNzLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMveGljcy5jCmluZGV4IGVjOGZlMjIuLmQ2OTAxMzMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy94aWNzLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3hpY3MuYwpAQCAtODk3LDcgKzg5Nyw3IEBACiAJCWludCBzdGF0dXM7CiAJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQkJLyogV2UgY2FudCBzZXQgYWZmaW5pdHkgb24gSVNBIGludGVycnVwdHMgKi8KKwkJLyogV2UgY2FuJ3Qgc2V0IGFmZmluaXR5IG9uIElTQSBpbnRlcnJ1cHRzICovCiAJCWlmICh2aXJxIDwgTlVNX0lTQV9JTlRFUlJVUFRTKQogCQkJY29udGludWU7CiAJCWlmIChpcnFfbWFwW3ZpcnFdLmhvc3QgIT0geGljc19ob3N0KQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFtLmMgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYwppbmRleCAyNzQwMmM3ZC4uMTYzNmRkOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFtLmMKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFtLmMKQEAgLTk1LDcgKzk1LDcgQEAKIAogCUJVR19PTighYmFuayk7CiAKLQlkZXZfZXJyKCZkZXZpY2UtPmRldiwgIkNvcnJlY3RhYmxlIG1lbW9yeSBlcnJvciBvY2N1cmVkXG4iKTsKKwlkZXZfZXJyKCZkZXZpY2UtPmRldiwgIkNvcnJlY3RhYmxlIG1lbW9yeSBlcnJvciBvY2N1cnJlZFxuIik7CiAJYmFuay0+ZWNjX2NvdW50ZXIrKzsKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tLmggYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tLmgKaW5kZXggMjNhOTVmOC4uYTBlMmU2YiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbS5oCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW0uaApAQCAtMjAsNyArMjAsNyBAQAogICogc3RydWN0IGJjb21fYmQgLSBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIGdlbmVyaWMgQmVzdENvbW0gYnVmZmVyIGRlc2NyaXB0b3IKICAqIEBzdGF0dXM6IFRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGlzIGJ1ZmZlci4gRXhhY3QgbWVhbmluZyBkZXBlbmRzIG9uIHRoZQogICogICAgICAgICAgdGFzayB0eXBlCi0gKiBAZGF0YTogQW4gYXJyYXkgb2YgdTMyIGV4dHJhIGRhdGEuICBTaXplIG9mIGFycmF5IGlzIHRhc2sgZGVwZW5kYW50LgorICogQGRhdGE6IEFuIGFycmF5IG9mIHUzMiBleHRyYSBkYXRhLiAgU2l6ZSBvZiBhcnJheSBpcyB0YXNrIGRlcGVuZGVudC4KICAqCiAgKiBOb3RlOiBEb24ndCBkZXJlZmVyZW5jZSBhIGJjb21fYmQgcG9pbnRlciBhcyBhbiBhcnJheS4gIFRoZSBzaXplIG9mIHRoZQogICogICAgICAgYmNvbV9iZCBpcyB2YXJpYWJsZS4gIFVzZSBiY29tX2dldF9iZCgpIGluc3RlYWQuCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tX3ByaXYuaCBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oCmluZGV4IGViMGQxYzguLjNiNTJmM2YgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oCkBAIC05Nyw3ICs5Nyw3IEBACiAJdTgJcmVzZXJ2ZWRbOF07CiB9OwogCi0vKiBEZXNjcmlwdG9ycyBzdHVjdHVyZSAmIGNvICovCisvKiBEZXNjcmlwdG9ycyBzdHJ1Y3R1cmUgJiBjbyAqLwogI2RlZmluZSBCQ09NX0RFU0NfTk9QCQkweDAwMDAwMWY4CiAjZGVmaW5lIEJDT01fTENEX01BU0sJCTB4ODAwMDAwMDAKICNkZWZpbmUgQkNPTV9EUkRfRVhURU5ERUQJMHg0MDAwMDAwMApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG0xLmMgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbTEuYwppbmRleCA4YjVhYmEyLi5lMGJjOTQ0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbTEuYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbTEuYwpAQCAtMjIzLDcgKzIyMyw3IEBACiAKIAkvKiBTZXQgU0RNQSBCdXMgUmVxdWVzdCBwcmlvcml0eSA1LgogCSAqIE9uIDg2MFQsIHRoaXMgYWxzbyBlbmFibGVzIEZFQyBwcmlvcml0eSA2LiAgSSBhbSBub3Qgc3VyZQotCSAqIHRoaXMgaXMgd2hhdCB3ZSByZWFseSB3YW50IGZvciBzb21lIGFwcGxpY2F0aW9ucywgYnV0IHRoZQorCSAqIHRoaXMgaXMgd2hhdCB3ZSByZWFsbHkgd2FudCBmb3Igc29tZSBhcHBsaWNhdGlvbnMsIGJ1dCB0aGUKIAkgKiBtYW51YWwgcmVjb21tZW5kcyBpdC4KIAkgKiBCaXQgMjUsIEZBTSBjYW4gYWxzbyBiZSBzZXQgdG8gdXNlIEZFQyBhZ2dyZXNzaXZlIG1vZGUgKDg2MFQpLgogCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9pbmRpcmVjdF9wY2kuYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvaW5kaXJlY3RfcGNpLmMKaW5kZXggN2VkODA5Ni4uODJmZGFkOCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9pbmRpcmVjdF9wY2kuYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2luZGlyZWN0X3BjaS5jCkBAIC0xMTcsNyArMTE3LDcgQEAKIAkJb3V0X2xlMzIoaG9zZS0+Y2ZnX2FkZHIsICgweDgwMDAwMDAwIHwgKGJ1c19ubyA8PCAxNikgfAogCQkJIChkZXZmbiA8PCA4KSB8IHJlZyB8IGNmZ190eXBlKSk7CiAKLQkvKiBzdXJwcmVzcyBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUyAqLworCS8qIHN1cHByZXNzIHNldHRpbmcgb2YgUENJX1BSSU1BUllfQlVTICovCiAJaWYgKGhvc2UtPmluZGlyZWN0X3R5cGUgJiBQUENfSU5ESVJFQ1RfVFlQRV9TVVJQUkVTU19QUklNQVJZX0JVUykKIAkJaWYgKChvZmZzZXQgPT0gUENJX1BSSU1BUllfQlVTKSAmJgogCQkJKGJ1cy0+bnVtYmVyID09IGhvc2UtPmZpcnN0X2J1c25vKSkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvcHBjNHh4X3BjaS5oIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9wcGM0eHhfcGNpLmgKaW5kZXggNTZkOWU1ZC4uYzM5YTEzNCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9wcGM0eHhfcGNpLmgKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9wcGM0eHhfcGNpLmgKQEAgLTMyNCw3ICszMjQsNyBAQAogI2RlZmluZSBQRVNEUjBfNDYwRVhfSUhTMgkJMHgwMzZECiAKIC8qCi0gKiA0NjBTWCBhZGR0aW9uYWwgRENScworICogNDYwU1ggYWRkaXRpb25hbCBEQ1JzCiAgKi8KICNkZWZpbmUgUEVTRFJuXzQ2MFNYX1JDRUkJCTB4MDIKIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2F0b21pYy5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2F0b21pYy5oCmluZGV4IDVjNWJhMTAuLmQ5ZGIxMzggMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hdG9taWMuaAorKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXRvbWljLmgKQEAgLTksNyArOSw3IEBACiAgKgogICogQXRvbWljIG9wZXJhdGlvbnMgdGhhdCBDIGNhbid0IGd1YXJhbnRlZSB1cy4KICAqIFVzZWZ1bCBmb3IgcmVzb3VyY2UgY291bnRpbmcgZXRjLgotICogczM5MCB1c2VzICdDb21wYXJlIEFuZCBTd2FwJyBmb3IgYXRvbWljaXR5IGluIFNNUCBlbnZpcm9tZW50LgorICogczM5MCB1c2VzICdDb21wYXJlIEFuZCBTd2FwJyBmb3IgYXRvbWljaXR5IGluIFNNUCBlbnZpcm9ubWVudC4KICAqCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2Npby5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2Npby5oCmluZGV4IGUzNDM0N2QuLmZjNTBhMzM0IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vY2lvLmgKKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2Npby5oCkBAIC0xODMsNyArMTgzLDcgQEAKICAqIFRoZSBpcmIgdGhhdCBpcyBoYW5kZWQgdG8gdGhlIGRldmljZSBkcml2ZXIgd2hlbiBhbiBpbnRlcnJ1cHQgb2NjdXJzLiBGb3IKICAqIHNvbGljaXRlZCBpbnRlcnJ1cHRzLCB0aGUgY29tbW9uIEkvTyBsYXllciBhbHJlYWR5IHBlcmZvcm1zIGNoZWNrcyB3aGV0aGVyCiAgKiBhIGZpZWxkIGlzIHZhbGlkOyBhIGZpZWxkIG5vdCBiZWluZyB2YWxpZCBpcyBhbHdheXMgcGFzc2VkIGFzICUwLgotICogSWYgYSB1bml0IGNoZWNrIG9jY3VyZWQsIEBlY3cgbWF5IGNvbnRhaW4gc2Vuc2UgZGF0YTsgdGhpcyBpcyByZXRyaWV2ZWQKKyAqIElmIGEgdW5pdCBjaGVjayBvY2N1cnJlZCwgQGVjdyBtYXkgY29udGFpbiBzZW5zZSBkYXRhOyB0aGlzIGlzIHJldHJpZXZlZAogICogYnkgdGhlIGNvbW1vbiBJL08gbGF5ZXIgaXRzZWxmIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IGNvbmN1cnJlbnQKICAqIHNlbnNlIChzbyB0aGF0IHRoZSBkZXZpY2UgZHJpdmVyIG5ldmVyIG5lZWRzIHRvIHBlcmZvcm0gYmFzaWMgc2VuZSBpdHNlbGYpLgogICogRm9yIHVuc29saWNpdGVkIGludGVycnVwdHMsIHRoZSBpcmIgaXMgcGFzc2VkIGFzLWlzIChleHBlY3QgZm9yIHNlbnNlIGRhdGEsCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL2hlYWQuUyBiL2FyY2gvczM5MC9rZXJuZWwvaGVhZC5TCmluZGV4IDcwNjEzOTguLmZiMzE3YmYgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvczM5MC9rZXJuZWwvaGVhZC5TCkBAIC00NjAsNyArNDYwLDcgQEAKICNpZm5kZWYgQ09ORklHX01BUkNIX0c1CiAJIyBjaGVjayBjYXBhYmlsaXRpZXMgYWdhaW5zdCBNQVJDSF97RzUsWjkwMCxaOTkwLFo5XzEwOSxaMTB9CiAJeGMJX19MQ19TVEZMX0ZBQ19MSVNUKDgpLF9fTENfU1RGTF9GQUNfTElTVAotCXN0ZmwJX19MQ19TVEZMX0ZBQ19MSVNUCSMgc3RvcmUgZmFjaWxpdHkgbGlzdAorCS5pbnNuCXMsMHhiMmIxMDAwMCxfX0xDX1NURkxfRkFDX0xJU1QJIyBzdG9yZSBmYWNpbGl0eSBsaXN0CiAJdG0JX19MQ19TVEZMX0ZBQ19MSVNULDB4MDEJIyBzdGZsZSBhdmFpbGFibGUgPwogCWp6CTBmCiAJbGEJJXIwLDAKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvcmVpcGw2NC5TIGIvYXJjaC9zMzkwL2tlcm5lbC9yZWlwbDY0LlMKaW5kZXggNWU3M2RlZS4uOWVhYmJjOSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC9yZWlwbDY0LlMKKysrIGIvYXJjaC9zMzkwL2tlcm5lbC9yZWlwbDY0LlMKQEAgLTc4LDcgKzc4LDcgQEAKICAqIGluIHRoZSBFU0EgcHN3LgogICogQml0IDMxIG9mIHRoZSBhZGRyZXNzZXMgaGFzIHRvIGJlIDAgZm9yIHRoZQogICogMzFiaXQgbHBzd2UgaW5zdHJ1Y3Rpb24gYSBmYWN0IHRoZXkgYXBwZWFyIHRvIGhhdmUKLSAqIG9tbWl0ZWQgZnJvbSB0aGUgcG9wLgorICogb21pdHRlZCBmcm9tIHRoZSBwb3AuCiAgKi8KIC5MbmV3cHN3OgkucXVhZAkweDAwMDAwMDAwODAwMDAwMDAKIAkJLnF1YWQJLkxwZzEKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvczM5MC9rZXJuZWwvc2V0dXAuYwppbmRleCBlZDE4M2MyLi5mNTQzNGQxIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3NldHVwLmMKKysrIGIvYXJjaC9zMzkwL2tlcm5lbC9zZXR1cC5jCkBAIC03MDgsNyArNzA4LDcgQEAKIAkgKiBhbmQgMVVMTDw8MCBhcyBiaXQgNjMuIEJpdHMgMC0zMSBjb250YWluIHRoZSBzYW1lIGluZm9ybWF0aW9uCiAJICogYXMgc3RvcmVkIGJ5IHN0ZmwsIGJpdHMgMzIteHh4IGNvbnRhaW4gYWRkaXRpb25hbCBmYWNpbGl0aWVzLgogCSAqIEhvdyBtYW55IGZhY2lsaXR5IHdvcmRzIGFyZSBzdG9yZWQgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mCi0JICogZG91Ymxld29yZHMgcGFzc2VkIHRvIHRoZSBpbnN0cnVjdGlvbi4gVGhlIGFkZGl0aW9uYWwgZmFjaWxpdGVzCisJICogZG91Ymxld29yZHMgcGFzc2VkIHRvIHRoZSBpbnN0cnVjdGlvbi4gVGhlIGFkZGl0aW9uYWwgZmFjaWxpdGllcwogCSAqIGFyZToKIAkgKiAgIEJpdCA0MjogZGVjaW1hbCBmbG9hdGluZyBwb2ludCBmYWNpbGl0eSBpcyBpbnN0YWxsZWQKIAkgKiAgIEJpdCA0NDogcGVyZm9ybSBmbG9hdGluZyBwb2ludCBvcGVyYXRpb24gZmFjaWxpdHkgaXMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3N3aXRjaF9jcHUuUyBiL2FyY2gvczM5MC9rZXJuZWwvc3dpdGNoX2NwdS5TCmluZGV4IDQ2OWYxMWIuLjIwNTMwZGQgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rZXJuZWwvc3dpdGNoX2NwdS5TCisrKyBiL2FyY2gvczM5MC9rZXJuZWwvc3dpdGNoX2NwdS5TCkBAIC00Niw3ICs0Niw5IEBACiAJbHRyCSVyNCwlcjQJCQkvKiBOZXcgc3RhY2sgPyAqLwogCWp6CTFmCiAJbHIJJXIxNSwlcjQKLTE6CWJhc3IJJXIxNCwlcjIKKzE6CWxyCSVyMTQsJXIyCQkvKiByMTQ6IEZ1bmN0aW9uIHRvIGNhbGwgKi8KKwlscgklcjIsJXIzCQkJLyogcjIgOiBQYXJhbWV0ZXIgZm9yIGZ1bmN0aW9uKi8KKwliYXNyCSVyMTQsJXIxNAkJLyogQ2FsbCBmdW5jdGlvbiAqLwogCiAuZ3BycmVnc19hZGRyOgogCS5sb25nCS5ncHJyZWdzCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3N3aXRjaF9jcHU2NC5TIGIvYXJjaC9zMzkwL2tlcm5lbC9zd2l0Y2hfY3B1NjQuUwppbmRleCBkOTRhYWNjLi41YmUzZjQzIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3N3aXRjaF9jcHU2NC5TCisrKyBiL2FyY2gvczM5MC9rZXJuZWwvc3dpdGNoX2NwdTY0LlMKQEAgLTQyLDcgKzQyLDkgQEAKIAlsdGdyCSVyNCwlcjQJCQkvKiBOZXcgc3RhY2sgPyAqLwogCWp6CTFmCiAJbGdyCSVyMTUsJXI0Ci0xOgliYXNyCSVyMTQsJXIyCisxOglsZ3IJJXIxNCwlcjIJCS8qIHIxNDogRnVuY3Rpb24gdG8gY2FsbCAqLworCWxncgklcjIsJXIzCQkJLyogcjIgOiBQYXJhbWV0ZXIgZm9yIGZ1bmN0aW9uKi8KKwliYXNyCSVyMTQsJXIxNAkJLyogQ2FsbCBmdW5jdGlvbiAqLwogCiAJLnNlY3Rpb24gLmRhdGEsImF3IixAcHJvZ2JpdHMKIC5ncHJyZWdzOgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC90aW1lLmMgYi9hcmNoL3MzOTAva2VybmVsL3RpbWUuYwppbmRleCA5ZTdiMDM5Li44N2JlNjU1IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3RpbWUuYworKysgYi9hcmNoL3MzOTAva2VybmVsL3RpbWUuYwpAQCAtNzI0LDcgKzcyNCw3IEBACiB9CiAKIC8qCi0gKiBTeW5jIHRoZSBUT0QgY2xvY2sgdXNpbmcgdGhlIHBvcnQgcmVmZXJlZCB0byBieSBhaWJwLiBUaGlzIHBvcnQKKyAqIFN5bmMgdGhlIFRPRCBjbG9jayB1c2luZyB0aGUgcG9ydCByZWZlcnJlZCB0byBieSBhaWJwLiBUaGlzIHBvcnQKICAqIGhhcyB0byBiZSBlbmFibGVkIGFuZCB0aGUgb3RoZXIgcG9ydCBoYXMgdG8gYmUgZGlzYWJsZWQuIFRoZQogICogbGFzdCBlYWNyIHVwZGF0ZSBoYXMgdG8gYmUgbW9yZSB0aGFuIDEuNiBzZWNvbmRzIGluIHRoZSBwYXN0LgogICovCkBAIC0xMDEyLDcgKzEwMTIsNyBAQAogCQllYWNyID0gZXRyX2hhbmRsZV91cGRhdGUoJmFpYiwgZWFjcik7CiAKIAkvKgotCSAqIFNlbGVjdCBwb3J0cyB0byBlbmFibGUuIFRoZSBwcmVmZXJlZCBzeW5jaHJvbml6YXRpb24gbW9kZSBpcyBQUFMuCisJICogU2VsZWN0IHBvcnRzIHRvIGVuYWJsZS4gVGhlIHByZWZlcnJlZCBzeW5jaHJvbml6YXRpb24gbW9kZSBpcyBQUFMuCiAJICogSWYgYSBwb3J0IGNhbiBiZSBlbmFibGVkIGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdGhpbmdzOgogCSAqIDEpIFRoZSBwb3J0IG5lZWRzIHRvIGJlIG9ubGluZSBhbmQgdXB0b2RhdGUuIEEgcG9ydCBpcyBub3QKIAkgKiAgICBkaXNhYmxlZCBqdXN0IGJlY2F1c2UgaXQgaXMgbm90IHVwdG9kYXRlLCBidXQgaXQgaXMgb25seQpAQCAtMTA5MSw3ICsxMDkxLDcgQEAKIAkvKgogCSAqIFVwZGF0ZSBlYWNyIGFuZCB0cnkgdG8gc3luY2hyb25pemUgdGhlIGNsb2NrLiBJZiB0aGUgdXBkYXRlCiAJICogb2YgZWFjciBjYXVzZWQgYSBzdGVwcGluZyBwb3J0IHN3aXRjaCAob3IgaWYgd2UgaGF2ZSB0bwotCSAqIGFzc3VtZSB0aGF0IGEgc3RlcHBpbmcgcG9ydCBzd2l0Y2ggaGFzIG9jY3VyZWQpIG9yIHRoZQorCSAqIGFzc3VtZSB0aGF0IGEgc3RlcHBpbmcgcG9ydCBzd2l0Y2ggaGFzIG9jY3VycmVkKSBvciB0aGUKIAkgKiBjbG9jayBzeW5jaW5nIGZhaWxlZCwgcmVzZXQgdGhlIHN5bmMgY2hlY2sgY29udHJvbCBiaXQKIAkgKiBhbmQgc2V0IHVwIGEgdGltZXIgdG8gdHJ5IGFnYWluIGFmdGVyIDAuNSBzZWNvbmRzCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3Z0aW1lLmMgYi9hcmNoL3MzOTAva2VybmVsL3Z0aW1lLmMKaW5kZXggMWNjZGY0ZC4uNWU4ZWFkNCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC92dGltZS5jCisrKyBiL2FyY2gvczM5MC9rZXJuZWwvdnRpbWUuYwpAQCAtNDQsNyArNDQsNyBAQAogCV9fdTY0IHRpbWVyOwogCiAJYXNtIHZvbGF0aWxlICgiICBTVFBUICUwXG4iICAvKiBTdG9yZSBjdXJyZW50IGNwdSB0aW1lciB2YWx1ZSAqLwotCQkgICAgICAiICBTUFQgJTEiICAgICAvKiBTZXQgbmV3IHZhbHVlIGltbWVkaWF0bHkgYWZ0ZXJ3YXJkcyAqLworCQkgICAgICAiICBTUFQgJTEiICAgICAvKiBTZXQgbmV3IHZhbHVlIGltbWVkaWF0ZWx5IGFmdGVyd2FyZHMgKi8KIAkJICAgICAgOiAiPW0iICh0aW1lcikgOiAibSIgKGV4cGlyZXMpICk7CiAJUzM5MF9sb3djb3JlLnN5c3RlbV90aW1lciArPSBTMzkwX2xvd2NvcmUubGFzdF91cGRhdGVfdGltZXIgLSB0aW1lcjsKIAlTMzkwX2xvd2NvcmUubGFzdF91cGRhdGVfdGltZXIgPSBleHBpcmVzOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jIGIvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jCmluZGV4IGJhZGU1MzMuLjMwY2E4NWMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYworKysgYi9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMKQEAgLTcyMSw3ICs3MjEsNyBAQAogCiAJLyoKIAkgKiBndWVzdHMgY2FuIGFzayBmb3IgdXAgdG8gMjU1KzEgZG91YmxlIHdvcmRzLCB3ZSBuZWVkIGEgZnVsbCBwYWdlCi0JICogdG8gaG9sZCB0aGUgbWF4aW11bSBhbW91bnQgb2YgZmFjaWxpdGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgd2UKKwkgKiB0byBob2xkIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBmYWNpbGl0aWVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgd2UKIAkgKiBvbmx5IHNldCBmYWNpbGl0aWVzIHRoYXQgYXJlIGtub3duIHRvIHdvcmsgaW4gS1ZNLgogCSAqLwogCWZhY2lsaXRpZXMgPSAodW5zaWduZWQgbG9uZyBsb25nICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMfEdGUF9ETUEpOwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wcml2LmMgYi9hcmNoL3MzOTAva3ZtL3ByaXYuYwppbmRleCA5MTk0YTRiLi43M2M0N2JkIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL3ByaXYuYworKysgYi9hcmNoL3MzOTAva3ZtL3ByaXYuYwpAQCAtMzExLDcgKzMxMSw3IEBACiAKIAkvKgogCSAqIGEgbG90IG9mIEIyIGluc3RydWN0aW9ucyBhcmUgcHJpdmlsZWRnZWQuIFdlIGZpcnN0IGNoZWNrIGZvcgotCSAqIHRoZSBwcml2aWxlZGdlcyBvbmVzLCB0aGF0IHdlIGNhbiBoYW5kbGUgaW4gdGhlIGtlcm5lbC4gSWYgdGhlCisJICogdGhlIHByaXZpbGVnZWQgb25lcywgdGhhdCB3ZSBjYW4gaGFuZGxlIGluIHRoZSBrZXJuZWwuIElmIHRoZQogCSAqIGtlcm5lbCBjYW4gaGFuZGxlIHRoaXMgaW5zdHJ1Y3Rpb24sIHdlIGNoZWNrIGZvciB0aGUgcHJvYmxlbQogCSAqIHN0YXRlIGJpdCBhbmQgKGEpIGhhbmRsZSB0aGUgaW5zdHJ1Y3Rpb24gb3IgKGIpIHNlbmQgYSBjb2RlIDIKIAkgKiBwcm9ncmFtIGNoZWNrLgpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL21tL2ZhdWx0LmMgYi9hcmNoL3MzOTAvbW0vZmF1bHQuYwppbmRleCAyYzU3ODA2Li45MjE3ZTMzIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbW0vZmF1bHQuYworKysgYi9hcmNoL3MzOTAvbW0vZmF1bHQuYwpAQCAtMzkyLDcgKzM5Miw3IEBACiB7CiAJaW50IGZhdWx0OwogCi0JLyogUHJvdGVjdGlvbiBleGNlcHRpb24gaXMgc3VwcmVzc2luZywgZGVjcmVtZW50IHBzdyBhZGRyZXNzLiAqLworCS8qIFByb3RlY3Rpb24gZXhjZXB0aW9uIGlzIHN1cHByZXNzaW5nLCBkZWNyZW1lbnQgcHN3IGFkZHJlc3MuICovCiAJcmVncy0+cHN3LmFkZHIgLT0gKHBnbV9pbnRfY29kZSA+PiAxNik7CiAJLyoKIAkgKiBDaGVjayBmb3IgbG93LWFkZHJlc3MgcHJvdGVjdGlvbi4gIFRoaXMgbmVlZHMgdG8gYmUgdHJlYXRlZApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL29wcm9maWxlL2h3c2FtcGxlci5jIGIvYXJjaC9zMzkwL29wcm9maWxlL2h3c2FtcGxlci5jCmluZGV4IDNkNDhmNGQuLjQ5NTI4NzIgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9vcHJvZmlsZS9od3NhbXBsZXIuYworKysgYi9hcmNoL3MzOTAvb3Byb2ZpbGUvaHdzYW1wbGVyLmMKQEAgLTUxNywxMiArNTE3LDggQEAKIAogc3RhdGljIGludCBjaGVja19oYXJkd2FyZV9wcmVyZXF1aXNpdGVzKHZvaWQpCiB7Ci0JdW5zaWduZWQgbG9uZyBsb25nIGZhY2lsaXR5X2JpdHNbMl07Ci0KLQltZW1jcHkoZmFjaWxpdHlfYml0cywgUzM5MF9sb3djb3JlLnN0ZmxlX2ZhY19saXN0LCAzMik7Ci0JaWYgKCEoZmFjaWxpdHlfYml0c1sxXSAmICgxVUxMIDw8IDU5KSkpCisJaWYgKCF0ZXN0X2ZhY2lsaXR5KDY4KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCiAJcmV0dXJuIDA7CiB9CiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9zY29yZS9NYWtlZmlsZSBiL2FyY2gvc2NvcmUvTWFrZWZpbGUKaW5kZXggZDc3ZGM2My4uOTc0YWVmZSAxMDA2NDQKLS0tIGEvYXJjaC9zY29yZS9NYWtlZmlsZQorKysgYi9hcmNoL3Njb3JlL01ha2VmaWxlCkBAIC00MCw1ICs0MCw1IEBACiBkZWZpbmUgYXJjaGhlbHAKIAllY2hvICcgIHZtbGludXguYmluICAgICAgICAgIC0gUmF3IGJpbmFyeSBib290IGltYWdlJwogCWVjaG8KLQllY2hvICcgIFRoZXNlIHdpbGwgYmUgZGVmYXVsdCBhcyBhcHJvcHJpYXRlIGZvciBhIGNvbmZpZ3VyZWQgcGxhdGZvcm0uJworCWVjaG8gJyAgVGhlc2Ugd2lsbCBiZSBkZWZhdWx0IGFzIGFwcHJvcHJpYXRlIGZvciBhIGNvbmZpZ3VyZWQgcGxhdGZvcm0uJwogZW5kZWYKZGlmZiAtLWdpdCBhL2FyY2gvc2gvS2NvbmZpZyBiL2FyY2gvc2gvS2NvbmZpZwppbmRleCBiYzQzOWRlLi40Yjg5ZGEyIDEwMDY0NAotLS0gYS9hcmNoL3NoL0tjb25maWcKKysrIGIvYXJjaC9zaC9LY29uZmlnCkBAIC0yNCw2ICsyNCw3IEBACiAJc2VsZWN0IFJUQ19MSUIKIAlzZWxlY3QgR0VORVJJQ19BVE9NSUM2NAogCXNlbGVjdCBHRU5FUklDX0lSUV9TSE9XCisJc2VsZWN0IEFSQ0hfTk9fU1lTREVWX09QUwogCWhlbHAKIAkgIFRoZSBTdXBlckggaXMgYSBSSVNDIHByb2Nlc3NvciB0YXJnZXRlZCBmb3IgdXNlIGluIGVtYmVkZGVkIHN5c3RlbXMKIAkgIGFuZCBjb25zdW1lciBlbGVjdHJvbmljczsgaXQgd2FzIGFsc28gdXNlZCBpbiB0aGUgU2VnYSBEcmVhbWNhc3QKZGlmZiAtLWdpdCBhL2FyY2gvc2gvS2NvbmZpZy5kZWJ1ZyBiL2FyY2gvc2gvS2NvbmZpZy5kZWJ1ZwppbmRleCAxMmZlYzcyLi4xNTUzZDU2IDEwMDY0NAotLS0gYS9hcmNoL3NoL0tjb25maWcuZGVidWcKKysrIGIvYXJjaC9zaC9LY29uZmlnLmRlYnVnCkBAIC04Miw3ICs4Miw3IEBACiAJaGVscAogCSAgSWYgcnVubmluZyBpbiBwYWluZnVsbHkgc2xvdyBlbnZpcm9ubWVudHMsIHN1Y2ggYXMgYW4gUlRMCiAJICBzaW11bGF0aW9uIG9yIGZyb20gcmVtb3RlIG1lbW9yeSB2aWEgU0hkZWJ1Zywgd2hlcmUgdGhlIG1lbW9yeQotCSAgY2FuIGFscmVhZHkgYmUgZ2F1cmFudGVlZCB0byBiZXIgemVyb2VkIG9uIGJvb3QsIHNheSBZLgorCSAgY2FuIGFscmVhZHkgYmUgZ3VhcmFudGVlZCB0byBiZXIgemVyb2VkIG9uIGJvb3QsIHNheSBZLgogCiAJICBGb3IgYWxsIG90aGVyIGNhc2VzLCBzYXkgTi4gSWYgdGhpcyBvcHRpb24gc2VlbXMgcGVycGxleGluZywgb3IKIAkgIHlvdSBhcmVuJ3Qgc3VyZSwgc2F5IE4uCmRpZmYgLS1naXQgYS9hcmNoL3NoL2JvYXJkcy9ib2FyZC1zaDc3NTdsY3IuYyBiL2FyY2gvc2gvYm9hcmRzL2JvYXJkLXNoNzc1N2xjci5jCmluZGV4IGE5ZTMzNTYuLmZhMmEyMDggMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9hcmRzL2JvYXJkLXNoNzc1N2xjci5jCisrKyBiL2FyY2gvc2gvYm9hcmRzL2JvYXJkLXNoNzc1N2xjci5jCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8bGludXgvaW8uaD4KICNpbmNsdWRlIDxsaW51eC9tbWMvaG9zdC5oPgogI2luY2x1ZGUgPGxpbnV4L21tYy9zaF9tbWNpZi5oPgotI2luY2x1ZGUgPGxpbnV4L21mZC9zaF9tb2JpbGVfc2RoaS5oPgorI2luY2x1ZGUgPGxpbnV4L21tYy9zaF9tb2JpbGVfc2RoaS5oPgogI2luY2x1ZGUgPGNwdS9zaDc3NTcuaD4KICNpbmNsdWRlIDxhc20vc2hfZXRoLmg+CiAjaW5jbHVkZSA8YXNtL2hlYXJ0YmVhdC5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9ib2FyZHMvbWFjaC1hcDMyNXJ4YS9zZXR1cC5jIGIvYXJjaC9zaC9ib2FyZHMvbWFjaC1hcDMyNXJ4YS9zZXR1cC5jCmluZGV4IDYzNmQ4MzEuLjYxOGJkNTYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9hcmRzL21hY2gtYXAzMjVyeGEvc2V0dXAuYworKysgYi9hcmNoL3NoL2JvYXJkcy9tYWNoLWFwMzI1cnhhL3NldHVwLmMKQEAgLTE1NiwyNCArMTU2LDM0IEBACiAjZGVmaW5lIFBPUlRfRFJWQ1JBCTB4QTQwNTAxOEEKICNkZWZpbmUgUE9SVF9EUlZDUkIJMHhBNDA1MDE4QwogCitzdGF0aWMgaW50IGFwMzIwX3d2Z2Ffc2V0X2JyaWdodG5lc3Modm9pZCAqYm9hcmRfZGF0YSwgaW50IGJyaWdodG5lc3MpCit7CisJaWYgKGJyaWdodG5lc3MpIHsKKwkJZ3Bpb19zZXRfdmFsdWUoR1BJT19QVFMzLCAwKTsKKwkJX19yYXdfd3JpdGV3KDB4MTAwLCBGUEdBX0JLTFJFRyk7CisJfSBlbHNlIHsKKwkJX19yYXdfd3JpdGV3KDAsIEZQR0FfQktMUkVHKTsKKwkJZ3Bpb19zZXRfdmFsdWUoR1BJT19QVFMzLCAxKTsKKwl9CisJCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXAzMjBfd3ZnYV9nZXRfYnJpZ2h0bmVzcyh2b2lkICpib2FyZF9kYXRhKQoreworCXJldHVybiBncGlvX2dldF92YWx1ZShHUElPX1BUUzMpOworfQorCiBzdGF0aWMgdm9pZCBhcDMyMF93dmdhX3Bvd2VyX29uKHZvaWQgKmJvYXJkX2RhdGEsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogewogCW1zbGVlcCgxMDApOwogCiAJLyogQVNEIEFQLTMyMC8zMjUgTENEIE9OICovCiAJX19yYXdfd3JpdGV3KEZQR0FfTENEUkVHX1ZBTCwgRlBHQV9MQ0RSRUcpOwotCi0JLyogYmFja2xpZ2h0ICovCi0JZ3Bpb19zZXRfdmFsdWUoR1BJT19QVFMzLCAwKTsKLQlfX3Jhd193cml0ZXcoMHgxMDAsIEZQR0FfQktMUkVHKTsKIH0KIAogc3RhdGljIHZvaWQgYXAzMjBfd3ZnYV9wb3dlcl9vZmYodm9pZCAqYm9hcmRfZGF0YSkKIHsKLQkvKiBiYWNrbGlnaHQgKi8KLQlfX3Jhd193cml0ZXcoMCwgRlBHQV9CS0xSRUcpOwotCWdwaW9fc2V0X3ZhbHVlKEdQSU9fUFRTMywgMSk7Ci0KIAkvKiBBU0QgQVAtMzIwLzMyNSBMQ0QgT0ZGICovCiAJX19yYXdfd3JpdGV3KDAsIEZQR0FfTENEUkVHKTsKIH0KQEAgLTIwOSw2ICsyMTksMTIgQEAKIAkJLmJvYXJkX2NmZyA9IHsKIAkJCS5kaXNwbGF5X29uID0gYXAzMjBfd3ZnYV9wb3dlcl9vbiwKIAkJCS5kaXNwbGF5X29mZiA9IGFwMzIwX3d2Z2FfcG93ZXJfb2ZmLAorCQkJLnNldF9icmlnaHRuZXNzID0gYXAzMjBfd3ZnYV9zZXRfYnJpZ2h0bmVzcywKKwkJCS5nZXRfYnJpZ2h0bmVzcyA9IGFwMzIwX3d2Z2FfZ2V0X2JyaWdodG5lc3MsCisJCX0sCisJCS5ibF9pbmZvID0geworCQkJLm5hbWUgPSAic2hfbW9iaWxlX2xjZGNfYmwiLAorCQkJLm1heF9icmlnaHRuZXNzID0gMSwKIAkJfSwKIAl9CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9ib2FyZHMvbWFjaC1kcmVhbWNhc3QvaXJxLmMgYi9hcmNoL3NoL2JvYXJkcy9tYWNoLWRyZWFtY2FzdC9pcnEuYwppbmRleCA3OGNmMmFiLi5mNjNkMzIzIDEwMDY0NAotLS0gYS9hcmNoL3NoL2JvYXJkcy9tYWNoLWRyZWFtY2FzdC9pcnEuYworKysgYi9hcmNoL3NoL2JvYXJkcy9tYWNoLWRyZWFtY2FzdC9pcnEuYwpAQCAtNTEsNyArNTEsNyBAQAogICovCiAjZGVmaW5lIExFVkVMKGV2ZW50KSAoKChldmVudCkgLSBIV19FVkVOVF9JUlFfQkFTRSkgLyAzMikKIAotLyogUmV0dXJuIHRoZSBoYXJkd2FyZSBldmVudCdzIGJpdCBwb3NpdG9uIHdpdGhpbiB0aGUgRU1SL0VTUiAqLworLyogUmV0dXJuIHRoZSBoYXJkd2FyZSBldmVudCdzIGJpdCBwb3NpdGlvbiB3aXRoaW4gdGhlIEVNUi9FU1IgKi8KICNkZWZpbmUgRVZFTlRfQklUKGV2ZW50KSAoKChldmVudCkgLSBIV19FVkVOVF9JUlFfQkFTRSkgJiAzMSkKIAogLyoKZGlmZiAtLWdpdCBhL2FyY2gvc2gvYm9hcmRzL21hY2gtZWNvdmVjMjQvc2V0dXAuYyBiL2FyY2gvc2gvYm9hcmRzL21hY2gtZWNvdmVjMjQvc2V0dXAuYwppbmRleCBmZDRmZjI1Li44NmEwZDU2IDEwMDY0NAotLS0gYS9hcmNoL3NoL2JvYXJkcy9tYWNoLWVjb3ZlYzI0L3NldHVwLmMKKysrIGIvYXJjaC9zaC9ib2FyZHMvbWFjaC1lY292ZWMyNC9zZXR1cC5jCkBAIC0yNjMsNiArMjYzLDE4IEBACiAJfSwKIH07CiAKK3N0YXRpYyBpbnQgZWNvdmVjMjRfc2V0X2JyaWdodG5lc3Modm9pZCAqYm9hcmRfZGF0YSwgaW50IGJyaWdodG5lc3MpCit7CisJZ3Bpb19zZXRfdmFsdWUoR1BJT19QVFIxLCBicmlnaHRuZXNzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGVjb3ZlYzI0X2dldF9icmlnaHRuZXNzKHZvaWQgKmJvYXJkX2RhdGEpCit7CisJcmV0dXJuIGdwaW9fZ2V0X3ZhbHVlKEdQSU9fUFRSMSk7Cit9CisKIHN0YXRpYyBzdHJ1Y3Qgc2hfbW9iaWxlX2xjZGNfaW5mbyBsY2RjX2luZm8gPSB7CiAJLmNoWzBdID0gewogCQkuaW50ZXJmYWNlX3R5cGUgPSBSR0IxOCwKQEAgLTI3Myw2ICsyODUsMTIgQEAKIAkJCS5oZWlnaHQgPSA5MSwKIAkJfSwKIAkJLmJvYXJkX2NmZyA9IHsKKwkJCS5zZXRfYnJpZ2h0bmVzcyA9IGVjb3ZlYzI0X3NldF9icmlnaHRuZXNzLAorCQkJLmdldF9icmlnaHRuZXNzID0gZWNvdmVjMjRfZ2V0X2JyaWdodG5lc3MsCisJCX0sCisJCS5ibF9pbmZvID0geworCQkJLm5hbWUgPSAic2hfbW9iaWxlX2xjZGNfYmwiLAorCQkJLm1heF9icmlnaHRuZXNzID0gMSwKIAkJfSwKIAl9CiB9OwpAQCAtOTM2LDcgKzk1NCw3IEBACiAJCXJldHVybjsKIAl9CiAKLQkvKiByZWFkIE1BQyBhZGRyZXNzIGZyb21lIEVFUFJPTSAqLworCS8qIHJlYWQgTUFDIGFkZHJlc3MgZnJvbSBFRVBST00gKi8KIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHBkLT5tYWNfYWRkcik7IGkrKykgewogCQlwZC0+bWFjX2FkZHJbaV0gPSBtYWNfcmVhZChhLCAweDEwICsgaSk7CiAJCW1zbGVlcCgxMCk7CmRpZmYgLS1naXQgYS9hcmNoL3NoL2JvYXJkcy9tYWNoLWxhbmRpc2svc2V0dXAuYyBiL2FyY2gvc2gvYm9hcmRzL21hY2gtbGFuZGlzay9zZXR1cC5jCmluZGV4IDk0MTg2Y2YuLmYxMTQ3Y2EgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9hcmRzL21hY2gtbGFuZGlzay9zZXR1cC5jCisrKyBiL2FyY2gvc2gvYm9hcmRzL21hY2gtbGFuZGlzay9zZXR1cC5jCkBAIC0yMyw3ICsyMyw3IEBACiAKIHN0YXRpYyB2b2lkIGxhbmRpc2tfcG93ZXJfb2ZmKHZvaWQpCiB7Ci0gICAgICAgIF9fcmF3X3dyaXRlYigweDAxLCBQQV9TSFVURE9XTik7CisJX19yYXdfd3JpdGViKDB4MDEsIFBBX1NIVVRET1dOKTsKIH0KIAogc3RhdGljIHN0cnVjdCByZXNvdXJjZSBjZl9pZGVfcmVzb3VyY2VzWzNdOwpAQCAtODUsNyArODUsNyBAQAogCiBzdGF0aWMgdm9pZCBfX2luaXQgbGFuZGlza19zZXR1cChjaGFyICoqY21kbGluZV9wKQogewotICAgICAgICAvKiBMRUQgT04gKi8KKwkvKiBMRUQgT04gKi8KIAlfX3Jhd193cml0ZWIoX19yYXdfcmVhZGIoUEFfTEVEKSB8IDB4MDMsIFBBX0xFRCk7CiAKIAlwcmludGsoS0VSTl9JTkZPICJJLU8gREFUQSBERVZJQ0UsIElOQy4gXCJMQU5ESVNLIFNlcmllc1wiIHN1cHBvcnQuXG4iKTsKQEAgLTk3LDcgKzk3LDYgQEAKICAqLwogc3RhdGljIHN0cnVjdCBzaF9tYWNoaW5lX3ZlY3RvciBtdl9sYW5kaXNrIF9faW5pdG12ID0gewogCS5tdl9uYW1lID0gIkxBTkRJU0siLAotCS5tdl9ucl9pcnFzID0gNzIsCiAJLm12X3NldHVwID0gbGFuZGlza19zZXR1cCwKIAkubXZfaW5pdF9pcnEgPSBpbml0X2xhbmRpc2tfSVJRLAogfTsKZGlmZiAtLWdpdCBhL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLXNoNzc1MS5oIGIvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2ktc2g3NzUxLmgKaW5kZXggNDk4M2E0ZC4uNWVkZTM4YyAxMDA2NDQKLS0tIGEvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2ktc2g3NzUxLmgKKysrIGIvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2ktc2g3NzUxLmgKQEAgLTYxLDcgKzYxLDcgQEAKICAgI2RlZmluZSBTSDc3NTFfUENJQ09ORjNfQklTVDcgICAgICAweDgwMDAwMDAwICAvKiBCaXN0IFN1cHBvcnRlZCAqLwogICAjZGVmaW5lIFNINzc1MV9QQ0lDT05GM19CSVNUNiAgICAgIDB4NDAwMDAwMDAgIC8qIEJpc3QgRXhlY3V0aW5nICovCiAgICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0JJU1QzXzAgICAgMHgwRjAwMDAwMCAgLyogQmlzdCBQYXNzZWQgKi8KLSAgI2RlZmluZSBTSDc3NTFfUENJQ09ORjNfSEQ3ICAgICAgICAweDAwODAwMDAwICAvKiBTaW5nbGUgRnVudGlvbiBkZXZpY2UgKi8KKyAgI2RlZmluZSBTSDc3NTFfUENJQ09ORjNfSEQ3ICAgICAgICAweDAwODAwMDAwICAvKiBTaW5nbGUgRnVuY3Rpb24gZGV2aWNlICovCiAgICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0hENl8wICAgICAgMHgwMDdGMDAwMCAgLyogQ29uZmlndXJhdGlvbiBMYXlvdXQgKi8KICAgI2RlZmluZSBTSDc3NTFfUENJQ09ORjNfTEFUICAgICAgICAweDAwMDBGRjAwICAvKiBMYXRlbmN5IFRpbWVyICovCiAgICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0NMUyAgICAgICAgMHgwMDAwMDBGRiAgLyogQ2FjaGUgTGluZSBTaXplICovCmRpZmYgLS1naXQgYS9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaS5jIGIvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2kuYwppbmRleCBhMDljNzdkLi4xOTQyMzFjIDEwMDY0NAotLS0gYS9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaS5jCisrKyBiL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLmMKQEAgLTg0LDcgKzg0LDcgQEAKIAlob3NlX3RhaWwgPSAmaG9zZS0+bmV4dDsKIAogCS8qCi0JICogRG8gbm90IHBhbmljIGhlcmUgYnV0IGxhdGVyIC0gdGhpcyBtaWdodCBoYXBlbiBiZWZvcmUgY29uc29sZSBpbml0LgorCSAqIERvIG5vdCBwYW5pYyBoZXJlIGJ1dCBsYXRlciAtIHRoaXMgbWlnaHQgaGFwcGVuIGJlZm9yZSBjb25zb2xlIGluaXQuCiAJICovCiAJaWYgKCFob3NlLT5pb19tYXBfYmFzZSkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HCmRpZmYgLS1naXQgYS9hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaCBiL2FyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oCmluZGV4IGM0ZTBiM2QuLjgyMmQ2MDggMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oCisrKyBiL2FyY2gvc2gvaW5jbHVkZS9hc20vcGFnZS5oCkBAIC0xODYsNyArMTg2LDcgQEAKIC8qCiAgKiBXaGlsZSBCWVRFU19QRVJfV09SRCA9PSA0IG9uIHRoZSBjdXJyZW50IHNoNjQgQUJJLCBHQ0Mgd2lsbCBzdGlsbAogICogaGFwcGlseSBnZW5lcmF0ZSB7bGQvc3R9LnEgcGFpcnMsIHJlcXVpcmluZyB1cyB0byBoYXZlIDgtYnl0ZQotICogYWxpZ25tZW50IHRvIGF2b2lkIHRyYXBzLiBUaGUga21hbGxvYyBhbGlnbm1lbnQgaXMgZ2F1cmFudGVlZCBieQorICogYWxpZ25tZW50IHRvIGF2b2lkIHRyYXBzLiBUaGUga21hbGxvYyBhbGlnbm1lbnQgaXMgZ3VhcmFudGVlZCBieQogICogdmlydHVlIG9mIEwxX0NBQ0hFX0JZVEVTLCByZXF1aXJpbmcgdGhpcyB0byBvbmx5IGJlIHNwZWNpYWwgY2FzZWQKICAqIGZvciBzbGFiIGNhY2hlcy4KICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmggYi9hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaAppbmRleCBiNzk5ZmU3Li4wYmNlM2Q4IDEwMDY0NAotLS0gYS9hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL3BndGFibGVfMzIuaApAQCAtMTY3LDcgKzE2Nyw3IEBACiAjZW5kaWYKIAogLyoKLSAqIE1hc2sgb2YgYml0cyB0aGF0IGFyZSB0byBiZSBwcmVzZXJ2ZWQgYWNjcm9zcyBwZ3Byb3QgY2hhbmdlcy4KKyAqIE1hc2sgb2YgYml0cyB0aGF0IGFyZSB0byBiZSBwcmVzZXJ2ZWQgYWNyb3NzIHBncHJvdCBjaGFuZ2VzLgogICovCiAjZGVmaW5lIF9QQUdFX0NIR19NQVNLIFwKIAkoUFRFX01BU0sgfCBfUEFHRV9BQ0NFU1NFRCB8IF9QQUdFX0NBQ0hBQkxFIHwgXApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL2FzbS91bmFsaWduZWQtc2g0YS5oIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS91bmFsaWduZWQtc2g0YS5oCmluZGV4IGM0OGE5YzMuLjk1YWRjNTAgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvaW5jbHVkZS9hc20vdW5hbGlnbmVkLXNoNGEuaAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL3VuYWxpZ25lZC1zaDRhLmgKQEAgLTksNyArOSw3IEBACiAgKiBzdHJ1Y3QuCiAgKgogICogVGhlIHNhbWUgbm90ZSBhcyB3aXRoIHRoZSBtb3ZsaS5sL21vdmNvLmwgcGFpciBhcHBsaWVzIGhlcmUsIGFzIGxvbmcKLSAqIGFzIHRoZSBsb2FkIGlzIGdhdXJhbnRlZWQgdG8gYmUgaW5saW5lZCwgbm90aGluZyBlbHNlIHdpbGwgaG9vayBpbiB0bworICogYXMgdGhlIGxvYWQgaXMgZ3VhcmFudGVlZCB0byBiZSBpbmxpbmVkLCBub3RoaW5nIGVsc2Ugd2lsbCBob29rIGluIHRvCiAgKiByMCBhbmQgd2UgZ2V0IHRoZSByZXR1cm4gdmFsdWUgZm9yIGZyZWUuCiAgKgogICogTk9URTogRHVlIHRvIHRoZSBmYWN0IHdlIHJlcXVpcmUgcjAgZW5jb2RpbmcsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvCmRpZmYgLS1naXQgYS9hcmNoL3NoL2luY2x1ZGUvbWFjaC1jb21tb24vbWFjaC9oaWdobGFuZGVyLmggYi9hcmNoL3NoL2luY2x1ZGUvbWFjaC1jb21tb24vbWFjaC9oaWdobGFuZGVyLmgKaW5kZXggNWQ5ZDRkNS4uNmNlOTQ0ZSAxMDA2NDQKLS0tIGEvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvaGlnaGxhbmRlci5oCisrKyBiL2FyY2gvc2gvaW5jbHVkZS9tYWNoLWNvbW1vbi9tYWNoL2hpZ2hsYW5kZXIuaApAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBQQV9PQkxFRCAgICAgICAgKFBBX0JDUisweDAwMWMpIC8qIE9uIEJvYXJkIExFRCBjb250cm9sICovCiAjZGVmaW5lIFBBX09CU1cgICAgICAgICAoUEFfQkNSKzB4MDAxZSkgLyogT24gQm9hcmQgU3dpdGNoIGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfQVVESU9TRUwgICAgIChQQV9CQ1IrMHgwMDIwKSAvKiBTb3VuZCBJbnRlcmZhY2UgU2VsZWN0IGNvbnRyb2wgKi8KLSNkZWZpbmUgUEFfRVhUUExSICAgICAgIChQQV9CQ1IrMHgwMDFlKSAvKiBFeHRlbnRpb24gUGluIFBvbGFyaXR5IGNvbnRyb2wgKi8KKyNkZWZpbmUgUEFfRVhUUExSICAgICAgIChQQV9CQ1IrMHgwMDFlKSAvKiBFeHRlbnNpb24gUGluIFBvbGFyaXR5IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfVFBDVEwgICAgICAgIChQQV9CQ1IrMHgwMTAwKSAvKiBUb3VjaCBQYW5lbCBBY2Nlc3MgY29udHJvbCAqLwogI2RlZmluZSBQQV9UUERDS0NUTCAgICAgKFBBX0JDUisweDAxMDIpIC8qIFRvdWNoIFBhbmVsIEFjY2VzcyBkYXRhIGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfVFBDVExDTFIgICAgIChQQV9CQ1IrMHgwMTA0KSAvKiBUb3VjaCBQYW5lbCBBY2Nlc3MgY29udHJvbCAqLwpAQCAtODksNyArODksNyBAQAogI2RlZmluZSBQQV9PQkxFRAkoUEFfQkNSKzB4MDAxOCkJLyogT24gQm9hcmQgTEVEIGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfT0JTVwkJKFBBX0JDUisweDAwMWEpCS8qIE9uIEJvYXJkIFN3aXRjaCBjb250cm9sICovCiAjZGVmaW5lIFBBX0FVRElPU0VMCShQQV9CQ1IrMHgwMDFjKQkvKiBTb3VuZCBJbnRlcmZhY2UgU2VsZWN0IGNvbnRyb2wgKi8KLSNkZWZpbmUgUEFfRVhUUExSCShQQV9CQ1IrMHgwMDFlKQkvKiBFeHRlbnRpb24gUGluIFBvbGFyaXR5IGNvbnRyb2wgKi8KKyNkZWZpbmUgUEFfRVhUUExSCShQQV9CQ1IrMHgwMDFlKQkvKiBFeHRlbnNpb24gUGluIFBvbGFyaXR5IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfVFBDVEwJKFBBX0JDUisweDAxMDApCS8qIFRvdWNoIFBhbmVsIEFjY2VzcyBjb250cm9sICovCiAjZGVmaW5lIFBBX1RQRENLQ1RMCShQQV9CQ1IrMHgwMTAyKQkvKiBUb3VjaCBQYW5lbCBBY2Nlc3MgZGF0YSBjb250cm9sICovCiAjZGVmaW5lIFBBX1RQQ1RMQ0xSCShQQV9CQ1IrMHgwMTA0KQkvKiBUb3VjaCBQYW5lbCBBY2Nlc3MgY29udHJvbCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvcjJkLmggYi9hcmNoL3NoL2luY2x1ZGUvbWFjaC1jb21tb24vbWFjaC9yMmQuaAppbmRleCAwYTgwMDE1Li5lMDRmNzVlIDEwMDY0NAotLS0gYS9hcmNoL3NoL2luY2x1ZGUvbWFjaC1jb21tb24vbWFjaC9yMmQuaAorKysgYi9hcmNoL3NoL2luY2x1ZGUvbWFjaC1jb21tb24vbWFjaC9yMmQuaApAQCAtMTgsMTggKzE4LDE4IEBACiAjZGVmaW5lIFBBX0RJU1BDVEwJMHhhNDAwMDAwOAkvKiBEaXNwbGF5IFRpbWluZyBjb250cm9sICovCiAjZGVmaW5lIFBBX1NETVBPVwkweGE0MDAwMDBhCS8qIFNEIFBvd2VyIGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfUlRDQ0UJMHhhNDAwMDAwYwkvKiBSVEMoOTcwMSkgRW5hYmxlIGNvbnRyb2wgKi8KLSNkZWZpbmUgUEFfUENJQ0QJMHhhNDAwMDAwZQkvKiBQQ0kgRXh0ZW50aW9uIGRldGVjdCBjb250cm9sICovCisjZGVmaW5lIFBBX1BDSUNECTB4YTQwMDAwMGUJLyogUENJIEV4dGVuc2lvbiBkZXRlY3QgY29udHJvbCAqLwogI2RlZmluZSBQQV9WT1lBR0VSUlRTCTB4YTQwMDAwMjAJLyogVk9ZQUdFUiBSZXNldCBjb250cm9sICovCiAKICNkZWZpbmUgUEFfUjJEMV9BWFJTVAkJMHhhNDAwMDAyMgkvKiBBWF9MQU4gUmVzZXQgY29udHJvbCAqLwogI2RlZmluZSBQQV9SMkQxX0NGUlNUCQkweGE0MDAwMDI0CS8qIENGIFJlc2V0IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfUjJEMV9BRE1SVFMJCTB4YTQwMDAwMjYJLyogU0QgUmVzZXQgY29udHJvbCAqLwotI2RlZmluZSBQQV9SMkQxX0VYVFJTVAkJMHhhNDAwMDAyOAkvKiBFeHRlbnRpb24gUmVzZXQgY29udHJvbCAqLworI2RlZmluZSBQQV9SMkQxX0VYVFJTVAkJMHhhNDAwMDAyOAkvKiBFeHRlbnNpb24gUmVzZXQgY29udHJvbCAqLwogI2RlZmluZSBQQV9SMkQxX0NGQ0RJTlRDTFIJMHhhNDAwMDAyYQkvKiBDRiBJbnNlcnQgSW50ZXJydXB0IGNsZWFyICovCiAKICNkZWZpbmUgUEFfUjJEUExVU19DRlJTVAkweGE0MDAwMDIyCS8qIENGIFJlc2V0IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfUjJEUExVU19BRE1SVFMJMHhhNDAwMDAyNAkvKiBTRCBSZXNldCBjb250cm9sICovCi0jZGVmaW5lIFBBX1IyRFBMVVNfRVhUUlNUCTB4YTQwMDAwMjYJLyogRXh0ZW50aW9uIFJlc2V0IGNvbnRyb2wgKi8KKyNkZWZpbmUgUEFfUjJEUExVU19FWFRSU1QJMHhhNDAwMDAyNgkvKiBFeHRlbnNpb24gUmVzZXQgY29udHJvbCAqLwogI2RlZmluZSBQQV9SMkRQTFVTX0NGQ0RJTlRDTFIJMHhhNDAwMDAyOAkvKiBDRiBJbnNlcnQgSW50ZXJydXB0IGNsZWFyICovCiAjZGVmaW5lIFBBX1IyRFBMVVNfS0VZQ1RMQ0xSCTB4YTQwMDAwMmEJLyogS2V5IEludGVycnVwdCBjbGVhciAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9jcHUvY2xvY2stY3BnLmMgYi9hcmNoL3NoL2tlcm5lbC9jcHUvY2xvY2stY3BnLmMKaW5kZXggZGQwZTBmMi4uOGY2M2EyNiAxMDA2NDQKLS0tIGEvYXJjaC9zaC9rZXJuZWwvY3B1L2Nsb2NrLWNwZy5jCisrKyBiL2FyY2gvc2gva2VybmVsL2NwdS9jbG9jay1jcGcuYwpAQCAtNjcsNyArNjcsNyBAQAogfQogCiAvKgotICogUGxhY2Vob2xkZXIgZm9yIGNvbXBhdGFiaWxpdHksIHVudGlsIHRoZSBsYXp5IENQVXMgZG8gdGhpcworICogUGxhY2Vob2xkZXIgZm9yIGNvbXBhdGliaWxpdHksIHVudGlsIHRoZSBsYXp5IENQVXMgZG8gdGhpcwogICogb24gdGhlaXIgb3duLgogICovCiBpbnQgX19pbml0IF9fd2VhayBhcmNoX2Nsa19pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0YS9zZXR1cC1zaDc3ODYuYyBiL2FyY2gvc2gva2VybmVsL2NwdS9zaDRhL3NldHVwLXNoNzc4Ni5jCmluZGV4IDE2NTZiOGMuLmJlYmEzMmIgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL2NwdS9zaDRhL3NldHVwLXNoNzc4Ni5jCisrKyBiL2FyY2gvc2gva2VybmVsL2NwdS9zaDRhL3NldHVwLXNoNzc4Ni5jCkBAIC02NDgsNyArNjQ4LDcgQEAKIAkgKiBUaGUgZm9sbG93aW5nIHNldHRpbmdzIGFyZSBuZWNlc3NhcnkKIAkgKiBmb3IgdXNpbmcgdGhlIFVTQiBtb2R1bGVzLgogCSAqCi0JICogc2VlICJVU0IgSW5pdGFsIFNldHRpbmdzIiBmb3IgZGV0YWlsCisJICogc2VlICJVU0IgSW5pdGlhbCBTZXR0aW5ncyIgZm9yIGRldGFpbAogCSAqLwogCV9fcmF3X3dyaXRlbChVU0JJTklUVkFMMSwgVVNCSU5JVFJFRzEpOwogCV9fcmF3X3dyaXRlbChVU0JJTklUVkFMMiwgVVNCSU5JVFJFRzIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvaXJxLmMgYi9hcmNoL3NoL2tlcm5lbC9pcnEuYwppbmRleCA2NGVhMGIxLi45MTk3MTEwIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9pcnEuYworKysgYi9hcmNoL3NoL2tlcm5lbC9pcnEuYwpAQCAtMTgzLDcgKzE4Myw3IEBACiAJCSk7CiAKIAkJLyoKLQkJICogU2hvdWxkbnQgaGFwcGVuLCB3ZSByZXR1cm5lZCBhYm92ZSBpZiBpbl9pbnRlcnJ1cHQoKToKKwkJICogU2hvdWxkbid0IGhhcHBlbiwgd2UgcmV0dXJuZWQgYWJvdmUgaWYgaW5faW50ZXJydXB0KCk6CiAJCSAqLwogCQlXQVJOX09OX09OQ0Uoc29mdGlycV9jb3VudCgpKTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zZXR1cC5jIGIvYXJjaC9zaC9rZXJuZWwvc2V0dXAuYwppbmRleCA0ZjI2NzE2Li41OGJmZjQ1IDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9zZXR1cC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NldHVwLmMKQEAgLTE1MCw3ICsxNTAsNyBAQAogCX0KIAogCS8qCi0JICogSWYgd2UgZ290IHRoaXMgZmFyIGluc3BpdGUgb2YgdGhlIGJvb3QgbG9hZGVyJ3MgYmVzdCBlZmZvcnRzCisJICogSWYgd2UgZ290IHRoaXMgZmFyIGluIHNwaXRlIG9mIHRoZSBib290IGxvYWRlcidzIGJlc3QgZWZmb3J0cwogCSAqIHRvIHRoZSBjb250cmFyeSwgYXNzdW1lIHdlIGFjdHVhbGx5IGhhdmUgYSB2YWxpZCBpbml0cmQgYW5kCiAJICogZml4IHVwIHRoZSByb290IGRldi4KIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvc2gvbGliNjQvY29weV91c2VyX21lbWNweS5TIGIvYXJjaC9zaC9saWI2NC9jb3B5X3VzZXJfbWVtY3B5LlMKaW5kZXggMmE2MjgxNi4uNDlhZWFiZSAxMDA2NDQKLS0tIGEvYXJjaC9zaC9saWI2NC9jb3B5X3VzZXJfbWVtY3B5LlMKKysrIGIvYXJjaC9zaC9saWI2NC9jb3B5X3VzZXJfbWVtY3B5LlMKQEAgLTI3LDcgKzI3LDcgQEAKICEgMi46IFdoZW4gdGhlcmUgYXJlIHR3byBvciB0aHJlZSBieXRlcyBpbiB0aGUgbGFzdCB3b3JkIG9mIGFuIDExLW9yLW1vcmUKICEgICAgIGJ5dGVzIG1lbW9yeSBjaHVuayB0byBiIGNvcGllZCwgdGhlIHJlc3Qgb2YgdGhlIHdvcmQgY2FuIGJlIHJlYWQKICEgICAgIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgotISAgICAgVGhpcyBjb3VsZCBiZSBlYXNpbHkgY2hhbmdlZCBieSBpbmNyZWFzaW5nIHRoZSBtaW51bXVtIHNpemUgb2YKKyEgICAgIFRoaXMgY291bGQgYmUgZWFzaWx5IGNoYW5nZWQgYnkgaW5jcmVhc2luZyB0aGUgbWluaW11bSBzaXplIG9mCiAhICAgICBhIGZhc3QgbWVtY3B5IGFuZCB0aGUgYW1vdW50IHN1YnRyYWN0ZWQgZnJvbSByNyBiZWZvcmUgTF8ybF9sb29wIGJlIDIsCiAhICAgICBob3dldmVyLCB0aGlzIHdvdWxkIGNvc3QgYSBmZXcgZXh0cmEgY3lsZXMgb24gYXZlcmFnZS4KICEgICAgIEZvciBTSG1lZGlhLCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGFueSBxdWFkd29yZCBjYW4gYmUgcmVhZCBpbiBpdHMKZGlmZiAtLWdpdCBhL2FyY2gvc2gvbGliNjQvbWVtY3B5LlMgYi9hcmNoL3NoL2xpYjY0L21lbWNweS5TCmluZGV4IGRkMzAwYzMuLjVkNjgyZTAgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvbGliNjQvbWVtY3B5LlMKKysrIGIvYXJjaC9zaC9saWI2NC9tZW1jcHkuUwpAQCAtMjksNyArMjksNyBAQAogISAyLjogV2hlbiB0aGVyZSBhcmUgdHdvIG9yIHRocmVlIGJ5dGVzIGluIHRoZSBsYXN0IHdvcmQgb2YgYW4gMTEtb3ItbW9yZQogISAgICAgYnl0ZXMgbWVtb3J5IGNodW5rIHRvIGIgY29waWVkLCB0aGUgcmVzdCBvZiB0aGUgd29yZCBjYW4gYmUgcmVhZAogISAgICAgd2l0aG91dCBzaWRlIGVmZmVjdHMuCi0hICAgICBUaGlzIGNvdWxkIGJlIGVhc2lseSBjaGFuZ2VkIGJ5IGluY3JlYXNpbmcgdGhlIG1pbnVtdW0gc2l6ZSBvZgorISAgICAgVGhpcyBjb3VsZCBiZSBlYXNpbHkgY2hhbmdlZCBieSBpbmNyZWFzaW5nIHRoZSBtaW5pbXVtIHNpemUgb2YKICEgICAgIGEgZmFzdCBtZW1jcHkgYW5kIHRoZSBhbW91bnQgc3VidHJhY3RlZCBmcm9tIHI3IGJlZm9yZSBMXzJsX2xvb3AgYmUgMiwKICEgICAgIGhvd2V2ZXIsIHRoaXMgd291bGQgY29zdCBhIGZldyBleHRyYSBjeWxlcyBvbiBhdmVyYWdlLgogISAgICAgRm9yIFNIbWVkaWEsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgYW55IHF1YWR3b3JkIGNhbiBiZSByZWFkIGluIGl0cwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9oeXBlcnZpc29yLmggYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL2h5cGVydmlzb3IuaAppbmRleCBiYWZlNWE2Li43NTY4NjQwIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL2h5cGVydmlzb3IuaAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL2h5cGVydmlzb3IuaApAQCAtNjU0LDcgKzY1NCw3IEBACiAgKiBBUkczOgltbXUgY29udGV4dAogICogQVJHNDoJZmxhZ3MgKEhWX01NVV97SU1NVSxETU1VfSkKICAqIFJFVDA6CXN0YXR1cwotICogRVJST1JTOglFSU5WQUwJCQlJbnZhbGlkIHZpcnV0YWwgYWRkcmVzcywgY29udGV4dCwgb3IKKyAqIEVSUk9SUzoJRUlOVkFMCQkJSW52YWxpZCB2aXJ0dWFsIGFkZHJlc3MsIGNvbnRleHQsIG9yCiAgKgkJCQkJZmxhZ3MgdmFsdWUKICAqCQlFTk9UU1VQUE9SVEVECQlBUkcwIG9yIEFSRzEgaXMgbm9uLXplcm8KICAqCkBAIC03MjEsNyArNzIxLDcgQEAKICAqIEFSRzI6CVRURQogICogQVJHMzoJZmxhZ3MgKEhWX01NVV97SU1NVSxETU1VfSkKICAqIFJFVDA6CXN0YXR1cwotICogRVJST1JTOglFSU5WQUwJCQlJbnZhbGlkIHZpcnV0YWwgYWRkcmVzcyBvciBmbGFncyB2YWx1ZQorICogRVJST1JTOglFSU5WQUwJCQlJbnZhbGlkIHZpcnR1YWwgYWRkcmVzcyBvciBmbGFncyB2YWx1ZQogICoJCUVCQURQR1NaCQlJbnZhbGlkIHBhZ2Ugc2l6ZSB2YWx1ZQogICoJCUVOT1JBRERSCQlJbnZhbGlkIHJlYWwgYWRkcmVzcyBpbiBUVEUKICAqCQlFVE9PTUFOWQkJVG9vIG1hbnkgbWFwcGluZ3MgKG1heCBvZiA4IHJlYWNoZWQpCkBAIC04MDAsNyArODAwLDcgQEAKICAqIEFSRzE6CXJlc2VydmVkLCBtdXN0IGJlIHplcm8KICAqIEFSRzI6CWZsYWdzIChIVl9NTVVfe0lNTVUsRE1NVX0pCiAgKiBSRVQwOglzdGF0dXMKLSAqIEVSUk9SUzoJRUlOVkFMCQkJSW52YWxpZCB2aXJ1dGFsIGFkZHJlc3Mgb3IgZmxhZ3MgdmFsdWUKKyAqIEVSUk9SUzoJRUlOVkFMCQkJSW52YWxpZCB2aXJ0dWFsIGFkZHJlc3Mgb3IgZmxhZ3MgdmFsdWUKICAqCQlFTk9NQVAJCQlTcGVjaWZpZWQgbWFwcGluZyB3YXMgbm90IGZvdW5kCiAgKgogICogRGVtYXBzIGFueSBwZXJtYW5lbnQgcGFnZSBtYXBwaW5nIChlc3RhYmxpc2hlZCB2aWEKQEAgLTEyMDUsNyArMTIwNSw3IEBACiAgKiBzdHJ1Y3R1cmUgY29udGVudHMuICBBdHRlbXB0cyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiB1bmRlZmluZWQKICAqIGJlaGF2aW9yIGZvciB0aGUgZ3Vlc3QuCiAgKgotICogRWFjaCB0cmFwIHRyYWNlIGJ1ZmZlciBlbnRyeSBpcyBsYXllZCBvdXQgYXMgZm9sbG93czoKKyAqIEVhY2ggdHJhcCB0cmFjZSBidWZmZXIgZW50cnkgaXMgbGFpZCBvdXQgYXMgZm9sbG93czoKICAqLwogI2lmbmRlZiBfX0FTU0VNQkxZX18KIHN0cnVjdCBodl90cmFwX3RyYWNlX2VudHJ5IHsKQEAgLTEzMDAsNyArMTMwMCw3IEBACiAgKiBzdGF0ZSBpbiBSRVQxLiAgRnV0dXJlIHN5c3RlbXMgbWF5IGRlZmluZSB2YXJpb3VzIGZsYWdzIGZvciB0aGUKICAqIGVuYWJsZSBhcmd1bWVudCAoQVJHMCksIGZvciB0aGUgbW9tZW50IGEgZ3Vlc3Qgc2hvdWxkIHBhc3MKICAqICIodWludDY0X3QpIC0xIiB0byBlbmFibGUsIGFuZCAiKHVpbnQ2NF90KSAwIiB0byBkaXNhYmxlIGFsbAotICogdHJhY2luZyAtIHdoaWNoIHdpbGwgZW5zdXJlIGZ1dHVyZSBjb21wYXRhYmlsaXR5LgorICogdHJhY2luZyAtIHdoaWNoIHdpbGwgZW5zdXJlIGZ1dHVyZSBjb21wYXRpYmlsaXR5LgogICovCiAjZGVmaW5lIEhWX0ZBU1RfVFRSQUNFX0VOQUJMRQkJMHg5MgogCkBAIC0xODgwLDcgKzE4ODAsNyBAQAogICogcGNpX2RldmljZSwgYXQgcGNpX2NvbmZpZ19vZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkZXZpY2UncwogICogY29uZmlndXJhdGlvbiBzcGFjZS4gIElmIHRoZXJlIHdhcyBubyBlcnJvciwgUkVUMSBpcyBzZXQgdG8gemVybyBhbmQKICAqIFJFVDIgaXMgc2V0IHRvIHRoZSBkYXRhIHJlYWQuICBJbnNpZ25pZmljYW50IGJpdHMgaW4gUkVUMiBhcmUgbm90Ci0gKiBndWFyZW50ZWVkIHRvIGhhdmUgYW55IHNwZWNpZmljIHZhbHVlIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSBpZ25vcmVkLgorICogZ3VhcmFudGVlZCB0byBoYXZlIGFueSBzcGVjaWZpYyB2YWx1ZSBhbmQgdGhlcmVmb3JlIG11c3QgYmUgaWdub3JlZC4KICAqCiAgKiBUaGUgZGF0YSByZXR1cm5lZCBpbiBSRVQyIGlzIHNpemUgYmFzZWQgYnl0ZSBzd2FwcGVkLgogICoKQEAgLTE5NDEsOSArMTk0MSw5IEBACiAgKiBhbmQgcmV0dXJuIHRoZSBhY3R1YWwgZGF0YSByZWFkIGluIFJFVDIuICBUaGUgZGF0YSByZXR1cm5lZCBpcyBzaXplIGJhc2VkCiAgKiBieXRlIHN3YXBwZWQuCiAgKgotICogTm9uLXNpZ25pZmljYW50IGJpdHMgaW4gUkVUMiBhcmUgbm90IGd1YXJlbnRlZWQgdG8gaGF2ZSBhbnkgc3BlY2lmaWMgdmFsdWUKKyAqIE5vbi1zaWduaWZpY2FudCBiaXRzIGluIFJFVDIgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGhhdmUgYW55IHNwZWNpZmljIHZhbHVlCiAgKiBhbmQgdGhlcmVmb3JlIG11c3QgYmUgaWdub3JlZC4gIElmIFJFVDEgaXMgcmV0dXJuZWQgYXMgbm9uLXplcm8sIHRoZSBkYXRhCi0gKiB2YWx1ZSBpcyBub3QgZ3VhcmVudGVlZCB0byBoYXZlIGFueSBzcGVjaWZpYyB2YWx1ZSBhbmQgc2hvdWxkIGJlIGlnbm9yZWQuCisgKiB2YWx1ZSBpcyBub3QgZ3VhcmFudGVlZCB0byBoYXZlIGFueSBzcGVjaWZpYyB2YWx1ZSBhbmQgc2hvdWxkIGJlIGlnbm9yZWQuCiAgKgogICogVGhlIGNhbGxlciBtdXN0IGhhdmUgcGVybWlzc2lvbiB0byByZWFkIGZyb20gdGhlIGdpdmVuIGRldmhhbmRsZSwgcmVhbAogICogYWRkcmVzcywgd2hpY2ggbXVzdCBiZSBhbiBJTyBhZGRyZXNzLiAgVGhlIGFyZ3VtZW50IHJlYWwgYWRkcmVzcyBtdXN0IGJlIGEKQEAgLTI0NTYsOSArMjQ1Niw5IEBACiAgKgogICogQXMgcmVjZWl2ZSBxdWV1ZSBjb25maWd1cmF0aW9uIGNhdXNlcyBhIHJlc2V0IG9mIHRoZSBxdWV1ZSdzIGhlYWQgYW5kCiAgKiB0YWlsIHBvaW50ZXJzIHRoZXJlIGlzIG5vIHdheSBmb3IgYSBndWVzIHRvIGRldGVybWluZSBob3cgbWFueSBlbnRyaWVzCi0gKiBoYXZlIGJlZW4gcmVjZWl2ZWQgYmV0d2VlbiBhIHByZWNlZWRpbmcgbGRjX2dldF9yeF9zdGF0ZSgpIEFQSSBjYWxsCisgKiBoYXZlIGJlZW4gcmVjZWl2ZWQgYmV0d2VlbiBhIHByZWNlZGluZyBsZGNfZ2V0X3J4X3N0YXRlKCkgQVBJIGNhbGwKICAqIGFuZCB0aGUgY29tcGxldGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBvcGVyYXRpb24uICBJdCBzaG91bGQgYmUgbm90ZWQKLSAqIHRoYXQgZGF0YWdyYW0gZGVsaXZlcnkgaXMgbm90IGd1YXJlbnRlZWQgdmlhIGRvbWFpbiBjaGFubmVscyBhbnl3YXksCisgKiB0aGF0IGRhdGFncmFtIGRlbGl2ZXJ5IGlzIG5vdCBndWFyYW50ZWVkIHZpYSBkb21haW4gY2hhbm5lbHMgYW55d2F5LAogICogYW5kIHRoZXJlZm9yZSBhbnkgaGlnaGVyIHByb3RvY29sIHNob3VsZCBiZSByZXNpbGllbnQgdG8gZGF0YWdyYW0KICAqIGxvc3MgaWYgbmVjZXNzYXJ5LiAgSG93ZXZlciwgdG8gb3ZlcmNvbWUgdGhpcyBzcGVjaWZpYyByYWNlIHBvdGVudGlhbAogICogaXQgaXMgcmVjb21tZW5kZWQsIGZvciBleGFtcGxlLCB0aGF0IGEgaGlnaGVyIGxldmVsIHByb3RvY29sIGJlIGVtcGxveWVkCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL25zODczMDMuaCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vbnM4NzMwMy5oCmluZGV4IDY4NmRlZmUuLmFmNzU1NDggMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vbnM4NzMwMy5oCisrKyBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vbnM4NzMwMy5oCkBAIC0zNyw3ICszNyw3IEBACiAvKiBQb3dlciBhbmQgVGVzdCBSZWdpc3RlciAoUFRSKSBiaXRzICovCiAjZGVmaW5lIFBUUl9MUFRCX0lSUTcJMHgwOAogI2RlZmluZSBQVFJfTEVWRUxfSVJRCTB4ODAJLyogV2hlbiBub3QgRUNQL0VQUDogVXNlIGxldmVsIElSUSAgICAgICAgICAgKi8KLSNkZWZpbmUgUFRSX0xQVF9SRUdfRElSCTB4ODAJLyogV2hlbiBFQ1AvRVBQOiBMUFQgQ1RSIGNvbnRyb2xscyBkaXJlY3Rpb24gKi8KKyNkZWZpbmUgUFRSX0xQVF9SRUdfRElSCTB4ODAJLyogV2hlbiBFQ1AvRVBQOiBMUFQgQ1RSIGNvbnRyb2xzIGRpcmVjdGlvbiAqLwogCQkJCS8qICAgICAgICAgICAgICAgb2YgdGhlIHBhcmFsbGVsIHBvcnQJICAgICAqLwogCiAvKiBGdW5jdGlvbiBDb250cm9sIFJlZ2lzdGVyIChGQ1IpIGJpdHMgKi8KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vcGNyLmggYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3Bjci5oCmluZGV4IDg0M2U0ZmEuLjI4OGQ3YmUgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vcGNyLmgKKysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wY3IuaApAQCAtMzEsNyArMzEsNyBAQAogCiAvKiBJbiBvcmRlciB0byBjb21tb25pemUgYXMgbXVjaCBvZiB0aGUgaW1wbGVtZW50YXRpb24gYXMKICAqIHBvc3NpYmxlLCB3ZSB1c2UgUElDSCBhcyBvdXIgY291bnRlci4gIE1vc3RseSB0aGlzIGlzCi0gKiB0byBhY2NvbW9kYXRlIE5pYWdhcmEtMSB3aGljaCBjYW4gb25seSBjb3VudCBpbnNuIGN5Y2xlcworICogdG8gYWNjb21tb2RhdGUgTmlhZ2FyYS0xIHdoaWNoIGNhbiBvbmx5IGNvdW50IGluc24gY3ljbGVzCiAgKiBpbiBQSUNILgogICovCiBzdGF0aWMgaW5saW5lIHU2NCBwaWNsX3ZhbHVlKHVuc2lnbmVkIGludCBubWlfaHopCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3B0cmFjZS5oIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wdHJhY2UuaAppbmRleCAzMGIwYjc5Li5jN2FkM2ZlIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3B0cmFjZS5oCisrKyBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vcHRyYWNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAkgKiB0aGluZ3MgbGlrZSAiaW4gYSBzeXN0ZW0gY2FsbCIgZXRjLiBmb3IgYW4gYXJiaXRyYXkKIAkgKiBwcm9jZXNzLgogCSAqCi0JICogVGhlIFBUX1JFR1NfTUFHSUMgaXMgY2hvb3NlbiBzdWNoIHRoYXQgaXQgY2FuIGJlCisJICogVGhlIFBUX1JFR1NfTUFHSUMgaXMgY2hvc2VuIHN1Y2ggdGhhdCBpdCBjYW4gYmUKIAkgKiBsb2FkZWQgY29tcGxldGVseSB1c2luZyBqdXN0IGEgc2V0aGkgaW5zdHJ1Y3Rpb24uCiAJICovCiAJdW5zaWduZWQgaW50IG1hZ2ljOwpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvZW50cnkuUyBiL2FyY2gvc3BhcmMva2VybmVsL2VudHJ5LlMKaW5kZXggOTA2ZWUzZS4uNmRhNzg0YSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9lbnRyeS5TCkBAIC04MDEsNyArODAxLDcgQEAKIAkuZ2xvYmwJdmFjX2h3Zmx1c2hfcGF0Y2gxX29uLCB2YWNfaHdmbHVzaF9wYXRjaDJfb24KIAogLyoKLSAqIFVnbHksIGJ1dCB3ZSBjYW50IHVzZSBoYXJkd2FyZSBmbHVzaGluZyBvbiB0aGUgc3VuNCBhbmQgd2UnZCByZXF1aXJlCisgKiBVZ2x5LCBidXQgd2UgY2FuJ3QgdXNlIGhhcmR3YXJlIGZsdXNoaW5nIG9uIHRoZSBzdW40IGFuZCB3ZSdkIHJlcXVpcmUKICAqIHR3byBpbnN0cnVjdGlvbnMgKEFudG9uKQogICovCiB2YWNfaHdmbHVzaF9wYXRjaDFfb246CQlhZGRjYwklbDcsIC1QQUdFX1NJWkUsICVsNwpAQCAtODUxLDcgKzg1MSw3IEBACiAJIHNldGhpCSVoaSh+KCgxIDw8IFNVTjRDX1JFQUxfUEdESVJfU0hJRlQpIC0gMSkpLCAlbDQKIAogCS8qIElmIHRoZSBrZXJuZWwgcmVmZXJlbmNlcyBhIGJ1bSBrZXJuZWwgcG9pbnRlciwgb3IgYSBwdGUgd2hpY2gKLQkgKiBwb2ludHMgdG8gYSBub24gZXhpc3RhbnQgcGFnZSBpbiByYW0sIHdlIHdpbGwgcnVuIHRoaXMgY29kZQorCSAqIHBvaW50cyB0byBhIG5vbiBleGlzdGVudCBwYWdlIGluIHJhbSwgd2Ugd2lsbCBydW4gdGhpcyBjb2RlCiAJICogX2ZvcmV2ZXJfIGFuZCBsb2NrIHVwIHRoZSBtYWNoaW5lISEhISEgU28gd2UgbXVzdCBjaGVjayBmb3IKIAkgKiB0aGlzIGNvbmRpdGlvbiwgdGhlIEFDX1NZTkNfRVJSIGJpdHMgYXJlIHdoYXQgd2UgbXVzdCBleGFtaW5lLgogCSAqIEFsc28gYSBwYXJpdHkgZXJyb3Igd291bGQgbWFrZSB0aGlzIGhhcHBlbiBhcyB3ZWxsLiAgU28gd2UganVzdApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvaGVhZF82NC5TIGIvYXJjaC9zcGFyYy9rZXJuZWwvaGVhZF82NC5TCmluZGV4IGY4ZjIxMDUuLmFhNTk0YzcgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL2hlYWRfNjQuUworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9oZWFkXzY0LlMKQEAgLTg1LDcgKzg1LDcgQEAKIHNwYXJjNjRfYm9vdDoKIAltb3YJJW80LCAlbDcKIAotCS8qIFdlIG5lZWQgdG8gcmVtYXAgdGhlIGtlcm5lbC4gIFVzZSBwb3NpdGlvbiBpbmRlcGVuZGFudAorCS8qIFdlIG5lZWQgdG8gcmVtYXAgdGhlIGtlcm5lbC4gIFVzZSBwb3NpdGlvbiBpbmRlcGVuZGVudAogCSAqIGNvZGUgdG8gcmVtYXAgdXMgdG8gS0VSTkJBU0UuCiAJICoKIAkgKiBTSUxPIGNhbiBpbnZva2UgdXMgd2l0aCAzMi1iaXQgYWRkcmVzcyBtYXNraW5nIGVuYWJsZWQsCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9pbml0X3Rhc2suYyBiL2FyY2gvc3BhcmMva2VybmVsL2luaXRfdGFzay5jCmluZGV4IDVmZTNkNjUuLjM1ZjE0MWEgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL2luaXRfdGFzay5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL2luaXRfdGFzay5jCkBAIC0xNSw3ICsxNSw3IEBACiAKIC8qIC50ZXh0IHNlY3Rpb24gaW4gaGVhZC5TIGlzIGFsaWduZWQgYXQgOGsgYm91bmRhcnkgYW5kIHRoaXMgZ2V0cyBsaW5rZWQKICAqIHJpZ2h0IGFmdGVyIHRoYXQgc28gdGhhdCB0aGUgaW5pdF90aHJlYWRfdW5pb24gaXMgYWxpZ25lZCBwcm9wZXJseSBhcyB3ZWxsLgotICogSWYgdGhpcyBpcyBub3QgYWxpZ25lZCBvbiBhIDhrIGJvdW5kcnksIHRoZW4geW91IHNob3VsZCBjaGFuZ2UgY29kZQorICogSWYgdGhpcyBpcyBub3QgYWxpZ25lZCBvbiBhIDhrIGJvdW5kYXJ5LCB0aGVuIHlvdSBzaG91bGQgY2hhbmdlIGNvZGUKICAqIGluIGV0cmFwLlMgd2hpY2ggYXNzdW1lcyBpdC4KICAqLwogdW5pb24gdGhyZWFkX3VuaW9uIGluaXRfdGhyZWFkX3VuaW9uIF9faW5pdF90YXNrX2RhdGEgPQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvb2ZfZGV2aWNlXzY0LmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9vZl9kZXZpY2VfNjQuYwppbmRleCA2M2NkNGU1Li41YzE0OTY4IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9vZl9kZXZpY2VfNjQuYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9vZl9kZXZpY2VfNjQuYwpAQCAtNDU5LDcgKzQ1OSw3IEBACiAJCSAqCiAJCSAqIEhhbmRsZSB0aGlzIGJ5IGRlY2lkaW5nIHRoYXQsIGlmIHdlIGRpZG4ndCBnZXQgYQogCQkgKiBtYXRjaCBpbiB0aGUgcGFyZW50J3MgJ2ludGVycnVwdC1tYXAnLCBhbmQgdGhlCi0JCSAqIHBhcmVudCBpcyBhbiBJUlEgdHJhbnNsYXRlciwgdGhlbiB1c2UgdGhlIHBhcmVudCBhcworCQkgKiBwYXJlbnQgaXMgYW4gSVJRIHRyYW5zbGF0b3IsIHRoZW4gdXNlIHRoZSBwYXJlbnQgYXMKIAkJICogb3VyIElSUSBjb250cm9sbGVyLgogCQkgKi8KIAkJaWYgKHBwLT5pcnFfdHJhbnMpCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2tlcm5lbC9wZXJmX2V2ZW50LmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9wZXJmX2V2ZW50LmMKaW5kZXggNzYwNTc4Ni4uZWU4NDI2ZSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvcGVyZl9ldmVudC5jCisrKyBiL2FyY2gvc3BhcmMva2VybmVsL3BlcmZfZXZlbnQuYwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAKIAogCS8qCiAJICogSWYgZ3JvdXAgZXZlbnRzIHNjaGVkdWxpbmcgdHJhbnNhY3Rpb24gd2FzIHN0YXJ0ZWQsCi0JICogc2tpcCB0aGUgc2NoZWR1bGFiaWxpdHkgdGVzdCBoZXJlLCBpdCB3aWxsIGJlIHBlZm9ybWVkCisJICogc2tpcCB0aGUgc2NoZWR1bGFiaWxpdHkgdGVzdCBoZXJlLCBpdCB3aWxsIGJlIHBlcmZvcm1lZAogCSAqIGF0IGNvbW1pdCB0aW1lKC0+Y29tbWl0X3R4bikgYXMgYSB3aG9sZQogCSAqLwogCWlmIChjcHVjLT5ncm91cF9mbGFnICYgUEVSRl9FVkVOVF9UWE4pCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL21hdGgtZW11L01ha2VmaWxlIGIvYXJjaC9zcGFyYy9tYXRoLWVtdS9NYWtlZmlsZQppbmRleCBiOTA4NWVjLi44MjVkYmVlIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL21hdGgtZW11L01ha2VmaWxlCisrKyBiL2FyY2gvc3BhcmMvbWF0aC1lbXUvTWFrZWZpbGUKQEAgLTIsNyArMiw3IEBACiAjIE1ha2VmaWxlIGZvciB0aGUgRlBVIGluc3RydWN0aW9uIGVtdWxhdGlvbi4KICMKIAotIyBzdXByZXNzIGFsbCB3YXJuaW5ncyAtIGFzIG1hdGguYyBwcm9kdWNlcyBhIGxvdCEKKyMgc3VwcHJlc3MgYWxsIHdhcm5pbmdzIC0gYXMgbWF0aC5jIHByb2R1Y2VzIGEgbG90IQogY2NmbGFncy15IDo9IC13CiAKIG9iai15ICAgIDo9IG1hdGhfJChCSVRTKS5vCmRpZmYgLS1naXQgYS9hcmNoL3RpbGUvS2NvbmZpZyBiL2FyY2gvdGlsZS9LY29uZmlnCmluZGV4IDZlMmNkZDUuLmUzMmIwYzIgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9LY29uZmlnCisrKyBiL2FyY2gvdGlsZS9LY29uZmlnCkBAIC01MSw3ICs1MSw3IEBACiBjb25maWcgR0VORVJJQ19DTE9DS0VWRU5UUwogCWRlZl9ib29sIHkKIAotIyBGSVhNRTogdGlsZWd4IGNhbiBpbXBsZW1lbnQgYSBtb3JlIGVmZmljZW50IHJ3c2VtLgorIyBGSVhNRTogdGlsZWd4IGNhbiBpbXBsZW1lbnQgYSBtb3JlIGVmZmljaWVudCByd3NlbS4KIGNvbmZpZyBSV1NFTV9HRU5FUklDX1NQSU5MT0NLCiAJZGVmX2Jvb2wgeQogCmRpZmYgLS1naXQgYS9hcmNoL3RpbGUvaW5jbHVkZS9odi9kcnZfeGdiZV9pbnRmLmggYi9hcmNoL3RpbGUvaW5jbHVkZS9odi9kcnZfeGdiZV9pbnRmLmgKaW5kZXggMTQ2ZTQ3ZC4uZjEzMTg4YSAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL2luY2x1ZGUvaHYvZHJ2X3hnYmVfaW50Zi5oCisrKyBiL2FyY2gvdGlsZS9pbmNsdWRlL2h2L2Rydl94Z2JlX2ludGYuaApAQCAtMzE5LDcgKzMxOSw3IEBACiAgKiAgICAgICAgIGlzIGFuIGVycm9yIGNvZGUsIG9yIHplcm8gaWYgbm8gZXJyb3IuICBUaGUgdmFsMCBtZW1iZXIgaXMgdGhlCiAgKiAgICAgICAgIHVwZGF0ZWQgdmFsdWUgb2Ygc2Vxbm87IGl0IGhhcyBiZWVuIGluY3JlbWVudGVkIGJ5IDEgZm9yIGVhY2gKICAqICAgICAgICAgcGFja2V0IHNlbnQuICBUaGF0IGluY3JlbWVudCBtYXkgYmUgbGVzcyB0aGFuIG5lbnRyaWVzIGlmIGFuCi0gKiAgICAgICAgIGVycm9yIG9jY3VyZWQsIG9yIGlmIHNvbWUgb2YgdGhlIGVudHJpZXMgaW4gdGhlIHZlY3RvciBjb250YWluCisgKiAgICAgICAgIGVycm9yIG9jY3VycmVkLCBvciBpZiBzb21lIG9mIHRoZSBlbnRyaWVzIGluIHRoZSB2ZWN0b3IgY29udGFpbgogICogICAgICAgICBoYW5kbGVzIGVxdWFsIHRvIE5FVElPX1BLVF9IQU5ETEVfTk9ORS4gIFRoZSB2YWwxIG1lbWJlciBpcyB0aGUKICAqICAgICAgICAgdXBkYXRlZCB2YWx1ZSBvZiBuZW50cmllczsgaXQgaGFzIGJlZW4gZGVjcmVtZW50ZWQgYnkgMSBmb3IgZWFjaAogICogICAgICAgICB2ZWN0b3IgZW50cnkgcHJvY2Vzc2VkLiAgQWdhaW4sIHRoYXQgZGVjcmVtZW50IG1heSBiZSBsZXNzIHRoYW4KZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9pbmNsdWRlL2h2L2h5cGVydmlzb3IuaCBiL2FyY2gvdGlsZS9pbmNsdWRlL2h2L2h5cGVydmlzb3IuaAppbmRleCAxYjhiZjAzLi5lZTQxYmNhIDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9odi9oeXBlcnZpc29yLmgKKysrIGIvYXJjaC90aWxlL2luY2x1ZGUvaHYvaHlwZXJ2aXNvci5oCkBAIC0xMzQwLDcgKzEzNDAsNyBAQAogICogIHRoaXMgb3BlcmF0aW9uLiAgSWYgYW55IHBlcm1hbmVudCBkZWxpdmVyeSBlcnJvcnMgd2VyZSBlbmNvdW50ZXJlZCwKICAqICB0aGUgcm91dGluZSByZXR1cm5zIEhWX0VSRUNJUC4gIEluIHRoZSBldmVudCBvZiBwZXJtYW5lbnQgZGVsaXZlcnkKICAqICBlcnJvcnMsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IGRlbGl2ZXJ5IHdhcyBub3QgYXR0ZW1wdGVkIHRvIGFsbAotICogIHJlY2lwaWVudHM7IGlmIGFueSBtZXNzYWdlcyB3ZXJlIHN1Y2Nlc2Z1bGx5IGRlbGl2ZXJlZCwgaG93ZXZlciwKKyAqICByZWNpcGllbnRzOyBpZiBhbnkgbWVzc2FnZXMgd2VyZSBzdWNjZXNzZnVsbHkgZGVsaXZlcmVkLCBob3dldmVyLAogICogIHJlY2lwaWVudHMnIHN0YXRlIHZhbHVlcyB3aWxsIGJlIHVwZGF0ZWQgYXBwcm9wcmlhdGVseS4KICAqCiAgKiAgSXQgaXMgZXhwbGljaXRseSBsZWdhbCB0byBzcGVjaWZ5IGEgcmVjaXBpZW50IHN0cnVjdHVyZSB3aG9zZSBzdGF0ZQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAKICAqICBuZXZlciBjYWxsIGh2X3JlY2VpdmVfbWVzc2FnZSwgb3IgY291bGQgcmVnaXN0ZXIgYSBkaWZmZXJlbnQgc3RhdGUKICAqICBidWZmZXIsIGxvc2luZyB0aGUgbWVzc2FnZS4KICAqCi0gKiAgU3BlY2lmaXlpbmcgdGhlIHNhbWUgcmVjaXBpZW50IG1vcmUgdGhhbiBvbmNlIGluIHRoZSByZWNpcGllbnQgbGlzdAorICogIFNwZWNpZnlpbmcgdGhlIHNhbWUgcmVjaXBpZW50IG1vcmUgdGhhbiBvbmNlIGluIHRoZSByZWNpcGllbnQgbGlzdAogICogIGlzIGFuIGVycm9yLCB3aGljaCB3aWxsIG5vdCByZXN1bHQgaW4gYW4gZXJyb3IgcmV0dXJuIGJ1dCB3aGljaCBtYXkKICAqICBvciBtYXkgbm90IHJlc3VsdCBpbiBtb3JlIHRoYW4gb25lIG1lc3NhZ2UgYmVpbmcgZGVsaXZlcmVkIHRvIHRoZQogICogIHJlY2lwaWVudCB0aWxlLgpkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL2tlcm5lbC9wY2kuYyBiL2FyY2gvdGlsZS9rZXJuZWwvcGNpLmMKaW5kZXggYTFlZTI1Yi4uZWEzOGYwYyAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL2tlcm5lbC9wY2kuYworKysgYi9hcmNoL3RpbGUva2VybmVsL3BjaS5jCkBAIC0zNiw3ICszNiw3IEBACiAgKiBJbml0aWFsaXphdGlvbiBmbG93IGFuZCBwcm9jZXNzCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogVGhpcyBmaWxlcyBjb250YWluZXMgdGhlIHJvdXRpbmVzIHRvIHNlYXJjaCBmb3IgUENJIGJ1c2VzLAorICogVGhpcyBmaWxlcyBjb250YWlucyB0aGUgcm91dGluZXMgdG8gc2VhcmNoIGZvciBQQ0kgYnVzZXMsCiAgKiBlbnVtZXJhdGUgdGhlIGJ1c2VzLCBhbmQgY29uZmlndXJlIGFueSBhdHRhY2hlZCBkZXZpY2VzLgogICoKICAqIFRoZXJlIGFyZSB0d28gZW50cnkgcG9pbnRzIGhlcmU6CkBAIC01MTksNyArNTE5LDcgQEAKIAogCiAvKgotICogU2VlIHRpbGVfY2ZnX3JlYWQoKSBmb3IgcmVsZXZlbnQgY29tbWVudHMuCisgKiBTZWUgdGlsZV9jZmdfcmVhZCgpIGZvciByZWxldmFudCBjb21tZW50cy4KICAqIE5vdGUgdGhhdCAidmFsIiBpcyB0aGUgdmFsdWUgdG8gd3JpdGUsIG5vdCBhIHBvaW50ZXIgdG8gdGhhdCB2YWx1ZS4KICAqLwogc3RhdGljIGludCBfX2RldmluaXQgdGlsZV9jZmdfd3JpdGUoc3RydWN0IHBjaV9idXMgKmJ1cywKZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9tbS9mYXVsdC5jIGIvYXJjaC90aWxlL21tL2ZhdWx0LmMKaW5kZXggNzU4ZjU5Ny4uNTFmODY2MyAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL21tL2ZhdWx0LmMKKysrIGIvYXJjaC90aWxlL21tL2ZhdWx0LmMKQEAgLTI5MCw3ICsyOTAsNyBAQAogCS8qCiAJICogRWFybHkgb24sIHdlIG5lZWQgdG8gY2hlY2sgZm9yIG1pZ3JhdGluZyBQVEUgZW50cmllczsKIAkgKiBzZWUgaG9tZWNhY2hlLmMuICBJZiB3ZSBmaW5kIGEgbWlncmF0aW5nIFBURSwgd2Ugd2FpdCB1bnRpbAotCSAqIHRoZSBiYWNraW5nIHBhZ2UgY2xhaW1zIHRvIGJlIGRvbmUgbWlncmF0aW5nLCB0aGVuIHdlIHByb2NlZGUuCisJICogdGhlIGJhY2tpbmcgcGFnZSBjbGFpbXMgdG8gYmUgZG9uZSBtaWdyYXRpbmcsIHRoZW4gd2UgcHJvY2VlZC4KIAkgKiBGb3Iga2VybmVsIFBURXMsIHdlIHJld3JpdGUgdGhlIFBURSBhbmQgcmV0dXJuIGFuZCByZXRyeS4KIAkgKiBPdGhlcndpc2UsIHdlIHRyZWF0IHRoZSBmYXVsdCBsaWtlIGEgbm9ybWFsICJubyBQVEUiIGZhdWx0LAogCSAqIHJhdGhlciB0aGFuIHRyeWluZyB0byBwYXRjaCB1cCB0aGUgZXhpc3RpbmcgUFRFLgpkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL21tL2h1Z2V0bGJwYWdlLmMgYi9hcmNoL3RpbGUvbW0vaHVnZXRsYnBhZ2UuYwppbmRleCAyMDFhNTgyLi40MmNmY2JhIDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvbW0vaHVnZXRsYnBhZ2UuYworKysgYi9hcmNoL3RpbGUvbW0vaHVnZXRsYnBhZ2UuYwpAQCAtMjE5LDcgKzIxOSw3IEBACiAJaWYgKG1tLT5mcmVlX2FyZWFfY2FjaGUgPCBsZW4pCiAJCWdvdG8gZmFpbDsKIAotCS8qIGVpdGhlciBubyBhZGRyZXNzIHJlcXVlc3RlZCBvciBjYW50IGZpdCBpbiByZXF1ZXN0ZWQgYWRkcmVzcyBob2xlICovCisJLyogZWl0aGVyIG5vIGFkZHJlc3MgcmVxdWVzdGVkIG9yIGNhbid0IGZpdCBpbiByZXF1ZXN0ZWQgYWRkcmVzcyBob2xlICovCiAJYWRkciA9IChtbS0+ZnJlZV9hcmVhX2NhY2hlIC0gbGVuKSAmIGh1Z2VfcGFnZV9tYXNrKGgpOwogCWRvIHsKIAkJLyoKZGlmZiAtLWdpdCBhL2FyY2gvdW0vS2NvbmZpZy5uZXQgYi9hcmNoL3VtL0tjb25maWcubmV0CmluZGV4IDllOWE0YWEuLjMxNjBiMWEgMTAwNjQ0Ci0tLSBhL2FyY2gvdW0vS2NvbmZpZy5uZXQKKysrIGIvYXJjaC91bS9LY29uZmlnLm5ldApAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgICAgIG90aGVyIHRyYW5zcG9ydHMsIFNMaVJQIHdvcmtzIHdpdGhvdXQgdGhlIG5lZWQgb2Ygcm9vdCBsZXZlbAogICAgICAgICBwcml2bGVnZXMsIHNldHVpZCBiaW5hcmllcywgb3IgU0xJUCBkZXZpY2VzIG9uIHRoZSBob3N0LiAgVGhpcwogICAgICAgICBhbHNvIG1lYW5zIG5vdCBldmVyeSB0eXBlIG9mIGNvbm5lY3Rpb24gaXMgcG9zc2libGUsIGJ1dCBtb3N0Ci0gICAgICAgIHNpdHVhdGlvbnMgY2FuIGJlIGFjY29tb2RhdGVkIHdpdGggY2FyZWZ1bGx5IGNyYWZ0ZWQgc2xpcnAKKyAgICAgICAgc2l0dWF0aW9ucyBjYW4gYmUgYWNjb21tb2RhdGVkIHdpdGggY2FyZWZ1bGx5IGNyYWZ0ZWQgc2xpcnAKICAgICAgICAgY29tbWFuZHMgdGhhdCBjYW4gYmUgcGFzc2VkIGFsb25nIGFzIHBhcnQgb2YgdGhlIG5ldHdvcmsgZGV2aWNlJ3MKICAgICAgICAgc2V0dXAgc3RyaW5nLiAgVGhlIGVmZmVjdCBvZiB0aGlzIHRyYW5zcG9ydCBvbiB0aGUgVU1MIGlzIHNpbWlsYXIKICAgICAgICAgdGhhdCBvZiBhIGhvc3QgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBtYXNxdWVyYWRlcyBhbGwgbmV0d29yawpkaWZmIC0tZ2l0IGEvYXJjaC91bmljb3JlMzIvaW5jbHVkZS9tYWNoL3JlZ3MtdW1hbC5oIGIvYXJjaC91bmljb3JlMzIvaW5jbHVkZS9tYWNoL3JlZ3MtdW1hbC5oCmluZGV4IDg4NWJiNjIuLmFhMjJkZjcgMTAwNjQ0Ci0tLSBhL2FyY2gvdW5pY29yZTMyL2luY2x1ZGUvbWFjaC9yZWdzLXVtYWwuaAorKysgYi9hcmNoL3VuaWNvcmUzMi9pbmNsdWRlL21hY2gvcmVncy11bWFsLmgKQEAgLTUyLDcgKzUyLDcgQEAKICAqLwogI2RlZmluZSBVTUFMX01JSVNUQVRVUwkJKFBLVU5JVFlfVU1BTF9CQVNFICsgMHgwMDMwKQogLyoKLSAqIE1JSSBNYW5hZ21lbnQgSW5kaWNhdG9yIFVNQUxfTUlJSURDVAorICogTUlJIE1hbmFnZW1lbnQgSW5kaWNhdG9yIFVNQUxfTUlJSURDVAogICovCiAjZGVmaW5lIFVNQUxfTUlJSURDVAkJKFBLVU5JVFlfVU1BTF9CQVNFICsgMHgwMDM0KQogLyoKQEAgLTkxLDcgKzkxLDcgQEAKICNkZWZpbmUgVU1BTF9GSUZPUkFNNgkJKFBLVU5JVFlfVU1BTF9CQVNFICsgMHgwMDc4KQogI2RlZmluZSBVTUFMX0ZJRk9SQU03CQkoUEtVTklUWV9VTUFMX0JBU0UgKyAweDAwN2MpCiAKLS8qIE1BSEJFIE1PRFVFTCBPRiBVTUFMICovCisvKiBNQUhCRSBNT0RVTEUgT0YgVU1BTCAqLwogLyogVU1BTCdzIE1BSEJFIG1vZHVsZSBpbnRlcmZhY2VzIHRvIHRoZSBob3N0IHN5c3RlbSB0aHJvdWdoIDMyLWJpdCBBSEIgTWFzdGVyCiAgKiBhbmQgU2xhdmUgcG9ydHMuUmVnaXN0ZXJzIHdpdGhpbiB0aGUgTS1BSEJFIHByb3ZpZGUgQ29udHJvbCBhbmQgU3RhdHVzCiAgKiBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZXNlIHRyYW5zZmVycy4KZGlmZiAtLWdpdCBhL2FyY2gvdW5pY29yZTMyL2tlcm5lbC9oZWFkLlMgYi9hcmNoL3VuaWNvcmUzMi9rZXJuZWwvaGVhZC5TCmluZGV4IDkyMjU1ZjMuLjhjYWYzMjIgMTAwNjQ0Ci0tLSBhL2FyY2gvdW5pY29yZTMyL2tlcm5lbC9oZWFkLlMKKysrIGIvYXJjaC91bmljb3JlMzIva2VybmVsL2hlYWQuUwpAQCAtMTY0LDcgKzE2NCw3IEBACiBFTkRQUk9DKHN0ZXh0KQogCiAvKgotICogRW5hYmxlIHRoZSBNTVUuICBUaGlzIGNvbXBsZXRlbHkgY2hhbmdlcyB0aGUgc3R1Y3R1cmUgb2YgdGhlIHZpc2libGUKKyAqIEVuYWJsZSB0aGUgTU1VLiAgVGhpcyBjb21wbGV0ZWx5IGNoYW5nZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgdmlzaWJsZQogICogbWVtb3J5IHNwYWNlLiAgWW91IHdpbGwgbm90IGJlIGFibGUgdG8gdHJhY2UgZXhlY3V0aW9uIHRocm91Z2ggdGhpcy4KICAqCiAgKiAgcjAgID0gY3AjMCBjb250cm9sIHJlZ2lzdGVyCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pMzg3LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pMzg3LmgKaW5kZXggZWYzMjg5MC4uYzllMDllYSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vaTM4Ny5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2kzODcuaApAQCAtMjM3LDcgKzIzNyw3IEBACiAJfSBlbHNlIGlmICh1c2VfZnhzcigpKSB7CiAJCWZwdV9meHNhdmUoZnB1KTsKIAl9IGVsc2UgewotCQlhc20gdm9sYXRpbGUoImZzYXZlICVbZnhdOyBmd2FpdCIKKwkJYXNtIHZvbGF0aWxlKCJmbnNhdmUgJVtmeF07IGZ3YWl0IgogCQkJICAgICA6IFtmeF0gIj1tIiAoZnB1LT5zdGF0ZS0+ZnNhdmUpKTsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jIGIvYXJjaC94ODYva2VybmVsL3NldHVwLmMKaW5kZXggNWEwNDg0YS4uNGJlOWIzOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL3NldHVwLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3NldHVwLmMKQEAgLTk3Niw2ICs5NzYsMTEgQEAKIAlwYWdpbmdfaW5pdCgpOwogCXg4Nl9pbml0LnBhZ2luZy5wYWdldGFibGVfc2V0dXBfZG9uZShzd2FwcGVyX3BnX2Rpcik7CiAKKwlpZiAoYm9vdF9jcHVfZGF0YS5jcHVpZF9sZXZlbCA+PSAwKSB7CisJCS8qIEEgQ1BVIGhhcyAlY3I0IGlmIGFuZCBvbmx5IGlmIGl0IGhhcyBDUFVJRCAqLworCQltbXVfY3I0X2ZlYXR1cmVzID0gcmVhZF9jcjQoKTsKKwl9CisKICNpZmRlZiBDT05GSUdfWDg2XzMyCiAJLyogc3luYyBiYWNrIGtlcm5lbCBhZGRyZXNzIHJhbmdlICovCiAJY2xvbmVfcGdkX3JhbmdlKGluaXRpYWxfcGFnZV90YWJsZSArIEtFUk5FTF9QR0RfQk9VTkRBUlksCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggNThmNTE3Yi4uOTM0YjRjNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMjM5NSw5ICsyMzk1LDkgQEAKIAkJaW50IGk7CiAKIAkJZW50cnktPmZsYWdzIHw9IEtWTV9DUFVJRF9GTEFHX1NJR05JRkNBTlRfSU5ERVg7Ci0JCWZvciAoaSA9IDE7ICpuZW50IDwgbWF4bmVudDsgKytpKSB7Ci0JCQlpZiAoZW50cnlbaSAtIDFdLmVheCA9PSAwICYmIGkgIT0gMikKLQkJCQlicmVhazsKKwkJZm9yIChpID0gMTsgKm5lbnQgPCBtYXhuZW50ICYmIGkgPCA2NDsgKytpKSB7CisJCQlpZiAoZW50cnlbaV0uZWF4ID09IDApCisJCQkJY29udGludWU7CiAJCQlkb19jcHVpZF8xX2VudCgmZW50cnlbaV0sIGZ1bmN0aW9uLCBpKTsKIAkJCWVudHJ5W2ldLmZsYWdzIHw9CiAJCQkgICAgICAgS1ZNX0NQVUlEX0ZMQUdfU0lHTklGQ0FOVF9JTkRFWDsKQEAgLTQ5NTgsMTIgKzQ5NTgsNiBAQAogCQkJYmVzdCA9IGU7CiAJCQlicmVhazsKIAkJfQotCQkvKgotCQkgKiBCb3RoIGJhc2ljIG9yIGJvdGggZXh0ZW5kZWQ/Ci0JCSAqLwotCQlpZiAoKChlLT5mdW5jdGlvbiBeIGZ1bmN0aW9uKSAmIDB4ODAwMDAwMDApID09IDApCi0JCQlpZiAoIWJlc3QgfHwgZS0+ZnVuY3Rpb24gPiBiZXN0LT5mdW5jdGlvbikKLQkJCQliZXN0ID0gZTsKIAl9CiAJcmV0dXJuIGJlc3Q7CiB9CkBAIC00OTgzLDYgKzQ5NzcsMjcgQEAKIAlyZXR1cm4gMzY7CiB9CiAKKy8qCisgKiBJZiBubyBtYXRjaCBpcyBmb3VuZCwgY2hlY2sgd2hldGhlciB3ZSBleGNlZWQgdGhlIHZDUFUncyBsaW1pdAorICogYW5kIHJldHVybiB0aGUgY29udGVudCBvZiB0aGUgaGlnaGVzdCB2YWxpZCBfc3RhbmRhcmRfIGxlYWYgaW5zdGVhZC4KKyAqIFRoaXMgaXMgdG8gc2F0aXNmeSB0aGUgQ1BVSUQgc3BlY2lmaWNhdGlvbi4KKyAqLworc3RhdGljIHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyKiBjaGVja19jcHVpZF9saW1pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBmdW5jdGlvbiwgdTMyIGluZGV4KQoreworCXN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICptYXhsZXZlbDsKKworCW1heGxldmVsID0ga3ZtX2ZpbmRfY3B1aWRfZW50cnkodmNwdSwgZnVuY3Rpb24gJiAweDgwMDAwMDAwLCAwKTsKKwlpZiAoIW1heGxldmVsIHx8IG1heGxldmVsLT5lYXggPj0gZnVuY3Rpb24pCisJCXJldHVybiBOVUxMOworCWlmIChmdW5jdGlvbiAmIDB4ODAwMDAwMDApIHsKKwkJbWF4bGV2ZWwgPSBrdm1fZmluZF9jcHVpZF9lbnRyeSh2Y3B1LCAwLCAwKTsKKwkJaWYgKCFtYXhsZXZlbCkKKwkJCXJldHVybiBOVUxMOworCX0KKwlyZXR1cm4ga3ZtX2ZpbmRfY3B1aWRfZW50cnkodmNwdSwgbWF4bGV2ZWwtPmVheCwgaW5kZXgpOworfQorCiB2b2lkIGt2bV9lbXVsYXRlX2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAl1MzIgZnVuY3Rpb24sIGluZGV4OwpAQCAtNDk5NSw2ICs1MDEwLDEwIEBACiAJa3ZtX3JlZ2lzdGVyX3dyaXRlKHZjcHUsIFZDUFVfUkVHU19SQ1gsIDApOwogCWt2bV9yZWdpc3Rlcl93cml0ZSh2Y3B1LCBWQ1BVX1JFR1NfUkRYLCAwKTsKIAliZXN0ID0ga3ZtX2ZpbmRfY3B1aWRfZW50cnkodmNwdSwgZnVuY3Rpb24sIGluZGV4KTsKKworCWlmICghYmVzdCkKKwkJYmVzdCA9IGNoZWNrX2NwdWlkX2xpbWl0KHZjcHUsIGZ1bmN0aW9uLCBpbmRleCk7CisKIAlpZiAoYmVzdCkgewogCQlrdm1fcmVnaXN0ZXJfd3JpdGUodmNwdSwgVkNQVV9SRUdTX1JBWCwgYmVzdC0+ZWF4KTsKIAkJa3ZtX3JlZ2lzdGVyX3dyaXRlKHZjcHUsIFZDUFVfUkVHU19SQlgsIGJlc3QtPmVieCk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9zcmF0XzMyLmMgYi9hcmNoL3g4Ni9tbS9zcmF0XzMyLmMKaW5kZXggNDg2NTFjNi4uMzY0ZjM2YiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vc3JhdF8zMi5jCisrKyBiL2FyY2gveDg2L21tL3NyYXRfMzIuYwpAQCAtMjExLDEwICsyMTEsMTIgQEAKIHsKIAlpbnQgaSwgaiwgbmlkOwogCi0KIAlpZiAoc3JhdF9kaXNhYmxlZCgpKQogCQlnb3RvIG91dF9mYWlsOwogCisJaWYgKGFjcGlfbnVtYV9pbml0KCkgPCAwKQorCQlnb3RvIG91dF9mYWlsOworCiAJaWYgKG51bV9tZW1vcnlfY2h1bmtzID09IDApIHsKIAkJcHJpbnRrKEtFUk5fREVCVUcKIAkJCSAiY291bGQgbm90IGZpbmQgYW55IEFDUEkgU1JBVCBtZW1vcnkgYXJlYXMuXG4iKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BsYXRmb3JtL21yc3QvdnJ0Yy5jIGIvYXJjaC94ODYvcGxhdGZvcm0vbXJzdC92cnRjLmMKaW5kZXggMDRjZjY0NS4uNzNkNzBkNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvcGxhdGZvcm0vbXJzdC92cnRjLmMKKysrIGIvYXJjaC94ODYvcGxhdGZvcm0vbXJzdC92cnRjLmMKQEAgLTEwMCw5ICsxMDAsMTEgQEAKIAogdm9pZCBfX2luaXQgbXJzdF9ydGNfaW5pdCh2b2lkKQogewotCXVuc2lnbmVkIGxvbmcgdnJ0Y19wYWRkciA9IHNmaV9tcnRjX2FycmF5WzBdLnBoeXNfYWRkcjsKKwl1bnNpZ25lZCBsb25nIHZydGNfcGFkZHI7CiAKIAlzZmlfdGFibGVfcGFyc2UoU0ZJX1NJR19NUlRDLCBOVUxMLCBOVUxMLCBzZmlfcGFyc2VfbXJ0Yyk7CisKKwl2cnRjX3BhZGRyID0gc2ZpX21ydGNfYXJyYXlbMF0ucGh5c19hZGRyOwogCWlmICghc2ZpX21ydGNfbnVtIHx8ICF2cnRjX3BhZGRyKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BsYXRmb3JtL3Zpc3dzL3Zpc3dzX3F1aXJrcy5jIGIvYXJjaC94ODYvcGxhdGZvcm0vdmlzd3Mvdmlzd3NfcXVpcmtzLmMKaW5kZXggZmU0Y2Y4Mi4uYzdhYmYxMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvcGxhdGZvcm0vdmlzd3Mvdmlzd3NfcXVpcmtzLmMKKysrIGIvYXJjaC94ODYvcGxhdGZvcm0vdmlzd3Mvdmlzd3NfcXVpcmtzLmMKQEAgLTQ3MSwxNSArNDcxLDcgQEAKIHsKIAlsZWdhY3lfcGljLT5pbml0KDApOwogCWVuYWJsZV9jb2JhbHRfaXJxKGRhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBlbmRfcGlpeDRfbWFzdGVyX2lycShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZjb2JhbHRfbG9jaywgZmxhZ3MpOwotCWVuYWJsZV9jb2JhbHRfaXJxKGRhdGEpOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvYmFsdF9sb2NrLCBmbGFncyk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgcGlpeDRfbWFzdGVyX2lycV90eXBlID0gewpAQCAtNDkyLDcgKzQ4NCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgcGlpeDRfdmlydHVhbF9pcnFfdHlwZSA9IHsKIAkubmFtZQkJPSAiUElJWDQtdmlydHVhbCIsCi0JLm1hc2sJCT0gcGlpNF9tYXNrLAorCS5pcnFfbWFzawk9IHBpaTRfbWFzaywKIH07CiAKIC8qCkBAIC01ODAsOSArNTcyLDkgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHNldF9waWl4NF92aXJ0dWFsX2lycV90eXBlKHZvaWQpCiB7Ci0JcGlpeDRfdmlydHVhbF9pcnFfdHlwZS5lbmFibGUgPQlpODI1OUFfY2hpcC51bm1hc2s7Ci0JcGlpeDRfdmlydHVhbF9pcnFfdHlwZS5kaXNhYmxlID0gaTgyNTlBX2NoaXAubWFzazsKLQlwaWl4NF92aXJ0dWFsX2lycV90eXBlLnVubWFzayA9CWk4MjU5QV9jaGlwLnVubWFzazsKKwlwaWl4NF92aXJ0dWFsX2lycV90eXBlLmlycV9lbmFibGUgPSBpODI1OUFfY2hpcC5pcnFfdW5tYXNrOworCXBpaXg0X3ZpcnR1YWxfaXJxX3R5cGUuaXJxX2Rpc2FibGUgPSBpODI1OUFfY2hpcC5pcnFfbWFzazsKKwlwaWl4NF92aXJ0dWFsX2lycV90eXBlLmlycV91bm1hc2sgPSBpODI1OUFfY2hpcC5pcnFfdW5tYXNrOwogfQogCiBzdGF0aWMgdm9pZCBfX2luaXQgdmlzd3NfcHJlX2ludHJfaW5pdCh2b2lkKQpAQCAtNTk5LDcgKzU5MSw3IEBACiAJCWVsc2UgaWYgKGkgPT0gQ09fSVJRX0lERTApCiAJCQljaGlwID0gJmNvYmFsdF9pcnFfdHlwZTsKIAkJZWxzZSBpZiAoaSA9PSBDT19JUlFfSURFMSkKLQkJCT5jaGlwID0gJmNvYmFsdF9pcnFfdHlwZTsKKwkJCWNoaXAgPSAmY29iYWx0X2lycV90eXBlOwogCQllbHNlIGlmIChpID09IENPX0lSUV84MjU5KQogCQkJY2hpcCA9ICZwaWl4NF9tYXN0ZXJfaXJxX3R5cGU7CiAJCWVsc2UgaWYgKGkgPCBDT19JUlFfQVBJQzApCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9kbWEuaCBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL2RtYS5oCmluZGV4IDEzN2NhMzkuLmJiMDk5YTMgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL2RtYS5oCisrKyBiL2FyY2gveHRlbnNhL2luY2x1ZGUvYXNtL2RtYS5oCkBAIC0zNyw3ICszNyw3IEBACiAgKgl0aGUgc2l6ZSBvZiB0aGUgc3RhdGljYWxseSBtYXBwZWQga2VybmVsIHNlZ21lbnQKICAqCShYQ0hBTF9LU0VHX3tDQUNIRUQsQllQQVNTfV9TSVpFKSwgaWUuIDEyOCBNQi4KICAqCi0gKiBOT1RFOiBXaGVuIHRoZSBlbnRpcmUgS1NFRyBhcmVhIGlzIERNQSBjYXBhYmxlLCB3ZSBzdWJzdHJhY3QKKyAqIE5PVEU6IFdoZW4gdGhlIGVudGlyZSBLU0VHIGFyZWEgaXMgRE1BIGNhcGFibGUsIHdlIHN1YnRyYWN0CiAgKglvbmUgZnJvbSB0aGUgbWF4IGFkZHJlc3Mgc28gdGhhdCB0aGUgdmlydF90b19waHlzKCkgbWFjcm8KICAqCXdvcmtzIGNvcnJlY3RseSBvbiB0aGUgYWRkcmVzcyAob3RoZXJ3aXNlIHRoZSBhZGRyZXNzCiAgKgllbnRlcnMgYW5vdGhlciBhcmVhLCBhbmQgdmlydF90b19waHlzKCkgbWF5IG5vdCByZXR1cm4KZGlmZiAtLWdpdCBhL2FyY2gveHRlbnNhL2tlcm5lbC9lbnRyeS5TIGIvYXJjaC94dGVuc2Eva2VybmVsL2VudHJ5LlMKaW5kZXggNWZkMDFmNi4uNjIyM2YzMyAxMDA2NDQKLS0tIGEvYXJjaC94dGVuc2Eva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC94dGVuc2Eva2VybmVsL2VudHJ5LlMKQEAgLTEwMjYsNyArMTAyNiw3IEBACiAgKiBUUlkJIGFkZHMgYW4gZW50cnkgdG8gdGhlIF9fZXhfdGFibGUgZml4dXAgdGFibGUgZm9yIHRoZSBpbW1lZGlhdGVseQogICoJIGZvbGxvd2luZyBpbnN0cnVjdGlvbi4KICAqCi0gKiBDQVRDSCBjYXRjaGVzIGFueSBleGNlcHRpb24gdGhhdCBvY2N1cnJlZCBhdCBvbmUgb2YgdGhlIHByZWNlZWRpbmcgVFJZCisgKiBDQVRDSCBjYXRjaGVzIGFueSBleGNlcHRpb24gdGhhdCBvY2N1cnJlZCBhdCBvbmUgb2YgdGhlIHByZWNlZGluZyBUUlkKICAqICAgICAgIHN0YXRlbWVudHMgYW5kIGNvbnRpbnVlcyBmcm9tIHRoZXJlCiAgKgogICogVXNhZ2UgVFJZCWwzMmkJYTAsIGExLCAwCmRpZmYgLS1naXQgYS9ibG9jay9ibGstY2dyb3VwLmMgYi9ibG9jay9ibGstY2dyb3VwLmMKaW5kZXggMmJlZjU3MC4uZjA2MDVhYiAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNncm91cC5jCisrKyBiL2Jsb2NrL2Jsay1jZ3JvdXAuYwpAQCAtODY4LDcgKzg2OCw3IEBACiB9CiAKIC8qCi0gKiBTb21lIHJ1bGVzL3ZhbHVlcyBpbiBibGtnIGhhdmUgY2hhbmdlZC4gUHJvcG9nYXRlIHRob3NlIHRvIHJlc3BlY3RpdmUKKyAqIFNvbWUgcnVsZXMvdmFsdWVzIGluIGJsa2cgaGF2ZSBjaGFuZ2VkLiBQcm9wYWdhdGUgdGhvc2UgdG8gcmVzcGVjdGl2ZQogICogcG9saWNpZXMuCiAgKi8KIHN0YXRpYyB2b2lkIGJsa2lvX3VwZGF0ZV9ibGtnX3BvbGljeShzdHJ1Y3QgYmxraW9fY2dyb3VwICpibGtjZywKQEAgLTkwMyw3ICs5MDMsNyBAQAogfQogCiAvKgotICogQSBwb2xpY3kgbm9kZSBydWxlIGhhcyBiZWVuIHVwZGF0ZWQuIFByb3BvZ2F0ZSB0aGlzIHVwZGF0ZSB0byBhbGwgdGhlCisgKiBBIHBvbGljeSBub2RlIHJ1bGUgaGFzIGJlZW4gdXBkYXRlZC4gUHJvcGFnYXRlIHRoaXMgdXBkYXRlIHRvIGFsbCB0aGUKICAqIGJsb2NrIGdyb3VwcyB3aGljaCBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4KICAqLwogc3RhdGljIHZvaWQgYmxraW9fdXBkYXRlX3BvbGljeV9ub2RlX2Jsa2coc3RydWN0IGJsa2lvX2Nncm91cCAqYmxrY2csCmRpZmYgLS1naXQgYS9ibG9jay9ibGstY29yZS5jIGIvYmxvY2svYmxrLWNvcmUuYwppbmRleCA3MjUwOTFkLi45MGYyMmNjIDEwMDY0NAotLS0gYS9ibG9jay9ibGstY29yZS5jCisrKyBiL2Jsb2NrL2Jsay1jb3JlLmMKQEAgLTExODQsNyArMTE4NCw3IEBACiAKIC8qCiAgKiBBdHRlbXB0cyB0byBtZXJnZSB3aXRoIHRoZSBwbHVnZ2VkIGxpc3QgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4gUmV0dXJucwotICogdHJ1ZSBpZiBtZXJnZSB3YXMgc3VjY2VzZnVsLCBvdGhlcndpc2UgZmFsc2UuCisgKiB0cnVlIGlmIG1lcmdlIHdhcyBzdWNjZXNzZnVsLCBvdGhlcndpc2UgZmFsc2UuCiAgKi8KIHN0YXRpYyBib29sIGF0dGVtcHRfcGx1Z19tZXJnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJCQkgICAgICAgc3RydWN0IGJpbyAqYmlvKQpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLXRocm90dGxlLmMgYi9ibG9jay9ibGstdGhyb3R0bGUuYwppbmRleCA2Yzk4Y2ZlLi4wNDc1YTIyIDEwMDY0NAotLS0gYS9ibG9jay9ibGstdGhyb3R0bGUuYworKysgYi9ibG9jay9ibGstdGhyb3R0bGUuYwpAQCAtOTE2LDcgKzkxNiw3IEBACiAvKgogICogRm9yIGFsbCB1cGRhdGUgZnVuY3Rpb25zLCBrZXkgc2hvdWxkIGJlIGEgdmFsaWQgcG9pbnRlciBiZWNhdXNlIHRoZXNlCiAgKiB1cGRhdGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdW5kZXIgYmxrY2dfbG9jaywgdGhhdCBtZWFucywgYmxrZyBpcwotICogdmFsaWQgYW5kIGluIHR1cm4ga2V5IGlzIHZhbGlkLiBxdWV1ZSBleGl0IHBhdGggY2FuIG5vdCByYWNlIGJlY3Vhc2UKKyAqIHZhbGlkIGFuZCBpbiB0dXJuIGtleSBpcyB2YWxpZC4gcXVldWUgZXhpdCBwYXRoIGNhbiBub3QgcmFjZSBiZWNhdXNlCiAgKiBvZiBibGtjZ19sb2NrCiAgKgogICogQ2FuIG5vdCB0YWtlIHF1ZXVlIGxvY2sgaW4gdXBkYXRlIGZ1bmN0aW9ucyBhcyBxdWV1ZSBsb2NrIHVuZGVyIGJsa2NnX2xvY2sKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmgKaW5kZXggYzhkYjM3MS4uNjEyNjM0NiAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLmgKKysrIGIvYmxvY2svYmxrLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogLyoKICAqIEVIIHRpbWVyIGFuZCBJTyBjb21wbGV0aW9uIHdpbGwgYm90aCBhdHRlbXB0IHRvICdncmFiJyB0aGUgcmVxdWVzdCwgbWFrZQotICogc3VyZSB0aGF0IG9ubHkgb25lIG9mIHRoZW0gc3VjZWVkcworICogc3VyZSB0aGF0IG9ubHkgb25lIG9mIHRoZW0gc3VjY2VlZHMKICAqLwogc3RhdGljIGlubGluZSBpbnQgYmxrX21hcmtfcnFfY29tcGxldGUoc3RydWN0IHJlcXVlc3QgKnJxKQogewpkaWZmIC0tZ2l0IGEvYmxvY2svY2ZxLWlvc2NoZWQuYyBiL2Jsb2NrL2NmcS1pb3NjaGVkLmMKaW5kZXggNzc4NTE2OS4uM2JlODgxZSAxMDA2NDQKLS0tIGEvYmxvY2svY2ZxLWlvc2NoZWQuYworKysgYi9ibG9jay9jZnEtaW9zY2hlZC5jCkBAIC04ODgsNyArODg4LDcgQEAKIAkvKgogCSAqIEN1cnJlbnRseSBwdXQgdGhlIGdyb3VwIGF0IHRoZSBlbmQuIExhdGVyIGltcGxlbWVudCBzb21ldGhpbmcKIAkgKiBzbyB0aGF0IGdyb3VwcyBnZXQgbGVzc2VyIHZ0aW1lIGJhc2VkIG9uIHRoZWlyIHdlaWdodHMsIHNvIHRoYXQKLQkgKiBpZiBncm91cCBkb2VzIG5vdCBsb29zZSBhbGwgaWYgaXQgd2FzIG5vdCBjb250aW5vdXNseSBiYWNrbG9nZ2VkLgorCSAqIGlmIGdyb3VwIGRvZXMgbm90IGxvb3NlIGFsbCBpZiBpdCB3YXMgbm90IGNvbnRpbnVvdXNseSBiYWNrbG9nZ2VkLgogCSAqLwogCW4gPSByYl9sYXN0KCZzdC0+cmIpOwogCWlmIChuKSB7CmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2VuaGQuYwppbmRleCBjOTFhMmRhLi5iMzY0YmQwIDEwMDY0NAotLS0gYS9ibG9jay9nZW5oZC5jCisrKyBiL2Jsb2NrL2dlbmhkLmMKQEAgLTczOSw3ICs3MzksNyBAQAogCiAJCS8qCiAJCSAqIERvbid0IHNob3cgZW1wdHkgZGV2aWNlcyBvciB0aGluZ3MgdGhhdCBoYXZlIGJlZW4KLQkJICogc3VycHJlc3NlZAorCQkgKiBzdXBwcmVzc2VkCiAJCSAqLwogCQlpZiAoZ2V0X2NhcGFjaXR5KGRpc2spID09IDAgfHwKIAkJICAgIChkaXNrLT5mbGFncyAmIEdFTkhEX0ZMX1NVUFBSRVNTX1BBUlRJVElPTl9JTkZPKSkKZGlmZiAtLWdpdCBhL2NyeXB0by9hbnNpX2Nwcm5nLmMgYi9jcnlwdG8vYW5zaV9jcHJuZy5jCmluZGV4IDJiYzMzMjEuLmZmYTAyNDUgMTAwNjQ0Ci0tLSBhL2NyeXB0by9hbnNpX2Nwcm5nLmMKKysrIGIvY3J5cHRvL2Fuc2lfY3BybmcuYwpAQCAtODMsNyArODMsNyBAQAogfQogLyoKICAqIFJldHVybnMgREVGQVVMVF9CTEtfU1ogYnl0ZXMgb2YgcmFuZG9tIGRhdGEgcGVyIGNhbGwKLSAqIHJldHVybnMgMCBpZiBnZW5lcmF0aW9uIHN1Y2NlZGVkLCA8MCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZworICogcmV0dXJucyAwIGlmIGdlbmVyYXRpb24gc3VjY2VlZGVkLCA8MCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZwogICovCiBzdGF0aWMgaW50IF9nZXRfbW9yZV9wcm5nX2J5dGVzKHN0cnVjdCBwcm5nX2NvbnRleHQgKmN0eCwgaW50IGNvbnRfdGVzdCkKIHsKZGlmZiAtLWdpdCBhL2NyeXB0by9hc3luY190eC9hc3luY194b3IuYyBiL2NyeXB0by9hc3luY190eC9hc3luY194b3IuYwppbmRleCAwNzlhZThjLi5iYzI4MzM3IDEwMDY0NAotLS0gYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfeG9yLmMKKysrIGIvY3J5cHRvL2FzeW5jX3R4L2FzeW5jX3hvci5jCkBAIC05NCw3ICs5NCw3IEBACiAJCWlmICh1bmxpa2VseSghdHgpKQogCQkJYXN5bmNfdHhfcXVpZXNjZSgmc3VibWl0LT5kZXBlbmRfdHgpOwogCi0JCS8qIHNwaW4gd2FpdCBmb3IgdGhlIHByZWNlZWRpbmcgdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlICovCisJCS8qIHNwaW4gd2FpdCBmb3IgdGhlIHByZWNlZGluZyB0cmFuc2FjdGlvbnMgdG8gY29tcGxldGUgKi8KIAkJd2hpbGUgKHVubGlrZWx5KCF0eCkpIHsKIAkJCWRtYV9hc3luY19pc3N1ZV9wZW5kaW5nKGNoYW4pOwogCQkJdHggPSBkbWEtPmRldmljZV9wcmVwX2RtYV94b3IoY2hhbiwgZG1hX2Rlc3QsCmRpZmYgLS1naXQgYS9jcnlwdG8vZ2YxMjhtdWwuYyBiL2NyeXB0by9nZjEyOG11bC5jCmluZGV4IGE5MGQyNjAuLmRmMzVlNGMgMTAwNjQ0Ci0tLSBhL2NyeXB0by9nZjEyOG11bC5jCisrKyBiL2NyeXB0by9nZjEyOG11bC5jCkBAIC04OSw3ICs4OSw3IEBACiB9CiAKIC8qCUdpdmVuIHRoZSB2YWx1ZSBpIGluIDAuLjI1NSBhcyB0aGUgYnl0ZSBvdmVyZmxvdyB3aGVuIGEgZmllbGQgZWxlbWVudAotICAgIGluIEdIQVNIIGlzIG11bHRpcGxlZCBieSB4XjgsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHZhbHVlcyB0aGF0CisgICAgaW4gR0hBU0ggaXMgbXVsdGlwbGllZCBieSB4XjgsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHZhbHVlcyB0aGF0CiAgICAgYXJlIGdlbmVyYXRlZCBpbiB0aGUgbG8gMTYtYml0IHdvcmQgb2YgdGhlIGZpZWxkIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZQogICAgIG1vZHVsYXIgcG9seW5vbWlhbC4gVGhlIHZhbHVlcyBsb19ieXRlIGFuZCBoaV9ieXRlIGFyZSByZXR1cm5lZCB2aWEgdGhlCiAgICAgbWFjcm8geHBfZnVuKGxvX2J5dGUsIGhpX2J5dGUpIHNvIHRoYXQgdGhlIHZhbHVlcyBjYW4gYmUgYXNzZW1ibGVkIGludG8KZGlmZiAtLWdpdCBhL2NyeXB0by92bWFjLmMgYi9jcnlwdG8vdm1hYy5jCmluZGV4IDA5OTkyNzQuLmYzNWZmOGEgMTAwNjQ0Ci0tLSBhL2NyeXB0by92bWFjLmMKKysrIGIvY3J5cHRvL3ZtYWMuYwpAQCAtOTUsNyArOTUsNyBAQAogCiAvKgogICogRm9yIGhpZ2hlc3QgcGVyZm9ybWFuY2UgdGhlIEwxIE5IIGFuZCBMMiBwb2x5bm9taWFsIGhhc2hlcyBzaG91bGQgYmUKLSAqIGNhcmVmdWxseSBpbXBsZW1lbnRlZCB0byB0YWtlIGFkdmFudGFnZSBvZiBvbmUncyB0YXJnZXQgYXJjaGl0ZWNodHVyZS4KKyAqIGNhcmVmdWxseSBpbXBsZW1lbnRlZCB0byB0YWtlIGFkdmFudGFnZSBvZiBvbmUncyB0YXJnZXQgYXJjaGl0ZWN0dXJlLgogICogSGVyZSB0aGVzZSB0d28gaGFzaCBmdW5jdGlvbnMgYXJlIGRlZmluZWQgbXVsdGlwbGUgdGltZTsgb25jZSBmb3IKICAqIDY0LWJpdCBhcmNoaXRlY3R1cmVzLCBvbmNlIGZvciAzMi1iaXQgU1NFMiBhcmNoaXRlY3R1cmVzLCBhbmQgb25jZQogICogZm9yIHRoZSByZXN0ICgzMi1iaXQpIGFyY2hpdGVjdHVyZXMuCmRpZmYgLS1naXQgYS9jcnlwdG8veHRzLmMgYi9jcnlwdG8veHRzLmMKaW5kZXggNTU1ZWNhYS4uODUxNzA1NCAxMDA2NDQKLS0tIGEvY3J5cHRvL3h0cy5jCisrKyBiL2NyeXB0by94dHMuYwpAQCAtNDUsNyArNDUsNyBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQkvKiB3ZSBuZWVkIHR3byBjaXBoZXIgaW5zdGFuY2VzOiBvbmUgdG8gY29tcHV0ZSB0aGUgaW5pdGFsICd0d2VhaycKKwkvKiB3ZSBuZWVkIHR3byBjaXBoZXIgaW5zdGFuY2VzOiBvbmUgdG8gY29tcHV0ZSB0aGUgaW5pdGlhbCAndHdlYWsnCiAJICogYnkgZW5jcnlwdGluZyB0aGUgSVYgKHVzdWFsbHkgdGhlICdwbGFpbicgaXYpIGFuZCB0aGUgb3RoZXIKIAkgKiBvbmUgdG8gZW5jcnlwdCBhbmQgZGVjcnlwdCB0aGUgZGF0YSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMgYi9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMKaW5kZXggZDFkNDg0ZC4uZjcwM2IyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jCisrKyBiL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYwpAQCAtMjQxLDcgKzI0MSw3IEBACiAJY2FzZSBDUEVSX1NFVl9GQVRBTDoKIAkJcmV0dXJuIEdIRVNfU0VWX1BBTklDOwogCWRlZmF1bHQ6Ci0JCS8qIFVua293biwgZ28gcGFuaWMgKi8KKwkJLyogVW5rbm93biwgZ28gcGFuaWMgKi8KIAkJcmV0dXJuIEdIRVNfU0VWX1BBTklDOwogCX0KIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfdGhyb3R0bGluZy5jIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl90aHJvdHRsaW5nLmMKaW5kZXggZmE4NGU5Ny4uYWQzNTAxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl90aHJvdHRsaW5nLmMKKysrIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl90aHJvdHRsaW5nLmMKQEAgLTExNjQsNyArMTE2NCw3IEBACiAJCQkgKi8KIAkJCWlmICghbWF0Y2hfcHItPmZsYWdzLnRocm90dGxpbmcpIHsKIAkJCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sCi0JCQkJCSJUaHJvdHRsaW5nIENvbnRyb2xsIGlzIHVuc3VwcG9ydGVkICIKKwkJCQkJIlRocm90dGxpbmcgQ29udHJvbCBpcyB1bnN1cHBvcnRlZCAiCiAJCQkJCSJvbiBDUFUgJWRcbiIsIGkpKTsKIAkJCQljb250aW51ZTsKIAkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS92aWRlby5jIGIvZHJpdmVycy9hY3BpL3ZpZGVvLmMKaW5kZXggMzFlOWUxMC4uZWM1NzRmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY3BpL3ZpZGVvLmMKKysrIGIvZHJpdmVycy9hY3BpL3ZpZGVvLmMKQEAgLTEzNTQsNyArMTM1NCw3IEBACiAJCXN0YXR1cyA9IGFjcGlfdmlkZW9fYnVzX2dldF9vbmVfZGV2aWNlKGRldiwgdmlkZW8pOwogCQlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgUFJFRklYCi0JCQkJCSJDYW50IGF0dGFjaCBkZXZpY2VcbiIpOworCQkJCQkiQ2FuJ3QgYXR0YWNoIGRldmljZVxuIik7CiAJCQljb250aW51ZTsKIAkJfQogCX0KQEAgLTEzNzMsNyArMTM3Myw3IEBACiAJCQkJCSAgICBhY3BpX3ZpZGVvX2RldmljZV9ub3RpZnkpOwogCWlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HIFBSRUZJWAotCQkgICAgICAgIkNhbnQgcmVtb3ZlIHZpZGVvIG5vdGlmeSBoYW5kbGVyXG4iKTsKKwkJICAgICAgICJDYW4ndCByZW1vdmUgdmlkZW8gbm90aWZ5IGhhbmRsZXJcbiIpOwogCX0KIAlpZiAoZGV2aWNlLT5iYWNrbGlnaHQpIHsKIAkJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGRldmljZS0+YmFja2xpZ2h0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW1iYS9idXMuYyBiL2RyaXZlcnMvYW1iYS9idXMuYwppbmRleCA2ZDJiYjI1Li44MjEwNDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FtYmEvYnVzLmMKKysrIGIvZHJpdmVycy9hbWJhL2J1cy5jCkBAIC03NjAsNyArNzYwLDcgQEAKIH0KIAogLyoqCi0gKglhbWJhX3JlbGVhc2VfcmVnaW9ucyAtIHJlbGVhc2UgbWVtIHJlZ2lvbnMgYXNzb2ljYXRlZCB3aXRoIGRldmljZQorICoJYW1iYV9yZWxlYXNlX3JlZ2lvbnMgLSByZWxlYXNlIG1lbSByZWdpb25zIGFzc29jaWF0ZWQgd2l0aCBkZXZpY2UKICAqCUBkZXY6IGFtYmFfZGV2aWNlIHN0cnVjdHVyZSBmb3IgZGV2aWNlCiAgKgogICoJUmVsZWFzZSByZWdpb25zIGNsYWltZWQgYnkgYSBzdWNjZXNzZnVsIGNhbGwgdG8gYW1iYV9yZXF1ZXN0X3JlZ2lvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9haGNpLmMgYi9kcml2ZXJzL2F0YS9haGNpLmMKaW5kZXggZTYyZjY5My4uMzlkODI5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYWhjaS5jCisrKyBiL2RyaXZlcnMvYXRhL2FoY2kuYwpAQCAtOTI2LDcgKzkyNiw3IEBACiAJCS8qCiAJCSAqIEFjZXIgZU1hY2hpbmVzIEc3MjUgaGFzIHRoZSBzYW1lIHByb2JsZW0uICBCSU9TCiAJCSAqIFYxLjAzIGlzIGtub3duIHRvIGJlIGJyb2tlbi4gIFYzLjA0IGlzIGtub3duIHRvCi0JCSAqIHdvcmsuICBJbmJldHdlZW4sIHRoZXJlIGFyZSBWMS4wNiwgVjIuMDYgYW5kIFYzLjAzCisJCSAqIHdvcmsuICBCZXR3ZWVuLCB0aGVyZSBhcmUgVjEuMDYsIFYyLjA2IGFuZCBWMy4wMwogCQkgKiB0aGF0IHdlIGRvbid0IGhhdmUgbXVjaCBpZGVhIGFib3V0LiAgRm9yIG5vdywKIAkJICogYmxhY2tsaXN0IGFueXRoaW5nIG9sZGVyIHRoYW4gVjMuMDQuCiAJCSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9haGNpLmggYi9kcml2ZXJzL2F0YS9haGNpLmgKaW5kZXggY2NhZjA4MS4uMzk4NjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYWhjaS5oCisrKyBiL2RyaXZlcnMvYXRhL2FoY2kuaApAQCAtMjI1LDcgKzIyNSw3IEBACiAJLyogZW1fY3RsIGJpdHMgKi8KIAlFTV9DVExfUlNUCQk9ICgxIDw8IDkpLCAvKiBSZXNldCAqLwogCUVNX0NUTF9UTQkJPSAoMSA8PCA4KSwgLyogVHJhbnNtaXQgTWVzc2FnZSAqLwotCUVNX0NUTF9NUgkJPSAoMSA8PCAwKSwgLyogTWVzc2FnZSBSZWNpZXZlZCAqLworCUVNX0NUTF9NUgkJPSAoMSA8PCAwKSwgLyogTWVzc2FnZSBSZWNlaXZlZCAqLwogCUVNX0NUTF9BTEhECQk9ICgxIDw8IDI2KSwgLyogQWN0aXZpdHkgTEVEICovCiAJRU1fQ1RMX1hNVAkJPSAoMSA8PCAyNSksIC8qIFRyYW5zbWl0IE9ubHkgKi8KIAlFTV9DVExfU01CCQk9ICgxIDw8IDI0KSwgLyogU2luZ2xlIE1lc3NhZ2UgQnVmZmVyICovCkBAIC0yODEsNyArMjgxLDcgQEAKIH07CiAKIHN0cnVjdCBhaGNpX2hvc3RfcHJpdiB7Ci0Jdm9pZCBfX2lvbWVtICoJCW1taW87CQkvKiBidXMtaW5kZXBlbmRhbnQgbWVtIG1hcCAqLworCXZvaWQgX19pb21lbSAqCQltbWlvOwkJLyogYnVzLWluZGVwZW5kZW50IG1lbSBtYXAgKi8KIAl1bnNpZ25lZCBpbnQJCWZsYWdzOwkJLyogQUhDSV9IRkxBR18qICovCiAJdTMyCQkJY2FwOwkJLyogY2FwIHRvIHVzZSAqLwogCXUzMgkJCWNhcDI7CQkvKiBjYXAyIHRvIHVzZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvYXRhX3BpaXguYyBiL2RyaXZlcnMvYXRhL2F0YV9waWl4LmMKaW5kZXggY2RlYzRhYi4uMGJjM2ZkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvYXRhX3BpaXguYworKysgYi9kcml2ZXJzL2F0YS9hdGFfcGlpeC5jCkBAIC0zOCwxNiArMzgsMTYgQEAKICAqICBIYXJkd2FyZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBhdCBodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS8KICAqCiAgKiBEb2N1bWVudGF0aW9uCi0gKglQdWJsaWNhbGx5IGF2YWlsYWJsZSBmcm9tIEludGVsIHdlYiBzaXRlLiBFcnJhdGEgZG9jdW1lbnRhdGlvbgotICogaXMgYWxzbyBwdWJsaWNhbGx5IGF2YWlsYWJsZS4gQXMgYW4gYWlkZSB0byBhbnlvbmUgaGFja2luZyBvbiB0aGlzCisgKglQdWJsaWNseSBhdmFpbGFibGUgZnJvbSBJbnRlbCB3ZWIgc2l0ZS4gRXJyYXRhIGRvY3VtZW50YXRpb24KKyAqIGlzIGFsc28gcHVibGljbHkgYXZhaWxhYmxlLiBBcyBhbiBhaWRlIHRvIGFueW9uZSBoYWNraW5nIG9uIHRoaXMKICAqIGRyaXZlciB0aGUgbGlzdCBvZiBlcnJhdGEgdGhhdCBhcmUgcmVsZXZhbnQgaXMgYmVsb3csIGdvaW5nIGJhY2sgdG8KICAqIFBJSVg0LiBPbGRlciBkZXZpY2UgZG9jdW1lbnRhdGlvbiBpcyBub3cgYSBiaXQgdHJpY2t5IHRvIGZpbmQuCiAgKgogICogVGhlIGNoaXBzZXRzIGFsbCBmb2xsb3cgdmVyeSBtdWNoIHRoZSBzYW1lIGRlc2lnbi4gVGhlIG9yaWdpbmFsIFRyaXRvbgotICogc2VyaWVzIGNoaXBzZXRzIGRvIF9ub3RfIHN1cHBvcnQgaW5kZXBlbmRhbnQgZGV2aWNlIHRpbWluZ3MsIGJ1dCB0aGlzCisgKiBzZXJpZXMgY2hpcHNldHMgZG8gX25vdF8gc3VwcG9ydCBpbmRlcGVuZGVudCBkZXZpY2UgdGltaW5ncywgYnV0IHRoaXMKICAqIGlzIGZpeGVkIGluIFRyaXRvbiBJSS4gV2l0aCB0aGUgb2RkIG1vYmlsZSBleGNlcHRpb24gdGhlIGNoaXBzIHRoZW4KICAqIGNoYW5nZSBsaXR0bGUgZXhjZXB0IGluIGdhaW5pbmcgbW9yZSBtb2RlcyB1bnRpbCBTQVRBIGFycml2ZXMuIFRoaXMKLSAqIGRyaXZlciBzdXBwb3J0cyBvbmx5IHRoZSBjaGlwcyB3aXRoIGluZGVwZW5kYW50IHRpbWluZyAodGhhdCBpcyB0aG9zZQorICogZHJpdmVyIHN1cHBvcnRzIG9ubHkgdGhlIGNoaXBzIHdpdGggaW5kZXBlbmRlbnQgdGltaW5nICh0aGF0IGlzIHRob3NlCiAgKiB3aXRoIFNJVFJFIGFuZCB0aGUgMHg0NCB0aW1pbmcgcmVnaXN0ZXIpLiBTZWUgcGF0YV9vbGRwaWl4IGFuZCBwYXRhX21waWl4CiAgKiBmb3IgdGhlIGVhcmx5IGNoaXAgZHJpdmVycy4KICAqCkBAIC0xMjIsNyArMTIyLDcgQEAKIAlQMgkJCT0gMiwgIC8qIHBvcnQgMiAqLwogCVAzCQkJPSAzLCAgLyogcG9ydCAzICovCiAJSURFCQkJPSAtMSwgLyogSURFICovCi0JTkEJCQk9IC0yLCAvKiBub3QgYXZhbGlhYmxlICovCisJTkEJCQk9IC0yLCAvKiBub3QgYXZhaWxhYmxlICovCiAJUlYJCQk9IC0zLCAvKiByZXNlcnZlZCAqLwogCiAJUElJWF9BSENJX0RFVklDRQk9IDYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jIGIvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYwppbmRleCBiOTFlMTljLi40MjNjMGE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKQEAgLTUzNDAsNyArNTM0MCw3IEBACiAgKgogICoJUmVzdW1lIEBob3N0LiAgQWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYnkgRUguICBUaGlzCiAgKglmdW5jdGlvbiByZXF1ZXN0cyBFSCB0byBwZXJmb3JtIFBNIG9wZXJhdGlvbnMgYW5kIHJldHVybnMuCi0gKglOb3RlIHRoYXQgYWxsIHJlc3VtZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgcGFyYWxsZWx5LgorICoJTm90ZSB0aGF0IGFsbCByZXN1bWUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIHBhcmFsbGVsbHkuCiAgKgogICoJTE9DS0lORzoKICAqCUtlcm5lbCB0aHJlYWQgY29udGV4dCAobWF5IHNsZWVwKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jIGIvZHJpdmVycy9hdGEvbGliYXRhLWVoLmMKaW5kZXggZGYzZjMxNC4uODhjZDIyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLWVoLmMKKysrIGIvZHJpdmVycy9hdGEvbGliYXRhLWVoLmMKQEAgLTc3MSw3ICs3NzEsNyBAQAogCQkvKiBwcm9jZXNzIHBvcnQgc3VzcGVuZCByZXF1ZXN0ICovCiAJCWF0YV9laF9oYW5kbGVfcG9ydF9zdXNwZW5kKGFwKTsKIAotCQkvKiBFeGNlcHRpb24gbWlnaHQgaGF2ZSBoYXBwZW5kIGFmdGVyIC0+ZXJyb3JfaGFuZGxlcgorCQkvKiBFeGNlcHRpb24gbWlnaHQgaGF2ZSBoYXBwZW5lZCBhZnRlciAtPmVycm9yX2hhbmRsZXIKIAkJICogcmVjb3ZlcmVkIHRoZSBwb3J0IGJ1dCBiZWZvcmUgdGhpcyBwb2ludC4gIFJlcGVhdAogCQkgKiBFSCBpbiBzdWNoIGNhc2UuCiAJCSAqLwpAQCAtMTc0Miw3ICsxNzQyLDcgQEAKICAqCiAgKglBbmFseXplIHRhc2tmaWxlIG9mIEBxYyBhbmQgZnVydGhlciBkZXRlcm1pbmUgY2F1c2Ugb2YKICAqCWZhaWx1cmUuICBUaGlzIGZ1bmN0aW9uIGFsc28gcmVxdWVzdHMgQVRBUEkgc2Vuc2UgZGF0YSBpZgotICoJYXZhbGlhYmxlLgorICoJYXZhaWxhYmxlLgogICoKICAqCUxPQ0tJTkc6CiAgKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkuCkBAIC0xODkzLDcgKzE4OTMsNyBAQAogICoJICAgb2NjdXJyZWQgZHVyaW5nIGxhc3QgNSBtaW5zLCBOQ1FfT0ZGLgogICoKICAqCTMuIElmIG1vcmUgdGhhbiA4IEFUQV9CVVMsIFRPVVRfSFNNIG9yIFVOS19ERVYgZXJyb3JzCi0gKgkgICBvY3VycmVkIGR1cmluZyBsYXN0IDUgbWlucywgRkFMTEJBQ0tfVE9fUElPCisgKgkgICBvY2N1cnJlZCBkdXJpbmcgbGFzdCA1IG1pbnMsIEZBTExCQUNLX1RPX1BJTwogICoKICAqCTQuIElmIG1vcmUgdGhhbiAzIFRPVVRfSFNNIG9yIFVOS19ERVYgZXJyb3JzIG9jY3VycmVkCiAgKgkgICBkdXJpbmcgbGFzdCAxMCBtaW5zLCBOQ1FfT0ZGLgpAQCAtMjU3Nyw3ICsyNTc3LDcgQEAKIAlpZiAobGluay0+ZmxhZ3MgJiBBVEFfTEZMQUdfTk9fU1JTVCkKIAkJc29mdHJlc2V0ID0gTlVMTDsKIAotCS8qIG1ha2Ugc3VyZSBlYWNoIHJlc2V0IGF0dGVtcCBpcyBhdCBsZWFzdCBDT09MX0RPV04gYXBhcnQgKi8KKwkvKiBtYWtlIHN1cmUgZWFjaCByZXNldCBhdHRlbXB0IGlzIGF0IGxlYXN0IENPT0xfRE9XTiBhcGFydCAqLwogCWlmIChlaGMtPmkuZmxhZ3MgJiBBVEFfRUhJX0RJRF9SRVNFVCkgewogCQlub3cgPSBqaWZmaWVzOwogCQlXQVJOX09OKHRpbWVfYWZ0ZXIoZWhjLT5sYXN0X3Jlc2V0LCBub3cpKTsKQEAgLTI3MzYsNyArMjczNiw3IEBACiAJCQlpZiAoIXJlc2V0KSB7CiAJCQkJYXRhX2xpbmtfcHJpbnRrKGxpbmssIEtFUk5fRVJSLAogCQkJCQkJImZvbGxvdy11cCBzb2Z0cmVzZXQgcmVxdWlyZWQgIgotCQkJCQkJImJ1dCBubyBzb2Z0cmVzZXQgYXZhbGlhYmxlXG4iKTsKKwkJCQkJCSJidXQgbm8gc29mdHJlc2V0IGF2YWlsYWJsZVxuIik7CiAJCQkJZmFpbGVkX2xpbmsgPSBsaW5rOwogCQkJCXJjID0gLUVJTlZBTDsKIAkJCQlnb3RvIGZhaWw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jIGIvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYwppbmRleCBhODM0MTk5Li5lMmY1N2U5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2NzaS5jCkBAIC05OTksNyArOTk5LDcgQEAKICAqCUBxYzogQ29tbWFuZCB0aGF0IHdlIGFyZSBlcnJvcmluZyBvdXQKICAqCiAgKglHZW5lcmF0ZSBzZW5zZSBibG9jayBmb3IgYSBmYWlsZWQgQVRBIGNvbW1hbmQgQHFjLiAgRGVzY3JpcHRvcgotICoJZm9ybWF0IGlzIHVzZWQgdG8gYWNjb21vZGF0ZSBMQkE0OCBibG9jayBhZGRyZXNzLgorICoJZm9ybWF0IGlzIHVzZWQgdG8gYWNjb21tb2RhdGUgTEJBNDggYmxvY2sgYWRkcmVzcy4KICAqCiAgKglMT0NLSU5HOgogICoJTm9uZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYwppbmRleCBjZjdhY2JjLi5mODM4MGNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9saWJhdGEtc2ZmLmMKKysrIGIvZHJpdmVycy9hdGEvbGliYXRhLXNmZi5jCkBAIC0yODM5LDcgKzI4MzksNyBAQAogCQlibWRtYV9zdG9wcGVkID0gdHJ1ZTsKIAogCQlpZiAodW5saWtlbHkoaG9zdF9zdGF0ICYgQVRBX0RNQV9FUlIpKSB7Ci0JCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KKwkJCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KIAkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSE9TVF9CVVM7CiAJCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOwogCQl9CkBAIC0zMDMyLDcgKzMwMzIsNyBAQAogCSAqIE9yIG1heWJlIEknbSBqdXN0IGJlaW5nIHBhcmFub2lkLgogCSAqCiAJICogRklYTUU6IFRoZSBwb3N0aW5nIG9mIHRoaXMgd3JpdGUgbWVhbnMgSS9PIHN0YXJ0cyBhcmUKLQkgKiB1bm5lY2Nlc3NhcmlseSBkZWxheWVkIGZvciBNTUlPCisJICogdW5uZWNlc3NhcmlseSBkZWxheWVkIGZvciBNTUlPCiAJICovCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChhdGFfYm1kbWFfc3RhcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9hbWQuYyBiL2RyaXZlcnMvYXRhL3BhdGFfYW1kLmMKaW5kZXggNjIwYTA3Yy4uYjA5NzVhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9hbWQuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2FtZC5jCkBAIC0xMSw3ICsxMSw3IEBACiAgKglQb3dlciBtYW5hZ2VtZW50IG9uIHBvcnRzCiAgKgogICoKLSAqICBEb2N1bWVudGF0aW9uIHB1YmxpY2FsbHkgYXZhaWxhYmxlLgorICogIERvY3VtZW50YXRpb24gcHVibGljbHkgYXZhaWxhYmxlLgogICovCiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfYXJhc2FuX2NmLmMgYi9kcml2ZXJzL2F0YS9wYXRhX2FyYXNhbl9jZi5jCmluZGV4IDY1Y2VlNzQuLjcxOWJiNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfYXJhc2FuX2NmLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9hcmFzYW5fY2YuYwpAQCAtMzg1LDcgKzM4NSw3IEBACiAJCXJldHVybiAtRVRJTUVET1VUOwogCX0KIAotCS8qIENoZWNrIGlmIFBJTyBFcnJvciBpbnRlcnJ1cHQgaGFzIG9jY3VyZWQgKi8KKwkvKiBDaGVjayBpZiBQSU8gRXJyb3IgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCAqLwogCWlmIChhY2Rldi0+ZG1hX3N0YXR1cyAmIEFUQV9ETUFfRVJSKQogCQlyZXR1cm4gLUVBR0FJTjsKIApAQCAtNDUwLDcgKzQ1MCw3IEBACiAJLyoKIAkgKiBGb3IgZWFjaCBzZzoKIAkgKiBNQVhfWEZFUl9DT1VOVCBkYXRhIHdpbGwgYmUgdHJhbnNmZXJyZWQgYmVmb3JlIHdlIGdldCB0cmFuc2ZlcgotCSAqIGNvbXBsZXRlIGludGVycnVwdC4gSW5iZXR3ZWVuIGFmdGVyIEZJRk9fU0laRSBkYXRhCisJICogY29tcGxldGUgaW50ZXJydXB0LiBCZXR3ZWVuIGFmdGVyIEZJRk9fU0laRSBkYXRhCiAJICogYnVmZmVyIGF2YWlsYWJsZSBpbnRlcnJ1cHQgd2lsbCBiZSBnZW5lcmF0ZWQuIEF0IHRoaXMgdGltZSB3ZSB3aWxsCiAJICogZmlsbCBGSUZPIGFnYWluOiBtYXggRklGT19TSVpFIGRhdGEuCiAJICovCkBAIC00NjMsNyArNDYzLDcgQEAKIAkJCQlhY2Rldi0+dmJhc2UgKyBYRkVSX0NUUik7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFjZGV2LT5ob3N0LT5sb2NrLCBmbGFncyk7CiAKLQkJLyogY29udGludWUgZG1hIHhmZXJzIHVudGlsbCBjdXJyZW50IHNnIGlzIGNvbXBsZXRlZCAqLworCQkvKiBjb250aW51ZSBkbWEgeGZlcnMgdW50aWwgY3VycmVudCBzZyBpcyBjb21wbGV0ZWQgKi8KIAkJd2hpbGUgKHhmZXJfY250KSB7CiAJCQkvKiB3YWl0IGZvciByZWFkIHRvIGNvbXBsZXRlICovCiAJCQlpZiAoIXdyaXRlKSB7CkBAIC01NjMsNyArNTYzLDcgQEAKIAogY2hhbl9yZXF1ZXN0X2ZhaWw6CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFjZGV2LT5ob3N0LT5sb2NrLCBmbGFncyk7Ci0JLyogZXJyb3Igd2hlbiB0cmFuc2ZlcmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCisJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcnJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLwogCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSE9TVF9CVVM7CiAJcWMtPmFwLT5oc21fdGFza19zdGF0ZSA9IEhTTV9TVF9FUlI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfYmY1NHguYyBiL2RyaXZlcnMvYXRhL3BhdGFfYmY1NHguYwppbmRleCBlMGI1OGI4Li5lYTY0OTY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2JmNTR4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9iZjU0eC5jCkBAIC0xMzQyLDcgKzEzNDIsNyBAQAogCQkJYXAtPm9wcy0+Ym1kbWFfc3RvcChxYyk7CiAKIAkJCWlmICh1bmxpa2VseShob3N0X3N0YXQgJiBBVEFfRE1BX0VSUikpIHsKLQkJCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KKwkJCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVycmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCiAJCQkJcWMtPmVycl9tYXNrIHw9IEFDX0VSUl9IT1NUX0JVUzsKIAkJCQlhcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9jczU1MjAuYyBiL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTIwLmMKaW5kZXggMDMwOTUyZi4uZTMyNTRmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9jczU1MjAuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX2NzNTUyMC5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogRG9jdW1lbnRhdGlvbjoKLSAqCU5vdCBwdWJsaWNhbGx5IGF2YWlsYWJsZS4KKyAqCU5vdCBwdWJsaWNseSBhdmFpbGFibGUuCiAgKi8KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfbXBpaXguYyBiL2RyaXZlcnMvYXRhL3BhdGFfbXBpaXguYwppbmRleCBiMjFmMDAyLi5kOGQ5YzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9tcGlpeC5jCkBAIC0xNSw3ICsxNSw3IEBACiAgKiB3aXRoIFBDSSBJREUgYW5kIGFsc28gdGhhdCB3ZSBkbyBub3QgZGlzYWJsZSB0aGUgZGV2aWNlIHdoZW4gb3VyIGRyaXZlciBpcwogICogdW5sb2FkZWQgKGFzIGl0IGhhcyBtYW55IG90aGVyIGZ1bmN0aW9ucykuCiAgKgotICogVGhlIGRyaXZlciBjb25jaW91c2x5IGtlZXBzIHRoaXMgbG9naWMgaW50ZXJuYWxseSB0byBhdm9pZCBwdXNoaW5nIHF1aXJreQorICogVGhlIGRyaXZlciBjb25zY2lvdXNseSBrZWVwcyB0aGlzIGxvZ2ljIGludGVybmFsbHkgdG8gYXZvaWQgcHVzaGluZyBxdWlya3kKICAqIFBBVEEgaGlzdG9yeSBpbnRvIHRoZSBjbGVhbiBsaWJhdGEgbGF5ZXIuCiAgKgogICogVGhpbmtwYWQgc3BlY2lmaWMgbm90ZTogSWYgeW91IGJvb3QgYW4gTVBJSVggdXNpbmcgYSB0aGlua3BhZCB3aXRoIGEgUENNQ0lBCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3J6MTAwMC5jIGIvZHJpdmVycy9hdGEvcGF0YV9yejEwMDAuYwppbmRleCA0YTQ1NGE4Li40ZDA0NDcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3J6MTAwMC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfcnoxMDAwLmMKQEAgLTExMiw3ICsxMTIsNyBAQAogCWlmIChyYykKIAkJcmV0dXJuIHJjOwogCi0JLyogSWYgdGhpcyBmYWlscyBvbiByZXN1bWUgKHdoaWNoIGlzIGEgImNhbnQgaGFwcGVuIiBjYXNlKSwgd2UKKwkvKiBJZiB0aGlzIGZhaWxzIG9uIHJlc3VtZSAod2hpY2ggaXMgYSAiY2FuJ3QgaGFwcGVuIiBjYXNlKSwgd2UKIAkgICBtdXN0IHN0b3AgYXMgYW55IHByb2dyZXNzIHJpc2tzIGRhdGEgbG9zcyAqLwogCWlmIChyejEwMDBfZmlmb19kaXNhYmxlKHBkZXYpKQogCQlwYW5pYygicnoxMDAwIGZpZm8iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfc2lsNjgwLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jCmluZGV4IDAwZWVmYmQuLjExODc4N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfc2lsNjgwLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYwpAQCAtMTEsNyArMTEsNyBAQAogICoKICAqICBNYXkgYmUgY29waWVkIG9yIG1vZGlmaWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAqCi0gKiAgRG9jdW1lbnRhdGlvbiBwdWJsaWNhbGx5IGF2YWlsYWJsZS4KKyAqICBEb2N1bWVudGF0aW9uIHB1YmxpY2x5IGF2YWlsYWJsZS4KICAqCiAgKglJZiB5b3UgaGF2ZSBzdHJhbmdlIHByb2JsZW1zIHdpdGggblZpZGlhIGNoaXBzZXQgc3lzdGVtcyBwbGVhc2UKICAqCXNlZSB0aGUgU0kgc3VwcG9ydCBkb2N1bWVudGF0aW9uIGFuZCB1cGRhdGUgeW91ciBzeXN0ZW0gQklPUwpAQCAtNDMsNyArNDMsNyBAQAogICoKICAqCVR1cm4gYSBjb25maWcgcmVnaXN0ZXIgb2Zmc2V0IGludG8gdGhlIHJpZ2h0IGFkZHJlc3MgaW4gZWl0aGVyCiAgKglQQ0kgc3BhY2Ugb3IgTU1JTyBzcGFjZSB0byBhY2Nlc3MgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgaW4gcXVlc3Rpb24KLSAqCVRoYW5rZnVsbHkgdGhpcyBpcyBhIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uIHNvIGlzbnQgcGVyZm9ybWFuY2UKKyAqCVRoYW5rZnVsbHkgdGhpcyBpcyBhIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uIHNvIGlzbid0IHBlcmZvcm1hbmNlCiAgKgljcml0aWNpYWwuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9zaXMuYyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lzLmMKaW5kZXggYzA0YWJjMy4uYmUwOGZmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9zaXMuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3Npcy5jCkBAIC0zMzEsNyArMzMxLDcgQEAKIAogCWlmIChhZGV2LT5kbWFfbW9kZSA8IFhGRVJfVURNQV8wKSB7CiAJCS8qIGJpdHMgMy0wIGhvbGQgcmVjb3ZlcnkgdGltaW5nIGJpdHMgOC0xMCBhY3RpdmUgdGltaW5nIGFuZAotCQkgICB0aGUgaGlnaGVyIGJpdHMgYXJlIGRlcGVuZGFudCBvbiB0aGUgZGV2aWNlICovCisJCSAgIHRoZSBoaWdoZXIgYml0cyBhcmUgZGVwZW5kZW50IG9uIHRoZSBkZXZpY2UgKi8KIAkJdGltaW5nICY9IH4weDg3MEY7CiAJCXRpbWluZyB8PSBtd2RtYV9iaXRzW3NwZWVkXTsKIAl9IGVsc2UgewpAQCAtMzcxLDcgKzM3MSw3IEBACiAKIAlpZiAoYWRldi0+ZG1hX21vZGUgPCBYRkVSX1VETUFfMCkgewogCQkvKiBiaXRzIDMtMCBob2xkIHJlY292ZXJ5IHRpbWluZyBiaXRzIDgtMTAgYWN0aXZlIHRpbWluZyBhbmQKLQkJICAgdGhlIGhpZ2hlciBiaXRzIGFyZSBkZXBlbmRhbnQgb24gdGhlIGRldmljZSwgYml0IDE1IHVkbWEgKi8KKwkJICAgdGhlIGhpZ2hlciBiaXRzIGFyZSBkZXBlbmRlbnQgb24gdGhlIGRldmljZSwgYml0IDE1IHVkbWEgKi8KIAkJdGltaW5nICY9IH4weDg3MEY7CiAJCXRpbWluZyB8PSBtd2RtYV9iaXRzW3NwZWVkXTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV90cmlmbGV4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX3RyaWZsZXguYwppbmRleCAwZDFmODllLi4wM2I2ZDY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3RyaWZsZXguYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3RyaWZsZXguYwpAQCAtMzAsNyArMzAsNyBAQAogICogTG9vc2VseSBiYXNlZCBvbiB0aGUgcGlpeCAmIHN2d2tzIGRyaXZlcnMuCiAgKgogICogRG9jdW1lbnRhdGlvbjoKLSAqCU5vdCBwdWJsaWNhbGx5IGF2YWlsYWJsZS4KKyAqCU5vdCBwdWJsaWNseSBhdmFpbGFibGUuCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvc2F0YV9mc2wuYyBiL2RyaXZlcnMvYXRhL3NhdGFfZnNsLmMKaW5kZXggMGY5MWU1OC4uMzVhNzFkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0YV9mc2wuYworKysgYi9kcml2ZXJzL2F0YS9zYXRhX2ZzbC5jCkBAIC00Miw3ICs0Miw3IEBACiAKIAkvKgogCSAqIFNBVEEtRlNMIGhvc3QgY29udHJvbGxlciBzdXBwb3J0cyBhIG1heC4gb2YgKDE1KzEpIGRpcmVjdCBQUkRFcywgYW5kCi0JICogY2hhaW5lZCBpbmRpcmVjdCBQUkRFcyB1cHRvIGEgbWF4IGNvdW50IG9mIDYzLgorCSAqIGNoYWluZWQgaW5kaXJlY3QgUFJERXMgdXAgdG8gYSBtYXggY291bnQgb2YgNjMuCiAJICogV2UgYXJlIGFsbG9jYXRpbmcgYW4gYXJyYXkgb2YgNjMgUFJERXMgY29udGlndW91c2x5LCBidXQgUFJERSMxNSB3aWxsCiAJICogYmUgc2V0dXAgYXMgYW4gaW5kaXJlY3QgZGVzY3JpcHRvciwgcG9pbnRpbmcgdG8gaXQncyBuZXh0CiAJICogKGNvbnRpZ3VvdXMpIFBSREUuIFRob3VnaCBjaGFpbmVkIGluZGlyZWN0IFBSREUgYXJyYXlzIGFyZQpAQCAtOTA3LDcgKzkwNyw3IEBACiAJYXRhX21zbGVlcChhcCwgMSk7CiAKIAkvKgotCSAqIFNBVEEgZGV2aWNlIGVudGVycyByZXNldCBzdGF0ZSBhZnRlciByZWNldmluZyBhIENvbnRyb2wgcmVnaXN0ZXIKKwkgKiBTQVRBIGRldmljZSBlbnRlcnMgcmVzZXQgc3RhdGUgYWZ0ZXIgcmVjZWl2aW5nIGEgQ29udHJvbCByZWdpc3RlcgogCSAqIEZJUyB3aXRoIFNSU1QgYml0IGFzc2VydGVkIGFuZCBpdCBhd2FpdHMgYW5vdGhlciBIMkQgQ29udHJvbCByZWcuCiAJICogRklTIHdpdGggU1JTVCBiaXQgY2xlYXJlZCwgdGhlbiB0aGUgZGV2aWNlIGRvZXMgaW50ZXJuYWwgZGlhZ3MgJgogCSAqIGluaXRpYWxpemF0aW9uLCBmb2xsb3dlZCBieSBpbmRpY2F0aW5nIGl0J3MgaW5pdGlhbGl6YXRpb24gc3RhdHVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX212LmMgYi9kcml2ZXJzL2F0YS9zYXRhX212LmMKaW5kZXggY2Q0MDY1MS4uYjUyYzA1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0YV9tdi5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfbXYuYwpAQCAtMTM1Miw3ICsxMzUyLDcgQEAKIAkJCS8qCiAJCQkgKiBXb3JrYXJvdW5kIGZvciA4OFNYNjB4MSBGRXIgU0FUQSMyNjoKIAkJCSAqCi0JCQkgKiBDT01SRVNFVHMgaGF2ZSB0byB0YWtlIGNhcmUgbm90IHRvIGFjY2lkZW50bHkKKwkJCSAqIENPTVJFU0VUcyBoYXZlIHRvIHRha2UgY2FyZSBub3QgdG8gYWNjaWRlbnRhbGx5CiAJCQkgKiBwdXQgdGhlIGRyaXZlIHRvIHNsZWVwIHdoZW4gd3JpdGluZyBTQ1JfQ09OVFJPTC4KIAkJCSAqIFNldHRpbmcgYml0cyAxMi4uMTUgcHJldmVudHMgdGhpcyBwcm9ibGVtLgogCQkJICoKQEAgLTIwNDQsNyArMjA0NCw3IEBACiAKIAljdyA9ICZwcC0+Y3JxYltpbl9pbmRleF0uYXRhX2NtZFswXTsKIAotCS8qIFNhZGx5LCB0aGUgQ1JRQiBjYW5ub3QgYWNjb21vZGF0ZSBhbGwgcmVnaXN0ZXJzLS10aGVyZSBhcmUKKwkvKiBTYWRseSwgdGhlIENSUUIgY2Fubm90IGFjY29tbW9kYXRlIGFsbCByZWdpc3RlcnMtLXRoZXJlIGFyZQogCSAqIG9ubHkgMTEgYnl0ZXMuLi5zbyB3ZSBtdXN0IHBpY2sgYW5kIGNob29zZSByZXF1aXJlZAogCSAqIHJlZ2lzdGVycyBiYXNlZCBvbiB0aGUgY29tbWFuZC4gIFNvLCB3ZSBkcm9wIGZlYXR1cmUgYW5kCiAJICogaG9iX2ZlYXR1cmUgZm9yIFtSV10gRE1BIGNvbW1hbmRzLCBidXQgdGhleSBhcmUgbmVlZGVkIGZvcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvc2F0YV9udi5jIGIvZHJpdmVycy9hdGEvc2F0YV9udi5jCmluZGV4IDQyMzQ0ZTMuLmYxNzNlZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfbnYuYworKysgYi9kcml2ZXJzL2F0YS9zYXRhX252LmMKQEAgLTIxMjEsNyArMjEyMSw3IEBACiAKIAlob3N0X3N0YXQgPSBhcC0+b3BzLT5ibWRtYV9zdGF0dXMoYXApOwogCWlmICh1bmxpa2VseShob3N0X3N0YXQgJiBBVEFfRE1BX0VSUikpIHsKLQkJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCisJCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KIAkJYXRhX2VoaV9jbGVhcl9kZXNjKGVoaSk7CiAJCWF0YV9laGlfcHVzaF9kZXNjKGVoaSwgIkJNRE1BIHN0YXQgMHgleCIsIGhvc3Rfc3RhdCk7CiAJCWVoaS0+ZXJyX21hc2sgfD0gQUNfRVJSX0hPU1RfQlVTOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvc2F0YV92aWEuYyBiL2RyaXZlcnMvYXRhL3NhdGFfdmlhLmMKaW5kZXggMjEyNDJjNS4uNTQ0MzRkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvc2F0YV92aWEuYworKysgYi9kcml2ZXJzL2F0YS9zYXRhX3ZpYS5jCkBAIC01ODIsNyArNTgyLDcgQEAKIAkgKiBXaGVuIGhvc3QgaXNzdWVzIEhPTEQsIGRldmljZSBtYXkgc2VuZCB1cCB0byAyMERXIG9mIGRhdGEKIAkgKiBiZWZvcmUgYWNrbm93bGVkZ2luZyBpdCB3aXRoIEhPTERBIGFuZCB0aGUgaG9zdCBzaG91bGQgYmUKIAkgKiBhYmxlIHRvIGJ1ZmZlciB0aGVtIGluIEZJRk8uICBVbmZvcnR1bmF0ZWx5LCBzb21lIFdEIGRyaXZlcwotCSAqIHNlbmQgdXB0byA0MERXIGJlZm9yZSBhY2tub3dsZWRnaW5nIEhPTEQgYW5kLCBpbiB0aGUKKwkgKiBzZW5kIHVwIHRvIDQwRFcgYmVmb3JlIGFja25vd2xlZGdpbmcgSE9MRCBhbmQsIGluIHRoZQogCSAqIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgdGhpcyBlbmRzIHVwIG92ZXJmbG93aW5nIHZ0NjQyMSdzCiAJICogRklGTywgbWFraW5nIHRoZSBjb250cm9sbGVyIGFib3J0IHRoZSB0cmFuc2FjdGlvbiB3aXRoCiAJICogUl9FUlIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9hbWJhc3NhZG9yLmMgYi9kcml2ZXJzL2F0bS9hbWJhc3NhZG9yLmMKaW5kZXggOWY0N2U4Ni4uYTVmY2IxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vYW1iYXNzYWRvci5jCisrKyBiL2RyaXZlcnMvYXRtL2FtYmFzc2Fkb3IuYwpAQCAtNDk3LDcgKzQ5Nyw3IEBACiAJICAvLyBWQyBsYXllciBzdGF0cwogCSAgYXRvbWljX2luYygmYXRtX3ZjYy0+c3RhdHMtPnJ4KTsKIAkgIF9fbmV0X3RpbWVzdGFtcChza2IpOwotCSAgLy8gZW5kIG9mIG91ciByZXNwb25zYWJpbGl0eQorCSAgLy8gZW5kIG9mIG91ciByZXNwb25zaWJpbGl0eQogCSAgYXRtX3ZjYy0+cHVzaCAoYXRtX3ZjYywgc2tiKTsKIAkgIHJldHVybjsKIAkgIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vZmlyZXN0cmVhbS5jIGIvZHJpdmVycy9hdG0vZmlyZXN0cmVhbS5jCmluZGV4IDA0OTY1MGQuLmVmN2E2NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2ZpcmVzdHJlYW0uYworKysgYi9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMKQEAgLTE3ODIsNyArMTc4Miw3IEBACiAJCXdyaXRlX2ZzIChkZXYsIFJBUzAsIFJBUzBfRENEX1hITFQgCiAJCQkgIHwgKCgoMSA8PCBGUzE1NV9WUElfQklUUykgLSAxKSAqIFJBUzBfVlBTRUwpCiAJCQkgIHwgKCgoMSA8PCBGUzE1NV9WQ0lfQklUUykgLSAxKSAqIFJBUzBfVkNTRUwpKTsKLQkJLyogV2UgY2FuIGNob3NlIHRoZSBzcGxpdCBhcmJpdGFyaWx5LiBXZSBtaWdodCBiZSBhYmxlIHRvIAorCQkvKiBXZSBjYW4gY2hvc2UgdGhlIHNwbGl0IGFyYml0cmFyaWx5LiBXZSBtaWdodCBiZSBhYmxlIHRvIAogCQkgICBzdXBwb3J0IG1vcmUuIFdoYXRldmVyLiBUaGlzIHNob3VsZCBkbyBmb3Igbm93LiAqLwogCQlkZXYtPmF0bV9kZXYtPmNpX3JhbmdlLnZwaV9iaXRzID0gRlMxNTVfVlBJX0JJVFM7CiAJCWRldi0+YXRtX2Rldi0+Y2lfcmFuZ2UudmNpX2JpdHMgPSBGUzE1NV9WQ0lfQklUUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmggYi9kcml2ZXJzL2F0bS9mb3JlMjAwZS5oCmluZGV4IDdmOTdjMDkuLmJhMzRhMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmgKKysrIGIvZHJpdmVycy9hdG0vZm9yZTIwMGUuaApAQCAtMjYzLDcgKzI2Myw3IEBACiB9IG9wY29kZV90OwogCiAKLS8qIHZpcnR1YWwgcGF0aCAvIHZpcnR1YWwgY2hhbm5lbCBpZGVudGlmZXJzICovCisvKiB2aXJ0dWFsIHBhdGggLyB2aXJ0dWFsIGNoYW5uZWwgaWRlbnRpZmllcnMgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgdnB2YyB7CiAgICAgQklURklFTEQzKApAQCAtOTI2LDcgKzkyNiw3IEBACiAKICNkZWZpbmUgUENBMjAwRV9QQ0lfTEFURU5DWSAgICAgIDB4NDAgICAgLyogbWF4aW11bSBzbGF2ZSBsYXRlbnR5ICAgICAgICAgICAgKi8KICNkZWZpbmUgUENBMjAwRV9QQ0lfTUFTVEVSX0NUUkwgIDB4NDEgICAgLyogbWFzdGVyIGNvbnRyb2wgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgUENBMjAwRV9QQ0lfVEhSRVNIT0xEICAgIDB4NDIgICAgLyogYnVyc3QgLyBjb250aW5vdXMgcmVxIHRocmVzaG9sZCAgKi8KKyNkZWZpbmUgUENBMjAwRV9QQ0lfVEhSRVNIT0xEICAgIDB4NDIgICAgLyogYnVyc3QgLyBjb250aW51b3VzIHJlcSB0aHJlc2hvbGQgICovCiAKIC8qIFBCSSBtYXN0ZXIgY29udHJvbCByZWdpc3RlciAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9ob3Jpem9uLmMgYi9kcml2ZXJzL2F0bS9ob3Jpem9uLmMKaW5kZXggMjQ3NjFlMS4uZDU4ZTNmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vaG9yaXpvbi5jCisrKyBiL2RyaXZlcnMvYXRtL2hvcml6b24uYwpAQCAtMTY5LDEzICsxNjksMTMgQEAKICAgUmVhbCBUaW1lIChjZHYgYW5kIG1heCBDRFQgZ2l2ZW4pCiAgIAogICBDQlIocGNyKSAgICAgICAgICAgICBwY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUKLSAgcnRWQlIocGNyLHNjcixtYnMpICAgc2NyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlLCB1cHRvIHBjciBhdCBtYnMgdG9vCisgIHJ0VkJSKHBjcixzY3IsbWJzKSAgIHNjciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZSwgdXAgdG8gcGNyIGF0IG1icyB0b28KICAgCiAgIE5vbiBSZWFsIFRpbWUKICAgCi0gIG5ydFZCUihwY3Isc2NyLG1icykgIHNjciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZSwgdXB0byBwY3IgYXQgbWJzIHRvbworICBucnRWQlIocGNyLHNjcixtYnMpICBzY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUsIHVwIHRvIHBjciBhdCBtYnMgdG9vCiAgIFVCUigpCi0gIEFCUihtY3IscGNyKSAgICAgICAgIG1jciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZSwgdXB0byBwY3IgKGRlcGVuZGluZykgdG9vCisgIEFCUihtY3IscGNyKSAgICAgICAgIG1jciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZSwgdXAgdG8gcGNyIChkZXBlbmRpbmcpIHRvbwogICAKICAgbWJzIGlzIG1heCBidXJzdCBzaXplIChidWNrZXQpCiAgIHBjciBhbmQgc2NyIGhhdmUgYXNzb2NpYXRlZCBjZHZ0IHZhbHVlcwpAQCAtOTQ0LDcgKzk0NCw3IEBACiAvLyB0byBiZSBmaXhlZCBzb29uLCBzbyBkbyBub3QgZGVmaW5lIFRBSUxSRUNVU1JJT05XT1JLUyB1bmxlc3MgeW91CiAvLyBhcmUgc3VyZSBpdCBkb2VzIGFzIHlvdSBtYXkgb3RoZXJ3aXNlIG92ZXJmbG93IHRoZSBrZXJuZWwgc3RhY2suCiAKLS8vIGdpdmluZyB0aGlzIGZuIGEgcmV0dXJuIHZhbHVlIHdvdWxkIGhlbHAgR0NDLCBhbGxlZGdlZGx5CisvLyBnaXZpbmcgdGhpcyBmbiBhIHJldHVybiB2YWx1ZSB3b3VsZCBoZWxwIEdDQywgYWxsZWdlZGx5CiAKIHN0YXRpYyB2b2lkIHJ4X3NjaGVkdWxlIChocnpfZGV2ICogZGV2LCBpbnQgaXJxKSB7CiAgIHVuc2lnbmVkIGludCByeF9ieXRlczsKQEAgLTEwMzYsNyArMTAzNiw3IEBACiAJICAvLyBWQyBsYXllciBzdGF0cwogCSAgYXRvbWljX2luYygmdmNjLT5zdGF0cy0+cngpOwogCSAgX19uZXRfdGltZXN0YW1wKHNrYik7Ci0JICAvLyBlbmQgb2Ygb3VyIHJlc3BvbnNhYmlsaXR5CisJICAvLyBlbmQgb2Ygb3VyIHJlc3BvbnNpYmlsaXR5CiAJICB2Y2MtPnB1c2ggKHZjYywgc2tiKTsKIAl9CiAgICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5jIGIvZHJpdmVycy9hdG0vaWR0NzcyNTIuYwppbmRleCBiZmI3ZmVlLi4wNDhmOTlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5jCisrKyBiL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmMKQEAgLTM0OTUsNyArMzQ5NSw3IEBACiAJCXJldHVybiAtMTsKIAl9CiAJaWYgKGRldi0+cGh5LT5pb2N0bCA9PSBOVUxMKSB7Ci0JCXByaW50aygiJXM6IExUIGhhZCBubyBJT0NUTCBmdW50aW9uIGRlZmluZWQuXG4iLCBjYXJkLT5uYW1lKTsKKwkJcHJpbnRrKCIlczogTFQgaGFkIG5vIElPQ1RMIGZ1bmN0aW9uIGRlZmluZWQuXG4iLCBjYXJkLT5uYW1lKTsKIAkJZGVpbml0X2NhcmQoY2FyZCk7CiAJCXJldHVybiAtMTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5oIGIvZHJpdmVycy9hdG0vaWR0NzcyNTIuaAppbmRleCBmNTNhNDNhLi4zYTgyY2MyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5oCisrKyBiL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmgKQEAgLTc2Niw3ICs3NjYsNyBAQAogI2RlZmluZSBTQVJfUkNURV9CVUZGU1RBVF9NQVNLIDB4MDAwMDMwMDAgIC8qIGJ1ZmZlciBzdGF0dXMgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBTQVJfUkNURV9FRkNJICAgICAgICAgIDB4MDAwMDA4MDAgIC8qIEVGQ0kgQ29uZ2VzdGlvbiBmbGFnICAgICAgICAgICAqLwogI2RlZmluZSBTQVJfUkNURV9DTFAgICAgICAgICAgIDB4MDAwMDA0MDAgIC8qIENlbGwgTG9zcyBQcmlvcml0eSBmbGFnICAgICAgICAqLwotI2RlZmluZSBTQVJfUkNURV9DUkMgICAgICAgICAgIDB4MDAwMDAyMDAgIC8qIFJlY2lldmVkIENSQyBFcnJvciAgICAgICAgICAgICAqLworI2RlZmluZSBTQVJfUkNURV9DUkMgICAgICAgICAgIDB4MDAwMDAyMDAgIC8qIFJlY2VpdmVkIENSQyBFcnJvciAgICAgICAgICAgICAqLwogI2RlZmluZSBTQVJfUkNURV9DRUxMQ05UX01BU0sgIDB4MDAwMDAxRkYgIC8qIGNlbGwgQ291bnQgICAgICAgICAgICAgICAgICAgICAqLwogCiAjZGVmaW5lIFNBUl9SQ1RFX0FBTDAgICAgICAgICAgMHgwMDAwMDAwMCAgLyogQUFMIHR5cGVzIGZvciBBTEwgZmllbGQgICAgICAgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9pcGhhc2UuYyBiL2RyaXZlcnMvYXRtL2lwaGFzZS5jCmluZGV4IGQ4MGQ1MWIuLjFjNjc0YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2lwaGFzZS5jCisrKyBiL2RyaXZlcnMvYXRtL2lwaGFzZS5jCkBAIC0xMDI1LDcgKzEwMjUsNyBAQAogfSAKICAgCiAgIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWNpZXZpbmcgc2lkZSBzdHVmZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVjZWl2aW5nIHNpZGUgc3R1ZmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgCiAgCiBzdGF0aWMgdm9pZCByeF9leGNwX3JjdmQoc3RydWN0IGF0bV9kZXYgKmRldikgIAogeyAgCkBAIC0xMTk1LDcgKzExOTUsNyBAQAogICBpZiAoc3RhdHVzICYgUlhfUEtUX1JDVkQpICAKICAgeyAgCiAJLyogZG8gc29tZXRoaW5nICovICAKLQkvKiBCYXNpY2FsbHkgcmVjdmQgYW4gaW50ZXJydXB0IGZvciByZWNldmluZyBhIHBhY2tldC4gIAorCS8qIEJhc2ljYWxseSByZWN2ZCBhbiBpbnRlcnJ1cHQgZm9yIHJlY2VpdmluZyBhIHBhY2tldC4gIAogCUEgZGVzY3JpcHRvciB3b3VsZCBoYXZlIGJlZW4gd3JpdHRlbiB0byB0aGUgcGFja2V0IGNvbXBsZXRlICAgCiAJcXVldWUuIEdldCBhbGwgdGhlIGRlc2NyaXB0b3JzIGFuZCBzZXQgdXAgZG1hIHRvIG1vdmUgdGhlICAgCiAJcGFja2V0cyB0aWxsIHRoZSBwYWNrZXQgY29tcGxldGUgcXVldWUgaXMgZW1wdHkuLiAgCkBAIC0xODU1LDcgKzE4NTUsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsgCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh2Y2MtPnFvcy50eHRwLm1heF9wY3IgPiBpYWRldi0+TGluZVJhdGUpIHsKLSAgICAgICAgICAgICAgICAgICBJRl9DQlIocHJpbnRrKCJQQ1IgaXMgbm90IGF2YWlsYmxlXG4iKTspCisgICAgICAgICAgICAgICAgICAgSUZfQ0JSKHByaW50aygiUENSIGlzIG5vdCBhdmFpbGFibGVcbiIpOykKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHZjLT50eXBlID0gQ0JSOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vbGFuYWkuYyBiL2RyaXZlcnMvYXRtL2xhbmFpLmMKaW5kZXggNTI4ODBjOC4uNGU4YmE1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vbGFuYWkuYworKysgYi9kcml2ZXJzL2F0bS9sYW5haS5jCkBAIC0xMjU1LDcgKzEyNTUsNyBAQAogCS8qCiAJICogU2luY2UgdGhlICJidXR0IHJlZ2lzdGVyIiBpcyBhIHNoYXJlZCByZXNvdW5jZSBvbiB0aGUgY2FyZCB3ZQogCSAqIHNlcmlhbGl6ZSBhbGwgYWNjZXNzZXMgdG8gaXQgdGhyb3VnaCB0aGlzIHNwaW5sb2NrLiAgVGhpcyBpcwotCSAqIG1vc3RseSBqdXN0IHBhcmFub2lhIHNpY25lIHRoZSByZWdpc3RlciBpcyByYXJlbHkgImJ1c3kiIGFueXdheQorCSAqIG1vc3RseSBqdXN0IHBhcmFub2lhIHNpbmNlIHRoZSByZWdpc3RlciBpcyByYXJlbHkgImJ1c3kiIGFueXdheQogCSAqIGJ1dCBpcyBuZWVkZWQgZm9yIGNvcnJlY3RuZXNzLgogCSAqLwogCXNwaW5fbG9jaygmbGFuYWktPmVuZHR4bG9jayk7CkBAIC0xOTkwLDcgKzE5OTAsNyBAQAogCiAvKgogICogV2UgX2Nhbl8gdXNlIFZDST09MCBmb3Igbm9ybWFsIHRyYWZmaWMsIGJ1dCBvbmx5IGZvciBVQlIgKG9yIHdlJ2xsCi0gKiBnZXQgYSBDQlJaRVJPIGludGVycnVwdCksIGFuZCB3ZSBjYW4gdXNlIGl0IG9ubHkgaWYgbm9vbmUgaXMgcmVjZWl2aW5nCisgKiBnZXQgYSBDQlJaRVJPIGludGVycnVwdCksIGFuZCB3ZSBjYW4gdXNlIGl0IG9ubHkgaWYgbm8gb25lIGlzIHJlY2VpdmluZwogICogQUFMMCB0cmFmZmljIChzaW5jZSB0aGV5IHdpbGwgdXNlIHRoZSBzYW1lIHF1ZXVlKSAtIGFjY29yZGluZyB0byB0aGUKICAqIGRvY3Mgd2Ugc2hvdWxkbid0IGV2ZW4gdXNlIGl0IGZvciBBQUwwIHRyYWZmaWMKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdXhkaXNwbGF5L2NmYWcxMjg2NGIuYyBiL2RyaXZlcnMvYXV4ZGlzcGxheS9jZmFnMTI4NjRiLmMKaW5kZXggNDk3NTg1OS4uNDFjZTRiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdXhkaXNwbGF5L2NmYWcxMjg2NGIuYworKysgYi9kcml2ZXJzL2F1eGRpc3BsYXkvY2ZhZzEyODY0Yi5jCkBAIC00OSw3ICs0OSw3IEBACiBzdGF0aWMgdW5zaWduZWQgaW50IGNmYWcxMjg2NGJfcmF0ZSA9IENPTkZJR19DRkFHMTI4NjRCX1JBVEU7CiBtb2R1bGVfcGFyYW0oY2ZhZzEyODY0Yl9yYXRlLCB1aW50LCBTX0lSVUdPKTsKIE1PRFVMRV9QQVJNX0RFU0MoY2ZhZzEyODY0Yl9yYXRlLAotCSJSZWZyZXNoIHJhdGUgKGhlcnR6cykiKTsKKwkiUmVmcmVzaCByYXRlIChoZXJ0eikiKTsKIAogdW5zaWduZWQgaW50IGNmYWcxMjg2NGJfZ2V0cmF0ZSh2b2lkKQogewpAQCAtNjAsNyArNjAsNyBAQAogICogY2ZhZzEyODY0YiBDb21tYW5kcwogICoKICAqCUUgPSBFbmFibGUgc2lnbmFsCi0gKgkJRXZlcnl0aW1lIEUgc3dpdGNoIGZyb20gbG93IHRvIGhpZ2gsCisgKgkJRXZlcnkgdGltZSBFIHN3aXRjaCBmcm9tIGxvdyB0byBoaWdoLAogICoJCWNmYWcxMjg2NGIva3MwMTA4IHJlYWRzIHRoZSBjb21tYW5kL2RhdGEuCiAgKgogICoJQ1MxID0gRmlyc3Qga3MwMTA4Y29udHJvbGxlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9wb3dlci9ydW50aW1lLmMgYi9kcml2ZXJzL2Jhc2UvcG93ZXIvcnVudGltZS5jCmluZGV4IDU0NTk3YzguLjMxNzJjNjBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvcG93ZXIvcnVudGltZS5jCisrKyBiL2RyaXZlcnMvYmFzZS9wb3dlci9ydW50aW1lLmMKQEAgLTQ0Myw3ICs0NDMsNyBAQAogICoKICAqIENoZWNrIGlmIHRoZSBkZXZpY2UncyBydW4tdGltZSBQTSBzdGF0dXMgYWxsb3dzIGl0IHRvIGJlIHJlc3VtZWQuICBDYW5jZWwKICAqIGFueSBzY2hlZHVsZWQgb3IgcGVuZGluZyByZXF1ZXN0cy4gIElmIGFub3RoZXIgcmVzdW1lIGhhcyBiZWVuIHN0YXJ0ZWQKLSAqIGVhcmxpZXIsIGVpdGhlciByZXR1cm4gaW1lZGlhdGVseSBvciB3YWl0IGZvciBpdCB0byBmaW5pc2gsIGRlcGVuZGluZyBvbiB0aGUKKyAqIGVhcmxpZXIsIGVpdGhlciByZXR1cm4gaW1tZWRpYXRlbHkgb3Igd2FpdCBmb3IgaXQgdG8gZmluaXNoLCBkZXBlbmRpbmcgb24gdGhlCiAgKiBSUE1fTk9XQUlUIGFuZCBSUE1fQVNZTkMgZmxhZ3MuICBTaW1pbGFybHksIGlmIHRoZXJlJ3MgYSBzdXNwZW5kIHJ1bm5pbmcgaW4KICAqIHBhcmFsbGVsIHdpdGggdGhpcyBmdW5jdGlvbiwgZWl0aGVyIHRlbGwgdGhlIG90aGVyIHByb2Nlc3MgdG8gcmVzdW1lIGFmdGVyCiAgKiBzdXNwZW5kaW5nIChkZWZlcnJlZF9yZXN1bWUpIG9yIHdhaXQgZm9yIGl0IHRvIGZpbmlzaC4gIElmIHRoZSBSUE1fQVNZTkMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9zeXMuYyBiL2RyaXZlcnMvYmFzZS9zeXMuYwppbmRleCBmYmU3MmRhLi5hY2RlOWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2Uvc3lzLmMKKysrIGIvZHJpdmVycy9iYXNlL3N5cy5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIH0KIAogLyoqCi0gKglzeXNkZXZfZHJpdmVyX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYXV4aWxsYXJ5IGRyaXZlcgorICoJc3lzZGV2X2RyaXZlcl9yZWdpc3RlciAtIFJlZ2lzdGVyIGF1eGlsaWFyeSBkcml2ZXIKICAqCUBjbHM6CURldmljZSBjbGFzcyBkcml2ZXIgYmVsb25ncyB0by4KICAqCUBkcnY6CURyaXZlci4KICAqCkBAIC0yNTAsNyArMjUwLDcgQEAKIH0KIAogLyoqCi0gKglzeXNkZXZfZHJpdmVyX3VucmVnaXN0ZXIgLSBSZW1vdmUgYW4gYXV4aWxsYXJ5IGRyaXZlci4KKyAqCXN5c2Rldl9kcml2ZXJfdW5yZWdpc3RlciAtIFJlbW92ZSBhbiBhdXhpbGlhcnkgZHJpdmVyLgogICoJQGNsczoJQ2xhc3MgZHJpdmVyIGJlbG9uZ3MgdG8uCiAgKglAZHJ2OglEcml2ZXIuCiAgKi8KQEAgLTMwMiw3ICszMDIsNyBAQAogCQkgKiBjb2RlIHRoYXQgc2hvdWxkIGhhdmUgY2FsbGVkIHVzLgogCQkgKi8KIAotCQkvKiBOb3RpZnkgY2xhc3MgYXV4aWxsYXJ5IGRyaXZlcnMgKi8KKwkJLyogTm90aWZ5IGNsYXNzIGF1eGlsaWFyeSBkcml2ZXJzICovCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoZHJ2LCAmY2xzLT5kcml2ZXJzLCBlbnRyeSkgewogCQkJaWYgKGRydi0+YWRkKQogCQkJCWRydi0+YWRkKHN5c2Rldik7CkBAIC0zMzUsNyArMzM1LDcgQEAKICAqCiAgKglMb29wIG92ZXIgZWFjaCBjbGFzcyBvZiBzeXN0ZW0gZGV2aWNlcywgYW5kIHRoZSBkZXZpY2VzIGluIGVhY2gKICAqCW9mIHRob3NlIGNsYXNzZXMuIEZvciBlYWNoIGRldmljZSwgd2UgY2FsbCB0aGUgc2h1dGRvd24gbWV0aG9kIGZvcgotICoJZWFjaCBkcml2ZXIgcmVnaXN0ZXJlZCBmb3IgdGhlIGRldmljZSAtIHRoZSBhdXhpbGxhcmllcywKKyAqCWVhY2ggZHJpdmVyIHJlZ2lzdGVyZWQgZm9yIHRoZSBkZXZpY2UgLSB0aGUgYXV4aWxpYXJpZXMsCiAgKglhbmQgdGhlIGNsYXNzIGRyaXZlci4KICAqCiAgKglOb3RlOiBUaGUgbGlzdCBpcyBpdGVyYXRlZCBpbiByZXZlcnNlIG9yZGVyLCBzbyB0aGF0IHdlIHNodXQgZG93bgpAQCAtMzYwLDcgKzM2MCw3IEBACiAJCQlzdHJ1Y3Qgc3lzZGV2X2RyaXZlciAqZHJ2OwogCQkJcHJfZGVidWcoIiAlc1xuIiwga29iamVjdF9uYW1lKCZzeXNkZXYtPmtvYmopKTsKIAotCQkJLyogQ2FsbCBhdXhpbGxhcnkgZHJpdmVycyBmaXJzdCAqLworCQkJLyogQ2FsbCBhdXhpbGlhcnkgZHJpdmVycyBmaXJzdCAqLwogCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShkcnYsICZjbHMtPmRyaXZlcnMsIGVudHJ5KSB7CiAJCQkJaWYgKGRydi0+c2h1dGRvd24pCiAJCQkJCWRydi0+c2h1dGRvd24oc3lzZGV2KTsKQEAgLTM4NSw3ICszODUsNyBAQAogCVdBUk5fT05DRSghaXJxc19kaXNhYmxlZCgpLAogCQkiSW50ZXJydXB0cyBlbmFibGVkIGFmdGVyICVwRlxuIiwgY2xzLT5yZXN1bWUpOwogCi0JLyogQ2FsbCBhdXhpbGxhcnkgZHJpdmVycyBuZXh0LiAqLworCS8qIENhbGwgYXV4aWxpYXJ5IGRyaXZlcnMgbmV4dC4gKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRydiwgJmNscy0+ZHJpdmVycywgZW50cnkpIHsKIAkJaWYgKGRydi0+cmVzdW1lKQogCQkJZHJ2LT5yZXN1bWUoZGV2KTsKQEAgLTQzMiw3ICs0MzIsNyBAQAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHN5c2RldiwgJmNscy0+a3NldC5saXN0LCBrb2JqLmVudHJ5KSB7CiAJCQlwcl9kZWJ1ZygiICVzXG4iLCBrb2JqZWN0X25hbWUoJnN5c2Rldi0+a29iaikpOwogCi0JCQkvKiBDYWxsIGF1eGlsbGFyeSBkcml2ZXJzIGZpcnN0ICovCisJCQkvKiBDYWxsIGF1eGlsaWFyeSBkcml2ZXJzIGZpcnN0ICovCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRydiwgJmNscy0+ZHJpdmVycywgZW50cnkpIHsKIAkJCQlpZiAoZHJ2LT5zdXNwZW5kKSB7CiAJCQkJCXJldCA9IGRydi0+c3VzcGVuZChzeXNkZXYsIHN0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svREFDOTYwLmMgYi9kcml2ZXJzL2Jsb2NrL0RBQzk2MC5jCmluZGV4IDc5ODgyMTAuLjgwNjZkMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svREFDOTYwLmMKKysrIGIvZHJpdmVycy9ibG9jay9EQUM5NjAuYwpAQCAtMTc5MCw3ICsxNzkwLDcgQEAKICAgdW5zaWduZWQgc2hvcnQgTG9naWNhbERldmljZU51bWJlciA9IDA7CiAgIGludCBNb2RlbE5hbWVMZW5ndGg7CiAKLSAgLyogR2V0IGRhdGEgaW50byBkbWEtYWJsZSBhcmVhLCB0aGVuIGNvcHkgaW50byBwZXJtYW5hbnQgbG9jYXRpb24gKi8KKyAgLyogR2V0IGRhdGEgaW50byBkbWEtYWJsZSBhcmVhLCB0aGVuIGNvcHkgaW50byBwZXJtYW5lbnQgbG9jYXRpb24gKi8KICAgaWYgKCFEQUM5NjBfVjJfTmV3Q29udHJvbGxlckluZm8oQ29udHJvbGxlcikpCiAgICAgcmV0dXJuIERBQzk2MF9GYWlsdXJlKENvbnRyb2xsZXIsICJHRVQgQ09OVFJPTExFUiBJTkZPIik7CiAgIG1lbWNweShDb250cm9sbGVySW5mbywgQ29udHJvbGxlci0+VjIuTmV3Q29udHJvbGxlckluZm9ybWF0aW9uLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYwppbmRleCAyYTE2NDJiLi5jNjgyOGI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9hY3Rsb2cuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAvKiBXZSBtYWludGFpbiBhIHRyaXZpYWwgY2hlY2sgc3VtIGluIG91ciBvbiBkaXNrIGFjdGl2aXR5IGxvZy4KICAqIFdpdGggdGhhdCB3ZSBjYW4gZW5zdXJlIGNvcnJlY3Qgb3BlcmF0aW9uIGV2ZW4gd2hlbiB0aGUgc3RvcmFnZQotICogZGV2aWNlIG1pZ2h0IGRvIGEgcGFydGlhbCAobGFzdCkgc2VjdG9yIHdyaXRlIHdoaWxlIGxvb3NpbmcgcG93ZXIuCisgKiBkZXZpY2UgbWlnaHQgZG8gYSBwYXJ0aWFsIChsYXN0KSBzZWN0b3Igd3JpdGUgd2hpbGUgbG9zaW5nIHBvd2VyLgogICovCiBzdHJ1Y3QgX19wYWNrZWQgYWxfdHJhbnNhY3Rpb24gewogCXUzMiAgICAgICBtYWdpYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKaW5kZXggODEwMzBkOC4uYjI2OTliYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKQEAgLTYyMiw3ICs2MjIsNyBAQAogLyogb25lIGJpdG1hcCBwYWNrZXQsIGluY2x1ZGluZyB0aGUgcF9oZWFkZXIsCiAgKiBzaG91bGQgZml0IHdpdGhpbiBvbmUgX2FyY2hpdGVjdHVyZSBpbmRlcGVuZGVuZF8gcGFnZS4KICAqIHNvIHdlIG5lZWQgdG8gdXNlIHRoZSBmaXhlZCBzaXplIDRLaUIgcGFnZSBzaXplCi0gKiBtb3N0IGFyY2hpdGVjaHR1cmVzIGhhdmUgdXNlZCBmb3IgYSBsb25nIHRpbWUuCisgKiBtb3N0IGFyY2hpdGVjdHVyZXMgaGF2ZSB1c2VkIGZvciBhIGxvbmcgdGltZS4KICAqLwogI2RlZmluZSBCTV9QQUNLRVRfUEFZTE9BRF9CWVRFUyAoNDA5NiAtIHNpemVvZihzdHJ1Y3QgcF9oZWFkZXI4MCkpCiAjZGVmaW5lIEJNX1BBQ0tFVF9XT1JEUyAoQk1fUEFDS0VUX1BBWUxPQURfQllURVMvc2l6ZW9mKGxvbmcpKQpAQCAtODEwLDcgKzgxMCw3IEBACiAKIC8qIGdsb2JhbCBmbGFnIGJpdHMgKi8KIGVudW0gewotCUNSRUFURV9CQVJSSUVSLAkJLyogbmV4dCBQX0RBVEEgaXMgcHJlY2VlZGVkIGJ5IGEgUF9CQVJSSUVSICovCisJQ1JFQVRFX0JBUlJJRVIsCQkvKiBuZXh0IFBfREFUQSBpcyBwcmVjZWRlZCBieSBhIFBfQkFSUklFUiAqLwogCVNJR05BTF9BU0VOREVSLAkJLyogd2hldGhlciBhc2VuZGVyIHdhbnRzIHRvIGJlIGludGVycnVwdGVkICovCiAJU0VORF9QSU5HLAkJLyogd2hldGhlciBhc2VuZGVyIHNob3VsZCBzZW5kIGEgcGluZyBhc2FwICovCiAKQEAgLTExMjYsNyArMTEyNiw3IEBACiAJaW50IGNfc3luY19yYXRlOyAvKiBjdXJyZW50IHJlc3luYyByYXRlIGFmdGVyIHN5bmNlciB0aHJvdHRsZSBtYWdpYyAqLwogCXN0cnVjdCBmaWZvX2J1ZmZlciByc19wbGFuX3M7IC8qIGNvcnJlY3Rpb24gdmFsdWVzIG9mIHJlc3luYyBwbGFuZXIgKi8KIAlpbnQgcnNfaW5fZmxpZ2h0OyAvKiByZXN5bmMgc2VjdG9ycyBpbiBmbGlnaHQgKHRvIHByb3h5LCBpbiBwcm94eSBhbmQgZnJvbSBwcm94eSkgKi8KLQlpbnQgcnNfcGxhbmVkOyAgICAvKiByZXN5bmMgc2VjdG9ycyBhbHJlYWR5IHBsYW5lZCAqLworCWludCByc19wbGFuZWQ7ICAgIC8qIHJlc3luYyBzZWN0b3JzIGFscmVhZHkgcGxhbm5lZCAqLwogCWF0b21pY190IGFwX2luX2ZsaWdodDsgLyogQXBwIHNlY3RvcnMgaW4gZmxpZ2h0ICh3YWl0aW5nIGZvciBhY2spICovCiB9OwogCkBAIC0xMTQ0LDcgKzExNDQsNyBAQAogCXJldHVybiBtZGV2LT5taW5vcjsKIH0KIAotLyogcmV0dXJucyAxIGlmIGl0IHdhcyBzdWNjZXNzZnVsbCwKKy8qIHJldHVybnMgMSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bCwKICAqIHJldHVybnMgMCBpZiB0aGVyZSB3YXMgbm8gZGF0YSBzb2NrZXQuCiAgKiBzbyB3aGVyZXZlciB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgZGF0YS5zb2NrZXQsIGUuZy4gZG8KICAqIGlmICghZHJiZF9nZXRfZGF0YV9zb2NrKG1kZXYpKQpAQCAtMjA3OSw3ICsyMDc5LDcgQEAKIC8qIGNvdW50cyBob3cgbWFueSByZXN5bmMtcmVsYXRlZCBhbnN3ZXJzIHdlIHN0aWxsIGV4cGVjdCBmcm9tIHRoZSBwZWVyCiAgKgkJICAgICBpbmNyZWFzZQkJCWRlY3JlYXNlCiAgKiBDX1NZTkNfVEFSR0VUIHNlbmRzIFBfUlNfREFUQV9SRVFVRVNUIChhbmQgZXhwZWN0cyBQX1JTX0RBVEFfUkVQTFkpCi0gKiBDX1NZTkNfU09VUkNFIHNlbmRzIFBfUlNfREFUQV9SRVBMWSAgIChhbmQgZXhwZWN0cyBQX1dSSVRFX0FDSyB3aGl0aCBJRF9TWU5DRVIpCisgKiBDX1NZTkNfU09VUkNFIHNlbmRzIFBfUlNfREFUQV9SRVBMWSAgIChhbmQgZXhwZWN0cyBQX1dSSVRFX0FDSyB3aXRoIElEX1NZTkNFUikKICAqCQkJCQkgICAob3IgUF9ORUdfQUNLIHdpdGggSURfU1lOQ0VSKQogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgaW5jX3JzX3BlbmRpbmcoc3RydWN0IGRyYmRfY29uZiAqbWRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwppbmRleCBkZmM4NWYzLi41YjUyNWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jCkBAIC0xNTYxLDcgKzE1NjEsNyBAQAogCQlpZiAoZHJiZF9zZW5kX3N0YXRlKG1kZXYpKQogCQkJZGV2X3dhcm4oREVWLCAiTm90aWZpZWQgcGVlciB0aGF0IEknbSBub3cgZGlza2xlc3MuXG4iKTsKIAkJLyogY29ycmVzcG9uZGluZyBnZXRfbGRldiBpbiBfX2RyYmRfc2V0X3N0YXRlCi0JCSAqIHRoaXMgbWF5IGZpbmFseSB0cmlnZ2VyIGRyYmRfbGRldl9kZXN0cm95LiAqLworCQkgKiB0aGlzIG1heSBmaW5hbGx5IHRyaWdnZXIgZHJiZF9sZGV2X2Rlc3Ryb3kuICovCiAJCXB1dF9sZGV2KG1kZXYpOwogCX0KIApAQCAtMzcwNiw3ICszNzA2LDcgQEAKIAlidWZmZXIgPSAoc3RydWN0IG1ldGFfZGF0YV9vbl9kaXNrICopcGFnZV9hZGRyZXNzKG1kZXYtPm1kX2lvX3BhZ2UpOwogCiAJaWYgKCFkcmJkX21kX3N5bmNfcGFnZV9pbyhtZGV2LCBiZGV2LCBiZGV2LT5tZC5tZF9vZmZzZXQsIFJFQUQpKSB7Ci0JCS8qIE5PVEU6IGNhbnQgZG8gbm9ybWFsIGVycm9yIHByb2Nlc3NpbmcgaGVyZSBhcyB0aGlzIGlzCisJCS8qIE5PVEU6IGNhbid0IGRvIG5vcm1hbCBlcnJvciBwcm9jZXNzaW5nIGhlcmUgYXMgdGhpcyBpcwogCQkgICBjYWxsZWQgQkVGT1JFIGRpc2sgaXMgYXR0YWNoZWQgKi8KIAkJZGV2X2VycihERVYsICJFcnJvciB3aGlsZSByZWFkaW5nIG1ldGFkYXRhLlxuIik7CiAJCXJ2ID0gRVJSX0lPX01EX0RJU0s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwppbmRleCBmZTE1NjRjLi5mZDI2NjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTg2Miw3ICs4NjIsNyBAQAogCW1zb2NrLT5zay0+c2tfcmN2dGltZW8gPSBtZGV2LT5uZXRfY29uZi0+cGluZ19pbnQqSFo7CiAKIAkvKiB3ZSBkb24ndCB3YW50IGRlbGF5cy4KLQkgKiB3ZSB1c2UgVENQX0NPUksgd2hlcmUgYXByb3ByaWF0ZSwgdGhvdWdoICovCisJICogd2UgdXNlIFRDUF9DT1JLIHdoZXJlIGFwcHJvcHJpYXRlLCB0aG91Z2ggKi8KIAlkcmJkX3RjcF9ub2RlbGF5KHNvY2spOwogCWRyYmRfdGNwX25vZGVsYXkobXNvY2spOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF92bGkuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3ZsaS5oCmluZGV4IGZjODI0MDAuLjhjYjE1MzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3ZsaS5oCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3ZsaS5oCkBAIC0zMiw3ICszMiw3IEBACiAgKiB0aGUgYml0bWFwIHRyYW5zZmVyIHRpbWUgY2FuIHRha2UgbXVjaCB0b28gbG9uZywKICAqIGlmIHRyYW5zbWl0dGVkIGluIHBsYWluIHRleHQuCiAgKgotICogV2UgdHJ5IHRvIHJlZHVjZSB0aGUgdHJhbnNmZXJlZCBiaXRtYXAgaW5mb3JtYXRpb24KKyAqIFdlIHRyeSB0byByZWR1Y2UgdGhlIHRyYW5zZmVycmVkIGJpdG1hcCBpbmZvcm1hdGlvbgogICogYnkgZW5jb2RpbmcgcnVubGVuZ3RocyBvZiBiaXQgcG9sYXJpdHkuCiAgKgogICogV2UgbmV2ZXIgYWN0dWFsbHkgbmVlZCB0byBlbmNvZGUgYSAiemVybyIgKHJ1bmxlbmd0aHMgYXJlIHBvc2l0aXZlKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svaGQuYyBiL2RyaXZlcnMvYmxvY2svaGQuYwppbmRleCAzMGVjNmIzLi4wMDdjNjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2hkLmMKKysrIGIvZHJpdmVycy9ibG9jay9oZC5jCkBAIC03MzMsNyArNzMzLDcgQEAKIAkJICogdGhlIEJJT1Mgb3IgQ01PUy4gIFRoaXMgZG9lc24ndCB3b3JrIGFsbCB0aGF0IHdlbGwsCiAJCSAqIHNpbmNlIHRoaXMgYXNzdW1lcyB0aGF0IHRoaXMgaXMgYSBwcmltYXJ5IG9yIHNlY29uZGFyeQogCQkgKiBkcml2ZSwgYW5kIGlmIHdlJ3JlIHVzaW5nIHRoaXMgbGVnYWN5IGRyaXZlciwgaXQncwotCQkgKiBwcm9iYWJseSBhbiBhdXhpbGxpYXJ5IGNvbnRyb2xsZXIgYWRkZWQgdG8gcmVjb3ZlcgorCQkgKiBwcm9iYWJseSBhbiBhdXhpbGlhcnkgY29udHJvbGxlciBhZGRlZCB0byByZWNvdmVyCiAJCSAqIGxlZ2FjeSBkYXRhIG9mZiBhbiBTVC01MDYgZHJpdmUuICBFaXRoZXIgd2F5LCBpdCdzCiAJCSAqIGRlZmluaXRlbHkgc2FmZXN0IHRvIGhhdmUgdGhlIHVzZXIgZXhwbGljaXRseSBzcGVjaWZ5CiAJCSAqIHRoZSBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svdmlvZGFzZC5jIGIvZHJpdmVycy9ibG9jay92aW9kYXNkLmMKaW5kZXggZTJmZjY5Ny4uOWE1YjJhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay92aW9kYXNkLmMKKysrIGIvZHJpdmVycy9ibG9jay92aW9kYXNkLmMKQEAgLTk0LDcgKzk0LDcgQEAKIAl7IDB4MDIwNCwgRUlPLCAiVXNlIEVycm9yIiB9LAogCXsgMHgwMjA1LCBFSU8sICJSZWxlYXNlIEVycm9yIiB9LAogCXsgMHgwMjA2LCBFSU5WQUwsICJJbnZhbGlkIERpc2siIH0sCi0JeyAweDAyMDcsIEVCVVNZLCAiQ2FudCBMb2NrIiB9LAorCXsgMHgwMjA3LCBFQlVTWSwgIkNhbid0IExvY2siIH0sCiAJeyAweDAyMDgsIEVJTywgIkFscmVhZHkgTG9ja2VkIiB9LAogCXsgMHgwMjA5LCBFSU8sICJBbHJlYWR5IFVubG9ja2VkIiB9LAogCXsgMHgwMjBBLCBFSU8sICJJbnZhbGlkIEFyZyIgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveHN5c2FjZS5jIGIvZHJpdmVycy9ibG9jay94c3lzYWNlLmMKaW5kZXggNzMzNTRiMC4uNjQ1ZmY3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94c3lzYWNlLmMKKysrIGIvZHJpdmVycy9ibG9jay94c3lzYWNlLmMKQEAgLTYyMSw3ICs2MjEsNyBAQAogCQlhY2VfZHVtcF9tZW0oYWNlLT5jZl9pZCwgNTEyKTsJLyogRGVidWc6IER1bXAgb3V0IGRpc2sgSUQgKi8KIAogCQlpZiAoYWNlLT5kYXRhX3Jlc3VsdCkgewotCQkJLyogRXJyb3Igb2NjdXJlZCwgZGlzYWJsZSB0aGUgZGlzayAqLworCQkJLyogRXJyb3Igb2NjdXJyZWQsIGRpc2FibGUgdGhlIGRpc2sgKi8KIAkJCWFjZS0+bWVkaWFfY2hhbmdlID0gMTsKIAkJCXNldF9jYXBhY2l0eShhY2UtPmdkLCAwKTsKIAkJCWRldl9lcnIoYWNlLT5kZXYsICJlcnJvciBmZXRjaGluZyBDRiBpZCAoJWkpXG4iLApAQCAtODAxLDcgKzgwMSw3IEBACiAJdTMyIHNyZWcgPSBhY2VfaW4zMihhY2UsIEFDRV9TVEFUVVMpOwogCXUxNiBjcmVnID0gYWNlX2luKGFjZSwgQUNFX0NUUkwpOwogCi0JLyogQ2hlY2sgZm9yIGVycm9yIG9jY3VyYW5jZSAqLworCS8qIENoZWNrIGZvciBlcnJvciBvY2N1cnJlbmNlICovCiAJaWYgKChzcmVnICYgKEFDRV9TVEFUVVNfQ0ZHRVJST1IgfCBBQ0VfU1RBVFVTX0NGQ0VSUk9SKSkgJiYKIAkgICAgKGNyZWcgJiBBQ0VfQ1RSTF9FUlJPUklSUSkpIHsKIAkJZGV2X2VycihhY2UtPmRldiwgInRyYW5zZmVyIGZhaWx1cmVcbiIpOwpAQCAtMTE2OSw3ICsxMTY5LDcgQEAKIAkJCWlycSA9IGRldi0+cmVzb3VyY2VbaV0uc3RhcnQ7CiAJfQogCi0JLyogQ2FsbCB0aGUgYnVzLWluZGVwZW5kYW50IHNldHVwIGNvZGUgKi8KKwkvKiBDYWxsIHRoZSBidXMtaW5kZXBlbmRlbnQgc2V0dXAgY29kZSAqLwogCXJldHVybiBhY2VfYWxsb2MoJmRldi0+ZGV2LCBpZCwgcGh5c2FkZHIsIGlycSwgYnVzX3dpZHRoKTsKIH0KIApAQCAtMTIyMiw3ICsxMjIyLDcgQEAKIAlpZiAob2ZfZmluZF9wcm9wZXJ0eShvcC0+ZGV2Lm9mX25vZGUsICI4LWJpdCIsIE5VTEwpKQogCQlidXNfd2lkdGggPSBBQ0VfQlVTX1dJRFRIXzg7CiAKLQkvKiBDYWxsIHRoZSBidXMtaW5kZXBlbmRhbnQgc2V0dXAgY29kZSAqLworCS8qIENhbGwgdGhlIGJ1cy1pbmRlcGVuZGVudCBzZXR1cCBjb2RlICovCiAJcmV0dXJuIGFjZV9hbGxvYygmb3AtPmRldiwgaWQgPyBiZTMyX3RvX2NwdXAoaWQpIDogMCwKIAkJCQkJCXBoeXNhZGRyLCBpcnEsIGJ1c193aWR0aCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2JsdWV0b290aC9oY2lfbGwuYyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9sbC5jCmluZGV4IDM4NTk1ZTcuLjdlNGI0MzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9sbC5jCisrKyBiL2RyaXZlcnMvYmx1ZXRvb3RoL2hjaV9sbC5jCkBAIC0yMDcsNyArMjA3LDcgQEAKIAkJLyoKIAkJICogVGhpcyBzdGF0ZSBtZWFucyB0aGF0IGJvdGggdGhlIGhvc3QgYW5kIHRoZSBCUkYgY2hpcAogCQkgKiBoYXZlIHNpbXVsdGFuZW91c2x5IHNlbnQgYSB3YWtlLXVwLWluZGljYXRpb24gcGFja2V0LgotCQkgKiBUcmFkaXRpb25hbHksIGluIHRoaXMgY2FzZSwgcmVjZWl2aW5nIGEgd2FrZS11cC1pbmRpY2F0aW9uCisJCSAqIFRyYWRpdGlvbmFsbHksIGluIHRoaXMgY2FzZSwgcmVjZWl2aW5nIGEgd2FrZS11cC1pbmRpY2F0aW9uCiAJCSAqIHdhcyBlbm91Z2ggYW5kIGFuIGFkZGl0aW9uYWwgd2FrZS11cC1hY2sgd2Fzbid0IG5lZWRlZC4KIAkJICogVGhpcyBoYXMgY2hhbmdlZCB3aXRoIHRoZSBCUkY2MzUwLCB3aGljaCBkb2VzIHJlcXVpcmUgYW4KIAkJICogZXhwbGljaXQgd2FrZS11cC1hY2suIE90aGVyIEJSRiB2ZXJzaW9ucywgd2hpY2ggZG8gbm90CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nkcm9tL2Nkcm9tLmMgYi9kcml2ZXJzL2Nkcm9tL2Nkcm9tLmMKaW5kZXggZTJjNDhhNy4uNTE0ZGQ4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jZHJvbS9jZHJvbS5jCisrKyBiL2RyaXZlcnMvY2Ryb20vY2Ryb20uYwpAQCAtMzAsNyArMzAsNyBAQAogICBjaGFuZ2Vsb2cgZm9yIHRoZSAxLnggc2VyaWVzLCBEYXZpZD8KIAogMi4wMCAgRGVjICAyLCAxOTk3IC0tIEVyaWsgQW5kZXJzZW4gPGFuZGVyc2VlQGRlYmlhbi5vcmc+Ci0gIC0tIE5ldyBtYWludGFpbmVyISBBcyBEYXZpZCBBLiB2YW4gTGVldXdlbiBoYXMgYmVlbiB0b28gYnVzeSB0byBhY3Rpdmx5CisgIC0tIE5ldyBtYWludGFpbmVyISBBcyBEYXZpZCBBLiB2YW4gTGVldXdlbiBoYXMgYmVlbiB0b28gYnVzeSB0byBhY3RpdmVseQogICBtYWludGFpbiBhbmQgaW1wcm92ZSB0aGlzIGRyaXZlciwgSSBhbSBub3cgY2Fycnlpbmcgb24gdGhlIHRvcmNoLiBJZgogICB5b3UgaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGZlZWwgZnJlZSB0byBjb250YWN0IG1lLgogCkBAIC0yNTIwLDcgKzI1MjAsNyBAQAogLyoKICAqIE9rLCB0aGlzIGlzIHdoZXJlIHByb2JsZW1zIHN0YXJ0LiAgVGhlIGN1cnJlbnQgaW50ZXJmYWNlIGZvciB0aGUKICAqIENEUk9NX0RJU0NfU1RBVFVTIGlvY3RsIGlzIGZsYXdlZC4gIEl0IG1ha2VzIHRoZSBmYWxzZSBhc3N1bXB0aW9uIHRoYXQKLSAqIENEcyBhcmUgYWxsIENEU19EQVRBXzEgb3IgYWxsIENEU19BVURJTywgZXRjLiAgVW5mb3J0dW5hdGx5LCB3aGlsZSB0aGlzCisgKiBDRHMgYXJlIGFsbCBDRFNfREFUQV8xIG9yIGFsbCBDRFNfQVVESU8sIGV0Yy4gIFVuZm9ydHVuYXRlbHksIHdoaWxlIHRoaXMKICAqIGlzIG9mdGVuIHRoZSBjYXNlLCBpdCBpcyBhbHNvIHZlcnkgY29tbW9uIGZvciBDRHMgdG8gaGF2ZSBzb21lIHRyYWNrcwogICogd2l0aCBkYXRhLCBhbmQgc29tZSB0cmFja3Mgd2l0aCBhdWRpby4gIEp1c3QgYmVjYXVzZSBJIGZlZWwgbGlrZSBpdCwKICAqIEkgZGVjbGFyZSB0aGUgZm9sbG93aW5nIHRvIGJlIHRoZSBiZXN0IHdheSB0byBjb3BlLiAgSWYgdGhlIENEIGhhcyBBTlkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9hZ3AvYWdwLmggYi9kcml2ZXJzL2NoYXIvYWdwL2FncC5oCmluZGV4IDNlNjdkZGQuLjkyM2Y5OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9hZ3AvYWdwLmgKKysrIGIvZHJpdmVycy9jaGFyL2FncC9hZ3AuaApAQCAtMjM3LDcgKzIzNyw3IEBACiAKIGxvbmcgY29tcGF0X2FncF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogCi0vKiBDaGlwc2V0IGluZGVwZW5kYW50IHJlZ2lzdGVycyAoZnJvbSBBR1AgU3BlYykgKi8KKy8qIENoaXBzZXQgaW5kZXBlbmRlbnQgcmVnaXN0ZXJzIChmcm9tIEFHUCBTcGVjKSAqLwogI2RlZmluZSBBR1BfQVBCQVNFCTB4MTAKIAogI2RlZmluZSBBR1BTVEFUCQkweDQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jIGIvZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmMKaW5kZXggNDU2ODFjMC4uZjdlODg3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmMKKysrIGIvZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmMKQEAgLTI3Miw3ICsyNzIsNyBAQAogICogVGhpcyByb3V0aW5lIGNvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHRha2luZyB0aGUgYWRkcmVzc2VzCiAgKiB3cml0dGVuIHRvIHRoZSBHQVRULCBhbmQgZmx1c2hpbmcgdGhlbSBpbmRpdmlkdWFsbHkuICBIb3dldmVyCiAgKiBjdXJyZW50bHkgaXQganVzdCBmbHVzaGVzIHRoZSB3aG9sZSB0YWJsZS4gIFdoaWNoIGlzIHByb2JhYmx5Ci0gKiBtb3JlIGVmZmljZW50LCBzaW5jZSBhZ3BfbWVtb3J5IGJsb2NrcyBjYW4gYmUgYSBsYXJnZSBudW1iZXIgb2YKKyAqIG1vcmUgZWZmaWNpZW50LCBzaW5jZSBhZ3BfbWVtb3J5IGJsb2NrcyBjYW4gYmUgYSBsYXJnZSBudW1iZXIgb2YKICAqIGVudHJpZXMuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmMgYi9kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYwppbmRleCAxM2FjYWFmLi5mMDJmOWIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYworKysgYi9kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYwpAQCAtMjI5LDcgKzIyOSw3IEBACiAgKiBUaGlzIHJvdXRpbmUgY291bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGFraW5nIHRoZSBhZGRyZXNzZXMKICAqIHdyaXR0ZW4gdG8gdGhlIEdBVFQsIGFuZCBmbHVzaGluZyB0aGVtIGluZGl2aWR1YWxseS4gIEhvd2V2ZXIKICAqIGN1cnJlbnRseSBpdCBqdXN0IGZsdXNoZXMgdGhlIHdob2xlIHRhYmxlLiAgV2hpY2ggaXMgcHJvYmFibHkKLSAqIG1vcmUgZWZmaWNlbnQsIHNpbmNlIGFncF9tZW1vcnkgYmxvY2tzIGNhbiBiZSBhIGxhcmdlIG51bWJlciBvZgorICogbW9yZSBlZmZpY2llbnQsIHNpbmNlIGFncF9tZW1vcnkgYmxvY2tzIGNhbiBiZSBhIGxhcmdlIG51bWJlciBvZgogICogZW50cmllcy4KICAqLwogc3RhdGljIHZvaWQgc2VydmVyd29ya3NfdGxiZmx1c2goc3RydWN0IGFncF9tZW1vcnkgKnRlbXApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYyBiL2RyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jCmluZGV4IGRmNjdlODAuLjhiYzM4NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jCisrKyBiL2RyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jCkBAIC00MDAsNyArNDAwLDcgQEAKIAkgKiB0aGUgdHJhZGl0aW9uYWwgQUdQIHdoaWNoIHJlc2lkZXMgb25seSBpbiBjaGlwc2V0LiBBR1AgaXMgdXNlZAogCSAqIGJ5IDNEIGRyaXZlciB3aGljaCB3YXNuJ3QgYXZhaWxhYmxlIGZvciB0aGUgVlQzMzM2IGFuZCBWVDMzNjQKIAkgKiBnZW5lcmF0aW9uIHVudGlsIG5vdy4gIFVuZm9ydHVuYXRlbHksIGJ5IHRlc3RpbmcsIFZUMzM2NCB3b3JrcwotCSAqIGJ1dCBWVDMzMzYgZG9lc24ndC4gLSBleHBsYWluYXRpb24gZnJvbSB2aWEsIGp1c3QgbGVhdmUgdGhpcyBhcworCSAqIGJ1dCBWVDMzMzYgZG9lc24ndC4gLSBleHBsYW5hdGlvbiBmcm9tIHZpYSwganVzdCBsZWF2ZSB0aGlzIGFzCiAJICogYXMgYSBwbGFjZWhvbGRlciB0byBhdm9pZCBmdXR1cmUgcGF0Y2hlcyBhZGRpbmcgaXQgYmFjayBpbi4KIAkgKi8KICNpZiAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3Bvd2Vyb2ZmLmMgYi9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3Bvd2Vyb2ZmLmMKaW5kZXggMGRlYzVkYS4uMmVmYTE3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9wb3dlcm9mZi5jCisrKyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfcG93ZXJvZmYuYwpAQCAtMTIyLDcgKzEyMiw3IEBACiAKIAogLyoKLSAqIENvZGUgdG8gc2VuZCBhIG1lc3NhZ2UgYW5kIHdhaXQgZm9yIHRoZSByZXBvbnNlLgorICogQ29kZSB0byBzZW5kIGEgbWVzc2FnZSBhbmQgd2FpdCBmb3IgdGhlIHJlc3BvbnNlLgogICovCiAKIHN0YXRpYyB2b2lkIHJlY2VpdmVfaGFuZGxlcihzdHJ1Y3QgaXBtaV9yZWN2X21zZyAqcmVjdl9tc2csIHZvaWQgKmhhbmRsZXJfZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jIGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9pbnRmLmMKaW5kZXggZDI4YjQ4NC4uY2M2YzliMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9pbnRmLmMKKysrIGIvZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9pbnRmLmMKQEAgLTMzOSw3ICszMzksNyBAQAogCQljQ29kZSA9IElQTUlfRVJSX1VOU1BFQ0lGSUVEOwogCS8qIGVsc2UgdXNlIGl0IGFzIGlzICovCiAKLQkvKiBNYWtlIGl0IGEgcmVwb25zZSAqLworCS8qIE1ha2UgaXQgYSByZXNwb25zZSAqLwogCW1zZy0+cnNwWzBdID0gbXNnLT5kYXRhWzBdIHwgNDsKIAltc2ctPnJzcFsxXSA9IG1zZy0+ZGF0YVsxXTsKIAltc2ctPnJzcFsyXSA9IGNDb2RlOwpAQCAtMjkyNyw3ICsyOTI3LDcgQEAKIHsKIAlzdHJ1Y3QgaXBtaV9zbWlfbXNnICptc2cgPSBzbWlfaW5mby0+Y3Vycl9tc2c7CiAKLQkvKiBNYWtlIGl0IGEgcmVwb25zZSAqLworCS8qIE1ha2UgaXQgYSByZXNwb25zZSAqLwogCW1zZy0+cnNwWzBdID0gbXNnLT5kYXRhWzBdIHwgNDsKIAltc2ctPnJzcFsxXSA9IG1zZy0+ZGF0YVsxXTsKIAltc2ctPnJzcFsyXSA9IENBTk5PVF9SRVRVUk5fUkVRVUVTVEVEX0xFTkdUSDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9tYmNzLmggYi9kcml2ZXJzL2NoYXIvbWJjcy5oCmluZGV4IGJhNjcxNTguLjFhMzY4ODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9tYmNzLmgKKysrIGIvZHJpdmVycy9jaGFyL21iY3MuaApAQCAtMzYsMTMgKzM2LDEzIEBACiAjZGVmaW5lIE1CQ1NfUkRfRE1BX0NUUkwJMHgwMTEwCS8qIFJlYWQgRE1BIENvbnRyb2wgKi8KICNkZWZpbmUgTUJDU19SRF9ETUFfQU1PX0RFU1QJMHgwMTE4CS8qIFJlYWQgRE1BIEFNTyBEZXN0aW5hdGlvbiAqLwogI2RlZmluZSBNQkNTX1JEX0RNQV9JTlRfREVTVAkweDAxMjAJLyogUmVhZCBETUEgSW50ZXJydXB0IERlc3RpbmF0aW9uICovCi0jZGVmaW5lIE1CQ1NfUkRfRE1BX0FVWF9TVEFUCTB4MDEzMAkvKiBSZWFkIERNQSBBdXhpbGxhcnkgU3RhdHVzICovCisjZGVmaW5lIE1CQ1NfUkRfRE1BX0FVWF9TVEFUCTB4MDEzMAkvKiBSZWFkIERNQSBBdXhpbGlhcnkgU3RhdHVzICovCiAjZGVmaW5lIE1CQ1NfV1JfRE1BX1NZU19BRERSCTB4MDIwMAkvKiBXcml0ZSBETUEgU3lzdGVtIEFkZHJlc3MgKi8KICNkZWZpbmUgTUJDU19XUl9ETUFfTE9DX0FERFIJMHgwMjA4CS8qIFdyaXRlIERNQSBMb2NhbCBBZGRyZXNzICovCiAjZGVmaW5lIE1CQ1NfV1JfRE1BX0NUUkwJMHgwMjEwCS8qIFdyaXRlIERNQSBDb250cm9sICovCiAjZGVmaW5lIE1CQ1NfV1JfRE1BX0FNT19ERVNUCTB4MDIxOAkvKiBXcml0ZSBETUEgQU1PIERlc3RpbmF0aW9uICovCiAjZGVmaW5lIE1CQ1NfV1JfRE1BX0lOVF9ERVNUCTB4MDIyMAkvKiBXcml0ZSBETUEgSW50ZXJydXB0IERlc3RpbmF0aW9uICovCi0jZGVmaW5lIE1CQ1NfV1JfRE1BX0FVWF9TVEFUCTB4MDIzMAkvKiBXcml0ZSBETUEgQXV4aWxsYXJ5IFN0YXR1cyAqLworI2RlZmluZSBNQkNTX1dSX0RNQV9BVVhfU1RBVAkweDAyMzAJLyogV3JpdGUgRE1BIEF1eGlsaWFyeSBTdGF0dXMgKi8KICNkZWZpbmUgTUJDU19BTEdfQU1PX0RFU1QJMHgwMzAwCS8qIEFsZ29yaXRobSBBTU8gRGVzdGluYXRpb24gKi8KICNkZWZpbmUgTUJDU19BTEdfSU5UX0RFU1QJMHgwMzA4CS8qIEFsZ29yaXRobSBJbnRlcnJ1cHQgRGVzdGluYXRpb24gKi8KICNkZWZpbmUgTUJDU19BTEdfT0ZGU0VUUwkweDAzMTAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9td2F2ZS8zNzgwaS5oIGIvZHJpdmVycy9jaGFyL213YXZlLzM3ODBpLmgKaW5kZXggMjcwNDMxYy4uZmJhNmFiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL213YXZlLzM3ODBpLmgKKysrIGIvZHJpdmVycy9jaGFyL213YXZlLzM3ODBpLmgKQEAgLTEyMiw3ICsxMjIsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogCXVuc2lnbmVkIGNoYXIgRG1hOjM7CS8qIFJXOiBETUEgY2hhbm5lbCBzZWxlY3Rpb24gKi8KIAl1bnNpZ25lZCBjaGFyIE51bVRyYW5zZmVyczoyOwkvKiBSVzogTWF4aW11bSAjIG9mIHRyYW5zZmVycyBvbmNlIGJlaW5nIGdyYW50ZWQgdGhlIElTQSBidXMgKi8KLQl1bnNpZ25lZCBjaGFyIFJlUmVxdWVzdDoyOwkvKiBSVzogTWludW11bSBkZWxheSBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgSVNBIGJ1cyBhbmQgcmVxdWVzdGluZyBpdCBhZ2FpbiAqLworCXVuc2lnbmVkIGNoYXIgUmVSZXF1ZXN0OjI7CS8qIFJXOiBNaW5pbXVtIGRlbGF5IGJldHdlZW4gcmVsZWFzaW5nIHRoZSBJU0EgYnVzIGFuZCByZXF1ZXN0aW5nIGl0IGFnYWluICovCiAJdW5zaWduZWQgY2hhciBNRU1DUzE2OjE7CS8qIFJXOiBJU0Egc2lnbmFsIE1FTUNTMTY6IDA9ZGlzYWJsZWQsIDE9ZW5hYmxlZCAqLwogfSBEU1BfQlVTTUFTVEVSX0NGR18xOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvbndidXR0b24uYyBiL2RyaXZlcnMvY2hhci9ud2J1dHRvbi5jCmluZGV4IDg5OTRjZTMuLjA0YTQ4MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2hhci9ud2J1dHRvbi5jCisrKyBiL2RyaXZlcnMvY2hhci9ud2J1dHRvbi5jCkBAIC03NSw3ICs3NSw3IEBACiAgKiB3aXRoIC1FSU5WQUwuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZW50cnkgd2l0aCB0aGUgc2FtZSBhZGRyZXNzLAogICogYmVjYXVzZSBpdCBzZWFyY2hlcyB0aGUgbGlzdCBmcm9tIGVuZCB0byBiZWdpbm5pbmcsIGl0IHdpbGwgdW5yZWdpc3RlciB0aGUKICAqIGxhc3Qgb25lIHRvIGJlIHJlZ2lzdGVyZWQgZmlyc3QgKEZJTE8tIEZpcnN0IEluIExhc3QgT3V0KS4KLSAqIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBuZWNjZXNzYXJpbHkgdHJ1ZSBpZiB0aGUgZW50cmllcyBhcmUgbm90IHN1Ym1pdHRlZAorICogTm90ZSB0aGF0IHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgaWYgdGhlIGVudHJpZXMgYXJlIG5vdCBzdWJtaXR0ZWQKICAqIGF0IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgYW5vdGhlciBkcml2ZXIgY291bGQgaGF2ZSB1bnJlZ2lzdGVyZWQgYSBjYWxsYmFjawogICogYmV0d2VlbiB0aGUgc3VibWlzc2lvbnMgY3JlYXRpbmcgYSBnYXAgZWFybGllciBpbiB0aGUgbGlzdCwgd2hpY2ggd291bGQKICAqIGJlIGZpbGxlZCBmaXJzdCBhdCBzdWJtaXNzaW9uIHRpbWUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvcGNtY2lhL2NtNDAwMF9jcy5jIGIvZHJpdmVycy9jaGFyL3BjbWNpYS9jbTQwMDBfY3MuYwppbmRleCBiY2JiYzcxLi45MGJkMDE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvcGNtY2lhL2NtNDAwMF9jcy5jCisrKyBiL2RyaXZlcnMvY2hhci9wY21jaWEvY200MDAwX2NzLmMKQEAgLTgwNiw3ICs4MDYsNyBAQAogCQlkZXYtPmZsYWdzMSA9IDB4MDE7CiAJCXhvdXRiKGRldi0+ZmxhZ3MxLCBSRUdfRkxBR1MxKGlvYmFzZSkpOwogCi0JCS8qIGF0ciBpcyBwcmVzZW50ICh3aGljaCBkb2VzbnQgbWVhbiBpdCdzIHZhbGlkKSAqLworCQkvKiBhdHIgaXMgcHJlc2VudCAod2hpY2ggZG9lc24ndCBtZWFuIGl0J3MgdmFsaWQpICovCiAJCXNldF9iaXQoSVNfQVRSX1BSRVNFTlQsICZkZXYtPmZsYWdzKTsKIAkJaWYgKGRldi0+YXRyWzBdID09IDB4MDMpCiAJCQlzdHJfaW52ZXJ0X3JldmVydChkZXYtPmF0ciwgZGV2LT5hdHJfbGVuKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9wY21jaWEvc3luY2xpbmtfY3MuYyBiL2RyaXZlcnMvY2hhci9wY21jaWEvc3luY2xpbmtfY3MuYwppbmRleCBiZWNhODBiLi5iNTc1NDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvcGNtY2lhL3N5bmNsaW5rX2NzLmMKKysrIGIvZHJpdmVycy9jaGFyL3BjbWNpYS9zeW5jbGlua19jcy5jCkBAIC0xMjkwLDcgKzEyOTAsNyBAQAogCS8qIEFsbG9jYXRlIGFuZCBjbGFpbSBhZGFwdGVyIHJlc291cmNlcyAqLwogCXJldHZhbCA9IGNsYWltX3Jlc291cmNlcyhpbmZvKTsKIAotCS8qIHBlcmZvcm0gZXhpc3RhbmNlIGNoZWNrIGFuZCBkaWFnbm9zdGljcyAqLworCS8qIHBlcmZvcm0gZXhpc3RlbmNlIGNoZWNrIGFuZCBkaWFnbm9zdGljcyAqLwogCWlmICggIXJldHZhbCApCiAJCXJldHZhbCA9IGFkYXB0ZXJfdGVzdChpbmZvKTsKIApAQCAtMjY4MCw3ICsyNjgwLDcgQEAKIHN0YXRpYyBpbnQgY2xhaW1fcmVzb3VyY2VzKE1HU0xQQ19JTkZPICppbmZvKQogewogCWlmIChyeF9hbGxvY19idWZmZXJzKGluZm8pIDwgMCApIHsKLQkJcHJpbnRrKCAiQ2FudCBhbGxvY2F0ZSByeCBidWZmZXIgJXNcbiIsIGluZm8tPmRldmljZV9uYW1lKTsKKwkJcHJpbnRrKCAiQ2FuJ3QgYWxsb2NhdGUgcnggYnVmZmVyICVzXG4iLCBpbmZvLT5kZXZpY2VfbmFtZSk7CiAJCXJlbGVhc2VfcmVzb3VyY2VzKGluZm8pOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvcmFuZG9tLmMgYi9kcml2ZXJzL2NoYXIvcmFuZG9tLmMKaW5kZXggNWUyOWU4MC4uZDRkZGViYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jaGFyL3JhbmRvbS5jCisrKyBiL2RyaXZlcnMvY2hhci9yYW5kb20uYwpAQCAtNzMyLDcgKzczMiw3IEBACiAJCQkgICAgICAgc2l6ZV90IG5ieXRlcywgaW50IG1pbiwgaW50IHJzdmQpOwogCiAvKgotICogVGhpcyB1dGlsaXR5IGlubGluZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdHJhbnNmZXJpbmcgZW50cm9weQorICogVGhpcyB1dGlsaXR5IGlubGluZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdHJhbnNmZXJyaW5nIGVudHJvcHkKICAqIGZyb20gdGhlIHByaW1hcnkgcG9vbCB0byB0aGUgc2Vjb25kYXJ5IGV4dHJhY3Rpb24gcG9vbC4gV2UgbWFrZQogICogc3VyZSB3ZSBwdWxsIGVub3VnaCBmb3IgYSAnY2F0YXN0cm9waGljIHJlc2VlZCcuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9zb255cGkuYyBiL2RyaXZlcnMvY2hhci9zb255cGkuYwppbmRleCA3OWUzNmM4Li4xZWU4Y2U3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvc29ueXBpLmMKKysrIGIvZHJpdmVycy9jaGFyL3NvbnlwaS5jCkBAIC0xMjQxLDcgKzEyNDEsNyBAQAogCXdoaWxlIChjaGVja19pb3BvcnQgJiYgY2hlY2stPnBvcnQxKSB7CiAJCWlmICghcmVxdWVzdF9yZWdpb24oY2hlY2stPnBvcnQxLAogCQkJCSAgIHNvbnlwaV9kZXZpY2UucmVnaW9uX3NpemUsCi0JCQkJICAgIlNvbnkgUHJvZ3JhbWFibGUgSS9PIERldmljZSBDaGVjayIpKSB7CisJCQkJICAgIlNvbnkgUHJvZ3JhbW1hYmxlIEkvTyBEZXZpY2UgQ2hlY2siKSkgewogCQkJcHJpbnRrKEtFUk5fRVJSICJzb255cGk6IGlvcG9ydCAweCUuNHggYnVzeSwgdXNpbmcgc29ueS1sYXB0b3A/ICIKIAkJCQkJImlmIG5vdCB1c2UgY2hlY2tfaW9wb3J0PTBcbiIsCiAJCQkJCWNoZWNrLT5wb3J0MSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQAogCiAJCWlmIChyZXF1ZXN0X3JlZ2lvbihpb3BvcnRfbGlzdC0+cG9ydDEsCiAJCQkJICAgc29ueXBpX2RldmljZS5yZWdpb25fc2l6ZSwKLQkJCQkgICAiU29ueSBQcm9ncmFtYWJsZSBJL08gRGV2aWNlIikpIHsKKwkJCQkgICAiU29ueSBQcm9ncmFtbWFibGUgSS9PIERldmljZSIpKSB7CiAJCQlkZXYtPmlvcG9ydDEgPSBpb3BvcnRfbGlzdC0+cG9ydDE7CiAJCQlkZXYtPmlvcG9ydDIgPSBpb3BvcnRfbGlzdC0+cG9ydDI7CiAJCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci94aWxpbnhfaHdpY2FwL3hpbGlueF9od2ljYXAuYyBiL2RyaXZlcnMvY2hhci94aWxpbnhfaHdpY2FwL3hpbGlueF9od2ljYXAuYwppbmRleCBkM2M5ZDc1Li5kNjQxMmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMKKysrIGIvZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jCkBAIC02Nyw3ICs2Nyw3IEBACiAgKiBjcCBmb28uYml0IC9kZXYvaWNhcDAKICAqCiAgKiBOb3RlIHRoYXQgdW5sZXNzIGZvby5iaXQgaXMgYW4gYXBwcm9wcmlhdGVseSBjb25zdHJ1Y3RlZCBwYXJ0aWFsCi0gKiBiaXRzdHJlYW0sIHRoaXMgaGFzIGEgaGlnaCBsaWtlbHlob29kIG9mIG92ZXJ3cml0aW5nIHRoZSBkZXNpZ24KKyAqIGJpdHN0cmVhbSwgdGhpcyBoYXMgYSBoaWdoIGxpa2VsaWhvb2Qgb2Ygb3ZlcndyaXRpbmcgdGhlIGRlc2lnbgogICogY3VycmVudGx5IHByb2dyYW1tZWQgaW4gdGhlIEZQR0EuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYyBiL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMKaW5kZXggYjAzNzcxZC4uMmRhZmM1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYworKysgYi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jCkBAIC0xNzgyLDcgKzE3ODIsNyBAQAogICoJY3B1ZnJlcV91cGRhdGVfcG9saWN5IC0gcmUtZXZhbHVhdGUgYW4gZXhpc3RpbmcgY3B1ZnJlcSBwb2xpY3kKICAqCUBjcHU6IENQVSB3aGljaCBzaGFsbCBiZSByZS1ldmFsdWF0ZWQKICAqCi0gKglVc2VmdWxsIGZvciBwb2xpY3kgbm90aWZpZXJzIHdoaWNoIGhhdmUgZGlmZmVyZW50IG5lY2Vzc2l0aWVzCisgKglVc2VmdWwgZm9yIHBvbGljeSBub3RpZmllcnMgd2hpY2ggaGF2ZSBkaWZmZXJlbnQgbmVjZXNzaXRpZXMKICAqCWF0IGRpZmZlcmVudCB0aW1lcy4KICAqLwogaW50IGNwdWZyZXFfdXBkYXRlX3BvbGljeSh1bnNpZ25lZCBpbnQgY3B1KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8vYW1jYy9jcnlwdG80eHhfc2EuYyBiL2RyaXZlcnMvY3J5cHRvL2FtY2MvY3J5cHRvNHh4X3NhLmMKaW5kZXggNDY2ZmQ5NC4uZGU4YTdhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlwdG8vYW1jYy9jcnlwdG80eHhfc2EuYworKysgYi9kcml2ZXJzL2NyeXB0by9hbWNjL2NyeXB0bzR4eF9zYS5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBAZmlsZSBjcnlwdG80eHhfc2EuYwogICoKICAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBzZWN1cml0eSBjb250ZXh0Ci0gKiBhc3NvaWNhdGUgZm9ybWF0LgorICogYXNzb2NpYXRlIGZvcm1hdC4KICAqLwogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8vYW1jYy9jcnlwdG80eHhfc2EuaCBiL2RyaXZlcnMvY3J5cHRvL2FtY2MvY3J5cHRvNHh4X3NhLmgKaW5kZXggNGI4M2VkNy4uMTM1MmQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlwdG8vYW1jYy9jcnlwdG80eHhfc2EuaAorKysgYi9kcml2ZXJzL2NyeXB0by9hbWNjL2NyeXB0bzR4eF9zYS5oCkBAIC0xNSw3ICsxNSw3IEBACiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBzZWN1cml0eSBjb250ZXh0Ci0gKiBhc3NvaWNhdGUgZm9ybWF0LgorICogYXNzb2NpYXRlIGZvcm1hdC4KICAqLwogCiAjaWZuZGVmIF9fQ1JZUFRPNFhYX1NBX0hfXwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlwdG8vaXhwNHh4X2NyeXB0by5jIGIvZHJpdmVycy9jcnlwdG8vaXhwNHh4X2NyeXB0by5jCmluZGV4IDBkNjYyMjEuLjRjMjBjNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY3J5cHRvL2l4cDR4eF9jcnlwdG8uYworKysgYi9kcml2ZXJzL2NyeXB0by9peHA0eHhfY3J5cHRvLmMKQEAgLTEwNDQsNyArMTA0NCw3IEBACiAJbWVtY3B5KGNyeXB0LT5pdiwgcmVxLT5pdiwgaXZzaXplKTsKIAogCWlmIChyZXEtPnNyYyAhPSByZXEtPmRzdCkgewotCQlCVUcoKTsgLyogLUVOT1RTVVAgYmVjYXVzZSBvZiBteSBsYXp5bmVzcyAqLworCQlCVUcoKTsgLyogLUVOT1RTVVAgYmVjYXVzZSBvZiBteSBsYXppbmVzcyAqLwogCX0KIAogCS8qIEFTU09DIGRhdGEgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2F0X2hkbWFjLmMgYi9kcml2ZXJzL2RtYS9hdF9oZG1hYy5jCmluZGV4IDNkN2Q3MDUuLjIzNWY1M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hL2F0X2hkbWFjLmMKKysrIGIvZHJpdmVycy9kbWEvYXRfaGRtYWMuYwpAQCAtMTY3LDcgKzE2Nyw3IEBACiAvKioKICAqIGF0Y19hc3NpZ25fY29va2llIC0gY29tcHV0ZSBhbmQgYXNzaWduIG5ldyBjb29raWUKICAqIEBhdGNoYW46IGNoYW5uZWwgd2Ugd29yayBvbgotICogQGRlc2M6IGRlc2NyaXB0b3IgdG8gYXNpZ24gY29va2llIGZvcgorICogQGRlc2M6IGRlc2NyaXB0b3IgdG8gYXNzaWduIGNvb2tpZSBmb3IKICAqCiAgKiBDYWxsZWQgd2l0aCBhdGNoYW4tPmxvY2sgaGVsZCBhbmQgYmggZGlzYWJsZWQKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvY29oOTAxMzE4LmMgYi9kcml2ZXJzL2RtYS9jb2g5MDEzMTguYwppbmRleCAwMGRlYWJkLi5mNDhlNTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9jb2g5MDEzMTguYworKysgYi9kcml2ZXJzL2RtYS9jb2g5MDEzMTguYwpAQCAtNTI5LDcgKzUyOSw3IEBACiAJdmFsID0gcmVhZGwodmlydGJhc2UgKyBDT0g5MDEzMThfQ1hfQ0ZHICsKIAkJICAgIENPSDkwMTMxOF9DWF9DRkdfU1BBQ0lORyAqIGNoYW5uZWwpOwogCi0JLyogU3RvcHBpbmcgaW5maW5pdCB0cmFuc2ZlciAqLworCS8qIFN0b3BwaW5nIGluZmluaXRlIHRyYW5zZmVyICovCiAJaWYgKCh2YWwgJiBDT0g5MDEzMThfQ1hfQ1RSTF9UQ19FTkFCTEUpID09IDAgJiYKIAkgICAgKHZhbCAmIENPSDkwMTMxOF9DWF9DRkdfQ0hfRU5BQkxFKSkKIAkJY29oYy0+c3RvcHBlZCA9IDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9pbnRlbF9taWRfZG1hLmMgYi9kcml2ZXJzL2RtYS9pbnRlbF9taWRfZG1hLmMKaW5kZXggNzk4ZjQ2YS4uM2Q0ZWMzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYS5jCisrKyBiL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWEuYwpAQCAtOTExLDggKzkxMSw4IEBACiAKIC8qKgogICogbWlkY19oYW5kbGVfZXJyb3IgLQlIYW5kbGUgRE1BIHR4biBlcnJvcgotICogQG1pZDogY29udHJvbGxlciB3aGVyZSBlcnJvciBvY2N1cmVkCi0gKiBAbWlkYzogY2hhbiB3aGVyZSBlcnJvciBvY2N1cmVkCisgKiBAbWlkOiBjb250cm9sbGVyIHdoZXJlIGVycm9yIG9jY3VycmVkCisgKiBAbWlkYzogY2hhbiB3aGVyZSBlcnJvciBvY2N1cnJlZAogICoKICAqIFNjYW4gdGhlIGRlc2NyaXB0b3IgZm9yIGVycm9yCiAgKi8KQEAgLTEwOTksNyArMTA5OSw3IEBACiAJCWRtYS0+bWFza19yZWcgPSBpb3JlbWFwKExOV19QRVJJUEhSQUxfTUFTS19CQVNFLAogCQkJCQlMTldfUEVSSVBIUkFMX01BU0tfU0laRSk7CiAJCWlmIChkbWEtPm1hc2tfcmVnID09IE5VTEwpIHsKLQkJCXByX2VycigiRVJSX01ETUE6Q2FudCBtYXAgcGVyaXBocmFsIGludHIgc3BhY2UgISFcbiIpOworCQkJcHJfZXJyKCJFUlJfTURNQTpDYW4ndCBtYXAgcGVyaXBocmFsIGludHIgc3BhY2UgISFcbiIpOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAl9IGVsc2UKQEAgLTEzNzMsNyArMTM3Myw3IEBACiAJcGNpX3Jlc3RvcmVfc3RhdGUocGNpKTsKIAlyZXQgPSBwY2lfZW5hYmxlX2RldmljZShwY2kpOwogCWlmIChyZXQpIHsKLQkJcHJfZXJyKCJNRE1BOiBkZXZpY2UgY2FudCBiZSBlbmFibGVkIGZvciAleFxuIiwgcGNpLT5kZXZpY2UpOworCQlwcl9lcnIoIk1ETUE6IGRldmljZSBjYW4ndCBiZSBlbmFibGVkIGZvciAleFxuIiwgcGNpLT5kZXZpY2UpOwogCQlyZXR1cm4gcmV0OwogCX0KIAlkZXZpY2UtPnN0YXRlID0gUlVOTklORzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWFfcmVncy5oIGIvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYV9yZWdzLmgKaW5kZXggNzA5ZmVjYi4uYWVhNWVlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYV9yZWdzLmgKKysrIGIvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYV9yZWdzLmgKQEAgLTE3NCw4ICsxNzQsOCBAQAogICogQGRtYTogZG1hIGRldmljZSBzdHJ1dHVyZSBwb2ludGVyCiAgKiBAYnVzeTogYm9vbCByZXByZXNlbnRpbmcgaWYgY2ggaXMgYnVzeSAoYWN0aXZlIHR4bikgb3Igbm90CiAgKiBAaW5fdXNlOiBib29sIHJlcHJlc2VudGluZyBpZiBjaCBpcyBpbiB1c2Ugb3Igbm90Ci0gKiBAcmF3X3RmcjogcmF3IHRyZiBpbnRlcnJ1cHQgcmVjaWV2ZWQKLSAqIEByYXdfYmxvY2s6IHJhdyBibG9jayBpbnRlcnJ1cHQgcmVjaWV2ZWQKKyAqIEByYXdfdGZyOiByYXcgdHJmIGludGVycnVwdCByZWNlaXZlZAorICogQHJhd19ibG9jazogcmF3IGJsb2NrIGludGVycnVwdCByZWNlaXZlZAogICovCiBzdHJ1Y3QgaW50ZWxfbWlkX2RtYV9jaGFuIHsKIAlzdHJ1Y3QgZG1hX2NoYW4JCWNoYW47CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9tcGM1MTJ4X2RtYS5jIGIvZHJpdmVycy9kbWEvbXBjNTEyeF9kbWEuYwppbmRleCA0Zjk1ZDMxLi5iOWJhZTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9tcGM1MTJ4X2RtYS5jCisrKyBiL2RyaXZlcnMvZG1hL21wYzUxMnhfZG1hLmMKQEAgLTMyOCw3ICszMjgsNyBAQAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotLyogcHJvY2Nlc3MgY29tcGxldGVkIGRlc2NyaXB0b3JzICovCisvKiBwcm9jZXNzIGNvbXBsZXRlZCBkZXNjcmlwdG9ycyAqLwogc3RhdGljIHZvaWQgbXBjX2RtYV9wcm9jZXNzX2NvbXBsZXRlZChzdHJ1Y3QgbXBjX2RtYSAqbWRtYSkKIHsKIAlkbWFfY29va2llX3QgbGFzdF9jb29raWUgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvc2hkbWEuYyBiL2RyaXZlcnMvZG1hL3NoZG1hLmMKaW5kZXggNjQ1MWI1OC4uZDUwZGE0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvc2hkbWEuYworKysgYi9kcml2ZXJzL2RtYS9zaGRtYS5jCkBAIC04NjUsNyArODY1LDEyIEBACiAKIHN0YXRpYyBpcnFyZXR1cm5fdCBzaF9kbWFlX2VycihpbnQgaXJxLCB2b2lkICpkYXRhKQogewotCXJldHVybiBJUlFfUkVUVkFMKHNoX2RtYWVfcmVzZXQoZGF0YSkpOworCXN0cnVjdCBzaF9kbWFlX2RldmljZSAqc2hkZXYgPSBkYXRhOworCisJaWYgKGRtYW9yX3JlYWQoc2hkZXYpICYgRE1BT1JfQUUpCisJCXJldHVybiBJUlFfUkVUVkFMKHNoX2RtYWVfcmVzZXQoZGF0YSkpOworCWVsc2UKKwkJcmV0dXJuIElSUV9OT05FOwogfQogCiBzdGF0aWMgdm9pZCBkbWFlX2RvX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvc3RlX2RtYTQwLmMgYi9kcml2ZXJzL2RtYS9zdGVfZG1hNDAuYwppbmRleCBhZjk1NWRlLi45NGVlMTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9zdGVfZG1hNDAuYworKysgYi9kcml2ZXJzL2RtYS9zdGVfZG1hNDAuYwpAQCAtOTAsNyArOTAsNyBAQAogICogQGxsaV9sb2c6IFNhbWUgYXMgYWJvdmUgYnV0IGZvciBsb2dpY2FsIGNoYW5uZWxzLgogICogQGxsaV9wb29sOiBUaGUgcG9vbCB3aXRoIHR3byBlbnRyaWVzIHByZS1hbGxvY2F0ZWQuCiAgKiBAbGxpX2xlbjogTnVtYmVyIG9mIGxsaXMgb2YgY3VycmVudCBkZXNjcmlwdG9yLgotICogQGxsaV9jdXJyZW50OiBOdW1iZXIgb2YgdHJhbnNmZXJlZCBsbGlzLgorICogQGxsaV9jdXJyZW50OiBOdW1iZXIgb2YgdHJhbnNmZXJyZWQgbGxpcy4KICAqIEBsY2xhX2FsbG9jOiBOdW1iZXIgb2YgTENMQSBlbnRyaWVzIGFsbG9jYXRlZC4KICAqIEB0eGQ6IERNQSBlbmdpbmUgc3RydWN0LiBVc2VkIGZvciBhbW9uZyBvdGhlciB0aGluZ3MgZm9yIGNvbW11bmljYXRpb24KICAqIGR1cmluZyBhIHRyYW5zZmVyLgpAQCAtMTIxNCw3ICsxMjE0LDcgQEAKIAlyZXR1cm47CiAKICBlcnI6Ci0JLyogUmVzY3VlIG1hbm91dmVyIGlmIHJlY2VpdmluZyBkb3VibGUgaW50ZXJydXB0cyAqLworCS8qIFJlc2N1ZSBtYW5vZXV2cmUgaWYgcmVjZWl2aW5nIGRvdWJsZSBpbnRlcnJ1cHRzICovCiAJaWYgKGQ0MGMtPnBlbmRpbmdfdHggPiAwKQogCQlkNDBjLT5wZW5kaW5nX3R4LS07CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZDQwYy0+bG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL0tjb25maWcgYi9kcml2ZXJzL2VkYWMvS2NvbmZpZwppbmRleCBmYWMxYTIwLi5hZjFhMTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvS2NvbmZpZworKysgYi9kcml2ZXJzL2VkYWMvS2NvbmZpZwpAQCAtNDUsNyArNDUsNyBAQAogCWRlZmF1bHQgeQogCS0tLWhlbHAtLS0KIAkgIEVuYWJsZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBkZWNvZGUgTWFjaGluZSBDaGVjayBFeGNlcHRpb25zCi0JICBvY2N1cmluZyBvbiB5b3VyIG1hY2hpbmUgaW4gaHVtYW4tcmVhZGFibGUgZm9ybS4KKwkgIG9jY3VycmluZyBvbiB5b3VyIG1hY2hpbmUgaW4gaHVtYW4tcmVhZGFibGUgZm9ybS4KIAogCSAgWW91IHNob3VsZCBkZWZpbml0ZWx5IHNheSBZIGhlcmUgaW4gY2FzZSB5b3Ugd2FudCB0byBkZWNvZGUgTUNFcwogCSAgd2hpY2ggb2NjdXIgcmVhbGx5IGVhcmx5IHVwb24gYm9vdCwgYmVmb3JlIHRoZSBtb2R1bGUgaW5mcmFzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9jcGM5MjVfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2NwYzkyNV9lZGFjLmMKaW5kZXggYjlhNzgxYy4uODM3YWQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2NwYzkyNV9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL2NwYzkyNV9lZGFjLmMKQEAgLTgxNyw3ICs4MTcsNyBAQAogCX0KIH0KIAotLyogQ29udmVydCBjdXJyZW50IGJhY2stZ3JvdW5kIHNjcnViIHJhdGUgaW50byBieXRlL3NlYyBiYW5kd2l0aCAqLworLyogQ29udmVydCBjdXJyZW50IGJhY2stZ3JvdW5kIHNjcnViIHJhdGUgaW50byBieXRlL3NlYyBiYW5kd2lkdGggKi8KIHN0YXRpYyBpbnQgY3BjOTI1X2dldF9zZHJhbV9zY3J1Yl9yYXRlKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSkKIHsKIAlzdHJ1Y3QgY3BjOTI1X21jX3BkYXRhICpwZGF0YSA9IG1jaS0+cHZ0X2luZm87CmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvZWRhY19jb3JlLmggYi9kcml2ZXJzL2VkYWMvZWRhY19jb3JlLmgKaW5kZXggM2Q5NjUzNC4uZWVmYTM1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2VkYWNfY29yZS5oCisrKyBiL2RyaXZlcnMvZWRhYy9lZGFjX2NvcmUuaApAQCAtMTY0LDcgKzE2NCw3IEBACiAvKiBjaGlwc2V0IEVycm9yIERldGVjdGlvbiBhbmQgQ29ycmVjdGlvbiBjYXBhYmlsaXRpZXMgYW5kIG1vZGUgKi8KIGVudW0gZWRhY190eXBlIHsKIAlFREFDX1VOS05PV04gPSAwLAkvKiBVbmtub3duIGlmIEVDQyBpcyBhdmFpbGFibGUgKi8KLQlFREFDX05PTkUsCQkvKiBEb2VzbnQgc3VwcG9ydCBFQ0MgKi8KKwlFREFDX05PTkUsCQkvKiBEb2Vzbid0IHN1cHBvcnQgRUNDICovCiAJRURBQ19SRVNFUlZFRCwJCS8qIFJlc2VydmVkIEVDQyB0eXBlICovCiAJRURBQ19QQVJJVFksCQkvKiBEZXRlY3RzIHBhcml0eSBlcnJvcnMgKi8KIAlFREFDX0VDLAkJLyogRXJyb3IgQ2hlY2tpbmcgLSBubyBjb3JyZWN0aW9uICovCkBAIC0yMzMsNyArMjMzLDcgQEAKICAqCQkJb2YgdGhlc2UgaW4gcGFyYWxsZWwgcHJvdmlkZXMgNjQgYml0cyB3aGljaCBpcyBjb21tb24KICAqCQkJZm9yIGEgbWVtb3J5IHN0aWNrLgogICoKLSAqIE1lbW9yeSBTdGljazoJQSBwcmludGVkIGNpcmN1aXQgYm9hcmQgdGhhdCBhZ3JlZ2F0ZXMgbXVsdGlwbGUKKyAqIE1lbW9yeSBTdGljazoJQSBwcmludGVkIGNpcmN1aXQgYm9hcmQgdGhhdCBhZ2dyZWdhdGVzIG11bHRpcGxlCiAgKgkJCW1lbW9yeSBkZXZpY2VzIGluIHBhcmFsbGVsLiAgVGhpcyBpcyB0aGUgYXRvbWljCiAgKgkJCW1lbW9yeSBjb21wb25lbnQgdGhhdCBpcyBwdXJjaGFzZWFibGUgYnkgSm9lIGNvbnN1bWVyCiAgKgkJCWFuZCBsb2FkZWQgaW50byBhIG1lbW9yeSBzb2NrZXQuCkBAIC0zODUsNyArMzg1LDcgQEAKIAogCS8qIEdldCB0aGUgY3VycmVudCBzZHJhbSBtZW1vcnkgc2NydWIgcmF0ZSBmcm9tIHRoZSBpbnRlcm5hbAogCSAgIHJlcHJlc2VudGF0aW9uIGFuZCBjb252ZXJ0cyBpdCB0byB0aGUgY2xvc2VzdCBtYXRjaGluZwotCSAgIGJhbmR3aXRoIGluIGJ5dGVzL3NlYy4KKwkgICBiYW5kd2lkdGggaW4gYnl0ZXMvc2VjLgogCSAqLwogCWludCAoKmdldF9zZHJhbV9zY3J1Yl9yYXRlKSAoc3RydWN0IG1lbV9jdGxfaW5mbyAqIG1jaSk7CiAKQEAgLTgyMyw3ICs4MjMsNyBAQAogICogVGhlcmUgYXJlIGEgbGltaXRlZCBudW1iZXIgb2YgZXJyb3IgbG9nZ2luZyByZWdpc3RlcnMgdGhhdCBjYW4KICAqIGJlIGV4YXVzdGVkLiAgV2hlbiBhbGwgcmVnaXN0ZXJzIGFyZSBleGhhdXN0ZWQgYW5kIGFuIGFkZGl0aW9uYWwKICAqIGVycm9yIG9jY3VycyB0aGVuIGFuIGVycm9yIG92ZXJmbG93IHJlZ2lzdGVyIHJlY29yZHMgdGhhdCBhbgotICogZXJyb3Igb2NjdXJlZCBhbmQgdGhlIHR5cGUgb2YgZXJyb3IsIGJ1dCBkb2Vzbid0IGhhdmUgYW55CisgKiBlcnJvciBvY2N1cnJlZCBhbmQgdGhlIHR5cGUgb2YgZXJyb3IsIGJ1dCBkb2Vzbid0IGhhdmUgYW55CiAgKiBmdXJ0aGVyIGluZm9ybWF0aW9uLiAgVGhlIGNlL3VlIHZlcnNpb25zIG1ha2UgZm9yIGNsZWFuZXIKICAqIHJlcG9ydGluZyBsb2dpYyBhbmQgZnVuY3Rpb24gaW50ZXJmYWNlIC0gcmVkdWNlcyBjb25kaXRpb25hbAogICogc3RhdGVtZW50IGNsdXR0ZXIgYW5kIGV4dHJhIGZ1bmN0aW9uIGFyZ3VtZW50cy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9lZGFjX2RldmljZS5jIGIvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlLmMKaW5kZXggZDVlMTNjOS4uYTc0MDhjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlLmMKQEAgLTY3Miw3ICs2NzIsNyBAQAogCQlibG9jay0+Y291bnRlcnMuY2VfY291bnQrKzsKIAl9CiAKLQkvKiBQcm9wb2dhdGUgdGhlIGNvdW50IHVwIHRoZSAndG90YWxzJyB0cmVlICovCisJLyogUHJvcGFnYXRlIHRoZSBjb3VudCB1cCB0aGUgJ3RvdGFscycgdHJlZSAqLwogCWluc3RhbmNlLT5jb3VudGVycy5jZV9jb3VudCsrOwogCWVkYWNfZGV2LT5jb3VudGVycy5jZV9jb3VudCsrOwogCkBAIC03MTgsNyArNzE4LDcgQEAKIAkJYmxvY2stPmNvdW50ZXJzLnVlX2NvdW50Kys7CiAJfQogCi0JLyogUHJvcG9nYXRlIHRoZSBjb3VudCB1cCB0aGUgJ3RvdGFscycgdHJlZSAqLworCS8qIFByb3BhZ2F0ZSB0aGUgY291bnQgdXAgdGhlICd0b3RhbHMnIHRyZWUgKi8KIAlpbnN0YW5jZS0+Y291bnRlcnMudWVfY291bnQrKzsKIAllZGFjX2Rldi0+Y291bnRlcnMudWVfY291bnQrKzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2VkYWNfZGV2aWNlX3N5c2ZzLmMgYi9kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYwppbmRleCA0MDBkZTA3Li44NjY0OWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYworKysgYi9kcml2ZXJzL2VkYWMvZWRhY19kZXZpY2Vfc3lzZnMuYwpAQCAtNTMzLDcgKzUzMyw3IEBACiAJbWVtc2V0KCZibG9jay0+a29iaiwgMCwgc2l6ZW9mKHN0cnVjdCBrb2JqZWN0KSk7CiAKIAkvKiBidW1wIHRoZSBtYWluIGtvYmplY3QncyByZWZlcmVuY2UgY291bnQgZm9yIHRoaXMgY29udHJvbGxlcgotCSAqIGFuZCB0aGlzIGluc3RhbmNlIGlzIGRlcGVuZGFudCBvbiB0aGUgbWFpbgorCSAqIGFuZCB0aGlzIGluc3RhbmNlIGlzIGRlcGVuZGVudCBvbiB0aGUgbWFpbgogCSAqLwogCW1haW5fa29iaiA9IGtvYmplY3RfZ2V0KCZlZGFjX2Rldi0+a29iaik7CiAJaWYgKCFtYWluX2tvYmopIHsKQEAgLTYzNSw3ICs2MzUsNyBAQAogCWluc3RhbmNlLT5jdGwgPSBlZGFjX2RldjsKIAogCS8qIGJ1bXAgdGhlIG1haW4ga29iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhpcyBjb250cm9sbGVyCi0JICogYW5kIHRoaXMgaW5zdGFuY2UgaXMgZGVwZW5kYW50IG9uIHRoZSBtYWluCisJICogYW5kIHRoaXMgaW5zdGFuY2UgaXMgZGVwZW5kZW50IG9uIHRoZSBtYWluCiAJICovCiAJbWFpbl9rb2JqID0ga29iamVjdF9nZXQoJmVkYWNfZGV2LT5rb2JqKTsKIAlpZiAoIW1haW5fa29iaikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2VkYWNfbWMuYyBiL2RyaXZlcnMvZWRhYy9lZGFjX21jLmMKaW5kZXggYTRlOWRiMi4uMWQ4MDU2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2VkYWNfbWMuYworKysgYi9kcml2ZXJzL2VkYWMvZWRhY19tYy5jCkBAIC03MjQsNyArNzI0LDcgQEAKIAkJICogU29tZSBNQydzIGNhbiByZW1hcCBtZW1vcnkgc28gdGhhdCBpdCBpcyBzdGlsbCBhdmFpbGFibGUKIAkJICogYXQgYSBkaWZmZXJlbnQgYWRkcmVzcyB3aGVuIFBDSSBkZXZpY2VzIG1hcCBpbnRvIG1lbW9yeS4KIAkJICogTUMncyB0aGF0IGNhbid0IGRvIHRoaXMgbG9zZSB0aGUgbWVtb3J5IHdoZXJlIFBDSSBkZXZpY2VzCi0JCSAqIGFyZSBtYXBwZWQuICBUaGlzIG1hcHBpbmcgaXMgTUMgZGVwZW5kYW50IGFuZCBzbyB3ZSBjYWxsCisJCSAqIGFyZSBtYXBwZWQuICBUaGlzIG1hcHBpbmcgaXMgTUMgZGVwZW5kZW50IGFuZCBzbyB3ZSBjYWxsCiAJCSAqIGJhY2sgaW50byB0aGUgTUMgZHJpdmVyIGZvciBpdCB0byBtYXAgdGhlIE1DIHBhZ2UgdG8KIAkJICogYSBwaHlzaWNhbCAoQ1BVKSBwYWdlIHdoaWNoIGNhbiB0aGVuIGJlIG1hcHBlZCB0byBhIHZpcnR1YWwKIAkJICogcGFnZSAtIHdoaWNoIGNhbiB0aGVuIGJlIHNjcnViYmVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2VkYWNfbWNfc3lzZnMuYyBiL2RyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmMKaW5kZXggNzMxOTZmNy4uMjYzNDNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2VkYWNfbWNfc3lzZnMuYworKysgYi9kcml2ZXJzL2VkYWMvZWRhY19tY19zeXNmcy5jCkBAIC04NTAsNyArODUwLDcgQEAKIAogCS8qCiAJICogbG9vcCBpZiB0aGVyZSBhcmUgYXR0cmlidXRlcyBhbmQgdW50aWwgd2UgaGl0IGEgTlVMTCBlbnRyeQotCSAqIFJlbW92ZSBmaXJzdCBhbGwgdGhlIGF0cmlidXRlcworCSAqIFJlbW92ZSBmaXJzdCBhbGwgdGhlIGF0dHJpYnV0ZXMKIAkgKi8KIAl3aGlsZSAoc3lzZnNfYXR0cmliKSB7CiAJCWRlYnVnZjQoIiVzKCkgc3lzZnNfYXR0cmliID0gJXBcbiIsX19mdW5jX18sIHN5c2ZzX2F0dHJpYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvZWRhY19wY2lfc3lzZnMuYyBiL2RyaXZlcnMvZWRhYy9lZGFjX3BjaV9zeXNmcy5jCmluZGV4IDAyM2IwMWMuLjQ5NTE5OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9lZGFjX3BjaV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvZWRhYy9lZGFjX3BjaV9zeXNmcy5jCkBAIC0zNTIsNyArMzUyLDcgQEAKIAkJcmV0dXJuIDA7CiAKIAkvKiBGaXJzdCB0aW1lLCBzbyBjcmVhdGUgdGhlIG1haW4ga29iamVjdCBhbmQgaXRzCi0JICogY29udHJvbHMgYW5kIGF0cmlidXRlcworCSAqIGNvbnRyb2xzIGFuZCBhdHRyaWJ1dGVzCiAJICovCiAJZWRhY19jbGFzcyA9IGVkYWNfZ2V0X3N5c2ZzX2NsYXNzKCk7CiAJaWYgKGVkYWNfY2xhc3MgPT0gTlVMTCkgewpAQCAtNTUxLDcgKzU1MSw3IEBACiAvKgogICogIFBDSSBQYXJpdHkgcG9sbGluZwogICoKLSAqCUZ1Y250aW9uIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHBhcml0eSBzdGF0dXMKKyAqCUZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHBhcml0eSBzdGF0dXMKICAqCWFuZCBkZWNvZGUgaXQKICAqCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9pNTAwMF9lZGFjLmMgYi9kcml2ZXJzL2VkYWMvaTUwMDBfZWRhYy5jCmluZGV4IGE1Y2VmYWIuLjg3ZjQyN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9pNTAwMF9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL2k1MDAwX2VkYWMuYwpAQCAtMTM3Miw3ICsxMzcyLDcgQEAKIAkgKiBhY3R1YWwgbnVtYmVyIG9mIHNsb3RzL2RpbW1zIHBlciBjaGFubmVsLCB3ZSB0aHVzIHV0aWxpemUgdGhlCiAJICogcmVzb3VyY2UgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjaGlwc2V0LiBUaHVzLCB3ZSBtaWdodCBoYXZlCiAJICogaGF2ZSBtb3JlIERJTU1zIHBlciBjaGFubmVsIHRoYW4gYWN0dWFsbHkgb24gdGhlIG1vYm8sIGJ1dCB0aGlzCi0JICogYWxsb3dzIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCB1cHRvIHRoZSBjaGlwc2V0IG1heCwgd2l0aG91dAorCSAqIGFsbG93cyB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgdXAgdG8gdGhlIGNoaXBzZXQgbWF4LCB3aXRob3V0CiAJICogc29tZSBmYW5jeSBtb2JvIGRldGVybWluYXRpb24uCiAJICovCiAJaTUwMDBfZ2V0X2RpbW1fYW5kX2NoYW5uZWxfY291bnRzKHBkZXYsICZudW1fZGltbXNfcGVyX2NoYW5uZWwsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTUxMDBfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k1MTAwX2VkYWMuYwppbmRleCAwNDQ4ZGEwLi5iY2JkZWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvaTUxMDBfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9pNTEwMF9lZGFjLmMKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiBUaGUgaW50ZWwgNTEwMCBoYXMgdHdvIGluZGVwZW5kZW50IGNoYW5uZWxzLiBFREFDIGNvcmUgY3VycmVudGx5CiAgKiBjYW4gbm90IHJlZmxlY3QgdGhpcyBjb25maWd1cmF0aW9uIHNvIGluc3RlYWQgdGhlIGNoaXAtc2VsZWN0Ci0gKiByb3dzIGZvciBlYWNoIHJlc3BlY3RpdmUgY2hhbm5lbCBhcmUgbGF5ZWQgb3V0IG9uZSBhZnRlciBhbm90aGVyLAorICogcm93cyBmb3IgZWFjaCByZXNwZWN0aXZlIGNoYW5uZWwgYXJlIGxhaWQgb3V0IG9uZSBhZnRlciBhbm90aGVyLAogICogdGhlIGZpcnN0IGhhbGYgYmVsb25naW5nIHRvIGNoYW5uZWwgMCwgdGhlIHNlY29uZCBoYWxmIGJlbG9uZ2luZwogICogdG8gY2hhbm5lbCAxLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTU0MDBfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k1NDAwX2VkYWMuYwppbmRleCAzOGE5YmU5Li44MGE0NjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvaTU0MDBfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9pNTQwMF9lZGFjLmMKQEAgLTY0OCw3ICs2NDgsNyBAQAogCQlyZXR1cm47CiAJfQogCi0JLyogTWlzY2VsYW5lb3VzIGVycm9ycyAqLworCS8qIE1pc2NlbGxhbmVvdXMgZXJyb3JzICovCiAJZXJybnVtID0gZmluZF9maXJzdF9iaXQoJmFsbEVycm9ycywgQVJSQVlfU0laRShlcnJvcl9uYW1lKSk7CiAKIAlicmFuY2ggPSBleHRyYWN0X2ZiZGNoYW5faW5keChpbmZvLT5mZXJyX25mX2ZiZCk7CkBAIC0xMjQwLDcgKzEyNDAsNyBAQAogCSAqIGFjdHVhbCBudW1iZXIgb2Ygc2xvdHMvZGltbXMgcGVyIGNoYW5uZWwsIHdlIHRodXMgdXRpbGl6ZSB0aGUKIAkgKiByZXNvdXJjZSBhcyBzcGVjaWZpZWQgYnkgdGhlIGNoaXBzZXQuIFRodXMsIHdlIG1pZ2h0IGhhdmUKIAkgKiBoYXZlIG1vcmUgRElNTXMgcGVyIGNoYW5uZWwgdGhhbiBhY3R1YWxseSBvbiB0aGUgbW9ibywgYnV0IHRoaXMKLQkgKiBhbGxvd3MgdGhlIGRyaXZlciB0byBzdXBwb3J0IHVwdG8gdGhlIGNoaXBzZXQgbWF4LCB3aXRob3V0CisJICogYWxsb3dzIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCB1cCB0byB0aGUgY2hpcHNldCBtYXgsIHdpdGhvdXQKIAkgKiBzb21lIGZhbmN5IG1vYm8gZGV0ZXJtaW5hdGlvbi4KIAkgKi8KIAludW1fZGltbXNfcGVyX2NoYW5uZWwgPSBNQVhfRElNTVNfUEVSX0NIQU5ORUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTczMDBfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k3MzAwX2VkYWMuYwppbmRleCA3NmQxZjU3Li4zNjNjYzE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvaTczMDBfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9pNzMwMF9lZGFjLmMKQEAgLTEwNjUsNyArMTA2NSw3IEBACiAJICogYWN0dWFsIG51bWJlciBvZiBzbG90cy9kaW1tcyBwZXIgY2hhbm5lbCwgd2UgdGh1cyB1dGlsaXplIHRoZQogCSAqIHJlc291cmNlIGFzIHNwZWNpZmllZCBieSB0aGUgY2hpcHNldC4gVGh1cywgd2UgbWlnaHQgaGF2ZQogCSAqIGhhdmUgbW9yZSBESU1NcyBwZXIgY2hhbm5lbCB0aGFuIGFjdHVhbGx5IG9uIHRoZSBtb2JvLCBidXQgdGhpcwotCSAqIGFsbG93cyB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgdXB0byB0aGUgY2hpcHNldCBtYXgsIHdpdGhvdXQKKwkgKiBhbGxvd3MgdGhlIGRyaXZlciB0byBzdXBwb3J0IHVwIHRvIHRoZSBjaGlwc2V0IG1heCwgd2l0aG91dAogCSAqIHNvbWUgZmFuY3kgbW9ibyBkZXRlcm1pbmF0aW9uLgogCSAqLwogCW51bV9kaW1tc19wZXJfY2hhbm5lbCA9IE1BWF9TTE9UUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9pN2NvcmVfZWRhYy5jIGIvZHJpdmVycy9lZGFjL2k3Y29yZV9lZGFjLmMKaW5kZXggODExNTRhYi4uNDY1Y2JjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2k3Y29yZV9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL2k3Y29yZV9lZGFjLmMKQEAgLTE3NzIsNyArMTc3Miw3IEBACiAJLyoKIAkgKiBNQ0UgZmlyc3Qgc3RlcDogQ29weSBhbGwgbWNlIGVycm9ycyBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlcgogCSAqIFdlIHVzZSBhIGRvdWJsZSBidWZmZXJpbmcgaGVyZSwgdG8gcmVkdWNlIHRoZSByaXNrIG9mCi0JICogbG9vc2luZyBhbiBlcnJvci4KKwkgKiBsb3NpbmcgYW4gZXJyb3IuCiAJICovCiAJc21wX3JtYigpOwogCWNvdW50ID0gKHB2dC0+bWNlX291dCArIE1DRV9MT0dfTEVOIC0gcHZ0LT5tY2VfaW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvaTgyNDQzYnhneF9lZGFjLmMgYi9kcml2ZXJzL2VkYWMvaTgyNDQzYnhneF9lZGFjLmMKaW5kZXggNjc4NDA1YS4uNDMyOWQzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2k4MjQ0M2J4Z3hfZWRhYy5jCisrKyBiL2RyaXZlcnMvZWRhYy9pODI0NDNieGd4X2VkYWMuYwpAQCAtMjAzLDcgKzIwMyw3IEBACiAJCXJvd19oaWdoX2xpbWl0ID0gKCh1MzIpIGRyYmFyIDw8IDIzKTsKIAkJLyogZmluZCB0aGUgRFJBTSBDaGlwIFNlbGVjdCBCYXNlIGFkZHJlc3MgYW5kIG1hc2sgKi8KIAkJZGVidWdmMSgiTUMlZDogJXM6ICVzKCkgUm93PSVkLCAiCi0JCQkiQm91bmRyeSBBZGRyZXNzPSUjMHgsIExhc3QgPSAlIzB4XG4iLAorCQkJIkJvdW5kYXJ5IEFkZHJlc3M9JSMweCwgTGFzdCA9ICUjMHhcbiIsCiAJCQltY2ktPm1jX2lkeCwgX19GSUxFX18sIF9fZnVuY19fLCBpbmRleCwgcm93X2hpZ2hfbGltaXQsCiAJCQlyb3dfaGlnaF9saW1pdF9sYXN0KTsKIApAQCAtMzA1LDcgKzMwNSw3IEBACiAJaTgyNDQzYnhneF9pbml0X2Nzcm93cyhtY2ksIHBkZXYsIGVkYWNfbW9kZSwgbXR5cGUpOwogCiAJLyogTWFueSBCSU9TZXMgZG9uJ3QgY2xlYXIgZXJyb3IgZmxhZ3Mgb24gYm9vdCwgc28gZG8gdGhpcwotCSAqIGhlcmUsIG9yIHdlIGdldCAicGhhbnRvbSIgZXJyb3JzIG9jY3VyaW5nIGF0IG1vZHVsZS1sb2FkCisJICogaGVyZSwgb3Igd2UgZ2V0ICJwaGFudG9tIiBlcnJvcnMgb2NjdXJyaW5nIGF0IG1vZHVsZS1sb2FkCiAJICogdGltZS4gKi8KIAlwY2lfd3JpdGVfYml0czMyKHBkZXYsIEk4MjQ0M0JYR1hfRUFQLAogCQkJKEk4MjQ0M0JYR1hfRUFQX09GRlNFVF9TQkUgfApkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL21jZV9hbWRfaW5qLmMgYi9kcml2ZXJzL2VkYWMvbWNlX2FtZF9pbmouYwppbmRleCA3MzNhN2U3YS4uYTQ5ODdlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL21jZV9hbWRfaW5qLmMKKysrIGIvZHJpdmVycy9lZGFjL21jZV9hbWRfaW5qLmMKQEAgLTkwLDcgKzkwLDcgQEAKIAogCWlmICh2YWx1ZSA+IDUpCiAJCWlmIChib290X2NwdV9kYXRhLng4NiAhPSAweDE1IHx8IHZhbHVlID4gNikgewotCQkJcHJpbnRrKEtFUk5fRVJSICJOb24tZXhpc3RhbnQgTUNFIGJhbms6ICVsdVxuIiwgdmFsdWUpOworCQkJcHJpbnRrKEtFUk5fRVJSICJOb24tZXhpc3RlbnQgTUNFIGJhbms6ICVsdVxuIiwgdmFsdWUpOwogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL3I4MjYwMF9lZGFjLmMgYi9kcml2ZXJzL2VkYWMvcjgyNjAwX2VkYWMuYwppbmRleCA2YTgyMmM2Li42Nzg1MTM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvcjgyNjAwX2VkYWMuYworKysgYi9kcml2ZXJzL2VkYWMvcjgyNjAwX2VkYWMuYwpAQCAtMTIwLDcgKzEyMCw3IEBACiAJCQkJICogICAgICAgIHdyaXRlIDA9Tk9QCiAJCQkJICovCiAKLSNkZWZpbmUgUjgyNjAwX0RSQkEJMHg2MAkvKiArIDB4NjAuLjB4NjMgU0RSQU0gUm93IEJvdW5kcnkgQWRkcmVzcworI2RlZmluZSBSODI2MDBfRFJCQQkweDYwCS8qICsgMHg2MC4uMHg2MyBTRFJBTSBSb3cgQm91bmRhcnkgQWRkcmVzcwogCQkJCSAqICBSZWdpc3RlcnMKIAkJCQkgKgogCQkJCSAqIDc6MCAgQWRkcmVzcyBsaW5lcyAzMDoyNCAtIHVwcGVyIGxpbWl0IG9mCkBAIC0yMTcsNyArMjE3LDcgQEAKIHsKIAlzdHJ1Y3QgY3Nyb3dfaW5mbyAqY3Nyb3c7CiAJaW50IGluZGV4OwotCXU4IGRyYmFyOwkJLyogU0RSQU0gUm93IEJvdW5kcnkgQWRkcmVzcyBSZWdpc3RlciAqLworCXU4IGRyYmFyOwkJLyogU0RSQU0gUm93IEJvdW5kYXJ5IEFkZHJlc3MgUmVnaXN0ZXIgKi8KIAl1MzIgcm93X2hpZ2hfbGltaXQsIHJvd19oaWdoX2xpbWl0X2xhc3Q7CiAJdTMyIHJlZ19zZHJhbSwgZWNjX29uLCByb3dfYmFzZTsKIApAQCAtMjM2LDcgKzIzNiw3IEBACiAJCXJvd19oaWdoX2xpbWl0ID0gKCh1MzIpIGRyYmFyIDw8IDI0KTsKIC8qCQlyb3dfaGlnaF9saW1pdCA9ICgodTMyKWRyYmFyIDw8IDI0KSB8IDB4ZmZmZmZmVUw7ICovCiAKLQkJZGVidWdmMSgiJXMoKSBSb3c9JWQsIEJvdW5kcnkgQWRkcmVzcz0lIzB4LCBMYXN0ID0gJSMweFxuIiwKKwkJZGVidWdmMSgiJXMoKSBSb3c9JWQsIEJvdW5kYXJ5IEFkZHJlc3M9JSMweCwgTGFzdCA9ICUjMHhcbiIsCiAJCQlfX2Z1bmNfXywgaW5kZXgsIHJvd19oaWdoX2xpbWl0LCByb3dfaGlnaF9saW1pdF9sYXN0KTsKIAogCQkvKiBFbXB0eSByb3cgW3AuNTddICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2ZpcmV3aXJlL25ldC5jIGIvZHJpdmVycy9maXJld2lyZS9uZXQuYwppbmRleCA3ZWQwOGZkMS4uM2YwNGRkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9maXJld2lyZS9uZXQuYworKysgYi9kcml2ZXJzL2ZpcmV3aXJlL25ldC5jCkBAIC00NTMsNyArNDUzLDcgQEAKIAltZW1jcHkocGQtPnBidWYgKyBmcmFnX29mZiwgZnJhZ19idWYsIGZyYWdfbGVuKTsKIAogCS8qCi0JICogTW92ZSBsaXN0IGVudHJ5IHRvIGJlZ2lubmlnIG9mIGxpc3Qgc28gdGhhdCBvbGRlc3QgcGFydGlhbAorCSAqIE1vdmUgbGlzdCBlbnRyeSB0byBiZWdpbm5pbmcgb2YgbGlzdCBzbyB0aGF0IG9sZGVzdCBwYXJ0aWFsCiAJICogZGF0YWdyYW1zIHBlcmNvbGF0ZSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0CiAJICovCiAJbGlzdF9tb3ZlX3RhaWwoJnBkLT5wZF9saW5rLCAmcGVlci0+cGRfbGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vbWMzMzg4MC5jIGIvZHJpdmVycy9ncGlvL21jMzM4ODAuYwppbmRleCAwMGY2ZDI0Li40ZWM3OTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwaW8vbWMzMzg4MC5jCisrKyBiL2RyaXZlcnMvZ3Bpby9tYzMzODgwLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICAqIFRvIHNhdmUgdGltZSB3ZSBjYWNoZSB0aGVtIGhlcmUgaW4gbWVtb3J5CiAgKi8KIHN0cnVjdCBtYzMzODgwIHsKLQlzdHJ1Y3QgbXV0ZXgJbG9jazsJLyogcHJvdGVjdCBmcm9tIHNpbXVsdGFub3VzIGFjY2Vzc2VzICovCisJc3RydWN0IG11dGV4CWxvY2s7CS8qIHByb3RlY3QgZnJvbSBzaW11bHRhbmVvdXMgYWNjZXNzZXMgKi8KIAl1OAkJcG9ydF9jb25maWc7CiAJc3RydWN0IGdwaW9fY2hpcCBjaGlwOwogCXN0cnVjdCBzcGlfZGV2aWNlICpzcGk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCmluZGV4IDc5OWUxNDkuLjg3Mjc0N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCkBAIC0xNjk5LDcgKzE2OTksNyBAQAogCiAJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAKLQkvKiBUT0RPIGNoZWNrIGJ1ZmZlciBpcyBzdWZmaWNlbnRseSBsYXJnZSAqLworCS8qIFRPRE8gY2hlY2sgYnVmZmVyIGlzIHN1ZmZpY2llbnRseSBsYXJnZSAqLwogCS8qIFRPRE8gc2V0dXAgZGVzdHJ1Y3RvciBjYWxsYmFjayAqLwogCiAJZmIgPSBkZXYtPm1vZGVfY29uZmlnLmZ1bmNzLT5mYl9jcmVhdGUoZGV2LCBmaWxlX3ByaXYsIHIpOwpAQCAtMTc1MCw3ICsxNzUwLDcgQEAKIAogCW11dGV4X2xvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCW9iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwgKmlkLCBEUk1fTU9ERV9PQkpFQ1RfRkIpOwotCS8qIFRPRE8gY2hlY2sgdGhhdCB3ZSByZWFseSBnZXQgYSBmcmFtZWJ1ZmZlciBiYWNrLiAqLworCS8qIFRPRE8gY2hlY2sgdGhhdCB3ZSByZWFsbHkgZ2V0IGEgZnJhbWVidWZmZXIgYmFjay4gKi8KIAlpZiAoIW9iaikgewogCQlEUk1fRVJST1IoIm1vZGUgaW52YWxpZCBmcmFtZWJ1ZmZlciBpZFxuIik7CiAJCXJldCA9IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKaW5kZXggYWRkMTczNy4uNWQwMGIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW0uYwpAQCAtNTUxLDcgKzU1MSw3IEBACiAgKiBjb3JydXB0ZWQuCiAgKgogICogV2hlbiB0aGUgc2NhbiBsaXN0IGlzIGVtcHR5LCB0aGUgc2VsZWN0ZWQgbWVtb3J5IG5vZGVzIGNhbiBiZSBmcmVlZC4gQW4KLSAqIGltbWVkaWF0bHkgZm9sbG93aW5nIGRybV9tbV9zZWFyY2hfZnJlZSB3aXRoIGJlc3RfbWF0Y2ggPSAwIHdpbGwgdGhlbiByZXR1cm4KKyAqIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBkcm1fbW1fc2VhcmNoX2ZyZWUgd2l0aCBiZXN0X21hdGNoID0gMCB3aWxsIHRoZW4gcmV0dXJuCiAgKiB0aGUganVzdCBmcmVlZCBibG9jayAoYmVjYXVzZSBpdHMgYXQgdGhlIHRvcCBvZiB0aGUgZnJlZV9zdGFjayBsaXN0KS4KICAqCiAgKiBSZXR1cm5zIG9uZSBpZiB0aGlzIGJsb2NrIHNob3VsZCBiZSBldmljdGVkLCB6ZXJvIG90aGVyd2lzZS4gV2lsbCBhbHdheXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDUwMDQ3MjQuLjFjMWIyN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjMwLDcgKzYzMCw3IEBACiAJCSAqIEZsYWcgaWYgdGhlIGhhcmR3YXJlIGFwcGVhcnMgdG8gYmUgd2VkZ2VkLgogCQkgKgogCQkgKiBUaGlzIGlzIHNldCB3aGVuIGF0dGVtcHRzIHRvIGlkbGUgdGhlIGRldmljZSB0aW1lb3V0LgotCQkgKiBJdCBwcmV2ZW50cyBjb21tYW5kIHN1Ym1pc3Npb24gZnJvbSBvY2N1cmluZyBhbmQgbWFrZXMKKwkJICogSXQgcHJldmVudHMgY29tbWFuZCBzdWJtaXNzaW9uIGZyb20gb2NjdXJyaW5nIGFuZCBtYWtlcwogCQkgKiBldmVyeSBwZW5kaW5nIHJlcXVlc3QgZmFpbAogCQkgKi8KIAkJYXRvbWljX3Qgd2VkZ2VkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggMGRhZWZjYS4uY2I4NTc4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0yMTMsNyArMjEzLDcgQEAKIAkJCXJldHVybiBNT0RFX1BBTkVMOwogCX0KIAotCS8qIG9ubHkgcmVmdXNlIHRoZSBtb2RlIG9uIG5vbiBlRFAgc2luY2Ugd2UgaGF2ZSBzZWVuIHNvbWUgd2llcmQgZURQIHBhbmVscworCS8qIG9ubHkgcmVmdXNlIHRoZSBtb2RlIG9uIG5vbiBlRFAgc2luY2Ugd2UgaGF2ZSBzZWVuIHNvbWUgd2VpcmQgZURQIHBhbmVscwogCSAgIHdoaWNoIGFyZSBvdXRzaWRlIHNwZWMgdG9sZXJhbmNlcyBidXQgc29tZWhvdyB3b3JrIGJ5IG1hZ2ljICovCiAJaWYgKCFpc19lZHAoaW50ZWxfZHApICYmCiAJICAgIChpbnRlbF9kcF9saW5rX3JlcXVpcmVkKGNvbm5lY3Rvci0+ZGV2LCBpbnRlbF9kcCwgbW9kZS0+Y2xvY2spCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvX3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm9fcmVncy5oCmluZGV4IGEzODZiMDIuLjRmNGUyM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm9fcmVncy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm9fcmVncy5oCkBAIC0yMzAsNyArMjMwLDcgQEAKIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKIC8qKgotICogVGFrZXMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2Ygd2hpY2ggb3V0cHV0cyBhcmUgdGFyZ2V0dGVkIGJ5CisgKiBUYWtlcyBhIHN0cnVjdCBpbnRlbF9zZHZvX291dHB1dF9mbGFncyBvZiB3aGljaCBvdXRwdXRzIGFyZSB0YXJnZXRlZCBieQogICogZnV0dXJlIG91dHB1dCBjb21tYW5kcy4KICAqCiAgKiBBZmZlY3RlZCBjb21tYW5kcyBpbmNsdWUgU0VUX09VVFBVVF9USU1JTkdTX1BBUlRbMTJdLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhL21nYV9kbWEuYwppbmRleCAxZTFlYjFkLi41Y2NiNjVkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21nYS9tZ2FfZG1hLmMKQEAgLTQyNiw3ICs0MjYsNyBAQAogICogQm9vdHN0cmFwIHRoZSBkcml2ZXIgZm9yIEFHUCBETUEuCiAgKgogICogXHRvZG8KLSAqIEludmVzdGlnYXRlIHdoZXRoZXIgdGhlcmUgaXMgYW55IGJlbmlmaXQgdG8gc3RvcmluZyB0aGUgV0FSUCBtaWNyb2NvZGUgaW4KKyAqIEludmVzdGlnYXRlIHdoZXRoZXIgdGhlcmUgaXMgYW55IGJlbmVmaXQgdG8gc3RvcmluZyB0aGUgV0FSUCBtaWNyb2NvZGUgaW4KICAqIEFHUCBtZW1vcnkuICBJZiBub3QsIHRoZSBtaWNyb2NvZGUgbWF5IGFzIHdlbGwgYWx3YXlzIGJlIHB1dCBpbiBQQ0kKICAqIG1lbW9yeS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2NoYW5uZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY2hhbm5lbC5jCmluZGV4IDM4MzcwOTAuLjRjZWEzNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY2hhbm5lbC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY2hhbm5lbC5jCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkvKiBkaXNhYmxlIHRoZSBmaWZvIGNhY2hlcyAqLwogCXBmaWZvLT5yZWFzc2lnbihkZXYsIGZhbHNlKTsKIAotCS8qIENvbnN0cnVjdCBpbml0YWwgUkFNRkMgZm9yIG5ldyBjaGFubmVsICovCisJLyogQ29uc3RydWN0IGluaXRpYWwgUkFNRkMgZm9yIG5ldyBjaGFubmVsICovCiAJcmV0ID0gcGZpZm8tPmNyZWF0ZV9jb250ZXh0KGNoYW4pOwogCWlmIChyZXQpIHsKIAkJbm91dmVhdV9jaGFubmVsX3B1dCgmY2hhbik7CkBAIC0yNzgsNyArMjc4LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIG5vb25lIHdhbnRzIHRoZSBjaGFubmVsIGFueW1vcmUgKi8KKwkvKiBubyBvbmUgd2FudHMgdGhlIGNoYW5uZWwgYW55bW9yZSAqLwogCU5WX0RFQlVHKGRldiwgImZyZWVpbmcgY2hhbm5lbCAlZFxuIiwgY2hhbi0+aWQpOwogCW5vdXZlYXVfZGVidWdmc19jaGFubmVsX2ZpbmkoY2hhbik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Rydi5oCmluZGV4IGZmZjE4MGEuLjU3ZTUzMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kcnYuaApAQCAtMjE2LDcgKzIxNiw3IEBACiAJLyogbWFwcGluZyBvZiB0aGUgZmlmbyBpdHNlbGYgKi8KIAlzdHJ1Y3QgZHJtX2xvY2FsX21hcCAqbWFwOwogCi0JLyogbWFwcGluZyBvZiB0aGUgcmVncyBjb250cm9saW5nIHRoZSBmaWZvICovCisJLyogbWFwcGluZyBvZiB0aGUgcmVncyBjb250cm9sbGluZyB0aGUgZmlmbyAqLwogCXZvaWQgX19pb21lbSAqdXNlcjsKIAl1aW50MzJfdCB1c2VyX2dldDsKIAl1aW50MzJfdCB1c2VyX3B1dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfc3RhdGUuYwppbmRleCA0ZmNiZDA5Li41YmIyODU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X3N0YXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9zdGF0ZS5jCkBAIC05NjMsNyArOTYzLDcgQEAKIAlpZiAocmV0KQogCQlnb3RvIGVycl9tbWlvOwogCi0JLyogTWFwIFBSQU1JTiBCQVIsIG9yIG9uIG9sZGVyIGNhcmRzLCB0aGUgYXBlcnR1cmUgd2l0aGluZyBCQVIwICovCisJLyogTWFwIFBSQU1JTiBCQVIsIG9yIG9uIG9sZGVyIGNhcmRzLCB0aGUgYXBlcnR1cmUgd2l0aGluIEJBUjAgKi8KIAlpZiAoZGV2X3ByaXYtPmNhcmRfdHlwZSA+PSBOVl80MCkgewogCQlpbnQgcmFtaW5fYmFyID0gMjsKIAkJaWYgKHBjaV9yZXNvdXJjZV9sZW4oZGV2LT5wZGV2LCByYW1pbl9iYXIpID09IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfY3J0Yy5jCmluZGV4IGEyNjBmYmIuLjc0OGI5ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfY3J0Yy5jCkBAIC0xNjQsNyArMTY0LDcgQEAKIAlOVl9ERUJVR19LTVMoZGV2LCAiU2V0dGluZyBkcG1zIG1vZGUgJWQgb24gQ1JUQyAlZFxuIiwgbW9kZSwKIAkJCQkJCQludl9jcnRjLT5pbmRleCk7CiAKLQlpZiAobnZfY3J0Yy0+bGFzdF9kcG1zID09IG1vZGUpIC8qIERvbid0IGRvIHVubmVjZXNhcnkgbW9kZSBjaGFuZ2VzLiAqLworCWlmIChudl9jcnRjLT5sYXN0X2RwbXMgPT0gbW9kZSkgLyogRG9uJ3QgZG8gdW5uZWNlc3NhcnkgbW9kZSBjaGFuZ2VzLiAqLwogCQlyZXR1cm47CiAKIAludl9jcnRjLT5sYXN0X2RwbXMgPSBtb2RlOwpAQCAtNjc3LDcgKzY3Nyw3IEBACiAKIAlOVkJsYW5rU2NyZWVuKGRldiwgbnZfY3J0Yy0+aW5kZXgsIHRydWUpOwogCi0JLyogU29tZSBtb3JlIHByZXBlcmF0aW9uLiAqLworCS8qIFNvbWUgbW9yZSBwcmVwYXJhdGlvbi4gKi8KIAlOVldyaXRlQ1JUQyhkZXYsIG52X2NydGMtPmluZGV4LCBOVl9QQ1JUQ19DT05GSUcsIE5WX1BDUlRDX0NPTkZJR19TVEFSVF9BRERSRVNTX05PTl9WR0EpOwogCWlmIChkZXZfcHJpdi0+Y2FyZF90eXBlID09IE5WXzQwKSB7CiAJCXVpbnQzMl90IHJlZzkwMCA9IE5WUmVhZFJBTURBQyhkZXYsIG52X2NydGMtPmluZGV4LCBOVl9QUkFNREFDXzkwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjQwX2dyYXBoLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjQwX2dyYXBoLmMKaW5kZXggMThkMzBjMi4uZmNlYjQ0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnY0MF9ncmFwaC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252NDBfZ3JhcGguYwpAQCAtMTgxLDcgKzE4MSw3IEBACiAJCSAgTlY0MF9QR1JBUEhfQ1RYQ1RMX0NVUl9MT0FERUQpOwogCS8qIDB4MzJFMCByZWNvcmRzIHRoZSBpbnN0YW5jZSBhZGRyZXNzIG9mIHRoZSBhY3RpdmUgRklGTydzIFBHUkFQSAogCSAqIGNvbnRleHQuICBJZiBhdCBhbnkgdGltZSB0aGlzIGRvZXNuJ3QgbWF0Y2ggMHg0MDAzMkMsIHlvdSB3aWxsCi0JICogcmVjaWV2ZSBQR1JBUEhfSU5UUl9DT05URVhUX1NXSVRDSAorCSAqIHJlY2VpdmUgUEdSQVBIX0lOVFJfQ09OVEVYVF9TV0lUQ0gKIAkgKi8KIAludl93cjMyKGRldiwgTlY0MF9QRklGT19HUkNUWF9JTlNUQU5DRSwgaW5zdCk7CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zLmgKaW5kZXggMDRiMjY5ZC4uN2ZkODg0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3MuaApAQCAtNzM4LDEzICs3MzgsMTMgQEAKIHsKICNpZiBBVE9NX0JJR19FTkRJQU4KICAgICBVQ0hBUiB1Y1Jlc2VydmVkMToxOwotICAgIFVDSEFSIHVjRGlnU2VsOjM7ICAgICAgICAgICAgIC8vID0wLzEvMi8zLzQvNTogRElHMC8xLzIvMy80LzUgKEluIHJlZ2lzdGVyIHNwZWMgYWxzbyByZWZlcmVkIGFzIERJR0EvQi9DL0QvRS9GKQorICAgIFVDSEFSIHVjRGlnU2VsOjM7ICAgICAgICAgICAgIC8vID0wLzEvMi8zLzQvNTogRElHMC8xLzIvMy80LzUgKEluIHJlZ2lzdGVyIHNwZWMgYWxzbyByZWZlcnJlZCBhcyBESUdBL0IvQy9EL0UvRikKICAgICBVQ0hBUiB1Y1Jlc2VydmVkOjM7CiAgICAgVUNIQVIgdWNEUExpbmtSYXRlOjE7ICAgICAgICAgLy8gPTA6IDEuNjJHaHosID0xOiAyLjdHaHoKICNlbHNlCiAgICAgVUNIQVIgdWNEUExpbmtSYXRlOjE7ICAgICAgICAgLy8gPTA6IDEuNjJHaHosID0xOiAyLjdHaHoKICAgICBVQ0hBUiB1Y1Jlc2VydmVkOjM7Ci0gICAgVUNIQVIgdWNEaWdTZWw6MzsgICAgICAgICAgICAgLy8gPTAvMS8yLzMvNC81OiBESUcwLzEvMi8zLzQvNSAoSW4gcmVnaXN0ZXIgc3BlYyBhbHNvIHJlZmVyZWQgYXMgRElHQS9CL0MvRC9FL0YpCisgICAgVUNIQVIgdWNEaWdTZWw6MzsgICAgICAgICAgICAgLy8gPTAvMS8yLzMvNC81OiBESUcwLzEvMi8zLzQvNSAoSW4gcmVnaXN0ZXIgc3BlYyBhbHNvIHJlZmVycmVkIGFzIERJR0EvQi9DL0QvRS9GKQogICAgIFVDSEFSIHVjUmVzZXJ2ZWQxOjE7CiAjZW5kaWYKIH1BVE9NX0RJR19FTkNPREVSX0NPTkZJR19WMzsKQEAgLTc4NSwxMyArNzg1LDEzIEBACiB7CiAjaWYgQVRPTV9CSUdfRU5ESUFOCiAgICAgVUNIQVIgdWNSZXNlcnZlZDE6MTsKLSAgICBVQ0hBUiB1Y0RpZ1NlbDozOyAgICAgICAgICAgICAvLyA9MC8xLzIvMy80LzU6IERJRzAvMS8yLzMvNC81IChJbiByZWdpc3RlciBzcGVjIGFsc28gcmVmZXJlZCBhcyBESUdBL0IvQy9EL0UvRikKKyAgICBVQ0hBUiB1Y0RpZ1NlbDozOyAgICAgICAgICAgICAvLyA9MC8xLzIvMy80LzU6IERJRzAvMS8yLzMvNC81IChJbiByZWdpc3RlciBzcGVjIGFsc28gcmVmZXJyZWQgYXMgRElHQS9CL0MvRC9FL0YpCiAgICAgVUNIQVIgdWNSZXNlcnZlZDoyOwogICAgIFVDSEFSIHVjRFBMaW5rUmF0ZToyOyAgICAgICAgIC8vID0wOiAxLjYyR2h6LCA9MTogMi43R2h6LCAyPTUuNEdoeiAgICA8PSBDaGFuZ2VkIGNvbXBhcmluZyB0byBwcmV2aW91cyB2ZXJzaW9uCiAjZWxzZQogICAgIFVDSEFSIHVjRFBMaW5rUmF0ZToyOyAgICAgICAgIC8vID0wOiAxLjYyR2h6LCA9MTogMi43R2h6LCAyPTUuNEdoeiAgICA8PSBDaGFuZ2VkIGNvbXBhcmluZyB0byBwcmV2aW91cyB2ZXJzaW9uCiAgICAgVUNIQVIgdWNSZXNlcnZlZDoyOwotICAgIFVDSEFSIHVjRGlnU2VsOjM7ICAgICAgICAgICAgIC8vID0wLzEvMi8zLzQvNTogRElHMC8xLzIvMy80LzUgKEluIHJlZ2lzdGVyIHNwZWMgYWxzbyByZWZlcmVkIGFzIERJR0EvQi9DL0QvRS9GKQorICAgIFVDSEFSIHVjRGlnU2VsOjM7ICAgICAgICAgICAgIC8vID0wLzEvMi8zLzQvNTogRElHMC8xLzIvMy80LzUgKEluIHJlZ2lzdGVyIHNwZWMgYWxzbyByZWZlcnJlZCBhcyBESUdBL0IvQy9EL0UvRikKICAgICBVQ0hBUiB1Y1Jlc2VydmVkMToxOwogI2VuZGlmCiB9QVRPTV9ESUdfRU5DT0RFUl9DT05GSUdfVjQ7CkBAIC0yMTI2LDcgKzIxMjYsNyBAQAogLy8gU3RydWN0dXJlcyB1c2VkIGluIEZpcm13YXJlSW5mb1RhYmxlCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8JCiAKLS8vIHVzQklPU0NhcGFiaWxpdHkgRGVmaW50aW9uOgorLy8gdXNCSU9TQ2FwYWJpbGl0eSBEZWZpbml0aW9uOgogLy8gQml0IDAgPSAwOiBCaW9zIGltYWdlIGlzIG5vdCBQb3N0ZWQsID0xOkJpb3MgaW1hZ2UgaXMgUG9zdGVkOyAKIC8vIEJpdCAxID0gMDogRHVhbCBDUlRDIGlzIG5vdCBzdXBwb3J0ZWQsID0xOiBEdWFsIENSVEMgaXMgc3VwcG9ydGVkOyAKIC8vIEJpdCAyID0gMDogRXh0ZW5kZWQgRGVza3RvcCBpcyBub3Qgc3VwcG9ydGVkLCA9MTogRXh0ZW5kZWQgRGVza3RvcCBpcyBzdXBwb3J0ZWQ7IApAQCAtMzM0MSw3ICszMzQxLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwkKIC8vIFN0cnVjdHVyZSB1c2VkIGluIEFuYWxvZ1RWX0luZm9UYWJsZSAoVG9wIGxldmVsKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCQotLy91Y1RWQm9vdFVwRGVmYXVsdFN0ZCBkZWZpbml0b246CisvL3VjVFZCb290VXBEZWZhdWx0U3RkIGRlZmluaXRpb246CiAKIC8vQVRPTV9UVl9OVFNDICAgICAgICAgICAgICAgIDEKIC8vQVRPTV9UVl9OVFNDSiAgICAgICAgICAgICAgIDIKQEAgLTM4MTYsNyArMzgxNiw3IEBACiAgIFVDSEFSICAgICAgICAgICAgICAgICAgICBSZXNlcnZlZCBbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgcG90ZW50aWFsIGV4cGFuc2lvbgogfUFUT01fRVhURVJOQUxfRElTUExBWV9DT05ORUNUSU9OX0lORk87CiAKLS8vUmVsYXRlZCBkZWZpbml0aW9ucywgYWxsIHJlY29yZHMgYXJlIGRpZmZlcm50IGJ1dCB0aGV5IGhhdmUgYSBjb21tb25kIGhlYWRlcgorLy9SZWxhdGVkIGRlZmluaXRpb25zLCBhbGwgcmVjb3JkcyBhcmUgZGlmZmVyZW50IGJ1dCB0aGV5IGhhdmUgYSBjb21tb25kIGhlYWRlcgogdHlwZWRlZiBzdHJ1Y3QgX0FUT01fQ09NTU9OX1JFQ09SRF9IRUFERVIKIHsKICAgVUNIQVIgICAgICAgICAgICAgICB1Y1JlY29yZFR5cGU7ICAgICAgICAgICAgICAgICAgICAgIC8vQW4gZW11biB0byBpbmRpY2F0ZSB0aGUgcmVjb3JkIHR5cGUKQEAgLTQzNjUsMTQgKzQzNjUsMTQgQEAKIHVsQ1NSX00zX0FSQl9DTlRMX0RFRkFVTFRbMTBdOiAgICBBcnJheXMgd2l0aCB2YWx1ZXMgZm9yIENTUiBNMyBhcmJpdGVyIGZvciBkZWZhdWx0CiB1bENTUl9NM19BUkJfQ05UTF9VVkRbMTBdOiAgICAgICAgQXJyYXlzIHdpdGggdmFsdWVzIGZvciBDU1IgTTMgYXJiaXRlciBmb3IgVVZEIHBsYXliYWNrLgogdWxDU1JfTTNfQVJCX0NOVExfRlMzRFsxMF06ICAgICAgIEFycmF5cyB3aXRoIHZhbHVlcyBmb3IgQ1NSIE0zIGFyYml0ZXIgZm9yIEZ1bGwgU2NyZWVuIDNEIGFwcGxpY2F0aW9ucy4KLXNBdmFpbF9TQ0xLWzVdOiAgICAgICAgICAgICAgICAgICBBcnJheXMgdG8gcHJvdmlkZSBhdmFpbGFiZSBsaXN0IG9mIFNMQ0sgYW5kIGNvcnJlc3BvbmRpbmcgdm9sdGFnZSwgb3JkZXIgZnJvbSBsb3cgdG8gaGlnaCAgCitzQXZhaWxfU0NMS1s1XTogICAgICAgICAgICAgICAgICAgQXJyYXlzIHRvIHByb3ZpZGUgYXZhaWxhYmxlIGxpc3Qgb2YgU0xDSyBhbmQgY29ycmVzcG9uZGluZyB2b2x0YWdlLCBvcmRlciBmcm9tIGxvdyB0byBoaWdoICAKIHVsR01DUmVzdG9yZVJlc2V0VGltZTogICAgICAgICAgICBHTUMgcG93ZXIgcmVzdG9yZSBhbmQgR01DIHJlc2V0IHRpbWUgdG8gY2FsY3VsYXRlIGRhdGEgcmVjb25uZWN0aW9uIGxhdGVuY3kuIFVuaXQgaW4gbnMuIAogdWxNaW5pbXVtTkNsazogICAgICAgICAgICAgICAgICAgIE1pbmltdW0gTkNMSyBzcGVlZCBhbW9uZyBhbGwgTkItUHN0YXRlcyB0byBjYWxjdWFsdGUgZGF0YSByZWNvbm5lY3Rpb24gbGF0ZW5jeS4gVW5pdCBpbiAxMGtIei4gCiB1bElkbGVOQ2xrOiAgICAgICAgICAgICAgICAgICAgICAgTkNMSyBzcGVlZCB3aGlsZSBtZW1vcnkgcnVucyBpbiBzZWxmLXJlZnJlc2ggc3RhdGUuIFVuaXQgaW4gMTBrSHouCiB1bEREUl9ETExfUG93ZXJVcFRpbWU6ICAgICAgICAgICAgRERSIFBIWSBETEwgcG93ZXIgdXAgdGltZS4gVW5pdCBpbiBucy4KIHVsRERSX1BMTF9Qb3dlclVwVGltZTogICAgICAgICAgICBERFIgUEhZIFBMTCBwb3dlciB1cCB0aW1lLiBVbml0IGluIG5zLgotdXNQQ0lFQ2xrU1NQZXJjZW50YWdlOiAgICAgICAgICAgIFBDSUUgQ2xvY2sgU3ByZWQgU3BlY3RydW0gUGVyY2VudGFnZSBpbiB1bml0IDAuMDElOyAxMDAgbWVhbiAxJS4KLXVzUENJRUNsa1NTVHlwZTogICAgICAgICAgICAgICAgICBQQ0lFIENsb2NrIFNwcmVkIFNwZWN0cnVtIFR5cGUuIDAgZm9yIERvd24gc3ByZWFkKGRlZmF1bHQpOyAxIGZvciBDZW50ZXIgc3ByZWFkLgordXNQQ0lFQ2xrU1NQZXJjZW50YWdlOiAgICAgICAgICAgIFBDSUUgQ2xvY2sgU3ByZWFkIFNwZWN0cnVtIFBlcmNlbnRhZ2UgaW4gdW5pdCAwLjAxJTsgMTAwIG1lYW4gMSUuCit1c1BDSUVDbGtTU1R5cGU6ICAgICAgICAgICAgICAgICAgUENJRSBDbG9jayBTcHJlYWQgU3BlY3RydW0gVHlwZS4gMCBmb3IgRG93biBzcHJlYWQoZGVmYXVsdCk7IDEgZm9yIENlbnRlciBzcHJlYWQuCiB1c0x2ZHNTU1BlcmNlbnRhZ2U6ICAgICAgICAgICAgICAgTFZEUyBwYW5lbCAoIG5vdCBpbmNsdWRlIGVEUCApIFNwcmVhZCBTcGVjdHJ1bSBQZXJjZW50YWdlIGluIHVuaXQgb2YgMC4wMSUsID0wLCB1c2UgVkJJT1MgZGVmYXVsdCBzZXR0aW5nLiAKIHVzTHZkc1NTcHJlYWRSYXRlSW4xMEh6OiAgICAgICAgICBMVkRTIHBhbmVsICggbm90IGluY2x1ZGUgZURQICkgU3ByZWFkIFNwZWN0cnVtIGZyZXF1ZW5jeSBpbiB1bml0IG9mIDEwSHosID0wLCB1c2UgVkJJT1MgZGVmYXVsdCBzZXR0aW5nLiAKIHVzSERNSVNTUGVyY2VudGFnZTogICAgICAgICAgICAgICBIRE1JIFNwcmVhZCBTcGVjdHJ1bSBQZXJjZW50YWdlIGluIHVuaXQgMC4wMSU7IDEwMCBtZWFuIDElLCAgPTAsIHVzZSBWQklPUyBkZWZhdWx0IHNldHRpbmcuIApAQCAtNDU1NSw3ICs0NTU1LDcgQEAKICNkZWZpbmUgQVRPTV9TMF9TWVNURU1fUE9XRVJfU1RBVEVfVkFMVUVfTElURUFDIDMKICNkZWZpbmUgQVRPTV9TMF9TWVNURU1fUE9XRVJfU1RBVEVfVkFMVUVfTElUMkFDIDQKIAotLy9CeXRlIGFsaWduZWQgZGVmaW50aW9uIGZvciBCSU9TIHVzYWdlCisvL0J5dGUgYWxpZ25lZCBkZWZpbml0aW9uIGZvciBCSU9TIHVzYWdlCiAjZGVmaW5lIEFUT01fUzBfQ1JUMV9NT05PYjAgICAgICAgICAgICAgMHgwMQogI2RlZmluZSBBVE9NX1MwX0NSVDFfQ09MT1JiMCAgICAgICAgICAgIDB4MDIKICNkZWZpbmUgQVRPTV9TMF9DUlQxX01BU0tiMCAgICAgICAgICAgICAoQVRPTV9TMF9DUlQxX01PTk9iMCtBVE9NX1MwX0NSVDFfQ09MT1JiMCkKQEAgLTQ2MjEsNyArNDYyMSw3IEBACiAjZGVmaW5lIEFUT01fUzJfRElTUExBWV9ST1RBVElPTl9BTkdMRV9NQVNLICAgMHhDMDAwMDAwMEwKIAogCi0vL0J5dGUgYWxpZ25lZCBkZWZpbnRpb24gZm9yIEJJT1MgdXNhZ2UKKy8vQnl0ZSBhbGlnbmVkIGRlZmluaXRpb24gZm9yIEJJT1MgdXNhZ2UKICNkZWZpbmUgQVRPTV9TMl9UVjFfU1RBTkRBUkRfTUFTS2IwICAgICAweDBGCiAjZGVmaW5lIEFUT01fUzJfQ1VSUkVOVF9CTF9MRVZFTF9NQVNLYjEgMHhGRgogI2RlZmluZSBBVE9NX1MyX0RFVklDRV9EUE1TX1NUQVRFYjIgICAgIDB4MDEKQEAgLTQ2NzEsNyArNDY3MSw3IEBACiAjZGVmaW5lIEFUT01fUzNfQUxMT1dfRkFTVF9QV1JfU1dJVENIICAgMHg0MDAwMDAwMEwKICNkZWZpbmUgQVRPTV9TM19SUVNUX0dQVV9VU0VfTUlOX1BXUiAgICAweDgwMDAwMDAwTAogCi0vL0J5dGUgYWxpZ25lZCBkZWZpbnRpb24gZm9yIEJJT1MgdXNhZ2UKKy8vQnl0ZSBhbGlnbmVkIGRlZmluaXRpb24gZm9yIEJJT1MgdXNhZ2UKICNkZWZpbmUgQVRPTV9TM19DUlQxX0FDVElWRWIwICAgICAgICAgICAweDAxCiAjZGVmaW5lIEFUT01fUzNfTENEMV9BQ1RJVkViMCAgICAgICAgICAgMHgwMgogI2RlZmluZSBBVE9NX1MzX1RWMV9BQ1RJVkViMCAgICAgICAgICAgIDB4MDQKQEAgLTQ3MDcsNyArNDcwNyw3IEBACiAjZGVmaW5lIEFUT01fUzRfTENEMV9SRUZSRVNIX01BU0sgICAgICAgMHgwMDAwRkYwMEwKICNkZWZpbmUgQVRPTV9TNF9MQ0QxX1JFRlJFU0hfU0hJRlQgICAgICA4CiAKLS8vQnl0ZSBhbGlnbmVkIGRlZmludGlvbiBmb3IgQklPUyB1c2FnZQorLy9CeXRlIGFsaWduZWQgZGVmaW5pdGlvbiBmb3IgQklPUyB1c2FnZQogI2RlZmluZSBBVE9NX1M0X0xDRDFfUEFORUxfSURfTUFTS2IwCSAgMHgwRkYKICNkZWZpbmUgQVRPTV9TNF9MQ0QxX1JFRlJFU0hfTUFTS2IxCQkgIEFUT01fUzRfTENEMV9QQU5FTF9JRF9NQVNLYjAKICNkZWZpbmUgQVRPTV9TNF9WUkFNX0lORk9fTUFTS2IyICAgICAgICBBVE9NX1M0X0xDRDFfUEFORUxfSURfTUFTS2IwCkBAIC00Nzg2LDcgKzQ3ODYsNyBAQAogI2RlZmluZSBBVE9NX1M2X1ZSSV9CUklHSFRORVNTX0NIQU5HRSAgICAgICAweDQwMDAwMDAwTAogI2RlZmluZSBBVE9NX1M2X0NPTkZJR19ESVNQTEFZX0NIQU5HRV9NQVNLICAweDgwMDAwMDAwTAogCi0vL0J5dGUgYWxpZ25lZCBkZWZpbnRpb24gZm9yIEJJT1MgdXNhZ2UKKy8vQnl0ZSBhbGlnbmVkIGRlZmluaXRpb24gZm9yIEJJT1MgdXNhZ2UKICNkZWZpbmUgQVRPTV9TNl9ERVZJQ0VfQ0hBTkdFYjAgICAgICAgICAweDAxCiAjZGVmaW5lIEFUT01fUzZfU0NBTEVSX0NIQU5HRWIwICAgICAgICAgMHgwMgogI2RlZmluZSBBVE9NX1M2X0xJRF9DSEFOR0ViMCAgICAgICAgICAgIDB4MDQKQEAgLTUwMjcsNyArNTAyNyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IF9NRU1PUllfQ0xFQU5fVVBfUEFSQU1FVEVSUwogewotICBVU0hPUlQgIHVzTWVtb3J5U3RhcnQ7ICAgICAgICAgICAgICAgIC8vaW4gOEtiIGJvdW5kcnksIG9mZnNldCBmcm9tIG1lbW9yeSBiYXNlIGFkZHJlc3MKKyAgVVNIT1JUICB1c01lbW9yeVN0YXJ0OyAgICAgICAgICAgICAgICAvL2luIDhLYiBib3VuZGFyeSwgb2Zmc2V0IGZyb20gbWVtb3J5IGJhc2UgYWRkcmVzcwogICBVU0hPUlQgIHVzTWVtb3J5U2l6ZTsgICAgICAgICAgICAgICAgIC8vOEtiIGJsb2NrcyBhbGlnbmVkCiB9TUVNT1JZX0NMRUFOX1VQX1BBUkFNRVRFUlM7CiAjZGVmaW5lIE1FTU9SWV9DTEVBTl9VUF9QU19BTExPQ0FUSU9OIE1FTU9SWV9DTEVBTl9VUF9QQVJBTUVURVJTCkBAIC02ODU1LDcgKzY4NTUsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAKLS8vIEZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgZm9yIGNvbXBhdGlibGl0eSBpc3N1ZSBpbiBkaWZmZXJlbnQgU1cgY29tcG9uZW50cy4gCisvLyBGb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIGZvciBjb21wYXRpYmlsaXR5IGlzc3VlIGluIGRpZmZlcmVudCBTVyBjb21wb25lbnRzLiAKICNkZWZpbmUgQVRPTV9NQVNURVJfREFUQV9UQUJMRV9SRVZJU0lPTiAgIDB4MDEKICNkZWZpbmUgT2JqZWN0X0luZm8JCQkJCQkJCQkJCQlPYmplY3RfSGVhZGVyCQkJCiAjZGVmaW5lCUFkanVzdEFSQl9TRVEJCQkJCQkJCQkJCU1DX0luaXRQYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVuX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2V2ZXJncmVlbl9jcy5jCmluZGV4IGVkZGU5MGIuLjIzZDM2NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vZXZlcmdyZWVuX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9ldmVyZ3JlZW5fY3MuYwpAQCAtNDQyLDcgKzQ0Miw3IEBACiAJfQogCWliID0gcC0+aWItPnB0cjsKIAlzd2l0Y2ggKHJlZykgewotCS8qIGZvcmNlIGZvbGxvd2luZyByZWcgdG8gMCBpbiBhbiBhdHRlbXAgdG8gZGlzYWJsZSBvdXQgYnVmZmVyCisJLyogZm9yY2UgZm9sbG93aW5nIHJlZyB0byAwIGluIGFuIGF0dGVtcHQgdG8gZGlzYWJsZSBvdXQgYnVmZmVyCiAJICogd2hpY2ggd2lsbCBuZWVkIHVzIHRvIGJldHRlciB1bmRlcnN0YW5kIGhvdyBpdCB3b3JrcyB0byBwZXJmb3JtCiAJICogc2VjdXJpdHkgY2hlY2sgb24gaXQgKEplcm9tZSkKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjMwMC5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwLmMKaW5kZXggODcxMzczMS4uNTVhN2YxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwLmMKQEAgLTQzNyw3ICs0MzcsNyBAQAogCXN0YXR1cyA9IFJSRUczMihSXzAwMEU0MF9SQkJNX1NUQVRVUyk7CiAJZGV2X2luZm8ocmRldi0+ZGV2LCAiKCVzOiVkKSBSQkJNX1NUQVRVUz0weCUwOFhcbiIsIF9fZnVuY19fLCBfX0xJTkVfXywgc3RhdHVzKTsKIAkvKiByZXNldHRpbmcgdGhlIENQIHNlZW1zIHRvIGJlIHByb2JsZW1hdGljIHNvbWV0aW1lcyBpdCBlbmQgdXAKLQkgKiBoYXJkIGxvY2tpbmcgdGhlIGNvbXB1dGVyLCBidXQgaXQncyBuZWNlc3NhcnkgZm9yIHN1Y2Nlc3NmdWxsCisJICogaGFyZCBsb2NraW5nIHRoZSBjb21wdXRlciwgYnV0IGl0J3MgbmVjZXNzYXJ5IGZvciBzdWNjZXNzZnVsCiAJICogcmVzZXQgbW9yZSB0ZXN0ICYgcGxheWluZyBpcyBuZWVkZWQgb24gUjNYWC9SNFhYIHRvIGZpbmQgYQogCSAqIHJlbGlhYmxlIChpZiBhbnkgc29sdXRpb24pCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IzMDBfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3IzMDBfcmVnLmgKaW5kZXggZjBiY2UzOS4uMDBjMGQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yMzAwX3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjMwMF9yZWcuaApAQCAtNjA4LDcgKzYwOCw3IEBACiAgKiBNeSBndWVzcyBpcyB0aGF0IHRoZXJlIGFyZSB0d28gYml0cyBmb3IgZWFjaCB6YmlhcyBwcmltaXRpdmUKICAqIChGSUxMLCBMSU5FLCBQT0lOVCkuCiAgKiAgT25lIHRvIGVuYWJsZSBkZXB0aCB0ZXN0IGFuZCBvbmUgZm9yIGRlcHRoIHdyaXRlLgotICogWWV0IHRoaXMgZG9lc250IGV4cGxhaW4gd2h5IGRlcHRoIHdyaXRlcyB3b3JrIC4uLgorICogWWV0IHRoaXMgZG9lc24ndCBleHBsYWluIHdoeSBkZXB0aCB3cml0ZXMgd29yayAuLi4KICAqLwogI2RlZmluZSBSMzAwX1JFX09DQ0xVU0lPTl9DTlRMCQkgICAgMHg0MkI0CiAjCWRlZmluZSBSMzAwX09DQ0xVU0lPTl9PTgkJKDE8PDEpCkBAIC04MTcsNyArODE3LDcgQEAKICMJZGVmaW5lIFIzMDBfVFhfTUlOX0ZJTFRFUl9MSU5FQVJfTUlQX05FQVJFU1QgICAgICAgICg2ICA8PCAgMTEpCiAjCWRlZmluZSBSMzAwX1RYX01JTl9GSUxURVJfTElORUFSX01JUF9MSU5FQVIgICAgICAgICAoMTAgPDwgIDExKQogCi0vKiBOT1RFOiBORUFSRVNUIGRvZXNudCBzZWVtIHRvIGV4aXN0LgorLyogTk9URTogTkVBUkVTVCBkb2Vzbid0IHNlZW0gdG8gZXhpc3QuCiAgKiBJbSBub3Qgc2V0aW5nIE1BR19GSUxURVJfTUFTSyBhbmQgKDMgPDwgMTEpIG9uIGZvciBhbGwKICAqIGFuaXNvdHJvcHkgbW9kZXMgYmVjYXVzZSB0aGF0IHdvdWxkIHZvaWQgc2VsZWN0ZWQgbWFnIGZpbHRlcgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9jcy5jCmluZGV4IDMzMjQ2MjAuLmZkMThiZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9jcy5jCkBAIC05MjEsNyArOTIxLDcgQEAKIAkJcmV0dXJuIDA7CiAJaWIgPSBwLT5pYi0+cHRyOwogCXN3aXRjaCAocmVnKSB7Ci0JLyogZm9yY2UgZm9sbG93aW5nIHJlZyB0byAwIGluIGFuIGF0dGVtcCB0byBkaXNhYmxlIG91dCBidWZmZXIKKwkvKiBmb3JjZSBmb2xsb3dpbmcgcmVnIHRvIDAgaW4gYW4gYXR0ZW1wdCB0byBkaXNhYmxlIG91dCBidWZmZXIKIAkgKiB3aGljaCB3aWxsIG5lZWQgdXMgdG8gYmV0dGVyIHVuZGVyc3RhbmQgaG93IGl0IHdvcmtzIHRvIHBlcmZvcm0KIAkgKiBzZWN1cml0eSBjaGVjayBvbiBpdCAoSmVyb21lKQogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMF9oZG1pLmMKaW5kZXggNTBkYjZkNi4uZjVhYzdlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDBfaGRtaS5jCkBAIC0zMzQsNyArMzM0LDcgQEAKIAlyNjAwX2hkbWlfdmlkZW9pbmZvZnJhbWUoZW5jb2RlciwgUkdCLCAwLCAwLCAwLCAwLAogCQkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKIAotCS8qIGl0J3MgdW5rbm93biB3aGF0IHRoZXNlIGJpdHMgZG8gZXhjYXRseSwgYnV0IGl0J3MgaW5kZWVkIHF1aXRlIHVzZWZ1bGwgZm9yIGRlYnVnZ2luZyAqLworCS8qIGl0J3MgdW5rbm93biB3aGF0IHRoZXNlIGJpdHMgZG8gZXhjYXRseSwgYnV0IGl0J3MgaW5kZWVkIHF1aXRlIHVzZWZ1bCBmb3IgZGVidWdnaW5nICovCiAJV1JFRzMyKG9mZnNldCtSNjAwX0hETUlfQVVESU9fREVCVUdfMCwgMHgwMEZGRkZGRik7CiAJV1JFRzMyKG9mZnNldCtSNjAwX0hETUlfQVVESU9fREVCVUdfMSwgMHgwMDdGRkZGRik7CiAJV1JFRzMyKG9mZnNldCtSNjAwX0hETUlfQVVESU9fREVCVUdfMiwgMHgwMDAwMDAwMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaAppbmRleCBjZmUzYWYxLi45M2Y1MzY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uLmgKQEAgLTY3OSwxMSArNjc5LDExIEBACiAgKiBAc2lkZXBvcnRfYmFuZHdpZHRoOiBzaWRlcG9ydCBiYW5kd2lkdGggdGhlIGdwdSBoYXMgKE1CeXRlL3MpIChJR1ApCiAgKiBAaHRfYmFuZHdpZHRoOiAgICAgICBodCBiYW5kd2lkdGggdGhlIGdwdSBoYXMgKE1CeXRlL3MpIChJR1ApCiAgKiBAY29yZV9iYW5kd2lkdGg6ICAgICBjb3JlIEdQVSBiYW5kd2lkdGggdGhlIGdwdSBoYXMgKE1CeXRlL3MpIChJR1ApCi0gKiBAc2NsazogICAgICAgICAgCUdQVSBjbG9jayBNaHogKGNvcmUgYmFuZHdpdGggZGVwZW5kcyBvZiB0aGlzIGNsb2NrKQorICogQHNjbGs6ICAgICAgICAgIAlHUFUgY2xvY2sgTWh6IChjb3JlIGJhbmR3aWR0aCBkZXBlbmRzIG9mIHRoaXMgY2xvY2spCiAgKiBAbmVlZGVkX2JhbmR3aWR0aDogICBjdXJyZW50IGJhbmR3aWR0aCBuZWVkcwogICoKICAqIEl0IGtlZXBzIHRyYWNrIG9mIHZhcmlvdXMgZGF0YSBuZWVkZWQgdG8gdGFrZSBwb3dlcm1hbmFnZW1lbnQgZGVjaXNpb24uCi0gKiBCYW5kd2l0aCBuZWVkIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIG1pbmltdW4gY2xvY2sgb2YgdGhlIEdQVSBhbmQgbWVtb3J5LgorICogQmFuZHdpZHRoIG5lZWQgaXMgdXNlZCB0byBkZXRlcm1pbmUgbWluaW11biBjbG9jayBvZiB0aGUgR1BVIGFuZCBtZW1vcnkuCiAgKiBFcXVhdGlvbiBiZXR3ZWVuIGdwdS9tZW1vcnkgY2xvY2sgYW5kIGF2YWlsYWJsZSBiYW5kd2lkdGggaXMgaHcgZGVwZW5kZW50CiAgKiAodHlwZSBvZiBtZW1vcnksIGJ1cyBzaXplLCBlZmZpY2llbmN5LCAuLi4pCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2NwLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jcC5jCmluZGV4IDNkNTk5ZTMuLjc1ODY3NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2NwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fY3AuYwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJdTMyIGFncF9iYXNlX2xvID0gYWdwX2Jhc2UgJiAweGZmZmZmZmZmOwogCXUzMiByNnh4X2FncF9iYXNlID0gKGFncF9iYXNlID4+IDIyKSAmIDB4M2ZmZmY7CiAKLQkvKiBSNnh4L1I3eHggbXVzdCBiZSBhbGlnbmVkIHRvIGEgNE1CIGJvdW5kcnkgKi8KKwkvKiBSNnh4L1I3eHggbXVzdCBiZSBhbGlnbmVkIHRvIGEgNE1CIGJvdW5kYXJ5ICovCiAJaWYgKChkZXZfcHJpdi0+ZmxhZ3MgJiBSQURFT05fRkFNSUxZX01BU0spID49IENISVBfUlY3NzApCiAJCVJBREVPTl9XUklURShSNzAwX01DX1ZNX0FHUF9CQVNFLCByNnh4X2FncF9iYXNlKTsKIAllbHNlIGlmICgoZGV2X3ByaXYtPmZsYWdzICYgUkFERU9OX0ZBTUlMWV9NQVNLKSA+PSBDSElQX1I2MDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jdXJzb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2N1cnNvci5jCmluZGV4IDAxN2FjNTQuLmJkZjJmYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2N1cnNvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2N1cnNvci5jCkBAIC0yMjYsNyArMjI2LDcgQEAKIAkJeSArPSBjcnRjLT55OwogCQlEUk1fREVCVUcoInggJWQgeSAlZCBjLT54ICVkIGMtPnkgJWRcbiIsIHgsIHksIGNydGMtPngsIGNydGMtPnkpOwogCi0JCS8qIGF2aXZvIGN1cnNvciBpbWFnZSBjYW4ndCBlbmQgb24gMTI4IHBpeGVsIGJvdW5kcnkgb3IKKwkJLyogYXZpdm8gY3Vyc29yIGltYWdlIGNhbid0IGVuZCBvbiAxMjggcGl4ZWwgYm91bmRhcnkgb3IKIAkJICogZ28gcGFzdCB0aGUgZW5kIG9mIHRoZSBmcmFtZSBpZiBib3RoIGNydGNzIGFyZSBlbmFibGVkCiAJCSAqLwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGNfcCwgJmNydGMtPmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5jCmluZGV4IGYwMjA5YmUuLjg5MDIxN2U2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kZXZpY2UuYwpAQCAtMjYyLDcgKzI2Miw3IEBACiAgKiBOb3RlOiBHVFQgc3RhcnQsIGVuZCwgc2l6ZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGNhbGxpbmcgdGhpcwogICogZnVuY3Rpb24gb24gQUdQIHBsYXRmb3JtLgogICoKLSAqIE5vdGU6IFdlIGRvbid0IGV4cGxpY3RseSBlbmZvcmNlIFZSQU0gc3RhcnQgdG8gYmUgYWxpZ25lZCBvbiBWUkFNIHNpemUsCisgKiBOb3RlOiBXZSBkb24ndCBleHBsaWNpdGx5IGVuZm9yY2UgVlJBTSBzdGFydCB0byBiZSBhbGlnbmVkIG9uIFZSQU0gc2l6ZSwKICAqIHRoaXMgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBhcyB3ZSBhcmUgdXNpbmcgdGhlIFBDSSBhcGVydHVyZSBhcyBhIHJlZmVyZW5jZS4KICAqIE90aGVyd2lzZSB0aGlzIHdvdWxkIGJlIG5lZWRlZCBmb3IgcnYyODAsIGFsbCByM3h4LCBhbmQgYWxsIHI0eHgsIGJ1dAogICogbm90IElHUC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYwppbmRleCA0YmU1ODc5Li5iZGJhYjVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGlzcGxheS5jCkBAIC0xNDkyLDcgKzE0OTIsNyBAQAogICoKICAqIFxyZXR1cm4gRmxhZ3MsIG9yJ2VkIHRvZ2V0aGVyIGFzIGZvbGxvd3M6CiAgKgotICogRFJNX1NDQU5PVVRQT1NfVkFMSUQgPSBRdWVyeSBzdWNjZXNzZnVsbC4KKyAqIERSTV9TQ0FOT1VUUE9TX1ZBTElEID0gUXVlcnkgc3VjY2Vzc2Z1bC4KICAqIERSTV9TQ0FOT1VUUE9TX0lOVkJMID0gSW5zaWRlIHZibGFuay4KICAqIERSTV9TQ0FOT1VUUE9TX0FDQ1VSQVRFID0gUmV0dXJuZWQgcG9zaXRpb24gaXMgYWNjdXJhdGUuIEEgbGFjayBvZgogICogdGhpcyBmbGFnIG1lYW5zIHRoYXQgcmV0dXJuZWQgcG9zaXRpb24gbWF5IGJlIG9mZnNldCBieSBhIGNvbnN0YW50IGJ1dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kcnYuaAppbmRleCA1Y2JhNDZiLi5hMWI1OWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9kcnYuaApAQCAtMjcxLDcgKzI3MSw3IEBACiAKIAlpbnQgaGF2ZV96X29mZnNldDsKIAotCS8qIHN0YXJ0aW5nIGZyb20gaGVyZSBvbiwgZGF0YSBpcyBwcmVzZXJ2ZWQgYWNjcm9zcyBhbiBvcGVuICovCisJLyogc3RhcnRpbmcgZnJvbSBoZXJlIG9uLCBkYXRhIGlzIHByZXNlcnZlZCBhY3Jvc3MgYW4gb3BlbiAqLwogCXVpbnQzMl90IGZsYWdzOwkJLyogc2VlIHJhZGVvbl9jaGlwX2ZsYWdzICovCiAJcmVzb3VyY2Vfc2l6ZV90IGZiX2FwZXJfb2Zmc2V0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5oCmluZGV4IDdmOGU3NzguLmVkZTZjMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX29iamVjdC5oCkBAIC04Nyw3ICs4Nyw3IEBACiAgKiBSZXR1cm5zIGN1cnJlbnQgR1BVIG9mZnNldCBvZiB0aGUgb2JqZWN0LgogICoKICAqIE5vdGU6IG9iamVjdCBzaG91bGQgZWl0aGVyIGJlIHBpbm5lZCBvciByZXNlcnZlZCB3aGVuIGNhbGxpbmcgdGhpcwotICogZnVuY3Rpb24sIGl0IG1pZ2h0IGJlIHVzZWZ1bGwgdG8gYWRkIGNoZWNrIGZvciB0aGlzIGZvciBkZWJ1Z2dpbmcuCisgKiBmdW5jdGlvbiwgaXQgbWlnaHQgYmUgdXNlZnVsIHRvIGFkZCBjaGVjayBmb3IgdGhpcyBmb3IgZGVidWdnaW5nLgogICovCiBzdGF0aWMgaW5saW5lIHU2NCByYWRlb25fYm9fZ3B1X29mZnNldChzdHJ1Y3QgcmFkZW9uX2JvICpibykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9zdGF0ZS5jCmluZGV4IDRhZTVhM2QuLjkyZTdlYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3N0YXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fc3RhdGUuYwpAQCAtOTgwLDcgKzk4MCw3IEBACiAJfQogCiAJLyogaHlwZXIgeiBjbGVhciAqLwotCS8qIG5vIGRvY3MgYXZhaWxhYmxlLCBiYXNlZCBvbiByZXZlcnNlIGVuZ2VuZWVyaW5nIGJ5IFN0ZXBoYW5lIE1hcmNoZXNpbiAqLworCS8qIG5vIGRvY3MgYXZhaWxhYmxlLCBiYXNlZCBvbiByZXZlcnNlIGVuZ2luZWVyaW5nIGJ5IFN0ZXBoYW5lIE1hcmNoZXNpbiAqLwogCWlmICgoZmxhZ3MgJiAoUkFERU9OX0RFUFRIIHwgUkFERU9OX1NURU5DSUwpKQogCSAgICAmJiAoZmxhZ3MgJiBSQURFT05fQ0xFQVJfRkFTVFopKSB7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKaW5kZXggY2NlZWI0Mi4uZGZlMzJlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKQEAgLTI0NSw3ICsyNDUsNyBAQAogCQkvKiBUT0RPIGhhbmRsZSBub25lIHBhZ2UgYWxpZ25lZCBvZmZzZXRzICovCiAJCS8qIFRPRE8gaGFuZGxlIHBhcnRpYWwgdXBsb2FkcyBhbmQgcGl0Y2ggIT0gMjU2ICovCiAJCS8qIFRPRE8gaGFuZGxlIG1vcmUgdGhlbiBvbmUgY29weSAoc2l6ZSAhPSA2NCkgKi8KLQkJRFJNX0VSUk9SKCJsYXp5IHByb2dyYW1lciwgY2FudCBoYW5kbGUgd2llcmQgc3R1ZmZcbiIpOworCQlEUk1fRVJST1IoImxhenkgcHJvZ3JhbW1lciwgY2FuJ3QgaGFuZGxlIHdlaXJkIHN0dWZmXG4iKTsKIAkJcmV0dXJuOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvdmdhL3ZnYWFyYi5jIGIvZHJpdmVycy9ncHUvdmdhL3ZnYWFyYi5jCmluZGV4IGFjZTJiMTYuLmJlOGQ0Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L3ZnYS92Z2FhcmIuYworKysgYi9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMKQEAgLTE1MSw3ICsxNTEsNyBAQAogc3RhdGljIHZvaWQgdmdhX2NoZWNrX2ZpcnN0X3VzZSh2b2lkKQogewogCS8qIHdlIHNob3VsZCBpbmZvcm0gYWxsIEdQVXMgaW4gdGhlIHN5c3RlbSB0aGF0Ci0JICogVkdBIGFyYiBoYXMgb2NjdXJlZCBhbmQgdG8gdHJ5IGFuZCBkaXNhYmxlIHJlc291cmNlcworCSAqIFZHQSBhcmIgaGFzIG9jY3VycmVkIGFuZCB0byB0cnkgYW5kIGRpc2FibGUgcmVzb3VyY2VzCiAJICogaWYgdGhleSBjYW4gKi8KIAlpZiAoIXZnYV9hcmJpdGVyX3VzZWQpIHsKIAkJdmdhX2FyYml0ZXJfdXNlZCA9IHRydWU7CkBAIC03NzQsNyArNzc0LDcgQEAKIAkgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmdmdhX2xvY2ssIGZsYWdzKTsKIAotCS8qIElmIHdlIGFyZSB0YXJnZXR0aW5nIHRoZSBkZWZhdWx0LCB1c2UgaXQgKi8KKwkvKiBJZiB3ZSBhcmUgdGFyZ2V0aW5nIHRoZSBkZWZhdWx0LCB1c2UgaXQgKi8KIAlwZGV2ID0gcHJpdi0+dGFyZ2V0OwogCWlmIChwZGV2ID09IE5VTEwgfHwgcGRldiA9PSBQQ0lfSU5WQUxJRF9DQVJEKSB7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZnYV9sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9LY29uZmlnIGIvZHJpdmVycy9oaWQvS2NvbmZpZwppbmRleCBiN2VjNDA1Li45ZGU5ZTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvaGlkL0tjb25maWcKQEAgLTE4NSw3ICsxODUsNyBAQAogCVN1cHBvcnQgZm9yIEV6a2V5IEJUQyA4MTkzIGtleWJvYXJkLgogCiBjb25maWcgSElEX0tFWVRPVUNICi0JdHJpc3RhdGUgIktleW91dGNoIEhJRCBkZXZpY2VzIgorCXRyaXN0YXRlICJLZXl0b3VjaCBISUQgZGV2aWNlcyIKIAlkZXBlbmRzIG9uIFVTQl9ISUQKIAktLS1oZWxwLS0tCiAJU3VwcG9ydCBmb3IgS2V5dG91Y2ggSElEIGRldmljZXMgbm90IGZ1bGx5IGNvbXBsaWFudCB3aXRoCkBAIC0zNDAsMTAgKzM0MCwxNyBAQAogCVN1cHBvcnQgZm9yIE4tVHJpZyB0b3VjaCBzY3JlZW4uCiAKIGNvbmZpZyBISURfT1JURUsKLQl0cmlzdGF0ZSAiT3J0ZWsgUEtCLTE3MDAvV0tCLTIwMDAgd2lyZWxlc3Mga2V5Ym9hcmQgYW5kIG1vdXNlIHRyYWNrcGFkIgorCXRyaXN0YXRlICJPcnRlayBQS0ItMTcwMC9XS0ItMjAwMC9Ta3ljYWJsZSB3aXJlbGVzcyBrZXlib2FyZCBhbmQgbW91c2UgdHJhY2twYWQiCiAJZGVwZW5kcyBvbiBVU0JfSElECiAJLS0taGVscC0tLQotCVN1cHBvcnQgZm9yIE9ydGVrIFBLQi0xNzAwL1dLQi0yMDAwIHdpcmVsZXNzIGtleWJvYXJkICsgbW91c2UgdHJhY2twYWQuCisJVGhlcmUgYXJlIGNlcnRhaW4gZGV2aWNlcyB3aGljaCBoYXZlIExvZ2ljYWxNYXhpbXVtIHdyb25nIGluIHRoZSBrZXlib2FyZAorCXVzYWdlIHBhZ2Ugb2YgdGhlaXIgcmVwb3J0IGRlc2NyaXB0b3IuIFRoZSBtb3N0IHByZXZhaWxpbmcgb25lcyBzbyBmYXIKKwlhcmUgbWFudWZhY3R1cmVkIGJ5IE9ydGVrLCB0aHVzIHRoZSBuYW1lIG9mIHRoZSBkcml2ZXIuIEN1cnJlbnRseQorCXN1cHBvcnRlZCBkZXZpY2VzIGJ5IHRoaXMgZHJpdmVyIGFyZQorCisJICAgLSBPcnRlayBQS0ItMTcwMAorCSAgIC0gT3J0ZWsgV0tCLTIwMDAKKwkgICAtIFNreWNhYmxlIHdpcmVsZXNzIHByZXNlbnRlcgogCiBjb25maWcgSElEX1BBTlRIRVJMT1JECiAJdHJpc3RhdGUgIlBhbnRoZXJsb3JkL0dyZWVuQXNpYSBnYW1lIGNvbnRyb2xsZXIiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtY29yZS5jIGIvZHJpdmVycy9oaWQvaGlkLWNvcmUuYwppbmRleCBlOTY4Nzc2Li40MDhjNGJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWQtY29yZS5jCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1jb3JlLmMKQEAgLTMwNiw3ICszMDYsNyBAQAogCWNhc2UgSElEX0dMT0JBTF9JVEVNX1RBR19QVVNIOgogCiAJCWlmIChwYXJzZXItPmdsb2JhbF9zdGFja19wdHIgPT0gSElEX0dMT0JBTF9TVEFDS19TSVpFKSB7Ci0JCQlkYmdfaGlkKCJnbG9iYWwgZW52aXJvbWVudCBzdGFjayBvdmVyZmxvd1xuIik7CisJCQlkYmdfaGlkKCJnbG9iYWwgZW52aXJvbm1lbnQgc3RhY2sgb3ZlcmZsb3dcbiIpOwogCQkJcmV0dXJuIC0xOwogCQl9CiAKQEAgLTMxNyw3ICszMTcsNyBAQAogCWNhc2UgSElEX0dMT0JBTF9JVEVNX1RBR19QT1A6CiAKIAkJaWYgKCFwYXJzZXItPmdsb2JhbF9zdGFja19wdHIpIHsKLQkJCWRiZ19oaWQoImdsb2JhbCBlbnZpcm9tZW50IHN0YWNrIHVuZGVyZmxvd1xuIik7CisJCQlkYmdfaGlkKCJnbG9iYWwgZW52aXJvbm1lbnQgc3RhY2sgdW5kZXJmbG93XG4iKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCkBAIC0xNDQ5LDggKzE0NDksMTAgQEAKIAl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfUk9DQ0FULCBVU0JfREVWSUNFX0lEX1JPQ0NBVF9LT05FUExVUykgfSwKIAl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfUk9DQ0FULCBVU0JfREVWSUNFX0lEX1JPQ0NBVF9LT1ZBUExVUykgfSwKIAl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfUk9DQ0FULCBVU0JfREVWSUNFX0lEX1JPQ0NBVF9QWVJBX1dJUkVEKSB9LAorCXsgSElEX1VTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9ST0NDQVQsIFVTQl9ERVZJQ0VfSURfUk9DQ0FUX1BZUkFfV0lSRUxFU1MpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1NBTVNVTkcsIFVTQl9ERVZJQ0VfSURfU0FNU1VOR19JUl9SRU1PVEUpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1NBTVNVTkcsIFVTQl9ERVZJQ0VfSURfU0FNU1VOR19XSVJFTEVTU19LQkRfTU9VU0UpIH0sCisJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1NLWUNBQkxFLCBVU0JfREVWSUNFX0lEX1NLWUNBQkxFX1dJUkVMRVNTX1BSRVNFTlRFUikgfSwKIAl7IEhJRF9VU0JfREVWSUNFKFVTQl9WRU5ET1JfSURfU09OWSwgVVNCX0RFVklDRV9JRF9TT05ZX1BTM19DT05UUk9MTEVSKSB9LAogCXsgSElEX0JMVUVUT09USF9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9TT05ZLCBVU0JfREVWSUNFX0lEX1NPTllfUFMzX0NPTlRST0xMRVIpIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1NPTlksIFVTQl9ERVZJQ0VfSURfU09OWV9WQUlPX1ZHWF9NT1VTRSkgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1kZWJ1Zy5jIGIvZHJpdmVycy9oaWQvaGlkLWRlYnVnLmMKaW5kZXggNTU1MzgyZi4uYmFlNDg3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLWRlYnVnLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLWRlYnVnLmMKQEAgLTM0MSw3ICszNDEsNyBAQAogICAgIHsgMHg4NSwgMHg4MywgIkRlc2lnbkNhcGFjaXR5IiB9LAogICAgIHsgMHg4NSwgMHg4NSwgIk1hbnVmYWN0dXJlckRhdGUiIH0sCiAgICAgeyAweDg1LCAweDg5LCAiaURldmljZUNoZW1pc3RyeSIgfSwKLSAgICB7IDB4ODUsIDB4OGIsICJSZWNoYXJnYWJsZSIgfSwKKyAgICB7IDB4ODUsIDB4OGIsICJSZWNoYXJnZWFibGUiIH0sCiAgICAgeyAweDg1LCAweDhmLCAiaU9FTUluZm9ybWF0aW9uIiB9LAogICAgIHsgMHg4NSwgMHg4ZCwgIkNhcGFjaXR5R3JhbnVsYXJpdHkxIiB9LAogICAgIHsgMHg4NSwgMHhkMCwgIkFDUHJlc2VudCIgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1pZHMuaCBiL2RyaXZlcnMvaGlkL2hpZC1pZHMuaAppbmRleCA2NWFjNTNkLi4wMGE5NGI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWQtaWRzLmgKKysrIGIvZHJpdmVycy9oaWQvaGlkLWlkcy5oCkBAIC0xNTAsNiArMTUwLDcgQEAKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9DQU5ET19NVUxUSV9UT1VDSF8xNV82IDB4MGYwMQogCiAjZGVmaW5lIFVTQl9WRU5ET1JfSURfQ0gJCTB4MDY4ZQorI2RlZmluZSBVU0JfREVWSUNFX0lEX0NIX1BST19USFJPVFRMRQkweDAwZjEKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9DSF9QUk9fUEVEQUxTCTB4MDBmMgogI2RlZmluZSBVU0JfREVWSUNFX0lEX0NIX0NPTUJBVFNUSUNLCTB4MDBmNAogI2RlZmluZSBVU0JfREVWSUNFX0lEX0NIX0ZMSUdIVF9TSU1fRUNMSVBTRV9ZT0tFICAgICAgIDB4MDA1MQpAQCAtNTI0LDYgKzUyNSw5IEBACiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfU0FNU1VOR19JUl9SRU1PVEUJMHgwMDAxCiAjZGVmaW5lIFVTQl9ERVZJQ0VfSURfU0FNU1VOR19XSVJFTEVTU19LQkRfTU9VU0UJMHgwNjAwCiAKKyNkZWZpbmUgVVNCX1ZFTkRPUl9JRF9TS1lDQUJMRQkJCTB4MTIyMworI2RlZmluZQlVU0JfREVWSUNFX0lEX1NLWUNBQkxFX1dJUkVMRVNTX1BSRVNFTlRFUgkweDNGMDcKKwogI2RlZmluZSBVU0JfVkVORE9SX0lEX1NPTlkJCQkweDA1NGMKICNkZWZpbmUgVVNCX0RFVklDRV9JRF9TT05ZX1ZBSU9fVkdYX01PVVNFCTB4MDI0YgogI2RlZmluZSBVU0JfREVWSUNFX0lEX1NPTllfUFMzX0NPTlRST0xMRVIJMHgwMjY4CmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtbGdmZi5jIGIvZHJpdmVycy9oaWQvaGlkLWxnZmYuYwppbmRleCA5MGQwZWYyLi5mMDk5MDc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWQtbGdmZi5jCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1sZ2ZmLmMKQEAgLTczLDYgKzczLDggQEAKIAl7IDB4MDQ2ZCwgMHhjMjkzLCBmZl9qb3lzdGljayB9LAogCXsgMHgwNDZkLCAweGMyOTQsIGZmX3doZWVsIH0sCiAJeyAweDA0NmQsIDB4YzI5NSwgZmZfam95c3RpY2sgfSwKKwl7IDB4MDQ2ZCwgMHhjMjk4LCBmZl93aGVlbCB9LAorCXsgMHgwNDZkLCAweGMyOTksIGZmX3doZWVsIH0sCiAJeyAweDA0NmQsIDB4Y2EwMywgZmZfd2hlZWwgfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1tYWdpY21vdXNlLmMgYi9kcml2ZXJzL2hpZC9oaWQtbWFnaWNtb3VzZS5jCmluZGV4IDMxOGNjNDAuLjBlYzkxYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2hpZC1tYWdpY21vdXNlLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLW1hZ2ljbW91c2UuYwpAQCAtNzYsNyArNzYsNyBAQAogICogVGhpcyBpcyB0cnVlIHdoZW4gc2luZ2xlX3RvdWNoX2lkIGlzIGVxdWFsIHRvIE5PX1RPVUNIRVMuIElmIG11bHRpcGxlIHRvdWNoZXMKICAqIGFyZSBkb3duIGFuZCB0aGUgdG91Y2ggcHJvdmlkaW5nIGZvciBzaW5nbGUgdG91Y2ggZW11bGF0aW9uIGlzIGxpZnRlZCwKICAqIHNpbmdsZV90b3VjaF9pZCBpcyBlcXVhbCB0byBTSU5HTEVfVE9VQ0hfVVAuIFdoaWxlIHNpbmdsZSB0b3VjaCBlbXVsYXRpb24gaXMKLSAqIG9jY3VyaW5nLCBzaW5nbGVfdG91Y2hfaWQgY29ycmVzcG9uZHMgd2l0aCB0aGUgdHJhY2tpbmcgaWQgb2YgdGhlIHRvdWNoIHVzZWQuCisgKiBvY2N1cnJpbmcsIHNpbmdsZV90b3VjaF9pZCBjb3JyZXNwb25kcyB3aXRoIHRoZSB0cmFja2luZyBpZCBvZiB0aGUgdG91Y2ggdXNlZC4KICAqLwogI2RlZmluZSBOT19UT1VDSEVTIC0xCiAjZGVmaW5lIFNJTkdMRV9UT1VDSF9VUCAtMgpAQCAtNDE4LDYgKzQxOCw4IEBACiAJCQlpbnB1dF9zZXRfYWJzX3BhcmFtcyhpbnB1dCwgQUJTX01UX1BPU0lUSU9OX1ksIC0yNDU2LAogCQkJCTI1NjUsIDQsIDApOwogCQl9CisKKwkJaW5wdXRfc2V0X2V2ZW50c19wZXJfcGFja2V0KGlucHV0LCA2MCk7CiAJfQogCiAJaWYgKHJlcG9ydF91bmRlY2lwaGVyZWQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1vcnRlay5jIGIvZHJpdmVycy9oaWQvaGlkLW9ydGVrLmMKaW5kZXggZjliN2RkNC4uMGZmYTFkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLW9ydGVrLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLW9ydGVrLmMKQEAgLTEsOCArMSwxNCBAQAogLyoKLSAqICBISUQgZHJpdmVyIGZvciBPcnRlayBQS0ItMTcwMC9XS0ItMjAwMCAod2lyZWxlc3Mga2V5Ym9hcmQgKyBtb3VzZSB0cmFja3BhZCkuCi0gKiAgRml4ZXMgTG9naWNhbE1heGltdW0gZXJyb3IgaW4gSElEIHJlcG9ydCBkZXNjcmlwdGlvbi4KKyAqICBISUQgZHJpdmVyIGZvciB2YXJpb3VzIGRldmljZXMgd2hpY2ggYXJlIGFwcGFyZW50bHkgYmFzZWQgb24gdGhlIHNhbWUgY2hpcHNldAorICogIGZyb20gY2VydGFpbiB2ZW5kb3Igd2hpY2ggcHJvZHVjZXMgY2hpcHMgdGhhdCBjb250YWluIHdyb25nIExvZ2ljYWxNYXhpbXVtCisgKiAgdmFsdWUgaW4gdGhlaXIgSElEIHJlcG9ydCBkZXNjcmlwdG9yLiBDdXJyZW50bHkgc3VwcG9ydGVkIGRldmljZXMgYXJlOgorICoKKyAqICAgIE9ydGVrIFBLQi0xNzAwCisgKiAgICBPcnRlayBXS0ItMjAwMAorICogICAgU2t5Y2FibGUgd2lyZWxlc3MgcHJlc2VudGVyCiAgKgogICogIENvcHlyaWdodCAoYykgMjAxMCBKb2huYXRob24gSGFycmlzIDxqbWhhcnJpc0BnbWFpbC5jb20+CisgKiAgQ29weXJpZ2h0IChjKSAyMDExIEppcmkgS29zaW5hCiAgKi8KIAogLyoKQEAgLTIyLDggKzI4LDExIEBACiAJCXVuc2lnbmVkIGludCAqcnNpemUpCiB7CiAJaWYgKCpyc2l6ZSA+PSA1NiAmJiByZGVzY1s1NF0gPT0gMHgyNSAmJiByZGVzY1s1NV0gPT0gMHgwMSkgewotCQloaWRfaW5mbyhoZGV2LCAiRml4aW5nIHVwIE9ydGVrIFdLQi0yMDAwIHJlcG9ydCBkZXNjcmlwdG9yXG4iKTsKKwkJaGlkX2luZm8oaGRldiwgIkZpeGluZyB1cCBsb2dpY2FsIG1pbmltdW0gaW4gcmVwb3J0IGRlc2NyaXB0b3IgKE9ydGVrKVxuIik7CiAJCXJkZXNjWzU1XSA9IDB4OTI7CisJfSBlbHNlIGlmICgqcnNpemUgPj0gNTQgJiYgcmRlc2NbNTJdID09IDB4MjUgJiYgcmRlc2NbNTNdID09IDB4MDEpIHsKKwkJaGlkX2luZm8oaGRldiwgIkZpeGluZyB1cCBsb2dpY2FsIG1pbmltdW0gaW4gcmVwb3J0IGRlc2NyaXB0b3IgKFNreWNhYmxlKVxuIik7CisJCXJkZXNjWzUzXSA9IDB4NjU7CiAJfQogCXJldHVybiByZGVzYzsKIH0KQEAgLTMxLDYgKzQwLDcgQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGlkX2RldmljZV9pZCBvcnRla19kZXZpY2VzW10gPSB7CiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX09SVEVLLCBVU0JfREVWSUNFX0lEX09SVEVLX1BLQjE3MDApIH0sCiAJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX09SVEVLLCBVU0JfREVWSUNFX0lEX09SVEVLX1dLQjIwMDApIH0sCisJeyBISURfVVNCX0RFVklDRShVU0JfVkVORE9SX0lEX1NLWUNBQkxFLCBVU0JfREVWSUNFX0lEX1NLWUNBQkxFX1dJUkVMRVNTX1BSRVNFTlRFUikgfSwKIAl7IH0KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKGhpZCwgb3J0ZWtfZGV2aWNlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtcGljb2xjZC5jIGIvZHJpdmVycy9oaWQvaGlkLXBpY29sY2QuYwppbmRleCA2NTdkYTVhLi5iMmY1NmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9oaWQtcGljb2xjZC5jCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1waWNvbGNkLmMKQEAgLTE4MDYsMTMgKzE4MDYsMTMgQEAKIC8qCiAgKiBOb3RlczoKICAqIC0gY29uY3VycmVudCB3cml0aW5nIGlzIHByZXZlbnRlZCBieSBtdXRleCBhbmQgYWxsIHdyaXRlcyBtdXN0IGJlCi0gKiAgIG4qNjQgYnl0ZXMgYW5kIDY0LWJ5dGUgYWxpZ25lZCwgZWFjaCB3cml0ZSBiZWluZyBwcmVjZWVkZWQgYnkgYW4KKyAqICAgbio2NCBieXRlcyBhbmQgNjQtYnl0ZSBhbGlnbmVkLCBlYWNoIHdyaXRlIGJlaW5nIHByZWNlZGVkIGJ5IGFuCiAgKiAgIEVSQVNFIHdoaWNoIGVyYXNlcyBhIDY0Ynl0ZSBibG9jay4KICAqICAgSWYgbGVzcyB0aGFuIHJlcXVlc3RlZCB3YXMgd3JpdHRlbiBvciBhbiBlcnJvciBpcyByZXR1cm5lZCBmb3IgYW4KICAqICAgb3RoZXJ3aXNlIGNvcnJlY3Qgd3JpdGUgcmVxdWVzdCB0aGUgbmV4dCA2NC1ieXRlIGJsb2NrIHdoaWNoIHNob3VsZAogICogICBoYXZlIGJlZW4gd3JpdHRlbiBpcyBpbiB1bmRlZmluZWQgc3RhdGUgKG1vc3RseTogb3JpZ2luYWwsIGVyYXNlZCwKICAqICAgKGhhbGYtKXdyaXR0ZW4gd2l0aCB3cml0ZSBlcnJvcikKLSAqIC0gcmVhZGluZyBjYW4gaGFwcGVuZCB3aXRob3V0IHNwZWNpYWwgcmVzdHJpY3Rpb24KKyAqIC0gcmVhZGluZyBjYW4gaGFwcGVuIHdpdGhvdXQgc3BlY2lhbCByZXN0cmljdGlvbgogICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwaWNvbGNkX2RlYnVnX2ZsYXNoX2ZvcHMgPSB7CiAJLm93bmVyICAgID0gVEhJU19NT0RVTEUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9oaWQtcm9jY2F0LWtvbmUuaCBiL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQta29uZS5oCmluZGV4IDY0YWJiNWIuLjQxMDlhMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQta29uZS5oCisrKyBiL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQta29uZS5oCkBAIC0xNjYsNyArMTY2LDcgQEAKIAkvKiBvc2QgZXZlbnRzIGFyZSB0aG91Z2h0IHRvIGJlIGRpc3BsYXkgb24gc2NyZWVuICovCiAJa29uZV9tb3VzZV9ldmVudF9vc2RfZHBpID0gMHhhMCwKIAlrb25lX21vdXNlX2V2ZW50X29zZF9wcm9maWxlID0gMHhiMCwKLQkvKiBUT0RPIGNsYXJpZnkgbWVhbmluZyBhbmQgb2NjdXJlbmNlIG9mIGtvbmVfbW91c2VfZXZlbnRfY2FsaWJyYXRpb24gKi8KKwkvKiBUT0RPIGNsYXJpZnkgbWVhbmluZyBhbmQgb2NjdXJyZW5jZSBvZiBrb25lX21vdXNlX2V2ZW50X2NhbGlicmF0aW9uICovCiAJa29uZV9tb3VzZV9ldmVudF9jYWxpYnJhdGlvbiA9IDB4YzAsCiAJa29uZV9tb3VzZV9ldmVudF9jYWxsX292ZXJsb25nX21hY3JvID0gMHhlMCwKIAkvKiBzd2l0Y2ggZXZlbnRzIG5vdGlmeSBpZiB1c2VyIGNoYW5nZWQgdmFsdWVzIHdpdGggbW91c2VidXR0b24gY2xpY2sgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2hpZC1yb2NjYXQtcHlyYS5jIGIvZHJpdmVycy9oaWQvaGlkLXJvY2NhdC1weXJhLmMKaW5kZXggMTYwZjQ4MS4uMzgyODBjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvaGlkLXJvY2NhdC1weXJhLmMKKysrIGIvZHJpdmVycy9oaWQvaGlkLXJvY2NhdC1weXJhLmMKQEAgLTY1Miw3ICs2NTIsOCBAQAogc3RhdGljIGNvbnN0IHN0cnVjdCBoaWRfZGV2aWNlX2lkIHB5cmFfZGV2aWNlc1tdID0gewogCXsgSElEX1VTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9ST0NDQVQsCiAJCQlVU0JfREVWSUNFX0lEX1JPQ0NBVF9QWVJBX1dJUkVEKSB9LAotCS8qIFRPRE8gYWRkIFVTQl9ERVZJQ0VfSURfUk9DQ0FUX1BZUkFfV0lSRUxFU1MgYWZ0ZXIgdGVzdGluZyAqLworCXsgSElEX1VTQl9ERVZJQ0UoVVNCX1ZFTkRPUl9JRF9ST0NDQVQsCisJCQlVU0JfREVWSUNFX0lEX1JPQ0NBVF9QWVJBX1dJUkVMRVNTKSB9LAogCXsgfQogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1xdWlya3MuYyBiL2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtcXVpcmtzLmMKaW5kZXggOWE5NGI2NC4uYTg0MjZmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1xdWlya3MuYworKysgYi9kcml2ZXJzL2hpZC91c2JoaWQvaGlkLXF1aXJrcy5jCkBAIC01OSw2ICs1OSw3IEBACiAJeyBVU0JfVkVORE9SX0lEX0NILCBVU0JfREVWSUNFX0lEX0NIX0NPTUJBVFNUSUNLLCBISURfUVVJUktfTk9HRVQgfSwKIAl7IFVTQl9WRU5ET1JfSURfQ0gsIFVTQl9ERVZJQ0VfSURfQ0hfRkxJR0hUX1NJTV9FQ0xJUFNFX1lPS0UsIEhJRF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9DSCwgVVNCX0RFVklDRV9JRF9DSF9GTElHSFRfU0lNX1lPS0UsIEhJRF9RVUlSS19OT0dFVCB9LAorCXsgVVNCX1ZFTkRPUl9JRF9DSCwgVVNCX0RFVklDRV9JRF9DSF9QUk9fVEhST1RUTEUsIEhJRF9RVUlSS19OT0dFVCB9LAogCXsgVVNCX1ZFTkRPUl9JRF9DSCwgVVNCX0RFVklDRV9JRF9DSF9QUk9fUEVEQUxTLCBISURfUVVJUktfTk9HRVQgfSwKIAl7IFVTQl9WRU5ET1JfSURfQ0gsIFVTQl9ERVZJQ0VfSURfQ0hfM0FYSVNfNUJVVFRPTl9TVElDSywgSElEX1FVSVJLX05PR0VUIH0sCiAJeyBVU0JfVkVORE9SX0lEX0NILCBVU0JfREVWSUNFX0lEX0NIX0FYSVNfMjk1LCBISURfUVVJUktfTk9HRVQgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1LmMgYi9kcml2ZXJzL2h3bW9uL2FiaXR1Z3VydS5jCmluZGV4IDBlMDVhYTEuLmU3ZDRjNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1LmMKKysrIGIvZHJpdmVycy9od21vbi9hYml0dWd1cnUuYwpAQCAtMTQyMiw3ICsxNDIyLDcgQEAKIAkgICBhdCBEQVRBIGFuZCAweEFDLCB3aGVuIHRoaXMgZHJpdmVyIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIG9uY2UKIAkgICBEQVRBIHdpbGwgaG9sZCAweDA4LiBGb3IgbW9zdCB1R3VydSdzIENNRCB3aWxsIGhvbGQgMHhBQyBpbiBlaXRoZXIKIAkgICBzY2VuYXJpbyBidXQgc29tZSB3aWxsIGhvbGQgMHgwMC4KLQkgICBTb21lIHVHdXJ1J3MgaW5pdGFsbHkgaG9sZCAweDA5IGF0IERBVEEgYW5kIHdpbGwgb25seSBob2xkIDB4MDgKKwkgICBTb21lIHVHdXJ1J3MgaW5pdGlhbGx5IGhvbGQgMHgwOSBhdCBEQVRBIGFuZCB3aWxsIG9ubHkgaG9sZCAweDA4CiAJICAgYWZ0ZXIgcmVhZGluZyBDTUQgZmlyc3QsIHNvIENNRCBtdXN0IGJlIHJlYWQgZmlyc3QhICovCiAJdTggY21kX3ZhbCA9IGluYl9wKEFCSVRfVUdVUlVfQkFTRSArIEFCSVRfVUdVUlVfQ01EKTsKIAl1OCBkYXRhX3ZhbCA9IGluYl9wKEFCSVRfVUdVUlVfQkFTRSArIEFCSVRfVUdVUlVfREFUQSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FiaXR1Z3VydTMuYyBiL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1My5jCmluZGV4IDAzNGNlYmYuLmU4OWQ1NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1My5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWJpdHVndXJ1My5jCkBAIC0xNTEsNyArMTUxLDcgQEAKIAkvKiBQb2ludGVyIHRvIHRoZSBzZW5zb3JzIGluZm8gZm9yIHRoZSBkZXRlY3RlZCBtb3RoZXJib2FyZCAqLwogCWNvbnN0IHN0cnVjdCBhYml0dWd1cnUzX3NlbnNvcl9pbmZvICpzZW5zb3JzOwogCi0JLyogVGhlIGFiaXR1Z3VydTMgc3VwcG9ydHMgdXB0byA0OCBzZW5zb3JzLCBhbmQgdGh1cyBoYXMgcmVnaXN0ZXJzCisJLyogVGhlIGFiaXR1Z3VydTMgc3VwcG9ydHMgdXAgdG8gNDggc2Vuc29ycywgYW5kIHRodXMgaGFzIHJlZ2lzdGVycwogCSAgIHNldHMgZm9yIDQ4IHNlbnNvcnMsIGZvciBjb252aWVuZW5jZSByZWFzb25zIC8gc2ltcGxpY2l0eSBvZiB0aGUKIAkgICBjb2RlIHdlIGFsd2F5cyByZWFkIGFuZCBzdG9yZSBhbGwgcmVnaXN0ZXJzIGZvciBhbGwgNDggc2Vuc29ycyAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jCmluZGV4IGJlMGZkZDUuLjA1MzE4NjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jCkBAIC0xNzUsNyArMTc1LDcgQEAKICAqIHRoZXNlIG1hY3JvcyBhcmUgY2FsbGVkOiBhcmd1bWVudHMgbWF5IGJlIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KICAqLwogCi0vKiBJTiBhcmUgc2NhbGVkIGFjb3JkaW5nIHRvIGJ1aWx0LWluIHJlc2lzdG9ycy4gIFRoZXNlIGFyZSB0aGUKKy8qIElOIGFyZSBzY2FsZWQgYWNjb3JkaW5nIHRvIGJ1aWx0LWluIHJlc2lzdG9ycy4gIFRoZXNlIGFyZSB0aGUKICAqICAgdm9sdGFnZXMgY29ycmVzcG9uZGluZyB0byAzLzQgb2YgZnVsbCBzY2FsZSAoMTkyIG9yIDB4YzApCiAgKiAgIE5PVEU6IFRoZSAtMTJWIGlucHV0IG5lZWRzIGFuIGFkZGl0aW9uYWwgZmFjdG9yIHRvIGFjY291bnQKICAqICAgICAgZm9yIHRoZSBWcmVmIHB1bGx1cCByZXNpc3Rvci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21vbi9sbTg1LmMKaW5kZXggY2Y0N2U2ZS4uMjUwZDA5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgdGhlc2UgbWFjcm9zIGFyZSBjYWxsZWQ6IGFyZ3VtZW50cyBtYXkgYmUgZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNlLgogICovCiAKLS8qIElOIGFyZSBzY2FsZWQgYWNvcmRpbmcgdG8gYnVpbHQtaW4gcmVzaXN0b3JzICovCisvKiBJTiBhcmUgc2NhbGVkIGFjY29yZGluZyB0byBidWlsdC1pbiByZXNpc3RvcnMgKi8KIHN0YXRpYyBjb25zdCBpbnQgbG04NV9zY2FsaW5nW10gPSB7ICAvKiAuMDAxIFZvbHRzICovCiAJMjUwMCwgMjI1MCwgMzMwMCwgNTAwMCwgMTIwMDAsCiAJMzMwMCwgMTUwMCwgMTgwMCAvKkVNQzZEMTAwKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggODEyNzgxYy4uYzQzYjRlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTkwLmMKQEAgLTM1Niw3ICszNTYsNyBAQAogCS8qCiAJICogVGhlcmUgaXMgYSB0cmljayBoZXJlLiBXZSBoYXZlIHRvIHJlYWQgdHdvIHJlZ2lzdGVycyB0byBoYXZlIHRoZQogCSAqIHNlbnNvciB0ZW1wZXJhdHVyZSwgYnV0IHdlIGhhdmUgdG8gYmV3YXJlIGEgY29udmVyc2lvbiBjb3VsZCBvY2N1cgotCSAqIGluYmV0d2VlbiB0aGUgcmVhZGluZ3MuIFRoZSBkYXRhc2hlZXQgc2F5cyB3ZSBzaG91bGQgZWl0aGVyIHVzZQorCSAqIGJldHdlZW4gdGhlIHJlYWRpbmdzLiBUaGUgZGF0YXNoZWV0IHNheXMgd2Ugc2hvdWxkIGVpdGhlciB1c2UKIAkgKiB0aGUgb25lLXNob3QgY29udmVyc2lvbiByZWdpc3Rlciwgd2hpY2ggd2UgZG9uJ3Qgd2FudCB0byBkbwogCSAqIChkaXNhYmxlcyBoYXJkd2FyZSBtb25pdG9yaW5nKSBvciBtb25pdG9yIHRoZSBidXN5IGJpdCwgd2hpY2ggaXMKIAkgKiBpbXBvc3NpYmxlICh3ZSBjYW4ndCByZWFkIHRoZSB2YWx1ZXMgYW5kIG1vbml0b3IgdGhhdCBiaXQgYXQgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3NodDE1LmMgYi9kcml2ZXJzL2h3bW9uL3NodDE1LmMKaW5kZXggMWE5YzMyZC4uZjRlNjE3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9zaHQxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vc2h0MTUuYwpAQCAtNTIsNyArNTIsNyBAQAogI2RlZmluZSBTSFQxNV9UU1UJCTE1MAkvKiBkYXRhIHNldHVwIHRpbWUgKi8KIAogLyoqCi0gKiBzdHJ1Y3Qgc2h0MTVfdGVtcHBhaXIgLSBlbGVtZW50cyBvZiB2b2x0YWdlIGRlcGVuZGFudCB0ZW1wIGNhbGMKKyAqIHN0cnVjdCBzaHQxNV90ZW1wcGFpciAtIGVsZW1lbnRzIG9mIHZvbHRhZ2UgZGVwZW5kZW50IHRlbXAgY2FsYwogICogQHZkZDoJc3VwcGx5IHZvbHRhZ2UgaW4gbWljcm92b2x0cwogICogQGQxOgkJc2VlIGRhdGEgc2hlZXQKICAqLwpAQCAtMjUxLDcgKzI1MSw3IEBACiAJZW5hYmxlX2lycShncGlvX3RvX2lycShkYXRhLT5wZGF0YS0+Z3Bpb19kYXRhKSk7CiAJaWYgKGdwaW9fZ2V0X3ZhbHVlKGRhdGEtPnBkYXRhLT5ncGlvX2RhdGEpID09IDApIHsKIAkJZGlzYWJsZV9pcnFfbm9zeW5jKGdwaW9fdG9faXJxKGRhdGEtPnBkYXRhLT5ncGlvX2RhdGEpKTsKLQkJLyogT25seSByZWxldmFudCBpZiB0aGUgaW50ZXJydXB0IGhhc24ndCBvY2N1cmVkLiAqLworCQkvKiBPbmx5IHJlbGV2YW50IGlmIHRoZSBpbnRlcnJ1cHQgaGFzbid0IG9jY3VycmVkLiAqLwogCQlpZiAoIWF0b21pY19yZWFkKCZkYXRhLT5pbnRlcnJ1cHRfaGFuZGxlZCkpCiAJCQlzY2hlZHVsZV93b3JrKCZkYXRhLT5yZWFkX3dvcmspOwogCX0KQEAgLTQ1Miw3ICs0NTIsNyBAQAogCQkqLwogCQlhdG9taWNfc2V0KCZkYXRhLT5pbnRlcnJ1cHRfaGFuZGxlZCwgMCk7CiAJCWVuYWJsZV9pcnEoZ3Bpb190b19pcnEoZGF0YS0+cGRhdGEtPmdwaW9fZGF0YSkpOwotCQkvKiBJZiBzdGlsbCBub3Qgb2NjdXJlZCBvciBhbm90aGVyIGhhbmRsZXIgaGFzIGJlZW4gc2NoZWR1bGVkICovCisJCS8qIElmIHN0aWxsIG5vdCBvY2N1cnJlZCBvciBhbm90aGVyIGhhbmRsZXIgaGFzIGJlZW4gc2NoZWR1bGVkICovCiAJCWlmIChncGlvX2dldF92YWx1ZShkYXRhLT5wZGF0YS0+Z3Bpb19kYXRhKQogCQkgICAgfHwgYXRvbWljX3JlYWQoJmRhdGEtPmludGVycnVwdF9oYW5kbGVkKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMgYi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCmluZGV4IDkzMTg3YzNjLi41YmQxOTQ5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXAxMDIuYworKysgYi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCkBAIC0xNjYsNyArMTY2LDcgQEAKIAogCWlmICghaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLAogCQkJCSAgICAgSTJDX0ZVTkNfU01CVVNfV09SRF9EQVRBKSkgewotCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImFkYXB0ZXIgZG9lc250IHN1cHBvcnQgU01CdXMgd29yZCAiCisJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiYWRhcHRlciBkb2Vzbid0IHN1cHBvcnQgU01CdXMgd29yZCAiCiAJCQkidHJhbnNhY3Rpb25zXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTFkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwppbmRleCA0MDBhODhiLi4xN2NmMWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwpAQCAtNTU2LDcgKzU1Niw3IEBACiAKIC8qIE5vdGU6IHdlIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGZhbiBtaW5pbXVtIGhlcmUsIGJlY2F1c2UgaXRzIHZhbHVlIGlzCiAgICBkZXRlcm1pbmVkIGluIHBhcnQgYnkgdGhlIGZhbiBkaXZpc29yLiAgVGhpcyBmb2xsb3dzIHRoZSBwcmluY2lwbGUgb2YKLSAgIGxlYXN0IHN1cHJpc2U7IHRoZSB1c2VyIGRvZXNuJ3QgZXhwZWN0IHRoZSBmYW4gbWluaW11bSB0byBjaGFuZ2UganVzdAorICAgbGVhc3Qgc3VycHJpc2U7IHRoZSB1c2VyIGRvZXNuJ3QgZXhwZWN0IHRoZSBmYW4gbWluaW11bSB0byBjaGFuZ2UganVzdAogICAgYmVjYXVzZSB0aGUgZGl2aXNvciBjaGFuZ2VkLiAqLwogc3RhdGljIHNzaXplX3Qgc3RvcmVfZmFuX2RpdihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogCQkJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwppbmRleCA2Mzg0MWY4Li5mM2U3MTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMjQ0LDcgKzI0NCw3IEBACiAjZGVmaW5lIFRFTVAxX1RPX1JFRyh2YWwpCShTRU5TT1JTX0xJTUlUKCgodmFsKSA8IDAgPyAodmFsKSsweDEwMCoxMDAwIFwKIAkJCQkJOiAodmFsKSkgLyAxMDAwLCAwLCAweGZmKSkKICNkZWZpbmUgVEVNUDFfRlJPTV9SRUcodmFsKQkoKCh2YWwpICYgMHg4MCA/ICh2YWwpLTB4MTAwIDogKHZhbCkpICogMTAwMCkKLS8qIGZvciB0ZW1wMiBhbmQgdGVtcDMsIGJlY2F1c2UgdGhleSBuZWVkIGFkZHRpb25hbCByZXNvbHV0aW9uICovCisvKiBmb3IgdGVtcDIgYW5kIHRlbXAzLCBiZWNhdXNlIHRoZXkgbmVlZCBhZGRpdGlvbmFsIHJlc29sdXRpb24gKi8KICNkZWZpbmUgVEVNUF9BRERfRlJPTV9SRUcodmFsMSwgdmFsMikgXAogCSgoKCh2YWwxKSAmIDB4ODAgPyAodmFsMSktMHgxMDAgXAogCQk6ICh2YWwxKSkgKiAxMDAwKSArICgodmFsMiAmIDB4ODApID8gNTAwIDogMCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jIGIvZHJpdmVycy9od21vbi93ODM3OTMuYwppbmRleCBlM2JkZWRmLi44NTRmOTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKQEAgLTE5MjEsNyArMTkyMSw3IEBACiAJc3RydWN0IHc4Mzc5M19kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CiAJaW50IGksIGo7CiAJLyoKLQkgICBUaGV5IGFyZSBzb21ld2hhdCAic3RhYmxlIiByZWdpc3RlcnMsIGFuZCB0byB1cGRhdGUgdGhlbSBldmVyeXRpbWUKKwkgICBUaGV5IGFyZSBzb21ld2hhdCAic3RhYmxlIiByZWdpc3RlcnMsIGFuZCB0byB1cGRhdGUgdGhlbSBldmVyeSB0aW1lCiAJICAgdGFrZXMgc28gbXVjaCB0aW1lLCBpdCdzIGp1c3Qgbm90IHdvcnRoeS4gVXBkYXRlIHRoZW0gaW4gYSBsb25nCiAJICAgaW50ZXJ2YWwgdG8gYXZvaWQgZXhjZXB0aW9uLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tcGNhLmMgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYwppbmRleCAyYjlhOGY1Li40Y2E5Y2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYworKysgYi9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYwpAQCAtMzQzLDcgKzM0Myw3IEBACiAKIAlyZXQgPSBjdXJtc2c7CiAgb3V0OgotCURFQjEoIn19fSB0cmFuc2ZlcmVkICVkLyVkIG1lc3NhZ2VzLiAiCisJREVCMSgifX19IHRyYW5zZmVycmVkICVkLyVkIG1lc3NhZ2VzLiAiCiAJICAgICAic3RhdHVzIGlzICUjMDR4LiBjb250cm9sIGlzICUjMDR4XG4iLAogCSAgICAgY3VybXNnLCBudW0sIHBjYV9zdGF0dXMoYWRhcCksCiAJICAgICBwY2FfZ2V0X2NvbihhZGFwKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTUzNS5jCmluZGV4IDkwNmEzY2E1Li5kZDM2NDE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUuYwpAQCAtMjk1LDcgKzI5NSw3IEBACiAJfQogCiAJLyogVW5mb3J0dW5hdGVseSB0aGUgQUxJIFNNQiBjb250cm9sbGVyIG1hcHMgIm5vIHJlc3BvbnNlIiBhbmQgImJ1cwotCSAqIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlcG9uc2UgaXMgdGhlIHVzdWFsIGNhc2Ugc28gZG9uJ3QKKwkgKiBjb2xsaXNpb24iIGludG8gYSBzaW5nbGUgYml0LiBObyByZXNwb25zZSBpcyB0aGUgdXN1YWwgY2FzZSBzbyBkb24ndAogCSAqIGRvIGEgcHJpbnRrLiAgVGhpcyBtZWFucyB0aGF0IGJ1cyBjb2xsaXNpb25zIGdvIHVucmVwb3J0ZWQuCiAJICovCiAJaWYgKHRlbXAgJiBBTEkxNTM1X1NUU19CVVNFUlIpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTV4My5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMKaW5kZXggYjE0ZjZkNi4uODNlOGE2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMKQEAgLTMxOCw3ICszMTgsNyBAQAogCiAJLyoKIAkgIFVuZm9ydHVuYXRlbHkgdGhlIEFMSSBTTUIgY29udHJvbGxlciBtYXBzICJubyByZXNwb25zZSIgYW5kICJidXMKLQkgIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlcG9uc2UgaXMgdGhlIHVzdWFsIGNhc2Ugc28gZG9uJ3QKKwkgIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlc3BvbnNlIGlzIHRoZSB1c3VhbCBjYXNlIHNvIGRvbid0CiAJICBkbyBhIHByaW50ay4KIAkgIFRoaXMgbWVhbnMgdGhhdCBidXMgY29sbGlzaW9ucyBnbyB1bnJlcG9ydGVkLgogCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRhdmluY2kuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jCmluZGV4IDU3OTVjODMuLmE3NmQ4NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkvKgogCSAqIFdyaXRlIG1vZGUgcmVnaXN0ZXIgZmlyc3QgYXMgbmVlZGVkIGZvciBjb3JyZWN0IGJlaGF2aW91cgogCSAqIG9uIE9NQVAtTDEzOCwgYnV0IGRvbid0IHNldCBTVFQgeWV0IHRvIGF2b2lkIGEgcmFjZSB3aXRoIFhSRFkKLQkgKiBvY2N1cmluZyBiZWZvcmUgd2UgaGF2ZSBsb2FkZWQgRFhSCisJICogb2NjdXJyaW5nIGJlZm9yZSB3ZSBoYXZlIGxvYWRlZCBEWFIKIAkgKi8KIAlkYXZpbmNpX2kyY193cml0ZV9yZWcoZGV2LCBEQVZJTkNJX0kyQ19NRFJfUkVHLCBmbGFnKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1kZXNpZ253YXJlLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYwppbmRleCBiNjY0ZWQ4Li5iN2E1MWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYwpAQCAtMTc4LDcgKzE3OCw3IEBACiAgKiBAbG9jazogcHJvdGVjdCB0aGlzIHN0cnVjdCBhbmQgSU8gcmVnaXN0ZXJzCiAgKiBAY2xrOiBpbnB1dCByZWZlcmVuY2UgY2xvY2sKICAqIEBjbWRfZXJyOiBydW4gdGltZSBoYWR3YXJlIGVycm9yIGNvZGUKLSAqIEBtc2dzOiBwb2ludHMgdG8gYW4gYXJyYXkgb2YgbWVzc2FnZXMgY3VycmVudGx5IGJlaW5nIHRyYW5zZmVyZWQKKyAqIEBtc2dzOiBwb2ludHMgdG8gYW4gYXJyYXkgb2YgbWVzc2FnZXMgY3VycmVudGx5IGJlaW5nIHRyYW5zZmVycmVkCiAgKiBAbXNnc19udW06IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gbXNncwogICogQG1zZ193cml0ZV9pZHg6IHRoZSBlbGVtZW50IGluZGV4IG9mIHRoZSBjdXJyZW50IHR4IG1lc3NhZ2UgaW4gdGhlIG1zZ3MKICAqCWFycmF5CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWVsZWt0b3IuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCmluZGV4IGU1YjFhM2IuLjM3ZTJlODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jCkBAIC0yMiw3ICsyMiw3IEBACiAvKiBXaXRoIHNvbWUgY2hhbmdlcyBmcm9tIEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCBldmVuCiAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+ICovCiAKLS8qIFBhcnRpYWx5IHJld3JpdGVuIGJ5IE9sZWcgSS4gVmRvdmlraW4gZm9yIG1tYXBwZWQgc3VwcG9ydCBvZgorLyogUGFydGlhbGx5IHJld3JpdGVuIGJ5IE9sZWcgSS4gVmRvdmlraW4gZm9yIG1tYXBwZWQgc3VwcG9ydCBvZgogICAgZm9yIEFscGhhIFByb2Nlc3NvciBJbmMuIFVQLTIwMDAoKykgYm9hcmRzICovCiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgwMS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pODAxLmMKaW5kZXggZWQyZTBjNS4uNzJjMDQxNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgwMS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgwMS5jCkBAIC05Niw3ICs5Niw3IEBACiAjZGVmaW5lIFNNQkhTVENGR19TTUJfU01JX0VOCTIKICNkZWZpbmUgU01CSFNUQ0ZHX0kyQ19FTgk0CiAKLS8qIEF1eGlsbGFyeSBjb250cm9sIHJlZ2lzdGVyIGJpdHMsIElDSDQrIG9ubHkgKi8KKy8qIEF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyIGJpdHMsIElDSDQrIG9ubHkgKi8KICNkZWZpbmUgU01CQVVYQ1RMX0NSQwkJMQogI2RlZmluZSBTTUJBVVhDVExfRTMyQgkJMgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlibV9paWMuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCmluZGV4IGU0Zjg4ZGMuLjNjMTEwZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jCkBAIC00OTQsNyArNDk0LDcgQEAKIAkJaWYgKHVubGlrZWx5KHJldCA8IDApKQogCQkJYnJlYWs7CiAJCWVsc2UgaWYgKHVubGlrZWx5KHJldCAhPSBjb3VudCkpewotCQkJREJHKCIlZDogeGZlcl9ieXRlcywgcmVxdWVzdGVkICVkLCB0cmFuc2ZlcmVkICVkXG4iLAorCQkJREJHKCIlZDogeGZlcl9ieXRlcywgcmVxdWVzdGVkICVkLCB0cmFuc2ZlcnJlZCAlZFxuIiwKIAkJCQlkZXYtPmlkeCwgY291bnQsIHJldCk7CiAKIAkJCS8qIElmIGl0J3Mgbm90IGEgbGFzdCBwYXJ0IG9mIHhmZXIsIGFib3J0IGl0ICovCkBAIC01OTMsNyArNTkzLDcgQEAKIAlpZiAodW5saWtlbHkoKGluXzgoJmlpYy0+ZXh0c3RzKSAmIEVYVFNUU19CQ1NfTUFTSykgIT0gRVhUU1RTX0JDU19GUkVFKSl7CiAJCURCRygiJWQ6IGlpY194ZmVyLCBidXMgaXMgbm90IGZyZWVcbiIsIGRldi0+aWR4KTsKIAotCQkvKiBVc3VhbGx5IGl0IG1lYW5zIHNvbWV0aGluZyBzZXJpb3VzIGhhcyBoYXBwZW5kLgorCQkvKiBVc3VhbGx5IGl0IG1lYW5zIHNvbWV0aGluZyBzZXJpb3VzIGhhcyBoYXBwZW5lZC4KIAkJICogV2UgKmNhbm5vdCogaGF2ZSB1bmZpbmlzaGVkIHByZXZpb3VzIHRyYW5zZmVyCiAJCSAqIHNvIGl0IGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UgdG8gdHJ5IHRvIHN0b3AgaXQuCiAJCSAqIFByb2JhYmx5IHdlIHdlcmUgbm90IGFibGUgdG8gcmVjb3ZlciBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbnRlbC1taWQuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW50ZWwtbWlkLmMKaW5kZXggYzcxNDkyNy4uZTgyOGFjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbnRlbC1taWQuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWludGVsLW1pZC5jCkBAIC0xNzAsOCArMTcwLDggQEAKIC8qIFJhdyBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovCiAjZGVmaW5lIElDX1JBV19JTlRSX1NUQVQJMHgzNAkJLyogUmVhZCBPbmx5ICovCiAjZGVmaW5lIEdFTl9DQUxMCQkoMSA8PCAxMSkJLyogR2VuZXJhbCBjYWxsICovCi0jZGVmaW5lIFNUQVJUX0RFVAkJKDEgPDwgMTApCS8qIChSRSlTVEFSVCBvY2N1cmVkICovCi0jZGVmaW5lIFNUT1BfREVUCQkoMSA8PCA5KQkvKiBTVE9QIG9jY3VyZWQgKi8KKyNkZWZpbmUgU1RBUlRfREVUCQkoMSA8PCAxMCkJLyogKFJFKVNUQVJUIG9jY3VycmVkICovCisjZGVmaW5lIFNUT1BfREVUCQkoMSA8PCA5KQkvKiBTVE9QIG9jY3VycmVkICovCiAjZGVmaW5lIEFDVElWSVRZCQkoMSA8PCA4KQkvKiBCdXMgYnVzeSAqLwogI2RlZmluZSBSWF9ET05FCQkJKDEgPDwgNykJLyogTm90IHVzZWQgaW4gTWFzdGVyIG1vZGUgKi8KICNkZWZpbmUJVFhfQUJSVAkJCSgxIDw8IDYpCS8qIFRyYW5zbWl0IEFib3J0ICovCkBAIC0zNzUsNyArMzc1LDcgQEAKICAqIEkyQyBzaG91bGQgYmUgZGlzYWJsZWQgcHJpb3IgdG8gb3RoZXIgcmVnaXN0ZXIgb3BlcmF0aW9uLiBJZiBmYWlsZWQsIGFuCiAgKiBlcnJubyBpcyByZXR1cm5lZC4gTWFzayBhbmQgQ2xlYXIgYWxsIGludGVycnB0cywgdGhpcyBzaG91bGQgYmUgZG9uZSBhdAogICogZmlyc3QuICBTZXQgY29tbW9uIHJlZ2lzdGVycyB3aGljaCB3aWxsIG5vdCBiZSBtb2RpZmllZCBkdXJpbmcgbm9ybWFsCi0gKiB0cmFuc2ZlcnMsIGluY2x1ZGluZzogY29udHJvbGwgcmVnaXN0ZXIsIEZJRk8gdGhyZXNob2xkIGFuZCBjbG9jayBmcmVxLgorICogdHJhbnNmZXJzLCBpbmNsdWRpbmc6IGNvbnRyb2wgcmVnaXN0ZXIsIEZJRk8gdGhyZXNob2xkIGFuZCBjbG9jayBmcmVxLgogICogQ2hlY2sgQVBCIGRhdGEgd2lkdGggYXQgbGFzdC4KICAqLwogc3RhdGljIGludCBpbnRlbF9taWRfaTJjX2h3aW5pdChzdHJ1Y3QgaW50ZWxfbWlkX2kyY19wcml2YXRlICppMmMpCkBAIC00NTUsNyArNDU1LDcgQEAKICAqCiAgKiBCeSByZWFkaW5nIHJlZ2lzdGVyIElDX1RYX0FCUlRfU09VUkNFLCB2YXJpb3VzIHRyYW5zZmVyIGVycm9ycyBjYW4gYmUKICAqIGRpc3Rpbmd1c2hlZC4gQXQgcHJlc2VudCwgbm8gY2lyY3Vtc3RhbmNlcyBoYXZlIGJlZW4gZm91bmQgb3V0IHRoYXQKLSAqIG11bHRpcGxlIGVycm9ycyB3b3VsZCBiZSBvY2N1cmVkIHNpbXV0YW5lb3VzbHksIHNvIHdlIHNpbXBseSB1c2UgdGhlCisgKiBtdWx0aXBsZSBlcnJvcnMgd291bGQgYmUgb2NjdXJyZWQgc2ltdXRhbmVvdXNseSwgc28gd2Ugc2ltcGx5IHVzZSB0aGUKICAqIHJlZ2lzdGVyIHZhbHVlIGRpcmVjdGx5LgogICoKICAqIEF0IGxhc3QgdGhlIGVycm9yIGJpdHMgYXJlIGNsZWFyZWQuIChOb3RlIGNsZWFyIEFCUlRfU0JZVEVfTk9SU1RSVCBiaXQgbmVlZApAQCAtNDY5LDcgKzQ2OSw3IEBACiAKIAkvKiBTaW5nbGUgdHJhbnNmZXIgZXJyb3IgY2hlY2s6CiAJICogQWNjb3JkaW5nIHRvIGRhdGFib29rLCBUWC9SWCBGSUZPcyB3b3VsZCBiZSBmbHVzaGVkIHdoZW4KLQkgKiB0aGUgYWJvcnQgaW50ZXJydXB0IG9jY3VyZWQuCisJICogdGhlIGFib3J0IGludGVycnVwdCBvY2N1cnJlZC4KIAkgKi8KIAlpZiAoYWJvcnQgJiBBQlJUX01BU1RFUl9ESVMpCiAJCWRldl9lcnIoJmFkYXAtPmRldiwKQEAgLTU2OSw3ICs1NjksNyBAQAogICogUmV0dXJuIFZhbHVlczoKICAqIDAJaWYgdGhlIHJlYWQgdHJhbnNmZXIgc3VjY2VlZHMKICAqIC1FVElNRURPVVQJaWYgd2UgY2Fubm90IHJlYWQgdGhlICJyYXciIGludGVycnVwdCByZWdpc3RlcgotICogLUVJTlZBTAlpZiBhIHRyYW5zZmVyIGFib3J0IG9jY3VyZWQKKyAqIC1FSU5WQUwJaWYgYSB0cmFuc2ZlciBhYm9ydCBvY2N1cnJlZAogICoKICAqIEZvciBldmVyeSBieXRlLCBhICJXUklURSIgY29tbWFuZCB3aWxsIGJlIGxvYWRlZCBpbnRvIElDX0RBVEFfQ01EIHByaW9yIHRvCiAgKiBkYXRhIHRyYW5zZmVyLiBUaGUgYWN0dWFsICJ3cml0ZSIgb3BlcmF0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIHdoZW4gdGhlCkBAIC02OTcsNyArNjk3LDcgQEAKICAqIEBudW06IG51bWJlciBvZiBpMmNfbXNnCiAgKgogICogUmV0dXJuIFZhbHVlczoKLSAqICsJCW51bWJlciBvZiBtZXNzYWdlcyB0cmFuc2ZlcmVkCisgKiArCQludW1iZXIgb2YgbWVzc2FnZXMgdHJhbnNmZXJyZWQKICAqIC1FVElNRURPVVQJSWYgY2Fubm90IGRpc2FibGUgSTJDIGNvbnRyb2xsZXIgb3IgcmVhZCBJQ19TVEFUVVMKICAqIC1FSU5WQUwJSWYgdGhlIGFkZHJlc3MgaW4gaTJjX21zZyBpcyBpbnZhbGlkCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pc2NoLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYwppbmRleCBkZGMyNThlLi4wNjgyZjhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgKiBUaGlzIGlzIHRoZSBtYWluIGFjY2VzcyBlbnRyeSBmb3IgaTJjLXNjaCBhY2Nlc3MKICAqIGFkYXAgaXMgaTJjX2FkYXB0ZXIgcG9pbnRlciwgYWRkciBpcyB0aGUgaTJjIGRldmljZSBidXMgYWRkcmVzcywgcmVhZF93cml0ZQogICogKDAgZm9yIHJlYWQgYW5kIDEgZm9yIHdyaXRlKSwgc2l6ZSBpcyBpMmMgdHJhbnNhY3Rpb24gdHlwZSBhbmQgZGF0YSBpcyB0aGUKLSAqIHVuaW9uIG9mIHRyYW5zYWN0aW9uIGZvciBkYXRhIHRvIGJlIHRyYW5zZmVyZWQgb3IgZGF0YSByZWFkIGZyb20gYnVzLgorICogdW5pb24gb2YgdHJhbnNhY3Rpb24gZm9yIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgb3IgZGF0YSByZWFkIGZyb20gYnVzLgogICogcmV0dXJuIDAgZm9yIHN1Y2Nlc3MgYW5kIG90aGVycyBmb3IgZmFpbHVyZS4KICAqLwogc3RhdGljIHMzMiBzY2hfYWNjZXNzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwgdTE2IGFkZHIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW14cy5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1teHMuYwppbmRleCBjYWY5NmRjLi43ZTc4ZjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW14cy5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbXhzLmMKQEAgLTE0OSw3ICsxNDksNyBAQAogCSAqIFdlIGhhdmUgdG8gY29weSB0aGUgc2xhdmUgYWRkcmVzcyAodTgpIGFuZCBidWZmZXIgKGFyYml0cmFyeSBudW1iZXIKIAkgKiBvZiB1OCkgaW50byB0aGUgZGF0YSByZWdpc3RlciAodTMyKS4gVG8gYWNoaWV2ZSB0aGF0LCB0aGUgdTggYXJlIHB1dAogCSAqIGludG8gdGhlIE1TQnMgb2YgJ2RhdGEnIHdoaWNoIGlzIHRoZW4gc2hpZnRlZCBmb3IgdGhlIG5leHQgdTguIFdoZW4KLQkgKiBhcHJvcHJpYXRlLCAnZGF0YScgaXMgd3JpdHRlbiB0byBNWFNfSTJDX0RBVEEuIFNvLCB0aGUgZmlyc3QgdTMyCisJICogYXBwcm9wcmlhdGUsICdkYXRhJyBpcyB3cml0dGVuIHRvIE1YU19JMkNfREFUQS4gU28sIHRoZSBmaXJzdCB1MzIKIAkgKiBsb29rcyBsaWtlIHRoaXM6CiAJICoKIAkgKiAgMyAgICAgICAgICAyICAgICAgICAgIDEgICAgICAgICAgMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ub21hZGlrLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYwppbmRleCA1OTRlZDUwLi5lMTBlNWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYwpAQCAtMTI2LDkgKzEyNiw5IEBACiAvKioKICAqIHN0cnVjdCBpMmNfbm1rX2NsaWVudCAtIGNsaWVudCBzcGVjaWZpYyBkYXRhCiAgKiBAc2xhdmVfYWRyOiA3LWJpdCBzbGF2ZSBhZGRyZXNzCi0gKiBAY291bnQ6IG5vLiBieXRlcyB0byBiZSB0cmFuc2ZlcmVkCisgKiBAY291bnQ6IG5vLiBieXRlcyB0byBiZSB0cmFuc2ZlcnJlZAogICogQGJ1ZmZlcjogY2xpZW50IGRhdGEgYnVmZmVyCi0gKiBAeGZlcl9ieXRlczogYnl0ZXMgdHJhbnNmZXJlZCB0aWxsIG5vdworICogQHhmZXJfYnl0ZXM6IGJ5dGVzIHRyYW5zZmVycmVkIHRpbGwgbm93CiAgKiBAb3BlcmF0aW9uOiBjdXJyZW50IEkyQyBvcGVyYXRpb24KICAqLwogc3RydWN0IGkyY19ubWtfY2xpZW50IHsKQEAgLTMzMCw3ICszMzAsNyBAQAogCSAqIHNsc3UgZGVmaW5lcyB0aGUgZGF0YSBzZXR1cCB0aW1lIGFmdGVyIFNDTCBjbG9jawogCSAqIHN0cmV0Y2hpbmcgaW4gdGVybXMgb2YgaTJjIGNsayBjeWNsZXMuIFRoZQogCSAqIG5lZWRlZCBzZXR1cCB0aW1lIGZvciB0aGUgdGhyZWUgbW9kZXMgYXJlIDI1MG5zLAotCSAqIDEwMG5zLCAxMG5zIHJlcGVjdGl2ZWx5IHRodXMgbGVhZGluZyB0byB0aGUgdmFsdWVzCisJICogMTAwbnMsIDEwbnMgcmVzcGVjdGl2ZWx5IHRodXMgbGVhZGluZyB0byB0aGUgdmFsdWVzCiAJICogb2YgMTQsIDYsIDIgZm9yIGEgNDggTUh6IGkyYyBjbGsuCiAJICovCiAJd3JpdGVsKGRldi0+Y2ZnLnNsc3UgPDwgMTYsIGRldi0+dmlydGJhc2UgKyBJMkNfU0NSKTsKQEAgLTM2NCw3ICszNjQsNyBAQAogCS8qCiAJICogc2V0IHRoZSBzcGVlZCBtb2RlLiBDdXJyZW50bHkgd2Ugc3VwcG9ydAogCSAqIG9ubHkgc3RhbmRhcmQgYW5kIGZhc3QgbW9kZSBvZiBvcGVyYXRpb24KLQkgKiBUT0RPIC0gc3VwcG9ydCBmb3IgZmFzdCBtb2RlIHBsdXMgKHVwdG8gMU1iL3MpCisJICogVE9ETyAtIHN1cHBvcnQgZm9yIGZhc3QgbW9kZSBwbHVzICh1cCB0byAxTWIvcykKIAkgKiBhbmQgaGlnaCBzcGVlZCAodXAgdG8gMy40IE1iL3MpCiAJICovCiAJaWYgKGRldi0+Y2ZnLnNtID4gSTJDX0ZSRVFfTU9ERV9GQVNUKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXM2MDAwLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXM2MDAwLmMKaW5kZXggY2FkYzAyMS4uY2I1ZDAxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zNjAwMC5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtczYwMDAuYwpAQCAtMzE4LDcgKzMxOCw3IEBACiAJcmMgPSByZXF1ZXN0X2lycShpZmFjZS0+aXJxLCBzNmkyY19pbnRlcnJ1cHRfZW50cnksCiAJCQkgSVJRRl9TSEFSRUQsIGRldi0+bmFtZSwgaWZhY2UpOwogCWlmIChyYykgewotCQlkZXZfZXJyKCZwX2FkYXAtPmRldiwgInM2aTJjOiBjYW50IGdldCBJUlEgJWRcbiIsIGlmYWNlLT5pcnEpOworCQlkZXZfZXJyKCZwX2FkYXAtPmRldiwgInM2aTJjOiBjYW4ndCBnZXQgSVJRICVkXG4iLCBpZmFjZS0+aXJxKTsKIAkJZ290byBlcnJfY2xrX2RpczsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc3R1MzAwLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXN0dTMwMC5jCmluZGV4IDI2NjEzNWQuLjk5ODc5NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc3R1MzAwLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zdHUzMDAuYwpAQCAtNDk3LDcgKzQ5Nyw3IEBACiAJdTMyIHZhbDsKIAlpbnQgaSA9IDA7CiAKLQkvKiBMb2NhdGUgdGhlIGFwcm9wcmlhdGUgY2xvY2sgc2V0dGluZyAqLworCS8qIExvY2F0ZSB0aGUgYXBwcm9wcmlhdGUgY2xvY2sgc2V0dGluZyAqLwogCXdoaWxlIChpIDwgQVJSQVlfU0laRShzdHUzMDBfY2xrdGFibGUpIC0gMSAmJgogCSAgICAgICBzdHUzMDBfY2xrdGFibGVbaV0ucmF0ZSA8IGNsa3JhdGUpCiAJCWkrKzsKQEAgLTY0NCw3ICs2NDQsNyBAQAogCXJldCA9IHN0dTMwMF9hd2FpdF9ldmVudChkZXYsIFNUVTMwMF9FVkVOVF82KTsKIAogCS8qCi0JICogQ2xlYXIgYW55IHBlbmRpbmcgRVZFTlQgNiBubyBtYXR0ZXIgd2hhdCBoYXBwZW5kIGR1cmluZworCSAqIENsZWFyIGFueSBwZW5kaW5nIEVWRU5UIDYgbm8gbWF0dGVyIHdoYXQgaGFwcGVuZWQgZHVyaW5nCiAJICogYXdhaXRfZXZlbnQuCiAJICovCiAJdmFsID0gc3R1MzAwX3I4KGRldi0+dmlydGJhc2UgKyBJMkNfQ1IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10ZWdyYS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10ZWdyYS5jCmluZGV4IDM5MjFmNjYuLmI0YWIzOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdGVncmEuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXRlZ3JhLmMKQEAgLTM4Niw3ICszODYsNyBAQAogCQlkdmNfd3JpdGVsKGkyY19kZXYsIERWQ19TVEFUVVNfSTJDX0RPTkVfSU5UUiwgRFZDX1NUQVRVUyk7CiAJcmV0dXJuIElSUV9IQU5ETEVEOwogZXJyOgotCS8qIEFuIGVycm9yIG9jY3VyZWQsIG1hc2sgYWxsIGludGVycnVwdHMgKi8KKwkvKiBBbiBlcnJvciBvY2N1cnJlZCwgbWFzayBhbGwgaW50ZXJydXB0cyAqLwogCXRlZ3JhX2kyY19tYXNrX2lycShpMmNfZGV2LCBJMkNfSU5UX05PX0FDSyB8IEkyQ19JTlRfQVJCSVRSQVRJT05fTE9TVCB8CiAJCUkyQ19JTlRfUEFDS0VUX1hGRVJfQ09NUExFVEUgfCBJMkNfSU5UX1RYX0ZJRk9fREFUQV9SRVEgfAogCQlJMkNfSU5UX1JYX0ZJRk9fREFUQV9SRVEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy14aWljLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYwppbmRleCA5ZmJkN2U2Li5lOWQ1ZmY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYwpAQCAtMjEsNyArMjEsNyBAQAogICogdG8gdGhlIGF1dG9tb3RpdmUgZGV2ZWxvcG1lbnQgYm9hcmQgUnVzc2VsbHZpbGxlLiBUaGUgY29weXJpZ2h0IGhvbGRlcgogICogYXMgc2VlbiBpbiB0aGUgaGVhZGVyIGlzIEludGVsIGNvcnBvcmF0aW9uLgogICogTW9jZWFuIExhYm9yYXRvcmllcyBmb3JrZWQgb2ZmIHRoZSBHTlUvTGludXggcGxhdGZvcm0gd29yayBpbnRvIGEKLSAqIHNlcGFyYXRlIGNvbXBhbnkgY2FsbGVkIFBlbGFnaWNvcmUgQUIsIHdoaWNoIGNvbW1pdGVkIHRoZSBjb2RlIHRvIHRoZQorICogc2VwYXJhdGUgY29tcGFueSBjYWxsZWQgUGVsYWdpY29yZSBBQiwgd2hpY2ggY29tbWl0dGVkIHRoZSBjb2RlIHRvIHRoZQogICoga2VybmVsLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCmluZGV4IGU1Zjc2YTAuLjcwYzMwZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMKKysrIGIvZHJpdmVycy9pMmMvaTJjLWNvcmUuYwpAQCAtMzQ4LDcgKzM0OCw3IEBACiAKIAogLyogVGhpcyBpcyBhIHBlcm1pc3NpdmUgYWRkcmVzcyB2YWxpZGl0eSBjaGVjaywgSTJDIGFkZHJlc3MgbWFwIGNvbnN0cmFpbnRzCi0gKiBhcmUgcHVycG9zZWRseSBub3QgZW5mb3JjZWQsIGV4Y2VwdCBmb3IgdGhlIGdlbmVyYWwgY2FsbCBhZGRyZXNzLiAqLworICogYXJlIHB1cnBvc2VseSBub3QgZW5mb3JjZWQsIGV4Y2VwdCBmb3IgdGhlIGdlbmVyYWwgY2FsbCBhZGRyZXNzLiAqLwogc3RhdGljIGludCBpMmNfY2hlY2tfY2xpZW50X2FkZHJfdmFsaWRpdHkoY29uc3Qgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIHsKIAlpZiAoY2xpZW50LT5mbGFncyAmIEkyQ19DTElFTlRfVEVOKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9jeTgyYzY5My5jIGIvZHJpdmVycy9pZGUvY3k4MmM2OTMuYwppbmRleCA5MzgzZjY3Li4zYmU2MGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9jeTgyYzY5My5jCisrKyBiL2RyaXZlcnMvaWRlL2N5ODJjNjkzLmMKQEAgLTY3LDcgKzY3LDcgQEAKIAogCS8qCiAJICogbm90ZTogYmVsb3cgd2Ugc2V0IHRoZSB2YWx1ZSBmb3IgQnVzIE1hc3RlciBJREUgVGltZU91dCBSZWdpc3RlcgotCSAqIEknbSBub3QgYWJzb2x1dGx5IHN1cmUgd2hhdCB0aGlzIGRvZXMsIGJ1dCBpdCBzb2x2ZWQgbXkgcHJvYmxlbQorCSAqIEknbSBub3QgYWJzb2x1dGVseSBzdXJlIHdoYXQgdGhpcyBkb2VzLCBidXQgaXQgc29sdmVkIG15IHByb2JsZW0KIAkgKiB3aXRoIElERSBETUEgYW5kIHNvdW5kLCBzbyBJIG5vdyBjYW4gcGxheSBzb3VuZCBhbmQgd29yayB3aXRoCiAJICogbXkgSURFIGRyaXZlciBhdCB0aGUgc2FtZSB0aW1lIDotKQogCSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMgYi9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMKaW5kZXggNTQwNmI2ZS4uNWE3MDJkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYwpAQCAtMTA3LDcgKzEwNyw3IEBACiBzdGF0aWMgdm9pZCBpZGVfZmxvcHB5X3JlcG9ydF9lcnJvcihzdHJ1Y3QgaWRlX2Rpc2tfb2JqICpmbG9wcHksCiAJCQkJICAgIHN0cnVjdCBpZGVfYXRhcGlfcGMgKnBjKQogewotCS8qIHN1cHJlc3MgZXJyb3IgbWVzc2FnZXMgcmVzdWx0aW5nIGZyb20gTWVkaXVtIG5vdCBwcmVzZW50ICovCisJLyogc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgcmVzdWx0aW5nIGZyb20gTWVkaXVtIG5vdCBwcmVzZW50ICovCiAJaWYgKGZsb3BweS0+c2Vuc2Vfa2V5ID09IDB4MDIgJiYKIAkgICAgZmxvcHB5LT5hc2MgICAgICAgPT0gMHgzYSAmJgogCSAgICBmbG9wcHktPmFzY3EgICAgICA9PSAweDAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvaWRlLXRhc2tmaWxlLmMgYi9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwppbmRleCAzNGI5ODcyLi42MDBjODlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYworKysgYi9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwpAQCAtMjAxLDcgKzIwMSw3IEBACiAJdTggc3RhdDsKIAogCS8qCi0JICogTGFzdCBzZWN0b3Igd2FzIHRyYW5zZmVyZWQsIHdhaXQgdW50aWwgZGV2aWNlIGlzIHJlYWR5LiAgVGhpcyBjYW4KKwkgKiBMYXN0IHNlY3RvciB3YXMgdHJhbnNmZXJyZWQsIHdhaXQgdW50aWwgZGV2aWNlIGlzIHJlYWR5LiAgVGhpcyBjYW4KIAkgKiB0YWtlIHVwIHRvIDYgbXMgb24gc29tZSBBVEFQSSBkZXZpY2VzLCBzbyB3ZSB3aWxsIHdhaXQgbWF4IDEwIG1zLgogCSAqLwogCWZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCAxMDAwOyByZXRyaWVzKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BpaXguYyBiL2RyaXZlcnMvaWRlL3BpaXguYwppbmRleCAxYmRjYTQ5Li5iNTlkMDRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9waWl4LmMKKysrIGIvZHJpdmVycy9pZGUvcGlpeC5jCkBAIC04LDggKzgsOCBAQAogICoKICAqIERvY3VtZW50YXRpb246CiAgKgotICoJUHVibGljYWxseSBhdmFpbGFibGUgZnJvbSBJbnRlbCB3ZWIgc2l0ZS4gRXJyYXRhIGRvY3VtZW50YXRpb24KLSAqIGlzIGFsc28gcHVibGljYWxseSBhdmFpbGFibGUuIEFzIGFuIGFpZGUgdG8gYW55b25lIGhhY2tpbmcgb24gdGhpcworICoJUHVibGljbHkgYXZhaWxhYmxlIGZyb20gSW50ZWwgd2ViIHNpdGUuIEVycmF0YSBkb2N1bWVudGF0aW9uCisgKiBpcyBhbHNvIHB1YmxpY2x5IGF2YWlsYWJsZS4gQXMgYW4gYWlkZSB0byBhbnlvbmUgaGFja2luZyBvbiB0aGlzCiAgKiBkcml2ZXIgdGhlIGxpc3Qgb2YgZXJyYXRhIHRoYXQgYXJlIHJlbGV2YW50IGlzIGJlbG93LmdvaW5nIGJhY2sgdG8KICAqIFBJSVg0LiBPbGRlciBkZXZpY2UgZG9jdW1lbnRhdGlvbiBpcyBub3cgYSBiaXQgdHJpY2t5IHRvIGZpbmQuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvc2lzNTUxMy5jIGIvZHJpdmVycy9pZGUvc2lzNTUxMy5jCmluZGV4IGRiN2Y0ZTcuLjRhMDAyMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3NpczU1MTMuYworKysgYi9kcml2ZXJzL2lkZS9zaXM1NTEzLmMKQEAgLTUzLDcgKzUzLDcgQEAKIAogI2RlZmluZSBEUlZfTkFNRSAic2lzNTUxMyIKIAotLyogcmVnaXN0ZXJzIGxheW91dCBhbmQgaW5pdCB2YWx1ZXMgYXJlIGNoaXBzZXQgZmFtaWx5IGRlcGVuZGFudCAqLworLyogcmVnaXN0ZXJzIGxheW91dCBhbmQgaW5pdCB2YWx1ZXMgYXJlIGNoaXBzZXQgZmFtaWx5IGRlcGVuZGVudCAqLwogCiAjZGVmaW5lIEFUQV8xNgkJMHgwMQogI2RlZmluZSBBVEFfMzMJCTB4MDIKQEAgLTQwNiw3ICs0MDYsNyBAQAogCQkJCQlwY2lfbmFtZShkZXYpKTsKIAkJCQljaGlwc2V0X2ZhbWlseSA9IEFUQV8xMzM7CiAKLQkJCQkvKiBDaGVjayBmb3IgNTUxMyBjb21wYWJpbGl0eSBtYXBwaW5nCisJCQkJLyogQ2hlY2sgZm9yIDU1MTMgY29tcGF0aWJpbGl0eSBtYXBwaW5nCiAJCQkJICogV2UgbXVzdCB1c2UgdGhpcywgZWxzZSB0aGUgcG9ydCBlbmFibGVkIGNvZGUgd2lsbCBmYWlsLAogCQkJCSAqIGFzIGl0IGV4cGVjdHMgdGhlIGVuYWJsZWJpdHMgYXQgMHg0YS4KIAkJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3RyaWZsZXguYyBiL2RyaXZlcnMvaWRlL3RyaWZsZXguYwppbmRleCA3OTUzNDQ3Li5lNTNhMWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS90cmlmbGV4LmMKKysrIGIvZHJpdmVycy9pZGUvdHJpZmxleC5jCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBMb29zZWx5IGJhc2VkIG9uIHRoZSBwaWl4ICYgc3Z3a3MgZHJpdmVycy4KICAqCiAgKiBEb2N1bWVudGF0aW9uOgotICoJTm90IHB1YmxpY2FsbHkgYXZhaWxhYmxlLgorICoJTm90IHB1YmxpY2x5IGF2YWlsYWJsZS4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3ZpYTgyY3h4eC5jIGIvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMKaW5kZXggZDJhMDk5Ny4uZjQ2ZjQ5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMKKysrIGIvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMKQEAgLTE0LDcgKzE0LDcgQEAKICAqCUFuZHJlIEhlZHJpY2sKICAqCiAgKiBEb2N1bWVudGF0aW9uOgotICoJT2Jzb2xldGUgZGV2aWNlIGRvY3VtZW50YXRpb24gcHVibGljYWxseSBhdmFpbGFibGUgZnJvbSB2aWEuY29tLnR3CisgKglPYnNvbGV0ZSBkZXZpY2UgZG9jdW1lbnRhdGlvbiBwdWJsaWNseSBhdmFpbGFibGUgZnJvbSB2aWEuY29tLnR3CiAgKglDdXJyZW50IGRldmljZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSB1bmRlciBOREEgb25seQogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9hZS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMKaW5kZXggNjJhZjc0Mi4uMjRmOWUzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCWludCBzdGF0dXM7CiAKIAkvKgotCSAqIHJldHJlaXZlIHRoZSBtZXNzYWdlCisJICogcmV0cmlldmUgdGhlIG1lc3NhZ2UKIAkgKi8KIAl3ciA9IGMyX21xX2NvbnN1bWUobXEpOwogCWlmICghd3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9xcC5jCmluZGV4IGQ4ZjRiYjguLjBkN2I2ZjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfcXAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfcXAuYwpAQCAtNjEyLDcgKzYxMiw3IEBACiAJYzJfdW5sb2NrX2NxcyhzZW5kX2NxLCByZWN2X2NxKTsKIAogCS8qCi0JICogRGVzdG9yeSBxcCBpbiB0aGUgcm5pYy4uLgorCSAqIERlc3Ryb3kgcXAgaW4gdGhlIHJuaWMuLi4KIAkgKi8KIAlkZXN0cm95X3FwKGMyZGV2LCBxcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl93ci5oIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmgKaW5kZXggYzY1ZmJkZC4uOGQ0YjRjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmgKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmgKQEAgLTEzMSw3ICsxMzEsNyBAQAogCSAqICAgICAgICAgIEFsbCB0aGUgcHJlY2VkaW5nIElEcyBhcmUgZml4ZWQsIGFuZCBtdXN0IG5vdCBjaGFuZ2UuCiAJICogICAgICAgICAgWW91IGNhbiBhZGQgbmV3IElEcywgYnV0IG11c3Qgbm90IHJlbW92ZSBvciByZW9yZGVyCiAJICogICAgICAgICAgYW55IElEcy4gSWYgeW91IGRvLCBZT1Ugd2lsbCBydWluIGFueSBob3BlIG9mCi0JICogICAgICAgICAgY29tcGF0YWJpbGl0eSBiZXR3ZWVuIHZlcnNpb25zLgorCSAqICAgICAgICAgIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucy4KIAkgKi8KIAlDQ1dSX0xBU1QsCiAKQEAgLTI0Miw3ICsyNDIsNyBAQAogLyoKICAqICB0byBmaXggYnVnIDE4MTUgd2UgZGVmaW5lIHRoZSBtYXggc2l6ZSBhbGxvd2FibGUgb2YgdGhlCiAgKiAgdGVybWluYXRlIG1lc3NhZ2UgKHBlciB0aGUgSUVURiBzcGVjKS5SZWZlciB0byB0aGUgSUVURgotICogIHByb3RvY2FsIHNwZWNpZmljYXRpb24sIHNlY3Rpb24gMTIuMS42LCBwYWdlIDY0KQorICogIHByb3RvY29sIHNwZWNpZmljYXRpb24sIHNlY3Rpb24gMTIuMS42LCBwYWdlIDY0KQogICogIFRoZSBtZXNzYWdlIGlzIHByZWZpeGVkIGJ5IDIwIHR5cGVzIG9mIEREUCBpbmZvLgogICoKICAqICBUaGVuIHRoZSBtZXNzYWdlIGhhcyA2IGJ5dGVzIGZvciB0aGUgdGVybWluYXRlIGNvbnRyb2wKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYwppbmRleCA0N2RiNGJmLi41OGMwZTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZHJpdmVyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2RyaXZlci5jCkBAIC0yMzkyLDcgKzIzOTIsNyBAQAogCS8qCiAJICogY2xlYXIgU2VyZGVzRW5hYmxlIGFuZCB0dXJuIHRoZSBsZWRzIG9mZjsgZG8gdGhpcyBoZXJlIGJlY2F1c2UKIAkgKiB3ZSBhcmUgdW5sb2FkaW5nLCBzbyBkb24ndCBjb3VudCBvbiBpbnRlcnJ1cHRzIHRvIG1vdmUgYWxvbmcKLQkgKiBUdXJuIHRoZSBMRURzIG9mZiBleHBsaWN0bHkgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKwkgKiBUdXJuIHRoZSBMRURzIG9mZiBleHBsaWNpdGx5IGZvciB0aGUgc2FtZSByZWFzb24uCiAJICovCiAJZGQtPmlwYXRoX2ZfcXVpZXRfc2VyZGVzKGRkKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2ZpbGVfb3BzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYwppbmRleCA2ZDRiMjljLi5lZTc5YTJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYwpAQCAtMTk3Miw3ICsxOTcyLDcgQEAKIAkgKiAwIHRvIDEuICBTbyBmb3IgdGhvc2UgY2hpcHMsIHdlIHR1cm4gaXQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uCiAJICogVGhpcyB3aWxsICh2ZXJ5IGJyaWVmbHkpIGFmZmVjdCBhbnkgb3RoZXIgb3BlbiBwb3J0cywgYnV0IHRoZQogCSAqIGR1cmF0aW9uIGlzIHZlcnkgc2hvcnQsIGFuZCB0aGVyZWZvcmUgaXNuJ3QgYW4gaXNzdWUuICBXZQotCSAqIGV4cGxpY3RseSBzZXQgdGhlIGluLW1lbW9yeSB0YWlsIGNvcHkgdG8gMCBiZWZvcmVoYW5kLCBzbyB3ZQorCSAqIGV4cGxpY2l0bHkgc2V0IHRoZSBpbi1tZW1vcnkgdGFpbCBjb3B5IHRvIDAgYmVmb3JlaGFuZCwgc28gd2UKIAkgKiBkb24ndCBoYXZlIHRvIHdhaXQgdG8gYmUgc3VyZSB0aGUgRE1BIHVwZGF0ZSBoYXMgaGFwcGVuZWQKIAkgKiAoY2hpcCByZXNldHMgaGVhZC90YWlsIHRvIDAgb24gdHJhbnNpdGlvbiB0byBlbmFibGUpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2luaXRfY2hpcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2luaXRfY2hpcC5jCmluZGV4IGZlZjBmNDIuLjdjMWVlYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9pbml0X2NoaXAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfaW5pdF9jaGlwLmMKQEAgLTMzNSw3ICszMzUsNyBAQAogICogQGRkOiB0aGUgaW5maW5pcGF0aCBkZXZpY2UKICAqCiAgKiBzYW5pdHkgY2hlY2sgYXQgbGVhc3Qgc29tZSBvZiB0aGUgdmFsdWVzIGFmdGVyIHJlc2V0LCBhbmQKLSAqIGVuc3VyZSBubyByZWNlaXZlIG9yIHRyYW5zbWl0IChleHBsaWN0bHksIGluIGNhc2UgcmVzZXQKKyAqIGVuc3VyZSBubyByZWNlaXZlIG9yIHRyYW5zbWl0IChleHBsaWNpdGx5LCBpbiBjYXNlIHJlc2V0CiAgKiBmYWlsZWQKICAqLwogc3RhdGljIGludCBpbml0X2NoaXBfcmVzZXQoc3RydWN0IGlwYXRoX2RldmRhdGEgKmRkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3VkLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYwppbmRleCA3NDIwNzE1Li5lOGEyYTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYwpAQCAtODYsNyArODYsNyBAQAogCX0KIAogCS8qCi0JICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VlZCB0aGUgZGF0YSBldmVuIGlmIG5vdAorCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZGUgdGhlIGRhdGEgZXZlbiBpZiBub3QKIAkgKiBwcmVzZW50IG9uIHRoZSB3aXJlLgogCSAqLwogCWxlbmd0aCA9IHN3cWUtPmxlbmd0aDsKQEAgLTUxNSw3ICs1MTUsNyBAQAogCX0KIAogCS8qCi0JICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VlZCB0aGUgZGF0YSBldmVuIGlmIG5vdAorCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZGUgdGhlIGRhdGEgZXZlbiBpZiBub3QKIAkgKiBwcmVzZW50IG9uIHRoZSB3aXJlLgogCSAqLwogCXdjLmJ5dGVfbGVuID0gdGxlbiArIHNpemVvZihzdHJ1Y3QgaWJfZ3JoKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91c2VyX3NkbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91c2VyX3NkbWEuYwppbmRleCBiZTc4ZjY2Li5mNWNiMTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdXNlcl9zZG1hLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3VzZXJfc2RtYS5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAlyZXR1cm4gMSArICgoZXBhZ2UgLSBzcGFnZSkgPj4gUEFHRV9TSElGVCk7CiB9CiAKLS8qIHRydW5jYXRlIGxlbmd0aCB0byBwYWdlIGJvdW5kcnkgKi8KKy8qIHRydW5jYXRlIGxlbmd0aCB0byBwYWdlIGJvdW5kYXJ5ICovCiBzdGF0aWMgaW50IGlwYXRoX3VzZXJfc2RtYV9wYWdlX2xlbmd0aCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKQogewogCWNvbnN0IHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gYWRkciAmIH5QQUdFX01BU0s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfY20uYwppbmRleCBjZmEzYTJiLi4zM2M3ZWVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19jbS5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2NtLmMKQEAgLTEzOTcsNyArMTM5Nyw3IEBACiAJCWNsZWFudXBfcmV0cmFuc19lbnRyeShjbV9ub2RlKTsKIAkJY21fbm9kZS0+c3RhdGUgPSBORVNfQ01fU1RBVEVfQ0xPU0lORzsKIAkJc2VuZF9hY2soY21fbm9kZSwgTlVMTCk7Ci0JCS8qIFdhaXQgZm9yIEFDSyBhcyB0aGlzIGlzIHNpbXVsdGFub3VzIGNsb3NlLi4KKwkJLyogV2FpdCBmb3IgQUNLIGFzIHRoaXMgaXMgc2ltdWx0YW5lb3VzIGNsb3NlLi4KIAkJKiBBZnRlciB3ZSByZWNlaXZlIEFDSywgZG8gbm90IHNlbmQgYW55dGhpbmcuLgogCQkqIEp1c3Qgcm0gdGhlIG5vZGUuLiBEb25lLi4gKi8KIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19ody5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfaHcuYwppbmRleCAwOGMxOTQ4Li4xMGQwYTVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19ody5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2h3LmMKQEAgLTgwLDcgKzgwLDcgQEAKIAogI2lmZGVmIENPTkZJR19JTkZJTklCQU5EX05FU19ERUJVRwogc3RhdGljIHVuc2lnbmVkIGNoYXIgKm5lc19pd2FycF9zdGF0ZV9zdHJbXSA9IHsKLQkiTm9uLUV4aXN0YW50IiwKKwkiTm9uLUV4aXN0ZW50IiwKIAkiSWRsZSIsCiAJIlJUUyIsCiAJIkNsb3NpbmciLApAQCAtOTEsNyArOTEsNyBAQAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgKm5lc190Y3Bfc3RhdGVfc3RyW10gPSB7Ci0JIk5vbi1FeGlzdGFudCIsCisJIk5vbi1FeGlzdGVudCIsCiAJIkNsb3NlZCIsCiAJIkxpc3RlbiIsCiAJIlNZTiBTZW50IiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX25pYy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMKaW5kZXggMmM5YzE5My4uZTk2YjhmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMKQEAgLTkwMiw3ICs5MDIsNyBAQAogCQluZXNfd3JpdGVfaW5kZXhlZChuZXNkZXYsIE5FU19JRFhfTklDX1VOSUNBU1RfQUxMLCBuaWNfYWN0aXZlKTsKIAl9CiAKLQluZXNfZGVidWcoTkVTX0RCR19OSUNfUlgsICJOdW1iZXIgb2YgTUMgZW50cmllcyA9ICVkLCBQcm9taXNjb3VzID0gJWQsIEFsbCBNdWx0aWNhc3QgPSAlZC5cbiIsCisJbmVzX2RlYnVnKE5FU19EQkdfTklDX1JYLCAiTnVtYmVyIG9mIE1DIGVudHJpZXMgPSAlZCwgUHJvbWlzY3VvdXMgPSAlZCwgQWxsIE11bHRpY2FzdCA9ICVkLlxuIiwKIAkJICBtY19jb3VudCwgISEobmV0ZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKSwKIAkJICAhIShuZXRkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSk7CiAJaWYgKCFtY19hbGxfb24pIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYi5oCmluZGV4IDczMjI1ZWUuLjc2OWExZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliLmgKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWIuaApAQCAtNjUzLDcgKzY1Myw3IEBACiAKIC8qIGRldmljZSBkYXRhIHN0cnVjdCBub3cgY29udGFpbnMgb25seSAiZ2VuZXJhbCBwZXItZGV2aWNlIiBpbmZvLgogICogZmllbGRzIHJlbGF0ZWQgdG8gYSBwaHlzaWNhbCBJQiBwb3J0IGFyZSBpbiBhIHFpYl9wcG9ydGRhdGEgc3RydWN0LAotICogZGVzY3JpYmVkIGFib3ZlKSB3aGlsZSBmaWVsZHMgb25seSB1c2VkIGJ5IGEgcGFydGljdWFsciBjaGlwLXR5cGUgYXJlIGluCisgKiBkZXNjcmliZWQgYWJvdmUpIHdoaWxlIGZpZWxkcyBvbmx5IHVzZWQgYnkgYSBwYXJ0aWN1bGFyIGNoaXAtdHlwZSBhcmUgaW4KICAqIGEgcWliX2NoaXBkYXRhIHN0cnVjdCwgd2hvc2UgY29udGVudHMgYXJlIG9wYXF1ZSB0byB0aGlzIGZpbGUuCiAgKi8KIHN0cnVjdCBxaWJfZGV2ZGF0YSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9maWxlX29wcy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfZmlsZV9vcHMuYwppbmRleCA3NWJmYWQxLi40MDZmY2E1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9maWxlX29wcy5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2ZpbGVfb3BzLmMKQEAgLTE1MzksNyArMTUzOSw3IEBACiAKIAkJLyoKIAkJICogSWYgcHJvY2VzcyBoYXMgTk9UIGFscmVhZHkgc2V0IGl0J3MgYWZmaW5pdHksIHNlbGVjdCBhbmQKLQkJICogcmVzZXJ2ZSBhIHByb2Nlc3NvciBmb3IgaXQsIGFzIGEgcmVuZGV2b3VzIGZvciBhbGwKKwkJICogcmVzZXJ2ZSBhIHByb2Nlc3NvciBmb3IgaXQsIGFzIGEgcmVuZGV6dm91cyBmb3IgYWxsCiAJCSAqIHVzZXJzIG9mIHRoZSBkcml2ZXIuICBJZiB0aGV5IGRvbid0IGFjdHVhbGx5IGxhdGVyCiAJCSAqIHNldCBhZmZpbml0eSB0byB0aGlzIGNwdSwgb3Igc2V0IGl0IHRvIHNvbWUgb3RoZXIgY3B1LAogCQkgKiBpdCBqdXN0IG1lYW5zIHRoYXQgc29vbmVyIG9yIGxhdGVyIHdlIGRvbid0IHJlY29tbWVuZApAQCAtMTY1Nyw3ICsxNjU3LDcgQEAKIAkgKiAwIHRvIDEuICBTbyBmb3IgdGhvc2UgY2hpcHMsIHdlIHR1cm4gaXQgb2ZmIGFuZCB0aGVuIGJhY2sgb24uCiAJICogVGhpcyB3aWxsICh2ZXJ5IGJyaWVmbHkpIGFmZmVjdCBhbnkgb3RoZXIgb3BlbiBjdHh0cywgYnV0IHRoZQogCSAqIGR1cmF0aW9uIGlzIHZlcnkgc2hvcnQsIGFuZCB0aGVyZWZvcmUgaXNuJ3QgYW4gaXNzdWUuICBXZQotCSAqIGV4cGxpY3RseSBzZXQgdGhlIGluLW1lbW9yeSB0YWlsIGNvcHkgdG8gMCBiZWZvcmVoYW5kLCBzbyB3ZQorCSAqIGV4cGxpY2l0bHkgc2V0IHRoZSBpbi1tZW1vcnkgdGFpbCBjb3B5IHRvIDAgYmVmb3JlaGFuZCwgc28gd2UKIAkgKiBkb24ndCBoYXZlIHRvIHdhaXQgdG8gYmUgc3VyZSB0aGUgRE1BIHVwZGF0ZSBoYXMgaGFwcGVuZWQKIAkgKiAoY2hpcCByZXNldHMgaGVhZC90YWlsIHRvIDAgb24gdHJhbnNpdGlvbiB0byBlbmFibGUpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNjEyMC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNjEyMC5jCmluZGV4IDc3NGRlYTguLjdkZTRiN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTYxMjAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE2MTIwLmMKQEAgLTE3OTksNyArMTc5OSw3IEBACiAJLyoKIAkgKiBLZWVwIGNoaXAgZnJvbSBiZWluZyBhY2Nlc3NlZCB1bnRpbCB3ZSBhcmUgcmVhZHkuICBVc2UKIAkgKiB3cml0ZXEoKSBkaXJlY3RseSwgdG8gYWxsb3cgdGhlIHdyaXRlIGV2ZW4gdGhvdWdoIFFJQl9QUkVTRU5UCi0JICogaXNudCcgc2V0LgorCSAqIGlzbid0JyBzZXQuCiAJICovCiAJZGQtPmZsYWdzICY9IH4oUUlCX0lOSVRURUQgfCBRSUJfUFJFU0VOVCk7CiAJZGQtPmludF9jb3VudGVyID0gMDsgLyogc28gd2UgY2hlY2sgaW50ZXJydXB0cyB3b3JrIGFnYWluICovCkBAIC0yMTcxLDcgKzIxNzEsNyBAQAogCQkgKiBJbml0IHRoZSBjb250ZXh0IHJlZ2lzdGVycyBhbHNvOyBpZiB3ZSB3ZXJlCiAJCSAqIGRpc2FibGVkLCB0YWlsIGFuZCBoZWFkIHNob3VsZCBib3RoIGJlIHplcm8KIAkJICogYWxyZWFkeSBmcm9tIHRoZSBlbmFibGUsIGJ1dCBzaW5jZSB3ZSBkb24ndAotCQkgKiBrbm93LCB3ZSBoYXZlIHRvIGRvIGl0IGV4cGxpY3RseS4KKwkJICoga25vdywgd2UgaGF2ZSB0byBkbyBpdCBleHBsaWNpdGx5LgogCQkgKi8KIAkJdmFsID0gcWliX3JlYWRfdXJlZzMyKGRkLCB1cl9yY3ZlZ3JpbmRleHRhaWwsIGN0eHQpOwogCQlxaWJfd3JpdGVfdXJlZyhkZCwgdXJfcmN2ZWdyaW5kZXhoZWFkLCB2YWwsIGN0eHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzIyMC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzIyMC5jCmluZGV4IGRlNzk5ZjEuLjc0ZmUwMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTcyMjAuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MjIwLmMKQEAgLTIxMTEsNyArMjExMSw3IEBACiAJLyoKIAkgKiBLZWVwIGNoaXAgZnJvbSBiZWluZyBhY2Nlc3NlZCB1bnRpbCB3ZSBhcmUgcmVhZHkuICBVc2UKIAkgKiB3cml0ZXEoKSBkaXJlY3RseSwgdG8gYWxsb3cgdGhlIHdyaXRlIGV2ZW4gdGhvdWdoIFFJQl9QUkVTRU5UCi0JICogaXNudCcgc2V0LgorCSAqIGlzbid0JyBzZXQuCiAJICovCiAJZGQtPmZsYWdzICY9IH4oUUlCX0lOSVRURUQgfCBRSUJfUFJFU0VOVCk7CiAJZGQtPmludF9jb3VudGVyID0gMDsgLyogc28gd2UgY2hlY2sgaW50ZXJydXB0cyB3b3JrIGFnYWluICovCkBAIC0yNDc5LDcgKzI0NzksNyBAQAogCQkgKiB3ZSBjb21tYW5kIHRoZSBsaW5rIGRvd24uICBBcyB3aXRoIHdpZHRoLCBvbmx5IHdyaXRlIHRoZQogCQkgKiBhY3R1YWwgcmVnaXN0ZXIgaWYgdGhlIGxpbmsgaXMgY3VycmVudGx5IGRvd24sIG90aGVyd2lzZQogCQkgKiB0YWtlcyBlZmZlY3Qgb24gbmV4dCBsaW5rIGNoYW5nZS4gIFNpbmNlIHNldHRpbmcgaXMgYmVpbmcKLQkJICogZXhwbGljdGx5IHJlcXVlc3RlZCAodmlhIE1BRCBvciBzeXNmcyksIGNsZWFyIGF1dG9uZWcKKwkJICogZXhwbGljaXRseSByZXF1ZXN0ZWQgKHZpYSBNQUQgb3Igc3lzZnMpLCBjbGVhciBhdXRvbmVnCiAJCSAqIGZhaWx1cmUgc3RhdHVzIGlmIHNwZWVkIGF1dG9uZWcgaXMgZW5hYmxlZC4KIAkJICovCiAJCXBwZC0+bGlua19zcGVlZF9lbmFibGVkID0gdmFsOwpAQCAtMjc3OCw3ICsyNzc4LDcgQEAKIAkJICogSW5pdCB0aGUgY29udGV4dCByZWdpc3RlcnMgYWxzbzsgaWYgd2Ugd2VyZQogCQkgKiBkaXNhYmxlZCwgdGFpbCBhbmQgaGVhZCBzaG91bGQgYm90aCBiZSB6ZXJvCiAJCSAqIGFscmVhZHkgZnJvbSB0aGUgZW5hYmxlLCBidXQgc2luY2Ugd2UgZG9uJ3QKLQkJICoga25vdywgd2UgaGF2ZSB0byBkbyBpdCBleHBsaWN0bHkuCisJCSAqIGtub3csIHdlIGhhdmUgdG8gZG8gaXQgZXhwbGljaXRseS4KIAkJICovCiAJCXZhbCA9IHFpYl9yZWFkX3VyZWczMihkZCwgdXJfcmN2ZWdyaW5kZXh0YWlsLCBjdHh0KTsKIAkJcWliX3dyaXRlX3VyZWcoZGQsIHVyX3JjdmVncmluZGV4aGVhZCwgdmFsLCBjdHh0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTczMjIuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTczMjIuYwppbmRleCA0YTJkMjFlLi41NWRlM2NmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MzIyLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jCkBAIC0zMjk5LDcgKzMyOTksNyBAQAogCS8qCiAJICogS2VlcCBjaGlwIGZyb20gYmVpbmcgYWNjZXNzZWQgdW50aWwgd2UgYXJlIHJlYWR5LiAgVXNlCiAJICogd3JpdGVxKCkgZGlyZWN0bHksIHRvIGFsbG93IHRoZSB3cml0ZSBldmVuIHRob3VnaCBRSUJfUFJFU0VOVAotCSAqIGlzbnQnIHNldC4KKwkgKiBpc24ndCcgc2V0LgogCSAqLwogCWRkLT5mbGFncyAmPSB+KFFJQl9JTklUVEVEIHwgUUlCX1BSRVNFTlQgfCBRSUJfQkFESU5UUik7CiAJZGQtPmZsYWdzIHw9IFFJQl9ET0lOR19SRVNFVDsKQEAgLTM3MjcsNyArMzcyNyw3IEBACiAJCS8qCiAJCSAqIEFzIHdpdGggd2lkdGgsIG9ubHkgd3JpdGUgdGhlIGFjdHVhbCByZWdpc3RlciBpZiB0aGUKIAkJICogbGluayBpcyBjdXJyZW50bHkgZG93biwgb3RoZXJ3aXNlIHRha2VzIGVmZmVjdCBvbiBuZXh0Ci0JCSAqIGxpbmsgY2hhbmdlLiAgU2luY2Ugc2V0dGluZyBpcyBiZWluZyBleHBsaWN0bHkgcmVxdWVzdGVkCisJCSAqIGxpbmsgY2hhbmdlLiAgU2luY2Ugc2V0dGluZyBpcyBiZWluZyBleHBsaWNpdGx5IHJlcXVlc3RlZAogCQkgKiAodmlhIE1BRCBvciBzeXNmcyksIGNsZWFyIGF1dG9uZWcgZmFpbHVyZSBzdGF0dXMgaWYgc3BlZWQKIAkJICogYXV0b25lZyBpcyBlbmFibGVkLgogCQkgKi8KQEAgLTQxNjMsNyArNDE2Myw3IEBACiAJCSAqIEluaXQgdGhlIGNvbnRleHQgcmVnaXN0ZXJzIGFsc287IGlmIHdlIHdlcmUKIAkJICogZGlzYWJsZWQsIHRhaWwgYW5kIGhlYWQgc2hvdWxkIGJvdGggYmUgemVybwogCQkgKiBhbHJlYWR5IGZyb20gdGhlIGVuYWJsZSwgYnV0IHNpbmNlIHdlIGRvbid0Ci0JCSAqIGtub3csIHdlIGhhdmUgdG8gZG8gaXQgZXhwbGljdGx5LgorCQkgKiBrbm93LCB3ZSBoYXZlIHRvIGRvIGl0IGV4cGxpY2l0bHkuCiAJCSAqLwogCQl2YWwgPSBxaWJfcmVhZF91cmVnMzIoZGQsIHVyX3JjdmVncmluZGV4dGFpbCwgY3R4dCk7CiAJCXFpYl93cml0ZV91cmVnKGRkLCB1cl9yY3ZlZ3JpbmRleGhlYWQsIHZhbCwgY3R4dCk7CkBAIC03NDgzLDcgKzc0ODMsNyBAQAogCS8qICAgICAgIEJhc2VsaW5lIFdhbmRlciBDb3JyZWN0aW9uIEdhaW4gWzEzOjQtMF0gKGxlYXZlIGFzIGRlZmF1bHQpICovCiAJLyogICAgICAgQmFzZWxpbmUgV2FuZGVyIENvcnJlY3Rpb24gR2FpbiBbMzo3LTVdIChsZWF2ZSBhcyBkZWZhdWx0KSAqLwogCS8qICAgICAgIERhdGEgUmF0ZSBTZWxlY3QgWzU6Ny02XSAobGVhdmUgYXMgZGVmYXVsdCkgKi8KLQkvKiAgICAgICBSWCBQYXJyYWxlbCBXb3JkIFdpZHRoIFszOjEwLThdIChsZWF2ZSBhcyBkZWZhdWx0KSAqLworCS8qICAgICAgIFJYIFBhcmFsbGVsIFdvcmQgV2lkdGggWzM6MTAtOF0gKGxlYXZlIGFzIGRlZmF1bHQpICovCiAKIAkvKiBSWCBSRVNUICovCiAJLyogICAgICAgU2luZ2xlLSBvciBNdWx0aS1jaGFubmVsIHJlc2V0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pbml0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pbml0LmMKaW5kZXggZmZlZmI3OC4uYTAxZjNmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaW5pdC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2luaXQuYwpAQCAtMzQ2LDcgKzM0Niw3IEBACiAgKiBAZGQ6IHRoZSBxbG9naWNfaWIgZGV2aWNlCiAgKgogICogc2FuaXR5IGNoZWNrIGF0IGxlYXN0IHNvbWUgb2YgdGhlIHZhbHVlcyBhZnRlciByZXNldCwgYW5kCi0gKiBlbnN1cmUgbm8gcmVjZWl2ZSBvciB0cmFuc21pdCAoZXhwbGljdGx5LCBpbiBjYXNlIHJlc2V0CisgKiBlbnN1cmUgbm8gcmVjZWl2ZSBvciB0cmFuc21pdCAoZXhwbGljaXRseSwgaW4gY2FzZSByZXNldAogICogZmFpbGVkCiAgKi8KIHN0YXRpYyBpbnQgaW5pdF9hZnRlcl9yZXNldChzdHJ1Y3QgcWliX2RldmRhdGEgKmRkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfbWFkLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaAppbmRleCAxNDdhZmY5Li43ODQwYWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaApAQCAtNzMsNyArNzMsNyBAQAogCiAJCXN0cnVjdCB7CiAJCQlfX2JlMTYJcmVzZXJ2ZWQ7Ci0JCQlfX2JlMTYJbGlkOwkJLyogTElEIHdoZXJlIGNoYW5nZSBvY2N1cmVkICovCisJCQlfX2JlMTYJbGlkOwkJLyogTElEIHdoZXJlIGNoYW5nZSBvY2N1cnJlZCAqLwogCQkJdTgJcmVzZXJ2ZWQyOwogCQkJdTgJbG9jYWxfY2hhbmdlczsJLyogbG93IGJpdCAtIGxvY2FsIGNoYW5nZXMgKi8KIAkJCV9fYmUzMgluZXdfY2FwX21hc2s7CS8qIG5ldyBjYXBhYmlsaXR5IG1hc2sgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3R3c2kuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3R3c2kuYwppbmRleCA2ZjMxY2E1Li5kZGRlNzJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl90d3NpLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdHdzaS5jCkBAIC00MSw3ICs0MSw3IEBACiAgKiBRTG9naWNfSUIgIlR3byBXaXJlIFNlcmlhbCBJbnRlcmZhY2UiIGRyaXZlci4KICAqIE9yaWdpbmFsbHkgd3JpdHRlbiBmb3IgYSBub3QtcXVpdGUtaTJjIHNlcmlhbCBlZXByb20sIHdoaWNoIGlzCiAgKiBzdGlsbCB1c2VkIG9uIHNvbWUgc3VwcG9ydGVkIGJvYXJkcy4gTGF0ZXIgYm9hcmRzIGhhdmUgYWRkZWQgYQotICogdmFyaWV0eSBvZiBvdGhlciB1c2VzLCBtb3N0IGJvYXJkLXNwZWNpZmljLCBzbyB0ZWggYml0LWJvZmZpbmcKKyAqIHZhcmlldHkgb2Ygb3RoZXIgdXNlcywgbW9zdCBib2FyZC1zcGVjaWZpYywgc28gdGhlIGJpdC1ib2ZmaW5nCiAgKiBwYXJ0IGhhcyBiZWVuIHNwbGl0IG9mZiB0byB0aGlzIGZpbGUsIHdoaWxlIHRoZSBvdGhlciBwYXJ0cwogICogaGF2ZSBiZWVuIG1vdmVkIHRvIGNoaXAtc3BlY2lmaWMgZmlsZXMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdWQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VkLmMKaW5kZXggNGE1MWZkMS4uODI4NjA5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdWQuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91ZC5jCkBAIC0xMTYsNyArMTE2LDcgQEAKIAl9CiAKIAkvKgotCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZWQgdGhlIGRhdGEgZXZlbiBpZiBub3QKKwkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWRlIHRoZSBkYXRhIGV2ZW4gaWYgbm90CiAJICogcHJlc2VudCBvbiB0aGUgd2lyZS4KIAkgKi8KIAlsZW5ndGggPSBzd3FlLT5sZW5ndGg7CkBAIC01MjAsNyArNTIwLDcgQEAKIAkJZ290byBkcm9wOwogCiAJLyoKLQkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWVkIHRoZSBkYXRhIGV2ZW4gaWYgbm90CisJICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VkZSB0aGUgZGF0YSBldmVuIGlmIG5vdAogCSAqIHByZXNlbnQgb24gdGhlIHdpcmUuCiAJICovCiAJd2MuYnl0ZV9sZW4gPSB0bGVuICsgc2l6ZW9mKHN0cnVjdCBpYl9ncmgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdXNlcl9zZG1hLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYwppbmRleCA2NjIwOGJjLi44MjQ0MjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYwpAQCAtMjM5LDcgKzIzOSw3IEBACiB9CiAKIC8qCi0gKiBUcnVuY2F0ZSBsZW5ndGggdG8gcGFnZSBib3VuZHJ5LgorICogVHJ1bmNhdGUgbGVuZ3RoIHRvIHBhZ2UgYm91bmRhcnkuCiAgKi8KIHN0YXRpYyBpbnQgcWliX3VzZXJfc2RtYV9wYWdlX2xlbmd0aCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbGVuKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmgKaW5kZXggZjFkZjAxNS4uMmYwMmFiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5oCkBAIC05MSw3ICs5MSw3IEBACiAjZGVmaW5lIFNJWkVfNEsJKDFVTCA8PCBTSElGVF80SykKICNkZWZpbmUgTUFTS180SwkofihTSVpFXzRLLTEpKQogCi0JCQkJCS8qIHN1cHBvcnQgdXB0byA1MTJLQiBpbiBvbmUgUkRNQSAqLworCQkJCQkvKiBzdXBwb3J0IHVwIHRvIDUxMktCIGluIG9uZSBSRE1BICovCiAjZGVmaW5lIElTQ1NJX0lTRVJfU0dfVEFCTEVTSVpFICAgICAgICAgKDB4ODAwMDAgPj4gU0hJRlRfNEspCiAjZGVmaW5lIElTRVJfREVGX0NNRF9QRVJfTFVOCQkxMjgKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lkZXYuYyBiL2RyaXZlcnMvaW5wdXQvam95ZGV2LmMKaW5kZXggMzE4MmM5Yy4uNTY4OGI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lkZXYuYworKysgYi9kcml2ZXJzL2lucHV0L2pveWRldi5jCkBAIC03NTgsNyArNzU4LDcgQEAKIH0KIAogLyoKLSAqIE1hcmsgZGV2aWNlIG5vbi1leGlzdGFudC4gVGhpcyBkaXNhYmxlcyB3cml0ZXMsIGlvY3RscyBhbmQKKyAqIE1hcmsgZGV2aWNlIG5vbi1leGlzdGVudC4gVGhpcyBkaXNhYmxlcyB3cml0ZXMsIGlvY3RscyBhbmQKICAqIHByZXZlbnRzIG5ldyB1c2VycyBmcm9tIG9wZW5pbmcgdGhlIGRldmljZS4gQWxyZWFkeSBwb3N0ZWQKICAqIGJsb2NraW5nIHJlYWRzIHdpbGwgc3RheSwgaG93ZXZlciBuZXcgb25lcyB3aWxsIGZhaWwuCiAgKi8KQEAgLTc3Nyw3ICs3NzcsNyBAQAogCWpveWRldl9oYW5ndXAoam95ZGV2KTsKIAlqb3lkZXZfcmVtb3ZlX2NocmRldihqb3lkZXYpOwogCi0JLyogam95ZGV2IGlzIG1hcmtlZCBkZWFkIHNvIG5vb25lIGVsc2UgYWNjZXNzZXMgam95ZGV2LT5vcGVuICovCisJLyogam95ZGV2IGlzIG1hcmtlZCBkZWFkIHNvIG5vIG9uZSBlbHNlIGFjY2Vzc2VzIGpveWRldi0+b3BlbiAqLwogCWlmIChqb3lkZXYtPm9wZW4pCiAJCWlucHV0X2Nsb3NlX2RldmljZShoYW5kbGUpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9hM2QuYyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svYTNkLmMKaW5kZXggZDI1OWI0MS4uMTYzOWFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9qb3lzdGljay9hM2QuYworKysgYi9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2EzZC5jCkBAIC0zLDcgKzMsNyBAQAogICovCiAKIC8qCi0gKiBGUC1HYW1pbmcgQXNzYXNpbiAzRCBqb3lzdGljayBkcml2ZXIgZm9yIExpbnV4CisgKiBGUC1HYW1pbmcgQXNzYXNzaW4gM0Qgam95c3RpY2sgZHJpdmVyIGZvciBMaW51eAogICovCiAKIC8qCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KICNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+CiAKLSNkZWZpbmUgRFJJVkVSX0RFU0MJIkZQLUdhbWluZyBBc3Nhc2luIDNEIGpveXN0aWNrIGRyaXZlciIKKyNkZWZpbmUgRFJJVkVSX0RFU0MJIkZQLUdhbWluZyBBc3Nhc3NpbiAzRCBqb3lzdGljayBkcml2ZXIiCiAKIE1PRFVMRV9BVVRIT1IoIlZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHVjdy5jej4iKTsKIE1PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2RhdmluY2lfa2V5c2Nhbi5jIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9kYXZpbmNpX2tleXNjYW4uYwppbmRleCBhOTFlZTk0Li5jZDg5ZDE3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9kYXZpbmNpX2tleXNjYW4uYworKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2RhdmluY2lfa2V5c2Nhbi5jCkBAIC01LDcgKzUsNyBAQAogICoKICAqIEF1dGhvcjogTWlndWVsIEFndWlsYXIgPG1pZ3VlbC5hZ3VpbGFyQHJpZGdlcnVuLmNvbT4KICAqCi0gKiBJbnRpYWwgQ29kZTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgorICogSW5pdGlhbCBDb2RlOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+CiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC5jIGIvZHJpdmVycy9pbnB1dC9taXNjL2FkeGwzNHguYwppbmRleCBkZTU5MDBkLi4xNDRkZGJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9hZHhsMzR4LmMKQEAgLTcxNiw3ICs3MTYsNyBAQAogCXBkYXRhID0gZGV2LT5wbGF0Zm9ybV9kYXRhOwogCWlmICghcGRhdGEpIHsKIAkJZGV2X2RiZyhkZXYsCi0JCQkiTm8gcGxhdGZyb20gZGF0YTogVXNpbmcgZGVmYXVsdCBpbml0aWFsaXphdGlvblxuIik7CisJCQkiTm8gcGxhdGZvcm0gZGF0YTogVXNpbmcgZGVmYXVsdCBpbml0aWFsaXphdGlvblxuIik7CiAJCXBkYXRhID0gJmFkeGwzNHhfZGVmYXVsdF9pbml0OwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMgYi9kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYwppbmRleCBhOTNjNTI1Li5mYzYyMjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYworKysgYi9kcml2ZXJzL2lucHV0L21pc2Mva2V5c3Bhbl9yZW1vdGUuYwpAQCAtMzEyLDcgKzMxMiw3IEBACiAJCQlyZW1vdGUtPmRhdGEudGVzdGVyID0gcmVtb3RlLT5kYXRhLnRlc3RlciA+PiA1OwogCQkJcmVtb3RlLT5kYXRhLmJpdHNfbGVmdCAtPSA1OwogCQl9IGVsc2UgewotCQkJZXJyKCJCYWQgbWVzc2FnZSByZWNpZXZlZCwgbm8gc3RvcCBiaXQgZm91bmQuXG4iKTsKKwkJCWVycigiQmFkIG1lc3NhZ2UgcmVjZWl2ZWQsIG5vIHN0b3AgYml0IGZvdW5kLlxuIik7CiAJCX0KIAogCQlkZXZfZGJnKCZyZW1vdGUtPnVkZXYtPmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy93aXN0cm9uX2J0bnMuYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy93aXN0cm9uX2J0bnMuYwppbmRleCAxMjUwMWRlLi41MmI0MTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21pc2Mvd2lzdHJvbl9idG5zLmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL3dpc3Ryb25fYnRucy5jCkBAIC0yNzQsNyArMjc0LDcgQEAKIAl7IEtFX0JMVUVUT09USCwgMHgzMCB9LCAgICAgICAgICAgICAgICAgICAgICAvKiBGbitGMTAgKi8KIAl7IEtFX0tFWSwgICAgICAgMHgzMSwge0tFWV9NQUlMfSB9LCAgICAgICAgICAvKiBtYWlsIGJ1dHRvbiAqLwogCXsgS0VfS0VZLCAgICAgICAweDM2LCB7S0VZX1dXV30gfSwgICAgICAgICAgIC8qIHd3dyBidXR0b24gKi8KLQl7IEtFX1dJRkksICAgICAgMHg3OCB9LCAgICAgICAgICAgICAgICAgICAgICAvKiBzYXRlbGl0ZSBkaXNoIGJ1dHRvbiAqLworCXsgS0VfV0lGSSwgICAgICAweDc4IH0sICAgICAgICAgICAgICAgICAgICAgIC8qIHNhdGVsbGl0ZSBkaXNoIGJ1dHRvbiAqLwogCXsgS0VfRU5ELCAgICAgICAwIH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvYmNtNTk3NC5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9iY201OTc0LmMKaW5kZXggM2FlYWQ5MS4uMzEyNjk4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS9iY201OTc0LmMKKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9iY201OTc0LmMKQEAgLTYzOSw3ICs2MzksNyBAQAogICogZGV2aWNlLCByZXN1bHRpbmcgaW4gdHJhY2twYWQgbWFsZnVuY3Rpb24gdW5kZXIgY2VydGFpbgogICogY2lyY3Vtc3RhbmNlcy4gVG8gZ2V0IGFyb3VuZCB0aGlzIHByb2JsZW0sIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQogICogZXhhbXBsZSB0aGF0IHV0aWxpemVzIHRoZSBVU0JfUVVJUktfUkVTRVRfUkVTVU1FIHF1aXJrIGluIG9yZGVyIHRvCi0gKiByZWNpZXZlIGEgcmVzZXRfcmVzdW1lIHJlcXVlc3QgcmF0aGVyIHRoYW4gdGhlIG5vcm1hbCByZXN1bWUuCisgKiByZWNlaXZlIGEgcmVzZXRfcmVzdW1lIHJlcXVlc3QgcmF0aGVyIHRoYW4gdGhlIG5vcm1hbCByZXN1bWUuCiAgKiBTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgcmVzZXRfcmVzdW1lIGlzIGVxdWFsIHRvIG1vZGUgc3dpdGNoCiAgKiBwbHVzIHN0YXJ0X3RyYWZmaWMsIGl0IHNlZW1zIGVhc2llciB0byBhbHdheXMgZG8gdGhlIHN3aXRjaCB3aGVuCiAgKiBzdGFydGluZyB0cmFmZmljIG9uIHRoZSBkZXZpY2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljc19pMmMuYyBiL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCmluZGV4IGY2YWEyNmQuLmNiYTNjODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2Uvc3luYXB0aWNzX2kyYy5jCkBAIC00NjIsNyArNDYyLDcgQEAKIAkgKiBXaGlsZSBpbnRlcnJ1cHQgZHJpdmVuLCB0aGVyZSBpcyBubyByZWFsIG5lZWQgdG8gcG9sbCB0aGUgZGV2aWNlLgogCSAqIEJ1dCB0b3VjaHBhZHMgYXJlIHZlcnkgc2Vuc2l0aXZlLCBzbyB0aGVyZSBjb3VsZCBiZSBlcnJvcnMKIAkgKiByZWxhdGVkIHRvIHBoeXNpY2FsIGVudmlyb25tZW50IGFuZCB0aGUgYXR0ZW50aW9uIGxpbmUgaXNuJ3QKLQkgKiBuZWNjZXNhcmlseSBhc3NlcnRlZC4gSW4gc3VjaCBjYXNlIHdlIGNhbiBsb3NlIHRoZSB0b3VjaHBhZC4KKwkgKiBuZWNlc3NhcmlseSBhc3NlcnRlZC4gSW4gc3VjaCBjYXNlIHdlIGNhbiBsb3NlIHRoZSB0b3VjaHBhZC4KIAkgKiBXZSBwb2xsIHRoZSBkZXZpY2Ugb25jZSBpbiBUSFJFQURfSVJRX1NMRUVQX1NFQ1MgYW5kCiAJICogaWYgZXJyb3IgaXMgZGV0ZWN0ZWQsIHdlIHRyeSB0byByZXNldCBhbmQgcmVjb25maWd1cmUgdGhlIHRvdWNocGFkLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9tb3VzZS92c3h4eGFhLmMgYi9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYwppbmRleCBiZjJjMGM4Li5lYjlhM2NmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYworKysgYi9kcml2ZXJzL2lucHV0L21vdXNlL3ZzeHh4YWEuYwpAQCAtMzM0LDcgKzMzNCw3IEBACiAJICogTTogbWFudWZhY3R1cmVyIGxvY2F0aW9uIGNvZGUKIAkgKiBSOiByZXZpc2lvbiBjb2RlCiAJICogRTogRXJyb3IgY29kZS4gSWYgaXQncyBpbiB0aGUgcmFuZ2Ugb2YgMHgwMC4uMHgxZiwgb25seSBzb21lCi0JICogICAgbWlub3IgcHJvYmxlbSBvY2N1cmVkLiBFcnJvcnMgPj0gMHgyMCBhcmUgY29uc2lkZXJlZCBiYWQKKwkgKiAgICBtaW5vciBwcm9ibGVtIG9jY3VycmVkLiBFcnJvcnMgPj0gMHgyMCBhcmUgY29uc2lkZXJlZCBiYWQKIAkgKiAgICBhbmQgdGhlIGRldmljZSBtYXkgbm90IHdvcmsgcHJvcGVybHkuLi4KIAkgKiBEOiA8MDAxMD4gPT0gbW91c2UsIDwwMTAwPiA9PSB0YWJsZXQKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaHBfc2RjLmMgYi9kcml2ZXJzL2lucHV0L3NlcmlvL2hwX3NkYy5jCmluZGV4IDhjMGI1MWMuLjQyMjA2MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8vaHBfc2RjLmMKKysrIGIvZHJpdmVycy9pbnB1dC9zZXJpby9ocF9zZGMuYwpAQCAtOTU1LDcgKzk1NSw3IEBACiAJSU5JVF9ERUxBWUVEX1dPUksoJm1vZHVsZWxvYWRlcl93b3JrLCByZXF1ZXN0X21vZHVsZV9kZWxheWVkKTsKIAogCXJldCA9IGhwX3NkY19pbml0KCk7Ci0JLyogYWZ0ZXIgc3VjY2Vzc2Z1bGwgaW5pdGlhbGl6YXRpb24gZ2l2ZSBTREMgc29tZSB0aW1lIHRvIHNldHRsZQorCS8qIGFmdGVyIHN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24gZ2l2ZSBTREMgc29tZSB0aW1lIHRvIHNldHRsZQogCSAqIGFuZCB0aGVuIGxvYWQgdGhlIGhwX3NkY19tbGMgdXBwZXIgbGF5ZXIgZHJpdmVyICovCiAJaWYgKCFyZXQpCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmbW9kdWxlbG9hZGVyX3dvcmssCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3NlcmlvL3hpbGlueF9wczIuYyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8veGlsaW54X3BzMi5jCmluZGV4IDc1NDBiYWYuLjgwYmFhNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvc2VyaW8veGlsaW54X3BzMi5jCisrKyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8veGlsaW54X3BzMi5jCkBAIC0yMjUsNyArMjI1LDcgQEAKIC8qKgogICogeHBzMl9vZl9wcm9iZSAtIHByb2JlIG1ldGhvZCBmb3IgdGhlIFBTLzIgZGV2aWNlLgogICogQG9mX2RldjoJcG9pbnRlciB0byBPRiBkZXZpY2Ugc3RydWN0dXJlCi0gKiBAbWF0Y2g6CXBvaW50ZXIgdG8gdGhlIHN0dWN0dXJlIHVzZWQgZm9yIG1hdGNoaW5nIGEgZGV2aWNlCisgKiBAbWF0Y2g6CXBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZSB1c2VkIGZvciBtYXRjaGluZyBhIGRldmljZQogICoKICAqIFRoaXMgZnVuY3Rpb24gcHJvYmVzIHRoZSBQUy8yIGRldmljZSBpbiB0aGUgZGV2aWNlIHRyZWUuCiAgKiBJdCBpbml0aWFsaXplcyB0aGUgZHJpdmVyIGRhdGEgc3RydWN0dXJlIGFuZCB0aGUgaGFyZHdhcmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2ludGVsLW1pZC10b3VjaC5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbnRlbC1taWQtdG91Y2guYwppbmRleCBjMDMwN2IyLi42NmM5NmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2ludGVsLW1pZC10b3VjaC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaW50ZWwtbWlkLXRvdWNoLmMKQEAgLTU0Miw3ICs1NDIsNyBAQAogCSAqIEFEQyBwb3dlciBvbiwgc3RhcnQsIGVuYWJsZSBQRU5ERVQgYW5kIHNldCBsb29wIGRlbGF5CiAJICogQURDIGxvb3AgZGVsYXkgaXMgc2V0IHRvIDQuNSBtcyBhcHByb3hpbWF0ZWx5CiAJICogTG9vcCBkZWxheSBtb3JlIHRoYW4gdGhpcyByZXN1bHRzIGluIGppdHRlciBpbiBhZGMgcmVhZGluZ3MKLQkgKiBTZXR0aW5nIGxvb3AgZGVsYXkgdG8gMCAoY29udGlub3VzIGxvb3ApIGluIE1BWElNIHN0b3BzIFBFTkRFVAorCSAqIFNldHRpbmcgbG9vcCBkZWxheSB0byAwIChjb250aW51b3VzIGxvb3ApIGluIE1BWElNIHN0b3BzIFBFTkRFVAogCSAqIGludGVycnVwdCBnZW5lcmF0aW9uIHNvbWV0aW1lcy4KIAkgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi91Y2IxNDAwX3RzLmMgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3VjYjE0MDBfdHMuYwppbmRleCAwMjhhNTM2Li4zYjViNWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3VjYjE0MDBfdHMuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3VjYjE0MDBfdHMuYwpAQCAtNiw3ICs2LDcgQEAKICAqICBDb3B5cmlnaHQ6CU1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KICAqCiAgKiBTcGxpdGluZyBkb25lIGJ5OiBNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPgotICogSWYgc29tZXRoaW5nIGRvZXNudCB3b3JrIGFuZCBpdCB3b3JrZWQgYmVmb3JlIHNwbGl0aW5nLCBlLW1haWwgbWUsCisgKiBJZiBzb21ldGhpbmcgZG9lc24ndCB3b3JrIGFuZCBpdCB3b3JrZWQgYmVmb3JlIHNwbGl0aW5nLCBlLW1haWwgbWUsCiAgKiBkb250IGJvdGhlciBOaWNvbGFzIHBsZWFzZSA7LSkKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MDUuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzA1LmMKaW5kZXggNmI1YmU3NC4uOThlNjExNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MDUuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcwNS5jCkBAIC0zMDYsNyArMzA2LDcgQEAKIAlkaWcyID0gd20tPmRpZ1syXTsKIAogCWlmIChlbmFibGUpIHsKLQkJLyogY29udGlub3VzIG1vZGUgKi8KKwkJLyogY29udGludW91cyBtb2RlICovCiAJCWlmICh3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwICYmCiAJCSAgICAocmV0ID0gd20tPm1hY2hfb3BzLT5hY2Nfc3RhcnR1cCh3bSkpIDwgMCkKIAkJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMi5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTIuYwppbmRleCA3NDkwYjA1Li4yYmMyZmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMi5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzEyLmMKQEAgLTQxOSw3ICs0MTksNyBAQAogCWRpZzIgPSB3bS0+ZGlnWzJdOwogCiAJaWYgKGVuYWJsZSkgewotCQkvKiBjb250aW5vdXMgbW9kZSAqLworCQkvKiBjb250aW51b3VzIG1vZGUgKi8KIAkJaWYgKHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXApIHsKIAkJCXJldCA9IHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXAod20pOwogCQkJaWYgKHJldCA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMy5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTMuYwppbmRleCAyMzhiNTEzLi43M2VjOTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzEzLmMKQEAgLTQzMSw3ICs0MzEsNyBAQAogCWRpZzMgPSB3bS0+ZGlnWzJdOwogCiAJaWYgKGVuYWJsZSkgewotCQkvKiBjb250aW5vdXMgbW9kZSAqLworCQkvKiBjb250aW51b3VzIG1vZGUgKi8KIAkJaWYgKHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXAgJiYKIAkJCShyZXQgPSB3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwKHdtKSkgPCAwKQogCQkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205N3h4LWNvcmUuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205N3h4LWNvcmUuYwppbmRleCA2Yjc1YzlmLi41ZGJlNzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTd4eC1jb3JlLmMKKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3eHgtY29yZS5jCkBAIC0zMzUsNyArMzM1LDcgQEAKIAkgKi8KIAlpZiAoIXdtLT5tYWNoX29wcy0+YWNjX2VuYWJsZWQgfHwgd20tPm1hY2hfb3BzLT5hY2NfcGVuX2Rvd24pIHsKIAkJaWYgKHdtLT5wZW5faXNfZG93biAmJiAhcGVuX3dhc19kb3duKSB7Ci0JCQkvKiBEYXRhIGlzIG5vdCBhdmFpbGlhYmxlIGltbWVkaWF0ZWx5IG9uIHBlbiBkb3duICovCisJCQkvKiBEYXRhIGlzIG5vdCBhdmFpbGFibGUgaW1tZWRpYXRlbHkgb24gcGVuIGRvd24gKi8KIAkJCXF1ZXVlX2RlbGF5ZWRfd29yayh3bS0+dHNfd29ya3EsICZ3bS0+dHNfcmVhZGVyLCAxKTsKIAkJfQogCkBAIC0zNTQsNyArMzU0LDcgQEAKICAqIENvZGVjIFBFTkRPV04gaXJxIGhhbmRsZXIKICAqCiAgKiBXZSBoYXZlIHRvIGRpc2FibGUgdGhlIGNvZGVjIGludGVycnVwdCBpbiB0aGUgaGFuZGxlciBiZWNhdXNlIGl0Ci0gKiBjYW4gdGFrZSB1cHRvIDFtcyB0byBjbGVhciB0aGUgaW50ZXJydXB0IHNvdXJjZS4gV2Ugc2NoZWR1bGUgYSB0YXNrCisgKiBjYW4gdGFrZSB1cCB0byAxbXMgdG8gY2xlYXIgdGhlIGludGVycnVwdCBzb3VyY2UuIFdlIHNjaGVkdWxlIGEgdGFzawogICogaW4gYSB3b3JrIHF1ZXVlIHRvIGRvIHRoZSBhY3R1YWwgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY2hpcC4gIFRoZQogICogaW50ZXJydXB0IGlzIHRoZW4gZW5hYmxlZCBhZ2FpbiBpbiB0aGUgc2xvdyBoYW5kbGVyIHdoZW4gdGhlIHNvdXJjZQogICogaGFzIGJlZW4gY2xlYXJlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9kaXZhY2FwaS5oIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2RpdmFjYXBpLmgKaW5kZXggOWY1YjY4MC4uZTMzMGRhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2RpdmFjYXBpLmgKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2RpdmFjYXBpLmgKQEAgLTY3Myw3ICs2NzMsNyBAQAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIGF1eGlsbGlhcnkgc3RhdGVzIGZvciBzdXBwbGVtZW50YXJ5IHNlcnZpY2VzICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGF1eGlsaWFyeSBzdGF0ZXMgZm9yIHN1cHBsZW1lbnRhcnkgc2VydmljZXMgICAgICAgICAgICAgICAgICAgICAqLwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAjZGVmaW5lIElETEUgICAgICAgICAgICAgICAgMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2lvLmggYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vaW8uaAppbmRleCAwYzZjNjUwLi5hNmYxNzU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vaW8uaAorKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vaW8uaApAQCAtNjAsNyArNjAsNyBAQAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogc3RydWN0IF9JU0ROX0FEQVBURVIgewogIHZvaWQgICAgICAgICAgICAgKCogRElSZXF1ZXN0KShQSVNETl9BREFQVEVSLCBFTlRJVFkgKikgOwotIGludCAgICAgICAgICAgICAgICAgU3RhdGUgOyAvKiBmcm9tIE5UNCAxLnNydiwgYSBnb29kIGlkZWEsIGJ1dCAgYSBwb29yIGFjaGlldm1lbnQgKi8KKyBpbnQgICAgICAgICAgICAgICAgIFN0YXRlIDsgLyogZnJvbSBOVDQgMS5zcnYsIGEgZ29vZCBpZGVhLCBidXQgIGEgcG9vciBhY2hpZXZlbWVudCAqLwogIGludCAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZWQgOwogIGludCAgICAgICAgIFJlZ2lzdGVyZWRXaXRoRGlkZCA7CiAgaW50ICAgICAgICAgICAgICAgICBVbmF2YWlsYWJsZSA7ICAvKiBjYWxsYmFjayBmdW5jdGlvbiBwb3NzaWJsZT8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9tZXNzYWdlLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vbWVzc2FnZS5jCmluZGV4IDM0MWVmMTcuLjhjNWM1NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9tZXNzYWdlLmMKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL21lc3NhZ2UuYwpAQCAtMjYzOSw3ICsyNjM5LDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIC8qIGxvY2FsIHJlcGx5IGlmIGFzc2lnbiB1bnN1Y2Nlc3NmdWxsCisgICAgICAvKiBsb2NhbCByZXBseSBpZiBhc3NpZ24gdW5zdWNjZXNzZnVsCiAgICAgICAgICBvciBCMyBwcm90b2NvbCBhbGxvd3Mgb25seSBvbmUgbGF5ZXIgMyBjb25uZWN0aW9uCiAgICAgICAgICAgIGFuZCBhbHJlYWR5IGNvbm5lY3RlZAogICAgICAgICAgICAgIG9yIEIyIHByb3RvY29sIG5vdCBhbnkgTEFQRApAQCAtODE4OSw3ICs4MTg5LDcgQEAKICAgICAgIGRsY1sgMF0gPSAxNTsKICAgICAgIGlmKGIyX2NvbmZpZy0+bGVuZ3RoID49IDgpIHsgLyogUElBRlMgY29udHJvbCBhYmlsaXRpZXMgKi8KICAgICAgICAgZGxjWyA3XSA9IDEwOyAKLSAgICAgICAgZGxjWzE2XSA9IDI7IC8qIExlbmd0aCBvZiBQSUFGUyBleHRlbnRpb24gKi8KKyAgICAgICAgZGxjWzE2XSA9IDI7IC8qIExlbmd0aCBvZiBQSUFGUyBleHRlbnNpb24gKi8KICAgICAgICAgZGxjWzE3XSA9IFBJQUZTX1VEQVRBX0FCSUxJVElFUzsgLyogY29udHJvbCAoVURBVEEpIGFiaWxpdHkgKi8KICAgICAgICAgZGxjWzE4XSA9IGIyX2NvbmZpZ19wYXJtc1s0XS5pbmZvWzBdOyAvKiB2YWx1ZSAqLwogICAgICAgICBkbGNbIDBdID0gMTg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vcGMuaCBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wYy5oCmluZGV4IDFjNjk0NTcuLmJmNmIwMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wYy5oCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9wYy5oCkBAIC03MDEsNyArNzAxLDcgQEAKICNkZWZpbmUgUFJPVENBUF9GUkVFMTIgICAgMHgxMDAwICAvKiBub3QgdXNlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBQUk9UQ0FQX0ZSRUUxMyAgICAweDIwMDAgIC8qIG5vdCB1c2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFBST1RDQVBfRlJFRTE0ICAgIDB4NDAwMCAgLyogbm90IHVzZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgUFJPVENBUF9FWFRFTlNJT04gMHg4MDAwICAvKiB1c2VkIGZvciBmdXR1cmUgZXh0ZW50aW9ucyAgICAgICAgICAqLworI2RlZmluZSBQUk9UQ0FQX0VYVEVOU0lPTiAweDgwMDAgIC8qIHVzZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zICAgICAgICAgICovCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogKi8KIC8qIE9uaG9vayBkYXRhIHRyYW5zbWlzc2lvbiBFVFMzMDA2NTkwMSAqLwogLyogTWVzc2FnZSBUeXBlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vdW1faWRpLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vdW1faWRpLmMKaW5kZXggNjU2M2RiOS4uYWMwYmRkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL3VtX2lkaS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi91bV9pZGkuYwpAQCAtMzYzLDcgKzM2Myw3IEBACiAKIAkJaWYgKChyZXQgPSAoKmNwX2ZuKSAob3NfaGFuZGxlLCBkc3QsIGRhdGEsIGxlbmd0aCkpID49IDApIHsKIAkJCS8qCi0JCQkgICBBY2tub3dsZWRnZSBvbmx5IGlmIHJlYWQgd2FzIHN1Y2Nlc3NmdWxsCisJCQkgICBBY2tub3dsZWRnZSBvbmx5IGlmIHJlYWQgd2FzIHN1Y2Nlc3NmdWwKIAkJCSAqLwogCQkJZGl2YV9kYXRhX3FfYWNrX3NlZ21lbnQ0cmVhZChxKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY211bHRpLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjbXVsdGkuYwppbmRleCA0ZTM3ODBkLi5mNmYzYzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjbXVsdGkuYworKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjbXVsdGkuYwpAQCAtMTE4LDcgKzExOCw3IEBACiAgKgktPiBTZWUgaGZjX211bHRpLmggZm9yIEhGQ19JT19NT0RFXyogdmFsdWVzCiAgKglCeSBkZWZhdWx0LCB0aGUgSU8gbW9kZSBpcyBwY2kgbWVtb3J5IElPIChNRU1JTykuCiAgKglTb21lIGNhcmRzIHJlcXVpcmUgc3BlY2lmaWMgSU8gbW9kZSwgc28gaXQgY2Fubm90IGJlIGNoYW5nZWQuCi0gKglJdCBtYXkgYmUgdXNlZnVsbCB0byBzZXQgSU8gbW9kZSB0byByZWdpc3RlciBpbyAoUkVHSU8pIHRvIHNvbHZlCisgKglJdCBtYXkgYmUgdXNlZnVsIHRvIHNldCBJTyBtb2RlIHRvIHJlZ2lzdGVyIGlvIChSRUdJTykgdG8gc29sdmUKICAqCVBDSSBicmlkZ2UgcHJvYmxlbXMuCiAgKglJZiB1bnN1cmUsIGRvbid0IGdpdmUgdGhpcyBwYXJhbWV0ZXIuCiAgKgpAQCAtOTAzLDcgKzkwMyw3IEBACiAvKgogICogU3BlZWNoIERlc2lnbiByZXN5bmMgZmVhdHVyZQogICogTk9URTogVGhpcyBpcyBjYWxsZWQgc29tZXRpbWVzIG91dHNpZGUgaW50ZXJydXB0IGhhbmRsZXIuCi0gKiBXZSBtdXN0IGxvY2sgaXJxc2F2ZSwgc28gbm8gb3RoZXIgaW50ZXJydXB0IChvdGhlciBjYXJkKSB3aWxsIG9jY3VyciEKKyAqIFdlIG11c3QgbG9jayBpcnFzYXZlLCBzbyBubyBvdGhlciBpbnRlcnJ1cHQgKG90aGVyIGNhcmQpIHdpbGwgb2NjdXIhCiAgKiBBbHNvIG11bHRpcGxlIGludGVycnVwdHMgbWF5IG5lc3QsIHNvIG11c3QgbG9jayBlYWNoIGFjY2VzcyAobGlzdHMsIGNhcmQpIQogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9oZmNwY2kuYyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9oZmNwY2kuYwppbmRleCAxNWQzMjNiLi40MzQzYWJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjcGNpLmMKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY3BjaS5jCkBAIC0yNzIsNyArMjcyLDcgQEAKIAkgKiBELSBhbmQgbW9uaXRvci9DSSBjaGFubmVsIGFyZSBub3QgZW5hYmxlZAogCSAqIFNUSU8xIGlzIHVzZWQgYXMgb3V0cHV0IGZvciBkYXRhLCBCMStCMiBmcm9tIFNULT5JT00rSEZDCiAJICogU1RJTzIgaXMgdXNlZCBhcyBkYXRhIGlucHV0LCBCMStCMiBmcm9tIElPTS0+U1QKLQkgKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW5vdXMgMXMKKwkgKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW51b3VzIDFzCiAJICogVGhlIElPTSBzbG90cyBhcmUgYWx3YXlzIGVuYWJsZWQKIAkgKi8KIAlpZiAodGVzdF9iaXQoSEZDX0NGR19QQ00sICZoYy0+Y2ZnKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19wY2kuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfcGNpLmMKaW5kZXggMzE0NzAyMC4uMGNiMDU0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19wY2kuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3BjaS5jCkBAIC0xNDYsNyArMTQ2LDcgQEAKIAkvKiBELSBhbmQgbW9uaXRvci9DSSBjaGFubmVsIGFyZSBub3QgZW5hYmxlZCAqLwogCS8qIFNUSU8xIGlzIHVzZWQgYXMgb3V0cHV0IGZvciBkYXRhLCBCMStCMiBmcm9tIFNULT5JT00rSEZDICovCiAJLyogU1RJTzIgaXMgdXNlZCBhcyBkYXRhIGlucHV0LCBCMStCMiBmcm9tIElPTS0+U1QgKi8KLQkvKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW5vdXMgMXMgKi8KKwkvKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW51b3VzIDFzICovCiAJLyogVGhlIElPTSBzbG90cyBhcmUgYWx3YXlzIGVuYWJsZWQgKi8KIAljcy0+aHcuaGZjcGNpLmNvbm4gPSAweDM2OwkvKiBzZXQgZGF0YSBmbG93IGRpcmVjdGlvbnMgKi8KIAlXcml0ZV9oZmMoY3MsIEhGQ1BDSV9DT05ORUNULCBjcy0+aHcuaGZjcGNpLmNvbm4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19zeC5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19zeC5jCmluZGV4IDEyMzViNzEuLjE1NmQ3YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfc3guYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3N4LmMKQEAgLTM5OSw3ICszOTksNyBAQAogCS8qIEQtIGFuZCBtb25pdG9yL0NJIGNoYW5uZWwgYXJlIG5vdCBlbmFibGVkICovCiAJLyogU1RJTzEgaXMgdXNlZCBhcyBvdXRwdXQgZm9yIGRhdGEsIEIxK0IyIGZyb20gU1QtPklPTStIRkMgKi8KIAkvKiBTVElPMiBpcyB1c2VkIGFzIGRhdGEgaW5wdXQsIEIxK0IyIGZyb20gSU9NLT5TVCAqLwotCS8qIFNUIEItY2hhbm5lbCBzZW5kIGRpc2FibGVkIC0+IGNvbnRpbm91cyAxcyAqLworCS8qIFNUIEItY2hhbm5lbCBzZW5kIGRpc2FibGVkIC0+IGNvbnRpbnVvdXMgMXMgKi8KIAkvKiBUaGUgSU9NIHNsb3RzIGFyZSBhbHdheXMgZW5hYmxlZCAqLwogCWNzLT5ody5oZmNzeC5jb25uID0gMHgzNjsJLyogc2V0IGRhdGEgZmxvdyBkaXJlY3Rpb25zICovCiAJV3JpdGVfaGZjKGNzLCBIRkNTWF9DT05ORUNULCBjcy0+aHcuaGZjc3guY29ubik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3VzYi5oIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY191c2IuaAppbmRleCBlNzlmNTY1Li4yZjU4MWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3VzYi5oCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfdXNiLmgKQEAgLTEyNiw3ICsxMjYsNyBAQAogCiAKIC8qCi0gKiBkZXZpY2UgZGVwZW5kYW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgZGlmZmVyZW50CisgKiBkZXZpY2UgZGVwZW5kZW50IGluZm9ybWF0aW9uIHRvIHN1cHBvcnQgZGlmZmVyZW50CiAgKiBJU0ROIFRhJ3MgdXNpbmcgdGhlIEhGQy1TIFVTQiBjaGlwCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2wzZHNzMS5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L2wzZHNzMS5jCmluZGV4IGNjNmVlMmQuLjhlMmZkMDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9sM2RzczEuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvbDNkc3MxLmMKQEAgLTE1OTUsNyArMTU5NSw3IEBACiAJICogQmVhcmVyIENhcGFiaWxpdGllcwogCSAqLwogCXAgPSBza2ItPmRhdGE7Ci0JLyogb25seSB0aGUgZmlyc3Qgb2NjdXJlbmNlICdsbCBiZSBkZXRlY3RlZCAhICovCisJLyogb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSAnbGwgYmUgZGV0ZWN0ZWQgISAqLwogCWlmICgocCA9IGZpbmRpZShwLCBza2ItPmxlbiwgMHgwNCwgMCkpKSB7CiAJCWlmICgocFsxXSA8IDIpIHx8IChwWzFdID4gMTEpKQogCQkJZXJyID0gMTsKQEAgLTIxNjEsNyArMjE2MSw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIGhhbmRsZSBzcGVjaWFsIGNvbW1hbmRzIGZvciB0aGlzIHByb3RvY29sLiAgKi8KLS8qIEV4YW1wbGVzIGFyZSBjYWxsIGluZGVwZW5kYW50IHNlcnZpY2VzIGxpa2UgKi8KKy8qIEV4YW1wbGVzIGFyZSBjYWxsIGluZGVwZW5kZW50IHNlcnZpY2VzIGxpa2UgKi8KIC8qIHJlbW90ZSBvcGVyYXRpb25zIHdpdGggZHVtbXkgIGNhbGxyZWYuICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHN0YXRpYyBpbnQgbDNkc3MxX2NtZF9nbG9iYWwoc3RydWN0IFBTdGFjayAqc3QsIGlzZG5fY3RybCAqaWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvbDNuaTEuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9sM25pMS5jCmluZGV4IGY5NTg0NDkuLjdiMjI5YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9sM25pMS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9sM25pMS5jCkBAIC0xNDQ5LDcgKzE0NDksNyBAQAogCSAqIEJlYXJlciBDYXBhYmlsaXRpZXMKIAkgKi8KIAlwID0gc2tiLT5kYXRhOwotCS8qIG9ubHkgdGhlIGZpcnN0IG9jY3VyZW5jZSAnbGwgYmUgZGV0ZWN0ZWQgISAqLworCS8qIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2UgJ2xsIGJlIGRldGVjdGVkICEgKi8KIAlpZiAoKHAgPSBmaW5kaWUocCwgc2tiLT5sZW4sIDB4MDQsIDApKSkgewogCQlpZiAoKHBbMV0gPCAyKSB8fCAocFsxXSA+IDExKSkKIAkJCWVyciA9IDE7CkBAIC0yMDE3LDcgKzIwMTcsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBoYW5kbGUgc3BlY2lhbCBjb21tYW5kcyBmb3IgdGhpcyBwcm90b2NvbC4gICovCi0vKiBFeGFtcGxlcyBhcmUgY2FsbCBpbmRlcGVuZGFudCBzZXJ2aWNlcyBsaWtlICovCisvKiBFeGFtcGxlcyBhcmUgY2FsbCBpbmRlcGVuZGVudCBzZXJ2aWNlcyBsaWtlICovCiAvKiByZW1vdGUgb3BlcmF0aW9ucyB3aXRoIGR1bW15ICBjYWxscmVmLiAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdGF0aWMgaW50IGwzbmkxX2NtZF9nbG9iYWwoc3RydWN0IFBTdGFjayAqc3QsIGlzZG5fY3RybCAqaWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvbmpfcy5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L25qX3MuYwppbmRleCAyMzQ0ZTdiLi5hMWI4OTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvbmpfcy5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC9ual9zLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQAogCQlyZXR1cm4oMCk7CiAJfQogCS8qIHRoZSBUSjMwMCBhbmQgVEozMjAgbXVzdCBiZSBkZXRlY3RlZCwgdGhlIElSUSBoYW5kbGluZyBpcyBkaWZmZXJlbnQKLQkgKiB1bmZvcnR1bmF0bHkgdGhlIGNoaXBzIHVzZSB0aGUgc2FtZSBkZXZpY2UgSUQsIGJ1dCB0aGUgVEozMjAgaGFzCisJICogdW5mb3J0dW5hdGVseSB0aGUgY2hpcHMgdXNlIHRoZSBzYW1lIGRldmljZSBJRCwgYnV0IHRoZSBUSjMyMCBoYXMKIAkgKiB0aGUgYml0MjAgaW4gc3RhdHVzIFBDSSBjZmcgcmVnaXN0ZXIgc2V0CiAJICovCiAJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldl9uZXRqZXQsIDB4MDQsICZjZmcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV9iLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX2IuYwppbmRleCBlNTZlNWFmLi5lZDRiYzU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX2IuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX2IuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiB9CiAKIC8qCi0gKiBTdGFydCB0cmFuc2ZlcmluZyAoZmxhZ3Mgb3IgZGF0YSkgb24gdGhlIEIgY2hhbm5lbCwgc2luY2UKKyAqIFN0YXJ0IHRyYW5zZmVycmluZyAoZmxhZ3Mgb3IgZGF0YSkgb24gdGhlIEIgY2hhbm5lbCwgc2luY2UKICAqIEZJRk8gY291bnRlcnMgaGFzIGJlZW4gc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUuCiAgKi8KIHN0YXRpYyB2b2lkIHN0NTQ4MUJfc3RhcnRfeGZlcih2b2lkICpjb250ZXh0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV91c2IuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9zdDU0ODFfdXNiLmMKaW5kZXggMTBkNDFjNS4uMTU5ZThmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV91c2IuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX3VzYi5jCkBAIC00NzAsNyArNDcwLDcgQEAKIAogLyoKICAqIERlY29kZSBmcmFtZXMgcmVjZWl2ZWQgb24gdGhlIEIvRCBjaGFubmVsLgotICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgY29udGlub3VzbHkKKyAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGNvbnRpbnVvdXNseQogICogd2l0aCA2NEtiaXQvcyAvIDE2S2JpdC9zIG9mIGRhdGEgYW5kIGhlbmNlIGl0IHdpbGwgYmUgCiAgKiBjYWxsZWQgNTAgdGltZXMgcGVyIHNlY29uZCB3aXRoIDIwIElTT0MgZGVzY3JpcHRvcnMuIAogICogQ2FsbGVkIGF0IGludGVycnVwdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC90ZWxlc19jcy5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L3RlbGVzX2NzLmMKaW5kZXggMjgyYTQ0Ni4uYWEyNWUxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L3RlbGVzX2NzLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L3RlbGVzX2NzLmMKQEAgLTksNyArOSw3IEBACiAgICAgQWxzbyBpbnNwaXJlZCBieSBFTFNBIFBDTUNJQSBkcml2ZXIgCiAgICAgYnkgS2xhdXMgTGljaHRlbndhbGRlciA8TGljaHRlbndhbGRlckBBQ00ub3JnPgogICAgIAotICAgIEV4dGVudGlvbnMgdG8gbmV3IGhpc2F4X3BjbWNpYSBieSBLYXJzdGVuIEtlaWwKKyAgICBFeHRlbnNpb25zIHRvIG5ldyBoaXNheF9wY21jaWEgYnkgS2Fyc3RlbiBLZWlsCiAKICAgICBtaW5vciBjaGFuZ2VzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBrZXJuZWwgMi40LngKICAgICBieSBKYW4uU2NodWJlcnRAR01YLmxpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaHlzZG4vaHlzZG5fc2NoZWQuYyBiL2RyaXZlcnMvaXNkbi9oeXNkbi9oeXNkbl9zY2hlZC5jCmluZGV4IDgxZGI0YTEuLjM2NzRkMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oeXNkbi9oeXNkbl9zY2hlZC5jCisrKyBiL2RyaXZlcnMvaXNkbi9oeXNkbi9oeXNkbl9zY2hlZC5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIC8qIHNlbmQgb25lIGNvbmZpZyBsaW5lIHRvIHRoZSBjYXJkIGFuZCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgYSAqLwogLyogbmVnYXRpdmUgZXJyb3IgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogVGhlIGZ1bmN0aW9uIHdvcmtzIHdpdGggdGltZW91dHMgcGVyaGFwcyBub3QgZ2l2aW5nIHRoZSBncmVhdGVzdCBzcGVlZCAgICAqLwotLyogc2VuZGluZyB0aGUgbGluZSwgYnV0IHRoaXMgc2hvdWxkIGJlIG1lYW5pbmdsZXNzIGJlYWN1c2Ugb25seSBzb21lIGxpbmVzICAqLworLyogc2VuZGluZyB0aGUgbGluZSwgYnV0IHRoaXMgc2hvdWxkIGJlIG1lYW5pbmdsZXNzIGJlY2F1c2Ugb25seSBzb21lIGxpbmVzICAqLwogLyogYXJlIHRvIGJlIHNlbnQgYW5kIHRoaXMgaGFwcGVucyB2ZXJ5IHNlbGRvbS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMKaW5kZXggYWZlZWRlNy4uMmE3ZDE3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jCisrKyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYwpAQCAtMTUzMCw3ICsxNTMwLDcgQEAKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcKIAkJCQkiVVBET1dOOiBMaW5lIHByb3RvY29sIG9uIEludGVyZmFjZSAlcywiCiAJCQkJIiBjaGFuZ2VkIHN0YXRlIHRvIGRvd25cbiIsIGxwLT5uZXRkZXYtPmRldi0+bmFtZSk7Ci0JCS8qIHNob3VsZCBzdG9wIHJvdXRpbmcgaGlnaGVyLWxldmVsIGRhdGEgYWNjcm9zcyAqLworCQkvKiBzaG91bGQgc3RvcCByb3V0aW5nIGhpZ2hlci1sZXZlbCBkYXRhIGFjcm9zcyAqLwogCX0gZWxzZSBpZiAoKCFscC0+Y2lzY29fbGluZV9zdGF0ZSkgJiYKIAkJKG15c2VxX2RpZmYgPj0gMCkgJiYgKG15c2VxX2RpZmYgPD0gMikpIHsKIAkJLyogbGluZSBkb3duIC0+IHVwICovCkBAIC0xNTM4LDcgKzE1MzgsNyBAQAogCQlwcmludGsgKEtFUk5fV0FSTklORwogCQkJCSJVUERPV046IExpbmUgcHJvdG9jb2wgb24gSW50ZXJmYWNlICVzLCIKIAkJCQkiIGNoYW5nZWQgc3RhdGUgdG8gdXBcbiIsIGxwLT5uZXRkZXYtPmRldi0+bmFtZSk7Ci0JCS8qIHJlc3RhcnQgcm91dGluZyBoaWdoZXItbGV2ZWwgZGF0YSBhY2Nyb3NzICovCisJCS8qIHJlc3RhcnQgcm91dGluZyBoaWdoZXItbGV2ZWwgZGF0YSBhY3Jvc3MgKi8KIAl9CiAKIAlpZiAobHAtPmNpc2NvX2RlYnNlcmludCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9wcHAuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9wcHAuYwppbmRleCA5ZTgxNjJjLi4xYjAwMmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jCkBAIC0xNTE0LDcgKzE1MTQsNyBAQAogI2RlZmluZSBNUF9MT05HU0VRX01BWEJJVAkoKE1QX0xPTkdTRVFfTUFTSysxKT4+MSkKICNkZWZpbmUgTVBfU0hPUlRTRVFfTUFYQklUCSgoTVBfU0hPUlRTRVFfTUFTSysxKT4+MSkKIAotLyogc2VxdWVuY2Utd3JhcCBzYWZlIGNvbXBhcmlzaW9ucyAoZm9yIGxvbmcgc2VxdWVuY2UpKi8gCisvKiBzZXF1ZW5jZS13cmFwIHNhZmUgY29tcGFyaXNvbnMgKGZvciBsb25nIHNlcXVlbmNlKSovCiAjZGVmaW5lIE1QX0xUKGEsYikJKChhLWIpJk1QX0xPTkdTRVFfTUFYQklUKQogI2RlZmluZSBNUF9MRShhLGIpIAkhKChiLWEpJk1QX0xPTkdTRVFfTUFYQklUKQogI2RlZmluZSBNUF9HVChhLGIpIAkoKGItYSkmTVBfTE9OR1NFUV9NQVhCSVQpCkBAIC0xNzQ2LDcgKzE3NDYsNyBAQAogCQkgKiB0aGVuIG5leHQgZnJhZ21lbnQgc2hvdWxkIGJlIHRoZSBzdGFydCBvZiBuZXcgcmVhc3NlbWJseQogCQkgKiBpZiBzZXF1ZW5jZSBpcyBjb250aWd1b3VzLCBidXQgd2UgaGF2ZW4ndCByZWFzc2VtYmxlZCB5ZXQsCiAJCSAqIGtlZXAgZ29pbmcuCi0JCSAqIGlmIHNlcXVlbmNlIGlzIG5vdCBjb250aWd1b3VzLCBlaXRoZXIgY2xlYXIgZXZlcnl0aW5nCisJCSAqIGlmIHNlcXVlbmNlIGlzIG5vdCBjb250aWd1b3VzLCBlaXRoZXIgY2xlYXIgZXZlcnl0aGluZwogCQkgKiBiZWxvdyBsb3cgd2F0ZXJtYXJrIGFuZCBzZXQgc3RhcnQgdG8gdGhlIG5leHQgZnJhZyBvcgogCQkgKiBjbGVhciBzdGFydCBwdHIuCiAJCSAqLyAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl90dHkuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl90dHkuYwppbmRleCAzZDg4ZjE1Li42MDdkODQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fdHR5LmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3R0eS5jCkBAIC03OTIsNyArNzkyLDcgQEAKIH0KIAogLyogaXNkbl90dHlfcmVzdW1lKCkgdHJpZXMgdG8gcmVzdW1lIGEgc3VzcGVuZGVkIGNhbGwKLSAqIHNldHVwIG9mIHRoZSBsb3dlciBsZXZlbHMgYmVmb3JlIHRoYXQuIHVuZm9ydHVuYXRseSBoZXJlIGlzIG5vCisgKiBzZXR1cCBvZiB0aGUgbG93ZXIgbGV2ZWxzIGJlZm9yZSB0aGF0LiB1bmZvcnR1bmF0ZWx5IGhlcmUgaXMgbm8KICAqIGNoZWNraW5nIGZvciBjb21wYXRpYmlsaXR5IG9mIHVzZWQgcHJvdG9jb2xzIGltcGxlbWVudGVkIGJ5IFE5MzEKICAqIEl0IGRvZXMgdGhlIHNhbWUgdGhpbmdzIGxpa2UgaXNkbl90dHlfZGlhbCwgdGhlIGxhc3QgY29tbWFuZAogICogaXMgZGlmZmVyZW50LCBtYXkgYmUgd2UgY2FuIG1lcmdlIGl0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2lzZG5sb29wL2lzZG5sb29wLmMgYi9kcml2ZXJzL2lzZG4vaXNkbmxvb3AvaXNkbmxvb3AuYwppbmRleCBiOGExMDk4Li5kNDk3ZGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaXNkbmxvb3AvaXNkbmxvb3AuYworKysgYi9kcml2ZXJzL2lzZG4vaXNkbmxvb3AvaXNkbmxvb3AuYwpAQCAtOTU0LDcgKzk1NCw3IEBACiAvKgogICogUHV0IGNvbW1hbmQtc3RyaW5ncyBpbnRvIHRoZSBvZiB0aGUgJ2NhcmQnLiBJbiByZWFsaXR5LCBleGVjdXRlIHRoZW0KICAqIHJpZ2h0IGluIHBsYWNlIGJ5IGNhbGxpbmcgaXNkbmxvb3BfcGFyc2VfY21kKCkuIEFsc28gY29weSBldmVyeQotICogY29tbWFuZCB0byB0aGUgcmVhZCBtZXNzYWdlIHJpbmdidWZmZXIsIHByZWNlZWRpbmcgaXQgd2l0aCBhICc+Jy4KKyAqIGNvbW1hbmQgdG8gdGhlIHJlYWQgbWVzc2FnZSByaW5nYnVmZmVyLCBwcmVjZWRpbmcgaXQgd2l0aCBhICc+Jy4KICAqIFRoZXNlIG1lc2FnZ2VzIGNhbiBiZSByZWFkIGF0IC9kZXYvaXNkbmN0cmwuCiAgKgogICogUGFyYW1ldGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcC5oIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcC5oCmluZGV4IDE4YWY4NjguLjg1NDk0MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3AuaAorKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwLmgKQEAgLTIxLDcgKzIxLDcgQEAKIC8qIG9wdGlvbnMgbWF5IGJlOgogICoKICAqIGJpdCAwID0gdXNlIHVsYXcgaW5zdGVhZCBvZiBhbGF3Ci0gKiBiaXQgMSA9IGVuYWJsZSBoZmMgaGFyZHdhcmUgYWNjZWxsZXJhdGlvbiBmb3IgYWxsIGNoYW5uZWxzCisgKiBiaXQgMSA9IGVuYWJsZSBoZmMgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGZvciBhbGwgY2hhbm5lbHMKICAqCiAgKi8KICNkZWZpbmUgRFNQX09QVF9VTEFXCQkoMTw8MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY214LmMgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2NteC5jCmluZGV4IDMwOWJhY2YuLjRkMzk1ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY214LmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jbXguYwpAQCAtMTUxMyw3ICsxNTEzLDcgQEAKIAkvKiAtPiBpZiBlY2hvIGlzIE5PVCBlbmFibGVkICovCiAJaWYgKCFkc3AtPmVjaG8uc29mdHdhcmUpIHsKIAkJLyoKLQkJICogLT4gc3Vic3RyYWN0IHJ4LWRhdGEgZnJvbSBjb25mLWRhdGEsCisJCSAqIC0+IHN1YnRyYWN0IHJ4LWRhdGEgZnJvbSBjb25mLWRhdGEsCiAJCSAqIGlmIHR4LWRhdGEgaXMgYXZhaWxhYmxlLCBtaXgKIAkJICovCiAJCXdoaWxlIChyICE9IHJyICYmIHQgIT0gdHQpIHsKQEAgLTE1NzIsNyArMTU3Miw3IEBACiBzZW5kX3BhY2tldDoKIAkvKgogCSAqIHNlbmQgdHgtZGF0YSBpZiBlbmFibGVkIC0gZG9uJ3QgZmlsdGVyLAotCSAqIGJlY3Vhc2Ugd2Ugd2FudCB3aGF0IHdlIHNlbmQsIG5vdCB3aGF0IHdlIGZpbHRlcmVkCisJICogYmVjYXVzZSB3ZSB3YW50IHdoYXQgd2Ugc2VuZCwgbm90IHdoYXQgd2UgZmlsdGVyZWQKIAkgKi8KIAlpZiAoZHNwLT50eF9kYXRhKSB7CiAJCWlmICh0eF9kYXRhX29ubHkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY29yZS5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jb3JlLmMKaW5kZXggNmY1YjU0OC4uMjg3NzI5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jb3JlLmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jb3JlLmMKQEAgLTExNSw3ICsxMTUsNyBAQAogICoKICAqIFRoZSBDTVggaGFzIHNwZWNpYWwgZnVuY3Rpb25zIGZvciBjb25mZXJlbmNlcyB3aXRoIG9uZSwgdHdvIGFuZCBtb3JlCiAgKiBtZW1iZXJzLiBJdCB3aWxsIGFsbG93IGRpZmZlcmVudCB0eXBlcyBvZiBkYXRhIGZsb3cuIFJlY2VpdmUgYW5kIHRyYW5zbWl0Ci0gKiBkYXRhIHRvL2Zvcm0gdXBwZXIgbGF5ZXIgbWF5IGJlIHN3aXRoZWQgb24vb2ZmIGluZGl2aWR1YWxseSB3aXRob3V0IGxvb3NpbmcKKyAqIGRhdGEgdG8vZm9ybSB1cHBlciBsYXllciBtYXkgYmUgc3dpdGhlZCBvbi9vZmYgaW5kaXZpZHVhbGx5IHdpdGhvdXQgbG9zaW5nCiAgKiBmZWF0dXJlcyBvZiBDTVgsIFRvbmVzIGFuZCBEVE1GLgogICoKICAqIEVjaG8gQ2FuY2VsbGF0aW9uOiBTb21ldGltZXMgd2UgbGlrZSB0byBjYW5jZWwgZWNobyBmcm9tIHRoZSBpbnRlcmZhY2UuCkBAIC0xMjcsOSArMTI3LDkgQEAKICAqCiAgKiBJZiBhbGwgdXNlZCBmZWF0dXJlcyBjYW4gYmUgcmVhbGl6ZWQgaW4gaGFyZHdhcmUsIGFuZCBpZiB0cmFuc21pdCBhbmQvb3IKICAqIHJlY2VpdmUgZGF0YSBpc3QgZGlzYWJsZWQsIHRoZSBjYXJkIG1heSBub3Qgc2VuZC9yZWNlaXZlIGFueSBkYXRhIGF0IGFsbC4KLSAqIE5vdCByZWNlaXZpbmcgaXMgdXNlZnVsbCBpZiBvbmx5IGFubm91bmNlbWVudHMgYXJlIHBsYXllZC4gTm90IHNlbmRpbmcgaXMKLSAqIHVzZWZ1bGwgaWYgYW4gYW5zd2VyaW5nIG1hY2hpbmUgcmVjb3JkcyBhdWRpby4gTm90IHNlbmRpbmcgYW5kIHJlY2VpdmluZyBpcwotICogdXNlZnVsbCBkdXJpbmcgbW9zdCBzdGF0ZXMgb2YgdGhlIGNhbGwuIElmIHN1cHBvcnRlZCBieSBoYXJkd2FyZSwgdG9uZXMKKyAqIE5vdCByZWNlaXZpbmcgaXMgdXNlZnVsIGlmIG9ubHkgYW5ub3VuY2VtZW50cyBhcmUgcGxheWVkLiBOb3Qgc2VuZGluZyBpcworICogdXNlZnVsIGlmIGFuIGFuc3dlcmluZyBtYWNoaW5lIHJlY29yZHMgYXVkaW8uIE5vdCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgaXMKKyAqIHVzZWZ1bCBkdXJpbmcgbW9zdCBzdGF0ZXMgb2YgdGhlIGNhbGwuIElmIHN1cHBvcnRlZCBieSBoYXJkd2FyZSwgdG9uZXMKICAqIHdpbGwgYmUgcGxheWVkIHdpdGhvdXQgY3B1IGxvYWQuIFNtYWxsIFBCWHMgYW5kIE5ULU1vZGUgYXBwbGljYXRpb25zIHdpbGwKICAqIG5vdCBuZWVkIGV4cGVuc2l2ZSBoYXJkd2FyZSB3aGVuIHByb2Nlc3NpbmcgY2FsbHMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9kdG1mLmMgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2R0bWYuYwppbmRleCA5YWUyZDMzLi41YjQ4NGMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2R0bWYuYworKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2R0bWYuYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAgKiB0ZXN0ZWQgaXQgYWxsb3QuIGl0IGV2ZW4gd29ya3Mgd2l0aCB2ZXJ5IHNob3J0IHRvbmVzICg0MG1zKS4gdGhlIG9ubHkKICAqIGRpc2FkdmFudGFnZSBpcywgdGhhdCBpdCBkb2Vzbid0IHdvcmsgZ29vZCB3aXRoIGRpZmZlcmVudCB2b2x1bWVzIG9mIGJvdGgKICAqIHRvbmVzLiB0aGlzIHdpbGwgaGFwcGVuLCBpZiBhY2NvdXN0aWNhbGx5IGNvdXBsZWQgZGlhbGVycyBhcmUgdXNlZC4KLSAqIGl0IHNvbWV0aW1lcyBkZXRlY3RzIHRvbmVzIGR1cmluZyBzcGVhY2gsIHdoaWNoIGlzIG5vcm1hbCBmb3IgZGVjb2RlcnMuCisgKiBpdCBzb21ldGltZXMgZGV0ZWN0cyB0b25lcyBkdXJpbmcgc3BlZWNoLCB3aGljaCBpcyBub3JtYWwgZm9yIGRlY29kZXJzLgogICogdXNlIHNlcXVlbmNlcyB0byBnaXZlbiBjb21tYW5kcyBkdXJpbmcgY2FsbHMuCiAgKgogICogZHRtZiAtIHBvaW50cyB0byBhIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBkdG1mIHN0YXRlCkBAIC0yNDQsNyArMjQ0LDcgQEAKIAkJaWYgKHJlc3VsdFtpXSA8IHRyZXNoKSB7CiAJCQlsb3dncm91cCA9IC0xOwogCQkJaGlnaGdyb3VwID0gLTE7Ci0JCQlicmVhazsgIC8qIG5vaXNlIGluYmV0d2VlbiAqLworCQkJYnJlYWs7ICAvKiBub2lzZSBpbiBiZXR3ZWVuICovCiAJCX0KIAkJLyogZ29vZCBsZXZlbCBmb3VuZC4gVGhpcyBpcyBhbGxvd2VkIG9ubHkgb25lIHRpbWUgcGVyIGdyb3VwICovCiAJCWlmIChpIDwgTkNPRUZGLzIpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfdG9uZXMuYyBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfdG9uZXMuYwppbmRleCA3ZGJlNTRlLi40ZTQ0NDBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX3RvbmVzLmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF90b25lcy5jCkBAIC0zOTQsNyArMzk0LDcgQEAKIAl3aGlsZSAobGVuKSB7CiAJCS8qIGZpbmQgc2FtcGxlIHRvIHN0YXJ0IHdpdGggKi8KIAkJd2hpbGUgKDQyKSB7Ci0JCQkvKiB3YXJwIGFycm91bmQgKi8KKwkJCS8qIHdyYXAgYXJvdW5kICovCiAJCQlpZiAoIXBhdC0+c2VxW2luZGV4XSkgewogCQkJCWNvdW50ID0gMDsKIAkJCQlpbmRleCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vbUlTRE4vbDFvaXBfY29yZS5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2wxb2lwX2NvcmUuYwppbmRleCBiZDUyNmY2Li4yMmY4ZWM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vbDFvaXBfY29yZS5jCisrKyBiL2RyaXZlcnMvaXNkbi9tSVNETi9sMW9pcF9jb3JlLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogLSBUaW1lIEJhc2UgPSBUaW1lc3RhbXAgb2YgZmlyc3Qgc2FtcGxlIGluIGZyYW1lCiBUaGUgIlRpbWUgQmFzZSIgaXMgdXNlZCB0byByZWFyYW5nZSBwYWNrZXRzIGFuZCB0byBkZXRlY3QgcGFja2V0IGxvc3MuCiBUaGUgMTYgYml0cyBhcmUgc2VudCBpbiBuZXR3b3JrIG9yZGVyIChNU0IgZmlyc3QpIGFuZCBjb3VudCAxLzgwMDAgdGggb2YgYQotc2Vjb25kLiBUaGlzIGNhdXNlcyBhIHdyYXAgYXJyb3VuZCBlYWNoIDgsMTkyIHNlY29uZHMuIFRoZXJlIGlzIG5vIHJlcXVpcmVtZW50CitzZWNvbmQuIFRoaXMgY2F1c2VzIGEgd3JhcCBhcm91bmQgZWFjaCA4LDE5MiBzZWNvbmRzLiBUaGVyZSBpcyBubyByZXF1aXJlbWVudAogZm9yIHRoZSBpbml0aWFsICJUaW1lIEJhc2UiLCBidXQgMCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGZpcnN0IHBhY2tldC4KIEluIGNhc2Ugb2YgSERMQyBkYXRhLCB0aGlzIHRpbWVzdGFtcCBjb3VudHMgdGhlIHBhY2tldCBvciBieXRlIG51bWJlci4KIApAQCAtMjA1LDcgKzIwNSw3IEBACiAKIElmIHRoZSBvbmRlbWFuZCBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIHRoZSByZW1vdGUgSVAgaXMgc2V0IHRvIDAgb24gdGltZW91dC4KIFRoaXMgd2lsbCBzdG9wIGtlZXBhbGl2ZSB0cmFmZmljIHRvIHJlbW90ZS4gSWYgdGhlIHJlbW90ZSBpcyBvbmxpbmUgYWdhaW4sCi10cmFmZmljIHdpbGwgY29udGludWUgdG8gdGhlIHJlbW90ZSBhZGRyZXNzLiBUaGlzIGlzIHVzZWZ1bGwgZm9yIHJvYWQgd2FycmlvcnMuCit0cmFmZmljIHdpbGwgY29udGludWUgdG8gdGhlIHJlbW90ZSBhZGRyZXNzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igcm9hZCB3YXJyaW9ycy4KIFRoaXMgZmVhdHVyZSBvbmx5IHdvcmtzIHdpdGggSUQgc2V0LCBvdGhlcndoaXNlIGl0IGlzIGhpZ2hseSB1bnNlY3VyZS4KIAogCkBAIC01OTAsNyArNTkwLDcgQEAKIAkJCXJldHVybjsKIAkJfQogCX0gZWxzZQotCQltbGVuID0gbGVuLTI7IC8qIHNpbmdsZSBmcmFtZSwgc3Vic3RyYWN0IHRpbWViYXNlICovCisJCW1sZW4gPSBsZW4tMjsgLyogc2luZ2xlIGZyYW1lLCBzdWJ0cmFjdCB0aW1lYmFzZSAqLwogCiAJaWYgKGxlbiA8IDIpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IHBhY2tldCBlcnJvciAtIHBhY2tldCB0b28gc2hvcnQsIHRpbWUgIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2xheWVyMi5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2xheWVyMi5jCmluZGV4IDRhZTc1MDUuLmQwYWViNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9sYXllcjIuYworKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vbGF5ZXIyLmMKQEAgLTE4NjQsNyArMTg2NCw3IEBACiAJCXBzYXBpID4+PSAyOwogCQlwdGVpID4+PSAxOwogCQlpZiAocHNhcGkgIT0gbDItPnNhcGkpIHsKLQkJCS8qIG5vdCBvdXIgYnVzc2luZXNzICovCisJCQkvKiBub3Qgb3VyIGJ1c2luZXNzICovCiAJCQlpZiAoKmRlYnVnICYgREVCVUdfTDIpCiAJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBzYXBpICVkLyVkIG1pc21hdGNoXG4iLAogCQkJCQlfX2Z1bmNfXywgcHNhcGksIGwyLT5zYXBpKTsKQEAgLTE4NzIsNyArMTg3Miw3IEBACiAJCQlyZXR1cm4gMDsKIAkJfQogCQlpZiAoKHB0ZWkgIT0gbDItPnRlaSkgJiYgKHB0ZWkgIT0gR1JPVVBfVEVJKSkgewotCQkJLyogbm90IG91ciBidXNzaW5lc3MgKi8KKwkJCS8qIG5vdCBvdXIgYnVzaW5lc3MgKi8KIAkJCWlmICgqZGVidWcgJiBERUJVR19MMikKIAkJCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IHRlaSAlZC8lZCBtaXNtYXRjaFxuIiwKIAkJCQkJX19mdW5jX18sIHB0ZWksIGwyLT50ZWkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jIGIvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jCmluZGV4IGFmYWMzMzguLjViZjYzYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLXBjYTk1MzIuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1wY2E5NTMyLmMKQEAgLTU4LDcgKzU4LDcgQEAKIAkuaWRfdGFibGUgPSBwY2E5NTMyX2lkLAogfTsKIAotLyogV2UgaGF2ZSB0d28gcHdtL2JsaW5rZXJzLCBidXQgMTYgcG9zc2libGUgbGVkcyB0byBkcml2ZS4gQWRkaXRpb25hbHksCisvKiBXZSBoYXZlIHR3byBwd20vYmxpbmtlcnMsIGJ1dCAxNiBwb3NzaWJsZSBsZWRzIHRvIGRyaXZlLiBBZGRpdGlvbmFsbHksCiAgKiB0aGUgY2xldmVyIFRoZWN1cyBwZW9wbGUgYXJlIHVzaW5nIG9uZSBwd20gdG8gZHJpdmUgdGhlIGJlZXBlci4gU28sCiAgKiBhcyBhIGNvbXByb21pc2Ugd2UgYXZlcmFnZSBvbmUgcHdtIHRvIHRoZSB2YWx1ZXMgcmVxdWVzdGVkIGJ5IGFsbAogICogbGVkcyB0aGF0IGFyZSBub3QgT04vT0ZGLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtd204MzUwLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy13bTgzNTAuYwppbmRleCBhMDQ1MjMyLi5mMTRlZGQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy13bTgzNTAuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy13bTgzNTAuYwpAQCAtMjE1LDEzICsyMTUsMTMgQEAKIAogCWlzaW5rID0gcmVndWxhdG9yX2dldCgmcGRldi0+ZGV2LCAibGVkX2lzaW5rIik7CiAJaWYgKElTX0VSUihpc2luaykpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FudCBnZXQgSVNJTktcbiIsIF9fZnVuY19fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FuJ3QgZ2V0IElTSU5LXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiBQVFJfRVJSKGlzaW5rKTsKIAl9CiAKIAlkY2RjID0gcmVndWxhdG9yX2dldCgmcGRldi0+ZGV2LCAibGVkX3ZjYyIpOwogCWlmIChJU19FUlIoZGNkYykpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FudCBnZXQgRENEQ1xuIiwgX19mdW5jX18pOworCQlwcmludGsoS0VSTl9FUlIgIiVzOiBjYW4ndCBnZXQgRENEQ1xuIiwgX19mdW5jX18pOwogCQlyZXQgPSBQVFJfRVJSKGRjZGMpOwogCQlnb3RvIGVycl9pc2luazsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfdXNlci5jIGIvZHJpdmVycy9sZ3Vlc3QvbGd1ZXN0X3VzZXIuYwppbmRleCAzYzc4MWNkLi45NDhjNTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfdXNlci5jCisrKyBiL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF91c2VyLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogCXJjdV9hc3NpZ25fcG9pbnRlcihsZy0+ZXZlbnRmZHMsIG5ldyk7CiAKIAkvKgotCSAqIFdlJ3JlIG5vdCBpbiBhIGJpZyBodXJyeS4gIFdhaXQgdW50aWwgbm9vbmUncyBsb29raW5nIGF0IG9sZAorCSAqIFdlJ3JlIG5vdCBpbiBhIGJpZyBodXJyeS4gIFdhaXQgdW50aWwgbm8gb25lJ3MgbG9va2luZyBhdCBvbGQKIAkgKiB2ZXJzaW9uLCB0aGVuIGZyZWUgaXQuCiAJICovCiAJc3luY2hyb25pemVfcmN1KCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC9hZGJoaWQuYyBiL2RyaXZlcnMvbWFjaW50b3NoL2FkYmhpZC5jCmluZGV4IDUzOTZjNjcuLjA5ZDcyYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL2FkYmhpZC5jCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL2FkYmhpZC5jCkBAIC0zMjgsNyArMzI4LDcgQEAKIAlzd2l0Y2ggKGtleWNvZGUpIHsKIAljYXNlIEFEQl9LRVlfQ0FQU0xPQ0s6CiAJCWlmICghcmVzdG9yZV9jYXBzbG9ja19ldmVudHMpIHsKLQkJCS8qIEdlbmVyYXRlIGRvd24vdXAgZXZlbnRzIGZvciBDYXBzTG9jayBldmVyeXRpbWUuICovCisJCQkvKiBHZW5lcmF0ZSBkb3duL3VwIGV2ZW50cyBmb3IgQ2Fwc0xvY2sgZXZlcnkgdGltZS4gKi8KIAkJCWlucHV0X3JlcG9ydF9rZXkoYWhpZC0+aW5wdXQsIEtFWV9DQVBTTE9DSywgMSk7CiAJCQlpbnB1dF9zeW5jKGFoaWQtPmlucHV0KTsKIAkJCWlucHV0X3JlcG9ydF9rZXkoYWhpZC0+aW5wdXQsIEtFWV9DQVBTTE9DSywgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC9tYWNpby1hZGIuYyBiL2RyaXZlcnMvbWFjaW50b3NoL21hY2lvLWFkYi5jCmluZGV4IGJkNmRhN2EuLmI2ZWY4ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL21hY2lvLWFkYi5jCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL21hY2lvLWFkYi5jCkBAIC0xNDcsNyArMTQ3LDcgQEAKIAogCS8qIEhybS4uLiB3ZSBtYXkgd2FudCB0byBub3QgbG9jayBpbnRlcnJ1cHRzIGZvciBzbwogCSAqIGxvbmcgLi4uIG9oIHdlbGwsIHdobyB1c2VzIHRoYXQgY2hpcCBhbnl3YXkgPyA6KQotCSAqIFRoYXQgZnVuY3Rpb24gd2lsbCBiZSBzZWxkb21seSB1c2VkIGR1cmluZyBib290CisJICogVGhhdCBmdW5jdGlvbiB3aWxsIGJlIHNlbGRvbSB1c2VkIGR1cmluZyBib290CiAJICogb24gcmFyZSBtYWNoaW5lcywgc28uLi4KIAkgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmbWFjaW9fbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fYWR0NzQ2eC5jIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fYWR0NzQ2eC5jCmluZGV4IDllM2UyYzUuLjAyMzY3MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX2FkdDc0NnguYworKysgYi9kcml2ZXJzL21hY2ludG9zaC90aGVybV9hZHQ3NDZ4LmMKQEAgLTY2Miw3ICs2NjIsNyBAQAogCQllcnIgfD0gZGV2aWNlX2NyZWF0ZV9maWxlKCZvZl9kZXYtPmRldiwgJmRldl9hdHRyX3NlbnNvcjJfZmFuX3NwZWVkKTsKIAlpZiAoZXJyKQogCQlwcmludGsoS0VSTl9XQVJOSU5HCi0JCQkiRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wZXJ0YXVyZSBhdHRyaWJ1dGUgZmlsZShzKS5cbiIpOworCQkJIkZhaWxlZCB0byBjcmVhdGUgdGVtcGVyYXR1cmUgYXR0cmlidXRlIGZpbGUocykuXG4iKTsKIH0KIAogc3RhdGljIHZvaWQgdGhlcm1vc3RhdF9yZW1vdmVfZmlsZXModm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3BtNzIuYyBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3BtNzIuYwppbmRleCBjOTg3MDMzLi5iYjhiNzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC90aGVybV9wbTcyLmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fcG03Mi5jCkBAIC05MSw3ICs5MSw3IEBACiAgKgogICogIE1hci4gMTAsIDIwMDUgOiAxLjIKICAqCS0gQWRkIGJhc2ljIHN1cHBvcnQgZm9yIFhzZXJ2ZSBHNQotICoJLSBSZXRyZWl2ZSBwdW1wcyBtaW4vbWF4IGZyb20gRUVQUk9NIGltYWdlIGluIGRldmljZS10cmVlIChicm9rZW4pCisgKgktIFJldHJpZXZlIHB1bXBzIG1pbi9tYXggZnJvbSBFRVBST00gaW1hZ2UgaW4gZGV2aWNlLXRyZWUgKGJyb2tlbikKICAqCS0gVXNlIG1pbi9tYXggbWFjcm9zIGhlcmUgb3IgdGhlcmUKICAqCS0gTGF0ZXN0IGRhcndpbiB1cGRhdGVkIFUzSCBtaW4gZmFuIHNwZWVkIHRvIDIwJSBQV00KICAqCkBAIC0zNzUsNyArMzc1LDcgQEAKIAkJcmMgPSBpMmNfbWFzdGVyX3NlbmQoc3RhdGUtPm1vbml0b3IsIGJ1ZiwgMik7CiAJCWlmIChyYyA8PSAwKQogCQkJZ290byBlcnJvcjsKLQkJLyogV2FpdCBmb3IgY29udmVydGlvbiAqLworCQkvKiBXYWl0IGZvciBjb252ZXJzaW9uICovCiAJCW1zbGVlcCgxKTsKIAkJLyogU3dpdGNoIHRvIGRhdGEgcmVnaXN0ZXIgKi8KIAkJYnVmWzBdID0gNDsKQEAgLTExOTIsNyArMTE5Miw3IEBACiAJCWVyciB8PSBkZXZpY2VfY3JlYXRlX2ZpbGUoJm9mX2Rldi0+ZGV2LCAmZGV2X2F0dHJfY3B1MV9pbnRha2VfZmFuX3JwbSk7CiAJfQogCWlmIChlcnIpCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgIkZhaWxlZCB0byBjcmVhdGUgc29tZSBvZiB0aGUgYXRyaWJ1dGUiCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIkZhaWxlZCB0byBjcmVhdGUgc29tZSBvZiB0aGUgYXR0cmlidXRlIgogCQkJImZpbGVzIGZvciBDUFUgJWRcbiIsIGluZGV4KTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fd2luZHR1bm5lbC5jIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fd2luZHR1bm5lbC5jCmluZGV4IGQzNzgxOWYuLjQ2YzRlOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuYworKysgYi9kcml2ZXJzL21hY2ludG9zaC90aGVybV93aW5kdHVubmVsLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KICNpbmNsdWRlIDxhc20vbWFjaW8uaD4KIAotI2RlZmluZSBMT0dfVEVNUAkJMAkJCS8qIGNvbnRpbm91c2x5IGxvZyB0ZW1wZXJhdHVyZSAqLworI2RlZmluZSBMT0dfVEVNUAkJMAkJCS8qIGNvbnRpbnVvdXNseSBsb2cgdGVtcGVyYXR1cmUgKi8KIAogc3RhdGljIHN0cnVjdCB7CiAJdm9sYXRpbGUgaW50CQlydW5uaW5nOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iaXRtYXAuaCBiL2RyaXZlcnMvbWQvYml0bWFwLmgKaW5kZXggOTMxYTdhNy4uZDBhZWFmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iaXRtYXAuaAorKysgYi9kcml2ZXJzL21kL2JpdG1hcC5oCkBAIC00NSw3ICs0NSw3IEBACiAgKgogICogVGhlIGNvdW50ZXIgY291bnRzIHBlbmRpbmcgd3JpdGUgcmVxdWVzdHMsIHBsdXMgdGhlIG9uLWRpc2sgYml0LgogICogV2hlbiB0aGUgY291bnRlciBpcyAnMScgYW5kIHRoZSByZXN5bmMgYml0cyBhcmUgY2xlYXIsIHRoZSBvbi1kaXNrCi0gKiBiaXQgY2FuIGJlIGNsZWFyZWQgYXN3ZWxsLCB0aHVzIHNldHRpbmcgdGhlIGNvdW50ZXIgdG8gMC4KKyAqIGJpdCBjYW4gYmUgY2xlYXJlZCBhcyB3ZWxsLCB0aHVzIHNldHRpbmcgdGhlIGNvdW50ZXIgdG8gMC4KICAqIFdoZW4gd2Ugc2V0IGEgYml0LCBvciBpbiB0aGUgY291bnRlciAodG8gc3RhcnQgYSB3cml0ZSksIGlmIHRoZSBmaWVsZHMgaXMKICAqIDAsIHdlIGZpcnN0IHNldCB0aGUgZGlzayBiaXQgYW5kIHNldCB0aGUgY291bnRlciB0byAxLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYyBiL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwppbmRleCBkYWQwMTFhLi43NzcxZWQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKKysrIGIvZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jCkBAIC00MTksNyArNDE5LDcgQEAKIAkvKgogCSAqIFBvc3NpYmxlIGNhc2VzOgogCSAqICAgMSkgRE1fUkhfRElSVFkKLQkgKiAgIDIpIERNX1JIX05PU1lOQzogd2FzIGRpcnR5LCBvdGhlciBwcmVjZWVkaW5nIHdyaXRlcyBmYWlsZWQKKwkgKiAgIDIpIERNX1JIX05PU1lOQzogd2FzIGRpcnR5LCBvdGhlciBwcmVjZWRpbmcgd3JpdGVzIGZhaWxlZAogCSAqICAgMykgRE1fUkhfUkVDT1ZFUklORzogZmx1c2hpbmcgcGVuZGluZyB3cml0ZXMKIAkgKiBFaXRoZXIgY2FzZSwgdGhlIHJlZ2lvbiBzaG91bGQgaGF2ZSBub3QgYmVlbiBjb25uZWN0ZWQgdG8gbGlzdC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZmF1bHR5LmMgYi9kcml2ZXJzL21kL2ZhdWx0eS5jCmluZGV4IDMzOWZkYzYuLjIzMDc4ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZmF1bHR5LmMKKysrIGIvZHJpdmVycy9tZC9mYXVsdHkuYwpAQCAtMzAsNyArMzAsNyBAQAogICoKICAqIERpZmZlcmVudCBtb2RlcyBjYW4gYmUgYWN0aXZlIGF0IGEgdGltZSwgYnV0IG9ubHkKICAqIG9uZSBjYW4gYmUgc2V0IGF0IGFycmF5IGNyZWF0aW9uLiAgT3RoZXJzIGNhbiBiZSBhZGRlZCBsYXRlci4KLSAqIEEgbW9kZSBjYW4gYmUgb25lLXNob3Qgb3IgcmVjdXJyZW50IHdpdGggdGhlIHJlY3VycmFuY2UgYmVpbmcKKyAqIEEgbW9kZSBjYW4gYmUgb25lLXNob3Qgb3IgcmVjdXJyZW50IHdpdGggdGhlIHJlY3VycmVuY2UgYmVpbmcKICAqIG9uY2UgaW4gZXZlcnkgTiByZXF1ZXN0cy4KICAqIFRoZSBib3R0b20gNSBiaXRzIG9mIHRoZSAibGF5b3V0IiBpbmRpY2F0ZSB0aGUgbW9kZS4gIFRoZQogICogcmVtYWluZGVyIGluZGljYXRlIGEgcGVyaW9kLCBvciAwIGZvciBvbmUtc2hvdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuYyBiL2RyaXZlcnMvbWQvbWQuYwppbmRleCA4YjY2ZTA0Li5iMTJiMzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL21kLmMKKysrIGIvZHJpdmVycy9tZC9tZC5jCkBAIC02MjY2LDcgKzYyNjYsNyBAQAogCSAqIHJ0IGlzIGEgc2VjdG9yX3QsIHNvIGNvdWxkIGJlIDMyYml0IG9yIDY0Yml0LgogCSAqIFNvIHdlIGRpdmlkZSBiZWZvcmUgbXVsdGlwbHkgaW4gY2FzZSBpdCBpcyAzMmJpdCBhbmQgY2xvc2UKIAkgKiB0byB0aGUgbGltaXQuCi0JICogV2Ugc2NhbGUgdGhlIGRpdmlzb3IgKGRiKSBieSAzMiB0byBhdm9pZCBsb29zaW5nIHByZWNpc2lvbgorCSAqIFdlIHNjYWxlIHRoZSBkaXZpc29yIChkYikgYnkgMzIgdG8gYXZvaWQgbG9zaW5nIHByZWNpc2lvbgogCSAqIG5lYXIgdGhlIGVuZCBvZiByZXN5bmMgd2hlbiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBzZWN0b3JzCiAJICogaXMgY2xvc2UgdG8gJ2RiJy4KIAkgKiBXZSB0aGVuIGRpdmlkZSBydCBieSAzMiBhZnRlciBtdWx0aXBseWluZyBieSBkYiB0byBjb21wZW5zYXRlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5oIGIvZHJpdmVycy9tZC9tZC5oCmluZGV4IDEyMjE1ZDQuLjUyYjQwNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbWQuaAorKysgYi9kcml2ZXJzL21kL21kLmgKQEAgLTk0LDcgKzk0LDcgQEAKICNkZWZpbmUJSW5fc3luYwkJMgkJLyogZGV2aWNlIGlzIGluX3N5bmMgd2l0aCByZXN0IG9mIGFycmF5ICovCiAjZGVmaW5lCVdyaXRlTW9zdGx5CTQJCS8qIEF2b2lkIHJlYWRpbmcgaWYgYXQgYWxsIHBvc3NpYmxlICovCiAjZGVmaW5lCUF1dG9EZXRlY3RlZAk3CQkvKiBhZGRlZCBieSBhdXRvLWRldGVjdCAqLwotI2RlZmluZSBCbG9ja2VkCQk4CQkvKiBBbiBlcnJvciBvY2N1cmVkIG9uIGFuIGV4dGVybmFsbHkKKyNkZWZpbmUgQmxvY2tlZAkJOAkJLyogQW4gZXJyb3Igb2NjdXJyZWQgb24gYW4gZXh0ZXJuYWxseQogCQkJCQkgKiBtYW5hZ2VkIGFycmF5LCBkb24ndCBhbGxvdyB3cml0ZXMKIAkJCQkJICogdW50aWwgaXQgaXMgY2xlYXJlZCAqLwogCXdhaXRfcXVldWVfaGVhZF90IGJsb2NrZWRfd2FpdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5jCmluZGV4IGY3YjYyMzcuLjJkYTgzZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDEwLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwpAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBSQUlELTEwIHN1cHBvcnQgZm9yIG1kLgogICoKLSAqIEJhc2Ugb24gY29kZSBpbiByYWlkMS5jLiAgU2VlIHJhaWQxLmMgZm9yIGZ1dGhlciBjb3B5cmlnaHQgaW5mb3JtYXRpb24uCisgKiBCYXNlIG9uIGNvZGUgaW4gcmFpZDEuYy4gIFNlZSByYWlkMS5jIGZvciBmdXJ0aGVyIGNvcHlyaWdodCBpbmZvcm1hdGlvbi4KICAqCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTM0MCwxNCArMzQwLDE0IEBACiAKIC8qCiAgKiBSQUlEMTAgbGF5b3V0IG1hbmFnZXIKLSAqIEFzd2VsbCBhcyB0aGUgY2h1bmtzaXplIGFuZCByYWlkX2Rpc2tzIGNvdW50LCB0aGVyZSBhcmUgdHdvCisgKiBBcyB3ZWxsIGFzIHRoZSBjaHVua3NpemUgYW5kIHJhaWRfZGlza3MgY291bnQsIHRoZXJlIGFyZSB0d28KICAqIHBhcmFtZXRlcnM6IG5lYXJfY29waWVzIGFuZCBmYXJfY29waWVzLgogICogbmVhcl9jb3BpZXMgKiBmYXJfY29waWVzIG11c3QgYmUgPD0gcmFpZF9kaXNrcy4KICAqIE5vcm1hbGx5IG9uZSBvZiB0aGVzZSB3aWxsIGJlIDEuCiAgKiBJZiBib3RoIGFyZSAxLCB3ZSBnZXQgcmFpZDAuCiAgKiBJZiBuZWFyX2NvcGllcyA9PSByYWlkX2Rpc2tzLCB3ZSBnZXQgcmFpZDEuCiAgKgotICogQ2h1bmtzIGFyZSBsYXllZCBvdXQgaW4gcmFpZDAgc3R5bGUgd2l0aCBuZWFyX2NvcGllcyBjb3BpZXMgb2YgdGhlCisgKiBDaHVua3MgYXJlIGxhaWQgb3V0IGluIHJhaWQwIHN0eWxlIHdpdGggbmVhcl9jb3BpZXMgY29waWVzIG9mIHRoZQogICogZmlyc3QgY2h1bmssIGZvbGxvd2VkIGJ5IG5lYXJfY29waWVzIGNvcGllcyBvZiB0aGUgbmV4dCBjaHVuayBhbmQKICAqIHNvIG9uLgogICogSWYgZmFyX2NvcGllcyA+IDEsIHRoZW4gYWZ0ZXIgMS9mYXJfY29waWVzIG9mIHRoZSBhcnJheSBoYXMgYmVlbiBhc3NpZ25lZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMTAuaCBiL2RyaXZlcnMvbWQvcmFpZDEwLmgKaW5kZXggMjMxNmFjMi4uOTQ0YjExMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9yYWlkMTAuaAorKysgYi9kcml2ZXJzL21kL3JhaWQxMC5oCkBAIC0xNyw4ICsxNyw4IEBACiAJc3BpbmxvY2tfdAkJZGV2aWNlX2xvY2s7CiAKIAkvKiBnZW9tZXRyeSAqLwotCWludAkJCW5lYXJfY29waWVzOyAgLyogbnVtYmVyIG9mIGNvcGllcyBsYXllZCBvdXQgcmFpZDAgc3R5bGUgKi8KLQlpbnQgCQkJZmFyX2NvcGllczsgICAvKiBudW1iZXIgb2YgY29waWVzIGxheWVkIG91dAorCWludAkJCW5lYXJfY29waWVzOyAgLyogbnVtYmVyIG9mIGNvcGllcyBsYWlkIG91dCByYWlkMCBzdHlsZSAqLworCWludCAJCQlmYXJfY29waWVzOyAgIC8qIG51bWJlciBvZiBjb3BpZXMgbGFpZCBvdXQKIAkJCQkJICAgICAgICogYXQgbGFyZ2Ugc3RyaWRlcyBhY3Jvc3MgZHJpdmVzCiAJCQkJCSAgICAgICAqLwogCWludAkJCWZhcl9vZmZzZXQ7ICAgLyogZmFyX2NvcGllcyBhcmUgb2Zmc2V0IGJ5IDEgc3RyaXBlCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2kyYy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9pMmMuYwppbmRleCA3NGVlMTcyLi5iMmJhOWRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2kyYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3NhYTcxNDZfaTJjLmMKQEAgLTE2MSw3ICsxNjEsNyBAQAogCQltc2xlZXAoU0FBNzE0Nl9JMkNfREVMQVkpOwogCX0KIAotCS8qIGlmIGFueSBlcnJvciBpcyBzdGlsbCBwcmVzZW50LCBhIGZhdGFsIGVycm9yIGhhcyBvY2N1cmVkIC4uLiAqLworCS8qIGlmIGFueSBlcnJvciBpcyBzdGlsbCBwcmVzZW50LCBhIGZhdGFsIGVycm9yIGhhcyBvY2N1cnJlZCAuLi4gKi8KIAlzdGF0dXMgPSBzYWE3MTQ2X2kyY19zdGF0dXMoZGV2KTsKIAlpZiAoIGRldi0+aTJjX2JpdHJhdGUgIT0gc3RhdHVzICkgewogCQlERUJfSTJDKCgiZmF0YWwgZXJyb3IuIHN0YXR1czoweCUwOHhcbiIsc3RhdHVzKSk7CkBAIC0zMjYsOSArMzI2LDkgQEAKIAkJCWlmICggMCAhPSBlcnIpIHsKIAkJCQkvKiB0aGlzIG9uZSBpcyB1bnNhdGlzZnlpbmc6IHNvbWUgaTJjIHNsYXZlcyBvbiBzb21lCiAJCQkJICAgZHZiIGNhcmRzIGRvbid0IGFja25vd2xlZGdlIGNvcnJlY3RseSwgc28gdGhlIHNhYTcxNDYKLQkJCQkgICB0aGlua3MgdGhhdCBhbiBhZGRyZXNzIGVycm9yIG9jY3VyZWQuIGluIHRoYXQgY2FzZSwgdGhlCisJCQkJICAgdGhpbmtzIHRoYXQgYW4gYWRkcmVzcyBlcnJvciBvY2N1cnJlZC4gaW4gdGhhdCBjYXNlLCB0aGUKIAkJCQkgICB0cmFuc2FjdGlvbiBzaG91bGQgYmUgcmV0cnlpbmcsIGV2ZW4gaWYgYW4gYWRkcmVzcyBlcnJvcgotCQkJCSAgIG9jY3VyZWQuIGFuYWxvZyBzYWE3MTQ2IGJhc2VkIGNhcmRzIGV4dGVuc2l2ZWx5IHJlbHkgb24KKwkJCQkgICBvY2N1cnJlZC4gYW5hbG9nIHNhYTcxNDYgYmFzZWQgY2FyZHMgZXh0ZW5zaXZlbHkgcmVseSBvbgogCQkJCSAgIGkyYyBhZGRyZXNzIHByb2JpbmcsIGhvd2V2ZXIsIGFuZCBhZGRyZXNzIGVycm9ycyBpbmRpY2F0ZSB0aGF0IGEKIAkJCQkgICBkZXZpY2UgaXMgcmVhbGx5ICpub3QqIHRoZXJlLiByZXRyeWluZyBpbiB0aGF0IGNhc2UKIAkJCQkgICBpbmNyZWFzZXMgdGhlIHRpbWUgdGhlIGRldmljZSBuZWVkcyB0byBwcm9iZSBncmVhdGx5LCBzbwpAQCAtMzY1LDcgKzM2NSw3IEBACiAJREVCX0kyQygoInRyYW5zbWlzc2lvbiBzdWNjZXNzZnVsLiAobXNnOiVkKS5cbiIsZXJyKSk7CiBvdXQ6CiAJLyogYW5vdGhlciBidWcgaW4gcmV2aXNpb24gMDogdGhlIGkyYy1yZWdpc3RlcnMgZ2V0IHVwbG9hZGVkIHJhbmRvbWx5IGJ5IG90aGVyCi0JICAgdXBsb2Fkcywgc28gd2UgYmV0dGVyIGNsZWFyIHRoZW0gb3V0IGJlZm9yZSBjb250aW51ZWluZyAqLworCSAgIHVwbG9hZHMsIHNvIHdlIGJldHRlciBjbGVhciB0aGVtIG91dCBiZWZvcmUgY29udGludWluZyAqLwogCWlmKCAwID09IGRldi0+cmV2aXNpb24gKSB7CiAJCV9fbGUzMiB6ZXJvID0gMDsKIAkJc2FhNzE0Nl9pMmNfcmVzZXQoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy9teGw1MDA1cy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKaW5kZXggNjA1ZTI4Yi4uMGQ2ZTA5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL214bDUwMDVzLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogLyogTVhMNTAwNSBUdW5lciBSZWdpc3RlciBTdHJ1Y3QgKi8KIHN0cnVjdCBUdW5lclJlZyB7CiAJdTE2IFJlZ19OdW07CS8qIFR1bmVyIFJlZ2lzdGVyIEFkZHJlc3MgKi8KLQl1MTYgUmVnX1ZhbDsJLyogQ3VycmVudCBzdyBwcm9ncmFtbWVkIHZhbHVlIHdhaXRpbmcgdG8gYmUgd3JpdGVuICovCisJdTE2IFJlZ19WYWw7CS8qIEN1cnJlbnQgc3cgcHJvZ3JhbW1lZCB2YWx1ZSB3YWl0aW5nIHRvIGJlIHdyaXR0ZW4gKi8KIH07CiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3RkYTE4MjcxLmggYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdGRhMTgyNzEuaAppbmRleCAzYWJiMjIxLi41MGNmYThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdGRhMTgyNzEuaAorKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvdGRhMTgyNzEuaApAQCAtOTgsNyArOTgsNyBAQAogCS8qIG91dHB1dCBvcHRpb25zIHRoYXQgY2FuIGJlIGRpc2FibGVkICovCiAJZW51bSB0ZGExODI3MV9vdXRwdXRfb3B0aW9ucyBvdXRwdXRfb3B0OwogCi0JLyogc29tZSBpMmMgcHJvdmlkZXJzIGNhbnQgd3JpdGUgYWxsIDM5IHJlZ2lzdGVycyBhdCBvbmNlICovCisJLyogc29tZSBpMmMgcHJvdmlkZXJzIGNhbid0IHdyaXRlIGFsbCAzOSByZWdpc3RlcnMgYXQgb25jZSAqLwogCWVudW0gdGRhMTgyNzFfc21hbGxfaTJjIHNtYWxsX2kyYzsKIAogCS8qIGZvcmNlIHJmIHRyYWNraW5nIGZpbHRlciBjYWxpYnJhdGlvbiBvbiBzdGFydHVwICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9iMmMyL2ZsZXhjb3AtcGNpLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9iMmMyL2ZsZXhjb3AtcGNpLmMKaW5kZXggMjI3YzAyMC4uOTU1MjU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvYjJjMi9mbGV4Y29wLXBjaS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2IyYzIvZmxleGNvcC1wY2kuYwpAQCAtNTgsNyArNTgsNyBAQAogCiAJaW50IGFjdGl2ZV9kbWExX2FkZHI7IC8qIDAgPSBhZGRyMCBvZiBkbWExOyAxID0gYWRkcjEgb2YgZG1hMSAqLwogCXUzMiBsYXN0X2RtYTFfY3VyX3BvczsKLQkvKiBwb3NpdGlvbiBvZiB0aGUgcG9pbnRlciBsYXN0IHRpbWUgdGhlIHRpbWVyL3BhY2tldCBpcnEgb2NjdXJlZCAqLworCS8qIHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyIGxhc3QgdGltZSB0aGUgdGltZXIvcGFja2V0IGlycSBvY2N1cnJlZCAqLwogCWludCBjb3VudDsKIAlpbnQgY291bnRfcHJldjsKIAlpbnQgc3RyZWFtX3Byb2JsZW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9kdmItYnQ4eHguYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2J0OHh4L2R2Yi1idDh4eC5jCmluZGV4IDc4ZmM0NjkuLjFlMTEwNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2J0OHh4L2R2Yi1idDh4eC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2J0OHh4L2R2Yi1idDh4eC5jCkBAIC00MjcsMTAgKzQyNywxMCBAQAogCXN0cnVjdCBkdmJfYnQ4eHhfY2FyZCAqYnQgPSBmZS0+ZHZiLT5wcml2OwogCiAJLyogUkVTRVQgREVWSUNFCi0JICogcmVzZXQgaXMgY29udHJvbGVkIGJ5IEdQSU8tMAorCSAqIHJlc2V0IGlzIGNvbnRyb2xsZWQgYnkgR1BJTy0wCiAJICogd2hlbiBzZXQgdG8gMCBjYXVzZXMgcmVzZXQgYW5kIHdoZW4gdG8gMSBmb3Igbm9ybWFsIG9wCiAJICogbXVzdCByZW1haW4gcmVzZXQgZm9yIDEyOCBjbG9jayBjeWNsZXMgb24gYSA1ME1oeiBjbG9jawotCSAqIGFsc28gUFJNMSBQUk0yICYgUFJNNCBhcmUgY29udHJvbGVkIGJ5IEdQSU8tMSxHUElPLTIgJiBHUElPLTQKKwkgKiBhbHNvIFBSTTEgUFJNMiAmIFBSTTQgYXJlIGNvbnRyb2xsZWQgYnkgR1BJTy0xLEdQSU8tMiAmIEdQSU8tNAogCSAqIFdlIGFzc3VtZSB0aGF0IHRoZSByZXNldCBoYXMgYmUgaGVsZCBsb3cgbG9uZyBlbm91Z2ggb3Igd2UKIAkgKiBoYXZlIGJlZW4gcmVzZXQgYnkgYSBwb3dlciBvbi4gIFdoZW4gdGhlIGRyaXZlciBpcyB1bmxvYWRlZAogCSAqIHJlc2V0IHNldCB0byAwIHNvIGlmIHJlbG9hZGVkIHdlIGhhdmUgYmVlbiByZXNldC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmMKaW5kZXggY2FkNjYzNC4uMzFlMmMwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLWNvcmUvZHZiX2Zyb250ZW5kLmMKQEAgLTE2MzgsNyArMTYzOCw3IEBACiAJY2FzZSBGRV9SRUFEX1NUQVRVUzogewogCQlmZV9zdGF0dXNfdCogc3RhdHVzID0gcGFyZzsKIAotCQkvKiBpZiByZXR1bmUgd2FzIHJlcXVlc3RlZCBidXQgaGFzbid0IG9jY3VyZWQgeWV0LCBwcmV2ZW50CisJCS8qIGlmIHJldHVuZSB3YXMgcmVxdWVzdGVkIGJ1dCBoYXNuJ3Qgb2NjdXJyZWQgeWV0LCBwcmV2ZW50CiAJCSAqIHRoYXQgdXNlciBnZXQgc2lnbmFsIHN0YXRlIGZyb20gcHJldmlvdXMgdHVuaW5nICovCiAJCWlmIChmZXByaXYtPnN0YXRlID09IEZFU1RBVEVfUkVUVU5FIHx8CiAJCSAgICBmZXByaXYtPnN0YXRlID09IEZFU1RBVEVfRVJST1IpIHsKQEAgLTE3MjksNyArMTcyOSw3IEBACiAJCQkgKiBEaXNoIG5ldHdvcmsgbGVnYWN5IHN3aXRjaGVzIChhcyB1c2VkIGJ5IERpc2g1MDApCiAJCQkgKiBhcmUgY29udHJvbGxlZCBieSBzZW5kaW5nIDktYml0IGNvbW1hbmQgd29yZHMKIAkJCSAqIHNwYWNlZCA4bXNlYyBhcGFydC4KLQkJCSAqIHRoZSBhY3R1YWwgY29tbWFuZCB3b3JkIGlzIHN3aXRjaC9wb3J0IGRlcGVuZGFudAorCQkJICogdGhlIGFjdHVhbCBjb21tYW5kIHdvcmQgaXMgc3dpdGNoL3BvcnQgZGVwZW5kZW50CiAJCQkgKiBzbyBpdCBpcyB1cCB0byB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHRvIHNlbmQKIAkJCSAqIHRoZSByaWdodCBjb21tYW5kLgogCQkJICogVGhlIGNvbW1hbmQgbXVzdCBhbHdheXMgc3RhcnQgd2l0aCBhICcwJyBhZnRlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9hZjkwMDUtZmUuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvYWY5MDA1LWZlLmMKaW5kZXggMTk5ZWNlMC4uNmFkOTQ3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvYWY5MDA1LWZlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9hZjkwMDUtZmUuYwpAQCAtNTgwLDcgKzU4MCw3IEBACiAJCU5TX2NvZWZmMl84ayA9IDB4NzI0OTI1OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQllcnIoIkludmFsaWQgYmFuZHdpdGggJWQuIiwgYncpOworCQllcnIoIkludmFsaWQgYmFuZHdpZHRoICVkLiIsIGJ3KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC03ODksNyArNzg5LDcgQEAKIAkJdGVtcCA9IDI7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWVycigiSW52YWxpZCBiYW5kd2l0aCAlZC4iLCBidyk7CisJCWVycigiSW52YWxpZCBiYW5kd2lkdGggJWQuIiwgYncpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAJcmV0dXJuIGFmOTAwNV93cml0ZV9yZWdpc3Rlcl9iaXRzKGQsIHhkX2dfcmVnX2J3LCByZWdfYndfcG9zLApAQCAtOTMwLDcgKzkzMCw3IEBACiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCS8qIGluaXQgb3RoZXIgcGFyYW1ldGVyczogcHJvZ3JhbSBjZm9lIGFuZCBzZWxlY3QgYmFuZHdpdGggKi8KKwkvKiBpbml0IG90aGVyIHBhcmFtZXRlcnM6IHByb2dyYW0gY2ZvZSBhbmQgc2VsZWN0IGJhbmR3aWR0aCAqLwogCWRlYl9pbmZvKCJwcm9ncmFtIGNmb2VcbiIpOwogCWlmICgocmV0ID0gYWY5MDA1X2ZlX3Byb2dyYW1fY2ZvZShzdGF0ZS0+ZCwgQkFORFdJRFRIXzZfTUhaKSkpCiAJCXJldHVybiByZXQ7CkBAIC0xMTY3LDcgKzExNjcsNyBAQAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQkvKiBzZWxlY3QgYmFuZHdpdGggKi8KKwkvKiBzZWxlY3QgYmFuZHdpZHRoICovCiAJZGViX2luZm8oInNlbGVjdCBiYW5kd2lkdGgiKTsKIAlyZXQgPSBhZjkwMDVfZmVfc2VsZWN0X2J3KHN0YXRlLT5kLCBmZXAtPnUub2ZkbS5iYW5kd2lkdGgpOwogCWlmIChyZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2ZyaWlvLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2ZyaWlvLmgKaW5kZXggYWY4ZDU1ZS4uMGY0NjFjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9mcmlpby5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvZnJpaW8uaApAQCAtMjAsNyArMjAsNyBAQAogICogICAgICAgICBGcm9udGVuZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXRlY2ggSkRWQlQtOTA1MDIKICAqICAgICAgICAgICAgICh0dW5lciBQTEw6ICAgICAgICAgICAgICAgICAgICAgICB0dWE2MDM0LCBJMkMgYWRkcjooMHhDMCA+PiAxKSkKICAqICAgICAgICAgICAgIChPRkRNIGRlbW9kdWxhdG9yOiAgICAgICAgICAgICAgICBUQzkwNTAyLCBJMkMgYWRkcjooMHgzMCA+PiAxKSkKLSAqICAgICAgICAgTEVEIHgzICgrTE5CKSBjb250cm9sbDogICAgICAgICAgICAgICBQSUMgMTZGNjc2CisgKiAgICAgICAgIExFRCB4MyAoK0xOQikgY29udHJvbDogICAgICAgICAgICAgICAgUElDIDE2RjY3NgogICogICAgICAgICBFRVBST006ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0QzA4CiAgKgogICogICAgICAgIChVU0Igc21hcnQgY2FyZCByZWFkZXI6ICAgICAgICAgICAgICAgIEFVOTUyMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvbG1lZG0wNC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9sbWVkbTA0LmMKaW5kZXggY2QyNmU3Yy4uZjJkYjAxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9sbWVkbTA0LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9sbWVkbTA0LmMKQEAgLTMyMSw3ICszMjEsNyBAQAogCWxtZV9pbnQtPmxtZV91cmItPnRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9OT19UUkFOU0ZFUl9ETUFfTUFQOwogCiAJdXNiX3N1Ym1pdF91cmIobG1lX2ludC0+bG1lX3VyYiwgR0ZQX0FUT01JQyk7Ci0JaW5mbygiSU5UIEludGVydXB0IFNlcnZpY2UgU3RhcnRlZCIpOworCWluZm8oIklOVCBJbnRlcnJ1cHQgU2VydmljZSBTdGFydGVkIik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQAogCQkJYnJlYWs7CiAJCX0KIAotCQlkZWJfaW5mbyg0LCAiSTJDIEZyb20gSW50ZXJ1cHQgTWVzc2FnZSBvdXQoJTAyeCkgaW4oJTAyeCkiLAorCQlkZWJfaW5mbyg0LCAiSTJDIEZyb20gSW50ZXJydXB0IE1lc3NhZ2Ugb3V0KCUwMngpIGluKCUwMngpIiwKIAkJCQl3YnVmWzNdLCByYnVmWzFdKTsKIAogCX0KQEAgLTYzMiwxMSArNjMyLDExIEBACiAJfQogCWQtPnJjX2RldiA9IHJjOwogCi0JLyogU3RhcnQgdGhlIEludGVydXB0ICovCisJLyogU3RhcnQgdGhlIEludGVycnVwdCAqLwogCXJldCA9IGxtZTI1MTBfaW50X3JlYWQoYWRhcCk7CiAJaWYgKHJldCA8IDApIHsKIAkJcmNfdW5yZWdpc3Rlcl9kZXZpY2UocmMpOwotCQlpbmZvKCJJTlQgVW5hYmxlIHRvIHN0YXJ0IEludGVydXB0IFNlcnZpY2UiKTsKKwkJaW5mbygiSU5UIFVuYWJsZSB0byBzdGFydCBJbnRlcnJ1cHQgU2VydmljZSIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKQEAgLTEwMDMsNyArMTAwMyw3IEBACiAJCXJldHVybiAtRU5PREVWOwogCX0KIAotCS8qIFN0YXJ0IHRoZSBJbnRlcnVwdCAmIFJlbW90ZSovCisJLyogU3RhcnQgdGhlIEludGVycnVwdCAmIFJlbW90ZSovCiAJcmV0ID0gbG1lMjUxMF9pbnRfc2VydmljZShhZGFwKTsKIAogCXJldHVybiByZXQ7CkBAIC0xMTcxLDcgKzExNzEsNyBAQAogCQl1c2Jfa2lsbF91cmIoc3QtPmxtZV91cmIpOwogCQl1c2JfZnJlZV9jb2hlcmVudChkLT51ZGV2LCA1MDAwLCBzdC0+YnVmZmVyLAogCQkJCSAgc3QtPmxtZV91cmItPnRyYW5zZmVyX2RtYSk7Ci0JCWluZm8oIkludGVydXB0IFNlcnZpY2UgU3RvcHBlZCIpOworCQlpbmZvKCJJbnRlcnJ1cHQgU2VydmljZSBTdG9wcGVkIik7CiAJCXJjX3VucmVnaXN0ZXJfZGV2aWNlKGQtPnJjX2Rldik7CiAJCWluZm8oIlJlbW90ZSBTdG9wcGVkIik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F0Ym04ODMwLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXRibTg4MzAuaAppbmRleCBlODE0OWYzLi4wMjQyNzMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXRibTg4MzAuaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXRibTg4MzAuaApAQCAtMzksNyArMzksNyBAQAogCS8qIHBhcmFsbGVsIG9yIHNlcmlhbCB0cmFuc3BvcnQgc3RyZWFtICovCiAJdTggc2VyaWFsX3RzOwogCi0JLyogdHJhbnNwb3J0IHN0cmVhbSBjbG9jayBvdXRwdXQgb25seSB3aGVuIHJlY2V2aW5nIHZhbGlkIHN0cmVhbSAqLworCS8qIHRyYW5zcG9ydCBzdHJlYW0gY2xvY2sgb3V0cHV0IG9ubHkgd2hlbiByZWNlaXZpbmcgdmFsaWQgc3RyZWFtICovCiAJdTggdHNfY2xrX2dhdGVkOwogCiAJLyogRGVjb2RlciBzYW1wbGUgVFMgZGF0YSBhdCByaXNpbmcgZWRnZSBvZiBjbG9jayAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F1ODUyMl9kaWcuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9hdTg1MjJfZGlnLmMKaW5kZXggNjVmNmEzNi4uMWQ1NzI5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F1ODUyMl9kaWcuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXU4NTIyX2RpZy5jCkBAIC02MzUsNyArNjM1LDcgQEAKIAlzdHJ1Y3QgYXU4NTIyX2xlZF9jb25maWcgKmxlZF9jb25maWcgPSBzdGF0ZS0+Y29uZmlnLT5sZWRfY2ZnOwogCXU4IHZhbDsKIAotCS8qIGJhaWwgb3V0IGlmIHdlIGNhbnQgY29udHJvbCBhbiBMRUQgKi8KKwkvKiBiYWlsIG91dCBpZiB3ZSBjYW4ndCBjb250cm9sIGFuIExFRCAqLwogCWlmICghbGVkX2NvbmZpZyB8fCAhbGVkX2NvbmZpZy0+Z3Bpb19vdXRwdXQgfHwKIAkgICAgIWxlZF9jb25maWctPmdwaW9fb3V0cHV0X2VuYWJsZSB8fCAhbGVkX2NvbmZpZy0+Z3Bpb19vdXRwdXRfZGlzYWJsZSkKIAkJcmV0dXJuIDA7CkBAIC02NjUsNyArNjY1LDcgQEAKIAlzdHJ1Y3QgYXU4NTIyX2xlZF9jb25maWcgKmxlZF9jb25maWcgPSBzdGF0ZS0+Y29uZmlnLT5sZWRfY2ZnOwogCWludCBpLCByZXQgPSAwOwogCi0JLyogYmFpbCBvdXQgaWYgd2UgY2FudCBjb250cm9sIGFuIExFRCAqLworCS8qIGJhaWwgb3V0IGlmIHdlIGNhbid0IGNvbnRyb2wgYW4gTEVEICovCiAJaWYgKCFsZWRfY29uZmlnIHx8ICFsZWRfY29uZmlnLT5ncGlvX2xlZHMgfHwKIAkgICAgIWxlZF9jb25maWctPm51bV9sZWRfc3RhdGVzIHx8ICFsZWRfY29uZmlnLT5sZWRfc3RhdGVzKQogCQlyZXR1cm4gMDsKQEAgLTgwMyw3ICs4MDMsNyBAQAogCWludCBsZWQ7CiAJdTE2IHN0cm9uZzsKIAotCS8qIGJhaWwgb3V0IGlmIHdlIGNhbnQgY29udHJvbCBhbiBMRUQgKi8KKwkvKiBiYWlsIG91dCBpZiB3ZSBjYW4ndCBjb250cm9sIGFuIExFRCAqLwogCWlmICghbGVkX2NvbmZpZykKIAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9iY20zNTEwLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYmNtMzUxMC5jCmluZGV4IGNmNWU1NzYuLjhhZmY1ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9iY20zNTEwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2JjbTM1MTAuYwpAQCAtMTU1LDcgKzE1NSw3IEBACiAJdW5zaWduZWQgbG9uZyB0OwogCiAvKiBDaGVjayBpZiBhbnkgcHJldmlvdXMgSEFCIHJlcXVlc3Qgc3RpbGwgbmVlZHMgdG8gYmUgc2VydmljZWQgYnkgdGhlCi0gKiBBcXVpc2l0aW9uIFByb2Nlc3NvciBiZWZvcmUgc2VuZGluZyBuZXcgcmVxdWVzdCAqLworICogQWNxdWlzaXRpb24gUHJvY2Vzc29yIGJlZm9yZSBzZW5kaW5nIG5ldyByZXF1ZXN0ICovCiAJaWYgKChyZXQgPSBiY20zNTEwX3JlYWRCKHN0LDB4YTgsJnYpKSA8IDApCiAJCXJldHVybiByZXQ7CiAJaWYgKHYuSEFCU1RBVF9hOC5IQUJSKSB7CkBAIC0zNjEsNyArMzYxLDcgQEAKIC8qIFNldCBkdXJhdGlvbiBvZiB0aGUgaW5pdGlhbCBzdGF0ZSBvZiBUVU5DVEwgPSAzLjM0IG1pY3JvIFNlYyAqLwogCWMuVFVOQ1RMX3N0YXRlID0gMHg0MDsKIAotLyogUFJFU0NBTEVSIERFVklERSBSQVRJTyB8IEJDMV8yXzNfNDsgKGJhbmQgc3dpdGNoKSwgMXN0b3NjIFJFRkVSRU5DRSBDT1VOVEVSIFJFRl9TMTIgYW5kIFJFRl9TMTEgKi8KKy8qIFBSRVNDQUxFUiBESVZJREUgUkFUSU8gfCBCQzFfMl8zXzQ7IChiYW5kIHN3aXRjaCksIDFzdG9zYyBSRUZFUkVOQ0UgQ09VTlRFUiBSRUZfUzEyIGFuZCBSRUZfUzExICovCiAJYy5jdGxfZGF0WzBdLmN0cmwuc2l6ZSA9IEJJVFNfODsKIAljLmN0bF9kYXRbMF0uZGF0YSAgICAgID0gMHg4MCB8IGJjOwogCkBAIC0zOTcsNyArMzk3LDcgQEAKIAljLmN0bF9kYXRbN10uY3RybC5jczAgID0gMTsKIAljLmN0bF9kYXRbN10uZGF0YSAgICAgID0gMHg0MDsKIAotLyogUFJFU0NBTEVSIERFVklERSBSQVRJTywgMm5kb3NjIFJFRkVSRU5DRSBDT1VOVEVSIFJFRl9TMTIgYW5kIFJFRl9TMTEgKi8KKy8qIFBSRVNDQUxFUiBESVZJREUgUkFUSU8sIDJuZG9zYyBSRUZFUkVOQ0UgQ09VTlRFUiBSRUZfUzEyIGFuZCBSRUZfUzExICovCiAJYy5jdGxfZGF0WzhdLmN0cmwuc2l6ZSA9IEJJVFNfODsKIAljLmN0bF9kYXRbOF0uZGF0YSAgICAgID0gMHg4MDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDAuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAwLmMKaW5kZXggNWZiYzBmYy4uMDE0MjIxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDAuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMC5jCkBAIC0xNzksNyArMTc5LDcgQEAKIAljeDIyNzAwX3dyaXRlcmVnIChzdGF0ZSwgMHgwNiwgdmFsKTsKIAogCWN4MjI3MDBfd3JpdGVyZWcgKHN0YXRlLCAweDA4LCAweDA0IHwgMHgwMik7ICAvKiB1c2UgdXNlciB0cHMgcGFyYW1ldGVycyAqLwotCWN4MjI3MDBfd3JpdGVyZWcgKHN0YXRlLCAweDA4LCAweDA0KTsgICAgICAgICAvKiByZXN0YXJ0IGFxdWlzaXRpb24gKi8KKwljeDIyNzAwX3dyaXRlcmVnIChzdGF0ZSwgMHgwOCwgMHgwNCk7ICAgICAgICAgLyogcmVzdGFydCBhY3F1aXNpdGlvbiAqLwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuYwppbmRleCBmZjZjNDk4Li4zMTM5NTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAyLmMKQEAgLTU1LDcgKzU1LDcgQEAKIAogLyogUmVnaXN0ZXIgdmFsdWVzIHRvIGluaXRpYWxpc2UgdGhlIGRlbW9kICovCiBzdGF0aWMgY29uc3QgdTggaW5pdF90YWJbXSA9IHsKLQkweDAwLCAweDAwLCAvKiBTdG9wIGFxdWlzaXRpb24gKi8KKwkweDAwLCAweDAwLCAvKiBTdG9wIGFjcXVpc2l0aW9uICovCiAJMHgwQiwgMHgwNiwKIAkweDA5LCAweDAxLAogCTB4MEQsIDB4NDEsCkBAIC0zMTAsNyArMzEwLDcgQEAKIAkJCSYgMHhmYyk7CiAJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MEMsCiAJCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKSAmIDB4QkYpIHwgMHg0MCk7Ci0JCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MDEpOyAvKiBCZWdpbiBhcXVpc2l0aW9uICovCisJCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MDEpOyAvKiBCZWdpbiBhY3F1aXNpdGlvbiAqLwogCQlkcHJpbnRrKCIlczogQXV0b2RldGVjdGluZ1xuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gMDsKIAl9CkBAIC00MjQsNyArNDI0LDcgQEAKIAljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBDLAogCQkoY3gyMjcwMl9yZWFkcmVnKHN0YXRlLCAweDBDKSAmIDB4QkYpIHwgMHg0MCk7CiAKLQkvKiBCZWdpbiBjaGFubmVsIGFxdWlzaXRpb24gKi8KKwkvKiBCZWdpbiBjaGFubmVsIGFjcXVpc2l0aW9uICovCiAJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMHgwMSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEwLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMC5jCmluZGV4IDdhMWE1YmMuLmJmOWM5OTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTAuYwpAQCAtNTQ0LDcgKzU0NCw3IEBACiAJY3gyNDExMF9zZXRfaW52ZXJzaW9uIChzdGF0ZSwgcC0+aW52ZXJzaW9uKTsKIAljeDI0MTEwX3NldF9mZWMgKHN0YXRlLCBwLT51LnFwc2suZmVjX2lubmVyKTsKIAljeDI0MTEwX3NldF9zeW1ib2xyYXRlIChzdGF0ZSwgcC0+dS5xcHNrLnN5bWJvbF9yYXRlKTsKLQljeDI0MTEwX3dyaXRlcmVnKHN0YXRlLDB4MDQsMHgwNSk7IC8qIHN0YXJ0IGFxdWlzaXRpb24gKi8KKwljeDI0MTEwX3dyaXRlcmVnKHN0YXRlLDB4MDQsMHgwNSk7IC8qIHN0YXJ0IGFjcXVpc2l0aW9uICovCiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEzLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMy5oCmluZGV4IDVkZTBmN2YuLjAxZWI3YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEzLmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgRHJpdmVyIGZvciBDb25leGFudCBDWDI0MTEzL0NYMjQxMjggVHVuZXIgKFNhdGVsaXRlKQorICogIERyaXZlciBmb3IgQ29uZXhhbnQgQ1gyNDExMy9DWDI0MTI4IFR1bmVyIChTYXRlbGxpdGUpCiAgKgogICogIENvcHlyaWdodCAoQykgMjAwNy04IFBhdHJpY2sgQm9ldHRjaGVyIDxwYkBsaW51eHR2Lm9yZz4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuYwppbmRleCBmYWQ2YTk5Li5iMWRkOGFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTIzLmMKQEAgLTk0OSw3ICs5NDksNyBAQAogCWVsc2UKIAkJZXJyKCJpdCBzZWVtcyBJIGRvbid0IGhhdmUgYSB0dW5lci4uLiIpOwogCi0JLyogRW5hYmxlIGF1dG9tYXRpYyBhcXVpc2l0aW9uIGFuZCByZXNldCBjeWNsZSAqLworCS8qIEVuYWJsZSBhdXRvbWF0aWMgYWNxdWlzaXRpb24gYW5kIHJlc2V0IGN5Y2xlICovCiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMywgKGN4MjQxMjNfcmVhZHJlZyhzdGF0ZSwgMHgwMykgfCAweDA3KSk7CiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMHgxMCk7CiAJY3gyNDEyM193cml0ZXJlZyhzdGF0ZSwgMHgwMCwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvZHJ4Mzk3eEQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcngzOTd4RC5jCmluZGV4IGEwNTAwN2MuLjUzNmYwMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcngzOTd4RC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcngzOTd4RC5jCkBAIC0xMDk3LDcgKzEwOTcsNyBAQAogCXMtPmNvbmZpZy5pZmFnYy53MEEgPSAweDNmZjsKIAlzLT5jb25maWcuaWZhZ2MudzBDID0gMHgzODg7CiAKLQkvKiBmb3Igc2lnbmFsIHN0cmVuZ2h0IGNhbGN1bGF0aW9ucyAqLworCS8qIGZvciBzaWduYWwgc3RyZW5ndGggY2FsY3VsYXRpb25zICovCiAJcy0+Y29uZmlnLnNzNzYgPSA4MjA7CiAJcy0+Y29uZmlnLnNzNzggPSAyMjAwOwogCXMtPmNvbmZpZy5zczdBID0gMTUwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMTYuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tYjg2YTE2LmMKaW5kZXggMzNiNjMyMy4uYzI4MzExMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMTYuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmExNi5jCkBAIC0xNjMwLDcgKzE2MzAsNyBAQAogCXN0YXRlLT5zcmF0ZSA9IHAtPnUucXBzay5zeW1ib2xfcmF0ZSAvIDEwMDA7CiAKIAlpZiAoIW1iODZhMTZfc2V0X2ZlKHN0YXRlKSkgewotCQlkcHJpbnRrKHZlcmJvc2UsIE1CODZBMTZfRVJST1IsIDEsICJTdWNjZXNmdWxseSBhY3F1aXJlZCBMT0NLIik7CisJCWRwcmludGsodmVyYm9zZSwgTUI4NkExNl9FUlJPUiwgMSwgIlN1Y2Nlc3NmdWxseSBhY3F1aXJlZCBMT0NLIik7CiAJCXJldHVybiBEVkJGRV9BTEdPX1NFQVJDSF9TVUNDRVNTOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmEyMHMuYwppbmRleCBjYzRhY2QyLi4wZjg2N2E1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmEyMHMuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmEyMHMuYwpAQCAtNDA2LDcgKzQwNiw3IEBACiAJCXByaW50ayhLRVJOX0lORk8gIm1iODZhMjBzOiBJbml0IGZhaWxlZC4gV2lsbCB0cnkgYWdhaW4gbGF0ZXJcbiIpOwogCX0gZWxzZSB7CiAJCXN0YXRlLT5uZWVkX2luaXQgPSBmYWxzZTsKLQkJZHByaW50aygiSW5pdGlhbGl6YXRpb24gc3VjY2VkZWQuXG4iKTsKKwkJZHByaW50aygiSW5pdGlhbGl6YXRpb24gc3VjY2VlZGVkLlxuIik7CiAJfQogCXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tdDMxMi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL210MzEyLmMKaW5kZXggNDcyOTA3ZC4uODNlNmYxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL210MzEyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL210MzEyLmMKQEAgLTY3MCw3ICs2NzAsNyBAQAogCQlpZiAocmV0IDwgMCkKIAkJCWdvdG8gZXJyb3I7CiAKLQkJLyogcHJlc2VydmUgdGhpcyBiaXQgdG8gbm90IGFjY2lkZW50bHkgc2h1dGRvd24gQURDICovCisJCS8qIHByZXNlcnZlIHRoaXMgYml0IHRvIG5vdCBhY2NpZGVudGFsbHkgc2h1dGRvd24gQURDICovCiAJCXZhbCAmPSAweDgwOwogCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQyMC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MjAuYwppbmRleCBlODdiNzQ3Li4xN2Y4Y2RmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDIwLmMKQEAgLTIyNSw3ICsyMjUsNyBAQAogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKIAlpbnQgcmVzdWx0ID0gMDsKIAotCS8qIHNldHVwIGZvciBESVNFUUMgcmVjaWV2ZSAqLworCS8qIHNldHVwIGZvciBESVNFUUMgcmVjZWl2ZSAqLwogCXZhbCA9IHM1aDE0MjBfcmVhZHJlZyhzdGF0ZSwgMHgzYik7CiAJczVoMTQyMF93cml0ZXJlZyhzdGF0ZSwgMHgzYiwgMHg4Mik7IC8qIEZJWE1FOiBndWVzcyAtIGRvIHdlIG5lZWQgdG8gc2V0IERJU19SRFkoMHgwOCkgaW4gcmVjZWl2ZSBtb2RlPyAqLwogCW1zbGVlcCgxNSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3RiNjEwMC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0YjYxMDAuYwppbmRleCA2NDY3M2I4Li5iYzFhOGFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3RiNjEwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdGI2MTAwLmMKQEAgLTM2MCw3ICszNjAsNyBAQAogCWVsc2UKIAkJb2RpdiA9IDA7CiAKLQkvKiBWQ08gZW5hYmxlZCwgc2VhY2ggY2xvY2sgb2ZmIGFzIHBlciBMTDMuNywgMy40LjEgKi8KKwkvKiBWQ08gZW5hYmxlZCwgc2VhcmNoIGNsb2NrIG9mZiBhcyBwZXIgTEwzLjcsIDMuNC4xICovCiAJcmVnc1tTVEI2MTAwX1ZDT10gPSAweGUwIHwgKG9kaXYgPDwgU1RCNjEwMF9WQ09fT0RJVl9TSElGVCk7CiAKIAkvKiBPU00JKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMjk3LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDI5Ny5jCmluZGV4IDRmZDc0NzkuLjg0ZDg4ZjMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDI5Ny5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMjk3LmMKQEAgLTQzNSw3ICs0MzUsNyBAQAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQkvLyBkZXRlcm1pbmUgaW52ZXJzaW9uIGRlcGVuZGFudCBwYXJhbWV0ZXJzCisJLy8gZGV0ZXJtaW5lIGludmVyc2lvbiBkZXBlbmRlbnQgcGFyYW1ldGVycwogCWludmVyc2lvbiA9IHAtPmludmVyc2lvbjsKIAlpZiAoc3RhdGUtPmNvbmZpZy0+aW52ZXJ0KQogCQlpbnZlcnNpb24gPSAoaW52ZXJzaW9uID09IElOVkVSU0lPTl9PTikgPyBJTlZFUlNJT05fT0ZGIDogSU5WRVJTSU9OX09OOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAzNjcuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMzY3LmMKaW5kZXggNGUwZTZhOC4uZTU3YWI1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAzNjcuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDM2Ny5jCkBAIC0xMzI4LDcgKzEzMjgsNyBAQAogCiAJLypndWFyZD1zdHYwMzY3X3JlYWRiaXRzKHN0YXRlLEYzNjdURVJfU1lSX0dVQVJEKTsgKi8KIAotCS8qc3VwcmVzcyBFUFEgYXV0byBmb3IgU1lSX0dBUkQgMS8xNiBvciAxLzMyCisJLypzdXBwcmVzcyBFUFEgYXV0byBmb3IgU1lSX0dBUkQgMS8xNiBvciAxLzMyCiAJYW5kIHNldCBjaGFubmVsIHByZWRpY3RvciBpbiBhdXRvbWF0aWMgKi8KICNpZiAwCiAJc3dpdGNoIChndWFyZCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MDBfcHJpdi5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MDBfcHJpdi5oCmluZGV4IGI2MmIwZjAuLmUwZWE3NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTAwX3ByaXYuaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkwMF9wcml2LmgKQEAgLTIzOCw3ICsyMzgsNyBAQAogfTsKIAogc3RydWN0IHN0djA5MDBfaW5pdF9wYXJhbXN7Ci0JdTMyCWRtZF9yZWZfY2xrOy8qIFJlZnJlbmNlLElucHV0IGNsb2NrIGZvciB0aGUgZGVtb2QgaW4gSHogKi8KKwl1MzIJZG1kX3JlZl9jbGs7LyogUmVmZXJlbmNlLElucHV0IGNsb2NrIGZvciB0aGUgZGVtb2QgaW4gSHogKi8KIAogCS8qIERlbW9kdWxhdG9yIFR5cGUgKHNpbmdsZSBkZW1vZCBvciBkdWFsIGRlbW9kKSAqLwogCWVudW0gZmVfc3R2MDkwMF9kZW1vZF9tb2RlCWRlbW9kX21vZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkweC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MHguYwppbmRleCA0MWQwZjBhLi41MmQ4NzEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkweC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTB4LmMKQEAgLTE0MjQsNyArMTQyNCw3IEBACiAJCQlpZiAoU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgQ0ZSTE9XMCwgMHgwMCkgPCAwKQogCQkJCWdvdG8gZXJyOwogCi0JCQkvKmVubGFyZ2UgdGhlIHRpbWluZyBiYW5kd2l0aCBmb3IgTG93IFNSKi8KKwkJCS8qZW5sYXJnZSB0aGUgdGltaW5nIGJhbmR3aWR0aCBmb3IgTG93IFNSKi8KIAkJCWlmIChTVFYwOTB4X1dSSVRFX0RFTU9EKHN0YXRlLCBSVENTMiwgMHg2OCkgPCAwKQogCQkJCWdvdG8gZXJyOwogCQl9IGVsc2UgewpAQCAtMTQzMiwxNyArMTQzMiwxNyBAQAogCQkJU2V0IFRoZSBjYXJyaWVyIHNlYXJjaCB1cCBhbmQgbG93IHRvIGF1dG8gbW9kZSAqLwogCQkJaWYgKFNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIENBUkNGRywgMHhjNCkgPCAwKQogCQkJCWdvdG8gZXJyOwotCQkJLypyZWR1Y2UgdGhlIHRpbWluZyBiYW5kd2l0aCBmb3IgaGlnaCBTUiovCisJCQkvKnJlZHVjZSB0aGUgdGltaW5nIGJhbmR3aWR0aCBmb3IgaGlnaCBTUiovCiAJCQlpZiAoU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgUlRDUzIsIDB4NDQpIDwgMCkKIAkJCQlnb3RvIGVycjsKIAkJfQogCX0gZWxzZSB7CiAJCS8qID49IEN1dCAzICovCiAJCWlmIChzdGF0ZS0+c3JhdGUgPD0gNTAwMDAwMCkgewotCQkJLyogZW5sYXJnZSB0aGUgdGltaW5nIGJhbmR3aXRoIGZvciBMb3cgU1IgKi8KKwkJCS8qIGVubGFyZ2UgdGhlIHRpbWluZyBiYW5kd2lkdGggZm9yIExvdyBTUiAqLwogCQkJU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgUlRDUzIsIDB4NjgpOwogCQl9IGVsc2UgewotCQkJLyogcmVkdWNlIHRpbWluZyBiYW5kd2l0aCBmb3IgaGlnaCBTUiAqLworCQkJLyogcmVkdWNlIHRpbWluZyBiYW5kd2lkdGggZm9yIGhpZ2ggU1IgKi8KIAkJCVNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIFJUQ1MyLCAweDQ0KTsKIAkJfQogCkBAIC0yNDgyLDcgKzI0ODIsNyBAQAogCQkJCQlkdmJzMl9mbHlfd2hlZWwgPSBTVFYwOTB4X0dFVEZJRUxEX1B4KHJlZywgRkxZV0hFRUxfQ1BUX0ZJRUxEKTsKIAkJCQl9CiAJCQkJaWYgKGR2YnMyX2ZseV93aGVlbCA8IDB4ZCkgewotCQkJCQkvKkZBTFNFIGxvY2ssIFRoZSBkZW1vZCBpcyBsb29zaW5nIGxvY2sgKi8KKwkJCQkJLypGQUxTRSBsb2NrLCBUaGUgZGVtb2QgaXMgbG9zaW5nIGxvY2sgKi8KIAkJCQkJbG9jayA9IDA7CiAJCQkJCWlmICh0cmlhbHMgPCAyKSB7CiAJCQkJCQlpZiAoc3RhdGUtPmludGVybmFsLT5kZXZfdmVyID49IDB4MjApIHsKQEAgLTMyMDIsNyArMzIwMiw3IEBACiAJCQlnb3RvIGVycjsKIAkJaWYgKFNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIENPUlJFTE1BTlQsIDB4NzApIDwgMCkKIAkJCWdvdG8gZXJyOwotCQlpZiAoc3R2MDkweF9zZXRfc3JhdGUoc3RhdGUsIDEwMDAwMDApIDwgMCkgLyogaW5pdGFsIHNyYXRlID0gMU1zcHMgKi8KKwkJaWYgKHN0djA5MHhfc2V0X3NyYXRlKHN0YXRlLCAxMDAwMDAwKSA8IDApIC8qIGluaXRpYWwgc3JhdGUgPSAxTXNwcyAqLwogCQkJZ290byBlcnI7CiAJfSBlbHNlIHsKIAkJLyoga25vd24gc3JhdGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL21hbnRpcy9tYW50aXNfdWFydC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvbWFudGlzL21hbnRpc191YXJ0LmMKaW5kZXggOTdiODg5ZS4uZjgwN2M4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvbWFudGlzL21hbnRpc191YXJ0LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvbWFudGlzL21hbnRpc191YXJ0LmMKQEAgLTE3Miw3ICsxNzIsNyBAQAogCW1td3JpdGUobW1yZWFkKE1BTlRJU19VQVJUX0NUTCkgfCBNQU5USVNfVUFSVF9SWElOVCwgTUFOVElTX1VBUlRfQ1RMKTsKIAogCXNjaGVkdWxlX3dvcmsoJm1hbnRpcy0+dWFydF93b3JrKTsKLQlkcHJpbnRrKE1BTlRJU19ERUJVRywgMSwgIlVBUlQgc3VjY2VzZnVsbHkgaW5pdGlhbGl6ZWQiKTsKKwlkcHJpbnRrKE1BTlRJU19ERUJVRywgMSwgIlVBUlQgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIik7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL25nZW5lL25nZW5lLWNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL25nZW5lL25nZW5lLWNvcmUuYwppbmRleCAxNzVhMGY2Li5jY2MyZDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9uZ2VuZS9uZ2VuZS1jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvbmdlbmUvbmdlbmUtY29yZS5jCkBAIC0xMjIsNyArMTIyLDcgQEAKIAkJCQkJCUN1ci0+bmdlbmVCdWZmZXIuU1IuRmxhZ3MgJj0KIAkJCQkJCQl+MHg0MDsKIAkJCQkJCWJyZWFrOwotCQkJCQkJLyogU3RvcCBwcm9jY2Vzc2luZyBzdHJlYW0gKi8KKwkJCQkJCS8qIFN0b3AgcHJvY2Vzc2luZyBzdHJlYW0gKi8KIAkJCQkJfQogCQkJCX0gZWxzZSB7CiAJCQkJCS8qIFdlIGdvdCBhIHZhbGlkIGJ1ZmZlciwKQEAgLTEzMyw3ICsxMzMsNyBAQAogCQkJCXByaW50ayhLRVJOX0VSUiBERVZJQ0VfTkFNRSAiOiBPT1BTXG4iKTsKIAkJCQlpZiAoY2hhbi0+SFdTdGF0ZSA9PSBIV1NUQVRFX1JVTikgewogCQkJCQlDdXItPm5nZW5lQnVmZmVyLlNSLkZsYWdzICY9IH4weDQwOwotCQkJCQlicmVhazsJLyogU3RvcCBwcm9jY2Vzc2luZyBzdHJlYW0gKi8KKwkJCQkJYnJlYWs7CS8qIFN0b3AgcHJvY2Vzc2luZyBzdHJlYW0gKi8KIAkJCQl9CiAJCQl9CiAJCQlpZiAoY2hhbi0+QXVkaW9EVE9VcGRhdGVkKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMKaW5kZXggNmNhNjcxM2QuLjdjYjc5ZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL3BsdXRvMi9wbHV0bzIuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMKQEAgLTI5NCwxMyArMjk0LDEzIEBACiAKIAkvKiBXb3JrYXJvdW5kIGZvciBicm9rZW4gaGFyZHdhcmU6CiAJICogWzFdIE9uIHN0YXJ0dXAgTkJQQUNLRVRTIHNlZW1zIHRvIGNvbnRhaW4gYW4gdW5pbml0aWFsaXplZCB2YWx1ZSwKLQkgKiAgICAgYnV0IG5vIHBhY2tldHMgaGF2ZSBiZWVuIHRyYW5zZmVyZWQuCisJICogICAgIGJ1dCBubyBwYWNrZXRzIGhhdmUgYmVlbiB0cmFuc2ZlcnJlZC4KIAkgKiBbMl0gU29tZXRpbWVzIChhY3R1YWxseSB2ZXJ5IG9mdGVuKSBOQlBBQ0tFVFMgc3RheXMgYXQgemVybwotCSAqICAgICBhbHRob3VnaCBvbmUgcGFja2V0IGhhcyBiZWVuIHRyYW5zZmVyZWQuCisJICogICAgIGFsdGhvdWdoIG9uZSBwYWNrZXQgaGFzIGJlZW4gdHJhbnNmZXJyZWQuCiAJICogWzNdIFNvbWV0aW1lcyAoYWN0dWFsbHkgcmFyZWx5KSwgdGhlIGNhcmQgZ2V0cyBpbnRvIGFuIGVycm9uZW91cwogCSAqICAgICBtb2RlIHdoZXJlIGl0IGNvbnRpbnVvdXNseSBnZW5lcmF0ZXMgaW50ZXJydXB0cywgY2xhaW1pbmcgaXQKLQkgKiAgICAgaGFzIHJlY2lldmVkIG5icGFja2V0cz5UU19ETUFfUEFDS0VUUyBwYWNrZXRzLCBidXQgbm8gcGFja2V0Ci0JICogICAgIGhhcyBiZWVuIHRyYW5zZmVyZWQuIE9ubHkgYSByZXNldCBzZWVtcyB0byBzb2x2ZSB0aGlzCisJICogICAgIGhhcyByZWNlaXZlZCBuYnBhY2tldHM+VFNfRE1BX1BBQ0tFVFMgcGFja2V0cywgYnV0IG5vIHBhY2tldAorCSAqICAgICBoYXMgYmVlbiB0cmFuc2ZlcnJlZC4gT25seSBhIHJlc2V0IHNlZW1zIHRvIHNvbHZlIHRoaXMKIAkgKi8KIAlpZiAoKG5icGFja2V0cyA9PSAwKSB8fCAobmJwYWNrZXRzID4gVFNfRE1BX1BBQ0tFVFMpKSB7CiAJCXVuc2lnbmVkIGludCBpID0gMDsKQEAgLTMzMiw3ICszMzIsNyBAQAogCXN0cnVjdCBwbHV0byAqcGx1dG8gPSBkZXZfaWQ7CiAJdTMyIHRzY3I7CiAKLQkvKiBjaGVjayB3aGV0aGVyIGFuIGludGVycnVwdCBvY2N1cmVkIG9uIHRoaXMgZGV2aWNlICovCisJLyogY2hlY2sgd2hldGhlciBhbiBpbnRlcnJ1cHQgb2NjdXJyZWQgb24gdGhpcyBkZXZpY2UgKi8KIAl0c2NyID0gcGx1dG9fcmVhZHJlZyhwbHV0bywgUkVHX1RTQ1IpOwogCWlmICghKHRzY3IgJiAoVFNDUl9ERSB8IFRTQ1JfT1ZSKSkpCiAJCXJldHVybiBJUlFfTk9ORTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL3NpYW5vL3Ntc2R2Yi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zZHZiLmMKaW5kZXggYjgwZDA5Yi4uMzdjNTk0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zZHZiLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvc2lhbm8vc21zZHZiLmMKQEAgLTY1MCw3ICs2NTAsNyBAQAogCQlpZiAoc3RhdHVzICYgRkVfSEFTX0xPQ0spCiAJCQlyZXR1cm4gcmV0OwogCi0JCS8qIHByZXZpb3VzIHR1bmUgZGlkbnQgbG9jayAtIGVuYWJsZSBMTkEgYW5kIHR1bmUgYWdhaW4gKi8KKwkJLyogcHJldmlvdXMgdHVuZSBkaWRuJ3QgbG9jayAtIGVuYWJsZSBMTkEgYW5kIHR1bmUgYWdhaW4gKi8KIAkJc21zX2JvYXJkX2xuYV9jb250cm9sKGNsaWVudC0+Y29yZWRldiwgMSk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9hdjcxMTAuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2F2NzExMC5jCmluZGV4IGZjMGE2MGYuLjNkMjA3MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2F2NzExMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2F2NzExMC5jCkBAIC0yMzMyLDcgKzIzMzIsNyBAQAogICogaW5jcmVtZW50LiBUaGF0J3MgaG93IHRoZSA3MTQ2IGlzIHByb2dyYW1tZWQgdG8gZG8gZXZlbnQKICAqIGNvdW50aW5nIGluIHRoaXMgYnVkZ2V0LXBhdGNoLmMKICAqIEkgKnRoaW5rKiBIUFMgc2V0dGluZyBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHBoYXNlCi0gKiBvZiBIUyBidXQgSSBjYW50IGJlIDEwMCUgc3VyZSBpbiB0aGF0LgorICogb2YgSFMgYnV0IEkgY2FuJ3QgYmUgMTAwJSBzdXJlIGluIHRoYXQuCiAgKgogICogaGFyZHdhcmUgZGVidWcgbm90ZTogYSB3b3JraW5nIGJ1ZGdldCBjYXJkIChpbmNsdWRpbmcgYnVkZ2V0IHBhdGNoKQogICogd2l0aCB2cGVpcnEoKSBpbnRlcnJ1cHQgc2V0dXAgaW4gbW9kZSAiMHg5MCIgKGV2ZXJ5IDY0Sykgd2lsbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvdHRwY2kvYnVkZ2V0LXBhdGNoLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9idWRnZXQtcGF0Y2guYwppbmRleCA1Nzk4MzU1Li4zMzk1ZDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9idWRnZXQtcGF0Y2guYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9idWRnZXQtcGF0Y2guYwpAQCAtNTM5LDcgKzUzOSw3IEBACiAqKiAgICAgIGluY3JlbWVudC4gVGhhdCdzIGhvdyB0aGUgNzE0NiBpcyBwcm9ncmFtbWVkIHRvIGRvIGV2ZW50CiAqKiAgICAgIGNvdW50aW5nIGluIHRoaXMgYnVkZ2V0LXBhdGNoLmMKICoqICAgICAgSSAqdGhpbmsqIEhQUyBzZXR0aW5nIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgcGhhc2UKLSoqICAgICAgb2YgSFMgYnV0IEkgY2FudCBiZSAxMDAlIHN1cmUgaW4gdGhhdC4KKyoqICAgICAgb2YgSFMgYnV0IEkgY2FuJ3QgYmUgMTAwJSBzdXJlIGluIHRoYXQuCiAKICoqICAgICAgaGFyZHdhcmUgZGVidWcgbm90ZTogYSB3b3JraW5nIGJ1ZGdldCBjYXJkIChpbmNsdWRpbmcgYnVkZ2V0IHBhdGNoKQogKiogICAgICB3aXRoIHZwZWlycSgpIGludGVycnVwdCBzZXR1cCBpbiBtb2RlICIweDkwIiAoZXZlcnkgNjRLKSB3aWxsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1kZWMvdHR1c2JfZGVjLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1kZWMvdHR1c2JfZGVjLmMKaW5kZXggZmUxYjgwMy4uZjg5M2JmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvdHR1c2ItZGVjL3R0dXNiX2RlYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL3R0dXNiLWRlYy90dHVzYl9kZWMuYwpAQCAtMjM0LDcgKzIzNCw3IEBACiAJCSAqICh3aXRoIGJ1ZmZlclszXSA9PSAweDQwKSBpbiBhbiBpbnRlcnZhbGwgb2YgfjEwMG1zLgogCQkgKiBCdXQgdG8gaGFuZGxlIHRoaXMgY29ycmVjdGx5IHdlIGhhZCB0byBpbWxlbWVuZW50IHNvbWUKIAkJICoga2luZCBvZiB0aW1lciB3aGljaCBzaWduYWxzIGEgJ2tleSB1cCcgZXZlbnQgaWYgbm8KLQkJICoga2V5cmVwZWF0IHNpZ25hbCBpcyByZWNpZXZlZCBmb3IgbGV0cyBzYXkgMjAwbXMuCisJCSAqIGtleXJlcGVhdCBzaWduYWwgaXMgcmVjZWl2ZWQgZm9yIGxldHMgc2F5IDIwMG1zLgogCQkgKiB0aGlzIHNob3VsZC9jb3VsZCBiZSBhZGRlZCBsYXRlciAuLi4KIAkJICogZm9yIG5vdyBsZXRzIHJlcG9ydCBlYWNoIHNpZ25hbCBhcyBhIGtleSBkb3duIGFuZCB1cCovCiAJCWRwcmludGsoIiVzOnJjIHNpZ25hbDolZFxuIiwgX19mdW5jX18sIGJ1ZmZlcls0XSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLW1yODAwLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLW1yODAwLmMKaW5kZXggZTZiMmQwOC4uYjNhNjM1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1tcjgwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tbXI4MDAuYwpAQCAtOTksNyArOTksNyBAQAogCiAvKgogICogQ29tbWFuZHMgdGhhdCBkZXZpY2Ugc2hvdWxkIHVuZGVyc3RhbmQKLSAqIExpc3QgaXNudCBmdWxsIGFuZCB3aWxsIGJlIHVwZGF0ZWQgd2l0aCBpbXBsZW1lbnRhdGlvbiBvZiBuZXcgZnVuY3Rpb25zCisgKiBMaXN0IGlzbid0IGZ1bGwgYW5kIHdpbGwgYmUgdXBkYXRlZCB3aXRoIGltcGxlbWVudGF0aW9uIG9mIG5ldyBmdW5jdGlvbnMKICAqLwogI2RlZmluZSBBTVJBRElPX1NFVF9GUkVRCTB4YTQKICNkZWZpbmUgQU1SQURJT19TRVRfTVVURQkweGFiCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy1pMmMuYyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzLWkyYy5jCmluZGV4IDBmYWI2ZjguLmRlY2EyZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzLWkyYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzLWkyYy5jCkBAIC00ODEsNyArNDgxLDcgQEAKIH0KIAogLyoKLSAqIHNpNDcxM193YWl0X3N0YyAtIFdhaXRzIFNUQyBpbnRlcnJ1cHQgYW5kIGNsZWFycyBzdGF0dXMgYml0cy4gVXNlZnVsbAorICogc2k0NzEzX3dhaXRfc3RjIC0gV2FpdHMgU1RDIGludGVycnVwdCBhbmQgY2xlYXJzIHN0YXR1cyBiaXRzLiBVc2VmdWwKICAqCQkgICAgIGZvciBUWF9UVU5FX1BPV0VSLCBUWF9UVU5FX0ZSRVEgYW5kIFRYX1RVTkVfTUVBUwogICogQHNkZXY6IHNpNDcxM19kZXZpY2Ugc3RydWN0dXJlIGZvciB0aGUgZGV2aWNlIHdlIGFyZSBjb21tdW5pY2F0aW5nCiAgKiBAdXNlY3M6IHRpbWVvdXQgdG8gd2FpdCBmb3IgU1RDIGludGVycnVwdCBzaWduYWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5jIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmMKaW5kZXggZWNmZDlmYi4uNTk5MWFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmMKQEAgLTM1Miw3ICszNTIsNyBAQAogCWlmICghYXRvbWljX3JlYWQoJmZtZGV2LT50eF9jbnQpKQogCQlyZXR1cm47CiAKLQkvKiBDaGVjaywgaXMgdGhlcmUgYW55IHRpbWVvdXQgaGFwcGVubmVkIHRvIGxhc3QgdHJhbnNtaXR0ZWQgcGFja2V0ICovCisJLyogQ2hlY2ssIGlzIHRoZXJlIGFueSB0aW1lb3V0IGhhcHBlbmVkIHRvIGxhc3QgdHJhbnNtaXR0ZWQgcGFja2V0ICovCiAJaWYgKChqaWZmaWVzIC0gZm1kZXYtPmxhc3RfdHhfamlmZmllcykgPiBGTV9EUlZfVFhfVElNRU9VVCkgewogCQlmbWVycigiVFggdGltZW91dCBvY2N1cnJlZFxuIik7CiAJCWF0b21pY19zZXQoJmZtZGV2LT50eF9jbnQsIDEpOwpAQCAtNDc4LDcgKzQ3OCw3IEBACiAJCXJldHVybiAtRVRJTUVET1VUOwogCX0KIAlpZiAoIWZtZGV2LT5yZXNwX3NrYikgewotCQlmbWVycigiUmVwb25zZSBTS0IgaXMgbWlzc2luZ1xuIik7CisJCWZtZXJyKCJSZXNwb25zZSBTS0IgaXMgbWlzc2luZ1xuIik7CiAJCXJldHVybiAtRUZBVUxUOwogCX0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZm1kZXYtPnJlc3Bfc2tiX2xvY2ssIGZsYWdzKTsKQEAgLTE1OTgsNyArMTU5OCw3IEBACiAJCWZtZGJnKCJGTSBDb3JlIGlzIGFscmVhZHkgZG93blxuIik7CiAJCXJldHVybiAwOwogCX0KLQkvKiBTZXZpY2UgcGVuZGluZyByZWFkICovCisJLyogU2VydmljZSBwZW5kaW5nIHJlYWQgKi8KIAl3YWtlX3VwX2ludGVycnVwdGlibGUoJmZtZGV2LT5yeC5yZHMucmVhZF9xdWV1ZSk7CiAKIAl0YXNrbGV0X2tpbGwoJmZtZGV2LT50eF90YXNrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5oIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmgKaW5kZXggNDI3YzQxNi4uYWVlMjQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmgKKysrIGIvZHJpdmVycy9tZWRpYS9yYWRpby93bDEyOHgvZm1kcnZfY29tbW9uLmgKQEAgLTM2Miw3ICszNjIsNyBAQAogI2RlZmluZSBGTV9UWF9QUkVFTVBIXzUwVVMJCTAKICNkZWZpbmUgRk1fVFhfUFJFRU1QSF83NVVTCQkyCiAKLS8qIEZNIFRYIGFudGVubmEgaW1wZWRlbmNlIHZhbHVlcyAqLworLyogRk0gVFggYW50ZW5uYSBpbXBlZGFuY2UgdmFsdWVzICovCiAjZGVmaW5lIEZNX1RYX0FOVF9JTVBfNTAJCTAKICNkZWZpbmUgRk1fVFhfQU5UX0lNUF8yMDAJCTEKICNkZWZpbmUgRk1fVFhfQU5UX0lNUF81MDAJCTIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvZW5lX2lyLmMgYi9kcml2ZXJzL21lZGlhL3JjL2VuZV9pci5jCmluZGV4IDFhYzQ5MTMuLmE0M2VkNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMvZW5lX2lyLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9lbmVfaXIuYwpAQCAtNTIwLDcgKzUyMCw3IEBACiAJZGV2LT5yeF9lbmFibGVkID0gZmFsc2U7CiB9CiAKLS8qIFRoaXMgcmVzZXRzIHRoZSByZWNlaXZlci4gVXNlZnVsbCB0byBzdG9wIHN0cmVhbSBvZiBzcGFjZXMgYXQgZW5kIG9mCisvKiBUaGlzIHJlc2V0cyB0aGUgcmVjZWl2ZXIuIFVzZWZ1bCB0byBzdG9wIHN0cmVhbSBvZiBzcGFjZXMgYXQgZW5kIG9mCiAgKiB0cmFuc21pc3Npb24KICAqLwogc3RhdGljIHZvaWQgZW5lX3J4X3Jlc2V0KHN0cnVjdCBlbmVfZGV2aWNlICpkZXYpCkBAIC0xMDg5LDcgKzEwODksNyBAQAogCWlmIChlcnJvciA8IDApCiAJCWdvdG8gZXJyb3I7CiAKLQllbmVfbm90aWNlKCJkcml2ZXIgaGFzIGJlZW4gc3VjY2VzZnVsbHkgbG9hZGVkIik7CisJZW5lX25vdGljZSgiZHJpdmVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBsb2FkZWQiKTsKIAlyZXR1cm4gMDsKIGVycm9yOgogCWlmIChkZXYgJiYgZGV2LT5pcnEgPj0gMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvaW1vbi5jIGIvZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKaW5kZXggZjcxNGUxYS4uZWJkNjhlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKQEAgLTEyOTMsNyArMTI5Myw3IEBACiAJICogY29udGFpbiBhIHBvc2l0aW9uIGNvb3JkaW5hdGUgKHgseSksIHdpdGggZWFjaCBjb21wb25lbnQgcmFuZ2luZwogCSAqIGZyb20gLTE0IHRvIDE0LiBXZSB3YW50IHRvIGRvd24tc2FtcGxlIHRoaXMgdG8gb25seSA0IGRpc2NyZXRlIHZhbHVlcwogCSAqIGZvciB1cC9kb3duL2xlZnQvcmlnaHQgYXJyb3cga2V5cy4gQWxzbywgd2hlbiB5b3UgZ2V0IHRvbyBjbG9zZSB0bwotCSAqIGRpYWdvbmFscywgaXQgaGFzIGEgdGVuZGFuY3kgdG8ganVtcCBiYWNrIGFuZCBmb3J0aCwgc28gbGV0cyB0cnkgdG8KKwkgKiBkaWFnb25hbHMsIGl0IGhhcyBhIHRlbmRlbmN5IHRvIGp1bXAgYmFjayBhbmQgZm9ydGgsIHNvIGxldHMgdHJ5IHRvCiAJICogaWdub3JlIHdoZW4gdGhleSBnZXQgdG9vIGNsb3NlLgogCSAqLwogCWlmIChpY3R4LT5wcm9kdWN0ICE9IDB4ZmZkYykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9pci1yYXcuYyBiL2RyaXZlcnMvbWVkaWEvcmMvaXItcmF3LmMKaW5kZXggMDFmMjU4YS4uMTFjMTlkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9pci1yYXcuYworKysgYi9kcml2ZXJzL21lZGlhL3JjL2lyLXJhdy5jCkBAIC0xNTMsNyArMTUzLDcgQEAKICAqIEB0eXBlOgl0aGUgdHlwZSBvZiB0aGUgZXZlbnQgdGhhdCBoYXMgb2NjdXJyZWQKICAqCiAgKiBUaGlzIHJvdXRpbmUgKHdoaWNoIG1heSBiZSBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgY29udGV4dCkgd29ya3MKLSAqIGluIHNpbWlsaWFyIG1hbm5lciB0byBpcl9yYXdfZXZlbnRfc3RvcmVfZWRnZS4KKyAqIGluIHNpbWlsYXIgbWFubmVyIHRvIGlyX3Jhd19ldmVudF9zdG9yZV9lZGdlLgogICogVGhpcyByb3V0aW5lIGlzIGludGVuZGVkIGZvciBkZXZpY2VzIHdpdGggbGltaXRlZCBpbnRlcm5hbCBidWZmZXIKICAqIEl0IGF1dG9tZXJnZXMgc2FtcGxlcyBvZiBzYW1lIHR5cGUsIGFuZCBoYW5kbGVzIHRpbWVvdXRzCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1sbWUyNTEwLmMgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbG1lMjUxMC5jCmluZGV4IDNjMTkxMzkuLmFmYWUxNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1sbWUyNTEwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLWxtZTI1MTAuYwpAQCAtNTUsNyArNTUsNyBAQAogCXsgMHhmZjQwZmIwNCwgS0VZX01FRElBX1JFUEVBVH0sIC8qIFJlY2FsbCAqLwogCXsgMHhmZjQwZTUxYSwgS0VZX1BBVVNFIH0sIC8qIFRpbWVzaGlmdCAqLwogCXsgMHhmZjQwZmQwMiwgS0VZX1ZPTFVNRVVQIH0sIC8qIDIgeCAtLysgS2V5cyBub3QgbWFya2VkICovCi0JeyAweGZmNDBmOTA2LCBLRVlfVk9MVU1FRE9XTiB9LCAvKiBWb2x1bW5lIGRlZmluZWQgYXMgcmlnaHQgaGFuZCovCisJeyAweGZmNDBmOTA2LCBLRVlfVk9MVU1FRE9XTiB9LCAvKiBWb2x1bWUgZGVmaW5lZCBhcyByaWdodCBoYW5kKi8KIAl7IDB4ZmY0MGZlMDEsIEtFWV9DSEFOTkVMVVAgfSwKIAl7IDB4ZmY0MGZhMDUsIEtFWV9DSEFOTkVMRE9XTiB9LAogCXsgMHhmZjQwZWIxNCwgS0VZX1pPT00gfSwKQEAgLTc2LDcgKzc2LDcgQEAKIAl7IDB4ZmYwMGJiNDQsIEtFWV9NRURJQV9SRVBFQVR9LCAvKiBSZWNhbGwgKi8KIAl7IDB4ZmYwMGI1NGEsIEtFWV9QQVVTRSB9LCAvKiBUaW1lc2hpZnQgKi8KIAl7IDB4ZmYwMGI4NDcsIEtFWV9WT0xVTUVVUCB9LCAvKiAyIHggLS8rIEtleXMgbm90IG1hcmtlZCAqLwotCXsgMHhmZjAwYmM0MywgS0VZX1ZPTFVNRURPV04gfSwgLyogVm9sdW1uZSBkZWZpbmVkIGFzIHJpZ2h0IGhhbmQqLworCXsgMHhmZjAwYmM0MywgS0VZX1ZPTFVNRURPV04gfSwgLyogVm9sdW1lIGRlZmluZWQgYXMgcmlnaHQgaGFuZCovCiAJeyAweGZmMDBiOTQ2LCBLRVlfQ0hBTk5FTFVQIH0sCiAJeyAweGZmMDBiZjQwLCBLRVlfQ0hBTk5FTERPV04gfSwKIAl7IDB4ZmYwMGY3MDgsIEtFWV9aT09NIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbXNpLXR2YW55d2hlcmUuYyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1tc2ktdHZhbnl3aGVyZS5jCmluZGV4IDE4YjM3ZmEuLmZkZDIxM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1tc2ktdHZhbnl3aGVyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1tc2ktdHZhbnl3aGVyZS5jCkBAIC0yOSw3ICsyOSw3IEBACiAKIAl7IDB4MGMsIEtFWV9NVVRFIH0sCiAJeyAweDBmLCBLRVlfU0NSRUVOIH0sCQkvKiBGdWxsIFNjcmVlbiAqLwotCXsgMHgxMCwgS0VZX0ZOIH0sCQkvKiBGdW50aW9uICovCisJeyAweDEwLCBLRVlfRk4gfSwJCS8qIEZ1bmN0aW9uICovCiAJeyAweDExLCBLRVlfVElNRSB9LAkJLyogVGltZSBzaGlmdCAqLwogCXsgMHgxMiwgS0VZX1BPV0VSIH0sCiAJeyAweDEzLCBLRVlfTUVESUEgfSwJCS8qIE1UUyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLW5vcndvb2QuYyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1ub3J3b29kLmMKaW5kZXggZjFjMTI4MS4uZjlmMmZhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLW5vcndvb2QuYworKysgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbm9yd29vZC5jCkBAIC00OSw3ICs0OSw3IEBACiAJeyAweDM3LCBLRVlfUExBWSB9LAkJLyogUGxheSAgICAgICAgICAgICAgICAqLwogCXsgMHgzNiwgS0VZX1BBVVNFIH0sCQkvKiBQYXVzZSAgICAgICAgICAgICAgICovCiAJeyAweDJiLCBLRVlfU1RPUCB9LAkJLyogU3RvcCAgICAgICAgICAgICAgICAqLwotCXsgMHg2NywgS0VZX0ZBU1RGT1JXQVJEIH0sCS8qIEZvd2FyZCAgICAgICAgICAgICAgKi8KKwl7IDB4NjcsIEtFWV9GQVNURk9SV0FSRCB9LAkvKiBGb3J3YXJkICAgICAgICAgICAgICAqLwogCXsgMHg2NiwgS0VZX1JFV0lORCB9LAkJLyogUmV3aW5kICAgICAgICAgICAgICAqLwogCXsgMHgzZSwgS0VZX1NFQVJDSCB9LAkJLyogQXV0byBTY2FuICAgICAgICAgICAqLwogCXsgMHgyZSwgS0VZX0NBTUVSQSB9LAkJLyogQ2FwdHVyZSBWaWRlbyAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9yYy1tYWluLmMgYi9kcml2ZXJzL21lZGlhL3JjL3JjLW1haW4uYwppbmRleCA1YWMxYmFmLi5mNTNmOWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JjL3JjLW1haW4uYworKysgYi9kcml2ZXJzL21lZGlhL3JjL3JjLW1haW4uYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAgKiBAcmNfbWFwOglzY2FuY29kZSB0YWJsZSB0byBiZSBzZWFyY2hlZAogICogQHNjYW5jb2RlOgl0aGUgZGVzaXJlZCBzY2FuY29kZQogICogQHJlc2l6ZToJY29udHJvbHMgd2hldGhlciB3ZSBhbGxvd2VkIHRvIHJlc2l6ZSB0aGUgdGFibGUgdG8KLSAqCQlhY2NvbW9kYXRlIG5vdCB5ZXQgcHJlc2VudCBzY2FuY29kZXMKKyAqCQlhY2NvbW1vZGF0ZSBub3QgeWV0IHByZXNlbnQgc2NhbmNvZGVzCiAgKiBAcmV0dXJuOglpbmRleCBvZiB0aGUgbWFwcGluZyBjb250YWluaW5nIHNjYW5jb2RlIGluIHF1ZXN0aW9uCiAgKgkJb3IgLTFVIGluIGNhc2Ugb2YgZmFpbHVyZS4KICAqCkBAIC0xMDM3LDcgKzEwMzcsNyBAQAogCQlnb3RvIG91dF90YWJsZTsKIAogCS8qCi0JICogRGVmYXVsdCBkZWxheSBvZiAyNTBtcyBpcyB0b28gc2hvcnQgZm9yIHNvbWUgcHJvdG9jb2xzLCBleHBlY2lhbGx5CisJICogRGVmYXVsdCBkZWxheSBvZiAyNTBtcyBpcyB0b28gc2hvcnQgZm9yIHNvbWUgcHJvdG9jb2xzLCBlc3BlY2lhbGx5CiAJICogc2luY2UgdGhlIHRpbWVvdXQgaXMgY3VycmVudGx5IHNldCB0byAyNTBtcy4gSW5jcmVhc2UgaXQgdG8gNTAwbXMsCiAJICogdG8gYXZvaWQgd3JvbmcgcmVwZXRpdGlvbiBvZiB0aGUga2V5Y29kZXMuIE5vdGUgdGhhdCB0aGlzIG11c3QgYmUKIAkgKiBzZXQgYWZ0ZXIgdGhlIGNhbGwgdG8gaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKCkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC12aWRlby5jCmluZGV4IDZhZDgzYTEuLmMwM2ViMjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYXUwODI4L2F1MDgyOC12aWRlby5jCkBAIC01MDIsNyArNTAyLDcgQEAKIAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBhdTA4MjhfYnVmZmVyLCB2Yi5xdWV1ZSk7Ci0JLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bGwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCisJLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KIAlvdXRwID0gdmlkZW9idWZfdG9fdm1hbGxvYygmKCpidWYpLT52Yik7CiAJbWVtc2V0KG91dHAsIDB4MDAsICgqYnVmKS0+dmIuc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1jYXJkcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKaW5kZXggMjQyZjBkNS4uM2M5ZTZjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWNhcmRzLmMKQEAgLTIyNDQsOCArMjI0NCw4IEBACiAJfSwKIAlbQlRUVl9CT0FSRF9QSUNPTE9fVEVUUkFfQ0hJUF0gPSB7CiAJCS8qRXJpYyBERUJJRUYgPGRlYmllZkB0ZWxlbXNhLmNvbT4qLwotCQkvKkVVUkVTWVMgUGljb2xvIFRldHJhIDogNCBDb25leGFudCBGdXNpb24gODc4QSwgbm8gYXVkaW8sIHZpZGVvIGlucHV0IHNldCB3aXRoIGFuYWxvZyBtdWx0aXBsZXhlcnMgR1BJTyBjb250cm9sZWQqLwotCQkvKiBhZGRzIHBpY29sb190ZXRyYV9tdXhzZWwoKSwgcGljb2xvX3RldHJhX2luaXQoKSwgdGhlIGZvbG93aW5nIGRlY2xhcmF0aW9uIHN0cnVjdXJlLCBhbmQgI2RlZmluZSBCVFRWX0JPQVJEX1BJQ09MT19URVRSQV9DSElQKi8KKwkJLypFVVJFU1lTIFBpY29sbyBUZXRyYSA6IDQgQ29uZXhhbnQgRnVzaW9uIDg3OEEsIG5vIGF1ZGlvLCB2aWRlbyBpbnB1dCBzZXQgd2l0aCBhbmFsb2cgbXVsdGlwbGV4ZXJzIEdQSU8gY29udHJvbGxlZCovCisJCS8qIGFkZHMgcGljb2xvX3RldHJhX211eHNlbCgpLCBwaWNvbG9fdGV0cmFfaW5pdCgpLCB0aGUgZm9sbG93aW5nIGRlY2xhcmF0aW9uIHN0cnVjdXJlLCBhbmQgI2RlZmluZSBCVFRWX0JPQVJEX1BJQ09MT19URVRSQV9DSElQKi8KIAkJLyoweDc5IGluIGJ0dHYuaCovCiAJCS5uYW1lICAgICAgICAgICA9ICJFdXJlc3lzIFBpY29sbyBUZXRyYSIsCiAJCS52aWRlb19pbnB1dHMgICA9IDQsCkBAIC00NTY3LDcgKzQ1NjcsNyBAQAogICogYXQgb25lIGlucHV0IHdoaWxlIHRoZSBtb25pdG9yIGlzIGxvb2tpbmcgYXQgYW5vdGhlci4KICAqCiAgKiBTaW5jZSBJJ3ZlIGNvdWxkbid0IGJlIGJvdGhlcmVkIGZpZ3VyaW5nIG91dCBob3cgdG8gYWRkIGFuCi0gKiBpbmRlcGVuZGFudCBtdXhzZWwgZm9yIHRoZSBtb25pdG9yIGJ1cywgSSd2ZSBqdXN0IHNldCBpdCB0bworICogaW5kZXBlbmRlbnQgbXV4c2VsIGZvciB0aGUgbW9uaXRvciBidXMsIEkndmUganVzdCBzZXQgaXQgdG8KICAqIHdoYXRldmVyIHRoZSBjYXJkIGlzIGxvb2tpbmcgYXQuCiAgKgogICogIE9VVDAgb2YgdGhlIFREQTg1NDAncyBpcyBjb25uZWN0ZWQgdG8gTVVYMCAgICAgICAgICgweDAzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWdwaW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1ncGlvLmMKaW5kZXggZmQ2MDRkMy4uMTNjZTcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWdwaW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0OHh4L2J0dHYtZ3Bpby5jCkBAIC0zLDcgKzMsNyBAQAogICAgIGJ0dHYtZ3Bpby5jICAtLSAgZ3BpbyBzdWIgZHJpdmVycwogCiAgICAgc3lzZnMtYmFzZWQgc3ViIGRyaXZlciBpbnRlcmZhY2UgZm9yIGJ0dHYKLSAgICBtYWlubHkgaW50ZW50ZWQgZm9yIGdwaW8gYWNjZXNzCisgICAgbWFpbmx5IGludGVuZGVkIGZvciBncGlvIGFjY2VzcwogCiAKICAgICBDb3B5cmlnaHQgKEMpIDE5OTYsOTcsOTggUmFscGggIE1ldHpsZXIgKHJqa21AdGhwLnVuaS1rb2Vsbi5kZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY2FmZV9jY2ljLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2NhZmVfY2NpYy5jCmluZGV4IDU1ZmZkNjAuLjY2NDcwMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY2FmZV9jY2ljLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jYWZlX2NjaWMuYwpAQCAtMzgzLDcgKzM4Myw3IEBACiAJICogY2F1c2VzIHRoZSBkZXZpY2UgdG8gZGllLgogCSAqIFVzZSBhIGJ1c3ktd2FpdCBiZWNhdXNlIHdlIG9mdGVuIHNlbmQgYSBsYXJnZSBxdWFudGl0eSBvZiBzbWFsbAogCSAqIGNvbW1hbmRzIGF0LW9uY2U7IHVzaW5nIG1zbGVlcCgpIHdvdWxkIGNhdXNlIGEgbG90IG9mIGNvbnRleHQKLQkgKiBzd2l0Y2hlcyB3aGljaCB0YWtlIGxvbmdlciB0aGFuIDJtcywgcmVzdWx0aW5nIGluIGEgbm90aWNhYmxlCisJICogc3dpdGNoZXMgd2hpY2ggdGFrZSBsb25nZXIgdGhhbiAybXMsIHJlc3VsdGluZyBpbiBhIG5vdGljZWFibGUKIAkgKiBib290LXRpbWUgYW5kIGNhcHR1cmUtc3RhcnQgZGVsYXlzLgogCSAqLwogCW1kZWxheSgyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWF2LWNvcmUuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWF2LWNvcmUuaAppbmRleCAxODhjOWMzLi5lOWM2OWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1hdi1jb3JlLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtYXYtY29yZS5oCkBAIC0xMDksNyArMTA5LDcgQEAKIAlpbnQgaXNfaW5pdGlhbGl6ZWQ7CiAKIAkvKgotCSAqIFRoZSBWQkkgc2xpY2VyIHN0YXJ0cyBvcGVyYXRpbmcgYW5kIGNvdW50aW5nIGxpbmVzLCBiZWdpbmluZyBhdAorCSAqIFRoZSBWQkkgc2xpY2VyIHN0YXJ0cyBvcGVyYXRpbmcgYW5kIGNvdW50aW5nIGxpbmVzLCBiZWdpbm5pbmcgYXQKIAkgKiBzbGljZXIgbGluZSBjb3VudCBvZiAxLCBhdCBEIGxpbmVzIGFmdGVyIHRoZSBkZWFzc2VydGlvbiBvZiBWUkVTRVQuCiAJICogVGhpcyBzdGFyaW5nIGZpZWxkIGxpbmUsIFMsIGlzIDYgKCYgMzE5KSBvciAxMCAoJiAyNzMpIGZvciA2MjUgb3IgNTI1CiAJICogbGluZSBzeXN0ZW1zIHJlc3BlY3RpdmVseS4gIFNsaWNlZCBhbmNpbGxhcnkgZGF0YSBjYXB0dXJlZCBvbiBWQkkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1pb2N0bC5jCmluZGV4IDg2YzMwYjkuLjRmMDQxYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWlvY3RsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtaW9jdGwuYwpAQCAtMzEyLDcgKzMxMiw3IEBACiAKIAkvKgogCSAqIFNldCB0aGUgZGlnaXRpemVyIHJlZ2lzdGVycyBmb3IgcmF3IGFjdGl2ZSBWQkkuCi0JICogTm90ZSBjeDE4X2F2X3ZiaV93aXBlcyBvdXQgYWxvdCBvZiB0aGUgcGFzc2VkIGluIGZtdCB1bmRlciB2YWxpZAorCSAqIE5vdGUgY3gxOF9hdl92Ymlfd2lwZXMgb3V0IGEgbG90IG9mIHRoZSBwYXNzZWQgaW4gZm10IHVuZGVyIHZhbGlkCiAJICogY2FsbGluZyBjb25kaXRpb25zCiAJICovCiAJcmV0ID0gdjRsMl9zdWJkZXZfY2FsbChjeC0+c2RfYXYsIHZiaSwgc19yYXdfZm10LCAmZm10LT5mbXQudmJpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LXZiaS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtdmJpLmMKaW5kZXggNTgyMjI3NS4uNmQzMTIxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtdmJpLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtdmJpLmMKQEAgLTI5LDcgKzI5LDcgQEAKIC8qCiAgKiBSYXN0ZXIgUmVmZXJlbmNlL1Byb3RlY3Rpb24gKFJQKSBieXRlcywgdXNlZCBpbiBTdGFydC9FbmQgQWN0aXZlCiAgKiBWaWRlbyBjb2RlcyBlbWl0dGVkIGZyb20gdGhlIGRpZ2l0emVyIGluIFZJUCAxLnggbW9kZSwgdGhhdCBmbGFnIHRoZSBzdGFydAotICogb2YgVkJJIHNhbXBsZSBvciBWQkkgYW5jaWxsaWFyeSBkYXRhIHJlZ2lvbnMgaW4gdGhlIGRpZ2l0aWFsIHJhdHNlciBsaW5lLgorICogb2YgVkJJIHNhbXBsZSBvciBWQkkgYW5jaWxsYXJ5IGRhdGEgcmVnaW9ucyBpbiB0aGUgZGlnaXRpYWwgcmF0c2VyIGxpbmUuCiAgKgogICogVGFzayBGaWVsZEV2ZW4gVmVydGljYWxCbGFuayBIb3Jpem9udGFsQmxhbmsgMCAwIDAgMAogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCmluZGV4IDYyODQzZDMuLjI4MGRmNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LWF2Y29yZS5jCkBAIC0yNTc3LDcgKzI1NzcsNyBAQAogCQkJYnJlYWs7CiAKIAkJY2FzZSA2OgkvKiB0czEgcGFyYWxsZWwgbW9kZSAqLwotCQkJY3gyMzF4eF9pbmZvKCIlczogc2V0IHRzMSBwYXJyYWxsZWwgbW9kZSByZWdpc3RlcnNcbiIsCisJCQljeDIzMXh4X2luZm8oIiVzOiBzZXQgdHMxIHBhcmFsbGVsIG1vZGUgcmVnaXN0ZXJzXG4iLAogCQkJCSAgICAgX19mdW5jX18pOwogCQkJc3RhdHVzID0gY3gyMzF4eF9tb2RlX3JlZ2lzdGVyKGRldiwgVFNfTU9ERV9SRUcsIDB4MTAwKTsKIAkJCXN0YXR1cyA9IGN4MjMxeHhfbW9kZV9yZWdpc3RlcihkZXYsIFRTMV9DRkdfUkVHLCAweDQwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12YmkuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZiaS5jCmluZGV4IDFkOTE0NDguLjFjN2E0ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZiaS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZiaS5jCkBAIC02MzEsNyArNjMxLDcgQEAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgY3gyMzF4eF9idWZmZXIsIHZiLnF1ZXVlKTsKIAotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtdmlkZW8uYwppbmRleCBmZmQ1YWY5Li5hNjljMjRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZpZGVvLmMKQEAgLTMwOSw3ICszMDksNyBAQAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBjeDIzMXh4X2J1ZmZlciwgdmIucXVldWUpOwogCi0JLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bGwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCisJLyogQ2xlYW5zIHVwIGJ1ZmZlciAtIFVzZWZ1bCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KIAlvdXRwID0gdmlkZW9idWZfdG9fdm1hbGxvYygmKCpidWYpLT52Yik7CiAJbWVtc2V0KG91dHAsIDAsICgqYnVmKS0+dmIuc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jaW1heDIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jaW1heDIuYwppbmRleCAyMDliOTcxLi5jOWYxNWQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY2ltYXgyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2NpbWF4Mi5jCkBAIC00NDksNyArNDQ5LDcgQEAKIAkJMHgwNCwgLyogYWNrIGFjdGl2ZSBsb3cgKi8KIAkJMHgwMCwgLyogTE9DSyA9IDAgKi8KIAkJMHgzMywgLyogc2VyaWFsIG1vZGUsIHJpc2luZyBpbiwgcmlzaW5nIG91dCwgTVNCIGZpcnN0Ki8KLQkJMHgzMSwgLyogc3luY3Jvbml6YXRpb24gKi8KKwkJMHgzMSwgLyogc3luY2hyb25pemF0aW9uICovCiAJfTsKIAlpbnQgcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUuaAppbmRleCA4ZGIyNzk3Li5jMTg2NDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LmgKQEAgLTIxNCw3ICsyMTQsNyBAQAogCiAJLyogVmVuZG9ycyBjYW4gYW5kIGRvIHJ1biB0aGUgUENJZSBicmlkZ2UgYXQgZGlmZmVyZW50CiAJICogY2xvY2sgcmF0ZXMsIGRyaXZlbiBwaHlzaWNhbGx5IGJ5IGNyeXN0YWxzIG9uIHRoZSBQQ0JzLgotCSAqIFRoZSBjb3JlIGhhcyB0byBhY2NvbW9kYXRlIHRoaXMuIFRoaXMgYWxsb3dzIHRoZSB1c2VyCisJICogVGhlIGNvcmUgaGFzIHRvIGFjY29tbW9kYXRlIHRoaXMuIFRoaXMgYWxsb3dzIHRoZSB1c2VyCiAJICogdG8gYWRkIG5ldyBib2FyZHMgd2l0aCBuZXcgZnJlcXVlbmN5cy4gVGhlIHZhbHVlIGlzCiAJICogZXhwcmVzc2VkIGluIEh6LgogCSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjU4NDAvY3gyNTg0MC1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjU4NDAvY3gyNTg0MC1jb3JlLmMKaW5kZXggMzU3OTZlMC4uYjdlZTJhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDI1ODQwL2N4MjU4NDAtY29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyNTg0MC9jeDI1ODQwLWNvcmUuYwpAQCAtMiw3ICsyLDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQgVWxmIEVrbHVuZAogICoKLSAqIEJhc2VkIG9uIHRoZSBzYWE3MTE1IGRyaXZlciBhbmQgb24gdGhlIGZpcnN0IHZlcmlzb24gb2YgQ2hyaXMgS2VubmVkeSdzCisgKiBCYXNlZCBvbiB0aGUgc2FhNzExNSBkcml2ZXIgYW5kIG9uIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIENocmlzIEtlbm5lZHkncwogICogY3gyNTg0MCBkcml2ZXIuCiAgKgogICogQ2hhbmdlcyBieSBUeWxlciBUcmFmZm9yZCA8dGF0cmFmZm9yZEBjb21jYXN0Lm5ldD4KQEAgLTQ0NSw3ICs0NDUsNyBAQAogCWN4MjU4NDBfd3JpdGUoY2xpZW50LCAweDkxOCwgMHhhMCk7CiAJY3gyNTg0MF93cml0ZShjbGllbnQsIDB4OTE5LCAweDAxKTsKIAotCS8qIHN0ZXJlbyBwcmVmZXJlZCAqLworCS8qIHN0ZXJlbyBwcmVmZXJyZWQgKi8KIAljeDI1ODQwX3dyaXRlKGNsaWVudCwgMHg4MDksIDB4MDQpOwogCS8qIEFDOTcgc2hpZnQgKi8KIAljeDI1ODQwX3dyaXRlKGNsaWVudCwgMHg4Y2YsIDB4MGYpOwpAQCAtNTQ2LDcgKzU0Niw3IEBACiAJICogQXV4IFBMTAogCSAqIEluaXRpYWwgc2V0dXAgZm9yIGF1ZGlvIHNhbXBsZSBjbG9jazoKIAkgKiA0OCBrc3BzLCAxNiBiaXRzL3NhbXBsZSwgeDE2MCBtdWx0aXBsaWVyID0gMTIyLjg4IE1IegotCSAqIEludGlhbCBJMlMgb3V0cHV0L21hc3RlciBjbG9jayg/KToKKwkgKiBJbml0aWFsIEkyUyBvdXRwdXQvbWFzdGVyIGNsb2NrKD8pOgogCSAqIDQ4IGtzcHMsIDE2IGJpdHMvc2FtcGxlLCB4MTYgbXVsdGlwbGllciA9IDEyLjI4OCBNSHoKIAkgKi8KIAlzd2l0Y2ggKHN0YXRlLT5pZCkgewpAQCAtOTAzLDcgKzkwMyw3IEBACiAJfSBlbHNlIGlmIChzdGQgJiBWNEwyX1NURF9QQUwpIHsKIAkJLyogQXV0b2RldGVjdCBhdWRpbyBzdGFuZGFyZCBhbmQgYXVkaW8gc3lzdGVtICovCiAJCWN4MjU4NDBfd3JpdGUoY2xpZW50LCAweDgwOCwgMHhmZik7Ci0JCS8qIFNpbmNlIHN5c3RlbSBQQUwtTCBpcyBwcmV0dHkgbXVjaCBub24tZXhpc3RhbnQgYW5kCisJCS8qIFNpbmNlIHN5c3RlbSBQQUwtTCBpcyBwcmV0dHkgbXVjaCBub24tZXhpc3RlbnQgYW5kCiAJCSAgIG5vdCB1c2VkIGJ5IGFueSBwdWJsaWMgYnJvYWRjYXN0IG5ldHdvcmssIGZvcmNlCiAJCSAgIDYuNSBNSHogY2FycmllciB0byBiZSBpbnRlcnByZXRlZCBhcyBTeXN0ZW0gREssCiAJCSAgIHRoaXMgYXZvaWRzIERLIGF1ZGlvIGRldGVjdGlvbiBpbnN0YWJpbGl0eSAqLwpAQCAtMTg1MSw3ICsxODUxLDcgQEAKIAkJCXJldCA9IFY0TDJfSURFTlRfQ1gyMzg4NV9BVjsKIAkJfSBlbHNlIHsKIAkJCS8qIENYMjM4ODcgaGFzIGEgYnJva2VuIERJRiwgYnV0IHRoZSByZWdpc3RlcnMKLQkJCSAqIGFwcGVhciB2YWxpZCAoYnV0IHVuc2VkKSwgZ29vZCBlbm91Z2ggdG8gZGV0ZWN0LiAqLworCQkJICogYXBwZWFyIHZhbGlkIChidXQgdW51c2VkKSwgZ29vZCBlbm91Z2ggdG8gZGV0ZWN0LiAqLwogCQkJcmV0ID0gVjRMMl9JREVOVF9DWDIzODg3X0FWOwogCQl9CiAJfSBlbHNlIGlmIChjeDI1ODQwX3JlYWQ0KGNsaWVudCwgMHgzMDApICYgMHgwZmZmZmZmZikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL2RtNjQ0eF9jY2RjLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvZG02NDR4X2NjZGMuYwppbmRleCA0OTBhYWZiLi5jOGIzMmMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvZG02NDR4X2NjZGMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvZG02NDR4X2NjZGMuYwpAQCAtMjU4LDcgKzI1OCw3IEBACiAJLyoKIAkgKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIEZQQyB0YWJsZSBpZiBjdXJyZW50CiAJICogRlBDIHRhYmxlIGJ1ZmZlciBpcyBub3QgYmlnIGVub3VnaCB0bwotCSAqIGFjY29tb2RhdGUgRlBDIE51bWJlciByZXF1ZXN0ZWQKKwkgKiBhY2NvbW1vZGF0ZSBGUEMgTnVtYmVyIHJlcXVlc3RlZAogCSAqLwogCWlmIChyYXdfcGFyYW1zLT5mYXVsdF9weGwuZnBfbnVtICE9IGNvbmZpZ19wYXJhbXMtPmZhdWx0X3B4bC5mcF9udW0pIHsKIAkJaWYgKGZwY19waHlzYWRkciAhPSBOVUxMKSB7CkBAIC00MzYsNyArNDM2LDcgQEAKIAogCS8qCiAJICogY29uZmlndXJlIHRoZSBob3Jpem9udGFsIGxpbmUgb2Zmc2V0LiBUaGlzIHNob3VsZCBiZSBhCi0JICogb24gMzIgYnl0ZSBib25kYXJ5LiBTbyBjbGVhciBMU0IgNSBiaXRzCisJICogb24gMzIgYnl0ZSBib3VuZGFyeS4gU28gY2xlYXIgTFNCIDUgYml0cwogCSAqLwogCXJlZ3coKChwYXJhbXMtPndpbi53aWR0aCAqIDIgICsgMzEpICYgfjB4MWYpLCBDQ0RDX0hTSVpFX09GRik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYwppbmRleCA3MWU5NjFlNS4uNWIzOGZjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL3ZwZmVfY2FwdHVyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYwpAQCAtMTY5MSw3ICsxNjkxLDcgQEAKIAkJZ290byB1bmxvY2tfb3V0OwogCX0KIAotCS8qIGFkanVzdCB0aGUgd2lkdGggdG8gMTYgcGl4ZWwgYm91bmRyeSAqLworCS8qIGFkanVzdCB0aGUgd2lkdGggdG8gMTYgcGl4ZWwgYm91bmRhcnkgKi8KIAljcm9wLT5jLndpZHRoID0gKChjcm9wLT5jLndpZHRoICsgMTUpICYgfjB4Zik7CiAKIAkvKiBtYWtlIHN1cmUgcGFyYW1ldGVycyBhcmUgdmFsaWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKaW5kZXggYTgzMTMxYi4uN2I2NDYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKQEAgLTM3Nyw3ICszNzcsNyBAQAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBlbTI4eHhfYnVmZmVyLCB2Yi5xdWV1ZSk7CiAKLQkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsbCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KKwkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLwogCW91dHAgPSB2aWRlb2J1Zl90b192bWFsbG9jKCYoKmJ1ZiktPnZiKTsKIAltZW1zZXQob3V0cCwgMCwgKCpidWYpLT52Yi5zaXplKTsKIApAQCAtNDA0LDcgKzQwNCw3IEBACiAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgZW0yOHh4X2J1ZmZlciwgdmIucXVldWUpOwotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAweDAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dsODYwL2dsODYwLW1pMTMyMC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nbDg2MC9nbDg2MC1taTEzMjAuYwppbmRleCBjMjc2YTdkLi5iNTcxNjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dsODYwL2dsODYwLW1pMTMyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ2w4NjAvZ2w4NjAtbWkxMzIwLmMKQEAgLTIwMSw3ICsyMDEsNyBAQAogCXNkLT52bWF4LmJhY2tsaWdodCAgPSAgMjsKIAlzZC0+dm1heC5icmlnaHRuZXNzID0gIDg7CiAJc2QtPnZtYXguc2hhcnBuZXNzICA9ICA3OwotCXNkLT52bWF4LmNvbnRyYXN0ICAgPSAgMDsgLyogMTAgYnV0IG5vdCB3b3JraW5nIHdpdGggdGlocyBkcml2ZXIgKi8KKwlzZC0+dm1heC5jb250cmFzdCAgID0gIDA7IC8qIDEwIGJ1dCBub3Qgd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyICovCiAJc2QtPnZtYXguZ2FtbWEgICAgICA9IDQwOwogCXNkLT52bWF4Lmh1ZSAgICAgICAgPSAgNSArIDE7CiAJc2QtPnZtYXguc2F0dXJhdGlvbiA9ICA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jCmluZGV4IDljNmE2NDMuLmU1MjZhYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ3NwY2EuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dzcGNhLmMKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCQl9CiAKIAkJLyogdGhlIGJhbmR3aWR0aCBpcyBub3Qgd2lkZSBlbm91Z2gKLQkJICogbmVnb2NpYXRlIG9yIHRyeSBhIGxvd2VyIGFsdGVybmF0ZSBzZXR0aW5nICovCisJCSAqIG5lZ290aWF0ZSBvciB0cnkgYSBsb3dlciBhbHRlcm5hdGUgc2V0dGluZyAqLwogCQlQREVCVUcoRF9FUlJ8RF9TVFJFQU0sCiAJCQkiYmFuZHdpZHRoIG5vdCB3aWRlIGVub3VnaCAtIHRyeWluZyBhZ2FpbiIpOwogCQltc2xlZXAoMjApOwkvKiB3YWl0IGZvciBraWxsIGNvbXBsZXRlICovCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAKIAkvKiByZWxlYXNlIHRoZSBkZXZpY2UgKi8KLQkvKiAodGhpcyB3aWxsIGNhbGwgZ3NwY2FfcmVsZWFzZSgpIGltbWVkaWF0bHkgb3Igb24gbGFzdCBjbG9zZSkgKi8KKwkvKiAodGhpcyB3aWxsIGNhbGwgZ3NwY2FfcmVsZWFzZSgpIGltbWVkaWF0ZWx5IG9yIG9uIGxhc3QgY2xvc2UpICovCiAJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJmdzcGNhX2Rldi0+dmRldik7CiAKIC8qCVBERUJVRyhEX1BST0JFLCAiZGlzY29ubmVjdCBjb21wbGV0ZSIpOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tYXJzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYwppbmRleCBjYjRkMGJmLi4wMTk2MjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYwpAQCAtMzYxLDcgKzM2MSw3IEBACiAJCW1pX3coZ3NwY2FfZGV2LCBpICsgMSwgbWlfZGF0YVtpXSk7CiAKIAlkYXRhWzBdID0gMHgwMDsKLQlkYXRhWzFdID0gMHg0ZDsJCS8qIElTT0MgdHJhbnNmZXJpbmcgZW5hYmxlLi4uICovCisJZGF0YVsxXSA9IDB4NGQ7CQkvKiBJU09DIHRyYW5zZmVycmluZyBlbmFibGUuLi4gKi8KIAlyZWdfdyhnc3BjYV9kZXYsIDIpOwogCiAJZ3NwY2FfZGV2LT5jdHJsX2luYWMgPSAwOyAvKiBhY3RpdmF0ZSB0aGUgaWxsdW1pbmF0b3IgY29udHJvbHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbXI5NzMxMGEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbXI5NzMxMGEuYwppbmRleCAzODg0YzlkLi45N2U1MDc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21yOTczMTBhLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tcjk3MzEwYS5jCkBAIC00NjksNyArNDY5LDcgQEAKIHN0YXRpYyBpbnQgaXNvY19lbmFibGUoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQogewogCWdzcGNhX2Rldi0+dXNiX2J1ZlswXSA9IDB4MDA7Ci0JZ3NwY2FfZGV2LT51c2JfYnVmWzFdID0gMHg0ZDsgIC8qIElTT0MgdHJhbnNmZXJpbmcgZW5hYmxlLi4uICovCisJZ3NwY2FfZGV2LT51c2JfYnVmWzFdID0gMHg0ZDsgIC8qIElTT0MgdHJhbnNmZXJyaW5nIGVuYWJsZS4uLiAqLwogCXJldHVybiBtcl93cml0ZShnc3BjYV9kZXYsIDIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL292NTE5LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL292NTE5LmMKaW5kZXggZmQxYjYwOC4uMzZhNDZmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9vdjUxOS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evb3Y1MTkuYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAgICBsYXJnZXIgdGhlbiBuZWNlc3NhcnksIGhvd2V2ZXIgdGhleSBuZWVkIHRvIGJlIHRoaXMgYmlnIGFzIHRoZSBvdjUxMSAvCiAgICBvdjUxOCBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpc29jIGZyYW1lLCB1c2luZyAwIHBhZGRpbmcgYnl0ZXMgd2hlbgogICAgaXQgZG9lc24ndCBoYXZlIGFueSBkYXRhLiBTbyB3aXRoIGxvdyBmcmFtZXJhdGVzIHRoZSBhbW91bnQgb2YgZGF0YQotICAgdHJhbnNmZXJlZCBjYW4gYmVjb21lIHF1aXRlIGxhcmdlIChsaWJ2NGwgd2lsbCByZW1vdmUgYWxsIHRoZSAwIHBhZGRpbmcKKyAgIHRyYW5zZmVycmVkIGNhbiBiZWNvbWUgcXVpdGUgbGFyZ2UgKGxpYnY0bCB3aWxsIHJlbW92ZSBhbGwgdGhlIDAgcGFkZGluZwogICAgaW4gdXNlcnNwYWNlKS4gKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0IG92NTE4X3ZnYV9tb2RlW10gPSB7CiAJezMyMCwgMjQwLCBWNEwyX1BJWF9GTVRfT1Y1MTgsIFY0TDJfRklFTERfTk9ORSwKQEAgLTQzNjgsNyArNDM2OCw3IEBACiAJCQkJZ3NwY2FfZGV2LT5sYXN0X3BhY2tldF90eXBlID0gRElTQ0FSRF9QQUNLRVQ7CiAJCQkJcmV0dXJuOwogCQkJfQotCQkJLyogQWRkIDExIGJ5dGUgZm9vdGVyIHRvIGZyYW1lLCBtaWdodCBiZSB1c2VmdWxsICovCisJCQkvKiBBZGQgMTEgYnl0ZSBmb290ZXIgdG8gZnJhbWUsIG1pZ2h0IGJlIHVzZWZ1bCAqLwogCQkJZ3NwY2FfZnJhbWVfYWRkKGdzcGNhX2RldiwgTEFTVF9QQUNLRVQsIGluLCAxMSk7CiAJCQlyZXR1cm47CiAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Nvbml4Yi5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zb25peGIuYwppbmRleCA1YTA4NzM4Li4xNDZiNDU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Nvbml4Yi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc29uaXhiLmMKQEAgLTgyNyw3ICs4MjcsNyBAQAogCQkgICBwb3NzaWJsZSB0byB1c2UgbGVzcyBleHBvc3VyZSB0aGVuIHdoYXQgdGhlIGZwcyBtYXhpbXVtCiAJCSAgIGFsbG93cyBieSBzZXR0aW5nIHJlZ2lzdGVyIDEwLiByZWdpc3RlciAxMCBjb25maWd1cmVzIHRoZQogCQkgICBhY3R1YWwgZXhwb3N1cmUgYXMgcXVvdGllbnQgb2YgdGhlIGZ1bGwgZXhwb3N1cmUsIHdpdGggMAotCQkgICBiZWluZyBubyBleHBvc3VyZSBhdCBhbGwgKG5vdCB2ZXJ5IHVzZWZ1bGwpIGFuZCByZWcxMF9tYXgKKwkJICAgYmVpbmcgbm8gZXhwb3N1cmUgYXQgYWxsIChub3QgdmVyeSB1c2VmdWwpIGFuZCByZWcxMF9tYXgKIAkJICAgYmVpbmcgbWF4IGV4cG9zdXJlIHBvc3NpYmxlIGF0IHRoYXQgZnJhbWVyYXRlLgogCiAJCSAgIFRoZSBjb2RlIG1hcHMgb3VyIDAgLSA1MTAgbXMgZXhwb3N1cmUgY3RybCB0byB0aGVzZSAyCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3NwY2E1MDAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCmluZGV4IDQ1NTUyYzMuLjNlNzY5NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCkBAIC02MDcsNyArNjA3LDcgQEAKIAlyZWdfdyhnc3BjYV9kZXYsIDB4MDAsIDB4ODg4MCwgMik7CiAJLyogZmFtaWx5IGNhbSBRdWlja3NtYXJ0IHN0dWZmICovCiAJcmVnX3coZ3NwY2FfZGV2LCAweDAwLCAweDgwMGEsIDB4MDApOwotCS8qIFNldCBhZ2MgdHJhbnNmZXI6IHN5bmNlZCBpbmJldHdlZW4gZnJhbWVzICovCisJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGJldHdlZW4gZnJhbWVzICovCiAJcmVnX3coZ3NwY2FfZGV2LCAweDAwLCAweDgyMGYsIDB4MDEpOwogCS8qIEluaXQgU0RSQU0gLSBuZWVkZWQgZm9yIFNEUkFNIGFjY2VzcyAqLwogCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4NzBhLCAweDA0KTsKQEAgLTgzMSw3ICs4MzEsNyBAQAogCiAJCS8qIGZhbWlseWNhbSBRdWlja3NtYXJ0IHBvY2tldERWIHN0dWZmICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4MDBhLCAweDAwKTsKLQkJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGluYmV0d2VlbiBmcmFtZXMgKi8KKwkJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGJldHdlZW4gZnJhbWVzICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4MjBmLCAweDAxKTsKIAkJLyogSW5pdCBTRFJBTSAtIG5lZWRlZCBmb3IgU0RSQU0gYWNjZXNzICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4NzBhLCAweDA0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwOC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKaW5kZXggMzQ4MzE5My4uNDFkY2U0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKQEAgLTU5Miw3ICs1OTIsNyBAQAogLyogVGhpcyBsaW5lIHNlZW1zIHRvIHNldHVwIHRoZSBmcmFtZS9jYW52YXMgKi8KIAl7MHgwMDBmLCAweDg0MDJ9LAogCi0vKiBUaGVlc2UgNiBsaW5lcyBhcmUgbmVlZGVkIHRvIHN0YXJ0dXAgdGhlIHdlYmNhbSAqLworLyogVGhlc2UgNiBsaW5lcyBhcmUgbmVlZGVkIHRvIHN0YXJ0dXAgdGhlIHdlYmNhbSAqLwogCXsweDAwOTAsIDB4ODExMH0sCiAJezB4MDAwMSwgMHg4MTE0fSwKIAl7MHgwMDAxLCAweDgxMTR9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcTkwNS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcTkwNS5jCmluZGV4IDJlOWMwNjEuLjViYTk2YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3E5MDUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3NxOTA1LmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIEhpc3RvcnkgYW5kIEFja25vd2xlZGdtZW50cwogICoKICAqIFRoZSBvcmlnaW5hbCBMaW51eCBkcml2ZXIgZm9yIFNROTA1IGJhc2VkIGNhbWVyYXMgd2FzIHdyaXR0ZW4gYnkKLSAqIE1hcmNlbGwgTGVuZ3llbCBhbmQgZnVydGVyIGRldmVsb3BlZCBieSBtYW55IG90aGVyIGNvbnRyaWJ1dGVycworICogTWFyY2VsbCBMZW5neWVsIGFuZCBmdXJ0ZXIgZGV2ZWxvcGVkIGJ5IG1hbnkgb3RoZXIgY29udHJpYnV0b3JzCiAgKiBhbmQgaXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zcWNhbS8KICAqCiAgKiBUaGlzIGRyaXZlciB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlIHJldmVyc2UgZW5naW5lZXJpbmcgd29yayBkb25lIGZvcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zdHYwNnh4L3N0djA2eHhfaGRjcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zdHYwNnh4L3N0djA2eHhfaGRjcy5jCmluZGV4IDE3NTMxYjQuLmI4MTU2ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3R2MDZ4eC9zdHYwNnh4X2hkY3MuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9oZGNzLmMKQEAgLTU2OSw3ICs1NjksNyBAQAogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCi0JLyogRW5hYmxlIGNvbnRpbm91cyBmcmFtZSBjYXB0dXJlLCBiaXQgMjogc3RvcCB3aGVuIGZyYW1lIGNvbXBsZXRlICovCisJLyogRW5hYmxlIGNvbnRpbnVvdXMgZnJhbWUgY2FwdHVyZSwgYml0IDI6IHN0b3Agd2hlbiBmcmFtZSBjb21wbGV0ZSAqLwogCWVyciA9IHN0djA2eHhfd3JpdGVfc2Vuc29yKHNkLCBIRENTX1JFR19DT05GSUcoc2QpLCBCSVQoMykpOwogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9oZXhpdW1fZ2VtaW5pLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYwppbmRleCBjZGY4YjE5Li5jYmM1MDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYwpAQCAtMjYxLDcgKzI2MSw3IEBACiAKIC8qIHRoZSBzYWE3MTQ2IHByb3ZpZGVzIHNvbWUgY29udHJvbHMgKGJyaWdodG5lc3MsIGNvbnRyYXN0LCBzYXR1cmF0aW9uKQogICAgd2hpY2ggZ2V0cyByZWdpc3RlcmVkICphZnRlciogdGhpcyBmdW5jdGlvbi4gYmVjYXVzZSBvZiB0aGlzIHdlIGhhdmUKLSAgIHRvIHJldHVybiB3aXRoIGEgdmFsdWUgIT0gMCBldmVuIGlmIHRoZSBmdW5jdGlvbiBzdWNjZWRlZC4uICovCisgICB0byByZXR1cm4gd2l0aCBhIHZhbHVlICE9IDAgZXZlbiBpZiB0aGUgZnVuY3Rpb24gc3VjY2VlZGVkLi4gKi8KIHN0YXRpYyBpbnQgdmlkaW9jX3F1ZXJ5Y3RybChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqcWMpCiB7CiAJc3RydWN0IHNhYTcxNDZfZGV2ICpkZXYgPSAoKHN0cnVjdCBzYWE3MTQ2X2ZoICopZmgpLT5kZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHYtZmlybXdhcmUuYwppbmRleCA0ZGYwMTk0Li4xNGExY2VhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWZpcm13YXJlLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogewogCWludCBpOwogCi0JLyogbWFpbGJveCBpcyBwcmVjZWVkZWQgYnkgYSAxNiBieXRlICdtYWdpYyBjb29raWUnIHN0YXJ0aW5nIGF0IGEgMjU2LWJ5dGUKKwkvKiBtYWlsYm94IGlzIHByZWNlZGVkIGJ5IGEgMTYgYnl0ZSAnbWFnaWMgY29va2llJyBzdGFydGluZyBhdCBhIDI1Ni1ieXRlCiAJICAgYWRkcmVzcyBib3VuZGFyeSAqLwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpICs9IDB4MTAwKSB7CiAJCWlmIChyZWFkbChtZW0gKyBpKSAgICAgID09IDB4MTIzNDU2NzggJiYKQEAgLTM3Nyw3ICszNzcsNyBAQAogCQkJICAiUmVsb2FkaW5nXG4iLCB3aGVyZSk7CiAJCXJlcyA9IGl2dHZfZmlybXdhcmVfcmVzdGFydChpdHYpOwogCQkvKgotCQkgKiBFdmVuIGlmIHJlc3RhcnRlZCBvaywgc3RpbGwgc2lnbmFsIGEgcHJvYmxlbSBoYWQgb2NjdXJlZC4KKwkJICogRXZlbiBpZiByZXN0YXJ0ZWQgb2ssIHN0aWxsIHNpZ25hbCBhIHByb2JsZW0gaGFkIG9jY3VycmVkLgogCQkgKiBUaGUgY2FsbGVyIGNhbiBjb21lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBhZ2FpbiB0byBjaGVjawogCQkgKiBpZiB0aGluZ3MgYXJlIHJlYWxseSBvayBhZnRlciB0aGUgcmVzdGFydC4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0dmZiLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0dmZiLmMKaW5kZXggZjAzMTZkMC4uMTcyNDc0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHZmYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2ZmIuYwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKIAkJa21hbGxvYyhzaXplb2YodTMyKSAqIDE2LCBHRlBfS0VSTkVMfF9fR0ZQX05PV0FSTik7CiAKIAlpZiAoIW9pLT5pdnR2ZmJfaW5mby5wc2V1ZG9fcGFsZXR0ZSkgewotCQlJVlRWRkJfRVJSKCJhYm9ydCwgdW5hYmxlIHRvIGFsbG9jIHBzZXVkbyBwYWxsZXRlXG4iKTsKKwkJSVZUVkZCX0VSUigiYWJvcnQsIHVuYWJsZSB0byBhbGxvYyBwc2V1ZG8gcGFsZXR0ZVxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9tc3AzNDAwLWRyaXZlci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9tc3AzNDAwLWRyaXZlci5jCmluZGV4IGIxNzYzYWMuLjgxMjY2MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1kcml2ZXIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL21zcDM0MDAtZHJpdmVyLmMKQEAgLTY5LDcgKzY5LDcgQEAKIC8qIG1vZHVsZSBwYXJhbWV0ZXJzICovCiBzdGF0aWMgaW50IG9wbW9kZSAgID0gT1BNT0RFX0FVVE87CiBpbnQgbXNwX2RlYnVnOwkJIC8qIG1zcF9kZWJ1ZyBvdXRwdXQgKi8KLWludCBtc3Bfb25jZTsJCSAvKiBubyBjb250aW5vdXMgc3RlcmVvIG1vbml0b3JpbmcgKi8KK2ludCBtc3Bfb25jZTsJCSAvKiBubyBjb250aW51b3VzIHN0ZXJlbyBtb25pdG9yaW5nICovCiBpbnQgbXNwX2Ftc291bmQ7CSAvKiBoYXJkLXdpcmUgQU0gc291bmQgYXQgNi41IEh6IChmcmFuY2UpLAogCQkJICAgIHRoZSBhdXRvc2NhbiBzZWVtcyB3b3JrIHdlbGwgb25seSB3aXRoIEZNLi4uICovCiBpbnQgbXNwX3N0YW5kYXJkID0gMTsgICAgLyogT3ZlcnJpZGUgYXV0byBkZXRlY3Qgb2YgYXVkaW8gbXNwX3N0YW5kYXJkLApAQCAtNTUxLDcgKzU1MSw3IEBACiAJc3dpdGNoIChzdGF0ZS0+bW9kZSkgewogCQljYXNlIE1TUF9NT0RFX0FNX0RFVEVDVDogcCA9ICJBTSAoZm9yIGNhcnJpZXIgZGV0ZWN0KSI7IGJyZWFrOwogCQljYXNlIE1TUF9NT0RFX0ZNX1JBRElPOiBwID0gIkZNIFJhZGlvIjsgYnJlYWs7Ci0JCWNhc2UgTVNQX01PREVfRk1fVEVSUkE6IHAgPSAiVGVycmVzdGlhbCBGTS1tb25vL3N0ZXJlbyI7IGJyZWFrOworCQljYXNlIE1TUF9NT0RFX0ZNX1RFUlJBOiBwID0gIlRlcnJlc3RyaWFsIEZNLW1vbm8vc3RlcmVvIjsgYnJlYWs7CiAJCWNhc2UgTVNQX01PREVfRk1fU0FUOiBwID0gIlNhdGVsbGl0ZSBGTS1tb25vIjsgYnJlYWs7CiAJCWNhc2UgTVNQX01PREVfRk1fTklDQU0xOiBwID0gIk5JQ0FNL0ZNIChCL0csIEQvSykiOyBicmVhazsKIAkJY2FzZSBNU1BfTU9ERV9GTV9OSUNBTTI6IHAgPSAiTklDQU0vRk0gKEkpIjsgYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL21zcDM0MDAta3RocmVhZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCmluZGV4IGIzNzZmY2QuLjgwMzg3ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCkBAIC04Nyw3ICs4Nyw3IEBACiAJCXstOCwgLTgsIDQsIDYsIDc4LCAxMDd9LAogCQlNU1BfQ0FSUklFUigxMC43KSwgTVNQX0NBUlJJRVIoMTAuNyksCiAJCTB4MDBkMCwgMHgwNDgwLCAweDAwMjAsIDB4MzAwMAotCX0sIHsJLyogVGVycmVzdGlhbCBGTS1tb25vICsgRk0tc3RlcmVvICovCisJfSwgewkvKiBUZXJyZXN0cmlhbCBGTS1tb25vICsgRk0tc3RlcmVvICovCiAJCXszLCAxOCwgMjcsIDQ4LCA2NiwgNzJ9LAogCQl7MywgMTgsIDI3LCA0OCwgNjYsIDcyfSwKIAkJTVNQX0NBUlJJRVIoNS41KSwgTVNQX0NBUlJJRVIoNS41KSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXQuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXQuYwppbmRleCAwMjlhNGJhLi5kNGZlN2JjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwL29tYXBfdm91dC5jCkBAIC00NzMsNyArNDczLDcgQEAKIC8qCiAgKiBDb252ZXJ0IFY0TDIgcm90YXRpb24gdG8gRFNTIHJvdGF0aW9uCiAgKglWNEwyIHVuZGVyc3RhbmQgMCwgOTAsIDE4MCwgMjcwLgotICoJQ29udmVydCB0byAwLCAxLCAyIGFuZCAzIHJlcHNlY3RpdmVseSBmb3IgRFNTCisgKglDb252ZXJ0IHRvIDAsIDEsIDIgYW5kIDMgcmVzcGVjdGl2ZWx5IGZvciBEU1MKICAqLwogc3RhdGljIGludCB2NGwyX3JvdF90b19kc3Nfcm90KGludCB2NGwyX3JvdGF0aW9uLAogCQkJZW51bSBkc3Nfcm90YXRpb24gKnJvdGF0aW9uLCBib29sIG1pcnJvcikKQEAgLTExNDIsNyArMTE0Miw3IEBACiB9CiAKIC8qCi0gKiBCdWZmZXIgcXVldWUgZnVudGlvbiB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSB2aWRlb2J1ZiBsYXllciB3aGVuIF9RQlVGCisgKiBCdWZmZXIgcXVldWUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgdmlkZW9idWYgbGF5ZXIgd2hlbiBfUUJVRgogICogaW9jdGwgaXMgY2FsbGVkLiBJdCBpcyB1c2VkIHRvIGVucXVldWUgYnVmZmVyLCB3aGljaCBpcyByZWFkeSB0byBiZQogICogZGlzcGxheWVkLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0bGliLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0bGliLmMKaW5kZXggYjk0MWM3Ni4uMmFhNmE3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwL29tYXBfdm91dGxpYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXRsaWIuYwpAQCAtNTMsNyArNTMsNyBAQAogLyogR2l2ZW4gYSBuZXcgcmVuZGVyIHdpbmRvdyBpbiBuZXdfd2luLCBhZGp1c3QgdGhlIHdpbmRvdyB0byB0aGUKICAqIG5lYXJlc3Qgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24uICBUaGUgYWRqdXN0ZWQgd2luZG93IHBhcmFtZXRlcnMgYXJlCiAgKiByZXR1cm5lZCBpbiBuZXdfd2luLgotICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHdpbmRvdyBpcworICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc3NmdWwsIG9yIC1FSU5WQUwgaWYgdGhlIHJlcXVlc3RlZCB3aW5kb3cgaXMKICAqIGltcG9zc2libGUgYW5kIGNhbm5vdCByZWFzb25hYmx5IGJlIGFkanVzdGVkLgogICovCiBpbnQgb21hcF92b3V0X3RyeV93aW5kb3coc3RydWN0IHY0bDJfZnJhbWVidWZmZXIgKmZidWYsCkBAIC0xMDEsNyArMTAxLDcgQEAKICAqIHdpbGwgYWxzbyBiZSBhZGp1c3RlZCBpZiBuZWNlc3NhcnkuICBQcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGtlZXBpbmcgdGhlCiAgKiB0aGUgd2luZG93IGFzIGNsb3NlIHRvIHRoZSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiBhcyBwb3NzaWJsZS4gIElmCiAgKiBzdWNjZXNzZnVsLCBuZXdfd2luLCB2b3V0LT53aW4sIGFuZCBjcm9wIGFyZSB1cGRhdGVkLgotICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHByZXZpZXcgd2luZG93IGlzCisgKiBSZXR1cm5zIHplcm8gaWYgc3VjY2Vzc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHByZXZpZXcgd2luZG93IGlzCiAgKiBpbXBvc3NpYmxlIGFuZCBjYW5ub3QgcmVhc29uYWJseSBiZSBhZGp1c3RlZC4KICAqLwogaW50IG9tYXBfdm91dF9uZXdfd2luZG93KHN0cnVjdCB2NGwyX3JlY3QgKmNyb3AsCkBAIC0xNTUsNyArMTU1LDcgQEAKICAqIHdpbmRvdyB3b3VsZCBmYWxsIG91dHNpZGUgdGhlIGRpc3BsYXkgYm91bmRhcmllcywgdGhlIGNyb3BwaW5nIHJlY3RhbmdsZQogICogd2lsbCBhbHNvIGJlIGFkanVzdGVkIHRvIG1haW50YWluIHRoZSByZXNjYWxpbmcgcmF0aW9zLiAgSWYgc3VjY2Vzc2Z1bCwgY3JvcAogICogYW5kIHdpbiBhcmUgdXBkYXRlZC4KLSAqIFJldHVybnMgemVybyBpZiBzdWNjZXNmdWwsIG9yIC1FSU5WQUwgaWYgdGhlIHJlcXVlc3RlZCBjcm9wcGluZyByZWN0YW5nbGUgaXMKKyAqIFJldHVybnMgemVybyBpZiBzdWNjZXNzZnVsLCBvciAtRUlOVkFMIGlmIHRoZSByZXF1ZXN0ZWQgY3JvcHBpbmcgcmVjdGFuZ2xlIGlzCiAgKiBpbXBvc3NpYmxlIGFuZCBjYW5ub3QgcmVhc29uYWJseSBiZSBhZGp1c3RlZC4KICAqLwogaW50IG9tYXBfdm91dF9uZXdfY3JvcChzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAxX2NhbWVyYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwMV9jYW1lcmEuYwppbmRleCBlYWIzMWNiLi41OTU0YjkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAxX2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDFfY2FtZXJhLmMKQEAgLTY4Nyw3ICs2ODcsNyBAQAogCQkgKiBJbiBDT05USUcgbW9kZSwgdGhlIGN1cnJlbnQgYnVmZmVyIHBhcmFtZXRlcnMgaGFkIGFscmVhZHkKIAkJICogYmVlbiBlbnRlcmVkIGludG8gdGhlIERNQSBwcm9ncmFtbWluZyByZWdpc3RlciBzZXQgd2hpbGUgdGhlCiAJCSAqIGJ1ZmZlciB3YXMgZmV0Y2hlZCB3aXRoIHByZXBhcmVfbmV4dF92YigpLCB0aGV5IG1heSBoYXZlIGFsc28KLQkJICogYmVlbiB0cmFuc2ZlcmVkIGludG8gdGhlIHJ1bnRpbWUgc2V0IGFuZCBhbHJlYWR5IGFjdGl2ZSBpZgorCQkgKiBiZWVuIHRyYW5zZmVycmVkIGludG8gdGhlIHJ1bnRpbWUgc2V0IGFuZCBhbHJlYWR5IGFjdGl2ZSBpZgogCQkgKiB0aGUgRE1BIHN0aWxsIHJ1bm5pbmcuCiAJCSAqLwogCX0gZWxzZSB7CkBAIC04MzUsNyArODM1LDcgQEAKIAkJCQkvKgogCQkJCSAqIElmIGV4YWN0bHkgMiBzZ2J1ZnMgZnJvbSB0aGUgbmV4dCBzZ2xpc3QgaGF2ZQogCQkJCSAqIGJlZW4gcHJvZ3JhbW1lZCBpbnRvIHRoZSBETUEgZW5naW5lICh0aGUKLQkJCQkgKiBmcmlzdCBvbmUgYWxyZWFkeSB0cmFuc2ZlcmVkIGludG8gdGhlIERNQQorCQkJCSAqIGZpcnN0IG9uZSBhbHJlYWR5IHRyYW5zZmVycmVkIGludG8gdGhlIERNQQogCQkJCSAqIHJ1bnRpbWUgcmVnaXN0ZXIgc2V0LCB0aGUgc2Vjb25kIG9uZSBzdGlsbAogCQkJCSAqIGluIHRoZSBwcm9ncmFtbWluZyBzZXQpLCB0aGVuIHdlIGFyZSBpbiBzeW5jLgogCQkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3AuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwLmMKaW5kZXggMWE5OTYzYmQuLjUwM2JkNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3AuYwpAQCAtNzE1LDcgKzcxNSw3IEBACiAgKiBXYWxrIHRoZSBlbnRpdGllcyBjaGFpbiBzdGFydGluZyBhdCB0aGUgcGlwZWxpbmUgb3V0cHV0IHZpZGVvIG5vZGUgYW5kIHN0YXJ0CiAgKiBhbGwgbW9kdWxlcyBpbiB0aGUgY2hhaW4gaW4gdGhlIGdpdmVuIG1vZGUuCiAgKgotICogUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bGwsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZhaWxlZCB2aWRlbzo6c19zdHJlYW0KKyAqIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZhaWxlZCB2aWRlbzo6c19zdHJlYW0KICAqIG9wZXJhdGlvbiBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBpbnQgaXNwX3BpcGVsaW5lX2VuYWJsZShzdHJ1Y3QgaXNwX3BpcGVsaW5lICpwaXBlLApAQCAtODgzLDcgKzg4Myw3IEBACiAgKiBTZXQgdGhlIHBpcGVsaW5lIHRvIHRoZSBnaXZlbiBzdHJlYW0gc3RhdGUuIFBpcGVsaW5lcyBjYW4gYmUgc3RhcnRlZCBpbgogICogc2luZ2xlLXNob3Qgb3IgY29udGludW91cyBtb2RlLgogICoKLSAqIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmYWlsZWQgdmlkZW86OnNfc3RyZWFtCisgKiBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmYWlsZWQgdmlkZW86OnNfc3RyZWFtCiAgKiBvcGVyYXRpb24gb3RoZXJ3aXNlLgogICovCiBpbnQgb21hcDNpc3BfcGlwZWxpbmVfc2V0X3N0cmVhbShzdHJ1Y3QgaXNwX3BpcGVsaW5lICpwaXBlLApAQCAtMTI4Myw3ICsxMjgzLDcgQEAKIAkJY2xrIHw9IElTUENUUkxfUlNaX0NMS19FTjsKIAogCS8qIE5PVEU6IEZvciBDQ0RDICYgUHJldmlldyBzdWJtb2R1bGVzLCB3ZSBuZWVkIHRvIGFmZmVjdCBpbnRlcm5hbAotCSAqICAgICAgIFJBTSBhc3dlbGwuCisJICogICAgICAgUkFNIGFzIHdlbGwuCiAJICovCiAJaWYgKGlzcC0+c3ViY2xrX3Jlc291cmNlcyAmIE9NQVAzX0lTUF9TVUJDTEtfQ0NEQykKIAkJY2xrIHw9IElTUENUUkxfQ0NEQ19DTEtfRU4gfCBJU1BDVFJMX0NDRENfUkFNX0VOOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAKICAqIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBJU1AuIElmIHRoZSBmaXJzdCByZWZlcmVuY2UgaXMgdGFrZW4sCiAgKiBlbmFibGUgY2xvY2tzIGFuZCBwb3dlci11cCBhbGwgc3VibW9kdWxlcy4KICAqCi0gKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBJU1AgZGV2aWNlIHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLgorICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgSVNQIGRldmljZSBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAgKi8KIHN0cnVjdCBpc3BfZGV2aWNlICpvbWFwM2lzcF9nZXQoc3RydWN0IGlzcF9kZXZpY2UgKmlzcCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NkYy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKaW5kZXggZDQwM2FmNS4uNDgzYTE5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKQEAgLTE1MCw3ICsxNTAsNyBAQAogICogQGlucHV0OiBBY3RpdmUgaW5wdXQKICAqIEBvdXRwdXQ6IEFjdGl2ZSBvdXRwdXRzCiAgKiBAdmlkZW9fb3V0OiBPdXRwdXQgdmlkZW8gbm9kZQotICogQGVycm9yOiBBIGhhcmR3YXJlIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNhcHR1cmUKKyAqIEBlcnJvcjogQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2FwdHVyZQogICogQGFsYXc6IEEtbGF3IGNvbXByZXNzaW9uIGVuYWJsZWQgKDEpIG9yIGRpc2FibGVkICgwKQogICogQGxwZjogTG93IHBhc3MgZmlsdGVyIGVuYWJsZWQgKDEpIG9yIGRpc2FibGVkICgwKQogICogQG9iY2xhbXA6IE9wdGljYWwtYmxhY2sgY2xhbXAgZW5hYmxlZCAoMSkgb3IgZGlzYWJsZWQgKDApCkBAIC0xNjMsNyArMTYzLDcgQEAKICAqIEBzaGFkb3dfdXBkYXRlOiBDb250cm9scyB1cGRhdGUgaW4gcHJvZ3Jlc3MgYnkgdXNlcnNwYWNlCiAgKiBAc3luY2lmOiBJbnRlcmZhY2Ugc3luY2hyb25pemF0aW9uIGNvbmZpZ3VyYXRpb24KICAqIEB2cGNmZzogVmlkZW8gcG9ydCBjb25maWd1cmF0aW9uCi0gKiBAdW5kZXJydW46IEEgYnVmZmVyIHVuZGVycnVuIG9jY3VyZWQgYW5kIGEgbmV3IGJ1ZmZlciBoYXMgYmVlbiBxdWV1ZWQKKyAqIEB1bmRlcnJ1bjogQSBidWZmZXIgdW5kZXJydW4gb2NjdXJyZWQgYW5kIGEgbmV3IGJ1ZmZlciBoYXMgYmVlbiBxdWV1ZWQKICAqIEBzdGF0ZTogU3RyZWFtaW5nIHN0YXRlCiAgKiBAbG9jazogU2VyaWFsaXplcyBzaGFkb3dfdXBkYXRlIHdpdGggaW50ZXJydXB0IGhhbmRsZXIKICAqIEB3YWl0OiBXYWl0IHF1ZXVlIHVzZWQgdG8gc3RvcCB0aGUgbW9kdWxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcGNjcDIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCmluZGV4IDBlZmVmMmUuLjBlMTZjYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCkBAIC03NzIsNyArNzcyLDcgQEAKICAqIEBzZCAgICA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggICAgOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdCAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgY2NwMl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcGNzaTIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCmluZGV4IGZiNTAzZjMuLjY5MTYxYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCkBAIC05NjksNyArOTY5LDcgQEAKICAqIEBzZCA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgY3NpMl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCmluZGV4IGJhZjkzNzQuLjJiMTY5ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiaXNwcmVnLmgiCiAjaW5jbHVkZSAiaXNwcHJldmlldy5oIgogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIFJHQnRvUkdCIEJsZW5kaW5nICovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIFJHQnRvUkdCIEJsZW5kaW5nICovCiBzdGF0aWMgc3RydWN0IG9tYXAzaXNwX3ByZXZfcmdidG9yZ2IgZmxyX3JnYjJyZ2IgPSB7CiAJewkvKiBSR0ItUkdCIE1hdHJpeCAqLwogCQl7MHgwMUUyLCAweDBGMzAsIDB4MEZFRX0sCkBAIC00NCw3ICs0NCw3IEBACiAJezB4MDAwMCwgMHgwMDAwLCAweDAwMDB9CiB9OwogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIFJHQiB0byBZVVYgQ29udmVyc2lvbiovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIFJHQiB0byBZVVYgQ29udmVyc2lvbiovCiBzdGF0aWMgc3RydWN0IG9tYXAzaXNwX3ByZXZfY3NjIGZscl9wcmV2X2NzYyA9IHsKIAl7CS8qIENTQyBDb2VmIE1hdHJpeCAqLwogCQl7NjYsIDEyOSwgMjV9LApAQCAtNTQsMjIgKzU0LDIyIEBACiAJezB4MCwgMHgwLCAweDB9CiB9OwogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIENGQSBHcmFkaWVudCovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIENGQSBHcmFkaWVudCovCiAjZGVmaW5lIEZMUl9DRkFfR1JBRFRIUlNfSE9SWgkweDI4CiAjZGVmaW5lIEZMUl9DRkFfR1JBRFRIUlNfVkVSVAkweDI4CiAKLS8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbG91cmVzY2VudCBMaWdodCBmb3IgQ2hyb21hIFN1cHByZXNzaW9uKi8KKy8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbHVvcmVzY2VudCBMaWdodCBmb3IgQ2hyb21hIFN1cHByZXNzaW9uKi8KICNkZWZpbmUgRkxSX0NTVVBfR0FJTgkJMHgwRAogI2RlZmluZSBGTFJfQ1NVUF9USFJFUwkJMHhFQgogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIE5vaXNlIEZpbHRlciovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIE5vaXNlIEZpbHRlciovCiAjZGVmaW5lIEZMUl9ORl9TVFJHVEgJCTB4MDMKIAogLyogRGVmYXVsdCB2YWx1ZXMgZm9yIFdoaXRlIEJhbGFuY2UgKi8KICNkZWZpbmUgRkxSX1dCQUxfREdBSU4JCTB4MTAwCiAjZGVmaW5lIEZMUl9XQkFMX0NPRUYJCTB4MjAKIAotLyogRGVmYXVsdCB2YWx1ZXMgaW4gT2ZmaWNlIEZsb3VyZXNjZW50IExpZ2h0IGZvciBCbGFjayBBZGp1c3RtZW50Ki8KKy8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbHVvcmVzY2VudCBMaWdodCBmb3IgQmxhY2sgQWRqdXN0bWVudCovCiAjZGVmaW5lIEZMUl9CTEtBREpfQkxVRQkJMHgwCiAjZGVmaW5lIEZMUl9CTEtBREpfR1JFRU4JMHgwCiAjZGVmaW5lIEZMUl9CTEtBREpfUkVECQkweDAKQEAgLTEzNyw3ICsxMzcsNyBAQAogICogQGVuYWJsZTogMSAtIEVuYWJsZSwgMCAtIERpc2FibGUKICAqCiAgKiBOT1RFOiBQUlZfV1NEUl9BRERSIGFuZCBQUlZfV0FERF9PRkZTRVQgbXVzdCBiZSBzZXQgYWxzbwotICogVGhlIHByb2NjZXNzIGlzIGFwcGxpZWQgZm9yIGVhY2ggY2FwdHVyZWQgZnJhbWUuCisgKiBUaGUgcHJvY2VzcyBpcyBhcHBsaWVkIGZvciBlYWNoIGNhcHR1cmVkIGZyYW1lLgogICovCiBzdGF0aWMgdm9pZAogcHJldmlld19lbmFibGVfZHJrZnJhbWVfY2FwdHVyZShzdHJ1Y3QgaXNwX3ByZXZfZGV2aWNlICpwcmV2LCB1OCBlbmFibGUpCkBAIC0xNTcsNyArMTU3LDcgQEAKICAqIEBlbmFibGU6IDEgLSBBY3F1aXJlcyBtZW1vcnkgYmFuZHdpZHRoIHNpbmNlIHRoZSBwaXhlbHMgaW4gZWFjaCBmcmFtZSBpcwogICogICAgICAgICAgc3VidHJhY3RlZCB3aXRoIHRoZSBwaXhlbHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuCiAgKgotICogVGhlIHByb2NjZXNzIGlzIGFwcGxpZWQgZm9yIGVhY2ggY2FwdHVyZWQgZnJhbWUuCisgKiBUaGUgcHJvY2VzcyBpcyBhcHBsaWVkIGZvciBlYWNoIGNhcHR1cmVkIGZyYW1lLgogICovCiBzdGF0aWMgdm9pZAogcHJldmlld19lbmFibGVfZHJrZnJhbWUoc3RydWN0IGlzcF9wcmV2X2RldmljZSAqcHJldiwgdTggZW5hYmxlKQpAQCAtMTUyOCw3ICsxNTI4LDcgQEAKICAqIHByZXZpZXdfc2V0X3N0cmVhbSAtIEVuYWJsZS9EaXNhYmxlIHN0cmVhbWluZyBvbiBwcmV2aWV3IHN1YmRldgogICogQHNkICAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBzdHJ1Y3R1cmUKICAqIEBlbmFibGU6IDEgPT0gRW5hYmxlLCAwID09IERpc2FibGUKLSAqIHJldHVybiAtRUlOVkFMIG9yIHplcm8gb24gc3VjZXNzCisgKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2Nlc3MKICAqLwogc3RhdGljIGludCBwcmV2aWV3X3NldF9zdHJlYW0oc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgaW50IGVuYWJsZSkKIHsKQEAgLTE3ODAsNyArMTc4MCw3IEBACiAgKiBAc2QgOiBwb2ludGVyIHRvIHY0bDIgc3ViZGV2IHN0cnVjdHVyZQogICogQGZoIDogVjRMMiBzdWJkZXYgZmlsZSBoYW5kbGUKICAqIEBmbXQ6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgZm9ybWF0IHN0cnVjdHVyZQotICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNlc3MKKyAqIHJldHVybiAtRUlOVkFMIG9yIHplcm8gb24gc3VjY2VzcwogICovCiBzdGF0aWMgaW50IHByZXZpZXdfZ2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCBzdHJ1Y3QgdjRsMl9zdWJkZXZfZmggKmZoLAogCQkJICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm10KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BwcmV2aWV3LmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaAppbmRleCBmMmQ2M2NhLi5mYTk0M2JkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaApAQCAtMTYzLDcgKzE2Myw3IEBACiAgKiBAb3V0cHV0OiBCaXRtYXNrIG9mIHRoZSBhY3RpdmUgb3V0cHV0CiAgKiBAdmlkZW9faW46IElucHV0IHZpZGVvIGVudGl0eQogICogQHZpZGVvX291dDogT3V0cHV0IHZpZGVvIGVudGl0eQotICogQGVycm9yOiBBIGhhcmR3YXJlIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNhcHR1cmUKKyAqIEBlcnJvcjogQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2FwdHVyZQogICogQHBhcmFtczogTW9kdWxlIGNvbmZpZ3VyYXRpb24gZGF0YQogICogQHNoYWRvd191cGRhdGU6IElmIHNldCwgdXBkYXRlIHRoZSBoYXJkd2FyZSBjb25maWd1cmVkIGluIHRoZSBuZXh0IGludGVycnVwdAogICogQHVuZGVycnVuOiBXaGV0aGVyIHRoZSBwcmV2aWV3IGVudGl0eSBoYXMgcXVldWVkIGJ1ZmZlcnMgb24gdGhlIG91dHB1dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BxdWV1ZS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BxdWV1ZS5oCmluZGV4IDI1MWRlM2UuLjkyYzVhMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcXVldWUuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHF1ZXVlLmgKQEAgLTQ2LDkgKzQ2LDkgQEAKICAqCWRldmljZSB5ZXQuCiAgKiBASVNQX0JVRl9TVEFURV9BQ1RJVkU6IFRoZSBidWZmZXIgaXMgaW4gdXNlIGZvciBhbiBhY3RpdmUgdmlkZW8gdHJhbnNmZXIuCiAgKiBASVNQX0JVRl9TVEFURV9FUlJPUjogVGhlIGRldmljZSBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciBhbmQgYW4gZXJyb3IKLSAqCW9jY3VyZWQuIEZvciBjYXB0dXJlIGRldmljZSB0aGUgYnVmZmVyIGxpa2VseSBjb250YWlucyBjb3JydXB0ZWQgZGF0YSBvcgorICoJb2NjdXJyZWQuIEZvciBjYXB0dXJlIGRldmljZSB0aGUgYnVmZmVyIGxpa2VseSBjb250YWlucyBjb3JydXB0ZWQgZGF0YSBvcgogICoJbm8gZGF0YSBhdCBhbGwuCi0gKiBASVNQX0JVRl9TVEFURV9ET05FOiBUaGUgZGV2aWNlIGlzIGRvbmUgd2l0aCB0aGUgYnVmZmVyIGFuZCBubyBlcnJvciBvY2N1cmVkLgorICogQElTUF9CVUZfU1RBVEVfRE9ORTogVGhlIGRldmljZSBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciBhbmQgbm8gZXJyb3Igb2NjdXJyZWQuCiAgKglGb3IgY2FwdHVyZSBkZXZpY2VzIHRoZSBidWZmZXIgY29udGFpbnMgdmFsaWQgZGF0YS4KICAqLwogZW51bSBpc3BfdmlkZW9fYnVmZmVyX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcmVzaXplci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKaW5kZXggNzVkMzliMS4uNjUzZjg4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKQEAgLTc1MSw3ICs3NTEsNyBAQAogICogcmF0aW8gd2lsbCB0aHVzIHJlc3VsdCBpbiBhIHJlc2l6aW5nIGZhY3RvciBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUKICAqIHJlcXVlc3RlZCB2YWx1ZS4KICAqCi0gKiBUbyBhY2NvbW9kYXRlIHRoYXQsIGFuZCBtYWtlIHN1cmUgdGhlIFRSTSBlcXVhdGlvbnMgYXJlIHNhdGlzZmllZCBleGFjdGx5LCB3ZQorICogVG8gYWNjb21tb2RhdGUgdGhhdCwgYW5kIG1ha2Ugc3VyZSB0aGUgVFJNIGVxdWF0aW9ucyBhcmUgc2F0aXNmaWVkIGV4YWN0bHksIHdlCiAgKiBjb21wdXRlIHRoZSBpbnB1dCBjcm9wIHJlY3RhbmdsZSBhcyB0aGUgbGFzdCBzdGVwLgogICoKICAqIEFzIGlmIHRoZSBzaXR1YXRpb24gd2Fzbid0IGNvbXBsZXggZW5vdWdoLCB0aGUgbWF4aW11bSBvdXRwdXQgd2lkdGggZGVwZW5kcwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAKICAqIEBzZCAgICA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggICAgOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdCAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgcmVzaXplcl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHZpZGVvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHZpZGVvLmMKaW5kZXggYTBiYjVkYi4uMjA4YTdlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3B2aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwdmlkZW8uYwpAQCAtNDk0LDEyICs0OTQsMTIgQEAKIC8qCiAgKiBvbWFwM2lzcF92aWRlb19idWZmZXJfbmV4dCAtIENvbXBsZXRlIHRoZSBjdXJyZW50IGJ1ZmZlciBhbmQgcmV0dXJuIHRoZSBuZXh0CiAgKiBAdmlkZW86IElTUCB2aWRlbyBvYmplY3QKLSAqIEBlcnJvcjogV2hldGhlciBhbiBlcnJvciBvY2N1cmVkIGR1cmluZyBjYXB0dXJlCisgKiBAZXJyb3I6IFdoZXRoZXIgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNhcHR1cmUKICAqCiAgKiBSZW1vdmUgdGhlIGN1cnJlbnQgdmlkZW8gYnVmZmVyIGZyb20gdGhlIERNQSBxdWV1ZSBhbmQgZmlsbCBpdHMgdGltZXN0YW1wLAogICogZmllbGQgY291bnQgYW5kIHN0YXRlIGZpZWxkcyBiZWZvcmUgd2FraW5nIHVwIGl0cyBjb21wbGV0aW9uIGhhbmRsZXIuCiAgKgotICogVGhlIGJ1ZmZlciBzdGF0ZSBpcyBzZXQgdG8gVklERU9CVUZfRE9ORSBpZiBubyBlcnJvciBvY2N1cmVkIChAZXJyb3IgaXMgMCkKKyAqIFRoZSBidWZmZXIgc3RhdGUgaXMgc2V0IHRvIFZJREVPQlVGX0RPTkUgaWYgbm8gZXJyb3Igb2NjdXJyZWQgKEBlcnJvciBpcyAwKQogICogb3IgVklERU9CVUZfRVJST1Igb3RoZXJ3aXNlIChAZXJyb3IgaXMgbm9uLXplcm8pLgogICoKICAqIFRoZSBETUEgcXVldWUgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgYnVmZmVyLgpAQCAtNTc4LDcgKzU3OCw3IEBACiAvKgogICogb21hcDNpc3BfdmlkZW9fcmVzdW1lIC0gUGVyZm9ybSByZXN1bWUgb3BlcmF0aW9uIG9uIHRoZSBidWZmZXJzCiAgKiBAdmlkZW86IElTUCB2aWRlbyBvYmplY3QKLSAqIEBjb250aW51b3VzOiBQaXBlbGluZSBpcyBpbiBzaW5nbGUgc2hvdCBtb2RlIGlmIDAgb3IgY29udGlub3VzIG1vZGUgb3RoZXJ3aXNlCisgKiBAY29udGludW91czogUGlwZWxpbmUgaXMgaW4gc2luZ2xlIHNob3QgbW9kZSBpZiAwIG9yIGNvbnRpbnVvdXMgbW9kZSBvdGhlcndpc2UKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgb24gc3VzcGVuZC9yZXN1bWUgc2NlbmFyaW8uIEl0CiAgKiByZXF1ZXN0cyB2aWRlbyBxdWV1ZSBsYXllciB0byBkaXNjYXJkIGJ1ZmZlcnMgbWFya2VkIGFzIERPTkUgaWYgaXQncyBpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjY2NTAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y2NjUwLmMKaW5kZXggZmU4ZTNlYi4uNDU2ZDlhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjY2NTAuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL292NjY1MC5jCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogCXJldCA9IG92NjY1MF9yZWdfcm13KGNsaWVudCwgUkVHX0NPTUEsIENPTUFfUkVTRVQsIDApOwogCWlmIChyZXQpCiAJCWRldl9lcnIoJmNsaWVudC0+ZGV2LAotCQkJIkFuIGVycm9yIG9jY3VyZWQgd2hpbGUgZW50ZXJpbmcgc29mdCByZXNldCFcbiIpOworCQkJIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGVudGVyaW5nIHNvZnQgcmVzZXQhXG4iKTsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL292OTY0MC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vdjk2NDAuYwppbmRleCA1M2Q4OGEyLi41MTczYWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL292OTY0MC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y5NjQwLmMKQEAgLTI3Myw3ICsyNzMsNyBAQAogCXJldCA9IG92OTY0MF9yZWdfd3JpdGUoY2xpZW50LCBPVjk2NDBfQ09NNywgT1Y5NjQwX0NPTTdfU0NDQl9SRVNFVCk7CiAJaWYgKHJldCkKIAkJZGV2X2VycigmY2xpZW50LT5kZXYsCi0JCQkiQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBlbnRlcmluZyBzb2Z0IHJlc2V0IVxuIik7CisJCQkiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZW50ZXJpbmcgc29mdCByZXNldCFcbiIpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWVlcHJvbS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKaW5kZXggYWVlZDFjMi4uOTUxNWYzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKQEAgLTMyLDcgKzMyLDcgQEAKIAogICAgUmVhZCBhbmQgYW5hbHl6ZSBkYXRhIGluIHRoZSBlZXByb20uICBVc2UgdHZlZXByb20gdG8gZmlndXJlIG91dAogICAgdGhlIHBhY2tldCBzdHJ1Y3R1cmUsIHNpbmNlIHRoaXMgaXMgYW5vdGhlciBIYXVwcGF1Z2UgZGV2aWNlIGFuZAotICAgaW50ZXJuYWxseSBpdCBoYXMgYSBmYW1pbHkgcmVzZW1ibGVuY2UgdG8gaXZ0di10eXBlIGRldmljZXMKKyAgIGludGVybmFsbHkgaXQgaGFzIGEgZmFtaWx5IHJlc2VtYmxhbmNlIHRvIGl2dHYtdHlwZSBkZXZpY2VzCiAKICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWhkdy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKaW5kZXggNTFkMzAwOS4uZDc3NTNhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKQEAgLTc1LDcgKzc1LDcgQEAKICAqICAoYnV0IGl0IG1pZ2h0IHN0aWxsIG9uIHRoZSBidXMpLiAgSW4gdGhpcyBzdGF0ZSB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuCiAgKiAgZG87IGl0IG11c3QgYmUgcmVwbHVnZ2VkIGluIG9yZGVyIHRvIHJlY292ZXIuCiAgKgotICogIENPTEQgLSBEZXZpY2UgaXMgaW4gYW4gdW51c3VhYmxlIHN0YXRlLCBuZWVkcyBtaWNyb2NvbnRyb2xsZXIgZmlybXdhcmUuCisgKiAgQ09MRCAtIERldmljZSBpcyBpbiBhbiB1bnVzYWJsZSBzdGF0ZSwgbmVlZHMgbWljcm9jb250cm9sbGVyIGZpcm13YXJlLgogICoKICAqICBXQVJNIC0gV2UgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZSBhbmQgdGhlIHByb3BlcgogICogIG1pY3JvY29udHJvbGxlciBmaXJtd2FyZSBpcyBydW5uaW5nLCBidXQgb3RoZXIgZGV2aWNlIGluaXRpYWxpemF0aW9uIGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B4YV9jYW1lcmEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCmluZGV4IDAyNjg2NzcuLmMxZWUwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCkBAIC03MTQsNyArNzE0LDcgQEAKICAqCiAgKiBUaGUgRE1BIGNoYWluaW5nIGlzIGRvbmUgd2l0aCBETUEgcnVubmluZy4gVGhpcyBtZWFucyBhIHRpbnkgdGVtcG9yYWwgd2luZG93CiAgKiByZW1haW5zLCB3aGVyZSBhIGJ1ZmZlciBpcyBxdWV1ZWQgb24gdGhlIGNoYWluLCB3aGlsZSB0aGUgY2hhaW4gaXMgYWxyZWFkeQotICogc3RvcHBlZC4gVGhpcyBtZWFucyB0aGUgdGFpbGVkIGJ1ZmZlciB3b3VsZCBuZXZlciBiZSB0cmFuc2ZlcmVkIGJ5IERNQS4KKyAqIHN0b3BwZWQuIFRoaXMgbWVhbnMgdGhlIHRhaWxlZCBidWZmZXIgd291bGQgbmV2ZXIgYmUgdHJhbnNmZXJyZWQgYnkgRE1BLgogICogVGhpcyBmdW5jdGlvbiByZXN0YXJ0cyB0aGUgY2FwdHVyZSBmb3IgdGhpcyBjb3JuZXIgY2FzZSwgd2hlcmUgOgogICogIC0gREFEUigpID09IERBRERSX1NUT1AKICAqICAtIGEgdmlkZW9idWZmZXIgaXMgcXVldWVkIG9uIHRoZSBwY2Rldi0+Y2FwdHVyZSBsaXN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1maW1jL2ZpbWMtcmVnLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1maW1jL2ZpbWMtcmVnLmMKaW5kZXggNGQ5MjlhMy4uNDg5M2IyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtZmltYy9maW1jLXJlZy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLWZpbWMvZmltYy1yZWcuYwpAQCAtMzU2LDcgKzM1Niw3IEBACiAJCS8qIG9uZSBzaG90IG1vZGUgKi8KIAkJY2ZnIHw9IFM1UF9DSUlNR0NQVF9DUFRfRlJFTl9FTkFCTEUgfCBTNVBfQ0lJTUdDUFRfSU1HQ1BURU47CiAJfSBlbHNlIHsKLQkJLyogQ29udGlub3VzIGZyYW1lIGNhcHR1cmUgbW9kZSAoZnJlZXJ1bikuICovCisJCS8qIENvbnRpbnVvdXMgZnJhbWUgY2FwdHVyZSBtb2RlIChmcmVlcnVuKS4gKi8KIAkJY2ZnICY9IH4oUzVQX0NJSU1HQ1BUX0NQVF9GUkVOX0VOQUJMRSB8CiAJCQkgUzVQX0NJSU1HQ1BUX0NQVF9GUk1PRF9DTlQpOwogCQljZmcgfD0gUzVQX0NJSU1HQ1BUX0lNR0NQVEVOOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWNhcmRzLmMKaW5kZXggNjFjNjAwNy4uNTBmMWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1jYXJkcy5jCkBAIC03NDYwLDcgKzc0NjAsNyBAQAogCQkJCWRldi0+dHVuZXJfdHlwZSA9IFRVTkVSX1BISUxJUFNfRk0xMjE2TUVfTUszOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKLQkJCQlwcmludGsoS0VSTl9FUlIgIiVzIENhbnQgZGV0ZXJtaW5lIHR1bmVyIHR5cGUgJXggZnJvbSBFRVBST01cbiIsIGRldi0+bmFtZSwgdHVuZXJfdCk7CisJCQkJcHJpbnRrKEtFUk5fRVJSICIlcyBDYW4ndCBkZXRlcm1pbmUgdHVuZXIgdHlwZSAleCBmcm9tIEVFUFJPTVxuIiwgZGV2LT5uYW1lLCB0dW5lcl90KTsKIAkJCX0KIAkJfSBlbHNlIGlmICgoZGF0YVsxXSAhPSAwKSAmJiAoZGF0YVsxXSAhPSAweGZmKSkgewogCQkJLyogbmV3IGNvbmZpZyBzdHJ1Y3R1cmUgKi8KQEAgLTc0ODAsNyArNzQ4MCw3IEBACiAJCQkJCXByaW50ayhLRVJOX0lORk8gIiVzIEJvYXJkIGhhcyBEVkItVFxuIiwgZGV2LT5uYW1lKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6Ci0JCQkJcHJpbnRrKEtFUk5fRVJSICIlcyBDYW50IGRldGVybWluZSB0dW5lciB0eXBlICV4IGZyb20gRUVQUk9NXG4iLCBkZXYtPm5hbWUsIHR1bmVyX3QpOworCQkJCXByaW50ayhLRVJOX0VSUiAiJXMgQ2FuJ3QgZGV0ZXJtaW5lIHR1bmVyIHR5cGUgJXggZnJvbSBFRVBST01cbiIsIGRldi0+bmFtZSwgdHVuZXJfdCk7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlwcmludGsoS0VSTl9FUlIgIiVzIHVuZXhwZWN0ZWQgY29uZmlnIHN0cnVjdHVyZVxuIiwgZGV2LT5uYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LWNtZC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKaW5kZXggNmE0YzIxNy4uNjJmYWM3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQAogfQogCiAvKiBXYWl0IGZvciBhIHNpZ25hbCBldmVudCwgd2l0aG91dCBob2xkaW5nIGEgbXV0ZXguIEVpdGhlciByZXR1cm4gVElNRU9VVCBpZgotICogdGhlIGV2ZW50IG5ldmVyIG9jY3VyZWQsIG9yIFNBQV9PSyBpZiBpdCB3YXMgc2lnbmFsZWQgZHVyaW5nIHRoZSB3YWl0LgorICogdGhlIGV2ZW50IG5ldmVyIG9jY3VycmVkLCBvciBTQUFfT0sgaWYgaXQgd2FzIHNpZ25hbGVkIGR1cmluZyB0aGUgd2FpdC4KICAqLwogaW50IHNhYTcxNjRfY21kX3dhaXQoc3RydWN0IHNhYTcxNjRfZGV2ICpkZXYsIHU4IHNlcW5vKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtZncuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LWZ3LmMKaW5kZXggYjM2OTMwMC4uYTI2NmJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtZncuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxNjQvc2FhNzE2NC1mdy5jCkBAIC00NDQsNyArNDQ0LDcgQEAKIAkJcHJpbnRrKEtFUk5fSU5GTyAiIC5SZXNlcnZlZCA9IDB4JXhcbiIsIGhkci0+cmVzZXJ2ZWQpOwogCQlwcmludGsoS0VSTl9JTkZPICIgLlZlcnNpb24gPSAweCV4XG4iLCBoZHItPnZlcnNpb24pOwogCi0JCS8qIFJldHJlaXZlIGJvb3Rsb2FkZXIgaWYgcmVxZCAqLworCQkvKiBSZXRyaWV2ZSBib290bG9hZGVyIGlmIHJlcWQgKi8KIAkJaWYgKChoZHItPmZpcm13YXJlc2l6ZSA9PSAwKSAmJiAoaGRyLT5ic2xzaXplID09IDApKQogCQkJLyogU2Vjb25kIGJvb3Rsb2FkZXIgaW4gdGhlIGZpcm13YXJlIGZpbGUgKi8KIAkJCWZpbGVzaXplID0gaGRyLT5yZXNlcnZlZCAqIDE2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtdHlwZXMuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LXR5cGVzLmgKaW5kZXggZGYxZDI5OS4uMWQyMTQwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtdHlwZXMuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxNjQvc2FhNzE2NC10eXBlcy5oCkBAIC00MTIsNyArNDEyLDcgQEAKIAl1OAlTdGFydExpbmU7IC8qIE5UU0MgU3RhcnQgPSAxMCAqLwogCXU4CUVuZExpbmU7IC8qIE5UU0MgPSAyMSAqLwogCXU4CUZpZWxkUmF0ZTsgLyogNjAgZm9yIE5UU0MgKi8KLQl1OAliTnVtTGluZXM7IC8qIFVuc2VkIC0gc2NoZWR1bGVkIGZvciByZW1vdmFsICovCisJdTgJYk51bUxpbmVzOyAvKiBVbnVzZWQgLSBzY2hlZHVsZWQgZm9yIHJlbW92YWwgKi8KIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKIHN0cnVjdCB0bUNvbVJlc1Byb2JlQ29tbWl0IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX2NvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX2NvcmUuYwppbmRleCBjZTU2YTFjLi4wZTA3YzQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NuOWMxMDIvc245YzEwMl9jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zbjljMTAyL3NuOWMxMDJfY29yZS5jCkBAIC0xODEwLDcgKzE4MTAsNyBAQAogCQkvKgogCQkgICBXZSB3aWxsIG5vdCByZWxlYXNlIHRoZSAib3Blbl9tdXRleCIgbG9jaywgc28gdGhhdCBvbmx5IG9uZQogCQkgICBwcm9jZXNzIGNhbiBiZSBpbiB0aGUgd2FpdCBxdWV1ZSBiZWxvdy4gVGhpcyB3YXkgdGhlIHByb2Nlc3MKLQkJICAgd2lsbCBiZSBzbGVlcGluZyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCB3aXRob3V0IGxvb3NpbmcgaXRzCisJCSAgIHdpbGwgYmUgc2xlZXBpbmcgd2hpbGUgaG9sZGluZyB0aGUgbG9jaywgd2l0aG91dCBsb3NpbmcgaXRzCiAJCSAgIHByaW9yaXR5IGFmdGVyIGFueSB3YWtlX3VwKCkuCiAJCSovCiAJCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9leGNsdXNpdmUoY2FtLT53YWl0X29wZW4sCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NuOWMxMDIvc245YzEwMl9zZW5zb3IuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCmluZGV4IDdmMzg1NDkuLjM2Nzk5NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCkBAIC0xODAsNyArMTgwLDcgQEAKIAkgICBJdCBzaG91bGQgYmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBzZW5zb3Igb25seSwgYnV0IG1heSBhbHNvCiAJICAgY29uZmlndXJlIHBhcnQgb2YgdGhlIFNOOUMxWFggY2hpcCBpZiBuZWNlc3NhcnkuIFlvdSBkb24ndCBuZWVkIHRvCiAJICAgc2V0dXAgcGljdHVyZSBzZXR0aW5ncyBsaWtlIGJyaWdodG5lc3MsIGNvbnRyYXN0LCBldGMuLiBoZXJlLCBpZgotCSAgIHRoZSBjb3JyaXNwb25kaW5nIGNvbnRyb2xzIGFyZSBpbXBsZW1lbnRlZCAoc2VlIGJlbG93KSwgc2luY2UKKwkgICB0aGUgY29ycmVzcG9uZGluZyBjb250cm9scyBhcmUgaW1wbGVtZW50ZWQgKHNlZSBiZWxvdyksIHNpbmNlCiAJICAgdGhleSBhcmUgYWRqdXN0ZWQgaW4gdGhlIGNvcmUgZHJpdmVyIGJ5IGNhbGxpbmcgdGhlIHNldF9jdHJsKCkKIAkgICBtZXRob2QgYWZ0ZXIgaW5pdCgpLCB3aGVyZSB0aGUgYXJndW1lbnRzIGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMKIAkgICBzcGVjaWZpZWQgaW4gdGhlIHY0bDJfcXVlcnljdHJsIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90Y204MjV4LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYwppbmRleCA1NDY4MWE1Li5iNmVlMWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYwpAQCAtNDkzLDcgKzQ5Myw3IEBACiAJaW50IHZhbCwgcjsKIAlzdHJ1Y3QgdmNvbnRyb2wgKmx2YzsKIAotCS8qIGV4cG9zdXJlIHRpbWUgaXMgc3BlY2lhbCwgc3ByZWFkIGFjY3Jvc3MgMiByZWdpc3RlcnMgKi8KKwkvKiBleHBvc3VyZSB0aW1lIGlzIHNwZWNpYWwsIHNwcmVhZCBhY3Jvc3MgMiByZWdpc3RlcnMgKi8KIAlpZiAodmMtPmlkID09IFY0TDJfQ0lEX0VYUE9TVVJFKSB7CiAJCWludCB2YWxfbG93ZXIsIHZhbF91cHBlcjsKIApAQCAtNTM4LDcgKzUzOCw3IEBACiAJc3RydWN0IHZjb250cm9sICpsdmM7CiAJaW50IHZhbCA9IHZjLT52YWx1ZTsKIAotCS8qIGV4cG9zdXJlIHRpbWUgaXMgc3BlY2lhbCwgc3ByZWFkIGFjY3Jvc3MgMiByZWdpc3RlcnMgKi8KKwkvKiBleHBvc3VyZSB0aW1lIGlzIHNwZWNpYWwsIHNwcmVhZCBhY3Jvc3MgMiByZWdpc3RlcnMgKi8KIAlpZiAodmMtPmlkID09IFY0TDJfQ0lEX0VYUE9TVVJFKSB7CiAJCWludCB2YWxfbG93ZXIsIHZhbF91cHBlcjsKIAkJdmFsX2xvd2VyID0gdmFsICYgVENNODI1WF9NQVNLKFRDTTgyNVhfRVNSU1BEX0wpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90dmF1ZGlvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYwppbmRleCBhMjVlMmI1Li5jNDZhM2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYwpAQCAtMTA1OCwxMSArMTA1OCwxMSBAQAogI2RlZmluZSBUREE5ODc1X01WUiAgICAgICAgIDB4MWIgIC8qIE1haW4gdm9sdW1lIGRyb2l0ZSAqLwogI2RlZmluZSBUREE5ODc1X01CQSAgICAgICAgIDB4MWQgIC8qIE1haW4gQmFzc2UgKi8KICNkZWZpbmUgVERBOTg3NV9NVFIgICAgICAgICAweDFlICAvKiBNYWluIHRyZWJsZSAqLwotI2RlZmluZSBUREE5ODc1X0FDUyAgICAgICAgIDB4MWYgIC8qIEF1eGlsYXJ5IGNoYW5uZWwgc2VsZWN0IChGTSkgMGIwMDAwMDAwKi8KLSNkZWZpbmUgVERBOTg3NV9BVkwgICAgICAgICAweDIwICAvKiBBdXhpbGFyeSB2b2x1bWUgZ2F1Y2hlICovCi0jZGVmaW5lIFREQTk4NzVfQVZSICAgICAgICAgMHgyMSAgLyogQXV4aWxhcnkgdm9sdW1lIGRyb2l0ZSAqLwotI2RlZmluZSBUREE5ODc1X0FCQSAgICAgICAgIDB4MjIgIC8qIEF1eGlsYXJ5IEJhc3NlICovCi0jZGVmaW5lIFREQTk4NzVfQVRSICAgICAgICAgMHgyMyAgLyogQXV4aWxhcnkgdHJlYmxlICovCisjZGVmaW5lIFREQTk4NzVfQUNTICAgICAgICAgMHgxZiAgLyogQXV4aWxpYXJ5IGNoYW5uZWwgc2VsZWN0IChGTSkgMGIwMDAwMDAwKi8KKyNkZWZpbmUgVERBOTg3NV9BVkwgICAgICAgICAweDIwICAvKiBBdXhpbGlhcnkgdm9sdW1lIGdhdWNoZSAqLworI2RlZmluZSBUREE5ODc1X0FWUiAgICAgICAgIDB4MjEgIC8qIEF1eGlsaWFyeSB2b2x1bWUgZHJvaXRlICovCisjZGVmaW5lIFREQTk4NzVfQUJBICAgICAgICAgMHgyMiAgLyogQXV4aWxpYXJ5IEJhc3NlICovCisjZGVmaW5lIFREQTk4NzVfQVRSICAgICAgICAgMHgyMyAgLyogQXV4aWxpYXJ5IHRyZWJsZSAqLwogCiAjZGVmaW5lIFREQTk4NzVfTVNSICAgICAgICAgMHgwMiAgLyogTW9uaXRvciBzZWxlY3QgcmVnaXN0ZXIgKi8KICNkZWZpbmUgVERBOTg3NV9DMU1TQiAgICAgICAweDAzICAvKiBDYXJyaWVyIDEgKEZNKSBmcmVxdWVuY3kgcmVnaXN0ZXIgTVNCICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3V2Yy91dmNfdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCmluZGV4IDU0NWMwMjkuLmZjNzY2YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCkBAIC0zOTQsMTEgKzM5NCwxMSBAQAogICoKICAqIHV2Y192aWRlb19kZWNvZGVfZW5kIGlzIGNhbGxlZCB3aXRoIGhlYWRlciBkYXRhIGF0IHRoZSBlbmQgb2YgYSBidWxrIG9yCiAgKiBpc29jaHJvbm91cyBwYXlsb2FkLiBJdCBwZXJmb3JtcyBhbnkgYWRkaXRpb25hbCBoZWFkZXIgZGF0YSBwcm9jZXNzaW5nIGFuZAotICogcmV0dXJucyAwIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBhbiBlcnJvciBvY2N1cmVkLiBBcyBoZWFkZXIgZGF0YSBoYXZlCisgKiByZXR1cm5zIDAgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIGFuIGVycm9yIG9jY3VycmVkLiBBcyBoZWFkZXIgZGF0YSBoYXZlCiAgKiBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIGJ5IHV2Y192aWRlb19kZWNvZGVfc3RhcnQsIHRoaXMgZnVuY3Rpb25zIGlzbid0CiAgKiByZXF1aXJlZCB0byBwZXJmb3JtIHNhbml0eSBjaGVja3MgYSBzZWNvbmQgdGltZS4KICAqCi0gKiBGb3IgaXNvY2hyb25vdXMgdHJhbnNmZXJzIHdoZXJlIGEgcGF5bG9hZCBpcyBhbHdheXMgdHJhbnNmZXJlZCBpbiBhIHNpbmdsZQorICogRm9yIGlzb2Nocm9ub3VzIHRyYW5zZmVycyB3aGVyZSBhIHBheWxvYWQgaXMgYWx3YXlzIHRyYW5zZmVycmVkIGluIGEgc2luZ2xlCiAgKiBVUkIsIHRoZSB0aHJlZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgaW4gYSByb3cuCiAgKgogICogVG8gbGV0IHRoZSBkZWNvZGVyIHByb2Nlc3MgaGVhZGVyIGRhdGEgYW5kIHVwZGF0ZSBpdHMgaW50ZXJuYWwgc3RhdGUgZXZlbgpAQCAtNjU4LDcgKzY1OCw3IEBACiAJCQkJCQkJICAgIGJ1Zik7CiAJCX0gd2hpbGUgKHJldCA9PSAtRUFHQUlOKTsKIAotCQkvKiBJZiBhbiBlcnJvciBvY2N1cmVkIHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuICovCisJCS8qIElmIGFuIGVycm9yIG9jY3VycmVkIHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuICovCiAJCWlmIChyZXQgPCAwIHx8IGJ1ZiA9PSBOVUxMKSB7CiAJCQlzdHJlYW0tPmJ1bGsuc2tpcF9wYXlsb2FkID0gMTsKIAkJfSBlbHNlIHsKQEAgLTgyMSw3ICs4MjEsNyBAQAogCQlyZXR1cm4gc3RyZWFtLT51cmJfc2l6ZSAvIHBzaXplOwogCiAJLyogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEJ1bGsgZW5kcG9pbnRzIG1pZ2h0IHRyYW5zZmVyIFVWQwotCSAqIHBheWxvYWRzIGFjY3Jvc3MgbXVsdGlwbGUgVVJCcy4KKwkgKiBwYXlsb2FkcyBhY3Jvc3MgbXVsdGlwbGUgVVJCcy4KIAkgKi8KIAlucGFja2V0cyA9IERJVl9ST1VORF9VUChzaXplLCBwc2l6ZSk7CiAJaWYgKG5wYWNrZXRzID4gVVZDX01BWF9QQUNLRVRTKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3Y0bDItaW9jdGwuYwppbmRleCBhMDFlZDM5Li41MDZlZGNjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMKQEAgLTQ4LDcgKzQ4LDcgQEAKIAkJCXByaW50ayhLRVJOX0NPTlQgIiVzOiAiIGZtdCwgdmZkLT5uYW1lLCAjIyBhcmcpO1wKIAkJfSB3aGlsZSAoMCkKIAotLyogWmVybyBvdXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0IHBvaW50ZWQgdG8gYnkgcC4gIEV2ZXJ0aGluZyBhZnRlciwgYnV0CisvKiBaZXJvIG91dCB0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgcG9pbnRlZCB0byBieSBwLiAgRXZlcnl0aGluZyBhZnRlciwgYnV0CiAgKiBub3QgaW5jbHVkaW5nLCB0aGUgc3BlY2lmaWVkIGZpZWxkIGlzIGNsZWFyZWQuICovCiAjZGVmaW5lIENMRUFSX0FGVEVSX0ZJRUxEKHAsIGZpZWxkKSBcCiAJbWVtc2V0KCh1OCAqKShwKSArIG9mZnNldG9mKHR5cGVvZigqKHApKSwgZmllbGQpICsgc2l6ZW9mKChwKS0+ZmllbGQpLCBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZweDMyMjAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCmluZGV4IDc1MzAxZDEuLmNhMzcyZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogCS8qIEhlcmUgd2UgYmFjayB1cCB0aGUgaW5wdXQgc2VsZWN0aW9uIGJlY2F1c2UgaXQgZ2V0cwogCSAgIG92ZXJ3cml0dGVuIHdoZW4gd2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGggdGhlCi0JICAgY2hvb3NlbiB2aWRlbyBub3JtICovCisJICAgY2hvc2VuIHZpZGVvIG5vcm0gKi8KIAl0ZW1wX2lucHV0ID0gdnB4MzIyMF9mcF9yZWFkKHNkLCAweGYyKTsKIAogCXY0bDJfZGJnKDEsIGRlYnVnLCBzZCwgInNfc3RkICVsbHhcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpc3RkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vdmlkZW9jb2RlYy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKaW5kZXggYjY1NGJmZi4uZGVmNTU1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKQEAgLTU3LDcgKzU3LDcgQEAKICAgIHRoZXJmb3IgdGhleSBtYXkgbm90IGJlIGluaXRpYWxpemVkLgogCiAgICBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBqdXN0IGZvciBjb252ZW5pZW5jZSwgYXMgdGhleSBhcmUgZm9yIHN1cmUgdXNlZCBieQotICAgbW9zdC9hbGwgb2YgdGhlIGNvZGVjcy4gVGhlIGxhc3Qgb25lcyBtYXkgYmUgb21taXRlZCwgdG9vLgorICAgbW9zdC9hbGwgb2YgdGhlIGNvZGVjcy4gVGhlIGxhc3Qgb25lcyBtYXkgYmUgb21pdHRlZCwgdG9vLgogCiAgICBTZWUgdGhlIHN0cnVjdHVyZSBkZWNsYXJhdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgd2hpY2ggZGF0YSBoYXMKICAgIHRvIGJlIHNldCB1cCBmb3IgdGhlIG1hc3RlciBhbmQgdGhlIHNsYXZlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbi5oIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbi5oCmluZGV4IDRiYjM2OGUuLmYzZjY0MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW4uaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuLmgKQEAgLTI1OSw3ICsyNTksNyBAQAogCXN0cnVjdCB2ZmVfcG9sYXJpdHkgdmZlX3BvbDsKIAl1OCBncGlvX3BvbFtaUl9HUElPX01BWF07CiAKLQkvKiBpcyB0aGUgL0dXUyBsaW5lIGNvbmVjdGVkPyAqLworCS8qIGlzIHRoZSAvR1dTIGxpbmUgY29ubmVjdGVkPyAqLwogCXU4IGd3c19ub3RfY29ubmVjdGVkOwogCiAJLyogYXZzNmV5ZXMgbXV4IHNldHRpbmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuX2RyaXZlci5jCmluZGV4IDdjMzkyMWQuLjI3NzFkODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9kcml2ZXIuYwpAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIHsKIAlzdHJ1Y3Qgem9yYW4gKnpyID0gZmgtPnpyOwogCi0JLyogSWYgdGhlcmUgaXMgbm90aGluZyB0byBkbywgcmV0dXJuIGltbWVkaWF0bHkgKi8KKwkvKiBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCByZXR1cm4gaW1tZWRpYXRlbHkgKi8KIAlpZiAoKG9uICYmIGZoLT5vdmVybGF5X2FjdGl2ZSAhPSBaT1JBTl9GUkVFKSB8fAogCSAgICAoIW9uICYmIGZoLT5vdmVybGF5X2FjdGl2ZSA9PSBaT1JBTl9GUkVFKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2NvcmUvbXNwcm9fYmxvY2suYyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCmluZGV4IDU3YjQyYmYuLjRhMTkwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCkBAIC05NzMsNyArOTczLDcgQEAKIH0KIAogLyogTWVtb3J5IGFsbG9jYXRlZCBmb3IgYXR0cmlidXRlcyBieSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBmcmVlZCBieQotICogbXNwcm9fYmxvY2tfZGF0YV9jbGVhciwgbm8gbWF0dGVyIGlmIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHN1Y2NlZGVkCisgKiBtc3Byb19ibG9ja19kYXRhX2NsZWFyLCBubyBtYXR0ZXIgaWYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgc3VjY2VlZGVkCiAgKiBvciBmYWlsZWQuCiAgKi8KIHN0YXRpYyBpbnQgbXNwcm9fYmxvY2tfcmVhZF9hdHRyaWJ1dGVzKHN0cnVjdCBtZW1zdGlja19kZXYgKmNhcmQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5jIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L3I1OTIuYwppbmRleCA3MDBkNDIwLi42NjhmNWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmMKQEAgLTc5Niw3ICs3OTYsNyBAQAogCWlmIChtZW1zdGlja19hZGRfaG9zdChob3N0KSkKIAkJZ290byBlcnJvcjc7CiAKLQltZXNzYWdlKCJkcml2ZXIgc3VjY2VzZnVsbHkgbG9hZGVkIik7CisJbWVzc2FnZSgiZHJpdmVyIHN1Y2Nlc3NmdWxseSBsb2FkZWQiKTsKIAlyZXR1cm4gMDsKIGVycm9yNzoKIAlmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmggYi9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5oCmluZGV4IGVlZTI2NGUuLmM1NzI2YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmgKKysrIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L3I1OTIuaApAQCAtNDMsMTIgKzQzLDEyIEBACiAKIAkJCQkJCQkvKiBFcnJvciBkZXRlY3Rpb24gdmlhIENSQyAqLwogI2RlZmluZSBSNTkyX1NUQVRVU19TRU5EX0VSUgkJKDEgPDwgMjQpCS8qIFNlbmQgZmFpbGVkICovCi0jZGVmaW5lIFI1OTJfU1RBVFVTX1JFQ1ZfRVJSCQkoMSA8PCAyNSkJLyogUmVjaWV2ZSBmYWlsZWQgKi8KKyNkZWZpbmUgUjU5Ml9TVEFUVVNfUkVDVl9FUlIJCSgxIDw8IDI1KQkvKiBSZWNlaXZlIGZhaWxlZCAqLwogCiAJCQkJCQkJLyogQ2FyZCBzdGF0ZSAqLwotI2RlZmluZSBSNTkyX1NUQVRVU19SRFkJCQkoMSA8PCAyOCkJLyogUkRZIHNpZ25hbCByZWNpZXZlZCAqLworI2RlZmluZSBSNTkyX1NUQVRVU19SRFkJCQkoMSA8PCAyOCkJLyogUkRZIHNpZ25hbCByZWNlaXZlZCAqLwogI2RlZmluZSBSNTkyX1NUQVRVU19DRUQJCQkoMSA8PCAyOSkJLyogSU5UOiBDb21tYW5kIGRvbmUgKHNlcmlhbCBtb2RlKSovCi0jZGVmaW5lIFI1OTJfU1RBVFVTX1NGSUZPX0lOUFVUCQkoMSA8PCAzMCkJLyogU21hbGwgZmlmbyByZWNpZXZlZCBkYXRhKi8KKyNkZWZpbmUgUjU5Ml9TVEFUVVNfU0ZJRk9fSU5QVVQJCSgxIDw8IDMwKQkvKiBTbWFsbCBmaWZvIHJlY2VpdmVkIGRhdGEqLwogCiAjZGVmaW5lIFI1OTJfU0ZJRk9fU0laRQkJCTMyCQkvKiB0b3RhbCBzaXplIG9mIHNtYWxsIGZpZm8gaXMgMzIgYnl0ZXMgKi8KICNkZWZpbmUgUjU5Ml9TRklGT19QQUNLRVQJCTgJCS8qIHBhY2tldCBzaXplIG9mIHNtYWxsIGZpZm8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfZmMuaCBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfZmMuaAppbmRleCBmYWNlNmU3Li4wM2JlOGIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL2xzaS9tcGlfbG9nX2ZjLmgKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19mYy5oCkBAIC0zOCw4ICszOCw4IEBACiB7CiAgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9CQVNFICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAwMDAwLAogICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfT1VUX09GX09SREVSX0ZSQU1FID0gMHgyMDAwMDAwMSwgLyogcmVjZWl2ZWQgYW4gb3V0IG9mIG9yZGVyIGZyYW1lIC0gdW5zdXBwb3J0ZWQgKi8KLSAgICBNUElfSU9DTE9HSU5GT19GQ19JTklUX0VSUk9SX0JBRF9TVEFSVF9PRl9GUkFNRSA9IDB4MjAwMDAwMDIsIC8qIEJhZCBSeCBGcmFtZSwgYmFkIHN0YXJ0IG9mIGZyYW1lIHByaW1hdGl2ZSAqLwotICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfQkFEX0VORF9PRl9GUkFNRSAgID0gMHgyMDAwMDAwMywgLyogQmFkIFJ4IEZyYW1lLCBiYWQgZW5kIG9mIGZyYW1lIHByaW1hdGl2ZSAqLworICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfQkFEX1NUQVJUX09GX0ZSQU1FID0gMHgyMDAwMDAwMiwgLyogQmFkIFJ4IEZyYW1lLCBiYWQgc3RhcnQgb2YgZnJhbWUgcHJpbWl0aXZlICovCisgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9FUlJPUl9CQURfRU5EX09GX0ZSQU1FICAgPSAweDIwMDAwMDAzLCAvKiBCYWQgUnggRnJhbWUsIGJhZCBlbmQgb2YgZnJhbWUgcHJpbWl0aXZlICovCiAgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9FUlJPUl9PVkVSX1JVTiAgICAgICAgICAgPSAweDIwMDAwMDA0LCAvKiBCYWQgUnggRnJhbWUsIG92ZXJydW4gKi8KICAgICBNUElfSU9DTE9HSU5GT19GQ19JTklUX0VSUk9SX1JYX09USEVSICAgICAgICAgICA9IDB4MjAwMDAwMDUsIC8qIE90aGVyIGVycm9ycyBjYXVnaHQgYnkgSU9DIHdoaWNoIHJlcXVpcmUgcmV0cmllcyAqLwogICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfU1VCUFJPQ19ERUFEICAgICAgID0gMHgyMDAwMDAwNiwgLyogTWFpbiBwcm9jZXNzb3IgY291bGQgbm90IGluaXRpYWxpemUgc3ViLXByb2Nlc3NvciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19zYXMuaCBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfc2FzLmgKaW5kZXggOGIwNDgxMC4uZjYyOTYwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19zYXMuaAorKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL2xzaS9tcGlfbG9nX3Nhcy5oCkBAIC01Niw5ICs1Niw5IEBACiAjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfTk9fRkxBU0hfQVZBSUxBQkxFICAgICAgICAgKDB4MDAwM0UwMDApIC8qIFRyaWVkIHRvIHVwbG9hZCBmcm9tIGZsYXNoLCBidXQgdGhlcmUgaXMgbm9uZSAqLwogI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX1VOS05PV05fSU1BR0VfVFlQRSAgICAgICAgICgweDAwMDNFMDAxKSAvKiBJbWFnZVR5cGUgZmllbGQgY29udGVudHMgd2VyZSBpbnZhbGlkICovCiAjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfV1JPTkdfSU1BR0VfU0laRSAgICAgICAgICAgKDB4MDAwM0UwMDIpIC8qIEltYWdlU2l6ZSBmaWVsZCBpbiBUQ1NHRSB3YXMgYmFkL29mZnNldCBpbiBNZmdQZyA0IHdhcyB3cm9uZyAqLwotI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX0VOVElSRV9GTEFTSF9VUExPQURfRkFJTEVEICgweDAwMDNFMDAzKSAvKiBFcnJvciBvY2N1cmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gdXBsb2FkIHRoZSBlbnRpcmUgZmxhc2ggKi8KLSNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9GV1VQTE9BRF9SRUdJT05fVVBMT0FEX0ZBSUxFRCAgICAgICAoMHgwMDAzRTAwNCkgLyogRXJyb3Igb2NjdXJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwbG9hZCBzaW5nbGUgZmxhc2ggcmVnaW9uICovCi0jZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfRE1BX0ZBSUxVUkUgICAgICAgICAgICAgICAgKDB4MDAwM0UwMDUpIC8qIFByb2JsZW0gb2NjdXJlZCB3aGlsZSBETUFpbmcgRlcgdG8gaG9zdCBtZW1vcnkgKi8KKyNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9GV1VQTE9BRF9FTlRJUkVfRkxBU0hfVVBMT0FEX0ZBSUxFRCAoMHgwMDAzRTAwMykgLyogRXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byB1cGxvYWQgdGhlIGVudGlyZSBmbGFzaCAqLworI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX1JFR0lPTl9VUExPQURfRkFJTEVEICAgICAgICgweDAwMDNFMDA0KSAvKiBFcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwbG9hZCBzaW5nbGUgZmxhc2ggcmVnaW9uICovCisjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfRE1BX0ZBSUxVUkUgICAgICAgICAgICAgICAgKDB4MDAwM0UwMDUpIC8qIFByb2JsZW0gb2NjdXJyZWQgd2hpbGUgRE1BaW5nIEZXIHRvIGhvc3QgbWVtb3J5ICovCiAKICNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9ESUFHX01TR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAoMHgwMDA0MDAwMCkgLyogRXJyb3IgaGFuZGxpbmcgZGlhZyBtc2cgLSBvcidkIHdpdGggZGlhZyBzdGF0dXMgKi8KIApAQCAtMTg3LDggKzE4Nyw4IEBACiAjZGVmaW5lIFBMX0xPR0lORk9fU1VCX0NPREVfQlJFQUtfT05fSU5DT01QTEVURV9CUkVBS19SQ1ZEICAgKDB4MDAwMDUwMDApCiAKICNkZWZpbmUgUExfTE9HSU5GT19DT0RFX0VOQ0xfTUdNVF9TTVBfRlJBTUVfRkFJTFVSRSAgICAgICAgICAoMHgwMDIwMDAwMCkgLyogQ2FuJ3QgZ2V0IFNNUCBGcmFtZSAqLwotI2RlZmluZSBQTF9MT0dJTkZPX0NPREVfRU5DTF9NR01UX1NNUF9SRUFEX0VSUk9SICAgICAgICAgICAgICgweDAwMjAwMDEwKSAvKiBFcnJvciBvY2N1cmVkIG9uIFNNUCBSZWFkICovCi0jZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1dSSVRFX0VSUk9SICAgICAgICAgICAgKDB4MDAyMDAwMjApIC8qIEVycm9yIG9jY3VyZWQgb24gU01QIFdyaXRlICovCisjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1JFQURfRVJST1IgICAgICAgICAgICAgKDB4MDAyMDAwMTApIC8qIEVycm9yIG9jY3VycmVkIG9uIFNNUCBSZWFkICovCisjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1dSSVRFX0VSUk9SICAgICAgICAgICAgKDB4MDAyMDAwMjApIC8qIEVycm9yIG9jY3VycmVkIG9uIFNNUCBXcml0ZSAqLwogI2RlZmluZSBQTF9MT0dJTkZPX0NPREVfRU5DTF9NR01UX05PVF9TVVBQT1JURURfT05fRU5DTCAgICAgICgweDAwMjAwMDQwKSAvKiBFbmNsIE1nbXQgc2VydmljZXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBXV0lEICovCiAjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfQUREUl9NT0RFX05PVF9TVVBQT1JURUQgICAgKDB4MDAyMDAwNTApIC8qIEFkZHJlc3MgTW9kZSBub3Qgc3VwcG9yZWQgKi8KICNkZWZpbmUgUExfTE9HSU5GT19DT0RFX0VOQ0xfTUdNVF9CQURfU0xPVF9OVU0gICAgICAgICAgICAgICAoMHgwMDIwMDA2MCkgLyogSW52YWxpZCBTbG90IE51bWJlciBpbiBTRVAgTXNnICovCkBAIC0yMDcsOCArMjA3LDggQEAKICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfUkVDRUlWRURfTkFDS19GUk9NX1NMQVZFICAgICAgICAgICAoMHgwMDIwMDEwMykgLyogU0VQIE5BQ0snZCwgaXQgaXMgYnVzeSAqLwogI2RlZmluZSBQTF9MT0dJTkZPX0RBX1NFUF9ESURfTk9UX1JFQ0VJVkVfQUNLICAgICAgICAgICAgICAgICgweDAwMjAwMTA0KSAvKiBTRVAgZGlkbid0IHJjdi4gQUNLIChMYXN0IFJjdmQgQml0ID0gMSkgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfQkFEX1NUQVRVU19IRFJfQ0hLU1VNICAgICAgICAgICAgICAoMHgwMDIwMDEwNSkgLyogU0VQIHN0b3BwZWQgb3Igc2VudCBiYWQgY2hrc3VtIGluIEhkciAqLwotI2RlZmluZSBQTF9MT0dJTkZPX0RBX1NFUF9TVE9QX09OX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICgweDAwMjAwMTA2KSAvKiBTRVAgc3RvcHBlZCB3aGlsZSB0cmFuc2ZlcmluZyBkYXRhICovCi0jZGVmaW5lIFBMX0xPR0lORk9fREFfU0VQX1NUT1BfT05fU0VOU0VfREFUQSAgICAgICAgICAgICAgICAgKDB4MDAyMDAxMDcpIC8qIFNFUCBzdG9wcGVkIHdoaWxlIHRyYW5zZmVyaW5nIHNlbnNlIGRhdGEgKi8KKyNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfU1RPUF9PTl9EQVRBICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDIwMDEwNikgLyogU0VQIHN0b3BwZWQgd2hpbGUgdHJhbnNmZXJyaW5nIGRhdGEgKi8KKyNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfU1RPUF9PTl9TRU5TRV9EQVRBICAgICAgICAgICAgICAgICAoMHgwMDIwMDEwNykgLyogU0VQIHN0b3BwZWQgd2hpbGUgdHJhbnNmZXJyaW5nIHNlbnNlIGRhdGEgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfVU5TVVBQT1JURURfU0NTSV9TVEFUVVNfMSAgICAgICAgICAoMHgwMDIwMDEwOCkgLyogU0VQIHJldHVybmVkIHVua25vd24gc2NzaSBzdGF0dXMgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfVU5TVVBQT1JURURfU0NTSV9TVEFUVVNfMiAgICAgICAgICAoMHgwMDIwMDEwOSkgLyogU0VQIHJldHVybmVkIHVua25vd24gc2NzaSBzdGF0dXMgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfQ0hLU1VNX0VSUk9SX0FGVEVSX1NUT1AgICAgICAgICAgICAoMHgwMDIwMDEwQSkgLyogU0VQIHJldHVybmVkIGJhZCBjaGtzdW0gYWZ0ZXIgU1RPUCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmMgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwppbmRleCBlYzgwODBjLi5mYTE1ZTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwpAQCAtMzQzNSw3ICszNDM1LDcgQEAKICAqCUlmIG1lbW9yeSBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCwgdGhlIHNhbWUgKGNhY2hlZCkgdmFsdWUKICAqCWlzIHJldHVybmVkLgogICoKLSAqCVJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciBub24temVybyBmb3IgZmFpbHVyZQorICoJUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgb3Igbm9uLXplcm8gZm9yIGZhaWx1cmUKICAqKi8KIGludAogbXB0X2FsbG9jX2Z3X21lbW9yeShNUFRfQURBUFRFUiAqaW9jLCBpbnQgc2l6ZSkKQEAgLTY5MzIsNyArNjkzMiw3IEBACiAgKglNZXNzYWdlIFVuaXQgUmVzZXQgLSBpbnN0cnVjdHMgdGhlIElPQyB0byByZXNldCB0aGUgUmVwbHkgUG9zdCBhbmQKICAqCUZyZWUgRklGTydzLiBBbGwgdGhlIE1lc3NhZ2UgRnJhbWVzIG9uIFJlcGx5IEZyZWUgRklGTyBhcmUgZGlzY2FyZGVkLgogICoJQWxsIHBvc3RlZCBidWZmZXJzIGFyZSBmcmVlZCwgYW5kIGV2ZW50IG5vdGlmaWNhdGlvbiBpcyB0dXJuZWQgb2ZmLgotICoJSU9DIGRvZXNudCByZXBseSB0byBhbnkgb3V0c3RhbmRpbmcgcmVxdWVzdC4gVGhpcyB3aWxsIHRyYW5zZmVyIElPQworICoJSU9DIGRvZXNuJ3QgcmVwbHkgdG8gYW55IG91dHN0YW5kaW5nIHJlcXVlc3QuIFRoaXMgd2lsbCB0cmFuc2ZlciBJT0MKICAqCXRvIFJFQURZIHN0YXRlLgogICoqLwogaW50CkBAIC03OTA1LDcgKzc5MDUsNyBAQAogCQkgICAgIk93bmVyIiwgCQkJCQkvKiAxNWggKi8KIAkJIk9wZW4gVHJhbnNtaXQgRE1BIEFib3J0IiwJCQkvKiAxNmggKi8KIAkJIklPIERldmljZSBNaXNzaW5nIERlbGF5IFJldHJ5IiwJCS8qIDE3aCAqLwotCQkiSU8gQ2FuY2VsbGVkIER1ZSB0byBSZWNpZXZlIEVycm9yIiwJCS8qIDE4aCAqLworCQkiSU8gQ2FuY2VsbGVkIER1ZSB0byBSZWNlaXZlIEVycm9yIiwJCS8qIDE4aCAqLwogCQlOVUxMLAkJCQkJCS8qIDE5aCAqLwogCQlOVUxMLAkJCQkJCS8qIDFBaCAqLwogCQlOVUxMLAkJCQkJCS8qIDFCaCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0Y3RsLmMKaW5kZXggODc4YmRhMC4uNmU2ZTE2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGN0bC5jCkBAIC05ODUsNyArOTg1LDcgQEAKIAlSZXBseU1zZyA9IChwRldEb3dubG9hZFJlcGx5X3QpaW9jcC0+aW9jdGxfY21kcy5yZXBseTsKIAlpb2NzdGF0ID0gbGUxNl90b19jcHUoUmVwbHlNc2ctPklPQ1N0YXR1cykgJiBNUElfSU9DU1RBVFVTX01BU0s7CiAJaWYgKGlvY3N0YXQgPT0gTVBJX0lPQ1NUQVRVU19TVUNDRVNTKSB7Ci0JCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJGL1cgdXBkYXRlIHN1Y2Nlc3NmdWxsIVxuIiwgaW9jcC0+bmFtZSk7CisJCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJGL1cgdXBkYXRlIHN1Y2Nlc3NmdWwhXG4iLCBpb2NwLT5uYW1lKTsKIAkJcmV0dXJuIDA7CiAJfSBlbHNlIGlmIChpb2NzdGF0ID09IE1QSV9JT0NTVEFUVVNfSU5WQUxJRF9GVU5DVElPTikgewogCQlwcmludGsoTVlJT0Nfc19XQVJOX0ZNVCAiSG1tbS4uLiAgRi9XIGRvd25sb2FkIG5vdCBzdXBwb3J0ZWQhPyFcbiIsCkBAIC0yNDA3LDcgKzI0MDcsNyBAQAogCX0KIAogCS8qIG1mIGlzIG51bGwgaWYgY29tbWFuZCBpc3N1ZWQgc3VjY2Vzc2Z1bGx5Ci0JICogb3RoZXJ3aXNlLCBmYWlsdXJlIG9jY3VyZWQgYWZ0ZXIgbWYgYWNxdWlyZWQuCisJICogb3RoZXJ3aXNlLCBmYWlsdXJlIG9jY3VycmVkIGFmdGVyIG1mIGFjcXVpcmVkLgogCSAqLwogCWlmIChtZikKIAkJbXB0X2ZyZWVfbXNnX2ZyYW1lKGlvYywgbWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzYXMuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2FzLmMKaW5kZXggZjVhMTRhZi4uNjZmOTQxMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2FzLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzYXMuYwpAQCAtMzA3LDcgKzMwNyw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9jLT5md19ldmVudF9sb2NrLCBmbGFncyk7CiB9CiAKLS8qIGZyZWUgbWVtb3J5IGFzc29pY2F0ZWQgdG8gYSBzYXMgZmlybXdhcmUgZXZlbnQgKi8KKy8qIGZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgdG8gYSBzYXMgZmlybXdhcmUgZXZlbnQgKi8KIHN0YXRpYyB2b2lkCiBtcHRzYXNfZnJlZV9md19ldmVudChNUFRfQURBUFRFUiAqaW9jLCBzdHJ1Y3QgZndfZXZlbnRfd29yayAqZndfZXZlbnQpCiB7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQAogLyoqCiAgKiBtcHRzYXNfdGFyZ2V0X3Jlc2V0X3F1ZXVlCiAgKgotICogUmVjZWl2ZSByZXF1ZXN0IGZvciBUQVJHRVRfUkVTRVQgYWZ0ZXIgcmVjaWV2aW5nIGFuIGZpcm13YXJlCisgKiBSZWNlaXZlIHJlcXVlc3QgZm9yIFRBUkdFVF9SRVNFVCBhZnRlciByZWNlaXZpbmcgYW4gZmlybXdhcmUKICAqIGV2ZW50IE5PVF9SRVNQT05ESU5HX0VWRU5ULCB0aGVuIHB1dCBjb21tYW5kIGluIGxpbmsgbGlzdAogICogYW5kIHF1ZXVlIGlmIHRhc2tfcXVldWUgYWxyZWFkeSBpbiB1c2UuCiAgKgpAQCAtMTQwMyw3ICsxNDAzLDcgQEAKIC8qKgogICoJbXB0c2FzX2FkZF9lbmRfZGV2aWNlIC0gcmVwb3J0IGEgbmV3IGVuZCBkZXZpY2UgdG8gc2FzIHRyYW5zcG9ydCBsYXllcgogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwaHlfaW5mbzogZGVjcmliZXMgYXR0YWNoZWQgZGV2aWNlCisgKglAcGh5X2luZm86IGRlc2NyaWJlcyBhdHRhY2hlZCBkZXZpY2UKICAqCiAgKglyZXR1cm4gKDApIHN1Y2Nlc3MgKDEpIGZhaWx1cmUKICAqCkBAIC0xNDgxLDcgKzE0ODEsNyBAQAogLyoqCiAgKgltcHRzYXNfZGVsX2VuZF9kZXZpY2UgLSByZXBvcnQgYSBkZWxldGVkIGVuZCBkZXZpY2UgdG8gc2FzIHRyYW5zcG9ydCBsYXllcgogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwaHlfaW5mbzogZGVjcmliZXMgYXR0YWNoZWQgZGV2aWNlCisgKglAcGh5X2luZm86IGRlc2NyaWJlcyBhdHRhY2hlZCBkZXZpY2UKICAqCiAgKiovCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9SRUFETUUgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQppbmRleCA5MTFmYzMwLi5mMDcyYThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQorKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQpAQCAtNTMsNyArNTMsNyBAQAogQm94SGlsbCBDb3Jwb3JhdGlvbgogCUxvYW4gb2YgaW5pdGlhbCBGaWJyZUNoYW5uZWwgZGlzayBhcnJheSB1c2VkIGZvciBkZXZlbG9wbWVudCB3b3JrLgogCi1FdXJvcGVhbiBDb21pc3Npb24KK0V1cm9wZWFuIENvbW1pc3Npb24KIAlGdW5kaW5nIHRoZSB3b3JrIGRvbmUgYnkgdGhlIFVuaXZlcnNpdHkgb2YgSGVsc2lua2kKIAogU3lzS29ubmVjdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9kZXZpY2UuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vZGV2aWNlLmMKaW5kZXggMGVlNDI2NC4uNDU0N2RiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9kZXZpY2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2RldmljZS5jCkBAIC02NSw3ICs2NSw3IEBACiAKIAlyYyA9IGkyb19kZXZpY2VfaXNzdWVfY2xhaW0oZGV2LCBJMk9fQ01EX1VUSUxfQ0xBSU0sIEkyT19DTEFJTV9QUklNQVJZKTsKIAlpZiAoIXJjKQotCQlwcl9kZWJ1ZygiaTJvOiBjbGFpbSBvZiBkZXZpY2UgJWQgc3VjY2VkZWRcbiIsCisJCXByX2RlYnVnKCJpMm86IGNsYWltIG9mIGRldmljZSAlZCBzdWNjZWVkZWRcbiIsCiAJCQkgZGV2LT5sY3RfZGF0YS50aWQpOwogCWVsc2UKIAkJcHJfZGVidWcoImkybzogY2xhaW0gb2YgZGV2aWNlICVkIGZhaWxlZCAlZFxuIiwKQEAgLTExMCw3ICsxMTAsNyBAQAogCX0KIAogCWlmICghcmMpCi0JCXByX2RlYnVnKCJpMm86IGNsYWltIHJlbGVhc2Ugb2YgZGV2aWNlICVkIHN1Y2NlZGVkXG4iLAorCQlwcl9kZWJ1ZygiaTJvOiBjbGFpbSByZWxlYXNlIG9mIGRldmljZSAlZCBzdWNjZWVkZWRcbiIsCiAJCQkgZGV2LT5sY3RfZGF0YS50aWQpOwogCWVsc2UKIAkJcHJfZGVidWcoImkybzogY2xhaW0gcmVsZWFzZSBvZiBkZXZpY2UgJWQgZmFpbGVkICVkXG4iLApAQCAtMjQ4LDcgKzI0OCw3IEBACiAJCQlnb3RvIHVucmVnX2RldjsKIAl9CiAKLQkvKiBjcmVhdGUgdXNlciBlbnRyaWVzIHJlZmVyaW5nIHRvIHRoaXMgZGV2aWNlICovCisJLyogY3JlYXRlIHVzZXIgZW50cmllcyByZWZlcnJpbmcgdG8gdGhpcyBkZXZpY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmMtPmRldmljZXMsIGxpc3QpCiAJICAgIGlmICgodG1wLT5sY3RfZGF0YS51c2VyX3RpZCA9PSBpMm9fZGV2LT5sY3RfZGF0YS50aWQpCiAJCSYmICh0bXAgIT0gaTJvX2RldikpIHsKQEAgLTI2Nyw3ICsyNjcsNyBAQAogCQkJZ290byBybWxpbmsxOwogCX0KIAotCS8qIGNyZWF0ZSBwYXJlbnQgZW50cmllcyByZWZlcmluZyB0byB0aGlzIGRldmljZSAqLworCS8qIGNyZWF0ZSBwYXJlbnQgZW50cmllcyByZWZlcnJpbmcgdG8gdGhpcyBkZXZpY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmMtPmRldmljZXMsIGxpc3QpCiAJICAgIGlmICgodG1wLT5sY3RfZGF0YS5wYXJlbnRfdGlkID09IGkyb19kZXYtPmxjdF9kYXRhLnRpZCkKIAkJJiYgKHRtcCAhPSBpMm9fZGV2KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmMKaW5kZXggNDdlYzViYy4uNjQzYWQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19ibG9jay5jCkBAIC02MTAsNyArNjEwLDcgQEAKIAogCS8qCiAJICogVGhpcyBpcyB0byBkZWFpbCB3aXRoIHRoZSBjYXNlIG9mIGFuIGFwcGxpY2F0aW9uCi0JICogb3BlbmluZyBhIGRldmljZSBhbmQgdGhlbiB0aGUgZGV2aWNlIGRpc3NhcGVhcnMgd2hpbGUKKwkgKiBvcGVuaW5nIGEgZGV2aWNlIGFuZCB0aGVuIHRoZSBkZXZpY2UgZGlzYXBwZWFycyB3aGlsZQogCSAqIGl0J3MgaW4gdXNlLCBhbmQgdGhlbiB0aGUgYXBwbGljYXRpb24gdHJpZXMgdG8gcmVsZWFzZQogCSAqIGl0LiAgZXg6IFVubW91bnRpbmcgYSBkZWxldGVkIFJBSUQgdm9sdW1lIGF0IHJlYm9vdC4KIAkgKiBJZiB3ZSBzZW5kIG1lc3NhZ2VzLCBpdCB3aWxsIGp1c3QgY2F1c2UgRkFJTHMgc2luY2UKQEAgLTcxNyw3ICs3MTcsNyBAQAogCiAvKioKICAqCWkyb19ibG9ja190cmFuc2ZlciAtIFRyYW5zZmVyIGEgcmVxdWVzdCB0by9mcm9tIHRoZSBJMk8gY29udHJvbGxlcgotICoJQHJlcTogdGhlIHJlcXVlc3Qgd2hpY2ggc2hvdWxkIGJlIHRyYW5zZmVyZWQKKyAqCUByZXE6IHRoZSByZXF1ZXN0IHdoaWNoIHNob3VsZCBiZSB0cmFuc2ZlcnJlZAogICoKICAqCVRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJlcXVlc3QgaW50byBhIEkyTyBtZXNzYWdlLiBUaGUgbmVjZXNzYXJ5CiAgKglETUEgYnVmZmVycyBhcmUgYWxsb2NhdGVkIGFuZCBhZnRlciBldmVyeXRoaW5nIGlzIHNldHVwIHBvc3QgdGhlIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmggYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19ibG9jay5oCmluZGV4IDY3ZjkyMWIuLmNmODg3M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmgKKysrIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suaApAQCAtNzMsNyArNzMsNyBAQAogCXN0cnVjdCBpMm9fZGV2aWNlICppMm9fZGV2OwkvKiBwb2ludGVyIHRvIEkyTyBkZXZpY2UgKi8KIAlzdHJ1Y3QgZ2VuZGlzayAqZ2Q7CiAJc3BpbmxvY2tfdCBsb2NrOwkvKiBxdWV1ZSBsb2NrICovCi0Jc3RydWN0IGxpc3RfaGVhZCBvcGVuX3F1ZXVlOwkvKiBsaXN0IG9mIHRyYW5zZmVyZWQsIGJ1dCB1bmZpbmlzaGVkCisJc3RydWN0IGxpc3RfaGVhZCBvcGVuX3F1ZXVlOwkvKiBsaXN0IG9mIHRyYW5zZmVycmVkLCBidXQgdW5maW5pc2hlZAogCQkJCQkgICByZXF1ZXN0cyAqLwogCXVuc2lnbmVkIGludCBvcGVuX3F1ZXVlX2RlcHRoOwkvKiBudW1iZXIgb2YgcmVxdWVzdHMgaW4gdGhlIHF1ZXVlICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYwppbmRleCA5N2JkZjgyLi5mMDAzOTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19zY3NpLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fc2NzaS5jCkBAIC0yMDQsNyArMjA0LDcgQEAKICAqCWkyb19zY3NpX3Byb2JlIC0gdmVyaWZ5IGlmIGRldiBpcyBhIEkyTyBTQ1NJIGRldmljZSBhbmQgaW5zdGFsbCBpdAogICoJQGRldjogZGV2aWNlIHRvIHZlcmlmeSBpZiBpdCBpcyBhIEkyTyBTQ1NJIGRldmljZQogICoKLSAqCVJldHJpZXZlIGNoYW5uZWwsIGlkIGFuZCBsdW4gZm9yIEkyTyBkZXZpY2UuIElmIGV2ZXJ0aGluZyBnb2VzIHdlbGwKKyAqCVJldHJpZXZlIGNoYW5uZWwsIGlkIGFuZCBsdW4gZm9yIEkyTyBkZXZpY2UuIElmIGV2ZXJ5dGhpbmcgZ29lcyB3ZWxsCiAgKglyZWdpc3RlciB0aGUgSTJPIGRldmljZSBhcyBTQ1NJIGRldmljZSBvbiB0aGUgSTJPIFNDU0kgY29udHJvbGxlci4KICAqCiAgKglSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwppbmRleCBlMmZlYTU4Li4zZWQzZmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcKQEAgLTIwMSw3ICsyMDEsNyBAQAogCSAgYXMgY2xvY2sgcmVxdWVzdCBoYW5kc2hha2luZy4KIAogCSAgVGhpcyBkcml2ZXIgdXNlcyBib2FyZC1zcGVjaWZpYyBkYXRhIHRvIGluaXRpYWxpemUgdGhlIHJlc291cmNlcwotCSAgYW5kIGxvYWQgc2NyaXB0cyBjb250cm9saW5nIHdoaWNoIHJlc291cmNlcyBhcmUgc3dpdGNoZWQgb2ZmL29uCisJICBhbmQgbG9hZCBzY3JpcHRzIGNvbnRyb2xsaW5nIHdoaWNoIHJlc291cmNlcyBhcmUgc3dpdGNoZWQgb2ZmL29uCiAJICBvciByZXNldCB3aGVuIGEgc2xlZXAsIHdha2V1cCBvciB3YXJtIHJlc2V0IGV2ZW50IG9jY3Vycy4KIAogY29uZmlnIFRXTDQwMzBfQ09ERUMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2FiODUwMC1ncGFkYy5jIGIvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKaW5kZXggYmM5M2IyZS4uNjQyMWFkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKKysrIGIvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogCS8qIHdhaXQgZm9yIGNvbXBsZXRpb24gb2YgY29udmVyc2lvbiAqLwogCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZncGFkYy0+YWI4NTAwX2dwYWRjX2NvbXBsZXRlLCAyKkhaKSkgewogCQlkZXZfZXJyKGdwYWRjLT5kZXYsCi0JCQkidGltZW91dDogZGlkbnQgcmVjaWV2ZSBHUEFEQyBjb252ZXJzaW9uIGludGVycnVwdFxuIik7CisJCQkidGltZW91dDogZGlkbid0IHJlY2VpdmUgR1BBREMgY29udmVyc2lvbiBpbnRlcnJ1cHRcbiIpOwogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9lengtcGNhcC5jIGIvZHJpdmVycy9tZmQvZXp4LXBjYXAuYwppbmRleCBmMmY0MDI5Li40M2E3NmM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9lengtcGNhcC5jCisrKyBiL2RyaXZlcnMvbWZkL2V6eC1wY2FwLmMKQEAgLTE4NSw3ICsxODUsNyBAQAogCQllenhfcGNhcF9yZWFkKHBjYXAsIFBDQVBfUkVHX01TUiwgJm1zcik7CiAJCWV6eF9wY2FwX3JlYWQocGNhcCwgUENBUF9SRUdfSVNSLCAmaXNyKTsKIAotCQkvKiBXZSBjYW50IHNlcnZpY2UvYWNrIGlycXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gcG9ydCAyICovCisJCS8qIFdlIGNhbid0IHNlcnZpY2UvYWNrIGlycXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gcG9ydCAyICovCiAJCWlmICghKHBkYXRhLT5jb25maWcgJiBQQ0FQX1NFQ09ORF9QT1JUKSkgewogCQkJZXp4X3BjYXBfcmVhZChwY2FwLCBQQ0FQX1JFR19JTlRfU0VMLCAmaW50X3NlbCk7CiAJCQlpc3IgJj0gfmludF9zZWw7CkBAIC00NTcsNyArNDU3LDcgQEAKIAlwY2FwLT53b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgicGNhcGQiKTsKIAlpZiAoIXBjYXAtPndvcmtxdWV1ZSkgewogCQlyZXQgPSAtRU5PTUVNOwotCQlkZXZfZXJyKCZzcGktPmRldiwgImNhbnQgY3JlYXRlIHBjYXAgdGhyZWFkXG4iKTsKKwkJZGV2X2Vycigmc3BpLT5kZXYsICJjYW4ndCBjcmVhdGUgcGNhcCB0aHJlYWRcbiIpOwogCQlnb3RvIGZyZWVfcGNhcDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL29tYXAtdXNiLWhvc3QuYyBiL2RyaXZlcnMvbWZkL29tYXAtdXNiLWhvc3QuYwppbmRleCBjYjAxMjA5Li41MzQ1MGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9vbWFwLXVzYi1ob3N0LmMKKysrIGIvZHJpdmVycy9tZmQvb21hcC11c2ItaG9zdC5jCkBAIC0zMzIsNyArMzMyLDcgQEAKIAlpbnQJCQkJaTsKIAogCWlmICghcGRhdGEpIHsKLQkJZGV2X2VycihkZXYsICJNaXNzaW5nIHBsYXRmcm9tIGRhdGFcbiIpOworCQlkZXZfZXJyKGRldiwgIk1pc3NpbmcgcGxhdGZvcm0gZGF0YVxuIik7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gZW5kX3Byb2JlOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYyBiL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYwppbmRleCBjNzY4N2Y2Li41Nzg2ODQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvcGNmNTA2MzMtY29yZS5jCisrKyBiL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYwpAQCAtNTEsNyArNTEsNyBAQAogCiB9CiAKLS8qIFJlYWQgYSBibG9jayBvZiB1cHRvIDMyIHJlZ3MgICovCisvKiBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gMzIgcmVncyAgKi8KIGludCBwY2Y1MDYzM19yZWFkX2Jsb2NrKHN0cnVjdCBwY2Y1MDYzMyAqcGNmLCB1OCByZWcsCiAJCQkJCWludCBucl9yZWdzLCB1OCAqZGF0YSkKIHsKQEAgLTY1LDcgKzY1LDcgQEAKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBjZjUwNjMzX3JlYWRfYmxvY2spOwogCi0vKiBXcml0ZSBhIGJsb2NrIG9mIHVwdG8gMzIgcmVncyAgKi8KKy8qIFdyaXRlIGEgYmxvY2sgb2YgdXAgdG8gMzIgcmVncyAgKi8KIGludCBwY2Y1MDYzM193cml0ZV9ibG9jayhzdHJ1Y3QgcGNmNTA2MzMgKnBjZiAsIHU4IHJlZywKIAkJCQkJaW50IG5yX3JlZ3MsIHU4ICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvdHdsNjAzMC1pcnEuYyBiL2RyaXZlcnMvbWZkL3R3bDYwMzAtaXJxLmMKaW5kZXggZmE5MzcwNS4uZGZiYWUzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdHdsNjAzMC1pcnEuYworKysgYi9kcml2ZXJzL21mZC90d2w2MDMwLWlycS5jCkBAIC0yMjksNyArMjI5LDcgQEAKIAl0d2w2MDMwX2ludGVycnVwdF91bm1hc2soVFdMNjAzMF9NTUNERVRFQ1RfSU5UX01BU0ssCiAJCQkJCQlSRUdfSU5UX01TS19TVFNfQik7CiAJLyoKLQkgKiBJbnRpYWxseSBDb25maWd1cmluZyBNTUNfQ1RSTCBmb3IgcmVjZXZpbmcgaW50ZXJydXB0cyAmCisJICogSW5pdGlhbGx5IENvbmZpZ3VyaW5nIE1NQ19DVFJMIGZvciByZWNlaXZpbmcgaW50ZXJydXB0cyAmCiAJICogQ2FyZCBzdGF0dXMgb24gVFdMNjAzMCBmb3IgTU1DMQogCSAqLwogCXJldCA9IHR3bF9pMmNfcmVhZF91OChUV0w2MDMwX01PRFVMRV9JRDAsICZyZWdfdmFsLCBUV0w2MDMwX01NQ0NUUkwpOwpAQCAtMjc1LDcgKzI3NSw3IEBACiAJCS8qIFRXTDYwMzAgcHJvdmlkZSdzIENhcmQgZGV0ZWN0IHN1cHBvcnQgZm9yCiAJCSAqIG9ubHkgTU1DMSBjb250cm9sbGVyLgogCQkgKi8KLQkJcHJfZXJyKCJVbmtvd24gTU1DIGNvbnRyb2xsZXIgJWQgaW4gJXNcbiIsIHBkZXYtPmlkLCBfX2Z1bmNfXyk7CisJCXByX2VycigiVW5rbm93biBNTUMgY29udHJvbGxlciAlZCBpbiAlc1xuIiwgcGRldi0+aWQsIF9fZnVuY19fKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3VjYjE0MDBfY29yZS5jIGIvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKaW5kZXggZDczZjg0Yi4uZGFmNjk1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKKysrIGIvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKQEAgLTgsNyArOCw3IEBACiAgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCiAgKgogICogU3BsaXRpbmcgZG9uZSBieTogTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqIElmIHNvbWV0aGluZyBkb2VzbnQgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAorICogSWYgc29tZXRoaW5nIGRvZXNuJ3Qgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAogICogZG9udCBib3RoZXIgTmljb2xhcyBwbGVhc2UgOy0pCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9ibXAwODUuYyBiL2RyaXZlcnMvbWlzYy9ibXAwODUuYwppbmRleCBlY2QyNzZhLi41Zjg5OGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvYm1wMDg1LmMKKysrIGIvZHJpdmVycy9taXNjL2JtcDA4NS5jCkBAIC0yLDcgKzIsNyBAQAogCiAgICAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGJtcDA4NSBkaWdpdGFsIGJhcm9tZXRyaWMgcHJlc3N1cmUKICAgICBhbmQgdGVtcGVyYXR1cmUgc2Vuc29yIGZyb20gQm9zY2ggU2Vuc29ydGVjLiBUaGUgZGF0YXNoZWV0Ci0gICAgaXMgYXZhbGlhYmxlIGZyb20gdGhlaXIgd2Vic2l0ZToKKyAgICBpcyBhdmFpbGFibGUgZnJvbSB0aGVpciB3ZWJzaXRlOgogICAgIGh0dHA6Ly93d3cuYm9zY2gtc2Vuc29ydGVjLmNvbS9jb250ZW50L2xhbmd1YWdlMS9kb3dubG9hZHMvQlNULUJNUDA4NS1EUzAwMC0wNS5wZGYKIAogICAgIEEgcHJlc3N1cmUgbWVhc3VyZW1lbnQgaXMgaXNzdWVkIGJ5IHJlYWRpbmcgZnJvbSBwcmVzc3VyZTBfaW5wdXQuCkBAIC00MjksNyArNDI5LDcgQEAKIAlpZiAoZXJyKQogCQlnb3RvIGV4aXRfZnJlZTsKIAotCWRldl9pbmZvKCZkYXRhLT5jbGllbnQtPmRldiwgIlN1Y2Nlc2Z1bGx5IGluaXRpYWxpemVkIGJtcDA4NSFcbiIpOworCWRldl9pbmZvKCZkYXRhLT5jbGllbnQtPmRldiwgIlN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBibXAwODUhXG4iKTsKIAlnb3RvIGV4aXQ7CiAKIGV4aXRfZnJlZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jMnBvcnQvYzJwb3J0LWR1cmFtYXIyMTUwLmMgYi9kcml2ZXJzL21pc2MvYzJwb3J0L2MycG9ydC1kdXJhbWFyMjE1MC5jCmluZGV4IDMzOGRjYzEuLjc3OGZjM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9jMnBvcnQvYzJwb3J0LWR1cmFtYXIyMTUwLmMKKysrIGIvZHJpdmVycy9taXNjL2MycG9ydC9jMnBvcnQtZHVyYW1hcjIxNTAuYwpAQCAtNDEsNyArNDEsNyBAQAogCQlvdXRiKHYgfCAoQzJEIHwgQzJDSyksIERJUl9QT1JUKTsKIAllbHNlCiAJCS8qIFdoZW4gYWNjZXNzIGlzICJvZmYiIGlzIGltcG9ydGFudCB0aGF0IGJvdGggbGluZXMgYXJlIHNldAotCQkgKiBhcyBpbnB1dHMgb3IgaGktaW1wZWRlbmNlICovCisJCSAqIGFzIGlucHV0cyBvciBoaS1pbXBlZGFuY2UgKi8KIAkJb3V0Yih2ICYgfihDMkQgfCBDMkNLKSwgRElSX1BPUlQpOwogCiAJbXV0ZXhfdW5sb2NrKCZ1cGRhdGVfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5oIGIvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuaAppbmRleCA3MmFjZjVhLi4wMGRiZjFkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuaAorKysgYi9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKgogICogQXV0aG9yOiBNYXggQXNi9mNrIDxhbWF4QHVzLmlibS5jb20+CiAgKgotICogT3JpZ25hbGx5IHdyaXR0ZW4gYnkgUGV0ZSBSZXlub2xkcworICogT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBldGUgUmV5bm9sZHMKICAqLwogCiAjaWZuZGVmIF9JQk1BU01fUkVNT1RFX0hfCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaXdtYzMyMDB0b3AvbWFpbi5jIGIvZHJpdmVycy9taXNjL2l3bWMzMjAwdG9wL21haW4uYwppbmRleCA3MjdhZjA3Li5iMWY0NTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvaXdtYzMyMDB0b3AvbWFpbi5jCisrKyBiL2RyaXZlcnMvbWlzYy9pd21jMzIwMHRvcC9tYWluLmMKQEAgLTI2OCw3ICsyNjgsNyBAQAogCQlMT0dfSU5GTyhwcml2LCBJUlEsICJBQ0sgYmFya2VyIGFycml2ZWQgIgogCQkJCSItIHN0YXJ0aW5nIEZXIGRvd25sb2FkXG4iKTsKIAl9IGVsc2UgeyAvKiBSRUJPT1QgYmFya2VyICovCi0JCUxPR19JTkZPKHByaXYsIElSUSwgIlJlY2lldmVkIHJlYm9vdCBiYXJrZXI6ICV4XG4iLCBiYXJrZXIpOworCQlMT0dfSU5GTyhwcml2LCBJUlEsICJSZWNlaXZlZCByZWJvb3QgYmFya2VyOiAleFxuIiwgYmFya2VyKTsKIAkJcHJpdi0+YmFya2VyID0gYmFya2VyOwogCiAJCWlmIChiYXJrZXIgJiBCQVJLRVJfRE5MT0FEX1NZTkNfTVNLKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mva2dkYnRzLmMgYi9kcml2ZXJzL21pc2Mva2dkYnRzLmMKaW5kZXggMjdkYzQ2My4uNzRmMTZmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL2tnZGJ0cy5jCisrKyBiL2RyaXZlcnMvbWlzYy9rZ2RidHMuYwpAQCAtNjQ1LDcgKzY0NSw3IEBACiAKIAl3aGlsZSAoKmNoa19zdHIgIT0gJ1wwJyAmJiAqcHV0X3N0ciAhPSAnXDAnKSB7CiAJCS8qIElmIHNvbWVvbmUgZG9lcyBhICogdG8gbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgYWxsb3cKLQkJICogaXQsIG9yIHN0b3AgaWYgdGhlIHJlY2lldmVkIHN0cmluZyBpcyBjb21wbGV0ZS4KKwkJICogaXQsIG9yIHN0b3AgaWYgdGhlIHJlY2VpdmVkIHN0cmluZyBpcyBjb21wbGV0ZS4KIAkJICovCiAJCWlmICgqcHV0X3N0ciA9PSAnIycgfHwgKmNoa19zdHIgPT0gJyonKQogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnVrc2VydmljZXMuYyBiL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydWtzZXJ2aWNlcy5jCmluZGV4IDM0NzQ5ZWUuLjllOWJkZGFhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1a3NlcnZpY2VzLmMKKysrIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1a3NlcnZpY2VzLmMKQEAgLTIyOSw3ICsyMjksNyBAQAogCWJpZCA9IGJsYWRlX2lkIDwgMCA/IHV2X251bWFfYmxhZGVfaWQoKSA6IGJsYWRlX2lkOwogCWJzID0gZ3J1X2Jhc2VbYmlkXTsKIAotCS8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBtaWdyYXRpb24gb2NjdXJlZCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgc2VtYSAqLworCS8qIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBtaWdyYXRpb24gb2NjdXJyZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHNlbWEgKi8KIAlkb3duX3JlYWQoJmJzLT5ic19rZ3RzX3NlbWEpOwogCWlmIChibGFkZV9pZCA8IDAgJiYgYmlkICE9IHV2X251bWFfYmxhZGVfaWQoKSkgewogCQl1cF9yZWFkKCZicy0+YnNfa2d0c19zZW1hKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydXRhYmxlcy5oIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmgKaW5kZXggN2E4YjkwNi4uNWMzY2UyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmgKKysrIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmgKQEAgLTM3OSw3ICszNzksNyBAQAogCQkJCQkJICAgcmVxdWlyZWQgZm9yIGNvbnRlc3QgKi8KIAljaGFyCQkJdHNfY2NoX3JlcV9zbGljZTsvKiBDQ0ggcGFja2V0IHNsaWNlICovCiAJY2hhcgkJCXRzX2JsYWRlOwkvKiBJZiA+PSAwLCBtaWdyYXRlIGNvbnRleHQgaWYKLQkJCQkJCSAgIHJlZiBmcm9tIGRpZmVyZW50IGJsYWRlICovCisJCQkJCQkgICByZWYgZnJvbSBkaWZmZXJlbnQgYmxhZGUgKi8KIAljaGFyCQkJdHNfZm9yY2VfY2NoX3JlbG9hZDsKIAljaGFyCQkJdHNfY2JyX2lkeFtHUlVfQ0JSX0FVXTsvKiBDQlIgbnVtYmVycyBvZiBlYWNoCiAJCQkJCQkJICBhbGxvY2F0ZWQgQ0IgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy90aS1zdC9zdF9raW0uYyBiL2RyaXZlcnMvbWlzYy90aS1zdC9zdF9raW0uYwppbmRleCA5ZWU0Yzc4Li5iNDQ4OGM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvdGktc3Qvc3Rfa2ltLmMKKysrIGIvZHJpdmVycy9taXNjL3RpLXN0L3N0X2tpbS5jCkBAIC02NDksNyArNjQ5LDcgQEAKIAkJLyogbXVsdGlwbGUgZGV2aWNlcyBjb3VsZCBleGlzdCAqLwogCQlzdF9raW1fZGV2aWNlc1twZGV2LT5pZF0gPSBwZGV2OwogCX0gZWxzZSB7Ci0JCS8qIHBsYXRmb3JtJ3Mgc3VyZSBhYm91dCBleGlzdGFuY2Ugb2YgMSBkZXZpY2UgKi8KKwkJLyogcGxhdGZvcm0ncyBzdXJlIGFib3V0IGV4aXN0ZW5jZSBvZiAxIGRldmljZSAqLwogCQlzdF9raW1fZGV2aWNlc1swXSA9IHBkZXY7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jYXJkL21tY190ZXN0LmMgYi9kcml2ZXJzL21tYy9jYXJkL21tY190ZXN0LmMKaW5kZXggZjVjZWRlYy4uYWJjMWE2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvY2FyZC9tbWNfdGVzdC5jCisrKyBiL2RyaXZlcnMvbW1jL2NhcmQvbW1jX3Rlc3QuYwpAQCAtMjkyLDcgKzI5Miw3IEBACiB9CiAKIC8qCi0gKiBBbGxvY2F0ZSBhIGxvdCBvZiBtZW1vcnksIHByZWZlcnJhYmx5IG1heF9zeiBidXQgYXQgbGVhc3QgbWluX3N6LiAgSW4gY2FzZQorICogQWxsb2NhdGUgYSBsb3Qgb2YgbWVtb3J5LCBwcmVmZXJhYmx5IG1heF9zeiBidXQgYXQgbGVhc3QgbWluX3N6LiAgSW4gY2FzZQogICogdGhlcmUgaXNuJ3QgbXVjaCBtZW1vcnkgZG8gbm90IGV4Y2VlZCAxLzE2dGggdG90YWwgbG93bWVtIHBhZ2VzLiAgQWxzbyBkbwogICogbm90IGV4Y2VlZCBhIG1heGltdW0gbnVtYmVyIG9mIHNlZ21lbnRzIGFuZCB0cnkgbm90IHRvIG1ha2Ugc2VnbWVudHMgbXVjaAogICogYmlnZ2VyIHRoYW4gbWF4aW11bSBzZWdtZW50IHNpemUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL21tYy5jIGIvZHJpdmVycy9tbWMvY29yZS9tbWMuYwppbmRleCAxNGU5NWYzLi43NzJkMGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL21tYy5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMKQEAgLTUzOCw3ICs1MzgsNyBAQAogCiAJLyoKIAkgKiBJZiBlbmhhbmNlZF9hcmVhX2VuIGlzIFRSVUUsIGhvc3QgbmVlZHMgdG8gZW5hYmxlIEVSQVNFX0dSUF9ERUYKLQkgKiBiaXQuICBUaGlzIGJpdCB3aWxsIGJlIGxvc3QgZXZlcnl0aW1lIGFmdGVyIGEgcmVzZXQgb3IgcG93ZXIgb2ZmLgorCSAqIGJpdC4gIFRoaXMgYml0IHdpbGwgYmUgbG9zdCBldmVyeSB0aW1lIGFmdGVyIGEgcmVzZXQgb3IgcG93ZXIgb2ZmLgogCSAqLwogCWlmIChjYXJkLT5leHRfY3NkLmVuaGFuY2VkX2FyZWFfZW4pIHsKIAkJZXJyID0gbW1jX3N3aXRjaChjYXJkLCBFWFRfQ1NEX0NNRF9TRVRfTk9STUFMLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9tbWNfb3BzLmMgYi9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYwppbmRleCA2MDg0MmY4Li5mM2IyMmJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYworKysgYi9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYwpAQCAtMTA1LDcgKzEwNSw3IEBACiAJICogdGhhdCBpbiBjYXNlIG9mIGhhcmR3YXJlIHRoYXQgd29uJ3QgcHVsbCB1cCBEQVQzL25DUyBvdGhlcndpc2UuCiAJICoKIAkgKiBTUEkgaG9zdHMgaWdub3JlIGlvcy5jaGlwX3NlbGVjdDsgaXQncyBtYW5hZ2VkIGFjY29yZGluZyB0bwotCSAqIHJ1bGVzIHRoYXQgbXVzdCBhY2NvbW9kYXRlIG5vbi1NTUMgc2xhdmVzIHdoaWNoIHRoaXMgbGF5ZXIKKwkgKiBydWxlcyB0aGF0IG11c3QgYWNjb21tb2RhdGUgbm9uLU1NQyBzbGF2ZXMgd2hpY2ggdGhpcyBsYXllcgogCSAqIHdvbid0IGV2ZW4ga25vdyBhYm91dC4KIAkgKi8KIAlpZiAoIW1tY19ob3N0X2lzX3NwaShob3N0KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jIGIvZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jCmluZGV4IGJiMTkyZjkuLmIzMDAxNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYworKysgYi9kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAkJCXN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMgPSBjYXJkLT5zZGlvX2Z1bmNbaSAtIDFdOwogCQkJaWYgKCFmdW5jKSB7CiAJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IHBlbmRpbmcgSVJRIGZvciAiCi0JCQkJCSJub24tZXhpc3RhbnQgZnVuY3Rpb25cbiIsCisJCQkJCSJub24tZXhpc3RlbnQgZnVuY3Rpb25cbiIsCiAJCQkJCW1tY19jYXJkX2lkKGNhcmQpKTsKIAkJCQlyZXQgPSAtRUlOVkFMOwogCQkJfSBlbHNlIGlmIChmdW5jLT5pcnFfaGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9hdG1lbC1tY2kuYyBiL2RyaXZlcnMvbW1jL2hvc3QvYXRtZWwtbWNpLmMKaW5kZXggODBiYzlhNS4uZWEzODg4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9hdG1lbC1tY2kuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L2F0bWVsLW1jaS5jCkBAIC0xMjcsNyArMTI3LDcgQEAKICAqIEVWRU5UX0RBVEFfQ09NUExFVEUgaXMgc2V0IGluIEBwZW5kaW5nX2V2ZW50cywgYWxsIGRhdGEtcmVsYXRlZAogICogaW50ZXJydXB0cyBtdXN0IGJlIGRpc2FibGVkIGFuZCBAZGF0YV9zdGF0dXMgdXBkYXRlZCB3aXRoIGEKICAqIHNuYXBzaG90IG9mIFNSLiBTaW1pbGFybHksIGJlZm9yZSBFVkVOVF9DTURfQ09NUExFVEUgaXMgc2V0LCB0aGUKLSAqIENNRFJEWSBpbnRlcnVwdCBtdXN0IGJlIGRpc2FibGVkIGFuZCBAY21kX3N0YXR1cyB1cGRhdGVkIHdpdGggYQorICogQ01EUkRZIGludGVycnVwdCBtdXN0IGJlIGRpc2FibGVkIGFuZCBAY21kX3N0YXR1cyB1cGRhdGVkIHdpdGggYQogICogc25hcHNob3Qgb2YgU1IsIGFuZCBiZWZvcmUgRVZFTlRfWEZFUl9DT01QTEVURSBjYW4gYmUgc2V0LCB0aGUKICAqIGJ5dGVzX3hmZXJlZCBmaWVsZCBvZiBAZGF0YSBtdXN0IGJlIHdyaXR0ZW4uIFRoaXMgaXMgZW5zdXJlZCBieQogICogdXNpbmcgYmFycmllcnMuCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCS8qCiAJICogVXBkYXRlIHRoZSBNTUMgY2xvY2sgcmF0ZSBpZiBuZWNlc3NhcnkuIFRoaXMgbWF5IGJlCiAJICogbmVjZXNzYXJ5IGlmIHNldF9pb3MoKSBpcyBjYWxsZWQgd2hlbiBhIGRpZmZlcmVudCBzbG90IGlzCi0JICogYnVzeSB0cmFuc2ZlcmluZyBkYXRhLgorCSAqIGJ1c3kgdHJhbnNmZXJyaW5nIGRhdGEuCiAJICovCiAJaWYgKGhvc3QtPm5lZWRfY2xvY2tfdXBkYXRlKSB7CiAJCW1jaV93cml0ZWwoaG9zdCwgTVIsIGhvc3QtPm1vZGVfcmVnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvbW1jX3NwaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKaW5kZXggMmY3ZmMwYy4uN2MxZTE2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMKQEAgLTk5LDcgKzk5LDcgQEAKICNkZWZpbmUgcjFiX3RpbWVvdXQJCShIWiAqIDMpCiAKIC8qIE9uZSBvZiB0aGUgY3JpdGljYWwgc3BlZWQgcGFyYW1ldGVycyBpcyB0aGUgYW1vdW50IG9mIGRhdGEgd2hpY2ggbWF5Ci0gKiBiZSB0cmFuc2ZlcmVkIGluIG9uZSBjb21tYW5kLiBJZiB0aGlzIHZhbHVlIGlzIHRvbyBsb3csIHRoZSBTRCBjYXJkCisgKiBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgY29tbWFuZC4gSWYgdGhpcyB2YWx1ZSBpcyB0b28gbG93LCB0aGUgU0QgY2FyZAogICogY29udHJvbGxlciBoYXMgdG8gZG8gbXVsdGlwbGUgcGFydGlhbCBibG9jayB3cml0ZXMgKGFyZ2dnaCEpLiBXaXRoCiAgKiB0b2RheSAoMjAwOCkgU0QgY2FyZHMgdGhlcmUgaXMgbGl0dGxlIHNwZWVkIGdhaW4gaWYgd2UgdHJhbnNmZXIgbW9yZQogICogdGhhbiA2NCBLQnl0ZXMgYXQgYSB0aW1lLiBTbyB1c2UgdGhpcyB2YWx1ZSB1bnRpbCB0aGVyZSBpcyBhbnkgaW5kaWNhdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zM2NtY2kuYyBiL2RyaXZlcnMvbW1jL2hvc3QvczNjbWNpLmMKaW5kZXggMWNjZDRiMi4uYTA0Zjg3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9zM2NtY2kuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L3MzY21jaS5jCkBAIC04NzQsNyArODc0LDcgQEAKIAlpZiAoIW1ycS0+ZGF0YSkKIAkJZ290byByZXF1ZXN0X2RvbmU7CiAKLQkvKiBDYWx1bGF0ZSB0aGUgYW1vdXQgb2YgYnl0ZXMgdHJhbnNmZXIgaWYgdGhlcmUgd2FzIG5vIGVycm9yICovCisJLyogQ2FsY3VsYXRlIHRoZSBhbW91dCBvZiBieXRlcyB0cmFuc2ZlciBpZiB0aGVyZSB3YXMgbm8gZXJyb3IgKi8KIAlpZiAobXJxLT5kYXRhLT5lcnJvciA9PSAwKSB7CiAJCW1ycS0+ZGF0YS0+Ynl0ZXNfeGZlcmVkID0KIAkJCShtcnEtPmRhdGEtPmJsb2NrcyAqIG1ycS0+ZGF0YS0+Ymxrc3opOwpAQCAtODgyLDcgKzg4Miw3IEBACiAJCW1ycS0+ZGF0YS0+Ynl0ZXNfeGZlcmVkID0gMDsKIAl9CiAKLQkvKiBJZiB3ZSBoYWQgYW4gZXJyb3Igd2hpbGUgdHJhbnNmZXJpbmcgZGF0YSB3ZSBmbHVzaCB0aGUKKwkvKiBJZiB3ZSBoYWQgYW4gZXJyb3Igd2hpbGUgdHJhbnNmZXJyaW5nIGRhdGEgd2UgZmx1c2ggdGhlCiAJICogRE1BIGNoYW5uZWwgYW5kIHRoZSBmaWZvIHRvIGNsZWFyIG91dCBhbnkgZ2FyYmFnZS4gKi8KIAlpZiAobXJxLT5kYXRhLT5lcnJvciAhPSAwKSB7CiAJCWlmIChzM2NtY2lfaG9zdF91c2VkbWEoaG9zdCkpCkBAIC05ODAsNyArOTgwLDcgQEAKIAogCWlmICgoZGF0YS0+Ymxrc3ogJiAzKSAhPSAwKSB7CiAJCS8qIFdlIGNhbm5vdCBkZWFsIHdpdGggdW5hbGlnbmVkIGJsb2NrcyB3aXRoIG1vcmUgdGhhbgotCQkgKiBvbmUgYmxvY2sgYmVpbmcgdHJhbnNmZXJlZC4gKi8KKwkJICogb25lIGJsb2NrIGJlaW5nIHRyYW5zZmVycmVkLiAqLwogCiAJCWlmIChkYXRhLT5ibG9ja3MgPiAxKSB7CiAJCQlwcl93YXJuaW5nKCIlczogY2FuJ3QgZG8gbm9uLXdvcmQgc2l6ZWQgYmxvY2sgdHJhbnNmZXJzIChibGtzeiAlZClcbiIsIF9fZnVuY19fLCBkYXRhLT5ibGtzeik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3RtaW9fbW1jX3Bpby5jIGIvZHJpdmVycy9tbWMvaG9zdC90bWlvX21tY19waW8uYwppbmRleCA2YWU4ZDJmLi42MmQzN2RlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3RtaW9fbW1jX3Bpby5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvdG1pb19tbWNfcGlvLmMKQEAgLTM1NSw3ICszNTUsNyBAQAogLyoKICAqIFRoaXMgY2hpcCBhbHdheXMgcmV0dXJucyAoYXQgbGVhc3Q/KSBhcyBtdWNoIGRhdGEgYXMgeW91IGFzayBmb3IuCiAgKiBJJ20gdW5zdXJlIHdoYXQgaGFwcGVucyBpZiB5b3UgYXNrIGZvciBsZXNzIHRoYW4gYSBibG9jay4gVGhpcyBzaG91bGQgYmUKLSAqIGxvb2tlZCBpbnRvIHRvIGVuc3VyZSB0aGF0IGEgZnVubnkgbGVuZ3RoIHJlYWQgZG9lc250IGhvc2UgdGhlIGNvbnRyb2xsZXIuCisgKiBsb29rZWQgaW50byB0byBlbnN1cmUgdGhhdCBhIGZ1bm55IGxlbmd0aCByZWFkIGRvZXNuJ3QgaG9zZSB0aGUgY29udHJvbGxlci4KICAqLwogc3RhdGljIHZvaWQgdG1pb19tbWNfcGlvX2lycShzdHJ1Y3QgdG1pb19tbWNfaG9zdCAqaG9zdCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qvd2JzZC5jIGIvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKaW5kZXggN2ZjYTBhMy4uNjJlNWE0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMKQEAgLTQ4NCw3ICs0ODQsNyBAQAogCiAJLyoKIAkgKiBDaGVjayB0aGF0IHdlIGFyZW4ndCBiZWluZyBjYWxsZWQgYWZ0ZXIgdGhlCi0JICogZW50aXJlIGJ1ZmZlciBoYXMgYmVlbiB0cmFuc2ZlcmVkLgorCSAqIGVudGlyZSBidWZmZXIgaGFzIGJlZW4gdHJhbnNmZXJyZWQuCiAJICovCiAJaWYgKGhvc3QtPm51bV9zZyA9PSAwKQogCQlyZXR1cm47CkBAIC04MjgsNyArODI4LDcgQEAKIAkvKgogCSAqIElmIHRoaXMgaXMgYSBkYXRhIHRyYW5zZmVyIHRoZSByZXF1ZXN0CiAJICogd2lsbCBiZSBmaW5pc2hlZCBhZnRlciB0aGUgZGF0YSBoYXMKLQkgKiB0cmFuc2ZlcmVkLgorCSAqIHRyYW5zZmVycmVkLgogCSAqLwogCWlmIChjbWQtPmRhdGEgJiYgIWNtZC0+ZXJyb3IpIHsKIAkJLyoKQEAgLTkwNCw3ICs5MDQsNyBAQAogCQkJc2V0dXAgJj0gfldCU0RfREFUM19IOwogCiAJCQkvKgotCQkJICogV2UgY2Fubm90IHJlc3VtZSBjYXJkIGRldGVjdGlvbiBpbW1lZGlhdGx5CisJCQkgKiBXZSBjYW5ub3QgcmVzdW1lIGNhcmQgZGV0ZWN0aW9uIGltbWVkaWF0ZWx5CiAJCQkgKiBiZWNhdXNlIG9mIGNhcGFjaXRhbmNlIGFuZCBkZWxheXMgaW4gdGhlIGNoaXAuCiAJCQkgKi8KIAkJCW1vZF90aW1lcigmaG9zdC0+aWdub3JlX3RpbWVyLCBqaWZmaWVzICsgSFogLyAxMDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2hpcHMvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL2NoaXBzL0tjb25maWcKaW5kZXggMzVjNmEyMy4uYjFlM2MyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvS2NvbmZpZworKysgYi9kcml2ZXJzL210ZC9jaGlwcy9LY29uZmlnCkBAIC0xOSw3ICsxOSw3IEBACiAJaGVscAogCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBKRURFQy1zdHlsZSBwcm9iaW5nIG9mIGZsYXNoIGNoaXBzIHdoaWNoIGFyZSBub3QKIAkgIGNvbXBhdGlibGUgd2l0aCB0aGUgQ29tbW9uIEZsYXNoIEludGVyZmFjZSwgYnV0IHdpbGwgdXNlIHRoZSBjb21tb24KLQkgIENGSS10YXJnZXR0ZWQgZmxhc2ggZHJpdmVycyBmb3IgYW55IGNoaXBzIHdoaWNoIGFyZSBpZGVudGlmaWVkIHdoaWNoCisJICBDRkktdGFyZ2V0ZWQgZmxhc2ggZHJpdmVycyBmb3IgYW55IGNoaXBzIHdoaWNoIGFyZSBpZGVudGlmaWVkIHdoaWNoCiAJICBhcmUgaW4gZmFjdCBjb21wYXRpYmxlIGluIGFsbCBidXQgdGhlIHByb2JlIG1ldGhvZC4gVGhpcyBhY3R1YWxseQogCSAgY292ZXJzIG1vc3QgQU1EL0Z1aml0c3UtY29tcGF0aWJsZSBjaGlwcyBhbmQgYWxzbyBub24tQ0ZJCiAJICBJbnRlbCBjaGlwcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMS5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKaW5kZXggMDkyYWVmMS4uMDljYjdjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMKQEAgLTEyNDcsMTIgKzEyNDcsMTIgQEAKIAkJCWJyZWFrOwogCiAJCWlmIChjaGlwLT5lcmFzZV9zdXNwZW5kZWQgJiYgY2hpcF9zdGF0ZSA9PSBGTF9FUkFTSU5HKSAgewotCQkJLyogRXJhc2Ugc3VzcGVuZCBvY2N1cmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCisJCQkvKiBFcmFzZSBzdXNwZW5kIG9jY3VycmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCiAJCQl0aW1lbyA9IHJlc2V0X3RpbWVvOwogCQkJY2hpcC0+ZXJhc2Vfc3VzcGVuZGVkID0gMDsKIAkJfQogCQlpZiAoY2hpcC0+d3JpdGVfc3VzcGVuZGVkICYmIGNoaXBfc3RhdGUgPT0gRkxfV1JJVElORykgIHsKLQkJCS8qIFdyaXRlIHN1c3BlbmQgb2NjdXJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLworCQkJLyogV3JpdGUgc3VzcGVuZCBvY2N1cnJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLwogCQkJdGltZW8gPSByZXNldF90aW1lbzsKIAkJCWNoaXAtPndyaXRlX3N1c3BlbmRlZCA9IDA7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV9jbWRzZXRfMDAwMi5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMKaW5kZXggZjlhNTMzMS4uMGI0OTI2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCXN0cnVjdCBjZmlfcHJpdmF0ZSAqY2ZpID0gbWFwLT5mbGRydl9wcml2OwogCiAJLyoKLQkgKiBUaGVzZSBmbGFzaGVzIHJlcG9ydCB0d28gc2VwZXJhdGUgZXJhc2VibG9jayByZWdpb25zIGJhc2VkIG9uIHRoZQorCSAqIFRoZXNlIGZsYXNoZXMgcmVwb3J0IHR3byBzZXBhcmF0ZSBlcmFzZWJsb2NrIHJlZ2lvbnMgYmFzZWQgb24gdGhlCiAJICogc2VjdG9yX2VyYXNlLXNpemUgYW5kIGJsb2NrX2VyYXNlLXNpemUsIGFsdGhvdWdoIHRoZXkgYm90aCBvcGVyYXRlIG9uIHRoZQogCSAqIHNhbWUgbWVtb3J5LiBUaGlzIGlzIG5vdCBhbGxvd2VkIGFjY29yZGluZyB0byBDRkksIHNvIHdlIGp1c3QgcGljayB0aGUKIAkgKiBzZWN0b3JfZXJhc2Utc2l6ZS4KQEAgLTYxMSw4ICs2MTEsOCBAQAogICoKICAqIE5vdGUgdGhhdCBhbnl0aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gY2hlY2tpbmcgaWYgbm8gYml0cyBhcmUgdG9nZ2xpbmcKICAqIChpbmNsdWRpbmcgY2hlY2tpbmcgRFE1IGZvciBhbiBlcnJvciBzdGF0dXMpIGlzIHRyaWNreSB0byBnZXQgd29ya2luZwotICogY29ycmVjdGx5IGFuZCBpcyB0aGVyZWZvcmUgbm90IGRvbmUJKHBhcnRpY3VsYXJ5IHdpdGggaW50ZXJsZWF2ZWQgY2hpcHMKLSAqIGFzIGVhY2ggY2hpcCBtdXN0IGJlIGNoZWNrZWQgaW5kZXBlbmRhbnRseSBvZiB0aGUgb3RoZXJzKS4KKyAqIGNvcnJlY3RseSBhbmQgaXMgdGhlcmVmb3JlIG5vdCBkb25lCShwYXJ0aWN1bGFybHkgd2l0aCBpbnRlcmxlYXZlZCBjaGlwcworICogYXMgZWFjaCBjaGlwIG11c3QgYmUgY2hlY2tlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMpLgogICovCiBzdGF0aWMgaW50IF9feGlwcmFtIGNoaXBfcmVhZHkoc3RydWN0IG1hcF9pbmZvICptYXAsIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKQEAgLTYzNSw4ICs2MzUsOCBAQAogICoKICAqIE5vdGUgdGhhdCBhbnl0aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gY2hlY2tpbmcgaWYgbm8gYml0cyBhcmUgdG9nZ2xpbmcKICAqIChpbmNsdWRpbmcgY2hlY2tpbmcgRFE1IGZvciBhbiBlcnJvciBzdGF0dXMpIGlzIHRyaWNreSB0byBnZXQgd29ya2luZwotICogY29ycmVjdGx5IGFuZCBpcyB0aGVyZWZvcmUgbm90IGRvbmUJKHBhcnRpY3VsYXJ5IHdpdGggaW50ZXJsZWF2ZWQgY2hpcHMKLSAqIGFzIGVhY2ggY2hpcCBtdXN0IGJlIGNoZWNrZWQgaW5kZXBlbmRhbnRseSBvZiB0aGUgb3RoZXJzKS4KKyAqIGNvcnJlY3RseSBhbmQgaXMgdGhlcmVmb3JlIG5vdCBkb25lCShwYXJ0aWN1bGFybHkgd2l0aCBpbnRlcmxlYXZlZCBjaGlwcworICogYXMgZWFjaCBjaGlwIG11c3QgYmUgY2hlY2tlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBvdGhlcnMpLgogICoKICAqLwogc3RhdGljIGludCBfX3hpcHJhbSBjaGlwX2dvb2Qoc3RydWN0IG1hcF9pbmZvICptYXAsIHVuc2lnbmVkIGxvbmcgYWRkciwgbWFwX3dvcmQgZXhwZWN0ZWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfdXRpbC5jIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX3V0aWwuYwppbmRleCA2YWUzZDExLi44ZTQ2NDA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfdXRpbC5jCisrKyBiL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV91dGlsLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29tbW9uIEZsYXNoIEludGVyZmFjZSBzdXBwb3J0OgotICogICBHZW5lcmljIHV0aWxpdHkgZnVuY3Rpb25zIG5vdCBkZXBlbmRhbnQgb24gY29tbWFuZCBzZXQKKyAqICAgR2VuZXJpYyB1dGlsaXR5IGZ1bmN0aW9ucyBub3QgZGVwZW5kZW50IG9uIGNvbW1hbmQgc2V0CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAyIFJlZCBIYXQKICAqIENvcHlyaWdodCAoQykgMjAwMyBTVE1pY3JvZWxlY3Ryb25pY3MgTGltaXRlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2hpcHMvamVkZWNfcHJvYmUuYyBiL2RyaXZlcnMvbXRkL2NoaXBzL2plZGVjX3Byb2JlLmMKaW5kZXggNGUxYmU1MS4uZWE4MzJlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2hpcHMvamVkZWNfcHJvYmUuYworKysgYi9kcml2ZXJzL210ZC9jaGlwcy9qZWRlY19wcm9iZS5jCkBAIC0yMDc1LDcgKzIwNzUsNyBAQAogCX0KIAogCS8qCi0JICogTWFrZSBzdXJlIHRoZSBJRCdzIGRpc3NhcHBlYXIgd2hlbiB0aGUgZGV2aWNlIGlzIHRha2VuIG91dCBvZgorCSAqIE1ha2Ugc3VyZSB0aGUgSUQncyBkaXNhcHBlYXIgd2hlbiB0aGUgZGV2aWNlIGlzIHRha2VuIG91dCBvZgogCSAqIElEIG1vZGUuICBUaGUgb25seSB0aW1lIHRoaXMgc2hvdWxkIGZhaWwgd2hlbiBpdCBzaG91bGQgc3VjY2VlZAogCSAqIGlzIHdoZW4gdGhlIElEJ3MgYXJlIHdyaXR0ZW4gYXMgZGF0YSB0byB0aGUgc2FtZQogCSAqIGFkZHJlc3Nlcy4gIEZvciB0aGlzIHJhcmUgYW5kIHVuZm9ydHVuYXRlIGNhc2UgdGhlIGNoaXAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sybXRkLmMgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2Jsb2NrMm10ZC5jCmluZGV4IGYyOWE2ZjkuLjk3MTgzYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sybXRkLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYwpAQCAtMjk1LDcgKzI5NSw3IEBACiAJZGV2LT5tdGQub3duZXIgPSBUSElTX01PRFVMRTsKIAogCWlmIChhZGRfbXRkX2RldmljZSgmZGV2LT5tdGQpKSB7Ci0JCS8qIERldmljZSBkaWRudCBnZXQgYWRkZWQsIHNvIGZyZWUgdGhlIGVudHJ5ICovCisJCS8qIERldmljZSBkaWRuJ3QgZ2V0IGFkZGVkLCBzbyBmcmVlIHRoZSBlbnRyeSAqLwogCQlnb3RvIGRldmluaXRfZXJyOwogCX0KIAlsaXN0X2FkZCgmZGV2LT5saXN0LCAmYmxrbXRkX2RldmljZV9saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jMjAwMXBsdXMuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jMjAwMXBsdXMuYwppbmRleCA3MTliMjkxLi44YjM2ZmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9kZXZpY2VzL2RvYzIwMDFwbHVzLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2MyMDAxcGx1cy5jCkBAIC05MCw3ICs5MCw3IEBACiAJcmV0dXJuIHJldDsKIH0KIAotLyogRm9yIHNvbWUgcmVhc29uIHRoZSBNaWxsZW5uaXVtIFBsdXMgc2VlbXMgdG8gb2NjYXNzaW9uYWxseSBwdXQgaXRzZWxmCisvKiBGb3Igc29tZSByZWFzb24gdGhlIE1pbGxlbm5pdW0gUGx1cyBzZWVtcyB0byBvY2Nhc2lvbmFsbHkgcHV0IGl0c2VsZgogICogaW50byByZXNldCBtb2RlLiBGb3IgbWUgdGhpcyBoYXBwZW5zIHJhbmRvbWx5LCB3aXRoIG5vIHBhdHRlcm4gdGhhdCBJCiAgKiBjYW4gZGV0ZWN0LiBNLXN5c3RlbXMgc3VnZ2VzdCBhbHdheXMgY2hlY2sgdGhpcyBvbiBhbnkgYmxvY2sgbGV2ZWwKICAqIG9wZXJhdGlvbiBhbmQgc2V0dGluZyB0byBub3JtYWwgbW9kZSBpZiBpbiByZXNldCBtb2RlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2NlY2MuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jZWNjLmMKaW5kZXggYTk5ODM4Yi4uMzdlZjI5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2NlY2MuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2RvY2VjYy5jCkBAIC0xMDksNyArMTA5LDcgQEAKICAgIG9mIHRoZSBpbnRlZ2VyICJhbHBoYV90b1tpXSIgd2l0aCBhKDApIGJlaW5nIHRoZSBMU0IgYW5kIGEobS0xKSB0aGUgTVNCLiBUaHVzIGZvcgogICAgZXhhbXBsZSB0aGUgcG9seW5vbWlhbCByZXByZXNlbnRhdGlvbiBvZiBAXjUgd291bGQgYmUgZ2l2ZW4gYnkgdGhlIGJpbmFyeQogICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVnZXIgImFscGhhX3RvWzVdIi4KLSAgICAgICAgICAgICAgICAgICBTaW1pbGFyaWx5LCBpbmRleF9vZltdIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgU2ltaWxhcmx5LCBpbmRleF9vZltdIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6CiAgICAgICAgIEFzIGFib3ZlLCBsZXQgQCByZXByZXNlbnQgdGhlIHByaW1pdGl2ZSBlbGVtZW50IG9mIEdGKDJebSkgdGhhdCBpcwogICAgdGhlIHJvb3Qgb2YgdGhlIHByaW1pdGl2ZSBwb2x5bm9taWFsIHAoeCkuIEluIG9yZGVyIHRvIGZpbmQgdGhlIHBvd2VyCiAgICBvZiBAIChhbHBoYSkgdGhhdCBoYXMgdGhlIHBvbHlub21pYWwgcmVwcmVzZW50YXRpb24KQEAgLTEyMSw3ICsxMjEsNyBAQAogICAgTk9URToKICAgICAgICAgVGhlIGVsZW1lbnQgYWxwaGFfdG9bMl5tLTFdID0gMCBhbHdheXMgc2lnbmlmeWluZyB0aGF0IHRoZQogICAgcmVwcmVzZW50YXRpb24gb2YgIkBeaW5maW5pdHkiID0gMCBpcyAoMCwwLDAsLi4uLDApLgotICAgICAgICBTaW1pbGFyaWx5LCB0aGUgZWxlbWVudCBpbmRleF9vZlswXSA9IEEwIGFsd2F5cyBzaWduaWZ5aW5nCisgICAgICAgIFNpbWlsYXJseSwgdGhlIGVsZW1lbnQgaW5kZXhfb2ZbMF0gPSBBMCBhbHdheXMgc2lnbmlmeWluZwogICAgdGhhdCB0aGUgcG93ZXIgb2YgYWxwaGEgd2hpY2ggaGFzIHRoZSBwb2x5bm9taWFsIHJlcHJlc2VudGF0aW9uCiAgICAoMCwwLC4uLiwwKSBpcyAiaW5maW5pdHkiLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9kZXZpY2VzL2xhcnQuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jCmluZGV4IGNhZjYwNDEuLjRiODI5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jCisrKyBiL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jCkBAIC0zNTMsNyArMzUzLDcgQEAKICAgIC8qIHB1dCB0aGUgZmxhc2ggYmFjayBpbnRvIGNvbW1hbmQgbW9kZSAqLwogICAgd3JpdGUzMiAoREFUQV9UT19GTEFTSCAoUkVBRF9BUlJBWSksb2Zmc2V0KTsKIAotICAgLyogd2FzIHRoZSBlcmFzZSBzdWNjZXNzZnVsbD8gKi8KKyAgIC8qIHdhcyB0aGUgZXJhc2Ugc3VjY2Vzc2Z1bD8gKi8KICAgIGlmICgoc3RhdHVzICYgU1RBVFVTX0VSQVNFX0VSUikpCiAJIHsKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIiVzOiBlcmFzZSBlcnJvciBhdCBhZGRyZXNzIDB4JS44eC5cbiIsbW9kdWxlX25hbWUsb2Zmc2V0KTsKQEAgLTUwOCw3ICs1MDgsNyBAQAogICAgLyogcHV0IHRoZSBmbGFzaCBiYWNrIGludG8gY29tbWFuZCBtb2RlICovCiAgICB3cml0ZTMyIChEQVRBX1RPX0ZMQVNIIChSRUFEX0FSUkFZKSxvZmZzZXQpOwogCi0gICAvKiB3YXMgdGhlIHdyaXRlIHN1Y2Nlc3NmdWxsPyAqLworICAgLyogd2FzIHRoZSB3cml0ZSBzdWNjZXNzZnVsPyAqLwogICAgaWYgKChzdGF0dXMgJiBTVEFUVVNfUEdNX0VSUikgfHwgcmVhZDMyIChvZmZzZXQpICE9IHgpCiAJIHsKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcgIiVzOiB3cml0ZSBlcnJvciBhdCBhZGRyZXNzIDB4JS44eC5cbiIsbW9kdWxlX25hbWUsb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvcG1jNTUxLmMgYi9kcml2ZXJzL210ZC9kZXZpY2VzL3BtYzU1MS5jCmluZGV4IGVmMGFiYTAuLjQxYjhjZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvcG1jNTUxLmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9wbWM1NTEuYwpAQCAtMzUxLDcgKzM1MSw3IEBACiAgKiBGaXh1cCByb3V0aW5lcyBmb3IgdGhlIFYzNzBQREMKICAqIFBDSSBkZXZpY2UgSUQgMHgwMjAwMTFiMAogICoKLSAqIFRoaXMgZnVuY3Rpb24gYmFzaWNseSBraWNrIHN0YXJ0cyB0aGUgRFJBTSBvYm9hcmQgdGhlIGNhcmQgYW5kIGdldHMgaXQKKyAqIFRoaXMgZnVuY3Rpb24gYmFzaWNhbGx5IGtpY2sgc3RhcnRzIHRoZSBEUkFNIG9ib2FyZCB0aGUgY2FyZCBhbmQgZ2V0cyBpdAogICogcmVhZHkgdG8gYmUgdXNlZC4gIEJlZm9yZSB0aGlzIGlzIGRvbmUgdGhlIGRldmljZSByZWFkcyBWRVJZIGVycmF0aWMsIHNvCiAgKiBtdWNoIHRoYXQgaXQgY2FuIGNyYXNoIHRoZSBMaW51eCAyLjIueCBzZXJpZXMga2VybmVscyB3aGVuIGEgdXNlciBjYXQncwogICogL3Byb2MvcGNpIC4uIHRob3VnaCB0aGF0IGlzIG1haW5seSBhIGtlcm5lbCBidWcgaW4gaGFuZGxpbmcgdGhlIFBDSSBERVZTRUwKQEAgLTU0MCw3ICs1NDAsNyBAQAogCiAJLyoKIAkgKiBDaGVjayB0byBtYWtlIGNlcnRhaW4gdGhlIERFVlNFTCBpcyBzZXQgY29ycmVjdGx5LCB0aGlzIGRldmljZQotCSAqIGhhcyBhIHRlbmRhbmN5IHRvIGFzc2VydCBERVZTRUwgYW5kIFRSRFkgd2hlbiBhIHdyaXRlIGlzIHBlcmZvcm1lZAorCSAqIGhhcyBhIHRlbmRlbmN5IHRvIGFzc2VydCBERVZTRUwgYW5kIFRSRFkgd2hlbiBhIHdyaXRlIGlzIHBlcmZvcm1lZAogCSAqIHRvIHRoZSBtZW1vcnkgd2hlbiBtZW1vcnkgaXMgcmVhZC1vbmx5CiAJICovCiAJaWYgKChjbWQgJiBQQ0lfU1RBVFVTX0RFVlNFTF9NQVNLKSAhPSAweDApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2xwZGRyL2xwZGRyX2NtZHMuYyBiL2RyaXZlcnMvbXRkL2xwZGRyL2xwZGRyX2NtZHMuYwppbmRleCAwNGZkZmNjLi4xMjY3OTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9scGRkci9scGRkcl9jbWRzLmMKKysrIGIvZHJpdmVycy9tdGQvbHBkZHIvbHBkZHJfY21kcy5jCkBAIC0zLDcgKzMsNyBAQAogICogZXJhc2UsIGxvY2svdW5sb2NrIHN1cHBvcnQgZm9yIExQRERSIGZsYXNoIG1lbW9yaWVzCiAgKiAoQykgMjAwOCBLb3JvbGV2IEFsZXhleSA8YWtvcm9sZXZAaW5mcmFkZWFkLm9yZz4KICAqIChDKSAyMDA4IFZhc2lsaXkgTGVvbmVua28gPHZhc2lsaXkubGVvbmVua29AZ21haWwuY29tPgotICogTWFueSB0aGFua3MgdG8gUm9tYW4gQm9yaXNvdiBmb3IgaW50aWFsIGVuYWJsaW5nCisgKiBNYW55IHRoYW5rcyB0byBSb21hbiBCb3Jpc292IGZvciBpbml0aWFsIGVuYWJsaW5nCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKQEAgLTE3MSw3ICsxNzEsNyBAQAogCQkJbXV0ZXhfbG9jaygmY2hpcC0+bXV0ZXgpOwogCQl9CiAJCWlmIChjaGlwLT5lcmFzZV9zdXNwZW5kZWQgfHwgY2hpcC0+d3JpdGVfc3VzcGVuZGVkKSAgewotCQkJLyogU3VzcGVuZCBoYXMgb2NjdXJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLworCQkJLyogU3VzcGVuZCBoYXMgb2NjdXJyZWQgd2hpbGUgc2xlZXA6IHJlc2V0IHRpbWVvdXQgKi8KIAkJCXRpbWVvID0gcmVzZXRfdGltZW87CiAJCQljaGlwLT5lcmFzZV9zdXNwZW5kZWQgPSBjaGlwLT53cml0ZV9zdXNwZW5kZWQgPSAwOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL2NlaXZhLmMgYi9kcml2ZXJzL210ZC9tYXBzL2NlaXZhLmMKaW5kZXggZTVmNjQ1Yi4uMjNmNTUxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy9jZWl2YS5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvY2VpdmEuYwpAQCAtNDIsNyArNDIsNyBAQAogICoKICAqIFBsZWFzZSBub3RlOgogICogIDEuIFRoZSBmbGFzaCBzaXplIGdpdmVuIHNob3VsZCBiZSB0aGUgbGFyZ2VzdCBmbGFzaCBzaXplIHRoYXQgY2FuCi0gKiAgICAgYmUgYWNjb21vZGF0ZWQuCisgKiAgICAgYmUgYWNjb21tb2RhdGVkLgogICoKICAqICAyLiBUaGUgYnVzIHdpZHRoIG11c3QgZGVmaW5lZCBpbiBjbHBzX3NldHVwX2ZsYXNoLgogICoKQEAgLTU4LDcgKzU4LDcgQEAKICNkZWZpbmUgQk9PVF9QQVJUSVRJT05fU0laRV9LaUIgICAgICAgKDE2KQogI2RlZmluZSBQQVJBTVNfUEFSVElUSU9OX1NJWkVfS2lCICAgICAoOCkKICNkZWZpbmUgS0VSTkVMX1BBUlRJVElPTl9TSVpFX0tpQiAgICAgKDQqMTI4KQotLyogVXNlIGJvdGggcmVtYWluZyBwb3J0aW9uIG9mIGZpcnN0IGZsYXNoLCBhbmQgYWxsIG9mIHNlY29uZCBmbGFzaCAqLworLyogVXNlIGJvdGggcmVtYWluaW5nIHBvcnRpb24gb2YgZmlyc3QgZmxhc2gsIGFuZCBhbGwgb2Ygc2Vjb25kIGZsYXNoICovCiAjZGVmaW5lIFJPT1RfUEFSVElUSU9OX1NJWkVfS2lCICAgICAgICgzKjEyOCkgKyAoOCoxMjgpCiAKIHN0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBjZWl2YV9wYXJ0aXRpb25zW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL2NmaV9mbGFnYWRtLmMgYi9kcml2ZXJzL210ZC9tYXBzL2NmaV9mbGFnYWRtLmMKaW5kZXggYjRlZDgxNi4uZjcxMzQzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy9jZmlfZmxhZ2FkbS5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvY2ZpX2ZsYWdhZG0uYwpAQCAtMzMsNyArMzMsNyBAQAogCiAKIC8qIFdlIHNwbGl0IHRoZSBmbGFzaCBjaGlwIHVwIGludG8gZm91ciBwYXJ0cy4KLSAqIDE6IGJvb3Rsb2FkZXIgZmlydHMgMTI4awkJCSgweDAwMDAwMDAwIC0gMHgwMDAxRkZGRikgc2l6ZSAweDAyMDAwMAorICogMTogYm9vdGxvYWRlciBmaXJzdCAxMjhrCQkJKDB4MDAwMDAwMDAgLSAweDAwMDFGRkZGKSBzaXplIDB4MDIwMDAwCiAgKiAyOiBrZXJuZWwgNjQwawkJCQkJKDB4MDAwMjAwMDAgLSAweDAwMEJGRkZGKSBzaXplIDB4MEEwMDAwCiAgKiAzOiBjb21wcmVzc2VkIDE1MzZrIHJvb3QgcmFtZGlzawkoMHgwMDBDMDAwMCAtIDB4MDAyM0ZGRkYpIHNpemUgMHgxODAwMDAKICAqIDQ6IHdyaXRlYWJsZSBkaXNrcGFydGl0aW9uIChqZmZzKSgweDAwMjQwMDAwIC0gMHgwMDNGRkZGRikgc2l6ZSAweDFDMDAwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbWFwcy9wY21jaWFtdGQuYyBiL2RyaXZlcnMvbXRkL21hcHMvcGNtY2lhbXRkLmMKaW5kZXggOTE3MDIyOS4uNjc5OWU3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy9wY21jaWFtdGQuYworKysgYi9kcml2ZXJzL210ZC9tYXBzL3BjbWNpYW10ZC5jCkBAIC00OTcsNyArNDk3LDcgQEAKIAkJZGV2LT5wY21jaWFfbWFwLnNldF92cHAgPSBwY21jaWFtdGRfc2V0X3ZwcDsKIAogCS8qIFJlcXVlc3QgYSBtZW1vcnkgd2luZG93IGZvciBQQ01DSUEuIFNvbWUgYXJjaGl0ZXVyZXMgY2FuIG1hcCB3aW5kb3dzCi0JICogdXB0byB0aGUgbWF4aW11bSB0aGF0IFBDTUNJQSBjYW4gc3VwcG9ydCAoNjRNaUIpIC0gdGhpcyBpcyBpZGVhbCBhbmQKKwkgKiB1cCB0byB0aGUgbWF4aW11bSB0aGF0IFBDTUNJQSBjYW4gc3VwcG9ydCAoNjRNaUIpIC0gdGhpcyBpcyBpZGVhbCBhbmQKIAkgKiB3ZSBhaW0gZm9yIGEgd2luZG93IHRoZSBzaXplIG9mIHRoZSB3aG9sZSBjYXJkIC0gb3RoZXJ3aXNlIHdlIHRyeQogCSAqIHNtYWxsZXIgd2luZG93cyB1bnRpbCB3ZSBzdWNjZWVkCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jIGIvZHJpdmVycy9tdGQvbWFwcy9wbWNtc3AtZmxhc2guYwppbmRleCBhY2IxM2ZhLi42NGFlYTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMKQEAgLTMsNyArMyw3IEBACiAgKiBDb25maWcgd2l0aCBib3RoIENGSSBhbmQgSkVERUMgZGV2aWNlIHN1cHBvcnQuCiAgKgogICogQmFzaWNhbGx5IHBoeXNtYXAuYyB3aXRoIHRoZSBhZGRpdGlvbiBvZiBwYXJ0aXRpb25zIGFuZAotICogYW4gYXJyYXkgb2YgbWFwcGluZyBpbmZvIHRvIGFjY29tb2RhdGUgbW9yZSB0aGFuIG9uZSBmbGFzaCB0eXBlIHBlciBib2FyZC4KKyAqIGFuIGFycmF5IG9mIG1hcHBpbmcgaW5mbyB0byBhY2NvbW1vZGF0ZSBtb3JlIHRoYW4gb25lIGZsYXNoIHR5cGUgcGVyIGJvYXJkLgogICoKICAqIENvcHlyaWdodCAyMDA1LTIwMDcgUE1DLVNpZXJyYSwgSW5jLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvc2M1MjBjZHAuYyBiL2RyaXZlcnMvbXRkL21hcHMvc2M1MjBjZHAuYwppbmRleCA4NWMxZTU2Li40ZDhhYWFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL3NjNTIwY2RwLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9zYzUyMGNkcC5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIAl9CiAKIAkvKgotCSoqIEZpbmQgdGhlIFBBUnh4IHJlZ2lzdGVycyB0aGF0IGFyZSByZXBvbnNpYmxlIGZvciBhY3RpdmF0aW5nCisJKiogRmluZCB0aGUgUEFSeHggcmVnaXN0ZXJzIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciBhY3RpdmF0aW5nCiAJKiogUk9NQ1MwLCBST01DUzEgYW5kIEJPT1RDUy4gUmVwcm9ncmFtIGVhY2ggb2YgdGhlc2Ugd2l0aCBhCiAJKiogbmV3IHZhbHVlIGZyb20gdGhlIHRhYmxlLgogCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3RxbTh4eGwuYyBiL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jCmluZGV4IGMwOGUxNDAuLjA3MThkZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jCkBAIC02Myw3ICs2Myw3IEBACiAgKi8KIAogI2lmZGVmIENPTkZJR19NVERfUEFSVElUSU9OUwotLyogQ3VycmVudGx5LCBUUU04eHhMIGhhcyB1cHRvIDhNaUIgZmxhc2ggKi8KKy8qIEN1cnJlbnRseSwgVFFNOHh4TCBoYXMgdXAgdG8gOE1pQiBmbGFzaCAqLwogc3RhdGljIHVuc2lnbmVkIGxvbmcgdHFtOHh4bF9tYXhfZmxhc2hfc2l6ZSA9IDB4MDA4MDAwMDA7CiAKIC8qIHBhcnRpdGlvbiBkZWZpbml0aW9uIGZvciBmaXJzdCBmbGFzaCBiYW5rCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRibG9jay5jIGIvZHJpdmVycy9tdGQvbXRkYmxvY2suYwppbmRleCAxZTc0YWQ5Li4zMzI2NjE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tdGRibG9jay5jCisrKyBiL2RyaXZlcnMvbXRkL210ZGJsb2NrLmMKQEAgLTEyOSw3ICsxMjksNyBAQAogCQlyZXR1cm4gcmV0OwogCiAJLyoKLQkgKiBIZXJlIHdlIGNvdWxkIGFyZ3VibHkgc2V0IHRoZSBjYWNoZSBzdGF0ZSB0byBTVEFURV9DTEVBTi4KKwkgKiBIZXJlIHdlIGNvdWxkIGFyZ3VhYmx5IHNldCB0aGUgY2FjaGUgc3RhdGUgdG8gU1RBVEVfQ0xFQU4uCiAJICogSG93ZXZlciB0aGlzIGNvdWxkIGxlYWQgdG8gaW5jb25zaXN0ZW5jeSBzaW5jZSB3ZSB3aWxsIG5vdAogCSAqIGJlIG5vdGlmaWVkIGlmIHRoaXMgY29udGVudCBpcyBhbHRlcmVkIG9uIHRoZSBmbGFzaCBieSBvdGhlcgogCSAqIG1lYW5zLiAgTGV0J3MgZGVjbGFyZSBpdCBlbXB0eSBhbmQgbGVhdmUgYnVmZmVyaW5nIHRhc2tzIHRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRjaGFyLmMgYi9kcml2ZXJzL210ZC9tdGRjaGFyLmMKaW5kZXggMTQ1YjNkMGQuLjRjMzZlZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZGNoYXIuYworKysgYi9kcml2ZXJzL210ZC9tdGRjaGFyLmMKQEAgLTIzNCw3ICsyMzQsNyBAQAogCQkgKiB0aGUgZGF0YS4gRm9yIG91ciB1c2Vyc3BhY2UgdG9vbHMgaXQgaXMgaW1wb3J0YW50CiAJCSAqIHRvIGR1bXAgYXJlYXMgd2l0aCBlY2MgZXJyb3JzICEKIAkJICogRm9yIGtlcm5lbCBpbnRlcm5hbCB1c2FnZSBpdCBhbHNvIG1pZ2h0IHJldHVybiAtRVVDTEVBTgotCQkgKiB0byBzaWduYWwgdGhlIGNhbGxlciB0aGF0IGEgYml0ZmxpcCBoYXMgb2NjdXJlZCBhbmQgaGFzCisJCSAqIHRvIHNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgYSBiaXRmbGlwIGhhcyBvY2N1cnJlZCBhbmQgaGFzCiAJCSAqIGJlZW4gY29ycmVjdGVkIGJ5IHRoZSBFQ0MgYWxnb3JpdGhtLgogCQkgKiBVc2Vyc3BhY2Ugc29mdHdhcmUgd2hpY2ggYWNjZXNzZXMgTkFORCB0aGlzIHdheQogCQkgKiBtdXN0IGJlIGF3YXJlIG9mIHRoZSBmYWN0IHRoYXQgaXQgZGVhbHMgd2l0aCBOQU5ECmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tdGRzd2FwLmMgYi9kcml2ZXJzL210ZC9tdGRzd2FwLmMKaW5kZXggMjM3OTEzYy4uZmVkMjE1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbXRkc3dhcC5jCisrKyBiL2RyaXZlcnMvbXRkL210ZHN3YXAuYwpAQCAtMTQ1Miw3ICsxNDUyLDcgQEAKIAlvaW5mbyA9IG10ZC0+ZWNjbGF5b3V0OwogCWlmICghbXRkLT5vb2JzaXplIHx8ICFvaW5mbyB8fCBvaW5mby0+b29iYXZhaWwgPCBNVERTV0FQX09PQlNJWkUpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICIlczogTm90IGVub3VnaCBmcmVlIGJ5dGVzIGluIE9PQiwgIgotCQkJIiVkIGF2YWlsYWJsZSwgJWx1IG5lZWRlZC5cbiIsCisJCQkiJWQgYXZhaWxhYmxlLCAlenUgbmVlZGVkLlxuIiwKIAkJCU1URFNXQVBfUFJFRklYLCBvaW5mby0+b29iYXZhaWwsIE1URFNXQVBfT09CU0laRSk7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL0tjb25maWcgYi9kcml2ZXJzL210ZC9uYW5kL0tjb25maWcKaW5kZXggYTkyMDU0ZS4uZWRlYzQ1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZwpAQCAtMjM5LDcgKzIzOSw3IEBACiAJaGVscAogCSAgVGhpcyBlbmFibGVzIHRoZSBOQU5EIGZsYXNoIGNvbnRyb2xsZXIgb24gdGhlIEJDTSBVTUkgYmxvY2suCiAKLQkgIE5vIGJvYXJkIHNwZWNmaWMgc3VwcG9ydCBpcyBkb25lIGJ5IHRoaXMgZHJpdmVyLCBlYWNoIGJvYXJkCisJICBObyBib2FyZCBzcGVjaWZpYyBzdXBwb3J0IGlzIGRvbmUgYnkgdGhpcyBkcml2ZXIsIGVhY2ggYm9hcmQKIAkgIG11c3QgYWR2ZXJ0aXNlIGEgcGxhdGZvcm1fZGV2aWNlIGZvciB0aGUgZHJpdmVyIHRvIGF0dGFjaC4KIAogY29uZmlnIE1URF9OQU5EX0JDTV9VTUlfSFdDUwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9hbXMtZGVsdGEuYyBiL2RyaXZlcnMvbXRkL25hbmQvYW1zLWRlbHRhLmMKaW5kZXggYTA2N2QwOS4uYmM2NWJmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9hbXMtZGVsdGEuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2Ftcy1kZWx0YS5jCkBAIC0yMjgsNyArMjI4LDcgQEAKIAkJCQkJICBBTVNfREVMVEFfTEFUQ0gyX05BTkRfTkNFIHwKIAkJCQkJICBBTVNfREVMVEFfTEFUQ0gyX05BTkRfTldQKTsKIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4oYW1zX2RlbHRhX210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9tdGQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2F0bWVsX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvYXRtZWxfbmFuZC5jCmluZGV4IDZmYWUwNGIuLjk1MDY0NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvYXRtZWxfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvYXRtZWxfbmFuZC5jCkBAIC0yMDksMjIgKzIwOSw4IEBACiAJaW50IGVyciA9IC1FSU87CiAJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gaXNfcmVhZCA/IERNQV9GUk9NX0RFVklDRSA6IERNQV9UT19ERVZJQ0U7CiAKLQlpZiAoYnVmID49IGhpZ2hfbWVtb3J5KSB7Ci0JCXN0cnVjdCBwYWdlICpwZzsKLQotCQlpZiAoKChzaXplX3QpYnVmICYgUEFHRV9NQVNLKSAhPQotCQkgICAgKChzaXplX3QpKGJ1ZiArIGxlbiAtIDEpICYgUEFHRV9NQVNLKSkgewotCQkJZGV2X3dhcm4oaG9zdC0+ZGV2LCAiQnVmZmVyIG5vdCBmaXQgaW4gb25lIHBhZ2VcbiIpOwotCQkJZ290byBlcnJfYnVmOwotCQl9Ci0KLQkJcGcgPSB2bWFsbG9jX3RvX3BhZ2UoYnVmKTsKLQkJaWYgKHBnID09IDApIHsKLQkJCWRldl9lcnIoaG9zdC0+ZGV2LCAiRmFpbGVkIHRvIHZtYWxsb2NfdG9fcGFnZVxuIik7Ci0JCQlnb3RvIGVycl9idWY7Ci0JCX0KLQkJcCA9IHBhZ2VfYWRkcmVzcyhwZykgKyAoKHNpemVfdClidWYgJiB+UEFHRV9NQVNLKTsKLQl9CisJaWYgKGJ1ZiA+PSBoaWdoX21lbW9yeSkKKwkJZ290byBlcnJfYnVmOwogCiAJZG1hX2RldiA9IGhvc3QtPmRtYV9jaGFuLT5kZXZpY2U7CiAKQEAgLTI4MCw3ICsyNjYsOCBAQAogCXN0cnVjdCBuYW5kX2NoaXAgKmNoaXAgPSBtdGQtPnByaXY7CiAJc3RydWN0IGF0bWVsX25hbmRfaG9zdCAqaG9zdCA9IGNoaXAtPnByaXY7CiAKLQlpZiAodXNlX2RtYSAmJiBsZW4gPj0gbXRkLT5vb2JzaXplKQorCWlmICh1c2VfZG1hICYmIGxlbiA+IG10ZC0+b29ic2l6ZSkKKwkJLyogb25seSB1c2UgRE1BIGZvciBiaWdnZXIgdGhhbiBvb2Igc2l6ZTogYmV0dGVyIHBlcmZvcm1hbmNlcyAqLwogCQlpZiAoYXRtZWxfbmFuZF9kbWFfb3AobXRkLCBidWYsIGxlbiwgMSkgPT0gMCkKIAkJCXJldHVybjsKIApAQCAtMjk1LDcgKzI4Miw4IEBACiAJc3RydWN0IG5hbmRfY2hpcCAqY2hpcCA9IG10ZC0+cHJpdjsKIAlzdHJ1Y3QgYXRtZWxfbmFuZF9ob3N0ICpob3N0ID0gY2hpcC0+cHJpdjsKIAotCWlmICh1c2VfZG1hICYmIGxlbiA+PSBtdGQtPm9vYnNpemUpCisJaWYgKHVzZV9kbWEgJiYgbGVuID4gbXRkLT5vb2JzaXplKQorCQkvKiBvbmx5IHVzZSBETUEgZm9yIGJpZ2dlciB0aGFuIG9vYiBzaXplOiBiZXR0ZXIgcGVyZm9ybWFuY2VzICovCiAJCWlmIChhdG1lbF9uYW5kX2RtYV9vcChtdGQsICh2b2lkICopYnVmLCBsZW4sIDApID09IDApCiAJCQlyZXR1cm47CiAKQEAgLTU5OSw3ICs1ODcsMTAgQEAKIAkJbmFuZF9jaGlwLT5vcHRpb25zIHw9IE5BTkRfVVNFX0ZMQVNIX0JCVDsKIAl9CiAKLQlpZiAoY3B1X2hhc19kbWEoKSAmJiB1c2VfZG1hKSB7CisJaWYgKCFjcHVfaGFzX2RtYSgpKQorCQl1c2VfZG1hID0gMDsKKworCWlmICh1c2VfZG1hKSB7CiAJCWRtYV9jYXBfbWFza190IG1hc2s7CiAKIAkJZG1hX2NhcF96ZXJvKG1hc2spOwpAQCAtNjExLDcgKzYwMiw4IEBACiAJCX0KIAl9CiAJaWYgKHVzZV9kbWEpCi0JCWRldl9pbmZvKGhvc3QtPmRldiwgIlVzaW5nIERNQSBmb3IgTkFORCBhY2Nlc3MuXG4iKTsKKwkJZGV2X2luZm8oaG9zdC0+ZGV2LCAiVXNpbmcgJXMgZm9yIERNQSB0cmFuc2ZlcnMuXG4iLAorCQkJCQlkbWFfY2hhbl9uYW1lKGhvc3QtPmRtYV9jaGFuKSk7CiAJZWxzZQogCQlkZXZfaW5mbyhob3N0LT5kZXYsICJObyBETUEgc3VwcG9ydCBmb3IgTkFORCBhY2Nlc3MuXG4iKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9hdXRjcHUxMi5jIGIvZHJpdmVycy9tdGQvbmFuZC9hdXRjcHUxMi5jCmluZGV4IDdjOTVkYTEuLjA5MTFjZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvYXV0Y3B1MTIuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2F1dGNwdTEyLmMKQEAgLTE3Niw3ICsxNzYsNyBAQAogCSAqLwogCXRoaXMtPm9wdGlvbnMgPSBOQU5EX1VTRV9GTEFTSF9CQlQ7CiAKLQkvKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UgKi8KKwkvKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UgKi8KIAlpZiAobmFuZF9zY2FuKGF1dGNwdTEyX210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9pb3I7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2NzNTUzeF9uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL2NzNTUzeF9uYW5kLmMKaW5kZXggOWYxYjQ1MS4uNzFjMzVhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9jczU1M3hfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvY3M1NTN4X25hbmQuYwpAQCAtMjQxLDcgKzI0MSw3IEBACiAJLyogRW5hYmxlIHRoZSBmb2xsb3dpbmcgZm9yIGEgZmxhc2ggYmFzZWQgYmFkIGJsb2NrIHRhYmxlICovCiAJdGhpcy0+b3B0aW9ucyA9IE5BTkRfVVNFX0ZMQVNIX0JCVCB8IE5BTkRfTk9fQVVUT0lOQ1I7CiAKLQkvKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UgKi8KKwkvKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UgKi8KIAlpZiAobmFuZF9zY2FuKG5ld19tdGQsIDEpKSB7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBvdXRfaW9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9kZW5hbGkuYyBiL2RyaXZlcnMvbXRkL25hbmQvZGVuYWxpLmMKaW5kZXggOGM4ZDNjOC4uNDYzM2YwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9kZW5hbGkuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2RlbmFsaS5jCkBAIC03MjQsNyArNzI0LDcgQEAKIH0KIAogLyogVGhpcyBoZWxwZXIgZnVuY3Rpb24gc2V0dXBzIHRoZSByZWdpc3RlcnMgZm9yIEVDQyBhbmQgd2hldGhlciBvciBub3QKLSAqIHRoZSBzcGFyZSBhcmVhIHdpbGwgYmUgdHJhbnNmZXJlZC4gKi8KKyAqIHRoZSBzcGFyZSBhcmVhIHdpbGwgYmUgdHJhbnNmZXJyZWQuICovCiBzdGF0aWMgdm9pZCBzZXR1cF9lY2NfZm9yX3hmZXIoc3RydWN0IGRlbmFsaV9uYW5kX2luZm8gKmRlbmFsaSwgYm9vbCBlY2NfZW4sCiAJCQkJYm9vbCB0cmFuc2Zlcl9zcGFyZSkKIHsKQEAgLTk2NSw3ICs5NjUsNyBAQAogCiAJCQlpZiAoRUNDX0VSUk9SX0NPUlJFQ1RBQkxFKGVycl9jb3JyZWN0aW9uX2luZm8pKSB7CiAJCQkJLyogSWYgZXJyX2J5dGUgaXMgbGFyZ2VyIHRoYW4gRUNDX1NFQ1RPUl9TSVpFLAotCQkJCSAqIG1lYW5zIGVycm9yIGhhcHBlbmQgaW4gT09CLCBzbyB3ZSBpZ25vcmUKKwkJCQkgKiBtZWFucyBlcnJvciBoYXBwZW5lZCBpbiBPT0IsIHNvIHdlIGlnbm9yZQogCQkJCSAqIGl0LiBJdCdzIG5vIG5lZWQgZm9yIHVzIHRvIGNvcnJlY3QgaXQKIAkJCQkgKiBlcnJfZGV2aWNlIGlzIHJlcHJlc2VudGVkIHRoZSBOQU5EIGVycm9yCiAJCQkJICogYml0cyBhcmUgaGFwcGVuZWQgaW4gaWYgdGhlcmUgYXJlIG1vcmUKQEAgLTExMDksNyArMTEwOSw3IEBACiB9CiAKIC8qIFRoaXMgaXMgdGhlIGNhbGxiYWNrIHRoYXQgdGhlIE5BTkQgY29yZSBjYWxscyB0byB3cml0ZSBhIHBhZ2Ugd2l0aG91dCBFQ0MuCi0gKiByYXcgYWNjZXNzIGlzIHNpbWlsaWFyIHRvIEVDQyBwYWdlIHdyaXRlcywgc28gYWxsIHRoZSB3b3JrIGlzIGRvbmUgaW4gdGhlCisgKiByYXcgYWNjZXNzIGlzIHNpbWlsYXIgdG8gRUNDIHBhZ2Ugd3JpdGVzLCBzbyBhbGwgdGhlIHdvcmsgaXMgZG9uZSBpbiB0aGUKICAqIHdyaXRlX3BhZ2UoKSBmdW5jdGlvbiBhYm92ZS4KICAqLwogc3RhdGljIHZvaWQgZGVuYWxpX3dyaXRlX3BhZ2VfcmF3KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBzdHJ1Y3QgbmFuZF9jaGlwICpjaGlwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9kaXNrb25jaGlwLmMgYi9kcml2ZXJzL210ZC9uYW5kL2Rpc2tvbmNoaXAuYwppbmRleCBiN2Y4ZGU3Li45NmMwYjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2Rpc2tvbmNoaXAuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2Rpc2tvbmNoaXAuYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAgKgogICogRmFicmljZSBCZWxsYXJkIGZpZ3VyZWQgdGhpcyBvdXQgaW4gdGhlIG9sZCBkb2NlY2MgY29kZS4gSSBhZGRlZAogICogc29tZSBjb21tZW50cywgaW1wcm92ZWQgYSBtaW5vciBiaXQgYW5kIGNvbnZlcnRlZCBpdCB0byBtYWtlIHVzZQotICogb2YgdGhlIGdlbmVyaWMgUmVlZC1Tb2xvbW9uIGxpYmFyeS4gdGdseAorICogb2YgdGhlIGdlbmVyaWMgUmVlZC1Tb2xvbW9uIGxpYnJhcnkuIHRnbHgKICAqLwogc3RhdGljIGludCBkb2NfZWNjX2RlY29kZShzdHJ1Y3QgcnNfY29udHJvbCAqcnMsIHVpbnQ4X3QgKmRhdGEsIHVpbnQ4X3QgKmVjYykKIHsKQEAgLTQwMCw3ICs0MDAsNyBAQAogCWRvYzIwMHhfaHdjb250cm9sKG10ZCwgMCwgTkFORF9DVFJMX0FMRSB8IE5BTkRfQ1RSTF9DSEFOR0UpOwogCWRvYzIwMHhfaHdjb250cm9sKG10ZCwgTkFORF9DTURfTk9ORSwgTkFORF9OQ0UgfCBOQU5EX0NUUkxfQ0hBTkdFKTsKIAotCS8qIFdlIGNhbnQnIHVzZSBkZXZfcmVhZHkgaGVyZSwgYnV0IGF0IGxlYXN0IHdlIHdhaXQgZm9yIHRoZQorCS8qIFdlIGNhbid0JyB1c2UgZGV2X3JlYWR5IGhlcmUsIGJ1dCBhdCBsZWFzdCB3ZSB3YWl0IGZvciB0aGUKIAkgKiBjb21tYW5kIHRvIGNvbXBsZXRlCiAJICovCiAJdWRlbGF5KDUwKTsKQEAgLTk4Niw3ICs5ODYsNyBAQAogCQlkdW1teSA9IFJlYWRET0MoZG9jcHRyLCBFQ0NDb25mKTsKIAl9CiAKLQkvKiBFcnJvciBvY2N1cmVkID8gKi8KKwkvKiBFcnJvciBvY2N1cnJlZCA/ICovCiAJaWYgKGR1bW15ICYgMHg4MCkgewogCQlmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKSB7CiAJCQlpZiAoRG9DX2lzX01pbGxlbm5pdW1QbHVzKGRvYykpCkBAIC0xMTYwLDcgKzExNjAsNyBAQAogCS8qIE5PVEU6IFRoZSBsaW5lcyBiZWxvdyBtb2RpZnkgaW50ZXJuYWwgdmFyaWFibGVzIG9mIHRoZSBOQU5EIGFuZCBNVEQKIAkgICBsYXllcnM7IHZhcmlhYmxlcyB3aXRoIGhhdmUgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQgYnkgbmFuZF9zY2FuLgogCSAgIFVuZm9ydHVuYXRlbHksIHdlIGRpZG4ndCBrbm93IGJlZm9yZSB0aGlzIHBvaW50IHdoYXQgdGhlc2UgdmFsdWVzCi0JICAgc2hvdWxkIGJlLiAgVGh1cywgdGhpcyBjb2RlIGlzIHNvbWV3aGF0IGRlcGVuZGFudCBvbiB0aGUgZXhhY3QKKwkgICBzaG91bGQgYmUuICBUaHVzLCB0aGlzIGNvZGUgaXMgc29tZXdoYXQgZGVwZW5kZW50IG9uIHRoZSBleGFjdAogCSAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBOQU5EIGxheWVyLiAgKi8KIAlpZiAobWgtPlVuaXRTaXplRmFjdG9yICE9IDB4ZmYpIHsKIAkJdGhpcy0+YmJ0X2VyYXNlX3NoaWZ0ICs9ICgweGZmIC0gbWgtPlVuaXRTaXplRmFjdG9yKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvZnNsX2VsYmNfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9mc2xfZWxiY19uYW5kLmMKaW5kZXggN2ExM2Q0Mi4uNTM3ZTM4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9mc2xfZWxiY19uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9mc2xfZWxiY19uYW5kLmMKQEAgLTU5LDcgKzU5LDcgQEAKIAl1bnNpZ25lZCBpbnQgZm1yOyAgICAgICAvKiBGQ00gRmxhc2ggTW9kZSBSZWdpc3RlciB2YWx1ZSAgICAgKi8KIH07CiAKLS8qIEZyZWVzY2FsZSBlTEJDIEZDTSBjb250cm9sbGVyIGluZm9tYXRpb24gKi8KKy8qIEZyZWVzY2FsZSBlTEJDIEZDTSBjb250cm9sbGVyIGluZm9ybWF0aW9uICovCiAKIHN0cnVjdCBmc2xfZWxiY19mY21fY3RybCB7CiAJc3RydWN0IG5hbmRfaHdfY29udHJvbCBjb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9mc21jX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvZnNtY19uYW5kLmMKaW5kZXggMjA1YjEwYi4uMGQ0NWVmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9mc21jX25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2ZzbWNfbmFuZC5jCkBAIC0zMzUsNyArMzM1LDcgQEAKIAogLyoKICAqIGZzbWNfcmVhZF9od2VjY19lY2M0IC0gSGFyZHdhcmUgRUNDIGNhbGN1bGF0b3IgZm9yIGVjYzQgb3B0aW9uIHN1cHBvcnRlZCBieQotICogRlNNQy4gRUNDIGlzIDEzIGJ5dGVzIGZvciA1MTIgYnl0ZXMgb2YgZGF0YSAoc3VwcG9ydHMgZXJyb3IgY29ycmVjdGlvbiB1cHRvCisgKiBGU01DLiBFQ0MgaXMgMTMgYnl0ZXMgZm9yIDUxMiBieXRlcyBvZiBkYXRhIChzdXBwb3J0cyBlcnJvciBjb3JyZWN0aW9uIHVwIHRvCiAgKiBtYXggb2YgOC1iaXRzKQogICovCiBzdGF0aWMgaW50IGZzbWNfcmVhZF9od2VjY19lY2M0KHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBjb25zdCB1aW50OF90ICpkYXRhLApAQCAtMzgxLDcgKzM4MSw3IEBACiAKIC8qCiAgKiBmc21jX3JlYWRfaHdlY2NfZWNjMSAtIEhhcmR3YXJlIEVDQyBjYWxjdWxhdG9yIGZvciBlY2MxIG9wdGlvbiBzdXBwb3J0ZWQgYnkKLSAqIEZTTUMuIEVDQyBpcyAzIGJ5dGVzIGZvciA1MTIgYnl0ZXMgb2YgZGF0YSAoc3VwcG9ydHMgZXJyb3IgY29ycmVjdGlvbiB1cHRvCisgKiBGU01DLiBFQ0MgaXMgMyBieXRlcyBmb3IgNTEyIGJ5dGVzIG9mIGRhdGEgKHN1cHBvcnRzIGVycm9yIGNvcnJlY3Rpb24gdXAgdG8KICAqIG1heCBvZiAxLWJpdCkKICAqLwogc3RhdGljIGludCBmc21jX3JlYWRfaHdlY2NfZWNjMShzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgY29uc3QgdWludDhfdCAqZGF0YSwKQEAgLTQwOCwxMCArNDA4LDEwIEBACiAgKiBAYnVmOglidWZmZXIgdG8gc3RvcmUgcmVhZCBkYXRhCiAgKiBAcGFnZToJcGFnZSBudW1iZXIgdG8gcmVhZAogICoKLSAqIFRoaXMgcm91dGluZSBpcyBuZWVkZWQgZm9yIGZzbWMgdmVyaXNvbiA4IGFzIHJlYWRpbmcgZnJvbSBOQU5EIGNoaXAgaGFzIHRvIGJlCisgKiBUaGlzIHJvdXRpbmUgaXMgbmVlZGVkIGZvciBmc21jIHZlcnNpb24gOCBhcyByZWFkaW5nIGZyb20gTkFORCBjaGlwIGhhcyB0byBiZQogICogcGVyZm9ybWVkIGluIGEgc3RyaWN0IHNlcXVlbmNlIGFzIGZvbGxvd3M6CiAgKiBkYXRhKDUxMiBieXRlKSAtPiBlY2MoMTMgYnl0ZSkKLSAqIEFmdGVyIHRoaXMgcmVhZCwgZnNtYyBoYXJkd2FyZSBnZW5lcmF0ZXMgYW5kIHJlcG9ydHMgZXJyb3IgZGF0YSBiaXRzKHVwdG8gYQorICogQWZ0ZXIgdGhpcyByZWFkLCBmc21jIGhhcmR3YXJlIGdlbmVyYXRlcyBhbmQgcmVwb3J0cyBlcnJvciBkYXRhIGJpdHModXAgdG8gYQogICogbWF4IG9mIDggYml0cykKICAqLwogc3RhdGljIGludCBmc21jX3JlYWRfcGFnZV9od2VjYyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKQEAgLTY4Niw3ICs2ODYsNyBAQAogCX0KIAogCS8qCi0JICogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlCisJICogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlCiAJICovCiAJaWYgKG5hbmRfc2Nhbl9pZGVudCgmaG9zdC0+bXRkLCAxLCBOVUxMKSkgewogCQlyZXQgPSAtRU5YSU87CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYwppbmRleCA4NWNmYzA2Li5jNTRhNGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKQEAgLTE1ODIsNyArMTU4Miw3IEBACiB9CiAKIC8qKgotICogbmFuZF9yZWFkIC0gW01URCBJbnRlcmZhY2VdIE1URCBjb21wYWJpbGl0eSBmdW5jdGlvbiBmb3IgbmFuZF9kb19yZWFkX2VjYworICogbmFuZF9yZWFkIC0gW01URCBJbnRlcmZhY2VdIE1URCBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uIGZvciBuYW5kX2RvX3JlYWRfZWNjCiAgKiBAbXRkOglNVEQgZGV2aWNlIHN0cnVjdHVyZQogICogQGZyb206CW9mZnNldCB0byByZWFkIGZyb20KICAqIEBsZW46CW51bWJlciBvZiBieXRlcyB0byByZWFkCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmJ0LmMgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmJ0LmMKaW5kZXggYTFlOGIzMDAuLmFmNDY0MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYnQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmJ0LmMKQEAgLTk0NSw3ICs5NDUsNyBAQAogCQlyZDIgPSBOVUxMOwogCQkvKiBQZXIgY2hpcCBvciBwZXIgZGV2aWNlID8gKi8KIAkJY2hpcHNlbCA9ICh0ZC0+b3B0aW9ucyAmIE5BTkRfQkJUX1BFUkNISVApID8gaSA6IC0xOwotCQkvKiBNaXJyb3JlZCB0YWJsZSBhdmlsYWJsZSA/ICovCisJCS8qIE1pcnJvcmVkIHRhYmxlIGF2YWlsYWJsZSA/ICovCiAJCWlmIChtZCkgewogCQkJaWYgKHRkLT5wYWdlc1tpXSA9PSAtMSAmJiBtZC0+cGFnZXNbaV0gPT0gLTEpIHsKIAkJCQl3cml0ZW9wcyA9IDB4MDM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL25hbmRzaW0uYyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZHNpbS5jCmluZGV4IDIxMzE4MWIuLjg5M2Q5NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvbmFuZHNpbS5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZHNpbS5jCkBAIC0xNjIsNyArMTYyLDcgQEAKIE1PRFVMRV9QQVJNX0RFU0MoZ3JhdmVwYWdlcywgICAgICJQYWdlcyB0aGF0IGxvc2UgZGF0YSBbOiBtYXhpbXVtIHJlYWRzIChkZWZhdWx0cyB0byAzKV0iCiAJCQkJICIgc2VwYXJhdGVkIGJ5IGNvbW1hcyBlLmcuIDE0MDE6MiBtZWFucyBwYWdlIDE0MDEiCiAJCQkJICIgY2FuIGJlIHJlYWQgb25seSB0d2ljZSBiZWZvcmUgZmFpbGluZyIpOwotTU9EVUxFX1BBUk1fREVTQyhycHR3ZWFyLCAgICAgICAgIk51bWJlciBvZiBlcmFzZXMgaW5iZXR3ZWVuIHJlcG9ydGluZyB3ZWFyLCBpZiBub3QgemVybyIpOworTU9EVUxFX1BBUk1fREVTQyhycHR3ZWFyLCAgICAgICAgIk51bWJlciBvZiBlcmFzZXMgYmV0d2VlbiByZXBvcnRpbmcgd2VhciwgaWYgbm90IHplcm8iKTsKIE1PRFVMRV9QQVJNX0RFU0Mob3ZlcnJpZGVzaXplLCAgICJTcGVjaWZpZXMgdGhlIE5BTkQgRmxhc2ggc2l6ZSBvdmVycmlkaW5nIHRoZSBJRCBieXRlcy4gIgogCQkJCSAiVGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIGVyYXNlIGJsb2NrcyBhbmQgYXMgdGhlIGV4cG9uZW50IG9mIGEgcG93ZXIgb2YgdHdvIgogCQkJCSAiIGUuZy4gNSBtZWFucyBhIHNpemUgb2YgMzIgZXJhc2UgYmxvY2tzIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL25vbWFkaWtfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9ub21hZGlrX25hbmQuYwppbmRleCA4YzBiNjkzLi5hMDQ1YTRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL25vbWFkaWtfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvbm9tYWRpa19uYW5kLmMKQEAgLTE1MSw3ICsxNTEsNyBAQAogCW5hbmQtPm9wdGlvbnMgPSBwZGF0YS0+b3B0aW9uczsKIAogCS8qCi0JICogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlCisJICogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlCiAJICovCiAJaWYgKG5hbmRfc2NhbigmaG9zdC0+bXRkLCAxKSkgewogCQlyZXQgPSAtRU5YSU87CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Bhc2VtaV9uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL3Bhc2VtaV9uYW5kLmMKaW5kZXggNTllZmE4Mi4uMjBiZmU1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9wYXNlbWlfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvcGFzZW1pX25hbmQuYwpAQCAtMTU3LDcgKzE1Nyw3IEBACiAJLyogRW5hYmxlIHRoZSBmb2xsb3dpbmcgZm9yIGEgZmxhc2ggYmFzZWQgYmFkIGJsb2NrIHRhYmxlICovCiAJY2hpcC0+b3B0aW9ucyA9IE5BTkRfVVNFX0ZMQVNIX0JCVCB8IE5BTkRfTk9fQVVUT0lOQ1I7CiAKLQkvKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UgKi8KKwkvKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UgKi8KIAlpZiAobmFuZF9zY2FuKHBhc2VtaV9uYW5kX210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9scGM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3BsYXRfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9wbGF0X25hbmQuYwppbmRleCAzMTdhZmY0Li5jYWY1YTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3BsYXRfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvcGxhdF9uYW5kLmMKQEAgLTk1LDcgKzk1LDcgQEAKIAkJCWdvdG8gb3V0OwogCX0KIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4oJmRhdGEtPm10ZCwgcGRhdGEtPmNoaXAubnJfY2hpcHMpKSB7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3B4YTN4eF9uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL3B4YTN4eF9uYW5kLmMKaW5kZXggYWI3ZjRjMy4uZmYwNzAxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9weGEzeHhfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvcHhhM3h4X25hbmQuYwpAQCAtMTg0LDcgKzE4NCw3IEBACiAKIHN0YXRpYyBpbnQgdXNlX2RtYSA9IDE7CiBtb2R1bGVfcGFyYW0odXNlX2RtYSwgYm9vbCwgMDQ0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKHVzZV9kbWEsICJlbmFibGUgRE1BIGZvciBkYXRhIHRyYW5zZmVyaW5nIHRvL2Zyb20gTkFORCBIVyIpOworTU9EVUxFX1BBUk1fREVTQyh1c2VfZG1hLCAiZW5hYmxlIERNQSBmb3IgZGF0YSB0cmFuc2ZlcnJpbmcgdG8vZnJvbSBOQU5EIEhXIik7CiAKIC8qCiAgKiBEZWZhdWx0IE5BTkQgZmxhc2ggY29udHJvbGxlciBjb25maWd1cmF0aW9uIHNldHVwIGJ5IHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yODUyLmMgYi9kcml2ZXJzL210ZC9uYW5kL3I4NTIuYwppbmRleCA2MzIyZDFmLi5jYWUyZTAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3I4NTIuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3I4NTIuYwpAQCAtMTg1LDcgKzE4NSw3IEBACiAKIAlkYmdfdmVyYm9zZSgiZG9pbmcgZG1hICVzICIsIGRvX3JlYWQgPyAicmVhZCIgOiAid3JpdGUiKTsKIAotCS8qIFNldCBpbnRpYWwgZG1hIHN0YXRlOiBmb3IgcmVhZGluZyBmaXJzdCBmaWxsIG9uIGJvYXJkIGJ1ZmZlciwKKwkvKiBTZXQgaW5pdGlhbCBkbWEgc3RhdGU6IGZvciByZWFkaW5nIGZpcnN0IGZpbGwgb24gYm9hcmQgYnVmZmVyLAogCSAgZnJvbSBkZXZpY2UsIGZvciB3cml0ZXMgZmlyc3QgZmlsbCB0aGUgYnVmZmVyICBmcm9tIG1lbW9yeSovCiAJZGV2LT5kbWFfc3RhdGUgPSBkb19yZWFkID8gRE1BX0lOVEVSTkFMIDogRE1BX01FTU9SWTsKIApAQCAtNzY2LDcgKzc2Niw3IEBACiAJCXJldCA9IElSUV9IQU5ETEVEOwogCQlkZXYtPmNhcmRfZGV0ZWN0ZWQgPSAhIShjYXJkX3N0YXR1cyAmIFI4NTJfQ0FSRF9JUlFfSU5TRVJUKTsKIAotCQkvKiB3ZSBzaG91bGRuJ3QgcmVjaWV2ZSBhbnkgaW50ZXJydXB0cyBpZiB3ZSB3YWl0IGZvciBjYXJkCisJCS8qIHdlIHNob3VsZG4ndCByZWNlaXZlIGFueSBpbnRlcnJ1cHRzIGlmIHdlIHdhaXQgZm9yIGNhcmQKIAkJCXRvIHNldHRsZSAqLwogCQlXQVJOX09OKGRldi0+Y2FyZF91bnN0YWJsZSk7CiAKQEAgLTc5NCwxMyArNzk0LDEzIEBACiAJCXJldCA9IElSUV9IQU5ETEVEOwogCiAJCWlmIChkbWFfc3RhdHVzICYgUjg1Ml9ETUFfSVJRX0VSUk9SKSB7Ci0JCQlkYmcoInJlY2lldmVkIGRtYSBlcnJvciBJUlEiKTsKKwkJCWRiZygicmVjZWl2ZWQgZG1hIGVycm9yIElSUSIpOwogCQkJcjg1Ml9kbWFfZG9uZShkZXYsIC1FSU8pOwogCQkJY29tcGxldGUoJmRldi0+ZG1hX2RvbmUpOwogCQkJZ290byBvdXQ7CiAJCX0KIAotCQkvKiByZWNpZXZlZCBETUEgaW50ZXJydXB0IG91dCBvZiBub3doZXJlPyAqLworCQkvKiByZWNlaXZlZCBETUEgaW50ZXJydXB0IG91dCBvZiBub3doZXJlPyAqLwogCQlXQVJOX09OX09OQ0UoZGV2LT5kbWFfc3RhZ2UgPT0gMCk7CiAKIAkJaWYgKGRldi0+ZG1hX3N0YWdlID09IDApCkBAIC05NjAsNyArOTYwLDcgQEAKIAkJJmRldi0+Y2FyZF9kZXRlY3Rfd29yaywgMCk7CiAKIAotCXByaW50ayhLRVJOX05PVElDRSBEUlZfTkFNRSAiOiBkcml2ZXIgbG9hZGVkIHN1Y2Nlc2Z1bGx5XG4iKTsKKwlwcmludGsoS0VSTl9OT1RJQ0UgRFJWX05BTUUgIjogZHJpdmVyIGxvYWRlZCBzdWNjZXNzZnVsbHlcbiIpOwogCXJldHVybiAwOwogCiBlcnJvcjEwOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9zaF9mbGN0bC5jIGIvZHJpdmVycy9tdGQvbmFuZC9zaF9mbGN0bC5jCmluZGV4IDU0NmMyZjAuLjgxYmJiNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvc2hfZmxjdGwuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3NoX2ZsY3RsLmMKQEAgLTc4LDcgKzc4LDcgQEAKIAogc3RhdGljIHZvaWQgdGltZW91dF9lcnJvcihzdHJ1Y3Qgc2hfZmxjdGwgKmZsY3RsLCBjb25zdCBjaGFyICpzdHIpCiB7Ci0JZGV2X2VycigmZmxjdGwtPnBkZXYtPmRldiwgIlRpbWVvdXQgb2NjdXJlZCBpbiAlc1xuIiwgc3RyKTsKKwlkZXZfZXJyKCZmbGN0bC0+cGRldi0+ZGV2LCAiVGltZW91dCBvY2N1cnJlZCBpbiAlc1xuIiwgc3RyKTsKIH0KIAogc3RhdGljIHZvaWQgd2FpdF9jb21wbGV0aW9uKHN0cnVjdCBzaF9mbGN0bCAqZmxjdGwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3NtX2NvbW1vbi5jIGIvZHJpdmVycy9tdGQvbmFuZC9zbV9jb21tb24uYwppbmRleCA0YThmMzY3Li41N2NjODBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3NtX2NvbW1vbi5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvc21fY29tbW9uLmMKQEAgLTEyMSw3ICsxMjEsNyBAQAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQkvKiBCYWQgYmxvY2sgbWFya2VyIHBvc3Rpb24gKi8KKwkvKiBCYWQgYmxvY2sgbWFya2VyIHBvc2l0aW9uICovCiAJY2hpcC0+YmFkYmxvY2twb3MgPSAweDA1OwogCWNoaXAtPmJhZGJsb2NrYml0cyA9IDc7CiAJY2hpcC0+YmxvY2tfbWFya2JhZCA9IHNtX2Jsb2NrX21hcmtiYWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3RtaW9fbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC90bWlvX25hbmQuYwppbmRleCAzOGZiMTY3Li4xNGM1Nzg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3RtaW9fbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvdG1pb19uYW5kLmMKQEAgLTQsNyArNCw3IEBACiAgKiBTbGlnaHRseSBtdXJreSBwcmUtZ2l0IGhpc3Rvcnkgb2YgdGhlIGRyaXZlcjoKICAqCiAgKiBDb3B5cmlnaHQgKGMpIElhbiBNb2x0b24gMjAwNCwgMjAwNSwgMjAwOAotICogICAgT3JpZ2luYWwgd29yaywgaW5kZXBlbmRhbnQgb2Ygc2hhcnBzIGNvZGUuIEluY2x1ZGVkIGhhcmR3YXJlIEVDQyBzdXBwb3J0LgorICogICAgT3JpZ2luYWwgd29yaywgaW5kZXBlbmRlbnQgb2Ygc2hhcnBzIGNvZGUuIEluY2x1ZGVkIGhhcmR3YXJlIEVDQyBzdXBwb3J0LgogICogICAgSGFyZCBFQ0MgZGlkIG5vdCB3b3JrIGZvciB3cml0ZXMgaW4gdGhlIGVhcmx5IHJldmlzaW9ucy4KICAqIENvcHlyaWdodCAoYykgRGlyayBPcGZlciAyMDA1LgogICogICAgTW9kaWZpY2F0aW9ucyBkZXZlbG9wZWQgZnJvbSBzaGFycHMgY29kZSBidXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb21hcDIuYyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb21hcDIuYwppbmRleCBmNTkxZjYxLi4xZmNiNDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9vbmVuYW5kL29tYXAyLmMKKysrIGIvZHJpdmVycy9tdGQvb25lbmFuZC9vbWFwMi5jCkBAIC02MDgsNyArNjA4LDcgQEAKIAogCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoYy0+cmVndWxhdG9yKTsKIAlpZiAocmV0ICE9IDApCi0JCWRldl9lcnIoJmMtPnBkZXYtPmRldiwgImNhbnQgZW5hYmxlIHJlZ3VsYXRvclxuIik7CisJCWRldl9lcnIoJmMtPnBkZXYtPmRldiwgImNhbid0IGVuYWJsZSByZWd1bGF0b3JcbiIpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTYyMCw3ICs2MjAsNyBAQAogCiAJcmV0ID0gcmVndWxhdG9yX2Rpc2FibGUoYy0+cmVndWxhdG9yKTsKIAlpZiAocmV0ICE9IDApCi0JCWRldl9lcnIoJmMtPnBkZXYtPmRldiwgImNhbnQgZGlzYWJsZSByZWd1bGF0b3JcbiIpOworCQlkZXZfZXJyKCZjLT5wZGV2LT5kZXYsICJjYW4ndCBkaXNhYmxlIHJlZ3VsYXRvclxuIik7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX3NpbS5jIGIvZHJpdmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX3NpbS5jCmluZGV4IDhiMjQ2MDYuLjVlZjNiZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9zaW0uYworKysgYi9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfc2ltLmMKQEAgLTMyMSw3ICszMjEsNyBAQAogCQkJCWNvbnRpbnVlOwogCQkJaWYgKG1lbWNtcChkZXN0ICsgb2ZmLCBmZmNoYXJzLCB0aGlzLT5zdWJwYWdlc2l6ZSkgJiYKIAkJCSAgICBvbmVuYW5kX2NoZWNrX292ZXJ3cml0ZShkZXN0ICsgb2ZmLCBzcmMgKyBvZmYsIHRoaXMtPnN1YnBhZ2VzaXplKSkKLQkJCQlwcmludGsoS0VSTl9FUlIgIm92ZXItd3JpdGUgaGFwcGVuZCBhdCAweCUwOHhcbiIsIG9mZnNldCk7CisJCQkJcHJpbnRrKEtFUk5fRVJSICJvdmVyLXdyaXRlIGhhcHBlbmVkIGF0IDB4JTA4eFxuIiwgb2Zmc2V0KTsKIAkJCW1lbWNweShkZXN0ICsgb2ZmLCBzcmMgKyBvZmYsIHRoaXMtPnN1YnBhZ2VzaXplKTsKIAkJfQogCQkvKiBGYWxsIHRocm91Z2ggKi8KQEAgLTMzNSw3ICszMzUsNyBAQAogCQlkZXN0ID0gT05FTkFORF9DT1JFX1NQQVJFKGZsYXNoLCB0aGlzLCBvZmZzZXQpOwogCQlpZiAobWVtY21wKGRlc3QsIGZmY2hhcnMsIG10ZC0+b29ic2l6ZSkgJiYKIAkJICAgIG9uZW5hbmRfY2hlY2tfb3ZlcndyaXRlKGRlc3QsIHNyYywgbXRkLT5vb2JzaXplKSkKLQkJCXByaW50ayhLRVJOX0VSUiAiT09COiBvdmVyLXdyaXRlIGhhcHBlbmQgYXQgMHglMDh4XG4iLAorCQkJcHJpbnRrKEtFUk5fRVJSICJPT0I6IG92ZXItd3JpdGUgaGFwcGVuZWQgYXQgMHglMDh4XG4iLAogCQkJICAgICAgIG9mZnNldCk7CiAJCW1lbWNweShkZXN0LCBzcmMsIG10ZC0+b29ic2l6ZSk7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc21fZnRsLmMgYi9kcml2ZXJzL210ZC9zbV9mdGwuYwppbmRleCAyYjBkYWFlLi5lZDNkNmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9zbV9mdGwuYworKysgYi9kcml2ZXJzL210ZC9zbV9mdGwuYwpAQCAtNTQwLDcgKzU0MCw3IEBACiAJCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQkvKiBJZiB0aGUgYmxvY2sgaXMgc2xpY2VkIChwYXJ0aWFseSBlcmFzZWQgdXN1YWxseSkgZXJhc2UgaXQgKi8KKwkvKiBJZiB0aGUgYmxvY2sgaXMgc2xpY2VkIChwYXJ0aWFsbHkgZXJhc2VkIHVzdWFsbHkpIGVyYXNlIGl0ICovCiAJaWYgKGkgPT0gMikgewogCQlzbV9lcmFzZV9ibG9jayhmdGwsIHpvbmUsIGJsb2NrLCAxKTsKIAkJcmV0dXJuIDE7CkBAIC04NzgsNyArODc4LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogR2V0IGFuZCBhdXRvbWF0aWNseSBpbml0aWFsaXplIGFuIEZUTCBtYXBwaW5nIGZvciBvbmUgem9uZSAqLworLyogR2V0IGFuZCBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemUgYW4gRlRMIG1hcHBpbmcgZm9yIG9uZSB6b25lICovCiBzdHJ1Y3QgZnRsX3pvbmUgKnNtX2dldF96b25lKHN0cnVjdCBzbV9mdGwgKmZ0bCwgaW50IHpvbmVfbnVtKQogewogCXN0cnVjdCBmdGxfem9uZSAqem9uZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3ViaS9LY29uZmlnIGIvZHJpdmVycy9tdGQvdWJpL0tjb25maWcKaW5kZXggNmFiZWI0Zi4uNGRjYzc1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvdWJpL0tjb25maWcKKysrIGIvZHJpdmVycy9tdGQvdWJpL0tjb25maWcKQEAgLTU2LDcgKzU2LDcgQEAKIAlib29sICJVQkkgZGVidWdnaW5nIgogCWRlcGVuZHMgb24gU1lTRlMKIAlzZWxlY3QgREVCVUdfRlMKLQlzZWxlY3QgS0FMTFNZTVNfQUxMIGlmIEtBTExTWU1TICYmIERFQlVHX0tFUk5FTAorCXNlbGVjdCBLQUxMU1lNUwogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgVUJJIGRlYnVnZ2luZy4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2lvLmMgYi9kcml2ZXJzL210ZC91YmkvaW8uYwppbmRleCBlZWRlZGY5Li5lMzQ3Y2M0IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91YmkvaW8uYworKysgYi9kcml2ZXJzL210ZC91YmkvaW8uYwpAQCAtMzQ0LDYgKzM0NCwxMiBAQAogCXdhaXRfcXVldWVfaGVhZF90IHdxOwogCiAJZGJnX2lvKCJlcmFzZSBQRUIgJWQiLCBwbnVtKTsKKwl1YmlfYXNzZXJ0KHBudW0gPj0gMCAmJiBwbnVtIDwgdWJpLT5wZWJfY291bnQpOworCisJaWYgKHViaS0+cm9fbW9kZSkgeworCQl1YmlfZXJyKCJyZWFkLW9ubHkgbW9kZSIpOworCQlyZXR1cm4gLUVST0ZTOworCX0KIAogcmV0cnk6CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmd3EpOwpAQCAtMzkwLDcgKzM5Niw3IEBACiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWlmICh1YmlfZGJnX2lzX2VyYXNlX2ZhaWx1cmUoKSAmJiAhZXJyKSB7CisJaWYgKHViaV9kYmdfaXNfZXJhc2VfZmFpbHVyZSgpKSB7CiAJCWRiZ19lcnIoImNhbm5vdCBlcmFzZSBQRUIgJWQgKGVtdWxhdGVkKSIsIHBudW0pOwogCQlyZXR1cm4gLUVJTzsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC91Ymkvc2Nhbi5jIGIvZHJpdmVycy9tdGQvdWJpL3NjYW4uYwppbmRleCAxMWViOGVmLi5kMmQxMmFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91Ymkvc2Nhbi5jCisrKyBiL2RyaXZlcnMvbXRkL3ViaS9zY2FuLmMKQEAgLTk2OCw3ICs5NjgsNyBAQAogCQkJICogY29udGFpbnMgZ2FyYmFnZSBiZWNhdXNlIG9mIGEgcG93ZXIgY3V0IGR1cmluZyBlcmFzZQogCQkJICogb3BlcmF0aW9uLiBTbyB3ZSBqdXN0IHNjaGVkdWxlIHRoaXMgUEVCIGZvciBlcmFzdXJlLgogCQkJICoKLQkJCSAqIEJlc2lkZXMsIGluIGNhc2Ugb2YgTk9SIGZsYXNoLCB3ZSBkZWxpYmVyYXRseQorCQkJICogQmVzaWRlcywgaW4gY2FzZSBvZiBOT1IgZmxhc2gsIHdlIGRlbGliZXJhdGVseQogCQkJICogY29ycnVwdCBib3RoIGhlYWRlcnMgYmVjYXVzZSBOT1IgZmxhc2ggZXJhc3VyZSBpcwogCQkJICogc2xvdyBhbmQgY2FuIHN0YXJ0IGZyb20gdGhlIGVuZC4KIAkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL3ZtdC5jIGIvZHJpdmVycy9tdGQvdWJpL3ZtdC5jCmluZGV4IGI3OWUwZGUuLjM2NmViNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS92bXQuYworKysgYi9kcml2ZXJzL210ZC91Ymkvdm10LmMKQEAgLTc5MCwxMSArNzkwLDYgQEAKIAkJZ290byBmYWlsOwogCX0KIAotCWlmICghdm9sLT5uYW1lKSB7Ci0JCXViaV9lcnIoIk5VTEwgdm9sdW1lIG5hbWUiKTsKLQkJZ290byBmYWlsOwotCX0KLQogCW4gPSBzdHJubGVuKHZvbC0+bmFtZSwgdm9sLT5uYW1lX2xlbiArIDEpOwogCWlmIChuICE9IHZvbC0+bmFtZV9sZW4pIHsKIAkJdWJpX2VycigiYmFkIG5hbWVfbGVuICVsbGQiLCBuKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzNjNTAxLmMgYi9kcml2ZXJzL25ldC8zYzUwMS5jCmluZGV4IDllMWMwM2UuLjU0MjBmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTAxLmMKKysrIGIvZHJpdmVycy9uZXQvM2M1MDEuYwpAQCAtMzk5LDcgKzM5OSw3IEBACiAgKiBhcyB3ZSBtYXkgc3RpbGwgYmUgYXR0ZW1wdGluZyB0byByZXRyaWV2ZSB0aGUgbGFzdCBSWCBwYWNrZXQgYnVmZmVyLgogICoKICAqIFdoZW4gYSB0cmFuc21pdCB0aW1lcyBvdXQgd2UgZHVtcCB0aGUgY2FyZCBpbnRvIGNvbnRyb2wgbW9kZSBhbmQganVzdAotICogc3RhcnQgYWdhaW4uIEl0IGhhcHBlbnMgZW5vdWdoIHRoYXQgaXQgaXNudCB3b3J0aCBsb2dnaW5nLgorICogc3RhcnQgYWdhaW4uIEl0IGhhcHBlbnMgZW5vdWdoIHRoYXQgaXQgaXNuJ3Qgd29ydGggbG9nZ2luZy4KICAqCiAgKiBXZSBhdm9pZCBob2xkaW5nIHRoZSBzcGluIGxvY2tzIHdoZW4gZG9pbmcgdGhlIHBhY2tldCBsb2FkIHRvIHRoZSBib2FyZC4KICAqIFRoZSBkZXZpY2UgaXMgdmVyeSBzbG93LCBhbmQgaXRzIERNQSBtb2RlIGlzIGV2ZW4gc2xvd2VyLiBJZiB3ZSBoZWxkIHRoZQpAQCAtNDk5LDcgKzQ5OSw3IEBACiAgKgogICogSGFuZGxlIHRoZSBldGhlciBpbnRlcmZhY2UgaW50ZXJydXB0cy4gVGhlIDNjNTAxIG5lZWRzIGEgbG90IG1vcmUKICAqIGhhbmQgaG9sZGluZyB0aGFuIG1vc3QgY2FyZHMuIEluIHBhcnRpY3VsYXIgd2UgZ2V0IGEgdHJhbnNtaXQgaW50ZXJydXB0Ci0gKiB3aXRoIGEgY29sbGlzaW9uIGVycm9yIGJlY2F1c2UgdGhlIGJvYXJkIGZpcm13YXJlIGlzbnQgY2FwYWJsZSBvZiByZXdpbmRpbmcKKyAqIHdpdGggYSBjb2xsaXNpb24gZXJyb3IgYmVjYXVzZSB0aGUgYm9hcmQgZmlybXdhcmUgaXNuJ3QgY2FwYWJsZSBvZiByZXdpbmRpbmcKICAqIGl0cyBvd24gdHJhbnNtaXQgYnVmZmVyIHBvaW50ZXJzLiBJdCBjYW4gaG93ZXZlciBjb3VudCB0byAxNiBmb3IgdXMuCiAgKgogICogT24gdGhlIHJlY2VpdmUgc2lkZSB0aGUgY2FyZCBpcyBhbHNvIHZlcnkgZHVtYi4gSXQgaGFzIG5vIGJ1ZmZlcmluZyB0bwpAQCAtNzMyLDcgKzczMiw3IEBACiAgKiBlbF9yZXNldDogUmVzZXQgYSAzYzUwMSBjYXJkCiAgKiBAZGV2OiBUaGUgM2M1MDEgY2FyZCBhYm91dCB0byBnZXQgemFwcGVkCiAgKgotICogRXZlbiByZXNldHRpbmcgYSAzYzUwMSBpc250IHNpbXBsZS4gV2hlbiB5b3UgYWN0aXZhdGUgcmVzZXQgaXQgbG9zZXMgYWxsCisgKiBFdmVuIHJlc2V0dGluZyBhIDNjNTAxIGlzbid0IHNpbXBsZS4gV2hlbiB5b3UgYWN0aXZhdGUgcmVzZXQgaXQgbG9zZXMgYWxsCiAgKiBpdHMgY29uZmlndXJhdGlvbi4gWW91IG11c3QgaG9sZCB0aGUgbG9jayB3aGVuIGRvaW5nIHRoaXMuIFRoZSBmdW5jdGlvbgogICogY2Fubm90IHRha2UgdGhlIGxvY2sgaXRzZWxmIGFzIGl0IGlzIGNhbGxhYmxlIGZyb20gdGhlIGlycSBoYW5kbGVyLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC8zYzUyMy5jIGIvZHJpdmVycy9uZXQvM2M1MjMuYwppbmRleCBkZTU3OWQwLi5iYzBkMWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC8zYzUyMy5jCisrKyBiL2RyaXZlcnMvbmV0LzNjNTIzLmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgIHRoaXMgZm9yIHRoZSA2NEsgdmVyc2lvbiB3b3VsZCByZXF1aXJlIGEgbG90IG9mIGhlaW5vdXMgYmFuawogICAgc3dpdGNoaW5nLCB3aGljaCBJJ20gc3VyZSBub3QgaW50ZXJlc3RlZCBpbiBkb2luZy4gIElmIHlvdSB0cnkgdG8KICAgIGltcGxlbWVudCBhIGJhbmsgc3dpdGNoaW5nIHZlcnNpb24sIHlvdSdsbCBiYXNpY2FsbHkgaGF2ZSB0byByZW1lbWJlcgotICAgd2hhdCBiYW5rIGlzIGVuYWJsZWQgYW5kIGRvIGEgc3dpdGNoIGV2ZXJ5dGltZSB5b3UgYWNjZXNzIGEgbWVtb3J5CisgICB3aGF0IGJhbmsgaXMgZW5hYmxlZCBhbmQgZG8gYSBzd2l0Y2ggZXZlcnkgdGltZSB5b3UgYWNjZXNzIGEgbWVtb3J5CiAgICBsb2NhdGlvbiB0aGF0J3Mgbm90IGN1cnJlbnQuICBZb3UnbGwgYWxzbyBoYXZlIHRvIHJlbWFwIHBvaW50ZXJzIG9uCiAgICB0aGUgZHJpdmVyIHNpZGUsIGJlY2F1c2UgaXQgb25seSBrbm93cyBhYm91dCAxNksgb2YgdGhlIG1lbW9yeS4KICAgIEFueW9uZSBkZXNwZXJhdGUgb3IgbWFzb2NoaXN0aWMgZW5vdWdoIHRvIHRyeT8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0LzNjNTI3LmMgYi9kcml2ZXJzL25ldC8zYzUyNy5jCmluZGV4IDhjMDk0YmEuLmQ5ZDA1NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTI3LmMKKysrIGIvZHJpdmVycy9uZXQvM2M1MjcuYwpAQCAtNTEsNyArNTEsNyBAQAogICoJY2lyY3VsYXIgYnVmZmVyIHF1ZXVlcy4KICAqCiAgKglUaGUgbWFpbGJveGVzIGNhbiBiZSB1c2VkIGZvciBjb250cm9sbGluZyBob3cgdGhlIGNhcmQgdHJhdmVyc2VzCi0gKglpdHMgYnVmZmVyIHJpbmdzLCBidXQgYXJlIHVzZWQgb25seSBmb3IgaW5pdGFsIHNldHVwIGluIHRoaXMKKyAqCWl0cyBidWZmZXIgcmluZ3MsIGJ1dCBhcmUgdXNlZCBvbmx5IGZvciBpbml0aWFsIHNldHVwIGluIHRoaXMKICAqCWltcGxlbWVudGF0aW9uLiAgVGhlIGV4ZWMgbWFpbGJveCBhbGxvd3MgYSB2YXJpZXR5IG9mIGNvbW1hbmRzIHRvCiAgKgliZSBleGVjdXRlZC4gRWFjaCBjb21tYW5kIG11c3QgY29tcGxldGUgYmVmb3JlIHRoZSBuZXh0IGlzCiAgKglleGVjdXRlZC4gUHJpbWFyaWx5IHdlIHVzZSB0aGUgZXhlYyBtYWlsYm94IGZvciBjb250cm9sbGluZyB0aGUKQEAgLTgxMyw3ICs4MTMsNyBAQAogICoKICAqCVRoaXMgc2V0cyB1cCB0aGUgaG9zdCB0cmFuc21pdCBkYXRhLXN0cnVjdHVyZXMuCiAgKgotICoJRmlyc3QsIHdlIG9idGFpbiBmcm9tIHRoZSBjYXJkIGl0J3MgY3VycmVudCBwb3N0aW9uIGluIHRoZSB0eAorICoJRmlyc3QsIHdlIG9idGFpbiBmcm9tIHRoZSBjYXJkIGl0J3MgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgdHgKICAqCXJpbmcsIHNvIHRoYXQgd2Ugd2lsbCBrbm93IHdoZXJlIHRvIGJlZ2luIHRyYW5zbWl0dGluZwogICoJcGFja2V0cy4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC8zYzU5eC5jIGIvZHJpdmVycy9uZXQvM2M1OXguYwppbmRleCAwYTkyNDM2Zi4uOGNjMjI1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvM2M1OXguYworKysgYi9kcml2ZXJzL25ldC8zYzU5eC5jCkBAIC05ODQsNyArOTg0LDcgQEAKIAkJICogYW55IGRldmljZSBoYXZlIGJlZW4gZm91bmQgd2hlbiB3ZSBleGl0IGZyb20KIAkJICogZWlzYV9kcml2ZXJfcmVnaXN0ZXIgKHRoZSBidXMgcm9vdCBkcml2ZXIgbWF5IG5vdCBiZQogCQkgKiBpbml0aWFsaXplZCB5ZXQpLiBTbyB3ZSBibGluZGx5IGFzc3VtZSBzb21ldGhpbmcgd2FzCi0JCSAqIGZvdW5kLCBhbmQgbGV0IHRoZSBzeXNmcyBtYWdpYyBoYXBwZW5kLi4uCisJCSAqIGZvdW5kLCBhbmQgbGV0IHRoZSBzeXNmcyBtYWdpYyBoYXBwZW5lZC4uLgogCQkgKi8KIAkJZWlzYV9mb3VuZCA9IDE7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYWNlbmljLmMgYi9kcml2ZXJzL25ldC9hY2VuaWMuYwppbmRleCA0MWQ5OTExLi5lZTY0OGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hY2VuaWMuYworKysgYi9kcml2ZXJzL25ldC9hY2VuaWMuYwpAQCAtMTU4NCw3ICsxNTg0LDcgQEAKIAkvKgogCSAqIFdlIGhhdmVuJ3QgcmVjZWl2ZWQgYSBzdGF0cyB1cGRhdGUgZXZlbnQgZm9yIG1vcmUgdGhhbiAyLjUKIAkgKiBzZWNvbmRzIGFuZCB0aGVyZSBpcyBkYXRhIGluIHRoZSB0cmFuc21pdCBxdWV1ZSwgdGh1cyB3ZQotCSAqIGFzdW1lIHRoZSBjYXJkIGlzIHN0dWNrLgorCSAqIGFzc3VtZSB0aGUgY2FyZCBpcyBzdHVjay4KIAkgKi8KIAlpZiAoKmFwLT50eF9jc20gIT0gYXAtPnR4X3JldF9jc20pIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IFRyYW5zbWl0dGVyIGlzIHN0dWNrLCAlMDh4XG4iLApAQCAtMjU2NCw3ICsyNTY0LDcgQEAKIAogCQkvKgogCQkgKiBBIFRYLWRlc2NyaXB0b3IgcHJvZHVjZXIgKGFuIElSUSkgbWlnaHQgaGF2ZSBnb3R0ZW4KLQkJICogaW5iZXR3ZWVuLCBtYWtpbmcgdGhlIHJpbmcgZnJlZSBhZ2Fpbi4gU2luY2UgeG1pdCBpcworCQkgKiBiZXR3ZWVuLCBtYWtpbmcgdGhlIHJpbmcgZnJlZSBhZ2Fpbi4gU2luY2UgeG1pdCBpcwogCQkgKiBzZXJpYWxpemVkLCB0aGlzIGlzIHRoZSBvbmx5IHNpdHVhdGlvbiB3ZSBoYXZlIHRvCiAJCSAqIHJlLXRlc3QuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYW1kODExMWUuYyBiL2RyaXZlcnMvbmV0L2FtZDgxMTFlLmMKaW5kZXggMmNhODgwYi4uODg0OTVjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYW1kODExMWUuYworKysgYi9kcml2ZXJzL25ldC9hbWQ4MTExZS5jCkBAIC0xMzk4LDcgKzEzOTgsNyBAQAogCQltY19maWx0ZXJbMV0gPSBtY19maWx0ZXJbMF0gPSAwOwogCQlscC0+b3B0aW9ucyAmPSB+T1BUSU9OX01VTFRJQ0FTVF9FTkFCTEU7CiAJCWFtZDgxMTFlX3dyaXRlcSgqKHU2NCopbWNfZmlsdGVyLGxwLT5tbWlvICsgTEFEUkYpOwotCQkvKiBkaXNhYmxlIHByb21pc2NvdXMgbW9kZSAqLworCQkvKiBkaXNhYmxlIHByb21pc2N1b3VzIG1vZGUgKi8KIAkJd3JpdGVsKFBST00sIGxwLT5tbWlvICsgQ01EMik7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdDE3MDAuYyBiL2RyaXZlcnMvbmV0L2F0MTcwMC5jCmluZGV4IGY0NzQ0ZmMuLjY1YTc4ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2F0MTcwMC5jCisrKyBiL2RyaXZlcnMvbmV0L2F0MTcwMC5jCkBAIC0xMzMsNyArMTMzLDcgQEAKIC8qIFJ1bi10aW1lIHJlZ2lzdGVyIGJhbmsgMiBkZWZpbml0aW9ucy4gKi8KICNkZWZpbmUgREFUQVBPUlQJCTgJCS8qIFdvcmQtd2lkZSBETUEgb3IgcHJvZ3JhbW1lZC1JL08gZGF0YXBvcnQuICovCiAjZGVmaW5lIFRYX1NUQVJUCQkxMAotI2RlZmluZSBDT0wxNkNOVEwJCTExCQkvKiBDb250cm9sbCBSZWcgZm9yIDE2IGNvbGxpc2lvbnMgKi8KKyNkZWZpbmUgQ09MMTZDTlRMCQkxMQkJLyogQ29udHJvbCBSZWcgZm9yIDE2IGNvbGxpc2lvbnMgKi8KICNkZWZpbmUgTU9ERTEzCQkJMTMKICNkZWZpbmUgUlhfQ1RSTAkJCTE0CiAvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVycyBvbmx5IG9uIHRoZSAnODY1QS9CIGNoaXBzLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYXRsMWUvYXRsMWVfbWFpbi5jIGIvZHJpdmVycy9uZXQvYXRsMWUvYXRsMWVfbWFpbi5jCmluZGV4IDFmZjAwMWEuLmIwYTcxZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2F0bDFlL2F0bDFlX21haW4uYworKysgYi9kcml2ZXJzL25ldC9hdGwxZS9hdGwxZV9tYWluLmMKQEAgLTI1MDksNyArMjUwOSw3IEBACiAJLmlkX3RhYmxlID0gYXRsMWVfcGNpX3RibCwKIAkucHJvYmUgICAgPSBhdGwxZV9wcm9iZSwKIAkucmVtb3ZlICAgPSBfX2RldmV4aXRfcChhdGwxZV9yZW1vdmUpLAotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KICNpZmRlZiBDT05GSUdfUE0KIAkuc3VzcGVuZCAgPSBhdGwxZV9zdXNwZW5kLAogCS5yZXN1bWUgICA9IGF0bDFlX3Jlc3VtZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2F0bHgvYXRsMi5jIGIvZHJpdmVycy9uZXQvYXRseC9hdGwyLmMKaW5kZXggOTM3ZWYxYS4uZTNjYmY0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYXRseC9hdGwyLmMKKysrIGIvZHJpdmVycy9uZXQvYXRseC9hdGwyLmMKQEAgLTE3MDEsNyArMTcwMSw3IEBACiAJLmlkX3RhYmxlID0gYXRsMl9wY2lfdGJsLAogCS5wcm9iZSAgICA9IGF0bDJfcHJvYmUsCiAJLnJlbW92ZSAgID0gX19kZXZleGl0X3AoYXRsMl9yZW1vdmUpLAotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KIAkuc3VzcGVuZCAgPSBhdGwyX3N1c3BlbmQsCiAjaWZkZWYgQ09ORklHX1BNCiAJLnJlc3VtZSAgID0gYXRsMl9yZXN1bWUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYyBiL2RyaXZlcnMvbmV0L2JjbTYzeHhfZW5ldC5jCmluZGV4IGU5NGE5NjZhLi5jNDgxMDRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYworKysgYi9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYwpAQCAtNTk3LDcgKzU5Nyw3IEBACiB9CiAKIC8qCi0gKiBDaGFuZ2UgcnggbW9kZSAocHJvbWlzY291cy9hbGxtdWx0aSkgYW5kIHVwZGF0ZSBtdWx0aWNhc3QgbGlzdAorICogQ2hhbmdlIHJ4IG1vZGUgKHByb21pc2N1b3VzL2FsbG11bHRpKSBhbmQgdXBkYXRlIG11bHRpY2FzdCBsaXN0CiAgKi8KIHN0YXRpYyB2b2lkIGJjbV9lbmV0X3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYmVuZXQvYmUuaCBiL2RyaXZlcnMvbmV0L2JlbmV0L2JlLmgKaW5kZXggZjgwM2M1OC4uNjY4MjNlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYmVuZXQvYmUuaAorKysgYi9kcml2ZXJzL25ldC9iZW5ldC9iZS5oCkBAIC0xNTQsNyArMTU0LDcgQEAKIAl1MTYgbWluX2VxZDsJCS8qIGluIHVzZWNzICovCiAJdTE2IG1heF9lcWQ7CQkvKiBpbiB1c2VjcyAqLwogCXUxNiBjdXJfZXFkOwkJLyogaW4gdXNlY3MgKi8KLQl1OCAgbXNpeF92ZWNfaWR4OworCXU4ICBlcV9pZHg7CiAKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIH07CkBAIC0yOTEsNyArMjkxLDcgQEAKIAl1MzIgbnVtX3J4X3FzOwogCXUzMiBiaWdfcGFnZV9zaXplOwkvKiBDb21wb3VuZGVkIHBhZ2Ugc2l6ZSBzaGFyZWQgYnkgcnggd3JicyAqLwogCi0JdTggbXNpeF92ZWNfbmV4dF9pZHg7CisJdTggZXFfbmV4dF9pZHg7CiAJc3RydWN0IGJlX2Rydl9zdGF0cyBkcnZfc3RhdHM7CiAKIAlzdHJ1Y3Qgdmxhbl9ncm91cCAqdmxhbl9ncnA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9iZW5ldC9iZV9jbWRzLmMgYi9kcml2ZXJzL25ldC9iZW5ldC9iZV9jbWRzLmMKaW5kZXggNWE0YTg3ZTcuLjFlMmQ4MjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JlbmV0L2JlX2NtZHMuYworKysgYi9kcml2ZXJzL25ldC9iZW5ldC9iZV9jbWRzLmMKQEAgLTEzMzEsNyArMTMzMSw3IEBACiAKIC8qCiAgKiBVc2VzIE1DQyBmb3IgdGhpcyBjb21tYW5kIGFzIGl0IG1heSBiZSBjYWxsZWQgaW4gQkggY29udGV4dAotICogKG1jID09IE5VTEwpID0+IG11bHRpY2FzdCBwcm9taXNjb3VzCisgKiAobWMgPT0gTlVMTCkgPT4gbXVsdGljYXN0IHByb21pc2N1b3VzCiAgKi8KIGludCBiZV9jbWRfbXVsdGljYXN0X3NldChzdHJ1Y3QgYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIGlmX2lkLAogCQlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgYmVfZG1hX21lbSAqbWVtKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYmVuZXQvYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvYmVuZXQvYmVfbWFpbi5jCmluZGV4IGE3MTE2M2YuLjdjYjVhMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JlbmV0L2JlX21haW4uYworKysgYi9kcml2ZXJzL25ldC9iZW5ldC9iZV9tYWluLmMKQEAgLTcwOCw3ICs3MDgsNyBAQAogCQlnb3RvIGRvbmU7CiAJfQogCi0JLyogQkUgd2FzIHByZXZpb3VzbHkgaW4gcHJvbWlzY291cyBtb2RlOyBkaXNhYmxlIGl0ICovCisJLyogQkUgd2FzIHByZXZpb3VzbHkgaW4gcHJvbWlzY3VvdXMgbW9kZTsgZGlzYWJsZSBpdCAqLwogCWlmIChhZGFwdGVyLT5wcm9taXNjdW91cykgewogCQlhZGFwdGVyLT5wcm9taXNjdW91cyA9IGZhbHNlOwogCQliZV9jbWRfcHJvbWlzY3VvdXNfY29uZmlnKGFkYXB0ZXIsIGFkYXB0ZXItPnBvcnRfbnVtLCAwKTsKQEAgLTE0OTcsNyArMTQ5Nyw3IEBACiAJaWYgKGJlX2NtZF9lcV9jcmVhdGUoYWRhcHRlciwgZXEsIGFkYXB0ZXItPnR4X2VxLmN1cl9lcWQpKQogCQlnb3RvIHR4X2VxX2ZyZWU7CiAKLQlhZGFwdGVyLT50eF9lcS5tc2l4X3ZlY19pZHggPSBhZGFwdGVyLT5tc2l4X3ZlY19uZXh0X2lkeCsrOworCWFkYXB0ZXItPnR4X2VxLmVxX2lkeCA9IGFkYXB0ZXItPmVxX25leHRfaWR4Kys7CiAKIAogCS8qIEFsbG9jIFRYIGV0aCBjb21wbCBxdWV1ZSAqLwpAQCAtMTU5MCw3ICsxNTkwLDcgQEAKIAkJaWYgKHJjKQogCQkJZ290byBlcnI7CiAKLQkJcnhvLT5yeF9lcS5tc2l4X3ZlY19pZHggPSBhZGFwdGVyLT5tc2l4X3ZlY19uZXh0X2lkeCsrOworCQlyeG8tPnJ4X2VxLmVxX2lkeCA9IGFkYXB0ZXItPmVxX25leHRfaWR4Kys7CiAKIAkJLyogQ1EgKi8KIAkJY3EgPSAmcnhvLT5jcTsKQEAgLTE2NjYsMTEgKzE2NjYsMTEgQEAKIAkJaWYgKCFpc3IpCiAJCQlyZXR1cm4gSVJRX05PTkU7CiAKLQkJaWYgKCgxIDw8IGFkYXB0ZXItPnR4X2VxLm1zaXhfdmVjX2lkeCAmIGlzcikpCisJCWlmICgoMSA8PCBhZGFwdGVyLT50eF9lcS5lcV9pZHggJiBpc3IpKQogCQkJZXZlbnRfaGFuZGxlKGFkYXB0ZXIsICZhZGFwdGVyLT50eF9lcSk7CiAKIAkJZm9yX2FsbF9yeF9xdWV1ZXMoYWRhcHRlciwgcnhvLCBpKSB7Ci0JCQlpZiAoKDEgPDwgcnhvLT5yeF9lcS5tc2l4X3ZlY19pZHggJiBpc3IpKQorCQkJaWYgKCgxIDw8IHJ4by0+cnhfZXEuZXFfaWR4ICYgaXNyKSkKIAkJCQlldmVudF9oYW5kbGUoYWRhcHRlciwgJnJ4by0+cnhfZXEpOwogCQl9CiAJfQpAQCAtMTk1MSw3ICsxOTUxLDcgQEAKIHN0YXRpYyBpbmxpbmUgaW50IGJlX21zaXhfdmVjX2dldChzdHJ1Y3QgYmVfYWRhcHRlciAqYWRhcHRlciwKIAkJCQkJc3RydWN0IGJlX2VxX29iaiAqZXFfb2JqKQogewotCXJldHVybiBhZGFwdGVyLT5tc2l4X2VudHJpZXNbZXFfb2JqLT5tc2l4X3ZlY19pZHhdLnZlY3RvcjsKKwlyZXR1cm4gYWRhcHRlci0+bXNpeF9lbnRyaWVzW2VxX29iai0+ZXFfaWR4XS52ZWN0b3I7CiB9CiAKIHN0YXRpYyBpbnQgYmVfcmVxdWVzdF9pcnEoc3RydWN0IGJlX2FkYXB0ZXIgKmFkYXB0ZXIsCkBAIC0yMzQ1LDYgKzIzNDUsNyBAQAogCWJlX21jY19xdWV1ZXNfZGVzdHJveShhZGFwdGVyKTsKIAliZV9yeF9xdWV1ZXNfZGVzdHJveShhZGFwdGVyKTsKIAliZV90eF9xdWV1ZXNfZGVzdHJveShhZGFwdGVyKTsKKwlhZGFwdGVyLT5lcV9uZXh0X2lkeCA9IDA7CiAKIAlpZiAoYmVfcGh5c2ZuKGFkYXB0ZXIpICYmIGFkYXB0ZXItPnNyaW92X2VuYWJsZWQpCiAJCWZvciAodmYgPSAwOyB2ZiA8IG51bV92ZnM7IHZmKyspCkBAIC0zMTQxLDEyICszMTQyLDE0IEBACiBzdGF0aWMgdm9pZCBiZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKIAlzdHJ1Y3QgYmVfYWRhcHRlciAqYWRhcHRlciA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gIGFkYXB0ZXItPm5ldGRldjsKIAotCWlmIChuZXRpZl9ydW5uaW5nKG5ldGRldikpCisJaWYgKCFhZGFwdGVyKQorCQlyZXR1cm47CisKKwlpZiAobmV0aWZfcnVubmluZyhhZGFwdGVyLT5uZXRkZXYpKQogCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFkYXB0ZXItPndvcmspOwogCi0JbmV0aWZfZGV2aWNlX2RldGFjaChuZXRkZXYpOworCW5ldGlmX2RldmljZV9kZXRhY2goYWRhcHRlci0+bmV0ZGV2KTsKIAogCWJlX2NtZF9yZXNldF9mdW5jdGlvbihhZGFwdGVyKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm5hL2JmYV9pb2MuYyBiL2RyaXZlcnMvbmV0L2JuYS9iZmFfaW9jLmMKaW5kZXggMzQ5MzNjYi4uZTNkZTBiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm5hL2JmYV9pb2MuYworKysgYi9kcml2ZXJzL25ldC9ibmEvYmZhX2lvYy5jCkBAIC0yMjE5LDEzICsyMjE5LDkgQEAKIHN0YXRpYyB2b2lkCiBiZmFfaW9jX3JlY292ZXIoc3RydWN0IGJmYV9pb2MgKmlvYykKIHsKLQl1MTYgYmRmOwotCi0JYmRmID0gKGlvYy0+cGNpZGV2LnBjaV9zbG90IDw8IDggfCBpb2MtPnBjaWRldi5wY2lfZnVuYyA8PCAzIHwKLQkJCQkJaW9jLT5wY2lkZXYuZGV2aWNlX2lkKTsKLQotCXByX2NyaXQoIkZpcm13YXJlIGhlYXJ0YmVhdCBmYWlsdXJlIGF0ICVkIiwgYmRmKTsKLQlCVUdfT04oMSk7CisJcHJfY3JpdCgiSGVhcnQgQmVhdCBvZiBJT0MgaGFzIGZhaWxlZFxuIik7CisJYmZhX2lvY19zdGF0cyhpb2MsIGlvY19oYmZhaWxzKTsKKwliZmFfZnNtX3NlbmRfZXZlbnQoaW9jLCBJT0NfRV9IQkZBSUwpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm5hL2JuYV9ody5oIGIvZHJpdmVycy9uZXQvYm5hL2JuYV9ody5oCmluZGV4IDgwNmIyMjQuLjZjYjg5NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JuYS9ibmFfaHcuaAorKysgYi9kcml2ZXJzL25ldC9ibmEvYm5hX2h3LmgKQEAgLTg5Nyw3ICs4OTcsNyBAQAogICogQ2F0YXB1bHQgUlNTIFRhYmxlIEJhc2UgT2Zmc2V0IEFkZHJlc3MKICAqCiAgKiBFeGlzdHMgaW4gUkFEIG1lbW9yeSBzcGFjZS4KLSAqIEVhY2ggZW50cnkgaXMgMzUyIGJpdHMsIGJ1dCBhbGxpZ25lZCBvbgorICogRWFjaCBlbnRyeSBpcyAzNTIgYml0cywgYnV0IGFsaWduZWQgb24KICAqIDY0IGJ5dGUgKDUxMiBiaXQpIGJvdW5kYXJ5LiBBY2Nlc3NlZAogICogNCBieXRlIHdvcmRzLCB0aGUgd2hvbGUgZW50cnkgY2FuIGJlCiAgKiBicm9rZW4gaW50byAxMSB3b3JkIGFjY2Vzc2VzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4LmgKaW5kZXggYjdmZjg3Yi4uZTBmY2E3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm54MngvYm54MnguaAorKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeC5oCkBAIC0xMjIwLDcgKzEyMjAsNyBAQAogCXN0cnVjdCBibngyeF9kY2J4X3BvcnRfcGFyYW1zCQlkY2J4X3BvcnRfcGFyYW1zOwogCWludAkJCQkJZGNiX3ZlcnNpb247CiAKLQkvKiBEQ0JYIE5lZ290YXRpb24gcmVzdWx0cyAqLworCS8qIERDQlggTmVnb3RpYXRpb24gcmVzdWx0cyAqLwogCXN0cnVjdCBkY2J4X2ZlYXR1cmVzCQkJZGNieF9sb2NhbF9mZWF0OwogCXUzMgkJCQkJZGNieF9lcnJvcjsKIAl1MzIJCQkJCXBlbmRpbmdfbWF4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfaHNpLmggYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaAppbmRleCBiZTUwM2NjLi5kYWMxYmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaAorKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaApAQCAtMzAxOSw3ICszMDE5LDcgQEAKIAogCiAvKgotICogY29tbW9uIGZsYWcgdG8gaW5kaWNhdGUgZXhpc3RhbmNlIG9mIFRQQS4KKyAqIGNvbW1vbiBmbGFnIHRvIGluZGljYXRlIGV4aXN0ZW5jZSBvZiBUUEEuCiAgKi8KIHN0cnVjdCB0c3Rvcm1fZXRoX3RwYV9leGlzdCB7CiAjaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9saW5rLmMgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9saW5rLmMKaW5kZXggZjJmMzY3ZC4uOTc0ZWYyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfbGluay5jCisrKyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2xpbmsuYwpAQCAtMjgyMyw3ICsyODIzLDcgQEAKIAkJCQkgICAgIHN0cnVjdCBsaW5rX3BhcmFtcyAqcGFyYW1zKQogewogCXUxNiBjbnQsIGN0cmw7Ci0JLyogV2FpdCBmb3Igc29mdCByZXNldCB0byBnZXQgY2xlYXJlZCB1cHRvIDEgc2VjICovCisJLyogV2FpdCBmb3Igc29mdCByZXNldCB0byBnZXQgY2xlYXJlZCB1cCB0byAxIHNlYyAqLwogCWZvciAoY250ID0gMDsgY250IDwgMTAwMDsgY250KyspIHsKIAkJYm54MnhfY2w0NV9yZWFkKGJwLCBwaHksCiAJCQkJTURJT19QTUFfREVWQUQsIE1ESU9fUE1BX1JFR19DVFJMLCAmY3RybCk7CkBAIC00MTQxLDcgKzQxNDEsNyBAQAogCQkJdmFsID0gKDE8PDUpOwogCQkJLyoKIAkJCSAqIE5vdGUgdGhhdCAyLjVHIHdvcmtzIG9ubHkgd2hlbiB1c2VkIHdpdGggMUcKLQkJCSAqIGFkdmVydGlzbWVudAorCQkJICogYWR2ZXJ0aXNlbWVudAogCQkJICovCiAJCX0gZWxzZQogCQkJdmFsID0gKDE8PDUpOwpAQCAtNDE1MSw3ICs0MTUxLDcgQEAKIAkJCVBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMTBHKQogCQkJdmFsIHw9ICgxPDw3KTsKIAotCQkvKiBOb3RlIHRoYXQgMi41RyB3b3JrcyBvbmx5IHdoZW4gdXNlZCB3aXRoIDFHIGFkdmVydGlzbWVudCAqLworCQkvKiBOb3RlIHRoYXQgMi41RyB3b3JrcyBvbmx5IHdoZW4gdXNlZCB3aXRoIDFHIGFkdmVydGlzZW1lbnQgKi8KIAkJaWYgKHBoeS0+c3BlZWRfY2FwX21hc2sgJgogCQkJKFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMUcgfAogCQkJIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMl81RykpCkBAIC01MjMyLDE0ICs1MjMyLDE0IEBACiAJCWJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwKIAkJCQkgTURJT19QTUFfREVWQUQsIE1ESU9fUE1BX1JFR19MQVNJX0NUUkwsIDEpOwogCX0gZWxzZSB7Ci0JCS8qIEZvcmNlIDFHYnBzIHVzaW5nIGF1dG9uZWcgd2l0aCAxRyBhZHZlcnRpc21lbnQgKi8KKwkJLyogRm9yY2UgMUdicHMgdXNpbmcgYXV0b25lZyB3aXRoIDFHIGFkdmVydGlzZW1lbnQgKi8KIAogCQkvKiBBbGxvdyBDTDM3IHRocm91Z2ggQ0w3MyAqLwogCQlEUChORVRJRl9NU0dfTElOSywgIlhHWFMgODcwNiBBdXRvTmVnXG4iKTsKIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LAogCQkJCSBNRElPX0FOX0RFVkFELCBNRElPX0FOX1JFR19DTDM3X0NMNzMsIDB4MDQwYyk7CiAKLQkJLyogRW5hYmxlIEZ1bGwtRHVwbGV4IGFkdmVydGlzbWVudCBvbiBDTDM3ICovCisJCS8qIEVuYWJsZSBGdWxsLUR1cGxleCBhZHZlcnRpc2VtZW50IG9uIENMMzcgKi8KIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LAogCQkJCSBNRElPX0FOX0RFVkFELCBNRElPX0FOX1JFR19DTDM3X0ZDX0xQLCAweDAwMjApOwogCQkvKiBFbmFibGUgQ0wzNyBBTiAqLwpAQCAtNjI2OSw3ICs2MjY5LDcgQEAKIAogCXN3aXRjaCAoYWN0dWFsX3BoeV9zZWxlY3Rpb24pIHsKIAljYXNlIFBPUlRfSFdfQ0ZHX1BIWV9TRUxFQ1RJT05fSEFSRFdBUkVfREVGQVVMVDoKLQkJLyogRG8gbm90aGluZy4gRXNzZW50aWFseSB0aGlzIGlzIGxpa2UgdGhlIHByaW9yaXR5IGNvcHBlciAqLworCQkvKiBEbyBub3RoaW5nLiBFc3NlbnRpYWxseSB0aGlzIGlzIGxpa2UgdGhlIHByaW9yaXR5IGNvcHBlciAqLwogCQlicmVhazsKIAljYXNlIFBPUlRfSFdfQ0ZHX1BIWV9TRUxFQ1RJT05fRklSU1RfUEhZX1BSSU9SSVRZOgogCQl2YWwgfD0gTURJT19DVExfUkVHXzg0ODIzX01FRElBX1BSSU9SSVRZX0NPUFBFUjsKQEAgLTc3NjUsNyArNzc2NSw3IEBACiAJUkVHX1dSKGJwLCBOSUdfUkVHX05JR19FTUFDMF9FTiArIHBvcnQqNCwgMCk7CiAKIAltc2xlZXAoMTApOwotCS8qIFRoZSBQSFkgcmVzZXQgaXMgY29udHJvbGVkIGJ5IEdQSU8gMQorCS8qIFRoZSBQSFkgcmVzZXQgaXMgY29udHJvbGxlZCBieSBHUElPIDEKIAkgKiBIb2xkIGl0IGFzIHZhcnMgbG93CiAJICovCiAJIC8qIGNsZWFyIGxpbmsgbGVkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9tYWluLmMKaW5kZXggMzJlNjRjYzguLmE5N2E0YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X21haW4uYworKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9tYWluLmMKQEAgLTM3MDIsNyArMzcwMiw3IEBACiAJaWYgKChod19jb25zICYgRVFfREVTQ19NQVhfUEFHRSkgPT0gRVFfREVTQ19NQVhfUEFHRSkKIAkJaHdfY29ucysrOwogCi0JLyogVGhpcyBmdW5jdGlvbiBtYXkgbmV2ZXIgcnVuIGluIHBhcnJhbGVsIHdpdGggaXRzZWxmIGZvciBhCisJLyogVGhpcyBmdW5jdGlvbiBtYXkgbmV2ZXIgcnVuIGluIHBhcmFsbGVsIHdpdGggaXRzZWxmIGZvciBhCiAJICogc3BlY2lmaWMgYnAsIHRodXMgdGhlcmUgaXMgbm8gbmVlZCBpbiAicGFpcmVkIiByZWFkIG1lbW9yeQogCSAqIGJhcnJpZXIgaGVyZS4KIAkgKi8KQEAgLTUwODksNyArNTA4OSw3IEBACiAJCS8qIFN0ZXAgMTogc2V0IHplcm9lcyB0byBhbGwgaWx0IHBhZ2UgZW50cmllcyB3aXRoIHZhbGlkIGJpdCBvbgogCQkgKiBTdGVwIDI6IHNldCB0aGUgdGltZXJzIGZpcnN0L2xhc3QgaWx0IGVudHJ5IHRvIHBvaW50CiAJCSAqIHRvIHRoZSBlbnRpcmUgcmFuZ2UgdG8gcHJldmVudCBJTFQgcmFuZ2UgZXJyb3IgZm9yIDNyZC80dGgKLQkJICogdm5pYwkodGhpcyBjb2RlIGFzc3VtZXMgZXhpc3RhbmNlIG9mIHRoZSB2bmljKQorCQkgKiB2bmljCSh0aGlzIGNvZGUgYXNzdW1lcyBleGlzdGVuY2Ugb2YgdGhlIHZuaWMpCiAJCSAqCiAJCSAqIGJvdGggc3RlcHMgcGVyZm9ybWVkIGJ5IGNhbGwgdG8gYm54MnhfaWx0X2NsaWVudF9pbml0X29wKCkKIAkJICogd2l0aCBkdW1teSBUTSBjbGllbnQKQEAgLTg2ODUsNyArODY4NSw3IEBACiAJCQkJRTFIX0ZVTkNfTUFYICogc2l6ZW9mKHN0cnVjdCBkcnZfZnVuY19tYik7CiAJCS8qCiAJCSAqIGdldCBtZiBjb25maWd1cmF0aW9uOgotCQkgKiAxLiBleGlzdGFuY2Ugb2YgTUYgY29uZmlndXJhdGlvbgorCQkgKiAxLiBleGlzdGVuY2Ugb2YgTUYgY29uZmlndXJhdGlvbgogCQkgKiAyLiBNQUMgYWRkcmVzcyBtdXN0IGJlIGxlZ2FsIChjaGVjayBvbmx5IHVwcGVyIGJ5dGVzKQogCQkgKiAgICBmb3IgIFN3aXRjaC1JbmRlcGVuZGVudCBtb2RlOwogCQkgKiAgICBPVkxBTiBtdXN0IGJlIGxlZ2FsIGZvciBTd2l0Y2gtRGVwZW5kZW50IG1vZGUKQEAgLTg3MjcsNyArODcyNyw3IEBACiAJCQlkZWZhdWx0OgogCQkJCS8qIFVua25vd24gY29uZmlndXJhdGlvbjogcmVzZXQgbWZfY29uZmlnICovCiAJCQkJYnAtPm1mX2NvbmZpZ1t2bl0gPSAwOwotCQkJCURQKE5FVElGX01TR19QUk9CRSwgIlVua293biBNRiBtb2RlIDB4JXhcbiIsCisJCQkJRFAoTkVUSUZfTVNHX1BST0JFLCAiVW5rbm93biBNRiBtb2RlIDB4JXhcbiIsCiAJCQkJICAgdmFsKTsKIAkJCX0KIAkJfQpAQCAtOTc3Nyw3ICs5Nzc3LDcgQEAKIAogI2VuZGlmCiAKLQkvKiBDb25maWd1cmUgaW50ZXJ1cHQgbW9kZTogdHJ5IHRvIGVuYWJsZSBNU0ktWC9NU0kgaWYKKwkvKiBDb25maWd1cmUgaW50ZXJydXB0IG1vZGU6IHRyeSB0byBlbmFibGUgTVNJLVgvTVNJIGlmCiAJICogbmVlZGVkLCBzZXQgYnAtPm51bV9xdWV1ZXMgYXBwcm9wcmlhdGVseS4KIAkgKi8KIAlibngyeF9zZXRfaW50X21vZGUoYnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaAppbmRleCAxYzg5ZjE5Li4xNTA5YTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaAorKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaApAQCAtMTc1LDkgKzE3NSw5IEBACiAgICB0aGUgaW5pdGlhbCBjcmVkaXQgdmFsdWU7IHJlYWQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY3JlZGl0CiAgICBjb3VudGVyLiBNdXN0IGJlIGluaXRpYWxpemVkIHRvIDEgYXQgc3RhcnQtdXAuICovCiAjZGVmaW5lIENDTV9SRUdfQ0ZDX0lOSVRfQ1JECQkJCQkgMHhkMDIwNAotLyogW1JXIDJdIEF1eGlsbGFyeSBjb3VudGVyIGZsYWcgUSBudW1iZXIgMS4gKi8KKy8qIFtSVyAyXSBBdXhpbGlhcnkgY291bnRlciBmbGFnIFEgbnVtYmVyIDEuICovCiAjZGVmaW5lIENDTV9SRUdfQ05UX0FVWDFfUQkJCQkJIDB4ZDAwYzgKLS8qIFtSVyAyXSBBdXhpbGxhcnkgY291bnRlciBmbGFnIFEgbnVtYmVyIDIuICovCisvKiBbUlcgMl0gQXV4aWxpYXJ5IGNvdW50ZXIgZmxhZyBRIG51bWJlciAyLiAqLwogI2RlZmluZSBDQ01fUkVHX0NOVF9BVVgyX1EJCQkJCSAweGQwMGNjCiAvKiBbUlcgMjhdIFRoZSBDTSBoZWFkZXIgdmFsdWUgZm9yIFFNIHJlcXVlc3QgKHByaW1hcnkpLiAqLwogI2RlZmluZSBDQ01fUkVHX0NRTV9DQ01fSERSX1AJCQkJCSAweGQwMDhjCkBAIC00NTcsMTMgKzQ1NywxMyBAQAogI2RlZmluZSBDU0RNX1JFR19BR0dfSU5UX01PREVfOSAJCQkJIDB4YzIxZGMKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNmY19yc3AgbGNpZCAqLwogI2RlZmluZSBDU0RNX1JFR19DRkNfUlNQX1NUQVJUX0FERFIJCQkJIDB4YzIwMDgKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMwICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzAgKi8KICNkZWZpbmUgQ1NETV9SRUdfQ01QX0NPVU5URVJfTUFYMAkJCQkgMHhjMjAxYwotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzEgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMSAqLwogI2RlZmluZSBDU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgxCQkJCSAweGMyMDIwCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMiAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMyICovCiAjZGVmaW5lIENTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDIJCQkJIDB4YzIwMjQKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMzICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzMgKi8KICNkZWZpbmUgQ1NETV9SRUdfQ01QX0NPVU5URVJfTUFYMwkJCQkgMHhjMjAyOAogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY29tcGxldGlvbgogICAgY291bnRlcnMuICovCkBAIC04NTEsNyArODUxLDcgQEAKICNkZWZpbmUgSUdVX1JFR19BVFROX01TR19BRERSX0wJCQkJIDB4MTMwMTIwCiAvKiBbUiA0XSBEZWJ1ZzogWzNdIC0gYXR0ZW50aW9uIHdyaXRlIGRvbmUgbWVzc2FnZSBpcyBwZW5kaW5nICgwLW5vIHBlbmRpbmc7CiAgKiAxLXBlbmRpbmcpLiBbMjowXSA9IFBGSUQuIFBlbmRpbmcgbWVhbnMgYXR0ZW50aW9uIG1lc3NhZ2Ugd2FzIHNlbnQ7IGJ1dAotICogd3JpdGUgZG9uZSBkaWRudCByZWNlaXZlLiAqLworICogd3JpdGUgZG9uZSBkaWRuJ3QgcmVjZWl2ZS4gKi8KICNkZWZpbmUgSUdVX1JFR19BVFROX1dSSVRFX0RPTkVfUEVORElORwkJCSAweDEzMDAzMAogI2RlZmluZSBJR1VfUkVHX0JMT0NLX0NPTkZJR1VSQVRJT04JCQkJIDB4MTMwMDAwCiAjZGVmaW5lIElHVV9SRUdfQ09NTUFORF9SRUdfMzJMU0JfREFUQQkJCQkgMHgxMzAxMjQKQEAgLTg2Miw3ICs4NjIsNyBAQAogI2RlZmluZSBJR1VfUkVHX0NTVE9STV9UWVBFXzBfU0JfQ0xFQU5VUAkJCSAweDEzMDIwMAogLyogW1IgNV0gRGVidWc6IGN0cmxfZnNtICovCiAjZGVmaW5lIElHVV9SRUdfQ1RSTF9GU00JCQkJCSAweDEzMDA2NAotLyogW1IgMV0gZGF0YSBhdmFpbGJsZSBmb3IgZXJyb3IgbWVtb3J5LiBJZiB0aGlzIGJpdCBpcyBjbGVhciBkbyBub3QgcmVkCisvKiBbUiAxXSBkYXRhIGF2YWlsYWJsZSBmb3IgZXJyb3IgbWVtb3J5LiBJZiB0aGlzIGJpdCBpcyBjbGVhciBkbyBub3QgcmVkCiAgKiBmcm9tIGVycm9yX2hhbmRsaW5nX21lbW9yeS4gKi8KICNkZWZpbmUgSUdVX1JFR19FUlJPUl9IQU5ETElOR19EQVRBX1ZBTElECQkJIDB4MTMwMTMwCiAvKiBbUlcgMTFdIFBhcml0eSBtYXNrIHJlZ2lzdGVyICMwIHJlYWQvd3JpdGUgKi8KQEAgLTMwMTUsNyArMzAxNSw3IEBACiAgICBibG9jay4gU2hvdWxkIGJlIHVzZWQgZm9yIGNsb3NlIHRoZSBnYXRlcy4gKi8KICNkZWZpbmUgUFhQX1JFR19IU1RfRElTQ0FSRF9ET09SQkVMTFMJCQkJIDB4MTAzMGE0CiAvKiBbUiAxXSBkZWJ1ZyBvbmx5OiAnMScgbWVhbnMgdGhpcyBQU1dIU1QgaXMgZGlzY2FyZGluZyBkb29yYmVsbHMuIFRoaXMgYml0Ci0gICBzaG91bGQgdXBkYXRlIGFjY29yaW5nIHRvICdoc3RfZGlzY2FyZF9kb29yYmVsbHMnIHJlZ2lzdGVyIHdoZW4gdGhlIHN0YXRlCisgICBzaG91bGQgdXBkYXRlIGFjY29yZGluZyB0byAnaHN0X2Rpc2NhcmRfZG9vcmJlbGxzJyByZWdpc3RlciB3aGVuIHRoZSBzdGF0ZQogICAgbWFjaGluZSBpcyBpZGxlICovCiAjZGVmaW5lIFBYUF9SRUdfSFNUX0RJU0NBUkRfRE9PUkJFTExTX1NUQVRVUwkJCSAweDEwMzBhMAogLyogW1JXIDFdIFdoZW4gMTsgbmV3IGludGVybmFsIHdyaXRlcyBhcnJpdmluZyB0byB0aGUgYmxvY2sgYXJlIGRpc2NhcmRlZC4KQEAgLTMwMjMsNyArMzAyMyw3IEBACiAjZGVmaW5lIFBYUF9SRUdfSFNUX0RJU0NBUkRfSU5URVJOQUxfV1JJVEVTCQkJIDB4MTAzMGE4CiAvKiBbUiA2XSBkZWJ1ZyBvbmx5OiBBIGJpdCBtYXNrIGZvciBhbGwgUFNXSFNUIGludGVybmFsIHdyaXRlIGNsaWVudHMuICcxJwogICAgbWVhbnMgdGhpcyBQU1dIU1QgaXMgZGlzY2FyZGluZyBpbnB1dHMgZnJvbSB0aGlzIGNsaWVudC4gRWFjaCBiaXQgc2hvdWxkCi0gICB1cGRhdGUgYWNjb3JpbmcgdG8gJ2hzdF9kaXNjYXJkX2ludGVybmFsX3dyaXRlcycgcmVnaXN0ZXIgd2hlbiB0aGUgc3RhdGUKKyAgIHVwZGF0ZSBhY2NvcmRpbmcgdG8gJ2hzdF9kaXNjYXJkX2ludGVybmFsX3dyaXRlcycgcmVnaXN0ZXIgd2hlbiB0aGUgc3RhdGUKICAgIG1hY2hpbmUgaXMgaWRsZS4gKi8KICNkZWZpbmUgUFhQX1JFR19IU1RfRElTQ0FSRF9JTlRFUk5BTF9XUklURVNfU1RBVFVTCQkgMHgxMDMwOWMKIC8qIFtXQiAxNjBdIFVzZWQgZm9yIGluaXRpYWxpemF0aW9uIG9mIHRoZSBpbmJvdW5kIGludGVycnVwdHMgbWVtb3J5ICovCkBAIC0zODIyLDEzICszODIyLDEzIEBACiAjZGVmaW5lIFRTRE1fUkVHX0FHR19JTlRfVF8xCQkJCQkgMHg0MjBiYwogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY2ZjX3JzcCBsY2lkICovCiAjZGVmaW5lIFRTRE1fUkVHX0NGQ19SU1BfU1RBUlRfQUREUgkJCQkgMHg0MjAwOAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzAgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMCAqLwogI2RlZmluZSBUU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgwCQkJCSAweDQyMDFjCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMSAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMxICovCiAjZGVmaW5lIFRTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDEJCQkJIDB4NDIwMjAKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMyICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzIgKi8KICNkZWZpbmUgVFNETV9SRUdfQ01QX0NPVU5URVJfTUFYMgkJCQkgMHg0MjAyNAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzMgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMyAqLwogI2RlZmluZSBUU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgzCQkJCSAweDQyMDI4CiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjb21wbGV0aW9uCiAgICBjb3VudGVycy4gKi8KQEAgLTQyODQsMTMgKzQyODQsMTMgQEAKICNkZWZpbmUgVVNETV9SRUdfQUdHX0lOVF9UXzYJCQkJCSAweGM0MGQwCiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjZmNfcnNwIGxjaWQgKi8KICNkZWZpbmUgVVNETV9SRUdfQ0ZDX1JTUF9TVEFSVF9BRERSCQkJCSAweGM0MDA4Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMCAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMwICovCiAjZGVmaW5lIFVTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDAJCQkJIDB4YzQwMWMKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMxICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzEgKi8KICNkZWZpbmUgVVNETV9SRUdfQ01QX0NPVU5URVJfTUFYMQkJCQkgMHhjNDAyMAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzIgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMiAqLwogI2RlZmluZSBVU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgyCQkJCSAweGM0MDI0Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMyAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMzICovCiAjZGVmaW5lIFVTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDMJCQkJIDB4YzQwMjgKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNvbXBsZXRpb24KICAgIGNvdW50ZXJzLiAqLwpAQCAtNDc5OCwxMyArNDc5OCwxMyBAQAogI2RlZmluZSBYU0RNX1JFR19BR0dfSU5UX01PREVfMSAJCQkJIDB4MTY2MWJjCiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjZmNfcnNwIGxjaWQgKi8KICNkZWZpbmUgWFNETV9SRUdfQ0ZDX1JTUF9TVEFSVF9BRERSCQkJCSAweDE2NjAwOAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzAgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMCAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgwCQkJCSAweDE2NjAxYwotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzEgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMSAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgxCQkJCSAweDE2NjAyMAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzIgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMiAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgyCQkJCSAweDE2NjAyNAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzMgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMyAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgzCQkJCSAweDE2NjAyOAogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY29tcGxldGlvbgogICAgY291bnRlcnMuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmggYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmgKaW5kZXggNGIzZTM1OC4uODY4NjFmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5oCisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuaApAQCAtNzYsNyArNzYsNyBAQAogCQkJCSAqLwogCXUzMiB0eF9ieXRlczsJCS8qIEVhY2ggQ2xpZW50IGFjY3VtdWxhdGVzIHRoZSBCeXRlc1R4IHRoYXQKIAkJCQkgKiB3ZXJlIHRyYW5taXR0ZWQgdG8gaXQsIGFuZCBhZnRlciBlYWNoCi0JCQkJICogQ2FsbEJhY2sgdGhlIExvYWRIaXN0b3J5IGlzIGRldmlkZWQKKwkJCQkgKiBDYWxsQmFjayB0aGUgTG9hZEhpc3RvcnkgaXMgZGl2aWRlZAogCQkJCSAqIGJ5IHRoZSBiYWxhbmNlIGludGVydmFsCiAJCQkJICovCiAJdTMyIGxvYWRfaGlzdG9yeTsJLyogVGhpcyBmaWVsZCBjb250YWlucyB0aGUgYW1vdW50IG9mIEJ5dGVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc2htY29yZS5jIGIvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NobWNvcmUuYwppbmRleCA4MDUxMTE2Li43MzFhYTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc2htY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zaG1jb3JlLmMKQEAgLTU5MSw3ICs1OTEsNyBAQAogCQkJKE5SX1RYX0JVRiAqIFRYX0JVRl9TWiArIE5SX1JYX0JVRiAqIFJYX0JVRl9TWikpIHsKIAogCQlwcl93YXJuKCJFUlJPUiwgQW1vdW50IG9mIGF2YWlsYWJsZSIKLQkJCQkiIFBoeXMuIFNITSBjYW5ub3QgYWNjb21vZGF0ZSBjdXJyZW50IFNITSAiCisJCQkJIiBQaHlzLiBTSE0gY2Fubm90IGFjY29tbW9kYXRlIGN1cnJlbnQgU0hNICIKIAkJCQkiZHJpdmVyIGNvbmZpZ3VyYXRpb24sIEJhaWxpbmcgb3V0IC4uLlxuIik7CiAJCWZyZWVfbmV0ZGV2KHBzaG1fZGV2LT5wc2htX25ldGRldik7CiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaS5jIGIvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaS5jCmluZGV4IDIwZGExOTkuLjU3ZTYzOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGkuYworKysgYi9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpLmMKQEAgLTM5Nyw3ICszOTcsNyBAQAogCWludCBwa3RzID0gMDsKIAogCS8qCi0JICogRGVjb21taXQgcHJldmlvdXNseSBjb21taXRlZCBmcmFtZXMuCisJICogRGVjb21taXQgcHJldmlvdXNseSBjb21taXR0ZWQgZnJhbWVzLgogCSAqIHNrYl9xdWV1ZV9zcGxpY2VfdGFpbCgmY2ZzcGktPmNoZWFkLCZjZnNwaS0+cWhlYWQpCiAJICovCiAJd2hpbGUgKHNrYl9wZWVrKCZjZnNwaS0+Y2hlYWQpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpX3NsYXZlLmMgYi9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpX3NsYXZlLmMKaW5kZXggMWI5OTQzYS4uYjAwOWUwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaV9zbGF2ZS5jCisrKyBiL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGlfc2xhdmUuYwpAQCAtOTgsNyArOTgsNyBAQAogCiAJCQljZnNwaV9kYmdfc3RhdGUoY2ZzcGksIENGU1BJX1NUQVRFX0ZFVENIX1BLVCk7CiAKLQkJCS8qIENvcHkgY29tbWl0ZWQgU1BJIGZyYW1lcyBhZnRlciB0aGUgU1BJIGluZGljYXRpb24uICovCisJCQkvKiBDb3B5IGNvbW1pdHRlZCBTUEkgZnJhbWVzIGFmdGVyIHRoZSBTUEkgaW5kaWNhdGlvbi4gKi8KIAkJCXB0ciA9ICh1OCAqKSBjZnNwaS0+eGZlci52YV90eDsKIAkJCXB0ciArPSBTUElfSU5EX1NaOwogCQkJbGVuID0gY2ZzcGlfeG1pdGZybShjZnNwaSwgcHRyLCBjZnNwaS0+dHhfY3Bja19sZW4pOwpAQCAtMTU4LDcgKzE1OCw3IEBACiAKIAkJY2ZzcGlfZGJnX3N0YXRlKGNmc3BpLCBDRlNQSV9TVEFURV9TSUdfQUNUSVZFKTsKIAotCQkvKiBTaWduYWwgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gcmVjaWV2ZSBkYXRhLiAqLworCQkvKiBTaWduYWwgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gcmVjZWl2ZSBkYXRhLiAqLwogCQljZnNwaS0+ZGV2LT5zaWdfeGZlcih0cnVlLCBjZnNwaS0+ZGV2KTsKIAogCQljZnNwaV9kYmdfc3RhdGUoY2ZzcGksIENGU1BJX1NUQVRFX1dBSVRfWEZFUl9ET05FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMKaW5kZXggNTdkMmZmYi4uNzRlZmI1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMKQEAgLTQxNiw3ICs0MTYsNyBAQAogCiAJc3RhdHMtPnR4X2J5dGVzICs9IGNmLT5jYW5fZGxjOwogCi0JLyogX05PVEVfOiBzdWJzdHJhY3QgQVQ5MV9NQl9UWF9GSVJTVCBvZmZzZXQgZnJvbSBtYiEgKi8KKwkvKiBfTk9URV86IHN1YnRyYWN0IEFUOTFfTUJfVFhfRklSU1Qgb2Zmc2V0IGZyb20gbWIhICovCiAJY2FuX3B1dF9lY2hvX3NrYihza2IsIGRldiwgbWIgLSBBVDkxX01CX1RYX0ZJUlNUKTsKIAogCS8qCkBAIC03ODIsNyArNzgyLDcgQEAKIAkJcmVnX21zciA9IGF0OTFfcmVhZChwcml2LCBBVDkxX01TUihtYikpOwogCQlpZiAobGlrZWx5KHJlZ19tc3IgJiBBVDkxX01TUl9NUkRZICYmCiAJCQkgICB+cmVnX21zciAmIEFUOTFfTVNSX01BQlQpKSB7Ci0JCQkvKiBfTk9URV86IHN1YnN0cmFjdCBBVDkxX01CX1RYX0ZJUlNUIG9mZnNldCBmcm9tIG1iISAqLworCQkJLyogX05PVEVfOiBzdWJ0cmFjdCBBVDkxX01CX1RYX0ZJUlNUIG9mZnNldCBmcm9tIG1iISAqLwogCQkJY2FuX2dldF9lY2hvX3NrYihkZXYsIG1iIC0gQVQ5MV9NQl9UWF9GSVJTVCk7CiAJCQlkZXYtPnN0YXRzLnR4X3BhY2tldHMrKzsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW4uYwppbmRleCAzMTU1Mjk1Li43ZTVjYzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW4uYworKysgYi9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW4uYwpAQCAtODEzLDcgKzgxMyw3IEBACiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAlzdHJ1Y3QgY2FuX2JlcnJfY291bnRlciBiZWM7CiAKLQkvKiBwcm9wb2dhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgQ0FOIHN0YWNrICovCisJLyogcHJvcGFnYXRlIHRoZSBlcnJvciBjb25kaXRpb24gdG8gdGhlIENBTiBzdGFjayAqLwogCXNrYiA9IGFsbG9jX2Nhbl9lcnJfc2tiKGRldiwgJmNmKTsKIAlpZiAodW5saWtlbHkoIXNrYikpCiAJCXJldHVybiAwOwpAQCAtODg3LDcgKzg4Nyw3IEBACiAJaWYgKGxlY190eXBlID09IExFQ19VTlVTRUQgfHwgbGVjX3R5cGUgPT0gTEVDX05PX0VSUk9SKQogCQlyZXR1cm4gMDsKIAotCS8qIHByb3BvZ2F0ZSB0aGUgZXJyb3IgY29uZGl0aW9uIHRvIHRoZSBDQU4gc3RhY2sgKi8KKwkvKiBwcm9wYWdhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgQ0FOIHN0YWNrICovCiAJc2tiID0gYWxsb2NfY2FuX2Vycl9za2IoZGV2LCAmY2YpOwogCWlmICh1bmxpa2VseSghc2tiKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jIGIvZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYwppbmRleCAxMDJiMTZjLi41ODdmYmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmMKQEAgLTI3NCw3ICsyNzQsNyBAQAogICovCiAKIC8qCi0gKiBSZWNpZXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBJQ0FOMyAib2xkLXN0eWxlIiBmaXJtd2FyZSBpbnRlcmZhY2UKKyAqIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIElDQU4zICJvbGQtc3R5bGUiIGZpcm13YXJlIGludGVyZmFjZQogICoKICAqIExPQ0tJTkc6IG11c3QgaG9sZCBtb2QtPmxvY2sKICAqCkBAIC0xMDUwLDcgKzEwNTAsNyBAQAogCQljb21wbGV0ZSgmbW9kLT50ZXJtaW5hdGlvbl9jb21wKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGV2X2Vycihtb2QtPmRldiwgInJlY2lldmVkIGFuIHVua25vd24gaW5xdWlyeSByZXNwb25zZVxuIik7CisJCWRldl9lcnIobW9kLT5kZXYsICJyZWNlaXZlZCBhbiB1bmtub3duIGlucXVpcnkgcmVzcG9uc2VcbiIpOwogCQlicmVhazsKIAl9CiB9CkBAIC0xMDU4LDcgKzEwNTgsNyBAQAogc3RhdGljIHZvaWQgaWNhbjNfaGFuZGxlX3Vua25vd25fbWVzc2FnZShzdHJ1Y3QgaWNhbjNfZGV2ICptb2QsCiAJCQkJCXN0cnVjdCBpY2FuM19tc2cgKm1zZykKIHsKLQlkZXZfd2Fybihtb2QtPmRldiwgInJlY2lldmVkIHVua25vd24gbWVzc2FnZTogc3BlYyAweCUuMnggbGVuZ3RoICVkXG4iLAorCWRldl93YXJuKG1vZC0+ZGV2LCAicmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiBzcGVjIDB4JS4yeCBsZW5ndGggJWRcbiIsCiAJCQkgICBtc2ctPnNwZWMsIGxlMTZfdG9fY3B1KG1zZy0+bGVuKSk7CiB9CiAKQEAgLTExMTMsNyArMTExMyw3IEBACiB9CiAKIC8qCi0gKiBSZWNpZXZlIG9uZSBDQU4gZnJhbWUgZnJvbSB0aGUgaGFyZHdhcmUKKyAqIFJlY2VpdmUgb25lIENBTiBmcmFtZSBmcm9tIHRoZSBoYXJkd2FyZQogICoKICAqIENPTlRFWFQ6IG11c3QgYmUgY2FsbGVkIGZyb20gdXNlciBjb250ZXh0CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tY3AyNTF4LmMgYi9kcml2ZXJzL25ldC9jYW4vbWNwMjUxeC5jCmluZGV4IDc1MTNjNDUuLjMzMDE0MGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9tY3AyNTF4LmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL21jcDI1MXguYwpAQCAtOTMxLDcgKzkzMSw4IEBACiAJcHJpdi0+dHhfbGVuID0gMDsKIAogCXJldCA9IHJlcXVlc3RfdGhyZWFkZWRfaXJxKHNwaS0+aXJxLCBOVUxMLCBtY3AyNTF4X2Nhbl9pc3QsCi0JCQkgIElSUUZfVFJJR0dFUl9GQUxMSU5HLCBERVZJQ0VfTkFNRSwgcHJpdik7CisJCSAgcGRhdGEtPmlycV9mbGFncyA/IHBkYXRhLT5pcnFfZmxhZ3MgOiBJUlFGX1RSSUdHRVJfRkFMTElORywKKwkJICBERVZJQ0VfTkFNRSwgcHJpdik7CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0byBhY3F1aXJlIGlycSAlZFxuIiwgc3BpLT5pcnEpOwogCQlpZiAocGRhdGEtPnRyYW5zY2VpdmVyX2VuYWJsZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmMKaW5kZXggNzRjZDg4MC4uOTJmZWFjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmMKQEAgLTI0Niw3ICsyNDYsNyBAQAogCQlvdXRfYmUxNigmcmVncy0+dHguaWRyM18yLCBjYW5faWQpOwogCiAJCWNhbl9pZCA+Pj0gMTY7Ci0JCS8qIEVGRl9GTEFHUyBhcmUgaW5iZXR3ZWVuIHRoZSBJRHMgOiggKi8KKwkJLyogRUZGX0ZMQUdTIGFyZSBiZXR3ZWVuIHRoZSBJRHMgOiggKi8KIAkJY2FuX2lkID0gKGNhbl9pZCAmIDB4NykgfCAoKGNhbl9pZCA8PCAyKSAmIDB4ZmZlMCkKIAkJCSB8IE1TQ0FOX0VGRl9GTEFHUzsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jIGIvZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jCmluZGV4IDBhOGRlMDEuLmEzNThlYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYworKysgYi9kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMKQEAgLTQyNSw3ICs0MjUsNyBAQAogCQkJY2YtPmRhdGFbM10gPSBlY2MgJiBFQ0NfU0VHOwogCQkJYnJlYWs7CiAJCX0KLQkJLyogRXJyb3Igb2NjdXJlZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLworCQkvKiBFcnJvciBvY2N1cnJlZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLwogCQlpZiAoKGVjYyAmIEVDQ19ESVIpID09IDApCiAJCQljZi0+ZGF0YVsyXSB8PSBDQU5fRVJSX1BST1RfVFg7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZy5oIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZy5oCmluZGV4IDdlYzlmNGQuLmFmZDdkODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmcuaAorKysgYi9kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAlzdHJ1Y3Qgc29mdGluZyAqY2FyZDsKIAlzdHJ1Y3QgewogCQlpbnQgcGVuZGluZzsKLQkJLyogdmFyaWFibGVzIHdpY2ggaG9sZCB0aGUgY2lyY3VsYXIgYnVmZmVyICovCisJCS8qIHZhcmlhYmxlcyB3aGljaCBob2xkIHRoZSBjaXJjdWxhciBidWZmZXIgKi8KIAkJaW50IGVjaG9fcHV0OwogCQlpbnQgZWNob19nZXQ7CiAJfSB0eDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMKaW5kZXggYWVlYTlmOS4uN2E3MDcwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMKQEAgLTIxOCw3ICsyMTgsNyBAQAogCXB0ciA9IGJ1ZjsKIAljbWQgPSAqcHRyKys7CiAJaWYgKGNtZCA9PSAweGZmKQotCQkvKiBub3QgcXVpdGUgdXNlZnVsbCwgcHJvYmFibHkgdGhlIGNhcmQgaGFzIGdvdCBvdXQgKi8KKwkJLyogbm90IHF1aXRlIHVzZWZ1bCwgcHJvYmFibHkgdGhlIGNhcmQgaGFzIGdvdCBvdXQgKi8KIAkJcmV0dXJuIDA7CiAJbmV0ZGV2ID0gY2FyZC0+bmV0WzBdOwogCWlmIChjbWQgJiBDTURfQlVTMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMgYi9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jCmluZGV4IDRkMDdmMWUuLmY3YmJkZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYwpAQCAtNjYzLDcgKzY2Myw3IEBACiAJc3RydWN0IGNhbl9mcmFtZSAqY2Y7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAotCS8qIHByb3BvZ2F0ZSB0aGUgZXJyb3IgY29uZGl0aW9uIHRvIHRoZSBjYW4gc3RhY2sgKi8KKwkvKiBwcm9wYWdhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgY2FuIHN0YWNrICovCiAJc2tiID0gYWxsb2NfY2FuX2Vycl9za2IobmRldiwgJmNmKTsKIAlpZiAoIXNrYikgewogCQlpZiAocHJpbnRrX3JhdGVsaW1pdCgpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYwppbmRleCBlNzVmMWE4Li5hNzJjN2JmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYworKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYwpAQCAtMzg2LDcgKzM4Niw3IEBACiAJCQlicmVhazsKIAkJfQogCi0JCS8qIEVycm9yIG9jY3VyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KKwkJLyogRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KIAkJaWYgKChlY2MgJiBTSkExMDAwX0VDQ19ESVIpID09IDApCiAJCQljZi0+ZGF0YVsyXSB8PSBDQU5fRVJSX1BST1RfVFg7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYjIuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYjIuYwppbmRleCBkYzUzYzgzLi5lYjhiMGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IyLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiMi5jCkBAIC0yODQsNyArMjg0LDcgQEAKIAkJCQlicmVhazsKIAkJCX0KIAotCQkJLyogRXJyb3Igb2NjdXJlZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLworCQkJLyogRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KIAkJCWlmICghKGVjYyAmIFNKQTEwMDBfRUNDX0RJUikpCiAJCQkJY2YtPmRhdGFbMl0gfD0gQ0FOX0VSUl9QUk9UX1RYOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYXNzaW5pLmMgYi9kcml2ZXJzL25ldC9jYXNzaW5pLmMKaW5kZXggMzQzNzYxMy4uMTQzYTI4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2Fzc2luaS5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhc3NpbmkuYwpAQCAtNTEsNyArNTEsNyBAQAogICogVFggaGFzIDQgcXVldWVzLiBjdXJyZW50bHkgdGhlc2UgcXVldWVzIGFyZSB1c2VkIGluIGEgcm91bmQtcm9iaW4KICAqIGZhc2hpb24gZm9yIGxvYWQgYmFsYW5jaW5nLiBUaGV5IGNhbiBhbHNvIGJlIHVzZWQgZm9yIFFvUy4gZm9yIHRoYXQKICAqIHRvIHdvcmssIGhvd2V2ZXIsIFFvUyBpbmZvcm1hdGlvbiBuZWVkcyB0byBiZSBleHBvc2VkIGRvd24gdG8gdGhlIGRyaXZlcgotICogbGV2ZWwgc28gdGhhdCBzdWJxdWV1ZXMgZ2V0IHRhcmdldHRlZCB0byBwYXJ0aWN1bGFyIHRyYW5zbWl0IHJpbmdzLgorICogbGV2ZWwgc28gdGhhdCBzdWJxdWV1ZXMgZ2V0IHRhcmdldGVkIHRvIHBhcnRpY3VsYXIgdHJhbnNtaXQgcmluZ3MuCiAgKiBhbHRlcm5hdGl2ZWx5LCB0aGUgcXVldWVzIGNhbiBiZSBjb25maWd1cmVkIHZpYSB1c2Ugb2YgdGhlIGFsbC1wdXJwb3NlCiAgKiBpb2N0bC4KICAqCkBAIC01MTY1LDcgKzUxNjUsNyBAQAogCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7CiAKIGVycl93cml0ZV9jYWNoZWxpbmU6Ci0JLyogVHJ5IHRvIHJlc3RvcmUgaXQgaW4gY2FzZSB0aGUgZXJyb3Igb2NjdXJlZCBhZnRlciB3ZQorCS8qIFRyeSB0byByZXN0b3JlIGl0IGluIGNhc2UgdGhlIGVycm9yIG9jY3VycmVkIGFmdGVyIHdlCiAJICogc2V0IGl0LgogCSAqLwogCXBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBQQ0lfQ0FDSEVfTElORV9TSVpFLCBvcmlnX2NhY2hlbGluZV9zaXplKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhc3NpbmkuaCBiL2RyaXZlcnMvbmV0L2Nhc3NpbmkuaAppbmRleCBmYWY0NzQ2Li5iMzYxNDI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYXNzaW5pLmgKKysrIGIvZHJpdmVycy9uZXQvY2Fzc2luaS5oCkBAIC03NzIsNyArNzcyLDcgQEAKICNkZWZpbmUgICAgUlhfREVCVUdfSU5UUl9XUklURV9QVFJfTUFTSyAgICAweEMwMDAwMDAwIC8qIGludGVycnVwdCB3cml0ZSBwb2ludGVyCiAJCQkJCQkJIG9mIHRoZSBpbnRlcnJ1cHQgcXVldWUgKi8KIAotLyogZmxvdyBjb250cm9sIGZyYW1lcyBhcmUgZW1taXR0ZWQgdXNpbmcgdHdvIFBBVVNFIHRocmVzaG9sZHM6CisvKiBmbG93IGNvbnRyb2wgZnJhbWVzIGFyZSBlbWl0dGVkIHVzaW5nIHR3byBQQVVTRSB0aHJlc2hvbGRzOgogICogWE9GRiBQQVVTRSB1c2VzIHBhdXNlIHRpbWUgdmFsdWUgcHJlLXByb2dyYW1tZWQgaW4gdGhlIFNlbmQgUEFVU0UgTUFDIHJlZwogICogWE9OIFBBVVNFIHVzZXMgYSBwYXVzZSB0aW1lIG9mIDAuIGdyYW51bGFyaXR5IG9mIHRocmVzaG9sZCBpcyA2NGJ5dGVzLgogICogUEFVU0UgdGhyZXNob2xkcyBkZWZpbmVkIGluIHRlcm1zIG9mIEZJRk8gb2NjdXBhbmN5IGFuZCBtYXkgYmUgdHJhbnNsYXRlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2hlbHNpby9tdjg4ZTF4eHguYyBiL2RyaXZlcnMvbmV0L2NoZWxzaW8vbXY4OGUxeHh4LmMKaW5kZXggODA5MDQ3YS4uNzEwMThhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2hlbHNpby9tdjg4ZTF4eHguYworKysgYi9kcml2ZXJzL25ldC9jaGVsc2lvL212ODhlMXh4eC5jCkBAIC00MSw3ICs0MSw3IEBACiAgKgogICogUEFSQU1TOiBjcGh5ICAgICAtIFBvaW50ZXIgdG8gUEhZIGluc3RhbmNlIGRhdGEuCiAgKgotICogUkVUVVJOOiAgMCAtIFN1Y2Nlc3NmdWxsIHJlc2V0LgorICogUkVUVVJOOiAgMCAtIFN1Y2Nlc3NmdWwgcmVzZXQuCiAgKiAgICAgICAgIC0xIC0gVGltZW91dC4KICAqLwogc3RhdGljIGludCBtdjg4ZTF4eHhfcmVzZXQoc3RydWN0IGNwaHkgKmNwaHksIGludCB3YWl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2hlbHNpby9wbTMzOTMuYyBiL2RyaXZlcnMvbmV0L2NoZWxzaW8vcG0zMzkzLmMKaW5kZXggN2RiYjE2ZC4uNDBjN2I5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2hlbHNpby9wbTMzOTMuYworKysgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3BtMzM5My5jCkBAIC0yOTMsNyArMjkzLDcgQEAKIAlwbTMzOTNfZW5hYmxlKGNtYWMsIHdoaWNoKTsKIAogCS8qCi0JICogWFhYIFRoaXMgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIFBIWSBhbmQgcHJlZmVycmFibHkgbm90IGF0IGFsbC4KKwkgKiBYWFggVGhpcyBzaG91bGQgYmUgZG9uZSBieSB0aGUgUEhZIGFuZCBwcmVmZXJhYmx5IG5vdCBhdCBhbGwuCiAJICogVGhlIFBIWSBkb2Vzbid0IGdpdmUgdXMgbGluayBzdGF0dXMgaW5kaWNhdGlvbiBvbiBpdHMgb3duIHNvIGhhdmUKIAkgKiB0aGUgbGluayBtYW5hZ2VtZW50IGNvZGUgcXVlcnkgaXQgaW5zdGVhZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3NnZS5jCmluZGV4IGY3NzhiMTUuLjg3NTRkNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMKKysrIGIvZHJpdmVycy9uZXQvY2hlbHNpby9zZ2UuYwpAQCAtMTY2Miw3ICsxNjYyLDcgQEAKICAqIFRoZSBjb2RlIGZpZ3VyZXMgb3V0IGhvdyBtYW55IGVudHJpZXMgdGhlIHNrX2J1ZmYgd2lsbCByZXF1aXJlIGluIHRoZQogICogY21kUSBhbmQgdXBkYXRlcyB0aGUgY21kUSBkYXRhIHN0cnVjdHVyZSB3aXRoIHRoZSBzdGF0ZSBvbmNlIHRoZSBlbnF1ZXVlCiAgKiBoYXMgY29tcGxldGUuIFRoZW4sIGl0IGRvZXNuJ3QgYWNjZXNzIHRoZSBnbG9iYWwgc3RydWN0dXJlIGFueW1vcmUsIGJ1dAotICogdXNlcyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgb24gdGhlIHN0YWNrLiBJbiBjb25qdWN0aW9uIHdpdGggYSBzcGlubG9jaworICogdXNlcyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgb24gdGhlIHN0YWNrLiBJbiBjb25qdW5jdGlvbiB3aXRoIGEgc3BpbmxvY2sKICAqIGFyb3VuZCB0aGF0IGNvZGUsIHdlIGNhbiBtYWtlIHRoZSBmdW5jdGlvbiByZWVudHJhbnQgd2l0aG91dCBob2xkaW5nIHRoZQogICogbG9jayB3aGVuIHdlIGFjdHVhbGx5IGVucXVldWUgKHdoaWNoIG1pZ2h0IGJlIGV4cGVuc2l2ZSwgZXNwZWNpYWxseSBvbgogICogYXJjaGl0ZWN0dXJlcyB3aXRoIElPIE1NVXMpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2hlbHNpby92c2M3MzI2LmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3ZzYzczMjYuYwppbmRleCAxMDZhNTkwLi5iMGNiMzg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jaGVsc2lvL3ZzYzczMjYuYworKysgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3ZzYzczMjYuYwpAQCAtNTY2LDcgKzU2Niw3IEBACiAJZm9yIChpID0gMDsgaSA8PSAweDNhOyArK2kpCiAJCXZzY193cml0ZShtYWMtPmFkYXB0ZXIsIENSQSg0LCBwb3J0LCBpKSwgMCk7CiAKLQkvKiBDbGVhciBzb2Z3YXJlIGNvdW50ZXJzICovCisJLyogQ2xlYXIgc29mdHdhcmUgY291bnRlcnMgKi8KIAltZW1zZXQoJm1hYy0+c3RhdHMsIDAsIHNpemVvZihzdHJ1Y3QgY21hY19zdGF0aXN0aWNzKSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NyaXMvZXRoX3YxMC5jIGIvZHJpdmVycy9uZXQvY3Jpcy9ldGhfdjEwLmMKaW5kZXggODBjMmZlZS4uOWQyNjdkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY3Jpcy9ldGhfdjEwLmMKKysrIGIvZHJpdmVycy9uZXQvY3Jpcy9ldGhfdjEwLmMKQEAgLTEzODMsNyArMTM4Myw3IEBACiAJc3Bpbl9sb2NrKCZucC0+bG9jayk7IC8qIFByZWVtcHQgcHJvdGVjdGlvbiAqLwogCXN3aXRjaCAoY21kKSB7CiAJCS8qIFRoZSBpb2N0bHMgYmVsb3cgc2hvdWxkIGJlIGNvbnNpZGVyZWQgb2Jzb2xldGUgYnV0IGFyZSAqLwotCQkvKiBzdGlsbCBwcmVzZW50IGZvciBjb21wYXRhYmlsaXR5IHdpdGggb2xkIHNjcmlwdHMvYXBwcyAgKi8KKwkJLyogc3RpbGwgcHJlc2VudCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBzY3JpcHRzL2FwcHMgICovCiAJCWNhc2UgU0VUX0VUSF9TUEVFRF8xMDogICAgICAgICAgICAgICAgICAvKiAxMCBNYnBzICovCiAJCQllMTAwX3NldF9zcGVlZChkZXYsIDEwKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3hnYjMvc2dlLmMgYi9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYwppbmRleCBmOWY2NjQ1Li5iZmEyZDU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYworKysgYi9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYwpAQCAtMTk5LDcgKzE5OSw3IEBACiAgKgluZWVkX3NrYl91bm1hcCAtIGRvZXMgdGhlIHBsYXRmb3JtIG5lZWQgdW5tYXBwaW5nIG9mIHNrX2J1ZmZzPwogICoKICAqCVJldHVybnMgdHJ1ZSBpZiB0aGUgcGxhdGZvcm0gbmVlZHMgc2tfYnVmZiB1bm1hcHBpbmcuICBUaGUgY29tcGlsZXIKLSAqCW9wdGltaXplcyBhd2F5IHVuZWNlc3NhcnkgY29kZSBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KKyAqCW9wdGltaXplcyBhd2F5IHVubmVjZXNzYXJ5IGNvZGUgaWYgdGhpcyByZXR1cm5zIHRydWUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IG5lZWRfc2tiX3VubWFwKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jeGdiMy90M19ody5jIGIvZHJpdmVycy9uZXQvY3hnYjMvdDNfaHcuYwppbmRleCBkNTVkYjZiLi5jNjg4NDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiMy90M19ody5jCisrKyBiL2RyaXZlcnMvbmV0L2N4Z2IzL3QzX2h3LmMKQEAgLTEzODYsMTEgKzEzODYsMTEgQEAKICAqCUByZWc6IHRoZSBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIHRvIHByb2Nlc3MKICAqCUBtYXNrOiBhIG1hc2sgdG8gYXBwbHkgdG8gdGhlIGludGVycnVwdCBzdGF0dXMKICAqCUBhY3RzOiB0YWJsZSBvZiBpbnRlcnJ1cHQgYWN0aW9ucwotICoJQHN0YXRzOiBzdGF0aXN0aWNzIGNvdW50ZXJzIHRyYWNraW5nIGludGVycnVwdCBvY2N1cmVuY2VzCisgKglAc3RhdHM6IHN0YXRpc3RpY3MgY291bnRlcnMgdHJhY2tpbmcgaW50ZXJydXB0IG9jY3VycmVuY2VzCiAgKgogICoJQSB0YWJsZSBkcml2ZW4gaW50ZXJydXB0IGhhbmRsZXIgdGhhdCBhcHBsaWVzIGEgc2V0IG9mIG1hc2tzIHRvIGFuCiAgKglpbnRlcnJ1cHQgc3RhdHVzIHdvcmQgYW5kIHBlcmZvcm1zIHRoZSBjb3JyZXNwb25kaW5nIGFjdGlvbnMgaWYgdGhlCi0gKglpbnRlcnJ1cHRzIGRlc2NyaWJlZCBieSB0aGUgbWFzayBoYXZlIG9jY3VyZWQuICBUaGUgYWN0aW9ucyBpbmNsdWRlCisgKglpbnRlcnJ1cHRzIGRlc2NyaWJlZCBieSB0aGUgbWFzayBoYXZlIG9jY3VycmVkLiAgVGhlIGFjdGlvbnMgaW5jbHVkZQogICoJb3B0aW9uYWxseSBwcmludGluZyBhIHdhcm5pbmcgb3IgYWxlcnQgbWVzc2FnZSwgYW5kIG9wdGlvbmFsbHkKICAqCWluY3JlbWVudGluZyBhIHN0YXQgY291bnRlci4gIFRoZSB0YWJsZSBpcyB0ZXJtaW5hdGVkIGJ5IGFuIGVudHJ5CiAgKglzcGVjaWZ5aW5nIG1hc2sgMC4gIFJldHVybnMgdGhlIG51bWJlciBvZiBmYXRhbCBpbnRlcnJ1cHQgY29uZGl0aW9ucy4KQEAgLTI3ODMsNyArMjc4Myw3IEBACiB7CiAJLyoKIAkgKiBTZWUgZHJhZnQtbWF0aGlzLXBscG10dWQtMDAudHh0IGZvciB0aGUgdmFsdWVzLiAgVGhlIG1pbiBpcyA4OCBzbwotCSAqIGl0IGNhbiBhY2NvbW9kYXRlIG1heCBzaXplIFRDUC9JUCBoZWFkZXJzIHdoZW4gU0FDSyBhbmQgdGltZXN0YW1wcworCSAqIGl0IGNhbiBhY2NvbW1vZGF0ZSBtYXggc2l6ZSBUQ1AvSVAgaGVhZGVycyB3aGVuIFNBQ0sgYW5kIHRpbWVzdGFtcHMKIAkgKiBhcmUgZW5hYmxlZCBhbmQgc3RpbGwgaGF2ZSBhdCBsZWFzdCA4IGJ5dGVzIG9mIHBheWxvYWQuCiAJICovCiAJbXR1c1swXSA9IDg4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3hnYjQvdDRfaHcuYyBiL2RyaXZlcnMvbmV0L2N4Z2I0L3Q0X2h3LmMKaW5kZXggYjlmZDhhNi4uZDFlYzExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY3hnYjQvdDRfaHcuYworKysgYi9kcml2ZXJzL25ldC9jeGdiNC90NF9ody5jCkBAIC04ODMsNyArODgzLDcgQEAKICAqCiAgKglBIHRhYmxlIGRyaXZlbiBpbnRlcnJ1cHQgaGFuZGxlciB0aGF0IGFwcGxpZXMgYSBzZXQgb2YgbWFza3MgdG8gYW4KICAqCWludGVycnVwdCBzdGF0dXMgd29yZCBhbmQgcGVyZm9ybXMgdGhlIGNvcnJlc3BvbmRpbmcgYWN0aW9ucyBpZiB0aGUKLSAqCWludGVycnVwdHMgZGVzY3JpYmVkIGJ5IHRoZSBtYXNrIGhhdmUgb2NjdXJlZC4gIFRoZSBhY3Rpb25zIGluY2x1ZGUKKyAqCWludGVycnVwdHMgZGVzY3JpYmVkIGJ5IHRoZSBtYXNrIGhhdmUgb2NjdXJyZWQuICBUaGUgYWN0aW9ucyBpbmNsdWRlCiAgKglvcHRpb25hbGx5IGVtaXR0aW5nIGEgd2FybmluZyBvciBhbGVydCBtZXNzYWdlLiAgVGhlIHRhYmxlIGlzIHRlcm1pbmF0ZWQKICAqCWJ5IGFuIGVudHJ5IHNwZWNpZnlpbmcgbWFzayAwLiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZhdGFsIGludGVycnVwdAogICoJY29uZGl0aW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jCmluZGV4IDZhYWQ2NGQuLjQ2NjFjYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvY3hnYjR2Zi9jeGdiNHZmX21haW4uYwpAQCAtMjczOCw3ICsyNzM4LDcgQEAKIAljZmdfcXVldWVzKGFkYXB0ZXIpOwogCiAJLyoKLQkgKiBQcmludCBhIHNob3J0IG5vdGljZSBvbiB0aGUgZXhpc3RhbmNlIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBuZXcKKwkgKiBQcmludCBhIHNob3J0IG5vdGljZSBvbiB0aGUgZXhpc3RlbmNlIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBuZXcKIAkgKiBWRiBuZXR3b3JrIGRldmljZSAuLi4KIAkgKi8KIAlmb3JfZWFjaF9wb3J0KGFkYXB0ZXIsIHBpZHgpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvc2dlLmMgYi9kcml2ZXJzL25ldC9jeGdiNHZmL3NnZS5jCmluZGV4IGUwYjNkMWIuLmJiNjUxMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvc2dlLmMKKysrIGIvZHJpdmVycy9uZXQvY3hnYjR2Zi9zZ2UuYwpAQCAtMjI0LDggKzIyNCw4IEBACiAvKioKICAqCW5lZWRfc2tiX3VubWFwIC0gZG9lcyB0aGUgcGxhdGZvcm0gbmVlZCB1bm1hcHBpbmcgb2Ygc2tfYnVmZnM/CiAgKgotICoJUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF0ZnJvbSBuZWVkcyBza19idWZmIHVubWFwcGluZy4gIFRoZSBjb21waWxlcgotICoJb3B0aW1pemVzIGF3YXkgdW5lY2Vzc2FyeSBjb2RlIGlmIHRoaXMgcmV0dXJucyB0cnVlLgorICoJUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF0Zm9ybSBuZWVkcyBza19idWZmIHVubWFwcGluZy4gIFRoZSBjb21waWxlcgorICoJb3B0aW1pemVzIGF3YXkgdW5uZWNlc3NhcnkgY29kZSBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KICAqLwogc3RhdGljIGlubGluZSBpbnQgbmVlZF9za2JfdW5tYXAodm9pZCkKIHsKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICoKICAqCVRlc3RzIHNwZWNpZmllZCBGcmVlIExpc3QgdG8gc2VlIHdoZXRoZXIgdGhlIG51bWJlciBvZiBidWZmZXJzCiAgKglhdmFpbGFibGUgdG8gdGhlIGhhcmR3YXJlIGhhcyBmYWxsZWQgYmVsb3cgb3VyICJzdGFydmF0aW9uIgotICoJdGhyZXNoaG9sZC4KKyAqCXRocmVzaG9sZC4KICAqLwogc3RhdGljIGlubGluZSBib29sIGZsX3N0YXJ2aW5nKGNvbnN0IHN0cnVjdCBzZ2VfZmwgKmZsKQogewpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIAlpZiAodW5saWtlbHkoY3JlZGl0cyA8IEVUSFRYUV9TVE9QX1RIUkVTKSkgewogCQkvKgogCQkgKiBBZnRlciB3ZSdyZSBkb25lIGluamVjdGluZyB0aGUgV29yayBSZXF1ZXN0IGZvciB0aGlzCi0JCSAqIHBhY2tldCwgd2UnbGwgYmUgYmVsb3cgb3VyICJzdG9wIHRocmVzaGhvbGQiIHNvIHN0b3AgdGhlIFRYCisJCSAqIHBhY2tldCwgd2UnbGwgYmUgYmVsb3cgb3VyICJzdG9wIHRocmVzaG9sZCIgc28gc3RvcCB0aGUgVFgKIAkJICogUXVldWUgbm93IGFuZCBzY2hlZHVsZSBhIHJlcXVlc3QgZm9yIGFuIFNHRSBFZ3Jlc3MgUXVldWUKIAkJICogVXBkYXRlIG1lc3NhZ2UuICBUaGUgcXVldWUgd2lsbCBnZXQgc3RhcnRlZCBsYXRlciBvbiB3aGVuCiAJCSAqIHRoZSBmaXJtd2FyZSBwcm9jZXNzZXMgdGhpcyBXb3JrIFJlcXVlc3QgYW5kIHNlbmRzIHVzIGFuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kYXZpbmNpX2VtYWMuYyBiL2RyaXZlcnMvbmV0L2RhdmluY2lfZW1hYy5jCmluZGV4IGJhY2E2YmYuLjgwN2I2YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RhdmluY2lfZW1hYy5jCisrKyBiL2RyaXZlcnMvbmV0L2RhdmluY2lfZW1hYy5jCkBAIC05NCwxNCArOTQsMTQgQEAKIHN0YXRpYyBjb25zdCBjaGFyIGVtYWNfdmVyc2lvbl9zdHJpbmdbXSA9ICJUSSBEYVZpbmNpIEVNQUMgTGludXggdjYuMSI7CiAKIC8qIENvbmZpZ3VyYXRpb24gaXRlbXMgKi8KLSNkZWZpbmUgRU1BQ19ERUZfUEFTU19DUkMJCSgwKSAvKiBEbyBub3QgcGFzcyBDUkMgdXB0byBmcmFtZXMgKi8KKyNkZWZpbmUgRU1BQ19ERUZfUEFTU19DUkMJCSgwKSAvKiBEbyBub3QgcGFzcyBDUkMgdXAgdG8gZnJhbWVzICovCiAjZGVmaW5lIEVNQUNfREVGX1FPU19FTgkJCSgwKSAvKiBFTUFDIHByb3ByaWV0YXJ5IFFvUyBkaXNhYmxlZCAqLwogI2RlZmluZSBFTUFDX0RFRl9OT19CVUZGX0NIQUlOCQkoMCkgLyogTm8gYnVmZmVyIGNoYWluICovCiAjZGVmaW5lIEVNQUNfREVGX01BQ0NUUkxfRlJBTUVfRU4JKDApIC8qIERpc2NhcmQgTWFjY29udHJvbCBmcmFtZXMgKi8KICNkZWZpbmUgRU1BQ19ERUZfU0hPUlRfRlJBTUVfRU4JCSgwKSAvKiBEaXNjYXJkIHNob3J0IGZyYW1lcyAqLwogI2RlZmluZSBFTUFDX0RFRl9FUlJPUl9GUkFNRV9FTgkJKDApIC8qIERpc2NhcmQgZXJyb3IgZnJhbWVzICovCi0jZGVmaW5lIEVNQUNfREVGX1BST01fRU4JCSgwKSAvKiBQcm9taXNjb3VzIGRpc2FibGVkICovCi0jZGVmaW5lIEVNQUNfREVGX1BST01fQ0gJCSgwKSAvKiBQcm9taXNjb3VzIGNoYW5uZWwgaXMgMCAqLworI2RlZmluZSBFTUFDX0RFRl9QUk9NX0VOCQkoMCkgLyogUHJvbWlzY3VvdXMgZGlzYWJsZWQgKi8KKyNkZWZpbmUgRU1BQ19ERUZfUFJPTV9DSAkJKDApIC8qIFByb21pc2N1b3VzIGNoYW5uZWwgaXMgMCAqLwogI2RlZmluZSBFTUFDX0RFRl9CQ0FTVF9FTgkJKDEpIC8qIEJyb2FkY2FzdCBlbmFibGVkICovCiAjZGVmaW5lIEVNQUNfREVGX0JDQVNUX0NICQkoMCkgLyogQnJvYWRjYXN0IGNoYW5uZWwgaXMgMCAqLwogI2RlZmluZSBFTUFDX0RFRl9NQ0FTVF9FTgkJKDEpIC8qIE11bHRpY2FzdCBlbmFibGVkICovCkBAIC0xMDEzLDcgKzEwMTMsNyBAQAogCQlyZXR1cm47CiAJfQogCi0JLyogcmVjeWNsZSBvbiByZWNpZXZlIGVycm9yICovCisJLyogcmVjeWNsZSBvbiByZWNlaXZlIGVycm9yICovCiAJaWYgKHN0YXR1cyA8IDApIHsKIAkJbmRldi0+c3RhdHMucnhfZXJyb3JzKys7CiAJCWdvdG8gcmVjeWNsZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wuYwppbmRleCBmNGQwOTIyLi5kZDcwNzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGh0b29sLmMKKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRodG9vbC5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRhcHRlci0+bGlua19kdXBsZXgpOwogCQllY21kLT5zcGVlZCA9IGFkYXB0ZXItPmxpbmtfc3BlZWQ7CiAKLQkJLyogdW5mb3J0dW5hdGx5IEZVTExfRFVQTEVYICE9IERVUExFWF9GVUxMCisJCS8qIHVuZm9ydHVuYXRlbHkgRlVMTF9EVVBMRVggIT0gRFVQTEVYX0ZVTEwKIAkJICogICAgICAgICAgYW5kIEhBTEZfRFVQTEVYICE9IERVUExFWF9IQUxGICovCiAKIAkJaWYgKGFkYXB0ZXItPmxpbmtfZHVwbGV4ID09IEZVTExfRFVQTEVYKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfaHcuaCBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2h3LmgKaW5kZXggYzcwYjIzZC4uNWM5YTg0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfaHcuaAorKysgYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ody5oCkBAIC0xMDI2LDcgKzEwMjYsNyBAQAogCiAjZGVmaW5lIEUxMDAwX0tVTUNUUkxTVEEgMHgwMDAzNAkvKiBNQUMtUEhZIGludGVyZmFjZSAtIFJXICovCiAjZGVmaW5lIEUxMDAwX01EUEhZQSAgICAgMHgwMDAzQwkvKiBQSFkgYWRkcmVzcyAtIFJXICovCi0jZGVmaW5lIEUxMDAwX01BTkMySCAgICAgMHgwNTg2MAkvKiBNYW5hZ21lbnQgQ29udHJvbCBUbyBIb3N0IC0gUlcgKi8KKyNkZWZpbmUgRTEwMDBfTUFOQzJIICAgICAweDA1ODYwCS8qIE1hbmFnZW1lbnQgQ29udHJvbCBUbyBIb3N0IC0gUlcgKi8KICNkZWZpbmUgRTEwMDBfU1dfRldfU1lOQyAweDA1QjVDCS8qIFNvZnR3YXJlLUZpcm13YXJlIFN5bmNocm9uaXphdGlvbiAtIFJXICovCiAKICNkZWZpbmUgRTEwMDBfR0NSICAgICAgIDB4MDVCMDAJLyogUENJLUV4IENvbnRyb2wgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYwppbmRleCBiZmFiMTQwLi40NzdlMDY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCkBAIC0yMDUsNyArMjA1LDcgQEAKIAkucHJvYmUgICAgPSBlMTAwMF9wcm9iZSwKIAkucmVtb3ZlICAgPSBfX2RldmV4aXRfcChlMTAwMF9yZW1vdmUpLAogI2lmZGVmIENPTkZJR19QTQotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KIAkuc3VzcGVuZCAgPSBlMTAwMF9zdXNwZW5kLAogCS5yZXN1bWUgICA9IGUxMDAwX3Jlc3VtZSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZTEwMDBlL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZTEwMDBlL25ldGRldi5jCmluZGV4IGEzOWQ0YTQuLjUwNmEwYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2UxMDAwZS9uZXRkZXYuYworKysgYi9kcml2ZXJzL25ldC9lMTAwMGUvbmV0ZGV2LmMKQEAgLTQ4ODYsNyArNDg4Niw3IEBACiAJaWYgKHNrYi0+cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQl0eF9mbGFncyB8PSBFMTAwMF9UWF9GTEFHU19JUFY0OwogCi0JLyogaWYgY291bnQgaXMgMCB0aGVuIG1hcHBpbmcgZXJyb3IgaGFzIG9jY3VyZWQgKi8KKwkvKiBpZiBjb3VudCBpcyAwIHRoZW4gbWFwcGluZyBlcnJvciBoYXMgb2NjdXJyZWQgKi8KIAljb3VudCA9IGUxMDAwX3R4X21hcChhZGFwdGVyLCBza2IsIGZpcnN0LCBtYXhfcGVyX3R4ZCwgbnJfZnJhZ3MsIG1zcyk7CiAJaWYgKGNvdW50KSB7CiAJCWUxMDAwX3R4X3F1ZXVlKGFkYXB0ZXIsIHR4X2ZsYWdzLCBjb3VudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lbmMyOGo2MF9ody5oIGIvZHJpdmVycy9uZXQvZW5jMjhqNjBfaHcuaAppbmRleCAxYTBiMjA5Li4yNWI0MWRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lbmMyOGo2MF9ody5oCisrKyBiL2RyaXZlcnMvbmV0L2VuYzI4ajYwX2h3LmgKQEAgLTMwMyw3ICszMDMsNyBAQAogLyogbWF4aW11bSBldGhlcm5ldCBmcmFtZSBsZW5ndGggKi8KICNkZWZpbmUgTUFYX0ZSQU1FTEVOCQkxNTE4CiAKLS8qIFByZWZlcmVkIGhhbGYgZHVwbGV4OiBMRURBOiBMaW5rIHN0YXR1cyBMRURCOiBSeC9UeCBhY3Rpdml0eSAqLworLyogUHJlZmVycmVkIGhhbGYgZHVwbGV4OiBMRURBOiBMaW5rIHN0YXR1cyBMRURCOiBSeC9UeCBhY3Rpdml0eSAqLwogI2RlZmluZSBFTkMyOEo2MF9MQU1QU19NT0RFCTB4MzQ3NgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aDE2aS5jIGIvZHJpdmVycy9uZXQvZXRoMTZpLmMKaW5kZXggZmI3MTdiZS4uMTJkMjhlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoMTZpLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoMTZpLmMKQEAgLTEzLDcgKzEzLDcgQEAKICAgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGZvbGxvd2luZyBjYXJkcyA6CiAJLSBJQ0wgRXRoZXJUZWFtIDE2aQogCS0gSUNMIEV0aGVyVGVhbSAzMiBFSVNBCi0JICAoVXNlcyB0cnVlIDMyIGJpdCB0cmFuc2ZlcnMgcmF0aGVyIHRoYW4gMTZpIGNvbXBhYmlsaXR5IG1vZGUpCisJICAoVXNlcyB0cnVlIDMyIGJpdCB0cmFuc2ZlcnMgcmF0aGVyIHRoYW4gMTZpIGNvbXBhdGliaWxpdHkgbW9kZSkKIAogICAgRXhhbXBsZSBNb2R1bGUgdXNhZ2U6CiAgICAgICAgIGluc21vZCBldGgxNmkubyBpbz0weDJhMCBtZWRpYXR5cGU9Ym5jCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhvYy5jIGIvZHJpdmVycy9uZXQvZXRob2MuYwppbmRleCBkYjAyOTBmLi5hODNkZDMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhvYy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aG9jLmMKQEAgLTU0Miw3ICs1NDIsNyBAQAogCiAJLyogRmlndXJlIG91dCB3aGF0IHRyaWdnZXJlZCB0aGUgaW50ZXJydXB0Li4uCiAJICogVGhlIHRyaWNreSBiaXQgaGVyZSBpcyB0aGF0IHRoZSBpbnRlcnJ1cHQgc291cmNlIGJpdHMgZ2V0Ci0JICogc2V0IGluIElOVF9TT1VSQ0UgZm9yIGFuIGV2ZW50IGlycmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoYXQKKwkgKiBzZXQgaW4gSU5UX1NPVVJDRSBmb3IgYW4gZXZlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoYXQKIAkgKiBldmVudCBpcyBtYXNrZWQgb3Igbm90LiAgVGh1cywgaW4gb3JkZXIgdG8gZmlndXJlIG91dCB3aGF0CiAJICogdHJpZ2dlcmVkIHRoZSBpbnRlcnJ1cHQsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBzb3VyY2VzCiAJICogZm9yIGFsbCBldmVudHMgdGhhdCBhcmUgY3VycmVudGx5IG1hc2tlZC4gIFRoaXMgYmVoYXZpb3VyCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZWMuaCBiL2RyaXZlcnMvbmV0L2ZlYy5oCmluZGV4IGFjZTMxOGQuLjhiMmM2ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZlYy5oCisrKyBiL2RyaXZlcnMvbmV0L2ZlYy5oCkBAIC05NywxMSArOTcsMTEgQEAKICAqCVRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgY291cnRlc3kgb2YgY29tbXByb2MuaCwgd2hpY2ggd2hlcmUKICAqCUNvcHlyaWdodCAoYykgMTk5NyBEYW4gTWFsZWsgKGRtYWxla0BqbGMubmV0KS4KICAqLwotI2RlZmluZSBCRF9TQ19FTVBUWSAgICAgKCh1c2hvcnQpMHg4MDAwKSAgICAgICAgLyogUmVjaWV2ZSBpcyBlbXB0eSAqLworI2RlZmluZSBCRF9TQ19FTVBUWSAgICAgKCh1c2hvcnQpMHg4MDAwKSAgICAgICAgLyogUmVjZWl2ZSBpcyBlbXB0eSAqLwogI2RlZmluZSBCRF9TQ19SRUFEWSAgICAgKCh1c2hvcnQpMHg4MDAwKSAgICAgICAgLyogVHJhbnNtaXQgaXMgcmVhZHkgKi8KICNkZWZpbmUgQkRfU0NfV1JBUCAgICAgICgodXNob3J0KTB4MjAwMCkgICAgICAgIC8qIExhc3QgYnVmZmVyIGRlc2NyaXB0b3IgKi8KICNkZWZpbmUgQkRfU0NfSU5UUlBUICAgICgodXNob3J0KTB4MTAwMCkgICAgICAgIC8qIEludGVycnVwdCBvbiBjaGFuZ2UgKi8KLSNkZWZpbmUgQkRfU0NfQ00gICAgICAgICgodXNob3J0KTB4MDIwMCkgICAgICAgIC8qIENvbnRpbm91cyBtb2RlICovCisjZGVmaW5lIEJEX1NDX0NNICAgICAgICAoKHVzaG9ydCkweDAyMDApICAgICAgICAvKiBDb250aW51b3VzIG1vZGUgKi8KICNkZWZpbmUgQkRfU0NfSUQgICAgICAgICgodXNob3J0KTB4MDEwMCkgICAgICAgIC8qIFJlYydkIHRvbyBtYW55IGlkbGVzICovCiAjZGVmaW5lIEJEX1NDX1AgICAgICAgICAoKHVzaG9ydCkweDAxMDApICAgICAgICAvKiB4bXQgcHJlYW1ibGUgKi8KICNkZWZpbmUgQkRfU0NfQlIgICAgICAgICgodXNob3J0KTB4MDAyMCkgICAgICAgIC8qIEJyZWFrIHJlY2VpdmVkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mb3JjZWRldGguYyBiL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCmluZGV4IDdiOTI4OTcuLmQ1YWI0ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCisrKyBiL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCkBAIC00NDAsNyArNDQwLDcgQEAKICNkZWZpbmUgTlZfUlgzX1ZMQU5fVEFHX1BSRVNFTlQgKDE8PDE2KQogI2RlZmluZSBOVl9SWDNfVkxBTl9UQUdfTUFTSwkoMHgwMDAwRkZGRikKIAotLyogTWlzY2VsYW5lb3VzIGhhcmR3YXJlIHJlbGF0ZWQgZGVmaW5lczogKi8KKy8qIE1pc2NlbGxhbmVvdXMgaGFyZHdhcmUgcmVsYXRlZCBkZWZpbmVzOiAqLwogI2RlZmluZSBOVl9QQ0lfUkVHU1pfVkVSMQkweDI3MAogI2RlZmluZSBOVl9QQ0lfUkVHU1pfVkVSMgkweDJkNAogI2RlZmluZSBOVl9QQ0lfUkVHU1pfVkVSMwkweDYwNApAQCAtMTQ4OCw3ICsxNDg4LDcgQEAKIAkJfQogCX0KIAotCS8qIHNvbWUgcGh5cyBjbGVhciBvdXQgcGF1c2UgYWR2ZXJ0aXNtZW50IG9uIHJlc2V0LCBzZXQgaXQgYmFjayAqLworCS8qIHNvbWUgcGh5cyBjbGVhciBvdXQgcGF1c2UgYWR2ZXJ0aXNlbWVudCBvbiByZXNldCwgc2V0IGl0IGJhY2sgKi8KIAltaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX0FEVkVSVElTRSwgcmVnKTsKIAogCS8qIHJlc3RhcnQgYXV0byBuZWdvdGlhdGlvbiwgcG93ZXIgZG93biBwaHkgKi8KQEAgLTI1MzUsNyArMjUzNSw3IEBACiAJZWxzZQogCQludl90eF9kb25lX29wdGltaXplZChkZXYsIG5wLT50eF9yaW5nX3NpemUpOwogCi0JLyogc2F2ZSBjdXJyZW50IEhXIHBvc3Rpb24gKi8KKwkvKiBzYXZlIGN1cnJlbnQgSFcgcG9zaXRpb24gKi8KIAlpZiAobnAtPnR4X2NoYW5nZV9vd25lcikKIAkJcHV0X3R4LmV4ID0gbnAtPnR4X2NoYW5nZV9vd25lci0+Zmlyc3RfdHhfZGVzYzsKIAllbHNlCkBAIC00MDUzLDcgKzQwNTMsNyBAQAogCiAJfSBlbHNlIGlmIChlY21kLT5hdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSkgewogCQkvKiBOb3RlOiBhdXRvbmVnb3RpYXRpb24gZGlzYWJsZSwgc3BlZWQgMTAwMCBpbnRlbnRpb25hbGx5Ci0JCSAqIGZvcmJpZGRlbiAtIG5vb25lIHNob3VsZCBuZWVkIHRoYXQuICovCisJCSAqIGZvcmJpZGRlbiAtIG5vIG9uZSBzaG91bGQgbmVlZCB0aGF0LiAqLwogCiAJCWlmIChlY21kLT5zcGVlZCAhPSBTUEVFRF8xMCAmJiBlY21kLT5zcGVlZCAhPSBTUEVFRF8xMDApCiAJCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTQxMDMsNyArNDEwMyw3IEBACiAJCQlhZHYgfD0gQURWRVJUSVNFXzEwMEhBTEY7CiAJCWlmIChlY21kLT5hZHZlcnRpc2luZyAmIEFEVkVSVElTRURfMTAwYmFzZVRfRnVsbCkKIAkJCWFkdiB8PSBBRFZFUlRJU0VfMTAwRlVMTDsKLQkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSAgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KKwkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSAgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzZW1lbnRzIGJ1dCBkaXNhYmxlIHR4IHBhdXNlICovCiAJCQlhZHYgfD0gIEFEVkVSVElTRV9QQVVTRV9DQVAgfCBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKIAkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfVFhfUkVRKQogCQkJYWR2IHw9ICBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKQEAgLTQxNDgsNyArNDE0OCw3IEBACiAJCWlmIChlY21kLT5zcGVlZCA9PSBTUEVFRF8xMDAgJiYgZWNtZC0+ZHVwbGV4ID09IERVUExFWF9GVUxMKQogCQkJYWR2IHw9IEFEVkVSVElTRV8xMDBGVUxMOwogCQlucC0+cGF1c2VfZmxhZ3MgJj0gfihOVl9QQVVTRUZSQU1FX0FVVE9ORUd8TlZfUEFVU0VGUkFNRV9SWF9FTkFCTEV8TlZfUEFVU0VGUkFNRV9UWF9FTkFCTEUpOwotCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9SWF9SRVEpIHsvKiBmb3Igcnggd2Ugc2V0IGJvdGggYWR2ZXJ0aXNtZW50cyBidXQgZGlzYWJsZSB0eCBwYXVzZSAqLworCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9SWF9SRVEpIHsvKiBmb3Igcnggd2Ugc2V0IGJvdGggYWR2ZXJ0aXNlbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KIAkJCWFkdiB8PSAgQURWRVJUSVNFX1BBVVNFX0NBUCB8IEFEVkVSVElTRV9QQVVTRV9BU1lNOwogCQkJbnAtPnBhdXNlX2ZsYWdzIHw9IE5WX1BBVVNFRlJBTUVfUlhfRU5BQkxFOwogCQl9CkBAIC00NDQ5LDcgKzQ0NDksNyBAQAogCiAJCWFkdiA9IG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlfQURWRVJUSVNFLCBNSUlfUkVBRCk7CiAJCWFkdiAmPSB+KEFEVkVSVElTRV9QQVVTRV9DQVAgfCBBRFZFUlRJU0VfUEFVU0VfQVNZTSk7Ci0JCWlmIChucC0+cGF1c2VfZmxhZ3MgJiBOVl9QQVVTRUZSQU1FX1JYX1JFUSkgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KKwkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSAvKiBmb3Igcnggd2Ugc2V0IGJvdGggYWR2ZXJ0aXNlbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KIAkJCWFkdiB8PSAgQURWRVJUSVNFX1BBVVNFX0NBUCB8IEFEVkVSVElTRV9QQVVTRV9BU1lNOwogCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9UWF9SRVEpCiAJCQlhZHYgfD0gIEFEVkVSVElTRV9QQVVTRV9BU1lNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ2lhbmZhci5oIGIvZHJpdmVycy9uZXQvZ2lhbmZhci5oCmluZGV4IGVjNWQ1OTUuLmIyZmU3ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2dpYW5mYXIuaAorKysgYi9kcml2ZXJzL25ldC9naWFuZmFyLmgKQEAgLTEwNDMsNyArMTA0Myw3IEBACiB9OwogCiAvKiBTdHJ1Y3Qgc3RvbGVuIGFsbW9zdCBjb21wbGV0ZWx5IChhbmQgc2hhbWVsZXNzbHkpIGZyb20gdGhlIEZDQyBlbmV0IHNvdXJjZQotICogKE9rLCB0aGF0J3Mgbm90IHNvIHRydWUgYW55bW9yZSwgYnV0IHRoZXJlIGlzIGEgZmFtaWx5IHJlc2VtYmxlbmNlKQorICogKE9rLCB0aGF0J3Mgbm90IHNvIHRydWUgYW55bW9yZSwgYnV0IHRoZXJlIGlzIGEgZmFtaWx5IHJlc2VtYmxhbmNlKQogICogVGhlIEdGQVIgYnVmZmVyIGRlc2NyaXB0b3JzIHRyYWNrIHRoZSByaW5nIGJ1ZmZlcnMuICBUaGUgcnhfYmRfYmFzZQogICogYW5kIHR4X2JkX2Jhc2UgYWx3YXlzIHBvaW50IHRvIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIGJ1ZmZlci4KICAqIFRoZSBkaXJ0eV90eCB0cmFja3MgdGhlIGN1cnJlbnQgYnVmZmVyIHRoYXQgaXMgYmVpbmcgc2VudCBieSB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vTWFrZWZpbGUKaW5kZXggOWRlZjg2Ny4uMTA0MDk2MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbmV0L2hhbXJhZGlvL01ha2VmaWxlCkBAIC0zLDcgKzMsNyBAQAogIwogIwogIyAxOTk3MTEzMCAJTW92ZWQgdGhlIGFtYXRldXIgcmFkaW8gcmVsYXRlZCBuZXR3b3JrIGRyaXZlcnMgZnJvbSAKLSMJCWRyaXZlcnMvbmV0LyB0byBkcml2ZXJzL2hhbXJhZGlvIGZvciBlYXNpZXIgbWFpbnRhaW5hbmNlLgorIwkJZHJpdmVycy9uZXQvIHRvIGRyaXZlcnMvaGFtcmFkaW8gZm9yIGVhc2llciBtYWludGVuYW5jZS4KICMgICAgICAgICAgICAgICBKb2VyZyBSZXV0ZXIgREwxQktFIDxqcmV1dGVyQHlhaW5hLmRlPgogIwogIyAyMDAwMDgwNglSZXdyaXR0ZW4gdG8gdXNlIGxpc3RzIGluc3RlYWQgb2YgaWYtc3RhdGVtZW50cy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbS5jIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8veWFtLmMKaW5kZXggN2Q5Y2VkMC4uOTZhOThkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaGFtcmFkaW8veWFtLmMKKysrIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8veWFtLmMKQEAgLTMwLDcgKzMwLDcgQEAKICAqICAgMC4xIEYxT0FUIDA3LjA2Ljk4ICBBZGQgdGltZXIgcG9sbGluZyByb3V0aW5lIGZvciBjaGFubmVsIGFyYml0cmF0aW9uCiAgKiAgIDAuMiBGNkZCQiAwOC4wNi45OCAgQWRkZWQgZGVsYXkgYWZ0ZXIgRlBHQSBwcm9ncmFtbWluZwogICogICAwLjMgRjZGQkIgMjkuMDcuOTggIERlbGF5ZWQgUFRUIGltcGxlbWVudGF0aW9uIGZvciBkdXBtb2RlPTIKLSAqICAgMC40IEY2RkJCIDMwLjA3Ljk4ICBBZGRlZCBUeFRhaWwsIFNsb3R0aW1lIGFuZCBQZXJzaXN0YW5jZQorICogICAwLjQgRjZGQkIgMzAuMDcuOTggIEFkZGVkIFR4VGFpbCwgU2xvdHRpbWUgYW5kIFBlcnNpc3RlbmNlCiAgKiAgIDAuNSBGNkZCQiAwMS4wOC45OCAgU2hhcmVkIElSUXMsIC9wcm9jL25ldCBhbmQgbmV0d29yayBzdGF0aXN0aWNzCiAgKiAgIDAuNiBGNkZCQiAyNS4wOC45OCAgQWRkZWQgMTIwMEJkcyBmb3JtYXQKICAqICAgMC43IEY2RkJCIDEyLjA5Ljk4ICBBZGRlZCB0byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hwMTAwLmMgYi9kcml2ZXJzL25ldC9ocDEwMC5jCmluZGV4IDhlMmM0NjAuLjhlMTBkMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hwMTAwLmMKKysrIGIvZHJpdmVycy9uZXQvaHAxMDAuYwpAQCAtMTgwLDggKzE4MCw4IEBACiAKIAl1X2ludCAqcGFnZV92YWRkcl9hbGduOwkvKiBBbGlnbmVkIHZpcnR1YWwgYWRkcmVzcyBvZiBhbGxvY2F0ZWQgcGFnZSAqLwogCXVfbG9uZyB3aGF0ZXZlcl9vZmZzZXQ7CS8qIE9mZnNldCB0byBidXMvcGh5cy9kbWEgYWRkcmVzcyAqLwotCWludCByeHJjb21taXQ7CQkvKiAjIFJ4IFBETHMgY29tbWl0ZWQgdG8gYWRhcHRlciAqLwotCWludCB0eHJjb21taXQ7CQkvKiAjIFR4IFBETHMgY29tbWl0ZWQgdG8gYWRhcHRlciAqLworCWludCByeHJjb21taXQ7CQkvKiAjIFJ4IFBETHMgY29tbWl0dGVkIHRvIGFkYXB0ZXIgKi8KKwlpbnQgdHhyY29tbWl0OwkJLyogIyBUeCBQRExzIGNvbW1pdHRlZCB0byBhZGFwdGVyICovCiB9OwogCiAvKgpAQCAtNzE2LDcgKzcxNiw3IEBACiAJICogaW1wbGVtZW50ZWQvdGVzdGVkIG9ubHkgd2l0aCB0aGUgbGFzc2VuIGNoaXAgYW55d2F5Li4uICovCiAJaWYgKGxwLT5tb2RlID09IDEpIHsJLyogYnVzbWFzdGVyICovCiAJCWRtYV9hZGRyX3QgcGFnZV9iYWRkcjsKLQkJLyogR2V0IHBoeXNpY2FsbHkgY29udGlub3VzIG1lbW9yeSBmb3IgVFggJiBSWCBQRExzICAgICovCisJCS8qIEdldCBwaHlzaWNhbGx5IGNvbnRpbnVvdXMgbWVtb3J5IGZvciBUWCAmIFJYIFBETHMgICAgKi8KIAkJLyogQ29udmVyc2lvbiB0byBuZXcgUENJIEFQSSA6CiAJCSAqIFBhZ2VzIGFyZSBhbHdheXMgYWxpZ25lZCBhbmQgemVyb2VkLCBubyBuZWVkIHRvIGl0IG91cnNlbGYuCiAJCSAqIERvYyBzYXlzIHNob3VsZCBiZSBPSyBmb3IgRUlTQSBidXMgYXMgd2VsbCAtIEplYW4gSUkgKi8KQEAgLTE1OTYsNyArMTU5Niw3IEBACiAKIC8qIGNsZWFuX3R4cmluZyBjaGVja3MgaWYgcGFja2V0cyBoYXZlIGJlZW4gc2VudCBieSB0aGUgY2FyZCBieSByZWFkaW5nCiAgKiB0aGUgVFhfUERMIHJlZ2lzdGVyIGZyb20gdGhlIHBlcmZvcm1hbmNlIHBhZ2UgYW5kIGNvbXBhcmluZyBpdCB0byB0aGUKLSAqIG51bWJlciBvZiBjb21taXRlZCBwYWNrZXRzLiBJdCB0aGVuIGZyZWVzIHRoZSBza2IncyBvZiB0aGUgcGFja2V0cyB0aGF0CisgKiBudW1iZXIgb2YgY29tbWl0dGVkIHBhY2tldHMuIEl0IHRoZW4gZnJlZXMgdGhlIHNrYidzIG9mIHRoZSBwYWNrZXRzIHRoYXQKICAqIG9idmlvdXNseSBoYXZlIGJlZW4gc2VudCB0byB0aGUgbmV0d29yay4KICAqCiAgKiBOZWVkcyB0aGUgUEVSRk9STUFOQ0UgcGFnZSBzZWxlY3RlZC4KQEAgLTE2MTcsNyArMTYxNyw3IEBACiAKICNpZmRlZiBIUDEwMF9ERUJVRwogCWlmIChkb25lY291bnQgPiBNQVhfVFhfUERMKQotCQlwcmludGsoImhwMTAwOiAlczogV2FybmluZzogTW9yZSBQRExzIHRyYW5zbWl0dGVkIHRoYW4gY29tbWl0ZWQgdG8gY2FyZD8/P1xuIiwgZGV2LT5uYW1lKTsKKwkJcHJpbnRrKCJocDEwMDogJXM6IFdhcm5pbmc6IE1vcmUgUERMcyB0cmFuc21pdHRlZCB0aGFuIGNvbW1pdHRlZCB0byBjYXJkPz8/XG4iLCBkZXYtPm5hbWUpOwogI2VuZGlmCiAKIAlmb3IgKDsgMCAhPSBkb25lY291bnQ7IGRvbmVjb3VudC0tKSB7CkBAIC0xNzY1LDcgKzE3NjUsNyBAQAogICogUmVjZWl2ZSBGdW5jdGlvbiAoTm9uLUJ1c21hc3RlciBtb2RlKQogICogQ2FsbGVkIHdoZW4gYW4gIlJlY2VpdmUgUGFja2V0IiBpbnRlcnJ1cHQgb2NjdXJzLCBpLmUuIHRoZSByZWNlaXZlCiAgKiBwYWNrZXQgY291bnRlciBpcyBub24temVyby4KLSAqIEZvciBub24tYnVzbWFzdGVyLCB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHdob2xlIHdvcmsgb2YgdHJhbnNmZXJpbmcKKyAqIEZvciBub24tYnVzbWFzdGVyLCB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHdob2xlIHdvcmsgb2YgdHJhbnNmZXJyaW5nCiAgKiB0aGUgcGFja2V0IHRvIHRoZSBob3N0IG1lbW9yeSBhbmQgdGhlbiB1cCB0byBoaWdoZXIgbGF5ZXJzIHZpYSBza2IKICAqIGFuZCBuZXRpZl9yeC4KICAqLwpAQCAtMTg5Miw3ICsxODkyLDcgQEAKIAkJLyogUlhfUEtUX0NOVCBzdGF0ZXMgaG93IG1hbnkgUERMcyBhcmUgY3VycmVudGx5IGZvcm1hdHRlZCBhbmQgYXZhaWxhYmxlIHRvCiAJCSAqIHRoZSBjYXJkcyBCTSBlbmdpbmUgKi8KIAlpZiAoKGhwMTAwX2ludyhSWF9QS1RfQ05UKSAmIDB4MDBmZikgPj0gbHAtPnJ4cmNvbW1pdCkgewotCQlwcmludGsoImhwMTAwOiAlczogTW9yZSBwYWNrZXRzIHJlY2VpdmVkIHRoYW4gY29tbWl0ZWQ/IFJYX1BLVF9DTlQ9MHgleCwgY29tbWl0PTB4JXhcbiIsCisJCXByaW50aygiaHAxMDA6ICVzOiBNb3JlIHBhY2tldHMgcmVjZWl2ZWQgdGhhbiBjb21taXR0ZWQ/IFJYX1BLVF9DTlQ9MHgleCwgY29tbWl0PTB4JXhcbiIsCiAJCQkJICAgICBkZXYtPm5hbWUsIGhwMTAwX2ludyhSWF9QS1RfQ05UKSAmIDB4MDBmZiwKIAkJCQkgICAgIGxwLT5yeHJjb21taXQpOwogCQlyZXR1cm47CkBAIC0yMjU2LDcgKzIyNTYsNyBAQAogCQlpZiAobHAtPm1vZGUgIT0gMSkJLyogbm9uIGJ1c21hc3RlciAqLwogCQkJaHAxMDBfcngoZGV2KTsKIAkJZWxzZSBpZiAoISh2YWwgJiBIUDEwMF9SWF9QRExfRklMTF9DT01QTCkpIHsKLQkJCS8qIFNob3VsZG50IGhhcHBlbiAtIG1heWJlIHdlIG1pc3NlZCBhIFJYX1BETF9GSUxMIEludGVycnVwdD8gICovCisJCQkvKiBTaG91bGRuJ3QgaGFwcGVuIC0gbWF5YmUgd2UgbWlzc2VkIGEgUlhfUERMX0ZJTEwgSW50ZXJydXB0PyAgKi8KIAkJCWhwMTAwX3J4X2JtKGRldik7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ocDEwMC5oIGIvZHJpdmVycy9uZXQvaHAxMDAuaAppbmRleCBlNmNhMTI4Li5iNjBlOTZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ocDEwMC5oCisrKyBiL2RyaXZlcnMvbmV0L2hwMTAwLmgKQEAgLTEwOSw3ICsxMDksNyBAQAogI2RlZmluZSBIUDEwMF9SRUdfTUFDX0NGR18yCTB4MGQJLyogUlc6ICg4KSBNaXNjIE1BQyBmdW5jdGlvbnMgICAgICAgICovCiAjZGVmaW5lIEhQMTAwX1JFR19NQUNfQ0ZHXzMgICAgIDB4MGUJLyogUlc6ICg4KSBNaXNjIE1BQyBmdW5jdGlvbnMgKi8KICNkZWZpbmUgSFAxMDBfUkVHX01BQ19DRkdfNCAgICAgMHgwZgkvKiBSOiAgKDgpIE1pc2MgTUFDIHN0YXRlcyAqLwotI2RlZmluZSBIUDEwMF9SRUdfRFJPUFBFRAkweDEwCS8qIFI6ICAoMTYpLDExOjAgUGt0cyBjYW50IGZpdCBpbiBtZW0gKi8KKyNkZWZpbmUgSFAxMDBfUkVHX0RST1BQRUQJMHgxMAkvKiBSOiAgKDE2KSwxMTowIFBrdHMgY2FuJ3QgZml0IGluIG1lbSAqLwogI2RlZmluZSBIUDEwMF9SRUdfQ1JDCQkweDEyCS8qIFI6ICAoOCkgUGt0cyB3aXRoIENSQyAgICAgICAgICAgICAqLwogI2RlZmluZSBIUDEwMF9SRUdfQUJPUlQJCTB4MTMJLyogUjogICg4KSBBYm9ydGVkIFR4IHBrdHMgICAgICAgICAgICovCiAjZGVmaW5lIEhQMTAwX1JFR19UUkFJTl9SRVFVRVNUIDB4MTQJLyogUlc6ICgxNikgRW5kbm9kZSBNQUMgcmVnaXN0ZXIuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pYm1fbmV3ZW1hYy90YWguYyBiL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jCmluZGV4IDhlYWQ2YTkuLjVmNTFiZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jCisrKyBiL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jCkBAIC02MCw3ICs2MCw3IEBACiAJCXByaW50ayhLRVJOX0VSUiAiJXM6IHJlc2V0IHRpbWVvdXRcbiIsCiAJCQlvZmRldi0+ZGV2Lm9mX25vZGUtPmZ1bGxfbmFtZSk7CiAKLQkvKiAxMEtCIFRBSCBUWCBGSUZPIGFjY29tb2RhdGVzIHRoZSBtYXggTVRVIG9mIDkwMDAgKi8KKwkvKiAxMEtCIFRBSCBUWCBGSUZPIGFjY29tbW9kYXRlcyB0aGUgbWF4IE1UVSBvZiA5MDAwICovCiAJb3V0X2JlMzIoJnAtPm1yLAogCQkgVEFIX01SX0NWUiB8IFRBSF9NUl9TVF83NjggfCBUQUhfTVJfVEZTXzEwS0IgfCBUQUhfTVJfRFRGUCB8CiAJCSBUQUhfTVJfRElHKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2libWxhbmEuYyBiL2RyaXZlcnMvbmV0L2libWxhbmEuYwppbmRleCA5NGQ5OTY5Li44ZmY2OGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pYm1sYW5hLmMKKysrIGIvZHJpdmVycy9uZXQvaWJtbGFuYS5jCkBAIC01Myw3ICs1Myw3IEBACiAJc3RpbGwgd29yayB3aXRoIDIuMC54Li4uLgogICBKYW4gMjh0aCwgMjAwMAogCWluIExpbnV4IDIuMi4xMywgdGhlIHZlcnNpb24uaCBmaWxlIG15c3RlcmlvdXNseSBkaWRuJ3QgZ2V0Ci0JaW5jbHVkZWQuICBBZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoaXMuICBGdXRoZXJtb3JlLCBpdCBub3cKKwlpbmNsdWRlZC4gIEFkZGVkIGEgd29ya2Fyb3VuZCBmb3IgdGhpcy4gIEZ1cnRoZXJtb3JlLCBpdCBub3cKIAlub3Qgb25seSBjb21waWxlcyBhcyBhIG1vZHVsZXMgOy0pCiAgIEphbiAzMHRoLCAyMDAwCiAJbmV3ZXIga2VybmVscyBhdXRvbWF0aWNhbGx5IHByb2JlIG1vcmUgdGhhbiBvbmUgYm9hcmQsIHNvIHRoZQpAQCAtNDgxLDcgKzQ4MSw3IEBACiAJaWYgKChkZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSB8fCBuZXRkZXZfbWNfY291bnQoZGV2KSA+IGNhbWNudCkKIAkJcmNydmFsIHw9IFJDUkVHX0FNQzsKIAotCS8qIHByb21pc2NvdXMgbW9kZSA/ICovCisJLyogcHJvbWlzY3VvdXMgbW9kZSA/ICovCiAKIAlpZiAoZGV2LT5mbGFncyAmIElGRl9QUk9NSVNDKQogCQlyY3J2YWwgfD0gUkNSRUdfUFJPOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWJtbGFuYS5oIGIvZHJpdmVycy9uZXQvaWJtbGFuYS5oCmluZGV4IGFhM2RkYmQuLmFjY2Q1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2libWxhbmEuaAorKysgYi9kcml2ZXJzL25ldC9pYm1sYW5hLmgKQEAgLTkwLDcgKzkwLDcgQEAKICNkZWZpbmUgUkNSRUdfRVJSICAgICAgICAweDgwMDAJLyogYWNjZXB0IGRhbWFnZWQgYW5kIGNvbGxpZGVkIHBrdHMgKi8KICNkZWZpbmUgUkNSRUdfUk5UICAgICAgICAweDQwMDAJLyogYWNjZXB0IHBhY2tldHMgdGhhdCBhcmUgPCA2NCAgICAgKi8KICNkZWZpbmUgUkNSRUdfQlJEICAgICAgICAweDIwMDAJLyogYWNjZXB0IGJyb2FkY2FzdHMgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgUkNSRUdfUFJPICAgICAgICAweDEwMDAJLyogcHJvbWlzY291cyBtb2RlICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUkNSRUdfUFJPICAgICAgICAweDEwMDAJLyogcHJvbWlzY3VvdXMgbW9kZSAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFJDUkVHX0FNQyAgICAgICAgMHgwODAwCS8qIGFjY2VwdCBhbGwgbXVsdGljYXN0cyAgICAgICAgICAgICovCiAjZGVmaW5lIFJDUkVHX0xCX05PTkUgICAgMHgwMDAwCS8qIG5vIGxvb3BiYWNrICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFJDUkVHX0xCX01BQyAgICAgMHgwMjAwCS8qIE1BQyBsb29wYmFjayAgICAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfbWFjLmMgYi9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfbWFjLmMKaW5kZXggOTBjNWUwMS4uY2U4MjU1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWdiL2UxMDAwX21hYy5jCisrKyBiL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9tYWMuYwpAQCAtMTgxLDcgKzE4MSw3IEBACiAgKiAgYWRkcmVzcyBhbmQgbXVzdCBvdmVycmlkZSB0aGUgYWN0dWFsIHBlcm1hbmVudCBNQUMgYWRkcmVzcy4gIElmIGFuCiAgKiAgYWx0ZXJuYXRlIE1BQyBhZGRyZXNzIGlzIGZvcHVuZCBpdCBpcyBzYXZlZCBpbiB0aGUgaHcgc3RydWN0IGFuZAogICogIHByZ3JhbW1lZCBpbnRvIFJBUjAgYW5kIHRoZSBjdW50aW9uIHJldHVybnMgc3VjY2Vzcywgb3RoZXJ3aXNlIHRoZQotICogIGZ1Y250aW9uIHJldHVybnMgYW4gZXJyb3IuCisgKiAgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci4KICAqKi8KIHMzMiBpZ2JfY2hlY2tfYWx0X21hY19hZGRyKHN0cnVjdCBlMTAwMF9odyAqaHcpCiB7CkBAIC05ODIsNyArOTgyLDcgQEAKIH0KIAogLyoqCi0gKiAgaWdiX2dldF9zcGVlZF9hbmRfZHVwbGV4X2NvcHBlciAtIFJldHJlaXZlIGN1cnJlbnQgc3BlZWQvZHVwbGV4CisgKiAgaWdiX2dldF9zcGVlZF9hbmRfZHVwbGV4X2NvcHBlciAtIFJldHJpZXZlIGN1cnJlbnQgc3BlZWQvZHVwbGV4CiAgKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBIVyBzdHJ1Y3R1cmUKICAqICBAc3BlZWQ6IHN0b3JlcyB0aGUgY3VycmVudCBzcGVlZAogICogIEBkdXBsZXg6IHN0b3JlcyB0aGUgY3VycmVudCBkdXBsZXgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9waHkuYyBiL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9waHkuYwppbmRleCA2Njk0YmYzLi5kNjM5NzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvaWdiL2UxMDAwX3BoeS5jCkBAIC0xNDIxLDcgKzE0MjEsNyBAQAogfQogCiAvKioKLSAqICBpZ2JfY2hlY2tfZG93bnNoaWZ0IC0gQ2hlY2tzIHdoZXRoZXIgYSBkb3duc2hpZnQgaW4gc3BlZWQgb2NjdXJlZAorICogIGlnYl9jaGVja19kb3duc2hpZnQgLSBDaGVja3Mgd2hldGhlciBhIGRvd25zaGlmdCBpbiBzcGVlZCBvY2N1cnJlZAogICogIEBodzogcG9pbnRlciB0byB0aGUgSFcgc3RydWN0dXJlCiAgKgogICogIFN1Y2Nlc3MgcmV0dXJucyAwLCBGYWlsdXJlIHJldHVybnMgMQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWdiL2lnYl9tYWluLmMgYi9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYwppbmRleCAzZDg1MGFmLi4wZGZkMWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYworKysgYi9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYwpAQCAtMjAwLDcgKzIwMCw3IEBACiAJLnByb2JlICAgID0gaWdiX3Byb2JlLAogCS5yZW1vdmUgICA9IF9fZGV2ZXhpdF9wKGlnYl9yZW1vdmUpLAogI2lmZGVmIENPTkZJR19QTQotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KIAkuc3VzcGVuZCAgPSBpZ2Jfc3VzcGVuZCwKIAkucmVzdW1lICAgPSBpZ2JfcmVzdW1lLAogI2VuZGlmCkBAIC0yMjkyLDcgKzIyOTIsNyBAQAogCQkvKioKIAkJICogU2NhbGUgdGhlIE5JQyBjbG9jayBjeWNsZSBieSBhIGxhcmdlIGZhY3RvciBzbyB0aGF0CiAJCSAqIHJlbGF0aXZlbHkgc21hbGwgY2xvY2sgY29ycmVjdGlvbnMgY2FuIGJlIGFkZGVkIG9yCi0JCSAqIHN1YnN0cmFjdGVkIGF0IGVhY2ggY2xvY2sgdGljay4gVGhlIGRyYXdiYWNrcyBvZiBhIGxhcmdlCisJCSAqIHN1YnRyYWN0ZWQgYXQgZWFjaCBjbG9jayB0aWNrLiBUaGUgZHJhd2JhY2tzIG9mIGEgbGFyZ2UKIAkJICogZmFjdG9yIGFyZSBhKSB0aGF0IHRoZSBjbG9jayByZWdpc3RlciBvdmVyZmxvd3MgbW9yZSBxdWlja2x5CiAJCSAqIChub3Qgc3VjaCBhIGJpZyBkZWFsKSBhbmQgYikgdGhhdCB0aGUgaW5jcmVtZW50IHBlciB0aWNrIGhhcwogCQkgKiB0byBmaXQgaW50byAyNCBiaXRzLiAgQXMgYSByZXN1bHQgd2UgbmVlZCB0byB1c2UgYSBzaGlmdCBvZgpAQCAtMzQwOSw3ICszNDA5LDcgQEAKIAkJfSBlbHNlIHsKIAkJCS8qCiAJCQkgKiBXcml0ZSBhZGRyZXNzZXMgdG8gdGhlIE1UQSwgaWYgdGhlIGF0dGVtcHQgZmFpbHMKLQkJCSAqIHRoZW4gd2Ugc2hvdWxkIGp1c3QgdHVybiBvbiBwcm9taXNjb3VzIG1vZGUgc28KKwkJCSAqIHRoZW4gd2Ugc2hvdWxkIGp1c3QgdHVybiBvbiBwcm9taXNjdW91cyBtb2RlIHNvCiAJCQkgKiB0aGF0IHdlIGNhbiBhdCBsZWFzdCByZWNlaXZlIG11bHRpY2FzdCB0cmFmZmljCiAJCQkgKi8KIAkJCWNvdW50ID0gaWdiX3dyaXRlX21jX2FkZHJfbGlzdChuZXRkZXYpOwpAQCAtMzQyMyw3ICszNDIzLDcgQEAKIAkJLyoKIAkJICogV3JpdGUgYWRkcmVzc2VzIHRvIGF2YWlsYWJsZSBSQVIgcmVnaXN0ZXJzLCBpZiB0aGVyZSBpcyBub3QKIAkJICogc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSBhbGwgdGhlIGFkZHJlc3NlcyB0aGVuIGVuYWJsZQotCQkgKiB1bmljYXN0IHByb21pc2NvdXMgbW9kZQorCQkgKiB1bmljYXN0IHByb21pc2N1b3VzIG1vZGUKIAkJICovCiAJCWNvdW50ID0gaWdiX3dyaXRlX3VjX2FkZHJfbGlzdChuZXRkZXYpOwogCQlpZiAoY291bnQgPCAwKSB7CkBAIC00MzE3LDcgKzQzMTcsNyBAQAogCiAJLyoKIAkgKiBjb3VudCByZWZsZWN0cyBkZXNjcmlwdG9ycyBtYXBwZWQsIGlmIDAgb3IgbGVzcyB0aGVuIG1hcHBpbmcgZXJyb3IKLQkgKiBoYXMgb2NjdXJlZCBhbmQgd2UgbmVlZCB0byByZXdpbmQgdGhlIGRlc2NyaXB0b3IgcXVldWUKKwkgKiBoYXMgb2NjdXJyZWQgYW5kIHdlIG5lZWQgdG8gcmV3aW5kIHRoZSBkZXNjcmlwdG9yIHF1ZXVlCiAJICovCiAJY291bnQgPSBpZ2JfdHhfbWFwX2Fkdih0eF9yaW5nLCBza2IsIGZpcnN0KTsKIAlpZiAoIWNvdW50KSB7CkBAIC01MzUyLDggKzUzNTIsOCBAQAogICogIFRoZSB1bmljYXN0IHRhYmxlIGFkZHJlc3MgaXMgYSByZWdpc3RlciBhcnJheSBvZiAzMi1iaXQgcmVnaXN0ZXJzLgogICogIFRoZSB0YWJsZSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGEgd2F5IHNpbWlsYXIgdG8gaG93IHRoZSBNVEEgaXMgdXNlZAogICogIGhvd2V2ZXIgZHVlIHRvIGNlcnRhaW4gbGltaXRhdGlvbnMgaW4gdGhlIGhhcmR3YXJlIGl0IGlzIG5lY2Vzc2FyeSB0bwotICogIHNldCBhbGwgdGhlIGhhc2ggYml0cyB0byAxIGFuZCB1c2UgdGhlIFZNT0xSIFJPUEUgYml0IGFzIGEgcHJvbWlzY291cwotICogIGVuYWJsZSBiaXQgdG8gYWxsb3cgdmxhbiB0YWcgc3RyaXBwaW5nIHdoZW4gcHJvbWlzY291cyBtb2RlIGlzIGVuYWJsZWQKKyAqICBzZXQgYWxsIHRoZSBoYXNoIGJpdHMgdG8gMSBhbmQgdXNlIHRoZSBWTU9MUiBST1BFIGJpdCBhcyBhIHByb21pc2N1b3VzCisgKiAgZW5hYmxlIGJpdCB0byBhbGxvdyB2bGFuIHRhZyBzdHJpcHBpbmcgd2hlbiBwcm9taXNjdW91cyBtb2RlIGlzIGVuYWJsZWQKICAqKi8KIHN0YXRpYyB2b2lkIGlnYl9zZXRfdXRhKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lnYnZmL25ldGRldi5jIGIvZHJpdmVycy9uZXQvaWdidmYvbmV0ZGV2LmMKaW5kZXggNmNjYzMyZi4uMWQwNGNhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWdidmYvbmV0ZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvaWdidmYvbmV0ZGV2LmMKQEAgLTIyMjcsNyArMjIyNyw3IEBACiAKIAkvKgogCSAqIGNvdW50IHJlZmxlY3RzIGRlc2NyaXB0b3JzIG1hcHBlZCwgaWYgMCB0aGVuIG1hcHBpbmcgZXJyb3IKLQkgKiBoYXMgb2NjdXJlZCBhbmQgd2UgbmVlZCB0byByZXdpbmQgdGhlIGRlc2NyaXB0b3IgcXVldWUKKwkgKiBoYXMgb2NjdXJyZWQgYW5kIHdlIG5lZWQgdG8gcmV3aW5kIHRoZSBkZXNjcmlwdG9yIHF1ZXVlCiAJICovCiAJY291bnQgPSBpZ2J2Zl90eF9tYXBfYWR2KGFkYXB0ZXIsIHR4X3JpbmcsIHNrYiwgZmlyc3QpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcGcuYyBiL2RyaXZlcnMvbmV0L2lwZy5jCmluZGV4IGE1YjBmMGUuLjU4Y2QzMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lwZy5jCisrKyBiL2RyaXZlcnMvbmV0L2lwZy5jCkBAIC00ODYsMTQgKzQ4NiwxNCBAQAogCXBoeWN0cmwgPSBpcGdfcjgoUEhZX0NUUkwpOwogCW1hY19jdHJsX3ZhbCA9IGlwZ19yMzIoTUFDX0NUUkwpOwogCi0JLyogU2V0IGZsYWdzIGZvciB1c2UgaW4gcmVzb2x2aW5nIGF1dG8tbmVnb3RhdGlvbiwgYXNzdW1pbmcKKwkvKiBTZXQgZmxhZ3MgZm9yIHVzZSBpbiByZXNvbHZpbmcgYXV0by1uZWdvdGlhdGlvbiwgYXNzdW1pbmcKIAkgKiBub24tMTAwME1icHMsIGhhbGYgZHVwbGV4LCBubyBmbG93IGNvbnRyb2wuCiAJICovCiAJZnVsbGR1cGxleCA9IDA7CiAJdHhmbG93Y29udHJvbCA9IDA7CiAJcnhmbG93Y29udHJvbCA9IDA7CiAKLQkvKiBUbyBhY2NvbW9kYXRlIGEgcHJvYmxlbSBpbiAxME1icHMgb3BlcmF0aW9uLAorCS8qIFRvIGFjY29tbW9kYXRlIGEgcHJvYmxlbSBpbiAxME1icHMgb3BlcmF0aW9uLAogCSAqIHNldCBhIGdsb2JhbCBmbGFnIGlmIFBIWSBydW5uaW5nIGluIDEwTWJwcyBtb2RlLgogCSAqLwogCXNwLT50ZW5tYnBzbW9kZSA9IDA7CkBAIC04NDYsNyArODQ2LDcgQEAKIH0KIAogLyoKLSAqIEZyZWUgYWxsIHRyYW5zbWl0IGJ1ZmZlcnMgd2hpY2ggaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJlZAorICogRnJlZSBhbGwgdHJhbnNtaXQgYnVmZmVycyB3aGljaCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcnJlZAogICogdmlhIERNQSB0byB0aGUgSVBHLgogICovCiBzdGF0aWMgdm9pZCBpcGdfbmljX3R4ZnJlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAtOTIwLDcgKzkyMCw3IEBACiAKIC8qCiAgKiBGb3IgVHhDb21wbGV0ZSBpbnRlcnJ1cHRzLCBmcmVlIGFsbCB0cmFuc21pdAotICogYnVmZmVycyB3aGljaCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHZpYSBETUEKKyAqIGJ1ZmZlcnMgd2hpY2ggaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQgdmlhIERNQQogICogdG8gdGhlIElQRy4KICAqLwogc3RhdGljIHZvaWQgaXBnX25pY190eGNsZWFudXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKQEAgLTExNDEsMTMgKzExNDEsMTMgQEAKIAogCQkvKiBJbmNyZW1lbnQgZGV0YWlsZWQgcmVjZWl2ZSBlcnJvciBzdGF0aXN0aWNzLiAqLwogCQlpZiAobGU2NF90b19jcHUocnhmZC0+cmZzKSAmIElQR19SRlNfUlhGSUZPT1ZFUlJVTikgewotCQkJSVBHX0RFQlVHX01TRygiUlggRklGTyBvdmVycnVuIG9jY3VyZWQuXG4iKTsKKwkJCUlQR19ERUJVR19NU0coIlJYIEZJRk8gb3ZlcnJ1biBvY2N1cnJlZC5cbiIpOwogCiAJCQlzcC0+c3RhdHMucnhfZmlmb19lcnJvcnMrKzsKIAkJfQogCiAJCWlmIChsZTY0X3RvX2NwdShyeGZkLT5yZnMpICYgSVBHX1JGU19SWFJVTlRGUkFNRSkgewotCQkJSVBHX0RFQlVHX01TRygiUlggcnVudCBvY2N1cmVkLlxuIik7CisJCQlJUEdfREVCVUdfTVNHKCJSWCBydW50IG9jY3VycmVkLlxuIik7CiAJCQlzcC0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogCQl9CiAKQEAgLTExNTYsNyArMTE1Niw3IEBACiAJCSAqLwogCiAJCWlmIChsZTY0X3RvX2NwdShyeGZkLT5yZnMpICYgSVBHX1JGU19SWEFMSUdOTUVOVEVSUk9SKSB7Ci0JCQlJUEdfREVCVUdfTVNHKCJSWCBhbGlnbm1lbnQgZXJyb3Igb2NjdXJlZC5cbiIpOworCQkJSVBHX0RFQlVHX01TRygiUlggYWxpZ25tZW50IGVycm9yIG9jY3VycmVkLlxuIik7CiAJCQlzcC0+c3RhdHMucnhfZnJhbWVfZXJyb3JzKys7CiAJCX0KIApAQCAtMTQyMSwxMiArMTQyMSwxMiBAQAogCiAJCQkvKiBJbmNyZW1lbnQgZGV0YWlsZWQgcmVjZWl2ZSBlcnJvciBzdGF0aXN0aWNzLiAqLwogCQkJaWYgKGxlNjRfdG9fY3B1KHJ4ZmQtPnJmcykgJiBJUEdfUkZTX1JYRklGT09WRVJSVU4pIHsKLQkJCQlJUEdfREVCVUdfTVNHKCJSWCBGSUZPIG92ZXJydW4gb2NjdXJlZC5cbiIpOworCQkJCUlQR19ERUJVR19NU0coIlJYIEZJRk8gb3ZlcnJ1biBvY2N1cnJlZC5cbiIpOwogCQkJCXNwLT5zdGF0cy5yeF9maWZvX2Vycm9ycysrOwogCQkJfQogCiAJCQlpZiAobGU2NF90b19jcHUocnhmZC0+cmZzKSAmIElQR19SRlNfUlhSVU5URlJBTUUpIHsKLQkJCQlJUEdfREVCVUdfTVNHKCJSWCBydW50IG9jY3VyZWQuXG4iKTsKKwkJCQlJUEdfREVCVUdfTVNHKCJSWCBydW50IG9jY3VycmVkLlxuIik7CiAJCQkJc3AtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKIAkJCX0KIApAQCAtMTQzNiw3ICsxNDM2LDcgQEAKIAkJCSAqLwogCiAJCQlpZiAobGU2NF90b19jcHUocnhmZC0+cmZzKSAmIElQR19SRlNfUlhBTElHTk1FTlRFUlJPUikgewotCQkJCUlQR19ERUJVR19NU0coIlJYIGFsaWdubWVudCBlcnJvciBvY2N1cmVkLlxuIik7CisJCQkJSVBHX0RFQlVHX01TRygiUlggYWxpZ25tZW50IGVycm9yIG9jY3VycmVkLlxuIik7CiAJCQkJc3AtPnN0YXRzLnJ4X2ZyYW1lX2Vycm9ycysrOwogCQkJfQogCkBAIC0xNDYwLDcgKzE0NjAsNyBAQAogCQkJfQogCQl9IGVsc2UgewogCi0JCQkvKiBBZGp1c3QgdGhlIG5ldyBidWZmZXIgbGVuZ3RoIHRvIGFjY29tb2RhdGUgdGhlIHNpemUKKwkJCS8qIEFkanVzdCB0aGUgbmV3IGJ1ZmZlciBsZW5ndGggdG8gYWNjb21tb2RhdGUgdGhlIHNpemUKIAkJCSAqIG9mIHRoZSByZWNlaXZlZCBmcmFtZS4KIAkJCSAqLwogCQkJc2tiX3B1dChza2IsIGZyYW1lbGVuKTsKQEAgLTE0ODgsNyArMTQ4OCw3IEBACiAJfQogCiAJLyoKLQkgKiBJZiB0aGVyZSBhcmUgbW9yZSBSRkRzIHRvIHByb2NlcyBhbmQgdGhlIGFsbG9jYXRlZCBhbW91bnQgb2YgUkZECisJICogSWYgdGhlcmUgYXJlIG1vcmUgUkZEcyB0byBwcm9jZXNzIGFuZCB0aGUgYWxsb2NhdGVkIGFtb3VudCBvZiBSRkQKIAkgKiBwcm9jZXNzaW5nIHRpbWUgaGFzIGV4cGlyZWQsIGFzc2VydCBJbnRlcnJ1cHQgUmVxdWVzdGVkIHRvIG1ha2UKIAkgKiBzdXJlIHdlIGNvbWUgYmFjayB0byBwcm9jZXNzIHRoZSByZW1haW5pbmcgUkZEcy4KIAkgKi8KQEAgLTE4ODYsNyArMTg4Niw3IEBACiAJLyogUmVxdWVzdCBUeENvbXBsZXRlIGludGVycnVwdHMgYXQgYW4gaW50ZXJ2YWwgZGVmaW5lZAogCSAqIGJ5IHRoZSBjb25zdGFudCBJUEdfRlJBTUVTQkVUV0VFTlRYQ09NUExFVEVTLgogCSAqIFJlcXVlc3QgVHhDb21wbGV0ZSBpbnRlcnJ1cHQgZm9yIGV2ZXJ5IGZyYW1lCi0JICogaWYgaW4gMTBNYnBzIG1vZGUgdG8gYWNjb21vZGF0ZSBwcm9ibGVtIHdpdGggMTBNYnBzCisJICogaWYgaW4gMTBNYnBzIG1vZGUgdG8gYWNjb21tb2RhdGUgcHJvYmxlbSB3aXRoIDEwTWJwcwogCSAqIHByb2Nlc3NpbmcuCiAJICovCiAJaWYgKHNwLT50ZW5tYnBzbW9kZSkKQEAgLTIwOTgsNyArMjA5OCw3IEBACiAJc3RydWN0IGlwZ19uaWNfcHJpdmF0ZSAqc3AgPSBuZXRkZXZfcHJpdihkZXYpOwogCWludCBlcnI7CiAKLQkvKiBGdW5jdGlvbiB0byBhY2NvbW9kYXRlIGNoYW5nZXMgdG8gTWF4aW11bSBUcmFuc2ZlciBVbml0CisJLyogRnVuY3Rpb24gdG8gYWNjb21tb2RhdGUgY2hhbmdlcyB0byBNYXhpbXVtIFRyYW5zZmVyIFVuaXQKIAkgKiAob3IgTVRVKSBvZiBJUEcgTklDLiBDYW5ub3QgdXNlIGRlZmF1bHQgZnVuY3Rpb24gc2luY2UKIAkgKiB0aGUgZGVmYXVsdCB3aWxsIG5vdCBhbGxvdyBmb3IgTVRVID4gMTUwMCBieXRlcy4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvYWxpLWlyY2MuYyBiL2RyaXZlcnMvbmV0L2lyZGEvYWxpLWlyY2MuYwppbmRleCA5MjYzMWViLi44NzIxODNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2FsaS1pcmNjLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9hbGktaXJjYy5jCkBAIC03Niw3ICs3Niw3IEBACiBzdGF0aWMgaW50ICBhbGlfaXJjY19pbml0XzQzKGFsaV9jaGlwX3QgKmNoaXAsIGNoaXBpb190ICppbmZvKTsKIHN0YXRpYyBpbnQgIGFsaV9pcmNjX2luaXRfNTMoYWxpX2NoaXBfdCAqY2hpcCwgY2hpcGlvX3QgKmluZm8pOwogCi0vKiBUaGVzZSBhcmUgdGhlIGN1cnJlbnRseSBrbm93biBBTGkgc291cnRoLWJyaWRnZSBjaGlwc2V0cywgdGhlIG9ubHkgb25lIGRpZmZlcmVuY2UKKy8qIFRoZXNlIGFyZSB0aGUgY3VycmVudGx5IGtub3duIEFMaSBzb3V0aC1icmlkZ2UgY2hpcHNldHMsIHRoZSBvbmx5IG9uZSBkaWZmZXJlbmNlCiAgKiBpcyB0aGF0IE0xNTQzQyBkb2Vzbid0IHN1cHBvcnQgSFAgSERTTC0zNjAwCiAgKi8KIHN0YXRpYyBhbGlfY2hpcF90IGNoaXBzW10gPQpAQCAtMTEwOCw3ICsxMTA4LDcgQEAKIAlvdXRiKGxjciwJCSAgaW9iYXNlK1VBUlRfTENSKTsgLyogU2V0IDhOMQkqLwogCW91dGIoZmNyLAkJICBpb2Jhc2UrVUFSVF9GQ1IpOyAvKiBFbmFibGUgRklGTydzICovCiAKLQkvKiB3aXRob3V0IHRoaXMsIHRoZSBjb25lY3Rpb24gd2lsbCBiZSBicm9rZW4gYWZ0ZXIgY29tZSBiYWNrIGZyb20gRklSIHNwZWVkLAorCS8qIHdpdGhvdXQgdGhpcywgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBicm9rZW4gYWZ0ZXIgY29tZSBiYWNrIGZyb20gRklSIHNwZWVkLAogCSAgIGJ1dCB3aXRoIHRoaXMsIHRoZSBTSVIgY29ubmVjdGlvbiBpcyBoYXJkZXIgdG8gZXN0YWJsaXNoZWQgKi8KIAlvdXRiKChVQVJUX01DUl9EVFIgfCBVQVJUX01DUl9SVFMgfCBVQVJUX01DUl9PVVQyKSwgaW9iYXNlK1VBUlRfTUNSKTsKIAkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuYyBiL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuYwppbmRleCBmODFkOTQ0Li4xNzRjYWZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5jCkBAIC01Niw3ICs1Niw3IEBACiAvKiBkb19wcm9iZSBtb2R1bGUgcGFyYW1ldGVyIEVuYWJsZSB0aGlzIGNvZGUgKi8KIC8qIFByb2JlIGNvZGUgaXMgdmVyeSB1c2VmdWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSB3b3JrcyAqLwogLyogVXNlIGl0IHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgVFRfTEVOLCBSWF9MRU4gKi8KLS8qIFN0cm9uZ2x5IHJlY29tZW5kZWQsIGRpc2FibGUgaWYgdGhlIHByb2JlIGZhaWxzIG9uIHlvdXIgbWFjaGluZSAqLworLyogU3Ryb25nbHkgcmVjb21tZW5kZWQsIGRpc2FibGUgaWYgdGhlIHByb2JlIGZhaWxzIG9uIHlvdXIgbWFjaGluZSAqLwogLyogYW5kIHNlbmQgbWUgPGphbWVzQGZpc2hzb3VwLmRocy5vcmc+IHRoZSBvdXRwdXQgb2YgZG1lc2cgKi8KICNkZWZpbmUgVVNFX1BST0JFIDEKICN1bmRlZiAgVVNFX1BST0JFCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmggYi9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmgKaW5kZXggNzdmY2Y0NC4uZDkyZDU0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5oCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuaApAQCAtNTEsNyArNTEsNyBAQAogCiAvKiBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjaGlwIGlzIGFsbGVnZWRseSByZWxlYXNlZCAgICAgICAgICovCiAvKiBIb3dldmVyIEkgaGF2ZSBub3Qgc2VlbiBpdCwgbm90IGhhdmUgSSBtYW5hZ2VkIHRvIGNvbnRhY3QgICAgICovCi0vKiBhbnlvbmUgd2hvIGhhcy4gSE9XRVZFUiB0aGUgY2hpcCBiZWFycyBhIHN0cmlraW5nIHJlc2VtYmxlbmNlICovCisvKiBhbnlvbmUgd2hvIGhhcy4gSE9XRVZFUiB0aGUgY2hpcCBiZWFycyBhIHN0cmlraW5nIHJlc2VtYmxhbmNlICovCiAvKiB0byB0aGUgSXJEQSBjb250cm9sbGVyIGluIHRoZSBUb3NoaWJhIFJJU0MgVE1QUjM5MjIgY2hpcCAgICAgICovCiAvKiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBpcyBmcmVlbHkgYXZhaWxhYmxlIGF0ICAgICAgICAgICAgICovCiAvKiBodHRwOi8vd3d3Lm1hZGluZ2xleS5vcmcvamFtZXMvcmVzb3VyY2VzL3Rvc2hvYm9lL1RNUFIzOTIyLnBkZiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9naXJiaWwtc2lyLmMgYi9kcml2ZXJzL25ldC9pcmRhL2dpcmJpbC1zaXIuYwppbmRleCBhMzFiOGZhLi45NmNkZWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2dpcmJpbC1zaXIuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL2dpcmJpbC1zaXIuYwpAQCAtMzgsNyArMzgsNyBAQAogLyogQ29udHJvbCByZWdpc3RlciAxICovCiAjZGVmaW5lIEdJUkJJTF9UWEVOICAgIDB4MDEgLyogRW5hYmxlIHRyYW5zbWl0dGVyICovCiAjZGVmaW5lIEdJUkJJTF9SWEVOICAgIDB4MDIgLyogRW5hYmxlIHJlY2VpdmVyICovCi0jZGVmaW5lIEdJUkJJTF9FQ0FOICAgIDB4MDQgLyogQ2FuY2VsIHNlbGYgZW1taXRlZCBkYXRhICovCisjZGVmaW5lIEdJUkJJTF9FQ0FOICAgIDB4MDQgLyogQ2FuY2VsIHNlbGYgZW1pdHRlZCBkYXRhICovCiAjZGVmaW5lIEdJUkJJTF9FQ0hPICAgIDB4MDggLyogRWNobyBjb250cm9sIGNoYXJhY3RlcnMgKi8KIAogLyogTEVEIEN1cnJlbnQgUmVnaXN0ZXIgKDB4MikgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvaXJkYS11c2IuYyBiL2RyaXZlcnMvbmV0L2lyZGEvaXJkYS11c2IuYwppbmRleCBlNGVhNjE5Li5kOTI2N2NiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2lyZGEtdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9pcmRhLXVzYi5jCkBAIC0zNzAsNyArMzcwLDcgQEAKIAkvKiB1cmIgaXMgbm93IGF2YWlsYWJsZSAqLwogCS8vdXJiLT5zdGF0dXMgPSAwOyAtPiB0ZXN0ZWQgYWJvdmUKIAotCS8qIE5ldyBzcGVlZCBhbmQgeGJvZiBpcyBub3cgY29tbWl0ZWQgaW4gaGFyZHdhcmUgKi8KKwkvKiBOZXcgc3BlZWQgYW5kIHhib2YgaXMgbm93IGNvbW1pdHRlZCBpbiBoYXJkd2FyZSAqLwogCXNlbGYtPm5ld19zcGVlZCA9IC0xOwogCXNlbGYtPm5ld194Ym9mcyA9IC0xOwogCkBAIC02MDIsNyArNjAyLDcgQEAKIAkJCUlSREFfREVCVUcoMSwgIiVzKCksIENoYW5naW5nIHNwZWVkIG5vdy4uLlxuIiwgX19mdW5jX18pOwogCQkJaXJkYV91c2JfY2hhbmdlX3NwZWVkX3hib2ZzKHNlbGYpOwogCQl9IGVsc2UgewotCQkJLyogTmV3IHNwZWVkIGFuZCB4Ym9mIGlzIG5vdyBjb21taXRlZCBpbiBoYXJkd2FyZSAqLworCQkJLyogTmV3IHNwZWVkIGFuZCB4Ym9mIGlzIG5vdyBjb21taXR0ZWQgaW4gaGFyZHdhcmUgKi8KIAkJCXNlbGYtPm5ld19zcGVlZCA9IC0xOwogCQkJc2VsZi0+bmV3X3hib2ZzID0gLTE7CiAJCQkvKiBEb25lLCB3YWl0aW5nIGZvciBuZXh0IHBhY2tldCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9tY3M3NzgwLmMgYi9kcml2ZXJzL25ldC9pcmRhL21jczc3ODAuYwppbmRleCBjYzgyMWRlLi5iZTUyYmZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL21jczc3ODAuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL21jczc3ODAuYwpAQCAtNTg4LDcgKzU4OCw3IEBACiAKIAltY3NfZ2V0X3JlZyhtY3MsIE1DU19NT0RFX1JFRywgJnJ2YWwpOwogCi0JLyogTUlOUlhQVyB2YWx1ZXMgcmVjb21lbmRlZCBieSBNb3NDaGlwICovCisJLyogTUlOUlhQVyB2YWx1ZXMgcmVjb21tZW5kZWQgYnkgTW9zQ2hpcCAqLwogCWlmIChtY3MtPm5ld19zcGVlZCA8PSAxMTUyMDApIHsKIAkJcnZhbCAmPSB+TUNTX0ZJUjsKIApAQCAtNzk5LDcgKzc5OSw3IEBACiAJcmV0ID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsKIH0KIAotLyogVHJhbnNtaXQgY2FsbGJhY2sgZnVudGlvbi4gICovCisvKiBUcmFuc21pdCBjYWxsYmFjayBmdW5jdGlvbi4gICovCiBzdGF0aWMgdm9pZCBtY3Nfc2VuZF9pcnEoc3RydWN0IHVyYiAqdXJiKQogewogCXN0cnVjdCBtY3NfY2IgKm1jcyA9IHVyYi0+Y29udGV4dDsKQEAgLTgxMSw3ICs4MTEsNyBAQAogCQluZXRpZl93YWtlX3F1ZXVlKG5kZXYpOwogfQogCi0vKiBUcmFuc21pdCBjYWxsYmFjayBmdW50aW9uLiAgKi8KKy8qIFRyYW5zbWl0IGNhbGxiYWNrIGZ1bmN0aW9uLiAgKi8KIHN0YXRpYyBuZXRkZXZfdHhfdCBtY3NfaGFyZF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5jIGIvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5jCmluZGV4IDU1OWZlODUuLjdhOTYzZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmMKQEAgLTcxNiw3ICs3MTYsNyBAQAogCWludCByZWcsIGNvbSA9IDA7CiAJaW50IHBucDsKIAotCS8qIFJlYWQgZnVudGlvbiBlbmFibGUgcmVnaXN0ZXIgKEZFUikgKi8KKwkvKiBSZWFkIGZ1bmN0aW9uIGVuYWJsZSByZWdpc3RlciAoRkVSKSAqLwogCW91dGIoQ0ZHXzMzOF9GRVIsIGNmZ19iYXNlKTsKIAlyZWcgPSBpbmIoY2ZnX2Jhc2UrMSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuaCBiL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuaAppbmRleCA3YmE3NzM4Li4zMmZhNTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmgKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5oCkBAIC0xMzUsNyArMTM1LDcgQEAKICNkZWZpbmUgTFNSX1RYUkRZICAgICAgIDB4MjAgLyogVHJhbnNtaXR0ZXIgcmVhZHkgKi8KICNkZWZpbmUgTFNSX1RYRU1QICAgICAgIDB4NDAgLyogVHJhbnNtaXR0ZXIgZW1wdHkgKi8KIAotI2RlZmluZSBBU0NSICAgICAgICAgICAgMHgwNyAvKiBBdXhpbGxhcnkgU3RhdHVzIGFuZCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIEFTQ1IgICAgICAgICAgICAweDA3IC8qIEF1eGlsaWFyeSBTdGF0dXMgYW5kIENvbnRyb2wgUmVnaXN0ZXIgKi8KICNkZWZpbmUgQVNDUl9SWEZfVE9VVCAgIDB4MDEgLyogUnggRklGTyB0aW1lb3V0ICovCiAjZGVmaW5lIEFTQ1JfRkVORF9JTkYgICAweDAyIC8qIEZyYW1lIGVuZCBieXRlcyBpbiByeCBGSUZPICovCiAjZGVmaW5lIEFTQ1JfU19FT1QgICAgICAweDA0IC8qIFNldCBlbmQgb2YgdHJhbnNtaXNzaW9uICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL3B4YWZpY3BfaXIuYyBiL2RyaXZlcnMvbmV0L2lyZGEvcHhhZmljcF9pci5jCmluZGV4IGMxOTJjMzEuLjAwMWVkMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvcHhhZmljcF9pci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvcHhhZmljcF9pci5jCkBAIC00MCw3ICs0MCw3IEBACiAKICNkZWZpbmUgSUNDUjBfQU1FCSgxIDw8IDcpCS8qIEFkZHJlc3MgbWF0Y2ggZW5hYmxlICovCiAjZGVmaW5lIElDQ1IwX1RJRQkoMSA8PCA2KQkvKiBUcmFuc21pdCBGSUZPIGludGVycnVwdCBlbmFibGUgKi8KLSNkZWZpbmUgSUNDUjBfUklFCSgxIDw8IDUpCS8qIFJlY2lldmUgRklGTyBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIElDQ1IwX1JJRQkoMSA8PCA1KQkvKiBSZWNlaXZlIEZJRk8gaW50ZXJydXB0IGVuYWJsZSAqLwogI2RlZmluZSBJQ0NSMF9SWEUJKDEgPDwgNCkJLyogUmVjZWl2ZSBlbmFibGUgKi8KICNkZWZpbmUgSUNDUjBfVFhFCSgxIDw8IDMpCS8qIFRyYW5zbWl0IGVuYWJsZSAqLwogI2RlZmluZSBJQ0NSMF9UVVMJKDEgPDwgMikJLyogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biBzZWxlY3QgKi8KQEAgLTQ4Myw3ICs0ODMsNyBAQAogCX0KIAogCWlmIChpY3NyMCAmIElDU1IwX0VJRikgewotCQkvKiBBbiBlcnJvciBpbiBGSUZPIG9jY3VyZWQsIG9yIHRoZXJlIGlzIGEgZW5kIG9mIGZyYW1lICovCisJCS8qIEFuIGVycm9yIGluIEZJRk8gb2NjdXJyZWQsIG9yIHRoZXJlIGlzIGEgZW5kIG9mIGZyYW1lICovCiAJCXB4YV9pcmRhX2Zpcl9pcnFfZWlmKHNpLCBkZXYsIGljc3IwKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvc21zYy1pcmNjMi5jIGIvZHJpdmVycy9uZXQvaXJkYS9zbXNjLWlyY2MyLmMKaW5kZXggMWMxNjc3Yy4uODgwMGUxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9zbXNjLWlyY2MyLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9zbXNjLWlyY2MyLmMKQEAgLTE1ODIsNyArMTU4Miw3IEBACiAJaW50IGlvYmFzZTsKIAlpbnQgaWlyLCBsc3I7CiAKLQkvKiBBbHJlYWR5IGxvY2tlZCBjb21taW5nIGhlcmUgaW4gc21zY19pcmNjX2ludGVycnVwdCgpICovCisJLyogQWxyZWFkeSBsb2NrZWQgY29taW5nIGhlcmUgaW4gc21zY19pcmNjX2ludGVycnVwdCgpICovCiAJLypzcGluX2xvY2soJnNlbGYtPmxvY2spOyovCiAKIAlpb2Jhc2UgPSBzZWxmLT5pby5zaXJfYmFzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvdmlhLWlyY2MuYyBiL2RyaXZlcnMvbmV0L2lyZGEvdmlhLWlyY2MuYwppbmRleCAxODZjZDI4Li5mNTA0YjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL3ZpYS1pcmNjLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS92aWEtaXJjYy5jCkBAIC0yOSw3ICsyOSw3IEBACiAKIDIwMDQtMDItMTY6IDxzZGFAYmRpdC5kZT4KIC0gUmVtb3ZlZCB1bm5lZWRlZCAnbGVnYWN5JyBwY2kgc3R1ZmYuCi0tIE1ha2Ugc3VyZSBTSVIgbW9kZSBpcyBzZXQgKGh3X2luaXQoKSkgYmVmb3JlIGNhbGxpbmcgbW9kZS1kZXBlbmRhbnQgc3R1ZmYuCistIE1ha2Ugc3VyZSBTSVIgbW9kZSBpcyBzZXQgKGh3X2luaXQoKSkgYmVmb3JlIGNhbGxpbmcgbW9kZS1kZXBlbmRlbnQgc3R1ZmYuCiAtIE9uIHNwZWVkIGNoYW5nZSBmcm9tIGNvcmUsIGRvbid0IHNlbmQgU0lSIGZyYW1lIHdpdGggbmV3IHNwZWVkLiAKICAgVXNlIGN1cnJlbnQgc3BlZWQgYW5kIGNoYW5nZSBzcGVlZHMgbGF0ZXIuCiAtIE1ha2UgbW9kdWxlLXBhcmFtIGRvbmdsZV9pZCBhY3R1YWxseSB3b3JrLgpAQCAtMzM0LDcgKzMzNCw3IEBACiAJc2VsZi0+aW8uZG9uZ2xlX2lkID0gZG9uZ2xlX2lkOwogCiAJLyogVGhlIG9ubHkgdmFsdWUgd2UgbXVzdCBvdmVycmlkZSBpdCB0aGUgYmF1ZHJhdGUgKi8KLQkvKiBNYXhpbXVtIHNwZWVkcyBhbmQgY2FwYWJpbGl0aWVzIGFyZSBkb25nbGUtZGVwZW5kYW50LiAqLworCS8qIE1heGltdW0gc3BlZWRzIGFuZCBjYXBhYmlsaXRpZXMgYXJlIGRvbmdsZS1kZXBlbmRlbnQuICovCiAJc3dpdGNoKCBzZWxmLT5pby5kb25nbGVfaWQgKXsKIAljYXNlIDB4MGQ6CiAJCXNlbGYtPnFvcy5iYXVkX3JhdGUuYml0cyA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL3Zsc2lfaXIuaCBiL2RyaXZlcnMvbmV0L2lyZGEvdmxzaV9pci5oCmluZGV4IGQ2NmZhYjguLmEwNzZlYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvdmxzaV9pci5oCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvdmxzaV9pci5oCkBAIC0yMDksNyArMjA5LDcgQEAKIAlJUklOVFJfQUNURU4JPSAweDgwLAkvKiBhY3Rpdml0eSBpbnRlcnJ1cHQgZW5hYmxlICovCiAJSVJJTlRSX0FDVElWSVRZCT0gMHg0MCwJLyogYWN0aXZpdHkgbW9uaXRvciAodHJhZmZpYyBkZXRlY3RlZCkgKi8KIAlJUklOVFJfUlBLVEVOCT0gMHgyMCwJLyogcmVjZWl2ZSBwYWNrZXQgaW50ZXJydXB0IGVuYWJsZSovCi0JSVJJTlRSX1JQS1RJTlQJPSAweDEwLAkvKiByeC1wYWNrZXQgdHJhbnNmZXJlZCBmcm9tIGZpZm8gdG8gbWVtb3J5IGZpbmlzaGVkICovCisJSVJJTlRSX1JQS1RJTlQJPSAweDEwLAkvKiByeC1wYWNrZXQgdHJhbnNmZXJyZWQgZnJvbSBmaWZvIHRvIG1lbW9yeSBmaW5pc2hlZCAqLwogCUlSSU5UUl9UUEtURU4JPSAweDA4LAkvKiB0cmFuc21pdCBwYWNrZXQgaW50ZXJydXB0IGVuYWJsZSAqLwogCUlSSU5UUl9UUEtUSU5UCT0gMHgwNCwJLyogbGFzdCBiaXQgb2YgdHgtcGFja2V0K2NyYyBzaGlmdGVkIHRvIGlyLXB1bHNlciAqLwogCUlSSU5UUl9PRV9FTgk9IDB4MDIsCS8qIFVBUlQgcnggZmlmbyBvdmVycnVuIGVycm9yIGludGVycnVwdCBlbmFibGUgKi8KQEAgLTczOSw3ICs3MzksNyBAQAogLyogdGhlIHJlbWFwcGVkIGVycm9yIGZsYWdzIHdlIHVzZSBmb3IgcmV0dXJuaW5nIGZyb20gZnJhbWUKICAqIHBvc3QtcHJvY2Vzc2luZyBpbiB2bHNpX3Byb2Nlc3NfdHgvcngoKSBhZnRlciBpdCB3YXMgY29tcGxldGVkCiAgKiBieSB0aGUgaGFyZHdhcmUuIFRoZXNlIGZ1bmN0aW9ucyBlaXRoZXIgcmV0dXJuIHRoZSA+PTAgbnVtYmVyCi0gKiBvZiB0cmFuc2ZlcmVkIGJ5dGVzIGluIGNhc2Ugb2Ygc3VjY2VzcyBvciB0aGUgbmVnYXRpdmUgKC0pCisgKiBvZiB0cmFuc2ZlcnJlZCBieXRlcyBpbiBjYXNlIG9mIHN1Y2Nlc3Mgb3IgdGhlIG5lZ2F0aXZlICgtKQogICogb2YgdGhlIG9yJ2VkIGVycm9yIGZsYWdzLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYi5jIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiLmMKaW5kZXggNDFjNTI5Zi4uNjg2YTE3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiLmMKKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiLmMKQEAgLTM2LDcgKzM2LDcgQEAKIC8qKgogICogaXhnYmVfaWVlZV9jcmVkaXRzIC0gVGhpcyBjYWxjdWxhdGVzIHRoZSBpZWVlIHRyYWZmaWMgY2xhc3MKICAqIGNyZWRpdHMgZnJvbSB0aGUgY29uZmlndXJlZCBiYW5kd2lkdGggcGVyY2VudGFnZXMuIENyZWRpdHMKLSAqIGFyZSB0aGUgc21hbGxlc3QgdW5pdCBwcm9ncmFtYWJsZSBpbnRvIHRoZSB1bmRlcmx5aW5nCisgKiBhcmUgdGhlIHNtYWxsZXN0IHVuaXQgcHJvZ3JhbW1hYmxlIGludG8gdGhlIHVuZGVybHlpbmcKICAqIGhhcmR3YXJlLiBUaGUgSUVFRSA4MDIuMVFheiBzcGVjaWZpY2F0aW9uIGRvIG5vdCB1c2UgYmFuZHdpZHRoCiAgKiBncm91cHMgc28gdGhpcyBpcyBtdWNoIHNpbXBsaWZpZWQgZnJvbSB0aGUgQ0VFIGNhc2UuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2RjYl9ubC5jIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiX25sLmMKaW5kZXggZmVjNGM3Mi4uMzI3Yzg2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiX25sLmMKKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiX25sLmMKQEAgLTM2MCw3ICszNjAsNyBAQAogCQlyZXR1cm4gRENCX05PX0hXX0NIRzsKIAogCS8qCi0JICogT25seSB0YWtlIGRvd24gdGhlIGFkYXB0ZXIgaWYgYW4gYXBwIGNoYW5nZSBvY2N1cmVkLiBGQ29FCisJICogT25seSB0YWtlIGRvd24gdGhlIGFkYXB0ZXIgaWYgYW4gYXBwIGNoYW5nZSBvY2N1cnJlZC4gRkNvRQogCSAqIG1heSBzaHVmZmxlIHR4IHJpbmdzIGluIHRoaXMgY2FzZSBhbmQgdGhpcyBjYW4gbm90IGJlIGRvbmUKIAkgKiB3aXRob3V0IGEgcmVzZXQgY3VycmVudGx5LgogCSAqLwpAQCAtNTk5LDcgKzU5OSw3IEBACiAJCQkJYnJlYWs7CiAKIAkJCS8qIFRoZSBGQ29FIGFwcGxpY2F0aW9uIHByaW9yaXR5IG1heSBiZSBjaGFuZ2VkIG11bHRpcGxlCi0JCQkgKiB0aW1lcyBpbiBxdWljayBzdWNlc3Npb24gd2l0aCBzd2l0Y2hlcyB0aGF0IGJ1aWxkIHVwCisJCQkgKiB0aW1lcyBpbiBxdWljayBzdWNjZXNzaW9uIHdpdGggc3dpdGNoZXMgdGhhdCBidWlsZCB1cAogCQkJICogVExWcy4gVG8gYXZvaWQgY3JlYXRpbmcgdW5lZWRlZCBkZXZpY2UgcmVzZXRzIHRoaXMKIAkJCSAqIGNoZWNrcyB0aGUgYWN0dWFsIEhXIGNvbmZpZ3VyYXRpb24gYW5kIGNsZWFycwogCQkJICogQklUX0FQUF9VUENIRyBpZiBhIEhXIGNvbmZpZ3VyYXRpb24gY2hhbmdlIGlzIG5vdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfbWFpbi5jCmluZGV4IGYxN2U0YTcuLjZmOGFkYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYworKysgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9tYWluLmMKQEAgLTY0NCw3ICs2NDQsNyBAQAogICogQGFkYXB0ZXI6IGRyaXZlciBwcml2YXRlIHN0cnVjdAogICogQGluZGV4OiByZWcgaWR4IG9mIHF1ZXVlIHRvIHF1ZXJ5ICgwLTEyNykKICAqCi0gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSB0cmFmZmljIGluZGV4IGZvciBhIHBhdGljdWxhcgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB0aGUgdHJhZmZpYyBpbmRleCBmb3IgYSBwYXJ0aWN1bGFyCiAgKiByZWdpc3RlciBpbmRleC4KICAqCiAgKiBSZXR1cm5zIDogYSB0YyBpbmRleCBmb3IgdXNlIGluIHJhbmdlIDAtNywgb3IgMC0zCkBAIC0zNTU2LDcgKzM1NTYsNyBAQAogCQl9IGVsc2UgewogCQkJLyoKIAkJCSAqIFdyaXRlIGFkZHJlc3NlcyB0byB0aGUgTVRBLCBpZiB0aGUgYXR0ZW1wdCBmYWlscwotCQkJICogdGhlbiB3ZSBzaG91bGQganVzdCB0dXJuIG9uIHByb21pc2NvdXMgbW9kZSBzbworCQkJICogdGhlbiB3ZSBzaG91bGQganVzdCB0dXJuIG9uIHByb21pc2N1b3VzIG1vZGUgc28KIAkJCSAqIHRoYXQgd2UgY2FuIGF0IGxlYXN0IHJlY2VpdmUgbXVsdGljYXN0IHRyYWZmaWMKIAkJCSAqLwogCQkJaHctPm1hYy5vcHMudXBkYXRlX21jX2FkZHJfbGlzdChodywgbmV0ZGV2KTsKQEAgLTM1NjcsNyArMzU2Nyw3IEBACiAJCS8qCiAJCSAqIFdyaXRlIGFkZHJlc3NlcyB0byBhdmFpbGFibGUgUkFSIHJlZ2lzdGVycywgaWYgdGhlcmUgaXMgbm90CiAJCSAqIHN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgYWxsIHRoZSBhZGRyZXNzZXMgdGhlbiBlbmFibGUKLQkJICogdW5pY2FzdCBwcm9taXNjb3VzIG1vZGUKKwkJICogdW5pY2FzdCBwcm9taXNjdW91cyBtb2RlCiAJCSAqLwogCQljb3VudCA9IGl4Z2JlX3dyaXRlX3VjX2FkZHJfbGlzdChuZXRkZXYpOwogCQlpZiAoY291bnQgPCAwKSB7CkBAIC00NDQzLDcgKzQ0NDMsNyBAQAogfQogCiAvKgotICogaXhnYmVfc2V0X251bV9xdWV1ZXM6IEFsbG9jYXRlIHF1ZXVlcyBmb3IgZGV2aWNlLCBmZWF0dXJlIGRlcGVuZGFudAorICogaXhnYmVfc2V0X251bV9xdWV1ZXM6IEFsbG9jYXRlIHF1ZXVlcyBmb3IgZGV2aWNlLCBmZWF0dXJlIGRlcGVuZGVudAogICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlIHRvIGluaXRpYWxpemUKICAqCiAgKiBUaGlzIGlzIHRoZSB0b3AgbGV2ZWwgcXVldWUgYWxsb2NhdGlvbiByb3V0aW5lLiAgVGhlIG9yZGVyIGhlcmUgaXMgdmVyeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcGh5LmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9waHkuYwppbmRleCBmNzJmNzA1Li5kZjViOGFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9waHkuYworKysgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9waHkuYwpAQCAtMTY5NCw3ICsxNjk0LDcgQEAKIH0KIAogLyoqCi0gKiAgaXhnYmVfdG5fY2hlY2tfb3ZlcnRlbXAgLSBDaGVja3MgaWYgYW4gb3ZlcnRlbXAgb2NjdXJlZC4KKyAqICBpeGdiZV90bl9jaGVja19vdmVydGVtcCAtIENoZWNrcyBpZiBhbiBvdmVydGVtcCBvY2N1cnJlZC4KICAqICBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlCiAgKgogICogIENoZWNrcyBpZiB0aGUgTEFTSSB0ZW1wIGFsYXJtIHN0YXR1cyB3YXMgdHJpZ2dlcmVkIGR1ZSB0byBvdmVydGVtcApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfeDU0MC5jIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfeDU0MC5jCmluZGV4IGY0N2U5M2YuLmQ5MzIzYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3g1NDAuYworKysgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV94NTQwLmMKQEAgLTU3Myw3ICs1NzMsNyBAQAogICogQGh3OiBwb2ludGVyIHRvIGhhcmR3YXJlIHN0cnVjdHVyZQogICogQG1hc2s6IE1hc2sgdG8gc3BlY2lmeSB3aGljaCBzZW1hcGhvcmUgdG8gcmVsZWFzZQogICoKLSAqIFJlbGVhc2VzIHRoZSBTV0ZXIHNlbWFwaG9yZSB0aHJvdWdodCB0aGUgU1dfRldfU1lOQyByZWdpc3RlcgorICogUmVsZWFzZXMgdGhlIFNXRlcgc2VtYXBob3JlIHRocm91Z2ggdGhlIFNXX0ZXX1NZTkMgcmVnaXN0ZXIKICAqIGZvciB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIChDU1IsIFBIWTAsIFBIWTEsIEVWTSwgRmxhc2gpCiAgKiovCiBzdGF0aWMgdm9pZCBpeGdiZV9yZWxlYXNlX3N3Zndfc3luY19YNTQwKHN0cnVjdCBpeGdiZV9odyAqaHcsIHUxNiBtYXNrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmV2Zi9peGdiZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMKaW5kZXggMDU0YWIwNS4uMDVmYTdjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmV2Zi9peGdiZXZmX21haW4uYworKysgYi9kcml2ZXJzL25ldC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jCkBAIC0xOTI1LDcgKzE5MjUsNyBAQAogfQogCiAvKgotICogaXhnYmV2Zl9zZXRfbnVtX3F1ZXVlczogQWxsb2NhdGUgcXVldWVzIGZvciBkZXZpY2UsIGZlYXR1cmUgZGVwZW5kYW50CisgKiBpeGdiZXZmX3NldF9udW1fcXVldWVzOiBBbGxvY2F0ZSBxdWV1ZXMgZm9yIGRldmljZSwgZmVhdHVyZSBkZXBlbmRlbnQKICAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplCiAgKgogICogVGhpcyBpcyB0aGUgdG9wIGxldmVsIHF1ZXVlIGFsbG9jYXRpb24gcm91dGluZS4gIFRoZSBvcmRlciBoZXJlIGlzIHZlcnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2tzODg0Mi5jIGIvZHJpdmVycy9uZXQva3M4ODQyLmMKaW5kZXggZWZkNDRhZi4uZjBkODM0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQva3M4ODQyLmMKKysrIGIvZHJpdmVycy9uZXQva3M4ODQyLmMKQEAgLTMyMSw3ICszMjEsNyBAQAogCS8qIFJYIDIga2IgaGlnaCB3YXRlcm1hcmsgKi8KIAlrczg4NDJfd3JpdGUxNihhZGFwdGVyLCAwLCAweDEwMDAsIFJFR19RUkZDUik7CiAKLQkvKiBhZ2dyZXNpdmUgYmFjayBvZmYgaW4gaGFsZiBkdXBsZXggKi8KKwkvKiBhZ2dyZXNzaXZlIGJhY2sgb2ZmIGluIGhhbGYgZHVwbGV4ICovCiAJa3M4ODQyX2VuYWJsZV9iaXRzKGFkYXB0ZXIsIDMyLCAxIDw8IDgsIFJFR19TR0NSMSk7CiAKIAkvKiBlbmFibGUgbm8gZXhjZXNzaXZlIGNvbGxpc29uIGRyb3AgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2tzODg1MS5jIGIvZHJpdmVycy9uZXQva3M4ODUxLmMKaW5kZXggMGZhNGE5OC4uYmNkOWJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQva3M4ODUxLmMKKysrIGIvZHJpdmVycy9uZXQva3M4ODUxLmMKQEAgLTE0MSw3ICsxNDEsNyBAQAogICoKICAqIEFsbCB0aGVzZSBjYWxscyBpc3N1ZSBTUEkgdHJhbnNhY3Rpb25zIHRvIGFjY2VzcyB0aGUgY2hpcCdzIHJlZ2lzdGVycy4gVGhleQogICogYWxsIHJlcXVpcmUgdGhhdCB0aGUgbmVjZXNzYXJ5IGxvY2sgaXMgaGVsZCB0byBwcmV2ZW50IGFjY2Vzc2VzIHdoZW4gdGhlCi0gKiBjaGlwIGlzIGJ1c3kgdHJhbnNmZXJpbmcgcGFja2V0IGRhdGEgKFJYL1RYIEZJRk8gYWNjZXNzZXMpLgorICogY2hpcCBpcyBidXN5IHRyYW5zZmVycmluZyBwYWNrZXQgZGF0YSAoUlgvVFggRklGTyBhY2Nlc3NlcykuCiAgKi8KIAogLyoqCkBAIC00ODMsNyArNDgzLDcgQEAKIAkgKgogCSAqIFRoaXMgZm9ybSBvZiBvcGVyYXRpb24gd291bGQgcmVxdWlyZSB1cyB0byBob2xkIHRoZSBTUEkgYnVzJwogCSAqIGNoaXBzZWxlY3QgbG93IGR1cmluZyB0aGUgZW50aWUgdHJhbnNhY3Rpb24gdG8gYXZvaWQgYW55Ci0JICogcmVzZXQgdG8gdGhlIGRhdGEgc3RyZWFtIGNvbW1pbmcgZnJvbSB0aGUgY2hpcC4KKwkgKiByZXNldCB0byB0aGUgZGF0YSBzdHJlYW0gY29taW5nIGZyb20gdGhlIGNoaXAuCiAJICovCiAKIAlmb3IgKDsgcnhmYyAhPSAwOyByeGZjLS0pIHsKQEAgLTYzNCw3ICs2MzQsNyBAQAogCiAvKioKICAqIGNhbGNfdHhsZW4gLSBjYWxjdWxhdGUgc2l6ZSBvZiBtZXNzYWdlIHRvIHNlbmQgcGFja2V0Ci0gKiBAbGVuOiBMZW5naHQgb2YgZGF0YQorICogQGxlbjogTGVuZ3RoIG9mIGRhdGEKICAqCiAgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBUWEZJRk8gbWVzc2FnZSBuZWVkZWQgdG8gc2VuZAogICogdGhpcyBwYWNrZXQuCkBAIC0xNDcyLDcgKzE0NzIsNyBAQAogICogQHJlZzogVGhlIHJlZ2lzdGVyIHRvIHJlYWQuCiAgKgogICogVGhpcyBjYWxsIHJlYWRzIGRhdGEgZnJvbSB0aGUgUEhZIHJlZ2lzdGVyIHNwZWNpZmllZCBpbiBAcmVnLiBTaW5jZSB0aGUKLSAqIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgTUlJIHJlZ2lzdGVycywgdGhlIG5vbi1leGlzdGFudCB2YWx1ZXMKKyAqIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGFsbCB0aGUgTUlJIHJlZ2lzdGVycywgdGhlIG5vbi1leGlzdGVudCB2YWx1ZXMKICAqIGFyZSBhbHdheXMgcmV0dXJuZWQgYXMgemVyby4KICAqCiAgKiBXZSByZXR1cm4gemVybyBmb3IgdW5zdXBwb3J0ZWQgcmVnaXN0ZXJzIGFzIHRoZSBNSUkgY29kZSBkb2VzIG5vdCBjaGVjawpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQva3M4ODUxX21sbC5jIGIvZHJpdmVycy9uZXQva3M4ODUxX21sbC5jCmluZGV4IDJlMmM2OWIuLjYxNjMxY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2tzODg1MV9tbGwuYworKysgYi9kcml2ZXJzL25ldC9rczg4NTFfbWxsLmMKQEAgLTQ3MCw3ICs0NzAsNyBAQAogICoKICAqIEFsbCB0aGVzZSBjYWxscyBpc3N1ZSB0cmFuc2FjdGlvbnMgdG8gYWNjZXNzIHRoZSBjaGlwJ3MgcmVnaXN0ZXJzLiBUaGV5CiAgKiBhbGwgcmVxdWlyZSB0aGF0IHRoZSBuZWNlc3NhcnkgbG9jayBpcyBoZWxkIHRvIHByZXZlbnQgYWNjZXNzZXMgd2hlbiB0aGUKLSAqIGNoaXAgaXMgYnVzeSB0cmFuc2ZlcmluZyBwYWNrZXQgZGF0YSAoUlgvVFggRklGTyBhY2Nlc3NlcykuCisgKiBjaGlwIGlzIGJ1c3kgdHJhbnNmZXJyaW5nIHBhY2tldCBkYXRhIChSWC9UWCBGSUZPIGFjY2Vzc2VzKS4KICAqLwogCiAvKioKQEAgLTEzNjQsNyArMTM2NCw3IEBACiAgKiBAcmVnOiBUaGUgcmVnaXN0ZXIgdG8gcmVhZC4KICAqCiAgKiBUaGlzIGNhbGwgcmVhZHMgZGF0YSBmcm9tIHRoZSBQSFkgcmVnaXN0ZXIgc3BlY2lmaWVkIGluIEByZWcuIFNpbmNlIHRoZQotICogZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSBNSUkgcmVnaXN0ZXJzLCB0aGUgbm9uLWV4aXN0YW50IHZhbHVlcworICogZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSBNSUkgcmVnaXN0ZXJzLCB0aGUgbm9uLWV4aXN0ZW50IHZhbHVlcwogICogYXJlIGFsd2F5cyByZXR1cm5lZCBhcyB6ZXJvLgogICoKICAqIFdlIHJldHVybiB6ZXJvIGZvciB1bnN1cHBvcnRlZCByZWdpc3RlcnMgYXMgdGhlIE1JSSBjb2RlIGRvZXMgbm90IGNoZWNrCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9saWI4MzkwLmMgYi9kcml2ZXJzL25ldC9saWI4MzkwLmMKaW5kZXggZGE3NGRiNC4uMTdiNzVlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbGliODM5MC5jCisrKyBiL2RyaXZlcnMvbmV0L2xpYjgzOTAuYwpAQCAtMzUsNyArMzUsNyBAQAogICBBbGV4ZXkgS3V6bmV0c292CTogdXNlIHRoZSA4MzkwJ3Mgc2l4IGJpdCBoYXNoIG11bHRpY2FzdCBmaWx0ZXIuCiAgIFBhdWwgR29ydG1ha2VyCTogdHdlYWsgQU5LJ3MgYWJvdmUgbXVsdGljYXN0IGNoYW5nZXMgYSBiaXQuCiAgIFBhdWwgR29ydG1ha2VyCTogdXBkYXRlIHBhY2tldCBzdGF0aXN0aWNzIGZvciB2Mi4xLngKLSAgQWxhbiBDb3gJCTogc3VwcG9ydCBhcmJpdGFyeSBzdHVwaWQgcG9ydCBtYXBwaW5ncyBvbiB0aGUKKyAgQWxhbiBDb3gJCTogc3VwcG9ydCBhcmJpdHJhcnkgc3R1cGlkIHBvcnQgbWFwcGluZ3Mgb24gdGhlCiAgIAkJCSAgNjhLIE1hY2ludG9zaC4gU3VwcG9ydCA+MTZiaXQgSS9PIHNwYWNlcwogICBQYXVsIEdvcnRtYWtlcgk6IGFkZCBrbW9kIHN1cHBvcnQgZm9yIGF1dG8tbG9hZGluZyBvZiB0aGUgODM5MAogCQkJICBtb2R1bGUgYnkgYWxsIGRyaXZlcnMgdGhhdCByZXF1aXJlIGl0LgpAQCAtMTIxLDcgKzEyMSw3IEBACiAvKgogICoJU01QIGFuZCB0aGUgODM5MCBzZXR1cC4KICAqCi0gKglUaGUgODM5MCBpc250IGV4YWN0bHkgZGVzaWduZWQgdG8gYmUgbXVsdGl0aHJlYWRlZCBvbiBSWC9UWC4gVGhlcmUgaXMKKyAqCVRoZSA4MzkwIGlzbid0IGV4YWN0bHkgZGVzaWduZWQgdG8gYmUgbXVsdGl0aHJlYWRlZCBvbiBSWC9UWC4gVGhlcmUgaXMKICAqCWEgcGFnZSByZWdpc3RlciB0aGF0IGNvbnRyb2xzIGJhbmsgYW5kIHBhY2tldCBidWZmZXIgYWNjZXNzLiBXZSBndWFyZAogICoJdGhpcyB3aXRoIGVpX2xvY2FsLT5wYWdlX2xvY2suIE5vYm9keSBzaG91bGQgYXNzdW1lIG9yIHNldCB0aGUgcGFnZSBvdGhlcgogICoJdGhhbiB6ZXJvIHdoZW4gdGhlIGxvY2sgaXMgbm90IGhlbGQuIExvY2sgaG9sZGVycyBtdXN0IHJlc3RvcmUgcGFnZSAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9scDQ4NmUuYyBiL2RyaXZlcnMvbmV0L2xwNDg2ZS5jCmluZGV4IDM2OTg4MjQuLjM4NWE5NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2xwNDg2ZS5jCisrKyBiL2RyaXZlcnMvbmV0L2xwNDg2ZS5jCkBAIC0yNyw3ICsyNyw3IEBACiAKIAlDcmVkaXRzOgogCVRoYW5rcyB0byBNdXJwaHkgU29mdHdhcmUgQlYgZm9yIGxldHRpbmcgbWUgd3JpdGUgdGhpcyBpbiB0aGVpciB0aW1lLgotCVdlbGwsIGFjdHVhbGx5LCBJIGdldCBwYXllZCBkb2luZyB0aGlzLi4uCisJV2VsbCwgYWN0dWFsbHksIEkgZ2V0IHBhaWQgZG9pbmcgdGhpcy4uLgogCShBbHNvOiBzZWUgaHR0cDovL3d3dy5tdXJwaHkubmwgZm9yIG11cnBoeSwgYW5kIG15IGhvbWVwYWdlIH5hcmQgZm9yCiAJbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgUHJvZmVzc2lvbmFsIFdvcmtzdGF0aW9uKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZXRoLmggYi9kcml2ZXJzL25ldC9tZXRoLmgKaW5kZXggYTc4ZGMxYy4uNWIxNDVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWV0aC5oCisrKyBiL2RyaXZlcnMvbmV0L21ldGguaApAQCAtMTQ0LDcgKzE0NCw3IEBACiAJCQkJICAgICAgIC8qIEJpdHMgMjIgdGhyb3VnaCAyOCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgSVBHUjIgKi8KIAogI2RlZmluZSBNRVRIX1JFVl9TSElGVCAyOSAgICAgICAvKiBCaXRzIDI5IHRocm91Z2ggMzEgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByZXZpc2lvbiAqLwotCQkJCSAgICAgICAvKiAwMDA6IEluaXRhbCByZXZpc2lvbiAqLworCQkJCSAgICAgICAvKiAwMDA6IEluaXRpYWwgcmV2aXNpb24gKi8KIAkJCQkgICAgICAgLyogMDAxOiBGaXJzdCByZXZpc2lvbiwgSW1wcm92ZWQgVFggY29uY2F0ZW5hdGlvbiAqLwogCiAKQEAgLTE5Myw3ICsxOTMsNyBAQAogCQkJCQkgICAgICAJLyogMTogQSBUWCBtZXNzYWdlIGhhZCB0aGUgSU5UIHJlcXVlc3QgYml0IHNldCwgdGhlIHBhY2tldCBoYXMgYmVlbiBzZW50LiAqLwogI2RlZmluZSBNRVRIX0lOVF9UWF9MSU5LX0ZBSUwJQklUKDIpCS8qIDA6IE5vIGludGVycnVwdCBwZW5kaW5nLCAxOiBQSFkgaGFzIHJlcG9ydGVkIGEgbGluayBmYWlsdXJlICovCiAjZGVmaW5lIE1FVEhfSU5UX01FTV9FUlJPUglCSVQoMykJLyogMDogTm8gaW50ZXJydXB0IHBlbmRpbmcgKi8KLQkJCQkJCS8qIDE6IEEgbWVtb3J5IGVycm9yIG9jY3VycmVkIGR1cnJpbmcgRE1BLCBETUEgc3RvcHBlZCwgRmF0YWwgKi8KKwkJCQkJCS8qIDE6IEEgbWVtb3J5IGVycm9yIG9jY3VycmVkIGR1cmluZyBETUEsIERNQSBzdG9wcGVkLCBGYXRhbCAqLwogI2RlZmluZSBNRVRIX0lOVF9UWF9BQk9SVAkJQklUKDQpCS8qIDA6IE5vIGludGVycnVwdCBwZW5kaW5nLCAxOiBUaGUgVFggYWJvcnRlZCBvcGVyYXRpb24sIERNQSBzdG9wcGVkLCBGQVRBTCAqLwogI2RlZmluZSBNRVRIX0lOVF9SWF9USFJFU0hPTEQJQklUKDUpCS8qIDA6IE5vIGludGVycnVwdCBwZW5kaW5nLCAxOiBTZWxlY3RlZCByZWNlaXZlIHRocmVzaG9sZCBjb25kaXRpb24gVmFsaWQgKi8KICNkZWZpbmUgTUVUSF9JTlRfUlhfVU5ERVJGTE9XCUJJVCg2KQkvKiAwOiBObyBpbnRlcnJ1cHQgcGVuZGluZywgMTogRklGTyB3YXMgZW1wdHksIHBhY2tldCBjb3VsZCBub3QgYmUgcXVldWVkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fbWFpbi5jCmluZGV4IDkzMTdiNjEuLjkyNzZiMWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX21haW4uYworKysgYi9kcml2ZXJzL25ldC9tbHg0L2VuX21haW4uYwpAQCAtMjM2LDcgKzIzNiw3IEBACiAJCWdvdG8gZXJyX21yOwogCX0KIAotCS8qIENvbmZpZ3VyZSB3aWNoIHBvcnRzIHRvIHN0YXJ0IGFjY29yZGluZyB0byBtb2R1bGUgcGFyYW1ldGVycyAqLworCS8qIENvbmZpZ3VyZSB3aGljaCBwb3J0cyB0byBzdGFydCBhY2NvcmRpbmcgdG8gbW9kdWxlIHBhcmFtZXRlcnMgKi8KIAltZGV2LT5wb3J0X2NudCA9IDA7CiAJbWx4NF9mb3JlYWNoX3BvcnQoaSwgZGV2LCBNTFg0X1BPUlRfVFlQRV9FVEgpCiAJCW1kZXYtPnBvcnRfY250Kys7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L2VuX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9uZXRkZXYuYwppbmRleCA0ZjE1OGJhLi43NzA2M2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX25ldGRldi5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvZW5fbmV0ZGV2LmMKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCQkJCQkJCSAgICAgICBwcml2LT5wb3J0KTsKIAkJCWlmIChlcnIpCiAJCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZW5hYmxpbmcgIgotCQkJCQkgICAgICJwcm9taXNjb3VzIG1vZGVcbiIpOworCQkJCQkgICAgICJwcm9taXNjdW91cyBtb2RlXG4iKTsKIAogCQkJLyogRGlzYWJsZSBwb3J0IG11bHRpY2FzdCBmaWx0ZXIgKHVuY29uZGl0aW9uYWxseSkgKi8KIAkJCWVyciA9IG1seDRfU0VUX01DQVNUX0ZMVFIobWRldi0+ZGV2LCBwcml2LT5wb3J0LCAwLApAQCAtMjc2LDcgKzI3Niw3IEBACiAJfQogCiAJLyoKLQkgKiBOb3QgaW4gcHJvbWlzY291cyBtb2RlCisJICogTm90IGluIHByb21pc2N1b3VzIG1vZGUKIAkgKi8KIAogCWlmIChwcml2LT5mbGFncyAmIE1MWDRfRU5fRkxBR19QUk9NSVNDKSB7CkBAIC0yOTIsMTQgKzI5MiwxNCBAQAogCQkJZXJyID0gbWx4NF91bmljYXN0X3Byb21pc2NfcmVtb3ZlKG1kZXYtPmRldiwgcHJpdi0+YmFzZV9xcG4sCiAJCQkJCQkJICBwcml2LT5wb3J0KTsKIAkJaWYgKGVycikKLQkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGRpc2FibGluZyBwcm9taXNjb3VzIG1vZGVcbiIpOworCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZGlzYWJsaW5nIHByb21pc2N1b3VzIG1vZGVcbiIpOwogCiAJCS8qIERpc2FibGUgTXVsdGljYXN0IHByb21pc2MgKi8KIAkJaWYgKHByaXYtPmZsYWdzICYgTUxYNF9FTl9GTEFHX01DX1BST01JU0MpIHsKIAkJCWVyciA9IG1seDRfbXVsdGljYXN0X3Byb21pc2NfcmVtb3ZlKG1kZXYtPmRldiwgcHJpdi0+YmFzZV9xcG4sCiAJCQkJCQkJICAgIHByaXYtPnBvcnQpOwogCQkJaWYgKGVycikKLQkJCQllbl9lcnIocHJpdiwgIkZhaWxlZCBkaXNhYmxpbmcgbXVsdGljYXN0IHByb21pc2NvdXMgbW9kZVxuIik7CisJCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZGlzYWJsaW5nIG11bHRpY2FzdCBwcm9taXNjdW91cyBtb2RlXG4iKTsKIAkJCXByaXYtPmZsYWdzICY9IH5NTFg0X0VOX0ZMQUdfTUNfUFJPTUlTQzsKIAkJfQogCkBAIC0zMzEsNyArMzMxLDcgQEAKIAkJCWVyciA9IG1seDRfbXVsdGljYXN0X3Byb21pc2NfcmVtb3ZlKG1kZXYtPmRldiwgcHJpdi0+YmFzZV9xcG4sCiAJCQkJCQkJICAgIHByaXYtPnBvcnQpOwogCQkJaWYgKGVycikKLQkJCQllbl9lcnIocHJpdiwgIkZhaWxlZCBkaXNhYmxpbmcgbXVsdGljYXN0IHByb21pc2NvdXMgbW9kZVxuIik7CisJCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZGlzYWJsaW5nIG11bHRpY2FzdCBwcm9taXNjdW91cyBtb2RlXG4iKTsKIAkJCXByaXYtPmZsYWdzICY9IH5NTFg0X0VOX0ZMQUdfTUNfUFJPTUlTQzsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L2VuX3J4LmMgYi9kcml2ZXJzL25ldC9tbHg0L2VuX3J4LmMKaW5kZXggMDU5OThlZS4uNjJkZDIxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWx4NC9lbl9yeC5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvZW5fcnguYwpAQCAtMzQ1LDYgKzM0NSw4IEBACiAJCWVyciA9IG1seDRfZW5faW5pdF9hbGxvY2F0b3IocHJpdiwgcmluZyk7CiAJCWlmIChlcnIpIHsKIAkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGluaXRpYWxpemluZyByaW5nIGFsbG9jYXRvclxuIik7CisJCQlpZiAocmluZy0+c3RyaWRlIDw9IFRYQkJfU0laRSkKKwkJCQlyaW5nLT5idWYgLT0gVFhCQl9TSVpFOwogCQkJcmluZ19pbmQtLTsKIAkJCWdvdG8gZXJyX2FsbG9jYXRvcjsKIAkJfQpAQCAtMzY5LDYgKzM3MSw4IEBACiAJcmluZ19pbmQgPSBwcml2LT5yeF9yaW5nX251bSAtIDE7CiBlcnJfYWxsb2NhdG9yOgogCXdoaWxlIChyaW5nX2luZCA+PSAwKSB7CisJCWlmIChwcml2LT5yeF9yaW5nW3JpbmdfaW5kXS5zdHJpZGUgPD0gVFhCQl9TSVpFKQorCQkJcHJpdi0+cnhfcmluZ1tyaW5nX2luZF0uYnVmIC09IFRYQkJfU0laRTsKIAkJbWx4NF9lbl9kZXN0cm95X2FsbG9jYXRvcihwcml2LCAmcHJpdi0+cnhfcmluZ1tyaW5nX2luZF0pOwogCQlyaW5nX2luZC0tOwogCX0KQEAgLTcwNiw3ICs3MTAsNyBAQAogfQogCiAKLS8qIENhbGN1bGF0ZSB0aGUgbGFzdCBvZmZzZXQgcG9zaXRpb24gdGhhdCBhY2NvbW9kYXRlcyBhIGZ1bGwgZnJhZ21lbnQKKy8qIENhbGN1bGF0ZSB0aGUgbGFzdCBvZmZzZXQgcG9zaXRpb24gdGhhdCBhY2NvbW1vZGF0ZXMgYSBmdWxsIGZyYWdtZW50CiAgKiAoYXNzdW1pbmcgZmFnbWVudCBzaXplID0gc3RyaWRlLWFsaWduKSAqLwogc3RhdGljIGludCBtbHg0X2VuX2xhc3RfYWxsb2Nfb2Zmc2V0KHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHUxNiBzdHJpZGUsIHUxNiBhbGlnbikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fc2VsZnRlc3QuYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fc2VsZnRlc3QuYwppbmRleCA5YzkxYTkyLi4xOTFhOGRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX3NlbGZ0ZXN0LmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9zZWxmdGVzdC5jCkBAIC0xNDksNyArMTQ5LDcgQEAKIAogCQluZXRpZl9jYXJyaWVyX29mZihkZXYpOwogcmV0cnlfdHg6Ci0JCS8qIFdhaXQgdW50aWxsIGFsbCB0eCBxdWV1ZXMgYXJlIGVtcHR5LgorCQkvKiBXYWl0IHVudGlsIGFsbCB0eCBxdWV1ZXMgYXJlIGVtcHR5LgogCQkgKiB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBhZGRpdGlvbmFsIGluY29taW5nIHRyYWZmaWMKIAkJICogc2luY2Ugd2UgdHVybmVkIHRoZSBjYXJyaWVyIG9mZiAqLwogCQltc2xlZXAoMjAwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fdHguYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fdHguYwppbmRleCAwMWZlYjhmLi5iMjI5YWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX3R4LmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl90eC5jCkBAIC02MzYsNyArNjM2LDcgQEAKIAlpZiAodW5saWtlbHkoIXJlYWxfc2l6ZSkpCiAJCWdvdG8gdHhfZHJvcDsKIAotCS8qIEFsbGlnbiBkZXNjcmlwdG9yIHRvIFRYQkIgc2l6ZSAqLworCS8qIEFsaWduIGRlc2NyaXB0b3IgdG8gVFhCQiBzaXplICovCiAJZGVzY19zaXplID0gQUxJR04ocmVhbF9zaXplLCBUWEJCX1NJWkUpOwogCW5yX3R4YmIgPSBkZXNjX3NpemUgLyBUWEJCX1NJWkU7CiAJaWYgKHVubGlrZWx5KG5yX3R4YmIgPiBNQVhfREVTQ19UWEJCUykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvbWFpbi5jIGIvZHJpdmVycy9uZXQvbWx4NC9tYWluLmMKaW5kZXggNjJmYTdlZS4uMzgxNGZjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWx4NC9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9tYWluLmMKQEAgLTk0NCw2ICs5NDQsMTAgQEAKIAl9CiAKIAlmb3IgKHBvcnQgPSAxOyBwb3J0IDw9IGRldi0+Y2Fwcy5udW1fcG9ydHM7IHBvcnQrKykgeworCQllbnVtIG1seDRfcG9ydF90eXBlIHBvcnRfdHlwZSA9IDA7CisJCW1seDRfU0VOU0VfUE9SVChkZXYsIHBvcnQsICZwb3J0X3R5cGUpOworCQlpZiAocG9ydF90eXBlKQorCQkJZGV2LT5jYXBzLnBvcnRfdHlwZVtwb3J0XSA9IHBvcnRfdHlwZTsKIAkJaWJfcG9ydF9kZWZhdWx0X2NhcHMgPSAwOwogCQllcnIgPSBtbHg0X2dldF9wb3J0X2liX2NhcHMoZGV2LCBwb3J0LCAmaWJfcG9ydF9kZWZhdWx0X2NhcHMpOwogCQlpZiAoZXJyKQpAQCAtOTU4LDYgKzk2Miw3IEBACiAJCQlnb3RvIGVycl9tY2dfdGFibGVfZnJlZTsKIAkJfQogCX0KKwltbHg0X3NldF9wb3J0X21hc2soZGV2KTsKIAogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L21jZy5jIGIvZHJpdmVycy9uZXQvbWx4NC9tY2cuYwppbmRleCBjNmQzMzZhLi5lNjNjMzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L21jZy5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvbWNnLmMKQEAgLTIyMiw3ICsyMjIsNyBAQAogCiAJLyogdGhlIGdpdmVuIHFwbiBpcyBsaXN0ZWQgYXMgYSBwcm9taXNjIHFwbgogCSAqIHdlIG5lZWQgdG8gYWRkIGl0IGFzIGEgZHVwbGljYXRlIHRvIHRoaXMgZW50cnkKLQkgKiBmb3IgZnV0dXJlIHJlZmVybmNlICovCisJICogZm9yIGZ1dHVyZSByZWZlcmVuY2VzICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkcXAsICZlbnRyeS0+ZHVwbGljYXRlcywgbGlzdCkgewogCQlpZiAocXBuID09IGRxcC0+cXBuKQogCQkJcmV0dXJuIDA7IC8qIHFwIGlzIGFscmVhZHkgZHVwbGljYXRlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NC9tbHg0LmggYi9kcml2ZXJzL25ldC9tbHg0L21seDQuaAppbmRleCBjMWUwZTVmLi5kZDdkNzQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L21seDQuaAorKysgYi9kcml2ZXJzL25ldC9tbHg0L21seDQuaApAQCAtNDMxLDYgKzQzMSw4IEBACiAKIHZvaWQgbWx4NF9oYW5kbGVfY2F0YXNfZXJyKHN0cnVjdCBtbHg0X2RldiAqZGV2KTsKIAoraW50IG1seDRfU0VOU0VfUE9SVChzdHJ1Y3QgbWx4NF9kZXYgKmRldiwgaW50IHBvcnQsCisJCSAgICBlbnVtIG1seDRfcG9ydF90eXBlICp0eXBlKTsKIHZvaWQgbWx4NF9kb19zZW5zZV9wb3J0cyhzdHJ1Y3QgbWx4NF9kZXYgKmRldiwKIAkJCSBlbnVtIG1seDRfcG9ydF90eXBlICpzdHlwZSwKIAkJCSBlbnVtIG1seDRfcG9ydF90eXBlICpkZWZhdWx0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L3BvcnQuYyBiL2RyaXZlcnMvbmV0L21seDQvcG9ydC5jCmluZGV4IGVjYTdkODUuLjg4NTY2NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvcG9ydC5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvcG9ydC5jCkBAIC0xNzIsNyArMTcyLDcgQEAKIAkJfQogCiAJCWlmIChtYWMgPT0gKE1MWDRfTUFDX01BU0sgJiBiZTY0X3RvX2NwdSh0YWJsZS0+ZW50cmllc1tpXSkpKSB7Ci0JCQkvKiBNQUMgYWxyZWFkeSByZWdpc3RlcmVkLCBpbmNyZWFzZSByZWZlcm5jZSBjb3VudCAqLworCQkJLyogTUFDIGFscmVhZHkgcmVnaXN0ZXJlZCwgaW5jcmVhc2UgcmVmZXJlbmNlcyBjb3VudCAqLwogCQkJKyt0YWJsZS0+cmVmc1tpXTsKIAkJCWdvdG8gb3V0OwogCQl9CkBAIC0zNjAsNyArMzYwLDcgQEAKIAkJaWYgKHRhYmxlLT5yZWZzW2ldICYmCiAJCSAgICAodmxhbiA9PSAoTUxYNF9WTEFOX01BU0sgJgogCQkJICAgICAgYmUzMl90b19jcHUodGFibGUtPmVudHJpZXNbaV0pKSkpIHsKLQkJCS8qIFZsYW4gYWxyZWFkeSByZWdpc3RlcmVkLCBpbmNyZWFzZSByZWZlcm5jZSBjb3VudCAqLworCQkJLyogVmxhbiBhbHJlYWR5IHJlZ2lzdGVyZWQsIGluY3JlYXNlIHJlZmVyZW5jZXMgY291bnQgKi8KIAkJCSppbmRleCA9IGk7CiAJCQkrK3RhYmxlLT5yZWZzW2ldOwogCQkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L3NlbnNlLmMgYi9kcml2ZXJzL25ldC9tbHg0L3NlbnNlLmMKaW5kZXggMDE1ZmJlNzguLmUyMzM3YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvc2Vuc2UuYworKysgYi9kcml2ZXJzL25ldC9tbHg0L3NlbnNlLmMKQEAgLTM4LDggKzM4LDggQEAKIAogI2luY2x1ZGUgIm1seDQuaCIKIAotc3RhdGljIGludCBtbHg0X1NFTlNFX1BPUlQoc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBwb3J0LAotCQkJICAgZW51bSBtbHg0X3BvcnRfdHlwZSAqdHlwZSkKK2ludCBtbHg0X1NFTlNFX1BPUlQoc3RydWN0IG1seDRfZGV2ICpkZXYsIGludCBwb3J0LAorCQkgICAgZW51bSBtbHg0X3BvcnRfdHlwZSAqdHlwZSkKIHsKIAl1NjQgb3V0X3BhcmFtOwogCWludCBlcnIgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYyBiL2RyaXZlcnMvbmV0L215cmkxMGdlL215cmkxMGdlLmMKaW5kZXggNjczZGM2MC4uMTQ0NmRlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYworKysgYi9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jCkBAIC0zNzAyLDcgKzM3MDIsNyBAQAogCiAvKgogICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2xpY2VzIHN1cHBvcnRlZC4KLSAqIFRoZSBudW1iZXIgc2xpY2VzIGlzIHRoZSBtaW51bXVtIG9mIHRoZSBudW1iZXIgb2YgQ1BVUywKKyAqIFRoZSBudW1iZXIgc2xpY2VzIGlzIHRoZSBtaW5pbXVtIG9mIHRoZSBudW1iZXIgb2YgQ1BVUywKICAqIHRoZSBudW1iZXIgb2YgTVNJLVggaXJxcyBzdXBwb3J0ZWQsIHRoZSBudW1iZXIgb2Ygc2xpY2VzCiAgKiBzdXBwb3J0ZWQgYnkgdGhlIGZpcm13YXJlCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L215cmlfc2J1cy5jIGIvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMKaW5kZXggYTc2MTA3Ni4uNTNhZWVhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMKKysrIGIvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMKQEAgLTEwMDksNyArMTAwOSw3IEBACiAKIAkvKiBNYXAgaW4gdGhlIE15cmlDT00gcmVnaXN0ZXIvbG9jYWxyYW0gc2V0LiAqLwogCWlmIChtcC0+ZWVwcm9tLmNwdXZlcnMgPCBDUFVWRVJTXzRfMCkgewotCQkvKiBYWFggTWFrZXMgbm8gc2Vuc2UsIGlmIGNvbnRyb2wgcmVnIGlzIG5vbi1leGlzdGFudCB0aGlzCisJCS8qIFhYWCBNYWtlcyBubyBzZW5zZSwgaWYgY29udHJvbCByZWcgaXMgbm9uLWV4aXN0ZW50IHRoaXMKIAkJICogWFhYIGRyaXZlciBjYW5ub3QgZnVuY3Rpb24gYXQgYWxsLi4uIG1heWJlIHByZS00LjAgaXMKIAkJICogWFhYIG9ubHkgYSB2YWxpZCB2ZXJzaW9uIGZvciBQQ0kgY2FyZHM/ICBBc2sgZmVsZHkuLi4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uYXRzZW1pLmMgYi9kcml2ZXJzL25ldC9uYXRzZW1pLmMKaW5kZXggMmZkMzk2My4uYWEyODEzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmF0c2VtaS5jCisrKyBiL2RyaXZlcnMvbmV0L25hdHNlbWkuYwpAQCAtMjAzLDcgKzIwMyw3IEBACiBJSUlkLiBTeW5jaHJvbml6YXRpb24KIAogTW9zdCBvcGVyYXRpb25zIGFyZSBzeW5jaHJvbml6ZWQgb24gdGhlIG5wLT5sb2NrIGlycSBzcGlubG9jaywgZXhjZXB0IHRoZQotcmVjaWV2ZSBhbmQgdHJhbnNtaXQgcGF0aHMgd2hpY2ggYXJlIHN5bmNocm9uaXNlZCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mCityZWNlaXZlIGFuZCB0cmFuc21pdCBwYXRocyB3aGljaCBhcmUgc3luY2hyb25pc2VkIHVzaW5nIGEgY29tYmluYXRpb24gb2YKIGhhcmR3YXJlIGRlc2NyaXB0b3Igb3duZXJzaGlwLCBkaXNhYmxpbmcgaW50ZXJydXB0cyBhbmQgTkFQSSBwb2xsIHNjaGVkdWxpbmcuCiAKIElWYi4gUmVmZXJlbmNlcwpAQCAtNzI2LDcgKzcyNiw3IEBACiAJICogVGhlcmUgYXJlIHR3byBhZGRyZXNzZXMgd2UgbXVzdCBhdm9pZDoKIAkgKiAtIHRoZSBhZGRyZXNzIG9uIHRoZSBleHRlcm5hbCBwaHkgdGhhdCBpcyB1c2VkIGZvciB0cmFuc21pc3Npb24uCiAJICogLSB0aGUgYWRkcmVzcyB0aGF0IHdlIHdhbnQgdG8gYWNjZXNzLiBVc2VyIHNwYWNlIGNhbiBhY2Nlc3MgcGh5cwotCSAqICAgb24gdGhlIG1paSBidXMgd2l0aCBTSU9DR01JSVJFRy9TSU9DU01JSVJFRywgaW5kZXBlbmRhbnQgZnJvbSB0aGUKKwkgKiAgIG9uIHRoZSBtaWkgYnVzIHdpdGggU0lPQ0dNSUlSRUcvU0lPQ1NNSUlSRUcsIGluZGVwZW5kZW50IGZyb20gdGhlCiAJICogICBwaHkgdGhhdCBpcyB1c2VkIGZvciB0cmFuc21pc3Npb24uCiAJICovCiAKQEAgLTE5ODIsNyArMTk4Miw3IEBACiAKIAlucC0+cnhfaGVhZF9kZXNjID0gJm5wLT5yeF9yaW5nWzBdOwogCi0JLyogUGxlYXNlIGJlIGNhcmVmdWxsIGJlZm9yZSBjaGFuZ2luZyB0aGlzIGxvb3AgLSBhdCBsZWFzdCBnY2MtMi45NS4xCisJLyogUGxlYXNlIGJlIGNhcmVmdWwgYmVmb3JlIGNoYW5naW5nIHRoaXMgbG9vcCAtIGF0IGxlYXN0IGdjYy0yLjk1LjEKIAkgKiBtaXNjb21waWxlcyBpdCBvdGhlcndpc2UuCiAJICovCiAJLyogSW5pdGlhbGl6ZSBhbGwgUnggZGVzY3JpcHRvcnMuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19oZHIuaCBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCmluZGV4IGQ4YmQ3M2QuLmRjMTk2N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCisrKyBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCkBAIC03ODAsNyArNzgwLDcgQEAKIAogLyoKICAqIGNhcGFiaWxpdGllcyByZWdpc3RlciwgY2FuIGJlIHVzZWQgdG8gc2VsZWN0aXZlbHkgZW5hYmxlL2Rpc2FibGUgZmVhdHVyZXMKLSAqIGZvciBiYWNrd2FyZCBjb21wYWJpbGl0eQorICogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAqLwogI2RlZmluZSBDUkJfTklDX0NBUEFCSUxJVElFU19IT1NUCU5FVFhFTl9OSUNfUkVHKDB4MWE4KQogI2RlZmluZSBDUkJfTklDX01TSV9NT0RFX0hPU1QJCU5FVFhFTl9OSUNfUkVHKDB4MjcwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnM4MzgyMC5jIGIvZHJpdmVycy9uZXQvbnM4MzgyMC5jCmluZGV4IGE0MWIyY2YuLjY2NjdlMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25zODM4MjAuYworKysgYi9kcml2ZXJzL25ldC9uczgzODIwLmMKQEAgLTUxMiw3ICs1MTIsNyBAQAogLyogUGFja2V0IFJlY2VpdmVyCiAgKgogICogVGhlIGhhcmR3YXJlIHN1cHBvcnRzIGxpbmtlZCBsaXN0cyBvZiByZWNlaXZlIGRlc2NyaXB0b3JzIGZvcgotICogd2hpY2ggb3duZXJzaGlwIGlzIHRyYW5zZmVyZWQgYmFjayBhbmQgZm9ydGggYnkgbWVhbnMgb2YgYW4KKyAqIHdoaWNoIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCBiYWNrIGFuZCBmb3J0aCBieSBtZWFucyBvZiBhbgogICogb3duZXJzaGlwIGJpdC4gIFdoaWxlIHRoZSBoYXJkd2FyZSBkb2VzIHN1cHBvcnQgdGhlIHVzZSBvZiBhCiAgKiByaW5nIGZvciByZWNlaXZlIGRlc2NyaXB0b3JzLCB3ZSBvbmx5IG1ha2UgdXNlIG9mIGEgY2hhaW4gaW4KICAqIGFuIGF0dGVtcHQgdG8gcmVkdWNlIGJ1cyB0cmFmZmljIHVuZGVyIGhlYXZ5IGxvYWQgc2NlbmFyaW9zLgpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAKICNpZmRlZiBOUzgzODIwX1ZMQU5fQUNDRUxfU1VQUE9SVAogCWlmKHZsYW5fdHhfdGFnX3ByZXNlbnQoc2tiKSkgewogCQkvKiBmZXRjaCB0aGUgdmxhbiB0YWcgaW5mbyBvdXQgb2YgdGhlCi0JCSAqIGFuY2lsbGlhcnkgZGF0YSBpZiB0aGUgdmxhbiBjb2RlCisJCSAqIGFuY2lsbGFyeSBkYXRhIGlmIHRoZSB2bGFuIGNvZGUKIAkJICogaXMgdXNpbmcgaHcgdmxhbiBhY2NlbGVyYXRpb24KIAkJICovCiAJCXNob3J0IHRhZyA9IHZsYW5fdHhfdGFnX2dldChza2IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlLmggYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaAppbmRleCBlMWUzM2M4Li5iZjEyNmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaAorKysgYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaApAQCAtMzUxLDcgKzM1MSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX21hY19pbmZvIC0gTUFDIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX21hY19pbmZvIC0gTUFDIGluZm9ybWF0aW9uCiAgKiBAYWRkcls2XToJCVN0b3JlIHRoZSBNQUMgYWRkcmVzcwogICogQGZjOgkJCU1vZGUgb2YgZmxvdyBjb250cm9sCiAgKiBAZmNfYXV0b25lZzoJCUF1dG8gbmVnb3RpYXRpb24gZW5hYmxlIGZvciBmbG93IGNvbnRyb2wgc2V0dGluZwpAQCAtMzc1LDcgKzM3NSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX3BoeV9pbmZvIC0gUEhZIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX3BoeV9pbmZvIC0gUEhZIGluZm9ybWF0aW9uCiAgKiBAYWRkcjoJCVBIWSBhZGRyZXNzCiAgKiBAaWQ6CQkJUEhZJ3MgaWRlbnRpZmllcgogICogQHJldmlzaW9uOgkJUEhZJ3MgcmV2aXNpb24KQEAgLTM5Myw3ICszOTMsNyBAQAogLyohCiAgKiBAaW5ncm91cCBHaWdhYml0IEV0aGVyIGRyaXZlciBMYXllcgogICogQHN0cnVjdCAgcGNoX2diZV9idXNfaW5mbwotICogQGJyaWVmICAgQnVzIGluZm9tYXRpb24KKyAqIEBicmllZiAgIEJ1cyBpbmZvcm1hdGlvbgogICovCiBzdHJ1Y3QgcGNoX2diZV9idXNfaW5mbyB7CiAJdTggdHlwZTsKQEAgLTQwNCw3ICs0MDQsNyBAQAogLyohCiAgKiBAaW5ncm91cCBHaWdhYml0IEV0aGVyIGRyaXZlciBMYXllcgogICogQHN0cnVjdCAgcGNoX2diZV9odwotICogQGJyaWVmICAgSGFyZHdhcmUgaW5mb21hdGlvbgorICogQGJyaWVmICAgSGFyZHdhcmUgaW5mb3JtYXRpb24KICAqLwogc3RydWN0IHBjaF9nYmVfaHcgewogCXZvaWQgKmJhY2s7CkBAIC00NjIsNyArNDYyLDcgQEAKIAogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX2J1ZmZlciAtIEJ1ZmZlciBpbmZvbWF0aW9uCisgKiBzdHJ1Y3QgcGNoX2diZV9idWZmZXIgLSBCdWZmZXIgaW5mb3JtYXRpb24KICAqIEBza2I6CXBvaW50ZXIgdG8gYSBzb2NrZXQgYnVmZmVyCiAgKiBAZG1hOglETUEgYWRkcmVzcwogICogQHRpbWVfc3RhbXA6CXRpbWUgc3RhbXAKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgcGNoX2diZV90eF9yaW5nIC0gdHggcmluZyBpbmZvbWF0aW9uCisgKiBzdHJ1Y3QgcGNoX2diZV90eF9yaW5nIC0gdHggcmluZyBpbmZvcm1hdGlvbgogICogQHR4X2xvY2s6CXNwaW5sb2NrIHN0cnVjdHMKICAqIEBkZXNjOglwb2ludGVyIHRvIHRoZSBkZXNjcmlwdG9yIHJpbmcgbWVtb3J5CiAgKiBAZG1hOglwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBkZXNjcmlwdG9yIHJpbmcKQEAgLTQ5OSw3ICs0OTksNyBAQAogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgcGNoX2diZV9yeF9yaW5nIC0gcnggcmluZyBpbmZvbWF0aW9uCisgKiBzdHJ1Y3QgcGNoX2diZV9yeF9yaW5nIC0gcnggcmluZyBpbmZvcm1hdGlvbgogICogQGRlc2M6CXBvaW50ZXIgdG8gdGhlIGRlc2NyaXB0b3IgcmluZyBtZW1vcnkKICAqIEBkbWE6CXBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgcmluZwogICogQHNpemU6CWxlbmd0aCBvZiBkZXNjcmlwdG9yIHJpbmcgaW4gYnl0ZXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfZXRodG9vbC5jCmluZGV4IGM4Yzg3M2IuLmQyMTc0YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9ldGh0b29sLmMKKysrIGIvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX2V0aHRvb2wuYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgInBjaF9nYmVfYXBpLmgiCiAKIC8qKgotICogcGNoX2diZV9zdGF0cyAtIFN0YXRzIGl0ZW0gaW5mb21hdGlvbgorICogcGNoX2diZV9zdGF0cyAtIFN0YXRzIGl0ZW0gaW5mb3JtYXRpb24KICAqLwogc3RydWN0IHBjaF9nYmVfc3RhdHMgewogCWNoYXIgc3RyaW5nW0VUSF9HU1RSSU5HX0xFTl07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX21haW4uYwppbmRleCA1MDk4Njg0Li4yZWYyZjljIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9tYWluLmMKQEAgLTEwMTEsNyArMTAxMSw3IEBACiAJdG1wX3NrYi0+bGVuID0gc2tiLT5sZW47CiAJbWVtY3B5KCZ0bXBfc2tiLT5kYXRhW0VUSF9ITEVOICsgMl0sICZza2ItPmRhdGFbRVRIX0hMRU5dLAogCSAgICAgICAoc2tiLT5sZW4gLSBFVEhfSExFTikpOwotCS8qLS0gU2V0IEJ1ZmZlciBpbmZvbWF0aW9uIC0tKi8KKwkvKi0tIFNldCBCdWZmZXIgaW5mb3JtYXRpb24gLS0qLwogCWJ1ZmZlcl9pbmZvLT5sZW5ndGggPSB0bXBfc2tiLT5sZW47CiAJYnVmZmVyX2luZm8tPmRtYSA9IGRtYV9tYXBfc2luZ2xlKCZhZGFwdGVyLT5wZGV2LT5kZXYsIHRtcF9za2ItPmRhdGEsCiAJCQkJCSAgYnVmZmVyX2luZm8tPmxlbmd0aCwKQEAgLTE1NDAsNyArMTU0MCw3IEBACiAJc2l6ZSA9IChpbnQpc2l6ZW9mKHN0cnVjdCBwY2hfZ2JlX2J1ZmZlcikgKiB0eF9yaW5nLT5jb3VudDsKIAl0eF9yaW5nLT5idWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7CiAJaWYgKCF0eF9yaW5nLT5idWZmZXJfaW5mbykgewotCQlwcl9lcnIoIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBidWZmZXIgaW5mb21hdGlvblxuIik7CisJCXByX2VycigiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBpbmZvcm1hdGlvblxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNpLXNrZWxldG9uLmMgYi9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYwppbmRleCAxNzY2ZGM0Li5jMGYyMzM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYworKysgYi9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYwpAQCAtMjE0LDcgKzIxNCw3IEBACiAJeyAiU01DMTIxMVRYIEVaQ2FyZCAxMC8xMDAgKFJlYWxUZWsgUlRMODEzOSkiIH0sCiAvKgl7IE1QWDUwMzAsICJBY2N0b24gTVBYNTAzMCAoUmVhbFRlayBSVEw4MTM5KSIgfSwqLwogCXsgIkRlbHRhIEVsZWN0cm9uaWNzIDgxMzkgMTAvMTAwQmFzZVRYIiB9LAotCXsgIkFkZHRyb24gVGVjaG5vbGd5IDgxMzkgMTAvMTAwQmFzZVRYIiB9LAorCXsgIkFkZHRyb24gVGVjaG5vbG9neSA4MTM5IDEwLzEwMEJhc2VUWCIgfSwKIH07CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNtY2lhLzNjNTc0X2NzLmMgYi9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYwppbmRleCAzMjFiMTJmLi44MWFjMzMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYworKysgYi9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYwpAQCAtOTUwLDcgKzk1MCw3IEBACiB9CiAKIC8qICBVcGRhdGUgc3RhdGlzdGljcy4KLQlTdXByaXNpbmdseSB0aGlzIG5lZWQgbm90IGJlIHJ1biBzaW5nbGUtdGhyZWFkZWQsIGJ1dCBpdCBlZmZlY3RpdmVseSBpcy4KKwlTdXJwcmlzaW5nbHkgdGhpcyBuZWVkIG5vdCBiZSBydW4gc2luZ2xlLXRocmVhZGVkLCBidXQgaXQgZWZmZWN0aXZlbHkgaXMuCiAJVGhlIGNvdW50ZXJzIGNsZWFyIHdoZW4gcmVhZCwgc28gdGhlIGFkZHMgbXVzdCBtZXJlbHkgYmUgYXRvbWljLgogICovCiBzdGF0aWMgdm9pZCB1cGRhdGVfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjbWNpYS9heG5ldF9jcy5jIGIvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKaW5kZXggZDNjYjc3Mi4uMzA3N2Q3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKKysrIGIvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKQEAgLTc4MCw3ICs3ODAsNyBAQAogICBBbGV4ZXkgS3V6bmV0c292CTogdXNlIHRoZSA4MzkwJ3Mgc2l4IGJpdCBoYXNoIG11bHRpY2FzdCBmaWx0ZXIuCiAgIFBhdWwgR29ydG1ha2VyCTogdHdlYWsgQU5LJ3MgYWJvdmUgbXVsdGljYXN0IGNoYW5nZXMgYSBiaXQuCiAgIFBhdWwgR29ydG1ha2VyCTogdXBkYXRlIHBhY2tldCBzdGF0aXN0aWNzIGZvciB2Mi4xLngKLSAgQWxhbiBDb3gJCTogc3VwcG9ydCBhcmJpdGFyeSBzdHVwaWQgcG9ydCBtYXBwaW5ncyBvbiB0aGUKKyAgQWxhbiBDb3gJCTogc3VwcG9ydCBhcmJpdHJhcnkgc3R1cGlkIHBvcnQgbWFwcGluZ3Mgb24gdGhlCiAgIAkJCSAgNjhLIE1hY2ludG9zaC4gU3VwcG9ydCA+MTZiaXQgSS9PIHNwYWNlcwogICBQYXVsIEdvcnRtYWtlcgk6IGFkZCBrbW9kIHN1cHBvcnQgZm9yIGF1dG8tbG9hZGluZyBvZiB0aGUgODM5MAogCQkJICBtb2R1bGUgYnkgYWxsIGRyaXZlcnMgdGhhdCByZXF1aXJlIGl0LgpAQCAtODQyLDcgKzg0Miw3IEBACiAvKgogICoJU01QIGFuZCB0aGUgODM5MCBzZXR1cC4KICAqCi0gKglUaGUgODM5MCBpc250IGV4YWN0bHkgZGVzaWduZWQgdG8gYmUgbXVsdGl0aHJlYWRlZCBvbiBSWC9UWC4gVGhlcmUgaXMKKyAqCVRoZSA4MzkwIGlzbid0IGV4YWN0bHkgZGVzaWduZWQgdG8gYmUgbXVsdGl0aHJlYWRlZCBvbiBSWC9UWC4gVGhlcmUgaXMKICAqCWEgcGFnZSByZWdpc3RlciB0aGF0IGNvbnRyb2xzIGJhbmsgYW5kIHBhY2tldCBidWZmZXIgYWNjZXNzLiBXZSBndWFyZAogICoJdGhpcyB3aXRoIGVpX2xvY2FsLT5wYWdlX2xvY2suIE5vYm9keSBzaG91bGQgYXNzdW1lIG9yIHNldCB0aGUgcGFnZSBvdGhlcgogICoJdGhhbiB6ZXJvIHdoZW4gdGhlIGxvY2sgaXMgbm90IGhlbGQuIExvY2sgaG9sZGVycyBtdXN0IHJlc3RvcmUgcGFnZSAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY21jaWEvc21jOTFjOTJfY3MuYyBiL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jCmluZGV4IDhhOWZmNTMuLjEwODU5MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jCkBAIC0xMjY0LDcgKzEyNjQsNyBAQAogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotICAgIEhhbmRsZSBhIFR4IGFub21vbG91cyBldmVudC4gIEVudGVyZWQgd2hpbGUgaW4gV2luZG93IDIuCisgICAgSGFuZGxlIGEgVHggYW5vbWFsb3VzIGV2ZW50LiAgRW50ZXJlZCB3aGlsZSBpbiBXaW5kb3cgMi4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjbmV0MzIuYyBiL2RyaXZlcnMvbmV0L3BjbmV0MzIuYwppbmRleCBhZWUzYmIwLi43NjgwMzc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY25ldDMyLmMKKysrIGIvZHJpdmVycy9uZXQvcGNuZXQzMi5jCkBAIC0xNjUxLDcgKzE2NTEsNyBAQAogCS8qCiAJICogIE9uIHNlbGVjdGVkIGNoaXBzIHR1cm4gb24gdGhlIEJDUjE4Ok5PVUZMTyBiaXQuIFRoaXMgc3RvcHMgdHJhbnNtaXQKIAkgKiAgc3RhcnRpbmcgdW50aWwgdGhlIHBhY2tldCBpcyBsb2FkZWQuIFN0cmlrZSBvbmUgZm9yIHJlbGlhYmlsaXR5LCBsb3NlCi0JICogIG9uZSBmb3IgbGF0ZW5jeSAtIGFsdGhvdWdoIG9uIFBDSSB0aGlzIGlzbnQgYSBiaWcgbG9zcy4gT2xkZXIgY2hpcHMKKwkgKiAgb25lIGZvciBsYXRlbmN5IC0gYWx0aG91Z2ggb24gUENJIHRoaXMgaXNuJ3QgYSBiaWcgbG9zcy4gT2xkZXIgY2hpcHMKIAkgKiAgaGF2ZSBGSUZPJ3Mgc21hbGxlciB0aGFuIGEgcGFja2V0LCBzbyB5b3UgY2FuJ3QgZG8gdGhpcy4KIAkgKiAgVHVybiBvbiBCQ1IxODpCdXJzdFJkRW4gYW5kIEJDUjE4OkJ1cnN0V3JFbi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IGU4NzBjMDYuLmZmMTA5ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtNTM4LDcgKzUzOCw3IEBACiAvKiBHZW5lcmljIFBIWSBzdXBwb3J0IGFuZCBoZWxwZXIgZnVuY3Rpb25zICovCiAKIC8qKgotICogZ2VucGh5X2NvbmZpZ19hZHZlcnQgLSBzYW5pdGl6ZSBhbmQgYWR2ZXJ0aXNlIGF1dG8tbmVnb3RhdGlvbiBwYXJhbWV0ZXJzCisgKiBnZW5waHlfY29uZmlnX2FkdmVydCAtIHNhbml0aXplIGFuZCBhZHZlcnRpc2UgYXV0by1uZWdvdGlhdGlvbiBwYXJhbWV0ZXJzCiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3QKICAqCiAgKiBEZXNjcmlwdGlvbjogV3JpdGVzIE1JSV9BRFZFUlRJU0Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzLApAQCAtNjg3LDcgKzY4Nyw3IEBACiAJCXJldHVybiByZXN1bHQ7CiAKIAlpZiAocmVzdWx0ID09IDApIHsKLQkJLyogQWR2ZXJ0aXNtZW50IGhhc24ndCBjaGFuZ2VkLCBidXQgbWF5YmUgYW5lZyB3YXMgbmV2ZXIgb24gdG8KKwkJLyogQWR2ZXJ0aXNlbWVudCBoYXNuJ3QgY2hhbmdlZCwgYnV0IG1heWJlIGFuZWcgd2FzIG5ldmVyIG9uIHRvCiAJCSAqIGJlZ2luIHdpdGg/ICBPciBtYXliZSBwaHkgd2FzIGlzb2xhdGVkPyAqLwogCQlpbnQgY3RsID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfQk1DUik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcF9nZW5lcmljLmMgYi9kcml2ZXJzL25ldC9wcHBfZ2VuZXJpYy5jCmluZGV4IDlmNmQ2NzAuLjQ2MDliYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcF9nZW5lcmljLmMKKysrIGIvZHJpdmVycy9uZXQvcHBwX2dlbmVyaWMuYwpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAKIAogCQkvKgogCQkgKmNoZWNrIGlmIHdlIGFyZSBvbiB0aGUgbGFzdCBjaGFubmVsIG9yCi0JCSAqd2UgZXhjZWRlZCB0aGUgbGVuZ2h0IG9mIHRoZSBkYXRhIHRvCisJCSAqd2UgZXhjZWRlZCB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHRvCiAJCSAqZnJhZ21lbnQKIAkJICovCiAJCWlmICgobmZyZWUgPD0gMCkgfHwgKGZsZW4gPiBsZW4pKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYyBiL2RyaXZlcnMvbmV0L3BwcF9zeW5jdHR5LmMKaW5kZXggNGU2YjcyZi4uMjU3M2Y1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYworKysgYi9kcml2ZXJzL25ldC9wcHBfc3luY3R0eS5jCkBAIC0xNzgsNyArMTc4LDcgQEAKICAqIHdheSB0byBmaXggdGhpcyBpcyB0byB1c2UgYSByd2xvY2sgaW4gdGhlIHR0eSBzdHJ1Y3QsIGJ1dCBmb3Igbm93CiAgKiB3ZSB1c2UgYSBzaW5nbGUgZ2xvYmFsIHJ3bG9jayBmb3IgYWxsIHR0eXMgaW4gcHBwIGxpbmUgZGlzY2lwbGluZS4KICAqCi0gKiBGSVhNRTogRml4ZWQgaW4gdHR5X2lvIG5vd2RheXMuCisgKiBGSVhNRTogRml4ZWQgaW4gdHR5X2lvIG5vd2FkYXlzLgogICovCiBzdGF0aWMgREVGSU5FX1JXTE9DSyhkaXNjX2RhdGFfbG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcG9lLmMgYi9kcml2ZXJzL25ldC9wcHBvZS5jCmluZGV4IDc4YzBlM2MuLjcxODg3OWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcG9lLmMKKysrIGIvZHJpdmVycy9uZXQvcHBwb2UuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAgKiAyKSBTZXNzaW9uIHN0YWdlIChNQUMgYW5kIFNJRCBhcmUga25vd24pCiAgKgogICogRXRoZXJuZXQgZnJhbWVzIGhhdmUgYSBzcGVjaWFsIHRhZyBmb3IgdGhpcyBidXQKLSAqIHdlIHVzZSBzaW1wbGllciBhcHByb2FjaCBiYXNlZCBvbiBzZXNzaW9uIGlkCisgKiB3ZSB1c2Ugc2ltcGxlciBhcHByb2FjaCBiYXNlZCBvbiBzZXNzaW9uIGlkCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBzdGFnZV9zZXNzaW9uKF9fYmUxNiBzaWQpCiB7CkBAIC0zMTcsNyArMzE3LDcgQEAKIAkJCWxvY2tfc29jayhzayk7CiAKIAkJCWlmIChwby0+cHBwb2VfZGV2ID09IGRldiAmJgotCQkJICAgIHNrLT5za19zdGF0ZSAmIChQUFBPWF9DT05ORUNURUQgfCBQUFBPWF9CT1VORCkpIHsKKwkJCSAgICBzay0+c2tfc3RhdGUgJiAoUFBQT1hfQ09OTkVDVEVEIHwgUFBQT1hfQk9VTkQgfCBQUFBPWF9aT01CSUUpKSB7CiAJCQkJcHBwb3hfdW5iaW5kX3NvY2soc2spOwogCQkJCXNrLT5za19zdGF0ZSA9IFBQUE9YX1pPTUJJRTsKIAkJCQlzay0+c2tfc3RhdGVfY2hhbmdlKHNrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuYyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuYwppbmRleCA1ZWNmYTRiLi5mZmRmNzM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmMKKysrIGIvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5jCkBAIC02MzIsNyArNjMyLDcgQEAKICAqIEBjYXJkOiBjYXJkIHN0cnVjdHVyZQogICoKICAqIGdlbGljX2NhcmRfZGlzYWJsZV9yeGRtYWMgdGVybWluYXRlcyBwcm9jZXNzaW5nIG9uIHRoZSBETUEgY29udHJvbGxlciBieQotICogdHVyaW5nIG9mZiBETUEgYW5kIGlzc3VlaW5nIGEgZm9yY2UgZW5kCisgKiB0dXJpbmcgb2ZmIERNQSBhbmQgaXNzdWluZyBhIGZvcmNlIGVuZAogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2VsaWNfY2FyZF9kaXNhYmxlX3J4ZG1hYyhzdHJ1Y3QgZ2VsaWNfY2FyZCAqY2FyZCkKIHsKQEAgLTY1MCw3ICs2NTAsNyBAQAogICogQGNhcmQ6IGNhcmQgc3RydWN0dXJlCiAgKgogICogZ2VsaWNfY2FyZF9kaXNhYmxlX3R4ZG1hYyB0ZXJtaW5hdGVzIHByb2Nlc3Npbmcgb24gdGhlIERNQSBjb250cm9sbGVyIGJ5Ci0gKiB0dXJpbmcgb2ZmIERNQSBhbmQgaXNzdWVpbmcgYSBmb3JjZSBlbmQKKyAqIHR1cmluZyBvZmYgRE1BIGFuZCBpc3N1aW5nIGEgZm9yY2UgZW5kCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBnZWxpY19jYXJkX2Rpc2FibGVfdHhkbWFjKHN0cnVjdCBnZWxpY19jYXJkICpjYXJkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5oIGIvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5oCmluZGV4IDMyNTIxYWUuLmZhZGFkZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuaAorKysgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmgKQEAgLTExNyw3ICsxMTcsNyBAQAogCUdFTElDX0RFU0NSX1JYREFUQUVSUgk9IDB4MDAwMjAwMDAsIC8qIElQIHBhY2tldCBmb3JtYXQgZXJyb3IgKi8KIAlHRUxJQ19ERVNDUl9SWENBTEVSUgk9IDB4MDAwMTAwMDAsIC8qIGNhcmlpZXIgZXh0ZW5zaW9uIGxlbmd0aAogCQkJCQkgICAgICAqIGVycm9yICovCi0JR0VMSUNfREVTQ1JfUlhDUkVYRVJSCT0gMHgwMDAwODAwMCwgLyogY2FycmllciBleHRlbnRpb24gZXJyb3IgKi8KKwlHRUxJQ19ERVNDUl9SWENSRVhFUlIJPSAweDAwMDA4MDAwLCAvKiBjYXJyaWVyIGV4dGVuc2lvbiBlcnJvciAqLwogCUdFTElDX0RFU0NSX1JYTUxUQ1NUCT0gMHgwMDAwNDAwMCwgLyogbXVsdGljYXN0IGFkZHJlc3MgZnJhbWUgKi8KIAkvKiBiaXQgMTMuLjAgcmVzZXJ2ZWQgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCmluZGV4IDRhNjI0YTIuLmI1YWUyOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY193aXJlbGVzcy5jCkBAIC04MTQsNyArODE0LDcgQEAKIAkJCSAqIHlvdSB3aWxsIG5vdCBkZWNpZGUgc3VpdGFibGUgY2lwaGVyIGZyb20KIAkJCSAqIGl0cyBiZWFjb24uCiAJCQkgKiBZb3Ugc2hvdWxkIGhhdmUga25vd2xlZGdlIGFib3V0IHRoZSBBUCdzCi0JCQkgKiBjaXBoZXIgaW5mb21hdGlvbiBpbiBvdGhlciBtZXRob2QgcHJpb3IgdG8KKwkJCSAqIGNpcGhlciBpbmZvcm1hdGlvbiBpbiBvdGhlciBtZXRob2QgcHJpb3IgdG8KIAkJCSAqIHRoZSBhc3NvY2lhdGlvbi4KIAkJCSAqLwogCQkJaWYgKCFwcmVjaXNlX2llKCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9weGExNjhfZXRoLmMgYi9kcml2ZXJzL25ldC9weGExNjhfZXRoLmMKaW5kZXggMWI2M2M4YS4uODlmNzU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHhhMTY4X2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L3B4YTE2OF9ldGguYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgKiBwZXAgLSBFVEhFUk5FVCAuCiAgKiBtYWNfYWRkciAtIE1BQyBhZGRyZXNzLgogICogc2tpcCAtIGlmIDEsIHNraXAgdGhpcyBhZGRyZXNzLlVzZWQgaW4gY2FzZSBvZiBkZWxldGluZyBhbiBlbnRyeSB3aGljaCBpcyBhCi0gKgkgIHBhcnQgb2YgY2hhaW4gaW4gdGhlIGhhc2ggdGFibGUuV2UgY2FudCBqdXN0IGRlbGV0ZSB0aGUgZW50cnkgc2luY2UKKyAqCSAgcGFydCBvZiBjaGFpbiBpbiB0aGUgaGFzaCB0YWJsZS5XZSBjYW4ndCBqdXN0IGRlbGV0ZSB0aGUgZW50cnkgc2luY2UKICAqCSAgdGhhdCB3aWxsIGJyZWFrIHRoZSBjaGFpbi5XZSBuZWVkIHRvIGRlZnJhZ21lbnQgdGhlIHRhYmxlcyB0aW1lIHRvCiAgKgkgIHRpbWUuCiAgKiByZCAgIC0gMCBEaXNjYXJkIHBhY2tldCB1cG9uIG1hdGNoLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcWxhM3h4eC5oIGIvZHJpdmVycy9uZXQvcWxhM3h4eC5oCmluZGV4IDMzNjJhNjYuLjczZTIzNDM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9xbGEzeHh4LmgKKysrIGIvZHJpdmVycy9uZXQvcWxhM3h4eC5oCkBAIC03NzAsNyArNzcwLDcgQEAKIAlGTTkzQzU2QV9XRFMgPSAweDAsCiAJRk05M0M1NkFfRVJBU0UgPSAweDMsCiAJRk05M0M1NkFfRVJBU0VfQUxMID0gMHgwLAotLyogQ29tbWFuZCBFeHRlbnRpb25zICovCisvKiBDb21tYW5kIEV4dGVuc2lvbnMgKi8KIAlGTTkzQzU2QV9XRU5fRVhUID0gMHgzLAogCUZNOTNDNTZBX1dSSVRFX0FMTF9FWFQgPSAweDEsCiAJRk05M0M1NkFfV0RTX0VYVCA9IDB4MCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3FsZ2UvcWxnZV9tYWluLmMgYi9kcml2ZXJzL25ldC9xbGdlL3FsZ2VfbWFpbi5jCmluZGV4IDQ5YmZhNTguLjViYjMxMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3FsZ2UvcWxnZV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvcWxnZS9xbGdlX21haW4uYwpAQCAtNjYwLDcgKzY2MCw3IEBACiAvKiBJZiB3ZSdyZSBydW5uaW5nIHdpdGggbXVsdGlwbGUgTVNJLVggdmVjdG9ycyB0aGVuIHdlIGVuYWJsZSBvbiB0aGUgZmx5LgogICogT3RoZXJ3aXNlLCB3ZSBtYXkgaGF2ZSBtdWx0aXBsZSBvdXRzdGFuZGluZyB3b3JrZXJzIGFuZCBkb24ndCB3YW50IHRvCiAgKiBlbmFibGUgdW50aWwgdGhlIGxhc3Qgb25lIGZpbmlzaGVzLiBJbiB0aGlzIGNhc2UsIHRoZSBpcnFfY250IGdldHMKLSAqIGluY3JlbWVudGVkIGV2ZXJ5dGltZSB3ZSBxdWV1ZSBhIHdvcmtlciBhbmQgZGVjcmVtZW50ZWQgZXZlcnl0aW1lCisgKiBpbmNyZW1lbnRlZCBldmVyeSB0aW1lIHdlIHF1ZXVlIGEgd29ya2VyIGFuZCBkZWNyZW1lbnRlZCBldmVyeSB0aW1lCiAgKiBhIHdvcmtlciBmaW5pc2hlcy4gIE9uY2UgaXQgaGl0cyB6ZXJvIHdlIGVuYWJsZSB0aGUgaW50ZXJydXB0LgogICovCiB1MzIgcWxfZW5hYmxlX2NvbXBsZXRpb25faW50ZXJydXB0KHN0cnVjdCBxbF9hZGFwdGVyICpxZGV2LCB1MzIgaW50cikKQEAgLTMyOTksNyArMzI5OSw3IEBACiAgKiB3aWxsIHNlcnZpY2UgaXQuICBBbiBleGFtcGxlIHdvdWxkIGJlIGlmIHRoZXJlIGFyZQogICogMiB2ZWN0b3JzIChzbyAyIFJTUyByaW5ncykgYW5kIDggVFggY29tcGxldGlvbiByaW5ncy4KICAqIFRoaXMgd291bGQgbWVhbiB0aGF0IHZlY3RvciAwIHdvdWxkIHNlcnZpY2UgUlNTIHJpbmcgMAotICogYW5kIFRYIGNvbXBldGlvbiByaW5ncyAwLDEsMiBhbmQgMy4gIFZlY3RvciAxIHdvdWxkCisgKiBhbmQgVFggY29tcGxldGlvbiByaW5ncyAwLDEsMiBhbmQgMy4gIFZlY3RvciAxIHdvdWxkCiAgKiBzZXJ2aWNlIFJTUyByaW5nIDEgYW5kIFRYIGNvbXBsZXRpb24gcmluZ3MgNCw1LDYgYW5kIDcuCiAgKi8KIHN0YXRpYyB2b2lkIHFsX3NldF90eF92ZWN0KHN0cnVjdCBxbF9hZGFwdGVyICpxZGV2KQpAQCAtNDE1Miw3ICs0MTUyLDcgQEAKIAlpbnQgaSwgc3RhdHVzOwogCXUzMiBsYnFfYnVmX2xlbjsKIAotCS8qIFdhaXQgZm9yIGFuIG91c3RhbmRpbmcgcmVzZXQgdG8gY29tcGxldGUuICovCisJLyogV2FpdCBmb3IgYW4gb3V0c3RhbmRpbmcgcmVzZXQgdG8gY29tcGxldGUuICovCiAJaWYgKCF0ZXN0X2JpdChRTF9BREFQVEVSX1VQLCAmcWRldi0+ZmxhZ3MpKSB7CiAJCWludCBpID0gMzsKIAkJd2hpbGUgKGktLSAmJiAhdGVzdF9iaXQoUUxfQURBUFRFUl9VUCwgJnFkZXYtPmZsYWdzKSkgewpAQCAtNDI4MSw3ICs0MjgxLDcgQEAKIAkJCWlmIChxbF9zZXRfcm91dGluZ19yZWcKIAkJCSAgICAocWRldiwgUlRfSURYX1BST01JU0NVT1VTX1NMT1QsIFJUX0lEWF9WQUxJRCwgMSkpIHsKIAkJCQluZXRpZl9lcnIocWRldiwgaHcsIHFkZXYtPm5kZXYsCi0JCQkJCSAgIkZhaWxlZCB0byBzZXQgcHJvbWlzY291cyBtb2RlLlxuIik7CisJCQkJCSAgIkZhaWxlZCB0byBzZXQgcHJvbWlzY3VvdXMgbW9kZS5cbiIpOwogCQkJfSBlbHNlIHsKIAkJCQlzZXRfYml0KFFMX1BST01JU0NVT1VTLCAmcWRldi0+ZmxhZ3MpOwogCQkJfQpAQCAtNDI5MSw3ICs0MjkxLDcgQEAKIAkJCWlmIChxbF9zZXRfcm91dGluZ19yZWcKIAkJCSAgICAocWRldiwgUlRfSURYX1BST01JU0NVT1VTX1NMT1QsIFJUX0lEWF9WQUxJRCwgMCkpIHsKIAkJCQluZXRpZl9lcnIocWRldiwgaHcsIHFkZXYtPm5kZXYsCi0JCQkJCSAgIkZhaWxlZCB0byBjbGVhciBwcm9taXNjb3VzIG1vZGUuXG4iKTsKKwkJCQkJICAiRmFpbGVkIHRvIGNsZWFyIHByb21pc2N1b3VzIG1vZGUuXG4iKTsKIAkJCX0gZWxzZSB7CiAJCQkJY2xlYXJfYml0KFFMX1BST01JU0NVT1VTLCAmcWRldi0+ZmxhZ3MpOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcjYwNDAuYyBiL2RyaXZlcnMvbmV0L3I2MDQwLmMKaW5kZXggZTNlYmQ5MC4uMjAwYTM2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcjYwNDAuYworKysgYi9kcml2ZXJzL25ldC9yNjA0MC5jCkBAIC01MzUsNyArNTM1LDcgQEAKIAkJCS8qIFJYIGRyaWJibGUgKi8KIAkJCWlmIChlcnIgJiBEU0NfUlhfRVJSX0RSSSkKIAkJCQlkZXYtPnN0YXRzLnJ4X2ZyYW1lX2Vycm9ycysrOwotCQkJLyogQnVmZmVyIGxlbmdodCBleGNlZWRlZCAqLworCQkJLyogQnVmZmVyIGxlbmd0aCBleGNlZWRlZCAqLwogCQkJaWYgKGVyciAmIERTQ19SWF9FUlJfQlVGKQogCQkJCWRldi0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogCQkJLyogUGFja2V0IHRvbyBsb25nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zMmlvLmMgYi9kcml2ZXJzL25ldC9zMmlvLmMKaW5kZXggMzU2ZTc0ZC4uMzM3YmRjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvczJpby5jCisrKyBiL2RyaXZlcnMvbmV0L3MyaW8uYwpAQCAtMjM1Myw3ICsyMzUzLDcgQEAKIAogCWlmIChzMmlvX2xpbmtfZmF1bHRfaW5kaWNhdGlvbihuaWMpID09IE1BQ19STUFDX0VSUl9USU1FUikgewogCQkvKgotCQkgKiBEb250IHNlZSBsaW5rIHN0YXRlIGludGVycnVwdHMgaW5pdGFsbHkgb24gc29tZSBzd2l0Y2hlcywKKwkJICogRG9udCBzZWUgbGluayBzdGF0ZSBpbnRlcnJ1cHRzIGluaXRpYWxseSBvbiBzb21lIHN3aXRjaGVzLAogCQkgKiBzbyBkaXJlY3RseSBzY2hlZHVsaW5nIHRoZSBsaW5rIHN0YXRlIHRhc2sgaGVyZS4KIAkJICovCiAJCXNjaGVkdWxlX3dvcmsoJm5pYy0+c2V0X2xpbmtfdGFzayk7CkBAIC0zNTYzLDcgKzM1NjMsNyBAQAogCX0KIAogCS8qCi0JICogQ2xlYXIgc3B1cmlvdXMgRUNDIGludGVycnVwdHMgdGhhdCB3b3VsZCBoYXZlIG9jY3VyZWQgb24KKwkgKiBDbGVhciBzcHVyaW91cyBFQ0MgaW50ZXJydXB0cyB0aGF0IHdvdWxkIGhhdmUgb2NjdXJyZWQgb24KIAkgKiBYRlJBTUUgSUkgY2FyZHMgYWZ0ZXIgcmVzZXQuCiAJICovCiAJaWYgKHNwLT5kZXZpY2VfdHlwZSA9PSBYRlJBTUVfSUlfREVWSUNFKSB7CkBAIC00MDY1LDcgKzQwNjUsNyBAQAogICogIERlc2NyaXB0aW9uIDoKICAqICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBUeCBlbnRyeSBwb2ludCBvZiB0aGUgZHJpdmVyLiBTMklPIE5JQyBzdXBwb3J0cwogICogIGNlcnRhaW4gcHJvdG9jb2wgYXNzaXN0IGZlYXR1cmVzIG9uIFR4IHNpZGUsIG5hbWVseSAgQ1NPLCBTL0csIExTTy4KLSAqICBOT1RFOiB3aGVuIGRldmljZSBjYW50IHF1ZXVlIHRoZSBwa3QsanVzdCB0aGUgdHJhbnNfc3RhcnQgdmFyaWFibGUgd2lsbAorICogIE5PVEU6IHdoZW4gZGV2aWNlIGNhbid0IHF1ZXVlIHRoZSBwa3QsanVzdCB0aGUgdHJhbnNfc3RhcnQgdmFyaWFibGUgd2lsbAogICogIG5vdCBiZSB1cGFkdGVkLgogICogIFJldHVybiB2YWx1ZToKICAqICAwIG9uIHN1Y2Nlc3MgJiAxIG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zMmlvLmggYi9kcml2ZXJzL25ldC9zMmlvLmgKaW5kZXggN2QxNjAzMC4uMmQxNDQ5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvczJpby5oCisrKyBiL2RyaXZlcnMvbmV0L3MyaW8uaApAQCAtMzc2LDcgKzM3Niw3IEBACiAvKiBNYWludGFpbnMgUGVyIEZJRk8gcmVsYXRlZCBpbmZvcm1hdGlvbi4gKi8KIHN0cnVjdCB0eF9maWZvX2NvbmZpZyB7CiAjZGVmaW5lCU1BWF9BVkFJTEFCTEVfVFhEUwk4MTkyCi0JdTMyIGZpZm9fbGVuOwkJLyogc3BlY2lmaWVzIGxlbiBvZiBGSUZPIHVwdG8gODE5MiwgaWUgbm8gb2YgVHhETHMgKi8KKwl1MzIgZmlmb19sZW47CQkvKiBzcGVjaWZpZXMgbGVuIG9mIEZJRk8gdXAgdG8gODE5MiwgaWUgbm8gb2YgVHhETHMgKi8KIC8qIFByaW9yaXR5IGRlZmluaXRpb24gKi8KICNkZWZpbmUgVFhfRklGT19QUklfMCAgICAgICAgICAgICAgIDAJLypIaWdoZXN0ICovCiAjZGVmaW5lIFRYX0ZJRk9fUFJJXzEgICAgICAgICAgICAgICAxCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvZmFsY29uLmMgYi9kcml2ZXJzL25ldC9zZmMvZmFsY29uLmMKaW5kZXggNzM0ZmNmYi4uZDk2YjIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL2ZhbGNvbi5jCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9mYWxjb24uYwpAQCAtNjkyLDcgKzY5Miw3IEBACiAJZWZ4X293b3JkX3QgbWRfc3RhdDsKIAlpbnQgY291bnQ7CiAKLQkvKiB3YWl0IHVwdG8gNTBtcyAtIHRha2VuIG1heCBmcm9tIGRhdGFzaGVldCAqLworCS8qIHdhaXQgdXAgdG8gNTBtcyAtIHRha2VuIG1heCBmcm9tIGRhdGFzaGVldCAqLwogCWZvciAoY291bnQgPSAwOyBjb3VudCA8IDUwMDA7IGNvdW50KyspIHsKIAkJZWZ4X3JlYWRvKGVmeCwgJm1kX3N0YXQsIEZSX0FCX01EX1NUQVQpOwogCQlpZiAoRUZYX09XT1JEX0ZJRUxEKG1kX3N0YXQsIEZSRl9BQl9NRF9CU1kpID09IDApIHsKQEAgLTEyMjEsNyArMTIyMSw3IEBACiAKIAkJCXJldHVybiAwOwogCQl9Ci0JfSB3aGlsZSAoKytjb3VudCA8IDIwKTsJLyogd2FpdCB1cHRvIDAuNCBzZWMgKi8KKwl9IHdoaWxlICgrK2NvdW50IDwgMjApOwkvKiB3YWl0IHVwIHRvIDAuNCBzZWMgKi8KIAogCW5ldGlmX2VycihlZngsIGh3LCBlZngtPm5ldF9kZXYsICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgU1JBTSByZXNldFxuIik7CiAJcmV0dXJuIC1FVElNRURPVVQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvbWNkaS5jIGIvZHJpdmVycy9uZXQvc2ZjL21jZGkuYwppbmRleCA1ZTExOGYwLi5kOTg0NzkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zZmMvbWNkaS5jCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpLmMKQEAgLTQ1Myw3ICs0NTMsNyBAQAogCSAqCiAJICogVGhlcmUncyBhIHJhY2UgaGVyZSB3aXRoIGVmeF9tY2RpX3JwYygpLCBiZWNhdXNlIHdlIG1pZ2h0IHJlY2VpdmUKIAkgKiBhIFJFQk9PVCBldmVudCAqYmVmb3JlKiB0aGUgcmVxdWVzdCBoYXMgYmVlbiBjb3BpZWQgb3V0LiBJbiBwb2xsZWQKLQkgKiBtb2RlIChkdXJpbmcgc3RhcnR1cCkgdGhpcyBpcyBpcnJlbGV2ZW50LCBiZWNhdXNlIGVmeF9tY2RpX2NvbXBsZXRlKCkKKwkgKiBtb2RlIChkdXJpbmcgc3RhcnR1cCkgdGhpcyBpcyBpcnJlbGV2YW50LCBiZWNhdXNlIGVmeF9tY2RpX2NvbXBsZXRlKCkKIAkgKiBpcyBpZ25vcmVkLiBJbiBldmVudCBtb2RlLCB0aGlzIGNvbmRpdGlvbiBpcyBqdXN0IGFuIGVkZ2UtY2FzZSBvZgogCSAqIHJlY2VpdmluZyBhIFJFQk9PVCBldmVudCBhZnRlciBwb3N0aW5nIHRoZSBNQ0RJIHJlcXVlc3QuIERpZCB0aGUgbWMKIAkgKiByZWJvb3QgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb3B5b3V0PyBUaGUgYmVzdCB3ZSBjYW4gZG8gYWx3YXlzIGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvbWNkaV9wY29sLmggYi9kcml2ZXJzL25ldC9zZmMvbWNkaV9wY29sLmgKaW5kZXggYjg2YTE1Zi4uNDFmZTA2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGNvbC5oCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3Bjb2wuaApAQCAtMTAzLDcgKzEwMyw3IEBACiAgKgogICogSWYgQ29kZT09Q01ERE9ORSwgdGhlbiB0aGUgZmllbGRzIGFyZSBmdXJ0aGVyIGludGVycHJldGVkIGFzOgogICoKLSAqICAgLSBMRVZFTD09SU5GTyAgICBDb21tYW5kIHN1Y2NlZGVkCisgKiAgIC0gTEVWRUw9PUlORk8gICAgQ29tbWFuZCBzdWNjZWVkZWQKICAqICAgLSBMRVZFTD09RVJSICAgICBDb21tYW5kIGZhaWxlZAogICoKICAqICAgIDAgICAgIDggICAgICAgICAxNiAgICAgIDI0ICAgICAzMgpAQCAtNTcyLDcgKzU3Miw3IEBACiAgICg0KihfbnVtd29yZHMpKQogCiAvKiBNQ19DTURfU0VUX1JBTkRfU0VFRDoKLSAqIFNldCB0aGUgMTZieXRlIHNlZWQgZm9yIHRoZSBNQyBwc3VlZG8tcmFuZG9tIGdlbmVyYXRvcgorICogU2V0IHRoZSAxNmJ5dGUgc2VlZCBmb3IgdGhlIE1DIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9yCiAgKi8KICNkZWZpbmUgTUNfQ01EX1NFVF9SQU5EX1NFRUQgMHgxYQogI2RlZmluZSBNQ19DTURfU0VUX1JBTkRfU0VFRF9JTl9MRU4gMTYKQEAgLTExNjIsNyArMTE2Miw3IEBACiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX0NMRUFSX1dJRFRIIDEKICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfQ0hBTkdFX0xCTiAyCiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX1BFUklPRElDX0NIQU5HRV9XSURUSCAxCi0vKiBSZW1haW5pbmcgUEVSSU9EKiBmaWVsZHMgb25seSByZWxldmVudCB3aGVuIFBFUklPRElDX0NIQU5HRSBpcyBzZXQgKi8KKy8qIFJlbWFpbmluZyBQRVJJT0QqIGZpZWxkcyBvbmx5IHJlbGV2YW50IHdoZW4gUEVSSU9ESUNfQ0hBTkdFIGlzIHNldCAqLwogI2RlZmluZSBNQ19DTURfTUFDX1NUQVRTX0NNRF9QRVJJT0RJQ19FTkFCTEVfTEJOIDMKICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfRU5BQkxFX1dJRFRIIDEKICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfQ0xFQVJfTEJOIDQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3BoeS5jIGIvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGh5LmMKaW5kZXggZWMzZjc0MC4uN2UzYzY1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGh5LmMKQEAgLTQ0OSw3ICs0NDksNyBAQAogCXN0cnVjdCBlZnhfbWNkaV9waHlfZGF0YSAqcGh5X2NmZyA9IGVmeC0+cGh5X2RhdGE7CiAJdTMyIHJtdGFkdjsKIAotCS8qIFRoZSBsaW5rIHBhcnRuZXIgY2FwYWJpbGl0aWVzIGFyZSBvbmx5IHJlbGV2ZW50IGlmIHRoZQorCS8qIFRoZSBsaW5rIHBhcnRuZXIgY2FwYWJpbGl0aWVzIGFyZSBvbmx5IHJlbGV2YW50IGlmIHRoZQogCSAqIGxpbmsgc3VwcG9ydHMgZmxvdyBjb250cm9sIGF1dG9uZWdvdGlhdGlvbiAqLwogCWlmICh+cGh5X2NmZy0+c3VwcG9ydGVkX2NhcCAmICgxIDw8IE1DX0NNRF9QSFlfQ0FQX0FOX0xCTikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NmYy9uZXRfZHJpdmVyLmggYi9kcml2ZXJzL25ldC9zZmMvbmV0X2RyaXZlci5oCmluZGV4IDIxNWQ1YzUuLjlmZmE5YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NmYy9uZXRfZHJpdmVyLmgKKysrIGIvZHJpdmVycy9uZXQvc2ZjL25ldF9kcml2ZXIuaApAQCAtNjcwLDcgKzY3MCw3IEBACiAgKiBAaXJxX3plcm9fY291bnQ6IE51bWJlciBvZiBsZWdhY3kgSVJRcyBzZWVuIHdpdGggcXVldWUgZmxhZ3MgPT0gMAogICogQGZhdGFsX2lycV9sZXZlbDogSVJRIGxldmVsIChiaXQgbnVtYmVyKSB1c2VkIGZvciBzZXJpb3VzIGVycm9ycwogICogQG10ZF9saXN0OiBMaXN0IG9mIE1URHMgYXR0YWNoZWQgdG8gdGhlIE5JQwotICogQG5pY19kYXRhOiBIYXJkd2FyZSBkZXBlbmRhbnQgc3RhdGUKKyAqIEBuaWNfZGF0YTogSGFyZHdhcmUgZGVwZW5kZW50IHN0YXRlCiAgKiBAbWFjX2xvY2s6IE1BQyBhY2Nlc3MgbG9jay4gUHJvdGVjdHMgQHBvcnRfZW5hYmxlZCwgQHBoeV9tb2RlLAogICoJQHBvcnRfaW5oaWJpdGVkLCBlZnhfbW9uaXRvcigpIGFuZCBlZnhfcmVjb25maWd1cmVfcG9ydCgpCiAgKiBAcG9ydF9lbmFibGVkOiBQb3J0IGVuYWJsZWQgaW5kaWNhdG9yLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2dpc2VlcS5jIGIvZHJpdmVycy9uZXQvc2dpc2VlcS5jCmluZGV4IDNhMGNjNjMuLmRkMDNiZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NnaXNlZXEuYworKysgYi9kcml2ZXJzL25ldC9zZ2lzZWVxLmMKQEAgLTMzLDcgKzMzLDcgQEAKICAqIHdpdGggdGhhdCBpbiBtaW5kLCBJJ3ZlIGRlY2lkZWQgdG8gbWFrZSB0aGlzIGRyaXZlciBsb29rIGNvbXBsZXRlbHkgbGlrZSBhCiAgKiBzdHVwaWQgTGFuY2UgZnJvbSBhIGRyaXZlciBhcmNoaXRlY3R1cmUgcGVyc3BlY3RpdmUuICBPbmx5IGRpZmZlcmVuY2UgaXMgdGhhdAogICogaGVyZSBvdXIgInJpbmcgYnVmZmVyIiBsb29rcyBhbmQgYWN0cyBsaWtlIGEgcmVhbCBMYW5jZSBvbmUgZG9lcyBidXQgaXMKLSAqIGxheWVkIG91dCBsaWtlIGhvdyB0aGUgSFBDIERNQSBhbmQgdGhlIFNlZXEgd2FudCBpdCB0by4gIFlvdSdkIGJlIHN1cnByaXNlZAorICogbGFpZCBvdXQgbGlrZSBob3cgdGhlIEhQQyBETUEgYW5kIHRoZSBTZWVxIHdhbnQgaXQgdG8uICBZb3UnZCBiZSBzdXJwcmlzZWQKICAqIGhvdyBhIHN0dXBpZCBpZGVhIGxpa2UgdGhpcyBjYW4gcGF5IG9mZiBpbiBwZXJmb3JtYW5jZSwgbm90IHRvIG1lbnRpb24KICAqIG1ha2luZyB0aGlzIGRyaXZlciAyLDAwMCB0aW1lcyBlYXNpZXIgdG8gd3JpdGUuIDstKQogICovCkBAIC03Nyw3ICs3Nyw3IEBACiB9OwogCiAvKgotICogV2FybmluZzogVGhpcyBzdHJ1Y3R1cmUgaXMgbGF5ZWQgb3V0IGluIGEgY2VydGFpbiB3YXkgYmVjYXVzZSBIUEMgZG1hCisgKiBXYXJuaW5nOiBUaGlzIHN0cnVjdHVyZSBpcyBsYWlkIG91dCBpbiBhIGNlcnRhaW4gd2F5IGJlY2F1c2UgSFBDIGRtYQogICogICAgICAgICAgZGVzY3JpcHRvcnMgbXVzdCBiZSA4LWJ5dGUgYWxpZ25lZC4gIFNvIGRvbid0IHRvdWNoIHRoaXMgd2l0aG91dAogICogICAgICAgICAgc29tZSBjYXJlLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zaF9ldGguYyBiL2RyaXZlcnMvbmV0L3NoX2V0aC5jCmluZGV4IGU5ZTdhNTMuLjhhNzJhOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NoX2V0aC5jCisrKyBiL2RyaXZlcnMvbmV0L3NoX2V0aC5jCkBAIC0xODc1LDcgKzE4NzUsNyBAQAogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3VucmVnaXN0ZXI7CiAKLQkvKiBwcmludCBkZXZpY2UgaW5mb21hdGlvbiAqLworCS8qIHByaW50IGRldmljZSBpbmZvcm1hdGlvbiAqLwogCXByX2luZm8oIkJhc2UgYWRkcmVzcyBhdCAweCV4LCAlcE0sIElSUSAlZC5cbiIsCiAJICAgICAgICh1MzIpbmRldi0+YmFzZV9hZGRyLCBuZGV2LT5kZXZfYWRkciwgbmRldi0+aXJxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2lzMTkwLmMgYi9kcml2ZXJzL25ldC9zaXMxOTAuYwppbmRleCAzNDA2ZWQ4Li5iNDM2ZTAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zaXMxOTAuYworKysgYi9kcml2ZXJzL25ldC9zaXMxOTAuYwpAQCAtOTMsNyArOTMsNyBAQAogCUludHJTdGF0dXMJCT0gMHgyMCwKIAlJbnRyTWFzawkJPSAweDI0LAogCUludHJDb250cm9sCQk9IDB4MjgsCi0JSW50clRpbWVyCQk9IDB4MmMsCS8vIHVudXNlZCAoSW50ZXJ1cHQgVGltZXIpCisJSW50clRpbWVyCQk9IDB4MmMsCS8vIHVudXNlZCAoSW50ZXJydXB0IFRpbWVyKQogCVBNQ29udHJvbAkJPSAweDMwLAkvLyB1bnVzZWQgKFBvd2VyIE1nbXQgQ29udHJvbC9TdGF0dXMpCiAJcnN2MgkJCT0gMHgzNCwJLy8gcmVzZXJ2ZWQKIAlST01Db250cm9sCQk9IDB4MzgsCkBAIC0yMzQsNyArMjM0LDcgQEAKIAlSeFNpemVNYXNrCT0gMHgwMDAwZmZmZgogCS8qCiAJICogVGhlIGFzaWMgY291bGQgYXBwYXJlbnRseSBkbyB2bGFuLCBUU08sIGp1bWJvIChzaXMxOTEgb25seSkgYW5kCi0JICogcHJvdmlkZSB0d28gKHVudXNlZCB3aXRoIExpbnV4KSBUeCBxdWV1ZXMuIE5vIHB1YmxpY2FsbHkKKwkgKiBwcm92aWRlIHR3byAodW51c2VkIHdpdGggTGludXgpIFR4IHF1ZXVlcy4gTm8gcHVibGljbHkKIAkgKiBhdmFpbGFibGUgZG9jdW1lbnRhdGlvbiBhbGFzLgogCSAqLwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NpczkwMC5jIGIvZHJpdmVycy9uZXQvc2lzOTAwLmMKaW5kZXggODRkNDE2Ny4uY2IzMTdjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2lzOTAwLmMKKysrIGIvZHJpdmVycy9uZXQvc2lzOTAwLmMKQEAgLTExODAsNyArMTE4MCw3IEBACiAgKgogICoJNjMwRSBlcXVhbGl6ZXIgd29ya2Fyb3VuZCBydWxlKEN5cnVzIEh1YW5nIDA4LzE1KQogICoJUEhZIHJlZ2lzdGVyIDE0aChUZXN0KQotICoJQml0IDE0OiAwIC0tIEF1dG9tYXRpY2FsbHkgZGVjdGVjdCAoZGVmYXVsdCkKKyAqCUJpdCAxNDogMCAtLSBBdXRvbWF0aWNhbGx5IGRldGVjdCAoZGVmYXVsdCkKICAqCQkxIC0tIE1hbnVhbGx5IHNldCBFcXVhbGl6ZXIgZmlsdGVyCiAgKglCaXQgMTM6IDAgLS0gKERlZmF1bHQpCiAgKgkJMSAtLSBTcGVlZCB1cCBjb252ZXJnZW5jZSBvZiBlcXVhbGl6ZXIgc2V0dGluZwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAKICAqCVRoZW4gc2V0IGVxdWFsaXplciB2YWx1ZSwgYW5kIHNldCBCaXQgMTQgdG8gMSwgQml0IDkgdG8gMAogICoJTGluayBPZmY6U2V0IEJpdCAxMyB0byAxLCBCaXQgMTQgdG8gMAogICoJQ2FsY3VsYXRlIEVxdWFsaXplciB2YWx1ZToKLSAqCVdoZW4gTGluayBpcyBPTiBhbmQgQml0IDE0IGlzIDAsIFNJUzkwMFBIWSB3aWxsIGF1dG8tZGVjdGVjdCBwcm9wZXIgZXF1YWxpemVyIHZhbHVlLgorICoJV2hlbiBMaW5rIGlzIE9OIGFuZCBCaXQgMTQgaXMgMCwgU0lTOTAwUEhZIHdpbGwgYXV0by1kZXRlY3QgcHJvcGVyIGVxdWFsaXplciB2YWx1ZS4KICAqCVdoZW4gdGhlIGVxdWFsaXplciBpcyBzdGFibGUsIHRoaXMgdmFsdWUgaXMgbm90IGEgZml4ZWQgdmFsdWUuIEl0IHdpbGwgYmUgd2l0aGluCiAgKglhIHNtYWxsIHJhbmdlKGVnLiA3fjkpLiBUaGVuIHdlIGdldCBhIG1pbmltdW0gYW5kIGEgbWF4aW11bSB2YWx1ZShlZy4gbWluPTcsIG1heD05KQogICoJMCA8PSBtYXggPD0gNCAgLS0+IHNldCBlcXVhbGl6ZXIgdG8gbWF4CkBAIC0xNzIzLDcgKzE3MjMsNyBAQAogCQlyeF9zaXplID0gZGF0YV9zaXplIC0gQ1JDX1NJWkU7CiAKICNpZiBkZWZpbmVkKENPTkZJR19WTEFOXzgwMjFRKSB8fCBkZWZpbmVkKENPTkZJR19WTEFOXzgwMjFRX01PRFVMRSkKLQkJLyogYGBUT09MT05HJycgZmxhZyBtZWFucyBqdW1ibyBwYWNrZXQgcmVjaXZlZC4gKi8KKwkJLyogYGBUT09MT05HJycgZmxhZyBtZWFucyBqdW1ibyBwYWNrZXQgcmVjZWl2ZWQuICovCiAJCWlmICgocnhfc3RhdHVzICYgVE9PTE9ORykgJiYgZGF0YV9zaXplIDw9IE1BWF9GUkFNRV9TSVpFKQogCQkJcnhfc3RhdHVzICY9ICh+ICgodW5zaWduZWQgaW50KVRPT0xPTkcpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9lc3MuYyBiL2RyaXZlcnMvbmV0L3NrZnAvZXNzLmMKaW5kZXggODYzOWEwOC4uMmZjNTk4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9lc3MuYworKysgYi9kcml2ZXJzL25ldC9za2ZwL2Vzcy5jCkBAIC0yNDEsNyArMjQxLDcgQEAKIAkJCSE9IFNNVF9SREZfU1VDQ0VTUykgfHwKIAkJCShzbS0+c210X3RpZCAhPSBzbWMtPmVzcy5hbGxvY190cmFuc19pZCkpIHsKIAotCQkJREJfRVNTKCJFU1M6IEFsbG9jYXRpb24gUmVzcG9uY2Ugbm90IGFjY2VwdGVkXG4iLDAsMCkgOworCQkJREJfRVNTKCJFU1M6IEFsbG9jYXRpb24gUmVzcG9uc2Ugbm90IGFjY2VwdGVkXG4iLDAsMCkgOwogCQkJcmV0dXJuIGZzOwogCQl9CiAKQEAgLTM5Myw3ICszOTMsNyBAQAogCSAqCQkgICAgICB8CSBULU5FRwl8CiAJICoJCSAgICAgICAtICAgICAgIC0KICAJICoKLQkgKiBULU5FRyBpcyBkaXNjcmliZWQgYnkgdGhlIGVxdWF0aW9uOgorCSAqIFQtTkVHIGlzIGRlc2NyaWJlZCBieSB0aGUgZXF1YXRpb246CiAJICoKIAkgKgkJICAgICAoLSkgZmRkaU1BQ1QtTkVHCiAJICoJVC1ORUcgPQkgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDc5LDcgKzQ3OSw3IEBACiAJdm9pZAkJCSpwIDsKIAogCS8qCi0JICogZ2V0IGFuZCBpbml0aWFsaXplIHRoZSByZXNwb25jZSBmcmFtZQorCSAqIGdldCBhbmQgaW5pdGlhbGl6ZSB0aGUgcmVzcG9uc2UgZnJhbWUKIAkgKi8KIAlpZiAoc2JhX2NtZCA9PSBDSEFOR0VfQUxMT0NBVElPTikgewogCQlpZiAoIShtYj1zbXRfYnVpbGRfZnJhbWUoc21jLFNNVF9SQUYsU01UX1JFUExZLApAQCAtNTc4LDcgKzU3OCw3IEBACiAJfQogCQogCS8qCi0JICogZ2V0IGFuZCBpbml0aWFsaXplIHRoZSByZXNwb25jZSBmcmFtZQorCSAqIGdldCBhbmQgaW5pdGlhbGl6ZSB0aGUgcmVzcG9uc2UgZnJhbWUKIAkgKi8KIAlpZiAoIShtYj1zbXRfYnVpbGRfZnJhbWUoc21jLFNNVF9SQUYsU01UX1JFUVVFU1QsCiAJCQlzaXplb2Yoc3RydWN0IHNtdF9zYmFfYWxjX3JlcSkpKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvZnBsdXN0bS5jIGIvZHJpdmVycy9uZXQvc2tmcC9mcGx1c3RtLmMKaW5kZXggY2E0ZTdiYi4uYTIwZWQxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9mcGx1c3RtLmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9mcGx1c3RtLmMKQEAgLTM0MCw3ICszNDAsNyBAQAogCW91dHB3KEZNX0EoRk1fTENOVFIpLDApIDsKIAlvdXRwdyhGTV9BKEZNX0VDTlRSKSwwKSA7CiAJLyoKLQkgKiBjbGVhciBpbnRlcm5hbCBlcnJvciBjb3VudGVyIHN0dWN0dXJlCisJICogY2xlYXIgaW50ZXJuYWwgZXJyb3IgY291bnRlciBzdHJ1Y3R1cmUKIAkgKi8KIAllYyA9ICh1X2xvbmcgKikmc21jLT5ody5mcC5lcnJfc3RhdHMgOwogCWZvciAoaSA9IChzaXplb2Yoc3RydWN0IGVycl9zdCkvc2l6ZW9mKGxvbmcpKSA7IGkgOyBpLS0pCkBAIC0xMjYyLDggKzEyNjIsOCBAQAogCiBQYXJhCW1vZGUgPQkxCVJYX0VOQUJMRV9BTExNVUxUSQllbmFibGUgYWxsIG11bHRpY2FzdHMKIAkJMglSWF9ESVNBQkxFX0FMTE1VTFRJCWRpc2FibGUgImVuYWJsZSBhbGwgbXVsdGljYXN0cyIKLQkJMwlSWF9FTkFCTEVfUFJPTUlTQwllbmFibGUgcHJvbWlzY291cwotCQk0CVJYX0RJU0FCTEVfUFJPTUlTQwlkaXNhYmxlIHByb21pc2NvdXMKKwkJMwlSWF9FTkFCTEVfUFJPTUlTQwllbmFibGUgcHJvbWlzY3VvdXMKKwkJNAlSWF9ESVNBQkxFX1BST01JU0MJZGlzYWJsZSBwcm9taXNjdW91cwogCQk1CVJYX0VOQUJMRV9OU0EJCWVuYWJsZSByZWNlcHRpb24gb2YgTlNBIGZyYW1lcwogCQk2CVJYX0RJU0FCTEVfTlNBCQlkaXNhYmxlIHJlY2VwdGlvbiBvZiBOU0EgZnJhbWVzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaC9jbXRkZWYuaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9jbXRkZWYuaAppbmRleCBmMmY3NzFkLi41YTZjNjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2gvY210ZGVmLmgKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9oL2NtdGRlZi5oCkBAIC0xOSw3ICsxOSw3IEBACiAKIC8qCiAgKiBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBjb25zdGFudHMKLSAqIE1PRElJRlkgVEhFIEZPTExXT0lORyBUSFJFRSBERUZJTkVTCisgKiBNT0RJSUZZIFRIRSBGT0xMT1dJTkcgVEhSRUUgREVGSU5FUwogICovCiAjZGVmaW5lIEFNRFBMQwkJCS8qIGlmIEFtZCBQTEMgY2hpcCB1c2VkICovCiAjaWZkZWYJQ09OQwpAQCAtNDU2LDcgKzQ1Niw3IEBACiAJdV9sb25nIHNvZnRfZXJyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KIAl1X2xvbmcgcGFyaXR5X2VyciA7CQkvKiBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIGVidWZfZXJyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KLQl1X2xvbmcgZWJ1Zl9jb250IDsJCS8qIGNvbnRpbm91cyBlcnJvciBjb3VudGVyICovCisJdV9sb25nIGVidWZfY29udCA7CQkvKiBjb250aW51b3VzIGVycm9yIGNvdW50ZXIgKi8KIAl1X2xvbmcgcGh5aW52IDsJCQkvKiBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIHZzeW1fY3RyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KIAl1X2xvbmcgbWluaV9jdHIgOwkJLyogZXJyb3IgY291bnRlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9oL2ZwbHVzdG0uaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9mcGx1c3RtLmgKaW5kZXggNmQ3MzhlMS4uZDQzMTkxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9oL2ZwbHVzdG0uaAorKysgYi9kcml2ZXJzL25ldC9za2ZwL2gvZnBsdXN0bS5oCkBAIC0yMzcsOCArMjM3LDggQEAKICAqLwogI2RlZmluZSBSWF9FTkFCTEVfQUxMTVVMVEkJMQkvKiBlbmFibGUgYWxsIG11bHRpY2FzdHMgKi8KICNkZWZpbmUgUlhfRElTQUJMRV9BTExNVUxUSQkyCS8qIGRpc2FibGUgImVuYWJsZSBhbGwgbXVsdGljYXN0cyIgKi8KLSNkZWZpbmUgUlhfRU5BQkxFX1BST01JU0MJMwkvKiBlbmFibGUgcHJvbWlzY291cyAqLwotI2RlZmluZSBSWF9ESVNBQkxFX1BST01JU0MJNAkvKiBkaXNhYmxlIHByb21pc2NvdXMgKi8KKyNkZWZpbmUgUlhfRU5BQkxFX1BST01JU0MJMwkvKiBlbmFibGUgcHJvbWlzY3VvdXMgKi8KKyNkZWZpbmUgUlhfRElTQUJMRV9QUk9NSVNDCTQJLyogZGlzYWJsZSBwcm9taXNjdW91cyAqLwogI2RlZmluZSBSWF9FTkFCTEVfTlNBCQk1CS8qIGVuYWJsZSByZWNlcHRpb24gb2YgTlNBIGZyYW1lcyAqLwogI2RlZmluZSBSWF9ESVNBQkxFX05TQQkJNgkvKiBkaXNhYmxlIHJlY2VwdGlvbiBvZiBOU0EgZnJhbWVzICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaC9zbWMuaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zbWMuaAppbmRleCAwMjZhODNiLi5jNzc0YTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2gvc21jLmgKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9oL3NtYy5oCkBAIC0zODgsNyArMzg4LDcgQEAKIAl1X2xvbmcJcm10X3RfcG9sbCA7CQkvKiBSTVQgOiBjbGFpbS9iZWFjb24gcG9sbGVyICovCiAJdV9sb25nICBybXRfZHVwX21hY19iZWhhdmlvciA7ICAvKiBGbGFnIGZvciB0aGUgYmVhdmlvciBvZiBTTVQgaWYKIAkJCQkJICogYSBEdXBsaWNhdGUgTUFDIEFkZHJlc3Mgd2FzIGRldGVjdGVkLgotCQkJCQkgKiBGQUxTRTogU01UIHdpbGwgbGVhdmUgZmluYWx5IHRoZSByaW5nCisJCQkJCSAqIEZBTFNFOiBTTVQgd2lsbCBsZWF2ZSBmaW5hbGx5IHRoZSByaW5nCiAJCQkJCSAqIFRSVUU6ICBTTVQgd2lsbCByZWluc3RlcnQgaW50byB0aGUgcmluZwogCQkJCQkgKi8KIAl1X2xvbmcJbWFjX2RfbWF4IDsJCS8qIE1BQyA6IERfTWF4IHRpbWVyIHZhbHVlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2gvc210LmggYi9kcml2ZXJzL25ldC9za2ZwL2gvc210LmgKaW5kZXggMjk3Njc1Ny4uMjAzMGY5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9oL3NtdC5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zbXQuaApAQCAtNzkzLDcgKzc5Myw3IEBACiB9IDsKIAogLyoKLSAqIFNCQSBSZXF1ZXN0IEFsbG9jYXRpb24gUmVzcG9uY2UgRnJhbWUKKyAqIFNCQSBSZXF1ZXN0IEFsbG9jYXRpb24gUmVzcG9uc2UgRnJhbWUKICAqLwogc3RydWN0IHNtdF9zYmFfYWxjX3JlcyB7CiAJc3RydWN0IHNtdF9oZWFkZXIJc210IDsJCS8qIGdlbmVyaWMgaGVhZGVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2gvc3VwZXJuXzIuaCBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zdXBlcm5fMi5oCmluZGV4IDViYTBiODMuLjBiNzM2OTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvaC9zdXBlcm5fMi5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zdXBlcm5fMi5oCkBAIC0xNCw3ICsxNCw3IEBACiAKIC8qCiAJZGVmaW5lcyBmb3IgQU1EIFN1cGVybmV0IElJIGNoaXAgc2V0Ci0JdGhlIGNoaXBzIGFyZSByZWZlcmVkIHRvIGFzCisJdGhlIGNoaXBzIGFyZSByZWZlcnJlZCB0byBhcwogCQlGUExVUwlGb3JtYWMgUGx1cwogCQlQTEMJUGh5c2ljYWwgTGF5ZXIKIApAQCAtMzg2LDcgKzM4Niw3IEBACiAjZGVmaW5lCUZNX01ESVNSQ1YJKDQ8PDgpCQkvKiBkaXNhYmxlIHJlY2VpdmUgZnVuY3Rpb24gKi8KICNkZWZpbmUJRk1fTVJFUzAJKDU8PDgpCQkvKiByZXNlcnZlICovCiAjZGVmaW5lCUZNX01MSU1QUk9NCSg2PDw4KQkJLyogbGltaXRlZC1wcm9taXNjdW91cyBtb2RlICovCi0jZGVmaW5lIEZNX01QUk9NSVNDT1VTCSg3PDw4KQkJLyogYWRkcmVzcyBkZXRlY3Rpb24gOiBwcm9taXNjb3VzICovCisjZGVmaW5lIEZNX01QUk9NSVNDT1VTCSg3PDw4KQkJLyogYWRkcmVzcyBkZXRlY3Rpb24gOiBwcm9taXNjdW91cyAqLwogCiAjZGVmaW5lIEZNX1NFTFNBCTB4MDgwMAkJLyogc2VsZWN0LXNob3J0LWFkZHJlc3MgYml0ICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaHdtdG0uYyBiL2RyaXZlcnMvbmV0L3NrZnAvaHdtdG0uYwppbmRleCBhZjVhNzU1Li5lMjYzOThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2h3bXRtLmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9od210bS5jCkBAIC02OTEsNyArNjkxLDcgQEAKICAqCQlpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLCBoYW5kbGVzIHRoZSBpbnRlcnJ1cHQgcmVxdWVzdHMKICAqCQlnZW5lcmF0ZWQgYnkgdGhlIEZEREkgYWRhcHRlci4KICAqCi0gKiBOT1RFOglUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZ2FyYW50ZWUgdGhhdCB0aGUKKyAqIE5PVEU6CVRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgbXVzdCBndWFyYW50ZWUgdGhhdCB0aGUKICAqCQlpbnRlcnJ1cHRzIG9mIHRoZSBhZGFwdGVyIGFyZSBkaXNhYmxlZCB3aGVuIGl0IGNhbGxzIGZkZGlfaXNyLgogICoKICAqCUFib3V0IHRoZSBVU0VfQlJFQUtfSVNSIG1lY2hhbmlzbW46CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvc2tmcC9wY21wbGMuYwppbmRleCAxMTJkMzViLi44OGQwMmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL3BjbXBsYy5jCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvcGNtcGxjLmMKQEAgLTE2ODAsNyArMTY4MCw3IEBACiAJCQkgKiBQcmV2ZW50IGNvdW50ZXIgZnJvbSBiZWluZyB3cmFwcGVkIGFmdGVyCiAJCQkgKiBoYW5naW5nIHllYXJzIGluIHRoYXQgaW50ZXJydXB0LgogCQkJICovCi0JCQlwbGMtPmVidWZfY29udCsrIDsJLyogRWJ1ZiBjb250aW5vdXMgZXJyb3IgKi8KKwkJCXBsYy0+ZWJ1Zl9jb250KysgOwkvKiBFYnVmIGNvbnRpbnVvdXMgZXJyb3IgKi8KIAkJfQogCiAjaWZkZWYJU1VQRVJORVRfMwpAQCAtMTcxNyw4ICsxNzE3LDggQEAKIAkJfQogI2VuZGlmCS8qIFNVUEVSTkVUXzMgKi8KIAl9IGVsc2UgewotCQkvKiBSZXNldCB0aGUgY29udGlub3VzIGVycm9yIHZhcmlhYmxlICovCi0JCXBsYy0+ZWJ1Zl9jb250ID0gMCA7CS8qIHJlc2V0IEVidWYgY29udGlub3VzIGVycm9yICovCisJCS8qIFJlc2V0IHRoZSBjb250aW51b3VzIGVycm9yIHZhcmlhYmxlICovCisJCXBsYy0+ZWJ1Zl9jb250ID0gMCA7CS8qIHJlc2V0IEVidWYgY29udGludW91cyBlcnJvciAqLwogCX0KIAlpZiAoY21kICYgUExfUEhZSU5WKSB7CQkvKiBwaHlzaWNhbCBsYXllciBpbnZhbGlkIHNpZ25hbCAqLwogCQlwbGMtPnBoeWludisrIDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvc210LmMgYi9kcml2ZXJzL25ldC9za2ZwL3NtdC5jCmluZGV4IDFlMWJkMGMuLjA4ZDk0MzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvc210LmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9zbXQuYwpAQCAtMjE5LDcgKzIxOSw3IEBACiAKIAkvKgogCSAqIE9ubHkgd2hlbiByaW5nIGlzIHVwIHdlIHdpbGwgaGF2ZSBhIHRva2VuIGNvdW50LiBUaGUKLQkgKiBmbGFnIGlzIHVuZm9ydHVuYXRseSBhIHNpbmdsZSBpbnN0YW5jZSB2YWx1ZS4gVGhpcworCSAqIGZsYWcgaXMgdW5mb3J0dW5hdGVseSBhIHNpbmdsZSBpbnN0YW5jZSB2YWx1ZS4gVGhpcwogCSAqIGRvZXNuJ3QgbWF0dGVyIG5vdywgYmVjYXVzZSB3ZSBjdXJyZW50bHkgaGF2ZSBvbmx5CiAJICogb25lIE1BQyBpbnN0YW5jZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZ2UuaCBiL2RyaXZlcnMvbmV0L3NrZ2UuaAppbmRleCA1MDdhZGRjLi41MWMwMjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2dlLmgKKysrIGIvZHJpdmVycy9uZXQvc2tnZS5oCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogCiAJUEhZX1NUX1BSRV9TVVAJPSAxPDw2LCAvKiBCaXQgIDY6CVByZWFtYmxlIFN1cHByZXNzaW9uICovCiAJUEhZX1NUX0FOX09WRVIJPSAxPDw1LCAvKiBCaXQgIDU6CUF1dG8tTmVnb3RpYXRpb24gT3ZlciAqLwotCVBIWV9TVF9SRU1fRkxUCT0gMTw8NCwgLyogQml0ICA0OglSZW1vdGUgRmF1bHQgQ29uZGl0aW9uIE9jY3VyZWQgKi8KKwlQSFlfU1RfUkVNX0ZMVAk9IDE8PDQsIC8qIEJpdCAgNDoJUmVtb3RlIEZhdWx0IENvbmRpdGlvbiBPY2N1cnJlZCAqLwogCVBIWV9TVF9BTl9DQVAJPSAxPDwzLCAvKiBCaXQgIDM6CUF1dG8tTmVnb3RpYXRpb24gQ2FwYWJpbGl0eSAqLwogCVBIWV9TVF9MU1lOQwk9IDE8PDIsIC8qIEJpdCAgMjoJTGluayBTeW5jaHJvbml6ZWQgKi8KIAlQSFlfU1RfSkFCX0RFVAk9IDE8PDEsIC8qIEJpdCAgMToJSmFiYmVyIERldGVjdGVkICovCkBAIC0xNzIxLDggKzE3MjEsOCBAQAogCUdNX0dQU1JfTElOS19VUAkJPSAxPDwxMiwgLyogQml0IDEyOglMaW5rIFVwIFN0YXR1cyAqLwogCUdNX0dQU1JfUEFVU0UJCT0gMTw8MTEsIC8qIEJpdCAxMToJUGF1c2UgU3RhdGUgKi8KIAlHTV9HUFNSX1RYX0FDVElWRQk9IDE8PDEwLCAvKiBCaXQgMTA6CVR4IGluIFByb2dyZXNzICovCi0JR01fR1BTUl9FWENfQ09MCQk9IDE8PDksCS8qIEJpdCAgOToJRXhjZXNzaXZlIENvbGxpc2lvbnMgT2NjdXJlZCAqLwotCUdNX0dQU1JfTEFUX0NPTAkJPSAxPDw4LAkvKiBCaXQgIDg6CUxhdGUgQ29sbGlzaW9ucyBPY2N1cmVkICovCisJR01fR1BTUl9FWENfQ09MCQk9IDE8PDksCS8qIEJpdCAgOToJRXhjZXNzaXZlIENvbGxpc2lvbnMgT2NjdXJyZWQgKi8KKwlHTV9HUFNSX0xBVF9DT0wJCT0gMTw8OCwJLyogQml0ICA4OglMYXRlIENvbGxpc2lvbnMgT2NjdXJyZWQgKi8KIAogCUdNX0dQU1JfUEhZX1NUX0NICT0gMTw8NSwJLyogQml0ICA1OglQSFkgU3RhdHVzIENoYW5nZSAqLwogCUdNX0dQU1JfR0lHX1NQRUVECT0gMTw8NCwJLyogQml0ICA0OglHaWdhYml0IFNwZWVkICgxID0gMTAwMCBNYnBzKSAqLwpAQCAtMjIyNyw3ICsyMjI3LDcgQEAKIAlYTV9TVF9CQwk9IDE8PDcsCQkvKiBCaXQgIDc6CUJyb2FkY2FzdCBwYWNrZXQgKi8KIAlYTV9TVF9NQwk9IDE8PDYsCQkvKiBCaXQgIDY6CU11bHRpY2FzdCBwYWNrZXQgKi8KIAlYTV9TVF9VQwk9IDE8PDUsCQkvKiBCaXQgIDU6CVVuaWNhc3QgcGFja2V0ICovCi0JWE1fU1RfVFhfVVIJPSAxPDw0LAkJLyogQml0ICA0OglGSUZPIFVuZGVycnVuIG9jY3VyZWQgKi8KKwlYTV9TVF9UWF9VUgk9IDE8PDQsCQkvKiBCaXQgIDQ6CUZJRk8gVW5kZXJydW4gb2NjdXJyZWQgKi8KIAlYTV9TVF9DU19FUlIJPSAxPDwzLAkJLyogQml0ICAzOglDYXJyaWVyIFNlbnNlIEVycm9yICovCiAJWE1fU1RfTEFUX0NPTAk9IDE8PDIsCQkvKiBCaXQgIDI6CUxhdGUgQ29sbGlzaW9uIEVycm9yICovCiAJWE1fU1RfTVVMX0NPTAk9IDE8PDEsCQkvKiBCaXQgIDE6CU11bHRpcGxlIENvbGxpc2lvbnMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NreTIuYyBiL2RyaXZlcnMvbmV0L3NreTIuYwppbmRleCAyYTkxODY4Li5mZjhkMjYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za3kyLmMKKysrIGIvZHJpdmVycy9uZXQvc2t5Mi5jCkBAIC05MzIsNyArOTMyLDcgQEAKIAlza3kyX3dyaXRlOChodywgU0tfUkVHKHBvcnQsIFRYX0dNRl9DVFJMX1QpLCBHTUZfUlNUX0NMUik7CiAJc2t5Ml93cml0ZTE2KGh3LCBTS19SRUcocG9ydCwgVFhfR01GX0NUUkxfVCksIEdNRl9PUEVSX09OKTsKIAotCS8qIE9uIGNoaXBzIHdpdGhvdXQgcmFtIGJ1ZmZlciwgcGF1c2UgaXMgY29udHJvbGVkIGJ5IE1BQyBsZXZlbCAqLworCS8qIE9uIGNoaXBzIHdpdGhvdXQgcmFtIGJ1ZmZlciwgcGF1c2UgaXMgY29udHJvbGxlZCBieSBNQUMgbGV2ZWwgKi8KIAlpZiAoIShody0+ZmxhZ3MgJiBTS1kyX0hXX1JBTV9CVUZGRVIpKSB7CiAJCS8qIFBhdXNlIHRocmVzaG9sZCBpcyBzY2FsZWQgYnkgOCBpbiBieXRlcyAqLwogCQlpZiAoaHctPmNoaXBfaWQgPT0gQ0hJUF9JRF9ZVUtPTl9GRV9QICYmCkBAIC0zMjU1LDcgKzMyNTUsNyBAQAogCiAvKiBUYWtlIGRldmljZSBkb3duIChvZmZsaW5lKS4KICAqIEVxdWl2YWxlbnQgdG8gZG9pbmcgZGV2X3N0b3AoKSBidXQgdGhpcyBkb2VzIG5vdAotICogaW5mb3JtIHVwcGVyIGxheWVycyBvZiB0aGUgdHJhbnNpc3Rpb24uCisgKiBpbmZvcm0gdXBwZXIgbGF5ZXJzIG9mIHRoZSB0cmFuc2l0aW9uLgogICovCiBzdGF0aWMgdm9pZCBza3kyX2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2t5Mi5oIGIvZHJpdmVycy9uZXQvc2t5Mi5oCmluZGV4IDY4NjFiMGUuLjBjNmQxMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NreTIuaAorKysgYi9kcml2ZXJzL25ldC9za3kyLmgKQEAgLTExOTQsNyArMTE5NCw3IEBACiAKIAlQSFlfU1RfUFJFX1NVUAk9IDE8PDYsIC8qIEJpdCAgNjoJUHJlYW1ibGUgU3VwcHJlc3Npb24gKi8KIAlQSFlfU1RfQU5fT1ZFUgk9IDE8PDUsIC8qIEJpdCAgNToJQXV0by1OZWdvdGlhdGlvbiBPdmVyICovCi0JUEhZX1NUX1JFTV9GTFQJPSAxPDw0LCAvKiBCaXQgIDQ6CVJlbW90ZSBGYXVsdCBDb25kaXRpb24gT2NjdXJlZCAqLworCVBIWV9TVF9SRU1fRkxUCT0gMTw8NCwgLyogQml0ICA0OglSZW1vdGUgRmF1bHQgQ29uZGl0aW9uIE9jY3VycmVkICovCiAJUEhZX1NUX0FOX0NBUAk9IDE8PDMsIC8qIEJpdCAgMzoJQXV0by1OZWdvdGlhdGlvbiBDYXBhYmlsaXR5ICovCiAJUEhZX1NUX0xTWU5DCT0gMTw8MiwgLyogQml0ICAyOglMaW5rIFN5bmNocm9uaXplZCAqLwogCVBIWV9TVF9KQUJfREVUCT0gMTw8MSwgLyogQml0ICAxOglKYWJiZXIgRGV0ZWN0ZWQgKi8KQEAgLTE3MjUsOCArMTcyNSw4IEBACiAJR01fR1BTUl9MSU5LX1VQCQk9IDE8PDEyLCAvKiBCaXQgMTI6CUxpbmsgVXAgU3RhdHVzICovCiAJR01fR1BTUl9QQVVTRQkJPSAxPDwxMSwgLyogQml0IDExOglQYXVzZSBTdGF0ZSAqLwogCUdNX0dQU1JfVFhfQUNUSVZFCT0gMTw8MTAsIC8qIEJpdCAxMDoJVHggaW4gUHJvZ3Jlc3MgKi8KLQlHTV9HUFNSX0VYQ19DT0wJCT0gMTw8OSwJLyogQml0ICA5OglFeGNlc3NpdmUgQ29sbGlzaW9ucyBPY2N1cmVkICovCi0JR01fR1BTUl9MQVRfQ09MCQk9IDE8PDgsCS8qIEJpdCAgODoJTGF0ZSBDb2xsaXNpb25zIE9jY3VyZWQgKi8KKwlHTV9HUFNSX0VYQ19DT0wJCT0gMTw8OSwJLyogQml0ICA5OglFeGNlc3NpdmUgQ29sbGlzaW9ucyBPY2N1cnJlZCAqLworCUdNX0dQU1JfTEFUX0NPTAkJPSAxPDw4LAkvKiBCaXQgIDg6CUxhdGUgQ29sbGlzaW9ucyBPY2N1cnJlZCAqLwogCiAJR01fR1BTUl9QSFlfU1RfQ0gJPSAxPDw1LAkvKiBCaXQgIDU6CVBIWSBTdGF0dXMgQ2hhbmdlICovCiAJR01fR1BTUl9HSUdfU1BFRUQJPSAxPDw0LAkvKiBCaXQgIDQ6CUdpZ2FiaXQgU3BlZWQgKDEgPSAxMDAwIE1icHMpICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbWM5MXguaCBiL2RyaXZlcnMvbmV0L3NtYzkxeC5oCmluZGV4IDY4ZDQ4YWIuLjVmNTNmYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NtYzkxeC5oCisrKyBiL2RyaXZlcnMvbmV0L3NtYzkxeC5oCkBAIC05MjEsNyArOTIxLDcgQEAKICAqIEhhY2sgQWxlcnQ6IFNvbWUgc2V0dXBzIGp1c3QgY2FuJ3Qgd3JpdGUgOCBvciAxNiBiaXRzIHJlbGlhYmx5IHdoZW4gbm90CiAgKiBhbGlnbmVkIHRvIGEgMzIgYml0IGJvdW5kYXJ5LiAgSSB0ZWxsIHlvdSB0aGF0IGRvZXMgZXhpc3QhCiAgKiBGb3J0dW5hdGVseSB0aGUgYWZmZWN0ZWQgcmVnaXN0ZXIgYWNjZXNzZXMgY2FuIGJlIGVhc2lseSB3b3JrZWQgYXJvdW5kCi0gKiBzaW5jZSB3ZSBjYW4gd3JpdGUgemVyb2VzIHRvIHRoZSBwcmVjZWVkaW5nIDE2IGJpdHMgd2l0aG91dCBhZHZlcnNlCisgKiBzaW5jZSB3ZSBjYW4gd3JpdGUgemVyb2VzIHRvIHRoZSBwcmVjZWRpbmcgMTYgYml0cyB3aXRob3V0IGFkdmVyc2UKICAqIGVmZmVjdHMgYW5kIHVzZSBhIDMyLWJpdCBhY2Nlc3MuCiAgKgogICogRW5mb3JjZSBpdCBvbiBhbnkgMzItYml0IGNhcGFibGUgc2V0dXAgZm9yIG5vdy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Ntc2M5MTF4LmMgYi9kcml2ZXJzL25ldC9zbXNjOTExeC5jCmluZGV4IDE1NjYyNTkuLjRiNDJlY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Ntc2M5MTF4LmMKKysrIGIvZHJpdmVycy9uZXQvc21zYzkxMXguYwpAQCAtMTY2OSw3ICsxNjY5LDcgQEAKIAl9CiAKIAlpZiAoZTJjbWQgJiBFMlBfQ01EX0VQQ19USU1FT1VUXykgewotCQlTTVNDX1RSQUNFKERSViwgIkVycm9yIG9jY3VyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKKwkJU01TQ19UUkFDRShEUlYsICJFcnJvciBvY2N1cnJlZCBkdXJpbmcgZWVwcm9tIG9wZXJhdGlvbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE4MTgsNiArMTgxOCw3IEBACiAJU01TQ19UUkFDRShQUk9CRSwgIlBIWSB3aWxsIGJlIGF1dG9kZXRlY3RlZC4iKTsKIAogCXNwaW5fbG9ja19pbml0KCZwZGF0YS0+ZGV2X2xvY2spOworCXNwaW5fbG9ja19pbml0KCZwZGF0YS0+bWFjX2xvY2spOwogCiAJaWYgKHBkYXRhLT5pb2FkZHIgPT0gMCkgewogCQlTTVNDX1dBUk5JTkcoUFJPQkUsICJwZGF0YS0+aW9hZGRyOiAweDAwMDAwMDAwIik7CkBAIC0xODk1LDggKzE4OTYsMTEgQEAKIAkvKiB3b3JrYXJvdW5kIGZvciBwbGF0Zm9ybXMgd2l0aG91dCBhbiBlZXByb20sIHdoZXJlIHRoZSBtYWMgYWRkcmVzcwogCSAqIGlzIHN0b3JlZCBlbHNld2hlcmUgYW5kIHNldCBieSB0aGUgYm9vdGxvYWRlci4gIFRoaXMgc2F2ZXMgdGhlCiAJICogbWFjIGFkZHJlc3MgYmVmb3JlIHJlc2V0dGluZyB0aGUgZGV2aWNlICovCi0JaWYgKHBkYXRhLT5jb25maWcuZmxhZ3MgJiBTTVNDOTExWF9TQVZFX01BQ19BRERSRVNTKQorCWlmIChwZGF0YS0+Y29uZmlnLmZsYWdzICYgU01TQzkxMVhfU0FWRV9NQUNfQUREUkVTUykgeworCQlzcGluX2xvY2tfaXJxKCZwZGF0YS0+bWFjX2xvY2spOwogCQlzbXNjOTExeF9yZWFkX21hY19hZGRyZXNzKGRldik7CisJCXNwaW5fdW5sb2NrX2lycSgmcGRhdGEtPm1hY19sb2NrKTsKKwl9CiAKIAkvKiBSZXNldCB0aGUgTEFOOTExeCAqLwogCWlmIChzbXNjOTExeF9zb2Z0X3Jlc2V0KHBkYXRhKSkKQEAgLTIwNTksOCArMjA2Myw2IEBACiAJCVNNU0NfVFJBQ0UoUFJPQkUsICJOZXR3b3JrIGludGVyZmFjZTogXCIlc1wiIiwgZGV2LT5uYW1lKTsKIAl9CiAKLQlzcGluX2xvY2tfaW5pdCgmcGRhdGEtPm1hY19sb2NrKTsKLQogCXJldHZhbCA9IHNtc2M5MTF4X21paV9pbml0KHBkZXYsIGRldik7CiAJaWYgKHJldHZhbCkgewogCQlTTVNDX1dBUk5JTkcoUFJPQkUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbXNjOTQyMC5jIGIvZHJpdmVycy9uZXQvc21zYzk0MjAuYwppbmRleCBiMDllZTFjLi40YzkyYWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zbXNjOTQyMC5jCisrKyBiL2RyaXZlcnMvbmV0L3Ntc2M5NDIwLmMKQEAgLTM2NCw3ICszNjQsNyBAQAogCX0KIAogCWlmIChlMmNtZCAmIEUyUF9DTURfRVBDX1RJTUVPVVRfKSB7Ci0JCXNtc2NfaW5mbyhIVywgIkVycm9yIG9jY3VyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKKwkJc21zY19pbmZvKEhXLCAiRXJyb3Igb2NjdXJyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zdG1tYWMvbm9ybV9kZXNjLmMgYi9kcml2ZXJzL25ldC9zdG1tYWMvbm9ybV9kZXNjLmMKaW5kZXggY2QwY2M3Ni4uMDI5YzJhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc3RtbWFjL25vcm1fZGVzYy5jCisrKyBiL2RyaXZlcnMvbmV0L3N0bW1hYy9ub3JtX2Rlc2MuYwpAQCAtNjcsNyArNjcsNyBAQAogCiAvKiBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIGlmIGVhY2ggaW5jb21pbmcgZnJhbWUgaGFzIHNvbWUgZXJyb3JzCiAgKiBhbmQsIGlmIHJlcXVpcmVkLCB1cGRhdGVzIHRoZSBtdWx0aWNhc3Qgc3RhdGlzdGljcy4KLSAqIEluIGNhc2Ugb2Ygc3VjY2VzcywgaXQgcmV0dXJucyBjc3VtX25vbmUgYmVjYXN1ZSB0aGUgZGV2aWNlCisgKiBJbiBjYXNlIG9mIHN1Y2Nlc3MsIGl0IHJldHVybnMgY3N1bV9ub25lIGJlY2F1c2UgdGhlIGRldmljZQogICogaXMgbm90IGFibGUgdG8gY29tcHV0ZSB0aGUgY3N1bSBpbiBIVy4gKi8KIHN0YXRpYyBpbnQgbmRlc2NfZ2V0X3J4X3N0YXR1cyh2b2lkICpkYXRhLCBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LAogCQkJICAgICAgIHN0cnVjdCBkbWFfZGVzYyAqcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N1bmJtYWMuaCBiL2RyaXZlcnMvbmV0L3N1bmJtYWMuaAppbmRleCA4ZGI4ODk0Li40OTQzZTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdW5ibWFjLmgKKysrIGIvZHJpdmVycy9uZXQvc3VuYm1hYy5oCkBAIC0xODUsNyArMTg1LDcgQEAKICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0VOQUJMRSAgICAweDAwMDAwMDAxIC8qIEVuYWJsZSB0aGUgcmVjZWl2ZXIgICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0ZJRk8gICAgICAweDAwMDAwMDBlIC8qIERlZmF1bHQgcnggZnRocmVzaC4uLiAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BTVFJJUCAgICAweDAwMDAwMDIwIC8qIFBhZCBieXRlIHN0cmlwIGVuYWJsZSAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BNSVNDICAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjb3VzIG1vZGUgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BNSVNDICAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjdW91cyBtb2RlICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19ERVJSICAgICAgMHgwMDAwMDA4MCAvKiBEaXNhYmxlIGVycm9yIGNoZWNraW5nICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19EQ1JDUyAgICAgMHgwMDAwMDEwMCAvKiBEaXNhYmxlIENSQyBzdHJpcHBpbmcgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19NRSAgICAgICAgMHgwMDAwMDIwMCAvKiBSZWNlaXZlIHBhY2tldHMgYWRkcmVzc2VkIHRvIG1lICAgICAgICAgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zdW5nZW0uYyBiL2RyaXZlcnMvbmV0L3N1bmdlbS5jCmluZGV4IGMxYTM0NDguLmQzYmU3MzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3N1bmdlbS5jCisrKyBiL2RyaXZlcnMvbmV0L3N1bmdlbS5jCkBAIC0xMTUwLDcgKzExNTAsNyBAQAogCXZhbCAmPSB+KFBDU19DRkdfRU5BQkxFIHwgUENTX0NGR19UTyk7CiAJd3JpdGVsKHZhbCwgZ3AtPnJlZ3MgKyBQQ1NfQ0ZHKTsKIAotCS8qIEFkdmVydGlzZSBhbGwgY2FwYWJpbGl0aWVzIGV4Y2VwdCBhc3N5bWV0cmljCisJLyogQWR2ZXJ0aXNlIGFsbCBjYXBhYmlsaXRpZXMgZXhjZXB0IGFzeW1tZXRyaWMKIAkgKiBwYXVzZS4KIAkgKi8KIAl2YWwgPSByZWFkbChncC0+cmVncyArIFBDU19NSUlBRFYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc3VuaG1lLmggYi9kcml2ZXJzL25ldC9zdW5obWUuaAppbmRleCA3NTZiNWJmLi42NGYyNzgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdW5obWUuaAorKysgYi9kcml2ZXJzL25ldC9zdW5obWUuaApAQCAtMjIzLDcgKzIyMyw3IEBACiAvKiBCaWdNYWMgcmVjZWl2ZSBjb25maWcgcmVnaXN0ZXIuICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19FTkFCTEUgICAweDAwMDAwMDAxIC8qIEVuYWJsZSB0aGUgcmVjZWl2ZXIgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BTVFJJUCAgIDB4MDAwMDAwMjAgLyogUGFkIGJ5dGUgc3RyaXAgZW5hYmxlICAgICAgICAgICAqLwotI2RlZmluZSBCSUdNQUNfUlhDRkdfUE1JU0MgICAgMHgwMDAwMDA0MCAvKiBFbmFibGUgcHJvbWlzY291cyBtb2RlICAgICAgICAgICovCisjZGVmaW5lIEJJR01BQ19SWENGR19QTUlTQyAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjdW91cyBtb2RlICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19ERVJSICAgICAweDAwMDAwMDgwIC8qIERpc2FibGUgZXJyb3IgY2hlY2tpbmcgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0RDUkNTICAgIDB4MDAwMDAxMDAgLyogRGlzYWJsZSBDUkMgc3RyaXBwaW5nICAgICAgICAgICAqLwogI2RlZmluZSBCSUdNQUNfUlhDRkdfUkVKTUUgICAgMHgwMDAwMDIwMCAvKiBSZWplY3QgcGFja2V0cyBhZGRyZXNzZWQgdG8gbWUgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90YzM1ODE1LmMgYi9kcml2ZXJzL25ldC90YzM1ODE1LmMKaW5kZXggYjZlZWM4Yy4uN2NhNTFjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGMzNTgxNS5jCisrKyBiL2RyaXZlcnMvbmV0L3RjMzU4MTUuYwpAQCAtMTE5LDEzICsxMTksMTMgQEAKIC8qCiAgKiBCaXQgYXNzaWdubWVudHMKICAqLwotLyogRE1BX0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogRE1BX0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgRE1BX1J4QWxpZ24JICAgICAgIDB4MDBjMDAwMDAgLyogMTpSZWNlcHRpb24gQWxpZ25tZW50CSAgICAgKi8KICNkZWZpbmUgRE1BX1J4QWxpZ25fMQkgICAgICAgMHgwMDQwMDAwMAogI2RlZmluZSBETUFfUnhBbGlnbl8yCSAgICAgICAweDAwODAwMDAwCiAjZGVmaW5lIERNQV9SeEFsaWduXzMJICAgICAgIDB4MDBjMDAwMDAKICNkZWZpbmUgRE1BX002NkVuU3RhdAkgICAgICAgMHgwMDA4MDAwMCAvKiAxOjY2TUh6IEVuYWJsZSBTdGF0ZQkgICAgICovCi0jZGVmaW5lIERNQV9JbnRNYXNrCSAgICAgICAweDAwMDQwMDAwIC8qIDE6SW50ZXJ1cHQgbWFzawkJICAgICAqLworI2RlZmluZSBETUFfSW50TWFzawkgICAgICAgMHgwMDA0MDAwMCAvKiAxOkludGVycnVwdCBtYXNrCQkgICAgICovCiAjZGVmaW5lIERNQV9TV0ludFJlcQkgICAgICAgMHgwMDAyMDAwMCAvKiAxOlNvZnR3YXJlIEludGVycnVwdCByZXF1ZXN0ICAgICovCiAjZGVmaW5lIERNQV9UeFdha2VVcAkgICAgICAgMHgwMDAxMDAwMCAvKiAxOlRyYW5zbWl0IFdha2UgVXAJCSAgICAgKi8KICNkZWZpbmUgRE1BX1J4QmlnRQkgICAgICAgMHgwMDAwODAwMCAvKiAxOlJlY2VpdmUgQmlnIEVuZGlhbgkgICAgICovCkBAIC0xMzQsMTEgKzEzNCwxMSBAQAogI2RlZmluZSBETUFfUG93ck1nbW50CSAgICAgICAweDAwMDAxMDAwIC8qIDE6UG93ZXIgTWFuYWdlbWVudAkJICAgICAqLwogI2RlZmluZSBETUFfRG1CdXJzdF9NYXNrICAgICAgIDB4MDAwMDAxZmMgLyogRE1BIEJ1cnN0IHNpemUJCSAgICAgKi8KIAotLyogUnhGcmFnU2l6ZSBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogUnhGcmFnU2l6ZSBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgUnhGcmFnX0VuUGFjawkgICAgICAgMHgwMDAwODAwMCAvKiAxOkVuYWJsZSBQYWNraW5nCQkgICAgICovCiAjZGVmaW5lIFJ4RnJhZ19NaW5GcmFnTWFzayAgICAgMHgwMDAwMGZmYyAvKiBNaW5pbXVtIEZyYWdtZW50CQkgICAgICovCiAKLS8qIE1BQ19DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIE1BQ19DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIE1BQ19MaW5rMTAJICAgICAgIDB4MDAwMDgwMDAgLyogMTpMaW5rIFN0YXR1cyAxME1iaXRzCSAgICAgKi8KICNkZWZpbmUgTUFDX0VuTWlzc1JvbGwJICAgICAgIDB4MDAwMDIwMDAgLyogMTpFbmFibGUgTWlzc2VkIFJvbGwJICAgICAqLwogI2RlZmluZSBNQUNfTWlzc1JvbGwJICAgICAgIDB4MDAwMDA0MDAgLyogMTpNaXNzZWQgUm9sbAkJICAgICAqLwpAQCAtMTUyLDcgKzE1Miw3IEBACiAjZGVmaW5lIE1BQ19IYWx0SW1tCSAgICAgICAweDAwMDAwMDAyIC8qIDE6SGFsdCBJbW1lZGlhdGUJCSAgICAgKi8KICNkZWZpbmUgTUFDX0hhbHRSZXEJICAgICAgIDB4MDAwMDAwMDEgLyogMTpIYWx0IHJlcXVlc3QJCSAgICAgKi8KIAotLyogUFJPTV9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogUFJPTV9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgUFJPTV9CdXN5CSAgICAgICAweDAwMDA4MDAwIC8qIDE6QnVzeSAoU3RhcnQgT3BlcmF0aW9uKQkgICAgICovCiAjZGVmaW5lIFBST01fUmVhZAkgICAgICAgMHgwMDAwNDAwMCAvKjEwOlJlYWQgb3BlcmF0aW9uCQkgICAgICovCiAjZGVmaW5lIFBST01fV3JpdGUJICAgICAgIDB4MDAwMDIwMDAgLyowMTpXcml0ZSBvcGVyYXRpb24JCSAgICAgKi8KQEAgLTE2Miw3ICsxNjIsNyBAQAogI2RlZmluZSBQUk9NX0FkZHJfRW5hCSAgICAgICAweDAwMDAwMDMwIC8qMTF4eHh4OlBST00gV3JpdGUgZW5hYmxlCSAgICAgKi8KIAkJCQkJICAvKjAweHh4eDoJICAgICAgZGlzYWJsZQkgICAgICovCiAKLS8qIENBTV9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENBTV9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIENBTV9Db21wRW4JICAgICAgIDB4MDAwMDAwMTAgLyogMTpDQU0gQ29tcGFyZSBFbmFibGUJICAgICAqLwogI2RlZmluZSBDQU1fTmVnQ0FNCSAgICAgICAweDAwMDAwMDA4IC8qIDE6UmVqZWN0IHBhY2tldHMgQ0FNIHJlY29nbml6ZXMsKi8KIAkJCQkJICAvKgkJCWFjY2VwdCBvdGhlciAqLwpAQCAtMTcwLDcgKzE3MCw3IEBACiAjZGVmaW5lIENBTV9Hcm91cEFjYwkgICAgICAgMHgwMDAwMDAwMiAvKiAxOk11bHRpY2FzdCBhc3NlcHQJCSAgICAgKi8KICNkZWZpbmUgQ0FNX1N0YXRpb25BY2MJICAgICAgIDB4MDAwMDAwMDEgLyogMTp1bmljYXN0IGFjY2VwdAkJICAgICAqLwogCi0vKiBDQU1fRW5hIGJpdCBhc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDQU1fRW5hIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBDQU1fRU5UUllfTUFYCQkgICAgICAgMjEgICAvKiBDQU0gRGF0YSBlbnRyeSBtYXggY291bnQJICAgICAqLwogI2RlZmluZSBDQU1fRW5hX01hc2sgKCgxPDxDQU1fRU5UUllfTUFYKS0xKSAvKiBDQU0gRW5hYmxlIGJpdHMgKE1heCAyMWJpdHMpICAqLwogI2RlZmluZSBDQU1fRW5hX0JpdChpbmRleCkJKDEgPDwgKGluZGV4KSkKQEAgLTE3OCw3ICsxNzgsNyBAQAogI2RlZmluZSBDQU1fRU5UUllfU09VUkNFCTEKICNkZWZpbmUgQ0FNX0VOVFJZX01BQ0NUTAkyMAogCi0vKiBUeF9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBUeF9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBUeF9FbgkJICAgICAgIDB4MDAwMDAwMDEgLyogMTpUcmFuc21pdCBlbmFibGUJCSAgICAgKi8KICNkZWZpbmUgVHhfVHhIYWx0CSAgICAgICAweDAwMDAwMDAyIC8qIDE6VHJhbnNtaXQgSGFsdCBSZXF1ZXN0CSAgICAgKi8KICNkZWZpbmUgVHhfTm9QYWQJICAgICAgIDB4MDAwMDAwMDQgLyogMTpTdXBwcmVzcyBQYWRkaW5nCQkgICAgICovCkBAIC0xOTIsNyArMTkyLDcgQEAKICNkZWZpbmUgVHhfRW5UeFBhcgkgICAgICAgMHgwMDAwMjAwMCAvKiAxOkVuYWJsZSBUcmFuc21pdCBQYXJpdHkJICAgICAqLwogI2RlZmluZSBUeF9FbkNvbXAJICAgICAgIDB4MDAwMDQwMDAgLyogMTpFbmFibGUgQ29tcGxldGlvbgkgICAgICovCiAKLS8qIFR4X1N0YXQgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFR4X1N0YXQgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIFR4X1R4Q29sbF9NQVNLCSAgICAgICAweDAwMDAwMDBGIC8qIFR4IENvbGxpc2lvbiBDb3VudAkJICAgICAqLwogI2RlZmluZSBUeF9FeENvbGwJICAgICAgIDB4MDAwMDAwMTAgLyogRXhjZXNzaXZlIENvbGxpc2lvbgkgICAgICovCiAjZGVmaW5lIFR4X1RYRGVmZXIJICAgICAgIDB4MDAwMDAwMjAgLyogVHJhbnNtaXQgRGVmZXJlZAkJICAgICAqLwpAQCAtMjA4LDcgKzIwOCw3IEBACiAjZGVmaW5lIFR4X0hhbHRlZAkgICAgICAgMHgwMDAwODAwMCAvKiBUeCBIYWx0ZWQJCQkgICAgICovCiAjZGVmaW5lIFR4X1NRRXJyCSAgICAgICAweDAwMDEwMDAwIC8qIFNpZ25hbCBRdWFsaXR5IEVycm9yKFNRRSkJICAgICAqLwogCi0vKiBSeF9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBSeF9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBSeF9Fbkdvb2QJICAgICAgIDB4MDAwMDQwMDAgLyogMTpFbmFibGUgR29vZAkJICAgICAqLwogI2RlZmluZSBSeF9FblJ4UGFyCSAgICAgICAweDAwMDAyMDAwIC8qIDE6RW5hYmxlIFJlY2VpdmUgUGFyaXR5CSAgICAgKi8KICNkZWZpbmUgUnhfRW5Mb25nRXJyCSAgICAgICAweDAwMDAwODAwIC8qIDE6RW5hYmxlIExvbmcgRXJyb3IJICAgICAqLwpAQCAtMjIyLDcgKzIyMiw3IEBACiAjZGVmaW5lIFJ4X1J4SGFsdAkgICAgICAgMHgwMDAwMDAwMiAvKiAxOlJlY2VpdmUgSGFsdCBSZXF1ZXN0CSAgICAgKi8KICNkZWZpbmUgUnhfUnhFbgkJICAgICAgIDB4MDAwMDAwMDEgLyogMTpSZWNlaXZlIEludHJydXB0IEVuYWJsZQkgICAgICovCiAKLS8qIFJ4X1N0YXQgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFJ4X1N0YXQgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIFJ4X0hhbHRlZAkgICAgICAgMHgwMDAwODAwMCAvKiBSeCBIYWx0ZWQJCQkgICAgICovCiAjZGVmaW5lIFJ4X0dvb2QJCSAgICAgICAweDAwMDA0MDAwIC8qIFJ4IEdvb2QJCQkgICAgICovCiAjZGVmaW5lIFJ4X1J4UGFyCSAgICAgICAweDAwMDAyMDAwIC8qIFJ4IFBhcml0eSBFcnJvcgkJICAgICAqLwpAQCAtMjM4LDcgKzIzOCw3IEBACiAKICNkZWZpbmUgUnhfU3RhdF9NYXNrCSAgICAgICAweDAwMDBGRkYwIC8qIFJ4IEFsbCBTdGF0dXMgTWFzawkJICAgICAqLwogCi0vKiBJbnRfRW4gYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBJbnRfRW4gYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBJbnRfTlJBYnRFbgkgICAgICAgMHgwMDAwMDgwMCAvKiAxOk5vbi1yZWNvdmVyYWJsZSBBYm9ydCBFbmFibGUgICovCiAjZGVmaW5lIEludF9UeEN0bENtcEVuCSAgICAgICAweDAwMDAwNDAwIC8qIDE6VHJhbnNtaXQgQ3RsIENvbXBsZXRlIEVuYWJsZSAgKi8KICNkZWZpbmUgSW50X0RtUGFyRXJyRW4JICAgICAgIDB4MDAwMDAyMDAgLyogMTpETUEgUGFyaXR5IEVycm9yIEVuYWJsZQkgICAgICovCkBAIC0yNTMsNyArMjUzLDcgQEAKICNkZWZpbmUgSW50X0ZEQUV4RW4JICAgICAgIDB4MDAwMDAwMDEgLyogMTpGcmVlIERlc2NyaXB0b3IgQXJlYQkgICAgICovCiAJCQkJCSAgLyoJCSAgIEV4aGF1c3RlZCBFbmFibGUgICovCiAKLS8qIEludF9TcmMgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEludF9TcmMgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIEludF9OUmFidAkgICAgICAgMHgwMDAwNDAwMCAvKiAxOk5vbiBSZWNvdmVyYWJsZSBlcnJvcgkgICAgICovCiAjZGVmaW5lIEludF9EbVBhckVyclN0YXQgICAgICAgMHgwMDAwMjAwMCAvKiAxOkRNQSBQYXJpdHkgRXJyb3IgJiBDbGVhcgkgICAgICovCiAjZGVmaW5lIEludF9CTEV4CSAgICAgICAweDAwMDAxMDAwIC8qIDE6QnVmZmVyIExpc3QgRW1wdHkgJiBDbGVhciAgICAgKi8KQEAgLTI3MCw4ICsyNzAsOCBAQAogI2RlZmluZSBJbnRfSW50TWFjUngJICAgICAgIDB4MDAwMDAwMDIgLyogMTpSeCBjb250cm9sbGVyICYgQ2xlYXIJICAgICAqLwogI2RlZmluZSBJbnRfSW50TWFjVHgJICAgICAgIDB4MDAwMDAwMDEgLyogMTpUeCBjb250cm9sbGVyICYgQ2xlYXIJICAgICAqLwogCi0vKiBNRF9DQSBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0jZGVmaW5lIE1EX0NBX1ByZVN1cAkgICAgICAgMHgwMDAwMTAwMCAvKiAxOlByZWFtYmxlIFN1cHJlc3MJCSAgICAgKi8KKy8qIE1EX0NBIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZGVmaW5lIE1EX0NBX1ByZVN1cAkgICAgICAgMHgwMDAwMTAwMCAvKiAxOlByZWFtYmxlIFN1cHByZXNzCQkgICAgICovCiAjZGVmaW5lIE1EX0NBX0J1c3kJICAgICAgIDB4MDAwMDA4MDAgLyogMTpCdXN5IChTdGFydCBPcGVyYXRpb24pCSAgICAgKi8KICNkZWZpbmUgTURfQ0FfV3IJICAgICAgIDB4MDAwMDA0MDAgLyogMTpXcml0ZSAwOlJlYWQJCSAgICAgKi8KIApAQCAtMjk2LDcgKzI5Niw3IEBACiAKICNkZWZpbmUgRkRfQUxJR04JMTYKIAotLyogRnJhbWUgRGVzY3JpcHRlciBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogRnJhbWUgRGVzY3JpcHRlciBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgRkRfRkRMZW5ndGhfTUFTSyAgICAgICAweDAwMDBGRkZGIC8qIExlbmd0aCBNQVNLCQkgICAgICovCiAjZGVmaW5lIEZEX0JEQ250X01BU0sJICAgICAgIDB4MDAxRjAwMDAgLyogQkQgY291bnQgTUFTSyBpbiBGRAkgICAgICovCiAjZGVmaW5lIEZEX0ZybU9wdF9NQVNLCSAgICAgICAweDdDMDAwMDAwIC8qIEZyYW1lIG9wdGlvbiBNQVNLCQkgICAgICovCkBAIC0zMDksOCArMzA5LDggQEAKICNkZWZpbmUgRkRfTmV4dF9FT0wJICAgICAgIDB4MDAwMDAwMDEgLyogRkQgRU9MIGluZGljYXRvcgkJICAgICAqLwogI2RlZmluZSBGRF9CRENudF9TSElGVAkgICAgICAgMTYKIAotLyogQnVmZmVyIERlc2NyaXB0ZXIgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotI2RlZmluZSBCRF9CdWZmTGVuZ3RoX01BU0sgICAgIDB4MDAwMEZGRkYgLyogUmVjaWV2ZSBEYXRhIFNpemUJCSAgICAgKi8KKy8qIEJ1ZmZlciBEZXNjcmlwdGVyIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZGVmaW5lIEJEX0J1ZmZMZW5ndGhfTUFTSyAgICAgMHgwMDAwRkZGRiAvKiBSZWNlaXZlIERhdGEgU2l6ZQkJICAgICAqLwogI2RlZmluZSBCRF9SeEJESURfTUFTSwkgICAgICAgMHgwMEZGMDAwMCAvKiBCRCBJRCBOdW1iZXIgTUFTSwkJICAgICAqLwogI2RlZmluZSBCRF9SeEJEU2VxTl9NQVNLICAgICAgIDB4N0YwMDAwMDAgLyogUnggQkQgU2VxdWVuY2UgTnVtYmVyCSAgICAgKi8KICNkZWZpbmUgQkRfQ293bnNCRAkgICAgICAgMHg4MDAwMDAwMCAvKiBCRCBDb250cm9sbGVyIG93bmVyIGJpdAkgICAgICovCkBAIC0zMzksNyArMzM5LDcgQEAKICNkZWZpbmUgVFhfVEhSRVNIT0xECTEwMjQKIC8qIHVzZWQgdGhyZXNob2xkIHdpdGggcGFja2V0IG1heCBieXRlIGZvciBsb3cgcGNpIHRyYW5zZmVyIGFiaWxpdHkuKi8KICNkZWZpbmUgVFhfVEhSRVNIT0xEX01BWCAxNTM2Ci0vKiBzZXR0aW5nIHRocmVzaG9sZCBtYXggdmFsdWUgd2hlbiBvdmVycnVuIGVycm9yIG9jY3VyZWQgdGhpcyBjb3VudC4gKi8KKy8qIHNldHRpbmcgdGhyZXNob2xkIG1heCB2YWx1ZSB3aGVuIG92ZXJydW4gZXJyb3Igb2NjdXJyZWQgdGhpcyBjb3VudC4gKi8KICNkZWZpbmUgVFhfVEhSRVNIT0xEX0tFRVBfTElNSVQgMTAKIAogLyogMTYgKyBSWF9CVUZfTlVNICogOCArIFJYX0ZEX05VTSAqIDE2ICsgVFhfRkRfTlVNICogMzIgPD0gUEFHRV9TSVpFKkZEX1BBR0VfTlVNICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWh1dGkuYyBiL2RyaXZlcnMvbmV0L3RlaHV0aS5jCmluZGV4IDMzOTc2MTguLjg1NjRlYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RlaHV0aS5jCisrKyBiL2RyaXZlcnMvbmV0L3RlaHV0aS5jCkBAIC02NDUsNyArNjQ1LDcgQEAKIAlpZiAoY21kICE9IFNJT0NERVZQUklWQVRFKSB7CiAJCWVycm9yID0gY29weV9mcm9tX3VzZXIoZGF0YSwgaWZyLT5pZnJfZGF0YSwgc2l6ZW9mKGRhdGEpKTsKIAkJaWYgKGVycm9yKSB7Ci0JCQlwcl9lcnIoImNhbnQgY29weSBmcm9tIHVzZXJcbiIpOworCQkJcHJfZXJyKCJjYW4ndCBjb3B5IGZyb20gdXNlclxuIik7CiAJCQlSRVQoLUVGQVVMVCk7CiAJCX0KIAkJREJHKCIlZCAweCV4IDB4JXhcbiIsIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pOwpAQCAtOTk5LDcgKzk5OSw3IEBACiAgKgogICogUnhEIGZpZm8gaXMgc21hbGxlciB0aGFuIFJ4RiBmaWZvIGJ5IGRlc2lnbi4gVXBvbiBoaWdoIGxvYWQsIFJ4RCB3aWxsIGJlCiAgKiBmaWxsZWQgYW5kIHBhY2tldHMgd2lsbCBiZSBkcm9wcGVkIGJ5IG5pYyB3aXRob3V0IGdldHRpbmcgaW50byBob3N0IG9yCi0gKiBjb3VzaW5nIGludGVycnVwdC4gQW55d2F5LCBpbiB0aGF0IGNvbmRpdGlvbiwgaG9zdCBoYXMgbm8gY2hhbmNlIHRvIHByb2NjZXNzCisgKiBjb3VzaW5nIGludGVycnVwdC4gQW55d2F5LCBpbiB0aGF0IGNvbmRpdGlvbiwgaG9zdCBoYXMgbm8gY2hhbmNlIHRvIHByb2Nlc3MKICAqIGFsbCBwYWNrZXRzLCBidXQgZHJvcHBpbmcgaW4gbmljIGlzIGNoZWFwZXIsIHNpbmNlIGl0IHRha2VzIDAgY3B1IGN5Y2xlcwogICovCiAKQEAgLTEyMDAsOCArMTIwMCw4IEBACiAJUkVUKCk7CiB9CiAKLS8qIGJkeF9yeF9yZWNlaXZlIC0gcmVjaWV2ZXMgZnVsbCBwYWNrZXRzIGZyb20gUlhEIGZpZm8gYW5kIHBhc3MgdGhlbSB0byBPUwotICogTk9URTogYSBzcGVjaWFsIHRyZWF0bWVudCBpcyBnaXZlbiB0byBub24tY29udGlub3VzIGRlc2NyaXB0b3JzCisvKiBiZHhfcnhfcmVjZWl2ZSAtIHJlY2VpdmVzIGZ1bGwgcGFja2V0cyBmcm9tIFJYRCBmaWZvIGFuZCBwYXNzIHRoZW0gdG8gT1MKKyAqIE5PVEU6IGEgc3BlY2lhbCB0cmVhdG1lbnQgaXMgZ2l2ZW4gdG8gbm9uLWNvbnRpbnVvdXMgZGVzY3JpcHRvcnMKICAqIHRoYXQgc3RhcnQgbmVhciB0aGUgZW5kLCB3cmFwcyBhcm91bmQgYW5kIGNvbnRpbnVlIGF0IHRoZSBiZWdpbm5pbmcuIGEgc2Vjb25kCiAgKiBwYXJ0IGlzIGNvcGllZCByaWdodCBhZnRlciB0aGUgZmlyc3QsIGFuZCB0aGVuIGRlc2NyaXB0b3IgaXMgaW50ZXJwcmV0ZWQgYXMKICAqIG5vcm1hbC4gZmlmbyBoYXMgYW4gZXh0cmEgc3BhY2UgdG8gYWxsb3cgc3VjaCBvcGVyYXRpb25zCkBAIC0xNTg0LDkgKzE1ODQsOSBAQAogfQogCiAvKgotICogYmR4X3R4X3NwYWNlIC0gY2FsY3VsYXRlcyBhdmFsYWJsZSBzcGFjZSBpbiBUWCBmaWZvCisgKiBiZHhfdHhfc3BhY2UgLSBjYWxjdWxhdGVzIGF2YWlsYWJsZSBzcGFjZSBpbiBUWCBmaWZvCiAgKiBAcHJpdiAtIE5JQyBwcml2YXRlIHN0cnVjdHVyZQotICogUmV0dXJucyBhdmFsaWFibGUgc3BhY2UgaW4gVFggZmlmbyBpbiBieXRlcworICogUmV0dXJucyBhdmFpbGFibGUgc3BhY2UgaW4gVFggZmlmbyBpbiBieXRlcwogICovCiBzdGF0aWMgaW5saW5lIGludCBiZHhfdHhfc3BhY2Uoc3RydWN0IGJkeF9wcml2ICpwcml2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVodXRpLmggYi9kcml2ZXJzL25ldC90ZWh1dGkuaAppbmRleCBiNmJhODYwLi5jNTY0MmZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWh1dGkuaAorKysgYi9kcml2ZXJzL25ldC90ZWh1dGkuaApAQCAtNTAyLDcgKzUwMiw3IEBACiAjZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9BQ1JDICAweDAwMTAJLyogYWNjZXB0IGNyYyBlcnJvciAqLwogI2RlZmluZSAgR01BQ19SWF9GSUxURVJfQU0gICAgMHgwMDA4CS8qIGFjY2VwdCBtdWx0aWNhc3QgKi8KICNkZWZpbmUgIEdNQUNfUlhfRklMVEVSX0FCICAgIDB4MDAwNAkvKiBhY2NlcHQgYnJvYWRjYXN0ICovCi0jZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9QUk0gICAweDAwMDEJLyogWzA6MV0gcHJvbWlzY291cyBtb2RlICovCisjZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9QUk0gICAweDAwMDEJLyogWzA6MV0gcHJvbWlzY3VvdXMgbW9kZSAqLwogCiAjZGVmaW5lICBNQVhfRlJBTUVfQUJfVkFMICAgICAgIDB4M2ZmZgkvKiAxMzowICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RnMy5jIGIvZHJpdmVycy9uZXQvdGczLmMKaW5kZXggNzNjOTQyZC4uYjhjNWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGczLmMKKysrIGIvZHJpdmVycy9uZXQvdGczLmMKQEAgLTk3MTIsNyArOTcxMiw3IEBACiAJCWVlcHJvbS0+bGVuICs9IGJfY291bnQ7CiAJfQogCi0JLyogcmVhZCBieXRlcyB1cHRvIHRoZSBsYXN0IDQgYnl0ZSBib3VuZGFyeSAqLworCS8qIHJlYWQgYnl0ZXMgdXAgdG8gdGhlIGxhc3QgNCBieXRlIGJvdW5kYXJ5ICovCiAJcGQgPSAmZGF0YVtlZXByb20tPmxlbl07CiAJZm9yIChpID0gMDsgaSA8IChsZW4gLSAobGVuICYgMykpOyBpICs9IDQpIHsKIAkJcmV0ID0gdGczX252cmFtX3JlYWRfYmUzMih0cCwgb2Zmc2V0ICsgaSwgJnZhbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZzMuaCBiL2RyaXZlcnMvbmV0L3RnMy5oCmluZGV4IDczODg0YjYuLjVlOTY3MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RnMy5oCisrKyBiL2RyaXZlcnMvbmV0L3RnMy5oCkBAIC0yMTMwLDcgKzIxMzAsNyBAQAogI2RlZmluZSBNSUlfVEczX0RTUF9FWFA5NgkJMHgwZjk2CiAjZGVmaW5lIE1JSV9URzNfRFNQX0VYUDk3CQkweDBmOTcKIAotI2RlZmluZSBNSUlfVEczX0FVWF9DVFJMCQkweDE4IC8qIGF1eGlsbGlhcnkgY29udHJvbCByZWdpc3RlciAqLworI2RlZmluZSBNSUlfVEczX0FVWF9DVFJMCQkweDE4IC8qIGF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyICovCiAKICNkZWZpbmUgTUlJX1RHM19BVVhDVExfUENUTF8xMDBUWF9MUFdSCTB4MDAxMAogI2RlZmluZSBNSUlfVEczX0FVWENUTF9QQ1RMX1NQUl9JU09MQVRFCTB4MDAyMApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAKICNkZWZpbmUgTUlJX1RHM19BVVhDVExfQUNUTF9UWF82REIJMHgwNDAwCiAjZGVmaW5lIE1JSV9URzNfQVVYQ1RMX1NIRFdTRUxfQVVYQ1RMCTB4MDAwMAogCi0jZGVmaW5lIE1JSV9URzNfQVVYX1NUQVQJCTB4MTkgLyogYXV4aWxsaWFyeSBzdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTUlJX1RHM19BVVhfU1RBVAkJMHgxOSAvKiBhdXhpbGlhcnkgc3RhdHVzIHJlZ2lzdGVyICovCiAjZGVmaW5lIE1JSV9URzNfQVVYX1NUQVRfTFBBU1MJCTB4MDAwNAogI2RlZmluZSBNSUlfVEczX0FVWF9TVEFUX1NQRE1BU0sJMHgwNzAwCiAjZGVmaW5lIE1JSV9URzNfQVVYX1NUQVRfMTBIQUxGCQkweDAxMDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy8zYzM1OS5jIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMKaW5kZXggMTA4MDBmMS4uOGEzYjE5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMKKysrIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMKQEAgLTIwOCw3ICsyMDgsNyBAQAogICoJcGFzc2luZy9nZXR0aW5nIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIG5pYy4gQXMgd2l0aCBhbGwgcmVxdWVzdHMKICAqCW9uIHRoaXMgbmljIGl0IGhhcyB0byBiZSBkb25lIGluIHR3byBzdGFnZXMsIGEpIHRlbGwgdGhlIG5pYyB3aGljaAogICoJbWVtb3J5IGFkZHJlc3MgeW91IHdhbnQgdG8gYWNjZXNzIGFuZCBiKSBwYXNzL2dldCB0aGUgdmFsdWUgZnJvbSB0aGUgbmljLgotICoJV2l0aCB0aGUgRUVQcm9tLCB5b3UgaGF2ZSB0byB3YWl0IGJlZm9yZSBhbmQgaW5iZXR3ZWVuIGFjY2VzcyBhKSBhbmQgYikuCisgKglXaXRoIHRoZSBFRVByb20sIHlvdSBoYXZlIHRvIHdhaXQgYmVmb3JlIGFuZCBiZXR3ZWVuIGFjY2VzcyBhKSBhbmQgYikuCiAgKglBcyB0aGlzIGlzIG9ubHkgcmVhZCBhdCBpbml0aWFsaXphdGlvbiB0aW1lIGFuZCB0aGUgd2FpdCBwZXJpb2QgaXMgdmVyeSAKICAqCXNtYWxsIHdlIHNob3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNjaGVkdWxpbmcgaXNzdWVzLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvbWFkZ2VtYy5jIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL21hZGdlbWMuYwppbmRleCA3ODVhZDFhLi4yYmVkYzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvbWFkZ2VtYy5jCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9tYWRnZW1jLmMKQEAgLTczLDcgKzczLDcgQEAKIHN0YXRpYyBpcnFyZXR1cm5fdCBtYWRnZW1jX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpOwogCiAvKgotICogVGhlc2Ugd29yayBhcm91bmQgcGFnaW5nLCBob3dldmVyIHRoZXkgZG9uJ3QgZ3VhcmVudGVlIHlvdSdyZSBvbiB0aGUKKyAqIFRoZXNlIHdvcmsgYXJvdW5kIHBhZ2luZywgaG93ZXZlciB0aGV5IGRvbid0IGd1YXJhbnRlZSB5b3UncmUgb24gdGhlCiAgKiByaWdodCBwYWdlLgogICovCiAjZGVmaW5lIFNJRlJFQURCKHJlZykgKGluYihkZXYtPmJhc2VfYWRkciArICgocmVnPDB4OCk/cmVnOnJlZy0weDgpKSkKQEAgLTM4Nyw3ICszODcsNyBAQAogICogYm90aCB3aXRoIHRoZWlyIG93biBkaXNhZHZhbnRhZ2VzLi4uCiAgKgogICogMSkgIAlSZWFkIGluIHRoZSBTSUZTVFMgcmVnaXN0ZXIgZnJvbSB0aGUgVE1TIGNvbnRyb2xsZXIuICBUaGlzCi0gKglpcyBndWFyZW50ZWVkIHRvIGJlIGFjY3VyYXRlLCBob3dldmVyLCB0aGVyZSdzIGEgZmFpcmx5CisgKglpcyBndWFyYW50ZWVkIHRvIGJlIGFjY3VyYXRlLCBob3dldmVyLCB0aGVyZSdzIGEgZmFpcmx5CiAgKglsYXJnZSBwZXJmb3JtYW5jZSBwZW5hbHR5IGZvciBkb2luZyBzbzogdGhlIE1hZGdlIGNoaXBzCiAgKgltdXN0IHJlcXVlc3QgdGhlIHJlZ2lzdGVyIGZyb20gdGhlIEVhZ2xlLCB0aGUgRWFnbGUgbXVzdAogICoJcmVhZCB0aGVtIGZyb20gaXRzIGludGVybmFsIGJ1cywgYW5kIHRoZW4gdGFrZSB0aGUgcm91dGUKQEAgLTQ1NCw3ICs0NTQsNyBAQAogfQogCiAvKgotICogU2V0IHRoZSBjYXJkIHRvIHRoZSBwcmVmZXJlZCByaW5nIHNwZWVkLgorICogU2V0IHRoZSBjYXJkIHRvIHRoZSBwcmVmZXJyZWQgcmluZyBzcGVlZC4KICAqCiAgKiBVbmxpa2UgbmV3ZXIgY2FyZHMsIHRoZSBNQzE2LzMyIGhhdmUgdGhlaXIgc3BlZWQgc2VsZWN0aW9uCiAgKiBjaXJjdWl0IGNvbm5lY3RlZCB0byB0aGUgTWFkZ2UgQVNJQ3MgYW5kIG5vdCB0byB0aGUgVE1TMzgwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvc21jdHIuYyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCmluZGV4IDYzZGI1YTYuLmQ5MDQ0YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCkBAIC0zOTMsNyArMzkzLDcgQEAKICAgICAgICAgdHAtPnJ4X2JkYl9lbmRbTk9OX01BQ19RVUVVRV0gPSAoQkRCbG9jayAqKXNtY3RyX21hbGxvYyhkZXYsIDApOwogCiAgICAgICAgIC8qIEFsbG9jYXRlIE1BQyB0cmFuc21pdCBidWZmZXJzLgotICAgICAgICAgKiBNQUMgVHggQnVmZmVycyBkb2VuJ3QgaGF2ZSB0byBiZSBvbiBhbiBPREQgQm91bmRyeS4KKyAgICAgICAgICogTUFDIFR4IEJ1ZmZlcnMgZG9lbid0IGhhdmUgdG8gYmUgb24gYW4gT0REIEJvdW5kYXJ5LgogICAgICAgICAgKi8KICAgICAgICAgdHAtPnR4X2J1ZmZfaGVhZFtNQUNfUVVFVUVdCiAgICAgICAgICAgICAgICAgPSAoX191MTYgKilzbWN0cl9tYWxsb2MoZGV2LCB0cC0+dHhfYnVmZl9zaXplW01BQ19RVUVVRV0pOwpAQCAtNDE1LDcgKzQxNSw3IEBACiAKICAgICAgICAgLyogQWxsb2NhdGUgTm9uLU1BQyB0cmFuc21pdCBidWZmZXJzLgogICAgICAgICAgKiA/PyBGb3IgbWF4aW11bSBOZXR3YXJlIHBlcmZvcm1hbmNlLCBwdXQgVHggQnVmZmVycyBvbgotICAgICAgICAgKiBPREQgQm91bmRyeSBhbmQgdGhlbiByZXN0b3JlIG1hbGxvYyB0byBFdmVuIEJvdW5kcnlzLgorICAgICAgICAgKiBPREQgQm91bmRhcnkgYW5kIHRoZW4gcmVzdG9yZSBtYWxsb2MgdG8gRXZlbiBCb3VuZHJ5cy4KICAgICAgICAgICovCiAgICAgICAgIHNtY3RyX21hbGxvYyhkZXYsIDFMKTsKICAgICAgICAgdHAtPnR4X2J1ZmZfaGVhZFtOT05fTUFDX1FVRVVFXQpAQCAtMTMxMSw3ICsxMzExLDcgQEAKICAgICAgICAgbWVtX3VzZWQgKz0gc2l6ZW9mKEJEQmxvY2spICogdHAtPm51bV9yeF9iZGJzW01BQ19RVUVVRV07CiAKICAgICAgICAgLyogQWxsb2NhdGUgTUFDIHRyYW5zbWl0IGJ1ZmZlcnMuCi0gICAgICAgICAqIE1BQyB0cmFuc21pdCBidWZmZXJzIGRvbid0IGhhdmUgdG8gYmUgb24gYW4gT0REIEJvdW5kcnkuCisgICAgICAgICAqIE1BQyB0cmFuc21pdCBidWZmZXJzIGRvbid0IGhhdmUgdG8gYmUgb24gYW4gT0REIEJvdW5kYXJ5LgogICAgICAgICAgKi8KICAgICAgICAgbWVtX3VzZWQgKz0gdHAtPnR4X2J1ZmZfc2l6ZVtNQUNfUVVFVUVdOwogCkBAIC0xMzI1LDcgKzEzMjUsNyBAQAogCiAgICAgICAgIC8qIEFsbG9jYXRlIE5vbi1NQUMgdHJhbnNtaXQgYnVmZmVycy4KICAgICAgICAgICogRm9yIG1heGltdW0gTmV0d2FyZSBwZXJmb3JtYW5jZSwgcHV0IFR4IEJ1ZmZlcnMgb24KLSAgICAgICAgICogT0REIEJvdW5kcnksYW5kIHRoZW4gcmVzdG9yZSBtYWxsb2MgdG8gRXZlbiBCb3VuZHJ5cy4KKyAgICAgICAgICogT0REIEJvdW5kYXJ5LGFuZCB0aGVuIHJlc3RvcmUgbWFsbG9jIHRvIEV2ZW4gQm91bmRyeXMuCiAgICAgICAgICAqLwogICAgICAgICBtZW1fdXNlZCArPSAxTDsKICAgICAgICAgbWVtX3VzZWQgKz0gdHAtPnR4X2J1ZmZfc2l6ZVtOT05fTUFDX1FVRVVFXTsKQEAgLTMwNjksOCArMzA2OSw4IEBACiAgKiBkaXNhYmxlZC4hPwogICoKICAqIE5PVEUgMjogSWYgdGhlIG1vbml0b3Jfc3RhdGUgaXMgTVNfQkVBQ09OX1RFU1RfU1RBVEUgYW5kIHRoZSByZWNlaXZlX21hc2sKLSAqIGhhcyBhbnkgbXVsdGktY2FzdCBvciBwcm9taXNjb3VzIGJpdHMgc2V0LCB0aGUgcmVjZWl2ZV9tYXNrIG5lZWRzIHRvCi0gKiBiZSBjaGFuZ2VkIHRvIGNsZWFyIHRoZSBtdWx0aS1jYXN0IG9yIHByb21pc2NvdXMgbW9kZSBiaXRzLCB0aGUgbG9iZV90ZXN0CisgKiBoYXMgYW55IG11bHRpLWNhc3Qgb3IgcHJvbWlzY3VvdXMgYml0cyBzZXQsIHRoZSByZWNlaXZlX21hc2sgbmVlZHMgdG8KKyAqIGJlIGNoYW5nZWQgdG8gY2xlYXIgdGhlIG11bHRpLWNhc3Qgb3IgcHJvbWlzY3VvdXMgbW9kZSBiaXRzLCB0aGUgbG9iZV90ZXN0CiAgKiBydW4sIGFuZCB0aGVuIHRoZSByZWNlaXZlIG1hc2sgc2V0IGJhY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGlmIHRoZSB0ZXN0CiAgKiBpcyBzdWNjZXNzZnVsLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvdG1zMzgwdHIuaCBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oCmluZGV4IDYwYjMwZWUuLmU1YTYxN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oCkBAIC00NDIsNyArNDQyLDcgQEAKICNkZWZpbmUgUEFTU19GSVJTVF9CVUZfT05MWQkweDAxMDAJLyogUGFzc2VzIG9ubHkgZmlyc3QgaW50ZXJuYWwgYnVmZmVyCiAJCQkJCSAqIG9mIGVhY2ggcmVjZWl2ZWQgZnJhbWU7IEZyYW1lU2l6ZQogCQkJCQkgKiBvZiBSUExzIG11c3QgY29udGFpbiBpbnRlcm5hbAotCQkJCQkgKiBCVUZGRVJfU0laRSBiaXRzIGZvciBwcm9taXNjb3VzIG1vZGUuCisJCQkJCSAqIEJVRkZFUl9TSVpFIGJpdHMgZm9yIHByb21pc2N1b3VzIG1vZGUuCiAJCQkJCSAqLwogI2RlZmluZSBFTkFCTEVfRlVMTF9EVVBMRVhfU0VMRUNUSU9OCTB4MjAwMCAKICAJCQkJCS8qIEVuYWJsZSB0aGUgdXNlIG9mIGZ1bGwtZHVwbGV4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90c2kxMDhfZXRoLmggYi9kcml2ZXJzL25ldC90c2kxMDhfZXRoLmgKaW5kZXggNWE3N2FlNi4uNWZlZTdkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdHNpMTA4X2V0aC5oCisrKyBiL2RyaXZlcnMvbmV0L3RzaTEwOF9ldGguaApAQCAtMzA1LDkgKzMwNSw5IEBACiAjZGVmaW5lIFRTSTEwOF9UWF9DUkMJKDEgPDwgNSkJLyogR2VuZXJhdGUgQ1JDIGZvciB0aGlzIHBhY2tldCAqLwogI2RlZmluZSBUU0kxMDhfVFhfSU5UCSgxIDw8IDE0KQkvKiBHZW5lcmF0ZSBhbiBJUlEgYWZ0ZXIgZnJhZy4gcHJvY2Vzc2VkICovCiAjZGVmaW5lIFRTSTEwOF9UWF9SRVRSWQkoMHhmIDw8IDE2KQkvKiA0IGJpdCBmaWVsZCBpbmRpY2F0aW5nIG51bS4gb2YgcmV0cmllcyAqLwotI2RlZmluZSBUU0kxMDhfVFhfQ09MCSgxIDw8IDIwKQkvKiBTZXQgaWYgYSBjb2xsaXNpb24gb2NjdXJlZCAqLwotI2RlZmluZSBUU0kxMDhfVFhfTENPTAkoMSA8PCAyNCkJLyogU2V0IGlmIGEgbGF0ZSBjb2xsaXNpb24gb2NjdXJlZCAqLwotI2RlZmluZSBUU0kxMDhfVFhfVU5ERVIJKDEgPDwgMjUpCS8qIFNldCBpZiBhIEZJRk8gdW5kZXJydW4gb2NjdXJlZCAqLworI2RlZmluZSBUU0kxMDhfVFhfQ09MCSgxIDw8IDIwKQkvKiBTZXQgaWYgYSBjb2xsaXNpb24gb2NjdXJyZWQgKi8KKyNkZWZpbmUgVFNJMTA4X1RYX0xDT0wJKDEgPDwgMjQpCS8qIFNldCBpZiBhIGxhdGUgY29sbGlzaW9uIG9jY3VycmVkICovCisjZGVmaW5lIFRTSTEwOF9UWF9VTkRFUgkoMSA8PCAyNSkJLyogU2V0IGlmIGEgRklGTyB1bmRlcnJ1biBvY2N1cnJlZCAqLwogI2RlZmluZSBUU0kxMDhfVFhfUkxJTQkoMSA8PCAyNikJLyogU2V0IGlmIHRoZSByZXRyeSBsaW1pdCB3YXMgcmVhY2hlZCAqLwogI2RlZmluZSBUU0kxMDhfVFhfT0sJKDEgPDwgMzApCS8qIFNldCBpZiB0aGUgZnJhbWUgVFggd2FzIHN1Y2Nlc3NmdWwgKi8KICNkZWZpbmUgVFNJMTA4X1RYX09XTgkoMSA8PCAzMSkJLyogU2V0IGlmIHRoZSBkZXZpY2Ugb3ducyB0aGUgZGVzY3JpcHRvciAqLwpAQCAtMzMyLDcgKzMzMiw3IEBACiAjZGVmaW5lIFRTSTEwOF9SWF9SVU5UCSgxIDw8IDQpLyogUGFja2V0IGlzIGxlc3MgdGhhbiBtaW5pbXVtIHNpemUgKi8KICNkZWZpbmUgVFNJMTA4X1JYX0hBU0gJKDEgPDwgNykvKiBIYXNoIHRhYmxlIG1hdGNoICovCiAjZGVmaW5lIFRTSTEwOF9SWF9CQUQJKDEgPDwgOCkJLyogQmFkIGZyYW1lICovCi0jZGVmaW5lIFRTSTEwOF9SWF9PVkVSCSgxIDw8IDkpCS8qIEZJRk8gb3ZlcnJ1biBvY2N1cmVkICovCisjZGVmaW5lIFRTSTEwOF9SWF9PVkVSCSgxIDw8IDkpCS8qIEZJRk8gb3ZlcnJ1biBvY2N1cnJlZCAqLwogI2RlZmluZSBUU0kxMDhfUlhfVFJVTkMJKDEgPDwgMTEpCS8qIFBhY2tldCB0cnVuY2F0ZWQgZHVlIHRvIGV4Y2VzcyBsZW5ndGggKi8KICNkZWZpbmUgVFNJMTA4X1JYX0NSQwkoMSA8PCAxMikJLyogUGFja2V0IGhhZCBhIENSQyBlcnJvciAqLwogI2RlZmluZSBUU0kxMDhfUlhfSU5UCSgxIDw8IDEzKQkvKiBHZW5lcmF0ZSBhbiBJUlEgYWZ0ZXIgZnJhZy4gcHJvY2Vzc2VkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90dWxpcC9kZTR4NS5jIGIvZHJpdmVycy9uZXQvdHVsaXAvZGU0eDUuYwppbmRleCA0ZGJkNDkzLi5lZmFhMWQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dWxpcC9kZTR4NS5jCisrKyBiL2RyaXZlcnMvbmV0L3R1bGlwL2RlNHg1LmMKQEAgLTc5LDcgKzc5LDcgQEAKICAgICBldmVyeSAgdXNhYmxlIERFQ2NoaXAgYm9hcmQsICBJICBwaW5jaGVkIERvbmFsZCdzICduZXh0X21vZHVsZScgZmllbGQgdG8KICAgICBsaW5rIG15IG1vZHVsZXMgdG9nZXRoZXIuCiAKLSAgICBVcHRvIDE1IEVJU0EgY2FyZHMgY2FuIGJlIHN1cHBvcnRlZCB1bmRlciB0aGlzIGRyaXZlciwgbGltaXRlZCBwcmltYXJpbHkKKyAgICBVcCB0byAxNSBFSVNBIGNhcmRzIGNhbiBiZSBzdXBwb3J0ZWQgdW5kZXIgdGhpcyBkcml2ZXIsIGxpbWl0ZWQgcHJpbWFyaWx5CiAgICAgYnkgdGhlIGF2YWlsYWJsZSBJUlEgbGluZXMuICBJIGhhdmUgIGNoZWNrZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9mCiAgICAgbXVsdGlwbGUgZGVwY2EsIEV0aGVyV09SS1MgMyBjYXJkcyBhbmQgZGU0eDUgY2FyZHMgYW5kICBoYXZlIG5vdCBmb3VuZCBhCiAgICAgcHJvYmxlbSB5ZXQgKHByb3ZpZGVkIHlvdSBoYXZlIGF0IGxlYXN0IGRlcGNhLmMgdjAuMzgpIC4uLgpAQCAtNTE3LDcgKzUxNyw3IEBACiAgICAgdV9pbnQgbWNpOyAgICAgICAgICAgICAgLyogMjExNDIgTUlJIENvbm5lY3RvciBJbnRlcnJ1cHQgaW5mbyAgICAgICAgKi8KIH07CiAKLSNkZWZpbmUgREU0WDVfTUFYX1BIWSA4ICAgICAvKiBBbGxvdyB1cHRvIDggYXR0YWNoZWQgUEhZIGRldmljZXMgcGVyIGJvYXJkICovCisjZGVmaW5lIERFNFg1X01BWF9QSFkgOCAgICAgLyogQWxsb3cgdXAgdG8gOCBhdHRhY2hlZCBQSFkgZGV2aWNlcyBwZXIgYm9hcmQgKi8KIAogc3RydWN0IHNpYV9waHkgewogICAgIHVfY2hhciBtYzsgICAgICAgICAgICAgIC8qIE1lZGlhIENvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0xNDM2LDcgKzE0MzYsNyBAQAogCiAgICAgLyogUG9sbCBmb3Igc2V0dXAgZnJhbWUgY29tcGxldGlvbiAoYWRhcHRlciBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBub3cpICovCiAKLSAgICBmb3IgKGo9MCwgaT0wOyhpPDUwMCkgJiYgKGo9PTApO2krKykgeyAgICAgICAvKiBVcHRvIDUwMG1zIGRlbGF5ICovCisgICAgZm9yIChqPTAsIGk9MDsoaTw1MDApICYmIChqPT0wKTtpKyspIHsgICAgICAgLyogVXAgdG8gNTAwbXMgZGVsYXkgKi8KIAltZGVsYXkoMSk7CiAJaWYgKChzMzIpbGUzMl90b19jcHUobHAtPnR4X3JpbmdbbHAtPnR4X25ld10uc3RhdHVzKSA+PSAwKSBqPTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVsaXAvZG1mZS5jIGIvZHJpdmVycy9uZXQvdHVsaXAvZG1mZS5jCmluZGV4IDcwNjRlMDMuLmZiMDdmNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bGlwL2RtZmUuYworKysgYi9kcml2ZXJzL25ldC90dWxpcC9kbWZlLmMKQEAgLTEyMjQsNyArMTIyNCw3IEBACiAKIAogCS8qIElmIGNoaXAgcmVwb3J0cyB0aGF0IGxpbmsgaXMgZmFpbGVkIGl0IGNvdWxkIGJlIGJlY2F1c2UgZXh0ZXJuYWwKLQkJUEhZIGxpbmsgc3RhdHVzIHBpbiBpcyBub3QgY29uZWN0ZWQgY29ycmVjdGx5IHRvIGNoaXAKKwkJUEhZIGxpbmsgc3RhdHVzIHBpbiBpcyBub3QgY29ubmVjdGVkIGNvcnJlY3RseSB0byBjaGlwCiAJCVRvIGJlIHN1cmUgYXNrIFBIWSB0b28uCiAJKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVsaXAvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYwppbmRleCAzMDMxZWQ5Li4yOTY0ODZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYworKysgYi9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYwpAQCAtMTE1LDcgKzExNSw3IEBACiAJCQkgIDB4MDIsICAgICAgIC8qIHBoeSByZXNldCBzZXF1ZW5jZSBsZW5ndGggKi8KIAkJCSAgMHgwMSwgMHgwMCwgLyogcGh5IHJlc2V0IHNlcXVlbmNlICovCiAJCQkgIDB4MDAsIDB4NzgsIC8qIG1lZGlhIGNhcGFiaWxpdGllcyAqLwotCQkJICAweDAwLCAweGUwLCAvKiBud2F5IGFkdmVydGlzbWVudCAqLworCQkJICAweDAwLCAweGUwLCAvKiBud2F5IGFkdmVydGlzZW1lbnQgKi8KIAkJCSAgMHgwMCwgMHgwNSwgLyogZmR4IGJpdCBtYXAgKi8KIAkJCSAgMHgwMCwgMHgwNiAgLyogdHRtIGJpdCBtYXAgKi8KIAkJCX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90eXBob29uLmMgYi9kcml2ZXJzL25ldC90eXBob29uLmMKaW5kZXggN2ZhNWVjMi4uODI2NTNjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdHlwaG9vbi5jCisrKyBiL2RyaXZlcnMvbmV0L3R5cGhvb24uYwpAQCAtODQ2LDcgKzg0Niw3IEBACiAJaWYodHlwaG9vbl9udW1fZnJlZV90eCh0eFJpbmcpIDwgKG51bURlc2MgKyAyKSkgewogCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAKLQkJLyogQSBUeCBjb21wbGV0ZSBJUlEgY291bGQgaGF2ZSBnb3R0ZW4gaW5iZXR3ZWVuLCBtYWtpbmcKKwkJLyogQSBUeCBjb21wbGV0ZSBJUlEgY291bGQgaGF2ZSBnb3R0ZW4gYmV0d2VlbiwgbWFraW5nCiAJCSAqIHRoZSByaW5nIGZyZWUgYWdhaW4uIE9ubHkgbmVlZCB0byByZWNoZWNrIGhlcmUsIHNpbmNlCiAJCSAqIFR4IGlzIHNlcmlhbGl6ZWQuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdWNjX2dldGguaCBiL2RyaXZlcnMvbmV0L3VjY19nZXRoLmgKaW5kZXggMDU1Yjg3YS4uZDEyZmNhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdWNjX2dldGguaAorKysgYi9kcml2ZXJzL25ldC91Y2NfZ2V0aC5oCkBAIC04MCw3ICs4MCw3IEBACiAJCQkJICAgZnJhbWVzKSByZWNlaXZlZCB0aGF0IHdlcmUgYmV0d2VlbiAxMjgKIAkJCQkgICAoSW5jbHVkaW5nIEZDUyBsZW5ndGg9PTQpIGFuZCAyNTUgb2N0ZXRzICovCiAJdTMyIHR4b2s7CQkvKiBUb3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlc2lkaW5nIGluIGZyYW1lcwotCQkJCSAgIHRoYXQgd2hlcmUgaW52b2x2ZWQgaW4gc3VjY2Vzc2Z1bGwKKwkJCQkgICB0aGF0IHdoZXJlIGludm9sdmVkIGluIHN1Y2Nlc3NmdWwKIAkJCQkgICB0cmFuc21pc3Npb24gKi8KIAl1MTYgdHhjZjsJCS8qIFRvdGFsIG51bWJlciBvZiBQQVVTRSBjb250cm9sIGZyYW1lcwogCQkJCSAgIHRyYW5zbWl0dGVkIGJ5IHRoaXMgTUFDICovCkBAIC03NTksNyArNzU5LDcgQEAKIAkJCQkgICBmcmFtZXMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuIDEyOAogCQkJCSAgIChJbmNsdWRpbmcgRkNTIGxlbmd0aD09NCkgYW5kIDI1NSBvY3RldHMgKi8KIAl1MzIgdHhvazsJCS8qIFRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVzaWRpbmcgaW4gZnJhbWVzCi0JCQkJICAgdGhhdCB3aGVyZSBpbnZvbHZlZCBpbiBzdWNjZXNzZnVsbAorCQkJCSAgIHRoYXQgd2hlcmUgaW52b2x2ZWQgaW4gc3VjY2Vzc2Z1bAogCQkJCSAgIHRyYW5zbWlzc2lvbiAqLwogCXUxNiB0eGNmOwkJLyogVG90YWwgbnVtYmVyIG9mIFBBVVNFIGNvbnRyb2wgZnJhbWVzCiAJCQkJICAgdHJhbnNtaXR0ZWQgYnkgdGhpcyBNQUMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMgYi9kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jCmluZGV4IDhmMTI4NTQuLjg4MmY1M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYwpAQCAtMTkwLDcgKzE5MCw3IEBACiAKIAkJLyoKIAkJICogRUVNIHBhY2tldCBoZWFkZXIgZm9ybWF0OgotCQkgKiBiMC4uMTQ6CUVFTSB0eXBlIGRlcGVuZGFudCAoRGF0YSBvciBDb21tYW5kKQorCQkgKiBiMC4uMTQ6CUVFTSB0eXBlIGRlcGVuZGVudCAoRGF0YSBvciBDb21tYW5kKQogCQkgKiBiMTU6CQlibVR5cGUKIAkJICovCiAJCWhlYWRlciA9IGdldF91bmFsaWduZWRfbGUxNihza2ItPmRhdGEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jCmluZGV4IDdkYzg0OTcuLmFkMDI5OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9rYXdldGguYworKysgYi9kcml2ZXJzL25ldC91c2Iva2F3ZXRoLmMKQEAgLTEyMjEsNyArMTIyMSw3IEBACiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIE5VTEwpOwogCWlmICgha2F3ZXRoKSB7Ci0JCWRldl93YXJuKCZpbnRmLT5kZXYsICJ1bnJlZ2lzdGVyaW5nIG5vbi1leGlzdGFudCBkZXZpY2VcbiIpOworCQlkZXZfd2FybigmaW50Zi0+ZGV2LCAidW5yZWdpc3RlcmluZyBub24tZXhpc3RlbnQgZGV2aWNlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAluZXRkZXYgPSBrYXdldGgtPm5ldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jIGIvZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMKaW5kZXggNzI3ODc0ZC4uNDdhNmM4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMKQEAgLTEzMTMsNiArMTMxMywyMSBAQAogCQlVU0JfREVWSUNFKDB4MDQyNCwgMHg5OTA5KSwKIAkJLmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpICZzbXNjOTV4eF9pbmZvLAogCX0sCisJeworCQkvKiBTTVNDIExBTjk1MzAgVVNCIEV0aGVybmV0IERldmljZSAqLworCQlVU0JfREVWSUNFKDB4MDQyNCwgMHg5NTMwKSwKKwkJLmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpICZzbXNjOTV4eF9pbmZvLAorCX0sCisJeworCQkvKiBTTVNDIExBTjk3MzAgVVNCIEV0aGVybmV0IERldmljZSAqLworCQlVU0JfREVWSUNFKDB4MDQyNCwgMHg5NzMwKSwKKwkJLmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpICZzbXNjOTV4eF9pbmZvLAorCX0sCisJeworCQkvKiBTTVNDIExBTjg5NTMwIFVTQiBFdGhlcm5ldCBEZXZpY2UgKi8KKwkJVVNCX0RFVklDRSgweDA0MjQsIDB4OUUwOCksCisJCS5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSAmc21zYzk1eHhfaW5mbywKKwl9LAogCXsgfSwJCS8qIEVORCAqLwogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBwcm9kdWN0cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aWEtcmhpbmUuYyBiL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jCmluZGV4IDVlN2YwNjkuLmViNWQ3NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jCisrKyBiL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jCkBAIC0xODYxLDcgKzE4NjEsNyBAQAogCXUzMiBpbnRyX3N0YXR1czsKIAogCS8qCi0JICogSWYgbmV3IGVycm9ycyBvY2N1cmVkLCB3ZSBuZWVkIHRvIHNvcnQgdGhlbSBvdXQgYmVmb3JlIGRvaW5nIFR4LgorCSAqIElmIG5ldyBlcnJvcnMgb2NjdXJyZWQsIHdlIG5lZWQgdG8gc29ydCB0aGVtIG91dCBiZWZvcmUgZG9pbmcgVHguCiAJICogSW4gdGhhdCBjYXNlIHRoZSBJU1Igd2lsbCBiZSBiYWNrIGhlcmUgUlNOIGFueXdheS4KIAkgKi8KIAlpbnRyX3N0YXR1cyA9IGdldF9pbnRyX3N0YXR1cyhkZXYpOwpAQCAtMTg4Nyw3ICsxODg3LDcgQEAKIAkJLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuICovCiAJCWlmIChkZWJ1ZyA+IDEpCiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogcmhpbmVfcmVzdGFydF90eCgpICIKLQkJCSAgICAgICAiQW5vdGhlciBlcnJvciBvY2N1cmVkICU4Ljh4LlxuIiwKKwkJCSAgICAgICAiQW5vdGhlciBlcnJvciBvY2N1cnJlZCAlOC44eC5cbiIsCiAJCQkgICAgICAgZGV2LT5uYW1lLCBpbnRyX3N0YXR1cyk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aWEtdmVsb2NpdHkuYyBiL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCmluZGV4IDBkNmZlYzYuLjRmZTA1MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCisrKyBiL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jCkBAIC0yOTIsNyArMjkyLDcgQEAKIC8qIElQX2J5dGVfYWxpZ25bXSBpcyB1c2VkIGZvciBJUCBoZWFkZXIgRFdPUkQgYnl0ZSBhbGlnbmVkCiAgICAwOiBpbmRpY2F0ZSB0aGUgSVAgaGVhZGVyIHdvbid0IGJlIERXT1JEIGJ5dGUgYWxpZ25lZC4oRGVmYXVsdCkgLgogICAgMTogaW5kaWNhdGUgdGhlIElQIGhlYWRlciB3aWxsIGJlIERXT1JEIGJ5dGUgYWxpZ25lZC4KLSAgICAgIEluIHNvbWUgZW52aXJvbWVudCwgdGhlIElQIGhlYWRlciBzaG91bGQgYmUgRFdPUkQgYnl0ZSBhbGlnbmVkLAorICAgICAgSW4gc29tZSBlbnZpcm9ubWVudCwgdGhlIElQIGhlYWRlciBzaG91bGQgYmUgRFdPUkQgYnl0ZSBhbGlnbmVkLAogICAgICAgb3IgdGhlIHBhY2tldCB3aWxsIGJlIGRyb3BlZCB3aGVuIHdlIHJlY2VpdmUgaXQuIChlZzogSVBWUykKICovCiBWRUxPQ0lUWV9QQVJBTShJUF9ieXRlX2FsaWduLCAiRW5hYmxlIElQIGhlYWRlciBkd29yZCBhbGlnbmVkIik7CkBAIC0xOTk0LDcgKzE5OTQsNyBAQAogICoJQGRldjogbmV0d29yayBkZXZpY2UKICAqCiAgKglSZXBsYWNlIHRoZSBjdXJyZW50IHNrYiB0aGF0IGlzIHNjaGVkdWxlZCBmb3IgUnggcHJvY2Vzc2luZyBieSBhCi0gKglzaG9ydGVyLCBpbW1lZGlhdGx5IGFsbG9jYXRlZCBza2IsIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgc21hbGwKKyAqCXNob3J0ZXIsIGltbWVkaWF0ZWx5IGFsbG9jYXRlZCBza2IsIGlmIHRoZSByZWNlaXZlZCBwYWNrZXQgaXMgc21hbGwKICAqCWVub3VnaC4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgbmVnYXRpdmUgdmFsdWUgaWYgdGhlIHJlY2VpdmVkCiAgKglwYWNrZXQgaXMgdG9vIGJpZyBvciBpZiBtZW1vcnkgaXMgZXhoYXVzdGVkLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZHJ2LmMgYi9kcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZHJ2LmMKaW5kZXggY2MxNGI0YS4uMGQ0N2MzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdm14bmV0My92bXhuZXQzX2Rydi5jCisrKyBiL2RyaXZlcnMvbmV0L3ZteG5ldDMvdm14bmV0M19kcnYuYwpAQCAtODkyLDcgKzg5Miw3IEBACiAgKiBUcmFuc21pdHMgYSBwa3QgdGhydSBhIGdpdmVuIHRxCiAgKiBSZXR1cm5zOgogICogICAgTkVUREVWX1RYX09LOiAgICAgIGRlc2NyaXB0b3JzIGFyZSBzZXR1cCBzdWNjZXNzZnVsbHkKLSAqICAgIE5FVERFVl9UWF9PSzogICAgICBlcnJvciBvY2N1cmVkLCB0aGUgcGt0IGlzIGRyb3BwZWQKKyAqICAgIE5FVERFVl9UWF9PSzogICAgICBlcnJvciBvY2N1cnJlZCwgdGhlIHBrdCBpcyBkcm9wcGVkCiAgKiAgICBORVRERVZfVFhfQlVTWTogICAgdHggcmluZyBpcyBmdWxsLCBxdWV1ZSBpcyBzdG9wcGVkCiAgKgogICogU2lkZS1lZmZlY3RzOgpAQCAtMjY4NSw3ICsyNjg1LDcgQEAKICAqIEVuYWJsZSBNU0l4IHZlY3RvcnMuCiAgKiBSZXR1cm5zIDoKICAqCTAgb24gc3VjY2Vzc2Z1bCBlbmFibGluZyBvZiByZXF1aXJlZCB2ZWN0b3JzLAotICoJVk1YTkVUM19MSU5VWF9NSU5fTVNJWF9WRUNUIHdoZW4gb25seSBtaW51bXVtIG51bWJlciBvZiB2ZWN0b3JzIHJlcXVpcmVkCisgKglWTVhORVQzX0xJTlVYX01JTl9NU0lYX1ZFQ1Qgd2hlbiBvbmx5IG1pbmltdW0gbnVtYmVyIG9mIHZlY3RvcnMgcmVxdWlyZWQKICAqCSBjb3VsZCBiZSBlbmFibGVkLgogICoJbnVtYmVyIG9mIHZlY3RvcnMgd2hpY2ggY2FuIGJlIGVuYWJsZWQgb3RoZXJ3aXNlICh0aGlzIG51bWJlciBpcyBzbWFsbGVyCiAgKgkgdGhhbiBWTVhORVQzX0xJTlVYX01JTl9NU0lYX1ZFQ1QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtY29uZmlnLmMgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtY29uZmlnLmMKaW5kZXggZTc0ZTRiNC4uNDAxYmViZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLWNvbmZpZy5jCisrKyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1jb25maWcuYwpAQCAtMTg3LDcgKzE4Nyw3IEBACiAJCQkJCSAgIFZYR0VfSFdfREVGX0RFVklDRV9QT0xMX01JTExJUyk7CiAKIAkvKiBUaGUgX192eGdlX2h3X2RldmljZV9yZWdpc3Rlcl9wb2xsIGNhbiB1ZGVsYXkgZm9yIGEgc2lnbmlmaWNhbnQKLQkgKiBhbW91bnQgb2YgdGltZSwgYmxvY2tpbmcgb3RoZXIgcHJvY2Nlc3MgZnJvbSB0aGUgQ1BVLiAgSWYgaXQgZGVsYXlzCisJICogYW1vdW50IG9mIHRpbWUsIGJsb2NraW5nIG90aGVyIHByb2Nlc3MgZnJvbSB0aGUgQ1BVLiAgSWYgaXQgZGVsYXlzCiAJICogZm9yIH41c2VjcywgYSBOTUkgZXJyb3IgY2FuIG9jY3VyLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gZ2l2ZSB1cAogCSAqIHRoZSBwcm9jZXNzb3IgdmlhIG1zbGVlcCwgYnV0IHRoaXMgaXMgbm90IGFsbG93ZWQgaXMgdW5kZXIgbG9jay4KIAkgKiBTbywgb25seSBhbGxvdyBpdCB0byBzbGVlcCBmb3IgfjRzZWNzIGlmIG9wZW4uICBPdGhlcndpc2UsIGRlbGF5IGZvcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLW1haW4uYyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1tYWluLmMKaW5kZXggMzk1NDIzYS4uYWZmNjhjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLW1haW4uYworKysgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtbWFpbi5jCkBAIC0yMjgyLDcgKzIyODIsNyBAQAogCQlWWEdFX0hXX1ZQQVRIX01TSVhfQUNUSVZFKSArIFZYR0VfQUxBUk1fTVNJWF9JRDsKIAogCWZvciAoaSA9IDA7IGkgPCB2ZGV2LT5ub19vZl92cGF0aDsgaSsrKSB7Ci0JCS8qIFJlZHVjZSB0aGUgY2hhbmNlIG9mIGxvb3NpbmcgYWxhcm0gaW50ZXJydXB0cyBieSBtYXNraW5nCisJCS8qIFJlZHVjZSB0aGUgY2hhbmNlIG9mIGxvc2luZyBhbGFybSBpbnRlcnJ1cHRzIGJ5IG1hc2tpbmcKIAkJICogdGhlIHZlY3Rvci4gQSBwZW5kaW5nIGJpdCB3aWxsIGJlIHNldCBpZiBhbiBhbGFybSBpcwogCQkgKiBnZW5lcmF0ZWQgYW5kIG9uIHVubWFzayB0aGUgaW50ZXJydXB0IHdpbGwgYmUgZmlyZWQuCiAJCSAqLwpAQCAtMjc4OCw3ICsyNzg4LDcgQEAKIAl9CiAKIAkvKiBFbmFibGUgdnBhdGggdG8gc25pZmYgYWxsIHVuaWNhc3QvbXVsdGljYXN0IHRyYWZmaWMgdGhhdCBub3QKLQkgKiBhZGRyZXNzZWQgdG8gdGhlbS4gV2UgYWxsb3cgcHJvbWlzY291cyBtb2RlIGZvciBQRiBvbmx5CisJICogYWRkcmVzc2VkIHRvIHRoZW0uIFdlIGFsbG93IHByb21pc2N1b3VzIG1vZGUgZm9yIFBGIG9ubHkKIAkgKi8KIAogCXZhbDY0ID0gMDsKQEAgLTI4OTAsNyArMjg5MCw3IEBACiAJcmV0dXJuIHJldDsKIH0KIAotLyogTG9vcCB0aHJvdWdodCB0aGUgbWFjIGFkZHJlc3MgbGlzdCBhbmQgZGVsZXRlIGFsbCB0aGUgZW50cmllcyAqLworLyogTG9vcCB0aHJvdWdoIHRoZSBtYWMgYWRkcmVzcyBsaXN0IGFuZCBkZWxldGUgYWxsIHRoZSBlbnRyaWVzICovCiBzdGF0aWMgdm9pZCB2eGdlX2ZyZWVfbWFjX2FkZF9saXN0KHN0cnVjdCB2eGdlX3ZwYXRoICp2cGF0aCkKIHsKIApAQCAtMjk1Nyw3ICsyOTU3LDcgQEAKIAkJCQkJdmFsNjQpOwogCQl9CiAKLQkJLyogUmVtb3ZlIHRoZSBmdW5jdGlvbiAwIGZyb20gcHJvbWlzY291cyBtb2RlICovCisJCS8qIFJlbW92ZSB0aGUgZnVuY3Rpb24gMCBmcm9tIHByb21pc2N1b3VzIG1vZGUgKi8KIAkJdnhnZV9od19tZ210X3JlZ193cml0ZSh2ZGV2LT5kZXZoLAogCQkJdnhnZV9od19tZ210X3JlZ190eXBlX21ycGNpbSwKIAkJCTAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5jIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuYwppbmRleCA4Njc0ZjMzLi4yNjM4YjhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5jCisrKyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmMKQEAgLTExMTEsNyArMTExMSw3IEBACiAgKiB2eGdlX2h3X2NoYW5uZWxfZHRyX2NvdW50CiAgKiBAY2hhbm5lbDogQ2hhbm5lbCBoYW5kbGUuIE9idGFpbmVkIHZpYSB2eGdlX2h3X2NoYW5uZWxfb3BlbigpLgogICoKLSAqIFJldHJlaXZlIG51bWJlciBvZiBEVFJzIGF2YWlsYWJsZS4gVGhpcyBmdW5jdGlvbiBjYW4gbm90IGJlIGNhbGxlZAorICogUmV0cmlldmUgbnVtYmVyIG9mIERUUnMgYXZhaWxhYmxlLiBUaGlzIGZ1bmN0aW9uIGNhbiBub3QgYmUgY2FsbGVkCiAgKiBmcm9tIGRhdGEgcGF0aC4gcmluZ19pbml0aWFsX3JlcGxlbmlzaGkoKSBpcyB0aGUgb25seSB1c2VyLgogICovCiBpbnQgdnhnZV9od19jaGFubmVsX2R0cl9jb3VudChzdHJ1Y3QgX192eGdlX2h3X2NoYW5uZWwgKmNoYW5uZWwpCkBAIC0yMDYwLDcgKzIwNjAsNyBAQAogCiAJdnBhdGggPSB2cC0+dnBhdGg7CiAKLQkvKiBFbmFibGUgcHJvbWlzY291cyBtb2RlIGZvciBmdW5jdGlvbiAwIG9ubHkgKi8KKwkvKiBFbmFibGUgcHJvbWlzY3VvdXMgbW9kZSBmb3IgZnVuY3Rpb24gMCBvbmx5ICovCiAJaWYgKCEodnBhdGgtPmhsZGV2LT5hY2Nlc3NfcmlnaHRzICYKIAkJVlhHRV9IV19ERVZJQ0VfQUNDRVNTX1JJR0hUX01SUENJTSkpCiAJCXJldHVybiBWWEdFX0hXX09LOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuaCBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmgKaW5kZXggOWQ5ZGZkYS4uNmMyZmMwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuaAorKysgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5oCkBAIC02ODEsNyArNjgxLDcgQEAKICAqIEByeF9yZWRfZGlzY2FyZDogQ291bnQgb2YgcmVjZWl2ZWQgZnJhbWVzIHRoYXQgYXJlIGRpc2NhcmRlZCBiZWNhdXNlIG9mIFJFRAogICogICAgICAgICAgICAoUmFuZG9tIEVhcmx5IERpc2NhcmQpLgogICogQHJ4X3hnbWlpX2N0cmxfZXJyX2NudDogTWFpbnRhaW5zIGEgY291bnQgb2YgdW5leHBlY3RlZCBvciBtaXNwbGFjZWQgY29udHJvbAotICogICAgICAgICAgICBjaGFyYWN0ZXJzIG9jY3VyaW5nIGJldHdlZW4gdGltZXMgb2Ygbm9ybWFsIGRhdGEgdHJhbnNtaXNzaW9uCisgKiAgICAgICAgICAgIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGJldHdlZW4gdGltZXMgb2Ygbm9ybWFsIGRhdGEgdHJhbnNtaXNzaW9uCiAgKiAgICAgICAgICAgIChpLmUuIG5vdCBpbmNsdWRlZCBpbiBSWF9YR01JSV9EQVRBX0VSUl9DTlQpLiBUaGlzIGNvdW50ZXIgaXMKICAqICAgICAgICAgICAgaW5jcmVtZW50ZWQgd2hlbiBlaXRoZXIgLQogICogICAgICAgICAgICAxKSBUaGUgUmVjb25jaWxpYXRpb24gU3VibGF5ZXIgKFJTKSBpcyBleHBlY3Rpbmcgb25lIGNvbnRyb2wKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9jb3NhLmMgYi9kcml2ZXJzL25ldC93YW4vY29zYS5jCmluZGV4IDEwYmFmZDU5Li42ZmI2ZjhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vY29zYS5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9jb3NhLmMKQEAgLTMyOSw3ICszMjksNyBAQAogc3RhdGljIGludCByZWFkbWVtKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGNoYXIgX191c2VyICpkYXRhLCBpbnQgYWRkciwgaW50IGxlbik7CiBzdGF0aWMgaW50IGNvc2FfcmVzZXRfYW5kX3JlYWRfaWQoc3RydWN0IGNvc2FfZGF0YSAqY29zYSwgY2hhciAqaWQpOwogCi0vKiBBdXhpbGxpYXJ5IGZ1bmN0aW9ucyAqLworLyogQXV4aWxpYXJ5IGZ1bmN0aW9ucyAqLwogc3RhdGljIGludCBnZXRfd2FpdF9kYXRhKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EpOwogc3RhdGljIGludCBwdXRfd2FpdF9kYXRhKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGludCBkYXRhKTsKIHN0YXRpYyBpbnQgcHV0aGV4bnVtYmVyKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGludCBudW1iZXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2RzY2M0LmMgYi9kcml2ZXJzL25ldC93YW4vZHNjYzQuYwppbmRleCA0NTc4ZTViLi5hY2I5ZWE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vZHNjYzQuYworKysgYi9kcml2ZXJzL25ldC93YW4vZHNjYzQuYwpAQCAtNTYsNyArNTYsNyBAQAogICogSVYuIE5vdGVzCiAgKiBUaGUgY3VycmVudCBlcnJvciAoWERVLCBSRk8pIHJlY292ZXJ5IGNvZGUgaXMgdW50ZXN0ZWQuCiAgKiBTbyBmYXIsIFJETyB0YWtlcyBoaXMgUlggY2hhbm5lbCBkb3duIGFuZCB0aGUgcmlnaHQgc2VxdWVuY2UgdG8gZW5hYmxlIGl0Ci0gKiBhZ2FpbiBpcyBzdGlsbCBhIG1pc3RlcnkuIElmIFJETyBoYXBwZW5zLCBwbGFuIGEgcmVib290LiBNb3JlIGRldGFpbHMKKyAqIGFnYWluIGlzIHN0aWxsIGEgbXlzdGVyeS4gSWYgUkRPIGhhcHBlbnMsIHBsYW4gYSByZWJvb3QuIE1vcmUgZGV0YWlscwogICogaW4gdGhlIGNvZGUgKE5COiBhcyB0aGlzIGhhcHBlbnMsIFRYIHN0aWxsIHdvcmtzKS4KICAqIERvbid0IG1lc3MgdGhlIGNhYmxlcyBkdXJpbmcgb3BlcmF0aW9uLCBlc3BlY2lhbGx5IG9uIERURSBwb3J0cy4gSSBkb24ndAogICogc3VnZ2VzdCBpdCBmb3IgRENFIGVpdGhlciBidXQgYXQgbGVhc3Qgb25lIGNhbiBnZXQgc29tZSBtZXNzYWdlcyBpbnN0ZWFkCkBAIC0xMDY1LDcgKzEwNjUsNyBAQAogCiAJLyoKIAkgKiBEdWUgdG8gdmFyaW91cyBidWdzLCB0aGVyZSBpcyBubyB3YXkgdG8gcmVsaWFibHkgcmVzZXQgYQotCSAqIHNwZWNpZmljIHBvcnQgKG1hbnVmYWN0dXJlcidzIGRlcGVuZGFudCBzcGVjaWFsIFBDSSAjUlNUIHdpcmluZworCSAqIHNwZWNpZmljIHBvcnQgKG1hbnVmYWN0dXJlcidzIGRlcGVuZGVudCBzcGVjaWFsIFBDSSAjUlNUIHdpcmluZwogCSAqIGFwYXJ0OiBpdCBhZmZlY3RzIGFsbCBwb3J0cykuIFRodXMgdGhlIGRldmljZSBnb2VzIGluIHRoZSBiZXN0CiAJICogc2lsZW50IG1vZGUgcG9zc2libGUgYXQgZHNjYzRfY2xvc2UoKSB0aW1lIGFuZCBzaW1wbHkgY2xhaW1zIHRvCiAJICogYmUgdXAgaWYgaXQncyBvcGVuZWQgYWdhaW4uIEl0IHN0aWxsIGlzbid0IHBvc3NpYmxlIHRvIGNoYW5nZQpAQCAtMTIzMCw5ICsxMjMwLDkgQEAKICAqICAgc2NhbGluZy4gT2YgY291cnNlIHNvbWUgcm91bmRpbmcgbWF5IHRha2UgcGxhY2UuCiAgKiAtIG5vIGhpZ2ggc3BlZWQgbW9kZSAoNDBNYi9zKS4gTWF5IGJlIHRyaXZpYWwgdG8gZG8gYnV0IEkgZG9uJ3QgaGF2ZSBhbgogICogICBhcHByb3ByaWF0ZSBleHRlcm5hbCBjbG9ja2luZyBkZXZpY2UgZm9yIHRlc3RpbmcuCi0gKiAtIG5vIHRpbWUtc2xvdC9jbG9jayBtb2RlIDU6IHNoYW1lbGVzcyBsYXp5bmVzcy4KKyAqIC0gbm8gdGltZS1zbG90L2Nsb2NrIG1vZGUgNTogc2hhbWVsZXNzIGxhemluZXNzLgogICoKLSAqIFRoZSBjbG9jayBzaWduYWxzIHdpcmluZyBjYW4gYmUgKGlzID8pIG1hbnVmYWN0dXJlciBkZXBlbmRhbnQuIEdvb2QgbHVjay4KKyAqIFRoZSBjbG9jayBzaWduYWxzIHdpcmluZyBjYW4gYmUgKGlzID8pIG1hbnVmYWN0dXJlciBkZXBlbmRlbnQuIEdvb2QgbHVjay4KICAqCiAgKiBCSUcgRkFUIFdBUk5JTkc6IGlmIHRoZSBkZXZpY2UgaXNuJ3QgcHJvdmlkZWQgZW5vdWdoIGNsb2NraW5nIHNpZ25hbCwgaXQKICAqIHdvbid0IHBhc3MgdGhlIGluaXQgc2VxdWVuY2UuIEZvciBleGFtcGxlLCBzdHJhaWdodCBiYWNrLXRvLWJhY2sgRFRFIHdpdGhvdXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9ob3N0ZXNzX3N2MTEuYyBiL2RyaXZlcnMvbmV0L3dhbi9ob3N0ZXNzX3N2MTEuYwppbmRleCA0OGVkYzVmLi5lODE3NTgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vaG9zdGVzc19zdjExLmMKKysrIGIvZHJpdmVycy9uZXQvd2FuL2hvc3Rlc3Nfc3YxMS5jCkBAIC0xNSw3ICsxNSw3IEBACiAgKglUaGUgaGFyZHdhcmUgZG9lcyB0aGUgYnVzIGhhbmRsaW5nIHRvIGF2b2lkIHRoZSBuZWVkIGZvciBkZWxheXMgYmV0d2VlbgogICoJdG91Y2hpbmcgY29udHJvbCByZWdpc3RlcnMuCiAgKgotICoJUG9ydCBCIGlzbnQgd2lyZWQgKHdoeSAtIGJlYXRzIG1lKQorICoJUG9ydCBCIGlzbid0IHdpcmVkICh3aHkgLSBiZWF0cyBtZSkKICAqCiAgKglHZW5lcmljIEhETEMgcG9ydCBDb3B5cmlnaHQgKEMpIDIwMDggS3J6eXN6dG9mIEhhbGFzYSA8a2hjQHBtLndhdy5wbD4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2l4cDR4eF9oc3MuYyBiL2RyaXZlcnMvbmV0L3dhbi9peHA0eHhfaHNzLmMKaW5kZXggNmM1NzFlMS4uZjFlMTY0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2l4cDR4eF9oc3MuYworKysgYi9kcml2ZXJzL25ldC93YW4vaXhwNHh4X2hzcy5jCkBAIC0xNzgsNyArMTc4LDcgQEAKICAqCiAgKiBUaGUgcmVzdWx0aW5nIGF2ZXJhZ2UgY2xvY2sgZnJlcXVlbmN5IChhc3N1bWluZyAzMy4zMzMgTUh6IG9zY2lsbGF0b3IpIGlzOgogICogZnJlcSA9IDY2LjY2NiBNSHogLyAoQSArIChCICsgMSkgLyAoQyArIDEpKQotICogbWludW11bSBmcmVxID0gNjYuNjY2IE1IeiAvIChBICsgMSkKKyAqIG1pbmltdW0gZnJlcSA9IDY2LjY2NiBNSHogLyAoQSArIDEpCiAgKiBtYXhpbXVtIGZyZXEgPSA2Ni42NjYgTUh6IC8gQQogICoKICAqIEV4YW1wbGU6IEEgPSAyLCBCID0gMiwgQyA9IDcsIENMT0NLX0NSIHJlZ2lzdGVyID0gMiA8PCAyMiB8IDIgPDwgMTIgfCA3CkBAIC0yMzAsNyArMjMwLDcgQEAKICNkZWZpbmUgUEtUX1BJUEVfTU9ERV9XUklURQkJMHg1NwogCiAvKiBIRExDIHBhY2tldCBzdGF0dXMgdmFsdWVzIC0gZGVzYy0+c3RhdHVzICovCi0jZGVmaW5lIEVSUl9TSFVURE9XTgkJMSAvKiBzdG9wIG9yIHNodXRkb3duIG9jY3VycmFuY2UgKi8KKyNkZWZpbmUgRVJSX1NIVVRET1dOCQkxIC8qIHN0b3Agb3Igc2h1dGRvd24gb2NjdXJyZW5jZSAqLwogI2RlZmluZSBFUlJfSERMQ19BTElHTgkJMiAvKiBIRExDIGFsaWdubWVudCBlcnJvciAqLwogI2RlZmluZSBFUlJfSERMQ19GQ1MJCTMgLyogSERMQyBGcmFtZSBDaGVjayBTdW0gZXJyb3IgKi8KICNkZWZpbmUgRVJSX1JYRlJFRV9RX0VNUFRZCTQgLyogUlgtZnJlZSBxdWV1ZSBiZWNhbWUgZW1wdHkgd2hpbGUgcmVjZWl2aW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vbG1jL2xtY19tYWluLmMgYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY19tYWluLmMKaW5kZXggNzBmZWI4NC4uYjdmMjM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9sbWMvbG1jX21haW4uYwpAQCAtMjQsNyArMjQsNyBAQAogICAqCiAgICogTGludXggZHJpdmVyIG5vdGVzOgogICAqIExpbnV4IHVzZXMgdGhlIGRldmljZSBzdHJ1Y3QgbG1jX3ByaXZhdGUgdG8gcGFzcyBwcml2YXRlIGluZm9ybWF0aW9uCi0gICogYXJyb3VuZC4KKyAgKiBhcm91bmQuCiAgICoKICAgKiBUaGUgaW5pdGlhbGl6YXRpb24gcG9ydGlvbiBvZiB0aGlzIGRyaXZlciAodGhlIGxtY19yZXNldCgpIGFuZCB0aGUKICAgKiBsbWNfZGVjX3Jlc2V0KCkgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBsZWQgY29udHJvbHMgYW5kIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfdmFyLmggYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY192YXIuaAppbmRleCA2NWQwMTk3Li4wMWFkNDUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93YW4vbG1jL2xtY192YXIuaAorKysgYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY192YXIuaApAQCAtMTgwLDcgKzE4MCw3IEBACiAKIAogLyoKLSAqIENhcmVmdWxsLCBsb29rIGF0IHRoZSBkYXRhIHNoZWV0LCB0aGVyZSdzIG1vcmUgdG8gdGhpcworICogQ2FyZWZ1bCwgbG9vayBhdCB0aGUgZGF0YSBzaGVldCwgdGhlcmUncyBtb3JlIHRvIHRoaXMKICAqIHN0cnVjdHVyZSB0aGFuIG1lZXRzIHRoZSBleWUuICBJdCBzaG91bGQgcHJvYmFibHkgYmU6CiAgKgogICogc3RydWN0IHR1bGlwX2Rlc2NfdCB7CkBAIC0zODAsNyArMzgwLDcgQEAKIC8qIENTUjYgc2V0dGluZ3MgKi8KICNkZWZpbmUgT1BFUkFUSU9OX01PREUgIDB4MDAwMDAyMDAgLyogRnVsbCBEdXBsZXggICAgICAqLwogI2RlZmluZSBQUk9NSVNDX01PREUgICAgMHgwMDAwMDA0MCAvKiBQcm9taXNjdW91cyBNb2RlICovCi0jZGVmaW5lIFJFQ0lFVkVfQUxMICAgICAweDQwMDAwMDAwIC8qIFJlY2lldmUgQWxsICAgICAgKi8KKyNkZWZpbmUgUkVDSUVWRV9BTEwgICAgIDB4NDAwMDAwMDAgLyogUmVjZWl2ZSBBbGwgICAgICAqLwogI2RlZmluZSBQQVNTX0JBRF9GUkFNRVMgMHgwMDAwMDAwOCAvKiBQYXNzIEJhZCBGcmFtZXMgICovCiAKIC8qIERlYyBjb250cm9sIHJlZ2lzdGVycyAgQ1NSNiBhcyB3ZWxsICovCkBAIC0zOTgsNyArMzk4LDcgQEAKICNkZWZpbmUgVFVMSVBfQ01EX1JFQ0VJVkVBTEwgICAgMHg0MDAwMDAwMEwgLyogKFJXKSAgUmVjZWl2ZWwgYWxsIGZyYW1lcz8gKi8KICNkZWZpbmUgVFVMSVBfQ01EX01VU1RCRU9ORSAgICAgMHgwMjAwMDAwMEwgLyogKFJXKSAgTXVzdCBCZSBPbmUgKDIxMTQwKSAqLwogI2RlZmluZSBUVUxJUF9DTURfVFhUSFJTSExEQ1RMICAweDAwNDAwMDAwTCAvKiAoUlcpICBUcmFuc21pdCBUaHJlc2hvbGQgTW9kZSAoMjExNDApICovCi0jZGVmaW5lIFRVTElQX0NNRF9TVE9SRUZXRCAgICAgIDB4MDAyMDAwMDBMIC8qIChSVykgIFN0b3JlIGFuZCBGb3dhcmQgKDIxMTQwKSAqLworI2RlZmluZSBUVUxJUF9DTURfU1RPUkVGV0QgICAgICAweDAwMjAwMDAwTCAvKiAoUlcpICBTdG9yZSBhbmQgRm9yd2FyZCAoMjExNDApICovCiAjZGVmaW5lIFRVTElQX0NNRF9OT0hFQVJUQkVBVCAgIDB4MDAwODAwMDBMIC8qIChSVykgIE5vIEhlYXJ0YmVhdCAoMjExNDApICovCiAjZGVmaW5lIFRVTElQX0NNRF9QT1JUU0VMRUNUICAgIDB4MDAwNDAwMDBMIC8qIChSVykgIFBvc3QgU2VsZWN0ICgxMDBNYikgKDIxMTQwKSAqLwogI2RlZmluZSBUVUxJUF9DTURfRlVMTERVUExFWCAgICAweDAwMDAwMjAwTCAvKiAoUlcpICBGdWxsIER1cGxleCBNb2RlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vejg1MjMwLmMgYi9kcml2ZXJzL25ldC93YW4vejg1MjMwLmMKaW5kZXggOTM5NTY4Ni4uMDgwNjIzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL3o4NTIzMC5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi96ODUyMzAuYwpAQCAtNTQyLDcgKzU0Miw3IEBACiAJCXo4NTMwX3R4KGNoYW4pOwogCQlyZXR1cm47CiAJfQotCS8qIFRoaXMgc2hvdWxkbnQgb2NjdXIgaW4gRE1BIG1vZGUgKi8KKwkvKiBUaGlzIHNob3VsZG4ndCBvY2N1ciBpbiBETUEgbW9kZSAqLwogCXByaW50ayhLRVJOX0VSUiAiRE1BIHR4IC0gYm9ndXMgZXZlbnQhXG4iKTsKIAl6ODUzMF90eChjaGFuKTsKIH0KQEAgLTEyMTksNyArMTIxOSw3IEBACiAgKglAaW86IHRoZSBwb3J0IHZhbHVlIGluIHF1ZXN0aW9uCiAgKgogICoJRGVzY3JpYmUgYSBaODUzMCBpbiBhIHN0YW5kYXJkIGZvcm1hdC4gV2UgbXVzdCBwYXNzIHRoZSBJL08gYXMKLSAqCXRoZSBwb3J0IG9mZnNldCBpc250IHByZWRpY3RhYmxlLiBUaGUgbWFpbiByZWFzb24gZm9yIHRoaXMgZnVuY3Rpb24KKyAqCXRoZSBwb3J0IG9mZnNldCBpc24ndCBwcmVkaWN0YWJsZS4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1bmN0aW9uCiAgKglpcyB0byB0cnkgYW5kIGdldCBhIGNvbW1vbiBmb3JtYXQgb2YgcmVwb3J0LgogICovCiAKQEAgLTE1ODgsNyArMTU4OCw3IEBACiAJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJCQogCQkvKgotCQkgKglDb21wbGV0ZSB0aGlzIERNQS4gTmVjY2Vzc2FyeSB0byBmaW5kIHRoZSBsZW5ndGgKKwkJICoJQ29tcGxldGUgdGhpcyBETUEuIE5lY2Vzc2FyeSB0byBmaW5kIHRoZSBsZW5ndGgKIAkJICovCQkKIAkJIAogCQlmbGFncz1jbGFpbV9kbWFfbG9jaygpOwpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAKIAkJICoJZmlmbyBsZW5ndGggZm9yIHRoaXMuIFRodXMgd2Ugd2FudCB0byBmbGlwIHRvIHRoZSBuZXcKIAkJICoJYnVmZmVyIGFuZCB0aGVuIG1lc3MgYXJvdW5kIGNvcHlpbmcgYW5kIGFsbG9jYXRpbmcKIAkJICoJdGhpbmdzLiBGb3IgdGhlIGN1cnJlbnQgY2FzZSBpdCBkb2Vzbid0IG1hdHRlciBidXQKLQkJICoJaWYgeW91IGJ1aWxkIGEgc3lzdGVtIHdoZXJlIHRoZSBzeW5jIGlycSBpc250IGJsb2NrZWQKKwkJICoJaWYgeW91IGJ1aWxkIGEgc3lzdGVtIHdoZXJlIHRoZSBzeW5jIGlycSBpc24ndCBibG9ja2VkCiAJCSAqCWJ5IHRoZSBrZXJuZWwgSVJRIGRpc2FibGUgdGhlbiB5b3UgbmVlZCBvbmx5IGJsb2NrIHRoZQogCQkgKglzeW5jIElSUSBmb3IgdGhlIFJUX0xPQ0sgYXJlYS4KIAkJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9jb250cm9sLmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vY29udHJvbC5jCmluZGV4IDEyYjg0ZWQuLjcyN2Q3MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9jb250cm9sLmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2NvbnRyb2wuYwpAQCAtMzc4LDcgKzM3OCw3IEBACiAgKiB0aGUgZGV2aWNlJ3Mgc3RhdGUgYXMgc29tZXRpbWVzIHdlIG5lZWQgdG8gZG8gYSBsaW5rLXJlbmV3ICh0aGUgQlMKICAqIHdhbnRzIHVzIHRvIHJlbmV3IGEgREhDUCBsZWFzZSwgZm9yIGV4YW1wbGUpLgogICoKLSAqIEluIGZhY3QsIGRvYyBzYXlzIHRoYXQgZXZlcnl0aW1lIHdlIGdldCBhIGxpbmstdXAsIHdlIHNob3VsZCBkbyBhCisgKiBJbiBmYWN0LCBkb2Mgc2F5cyB0aGF0IGV2ZXJ5IHRpbWUgd2UgZ2V0IGEgbGluay11cCwgd2Ugc2hvdWxkIGRvIGEKICAqIERIQ1AgbmVnb3RpYXRpb24uLi4KICAqLwogc3RhdGljCkBAIC02NzUsNyArNjc1LDcgQEAKICAqICAtIHRoZSBhY2sgbWVzc2FnZSB3YXNuJ3QgZm9ybWF0dGVkIGNvcnJlY3RseQogICoKICAqIFRoZSByZXR1cm5lZCBza2IgaGFzIGJlZW4gYWxsb2NhdGVkIHdpdGggd2ltYXhfbXNnX3RvX3VzZXJfYWxsb2MoKSwKLSAqIGl0IGNvbnRhaW5zIHRoZSByZXBvbnNlIGluIGEgbmV0bGluayBhdHRyaWJ1dGUgYW5kIGlzIHJlYWR5IHRvIGJlCisgKiBpdCBjb250YWlucyB0aGUgcmVzcG9uc2UgaW4gYSBuZXRsaW5rIGF0dHJpYnV0ZSBhbmQgaXMgcmVhZHkgdG8gYmUKICAqIHBhc3NlZCB1cCB0byB1c2VyIHNwYWNlIHdpdGggd2ltYXhfbXNnX3RvX3VzZXJfc2VuZCgpLiBUbyBhY2Nlc3MKICAqIHRoZSBwYXlsb2FkIGFuZCBpdHMgbGVuZ3RoLCB1c2Ugd2ltYXhfbXNnX3tkYXRhLGxlbn0oKSBvbiB0aGUgc2tiLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9kcml2ZXIuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9kcml2ZXIuYwppbmRleCA2NWJjMzM0Li40N2NhZTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZHJpdmVyLmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2RyaXZlci5jCkBAIC02NTQsNyArNjU0LDcgQEAKIAlpZiAocmVzdWx0ID09IC1FVUNMRUFOKSB7CiAJCS8qCiAJCSAqIFdlIGNvbWUgaGVyZSBiZWNhdXNlIHRoZSByZXNldCBkdXJpbmcgb3BlcmF0aW9uYWwgbW9kZQotCQkgKiB3YXNuJ3Qgc3VjY2Vzc3VsbHkgZG9uZSBhbmQgbmVlZCB0byBwcm9jZWVkIHRvIGEgYnVzCisJCSAqIHdhc24ndCBzdWNjZXNzZnVsbHkgZG9uZSBhbmQgbmVlZCB0byBwcm9jZWVkIHRvIGEgYnVzCiAJCSAqIHJlc2V0LiBGb3IgdGhlIGRldl9yZXNldF9oYW5kbGUoKSB0byBiZSBhYmxlIHRvIGhhbmRsZQogCQkgKiB0aGUgcmVzZXQgZXZlbnQgbGF0ZXIgcHJvcGVybHksIHdlIHJlc3RvcmUgYm9vdF9tb2RlIGJhY2sKIAkJICogdG8gdGhlIHN0YXRlIGJlZm9yZSBwcmV2aW91cyByZXNldC4gaWU6IGp1c3QgbGlrZSB3ZSBhcmUKQEAgLTc1NSw3ICs3NTUsNyBAQAogICogQWxsb2MgdGhlIGNvbW1hbmQgYW5kIGFjayBidWZmZXJzIGZvciBib290IG1vZGUKICAqCiAgKiBHZXQgdGhlIGJ1ZmZlcnMgbmVlZGVkIHRvIGRlYWwgd2l0aCBib290IG1vZGUgbWVzc2FnZXMuICBUaGVzZQotICogYnVmZmVycyBuZWVkIHRvIGJlIGFsbG9jYXRlZCBiZWZvcmUgdGhlIHNkaW8gcmVjaWV2ZSBpcnEgaXMgc2V0dXAuCisgKiBidWZmZXJzIG5lZWQgdG8gYmUgYWxsb2NhdGVkIGJlZm9yZSB0aGUgc2RpbyByZWNlaXZlIGlycSBpcyBzZXR1cC4KICAqLwogc3RhdGljCiBpbnQgaTI0MDBtX2JtX2J1Zl9hbGxvYyhzdHJ1Y3QgaTI0MDBtICppMjQwMG0pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZncuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9mdy5jCmluZGV4IDhiNTVhNWIuLjg1ZGFkZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9mdy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9mdy5jCkBAIC01NCw3ICs1NCw3IEBACiAgKiBlbmRwb2ludCBhbmQgcmVhZCBmcm9tIGl0IGluIHRoZSBub3RpZmljYXRpb24gZW5kcG9pbnQuIEluIFNESU8gd2UKICAqIHRhbGsgdG8gaXQgdmlhIHRoZSB3cml0ZSBhZGRyZXNzIGFuZCByZWFkIGZyb20gdGhlIHJlYWQgYWRkcmVzcy4KICAqCi0gKiBVcG9uIGVudHJhbmNlIHRvIGJvb3QgbW9kZSwgdGhlIGRldmljZSBzZW5kcyAocHJlY2VlZGVkIHdpdGggYSBmZXcKKyAqIFVwb24gZW50cmFuY2UgdG8gYm9vdCBtb2RlLCB0aGUgZGV2aWNlIHNlbmRzIChwcmVjZWRlZCB3aXRoIGEgZmV3CiAgKiB6ZXJvIGxlbmd0aCBwYWNrZXRzIChaTFBzKSBvbiB0aGUgbm90aWZpY2F0aW9uIGVuZHBvaW50IGluIFVTQikgYQogICogcmVib290IGJhcmtlciAoNCBsZTMyIHdvcmRzIHdpdGggdGhlIHNhbWUgdmFsdWUpLiBXZSBhY2sgaXQgYnkKICAqIHNlbmRpbmcgdGhlIHNhbWUgYmFya2VyIHRvIHRoZSBkZXZpY2UuIFRoZSBkZXZpY2UgYWNrcyB3aXRoIGEKQEAgLTE1ODksNyArMTU4OSw3IEBACiAJCWkyNDAwbS0+ZndfbmFtZSA9IGZ3X25hbWU7CiAJCXJldCA9IGkyNDAwbV9md19ib290c3RyYXAoaTI0MDBtLCBmdywgZmxhZ3MpOwogCQlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKLQkJaWYgKHJldCA+PSAwKQkvKiBmaXJtd2FyZSBsb2FkZWQgc3VjY2VzZnVsbHkgKi8KKwkJaWYgKHJldCA+PSAwKQkvKiBmaXJtd2FyZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5ICovCiAJCQlicmVhazsKIAkJaTI0MDBtLT5md19uYW1lID0gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLXVzYi5oIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS11c2IuaAppbmRleCBlYjgwMjQzLi42NjUwZmRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLXVzYi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9pMjQwMG0tdXNiLmgKQEAgLTEwNSwxNCArMTA1LDE0IEBACiAgKgogICogQGVkYzogcG9pbnRlciB0byBlcnJvciBkZW5zaXR5IGNvdW50ZXIuCiAgKiBAbWF4X2VycjogbWF4aW11bSBudW1iZXIgb2YgZXJyb3JzIHdlIGNhbiBhY2NlcHQgb3ZlciB0aGUgdGltZWZyYW1lCi0gKiBAdGltZWZyYW1lOiBsZW5naHQgb2YgdGhlIHRpbWVmcmFtZSAoaW4gamlmZmllcykuCisgKiBAdGltZWZyYW1lOiBsZW5ndGggb2YgdGhlIHRpbWVmcmFtZSAoaW4gamlmZmllcykuCiAgKgogICogUmV0dXJuczogITAgMSBpZiBtYXhpbXVtIGFjY2VwdGFibGUgZXJyb3JzIHBlciB0aW1lZnJhbWUgaGFzIGJlZW4KICAqICAgICBleGNlZWRlZC4gMCBvdGhlcndpc2UuCiAgKgogICogVGhpcyBpcyB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgb2YgYWNjZXB0YWJsZSBlcnJvcnMgcGVyIHRpbWUKICAqIHBlcmlvZCBoYXMgYmVlbiBleGNlZWRlZC4gSXQgaXMgbm90IGFjY3VyYXRlIGFzIHRoZXJlIGFyZSBjYXNlcyBpbiB3aGljaAotICogdGhpcyBzY2hlbWUgd2lsbCBub3Qgd29yaywgZm9yIGV4YW1wbGUgaWYgdGhlcmUgYXJlIHBlcmlvZGljIG9jY3VyZW5jZXMKKyAqIHRoaXMgc2NoZW1lIHdpbGwgbm90IHdvcmssIGZvciBleGFtcGxlIGlmIHRoZXJlIGFyZSBwZXJpb2RpYyBvY2N1cnJlbmNlcwogICogb2YgZXJyb3JzIHRoYXQgc3RyYWRkbGUgdXBkYXRlcyB0byB0aGUgc3RhcnQgdGltZS4gVGhpcyBzY2hlbWUgaXMKICAqIHN1ZmZpY2llbnQgZm9yIG91ciB1c2FnZS4KICAqCkBAIC0yMDQsNyArMjA0LDcgQEAKICAqICAgICB1c2JfYXV0b3BtX2dldC9wdXRfaW50ZXJmYWNlKCkgYmFycmllcnMgd2hlbiBleGVjdXRpbmcKICAqICAgICBjb21tYW5kcy4gU2VlIGRvYyBpbiBpMjQwMG11X3N1c3BlbmQoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAqCi0gKiBAcnhfc2l6ZV9hdXRvX3NocmluazogaWYgdHJ1ZSwgdGhlIHJ4X3NpemUgaXMgc2hyaW5rZWQKKyAqIEByeF9zaXplX2F1dG9fc2hyaW5rOiBpZiB0cnVlLCB0aGUgcnhfc2l6ZSBpcyBzaHJ1bmsKICAqICAgICBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZSBhdmVyYWdlIHNpemUgb2YgdGhlIHJlY2VpdmVkCiAgKiAgICAgdHJhbnNhY3Rpb25zLiBUaGlzIGFsbG93cyB0aGUgcmVjZWl2ZSBjb2RlIHRvIGFsbG9jYXRlIHNtYWxsZXIKICAqICAgICBjaHVua3Mgb2YgbWVtb3J5IGFuZCB0aHVzIHJlZHVjZSBwcmVzc3VyZSBvbiB0aGUgbWVtb3J5CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLmggYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLmgKaW5kZXggMDMwY2JmZC4uNWVhY2M2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9pMjQwMG0uaApAQCAtNTI2LDcgKzUyNiw3IEBACiAgKgogICogQGJhcmtlcjogYmFya2VyIHR5cGUgdGhhdCB0aGUgZGV2aWNlIHVzZXM7IHRoaXMgaXMgaW5pdGlhbGl6ZWQgYnkKICAqICAgICBpMjQwMG1faXNfYm9vdF9iYXJrZXIoKSB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQuIFRoZW4gaXQKLSAqICAgICB3b24ndCBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBkZXZpY2UgYW5kIGV2ZXJ5dGltZQorICogICAgIHdvbid0IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIGRldmljZSBhbmQgZXZlcnkgdGltZQogICogICAgIGEgYm9vdCBiYXJrZXIgaXMgcmVjZWl2ZWQsIGl0IGlzIGp1c3QgdmVyaWZpZWQgZm9yIGl0IGJlaW5nIHRoZQogICogICAgIHNhbWUuCiAgKgpAQCAtOTI4LDcgKzkyOCw3IEBACiAJc3RydWN0IGkyNDAwbSAqLCBjb25zdCBzdHJ1Y3QgaTI0MDBtX3Rsdl9yZl9zd2l0Y2hlc19zdGF0dXMgKik7CiAKIC8qCi0gKiBIZWxwZXJzIGZvciBmaXJtd2FyZSBiYWNrd2FyZHMgY29tcGFiaWxpdHkKKyAqIEhlbHBlcnMgZm9yIGZpcm13YXJlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgKgogICogQXMgd2UgYWltIHRvIHN1cHBvcnQgYXQgbGVhc3QgdGhlIGZpcm13YXJlIHZlcnNpb24gdGhhdCB3YXMKICAqIHJlbGVhc2VkIHdpdGggdGhlIHByZXZpb3VzIGtlcm5lbC9kcml2ZXIgcmVsZWFzZSwgc29tZSBjb2RlIHdpbGwgYmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9uZXRkZXYuYwppbmRleCA5NDc0MmUxLi4yZWRkOGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vbmV0ZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL25ldGRldi5jCkBAIC0xNjYsNyArMTY2LDcgQEAKIAlkX2Zuc3RhcnQoMywgZGV2LCAiKHdzICVwIGkyNDAwbSAlcCBza2IgJXApXG4iLCB3cywgaTI0MDBtLCBza2IpOwogCXJlc3VsdCA9IC1FSU5WQUw7CiAJaWYgKHNrYiA9PSBOVUxMKSB7Ci0JCWRldl9lcnIoZGV2LCAiV0FLRSZUWDogc2tiIGRpc3NhcGVhcmVkIVxuIik7CisJCWRldl9lcnIoZGV2LCAiV0FLRSZUWDogc2tiIGRpc2FwcGVhcmVkIVxuIik7CiAJCWdvdG8gb3V0X3B1dDsKIAl9CiAJLyogSWYgd2UgaGF2ZSwgc29tZWhvdywgbG9zdCB0aGUgY29ubmVjdGlvbiBhZnRlciB0aGlzIHdhcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL29wLXJma2lsbC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL29wLXJma2lsbC5jCmluZGV4IDllMDJiOTAuLmIwZGJhMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9vcC1yZmtpbGwuYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vb3AtcmZraWxsLmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIC0gcmVwb3J0IGNoYW5nZXMgaW4gdGhlIEhXIFJGIEtpbGwgc3dpdGNoIFt3aXRoCiAgKiAgIHdpbWF4X3Jma2lsbF97c3csaHd9X3JlcG9ydCgpLCB3aGljaCBoYXBwZW5zIHdoZW4gd2UgZGV0ZWN0IHRob3NlCiAgKiAgIGluZGljYXRpb25zIGNvbWluZyB0aHJvdWdoIGhhcmR3YXJlIHJlcG9ydHNdLiBXZSBhbHNvIGRvIGl0IG9uCi0gKiAgIGluaXRpYWxpemF0aW9uIHRvIGxldCB0aGUgc3RhY2sga25vdyB0aGUgaW50aWFsIEhXIHN0YXRlLgorICogICBpbml0aWFsaXphdGlvbiB0byBsZXQgdGhlIHN0YWNrIGtub3cgdGhlIGluaXRpYWwgSFcgc3RhdGUuCiAgKgogICogLSBpbXBsZW1lbnQgaW5kaWNhdGlvbnMgZnJvbSB0aGUgc3RhY2sgdG8gY2hhbmdlIHRoZSBTVyBSRiBLaWxsCiAgKiAgIHN3aXRjaCAoY29taW5nIGZyb20gc3lzZnMsIHRoZSB3aW1heCBzdGFjayBvciB1c2VyIHNwYWNlKS4KQEAgLTczLDcgKzczLDcgQEAKICAqIEdlbmVyaWMgTmV0bGluayB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGEgbWVzc2FnZSBpcyBzZW50IGZyb20KICAqIHVzZXJzcGFjZSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlIFJGLUtpbGwgc3dpdGNoIHN0YXR1cy4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBkZXZpY2UncyBzb2Z3YXJlIFJGLUtpbGwgc3dpdGNoIHN0YXRlIHRvCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBkZXZpY2UncyBzb2Z0d2FyZSBSRi1LaWxsIHN3aXRjaCBzdGF0ZSB0bwogICogbWF0Y2ggd2hhdCBpcyByZXF1ZXN0ZWQuCiAgKgogICogTk9URTogdGhlIGkyNDAwbSBoYXMgYSBzdHJpY3Qgc3RhdGUgbWFjaGluZTsgd2UgY2FuIG9ubHkgc2V0IHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3J4LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vcnguYwppbmRleCA4NDQxMzNiLi4yZjk0YTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vcnguYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vcnguYwpAQCAtMzQ5LDcgKzM0OSw3IEBACiAgKgogICogRm9yIHJlcG9ydHM6IFdlIGNhbid0IGNsb25lIHRoZSBvcmlnaW5hbCBza2Igd2hlcmUgdGhlIGRhdGEgaXMKICAqIGJlY2F1c2Ugd2UgbmVlZCB0byBzZW5kIHRoaXMgdXAgdmlhIG5ldGxpbms7IG5ldGxpbmsgaGFzIHRvIGFkZAotICogaGVhZGVycyBhbmQgd2UgY2FuJ3Qgb3ZlcndyaXRlIHdoYXQncyBwcmVjZWVkaW5nIHRoZSBwYXlsb2FkLi4uYXMKKyAqIGhlYWRlcnMgYW5kIHdlIGNhbid0IG92ZXJ3cml0ZSB3aGF0J3MgcHJlY2VkaW5nIHRoZSBwYXlsb2FkLi4uYXMKICAqIGl0IGlzIGFub3RoZXIgbWVzc2FnZS4gU28gd2UganVzdCBkdXAgdGhlbS4KICAqLwogc3RhdGljCkBAIC00MjUsNyArNDI1LDcgQEAKICAqCiAgKiBBcyBpbiBpMjQwMG1fcnhfY3RsKCksIHdlIGNhbid0IGNsb25lIHRoZSBvcmlnaW5hbCBza2Igd2hlcmUgdGhlCiAgKiBkYXRhIGlzIGJlY2F1c2Ugd2UgbmVlZCB0byBzZW5kIHRoaXMgdXAgdmlhIG5ldGxpbms7IG5ldGxpbmsgaGFzIHRvCi0gKiBhZGQgaGVhZGVycyBhbmQgd2UgY2FuJ3Qgb3ZlcndyaXRlIHdoYXQncyBwcmVjZWVkaW5nIHRoZQorICogYWRkIGhlYWRlcnMgYW5kIHdlIGNhbid0IG92ZXJ3cml0ZSB3aGF0J3MgcHJlY2VkaW5nIHRoZQogICogcGF5bG9hZC4uLmFzIGl0IGlzIGFub3RoZXIgbWVzc2FnZS4gU28gd2UganVzdCBkdXAgdGhlbS4KICAqLwogc3RhdGljCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdHguYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jCmluZGV4IDNmODE5ZWYuLjRiMzBlZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jCkBAIC0xNDksNyArMTQ5LDcgQEAKICAqICh3aXRoIGEgbW92ZWQgbWVzc2FnZSBoZWFkZXIgdG8gbWFrZSBzdXJlIGl0IGlzIHNpemUtYWxpZ25lZCB0bwogICogMTYpLCBUQUlMIHJvb20gdGhhdCB3YXMgdW51c2FibGUgKGFuZCB0aHVzIGlzIG1hcmtlZCB3aXRoIGEgbWVzc2FnZQogICogaGVhZGVyIHRoYXQgc2F5cyAnc2tpcCB0aGlzJykgYW5kIGF0IHRoZSBoZWFkIG9mIHRoZSBidWZmZXIsIGFuCi0gKiBpbWNvbXBsZXRlIG1lc3NhZ2Ugd2l0aCBhIGNvdXBsZSBvZiBwYXlsb2Fkcy4KKyAqIGluY29tcGxldGUgbWVzc2FnZSB3aXRoIGEgY291cGxlIG9mIHBheWxvYWRzLgogICoKICAqIE4gICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAqICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC04MTksNyArODE5LDcgQEAKICAqIHRoZSBGSUYgdGhhdCBpcyByZWFkeSBmb3IgdHJhbnNtaXNzaW9uLgogICoKICAqIEl0IHNldHMgdGhlIHN0YXRlIGluIEBpMjQwMG0gdG8gaW5kaWNhdGUgdGhlIGJ1cy1zcGVjaWZpYyBkcml2ZXIgaXMKLSAqIHRyYW5zZmVyaW5nIHRoYXQgbWVzc2FnZSAoaTI0MDBtLT50eF9tc2dfc2l6ZSkuCisgKiB0cmFuc2ZlcnJpbmcgdGhhdCBtZXNzYWdlIChpMjQwMG0tPnR4X21zZ19zaXplKS4KICAqCiAgKiBPbmNlIHRoZSB0cmFuc2ZlciBpcyBjb21wbGV0ZWQsIGNhbGwgaTI0MDBtX3R4X21zZ19zZW50KCkuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1mdy5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1mdy5jCmluZGV4IGI1OGVjNTYuLjFmZGE0NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItZncuYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLWZ3LmMKQEAgLTE2OSw3ICsxNjksNyBAQAogICoKICAqIENvbW1hbmQgY2FuIGJlIGEgcmF3IGNvbW1hbmQsIHdoaWNoIHJlcXVpcmVzIG5vIHByZXBhcmF0aW9uIChhbmQKICAqIHdoaWNoIG1pZ2h0IG5vdCBldmVuIGJlIGZvbGxvd2luZyB0aGUgY29tbWFuZCBmb3JtYXQpLiBDaGVja3MgdGhhdAotICogdGhlIHJpZ2h0IGFtb3VudCBvZiBkYXRhIHdhcyB0cmFuc2ZlcmVkLgorICogdGhlIHJpZ2h0IGFtb3VudCBvZiBkYXRhIHdhcyB0cmFuc2ZlcnJlZC4KICAqCiAgKiBUbyBzYXRpc2Z5IFVTQiByZXF1aXJlbWVudHMgKG5vIG9uc3RhY2ssIHZtYWxsb2Mgb3IgaW4gZGF0YSBzZWdtZW50CiAgKiBidWZmZXJzKSwgd2UgY29weSB0aGUgY29tbWFuZCB0byBpMjQwMG0tPmJtX2NtZF9idWYgYW5kIHNlbmQgaXQgZnJvbQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1yeC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1yeC5jCmluZGV4IGEyNjQ4M2EuLmUzMjU3NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItcnguYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXJ4LmMKQEAgLTU4LDcgKzU4LDcgQEAKICAqICAgIGEgemlsbGlvbiByZWFkczsgYnkgc2VyaWFsaXppbmcsIHdlIGFyZSB0aHJvdHRsaW5nLgogICoKICAqICAtIFJYIGRhdGEgcHJvY2Vzc2luZyBjYW4gZ2V0IGhlYXZ5IGVub3VnaCBzbyB0aGF0IGl0IGlzIG5vdAotICogICAgYXBwcm9waWF0ZSBmb3IgZG9pbmcgaXQgaW4gdGhlIFVTQiBjYWxsYmFjazsgdGh1cyB3ZSBydW4gaXQgaW4gYQorICogICAgYXBwcm9wcmlhdGUgZm9yIGRvaW5nIGl0IGluIHRoZSBVU0IgY2FsbGJhY2s7IHRodXMgd2UgcnVuIGl0IGluIGEKICAqICAgIHByb2Nlc3MgY29udGV4dC4KICAqCiAgKiBXZSBwcm92aWRlIGEgcmVhZCBidWZmZXIgb2YgYW4gYXJiaXRyYXJ5IHNpemUgKHNob3J0IG9mIGEgcGFnZSk7IGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXR4LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXR4LmMKaW5kZXggYzY1Yjk5Ny4uYWMzNTdhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi10eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItdHguYwpAQCAtMTY4LDcgKzE2OCw3IEBACiAvKgogICogR2V0IHRoZSBuZXh0IFRYIG1lc3NhZ2UgaW4gdGhlIFRYIEZJRk8gYW5kIHNlbmQgaXQgdG8gdGhlIGRldmljZQogICoKLSAqIE5vdGUgd2UgZXhpdCB0aGUgbG9vcCBpZiBpMjQwMG11X3R4KCkgZmFpbHM7IHRoYXQgZnVudGlvbiBvbmx5CisgKiBOb3RlIHdlIGV4aXQgdGhlIGxvb3AgaWYgaTI0MDBtdV90eCgpIGZhaWxzOyB0aGF0IGZ1bmN0aW9uIG9ubHkKICAqIGZhaWxzIG9uIGhhcmQgZXJyb3IgKGZhaWxpbmcgdG8gdHggYSBidWZmZXIgbm90IGJlaW5nIG9uZSBvZiB0aGVtLAogICogc2VlIGl0cyBkb2MpLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Fpcm8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Fpcm8uYwppbmRleCA1N2E3OWIwLi40ZTVjN2ExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9haXJvLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYWlyby5jCkBAIC0xODg0LDcgKzE4ODQsNyBAQAogCS8qIE1ha2Ugc3VyZSB0aGUgY2FyZCBpcyBjb25maWd1cmVkLgogCSAqIFdpcmVsZXNzIEV4dGVuc2lvbnMgbWF5IHBvc3Rwb25lIGNvbmZpZyBjaGFuZ2VzIHVudGlsIHRoZSBjYXJkCiAJICogaXMgb3BlbiAodG8gcGlwZWxpbmUgY2hhbmdlcyBhbmQgc3BlZWQtdXAgY2FyZCBzZXR1cCkuIElmCi0JICogdGhvc2UgY2hhbmdlcyBhcmUgbm90IHlldCBjb21taXRlZCwgZG8gaXQgbm93IC0gSmVhbiBJSSAqLworCSAqIHRob3NlIGNoYW5nZXMgYXJlIG5vdCB5ZXQgY29tbWl0dGVkLCBkbyBpdCBub3cgLSBKZWFuIElJICovCiAJaWYgKHRlc3RfYml0KEZMQUdfQ09NTUlULCAmYWktPmZsYWdzKSkgewogCQlkaXNhYmxlX01BQyhhaSwgMSk7CiAJCXdyaXRlQ29uZmlnUmlkKGFpLCAxKTsKQEAgLTE5OTIsNyArMTk5Miw3IEBACiAvKgogICogTWFnaWMsIHRoZSBjYXJkcyBmaXJtd2FyZSBuZWVkcyBhIGxlbmd0aCBjb3VudCAoMiBieXRlcykgaW4gdGhlIGhvc3QgYnVmZmVyCiAgKiByaWdodCBhZnRlciAgVFhGSURfSERSLlRoZSBUWEZJRF9IRFIgY29udGFpbnMgdGhlIHN0YXR1cyBzaG9ydCBzbyBwYXlsb2FkbGVuCi0gKiBpcyBpbW1lZGlhdGx5IGFmdGVyIGl0LiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGlzIGltbWVkaWF0ZWx5IGFmdGVyIGl0LiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqICAgICAgICAgICAgICAgICAgICAgICAgIHxUWEZJREhEUitTVEFUVVN8UEFZTE9BRExFTnw4MDIuM0hEUnxQQUNLRVREQVRBfAogICogICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTIwMDYsNyArMjAwNiw3IEBACiAJCXNpemVvZih3aWZpY3RsaGRyODAyMykgKyAyIDsKIAogCS8qCi0JICogRmlybXdhcmUgYXV0b21hdGljbHkgcHV0cyA4MDIgaGVhZGVyIG9uIHNvCisJICogRmlybXdhcmUgYXV0b21hdGljYWxseSBwdXRzIDgwMiBoZWFkZXIgb24gc28KIAkgKiB3ZSBkb24ndCBuZWVkIHRvIGFjY291bnQgZm9yIGl0IGluIHRoZSBsZW5ndGgKIAkgKi8KIAlpZiAodGVzdF9iaXQoRkxBR19NSUNfQ0FQQUJMRSwgJmFpLT5mbGFncykgJiYgYWktPm1pY3N0YXRzLmVuYWJsZWQgJiYKQEAgLTI1MzEsNyArMjUzMSw3IEBACiAvKgogICogV2UgYXJlIHNldHRpbmcgdXAgdGhyZWUgdGhpbmdzIGhlcmU6CiAgKiAxKSBNYXAgQVVYIG1lbW9yeSBmb3IgZGVzY3JpcHRvcnM6IFJpZCwgVHhGaWQsIG9yIFJ4RmlkLgotICogMikgTWFwIFBDSSBtZW1vcnkgZm9yIGlzc3VlaW5nIGNvbW1hbmRzLgorICogMikgTWFwIFBDSSBtZW1vcnkgZm9yIGlzc3VpbmcgY29tbWFuZHMuCiAgKiAzKSBBbGxvY2F0ZSBtZW1vcnkgKHNoYXJlZCkgdG8gc2VuZCBhbmQgcmVjZWl2ZSBldGhlcm5ldCBmcmFtZXMuCiAgKi8KIHN0YXRpYyBpbnQgbXBpX21hcF9jYXJkKHN0cnVjdCBhaXJvX2luZm8gKmFpLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAKIAogCWlmICggbWF4X3RyaWVzID09IC0xICkgewogCQlhaXJvX3ByaW50X2VycihhaS0+ZGV2LT5uYW1lLAotCQkJIk1heCB0cmllcyBleGNlZWRlZCB3aGVuIGlzc3VlaW5nIGNvbW1hbmQiKTsKKwkJCSJNYXggdHJpZXMgZXhjZWVkZWQgd2hlbiBpc3N1aW5nIGNvbW1hbmQiKTsKIAkJaWYgKElONDUwMChhaSwgQ09NTUFORCkgJiBDT01NQU5EX0JVU1kpCiAJCQlPVVQ0NTAwKGFpLCBFVkFDSywgRVZfQ0xFQVJDT01NQU5EQlVTWSk7CiAJCXJldHVybiBFUlJPUjsKQEAgLTQxNzMsNyArNDE3Myw3IEBACiB9CiAKIC8qICBOb3RlLCB0aGF0IHdlIGFyZSB1c2luZyBCQVAxIHdoaWNoIGlzIGFsc28gdXNlZCBieSB0cmFuc21pdCwgc28KLSAqICBtYWtlIHN1cmUgdGhpcyBpc250IGNhbGxlZCB3aGVuIGEgdHJhbnNtaXQgaXMgaGFwcGVuaW5nICovCisgKiAgbWFrZSBzdXJlIHRoaXMgaXNuJ3QgY2FsbGVkIHdoZW4gYSB0cmFuc21pdCBpcyBoYXBwZW5pbmcgKi8KIHN0YXRpYyBpbnQgUEM0NTAwX3dyaXRlcmlkKHN0cnVjdCBhaXJvX2luZm8gKmFpLCB1MTYgcmlkLAogCQkJICAgY29uc3Qgdm9pZCAqcEJ1ZiwgaW50IGxlbiwgaW50IGxvY2spCiB7CkBAIC00Nzc2LDcgKzQ3NzYsNyBAQAogCQlpZiAoIXN0YXRzTGFiZWxzW2ldKSBjb250aW51ZTsKIAkJaWYgKGorc3RybGVuKHN0YXRzTGFiZWxzW2ldKSsxNj40MDk2KSB7CiAJCQlhaXJvX3ByaW50X3dhcm4oYXByaXYtPmRldi0+bmFtZSwKLQkJCSAgICAgICAiUG90ZW50aWFsbHkgZGlzYXN0ZXJvdXMgYnVmZmVyIG92ZXJmbG93IGF2ZXJ0ZWQhIik7CisJCQkgICAgICAgIlBvdGVudGlhbGx5IGRpc2FzdHJvdXMgYnVmZmVyIG92ZXJmbG93IGF2ZXJ0ZWQhIik7CiAJCQlicmVhazsKIAkJfQogCQlqKz1zcHJpbnRmKGRhdGEtPnJidWZmZXIraiwgIiVzOiAldVxuIiwgc3RhdHNMYWJlbHNbaV0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvbWFpbi5jCmluZGV4IGI3NjFmZWMuLmNjYzJlZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvbWFpbi5jCkBAIC05NzQsNyArOTc0LDcgQEAKIAkJCWlmIChhci0+cnhfZmFpbG92ZXJfbWlzc2luZyA8PSAwKSB7CiAJCQkJLyoKIAkJCQkgKiBuZXN0ZWQgYXI5MTcwX3J4IGNhbGwhCi0JCQkJICogdGVybWluYXRpb24gaXMgZ3VyYW50ZWVkLCBldmVuIHdoZW4gdGhlCisJCQkJICogdGVybWluYXRpb24gaXMgZ3VhcmFudGVlZCwgZXZlbiB3aGVuIHRoZQogCQkJCSAqIGNvbWJpbmVkIGZyYW1lIGFsc28gaGF2ZSBhIGVsZW1lbnQgd2l0aAogCQkJCSAqIGEgYmFkIHRhZy4KIAkJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvcGh5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL3BoeS5jCmluZGV4IDBkYmZjZjcuLmFhOGQwNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyOTE3MC9waHkuYwpAQCAtNDI0LDcgKzQyNCw3IEBACiAKIC8qCiAgKiBpbml0aWFsaXplIHNvbWUgcGh5IHJlZ3MgZnJvbSBlZXByb20gdmFsdWVzIGluIG1vZGFsX2hlYWRlcltdCi0gKiBhY2MuIHRvIGJhbmQgYW5kIGJhbmR3aXRoCisgKiBhY2MuIHRvIGJhbmQgYW5kIGJhbmR3aWR0aAogICovCiBzdGF0aWMgaW50IGFyOTE3MF9pbml0X3BoeV9mcm9tX2VlcHJvbShzdHJ1Y3QgYXI5MTcwICphciwKIAkJCQlib29sIGlzXzJnaHosIGJvb2wgaXNfNDBtaHopCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYW5pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYW5pLmgKaW5kZXggZDBhNjY0MC4uMDM0MDE1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2FuaS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9hbmkuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBBVEg1S19BTklfUlNTSV9USFJfSElHSAkJNDAKICNkZWZpbmUgQVRINUtfQU5JX1JTU0lfVEhSX0xPVwkJNwogCi0vKiBtYXhpbXVtIGF2YWlsYWJlIGxldmVscyAqLworLyogbWF4aW11bSBhdmFpbGFibGUgbGV2ZWxzICovCiAjZGVmaW5lIEFUSDVLX0FOSV9NQVhfRklSU1RFUF9MVkwJMgogI2RlZmluZSBBVEg1S19BTklfTUFYX05PSVNFX0lNTV9MVkwJMQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYwppbmRleCA0ZDdmMjFlLi4zNDlhNTk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMKQEAgLTE5NTMsNyArMTk1Myw3IEBACiAKICNkZWZpbmUgRlVER0UgQVI1S19UVU5FX1NXX0JFQUNPTl9SRVNQICsgMwogCS8qIFdlIHVzZSBGVURHRSB0byBtYWtlIHN1cmUgdGhlIG5leHQgVEJUVCBpcyBhaGVhZCBvZiB0aGUgY3VycmVudCBUVS4KLQkgKiBTaW5jZSB3ZSBsYXRlciBzdWJzdHJhY3QgQVI1S19UVU5FX1NXX0JFQUNPTl9SRVNQICgxMCkgaW4gdGhlIHRpbWVyCisJICogU2luY2Ugd2UgbGF0ZXIgc3VidHJhY3QgQVI1S19UVU5FX1NXX0JFQUNPTl9SRVNQICgxMCkgaW4gdGhlIHRpbWVyCiAJICogY29uZmlndXJhdGlvbiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBpdCBpcyBiaWdnZXIgdGhhbiB0aGF0LiAqLwogCiAJaWYgKGJjX3RzZiA9PSAtMSkgewpAQCAtMTk3MSw3ICsxOTcxLDcgQEAKIAkJaW50dmFsIHw9IEFSNUtfQkVBQ09OX1JFU0VUX1RTRjsKIAl9IGVsc2UgaWYgKGJjX3RzZiA+IGh3X3RzZikgewogCQkvKgotCQkgKiBiZWFjb24gcmVjZWl2ZWQsIFNXIG1lcmdlIGhhcHBlbmQgYnV0IEhXIFRTRiBub3QgeWV0IHVwZGF0ZWQuCisJCSAqIGJlYWNvbiByZWNlaXZlZCwgU1cgbWVyZ2UgaGFwcGVuZWQgYnV0IEhXIFRTRiBub3QgeWV0IHVwZGF0ZWQuCiAJCSAqIG5vdCBwb3NzaWJsZSB0byByZWNvbmZpZ3VyZSB0aW1lcnMgeWV0LCBidXQgbmV4dCB0aW1lIHdlCiAJCSAqIHJlY2VpdmUgYSBiZWFjb24gd2l0aCB0aGUgc2FtZSBCU1NJRCwgdGhlIGhhcmR3YXJlIHdpbGwKIAkJICogYXV0b21hdGljYWxseSB1cGRhdGUgdGhlIFRTRiBhbmQgdGhlbiB3ZSBuZWVkIHRvIHJlY29uZmlndXJlCkBAIC0yNjUxLDcgKzI2NTEsNyBAQAogCXN5bmNocm9uaXplX2lycShzYy0+aXJxKTsKIAlzdG9wX3Rhc2tsZXRzKHNjKTsKIAotCS8qIFNhdmUgYW5pIG1vZGUgYW5kIGRpc2FibGUgQU5JIGR1cnJpbmcKKwkvKiBTYXZlIGFuaSBtb2RlIGFuZCBkaXNhYmxlIEFOSSBkdXJpbmcKIAkgKiByZXNldC4gSWYgd2UgZG9uJ3Qgd2UgbWlnaHQgZ2V0IGZhbHNlCiAJICogUEhZIGVycm9yIGludGVycnVwdHMuICovCiAJYW5pX21vZGUgPSBhaC0+YWhfc2MtPmFuaV9zdGF0ZS5hbmlfbW9kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9kZXNjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZGVzYy5jCmluZGV4IDE2YjQ0ZmYuLmE4ZmNjOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9kZXNjLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Rlc2MuYwpAQCAtNTEsNyArNTEsNyBAQAogCS8qCiAJICogVmFsaWRhdGUgaW5wdXQKIAkgKiAtIFplcm8gcmV0cmllcyBkb24ndCBtYWtlIHNlbnNlLgotCSAqIC0gQSB6ZXJvIHJhdGUgd2lsbCBwdXQgdGhlIEhXIGludG8gYSBtb2RlIHdoZXJlIGl0IGNvbnRpbm91c2x5IHNlbmRzCisJICogLSBBIHplcm8gcmF0ZSB3aWxsIHB1dCB0aGUgSFcgaW50byBhIG1vZGUgd2hlcmUgaXQgY29udGludW91c2x5IHNlbmRzCiAJICogICBub2lzZSBvbiB0aGUgY2hhbm5lbCwgc28gaXQgaXMgaW1wb3J0YW50IHRvIGF2b2lkIHRoaXMuCiAJICovCiAJaWYgKHVubGlrZWx5KHR4X3RyaWVzMCA9PSAwKSkgewpAQCAtMTkwLDcgKzE5MCw3IEBACiAJLyoKIAkgKiBWYWxpZGF0ZSBpbnB1dAogCSAqIC0gWmVybyByZXRyaWVzIGRvbid0IG1ha2Ugc2Vuc2UuCi0JICogLSBBIHplcm8gcmF0ZSB3aWxsIHB1dCB0aGUgSFcgaW50byBhIG1vZGUgd2hlcmUgaXQgY29udGlub3VzbHkgc2VuZHMKKwkgKiAtIEEgemVybyByYXRlIHdpbGwgcHV0IHRoZSBIVyBpbnRvIGEgbW9kZSB3aGVyZSBpdCBjb250aW51b3VzbHkgc2VuZHMKIAkgKiAgIG5vaXNlIG9uIHRoZSBjaGFubmVsLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgdGhpcy4KIAkgKi8KIAlpZiAodW5saWtlbHkodHhfdHJpZXMwID09IDApKSB7CkBAIC0zMDAsNyArMzAwLDcgQEAKIAkvKgogCSAqIFJhdGVzIGNhbiBiZSAwIGFzIGxvbmcgYXMgdGhlIHJldHJ5IGNvdW50IGlzIDAgdG9vLgogCSAqIEEgemVybyByYXRlIGFuZCBub256ZXJvIHJldHJ5IGNvdW50IHdpbGwgcHV0IHRoZSBIVyBpbnRvIGEgbW9kZSB3aGVyZQotCSAqIGl0IGNvbnRpbm91c2x5IHNlbmRzIG5vaXNlIG9uIHRoZSBjaGFubmVsLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8KKwkgKiBpdCBjb250aW51b3VzbHkgc2VuZHMgbm9pc2Ugb24gdGhlIGNoYW5uZWwsIHNvIGl0IGlzIGltcG9ydGFudCB0bwogCSAqIGF2b2lkIHRoaXMuCiAJICovCiAJaWYgKHVubGlrZWx5KCh0eF9yYXRlMSA9PSAwICYmIHR4X3RyaWVzMSAhPSAwKSB8fApAQCAtMzQyLDcgKzM0Miw3IEBACiBcKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCi0gKiBQcm9jY2VzcyB0aGUgdHggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMC81MjExCisgKiBQcm9jZXNzIHRoZSB0eCBzdGF0dXMgZGVzY3JpcHRvciBvbiA1MjEwLzUyMTEKICAqLwogc3RhdGljIGludCBhdGg1a19od19wcm9jXzJ3b3JkX3R4X3N0YXR1cyhzdHJ1Y3QgYXRoNWtfaHcgKmFoLAogCQlzdHJ1Y3QgYXRoNWtfZGVzYyAqZGVzYywgc3RydWN0IGF0aDVrX3R4X3N0YXR1cyAqdHMpCkBAIC0zOTQsNyArMzk0LDcgQEAKIH0KIAogLyoKLSAqIFByb2NjZXNzIGEgdHggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMgorICogUHJvY2VzcyBhIHR4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTIKICAqLwogc3RhdGljIGludCBhdGg1a19od19wcm9jXzR3b3JkX3R4X3N0YXR1cyhzdHJ1Y3QgYXRoNWtfaHcgKmFoLAogCQlzdHJ1Y3QgYXRoNWtfZGVzYyAqZGVzYywgc3RydWN0IGF0aDVrX3R4X3N0YXR1cyAqdHMpCkBAIC01MTksNyArNTE5LDcgQEAKIH0KIAogLyoKLSAqIFByb2NjZXNzIHRoZSByeCBzdGF0dXMgZGVzY3JpcHRvciBvbiA1MjEwLzUyMTEKKyAqIFByb2Nlc3MgdGhlIHJ4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTAvNTIxMQogICovCiBzdGF0aWMgaW50IGF0aDVrX2h3X3Byb2NfNTIxMF9yeF9zdGF0dXMoc3RydWN0IGF0aDVrX2h3ICphaCwKIAkJc3RydWN0IGF0aDVrX2Rlc2MgKmRlc2MsIHN0cnVjdCBhdGg1a19yeF9zdGF0dXMgKnJzKQpAQCAtNjAyLDcgKzYwMiw3IEBACiB9CiAKIC8qCi0gKiBQcm9jY2VzcyB0aGUgcnggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMgorICogUHJvY2VzcyB0aGUgcnggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMgogICovCiBzdGF0aWMgaW50IGF0aDVrX2h3X3Byb2NfNTIxMl9yeF9zdGF0dXMoc3RydWN0IGF0aDVrX2h3ICphaCwKIAkJCQkJc3RydWN0IGF0aDVrX2Rlc2MgKmRlc2MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZWVwcm9tLmMKaW5kZXggYjY1NjFmNy4uZWZiNjcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2VlcHJvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9lZXByb20uYwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKICAqCiAgKiBUbyByZWNyZWF0ZSB0aGUgY3VydmVzIHdlIHJlYWQgaGVyZSB0aGUgcG9pbnRzIGFuZCBpbnRlcnBvbGF0ZQogICogbGF0ZXIuIE5vdGUgdGhhdCBpbiBtb3N0IGNhc2VzIG9ubHkgMiAoaGlnaGVyIGFuZCBsb3dlcikgY3VydmVzIGFyZQotICogdXNlZCAobGlrZSBSRjUxMTIpIGJ1dCB2ZW5kb3JzIGhhdmUgdGhlIG9wb3J0dW5pdHkgdG8gaW5jbHVkZSBhbGwKKyAqIHVzZWQgKGxpa2UgUkY1MTEyKSBidXQgdmVuZG9ycyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBpbmNsdWRlIGFsbAogICogNCBjdXJ2ZXMgb24gZWVwcm9tLiBUaGUgZmluYWwgY3VydmUgKGhpZ2hlciBwb3dlcikgaGFzIGFuIGV4dHJhCiAgKiBwb2ludCBmb3IgYmV0dGVyIGFjY3VyYWN5IGxpa2UgUkY1MTEyLgogICovCkBAIC0xMzAyLDcgKzEzMDIsNyBAQAogCQkJLyoKIAkJCSAqIFBkIGdhaW4gMCBpcyBub3QgdGhlIGxhc3QgcGQgZ2FpbgogCQkJICogc28gaXQgb25seSBoYXMgMiBwZCBwb2ludHMuCi0JCQkgKiBDb250aW51ZSB3aWggcGQgZ2FpbiAxLgorCQkJICogQ29udGludWUgd2l0aCBwZCBnYWluIDEuCiAJCQkgKi8KIAkJCXBjaW5mby0+cHdyX2lbMV0gPSAodmFsID4+IDEwKSAmIDB4MWY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY2kuYwppbmRleCA2NjU5OGEwLi4zYzQ0Njg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGNpLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BjaS5jCkBAIC01Nyw3ICs1Nyw3IEBACiAJKmNzeiA9IChpbnQpdTh0bXA7CiAKIAkvKgotCSAqIFRoaXMgY2hlY2sgd2FzIHB1dCBpbiB0byBhdm9pZCAidW5wbGVzYW50IiBjb25zZXF1ZW5jZXMgaWYKKwkgKiBUaGlzIGNoZWNrIHdhcyBwdXQgaW4gdG8gYXZvaWQgInVucGxlYXNhbnQiIGNvbnNlcXVlbmNlcyBpZgogCSAqIHRoZSBib290cm9tIGhhcyBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYWxsIFBDSSBkZXZpY2VzLgogCSAqIFNvbWV0aW1lcyB0aGUgY2FjaGUgbGluZSBzaXplIHJlZ2lzdGVyIGlzIG5vdCBzZXQKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY3UuYwppbmRleCBhNzAyODE3Li5kOWIzZjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGN1LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BjdS5jCkBAIC00NzIsNyArNDcyLDcgQEAKIAl9CiAKIAkvKgotCSAqIFRoZSBBUjUyMTAgdXNlcyBwcm9taXNjb3VzIG1vZGUgdG8gZGV0ZWN0IHJhZGFyIGFjdGl2aXR5CisJICogVGhlIEFSNTIxMCB1c2VzIHByb21pc2N1b3VzIG1vZGUgdG8gZGV0ZWN0IHJhZGFyIGFjdGl2aXR5CiAJICovCiAJaWYgKGFoLT5haF92ZXJzaW9uID09IEFSNUtfQVI1MjEwICYmCiAJCQkoZmlsdGVyICYgQVI1S19SWF9GSUxURVJfUkFEQVJFUlIpKSB7CkBAIC03MDYsOCArNzA2LDggQEAKICAqIFRoZSBuZWVkIGZvciB0aGlzIGZ1bmN0aW9uIGFyaXNlcyBmcm9tIHRoZSBmYWN0IHRoYXQgd2UgaGF2ZSA0IHNlcGFyYXRlCiAgKiBIVyB0aW1lciByZWdpc3RlcnMgKFRJTUVSMCAtIFRJTUVSMyksIHdoaWNoIGFyZSBjbG9zZWx5IHJlbGF0ZWQgdG8gdGhlCiAgKiBuZXh0IGJlYWNvbiB0YXJnZXQgdGltZSAoTkJUVCksIGFuZCB0aGF0IHRoZSBIVyB1cGRhdGVzIHRoZXNlIHRpbWVycwotICogc2VwZXJhdGVseSBiYXNlZCBvbiB0aGUgY3VycmVudCBUU0YgdmFsdWUuIFRoZSBoYXJkd2FyZSBpbmNyZW1lbnRzIGVhY2gKLSAqIHRpbWVyIGJ5IHRoZSBiZWFjb24gaW50ZXJ2YWwsIHdoZW4gdGhlIGxvY2FsIFRTRiBjb3ZlcnRlZCB0byBUVSBpcyBlcXVhbAorICogc2VwYXJhdGVseSBiYXNlZCBvbiB0aGUgY3VycmVudCBUU0YgdmFsdWUuIFRoZSBoYXJkd2FyZSBpbmNyZW1lbnRzIGVhY2gKKyAqIHRpbWVyIGJ5IHRoZSBiZWFjb24gaW50ZXJ2YWwsIHdoZW4gdGhlIGxvY2FsIFRTRiBjb252ZXJ0ZWQgdG8gVFUgaXMgZXF1YWwKICAqIHRvIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHRpbWVyLgogICoKICAqIFRoZSByZWNlcHRpb24gb2YgYSBiZWFjb24gd2l0aCB0aGUgc2FtZSBCU1NJRCBjYW4gdXBkYXRlIHRoZSBsb2NhbCBIVyBUU0YKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYwppbmRleCA2MmNlMmY0Li41NTQ0MTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jCkBAIC0zMzUsMTEgKzMzNSwxMSBAQAogICogaHR0cDovL21hZHdpZmktcHJvamVjdC5vcmcvdGlja2V0LzE2NTkKICAqIHdpdGggdmFyaW91cyBtZWFzdXJlbWVudHMgYW5kIGRpYWdyYW1zCiAgKgotICogVE9ETzogRGVhbCB3aXRoIHBvd2VyIGRyb3BzIGR1ZSB0byBwcm9iZXMgYnkgc2V0dGluZyBhbiBhcHJvcHJpYXRlCisgKiBUT0RPOiBEZWFsIHdpdGggcG93ZXIgZHJvcHMgZHVlIHRvIHByb2JlcyBieSBzZXR0aW5nIGFuIGFwcHJvcHJpYXRlCiAgKiB0eCBwb3dlciBvbiB0aGUgcHJvYmUgcGFja2V0cyAhIE1ha2UgdGhpcyBwYXJ0IG9mIHRoZSBjYWxpYnJhdGlvbiBwcm9jZXNzLgogICovCiAKLS8qIEluaXRpYWxpemUgYWhfZ2FpbiBkdXJyaW5nIGF0dGFjaCAqLworLyogSW5pdGlhbGl6ZSBhaF9nYWluIGR1cmluZyBhdHRhY2ggKi8KIGludCBhdGg1a19od19yZmdhaW5fb3B0X2luaXQoc3RydWN0IGF0aDVrX2h3ICphaCkKIHsKIAkvKiBJbml0aWFsaXplIHRoZSBnYWluIG9wdGltaXphdGlvbiB2YWx1ZXMgKi8KQEAgLTEwNDksNyArMTA0OSw3IEBACiBcKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qCi0gKiBDb252ZXJ0aW9uIG5lZWRlZCBmb3IgUkY1MTEwCisgKiBDb252ZXJzaW9uIG5lZWRlZCBmb3IgUkY1MTEwCiAgKi8KIHN0YXRpYyB1MzIgYXRoNWtfaHdfcmY1MTEwX2NoYW4yYXRoY2hhbihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwpCiB7CkBAIC0xMDg4LDcgKzEwODgsNyBAQAogfQogCiAvKgotICogQ29udmVydGlvbiBuZWVkZWQgZm9yIDUxMTEKKyAqIENvbnZlcnNpb24gbmVlZGVkIGZvciA1MTExCiAgKi8KIHN0YXRpYyBpbnQgYXRoNWtfaHdfcmY1MTExX2NoYW4yYXRoY2hhbih1bnNpZ25lZCBpbnQgaWVlZSwKIAkJc3RydWN0IGF0aDVrX2F0aGNoYW5fMmdoeiAqYXRoY2hhbikKQEAgLTIyMDEsNyArMjIwMSw3IEBACiAvKgogICogR2V0IHRoZSBzdXJyb3VuZGluZyBwZXItY2hhbm5lbCBwb3dlciBjYWxpYnJhdGlvbiBwaWVycwogICogZm9yIGEgZ2l2ZW4gZnJlcXVlbmN5IHNvIHRoYXQgd2UgY2FuIGludGVycG9sYXRlIGJldHdlZW4KLSAqIHRoZW0gYW5kIGNvbWUgdXAgd2l0aCBhbiBhcHJvcHJpYXRlIGRhdGFzZXQgZm9yIG91ciBjdXJyZW50CisgKiB0aGVtIGFuZCBjb21lIHVwIHdpdGggYW4gYXBwcm9wcmlhdGUgZGF0YXNldCBmb3Igb3VyIGN1cnJlbnQKICAqIGNoYW5uZWwuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0yNjE4LDcgKzI2MTgsNyBAQAogLyoKICAqIFNldCB0aGUgZ2FpbiBib3VuZGFyaWVzIGFuZCBjcmVhdGUgZmluYWwgUG93ZXIgdG8gUERBREMgdGFibGUKICAqCi0gKiBXZSBjYW4gaGF2ZSB1cCB0byA0IHBkIGN1cnZlcywgd2UgbmVlZCB0byBkbyBhIHNpbW1pbGFyIHByb2Nlc3MKKyAqIFdlIGNhbiBoYXZlIHVwIHRvIDQgcGQgY3VydmVzLCB3ZSBuZWVkIHRvIGRvIGEgc2ltaWxhciBwcm9jZXNzCiAgKiBhcyB3ZSBkbyBmb3IgUkY1MTEyLiBUaGlzIHRpbWUgd2UgZG9uJ3QgaGF2ZSBhbiBlZGdlX2ZsYWcgYnV0IHdlCiAgKiBzZXQgdGhlIGdhaW4gYm91bmRhcmllcyBvbiBhIHNlcGFyYXRlIHJlZ2lzdGVyLgogICovCkBAIC0yODI2LDEzICsyODI2LDEzIEBACiAJdTMyIHRhcmdldCA9IGNoYW5uZWwtPmNlbnRlcl9mcmVxOwogCWludCBwZGcsIGk7CiAKLQkvKiBHZXQgc3Vyb3VuZGluZyBmcmVxIHBpZXJzIGZvciB0aGlzIGNoYW5uZWwgKi8KKwkvKiBHZXQgc3Vycm91bmRpbmcgZnJlcSBwaWVycyBmb3IgdGhpcyBjaGFubmVsICovCiAJYXRoNWtfZ2V0X2NoYW5fcGNhbF9zdXJyb3VuZGluZ19waWVycyhhaCwgY2hhbm5lbCwKIAkJCQkJCSZwY2luZm9fTCwKIAkJCQkJCSZwY2luZm9fUik7CiAKIAkvKiBMb29wIG92ZXIgcGQgZ2FpbiBjdXJ2ZXMgb24KLQkgKiBzdXJvdW5kaW5nIGZyZXEgcGllcnMgYnkgaW5kZXggKi8KKwkgKiBzdXJyb3VuZGluZyBmcmVxIHBpZXJzIGJ5IGluZGV4ICovCiAJZm9yIChwZGcgPSAwOyBwZGcgPCBlZS0+ZWVfcGRfZ2FpbnNbZWVfbW9kZV07IHBkZysrKSB7CiAKIAkJLyogRmlsbCBjdXJ2ZXMgaW4gcmV2ZXJzZSBvcmRlcgpAQCAtMjkyMyw3ICsyOTIzLDcgQEAKIAkJfQogCiAJCS8qIEludGVycG9sYXRlIGJldHdlZW4gY3VydmVzCi0JCSAqIG9mIHN1cm91bmRpbmcgZnJlcSBwaWVycyB0bworCQkgKiBvZiBzdXJyb3VuZGluZyBmcmVxIHBpZXJzIHRvCiAJCSAqIGdldCB0aGUgZmluYWwgY3VydmUgZm9yIHRoaXMKIAkJICogcGQgZ2Fpbi4gUmUtdXNlIHRtcEwgZm9yIGludGVycG9sYXRpb24KIAkJICogb3V0cHV0ICovCkBAIC0yOTQ3LDcgKzI5NDcsNyBAQAogCiAJLyogRmlsbCBtaW4gYW5kIG1heCBwb3dlciBsZXZlbHMgZm9yIHRoaXMKIAkgKiBjaGFubmVsIGJ5IGludGVycG9sYXRpbmcgdGhlIHZhbHVlcyBvbgotCSAqIHN1cm91bmRpbmcgY2hhbm5lbHMgdG8gY29tcGxldGUgdGhlIGRhdGFzZXQgKi8KKwkgKiBzdXJyb3VuZGluZyBjaGFubmVscyB0byBjb21wbGV0ZSB0aGUgZGF0YXNldCAqLwogCWFoLT5haF90eHBvd2VyLnR4cF9taW5fcHdyID0gYXRoNWtfZ2V0X2ludGVycG9sYXRlZF92YWx1ZSh0YXJnZXQsCiAJCQkJCShzMTYpIHBjaW5mb19MLT5mcmVxLAogCQkJCQkoczE2KSBwY2luZm9fUi0+ZnJlcSwKQEAgLTMxNzksNyArMzE3OSw3IEBACiAKIAkvKiBGSVhNRTogVFBDIHNjYWxlIHJlZHVjdGlvbiAqLwogCi0JLyogR2V0IHN1cm91bmRpbmcgY2hhbm5lbHMgZm9yIHBlci1yYXRlIHBvd2VyIHRhYmxlCisJLyogR2V0IHN1cnJvdW5kaW5nIGNoYW5uZWxzIGZvciBwZXItcmF0ZSBwb3dlciB0YWJsZQogCSAqIGNhbGlicmF0aW9uICovCiAJYXRoNWtfZ2V0X3JhdGVfcGNhbF9kYXRhKGFoLCBjaGFubmVsLCAmcmF0ZV9pbmZvKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3JlZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3JlZy5oCmluZGV4IGUxYzlhYmQuLmQxMmI4MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9yZWcuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcmVnLmgKQEAgLTEzMiw4ICsxMzIsOCBAQAogICogQXMgaSBjYW4gc2VlIGluIGFyNWtfYXI1MjEwX3R4X3N0YXJ0IFJleWsgdXNlcyBzb21lIG9mIHRoZSB2YWx1ZXMgb2YgQkNSCiAgKiBmb3IgdGhpcyByZWdpc3Rlciwgc28gaSBndWVzcyBUUTFWLFRRMUZWIGFuZCBCRE1BRSBoYXZlIHRoZSBzYW1lIG1lYW5pbmcKICAqIGhlcmUgYW5kIFNOUC9TTkFQIG1lYW5zICJzbmFwc2hvdCIgKHNvIHRoaXMgcmVnaXN0ZXIgZ2V0cyBzeW5jZWQgd2l0aCBCQ1IpLgotICogU28gU05BUFBFREJDUlZBTElEIHNvdWxkIGFsc28gc3RhbmQgZm9yICJzbmFwcGVkIEJDUiAtdmFsdWVzLSB2YWxpZCIsIHNvIGkKLSAqIHJlbmFtZWQgaXQgdG8gU05BUFNIT1RTVkFMSUQgdG8gbWFrZSBtb3JlIHNlbnNlLiBJIHJlYWx5IGhhdmUgbm8gaWRlYSB3aGF0CisgKiBTbyBTTkFQUEVEQkNSVkFMSUQgc2hvdWxkIGFsc28gc3RhbmQgZm9yICJzbmFwcGVkIEJDUiAtdmFsdWVzLSB2YWxpZCIsIHNvIGkKKyAqIHJlbmFtZWQgaXQgdG8gU05BUFNIT1RTVkFMSUQgdG8gbWFrZSBtb3JlIHNlbnNlLiBJIHJlYWxseSBoYXZlIG5vIGlkZWEgd2hhdAogICogZWxzZSBjYW4gaXQgYmUuIEkgYWxzbyByZW5hbWVkIFNOUEJDTUQgdG8gU05QQURIT0MgdG8gbWF0Y2ggQkNSLgogICovCiAjZGVmaW5lIEFSNUtfQlNSCQkweDAwMmMJCQkvKiBSZWdpc3RlciBBZGRyZXNzICovCkBAIC0yODMsNyArMjgzLDcgQEAKICAqLwogI2RlZmluZSBBUjVLX0lTUgkJMHgwMDFjCQkJLyogUmVnaXN0ZXIgQWRkcmVzcyBbNTIxMF0gKi8KICNkZWZpbmUgQVI1S19QSVNSCQkweDAwODAJCQkvKiBSZWdpc3RlciBBZGRyZXNzIFs1MjExK10gKi8KLSNkZWZpbmUgQVI1S19JU1JfUlhPSwkJMHgwMDAwMDAwMQkvKiBGcmFtZSBzdWNjZXNzZnVseSByZWNpZXZlZCAqLworI2RlZmluZSBBUjVLX0lTUl9SWE9LCQkweDAwMDAwMDAxCS8qIEZyYW1lIHN1Y2Nlc3NmdWx5IHJlY2VpdmVkICovCiAjZGVmaW5lIEFSNUtfSVNSX1JYREVTQwkJMHgwMDAwMDAwMgkvKiBSWCBkZXNjcmlwdG9yIHJlcXVlc3QgKi8KICNkZWZpbmUgQVI1S19JU1JfUlhFUlIJCTB4MDAwMDAwMDQJLyogUmVjZWl2ZSBlcnJvciAqLwogI2RlZmluZSBBUjVLX0lTUl9SWE5PRlJNCTB4MDAwMDAwMDgJLyogTm8gZnJhbWUgcmVjZWl2ZWQgKHJlY2VpdmUgdGltZW91dCkgKi8KQEAgLTM3MiwxMiArMzcyLDEyIEBACiAvKgogICogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXJzCiAgKgotICogQXMgd2hpdGggSVNScyA1MjEwIGhhcyBvbmUgSU1SIChBUjVLX0lNUikgYW5kIDUyMTEvNTIxMiBoYXMgb25lIHByaW1hcnkKKyAqIEFzIHdpdGggSVNScyA1MjEwIGhhcyBvbmUgSU1SIChBUjVLX0lNUikgYW5kIDUyMTEvNTIxMiBoYXMgb25lIHByaW1hcnkKICAqIChBUjVLX1BJTVIpIGFuZCA0IHNlY29uZGFyeSBJTVJzIChBUjVLX1NJTVJ4KS4gTm90ZSB0aGF0IElTUi9JTVIgZmxhZ3MgbWF0Y2guCiAgKi8KICNkZWZpbmUJQVI1S19JTVIJCTB4MDAyMAkJCS8qIFJlZ2lzdGVyIEFkZHJlc3MgWzUyMTBdICovCiAjZGVmaW5lIEFSNUtfUElNUgkJMHgwMGEwCQkJLyogUmVnaXN0ZXIgQWRkcmVzcyBbNTIxMStdICovCi0jZGVmaW5lIEFSNUtfSU1SX1JYT0sJCTB4MDAwMDAwMDEJLyogRnJhbWUgc3VjY2Vzc2Z1bHkgcmVjaWV2ZWQqLworI2RlZmluZSBBUjVLX0lNUl9SWE9LCQkweDAwMDAwMDAxCS8qIEZyYW1lIHN1Y2Nlc3NmdWx5IHJlY2VpdmVkKi8KICNkZWZpbmUgQVI1S19JTVJfUlhERVNDCQkweDAwMDAwMDAyCS8qIFJYIGRlc2NyaXB0b3IgcmVxdWVzdCovCiAjZGVmaW5lIEFSNUtfSU1SX1JYRVJSCQkweDAwMDAwMDA0CS8qIFJlY2VpdmUgZXJyb3IqLwogI2RlZmluZSBBUjVLX0lNUl9SWE5PRlJNCTB4MDAwMDAwMDgJLyogTm8gZnJhbWUgcmVjZWl2ZWQgKHJlY2VpdmUgdGltZW91dCkqLwpAQCAtODk1LDcgKzg5NSw3IEBACiAjZGVmaW5lIEFSNUtfUENJQ0ZHX1NMX0lOVEVOCQkweDAwMDAwODAwCS8qIEVuYWJsZSBpbnRlcnJ1cHRzIHdoZW4gYXNsZWVwICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX0xFRF9CQ1RMCQkweDAwMDAxMDAwCS8qIExlZCBibGluayAoPykgWzUyMTBdICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX1JFVFJZX0ZJWAkJMHgwMDAwMTAwMAkvKiBFbmFibGUgcGNpIGNvcmUgcmV0cnkgZml4ICovCi0jZGVmaW5lIEFSNUtfUENJQ0ZHX1NMX0lOUEVOCQkweDAwMDAyMDAwCS8qIFNsZWVwIGV2ZW4gd2hpdGggcGVuZGluZyBpbnRlcnJ1cHRzKi8KKyNkZWZpbmUgQVI1S19QQ0lDRkdfU0xfSU5QRU4JCTB4MDAwMDIwMDAJLyogU2xlZXAgZXZlbiB3aXRoIHBlbmRpbmcgaW50ZXJydXB0cyovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX1NQV1JfRE4JCTB4MDAwMTAwMDAJLyogTWFzayBmb3IgcG93ZXIgc3RhdHVzICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX0xFRE1PREUJCTB4MDAwZTAwMDAJLyogTGVkbW9kZSBbNTIxMStdICovCiAjZGVmaW5lIEFSNUtfUENJQ0ZHX0xFRE1PREVfUFJPUAkweDAwMDAwMDAwCS8qIEJsaW5rIG9uIHN0YW5kYXJkIHRyYWZmaWMgWzUyMTErXSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMKaW5kZXggZmZjZjQ0YS4uMTA2YzBiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jCkBAIC0xNDIsNyArMTQyLDcgQEAKIAogLyoqCiAgKiBhcjUwMDhfaHdfc2V0X2NoYW5uZWwgLSB0dW5lIHRvIGEgY2hhbm5lbCBvbiB0aGUgZXh0ZXJuYWwgQVIyMTMzL0FSNTEzMyByYWRpb3MKLSAqIEBhaDogYXRoZXJvcyBoYXJkd2FyZSBzdHVjdHVyZQorICogQGFoOiBhdGhlcm9zIGhhcmR3YXJlIHN0cnVjdHVyZQogICogQGNoYW46CiAgKgogICogRm9yIHRoZSBleHRlcm5hbCBBUjIxMzMvQVI1MTMzIHJhZGlvcywgdGFrZXMgdGhlIE1IeiBjaGFubmVsIHZhbHVlIGFuZCBzZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jCmluZGV4IDRhOTI3MTguLjZlYWRmOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYwpAQCAtMzI0MCw3ICszMjQwLDcgQEAKIAkJCWVlcCA9IGFyOTAwM19lZXByb21fc3RydWN0X2ZpbmRfYnlfaWQocmVmZXJlbmNlKTsKIAkJCWlmIChlZXAgPT0gTlVMTCkgewogCQkJCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0VFUFJPTSwKLQkJCQkJImNhbnQgZmluZCByZWZlcmVuY2UgZWVwcm9tIHN0cnVjdCAlZFxuIiwKKwkJCQkJImNhbid0IGZpbmQgcmVmZXJlbmNlIGVlcHJvbSBzdHJ1Y3QgJWRcbiIsCiAJCQkJCXJlZmVyZW5jZSk7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMKaW5kZXggYzQxYWI4Yy4uNjJlMTM5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jCkBAIC0zNjAsNyArMzYwLDcgQEAKICAqIEhUQyBNZXNzYWdlcyBhcmUgaGFuZGxlZCBkaXJlY3RseSBoZXJlIGFuZCB0aGUgb2J0YWluZWQgU0tCCiAgKiBpcyBmcmVlZC4KICAqCi0gKiBTZXZpY2UgbWVzc2FnZXMgKERhdGEsIFdNSSkgcGFzc2VkIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgKiBTZXJ2aWNlIG1lc3NhZ2VzIChEYXRhLCBXTUkpIHBhc3NlZCB0byB0aGUgY29ycmVzcG9uZGluZwogICogZW5kcG9pbnQgUlggaGFuZGxlcnMsIHdoaWNoIGhhdmUgdG8gZnJlZSB0aGUgU0tCLgogICovCiB2b2lkIGF0aDlrX2h0Y19yeF9tc2coc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jCmluZGV4IDMzOGIwNzUuLjFlYzliY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9ody5jCkBAIC0yNTQ2LDYgKzI1NDYsNyBAQAogCXsgQVJfU1JFVl9WRVJTSU9OXzkyODcsICAgICAgICAgIjkyODciIH0sCiAJeyBBUl9TUkVWX1ZFUlNJT05fOTI3MSwgICAgICAgICAiOTI3MSIgfSwKIAl7IEFSX1NSRVZfVkVSU0lPTl85MzAwLCAgICAgICAgICI5MzAwIiB9LAorCXsgQVJfU1JFVl9WRVJTSU9OXzk0ODUsICAgICAgICAgIjk0ODUiIH0sCiB9OwogCiAvKiBGb3IgZGV2aWNlcyB3aXRoIGV4dGVybmFsIHJhZGlvcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jCmluZGV4IGU4MzEyOGMuLjljNjU0NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMKQEAgLTQ0LDcgKzQ0LDcgQEAKIAkqY3N6ID0gKGludCl1OHRtcDsKIAogCS8qCi0JICogVGhpcyBjaGVjayB3YXMgcHV0IGluIHRvIGF2b2lkICJ1bnBsZXNhbnQiIGNvbnNlcXVlbmNlcyBpZgorCSAqIFRoaXMgY2hlY2sgd2FzIHB1dCBpbiB0byBhdm9pZCAidW5wbGVhc2FudCIgY29uc2VxdWVuY2VzIGlmCiAJICogdGhlIGJvb3Ryb20gaGFzIG5vdCBmdWxseSBpbml0aWFsaXplZCBhbGwgUENJIGRldmljZXMuCiAJICogU29tZXRpbWVzIHRoZSBjYWNoZSBsaW5lIHNpemUgcmVnaXN0ZXIgaXMgbm90IHNldAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYwppbmRleCBhMzI0MWNkLi40YzBkMzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYwpAQCAtNzkyLDcgKzc5Miw3IEBACiAKIAkJdHhfaW5mby0+ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkU7CiAJfSBlbHNlIHsKLQkJLyogU2V0IHRoZSBjaG9vc2VuIHJhdGUuIE5vIFJUUyBmb3IgZmlyc3Qgc2VyaWVzIGVudHJ5LiAqLworCQkvKiBTZXQgdGhlIGNob3NlbiByYXRlLiBObyBSVFMgZm9yIGZpcnN0IHNlcmllcyBlbnRyeS4gKi8KIAkJYXRoX3JjX3JhdGVfc2V0X3NlcmllcyhyYXRlX3RhYmxlLCAmcmF0ZXNbaSsrXSwgdHhyYywKIAkJCQkgICAgICAgdHJ5X3Blcl9yYXRlLCByaXgsIDApOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCmluZGV4IDI2NzM0ZTUuLjg4ZmE3ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwpAQCAtNjI4LDggKzYyOCw4IEBACiAJCQkJICh1MzIpQVRIX0FNUERVX0xJTUlUX01BWCk7CiAKIAkvKgotCSAqIGgvdyBjYW4gYWNjZXB0IGFnZ3JlZ2F0ZXMgdXB0byAxNiBiaXQgbGVuZ3RocyAoNjU1MzUpLgotCSAqIFRoZSBJRSwgaG93ZXZlciBjYW4gaG9sZCB1cHRvIDY1NTM2LCB3aGljaCBzaG93cyB1cCBoZXJlCisJICogaC93IGNhbiBhY2NlcHQgYWdncmVnYXRlcyB1cCB0byAxNiBiaXQgbGVuZ3RocyAoNjU1MzUpLgorCSAqIFRoZSBJRSwgaG93ZXZlciBjYW4gaG9sZCB1cCB0byA2NTUzNiwgd2hpY2ggc2hvd3MgdXAgaGVyZQogCSAqIGFzIHplcm8uIElnbm9yZSA2NTUzNiBzaW5jZSB3ZSAgYXJlIGNvbnN0cmFpbmVkIGJ5IGh3LgogCSAqLwogCWlmICh0aWQtPmFuLT5tYXhhbXBkdSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9jYXJsOTE3MC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmgKaW5kZXggOWNhZDA2MS4uM2Q0ZWQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmgKQEAgLTE2MSw3ICsxNjEsNyBAQAogICogTmF0dXJhbGx5OiBUaGUgaGlnaGVyIHRoZSBsaW1pdCwgdGhlIGZhc3RlciB0aGUgZGV2aWNlIENBTiBzZW5kLgogICogSG93ZXZlciwgZXZlbiBhIHNsaWdodCBvdmVyLWNvbW1pdG1lbnQgYXQgdGhlIHdyb25nIHRpbWUgYW5kIHRoZQogICogaGFyZHdhcmUgaXMgZG9vbWVkIHRvIHNlbmQgYWxsIGFscmVhZHktcXVldWVkIGZyYW1lcyBhdCBzdWJvcHRpbWFsCi0gKiByYXRlcy4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGFuIGVub3VybW91cyBhbW91bnQgb2YgdW5zdWNjZXNzZnVsCisgKiByYXRlcy4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGFuIGVub3Jtb3VzIGFtb3VudCBvZiB1bnN1Y2Nlc3NmdWwKICAqIHJldHJpZXMgPT4gTGF0ZW5jeSBnb2VzIHVwLCB3aGVyZWFzIHRoZSB0aHJvdWdocHV0IGdvZXMgZG93bi4gQ1JBU0ghCiAgKi8KICNkZWZpbmUgQ0FSTDkxNzBfTlVNX1RYX0xJTUlUX0hBUkQJKChBUjkxNzBfVFhRX0RFUFRIICogMykgLyAyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jCmluZGV4IGI2YjBkZTYuLmI2YWUwZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMKQEAgLTQyNyw3ICs0MjcsNyBAQAogCiAvKgogICogaW5pdGlhbGl6ZSBzb21lIHBoeSByZWdzIGZyb20gZWVwcm9tIHZhbHVlcyBpbiBtb2RhbF9oZWFkZXJbXQotICogYWNjLiB0byBiYW5kIGFuZCBiYW5kd2l0aAorICogYWNjLiB0byBiYW5kIGFuZCBiYW5kd2lkdGgKICAqLwogc3RhdGljIGludCBjYXJsOTE3MF9pbml0X3BoeV9mcm9tX2VlcHJvbShzdHJ1Y3QgYXI5MTcwICphciwKIAkJCQlib29sIGlzXzJnaHosIGJvb2wgaXNfNDBtaHopCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jCmluZGV4IDg0ODY2YTQuLmVjMjFlYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jCkBAIC04NDksNyArODQ5LDcgQEAKIAkJCQkvKgogCQkJCSAqIG5lc3RlZCBjYXJsOTE3MF9yeF9zdHJlYW0gY2FsbCEKIAkJCQkgKgotCQkJCSAqIHRlcm1pbmF0aW9uIGlzIGd1cmFudGVlZCwgZXZlbiB3aGVuIHRoZQorCQkJCSAqIHRlcm1pbmF0aW9uIGlzIGd1YXJhbnRlZWQsIGV2ZW4gd2hlbiB0aGUKIAkJCQkgKiBjb21iaW5lZCBmcmFtZSBhbHNvIGhhdmUgYW4gZWxlbWVudCB3aXRoCiAJCQkJICogYSBiYWQgdGFnLgogCQkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jCmluZGV4IGY4MmM0MDAuLjJmYjUzZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC91c2IuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmMKQEAgLTQzMCw3ICs0MzAsNyBAQAogCQkJICogVGhlIHN5c3RlbSBpcyB0b28gc2xvdyB0byBjb3BlIHdpdGgKIAkJCSAqIHRoZSBlbm9ybW91cyB3b3JrbG9hZC4gV2UgaGF2ZSBzaW1wbHkKIAkJCSAqIHJ1biBvdXQgb2YgYWN0aXZlIHJ4IHVyYnMgYW5kIHRoaXMKLQkJCSAqIHVuZm9ydHVuYXRseSBsZWFkcyB0byBhbiB1bnByZWRpY3RhYmxlCisJCQkgKiB1bmZvcnR1bmF0ZWx5IGxlYWRzIHRvIGFuIHVucHJlZGljdGFibGUKIAkJCSAqIGRldmljZS4KIAkJCSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jCmluZGV4IDE4M2MyODIuLmNjMTFkNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jCkBAIC04Niw3ICs4Niw3IEBACiAgKiBJRlJBTUUtMDE6ICAwMTEwCiAgKgogICogQW4gZWFzeSBleWUtaW5zcGVjaXRvbiBvZiB0aGlzIGFscmVhZHkgc2hvdWxkIHRlbGwgeW91IHRoYXQgdGhpcyBmcmFtZQotICogd2lsbCBub3QgcGFzcyBvdXIgY2hlY2suIFRoaXMgaXMgYmVhY3VzZSB0aGUgYnNzaWRfbWFzayB0ZWxscyB0aGUKKyAqIHdpbGwgbm90IHBhc3Mgb3VyIGNoZWNrLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGJzc2lkX21hc2sgdGVsbHMgdGhlCiAgKiBoYXJkd2FyZSB0byBvbmx5IGxvb2sgYXQgdGhlIHNlY29uZCBsZWFzdCBzaWduaWZpY2FudCBiaXQgYW5kIHRoZQogICogY29tbW9uIGJpdCBhbW9uZ3N0IHRoZSBNQUMgYW5kIEJTU0lEcyBpcyAwLCB0aGlzIGZyYW1lIGhhcyB0aGUgMm5kIExTQgogICogYXMgMSwgd2hpY2ggZG9lcyBub3QgbWF0Y2ggMC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCmluZGV4IGY4MjhmMjkuLjBlMWI4NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYwpAQCAtMjY4LDcgKzI2OCw3IEBACiAJfQogCiAJLyoKLQkgKiBJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjaWV2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKKwkgKiBJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjZWl2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKIAkgKiBjaGFubmVsIGZpcnN0IGJlZm9yZSBlbmFibGluZyBhY3RpdmUgc2Nhbi4gVGhlIHBhc3NpdmUgc2NhbgogCSAqIHdvdWxkIGhhdmUgYmVlbiBlbmZvcmNlZCBieSB0aGUgaW5pdGlhbCBwcm9jZXNzaW5nIG9mIG91cgogCSAqIGN1c3RvbSByZWd1bGF0b3J5IGRvbWFpbi4KQEAgLTQ3Niw3ICs0NzYsNyBAQAogCQl3aXBoeS0+ZmxhZ3MgfD0gV0lQSFlfRkxBR19DVVNUT01fUkVHVUxBVE9SWTsKIAl9IGVsc2UgewogCQkvKgotCQkgKiBUaGlzIGdldHMgYXBwbGllZCBpbiB0aGUgY2FzZSBvZiB0aGUgYWJzZW5zZSBvZiBDUkRBLAorCQkgKiBUaGlzIGdldHMgYXBwbGllZCBpbiB0aGUgY2FzZSBvZiB0aGUgYWJzZW5jZSBvZiBDUkRBLAogCQkgKiBpdCdzIG91ciBvd24gY3VzdG9tIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluLCBzaW1pbGFyIHRvCiAJCSAqIGNmZzgwMjExJ3MgYnV0IHdlIGVuYWJsZSBwYXNzaXZlIHNjYW5uaW5nLgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC5jCmluZGV4IDQ2ZTM4MmUuLjM5YTExZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwuYwpAQCAtNDM5LDcgKzQzOSw3IEBACiB9OwogCiBzdHJ1Y3QgYXRtZWxfcHJpdmF0ZSB7Ci0Jdm9pZCAqY2FyZDsgLyogQnVzIGRlcGVuZGVudCBzdHVjdHVyZSB2YXJpZXMgZm9yIFBDY2FyZCAqLworCXZvaWQgKmNhcmQ7IC8qIEJ1cyBkZXBlbmRlbnQgc3RydWN0dXJlIHZhcmllcyBmb3IgUENjYXJkICovCiAJaW50ICgqcHJlc2VudF9jYWxsYmFjaykodm9pZCAqKTsgLyogQW5kIGNhbGxiYWNrIHdoaWNoIHVzZXMgaXQgKi8KIAljaGFyIGZpcm13YXJlX2lkWzMyXTsKIAlBdG1lbEZXVHlwZSBmaXJtd2FyZV90eXBlOwpAQCAtMzg5NSw3ICszODk1LDcgQEAKIAogCSAgIFRoaXMgcm91dGluZSBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXNpbmcgc29tZQogCSAgIGhhcmR3YXJlLXNwZWNpZmljIGZpZWxkcyBpbiB0aGUgYXRtZWxfcHJpdmF0ZSBzdHJ1Y3R1cmUsCi0JICAgaW5jbHVkaW5nIGEgY29weSBvZiB0aGUgZmlybXdhcmUncyBob3N0aW5mbyBzdHVjdHVyZQorCSAgIGluY2x1ZGluZyBhIGNvcHkgb2YgdGhlIGZpcm13YXJlJ3MgaG9zdGluZm8gc3RydWN0dXJlCiAJICAgd2hpY2ggaXMgdGhlIHJvdXRlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGZpcm13YXJlIGRhdGFzdHJ1Y3R1cmVzLiAqLwogCiAJc3RydWN0IGF0bWVsX3ByaXZhdGUgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWxfY3MuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsX2NzLmMKaW5kZXggYzk2ZTE5ZC4uMDUyNjM1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWxfY3MuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbF9jcy5jCkBAIC05OSw3ICs5OSw3IEBACiB9CiAKIC8qIENhbGwtYmFjayBmdW5jdGlvbiB0byBpbnRlcnJvZ2F0ZSBQQ01DSUEtc3BlY2lmaWMgaW5mb3JtYXRpb24KLSAgIGFib3V0IHRoZSBjdXJyZW50IGV4aXN0YW5jZSBvZiB0aGUgY2FyZCAqLworICAgYWJvdXQgdGhlIGN1cnJlbnQgZXhpc3RlbmNlIG9mIHRoZSBjYXJkICovCiBzdGF0aWMgaW50IGNhcmRfcHJlc2VudCh2b2lkICphcmcpCiB7CiAJc3RydWN0IHBjbWNpYV9kZXZpY2UgKmxpbmsgPSAoc3RydWN0IHBjbWNpYV9kZXZpY2UgKilhcmc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmgKaW5kZXggYmQ0Y2I3NS4uMjI5ZjQzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2I0My5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaApAQCAtNjQ4LDcgKzY0OCw3IEBACiAJY2hhciBlcnJvcnNbQjQzX05SX0ZXVFlQRVNdWzEyOF07CiAJLyogVGVtcG9yYXJ5IGJ1ZmZlciBmb3Igc3RvcmluZyB0aGUgZmlybXdhcmUgbmFtZS4gKi8KIAljaGFyIGZ3bmFtZVs2NF07Ci0JLyogQSBmYXRhbCBlcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcuIEZpcm13YXJlIHJlcWVzdAorCS8qIEEgZmF0YWwgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVxdWVzdGluZy4gRmlybXdhcmUgcmVxZXN0CiAJICogY2FuIG5vdCBjb250aW51ZSwgYXMgYW55IG90aGVyIHJlcWVzdCB3aWxsIGFsc28gZmFpbC4gKi8KIAlpbnQgZmF0YWxfZmFpbHVyZTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZG1hLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZG1hLmMKaW5kZXggM2Q1NTY2ZS4uZmYwZjViYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2RtYS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuYwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAKIAkJZG1hYWRkciA9IG1ldGEtPmRtYWFkZHI7CiAJCWdvdG8gZHJvcF9yZWN5Y2xlX2J1ZmZlcjsKIAl9Ci0JaWYgKHVubGlrZWx5KGxlbiA+IHJpbmctPnJ4X2J1ZmZlcnNpemUpKSB7CisJaWYgKHVubGlrZWx5KGxlbiArIHJpbmctPmZyYW1lb2Zmc2V0ID4gcmluZy0+cnhfYnVmZmVyc2l6ZSkpIHsKIAkJLyogVGhlIGRhdGEgZGlkIG5vdCBmaXQgaW50byBvbmUgZGVzY3JpcHRvciBidWZmZXIKIAkJICogYW5kIGlzIHNwbGl0IG92ZXIgbXVsdGlwbGUgYnVmZmVycy4KIAkJICogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBhcyB3ZSB0cnkgdG8gYWxsb2NhdGUgYnVmZmVycwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2RtYS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2RtYS5oCmluZGV4IGEwMWMyMTAuLmU4YTgwYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZG1hLmgKQEAgLTE2Myw3ICsxNjMsNyBAQAogLyogRE1BIGVuZ2luZSB0dW5pbmcga25vYnMgKi8KICNkZWZpbmUgQjQzX1RYUklOR19TTE9UUwkJMjU2CiAjZGVmaW5lIEI0M19SWFJJTkdfU0xPVFMJCTY0Ci0jZGVmaW5lIEI0M19ETUEwX1JYX0JVRkZFUlNJWkUJCUlFRUU4MDIxMV9NQVhfRlJBTUVfTEVOCisjZGVmaW5lIEI0M19ETUEwX1JYX0JVRkZFUlNJWkUJCShCNDNfRE1BMF9SWF9GUkFNRU9GRlNFVCArIElFRUU4MDIxMV9NQVhfRlJBTUVfTEVOKQogCiAvKiBQb2ludGVyIHBvaXNvbiAqLwogI2RlZmluZSBCNDNfRE1BX1BUUl9QT0lTT04JCSgodm9pZCAqKUVSUl9QVFIoLUVOT01FTSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL21haW4uYwppbmRleCA1N2ViNWI2Li5kNTliMDE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9tYWluLmMKQEAgLTQwMTAsNyArNDAxMCw3IEBACiAJYjQzX21hY19lbmFibGUoZGV2KTsKIAliNDNfd3JpdGUzMihkZXYsIEI0M19NTUlPX0dFTl9JUlFfTUFTSywgZGV2LT5pcnFfbWFzayk7CiAKLQkvKiBTdGFydCBtYWludGFpbmFuY2Ugd29yayAqLworCS8qIFN0YXJ0IG1haW50ZW5hbmNlIHdvcmsgKi8KIAliNDNfcGVyaW9kaWNfdGFza3Nfc2V0dXAoZGV2KTsKIAogCWI0M19sZWRzX2luaXQoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmgKaW5kZXggODU2OWZkZC4uNTQxM2M5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmgKQEAgLTE2NCw3ICsxNjQsNyBAQAogCS8qIEN1cnJlbnQgSW50ZXJmZXJlbmNlIE1pdGlnYXRpb24gbW9kZSAqLwogCWludCBpbnRlcmZtb2RlOwogCS8qIFN0YWNrIG9mIHNhdmVkIHZhbHVlcyBmcm9tIHRoZSBJbnRlcmZlcmVuY2UgTWl0aWdhdGlvbiBjb2RlLgotCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxheWVkIG91dCBhcyBmb2xsb3dzOgorCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxhaWQgb3V0IGFzIGZvbGxvd3M6CiAJICogYml0IDAtMTE6ICBvZmZzZXQKIAkgKiBiaXQgMTItMTU6IHJlZ2lzdGVyIElECiAJICogYml0IDE2LTMyOiB2YWx1ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9uLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaAppbmRleCAwMDFlODQxLi5lNzg5YTg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaApAQCAtNzAzLDcgKzcwMyw3IEBACiAjZGVmaW5lIEI0M19OUEhZX0NIQU5fRVNUSEFORwkJCUI0M19QSFlfTigweDIxRCkgLyogQ2hhbm5lbCBlc3RpbWF0ZSBoYW5nICovCiAjZGVmaW5lIEI0M19OUEhZX0ZJTkVSWDJfQ0dDCQkJQjQzX1BIWV9OKDB4MjIxKSAvKiBGaW5lIFJYIDIgY2xvY2sgZ2F0ZSBjb250cm9sICovCiAjZGVmaW5lICBCNDNfTlBIWV9GSU5FUlgyX0NHQ19ERUNHQwkJMHgwMDA4IC8qIERlY29kZSBnYXRlZCBjbG9ja3MgKi8KLSNkZWZpbmUgQjQzX05QSFlfVFhQQ1RMX0lOSVQJCQlCNDNfUEhZX04oMHgyMjIpIC8qIFRYIHBvd2VyIGNvbnRyb2xsIGluaXQgKi8KKyNkZWZpbmUgQjQzX05QSFlfVFhQQ1RMX0lOSVQJCQlCNDNfUEhZX04oMHgyMjIpIC8qIFRYIHBvd2VyIGNvbnRyb2wgaW5pdCAqLwogI2RlZmluZSAgQjQzX05QSFlfVFhQQ1RMX0lOSVRfUElEWEkxCQkweDAwRkYgLyogUG93ZXIgaW5kZXggaW5pdCAxICovCiAjZGVmaW5lICBCNDNfTlBIWV9UWFBDVExfSU5JVF9QSURYSTFfU0hJRlQJMAogI2RlZmluZSBCNDNfTlBIWV9QQVBEX0VOMAkJCUI0M19QSFlfTigweDI5NykgLyogUEFQRCBFbmFibGUwIFRCRCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2I0M2xlZ2FjeS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2I0M2xlZ2FjeS5oCmluZGV4IGM4MWIyZjUuLjIzNTgzYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9iNDNsZWdhY3kuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvYjQzbGVnYWN5LmgKQEAgLTQ4OCw3ICs0ODgsNyBAQAogCS8qIEN1cnJlbnQgSW50ZXJmZXJlbmNlIE1pdGlnYXRpb24gbW9kZSAqLwogCWludCBpbnRlcmZtb2RlOwogCS8qIFN0YWNrIG9mIHNhdmVkIHZhbHVlcyBmcm9tIHRoZSBJbnRlcmZlcmVuY2UgTWl0aWdhdGlvbiBjb2RlLgotCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxheWVkIG91dCBhcyBmb2xsb3dzOgorCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxhaWQgb3V0IGFzIGZvbGxvd3M6CiAJICogYml0IDAtMTE6ICBvZmZzZXQKIAkgKiBiaXQgMTItMTU6IHJlZ2lzdGVyIElECiAJICogYml0IDE2LTMyOiB2YWx1ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5jCmluZGV4IDE4ZDYzZjUuLjNkMDVkYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmMKQEAgLTIzNTksNyArMjM1OSw3IEBACiB9CiAKIAotLyogVHJhbnNsYXRlIG91ciBsaXN0IG9mIEFjY2VzcyBQb2ludHMgJiBTdGF0aW9ucyB0byBhIGNhcmQgaW5kZXBlbmRhbnQKKy8qIFRyYW5zbGF0ZSBvdXIgbGlzdCBvZiBBY2Nlc3MgUG9pbnRzICYgU3RhdGlvbnMgdG8gYSBjYXJkIGluZGVwZW5kZW50CiAgKiBmb3JtYXQgdGhhdCB0aGUgV2lyZWxlc3MgVG9vbHMgd2lsbCB1bmRlcnN0YW5kIC0gSmVhbiBJSSAqLwogaW50IHByaXNtMl9hcF90cmFuc2xhdGVfc2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLCBjaGFyICpidWZmZXIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmgKaW5kZXggNjU1Y2VlYi4uMzM0ZTJkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuaApAQCAtMTE0LDcgKzExNCw3IEBACiAgKiBoYXMgcGFzc2VkIHNpbmNlIGxhc3QgcmVjZWl2ZWQgZnJhbWUgZnJvbSB0aGUgc3RhdGlvbiwgYSBudWxsZnVuYyBkYXRhCiAgKiBmcmFtZSBpcyBzZW50IHRvIHRoZSBzdGF0aW9uLiBJZiB0aGlzIGZyYW1lIGlzIG5vdCBhY2tub3dsZWRnZWQgYW5kIG5vIG90aGVyCiAgKiBmcmFtZXMgaGF2ZSBiZWVuIHJlY2VpdmVkLCB0aGUgc3RhdGlvbiB3aWxsIGJlIGRpc2Fzc29jaWF0ZWQgYWZ0ZXIKLSAqIEFQX0RJU0FTU09DX0RFTEFZLiBTaW1pbGFyaWx5LCBhIHRoZSBzdGF0aW9uIHdpbGwgYmUgZGVhdXRoZW50aWNhdGVkIGFmdGVyCisgKiBBUF9ESVNBU1NPQ19ERUxBWS4gU2ltaWxhcmx5LCBhIHRoZSBzdGF0aW9uIHdpbGwgYmUgZGVhdXRoZW50aWNhdGVkIGFmdGVyCiAgKiBBUF9ERUFVVEhfREVMQVkuIEFQX1RJTUVPVVRfUkVTT0xVVElPTiBpcyB0aGUgcmVzb2x1dGlvbiB0aGF0IGlzIHVzZWQgd2l0aAogICogbWF4IGluYWN0aXZpdHkgdGltZXIuICovCiAjZGVmaW5lIEFQX01BWF9JTkFDVElWSVRZX1NFQyAoNSAqIDYwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9pb2N0bC5jCmluZGV4IDYwMzg2MzMuLjEyZGU0NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfaW9jdGwuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2lvY3RsLmMKQEAgLTE5NDUsNyArMTk0NSw3IEBACiB9CiAKIAotLyogVHJhbnNsYXRlIHNjYW4gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBjYXJkIHRvIGEgY2FyZCBpbmRlcGVuZGFudAorLyogVHJhbnNsYXRlIHNjYW4gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBjYXJkIHRvIGEgY2FyZCBpbmRlcGVuZGVudAogICogZm9ybWF0IHRoYXQgdGhlIFdpcmVsZXNzIFRvb2xzIHdpbGwgdW5kZXJzdGFuZCAtIEplYW4gSUkgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHByaXNtMl90cmFuc2xhdGVfc2Nhbihsb2NhbF9pbmZvX3QgKmxvY2FsLAogCQkJCQlzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLApAQCAtMjA0Myw3ICsyMDQzLDcgQEAKIAkJICogdW50aWwgcmVzdWx0cyBhcmUgcmVhZHkgZm9yIHZhcmlvdXMgcmVhc29ucy4KIAkJICogRmlyc3QsIG1hbmFnaW5nIHdhaXQgcXVldWVzIGlzIGNvbXBsZXggYW5kIHJhY3kKIAkJICogKHRoZXJlIG1heSBiZSBtdWx0aXBsZSBzaW11bHRhbmVvdXMgY2FsbGVycykuCi0JCSAqIFNlY29uZCwgd2UgZ3JhYiBzb21lIHJ0bmV0bGluayBsb2NrIGJlZm9yZSBjb21taW5nCisJCSAqIFNlY29uZCwgd2UgZ3JhYiBzb21lIHJ0bmV0bGluayBsb2NrIGJlZm9yZSBjb21pbmcKIAkJICogaGVyZSAoaW4gZGV2X2lvY3RsKCkpLgogCQkgKiBUaGlyZCwgdGhlIGNhbGxlciBjYW4gd2FpdCBvbiB0aGUgV2lyZWxlc3MgRXZlbnQKIAkJICogLSBKZWFuIElJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX3dsYW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfd2xhbi5oCmluZGV4IDFjNjZiM2MuLjg4ZGM2YTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX3dsYW4uaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX3dsYW4uaApAQCAtODUzLDcgKzg1Myw3IEBACiAJc3RydWN0IHdvcmtfc3RydWN0IGNvbW1zX3F1YWxfdXBkYXRlOwogCiAJLyogUlNTSSB0byBkQm0gYWRqdXN0bWVudCAoZm9yIFJYIGRlc2NyaXB0b3IgZmllbGRzKSAqLwotCWludCByc3NpX3RvX2RCbTsgLyogc3Vic3RyYWN0IGZyb20gUlNTSSB0byBnZXQgYXBwcm94aW1hdGUgZEJtIHZhbHVlICovCisJaW50IHJzc2lfdG9fZEJtOyAvKiBzdWJ0cmFjdCBmcm9tIFJTU0kgdG8gZ2V0IGFwcHJveGltYXRlIGRCbSB2YWx1ZSAqLwogCiAJLyogQlNTIGxpc3QgLyBwcm90ZWN0ZWQgYnkgbG9jYWwtPmxvY2sgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGJzc19saXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMTAwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIxMDAuYwppbmRleCA0Yjk3ZjkxLi40NDMwNzc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIxMDAuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIxMDAuYwpAQCAtNjMsNyArNjMsNyBAQAogZmlybXdhcmUgaWYgYSBDb21tYW5kIG9yIERhdGEgaXMgYmVpbmcgc2VudC4gIElmIGl0IGlzIENvbW1hbmQsIGFsbCBvZiB0aGUKIGNvbW1hbmQgaW5mb3JtYXRpb24gaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgcGh5c2ljYWwgYWRkcmVzcyByZWZlcnJlZCB0byBieSB0aGUKIFRCRC4gIElmIGl0IGlzIERhdGEsIHRoZSBmaXJzdCBUQkQgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIGRhdGEgcGFja2V0LCBudW1iZXIKLW9mIGZyYWdtZW50cywgZXRjLiAgVGhlIG5leHQgVEJEIHRoZW4gcmVmZXJycyB0byB0aGUgYWN0dWFsIHBhY2tldCBsb2NhdGlvbi4KK29mIGZyYWdtZW50cywgZXRjLiAgVGhlIG5leHQgVEJEIHRoZW4gcmVmZXJzIHRvIHRoZSBhY3R1YWwgcGFja2V0IGxvY2F0aW9uLgogCiBUaGUgVHggZmxvdyBjeWNsZSBpcyBhcyBmb2xsb3dzOgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIyMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjIwMC5jCmluZGV4IDE2MDg4MWYuLjQyYzNmZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjIwMC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjIwMC5jCkBAIC0xMTgxLDcgKzExODEsNyBAQAogLyoKICAqIFRoZSBmb2xsb3dpbmcgYWRkcyBhIG5ldyBhdHRyaWJ1dGUgdG8gdGhlIHN5c2ZzIHJlcHJlc2VudGF0aW9uCiAgKiBvZiB0aGlzIGRldmljZSBkcml2ZXIgKGkuZS4gYSBuZXcgZmlsZSBpbiAvc3lzL2J1cy9wY2kvZHJpdmVycy9pcHcvKQotICogdXNlZCBmb3IgY29udHJvbGluZyB0aGUgZGVidWcgbGV2ZWwuCisgKiB1c2VkIGZvciBjb250cm9sbGluZyB0aGUgZGVidWcgbGV2ZWwuCiAgKgogICogU2VlIHRoZSBsZXZlbCBkZWZpbml0aW9ucyBpbiBpcHcgZm9yIGRldGFpbHMuCiAgKi8KQEAgLTM3NjMsNyArMzc2Myw3IEBACiAKIAlxLT50eGIgPSBrbWFsbG9jKHNpemVvZihxLT50eGJbMF0pICogY291bnQsIEdGUF9LRVJORUwpOwogCWlmICghcS0+dHhiKSB7Ci0JCUlQV19FUlJPUigidm1hbGxvYyBmb3IgYXV4aWxhcnkgQkQgc3RydWN0dXJlcyBmYWlsZWRcbiIpOworCQlJUFdfRVJST1IoInZtYWxsb2MgZm9yIGF1eGlsaWFyeSBCRCBzdHJ1Y3R1cmVzIGZhaWxlZFxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApAQCAtNTU4MSw3ICs1NTgxLDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JLyogVmVyaWZ5IHByaXZhY3kgY29tcGF0YWJpbGl0eSAqLworCS8qIFZlcmlmeSBwcml2YWN5IGNvbXBhdGliaWxpdHkgKi8KIAlpZiAoKChwcml2LT5jYXBhYmlsaXR5ICYgQ0FQX1BSSVZBQ1lfT04pID8gMSA6IDApICE9CiAJICAgICgobmV0d29yay0+Y2FwYWJpbGl0eSAmIFdMQU5fQ0FQQUJJTElUWV9QUklWQUNZKSA/IDEgOiAwKSkgewogCQlJUFdfREVCVUdfTUVSR0UoIk5ldHdvcmsgJyVzICglcE0pJyBleGNsdWRlZCAiCkBAIC01ODA4LDcgKzU4MDgsNyBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQkvKiBWZXJpZnkgcHJpdmFjeSBjb21wYXRhYmlsaXR5ICovCisJLyogVmVyaWZ5IHByaXZhY3kgY29tcGF0aWJpbGl0eSAqLwogCWlmICgoKHByaXYtPmNhcGFiaWxpdHkgJiBDQVBfUFJJVkFDWV9PTikgPyAxIDogMCkgIT0KIAkgICAgKChuZXR3b3JrLT5jYXBhYmlsaXR5ICYgV0xBTl9DQVBBQklMSVRZX1BSSVZBQ1kpID8gMSA6IDApKSB7CiAJCUlQV19ERUJVR19BU1NPQygiTmV0d29yayAnJXMgKCVwTSknIGV4Y2x1ZGVkICIKQEAgLTgxODQsNyArODE4NCw3IEBACiBzdGF0aWMgaW50IGlzX25ldHdvcmtfcGFja2V0KHN0cnVjdCBpcHdfcHJpdiAqcHJpdiwKIAkJCQkgICAgc3RydWN0IGxpYmlwd19oZHJfNGFkZHIgKmhlYWRlcikKIHsKLQkvKiBGaWx0ZXIgaW5jb21pbmcgcGFja2V0cyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgdGFyZ2V0dGVkIHRvd2FyZAorCS8qIEZpbHRlciBpbmNvbWluZyBwYWNrZXRzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSB0YXJnZXRlZCB0b3dhcmQKIAkgKiB0aGlzIG5ldHdvcmssIGRpc2NhcmRpbmcgcGFja2V0cyBjb21pbmcgZnJvbSBvdXJzZWx2ZXMgKi8KIAlzd2l0Y2ggKHByaXYtPmllZWUtPml3X21vZGUpIHsKIAljYXNlIElXX01PREVfQURIT0M6CS8qIEhlYWRlcjogRGVzdC4gfCBTb3VyY2UgICAgfCBCU1NJRCAqLwpAQCAtODM0MCw5ICs4MzQwLDkgQEAKIH0KIAogLyoKLSAqIE1haW4gZW50cnkgZnVuY3Rpb24gZm9yIHJlY2lldmluZyBhIHBhY2tldCB3aXRoIDgwMjExIGhlYWRlcnMuICBUaGlzCisgKiBNYWluIGVudHJ5IGZ1bmN0aW9uIGZvciByZWNlaXZpbmcgYSBwYWNrZXQgd2l0aCA4MDIxMSBoZWFkZXJzLiAgVGhpcwogICogc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGV2ZXIgdGhlIEZXIGhhcyBub3RpZmllZCB1cyB0aGF0IHRoZXJlIGlzIGEgbmV3Ci0gKiBza2IgaW4gdGhlIHJlY2lldmUgcXVldWUuCisgKiBza2IgaW4gdGhlIHJlY2VpdmUgcXVldWUuCiAgKi8KIHN0YXRpYyB2b2lkIGlwd19yeChzdHJ1Y3QgaXB3X3ByaXYgKnByaXYpCiB7CkBAIC04NjgzLDcgKzg2ODMsNyBAQAogICogZnVuY3Rpb25zIGRlZmluZWQgaW4gaXB3X21haW4gdG8gcHJvdmlkZSB0aGUgSFcgaW50ZXJhY3Rpb24uCiAgKgogICogVGhlIGV4Y2VwdGlvbiB0byB0aGlzIGlzIHRoZSB1c2Ugb2YgdGhlIGlwd19nZXRfb3JkaW5hbCgpCi0gKiBmdW5jdGlvbiB1c2VkIHRvIHBvbGwgdGhlIGhhcmR3YXJlIHZzLiBtYWtpbmcgdW5lY2Vzc2FyeSBjYWxscy4KKyAqIGZ1bmN0aW9uIHVzZWQgdG8gcG9sbCB0aGUgaGFyZHdhcmUgdnMuIG1ha2luZyB1bm5lY2Vzc2FyeSBjYWxscy4KICAqCiAgKi8KIApAQCAtMTA0MTksNyArMTA0MTksNyBAQAogCiAJbWVtc2V0KCZkdW1teXN0YXRzLCAwLCBzaXplb2YoZHVtbXlzdGF0cykpOwogCi0JLyogRmlsdGVyaW5nIG9mIGZyYWdtZW50IGNoYWlucyBpcyBkb25lIGFnYWlucyB0aGUgZmlyc3QgZnJhZ21lbnQgKi8KKwkvKiBGaWx0ZXJpbmcgb2YgZnJhZ21lbnQgY2hhaW5zIGlzIGRvbmUgYWdhaW5zdCB0aGUgZmlyc3QgZnJhZ21lbnQgKi8KIAloZHIgPSAodm9pZCAqKXR4Yi0+ZnJhZ21lbnRzWzBdLT5kYXRhOwogCWlmIChsaWJpcHdfaXNfbWFuYWdlbWVudChsZTE2X3RvX2NwdShoZHItPmZyYW1lX2NvbnRyb2wpKSkgewogCQlpZiAoZmlsdGVyICYgSVBXX1BST01fTk9fTUdNVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvbGliaXB3X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2xpYmlwd19yeC5jCmluZGV4IDBkZTFiMTguLmU1YWQ3NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvbGliaXB3X3J4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9saWJpcHdfcnguYwpAQCAtOTI1LDcgKzkyNSw3IEBACiBzdGF0aWMgdTggcW9zX291aVtRT1NfT1VJX0xFTl0gPSB7IDB4MDAsIDB4NTAsIDB4RjIgfTsKIAogLyoKLSogTWFrZSB0aGVyIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgaGFzCisqIE1ha2UgdGhlIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgdG8gaGF2ZQogKiB0aGUgcmlnaHQgdmFsdWVzCiAqLwogc3RhdGljIGludCBsaWJpcHdfdmVyaWZ5X3Fvc19pbmZvKHN0cnVjdCBsaWJpcHdfcW9zX2luZm9ybWF0aW9uX2VsZW1lbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtY29yZS5jCmluZGV4IGEyMDlhMGUuLjcwMDdkNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1jb3JlLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWNvcmUuYwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAKIAkvKgogCSAqIEVuYWJsZSBIQVAgSU5UQSAoaW50ZXJydXB0IGZyb20gbWFuYWdlbWVudCBidXMpIHRvCiAJICogd2FrZSBkZXZpY2UncyBQQ0kgRXhwcmVzcyBsaW5rIEwxYSAtPiBMMHMKLQkgKiBOT1RFOiAgVGhpcyBpcyBuby1vcCBmb3IgMzk0NSAobm9uLWV4aXN0YW50IGJpdCkKKwkgKiBOT1RFOiAgVGhpcyBpcyBuby1vcCBmb3IgMzk0NSAobm9uLWV4aXN0ZW50IGJpdCkKIAkgKi8KIAlpd2xfbGVnYWN5X3NldF9iaXQocHJpdiwgQ1NSX0hXX0lGX0NPTkZJR19SRUcsCiAJCQkJICAgIENTUl9IV19JRl9DT05GSUdfUkVHX0JJVF9IQVBfV0FLRV9MMUEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWZoLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtZmguaAppbmRleCA0ZTIwYzdlLi42ZTYwOTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtZmguaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtZmguaApAQCAtNDM2LDcgKzQzNiw3IEBACiAgKiBAZmluaXNoZWRfcmJfbnVtIFswOjExXSAtIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgUkIKICAqIAlpbiB3aGljaCB0aGUgbGFzdCBmcmFtZSB3YXMgd3JpdHRlbiB0bwogICogQGZpbmlzaGVkX2ZyX251bSBbMDoxMV0gLSBJbmRpY2F0ZXMgdGhlIGluZGV4IG9mIHRoZSBSWCBGcmFtZQotICogCXdoaWNoIHdhcyB0cmFuc2ZlcmVkCisgKiAJd2hpY2ggd2FzIHRyYW5zZmVycmVkCiAgKi8KIHN0cnVjdCBpd2xfcmJfc3RhdHVzIHsKIAlfX2xlMTYgY2xvc2VkX3JiX251bTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc2Nhbi5jCmluZGV4IDYwZjU5N2YuLjM1MzIzNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXNjYW4uYwpAQCAtMTQzLDcgKzE0Myw3IEBACiAJCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTZW5kIHNjYW4gYWJvcnQgZmFpbGVkICVkXG4iLCByZXQpOwogCQlpd2xfbGVnYWN5X2ZvcmNlX3NjYW5fZW5kKHByaXYpOwogCX0gZWxzZQotCQlJV0xfREVCVUdfU0NBTihwcml2LCAiU3VjZXNzZnVsbHkgc2VuZCBzY2FuIGFib3J0XG4iKTsKKwkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlN1Y2Nlc3NmdWxseSBzZW5kIHNjYW4gYWJvcnRcbiIpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zdGEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zdGEuYwppbmRleCA0N2M5ZGEzLi42NmYwZmIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc3RhLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXN0YS5jCkBAIC0xMTAsNyArMTEwLDcgQEAKIAkvKgogCSAqIFhYWDogVGhlIE1BQyBhZGRyZXNzIGluIHRoZSBjb21tYW5kIGJ1ZmZlciBpcyBvZnRlbiBjaGFuZ2VkIGZyb20KIAkgKiB0aGUgb3JpZ2luYWwgc2VudCB0byB0aGUgZGV2aWNlLiBUaGF0IGlzLCB0aGUgTUFDIGFkZHJlc3MKLQkgKiB3cml0dGVuIHRvIHRoZSBjb21tYW5kIGJ1ZmZlciBvZnRlbiBpcyBub3QgdGhlIHNhbWUgTUFDIGFkcmVzcworCSAqIHdyaXR0ZW4gdG8gdGhlIGNvbW1hbmQgYnVmZmVyIG9mdGVuIGlzIG5vdCB0aGUgc2FtZSBNQUMgYWRkcmVzcwogCSAqIHJlYWQgZnJvbSB0aGUgY29tbWFuZCBidWZmZXIgd2hlbiB0aGUgY29tbWFuZCByZXR1cm5zLiBUaGlzCiAJICogaXNzdWUgaGFzIG5vdCB5ZXQgYmVlbiByZXNvbHZlZCBhbmQgdGhpcyBkZWJ1Z2dpbmcgaXMgbGVmdCB0bwogCSAqIG9ic2VydmUgdGhlIHByb2JsZW0uCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24taWN0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24taWN0LmMKaW5kZXggYjVjYjNiZS4uZWQwMTQ4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtYWduLWljdC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWFnbi1pY3QuYwpAQCAtNjksNyArNjksNyBAQAogCWlmICghcHJpdi0+X2Fnbi5pY3RfdGJsX3ZpcikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQkvKiBhbGlnbiB0YWJsZSB0byBQQUdFX1NJWkUgYm91bmRyeSAqLworCS8qIGFsaWduIHRhYmxlIHRvIFBBR0VfU0laRSBib3VuZGFyeSAqLwogCXByaXYtPl9hZ24uYWxpZ25lZF9pY3RfdGJsX2RtYSA9IEFMSUdOKHByaXYtPl9hZ24uaWN0X3RibF9kbWEsIFBBR0VfU0laRSk7CiAKIAlJV0xfREVCVUdfSVNSKHByaXYsICJpY3QgZG1hIGFkZHIgJUx4IGRtYSBhbGlnbmVkICVMeCBkaWZmICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29yZS5jCmluZGV4IDZjMzBmYTYuLmJhZmJlNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWNvcmUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1jb3JlLmMKQEAgLTEwNDAsNyArMTA0MCw3IEBACiAJLyoKIAkgKiBFbmFibGUgSEFQIElOVEEgKGludGVycnVwdCBmcm9tIG1hbmFnZW1lbnQgYnVzKSB0bwogCSAqIHdha2UgZGV2aWNlJ3MgUENJIEV4cHJlc3MgbGluayBMMWEgLT4gTDBzCi0JICogTk9URTogIFRoaXMgaXMgbm8tb3AgZm9yIDM5NDUgKG5vbi1leGlzdGFudCBiaXQpCisJICogTk9URTogIFRoaXMgaXMgbm8tb3AgZm9yIDM5NDUgKG5vbi1leGlzdGVudCBiaXQpCiAJICovCiAJaXdsX3NldF9iaXQocHJpdiwgQ1NSX0hXX0lGX0NPTkZJR19SRUcsCiAJCQkJICAgIENTUl9IV19JRl9DT05GSUdfUkVHX0JJVF9IQVBfV0FLRV9MMUEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtZWVwcm9tLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1lZXByb20uaAppbmRleCA5OGFhOGFmLi4yMGI2NjQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1lZXByb20uaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1lZXByb20uaApAQCAtMjQxLDcgKzI0MSw3IEBACiAKIC8qIDZ4MDAgU3BlY2lmaWMgKi8KICNkZWZpbmUgRUVQUk9NXzYwMDBfVFhfUE9XRVJfVkVSU0lPTiAgICAoNCkKLSNkZWZpbmUgRUVQUk9NXzYwMDBfRUVQUk9NX1ZFUlNJT04JKDB4NDM0KQorI2RlZmluZSBFRVBST01fNjAwMF9FRVBST01fVkVSU0lPTgkoMHg0MjMpCiAKIC8qIDZ4NTAgU3BlY2lmaWMgKi8KICNkZWZpbmUgRUVQUk9NXzYwNTBfVFhfUE9XRVJfVkVSU0lPTiAgICAoNCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWZoLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1maC5oCmluZGV4IDU1YjgzNzAuLjQ3NDAwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWZoLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtZmguaApAQCAtNDM2LDcgKzQzNiw3IEBACiAgKiBAZmluaXNoZWRfcmJfbnVtIFswOjExXSAtIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgUkIKICAqIAlpbiB3aGljaCB0aGUgbGFzdCBmcmFtZSB3YXMgd3JpdHRlbiB0bwogICogQGZpbmlzaGVkX2ZyX251bSBbMDoxMV0gLSBJbmRpY2F0ZXMgdGhlIGluZGV4IG9mIHRoZSBSWCBGcmFtZQotICogCXdoaWNoIHdhcyB0cmFuc2ZlcmVkCisgKiAJd2hpY2ggd2FzIHRyYW5zZmVycmVkCiAgKi8KIHN0cnVjdCBpd2xfcmJfc3RhdHVzIHsKIAlfX2xlMTYgY2xvc2VkX3JiX251bTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXNjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXNjYW4uYwppbmRleCAzYTRkOWU2Li45MTRjNzdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc2Nhbi5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIAkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlNlbmQgc2NhbiBhYm9ydCBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCWl3bF9mb3JjZV9zY2FuX2VuZChwcml2KTsKIAl9IGVsc2UKLQkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlN1Y2Vzc2Z1bGx5IHNlbmQgc2NhbiBhYm9ydFxuIik7CisJCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTdWNjZXNzZnVsbHkgc2VuZCBzY2FuIGFib3J0XG4iKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvaGFsLmMKaW5kZXggOTA3YWM4OS4uMWNhYmNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdtYzMyMDB3aWZpL2hhbC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS9oYWwuYwpAQCAtNTcsNyArNTcsNyBAQAogICogICBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGUgaG9zdCB0YWxrcyBleGNsdXNpdmVseQogICogICB0byB0aGUgVU1BQyBhbmQgc28gdGhlcmUgbmVlZHMgdG8gYmUgYSBzcGVjaWFsIFVNQUMKICAqICAgY29tbWFuZCBmb3IgdGFsa2luZyB0byB0aGUgTE1BQy4KLSAqICAgVGhpcyBpcyBob3cgYSB3aWZpIGNvbW1hbmQgaXMgbGF5ZWQgb3V0OgorICogICBUaGlzIGlzIGhvdyBhIHdpZmkgY29tbWFuZCBpcyBsYWlkIG91dDoKICAqICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogICB8IGl3bV91ZG1hX291dF93aWZpX2hkciAgfAogICogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03Miw3ICs3Miw3IEBACiAgKiAgIFRob3NlIGNvbW1hbmRzIGFyZSBoYW5kbGVkIGJ5IHRoZSBkZXZpY2UncyBib290cm9tLAogICogICBhbmQgYXJlIHR5cGljYWxseSBzZW50IHdoZW4gdGhlIFVNQUMgYW5kIHRoZSBMTUFDCiAgKiAgIGFyZSBub3QgeWV0IGF2YWlsYWJsZS4KLSAqICAgICogICBUaGlzIGlzIGhvdyBhIG5vbi13aWZpIGNvbW1hbmQgaXMgbGF5ZWQgb3V0OgorICogICAgKiAgIFRoaXMgaXMgaG93IGEgbm9uLXdpZmkgY29tbWFuZCBpcyBsYWlkIG91dDoKICAqICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogICB8IGl3bV91ZG1hX291dF9ub253aWZpX2hkciAgfAogICogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS90eC5jCmluZGV4IDMyMTY2MjEuLmJlOTgwNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS90eC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS90eC5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIAlzcGluX2xvY2soJml3bS0+dHhfY3JlZGl0LmxvY2spOwogCiAJaWYgKCFpd21fdHhfY3JlZGl0X29rKGl3bSwgaWQsIG5iKSkgewotCQlJV01fREJHX1RYKGl3bSwgREJHLCAiTm8gY3JlZGl0IGF2YWxpYWJsZSBmb3IgcG9vbFslZF1cbiIsIGlkKTsKKwkJSVdNX0RCR19UWChpd20sIERCRywgIk5vIGNyZWRpdCBhdmFpbGFibGUgZm9yIHBvb2xbJWRdXG4iLCBpZCk7CiAJCXJldCA9IC1FTk9TUEM7CiAJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRQppbmRleCA2MGZkMWFmLi4xNDUzZWVjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvUkVBRE1FCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRQpAQCAtNzAsNyArNzAsNyBAQAogCVRoZXNlIGNvbW1hbmRzIGFyZSB1c2VkIHRvIHJlYWQgdGhlIE1BQywgQkJQIGFuZCBSRiByZWdpc3RlcnMgZnJvbSB0aGUKIAljYXJkLiAgVGhlc2UgY29tbWFuZHMgdGFrZSBvbmUgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBvZmZzZXQKIAlsb2NhdGlvbiB0aGF0IGlzIHRvIGJlIHJlYWQuICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCBpbgotCWhleGFkZWNpbWFsIChpdHMgcG9zc2libGUgdG8gcHJlY2VlZCBwcmVjZWRpbmcgdGhlIG51bWJlciB3aXRoIGEgIjB4IikuCisJaGV4YWRlY2ltYWwgKGl0cyBwb3NzaWJsZSB0byBwcmVjZWRlIHByZWNlZGluZyB0aGUgbnVtYmVyIHdpdGggYSAiMHgiKS4KIAogCVBhdGg6IC9zeXMva2VybmVsL2RlYnVnL2xpYmVydGFzX3dpcmVsZXNzL2V0aFgvcmVnaXN0ZXJzLwogCkBAIC04NCw3ICs4NCw3IEBACiAJVGhlc2UgY29tbWFuZHMgYXJlIHVzZWQgdG8gd3JpdGUgdGhlIE1BQywgQkJQIGFuZCBSRiByZWdpc3RlcnMgaW4gdGhlCiAJY2FyZC4gIFRoZXNlIGNvbW1hbmRzIHRha2UgdHdvIHBhcmFtZXRlcnMgdGhhdCBzcGVjaWZ5IHRoZSBvZmZzZXQKIAlsb2NhdGlvbiBhbmQgdGhlIHZhbHVlIHRoYXQgaXMgdG8gYmUgd3JpdHRlbi4gVGhpcyBwYXJhbWV0ZXJzIG11c3QKLQliZSBzcGVjaWZpZWQgaW4gaGV4YWRlY2ltYWwgKGl0cyBwb3NzaWJsZSB0byBwcmVjZWVkIHRoZSBudW1iZXIKKwliZSBzcGVjaWZpZWQgaW4gaGV4YWRlY2ltYWwgKGl0cyBwb3NzaWJsZSB0byBwcmVjZWRlIHRoZSBudW1iZXIKIAl3aXRoIGEgIjB4IikuCiAKIAlVc2FnZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NmZy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY2ZnLmMKaW5kZXggMzBlZjAzNS4uNWNhYTJhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY2ZnLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvY2ZnLmMKQEAgLTEzNTAsNyArMTM1MCw3IEBACiAJCSAqIHdlIHJlbW92ZSBhbGwga2V5cyBsaWtlIGluIHRoZSBXUEEvV1BBMiBzZXR1cCwKIAkJICogd2UganVzdCBkb24ndCBzZXQgUlNOLgogCQkgKgotCQkgKiBUaGVyZWZvcmU6IGZhbGwtdGhyb3VnaHQKKwkJICogVGhlcmVmb3JlOiBmYWxsLXRocm91Z2gKIAkJICovCiAJY2FzZSBXTEFOX0NJUEhFUl9TVUlURV9US0lQOgogCWNhc2UgV0xBTl9DSVBIRVJfU1VJVEVfQ0NNUDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX2NzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9jcy5jCmluZGV4IGZjODEyMTEuLjg3MTJjYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX2NzLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfY3MuYwpAQCAtOTEzLDcgKzkxMyw3IEBACiAJCWdvdG8gb3V0MzsKIAl9CiAKLQkvKiBDbGVhciBhbnkgaW50ZXJydXB0IGNhdXNlIHRoYXQgaGFwcGVuZCB3aGlsZSBzZW5kaW5nCisJLyogQ2xlYXIgYW55IGludGVycnVwdCBjYXVzZSB0aGF0IGhhcHBlbmVkIHdoaWxlIHNlbmRpbmcKIAkgKiBmaXJtd2FyZS9pbml0aWFsaXppbmcgY2FyZCAqLwogCWlmX2NzX3dyaXRlMTYoY2FyZCwgSUZfQ1NfQ0FSRF9JTlRfQ0FVU0UsIElGX0NTX0JJVF9NQVNLKTsKIAlpZl9jc19lbmFibGVfaW50cyhjYXJkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX3NwaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc3BpLmgKaW5kZXggOGIxNDE3ZC4uZDJhYzFkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc3BpLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfc3BpLmgKQEAgLTY2LDcgKzY2LDcgQEAKICNkZWZpbmUgSUZfU1BJX0hPU1RfSU5UX0NUUkxfUkVHIDB4NDAJLyogSG9zdCBpbnRlcnJ1cHQgY29udHJvbGxlciByZWcgKi8KIAogI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfQ0FVU0VfUkVHIDB4NDQJLyogQ2FyZCBpbnRlcnJ1cHQgY2F1c2UgcmVnICovCi0jZGVmaW5lIElGX1NQSV9DQVJEX0lOVF9TVEFUVVNfUkVHIDB4NDggLyogQ2FyZCBpbnRlcnVwdCBzdGF0dXMgcmVnICovCisjZGVmaW5lIElGX1NQSV9DQVJEX0lOVF9TVEFUVVNfUkVHIDB4NDggLyogQ2FyZCBpbnRlcnJ1cHQgc3RhdHVzIHJlZyAqLwogI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfRVZFTlRfTUFTS19SRUcgMHg0QyAvKiBDYXJkIGludGVycnVwdCBldmVudCBtYXNrICovCiAjZGVmaW5lIElGX1NQSV9DQVJEX0lOVF9TVEFUVVNfTUFTS19SRUcJMHg1MCAvKiBDYXJkIGludGVycnVwdCBzdGF0dXMgbWFzayAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYwppbmRleCA1NmY0MzlkLi5mNGY0MjU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMKQEAgLTYyLDcgKzYyLDcgQEAKICAqIAlhbiBpbnRlcnNlY3Rpb24gdG8gb2NjdXIgYnV0IGVhY2ggZGV2aWNlIHdpbGwgc3RpbGwgdXNlIHRoZWlyCiAgKiAJcmVzcGVjdGl2ZSByZWd1bGF0b3J5IHJlcXVlc3RlZCBkb21haW5zLiBTdWJzZXF1ZW50IHJhZGlvcyB3aWxsCiAgKiAJdXNlIHRoZSByZXN1bHRpbmcgaW50ZXJzZWN0aW9uLgotICogQEhXU0lNX1JFR1RFU1RfV09STERfUk9BTTogVXNlZCBmb3IgdGVzdGluZyB0aGUgd29ybGQgcm9hbWluZy4gV2UgYWNvbXBsaXNoCisgKiBASFdTSU1fUkVHVEVTVF9XT1JMRF9ST0FNOiBVc2VkIGZvciB0ZXN0aW5nIHRoZSB3b3JsZCByb2FtaW5nLiBXZSBhY2NvbXBsaXNoCiAgKgl0aGlzIGJ5IHVzaW5nIGEgY3VzdG9tIGJlYWNvbi1jYXBhYmxlIHJlZ3VsYXRvcnkgZG9tYWluIGZvciB0aGUgZmlyc3QKICAqCXJhZGlvLiBBbGwgb3RoZXIgZGV2aWNlIHdvcmxkIHJvYW0uCiAgKiBASFdTSU1fUkVHVEVTVF9DVVNUT01fV09STEQ6IFVzZWQgZm9yIHRlc3RpbmcgdGhlIGN1c3RvbSB3b3JsZCByZWd1bGF0b3J5CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9vcmlub2NvL2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9vcmlub2NvL2h3LmMKaW5kZXggYjQ3NzJjMS4uM2M3ODc3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvb3Jpbm9jby9ody5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL29yaW5vY28vaHcuYwpAQCAtMTAzMSw3ICsxMDMxLDcgQEAKIAllbHNlCiAJCWJ1Zi50c2NbNF0gPSAweDEwOwogCi0JLyogV2FpdCB1cHRvIDEwMG1zIGZvciB0eCBxdWV1ZSB0byBlbXB0eSAqLworCS8qIFdhaXQgdXAgdG8gMTAwbXMgZm9yIHR4IHF1ZXVlIHRvIGVtcHR5ICovCiAJZm9yIChrID0gMTAwOyBrID4gMDsgay0tKSB7CiAJCXVkZWxheSgxMDAwKTsKIAkJcmV0ID0gaGVybWVzX3JlYWRfd29yZHJlYyhodywgVVNFUl9CQVAsIEhFUk1FU19SSURfVFhRVUVVRUVNUFRZLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9tYWluLmMKaW5kZXggMzU2ZTZiYi4uYTk0Njk5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvbWFpbi5jCkBAIC00NjUsNyArNDY1LDcgQEAKIAogCQlpZiAoc2xvdCA8IDApIHsKIAkJCS8qCi0JCQkgKiBUaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSBjaG9vc2VuIGFsZ29yaXRobSwgYnV0IHRoZQorCQkJICogVGhlIGRldmljZSBzdXBwb3J0cyB0aGUgY2hvc2VuIGFsZ29yaXRobSwgYnV0IHRoZQogCQkJICogZmlybXdhcmUgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2gga2V5IHNsb3RzIHRvIHN0b3JlCiAJCQkgKiBhbGwgb2YgdGhlbS4KIAkJCSAqIEJ1dCBlbmNyeXB0aW9uIG9mZmxvYWQgZm9yIG91dGdvaW5nIGZyYW1lcyBpcyBhbHdheXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYwppbmRleCA3ZWNjMGJkLi42ZDkyMDRmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L3A1NHNwaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYwpAQCAtMjg3LDcgKzI4Nyw3IEBACiAJZW5hYmxlX2lycShncGlvX3RvX2lycShwNTRzcGlfZ3Bpb19pcnEpKTsKIAogCS8qCi0JICogbmVlZCB0byB3YWl0IGEgd2hpbGUgYmVmb3JlIGRldmljZSBjYW4gYmUgYWNjZXNzZWQsIHRoZSBsZW5naHQKKwkgKiBuZWVkIHRvIHdhaXQgYSB3aGlsZSBiZWZvcmUgZGV2aWNlIGNhbiBiZSBhY2Nlc3NlZCwgdGhlIGxlbmd0aAogCSAqIGlzIGp1c3QgYSBndWVzcwogCSAqLwogCW1zbGVlcCgxMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvcDU0dXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvcDU0dXNiLmMKaW5kZXggOWIzNDRhOS4uZTE4MzU4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L3A1NHVzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTR1c2IuYwpAQCAtNTYsNiArNTYsNyBAQAogCXtVU0JfREVWSUNFKDB4MDg0NiwgMHg0MjEwKX0sCS8qIE5ldGdlYXIgV0cxMjEgdGhlIHNlY29uZCA/ICovCiAJe1VTQl9ERVZJQ0UoMHgwODQ2LCAweDQyMjApfSwJLyogTmV0Z2VhciBXRzExMSAqLwogCXtVU0JfREVWSUNFKDB4MDlhYSwgMHgxMDAwKX0sCS8qIFNwaW5uYWtlciBQcm90byBib2FyZCAqLworCXtVU0JfREVWSUNFKDB4MGJmOCwgMHgxMDA3KX0sCS8qIEZ1aml0c3UgRS01NDAwIFVTQiAqLwogCXtVU0JfREVWSUNFKDB4MGNkZSwgMHgwMDA2KX0sCS8qIE1lZGlvbiA0MDkwMCwgUm9wZXIgRXVyb3BlICovCiAJe1VTQl9ERVZJQ0UoMHgwZGIwLCAweDY4MjYpfSwJLyogTVNJIFVCNTRHIChNUy02ODI2KSAqLwogCXtVU0JfREVWSUNFKDB4MTA3YiwgMHg1NWYyKX0sCS8qIEdhdGV3YXkgV0dVLTIxMCAoR2VtdGVrKSAqLwpAQCAtNjgsNiArNjksNyBAQAogCXtVU0JfREVWSUNFKDB4MTkxNSwgMHgyMjM1KX0sCS8qIExpbmtzeXMgV1VTQjU0RyBQb3J0YWJsZSBPRU0gKi8KIAl7VVNCX0RFVklDRSgweDIwMDEsIDB4MzcwMSl9LAkvKiBETGluayBEV0wtRzEyMCBTcGlubmFrZXIgKi8KIAl7VVNCX0RFVklDRSgweDIwMDEsIDB4MzcwMyl9LAkvKiBETGluayBEV0wtRzEyMiAqLworCXtVU0JfREVWSUNFKDB4MjAwMSwgMHgzNzYyKX0sCS8qIENvbmNlcHRyb25pYyBDNTRVICovCiAJe1VTQl9ERVZJQ0UoMHg1MDQxLCAweDIyMzQpfSwJLyogTGlua3N5cyBXVVNCNTRHICovCiAJe1VTQl9ERVZJQ0UoMHg1MDQxLCAweDIyMzUpfSwJLyogTGlua3N5cyBXVVNCNTRHIFBvcnRhYmxlICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ByaXNtNTQvaXNscGNpX2V0aC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcHJpc201NC9pc2xwY2lfZXRoLmMKaW5kZXggZDQ0ZjhlMi4uMjY2ZDQ1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcHJpc201NC9pc2xwY2lfZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcHJpc201NC9pc2xwY2lfZXRoLmMKQEAgLTExMyw3ICsxMTMsNyBAQAogCSAqIGJlIGFsaWduZWQgb24gYSA0LWJ5dGUgYm91bmRhcnkuIElmIFdEUyBpcyBlbmFibGVkIGFkZCBhbm90aGVyIDYgYnl0ZXMKIAkgKiBhbmQgYWRkIFdEUyBhZGRyZXNzIGluZm9ybWF0aW9uICovCiAJaWYgKGxpa2VseSgoKGxvbmcpIHNrYi0+ZGF0YSAmIDB4MDMpIHwgaW5pdF93ZHMpKSB7Ci0JCS8qIGdldCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGFkZCBhbmQgcmUtYWxsaWduICovCisJCS8qIGdldCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGFkZCBhbmQgcmUtYWxpZ24gKi8KIAkJb2Zmc2V0ID0gKDQgLSAobG9uZykgc2tiLT5kYXRhKSAmIDB4MDM7CiAJCW9mZnNldCArPSBpbml0X3dkcyA/IDYgOiAwOwogCkBAIC0zNDIsNyArMzQyLDcgQEAKIAkJCSBwcml2LT5wY2lfbWFwX3J4X2FkZHJlc3NbaW5kZXhdLAogCQkJIE1BWF9GUkFHTUVOVF9TSVpFX1JYICsgMiwgUENJX0RNQV9GUk9NREVWSUNFKTsKIAotCS8qIHVwZGF0ZSB0aGUgc2tiIHN0cnVjdHVyZSBhbmQgYWxsaWduIHRoZSBidWZmZXIgKi8KKwkvKiB1cGRhdGUgdGhlIHNrYiBzdHJ1Y3R1cmUgYW5kIGFsaWduIHRoZSBidWZmZXIgKi8KIAlza2JfcHV0KHNrYiwgc2l6ZSk7CiAJaWYgKG9mZnNldCkgewogCQkvKiBzaGlmdCB0aGUgYnVmZmVyIGFsbG9jYXRpb24gb2Zmc2V0IGJ5dGVzIHRvIGdldCB0aGUgcmlnaHQgZnJhbWUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JheWN0bC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmF5Y3RsLmgKaW5kZXggNDlkOWIyNi4uZDc2NDZmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmF5Y3RsLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmF5Y3RsLmgKQEAgLTU3OCw3ICs1NzgsNyBAQAogICAgIFVDSEFSICB2YXJbMV07CiB9OwogCi0vKioqKioqIEVDRiBSZWNlaXZlIENvbnRyb2wgU3R1Y3R1cmUgKFJDUykgQXJlYSBhdCBTaGFyZWQgUkFNIG9mZnNldCAweDA4MDAgICovCisvKioqKioqIEVDRiBSZWNlaXZlIENvbnRyb2wgU3RydWN0dXJlIChSQ1MpIEFyZWEgYXQgU2hhcmVkIFJBTSBvZmZzZXQgMHgwODAwICAqLwogLyogU3RydWN0dXJlcyBmb3IgY29tbWFuZCBzcGVjaWZpYyBwYXJhbWV0ZXJzIChyY3MudmFyKSAqLwogc3RydWN0IHJ4X3BhY2tldF9jbWQgewogICAgIFVDSEFSIHJ4X2RhdGFfcHRyWzJdOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMC5oCmluZGV4IDcwYjlhYmIuLjhmYmM1ZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDAuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwLmgKQEAgLTYxNiw3ICs2MTYsNyBAQAogICogUkVBRF9DT05UUk9MOiAwIHdyaXRlIEJCUCwgMSByZWFkIEJCUAogICogQlVTWTogQVNJQyBpcyBidXN5IGV4ZWN1dGluZyBCQlAgY29tbWFuZHMKICAqIEJCUF9QQVJfRFVSOiAwIDQgTUFDIGNsb2NrcywgMSA4IE1BQyBjbG9ja3MKLSAqIEJCUF9SV19NT0RFOiAwIHNlcmlhbCwgMSBwYXJhbGVsbAorICogQkJQX1JXX01PREU6IDAgc2VyaWFsLCAxIHBhcmFsbGVsCiAgKi8KICNkZWZpbmUgQkJQX0NTUl9DRkcJCQkweDEwMWMKICNkZWZpbmUgQkJQX0NTUl9DRkdfVkFMVUUJCUZJRUxEMzIoMHgwMDAwMDBmZikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDBsaWIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDBsaWIuYwppbmRleCAyZWU2Y2ViLi5kYmY3NGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwbGliLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMGxpYi5jCkBAIC0xNTE4LDcgKzE1MTgsNyBAQAogCWlmIChyZi0+Y2hhbm5lbCA+IDE0KSB7CiAJCS8qCiAJCSAqIFdoZW4gVFggcG93ZXIgaXMgYmVsb3cgMCwgd2Ugc2hvdWxkIGluY3JlYXNlIGl0IGJ5IDcgdG8KLQkJICogbWFrZSBpdCBhIHBvc2l0aXZlIHZhbHVlIChNaW51bXVtIHZhbHVlIGlzIC03KS4KKwkJICogbWFrZSBpdCBhIHBvc2l0aXZlIHZhbHVlIChNaW5pbXVtIHZhbHVlIGlzIC03KS4KIAkJICogSG93ZXZlciB0aGlzIG1lYW5zIHRoYXQgdmFsdWVzIGJldHdlZW4gMCBhbmQgNyBoYXZlCiAJCSAqIGRvdWJsZSBtZWFuaW5nLCBhbmQgd2Ugc2hvdWxkIHNldCBhIDdEQm0gYm9vc3QgZmxhZy4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwLmgKaW5kZXggYTM5NDBkNy4uN2YxMDIzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDAuaApAQCAtNDg0LDEzICs0ODQsMTMgQEAKIAllbnVtIG5sODAyMTFfaWZ0eXBlIHR5cGU7CiAKIAkvKgotCSAqIFRTRiBzeW5jIHZhbHVlLCB0aGlzIGlzIGRlcGVuZGFudCBvbiB0aGUgb3BlcmF0aW9uIHR5cGUuCisJICogVFNGIHN5bmMgdmFsdWUsIHRoaXMgaXMgZGVwZW5kZW50IG9uIHRoZSBvcGVyYXRpb24gdHlwZS4KIAkgKi8KIAllbnVtIHRzZl9zeW5jIHN5bmM7CiAKIAkvKgotCSAqIFRoZSBNQUMgYW5kIEJTU0lEIGFkZHJlc3Nlc3MgYXJlIHNpbXBsZSBhcnJheSBvZiBieXRlcywKLQkgKiB0aGVzZSBhcnJheXMgYXJlIGxpdHRsZSBlbmRpYW4sIHNvIHdoZW4gc2VuZGluZyB0aGUgYWRkcmVzc2VzcworCSAqIFRoZSBNQUMgYW5kIEJTU0lEIGFkZHJlc3NlcyBhcmUgc2ltcGxlIGFycmF5IG9mIGJ5dGVzLAorCSAqIHRoZXNlIGFycmF5cyBhcmUgbGl0dGxlIGVuZGlhbiwgc28gd2hlbiBzZW5kaW5nIHRoZSBhZGRyZXNzZXMKIAkgKiB0byB0aGUgZHJpdmVycywgY29weSB0aGUgaXQgaW50byBhIGVuZGlhbi1zaWduZWQgdmFyaWFibGUuCiAJICoKIAkgKiBOb3RlIHRoYXQgYWxsIGRldmljZXMgKGV4Y2VwdCBydDI1MDB1c2IpIGhhdmUgMzIgYml0cwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAKICAqIEBkcm9wOiBUcnVlIHRvIGRyb3AgYWxsIHBlbmRpbmcgZnJhbWVzLgogICoKICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBmbHVzaCB0aGUgcXVldWUuIEFmdGVyIHRoaXMgY2FsbAotICogdGhlIHF1ZXVlIGlzIGd1YXJlbnRlZWQgdG8gYmUgZW1wdHkuCisgKiB0aGUgcXVldWUgaXMgZ3VhcmFudGVlZCB0byBiZSBlbXB0eS4KICAqLwogdm9pZCBydDJ4MDBxdWV1ZV9mbHVzaF9xdWV1ZShzdHJ1Y3QgZGF0YV9xdWV1ZSAqcXVldWUsIGJvb2wgZHJvcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjb25maWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjb25maWcuYwppbmRleCBlN2Y2N2Q1Li45NDE2ZTM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY29uZmlnLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNvbmZpZy5jCkBAIC02MCw3ICs2MCw3IEBACiAJICogTm90ZSB0aGF0IHdoZW4gTlVMTCBpcyBwYXNzZWQgYXMgYWRkcmVzcyB3ZSB3aWxsIHNlbmQKIAkgKiAwMDowMDowMDowMDowMCB0byB0aGUgZGV2aWNlIHRvIGNsZWFyIHRoZSBhZGRyZXNzLgogCSAqIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSBkZXZpY2UgYmVpbmcgY29uZnVzZWQgd2hlbiBpdCB3YW50cwotCSAqIHRvIEFDSyBmcmFtZXMgb3IgY29uc2lkZXJlcyBpdHNlbGYgYXNzb2NpYXRlZC4KKwkgKiB0byBBQ0sgZnJhbWVzIG9yIGNvbnNpZGVycyBpdHNlbGYgYXNzb2NpYXRlZC4KIAkgKi8KIAltZW1zZXQoY29uZi5tYWMsIDAsIHNpemVvZihjb25mLm1hYykpOwogCWlmIChtYWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY3J5cHRvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY3J5cHRvLmMKaW5kZXggNWU5MDc0Yi4uM2Y1Njg4ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjcnlwdG8uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY3J5cHRvLmMKQEAgLTIzNyw3ICsyMzcsNyBAQAogCX0KIAogCS8qCi0JICogTk9URTogQWx3YXlzIGNvdW50IHRoZSBwYXlsb2FkIGFzIHRyYW5zZmVyZWQsCisJICogTk9URTogQWx3YXlzIGNvdW50IHRoZSBwYXlsb2FkIGFzIHRyYW5zZmVycmVkLAogCSAqIGV2ZW4gd2hlbiBhbGlnbm1lbnQgd2FzIHNldCB0byB6ZXJvLiBUaGlzIGlzIHJlcXVpcmVkCiAJICogZm9yIGRldGVybWluaW5nIHRoZSBjb3JyZWN0IG9mZnNldCBmb3IgdGhlIElDViBkYXRhLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGRldi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGRldi5jCmluZGV4IDlkZTlkYmUuLjg0ZWI2YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkZXYuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwZGV2LmMKQEAgLTEwNjIsOCArMTA2MiwxMCBAQAogCSAqIFN0b3AgYWxsIHdvcmsuCiAJICovCiAJY2FuY2VsX3dvcmtfc3luYygmcnQyeDAwZGV2LT5pbnRmX3dvcmspOwotCWNhbmNlbF93b3JrX3N5bmMoJnJ0MngwMGRldi0+cnhkb25lX3dvcmspOwotCWNhbmNlbF93b3JrX3N5bmMoJnJ0MngwMGRldi0+dHhkb25lX3dvcmspOworCWlmIChydDJ4MDBfaXNfdXNiKHJ0MngwMGRldikpIHsKKwkJY2FuY2VsX3dvcmtfc3luYygmcnQyeDAwZGV2LT5yeGRvbmVfd29yayk7CisJCWNhbmNlbF93b3JrX3N5bmMoJnJ0MngwMGRldi0+dHhkb25lX3dvcmspOworCX0KIAlkZXN0cm95X3dvcmtxdWV1ZShydDJ4MDBkZXYtPndvcmtxdWV1ZSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGR1bXAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkdW1wLmgKaW5kZXggNWQ2ZTBiOC4uMDYzZWJjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGR1bXAuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwZHVtcC5oCkBAIC01MSw3ICs1MSw3IEBACiAgKiAgIFtydDJ4MDBkdW1wIGhlYWRlcl1baGFyZHdhcmUgZGVzY3JpcHRvcl1baWVlZTgwMi4xMSBmcmFtZV0KICAqCiAgKiBydDJ4MDBkdW1wIGhlYWRlcjogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBkdW1wZWQgZnJhbWUsIGFzIHdlbGwgYXMKLSAqCWFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdXNlZnVsbCBmb3IgZGVidWdnaW5nLiBTZWUgJnJ0MngwMGR1bXBfaGRyLgorICoJYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gU2VlICZydDJ4MDBkdW1wX2hkci4KICAqIGhhcmR3YXJlIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IgdGhhdCB3YXMgdXNlZCB0byByZWNlaXZlIG9yIHRyYW5zbWl0CiAgKgl0aGUgZnJhbWUuCiAgKiBpZWVlODAyLjExIGZyYW1lOiBUaGUgYWN0dWFsIGZyYW1lIHRoYXQgd2FzIHJlY2VpdmVkIG9yIHRyYW5zbWl0dGVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGxpbmsuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBsaW5rLmMKaW5kZXggYzk3NWIwYS4uMjlhYmZkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGxpbmsuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwbGluay5jCkBAIC0yODMsNyArMjgzLDcgQEAKIAkvKioKIAkgKiBXaGlsZSBzY2FubmluZywgbGluayB0dW5pbmcgaXMgZGlzYWJsZWQuIEJ5IGRlZmF1bHQKIAkgKiB0aGUgbW9zdCBzZW5zaXRpdmUgc2V0dGluZ3Mgd2lsbCBiZSB1c2VkIHRvIG1ha2Ugc3VyZQotCSAqIHRoYXQgYWxsIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlcyB3aWxsIGJlIHJlY2lldmVkCisJICogdGhhdCBhbGwgYmVhY29ucyBhbmQgcHJvYmUgcmVzcG9uc2VzIHdpbGwgYmUgcmVjZWl2ZWQKIAkgKiBkdXJpbmcgdGhlIHNjYW4uCiAJICovCiAJaWYgKHRlc3RfYml0KERFVklDRV9TVEFURV9TQ0FOTklORywgJnJ0MngwMGRldi0+ZmxhZ3MpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuYwppbmRleCA0YjNjNzBlLi40MzU4MDUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuYwpAQCAtNTQ2LDcgKzU0Niw3IEBACiAJfQogCiAJLyoKLQkgKiBXaGVuIERNQSBhbGxvY2F0aW9uIGlzIHJlcXVpcmVkIHdlIHNob3VsZCBndWFyZW50ZWUgdG8gdGhlCisJICogV2hlbiBETUEgYWxsb2NhdGlvbiBpcyByZXF1aXJlZCB3ZSBzaG91bGQgZ3VhcmFudGVlIHRvIHRoZQogCSAqIGRyaXZlciB0aGF0IHRoZSBETUEgaXMgYWxpZ25lZCB0byBhIDQtYnl0ZSBib3VuZGFyeS4KIAkgKiBIb3dldmVyIHNvbWUgZHJpdmVycyByZXF1aXJlIEwyIHBhZGRpbmcgdG8gcGFkIHRoZSBwYXlsb2FkCiAJICogcmF0aGVyIHRoZW4gdGhlIGhlYWRlci4gVGhpcyBjb3VsZCBiZSBhIHJlcXVpcmVtZW50IGZvcgpAQCAtNjg5LDcgKzY4OSw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcXVldWUtPmluZGV4X2xvY2ssIGlycWZsYWdzKTsKIAogCS8qCi0JICogU3RhcnQgZnJvbSB0aGUgVFggZG9uZSBwb2ludGVyLCB0aGlzIGd1YXJlbnRlZXMgdGhhdCB3ZSB3aWxsCisJICogU3RhcnQgZnJvbSB0aGUgVFggZG9uZSBwb2ludGVyLCB0aGlzIGd1YXJhbnRlZXMgdGhhdCB3ZSB3aWxsCiAJICogc2VuZCBvdXQgYWxsIGZyYW1lcyBpbiB0aGUgY29ycmVjdCBvcmRlci4KIAkgKi8KIAlpZiAoaW5kZXhfc3RhcnQgPCBpbmRleF9lbmQpIHsKQEAgLTg4Myw3ICs4ODMsNyBAQAogCX0KIAogCS8qCi0JICogQ2hlY2sgaWYgZHJpdmVyIHN1cHBvcnRzIGZsdXNoaW5nLCB3ZSBjYW4gb25seSBndWFyZW50ZWUKKwkgKiBDaGVjayBpZiBkcml2ZXIgc3VwcG9ydHMgZmx1c2hpbmcsIHdlIGNhbiBvbmx5IGd1YXJhbnRlZQogCSAqIGZ1bGwgc3VwcG9ydCBmb3IgZmx1c2hpbmcgaWYgdGhlIGRyaXZlciBpcyBhYmxlCiAJICogdG8gY2FuY2VsIGFsbCBwZW5kaW5nIGZyYW1lcyAoZHJvcCA9IHRydWUpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuaAppbmRleCAwYzhiMGM2Li4yMTc4NjFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwcXVldWUuaApAQCAtMzQ0LDggKzM0NCw4IEBACiAgKglvbmx5IGJlIHRvdWNoZWQgYWZ0ZXIgdGhlIGRldmljZSBoYXMgc2lnbmFsZWQgaXQgaXMgZG9uZSB3aXRoIGl0LgogICogQEVOVFJZX0RBVEFfUEVORElORzogVGhpcyBlbnRyeSBjb250YWlucyBhIHZhbGlkIGZyYW1lIGFuZCBpcyB3YWl0aW5nCiAgKglmb3IgdGhlIHNpZ25hbCB0byBzdGFydCBzZW5kaW5nLgotICogQEVOVFJZX0RBVEFfSU9fRkFJTEVEOiBIYXJkd2FyZSBpbmRpY2F0ZWQgdGhhdCBhbiBJTyBlcnJvciBvY2N1cmVkCi0gKgl3aGlsZSB0cmFuc2ZlcmluZyB0aGUgZGF0YSB0byB0aGUgaGFyZHdhcmUuIE5vIFRYIHN0YXR1cyByZXBvcnQgd2lsbAorICogQEVOVFJZX0RBVEFfSU9fRkFJTEVEOiBIYXJkd2FyZSBpbmRpY2F0ZWQgdGhhdCBhbiBJTyBlcnJvciBvY2N1cnJlZAorICoJd2hpbGUgdHJhbnNmZXJyaW5nIHRoZSBkYXRhIHRvIHRoZSBoYXJkd2FyZS4gTm8gVFggc3RhdHVzIHJlcG9ydCB3aWxsCiAgKgliZSBleHBlY3RlZCBmcm9tIHRoZSBoYXJkd2FyZS4KICAqIEBFTlRSWV9EQVRBX1NUQVRVU19QRU5ESU5HOiBUaGUgZW50cnkgaGFzIGJlZW4gc2VuZCB0byB0aGUgZGV2aWNlIGFuZAogICoJcmV0dXJuZWQuIEl0IGlzIG5vdyB3YWl0aW5nIGZvciB0aGUgc3RhdHVzIHJlcG9ydGluZyBiZWZvcmUgdGhlCkBAIC0zNjUsNyArMzY1LDcgQEAKICAqIEBmbGFnczogRW50cnkgZmxhZ3MsIHNlZSAmZW51bSBxdWV1ZV9lbnRyeV9mbGFncy4KICAqIEBxdWV1ZTogVGhlIGRhdGEgcXVldWUgKCZzdHJ1Y3QgZGF0YV9xdWV1ZSkgdG8gd2hpY2ggdGhpcyBlbnRyeSBiZWxvbmdzLgogICogQHNrYjogVGhlIGJ1ZmZlciB3aGljaCBpcyBjdXJyZW50bHkgYmVpbmcgdHJhbnNtaXR0ZWQgKGZvciBUWCBxdWV1ZSksCi0gKglvciB1c2VkIHRvIGRpcmVjdGx5IHJlY2lldmUgZGF0YSBpbiAoZm9yIFJYIHF1ZXVlKS4KKyAqCW9yIHVzZWQgdG8gZGlyZWN0bHkgcmVjZWl2ZSBkYXRhIGluIChmb3IgUlggcXVldWUpLgogICogQGVudHJ5X2lkeDogVGhlIGVudHJ5IGluZGV4IG51bWJlci4KICAqIEBwcml2X2RhdGE6IFByaXZhdGUgZGF0YSBiZWxvbmdpbmcgdG8gdGhpcyBxdWV1ZSBlbnRyeS4gVGhlIHBvaW50ZXIKICAqCXBvaW50cyB0byBkYXRhIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBkcml2ZXIgYW5kIHF1ZXVlIHR5cGUuCkBAIC0zODgsNyArMzg4LDcgQEAKICAqIEBRX0lOREVYOiBJbmRleCBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGVudHJ5IGluIHRoZSBxdWV1ZSwgaWYgdGhpcyBlbnRyeSBpcwogICoJb3duZWQgYnkgdGhlIGhhcmR3YXJlIHRoZW4gdGhlIHF1ZXVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgZnVsbC4KICAqIEBRX0lOREVYX0RNQV9ET05FOiBJbmRleCBwb2ludGVyIGZvciB0aGUgbmV4dCBlbnRyeSB3aGljaCB3aWxsIGhhdmUgYmVlbgotICoJdHJhbnNmZXJlZCB0byB0aGUgaGFyZHdhcmUuCisgKgl0cmFuc2ZlcnJlZCB0byB0aGUgaGFyZHdhcmUuCiAgKiBAUV9JTkRFWF9ET05FOiBJbmRleCBwb2ludGVyIHRvIHRoZSBuZXh0IGVudHJ5IHdoaWNoIHdpbGwgYmUgY29tcGxldGVkIGJ5CiAgKgl0aGUgaGFyZHdhcmUgYW5kIGZvciB3aGljaCB3ZSBuZWVkIHRvIHJ1biB0aGUgdHhkb25lIGhhbmRsZXIuIElmIHRoaXMKICAqCWVudHJ5IGlzIG5vdCBvd25lZCBieSB0aGUgaGFyZHdhcmUgdGhlIHF1ZXVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgZW1wdHkuCkBAIC02MjcsNyArNjI3LDcgQEAKIH0KIAogLyoqCi0gKiBydDJ4MDBxdWV1ZV9zdGF0dXNfdGltZW91dCAtIENoZWNrIGlmIGEgdGltZW91dCBvY2N1cmVkIGZvciBTVEFUVVMgcmVwb3J0cworICogcnQyeDAwcXVldWVfc3RhdHVzX3RpbWVvdXQgLSBDaGVjayBpZiBhIHRpbWVvdXQgb2NjdXJyZWQgZm9yIFNUQVRVUyByZXBvcnRzCiAgKiBAcXVldWU6IFF1ZXVlIHRvIGNoZWNrLgogICovCiBzdGF0aWMgaW5saW5lIGludCBydDJ4MDBxdWV1ZV9zdGF0dXNfdGltZW91dChzdHJ1Y3QgZGF0YV9xdWV1ZSAqcXVldWUpCkBAIC02MzcsNyArNjM3LDcgQEAKIH0KIAogLyoqCi0gKiBydDJ4MDBxdWV1ZV90aW1lb3V0IC0gQ2hlY2sgaWYgYSB0aW1lb3V0IG9jY3VyZWQgZm9yIERNQSB0cmFuc2ZlcnMKKyAqIHJ0MngwMHF1ZXVlX3RpbWVvdXQgLSBDaGVjayBpZiBhIHRpbWVvdXQgb2NjdXJyZWQgZm9yIERNQSB0cmFuc2ZlcnMKICAqIEBxdWV1ZTogUXVldWUgdG8gY2hlY2suCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHJ0MngwMHF1ZXVlX2RtYV90aW1lb3V0KHN0cnVjdCBkYXRhX3F1ZXVlICpxdWV1ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuYwppbmRleCBmYmU3MzVmLi4zNmYzODhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHVzYi5jCkBAIC0xNzMsNyArMTczLDcgQEAKIAkvKgogCSAqIElmIHRoZSB0cmFuc2ZlciB0byBoYXJkd2FyZSBzdWNjZWVkZWQsIGl0IGRvZXMgbm90IG1lYW4gdGhlCiAJICogZnJhbWUgd2FzIHNlbmQgb3V0IGNvcnJlY3RseS4gSXQgb25seSBtZWFucyB0aGUgZnJhbWUKLQkgKiB3YXMgc3VjY2VzZnVsbHkgcHVzaGVkIHRvIHRoZSBoYXJkd2FyZSwgd2UgaGF2ZSBubworCSAqIHdhcyBzdWNjZXNzZnVsbHkgcHVzaGVkIHRvIHRoZSBoYXJkd2FyZSwgd2UgaGF2ZSBubwogCSAqIHdheSB0byBkZXRlcm1pbmUgdGhlIHRyYW5zbWlzc2lvbiBzdGF0dXMgcmlnaHQgbm93LgogCSAqIChPbmx5IGluZGlyZWN0bHkgYnkgbG9va2luZyBhdCB0aGUgZmFpbGVkIFRYIGNvdW50ZXJzCiAJICogaW4gdGhlIHJlZ2lzdGVyKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuaAppbmRleCA2YWFmNTFmLi5lMTFjNzU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHVzYi5oCkBAIC00MDAsNyArNDAwLDcgQEAKICAqIEBydDJ4MDBkZXY6IFBvaW50ZXIgdG8gJnN0cnVjdCBydDJ4MDBfZGV2CiAgKgogICogQ2hlY2sgdGhlIGhlYWx0aCBvZiB0aGUgVVNCIGNvbW11bmljYXRpb24gYW5kIGRldGVybWluZQotICogaWYgdGltZW91dHMgaGF2ZSBvY2N1cmVkLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGlzIGZ1bmN0aW9uCisgKiBpZiB0aW1lb3V0cyBoYXZlIG9jY3VycmVkLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGlzIGZ1bmN0aW9uCiAgKiB3aWxsIHJlc2V0IGFsbCBjb21tdW5pY2F0aW9uIHRvIHJlc3RvcmUgZnVuY3Rpb25hbGl0eSBhZ2Fpbi4KICAqLwogdm9pZCBydDJ4MDB1c2Jfd2F0Y2hkb2coc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL2Jhc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvYmFzZS5jCmluZGV4IGJiMGM3ODEuLjBkN2Q5M2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvYmFzZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvYmFzZS5jCkBAIC01MjAsNyArNTIwLDcgQEAKIAkJCSAqYmVjYXVzZSBodyB3aWxsIG5lcnZlciB1c2UgaHdfcmF0ZQogCQkJICp3aGVuIHRjYl9kZXNjLT51c2VfZHJpdmVyX3JhdGUgPSBmYWxzZQogCQkJICpzbyB3ZSBuZXZlciBzZXQgaGlnaGVzdCBOIHJhdGUgaGVyZSwKLQkJCSAqYW5kIE4gcmF0ZSB3aWxsIGFsbCBiZSBjb250cm9sZWQgYnkgRlcKKwkJCSAqYW5kIE4gcmF0ZSB3aWxsIGFsbCBiZSBjb250cm9sbGVkIGJ5IEZXCiAJCQkgKndoZW4gdGNiX2Rlc2MtPnVzZV9kcml2ZXJfcmF0ZSA9IGZhbHNlCiAJCQkgKi8KIAkJCWlmIChydGxtYWMtPmh0X2VuYWJsZSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9lZnVzZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9lZnVzZS5jCmluZGV4IGY3NGE4NzAuLjU5MGYxNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvZWZ1c2UuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL2VmdXNlLmMKQEAgLTY4NSw3ICs2ODUsNyBAQAogCiAJdTggZWZ1c2VfZGF0YSwgd29yZF9jbnRzID0gMDsKIAl1MTYgZWZ1c2VfYWRkciA9IDA7Ci0JdTggaHdvcmRlbjsKKwl1OCBod29yZGVuID0gMDsKIAl1OCB0bXBkYXRhWzhdOwogCiAJaWYgKGRhdGEgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3BjaS5jCmluZGV4IDljZDc3MDMuLjU5MzhmNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcGNpLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9wY2kuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiAJICogMCAtIERpc2FibGUgQVNQTSwKIAkgKiAxIC0gRW5hYmxlIEFTUE0gd2l0aG91dCBDbG9jayBSZXEsCiAJICogMiAtIEVuYWJsZSBBU1BNIHdpdGggQ2xvY2sgUmVxLAotCSAqIDMgLSBBbHd5YXMgRW5hYmxlIEFTUE0gd2l0aCBDbG9jayBSZXEsCisJICogMyAtIEFsd2F5cyBFbmFibGUgQVNQTSB3aXRoIENsb2NrIFJlcSwKIAkgKiA0IC0gQWx3YXlzIEVuYWJsZSBBU1BNIHdpdGhvdXQgQ2xvY2sgUmVxLgogCSAqIHNldCBkZWZ1bHQgdG8gUlRMODE5MkNFOjMgUlRMODE5MkU6MgogCSAqICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jCmluZGV4IDMzMzZjYTkuLmQyNmY5NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jCkBAIC0xNzksNyArMTc5LDcgQEAKIAl9CiAKIAkvKgotCSAqSWYgYSBjb3VudHJ5IElFIGhhcyBiZWVuIHJlY2lldmVkIGNoZWNrIGl0cyBydWxlIGZvciB0aGlzCisJICpJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjZWl2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKIAkgKmNoYW5uZWwgZmlyc3QgYmVmb3JlIGVuYWJsaW5nIGFjdGl2ZSBzY2FuLiBUaGUgcGFzc2l2ZSBzY2FuCiAJICp3b3VsZCBoYXZlIGJlZW4gZW5mb3JjZWQgYnkgdGhlIGluaXRpYWwgcHJvY2Vzc2luZyBvZiBvdXIKIAkgKmN1c3RvbSByZWd1bGF0b3J5IGRvbWFpbi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcnRsODE5MmMvZndfY29tbW9uLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3J0bDgxOTJjL2Z3X2NvbW1vbi5jCmluZGV4IDVlZjkxMzcuLjI4YTZjZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcnRsODE5MmMvZndfY29tbW9uLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9ydGw4MTkyYy9md19jb21tb24uYwpAQCAtMzAzLDcgKzMwMyw3IEBACiAJdTE2IGJveF9yZWcsIGJveF9leHRyZWc7CiAJdTggdTFiX3RtcDsKIAlib29sIGlzZndfcmVhZCA9IGZhbHNlOwotCXU4IGJ1Zl9pbmRleDsKKwl1OCBidWZfaW5kZXggPSAwOwogCWJvb2wgYndyaXRlX3N1Y2VzcyA9IGZhbHNlOwogCXU4IHdhaXRfaDJjX2xpbW1pdCA9IDEwMDsKIAl1OCB3YWl0X3dyaXRlaDJjX2xpbW1pdCA9IDEwMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3VzYi5jCmluZGV4IGE0YjI2MTMuLmY1ZDg1NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS91c2IuYwpAQCAtMjQ2LDcgKzI0Niw3IEBACiAKIHN0YXRpYyB2b2lkIF9ydGxfdXNiX2lvX2hhbmRsZXJfcmVsZWFzZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIHsKLQlzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBydGxfcHJpdihodyk7CisJc3RydWN0IHJ0bF9wcml2IF9fbWF5YmVfdW51c2VkICpydGxwcml2ID0gcnRsX3ByaXYoaHcpOwogCiAJbXV0ZXhfZGVzdHJveSgmcnRscHJpdi0+aW8uYmJfbXV0ZXgpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3dpZmkuaAppbmRleCAwMTIyNmY4Li4wN2RiOTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3dpZmkuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3dpZmkuaApAQCAtMTU1NSw3ICsxNTU1LDcgQEAKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgQmx1ZXRvb3RoIENvLWV4aXN0YW5jZSBSZWxhdGVkCisgICAgQmx1ZXRvb3RoIENvLWV4aXN0ZW5jZSBSZWxhdGVkCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBlbnVtIGJ0X2FudF9udW0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL2NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL2NtZC5jCmluZGV4IDBhZGU0YmQuLjgxZjE2NGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTI1MS9jbWQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvY21kLmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogICogQHdsOiB3bCBzdHJ1Y3QKICAqIEBpZDogYWN4IGlkCiAgKiBAYnVmOiBidWZmZXIgZm9yIHRoZSByZXNwb25zZSwgaW5jbHVkaW5nIGFsbCBoZWFkZXJzLCBtdXN0IHdvcmsgd2l0aCBkbWEKLSAqIEBsZW46IGxlbmdodCBvZiBidWYKKyAqIEBsZW46IGxlbmd0aCBvZiBidWYKICAqLwogaW50IHdsMTI1MV9jbWRfaW50ZXJyb2dhdGUoc3RydWN0IHdsMTI1MSAqd2wsIHUxNiBpZCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvcnguYwppbmRleCBjMWIzYjNmLi42YWYzNTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvcnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvcnguYwpAQCAtMTc5LDcgKzE3OSw3IEBACiAJcnhfYnVmZmVyID0gc2tiX3B1dChza2IsIGxlbmd0aCk7CiAJd2wxMjUxX21lbV9yZWFkKHdsLCByeF9wYWNrZXRfcmluZ19hZGRyLCByeF9idWZmZXIsIGxlbmd0aCk7CiAKLQkvKiBUaGUgYWN0dWFsIGxlbmdodCBkb2Vzbid0IGluY2x1ZGUgdGhlIHRhcmdldCdzIGFsaWdubWVudCAqLworCS8qIFRoZSBhY3R1YWwgbGVuZ3RoIGRvZXNuJ3QgaW5jbHVkZSB0aGUgdGFyZ2V0J3MgYWxpZ25tZW50ICovCiAJc2tiLT5sZW4gPSBkZXNjLT5sZW5ndGggIC0gUExDUF9IRUFERVJfTEVOR1RIOwogCiAJZmMgPSAodTE2ICopc2tiLT5kYXRhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NtZC5jCmluZGV4IGYwYWE3YWIuLjk2MzI0MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jbWQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvY21kLmMKQEAgLTM1OSw3ICszNTksNyBAQAogICogQHdsOiB3bCBzdHJ1Y3QKICAqIEBpZDogYWN4IGlkCiAgKiBAYnVmOiBidWZmZXIgZm9yIHRoZSByZXNwb25zZSwgaW5jbHVkaW5nIGFsbCBoZWFkZXJzLCBtdXN0IHdvcmsgd2l0aCBkbWEKLSAqIEBsZW46IGxlbmdodCBvZiBidWYKKyAqIEBsZW46IGxlbmd0aCBvZiBidWYKICAqLwogaW50IHdsMTI3MV9jbWRfaW50ZXJyb2dhdGUoc3RydWN0IHdsMTI3MSAqd2wsIHUxNiBpZCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NvbmYuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jb25mLmgKaW5kZXggODU2YThhMi4uOGE4MzIzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NvbmYuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvY29uZi5oCkBAIC00OTcsNyArNDk3LDcgQEAKICNkZWZpbmUgQ09ORl9UWF9SQVRFX1JFVFJZX0xJTUlUICAgICAgIDEwCiAKIC8qCi0gKiBSYXRlcyBzdXBwb3J0ZWQgZm9yIGRhdGEgcGFja2V0cyB3aGVuIG9wZXJhdGluZyBhcyBBUC4gTm90ZSB0aGUgYWJzZW5zZQorICogUmF0ZXMgc3VwcG9ydGVkIGZvciBkYXRhIHBhY2tldHMgd2hlbiBvcGVyYXRpbmcgYXMgQVAuIE5vdGUgdGhlIGFic2VuY2UKICAqIG9mIHRoZSAyMk1icHMgcmF0ZS4gVGhlcmUgaXMgYSBGVyBsaW1pdGF0aW9uIG9uIDEyIHJhdGVzIHNvIHdlIG11c3QgZHJvcAogICogb25lLiBUaGUgcmF0ZSBkcm9wcGVkIGlzIG5vdCBtYW5kYXRvcnkgdW5kZXIgYW55IG9wZXJhdGluZyBtb2RlLgogICovCkBAIC01NzIsNyArNTcyLDcgQEAKIAlDT05GX1RYX0FDX0JLID0gMSwgICAgICAgICAvKiBiYWNrZ3JvdW5kICovCiAJQ09ORl9UWF9BQ19WSSA9IDIsICAgICAgICAgLyogdmlkZW8gKi8KIAlDT05GX1RYX0FDX1ZPID0gMywgICAgICAgICAvKiB2b2ljZSAqLwotCUNPTkZfVFhfQUNfQ1RTMlNFTEYgPSA0LCAgIC8qIGZpY3Rpb3VzIEFDLCBmb2xsb3dzIEFDX1ZPICovCisJQ09ORl9UWF9BQ19DVFMyU0VMRiA9IDQsICAgLyogZmljdGl0aW91cyBBQywgZm9sbG93cyBBQ19WTyAqLwogCUNPTkZfVFhfQUNfQU5ZX1RJRCA9IDB4MWYKIH07CiAKQEAgLTExNjksNyArMTE2OSw3IEBACiAKIAkvKgogCSAqIE1pbmltdW0gcmVxdWlyZWQgZnJlZSB0eCBtZW1vcnkgYmxvY2tzIGluIG9yZGVyIHRvIGFzc3VyZSBvcHRpbXVtCi0JICogcGVyZm9ybWVuY2UKKwkgKiBwZXJmb3JtYW5jZQogCSAqCiAJICogUmFuZ2U6IDAtMTIwCiAJICovCkBAIC0xMTc3LDcgKzExNzcsNyBAQAogCiAJLyoKIAkgKiBNaW5pbXVtIHJlcXVpcmVkIGZyZWUgcnggbWVtb3J5IGJsb2NrcyBpbiBvcmRlciB0byBhc3N1cmUgb3B0aW11bQotCSAqIHBlcmZvcm1lbmNlCisJICogcGVyZm9ybWFuY2UKIAkgKgogCSAqIFJhbmdlOiAwLTEyMAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2lvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvaW8uaAppbmRleCBjMWFhYzgyLi4wMGM3NzFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvaW8uaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvaW8uaApAQCAtOTQsNyArOTQsNyBAQAogCSAqIHRyYW5zbGF0ZWQgcmVnaW9uLgogCSAqCiAJICogVGhlIHRyYW5zbGF0ZWQgcmVnaW9ucyBvY2N1ciBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gcGh5c2ljYWwgZGV2aWNlCi0JICogbWVtb3J5LCBzbyBqdXN0IGFkZCB0aGUgc2l6ZXMgb2YgdGhlIHByZWNlZWRpbmcgYWRkcmVzcyByZWdpb25zIHRvCisJICogbWVtb3J5LCBzbyBqdXN0IGFkZCB0aGUgc2l6ZXMgb2YgdGhlIHByZWNlZGluZyBhZGRyZXNzIHJlZ2lvbnMgdG8KIAkgKiBnZXQgdGhlIG9mZnNldCB0byB0aGUgbmV3IHJlZ2lvbi4KIAkgKgogCSAqIEN1cnJlbnRseSwgb25seSB0aGUgdHdvIGZpcnN0IHJlZ2lvbnMgYXJlIGFkZHJlc3NlZCwgYW5kIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9zZGlvLmMKaW5kZXggNWI5ZGJlYS4uYjFjN2QwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L3NkaW8uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvc2Rpby5jCkBAIC0zNDAsNyArMzQwLDcgQEAKIG1vZHVsZV9leGl0KHdsMTI3MV9leGl0KTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotTU9EVUxFX0FVVEhPUigiTHVjaWFubyBDb2VsaG8gPGx1Y2lhbm8uY29lbGhvQG5va2lhLmNvbT4iKTsKK01PRFVMRV9BVVRIT1IoIkx1Y2lhbm8gQ29lbGhvIDxjb2VsaG9AdGkuY29tPiIpOwogTU9EVUxFX0FVVEhPUigiSnV1c28gT2lrYXJpbmVuIDxqdXVzby5vaWthcmluZW5Abm9raWEuY29tPiIpOwogTU9EVUxFX0ZJUk1XQVJFKFdMMTI3MV9GV19OQU1FKTsKIE1PRFVMRV9GSVJNV0FSRShXTDEyNzFfQVBfRldfTkFNRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvc3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvc3BpLmMKaW5kZXggMThjZjAxNy4uZmZjNzQ1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L3NwaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9zcGkuYwpAQCAtNDg3LDcgKzQ4Nyw3IEBACiBtb2R1bGVfZXhpdCh3bDEyNzFfZXhpdCk7CiAKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLU1PRFVMRV9BVVRIT1IoIkx1Y2lhbm8gQ29lbGhvIDxsdWNpYW5vLmNvZWxob0Bub2tpYS5jb20+Iik7CitNT0RVTEVfQVVUSE9SKCJMdWNpYW5vIENvZWxobyA8Y29lbGhvQHRpLmNvbT4iKTsKIE1PRFVMRV9BVVRIT1IoIkp1dXNvIE9pa2FyaW5lbiA8anV1c28ub2lrYXJpbmVuQG5va2lhLmNvbT4iKTsKIE1PRFVMRV9GSVJNV0FSRShXTDEyNzFfRldfTkFNRSk7CiBNT0RVTEVfRklSTVdBUkUoV0wxMjcxX0FQX0ZXX05BTUUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L3Rlc3Rtb2RlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvdGVzdG1vZGUuYwppbmRleCBlNjQ0MDNiLi42ZWMwNmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvdGVzdG1vZGUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvdGVzdG1vZGUuYwpAQCAtMjA0LDcgKzIwNCwxMCBAQAogCiAJa2ZyZWUod2wtPm52cyk7CiAKLQl3bC0+bnZzID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHdsMTI3MV9udnNfZmlsZSksIEdGUF9LRVJORUwpOworCWlmIChsZW4gIT0gc2l6ZW9mKHN0cnVjdCB3bDEyNzFfbnZzX2ZpbGUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXdsLT5udnMgPSBremFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF3bC0+bnZzKSB7CiAJCXdsMTI3MV9lcnJvcigiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIG52cyBmaWxlIik7CiAJCXJldCA9IC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDM1MDFfY3MuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMzUwMV9jcy5jCmluZGV4IDNlNWJlZmU0Li5mYzA4ZjM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDM1MDFfY3MuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDM1MDFfY3MuYwpAQCAtMjkwLDcgKzI5MCw3IEBACiAgKiAgXCAgICAgICAgICAgICAgIFwtIElFRUUgODAyLjExIC0vIFwtLS0tLS0tLS0tLS0tLSBsZW4gLS0tLS0tLS0tLS0tLS0vCiAgKiAgIFwtc3RydWN0IHdsMzUwMV84MDIxMV90eF9oZHItLS8gICBcLS0tLS0tLS0gRXRoZXJuZXQgRnJhbWUgLS0tLS0tLS8KICAqCi0gKiBSZXR1cm4gPSBQb3N0aW9uIGluIENhcmQKKyAqIFJldHVybiA9IFBvc2l0aW9uIGluIENhcmQKICAqLwogc3RhdGljIHUxNiB3bDM1MDFfZ2V0X3R4X2J1ZmZlcihzdHJ1Y3Qgd2wzNTAxX2NhcmQgKnRoaXMsIHUxNiBsZW4pCiB7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQAogCXRoaXMtPmJhc2VfYWRkciA9IGRldi0+YmFzZV9hZGRyOwogCiAJaWYgKCF3bDM1MDFfZ2V0X2ZsYXNoX21hY19hZGRyKHRoaXMpKSB7Ci0JCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBDYW50IHJlYWQgTUFDIGFkZHIgaW4gZmxhc2ggUk9NP1xuIiwKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IENhbid0IHJlYWQgTUFDIGFkZHIgaW4gZmxhc2ggUk9NP1xuIiwKIAkJICAgICAgIGRldi0+bmFtZSk7CiAJCXVucmVnaXN0ZXJfbmV0ZGV2KGRldik7CiAJCWdvdG8gZmFpbGVkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfcmYyOTU5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl9yZjI5NTkuYwppbmRleCAwNTk3ZDg2Li5lMzYxMTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl9yZjI5NTkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl9yZjI5NTkuYwpAQCAtMTY5LDcgKzE2OSw3IEBACiAJCXsgQ1I4NSwgIDB4MDAgfSwgeyBDUjg2LCAgMHgxMCB9LCB7IENSODcsICAweDJBIH0sCiAJCXsgQ1I4OCwgIDB4MTAgfSwgeyBDUjg5LCAgMHgyNCB9LCB7IENSOTAsICAweDE4IH0sCiAJCS8qIHsgQ1I5MSwgIDB4MTggfSwgKi8KLQkJLyogc2hvdWxkIHNvbHZlIGNvbnRpbm91cyBDVFMgZnJhbWUgcHJvYmxlbXMgKi8KKwkJLyogc2hvdWxkIHNvbHZlIGNvbnRpbnVvdXMgQ1RTIGZyYW1lIHByb2JsZW1zICovCiAJCXsgQ1I5MSwgIDB4MDAgfSwKIAkJeyBDUjkyLCAgMHgwYSB9LCB7IENSOTMsICAweDAwIH0sIHsgQ1I5NCwgIDB4MDEgfSwKIAkJeyBDUjk1LCAgMHgwMCB9LCB7IENSOTYsICAweDQwIH0sIHsgQ1I5NywgIDB4MzcgfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3V3MjQ1My5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfdXcyNDUzLmMKaW5kZXggOWU3NGViMS4uYmEwYTBjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfdXcyNDUzLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfdXcyNDUzLmMKQEAgLTM1Myw3ICszNTMsNyBAQAogCX07CiAKIAlzdGF0aWMgY29uc3QgdTMyIHJ2W10gPSB7Ci0JCVVXMjQ1M19SRUdXUklURSg0LCAweDJiKSwgICAgLyogY29uZmlndXJlIHJlY2lldmVyIGdhaW4gKi8KKwkJVVcyNDUzX1JFR1dSSVRFKDQsIDB4MmIpLCAgICAvKiBjb25maWd1cmUgcmVjZWl2ZXIgZ2FpbiAqLwogCQlVVzI0NTNfUkVHV1JJVEUoNSwgMHgxOWU0ZiksIC8qIGNvbmZpZ3VyZSB0cmFuc21pdHRlciBnYWluICovCiAJCVVXMjQ1M19SRUdXUklURSg2LCAweGY4MWFkKSwgLyogZW5hYmxlIFJYL1RYIGZpbHRlciB0dW5pbmcgKi8KIAkJVVcyNDUzX1JFR1dSSVRFKDcsIDB4M2ZmZmUpLCAvKiBkaXNhYmxlIFRYIGdhaW4gaW4gdGVzdCBtb2RlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3VzYi5jCmluZGV4IDU4MjM2ZTYuLmFiNjA3YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3VzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3VzYi5jCkBAIC02NDMsNyArNjQzLDcgQEAKIAl1c2IgPSB1cmItPmNvbnRleHQ7CiAJcnggPSAmdXNiLT5yeDsKIAotCXpkX3VzYl9yZXNldF9yeF9pZGxlX3RpbWVyKHVzYik7CisJdGFza2xldF9zY2hlZHVsZSgmcngtPnJlc2V0X3RpbWVyX3Rhc2tsZXQpOwogCiAJaWYgKGxlbmd0aCVyeC0+dXNiX3BhY2tldF9zaXplID4gcngtPnVzYl9wYWNrZXRfc2l6ZS00KSB7CiAJCS8qIElmIHRoZXJlIGlzIGFuIG9sZCBmaXJzdCBmcmFnbWVudCwgd2UgZG9uJ3QgY2FyZS4gKi8KQEAgLTgxMiw2ICs4MTIsNyBAQAogCV9femRfdXNiX2Rpc2FibGVfcngodXNiKTsKIAltdXRleF91bmxvY2soJnJ4LT5zZXR1cF9tdXRleCk7CiAKKwl0YXNrbGV0X2tpbGwoJnJ4LT5yZXNldF90aW1lcl90YXNrbGV0KTsKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnJ4LT5pZGxlX3dvcmspOwogfQogCkBAIC0xMTA2LDYgKzExMDcsMTMgQEAKIAl6ZF91c2JfcmVzZXRfcngodXNiKTsKIH0KIAorc3RhdGljIHZvaWQgemRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXJfdGFza2xldCh1bnNpZ25lZCBsb25nIHBhcmFtKQoreworCXN0cnVjdCB6ZF91c2IgKnVzYiA9IChzdHJ1Y3QgemRfdXNiICopcGFyYW07CisKKwl6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpOworfQorCiB2b2lkIHpkX3VzYl9yZXNldF9yeF9pZGxlX3RpbWVyKHN0cnVjdCB6ZF91c2IgKnVzYikKIHsKIAlzdHJ1Y3QgemRfdXNiX3J4ICpyeCA9ICZ1c2ItPnJ4OwpAQCAtMTEyNyw2ICsxMTM1LDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3VzYl9yeChzdHJ1Y3QgemRfdXNiICp1c2IpCiB7CiAJc3RydWN0IHpkX3VzYl9yeCAqcnggPSAmdXNiLT5yeDsKKwogCXNwaW5fbG9ja19pbml0KCZyeC0+bG9jayk7CiAJbXV0ZXhfaW5pdCgmcngtPnNldHVwX211dGV4KTsKIAlpZiAoaW50ZXJmYWNlX3RvX3VzYmRldih1c2ItPmludGYpLT5zcGVlZCA9PSBVU0JfU1BFRURfSElHSCkgewpAQCAtMTEzNiwxMSArMTE0NSwxNCBAQAogCX0KIAlaRF9BU1NFUlQocngtPmZyYWdtZW50X2xlbmd0aCA9PSAwKTsKIAlJTklUX0RFTEFZRURfV09SSygmcngtPmlkbGVfd29yaywgemRfcnhfaWRsZV90aW1lcl9oYW5kbGVyKTsKKwlyeC0+cmVzZXRfdGltZXJfdGFza2xldC5mdW5jID0gemRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXJfdGFza2xldDsKKwlyeC0+cmVzZXRfdGltZXJfdGFza2xldC5kYXRhID0gKHVuc2lnbmVkIGxvbmcpdXNiOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKQogewogCXN0cnVjdCB6ZF91c2JfdHggKnR4ID0gJnVzYi0+dHg7CisKIAlzcGluX2xvY2tfaW5pdCgmdHgtPmxvY2spOwogCWF0b21pY19zZXQoJnR4LT5lbmFibGVkLCAwKTsKIAl0eC0+c3RvcHBlZCA9IDA7CkBAIC0xNjcxLDYgKzE2ODMsMTAgQEAKIAogCWlmICh1cmItPnN0YXR1cyAmJiAhdXNiLT5jbWRfZXJyb3IpCiAJCXVzYi0+Y21kX2Vycm9yID0gdXJiLT5zdGF0dXM7CisKKwlpZiAoIXVzYi0+Y21kX2Vycm9yICYmCisJCQl1cmItPmFjdHVhbF9sZW5ndGggIT0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoKQorCQl1c2ItPmNtZF9lcnJvciA9IC1FSU87CiB9CiAKIHN0YXRpYyBpbnQgemRfc3VibWl0X3dhaXRpbmdfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYiwgYm9vbCBsYXN0KQpAQCAtMTgwNSw3ICsxODIxLDcgQEAKIAl1c2JfZmlsbF9pbnRfdXJiKHVyYiwgdWRldiwgdXNiX3NuZGludHBpcGUodWRldiwgRVBfUkVHU19PVVQpLAogCQkJIHJlcSwgcmVxX2xlbiwgaW93cml0ZTE2dl91cmJfY29tcGxldGUsIHVzYiwKIAkJCSBlcC0+ZGVzYy5iSW50ZXJ2YWwpOwotCXVyYi0+dHJhbnNmZXJfZmxhZ3MgfD0gVVJCX0ZSRUVfQlVGRkVSIHwgVVJCX1NIT1JUX05PVF9PSzsKKwl1cmItPnRyYW5zZmVyX2ZsYWdzIHw9IFVSQl9GUkVFX0JVRkZFUjsKIAogCS8qIFN1Ym1pdCBwcmV2aW91cyBVUkIgKi8KIAlyID0gemRfc3VibWl0X3dhaXRpbmdfdXJiKHVzYiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfdXNiLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF91c2IuaAppbmRleCBiM2RmMmM4Li4zMjVkMGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF91c2IuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF91c2IuaApAQCAtMTgzLDYgKzE4Myw3IEBACiAJc3BpbmxvY2tfdCBsb2NrOwogCXN0cnVjdCBtdXRleCBzZXR1cF9tdXRleDsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGlkbGVfd29yazsKKwlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgcmVzZXRfdGltZXJfdGFza2xldDsKIAl1OCBmcmFnbWVudFsyICogVVNCX01BWF9SWF9TSVpFXTsKIAl1bnNpZ25lZCBpbnQgZnJhZ21lbnRfbGVuZ3RoOwogCXVuc2lnbmVkIGludCB1c2JfcGFja2V0X3NpemU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC94aWxpbnhfZW1hY2xpdGUuYyBiL2RyaXZlcnMvbmV0L3hpbGlueF9lbWFjbGl0ZS5jCmluZGV4IDI2NDJhZjQuLjM3MjU3MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3hpbGlueF9lbWFjbGl0ZS5jCisrKyBiL2RyaXZlcnMvbmV0L3hpbGlueF9lbWFjbGl0ZS5jCkBAIC03ODYsNyArNzg2LDcgQEAKICAqIEByZWc6CXJlZ2lzdGVyIG51bWJlciB0byB3cml0ZSB0bwogICogQHZhbDoJdmFsdWUgdG8gd3JpdGUgdG8gdGhlIHJlZ2lzdGVyIG51bWJlciBzcGVjaWZpZWQgYnkgcmVnCiAgKgotICogVGhpcyBmdWNudGlvbiB3YWl0cyB0aWxsIHRoZSBkZXZpY2UgaXMgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IE1ESU8KKyAqIFRoaXMgZnVuY3Rpb24gd2FpdHMgdGlsbCB0aGUgZGV2aWNlIGlzIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBNRElPCiAgKiByZXF1ZXN0IGFuZCB0aGVuIHdyaXRlcyB0aGUgdmFsIHRvIHRoZSBNRElPIFdyaXRlIERhdGEgcmVnaXN0ZXIuCiAgKi8KIHN0YXRpYyBpbnQgeGVtYWNsaXRlX21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3puZXQuYyBiL2RyaXZlcnMvbmV0L3puZXQuYwppbmRleCBhZTA3YjNkLi5lYzI4MDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC96bmV0LmMKKysrIGIvZHJpdmVycy9uZXQvem5ldC5jCkBAIC02NTIsNyArNjUyLDcgQEAKIAkJCQkJZGV2LT5zdGF0cy50eF9lcnJvcnMrKzsKIAogCQkJCS8qIFRyYW5zY2VpdmVyIG1heSBiZSBzdHVjayBpZiBjYWJsZQotCQkJCSAqIHdhcyByZW1vdmVkIHdoaWxlIGVtaXRpbmcgYQorCQkJCSAqIHdhcyByZW1vdmVkIHdoaWxlIGVtaXR0aW5nIGEKIAkJCQkgKiBwYWNrZXQuIEZsaXAgaXQgb2ZmLCB0aGVuIG9uIHRvCiAJCQkJICogcmVzZXQgaXQuIFRoaXMgaXMgdmVyeSBlbXBpcmljYWwsCiAJCQkJICogYnV0IGl0IHNlZW1zIHRvIHdvcmsuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2ZkdC5jIGIvZHJpdmVycy9vZi9mZHQuYwppbmRleCBjOWRiNDljLi44YjYzYTY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL29mL2ZkdC5jCisrKyBiL2RyaXZlcnMvb2YvZmR0LmMKQEAgLTY3Niw3ICs2NzYsNyBAQAogCiAJZWFybHlfaW5pdF9kdF9jaGVja19mb3JfaW5pdHJkKG5vZGUpOwogCi0JLyogUmV0cmVpdmUgY29tbWFuZCBsaW5lICovCisJLyogUmV0cmlldmUgY29tbWFuZCBsaW5lICovCiAJcCA9IG9mX2dldF9mbGF0X2R0X3Byb3Aobm9kZSwgImJvb3RhcmdzIiwgJmwpOwogCWlmIChwICE9IE5VTEwgJiYgbCA+IDApCiAJCXN0cmxjcHkoY21kX2xpbmUsIHAsIG1pbigoaW50KWwsIENPTU1BTkRfTElORV9TSVpFKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL29mX21kaW8uYyBiL2RyaXZlcnMvb2Yvb2ZfbWRpby5jCmluZGV4IGRjZDc4NTcuLmQzNWUzMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2Yvb2ZfbWRpby5jCisrKyBiL2RyaXZlcnMvb2Yvb2ZfbWRpby5jCkBAIC0xMzYsNyArMTM2LDcgQEAKICAqIEBobmRscjogTGluayBzdGF0ZSBjYWxsYmFjayBmb3IgdGhlIG5ldHdvcmsgZGV2aWNlCiAgKiBAaWZhY2U6IFBIWSBkYXRhIGludGVyZmFjZSB0eXBlCiAgKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2UgaWYgc3VjY2Vzc2Z1bGwuICBOVUxMIG90aGVyd2lzZQorICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2UgaWYgc3VjY2Vzc2Z1bC4gIE5VTEwgb3RoZXJ3aXNlCiAgKi8KIHN0cnVjdCBwaHlfZGV2aWNlICpvZl9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCSAgc3RydWN0IGRldmljZV9ub2RlICpwaHlfbnAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcmlzYy9wZGNfc3RhYmxlLmMgYi9kcml2ZXJzL3BhcmlzYy9wZGNfc3RhYmxlLmMKaW5kZXggMTA2MmI4Zi4uMjQ2YTkyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wYXJpc2MvcGRjX3N0YWJsZS5jCisrKyBiL2RyaXZlcnMvcGFyaXNjL3BkY19zdGFibGUuYwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgKiBAZW50cnk6IEEgcG9pbnRlciB0byBhbiBhbGxvY2F0ZWQgcGRjc3BhdGhfZW50cnkuCiAgKiAKICAqIFRoZSBnZW5lcmFsIGlkZWEgaXMgdGhhdCB5b3UgZG9uJ3QgcmVhZCBmcm9tIHRoZSBTdGFibGUgU3RvcmFnZSBldmVyeSB0aW1lCi0gKiB5b3UgYWNjZXNzIHRoZSBmaWxlcyBwcm92aWRlZCBieSB0aGUgZmFjaWxpdGVzLiBXZSBzdG9yZSBhIGNvcHkgb2YgdGhlCisgKiB5b3UgYWNjZXNzIHRoZSBmaWxlcyBwcm92aWRlZCBieSB0aGUgZmFjaWxpdGllcy4gV2Ugc3RvcmUgYSBjb3B5IG9mIHRoZQogICogY29udGVudCBvZiB0aGUgc3RhYmxlIHN0b3JhZ2UgV1JUIHZhcmlvdXMgcGF0aHMgaW4gdGhlc2Ugc3RydWN0cy4gV2UgcmVhZAogICogdGhlc2Ugc3RydWN0cyB3aGVuIHJlYWRpbmcgdGhlIGZpbGVzLCBhbmQgd2Ugd2lsbCB3cml0ZSB0byB0aGVzZSBzdHJ1Y3RzIHdoZW4KICAqIHdyaXRpbmcgdG8gdGhlIGZpbGVzLCBhbmQgb25seSB0aGVuIHdyaXRlIHRoZW0gYmFjayB0byB0aGUgU3RhYmxlIFN0b3JhZ2UuCkBAIC0yMTMsNyArMjEzLDcgQEAKIAogCS8qIGFkZHIsIGRldnBhdGggYW5kIGNvdW50IG11c3QgYmUgd29yZCBhbGlnbmVkICovCiAJaWYgKHBkY19zdGFibGVfd3JpdGUoZW50cnktPmFkZHIsIGRldnBhdGgsIHNpemVvZigqZGV2cGF0aCkpICE9IFBEQ19PSykgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBhbiBlcnJvciBvY2N1cmVkIHdoZW4gd3JpdGluZyB0byBQREMuXG4iCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGFuIGVycm9yIG9jY3VycmVkIHdoZW4gd3JpdGluZyB0byBQREMuXG4iCiAJCQkJIkl0IGlzIGxpa2VseSB0aGF0IHRoZSBTdGFibGUgU3RvcmFnZSBkYXRhIGhhcyBiZWVuIGNvcnJ1cHRlZC5cbiIKIAkJCQkiUGxlYXNlIGNoZWNrIGl0IGNhcmVmdWxseSB1cG9uIG5leHQgcmVib290LlxuIiwgX19mdW5jX18pOwogCQlXQVJOX09OKDEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJwb3J0L0tjb25maWcgYi9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZwppbmRleCA4NTVmMzg5Li5kOTIxODVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZworKysgYi9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZwpAQCAtMTQyLDcgKzE0Miw3IEBACiAJICB0aGUgQVg4ODc5NiBuZXR3b3JrIGNvbnRyb2xsZXIgY2hpcC4gVGhpcyBjb2RlIGlzIGFsc28gYXZhaWxhYmxlCiAJICBhcyBhIG1vZHVsZSAoc2F5IE0pLCBjYWxsZWQgcGFycG9ydF9heDg4Nzk2LgogCi0JICBUaGUgZHJpdmVyIGlzIG5vdCBkZXBlbmRhbnQgb24gdGhlIEFYODg3OTYgbmV0d29yayBkcml2ZXIsIGFuZAorCSAgVGhlIGRyaXZlciBpcyBub3QgZGVwZW5kZW50IG9uIHRoZSBBWDg4Nzk2IG5ldHdvcmsgZHJpdmVyLCBhbmQKIAkgIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIG5ldHdvcmtpbmcgZnVuY3Rpb25zIG9mIHRoZSBjaGlwLgogCiBjb25maWcgUEFSUE9SVF8xMjg0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcnBvcnQvaWVlZTEyODQuYyBiL2RyaXZlcnMvcGFycG9ydC9pZWVlMTI4NC5jCmluZGV4IDg5MDFlY2YuLmY5ZmQ0YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFycG9ydC9pZWVlMTI4NC5jCisrKyBiL2RyaXZlcnMvcGFycG9ydC9pZWVlMTI4NC5jCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkJcmV0dXJuIDA7CiAJfQogCi0JLyogR28gdG8gY29tcGFiaWxpdHkgZm9yd2FyZCBpZGxlIG1vZGUgKi8KKwkvKiBHbyB0byBjb21wYXRpYmlsaXR5IGZvcndhcmQgaWRsZSBtb2RlICovCiAJaWYgKHBvcnQtPmllZWUxMjg0Lm1vZGUgIT0gSUVFRTEyODRfTU9ERV9DT01QQVQpCiAJCXBhcnBvcnRfaWVlZTEyODRfdGVybWluYXRlIChwb3J0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYyBiL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMKaW5kZXggOGQ2MmZiNy4uYTM3NTVmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYworKysgYi9kcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9wYy5jCkBAIC0xNDg4LDcgKzE0ODgsNyBAQAogCiAJb3V0YihrZXksIGlvKTsKIAlvdXRiKGtleSwgaW8pOyAgICAgLyogV3JpdGUgTWFnaWMgU2VxdWVuY2UgdG8gRUZFUiwgZXh0ZW5kZWQKLQkJCSAgICAgIGZ1bnRpb24gZW5hYmxlIHJlZ2lzdGVyICovCisJCQkgICAgICBmdW5jdGlvbiBlbmFibGUgcmVnaXN0ZXIgKi8KIAlvdXRiKDB4MjAsIGlvKTsgICAgLyogV3JpdGUgRUZJUiwgZXh0ZW5kZWQgZnVuY3Rpb24gaW5kZXggcmVnaXN0ZXIgKi8KIAlkZXZpZCA9IGluYihpbyArIDEpOyAgLyogUmVhZCBFRkRSLCBleHRlbmRlZCBmdW5jdGlvbiBkYXRhIHJlZ2lzdGVyICovCiAJb3V0YigweDIxLCBpbyk7CkBAIC0xNTI3LDcgKzE1MjcsNyBAQAogCXhfb2xkaWQgPSBpbmIoaW8gKyAyKTsKIAogCW91dGIoa2V5LCBpbyk7ICAgICAvKiBXcml0ZSBNYWdpYyBCeXRlIHRvIEVGRVIsIGV4dGVuZGVkCi0JCQkgICAgICBmdW50aW9uIGVuYWJsZSByZWdpc3RlciAqLworCQkJICAgICAgZnVuY3Rpb24gZW5hYmxlIHJlZ2lzdGVyICovCiAJb3V0YigweDIwLCBpbyArIDIpOyAgLyogV3JpdGUgRUZJUiwgZXh0ZW5kZWQgZnVuY3Rpb24gaW5kZXggcmVnaXN0ZXIgKi8KIAlkZXZpZCA9IGluYihpbyArIDIpOyAgLyogUmVhZCBFRkRSLCBleHRlbmRlZCBmdW5jdGlvbiBkYXRhIHJlZ2lzdGVyICovCiAJb3V0YigweDIxLCBpbyArIDEpOwpAQCAtMTU2OSw3ICsxNTY5LDcgQEAKIAogCW91dGIoa2V5LCBpbyk7CiAJb3V0YihrZXksIGlvKTsgICAgIC8qIFdyaXRlIE1hZ2ljIFNlcXVlbmNlIHRvIEVGRVIsIGV4dGVuZGVkCi0JCQkgICAgICBmdW50aW9uIGVuYWJsZSByZWdpc3RlciAqLworCQkJICAgICAgZnVuY3Rpb24gZW5hYmxlIHJlZ2lzdGVyICovCiAJb3V0YigweDBkLCBpbyk7ICAgIC8qIFdyaXRlIEVGSVIsIGV4dGVuZGVkIGZ1bmN0aW9uIGluZGV4IHJlZ2lzdGVyICovCiAJb2xkaWQgPSBpbmIoaW8gKyAxKTsgIC8qIFJlYWQgRUZEUiwgZXh0ZW5kZWQgZnVuY3Rpb24gZGF0YSByZWdpc3RlciAqLwogCW91dGIoMHgwZSwgaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpX3BjaWhwLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlfcGNpaHAuYwppbmRleCAzYmM3MmQxLi44ZjNmYWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlfcGNpaHAuYworKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlfcGNpaHAuYwpAQCAtMzUxLDcgKzM1MSw3IEBACiAJICogVG8gaGFuZGxlIGRpZmZlcmVudCBCSU9TIGJlaGF2aW9yLCB3ZSBsb29rIGZvciBfT1NDIG9uIGEgcm9vdAogCSAqIGJyaWRnZSBwcmVmZXJlbnRpYWxseSAoYWNjb3JkaW5nIHRvIFBDSSBmdyBzcGVjKS4gTGF0ZXIgZm9yCiAJICogT1NIUCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBob3RwbHVnIGNvbnRyb2xsZXIgYW5kIGl0cyBwYXJlbnRzLAotCSAqIHVwdG8gdGhlIGhvc3QgYnJpZGdlIHVuZGVyIHdoaWNoIHRoaXMgY29udHJvbGxlciBleGlzdHMuCisJICogdXAgdG8gdGhlIGhvc3QgYnJpZGdlIHVuZGVyIHdoaWNoIHRoaXMgY29udHJvbGxlciBleGlzdHMuCiAJICovCiAJaGFuZGxlID0gYWNwaV9maW5kX3Jvb3RfYnJpZGdlX2hhbmRsZShwZGV2KTsKIAlpZiAoaGFuZGxlKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYwppbmRleCBlNjEwY2ZlLi4yZjY3ZTliIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKQEAgLTU4NSw3ICs1ODUsNyBAQAogCiAJLyoKIAkgKiBPbiByb290IGJyaWRnZXMgd2l0aCBob3RwbHVnIHNsb3RzIGRpcmVjdGx5IHVuZGVybmVhdGggKGllLAotCSAqIG5vIHAycCBicmlkZ2UgaW5iZXR3ZWVuKSwgd2UgY2FsbCBjbGVhbnVwX2JyaWRnZSgpLiAKKwkgKiBubyBwMnAgYnJpZGdlIGJldHdlZW4pLCB3ZSBjYWxsIGNsZWFudXBfYnJpZGdlKCkuIAogCSAqCiAJICogVGhlIGVsc2UgY2xhdXNlIGNsZWFucyB1cCByb290IGJyaWRnZXMgdGhhdCBlaXRoZXIgaGFkIG5vCiAJICogaG90cGx1ZyBzbG90cyBhdCBhbGwsIG9yIGhhZCBhIHAycCBicmlkZ2UgdW5kZXJuZWF0aC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcnBhcGhwX2NvcmUuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcnBhcGhwX2NvcmUuYwppbmRleCBlZjc0MTFjLi43NThhZGI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9ob3RwbHVnL3JwYXBocF9jb3JlLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFwaHBfY29yZS5jCkBAIC0yOTAsNyArMjkwLDcgQEAKICAqIEBkbjogZGV2aWNlIG5vZGUgb2Ygc2xvdAogICoKICAqIFRoaXMgc3Vicm91dGluZSB3aWxsIHJlZ2lzdGVyIGEgaG90cGx1Z2FibGUgc2xvdCB3aXRoIHRoZQotICogUENJIGhvdHBsdWcgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgcm91dGluZSBpcyB0eXBpY2FseSBjYWxsZWQKKyAqIFBDSSBob3RwbHVnIGluZnJhc3RydWN0dXJlLiBUaGlzIHJvdXRpbmUgaXMgdHlwaWNhbGx5IGNhbGxlZAogICogZHVyaW5nIGJvb3QgdGltZSwgaWYgdGhlIGhvdHBsdWcgc2xvdHMgYXJlIHByZXNlbnQgYXQgYm9vdCB0aW1lLAogICogb3IgaXMgY2FsbGVkIGxhdGVyLCBieSB0aGUgZGxwYXIgYWRkIGNvZGUsIGlmIHRoZSBzbG90IGlzCiAgKiBiZWluZyBkeW5hbWljYWxseSBhZGRlZCBkdXJpbmcgcnVudGltZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2ludGVsLWlvbW11LmMgYi9kcml2ZXJzL3BjaS9pbnRlbC1pb21tdS5jCmluZGV4IDdkYTNiZWYuLjUwNWMxYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2ludGVsLWlvbW11LmMKKysrIGIvZHJpdmVycy9wY2kvaW50ZWwtaW9tbXUuYwpAQCAtMjI2NSw3ICsyMjY1LDcgQEAKIAkJLyoKIAkJICogVEJEOgogCQkgKiB3ZSBjb3VsZCBzaGFyZSB0aGUgc2FtZSByb290ICYgY29udGV4dCB0YWJsZXMKLQkJICogYW1vdW5nIGFsbCBJT01NVSdzLiBOZWVkIHRvIFNwbGl0IGl0IGxhdGVyLgorCQkgKiBhbW9uZyBhbGwgSU9NTVUncy4gTmVlZCB0byBTcGxpdCBpdCBsYXRlci4KIAkJICovCiAJCXJldCA9IGlvbW11X2FsbG9jX3Jvb3RfZW50cnkoaW9tbXUpOwogCQlpZiAocmV0KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9pbnRyX3JlbWFwcGluZy5jIGIvZHJpdmVycy9wY2kvaW50cl9yZW1hcHBpbmcuYwppbmRleCBhMjI1NTdiLi4zNjA3ZmFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9pbnRyX3JlbWFwcGluZy5jCisrKyBiL2RyaXZlcnMvcGNpL2ludHJfcmVtYXBwaW5nLmMKQEAgLTI4OSw3ICsyODksNyBAQAogICogc291cmNlIHZhbGlkYXRpb24gdHlwZQogICovCiAjZGVmaW5lIFNWVF9OT19WRVJJRlkJCTB4MCAgLyogbm8gdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkICovCi0jZGVmaW5lIFNWVF9WRVJJRllfU0lEX1NRCTB4MSAgLyogdmVyaWZ5IHVzaW5nIFNJRCBhbmQgU1EgZmllbHMgKi8KKyNkZWZpbmUgU1ZUX1ZFUklGWV9TSURfU1EJMHgxICAvKiB2ZXJpZnkgdXNpbmcgU0lEIGFuZCBTUSBmaWVsZHMgKi8KICNkZWZpbmUgU1ZUX1ZFUklGWV9CVVMJCTB4MiAgLyogdmVyaWZ5IGJ1cyBvZiByZXF1ZXN0LWlkICovCiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9pb3ZhLmMgYi9kcml2ZXJzL3BjaS9pb3ZhLmMKaW5kZXggNzkxNDk1MS4uOTYwNmU1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaW92YS5jCisrKyBiL2RyaXZlcnMvcGNpL2lvdmEuYwpAQCAtMzkxLDcgKzM5MSw3IEBACiAJCQkJYnJlYWs7CiAJfQogCi0JLyogV2UgYXJlIGhlcmUgZWl0aGVyIGJlY2FzdWUgdGhpcyBpcyB0aGUgZmlyc3QgcmVzZXJ2ZXIgbm9kZQorCS8qIFdlIGFyZSBoZXJlIGVpdGhlciBiZWNhdXNlIHRoaXMgaXMgdGhlIGZpcnN0IHJlc2VydmVyIG5vZGUKIAkgKiBvciBuZWVkIHRvIGluc2VydCByZW1haW5pbmcgbm9uIG92ZXJsYXAgYWRkciByYW5nZQogCSAqLwogCWlvdmEgPSBfX2luc2VydF9uZXdfcmFuZ2UoaW92YWQsIHBmbl9sbywgcGZuX2hpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3BjaS1zeXNmcy5jIGIvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMKaW5kZXggYThhMjc3YS4uZjhkZWIzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMKKysrIGIvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMKQEAgLTY0NSw3ICs2NDUsNyBAQAogICogYSBwZXItYnVzIGJhc2lzLiAgVGhpcyByb3V0aW5lIGNyZWF0ZXMgdGhlIGZpbGVzIGFuZCB0aWVzIHRoZW0gaW50bwogICogdGhlaXIgYXNzb2NpYXRlZCByZWFkLCB3cml0ZSBhbmQgbW1hcCBmaWxlcyBmcm9tIHBjaS1zeXNmcy5jCiAgKgotICogT24gZXJyb3IgdW53aW5kLCBidXQgZG9uJ3QgcHJvcG9nYXRlIHRoZSBlcnJvciB0byB0aGUgY2FsbGVyCisgKiBPbiBlcnJvciB1bndpbmQsIGJ1dCBkb24ndCBwcm9wYWdhdGUgdGhlIGVycm9yIHRvIHRoZSBjYWxsZXIKICAqIGFzIGl0IGlzIG9rIHRvIHNldCB1cCB0aGUgUENJIGJ1cyB3aXRob3V0IHRoZXNlIGZpbGVzLgogICovCiB2b2lkIHBjaV9jcmVhdGVfbGVnYWN5X2ZpbGVzKHN0cnVjdCBwY2lfYnVzICpiKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcXVpcmtzLmMgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwppbmRleCBiZDgwZjYzLi41MTI5ZWQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9xdWlya3MuYworKysgYi9kcml2ZXJzL3BjaS9xdWlya3MuYwpAQCAtMjYzLDcgKzI2Myw3IEBACiAJICoJVGhpcyBoYXBwZW5zIHRvIGluY2x1ZGUgdGhlIElERSBjb250cm9sbGVycy4uLi4KIAkgKgogCSAqCVZJQSBvbmx5IGFwcGx5IHRoaXMgZml4IHdoZW4gYW4gU0IgTGl2ZSEgaXMgcHJlc2VudCBidXQgdW5kZXIKLQkgKglib3RoIExpbnV4IGFuZCBXaW5kb3dzIHRoaXMgaXNudCBlbm91Z2gsIGFuZCB3ZSBoYXZlIHNlZW4KKwkgKglib3RoIExpbnV4IGFuZCBXaW5kb3dzIHRoaXMgaXNuJ3QgZW5vdWdoLCBhbmQgd2UgaGF2ZSBzZWVuCiAJICoJY29ycnVwdGlvbiB3aXRob3V0IFNCIExpdmUhIGJ1dCB3aXRoIHRoaW5ncyBsaWtlIDMgVURNQSBJREUKIAkgKgljb250cm9sbGVycy4gU28gd2UgaWdub3JlIHRoYXQgYml0IG9mIHRoZSBWSUEgcmVjb21tZW5kYXRpb24uLgogCSAqLwpAQCAtMjY4MCw3ICsyNjgwLDcgQEAKICAqIFRoaXMgaXMgYSBxdWlyayBmb3IgdGhlIFJpY29oIE1NQyBjb250cm9sbGVyIGZvdW5kIGFzIGEgcGFydCBvZgogICogc29tZSBtdWxpZnVuY3Rpb24gY2hpcHMuCiAKLSAqIFRoaXMgaXMgdmVyeSBzaW1pbGlhciBhbmQgYmFzZWQgb24gdGhlIHJpY29oX21tYyBkcml2ZXIgd3JpdHRlbiBieQorICogVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgYW5kIGJhc2VkIG9uIHRoZSByaWNvaF9tbWMgZHJpdmVyIHdyaXR0ZW4gYnkKICAqIFBoaWxpcCBMYW5nZGFsZS4gVGhhbmsgeW91IGZvciB0aGVzZSBtYWdpYyBzZXF1ZW5jZXMuCiAgKgogICogVGhlc2UgY2hpcHMgaW1wbGVtZW50IHRoZSBmb3VyIG1haW4gbWVtb3J5IGNhcmQgY29udHJvbGxlcnMgKFNELCBNTUMsIE1TLCB4RCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3NldHVwLWJ1cy5jIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKaW5kZXggODlkMGE2YS4uZWJmNTFhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKKysrIGIvZHJpdmVycy9wY2kvc2V0dXAtYnVzLmMKQEAgLTY3NiwxMCArNjc2LDEwIEBACiAJCQltaW5fYWxpZ24gPSBhbGlnbjEgPj4gMTsKIAkJYWxpZ24gKz0gYWxpZ25zW29yZGVyXTsKIAl9Ci0Jc2l6ZTAgPSBjYWxjdWxhdGVfbWVtc2l6ZShzaXplLCBtaW5fc2l6ZSwgMCwgcmVzb3VyY2Vfc2l6ZShiX3JlcyksIGFsaWduKTsKKwlzaXplMCA9IGNhbGN1bGF0ZV9tZW1zaXplKHNpemUsIG1pbl9zaXplLCAwLCByZXNvdXJjZV9zaXplKGJfcmVzKSwgbWluX2FsaWduKTsKIAlzaXplMSA9ICFhZGRfc2l6ZSA/IHNpemUgOgogCQljYWxjdWxhdGVfbWVtc2l6ZShzaXplLCBtaW5fc2l6ZSthZGRfc2l6ZSwgMCwKLQkJCQlyZXNvdXJjZV9zaXplKGJfcmVzKSwgYWxpZ24pOworCQkJCXJlc291cmNlX3NpemUoYl9yZXMpLCBtaW5fYWxpZ24pOwogCWlmICghc2l6ZTAgJiYgIXNpemUxKSB7CiAJCWlmIChiX3Jlcy0+c3RhcnQgfHwgYl9yZXMtPmVuZCkKIAkJCWRldl9pbmZvKCZidXMtPnNlbGYtPmRldiwgImRpc2FibGluZyBicmlkZ2Ugd2luZG93ICIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNtY2lhL2k4MjA5Mi5jIGIvZHJpdmVycy9wY21jaWEvaTgyMDkyLmMKaW5kZXggZmM3OTA2ZS4uM2U0NDdkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL2k4MjA5Mi5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL2k4MjA5Mi5jCkBAIC01NCw3ICs1NCw3IEBACiAJLnNldF9tZW1fbWFwCQk9IGk4MjA5MmFhX3NldF9tZW1fbWFwLAogfTsKIAotLyogVGhlIGNhcmQgY2FuIGRvIHVwdG8gNCBzb2NrZXRzLCBhbGxvY2F0ZSBhIHN0cnVjdHVyZSBmb3IgZWFjaCBvZiB0aGVtICovCisvKiBUaGUgY2FyZCBjYW4gZG8gdXAgdG8gNCBzb2NrZXRzLCBhbGxvY2F0ZSBhIHN0cnVjdHVyZSBmb3IgZWFjaCBvZiB0aGVtICovCiAKIHN0cnVjdCBzb2NrZXRfaW5mbyB7CiAJaW50CW51bWJlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jIGIvZHJpdmVycy9wY21jaWEvcGNtY2lhX3Jlc291cmNlLmMKaW5kZXggNDJmYmYxYS4uZmU3N2U4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY21jaWEvcGNtY2lhX3Jlc291cmNlLmMKKysrIGIvZHJpdmVycy9wY21jaWEvcGNtY2lhX3Jlc291cmNlLmMKQEAgLTE3Myw3ICsxNzMsNyBAQAogCWMgPSBwX2Rldi0+ZnVuY3Rpb25fY29uZmlnOwogCiAJaWYgKCEoYy0+c3RhdGUgJiBDT05GSUdfTE9DS0VEKSkgewotCQlkZXZfZGJnKCZwX2Rldi0+ZGV2LCAiQ29uZmlndXJhdGlvbiBpc250J3QgbG9ja2VkXG4iKTsKKwkJZGV2X2RiZygmcF9kZXYtPmRldiwgIkNvbmZpZ3VyYXRpb24gaXNuJ3QndCBsb2NrZWRcbiIpOwogCQltdXRleF91bmxvY2soJnMtPm9wc19tdXRleCk7CiAJCXJldHVybiAtRUFDQ0VTOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNtY2lhL3B4YTJ4eF9sdWJib2NrLmMgYi9kcml2ZXJzL3BjbWNpYS9weGEyeHhfbHViYm9jay5jCmluZGV4IDI1YWZlNjMuLmMyMTg4OGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL3B4YTJ4eF9sdWJib2NrLmMKKysrIGIvZHJpdmVycy9wY21jaWEvcHhhMnh4X2x1YmJvY2suYwpAQCAtMTg3LDcgKzE4Nyw3IEBACiAJCQkgKiBXZSBuZWVkIHRvIGhhY2sgYXJvdW5kIHRoZSBjb25zdCBxdWFsaWZpZXIgYXMKIAkJCSAqIHdlbGwgdG8ga2VlcCB0aGlzIHVnbHkgd29ya2Fyb3VuZCBsb2NhbGl6ZWQgYW5kCiAJCQkgKiBub3QgZm9yY2UgaXQgdG8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUuIEJhcmYgYmFncwotCQkJICogYXZhbGlhYmxlIGluIHRoZSBzZWF0IHBvY2tldCBpbiBmcm9udCBvZiB5b3UhCisJCQkgKiBhdmFpbGFibGUgaW4gdGhlIHNlYXQgcG9ja2V0IGluIGZyb250IG9mIHlvdSEKIAkJCSAqLwogCQkJKChzb2NrZXRfc3RhdGVfdCAqKXN0YXRlKS0+VmNjID0gNTA7CiAJCQkoKHNvY2tldF9zdGF0ZV90ICopc3RhdGUpLT5WcHAgPSA1MDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oIGIvZHJpdmVycy9wY21jaWEvdGkxMTN4LmgKaW5kZXggOWZmYTk3ZC4uYTcxNzg5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY21jaWEvdGkxMTN4LmgKKysrIGIvZHJpdmVycy9wY21jaWEvdGkxMTN4LmgKQEAgLTY5MSw3ICs2OTEsNyBAQAogCQkvKgogCQkgKiB0aG9zZSBhcmUgZWl0aGVyIHNpbmdsZSBvciBkdWFsIHNsb3QgQ0Igd2l0aCBhZGRpdGlvbmFsIGZ1bmN0aW9ucwogCQkgKiBsaWtlIDEzOTQsIHNtYXJ0Y2FyZCByZWFkZXIsIGV0Yy4gY2hlY2sgdGhlIFRJRUFMTCBmbGFnIGZvciB0aGVtCi0JCSAqIHRoZSBUSUVBTEwgZmxhZyBiaW5kcyB0aGUgSVJRIG9mIGFsbCBmdW5jdGlvbnMgdG9naGV0aGVyLgorCQkgKiB0aGUgVElFQUxMIGZsYWcgYmluZHMgdGhlIElSUSBvZiBhbGwgZnVuY3Rpb25zIHRvZ2V0aGVyLgogCQkgKiB3ZSBjYXRjaCB0aGUgc2luZ2xlIHNsb3QgdmFyaWFudHMgbGF0ZXIuCiAJCSAqLwogCQlzeXNjdGwgPSBjb25maWdfcmVhZGwoc29ja2V0LCBUSTExM1hfU1lTVEVNX0NPTlRST0wpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfbWlkX3RoZXJtYWwuYyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF90aGVybWFsLmMKaW5kZXggNmMxMmRiNS4uYzJmNGJkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfbWlkX3RoZXJtYWwuYworKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbF9taWRfdGhlcm1hbC5jCkBAIC0yMDIsNyArMjAyLDcgQEAKICAgICAgICBpZiAocmV0KQogICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKIAotICAgICAgIC8qIFNoaWZ0IGJpdHMgdG8gYWNjb21vZGF0ZSB0aGUgbG93ZXIgdHdvIGRhdGEgYml0cyAqLworICAgICAgIC8qIFNoaWZ0IGJpdHMgdG8gYWNjb21tb2RhdGUgdGhlIGxvd2VyIHR3byBkYXRhIGJpdHMgKi8KICAgICAgICBhZGNfdmFsID0gKGRhdGEgPDwgMik7CiAgICAgICAgYWRkcisrOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BucC9jYXJkLmMgYi9kcml2ZXJzL3BucC9jYXJkLmMKaW5kZXggNGE2NTFmNi4uYmMwMDY5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbnAvY2FyZC5jCisrKyBiL2RyaXZlcnMvcG5wL2NhcmQuYwpAQCAtMzIwLDcgKzMyMCw3IEBACiAgKiBwbnBfcmVxdWVzdF9jYXJkX2RldmljZSAtIFNlYXJjaGVzIGZvciBhIFBuUCBkZXZpY2UgdW5kZXIgdGhlIHNwZWNpZmllZCBjYXJkCiAgKiBAY2xpbms6IHBvaW50ZXIgdG8gdGhlIGNhcmQgbGluaywgY2Fubm90IGJlIE5VTEwKICAqIEBpZDogcG9pbnRlciB0byBhIFBuUCBJRCBzdHJ1Y3R1cmUgdGhhdCBleHBsYWlucyB0aGUgcnVsZXMgZm9yIGZpbmRpbmcgdGhlIGRldmljZQotICogQGZyb206IFN0YXJ0aW5nIHBsYWNlIHRvIHNlYXJjaCBmcm9tLiBJZiBOVUxMIGl0IHdpbGwgc3RhcnQgZnJvbSB0aGUgYmVnaW5pbmcuCisgKiBAZnJvbTogU3RhcnRpbmcgcGxhY2UgdG8gc2VhcmNoIGZyb20uIElmIE5VTEwgaXQgd2lsbCBzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcuCiAgKi8KIHN0cnVjdCBwbnBfZGV2ICpwbnBfcmVxdWVzdF9jYXJkX2RldmljZShzdHJ1Y3QgcG5wX2NhcmRfbGluayAqY2xpbmssCiAJCQkJCWNvbnN0IGNoYXIgKmlkLCBzdHJ1Y3QgcG5wX2RldiAqZnJvbSkKQEAgLTM2OSw3ICszNjksNyBAQAogCiAvKioKICAqIHBucF9yZWxlYXNlX2NhcmRfZGV2aWNlIC0gY2FsbCB0aGlzIHdoZW4gdGhlIGRyaXZlciBubyBsb25nZXIgbmVlZHMgdGhlIGRldmljZQotICogQGRldjogcG9pbnRlciB0byB0aGUgUG5QIGRldmljZSBzdHVjdHVyZQorICogQGRldjogcG9pbnRlciB0byB0aGUgUG5QIGRldmljZSBzdHJ1Y3R1cmUKICAqLwogdm9pZCBwbnBfcmVsZWFzZV9jYXJkX2RldmljZShzdHJ1Y3QgcG5wX2RldiAqZGV2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbnAvcG5wYmlvcy9iaW9zY2FsbHMuYyBiL2RyaXZlcnMvcG5wL3BucGJpb3MvYmlvc2NhbGxzLmMKaW5kZXggODU5MWY2YS4uYjg1OWQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbnAvcG5wYmlvcy9iaW9zY2FsbHMuYworKysgYi9kcml2ZXJzL3BucC9wbnBiaW9zL2Jpb3NjYWxscy5jCkBAIC0yMTksNyArMjE5LDcgQEAKIAkJICAgICAgIG1vZHVsZSk7CiAJCWJyZWFrOwogCWNhc2UgUE5QX0hBUkRXQVJFX0VSUk9SOgotCQlwcmludGsoS0VSTl9FUlIgIlBuUEJJT1M6ICVzOiBhIGhhcmR3YXJlIGZhaWx1cmUgaGFzIG9jY3VyZWRcbiIsCisJCXByaW50ayhLRVJOX0VSUiAiUG5QQklPUzogJXM6IGEgaGFyZHdhcmUgZmFpbHVyZSBoYXMgb2NjdXJyZWRcbiIsCiAJCSAgICAgICBtb2R1bGUpOwogCQlicmVhazsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wcHMvS2NvbmZpZyBiL2RyaXZlcnMvcHBzL0tjb25maWcKaW5kZXggZjBkMzM3Ni4uMjU4Y2E1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wcHMvS2NvbmZpZworKysgYi9kcml2ZXJzL3Bwcy9LY29uZmlnCkBAIC0zNSw3ICszNSw3IEBACiAJZGVwZW5kcyBvbiBQUFMgJiYgIU5PX0haCiAJaGVscAogCSAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBkaXJlY3QgaW4ta2VybmVsIHRpbWUKLQkgIHN5bmNyb25pemF0aW9uIHVzaW5nIGFuIGV4dGVybmFsIFBQUyBzaWduYWwuCisJICBzeW5jaHJvbml6YXRpb24gdXNpbmcgYW4gZXh0ZXJuYWwgUFBTIHNpZ25hbC4KIAogCSAgSXQgZG9lc24ndCB3b3JrIG9uIHRpY2tsZXNzIHN5c3RlbXMgYXQgdGhlIG1vbWVudC4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wczMvcHMzLWxwbS5jIGIvZHJpdmVycy9wczMvcHMzLWxwbS5jCmluZGV4IDgwMDA5ODUuLjY0MzY5N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHMzL3BzMy1scG0uYworKysgYi9kcml2ZXJzL3BzMy9wczMtbHBtLmMKQEAgLTkxOSw3ICs5MTksNyBAQAogICogQG9mZnNldDogT2Zmc2V0IGluIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0cmFjZSBidWZmZXIuCiAgKiBAYnVmOiBDb3B5IGRlc3RpbmF0aW9uLgogICogQGNvdW50OiBNYXhpbXVtIGNvdW50IG9mIGJ5dGVzIHRvIGNvcHkuCi0gKiBAYnl0ZXNfY29waWVkOiBQb2ludGVyIHRvIGEgdmFyaWFibGUgdGhhdCB3aWxsIHJlY2lldmUgdGhlIG51bWJlciBvZgorICogQGJ5dGVzX2NvcGllZDogUG9pbnRlciB0byBhIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBudW1iZXIgb2YKICAqICBieXRlcyBjb3BpZWQgdG8gQGJ1Zi4KICAqCiAgKiBPbiBlcnJvciBAYnVmIHdpbGwgY29udGFpbiBhbnkgc3VjY2Vzc2Z1bGx5IGNvcGllZCB0cmFjZSBidWZmZXIgZGF0YQpAQCAtOTc0LDcgKzk3NCw3IEBACiAgKiBAb2Zmc2V0OiBPZmZzZXQgaW4gYnl0ZXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHRyYWNlIGJ1ZmZlci4KICAqIEBidWY6IEEgX191c2VyIGNvcHkgZGVzdGluYXRpb24uCiAgKiBAY291bnQ6IE1heGltdW0gY291bnQgb2YgYnl0ZXMgdG8gY29weS4KLSAqIEBieXRlc19jb3BpZWQ6IFBvaW50ZXIgdG8gYSB2YXJpYWJsZSB0aGF0IHdpbGwgcmVjaWV2ZSB0aGUgbnVtYmVyIG9mCisgKiBAYnl0ZXNfY29waWVkOiBQb2ludGVyIHRvIGEgdmFyaWFibGUgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIG51bWJlciBvZgogICogIGJ5dGVzIGNvcGllZCB0byBAYnVmLgogICoKICAqIE9uIGVycm9yIEBidWYgd2lsbCBjb250YWluIGFueSBzdWNjZXNzZnVsbHkgY29waWVkIHRyYWNlIGJ1ZmZlciBkYXRhCkBAIC0xMDc0LDcgKzEwNzQsNyBAQAogCiAvKioKICAqIHBzM19scG1fb3BlbiAtIE9wZW4gdGhlIGxvZ2ljYWwgcGVyZm9ybWFuY2UgbW9uaXRvciBkZXZpY2UuCi0gKiBAdGJfdHlwZTogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRyYWNlIGJ1ZmZlciBsdjEgc291bGQgdXNlIGZvciB0aGlzIGxwbQorICogQHRiX3R5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiB0cmFjZSBidWZmZXIgbHYxIHNob3VsZCB1c2UgZm9yIHRoaXMgbHBtCiAgKiAgaW5zdGFuY2UsIHNwZWNpZmllZCBieSBvbmUgb2YgZW51bSBwczNfbHBtX3RiX3R5cGUuCiAgKiBAdGJfY2FjaGU6IE9wdGlvbmFsIHVzZXIgc3VwcGxpZWQgYnVmZmVyIHRvIHVzZSBhcyB0aGUgdHJhY2UgYnVmZmVyIGNhY2hlLgogICogIElmIE5VTEwsIHRoZSBkcml2ZXIgd2lsbCBhbGxvY2F0ZSBhbmQgbWFuYWdlIGFuIGludGVybmFsIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jIGIvZHJpdmVycy9wczMvcHMzLXN5cy1tYW5hZ2VyLmMKaW5kZXggZDM3YzQ0NS4uMWI5ODM2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wczMvcHMzLXN5cy1tYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9wczMvcHMzLXN5cy1tYW5hZ2VyLmMKQEAgLTgwLDcgKzgwLDcgQEAKICAqCiAgKiBDdXJyZW50bHkgYWxsIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhlIHN5c3RlbSBtYW5hZ2VyIGFyZSBlaXRoZXIKICAqICgxNiBieXRlcyBoZWFkZXIgKyA4IGJ5dGVzIHBheWxvYWQgPSAyNCBieXRlcykgb3IgKDE2IGJ5dGVzIGhlYWRlcgotICogKyAxNiBieXRlcyBwYXlsb2FkID0gMzIgYnl0ZXMpLiAgVGhpcyBrbm93bGVnZSBpcyB1c2VkIHRvIHNpbXBsaWZ5CisgKiArIDE2IGJ5dGVzIHBheWxvYWQgPSAzMiBieXRlcykuICBUaGlzIGtub3dsZWRnZSBpcyB1c2VkIHRvIHNpbXBsaWZ5CiAgKiB0aGUgbG9naWMuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMgYi9kcml2ZXJzL3JhcGlkaW8vcmlvLXNjYW4uYwppbmRleCAzYTU5ZDVmLi5lZTg5MzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3JhcGlkaW8vcmlvLXNjYW4uYworKysgYi9kcml2ZXJzL3JhcGlkaW8vcmlvLXNjYW4uYwpAQCAtMjk1LDcgKzI5NSw3IEBACiB9CiAKIC8qKgotICogcmlvX2VuYWJsZV9yeF90eF9wb3J0IC0gZW5hYmxlIGlucHV0IHJlY2lldmVyIGFuZCBvdXRwdXQgdHJhbnNtaXR0ZXIgb2YKKyAqIHJpb19lbmFibGVfcnhfdHhfcG9ydCAtIGVuYWJsZSBpbnB1dCByZWNlaXZlciBhbmQgb3V0cHV0IHRyYW5zbWl0dGVyIG9mCiAgKiBnaXZlbiBwb3J0CiAgKiBAcG9ydDogTWFzdGVyIHBvcnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBSSU8gbmV0d29yawogICogQGxvY2FsOiBsb2NhbD0xIHNlbGVjdCBsb2NhbCBwb3J0IG90aGVyd2lzZSBhIGZhciBkZXZpY2UgaXMgcmVhY2hlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9yZWd1bGF0b3IvY29yZS5jIGIvZHJpdmVycy9yZWd1bGF0b3IvY29yZS5jCmluZGV4IDNmZmM2OTcuLjBmYWU1MWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcmVndWxhdG9yL2NvcmUuYworKysgYi9kcml2ZXJzL3JlZ3VsYXRvci9jb3JlLmMKQEAgLTEzMTMsNyArMTMxMyw3IEBACiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJCS8qIFF1ZXJ5IGJlZm9yZSBlbmFibGluZyBpbiBjYXNlIGNvbmZpZ3VyYXRpb24KLQkJCSAqIGRlcGVuZGFudC4gICovCisJCQkgKiBkZXBlbmRlbnQuICAqLwogCQkJcmV0ID0gX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX3RpbWUocmRldik7CiAJCQlpZiAocmV0ID49IDApIHsKIAkJCQlkZWxheSA9IHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmVndWxhdG9yL21heDg5NTIuYyBiL2RyaXZlcnMvcmVndWxhdG9yL21heDg5NTIuYwppbmRleCBhOGY0ZWNmLi5kYWZmN2ZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3JlZ3VsYXRvci9tYXg4OTUyLmMKKysrIGIvZHJpdmVycy9yZWd1bGF0b3IvbWF4ODk1Mi5jCkBAIC0yNjIsNyArMjYyLDcgQEAKIAogCWlmIChlcnIpIHsKIAkJZGV2X3dhcm4obWF4ODk1Mi0+ZGV2LCAiVklEMC8xIGdwaW8gaW52YWxpZDogIgotCQkJCSJEVlMgbm90IGF2aWxhYmxlLlxuIik7CisJCQkJIkRWUyBub3QgYXZhaWxhYmxlLlxuIik7CiAJCW1heDg5NTItPnZpZDAgPSAwOwogCQltYXg4OTUyLT52aWQxID0gMDsKIAkJLyogTWFyayBpbnZhbGlkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvcnRjL2ludGVyZmFjZS5jCmluZGV4IDhlYzZiMDYuLjIzNzE5ZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL2ludGVyZmFjZS5jCisrKyBiL2RyaXZlcnMvcnRjL2ludGVyZmFjZS5jCkBAIC00NTQsNyArNDU0LDcgQEAKICAqIEBydGM6IHBvaW50ZXIgdG8gdGhlIHJ0YyBkZXZpY2UKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGFuIEFJRSwgVUlFIG9yIFBJRSBtb2RlIGludGVycnVwdAotICogaGFzIG9jY3VyZWQgKG9yIGJlZW4gZW11bGF0ZWQpLgorICogaGFzIG9jY3VycmVkIChvciBiZWVuIGVtdWxhdGVkKS4KICAqCiAgKiBUcmlnZ2VycyB0aGUgcmVnaXN0ZXJlZCBpcnFfdGFzayBmdW5jdGlvbiBjYWxsYmFjay4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLWF0OTFybTkyMDAuYyBiL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMKaW5kZXggNTE4YTc2ZS4uZTM5Yjc3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWF0OTFybTkyMDAuYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jCkBAIC02MCw3ICs2MCw3IEBACiAJLyoKIAkgKiBUaGUgQ2FsZW5kYXIgQWxhcm0gcmVnaXN0ZXIgZG9lcyBub3QgaGF2ZSBhIGZpZWxkIGZvcgogCSAqIHRoZSB5ZWFyIC0gc28gdGhlc2Ugd2lsbCByZXR1cm4gYW4gaW52YWxpZCB2YWx1ZS4gIFdoZW4gYW4KLQkgKiBhbGFybSBpcyBzZXQsIGF0OTFfYWxhcm1feWVhciB3aWxsZSBzdG9yZSB0aGUgY3VycmVudCB5ZWFyLgorCSAqIGFsYXJtIGlzIHNldCwgYXQ5MV9hbGFybV95ZWFyIHdpbGwgc3RvcmUgdGhlIGN1cnJlbnQgeWVhci4KIAkgKi8KIAl0bS0+dG1feWVhciAgPSBiY2QyYmluKGRhdGUgJiBBVDkxX1JUQ19DRU5UKSAqIDEwMDsJLyogY2VudHVyeSAqLwogCXRtLT50bV95ZWFyICs9IGJjZDJiaW4oKGRhdGUgJiBBVDkxX1JUQ19ZRUFSKSA+PiA4KTsJLyogeWVhciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLWJmaW4uYyBiL2RyaXZlcnMvcnRjL3J0Yy1iZmluLmMKaW5kZXggY2E5Y2ZmOC4uYTBmYzRjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWJmaW4uYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtYmZpbi5jCkBAIC0yMCw5ICsyMCw5IEBACiAgKiB3cml0ZSB3b3VsZCBiZSBkaXNjYXJkZWQgYW5kIHRoaW5ncyBxdWlja2x5IGZhbGwgYXBhcnQuCiAgKgogICogVG8ga2VlcCB0aGlzIGRlbGF5IGZyb20gc2lnbmlmaWNhbnRseSBkZWdyYWRpbmcgcGVyZm9ybWFuY2UgKHdlLCBpbiB0aGVvcnksCi0gKiB3b3VsZCBoYXZlIHRvIHNsZWVwIGZvciB1cCB0byAxIHNlY29uZCBldmVyeXRpbWUgd2Ugd2FudGVkIHRvIHdyaXRlIGEKKyAqIHdvdWxkIGhhdmUgdG8gc2xlZXAgZm9yIHVwIHRvIDEgc2Vjb25kIGV2ZXJ5IHRpbWUgd2Ugd2FudGVkIHRvIHdyaXRlIGEKICAqIHJlZ2lzdGVyKSwgd2Ugb25seSBjaGVjayB0aGUgd3JpdGUgcGVuZGluZyBzdGF0dXMgYmVmb3JlIHdlIHN0YXJ0IHRvIGlzc3VlCi0gKiBhIG5ldyB3cml0ZS4gIFdlIGJhbmsgb24gdGhlIGlkZWEgdGhhdCBpdCBkb2VzbnQgbWF0dGVyIHdoZW4gdGhlIHN5bmMKKyAqIGEgbmV3IHdyaXRlLiAgV2UgYmFuayBvbiB0aGUgaWRlYSB0aGF0IGl0IGRvZXNuJ3QgbWF0dGVyIHdoZW4gdGhlIHN5bmMKICAqIGhhcHBlbnMgc28gbG9uZyBhcyB3ZSBkb24ndCBhdHRlbXB0IGFub3RoZXIgd3JpdGUgYmVmb3JlIGl0IGRvZXMuICBUaGUgb25seQogICogdGltZSB1c2Vyc3BhY2Ugd291bGQgdGFrZSB0aGlzIHBlbmFsdHkgaXMgd2hlbiB0aGV5IHRyeSBhbmQgZG8gbXVsdGlwbGUKICAqIG9wZXJhdGlvbnMgcmlnaHQgYWZ0ZXIgYW5vdGhlciAuLi4gYnV0IGluIHRoaXMgY2FzZSwgdGhleSBuZWVkIHRvIHRha2UgdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtbHBjMzJ4eC5jIGIvZHJpdmVycy9ydGMvcnRjLWxwYzMyeHguYwppbmRleCBlYzg3MDFjLi5hZTE2MjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtbHBjMzJ4eC5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1scGMzMnh4LmMKQEAgLTI0MCw3ICsyNDAsNyBAQAogCXNwaW5fbG9ja19pbml0KCZydGMtPmxvY2spOwogCiAJLyoKLQkgKiBUaGUgUlRDIGlzIG9uIGEgc2VwZXJhdGUgcG93ZXIgZG9tYWluIGFuZCBjYW4ga2VlcCBpdCdzIHN0YXRlCisJICogVGhlIFJUQyBpcyBvbiBhIHNlcGFyYXRlIHBvd2VyIGRvbWFpbiBhbmQgY2FuIGtlZXAgaXQncyBzdGF0ZQogCSAqIGFjcm9zcyBhIGNoaXAgcG93ZXIgY3ljbGUuIElmIHRoZSBSVEMgaGFzIG5ldmVyIGJlZW4gcHJldmlvdXNseQogCSAqIHNldHVwLCB0aGVuIHNldCBpdCB1cCBub3cgZm9yIHRoZSBmaXJzdCB0aW1lLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLW1yc3QuYyBiL2RyaXZlcnMvcnRjL3J0Yy1tcnN0LmMKaW5kZXggMzMyYTJjNC4uYjJmMDk2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLW1yc3QuYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtbXJzdC5jCkBAIC0zNDIsNiArMzQyLDggQEAKIAogCW1yc3RfcnRjLmlycSA9IHJ0Y19pcnE7CiAJbXJzdF9ydGMuaW9tZW0gPSBpb21lbTsKKwltcnN0X3J0Yy5kZXYgPSBkZXY7CisJZGV2X3NldF9kcnZkYXRhKGRldiwgJm1yc3RfcnRjKTsKIAogCW1yc3RfcnRjLnJ0YyA9IHJ0Y19kZXZpY2VfcmVnaXN0ZXIoZHJpdmVyX25hbWUsIGRldiwKIAkJCQkmbXJzdF9ydGNfb3BzLCBUSElTX01PRFVMRSk7CkBAIC0zNTAsOCArMzUyLDYgQEAKIAkJZ290byBjbGVhbnVwMDsKIAl9CiAKLQltcnN0X3J0Yy5kZXYgPSBkZXY7Ci0JZGV2X3NldF9kcnZkYXRhKGRldiwgJm1yc3RfcnRjKTsKIAlyZW5hbWVfcmVnaW9uKGlvbWVtLCBkZXZfbmFtZSgmbXJzdF9ydGMucnRjLT5kZXYpKTsKIAogCXNwaW5fbG9ja19pcnEoJnJ0Y19sb2NrKTsKQEAgLTM3Niw5ICszNzYsMTAgQEAKIAlyZXR1cm4gMDsKIAogY2xlYW51cDE6Ci0JbXJzdF9ydGMuZGV2ID0gTlVMTDsKIAlydGNfZGV2aWNlX3VucmVnaXN0ZXIobXJzdF9ydGMucnRjKTsKIGNsZWFudXAwOgorCWRldl9zZXRfZHJ2ZGF0YShkZXYsIE5VTEwpOworCW1yc3RfcnRjLmRldiA9IE5VTEw7CiAJcmVsZWFzZV9yZWdpb24oaW9tZW0tPnN0YXJ0LCBpb21lbS0+ZW5kICsgMSAtIGlvbWVtLT5zdGFydCk7CiAJZGV2X2VycihkZXYsICJydGMtbXJzdDogdW5hYmxlIHRvIGluaXRpYWxpc2VcbiIpOwogCXJldHVybiByZXR2YWw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMteDEyMDUuYyBiL2RyaXZlcnMvcnRjL3J0Yy14MTIwNS5jCmluZGV4IDlhYWU0OTEuLmIwMGFhZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy14MTIwNS5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy14MTIwNS5jCkBAIC01NzMsNyArNTczLDcgQEAKIAogCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHJ0Yyk7CiAKLQkvKiBDaGVjayBmb3IgcG93ZXIgZmFpbHVyZXMgYW5kIGV2ZW50dWFseSBlbmFibGUgdGhlIG9zYyAqLworCS8qIENoZWNrIGZvciBwb3dlciBmYWlsdXJlcyBhbmQgZXZlbnR1YWxseSBlbmFibGUgdGhlIG9zYyAqLwogCWlmICgoZXJyID0geDEyMDVfZ2V0X3N0YXR1cyhjbGllbnQsICZzcikpID09IDApIHsKIAkJaWYgKHNyICYgWDEyMDVfU1JfUlRDRikgewogCQkJZGV2X2VycigmY2xpZW50LT5kZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF8zOTkwX2VycC5jIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfMzk5MF9lcnAuYwppbmRleCAxNjU0YTI0Li44N2EwY2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF8zOTkwX2VycC5jCisrKyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkXzM5OTBfZXJwLmMKQEAgLTIyMDcsNyArMjIwNyw3IEBACiAgKiBEQVNEXzM5OTBfRVJQX0NPTlRST0xfQ0hFQ0sKICAqCiAgKiBERVNDUklQVElPTgotICogICBEb2VzIGEgZ2VuZXJpYyBpbnNwZWN0aW9uIGlmIGEgY29udHJvbCBjaGVjayBvY2N1cmVkIGFuZCBzZXRzIHVwCisgKiAgIERvZXMgYSBnZW5lcmljIGluc3BlY3Rpb24gaWYgYSBjb250cm9sIGNoZWNrIG9jY3VycmVkIGFuZCBzZXRzIHVwCiAgKiAgIHRoZSByZWxhdGVkIGVycm9yIHJlY292ZXJ5IHByb2NlZHVyZQogICoKICAqIFBBUkFNRVRFUgpAQCAtMjI1MCw3ICsyMjUwLDcgQEAKIAlzdHJ1Y3QgZGFzZF9jY3dfcmVxICplcnBfbmV3ID0gTlVMTDsKIAljaGFyICpzZW5zZTsKIAotCS8qIGlmIHRoaXMgcHJvYmxlbSBvY2N1cmVkIG9uIGFuIGFsaWFzIHJldHJ5IG9uIGJhc2UgKi8KKwkvKiBpZiB0aGlzIHByb2JsZW0gb2NjdXJyZWQgb24gYW4gYWxpYXMgcmV0cnkgb24gYmFzZSAqLwogCWVycF9uZXcgPSBkYXNkXzM5OTBfZXJwX2luc3BlY3RfYWxpYXMoZXJwKTsKIAlpZiAoZXJwX25ldykKIAkJcmV0dXJuIGVycF9uZXc7CkBAIC0yMjgyLDcgKzIyODIsNyBAQAogICogREFTRF8zOTkwX0VSUF9BRERfRVJQCiAgKgogICogREVTQ1JJUFRJT04KLSAqICAgVGhpcyBmdW50aW9uIGFkZHMgYW4gYWRkaXRpb25hbCByZXF1ZXN0IGJsb2NrIChFUlApIHRvIHRoZSBoZWFkIG9mCisgKiAgIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBhZGRpdGlvbmFsIHJlcXVlc3QgYmxvY2sgKEVSUCkgdG8gdGhlIGhlYWQgb2YKICAqICAgdGhlIGdpdmVuIGNxciAob3IgZXJwKS4KICAqICAgRm9yIGEgY29tbWFuZCBtb2RlIGNxciB0aGUgZXJwIGlzIGluaXRpYWxpemVkIGFzIGFuIGRlZmF1bHQgZXJwCiAgKiAgIChyZXRyeSBUSUMpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZGV2bWFwLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9kZXZtYXAuYwppbmRleCBjYjZhNjdiLi40MmUxYmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9kZXZtYXAuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9kZXZtYXAuYwpAQCAtMzAyLDcgKzMwMiw3IEBACiAvKgogICogVHJ5IHRvIGludGVycHJldGUgdGhlIGZpcnN0IGVsZW1lbnQgb24gdGhlIGNvbW1hIHNlcGFyYXRlZCBwYXJzZSBzdHJpbmcKICAqIGFzIGEgZGV2aWNlIG51bWJlciBvciBhIHJhbmdlIG9mIGRldmljZXMuIElmIHRoZSBpbnRlcnByZXRhdGlvbiBpcwotICogc3VjY2Vzc2Z1bGwsIGNyZWF0ZSB0aGUgbWF0Y2hpbmcgZGFzZF9kZXZtYXAgZW50cmllcyBhbmQgcmV0dXJuIGEgcG9pbnRlcgorICogc3VjY2Vzc2Z1bCwgY3JlYXRlIHRoZSBtYXRjaGluZyBkYXNkX2Rldm1hcCBlbnRyaWVzIGFuZCByZXR1cm4gYSBwb2ludGVyCiAgKiB0byB0aGUgcmVzaWR1YWwgc3RyaW5nLgogICogSWYgaW50ZXJwcmV0YXRpb24gZmFpbHMgb3IgaW4gY2FzZSBvZiBhbiBlcnJvciwgcmV0dXJuIGFuIGVycm9yIGNvZGUuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Vja2QuYyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Vja2QuYwppbmRleCA0NTlmMmNiLi5kYjgwMDVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9lY2tkLmMKKysrIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jCkBAIC0yODU4LDcgKzI4NTgsNyBAQAogCS8qCiAJICogc3RydWN0IFBGWF9lY2tkX2RhdGEgaGFzIHVwIHRvIDIgYnl0ZSBhcyBleHRlbmRlZCBwYXJhbWV0ZXIKIAkgKiB0aGlzIGlzIG5lZWRlZCBmb3Igd3JpdGUgZnVsbCB0cmFjayBhbmQgaGFzIHRvIGJlIG1lbnRpb25lZAotCSAqIHNlcGVyYXRlbHkKKwkgKiBzZXBhcmF0ZWx5CiAJICogYWRkIDggaW5zdGVhZCBvZiAyIHRvIGtlZXAgOCBieXRlIGJvdW5kYXJ5CiAJICovCiAJcGZ4X2RhdGFzaXplID0gc2l6ZW9mKHN0cnVjdCBQRlhfZWNrZF9kYXRhKSArIDg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2hhci9yYXczMjcwLmMgYi9kcml2ZXJzL3MzOTAvY2hhci9yYXczMjcwLmMKaW5kZXggNGMwMjM3Ni4uZTIxYTVjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NoYXIvcmF3MzI3MC5jCisrKyBiL2RyaXZlcnMvczM5MC9jaGFyL3JhdzMyNzAuYwpAQCAtNjA0LDcgKzYwNCw3IEBACiAJLyoKIAkgKiBUbyBkZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIDMyNzAgZGV2aWNlIHdlIG5lZWQgdG8gZG86CiAJICogMSkgc2VuZCBhICdyZWFkIHBhcnRpdGlvbicgZGF0YSBzdHJlYW0gdG8gdGhlIGRldmljZQotCSAqIDIpIHdhaXQgZm9yIHRoZSBhdHRuIGludGVycnVwdCB0aGF0IHByZWNlZWRzIHRoZSBxdWVyeSByZXBseQorCSAqIDIpIHdhaXQgZm9yIHRoZSBhdHRuIGludGVycnVwdCB0aGF0IHByZWNlZGVzIHRoZSBxdWVyeSByZXBseQogCSAqIDMpIGRvIGEgcmVhZCBtb2RpZmllZCB0byBnZXQgdGhlIHF1ZXJ5IHJlcGx5CiAJICogVG8gbWFrZSB0aGluZ3Mgd29yc2Ugd2UgaGF2ZSB0byBjb3BlIHdpdGggaW50ZXJ2ZW50aW9uCiAJICogcmVxdWlyZWQgKDMyNzAgZGV2aWNlIHN3aXRjaGVkIHRvICdzdGFuZC1ieScpIGFuZCBjb21tYW5kCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2hhci90YXBlX2NoYXIuYyBiL2RyaXZlcnMvczM5MC9jaGFyL3RhcGVfY2hhci5jCmluZGV4IGUwOTBhMzAuLjg3Y2QwYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9jaGFyL3RhcGVfY2hhci5jCisrKyBiL2RyaXZlcnMvczM5MC9jaGFyL3RhcGVfY2hhci5jCkBAIC0xMzksNyArMTM5LDcgQEAKIAkvKgogCSAqIElmIHRoZSB0YXBlIGlzbid0IHRlcm1pbmF0ZWQgeWV0LCBkbyBpdCBub3cuIEFuZCBzaW5jZSB3ZSB0aGVuCiAJICogYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHRhcGUgdGhlcmUgd291bGRuJ3QgYmUgYW55dGhpbmcgdG8gcmVhZAotCSAqIGFueXdheXMuIFNvIHdlIHJldHVybiBpbW1lZGlhdGx5LgorCSAqIGFueXdheXMuIFNvIHdlIHJldHVybiBpbW1lZGlhdGVseS4KIAkgKi8KIAlpZihkZXZpY2UtPnJlcXVpcmVkX3RhcGVtYXJrcykgewogCQlyZXR1cm4gdGFwZV9zdGRfdGVybWluYXRlX3dyaXRlKGRldmljZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2hhci90dHkzMjcwLmMgYi9kcml2ZXJzL3MzOTAvY2hhci90dHkzMjcwLmMKaW5kZXggZDMzNTU0ZGYuLjJkYjE0ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYworKysgYi9kcml2ZXJzL3MzOTAvY2hhci90dHkzMjcwLmMKQEAgLTMyOCw3ICszMjgsNyBAQAogCiAJdHAgPSAoc3RydWN0IHR0eTMyNzAgKikgcnEtPnZpZXc7CiAJaWYgKHJxLT5yYyAhPSAwKSB7Ci0JCS8qIFdyaXRlIHdhc24ndCBzdWNjZXNzZnVsbC4gUmVmcmVzaCBhbGwuICovCisJCS8qIFdyaXRlIHdhc24ndCBzdWNjZXNzZnVsLiBSZWZyZXNoIGFsbC4gKi8KIAkJdHAtPnVwZGF0ZV9mbGFncyA9IFRUWV9VUERBVEVfQUxMOwogCQl0dHkzMjcwX3NldF90aW1lcih0cCwgMSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYyBiL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlLmMKaW5kZXggZGYxNGM1MS4uOGUwNGMwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2Npby9kZXZpY2UuYworKysgYi9kcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jCkBAIC01NDEsMTUgKzU0MSwyNCBAQAogCWludCBmb3JjZSwgcmV0OwogCXVuc2lnbmVkIGxvbmcgaTsKIAotCWlmICghZGV2X2ZzbV9maW5hbF9zdGF0ZShjZGV2KSAmJgotCSAgICBjZGV2LT5wcml2YXRlLT5zdGF0ZSAhPSBERVZfU1RBVEVfRElTQ09OTkVDVEVEKQotCQlyZXR1cm4gLUVBR0FJTjsKKwkvKiBQcmV2ZW50IGNvbmZsaWN0IGJldHdlZW4gbXVsdGlwbGUgb24tL29mZmxpbmUgcHJvY2Vzc2luZyByZXF1ZXN0cy4gKi8KIAlpZiAoYXRvbWljX2NtcHhjaGcoJmNkZXYtPnByaXZhdGUtPm9ub2ZmLCAwLCAxKSAhPSAwKQogCQlyZXR1cm4gLUVBR0FJTjsKKwkvKiBQcmV2ZW50IGNvbmZsaWN0IGJldHdlZW4gaW50ZXJuYWwgSS9PcyBhbmQgb24tL29mZmxpbmUgcHJvY2Vzc2luZy4gKi8KKwlpZiAoIWRldl9mc21fZmluYWxfc3RhdGUoY2RldikgJiYKKwkgICAgY2Rldi0+cHJpdmF0ZS0+c3RhdGUgIT0gREVWX1NUQVRFX0RJU0NPTk5FQ1RFRCkgeworCQlyZXQgPSAtRUFHQUlOOworCQlnb3RvIG91dF9vbm9mZjsKKwl9CisJLyogUHJldmVudCBjb25mbGljdCBiZXR3ZWVuIHBlbmRpbmcgd29yayBhbmQgb24tL29mZmxpbmUgcHJvY2Vzc2luZy4qLworCWlmICh3b3JrX3BlbmRpbmcoJmNkZXYtPnByaXZhdGUtPnRvZG9fd29yaykpIHsKKwkJcmV0ID0gLUVBR0FJTjsKKwkJZ290byBvdXRfb25vZmY7CisJfQogCiAJaWYgKGNkZXYtPmRydiAmJiAhdHJ5X21vZHVsZV9nZXQoY2Rldi0+ZHJ2LT5kcml2ZXIub3duZXIpKSB7Ci0JCWF0b21pY19zZXQoJmNkZXYtPnByaXZhdGUtPm9ub2ZmLCAwKTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X29ub2ZmOwogCX0KIAlpZiAoIXN0cm5jbXAoYnVmLCAiZm9yY2VcbiIsIGNvdW50KSkgewogCQlmb3JjZSA9IDE7CkBAIC01NzQsNiArNTgzLDcgQEAKIG91dDoKIAlpZiAoY2Rldi0+ZHJ2KQogCQltb2R1bGVfcHV0KGNkZXYtPmRydi0+ZHJpdmVyLm93bmVyKTsKK291dF9vbm9mZjoKIAlhdG9taWNfc2V0KCZjZGV2LT5wcml2YXRlLT5vbm9mZiwgMCk7CiAJcmV0dXJuIChyZXQgPCAwKSA/IHJldCA6IGNvdW50OwogfQpAQCAtMTMxMSwxMCArMTMyMSwxMiBAQAogCiAJc3Bpbl9sb2NrX2lycShjZGV2LT5jY3dsb2NrKTsKIAlpZiAoaXNfYmxhY2tsaXN0ZWQoaWQtPnNzaWQsIGlkLT5kZXZubykgJiYKLQkgICAgKGNkZXYtPnByaXZhdGUtPnN0YXRlID09IERFVl9TVEFURV9PRkZMSU5FKSkgeworCSAgICAoY2Rldi0+cHJpdmF0ZS0+c3RhdGUgPT0gREVWX1NUQVRFX09GRkxJTkUpICYmCisJICAgIChhdG9taWNfY21weGNoZygmY2Rldi0+cHJpdmF0ZS0+b25vZmYsIDAsIDEpID09IDApKSB7CiAJCUNJT19NU0dfRVZFTlQoMywgImNjdzogcHVyZ2luZyAwLiV4LiUwNHhcbiIsIGlkLT5zc2lkLAogCQkJICAgICAgaWQtPmRldm5vKTsKIAkJY2N3X2RldmljZV9zY2hlZF90b2RvKGNkZXYsIENERVZfVE9ET19VTlJFRyk7CisJCWF0b21pY19zZXQoJmNkZXYtPnByaXZhdGUtPm9ub2ZmLCAwKTsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxKGNkZXYtPmNjd2xvY2spOwogCS8qIEFib3J0IGxvb3AgaW4gY2FzZSBvZiBwZW5kaW5nIHNpZ25hbC4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jIGIvZHJpdmVycy9zMzkwL2Npby9kZXZpY2VfZnNtLmMKaW5kZXggYTg0NTY5NS4uNjA4NDEwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2Npby9kZXZpY2VfZnNtLmMKKysrIGIvZHJpdmVycy9zMzkwL2Npby9kZXZpY2VfZnNtLmMKQEAgLTMxOCw3ICszMTgsNyBAQAogCiAvKioKICAgKiBjY3dfZGV2aWNlX25vdGlmeSgpIC0gaW5mb3JtIHRoZSBkZXZpY2UncyBkcml2ZXIgYWJvdXQgYW4gZXZlbnQKLSAgKiBAY2RldjogZGV2aWNlIGZvciB3aGljaCBhbiBldmVudCBvY2N1cmVkCisgICogQGNkZXY6IGRldmljZSBmb3Igd2hpY2ggYW4gZXZlbnQgb2NjdXJyZWQKICAgKiBAZXZlbnQ6IGV2ZW50IHRoYXQgb2NjdXJyZWQKICAgKgogICAqIFJldHVybnM6CkBAIC02ODgsNyArNjg4LDcgQEAKIAkgICAgKHNjc3dfc3RjdGwoJmNkZXYtPnByaXZhdGUtPmlyYi5zY3N3KSAmIFNDU1dfU1RDVExfU1RBVFVTX1BFTkQpKSB7CiAJCS8qCiAJCSAqIE5vIGZpbmFsIHN0YXR1cyB5ZXQgb3IgZmluYWwgc3RhdHVzIG5vdCB5ZXQgZGVsaXZlcmVkCi0JCSAqIHRvIHRoZSBkZXZpY2UgZHJpdmVyLiBDYW4ndCBkbyBwYXRoIHZlcmZpY2F0aW9uIG5vdywKKwkJICogdG8gdGhlIGRldmljZSBkcml2ZXIuIENhbid0IGRvIHBhdGggdmVyaWZpY2F0aW9uIG5vdywKIAkJICogZGVsYXkgdW50aWwgZmluYWwgc3RhdHVzIHdhcyBkZWxpdmVyZWQuCiAJCSAqLwogCQljZGV2LT5wcml2YXRlLT5mbGFncy5kb3ZlcmlmeSA9IDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2lvL3FkaW9fbWFpbi5jIGIvZHJpdmVycy9zMzkwL2Npby9xZGlvX21haW4uYwppbmRleCA0NzljNjY1Li5jNTMyYmE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY2lvL3FkaW9fbWFpbi5jCisrKyBiL2RyaXZlcnMvczM5MC9jaW8vcWRpb19tYWluLmMKQEAgLTE2NDksMjYgKzE2NDksMjYgQEAKIHsKIAlpbnQgcmM7CiAKLQlyYyA9IHFkaW9fc2V0dXBfaW5pdCgpOworCXJjID0gcWRpb19kZWJ1Z19pbml0KCk7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CisJcmMgPSBxZGlvX3NldHVwX2luaXQoKTsKKwlpZiAocmMpCisJCWdvdG8gb3V0X2RlYnVnOwogCXJjID0gdGlxZGlvX2FsbG9jYXRlX21lbW9yeSgpOwogCWlmIChyYykKIAkJZ290byBvdXRfY2FjaGU7Ci0JcmMgPSBxZGlvX2RlYnVnX2luaXQoKTsKLQlpZiAocmMpCi0JCWdvdG8gb3V0X3RpOwogCXJjID0gdGlxZGlvX3JlZ2lzdGVyX3RoaW5pbnRzKCk7CiAJaWYgKHJjKQotCQlnb3RvIG91dF9kZWJ1ZzsKKwkJZ290byBvdXRfdGk7CiAJcmV0dXJuIDA7CiAKLW91dF9kZWJ1ZzoKLQlxZGlvX2RlYnVnX2V4aXQoKTsKIG91dF90aToKIAl0aXFkaW9fZnJlZV9tZW1vcnkoKTsKIG91dF9jYWNoZToKIAlxZGlvX3NldHVwX2V4aXQoKTsKK291dF9kZWJ1ZzoKKwlxZGlvX2RlYnVnX2V4aXQoKTsKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTE2NzYsOCArMTY3Niw4IEBACiB7CiAJdGlxZGlvX3VucmVnaXN0ZXJfdGhpbmludHMoKTsKIAl0aXFkaW9fZnJlZV9tZW1vcnkoKTsKLQlxZGlvX2RlYnVnX2V4aXQoKTsKIAlxZGlvX3NldHVwX2V4aXQoKTsKKwlxZGlvX2RlYnVnX2V4aXQoKTsKIH0KIAogbW9kdWxlX2luaXQoaW5pdF9RRElPKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vemNyeXB0X2FwaS5oIGIvZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmgKaW5kZXggODhlYmQxMS4uOTY4OGYzOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmgKKysrIGIvZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmgKQEAgLTc2LDcgKzc2LDcgQEAKIAogLyoqCiAgKiBMYXJnZSByYW5kb20gbnVtYmVycyBhcmUgcHVsbGVkIGluIDQwOTYgYnl0ZSBjaHVua3MgZnJvbSB0aGUgY3J5cHRvIGNhcmRzCi0gKiBhbmQgc3RvcmVkIGluIGEgcGFnZS4gQmUgY2FyZWZ1bGwgd2hlbiBpbmNyZWFzaW5nIHRoaXMgYnVmZmVyIGR1ZSB0byBzaXplCisgKiBhbmQgc3RvcmVkIGluIGEgcGFnZS4gQmUgY2FyZWZ1bCB3aGVuIGluY3JlYXNpbmcgdGhpcyBidWZmZXIgZHVlIHRvIHNpemUKICAqIGxpbWl0YXRpb25zIGZvciBBUCByZXF1ZXN0cy4KICAqLwogI2RlZmluZSBaQ1JZUFRfUk5HX0JVRkZFUl9TSVpFCTQwOTYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY2xhdy5jIGIvZHJpdmVycy9zMzkwL25ldC9jbGF3LmMKaW5kZXggOWZlYjYyZi4uZGE4YWE3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL25ldC9jbGF3LmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9jbGF3LmMKQEAgLTc3OSw3ICs3NzksNyBAQAogCWNhc2UgQ0xBV19TVEFSVF9XUklURToKIAkJaWYgKHBfY2gtPmlyYi0+c2Nzdy5jbWQuZHN0YXQgJiBERVZfU1RBVF9VTklUX0NIRUNLKSB7CiAJCQlkZXZfaW5mbygmY2Rldi0+ZGV2LAotCQkJCSIlczogVW5pdCBDaGVjayBPY2N1cmVkIGluICIKKwkJCQkiJXM6IFVuaXQgQ2hlY2sgT2NjdXJyZWQgaW4gIgogCQkJCSJ3cml0ZSBjaGFubmVsXG4iLCBkZXYtPm5hbWUpOwogCQkJY2xlYXJfYml0KDAsICh2b2lkICopJnBfY2gtPklPX2FjdGl2ZSk7CiAJCQlpZiAocF9jaC0+aXJiLT5lY3dbMF0gJiAweDgwKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYwppbmRleCA4YzkyMWZjLi4yZDYwMjIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jCisrKyBiL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogc3RhdGljIHZvaWQgY3RjbXBjX2NoeF9zZW5kX3N3ZWVwKGZzbV9pbnN0YW5jZSAqZnNtLCBpbnQgZXZlbnQsIHZvaWQgKmFyZyk7CiAKIC8qKgotICogQ2hlY2sgcmV0dXJuIGNvZGUgb2YgYSBwcmVjZWVkaW5nIGNjd19kZXZpY2UgY2FsbCwgaGFsdF9JTyBldGMuLi4KKyAqIENoZWNrIHJldHVybiBjb2RlIG9mIGEgcHJlY2VkaW5nIGNjd19kZXZpY2UgY2FsbCwgaGFsdF9JTyBldGMuLi4KICAqCiAgKiBjaAk6CVRoZSBjaGFubmVsLCB0aGUgZXJyb3IgYmVsb25ncyB0by4KICAqIFJldHVybnMgdGhlIGVycm9yIGNvZGUgKCE9IDApIHRvIGluc3BlY3QuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvbmV0L2xjcy5jIGIvZHJpdmVycy9zMzkwL25ldC9sY3MuYwppbmRleCA3ZmJjNGFkLi40OWQxY2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2xjcy5jCisrKyBiL2RyaXZlcnMvczM5MC9uZXQvbGNzLmMKQEAgLTExMjMsNyArMTEyMyw3IEBACiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGlwbSwgdG1wLCAmY2FyZC0+aXBtX2xpc3QsIGxpc3QpewogCQlzd2l0Y2ggKGlwbS0+aXBtX3N0YXRlKSB7CiAJCWNhc2UgTENTX0lQTV9TVEFURV9TRVRfUkVRVUlSRUQ6Ci0JCQkvKiBkZWwgZnJvbSBpcG1fbGlzdCBzbyBub29uZSBlbHNlIGNhbiB0YW1wZXIgd2l0aAorCQkJLyogZGVsIGZyb20gaXBtX2xpc3Qgc28gbm8gb25lIGVsc2UgY2FuIHRhbXBlciB3aXRoCiAJCQkgKiB0aGlzIGVudHJ5ICovCiAJCQlsaXN0X2RlbF9pbml0KCZpcG0tPmxpc3QpOwogCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2FyZC0+aXBtX2xvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21haW4uYyBiL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21haW4uYwppbmRleCAxMGEzYTNiLi44NWNjNTMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tYWluLmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbWFpbi5jCkBAIC0xMTA3LDcgKzExMDcsNyBAQAogCUlOSVRfTElTVF9IRUFEKGNhcmQtPmlwX3RiZF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmY2FyZC0+Y21kX3dhaXRlcl9saXN0KTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjYXJkLT53YWl0X3EpOwotCS8qIGludGlhbCBvcHRpb25zICovCisJLyogaW5pdGlhbCBvcHRpb25zICovCiAJcWV0aF9zZXRfaW50aWFsX29wdGlvbnMoY2FyZCk7CiAJLyogSVAgYWRkcmVzcyB0YWtlb3ZlciAqLwogCUlOSVRfTElTVF9IRUFEKCZjYXJkLT5pcGF0by5lbnRyaWVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCmluZGV4IGEwZTA1ZWYuLjg1MTJiNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYwpAQCAtMTA4Myw3ICsxMDgzLDcgQEAKIAkJfQogCQlicmVhazsKIAljYXNlIEZTRl9TQkFMX01JU01BVENIOgotCQkvKiBzaG91bGQgbmV2ZXIgb2NjdXJlLCBhdm9pZGVkIGluIHpmY3BfZnNmX3NlbmRfZWxzICovCisJCS8qIHNob3VsZCBuZXZlciBvY2N1ciwgYXZvaWRlZCBpbiB6ZmNwX2ZzZl9zZW5kX2VscyAqLwogCQkvKiBmYWxsIHRocm91Z2ggKi8KIAlkZWZhdWx0OgogCQlyZXEtPnN0YXR1cyB8PSBaRkNQX1NUQVRVU19GU0ZSRVFfRVJST1I7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX3FkaW8uYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jCmluZGV4IDhkYTVlZDYuLjk4ZTk3ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jCisrKyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jCkBAIC0zOTEsNyArMzkxLDcgQEAKIAlpZiAoZG9fUURJTyhjZGV2LCBRRElPX0ZMQUdfU1lOQ19JTlBVVCwgMCwgMCwgUURJT19NQVhfQlVGRkVSU19QRVJfUSkpCiAJCWdvdG8gZmFpbGVkX3FkaW87CiAKLQkvKiBzZXQgaW5kZXggb2YgZmlyc3QgYXZhbGFibGUgU0JBTFMgLyBudW1iZXIgb2YgYXZhaWxhYmxlIFNCQUxTICovCisJLyogc2V0IGluZGV4IG9mIGZpcnN0IGF2YWlsYWJsZSBTQkFMUyAvIG51bWJlciBvZiBhdmFpbGFibGUgU0JBTFMgKi8KIAlxZGlvLT5yZXFfcV9pZHggPSAwOwogCWF0b21pY19zZXQoJnFkaW8tPnJlcV9xX2ZyZWUsIFFESU9fTUFYX0JVRkZFUlNfUEVSX1EpOwogCWF0b21pY19zZXRfbWFzayhaRkNQX1NUQVRVU19BREFQVEVSX1FESU9VUCwgJnFkaW8tPmFkYXB0ZXItPnN0YXR1cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NidXMvY2hhci9qc2ZsYXNoLmMgYi9kcml2ZXJzL3NidXMvY2hhci9qc2ZsYXNoLmMKaW5kZXggZTg1NjYyMi4uNmI0Njc4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zYnVzL2NoYXIvanNmbGFzaC5jCisrKyBiL2RyaXZlcnMvc2J1cy9jaGFyL2pzZmxhc2guYwpAQCAtMTMsNyArMTMsNyBAQAogICogVE9ETzogRXJhc2UvcHJvZ3JhbSBib3RoIGJhbmtzIG9mIGEgOE1CIFNJTU0uCiAgKgogICogSXQgaXMgYW50aWNpcGF0ZWQgdGhhdCBwcm9ncmFtbWluZyBhbiBPUyBGbGFzaCB3aWxsIGJlIGEgcm91dGluZQotICogcHJvY2VkdXJlLiBJbiB0aGUgc2FtZSB0aW1lIGl0IGlzIGV4ZWVkaW5nbHkgZGFuZ2Vyb3VzIGJlY2F1c2UKKyAqIHByb2NlZHVyZS4gSW4gdGhlIHNhbWUgdGltZSBpdCBpcyBleGNlZWRpbmdseSBkYW5nZXJvdXMgYmVjYXVzZQogICogYSB1c2VyIGNhbiBwcm9ncmFtIGl0cyBPQlAgZmxhc2ggd2l0aCBPUyBpbWFnZSBhbmQgZWZmZWN0aXZlbHkKICAqIGtpbGwgdGhlIG1hY2hpbmUuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zYnVzL2NoYXIvbWF4MTYxNy5oIGIvZHJpdmVycy9zYnVzL2NoYXIvbWF4MTYxNy5oCmluZGV4IDBiYjA5YzIuLmNkMzA4MTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2J1cy9jaGFyL21heDE2MTcuaAorKysgYi9kcml2ZXJzL3NidXMvY2hhci9tYXgxNjE3LmgKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIE1BWDE2MTdfQ1BVX1RFTVAJMHgwMSAvKiBQcm9jZXNzb3IgZGllIHRlbXAgaW4gQwkqLwogI2RlZmluZSBNQVgxNjE3X1NUQVRVUwkJMHgwMiAvKiBDaGlwIHN0YXR1cyBiaXRzCSovCiAKLS8qIFJlYWQtb25seSB2ZXJzaW9ucyBvZiBjaGFuZ2FibGUgcmVnaXN0ZXJzLiAqLworLyogUmVhZC1vbmx5IHZlcnNpb25zIG9mIGNoYW5nZWFibGUgcmVnaXN0ZXJzLiAqLwogI2RlZmluZSBNQVgxNjE3X1JEX0NGR19CWVRFCTB4MDMgLyogQ29uZmlnIHJlZ2lzdGVyCQkqLwogI2RlZmluZSBNQVgxNjE3X1JEX0NWUkFURV9CWVRFCTB4MDQgLyogVGVtcCBjb252ZXJzaW9uIHJhdGUJKi8KICNkZWZpbmUgTUFYMTYxN19SRF9BTUJfSElHSExJTQkweDA1IC8qIEFtYmllbnQgaGlnaCBsaW1pdAkqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzN3LTl4eHguaCBiL2RyaXZlcnMvc2NzaS8zdy05eHh4LmgKaW5kZXggMzM0MzgyNC4uMDQwZjcyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzN3LTl4eHguaAorKysgYi9kcml2ZXJzL3Njc2kvM3ctOXh4eC5oCkBAIC02MSw3ICs2MSw3IEBACiAJezB4MDAwMCwgIkFFTiBxdWV1ZSBlbXB0eSJ9LAogCXsweDAwMDEsICJDb250cm9sbGVyIHJlc2V0IG9jY3VycmVkIn0sCiAJezB4MDAwMiwgIkRlZ3JhZGVkIHVuaXQgZGV0ZWN0ZWQifSwKLQl7MHgwMDAzLCAiQ29udHJvbGxlciBlcnJvciBvY2N1cmVkIn0sCisJezB4MDAwMywgIkNvbnRyb2xsZXIgZXJyb3Igb2NjdXJyZWQifSwKIAl7MHgwMDA0LCAiQmFja2dyb3VuZCByZWJ1aWxkIGZhaWxlZCJ9LAogCXsweDAwMDUsICJCYWNrZ3JvdW5kIHJlYnVpbGQgZG9uZSJ9LAogCXsweDAwMDYsICJJbmNvbXBsZXRlIHVuaXQgZGV0ZWN0ZWQifSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS8zdy14eHh4LmggYi9kcml2ZXJzL3Njc2kvM3cteHh4eC5oCmluZGV4IDhiOWY5ZDEuLjQ5ZGNmMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS8zdy14eHh4LmgKKysrIGIvZHJpdmVycy9zY3NpLzN3LXh4eHguaApAQCAtOCw3ICs4LDcgQEAKIAogICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMTAgM3dhcmUgSW5jLgogCi0gICBLZXJuZWwgY29tcGF0aWJsaXR5IEJ5OglBbmRyZSBIZWRyaWNrIDxhbmRyZUBzdXNlLmNvbT4KKyAgIEtlcm5lbCBjb21wYXRpYmlsaXR5IEJ5OglBbmRyZSBIZWRyaWNrIDxhbmRyZUBzdXNlLmNvbT4KICAgIE5vbi1Db3B5cmlnaHQgKEMpIDIwMDAJQW5kcmUgSGVkcmljayA8YW5kcmVAc3VzZS5jb20+CiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvNTNjNzAwLnNjciBiL2RyaXZlcnMvc2NzaS81M2M3MDAuc2NyCmluZGV4IGEwNjRhMDkuLmVjODIyZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS81M2M3MDAuc2NyCisrKyBiL2RyaXZlcnMvc2NzaS81M2M3MDAuc2NyCkBAIC0zMSw3ICszMSw3IEBACiBBQlNPTFVURQlSZWNlaXZlTXNnQWRkcmVzcyA9IDAJOyBBZGRyIHRvIHJlY2VpdmUgbXNnCiA7CiA7IFRoaXMgaXMgdGhlIG1hZ2ljIGNvbXBvbmVudCBmb3IgaGFuZGxpbmcgc2NhdHRlci1nYXRoZXIuICBFYWNoIG9mIHRoZQotOyBTRyBjb21wb25lbnRzIGlzIHByZWNlZWRlZCBieSBhIHNjcmlwdCBmcmFnbWVudCB3aGljaCBtb3ZlcyB0aGUKKzsgU0cgY29tcG9uZW50cyBpcyBwcmVjZWRlZCBieSBhIHNjcmlwdCBmcmFnbWVudCB3aGljaCBtb3ZlcyB0aGUKIDsgbmVjZXNzYXJ5IGFtb3VudCBvZiBkYXRhIGFuZCBqdW1wcyB0byB0aGUgbmV4dCBTRyBzZWdtZW50LiAgVGhlIGZpbmFsCiA7IFNHIHNlZ21lbnQganVtcHMgYmFjayB0byAuICBIb3dldmVyLCB0aGlzIGFkZHJlc3MgaXMgdGhlIGZpcnN0IFNHIHNjcmlwdAogOyBzZWdtZW50LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzUzYzcwMF9kLmhfc2hpcHBlZCBiL2RyaXZlcnMvc2NzaS81M2M3MDBfZC5oX3NoaXBwZWQKaW5kZXggMGI0MmE1MS4uYWE2MjNkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzUzYzcwMF9kLmhfc2hpcHBlZAorKysgYi9kcml2ZXJzL3Njc2kvNTNjNzAwX2QuaF9zaGlwcGVkCkBAIC0zNCw3ICszNCw3IEBACiBBQlNPTFVURQlSZWNlaXZlTXNnQWRkcmVzcyA9IDAJOyBBZGRyIHRvIHJlY2VpdmUgbXNnCiA7CiA7IFRoaXMgaXMgdGhlIG1hZ2ljIGNvbXBvbmVudCBmb3IgaGFuZGxpbmcgc2NhdHRlci1nYXRoZXIuICBFYWNoIG9mIHRoZQotOyBTRyBjb21wb25lbnRzIGlzIHByZWNlZWRlZCBieSBhIHNjcmlwdCBmcmFnbWVudCB3aGljaCBtb3ZlcyB0aGUKKzsgU0cgY29tcG9uZW50cyBpcyBwcmVjZWRlZCBieSBhIHNjcmlwdCBmcmFnbWVudCB3aGljaCBtb3ZlcyB0aGUKIDsgbmVjZXNzYXJ5IGFtb3VudCBvZiBkYXRhIGFuZCBqdW1wcyB0byB0aGUgbmV4dCBTRyBzZWdtZW50LiAgVGhlIGZpbmFsCiA7IFNHIHNlZ21lbnQganVtcHMgYmFjayB0byAuICBIb3dldmVyLCB0aGlzIGFkZHJlc3MgaXMgdGhlIGZpcnN0IFNHIHNjcmlwdAogOyBzZWdtZW50LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL0ZsYXNoUG9pbnQuYyBiL2RyaXZlcnMvc2NzaS9GbGFzaFBvaW50LmMKaW5kZXggZTQwY2RmYi4uZGNkNzE2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL0ZsYXNoUG9pbnQuYworKysgYi9kcml2ZXJzL3Njc2kvRmxhc2hQb2ludC5jCkBAIC0yNTA5LDcgKzI1MDksNyBAQAogCQkJCVdSX0hBUlBPT04ocG9ydCArIGhwX2F1dG9zdGFydF8zLAogCQkJCQkgICAoU0VMRUNUICsgU0VMQ0hLX1NUUlQpKTsKIAotCQkJCS8qIFNldHVwIG91ciBTVEFURSBzbyB3ZSBrbm93IHdoYXQgaGFwcGVuZCB3aGVuCisJCQkJLyogU2V0dXAgb3VyIFNUQVRFIHNvIHdlIGtub3cgd2hhdCBoYXBwZW5lZCB3aGVuCiAJCQkJICAgdGhlIHdoZWVscyBmYWxsIG9mZi4gKi8KIAkJCQljdXJyU0NDQi0+U2NjYl9zY3Npc3RhdCA9IFNFTEVDVF9TVDsKIApAQCAtMjkwMCw3ICsyOTAwLDcgQEAKICAqCiAgKiBGdW5jdGlvbjogRlBUX3NkZWNtCiAgKgotICogRGVzY3JpcHRpb246IERldGVybWluZSB0aGUgcHJvcGVyIHJlc3BvbmNlIHRvIHRoZSBtZXNzYWdlIGZyb20gdGhlCisgKiBEZXNjcmlwdGlvbjogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgcmVzcG9uc2UgdG8gdGhlIG1lc3NhZ2UgZnJvbSB0aGUKICAqICAgICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgogICoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMgYi9kcml2ZXJzL3Njc2kvTkNSNTM4MC5jCmluZGV4IGU3Y2QyZmMuLjE2NWU0ZGQ4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL05DUjUzODAuYworKysgYi9kcml2ZXJzL3Njc2kvTkNSNTM4MC5jCkBAIC0xMTk4LDEyICsxMTk4LDEyIEBACiAJCQkJICovCiAKIAkJCQlpZiAoKE5DUjUzODBfcmVhZChNT0RFX1JFRykgJiBNUl9ETUEpICYmICgoYmFzciAmIEJBU1JfRU5EX0RNQV9UUkFOU0ZFUikgfHwgIShiYXNyICYgQkFTUl9QSEFTRV9NQVRDSCkpKSB7Ci0JCQkJCWludCB0cmFuc2ZlcmVkOworCQkJCQlpbnQgdHJhbnNmZXJyZWQ7CiAKIAkJCQkJaWYgKCFob3N0ZGF0YS0+Y29ubmVjdGVkKQogCQkJCQkJcGFuaWMoInNjc2klZCA6IHJlY2VpdmVkIGVuZCBvZiBETUEgaW50ZXJydXB0IHdpdGggbm8gY29ubmVjdGVkIGNtZFxuIiwgaW5zdGFuY2UtPmhvc3Rubyk7CiAKLQkJCQkJdHJhbnNmZXJlZCA9IChob3N0ZGF0YS0+ZG1hbGVuIC0gTkNSNTM4MF9kbWFfcmVzaWR1YWwoaW5zdGFuY2UpKTsKKwkJCQkJdHJhbnNmZXJyZWQgPSAoaG9zdGRhdGEtPmRtYWxlbiAtIE5DUjUzODBfZG1hX3Jlc2lkdWFsKGluc3RhbmNlKSk7CiAJCQkJCWhvc3RkYXRhLT5jb25uZWN0ZWQtPlNDcC50aGlzX3Jlc2lkdWFsIC09IHRyYW5zZmVycmVkOwogCQkJCQlob3N0ZGF0YS0+Y29ubmVjdGVkLT5TQ3AucHRyICs9IHRyYW5zZmVycmVkOwogCQkJCQlob3N0ZGF0YS0+ZG1hbGVuID0gMDsKQEAgLTE1NjMsNyArMTU2Myw3IEBACiAgKiAgICAgIGJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqIAogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqICAgICAgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIG9yIHRyYW5zZmVyZWQgb3IgZXhpdAorICogICAgICBtYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgb3IgdHJhbnNmZXJyZWQgb3IgZXhpdAogICogICAgICBpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqICAgICAgQWxzbywgKnBoYXNlLCAqY291bnQsICpkYXRhIGFyZSBtb2RpZmllZCBpbiBwbGFjZS4KQEAgLTE4MDAsNyArMTgwMCw3IEBACiAgKiAgICAgIGJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqIAogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqICAgICAgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIG9yIHRyYW5zZmVyZWQgb3IgZXhpdAorICogICAgICBtYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgb3IgdHJhbnNmZXJyZWQgb3IgZXhpdAogICogICAgICBpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqICAgICAgQWxzbywgKnBoYXNlLCAqY291bnQsICpkYXRhIGFyZSBtb2RpZmllZCBpbiBwbGFjZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY2hiYS5jIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjaGJhLmMKaW5kZXggMTE4Y2U4My4uMDYxOTk1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjaGJhLmMKKysrIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjaGJhLmMKQEAgLTc0Nyw4ICs3NDcsOCBAQAogICogQXJndW1lbnRzOiBbMV0gcG9pbnRlciB0byB2b2lkIFsxXSBpbnQKICAqCiAgKiBQdXJwb3NlOiBTZXRzIFNDU0kgaW5xdWlyeSBkYXRhIHN0cmluZ3MgZm9yIHZlbmRvciwgcHJvZHVjdAotICogYW5kIHJldmlzaW9uIGxldmVsLiBBbGxvd3Mgc3RyaW5ncyB0byBiZSBzZXQgaW4gcGxhdGZvcm0gZGVwZW5kYW50Ci0gKiBmaWxlcyBpbnN0ZWFkIG9mIGluIE9TIGRlcGVuZGFudCBkcml2ZXIgc291cmNlLgorICogYW5kIHJldmlzaW9uIGxldmVsLiBBbGxvd3Mgc3RyaW5ncyB0byBiZSBzZXQgaW4gcGxhdGZvcm0gZGVwZW5kZW50CisgKiBmaWxlcyBpbnN0ZWFkIG9mIGluIE9TIGRlcGVuZGVudCBkcml2ZXIgc291cmNlLgogICovCiAKIHN0YXRpYyB2b2lkIHNldGlucXN0cihzdHJ1Y3QgYWFjX2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdGluZGV4KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oCmluZGV4IDI5YWIwMDAxLi5mZmI1ODc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmgKKysrIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oCkBAIC0xMjU5LDcgKzEyNTksNyBAQAogI2RlZmluZSBDQUNIRV9VTlNUQUJMRQkJMgogCiAvKgotICoJTGV0cyB0aGUgY2xpZW50IGtub3cgYXQgd2hpY2ggbGV2ZWwgdGhlIGRhdGEgd2FzIGNvbW1pdGVkIG9uCisgKglMZXRzIHRoZSBjbGllbnQga25vdyBhdCB3aGljaCBsZXZlbCB0aGUgZGF0YSB3YXMgY29tbWl0dGVkIG9uCiAgKglhIHdyaXRlIHJlcXVlc3QKICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tc3VwLmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tc3VwLmMKaW5kZXggZGQ3YWQzYi4uZTdkMGQ0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1zdXAuYwpAQCAtNDIxLDcgKzQyMSw3IEBACiAJaWYgKCEoaHdfZmliLT5oZWFkZXIuWGZlclN0YXRlICYgY3B1X3RvX2xlMzIoSG9zdE93bmVkKSkpCiAJCXJldHVybiAtRUJVU1k7CiAJLyoKLQkgKglUaGVyZSBhcmUgNSBjYXNlcyB3aXRoIHRoZSB3YWl0IGFuZCByZXBvbnNlIHJlcXVlc3RlZCBmbGFncy4KKwkgKglUaGVyZSBhcmUgNSBjYXNlcyB3aXRoIHRoZSB3YWl0IGFuZCByZXNwb25zZSByZXF1ZXN0ZWQgZmxhZ3MuCiAJICoJVGhlIG9ubHkgaW52YWxpZCBjYXNlcyBhcmUgaWYgdGhlIGNhbGxlciByZXF1ZXN0cyB0byB3YWl0IGFuZAogCSAqCWRvZXMgbm90IHJlcXVlc3QgYSByZXNwb25zZSBhbmQgaWYgdGhlIGNhbGxlciBkb2VzIG5vdCB3YW50IGEKIAkgKglyZXNwb25zZSBhbmQgdGhlIEZpYiBpcyBub3QgYWxsb2NhdGVkIGZyb20gcG9vbC4gSWYgYSByZXNwb25zZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FkdmFuc3lzLmMgYi9kcml2ZXJzL3Njc2kvYWR2YW5zeXMuYwppbmRleCAwODFjNmRlLi5iZmQ2MThhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWR2YW5zeXMuYworKysgYi9kcml2ZXJzL3Njc2kvYWR2YW5zeXMuYwpAQCAtNDU0NCw3ICs0NTQ0LDcgQEAKICAqIENvcHkgNCBieXRlcyB0byBMUkFNLgogICoKICAqIFRoZSBzb3VyY2UgZGF0YSBpcyBhc3N1bWVkIHRvIGJlIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgaW4gbWVtb3J5Ci0gKiBhbmQgaXMgbWFpbnRhaW5lZCBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIHdoZW4gd3JpdGVuIHRvIExSQU0uCisgKiBhbmQgaXMgbWFpbnRhaW5lZCBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIHdoZW4gd3JpdHRlbiB0byBMUkFNLgogICovCiBzdGF0aWMgdm9pZAogQXNjTWVtRFdvcmRDb3B5UHRyVG9McmFtKFBvcnRBZGRyIGlvcF9iYXNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FoYTE3NDAuYyBiL2RyaXZlcnMvc2NzaS9haGExNzQwLmMKaW5kZXggZDA1OGYxYS4uMWMxMGI3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FoYTE3NDAuYworKysgYi9kcml2ZXJzL3Njc2kvYWhhMTc0MC5jCkBAIC00NjEsNyArNDYxLDcgQEAKIAkvKiBUaGUgQWRhcHRlYyBTcGVjIHNheXMgdGhlIGNhcmQgaXMgc28gZmFzdCB0aGF0IHRoZSBsb29wcwogICAgICAgICAgICB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgb25jZSBpbiB0aGUgY29kZSBiZWxvdy4gRXZlbiBpZiB0aGlzCiAgICAgICAgICAgIHdhcyB0cnVlIHdpdGggdGhlIGZhc3Rlc3QgcHJvY2Vzc29ycyB3aGVuIHRoZSBzcGVjIHdhcwotICAgICAgICAgICB3cml0dGVuLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgdHJ1ZSB3aXRoIHRvZGF5cyBmYXN0CisgICAgICAgICAgIHdyaXR0ZW4sIGl0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0cnVlIHdpdGggdG9kYXkncyBmYXN0CiAgICAgICAgICAgIHByb2Nlc3NvcnMuIFdlIHByaW50IGEgd2FybmluZyBpZiB0aGUgY29kZSBpcyBleGVjdXRlZCBtb3JlCiAgICAgICAgICAgIG9mdGVuIHRoYW4gTE9PUENOVF9XQVJOLiBJZiB0aGlzIGhhcHBlbnMsIGl0IHNob3VsZCBiZQogICAgICAgICAgICBpbnZlc3RpZ2F0ZWQuIElmIHRoZSBjb3VudCByZWFjaGVzIExPT1BDTlRfTUFYLCB3ZSBhc3N1bWUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguaCBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguaAppbmRleCA5NWVlNTAzLi45YjA1OTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LmgKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5oCkBAIC00NzMsNyArNDczLDcgQEAKICAqCW8gQSByZXNpZHVhbCBoYXMgb2NjdXJyZWQgaWYgU0dfRlVMTF9SRVNJRCBpcyBzZXQgaW4gc2dwdHIsCiAgKgkgIG9yIHJlc2lkdWFsX3NncHRyIGRvZXMgbm90IGhhdmUgU0dfTElTVF9OVUxMIHNldC4KICAqCi0gKglvIFdlIGFyZSB0cmFuc2ZlcmluZyB0aGUgbGFzdCBzZWdtZW50IGlmIHJlc2lkdWFsX2RhdGFjbnQgaGFzCisgKglvIFdlIGFyZSB0cmFuc2ZlcnJpbmcgdGhlIGxhc3Qgc2VnbWVudCBpZiByZXNpZHVhbF9kYXRhY250IGhhcwogICoJICB0aGUgU0dfTEFTVF9TRUcgZmxhZyBzZXQuCiAgKgogICogSG9zdDoKQEAgLTUxNiw3ICs1MTYsNyBAQAogICovCiAKIC8qCi0gKiBEZWZpbml0aW9uIG9mIGEgc2NhdHRlci9nYXRoZXIgZWxlbWVudCBhcyB0cmFuc2ZlcmVkIHRvIHRoZSBjb250cm9sbGVyLgorICogRGVmaW5pdGlvbiBvZiBhIHNjYXR0ZXIvZ2F0aGVyIGVsZW1lbnQgYXMgdHJhbnNmZXJyZWQgdG8gdGhlIGNvbnRyb2xsZXIuCiAgKiBUaGUgYWljN3h4eCBjaGlwcyBvbmx5IHN1cHBvcnQgYSAyNGJpdCBsZW5ndGguICBXZSB1c2UgdGhlIHRvcCBieXRlIG9mCiAgKiB0aGUgbGVuZ3RoIHRvIHN0b3JlIGFkZGl0aW9uYWwgYWRkcmVzcyBiaXRzIGFuZCBhIGZsYWcgdG8gaW5kaWNhdGUKICAqIHRoYXQgYSBnaXZlbiBzZWdtZW50IHRlcm1pbmF0ZXMgdGhlIHRyYW5zZmVyLiAgVGhpcyBnaXZlcyB1cyBhbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5yZWcgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnJlZwppbmRleCAwNjY2YzIyLi43ZTEyYzMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnJlZworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnJlZwpAQCAtMzA1LDcgKzMwNSw3IEBACiB9CiAKIC8qCi0gKiBTZXF1ZW5jZXIgSW50ZXJ1cHQgU3RhdHVzCisgKiBTZXF1ZW5jZXIgSW50ZXJydXB0IFN0YXR1cwogICovCiByZWdpc3RlciBTRVFJTlRTVEFUIHsKIAlhZGRyZXNzCQkJMHgwMEMKQEAgLTY4NSw3ICs2ODUsNyBAQAogfQogCiAvKgotICogQ01DIFJlY2lldmUgTWVzc2FnZSAwCisgKiBDTUMgUmVjZWl2ZSBNZXNzYWdlIDAKICAqLwogcmVnaXN0ZXIgQ01DUlhNU0cwIHsKIAlhZGRyZXNzCQkJMHgwOTAKQEAgLTY5Niw3ICs2OTYsNyBAQAogfQogCiAvKgotICogT3ZlcmxheSBSZWNpZXZlIE1lc3NhZ2UgMAorICogT3ZlcmxheSBSZWNlaXZlIE1lc3NhZ2UgMAogICovCiByZWdpc3RlciBPVkxZUlhNU0cwIHsKIAlhZGRyZXNzCQkJMHgwOTAKQEAgLTczMiw3ICs3MzIsNyBAQAogfQogCiAvKgotICogQ01DIFJlY2lldmUgTWVzc2FnZSAxCisgKiBDTUMgUmVjZWl2ZSBNZXNzYWdlIDEKICAqLwogcmVnaXN0ZXIgQ01DUlhNU0cxIHsKIAlhZGRyZXNzCQkJMHgwOTEKQEAgLTc0Miw3ICs3NDIsNyBAQAogfQogCiAvKgotICogT3ZlcmxheSBSZWNpZXZlIE1lc3NhZ2UgMQorICogT3ZlcmxheSBSZWNlaXZlIE1lc3NhZ2UgMQogICovCiByZWdpc3RlciBPVkxZUlhNU0cxIHsKIAlhZGRyZXNzCQkJMHgwOTEKQEAgLTc3Nyw3ICs3NzcsNyBAQAogfQogCiAvKgotICogQ01DIFJlY2lldmUgTWVzc2FnZSAyCisgKiBDTUMgUmVjZWl2ZSBNZXNzYWdlIDIKICAqLwogcmVnaXN0ZXIgQ01DUlhNU0cyIHsKIAlhZGRyZXNzCQkJMHgwOTIKQEAgLTc4Nyw3ICs3ODcsNyBAQAogfQogCiAvKgotICogT3ZlcmxheSBSZWNpZXZlIE1lc3NhZ2UgMgorICogT3ZlcmxheSBSZWNlaXZlIE1lc3NhZ2UgMgogICovCiByZWdpc3RlciBPVkxZUlhNU0cyIHsKIAlhZGRyZXNzCQkJMHgwOTIKQEAgLTgxNiw3ICs4MTYsNyBAQAogfQogCiAvKgotICogQ01DIFJlY2lldmUgTWVzc2FnZSAzCisgKiBDTUMgUmVjZWl2ZSBNZXNzYWdlIDMKICAqLwogcmVnaXN0ZXIgQ01DUlhNU0czIHsKIAlhZGRyZXNzCQkJMHgwOTMKQEAgLTgyNiw3ICs4MjYsNyBAQAogfQogCiAvKgotICogT3ZlcmxheSBSZWNpZXZlIE1lc3NhZ2UgMworICogT3ZlcmxheSBSZWNlaXZlIE1lc3NhZ2UgMwogICovCiByZWdpc3RlciBPVkxZUlhNU0czIHsKIAlhZGRyZXNzCQkJMHgwOTMKQEAgLTEyNDksNyArMTI0OSw3IEBACiAKIC8qCiAgKiBMUSBQYWNrZXQgSW4KLSAqIFRoZSBsYXN0IExRIFBhY2tldCByZWNpZXZlZAorICogVGhlIGxhc3QgTFEgUGFja2V0IHJlY2VpdmVkCiAgKi8KIHJlZ2lzdGVyIExRSU4gewogCWFkZHJlc3MJCQkweDAyMApAQCAtMjU3Myw3ICsyNTczLDcgQEAKIH0KIAogLyoKLSAqIFNoYWRkb3cgSG9zdCBBZGRyZXNzLgorICogU2hhZG93IEhvc3QgQWRkcmVzcy4KICAqLwogcmVnaXN0ZXIgU0hBRERSIHsKIAlhZGRyZXNzCQkJMHgwNjAKQEAgLTM5ODMsNyArMzk4Myw3IEBACiAKIAkvKgogCSAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQsIHdoZW4gaW50ZXJydXB0IGNvYWxlc2NpbmcKLQkgKiBpcyBlbmFibGVkLCBiZWZvcmUgaXNzdWVpbmcgYSBDTURDTVBMVCBpbnRlcnJ1cHQgZm9yIGEgY29tcGxldGVkCisJICogaXMgZW5hYmxlZCwgYmVmb3JlIGlzc3VpbmcgYSBDTURDTVBMVCBpbnRlcnJ1cHQgZm9yIGEgY29tcGxldGVkCiAJICogY29tbWFuZC4KIAkgKi8KIAlJTlRfQ09BTEVTQ0lOR19USU1FUiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnNlcSBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguc2VxCmluZGV4IDJmYjc4ZTMuLjNhMzZkOTM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnNlcQorKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnNlcQpAQCAtNTY3LDcgKzU2Nyw3IEBACiAJc2hyCVNFTE9JRCwgNCwgU0NCX1NDU0lJRDsKIAkvKgogCSAqIElmIHdlIHdhbnQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIGRldmljZSwgZW5zdXJlCi0JICogd2UgYXJlIHNlbGVjdGluZyB3aXRoIGF0biBpcnJlZ2FyZGxlc3Mgb2Ygb3VyIHBhY2tldGl6ZWQKKwkgKiB3ZSBhcmUgc2VsZWN0aW5nIHdpdGggYXRuIHJlZ2FyZGxlc3Mgb2Ygb3VyIHBhY2tldGl6ZWQKIAkgKiBhZ3JlZW1lbnQuICBTaW5jZSBTUEk0IG9ubHkgYWxsb3dzIHRhcmdldCByZXNldCBvciBQUFIKIAkgKiBtZXNzYWdlcyBpZiB0aGlzIGlzIGEgcGFja2V0aXplZCBjb25uZWN0aW9uLCB0aGUgY2hhbmdlCiAJICogdG8gb3VyIG5lZ290aWF0aW9uIHRhYmxlIGVudHJ5IGZvciB0aGlzIHNlbGVjdGlvbiB3aWxsCkBAIC05NjAsNyArOTYwLDcgQEAKICAqIFRoaXMgaXMgZG9uZSB0byBhbGxvdyB0aGUgaG9zdCB0byBzZW5kIG1lc3NhZ2VzIG91dHNpZGUgb2YgYW4gaWRlbnRpZnkKICAqIHNlcXVlbmNlIHdoaWxlIHByb3RlY3RpbmcgdGhlIHNlcWVuY2VyIGZyb20gdGVzdGluZyB0aGUgTUtfTUVTU0FHRSBiaXQKICAqIG9uIGFuIFNDQiB0aGF0IG1pZ2h0IG5vdCBiZSBmb3IgdGhlIGN1cnJlbnQgbmV4dXMuIChGb3IgZXhhbXBsZSwgYQotICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uY2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bworICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bwogICogYW4gU0NCIHRoYXQgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0KS4KICAqCiAgKiBPdGhlcndpc2UsIHRyZWF0IE1TR19PVVQgYXMgYSAxIGJ5dGUgbWVzc2FnZSB0byBzZW5kIChhYm9ydCwgYWJvcnQgdGFnLApAQCAtMTUwNyw3ICsxNTA3LDcgQEAKIAkJICogSWYgdGhlIG90aGVyIEZJRk8gbmVlZHMgbG9hZGluZywgdGhlbiBpdAogCQkgKiBtdXN0IG5vdCBoYXZlIGNsYWltZWQgdGhlIFMvRyBjYWNoZSB5ZXQKIAkJICogKFNHX0NBQ0hFX0FWQUlMIHdvdWxkIGhhdmUgYmVlbiBjbGVhcmVkIGluCi0JCSAqIHRoZSBvcmdpbmFsIEZJRk8gbW9kZSBhbmQgd2UgdGVzdCB0aGlzIGFib3ZlKS4KKwkJICogdGhlIG9yaWdpbmFsIEZJRk8gbW9kZSBhbmQgd2UgdGVzdCB0aGlzIGFib3ZlKS4KIAkJICogUmV0dXJuIHRvIHRoZSBpZGxlIGxvb3Agc28gd2UgY2FuIHByb2Nlc3MgdGhlCiAJCSAqIEZJRk8gbm90IGN1cnJlbnRseSBvbiB0aGUgYnVzIGZpcnN0LgogCQkgKi8KQEAgLTE1MjEsNyArMTUyMSw3IEBACiBpZGxlX3NnZmV0Y2hfc3RhcnQ6CiAJLyoKIAkgKiBXZSBmZXRjaCBhICJjYWNoZWxpbmUgYWxpZ25lZCIgYW5kIHNpemVkIGFtb3VudCBvZiBkYXRhCi0JICogc28gd2UgZG9uJ3QgZW5kIHVwIHJlZmVyZW5jaW5nIGEgbm9uLWV4aXN0YW50IHBhZ2UuCisJICogc28gd2UgZG9uJ3QgZW5kIHVwIHJlZmVyZW5jaW5nIGEgbm9uLWV4aXN0ZW50IHBhZ2UuCiAJICogQ2FjaGVsaW5lIGFsaWduZWQgaXMgaW4gcXVvdGVzIGJlY2F1c2UgdGhlIGtlcm5lbCB3aWxsCiAJICogc2V0IHRoZSBwcmVmZXRjaCBhbW91bnQgdG8gYSByZWFzb25hYmxlIGxldmVsIGlmIHRoZQogCSAqIGNhY2hlbGluZSBzaXplIGlzIHVua25vd24uCkBAIC0xNTUxLDcgKzE1NTEsNyBAQAogCXRlc3QJREZTVEFUVVMsIFBSRUxPQURfQVZBSUwganogcmV0dXJuOwogCS8qCiAJICogT24gdGhlIEEsIHByZWxvYWRpbmcgYSBzZWdtZW50IGJlZm9yZSBIRE1BRU5BQ0sKLQkgKiBjb21lcyB0cnVlIGNhbiBjbG9iYmVyIHRoZSBzaGFkZG93IGFkZHJlc3Mgb2YgdGhlCisJICogY29tZXMgdHJ1ZSBjYW4gY2xvYmJlciB0aGUgc2hhZG93IGFkZHJlc3Mgb2YgdGhlCiAJICogZmlyc3Qgc2VnbWVudCBpbiB0aGUgUy9HIEZJRk8uICBXYWl0IHVudGlsIGl0IGlzCiAJICogc2FmZSB0byBwcm9jZWVkLgogCSAqLwpAQCAtMjAwNCwxMCArMjAwNCwxMCBAQAogCSAqIERlZmVyIGhhbmRsaW5nIG9mIHRoaXMgTk9OUEFDS1JFUSB1bnRpbCB3ZQogCSAqIGNhbiBiZSBzdXJlIGl0IHBlcnRhaW5zIHRvIHRoaXMgRklGTy4gIFNBVkVQVFJTCiAJICogd2lsbCBub3QgYmUgYXNzZXJ0ZWQgaWYgdGhlIE5PTlBBQ0tSRVEgaXMgZm9yIHVzLAotCSAqIHNvIHdlIG11c3Qgc2ltdWxhdGUgaXQgaWYgc2hhZGRvdyBpcyB2YWxpZC4gIElmCi0JICogc2hhZGRvdyBpcyBub3QgdmFsaWQsIGtlZXAgcnVubmluZyB0aGlzIEZJRk8gdW50aWwgd2UKKwkgKiBzbyB3ZSBtdXN0IHNpbXVsYXRlIGl0IGlmIHNoYWRvdyBpcyB2YWxpZC4gIElmCisJICogc2hhZG93IGlzIG5vdCB2YWxpZCwga2VlcCBydW5uaW5nIHRoaXMgRklGTyB1bnRpbCB3ZQogCSAqIGhhdmUgc2F0aXNmaWVkIHRoZSB0cmFuc2ZlciBieSBsb2FkaW5nIHNlZ21lbnRzIGFuZAotCSAqIHdhaXRpbmcgZm9yIGVpdGhlciBzaGFkZG93IHZhbGlkIG9yIGxhc3Rfc2VnX2RvbmUuCisJICogd2FpdGluZyBmb3IgZWl0aGVyIHNoYWRvdyB2YWxpZCBvciBsYXN0X3NlZ19kb25lLgogCSAqLwogCXRlc3QJTURGRlNUQVQsIFNIVkFMSUQgam56IHBrdF9zYXZlcHRyczsKIHBrdF9zZXJ2aWNlX2ZpZm86CkBAIC0yMTcxLDcgKzIxNzEsNyBAQAogCS8qCiAJICogVGhlIHVuZXhwZWN0ZWQgbm9ucGt0IHBoYXNlIGhhbmRsZXIgYXNzdW1lcyB0aGF0IGFueQogCSAqIGRhdGEgY2hhbm5lbCB1c2Ugd2lsbCBoYXZlIGEgRklGTyByZWZlcmVuY2UgY291bnQuICBJdAotCSAqIHR1cm5zIG91dCB0aGF0IHRoZSBzdGF0dXMgaGFuZGxlciBkb2Vzbid0IG5lZWQgYSByZWZlcm5jZQorCSAqIHR1cm5zIG91dCB0aGF0IHRoZSBzdGF0dXMgaGFuZGxlciBkb2Vzbid0IG5lZWQgYSByZWZlcmVuY2VzCiAJICogY291bnQgc2luY2UgdGhlIHN0YXR1cyByZWNlaXZlZCBmbGFnLCBhbmQgdGh1cyBjb21wbGV0aW9uCiAJICogcHJvY2Vzc2luZywgY2Fubm90IGJlIHNldCB1bnRpbCB0aGUgaGFuZGxlciBpcyBmaW5pc2hlZC4KIAkgKiBXZSBpbmNyZW1lbnQgdGhlIGNvdW50IGhlcmUgdG8gbWFrZSB0aGUgbm9ucGt0IGhhbmRsZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKaW5kZXggMzIzM2JmNS4uNWY4NjE3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKQEAgLTU2Miw3ICs1NjIsNyBAQAogfQogI2VuZGlmCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiBNaXNjZWxhbmVvdXMgU3VwcG9ydCBGdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKiogTWlzY2VsbGFuZW91cyBTdXBwb3J0IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCiAgKiBSZXR1cm4gcG9pbnRlcnMgdG8gdGhlIHRyYW5zZmVyIG5lZ290aWF0aW9uIGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIHNwZWNpZmllZCBvdXJfaWQvcmVtb3RlX2lkIHBhaXIuCkBAIC01OTksNyArNTk5LDcgQEAKIGFoZF9vdXR3KHN0cnVjdCBhaGRfc29mdGMgKmFoZCwgdV9pbnQgcG9ydCwgdV9pbnQgdmFsdWUpCiB7CiAJLyoKLQkgKiBXcml0ZSBsb3cgYnl0ZSBmaXJzdCB0byBhY2NvbW9kYXRlIHJlZ2lzdGVycworCSAqIFdyaXRlIGxvdyBieXRlIGZpcnN0IHRvIGFjY29tbW9kYXRlIHJlZ2lzdGVycwogCSAqIHN1Y2ggYXMgUFJHTUNOVCB3aGVyZSB0aGUgb3JkZXIgbWF0ZXJzLgogCSAqLwogCWFoZF9vdXRiKGFoZCwgcG9ydCwgdmFsdWUgJiAweEZGKTsKQEAgLTIwNjcsNyArMjA2Nyw3IEBACiAJCSAqIHRoYXQgcmVxdWlyZXMgaG9zdCBhc3Npc3RhbmNlIGZvciBjb21wbGV0aW9uLgogCQkgKiBXaGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZSBwaGFzZShzKSwgd2Ugd2lsbCBiZQogCQkgKiBub3RpZmllZCBieSB0aGUgc2VxdWVuY2VyIGFmdGVyIGVhY2ggYnl0ZSBpcwotCQkgKiB0cmFuc2ZlcmVkIHNvIHdlIGNhbiB0cmFjayBidXMgcGhhc2UgY2hhbmdlcy4KKwkJICogdHJhbnNmZXJyZWQgc28gd2UgY2FuIHRyYWNrIGJ1cyBwaGFzZSBjaGFuZ2VzLgogCQkgKgogCQkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gYSBIT1NUX01TR19MT09QCiAJCSAqIGludGVycnVwdCwgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIGhvc3QgbWVzc2FnZQpAQCAtMjQ4Nyw3ICsyNDg3LDcgQEAKIAkJLyoKIAkJICogQWx0aG91Z2ggdGhlIGRyaXZlciBkb2VzIG5vdCBjYXJlIGFib3V0IHRoZQogCQkgKiAnU2VsZWN0aW9uIGluIFByb2dyZXNzJyBzdGF0dXMgYml0LCB0aGUgYnVzeQotCQkgKiBMRUQgZG9lcy4gIFNFTElOR08gaXMgb25seSBjbGVhcmVkIGJ5IGEgc3VjY2Vzc2Z1bGwKKwkJICogTEVEIGRvZXMuICBTRUxJTkdPIGlzIG9ubHkgY2xlYXJlZCBieSBhIHN1Y2Nlc3NmdWwKIAkJICogc2VsZWN0aW9uLCBzbyB3ZSBtdXN0IG1hbnVhbGx5IGNsZWFyIGl0IHRvIGluc3VyZQogCQkgKiB0aGUgTEVEIHR1cm5zIG9mZiBqdXN0IGluY2FzZSBubyBmdXR1cmUgc3VjY2Vzc2Z1bAogCQkgKiBzZWxlY3Rpb25zIG9jY3VyIChlLmcuIG5vIGRldmljZXMgb24gdGhlIGJ1cykuCkBAIC0zNTQ4LDcgKzM1NDgsNyBAQAogCQlhaGRfb3V0YihhaGQsIFNFUUNUTDAsIGFoZF9pbmIoYWhkLCBTRVFDVEwwKSAmIH5TVEVQKTsKICAgCQlhaGRfb3V0YihhaGQsIFNJTU9ERTEsIHNpbW9kZTEpOwogCQkvKgotCQkgKiBTQ1NJSU5UIHNlZW1zIHRvIGdsaXRjaCBvY2Nhc3Npb25hbGx5IHdoZW4KKwkJICogU0NTSUlOVCBzZWVtcyB0byBnbGl0Y2ggb2NjYXNpb25hbGx5IHdoZW4KIAkJICogdGhlIGludGVycnVwdCBtYXNrcyBhcmUgcmVzdG9yZWQuICBDbGVhciBTQ1NJSU5UCiAJCSAqIG9uZSBtb3JlIHRpbWUgc28gdGhhdCBvbmx5IHBlcnNpc3RlbnQgZXJyb3JzCiAJCSAqIGFyZSBzZWVuIGFzIGEgcmVhbCBpbnRlcnJ1cHQuCkBAIC0zODM4LDcgKzM4MzgsNyBAQAogCiAvKgogICogVXBkYXRlIHRoZSBiaXRtYXNrIG9mIHRhcmdldHMgZm9yIHdoaWNoIHRoZSBjb250cm9sbGVyIHNob3VsZAotICogbmVnb3RpYXRlIHdpdGggYXQgdGhlIG5leHQgY29udmVuaWVudCBvcG9ydHVuaXR5LiAgVGhpcyBjdXJyZW50bHkKKyAqIG5lZ290aWF0ZSB3aXRoIGF0IHRoZSBuZXh0IGNvbnZlbmllbnQgb3Bwb3J0dW5pdHkuICBUaGlzIGN1cnJlbnRseQogICogbWVhbnMgdGhlIG5leHQgdGltZSB3ZSBzZW5kIHRoZSBpbml0aWFsIGlkZW50aWZ5IG1lc3NhZ2VzIGZvcgogICogYSBuZXcgdHJhbnNhY3Rpb24uCiAgKi8KQEAgLTQyMDAsNyArNDIwMCw3IEBACiAKIAkvKgogCSAqIER1cmluZyBwYWNrZXRpemVkIHRyYW5zZmVycywgdGhlIHRhcmdldCB3aWxsCi0JICogZ2l2ZSB1cyB0aGUgb3BvcnR1bml0eSB0byBzZW5kIGNvbW1hbmQgcGFja2V0cworCSAqIGdpdmUgdXMgdGhlIG9wcG9ydHVuaXR5IHRvIHNlbmQgY29tbWFuZCBwYWNrZXRzCiAJICogd2l0aG91dCB1cyBhc3NlcnRpbmcgYXR0ZW50aW9uLgogCSAqLwogCWlmICgodGluZm8tPnBwcl9vcHRpb25zICYgTVNHX0VYVF9QUFJfSVVfUkVRKSA9PSAwKQpAQCAtNTY1MSw3ICs1NjUxLDcgQEAKIAogCQkvKgogCQkgKiBSZXF1ZXVlIGFsbCB0YWdnZWQgY29tbWFuZHMgZm9yIHRoaXMgdGFyZ2V0Ci0JCSAqIGN1cnJlbnRseSBpbiBvdXIgcG9zZXNzaW9uIHNvIHRoZXkgY2FuIGJlCisJCSAqIGN1cnJlbnRseSBpbiBvdXIgcG9zc2Vzc2lvbiBzbyB0aGV5IGNhbiBiZQogCQkgKiBjb252ZXJ0ZWQgdG8gdW50YWdnZWQgY29tbWFuZHMuCiAJCSAqLwogCQlhaGRfc2VhcmNoX3FpbmZpZm8oYWhkLCBTQ0JfR0VUX1RBUkdFVChhaGQsIHNjYiksCkBAIC02MjQ1LDcgKzYyNDUsNyBAQAogLyoKICAqIFJlc2V0IHRoZSBjb250cm9sbGVyIGFuZCByZWNvcmQgc29tZSBpbmZvcm1hdGlvbiBhYm91dCBpdAogICogdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSBqdXN0IGFmdGVyIGEgcmVzZXQuICBJZiAicmVpbml0IiBpcwotICogbm9uLXplcm8sIHRoaXMgcmVzZXQgb2NjdXJlZCBhZnRlciBpbml0aWFsIGNvbmZpZ3VyYXRpb24KKyAqIG5vbi16ZXJvLCB0aGlzIHJlc2V0IG9jY3VycmVkIGFmdGVyIGluaXRpYWwgY29uZmlndXJhdGlvbgogICogYW5kIHRoZSBjYWxsZXIgcmVxdWVzdHMgdGhhdCB0aGUgY2hpcCBiZSBmdWxseSByZWluaXRpYWxpemVkCiAgKiB0byBhIHJ1bmFibGUgc3RhdGUuICBDaGlwIGludGVycnVwdHMgYXJlICpub3QqIGVuYWJsZWQgYWZ0ZXIKICAqIGEgcmVpbml0aWFsaXphdGlvbi4gIFRoZSBjYWxsZXIgbXVzdCBlbmFibGUgaW50ZXJydXB0cyB2aWEKQEAgLTY0OTUsNyArNjQ5NSw3IEBACiAJfQogCiAJLyoKLQkgKiBOb3RlIHRoYXQgd2Ugd2VyZSBzdWNjZXNzZnVsbAorCSAqIE5vdGUgdGhhdCB3ZSB3ZXJlIHN1Y2Nlc3NmdWwKIAkgKi8KIAlyZXR1cm4gKDApOyAKIApAQCAtNzA3OSw3ICs3MDc5LDcgQEAKIAkJcmV0dXJuIChFTk9NRU0pOwogCiAJLyoKLQkgKiBWZXJpZnkgdGhhdCB0aGUgY29tcGlsZXIgaGFzbid0IG92ZXItYWdyZXNzaXZlbHkKKwkgKiBWZXJpZnkgdGhhdCB0aGUgY29tcGlsZXIgaGFzbid0IG92ZXItYWdncmVzc2l2ZWx5CiAJICogcGFkZGVkIGltcG9ydGFudCBzdHJ1Y3R1cmVzLgogCSAqLwogCWlmIChzaXplb2Yoc3RydWN0IGhhcmR3YXJlX3NjYikgIT0gNjQpCkBAIC0xMDA4Nyw3ICsxMDA4Nyw3IEBACiAJCXJldHVybiAoZXJyb3IpOwogCiAJLyoKLQkgKiBXcml0ZSB0aGUgZGF0YS4gIElmIHdlIGRvbid0IGdldCB0aHJvdWdodCB0aGUgbG9vcCBhdAorCSAqIFdyaXRlIHRoZSBkYXRhLiAgSWYgd2UgZG9uJ3QgZ2V0IHRocm91Z2ggdGhlIGxvb3AgYXQKIAkgKiBsZWFzdCBvbmNlLCB0aGUgYXJndW1lbnRzIHdlcmUgaW52YWxpZC4KIAkgKi8KIAlyZXR2YWwgPSBFSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9vc20uYwppbmRleCAyNWQwNjY2Li43ZDQ4NzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtLmMKQEAgLTE0NDEsNyArMTQ0MSw3IEBACiAJCXVzZXJ0YWdzID0gYWhkX2xpbnV4X3VzZXJfdGFnZGVwdGgoYWhkLCBkZXZpbmZvKTsKIAkJaWYgKCF3YXNfcXVldWluZykgewogCQkJLyoKLQkJCSAqIFN0YXJ0IG91dCBhZ3Jlc3NpdmVseSBhbmQgYWxsb3cgb3VyCisJCQkgKiBTdGFydCBvdXQgYWdncmVzc2l2ZWx5IGFuZCBhbGxvdyBvdXIKIAkJCSAqIGR5bmFtaWMgcXVldWUgZGVwdGggYWxnb3JpdGhtIHRvIHRha2UKIAkJCSAqIGNhcmUgb2YgdGhlIHJlc3QuCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaCBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaAppbmRleCAxNzQ0NGJjLi5mNjk1Nzc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LmgKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5oCkBAIC00NDAsNyArNDQwLDcgQEAKICAqCW8gQSByZXNpZHVhbCBoYXMgb2NjdXJyZWQgaWYgU0dfRlVMTF9SRVNJRCBpcyBzZXQgaW4gc2dwdHIsCiAgKgkgIG9yIHJlc2lkdWFsX3NncHRyIGRvZXMgbm90IGhhdmUgU0dfTElTVF9OVUxMIHNldC4KICAqCi0gKglvIFdlIGFyZSB0cmFuc2ZlcmluZyB0aGUgbGFzdCBzZWdtZW50IGlmIHJlc2lkdWFsX2RhdGFjbnQgaGFzCisgKglvIFdlIGFyZSB0cmFuc2ZlcnJpbmcgdGhlIGxhc3Qgc2VnbWVudCBpZiByZXNpZHVhbF9kYXRhY250IGhhcwogICoJICB0aGUgU0dfTEFTVF9TRUcgZmxhZyBzZXQuCiAgKgogICogSG9zdDoKQEAgLTQ5NCw3ICs0OTQsNyBAQAogICovCiAKIC8qCi0gKiBEZWZpbml0aW9uIG9mIGEgc2NhdHRlci9nYXRoZXIgZWxlbWVudCBhcyB0cmFuc2ZlcmVkIHRvIHRoZSBjb250cm9sbGVyLgorICogRGVmaW5pdGlvbiBvZiBhIHNjYXR0ZXIvZ2F0aGVyIGVsZW1lbnQgYXMgdHJhbnNmZXJyZWQgdG8gdGhlIGNvbnRyb2xsZXIuCiAgKiBUaGUgYWljN3h4eCBjaGlwcyBvbmx5IHN1cHBvcnQgYSAyNGJpdCBsZW5ndGguICBXZSB1c2UgdGhlIHRvcCBieXRlIG9mCiAgKiB0aGUgbGVuZ3RoIHRvIHN0b3JlIGFkZGl0aW9uYWwgYWRkcmVzcyBiaXRzIGFuZCBhIGZsYWcgdG8gaW5kaWNhdGUKICAqIHRoYXQgYSBnaXZlbiBzZWdtZW50IHRlcm1pbmF0ZXMgdGhlIHRyYW5zZmVyLiAgVGhpcyBnaXZlcyB1cyBhbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5yZWcgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZwppbmRleCA5YTk2ZTU1Li5iYTBiNDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZwpAQCAtMzUxLDcgKzM1MSw3IEBACiAJYWRkcmVzcwkJCTB4MDBkCiAJYWNjZXNzX21vZGUgUk8KIAlmaWVsZAlPVkVSUlVOCQkweDgwCi0JZmllbGQJU0hWQUxJRAkJMHg0MAkvKiBTaGFkZG93IExheWVyIG5vbi16ZXJvICovCisJZmllbGQJU0hWQUxJRAkJMHg0MAkvKiBTaGFkb3cgTGF5ZXIgbm9uLXplcm8gKi8KIAlmaWVsZAlFWFBfQUNUSVZFCTB4MTAJLyogU0NTSSBFeHBhbmRlciBBY3RpdmUgKi8KIAlmaWVsZAlDUkNWQUxFUlIJMHgwOAkvKiBDUkMgZG9lc24ndCBtYXRjaCAoVTMgb25seSkgKi8KIAlmaWVsZAlDUkNFTkRFUlIJMHgwNAkvKiBObyB0ZXJtaW5hbCBDUkMgcGFja2V0IChVMyBvbmx5KSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnNlcQppbmRleCA1YTRjZmM5NS4uZTYwMDQxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEKQEAgLTU3LDEwICs1NywxMCBAQAogICogYSBsYXRlciB0aW1lLiAgVGhpcyBwcm9ibGVtIGNhbm5vdCBiZSByZXNvbHZlZCBieSBob2xkaW5nIGEgc2luZ2xlIGVudHJ5CiAgKiBpbiBzY3JhdGNoIHJhbSBzaW5jZSBhIHJlY29ubmVjdGluZyB0YXJnZXQgY2FuIHJlcXVlc3Qgc2Vuc2UgYW5kIHRoaXMgd2lsbAogICogY3JlYXRlIHlldCBhbm90aGVyIFNDQiB3YWl0aW5nIGZvciBzZWxlY3Rpb24uICBUaGUgc29sdXRpb24gdXNlZCBoZXJlIGlzIHRvIAotICogdXNlIGJ5dGUgMjcgb2YgdGhlIFNDQiBhcyBhIHBzdWVkby1uZXh0IHBvaW50ZXIgYW5kIHRvIHRocmVhZCBhIGxpc3QKKyAqIHVzZSBieXRlIDI3IG9mIHRoZSBTQ0IgYXMgYSBwc2V1ZG8tbmV4dCBwb2ludGVyIGFuZCB0byB0aHJlYWQgYSBsaXN0CiAgKiBvZiBTQ0JzIHRoYXQgYXJlIGF3YWl0aW5nIHNlbGVjdGlvbi4gIFNpbmNlIDAtMHhmZSBhcmUgdmFsaWQgU0NCIGluZGV4ZXMsIAogICogU0NCX0xJU1RfTlVMTCBpcyAweGZmIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gIEFuIGVudHJ5IGlzIGFsc28gYWRkZWQgdG8KLSAqIHRoaXMgbGlzdCBldmVyeXRpbWUgYSByZXF1ZXN0IHNlbnNlIG9jY3VycyBvciBhZnRlciBjb21wbGV0aW5nIGEgbm9uLXRhZ2dlZAorICogdGhpcyBsaXN0IGV2ZXJ5IHRpbWUgYSByZXF1ZXN0IHNlbnNlIG9jY3VycyBvciBhZnRlciBjb21wbGV0aW5nIGEgbm9uLXRhZ2dlZAogICogY29tbWFuZCBmb3Igd2hpY2ggYSBzZWNvbmQgU0NCIGhhcyBiZWVuIHF1ZXVlZC4gIFRoZSBzZXF1ZW5jZXIgd2lsbAogICogYXV0b21hdGljYWxseSBjb25zdW1lIHRoZSBlbnRyaWVzLgogICovCkBAIC03NTIsNyArNzUyLDcgQEAKIAogCS8qCiAJICogV2UgZmV0Y2ggYSAiY2FjaGVsaW5lIGFsaWduZWQiIGFuZCBzaXplZCBhbW91bnQgb2YgZGF0YQotCSAqIHNvIHdlIGRvbid0IGVuZCB1cCByZWZlcmVuY2luZyBhIG5vbi1leGlzdGFudCBwYWdlLgorCSAqIHNvIHdlIGRvbid0IGVuZCB1cCByZWZlcmVuY2luZyBhIG5vbi1leGlzdGVudCBwYWdlLgogCSAqIENhY2hlbGluZSBhbGlnbmVkIGlzIGluIHF1b3RlcyBiZWNhdXNlIHRoZSBrZXJuZWwgd2lsbAogCSAqIHNldCB0aGUgcHJlZmV0Y2ggYW1vdW50IHRvIGEgcmVhc29uYWJsZSBsZXZlbCBpZiB0aGUKIAkgKiBjYWNoZWxpbmUgc2l6ZSBpcyB1bmtub3duLgpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKICAqIFRoaXMgaXMgZG9uZSB0byBhbGxvdyB0aGUgaG9zdCB0byBzZW5kIG1lc3NhZ2VzIG91dHNpZGUgb2YgYW4gaWRlbnRpZnkKICAqIHNlcXVlbmNlIHdoaWxlIHByb3RlY3RpbmcgdGhlIHNlcWVuY2VyIGZyb20gdGVzdGluZyB0aGUgTUtfTUVTU0FHRSBiaXQKICAqIG9uIGFuIFNDQiB0aGF0IG1pZ2h0IG5vdCBiZSBmb3IgdGhlIGN1cnJlbnQgbmV4dXMuIChGb3IgZXhhbXBsZSwgYQotICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uY2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bworICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bwogICogYW4gU0NCIHRoYXQgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0KS4KICAqCiAgKiBPdGhlcndpc2UsIHRyZWF0IE1TR19PVVQgYXMgYSAxIGJ5dGUgbWVzc2FnZSB0byBzZW5kIChhYm9ydCwgYWJvcnQgdGFnLApAQCAtMTk5OSw3ICsxOTk5LDcgQEAKICAqIGZyb20gb3V0IHRvIGluLCB3YWl0IGFuIGFkZGl0aW9uYWwgZGF0YSByZWxlYXNlIGRlbGF5IGJlZm9yZSBjb250aW51aW5nLgogICovCiBjaGFuZ2VfcGhhc2U6Ci0JLyogV2FpdCBmb3IgcHJlY2VlZGluZyBJL08gc2Vzc2lvbiB0byBjb21wbGV0ZS4gKi8KKwkvKiBXYWl0IGZvciBwcmVjZWRpbmcgSS9PIHNlc3Npb24gdG8gY29tcGxldGUuICovCiAJdGVzdAlTQ1NJU0lHSSwgQUNLSSBqbnogLjsKIAogCS8qIENoYW5nZSB0aGUgcGhhc2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9jb3JlLmMKaW5kZXggZTAyMWI0OC4uZGMyOGIwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9jb3JlLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9jb3JlLmMKQEAgLTQyNyw3ICs0MjcsNyBAQAogfQogI2VuZGlmCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiBNaXNjZWxhbmVvdXMgU3VwcG9ydCBGdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKiogTWlzY2VsbGFuZW91cyBTdXBwb3J0IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCiAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgc2VxdWVuY2VyIHJlcG9ydGVkIGEgcmVzaWR1YWwKICAqIGZvciB0aGlzIFNDQi90cmFuc2FjdGlvbi4KQEAgLTEyNDMsNyArMTI0Myw3IEBACiAJCSAqIHRoYXQgcmVxdWlyZXMgaG9zdCBhc3Npc3RhbmNlIGZvciBjb21wbGV0aW9uLgogCQkgKiBXaGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZSBwaGFzZShzKSwgd2Ugd2lsbCBiZQogCQkgKiBub3RpZmllZCBieSB0aGUgc2VxdWVuY2VyIGFmdGVyIGVhY2ggYnl0ZSBpcwotCQkgKiB0cmFuc2ZlcmVkIHNvIHdlIGNhbiB0cmFjayBidXMgcGhhc2UgY2hhbmdlcy4KKwkJICogdHJhbnNmZXJyZWQgc28gd2UgY2FuIHRyYWNrIGJ1cyBwaGFzZSBjaGFuZ2VzLgogCQkgKgogCQkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gYSBIT1NUX01TR19MT09QCiAJCSAqIGludGVycnVwdCwgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIGhvc3QgbWVzc2FnZQpAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAKIAkJICAgICAgIHNjYnB0ciwgYWhjX2luYihhaGMsIEFSR18xKSwKIAkJICAgICAgIGFoYy0+c2NiX2RhdGEtPmhzY2JzW3NjYnB0cl0udGFnKTsKIAkJYWhjX2R1bXBfY2FyZF9zdGF0ZShhaGMpOwotCQlwYW5pYygiZm9yIHNhZnRleSIpOworCQlwYW5pYygiZm9yIHNhZmV0eSIpOwogCQlicmVhazsKIAl9CiAJY2FzZSBPVVRfT0ZfUkFOR0U6CkBAIC0xNzMzLDcgKzE3MzMsNyBAQAogCQkvKgogCQkgKiBBbHRob3VnaCB0aGUgZHJpdmVyIGRvZXMgbm90IGNhcmUgYWJvdXQgdGhlCiAJCSAqICdTZWxlY3Rpb24gaW4gUHJvZ3Jlc3MnIHN0YXR1cyBiaXQsIHRoZSBidXN5Ci0JCSAqIExFRCBkb2VzLiAgU0VMSU5HTyBpcyBvbmx5IGNsZWFyZWQgYnkgYSBzdWNjZXNzZnVsbAorCQkgKiBMRUQgZG9lcy4gIFNFTElOR08gaXMgb25seSBjbGVhcmVkIGJ5IGEgc3VjY2Vzc2Z1bAogCQkgKiBzZWxlY3Rpb24sIHNvIHdlIG11c3QgbWFudWFsbHkgY2xlYXIgaXQgdG8gaW5zdXJlCiAJCSAqIHRoZSBMRUQgdHVybnMgb2ZmIGp1c3QgaW5jYXNlIG5vIGZ1dHVyZSBzdWNjZXNzZnVsCiAJCSAqIHNlbGVjdGlvbnMgb2NjdXIgKGUuZy4gbm8gZGV2aWNlcyBvbiB0aGUgYnVzKS4KQEAgLTE5NDMsNyArMTk0Myw3IEBACiAJCQlpZiAobGFzdHBoYXNlICE9IFBfQlVTRlJFRSkgewogCQkJCS8qCiAJCQkJICogUmVuZWdvdGlhdGUgd2l0aCB0aGlzIGRldmljZSBhdCB0aGUKLQkJCQkgKiBuZXh0IG9wb3J0dW5pdHkganVzdCBpbiBjYXNlIHRoaXMgYnVzZnJlZQorCQkJCSAqIG5leHQgb3Bwb3J0dW5pdHkganVzdCBpbiBjYXNlIHRoaXMgYnVzZnJlZQogCQkJCSAqIGlzIGR1ZSB0byBhIG5lZ290aWF0aW9uIG1pc21hdGNoIHdpdGggdGhlCiAJCQkJICogZGV2aWNlLgogCQkJCSAqLwpAQCAtMjQ0Miw3ICsyNDQyLDcgQEAKIAogLyoKICAqIFVwZGF0ZSB0aGUgYml0bWFzayBvZiB0YXJnZXRzIGZvciB3aGljaCB0aGUgY29udHJvbGxlciBzaG91bGQKLSAqIG5lZ290aWF0ZSB3aXRoIGF0IHRoZSBuZXh0IGNvbnZlbmllbnQgb3BvcnR1bml0eS4gIFRoaXMgY3VycmVudGx5CisgKiBuZWdvdGlhdGUgd2l0aCBhdCB0aGUgbmV4dCBjb252ZW5pZW50IG9wcG9ydHVuaXR5LiAgVGhpcyBjdXJyZW50bHkKICAqIG1lYW5zIHRoZSBuZXh0IHRpbWUgd2Ugc2VuZCB0aGUgaW5pdGlhbCBpZGVudGlmeSBtZXNzYWdlcyBmb3IKICAqIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCkBAIC00MTMxLDcgKzQxMzEsNyBAQAogCiAJCS8qCiAJCSAqIFJlcXVldWUgYWxsIHRhZ2dlZCBjb21tYW5kcyBmb3IgdGhpcyB0YXJnZXQKLQkJICogY3VycmVudGx5IGluIG91ciBwb3Nlc3Npb24gc28gdGhleSBjYW4gYmUKKwkJICogY3VycmVudGx5IGluIG91ciBwb3NzZXNzaW9uIHNvIHRoZXkgY2FuIGJlCiAJCSAqIGNvbnZlcnRlZCB0byB1bnRhZ2dlZCBjb21tYW5kcy4KIAkJICovCiAJCWFoY19zZWFyY2hfcWluZmlmbyhhaGMsIFNDQl9HRVRfVEFSR0VUKGFoYywgc2NiKSwKQEAgLTQ1ODEsNyArNDU4MSw3IEBACiAvKgogICogUmVzZXQgdGhlIGNvbnRyb2xsZXIgYW5kIHJlY29yZCBzb21lIGluZm9ybWF0aW9uIGFib3V0IGl0CiAgKiB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIGp1c3QgYWZ0ZXIgYSByZXNldC4gIElmICJyZWluaXQiIGlzCi0gKiBub24temVybywgdGhpcyByZXNldCBvY2N1cmVkIGFmdGVyIGluaXRpYWwgY29uZmlndXJhdGlvbgorICogbm9uLXplcm8sIHRoaXMgcmVzZXQgb2NjdXJyZWQgYWZ0ZXIgaW5pdGlhbCBjb25maWd1cmF0aW9uCiAgKiBhbmQgdGhlIGNhbGxlciByZXF1ZXN0cyB0aGF0IHRoZSBjaGlwIGJlIGZ1bGx5IHJlaW5pdGlhbGl6ZWQKICAqIHRvIGEgcnVuYWJsZSBzdGF0ZS4gIENoaXAgaW50ZXJydXB0cyBhcmUgKm5vdCogZW5hYmxlZCBhZnRlcgogICogYSByZWluaXRpYWxpemF0aW9uLiAgVGhlIGNhbGxlciBtdXN0IGVuYWJsZSBpbnRlcnJ1cHRzIHZpYQpAQCAtNDg5OSw3ICs0ODk5LDcgQEAKIAlhaGMtPm5leHRfcXVldWVkX3NjYiA9IGFoY19nZXRfc2NiKGFoYyk7CiAKIAkvKgotCSAqIE5vdGUgdGhhdCB3ZSB3ZXJlIHN1Y2Nlc3NmdWxsCisJICogTm90ZSB0aGF0IHdlIHdlcmUgc3VjY2Vzc2Z1bAogCSAqLwogCXJldHVybiAoMCk7IAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9vc20uYwppbmRleCA0YTM1OWJiLi5jNjI1MWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X29zbS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfb3NtLmMKQEAgLTI5NCw3ICsyOTQsNyBAQAogICogZHViaW91cyBhdCBiZXN0LiAgVG8gbXkga25vd2xlZGdlLCB0aGlzIG9wdGlvbiBoYXMgbmV2ZXIgYWN0dWFsbHkKICAqIHNvbHZlZCBhIFBDSSBwYXJpdHkgcHJvYmxlbSwgYnV0IG9uIGNlcnRhaW4gbWFjaGluZXMgd2l0aCBicm9rZW4gUENJCiAgKiBjaGlwc2V0IGNvbmZpZ3VyYXRpb25zIHdoZXJlIHN0cmF5IFBDSSB0cmFuc2FjdGlvbnMgd2l0aCBiYWQgcGFyaXR5IGFyZQotICogdGhlIG5vcm0gcmF0aGVyIHRoYW4gdGhlIGV4Y2VwdGlvbiwgdGhlIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBvdmVyd2VsbWluZy4KKyAqIHRoZSBub3JtIHJhdGhlciB0aGFuIHRoZSBleGNlcHRpb24sIHRoZSBlcnJvciBtZXNzYWdlcyBjYW4gYmUgb3ZlcndoZWxtaW5nLgogICogSXQncyBpbmNsdWRlZCBpbiB0aGUgZHJpdmVyIGZvciBjb21wbGV0ZW5lc3MuCiAgKiAgIDAJICAgPSBTaHV0IG9mZiBQQ0kgcGFyaXR5IGNoZWNrCiAgKiAgIG5vbi0wID0gcmV2ZXJzZSBwb2xhcml0eSBwY2kgcGFyaXR5IGNoZWNraW5nCkBAIC0xMzE4LDcgKzEzMTgsNyBAQAogCQl1c2VydGFncyA9IGFoY19saW51eF91c2VyX3RhZ2RlcHRoKGFoYywgZGV2aW5mbyk7CiAJCWlmICghd2FzX3F1ZXVpbmcpIHsKIAkJCS8qCi0JCQkgKiBTdGFydCBvdXQgYWdyZXNzaXZlbHkgYW5kIGFsbG93IG91cgorCQkJICogU3RhcnQgb3V0IGFnZ3Jlc3NpdmVseSBhbmQgYWxsb3cgb3VyCiAJCQkgKiBkeW5hbWljIHF1ZXVlIGRlcHRoIGFsZ29yaXRobSB0byB0YWtlCiAJCQkgKiBjYXJlIG9mIHRoZSByZXN0LgogCQkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3BjaS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9wY2kuYwppbmRleCAyYjExYTQyLi42OTE3YjRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4X3BjaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfcGNpLmMKQEAgLTc4OSw3ICs3ODksNyBAQAogCWFoYy0+YnVzX2ludHIgPSBhaGNfcGNpX2ludHI7CiAJYWhjLT5idXNfY2hpcF9pbml0ID0gYWhjX3BjaV9jaGlwX2luaXQ7CiAKLQkvKiBSZW1lYmVyIGhvdyB0aGUgY2FyZCB3YXMgc2V0dXAgaW4gY2FzZSB0aGVyZSBpcyBubyBTRUVQUk9NICovCisJLyogUmVtZW1iZXIgaG93IHRoZSBjYXJkIHdhcyBzZXR1cCBpbiBjYXNlIHRoZXJlIGlzIG5vIFNFRVBST00gKi8KIAlpZiAoKGFoY19pbmIoYWhjLCBIQ05UUkwpICYgUE9XUkROKSA9PSAwKSB7CiAJCWFoY19wYXVzZShhaGMpOwogCQlpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENfVUxUUkEyKSAhPSAwKQpAQCAtODYwLDcgKzg2MCw3IEBACiAJfQogCiAJLyoKLQkgKiBXZSBjYW5ub3QgcGVyZm9ybSBVTFRSQSBzcGVlZHMgd2l0aG91dCB0aGUgcHJlc2Vuc2UKKwkgKiBXZSBjYW5ub3QgcGVyZm9ybSBVTFRSQSBzcGVlZHMgd2l0aG91dCB0aGUgcHJlc2VuY2UKIAkgKiBvZiB0aGUgZXh0ZXJuYWwgcHJlY2lzaW9uIHJlc2lzdG9yLgogCSAqLwogCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19VTFRSQSkgIT0gMCkgewpAQCAtOTY5LDcgKzk2OSw3IEBACiB9CiAKIC8qCi0gKiBUZXN0IGZvciB0aGUgcHJlc2Vuc2Ugb2YgZXh0ZXJuYWwgc3JhbSBpbiBhbgorICogVGVzdCBmb3IgdGhlIHByZXNlbmNlIG9mIGV4dGVybmFsIHNyYW0gaW4gYW4KICAqICJ1bnNoYXJlZCIgY29uZmlndXJhdGlvbi4KICAqLwogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9ncmFtLnkgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWNhc20vYWljYXNtX2dyYW0ueQppbmRleCBlNDA2NDQzLi5mMTU4NmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWNhc20vYWljYXNtX2dyYW0ueQorKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWNhc20vYWljYXNtX2dyYW0ueQpAQCAtODAzLDcgKzgwMyw3IEBACiB8CW1hY3JvX2FyZ2xpc3QgJywnIFRfQVJHCiAJewogCQlpZiAoJDEgPT0gMCkgewotCQkJc3RvcCgiQ29tbWEgd2l0aG91dCBwcmVjZWVkaW5nIGFyZ3VtZW50IGluIGFyZyBsaXN0IiwKKwkJCXN0b3AoIkNvbW1hIHdpdGhvdXQgcHJlY2VkaW5nIGFyZ3VtZW50IGluIGFyZyBsaXN0IiwKIAkJCSAgICAgRVhfREFUQUVSUik7CiAJCQkvKiBOT1RSRUFDSEVEICovCiAJCX0KQEAgLTEzMTksOCArMTMxOSw4IEBACiA7CiAKIAkvKgotCSAqIFRoaXMgZ3JhbW1lciBkaWZmZXJzIGZyb20gdGhlIG9uZSBpbiB0aGUgYWljN3h4eAotCSAqIHJlZmVyZW5jZSBtYW51YWwgc2luY2UgdGhlIGdyYW1tZXIgbGlzdGVkIHRoZXJlIGlzCisJICogVGhpcyBncmFtbWFyIGRpZmZlcnMgZnJvbSB0aGUgb25lIGluIHRoZSBhaWM3eHh4CisJICogcmVmZXJlbmNlIG1hbnVhbCBzaW5jZSB0aGUgZ3JhbW1hciBsaXN0ZWQgdGhlcmUgaXMKIAkgKiBhbWJpZ3VvdXMgYW5kIGNhdXNlcyBhIHNoaWZ0L3JlZHVjZSBjb25mbGljdC4KIAkgKiBJdCBhbHNvIHNlZW1zIG1vcmUgbG9naWNhbCBhcyB0aGUgImltbWVkaWF0ZSIKIAkgKiBhcmd1bWVudCBpcyBsaXN0ZWQgYXMgdGhlIHNlY29uZCBhcmcgbGlrZSB0aGUKQEAgLTE3OTksNyArMTc5OSw3IEBACiAJaW5zdHIgPSBzZXFfYWxsb2MoKTsKIAlmM19pbnN0ciA9ICZpbnN0ci0+Zm9ybWF0LmZvcm1hdDM7CiAJaWYgKGFkZHJlc3MtPnN5bWJvbCA9PSBOVUxMKSB7Ci0JCS8qICdkb3QnIHJlZmVycmVuY2UuICBVc2UgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gcG9pbnRlciAqLworCQkvKiAnZG90JyByZWZlcmVuY2UuICBVc2UgdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gcG9pbnRlciAqLwogCQlhZGRyID0gaW5zdHJ1Y3Rpb25fcHRyICsgYWRkcmVzcy0+b2Zmc2V0OwogCX0gZWxzZSBpZiAoYWRkcmVzcy0+c3ltYm9sLT50eXBlID09IFVOSU5JVElBTElaRUQpIHsKIAkJLyogZm9yd2FyZCByZWZlcmVuY2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpY2FzbS9haWNhc21fbWFjcm9fZ3JhbS55IGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9tYWNyb19ncmFtLnkKaW5kZXggZmY0NmFhNi4uNzA4MzI2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9tYWNyb19ncmFtLnkKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljYXNtL2FpY2FzbV9tYWNyb19ncmFtLnkKQEAgLTExNSw3ICsxMTUsNyBAQAogfAltYWNyb19hcmdsaXN0ICcsJyBUX0FSRwogCXsKIAkJaWYgKCQxID09IDApIHsKLQkJCXN0b3AoIkNvbW1hIHdpdGhvdXQgcHJlY2VlZGluZyBhcmd1bWVudCBpbiBhcmcgbGlzdCIsCisJCQlzdG9wKCJDb21tYSB3aXRob3V0IHByZWNlZGluZyBhcmd1bWVudCBpbiBhcmcgbGlzdCIsCiAJCQkgICAgIEVYX0RBVEFFUlIpOwogCQkJLyogTk9UUkVBQ0hFRCAqLwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQuYyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC5jCmluZGV4IDRmZjYwYTAuLjViMjEyZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC5jCkBAIC05MDUsNyArOTA1LDcgQEAKICAqIHByb2JsZW1zIHdpdGggYXJjaGl0ZWN0dXJlcyBJIGNhbid0IHRlc3Qgb24gKGJlY2F1c2UgSSBkb24ndCBoYXZlIG9uZSwKICAqIHN1Y2ggYXMgdGhlIEFscGhhIGJhc2VkIHN5c3RlbXMpIHdoaWNoIGhhcHBlbiB0byBnaXZlIGZhdWx0cyBmb3IKICAqIG5vbi1hbGlnbmVkIG1lbW9yeSBhY2Nlc3NlcywgY2FyZSB3YXMgdGFrZW4gdG8gYWxpZ24gdGhpcyBzdHJ1Y3R1cmUKLSAqIGluIGEgd2F5IHRoYXQgZ2F1cmFudGVlZCBhbGwgYWNjZXNzZXMgbGFyZ2VyIHRoYW4gOCBiaXRzIHdlcmUgYWxpZ25lZAorICogaW4gYSB3YXkgdGhhdCBndWFyYW50ZWVkIGFsbCBhY2Nlc3NlcyBsYXJnZXIgdGhhbiA4IGJpdHMgd2VyZSBhbGlnbmVkCiAgKiBvbiB0aGUgYXBwcm9wcmlhdGUgYm91bmRhcnkuICBJdCdzIGFsc28gb3JnYW5pemVkIHRvIHRyeSBhbmQgYmUgbW9yZQogICogY2FjaGUgbGluZSBlZmZpY2llbnQuICBCZSBjYXJlZnVsIHdoZW4gY2hhbmdpbmcgdGhpcyBsZXN0IHlvdSBtaWdodCBodXJ0CiAgKiBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBicmluZyBkb3duIHRoZSB3cmF0aCBvZiB0aGUgbWFzc2VzLgpAQCAtMTE4MCw3ICsxMTgwLDcgQEAKICAqIHRoZSBjYXJkJ3MgcmVnaXN0ZXJzIGluIGEgaGV4IGR1bXAgZm9ybWF0IHRhaWxvcmVkIHRvIGVhY2ggbW9kZWwgb2YKICAqIGNvbnRyb2xsZXIuCiAgKiAKLSAqIE5PVEU6IFRIRSBDT05UUk9MTEVSIElTIExFRlQgSU4gQU4gVU5VU0VBQkxFIFNUQVRFIEJZIFRISVMgT1BUSU9OLgorICogTk9URTogVEhFIENPTlRST0xMRVIgSVMgTEVGVCBJTiBBTiBVTlVTQUJMRSBTVEFURSBCWSBUSElTIE9QVElPTi4KICAqICAgICAgIFlPVSBDQU5OT1QgQk9PVCBVUCBXSVRIIFRISVMgT1BUSU9OLCBJVCBJUyBGT1IgREVCVUdHSU5HIFBVUlBPU0VTCiAgKiAgICAgICBPTkxZCiAgKi8KQEAgLTM0NjcsNyArMzQ2Nyw3IEBACiAgIC8qIFR1cm4gb2ZmIHRoZSBidXMnIGN1cnJlbnQgb3BlcmF0aW9ucywgYWZ0ZXIgYWxsLCB3ZSBzaG91bGRuJ3QgaGF2ZSBhbnkKICAgICogdmFsaWQgY29tbWFuZHMgbGVmdCB0byBjYXVzZSBhIFJTRUxJIGFuZCBTRUxPIG9uY2Ugd2UndmUgdG9zc2VkIHRoZQogICAgKiBidXMgYXdheSB3aXRoIHRoaXMgcmVzZXQsIHNvIHdlIG1pZ2h0IGFzIHdlbGwgc2h1dCBkb3duIHRoZSBzZXF1ZW5jZXIKLSAgICogdW50aWwgdGhlIGJ1cyBpcyByZXN0YXJ0ZWQgYXMgb3Bwb3NzZWQgdG8gc2F2aW5nIHRoZSBjdXJyZW50IHNldHRpbmdzCisgICAqIHVudGlsIHRoZSBidXMgaXMgcmVzdGFydGVkIGFzIG9wcG9zZWQgdG8gc2F2aW5nIHRoZSBjdXJyZW50IHNldHRpbmdzCiAgICAqIGFuZCByZXN0b3JpbmcgdGhlbSAod2hpY2ggbWFrZXMgbm8gc2Vuc2UgdG8gbWUpLiAqLwogCiAgIC8qIFR1cm4gb24gdGhlIGJ1cyByZXNldC4gKi8KQEAgLTQwNzAsNyArNDA3MCw3IEBACiAgICAgICAgICAgICBhaWNfZGV2LT5tYXhfcV9kZXB0aCA9IGFpY19kZXYtPnRlbXBfcV9kZXB0aCA9IDE7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogV2Ugc2V0IHRoaXMgY29tbWFuZCB1cCBhcyBhIGJ1cyBkZXZpY2UgcmVzZXQuICBIb3dldmVyLCB3ZSBoYXZlCi0gICAgICAgICAgICAgKiB0byBjbGVhciB0aGUgdGFnIHR5cGUgYXMgaXQncyBjYXVzaW5nIHVzIHByb2JsZW1zLiAgV2Ugc2hvdWxkbnQKKyAgICAgICAgICAgICAqIHRvIGNsZWFyIHRoZSB0YWcgdHlwZSBhcyBpdCdzIGNhdXNpbmcgdXMgcHJvYmxlbXMuICBXZSBzaG91bGRuJ3QKICAgICAgICAgICAgICAqIGhhdmUgdG8gd29ycnkgYWJvdXQgYW55IG90aGVyIGNvbW1hbmRzIGJlaW5nIGFjdGl2ZSwgc2luY2UgaWYKICAgICAgICAgICAgICAqIHRoZSBkZXZpY2UgaXMgcmVmdXNpbmcgdGFnZ2VkIGNvbW1hbmRzLCB0aGlzIHNob3VsZCBiZSB0aGUKICAgICAgICAgICAgICAqIGZpcnN0IHRhZ2dlZCBjb21tYW5kIHNlbnQgdG8gdGhlIGRldmljZSwgaG93ZXZlciwgd2UgZG8gaGF2ZQpAQCAtOTc0OCw3ICs5NzQ4LDcgQEAKICAgICB9CiAKICAgICAvKgotICAgICAqIFdlIGFyZSBjb21taXRlZCBub3csIGV2ZXJ5dGhpbmcgaGFzIGJlZW4gY2hlY2tlZCBhbmQgdGhpcyBjYXJkCisgICAgICogV2UgYXJlIGNvbW1pdHRlZCBub3csIGV2ZXJ5dGhpbmcgaGFzIGJlZW4gY2hlY2tlZCBhbmQgdGhpcyBjYXJkCiAgICAgICogaGFzIGJlZW4gZm91bmQsIG5vdyB3ZSBqdXN0IHNldCBpdCB1cAogICAgICAqLwogCkBAIC05OTA2LDcgKzk5MDYsNyBAQAogICAgKiAgMjogQWxsIFBDSSBjb250cm9sbGVycyB3aXRoIEJJT1NfRU5BQkxFRCBuZXh0LCBhY2NvcmRpbmcgdG8gQklPUwogICAgKiAgICAgYWRkcmVzcywgZ29pbmcgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdC4KICAgICogIDM6IFJlbWFpbmluZyBWTEIvRUlTQSBjb250cm9sbGVycyBnb2luZyBpbiBzbG90IG9yZGVyLgotICAgKiAgNDogUmVtYWluaW5nIFBDSSBjb250cm9sbGVycywgZ29pbmcgaW4gUENJIGRldmljZSBvcmRlciAocmV2ZXJzYWJsZSkKKyAgICogIDQ6IFJlbWFpbmluZyBQQ0kgY29udHJvbGxlcnMsIGdvaW5nIGluIFBDSSBkZXZpY2Ugb3JkZXIgKHJldmVyc2libGUpCiAgICAqLwogCiAgIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC9haWM3eHh4LnNlcSBiL2RyaXZlcnMvc2NzaS9haWM3eHh4X29sZC9haWM3eHh4LnNlcQppbmRleCAxNTY1YmU5Li44MjNmZjI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eF9vbGQvYWljN3h4eC5zZXEKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHhfb2xkL2FpYzd4eHguc2VxCkBAIC01MSw3ICs1MSw3IEBACiAgKiB1c2UgYnl0ZSAyNyBvZiB0aGUgU0NCIGFzIGEgcHNldWRvLW5leHQgcG9pbnRlciBhbmQgdG8gdGhyZWFkIGEgbGlzdAogICogb2YgU0NCcyB0aGF0IGFyZSBhd2FpdGluZyBzZWxlY3Rpb24uICBTaW5jZSAwLTB4ZmUgYXJlIHZhbGlkIFNDQiBpbmRleGVzLCAKICAqIFNDQl9MSVNUX05VTEwgaXMgMHhmZiB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuICBBbiBlbnRyeSBpcyBhbHNvIGFkZGVkIHRvCi0gKiB0aGlzIGxpc3QgZXZlcnl0aW1lIGEgcmVxdWVzdCBzZW5zZSBvY2N1cnMgb3IgYWZ0ZXIgY29tcGxldGluZyBhIG5vbi10YWdnZWQKKyAqIHRoaXMgbGlzdCBldmVyeSB0aW1lIGEgcmVxdWVzdCBzZW5zZSBvY2N1cnMgb3IgYWZ0ZXIgY29tcGxldGluZyBhIG5vbi10YWdnZWQKICAqIGNvbW1hbmQgZm9yIHdoaWNoIGEgc2Vjb25kIFNDQiBoYXMgYmVlbiBxdWV1ZWQuICBUaGUgc2VxdWVuY2VyIHdpbGwKICAqIGF1dG9tYXRpY2FsbHkgY29uc3VtZSB0aGUgZW50cmllcy4KICAqLwpAQCAtNjk2LDcgKzY5Niw3IEBACiAgKiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlIGhzb3QgdG8gc2VuZCBtZXNzYWdlcyBvdXRzaWRlIG9mIGFuIGlkZW50aWZ5CiAgKiBzZXF1ZW5jZSB3aGlsZSBwcm90ZWN0aW5nIHRoZSBzZXFlbmNlciBmcm9tIHRlc3RpbmcgdGhlIE1LX01FU1NBR0UgYml0CiAgKiBvbiBhbiBTQ0IgdGhhdCBtaWdodCBub3QgYmUgZm9yIHRoZSBjdXJyZW50IG5leHVzLiAoRm9yIGV4YW1wbGUsIGEKLSAqIEJEUiBtZXNzYWdlIGluIHJlc3BvbmNlIHRvIGEgYmFkIHJlc2VsZWN0aW9uIHdvdWxkIGxlYXZlIHVzIHBvaW50ZWQgdG8KKyAqIEJEUiBtZXNzYWdlIGluIHJlc3BvbnNlIHRvIGEgYmFkIHJlc2VsZWN0aW9uIHdvdWxkIGxlYXZlIHVzIHBvaW50ZWQgdG8KICAqIGFuIFNDQiB0aGF0IGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCkuCiAgKiBPdGhlcndpc2UsIHRyZWF0IE1TR19PVVQgYXMgYSAxIGJ5dGUgbWVzc2FnZSB0byBzZW5kIChhYm9ydCwgYWJvcnQgdGFnLAogICogYnVzIGRldmljZSByZXNldCkuCkBAIC03MTYsOCArNzE2LDggQEAKIAl9IGVsc2UgewogCQlhbmQJU0lOREVYLDB4NyxTQ0JfVENMOwkvKiBsdW4gKi8KIAl9Ci0JYW5kCUEsRElTQ0VOQixTQ0JfQ09OVFJPTDsJLyogbWFzayBvZmYgZGlzY29ubmVjdCBwcml2bGVkZ2UgKi8KLQlvcglTSU5ERVgsQTsJCS8qIG9yIGluIGRpc2Nvbm5lY3QgcHJpdmxlZGdlICovCisJYW5kCUEsRElTQ0VOQixTQ0JfQ09OVFJPTDsJLyogbWFzayBvZmYgZGlzY29ubmVjdCBwcml2aWxlZ2UgKi8KKwlvcglTSU5ERVgsQTsJCS8qIG9yIGluIGRpc2Nvbm5lY3QgcHJpdmlsZWdlICovCiAJb3IJU0lOREVYLE1TR19JREVOVElGWUZMQUc7CiBwX21lc2dvdXRfbWtfbWVzc2FnZToKIAl0ZXN0CVNDQl9DT05UUk9MLE1LX01FU1NBR0UgIGp6IHBfbWVzZ291dF90YWc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljOTR4eC9haWM5NHh4X3JlZ19kZWYuaCBiL2RyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfcmVnX2RlZi5oCmluZGV4IDQwMjczYTcuLmRkNmNjODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfcmVnX2RlZi5oCisrKyBiL2RyaXZlcnMvc2NzaS9haWM5NHh4L2FpYzk0eHhfcmVnX2RlZi5oCkBAIC0yMTM0LDcgKzIxMzQsNyBAQAogKiBUaGUgaG9zdCBhY2Nlc3NlcyB0aGlzIHNjcmF0Y2ggaW4gYSBkaWZmZXJlbnQgbWFubmVyIGZyb20gdGhlCiAqIGxpbmsgc2VxdWVuY2VyLiBUaGUgc2VxdWVuY2VyIGhhcyB0byB1c2UgTFNFUSByZWdpc3RlcnMKICogTG1TQ1JQQUdFIGFuZCBMbU1uU0NSUEFHRSB0byBhY2Nlc3MgdGhlIHNjcmF0Y2ggbWVtb3J5LiBBIGZsYXQKLSogbWFwcGluZyBvZiB0aGUgc2NyYXRjaCBtZW1vcnkgaXMgYXZhbGlhYmxlIGZvciBzb2Z0d2FyZQorKiBtYXBwaW5nIG9mIHRoZSBzY3JhdGNoIG1lbW9yeSBpcyBhdmFpbGFibGUgZm9yIHNvZnR3YXJlCiAqIGNvbnZlbmllbmNlIGFuZCB0byBwcmV2ZW50IGNvcnJ1cHRpb24gd2hpbGUgdGhlIHNlcXVlbmNlciBpcwogKiBydW5uaW5nLiBUaGlzIG1lbW9yeSBpcyBtYXBwZWQgb250byBhZGRyZXNzZXMgODAwaCAtIDlGRmguCiAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXJtL2Fjb3Juc2NzaS5jIGIvZHJpdmVycy9zY3NpL2FybS9hY29ybnNjc2kuYwppbmRleCBlYzE2NjcyLi5jNDU0ZTQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL2Fjb3Juc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9hcm0vYWNvcm5zY3NpLmMKQEAgLTEwMCw3ICsxMDAsNyBAQAogICovCiAjZGVmaW5lIFRJTUVPVVRfVElNRSAxMAogLyoKLSAqIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIGhhdmUgdmVyYm9zZSBleHBsYWluYXRpb24gb2YgU0NTSQorICogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gaGF2ZSB2ZXJib3NlIGV4cGxhbmF0aW9uIG9mIFNDU0kKICAqIHN0YXR1cy9tZXNzYWdlcy4KICAqLwogI3VuZGVmIENPTkZJR19BQ09STlNDU0lfQ09OU1RBTlRTCkBAIC0xNTYxLDcgKzE1NjEsNyBAQAogCS8qCiAJICogSWYgd2Ugd2VyZSBuZWdvY2lhdGluZyBzeW5jIHRyYW5zZmVyLCB3ZSBkb24ndCB5ZXQga25vdyBpZgogCSAqIHRoaXMgUkVKRUNUIGlzIGZvciB0aGUgc3luYyB0cmFuc2ZlciBvciBmb3IgdGhlIHRhZ2dlZCBxdWV1ZS93aWRlCi0JICogdHJhbnNmZXIuICBSZS1pbml0aWF0ZSBzeW5jIHRyYW5zZmVyIG5lZ29jaWF0aW9uIG5vdywgYW5kIGlmCisJICogdHJhbnNmZXIuICBSZS1pbml0aWF0ZSBzeW5jIHRyYW5zZmVyIG5lZ290aWF0aW9uIG5vdywgYW5kIGlmCiAJICogd2UgZ290IGEgUkVKRUNUIGluIHJlc3BvbnNlIHRvIFNEVFIsIHRoZW4gaXQnbGwgYmUgc2V0IHRvIERPTkUuCiAJICovCiAJaWYgKGhvc3QtPmRldmljZVtob3N0LT5TQ3BudC0+ZGV2aWNlLT5pZF0uc3luY19zdGF0ZSA9PSBTWU5DX1NFTlRfUkVRVUVTVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcm0vYWNvcm5zY3NpLmggYi9kcml2ZXJzL3Njc2kvYXJtL2Fjb3Juc2NzaS5oCmluZGV4IDhkMjE3MmEuLjAxYmM3MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hcm0vYWNvcm5zY3NpLmgKKysrIGIvZHJpdmVycy9zY3NpL2FybS9hY29ybnNjc2kuaApAQCAtMjIzLDggKzIyMyw4IEBACiAgKiBTeW5jaHJvbm91cyB0cmFuc2ZlciBzdGF0ZQogICovCiB0eXBlZGVmIGVudW0gewkJCQkJLyogU3luY2hyb25vdXMgdHJhbnNmZXIgc3RhdGUJCSovCi0gICAgU1lOQ19BU1lOQ0hST05PVVMsCQkJCS8qIGRvbid0IG5lZ29jaWF0ZSBzeW5jaHJvbm91cyB0cmFuc2ZlcnMqLwotICAgIFNZTkNfTkVHT0NJQVRFLAkJCQkvKiBzdGFydCBuZWdvY2lhdGlvbgkJCSovCisgICAgU1lOQ19BU1lOQ0hST05PVVMsCQkJCS8qIGRvbid0IG5lZ290aWF0ZSBzeW5jaHJvbm91cyB0cmFuc2ZlcnMqLworICAgIFNZTkNfTkVHT0NJQVRFLAkJCQkvKiBzdGFydCBuZWdvdGlhdGlvbgkJCSovCiAgICAgU1lOQ19TRU5UX1JFUVVFU1QsCQkJCS8qIHNlbnQgU0RUUiBtZXNzYWdlCQkJKi8KICAgICBTWU5DX0NPTVBMRVRFRCwJCQkJLyogcmVjZWl2ZWQgU0RUUiByZXBseQkJCSovCiB9IHN5bmN4ZmVyX3Q7CkBAIC0zMjIsNyArMzIyLDcgQEAKICAgICAvKiBwZXItZGV2aWNlIGluZm8gKi8KICAgICBzdHJ1Y3QgewogCXVuc2lnbmVkIGNoYXIJc3luY194ZmVyOwkJLyogc3luY2hyb25vdXMgdHJhbnNmZXIgKFNCSUMgdmFsdWUpCSovCi0Jc3luY3hmZXJfdAlzeW5jX3N0YXRlOwkJLyogc3luYyB4ZmVyIG5lZ29jaWF0aW9uIHN0YXRlCQkqLworCXN5bmN4ZmVyX3QJc3luY19zdGF0ZTsJCS8qIHN5bmMgeGZlciBuZWdvdGlhdGlvbiBzdGF0ZQkJKi8KIAl1bnNpZ25lZCBjaGFyCWRpc2Nvbm5lY3Rfb2s6MTsJLyogZGV2aWNlIGNhbiBkaXNjb25uZWN0CQkqLwogICAgIH0gZGV2aWNlWzhdOwogICAgIHVuc2lnbmVkIGxvbmcJYnVzeWx1bnNbNjQgLyBzaXplb2YodW5zaWduZWQgbG9uZyldOy8qIGFycmF5IG9mIGJpdHMgaW5kaWNhdGluZyBMVU5zIGJ1c3kJKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcm0vYXJ4ZXNjc2kuYyBiL2RyaXZlcnMvc2NzaS9hcm0vYXJ4ZXNjc2kuYwppbmRleCAyODM2ZmUyLi5hNzUwYWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL2FyeGVzY3NpLmMKKysrIGIvZHJpdmVycy9zY3NpL2FybS9hcnhlc2NzaS5jCkBAIC0yMjgsNyArMjI4LDcgQEAKICAqIFBhcmFtcyAgOiBidWZmZXIgLSBhIGJ1ZmZlciB0byB3cml0ZSBpbmZvcm1hdGlvbiB0bwogICoJICAgICBzdGFydCAgLSBhIHBvaW50ZXIgaW50byB0aGlzIGJ1ZmZlciBzZXQgYnkgdGhpcyByb3V0aW5lIHRvIHRoZSBzdGFydAogICoJCSAgICAgIG9mIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi4KLSAqCSAgICAgb2Zmc2V0IC0gb2Zmc2V0IGludG8gaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIHJlYWQgdXB0by4KKyAqCSAgICAgb2Zmc2V0IC0gb2Zmc2V0IGludG8gaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIHJlYWQgdXAgdG8uCiAgKgkgICAgIGxlbmd0aCAtIGxlbmd0aCBvZiBidWZmZXIKICAqCSAgICAgaG9zdF9ubyAtIGhvc3QgbnVtYmVyIHRvIHJldHVybiBpbmZvcm1hdGlvbiBmb3IKICAqCSAgICAgaW5vdXQgIC0gMCBmb3IgcmVhZGluZywgMSBmb3Igd3JpdGluZy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcm0vY3VtYW5hXzIuYyBiL2RyaXZlcnMvc2NzaS9hcm0vY3VtYW5hXzIuYwppbmRleCBjOTkwMmI1Li41NDc5ODdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL2N1bWFuYV8yLmMKKysrIGIvZHJpdmVycy9zY3NpL2FybS9jdW1hbmFfMi5jCkBAIC0zNDQsNyArMzQ0LDcgQEAKICAqIFBhcmFtcyAgIDogYnVmZmVyIC0gYSBidWZmZXIgdG8gd3JpdGUgaW5mb3JtYXRpb24gdG8KICAqCSAgICAgIHN0YXJ0ICAtIGEgcG9pbnRlciBpbnRvIHRoaXMgYnVmZmVyIHNldCBieSB0aGlzIHJvdXRpbmUgdG8gdGhlIHN0YXJ0CiAgKgkJICAgICAgIG9mIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi4KLSAqCSAgICAgIG9mZnNldCAtIG9mZnNldCBpbnRvIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSByZWFkIHVwdG8uCisgKgkgICAgICBvZmZzZXQgLSBvZmZzZXQgaW50byBpbmZvcm1hdGlvbiB0aGF0IHdlIGhhdmUgcmVhZCB1cCB0by4KICAqCSAgICAgIGxlbmd0aCAtIGxlbmd0aCBvZiBidWZmZXIKICAqCSAgICAgIGhvc3Rfbm8gLSBob3N0IG51bWJlciB0byByZXR1cm4gaW5mb3JtYXRpb24gZm9yCiAgKgkgICAgICBpbm91dCAgLSAwIGZvciByZWFkaW5nLCAxIGZvciB3cml0aW5nLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FybS9lZXNveC5jIGIvZHJpdmVycy9zY3NpL2FybS9lZXNveC5jCmluZGV4IGQ4NDM1MTMuLmVkZmQxMmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hcm0vZWVzb3guYworKysgYi9kcml2ZXJzL3Njc2kvYXJtL2Vlc294LmMKQEAgLTQyOSw3ICs0MjksNyBAQAogICogUGFyYW1zICAgOiBidWZmZXIgLSBhIGJ1ZmZlciB0byB3cml0ZSBpbmZvcm1hdGlvbiB0bwogICoJICAgICAgc3RhcnQgIC0gYSBwb2ludGVyIGludG8gdGhpcyBidWZmZXIgc2V0IGJ5IHRoaXMgcm91dGluZSB0byB0aGUgc3RhcnQKICAqCQkgICAgICAgb2YgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uLgotICoJICAgICAgb2Zmc2V0IC0gb2Zmc2V0IGludG8gaW5mb3JtYXRpb24gdGhhdCB3ZSBoYXZlIHJlYWQgdXB0by4KKyAqCSAgICAgIG9mZnNldCAtIG9mZnNldCBpbnRvIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSByZWFkIHVwIHRvLgogICoJICAgICAgbGVuZ3RoIC0gbGVuZ3RoIG9mIGJ1ZmZlcgogICoJICAgICAgaG9zdF9ubyAtIGhvc3QgbnVtYmVyIHRvIHJldHVybiBpbmZvcm1hdGlvbiBmb3IKICAqCSAgICAgIGlub3V0ICAtIDAgZm9yIHJlYWRpbmcsIDEgZm9yIHdyaXRpbmcuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYXJtL2ZhczIxNi5jIGIvZHJpdmVycy9zY3NpL2FybS9mYXMyMTYuYwppbmRleCAyYjJjZTIxLi5lODVjNDBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL2ZhczIxNi5jCisrKyBiL2RyaXZlcnMvc2NzaS9hcm0vZmFzMjE2LmMKQEAgLTIxMTksNyArMjExOSw3IEBACiAJICogZXhlY3V0ZWQsIHVubGVzcyBhIHRhcmdldCBjb25uZWN0cyB0byB1cy4KIAkgKi8KIAlpZiAoaW5mby0+cmVxU0NwbnQpCi0JCXByaW50ayhLRVJOX1dBUk5JTkcgInNjc2klZC4lYzogbG9vc2luZyByZXF1ZXN0IGNvbW1hbmRcbiIsCisJCXByaW50ayhLRVJOX1dBUk5JTkcgInNjc2klZC4lYzogbG9zaW5nIHJlcXVlc3QgY29tbWFuZFxuIiwKIAkJCWluZm8tPmhvc3QtPmhvc3Rfbm8sICcwJyArIFNDcG50LT5kZXZpY2UtPmlkKTsKIAlpbmZvLT5yZXFTQ3BudCA9IFNDcG50OwogfQpAQCAtMjI5NCw3ICsyMjk0LDcgQEAKIAkJICogSWYgd2UgZG9uJ3QgaGF2ZSBhbiBJUlEsIHRoZW4gd2UgbXVzdCBwb2xsIHRoZSBjYXJkIGZvcgogCQkgKiBpdCdzIGludGVycnVwdCwgYW5kIHVzZSB0aGF0IHRvIGNhbGwgdGhpcyBkcml2ZXIncwogCQkgKiBpbnRlcnJ1cHQgcm91dGluZS4gIFRoYXQgd2F5LCB3ZSBrZWVwIHRoZSBjb21tYW5kCi0JCSAqIHByb2dyZXNzaW5nLiAgTWF5YmUgd2UgY2FuIGFkZCBzb21lIGludGVsaWdlbmNlIGhlcmUKKwkJICogcHJvZ3Jlc3NpbmcuICBNYXliZSB3ZSBjYW4gYWRkIHNvbWUgaW50ZWxsaWdlbmNlIGhlcmUKIAkJICogYW5kIGdvIHRvIHNsZWVwIGlmIHdlIGtub3cgdGhhdCB0aGUgZGV2aWNlIGlzIGdvaW5nCiAJCSAqIHRvIGJlIHNvbWUgdGltZSAoZWcsIGRpc2Nvbm5lY3RlZCkuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FybS9mYXMyMTYuaCBiL2RyaXZlcnMvc2NzaS9hcm0vZmFzMjE2LmgKaW5kZXggZjMwZjhkNi4uODRiNzEyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FybS9mYXMyMTYuaAorKysgYi9kcml2ZXJzL3Njc2kvYXJtL2ZhczIxNi5oCkBAIC0yMDMsMTEgKzIwMywxMSBAQAogfSBmYXNkbWF0eXBlX3Q7CiAKIHR5cGVkZWYgZW51bSB7Ci0JbmVnX3dhaXQsCQkJCQkvKiBOZWdvY2lhdGUgd2l0aCBkZXZpY2UJCSovCi0JbmVnX2lucHJvZ3Jlc3MsCQkJCQkvKiBOZWdvY2lhdGlvbiBzZW50CQkJKi8KLQluZWdfY29tcGxldGUsCQkJCQkvKiBOZWdvY2lhdGlvbiBjb21wbGV0ZQkJCSovCi0JbmVnX3Rhcmdjb21wbGV0ZSwJCQkJLyogVGFyZ2V0IGNvbXBsZXRlZCBuZWdvY2lhdGlvbgkJKi8KLQluZWdfaW52YWxpZAkJCQkJLyogTmVnb2NpYXRpb24gbm90IHN1cHBvcnRlZAkJKi8KKwluZWdfd2FpdCwJCQkJCS8qIE5lZ290aWF0ZSB3aXRoIGRldmljZQkJKi8KKwluZWdfaW5wcm9ncmVzcywJCQkJCS8qIE5lZ290aWF0aW9uIHNlbnQJCQkqLworCW5lZ19jb21wbGV0ZSwJCQkJCS8qIE5lZ290aWF0aW9uIGNvbXBsZXRlCQkJKi8KKwluZWdfdGFyZ2NvbXBsZXRlLAkJCQkvKiBUYXJnZXQgY29tcGxldGVkIG5lZ290aWF0aW9uCQkqLworCW5lZ19pbnZhbGlkCQkJCQkvKiBOZWdvdGlhdGlvbiBub3Qgc3VwcG9ydGVkCQkqLwogfSBuZWdfdDsKIAogI2RlZmluZSBNQUdJQwkweDQ0MTI5NmJkVUwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hcm0vcG93ZXJ0ZWMuYyBiL2RyaXZlcnMvc2NzaS9hcm0vcG93ZXJ0ZWMuYwppbmRleCBlMjI5N2I0Li45Mjc0YzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYXJtL3Bvd2VydGVjLmMKKysrIGIvZHJpdmVycy9zY3NpL2FybS9wb3dlcnRlYy5jCkBAIC0yMzIsNyArMjMyLDcgQEAKICAqIFBhcmFtcyAgIDogYnVmZmVyICAtIGEgYnVmZmVyIHRvIHdyaXRlIGluZm9ybWF0aW9uIHRvCiAgKgkgICAgICBzdGFydCAgIC0gYSBwb2ludGVyIGludG8gdGhpcyBidWZmZXIgc2V0IGJ5IHRoaXMgcm91dGluZSB0byB0aGUgc3RhcnQKICAqCQkgICAgICAgIG9mIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi4KLSAqCSAgICAgIG9mZnNldCAgLSBvZmZzZXQgaW50byBpbmZvcm1hdGlvbiB0aGF0IHdlIGhhdmUgcmVhZCB1cHRvLgorICoJICAgICAgb2Zmc2V0ICAtIG9mZnNldCBpbnRvIGluZm9ybWF0aW9uIHRoYXQgd2UgaGF2ZSByZWFkIHVwIHRvLgogICoJICAgICAgbGVuZ3RoICAtIGxlbmd0aCBvZiBidWZmZXIKICAqCSAgICAgIGlub3V0ICAgLSAwIGZvciByZWFkaW5nLCAxIGZvciB3cml0aW5nLgogICogUmV0dXJucyAgOiBsZW5ndGggb2YgZGF0YSB3cml0dGVuIHRvIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hdGFyaV9OQ1I1MzgwLmMgYi9kcml2ZXJzL3Njc2kvYXRhcmlfTkNSNTM4MC5jCmluZGV4IDg4YjI5MjguLmVhNDM5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hdGFyaV9OQ1I1MzgwLmMKKysrIGIvZHJpdmVycy9zY3NpL2F0YXJpX05DUjUzODAuYwpAQCAtNDY0LDcgKzQ2NCw3IEBACiAgKgogICogUGFyYW1ldGVyczogU2NzaV9DbW5kICpjbWQKICAqICAgIFRoZSBjb21tYW5kIHRvIHdvcmsgb24uIFRoZSBmaXJzdCBzY2F0dGVyIGJ1ZmZlcidzIGRhdGEgYXJlCi0gKiAgICBhc3N1bWVkIHRvIGJlIGFscmVhZHkgdHJhbnNmZXJlZCBpbnRvIHB0ci90aGlzX3Jlc2lkdWFsLgorICogICAgYXNzdW1lZCB0byBiZSBhbHJlYWR5IHRyYW5zZmVycmVkIGludG8gcHRyL3RoaXNfcmVzaWR1YWwuCiAgKi8KIAogc3RhdGljIHZvaWQgbWVyZ2VfY29udGlndW91c19idWZmZXJzKFNjc2lfQ21uZCAqY21kKQpAQCAtMTcyMCw3ICsxNzIwLDcgQEAKICAqCWJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIGFyZSB0cmFuc2ZlcmVkIG9yIGV4aXQKKyAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBhcmUgdHJhbnNmZXJyZWQgb3IgZXhpdAogICoJaXMgaW4gc2FtZSBwaGFzZS4KICAqCiAgKglBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpAQCAtMTkxMSw3ICsxOTExLDcgQEAKICAqCWJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIG9yIHRyYW5zZmVyZWQgb3IgZXhpdAorICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIG9yIHRyYW5zZmVycmVkIG9yIGV4aXQKICAqCWlzIGluIHNhbWUgcGhhc2UuCiAgKgogICoJQWxzbywgKnBoYXNlLCAqY291bnQsICpkYXRhIGFyZSBtb2RpZmllZCBpbiBwbGFjZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hdHA4NzB1LmMgYi9kcml2ZXJzL3Njc2kvYXRwODcwdS5jCmluZGV4IDc2MDI5ZDUuLjdlNmVjYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hdHA4NzB1LmMKKysrIGIvZHJpdmVycy9zY3NpL2F0cDg3MHUuYwpAQCAtMTIyOCw3ICsxMjI4LDcgQEAKIAlwcmludGsoIiBcbiV4ICV4ICV4ICVzXG4gIixhc3NpZ25pZF9tYXAsbWJ1ZlswXSxtYnVmWzFdLCZtYnVmWzJdKTsgKi8KIAlpID0gMTU7CiAJaiA9IG1idWZbMF07Ci0JaWYgKChqICYgMHgyMCkgIT0gMCkgewkvKiBiaXQ1PTE6SUQgdXB0byA3ICAgICAgKi8KKwlpZiAoKGogJiAweDIwKSAhPSAwKSB7CS8qIGJpdDU9MTpJRCB1cCB0byA3ICAgICAgKi8KIAkJaSA9IDc7CiAJfQogCWlmICgoaiAmIDB4MDYpID09IDApIHsJLyogSUR2YWxpZD8gICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZTJpc2NzaS9iZV9jbWRzLmggYi9kcml2ZXJzL3Njc2kvYmUyaXNjc2kvYmVfY21kcy5oCmluZGV4IDUyMThkZTQuLmZiZDFkYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZTJpc2NzaS9iZV9jbWRzLmgKKysrIGIvZHJpdmVycy9zY3NpL2JlMmlzY3NpL2JlX2NtZHMuaApAQCAtODc3LDcgKzg3Nyw3IEBACiAJCQkJCQkgKi8KICNkZWZpbmUgQ1hOX0tJTExFRF9QRFVfU0laRV9FWENFRURTX0RTTCAzCS8qIENvbm5lY3Rpb24gZ290IGludmFsaWRhdGVkCiAJCQkJCQkgKiBpbnRlcm5hbGx5Ci0JCQkJCQkgKiBkdWUgdG8gYSByZWNpZXZlZCBQRFUKKwkJCQkJCSAqIGR1ZSB0byBhIHJlY2VpdmVkIFBEVQogCQkJCQkJICogc2l6ZSA+IERTTAogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfQlVSU1RfTEVOX01JU01BVENIICAgNAkvKiBDb25uZWN0aW9uIGdvdCBpbnZhbGlkYXRlZApAQCAtODg2LDcgKzg4Niw3IEBACiAJCQkJCQkgKiBGQkwvTUJMLgogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfQUhTX1JDVkQJCTUJLyogQ29ubmVjdGlvbiBnb3QgaW52YWxpZGF0ZWQKLQkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIGEgcmVjaWV2ZWQKKwkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIGEgcmVjZWl2ZWQKIAkJCQkJCSAqIFBEVSBIZHIgdGhhdCBoYXMKIAkJCQkJCSAqIEFIUyAqLwogI2RlZmluZSBDWE5fS0lMTEVEX0hEUl9ESUdFU1RfRVJSCTYJLyogQ29ubmVjdGlvbiBnb3QgaW52YWxpZGF0ZWQKQEAgLTg5OSwxMiArODk5LDEyIEBACiAJCQkJCQkgKiBwZHUgaGRyCiAJCQkJCQkgKi8KICNkZWZpbmUgQ1hOX0tJTExFRF9TVEFMRV9JVFRfVFRUX1JDVkQJOAkvKiBDb25uZWN0aW9uIGdvdCBpbnZhbGlkYXRlZAotCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYSByZWNpZXZlZAorCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYSByZWNlaXZlZAogCQkJCQkJICogSVRUL1RUVCB0aGF0IGRvZXMgbm90IGJlbG9uZwogCQkJCQkJICogdG8gdGhpcyBDb25uZWN0aW9uCiAJCQkJCQkgKi8KICNkZWZpbmUgQ1hOX0tJTExFRF9JTlZBTElEX0lUVF9UVFRfUkNWRCA5CS8qIENvbm5lY3Rpb24gZ290IGludmFsaWRhdGVkCi0JCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byByZWNpZXZlZAorCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gcmVjZWl2ZWQKIAkJCQkJCSAqIElUVC9UVFQgdmFsdWUgPiBNYXgKIAkJCQkJCSAqIFN1cHBvcnRlZCBJVFRzL1RUVHMKIAkJCQkJCSAqLwpAQCAtOTM2LDIxICs5MzYsMjEgQEAKIAkJCQkJCSAqIGluZGV4LgogCQkJCQkJICovCiAjZGVmaW5lIENYTl9LSUxMRURfT1ZFUl9SVU5fUkVTSURVQUwJMTYJLyogQ29tbWFuZCBnb3QgaW52YWxpZGF0ZWQKLQkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIHJlY2l2ZWQKKwkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIHJlY2VpdmVkCiAJCQkJCQkgKiBjb21tYW5kIGhhcyByZXNpZHVhbAogCQkJCQkJICogb3ZlciBydW4gYnl0ZXMuCiAJCQkJCQkgKi8KICNkZWZpbmUgQ1hOX0tJTExFRF9VTkRFUl9SVU5fUkVTSURVQUwJMTcJLyogQ29tbWFuZCBnb3QgaW52YWxpZGF0ZWQKLQkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIHJlY2l2ZWQKKwkJCQkJCSAqIGludGVybmFsbHkgZHVlIHRvIHJlY2VpdmVkCiAJCQkJCQkgKiBjb21tYW5kIGhhcyByZXNpZHVhbCB1bmRlcgogCQkJCQkJICogcnVuIGJ5dGVzLgogCQkJCQkJICovCiAjZGVmaW5lIENNRF9LSUxMRURfSU5WQUxJRF9TVEFUU05fUkNWRAkxOAkvKiBDb21tYW5kIGdvdCBpbnZhbGlkYXRlZAotCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYSByZWNpZXZlZAorCQkJCQkJICogaW50ZXJuYWxseSBkdWUgdG8gYSByZWNlaXZlZAogCQkJCQkJICogUERVIGhhcyBhbiBpbnZhbGlkIFN0YXR1c1NOCiAJCQkJCQkgKi8KICNkZWZpbmUgQ01EX0tJTExFRF9JTlZBTElEX1IyVF9SQ1ZECTE5CS8qIENvbW1hbmQgZ290IGludmFsaWRhdGVkCi0JCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byBhIHJlY2lldmVkCisJCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byBhIHJlY2VpdmVkCiAJCQkJCQkgKiBhbiBSMlQgd2l0aCBzb21lIGludmFsaWQKIAkJCQkJCSAqIGZpZWxkcyBpbiBpdAogCQkJCQkJICovCkBAIC05NzMsNyArOTczLDcgQEAKIAkJCQkJCSAqLwogI2RlZmluZSBDTURfQ1hOX0tJTExFRF9JTlZBTElEX0RBVEFTTl9SQ1ZEIDI0CS8qIENvbW1hbmQgZ290IGludmFsaWRhdGVkCiAJCQkJCQkgKiBpbnRlcm5hbGx5IGR1ZSB0byBhCi0JCQkJCQkgKiByZWNpZXZlZCBQRFUgaGFzIGFuIGludmFsaWQKKwkJCQkJCSAqIHJlY2VpdmVkIFBEVSBoYXMgYW4gaW52YWxpZAogCQkJCQkJICogRGF0YVNOCiAJCQkJCQkgKi8KICNkZWZpbmUgQ1hOX0lOVkFMSURBVEVfTk9USUZZCQkyNQkvKiBDb25uZWN0aW9uIGludmFsaWRhdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfY29yZS5jIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfY29yZS5jCmluZGV4IDFjZDVjOGIuLjkxODM4YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2NvcmUuYworKysgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9jb3JlLmMKQEAgLTM1NSw3ICszNTUsNyBAQAogCQkJLyoKIAkJCSAqIEVSUl9QU1MgYml0IG5lZWRzIHRvIGJlIGNsZWFyZWQgYXMgd2VsbCBpbiBjYXNlCiAJCQkgKiBpbnRlcnJ1cHMgYXJlIHNoYXJlZCBzbyBkcml2ZXIncyBpbnRlcnJ1cHQgaGFuZGxlciBpcwotCQkJICogc3RpbGwgY2FsbGVkIGV2ZW50aG91Z2ggaXQgaXMgYWxyZWFkeSBtYXNrZWQgb3V0LgorCQkJICogc3RpbGwgY2FsbGVkIGV2ZW4gdGhvdWdoIGl0IGlzIGFscmVhZHkgbWFza2VkIG91dC4KIAkJCSAqLwogCQkJY3Vycl92YWx1ZSA9IHJlYWRsKAogCQkJCQliZmEtPmlvYy5pb2NfcmVncy5wc3NfZXJyX3N0YXR1c19yZWcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZGVmc19zdmMuaCBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2RlZnNfc3ZjLmgKaW5kZXggNjQ4Yzg0MS4uMjA3ZjU5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZGVmc19zdmMuaAorKysgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9kZWZzX3N2Yy5oCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAl1MzIJaW9oX2RhdGFfb29yX2V2ZW50OwkvKiAgRGF0YSBvdXQgb2YgcmFuZ2UgKi8KIAl1MzIJaW9oX3JvX29vb19ldmVudDsJLyogIFJlbGF0aXZlIG9mZnNldCBvdXQgb2YgcmFuZ2UgKi8KIAl1MzIJaW9oX2NwdV9vd25lZF9ldmVudDsJLyogIElPSCBoaXQgLWlvc3Qgb3duZWQgYnkgZi93ICovCi0JdTMyCWlvaF91bmV4cF9mcmFtZV9ldmVudDsJLyogIHVuZXhwZWN0ZWQgZnJhbWUgcmVjaWV2ZWQKKwl1MzIJaW9oX3VuZXhwX2ZyYW1lX2V2ZW50OwkvKiAgdW5leHBlY3RlZCBmcmFtZSByZWNlaXZlZAogCQkJCQkJICogICBjb3VudCAqLwogCXUzMglpb2hfZXJyX2ludDsJCS8qICBJT0ggZXJyb3IgaW50IGR1cmluZyBkYXRhLXBoYXNlCiAJCQkJCQkgKiAgIGZvciBzY3NpIHdyaXRlCkBAIC01NjYsOCArNTY2LDggQEAKIAl1MzIJaW5wdXRfcmVxczsJCS8qICBEYXRhIGluLWJvdW5kIHJlcXVlc3RzCSovCiAJdTMyCW91dHB1dF9yZXFzOwkJLyogIERhdGEgb3V0LWJvdW5kIHJlcXVlc3RzCSovCiAJdTMyCWlvX2NvbXBzOwkJLyogIFRvdGFsIElPIENvbXBsZXRpb25zCSovCi0JdTMyCXdyX3Rocm91Z2hwdXQ7CQkvKiAgV3JpdGUgZGF0YSB0cmFuc2ZlcmVkIGluIGJ5dGVzICovCi0JdTMyCXJkX3Rocm91Z2hwdXQ7CQkvKiAgUmVhZCBkYXRhIHRyYW5zZmVyZWQgaW4gYnl0ZXMgICovCisJdTMyCXdyX3Rocm91Z2hwdXQ7CQkvKiAgV3JpdGUgZGF0YSB0cmFuc2ZlcnJlZCBpbiBieXRlcyAqLworCXUzMglyZF90aHJvdWdocHV0OwkJLyogIFJlYWQgZGF0YSB0cmFuc2ZlcnJlZCBpbiBieXRlcyAgKi8KIAogCXUzMglpb2NvbXBfb2s7CQkvKiAgU2xvd3BhdGggSU8gY29tcGxldGlvbnMJKi8KIAl1MzIJaW9jb21wX3VuZGVycnVuOwkvKiAgSU8gdW5kZXJydW4JCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mYy5oIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmMuaAppbmRleCA4ZTc2NGZhLi5iZjAwNjdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mYy5oCisrKyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2ZjLmgKQEAgLTMxNSw3ICszMTUsNyBAQAogCQkJcXVlcnlfZGJjOjEsCiAJCQloZ19zdXBwOjE7CiAjZW5kaWYKLQlfX2JlMTYJCXJ4c3o7CQkvKiByZWNpZXZlIGRhdGFfZmllbGQgc2l6ZSAqLworCV9fYmUxNgkJcnhzejsJCS8qIHJlY2VpdmUgZGF0YV9maWVsZCBzaXplICovCiAJX19iZTE2CQljb25zZXE7CiAJX19iZTE2CQlyb19iaXRtYXA7CiAJX19iZTMyCQllX2RfdG92OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmMgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3MuYwppbmRleCBmNjc0ZjkzLi45YjQzY2E0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3MuYworKysgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9mY3MuYwpAQCAtMTAzMyw3ICsxMDMzLDcgQEAKIAogCiAvKgotICogTG9va3VwIGZvciBhIHZwb3J0IHdpdGhpbmcgYSBmYWJyaWMgZ2l2ZW4gaXRzIHB3d24KKyAqIExvb2t1cCBmb3IgYSB2cG9ydCB3aXRoaW4gYSBmYWJyaWMgZ2l2ZW4gaXRzIHB3d24KICAqLwogc3RydWN0IGJmYV9mY3NfdnBvcnRfcyAqCiBiZmFfZmNzX2ZhYnJpY192cG9ydF9sb29rdXAoc3RydWN0IGJmYV9mY3NfZmFicmljX3MgKmZhYnJpYywgd3duX3QgcHd3bikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjcy5oIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmgKaW5kZXggMGZkNjMxNi4uNjFjZGNlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmgKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzLmgKQEAgLTcwNSw3ICs3MDUsNyBAQAogCVJQU01fRVZFTlRfQUREUkVTU19DSEFOR0UgPSAxNSwgLyogIFJwb3J0J3MgUElEIGhhcyBjaGFuZ2VkICAgICAqLwogCVJQU01fRVZFTlRfQUREUkVTU19ESVNDID0gMTYsICAgLyogIE5lZWQgdG8gRGlzY292ZXIgcnBvcnQncyBQSUQgKi8KIAlSUFNNX0VWRU5UX1BSTE9fUkNWRCAgID0gMTcsICAgIC8qICBQUkxPIGZyb20gcmVtb3RlIGRldmljZSAgICAgKi8KLQlSUFNNX0VWRU5UX1BMT0dJX1JFVFJZID0gMTgsICAgIC8qICBSZXRyeSBQTE9HSSBjb250aW5vdXNseSAqLworCVJQU01fRVZFTlRfUExPR0lfUkVUUlkgPSAxOCwgICAgLyogIFJldHJ5IFBMT0dJIGNvbnRpbnVvdXNseSAqLwogfTsKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjc19scG9ydC5jIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfZmNzX2xwb3J0LmMKaW5kZXggNDNmYTk4NmIuLjFkNmJlOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjc19scG9ydC5jCisrKyBiL2RyaXZlcnMvc2NzaS9iZmEvYmZhX2Zjc19scG9ydC5jCkBAIC0xMTQ5LDcgKzExNDksNyBAQAogCQl9IGVsc2UgewogCQkJLyoKIAkJCSAqIEZvciBhIGJhc2UgcG9ydCwgd2Ugc2hvdWxkIGZpcnN0IHJlZ2lzdGVyIHRoZSBIQkEKLQkJCSAqIGF0cmlidXRlLiBUaGUgSEJBIGF0dHJpYnV0ZSBhbHNvIGNvbnRhaW5zIHRoZSBiYXNlCisJCQkgKiBhdHRyaWJ1dGUuIFRoZSBIQkEgYXR0cmlidXRlIGFsc28gY29udGFpbnMgdGhlIGJhc2UKIAkJCSAqICBwb3J0IHJlZ2lzdHJhdGlvbi4KIAkJCSAqLwogCQkJYmZhX3NtX3NldF9zdGF0ZShmZG1pLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmMgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9zdmMuYwppbmRleCAxZDM0OTIxLi4xNmQ5YTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYmZhL2JmYV9zdmMuYworKysgYi9kcml2ZXJzL3Njc2kvYmZhL2JmYV9zdmMuYwpAQCAtMTAzNSw3ICsxMDM1LDcgQEAKICAqIEBwYXJhbVtpbl0JcnBvcnQJQkZBIHJwb3J0IHBvaW50ZXIuIENvdWxkIGJlIGxlZnQgTlVMTCBmb3IgV0tBIHJwb3J0cwogICogQHBhcmFtW2luXQl2Zl9pZAl2aXJ0dWFsIEZhYnJpYyBJRAogICogQHBhcmFtW2luXQlscF90YWcJbHBvcnQgdGFnCi0gKiBAcGFyYW1baW5dCWN0cwl1c2UgQ29udGlub3VzIHNlcXVlbmNlCisgKiBAcGFyYW1baW5dCWN0cwl1c2UgQ29udGludW91cyBzZXF1ZW5jZQogICogQHBhcmFtW2luXQljb3MJZmMgQ2xhc3Mgb2YgU2VydmljZQogICogQHBhcmFtW2luXQlyZXFsZW4JcmVxdWVzdCBsZW5ndGgsIGRvZXMgbm90IGluY2x1ZGUgRkNIUyBsZW5ndGgKICAqIEBwYXJhbVtpbl0JZmNocwlmYyBIZWFkZXIgUG9pbnRlci4gVGhlIGhlYWRlciBjb250ZW50IHdpbGwgYmUgY29waWVkCkBAIC01MDIyLDcgKzUwMjIsNyBAQAogfQogCiAvKgotICogUmVnaXN0ZXIgaGFuZGxlciBmb3IgYWxsIHVuc29saWN0ZWQgcmVjaWV2ZSBmcmFtZXMuCisgKiBSZWdpc3RlciBoYW5kbGVyIGZvciBhbGwgdW5zb2xpY3RlZCByZWNlaXZlIGZyYW1lcy4KICAqCiAgKiBAcGFyYW1baW5dCWJmYQkJQkZBIGluc3RhbmNlCiAgKiBAcGFyYW1baW5dCXVmcmVjdglyZWNlaXZlIGhhbmRsZXIgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhX3N2Yy5oIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmgKaW5kZXggMzMxYWQ5OS4uNTkwMmE0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmgKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFfc3ZjLmgKQEAgLTEyNyw3ICsxMjcsNyBAQAogCQkJCQkgKiBycG9ydCBuZXh1cyBpcyBlc3RhYmxpc2hlZAogCQkJCQkgKi8KIAlzdHJ1Y3QgZmNoc19zCWZjaHM7CS8qICByZXF1ZXN0IEZDIGhlYWRlciBzdHJ1Y3R1cmUgKi8KLQl1OAkJY3RzOwkvKiAgY29udGlub3VzIHNlcXVlbmNlICovCisJdTgJCWN0czsJLyogIGNvbnRpbnVvdXMgc2VxdWVuY2UgKi8KIAl1OAkJY2xhc3M7CS8qICBGQyBjbGFzcyBmb3IgdGhlIHJlcXVlc3QvcmVzcG9uc2UgKi8KIAl1MTYJbWF4X2ZybXN6OwkvKiAgbWF4IHNlbmQgZnJhbWUgc2l6ZSAqLwogCXUxNgl2Zl9pZDsJLyogIHZzYW4gdGFnIGlmIGFwcGxpY2FibGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9iZmEvYmZhZC5jIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFkLmMKaW5kZXggNDQ1MjRjZi4uMGZkNTEwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JmYS9iZmFkLmMKKysrIGIvZHJpdmVycy9zY3NpL2JmYS9iZmFkLmMKQEAgLTEyNzgsNyArMTI3OCw3IEBACiAJCQkgKiBpbnRlcnJ1cHRzIGludG8gb25lIHZlY3Rvciwgc28gZXZlbiBpZiB3ZQogCQkJICogY2FuIHRyeSB0byByZXF1ZXN0IGxlc3MgdmVjdG9ycywgd2UgZG9uJ3QKIAkJCSAqIGtub3cgaG93IHRvIGFzc29jaWF0ZSBpbnRlcnJ1cHQgZXZlbnRzIHRvCi0JCQkgKiAgdmVjdG9ycy4gTGludXggZG9lc24ndCBkdXBpY2F0ZSB2ZWN0b3JzCisJCQkgKiAgdmVjdG9ycy4gTGludXggZG9lc24ndCBkdXBsaWNhdGUgdmVjdG9ycwogCQkJICogaW4gdGhlIE1TSVggdGFibGUgZm9yIHRoaXMgY2FzZS4KIAkJCSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYm54MmZjLzU3eHhfaHNpX2JueDJmYy5oIGIvZHJpdmVycy9zY3NpL2JueDJmYy81N3h4X2hzaV9ibngyZmMuaAppbmRleCA2OWQwMzFkLi45N2E2MWI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYm54MmZjLzU3eHhfaHNpX2JueDJmYy5oCisrKyBiL2RyaXZlcnMvc2NzaS9ibngyZmMvNTd4eF9oc2lfYm54MmZjLmgKQEAgLTg5OCw3ICs4OTgsNyBAQAogCiAKIC8qCi0gKiBGQ29FIGNvbmVjdGlvbiBkYXRhIGJhc2UKKyAqIEZDb0UgY29ubmVjdGlvbiBkYXRhIGJhc2UKICAqLwogc3RydWN0IGZjb2VfY29ubl9kYiB7CiAjaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19lbHMuYyBiL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX2Vscy5jCmluZGV4IDdhMTFhMjUuLjUyYzM1ODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX2Vscy5jCisrKyBiL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX2Vscy5jCkBAIC0zOTcsNyArMzk3LDcgQEAKIAkJCSAgICAgJmVsc19yZXEtPnJlcV9mbGFncykpIHsKIAkJQk5YMkZDX0VMU19EQkcoIlRpbWVyIGNvbnRleHQgZmluaXNoZWQgcHJvY2Vzc2luZyB0aGlzICIKIAkJCSAgICJlbHMgLSAweCV4XG4iLCBlbHNfcmVxLT54aWQpOwotCQkvKiBUaGlzIElPIGRvZXNudCByZWNlaXZlIGNsZWFudXAgY29tcGxldGlvbiAqLworCQkvKiBUaGlzIElPIGRvZXNuJ3QgcmVjZWl2ZSBjbGVhbnVwIGNvbXBsZXRpb24gKi8KIAkJa3JlZl9wdXQoJmVsc19yZXEtPnJlZmNvdW50LCBibngyZmNfY21kX3JlbGVhc2UpOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfaW8uYyBiL2RyaXZlcnMvc2NzaS9ibngyZmMvYm54MmZjX2lvLmMKaW5kZXggZDNmYzMwMi4uMWRlY2VmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfaW8uYworKysgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19pby5jCkBAIC0xMjczLDcgKzEyNzMsNyBAQAogCQkJCQkJIGJueDJmY19jbWRfcmVsZWFzZSk7CiAJCQkJCQkJLyogdGltZXIgaG9sZCAqLwogCQkJCXJjID0gYm54MmZjX2luaXRpYXRlX2FidHMoY21kKTsKLQkJCQkvKiBhYnRzIHNob3VsZG50IGZhaWwgaW4gdGhpcyBjb250ZXh0ICovCisJCQkJLyogYWJ0cyBzaG91bGRuJ3QgZmFpbCBpbiB0aGlzIGNvbnRleHQgKi8KIAkJCQlXQVJOX09OKHJjICE9IFNVQ0NFU1MpOwogCQkJfSBlbHNlCiAJCQkJcHJpbnRrKEtFUk5fRVJSIFBGWCAibHVuX3JzdDogYWJ0cyBhbHJlYWR5IGluIgpAQCAtMTMwOCw3ICsxMzA4LDcgQEAKIAkJCQlrcmVmX3B1dCgmaW9fcmVxLT5yZWZjb3VudCwKIAkJCQkJIGJueDJmY19jbWRfcmVsZWFzZSk7IC8qIHRpbWVyIGhvbGQgKi8KIAkJCXJjID0gYm54MmZjX2luaXRpYXRlX2FidHMoY21kKTsKLQkJCS8qIGFidHMgc2hvdWxkbnQgZmFpbCBpbiB0aGlzIGNvbnRleHQgKi8KKwkJCS8qIGFidHMgc2hvdWxkbid0IGZhaWwgaW4gdGhpcyBjb250ZXh0ICovCiAJCQlXQVJOX09OKHJjICE9IFNVQ0NFU1MpOwogCiAJCX0gZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfdGd0LmMgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY190Z3QuYwppbmRleCA3Y2MwNWU0Li5hMmUzODMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY190Z3QuYworKysgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY190Z3QuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiAJCXJwID0gcnBvcnQtPmRkX2RhdGE7CiAJCWlmIChycG9ydC0+cG9ydF9pZCA9PSBGQ19GSURfRElSX1NFUlYpIHsKIAkJCS8qCi0JCQkgKiBibngyZmNfcnBvcnQgc3RydWN0dXJlIGRvZXNudCBleGlzdCBmb3IKKwkJCSAqIGJueDJmY19ycG9ydCBzdHJ1Y3R1cmUgZG9lc24ndCBleGlzdCBmb3IKIAkJCSAqIGRpcmVjdG9yeSBzZXJ2ZXIuCiAJCQkgKiBXZSBzaG91bGQgbm90IGNvbWUgaGVyZSwgYXMgbHBvcnQgd2lsbAogCQkJICogdGFrZSBjYXJlIG9mIGZhYnJpYyBsb2dpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2JueDJpL2JueDJpX2h3aS5jIGIvZHJpdmVycy9zY3NpL2JueDJpL2JueDJpX2h3aS5jCmluZGV4IDFkYTM0YzAuLmYwYjg5NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9ibngyaS9ibngyaV9od2kuYworKysgYi9kcml2ZXJzL3Njc2kvYm54MmkvYm54MmlfaHdpLmMKQEAgLTE3Myw3ICsxNzMsNyBAQAogCiAvKioKICAqIGJueDJpX2dldF9ycV9idWYgLSBjb3B5IFJRIGJ1ZmZlciBjb250ZW50cyB0byBkcml2ZXIgYnVmZmVyCi0gKiBAY29ubjoJCWlzY3NpIGNvbm5lY3Rpb24gb24gd2hpY2ggUlEgZXZlbnQgb2NjdXJlZAorICogQGNvbm46CQlpc2NzaSBjb25uZWN0aW9uIG9uIHdoaWNoIFJRIGV2ZW50IG9jY3VycmVkCiAgKiBAcHRyOgkJZHJpdmVyIGJ1ZmZlciB0byB3aGljaCBSUSBidWZmZXIgY29udGVudHMgaXMgdG8KICAqCQkJYmUgY29waWVkCiAgKiBAbGVuOgkJbGVuZ3RoIG9mIHZhbGlkIGRhdGEgaW5zaWRlIFJRIGJ1ZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2N4Z2JpL2xpYmN4Z2JpLmggYi9kcml2ZXJzL3Njc2kvY3hnYmkvbGliY3hnYmkuaAppbmRleCAwYTIwZmQ1Li45MjY3ODQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvY3hnYmkvbGliY3hnYmkuaAorKysgYi9kcml2ZXJzL3Njc2kvY3hnYmkvbGliY3hnYmkuaApAQCAtMjYyLDkgKzI2Miw5IEBACiBlbnVtIGN4Z2JpX3NrY2JfZmxhZ3MgewogCVNLQ0JGX1RYX05FRURfSERSLAkvKiBwYWNrZXQgbmVlZHMgYSBoZWFkZXIgKi8KIAlTS0NCRl9SWF9DT0FMRVNDRUQsCS8qIHJlY2VpdmVkIHdob2xlIHBkdSAqLwotCVNLQ0JGX1JYX0hEUiwJCS8qIHJlY2lldmVkIHBkdSBoZWFkZXIgKi8KLQlTS0NCRl9SWF9EQVRBLAkJLyogcmVjaWV2ZWQgcGR1IHBheWxvYWQgKi8KLQlTS0NCRl9SWF9TVEFUVVMsCS8qIHJlY2lldmVkIGRkcCBzdGF0dXMgKi8KKwlTS0NCRl9SWF9IRFIsCQkvKiByZWNlaXZlZCBwZHUgaGVhZGVyICovCisJU0tDQkZfUlhfREFUQSwJCS8qIHJlY2VpdmVkIHBkdSBwYXlsb2FkICovCisJU0tDQkZfUlhfU1RBVFVTLAkvKiByZWNlaXZlZCBkZHAgc3RhdHVzICovCiAJU0tDQkZfUlhfREFUQV9ERFBELAkvKiBwZHUgcGF5bG9hZCBkZHAnZCAqLwogCVNLQ0JGX1JYX0hDUkNfRVJSLAkvKiBoZWFkZXIgZGlnZXN0IGVycm9yICovCiAJU0tDQkZfUlhfRENSQ19FUlIsCS8qIGRhdGEgZGlnZXN0IGVycm9yICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGMzOTV4LmMgYi9kcml2ZXJzL3Njc2kvZGMzOTV4LmMKaW5kZXggYjBmODUyMy4uYjEwYjM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2RjMzk1eC5jCisrKyBiL2RyaXZlcnMvc2NzaS9kYzM5NXguYwpAQCAtMjM1LDcgKzIzNSw3IEBACiAKIAl1OCBzZ19jb3VudDsJCQkvKiBObyBvZiBIVyBzZyBlbnRyaWVzIGZvciB0aGlzIHJlcXVlc3QgKi8KIAl1OCBzZ19pbmRleDsJCQkvKiBJbmRleCBvZiBIVyBzZyBlbnRyeSBmb3IgdGhpcyByZXF1ZXN0ICovCi0Jc2l6ZV90IHRvdGFsX3hmZXJfbGVuZ3RoOwkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVtYWluaW5nIHRvIGJlIHRyYW5zZmVyZWQgKi8KKwlzaXplX3QgdG90YWxfeGZlcl9sZW5ndGg7CS8qIFRvdGFsIG51bWJlciBvZiBieXRlcyByZW1haW5pbmcgdG8gYmUgdHJhbnNmZXJyZWQgKi8KIAlzaXplX3QgcmVxdWVzdF9sZW5ndGg7CQkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhpcyByZXF1ZXN0ICovCiAJLyoKIAkgKiBUaGUgc2Vuc2UgYnVmZmVyIGhhbmRsaW5nIGZ1bmN0aW9uLCByZXF1ZXN0X3NlbnNlLCB1c2VzCkBAIC0xNzc0LDcgKzE3NzQsNyBAQAogCQlkYzM5NXhfc3RhdGV2KGFjYiwgc3JiLCAmc2NzaV9zdGF0dXMpOwogCiAJCS8qIAotCQkgKiBpZiB0aGVyZSB3ZXJlIGFueSBleGNlcHRpb24gb2NjdXJlZCBzY3NpX3N0YXR1cworCQkgKiBpZiB0aGVyZSB3ZXJlIGFueSBleGNlcHRpb24gb2NjdXJyZWQgc2NzaV9zdGF0dXMKIAkJICogd2lsbCBiZSBtb2RpZnkgdG8gYnVzIGZyZWUgcGhhc2UgbmV3IHNjc2lfc3RhdHVzCiAJCSAqIHRyYW5zZmVyIG91dCBmcm9tIC4uLiBwcmV2aW91cyBkYzM5NXhfc3RhdGV2CiAJCSAqLwpAQCAtMTk1NCwxMSArMTk1NCwxMSBAQAogc3RhdGljIHZvaWQgc2dfdXBkYXRlX2xpc3Qoc3RydWN0IFNjc2lSZXFCbGsgKnNyYiwgdTMyIGxlZnQpCiB7CiAJdTggaWR4OwotCXUzMiB4ZmVycmVkID0gc3JiLT50b3RhbF94ZmVyX2xlbmd0aCAtIGxlZnQ7IC8qIGJ5dGVzIHRyYW5zZmVyZWQgKi8KKwl1MzIgeGZlcnJlZCA9IHNyYi0+dG90YWxfeGZlcl9sZW5ndGggLSBsZWZ0OyAvKiBieXRlcyB0cmFuc2ZlcnJlZCAqLwogCXN0cnVjdCBTR2VudHJ5ICpwc2dlID0gc3JiLT5zZWdtZW50X3ggKyBzcmItPnNnX2luZGV4OwogCiAJZHByaW50a2RiZyhEQkdfMCwKLQkJInNnX3VwZGF0ZV9saXN0OiBUcmFuc2ZlcmVkICVpIG9mICVpIGJ5dGVzLCAlaSByZW1haW5cbiIsCisJCSJzZ191cGRhdGVfbGlzdDogVHJhbnNmZXJyZWQgJWkgb2YgJWkgYnl0ZXMsICVpIHJlbWFpblxuIiwKIAkJeGZlcnJlZCwgc3JiLT50b3RhbF94ZmVyX2xlbmd0aCwgbGVmdCk7CiAJaWYgKHhmZXJyZWQgPT0gMCkgewogCQkvKiBub3RoaW5nIHRvIHVwZGF0ZSBzaW5jZSB3ZSBkaWQgbm90IHRyYW5zZmVyIGFueSBkYXRhICovCkBAIC0xOTkwLDcgKzE5OTAsNyBAQAogCiAKIC8qCi0gKiBXZSBoYXZlIHRyYW5zZmVyZWQgYSBzaW5nbGUgYnl0ZSAoUElPIG1vZGU/KSBhbmQgbmVlZCB0byB1cGRhdGUKKyAqIFdlIGhhdmUgdHJhbnNmZXJyZWQgYSBzaW5nbGUgYnl0ZSAoUElPIG1vZGU/KSBhbmQgbmVlZCB0byB1cGRhdGUKICAqIHRoZSBjb3VudCBvZiBieXRlcyByZW1haW5pbmcgKHRvdGFsX3hmZXJfbGVuZ3RoKSBhbmQgdXBkYXRlIHRoZSBzZwogICogZW50cnkgdG8gZWl0aGVyIHBvaW50IHRvIG5leHQgYnl0ZSBpbiB0aGUgY3VycmVudCBzZyBlbnRyeSwgb3Igb2YKICAqIGFscmVhZHkgYXQgdGhlIGVuZCB0byBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc2cgZW50cnkKQEAgLTIwMjksNyArMjAyOSw3IEBACiAKIAogLyoKLSAqIFRob3NlIG5vIG9mIGJ5dGVzIHdpbGwgYmUgdHJhbnNmZXJlZCB3LyBQSU8gdGhyb3VnaCB0aGUgU0NTSSBGSUZPCisgKiBUaG9zZSBubyBvZiBieXRlcyB3aWxsIGJlIHRyYW5zZmVycmVkIHcvIFBJTyB0aHJvdWdoIHRoZSBTQ1NJIEZJRk8KICAqIFNlZW1zIHRvIGJlIG5lZWRlZCBmb3IgdW5rbm93biByZWFzb25zOyBjb3VsZCBiZSBhIGhhcmR3YXJlIGJ1ZyA6LSgKICAqLwogI2RlZmluZSBEQzM5NXhfTEFTVFBJTyA0CkBAIC0yMjU2LDcgKzIyNTYsNyBAQAogCQkJREMzOTV4X3JlYWQzMihhY2IsIFRSTV9TMTA0MF9ETUFfQ1hDTlQpLAogCQkJc3JiLT50b3RhbF94ZmVyX2xlbmd0aCwgZF9sZWZ0X2NvdW50ZXIpOwogI2lmIERDMzk1eF9MQVNUUElPCi0JCS8qIEtHOiBMZXNzIHRoYW4gb3IgZXF1YWwgdG8gNCBieXRlcyBjYW4gbm90IGJlIHRyYW5zZmVyZWQgdmlhIERNQSwgaXQgc2VlbXMuICovCisJCS8qIEtHOiBMZXNzIHRoYW4gb3IgZXF1YWwgdG8gNCBieXRlcyBjYW4gbm90IGJlIHRyYW5zZmVycmVkIHZpYSBETUEsIGl0IHNlZW1zLiAqLwogCQlpZiAoZF9sZWZ0X2NvdW50ZXIKIAkJICAgICYmIHNyYi0+dG90YWxfeGZlcl9sZW5ndGggPD0gREMzOTV4X0xBU1RQSU8pIHsKIAkJCXNpemVfdCBsZWZ0X2lvID0gc3JiLT50b3RhbF94ZmVyX2xlbmd0aDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9kYzM5NXguaCBiL2RyaXZlcnMvc2NzaS9kYzM5NXguaAppbmRleCBiMzgzNjBlLi5mYmYzNWUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZGMzOTV4LmgKKysrIGIvZHJpdmVycy9zY3NpL2RjMzk1eC5oCkBAIC02MTcsNyArNjE3LDcgQEAKICNkZWZpbmUgTlRDX0RPX1NFTkRfU1RBUlQJCTB4MDgJLyogU2VuZCBzdGFydCBjb21tYW5kIFNQSU5VUAkJKi8KICNkZWZpbmUgTlRDX0RPX0RJU0NPTk5FQ1QJCTB4MDQJLyogRW5hYmxlIFNDU0kgZGlzY29ubmVjdAkJKi8KICNkZWZpbmUgTlRDX0RPX1NZTkNfTkVHTwkJMHgwMgkvKiBTeW5jIG5lZ290aWF0aW9uCQkJKi8KLSNkZWZpbmUgTlRDX0RPX1BBUklUWV9DSEsJCTB4MDEJLyogKGl0IHNvdWxkIGRlZmluZSBhdCBOQUMpCQkqLworI2RlZmluZSBOVENfRE9fUEFSSVRZX0NISwkJMHgwMQkvKiAoaXQgc2hvdWxkIGRlZmluZSBhdCBOQUMpCQkqLwogCQkJCQkJLyogUGFyaXR5IGNoZWNrIGVuYWJsZQkJCSovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9hbHVhLmMgYi9kcml2ZXJzL3Njc2kvZGV2aWNlX2hhbmRsZXIvc2NzaV9kaF9hbHVhLmMKaW5kZXggN2NhZTBiYy4uNDJmZTUyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2RldmljZV9oYW5kbGVyL3Njc2lfZGhfYWx1YS5jCisrKyBiL2RyaXZlcnMvc2NzaS9kZXZpY2VfaGFuZGxlci9zY3NpX2RoX2FsdWEuYwpAQCAtNTQxLDcgKzU0MSw3IEBACiAgKgogICogRXZhbHVhdGUgdGhlIFRhcmdldCBQb3J0IEdyb3VwIFN0YXRlLgogICogUmV0dXJucyBTQ1NJX0RIX0RFVl9PRkZMSU5FRCBpZiB0aGUgcGF0aCBpcwotICogZm91bmQgdG8gYmUgdW51c2VhYmxlLgorICogZm91bmQgdG8gYmUgdW51c2FibGUuCiAgKi8KIHN0YXRpYyBpbnQgYWx1YV9ydHBnKHN0cnVjdCBzY3NpX2RldmljZSAqc2Rldiwgc3RydWN0IGFsdWFfZGhfZGF0YSAqaCkKIHsKQEAgLTYyMCw3ICs2MjAsNyBAQAogCQlicmVhazsKIAljYXNlIFRQR1NfU1RBVEVfT0ZGTElORToKIAljYXNlIFRQR1NfU1RBVEVfVU5BVkFJTEFCTEU6Ci0JCS8qIFBhdGggdW51c2VhYmxlIGZvciB1bmF2YWlsYWJsZS9vZmZsaW5lICovCisJCS8qIFBhdGggdW51c2FibGUgZm9yIHVuYXZhaWxhYmxlL29mZmxpbmUgKi8KIAkJZXJyID0gU0NTSV9ESF9ERVZfT0ZGTElORUQ7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZHB0L3N5c19pbmZvLmggYi9kcml2ZXJzL3Njc2kvZHB0L3N5c19pbmZvLmgKaW5kZXggYTkwYzRjYi4uYTRhYTFjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2RwdC9zeXNfaW5mby5oCisrKyBiL2RyaXZlcnMvc2NzaS9kcHQvc3lzX2luZm8uaApAQCAtNzksOSArNzksOSBAQAogICAgdHlwZWRlZiBzdHJ1Y3QgIHsKICNlbmRpZgogCi0gICB1U0hPUlQgICAgICAgY3lsaW5kZXJzOyAgICAgIC8qIFVwdG8gMTAyNCAqLwotICAgdUNIQVIgICAgICAgIGhlYWRzOyAgICAgICAgICAvKiBVcHRvIDI1NSAqLwotICAgdUNIQVIgICAgICAgIHNlY3RvcnM7ICAgICAgICAvKiBVcHRvIDYzICovCisgICB1U0hPUlQgICAgICAgY3lsaW5kZXJzOyAgICAgIC8qIFVwIHRvIDEwMjQgKi8KKyAgIHVDSEFSICAgICAgICBoZWFkczsgICAgICAgICAgLyogVXAgdG8gMjU1ICovCisgICB1Q0hBUiAgICAgICAgc2VjdG9yczsgICAgICAgIC8qIFVwIHRvIDYzICovCiAKICNpZmRlZiAgX19jcGx1c3BsdXMKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2VhdGEuYyBiL2RyaXZlcnMvc2NzaS9lYXRhLmMKaW5kZXggNTM5MjVhYy4uMGViNGZlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2VhdGEuYworKysgYi9kcml2ZXJzL3Njc2kvZWF0YS5jCkBAIC02Myw3ICs2Myw3IEBACiAgKiAgICAgICAgICBlcDpbeXxuXSAgICAgIGVpc2FfcHJvYmU9WzF8MF0gIENPTkZJR19FSVNBIGRlZmluZWQKICAqICAgICAgICAgIHBwOlt5fG5dICAgICAgcGNpX3Byb2JlPVsxfDBdICAgQ09ORklHX1BDSSAgZGVmaW5lZAogICoKLSAqICAgICAgICAgIFRoZSBkZWZhdWx0IGFjdGlvbiBpcyB0byBwZXJmb3JtIHByb2JpbmcgaWYgdGhlIGNvcnJpc3BvbmRpbmcKKyAqICAgICAgICAgIFRoZSBkZWZhdWx0IGFjdGlvbiBpcyB0byBwZXJmb3JtIHByb2JpbmcgaWYgdGhlIGNvcnJlc3BvbmRpbmcKICAqICAgICAgICAgIGJ1cyBpcyBjb25maWd1cmVkIGFuZCB0byBza2lwIHByb2Jpbmcgb3RoZXJ3aXNlLgogICoKICAqICAgICAgICArIElmIHBjaV9wcm9iZSBpcyBpbiBlZmZlY3QgYW5kIGEgbGlzdCBvZiBJL08gIHBvcnRzIGlzIHNwZWNpZmllZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMgYi9kcml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYwppbmRleCBjOTNmMDA3Li45ZDM4YmUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYworKysgYi9kcml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYwpAQCAtNjU2LDcgKzY1Niw3IEBACiAJCSAqIElmIG5vbi1GSVAsIHdlIG1heSBoYXZlIGdvdHRlbiBhbiBTSUQgYnkgYWNjZXB0aW5nIGFuIEZMT0dJCiAJCSAqIGZyb20gYSBwb2ludC10by1wb2ludCBjb25uZWN0aW9uLiAgU3dpdGNoIHRvIHVzaW5nCiAJCSAqIHRoZSBzb3VyY2UgbWFjIGJhc2VkIG9uIHRoZSBTSUQuICBUaGUgZGVzdGluYXRpb24KLQkJICogTUFDIGluIHRoaXMgY2FzZSB3b3VsZCBoYXZlIGJlZW4gc2V0IGJ5IHJlY2V2aW5nIHRoZQorCQkgKiBNQUMgaW4gdGhpcyBjYXNlIHdvdWxkIGhhdmUgYmVlbiBzZXQgYnkgcmVjZWl2aW5nIHRoZQogCQkgKiBGTE9HSS4KIAkJICovCiAJCWlmIChmaXAtPnN0YXRlID09IEZJUF9TVF9OT05fRklQKSB7CkBAIC0xODc2LDcgKzE4NzYsNyBAQAogICogZmNvZV9jdGxyX3ZuX3Jwb3J0X2NhbGxiYWNrIC0gRXZlbnQgaGFuZGxlciBmb3IgcnBvcnQgZXZlbnRzLgogICogQGxwb3J0OiBUaGUgbHBvcnQgd2hpY2ggaXMgcmVjZWl2aW5nIHRoZSBldmVudAogICogQHJkYXRhOiByZW1vdGUgcG9ydCBwcml2YXRlIGRhdGEKLSAqIEBldmVudDogVGhlIGV2ZW50IHRoYXQgb2NjdXJlZAorICogQGV2ZW50OiBUaGUgZXZlbnQgdGhhdCBvY2N1cnJlZAogICoKICAqIExvY2tpbmcgTm90ZTogIFRoZSBycG9ydCBsb2NrIG11c3Qgbm90IGJlIGhlbGQgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9mZG9tYWluLmMgYi9kcml2ZXJzL3Njc2kvZmRvbWFpbi5jCmluZGV4IDY5YjdhYTUuLjY0M2Y2ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9mZG9tYWluLmMKKysrIGIvZHJpdmVycy9zY3NpL2Zkb21haW4uYwpAQCAtMTc0LDcgKzE3NCw3IEBACiAgRnV0dXJlIERvbWFpbiBzb2xkIERPUyBCSU9TIHNvdXJjZSBmb3IgJDI1MCBhbmQgdGhlIFVOKlggZHJpdmVyIHNvdXJjZSB3YXMKICAkNzUwLCBidXQgdGhlc2UgcmVxdWlyZWQgYSBub24tZGlzY2xvc3VyZSBhZ3JlZW1lbnQsIHNvIGV2ZW4gaWYgSSBjb3VsZAogIGhhdmUgYWZmb3JkZWQgdGhlbSwgdGhleSB3b3VsZCAqbm90KiBoYXZlIGJlZW4gdXNlZnVsIGZvciB3cml0aW5nIHRoaXMKLSBwdWJsaWNhbGx5IGRpc3RyaWJ1dGFibGUgZHJpdmVyLiAgRnV0dXJlIERvbWFpbiB0ZWNobmljYWwgc3VwcG9ydCBoYXMKKyBwdWJsaWNseSBkaXN0cmlidXRhYmxlIGRyaXZlci4gIEZ1dHVyZSBEb21haW4gdGVjaG5pY2FsIHN1cHBvcnQgaGFzCiAgcHJvdmlkZWQgc29tZSBpbmZvcm1hdGlvbiBvbiB0aGUgcGhvbmUgYW5kIGhhdmUgc2VudCBhIGZldyB1c2VmdWwgRkFYcy4KICBUaGV5IGhhdmUgYmVlbiBtdWNoIG1vcmUgaGVscGZ1bCBzaW5jZSB0aGV5IHN0YXJ0ZWQgdG8gcmVjb2duaXplIHRoYXQgdGhlCiAgd29yZCAiTGludXgiIHJlZmVycyB0byBhbiBvcGVyYXRpbmcgc3lzdGVtIDotKS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfZmNzLmMgYi9kcml2ZXJzL3Njc2kvZm5pYy9mbmljX2Zjcy5jCmluZGV4IDJiNDhkNzkuLjNjNTNjMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfZmNzLmMKKysrIGIvZHJpdmVycy9zY3NpL2ZuaWMvZm5pY19mY3MuYwpAQCAtNDExLDcgKzQxMSw3IEBACiAJCQllcnIgPSB2bmljX3JxX2ZpbGwoJmZuaWMtPnJxW2ldLCBmbmljX2FsbG9jX3JxX2ZyYW1lKTsKIAkJCWlmIChlcnIpCiAJCQkJc2hvc3RfcHJpbnRrKEtFUk5fRVJSLCBmbmljLT5scG9ydC0+aG9zdCwKLQkJCQkJICAgICAiZm5pY19hbGxvY19ycV9mcmFtZSBjYW50IGFsbG9jIgorCQkJCQkgICAgICJmbmljX2FsbG9jX3JxX2ZyYW1lIGNhbid0IGFsbG9jIgogCQkJCQkgICAgICIgZnJhbWVcbiIpOwogCQl9CiAJCXRvdF9ycV93b3JrX2RvbmUgKz0gY3VyX3dvcmtfZG9uZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9mbmljL2ZuaWNfc2NzaS5jIGIvZHJpdmVycy9zY3NpL2ZuaWMvZm5pY19zY3NpLmMKaW5kZXggMjJkMDI0MC4uNTM4YjMxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2ZuaWMvZm5pY19zY3NpLmMKKysrIGIvZHJpdmVycy9zY3NpL2ZuaWMvZm5pY19zY3NpLmMKQEAgLTExMjMsNyArMTEyMyw3IEBACiAJCQkJCSAgICBmY19sdW4uc2NzaV9sdW4sIGlvX3JlcSkpIHsKIAkJCS8qCiAJCQkgKiBSZXZlcnQgdGhlIGNtZCBzdGF0ZSBiYWNrIHRvIG9sZCBzdGF0ZSwgaWYKLQkJCSAqIGl0IGhhc250IGNoYW5nZWQgaW4gYmV0d2Vlbi4gVGhpcyBjbWQgd2lsbCBnZXQKKwkJCSAqIGl0IGhhc24ndCBjaGFuZ2VkIGluIGJldHdlZW4uIFRoaXMgY21kIHdpbGwgZ2V0CiAJCQkgKiBhYm9ydGVkIGxhdGVyIGJ5IHNjc2lfZWgsIG9yIGNsZWFuZWQgdXAgZHVyaW5nCiAJCQkgKiBsdW4gcmVzZXQKIAkJCSAqLwpAQCAtMTIwOCw3ICsxMjA4LDcgQEAKIAkJCQkJICAgIGZjX2x1bi5zY3NpX2x1biwgaW9fcmVxKSkgewogCQkJLyoKIAkJCSAqIFJldmVydCB0aGUgY21kIHN0YXRlIGJhY2sgdG8gb2xkIHN0YXRlLCBpZgotCQkJICogaXQgaGFzbnQgY2hhbmdlZCBpbiBiZXR3ZWVuLiBUaGlzIGNtZCB3aWxsIGdldAorCQkJICogaXQgaGFzbid0IGNoYW5nZWQgaW4gYmV0d2Vlbi4gVGhpcyBjbWQgd2lsbCBnZXQKIAkJCSAqIGFib3J0ZWQgbGF0ZXIgYnkgc2NzaV9laCwgb3IgY2xlYW5lZCB1cCBkdXJpbmcKIAkJCSAqIGx1biByZXNldAogCQkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ19OQ1I1MzgwLmMgYi9kcml2ZXJzL3Njc2kvZ19OQ1I1MzgwLmMKaW5kZXggNDI3YTU2ZC4uODExODJiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2dfTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9nX05DUjUzODAuYwpAQCAtNTY2LDcgKzU2Niw3IEBACiAgKglAZHN0OiBidWZmZXIgdG8gcmVhZCBpbnRvCiAgKglAbGVuOiBidWZmZXIgbGVuZ3RoCiAgKgotICoJUGVyZm9ybSBhIHBzdWVkbyBETUEgbW9kZSByZWFkIGZyb20gYW4gTkNSNTNDNDAwIG9yIGVxdWl2YWxlbnQKKyAqCVBlcmZvcm0gYSBwc2V1ZG8gRE1BIG1vZGUgcmVhZCBmcm9tIGFuIE5DUjUzQzQwMCBvciBlcXVpdmFsZW50CiAgKgljb250cm9sbGVyCiAgKi8KICAKQEAgLTY1MCw3ICs2NTAsNyBAQAogICoJQGRzdDogYnVmZmVyIHRvIHJlYWQgaW50bwogICoJQGxlbjogYnVmZmVyIGxlbmd0aAogICoKLSAqCVBlcmZvcm0gYSBwc3VlZG8gRE1BIG1vZGUgcmVhZCBmcm9tIGFuIE5DUjUzQzQwMCBvciBlcXVpdmFsZW50CisgKglQZXJmb3JtIGEgcHNldWRvIERNQSBtb2RlIHJlYWQgZnJvbSBhbiBOQ1I1M0M0MDAgb3IgZXF1aXZhbGVudAogICoJY29udHJvbGxlcgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9nZHRoLmggYi9kcml2ZXJzL3Njc2kvZ2R0aC5oCmluZGV4IDEyMGEwNjIuLmQ5Njk4NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9nZHRoLmgKKysrIGIvZHJpdmVycy9zY3NpL2dkdGguaApAQCAtODk1LDcgKzg5NSw3IEBACiAgICAgICAgIHU4ICAgICAgICAgIGxkcl9ubzsgICAgICAgICAgICAgICAgIC8qIGxvZy4gZHJpdmUgbm8uICovCiAgICAgICAgIHU4ICAgICAgICAgIHJ3X2F0dHJpYnM7ICAgICAgICAgICAgIC8qIHIvdyBhdHRyaWJ1dGVzICovCiAgICAgICAgIHU4ICAgICAgICAgIGNsdXN0ZXJfdHlwZTsgICAgICAgICAgIC8qIGNsdXN0ZXIgcHJvcGVydGllcyAqLwotICAgICAgICB1OCAgICAgICAgICBtZWRpYV9jaGFuZ2VkOyAgICAgICAgICAvKiBGbGFnOk1PVU5UL1VOTU9VTlQgb2NjdXJlZCAqLworICAgICAgICB1OCAgICAgICAgICBtZWRpYV9jaGFuZ2VkOyAgICAgICAgICAvKiBGbGFnOk1PVU5UL1VOTU9VTlQgb2NjdXJyZWQgKi8KICAgICAgICAgdTMyICAgICAgICAgc3RhcnRfc2VjOyAgICAgICAgICAgICAgLyogc3RhcnQgc2VjdG9yICovCiAgICAgfSBoZHJbTUFYX0xEUklWRVNdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBob3N0IGRyaXZlcyAqLwogICAgIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuYyBiL2RyaXZlcnMvc2NzaS9ndnAxMS5jCmluZGV4IDJjZTI2ZWIuLjUwYmI1NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jCisrKyBiL2RyaXZlcnMvc2NzaS9ndnAxMS5jCkBAIC0zMDAsNyArMzAwLDcgQEAKIAkvKgogCSAqIFJ1bW9ycyBzdGF0ZSB0aGF0IHNvbWUgR1ZQIHJhbSBib2FyZHMgdXNlIHRoZSBzYW1lIHByb2R1Y3QKIAkgKiBjb2RlIGFzIHRoZSBTQ1NJIGNvbnRyb2xsZXJzLiBUaGVyZWZvcmUgaWYgdGhlIGJvYXJkLXNpemUKLQkgKiBpcyBub3QgNjRLQiB3ZSBhc3VtZSBpdCBpcyBhIHJhbSBib2FyZCBhbmQgYmFpbCBvdXQuCisJICogaXMgbm90IDY0S0Igd2UgYXNzdW1lIGl0IGlzIGEgcmFtIGJvYXJkIGFuZCBiYWlsIG91dC4KIAkgKi8KIAlpZiAoem9ycm9fcmVzb3VyY2VfbGVuKHopICE9IDB4MTAwMDApCiAJCXJldHVybiAtRU5PREVWOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2ltbS5jIGIvZHJpdmVycy9zY3NpL2ltbS5jCmluZGV4IDk5YWEwZTUuLjI2Y2Q5ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pbW0uYworKysgYi9kcml2ZXJzL3Njc2kvaW1tLmMKQEAgLTMsNyArMyw3IEBACiAgKiAKICAqIChUaGUgSU1NIGlzIHRoZSBlbWJlZGRlZCBjb250cm9sbGVyIGluIHRoZSBaSVAgUGx1cyBkcml2ZS4pCiAgKiAKLSAqIE15IHVub2ZmaWNhbCBjb21wYW55IGFjcm9ueW0gbGlzdCBpcyAyMSBwYWdlcyBsb25nOgorICogTXkgdW5vZmZpY2lhbCBjb21wYW55IGFjcm9ueW0gbGlzdCBpcyAyMSBwYWdlcyBsb25nOgogICogICAgICBGTEE6ICAgIEZvdXIgbGV0dGVyIGFjcm9ueW0gd2l0aCBidWlsdCBpbiBmYWNpbGl0eSBmb3IKICAqICAgICAgICAgICAgICBmdXR1cmUgZXhwYW5zaW9uIHRvIGZpdmUgbGV0dGVycy4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2luaXRpby5jIGIvZHJpdmVycy9zY3NpL2luaXRpby5jCmluZGV4IDk2MjdkMDYuLmRkNzQxYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pbml0aW8uYworKysgYi9kcml2ZXJzL3Njc2kvaW5pdGlvLmMKQEAgLTI0Miw3ICsyNDIsNyBAQAogCiBzdGF0aWMgdTggaW5pdGlvX3JhdGVfdGJsWzhdID0JLyogZmFzdCAyMCAgICAgICovCiB7Ci0JCQkJLyogbmFub3NlY29uZCBkZXZpZGUgYnkgNCAqLworCQkJCS8qIG5hbm9zZWNvbmQgZGl2aWRlIGJ5IDQgKi8KIAkxMiwJCQkvKiA1MG5zLCAgMjBNICAgKi8KIAkxOCwJCQkvKiA3NW5zLCAgMTMuM00gKi8KIAkyNSwJCQkvKiAxMDBucywgMTBNICAgKi8KQEAgLTE5MTcsNyArMTkxNyw3IEBACiB9CiAKIC8qKgotICoJaW50X2luaXRpb19zY3NpX3Jlc2VsCS0JUmVzZWxlY3Rpb24gb2NjdXJlZAorICoJaW50X2luaXRpb19zY3NpX3Jlc2VsCS0JUmVzZWxlY3Rpb24gb2NjdXJyZWQKICAqCUBob3N0OiBJbml0SU8gaG9zdCBhZGFwdGVyCiAgKgogICoJQSBTQ1NJIHJlc2VsZWN0aW9uIGV2ZW50IGhhcyBiZWVuIHNpZ25hbGxlZCBhbmQgdGhlIGludGVycnVwdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2luaXRpby5oIGIvZHJpdmVycy9zY3NpL2luaXRpby5oCmluZGV4IGU1OGFmOWUuLjIxOWI5MDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pbml0aW8uaAorKysgYi9kcml2ZXJzL3Njc2kvaW5pdGlvLmgKQEAgLTExNiw3ICsxMTYsNyBAQAogI2RlZmluZSBUVUxfU0J1c0lkICAgICAgMHg4OQkvKiAwOSBSICAgU0NTSSBCVVMgSUQgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgVFVMX1NUaW1lT3V0ICAgIDB4OEEJLyogMEEgVyAgIFNlbC9SZXNlbCBUaW1lIE91dCBSZWdpc3RlciAgICovCiAjZGVmaW5lIFRVTF9TSWRlbnQgICAgICAweDhBCS8qIDBBIFIgICBJZGVudGlmeSBNZXNzYWdlIFJlZ2lzdGVyICAgICAqLwotI2RlZmluZSBUVUxfU0F2YWlsICAgICAgMHg4QQkvKiAwQSBSICAgQXZhaWxpYWJsZSBDb3VudGVyIFJlZ2lzdGVyICAgKi8KKyNkZWZpbmUgVFVMX1NBdmFpbCAgICAgIDB4OEEJLyogMEEgUiAgIEF2YWlsYWJsZSBDb3VudGVyIFJlZ2lzdGVyICAgKi8KICNkZWZpbmUgVFVMX1NEYXRhICAgICAgIDB4OEIJLyogMEIgUi9XIFNDU0kgZGF0YSBpbi9vdXQgICAgICAgICAgICAgICovCiAjZGVmaW5lIFRVTF9TRmlmbyAgICAgICAweDhDCS8qIDBDIFIvVyBGSUZPICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBUVUxfU1NpZ25hbCAgICAgMHg5MAkvKiAxMCBSL1cgU0NTSSBzaWduYWwgaW4vb3V0ICAgICAgICAgICAgKi8KQEAgLTM4OSw3ICszODksNyBAQAogLyogQml0IERlZmluaXRpb24gZm9yIHN0YXR1cyAqLwogI2RlZmluZSBTQ0JfUkVOVCAgICAgICAgMHgwMQogI2RlZmluZSBTQ0JfUEVORCAgICAgICAgMHgwMgotI2RlZmluZSBTQ0JfQ09OVElHICAgICAgMHgwNAkvKiBDb250aWdlbnQgQWxsZWdpYW5jZSAqLworI2RlZmluZSBTQ0JfQ09OVElHICAgICAgMHgwNAkvKiBDb250aW5nZW50IEFsbGVnaWFuY2UgKi8KICNkZWZpbmUgU0NCX1NFTEVDVCAgICAgIDB4MDgKICNkZWZpbmUgU0NCX0JVU1kgICAgICAgIDB4MTAKICNkZWZpbmUgU0NCX0RPTkUgICAgICAgIDB4MjAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pcHMuYyBiL2RyaXZlcnMvc2NzaS9pcHMuYwppbmRleCBiMjUxMWFjLi4yMThmNzFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaXBzLmMKKysrIGIvZHJpdmVycy9zY3NpL2lwcy5jCkBAIC0xMzcsNyArMTM3LDcgQEAKIC8qICAgICAgICAgIC0gRml4IHBhdGgvbmFtZSBmb3Igc2NzaV9ob3N0cy5oIGluY2x1ZGUgZm9yIDIuNiBrZXJuZWxzICAgICAgICAgKi8KIC8qICAgICAgICAgIC0gRml4IHNvcnQgb3JkZXIgb2YgN2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgIC0gUmVtb3ZlIDMgdW51c2VkICJpbmxpbmUiIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIDcuMTIueHggIC0gVXNlIFNUQVRJQyBmdW5jdGlvbnMgd2hlcmVldmVyIHBvc3NpYmxlICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDcuMTIueHggIC0gVXNlIFNUQVRJQyBmdW5jdGlvbnMgd2hlcmV2ZXIgcG9zc2libGUgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgLSBDbGVhbiB1cCBkZXByZWNhdGVkIE1PRFVMRV9QQVJNIGNhbGxzICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogNy4xMi4wNSAgLSBSZW1vdmUgVmVyc2lvbiBNYXRjaGluZyBwZXIgSUJNIHJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTY2NSw3ICsxNjY1LDcgQEAKIAlpbnQgZGF0YXNpemU7CiAKIAkvKiBUcm9tYm9uZSBpcyB0aGUgb25seSBjb3BwZXJoZWFkIHRoYXQgY2FuIGRvIHBhY2tldCBmbGFzaCwgYnV0IG9ubHkKLQkgKiBmb3IgZmlybXdhcmUuIE5vIG9uZSBzYWlkIGl0IGhhZCB0byBtYWtlIHNlbmNlLiAqLworCSAqIGZvciBmaXJtd2FyZS4gTm8gb25lIHNhaWQgaXQgaGFkIHRvIG1ha2Ugc2Vuc2UuICovCiAJaWYgKElQU19JU19UUk9NQk9ORShoYSkgJiYgcHQtPkNvcHBDUC5jbWQuZmxhc2hmdy50eXBlID09IElQU19GV19JTUFHRSkgewogCQlpZiAoaXBzX3VzcmNtZChoYSwgcHQsIHNjYikpCiAJCQlyZXR1cm4gSVBTX1NVQ0NFU1M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaXBzLmggYi9kcml2ZXJzL3Njc2kvaXBzLmgKaW5kZXggNGU0OWZiYy4uZjJkZjA1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2lwcy5oCisrKyBiL2RyaXZlcnMvc2NzaS9pcHMuaApAQCAtMTE5Myw3ICsxMTkzLDcgQEAKICNkZWZpbmUgSVBTX1ZFUl9TRUJSSU5HICI3LjEyLjAyIgogI2RlZmluZSBJUFNfVkVSX0tFWVdFU1QgIjcuMTIuMDIiCiAKLS8qIENvbXBhdGFiaWxpdHkgSURzIGZvciB2YXJpb3VzIGFkYXB0ZXJzICovCisvKiBDb21wYXRpYmlsaXR5IElEcyBmb3IgdmFyaW91cyBhZGFwdGVycyAqLwogI2RlZmluZSBJUFNfQ09NUEFUX1VOS05PV04gIiIKICNkZWZpbmUgSVBTX0NPTVBBVF9DVVJSRU5UICJLVzcxMCIKICNkZWZpbmUgSVBTX0NPTVBBVF9TRVJWRVJBSUQxICIyLjI1LjAxIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5jIGIvZHJpdmVycy9zY3NpL2lzY3NpX3RjcC5jCmluZGV4IGE4NjA0NTIuLjNkZjk4NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pc2NzaV90Y3AuYworKysgYi9kcml2ZXJzL3Njc2kvaXNjc2lfdGNwLmMKQEAgLTI5NSw3ICsyOTUsNyBAQAogCQlyYyA9IGlzY3NpX3N3X3RjcF94bWl0X3NlZ21lbnQodGNwX2Nvbm4sIHNlZ21lbnQpOwogCQkvKgogCQkgKiBXZSBtYXkgbm90IGhhdmUgYmVlbiBhYmxlIHRvIHNlbmQgZGF0YSBiZWNhdXNlIHRoZSBjb25uCi0JCSAqIGlzIGdldHRpbmcgc3RvcHBlZC4gbGliaXNjc2kgd2lsbCBrbm93IHNvIHByb3BvZ2F0ZSBlcnIKKwkJICogaXMgZ2V0dGluZyBzdG9wcGVkLiBsaWJpc2NzaSB3aWxsIGtub3cgc28gcHJvcGFnYXRlIGVycgogCQkgKiBmb3IgaXQgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nLgogCQkgKi8KIAkJaWYgKHJjID09IC1FQUdBSU4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGliZmMvZmNfZXhjaC5jIGIvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2V4Y2guYwppbmRleCAyODIzMWJhLi43NzAzNWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbGliZmMvZmNfZXhjaC5jCisrKyBiL2RyaXZlcnMvc2NzaS9saWJmYy9mY19leGNoLmMKQEAgLTEwNDIsNyArMTA0Miw3IEBACiB9CiAKIC8qKgotICogZmNfc2VxX2Vsc19yc3Bfc2VuZCgpIC0gU2VuZCBhbiBFTFMgcmVzcG9uc2UgdXNpbmcgaW5mb21hdGlvbiBmcm9tCisgKiBmY19zZXFfZWxzX3JzcF9zZW5kKCkgLSBTZW5kIGFuIEVMUyByZXNwb25zZSB1c2luZyBpbmZvcm1hdGlvbiBmcm9tCiAgKgkJCSAgIHRoZSBleGlzdGluZyBzZXF1ZW5jZS9leGNoYW5nZS4KICAqIEBmcDoJICAgICAgVGhlIHJlY2VpdmVkIGZyYW1lCiAgKiBAZWxzX2NtZDogIFRoZSBFTFMgY29tbWFuZCB0byBiZSBzZW50CkBAIC0xMTUzLDcgKzExNTMsNyBAQAogICogZmNfZXhjaF9zZW5kX2JhX3JqdCgpIC0gU2VuZCBCTFMgUmVqZWN0CiAgKiBAcnhfZnA6ICBUaGUgZnJhbWUgYmVpbmcgcmVqZWN0ZWQKICAqIEByZWFzb246IFRoZSByZWFzb24gdGhlIGZyYW1lIGlzIGJlaW5nIHJlamVjdGVkCi0gKiBAZXhwbGFuOiBUaGUgZXhwbGFpbmF0aW9uIGZvciB0aGUgcmVqZWN0aW9uCisgKiBAZXhwbGFuOiBUaGUgZXhwbGFuYXRpb24gZm9yIHRoZSByZWplY3Rpb24KICAqCiAgKiBUaGlzIGlzIGZvciByZWplY3RpbmcgQkFfQUJUUyBvbmx5LgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbGliZmMvZmNfZmNwLmMgYi9kcml2ZXJzL3Njc2kvbGliZmMvZmNfZmNwLmMKaW5kZXggYjFiMDNhZi4uNWI3OTlhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2ZjcC5jCisrKyBiL2RyaXZlcnMvc2NzaS9saWJmYy9mY19mY3AuYwpAQCAtODcwLDcgKzg3MCw3IEBACiAJCQkJZnNwLT5zY3NpX3Jlc2lkID0gbnRvaGwocnBfZXgtPmZyX3Jlc2lkKTsKIAkJCQkvKgogCQkJCSAqIFRoZSBjbW5kLT51bmRlcmZsb3cgaXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mCi0JCQkJICogYnl0ZXMgdGhhdCBtdXN0IGJlIHRyYW5zZmVyZWQgZm9yIHRoaXMKKwkJCQkgKiBieXRlcyB0aGF0IG11c3QgYmUgdHJhbnNmZXJyZWQgZm9yIHRoaXMKIAkJCQkgKiBjb21tYW5kLiAgUHJvdmlkZWQgYSBzZW5zZSBjb25kaXRpb24gaXMgbm90CiAJCQkJICogcHJlc2VudCwgbWFrZSBzdXJlIHRoZSBhY3R1YWwgYW1vdW50CiAJCQkJICogdHJhbnNmZXJyZWQgaXMgYXQgbGVhc3QgdGhlIHVuZGVyZmxvdyB2YWx1ZQpAQCAtMTMwNiw3ICsxMzA2LDcgQEAKIH0KIAogLyoqCi0gKiBmY190bV9kb25lKCkgLSBUYXNrIE1hbmFnbWVudCByZXNwb25zZSBoYW5kbGVyCisgKiBmY190bV9kb25lKCkgLSBUYXNrIE1hbmFnZW1lbnQgcmVzcG9uc2UgaGFuZGxlcgogICogQHNlcTogVGhlIHNlcXVlbmNlIHRoYXQgdGhlIHJlc3BvbnNlIGlzIG9uCiAgKiBAZnA6CSBUaGUgcmVzcG9uc2UgZnJhbWUKICAqIEBhcmc6IFRoZSBGQ1AgcGFja2V0IHRoZSByZXNwb25zZSBpcyBmb3IKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJmYy9mY19scG9ydC5jIGIvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2xwb3J0LmMKaW5kZXggOGMwOGIyMS4uOTA2YmJjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2xwb3J0LmMKKysrIGIvZHJpdmVycy9zY3NpL2xpYmZjL2ZjX2xwb3J0LmMKQEAgLTUyLDcgKzUyLDcgQEAKICAqIHdoaWxlIG1ha2luZyB0aGUgY2FsbGJhY2suIFRvIGVuc3VyZSB0aGF0IHRoZSBycG9ydCBpcyBub3QgZnJlZSdkIHdoaWxlCiAgKiBwcm9jZXNzaW5nIHRoZSBjYWxsYmFjayB0aGUgcnBvcnQgY2FsbGJhY2tzIGFyZSBzZXJpYWxpemVkIHRocm91Z2ggYQogICogc2luZ2xlLXRocmVhZGVkIHdvcmtxdWV1ZS4gQW4gcnBvcnQgd291bGQgbmV2ZXIgYmUgZnJlZSdkIHdoaWxlIGluIGEKLSAqIGNhbGxiYWNrIGhhbmRsZXIgYmVjdWFzZSBubyBvdGhlciBycG9ydCB3b3JrIGluIHRoaXMgcXVldWUgY2FuIGJlIGV4ZWN1dGVkCisgKiBjYWxsYmFjayBoYW5kbGVyIGJlY2F1c2Ugbm8gb3RoZXIgcnBvcnQgd29yayBpbiB0aGlzIHF1ZXVlIGNhbiBiZSBleGVjdXRlZAogICogYXQgdGhlIHNhbWUgdGltZS4KICAqCiAgKiBXaGVuIGRpc2NvdmVyeSBzdWNjZWVkcyBvciBmYWlscyBhIGNhbGxiYWNrIGlzIG1hZGUgdG8gdGhlIGxwb3J0IGFzCkBAIC0xNjMsNyArMTYzLDcgQEAKICAqIGZjX2xwb3J0X3Jwb3J0X2NhbGxiYWNrKCkgLSBFdmVudCBoYW5kbGVyIGZvciBycG9ydCBldmVudHMKICAqIEBscG9ydDogVGhlIGxwb3J0IHdoaWNoIGlzIHJlY2VpdmluZyB0aGUgZXZlbnQKICAqIEByZGF0YTogcHJpdmF0ZSByZW1vdGUgcG9ydCBkYXRhCi0gKiBAZXZlbnQ6IFRoZSBldmVudCB0aGF0IG9jY3VyZWQKKyAqIEBldmVudDogVGhlIGV2ZW50IHRoYXQgb2NjdXJyZWQKICAqCiAgKiBMb2NraW5nIE5vdGU6IFRoZSBycG9ydCBsb2NrIHNob3VsZCBub3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcKICAqCQkgdGhpcyBmdW5jdGlvbi4KQEAgLTM3OSw3ICszNzksNyBAQAogCiAvKioKICAqIGZjX2xwb3J0X3JlY3Zfcmxpcl9yZXEoKSAtIEhhbmRsZSByZWNlaXZlZCBSZWdpc3RlcmVkIExpbmsgSW5jaWRlbnQgUmVwb3J0LgotICogQGxwb3J0OiBGaWJyZSBDaGFubmVsIGxvY2FsIHBvcnQgcmVjaWV2aW5nIHRoZSBSTElSCisgKiBAbHBvcnQ6IEZpYnJlIENoYW5uZWwgbG9jYWwgcG9ydCByZWNlaXZpbmcgdGhlIFJMSVIKICAqIEBmcDoJICAgVGhlIFJMSVIgcmVxdWVzdCBmcmFtZQogICoKICAqIExvY2tpbmcgTm90ZTogVGhlIGxwb3J0IGxvY2sgaXMgZXhwZWN0ZWQgdG8gYmUgaGVsZCBiZWZvcmUgY2FsbGluZwpAQCAtMzk2LDcgKzM5Niw3IEBACiAKIC8qKgogICogZmNfbHBvcnRfcmVjdl9lY2hvX3JlcSgpIC0gSGFuZGxlIHJlY2VpdmVkIEVDSE8gcmVxdWVzdAotICogQGxwb3J0OiBUaGUgbG9jYWwgcG9ydCByZWNpZXZpbmcgdGhlIEVDSE8KKyAqIEBscG9ydDogVGhlIGxvY2FsIHBvcnQgcmVjZWl2aW5nIHRoZSBFQ0hPCiAgKiBAZnA6CSAgIEVDSE8gcmVxdWVzdCBmcmFtZQogICoKICAqIExvY2tpbmcgTm90ZTogVGhlIGxwb3J0IGxvY2sgaXMgZXhwZWN0ZWQgdG8gYmUgaGVsZCBiZWZvcmUgY2FsbGluZwpAQCAtNDMyLDcgKzQzMiw3IEBACiAKIC8qKgogICogZmNfbHBvcnRfcmVjdl9ybmlkX3JlcSgpIC0gSGFuZGxlIHJlY2VpdmVkIFJlcXVlc3QgTm9kZSBJRCBkYXRhIHJlcXVlc3QKLSAqIEBscG9ydDogVGhlIGxvY2FsIHBvcnQgcmVjaWV2aW5nIHRoZSBSTklECisgKiBAbHBvcnQ6IFRoZSBsb2NhbCBwb3J0IHJlY2VpdmluZyB0aGUgUk5JRAogICogQGZwOgkgICBUaGUgUk5JRCByZXF1ZXN0IGZyYW1lCiAgKgogICogTG9ja2luZyBOb3RlOiBUaGUgbHBvcnQgbG9jayBpcyBleHBlY3RlZCB0byBiZSBoZWxkIGJlZm9yZSBjYWxsaW5nCkBAIC00OTEsNyArNDkxLDcgQEAKIAogLyoqCiAgKiBmY19scG9ydF9yZWN2X2xvZ29fcmVxKCkgLSBIYW5kbGUgcmVjZWl2ZWQgZmFicmljIExPR08gcmVxdWVzdAotICogQGxwb3J0OiBUaGUgbG9jYWwgcG9ydCByZWNpZXZpbmcgdGhlIExPR08KKyAqIEBscG9ydDogVGhlIGxvY2FsIHBvcnQgcmVjZWl2aW5nIHRoZSBMT0dPCiAgKiBAZnA6CSAgIFRoZSBMT0dPIHJlcXVlc3QgZnJhbWUKICAqCiAgKiBMb2NraW5nIE5vdGU6IFRoZSBscG9ydCBsb2NrIGlzIGV4ZWN0ZWQgdG8gYmUgaGVsZCBiZWZvcmUgY2FsbGluZwpAQCAtNzcxLDcgKzc3MSw3IEBACiAKIC8qKgogICogZmNfbHBvcnRfcmVjdl9mbG9naV9yZXEoKSAtIFJlY2VpdmUgYSBGTE9HSSByZXF1ZXN0Ci0gKiBAbHBvcnQ6IFRoZSBsb2NhbCBwb3J0IHRoYXQgcmVjaWV2ZWQgdGhlIHJlcXVlc3QKKyAqIEBscG9ydDogVGhlIGxvY2FsIHBvcnQgdGhhdCByZWNlaXZlZCB0aGUgcmVxdWVzdAogICogQHJ4X2ZwOiBUaGUgRkxPR0kgZnJhbWUKICAqCiAgKiBBIHJlY2VpdmVkIEZMT0dJIHJlcXVlc3QgaW5kaWNhdGVzIGEgcG9pbnQtdG8tcG9pbnQgY29ubmVjdGlvbi4KQEAgLTg1OCw3ICs4NTgsNyBAQAogICogaWYgYW4gcnBvcnQgc2hvdWxkIGhhbmRsZSB0aGUgcmVxdWVzdC4KICAqCiAgKiBMb2NraW5nIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB0aGUgbHBvcnQKLSAqCQkgbG9jayBoZWxkIGJlY3Vhc2UgaXQgd2lsbCBncmFiIHRoZSBsb2NrLgorICoJCSBsb2NrIGhlbGQgYmVjYXVzZSBpdCB3aWxsIGdyYWIgdGhlIGxvY2suCiAgKi8KIHN0YXRpYyB2b2lkIGZjX2xwb3J0X3JlY3ZfZWxzX3JlcShzdHJ1Y3QgZmNfbHBvcnQgKmxwb3J0LAogCQkJCSAgc3RydWN0IGZjX2ZyYW1lICpmcCkKQEAgLTkyNSw3ICs5MjUsNyBAQAogICogQGZwOiBUaGUgZnJhbWUgdGhlIHJlcXVlc3QgaXMgaW4KICAqCiAgKiBMb2NraW5nIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCB0aGUgbHBvcnQKLSAqCQkgbG9jayBoZWxkIGJlY3Vhc2UgaXQgbWF5IGdyYWIgdGhlIGxvY2suCisgKgkJIGxvY2sgaGVsZCBiZWNhdXNlIGl0IG1heSBncmFiIHRoZSBsb2NrLgogICovCiBzdGF0aWMgdm9pZCBmY19scG9ydF9yZWN2X3JlcShzdHJ1Y3QgZmNfbHBvcnQgKmxwb3J0LAogCQkJICAgICAgc3RydWN0IGZjX2ZyYW1lICpmcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V4cGFuZGVyLmMgYi9kcml2ZXJzL3Njc2kvbGlic2FzL3Nhc19leHBhbmRlci5jCmluZGV4IGYzZjY5M2IuLjg3NGUyOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9saWJzYXMvc2FzX2V4cGFuZGVyLmMKKysrIGIvZHJpdmVycy9zY3NpL2xpYnNhcy9zYXNfZXhwYW5kZXIuYwpAQCAtMjQwLDcgKzI0MCw3IEBACiAJCQkJICAgICAgIGRpc2NfcmVzcCwgRElTQ09WRVJfUkVTUF9TSVpFKTsKIAkJaWYgKHJlcykKIAkJCXJldHVybiByZXM7Ci0JCS8qIFRoaXMgaXMgZGV0ZWN0aW5nIGEgZmFpbHVyZSB0byB0cmFuc21pdCBpbml0YWwKKwkJLyogVGhpcyBpcyBkZXRlY3RpbmcgYSBmYWlsdXJlIHRvIHRyYW5zbWl0IGluaXRpYWwKIAkJICogZGV2IHRvIGhvc3QgRklTIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIEcuNSBvZgogCQkgKiBzYXMtMiByIDA0YiAqLwogCQlkciA9ICYoKHN0cnVjdCBzbXBfcmVzcCAqKWRpc2NfcmVzcCktPmRpc2M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2F0dHIuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYXR0ci5jCmluZGV4IDRlMGZhYTAuLjE3ZDc4OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYXR0ci5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYXR0ci5jCkBAIC00NTE1LDcgKzQ1MTUsNyBAQAogICogRGVzY3JpcHRpb246CiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdHJhbnNwb3J0IGFmdGVyIHRoZSBAZmNfdnBvcnQncyBzeW1ib2xpYyBuYW1lCiAgKiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIHJlLXJlZ2lzdGVycyB0aGUgc3ltYm9saWMgbmFtZSB3aXRoIHRoZQotICogc3dpdGNoIHRvIHByb3BvZ2F0ZSB0aGUgY2hhbmdlIGludG8gdGhlIGZhYnJpYyBpZiB0aGUgdnBvcnQgaXMgYWN0aXZlLgorICogc3dpdGNoIHRvIHByb3BhZ2F0ZSB0aGUgY2hhbmdlIGludG8gdGhlIGZhYnJpYyBpZiB0aGUgdnBvcnQgaXMgYWN0aXZlLgogICoqLwogc3RhdGljIHZvaWQKIGxwZmNfc2V0X3Zwb3J0X3N5bWJvbGljX25hbWUoc3RydWN0IGZjX3Zwb3J0ICpmY192cG9ydCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYnNnLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2JzZy5jCmluZGV4IDc5M2I5ZjEuLjc3YjI4NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfYnNnLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ic2cuYwpAQCAtMTkzOSw3ICsxOTM5LDcgQEAKICAqIEByeHhyaTogUmVjZWl2ZSBleGNoYW5nZSBpZAogICogQGxlbjogTnVtYmVyIG9mIGRhdGEgYnl0ZXMKICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBhbmQgcG9zdHMgYSBkYXRhIGJ1ZmZlciBvZiBzdWZmaWNpZW50IHNpemUgdG8gcmVjaWV2ZQorICogVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgYW5kIHBvc3RzIGEgZGF0YSBidWZmZXIgb2Ygc3VmZmljaWVudCBzaXplIHRvIHJlY2VpdmUKICAqIGFuIHVuc29saWN0ZWQgQ1QgY29tbWFuZC4KICAqKi8KIHN0YXRpYyBpbnQgbHBmY2RpYWdfbG9vcF9wb3N0X3J4YnVmcyhzdHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHVpbnQxNl90IHJ4eHJpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19kZWJ1Z2ZzLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2RlYnVnZnMuYwppbmRleCBhNzUzNTgxLi4zZDk2Nzc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2RlYnVnZnMuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2RlYnVnZnMuYwpAQCAtOTA4LDcgKzkwOCw3IEBACiAJaWYgKCFkZWJ1ZykKIAkJZ290byBvdXQ7CiAKLQkvKiBSb3VuZCB0byBwYWdlIGJvdW5kcnkgKi8KKwkvKiBSb3VuZCB0byBwYWdlIGJvdW5kYXJ5ICovCiAJcHJpbnRrKEtFUk5fRVJSICI5MDU5IEJMS0dSRDogICVzOiBfZHVtcF9idWZfZGF0YT0weCVwXG4iLAogCQkJX19mdW5jX18sIF9kdW1wX2J1Zl9kYXRhKTsKIAlkZWJ1Zy0+YnVmZmVyID0gX2R1bXBfYnVmX2RhdGE7CkBAIC05MzgsNyArOTM4LDcgQEAKIAlpZiAoIWRlYnVnKQogCQlnb3RvIG91dDsKIAotCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRyeSAqLworCS8qIFJvdW5kIHRvIHBhZ2UgYm91bmRhcnkgKi8KIAlwcmludGsoS0VSTl9FUlIJIjkwNjAgQkxLR1JEOiAlczogX2R1bXBfYnVmX2RpZj0weCVwIGZpbGU9JXNcbiIsCiAJCV9fZnVuY19fLCBfZHVtcF9idWZfZGlmLCBmaWxlLT5mX2RlbnRyeS0+ZF9uYW1lLm5hbWUpOwogCWRlYnVnLT5idWZmZXIgPSBfZHVtcF9idWZfZGlmOwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAKIAkJCWRlYnVnZnNfY3JlYXRlX2RpcihuYW1lLCBwaGJhLT5oYmFfZGVidWdmc19yb290KTsKIAkJaWYgKCF2cG9ydC0+dnBvcnRfZGVidWdmc19yb290KSB7CiAJCQlscGZjX3ByaW50Zl92bG9nKHZwb3J0LCBLRVJOX0VSUiwgTE9HX0lOSVQsCi0JCQkJCSAiMDQxNyBDYW50IGNyZWF0ZSBkZWJ1Z2ZzXG4iKTsKKwkJCQkJICIwNDE3IENhbid0IGNyZWF0ZSBkZWJ1Z2ZzXG4iKTsKIAkJCWdvdG8gZGVidWdfZmFpbGVkOwogCQl9CiAJCWF0b21pY19pbmMoJnBoYmEtPmRlYnVnZnNfdnBvcnRfY291bnQpOwpAQCAtMjIxMSw3ICsyMjExLDcgQEAKIAkJCQkgdnBvcnQsICZscGZjX2RlYnVnZnNfb3Bfbm9kZWxpc3QpOwogCWlmICghdnBvcnQtPmRlYnVnX25vZGVsaXN0KSB7CiAJCWxwZmNfcHJpbnRmX3Zsb2codnBvcnQsIEtFUk5fRVJSLCBMT0dfSU5JVCwKLQkJCQkgIjA0MDkgQ2FudCBjcmVhdGUgZGVidWdmcyBub2RlbGlzdFxuIik7CisJCQkJICIwNDA5IENhbid0IGNyZWF0ZSBkZWJ1Z2ZzIG5vZGVsaXN0XG4iKTsKIAkJZ290byBkZWJ1Z19mYWlsZWQ7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2Vscy5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19lbHMuYwppbmRleCA3MzUwMjhmLi5kMzRiNjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2Vscy5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfZWxzLmMKQEAgLTEwMiw3ICsxMDIsNyBAQAogCQkJIHBoYmEtPnBwb3J0LT5wb3J0X3N0YXRlKTsKIAogCS8qIENMRUFSX0xBIHNob3VsZCByZS1lbmFibGUgbGluayBhdHRlbnRpb24gZXZlbnRzIGFuZAotCSAqIHdlIHNob3VsZCB0aGVuIGltZWRpYXRlbHkgdGFrZSBhIExBVFQgZXZlbnQuIFRoZQorCSAqIHdlIHNob3VsZCB0aGVuIGltbWVkaWF0ZWx5IHRha2UgYSBMQVRUIGV2ZW50LiBUaGUKIAkgKiBMQVRUIHByb2Nlc3Npbmcgc2hvdWxkIGNhbGwgbHBmY19saW5rZG93bigpIHdoaWNoCiAJICogd2lsbCBjbGVhbnVwIGFueSBsZWZ0IG92ZXIgaW4tcHJvZ3Jlc3MgZGlzY292ZXJ5CiAJICogZXZlbnRzLgpAQCAtMTU5OSw3ICsxNTk5LDcgQEAKICAqIFRoaXMgcm91dGluZSBpcyB0aGUgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaXNzdWluZyB0aGUgUG9ydAogICogTG9naW4gKFBMT0dJKSBjb21tYW5kLiBGb3IgUExPR0kgY29tcGxldGlvbiwgdGhlcmUgbXVzdCBiZSBhbiBhY3RpdmUKICAqIG5kbHAgb24gdGhlIHZwb3J0IG5vZGUgbGlzdCB0aGF0IG1hdGNoZXMgdGhlIHJlbW90ZSBub2RlIElEIGZyb20gdGhlCi0gKiBQTE9HSSByZXBvbnNlIElPQ0IuIElmIHN1Y2ggbmRscCBkb2VzIG5vdCBleGlzdCwgdGhlIFBMT0dJIGlzIHNpbXBseQorICogUExPR0kgcmVzcG9uc2UgSU9DQi4gSWYgc3VjaCBuZGxwIGRvZXMgbm90IGV4aXN0LCB0aGUgUExPR0kgaXMgc2ltcGx5CiAgKiBpZ25vcmVkIGFuZCBjb21tYW5kIElPQ0IgcmVsZWFzZWQuIFRoZSBQTE9HSSByZXNwb25zZSBJT0NCIHN0YXR1cyBpcwogICogY2hlY2tlZCBmb3IgZXJyb3IgY29uZGl0b25zLiBJZiB0aGVyZSBpcyBlcnJvciBzdGF0dXMgcmVwb3J0ZWQsIFBMT0dJCiAgKiByZXRyeSBzaGFsbCBiZSBhdHRlbXB0ZWQgYnkgaW52b2tpbmcgdGhlIGxwZmNfZWxzX3JldHJ5KCkgcm91dGluZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfaGJhZGlzYy5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19oYmFkaXNjLmMKaW5kZXggMTU0YzcxNS4uMzAxNDk4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19oYmFkaXNjLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19oYmFkaXNjLmMKQEAgLTczOSw3ICs3MzksNyBAQAogCiAvKgogICogVGhpcyBpcyBvbmx5IGNhbGxlZCB0byBoYW5kbGUgRkMgd29ya2VyIGV2ZW50cy4gU2luY2UgdGhpcyBhIHJhcmUKLSAqIG9jY3VyYW5jZSwgd2UgYWxsb2NhdGUgYSBzdHJ1Y3QgbHBmY193b3JrX2V2dCBzdHJ1Y3R1cmUgaGVyZSBpbnN0ZWFkIG9mCisgKiBvY2N1cnJlbmNlLCB3ZSBhbGxvY2F0ZSBhIHN0cnVjdCBscGZjX3dvcmtfZXZ0IHN0cnVjdHVyZSBoZXJlIGluc3RlYWQgb2YKICAqIGVtYmVkZGluZyBpdCBpbiB0aGUgSU9DQi4KICAqLwogaW50CkBAIC0xMzQ4LDcgKzEzNDgsNyBAQAogCWludCByYzsKIAogCXNwaW5fbG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOwotCS8qIElmIHRoZSBGQ0YgaXMgbm90IGF2YWlsYWJlIGRvIG5vdGhpbmcuICovCisJLyogSWYgdGhlIEZDRiBpcyBub3QgYXZhaWxhYmxlIGRvIG5vdGhpbmcuICovCiAJaWYgKCEocGhiYS0+ZmNmLmZjZl9mbGFnICYgRkNGX0FWQUlMQUJMRSkpIHsKIAkJcGhiYS0+aGJhX2ZsYWcgJj0gfihGQ0ZfVFNfSU5QUk9HIHwgRkNGX1JSX0lOUFJPRyk7CiAJCXNwaW5fdW5sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CkBAIC0xNTM4LDcgKzE1MzgsNyBAQAogCiAJCS8qCiAJCSAqIElmIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGFueSBhZGRyZXNzaW5nIG1vZGUsIG9yIGlmIHRoZQotCQkgKiBwcmVmZXJlZCBhZGRyZXNzaW5nIG1vZGUgc3BlY2lmaWVkIGJ5IHVzZXIgaXMgbm90IHN1cHBvcnRlZAorCQkgKiBwcmVmZXJyZWQgYWRkcmVzc2luZyBtb2RlIHNwZWNpZmllZCBieSB1c2VyIGlzIG5vdCBzdXBwb3J0ZWQKIAkJICogYnkgRkNGLCBhbGxvdyBmYWJyaWMgdG8gcGljayB0aGUgYWRkcmVzc2luZyBtb2RlLgogCQkgKi8KIAkJKmFkZHJfbW9kZSA9IGJmX2dldChscGZjX2ZjZl9yZWNvcmRfbWFjX2FkZHJfcHJvdiwKQEAgLTE1NTMsNyArMTU1Myw3IEBACiAJCQkJRkNGQ05DVF9BTV9TUE1BKSA/CiAJCQkJTFBGQ19GQ0ZfU1BNQSA6IExQRkNfRkNGX0ZQTUE7CiAJCS8qCi0JCSAqIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHByZWZlcmVkIGFkZHJlc3MgbW9kZSwgdXNlIHRoZQorCQkgKiBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYSBwcmVmZXJyZWQgYWRkcmVzcyBtb2RlLCB1c2UgdGhlCiAJCSAqIGFkZHIgbW9kZSBvbmx5IGlmIEZDRiBzdXBwb3J0IHRoZSBhZGRyX21vZGUuCiAJCSAqLwogCQllbHNlIGlmICgoY29ubl9lbnRyeS0+Y29ubl9yZWMuZmxhZ3MgJiBGQ0ZDTkNUX0FNX1ZBTElEKSAmJgpAQCAtMzExNyw3ICszMTE3LDcgQEAKIAkJICogYmFjayBhdCByZWcgbG9naW4gc3RhdGUgc28gdGhpcwogCQkgKiBtYm94IG5lZWRzIHRvIGJlIGlnbm9yZWQgYmVjYXNlCiAJCSAqIHRoZXJlIGlzIGFub3RoZXIgcmVnIGxvZ2luIGluCi0JCSAqIHByb2NjZXNzLgorCQkgKiBwcm9jZXNzLgogCQkgKi8KIAkJc3Bpbl9sb2NrX2lycShzaG9zdC0+aG9zdF9sb2NrKTsKIAkJbmRscC0+bmxwX2ZsYWcgJj0gfk5MUF9JR05SX1JFR19DTVBMOwpAQCAtNDQ3Nyw3ICs0NDc3LDcgQEAKIAlpZiAoKHZwb3J0LT5mY19mbGFnICYgRkNfUlNDTl9NT0RFKSAmJgogCSAgICAhKHZwb3J0LT5mY19mbGFnICYgRkNfTkRJU0NfQUNUSVZFKSkgewogCQlpZiAobHBmY19yc2NuX3BheWxvYWRfY2hlY2sodnBvcnQsIGRpZCkpIHsKLQkJCS8qIElmIHdlJ3ZlIGFscmVhZHkgcmVjaWV2ZWQgYSBQTE9HSSBmcm9tIHRoaXMgTlBvcnQKKwkJCS8qIElmIHdlJ3ZlIGFscmVhZHkgcmVjZWl2ZWQgYSBQTE9HSSBmcm9tIHRoaXMgTlBvcnQKIAkJCSAqIHdlIGRvbid0IG5lZWQgdG8gdHJ5IHRvIGRpc2NvdmVyIGl0IGFnYWluLgogCQkJICovCiAJCQlpZiAobmRscC0+bmxwX2ZsYWcgJiBOTFBfUkNWX1BMT0dJKQpAQCAtNDQ5Myw3ICs0NDkzLDcgQEAKIAkJfSBlbHNlCiAJCQluZGxwID0gTlVMTDsKIAl9IGVsc2UgewotCQkvKiBJZiB3ZSd2ZSBhbHJlYWR5IHJlY2lldmVkIGEgUExPR0kgZnJvbSB0aGlzIE5Qb3J0LAorCQkvKiBJZiB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIGEgUExPR0kgZnJvbSB0aGlzIE5Qb3J0LAogCQkgKiBvciB3ZSBhcmUgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcyBvZiBkaXNjb3Zlcnkgb24gaXQsCiAJCSAqIHdlIGRvbid0IG5lZWQgdG8gdHJ5IHRvIGRpc2NvdmVyIGl0IGFnYWluLgogCQkgKi8KQEAgLTU3NTYsNyArNTc1Niw3IEBACiAgKiBAc2l6ZTogU2l6ZSBvZiB0aGUgZGF0YSBidWZmZXIuCiAgKiBAcmVjX3R5cGU6IFJlY29yZCB0eXBlIHRvIGJlIHNlYXJjaGVkLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgY29uZmlnIHJlZ2lvbiBkYXRhIHRvIGZpbmQgdGhlIGJlZ2luaW5nCisgKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIGNvbmZpZyByZWdpb24gZGF0YSB0byBmaW5kIHRoZSBiZWdpbm5pbmcKICAqIG9mIHRoZSByZWNvcmQgc3BlY2lmaWVkIGJ5IHJlY29yZF90eXBlLiBJZiByZWNvcmQgZm91bmQsIHRoaXMKICAqIGZ1bmN0aW9uIHJldHVybiBwb2ludGVyIHRvIHRoZSByZWNvcmQgZWxzZSByZXR1cm4gTlVMTC4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19pbml0LmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYwppbmRleCBlNmViZTUxLi41MDVmODg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYwpAQCAtNDQ2Niw3ICs0NDY2LDcgQEAKIH0KIAogLyoqCi0gKiBscGZjX2luaXRfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIGluaXQgYXBpIGZ1Y250aW9uIGp1bXAgdGFibGUKKyAqIGxwZmNfaW5pdF9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgaW5pdCBhcGkgZnVuY3Rpb24ganVtcCB0YWJsZQogICogQHBoYmE6IFRoZSBoYmEgc3RydWN0IGZvciB3aGljaCB0aGlzIGNhbGwgaXMgYmVpbmcgZXhlY3V0ZWQuCiAgKiBAZGV2X2dycDogVGhlIEhCQSBQQ0ktRGV2aWNlIGdyb3VwIG51bWJlci4KICAqCkBAIC00ODUwLDcgKzQ4NTAsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogCTAgLSBzdWNjZXNzZnVsCi0gKiAJLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogCS1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogaW50CkBAIC01NzMwLDcgKzU3MzAsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogCTAgLSBzdWNjZXNzZnVsCi0gKiAJLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogCS1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogc3RhdGljIGludApAQCAtNTgzNSw3ICs1ODM1LDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqIAkwIC0gc3VjY2Vzc2Z1bAotICogCS1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqIAktRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIHN0YXRpYyBpbnQKQEAgLTU4OTQsNyArNTg5NCw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiBzdGF0aWMgaW50CkBAIC02MTg5LDcgKzYxODksNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogc3RhdGljIHZvaWQKQEAgLTYyNTMsNyArNjI1Myw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiBpbnQKQEAgLTY0OTgsNyArNjQ5OCw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiB2b2lkCkBAIC02NTQzLDcgKzY1NDMsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaTRfY3FfZXZlbnRfcG9vbF9jcmVhdGUoc3RydWN0IGxwZmNfaGJhICpwaGJhKQpAQCAtNjcwNCw3ICs2NzA0LDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqICAgICAgMCAtIHN1Y2Nlc3NmdWwKLSAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tYm94LmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYwppbmRleCBkYmEzMmRmLi5mYmFiOTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYwpAQCAtMTgzNCw3ICsxODM0LDcgQEAKICAqIEBmY2ZfaW5kZXg6IGluZGV4IHRvIGZjZiB0YWJsZS4KICAqCiAgKiBUaGlzIHJvdXRpbmUgcm91dGluZSBhbGxvY2F0ZXMgYW5kIGNvbnN0cnVjdHMgbm9uLWVtYmVkZGVkIG1haWxib3ggY29tbWFuZAotICogZm9yIHJlYWRpbmcgYSBGQ0YgdGFibGUgZW50cnkgcmVmZXJlZCBieSBAZmNmX2luZGV4LgorICogZm9yIHJlYWRpbmcgYSBGQ0YgdGFibGUgZW50cnkgcmVmZXJyZWQgYnkgQGZjZl9pbmRleC4KICAqCiAgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIG1haWxib3ggY29tbWFuZCBjb25zdHJ1Y3RlZCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UKICAqIE5VTEwuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25sLmggYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25sLmgKaW5kZXggZjNjZmJlMi4uZjJiMWJiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ubC5oCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbmwuaApAQCAtNTAsNyArNTAsNyBAQAogICogYW5kIHN1YmNhdGVnb3J5LiBUaGUgZXZlbnQgdHlwZSBtdXN0IGNvbWUgZmlyc3QuCiAgKiBUaGUgc3ViY2F0ZWdvcnkgZnVydGhlciBkZWZpbmVzIHRoZSBkYXRhIHRoYXQgZm9sbG93cyBpbiB0aGUgcmVzdAogICogb2YgdGhlIHBheWxvYWQuIEVhY2ggY2F0ZWdvcnkgd2lsbCBoYXZlIGl0cyBvd24gdW5pcXVlIGhlYWRlciBwbHVzCi0gKiBhbnkgYWRkdGlvbmFsIGRhdGEgdW5pcXVlIHRvIHRoZSBzdWJjYXRlZ29yeS4KKyAqIGFueSBhZGRpdGlvbmFsIGRhdGEgdW5pcXVlIHRvIHRoZSBzdWJjYXRlZ29yeS4KICAqIFRoZSBwYXlsb2FkIHNlbnQgdmlhIHRoZSBmYyB0cmFuc3BvcnQgaXMgb25lLXdheSBkcml2ZXItPmFwcGxpY2F0aW9uLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbnBvcnRkaXNjLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25wb3J0ZGlzYy5jCmluZGV4IDUyYjM1MTU5Li4wZDkyZDQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25wb3J0ZGlzYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbnBvcnRkaXNjLmMKQEAgLTY1OCw3ICs2NTgsNyBAQAogCXJldHVybiAwOwogfQogLyoqCi0gKiBscGZjX3JlbGVhc2VfcnBpIC0gUmVsZWFzZSBhIFJQSSBieSBpc3N1ZWluZyB1bnJlZ19sb2dpbiBtYWlsYm94IGNtZC4KKyAqIGxwZmNfcmVsZWFzZV9ycGkgLSBSZWxlYXNlIGEgUlBJIGJ5IGlzc3VpbmcgdW5yZWdfbG9naW4gbWFpbGJveCBjbWQuCiAgKiBAcGhiYSA6IFBvaW50ZXIgdG8gbHBmY19oYmEgc3RydWN0dXJlLgogICogQHZwb3J0OiBQb2ludGVyIHRvIGxwZmNfdnBvcnQgc3RydWN0dXJlLgogICogQHJwaSAgOiBycGkgdG8gYmUgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMKaW5kZXggMmI5NjJiMDIuLmZlN2NjODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jCkBAIC01NzcsNyArNTc3LDcgQEAKIAkJCWlvY2ItPnVuLmZjcGk2NC5iZGwuYWRkckhpZ2ggPSAwOwogCQkJaW9jYi0+dWxwQmRlQ291bnQgPSAwOwogCQkJaW9jYi0+dWxwTGUgPSAwOwotCQkJLyogZmlsbCBpbiByZXNwb25jZSBCREUgKi8KKwkJCS8qIGZpbGwgaW4gcmVzcG9uc2UgQkRFICovCiAJCQlpb2NiLT51bnNsaTMuZmNwX2V4dC5yYmRlLnR1cy5mLmJkZUZsYWdzID0KIAkJCQkJCQlCVUZGX1RZUEVfQkRFXzY0OwogCQkJaW9jYi0+dW5zbGkzLmZjcF9leHQucmJkZS50dXMuZi5iZGVTaXplID0KQEAgLTEyMTcsMTAgKzEyMTcsMTAgQEAKIAkJCQkgICAgICgyICogc2l6ZW9mKHN0cnVjdCB1bHBfYmRlNjQpKSk7CiAJCQlkYXRhX2JkZS0+YWRkckhpZ2ggPSBwdXRQYWRkckhpZ2gocGh5c2FkZHIpOwogCQkJZGF0YV9iZGUtPmFkZHJMb3cgPSBwdXRQYWRkckxvdyhwaHlzYWRkcik7Ci0JCQkvKiBlYmRlIGNvdW50IGluY2x1ZGVzIHRoZSByZXNwb25jZSBiZGUgYW5kIGRhdGEgYnBsICovCisJCQkvKiBlYmRlIGNvdW50IGluY2x1ZGVzIHRoZSByZXNwb25zZSBiZGUgYW5kIGRhdGEgYnBsICovCiAJCQlpb2NiX2NtZC0+dW5zbGkzLmZjcF9leHQuZWJkZV9jb3VudCA9IDI7CiAJCX0gZWxzZSB7Ci0JCQkvKiBlYmRlIGNvdW50IGluY2x1ZGVzIHRoZSByZXNwb25jZSBiZGUgYW5kIGRhdGEgYmRlcyAqLworCQkJLyogZWJkZSBjb3VudCBpbmNsdWRlcyB0aGUgcmVzcG9uc2UgYmRlIGFuZCBkYXRhIGJkZXMgKi8KIAkJCWlvY2JfY21kLT51bnNsaTMuZmNwX2V4dC5lYmRlX2NvdW50ID0gKG51bV9iZGUgKyAxKTsKIAkJfQogCX0gZWxzZSB7CkBAIC0yMzgwLDcgKzIzODAsNyBAQAogCQl9CiAJCS8qCiAJCSAqIFRoZSBjbW5kLT51bmRlcmZsb3cgaXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdAotCQkgKiBiZSB0cmFuc2ZlcmVkIGZvciB0aGlzIGNvbW1hbmQuICBQcm92aWRlZCBhIHNlbnNlIGNvbmRpdGlvbgorCQkgKiBiZSB0cmFuc2ZlcnJlZCBmb3IgdGhpcyBjb21tYW5kLiAgUHJvdmlkZWQgYSBzZW5zZSBjb25kaXRpb24KIAkJICogaXMgbm90IHByZXNlbnQsIG1ha2Ugc3VyZSB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBhdAogCQkgKiBsZWFzdCB0aGUgdW5kZXJmbG93IHZhbHVlIG9yIGZhaWwuCiAJCSAqLwpAQCAtMjg3Myw3ICsyODczLDcgQEAKIH0KIAogLyoqCi0gKiBscGZjX3Njc2lfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIHNjc2kgYXBpIGZ1Y250aW9uIGp1bXAgdGFibGUKKyAqIGxwZmNfc2NzaV9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgc2NzaSBhcGkgZnVuY3Rpb24ganVtcCB0YWJsZQogICogQHBoYmE6IFRoZSBoYmEgc3RydWN0IGZvciB3aGljaCB0aGlzIGNhbGwgaXMgYmVpbmcgZXhlY3V0ZWQuCiAgKiBAZGV2X2dycDogVGhlIEhCQSBQQ0ktRGV2aWNlIGdyb3VwIG51bWJlci4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaCBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5oCmluZGV4IDU5MzIyNzMuLmNlNjQ1YjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5oCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5oCkBAIC0xMzAsNyArMTMwLDcgQEAKIAlkbWFfYWRkcl90IG5vbnNnX3BoeXM7CS8qIE5vbiBzY2F0dGVyLWdhdGhlciBwaHlzaWNhbCBhZGRyZXNzLiAqLwogCiAJLyoKLQkgKiBkYXRhIGFuZCBkbWFfaGFuZGxlIGFyZSB0aGUga2VybmVsIHZpcnV0YWwgYW5kIGJ1cyBhZGRyZXNzIG9mIHRoZQorCSAqIGRhdGEgYW5kIGRtYV9oYW5kbGUgYXJlIHRoZSBrZXJuZWwgdmlydHVhbCBhbmQgYnVzIGFkZHJlc3Mgb2YgdGhlCiAJICogZG1hLWFibGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGZjcF9jbWQsIGZjcF9yc3AgYW5kIGEgc2NhdHRlcgogCSAqIGdhdGhlciBiZGUgbGlzdCB0aGF0IHN1cHBvcnRzIHRoZSBzZ190YWJsZXNpemUgdmFsdWUuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5jIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zbGkuYwppbmRleCA0NzQ2ZGNkLi5kYWNhYmJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5jCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2xpLmMKQEAgLTI4MTcsNyArMjgxNyw3IEBACiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBpbnRlcnJ1cHQgY29udGV4dCB3aGVuIHRoZXJlIGlzIGEgcmluZwogICogZXZlbnQgZm9yIHRoZSBmY3AgcmluZy4gVGhlIGNhbGxlciBkb2VzIG5vdCBob2xkIGFueSBsb2NrLgogICogVGhlIGZ1bmN0aW9uIHByb2Nlc3NlcyBlYWNoIHJlc3BvbnNlIGlvY2IgaW4gdGhlIHJlc3BvbnNlIHJpbmcgdW50aWwgaXQKLSAqIGZpbmRzIGFuIGlvY2Igd2l0aCBMRSBiaXQgc2V0IGFuZCBjaGFpbnMgYWxsIHRoZSBpb2NicyB1cHRvIHRoZSBpb2NiIHdpdGgKKyAqIGZpbmRzIGFuIGlvY2Igd2l0aCBMRSBiaXQgc2V0IGFuZCBjaGFpbnMgYWxsIHRoZSBpb2NicyB1cCB0byB0aGUgaW9jYiB3aXRoCiAgKiBMRSBiaXQgc2V0LiBUaGUgZnVuY3Rpb24gd2lsbCBjYWxsIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgb2YgdGhlIGNvbW1hbmQgaW9jYgogICogaWYgdGhlIHJlc3BvbnNlIGlvY2IgaW5kaWNhdGVzIGEgY29tcGxldGlvbiBmb3IgYSBjb21tYW5kIGlvY2Igb3IgaXQgaXMKICAqIGFuIGFib3J0IGNvbXBsZXRpb24uIFRoZSBmdW5jdGlvbiB3aWxsIGNhbGwgbHBmY19zbGlfcHJvY2Vzc191bnNvbF9pb2NiCkBAIC01MTE3LDcgKzUxMTcsNyBAQAogCiAJLyogU2V0dGluZyBzdGF0ZSB1bmtub3duIHNvIGxwZmNfc2xpX2Fib3J0X2lvY2JfcmluZwogCSAqIHdvdWxkIGdldCBJT0NCX0VSUk9SIGZyb20gbHBmY19zbGlfaXNzdWVfaW9jYiwgYWxsb3dpbmcKLQkgKiBpdCB0byBmYWlsIGFsbCBvdXN0YW5kaW5nIFNDU0kgSU8uCisJICogaXQgdG8gZmFpbCBhbGwgb3V0c3RhbmRpbmcgU0NTSSBJTy4KIAkgKi8KIAlzcGluX2xvY2tfaXJxKCZwaGJhLT5wcG9ydC0+d29ya19wb3J0X2xvY2spOwogCXBoYmEtPnBwb3J0LT53b3JrX3BvcnRfZXZlbnRzICY9IH5XT1JLRVJfTUJPWF9UTU87CkBAIC02MDMxLDcgKzYwMzEsNyBAQAogfQogCiAvKioKLSAqIGxwZmNfbWJveF9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgbWJveCBhcGkgZnVjbnRpb24ganVtcCB0YWJsZQorICogbHBmY19tYm94X2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBtYm94IGFwaSBmdW5jdGlvbiBqdW1wIHRhYmxlCiAgKiBAcGhiYTogVGhlIGhiYSBzdHJ1Y3QgZm9yIHdoaWNoIHRoaXMgY2FsbCBpcyBiZWluZyBleGVjdXRlZC4KICAqIEBkZXZfZ3JwOiBUaGUgSEJBIFBDSS1EZXZpY2UgZ3JvdXAgbnVtYmVyLgogICoKQEAgLTY4NDcsNyArNjg0Nyw3IEBACiB9CiAKIC8qKgotICogbHBmY19zbGlfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIHNsaSBhcGkgZnVjbnRpb24ganVtcCB0YWJsZQorICogbHBmY19zbGlfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIHNsaSBhcGkgZnVuY3Rpb24ganVtcCB0YWJsZQogICogQHBoYmE6IFRoZSBoYmEgc3RydWN0IGZvciB3aGljaCB0aGlzIGNhbGwgaXMgYmVpbmcgZXhlY3V0ZWQuCiAgKiBAZGV2X2dycDogVGhlIEhCQSBQQ0ktRGV2aWNlIGdyb3VwIG51bWJlci4KICAqCkBAIC03NTIxLDcgKzc1MjEsNyBAQAogCXN0cnVjdCBscGZjX2RtYWJ1ZiAqbXAsICpuZXh0X21wOwogCXN0cnVjdCBsaXN0X2hlYWQgKnNscCA9ICZwcmluZy0+cG9zdGJ1ZnE7CiAKLQkvKiBTZWFyY2ggcG9zdGJ1ZnEsIGZyb20gdGhlIGJlZ2luaW5nLCBsb29raW5nIGZvciBhIG1hdGNoIG9uIHRhZyAqLworCS8qIFNlYXJjaCBwb3N0YnVmcSwgZnJvbSB0aGUgYmVnaW5uaW5nLCBsb29raW5nIGZvciBhIG1hdGNoIG9uIHRhZyAqLwogCXNwaW5fbG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtcCwgbmV4dF9tcCwgJnByaW5nLT5wb3N0YnVmcSwgbGlzdCkgewogCQlpZiAobXAtPmJ1ZmZlcl90YWcgPT0gdGFnKSB7CkBAIC03NTY1LDcgKzc1NjUsNyBAQAogCXN0cnVjdCBscGZjX2RtYWJ1ZiAqbXAsICpuZXh0X21wOwogCXN0cnVjdCBsaXN0X2hlYWQgKnNscCA9ICZwcmluZy0+cG9zdGJ1ZnE7CiAKLQkvKiBTZWFyY2ggcG9zdGJ1ZnEsIGZyb20gdGhlIGJlZ2luaW5nLCBsb29raW5nIGZvciBhIG1hdGNoIG9uIHBoeXMgKi8KKwkvKiBTZWFyY2ggcG9zdGJ1ZnEsIGZyb20gdGhlIGJlZ2lubmluZywgbG9va2luZyBmb3IgYSBtYXRjaCBvbiBwaHlzICovCiAJc3Bpbl9sb2NrX2lycSgmcGhiYS0+aGJhbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1wLCBuZXh0X21wLCAmcHJpbmctPnBvc3RidWZxLCBsaXN0KSB7CiAJCWlmIChtcC0+cGh5cyA9PSBwaHlzKSB7CkBAIC04NDM4LDcgKzg0MzgsNyBAQAogICogZm9yIHBvc3NpYmxlIGVycm9yIGF0dGVudGlvbiBldmVudHMuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBob3N0bG9jawogICogd2l0aCBzcGluX2xvY2tfaXJxKCkuCiAgKgotICogVGhpcyBmdWNudGlvbiByZXR1cm5zIDEgd2hlbiB0aGVyZSBpcyBFcnJvciBBdHRlbnRpb24gaW4gdGhlIEhvc3QgQXR0ZW50aW9uCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZXJlIGlzIEVycm9yIEF0dGVudGlvbiBpbiB0aGUgSG9zdCBBdHRlbnRpb24KICAqIFJlZ2lzdGVyIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgogICoqLwogc3RhdGljIGludApAQCAtODQ5MSw3ICs4NDkxLDcgQEAKICAqIGZvciBwb3NzaWJsZSBlcnJvciBhdHRlbnRpb24gZXZlbnRzLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgaG9zdGxvY2sKICAqIHdpdGggc3Bpbl9sb2NrX2lycSgpLgogICoKLSAqIFRoaXMgZnVjbnRpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgd2hlbiB0aGVyZSBpcyBFcnJvciBBdHRlbnRpb24gaW4gdGhlIEhvc3QgQXR0ZW50aW9uCiAgKiBSZWdpc3RlciBhbmQgcmV0dXJucyAwIG90aGVyd2lzZS4KICAqKi8KIHN0YXRpYyBpbnQKQEAgLTg1ODEsNyArODU4MSw3IEBACiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRpbWVyIHNvZnQgaW50ZXJydXB0IGNvbnRleHQgdG8gY2hlY2sgSEJBJ3MKICAqIGVycm9yIGF0dGVudGlvbiByZWdpc3RlciBiaXQgZm9yIGVycm9yIGF0dGVudGlvbiBldmVudHMuCiAgKgotICogVGhpcyBmdWNudGlvbiByZXR1cm5zIDEgd2hlbiB0aGVyZSBpcyBFcnJvciBBdHRlbnRpb24gaW4gdGhlIEhvc3QgQXR0ZW50aW9uCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZXJlIGlzIEVycm9yIEF0dGVudGlvbiBpbiB0aGUgSG9zdCBBdHRlbnRpb24KICAqIFJlZ2lzdGVyIGFuZCByZXR1cm5zIDAgb3RoZXJ3aXNlLgogICoqLwogaW50CkBAIC05Njg0LDcgKzk2ODQsNyBAQAogICogQGNxOiBQb2ludGVyIHRvIHRoZSBjb21wbGV0aW9uIHF1ZXVlLgogICogQHdjcWU6IFBvaW50ZXIgdG8gYSBjb21wbGV0aW9uIHF1ZXVlIGVudHJ5LgogICoKLSAqIFRoaXMgcm91dGluZSBwcm9jZXNzIGEgc2xvdy1wYXRoIHdvcmstcXVldWUgb3IgcmVjaWV2ZSBxdWV1ZSBjb21wbGV0aW9uIHF1ZXVlCisgKiBUaGlzIHJvdXRpbmUgcHJvY2VzcyBhIHNsb3ctcGF0aCB3b3JrLXF1ZXVlIG9yIHJlY2VpdmUgcXVldWUgY29tcGxldGlvbiBxdWV1ZQogICogZW50cnkuCiAgKgogICogUmV0dXJuOiB0cnVlIGlmIHdvcmsgcG9zdGVkIHRvIHdvcmtlciB0aHJlYWQsIG90aGVyd2lzZSBmYWxzZS4KQEAgLTEyOTcxLDcgKzEyOTcxLDcgQEAKICAqIHJlY29yZCBhbmQgcHJvY2Vzc2luZyBpdCBvbmUgYXQgYSB0aW1lIHN0YXJ0aW5nIGZyb20gdGhlIEBmY2ZfaW5kZXgKICAqIGZvciBpbml0aWFsIEZDRiBkaXNjb3Zlcnkgb3IgZmFzdCBGQ0YgZmFpbG92ZXIgcmVkaXNjb3ZlcnkuCiAgKgotICogUmV0dXJuIDAgaWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBzdWJtaXR0ZWQgc3VjZXNzZnVsbHksIG5vbmUgMAorICogUmV0dXJuIDAgaWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5LCBub25lIDAKICAqIG90aGVyd2lzZS4KICAqKi8KIGludApAQCAtMTMwMzIsNyArMTMwMzIsNyBAQAogICogVGhpcyByb3V0aW5lIGlzIGludm9rZWQgdG8gcmVhZCBhbiBGQ0YgcmVjb3JkIGluZGljYXRlZCBieSBAZmNmX2luZGV4CiAgKiBhbmQgdG8gdXNlIGl0IGZvciBGTE9HSSByb3VuZHJvYmluIEZDRiBmYWlsb3Zlci4KICAqCi0gKiBSZXR1cm4gMCBpZiB0aGUgbWFpbGJveCBjb21tYW5kIGlzIHN1Ym1pdHRlZCBzdWNlc3NmdWxseSwgbm9uZSAwCisgKiBSZXR1cm4gMCBpZiB0aGUgbWFpbGJveCBjb21tYW5kIGlzIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHksIG5vbmUgMAogICogb3RoZXJ3aXNlLgogICoqLwogaW50CkBAIC0xMzA3OCw3ICsxMzA3OCw3IEBACiAgKiBUaGlzIHJvdXRpbmUgaXMgaW52b2tlZCB0byByZWFkIGFuIEZDRiByZWNvcmQgaW5kaWNhdGVkIGJ5IEBmY2ZfaW5kZXggdG8KICAqIGRldGVybWluZSB3aGV0aGVyIGl0J3MgZWxpZ2libGUgZm9yIEZMT0dJIHJvdW5kcm9iaW4gZmFpbG92ZXIgbGlzdC4KICAqCi0gKiBSZXR1cm4gMCBpZiB0aGUgbWFpbGJveCBjb21tYW5kIGlzIHN1Ym1pdHRlZCBzdWNlc3NmdWxseSwgbm9uZSAwCisgKiBSZXR1cm4gMCBpZiB0aGUgbWFpbGJveCBjb21tYW5kIGlzIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHksIG5vbmUgMAogICogb3RoZXJ3aXNlLgogICoqLwogaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCmluZGV4IGMyMTI2OTQuLmYyNjg0ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5jCkBAIC0yODQsNyArMjg0LDcgQEAKIAogCWFkYXB0ZXItPmhvc3QtPm1heF9pZCA9IDE2OwkvKiBtYXggdGFyZ2V0cyBwZXIgY2hhbm5lbCAqLwogCi0JYWRhcHRlci0+aG9zdC0+bWF4X2x1biA9IDc7CS8qIFVwdG8gNyBsdW5zIGZvciBub24gZGlzayBkZXZpY2VzICovCisJYWRhcHRlci0+aG9zdC0+bWF4X2x1biA9IDc7CS8qIFVwIHRvIDcgbHVucyBmb3Igbm9uIGRpc2sgZGV2aWNlcyAqLwogCiAJYWRhcHRlci0+aG9zdC0+Y21kX3Blcl9sdW4gPSBtYXhfY21kX3Blcl9sdW47CiAKQEAgLTM3MzQsNyArMzczNCw3IEBACiAJICogY2hlY2sgaXMgdGhlIGFwcGxpY2F0aW9uIGNvbmZvcm1zIHRvIE5JVC4gV2UgZG8gbm90IGhhdmUgdG8gZG8gbXVjaAogCSAqIGluIHRoYXQgY2FzZS4KIAkgKiBXZSBleHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlIHNpZ25hdHVyZSBpcyBzdG9yZWQgaW4gdGhlIHZlcnkKLQkgKiBiZWdpbmluZyBvZiB0aGUgc3RydWN0dXJlLgorCSAqIGJlZ2lubmluZyBvZiB0aGUgc3RydWN0dXJlLgogCSAqLwogCiAJaWYoIGNvcHlfZnJvbV91c2VyKHNpZ25hdHVyZSwgYXJnLCA3KSApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuaCBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5oCmluZGV4IDg1MzQxMTkuLjlhNzg5N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5oCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC5oCkBAIC01MzIsOSArNTMyLDkgQEAKIAogLyoKICAqIHN0cnVjdCBtY29udHJvbGxlciBpcyB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRyb2xsZXJzIGluIHRoZQotICogc3lzdGVtLiBJdHMgdXB0byB0aGUgYXBwbGljYXRpb24gaG93IHRvIHVzZSB0aGUgaW5mb3JtYXRpb24uIFdlIGFyZSBwYXNzaW5nCisgKiBzeXN0ZW0uIEl0cyB1cCB0byB0aGUgYXBwbGljYXRpb24gaG93IHRvIHVzZSB0aGUgaW5mb3JtYXRpb24uIFdlIGFyZSBwYXNzaW5nCiAgKiBhcyBtdWNoIGluZm8gYWJvdXQgdGhlIGNhcmRzIGFzIHBvc3NpYmxlIGFuZCB1c2VmdWwuIEJlZm9yZSBpc3N1aW5nIHRoZQotICogY2FsbCB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYXJkcywgdGhlIGFwcGxpY2FpdG9uIG5lZWRzIHRvIGlzc3VlIGEKKyAqIGNhbGwgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FyZHMsIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBpc3N1ZSBhCiAgKiBpb2N0bCBmaXJzdCB0byBmaW5kIG91dCB0aGUgbnVtYmVyIG9mIGNvbnRyb2xsZXJzIGluIHRoZSBzeXN0ZW0uCiAgKi8KICNkZWZpbmUgTUFYX0NPTlRST0xMRVJTIDMyCkBAIC04MDQsNyArODA0LDcgQEAKIAl1bnNpZ25lZCBsb25nCQliYXNlOwogCXZvaWQgX19pb21lbQkJKm1taW9fYmFzZTsKIAotCS8qIG1ib3g2NCB3aXRoIG1ib3ggbm90IGFsaWduZWQgb24gMTYtYnl0ZSBib3VuZHJ5ICovCisJLyogbWJveDY0IHdpdGggbWJveCBub3QgYWxpZ25lZCBvbiAxNi1ieXRlIGJvdW5kYXJ5ICovCiAJbWJveDY0X3QJKnVuYV9tYm94NjQ7CiAJZG1hX2FkZHJfdAl1bmFfbWJveDY0X2RtYTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21ib3hfZGVmcy5oIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21ib3hfZGVmcy5oCmluZGV4IGNlMjQ4N2EuLmUwMWM2ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tYm94X2RlZnMuaAorKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWJveF9kZWZzLmgKQEAgLTY2MCw3ICs2NjAsNyBAQAogICogQGxwYXJhbQk6IGxvZ2ljYWwgZHJpdmVzIHBhcmFtZXRlcnMKICAqIEBzcGFuCTogc3BhbgogICoKLSAqIDgtTEQgbG9naWNhbCBkcml2ZSB3aXRoIHVwdG8gOCBzcGFucworICogOC1MRCBsb2dpY2FsIGRyaXZlIHdpdGggdXAgdG8gOCBzcGFucwogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAJbG9nZHJ2X3BhcmFtX3QJbHBhcmFtOwpAQCAtNjczLDcgKzY3Myw3IEBACiAgKiBAbHBhcmFtCTogbG9naWNhbCBkcml2ZXMgcGFyYW1ldGVycwogICogQHNwYW4JOiBzcGFuCiAgKgotICogOC1MRCBsb2dpY2FsIGRyaXZlIHdpdGggdXB0byA0IHNwYW5zCisgKiA4LUxEIGxvZ2ljYWwgZHJpdmUgd2l0aCB1cCB0byA0IHNwYW5zCiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAlsb2dkcnZfcGFyYW1fdAlscGFyYW07CkBAIC03MjAsNyArNzIwLDcgQEAKICAqIEBsZHJ2CTogbG9naWNhbCBkcml2ZXMgaW5mb3JtYXRpb24KICAqIEBwZHJ2CTogcGh5c2ljYWwgZHJpdmVzIGluZm9ybWF0aW9uCiAgKgotICogRGlzayBhcnJheSBmb3IgOExEIGxvZ2ljYWwgZHJpdmVzIHdpdGggdXB0byA4IHNwYW5zCisgKiBEaXNrIGFycmF5IGZvciA4TEQgbG9naWNhbCBkcml2ZXMgd2l0aCB1cCB0byA4IHNwYW5zCiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAl1aW50OF90CQkJbnVtbGRydjsKQEAgLTczNyw3ICs3MzcsNyBAQAogICogQGxkcnYJOiBsb2dpY2FsIGRyaXZlcyBpbmZvcm1hdGlvbgogICogQHBkcnYJOiBwaHlzaWNhbCBkcml2ZXMgaW5mb3JtYXRpb24KICAqCi0gKiBEaXNrIGFycmF5IGZvciA4TEQgbG9naWNhbCBkcml2ZXMgd2l0aCB1cHRvIDQgc3BhbnMKKyAqIERpc2sgYXJyYXkgZm9yIDhMRCBsb2dpY2FsIGRyaXZlcyB3aXRoIHVwIHRvIDQgc3BhbnMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogCXVpbnQ4X3QJCQludW1sZHJ2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX21ib3guYyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9tYm94LmMKaW5kZXggNTcwOGNiMi4uMWRiYTMyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX21ib3guYworKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbWJveC5jCkBAIC0yNjg5LDcgKzI2ODksNyBAQAogCQkJCShNQk9YX1JFU0VUX1dBSVQgKyBNQk9YX1JFU0VUX0VYVF9XQUlUKSAtIGkpKTsKIAkJfQogCi0JCS8vIGJhaWxvdXQgaWYgbm8gcmVjb3ZlcnkgaGFwcGVuZGVkIGluIHJlc2V0IHRpbWUKKwkJLy8gYmFpbG91dCBpZiBubyByZWNvdmVyeSBoYXBwZW5lZCBpbiByZXNldCB0aW1lCiAJCWlmIChhZGFwdGVyLT5vdXRzdGFuZGluZ19jbWRzID09IDApIHsKIAkJCWJyZWFrOwogCQl9CkBAIC0zNDUyLDcgKzM0NTIsNyBAQAogICogbWVnYXJhaWRfbWJveF9zZXR1cF9kZXZpY2VfbWFwIC0gbWFuYWdlIGRldmljZSBpZHMKICAqIEBhZGFwdGVyCTogRHJpdmVyJ3Mgc29mdCBzdGF0ZQogICoKLSAqIE1hbmFuZ2UgdGhlIGRldmljZSBpZHMgdG8gaGF2ZSBhbiBhcHByb3ByYWl0ZSBtYXBwaW5nIGJldHdlZW4gdGhlIGtlcm5lbAorICogTWFuYW5nZSB0aGUgZGV2aWNlIGlkcyB0byBoYXZlIGFuIGFwcHJvcHJpYXRlIG1hcHBpbmcgYmV0d2VlbiB0aGUga2VybmVsCiAgKiBzY3NpIGFkZHJlc3NlcyBhbmQgbWVnYXJhaWQgc2NzaSBhbmQgbG9naWNhbCBkcml2ZSBhZGRyZXNzZXMuIFdlIGV4cG9ydAogICogc2NzaSBkZXZpY2VzIG9uIHRoZWlyIGFjdHVhbCBhZGRyZXNzZXMsIHdoZXJlYXMgdGhlIGxvZ2ljYWwgZHJpdmVzIGFyZQogICogZXhwb3J0ZWQgb24gYSB2aXJ0dWFsIHNjc2kgY2hhbm5lbC4KQEAgLTM5NzMsNyArMzk3Myw3IEBACiAgKiBOT1RFOiBUaGUgY29tbWFuZHMgaXNzdWFuY2UgZnVuY3Rpb25hbGl0eSBpcyBub3QgZ2VuZXJhbGl6ZWQgYW5kCiAgKiBpbXBsZW1lbnRlZCBpbiBjb250ZXh0IG9mICJnZXQgbGQgbWFwIiBjb21tYW5kIG9ubHkuIElmIHJlcXVpcmVkLCB0aGUKICAqIGNvbW1hbmQgaXNzdWFuY2UgbG9naWNhbCBjYW4gYmUgdHJpdmlhbGx5IHB1bGxlZCBvdXQgYW5kIGltcGxlbWVudGVkIGFzIGEKLSAqIHN0YW5kYWxvbmUgbGliYXJ5LiBGb3Igbm93LCB0aGlzIHNob3VsZCBzdWZmaWNlIHNpbmNlIHRoZXJlIGlzIG5vIG90aGVyCisgKiBzdGFuZGFsb25lIGxpYnJhcnkuIEZvciBub3csIHRoaXMgc2hvdWxkIHN1ZmZpY2Ugc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIKICAqIHVzZXIgb2YgdGhpcyBpbnRlcmZhY2UuCiAgKgogICogUmV0dXJuIDAgb24gc3VjY2Vzcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaCBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaAppbmRleCA2MzViMjI4Li4wNDZkY2M2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5oCkBAIC0xMzQ3LDcgKzEzNDcsNyBAQAogCXN0cnVjdCB0aW1lcl9saXN0IGlvX2NvbXBsZXRpb25fdGltZXI7CiAJc3RydWN0IGxpc3RfaGVhZCBpbnRlcm5hbF9yZXNldF9wZW5kaW5nX3E7CiAKLQkvKiBQdHIgdG8gaGJhIHNwZWNmaWMgaW5mb3JtYXRpb24gKi8KKwkvKiBQdHIgdG8gaGJhIHNwZWNpZmljIGluZm9ybWF0aW9uICovCiAJdm9pZCAqY3RybF9jb250ZXh0OwogCXU4CW1zaV9mbGFnOwogCXN0cnVjdCBtc2l4X2VudHJ5IG1zaXhlbnRyeTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKaW5kZXggYmJkMTBjOC4uNjZkNGNlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMKQEAgLTE2OTgsNyArMTY5OCw3IEBACiAgKiBtZWdhc2FzX3dhaXRfZm9yX291dHN0YW5kaW5nIC0JV2FpdCBmb3IgYWxsIG91dHN0YW5kaW5nIGNtZHMKICAqIEBpbnN0YW5jZToJCQkJQWRhcHRlciBzb2Z0IHN0YXRlCiAgKgotICogVGhpcyBmdW5jdGlvbiB3YWl0cyBmb3IgdXB0byBNRUdBU0FTX1JFU0VUX1dBSVRfVElNRSBzZWNvbmRzIGZvciBGVyB0bworICogVGhpcyBmdW5jdGlvbiB3YWl0cyBmb3IgdXAgdG8gTUVHQVNBU19SRVNFVF9XQUlUX1RJTUUgc2Vjb25kcyBmb3IgRlcgdG8KICAqIGNvbXBsZXRlIGFsbCBpdHMgb3V0c3RhbmRpbmcgY29tbWFuZHMuIFJldHVybnMgZXJyb3IgaWYgb25lIG9yIG1vcmUgSU9zCiAgKiBhcmUgcGVuZGluZyBhZnRlciB0aGlzIHRpbWUgcGVyaW9kLiBJdCBhbHNvIG1hcmtzIHRoZSBjb250cm9sbGVyIGRlYWQuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21waS9tcGkyX2luaXQuaCBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21waS9tcGkyX2luaXQuaAppbmRleCAyMGU2Yjg4Li4xNjU0NTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcGkvbXBpMl9pbml0LmgKKysrIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXBpL21waTJfaW5pdC5oCkBAIC0yMSw3ICsyMSw3IEBACiAgKiAgMDUtMjEtMDggIDAyLjAwLjA1ICBGaXhlZCB0eXBvIGluIG5hbWUgb2YgTXBpMlNlcFJlcXVlc3RfdC4KICAqICAxMC0wMi0wOCAgMDIuMDAuMDYgIFJlbW92ZWQgVW50YWdnZWQgYW5kIE5vIERpc2Nvbm5lY3QgdmFsdWVzIGZyb20gU0NTSSBJTwogICogICAgICAgICAgICAgICAgICAgICAgQ29udHJvbCBmaWVsZCBUYXNrIEF0dHJpYnV0ZSBmbGFncy4KLSAqICAgICAgICAgICAgICAgICAgICAgIE1vdmVkIExVTiBmaWVsZCBkZWZpbmVzIHRvIG1waTIuaCBiZWNhc3VlIHRoZXkgYXJlCisgKiAgICAgICAgICAgICAgICAgICAgICBNb3ZlZCBMVU4gZmllbGQgZGVmaW5lcyB0byBtcGkyLmggYmVjYXVzZSB0aGV5IGFyZQogICogICAgICAgICAgICAgICAgICAgICAgY29tbW9uIHRvIG1hbnkgc3RydWN0dXJlcy4KICAqICAwNS0wNi0wOSAgMDIuMDAuMDcgIENoYW5nZWQgdGFzayBtYW5hZ2VtZW50IHR5cGUgb2YgUXVlcnkgVW5pdCBBdHRlbnRpb24gdG8KICAqICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5IEFzeW5jaHJvbm91cyBFdmVudC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfYmFzZS5jIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19iYXNlLmMKaW5kZXggNWUwMDFmZi4uMzM0NjM1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19iYXNlLmMKKysrIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19iYXNlLmMKQEAgLTkyNSw3ICs5MjUsNyBAQAogfQogCiAvKioKLSAqIG1wdDJzYXNfYmFzZV9yZWxlYXNlX2NhbGxiYWNrX2hhbmRsZXIgLSBjbGVhciBpbnRlcnVwdCBjYWxsYmFjayBoYW5kbGVyCisgKiBtcHQyc2FzX2Jhc2VfcmVsZWFzZV9jYWxsYmFja19oYW5kbGVyIC0gY2xlYXIgaW50ZXJydXB0IGNhbGxiYWNrIGhhbmRsZXIKICAqIEBjYl9pZHg6IGNhbGxiYWNrIGluZGV4CiAgKgogICogUmV0dXJuIG5vdGhpbmcuCkBAIC0xMTEzLDcgKzExMTMsNyBAQAogICogQGlvYzogcGVyIGFkYXB0ZXIgb2JqZWN0CiAgKgogICogQ2hlY2sgdG8gc2VlIGlmIGNhcmQgaXMgY2FwYWJsZSBvZiBNU0lYLCBhbmQgc2V0IG51bWJlcgotICogb2YgYXZhbGlhYmxlIG1zaXggdmVjdG9ycworICogb2YgYXZhaWxhYmxlIG1zaXggdmVjdG9ycwogICovCiBzdGF0aWMgaW50CiBfYmFzZV9jaGVja19lbmFibGVfbXNpeChzdHJ1Y3QgTVBUMlNBU19BREFQVEVSICppb2MpCkBAIC0xNTk1LDcgKzE1OTUsNyBAQAogCiAKIC8qKgotICogbXB0MnNhc19iYXNlX3B1dF9zbWlkX2hpX3ByaW9yaXR5IC0gc2VuZCBUYXNrIE1hbmFnbWVudCByZXF1ZXN0IHRvIGZpcm13YXJlCisgKiBtcHQyc2FzX2Jhc2VfcHV0X3NtaWRfaGlfcHJpb3JpdHkgLSBzZW5kIFRhc2sgTWFuYWdlbWVudCByZXF1ZXN0IHRvIGZpcm13YXJlCiAgKiBAaW9jOiBwZXIgYWRhcHRlciBvYmplY3QKICAqIEBzbWlkOiBzeXN0ZW0gcmVxdWVzdCBtZXNzYWdlIGluZGV4CiAgKgpAQCAtMjU5OSw3ICsyNTk5LDcgQEAKIAkJaW50X3N0YXR1cyA9IHJlYWRsKCZpb2MtPmNoaXAtPkhvc3RJbnRlcnJ1cHRTdGF0dXMpOwogCQlpZiAoaW50X3N0YXR1cyAmIE1QSTJfSElTX0lPQzJTWVNfREJfU1RBVFVTKSB7CiAJCQlkaHNwcmludGsoaW9jLCBwcmludGsoTVBUMlNBU19JTkZPX0ZNVCAiJXM6ICIKLQkJCSAgICAic3VjY2Vzc2Z1bGwgY291bnQoJWQpLCB0aW1lb3V0KCVkKVxuIiwgaW9jLT5uYW1lLAorCQkJICAgICJzdWNjZXNzZnVsIGNvdW50KCVkKSwgdGltZW91dCglZClcbiIsIGlvYy0+bmFtZSwKIAkJCSAgICBfX2Z1bmNfXywgY291bnQsIHRpbWVvdXQpKTsKIAkJCXJldHVybiAwOwogCQl9CkBAIC0yNjQwLDcgKzI2NDAsNyBAQAogCQlpbnRfc3RhdHVzID0gcmVhZGwoJmlvYy0+Y2hpcC0+SG9zdEludGVycnVwdFN0YXR1cyk7CiAJCWlmICghKGludF9zdGF0dXMgJiBNUEkyX0hJU19TWVMySU9DX0RCX1NUQVRVUykpIHsKIAkJCWRoc3ByaW50ayhpb2MsIHByaW50ayhNUFQyU0FTX0lORk9fRk1UICIlczogIgotCQkJICAgICJzdWNjZXNzZnVsbCBjb3VudCglZCksIHRpbWVvdXQoJWQpXG4iLCBpb2MtPm5hbWUsCisJCQkgICAgInN1Y2Nlc3NmdWwgY291bnQoJWQpLCB0aW1lb3V0KCVkKVxuIiwgaW9jLT5uYW1lLAogCQkJICAgIF9fZnVuY19fLCBjb3VudCwgdGltZW91dCkpOwogCQkJcmV0dXJuIDA7CiAJCX0gZWxzZSBpZiAoaW50X3N0YXR1cyAmIE1QSTJfSElTX0lPQzJTWVNfREJfU1RBVFVTKSB7CkBAIC0yNjg4LDcgKzI2ODgsNyBAQAogCQlkb29yYmVsbF9yZWcgPSByZWFkbCgmaW9jLT5jaGlwLT5Eb29yYmVsbCk7CiAJCWlmICghKGRvb3JiZWxsX3JlZyAmIE1QSTJfRE9PUkJFTExfVVNFRCkpIHsKIAkJCWRoc3ByaW50ayhpb2MsIHByaW50ayhNUFQyU0FTX0lORk9fRk1UICIlczogIgotCQkJICAgICJzdWNjZXNzZnVsbCBjb3VudCglZCksIHRpbWVvdXQoJWQpXG4iLCBpb2MtPm5hbWUsCisJCQkgICAgInN1Y2Nlc3NmdWwgY291bnQoJWQpLCB0aW1lb3V0KCVkKVxuIiwgaW9jLT5uYW1lLAogCQkJICAgIF9fZnVuY19fLCBjb3VudCwgdGltZW91dCkpOwogCQkJcmV0dXJuIDA7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY29uZmlnLmMgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2NvbmZpZy5jCmluZGV4IDZhZmQ2N2IuLjY4NjEyNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY29uZmlnLmMKKysrIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jb25maWcuYwpAQCAtOTMsNyArOTMsNyBAQAogICogQG1waV9yZXBseTogcmVwbHkgbWVzc2FnZSBmcmFtZQogICogQ29udGV4dDogbm9uZS4KICAqCi0gKiBGdW5jdGlvbiBmb3IgZGlzcGxheWluZyBkZWJ1ZyBpbmZvIGhlbHBmdWxsIHdoZW4gZGVidWdnaW5nIGlzc3VlcworICogRnVuY3Rpb24gZm9yIGRpc3BsYXlpbmcgZGVidWcgaW5mbyBoZWxwZnVsIHdoZW4gZGVidWdnaW5nIGlzc3VlcwogICogaW4gdGhpcyBtb2R1bGUuCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2N0bC5jIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jdGwuYwppbmRleCBlOTJiNzdhLi4xYzZkMmI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2N0bC5jCisrKyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY3RsLmMKQEAgLTExNiw3ICsxMTYsNyBAQAogICogQG1waV9yZXBseTogcmVwbHkgbWVzc2FnZSBmcmFtZQogICogQ29udGV4dDogbm9uZS4KICAqCi0gKiBGdW5jdGlvbiBmb3IgZGlzcGxheWluZyBkZWJ1ZyBpbmZvIGhlbHBmdWxsIHdoZW4gZGVidWdnaW5nIGlzc3VlcworICogRnVuY3Rpb24gZm9yIGRpc3BsYXlpbmcgZGVidWcgaW5mbyBoZWxwZnVsIHdoZW4gZGVidWdnaW5nIGlzc3VlcwogICogaW4gdGhpcyBtb2R1bGUuCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX3Njc2loLmMgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX3Njc2loLmMKaW5kZXggNmNlYjc3NS4uZDIwNjRhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19zY3NpaC5jCisrKyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfc2NzaWguYwpAQCAtMzk3LDcgKzM5Nyw3IEBACiAgKiBAaXNfcmFpZDogW2ZsYWddIDEgPSByYWlkIG9iamVjdCwgMCA9IHNhcyBvYmplY3QKICAqCiAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhpcyBkZXZpY2Ugc2hvdWxkIGJlIGZpcnN0IHJlcG9ydGVkIGRldmljZSB0bwotICogdG8gc2NzaS1tbCBvciBzYXMgdHJhbnNwb3J0LCB0aGlzIHB1cnBvc2UgaXMgZm9yIHBlcnNpc3RhbnQgYm9vdCBkZXZpY2UuCisgKiB0byBzY3NpLW1sIG9yIHNhcyB0cmFuc3BvcnQsIHRoaXMgcHVycG9zZSBpcyBmb3IgcGVyc2lzdGVudCBib290IGRldmljZS4KICAqIFRoZXJlIGFyZSBwcmltYXJ5LCBhbHRlcm5hdGUsIGFuZCBjdXJyZW50IGVudHJpZXMgaW4gYmlvcyBwYWdlIDIuIFRoZSBvcmRlcgogICogcHJpb3JpdHkgaXMgcHJpbWFyeSwgYWx0ZXJuYXRlLCB0aGVuIGN1cnJlbnQuICBUaGlzIHJvdXRpbmUgc2F2ZXMKICAqIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSBvYmplY3QgYW5kIGlzX3JhaWQgZmxhZyBpbiB0aGUgaW9jIG9iamVjdC4KQEAgLTI2NzEsMTAgKzI2NzEsMTAgQEAKICAqIEBoYW5kbGU6IGRldmljZSBoYW5kbGUKICAqIENvbnRleHQ6IGludGVycnVwdCB0aW1lLgogICoKLSAqIFRoaXMgY29kZSBpcyB0byBpbml0aWF0ZSB0aGUgZGV2aWNlIHJlbW92YWwgaGFuZHNoYWtlIHByb3RvY2FsCisgKiBUaGlzIGNvZGUgaXMgdG8gaW5pdGlhdGUgdGhlIGRldmljZSByZW1vdmFsIGhhbmRzaGFrZSBwcm90b2NvbAogICogd2l0aCBjb250cm9sbGVyIGZpcm13YXJlLiAgVGhpcyBmdW5jdGlvbiB3aWxsIGlzc3VlIHRhcmdldCByZXNldAogICogdXNpbmcgaGlnaCBwcmlvcml0eSByZXF1ZXN0IHF1ZXVlLiAgSXQgd2lsbCBzZW5kIGEgc2FzIGlvdW5pdAotICogY29udHJvbGwgcmVxdWVzdCAoTVBJMl9TQVNfT1BfUkVNT1ZFX0RFVklDRSkgZnJvbSB0aGlzIGNvbXBsZXRpb24uCisgKiBjb250cm9sIHJlcXVlc3QgKE1QSTJfU0FTX09QX1JFTU9WRV9ERVZJQ0UpIGZyb20gdGhpcyBjb21wbGV0aW9uLgogICoKICAqIFRoaXMgaXMgZGVzaWduZWQgdG8gc2VuZCBtdWxpcGxlIHRhc2sgbWFuYWdlbWVudCByZXF1ZXN0IGF0IHRoZSBzYW1lCiAgKiB0aW1lIHRvIHRoZSBmaWZvLiBJZiB0aGUgZmlmbyBpcyBmdWxsLCB3ZSB3aWxsIGFwcGVuZCB0aGUgcmVxdWVzdCwKQEAgLTI3NDksOSArMjc0OSw5IEBACiAgKiBAcmVwbHk6IHJlcGx5IG1lc3NhZ2UgZnJhbWUobG93ZXIgMzJiaXQgYWRkcikKICAqIENvbnRleHQ6IGludGVycnVwdCB0aW1lLgogICoKLSAqIFRoaXMgaXMgdGhlIHNhcyBpb3VuaXQgY29udHJvbGwgY29tcGxldGlvbiByb3V0aW5lLgorICogVGhpcyBpcyB0aGUgc2FzIGlvdW5pdCBjb250cm9sIGNvbXBsZXRpb24gcm91dGluZS4KICAqIFRoaXMgY29kZSBpcyBwYXJ0IG9mIHRoZSBjb2RlIHRvIGluaXRpYXRlIHRoZSBkZXZpY2UgcmVtb3ZhbAotICogaGFuZHNoYWtlIHByb3RvY2FsIHdpdGggY29udHJvbGxlciBmaXJtd2FyZS4KKyAqIGhhbmRzaGFrZSBwcm90b2NvbCB3aXRoIGNvbnRyb2xsZXIgZmlybXdhcmUuCiAgKgogICogUmV0dXJuIDEgbWVhbmluZyBtZiBzaG91bGQgYmUgZnJlZWQgZnJvbSBfYmFzZV9pbnRlcnJ1cHQKICAqICAgICAgICAwIG1lYW5zIHRoZSBtZiBpcyBmcmVlZCBmcm9tIHRoaXMgZnVuY3Rpb24uCkBAIC0yODc4LDggKzI4NzgsOCBAQAogICoKICAqIFRoaXMgaXMgdGhlIHRhcmdldCByZXNldCBjb21wbGV0aW9uIHJvdXRpbmUuCiAgKiBUaGlzIGNvZGUgaXMgcGFydCBvZiB0aGUgY29kZSB0byBpbml0aWF0ZSB0aGUgZGV2aWNlIHJlbW92YWwKLSAqIGhhbmRzaGFrZSBwcm90b2NhbCB3aXRoIGNvbnRyb2xsZXIgZmlybXdhcmUuCi0gKiBJdCB3aWxsIHNlbmQgYSBzYXMgaW91bml0IGNvbnRyb2xsIHJlcXVlc3QgKE1QSTJfU0FTX09QX1JFTU9WRV9ERVZJQ0UpCisgKiBoYW5kc2hha2UgcHJvdG9jb2wgd2l0aCBjb250cm9sbGVyIGZpcm13YXJlLgorICogSXQgd2lsbCBzZW5kIGEgc2FzIGlvdW5pdCBjb250cm9sIHJlcXVlc3QgKE1QSTJfU0FTX09QX1JFTU9WRV9ERVZJQ0UpCiAgKgogICogUmV0dXJuIDEgbWVhbmluZyBtZiBzaG91bGQgYmUgZnJlZWQgZnJvbSBfYmFzZV9pbnRlcnJ1cHQKICAqICAgICAgICAwIG1lYW5zIHRoZSBtZiBpcyBmcmVlZCBmcm9tIHRoaXMgZnVuY3Rpb24uCkBAIC0yOTg0LDcgKzI5ODQsNyBAQAogICoKICAqIFRoaXMgcm91dGluZSBhZGRlZCB0byBiZXR0ZXIgaGFuZGxlIGNhYmxlIGJyZWFrZXIuCiAgKgotICogVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGRyaXZlciByZWNpZXZlcyBtdWx0aXBsZSBleHBhbmRlcgorICogVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGRyaXZlciByZWNlaXZlcyBtdWx0aXBsZSBleHBhbmRlcgogICogYWRkIGFuZCBkZWxldGUgZXZlbnRzIGluIGEgc2luZ2xlIHNob3QuICBXaGVuIHRoZXJlIGlzIGEgZGVsZXRlIGV2ZW50CiAgKiB0aGUgcm91dGluZSB3aWxsIHZvaWQgYW55IHBlbmRpbmcgYWRkIGV2ZW50cyB3YWl0aW5nIGluIHRoZSBldmVudCBxdWV1ZS4KICAqCkBAIC0zNTExLDcgKzM1MTEsNyBAQAogCiAjaWZkZWYgQ09ORklHX1NDU0lfTVBUMlNBU19MT0dHSU5HCiAvKioKLSAqIF9zY3NpaF9zY3NpX2lvY19pbmZvIC0gdHJhbnNsYXRlZCBub24tc3VjY2Vzc2Z1bGwgU0NTSV9JTyByZXF1ZXN0CisgKiBfc2NzaWhfc2NzaV9pb2NfaW5mbyAtIHRyYW5zbGF0ZWQgbm9uLXN1Y2Nlc3NmdWwgU0NTSV9JTyByZXF1ZXN0CiAgKiBAaW9jOiBwZXIgYWRhcHRlciBvYmplY3QKICAqIEBzY21kOiBwb2ludGVyIHRvIHNjc2kgY29tbWFuZCBvYmplY3QKICAqIEBtcGlfcmVwbHk6IHJlcGx5IG1mIHBheWxvYWQgcmV0dXJuZWQgZnJvbSBmaXJtd2FyZQpAQCAtNTEzOCw3ICs1MTM4LDcgQEAKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCByOwogCi0JZGV3dHByaW50ayhpb2MsIHByaW50ayhNUFQyU0FTX0lORk9fRk1UICJicm9hZGNhc3QgcHJpbWF0aXZlOiAiCisJZGV3dHByaW50ayhpb2MsIHByaW50ayhNUFQyU0FTX0lORk9fRk1UICJicm9hZGNhc3QgcHJpbWl0aXZlOiAiCiAJICAgICJwaHkgbnVtYmVyKCVkKSwgd2lkdGgoJWQpXG4iLCBpb2MtPm5hbWUsIGV2ZW50X2RhdGEtPlBoeU51bSwKIAkgICAgZXZlbnRfZGF0YS0+UG9ydFdpZHRoKSk7CiAJZHRtcHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgIiVzOiBlbnRlclxuIiwgaW9jLT5uYW1lLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL25jcjUzYzh4eC5jIGIvZHJpdmVycy9zY3NpL25jcjUzYzh4eC5jCmluZGV4IDQ2Y2MzODIuLjgzNWQ4ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9uY3I1M2M4eHguYworKysgYi9kcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMKQEAgLTI2NzksNyArMjY3OSw3IEBACiB9LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPCBSRVNFTF9UQUcgPi0tLS0tLS0tLS0tLS0tLS0tLS0qLyx7CiAJLyoKIAkqKglSZWFkIElERU5USUZZICsgU0lNUExFICsgVEFHIHVzaW5nIGEgc2luZ2xlIE1PVkUuCi0JKioJQWdyZXNzaXZlIG9wdGltaXphdGlvbiwgaXMnbnQgaXQ/CisJKioJQWdncmVzc2l2ZSBvcHRpbWl6YXRpb24sIGlzJ250IGl0PwogCSoqCU5vIG5lZWQgdG8gdGVzdCB0aGUgU0lNUExFIFRBRyBtZXNzYWdlLCBzaW5jZSB0aGUgCiAJKioJZHJpdmVyIG9ubHkgc3VwcG9ydHMgY29uZm9ybWFudCBkZXZpY2VzIGZvciB0YWdzLiA7LSkKIAkqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL25zcDMyLmMgYi9kcml2ZXJzL3Njc2kvbnNwMzIuYwppbmRleCA2YjhiMDIxLi5mNmE1MGM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbnNwMzIuYworKysgYi9kcml2ZXJzL3Njc2kvbnNwMzIuYwpAQCAtMTI4OCw3ICsxMjg4LDcgQEAKIAkJCW5zcDMyX2RiZyhOU1AzMl9ERUJVR19JTlRSLCAiU1NBQ0s9MHglbHgiLCAKIAkJCQkgICAgbnNwMzJfcmVhZDQoYmFzZSwgU0FWRURfU0FDS19DTlQpKTsKIAotCQkJc2NzaV9zZXRfcmVzaWQoU0NwbnQsIDApOyAvKiBhbGwgZGF0YSB0cmFuc2ZlcmVkISAqLworCQkJc2NzaV9zZXRfcmVzaWQoU0NwbnQsIDApOyAvKiBhbGwgZGF0YSB0cmFuc2ZlcnJlZCEgKi8KIAkJfQogCiAJCS8qCkBAIC0xNjMwLDcgKzE2MzAsNyBAQAogCiAJCQkvKgogCQkJICogSWYgU0FWRURTQUNLQ05UID09IDAsIGl0IG1lYW5zIFNhdmVkRGF0YVBvaW50ZXIgaXMKLQkJCSAqIGNvbWUgYWZ0ZXIgZGF0YSB0cmFuc2ZlcmluZy4KKwkJCSAqIGNvbWUgYWZ0ZXIgZGF0YSB0cmFuc2ZlcnJpbmcuCiAJCQkgKi8KIAkJCWlmIChzX3NhY2tsZW4gPiAwKSB7CiAJCQkJLyoKQEAgLTE3ODUsNyArMTc4NSw3IEBACiAJCSAgIHRoZSBoZWFkIGVsZW1lbnQgb2YgdGhlIHNnLiByZXN0bGVuIGlzIGNvcnJlY3RseSBjYWxjdWxhdGVkLiAqLwogCX0KIAotCS8qIGNhbGN1bGF0ZSB0aGUgcmVzdCBsZW5ndGggZm9yIHRyYW5zZmVyaW5nICovCisJLyogY2FsY3VsYXRlIHRoZSByZXN0IGxlbmd0aCBmb3IgdHJhbnNmZXJyaW5nICovCiAJcmVzdGxlbiA9IHNlbnRsZW4gLSBzX3NhY2tsZW47CiAKIAkvKiB1cGRhdGUgYWRqdXN0aW5nIGN1cnJlbnQgU0cgdGFibGUgZW50cnkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9uc3AzMi5oIGIvZHJpdmVycy9zY3NpL25zcDMyLmgKaW5kZXggOTU2NWFjZi4uYzAyMjE4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL25zcDMyLmgKKysrIGIvZHJpdmVycy9zY3NpL25zcDMyLmgKQEAgLTUwNyw3ICs1MDcsNyBAQAogLyoKICAqIFNDU0kgVEFSR0VUL0xVTiBkZWZpbml0aW9uCiAgKi8KLSNkZWZpbmUgTlNQMzJfSE9TVF9TQ1NJSUQgICAgNyAgLyogU0NTSSBpbml0aWF0b3IgaXMgZXZlcnl0aW1lIGRlZmluZWQgYXMgNyAqLworI2RlZmluZSBOU1AzMl9IT1NUX1NDU0lJRCAgICA3ICAvKiBTQ1NJIGluaXRpYXRvciBpcyBldmVyeSB0aW1lIGRlZmluZWQgYXMgNyAqLwogI2RlZmluZSBNQVhfVEFSR0VUCSAgICAgOAogI2RlZmluZSBNQVhfTFVOCQkgICAgIDgJLyogWFhYOiBJbiBTUEkzLCBtYXggbnVtYmVyIG9mIExVTiBpcyA2NC4gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL29zc3QuYyBiL2RyaXZlcnMvc2NzaS9vc3N0LmMKaW5kZXggNTIxZTIxOC4uNThmNWJlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL29zc3QuYworKysgYi9kcml2ZXJzL3Njc2kvb3NzdC5jCkBAIC0xMzY2LDcgKzEzNjYsNyBAQAogLyogVGhlIHZhbHVlcyBiZWxvdyBhcmUgYmFzZWQgb24gdGhlIE9uU3RyZWFtIGZyYW1lIHBheWxvYWQgc2l6ZSBvZiAzMksgPT0gMioqMTUsCiAgKiB0aGF0IGlzLCBPU1NUX0ZSQU1FX1NISUZUICsgT1NTVF9TRUNUT1JfU0hJRlQgbXVzdCBiZSAxNS4gV2l0aCBhIG1pbmltdW0gYmxvY2sKICAqIHNpemUgb2YgNTEyIGJ5dGVzLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gcmVzb2x2ZSAzMksvNTEyID09IDY0ID09IDIqKjYgcG9zaXRpb25zCi0gKiBpbnNpZGUgZWFjaCBmcmFtZS4gRmluYWx5LCBPU1NUX1NFQ1RPUl9NQVNLID09IDIqKk9TU1RfRlJBTUVfU0hJRlQgLSAxLgorICogaW5zaWRlIGVhY2ggZnJhbWUuIEZpbmFsbHksIE9TU1RfU0VDVE9SX01BU0sgPT0gMioqT1NTVF9GUkFNRV9TSElGVCAtIDEuCiAgKi8KICNkZWZpbmUgT1NTVF9GUkFNRV9TSElGVCAgNgogI2RlZmluZSBPU1NUX1NFQ1RPUl9TSElGVCA5CkBAIC0zMTMxLDcgKzMxMzEsNyBAQAogCQl9CiAjaWYgREVCVUcKIAkJaWYgKGRlYnVnZ2luZykKLQkJCXByaW50ayhPU1NUX0RFQl9NU0cgIiVzOkQ6IEZsdXNoaW5nICVkIGJ5dGVzLCBUcmFuc2ZlcmluZyAlZCBieXRlcyBpbiAlZCBsYmxvY2tzLlxuIiwKKwkJCXByaW50ayhPU1NUX0RFQl9NU0cgIiVzOkQ6IEZsdXNoaW5nICVkIGJ5dGVzLCBUcmFuc2ZlcnJpbmcgJWQgYnl0ZXMgaW4gJWQgbGJsb2Nrcy5cbiIsCiAJCQkgIAkJCSBuYW1lLCBvZmZzZXQsIHRyYW5zZmVyLCBibGtzKTsKICNlbmRpZgogCkBAIC0zODExLDcgKzM4MTEsNyBAQAogCiAJCQlpZiAodHJhbnNmZXIgPT0gMCkgewogCQkJCXByaW50ayhLRVJOX1dBUk5JTkcKLQkJCQkgICIlczpXOiBOb3RoaW5nIGNhbiBiZSB0cmFuc2ZlcmVkLCByZXF1ZXN0ZWQgJVpkLCB0YXBlIGJsb2NrIHNpemUgKCVkJWMpLlxuIiwKKwkJCQkgICIlczpXOiBOb3RoaW5nIGNhbiBiZSB0cmFuc2ZlcnJlZCwgcmVxdWVzdGVkICVaZCwgdGFwZSBibG9jayBzaXplICglZCVjKS5cbiIsCiAJCQkgICAJCW5hbWUsIGNvdW50LCBTVHAtPmJsb2NrX3NpemUgPCAxMDI0PwogCQkJCQlTVHAtPmJsb2NrX3NpemU6U1RwLT5ibG9ja19zaXplLzEwMjQsCiAJCQkJICAgICAgIAlTVHAtPmJsb2NrX3NpemU8MTAyND8nYic6J2snKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9vc3N0LmggYi9kcml2ZXJzL3Njc2kvb3NzdC5oCmluZGV4IDExZDI2YzUuLmI0ZmVhOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9vc3N0LmgKKysrIGIvZHJpdmVycy9zY3NpL29zc3QuaApAQCAtNDEzLDcgKzQxMyw3IEBACiAgKiBBVVgKICAqLwogdHlwZWRlZiBzdHJ1Y3Qgb3NfYXV4X3MgewotICAgICAgICBfX2JlMzIgICAgICAgICAgZm9ybWF0X2lkOyAgICAgICAgICAgICAgLyogaGFyZHdhcmUgY29tcGFiaWxpdHkgQVVYIGlzIGJhc2VkIG9uICovCisgICAgICAgIF9fYmUzMiAgICAgICAgICBmb3JtYXRfaWQ7ICAgICAgICAgICAgICAvKiBoYXJkd2FyZSBjb21wYXRpYmlsaXR5IEFVWCBpcyBiYXNlZCBvbiAqLwogICAgICAgICBjaGFyICAgICAgICAgICAgYXBwbGljYXRpb25fc2lnWzRdOyAgICAgLyogZHJpdmVyIHVzZWQgdG8gd3JpdGUgdGhpcyBtZWRpYSAqLwogICAgICAgICBfX2JlMzIgICAgICAgICAgaGR3cjsgICAgICAgICAgICAgICAgICAgLyogcmVzZXJ2ZWQgKi8KICAgICAgICAgX19iZTMyICAgICAgICAgIHVwZGF0ZV9mcmFtZV9jbnRyOyAgICAgIC8qIGZvciBjb25maWd1cmF0aW9uIGZyYW1lICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcGNtY2lhL25zcF9jcy5jIGIvZHJpdmVycy9zY3NpL3BjbWNpYS9uc3BfY3MuYwppbmRleCBiZTNmMzNkLi41NGJkZjZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcGNtY2lhL25zcF9jcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9wY21jaWEvbnNwX2NzLmMKQEAgLTc0Miw3ICs3NDIsNyBAQAogCiAJCXJlcyA9IG5zcF9maWZvX2NvdW50KFNDcG50KSAtIG9jb3VudDsKIAkJLy9uc3BfZGJnKE5TUF9ERUJVR19EQVRBX0lPLCAicHRyPTB4JXAgdGhpcz0weCV4IG9jb3VudD0weCV4IHJlcz0weCV4IiwgU0NwbnQtPlNDcC5wdHIsIFNDcG50LT5TQ3AudGhpc19yZXNpZHVhbCwgb2NvdW50LCByZXMpOwotCQlpZiAocmVzID09IDApIHsgLyogaWYgc29tZSBkYXRhIGF2aWxhYmxlID8gKi8KKwkJaWYgKHJlcyA9PSAwKSB7IC8qIGlmIHNvbWUgZGF0YSBhdmFpbGFibGUgPyAqLwogCQkJaWYgKHN0YXQgPT0gQlVTUEhBU0VfREFUQV9JTikgeyAvKiBwaGFzZSBjaGFuZ2VkPyAqLwogCQkJCS8vbnNwX2RiZyhOU1BfREVCVUdfREFUQV9JTywgIiB3YWl0IGZvciBkYXRhIHRoaXM9JWQiLCBTQ3BudC0+U0NwLnRoaXNfcmVzaWR1YWwpOwogCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYwppbmRleCAxOGI2YzU1Li44YjdkYjFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYworKysgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuYwpAQCAtMzM5LDcgKzMzOSw3IEBACiAKIC8qKgogICogYmFyNF9zaGlmdCAtIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBzaGlmdCBCQVIgYmFzZSBhZGRyZXNzCi0gKiBAcG04MDAxX2hhIDogb3VyIGhiYSBjYXJkIGluZm9tYXRpb24KKyAqIEBwbTgwMDFfaGEgOiBvdXIgaGJhIGNhcmQgaW5mb3JtYXRpb24KICAqIEBzaGlmdFZhbHVlIDogc2hpZnRpbmcgdmFsdWUgaW4gbWVtb3J5IGJhci4KICAqLwogc3RhdGljIGludCBiYXI0X3NoaWZ0KHN0cnVjdCBwbTgwMDFfaGJhX2luZm8gKnBtODAwMV9oYSwgdTMyIHNoaWZ0VmFsdWUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuaCBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5oCmluZGV4IDgzM2E1MjAuLjkwOTEzMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5oCisrKyBiL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5oCkBAIC0yMDksNyArMjA5LDcgQEAKIAogLyoKICAqIGJyaWVmIHRoZSBkYXRhIHN0cnVjdHVyZSBvZiBTQVRBIENvbXBsZXRpb24gUmVzcG9uc2UKLSAqIHVzZSB0byBkaXNjcmliZSB0aGUgc2F0YSB0YXNrIHJlc3BvbnNlICg2NCBieXRlcykKKyAqIHVzZSB0byBkZXNjcmliZSB0aGUgc2F0YSB0YXNrIHJlc3BvbnNlICg2NCBieXRlcykKICAqLwogc3RydWN0IHNhdGFfY29tcGxldGlvbl9yZXNwIHsKIAlfX2xlMzIJdGFnOwpAQCAtOTUxLDcgKzk1MSw3IEBACiAjZGVmaW5lIFBDSUVfRVZFTlRfSU5URVJSVVBUCQkweDAwMzA0NAogI2RlZmluZSBQQ0lFX0VSUk9SX0lOVEVSUlVQVF9FTkFCTEUJMHgwMDMwNDgKICNkZWZpbmUgUENJRV9FUlJPUl9JTlRFUlJVUFQJCTB4MDAzMDRDCi0vKiBzaWduYXR1cmUgZGVmaW50aW9uIGZvciBob3N0IHNjcmF0Y2ggcGFkMCByZWdpc3RlciAqLworLyogc2lnbmF0dXJlIGRlZmluaXRpb24gZm9yIGhvc3Qgc2NyYXRjaCBwYWQwIHJlZ2lzdGVyICovCiAjZGVmaW5lIFNQQ19TT0ZUX1JFU0VUX1NJR05BVFVSRQkweDI1MmFjYmNkCiAvKiBTaWduYXR1cmUgZm9yIFNvZnQgUmVzZXQgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmggYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaAppbmRleCBiZGI2YjI3Li5hYTA1ZTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaAorKysgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9zYXMuaApAQCAtNDQ1LDcgKzQ0NSw3IEBACiBzdHJ1Y3QgZndfY29udHJvbF9leCB7CiAJc3RydWN0IGZ3X2NvbnRyb2xfaW5mbyAqZndfY29udHJvbDsKIAl2b2lkCQkJKmJ1ZmZlcjsvKiBrZWVwIGJ1ZmZlciBwb2ludGVyIHRvIGJlCi0JZnJlZWQgd2hlbiB0aGUgcmVzcG9uY2UgY29tZXMqLworCWZyZWVkIHdoZW4gdGhlIHJlc3BvbnNlIGNvbWVzKi8KIAl2b2lkCQkJKnZpcnRBZGRyOy8qIGtlZXAgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBkYXRhICovCiAJdm9pZAkJCSp1c3JBZGRyOy8qIGtlZXAgdmlydHVhbCBhZGRyZXNzIG9mIHRoZQogCXVzZXIgZGF0YSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtY3JhaWQuYyBiL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmMKaW5kZXggYmNmODU4ZS4uOTZkNWFkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BtY3JhaWQuYworKysgYi9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jCkBAIC0yMTMsNyArMjEzLDcgQEAKICAqIHBtY3JhaWRfc2xhdmVfY29uZmlndXJlIC0gQ29uZmlndXJlcyBhIFNDU0kgZGV2aWNlCiAgKiBAc2NzaV9kZXY6IHNjc2kgZGV2aWNlIHN0cnVjdAogICoKLSAqIFRoaXMgZnVjbnRpb24gaXMgZXhlY3V0ZWQgYnkgU0NTSSBtaWQgbGF5ZXIganVzdCBhZnRlciBhIGRldmljZSBpcyBmaXJzdAorICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBieSBTQ1NJIG1pZCBsYXllciBqdXN0IGFmdGVyIGEgZGV2aWNlIGlzIGZpcnN0CiAgKiBzY2FubmVkIChpLmUuIGl0IGhhcyByZXNwb25kZWQgdG8gYW4gSU5RVUlSWSkuIEZvciBWU0VUIHJlc291cmNlcywgdGhlCiAgKiB0aW1lb3V0IHZhbHVlIChkZWZhdWx0IDMwcykgd2lsbCBiZSBvdmVyLXdyaXR0ZW4gdG8gYSBoaWdoZXIgdmFsdWUgKDYwcykKICAqIGFuZCBtYXhfc2VjdG9ycyB2YWx1ZSB3aWxsIGJlIG92ZXItd3JpdHRlbiB0byA1MTIuIEl0IGFsc28gc2V0cyBxdWV1ZSBkZXB0aApAQCAtMjEyMiw3ICsyMTIyLDcgQEAKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGV4ZWN1dGVzIG1vc3Qgb2YgdGhlIHN0ZXBzIHJlcXVpcmVkIGZvciBJT0EgcmVzZXQuIFRoaXMgZ2V0cwogICogY2FsbGVkIGJ5IHVzZXIgdGhyZWFkcyAobW9kcHJvYmUvaW5zbW9kL3JtbW9kKSB0aW1lciwgdGFza2xldCBhbmQgbWlkbGF5ZXIncwotICogJ2VoXycgdGhyZWFkLiBBY2Nlc3MgdG8gdmFyaWFibGVzIHVzZWQgZm9yIGNvbnRyb2xpbmcgdGhlIHJlc2V0IHNlcXVlbmNlIGlzCisgKiAnZWhfJyB0aHJlYWQuIEFjY2VzcyB0byB2YXJpYWJsZXMgdXNlZCBmb3IgY29udHJvbGxpbmcgdGhlIHJlc2V0IHNlcXVlbmNlIGlzCiAgKiBzeW5jaHJvbml6ZWQgdXNpbmcgaG9zdCBsb2NrLiBWYXJpb3VzIGZ1bmN0aW9ucyBjYWxsZWQgZHVyaW5nIHJlc2V0IHByb2Nlc3MKICAqIHdvdWxkIG1ha2UgdXNlIG9mIGEgc2luZ2xlIGNvbW1hbmQgYmxvY2ssIHBvaW50ZXIgdG8gd2hpY2ggaXMgYWxzbyBzdG9yZWQgaW4KICAqIGFkYXB0ZXIgaW5zdGFuY2Ugc3RydWN0dXJlLgpAQCAtMjk5NCw3ICsyOTk0LDcgQEAKIAogCS8qIElmIHRoZSBhYm9ydCB0YXNrIGlzIG5vdCB0aW1lZCBvdXQgd2Ugd2lsbCBnZXQgYSBHb29kIGNvbXBsZXRpb24KIAkgKiBhcyBzZW5zZV9rZXksIG90aGVyd2lzZSB3ZSBtYXkgZ2V0IG9uZSB0aGUgZm9sbG93aW5nIHJlc3BvbnNlcwotCSAqIGR1ZSB0byBzdWJzcXVlbnQgYnVzIHJlc2V0IG9yIGRldmljZSByZXNldC4gSW4gY2FzZSBJT0FTQyBpcworCSAqIGR1ZSB0byBzdWJzZXF1ZW50IGJ1cyByZXNldCBvciBkZXZpY2UgcmVzZXQuIEluIGNhc2UgSU9BU0MgaXMKIAkgKiBOUl9TWU5DX1JFUVVJUkVELCBzZXQgc3luY19yZXFkIGZsYWcgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHJlc291cmNlCiAJICovCiAJaWYgKGlvYXNjID09IFBNQ1JBSURfSU9BU0NfVUFfQlVTX1dBU19SRVNFVCB8fApAQCAtMzkzMyw3ICszOTMzLDcgQEAKIAogCQkJLyogaWYgYWJvcnQgdGFzayBjb3VsZG4ndCBmaW5kIHRoZSBjb21tYW5kIGkuZSBpdCBnb3QKIAkJCSAqIGNvbXBsZXRlZCBwcmlvciB0byBhYm9ydGluZywgcmV0dXJuIGdvb2QgY29tcGxldGlvbi4KLQkJCSAqIGlmIGNvbW1hbmQgZ290IGFib3J0ZWQgc3VjY2VzZnVsbHkgb3IgdGhlcmUgd2FzIElPQQorCQkJICogaWYgY29tbWFuZCBnb3QgYWJvcnRlZCBzdWNjZXNzZnVsbHkgb3IgdGhlcmUgd2FzIElPQQogCQkJICogcmVzZXQgZHVlIHRvIGFib3J0IHRhc2sgaXRzZWxmIGdldHRpbmcgdGltZWRvdXQgdGhlbgogCQkJICogcmV0dXJuIC1FVElNRURPVVQKIAkJCSAqLwpAQCAtNTkzMiw3ICs1OTMyLDcgQEAKIAkgKiBIb3dldmVyLCBmaXJtd2FyZSBzdXBwb3J0cyA2NC1iaXQgc3RyZWFtaW5nIERNQSBidWZmZXJzLCB3aGVyZWFzCiAJICogY29oZXJlbnQgYnVmZmVycyBhcmUgdG8gYmUgMzItYml0LiBTaW5jZSBwY2lfYWxsb2NfY29uc2lzdGVudCBhbHdheXMKIAkgKiByZXR1cm5zIG1lbW9yeSB3aXRoaW4gNEdCIChpZiBub3QsIGNoYW5nZSB0aGlzIGxvZ2ljKSwgY29oZXJlbnQKLQkgKiBidWZmZXJzIGFyZSB3aXRoaW4gZmlybXdhcmUgYWNjZXB0aWJsZSBhZGRyZXNzIHJhbmdlcy4KKwkgKiBidWZmZXJzIGFyZSB3aXRoaW4gZmlybXdhcmUgYWNjZXB0YWJsZSBhZGRyZXNzIHJhbmdlcy4KIAkgKi8KIAlpZiAoKHNpemVvZihkbWFfYWRkcl90KSA9PSA0KSB8fAogCSAgICBwY2lfc2V0X2RtYV9tYXNrKHBkZXYsIERNQV9CSVRfTUFTSyg2NCkpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtY3JhaWQuaCBiL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmgKaW5kZXggNGRiMjEwZC4uMzRlNGM5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BtY3JhaWQuaAorKysgYi9kcml2ZXJzL3Njc2kvcG1jcmFpZC5oCkBAIC0xMDI0LDcgKzEwMjQsNyBAQAogCiAKIC8qCi0gKiBwbWNyYWlkX2lvY3RsX2hlYWRlciAtIGRlZmluaXRpb24gb2YgaGVhZGVyIHN0cnVjdHVyZSB0aGF0IHByZWNlZWRzIGFsbCB0aGUKKyAqIHBtY3JhaWRfaW9jdGxfaGVhZGVyIC0gZGVmaW5pdGlvbiBvZiBoZWFkZXIgc3RydWN0dXJlIHRoYXQgcHJlY2VkZXMgYWxsIHRoZQogICogYnVmZmVycyBnaXZlbiBhcyBpb2N0bCBhcmd1bWVudHMuCiAgKgogICogLnNpZ25hdHVyZSAgICAgICAgICAgOiBhbHdheXMgQVNDSUkgc3RyaW5nLCAiUE1DUkFJRCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGExMjgwLmMgYi9kcml2ZXJzL3Njc2kvcWxhMTI4MC5jCmluZGV4IDVkZWM2ODQuLjhiYTU3NDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGExMjgwLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTEyODAuYwpAQCAtNzgsNyArNzgsNyBAQAogCS0gQ2xlYW4gdXAgdmNoYW4gaGFuZGxpbmcKICAgICBSZXYgIDMuMjMuMzMgSnVseSAzLCAyMDAzLCBKZXMgU29yZW5zZW4KIAktIERvbid0IGRlZmluZSByZWdpc3RlciBhY2Nlc3MgbWFjcm9zIGJlZm9yZSBkZWZpbmUgZGV0ZXJtaW5pbmcgTU1JTy4KLQkgIFRoaXMganVzdCBoYXBwZW5kIHRvIHdvcmsgb3V0IG9uIGlhNjQgYnV0IG5vdCBlbHNld2hlcmUuCisJICBUaGlzIGp1c3QgaGFwcGVuZWQgdG8gd29yayBvdXQgb24gaWE2NCBidXQgbm90IGVsc2V3aGVyZS4KIAktIERvbid0IHRyeSBhbmQgcmVhZCBmcm9tIHRoZSBjYXJkIHdoaWxlIGl0IGlzIGluIHJlc2V0IGFzCiAJICBpdCB3b24ndCByZXNwb25kIGFuZCBjYXVzZXMgYW4gTUNBCiAgICAgUmV2ICAzLjIzLjMyIEp1bmUgMjMsIDIwMDMsIEplcyBTb3JlbnNlbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oCmluZGV4IDZjNTFjMGEuLmVlMjAzNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kZWYuaAorKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZGVmLmgKQEAgLTIwODYsNyArMjA4Niw3IEBACiB9OwogCiAvKgotICogU05TIGNvbW1hbmQgc3RydWN0dXJlcyAtLSBmb3IgMjIwMCBjb21wYXRhYmlsaXR5LgorICogU05TIGNvbW1hbmQgc3RydWN0dXJlcyAtLSBmb3IgMjIwMCBjb21wYXRpYmlsaXR5LgogICovCiAjZGVmaW5lCVJGVF9JRF9TTlNfU0NNRF9MRU4JMjIKICNkZWZpbmUJUkZUX0lEX1NOU19DTURfU0laRQk2MApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2Z3LmggYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaAppbmRleCA2MzFmZWZjLi5mNWJhMDljIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaAorKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZncuaApAQCAtNTM5LDcgKzUzOSw3IEBACiAJICogSWYgRElGIEVycm9yIGlzIHNldCBpbiBjb21wX3N0YXR1cywgdGhlc2UgYWRkaXRpb25hbCBmaWVsZHMgYXJlCiAJICogZGVmaW5lZDoKIAkgKiAmZGF0YVsxMF0gOiB1aW50OF90IHJlcG9ydF9ydW50X2JnWzJdOwktIGNvbXB1dGVkIGd1YXJkCi0JICogJmRhdGFbMTJdIDogdWludDhfdCBhY3R1YWxfZGlmWzhdOwkJLSBESUYgRGF0YSByZWNpZXZlZAorCSAqICZkYXRhWzEyXSA6IHVpbnQ4X3QgYWN0dWFsX2RpZls4XTsJCS0gRElGIERhdGEgcmVjZWl2ZWQKIAkgKiAmZGF0YVsyMF0gOiB1aW50OF90IGV4cGVjdGVkX2RpZls4XTsJCS0gRElGIERhdGEgY29tcHV0ZWQKIAkqLwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYwppbmRleCBkMTdlZDlhLi43MTI1MThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaXNyLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lzci5jCkBAIC00MTQsNyArNDE0LDcgQEAKIAkJCQkgICAgIm1hcmtlZCBPRkZMSU5FIVxuIik7CiAJCQkJdmhhLT5mbGFncy5vbmxpbmUgPSAwOwogCQkJfSBlbHNlIHsKLQkJCQkvKiBDaGVjayB0byBzZWUgaWYgTVBJIHRpbWVvdXQgb2NjdXJlZCAqLworCQkJCS8qIENoZWNrIHRvIHNlZSBpZiBNUEkgdGltZW91dCBvY2N1cnJlZCAqLwogCQkJCWlmICgobWJ4ICYgTUJYXzMpICYmIChoYS0+ZmxhZ3MucG9ydDApKQogCQkJCQlzZXRfYml0KE1QSV9SRVNFVF9ORUVERUQsCiAJCQkJCSAgICAmdmhhLT5kcGNfZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX21ieC5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX21ieC5jCmluZGV4IDdhN2MwZWMuLjM0ODkzMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9tYnguYworKysgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbWJ4LmMKQEAgLTMwMyw3ICszMDMsNyBAQAogCQkJICAgICF0ZXN0X2JpdChJU1BfQUJPUlRfUkVUUlksICZ2aGEtPmRwY19mbGFncykpIHsKIAogCQkJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwKLQkJCQkgICAgIk1haWxib3ggY29tbWFuZCB0aW1lb3V0IG9jY3VyZWQuICIKKwkJCQkgICAgIk1haWxib3ggY29tbWFuZCB0aW1lb3V0IG9jY3VycmVkLiAiCiAJCQkJICAgICJTY2hlZHVsaW5nIElTUCAiICJhYm9ydC4gZWVoX2J1c3k6IDB4JXhcbiIsCiAJCQkJICAgIGhhLT5mbGFncy5lZWhfYnVzeSk7CiAJCQkJc2V0X2JpdChJU1BfQUJPUlRfTkVFREVELCAmdmhhLT5kcGNfZmxhZ3MpOwpAQCAtMzIxLDcgKzMyMSw3IEBACiAJCQkgICAgIXRlc3RfYml0KElTUF9BQk9SVF9SRVRSWSwgJnZoYS0+ZHBjX2ZsYWdzKSkgewogCiAJCQkJcWxhX3ByaW50ayhLRVJOX1dBUk5JTkcsIGhhLAotCQkJCSAgICAiTWFpbGJveCBjb21tYW5kIHRpbWVvdXQgb2NjdXJlZC4gIgorCQkJCSAgICAiTWFpbGJveCBjb21tYW5kIHRpbWVvdXQgb2NjdXJyZWQuICIKIAkJCQkgICAgIklzc3VpbmcgSVNQIGFib3J0LlxuIik7CiAKIAkJCQlzZXRfYml0KEFCT1JUX0lTUF9BQ1RJVkUsICZ2aGEtPmRwY19mbGFncyk7CkBAIC0zNzg5LDcgKzM3ODksNyBAQAogCW1jcC0+bWJbMjBdID0gTFNXKE1TRChtcmVxLT5zZW5kX2RtYSkpOwogCW1jcC0+bWJbMjFdID0gTVNXKE1TRChtcmVxLT5zZW5kX2RtYSkpOwogCi0JLyogcmVjaWV2ZSBkYXRhIGFkZHJlc3MgKi8KKwkvKiByZWNlaXZlIGRhdGEgYWRkcmVzcyAqLwogCW1jcC0+bWJbMTZdID0gTFNXKG1yZXEtPnJjdl9kbWEpOwogCW1jcC0+bWJbMTddID0gTVNXKG1yZXEtPnJjdl9kbWEpOwogCW1jcC0+bWJbNl0gPSBMU1coTVNEKG1yZXEtPnJjdl9kbWEpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9ueC5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX254LmMKaW5kZXggNzZlYzg3Ni4uNDU1ZmUxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX254LmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX254LmMKQEAgLTI1OTgsNyArMjU5OCw3IEBACiAgKiBxbGE4Mnh4X3N0YXJ0X3Njc2koKSAtIFNlbmQgYSBTQ1NJIGNvbW1hbmQgdG8gdGhlIElTUAogICogQHNwOiBjb21tYW5kIHRvIHNlbmQgdG8gdGhlIElTUAogICoKLSAqIFJldHVybnMgbm9uLXplcm8gaWYgYSBmYWlsdXJlIG9jY3VyZWQsIGVsc2UgemVyby4KKyAqIFJldHVybnMgbm9uLXplcm8gaWYgYSBmYWlsdXJlIG9jY3VycmVkLCBlbHNlIHplcm8uCiAgKi8KIGludAogcWxhODJ4eF9zdGFydF9zY3NpKHNyYl90ICpzcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMKaW5kZXggNzVhOTY2Yy4uYWE3NzQ3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX29zLmMKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAKIGVoX2J1c19yZXNldF9kb25lOgogCXFsYV9wcmludGsoS0VSTl9JTkZPLCB2aGEtPmh3LCAiJXM6IHJlc2V0ICVzXG4iLCBfX2Z1bmNfXywKLQkgICAgKHJldCA9PSBGQUlMRUQpID8gImZhaWxlZCIgOiAic3VjY2VkZWQiKTsKKwkgICAgKHJldCA9PSBGQUlMRUQpID8gImZhaWxlZCIgOiAic3VjY2VlZGVkIik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTEzNiw3ICsxMTM2LDcgQEAKIAogZWhfaG9zdF9yZXNldF9sb2NrOgogCXFsYV9wcmludGsoS0VSTl9JTkZPLCBoYSwgIiVzOiByZXNldCAlc1xuIiwgX19mdW5jX18sCi0JICAgIChyZXQgPT0gRkFJTEVEKSA/ICJmYWlsZWQiIDogInN1Y2NlZGVkIik7CisJICAgIChyZXQgPT0gRkFJTEVEKSA/ICJmYWlsZWQiIDogInN1Y2NlZWRlZCIpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTM5MDIsNyArMzkwMiw3IEBACiAJCQljb250aW51ZTsKIAkJaWYgKGF0b21pY19yZWFkKCZvdGhlcl9wZGV2LT5lbmFibGVfY250KSkgewogCQkJREVCVUcxNyhxbGFfcHJpbnRrKEtFUk5fSU5GTywgaGEsCi0JCQkgICAgIkZvdW5kIFBDSSBmdW5jIGF2YWlsYWJlIGFuZCBlbmFibGVkIGF0IDB4JXhcbiIsCisJCQkgICAgIkZvdW5kIFBDSSBmdW5jIGF2YWlsYWJsZSBhbmQgZW5hYmxlZCBhdCAweCV4XG4iLAogCQkJICAgIGZuKSk7CiAJCQlwY2lfZGV2X3B1dChvdGhlcl9wZGV2KTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oCmluZGV4IGMxZjhkMWIuLjQ3NTc4NzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9kZWYuaAorKysgYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfZGVmLmgKQEAgLTE4Miw3ICsxODIsNyBAQAogCXVpbnQxNl90IGZsYWdzOwkJLyogKDEpIFN0YXR1cyBmbGFncy4gKi8KIAogI2RlZmluZSBTUkJfRE1BX1ZBTElECQlCSVRfMwkvKiBETUEgQnVmZmVyIG1hcHBlZC4gKi8KLSNkZWZpbmUgU1JCX0dPVF9TRU5TRQkJQklUXzQJLyogc2Vuc2UgZGF0YSByZWNpZXZlZC4gKi8KKyNkZWZpbmUgU1JCX0dPVF9TRU5TRQkJQklUXzQJLyogc2Vuc2UgZGF0YSByZWNlaXZlZC4gKi8KIAl1aW50OF90IHN0YXRlOwkJLyogKDEpIFN0YXR1cyBmbGFncy4gKi8KIAogI2RlZmluZSBTUkJfTk9fUVVFVUVfU1RBVEUJIDAJLyogUmVxdWVzdCBpcyBpbiBiZXR3ZWVuIHN0YXRlcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2luaXQuYyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pbml0LmMKaW5kZXggYmJiMmU5MC4uNDhlMjI0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2luaXQuYworKysgYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfaW5pdC5jCkBAIC0xMzM4LDcgKzEzMzgsNyBAQAogCX0KIAogCURFQlVHMihwcmludGsoInNjc2klbGQ6IGluaXRpYWxpemUgYWRhcHRlcjogJXNcbiIsIGhhLT5ob3N0X25vLAotCSAgICBzdGF0dXMgPT0gUUxBX0VSUk9SID8gIkZBSUxFRCIgOiAiU1VDQ0VERUQiKSk7CisJICAgIHN0YXR1cyA9PSBRTEFfRVJST1IgPyAiRkFJTEVEIiA6ICJTVUNDRUVERUQiKSk7CiAJcmV0dXJuIHN0YXR1czsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X252cmFtLmggYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfbnZyYW0uaAppbmRleCBiMzgzMWJkMi4uOTQ1Y2MzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X252cmFtLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X252cmFtLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNkZWZpbmUJIEZNOTNDNTZBX0VSQVNFCSAgICAgIDB4MwogI2RlZmluZQkgRk05M0M1NkFfRVJBU0VfQUxMICAgMHgwCiAKLS8qIENvbW1hbmQgRXh0ZW50aW9ucyAqLworLyogQ29tbWFuZCBFeHRlbnNpb25zICovCiAjZGVmaW5lCSBGTTkzQzU2QV9XRU5fRVhUCSAweDMKICNkZWZpbmUJIEZNOTNDNTZBX1dSSVRFX0FMTF9FWFQJIDB4MQogI2RlZmluZQkgRk05M0M1NkFfV0RTX0VYVAkgMHgwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCmluZGV4IGE0YWNiMGQuLjIzMGJhMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCkBAIC0xMjEzLDcgKzEyMTMsNyBAQAogCiAJY2xlYXJfYml0KERQQ19SRVNFVF9BQ1RJVkUsICZoYS0+ZHBjX2ZsYWdzKTsKIAlERUJVRzIocHJpbnRrKCJzY3NpJWxkOiByZWNvdmVyIGFkYXB0ZXI6ICVzXG4iLCBoYS0+aG9zdF9ubywKLQkgICAgc3RhdHVzID09IFFMQV9FUlJPUiA/ICJGQUlMRUQiIDogIlNVQ0NFREVEIikpOworCSAgICBzdGF0dXMgPT0gUUxBX0VSUk9SID8gIkZBSUxFRCIgOiAiU1VDQ0VFREVEIikpOwogCiAJcmV0dXJuIHN0YXR1czsKIH0KQEAgLTIxMTAsNyArMjExMCw3IEBACiAKIAlxbDRfcHJpbnRrKEtFUk5fSU5GTywgaGEsCiAJICAgICJzY3NpJWxkOiVkOiVkOiBBYm9ydCBjb21tYW5kIC0gJXNcbiIsCi0JICAgIGhhLT5ob3N0X25vLCBpZCwgbHVuLCAocmV0ID09IFNVQ0NFU1MpID8gInN1Y2NlZGVkIiA6ICJmYWlsZWQiKTsKKwkgICAgaGEtPmhvc3Rfbm8sIGlkLCBsdW4sIChyZXQgPT0gU1VDQ0VTUykgPyAic3VjY2VlZGVkIiA6ICJmYWlsZWQiKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0yMjc4LDcgKzIyNzgsNyBAQAogCQlyZXR1cm5fc3RhdHVzID0gU1VDQ0VTUzsKIAogCXFsNF9wcmludGsoS0VSTl9JTkZPLCBoYSwgIkhPU1QgUkVTRVQgJXMuXG4iLAotCQkgICByZXR1cm5fc3RhdHVzID09IEZBSUxFRCA/ICJGQUlMRUQiIDogIlNVQ0NFREVEIik7CisJCSAgIHJldHVybl9zdGF0dXMgPT0gRkFJTEVEID8gIkZBSUxFRCIgOiAiU1VDQ0VFREVEIik7CiAKIAlyZXR1cm4gcmV0dXJuX3N0YXR1czsKIH0KQEAgLTI0OTIsNyArMjQ5Miw3IEBACiAJLyogSW5pdGlhbGl6ZSBkZXZpY2Ugb3IgcmVzdW1lIGlmIGluIHN1c3BlbmRlZCBzdGF0ZSAqLwogCXJjID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldik7CiAJaWYgKHJjKSB7Ci0JCXFsNF9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwgInNjc2klbGQ6ICVzOiBDYW50IHJlLWVuYWJsZSAiCisJCXFsNF9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwgInNjc2klbGQ6ICVzOiBDYW4ndCByZS1lbmFibGUgIgogCQkgICAgImRldmljZSBhZnRlciByZXNldFxuIiwgaGEtPmhvc3Rfbm8sIF9fZnVuY19fKTsKIAkJZ290byBleGl0X3Nsb3RfcmVzZXQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2RlYnVnLmMKaW5kZXggZmE1NzU4Yy4uNjg4OGIyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9kZWJ1Zy5jCkBAIC0yNDU0LDcgKzI0NTQsNyBAQAogCQlwcmludGsoS0VSTl9JTkZPICJzY3NpX2RlYnVnOiBzbGF2ZV9kZXN0cm95IDwldSAldSAldSAldT5cbiIsCiAJCSAgICAgICBzZHAtPmhvc3QtPmhvc3Rfbm8sIHNkcC0+Y2hhbm5lbCwgc2RwLT5pZCwgc2RwLT5sdW4pOwogCWlmIChkZXZpcCkgewotCQkvKiBtYWtlIHRoaXMgc2xvdCBhdmFsaWFibGUgZm9yIHJlLXVzZSAqLworCQkvKiBtYWtlIHRoaXMgc2xvdCBhdmFpbGFibGUgZm9yIHJlLXVzZSAqLwogCQlkZXZpcC0+dXNlZCA9IDA7CiAJCXNkcC0+aG9zdGRhdGEgPSBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX25ldGxpbmsuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX25ldGxpbmsuYwppbmRleCBhMmVkMjAxLi4yNmE4YTQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9uZXRsaW5rLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfbmV0bGluay5jCkBAIC00OTksNyArNDk5LDcgQEAKIAkJCQlTQ1NJX05MX0dSUF9DTlQsIHNjc2lfbmxfcmN2X21zZywgTlVMTCwKIAkJCQlUSElTX01PRFVMRSk7CiAJaWYgKCFzY3NpX25sX3NvY2spIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogcmVnaXN0ZXIgb2YgcmVjaWV2ZSBoYW5kbGVyIGZhaWxlZFxuIiwKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogcmVnaXN0ZXIgb2YgcmVjZWl2ZSBoYW5kbGVyIGZhaWxlZFxuIiwKIAkJCQlfX2Z1bmNfXyk7CiAJCW5ldGxpbmtfdW5yZWdpc3Rlcl9ub3RpZmllcigmc2NzaV9uZXRsaW5rX25vdGlmaWVyKTsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdGd0X2xpYi5jIGIvZHJpdmVycy9zY3NpL3Njc2lfdGd0X2xpYi5jCmluZGV4IGY2NzI4MjAuLjhiY2E4YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX3RndF9saWIuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90Z3RfbGliLmMKQEAgLTkzLDcgKzkzLDcgQEAKIAogCS8qCiAJICogVGhlIGJsayBoZWxwZXJzIGFyZSB1c2VkIHRvIHRoZSBSRUFEL1dSSVRFIHJlcXVlc3RzCi0JICogdHJhbnNmZXJpbmcgZGF0YSBmcm9tIGEgaW5pdGlhdG9yIHBvaW50IG9mIHZpZXcuIFNpbmNlCisJICogdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSBhIGluaXRpYXRvciBwb2ludCBvZiB2aWV3LiBTaW5jZQogCSAqIHdlIGFyZSBpbiB0YXJnZXQgbW9kZSB3ZSB3YW50IHRoZSBvcHBvc2l0ZS4KIAkgKi8KIAlycSA9IGJsa19nZXRfcmVxdWVzdChzaG9zdC0+dXNwYWNlX3JlcV9xLCAhd3JpdGUsIGdmcF9tYXNrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKaW5kZXggMjk0MWQyZC4uZmRmM2ZhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKQEAgLTIzNzgsNyArMjM3OCw3IEBACiAgKiBmY19yZW1vdmVfaG9zdCAtIGNhbGxlZCB0byB0ZXJtaW5hdGUgYW55IGZjX3RyYW5zcG9ydC1yZWxhdGVkIGVsZW1lbnRzIGZvciBhIHNjc2kgaG9zdC4KICAqIEBzaG9zdDoJV2hpY2ggJlNjc2lfSG9zdAogICoKLSAqIFRoaXMgcm91dGluZSBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgcHJlY2VlZGluZyB0aGUKKyAqIFRoaXMgcm91dGluZSBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoZQogICogYSBkcml2ZXIncyBjYWxsIHRvIHNjc2lfcmVtb3ZlX2hvc3QoKS4KICAqCiAgKiBXQVJOSU5HOiBBIGRyaXZlciB1dGlsaXppbmcgdGhlIGZjX3RyYW5zcG9ydCwgd2hpY2ggZmFpbHMgdG8gY2FsbApAQCAtMjQ1OCw3ICsyNDU4LDcgQEAKIH0KIAogLyoqCi0gKiBmY19zdGFyZ2V0X2RlbGV0ZSAtIGNhbGxlZCB0byBkZWxldGUgdGhlIHNjc2kgZGVjZW5kZW50cyBvZiBhbiBycG9ydAorICogZmNfc3RhcmdldF9kZWxldGUgLSBjYWxsZWQgdG8gZGVsZXRlIHRoZSBzY3NpIGRlc2NlbmRhbnRzIG9mIGFuIHJwb3J0CiAgKiBAd29yazoJcmVtb3RlIHBvcnQgdG8gYmUgb3BlcmF0ZWQgb24uCiAgKgogICogRGVsZXRlcyB0YXJnZXQgYW5kIGFsbCBzZGV2cy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggYjYxZWJlYy4uYmQwODA2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMKKysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTEwNTUsNyArMTA1NSw3IEBACiAgKglAYXJnOiB0aGlzIGlzIHRoaXJkIGFyZ3VtZW50IGdpdmVuIHRvIGlvY3RsKDIpIHN5c3RlbSBjYWxsLgogICoJT2Z0ZW4gY29udGFpbnMgYSBwb2ludGVyLgogICoKLSAqCVJldHVybnMgMCBpZiBzdWNjZXNzZnVsIChzb21lIGlvY3RscyByZXR1cm4gcG9zdGl2ZSBudW1iZXJzIG9uCisgKglSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCAoc29tZSBpb2N0bHMgcmV0dXJuIHBvc2l0aXZlIG51bWJlcnMgb24KICAqCXN1Y2Nlc3MgYXMgd2VsbCkuIFJldHVybnMgYSBuZWdhdGVkIGVycm5vIHZhbHVlIGluIGNhc2Ugb2YgZXJyb3IuCiAgKgogICoJTm90ZTogbW9zdCBpb2N0bHMgYXJlIGZvcndhcmQgb250byB0aGUgYmxvY2sgc3Vic3lzdGVtIG9yIGZ1cnRoZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zci5jIGIvZHJpdmVycy9zY3NpL3NyLmMKaW5kZXggYWVmYWRjNi4uOTUwMTljNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NyLmMKKysrIGIvZHJpdmVycy9zY3NpL3NyLmMKQEAgLTU2Nyw3ICs1NjcsNyBAQAogCS5yZXZhbGlkYXRlX2Rpc2sgPSBzcl9ibG9ja19yZXZhbGlkYXRlX2Rpc2ssCiAJLyogCiAJICogTm8gY29tcGF0X2lvY3RsIGZvciBub3cgYmVjYXVzZSBzcl9ibG9ja19pb2N0bCBuZXZlcgotCSAqIHNlZW1zIHRvIHBhc3MgYXJiaXRhcnkgaW9jdGxzIGRvd24gdG8gaG9zdCBkcml2ZXJzLgorCSAqIHNlZW1zIHRvIHBhc3MgYXJiaXRyYXJ5IGlvY3RscyBkb3duIHRvIGhvc3QgZHJpdmVycy4KIAkgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zdW4zX05DUjUzODAuYyBiL2RyaXZlcnMvc2NzaS9zdW4zX05DUjUzODAuYwppbmRleCA0ZjBlNTQ4Li4wN2VhZWYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3VuM19OQ1I1MzgwLmMKKysrIGIvZHJpdmVycy9zY3NpL3N1bjNfTkNSNTM4MC5jCkBAIC00NjcsNyArNDY3LDcgQEAKICAqCiAgKiBQYXJhbWV0ZXJzOiBzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQKICAqICAgIFRoZSBjb21tYW5kIHRvIHdvcmsgb24uIFRoZSBmaXJzdCBzY2F0dGVyIGJ1ZmZlcidzIGRhdGEgYXJlCi0gKiAgICBhc3N1bWVkIHRvIGJlIGFscmVhZHkgdHJhbnNmZXJlZCBpbnRvIHB0ci90aGlzX3Jlc2lkdWFsLgorICogICAgYXNzdW1lZCB0byBiZSBhbHJlYWR5IHRyYW5zZmVycmVkIGludG8gcHRyL3RoaXNfcmVzaWR1YWwuCiAgKi8KIAogc3RhdGljIHZvaWQgbWVyZ2VfY29udGlndW91c19idWZmZXJzKHN0cnVjdCBzY3NpX2NtbmQgKmNtZCkKQEAgLTE3MTcsNyArMTcxNyw3IEBACiAgKglieXRlcyB0byB0cmFuc2ZlciwgKipkYXRhIC0gcG9pbnRlciB0byBkYXRhIHBvaW50ZXIuCiAgKiAKICAqIFJldHVybnMgOiAtMSB3aGVuIGRpZmZlcmVudCBwaGFzZSBpcyBlbnRlcmVkIHdpdGhvdXQgdHJhbnNmZXJyaW5nCi0gKgltYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgYXJlIHRyYW5zZmVyZWQgb3IgZXhpdAorICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIGFyZSB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKglpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqIAlBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpAQCAtMTkwNCw3ICsxOTA0LDcgQEAKICAqCWJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqIAogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcmVkIG9yIGV4aXQKKyAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKglpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqIAlBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N5bTUzYzQxNi5jIGIvZHJpdmVycy9zY3NpL3N5bTUzYzQxNi5jCmluZGV4IDE5MDEwN2EuLjAxMmM4NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M0MTYuYworKysgYi9kcml2ZXJzL3Njc2kvc3ltNTNjNDE2LmMKQEAgLTc3NCw3ICs3NzQsNyBAQAogCiAJLyogcHJpbnRrKCJzeW01M2M0MTZfcmVzZXRcbiIpOyAqLwogCWJhc2UgPSBTQ3BudC0+ZGV2aWNlLT5ob3N0LT5pb19wb3J0OwotCS8qIHNlYXJjaCBzY3NpX2lkIC0gZml4bWUsIHdlIHNob3VsZG50IG5lZWQgdG8gaXRlcmF0ZSBmb3IgdGhpcyEgKi8KKwkvKiBzZWFyY2ggc2NzaV9pZCAtIGZpeG1lLCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBpdGVyYXRlIGZvciB0aGlzISAqLwogCWZvcihpID0gMDsgaSA8IGhvc3RfaW5kZXggJiYgc2NzaV9pZCA9PSAtMTsgaSsrKQogCQlpZihob3N0c1tpXS5iYXNlID09IGJhc2UpCiAJCQlzY3NpX2lkID0gaG9zdHNbaV0uc2NzaV9pZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncxLmggYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3MS5oCmluZGV4IDdiMDhkNmMuLjYzOTUyZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncxLmgKKysrIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzEuaApAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAKIAkJUEFERFJfQiAobXNnX3dlaXJkX3NlZW4pLAogCS8qCiAJICogIFdlIGRvbm5vdCBoYW5kbGUgZXh0ZW5kZWQgbWVzc2FnZXMgZnJvbSBTQ1JJUFRTLgotCSAqICBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSBjb3JyZXBvbmRpbmcgdG8gdGhlIAorCSAqICBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSAKIAkgKiAgbWVzc2FnZSBsZW5ndGggYW5kIGNhbGwgdGhlIEMgY29kZS4KIAkgKi8KIAlTQ1JfQ09QWSAoMSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3Mi5oIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzIuaAppbmRleCBhZTFmYjE3Li5jODdkNzI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3Mi5oCisrKyBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncyLmgKQEAgLTEzMjYsNyArMTMyNiw3IEBACiAJCVBBRERSX0IgKG1zZ193ZWlyZF9zZWVuKSwKIAkvKgogCSAqICBXZSBkb25ub3QgaGFuZGxlIGV4dGVuZGVkIG1lc3NhZ2VzIGZyb20gU0NSSVBUUy4KLQkgKiAgUmVhZCB0aGUgYW1vdW50IG9mIGRhdGEgY29ycmVwb25kaW5nIHRvIHRoZSAKKwkgKiAgUmVhZCB0aGUgYW1vdW50IG9mIGRhdGEgY29ycmVzcG9uZGluZyB0byB0aGUgCiAJICogIG1lc3NhZ2UgbGVuZ3RoIGFuZCBjYWxsIHRoZSBDIGNvZGUuCiAJICovCiAJU0NSX1NUT1JFX1JFTCAoc2NyYXRjaGEsIDEpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9oaXBkLmMgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYwppbmRleCAyYzNlODlkLi5kOTJmZTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYworKysgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYwpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAKIAkJfQogCiAJCS8qCi0JCSAqICBUaGUgZGF0YSBpbiB0aGUgZG1hIGZpZm8gaGFzIG5vdCBiZWVuIHRyYW5zZmVyZWQgdG8KKwkJICogIFRoZSBkYXRhIGluIHRoZSBkbWEgZmlmbyBoYXMgbm90IGJlZW4gdHJhbnNmZXJyZWQgdG8KIAkJICogIHRoZSB0YXJnZXQgLT4gYWRkIHRoZSBhbW91bnQgdG8gdGhlIHJlc3QKIAkJICogIGFuZCBjbGVhciB0aGUgZGF0YS4KIAkJICogIENoZWNrIHRoZSBzc3RhdDIgcmVnaXN0ZXIgaW4gY2FzZSBvZiB3aWRlIHRyYW5zZmVyLgpAQCAtNTA5NCw3ICs1MDk0LDcgQEAKIH0KIAogLyoKLSAqICBMdW4gY29udHJvbCBibG9jayBkZWFsbG9jYXRpb24uIFJldHVybnMgdGhlIG51bWJlciBvZiB2YWxpZCByZW1haW5nIExDQnMKKyAqICBMdW4gY29udHJvbCBibG9jayBkZWFsbG9jYXRpb24uIFJldHVybnMgdGhlIG51bWJlciBvZiB2YWxpZCByZW1haW5pbmcgTENCcwogICogIGZvciB0aGUgdGFyZ2V0LgogICovCiBpbnQgc3ltX2ZyZWVfbGNiKHN0cnVjdCBzeW1faGNiICpucCwgdV9jaGFyIHRuLCB1X2NoYXIgbG4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX21hbGxvYy5jIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9tYWxsb2MuYwppbmRleCA4ODNjYWMxLi42ZjlhZjBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX21hbGxvYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fbWFsbG9jLmMKQEAgLTUwLDcgKzUwLDcgQEAKICAqICBmcm9tIHRoZSBTQ1JJUFRTIGNvZGUuIEluIGFkZGl0aW9uLCBjYWNoZSBsaW5lIGFsaWdubWVudCAKICAqICBpcyBndWFyYW50ZWVkIGZvciBwb3dlciBvZiAyIGNhY2hlIGxpbmUgc2l6ZS4KICAqCi0gKiAgVGhpcyBhbGxvY2F0b3IgaGFzIGJlZW4gZGV2ZWxvcHBlZCBmb3IgdGhlIExpbnV4IHN5bTUzYzh4eCAgCisgKiAgVGhpcyBhbGxvY2F0b3IgaGFzIGJlZW4gZGV2ZWxvcGVkIGZvciB0aGUgTGludXggc3ltNTNjOHh4ICAKICAqICBkcml2ZXIsIHNpbmNlIHRoaXMgTy9TIGRvZXMgbm90IHByb3ZpZGUgbmF0dXJhbGx5IGFsaWduZWQgCiAgKiAgYWxsb2NhdGlvbnMuCiAgKiAgSXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgdGhlIGRyaXZlciB0byB1c2UgcHJpdmF0ZSAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmMgYi9kcml2ZXJzL3Njc2kvd2QzM2M5My5jCmluZGV4IDVmNjk3ZTAuLjQ0NjhhZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmMKKysrIGIvZHJpdmVycy9zY3NpL3dkMzNjOTMuYwpAQCAtMTg0Myw3ICsxODQzLDcgQEAKICAqCiAgKiBUaGUgb3JpZ2luYWwgZHJpdmVyIHVzZWQgdG8gcmVseSBvbiBhIGZpeGVkIHN4X3RhYmxlLCBjb250YWluaW5nIHBlcmlvZHMKICAqIGZvciAob25seSkgdGhlIGxvd2VyIGxpbWl0cyBvZiB0aGUgcmVzcGVjdGl2ZSBpbnB1dC1jbG9jay1mcmVxdWVuY3kgcmFuZ2VzCi0gKiAoOC0xMC8xMi0xNS8xNi0yMCBNSHopLiBBbHRob3VnaCBpdCBzZWVtcywgdGhhdCBubyBwcm9ibGVtcyBvY3VycmVkIHdpdGgKKyAqICg4LTEwLzEyLTE1LzE2LTIwIE1IeikuIEFsdGhvdWdoIGl0IHNlZW1zLCB0aGF0IG5vIHByb2JsZW1zIG9jY3VycmVkIHdpdGgKICAqIHRoaXMgc2V0dGluZyBzbyBmYXIsIGl0IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBhZGp1c3QgdGhlIHRyYW5zZmVyIHBlcmlvZHMKICAqIGNsb3NlciB0byB0aGUgcmVhbGx5IGF0dGFjaGVkLCBwb3NzaWJseSAyNSUgaGlnaGVyLCBpbnB1dC1jbG9jaywgc2luY2UKICAqIC0gdGhlIHdkMzNjOTMgbWF5IHJlYWxseSB1c2UgYSBzaWduaWZpY2FudCBzaG9ydGVyIHBlcmlvZCwgdGhhbiBpdCBoYXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS93ZDcwMDAuYyBiL2RyaXZlcnMvc2NzaS93ZDcwMDAuYwppbmRleCBkYjQ1MWFlLi45ZWUwYWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvd2Q3MDAwLmMKKysrIGIvZHJpdmVycy9zY3NpL3dkNzAwMC5jCkBAIC04MzcsNyArODM3LDcgQEAKIAkJfQogCX0KIAotCS8qIFRha2UgdGhlIGxvY2ssIHRoZW4gY2hlY2sgd2UgZGlkbnQgZ2V0IGJlYXRlbiwgaWYgc28gdHJ5IGFnYWluICovCisJLyogVGFrZSB0aGUgbG9jaywgdGhlbiBjaGVjayB3ZSBkaWRuJ3QgZ2V0IGJlYXRlbiwgaWYgc28gdHJ5IGFnYWluICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNjYnBvb2xfbG9jaywgZmxhZ3MpOwogCWlmIChmcmVlc2NicyA8IG5lZWRlZCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2Jwb29sX2xvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2ZpL3NmaV9jb3JlLmMgYi9kcml2ZXJzL3NmaS9zZmlfY29yZS5jCmluZGV4IDA0MTEzZTUuLjFlODI0ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2ZpL3NmaV9jb3JlLmMKKysrIGIvZHJpdmVycy9zZmkvc2ZpX2NvcmUuYwpAQCAtNTE1LDcgKzUxNSw3IEBACiB9CiAKIC8qCi0gKiBUaGUgcmVhc29uIHdlIHB1dCBpdCBoZXJlIGJlY2FzdWUgd2UgbmVlZCB3YWl0IHRpbGwgdGhlIC9zeXMvZmlybXdhcmUKKyAqIFRoZSByZWFzb24gd2UgcHV0IGl0IGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHdhaXQgdGlsbCB0aGUgL3N5cy9maXJtd2FyZQogICogaXMgc2V0dXAsIHRoZW4gb3VyIGludGVyZmFjZSBjYW4gYmUgcmVnaXN0ZXJlZCBpbiAvc3lzL2Zpcm13YXJlL3NmaQogICovCiBjb3JlX2luaXRjYWxsKHNmaV9zeXNmc19pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL2FtYmEtcGwwMjIuYyBiL2RyaXZlcnMvc3BpL2FtYmEtcGwwMjIuYwppbmRleCA0YjgzNTdiLi4wOGRlNThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9hbWJhLXBsMDIyLmMKKysrIGIvZHJpdmVycy9zcGkvYW1iYS1wbDAyMi5jCkBAIC02NjEsNyArNjYxLDcgQEAKIHsKIAogCS8qCi0JICogVGhlIEZJRk8gZGVwdGggaXMgZGlmZmVyZW50IGluYmV0d2VlbiBwcmltZWNlbGwgdmFyaWFudHMuCisJICogVGhlIEZJRk8gZGVwdGggaXMgZGlmZmVyZW50IGJldHdlZW4gcHJpbWVjZWxsIHZhcmlhbnRzLgogCSAqIEkgYmVsaWV2ZSBmaWxsaW5nIGluIHRvbyBtdWNoIGluIHRoZSBGSUZPIG1pZ2h0IGNhdXNlCiAJICogZXJyb25zIGluIDhiaXQgd2lkZSB0cmFuc2ZlcnMgb24gQVJNIHZhcmlhbnRzIChqdXN0IDggd29yZHMKIAkgKiBGSUZPLCBtZWFucyBvbmx5IDh4OCA9IDY0IGJpdHMgaW4gRklGTykgYXQgbGVhc3QuCkBAIC03MjIsNyArNzIyLDcgQEAKIAkJICogVGhpcyBpbm5lciByZWFkZXIgdGFrZXMgY2FyZSBvZiB0aGluZ3MgYXBwZWFyaW5nIGluIHRoZSBSWAogCQkgKiBGSUZPIGFzIHdlJ3JlIHRyYW5zbWl0dGluZy4gVGhpcyB3aWxsIGhhcHBlbiBhIGxvdCBzaW5jZSB0aGUKIAkJICogY2xvY2sgc3RhcnRzIHJ1bm5pbmcgd2hlbiB5b3UgcHV0IHRoaW5ncyBpbnRvIHRoZSBUWCBGSUZPLAotCQkgKiBhbmQgdGhlbiB0aGluZ3MgYXJlIGNvbnRpbm91c2x5IGNsb2NrZWQgaW50byB0aGUgUlggRklGTy4KKwkJICogYW5kIHRoZW4gdGhpbmdzIGFyZSBjb250aW51b3VzbHkgY2xvY2tlZCBpbnRvIHRoZSBSWCBGSUZPLgogCQkgKi8KIAkJd2hpbGUgKChyZWFkdyhTU1BfU1IocGwwMjItPnZpcnRiYXNlKSkgJiBTU1BfU1JfTUFTS19STkUpCiAJCSAgICAgICAmJiAocGwwMjItPnJ4IDwgcGwwMjItPnJ4X2VuZCkpIHsKQEAgLTg0Miw3ICs4NDIsNyBAQAogCiAJdW5tYXBfZnJlZV9kbWFfc2NhdHRlcihwbDAyMik7CiAKLQkvKiBVcGRhdGUgdG90YWwgYnl0ZXMgdHJhbnNmZXJlZCAqLworCS8qIFVwZGF0ZSB0b3RhbCBieXRlcyB0cmFuc2ZlcnJlZCAqLwogCW1zZy0+YWN0dWFsX2xlbmd0aCArPSBwbDAyMi0+Y3VyX3RyYW5zZmVyLT5sZW47CiAJaWYgKHBsMDIyLT5jdXJfdHJhbnNmZXItPmNzX2NoYW5nZSkKIAkJcGwwMjItPmN1cl9jaGlwLT4KQEAgLTEyMjQsNyArMTIyNCw3IEBACiAJCQkJICJudW1iZXIgb2YgYnl0ZXMgb24gYSAxNmJpdCBidXM/KVxuIiwKIAkJCQkgKHUzMikgKHBsMDIyLT5yeCAtIHBsMDIyLT5yeF9lbmQpKTsKIAkJfQotCQkvKiBVcGRhdGUgdG90YWwgYnl0ZXMgdHJhbnNmZXJlZCAqLworCQkvKiBVcGRhdGUgdG90YWwgYnl0ZXMgdHJhbnNmZXJyZWQgKi8KIAkJbXNnLT5hY3R1YWxfbGVuZ3RoICs9IHBsMDIyLT5jdXJfdHJhbnNmZXItPmxlbjsKIAkJaWYgKHBsMDIyLT5jdXJfdHJhbnNmZXItPmNzX2NoYW5nZSkKIAkJCXBsMDIyLT5jdXJfY2hpcC0+CkBAIC0xNDE1LDExICsxNDE1LDExIEBACiAJCSAgICAgICBTU1BfQ1IxKHBsMDIyLT52aXJ0YmFzZSkpOwogCiAJCWRldl9kYmcoJnBsMDIyLT5hZGV2LT5kZXYsICJwb2xsaW5nIHRyYW5zZmVyIG9uZ29pbmcgLi4uXG4iKTsKLQkJLyogRklYTUU6IGluc2VydCBhIHRpbWVvdXQgc28gd2UgZG9uJ3QgaGFuZyBoZXJlIGluZGVmaW5hdGVseSAqLworCQkvKiBGSVhNRTogaW5zZXJ0IGEgdGltZW91dCBzbyB3ZSBkb24ndCBoYW5nIGhlcmUgaW5kZWZpbml0ZWx5ICovCiAJCXdoaWxlIChwbDAyMi0+dHggPCBwbDAyMi0+dHhfZW5kIHx8IHBsMDIyLT5yeCA8IHBsMDIyLT5yeF9lbmQpCiAJCQlyZWFkd3JpdGVyKHBsMDIyKTsKIAotCQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkICovCisJCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkICovCiAJCW1lc3NhZ2UtPmFjdHVhbF9sZW5ndGggKz0gcGwwMjItPmN1cl90cmFuc2Zlci0+bGVuOwogCQlpZiAocGwwMjItPmN1cl90cmFuc2Zlci0+Y3NfY2hhbmdlKQogCQkJcGwwMjItPmN1cl9jaGlwLT5jc19jb250cm9sKFNTUF9DSElQX0RFU0VMRUNUKTsKQEAgLTIxMjksNyArMjEyOSw3IEBACiAJCQkicHJvYmUgLSBwcm9ibGVtIHJlZ2lzdGVyaW5nIHNwaSBtYXN0ZXJcbiIpOwogCQlnb3RvIGVycl9zcGlfcmVnaXN0ZXI7CiAJfQotCWRldl9kYmcoZGV2LCAicHJvYmUgc3VjY2VkZWRcbiIpOworCWRldl9kYmcoZGV2LCAicHJvYmUgc3VjY2VlZGVkXG4iKTsKIAkvKgogCSAqIERpc2FibGUgdGhlIHNpbGljb24gYmxvY2sgcGNsayBhbmQgYW55IHZvbHRhZ2UgZG9tYWluIGFuZCBqdXN0CiAJICogcG93ZXIgaXQgdXAgYW5kIGNsb2NrIGl0IHdoZW4gaXQncyBuZWVkZWQKQEAgLTIxODQsNyArMjE4NCw3IEBACiAJc3BpX3VucmVnaXN0ZXJfbWFzdGVyKHBsMDIyLT5tYXN0ZXIpOwogCXNwaV9tYXN0ZXJfcHV0KHBsMDIyLT5tYXN0ZXIpOwogCWFtYmFfc2V0X2RydmRhdGEoYWRldiwgTlVMTCk7Ci0JZGV2X2RiZygmYWRldi0+ZGV2LCAicmVtb3ZlIHN1Y2NlZGVkXG4iKTsKKwlkZXZfZGJnKCZhZGV2LT5kZXYsICJyZW1vdmUgc3VjY2VlZGVkXG4iKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvYXUxNTUwX3NwaS5jIGIvZHJpdmVycy9zcGkvYXUxNTUwX3NwaS5jCmluZGV4IDNjOWFkZTYuLmI1MDU2M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2F1MTU1MF9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9hdTE1NTBfc3BpLmMKQEAgLTQ4MCw3ICs0ODAsNyBAQAogCQlhdTF4eHhfZGJkbWFfc3RvcChody0+ZG1hX3J4X2NoKTsKIAkJYXUxeHh4X2RiZG1hX3N0b3AoaHctPmRtYV90eF9jaCk7CiAKLQkJLyogZ2V0IG51bWJlciBvZiB0cmFuc2ZlcmVkIGJ5dGVzICovCisJCS8qIGdldCBudW1iZXIgb2YgdHJhbnNmZXJyZWQgYnl0ZXMgKi8KIAkJaHctPnJ4X2NvdW50ID0gaHctPmxlbiAtIGF1MXh4eF9nZXRfZG1hX3Jlc2lkdWUoaHctPmRtYV9yeF9jaCk7CiAJCWh3LT50eF9jb3VudCA9IGh3LT5sZW4gLSBhdTF4eHhfZ2V0X2RtYV9yZXNpZHVlKGh3LT5kbWFfdHhfY2gpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9kd19zcGkuYyBiL2RyaXZlcnMvc3BpL2R3X3NwaS5jCmluZGV4IGQwNDBkZWIuLjg3MWUzMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2R3X3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL2R3X3NwaS5jCkBAIC0zNDUsNyArMzQ1LDcgQEAKIAogdm9pZCBkd19zcGlfeGZlcl9kb25lKHN0cnVjdCBkd19zcGkgKmR3cykKIHsKLQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkIHJldHVybiBjb3VudCBhY3R1YWwgYnl0ZXMgcmVhZCAqLworCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkIHJldHVybiBjb3VudCBhY3R1YWwgYnl0ZXMgcmVhZCAqLwogCWR3cy0+Y3VyX21zZy0+YWN0dWFsX2xlbmd0aCArPSBkd3MtPmxlbjsKIAogCS8qIE1vdmUgdG8gbmV4dCB0cmFuc2ZlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvZHdfc3BpLmggYi9kcml2ZXJzL3NwaS9kd19zcGkuaAppbmRleCBmYjBiY2U1Li5iMjNlNDUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9kd19zcGkuaAorKysgYi9kcml2ZXJzL3NwaS9kd19zcGkuaApAQCAtNDYsNyArNDYsNyBAQAogI2RlZmluZSBTUElfSU5UX1JYRkkJCQkoMSA8PCA0KQogI2RlZmluZSBTUElfSU5UX01TVEkJCQkoMSA8PCA1KQogCi0vKiBUWCBSWCBpbnRlcnJ1cHQgbGV2ZWwgdGhyZXNoaG9sZCwgbWF4IGNhbiBiZSAyNTYgKi8KKy8qIFRYIFJYIGludGVycnVwdCBsZXZlbCB0aHJlc2hvbGQsIG1heCBjYW4gYmUgMjU2ICovCiAjZGVmaW5lIFNQSV9JTlRfVEhSRVNIT0xECQkzMgogCiBlbnVtIGR3X3NzaV90eXBlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL2VwOTN4eF9zcGkuYyBiL2RyaXZlcnMvc3BpL2VwOTN4eF9zcGkuYwppbmRleCAwYmEzNWRmLi5kMzU3MDA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9lcDkzeHhfc3BpLmMKKysrIGIvZHJpdmVycy9zcGkvZXA5M3h4X3NwaS5jCkBAIC01MTIsNyArNTEyLDcgQEAKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBvbmUgU1BJIHRyYW5zZmVyIGdpdmVuIGluIEB0LiBGdW5jdGlvbiB3YWl0cyB1bnRpbAogICogdHJhbnNmZXIgaXMgY29tcGxldGUgKG1heSBzbGVlcCkgYW5kIHVwZGF0ZXMgQG1zZy0+c3RhdHVzIGJhc2VkIG9uIHdoZXRoZXIKLSAqIHRyYW5zZmVyIHdhcyBzdWNjZXNmdWxseSBwcm9jZXNzZWQgb3Igbm90LgorICogdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgb3Igbm90LgogICovCiBzdGF0aWMgdm9pZCBlcDkzeHhfc3BpX3Byb2Nlc3NfdHJhbnNmZXIoc3RydWN0IGVwOTN4eF9zcGkgKmVzcGksCiAJCQkJCXN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jIGIvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jCmluZGV4IDNhYTc4MjAuLmRjMjViZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMKQEAgLTcwMCw3ICs3MDAsNyBAQAogCWlmICghcHhhMjV4X3NzcF9jb21wKGRydl9kYXRhKSkKIAkJd3JpdGVfU1NUTygwLCByZWcpOwogCi0JLyogVXBkYXRlIHRvdGFsIGJ5dGUgdHJhbnNmZXJlZCByZXR1cm4gY291bnQgYWN0dWFsIGJ5dGVzIHJlYWQgKi8KKwkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcnJlZCByZXR1cm4gY291bnQgYWN0dWFsIGJ5dGVzIHJlYWQgKi8KIAlkcnZfZGF0YS0+Y3VyX21zZy0+YWN0dWFsX2xlbmd0aCArPSBkcnZfZGF0YS0+bGVuIC0KIAkJCQkoZHJ2X2RhdGEtPnJ4X2VuZCAtIGRydl9kYXRhLT5yeCk7CiAKQEAgLTc1OSw3ICs3NTksNyBAQAogCiAJCS8qCiAJCSAqIFBYQTI1eF9TU1AgaGFzIG5vIHRpbWVvdXQsIHNldCB1cCByeCB0aHJlc2hvdWxkIGZvciB0aGUKLQkJICogcmVtYWluZyBSWCBieXRlcy4KKwkJICogcmVtYWluaW5nIFJYIGJ5dGVzLgogCQkgKi8KIAkJaWYgKHB4YTI1eF9zc3BfY29tcChkcnZfZGF0YSkpIHsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLmMgYi9kcml2ZXJzL3NwaS9zcGkuYwppbmRleCAzNGJiMTdmLi44MmI5YTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9zcGkuYwpAQCAtOTU3LDcgKzk1Nyw3IEBACiAgKiBkcml2ZXJzIG1heSBETUEgZGlyZWN0bHkgaW50byBhbmQgb3V0IG9mIHRoZSBtZXNzYWdlIGJ1ZmZlcnMuCiAgKgogICogVGhpcyBjYWxsIHNob3VsZCBiZSB1c2VkIGJ5IGRyaXZlcnMgdGhhdCByZXF1aXJlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlCi0gKiBTUEkgYnVzLiBJdCBoYXMgdG8gYmUgcHJlY2VlZGVkIGJ5IGEgc3BpX2J1c19sb2NrIGNhbGwuIFRoZSBTUEkgYnVzIG11c3QKKyAqIFNQSSBidXMuIEl0IGhhcyB0byBiZSBwcmVjZWRlZCBieSBhIHNwaV9idXNfbG9jayBjYWxsLiBUaGUgU1BJIGJ1cyBtdXN0CiAgKiBiZSByZWxlYXNlZCBieSBhIHNwaV9idXNfdW5sb2NrIGNhbGwgd2hlbiB0aGUgZXhjbHVzaXZlIGFjY2VzcyBpcyBvdmVyLgogICoKICAqIEl0IHJldHVybnMgemVybyBvbiBzdWNjZXNzLCBlbHNlIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMgYi9kcml2ZXJzL3NwaS9zcGlfYmZpbjV4eC5jCmluZGV4IGYzYTFjNTIuLmY3MDZkYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMKKysrIGIvZHJpdmVycy9zcGkvc3BpX2JmaW41eHguYwpAQCAtOTA1LDcgKzkwNSw3IEBACiAJCQkiSU8gd3JpdGUgZXJyb3IhXG4iKTsKIAkJbWVzc2FnZS0+c3RhdGUgPSBFUlJPUl9TVEFURTsKIAl9IGVsc2UgewotCQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkICovCisJCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkICovCiAJCW1lc3NhZ2UtPmFjdHVhbF9sZW5ndGggKz0gZHJ2X2RhdGEtPmxlbl9pbl9ieXRlczsKIAkJLyogTW92ZSB0byBuZXh0IHRyYW5zZmVyIG9mIHRoaXMgbXNnICovCiAJCW1lc3NhZ2UtPnN0YXRlID0gYmZpbl9zcGlfbmV4dF90cmFuc2ZlcihkcnZfZGF0YSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGlfZnNsX2VzcGkuYyBiL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jCmluZGV4IDkwMGU5MjEuLjQ5NmY4OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jCkBAIC00NzQsNyArNDc0LDcgQEAKIAltcGM4eHh4X3NwaSA9IHNwaV9tYXN0ZXJfZ2V0X2RldmRhdGEoc3BpLT5tYXN0ZXIpOwogCXJlZ19iYXNlID0gbXBjOHh4eF9zcGktPnJlZ19iYXNlOwogCi0JaHdfbW9kZSA9IGNzLT5od19tb2RlOyAvKiBTYXZlIG9yZ2luYWwgc2V0dGluZ3MgKi8KKwlod19tb2RlID0gY3MtPmh3X21vZGU7IC8qIFNhdmUgb3JpZ2luYWwgc2V0dGluZ3MgKi8KIAljcy0+aHdfbW9kZSA9IG1wYzh4eHhfc3BpX3JlYWRfcmVnKAogCQkJJnJlZ19iYXNlLT5jc21vZGVbc3BpLT5jaGlwX3NlbGVjdF0pOwogCS8qIG1hc2sgb3V0IGJpdHMgd2UgYXJlIGdvaW5nIHRvIHNldCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvcGNpLmMgYi9kcml2ZXJzL3NzYi9wY2kuYwppbmRleCBhNDY3YjIwLi42ZjM0OTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NzYi9wY2kuYworKysgYi9kcml2ZXJzL3NzYi9wY2kuYwpAQCAtNjcwLDcgKzY3MCw3IEBACiAJCXNzYl9wcmludGsoS0VSTl9FUlIgUEZYICJObyBTUFJPTSBhdmFpbGFibGUhXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQotCWlmIChidXMtPmNoaXBjby5kZXYpIHsJLyogY2FuIGJlIHVuYXZhaWxpYmxlISAqLworCWlmIChidXMtPmNoaXBjby5kZXYpIHsJLyogY2FuIGJlIHVuYXZhaWxhYmxlISAqLwogCQkvKgogCQkgKiBnZXQgU1BST00gb2Zmc2V0OiBTU0JfU1BST01fQkFTRTEgZXhjZXB0IGZvcgogCQkgKiBjaGlwY29tbW9uIHJldiA+PSAzMSBvciBjaGlwIElEIGlzIDB4NDMxMiBhbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3NiL3Nwcm9tLmMgYi9kcml2ZXJzL3NzYi9zcHJvbS5jCmluZGV4IDRmN2NjOGQuLjVmMzRkN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL3Nwcm9tLmMKKysrIGIvZHJpdmVycy9zc2Ivc3Byb20uYwpAQCAtMTg1LDcgKzE4NSw3IEBACiAJLyogdGhpcyByb3V0aW5lIGRpZmZlcnMgZnJvbSBzcGVjcyBhcyB3ZSBkbyBub3QgYWNjZXNzIFNQUk9NIGRpcmVjdGx5CiAJICAgb24gUENNQ0lBICovCiAJaWYgKGJ1cy0+YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9QQ0kgJiYKLQkgICAgYnVzLT5jaGlwY28uZGV2ICYmCS8qIGNhbiBiZSB1bmF2YWlsaWJsZSEgKi8KKwkgICAgYnVzLT5jaGlwY28uZGV2ICYmCS8qIGNhbiBiZSB1bmF2YWlsYWJsZSEgKi8KIAkgICAgYnVzLT5jaGlwY28uZGV2LT5pZC5yZXZpc2lvbiA+PSAzMSkKIAkJcmV0dXJuIGJ1cy0+Y2hpcGNvLmNhcGFiaWxpdGllcyAmIFNTQl9DSElQQ09fQ0FQX1NQUk9NOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9LY29uZmlnCmluZGV4IDE4YjQzZmMuLmRjYTRhMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9LY29uZmlnCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9LY29uZmlnCkBAIC0xMTcsOCArMTE3LDYgQEAKIAogc291cmNlICJkcml2ZXJzL3N0YWdpbmcvdm1lL0tjb25maWciCiAKLXNvdXJjZSAiZHJpdmVycy9zdGFnaW5nL21lbXJhci9LY29uZmlnIgotCiBzb3VyY2UgImRyaXZlcnMvc3RhZ2luZy9zZXAvS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL3N0YWdpbmcvaWlvL0tjb25maWciCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvTWFrZWZpbGUKaW5kZXggY2ZkMTNjZC4uZWI5MzAxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9NYWtlZmlsZQpAQCAtNDAsNyArNDAsNiBAQAogb2JqLSQoQ09ORklHX1ZUNjY1NikJCSs9IHZ0NjY1Ni8KIG9iai0kKENPTkZJR19IWVBFUlYpCQkrPSBodi8KIG9iai0kKENPTkZJR19WTUVfQlVTKQkJKz0gdm1lLwotb2JqLSQoQ09ORklHX01SU1RfUkFSX0hBTkRMRVIpCSs9IG1lbXJhci8KIG9iai0kKENPTkZJR19EWF9TRVApICAgICAgICAgICAgKz0gc2VwLwogb2JqLSQoQ09ORklHX0lJTykJCSs9IGlpby8KIG9iai0kKENPTkZJR19DUzU1MzVfR1BJTykJKz0gY3M1NTM1X2dwaW8vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2h0YzIvQVI2MDAwL2FyNmtfZ21ib3hfaGNpdWFydC5jIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9odGMyL0FSNjAwMC9hcjZrX2dtYm94X2hjaXVhcnQuYwppbmRleCBjNjQ4OGUwLi40MTIyM2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2h0YzIvQVI2MDAwL2FyNmtfZ21ib3hfaGNpdWFydC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaHRjMi9BUjYwMDAvYXI2a19nbWJveF9oY2l1YXJ0LmMKQEAgLTIzNyw3ICsyMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHBQcm90LT5DcmVkaXRzQ3VycmVudFNlZWspKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwUHJvdC0+Q3JlZGl0c0F2YWlsYWJsZSA+PSBwUHJvdC0+Q3JlZGl0c0N1cnJlbnRTZWVrKSB7Ci0gICAgICAgICAgICAgICAgLyogd2UgaGF2ZSBlbm91Z2ggY3JlZGl0cyB0byBmdWxsZmlsbCBhdCBsZWFzdCAxIHBhY2tldCB3YWl0aW5nIGluIHRoZSBxdWV1ZSAqLworICAgICAgICAgICAgICAgIC8qIHdlIGhhdmUgZW5vdWdoIGNyZWRpdHMgdG8gZnVsZmlsbCBhdCBsZWFzdCAxIHBhY2tldCB3YWl0aW5nIGluIHRoZSBxdWV1ZSAqLwogICAgICAgICAgICAgcFByb3QtPkNyZWRpdHNDdXJyZW50U2VlayA9IDA7CiAgICAgICAgICAgICBwUHJvdC0+U2VuZFN0YXRlRmxhZ3MgJj0gfkhDSV9TRU5EX1dBSVRfQ1JFRElUUzsgIAogICAgICAgICAgICAgZG9QZW5kaW5nU2VuZHMgPSB0cnVlOwpAQCAtMjg1LDcgKzI4NSw3IEBACiB7CiAgICAgc3RydWN0IGdtYm94X3Byb3RvX2hjaV91YXJ0ICAqcFByb3QgPSAoc3RydWN0IGdtYm94X3Byb3RvX2hjaV91YXJ0ICopcENvbnRleHQ7IAogICAgIAotICAgICAgICAvKiB0YXJnZXQgYXNzZXJ0aW9uIG9jY3VyZWQgKi8gICAgICAgICAgIAorICAgICAgICAvKiB0YXJnZXQgYXNzZXJ0aW9uIG9jY3VycmVkICovICAgICAgICAgICAKICAgICBOb3RpZnlUcmFuc3BvcnRGYWlsdXJlKHBQcm90LCBTdGF0dXMpOyAgCiB9CiAKQEAgLTUwNyw3ICs1MDcsNyBAQAogICAgICAgICAKICAgICB9IHdoaWxlIChmYWxzZSk7CiAgICAgICAgIAotICAgICAgICAvKiBjaGVjayBpZiB3ZSBuZWVkIHRvIGRpc2FibGUgdGhlIHJlY2lldmVyICovCisgICAgICAgIC8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgcmVjZWl2ZXIgKi8KICAgICBpZiAoc3RhdHVzIHx8IGJsb2NrUmVjdikgewogICAgICAgICBEZXZHTWJveElSUUFjdGlvbihwUHJvdC0+cERldiwgR01CT1hfUkVDVl9JUlFfRElTQUJMRSwgUFJPQ19JT19TWU5DKTsgCiAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2FnZ3JfcmVjdl9hcGkuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9hZ2dyX3JlY3ZfYXBpLmgKaW5kZXggNjdhMDU4NC4uNWVhZDU4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2FnZ3JfcmVjdl9hcGkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvYWdncl9yZWN2X2FwaS5oCkBAIC03Miw3ICs3Miw3IEBACiAgKiBUaGlzIGV2ZW50IGlzIHRvIGluaXRpYXRlL21vZGlmeSB0aGUgcmVjZWl2ZSBzaWRlIHdpbmRvdy4KICAqIFRhcmdldCB3aWxsIHNlbmQgV01JX0FEREJBX1JFUV9FVkVOVElEIGV2ZW50IHRvIGhvc3QgLSB0byBzZXR1cCAKICAqIHJlY3YgcmUtb3JkZXJpbmcgcXVldWVzLiBUYXJnZXQgd2lsbCBuZWdvdGlhdGUgQUREQkEgd2l0aCBwZWVyLCAKLSAqIGFuZCBpbmRpY2F0ZSB2aWEgdGhpcyBldmVudCBhZnRlciBzdWNjZXNmdWxseSBjb21wbGV0aW5nIHRoZSAKKyAqIGFuZCBpbmRpY2F0ZSB2aWEgdGhpcyBldmVudCBhZnRlciBzdWNjZXNzZnVsbHkgY29tcGxldGluZyB0aGUgCiAgKiBuZWdvdGlhdGlvbi4gVGhpcyBoYXBwZW5zIGluIHR3byBzaXR1YXRpb25zOgogICogIDEuIEluaXRpYWwgc2V0dXAgb2YgYWdncmVnYXRpb24KICAqICAyLiBSZW5lZ290aWF0aW9uIG9mIGN1cnJlbnQgcmVjdiB3aW5kb3cuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2FfaGNpLmggYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2FfaGNpLmgKaW5kZXggMDhjYjAxMy4uMzc5ZDY1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9hX2hjaS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vYV9oY2kuaApAQCAtMTI0LDcgKzEyNCw3IEBACiAjZGVmaW5lIFBBTF9OVU1fQ09NUExfREFUQV9CTE9DS19FVkVOVCAgICAgICAgICAgICAgMHg0OAogI2RlZmluZSBQQUxfU0hPUlRfUkFOR0VfTU9ERV9DSEFOR0VfQ09NUExfRVZFTlQgICAgIDB4NEMKICNkZWZpbmUgUEFMX0FNUF9TVEFUVVNfQ0hBTkdFX0VWRU5UICAgICAgICAgICAgICAgICAweDRECi0vKj09PT09PT09IEVuZCBvZiBQQUwgZXZlbnRzIGRlZmluaXRvbiA9PT09PT09PT09PT09PT09PSovCisvKj09PT09PT09IEVuZCBvZiBQQUwgZXZlbnRzIGRlZmluaXRpb24gPT09PT09PT09PT09PT09PT0qLwogCiAKIC8qPT09PT09PT0gVGltZW91dHMgKG5vdCBwYXJ0IG9mIEhDSSBjbWQsIGJ1dCBpbnB1dCB0byBQQUwgZW5naW5lKSA9PT09PT09PT0qLwpAQCAtNDMwLDcgKzQzMCw3IEBACiAgICAgdTggaHdfZXJyX2NvZGU7CiB9IFBPU1RQQUNLIEhDSV9FVkVOVF9IV19FUlI7CiAKLS8qIEZsdXNoIG9jY3VyZWQgZXZlbnQgKi8KKy8qIEZsdXNoIG9jY3VycmVkIGV2ZW50ICovCiAvKiBRb3MgVmlvbGF0aW9uIGV2ZW50ICovCiB0eXBlZGVmIHN0cnVjdCAgaGNpX2V2ZW50X2hhbmRsZV90IHsKICAgICB1OCBldmVudF9jb2RlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9kYmdsb2cuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vZGJnbG9nLmgKaW5kZXggM2EzZDAwZC4uYjdhMTIzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9kYmdsb2cuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2RiZ2xvZy5oCkBAIC00NCw3ICs0NCw3IEBACiAjZGVmaW5lIERCR0xPR19NT0RVTEVJRF9OVU1fTUFYICAgICAgICAgIDE2IC8qIFVwcGVyIGxpbWl0IGlzIHdpZHRoIG9mIG1hc2sgKi8KIAogLyoKLSAqIFBsZWFzZSBlbnN1cmUgdGhhdCB0aGUgZGVmaW5pdGlvbiBvZiBhbnkgbmV3IG1vZHVsZSBpbnRyZHVjZWQgaXMgY2FwdHVyZWQKKyAqIFBsZWFzZSBlbnN1cmUgdGhhdCB0aGUgZGVmaW5pdGlvbiBvZiBhbnkgbmV3IG1vZHVsZSBpbnRyb2R1Y2VkIGlzIGNhcHR1cmVkCiAgKiBiZXR3ZWVuIHRoZSBEQkdMT0dfTU9EVUxFSURfU1RBUlQgYW5kIERCR0xPR19NT0RVTEVJRF9FTkQgZGVmaW5lcy4gVGhlIAogICogc3RydWN0dXJlIGlzIHJlcXVpcmVkIGZvciB0aGUgcGFyc2VyIHRvIGNvcnJlY3RseSBwaWNrIHVwIHRoZSB2YWx1ZXMgZm9yCiAgKiBkaWZmZXJlbnQgbW9kdWxlcy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vZXBwaW5nX3Rlc3QuaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vZXBwaW5nX3Rlc3QuaAppbmRleCA1YzQwZDhhLi43MDI3ZmFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2VwcGluZ190ZXN0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9lcHBpbmdfdGVzdC5oCkBAIC05Miw3ICs5Miw3IEBACiAjZGVmaW5lIEVQUElOR19DTURfUkVTRVRfUkVDVl9DTlQgICAgICAgMiAgIC8qIHJlc2V0IHJlY3YgY291bnQgKi8KICNkZWZpbmUgRVBQSU5HX0NNRF9DQVBUVVJFX1JFQ1ZfQ05UICAgICAzICAgLyogZmV0Y2ggcmVjdiBjb3VudCwgNC1ieXRlIGNvdW50IHJldHVybmVkIGluIENtZEJ1ZmZlcl90ICovCiAjZGVmaW5lIEVQUElOR19DTURfTk9fRUNITyAgICAgICAgICAgICAgNCAgIC8qIG5vbi1lY2hvIHBhY2tldCB0ZXN0ICh0eC1vbmx5KSAqLwotI2RlZmluZSBFUFBJTkdfQ01EX0NPTlRfUlhfU1RBUlQgICAgICAgIDUgICAvKiBjb250aW5vdXMgUlggcGFja2V0cywgcGFyYW1ldGVycyBhcmUgaW4gQ21kQnVmZmVyX2ggKi8KKyNkZWZpbmUgRVBQSU5HX0NNRF9DT05UX1JYX1NUQVJUICAgICAgICA1ICAgLyogY29udGludW91cyBSWCBwYWNrZXRzLCBwYXJhbWV0ZXJzIGFyZSBpbiBDbWRCdWZmZXJfaCAqLwogI2RlZmluZSBFUFBJTkdfQ01EX0NPTlRfUlhfU1RPUCAgICAgICAgIDYgICAvKiBzdG9wIGNvbnRpbnVvdXMgUlggcGFja2V0IHRyYW5zbWlzc2lvbiAqLwogCiAgICAgLyogdGVzdCBjb21tYW5kIHBhcmFtZXRlcnMgbWF5IGJlIG5vIG1vcmUgdGhhbiA4IGJ5dGVzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2luaV9kc2V0LmggYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL2luaV9kc2V0LmgKaW5kZXggOGJmYzc1OS4uYTllMDVmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi9pbmlfZHNldC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vaW5pX2RzZXQuaApAQCAtMzEsNyArMzEsNyBAQAogICovCiB0eXBlZGVmIGVudW0gewogI2lmIGRlZmluZWQoQVI2MDAyX1JFVjQpIHx8IGRlZmluZWQoQVI2MDAzKQotLyogQWRkIHRoZXNlIGRlZmluaXRpb25zIGZvciBjb21wYXRhYmlsaXR5ICAqLworLyogQWRkIHRoZXNlIGRlZmluaXRpb25zIGZvciBjb21wYXRpYmlsaXR5ICAqLwogI2RlZmluZSBXSEFMX0lOSV9EQVRBX0lEX0JCX1JGR0FJTl9MTkExIFdIQUxfSU5JX0RBVEFfSURfQkJfUkZHQUlOCiAjZGVmaW5lIFdIQUxfSU5JX0RBVEFfSURfQkJfUkZHQUlOX0xOQTIgV0hBTF9JTklfREFUQV9JRF9CQl9SRkdBSU4KICAgICBXSEFMX0lOSV9EQVRBX0lEX05VTEwgICAgICAgICAgICAgICA9MCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vdGVzdGNtZC5oIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi90ZXN0Y21kLmgKaW5kZXggOWNhMWYyYS4uN2Q5NGFlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi90ZXN0Y21kLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi90ZXN0Y21kLmgKQEAgLTQzLDggKzQzLDggQEAKICAgICBQTjE1X1BBVFRFUk4KIH1UWF9EQVRBX1BBVFRFUk47CiAKLS8qIENvbnRpbm91cyB0eAotICAgbW9kZSA6IFRDTURfQ09OVF9UWF9PRkYgLSBEaXNhYmxpbmcgY29udGlub3VzIHR4CisvKiBDb250aW51b3VzIHR4CisgICBtb2RlIDogVENNRF9DT05UX1RYX09GRiAtIERpc2FibGluZyBjb250aW51b3VzIHR4CiAgICAgICAgICAgVENNRF9DT05UX1RYX1NJTkUgLSBFbmFibGUgY29udGludW91cyB1bm1vZHVsYXRlZCB0eAogICAgICAgICAgIFRDTURfQ09OVF9UWF9GUkFNRS0gRW5hYmxlIGNvbnRpbnVvdXMgbW9kdWxhdGVkIHR4CiAgICBmcmVxIDogQ2hhbm5lbCBmcmVxIGluIE1oei4gKGUuZyAyNDEyIGZvciBjaGFubmVsIDEgaW4gMTEgZykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21pLmggYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL3dtaS5oCmluZGV4IGM2NDVhZjMuLjRlNjM0MzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21pLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2NvbW1vbi93bWkuaApAQCAtMTU2OCw4ICsxNTY4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIHRvIHBzLXBvbGwgbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSAzICovCiAKLQl1MzIgc2NvQ29udFN0b21wTWF4OyAgIC8qIG1heCBudW1iZXIgb2YgY29udGlub3VzIHN0b21wIGFsbG93ZWQgaW4gb3B0IG1vZGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4Y2VkZGVkIHN3aXRjaCB0byBwc3BvbGwgbW9kZQorCXUzMiBzY29Db250U3RvbXBNYXg7ICAgLyogbWF4IG51bWJlciBvZiBjb250aW51b3VzIHN0b21wIGFsbG93ZWQgaW4gb3B0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4Y2VlZGVkIHN3aXRjaCB0byBwc3BvbGwgbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IDMgKi8KIAogCXUzMiBzY29NaW5sb3dSYXRlTWJwczsgLyogTG93IHJhdGUgdGhyZXNob2xkICovCkBAIC0yMDg0LDcgKzIwODQsNyBAQAogLyoKICAqIEJTUyBJTkZPIEhEUiB2ZXJzaW9uIDIuMAogICogV2l0aCA2IGJ5dGVzIEhUQyBoZWFkZXIgYW5kIDYgYnl0ZXMgb2YgV01JIGhlYWRlcgotICogV01JX0JTU19JTkZPX0hEUiBjYW5ub3QgYmUgYWNjb21vZGF0ZWQgaW4gdGhlIHJlbW92ZWQgODAyLjExIG1hbmFnZW1lbnQKKyAqIFdNSV9CU1NfSU5GT19IRFIgY2Fubm90IGJlIGFjY29tbW9kYXRlZCBpbiB0aGUgcmVtb3ZlZCA4MDIuMTEgbWFuYWdlbWVudAogICogaGVhZGVyIHNwYWNlLgogICogLSBSZWR1Y2UgdGhlIGllTWFzayB0byAyIGJ5dGVzIGFzIG9ubHkgdHdvIGJpdCBmbGFncyBhcmUgdXNlZAogICogLSBSZW1vdmUgcnNzaSBhbmQgY29tcHV0ZSBpdCBvbiB0aGUgaG9zdC4gcnNzaSA9IHNuciAtIDk1CkBAIC0yOTExLDcgKzI5MTEsNyBAQAogICAgIHU4IHBrdElEOyAvKiBwYWNrZXQgSUQgdG8gaWRlbnRpZnkgcGFyZW50IHBhY2tldCAqLwogICAgIHU4IHJhdGVJZHg7IC8qIHJhdGUgaW5kZXggb24gc3VjY2Vzc2Z1bCB0cmFuc21pc3Npb24gKi8KICAgICB1OCBhY2tGYWlsdXJlczsgLyogbnVtYmVyIG9mIEFDSyBmYWlsdXJlcyBpbiB0eCBhdHRlbXB0ICovCi0jaWYgMCAvKiBvcHRpb25hbCBwYXJhbXMgY3VycmVudGx5IG9tbWl0dGVkLiAqLworI2lmIDAgLyogb3B0aW9uYWwgcGFyYW1zIGN1cnJlbnRseSBvbWl0dGVkLiAqLwogICAgIHUzMiBxdWV1ZURlbGF5OyAvLyB1c2VjIGRlbGF5IG1lYXN1cmVkIFR4IFN0YXJ0IHRpbWUgLSBob3N0IGRlbGl2ZXJ5IHRpbWUKICAgICB1MzIgbWVkaWFEZWxheTsgLy8gdXNlYyBkZWxheSBtZWFzdXJlZCBBQ0sgcnggdGltZSAtIGhvc3QgZGVsaXZlcnkgdGltZQogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvY29tbW9uL3dtaXguaCBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21peC5oCmluZGV4IDVlYmI4MjguLjM2YWNiYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21peC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9jb21tb24vd21peC5oCkBAIC0xOTEsNyArMTkxLDcgQEAKIH0gUE9TVFBBQ0sgV01JWF9HUElPX0lOVFJfQUNLX0NNRDsKIAogLyoKLSAqIFRhcmdldCBpbmZvcm1zIEhvc3Qgb2YgR1BJTyBpbnRlcnJ1cHRzIHRoYXQgaGF2ZSBvY3VycmVkIHNpbmNlIHRoZQorICogVGFyZ2V0IGluZm9ybXMgSG9zdCBvZiBHUElPIGludGVycnVwdHMgdGhhdCBoYXZlIG9jY3VycmVkIHNpbmNlIHRoZQogICogbGFzdCBXTUlYX0dJUE9fSU5UUl9BQ0tfQ01EIHdhcyByZWNlaXZlZC4gIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gLS0KICAqIHRoZSBjdXJyZW50IEdQSU8gaW5wdXQgdmFsdWVzIGlzIHByb3ZpZGVkIC0tIGluIG9yZGVyIHRvIHN1cHBvcnQKICAqIHVzZSBvZiBhIEdQSU8gaW50ZXJydXB0IGFzIGEgRGF0YSBWYWxpZCBzaWduYWwgZm9yIG90aGVyIEdQSU8gcGlucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9odGNfYXBpLmggYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2luY2x1ZGUvaHRjX2FwaS5oCmluZGV4IDFiYzI0ODguLjRmYjc2NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaW5jbHVkZS9odGNfYXBpLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9pbmNsdWRlL2h0Y19hcGkuaApAQCAtMjA5LDcgKzIwOSw3IEBACiB0eXBlZGVmIGVudW0gX0hUQ19DUkVESVRfRElTVF9SRUFTT04gewogICAgIEhUQ19DUkVESVRfRElTVF9TRU5EX0NPTVBMRVRFID0gMCwgICAgIC8qIGNyZWRpdHMgYXZhaWxhYmxlIGFzIGEgcmVzdWx0IG9mIGNvbXBsZXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmQgb3BlcmF0aW9ucyAoTUFOREFUT1JZKSByZXN1bHRpbmcgaW4gY3JlZGl0IHJlcG9ydHMgKi8KLSAgICBIVENfQ1JFRElUX0RJU1RfQUNUSVZJVFlfQ0hBTkdFID0gMSwgICAvKiBhIGNoYW5nZSBpbiBlbmRwb2ludCBhY3Rpdml0eSBvY2N1cmVkIChPUFRJT05BTCkgKi8KKyAgICBIVENfQ1JFRElUX0RJU1RfQUNUSVZJVFlfQ0hBTkdFID0gMSwgICAvKiBhIGNoYW5nZSBpbiBlbmRwb2ludCBhY3Rpdml0eSBvY2N1cnJlZCAoT1BUSU9OQUwpICovCiAgICAgSFRDX0NSRURJVF9ESVNUX1NFRUtfQ1JFRElUUywgICAgICAgICAgLyogYW4gZW5kcG9pbnQgbmVlZHMgdG8gInNlZWsiIGNyZWRpdHMgKE9QVElPTkFMKSAqLwogICAgIEhUQ19EVU1QX0NSRURJVF9TVEFURSAgICAgICAgICAgICAgICAgIC8qIGZvciBkZWJ1Z2dpbmcsIGR1bXAgYW55IHN0YXRlIGluZm9ybWF0aW9uIHRoYXQgaXMga2VwdCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkaXN0cmlidXRpb24gZnVuY3Rpb24gKi8KQEAgLTI1Myw3ICsyNTMsNyBAQAogICAgIHUzMiBSeFBhY2tldHNCdW5kbGVkOyAgICAgICAvKiBjb3VudCBvZiByZWN2IHBhY2tldHMgcmVjZWl2ZWQgaW4gYSBidW5kbGUgKi8KICAgICB1MzIgUnhCdW5kbGVMb29rQWhlYWRzOyAgICAgLyogY291bnQgb2YgbnVtYmVyIG9mIGJ1bmRsZWQgbG9va2FoZWFkcyAqLwogICAgIHUzMiBSeEJ1bmRsZUluZEZyb21IZHI7ICAgICAvKiBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGJ1bmRsZSBpbmRpY2F0aW9ucyBmcm9tIHRoZSBIVEMgaGVhZGVyICovCi0gICAgdTMyIFJ4QWxsb2NUaHJlc2hIaXQ7ICAgICAgIC8qIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIHJlY3YgYWxsb2NhdGlvbiB0aHJlc2hob2xkIHdhcyBoaXQgKi8KKyAgICB1MzIgUnhBbGxvY1RocmVzaEhpdDsgICAgICAgLyogY291bnQgb2YgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgcmVjdiBhbGxvY2F0aW9uIHRocmVzaG9sZCB3YXMgaGl0ICovCiAgICAgdTMyIFJ4QWxsb2NUaHJlc2hCeXRlczsgICAgIC8qIHRvdGFsIG51bWJlciBvZiBieXRlcyAqLwogfTsKIApAQCAtMzkxLDcgKzM5MSw3IEBACiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKi8KIHZvaWQgICAgICAgIEhUQ1N0b3AoSFRDX0hBTkRMRSBIVENIYW5kbGUpOwogLyorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotICBAZGVzYzogRGVzdG9yeSBIVEMgc2VydmljZQorICBAZGVzYzogRGVzdHJveSBIVEMgc2VydmljZQogICBAZnVuY3Rpb24gbmFtZTogSFRDRGVzdHJveQogICBAaW5wdXQ6IEhUQ0hhbmRsZSAKICAgQG91dHB1dDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvbWlzY2Rydi9jcmVkaXRfZGlzdC5jIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9taXNjZHJ2L2NyZWRpdF9kaXN0LmMKaW5kZXggYWU1NGUxZi4uMzNmYTAyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9taXNjZHJ2L2NyZWRpdF9kaXN0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9taXNjZHJ2L2NyZWRpdF9kaXN0LmMKQEAgLTM0MSw3ICszNDEsNyBAQAogICAgICAgICBjcmVkaXRzID0gbWluKHBDcmVkSW5mby0+Q3VycmVudEZyZWVDcmVkaXRzLHBFUERpc3QtPlR4Q3JlZGl0c1NlZWspOwogCiAgICAgICAgIGlmIChjcmVkaXRzID49IHBFUERpc3QtPlR4Q3JlZGl0c1NlZWspIHsKLSAgICAgICAgICAgICAgICAvKiB3ZSBmb3VuZCBzb21lIHRvIGZ1bGxmaWxsIHRoZSBzZWVrIHJlcXVlc3QgKi8KKyAgICAgICAgICAgICAgICAvKiB3ZSBmb3VuZCBzb21lIHRvIGZ1bGZpbGwgdGhlIHNlZWsgcmVxdWVzdCAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMzY0LDggKzM2NCw4IEBACiAKICAgICAgICAgICAgIGlmICgocEN1ckVwRGlzdC0+VHhDcmVkaXRzQXNzaWduZWQgLSBuZWVkKSA+PSBwQ3VyRXBEaXN0LT5UeENyZWRpdHNNaW4pIHsKICAgICAgICAgICAgICAgICAgICAgLyogdGhlIGN1cnJlbnQgb25lIGhhcyBiZWVuIGFsbG9jYXRlZCBtb3JlIHRoYW4gaXQncyBtaW5pbXVtIGFuZCBpdAotICAgICAgICAgICAgICAgICAgICAgKiBoYXMgZW5vdWdoIGNyZWRpdHMgYXNzaWduZWQgYWJvdmUgaXQncyBtaW5pbXVtIHRvIGZ1bGxmaWxsIG91ciBuZWVkCi0gICAgICAgICAgICAgICAgICAgICAqIHRyeSB0byB0YWtlIGF3YXkganVzdCBlbm91Z2ggdG8gZnVsbGZpbGwgb3VyIG5lZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICogaGFzIGVub3VnaCBjcmVkaXRzIGFzc2lnbmVkIGFib3ZlIGl0J3MgbWluaW11bSB0byBmdWxmaWxsIG91ciBuZWVkCisgICAgICAgICAgICAgICAgICAgICAqIHRyeSB0byB0YWtlIGF3YXkganVzdCBlbm91Z2ggdG8gZnVsZmlsbCBvdXIgbmVlZCAqLwogICAgICAgICAgICAgICAgIFJlZHVjZUNyZWRpdHMocENyZWRJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEN1ckVwRGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDdXJFcERpc3QtPlR4Q3JlZGl0c0Fzc2lnbmVkIC0gbmVlZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9hbmRyb2lkLmMgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9hbmRyb2lkLmMKaW5kZXggYzk2ZjZlOS4uNGFhNzVlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9vcy9saW51eC9hcjYwMDBfYW5kcm9pZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvb3MvbGludXgvYXI2MDAwX2FuZHJvaWQuYwpAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5lZWRXYWtlKSB7Ci0gICAgICAgICAgICAvKiBrZWVwIGhvc3Qgd2FrZSB1cCBpZiB0aGVyZSBpcyBhbnkgZXZlbnQgYW5kIHBhY2thdGUgY29tbWluZyBpbiovCisgICAgICAgICAgICAvKiBrZWVwIGhvc3Qgd2FrZSB1cCBpZiB0aGVyZSBpcyBhbnkgZXZlbnQgYW5kIHBhY2thdGUgY29taW5nIGluKi8KICAgICAgICAgICAgIGlmICh3b3dsZWRvbikgewogICAgICAgICAgICAgICAgIGNoYXIgYnVmWzMyXTsKICAgICAgICAgICAgICAgICBpbnQgbGVuID0gc3ByaW50ZihidWYsICJvbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9vcy9saW51eC9hcjYwMDBfZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9kcnYuYwppbmRleCAyN2NiMDJkLi45N2Q2Y2U2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL29zL2xpbnV4L2FyNjAwMF9kcnYuYwpAQCAtNTIwLDcgKzUyMCw3IEBACiBpbnQKIGFyNjAwMF9kYmdsb2dfZ2V0X2RlYnVnX2xvZ3Moc3RydWN0IGFyNl9zb2Z0YyAqYXIpCiB7Ci0gICAgdTMyIGRhdGFbOF07IC8qIFNob3VsZCBiZSBhYmxlIHRvIGFjY29tb2RhdGUgc3RydWN0IGRiZ2xvZ19idWZfcyAqLworICAgIHUzMiBkYXRhWzhdOyAvKiBTaG91bGQgYmUgYWJsZSB0byBhY2NvbW1vZGF0ZSBzdHJ1Y3QgZGJnbG9nX2J1Zl9zICovCiAgICAgdTMyIGFkZHJlc3M7CiAgICAgdTMyIGxlbmd0aDsKICAgICB1MzIgZHJvcHBlZDsKQEAgLTIwNjMsNyArMjA2Myw3IEBACiAgKiAtIEluIGNhc2Ugb2Ygc3VycHJpc2UgcmVtb3ZhbCwgdGhlIGhjZCBhbHJlYWR5IGZyZWVzIHVwIHRoZSBwZW5kaW5nCiAgKiAgIGZvciB0aGUgZGV2aWNlIGFuZCBoZW5jZSB0aGVyZSBpcyBubyBuZWVkIHRvIHVucmVnaXN0ZXIgdGhlIGZ1bmN0aW9uCiAgKiAgIGRyaXZlciBpbm9yZGVyIHRvIGdldCB0aGVzZSByZXF1ZXN0cy4gRm9yIHBsYW5uZWQgcmVtb3ZhbCwgdGhlIGZ1bmN0aW9uCi0gKiAgIGRyaXZlciBoYXMgdG8gZXhwbGljdGx5IHVucmVnaXN0ZXIgaXRzZWxmIHRvIGhhdmUgdGhlIGhjZCByZXR1cm4gYWxsIHRoZQorICogICBkcml2ZXIgaGFzIHRvIGV4cGxpY2l0bHkgdW5yZWdpc3RlciBpdHNlbGYgdG8gaGF2ZSB0aGUgaGNkIHJldHVybiBhbGwgdGhlCiAgKiAgIHBlbmRpbmcgcmVxdWVzdHMgYmVmb3JlIHRoZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoZSBkZXZpY2VzIGFyZSBmcmVlZCB1cC4KICAqICAgTm90ZSB0aGF0IGFzIHBlciB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIGZ1bmN0aW9uIGRyaXZlciB3aWxsCiAgKiAgIGVuZCB1cCByZWxlYXNpbmcgYWxsIHRoZSBkZXZpY2VzIHNpbmNlIHRoZXJlIGlzIG5vIEFQSSB0byBzZWxlY3RpdmVseQpAQCAtMjk4Miw3ICsyOTgyLDcgQEAKICAgICAvKiBJZiB0YXJnZXQgaXMgbm90IGFzc29jaWF0ZWQgKi8KICAgICBpZiggKCFhci0+YXJDb25uZWN0ZWQgJiYgIWJ5cGFzc3dtaSkKICNpZmRlZiBDT05GSUdfSE9TVF9UQ01EX1NVUFBPUlQKLSAgICAgLyogVENNRCBkb2VzbnQgc3VwcG9ydCBhbnkgZGF0YSwgZnJlZSB0aGUgYnVmIGFuZCByZXR1cm4gKi8KKyAgICAgLyogVENNRCBkb2Vzbid0IHN1cHBvcnQgYW55IGRhdGEsIGZyZWUgdGhlIGJ1ZiBhbmQgcmV0dXJuICovCiAgICAgfHwgKGFyLT5hclRhcmdldE1vZGUgPT0gQVI2MDAwX1RDTURfTU9ERSkKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKQEAgLTYzOTMsNyArNjM5Myw3IEBACiAvKgogICogQWRkIHN1cHBvcnQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgYSB2aXJ0dWFsIGFkYXB0ZXIgZm9yIHNvZnQgQVAuCiAgKiBTb21lIE9TIHJlcXVpcmVzIGRpZmZlcmVudCBhZGFwdGVycyBuYW1lcyBmb3Igc3RhdGlvbiBhbmQgc29mdCBBUCBtb2RlLgotICogVG8gc3VwcG9ydCB0aGVzZSByZXF1aXJlbWVudCwgY3JlYXRlIGFuZCBkZXN0b3J5IGEgbmV0ZGV2aWNlICBpbnN0YW5jZQorICogVG8gc3VwcG9ydCB0aGVzZSByZXF1aXJlbWVudCwgY3JlYXRlIGFuZCBkZXN0cm95IGEgbmV0ZGV2aWNlICBpbnN0YW5jZQogICogd2hlbiB0aGUgQVAgbW9kZSBpcyBvcGVyYXRpb25hbC4gQSBmdWxsIGZsZWRnZWQgc3VwcG9ydCBmb3IgdmlydWFsIGRldmljZQogICogaXMgbm90IGltcGxlbWVudGVkLiBSYXRoZXIgYSB2aXJ0dWFsIGludGVyZmFjZSBpcyBjcmVhdGVkIGFuZCBpcyBsaW5rZWQKICAqIHdpdGggdGhlIGV4aXN0aW5nIHBoeXNpY2FsIGRldmljZSBpbnN0YW5jZSBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiB0aGUgCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL3dtaS93bWkuYyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvd21pL3dtaS5jCmluZGV4IDBkZGFlZTIuLmEwMGJmMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvd21pL3dtaS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvd21pL3dtaS5jCkBAIC00ODY3LDcgKzQ4NjcsNyBAQAogI2lmZGVmIENPTkZJR19IT1NUX1RDTURfU1VQUE9SVAogLyogV01JICBsYXllciBkb2Vzbid0IG5lZWQgdG8ga25vdyB0aGUgZGF0YSB0eXBlIG9mIHRoZSB0ZXN0IGNtZC4KICAgIFRoaXMgd291bGQgYmUgYmVuZWZpY2lhbCBmb3IgY3VzdG9tZXJzIGxpa2UgUXVhbGNvbW0sIHdobyBtaWdodAotICAgaGF2ZSBkaWZmZXJlbnQgdGVzdCBjb21tYW5kIHJlcXVpcmVtZW50cyBmcm9tIGRpZmZlcm50IG1hbnVmYWN0dXJlcnMKKyAgIGhhdmUgZGlmZmVyZW50IHRlc3QgY29tbWFuZCByZXF1aXJlbWVudHMgZnJvbSBkaWZmZXJlbnQgbWFudWZhY3R1cmVycwogICovCiBpbnQKIHdtaV90ZXN0X2NtZChzdHJ1Y3Qgd21pX3QgKndtaXAsIHU4ICpidWYsIHUzMiBsZW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0FkYXB0ZXIuaCBiL2RyaXZlcnMvc3RhZ2luZy9iY20vQWRhcHRlci5oCmluZGV4IDMyOTA5ZTIuLjIwY2NhMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vQWRhcHRlci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vQWRhcHRlci5oCkBAIC00MTIsNyArNDEyLDcgQEAKIAogCS8vIHRoaXMgdG8ga2VlcCB0cmFjayBvZiB0aGUgVHggYW5kIFJ4IE1haWxCb3ggUmVnaXN0ZXJzLgogCWF0b21pY190CQkgICAgQ3Vyck51bUZyZWVUeERlc2M7Ci0JLy8gdG8ga2VlcCB0cmFjayB0aGUgbm8gb2YgYnl0ZSByZWNpZXZlZAorCS8vIHRvIGtlZXAgdHJhY2sgdGhlIG5vIG9mIGJ5dGUgcmVjZWl2ZWQKIAlVU0hPUlQJCQkJUHJldk51bVJlY3ZEZXNjczsKIAlVU0hPUlQJCQkJQ3Vyck51bVJlY3ZEZXNjczsKIAlVSU5UCQkJCXUzMlRvdGFsRFNEOwpAQCAtNTI3LDcgKzUyNyw3IEBACiAJQk9PTEVBTgkJCWJTdGF0dXNXcml0ZTsKIAlVSU5UCQkJdWlOVk1EU0RTaXplOwogCVVJTlQJCQl1aVZlbmRvckV4dG5GbGFnOwotCSAvL2l0IHdpbGwgYWx3YXlzIHJlcHJlc2VudCBjaG9vc2VkIERTRCBhdCBhbnkgcG9pbnQgb2YgdGltZS4KKwkgLy9pdCB3aWxsIGFsd2F5cyByZXByZXNlbnQgY2hvc2VuIERTRCBhdCBhbnkgcG9pbnQgb2YgdGltZS4KIAkgLy8gR2VuZXJhbGx5IGl0IGlzIEFjdGl2ZSBEU0QgYnV0IGluIGNhc2Ugb2YgTlZNIFJEL1dSIGl0IG1pZ2h0IGJlIGRpZmZlcmVudC4KIAlVSU5UCQkJdWxGbGFzaENhbFN0YXJ0OwogCVVMT05HICAgICAgICAgICAgICAgICAgIHVsRmxhc2hDb250cm9sU2VjdGlvblN0YXJ0OwpAQCAtNTQ2LDEwICs1NDYsMTAgQEAKIAlQRkxBU0hfQ1NfSU5GTyBwc0ZsYXNoQ1NJbmZvIDsKIAlQRkxBU0gyWF9WRU5ET1JTUEVDSUZJQ19JTkZPIHBzRmxhc2gyeFZlbmRvckluZm87CiAJVUlOVCB1aUZsYXNoQmFzZUFkZDsgLy9GbGFzaCBzdGFydCBhZGRyZXNzCi0JVUlOVCB1aUFjdGl2ZUlTT09mZnNldDsgLy9BY3RpdmUgSVNPIG9mZnNldCBjaG9vc2VuIGJlZm9yZSBmL3cgZG93bmxvYWQKKwlVSU5UIHVpQWN0aXZlSVNPT2Zmc2V0OyAvL0FjdGl2ZSBJU08gb2Zmc2V0IGNob3NlbiBiZWZvcmUgZi93IGRvd25sb2FkCiAJRkxBU0gyWF9TRUNUSU9OX1ZBTCBlQWN0aXZlSVNPOyAvL0FjdGl2ZSBJU08gc2VjdGlvbiB2YWwKLQlGTEFTSDJYX1NFQ1RJT05fVkFMIGVBY3RpdmVEU0Q7CS8vQWN0aXZlIERTRCB2YWwgY2hvb3NlbiBiZWZvcmUgZi93IGRvd25sb2FkCi0JVUlOVCB1aUFjdGl2ZURTRE9mZnNldEF0RndEbGQ7ICAvL0ZvciBhY2Nlc3NpbmcgQWN0aXZlIERTRCBjaG9vc2VuIGJlZm9yZSBmL3cgZG93bmxvYWQKKwlGTEFTSDJYX1NFQ1RJT05fVkFMIGVBY3RpdmVEU0Q7CS8vQWN0aXZlIERTRCB2YWwgY2hvc2VuIGJlZm9yZSBmL3cgZG93bmxvYWQKKwlVSU5UIHVpQWN0aXZlRFNET2Zmc2V0QXRGd0RsZDsgIC8vRm9yIGFjY2Vzc2luZyBBY3RpdmUgRFNEIGNob3NlbiBiZWZvcmUgZi93IGRvd25sb2FkCiAJVUlOVCB1aUZsYXNoTGF5b3V0TWFqb3JWZXJzaW9uIDsKIAlVSU5UIHVpRmxhc2hMYXlvdXRNaW5vclZlcnNpb247CiAJQk9PTEVBTiBiQWxsRFNEV3JpdGVBbGxvdyA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0NtSG9zdC5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9DbUhvc3QuYwppbmRleCA5YmUxODRmLi5jMGVlOTVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0NtSG9zdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vQ21Ib3N0LmMKQEAgLTM4NCw3ICszODQsNyBAQAogCQl9CiAJCWlmKHBzZkNTVHlwZS0+Y0NQYWNrZXRDbGFzc2lmaWNhdGlvblJ1bGUudThQcm90b2NvbCA9PSAwKQogCQl7Ci0JCQkvL3dlIGRpZG50IGdldCBwcm90b2NvbCBmaWVsZCBmaWxsZWQgaW4gYnkgdGhlIEJTCisJCQkvL3dlIGRpZG4ndCBnZXQgcHJvdG9jb2wgZmllbGQgZmlsbGVkIGluIGJ5IHRoZSBCUwogCQkJcHN0Q2xhc3NpZmllckVudHJ5LT51Y1Byb3RvY29sTGVuZ3RoPTA7CiAJCX0KIAkJZWxzZQpAQCAtODc5LDcgKzg3OSw3IEBACiAKIAkJCQkJCS8qCiAJCQkJCQkJUGFzc2luZyB0aGUgYXJndW1lbnQgdThQSFNJIGluc3RlYWQgb2YgY2xzaWQuIEJlY2F1c2UgZm9yIERMIHdpdGggbm8gY2xhc3NpZmllciBydWxlLAotCQkJCQkJCWNsc2lkIHdpbGwgYmUgemVybyBoZW5jZSB3ZSBjYW50IGhhdmUgbXVsdGlwbGUgUEhTIHJ1bGVzIGZvciB0aGUgc2FtZSBTRi4KKwkJCQkJCQljbHNpZCB3aWxsIGJlIHplcm8gaGVuY2Ugd2UgY2FuJ3QgaGF2ZSBtdWx0aXBsZSBQSFMgcnVsZXMgZm9yIHRoZSBzYW1lIFNGLgogCQkJCQkJCVRvIHN1cHBvcnQgbXVsdGlwbGUgUEhTIHJ1bGUsIHBhc3NpbmcgdThQSFNJLgogCQkJCQkJKi8KIApAQCAtMTEwMyw3ICsxMTAzLDcgQEAKIAlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgInU4VHJhZmZpY0luZGljYXRpb25QcmVmZXJlbmNlCTogMHglWCIsCiAJCXBzdEFkZEluZGljYXRpb24tPnNmQXV0aG9yaXplZFNldC51OFRyYWZmaWNJbmRpY2F0aW9uUHJlZmVyZW5jZSk7CiAKLQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgIiBUb3RhbCBDbGFzc2lmaWVycyBSZWNpZXZlZAkJOiAweCVYIixwc3RBZGRJbmRpY2F0aW9uLT5zZkF1dGhvcml6ZWRTZXQudThUb3RhbENsYXNzaWZpZXJzKTsKKwlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgIiBUb3RhbCBDbGFzc2lmaWVycyBSZWNlaXZlZAkJOiAweCVYIixwc3RBZGRJbmRpY2F0aW9uLT5zZkF1dGhvcml6ZWRTZXQudThUb3RhbENsYXNzaWZpZXJzKTsKIAogCW5DdXJDbGFzc2lmaWVyQ250ID0gcHN0QWRkSW5kaWNhdGlvbi0+c2ZBdXRob3JpemVkU2V0LnU4VG90YWxDbGFzc2lmaWVyczsKIApAQCAtMTMwNSw3ICsxMzA1LDcgQEAKIAlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgInU4VHJhZmZpY0luZGljYXRpb25QcmVmZXJlbmNlCTogMHglMDJYIiwKIAkJcHN0QWRkSW5kaWNhdGlvbi0+c2ZBZG1pdHRlZFNldC51OFRyYWZmaWNJbmRpY2F0aW9uUHJlZmVyZW5jZSk7CiAKLQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgIiBUb3RhbCBDbGFzc2lmaWVycyBSZWNpZXZlZAkJOiAweCVYIixwc3RBZGRJbmRpY2F0aW9uLT5zZkFkbWl0dGVkU2V0LnU4VG90YWxDbGFzc2lmaWVycyk7CisJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX09USEVSUywgRFVNUF9DT05UUk9MLCBEQkdfTFZMX0FMTCwgICIgVG90YWwgQ2xhc3NpZmllcnMgUmVjZWl2ZWQJCTogMHglWCIscHN0QWRkSW5kaWNhdGlvbi0+c2ZBZG1pdHRlZFNldC51OFRvdGFsQ2xhc3NpZmllcnMpOwogCiAJbkN1ckNsYXNzaWZpZXJDbnQgPSBwc3RBZGRJbmRpY2F0aW9uLT5zZkFkbWl0dGVkU2V0LnU4VG90YWxDbGFzc2lmaWVyczsKIApAQCAtMTUwMiw3ICsxNTAyLDcgQEAKIAlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgIiB1OFRyYWZmaWNJbmRpY2F0aW9uUHJlZmVyZW5jZQk6IDB4JVgiLAogCQlwc3RBZGRJbmRpY2F0aW9uLT5zZkFjdGl2ZVNldC51OFRyYWZmaWNJbmRpY2F0aW9uUHJlZmVyZW5jZSk7CiAKLQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBEVU1QX0NPTlRST0wsIERCR19MVkxfQUxMLCAgIiBUb3RhbCBDbGFzc2lmaWVycyBSZWNpZXZlZAkJOiAweCVYIixwc3RBZGRJbmRpY2F0aW9uLT5zZkFjdGl2ZVNldC51OFRvdGFsQ2xhc3NpZmllcnMpOworCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIERVTVBfQ09OVFJPTCwgREJHX0xWTF9BTEwsICAiIFRvdGFsIENsYXNzaWZpZXJzIFJlY2VpdmVkCQk6IDB4JVgiLHBzdEFkZEluZGljYXRpb24tPnNmQWN0aXZlU2V0LnU4VG90YWxDbGFzc2lmaWVycyk7CiAKIAluQ3VyQ2xhc3NpZmllckNudCA9IHBzdEFkZEluZGljYXRpb24tPnNmQWN0aXZlU2V0LnU4VG90YWxDbGFzc2lmaWVyczsKIApAQCAtMTY5Niw3ICsxNjk2LDcgQEAKIAkJLy9ObyBTcGVjaWFsIGhhbmRsaW5nIHNlbmQgdGhlIG1lc3NhZ2UgYXMgaXQgaXMKIAkJcmV0dXJuIDE7CiAJfQotCS8vIEZvciBEU0FfUkVRLCBvbmx5IHVwdG8gInBzZkF1dGhvcml6ZWRTZXQiIHBhcmFtZXRlciBzaG91bGQgYmUgYWNjZXNzZWQgYnkgZHJpdmVyIQorCS8vIEZvciBEU0FfUkVRLCBvbmx5IHVwIHRvICJwc2ZBdXRob3JpemVkU2V0IiBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFjY2Vzc2VkIGJ5IGRyaXZlciEKIAogCXBzdEFkZEluZGljYXRpb249a21hbGxvYyhzaXplb2YoKnBzdEFkZEluZGljYXRpb24pLCBHRlBfS0VSTkVMKTsKIAlpZihOVUxMPT1wc3RBZGRJbmRpY2F0aW9uKQpAQCAtMTc4OCw3ICsxNzg4LDcgQEAKIAlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfT1RIRVJTLCBDT05OX01TRywgREJHX0xWTF9BTEwsICJJbnNpZGUgUmVzdG9yZUNtQ29udHJvbFJlc3BvbnNlTWVzc2FnZSAiKTsKIAkvKgogCS8vTmVlZCB0byBBbGxvY2F0ZSBtZW1vcnkgdG8gY29udGFpbiB0aGUgU1VQRVIgTGFyZ2Ugc3RydWN0dXJlcwotCS8vT3VyIGRyaXZlciBjYW50IGNyZWF0ZSB0aGVzZSBzdHJ1Y3R1cmVzIG9uIFN0YWNrIDooCisJLy9PdXIgZHJpdmVyIGNhbid0IGNyZWF0ZSB0aGVzZSBzdHJ1Y3R1cmVzIG9uIFN0YWNrIDooCiAJKi8KIAlwc3RBZGRJbmRpY2F0aW9uRGVzdD1rbWFsbG9jKHNpemVvZihzdExvY2FsU0ZBZGRJbmRpY2F0aW9uQWx0KSwgR0ZQX0tFUk5FTCk7CiAKQEAgLTE5NTcsNyArMTk1Nyw3IEBACiB7CiAJLyoKIAkvL05lZWQgdG8gQWxsb2NhdGUgbWVtb3J5IHRvIGNvbnRhaW4gdGhlIFNVUEVSIExhcmdlIHN0cnVjdHVyZXMKLQkvL091ciBkcml2ZXIgY2FudCBjcmVhdGUgdGhlc2Ugc3RydWN0dXJlcyBvbiBTdGFjaworCS8vT3VyIGRyaXZlciBjYW4ndCBjcmVhdGUgdGhlc2Ugc3RydWN0dXJlcyBvbiBTdGFjawogCSovCiAJQWRhcHRlci0+Y2FEc3hSZXFSZXNwPWttYWxsb2Moc2l6ZW9mKHN0TG9jYWxTRkFkZEluZGljYXRpb25BbHQpK0xFQURFUl9TSVpFLCBHRlBfS0VSTkVMKTsKIAlpZighQWRhcHRlci0+Y2FEc3hSZXFSZXNwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9Ib3N0TUlCU0ludGVyZmFjZS5oIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9Ib3N0TUlCU0ludGVyZmFjZS5oCmluZGV4IGYxN2E0ZjEuLmUzNDUzMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSG9zdE1JQlNJbnRlcmZhY2UuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0hvc3RNSUJTSW50ZXJmYWNlLmgKQEAgLTYyLDcgKzYyLDcgQEAKIAlVTE9ORwkJCU51bURlc1VzZWQ7CiAJVUxPTkcJCQlDdXJyTnVtRnJlZURlc2M7CiAJVUxPTkcJCQlQcmV2TnVtRnJlZURlc2M7Ci0JLy8gdG8ga2VlcCB0cmFjayB0aGUgbm8gb2YgYnl0ZSByZWNpZXZlZAorCS8vIHRvIGtlZXAgdHJhY2sgdGhlIG5vIG9mIGJ5dGUgcmVjZWl2ZWQKIAlVTE9ORwkJCVByZXZOdW1SY2V2Qnl0ZXM7CiAJVUxPTkcJCQlDdXJyTnVtUmNldkJ5dGVzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0lQdjZQcm90b2NvbC5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9JUHY2UHJvdG9jb2wuYwppbmRleCA5MWI2ZmJlLi41YjRmZDM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0lQdjZQcm90b2NvbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vSVB2NlByb3RvY29sLmMKQEAgLTI4Nyw3ICsyODcsNyBAQAogCiAJZm9yKHVpTG9vcEluZGV4PTA7dWlMb29wSW5kZXg8dWlDb3VudElQU3JjQWRkcmVzc2VzO3VpTG9vcEluZGV4Kz11aUlwdjZBZGRyTm9Mb25nV29yZHMpCiAJewotCQlCQ01fREVCVUdfUFJJTlQoIEFkYXB0ZXIsREJHX1RZUEVfVFgsIElQVjZfREJHLCBEQkdfTFZMX0FMTCwgIlxuIFNyYyBJcHY2IEFkZHJlc3MgSW4gUmVjaWV2ZWQgUGFja2V0IDogXG4gIik7CisJCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9UWCwgSVBWNl9EQkcsIERCR19MVkxfQUxMLCAiXG4gU3JjIElwdjYgQWRkcmVzcyBJbiBSZWNlaXZlZCBQYWNrZXQgOiBcbiAiKTsKIAkJRHVtcElwdjZBZGRyZXNzKGF1bFNyY0lQKTsKIAkJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX1RYLCBJUFY2X0RCRywgREJHX0xWTF9BTEwsICJcbiBTcmMgSXB2NiBNYXNrIEluIENsYXNzaWZpZXIgUnVsZTogXG4iKTsKIAkJRHVtcElwdjZBZGRyZXNzKCZwc3RDbGFzc2lmaWVyUnVsZS0+c3RTcmNJcEFkZHJlc3MudWxJcHY2TWFza1t1aUxvb3BJbmRleF0pOwpAQCAtMzQwLDcgKzM0MCw3IEBACiAKIAlmb3IodWlMb29wSW5kZXg9MDt1aUxvb3BJbmRleDx1aUNvdW50SVBEZXN0aW5hdGlvbkFkZHJlc3Nlczt1aUxvb3BJbmRleCs9dWlJcHY2QWRkck5vTG9uZ1dvcmRzKQogCXsKLQkJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX1RYLCBJUFY2X0RCRywgREJHX0xWTF9BTEwsICJcbiBEZXN0aW5hdGlvbiBJcHY2IEFkZHJlc3MgSW4gUmVjaWV2ZWQgUGFja2V0IDogXG4gIik7CisJCUJDTV9ERUJVR19QUklOVCggQWRhcHRlcixEQkdfVFlQRV9UWCwgSVBWNl9EQkcsIERCR19MVkxfQUxMLCAiXG4gRGVzdGluYXRpb24gSXB2NiBBZGRyZXNzIEluIFJlY2VpdmVkIFBhY2tldCA6IFxuICIpOwogCQlEdW1wSXB2NkFkZHJlc3MoYXVsRGVzdElQKTsKIAkJQkNNX0RFQlVHX1BSSU5UKCBBZGFwdGVyLERCR19UWVBFX1RYLCBJUFY2X0RCRywgREJHX0xWTF9BTEwsICJcbiBEZXN0aW5hdGlvbiBJcHY2IE1hc2sgSW4gQ2xhc3NpZmllciBSdWxlOiBcbiIpOwogCQlEdW1wSXB2NkFkZHJlc3MoJnBzdENsYXNzaWZpZXJSdWxlLT5zdERlc3RJcEFkZHJlc3MudWxJcHY2TWFza1t1aUxvb3BJbmRleF0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VJZGxlTW9kZS5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VJZGxlTW9kZS5jCmluZGV4IGJmNWMwYWQuLjk2ZmE0ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlSWRsZU1vZGUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZUlkbGVNb2RlLmMKQEAgLTExLDcgKzExLDcgQEAKIAogCiBSZXR1cm46CQkJCUJDTV9TVEFUVVNfU1VDQ0VTUyAtIElmIFdha2V1cCBvZiB0aGUgSFcgSW50ZXJmYWNlIHdhcyBzdWNjZXNzZnVsLgotCQkJCQkJT3RoZXIgICAgICAgICAgIC0gSWYgYW4gZXJyb3Igb2NjdXJlZC4KKwkJCQkJCU90aGVyICAgICAgICAgICAtIElmIGFuIGVycm9yIG9jY3VycmVkLgogKi8KIAogCkBAIC0yNiw3ICsyNiw3IEBACiAKIAogUmV0dXJuOgkJCQlCQ01fU1RBVFVTX1NVQ0NFU1MgLSBJZiBJZGxlIG1vZGUgcmVzcG9uc2UgcmVsYXRlZCBIVyBjb25maWd1cmF0aW9uIHdhcyBzdWNjZXNzZnVsLgotCQkJCQkJT3RoZXIgICAgICAgICAgIC0gSWYgYW4gZXJyb3Igb2NjdXJlZC4KKwkJCQkJCU90aGVyICAgICAgICAgICAtIElmIGFuIGVycm9yIG9jY3VycmVkLgogKi8KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlSXNyLmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZUlzci5jCmluZGV4IDIyMGZmOTIuLjY3NzE5ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlSXNyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VJc3IuYwpAQCAtODAsOCArODAsOCBAQAogCQl9CiAJCWNhc2UgLUVJTlBST0dSRVNTOgogCQl7Ci0JCQkvL1RoaXMgc2l0dWF0aW9uIG1heSBoYXBwZW5kIHdoZW4gVVJCdW5saW5rIGlzIHVzZWQuIGZvciBkZXRhaWwgY2hlY2sgdXNiX3VubGlua191cmIgZG9jdW1lbnRhdGlvbi4KLQkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX09USEVSUywgSU5URl9JTklULCBEQkdfTFZMX0FMTCwiSW1wb3NzaWJlIGNvbmRpdGlvbiBoYXMgb2NjdXJlZC4uLiBzb21ldGhpbmcgdmVyeSBiYWQgaXMgZ29pbmcgb24iKTsKKwkJCS8vVGhpcyBzaXR1YXRpb24gbWF5IGhhcHBlbmVkIHdoZW4gVVJCdW5saW5rIGlzIHVzZWQuIGZvciBkZXRhaWwgY2hlY2sgdXNiX3VubGlua191cmIgZG9jdW1lbnRhdGlvbi4KKwkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX09USEVSUywgSU5URl9JTklULCBEQkdfTFZMX0FMTCwiSW1wb3NzaWJlIGNvbmRpdGlvbiBoYXMgb2NjdXJyZWQuLi4gc29tZXRoaW5nIHZlcnkgYmFkIGlzIGdvaW5nIG9uIik7CiAJCQlicmVhayA7CiAJCQkvL3JldHVybjsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VSeC5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9JbnRlcmZhY2VSeC5jCmluZGV4IDUzM2Y4ZWIuLjgwNmVmNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSW50ZXJmYWNlUnguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0ludGVyZmFjZVJ4LmMKQEAgLTM0LDcgKzM0LDcgQEAKIAlyZXR1cm4gcFJjYjsKIH0KIAotLyp0aGlzIGlzIHJlY2VpdmUgY2FsbCBiYWNrIC0gd2hlbiBwa3QgYXZpbGFibGUgZm9yIHJlY2VpdmUgKEJVTEsgSU4tIGVuZCBwb2ludCkqLworLyp0aGlzIGlzIHJlY2VpdmUgY2FsbCBiYWNrIC0gd2hlbiBwa3QgYXZhaWxhYmxlIGZvciByZWNlaXZlIChCVUxLIElOLSBlbmQgcG9pbnQpKi8KIHN0YXRpYyB2b2lkIHJlYWRfYnVsa19jYWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpCiB7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CkBAIC0xMjMsNyArMTIzLDcgQEAKIAlpZigobnRvaHMocExlYWRlci0+VmNpZCkgPT0gVkNJRF9DT05UUk9MX1BBQ0tFVCkgfHwKIAkgICAgKCEocExlYWRlci0+U3RhdHVzID49IDB4MjAgICYmICBwTGVhZGVyLT5TdGF0dXMgPD0gMHgzRikpKQogCXsKLQkgICAgQkNNX0RFQlVHX1BSSU5UKHBzSW50ZkFkYXB0ZXItPnBzQWRhcHRlcixEQkdfVFlQRV9SWCwgUlhfQ1RSTCwgREJHX0xWTF9BTEwsICJSZWNpdmVkIGNvbnRyb2wgcGt0Li4uIik7CisJICAgIEJDTV9ERUJVR19QUklOVChwc0ludGZBZGFwdGVyLT5wc0FkYXB0ZXIsREJHX1RZUEVfUlgsIFJYX0NUUkwsIERCR19MVkxfQUxMLCAiUmVjZWl2ZWQgY29udHJvbCBwa3QuLi4iKTsKIAkJKihQVVNIT1JUKXNrYi0+ZGF0YSA9IHBMZWFkZXItPlN0YXR1czsKICAgICAgICAJbWVtY3B5KHNrYi0+ZGF0YStzaXplb2YoVVNIT1JUKSwgdXJiLT50cmFuc2Zlcl9idWZmZXIgKwogCQkJKHNpemVvZihMRUFERVIpKSwgcExlYWRlci0+UExlbmd0aCk7CkBAIC0xNDIsNyArMTQyLDcgQEAKIAkJICAqIERhdGEgUGFja2V0LCBGb3JtYXQgYSBwcm9wZXIgRXRoZXJuZXQgSGVhZGVyCiAgICAgICAgIAkgICogYW5kIGdpdmUgaXQgdG8gdGhlIHN0YWNrCiAJCSAgKi8KLSAgICAgICAgQkNNX0RFQlVHX1BSSU5UKHBzSW50ZkFkYXB0ZXItPnBzQWRhcHRlcixEQkdfVFlQRV9SWCwgUlhfREFUQSwgREJHX0xWTF9BTEwsICJSZWNpdmVkIERhdGEgcGt0Li4uIik7CisgICAgICAgIEJDTV9ERUJVR19QUklOVChwc0ludGZBZGFwdGVyLT5wc0FkYXB0ZXIsREJHX1RZUEVfUlgsIFJYX0RBVEEsIERCR19MVkxfQUxMLCAiUmVjZWl2ZWQgRGF0YSBwa3QuLi4iKTsKIAkJc2tiX3Jlc2VydmUoc2tiLCAyICsgU0tCX1JFU0VSVkVfUEhTX0JZVEVTKTsKIAkJbWVtY3B5KHNrYi0+ZGF0YStFVEhfSExFTiwgKFBVQ0hBUil1cmItPnRyYW5zZmVyX2J1ZmZlciArIHNpemVvZihMRUFERVIpLCBwTGVhZGVyLT5QTGVuZ3RoKTsKIAkJc2tiLT5kZXYgPSBBZGFwdGVyLT5kZXY7CkBAIC0xNTEsNyArMTUxLDcgQEAKIAkJc2tiX3B1dCAoc2tiLCBwTGVhZGVyLT5QTGVuZ3RoICsgRVRIX0hMRU4pOwogCQlBZGFwdGVyLT5QYWNrSW5mb1tRdWV1ZUluZGV4XS51aVRvdGFsUnhCeXRlcys9cExlYWRlci0+UExlbmd0aDsKIAkJQWRhcHRlci0+UGFja0luZm9bUXVldWVJbmRleF0udWlUaGlzUGVyaW9kUnhCeXRlcys9IHBMZWFkZXItPlBMZW5ndGg7Ci0gICAgICAgIEJDTV9ERUJVR19QUklOVChwc0ludGZBZGFwdGVyLT5wc0FkYXB0ZXIsREJHX1RZUEVfUlgsIFJYX0RBVEEsIERCR19MVkxfQUxMLCAiUmVjaXZlZCBEYXRhIHBrdCBvZiBsZW4gOjB4JVgiLCBwTGVhZGVyLT5QTGVuZ3RoKTsKKyAgICAgICAgQkNNX0RFQlVHX1BSSU5UKHBzSW50ZkFkYXB0ZXItPnBzQWRhcHRlcixEQkdfVFlQRV9SWCwgUlhfREFUQSwgREJHX0xWTF9BTEwsICJSZWNlaXZlZCBEYXRhIHBrdCBvZiBsZW4gOjB4JVgiLCBwTGVhZGVyLT5QTGVuZ3RoKTsKIAogCQlpZihuZXRpZl9ydW5uaW5nKEFkYXB0ZXItPmRldikpCiAJCXsKQEAgLTIzNyw3ICsyMzcsNyBAQAogCiAKIFJldHVybjoJCQkJVFJVRSAgLSBJZiBSeCB3YXMgc3VjY2Vzc2Z1bC4KLQkJCQkJT3RoZXIgLSBJZiBhbiBlcnJvciBvY2N1cmVkLgorCQkJCQlPdGhlciAtIElmIGFuIGVycm9yIG9jY3VycmVkLgogKi8KIAogQk9PTEVBTiBJbnRlcmZhY2VSeCAoUFNfSU5URVJGQUNFX0FEQVBURVIgcHNJbnRmQWRhcHRlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vSW9jdGwuaCBiL2RyaXZlcnMvc3RhZ2luZy9iY20vSW9jdGwuaAppbmRleCBlNGY4ZWI3Li5mODU5Y2YxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0lvY3RsLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9Jb2N0bC5oCkBAIC0yNDEsNyArMjQxLDcgQEAKIAogdHlwZWRlZiBlbnVtIF9GTEFTSDJYX1NFQ1RJT05fVkFMCiB7Ci0JTk9fU0VDVElPTl9WQUwgPSAwLCAvL25vIHNlY3Rpb24gaXMgY2hvb3NlbiB3aGVuIGFic29sdXRlIG9mZnNldCBpcyBnaXZlbiBmb3IgUkQvV1IKKwlOT19TRUNUSU9OX1ZBTCA9IDAsIC8vbm8gc2VjdGlvbiBpcyBjaG9zZW4gd2hlbiBhYnNvbHV0ZSBvZmZzZXQgaXMgZ2l2ZW4gZm9yIFJEL1dSCiAJSVNPX0lNQUdFMSwKIAlJU09fSU1BR0UyLAogCURTRDAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL0xlYWt5QnVja2V0LmMgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL0xlYWt5QnVja2V0LmMKaW5kZXggZjRjZjQxYy4uYTU1ZDQyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9MZWFreUJ1Y2tldC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vTGVha3lCdWNrZXQuYwpAQCAtMjEzLDcgKzIxMyw3IEBACiAJCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfVFgsIFRYX1BBQ0tFVFMsIERCR19MVkxfQUxMLCAiRm9yIFF1ZXVlOiAlemRcbiIsIHBzU0YtQWRhcHRlci0+UGFja0luZm8pOwogCQkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX1RYLCBUWF9QQUNLRVRTLCBEQkdfTFZMX0FMTCwgIlxuQXZhaWxhYmxlIFRva2VucyA9ICVkIHJlcXVpcmVkID0gJWRcbiIsCiAJCQkJCXBzU0YtPnVpQ3VycmVudFRva2VuQ291bnQsIGlQYWNrZXRMZW4pOwotCQkJCS8vdGhpcyBwYXJ0IGluZGljYXRlcyB0aGF0IGJlY3Vhc2Ugb2Ygbm9uLWF2YWlsYWJpbGl0eSBvZiB0aGUgdG9rZW5zCisJCQkJLy90aGlzIHBhcnQgaW5kaWNhdGVzIHRoYXQgYmVjYXVzZSBvZiBub24tYXZhaWxhYmlsaXR5IG9mIHRoZSB0b2tlbnMKIAkJCQkvL3BrdCBoYXMgbm90IGJlZW4gc2VuZCBvdXQgaGVuY2Ugc2V0dGluZyB0aGUgcGVuZGluZyBmbGFnIGluZGljYXRpbmcgdGhlIGhvc3QgdG8gc2VuZCBpdCBvdXQKIAkJCQkvL2ZpcnN0IG5leHQgaXRlcmF0aW9uICAuCiAJCQkJcHNTRi0+dWlQZW5kZWRMYXN0ID0gVFJVRTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9iY20vTWlzYy5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9NaXNjLmMKaW5kZXggZDYyNGYzNS4uYzUwMDNiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9NaXNjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9NaXNjLmMKQEAgLTYwMiw3ICs2MDIsNyBAQAogCQkJCUFkYXB0ZXItPkxpbmtTdGF0dXM9TElOS1VQX0RPTkU7CiAJCQkJQWRhcHRlci0+YlBIU0VuYWJsZWQgPSAqKHB1Y0J1ZmZlciszKTsKICAgICAgICAgICAgICAgIAlBZGFwdGVyLT5iRVRIQ1NFbmFibGVkID0gKihwdWNCdWZmZXIrNCkgJiBFVEhfQ1NfTUFTSzsKLQkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIDAsIDAsICJQSFMgU3VwcG9ydCBTdGF0dXMgUmVjaWV2ZWQgSW4gTGlua1VwIEFjayA6ICV4IFxuIixBZGFwdGVyLT5iUEhTRW5hYmxlZCk7CisJCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfUFJJTlRLLCAwLCAwLCAiUEhTIFN1cHBvcnQgU3RhdHVzIFJlY2VpdmVkIEluIExpbmtVcCBBY2sgOiAleCBcbiIsQWRhcHRlci0+YlBIU0VuYWJsZWQpOwogCQkJCWlmKChGQUxTRSA9PSBBZGFwdGVyLT5iU2h1dFN0YXR1cykmJgogCQkJCQkoRkFMU0UgPT0gQWRhcHRlci0+SWRsZU1vZGUpKQogCQkJCXsKQEAgLTExNTMsNyArMTE1Myw3IEBACiAKIAkvKgogICAgICAqIDEuIElmIHRoZSBMRUQgU2V0dGluZ3MgZmFpbHMsIGRvIG5vdCBzdG9wIGFuZCBkbyB0aGUgRmlybXdhcmUgZG93bmxvYWQuCi0gICAgICogMi4gVGhpcyBpbml0IHdvdWxkIGhhcHBlbmQgb25seSBpZiB0aGUgY2ZnIGZpbGUgaXMgcHJlc2VudCwgZWxzZQorICAgICAqIDIuIFRoaXMgaW5pdCB3b3VsZCBoYXBwZW5lZCBvbmx5IGlmIHRoZSBjZmcgZmlsZSBpcyBwcmVzZW50LCBlbHNlCiAgICAgICogICAgY2FsbCBmcm9tIHRoZSBpb2N0bCBjb250ZXh0LgogICAgICAqLwogCkBAIC0xMTg1LDcgKzExODUsNyBAQAogCQlzdGF0dXMgPSBQcm9wYWdhdGVDYWxQYXJhbXNGcm9tRmxhc2hUb01lbW9yeShwc19hZGFwdGVyKTsKIAkJaWYoc3RhdHVzKQogCQl7Ci0JCQlCQ01fREVCVUdfUFJJTlQocHNfYWRhcHRlcixEQkdfVFlQRV9JTklURVhJVCwgTVBfSU5JVCwgREJHX0xWTF9BTEwsIiBQcm9wb2dhdGlvbiBvZiBDYWwgcGFyYW0gZmFpbGVkIC4uIiApOworCQkJQkNNX0RFQlVHX1BSSU5UKHBzX2FkYXB0ZXIsREJHX1RZUEVfSU5JVEVYSVQsIE1QX0lOSVQsIERCR19MVkxfQUxMLCIgUHJvcGFnYXRpb24gb2YgQ2FsIHBhcmFtIGZhaWxlZCAuLiIgKTsKIAkJCWdvdG8gT1VUOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JjbS9Rb3MuYyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vUW9zLmMKaW5kZXggZmVhZGU5NC4uYzk3MDIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JjbS9Rb3MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYmNtL1Fvcy5jCkBAIC03MjcsNyArNzI3LDcgQEAKIAogCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLCBEQkdfVFlQRV9UWCwgSVBWNF9EQkcsIERCR19MVkxfQUxMLCAgIiVzICBDTFMgVXNlclByaW86JXggQ0xTIFZMQU5JRDoleFxuIixfX0ZVTkNUSU9OX18sbnRvaHMoKigoVVNIT1JUICopcHN0Q2xhc3NpZmllclJ1bGUtPnVzVXNlclByaW9yaXR5KSkscHN0Q2xhc3NpZmllclJ1bGUtPnVzVkxBTklEKTsKIAotCS8qIEluIGNhc2UgRlcgZGlkbid0IHJlY2lldmUgdGhlIFRMViwgdGhlIHByaW9yaXR5IGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkICovCisJLyogSW4gY2FzZSBGVyBkaWRuJ3QgcmVjZWl2ZSB0aGUgVExWLCB0aGUgcHJpb3JpdHkgZmllbGQgc2hvdWxkIGJlIGlnbm9yZWQgKi8KIAlpZihwc3RDbGFzc2lmaWVyUnVsZS0+dXNWYWxpZGl0eUJpdE1hcCAmICgxPDxQS1RfQ0xBU1NJRklDQVRJT05fVVNFUl9QUklPUklUWV9WQUxJRCkpCiAJewogCQlpZihwc3RFdGhDc1BrdEluZm8tPmVOd3BrdEV0aEZyYW1lVHlwZSE9ZUV0aDgwMlFWTEFORnJhbWUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL2NudHJsX1NpZ25hbGluZ0ludGVyZmFjZS5oIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9jbnRybF9TaWduYWxpbmdJbnRlcmZhY2UuaAppbmRleCA4OTA3Nzg0Li5hYjEzMTgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL2NudHJsX1NpZ25hbGluZ0ludGVyZmFjZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vY250cmxfU2lnbmFsaW5nSW50ZXJmYWNlLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgVkVORE9SX1BIU19QQVJBTV9MRU5HVEggMTAKICNkZWZpbmUgTUFYX05VTV9BQ1RJVkVfQlMgMTAKICNkZWZpbmUgQVVUSF9UT0tFTl9MRU5HVEgJMTAKLSNkZWZpbmUgTlVNX0hBUlFfQ0hBTk5FTFMJMTYJLy9DaGFuZ2VkIGZyb20gMTAgdG8gMTYgdG8gYWNjb21vZGF0ZSBhbGwgSEFSUSBjaGFubmVscworI2RlZmluZSBOVU1fSEFSUV9DSEFOTkVMUwkxNgkvL0NoYW5nZWQgZnJvbSAxMCB0byAxNiB0byBhY2NvbW1vZGF0ZSBhbGwgSEFSUSBjaGFubmVscwogI2RlZmluZSBWRU5ET1JfQ0xBU1NJRklFUl9QQVJBTV9MRU5HVEggMSAvL0NoYW5nZWQgdGhlIHNpemUgdG8gMSBieXRlIHNpbmNlIHdlIGRudCB1c2UgaXQKICNkZWZpbmUgIFZFTkRPUl9TUEVDSUZfUU9TX1BBUkFNIDEKICNkZWZpbmUgVkVORE9SX1BIU19QQVJBTV9MRU5HVEgJMTAKQEAgLTEwOSwxMyArMTA5LDEzIEBACiAgICAgQl9VSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICB1OFBIU0k7CiAJLyoqICBQSFNGIExlbmd0aCBPZiBUaGUgU2VydmljZSBGbG93Ki8KICAgICBCX1VJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIHU4UEhTRkxlbmd0aDsKLSAgICAvKiogU3RyaW5nIG9mIGJ5dGVzIGNvbnRhaW5pbmcgaGVhZGVyIGluZm9ybWF0aW9uIHRvIGJlIHN1cHJlc3NlZCBieSB0aGUgc2VuZGluZyBDUyBhbmQgcmVjb25zdHJ1Y3RlZCBieSB0aGUgcmVjZWl2aW5nIENTKi8KKyAgICAvKiogU3RyaW5nIG9mIGJ5dGVzIGNvbnRhaW5pbmcgaGVhZGVyIGluZm9ybWF0aW9uIHRvIGJlIHN1cHByZXNzZWQgYnkgdGhlIHNlbmRpbmcgQ1MgYW5kIHJlY29uc3RydWN0ZWQgYnkgdGhlIHJlY2VpdmluZyBDUyovCiAgICAgQl9VSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICB1OFBIU0ZbTUFYX1BIU19MRU5HVEhTXTsKIAkvKiogIFBIU00gTGVuZ3RoIE9mIFRoZSBTZXJ2aWNlIEZsb3cqLwogICAgIEJfVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgdThQSFNNTGVuZ3RoOwogCS8qKiAgUEhTIE1hc2sgZm9yIHRoZSBTRiovCiAgICAgQl9VSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICB1OFBIU01bTUFYX1BIU19MRU5HVEhTXTsKLQkvKiogIDhiaXQgVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHN1cHJlc3NlZCBmb3IgdGhlIFNlcnZpY2UgRmxvdyovCisJLyoqICA4Yml0IFRvdGFsIG51bWJlciBvZiBieXRlcyB0byBiZSBzdXBwcmVzc2VkIGZvciB0aGUgU2VydmljZSBGbG93Ki8KICAgICBCX1VJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgIHU4UEhTUzsKIAkvKiogIDhiaXQgSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IFBhY2tldCBIZWFkZXIgY29udGVudHMgbmVlZCB0byBiZSB2ZXJpZmllZCBwcmlvciB0byBzdXByZXNzaW9uICovCiAgICAgQl9VSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICB1OFBIU1Y7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYmNtL252bS5jIGIvZHJpdmVycy9zdGFnaW5nL2JjbS9udm0uYwppbmRleCBjNzI5MjM3Li40ZGE1YjdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYmNtL252bS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9iY20vbnZtLmMKQEAgLTMxMyw3ICszMTMsNyBAQAogLy8JCXVpTnVtQnl0ZXMgLSBOdW1iZXIgb2YgYnl0ZXMgdG8gYmUgcmVhZCBmcm9tIHRoZSBFRVBST00uCiAvLwogLy8gUmV0dXJuczoKLS8vCQlPU0FMX1NUQVRVU19TVUNDRVNTIC0gaWYgRUVQUk9NIHJlYWQgaXMgc3VjY2Vzc2Z1bGwuCisvLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIEVFUFJPTSByZWFkIGlzIHN1Y2Nlc3NmdWwuCiAvLwkJPEZBSUxVUkU+CQkJLSBpZiBmYWlsZWQuCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTQzMSw3ICs0MzEsNyBAQAogLy8JCXVpTnVtQnl0ZXMgLSBOdW1iZXIgb2YgYnl0ZXMgdG8gYmUgcmVhZCBmcm9tIHRoZSBGTEFTSC4KIC8vCiAvLyBSZXR1cm5zOgotLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBGTEFTSCByZWFkIGlzIHN1Y2Nlc3NmdWxsLgorLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBGTEFTSCByZWFkIGlzIHN1Y2Nlc3NmdWwuCiAvLwkJPEZBSUxVUkU+CQkJLSBpZiBmYWlsZWQuCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTExNzQsNyArMTE3NCw3IEBACiAJaWYoTlVMTCA9PSBwVGVtcEJ1ZmYpCiAJCWdvdG8gQmVjZWVtRmxhc2hCdWxrV3JpdGVfRVhJVDsKIC8vCi0vLyBjaGVjayBpZiB0aGUgZGF0YSB0byBiZSB3cml0dGVuIGlzIG92ZXJsYXBwZWQgYWNjcm9zcyBzZWN0b3JzCisvLyBjaGVjayBpZiB0aGUgZGF0YSB0byBiZSB3cml0dGVuIGlzIG92ZXJsYXBwZWQgYWNyb3NzIHNlY3RvcnMKIC8vCiAJaWYodWlPZmZzZXQrdWlOdW1CeXRlcyA8IHVpU2VjdEJvdW5kYXJ5KQogCXsKQEAgLTEzOTAsNyArMTM5MCw3IEBACiAJCWdvdG8gQmVjZWVtRmxhc2hCdWxrV3JpdGVTdGF0dXNfRVhJVDsKIAogLy8KLS8vIGNoZWNrIGlmIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4gaXMgb3ZlcmxhcHBlZCBhY2Nyb3NzIHNlY3RvcnMKKy8vIGNoZWNrIGlmIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4gaXMgb3ZlcmxhcHBlZCBhY3Jvc3Mgc2VjdG9ycwogLy8KIAlpZih1aU9mZnNldCt1aU51bUJ5dGVzIDwgdWlTZWN0Qm91bmRhcnkpCiAJewpAQCAtMjAyMCw3ICsyMDIwLDcgQEAKIC8vCQl1aU51bUJ5dGVzIC0gTnVtYmVyIG9mIGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSB0aGUgTlZNLgogLy8KIC8vIFJldHVybnM6Ci0vLwkJT1NBTF9TVEFUVVNfU1VDQ0VTUyAtIGlmIE5WTSByZWFkIGlzIHN1Y2Nlc3NmdWxsLgorLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBOVk0gcmVhZCBpcyBzdWNjZXNzZnVsLgogLy8JCTxGQUlMVVJFPgkJCS0gaWYgZmFpbGVkLgogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMDgzLDcgKzIwODMsNyBAQAogLy8JCXVpTnVtQnl0ZXMgLSBOdW1iZXIgb2YgYnl0ZXMgdG8gYmUgd3JpdHRlbi4uCiAvLwogLy8gUmV0dXJuczoKLS8vCQlPU0FMX1NUQVRVU19TVUNDRVNTIC0gaWYgTlZNIHdyaXRlIGlzIHN1Y2Nlc3NmdWxsLgorLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBOVk0gd3JpdGUgaXMgc3VjY2Vzc2Z1bC4KIC8vCQk8RkFJTFVSRT4JCQktIGlmIGZhaWxlZC4KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjIxOCw3ICsyMjE4LDcgQEAKIC8vICAgICAgICAgIHVpU2VjdG9yU2l6ZSAtIHNlY3RvciBzaXplCiAvLwogLy8gUmV0dXJuczoKLS8vCQlPU0FMX1NUQVRVU19TVUNDRVNTIC0gaWYgTlZNIHdyaXRlIGlzIHN1Y2Nlc3NmdWxsLgorLy8JCU9TQUxfU1RBVFVTX1NVQ0NFU1MgLSBpZiBOVk0gd3JpdGUgaXMgc3VjY2Vzc2Z1bC4KIC8vCQk8RkFJTFVSRT4JCQktIGlmIGZhaWxlZC4KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjQzMCw3ICsyNDMwLDcgQEAKICpJbnB1dCBQYXJhbWV0ZXI6CiAqCQlBZGFwdGVyIGRhdGEgc3RydWN0dXJlCiAqUmV0dXJuIFZhbHVlIDoKLSoJCTAuIG1lYW5zIHN1Y2VzczsKKyoJCTAuIG1lYW5zIHN1Y2Nlc3M7CiAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMjk5OCw3ICsyOTk4LDcgQEAKIAkvKgogCSoJQ29uc2lkZXJpbmcgYWxsIHRoZSBzZWN0aW9uIGZvciB3aGljaCBlbmQgb2Zmc2V0IGNhbiBiZSBjYWxjdWxhdGVkIG9yIGRpcmVjdGx5IGdpdmVuCiAJKglpbiBDUyBTdHJ1Y3R1cmUuIGlmIG1hdGNoaW5nIGNhc2UgZG9lcyBub3QgZXhpc3QsIHJldHVybiBTVEFUVVNfRkFJTFVSRSBpbmRpY2F0aW5nIHNlY3Rpb24KLQkqCWVuZG9mZnNldCBjYW4ndCBiZSBjYWxjdWxhdGVkIG9yIGdpdmVuIGluIENTIFN0dWN0dXJlLgorCSoJZW5kb2Zmc2V0IGNhbid0IGJlIGNhbGN1bGF0ZWQgb3IgZ2l2ZW4gaW4gQ1MgU3RydWN0dXJlLgogCSovCiAKIAlJTlQgU2VjdFN0YXJ0T2Zmc2V0ID0gMCA7CkBAIC0zMTczLDcgKzMxNzMsNyBAQAogKglAdWlOdW1CeXRlcyA6IE51bWJlciBvZiBCeXRlcyBmb3IgUmVhZAogKgogKglSZXR1cm4gdmFsdWU6LQotKgkJcmV0dXJuIHRydWUgb24gc3VjZXNzIGFuZCBTVEFUVVNfRkFJTFVSRSBvbiBmYWlsLgorKgkJcmV0dXJuIHRydWUgb24gc3VjY2VzcyBhbmQgU1RBVFVTX0ZBSUxVUkUgb24gZmFpbC4KICovCiAKIElOVCBCY21GbGFzaDJ4QnVsa1JlYWQoCkBAIC0zMjQxLDcgKzMyNDEsNyBAQAogKglAdWlOdW1CeXRlcyA6IE51bWJlciBvZiBCeXRlcyBmb3IgV3JpdGUKICoKICoJUmV0dXJuIHZhbHVlOi0KLSoJCXJldHVybiB0cnVlIG9uIHN1Y2VzcyBhbmQgU1RBVFVTX0ZBSUxVUkUgb24gZmFpbC4KKyoJCXJldHVybiB0cnVlIG9uIHN1Y2Nlc3MgYW5kIFNUQVRVU19GQUlMVVJFIG9uIGZhaWwuCiAqCiAqLwogCkBAIC0zMzA4LDcgKzMzMDgsNyBAQAogKglAQWRhcHRlciA6LURyaXZlcnMgcHJpdmF0ZSBEYXRhIFN0cnVjdHVyZQogKgogKglSZXR1cm4gVmFsdWU6LQotKgkJUmV0dXJuIFNUQVRVU19TVUNFU1MgaWYgZ2V0IHN1Y2VzcyBpbiBzZXR0aW5nIHRoZSByaWdodCBEU0QgZWxzZSBuZWdhaXZlIGVycm9yIGNvZGUKKyoJCVJldHVybiBTVEFUVVNfU1VDRVNTIGlmIGdldCBzdWNjZXNzIGluIHNldHRpbmcgdGhlIHJpZ2h0IERTRCBlbHNlIG5lZ2FpdmUgZXJyb3IgY29kZQogKgogKiovCiBzdGF0aWMgSU5UIEJjbUdldEFjdGl2ZURTRChQTUlOSV9BREFQVEVSIEFkYXB0ZXIpCkBAIC0zMzg0LDcgKzMzODQsNyBAQAogKglAdWlPZmZzZXQgOiBPZmZzZXQgcHJvdmlkZWQgaW4gdGhlIEZsYXNoCiAqCiAqCVJldHVybiBWYWx1ZTotCi0qCVN1Y2VzczotVFJVRSAsICBvZmZzZXQgaXMgd3JpdGFibGUKKyoJU3VjY2VzczotVFJVRSAsICBvZmZzZXQgaXMgd3JpdGFibGUKICoJRmFpbHVyZTotRkFMU0UsIG9mZnNldCBpcyBSTwogKgogKiovCkBAIC0zNDQxLDcgKzM0NDEsNyBAQAogCUBBZGFwdGVyOi1Ecml2ZXIgcHJpdmF0ZSBEYXRhIFN0cnVjdHVyZQogKgogKglSZXR1cm4gdmFsdWU6LQotKglTdWNlc3M6LSBTVEFUVVNfU1VDRVNTCisqCVN1Y2Nlc3M6LSBTVEFUVVNfU1VDRVNTCiAqCUZhaWx1cmU6LSBuZWdhdGl2ZSBlcnJvciBjb2RlCiAqKi8KIApAQCAtMzc4Myw3ICszNzgzLDcgQEAKIAkJCQkJLy8gVGhpcyBpcyBhIFNQRUNJQUwgQ2FzZSB3aGljaCB3aWxsIG9ubHkgaGFwcGVuIGlmIHRoZSBjdXJyZW50IGhpZ2hlc3QgcHJpb3JpdHkgSVNPIGhhcyBwcmlvcml0eSB2YWx1ZSA9IDB4N0ZGRkZGRkYuCiAJCQkJCS8vIFdlIHdpbGwgd3JpdGUgMSB0byB0aGUgY3VycmVudCBIaWdoZXN0IHByaW9yaXR5IElTTyBBbmQgdGhlbiBzaGFsbCBpbmNyZWFzZSB0aGUgcHJpb3JpdHkgb2YgdGhlIHJlcXVlc3RlZCBJU08KIAkJCQkJLy8gYnkgdXNlcgotCQkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIE5WTV9SVywgREJHX0xWTF9BTEwsICJTZWN0SW1hZ2VQcmlvcml0eSB3cmFwYXJvdW5kIGhhcHBlbmQsIGVGbGFzaDJ4U2VjdFZhbDogMHgleFxuIixlRmxhc2gyeFNlY3RWYWwpOworCQkJCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9PVEhFUlMsIE5WTV9SVywgREJHX0xWTF9BTEwsICJTZWN0SW1hZ2VQcmlvcml0eSB3cmFwYXJvdW5kIGhhcHBlbmVkLCBlRmxhc2gyeFNlY3RWYWw6IDB4JXhcbiIsZUZsYXNoMnhTZWN0VmFsKTsKIAkJCQkJU2VjdEltYWdlUHJpb3JpdHkgPSBodG9ubCgweDEpOwogCQkJCQlTdGF0dXMgPSBCY21GbGFzaDJ4QnVsa1dyaXRlKEFkYXB0ZXIsCiAJCQkJCQkJCSZTZWN0SW1hZ2VQcmlvcml0eSwKQEAgLTM4NTMsNyArMzg1Myw3IEBACiAJCQkJCS8vIFRoaXMgaXMgYSBTUEVDSUFMIENhc2Ugd2hpY2ggd2lsbCBvbmx5IGhhcHBlbiBpZiB0aGUgY3VycmVudCBoaWdoZXN0IHByaW9yaXR5IERTRCBoYXMgcHJpb3JpdHkgdmFsdWUgPSAweDdGRkZGRkZGLgogCQkJCQkvLyBXZSB3aWxsIHdyaXRlIDEgdG8gdGhlIGN1cnJlbnQgSGlnaGVzdCBwcmlvcml0eSBEU0QgQW5kIHRoZW4gc2hhbGwgaW5jcmVhc2UgdGhlIHByaW9yaXR5IG9mIHRoZSByZXF1ZXN0ZWQgRFNECiAJCQkJCS8vIGJ5IHVzZXIKLQkJCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfUFJJTlRLLCBOVk1fUlcsIERCR19MVkxfQUxMLCAiU2VjdEltYWdlUHJpb3JpdHkgd3JhcGFyb3VuZCBoYXBwZW5kLCBlRmxhc2gyeFNlY3RWYWw6IDB4JXhcbiIsZUZsYXNoMnhTZWN0VmFsKTsKKwkJCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfUFJJTlRLLCBOVk1fUlcsIERCR19MVkxfQUxMLCAiU2VjdEltYWdlUHJpb3JpdHkgd3JhcGFyb3VuZCBoYXBwZW5lZCwgZUZsYXNoMnhTZWN0VmFsOiAweCV4XG4iLGVGbGFzaDJ4U2VjdFZhbCk7CiAJCQkJCVNlY3RJbWFnZVByaW9yaXR5ID0gaHRvbmwoMHgxKTsKIAogCQkJCQlTdGF0dXMgPSBCY21GbGFzaDJ4QnVsa1dyaXRlKEFkYXB0ZXIsCkBAIC00MTE5LDcgKzQxMTksNyBAQAogCQkJCQkJCQkJCQkJTUFYX1JXX1NJWkUpOwogCQkJCUlzVGhpc0hlYWRlclNlY3RvciA9IEZBTFNFIDsKIAkJCX0KLQkJCS8vc3Vic3RyYWN0aW5nIHRoZSB3cml0dGVuIERhdGEKKwkJCS8vc3VidHJhY3RpbmcgdGhlIHdyaXR0ZW4gRGF0YQogCQkJdWlUb3RhbERhdGFUb0NvcHkgPSB1aVRvdGFsRGF0YVRvQ29weSAtIEFkYXB0ZXItPnVpU2VjdG9yU2l6ZSA7CiAJCX0KIApAQCAtNDI1MCw3ICs0MjUwLDcgQEAKIAkJCQlJc1RoaXNIZWFkZXJTZWN0b3IgPSBGQUxTRSA7CiAJCQl9CiAKLQkJCS8vc3Vic3RyYWN0aW5nIHRoZSB3cml0dGVuIERhdGEKKwkJCS8vc3VidHJhY3RpbmcgdGhlIHdyaXR0ZW4gRGF0YQogCQkJdWlUb3RhbERhdGFUb0NvcHkgPSB1aVRvdGFsRGF0YVRvQ29weSAtIEFkYXB0ZXItPnVpU2VjdG9yU2l6ZSA7CiAJCX0KIApAQCAtNDI2OCw3ICs0MjY4LDcgQEAKIEBlRmxhc2gyeFNlY3Rpb25WYWwgOi0gRmxhc2ggc2VjdGlvbiB2YWwgd2hpY2ggaGFzIGhlYWRlcgogCiBSZXR1cm4gVmFsdWUgOi0KLQlTdWNlc3MgOi0gSWYgU2VjdGlvbiBpcyBwcmVzZW50IGFuZCB3cml0YWJsZSwgY29ycnVwdCB0aGUgc2lnIGFuZCByZXR1cm4gU1RBVFVTX1NVQ0NFU1MKKwlTdWNjZXNzIDotIElmIFNlY3Rpb24gaXMgcHJlc2VudCBhbmQgd3JpdGFibGUsIGNvcnJ1cHQgdGhlIHNpZyBhbmQgcmV0dXJuIFNUQVRVU19TVUNDRVNTCiAJRmFpbHVyZSA6LVJldHVybiBuZWdhdGl2ZSBlcnJvciBjb2RlCiAKIApAQCAtNDMwMSw3ICs0MzAxLDcgQEAKIEBlRmxhc2hTZWN0aW9uVmFsIDotIEZsYXNoIHNlY3Rpb24gdmFsIHdoaWNoIGhhcyBoZWFkZXIKIAogUmV0dXJuIFZhbHVlIDotCi0JU3VjZXNzIDotIElmIFNlY3Rpb24gaXMgcHJlc2VudCBhbmQgd3JpdGFibGUgd3JpdGUgdGhlIHNpZyBhbmQgcmV0dXJuIFNUQVRVU19TVUNDRVNTCisJU3VjY2VzcyA6LSBJZiBTZWN0aW9uIGlzIHByZXNlbnQgYW5kIHdyaXRhYmxlIHdyaXRlIHRoZSBzaWcgYW5kIHJldHVybiBTVEFUVVNfU1VDQ0VTUwogCUZhaWx1cmUgOi1SZXR1cm4gbmVnYXRpdmUgZXJyb3IgY29kZQogCiAqKi8KQEAgLTQ1MDQsNyArNDUwNCw3IEBACiAJCQkgICAgIGluIGNhc2Ugb2YgbnVtb2ZCeXRlcyAgZXF1YWwgemVybyBjb21wbGV0ZSBzZWN0aW9uIHdpbGwgYmUgY29waWVkLgogCiBSZXR1cm4gVmFsdWVzLQotCVN1Y2VzcyA6IFJldHVybiBTVEFUVVNfU1VDQ0VTUworCVN1Y2Nlc3MgOiBSZXR1cm4gU1RBVFVTX1NVQ0NFU1MKIAlGYWlsbHVyZSA6LSByZXR1cm4gbmVnYXRpdmUgZXJyb3IgY29kZQogCiAqKi8KQEAgLTQ2MjEsNyArNDYyMSw3IEBACiBAdWlPZmZzZXQgOi0gRmxhc2ggb2Zmc2V0IHRoYXQgaGFzIHRvIGJlIHdyaXR0ZW4uCiAKIFJldHVybiB2YWx1ZSA6LQotCVN1Y2VzcyA6LSBPbiBzdWNlc3MgcmV0dXJuIFNUQVRVU19TVUNDRVNTCisJU3VjY2VzcyA6LSBPbiBzdWNjZXNzIHJldHVybiBTVEFUVVNfU1VDQ0VTUwogCUZhaWxsdXJlIDotIFJldHVybiBuZWdhdGl2ZSBlcnJvciBjb2RlCiAKICoqLwpAQCAtNDYzNCw3ICs0NjM0LDcgQEAKIAlVSU5UIHVpU2VjdEFsaWduQWRkciA9IDA7CiAJVUlOVCBzaWcgPSAwOwogCi0JLy9tYWtpbmcgdGhlIG9mZnNldCBzZWN0b3IgYWxsaWduZWQKKwkvL21ha2luZyB0aGUgb2Zmc2V0IHNlY3RvciBhbGlnbmVkCiAJdWlTZWN0QWxpZ25BZGRyID0gdWlPZmZzZXQgJiB+KEFkYXB0ZXItPnVpU2VjdG9yU2l6ZSAtIDEpOwogCiAKQEAgLTQ2NDMsNyArNDY0Myw3IEBACiAJKHVpU2VjdEFsaWduQWRkciA9PSBCY21HZXRTZWN0aW9uVmFsRW5kT2Zmc2V0KEFkYXB0ZXIsRFNEMCktIEFkYXB0ZXItPnVpU2VjdG9yU2l6ZSkpCiAJewogCi0JCS8vb2Zmc2V0IGZyb20gdGhlIHNlY3RvciBib3VuZHJ5IGhhdmluZyB0aGUgaGVhZGVyIG1hcAorCQkvL29mZnNldCBmcm9tIHRoZSBzZWN0b3IgYm91bmRhcnkgaGF2aW5nIHRoZSBoZWFkZXIgbWFwCiAJCW9mZnNldFRvUHJvdGVjdCA9IEFkYXB0ZXItPnBzRmxhc2gyeENTSW5mby0+T2Zmc2V0RnJvbURTRFN0YXJ0Rm9yRFNESGVhZGVyICUgQWRhcHRlci0+dWlTZWN0b3JTaXplOwogCQlIZWFkZXJTaXplVG9Qcm90ZWN0ID0gc2l6ZW9mKERTRF9IRUFERVIpOwogCQliSGFzSGVhZGVyID0gVFJVRSA7CkBAIC00Njk3LDcgKzQ2OTcsNyBAQAogQEFkYXBhdGVyIDotIEJjbSBEcml2ZXIgUHJpdmF0ZSBEYXRhIFN0cnVjdHVyZQogCiBPdXRQdXQ6LQotCVNlbGVjdCB0aGUgQXBwcm9wcmlhdGUgY2hpcCBhbmQgcmV0cm4gc3RhdHVzIFN1Y2VzcworCVNlbGVjdCB0aGUgQXBwcm9wcmlhdGUgY2hpcCBhbmQgcmV0cm4gc3RhdHVzIFN1Y2Nlc3MKICoqLwogc3RhdGljIElOVCBCY21Eb0NoaXBTZWxlY3QoUE1JTklfQURBUFRFUiBBZGFwdGVyLCBVSU5UIG9mZnNldCkKIHsKQEAgLTUwODYsNyArNTA4Niw3IEBACiAJewogCQlpZihJc1NlY3Rpb25Xcml0YWJsZShBZGFwdGVyLGVGbGFzaDJ4U2VjdGlvblZhbCkgIT0gVFJVRSkKIAkJewotCQkJQkNNX0RFQlVHX1BSSU5UKEFkYXB0ZXIsREJHX1RZUEVfUFJJTlRLLCAwLCAwLCJTZWN0aW9uIGlzIG5vdCBXcml0YWJsZS4uLkhlbmNlIGNhbnQgQ29ycnVwdCBzaWduYXR1cmUiKTsKKwkJCUJDTV9ERUJVR19QUklOVChBZGFwdGVyLERCR19UWVBFX1BSSU5USywgMCwgMCwiU2VjdGlvbiBpcyBub3QgV3JpdGFibGUuLi5IZW5jZSBjYW4ndCBDb3JydXB0IHNpZ25hdHVyZSIpOwogCQkJcmV0dXJuIFNFQ1RPUl9JU19OT1RfV1JJVEFCTEU7CiAJCX0KIAl9CkBAIC01MTU1LDcgKzUxNTUsNyBAQAogCiAJaWYoSXNTZWN0aW9uV3JpdGFibGUoQWRhcHRlcixlRmxhc2gyeFNlY3Rpb25WYWwpICE9IFRSVUUpCiAJewotCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIDAsIDAsIlNlY3Rpb24gaXMgbm90IFdyaXRhYmxlLi4uSGVuY2UgY2FudCBDb3JydXB0IHNpZ25hdHVyZSIpOworCQlCQ01fREVCVUdfUFJJTlQoQWRhcHRlcixEQkdfVFlQRV9QUklOVEssIDAsIDAsIlNlY3Rpb24gaXMgbm90IFdyaXRhYmxlLi4uSGVuY2UgY2FuJ3QgQ29ycnVwdCBzaWduYXR1cmUiKTsKIAkJcmV0dXJuIFNFQ1RPUl9JU19OT1RfV1JJVEFCTEU7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL1JFQURNRSBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvUkVBRE1FCmluZGV4IDk5ZTY3NjYuLmY4ZmFjYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvUkVBRE1FCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvUkVBRE1FCkBAIC03MSw3ICs3MSw3IEBACiBwYXNzaXZlIG9wZXJhdGlvbi4gVHJhbnNtaXNzaW9uIG9uIHRob3NlIGNoYW5uZWxzIGlzIHN1cHByZXNzZWQgdW50aWwKIGFwcHJvcHJpYXRlIG90aGVyIHRyYWZmaWMgaXMgb2JzZXJ2ZWQgb24gdGhvc2UgY2hhbm5lbHMuCiAKLVdpdGhpbiB0aGUgZHJpdmVyLCB3ZSB1c2UgdGhlIGZpY3RpY2lvdXMgY291bnRyeSBjb2RlICJYMiIgdG8gcmVwcmVzZW50IHRoaXMKK1dpdGhpbiB0aGUgZHJpdmVyLCB3ZSB1c2UgdGhlIGZpY3RpdGlvdXMgY291bnRyeSBjb2RlICJYMiIgdG8gcmVwcmVzZW50IHRoaXMKIHdvcmxkd2lkZSByZWd1bGF0b3J5IGRvbWFpbi4gVGhlcmUgaXMgY3VycmVudGx5IG5vIGludGVyZmFjZSB0byBjb25maWd1cmUgYQogZGlmZmVyZW50IGRvbWFpbi4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGhfc2RtbWMuYyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoX3NkbW1jLmMKaW5kZXggNjUzMTNmYS4uNzFjMzU3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGhfc2RtbWMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaF9zZG1tYy5jCkBAIC0yNjQsNyArMjY0LDcgQEAKIH0KICNlbmRpZgkJCQkvKiBkZWZpbmVkKE9PQl9JTlRSX09OTFkpICYmIGRlZmluZWQoSFdfT09CKSAqLwogCi0vKiBDb25maWd1cmUgY2FsbGJhY2sgdG8gY2xpZW50IHdoZW4gd2UgcmVjaWV2ZSBjbGllbnQgaW50ZXJydXB0ICovCisvKiBDb25maWd1cmUgY2FsbGJhY2sgdG8gY2xpZW50IHdoZW4gd2UgcmVjZWl2ZSBjbGllbnQgaW50ZXJydXB0ICovCiBleHRlcm4gU0RJT0hfQVBJX1JDCiBzZGlvaF9pbnRlcnJ1cHRfcmVnaXN0ZXIoc2Rpb2hfaW5mb190ICpzZCwgc2Rpb2hfY2JfZm5fdCBmbiwgdm9pZCAqYXJnaCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX2N1c3RvbV9ncGlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9jdXN0b21fZ3Bpby5jCmluZGV4IGNiZmExYzEuLjFjZjZjNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX2N1c3RvbV9ncGlvLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfY3VzdG9tX2dwaW8uYwpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgPG1hY2gvZ3Bpby5oPgogI2VuZGlmCiAKLS8qIEN1c3RvbWVyIHNwZWNpZmljIEhvc3QgR1BJTyBkZWZpbnRpb24gICovCisvKiBDdXN0b21lciBzcGVjaWZpYyBIb3N0IEdQSU8gZGVmaW5pdGlvbiAgKi8KIHN0YXRpYyBpbnQgZGhkX29vYl9ncGlvX251bSA9IC0xOwkvKiBHRyAxOSAqLwogCiBtb2R1bGVfcGFyYW0oZGhkX29vYl9ncGlvX251bSwgaW50LCAwNjQ0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX2xpbnV4LmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9saW51eC5jCmluZGV4IDAyYzZkNDQuLmRkMDM3NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX2xpbnV4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfbGludXguYwpAQCAtNDc4LDcgKzQ3OCw3IEBACiAJCQlkaGRfc2V0X3BhY2tldF9maWx0ZXIoMSwgZGhkKTsKIAogCQkJLyogaWYgZHRpbSBza2lwIHNldHVwIGFzIGRlZmF1bHQgZm9yY2UgaXQKLQkJCSAqIHRvIHdha2UgZWFjaCB0aHJpZCBkdGltCisJCQkgKiB0byB3YWtlIGVhY2ggdGhpcmQgZHRpbQogCQkJICogZm9yIGJldHRlciBwb3dlciBzYXZpbmcuCiAJCQkgKiBOb3RlIHRoYXQgc2lkZSBlZmZlY3QgaXMgY2hhbmNlIHRvIG1pc3MgQkMvTUMKIAkJCSAqIHBhY2tldApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfc2Rpby5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtZm1hYy9kaGRfc2Rpby5jCmluZGV4IDEwNjYyNzAuLjQ2NGY1MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbWZtYWMvZGhkX3NkaW8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21mbWFjL2RoZF9zZGlvLmMKQEAgLTM2NTksNyArMzY1OSw3IEBACiAJCQkgKiBjb250cm9sIHBrdCByZWNlaXZlcy4KIAkJCSAqIExhdGVyIHdlIHVzZSBidWZmZXItcG9sbCBmb3IgZGF0YSBhcyB3ZWxsCiAJCQkgKiBhcyBjb250cm9sIHBhY2tldHMuCi0JCQkgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY3Vhc2UgZGhkIHJlY2VpdmVzIGZ1bGwKKwkJCSAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBkaGQgcmVjZWl2ZXMgZnVsbAogCQkJICogZnJhbWUgaW4gZ1NQSSB1bmxpa2UgU0RJTy4KIAkJCSAqIEFmdGVyIHRoZSBmcmFtZSBpcyByZWNlaXZlZCB3ZSBoYXZlIHRvCiAJCQkgKiBkaXN0aW5ndWlzaCB3aGV0aGVyIGl0IGlzIGRhdGEKQEAgLTM3NDQsNyArMzc0NCw3IEBACiAJCQkJCWJ1cy0+ZGhkLT5yeF9lcnJvcnMrKzsKIAkJCQkJZGhkX29zX3NkdW5sb2NrX3J4cShidXMtPmRoZCk7CiAJCQkJCS8qIEZvcmNlIHJldHJ5IHcvbm9ybWFsIGhlYWRlciByZWFkLgotCQkJCQkgKiBEb24ndCBhdHRlbXAgTkFLIGZvcgorCQkJCQkgKiBEb24ndCBhdHRlbXB0IE5BSyBmb3IKIAkJCQkJICogZ1NQSQogCQkJCQkgKi8KIAkJCQkJZGhkc2Rpb19yeGZhaWwoYnVzLCB0cnVlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bF9tYWM4MDIxMS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bF9tYWM4MDIxMS5jCmluZGV4IDc3NGI0ZTkuLmMxYjA3YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xfbWFjODAyMTEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsX21hYzgwMjExLmMKQEAgLTEwNzksNyArMTA3OSw3IEBACiAJICovCiAJaHctPm1heF9yYXRlcyA9IDI7CS8qIFByaW1hcnkgcmF0ZSBhbmQgMSBmYWxsYmFjayByYXRlICovCiAKLQlody0+Y2hhbm5lbF9jaGFuZ2VfdGltZSA9IDcgKiAxMDAwOwkvKiBjaGFubmVsIGNoYW5nZSB0aW1lIGlzIGRlcGVuZGFudCBvbiBjaGlwIGFuZCBiYW5kICAqLworCWh3LT5jaGFubmVsX2NoYW5nZV90aW1lID0gNyAqIDEwMDA7CS8qIGNoYW5uZWwgY2hhbmdlIHRpbWUgaXMgZGVwZW5kZW50IG9uIGNoaXAgYW5kIGJhbmQgICovCiAJaHctPndpcGh5LT5pbnRlcmZhY2VfbW9kZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTik7CiAKIAlody0+cmF0ZV9jb250cm9sX2FsZ29yaXRobSA9ICJtaW5zdHJlbF9odCI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19hbXBkdS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfYW1wZHUuYwppbmRleCBjNmNkY2Q5Li5mMDA4NjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19hbXBkdS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX2FtcGR1LmMKQEAgLTg5LDcgKzg5LDcgQEAKIC8qIHN0cnVjdHVyZSB0byBob2xkIHR4IGZpZm8gaW5mb3JtYXRpb24gYW5kIHByZS1sb2FkaW5nIHN0YXRlCiAgKiBjb3VudGVycyBzcGVjaWZpYyB0byB0eCB1bmRlcmZsb3dzIG9mIGFtcGR1cwogICogc29tZSBjb3VudGVycyBtaWdodCBiZSByZWR1bmRhbnQgd2l0aCB0aGUgb25lcyBpbiB3bGMgb3IgYW1wZHUgc3RydWN0dXJlcy4KLSAqIFRoaXMgYWxsb3dzIHRvIG1haW50YWluIGEgc3BlY2lmaWMgc3RhdGUgaW5kZXBlbmRhbnRseSBvZgorICogVGhpcyBhbGxvd3MgdG8gbWFpbnRhaW4gYSBzcGVjaWZpYyBzdGF0ZSBpbmRlcGVuZGVudGx5IG9mCiAgKiBob3cgb2Z0ZW4gYW5kL29yIHdoZW4gdGhlIHdsYyBjb3VudGVycyBhcmUgdXBkYXRlZC4KICAqLwogdHlwZWRlZiBzdHJ1Y3Qgd2xjX2ZpZm9faW5mbyB7CkBAIC0yNjUsNyArMjY1LDcgQEAKIAogCXNjYl9hbXBkdS0+bWF4X3BkdSA9ICh1OCkgYW1wZHUtPndsYy0+cHViLT50dW5hYmxlcy0+YW1wZHVudW1tcGR1OwogCi0JLyogZ28gYmFjayB0byBsZWdhY3kgc2l6ZSBpZiBzb21lIHByZWxvYWRpbmcgaXMgb2NjdXJpbmcgKi8KKwkvKiBnbyBiYWNrIHRvIGxlZ2FjeSBzaXplIGlmIHNvbWUgcHJlbG9hZGluZyBpcyBvY2N1cnJpbmcgKi8KIAlmb3IgKGkgPSAwOyBpIDwgTlVNX0ZGUExEX0ZJRk87IGkrKykgewogCQlpZiAoYW1wZHUtPmZpZm9fdGJbaV0uYW1wZHVfcGxkX3NpemUgPiBGRlBMRF9QTERfSU5DUikKIAkJCXNjYl9hbXBkdS0+bWF4X3BkdSA9IEFNUERVX05VTV9NUERVX0xFR0FDWTsKQEAgLTQwNiw3ICs0MDYsNyBAQAogCQkvKgogCQkgICBjb21wdXRlIGEgbmV3IGRtYSB4ZmVyIHJhdGUgZm9yIG1heF9tcGR1IEAgbWF4IG1jcy4KIAkJICAgVGhpcyBpcyB0aGUgbWluaW11bSBkbWEgcmF0ZSB0aGF0Ci0JCSAgIGNhbiBhY2hlaXZlIG5vIHVuZmVyZmxvdyBjb25kaXRpb24gZm9yIHRoZSBjdXJyZW50IG1wZHUgc2l6ZS4KKwkJICAgY2FuIGFjaGlldmUgbm8gdW5mZXJmbG93IGNvbmRpdGlvbiBmb3IgdGhlIGN1cnJlbnQgbXBkdSBzaXplLgogCQkgKi8KIAkJLyogbm90ZSA6IHdlIGRpdmlkZS9tdWx0aXBseSBieSAxMDAgdG8gYXZvaWQgaW50ZWdlciBvdmVyZmxvd3MgKi8KIAkJZmlmby0+ZG1heGZlcnJhdGUgPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfYm1hYy5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfYm1hYy5jCmluZGV4IDVhOTZkYzMuLjRiNmUxODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX2JtYWMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19ibWFjLmMKQEAgLTE5MTUsNyArMTkxNSw3IEBACiAKIAlwaHlfYndfY2xrYml0cyA9IHdsY19waHlfY2xrX2J3Yml0cyh3bGNfaHctPmJhbmQtPnBpKTsKIAotCS8qIFNwZWNmaWMgcmVzZXQgc2VxdWVuY2UgcmVxdWlyZWQgZm9yIE5QSFkgcmV2IDMgYW5kIDQgKi8KKwkvKiBTcGVjaWZpYyByZXNldCBzZXF1ZW5jZSByZXF1aXJlZCBmb3IgTlBIWSByZXYgMyBhbmQgNCAqLwogCWlmIChXTENJU05QSFkod2xjX2h3LT5iYW5kKSAmJiBOUkVWX0dFKHdsY19ody0+YmFuZC0+cGh5cmV2LCAzKSAmJgogCSAgICBOUkVWX0xFKHdsY19ody0+YmFuZC0+cGh5cmV2LCA0KSkgewogCQkvKiBTZXQgdGhlIFBIWSBiYW5kd2lkdGggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX21haW4uYyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX21haW4uYwppbmRleCA2MzliNWQ3Li5hYjdhYjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19tYWluLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfbWFpbi5jCkBAIC02MjgzLDcgKzYyODMsNyBAQAogCSAgICAgICAoKHByZWFtYmxlX3R5cGVbMV0gPT0gV0xDX01NX1BSRUFNQkxFKSA9PQogCQkodHhoLT5NTW9kZUZickxlbiAhPSAwKSkpOwogCi0JYWMgPSB3bWVfZmlmbzJhY1txdWV1ZV07CisJYWMgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcocCk7CiAJaWYgKFNDQl9XTUUoc2NiKSAmJiBxb3MgJiYgd2xjLT5lZGNmX3R4b3BbYWNdKSB7CiAJCXVpbnQgZnJhZ19kdXIsIGR1ciwgZHVyX2ZhbGxiYWNrOwogCkBAIC02OTE5LDggKzY5MTksNyBAQAogCQlwcmVhbWJsZSA9IDA7CiAJCWlmIChJU19DQ0socnNwZWMpKSB7CiAJCQlpZiAocnhoLT5QaHlSeFN0YXR1c18wICYgUFJYUzBfU0hPUlRIKQotCQkJCVdMX0VSUk9SKCJTaG9ydCBDQ0tcbiIpOwotCQkJcnhfc3RhdHVzLT5mbGFnIHw9IFJYX0ZMQUdfU0hPUlRQUkU7CisJCQkJcnhfc3RhdHVzLT5mbGFnIHw9IFJYX0ZMQUdfU0hPUlRQUkU7CiAJCX0gZWxzZSBpZiAoSVNfT0ZETShyc3BlYykpIHsKIAkJCXJ4X3N0YXR1cy0+ZmxhZyB8PSBSWF9GTEFHX1NIT1JUUFJFOwogCQl9IGVsc2UgewpAQCAtNzA3OSwxMCArNzA3OCw4IEBACiAJaWYgKGllZWU4MDIxMV9pc19wcm9iZV9yZXEoaC0+ZnJhbWVfY29udHJvbCkpCiAJCWdvdG8gdG9zczsKIAotCWlmIChpc19hbXNkdSkgewotCQlXTF9FUlJPUigiJXM6IGlzX2Ftc2R1IGNhdXNpbmcgdG9zc1xuIiwgX19mdW5jX18pOworCWlmIChpc19hbXNkdSkKIAkJZ290byB0b3NzOwotCX0KIAogCXdsY19yZWN2Y3RsKHdsYywgcnhoLCBwKTsKIAlyZXR1cm47CkBAIC04Mjk1LDcgKzgyOTIsNyBAQAogCXJldHVybiAocS0+c3RvcHBlZCAmIHByaW9fbWFzaykgPT0gcHJpb19tYXNrOwogfQogCi0vKiBwcm9wb2dhdGUgdGhlIGZsb3cgY29udHJvbCB0byBhbGwgaW50ZXJmYWNlcyB1c2luZyB0aGUgZ2l2ZW4gdHggcXVldWUgKi8KKy8qIHByb3BhZ2F0ZSB0aGUgZmxvdyBjb250cm9sIHRvIGFsbCBpbnRlcmZhY2VzIHVzaW5nIHRoZSBnaXZlbiB0eCBxdWV1ZSAqLwogdm9pZCB3bGNfdHhmbG93Y29udHJvbChzdHJ1Y3Qgd2xjX2luZm8gKndsYywgc3RydWN0IHdsY190eHFfaW5mbyAqcWksCiAJCSAgICAgICBib29sIG9uLCBpbnQgcHJpbykKIHsKQEAgLTg0NjIsNyArODQ1OSw3IEBACiB9CiAKIC8qCi0gKiBGbGFnICdzY2FuIGluIHByb2dyZXNzJyB0byB3aXRob2xkIGR5bmFtaWMgcGh5IGNhbGlicmF0aW9uCisgKiBGbGFnICdzY2FuIGluIHByb2dyZXNzJyB0byB3aXRoaG9sZCBkeW5hbWljIHBoeSBjYWxpYnJhdGlvbgogICovCiB2b2lkIHdsY19zY2FuX3N0YXJ0KHN0cnVjdCB3bGNfaW5mbyAqd2xjKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfcmF0ZS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfcmF0ZS5jCmluZGV4IDBjZmEzNjAuLmQyODRmMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX3JhdGUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19yYXRlLmMKQEAgLTMzMiw3ICszMzIsNyBAQAogCQlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qIGNhbHVjbGF0ZSB0aGUgcmF0ZSBvZiBhIHJ4J2QgZnJhbWUgYW5kIHJldHVybiBpdCBhcyBhIHJhdGVzcGVjICovCisvKiBjYWxjdWxhdGUgdGhlIHJhdGUgb2YgYSByeCdkIGZyYW1lIGFuZCByZXR1cm4gaXQgYXMgYSByYXRlc3BlYyAqLwogcmF0ZXNwZWNfdCBCQ01GQVNUUEFUSCB3bGNfY29tcHV0ZV9yc3BlYyhkMTFyeGhkcl90ICpyeGgsIHU4ICpwbGNwKQogewogCWludCBwaHlfdHlwZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvaW5jbHVkZS9iY21zcm9tX2ZtdC5oIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmgKaW5kZXggYWUyYmZmOC4uNDc2ODk2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmgKQEAgLTEwMyw3ICsxMDMsNyBAQAogCiAjZGVmaW5lCVNST01fQ1JDUkVWCQk2MwogCi0vKiBTUk9NIFJldiA0OiBSZWFsbG9jYXRlIHRoZSBzb2Z0d2FyZSBwYXJ0IG9mIHRoZSBzcm9tIHRvIGFjY29tb2RhdGUKKy8qIFNST00gUmV2IDQ6IFJlYWxsb2NhdGUgdGhlIHNvZnR3YXJlIHBhcnQgb2YgdGhlIHNyb20gdG8gYWNjb21tb2RhdGUKICAqIE1JTU8gZmVhdHVyZXMuIEl0IGFzc3VtZXMgdXAgdG8gdHdvIFBDSUUgZnVuY3Rpb25zIGFuZCA0NDAgYnl0ZXMKICAqIG9mIHVzZWFibGUgc3JvbSBpLmUuIHRoZSB1c2VhYmxlIHN0b3JhZ2UgaW4gY2hpcHMgd2l0aCBPVFAgdGhhdAogICogaW1wbGVtZW50cyBoYXJkd2FyZSByZWR1bmRhbmN5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2huZHNvYy5oIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2huZHNvYy5oCmluZGV4IDk3NDdjYzQuLjY0MzU2ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvaW5jbHVkZS9obmRzb2MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvaG5kc29jLmgKQEAgLTE4MSw3ICsxODEsNyBAQAogICogY29udmVudGlvbnMgZm9yIHRoZSB1c2UgdGhlIGZsYXNoIHNwYWNlOgogICovCiAKLS8qIE1pbnVtdW0gYW1vdW50IG9mIGZsYXNoIHdlIHN1cHBvcnQgKi8KKy8qIE1pbmltdW0gYW1vdW50IG9mIGZsYXNoIHdlIHN1cHBvcnQgKi8KICNkZWZpbmUgRkxBU0hfTUlOCQkweDAwMDIwMDAwCS8qIE1pbmltdW0gZmxhc2ggc2l6ZSAqLwogCiAvKiBBIGJvb3QvYmluYXJ5IG1heSBoYXZlIGFuIGVtYmVkZGVkIGJsb2NrIHRoYXQgZGVzY3JpYmVzIGl0cyBzaXplICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbW90cC5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbW90cC5jCmluZGV4IGJhNzFjMTAuLjE3OTkxMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21vdHAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtb3RwLmMKQEAgLTIxMyw3ICsyMTMsNyBAQAogCXJldHVybiAoaW50KXN0OwogfQogCi0vKiBDYWxjdWxhdGUgbWF4IEhXL1NXIHJlZ2lvbiBieXRlIHNpemUgYnkgc3Vic3RyYWN0aW5nIGZ1c2UgcmVnaW9uIGFuZCBjaGVja3N1bSBzaXplLAorLyogQ2FsY3VsYXRlIG1heCBIVy9TVyByZWdpb24gYnl0ZSBzaXplIGJ5IHN1YnRyYWN0aW5nIGZ1c2UgcmVnaW9uIGFuZCBjaGVja3N1bSBzaXplLAogICogb3NpemV3IGlzIG9pLT53c2l6ZSAoT1RQIHNpemUgLSBHVSBzaXplKSBpbiB3b3JkcwogICovCiBzdGF0aWMgaW50IGlweG90cF9tYXhfcmduc3ooc2lfdCAqc2loLCBpbnQgb3NpemV3KQpAQCAtMjI5LDcgKzIyOSw3IEBACiAJCXJldCA9IG9zaXpldyAqIDIgLSBPVFBfU1pfRlVfNzIgLSBPVFBfU1pfQ0hFQ0tTVU07CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCUFTU0VSVCgwKTsJLyogRG9uJ3Qga29udyBhYm91dCB0aGlzIGNoaXAgKi8KKwkJQVNTRVJUKDApOwkvKiBEb24ndCBrbm93IGFib3V0IHRoaXMgY2hpcCAqLwogCX0KIAogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtc3JvbS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbXNyb20uYwppbmRleCBlY2EzNWI5Li44NTBiZmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtc3JvbS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21zcm9tLmMKQEAgLTE4NTksNyArMTg1OSw3IEBACiAKIAkvKgogCSAqIEFwcGx5IENSQyBvdmVyIFNST00gY29udGVudCByZWdhcmRsZXNzIFNST00gaXMgcHJlc2VudCBvciBub3QsCi0JICogYW5kIHVzZSB2YXJpYWJsZSA8ZGV2cGF0aD5zcm9tcmV2J3MgZXhpc3RhbmNlIGluIGZsYXNoIHRvIGRlY2lkZQorCSAqIGFuZCB1c2UgdmFyaWFibGUgPGRldnBhdGg+c3JvbXJldidzIGV4aXN0ZW5jZSBpbiBmbGFzaCB0byBkZWNpZGUKIAkgKiBpZiB3ZSBzaG91bGQgcmV0dXJuIGFuIGVycm9yIHdoZW4gQ1JDIGZhaWxzIG9yIHJlYWQgU1JPTSB2YXJpYWJsZXMKIAkgKiBmcm9tIGZsYXNoLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2huZGRtYS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2huZGRtYS5jCmluZGV4IDhhODFlYjkuLmJlMzM5ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9obmRkbWEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvaG5kZG1hLmMKQEAgLTExNzksNyArMTE3OSw3IEBACiAJCSAgIChyYW5nZSA9PSBITkRETUFfUkFOR0VfQUxMKSA/ICJhbGwiIDoKIAkJICAgKChyYW5nZSA9PQogCQkgICAgIEhORERNQV9SQU5HRV9UUkFOU01JVFRFRCkgPyAidHJhbnNtaXR0ZWQiIDoKLQkJICAgICJ0cmFuc2ZlcmVkIikpKTsKKwkJICAgICJ0cmFuc2ZlcnJlZCIpKSk7CiAKIAlpZiAoZGktPnR4aW4gPT0gZGktPnR4b3V0KQogCQlyZXR1cm47CkBAIC0xNTQ5LDcgKzE1NDksNyBAQAogICogSWYgcmFuZ2UgaXMgSE5ERE1BX1JBTkdFX1RSQU5TTUlUVEVELCByZWNsYWltIGRlc2NyaXB0b3JzIHRoYXQgaGF2ZSBiZQogICogdHJhbnNtaXR0ZWQgYXMgbm90ZWQgYnkgdGhlIGhhcmR3YXJlICJDdXJyRGVzY3IiIHBvaW50ZXIuCiAgKiBJZiByYW5nZSBpcyBITkRETUFfUkFOR0VfVFJBTlNGRVJFRCwgcmVjbGFpbSBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgYmUKLSAqIHRyYW5zZmVyZWQgYnkgdGhlIERNQSBhcyBub3RlZCBieSB0aGUgaGFyZHdhcmUgIkFjdGl2ZURlc2NyIiBwb2ludGVyLgorICogdHJhbnNmZXJyZWQgYnkgdGhlIERNQSBhcyBub3RlZCBieSB0aGUgaGFyZHdhcmUgIkFjdGl2ZURlc2NyIiBwb2ludGVyLgogICogSWYgcmFuZ2UgaXMgSE5ERE1BX1JBTkdFX0FMTCwgcmVjbGFpbSBhbGwgdHhkKHMpIHBvc3RlZCB0byB0aGUgcmluZyBhbmQKICAqIHJldHVybiBhc3NvY2lhdGVkIHBhY2tldCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBoYXJkd2FyZSBwb2ludGVycy4KICAqLwpAQCAtMTU2Myw3ICsxNTYzLDcgQEAKIAkJICAgKHJhbmdlID09IEhORERNQV9SQU5HRV9BTEwpID8gImFsbCIgOgogCQkgICAoKHJhbmdlID09CiAJCSAgICAgSE5ERE1BX1JBTkdFX1RSQU5TTUlUVEVEKSA/ICJ0cmFuc21pdHRlZCIgOgotCQkgICAgInRyYW5zZmVyZWQiKSkpOworCQkgICAgInRyYW5zZmVycmVkIikpKTsKIAogCWlmIChkaS0+bnR4ZCA9PSAwKQogCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9zYnBjbWNpYS5oIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NicGNtY2lhLmgKaW5kZXggNmI5OTIzZjUuLmQ0YzE1NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9zYnBjbWNpYS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9zYnBjbWNpYS5oCkBAIC0xMDksNyArMTA5LDcgQEAKICNkZWZpbmUJQ0lTVFBMX0NGVEFCTEUJCTB4MWIJLyogQ29uZmlnIHRhYmxlIGVudHJ5ICovCiAjZGVmaW5lCUNJU1RQTF9FTkQJCTB4ZmYJLyogRW5kIG9mIHRoZSBDSVMgdHVwbGUgY2hhaW4gKi8KIAotLyogRnVuY3Rpb24gaWRlbnRpZmllciBwcm92aWRlcyBjb250ZXh0IGZvciB0aGUgZnVuY3Rpb24gZXh0ZW50aW9ucyB0dXBsZSAqLworLyogRnVuY3Rpb24gaWRlbnRpZmllciBwcm92aWRlcyBjb250ZXh0IGZvciB0aGUgZnVuY3Rpb24gZXh0ZW5zaW9ucyB0dXBsZSAqLwogI2RlZmluZSBDSVNUUExfRklEX1NESU8JCTB4MGMJLyogRXh0ZW5zaW9ucyBkZWZpbmVkIGJ5IFNESU8gc3BlYyAqLwogCiAvKiBGdW5jdGlvbiBleHRlbnNpb25zIGZvciBMQU5zIChhc3N1bWVkIGZvciBleHRlbnNpb25zIG90aGVyIHRoYW4gU0RJTykgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9zaXV0aWxzLmMgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvc2l1dGlscy5jCmluZGV4IGVkMTY4Y2UuLjZlYmQ3ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9zaXV0aWxzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL3NpdXRpbHMuYwpAQCAtMTMxOSw3ICsxMzE5LDcgQEAKIH0KIAogLyoKLSAqICBjbG9jayBjb250cm9sIHBvbGljeSBmdW5jdGlvbiB0aHJvdWdodCBjaGlwY29tbW9uCisgKiAgY2xvY2sgY29udHJvbCBwb2xpY3kgZnVuY3Rpb24gdGhyb3VnaCBjaGlwY29tbW9uCiAgKgogICogICAgc2V0IGR5bmFtaWMgY2xrIGNvbnRyb2wgbW9kZSAoZm9yY2VzbG93LCBmb3JjZWZhc3QsIGR5bmFtaWMpCiAgKiAgICByZXR1cm5zIHRydWUgaWYgd2UgYXJlIGZvcmNpbmcgZmFzdCBjbG9jawpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9jb21lZGlfZm9wcy5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9jb21lZGlfZm9wcy5jCmluZGV4IGE0Y2ViMjljLi5lN2U3MmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2NvbWVkaV9mb3BzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9jb21lZGlfZm9wcy5jCkBAIC0yMDY0LDcgKzIwNjQsNyBAQAogCQkJICAgICBDT01FRElfQ0JfT1ZFUkZMT1cpKSB7CiAJCXJ1bmZsYWdzX21hc2sgfD0gU1JGX1JVTk5JTkc7CiAJfQotCS8qIHJlbWVtYmVyIGlmIGFuIGVycm9yIGV2ZW50IGhhcyBvY2N1cmVkLCBzbyBhbiBlcnJvcgorCS8qIHJlbWVtYmVyIGlmIGFuIGVycm9yIGV2ZW50IGhhcyBvY2N1cnJlZCwgc28gYW4gZXJyb3IKIAkgKiBjYW4gYmUgcmV0dXJuZWQgdGhlIG5leHQgdGltZSB0aGUgdXNlciBkb2VzIGEgcmVhZCgpICovCiAJaWYgKHMtPmFzeW5jLT5ldmVudHMgJiAoQ09NRURJX0NCX0VSUk9SIHwgQ09NRURJX0NCX09WRVJGTE9XKSkgewogCQlydW5mbGFnc19tYXNrIHw9IFNSRl9FUlJPUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvQVBDSTE3MTBfQ2hyb25vLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL0FQQ0kxNzEwX0Nocm9uby5jCmluZGV4IDY0NGJkYTQuLjQ4MmE0MTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvQVBDSTE3MTBfQ2hyb25vLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9BUENJMTcxMF9DaHJvbm8uYwpAQCAtMTI0LDkgKzEyNCw5IEBACiB8ICAgICAgICAgICAgICAgICAgICAgLTU6IFRoZSBzZWxlY3RlZCBQQ0kgaW5wdXQgY2xvY2sgaXMgd3JvbmcgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAtNjogVGltaW5nIHVuaXR5IHNlbGVjdGlvbiBpcyB3cm9uZyAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgIC03OiBCYXNlIHRpbWluZyBzZWxlY3Rpb24gaXMgd3JvbmcgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgLTg6IFlvdSBjYW4gbm90IHVzZWQgdGhlIDQwTUh6IGNsb2NrIHNlbGVjdGlvbiB3aWNoICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAtODogWW91IGNhbiBub3QgdXNlZCB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpdGggICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGJvYXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgLTk6IFlvdSBjYW4gbm90IHVzZWQgdGhlIDQwTUh6IGNsb2NrIHNlbGVjdGlvbiB3aWNoICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAtOTogWW91IGNhbiBub3QgdXNlZCB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpdGggICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIENIUk9OT1MgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICovCkBAIC03MjEsMTAgKzcyMSwxMCBAQAogCQkJCQkJCQl9CiAJCQkJCQkJfSBlbHNlIHsKIAkJCSAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCQkJCQkJCQkvKiBZb3UgY2FuIG5vdCB1c2VkIHRoZSA0ME1IeiBjbG9jayBzZWxlY3Rpb24gd2ljaCB0aGlzIGJvYXJkICovCisJCQkJCQkJCS8qIFlvdSBjYW4gbm90IHVzZSB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpdGggdGhpcyBib2FyZCAqLwogCQkJICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQkJCQkJCQkJRFBSSU5USygiWW91IGNhbiBub3QgdXNlZCB0aGUgNDBNSHogY2xvY2sgc2VsZWN0aW9uIHdpY2ggdGhpcyBib2FyZFxuIik7CisJCQkJCQkJCURQUklOVEsoIllvdSBjYW4gbm90IHVzZWQgdGhlIDQwTUh6IGNsb2NrIHNlbGVjdGlvbiB3aXRoIHRoaXMgYm9hcmRcbiIpOwogCQkJCQkJCQlpX1JldHVyblZhbHVlID0KIAkJCQkJCQkJCS04OwogCQkJCQkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvYWRkaV9hbWNjX1M1OTIwLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2FkZGlfYW1jY19TNTkyMC5jCmluZGV4IDkwZTcxZTEuLmI5NzMwOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvYWRkaV9hbWNjX1M1OTIwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9hZGRpX2FtY2NfUzU5MjAuYwpAQCAtNTksNyArNTksNyBAQAogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsqLwogLyp8IElucHV0IFBhcmFtZXRlcnMgIDogaW50ICAgIGlfTmJPZldvcmRzVG9SZWFkIDogTmJyLiBvZiB3b3JkIHRvIHJlYWQgICAgICAgIHwqLwogLyp8ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGR3X1BDSUJvYXJkRWVwcm9tQWRkcmVzcyA6IEFkZHJlc3Mgb2YgdGhlIGVlcHJvbSB8Ki8KLS8qfCAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICAgd19FZXByb21TdGFydEFkZHJlc3MgOiBFZXByb20gc3RyYXQgYWRkcmVzcyAgICAgfCovCisvKnwgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAgIHdfRWVwcm9tU3RhcnRBZGRyZXNzIDogRWVwcm9tIHN0YXJ0IGFkZHJlc3MgICAgIHwqLwogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsqLwogLyp8IE91dHB1dCBQYXJhbWV0ZXJzIDogdW5zaWduZWQgc2hvcnQgKiBwd19EYXRhUmVhZCA6IFJlYWQgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgfCovCiAvKistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kyMDMyLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kyMDMyLmMKaW5kZXggOWRkODU3ZC4uMDAyMjk3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMjAzMi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTIwMzIuYwpAQCAtNDk4LDcgKzQ5OCw3IEBACiAJc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiA9IGQ7CiAJdW5zaWduZWQgaW50IHVpX0RPOwogCi0JdWlfRE8gPSBpbmwoZGV2cHJpdi0+aW9iYXNlICsgQVBDSTIwMzJfRElHSVRBTF9PUF9JUlEpICYgMHgxOwkvKiBDaGVjayBpZiBWQ0MgT1IgQ0MgaW50ZXJydXB0IGhhcyBvY2N1cmVkLiAqLworCXVpX0RPID0gaW5sKGRldnByaXYtPmlvYmFzZSArIEFQQ0kyMDMyX0RJR0lUQUxfT1BfSVJRKSAmIDB4MTsJLyogQ2hlY2sgaWYgVkNDIE9SIENDIGludGVycnVwdCBoYXMgb2NjdXJyZWQuICovCiAKIAlpZiAodWlfRE8gPT0gMCkgewogCQlwcmludGsoIlxuSW50ZXJydXB0IGZyb20gdW5Lbm93biBzb3VyY2VcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzEyMC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzEyMC5jCmluZGV4IGE4MTNmZGIuLmZjNjEyMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMxMjAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMTIwLmMKQEAgLTE0OCw3ICsxNDgsNyBAQAogCXVuc2lnbmVkIHNob3J0IHVzX0NvbnZlcnRUaW1pbmcsIHVzX1RtcFZhbHVlLCBpOwogCXVuc2lnbmVkIGNoYXIgYl9UbXA7CiAKLQkvKiAgZml4IGNvbnZlcnRpb24gdGltZSB0byAxMCB1cyAqLworCS8qICBmaXggY29udmVyc2lvbiB0aW1lIHRvIDEwIHVzICovCiAJaWYgKCFkZXZwcml2LT51aV9Fb2NFb3NDb252ZXJzaW9uVGltZSkgewogCQlwcmludGsoIk5vIHRpbWVyMCBWYWx1ZSB1c2luZyAxMCB1c1xuIik7CiAJCXVzX0NvbnZlcnRUaW1pbmcgPSAxMDsKQEAgLTI1MSw3ICsyNTEsNyBAQAogCQkJCUFQQ0kzMTIwX1NFTEVDVF9USU1FUl8wX1dPUkQ7CiAJCQlvdXRiKGJfVG1wLCBkZXZwcml2LT5pb2Jhc2UgKyBBUENJMzEyMF9USU1FUl9DUlQwKTsKIAotCQkJLyogU2V0IHRoZSBjb252ZXJ0aW9uIHRpbWUgKi8KKwkJCS8qIFNldCB0aGUgY29udmVyc2lvbiB0aW1lICovCiAJCQlvdXR3KHVzX0NvbnZlcnRUaW1pbmcsCiAJCQkJZGV2cHJpdi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfVkFMVUUpOwogCkBAIC0zMTEsNyArMzExLDcgQEAKIAkJCQlBUENJMzEyMF9TRUxFQ1RfVElNRVJfMF9XT1JEOwogCQkJb3V0YihiX1RtcCwgZGV2cHJpdi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfQ1JUMCk7CiAKLQkJCS8qIFNldCB0aGUgY29udmVydGlvbiB0aW1lICovCisJCQkvKiBTZXQgdGhlIGNvbnZlcnNpb24gdGltZSAqLwogCQkJb3V0dyh1c19Db252ZXJ0VGltaW5nLAogCQkJCWRldnByaXYtPmlvYmFzZSArIEFQQ0kzMTIwX1RJTUVSX1ZBTFVFKTsKIApAQCAtMzU0LDkgKzM1NCw5IEBACiAJCQkvKiBTdGFydCBjb252ZXJzaW9uICovCiAJCQlvdXR3KDAsIGRldnByaXYtPmlvYmFzZSArIEFQQ0kzMTIwX1NUQVJUX0NPTlZFUlNJT04pOwogCi0JCQkvKiBXYWl0aW5nIG9mIGVuZCBvZiBjb252ZXJ0aW9uIGlmIGludGVycnVwdCBpcyBub3QgaW5zdGFsbGVkICovCisJCQkvKiBXYWl0aW5nIG9mIGVuZCBvZiBjb252ZXJzaW9uIGlmIGludGVycnVwdCBpcyBub3QgaW5zdGFsbGVkICovCiAJCQlpZiAoZGV2cHJpdi0+Yl9Fb2NFb3NJbnRlcnJ1cHQgPT0gQVBDSTMxMjBfRElTQUJMRSkgewotCQkJCS8qIFdhaXRpbmcgdGhlIGVuZCBvZiBjb252ZXJ0aW9uICovCisJCQkJLyogV2FpdGluZyB0aGUgZW5kIG9mIGNvbnZlcnNpb24gKi8KIAkJCQlkbyB7CiAJCQkJCXVzX1RtcFZhbHVlID0KIAkJCQkJCWludyhkZXZwcml2LT5pb2Jhc2UgKwpAQCAtODU0LDcgKzg1NCw3IEBACiAJCQkJYl9EaWdpdGFsT3V0cHV0UmVnaXN0ZXIpICYgMHhGMCkgfAogCQkJQVBDSTMxMjBfU0VMRUNUX1RJTUVSXzBfV09SRDsKIAkJb3V0YihiX1RtcCwgZGV2LT5pb2Jhc2UgKyBBUENJMzEyMF9USU1FUl9DUlQwKTsKLQkJLyogU2V0IHRoZSBjb252ZXJ0aW9uIHRpbWUgKi8KKwkJLyogU2V0IHRoZSBjb252ZXJzaW9uIHRpbWUgKi8KIAkJb3V0dygoKHVuc2lnbmVkIHNob3J0KSB1aV9UaW1lclZhbHVlMCksCiAJCQlkZXYtPmlvYmFzZSArIEFQQ0kzMTIwX1RJTUVSX1ZBTFVFKTsKIAkJYnJlYWs7CkBAIC04NzIsNyArODcyLDcgQEAKIAkJCQliX0RpZ2l0YWxPdXRwdXRSZWdpc3RlcikgJiAweEYwKSB8CiAJCQlBUENJMzEyMF9TRUxFQ1RfVElNRVJfMV9XT1JEOwogCQlvdXRiKGJfVG1wLCBkZXYtPmlvYmFzZSArIEFQQ0kzMTIwX1RJTUVSX0NSVDApOwotCQkvKiBTZXQgdGhlIGNvbnZlcnRpb24gdGltZSAqLworCQkvKiBTZXQgdGhlIGNvbnZlcnNpb24gdGltZSAqLwogCQlvdXR3KCgodW5zaWduZWQgc2hvcnQpIHVpX1RpbWVyVmFsdWUxKSwKIAkJCWRldi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfVkFMVUUpOwogCkBAIC04ODksNyArODg5LDcgQEAKIAkJCUFQQ0kzMTIwX1NFTEVDVF9USU1FUl8wX1dPUkQ7CiAJCW91dGIoYl9UbXAsIGRldi0+aW9iYXNlICsgQVBDSTMxMjBfVElNRVJfQ1JUMCk7CiAKLQkJLyogU2V0IHRoZSBjb252ZXJ0aW9uIHRpbWUgKi8KKwkJLyogU2V0IHRoZSBjb252ZXJzaW9uIHRpbWUgKi8KIAkJb3V0dygoKHVuc2lnbmVkIHNob3J0KSB1aV9UaW1lclZhbHVlMCksCiAJCQlkZXYtPmlvYmFzZSArIEFQQ0kzMTIwX1RJTUVSX1ZBTFVFKTsKIAkJYnJlYWs7CkBAIC0xMTA0LDcgKzExMDQsNyBAQAogCiAvKgogICogNAotICogYW1vdW50IG9mIGJ5dGVzIHRvIGJlIHRyYW5zZmVyZWQgc2V0IHRyYW5zZmVyIGNvdW50IHVzZWQgQURET04KKyAqIGFtb3VudCBvZiBieXRlcyB0byBiZSB0cmFuc2ZlcnJlZCBzZXQgdHJhbnNmZXIgY291bnQgdXNlZCBBRERPTgogICogTVdUQyByZWdpc3RlciBjb21tZW50ZWQgdGVzdGluZwogICogb3V0bChkZXZwcml2LT51aV9EbWFCdWZmZXJVc2VzaXplWzBdLAogICogZGV2cHJpdi0+aV9Jb2Jhc2VBZGRvbitBTUNDX09QX1JFR19BTVdUQyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMTIwLmggYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMTIwLmgKaW5kZXggYjNjODE5Ny4uNTBlYjBhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzEyMC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMxMjAuaApAQCAtMTY5LDcgKzE2OSw3IEBACiAKIAl1bnNpZ25lZCBjaGFyIGJfVHlwZTsJCS8qIEVPQyBvciBFT1MgKi8KIAl1bnNpZ25lZCBjaGFyIGJfSW50ZXJydXB0RmxhZzsJLyogSW50ZXJydXB0IHVzZSBvciBub3QgICAgICAgICAgICAgICAgICAgICovCi0JdW5zaWduZWQgaW50IHVpX0NvbnZlcnRUaW1pbmc7CS8qIFNlbGVjdGlvbiBvZiB0aGUgY29udmVydGlvbiB0aW1lICAgICAgICAqLworCXVuc2lnbmVkIGludCB1aV9Db252ZXJ0VGltaW5nOwkvKiBTZWxlY3Rpb24gb2YgdGhlIGNvbnZlcnNpb24gdGltZSAgICAgICAgKi8KIAl1bnNpZ25lZCBjaGFyIGJfTmJyT2ZDaGFubmVsOwkvKiBOdW1iZXIgb2YgY2hhbm5lbCB0byByZWFkICAgICAgICAgICAgICAgKi8KIAl1bnNpZ25lZCBpbnQgdWlfQ2hhbm5lbExpc3RbTUFYX0FOQUxPR0lOUFVUX0NIQU5ORUxTXTsJLyogTnVtYmVyIG9mIHRoZSBjaGFubmVsIHRvIGJlIHJlYWQgICAgICAgICovCiAJdW5zaWduZWQgaW50IHVpX1JhbmdlTGlzdFtNQVhfQU5BTE9HSU5QVVRfQ0hBTk5FTFNdOwkvKiBHYWluIG9mIGVhY2ggY2hhbm5lbCAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMyMDAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGRpLWRhdGEvaHdkcnZfYXBjaTMyMDAuYwppbmRleCBhOTNlMjM0Li5jNzVhMWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRkaS1kYXRhL2h3ZHJ2X2FwY2kzMjAwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkZGktZGF0YS9od2Rydl9hcGNpMzIwMC5jCkBAIC0xMDMsNyArMTAzLDcgQEAKIC8qKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKi8KIC8qfCBJbnB1dCBQYXJhbWV0ZXJzICA6IGludCAgICBpX05iT2ZXb3Jkc1RvUmVhZCA6IE5ici4gb2Ygd29yZCB0byByZWFkICAgICAgICB8Ki8KIC8qfCAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkd19QQ0lCb2FyZEVlcHJvbUFkZHJlc3MgOiBBZGRyZXNzIG9mIHRoZSBlZXByb20gfCovCi0vKnwgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAgIHdfRWVwcm9tU3RhcnRBZGRyZXNzIDogRWVwcm9tIHN0cmF0IGFkZHJlc3MgICAgIHwqLworLyp8ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgICB3X0VlcHJvbVN0YXJ0QWRkcmVzcyA6IEVlcHJvbSBzdGFydCBhZGRyZXNzICAgICB8Ki8KIC8qKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rKi8KIC8qfCBPdXRwdXQgUGFyYW1ldGVycyA6IHVuc2lnbmVkIHNob3J0ICogcHdfRGF0YVJlYWQgOiBSZWFkIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgIHwqLwogLyorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsqLwpAQCAtODQ5LDcgKzg0OSw3IEBACiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOlNpbmdsZSBSZWFkCiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOlJlYWQgbW9yZSBjaGFubmVsCiAgIDI6U2luZ2xlIHNjYW4KLSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM6Q29udGlub3VzIFNjYW4KKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM6Q29udGludW91cyBTY2FuCiAgIGRhdGFbMTNdICAgICAgICAgIDpOdW1iZXIgb2YgY2hhbm5lbHMgdG8gcmVhZAogICB8ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzE0XSAgICAgICAgICA6UlREIGNvbm5lY3Rpb24gdHlwZQogICA6MDpSVEQgbm90IHVzZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZGxfcGNpOTExOC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkbF9wY2k5MTE4LmMKaW5kZXggNzY2MTAzYy4uNjMyZDVkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkbF9wY2k5MTE4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkbF9wY2k5MTE4LmMKQEAgLTIzLDcgKzIzLDcgQEAKIC0gSWYgY21kLT5zY2FuX2JlZ2luX3NyYz1UUklHX0VYVCB0aGVuIHRyaWdnZXIgaW5wdXQgaXMgVEdJTiAocGluIDQ2KS4KIC0gSWYgY21kLT5jb252ZXJ0X3NyYz1UUklHX0VYVCB0aGVuIHRyaWdnZXIgaW5wdXQgaXMgRVhUVFJHIChwaW4gNDQpLgogLSBJZiBjbWQtPnN0YXJ0X3NyYy9zdG9wX3NyYz1UUklHX0VYVCB0aGVuIHRyaWdnZXIgaW5wdXQgaXMgVEdJTiAocGluIDQ2KS4KLS0gSXQgaXMgbm90IG5lY2Nlc3NhcnkgdG8gaGF2ZSBjbWQuc2Nhbl9lbmRfYXJnPWNtZC5jaGFubGlzdF9sZW4gYnV0CistIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaGF2ZSBjbWQuc2Nhbl9lbmRfYXJnPWNtZC5jaGFubGlzdF9sZW4gYnV0CiAgIGNtZC5zY2FuX2VuZF9hcmcgbW9kdWxvIGNtZC5jaGFubGlzdF9sZW4gbXVzdCBieSAwLgogLSBJZiByZXR1cm4gdmFsdWUgb2YgY21kdGVzdCBpcyA1IHRoZW4geW91J3ZlIGJhZCBjaGFubmVsIGxpc3QKICAgKGl0IGlzbid0IHBvc3NpYmxlIG1peHR1cmUgUy5FLiBhbmQgRElGRiBpbnB1dHMgb3IgYmlwb2xhciBhbmQgdW5pcG9sYXIKQEAgLTgyMyw3ICs4MjMsNyBAQAogCQltb3ZlX2Jsb2NrX2Zyb21fZG1hKGRldiwgcywKIAkJCQkgICAgZGV2cHJpdi0+ZG1hYnVmX3ZpcnRbZGV2cHJpdi0+ZG1hX2FjdGJ1Zl0sCiAJCQkJICAgIHNhbXBsZXNpbmJ1Zik7Ci0JCW0gPSBtIC0gc2FtcGxzOwkJLyogbT0gaG93IG1hbnkgc2FtcGxlcyB3YXMgdHJhbnNmZXJlZCAqLworCQltID0gbSAtIHNhbXBsczsJCS8qIG09IGhvdyBtYW55IHNhbXBsZXMgd2FzIHRyYW5zZmVycmVkICovCiAJfQogLyogRFBSSU5USygiWVlZXG4iKTsgKi8KIApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAKIAlEUFJJTlRLKCIzIGRtYWxlbjA9JWQgZG1hbGVuMT0lZFxuIiwgZG1hbGVuMCwgZG1hbGVuMSk7CiAJLyogdHJhbnNmZXIgd2l0aG91dCBUUklHX1dBS0VfRU9TICovCiAJaWYgKCEoZGV2cHJpdi0+YWlfZmxhZ3MgJiBUUklHX1dBS0VfRU9TKSkgewotCQkvKiBpZiBpdCdzIHBvc3NpYmxlIHRoZW4gYWxsaWduIERNQSBidWZmZXJzIHRvIGxlbmd0aCBvZiBzY2FuICovCisJCS8qIGlmIGl0J3MgcG9zc2libGUgdGhlbiBhbGlnbiBETUEgYnVmZmVycyB0byBsZW5ndGggb2Ygc2NhbiAqLwogCQlpID0gZG1hbGVuMDsKIAkJZG1hbGVuMCA9CiAJCSAgICAoZG1hbGVuMCAvIChkZXZwcml2LT5haV9uX3JlYWxzY2FubGVuIDw8IDEpKSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRxMTJiLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWRxMTJiLmMKaW5kZXggNGI0NzAwMC4uNTM2MWYzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2FkcTEyYi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9hZHExMmIuYwpAQCAtNjUsNyArNjUsNyBAQAogICAgd3JpdHRlbiBieSBqZXJlbXkgdGhlbGVyIDx0aGVsZXJnQGliLmNuZWEuZ292LmFyPgogCiAgICBpbnN0aXR1dG8gYmFsc2Vpcm8KLSAgIGNvbWlzaW9uIG5hY2lvbmFsIGRlIGVuZXJnaWEgYXRvbWljYQorICAgY29tbWlzc2lvbiBuYWNpb25hbCBkZSBlbmVyZ2lhIGF0b21pY2EKICAgIHVuaXZlcnNpZGFkIG5hY2lvbmFsIGRlIGN1eW8KICAgIGFyZ2VudGluYQogCkBAIC0zNDIsNyArMzQyLDcgQEAKIAkvKiBjb252ZXJ0IG4gc2FtcGxlcyAqLwogCWZvciAobiA9IDA7IG4gPCBpbnNuLT5uOyBuKyspIHsKIAotCQkvKiB3YWl0IGZvciBlbmQgb2YgY29udmVydGlvbiAqLworCQkvKiB3YWl0IGZvciBlbmQgb2YgY29udmVyc2lvbiAqLwogCQlpID0gMDsKIAkJZG8gewogCQkJLyogdWRlbGF5KDEpOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2Fkdl9wY2kxNzEwLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWR2X3BjaTE3MTAuYwppbmRleCA0NjZlNjlmLi5kYTJiNzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWR2X3BjaTE3MTAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvYWR2X3BjaTE3MTAuYwpAQCAtOTgsNyArOTgsNyBAQAogI2RlZmluZQlTdGF0dXNfRkUJMHgwMTAwCS8qIDE9RklGTyBpcyBlbXB0eSAqLwogI2RlZmluZSBTdGF0dXNfRkgJMHgwMjAwCS8qIDE9RklGTyBpcyBoYWxmIGZ1bGwgKi8KICNkZWZpbmUgU3RhdHVzX0ZGCTB4MDQwMAkvKiAxPUZJRk8gaXMgZnVsbCwgZmF0YWwgZXJyb3IgKi8KLSNkZWZpbmUgU3RhdHVzX0lSUQkweDA4MDAJLyogMT1JUlEgb2NjdXJlZCAqLworI2RlZmluZSBTdGF0dXNfSVJRCTB4MDgwMAkvKiAxPUlSUSBvY2N1cnJlZCAqLwogLyogYml0cyBmcm9tIGNvbnRyb2wgcmVnaXN0ZXIgKFBDSTE3MXhfQ09OVFJPTCkgKi8KICNkZWZpbmUgQ29udHJvbF9DTlQwCTB4MDA0MAkvKiAxPUNOVDAgaGF2ZSBleHRlcm5hbCBzb3VyY2UsCiAJCQkJICogMD1oYXZlIGludGVybmFsIDEwMGtIeiBzb3VyY2UgKi8KQEAgLTExNjEsNyArMTE2MSw3IEBACiAJfQogCiAJaWYgKG5fY2hhbiA+IDEpIHsKLQkJY2hhbnNlZ21lbnRbMF0gPSBjaGFubGlzdFswXTsJLyogIGZpcnN0IGNoYW5uZWwgaXMgZXZlcnl0aW1lIG9rICovCisJCWNoYW5zZWdtZW50WzBdID0gY2hhbmxpc3RbMF07CS8qICBmaXJzdCBjaGFubmVsIGlzIGV2ZXJ5IHRpbWUgb2sgKi8KIAkJZm9yIChpID0gMSwgc2VnbGVuID0gMTsgaSA8IG5fY2hhbjsgaSsrLCBzZWdsZW4rKykgewkvKiAgYnVpbGQgcGFydCBvZiBjaGFubGlzdCAqLwogCQkJLyogIHByaW50aygiJWQuICVkICVkXG4iLGksQ1JfQ0hBTihjaGFubGlzdFtpXSksQ1JfUkFOR0UoY2hhbmxpc3RbaV0pKTsgKi8KIAkJCWlmIChjaGFubGlzdFswXSA9PSBjaGFubGlzdFtpXSkKQEAgLTExNzYsOSArMTE3Niw5IEBACiAJCQkgICAgKENSX0NIQU4oY2hhbnNlZ21lbnRbaSAtIDFdKSArIDEpICUgcy0+bl9jaGFuOwogCQkJaWYgKENSX0FSRUYoY2hhbnNlZ21lbnRbaSAtIDFdKSA9PSBBUkVGX0RJRkYpCiAJCQkJbm93bXVzdGJlY2hhbiA9IChub3dtdXN0YmVjaGFuICsgMSkgJSBzLT5uX2NoYW47Ci0JCQlpZiAobm93bXVzdGJlY2hhbiAhPSBDUl9DSEFOKGNoYW5saXN0W2ldKSkgewkvKiAgY2hhbm5lbCBsaXN0IGlzbid0IGNvbnRpbm91cyA6LSggKi8KKwkJCWlmIChub3dtdXN0YmVjaGFuICE9IENSX0NIQU4oY2hhbmxpc3RbaV0pKSB7CS8qICBjaGFubmVsIGxpc3QgaXNuJ3QgY29udGludW91cyA6LSggKi8KIAkJCQlwcmludGsKLQkJCQkgICAgKCJjaGFubmVsIGxpc3QgbXVzdCBiZSBjb250aW5vdXMhIGNoYW5saXN0WyVpXT0lZCBidXQgbXVzdCBiZSAlZCBvciAlZCFcbiIsCisJCQkJICAgICgiY2hhbm5lbCBsaXN0IG11c3QgYmUgY29udGludW91cyEgY2hhbmxpc3RbJWldPSVkIGJ1dCBtdXN0IGJlICVkIG9yICVkIVxuIiwKIAkJCQkgICAgIGksIENSX0NIQU4oY2hhbmxpc3RbaV0pLCBub3dtdXN0YmVjaGFuLAogCQkJCSAgICAgQ1JfQ0hBTihjaGFubGlzdFswXSkpOwogCQkJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhcy5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhcy5jCmluZGV4IDA5NDE2NDMuLjYxOTY4YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jYl9wY2lkYXMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY2JfcGNpZGFzLmMKQEAgLTExNSw3ICsxMTUsNyBAQAogI2RlZmluZSAgIElOVF9NQVNLIDB4MwkJLyogIG1hc2sgb2YgaW50ZXJydXB0IHNlbGVjdCBiaXRzICovCiAjZGVmaW5lICAgSU5URSAweDQJCS8qICBpbnRlcnJ1cHQgZW5hYmxlICovCiAjZGVmaW5lICAgREFIRklFIDB4OAkJLyogIGRhYyBoYWxmIGZ1bGwgaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSAgIEVPQUlFCTB4MTAJCS8qICBlbmQgb2YgYXF1aXNpdGlvbiBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICAgRU9BSUUJMHgxMAkJLyogIGVuZCBvZiBhY3F1aXNpdGlvbiBpbnRlcnJ1cHQgZW5hYmxlICovCiAjZGVmaW5lICAgREFIRkkJMHgyMAkJLyogIGRhYyBoYWxmIGZ1bGwgcmVhZCBzdGF0dXMgLyB3cml0ZSBpbnRlcnJ1cHQgY2xlYXIgKi8KICNkZWZpbmUgICBFT0FJIDB4NDAJCS8qICByZWFkIGVuZCBvZiBhY3EuIGludGVycnVwdCBzdGF0dXMgLyB3cml0ZSBjbGVhciAqLwogI2RlZmluZSAgIElOVCAweDgwCQkvKiAgcmVhZCBpbnRlcnJ1cHQgc3RhdHVzIC8gd3JpdGUgY2xlYXIgKi8KQEAgLTQ0MCw3ICs0NDAsNyBAQAogCXVuc2lnbmVkIGludCBkaXZpc29yMTsKIAl1bnNpZ25lZCBpbnQgZGl2aXNvcjI7CiAJdm9sYXRpbGUgdW5zaWduZWQgaW50IGNvdW50OwkvKiAgbnVtYmVyIG9mIGFuYWxvZyBpbnB1dCBzYW1wbGVzIHJlbWFpbmluZyAqLwotCXZvbGF0aWxlIHVuc2lnbmVkIGludCBhZGNfZmlmb19iaXRzOwkvKiAgYml0cyB0byB3cml0ZSB0byBpbnRlcnVwdC9hZGNmaWZvIHJlZ2lzdGVyICovCisJdm9sYXRpbGUgdW5zaWduZWQgaW50IGFkY19maWZvX2JpdHM7CS8qICBiaXRzIHRvIHdyaXRlIHRvIGludGVycnVwdC9hZGNmaWZvIHJlZ2lzdGVyICovCiAJdm9sYXRpbGUgdW5zaWduZWQgaW50IHM1OTMzX2ludGNzcl9iaXRzOwkvKiAgYml0cyB0byB3cml0ZSB0byBhbWNjIHM1OTMzIGludGVycnVwdCBjb250cm9sL3N0YXR1cyByZWdpc3RlciAqLwogCXZvbGF0aWxlIHVuc2lnbmVkIGludCBhb19jb250cm9sX2JpdHM7CS8qICBiaXRzIHRvIHdyaXRlIHRvIGFvIGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciAqLwogCXNob3J0IGFpX2J1ZmZlcltBSV9CVUZGRVJfU0laRV07CkBAIC0xNjUzLDcgKzE2NTMsNyBAQAogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7CiAJfSBlbHNlIGlmIChzdGF0dXMgJiBFT0FJKSB7CiAJCWNvbWVkaV9lcnJvcihkZXYsCi0JCQkgICAgICJidWchIGVuY291bnRlcmVkIGVuZCBvZiBhcXVpc2l0aW9uIGludGVycnVwdD8iKTsKKwkJCSAgICAgImJ1ZyEgZW5jb3VudGVyZWQgZW5kIG9mIGFjcXVpc2l0aW9uIGludGVycnVwdD8iKTsKIAkJLyogIGNsZWFyIEVPQSBpbnRlcnJ1cHQgbGF0Y2ggKi8KIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAkJb3V0dyhkZXZwcml2LT5hZGNfZmlmb19iaXRzIHwgRU9BSSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jYl9wY2lkYXM2NC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhczY0LmMKaW5kZXggMjU4M2UxNi4uMWUzMjQxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhczY0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2NiX3BjaWRhczY0LmMKQEAgLTEwNCw3ICsxMDQsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgVElNRVJfQkFTRSAyNQkJLyogIDQwTUh6IG1hc3RlciBjbG9jayAqLwotI2RlZmluZSBQUkVTQ0FMRURfVElNRVJfQkFTRQkxMDAwMAkvKiAgMTAwa0h6ICdwcmVzY2FsZWQnIGNsb2NrIGZvciBzbG93IGFxdWlzaXRpb24sIG1heWJlIEknbGwgc3VwcG9ydCB0aGlzIHNvbWVkYXkgKi8KKyNkZWZpbmUgUFJFU0NBTEVEX1RJTUVSX0JBU0UJMTAwMDAJLyogIDEwMGtIeiAncHJlc2NhbGVkJyBjbG9jayBmb3Igc2xvdyBhY3F1aXNpdGlvbiwgbWF5YmUgSSdsbCBzdXBwb3J0IHRoaXMgc29tZWRheSAqLwogI2RlZmluZSBETUFfQlVGRkVSX1NJWkUgMHgxMDAwCiAKICNkZWZpbmUgUENJX1ZFTkRPUl9JRF9DT01QVVRFUkJPQVJEUwkweDEzMDcKQEAgLTEzNiw3ICsxMzYsNyBAQAogCUFEQ19ERUxBWV9JTlRFUlZBTF9VUFBFUl9SRUcgPSAweDFjLAkvKiAgdXBwZXIgOCBiaXRzIG9mIGRlbGF5IGludGVydmFsIGNvdW50ZXIgKi8KIAlBRENfQ09VTlRfTE9XRVJfUkVHID0gMHgxZSwJLyogIGxvd2VyIDE2IGJpdHMgb2YgaGFyZHdhcmUgY29udmVyc2lvbi9zY2FuIGNvdW50ZXIgKi8KIAlBRENfQ09VTlRfVVBQRVJfUkVHID0gMHgyMCwJLyogIHVwcGVyIDggYml0cyBvZiBoYXJkd2FyZSBjb252ZXJzaW9uL3NjYW4gY291bnRlciAqLwotCUFEQ19TVEFSVF9SRUcgPSAweDIyLAkvKiAgc29mdHdhcmUgdHJpZ2dlciB0byBzdGFydCBhcXVpc2l0aW9uICovCisJQURDX1NUQVJUX1JFRyA9IDB4MjIsCS8qICBzb2Z0d2FyZSB0cmlnZ2VyIHRvIHN0YXJ0IGFjcXVpc2l0aW9uICovCiAJQURDX0NPTlZFUlRfUkVHID0gMHgyNCwJLyogIGluaXRpYXRlcyBzaW5nbGUgY29udmVyc2lvbiAqLwogCUFEQ19RVUVVRV9DTEVBUl9SRUcgPSAweDI2LAkvKiAgY2xlYXJzIGFkYyBxdWV1ZSAqLwogCUFEQ19RVUVVRV9MT0FEX1JFRyA9IDB4MjgsCS8qICBsb2FkcyBhZGMgcXVldWUgKi8KQEAgLTE5OSw3ICsxOTksNyBAQAogCUFEQ19JTlRSX0VPU0NBTl9CSVRTID0gMHgyLAkvKiAgaW50ZXJydXB0IGVuZCBvZiBzY2FuICovCiAJQURDX0lOVFJfRU9TRVFfQklUUyA9IDB4MywJLyogIGludGVycnVwdCBlbmQgb2Ygc2VxdWVuY2UgKHByb2JhYmx5IHdvbnQgdXNlIHRoaXMgaXQncyBwcmV0dHkgZmFuY3kpICovCiAJRU5fQURDX0lOVFJfU1JDX0JJVCA9IDB4NCwJLyogIGVuYWJsZSBhZGMgaW50ZXJydXB0IHNvdXJjZSAqLwotCUVOX0FEQ19ET05FX0lOVFJfQklUID0gMHg4LAkvKiAgZW5hYmxlIGFkYyBhcXVpc2l0aW9uIGRvbmUgaW50ZXJydXB0ICovCisJRU5fQURDX0RPTkVfSU5UUl9CSVQgPSAweDgsCS8qICBlbmFibGUgYWRjIGFjcXVpc2l0aW9uIGRvbmUgaW50ZXJydXB0ICovCiAJREFDX0lOVFJfU1JDX01BU0sgPSAweDMwLAogCURBQ19JTlRSX1FFTVBUWV9CSVRTID0gMHgwLAogCURBQ19JTlRSX0hJR0hfQ0hBTl9CSVRTID0gMHgxMCwKQEAgLTI4NjcsNyArMjg2Nyw3IEBACiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7CiAKLQkvKiAgc3RhcnQgYXF1aXNpdGlvbiAqLworCS8qICBzdGFydCBhY3F1aXNpdGlvbiAqLwogCWlmIChjbWQtPnN0YXJ0X3NyYyA9PSBUUklHX05PVykgewogCQl3cml0ZXcoMCwgcHJpdihkZXYpLT5tYWluX2lvYmFzZSArIEFEQ19TVEFSVF9SRUcpOwogCQlERUJVR19QUklOVCgic29mdCB0cmlnXG4iKTsKQEAgLTI5NDIsNyArMjk0Miw3IEBACiAvKiBSZWFkIGZyb20gMzIgYml0IHdpZGUgYWkgZmlmbyBvZiA0MDIwIC0gZGVhbCB3aXRoIGluc2FuZSBncmV5IGNvZGluZyBvZiBwb2ludGVycy4KICAqIFRoZSBwY2ktNDAyMCBoYXJkd2FyZSBvbmx5IHN1cHBvcnRzCiAgKiBkbWEgdHJhbnNmZXJzIChpdCBvbmx5IHN1cHBvcnRzIHRoZSB1c2Ugb2YgcGlvIGZvciBkcmFpbmluZyB0aGUgbGFzdCByZW1haW5pbmcKLSAqIHBvaW50cyBmcm9tIHRoZSBmaWZvIHdoZW4gYSBkYXRhIGFxdWlzaXRpb24gb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQpLgorICogcG9pbnRzIGZyb20gdGhlIGZpZm8gd2hlbiBhIGRhdGEgYWNxdWlzaXRpb24gb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQpLgogICovCiBzdGF0aWMgdm9pZCBwaW9fZHJhaW5fYWlfZmlmb18zMihzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2KQogewpAQCAtMzA0Niw3ICszMDQ2LDcgQEAKIAkJY29tZWRpX2Vycm9yKGRldiwgImZpZm8gb3ZlcnJ1biIpOwogCQlhc3luYy0+ZXZlbnRzIHw9IENPTUVESV9DQl9FT0EgfCBDT01FRElfQ0JfRVJST1I7CiAJfQotCS8qICBzcGluIGxvY2sgbWFrZXMgc3VyZSBub29uZSBlbHNlIGNoYW5nZXMgcGx4IGRtYSBjb250cm9sIHJlZyAqLworCS8qICBzcGluIGxvY2sgbWFrZXMgc3VyZSBubyBvbmUgZWxzZSBjaGFuZ2VzIHBseCBkbWEgY29udHJvbCByZWcgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5zcGlubG9jaywgZmxhZ3MpOwogCWRtYTFfc3RhdHVzID0gcmVhZGIocHJpdihkZXYpLT5wbHg5MDgwX2lvYmFzZSArIFBMWF9ETUExX0NTX1JFRyk7CiAJaWYgKHBseF9zdGF0dXMgJiBJQ1NfRE1BMV9BKSB7CS8qICBkbWEgY2hhbiAxIGludGVycnVwdCAqLwpAQCAtMzE3MCw3ICszMTcwLDcgQEAKIAlhc3luYyA9IHMtPmFzeW5jOwogCWNtZCA9ICZhc3luYy0+Y21kOwogCi0JLyogIHNwaW4gbG9jayBtYWtlcyBzdXJlIG5vb25lIGVsc2UgY2hhbmdlcyBwbHggZG1hIGNvbnRyb2wgcmVnICovCisJLyogIHNwaW4gbG9jayBtYWtlcyBzdXJlIG5vIG9uZSBlbHNlIGNoYW5nZXMgcGx4IGRtYSBjb250cm9sIHJlZyAqLwogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnNwaW5sb2NrLCBmbGFncyk7CiAJZG1hMF9zdGF0dXMgPSByZWFkYihwcml2KGRldiktPnBseDkwODBfaW9iYXNlICsgUExYX0RNQTBfQ1NfUkVHKTsKIAlpZiAocGx4X3N0YXR1cyAmIElDU19ETUEwX0EpIHsJLyogIGRtYSBjaGFuIDAgaW50ZXJydXB0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvY29tZWRpX3Rlc3QuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jb21lZGlfdGVzdC5jCmluZGV4IGIyMjBiMzAuLmE4MDQ3NDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jb21lZGlfdGVzdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9jb21lZGlfdGVzdC5jCkBAIC04MSw3ICs4MSw3IEBACiAvKiBEYXRhIHVuaXF1ZSB0byB0aGlzIGRyaXZlciAqLwogc3RydWN0IHdhdmVmb3JtX3ByaXZhdGUgewogCXN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwotCXN0cnVjdCB0aW1ldmFsIGxhc3Q7CS8qIHRpbWUgYXQgd2hpY2ggbGFzdCB0aW1lciBpbnRlcnJ1cHQgb2NjdXJlZCAqLworCXN0cnVjdCB0aW1ldmFsIGxhc3Q7CS8qIHRpbWUgYXQgd2hpY2ggbGFzdCB0aW1lciBpbnRlcnJ1cHQgb2NjdXJyZWQgKi8KIAl1bnNpZ25lZCBpbnQgdXZvbHRfYW1wbGl0dWRlOwkvKiB3YXZlZm9ybSBhbXBsaXR1ZGUgaW4gbWljcm92b2x0cyAqLwogCXVuc2lnbmVkIGxvbmcgdXNlY19wZXJpb2Q7CS8qIHdhdmVmb3JtIHBlcmlvZCBpbiBtaWNyb3NlY29uZHMgKi8KIAl1bnNpZ25lZCBsb25nIHVzZWNfY3VycmVudDsJLyogY3VycmVudCB0aW1lIChtb2R1bG8gd2F2ZWZvcm0gcGVyaW9kKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RhczE4MDAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kYXMxODAwLmMKaW5kZXggNmVhOTNmOS4uNjBjMmIxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RhczE4MDAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFzMTgwMC5jCkBAIC0xMDg3LDcgKzEwODcsNyBAQAogCXJldHVybjsKIH0KIAotLyogZmx1c2hlcyByZW1haW5pbmcgZGF0YSBmcm9tIGJvYXJkIHdoZW4gZXh0ZXJuYWwgdHJpZ2dlciBoYXMgc3RvcHBlZCBhcXVpc2l0aW9uCisvKiBmbHVzaGVzIHJlbWFpbmluZyBkYXRhIGZyb20gYm9hcmQgd2hlbiBleHRlcm5hbCB0cmlnZ2VyIGhhcyBzdG9wcGVkIGFjcXVpc2l0aW9uCiAgKiBhbmQgd2UgYXJlIHVzaW5nIGRtYSB0cmFuc2ZlcnMgKi8KIHN0YXRpYyB2b2lkIGRhczE4MDBfZmx1c2hfZG1hKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsCiAJCQkgICAgICBzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kYXM4MDAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kYXM4MDAuYwppbmRleCBhZWNhZWRjLi45NmQ0MWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZGFzODAwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RhczgwMC5jCkBAIC0zOTEsNyArMzkxLDcgQEAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5zcGlubG9jaywgaXJxX2ZsYWdzKTsKIAlvdXRiKENPTlRST0wxLCBkZXYtPmlvYmFzZSArIERBUzgwMF9HQUlOKTsJLyogc2VsZWN0IGJhc2UgYWRkcmVzcyArIDcgdG8gYmUgU1RBVFVTMiByZWdpc3RlciAqLwogCXN0YXR1cyA9IGluYihkZXYtPmlvYmFzZSArIERBUzgwMF9TVEFUVVMyKSAmIFNUQVRVUzJfSENFTjsKLQkvKiBkb24ndCByZWxlYXNlIHNwaW5sb2NrIHlldCBzaW5jZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSBub29uZSBlbHNlIGRpc2FibGVzIGhhcmR3YXJlIGNvbnZlcnNpb25zICovCisJLyogZG9uJ3QgcmVsZWFzZSBzcGlubG9jayB5ZXQgc2luY2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgbm8gb25lIGVsc2UgZGlzYWJsZXMgaGFyZHdhcmUgY29udmVyc2lvbnMgKi8KIAlpZiAoc3RhdHVzID09IDApIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5zcGlubG9jaywgaXJxX2ZsYWdzKTsKIAkJcmV0dXJuIElSUV9IQU5ETEVEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RtbTMyYXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kbW0zMmF0LmMKaW5kZXggNjkzNzI4ZS4uMmI0ZTZlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2RtbTMyYXQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZG1tMzJhdC5jCkBAIC01MzIsNyArNTMyLDcgQEAKIAkJbXNiID0gZG1tX2luYihkZXYsIERNTTMyQVRfQUlNU0IpOwogCiAJCS8qIGludmVydCBzaWduIGJpdCB0byBtYWtlIHJhbmdlIHVuc2lnbmVkLCB0aGlzIGlzIGFuCi0JCSAgIGlkaW9zeW5jcmFjeSBvZiB0aGUgZGlhbW9uZCBib2FyZCwgaXQgcmV0dXJuCisJCSAgIGlkaW9zeW5jcmFzeSBvZiB0aGUgZGlhbW9uZCBib2FyZCwgaXQgcmV0dXJuCiAJCSAgIGNvbnZlcnNpb25zIGFzIGEgc2lnbmVkIHZhbHVlLCBpLmUuIC0zMjc2OCB0bwogCQkgICAzMjc2NywgZmxpcHBpbmcgdGhlIGJpdCBhbmQgaW50ZXJwcmV0aW5nIGl0IGFzCiAJCSAgIHNpZ25lZCBnaXZlcyB5b3UgYSByYW5nZSBvZiAwIHRvIDY1NTM1IHdoaWNoIGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZHQyODExLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZHQyODExLmMKaW5kZXggYTE2NjRjYS4uMDEzMWQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2R0MjgxMS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kdDI4MTEuYwpAQCAtNTYwLDcgKzU2MCw3IEBACiAJc3dpdGNoIChkZXYtPmlfYWRtb2RlKSB7CiAJY2FzZSBDT01FRElfTURFTUFORDoKIAkJZGV2LT5udHJpZyA9IGFkdHJpZy0+biAtIDE7Ci0JCS8qIG5vdCBuZWNjZXNzYXJ5ICovCisJCS8qIG5vdCBuZWNlc3NhcnkgKi8KIAkJLypwcmludGsoImR0MjgxMTogQUQgc29mdCB0cmlnZ2VyXG4iKTsgKi8KIAkJLypvdXRiKERUMjgxMV9DTFJFUlJPUnxEVDI4MTFfSU5URU5CLAogCQkJZGV2LT5pb2Jhc2UrRFQyODExX0FEQ1NSKTsgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kdDk4MTIuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9kdDk4MTIuYwppbmRleCAwNjA1OTg1Li4zMmQ5YzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZHQ5ODEyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2R0OTgxMi5jCkBAIC03NzMsNyArNzczLDcgQEAKIAkJCXJldHZhbCA9IGR0OTgxMl9yZWFkX2luZm8oZGV2LCAxLCAmZncsIHNpemVvZihmdykpOwogCQkJaWYgKHJldHZhbCA9PSAwKSB7CiAJCQkJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LAotCQkJCQkgInVzYl9yZXNldF9jb25maWd1cmF0aW9uIHN1Y2NlZGVkICIKKwkJCQkJICJ1c2JfcmVzZXRfY29uZmlndXJhdGlvbiBzdWNjZWVkZWQgIgogCQkJCQkgImFmdGVyICVkIGl0ZXJhdGlvbnNcbiIsIGkpOwogCQkJCWJyZWFrOwogCQkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2dzY19ocGRpLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZ3NjX2hwZGkuYwppbmRleCAxNjYxYjU3Li5iYzAyMGRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZ3NjX2hwZGkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvZ3NjX2hwZGkuYwpAQCAtMTAzMSw3ICsxMDMxLDcgQEAKIAkJd3JpdGVsKGhwZGlfaW50cl9zdGF0dXMsCiAJCSAgICAgICBwcml2KGRldiktPmhwZGlfaW9iYXNlICsgSU5URVJSVVBUX1NUQVRVU19SRUcpOwogCX0KLQkvKiAgc3BpbiBsb2NrIG1ha2VzIHN1cmUgbm9vbmUgZWxzZSBjaGFuZ2VzIHBseCBkbWEgY29udHJvbCByZWcgKi8KKwkvKiAgc3BpbiBsb2NrIG1ha2VzIHN1cmUgbm8gb25lIGVsc2UgY2hhbmdlcyBwbHggZG1hIGNvbnRyb2wgcmVnICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAlkbWEwX3N0YXR1cyA9IHJlYWRiKHByaXYoZGV2KS0+cGx4OTA4MF9pb2Jhc2UgKyBQTFhfRE1BMF9DU19SRUcpOwogCWlmIChwbHhfc3RhdHVzICYgSUNTX0RNQTBfQSkgewkvKiAgZG1hIGNoYW4gMCBpbnRlcnJ1cHQgKi8KQEAgLTEwNDUsNyArMTA0NSw3IEBACiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAotCS8qICBzcGluIGxvY2sgbWFrZXMgc3VyZSBub29uZSBlbHNlIGNoYW5nZXMgcGx4IGRtYSBjb250cm9sIHJlZyAqLworCS8qICBzcGluIGxvY2sgbWFrZXMgc3VyZSBubyBvbmUgZWxzZSBjaGFuZ2VzIHBseCBkbWEgY29udHJvbCByZWcgKi8KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5zcGlubG9jaywgZmxhZ3MpOwogCWRtYTFfc3RhdHVzID0gcmVhZGIocHJpdihkZXYpLT5wbHg5MDgwX2lvYmFzZSArIFBMWF9ETUExX0NTX1JFRyk7CiAJaWYgKHBseF9zdGF0dXMgJiBJQ1NfRE1BMV9BKSB7CS8qICBYWFggKi8vKiAgZG1hIGNoYW4gMSBpbnRlcnJ1cHQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9pY3BfbXVsdGkuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9pY3BfbXVsdGkuYwppbmRleCAwYmFiMzliLi4xMjY1NTBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvaWNwX211bHRpLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL2ljcF9tdWx0aS5jCkBAIC03MTUsNyArNzE1LDcgQEAKIAlpcyBidWlsdCBjb3JyZWN0bHkKIAogUGFyYW1ldGVyczoKLQlzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2CVBvaW50ZXIgdG8gY3VycmVudCBzZXZpY2Ugc3RydWN0dXJlCisJc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldglQb2ludGVyIHRvIGN1cnJlbnQgc2VydmljZSBzdHJ1Y3R1cmUKIAlzdHJ1Y3QgY29tZWRpX3N1YmRldmljZSAqcwlQb2ludGVyIHRvIGN1cnJlbnQgc3ViZGV2aWNlIHN0cnVjdHVyZQogCXVuc2lnbmVkIGludCAqY2hhbmxpc3QJUG9pbnRlciB0byBwYWNrZWQgY2hhbm5lbCBsaXN0CiAJdW5zaWduZWQgaW50IG5fY2hhbglOdW1iZXIgb2YgY2hhbm5lbHMgdG8gc2NhbgpAQCAtNzcyLDcgKzc3Miw3IEBACiAJU3RhdHVzIHJlZ2lzdGVyLgogCiBQYXJhbWV0ZXJzOgotCXN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYJUG9pbnRlciB0byBjdXJyZW50IHNldmljZSBzdHJ1Y3R1cmUKKwlzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2CVBvaW50ZXIgdG8gY3VycmVudCBzZXJ2aWNlIHN0cnVjdHVyZQogCXN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzCVBvaW50ZXIgdG8gY3VycmVudCBzdWJkZXZpY2Ugc3RydWN0dXJlCiAJdW5zaWduZWQgaW50ICpjaGFubGlzdAlQb2ludGVyIHRvIHBhY2tlZCBjaGFubmVsIGxpc3QKIAl1bnNpZ25lZCBpbnQgbl9jaGFuCU51bWJlciBvZiBjaGFubmVscyB0byBzY2FuCkBAIC04NDgsNyArODQ4LDcgQEAKIAlUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgaWNwIG11bHRpIGRldmljZSB0byBhICdzYWZlJyBzdGF0ZQogCiBQYXJhbWV0ZXJzOgotCXN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYJUG9pbnRlciB0byBjdXJyZW50IHNldmljZSBzdHJ1Y3R1cmUKKwlzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2CVBvaW50ZXIgdG8gY3VycmVudCBzZXJ2aWNlIHN0cnVjdHVyZQogCiBSZXR1cm5zOmludAkwID0gc3VjY2VzcwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbWU0MDAwLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbWU0MDAwLmMKaW5kZXggNzU1MTFiYS4uYjY5MmZlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL21lNDAwMC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9tZTQwMDAuYwpAQCAtMTgxMCw3ICsxODEwLDcgQEAKIAkJICAgICAgIGFpX2NvbnRleHQtPmlycV9zdGF0dXNfcmVnKSAmCiAJICAgIE1FNDAwMF9JUlFfU1RBVFVTX0JJVF9BSV9IRikgewogCQlJU1JfUERFQlVHCi0JCSAgICAoIm1lNDAwMF9haV9pc3IoKTogRmlmbyBoYWxmIGZ1bGwgaW50ZXJydXB0IG9jY3VyZWRcbiIpOworCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6IEZpZm8gaGFsZiBmdWxsIGludGVycnVwdCBvY2N1cnJlZFxuIik7CiAKIAkJLyogUmVhZCBzdGF0dXMgcmVnaXN0ZXIgdG8gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCAqLwogCQl0bXAgPSBtZTQwMDBfaW5sKGRldiwgYWlfY29udGV4dC0+Y3RybF9yZWcpOwpAQCAtMTkwMyw3ICsxOTAzLDcgQEAKIAlpZiAobWU0MDAwX2lubChkZXYsCiAJCSAgICAgICBhaV9jb250ZXh0LT5pcnFfc3RhdHVzX3JlZykgJiBNRTQwMDBfSVJRX1NUQVRVU19CSVRfU0MpIHsKIAkJSVNSX1BERUJVRwotCQkgICAgKCJtZTQwMDBfYWlfaXNyKCk6IFNhbXBsZSBjb3VudGVyIGludGVycnVwdCBvY2N1cmVkXG4iKTsKKwkJICAgICgibWU0MDAwX2FpX2lzcigpOiBTYW1wbGUgY291bnRlciBpbnRlcnJ1cHQgb2NjdXJyZWRcbiIpOwogCiAJCXMtPmFzeW5jLT5ldmVudHMgfD0gQ09NRURJX0NCX0JMT0NLIHwgQ09NRURJX0NCX0VPQTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL21wYzYyNC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL21wYzYyNC5jCmluZGV4IGE4OWVlYmQuLmRkMDlhNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9tcGM2MjQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbXBjNjI0LmMKQEAgLTM5LDggKzM5LDggQEAKIAogQ29uZmlndXJhdGlvbiBPcHRpb25zOgogICBbMF0gLSBJL08gYmFzZSBhZGRyZXNzCi0gIFsxXSAtIGNvbnZlcnRpb24gcmF0ZQotCUNvbnZlcnRpb24gcmF0ZSAgUk1TIG5vaXNlICBFZmZlY3RpdmUgTnVtYmVyIE9mIEJpdHMKKyAgWzFdIC0gY29udmVyc2lvbiByYXRlCisJQ29udmVyc2lvbiByYXRlICBSTVMgbm9pc2UgIEVmZmVjdGl2ZSBOdW1iZXIgT2YgQml0cwogCTAgICAgICAzLjUya0h6ICAgICAgICAyM3VWICAgICAgICAgICAgICAgIDE3CiAJMSAgICAgIDEuNzZrSHogICAgICAgMy41dVYgICAgICAgICAgICAgICAgMjAKIAkyICAgICAgIDg4MEh6ICAgICAgICAgMnVWICAgICAgICAgICAgICAgIDIxLjMKQEAgLTkzLDggKzkzLDggQEAKICNkZWZpbmUgTVBDNjI0X0RNWV9CSVQgICAgICAgICAgKDE8PDMwKQogI2RlZmluZSBNUEM2MjRfU0dOX0JJVCAgICAgICAgICAoMTw8MjkpCiAKLS8qIENvbnZlcnRpb24gc3BlZWRzICovCi0vKiBPU1I0IE9TUjMgT1NSMiBPU1IxIE9TUjAgIENvbnZlcnRpb24gcmF0ZSAgUk1TIG5vaXNlICBFTk9CXgorLyogQ29udmVyc2lvbiBzcGVlZHMgKi8KKy8qIE9TUjQgT1NSMyBPU1IyIE9TUjEgT1NSMCAgQ29udmVyc2lvbiByYXRlICBSTVMgbm9pc2UgIEVOT0JeCiAgKiAgWCAgICAwICAgIDAgICAgMCAgICAxICAgICAgICAzLjUya0h6ICAgICAgICAyM3VWICAgICAgMTcKICAqICBYICAgIDAgICAgMCAgICAxICAgIDAgICAgICAgIDEuNzZrSHogICAgICAgMy41dVYgICAgICAyMAogICogIFggICAgMCAgICAwICAgIDEgICAgMSAgICAgICAgIDg4MEh6ICAgICAgICAgMnVWICAgICAgMjEuMwpAQCAtMjI3LDcgKzIyNyw3IEBACiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50awotCQkgICAgKEtFUk5fRVJSICJpbGxlZ2FsIGNvbnZlcnRpb24gcmF0ZSBzZXR0aW5nISIKKwkJICAgIChLRVJOX0VSUiAiaWxsZWdhbCBjb252ZXJzaW9uIHJhdGUgc2V0dGluZyEiCiAJCQkiIFZhbGlkIG51bWJlcnMgYXJlIDAuLjkuIFVzaW5nIDkgPT4gNi44NzUgSHosICIpOwogCQlkZXZwcml2LT51bENvbnZlcnRpb25SYXRlID0gTVBDNjI0X1NQRUVEXzNfNTJfa0h6OwogCX0KQEAgLTI5Niw3ICsyOTYsNyBAQAogCX0KIAogCWZvciAobiA9IDA7IG4gPCBpbnNuLT5uOyBuKyspIHsKLQkJLyogIFRyaWdnZXIgdGhlIGNvbnZlcnRpb24gKi8KKwkJLyogIFRyaWdnZXIgdGhlIGNvbnZlcnNpb24gKi8KIAkJb3V0YihNUEM2MjRfQURTQ0ssIGRldi0+aW9iYXNlICsgTVBDNjI0X0FEQyk7CiAJCXVkZWxheSgxKTsKIAkJb3V0YihNUEM2MjRfQURDUyB8IE1QQzYyNF9BRFNDSywgZGV2LT5pb2Jhc2UgKyBNUEM2MjRfQURDKTsKQEAgLTMwNCw3ICszMDQsNyBAQAogCQlvdXRiKDAsIGRldi0+aW9iYXNlICsgTVBDNjI0X0FEQyk7CiAJCXVkZWxheSgxKTsKIAotCQkvKiAgV2FpdCBmb3IgdGhlIGNvbnZlcnRpb24gdG8gZW5kICovCisJCS8qICBXYWl0IGZvciB0aGUgY29udmVyc2lvbiB0byBlbmQgKi8KIAkJZm9yIChpID0gMDsgaSA8IFRJTUVPVVQ7IGkrKykgewogCQkJdWNQb3J0ID0gaW5iKGRldi0+aW9iYXNlICsgTVBDNjI0X0FEQyk7CiAJCQlpZiAodWNQb3J0ICYgTVBDNjI0X0FEQlVTWSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9hdF9hMjE1MC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2F0X2EyMTUwLmMKaW5kZXggNGQwMDUzZS4uYzE5MmI3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2F0X2EyMTUwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX2F0X2EyMTUwLmMKQEAgLTEwNCwxMCArMTA0LDEwIEBACiAjZGVmaW5lIFNUQVRVU19SRUcJCTB4MTIJLyogIHJlYWQgb25seSAqLwogI2RlZmluZSAgIEZORV9CSVQJCTB4MQkvKiAgZmlmbyBub3QgZW1wdHkgKi8KICNkZWZpbmUgICBPVkZMX0JJVAkJMHg4CS8qICBmaWZvIG92ZXJmbG93ICovCi0jZGVmaW5lICAgRURBUV9CSVQJCTB4MTAJLyogIGVuZCBvZiBhcXVpc2l0aW9uIGludGVycnVwdCAqLworI2RlZmluZSAgIEVEQVFfQklUCQkweDEwCS8qICBlbmQgb2YgYWNxdWlzaXRpb24gaW50ZXJydXB0ICovCiAjZGVmaW5lICAgRENBTF9CSVQJCTB4MjAJLyogIG9mZnNldCBjYWxpYnJhdGlvbiBpbiBwcm9ncmVzcyAqLwotI2RlZmluZSAgIElOVFJfQklUCQkweDQwCS8qICBpbnRlcnJ1cHQgaGFzIG9jY3VyZWQgKi8KLSNkZWZpbmUgICBETUFfVENfQklUCQkweDgwCS8qICBkbWEgdGVybWluYWwgY291bnQgaW50ZXJydXB0IGhhcyBvY2N1cmVkICovCisjZGVmaW5lICAgSU5UUl9CSVQJCTB4NDAJLyogIGludGVycnVwdCBoYXMgb2NjdXJyZWQgKi8KKyNkZWZpbmUgICBETUFfVENfQklUCQkweDgwCS8qICBkbWEgdGVybWluYWwgY291bnQgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCAqLwogI2RlZmluZSAgIElEX0JJVFMoeCkJKCgoeCkgPj4gOCkgJiAweDMpCiAjZGVmaW5lIElSUV9ETUFfQ05UUkxfUkVHCQkweDEyCS8qICB3cml0ZSBvbmx5ICovCiAjZGVmaW5lICAgRE1BX0NIQU5fQklUUyh4KQkJKCh4KSAmIDB4NykJLyogIHNldHMgZG1hIGNoYW5uZWwgKi8KQEAgLTQzNCw3ICs0MzQsNyBAQAogCXMtPmNhbmNlbCA9IGEyMTUwX2NhbmNlbDsKIAogCS8qIG5lZWQgdG8gZG8gdGhpcyBmb3Igc29mdHdhcmUgY291bnRpbmcgb2YgY29tcGxldGVkIGNvbnZlcnNpb25zLCB0bwotCSAqIHByZXZlbnQgaGFyZHdhcmUgY291bnQgZnJvbSBzdG9wcGluZyBhcXVpc2l0aW9uICovCisJICogcHJldmVudCBoYXJkd2FyZSBjb3VudCBmcm9tIHN0b3BwaW5nIGFjcXVpc2l0aW9uICovCiAJb3V0dyhIV19DT1VOVF9ESVNBQkxFLCBkZXYtPmlvYmFzZSArIEk4MjUzX01PREVfUkVHKTsKIAogCS8qICBzZXQgY2FyZCdzIGlycSBhbmQgZG1hIGxldmVscyAqLwpAQCAtNzI5LDcgKzcyOSw3IEBACiAJLyogIHNlbmQgdHJpZ2dlciBjb25maWcgYml0cyAqLwogCW91dHcodHJpZ2dlcl9iaXRzLCBkZXYtPmlvYmFzZSArIFRSSUdHRVJfUkVHKTsKIAotCS8qICBzdGFydCBhcXVpc2l0aW9uIGZvciBzb2Z0IHRyaWdnZXIgKi8KKwkvKiAgc3RhcnQgYWNxdWlzaXRpb24gZm9yIHNvZnQgdHJpZ2dlciAqLwogCWlmIChjbWQtPnN0YXJ0X3NyYyA9PSBUUklHX05PVykgewogCQlvdXR3KDAsIGRldi0+aW9iYXNlICsgRklGT19TVEFSVF9SRUcpOwogCX0KQEAgLTc2OCw3ICs3NjgsNyBAQAogCS8qICBzZXR1cCBzdGFydCB0cmlnZ2VyaW5nICovCiAJb3V0dygwLCBkZXYtPmlvYmFzZSArIFRSSUdHRVJfUkVHKTsKIAotCS8qICBzdGFydCBhcXVpc2l0aW9uIGZvciBzb2Z0IHRyaWdnZXIgKi8KKwkvKiAgc3RhcnQgYWNxdWlzaXRpb24gZm9yIHNvZnQgdHJpZ2dlciAqLwogCW91dHcoMCwgZGV2LT5pb2Jhc2UgKyBGSUZPX1NUQVJUX1JFRyk7CiAKIAkvKiB0aGVyZSBpcyBhIDM1LjYgc2FtcGxlIGRlbGF5IGZvciBkYXRhIHRvIGdldCB0aHJvdWdoIHRoZSBhbnRpYWxpYXMgZmlsdGVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfbGFicGMuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9sYWJwYy5jCmluZGV4IDI0MWZlNTIuLmFiOGYzNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9sYWJwYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9sYWJwYy5jCkBAIC0xODMsMTEgKzE4MywxMSBAQAogI2RlZmluZSAgIE9WRVJSVU5fQklUCTB4MgogLyogZmlmbyBvdmVyZmxvdyAqLwogI2RlZmluZSAgIE9WRVJGTE9XX0JJVAkweDQKLS8qIHRpbWVyIGludGVycnVwdCBoYXMgb2NjdXJlZCAqLworLyogdGltZXIgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCAqLwogI2RlZmluZSAgIFRJTUVSX0JJVAkweDgKLS8qIGRtYSB0ZXJtaW5hbCBjb3VudCBoYXMgb2NjdXJlZCAqLworLyogZG1hIHRlcm1pbmFsIGNvdW50IGhhcyBvY2N1cnJlZCAqLwogI2RlZmluZSAgIERNQVRDX0JJVAkweDEwCi0vKiBleHRlcm5hbCB0cmlnZ2VyIGhhcyBvY2N1cmVkICovCisvKiBleHRlcm5hbCB0cmlnZ2VyIGhhcyBvY2N1cnJlZCAqLwogI2RlZmluZSAgIEVYVF9UUklHX0JJVAkweDQwCiAvKiAxMjAwIGJvYXJkcyBvbmx5ICovCiAjZGVmaW5lIFNUQVRVUzJfUkVHCTB4MWQKQEAgLTExNDksNyArMTE0OSw3IEBACiAJcmFuZ2UgPSBDUl9SQU5HRShjbWQtPmNoYW5saXN0WzBdKTsKIAlhcmVmID0gQ1JfQVJFRihjbWQtPmNoYW5saXN0WzBdKTsKIAotCS8qIG1ha2Ugc3VyZSBib2FyZCBpcyBkaXNhYmxlZCBiZWZvcmUgc2V0dGluZyB1cCBhcXVpc2l0aW9uICovCisJLyogbWFrZSBzdXJlIGJvYXJkIGlzIGRpc2FibGVkIGJlZm9yZSBzZXR0aW5nIHVwIGFjcXVpc2l0aW9uICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+c3BpbmxvY2ssIGZsYWdzKTsKIAlkZXZwcml2LT5jb21tYW5kMl9iaXRzICY9IH5TV1RSSUdfQklUICYgfkhXVFJJR19CSVQgJiB+UFJFVFJJR19CSVQ7CiAJZGV2cHJpdi0+d3JpdGVfYnl0ZShkZXZwcml2LT5jb21tYW5kMl9iaXRzLCBkZXYtPmlvYmFzZSArIENPTU1BTkQyX1JFRyk7CkBAIC0xMzQ5LDcgKzEzNDksNyBAQAogCQlkZXZwcml2LT5jb21tYW5kM19iaXRzICY9IH5BRENfRk5FX0lOVFJfRU5fQklUOwogCWRldnByaXYtPndyaXRlX2J5dGUoZGV2cHJpdi0+Y29tbWFuZDNfYml0cywgZGV2LT5pb2Jhc2UgKyBDT01NQU5EM19SRUcpOwogCi0JLyogIHN0YXJ0dXAgYXF1aXNpdGlvbiAqLworCS8qICBzdGFydHVwIGFjcXVpc2l0aW9uICovCiAKIAkvKiAgY29tbWFuZDIgcmVnICovCiAJLyogIHVzZSAyIGNhc2NhZGVkIGNvdW50ZXJzIGZvciBwYWNpbmcgKi8KQEAgLTE1NzEsOCArMTU3MSw4IEBACiAJZGV2cHJpdi0+d3JpdGVfYnl0ZSgweDEsIGRldi0+aW9iYXNlICsgRE1BVENfQ0xFQVJfUkVHKTsKIH0KIAotLyogbWFrZXMgc3VyZSBhbGwgZGF0YSBhY3F1aXJlZCBieSBib2FyZCBpcyB0cmFuc2ZlcmVkIHRvIGNvbWVkaSAodXNlZAotICogd2hlbiBhcXVpc2l0aW9uIGlzIHRlcm1pbmF0ZWQgYnkgc3RvcF9zcmMgPT0gVFJJR19FWFQpLiAqLworLyogbWFrZXMgc3VyZSBhbGwgZGF0YSBhY3F1aXJlZCBieSBib2FyZCBpcyB0cmFuc2ZlcnJlZCB0byBjb21lZGkgKHVzZWQKKyAqIHdoZW4gYWNxdWlzaXRpb24gaXMgdGVybWluYXRlZCBieSBzdG9wX3NyYyA9PSBUUklHX0VYVCkuICovCiBzdGF0aWMgdm9pZCBsYWJwY19kcmFpbl9kcmVncyhzdHJ1Y3QgY29tZWRpX2RldmljZSAqZGV2KQogewogCWlmIChkZXZwcml2LT5jdXJyZW50X3RyYW5zZmVyID09IGlzYV9kbWFfdHJhbnNmZXIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfcGNpZGlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvbmlfcGNpZGlvLmMKaW5kZXggMDA1ZDJmZS4uOGRkM2EwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL25pX3BjaWRpby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9uaV9wY2lkaW8uYwpAQCAtODIxLDcgKzgyMSw3IEBACiAJCQljbWQtPnNjYW5fYmVnaW5fYXJnID0gTUFYX1NQRUVEOwogCQkJZXJyKys7CiAJCX0KLQkJLyogbm8gbWludW11bSBzcGVlZCAqLworCQkvKiBubyBtaW5pbXVtIHNwZWVkICovCiAJfSBlbHNlIHsKIAkJLyogVFJJR19FWFQgKi8KIAkJLyogc2hvdWxkIGJlIGxldmVsL2VkZ2UsIGhpL2xvIHNwZWNpZmljYXRpb24gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxMi5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxMi5jCmluZGV4IGM2ZGNlNGEuLjA5ZmY0NzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODEyLmMKQEAgLTM0LDcgKzM0LDcgQEAKICAqCSAgICAgICBhbmQgSSBjYW5uJ3QgdGVzdCBhbGwgZmVhdHVyZXMuKQogICoKICAqIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGluc24gYW5kIGNtZCBpbnRlcmZhY2VzLiBTb21lIGJvYXJkcyBzdXBwb3J0IG9ubHkgaW5zbgotICogYmVjb3VzZSB0aGVpciBoYXJkd2FyZSBkb24ndCBhbGxvdyBtb3JlIChQQ0wtODEzL0IsIEFDTC04MTEzLCBJU08tODEzKS4KKyAqIGJlY2F1c2UgdGhlaXIgaGFyZHdhcmUgZG9uJ3QgYWxsb3cgbW9yZSAoUENMLTgxMy9CLCBBQ0wtODExMywgSVNPLTgxMykuCiAgKiBEYXRhIHRyYW5zZmVyIG92ZXIgRE1BIGlzIHN1cHBvcnRlZCBvbmx5IHdoZW4geW91IG1lYXN1cmUgb25seSBvbmUKICAqIGNoYW5uZWwsIHRoaXMgaXMgdG9vIGhhcmR3YXJlIGxpbWl0YXRpb24gb2YgdGhlc2UgYm9hcmRzLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTYuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTYuYwppbmRleCBlZjNjYzRmLi44ZjNmYzZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODE2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxNi5jCkBAIC05NTQsNyArOTU0LDcgQEAKIAl9CiAKIAlpZiAoY2hhbmxlbiA+IDEpIHsKLQkJLyogIGZpcnN0IGNoYW5uZWwgaXMgZXZlcnl0aW1lIG9rICovCisJCS8qICBmaXJzdCBjaGFubmVsIGlzIGV2ZXJ5IHRpbWUgb2sgKi8KIAkJY2hhbnNlZ21lbnRbMF0gPSBjaGFubGlzdFswXTsKIAkJZm9yIChpID0gMSwgc2VnbGVuID0gMTsgaSA8IGNoYW5sZW47IGkrKywgc2VnbGVuKyspIHsKIAkJCS8qICBidWlsZCBwYXJ0IG9mIGNoYW5saXN0ICovCkBAIC05NjgsMTAgKzk2OCwxMCBAQAogCQkJbm93bXVzdGJlY2hhbiA9CiAJCQkgICAgKENSX0NIQU4oY2hhbnNlZ21lbnRbaSAtIDFdKSArIDEpICUgY2hhbmxlbjsKIAkJCWlmIChub3dtdXN0YmVjaGFuICE9IENSX0NIQU4oY2hhbmxpc3RbaV0pKSB7Ci0JCQkJLyogIGNoYW5uZWwgbGlzdCBpc24ndCBjb250aW5vdXMgOi0oICovCisJCQkJLyogIGNoYW5uZWwgbGlzdCBpc24ndCBjb250aW51b3VzIDotKCAqLwogCQkJCXByaW50ayhLRVJOX1dBUk5JTkcKIAkJCQkgICAgICAgImNvbWVkaSVkOiBwY2w4MTY6IGNoYW5uZWwgbGlzdCBtdXN0ICIKLQkJCQkgICAgICAgImJlIGNvbnRpbm91cyEgY2hhbmxpc3RbJWldPSVkIGJ1dCAiCisJCQkJICAgICAgICJiZSBjb250aW51b3VzISBjaGFubGlzdFslaV09JWQgYnV0ICIKIAkJCQkgICAgICAgIm11c3QgYmUgJWQgb3IgJWQhXG4iLCBkZXYtPm1pbm9yLAogCQkJCSAgICAgICBpLCBDUl9DSEFOKGNoYW5saXN0W2ldKSwgbm93bXVzdGJlY2hhbiwKIAkJCQkgICAgICAgQ1JfQ0hBTihjaGFubGlzdFswXSkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxOC5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbDgxOC5jCmluZGV4IGY1OGQ3NWIuLmUzZWVhMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY2w4MTguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNsODE4LmMKQEAgLTEyMzEsNyArMTIzMSw3IEBACiAJfQogCiAJaWYgKG5fY2hhbiA+IDEpIHsKLQkJLyogIGZpcnN0IGNoYW5uZWwgaXMgZXZlcnl0aW1lIG9rICovCisJCS8qICBmaXJzdCBjaGFubmVsIGlzIGV2ZXJ5IHRpbWUgb2sgKi8KIAkJY2hhbnNlZ21lbnRbMF0gPSBjaGFubGlzdFswXTsKIAkJLyogIGJ1aWxkIHBhcnQgb2YgY2hhbmxpc3QgKi8KIAkJZm9yIChpID0gMSwgc2VnbGVuID0gMTsgaSA8IG5fY2hhbjsgaSsrLCBzZWdsZW4rKykgewpAQCAtMTI0NSw5ICsxMjQ1LDkgQEAKIAkJCQlicmVhazsKIAkJCW5vd211c3RiZWNoYW4gPQogCQkJICAgIChDUl9DSEFOKGNoYW5zZWdtZW50W2kgLSAxXSkgKyAxKSAlIHMtPm5fY2hhbjsKLQkJCWlmIChub3dtdXN0YmVjaGFuICE9IENSX0NIQU4oY2hhbmxpc3RbaV0pKSB7CS8qICBjaGFubmVsIGxpc3QgaXNuJ3QgY29udGlub3VzIDotKCAqLworCQkJaWYgKG5vd211c3RiZWNoYW4gIT0gQ1JfQ0hBTihjaGFubGlzdFtpXSkpIHsJLyogIGNoYW5uZWwgbGlzdCBpc24ndCBjb250aW51b3VzIDotKCAqLwogCQkJCXByaW50awotCQkJCSAgICAoImNvbWVkaSVkOiBwY2w4MTg6IGNoYW5uZWwgbGlzdCBtdXN0IGJlIGNvbnRpbm91cyEgY2hhbmxpc3RbJWldPSVkIGJ1dCBtdXN0IGJlICVkIG9yICVkIVxuIiwKKwkJCQkgICAgKCJjb21lZGklZDogcGNsODE4OiBjaGFubmVsIGxpc3QgbXVzdCBiZSBjb250aW51b3VzISBjaGFubGlzdFslaV09JWQgYnV0IG11c3QgYmUgJWQgb3IgJWQhXG4iLAogCQkJCSAgICAgZGV2LT5taW5vciwgaSwgQ1JfQ0hBTihjaGFubGlzdFtpXSksCiAJCQkJICAgICBub3dtdXN0YmVjaGFuLCBDUl9DSEFOKGNoYW5saXN0WzBdKSk7CiAJCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtbWlvLmMKaW5kZXggNWM4MzJkNy4uZjJlODhlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbW1pby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY21taW8uYwpAQCAtNzMzLDcgKzczMyw3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBJTlNOX0NPTkZJR19ESU9fUVVFUlk6Ci0JCS8qIHJldHJlaXZlIGZyb20gc2hhZG93IHJlZ2lzdGVyICovCisJCS8qIHJldHJpZXZlIGZyb20gc2hhZG93IHJlZ2lzdGVyICovCiAJCWRhdGFbMV0gPQogCQkgICAgKHMtPmlvX2JpdHMgJiAoMSA8PCBjaGFuKSkgPyBDT01FRElfT1VUUFVUIDogQ09NRURJX0lOUFVUOwogCQlyZXR1cm4gaW5zbi0+bjsKQEAgLTEyNzksNyArMTI3OSw3IEBACiAJICAgIm5vIGJ1c3kgd2FpdGluZyIgcG9saWN5LiBUaGUgZmFjdCBpcyB0aGF0IHRoZSBoYXJkd2FyZSBpcwogCSAgIG5vcm1hbGx5IHNvIGZhc3QgdGhhdCB3ZSB1c3VhbGx5IG9ubHkgbmVlZCBvbmUgdGltZSB0aHJvdWdoIHRoZSBsb29wCiAJICAgYW55d2F5LiBUaGUgbG9uZ2VyIHRpbWVvdXQgaXMgZm9yIHJhcmUgb2NjYXNpb25zIGFuZCBmb3IgZGV0ZWN0aW5nCi0JICAgbm9uLWV4aXN0YW50IGhhcmR3YXJlLiAgKi8KKwkgICBub24tZXhpc3RlbnQgaGFyZHdhcmUuICAqLwogCiAJd2hpbGUgKHJldHJ5LS0pIHsKIAkJaWYgKGluYihpb2Jhc2UgKyAzKSAmIDB4ODApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMKaW5kZXggN2E5Mjg3NDMuLmIyYzJjODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY211aW8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMKQEAgLTYwNSw3ICs2MDUsNyBAQAogCQlicmVhazsKIAogCWNhc2UgSU5TTl9DT05GSUdfRElPX1FVRVJZOgotCQkvKiByZXRyZWl2ZSBmcm9tIHNoYWRvdyByZWdpc3RlciAqLworCQkvKiByZXRyaWV2ZSBmcm9tIHNoYWRvdyByZWdpc3RlciAqLwogCQlkYXRhWzFdID0KIAkJICAgIChzLT5pb19iaXRzICYgKDEgPDwgY2hhbikpID8gQ09NRURJX09VVFBVVCA6IENPTUVESV9JTlBVVDsKIAkJcmV0dXJuIGluc24tPm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcXVhdGVjaF9kYXFwX2NzLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcXVhdGVjaF9kYXFwX2NzLmMKaW5kZXggZWJiYTliYi4uODI5NDJlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3F1YXRlY2hfZGFxcF9jcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9xdWF0ZWNoX2RhcXBfY3MuYwpAQCAtMzkwLDcgKzM5MCw3IEBACiAKIAlvdXRiKHYsIGRldi0+aW9iYXNlICsgREFRUF9DT05UUk9MKTsKIAotCS8qIFJlc2V0IGFueSBwZW5kaW5nIGludGVycnVwdHMgKG15IGNhcmQgaGFzIGEgdGVuZGFuY3kgdG8gcmVxdWlyZQorCS8qIFJlc2V0IGFueSBwZW5kaW5nIGludGVycnVwdHMgKG15IGNhcmQgaGFzIGEgdGVuZGVuY3kgdG8gcmVxdWlyZQogCSAqIHJlcXVpcmUgbXVsdGlwbGUgcmVhZHMgb24gdGhlIHN0YXR1cyByZWdpc3RlciB0byBhY2hpZXZlIHRoaXMpCiAJICovCiAKQEAgLTc1Miw3ICs3NTIsNyBAQAogCiAJb3V0Yih2LCBkZXYtPmlvYmFzZSArIERBUVBfQ09OVFJPTCk7CiAKLQkvKiBSZXNldCBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzIChteSBjYXJkIGhhcyBhIHRlbmRhbmN5IHRvIHJlcXVpcmUKKwkvKiBSZXNldCBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzIChteSBjYXJkIGhhcyBhIHRlbmRlbmN5IHRvIHJlcXVpcmUKIAkgKiByZXF1aXJlIG11bHRpcGxlIHJlYWRzIG9uIHRoZSBzdGF0dXMgcmVnaXN0ZXIgdG8gYWNoaWV2ZSB0aGlzKQogCSAqLwogCWNvdW50ZXIgPSAxMDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcnRkNTIwLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcnRkNTIwLmMKaW5kZXggMzU3ODU4ZC4uN2YwOWVkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3J0ZDUyMC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9ydGQ1MjAuYwpAQCAtNzUsNyArNzUsNyBAQAogICAgIGRhczE4MDAsIHNpbmNlIHRoZXkgaGF2ZSB0aGUgYmVzdCBkb2N1bWVudGVkIGNvZGUuICBEcml2ZXIKICAgICBjYl9wY2lkYXM2NC5jIHVzZXMgdGhlIHNhbWUgRE1BIGNvbnRyb2xsZXIuCiAKLSAgICBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgdGhlIEFib3V0IGludGVycnVwdCBkb2VzbnQgd29yayBpZiBTYW1wbGUgaXMKKyAgICBBcyBmYXIgYXMgSSBjYW4gdGVsbCwgdGhlIEFib3V0IGludGVycnVwdCBkb2Vzbid0IHdvcmsgaWYgU2FtcGxlIGlzCiAgICAgYWxzbyBlbmFibGVkLiAgSXQgdHVybnMgb3V0IHRoYXQgQWJvdXQgcmVhbGx5IGlzbid0IG5lZWRlZCwgc2luY2UKICAgICB3ZSBhbHdheXMgY291bnQgZG93biBzYW1wbGVzIHJlYWQuCiAKQEAgLTM3MCw3ICszNzAsNyBAQAogCS8qIHRpbWVyIGdhdGUgKHdoZW4gZW5hYmxlZCkgKi8KIAl1OCB1dGNHYXRlWzRdOwkJLyogMSBleHRyYSBhbGxvd3Mgc2ltcGxlIHJhbmdlIGNoZWNrICovCiAKLQkvKiBzaGFkb3cgcmVnaXN0ZXJzIGFmZmVjdCBvdGhlciByZWdpc3RlcnMsIGJ1dCBjYW50IGJlIHJlYWQgYmFjayAqLworCS8qIHNoYWRvdyByZWdpc3RlcnMgYWZmZWN0IG90aGVyIHJlZ2lzdGVycywgYnV0IGNhbid0IGJlIHJlYWQgYmFjayAqLwogCS8qIFRoZSBtYWNyb3MgYmVsb3cgdXBkYXRlIHRoZXNlIG9uIHdyaXRlcyAqLwogCXUxNiBpbnRNYXNrOwkJLyogaW50ZXJydXB0IG1hc2sgKi8KIAl1MTYgaW50Q2xlYXJNYXNrOwkvKiBpbnRlcnJ1cHQgY2xlYXIgbWFzayAqLwpAQCAtNDg1LDcgKzQ4NSw3IEBACiAjZGVmaW5lIFJ0ZEFkY0ZpZm9HZXQoZGV2KSBcCiAJcmVhZHcoZGV2cHJpdi0+bGFzMStMQVMxX0FEQ19GSUZPKQogCi0vKiBSZWFkIHR3byBBREMgZGF0YSB2YWx1ZXMgKERPRVNOVCBXT1JLKSAqLworLyogUmVhZCB0d28gQURDIGRhdGEgdmFsdWVzIChET0VTTidUIFdPUkspICovCiAjZGVmaW5lIFJ0ZEFkY0ZpZm9HZXQyKGRldikgXAogCXJlYWRsKGRldnByaXYtPmxhczErTEFTMV9BRENfRklGTykKIApAQCAtODU3LDcgKzg1Nyw3IEBACiAJCQlEUFJJTlRLKCJydGQ1MjA6IFBDSSBsYXRlbmN5ID0gJWRcbiIsIHBjaV9sYXRlbmN5KTsKIAkJfQogCi0JCS8qIFVuZG9jdW1lbnRlZCBFUExEIHZlcnNpb24gKGRvZXNudCBtYXRjaCBSVEQgZHJpdmVyIHJlc3VsdHMpICovCisJCS8qIFVuZG9jdW1lbnRlZCBFUExEIHZlcnNpb24gKGRvZXNuJ3QgbWF0Y2ggUlREIGRyaXZlciByZXN1bHRzKSAqLwogCQkvKkRQUklOVEsgKCJydGQ1MjA6IFJlYWRpbmcgZXBsZCBmcm9tICVwXG4iLAogCQkgICBkZXZwcml2LT5sYXMwKzApOwogCQkgICBlcGxkX3ZlcnNpb24gPSByZWFkbCAoZGV2cHJpdi0+bGFzMCswKTsKQEAgLTEyOTEsNyArMTI5MSw3IEBACiAvKgogICAiaW5zdHJ1Y3Rpb25zIiByZWFkL3dyaXRlIGRhdGEgaW4gIm9uZS1zaG90IiBvciAic29mdHdhcmUtdHJpZ2dlcmVkIgogICBtb2RlIChzaW1wbGVzdCBjYXNlKS4KLSAgVGhpcyBkb2VzbnQgdXNlIGludGVycnVwdHMuCisgIFRoaXMgZG9lc24ndCB1c2UgaW50ZXJydXB0cy4KIAogICBOb3RlLCB3ZSBkb24ndCBkbyBhbnkgc2V0dGxpbmcgZGVsYXlzLiAgVXNlIGEgaW5zdHJ1Y3Rpb24gbGlzdCB0bwogICBzZWxlY3QsIGRlbGF5LCB0aGVuIHJlYWQuCkBAIC0yMTIwLDcgKzIxMjAsNyBAQAogfQogCiAvKgotICBTdG9wIGEgcnVubmluZyBkYXRhIGFxdWlzaXRpb24uCisgIFN0b3AgYSBydW5uaW5nIGRhdGEgYWNxdWlzaXRpb24uCiAqLwogc3RhdGljIGludCBydGRfYWlfY2FuY2VsKHN0cnVjdCBjb21lZGlfZGV2aWNlICpkZXYsIHN0cnVjdCBjb21lZGlfc3ViZGV2aWNlICpzKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3M2MjYuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9zNjI2LmMKaW5kZXggZDViYTNhYi4uMjNmYzY0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3M2MjYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvczYyNi5jCkBAIC0xMzksNyArMTM5LDcgQEAKIAlpbnQgZ290X3JlZ2lvbnM7CiAJc2hvcnQgYWxsb2NhdGVkQnVmOwogCXVpbnQ4X3QgYWlfY21kX3J1bm5pbmc7CS8qICBhaV9jbWQgaXMgcnVubmluZyAqLwotCXVpbnQ4X3QgYWlfY29udGlub3VzOwkvKiAgY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwl1aW50OF90IGFpX2NvbnRpbm91czsJLyogIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCWludCBhaV9zYW1wbGVfY291bnQ7CS8qICBudW1iZXIgb2Ygc2FtcGxlcyB0byBhY3F1aXJlICovCiAJdW5zaWduZWQgaW50IGFpX3NhbXBsZV90aW1lcjsKIAkvKiAgdGltZSBiZXR3ZWVuIHNhbXBsZXMgaW4gIHVuaXRzIG9mIHRoZSB0aW1lciAqLwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAKIAl1aW50OF90IGdyb3VwOwogCXVpbnQxNl90IGlycWJpdDsKIAotCURFQlVHKCJzNjI2X2lycV9oYW5kbGVyOiBpbnRlcnJ1cHQgcmVxdWVzdCByZWNpZXZlZCEhIVxuIik7CisJREVCVUcoInM2MjZfaXJxX2hhbmRsZXI6IGludGVycnVwdCByZXF1ZXN0IHJlY2VpdmVkISEhXG4iKTsKIAogCWlmIChkZXYtPmF0dGFjaGVkID09IDApCiAJCXJldHVybiBJUlFfTk9ORTsKQEAgLTExNjUsMTQgKzExNjUsMTQgQEAKIAkJCQkJCQkoMTYgKiBncm91cCkpKQogCQkJCQkgICAgPT0gMSAmJiBjbWQtPnN0YXJ0X3NyYyA9PSBUUklHX0VYVCkgewogCQkJCQkJREVCVUcKLQkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IEVkZ2UgY2FwdHVyZSBpbnRlcnJ1cHQgcmVjaWV2ZWQgZnJvbSBjaGFubmVsICVkXG4iLAorCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogRWRnZSBjYXB0dXJlIGludGVycnVwdCByZWNlaXZlZCBmcm9tIGNoYW5uZWwgJWRcbiIsCiAJCQkJCQkgICAgIGNtZC0+c3RhcnRfYXJnKTsKIAogCQkJCQkJLyogIFN0YXJ0IGV4ZWN1dGluZyB0aGUgUlBTIHByb2dyYW0uICovCiAJCQkJCQlNQ19FTkFCTEUoUF9NQzEsIE1DMV9FUlBTMSk7CiAKIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBhcXVpc2l0aW9uIHN0YXJ0IHRyaWdnZXJlZCEhIVxuIik7CisJCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBhY3F1aXNpdGlvbiBzdGFydCB0cmlnZ2VyZWQhISFcbiIpOwogCiAJCQkJCQlpZiAoY21kLT5zY2FuX2JlZ2luX3NyYyA9PQogCQkJCQkJICAgIFRSSUdfRVhUKSB7CkBAIC0xMTk0LDcgKzExOTQsNyBAQAogCQkJCQkgICAgJiYgY21kLT5zY2FuX2JlZ2luX3NyYyA9PQogCQkJCQkgICAgVFJJR19FWFQpIHsKIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBFZGdlIGNhcHR1cmUgaW50ZXJydXB0IHJlY2lldmVkIGZyb20gY2hhbm5lbCAlZFxuIiwKKwkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IEVkZ2UgY2FwdHVyZSBpbnRlcnJ1cHQgcmVjZWl2ZWQgZnJvbSBjaGFubmVsICVkXG4iLAogCQkJCQkJICAgICBjbWQtPnNjYW5fYmVnaW5fYXJnKTsKIAogCQkJCQkJLyogIFRyaWdnZXIgQURDIHNjYW4gbG9vcCBzdGFydCBieSBzZXR0aW5nIFJQUyBTaWduYWwgMC4gKi8KQEAgLTEyMzYsNyArMTIzNiw3IEBACiAJCQkJCSAgICA9PSAxCiAJCQkJCSAgICAmJiBjbWQtPmNvbnZlcnRfc3JjID09IFRSSUdfRVhUKSB7CiAJCQkJCQlERUJVRwotCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogRWRnZSBjYXB0dXJlIGludGVycnVwdCByZWNpZXZlZCBmcm9tIGNoYW5uZWwgJWRcbiIsCisJCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBFZGdlIGNhcHR1cmUgaW50ZXJydXB0IHJlY2VpdmVkIGZyb20gY2hhbm5lbCAlZFxuIiwKIAkJCQkJCSAgICAgY21kLT5jb252ZXJ0X2FyZyk7CiAKIAkJCQkJCS8qICBUcmlnZ2VyIEFEQyBzY2FuIGxvb3Agc3RhcnQgYnkgc2V0dGluZyBSUFMgU2lnbmFsIDAuICovCkBAIC0xODA1LDcgKzE4MDUsNyBAQAogCQlERUJVRygiczYyNl9haV9jbWQ6IE5VTEwgY29tbWFuZFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0gZWxzZSB7Ci0JCURFQlVHKCJzNjI2X2FpX2NtZDogY29tbWFuZCByZWNpZXZlZCEhIVxuIik7CisJCURFQlVHKCJzNjI2X2FpX2NtZDogY29tbWFuZCByZWNlaXZlZCEhIVxuIik7CiAJfQogCiAJaWYgKGRldi0+aXJxID09IDApIHsKQEAgLTE4ODAsNyArMTg4MCw3IEBACiAJCWRldnByaXYtPmFpX2NvbnRpbm91cyA9IDA7CiAJCWJyZWFrOwogCWNhc2UgVFJJR19OT05FOgotCQkvKiAgY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwkJLyogIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCQlkZXZwcml2LT5haV9jb250aW5vdXMgPSAxOwogCQlkZXZwcml2LT5haV9zYW1wbGVfY291bnQgPSAwOwogCQlicmVhazsKQEAgLTI1NzAsNyArMjU3MCw3IEBACiAJd2hpbGUgKChSUjcxNDYoUF9JMkNDVFJMKSAmIChJMkNfQlVTWSB8IEkyQ19FUlIpKSA9PSBJMkNfQlVTWSkKIAkJOwogCi0JLyogIFJldHVybiBub24temVybyBpZiBJMkMgZXJyb3Igb2NjdXJlZC4gKi8KKwkvKiAgUmV0dXJuIG5vbi16ZXJvIGlmIEkyQyBlcnJvciBvY2N1cnJlZC4gKi8KIAlyZXR1cm4gUlI3MTQ2KFBfSTJDQ1RSTCkgJiBJMkNfRVJSOwogCiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4LmMKaW5kZXggYmU5M2MzMC4uZTU0M2U2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXguYwpAQCAtMjg1LDcgKzI4NSw3IEBACiAJc2hvcnQgaW50IGFvX2NtZF9ydW5uaW5nOwogCS8qIHB3bSBpcyBydW5uaW5nICovCiAJc2hvcnQgaW50IHB3bV9jbWRfcnVubmluZzsKLQkvKiBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCS8qIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCXNob3J0IGludCBhaV9jb250aW5vdXM7CiAJc2hvcnQgaW50IGFvX2NvbnRpbm91czsKIAkvKiBudW1iZXIgb2Ygc2FtcGxlcyB0byBhY3F1aXJlICovCkBAIC01MDAsNyArNTAwLDcgQEAKIAogCS8qIHRlc3QsIGlmIHdlIHRyYW5zbWl0IG9ubHkgYSBmaXhlZCBudW1iZXIgb2Ygc2FtcGxlcyAqLwogCWlmICghKHRoaXNfdXNiZHV4c3ViLT5haV9jb250aW5vdXMpKSB7Ci0JCS8qIG5vdCBjb250aW5vdXMsIGZpeGVkIG51bWJlciBvZiBzYW1wbGVzICovCisJCS8qIG5vdCBjb250aW51b3VzLCBmaXhlZCBudW1iZXIgb2Ygc2FtcGxlcyAqLwogCQl0aGlzX3VzYmR1eHN1Yi0+YWlfc2FtcGxlX2NvdW50LS07CiAJCS8qIGFsbCBzYW1wbGVzIHJlY2VpdmVkPyAqLwogCQlpZiAodGhpc191c2JkdXhzdWItPmFpX3NhbXBsZV9jb3VudCA8IDApIHsKQEAgLTY1Myw3ICs2NTMsNyBAQAogCQkvKiB0aW1lciB6ZXJvICovCiAJCXRoaXNfdXNiZHV4c3ViLT5hb19jb3VudGVyID0gdGhpc191c2JkdXhzdWItPmFvX3RpbWVyOwogCi0JCS8qIGhhbmRsZSBub24gY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwkJLyogaGFuZGxlIG5vbiBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAkJaWYgKCEodGhpc191c2JkdXhzdWItPmFvX2NvbnRpbm91cykpIHsKIAkJCS8qIGZpeGVkIG51bWJlciBvZiBzYW1wbGVzICovCiAJCQl0aGlzX3VzYmR1eHN1Yi0+YW9fc2FtcGxlX2NvdW50LS07CkBAIC05NTcsNyArOTU3LDcgQEAKIAlpZiAoIWNtZC0+c2Nhbl9iZWdpbl9zcmMgfHwgdG1wICE9IGNtZC0+c2Nhbl9iZWdpbl9zcmMpCiAJCWVycisrOwogCi0JLyogc2Nhbm5pbmcgaXMgY29udGlub3VzICovCisJLyogc2Nhbm5pbmcgaXMgY29udGludW91cyAqLwogCXRtcCA9IGNtZC0+Y29udmVydF9zcmM7CiAJY21kLT5jb252ZXJ0X3NyYyAmPSBUUklHX05PVzsKIAlpZiAoIWNtZC0+Y29udmVydF9zcmMgfHwgdG1wICE9IGNtZC0+Y29udmVydF9zcmMpCkBAIC0xMjIyLDcgKzEyMjIsNyBAQAogCQl1cCgmdGhpc191c2JkdXhzdWItPnNlbSk7CiAJCXJldHVybiAtRUJVU1k7CiAJfQotCS8qIHNldCBjdXJyZW50IGNoYW5uZWwgb2YgdGhlIHJ1bm5pbmcgYXF1aXNpdGlvbiB0byB6ZXJvICovCisJLyogc2V0IGN1cnJlbnQgY2hhbm5lbCBvZiB0aGUgcnVubmluZyBhY3F1aXNpdGlvbiB0byB6ZXJvICovCiAJcy0+YXN5bmMtPmN1cl9jaGFuID0gMDsKIAogCXRoaXNfdXNiZHV4c3ViLT5kdXhfY29tbWFuZHNbMV0gPSBjbWQtPmNoYW5saXN0X2xlbjsKQEAgLTEyODQsNyArMTI4NCw3IEBACiAJCXRoaXNfdXNiZHV4c3ViLT5haV9zYW1wbGVfY291bnQgPSBjbWQtPnN0b3BfYXJnOwogCQl0aGlzX3VzYmR1eHN1Yi0+YWlfY29udGlub3VzID0gMDsKIAl9IGVsc2UgewotCQkvKiBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCQkvKiBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAkJdGhpc191c2JkdXhzdWItPmFpX2NvbnRpbm91cyA9IDE7CiAJCXRoaXNfdXNiZHV4c3ViLT5haV9zYW1wbGVfY291bnQgPSAwOwogCX0KQEAgLTE1MTUsNyArMTUxNSw3IEBACiAJLyoganVzdCBub3cgd2Ugc2NhbiBhbHNvIGluIHRoZSBoaWdoIHNwZWVkIG1vZGUgZXZlcnkgZnJhbWUgKi8KIAkvKiB0aGlzIGlzIGR1ZSB0byBlaGNpIGRyaXZlciBsaW1pdGF0aW9ucyAqLwogCWlmICgwKSB7CQkvKiAodGhpc191c2JkdXhzdWItPmhpZ2hfc3BlZWQpICovCi0JCS8qIHN0YXJ0IGltbWlkaWF0ZWx5IGEgbmV3IHNjYW4gKi8KKwkJLyogc3RhcnQgaW1tZWRpYXRlbHkgYSBuZXcgc2NhbiAqLwogCQkvKiB0aGUgc2FtcGxpbmcgcmF0ZSBpcyBzZXQgYnkgdGhlIGNvdmVyc2lvbiByYXRlICovCiAJCWNtZC0+c2Nhbl9iZWdpbl9zcmMgJj0gVFJJR19GT0xMT1c7CiAJfSBlbHNlIHsKQEAgLTE1MjUsNyArMTUyNSw3IEBACiAJaWYgKCFjbWQtPnNjYW5fYmVnaW5fc3JjIHx8IHRtcCAhPSBjbWQtPnNjYW5fYmVnaW5fc3JjKQogCQllcnIrKzsKIAotCS8qIHNjYW5uaW5nIGlzIGNvbnRpbm91cyAqLworCS8qIHNjYW5uaW5nIGlzIGNvbnRpbnVvdXMgKi8KIAl0bXAgPSBjbWQtPmNvbnZlcnRfc3JjOwogCS8qIHdlIGFsd2F5cyBvdXRwdXQgYXQgMWtIeiBqdXN0IG5vdyBhbGwgY2hhbm5lbHMgYXQgb25jZSAqLwogCWlmICgwKSB7CQkvKiAodGhpc191c2JkdXhzdWItPmhpZ2hfc3BlZWQpICovCkBAIC0xNjQ1LDcgKzE2NDUsNyBAQAogCWRldl9kYmcoJnRoaXNfdXNiZHV4c3ViLT5pbnRlcmZhY2UtPmRldiwKIAkJImNvbWVkaSVkOiAlc1xuIiwgZGV2LT5taW5vciwgX19mdW5jX18pOwogCi0JLyogc2V0IGN1cnJlbnQgY2hhbm5lbCBvZiB0aGUgcnVubmluZyBhcXVpc2l0aW9uIHRvIHplcm8gKi8KKwkvKiBzZXQgY3VycmVudCBjaGFubmVsIG9mIHRoZSBydW5uaW5nIGFjcXVpc2l0aW9uIHRvIHplcm8gKi8KIAlzLT5hc3luYy0+Y3VyX2NoYW4gPSAwOwogCWZvciAoaSA9IDA7IGkgPCBjbWQtPmNoYW5saXN0X2xlbjsgKytpKSB7CiAJCWNoYW4gPSBDUl9DSEFOKGNtZC0+Y2hhbmxpc3RbaV0pOwpAQCAtMTY5NCw3ICsxNjk0LDcgQEAKIAl0aGlzX3VzYmR1eHN1Yi0+YW9fY291bnRlciA9IHRoaXNfdXNiZHV4c3ViLT5hb190aW1lcjsKIAogCWlmIChjbWQtPnN0b3Bfc3JjID09IFRSSUdfQ09VTlQpIHsKLQkJLyogbm90IGNvbnRpbm91cyAqLworCQkvKiBub3QgY29udGludW91cyAqLwogCQkvKiBjb3VudGVyICovCiAJCS8qIGhpZ2ggc3BlZWQgYWxzbyBzY2FucyBldmVyeXRoaW5nIGF0IG9uY2UgKi8KIAkJaWYgKDApIHsJLyogKHRoaXNfdXNiZHV4c3ViLT5oaWdoX3NwZWVkKSAqLwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAKIAkJfQogCQl0aGlzX3VzYmR1eHN1Yi0+YW9fY29udGlub3VzID0gMDsKIAl9IGVsc2UgewotCQkvKiBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCQkvKiBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAkJdGhpc191c2JkdXhzdWItPmFvX2NvbnRpbm91cyA9IDE7CiAJCXRoaXNfdXNiZHV4c3ViLT5hb19zYW1wbGVfY291bnQgPSAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXhmYXN0LmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4ZmFzdC5jCmluZGV4IDViMTVlNmQuLjJhOGU3MjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXhmYXN0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eGZhc3QuYwpAQCAtMTgwLDcgKzE4MCw3IEBACiAJLyogY29tZWRpIGRldmljZSBmb3IgdGhlIGludGVycnVwdCBjb250ZXh0ICovCiAJc3RydWN0IGNvbWVkaV9kZXZpY2UgKmNvbWVkaWRldjsKIAlzaG9ydCBpbnQgYWlfY21kX3J1bm5pbmc7CS8qIGFzeW5jaHJvbm91cyBjb21tYW5kIGlzIHJ1bm5pbmcgKi8KLQlzaG9ydCBpbnQgYWlfY29udGlub3VzOwkvKiBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCXNob3J0IGludCBhaV9jb250aW5vdXM7CS8qIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCWxvbmcgaW50IGFpX3NhbXBsZV9jb3VudDsJLyogbnVtYmVyIG9mIHNhbXBsZXMgdG8gYWNxdWlyZSAqLwogCXVpbnQ4X3QgKmR1eF9jb21tYW5kczsJLyogY29tbWFuZHMgKi8KIAlpbnQgaWdub3JlOwkJLyogY291bnRlciB3aGljaCBpZ25vcmVzIHRoZSBmaXJzdApAQCAtMzkyLDcgKzM5Miw3IEBACiAJcCA9IHVyYi0+dHJhbnNmZXJfYnVmZmVyOwogCWlmICghdWRmcy0+aWdub3JlKSB7CiAJCWlmICghdWRmcy0+YWlfY29udGlub3VzKSB7Ci0JCQkvKiBub3QgY29udGlub3VzLCBmaXhlZCBudW1iZXIgb2Ygc2FtcGxlcyAqLworCQkJLyogbm90IGNvbnRpbnVvdXMsIGZpeGVkIG51bWJlciBvZiBzYW1wbGVzICovCiAJCQluID0gdXJiLT5hY3R1YWxfbGVuZ3RoIC8gc2l6ZW9mKHVpbnQxNl90KTsKIAkJCWlmICh1bmxpa2VseSh1ZGZzLT5haV9zYW1wbGVfY291bnQgPCBuKSkgewogCQkJCS8qCkBAIC03NzUsNyArNzc1LDcgQEAKIAkJdXAoJnVkZnMtPnNlbSk7CiAJCXJldHVybiAtRUJVU1k7CiAJfQotCS8qIHNldCBjdXJyZW50IGNoYW5uZWwgb2YgdGhlIHJ1bm5pbmcgYXF1aXNpdGlvbiB0byB6ZXJvICovCisJLyogc2V0IGN1cnJlbnQgY2hhbm5lbCBvZiB0aGUgcnVubmluZyBhY3F1aXNpdGlvbiB0byB6ZXJvICovCiAJcy0+YXN5bmMtPmN1cl9jaGFuID0gMDsKIAogCS8qCkBAIC0xMTgyLDcgKzExODIsNyBAQAogCQl9CiAJCXVkZnMtPmFpX2NvbnRpbm91cyA9IDA7CiAJfSBlbHNlIHsKLQkJLyogY29udGlub3VzIGFxdWlzaXRpb24gKi8KKwkJLyogY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJCXVkZnMtPmFpX2NvbnRpbm91cyA9IDE7CiAJCXVkZnMtPmFpX3NhbXBsZV9jb3VudCA9IDA7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NwdG0xMjE3L2NsZWFycGFkX3RtMTIxNy5jIGIvZHJpdmVycy9zdGFnaW5nL2NwdG0xMjE3L2NsZWFycGFkX3RtMTIxNy5jCmluZGV4IDc2ZTRiNzguLjBmZTcxM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcHRtMTIxNy9jbGVhcnBhZF90bTEyMTcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3B0bTEyMTcvY2xlYXJwYWRfdG0xMjE3LmMKQEAgLTUyLDcgKzUyLDcgQEAKICNkZWZpbmUgVE1BMTIxN19ERVZfU1RBVFVTCQkweDEzCS8qIERldmljZSBTdGF0dXMgKi8KICNkZWZpbmUgVE1BMTIxN19JTlRfU1RBVFVTCQkweDE0CS8qIEludGVycnVwdCBTdGF0dXMgKi8KIAotLyogQ29udHJvbGxlciBjYW4gZGV0ZWN0IHVwdG8gMiBwb3NzaWJsZSBmaW5nZXIgdG91Y2hlcy4KKy8qIENvbnRyb2xsZXIgY2FuIGRldGVjdCB1cCB0byAyIHBvc3NpYmxlIGZpbmdlciB0b3VjaGVzLgogICogRWFjaCBmaW5nZXIgdG91Y2ggcHJvdmlkZXMgIDEyIGJpdCBYIFkgY28tb3JkaW5hdGVzLCB0aGUgdmFsdWVzIGFyZSBzcGxpdAogICogYWNyb3NzIDIgcmVnaXN0ZXJzLCBhbmQgYW4gOCBiaXQgIFogdmFsdWUgKi8KICNkZWZpbmUgVE1BMTIxN19GSU5HRVJfU1RBVEUJCTB4MTggLyogRmluZ2VyIFN0YXRlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9jbWRzLmMgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9jbWRzLmMKaW5kZXggMTQyOTYwODUuLjM3MzVlZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2NtZHMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9jbWRzLmMKQEAgLTkxNCw3ICs5MTQsNyBAQAogICogUmV0dXJuOgogICoJc3RhdHVzCiAgKgotICogQ2xvc2VyIGFwbGljYXRpb24gaGFuZGxlIGFuZCByZWxlYXNlIGFwcCBzcGVjaWZpYworICogQ2xvc2VyIGFwcGxpY2F0aW9uIGhhbmRsZSBhbmQgcmVsZWFzZSBhcHAgc3BlY2lmaWMKICAqIHJlc291cmNlcy4KICAqLwogZW51bSBCQ19TVEFUVVMgY3J5c3RhbGhkX3VzZXJfY2xvc2Uoc3RydWN0IGNyeXN0YWxoZF9jbWQgKmN0eCwgc3RydWN0IGNyeXN0YWxoZF91c2VyICp1YykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2h3LmMgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9ody5jCmluZGV4IDEzYTUxNGQuLjVhY2YzOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2h3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfaHcuYwpAQCAtMzAyLDcgKzMwMiw3IEBACiAJY3J5c3RhbGhkX2VuYWJsZV9pbnRlcnJ1cHRzKGFkcCk7CiAKIAkvKiBFbmFibGUgdGhlIG9wdGlvbiBmb3IgZ2V0dGluZyB0aGUgdG90YWwgbm8uIG9mIERXT1JEUwotCSAqIHRoYXQgaGF2ZSBiZWVuIHRyYW5zZmVyZWQgYnkgdGhlIFJYRE1BIGVuZ2luZQorCSAqIHRoYXQgaGF2ZSBiZWVuIHRyYW5zZmVycmVkIGJ5IHRoZSBSWERNQSBlbmdpbmUKIAkgKi8KIAlkYmdfb3B0aW9ucyA9IGNyeXN0YWxoZF9yZWdfcmQoYWRwLCBNSVNDMV9ETUFfREVCVUdfT1BUSU9OU19SRUcpOwogCWRiZ19vcHRpb25zIHw9IDB4MTA7CkBAIC0xNzc2LDcgKzE3NzYsNyBAQAogCQlyZXR1cm4gc3RzOwogCX0KIAotCS8qR2V0IHRoZSBSZXNwb25jZSBBZGRyZXNzKi8KKwkvKkdldCB0aGUgUmVzcG9uc2UgQWRkcmVzcyovCiAJY21kX3Jlc19hZGRyID0gYmNfZGVjX3JlZ19yZChody0+YWRwLCBDcHUySHN0TWJ4MSk7CiAKIAkvKlJlYWQgdGhlIFJlc3BvbnNlKi8KQEAgLTIzNjcsNyArMjM2Nyw3IEBACiAJQkNNTE9HKEJDTUxPR19JTkZPLCAiY2xvY2sgaXMgbW92aW5nIHRvICVkIHdpdGggbiAlZCB3aXRoIHZjb19tZyAlZFxuIiwKIAkgICAgICAgaHctPmNvcmVfY2xvY2tfbWh6LCBuLCB2Y29fbWcpOwogCi0JLyogQ2hhbmdlIHRoZSBEUkFNIHJlZnJlc2ggcmF0ZSB0byBhY2NvbW9kYXRlIHRoZSBuZXcgZnJlcXVlbmN5ICovCisJLyogQ2hhbmdlIHRoZSBEUkFNIHJlZnJlc2ggcmF0ZSB0byBhY2NvbW1vZGF0ZSB0aGUgbmV3IGZyZXF1ZW5jeSAqLwogCS8qIHJlZnJlc2ggcmVnID0gKChyZWZyZXNoX3JhdGUgKiBjbG9ja19yYXRlKS8xNikgLSAxOyByb3VuZGluZyB1cCovCiAJcmVmcmVzaF9yZWcgPSAoNyAqIGh3LT5jb3JlX2Nsb2NrX21oeiAvIDE2KTsKIAliY19kZWNfcmVnX3dyKGh3LT5hZHAsIFNEUkFNX1JFRl9QQVJBTSwgKCgxIDw8IDEyKSB8IHJlZnJlc2hfcmVnKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5jIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuYwppbmRleCBmMjc0Yzc3Li41Y2MzNDIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmMKQEAgLTE0NTUsNyArMTQ1NSw3IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogSWYgdGhlIGRlc2NyaXB0b3IgaGFzIG5vdCByZWNvdmVyZWQsIHRoZW4gbGVhdmluZyB0aGUgRU1QVFkKICAgICAgICAgICAgICAqIGVudHJ5IHNldCB3aWxsIG5vdCBzaWduYWwgdG8gdGhlIE1VU1lDQyB0aGF0IHRoaXMgZGVzY3JpcHRvcgotICAgICAgICAgICAgICogaGFzIGJlZW4gc2VydmljZWQuIFRoZSBJbnRlcnJ1cHQgUXVldWUgY2FuIHRoZW4gc3RhcnQgbG9vc2luZworICAgICAgICAgICAgICogaGFzIGJlZW4gc2VydmljZWQuIFRoZSBJbnRlcnJ1cHQgUXVldWUgY2FuIHRoZW4gc3RhcnQgbG9zaW5nCiAgICAgICAgICAgICAgKiBhdmFpbGFibGUgZGVzY3JpcHRvcnMgYW5kIE1VU1lDQyBldmVudHVhbGx5IGVuY291bnRlcnMgYW5kCiAgICAgICAgICAgICAgKiByZXBvcnRzIHRoZSBJTlRGVUxMIGNvbmRpdGlvbi4gIFBlciBtYW51YWwsIGNoYW5naW5nIGFueSBiaXQKICAgICAgICAgICAgICAqIG1hcmtzIGRlc2NyaXB0b3IgYXMgYXZhaWxhYmxlLCB0aHVzIHRoZSB1c2Ugb2YgZGlmZmVyZW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5oIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuaAppbmRleCBkMmM5MWVmLi42OGYzNjYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmgKQEAgLTc0LDcgKzc0LDcgQEAKIAogI2RlZmluZSBJTlRfUVVFVUVfU0laRSAgICBNVVNZQ0NfTklRRAogCi0vKiBSQU0gaW1hZ2Ugb2YgTVVTWUNDIHJlZ2lzdGVycyBsYXllZCBvdXQgYXMgYSBDIHN0cnVjdHVyZSAqLworLyogUkFNIGltYWdlIG9mIE1VU1lDQyByZWdpc3RlcnMgbGFpZCBvdXQgYXMgYSBDIHN0cnVjdHVyZSAqLwogICAgIHN0cnVjdCBtdXN5Y2NfZ3JvdXByCiAgICAgewogICAgICAgICBWSU5UMzIgICAgICB0aHBbMzJdOyAgICAvKiBUcmFuc21pdCBIZWFkIFBvaW50ZXIgWzUtMjldICAgICAgICAgICAqLwpAQCAtOTYsNyArOTYsNyBAQAogICAgICAgICBWSU5UMzIgICAgICBwY2Q7ICAgICAgICAvKiBQb3J0IENvbmZpZ3VyYXRpb24gRGVzY3JpcHRvciBbNS0xOV0gICAqLwogICAgIH07CiAKLS8qIGhhcmR3YXJlIE1VU1lDQyByZWdpc3RlcnMgbGF5ZWQgb3V0IGFzIGEgQyBzdHJ1Y3R1cmUgKi8KKy8qIGhhcmR3YXJlIE1VU1lDQyByZWdpc3RlcnMgbGFpZCBvdXQgYXMgYSBDIHN0cnVjdHVyZSAqLwogICAgIHN0cnVjdCBtdXN5Y2NfZ2xvYmFscgogICAgIHsKICAgICAgICAgVklOVDMyICAgICAgZ2JwOyAgICAgICAgLyogR3JvdXAgQmFzZSBQb2ludGVyICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvcG1jYzRfZGVmcy5oIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9wbWNjNF9kZWZzLmgKaW5kZXggMTg2MzQ3Yi4uYTM5NTA1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9wbWNjNF9kZWZzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9wbWNjNF9kZWZzLmgKQEAgLTU0LDggKzU0LDggQEAKICNkZWZpbmUgTVVTWUNDX01UVSAgICAgICAgICAyMDQ4ICAvKiBkZWZhdWx0ICovCiAjZGVmaW5lIE1VU1lDQ19UWERFU0NfTUlOICAgMTAgICAgLyogSERMQyBtb2RlIGRlZmF1bHQgKi8KICNkZWZpbmUgTVVTWUNDX1JYREVTQ19NSU4gICAxOCAgICAvKiBIRExDIG1vZGUgZGVmYXVsdCAqLwotI2RlZmluZSBNVVNZQ0NfVFhERVNDX1RSQU5TIDQgICAgIC8qIFRyYW5zcGFyZW50IG1vZGUgbWludW11bSAjIG9mIFRYIGRlc2NyaXB0b3JzICovCi0jZGVmaW5lIE1VU1lDQ19SWERFU0NfVFJBTlMgMTIgICAgLyogVHJhbnNwYXJlbnQgbW9kZSBtaW51bXVtICMgb2YgUlggZGVzY3JpcHRvcnMgKi8KKyNkZWZpbmUgTVVTWUNDX1RYREVTQ19UUkFOUyA0ICAgICAvKiBUcmFuc3BhcmVudCBtb2RlIG1pbmltdW0gIyBvZiBUWCBkZXNjcmlwdG9ycyAqLworI2RlZmluZSBNVVNZQ0NfUlhERVNDX1RSQU5TIDEyICAgIC8qIFRyYW5zcGFyZW50IG1vZGUgbWluaW11bSAjIG9mIFJYIGRlc2NyaXB0b3JzICovCiAKICNkZWZpbmUgTUFYX0RFRkFVTFRfSUZRTEVOICAzMiAgICAvKiBuZXR3b3JrIHFsZW4gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVjcmMuYyBiL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlY3JjLmMKaW5kZXggNTEyMzI5NC4uM2YzY2Q2MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlY3JjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVjcmMuYwpAQCAtOTUsNyArOTUsNyBAQAogCiAgICAgLyoKICAgICAgKiBpZiB0YWJsZSBub3QgeWV0IGNyZWF0ZWQsIGRvIHNvLiBEb24ndCBjYXJlIGFib3V0ICJleHRyYSIgdGltZQotICAgICAqIGNoZWNraW5nIHRoaXMgZXZlcnl0aW1lIHNiZUNyYygpIGlzIGNhbGxlZCwgc2luY2UgQ1JDIGNhbGN1bGF0aW9ucyBhcmUKKyAgICAgKiBjaGVja2luZyB0aGlzIGV2ZXJ5IHRpbWUgc2JlQ3JjKCkgaXMgY2FsbGVkLCBzaW5jZSBDUkMgY2FsY3VsYXRpb25zIGFyZQogICAgICAqIGFscmVhZHkgdGltZSBjb25zdW1pbmcKICAgICAgKi8KICAgICBpZiAoIWNyY1RhYmxlSW5pdCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvc2JlcHJvYy5jIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVwcm9jLmMKaW5kZXggNzBiOWIzMy4uZjQyNTMxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVwcm9jLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVwcm9jLmMKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgICAqLwogCiAjaWYgMQotICAgIC8qICM0IC0gaW50ZXByZXRhdGlvbiBvZiBhYm92ZSA9IHNldCBFT0YsIHJldHVybiBsZW4gKi8KKyAgICAvKiAjNCAtIGludGVycHJldGF0aW9uIG9mIGFib3ZlID0gc2V0IEVPRiwgcmV0dXJuIGxlbiAqLwogICAgICplb2YgPSAxOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2FkZHJlc3NfbWFwLmggYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9hZGRyZXNzX21hcC5oCmluZGV4IGU2YzhjYjMuLjQyNWU5MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2FkZHJlc3NfbWFwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfYWRkcmVzc19tYXAuaApAQCAtODU2LDcgKzg1Niw3IEBACiAgKi8KIAogLyoKLSAqIHN0cnVjdHVyZSBmb3Igc3BhY2UgYXZhaWxpYWJsZSByZWcgaW4gcnhtYWMgYWRkcmVzcyBtYXAuCisgKiBzdHJ1Y3R1cmUgZm9yIHNwYWNlIGF2YWlsYWJsZSByZWcgaW4gcnhtYWMgYWRkcmVzcyBtYXAuCiAgKiBsb2NhdGVkIGF0IGFkZHJlc3MgMHg0MDk0CiAgKgogICogMzEtMTc6IHJlc2VydmVkCkBAIC0xMDMxLDcgKzEwMzEsNyBAQAogICogMzE6IHJlc2V0IE1JSSBtZ210CiAgKiAzMC02OiB1bnVzZWQKICAqIDU6IHNjYW4gYXV0byBpbmNyZW1lbnQKLSAqIDQ6IHByZWFtYmxlIHN1cHJlc3MKKyAqIDQ6IHByZWFtYmxlIHN1cHByZXNzCiAgKiAzOiB1bmRlZmluZWQKICAqIDItMDogbWdtdCBjbG9jayByZXNldAogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9waHkuaCBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3BoeS5oCmluZGV4IDc4MzQ5YWQuLjk0NmMwYzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9waHkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9waHkuaApAQCAtNDY4LDcgKzQ2OCw3IEBACiAjZGVmaW5lIFRSVUVQSFlfQU5FR19DT01QTEVURSAgICAgICAgICAgMQogI2RlZmluZSBUUlVFUEhZX0FORUdfRElTQUJMRUQgICAgICAgICAgIDIKIAotLyogRGVmaW5lIGR1cGxleCBhZHZlcnRpc21lbnQgZmxhZ3MgKi8KKy8qIERlZmluZSBkdXBsZXggYWR2ZXJ0aXNlbWVudCBmbGFncyAqLwogI2RlZmluZSBUUlVFUEhZX0FEVl9EVVBMRVhfTk9ORSAgICAgICAgIDB4MDAKICNkZWZpbmUgVFJVRVBIWV9BRFZfRFVQTEVYX0ZVTEwgICAgICAgICAweDAxCiAjZGVmaW5lIFRSVUVQSFlfQURWX0RVUExFWF9IQUxGICAgICAgICAgMHgwMgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcnguYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmMKaW5kZXggMzM5MTM2Zi4uZmM2YmQ0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcnguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9yeC5jCkBAIC0xMjIsNyArMTIyLDcgQEAKIAkgKiBudW1iZXIgb2YgZW50cmllcyBpbiBGQlIxLgogCSAqCiAJICogRkJSMSBob2xkcyAibGFyZ2UiIGZyYW1lcywgRkJSMCBob2xkcyAic21hbGwiIGZyYW1lcy4gIElmIEZCUjEKLQkgKiBlbnRyaWVzIGFyZSBodWdlIGluIG9yZGVyIHRvIGFjY29tb2RhdGUgYSAianVtYm8iIGZyYW1lLCB0aGVuIGl0CisJICogZW50cmllcyBhcmUgaHVnZSBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSBhICJqdW1ibyIgZnJhbWUsIHRoZW4gaXQKIAkgKiB3aWxsIGhhdmUgbGVzcyBlbnRyaWVzLiAgQ29udmVyc2VseSwgRkJSMSB3aWxsIG5vdyBiZSByZWxpZWQgdXBvbgogCSAqIHRvIGNhcnJ5IG1vcmUgIm5vcm1hbCIgZnJhbWVzLCB0aHVzIGl0J3MgZW50cnkgc2l6ZSBhbHNvIGluY3JlYXNlcwogCSAqIGFuZCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZ29lcyB1cCB0b28gKHNpbmNlIGl0IG5vdyBjYXJyaWVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9pc3IuYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2lzci5jCmluZGV4IGNlNGQ5MzAuLmY3MTZlNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2lzci5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2lzci5jCkBAIC00NjYsNyArNDY2LDcgQEAKIAkJLyogSGFuZGxlIFNMViBUaW1lb3V0IEludGVycnVwdCAqLwogCQlpZiAoc3RhdHVzICYgRVRfSU5UUl9TTFZfVElNRU9VVCkgewogCQkJLyoKLQkJCSAqIFRoaXMgbWVhbnMgYSB0aW1lb3V0IGhhcyBvY2N1cmVkIG9uIGEgcmVhZCBvcgorCQkJICogVGhpcyBtZWFucyBhIHRpbWVvdXQgaGFzIG9jY3VycmVkIG9uIGEgcmVhZCBvcgogCQkJICogd3JpdGUgcmVxdWVzdCB0byBvbmUgb2YgdGhlIEpBR0NvcmUgcmVnaXN0ZXJzLiBUaGUKIAkJCSAqIEdsb2JhbCBSZXNvdXJjZXMgYmxvY2sgaGFzIHRlcm1pbmF0ZWQgdGhlIHJlcXVlc3QKIAkJCSAqIGFuZCBvbiBhIHJlYWQgcmVxdWVzdCwgcmV0dXJuZWQgYSAiZmFrZSIgdmFsdWUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxeF9uZXRkZXYuYyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5jCmluZGV4IDBjMjk4Y2EuLmIyNWJhZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5jCkBAIC00MTUsNyArNDE1LDcgQEAKIAkgKi8KIAlQYWNrZXRGaWx0ZXIgPSBhZGFwdGVyLT5QYWNrZXRGaWx0ZXI7CiAKLQkvKiBDbGVhciB0aGUgJ211bHRpY2FzdCcgZmxhZyBsb2NhbGx5OyBiZWN1YXNlIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZQorCS8qIENsZWFyIHRoZSAnbXVsdGljYXN0JyBmbGFnIGxvY2FsbHk7IGJlY2F1c2Ugd2Ugb25seSBoYXZlIGEgc2luZ2xlCiAJICogZmxhZyB0byBjaGVjayBtdWx0aWNhc3QsIGFuZCBtdWx0aXBsZSBtdWx0aWNhc3QgYWRkcmVzc2VzIGNhbiBiZQogCSAqIHNldCwgdGhpcyBpcyB0aGUgZWFzaWVzdCB3YXkgdG8gZGV0ZXJtaW5lIGlmIG1vcmUgdGhhbiBvbmUKIAkgKiBtdWx0aWNhc3QgYWRkcmVzcyBpcyBiZWluZyBzZXQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2Rldi5oIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9kZXYuaAppbmRleCA0YTg5YmQxLi4wYjYzZjA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2Rldi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZGV2LmgKQEAgLTMwLDcgKzMwLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3JlYWRfcmVnCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgdmFsdWUgb2YgYSBnaXZlbiBBU0lDIHJlZ2lzdGVyLgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSB2YWx1ZSBvZiBhIGdpdmVuIEFTSUMgcmVnaXN0ZXIuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyAgICAgb2Zmc2V0IC0gQVNJQyByZWdpc3RlciBvZmZzZXQKQEAgLTQ5LDcgKzQ5LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3dyaXRlX3JlZwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gQVNJQyByZWdpc3Rlci4KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBBU0lDIHJlZ2lzdGVyLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgIG9mZnNldCAtIEFTSUMgcmVnaXN0ZXIgb2Zmc2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2RubGQuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZG5sZC5jCmluZGV4IGIwNzI5ZmMuLmZiMzc1ZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZG5sZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZG5sZC5jCkBAIC05NSw0NyArOTUsNDcgQEAKIFVTSE9SVCBoZHJfY2hlY2tzdW0oUFBTRVVET19IRFIgcEhkcik7CiAKIHR5cGVkZWYgc3RydWN0IF9EU1BfRklMRV9IRFIgewotCWxvbmcgYnVpbGRfZGF0ZTsKLQlsb25nIGRzcF9jb2ZmX2RhdGU7Ci0JbG9uZyBsb2FkZXJfY29kZV9hZGRyZXNzOwotCWxvbmcgbG9hZGVyX2NvZGVfc2l6ZTsKLQlsb25nIGxvYWRlcl9jb2RlX2VuZDsKLQlsb25nIGRzcF9jb2RlX2FkZHJlc3M7Ci0JbG9uZyBkc3BfY29kZV9zaXplOwotCWxvbmcgZHNwX2NvZGVfZW5kOwotCWxvbmcgcmVzZXJ2ZWRbOF07CisJdTMyICBidWlsZF9kYXRlOworCXUzMiAgZHNwX2NvZmZfZGF0ZTsKKwl1MzIgIGxvYWRlcl9jb2RlX2FkZHJlc3M7CisJdTMyICBsb2FkZXJfY29kZV9zaXplOworCXUzMiAgbG9hZGVyX2NvZGVfZW5kOworCXUzMiAgZHNwX2NvZGVfYWRkcmVzczsKKwl1MzIgIGRzcF9jb2RlX3NpemU7CisJdTMyICBkc3BfY29kZV9lbmQ7CisJdTMyICByZXNlcnZlZFs4XTsKIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIERTUF9GSUxFX0hEUiwgKlBEU1BfRklMRV9IRFI7CiAKIHR5cGVkZWYgc3RydWN0IF9EU1BfRklMRV9IRFJfNSB7Ci0JbG9uZyB2ZXJzaW9uX2lkOwkvLyBWZXJzaW9uIElEIG9mIHRoaXMgaW1hZ2UgZm9ybWF0LgotCWxvbmcgcGFja2FnZV9pZDsJLy8gUGFja2FnZSBJRCBvZiBjb2RlIHJlbGVhc2UuCi0JbG9uZyBidWlsZF9kYXRlOwkvLyBEYXRlL3RpbWUgc3RhbXAgd2hlbiBmaWxlIHdhcyBidWlsdC4KLQlsb25nIGNvbW1hbmRzX29mZnNldDsJLy8gT2Zmc2V0IHRvIGF0dGFjaGVkIGNvbW1hbmRzIGluIFBzZXVkbyBIZHIgZm9ybWF0LgotCWxvbmcgbG9hZGVyX29mZnNldDsJLy8gT2Zmc2V0IHRvIGJvb3Rsb2FkZXIgY29kZS4KLQlsb25nIGxvYWRlcl9jb2RlX2FkZHJlc3M7CS8vIFN0YXJ0IGFkZHJlc3Mgb2YgYm9vdGxvYWRlci4KLQlsb25nIGxvYWRlcl9jb2RlX2VuZDsJLy8gV2hlcmUgYm9vdGxvYWRlciBjb2RlIGVuZHMuCi0JbG9uZyBsb2FkZXJfY29kZV9zaXplOwotCWxvbmcgdmVyc2lvbl9kYXRhX29mZnNldDsJLy8gT2Zmc2V0IHdlcmUgc2NyYW1ibGVkIHZlcnNpb24gZGF0YSBiZWdpbnMuCi0JbG9uZyB2ZXJzaW9uX2RhdGFfc2l6ZTsJLy8gU2l6ZSwgaW4gd29yZHMsIG9mIHNjcmFtYmxlZCB2ZXJzaW9uIGRhdGEuCi0JbG9uZyBuRHNwSW1hZ2VzOwkvLyBOdW1iZXIgb2YgRFNQIGltYWdlcyBpbiBmaWxlLgorCXUzMiAgdmVyc2lvbl9pZDsJLy8gVmVyc2lvbiBJRCBvZiB0aGlzIGltYWdlIGZvcm1hdC4KKwl1MzIgIHBhY2thZ2VfaWQ7CS8vIFBhY2thZ2UgSUQgb2YgY29kZSByZWxlYXNlLgorCXUzMiAgYnVpbGRfZGF0ZTsJLy8gRGF0ZS90aW1lIHN0YW1wIHdoZW4gZmlsZSB3YXMgYnVpbHQuCisJdTMyICBjb21tYW5kc19vZmZzZXQ7CS8vIE9mZnNldCB0byBhdHRhY2hlZCBjb21tYW5kcyBpbiBQc2V1ZG8gSGRyIGZvcm1hdC4KKwl1MzIgIGxvYWRlcl9vZmZzZXQ7CS8vIE9mZnNldCB0byBib290bG9hZGVyIGNvZGUuCisJdTMyICBsb2FkZXJfY29kZV9hZGRyZXNzOwkvLyBTdGFydCBhZGRyZXNzIG9mIGJvb3Rsb2FkZXIuCisJdTMyICBsb2FkZXJfY29kZV9lbmQ7CS8vIFdoZXJlIGJvb3Rsb2FkZXIgY29kZSBlbmRzLgorCXUzMiAgbG9hZGVyX2NvZGVfc2l6ZTsKKwl1MzIgIHZlcnNpb25fZGF0YV9vZmZzZXQ7CS8vIE9mZnNldCB3ZXJlIHNjcmFtYmxlZCB2ZXJzaW9uIGRhdGEgYmVnaW5zLgorCXUzMiAgdmVyc2lvbl9kYXRhX3NpemU7CS8vIFNpemUsIGluIHdvcmRzLCBvZiBzY3JhbWJsZWQgdmVyc2lvbiBkYXRhLgorCXUzMiAgbkRzcEltYWdlczsJLy8gTnVtYmVyIG9mIERTUCBpbWFnZXMgaW4gZmlsZS4KIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIERTUF9GSUxFX0hEUl81LCAqUERTUF9GSUxFX0hEUl81OwogCiB0eXBlZGVmIHN0cnVjdCBfRFNQX0lNQUdFX0lORk8gewotCWxvbmcgY29mZl9kYXRlOwkJLy8gRGF0ZS90aW1lIHdoZW4gRFNQIENvZmYgaW1hZ2Ugd2FzIGJ1aWx0LgotCWxvbmcgYmVnaW5fb2Zmc2V0OwkvLyBPZmZzZXQgaW4gZmlsZSB3aGVyZSBpbWFnZSBiZWdpbnMuCi0JbG9uZyBlbmRfb2Zmc2V0OwkvLyBPZmZzZXQgaW4gZmlsZSB3aGVyZSBpbWFnZSBiZWdpbnMuCi0JbG9uZyBydW5fYWRkcmVzczsJLy8gT24gY2hpcCBTdGFydCBhZGRyZXNzIG9mIERTUCBjb2RlLgotCWxvbmcgaW1hZ2Vfc2l6ZTsJLy8gU2l6ZSBvZiBpbWFnZS4KLQlsb25nIHZlcnNpb247CQkvLyBFbWJlZGRlZCB2ZXJzaW9uICMgb2YgRFNQIGNvZGUuCisJdTMyICBjb2ZmX2RhdGU7CQkvLyBEYXRlL3RpbWUgd2hlbiBEU1AgQ29mZiBpbWFnZSB3YXMgYnVpbHQuCisJdTMyICBiZWdpbl9vZmZzZXQ7CS8vIE9mZnNldCBpbiBmaWxlIHdoZXJlIGltYWdlIGJlZ2lucy4KKwl1MzIgIGVuZF9vZmZzZXQ7CS8vIE9mZnNldCBpbiBmaWxlIHdoZXJlIGltYWdlIGJlZ2lucy4KKwl1MzIgIHJ1bl9hZGRyZXNzOwkvLyBPbiBjaGlwIFN0YXJ0IGFkZHJlc3Mgb2YgRFNQIGNvZGUuCisJdTMyICBpbWFnZV9zaXplOwkvLyBTaXplIG9mIGltYWdlLgorCXUzMiAgdmVyc2lvbjsJCS8vIEVtYmVkZGVkIHZlcnNpb24gIyBvZiBEU1AgY29kZS4KIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIERTUF9JTUFHRV9JTkZPLCAqUERTUF9JTUFHRV9JTkZPOwogCiB0eXBlZGVmIHN0cnVjdCBfRFNQX0lNQUdFX0lORk9fVjYgewotCWxvbmcgY29mZl9kYXRlOwkJLy8gRGF0ZS90aW1lIHdoZW4gRFNQIENvZmYgaW1hZ2Ugd2FzIGJ1aWx0LgotCWxvbmcgYmVnaW5fb2Zmc2V0OwkvLyBPZmZzZXQgaW4gZmlsZSB3aGVyZSBpbWFnZSBiZWdpbnMuCi0JbG9uZyBlbmRfb2Zmc2V0OwkvLyBPZmZzZXQgaW4gZmlsZSB3aGVyZSBpbWFnZSBiZWdpbnMuCi0JbG9uZyBydW5fYWRkcmVzczsJLy8gT24gY2hpcCBTdGFydCBhZGRyZXNzIG9mIERTUCBjb2RlLgotCWxvbmcgaW1hZ2Vfc2l6ZTsJLy8gU2l6ZSBvZiBpbWFnZS4KLQlsb25nIHZlcnNpb247CQkvLyBFbWJlZGRlZCB2ZXJzaW9uICMgb2YgRFNQIGNvZGUuCisJdTMyICBjb2ZmX2RhdGU7CQkvLyBEYXRlL3RpbWUgd2hlbiBEU1AgQ29mZiBpbWFnZSB3YXMgYnVpbHQuCisJdTMyICBiZWdpbl9vZmZzZXQ7CS8vIE9mZnNldCBpbiBmaWxlIHdoZXJlIGltYWdlIGJlZ2lucy4KKwl1MzIgIGVuZF9vZmZzZXQ7CS8vIE9mZnNldCBpbiBmaWxlIHdoZXJlIGltYWdlIGJlZ2lucy4KKwl1MzIgIHJ1bl9hZGRyZXNzOwkvLyBPbiBjaGlwIFN0YXJ0IGFkZHJlc3Mgb2YgRFNQIGNvZGUuCisJdTMyICBpbWFnZV9zaXplOwkvLyBTaXplIG9mIGltYWdlLgorCXUzMiAgdmVyc2lvbjsJCS8vIEVtYmVkZGVkIHZlcnNpb24gIyBvZiBEU1AgY29kZS4KIAl1bnNpZ25lZCBzaG9ydCBjaGVja3N1bTsJLy8gRHNwIEZpbGUgY2hlY2tzdW0KIAl1bnNpZ25lZCBzaG9ydCBwYWQxOwogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgRFNQX0lNQUdFX0lORk9fVjYsICpQRFNQX0lNQUdFX0lORk9fVjY7CkBAIC04NDYsOCArODQ2LDggQEAKIAkJCWJyZWFrOwogCiAJCWNhc2UgU1RBVEVfRE9ORV9EV05MRDoKLQkJCWlmICgoKFVJTlQpIChwVWNGaWxlKSAtIChVSU5UKSBwRmlsZVN0YXJ0KSA+PQotCQkJCShVSU5UKSBGaWxlTGVuZ3RoKSB7CisJCQlpZiAoKCh1bnNpZ25lZCBsb25nKSAocFVjRmlsZSkgLSAodW5zaWduZWQgbG9uZykgcEZpbGVTdGFydCkgPj0KKwkJCQkodW5zaWduZWQgbG9uZykgRmlsZUxlbmd0aCkgewogCQkJCXVpU3RhdGUgPSBTVEFURV9ET05FX0ZJTEU7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC05MDEsMTEgKzkwMSwxMSBAQAogCQkJCQkJCQkgICZpbmZvLT5wcm92X2xpc3QpOwogCQkJCQkJLy8gTW92ZSB0byBuZXh0IGVudHJ5IGlmIGF2YWlsYWJsZQogCQkJCQkJcFVjRmlsZSA9Ci0JCQkJCQkJKFVDSEFSICopICgoVUlOVCkgcFVjRmlsZSArCi0JCQkJCQkJCSAgIChVSU5UKSAoKHVzSGRyTGVuZ3RoICsgMSkgJiAweEZGRkZGRkZFKSArIHNpemVvZihQU0VVRE9fSERSKSk7Ci0JCQkJCQlpZiAoKFVJTlQpIChwVWNGaWxlKSAtCi0JCQkJCQkJKFVJTlQpIChwRmlsZVN0YXJ0KSA+PQotCQkJCQkJCShVSU5UKSBGaWxlTGVuZ3RoKSB7CisJCQkJCQkJKFVDSEFSICopICgodW5zaWduZWQgbG9uZykgcFVjRmlsZSArCisJCQkJCQkJCSAgICh1bnNpZ25lZCBsb25nKSAoKHVzSGRyTGVuZ3RoICsgMSkgJiAweEZGRkZGRkZFKSArIHNpemVvZihQU0VVRE9fSERSKSk7CisJCQkJCQlpZiAoKHVuc2lnbmVkIGxvbmcpIChwVWNGaWxlKSAtCisJCQkJCQkJKHVuc2lnbmVkIGxvbmcpIChwRmlsZVN0YXJ0KSA+PQorCQkJCQkJCSh1bnNpZ25lZCBsb25nKSBGaWxlTGVuZ3RoKSB7CiAJCQkJCQkJdWlTdGF0ZSA9CiAJCQkJCQkJCVNUQVRFX0RPTkVfRklMRTsKIAkJCQkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfaHcuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfaHcuYwppbmRleCBmZjY5MWQ5Li5lZWI3ZGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2h3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9ody5jCkBAIC05MCw3ICs5MCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9hc2ljX3JlYWQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXRyaWV2ZSB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBBU0lDCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEFTSUMKIC8vICAgICAgICAgICAgIHJlZ2lzdGVyLgogLy8gSW5wdXQ6CiAvLyAgICBkZXYgLSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTEwNyw3ICsxMDcsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfYXNpY193cml0ZQotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBBU0lDCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBBU0lDCiAvLyAgICAgICAgICAgICByZWdpc3Rlci4KIC8vIElucHV0OgogLy8gICAgZGV2IC0gbmV0d29yayBkZXZpY2Ugc3RydWN0dXJlCkBAIC0xMjQsNyArMTI0LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3JlYWRfZmlmb19sZW4KLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBBU0lDIFVwbGluayBGSUZPIHN0YXR1cyByZWdpc3RlcgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBBU0lDIFVwbGluayBGSUZPIHN0YXR1cyByZWdpc3RlcgogLy8gICAgICAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZW1haW5pbmcgaW4gdGhlIFVwbGluayBGSUZPLgogLy8gICAgICAgICAgICAgU2l4dGVlbiBieXRlcyBhcmUgc3VidHJhY3RlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgQVNJQyBkb2VzIG5vdAogLy8gICAgICAgICAgICAgcmVhY2ggaXRzIHRocmVzaG9sZC4KQEAgLTE0OCw3ICsxNDgsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVhZF9kcHJhbQotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKEVsZWN0cmFidXp6IEFTSUMgb25seSkKIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTE3NSw3ICsxNzUsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfd3JpdGVfZHByYW0KLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgd3JpdGUgdG8gYSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCiAvLyAgICAgICAgICAgICAoRWxlY3RyYWJ1enogQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMjAxLDcgKzIwMSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWFkX2RwcmFtX21hZ18xNgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKE1hZ25lbWl0ZSBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0yMzMsNyArMjMzLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3dyaXRlX2RwcmFtX21hZ18xNgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KIC8vICAgICAgICAgICAgIChNYWduZW1pdGUgQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMjYzLDcgKzI2Myw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWFkX2RwcmFtX21hZ18zMgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKE1hZ25lbWl0ZSBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0yOTAsNyArMjkwLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3dyaXRlX2RwcmFtX21hZ18zMgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KIC8vICAgICAgICAgICAgIChNYWduZW1pdGUgQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMzE1LDcgKzMxNSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9lbmFibGVfaW50ZXJydXB0cwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBpbnRlcnJ1cHRzIGJhc2Ugb24gdGhlIGN1cnJlbnQgaW50ZXJydXB0IG1hc2suCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBpbnRlcnJ1cHRzIGJhc2Ugb24gdGhlIGN1cnJlbnQgaW50ZXJydXB0IG1hc2suCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyBPdXRwdXQ6CkBAIC0zNDAsNyArMzQwLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2Rpc2FibGVfaW50ZXJydXB0cwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGRpc2FibGUgYWxsIGludGVycnVwdHMuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGRpc2FibGUgYWxsIGludGVycnVwdHMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyBPdXRwdXQ6CkBAIC0zNjQsNyArMzY0LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2FzaWMKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsIHRoZSBDYXJkIFNlcnZpY2UgZnVuY3Rpb24gdG8gcmVzZXQgdGhlCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIENhcmQgU2VydmljZSBmdW5jdGlvbiB0byByZXNldCB0aGUKIC8vICAgICAgICAgICAgIEFTSUMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC00MDgsNyArNDA4LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2NhcmQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gT3V0cHV0OgpAQCAtNTcxLDcgKzU3MSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jaGtjYXJkCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50bHkgYXZhaWxhYmxlIG9uCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudGx5IGF2YWlsYWJsZSBvbgogLy8gICAgICAgICAgICAgdGhlIHN5c3RlbS4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTYwNyw3ICs2MDcsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfaGJjaGsKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBwZXJmb3JtIHRoZSBoZWFydCBiZWF0IGNoZWNrIG9mIHRoZSBEU1AgYXMKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcGVyZm9ybSB0aGUgaGVhcnQgYmVhdCBjaGVjayBvZiB0aGUgRFNQIGFzCiAvLyAgICAgICAgICAgICB3ZWxsIGFzIHRoZSBBU0lDLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtODI4LDcgKzgyOCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9zZW5kX2NtZAotLy8gRGVzY3JpcHRvbjoKKy8vIERlc2NyaXB0aW9uOgogLy8gSW5wdXQ6CiAvLyBPdXRwdXQ6CiAvLwpAQCAtOTA4LDcgKzkwOCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWNlaXZlX2NtZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgYSBtZXNzYWdlIGZyb20gdGhlIGRwcmFtIGFyZWEuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgYSBtZXNzYWdlIGZyb20gdGhlIGRwcmFtIGFyZWEuCiAvLyBJbnB1dDoKIC8vICAgIGRldiAtIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgcGJ1ZmZlciAtIGNhbGxlciBzdXBwbHkgYWRkcmVzcyB0byBidWZmZXIKQEAgLTEwMDMsNyArMTAwMyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9wcm9jX2Rydm1zZwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHByb2Nlc3MgdGhlIHZhcmlvdXMgZHJpdmVyIG1lc3NhZ2VzLgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBwcm9jZXNzIHRoZSB2YXJpb3VzIGRyaXZlciBtZXNzYWdlcy4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgICBwbnh0cGggLSBwb2ludGVyIHRvIG5leHQgcHNldWRvIGhlYWRlcgpAQCAtMTI4NSw3ICsxMjg1LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3BhcnNlX2RwcmFtX21zZwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHBhcnNlIHRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIERTUAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBwYXJzZSB0aGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSBEU1AKIC8vICAgICAgICAgICAgIHZpYSB0aGUgRFBSQU0gaW50ZXJmYWNlLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMTQ0Miw3ICsxNDQyLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2ZsdXNoX2ZpZm8KLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBmbHVzaCBvbmUgcGFja2V0IGZyb20gdGhlIGRvd25saW5rCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGZsdXNoIG9uZSBwYWNrZXQgZnJvbSB0aGUgZG93bmxpbmsKIC8vICAgICAgICAgICAgIEZJRk8uCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTE1ODcsNyArMTU4Nyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jb3B5X3VwX3BrdAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHB1bGwgRmxhcmlvbiBwYWNrZXRzIG91dCBvZiB0aGUgRG93bmxpbmsKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcHVsbCBGbGFyaW9uIHBhY2tldHMgb3V0IG9mIHRoZSBEb3dubGluawogLy8gICAgICAgICAgICAgRklGTyBhbmQgY29udmVydCBpdCB0byBhbiBldGhlcm5ldCBwYWNrZXQuICBUaGUgZXRoZXJuZXQgcGFja2V0IHdpbGwKIC8vICAgICAgICAgICAgIHRoZW4gYmUgZGVsaXZlciB0byB0aGUgVENQL0lQIHN0YWNrLgogLy8gSW5wdXQ6CkBAIC0xNzczLDcgKzE3NzMsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfY29weV9kb3duX3BrdAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYW4gZXRoZXJuZXQgcGFja2V0IGFuZCBjb252ZXJ0IGl0IHRvCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYW4gZXRoZXJuZXQgcGFja2V0IGFuZCBjb252ZXJ0IGl0IHRvCiAvLyAgICAgICAgICAgICBhIEZsYXJpb24gcGFja2V0IHByaW9yIHRvIHNlbmRpbmcgaXQgdG8gdGhlIEFTSUMgRG93bmxpbmsKIC8vICAgICAgICAgICAgIEZJRk8uCiAvLyBJbnB1dDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfZG93bmxvYWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfZG93bmxvYWQuYwppbmRleCA4ZTYyMjQyLi4xOTcyYjcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2Rvd25sb2FkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9kb3dubG9hZC5jCkBAIC00ODgsNyArNDg4LDcgQEAKIC8vIFBhcmFtZXRlcnM6ICBzdHJ1Y3QgZnQxMDAwX2RldmljZSAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyAgICAgICAgICAgICAgdTE2ICoqcFVzRmlsZSAtIERTUCBpbWFnZSBmaWxlIHBvaW50ZXIgaW4gdTE2CiAvLyAgICAgICAgICAgICAgdTggICoqcFVjRmlsZSAtIERTUCBpbWFnZSBmaWxlIHBvaW50ZXIgaW4gdTgKLS8vICAgICAgICAgICAgICBsb25nICAgd29yZF9sZW5ndGggLSBsZW5naHQgb2YgdGhlIGJ1ZmZlciB0byBiZSB3cml0dGVuCisvLyAgICAgICAgICAgICAgbG9uZyAgIHdvcmRfbGVuZ3RoIC0gbGVuZ3RoIG9mIHRoZSBidWZmZXIgdG8gYmUgd3JpdHRlbgogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIERQUkFNCiAvLwogLy8gUmV0dXJuczogICAgIFNUQVRVU19TVUNDRVNTIC0gc3VjY2VzcwpAQCAtNjI4LDcgKzYyOCw3IEBACiAvLyBQYXJhbWV0ZXJzOiAgc3RydWN0IGZ0MTAwMF9kZXZpY2UgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgICAgICAgICAgIHUxNiAqKnBVc0ZpbGUgLSBEU1AgaW1hZ2UgZmlsZSBwb2ludGVyIGluIHUxNgogLy8gICAgICAgICAgICAgIHU4ICAqKnBVY0ZpbGUgLSBEU1AgaW1hZ2UgZmlsZSBwb2ludGVyIGluIHU4Ci0vLyAgICAgICAgICAgICAgbG9uZyAgIHdvcmRfbGVuZ3RoIC0gbGVuZ2h0IG9mIHRoZSBidWZmZXIgdG8gYmUgd3JpdHRlbgorLy8gICAgICAgICAgICAgIGxvbmcgICB3b3JkX2xlbmd0aCAtIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHRvIGJlIHdyaXR0ZW4KIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBEUFJBTQogLy8KIC8vIFJldHVybnM6ICAgICBTVEFUVVNfU1VDQ0VTUyAtIHN1Y2Nlc3MKQEAgLTgxNyw3ICs4MTcsNyBAQAogCQkJCQkJICogRXJyb3IsIGJleW9uZCBib290IGNvZGUgcmFuZ2UuCiAJCQkJCQkgKi8KIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBCT09UIGNvZGUgYm91bmRyeS5cbiIsCisJCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBCT09UIGNvZGUgYm91bmRhcnkuXG4iLAogCQkJCQkJICAgICAoaW50KXdvcmRfbGVuZ3RoKTsKIAkJCQkJCXN0YXR1cyA9IFNUQVRVU19GQUlMVVJFOwogCQkJCQkJYnJlYWs7CkBAIC05NTAsNyArOTUwLDcgQEAKIAkJCQkJCSAqIEVycm9yLCBiZXlvbmQgYm9vdCBjb2RlIHJhbmdlLgogCQkJCQkJICovCiAJCQkJCQlERUJVRwotCQkJCQkJICAgICgiRlQxMDAwOmRvd25sb2FkOkRvd25sb2FkIGVycm9yOiBSZXF1ZXN0ZWQgbGVuPSVkIGV4Y2VlZHMgRFNQIGNvZGUgYm91bmRyeS5cbiIsCisJCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBEU1AgY29kZSBib3VuZGFyeS5cbiIsCiAJCQkJCQkgICAgIChpbnQpd29yZF9sZW5ndGgpOwogCQkJCQkJc3RhdHVzID0gU1RBVFVTX0ZBSUxVUkU7CiAJCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaHcuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaHcuYwppbmRleCA3OGRjZDQ5Li42ODRlNjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2h3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9ody5jCkBAIC01ODUsNyArNTg1LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2FzaWMKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsIHRoZSBDYXJkIFNlcnZpY2UgZnVuY3Rpb24gdG8gcmVzZXQgdGhlCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIENhcmQgU2VydmljZSBmdW5jdGlvbiB0byByZXNldCB0aGUKIC8vICAgICAgICAgICAgIEFTSUMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC02MjYsNyArNjI2LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2NhcmQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gT3V0cHV0OgpAQCAtOTE3LDcgKzkxNyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jb3B5X2Rvd25fcGt0Ci0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGNvbnZlcnQgaXQgdG8KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGNvbnZlcnQgaXQgdG8KIC8vICAgICAgICAgICAgIGEgRmxhcmlvbiBwYWNrZXQgcHJpb3IgdG8gc2VuZGluZyBpdCB0byB0aGUgQVNJQyBEb3dubGluawogLy8gICAgICAgICAgICAgRklGTy4KIC8vIElucHV0OgpAQCAtMTA3NSwxMCArMTA3NSwxMCBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfY29weV91cF9wa3QKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlIGEgcGFja2V0IGZyb20gdGhlIEZJRk8gdXAgbGluayBhbmQKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhIHBhY2tldCBmcm9tIHRoZSBGSUZPIHVwIGxpbmsgYW5kCiAvLyAgICAgICAgICAgICBjb252ZXJ0IGl0IGludG8gYW4gZXRoZXJuZXQgcGFja2V0IGFuZCBkZWxpdmVyIGl0IHRvIHRoZSBJUCBzdGFjawogLy8gSW5wdXQ6Ci0vLyAgICAgdXJiIC0gdGhlIHJlY2V2aW5nIHVzYiB1cmIKKy8vICAgICB1cmIgLSB0aGUgcmVjZWl2aW5nIHVzYiB1cmIKIC8vCiAvLyBPdXRwdXQ6CiAvLyAgICAgc3RhdHVzIC0gRkFJTFVSRQpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3N1Ym1pdF9yeF91cmIKLS8vIERlc2NyaXB0b246IHRoZSByZWNlaXZpbmcgZnVuY3Rpb24gb2YgdGhlIG5ldHdvcmsgZHJpdmVyCisvLyBEZXNjcmlwdGlvbjogdGhlIHJlY2VpdmluZyBmdW5jdGlvbiBvZiB0aGUgbmV0d29yayBkcml2ZXIKIC8vCiAvLyBJbnB1dDoKIC8vICAgICBpbmZvIC0gYSBwcml2YXRlIHN0cnVjdHVyZSBjb250YWlucyB0aGUgZGV2aWNlIGluZm9ybWF0aW9uCkBAIC0xMzE2LDcgKzEzMTYsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfY2hrY2FyZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudGx5IGF2YWlsYWJsZSBvbgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgZGV2aWNlIGlzIHByZXNlbnRseSBhdmFpbGFibGUgb24KIC8vICAgICAgICAgICAgIHRoZSBzeXN0ZW0uCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0xMzYzLDcgKzEzNjMsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVjZWl2ZV9jbWQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGEgbWVzc2FnZSBmcm9tIHRoZSBkcHJhbSBhcmVhLgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGEgbWVzc2FnZSBmcm9tIHRoZSBkcHJhbSBhcmVhLgogLy8gSW5wdXQ6CiAvLyAgICBkZXYgLSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgIHBidWZmZXIgLSBjYWxsZXIgc3VwcGx5IGFkZHJlc3MgdG8gYnVmZmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2lvY3RsLmggYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2lvY3RsLmgKaW5kZXggM2Y3MmQ1Yi4uNmE4YTE5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9pb2N0bC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaW9jdGwuaApAQCAtNTUsNyArNTUsNyBAQAogICAgdW5zaWduZWQgY2hhciAgICAgc2VxX251bTsgICAgICAgICAgLy9zZXF1ZW5jZSBudW1iZXIKICAgIHVuc2lnbmVkIGNoYXIgICAgIHJzdmQyOyAgICAgICAgICAgIC8vcmVzZXJ2ZWQKICAgIHVuc2lnbmVkIHNob3J0ICAgIHFvc19jbGFzczsgICAgICAgIC8vUXVhbGl0eSBvZiBTZXJ2aWNlIGNsYXNzIChOb3QgYXBwbGljYWJsZSBvbiBNb2JpbGUpCi0gICB1bnNpZ25lZCBzaG9ydCAgICBjaGVja3N1bTsgICAgICAgICAvL1BzdWVkbyBoZWFkZXIgY2hlY2tzdW0KKyAgIHVuc2lnbmVkIHNob3J0ICAgIGNoZWNrc3VtOyAgICAgICAgIC8vUHNldWRvIGhlYWRlciBjaGVja3N1bQogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAKIHR5cGVkZWYgc3RydWN0IF9JT0NUTF9HRVRfVkVSCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX3VzYi5oIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF91c2IuaAppbmRleCBlMDQ3YzAzLi5mMmVjYjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX3VzYi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfdXNiLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogCiAjZGVmaW5lIElTUl9FTVBUWQkJCSh1OCkweDAwIAkgLy8gbm8gYml0cyBzZXQgaW4gSVNSCiAKLSNkZWZpbmUgSVNSX0RPT1JCRUxMX0FDSwkodTgpMHgwMQkJIC8vICB0aGUgZG9vcmJlbGwgaSBzZW50IGhhcyBiZWVuIHJlY2lldmVkLgorI2RlZmluZSBJU1JfRE9PUkJFTExfQUNLCSh1OCkweDAxCQkgLy8gIHRoZSBkb29yYmVsbCBpIHNlbnQgaGFzIGJlZW4gcmVjZWl2ZWQuCiAKICNkZWZpbmUgSVNSX0RPT1JCRUxMX1BFTkQJKHU4KTB4MDIgCSAvLyAgZG9vcmJlbGwgZm9yIG1lCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9nZW5lcmljX3NlcmlhbC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMKaW5kZXggNDY2OTg4ZC4uZjI5ZGRhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMKQEAgLTExMyw3ICsxMTMsNyBAQAogCiAJCWMgPSBjb3VudDsKICAKLQkJLyogVGhpcyBpcyBzYWZlIGJlY2F1c2Ugd2UgIk9XTiIgdGhlICJoZWFkIi4gTm9vbmUgZWxzZSBjYW4gCisJCS8qIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHdlICJPV04iIHRoZSAiaGVhZCIuIE5vIG9uZSBlbHNlIGNhbiAKIAkJICAgY2hhbmdlIHRoZSAiaGVhZCI6IHdlIG93biB0aGUgcG9ydF93cml0ZV9tdXRleC4gKi8KIAkJLyogRG9uJ3Qgb3ZlcnJ1biB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKi8KIAkJdCA9IFNFUklBTF9YTUlUX1NJWkUgLSBwb3J0LT54bWl0X2hlYWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL21hcC5oIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9tYXAuaAppbmRleCA4MzY2OTc4Li4yOGE2NjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL21hcC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vbWFwLmgKQEAgLTg3LDcgKzg3LDcgQEAKICoqIFRoZSBUb3BvbG9neSBhcnJheSBjb250YWlucyB0aGUgSUQgb2YgdGhlIHVuaXQgY29ubmVjdGVkIHRvIGVhY2ggb2YgdGhlCiAqKiBmb3VyIGxpbmtzIG9uIHRoaXMgdW5pdC4gVGhlIGVudHJ5IHdpbGwgYmUgMHhGRkZGIGlmIE5PVEhJTkcgaXMgY29ubmVjdGVkCiAqKiB0byB0aGUgbGluaywgb3Igd2lsbCBiZSAweEZGMDAgaWYgYW4gVU5LTk9XTiB1bml0IGlzIGNvbm5lY3RlZCB0byB0aGUgbGluay4KLSoqIFRoZSBOYW1lIGZpZWxkIGlzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgdXB0byAzMSBjaGFyYWN0ZXJzLCBjb250YWluaW5nCisqKiBUaGUgTmFtZSBmaWVsZCBpcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcsIHVwIHRvIDMxIGNoYXJhY3RlcnMsIGNvbnRhaW5pbmcKICoqIHRoZSAnY3V0ZScgbmFtZSB0aGF0IHRoZSBzeXNhZG1pbi91c2VycyBrbm93IHRoZSBSVEEgYnkuIEl0IGlzIHBlcm1pc3NpYmxlCiAqKiBmb3IgdGhpcyBzdHJpbmcgdG8gY29udGFpbiBhbnkgY2hhcmFjdGVyIGluIHRoZSByYW5nZSBcMDQwIHRvIFwxNzYgaW5jbHVzaXZlLgogKiogSW4gcGFydGljdWxhciwgY3RybCBzZXF1ZW5jZXMgYW5kIERFTCAoMHg3RiwgXDE3NykgYXJlIG5vdCBhbGxvd2VkLiBUaGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvYm9vdC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMKaW5kZXggZDk1NmRkMy4uZmZhMDFjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMKQEAgLTEwOSw3ICsxMDksNyBAQAogCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiRGF0YSBhdCB1c2VyIGFkZHJlc3MgJXBcbiIsIHJicC0+RGF0YVApOwogCiAJLyoKLQkgKiogQ2hlY2sgdGhhdCB3ZSBoYXZlIHNldCBhc3NpZGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhpcworCSAqKiBDaGVjayB0aGF0IHdlIGhhdmUgc2V0IGFzaWRlIGVub3VnaCBtZW1vcnkgZm9yIHRoaXMKIAkgKi8KIAlpZiAocmJwLT5Db3VudCA+IFNJWFRZX0ZPVVJfSykgewogCQlyaW9fZHByaW50ayhSSU9fREVCVUdfQk9PVCwgIlJUQSBCb290IENvZGUgVG9vIExhcmdlIVxuIik7CkBAIC0yOTMsNyArMjkzLDcgQEAKIAkJLyoKIAkJICoqICAgICAgICAgICAgICAgICAgICAgUyBUIE8gUCAhCiAJCSAqKgotCQkgKiogVXB0byB0aGlzIHBvaW50IHRoZSBjb2RlIGhhcyBiZWVuIGZhaXJseSByYXRpb25hbCwgYW5kIHBvc3NpYmx5CisJCSAqKiBVcCB0byB0aGlzIHBvaW50IHRoZSBjb2RlIGhhcyBiZWVuIGZhaXJseSByYXRpb25hbCwgYW5kIHBvc3NpYmx5CiAJCSAqKiBldmVuIHN0cmFpZ2h0IGZvcndhcmQuIFdoYXQgZm9sbG93cyBpcyBhIHBpbGUgb2YgY3J1ZCB0aGF0IHdpbGwKIAkJICoqIG1hZ2ljYWxseSB0dXJuIGludG8gc2l4IGJ5dGVzIG9mIHRyYW5zcHV0ZXIgYXNzZW1ibGVyLiBOb3JtYWxseQogCQkgKiogeW91IHdvdWxkIGV4cGVjdCBhbiBhcnJheSBvciBzb21ldGhpbmcsIGJ1dCwgYmVpbmcgbWUsIEkgaGF2ZQpAQCAtNDE5LDcgKzQxOSw3IEBACiAJCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiU2V0IGNvbnRyb2wgcG9ydFxuIik7CiAKIAkJLyoKLQkJICoqIE5vdywgd2FpdCBmb3IgdXB0byBmaXZlIHNlY29uZHMgZm9yIHRoZSBUcCB0byBzZXR1cCB0aGUgcGFybW1hcAorCQkgKiogTm93LCB3YWl0IGZvciB1cCB0byBmaXZlIHNlY29uZHMgZm9yIHRoZSBUcCB0byBzZXR1cCB0aGUgcGFybW1hcAogCQkgKiogcG9pbnRlcjoKIAkJICovCiAJCWZvciAod2FpdF9jb3VudCA9IDA7ICh3YWl0X2NvdW50IDwgcC0+UklPQ29uZi5TdGFydHVwVGltZSkgJiYgKHJlYWR3KCZIb3N0UC0+X19QYXJtTWFwUikgPT0gT2xkUGFybU1hcCk7IHdhaXRfY291bnQrKykgewpAQCAtNDc1LDcgKzQ3NSw3IEBACiAKIAkJLyoKIAkJICoqIG5vdyB3YWl0IGZvciB0aGUgY2FyZCB0byBzZXQgYWxsIHRoZSBwYXJtbWFwLT5YWFggc3R1ZmYKLQkJICoqIHRoaXMgaXMgYSB3YWl0IG9mIHVwdG8gdHdvIHNlY29uZHMuLi4uCisJCSAqKiB0aGlzIGlzIGEgd2FpdCBvZiB1cCB0byB0d28gc2Vjb25kcy4uLi4KIAkJICovCiAJCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiTG9va2luZyBmb3IgaW5pdF9kb25lIC0gJWQgdGlja3NcbiIsIHAtPlJJT0NvbmYuU3RhcnR1cFRpbWUpOwogCQlIb3N0UC0+dGltZW91dF9pZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9jbWQuYwppbmRleCBmMTIxMzU3Li42MWVmZDUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2NtZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvY21kLmMKQEAgLTg2Myw3ICs4NjMsNyBAQAogCSAqKiBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB3cml0ZSBxdWV1ZSBpbnRvIHRoZSB0cmFuc21pdCBwYWNrZXRzCiAJICoqIChhZGRfdHJhbnNtaXQpIGFuZCBubyBmdXJ0aHVyIHRyYW5zbWl0IGludGVycnVwdCB3aWxsIGJlIHNlbnQgZm9yIHRoYXQKIAkgKiogZGF0YS4gVGhlIG5leHQgaW50ZXJydXB0IHdpbGwgb2NjdXIgdXAgdG8gNTAwbXMgbGF0ZXIgKFJJT0ludHIgaXMgY2FsbGVkCi0JICoqIHR3aWNlIGEgc2Vjb25kIGFzIGEgc2FmdGV5IG1lYXN1cmUpLiBUaGlzIHdhcyB0aGUgY2FzZSB3aGVuIGtlcm1pdCB3YXMKKwkgKiogdHdpY2UgYSBzZWNvbmQgYXMgYSBzYWZldHkgbWVhc3VyZSkuIFRoaXMgd2FzIHRoZSBjYXNlIHdoZW4ga2VybWl0IHdhcwogCSAqKiB1c2VkIHRvIHNlbmQgZGF0YSBpbnRvIGEgUklPIHBvcnQuIEFmdGVyIGVhY2ggcGFja2V0IHdhcyBzZW50LCBUQ0ZMU0gKIAkgKiogd2FzIGNhbGxlZCB0byBmbHVzaCB0aGUgcmVhZCBxdWV1ZSBwcmVlbXB0aXZlbHkuIFBvcnRQLT5JblVzZSB3YXMKIAkgKiogaW5jcmVtZW50ZWQsIHRoZXJlYnkgYmxvY2tpbmcgdGhlIDYgYnl0ZSBhY2tub3dsZWRnZW1lbnQgcGFja2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3JvdXRlLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3JvdXRlLmMKaW5kZXggZjliOTM2YS4uODc1NzM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9yb3V0ZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvcm91dGUuYwpAQCAtNDUwLDcgKzQ1MCw3IEBACiAJCSAqKiB3ZSByZXNldCB0aGUgdW5pdCwgYmVjYXVzZSB3ZSBkaWRuJ3QgYm9vdCBpdC4KIAkJICoqIEhvd2V2ZXIsIGlmIHRoZSB0YWJsZSBpcyBmdWxsLCBpdCBjb3VsZCBiZSB0aGF0IHdlIGRpZCBib290CiAJCSAqKiB0aGlzIHVuaXQsIGFuZCBzbyB3ZSB3b24ndCByZWJvb3QgaXQsIGJlY2F1c2UgaXQgaXNuJ3QgcmVhbGx5Ci0JCSAqKiBhbGwgdGhhdCBkaXNhc3Rlcm91cyB0byBrZWVwIHRoZSBvbGQgYmlucyBpbiBtb3N0IGNhc2VzLiBUaGlzCisJCSAqKiBhbGwgdGhhdCBkaXNhc3Ryb3VzIHRvIGtlZXAgdGhlIG9sZCBiaW5zIGluIG1vc3QgY2FzZXMuIFRoaXMKIAkJICoqIGlzIGEgcmF0aGVyIHRhY2t5IGZlYXR1cmUsIGJ1dCB3ZSBhcmUgb24gdGhlIGVkZ2Ugb2YgcmVhbGxpdHkKIAkJICoqIGhlcmUsIGJlY2F1c2UgdGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgc29tZW9uZSBoYXMgY29ubmVjdGVkCiAJCSAqKiAxNitNQVhfRVhUUkFfVU5JVFMgb250byBvbmUgaG9zdC4KQEAgLTY3OCw3ICs2NzgsNyBAQAogCiAJSG9zdFAtPk1hcHBpbmdbVW5pdElkXS5GbGFncyAmPSB+QkVFTl9IRVJFOwogCi0JLyogcmlvX2RwcmludChSSU9fREVCVUdfUk9VVEUsICgiVW5pdCAlZCBET0VTTlQgS05PVyBUSEUgSE9TVCFcbiIsIFVuaXRJZCkpOyAqLworCS8qIHJpb19kcHJpbnQoUklPX0RFQlVHX1JPVVRFLCAoIlVuaXQgJWQgRE9FU04nVCBLTk9XIFRIRSBIT1NUIVxuIiwgVW5pdElkKSk7ICovCiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvdHR5LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3R0eS5jCmluZGV4IDhhOTAzOTMuLmU3ZTk5MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvdHR5LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW90dHkuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiAJfQogCiAJLyoKLQkgKiogR3JhYiBwb2ludGVyIHRvIHRoZSBwb3J0IHN0dWN0dXJlCisJICoqIEdyYWIgcG9pbnRlciB0byB0aGUgcG9ydCBzdHJ1Y3R1cmUKIAkgKi8KIAlQb3J0UCA9IHAtPlJJT1BvcnRwW1N5c1BvcnRdOwkvKiBHZXQgY29udHJvbCBzdHJ1YyAqLwogCXJpb19kcHJpbnRrKFJJT19ERUJVR19UVFksICJQb3J0UDogJXBcbiIsIFBvcnRQKTsKQEAgLTE2MSw3ICsxNjEsNyBAQAogCX0KIAogCS8qCi0JICoqIElmIHRoZSBSVEEgaGFzIG5vdCBib290ZWQgeWV0IGFuZCB0aGUgdXNlciBoYXMgY2hvb3NlbiB0byBibG9jaworCSAqKiBJZiB0aGUgUlRBIGhhcyBub3QgYm9vdGVkIHlldCBhbmQgdGhlIHVzZXIgaGFzIGNob3NlbiB0byBibG9jawogCSAqKiB1bnRpbCB0aGUgUlRBIGlzIHByZXNlbnQgdGhlbiB3ZSBtdXN0IHNwaW4gaGVyZSB3YWl0aW5nIGZvcgogCSAqKiB0aGUgUlRBIHRvIGJvb3QuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvc3guYyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jCmluZGV4IDEyOTE0NjIuLjRmOTRhYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jCkBAIC0xNTgsMTMgKzE1OCwxMyBAQAogICogUmVhZHlpbmcgZm9yIHJlbGVhc2Ugb24gMi4wLnggKHNvcnJ5IERhdmlkLCAxLjAxIGJlY29tZXMgMS4xIGZvciBSQ1MpLiAKICAqCiAgKiBSZXZpc2lvbiAwLjEyICAxOTk5LzAzLzI4IDA5OjIwOjEwICB3b2xmZgotICogRml4ZWQgcHJvYmxlbSBpbiAwLjExLCBjb250aW51ZWluZyBjbGVhbnVwLgorICogRml4ZWQgcHJvYmxlbSBpbiAwLjExLCBjb250aW51aW5nIGNsZWFudXAuCiAgKgogICogUmV2aXNpb24gMC4xMSAgMTk5OS8wMy8yOCAwODo0Njo0NCAgd29sZmYKICAqIGNsZWFudXAuIE5vdCBnb29kLgogICoKICAqIFJldmlzaW9uIDAuMTAgIDE5OTkvMDMvMjggMDg6MDk6NDMgIHdvbGZmCi0gKiBGaXhlZCBsb29zaW5nIGNoYXJhY3RlcnMgb24gY2xvc2UuCisgKiBGaXhlZCBsb3NpbmcgY2hhcmFjdGVycyBvbiBjbG9zZS4KICAqCiAgKiBSZXZpc2lvbiAwLjkgIDE5OTkvMDMvMjEgMjI6NTI6MDEgIHdvbGZmCiAgKiBQb3J0ZWQgYmFjayB0byAyLjIuLi4uIChtaW5vciB0aGluZ3MpCkBAIC0xNTg4LDcgKzE1ODgsNyBAQAogI2RlZmluZSBSMAkJaWYgKHJlYWRfc3hfYnl0ZShib2FyZCwgaSkgIT0gMHg1NSkgcmV0dXJuIDEKICNkZWZpbmUgUjEJCWlmIChyZWFkX3N4X2J5dGUoYm9hcmQsIGkpICE9IDB4YWEpIHJldHVybiAxCiAKLS8qIFRoaXMgbWVtdGVzdCB0YWtlcyBhIGh1bWFuLW5vdGljYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAorLyogVGhpcyBtZW10ZXN0IHRha2VzIGEgaHVtYW4tbm90aWNlYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAogICAgb25jZSBhIGJvb3QsIHNvIEkgZ3Vlc3MgdGhhdCBpdCBpcyB3b3J0aCBpdC4gKi8KIHN0YXRpYyBpbnQgZG9fbWVtdGVzdChzdHJ1Y3Qgc3hfYm9hcmQgKmJvYXJkLCBpbnQgbWluLCBpbnQgbWF4KQogewpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAKICNkZWZpbmUgUjEJCWlmIChyZWFkX3N4X3dvcmQoYm9hcmQsIGkpICE9IDB4YWE1NSkgcmV0dXJuIDEKIAogI2lmIDAKLS8qIFRoaXMgbWVtdGVzdCB0YWtlcyBhIGh1bWFuLW5vdGljYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAorLyogVGhpcyBtZW10ZXN0IHRha2VzIGEgaHVtYW4tbm90aWNlYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAogICAgb25jZSBhIGJvb3QsIHNvIEkgZ3Vlc3MgdGhhdCBpdCBpcyB3b3J0aCBpdC4gKi8KIHN0YXRpYyBpbnQgZG9fbWVtdGVzdF93KHN0cnVjdCBzeF9ib2FyZCAqYm9hcmQsIGludCBtaW4sIGludCBtYXgpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcm0uaCBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oCmluZGV4IGZiOWI0MjQuLmEzMzk0MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oCkBAIC0xMzEsNyArMTMxLDcgQEAKIAl1MzIgcHJlX2FkZDsJLyogRGVzdGluYXRpb24gZm9ybWF0OiAqLwogCXUzMiBiYWNrZ3JvdW5kOwkvKiBEZXN0aW5hdGlvbiBhZGQgKi8KIAl1MzIgZHN0X2J1ZmZlcjsJLyogRGVzdGluYXRpb24gYnVmZmVyLiBJbmRleCBpbnRvIGJ1ZmZlcl9saXN0ICovCi0JdTMyIGFyZzA7CQkvKiBSZWxvYy1vcCBkZXBlbmRhbnQgKi8KKwl1MzIgYXJnMDsJCS8qIFJlbG9jLW9wIGRlcGVuZGVudCAqLwogCXUzMiBhcmcxOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYwppbmRleCA0NGNkMDk1Li5kMDFkNDVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYwpAQCAtNTYxLDcgKzU2MSw3IEBACiAJCWtmcmVlKGRldl9wcml2KTsKIAkJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CiAKLQkJLypkZXN0b3J5IFZCVCBkYXRhKi8KKwkJLypkZXN0cm95IFZCVCBkYXRhKi8KIAkJcHNiX2ludGVsX2Rlc3Ryb3lfYmlvcyhkZXYpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfYmlvcy5jIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfYmlvcy5jCmluZGV4IGY1YmNkMTEuLjQ4YWM4YmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX2Jpb3MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9iaW9zLmMKQEAgLTI3MSw3ICsyNzEsNyBAQAogfQogCiAvKioKLSAqIERlc3RvcnkgYW5kIGZyZWUgVkJUIGRhdGEKKyAqIERlc3Ryb3kgYW5kIGZyZWUgVkJUIGRhdGEKICAqLwogdm9pZCBwc2JfaW50ZWxfZGVzdHJveV9iaW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvLmMKaW5kZXggNzMxYTVhMi4uMWQyYmIwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2by5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX3Nkdm8uYwpAQCAtNTczLDcgKzU3Myw3IEBACiAJLyogTWFrZSBhbGwgZmllbGRzIG9mIHRoZSAgYXJncy9yZXQgdG8gemVybyAqLwogCW1lbXNldChieUFyZ3MsIDAsIHNpemVvZihieUFyZ3MpKTsKIAotCS8qIEZpbGwgdXAgdGhlIGFyZ3VlbWVudCB2YWx1ZXM7ICovCisJLyogRmlsbCB1cCB0aGUgYXJndW1lbnQgdmFsdWVzOyAqLwogCWJ5QXJnc1swXSA9ICh1OCkgKGluMG91dHB1dG1hc2sgJiAweEZGKTsKIAlieUFyZ3NbMV0gPSAodTgpICgoaW4wb3V0cHV0bWFzayA+PiA4KSAmIDB4RkYpOwogCWJ5QXJnc1syXSA9ICh1OCkgKGluMW91dHB1dG1hc2sgJiAweEZGKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX3Nkdm9fcmVncy5oIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmgKaW5kZXggYTFkMTQ3NS4uYzcxMDdhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmgKQEAgLTIxNyw3ICsyMTcsNyBAQAogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAKIC8qKgotICogVGFrZXMgYSBzdHJ1Y3QgcHNiX2ludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIHdoaWNoIG91dHB1dHMgYXJlIHRhcmdldHRlZCBieQorICogVGFrZXMgYSBzdHJ1Y3QgcHNiX2ludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIHdoaWNoIG91dHB1dHMgYXJlIHRhcmdldGVkIGJ5CiAgKiBmdXR1cmUgb3V0cHV0IGNvbW1hbmRzLgogICoKICAqIEFmZmVjdGVkIGNvbW1hbmRzIGluY2x1ZSBTRVRfT1VUUFVUX1RJTUlOR1NfUEFSVFsxMl0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl90dG1fZmVuY2VfdXNlci5oIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfdHRtX2ZlbmNlX3VzZXIuaAppbmRleCBmYzEzZjg5Li43NjJhMDU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl90dG1fZmVuY2VfdXNlci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX3R0bV9mZW5jZV91c2VyLmgKQEAgLTEzMCw3ICsxMzAsNyBAQAogfTsKIAogLyoKLSAqIElvY3RsIG9mZnNldHMgZnJvbWUgZXh0ZW5zdGlvbiBzdGFydC4KKyAqIElvY3RsIG9mZnNldHMgZnJvbSBleHRlbnN0aW9uIHN0YXJ0LgogICovCiAKICNkZWZpbmUgVFRNX0ZFTkNFX1NJR05BTEVEIDB4MDEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LnR4dCBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LnR4dAppbmRleCAwNmE3NmRhLi45ZGIxZjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy50eHQKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDcudHh0CkBAIC0yLDcgKzIsNyBAQAogCiBQZXRlIEViZXJsZWluIDxwZXRlQHNlbnNvcmF5LmNvbT4KIAotVGhlIGRyaXZlciB3YXMgb3JpZ25hbGx5IHJlbGVhc2VkIHVuZGVyIHRoZSBHUEwgYW5kIGlzIGN1cnJlbnRseSBob3N0ZWQgYXQ6CitUaGUgZHJpdmVyIHdhcyBvcmlnaW5hbGx5IHJlbGVhc2VkIHVuZGVyIHRoZSBHUEwgYW5kIGlzIGN1cnJlbnRseSBob3N0ZWQgYXQ6CiBodHRwOi8vbmlrb3NhcGkub3JnL3dpa2kvaW5kZXgucGhwL1dJU19HbzcwMDdfTGludXhfZHJpdmVyCiBUaGUgZ283MDA3IGZpcm13YXJlIGNhbiBiZSBhY3F1aXJlZCBmcm9tIHRoZSBwYWNrYWdlIG9uIHRoZSBzaXRlIGFib3ZlLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvYmxrdnNjX2Rydi5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2Jsa3ZzY19kcnYuYwppbmRleCBhZjc4OTkzLi42OGFkMTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvYmxrdnNjX2Rydi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9ibGt2c2NfZHJ2LmMKQEAgLTg5NCw3ICs4OTQsNyBAQAogCiAvKgogICogV2UgYnJlYWsgdGhlIHJlcXVlc3QgaW50byAxIG9yIG1vcmUgYmxrdnNjX3JlcXVlc3RzIGFuZCBzdWJtaXQKLSAqIHRoZW0uICBJZiB3ZSBjYW50IHN1Ym1pdCB0aGVtIGFsbCwgd2UgcHV0IHRoZW0gb24gdGhlCisgKiB0aGVtLiAgSWYgd2UgY2FuJ3Qgc3VibWl0IHRoZW0gYWxsLCB3ZSBwdXQgdGhlbSBvbiB0aGUKICAqIHBlbmRpbmdfbGlzdC4gVGhlIGJsa3ZzY19yZXF1ZXN0KCkgd2lsbCB3b3JrIG9uIHRoZSBwZW5kaW5nX2xpc3QuCiAgKi8KIHN0YXRpYyBpbnQgYmxrdnNjX2RvX3JlcXVlc3Qoc3RydWN0IGJsb2NrX2RldmljZV9jb250ZXh0ICpibGtkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvY2hhbm5lbC5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2NoYW5uZWwuYwppbmRleCA3NzVhNTJhLi5mN2NlN2QyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvY2hhbm5lbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9jaGFubmVsLmMKQEAgLTgxLDE0ICs4MSwxNCBAQAogCiAJaWYgKGNoYW5uZWwtPm9mZmVybXNnLm1vbml0b3JfYWxsb2NhdGVkKSB7CiAJCS8qIEVhY2ggdTMyIHJlcHJlc2VudHMgMzIgY2hhbm5lbHMgKi8KLQkJc2V0X2JpdChjaGFubmVsLT5vZmZlcm1zZy5jaGlsZF9yZWxpZCAmIDMxLAorCQlzeW5jX3NldF9iaXQoY2hhbm5lbC0+b2ZmZXJtc2cuY2hpbGRfcmVsaWQgJiAzMSwKIAkJCSh1bnNpZ25lZCBsb25nICopIHZtYnVzX2Nvbm5lY3Rpb24uc2VuZF9pbnRfcGFnZSArCiAJCQkoY2hhbm5lbC0+b2ZmZXJtc2cuY2hpbGRfcmVsaWQgPj4gNSkpOwogCiAJCW1vbml0b3JwYWdlID0gdm1idXNfY29ubmVjdGlvbi5tb25pdG9yX3BhZ2VzOwogCQltb25pdG9ycGFnZSsrOyAvKiBHZXQgdGhlIGNoaWxkIHRvIHBhcmVudCBtb25pdG9yIHBhZ2UgKi8KIAotCQlzZXRfYml0KGNoYW5uZWwtPm1vbml0b3JfYml0LAorCQlzeW5jX3NldF9iaXQoY2hhbm5lbC0+bW9uaXRvcl9iaXQsCiAJCQkodW5zaWduZWQgbG9uZyAqKSZtb25pdG9ycGFnZS0+dHJpZ2dlcl9ncm91cAogCQkJCQlbY2hhbm5lbC0+bW9uaXRvcl9ncnBdLnBlbmRpbmcpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAKIAogCWlmIChDaGFubmVsLT5vZmZlcm1zZy5tb25pdG9yX2FsbG9jYXRlZCkgewogCQkvKiBFYWNoIHUzMiByZXByZXNlbnRzIDMyIGNoYW5uZWxzICovCi0JCWNsZWFyX2JpdChDaGFubmVsLT5vZmZlcm1zZy5jaGlsZF9yZWxpZCAmIDMxLAorCQlzeW5jX2NsZWFyX2JpdChDaGFubmVsLT5vZmZlcm1zZy5jaGlsZF9yZWxpZCAmIDMxLAogCQkJICAodW5zaWduZWQgbG9uZyAqKXZtYnVzX2Nvbm5lY3Rpb24uc2VuZF9pbnRfcGFnZSArCiAJCQkgIChDaGFubmVsLT5vZmZlcm1zZy5jaGlsZF9yZWxpZCA+PiA1KSk7CiAKQEAgLTExMiw3ICsxMTIsNyBAQAogCQkJdm1idXNfY29ubmVjdGlvbi5tb25pdG9yX3BhZ2VzOwogCQltb25pdG9yUGFnZSsrOyAvKiBHZXQgdGhlIGNoaWxkIHRvIHBhcmVudCBtb25pdG9yIHBhZ2UgKi8KIAotCQljbGVhcl9iaXQoQ2hhbm5lbC0+bW9uaXRvcl9iaXQsCisJCXN5bmNfY2xlYXJfYml0KENoYW5uZWwtPm1vbml0b3JfYml0LAogCQkJICAodW5zaWduZWQgbG9uZyAqKSZtb25pdG9yUGFnZS0+dHJpZ2dlcl9ncm91cAogCQkJCQlbQ2hhbm5lbC0+bW9uaXRvcl9ncnBdLlBlbmRpbmcpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9jaGFubmVsX21nbXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9odi9jaGFubmVsX21nbXQuYwppbmRleCBiYzAzOTNhLi4wNmI1NzMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvY2hhbm5lbF9tZ210LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2NoYW5uZWxfbWdtdC5jCkBAIC0xNjYsNyArMTY2LDcgQEAKICAqIGZyb20gSHlwZXItVi4gVGhpcyBzdHViIHJlc3BvbmRzIHRvIHRoZSBkZWZhdWx0IG5lZ290aWF0ZSBtZXNzYWdlcwogICogdGhhdCBjb21lIGluIGZvciBldmVyeSBub24gSURFL1NDU0kvTmV0d29yayByZXF1ZXN0LgogICogVGhpcyBiZWhhdmlvciBpcyBub3JtYWxseSBvdmVyd3JpdHRlbiBpbiB0aGUgaHZfdXRpbHMgZHJpdmVyLiBUaGF0Ci0gKiBkcml2ZXIgaGFuZGxlcyByZXF1ZXN0cyBsaWtlIGdyYWNlZnVsbCBzaHV0ZG93biwgaGVhcnRiZWF0cyBldGMuCisgKiBkcml2ZXIgaGFuZGxlcyByZXF1ZXN0cyBsaWtlIGdyYWNlZnVsIHNodXRkb3duLCBoZWFydGJlYXRzIGV0Yy4KICAqCiAgKiBNYWlubHkgdXNlZCBieSBIeXBlci1WIGRyaXZlcnMuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9jb25uZWN0aW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvY29ubmVjdGlvbi5jCmluZGV4IDQ0YjIwM2IuLmFmYzgxMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9jb25uZWN0aW9uLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2Nvbm5lY3Rpb24uYwpAQCAtMjk2LDcgKzI5Niw3IEBACiAJCWZvciAoZHdvcmQgPSAwOyBkd29yZCA8IG1heGR3b3JkOyBkd29yZCsrKSB7CiAJCQlpZiAocmVjdl9pbnRfcGFnZVtkd29yZF0pIHsKIAkJCQlmb3IgKGJpdCA9IDA7IGJpdCA8IDMyOyBiaXQrKykgewotCQkJCQlpZiAodGVzdF9hbmRfY2xlYXJfYml0KGJpdCwKKwkJCQkJaWYgKHN5bmNfdGVzdF9hbmRfY2xlYXJfYml0KGJpdCwKIAkJCQkJCSh1bnNpZ25lZCBsb25nICopCiAJCQkJCQkmcmVjdl9pbnRfcGFnZVtkd29yZF0pKSB7CiAJCQkJCQlyZWxpZCA9IChkd29yZCA8PCA1KSArIGJpdDsKQEAgLTMzOCw3ICszMzgsNyBAQAogaW50IHZtYnVzX3NldF9ldmVudCh1MzIgY2hpbGRfcmVsaWQpCiB7CiAJLyogRWFjaCB1MzIgcmVwcmVzZW50cyAzMiBjaGFubmVscyAqLwotCXNldF9iaXQoY2hpbGRfcmVsaWQgJiAzMSwKKwlzeW5jX3NldF9iaXQoY2hpbGRfcmVsaWQgJiAzMSwKIAkJKHVuc2lnbmVkIGxvbmcgKil2bWJ1c19jb25uZWN0aW9uLnNlbmRfaW50X3BhZ2UgKwogCQkoY2hpbGRfcmVsaWQgPj4gNSkpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHYuYyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jCmluZGV4IDJkNDkyYWQuLjBiMDZmNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jCkBAIC0zNyw3ICszNyw3IEBACiAKIC8qCiAgKiBxdWVyeV9oeXBlcnZpc29yX3ByZXNlbmNlCi0gKiAtIFF1ZXJ5IHRoZSBjcHVpZCBmb3IgcHJlc2Vuc2Ugb2Ygd2luZG93cyBoeXBlcnZpc29yCisgKiAtIFF1ZXJ5IHRoZSBjcHVpZCBmb3IgcHJlc2VuY2Ugb2Ygd2luZG93cyBoeXBlcnZpc29yCiAgKi8KIHN0YXRpYyBpbnQgcXVlcnlfaHlwZXJ2aXNvcl9wcmVzZW5jZSh2b2lkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2FwaS5oIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2FwaS5oCmluZGV4IDcxMTRmY2UuLjQzYTcyMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9hcGkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfYXBpLmgKQEAgLTUzLDE0ICs1MywxNCBAQAogCiAvKgogICogSFZfU1RBVFVTX0lOVkFMSURfQUxJR05NRU5UCi0gKiBUaGUgaHlwZXJ2aXNvciBjb3VsZCBub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGJlYWN1c2UgYSBwYXJhbWV0ZXIgaGFzIGFuCisgKiBUaGUgaHlwZXJ2aXNvciBjb3VsZCBub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGJlY2F1c2UgYSBwYXJhbWV0ZXIgaGFzIGFuCiAgKiBpbnZhbGlkIGFsaWdubWVudC4KICAqLwogI2RlZmluZSBIVl9TVEFUVVNfSU5WQUxJRF9BTElHTk1FTlQJCQkoKHUxNikweDAwMDQpCiAKIC8qCiAgKiBIVl9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIKLSAqIFRoZSBoeXBlcnZpc29yIGNvdWxkIG5vdCBwZXJmb3JtIHRoZSBvcGVyYXRpb24gYmVhY3VzZSBhbiBpbnZhbGlkIHBhcmFtZXRlcgorICogVGhlIGh5cGVydmlzb3IgY291bGQgbm90IHBlcmZvcm0gdGhlIG9wZXJhdGlvbiBiZWNhdXNlIGFuIGludmFsaWQgcGFyYW1ldGVyCiAgKiB3YXMgc3BlY2lmaWVkLgogICovCiAjZGVmaW5lIEhWX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUgkJCSgodTE2KTB4MDAwNSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9rdnAuaCBiL2RyaXZlcnMvc3RhZ2luZy9odi9odl9rdnAuaAppbmRleCBlMDY5ZjU5Li44YzQwMmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfa3ZwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2t2cC5oCkBAIC0zNiw3ICszNiw3IEBACiAgKiByZWdpc3RyeS4KICAqCiAgKiBOb3RlOiAgVGhpcyB2YWx1ZSBpcyB1c2VkIGluIGRlZmluaW5nIHRoZSBLVlAgZXhjaGFuZ2UgbWVzc2FnZSAtIHRoaXMgdmFsdWUKLSAqIGNhbm5vdCBiZSBtb2RpZmllZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgbWVzc2FnZSBzaXplIGFuZCBjb21wYXRhYmlsaXR5LgorICogY2Fubm90IGJlIG1vZGlmaWVkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBtZXNzYWdlIHNpemUgYW5kIGNvbXBhdGliaWxpdHkuCiAgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9tb3VzZS5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X21vdXNlLmMKaW5kZXggNTAxNDdmOC4uMTE4YzdiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X21vdXNlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X21vdXNlLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgogI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CkBAIC0yMyw2ICsyNCw3IEBACiAjaW5jbHVkZSA8bGludXgvaGlkZGV2Lmg+CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvZG1pLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KIAogI2luY2x1ZGUgImh2X2FwaS5oIgogI2luY2x1ZGUgImxvZ2dpbmcuaCIKQEAgLTM3NCw3ICszNzYsNyBAQAogCSAgICAgICBkZXNjLT5kZXNjWzBdLndEZXNjcmlwdG9yTGVuZ3RoKTsKIAogCS8qIFNlbmQgdGhlIGFjayAqLwotCW1lbXNldCgmYWNrLCBzaXplb2Yoc3RydWN0IG1vdXNldnNjX3BydF9tc2cpLCAwKTsKKwltZW1zZXQoJmFjaywgMCwgc2l6ZW9mKHN0cnVjdCBtb3VzZXZzY19wcnRfbXNnKSk7CiAKIAlhY2sudHlwZSA9IFBpcGVNZXNzYWdlRGF0YTsKIAlhY2suc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc3ludGhoaWRfZGV2aWNlX2luZm9fYWNrKTsKQEAgLTU5NSw3ICs1OTcsNyBAQAogCS8qCiAJICogTm93LCBpbml0aWF0ZSB0aGUgdnNjL3ZzcCBpbml0aWFsaXphdGlvbiBwcm90b2NvbCBvbiB0aGUgb3BlbiBjaGFubmVsCiAJICovCi0JbWVtc2V0KHJlcXVlc3QsIHNpemVvZihzdHJ1Y3QgbW91c2V2c2NfcHJ0X21zZyksIDApOworCW1lbXNldChyZXF1ZXN0LCAwLCBzaXplb2Yoc3RydWN0IG1vdXNldnNjX3BydF9tc2cpKTsKIAogCXJlcXVlc3QtPnR5cGUgPSBQaXBlTWVzc2FnZURhdGE7CiAJcmVxdWVzdC0+c2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc3ludGhoaWRfcHJvdG9jb2xfcmVxdWVzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfdXRpbC5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X3V0aWwuYwppbmRleCA0NzkyZjJjLi4yZGYxNTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfdXRpbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odl91dGlsLmMKQEAgLTgwLDcgKzgwLDcgQEAKIAkJCQlleGVjdXRlX3NodXRkb3duID0gdHJ1ZTsKIAogCQkJCURQUklOVF9JTkZPKFZNQlVTLCAiU2h1dGRvd24gcmVxdWVzdCByZWNlaXZlZCAtIgotCQkJCQkgICAgIiBncmFjZWZ1bGwgc2h1dGRvd24gaW5pdGlhdGVkIik7CisJCQkJCSAgICAiIGdyYWNlZnVsIHNodXRkb3duIGluaXRpYXRlZCIpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQlpY21zZ2hkcnAtPnN0YXR1cyA9IEhWX0VfRkFJTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9uZXR2c2NfZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvbmV0dnNjX2Rydi5jCmluZGV4IDJkNDBmNWYuLjMzOTczNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9uZXR2c2NfZHJ2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L25ldHZzY19kcnYuYwpAQCAtNDYsNiArNDYsNyBAQAogCS8qIHBvaW50IGJhY2sgdG8gb3VyIGRldmljZSBjb250ZXh0ICovCiAJc3RydWN0IGh2X2RldmljZSAqZGV2aWNlX2N0eDsKIAl1bnNpZ25lZCBsb25nIGF2YWlsOworCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogfTsKIAogCkBAIC0yMTksNiArMjIwLDcgQEAKIAkJCQkgICAgICAgdW5zaWduZWQgaW50IHN0YXR1cykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ID0gZGV2X2dldF9kcnZkYXRhKCZkZXZpY2Vfb2JqLT5kZXZpY2UpOworCXN0cnVjdCBuZXRfZGV2aWNlX2NvbnRleHQgKm5kZXZfY3R4OwogCiAJaWYgKCFuZXQpIHsKIAkJRFBSSU5UX0VSUihORVRWU0NfRFJWLCAiZ290IGxpbmsgc3RhdHVzIGJ1dCBuZXQgZGV2aWNlICIKQEAgLTIzMCw2ICsyMzIsOCBAQAogCQluZXRpZl9jYXJyaWVyX29uKG5ldCk7CiAJCW5ldGlmX3dha2VfcXVldWUobmV0KTsKIAkJbmV0aWZfbm90aWZ5X3BlZXJzKG5ldCk7CisJCW5kZXZfY3R4ID0gbmV0ZGV2X3ByaXYobmV0KTsKKwkJc2NoZWR1bGVfd29yaygmbmRldl9jdHgtPndvcmspOwogCX0gZWxzZSB7CiAJCW5ldGlmX2NhcnJpZXJfb2ZmKG5ldCk7CiAJCW5ldGlmX3N0b3BfcXVldWUobmV0KTsKQEAgLTMyOCw2ICszMzIsMjUgQEAKIAkubmRvX3NldF9tYWNfYWRkcmVzcyA9CQlldGhfbWFjX2FkZHIsCiB9OwogCisvKgorICogU2VuZCBHQVJQIHBhY2tldCB0byBuZXR3b3JrIHBlZXJzIGFmdGVyIG1pZ3JhdGlvbnMuCisgKiBBZnRlciBRdWljayBNaWdyYXRpb24sIHRoZSBuZXR3b3JrIGlzIG5vdCBpbW1lZGlhdGVseSBvcGVyYXRpb25hbCBpbiB0aGUKKyAqIGN1cnJlbnQgY29udGV4dCB3aGVuIHJlY2VpdmluZyBSTkRJU19TVEFUVVNfTUVESUFfQ09OTkVDVCBldmVudC4gU28sIGFkZAorICogYW5vdGhlciBuZXRpZl9ub3RpZnlfcGVlcnMoKSBpbnRvIGEgc2NoZWR1bGVkIHdvcmssIG90aGVyd2lzZSBHQVJQIHBhY2tldAorICogd2lsbCBub3QgYmUgc2VudCBhZnRlciBxdWljayBtaWdyYXRpb24sIGFuZCBjYXVzZSBuZXR3b3JrIGRpc2Nvbm5lY3Rpb24uCisgKi8KK3N0YXRpYyB2b2lkIG5ldHZzY19zZW5kX2dhcnAoc3RydWN0IHdvcmtfc3RydWN0ICp3KQoreworCXN0cnVjdCBuZXRfZGV2aWNlX2NvbnRleHQgKm5kZXZfY3R4OworCXN0cnVjdCBuZXRfZGV2aWNlICpuZXQ7CisKKwltc2xlZXAoMjApOworCW5kZXZfY3R4ID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBuZXRfZGV2aWNlX2NvbnRleHQsIHdvcmspOworCW5ldCA9IGRldl9nZXRfZHJ2ZGF0YSgmbmRldl9jdHgtPmRldmljZV9jdHgtPmRldmljZSk7CisJbmV0aWZfbm90aWZ5X3BlZXJzKG5ldCk7Cit9CisKKwogc3RhdGljIGludCBuZXR2c2NfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlKQogewogCXN0cnVjdCBodl9kcml2ZXIgKmRydiA9CkBAIC0zNTMsNiArMzc2LDcgQEAKIAluZXRfZGV2aWNlX2N0eC0+ZGV2aWNlX2N0eCA9IGRldmljZV9vYmo7CiAJbmV0X2RldmljZV9jdHgtPmF2YWlsID0gcmluZ19zaXplOwogCWRldl9zZXRfZHJ2ZGF0YShkZXZpY2UsIG5ldCk7CisJSU5JVF9XT1JLKCZuZXRfZGV2aWNlX2N0eC0+d29yaywgbmV0dnNjX3NlbmRfZ2FycCk7CiAKIAkvKiBOb3RpZnkgdGhlIG5ldHZzYyBkcml2ZXIgb2YgdGhlIG5ldyBkZXZpY2UgKi8KIAlyZXQgPSBuZXRfZHJ2X29iai0+YmFzZS5kZXZfYWRkKGRldmljZV9vYmosICZkZXZpY2VfaW5mbyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvcm5kaXNfZmlsdGVyLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvcm5kaXNfZmlsdGVyLmMKaW5kZXggZTcxODljZC4uMDQ4Mzc2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L3JuZGlzX2ZpbHRlci5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9ybmRpc19maWx0ZXIuYwpAQCAtNTg1LDcgKzU4NSw3IEBACiAJCXJldCA9IC0xOwogCQlEUFJJTlRfRVJSKE5FVFZTQywgInRpbWVvdXQgYmVmb3JlIHdlIGdvdCBhIHNldCByZXNwb25zZS4uLiIpOwogCQkvKgotCQkgKiBXZSBjYW50IGRlYWxsb2NhdGUgdGhlIHJlcXVlc3Qgc2luY2Ugd2UgbWF5IHN0aWxsIHJlY2VpdmUgYQorCQkgKiBXZSBjYW4ndCBkZWFsbG9jYXRlIHRoZSByZXF1ZXN0IHNpbmNlIHdlIG1heSBzdGlsbCByZWNlaXZlIGEKIAkJICogc2VuZCBjb21wbGV0aW9uIGZvciBpdC4KIAkJICovCiAJCWdvdG8gRXhpdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi90b29scy9odl9rdnBfZGFlbW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvdG9vbHMvaHZfa3ZwX2RhZW1vbi5jCmluZGV4IGY1YTJkZDYuLjMzZjBmMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi90b29scy9odl9rdnBfZGFlbW9uLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L3Rvb2xzL2h2X2t2cF9kYWVtb24uYwpAQCAtMTAyLDIyICsxMDIsMjIgQEAKIHN0YXRpYyBjaGFyIGt2cF9yZWN2X2J1ZmZlcls0MDk2XTsKIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfbmwgYWRkcjsKIAotc3RhdGljIGNoYXIgb3NfbmFtZVsxMDBdOwotc3RhdGljIGNoYXIgb3NfbWFqb3JbNTBdOwotc3RhdGljIGNoYXIgb3NfbWlub3JbNTBdOwotc3RhdGljIGNoYXIgcHJvY2Vzc29yX2FyY2hbNTBdOwotc3RhdGljIGNoYXIgb3NfYnVpbGRbMTAwXTsKK3N0YXRpYyBjaGFyICpvc19uYW1lID0gIiI7CitzdGF0aWMgY2hhciAqb3NfbWFqb3IgPSAiIjsKK3N0YXRpYyBjaGFyICpvc19taW5vciA9ICIiOworc3RhdGljIGNoYXIgKnByb2Nlc3Nvcl9hcmNoOworc3RhdGljIGNoYXIgKm9zX2J1aWxkOwogc3RhdGljIGNoYXIgKmxpY192ZXJzaW9uOworc3RhdGljIHN0cnVjdCB1dHNuYW1lIHV0c19idWY7CiAKIHZvaWQga3ZwX2dldF9vc19pbmZvKHZvaWQpCiB7CiAJRklMRQkqZmlsZTsKLQljaGFyCSplb2w7Ci0Jc3RydWN0IHV0c25hbWUgYnVmOworCWNoYXIJKnAsIGJ1Zls1MTJdOwogCi0JdW5hbWUoJmJ1Zik7Ci0Jc3RyY3B5KG9zX2J1aWxkLCBidWYucmVsZWFzZSk7Ci0Jc3RyY3B5KHByb2Nlc3Nvcl9hcmNoLCBidWYubWFjaGluZSk7CisJdW5hbWUoJnV0c19idWYpOworCW9zX2J1aWxkID0gdXRzX2J1Zi5yZWxlYXNlOworCXByb2Nlc3Nvcl9hcmNoPSB1dHNfYnVmLm1hY2hpbmU7CiAKIAlmaWxlID0gZm9wZW4oIi9ldGMvU3VTRS1yZWxlYXNlIiwgInIiKTsKIAlpZiAoZmlsZSAhPSBOVUxMKQpAQCAtMTMyLDIxICsxMzIsNDYgQEAKIAkvKgogCSAqIFdlIGRvbid0IGhhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9zLgogCSAqLwotCXN0cmNweShvc19uYW1lLCAiTGludXgiKTsKLQlzdHJjcHkob3NfbWFqb3IsICIwIik7Ci0Jc3RyY3B5KG9zX21pbm9yLCAiMCIpOworCW9zX25hbWUgPSB1dHNfYnVmLnN5c25hbWU7CiAJcmV0dXJuOwogCiBrdnBfb3NpbmZvX2ZvdW5kOgotCWZnZXRzKG9zX25hbWUsIDk5LCBmaWxlKTsKLQllb2wgPSBpbmRleChvc19uYW1lLCAnXG4nKTsKLQkqZW9sID0gJ1wwJzsKLQlmZ2V0cyhvc19tYWpvciwgNDksIGZpbGUpOwotCWVvbCA9IGluZGV4KG9zX21ham9yLCAnXG4nKTsKLQkqZW9sID0gJ1wwJzsKLQlmZ2V0cyhvc19taW5vciwgNDksIGZpbGUpOwotCWVvbCA9IGluZGV4KG9zX21pbm9yLCAnXG4nKTsKLQkqZW9sID0gJ1wwJzsKKwkvKiB1cCB0byB0aHJlZSBsaW5lcyAqLworCXAgPSBmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmaWxlKTsKKwlpZiAocCkgeworCQlwID0gc3RyY2hyKGJ1ZiwgJ1xuJyk7CisJCWlmIChwKQorCQkJKnAgPSAnXDAnOworCQlwID0gc3RyZHVwKGJ1Zik7CisJCWlmICghcCkKKwkJCWdvdG8gZG9uZTsKKwkJb3NfbmFtZSA9IHA7CisKKwkJLyogc2Vjb25kIGxpbmUgKi8KKwkJcCA9IGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZpbGUpOworCQlpZiAocCkgeworCQkJcCA9IHN0cmNocihidWYsICdcbicpOworCQkJaWYgKHApCisJCQkJKnAgPSAnXDAnOworCQkJcCA9IHN0cmR1cChidWYpOworCQkJaWYgKCFwKQorCQkJCWdvdG8gZG9uZTsKKwkJCW9zX21ham9yID0gcDsKKworCQkJLyogdGhpcmQgbGluZSAqLworCQkJcCA9IGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZpbGUpOworCQkJaWYgKHApICB7CisJCQkJcCA9IHN0cmNocihidWYsICdcbicpOworCQkJCWlmIChwKQorCQkJCQkqcCA9ICdcMCc7CisJCQkJcCA9IHN0cmR1cChidWYpOworCQkJCWlmIChwKQorCQkJCQlvc19taW5vciA9IHA7CisJCQl9CisJCX0KKwl9CisKK2RvbmU6CiAJZmNsb3NlKGZpbGUpOwogCXJldHVybjsKIH0KQEAgLTIwMiw3ICsyMjcsNyBAQAogCiAJCQkvKgogCQkJICogV2Ugb25seSBzdXBwb3J0IEFGX0lORVQgYW5kIEFGX0lORVQ2Ci0JCQkgKiBhbmQgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzIHNlcGVyYXRlZCBieSBhICI7Ii4KKwkJCSAqIGFuZCB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgaXMgc2VwYXJhdGVkIGJ5IGEgIjsiLgogCQkJICovCiAJCQkJc3RydWN0IHNvY2thZGRyX2luNiAqYWRkciA9CiAJCQkJKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgY3VycC0+aWZhX2FkZHI7CkBAIC0yOTMsNyArMzE4LDcgQEAKIAlyZXR1cm4gc2VuZG1zZyhmZCwgJm1lc3NhZ2UsIDApOwogfQogCi1tYWluKHZvaWQpCitpbnQgbWFpbih2b2lkKQogewogCWludCBmZCwgbGVuLCBzb2NrX29wdDsKIAlpbnQgZXJyb3I7CkBAIC0zMDEsOSArMzI2LDEwIEBACiAJc3RydWN0IHBvbGxmZCBwZmQ7CiAJc3RydWN0IG5sbXNnaGRyICppbmNvbWluZ19tc2c7CiAJc3RydWN0IGNuX21zZwkqaW5jb21pbmdfY25fbXNnOworCXN0cnVjdCBodl9rdV9tc2cgKmh2X21zZzsKKwljaGFyCSpwOwogCWNoYXIJKmtleV92YWx1ZTsKIAljaGFyCSprZXlfbmFtZTsKLQlpbnQJIGtleV9pbmRleDsKIAogCWRhZW1vbigxLCAwKTsKIAlvcGVubG9nKCJLVlAiLCAwLCBMT0dfVVNFUik7CkBAIC0zNzMsOSArMzk5LDEwIEBACiAJCQkgKiBEcml2ZXIgaXMgcmVnaXN0ZXJpbmcgd2l0aCB1czsgc3Rhc2ggYXdheSB0aGUgdmVyc2lvbgogCQkJICogaW5mb3JtYXRpb24uCiAJCQkgKi8KLQkJCWxpY192ZXJzaW9uID0gbWFsbG9jKHN0cmxlbihpbmNvbWluZ19jbl9tc2ctPmRhdGEpICsgMSk7CisJCQlwID0gKGNoYXIgKilpbmNvbWluZ19jbl9tc2ctPmRhdGE7CisJCQlsaWNfdmVyc2lvbiA9IG1hbGxvYyhzdHJsZW4ocCkgKyAxKTsKIAkJCWlmIChsaWNfdmVyc2lvbikgewotCQkJCXN0cmNweShsaWNfdmVyc2lvbiwgaW5jb21pbmdfY25fbXNnLT5kYXRhKTsKKwkJCQlzdHJjcHkobGljX3ZlcnNpb24sIHApOwogCQkJCXN5c2xvZyhMT0dfSU5GTywgIktWUCBMSUMgVmVyc2lvbjogJXMiLAogCQkJCQlsaWNfdmVyc2lvbik7CiAJCQl9IGVsc2UgewpAQCAtMzg5LDE0ICs0MTYsMTEgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJa2V5X2luZGV4ID0KLQkJKChzdHJ1Y3QgaHZfa3VfbXNnICopaW5jb21pbmdfY25fbXNnLT5kYXRhKS0+a3ZwX2luZGV4OwotCQlrZXlfbmFtZSA9Ci0JCSgoc3RydWN0IGh2X2t1X21zZyAqKWluY29taW5nX2NuX21zZy0+ZGF0YSktPmt2cF9rZXk7Ci0JCWtleV92YWx1ZSA9Ci0JCSgoc3RydWN0IGh2X2t1X21zZyAqKWluY29taW5nX2NuX21zZy0+ZGF0YSktPmt2cF92YWx1ZTsKKwkJaHZfbXNnID0gKHN0cnVjdCBodl9rdV9tc2cgKilpbmNvbWluZ19jbl9tc2ctPmRhdGE7CisJCWtleV9uYW1lID0gKGNoYXIgKilodl9tc2ctPmt2cF9rZXk7CisJCWtleV92YWx1ZSA9IChjaGFyICopaHZfbXNnLT5rdnBfdmFsdWU7CiAKLQkJc3dpdGNoIChrZXlfaW5kZXgpIHsKKwkJc3dpdGNoIChodl9tc2ctPmt2cF9pbmRleCkgewogCQljYXNlIEZ1bGx5UXVhbGlmaWVkRG9tYWluTmFtZToKIAkJCWt2cF9nZXRfZG9tYWluX25hbWUoa2V5X3ZhbHVlLAogCQkJCQlIVl9LVlBfRVhDSEFOR0VfTUFYX1ZBTFVFX1NJWkUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2h2L3ZtYnVzX2Rydi5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L3ZtYnVzX2Rydi5jCmluZGV4IGI0NzNmNDYuLjc5MDg5ZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi92bWJ1c19kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaHYvdm1idXNfZHJ2LmMKQEAgLTI1NCw3ICsyNTQsNyBAQAogCWV2ZW50ID0gKHVuaW9uIGh2X3N5bmljX2V2ZW50X2ZsYWdzICopcGFnZV9hZGRyICsgVk1CVVNfTUVTU0FHRV9TSU5UOwogCiAJLyogU2luY2Ugd2UgYXJlIGEgY2hpbGQsIHdlIG9ubHkgbmVlZCB0byBjaGVjayBiaXQgMCAqLwotCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoMCwgKHVuc2lnbmVkIGxvbmcgKikgJmV2ZW50LT5mbGFnczMyWzBdKSkgeworCWlmIChzeW5jX3Rlc3RfYW5kX2NsZWFyX2JpdCgwLCAodW5zaWduZWQgbG9uZyAqKSAmZXZlbnQtPmZsYWdzMzJbMF0pKSB7CiAJCURQUklOVF9EQkcoVk1CVVMsICJyZWNlaXZlZCBldmVudCAlZCIsIGV2ZW50LT5mbGFnczMyWzBdKTsKIAkJcmV0IHw9IDB4MjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvdm1idXNfcHJpdmF0ZS5oIGIvZHJpdmVycy9zdGFnaW5nL2h2L3ZtYnVzX3ByaXZhdGUuaAppbmRleCBjYTA1MGE0Li42ZjBkOGRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvdm1idXNfcHJpdmF0ZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi92bWJ1c19wcml2YXRlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjaGFubmVsX21nbXQuaCIKICNpbmNsdWRlICJyaW5nX2J1ZmZlci5oIgogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxhc20vc3luY19iaXRvcHMuaD4KIAogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9Eb2N1bWVudGF0aW9uL2lpb191dGlscy5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9Eb2N1bWVudGF0aW9uL2lpb191dGlscy5oCmluZGV4IDgwOTU3MjcuLmZkNzhlNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vRG9jdW1lbnRhdGlvbi9paW9fdXRpbHMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL0RvY3VtZW50YXRpb24vaWlvX3V0aWxzLmgKQEAgLTU1Niw3ICs1NTYsNyBAQAogCQlpZiAoc3RyY21wKHRlbXAsIHZhbCkgIT0gMCkgewogCQkJcHJpbnRmKCJQb3NzaWJsZSBmYWlsdXJlIGluIHN0cmluZyB3cml0ZSBvZiAlcyAiCiAJCQkJIlNob3VsZCBiZSAlcyAiCi0JCQkJIndyaXRlbiB0byAlc1wlc1xuIiwKKwkJCQkid3JpdHRlbiB0byAlc1wlc1xuIiwKIAkJCQl0ZW1wLAogCQkJCXZhbCwKIAkJCQliYXNlZGlyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDEuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAxLmgKaW5kZXggYzliZjIyYy4uMjNmZTU0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMS5oCkBAIC03MCw3ICs3MCw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MjAxX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAzLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMy5oCmluZGV4IGIzOTMyM2UuLmI4ODY4ODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDMuaApAQCAtNjUsNyArNjUsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwM19zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwNC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDQuaAppbmRleCBlOWVkN2NiLi5lNjE4NDQ2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwNC5oCkBAIC03Myw3ICs3Myw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MjA0X3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA5LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwOS5oCmluZGV4IDRlOTc1OTYuLjhiMGRhMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA5LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDkuaApAQCAtMTA5LDcgKzEwOSw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MjA5X3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjIwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIyMC5oCmluZGV4IDcwMTMzMTQuLjRkNTc1OGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjIwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMjAuaApAQCAtMTMyLDcgKzEzMiw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MjIwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjQwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5oCmluZGV4IDUxYTgwN2QuLjc2YTQ1NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjQwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyNDAuaApAQCAtMTMyLDcgKzEzMiw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MjQwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcS5oCmluZGV4IDU3OWIzYTIuLjExNDAyMTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxLmgKQEAgLTU3LDcgKzU3LDcgQEAKIC8qIFJlYm9vdCBtZW1vcnkgY29udGVudCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX0NUUkxfMl9SRUJPT1RfTUVNT1JZCTB4MTAKIAotLyogSW50ZXJ1cHQgRW5hYmxlIC0gYXBwbGllcyBkYXRhIHJlYWR5IHRvIHRoZSBSRFkgcGFkICovCisvKiBJbnRlcnJ1cHQgRW5hYmxlIC0gYXBwbGllcyBkYXRhIHJlYWR5IHRvIHRoZSBSRFkgcGFkICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfQ1RSTF8yX0VOQUJMRV9JTlRFUlJVUFQJMHgwOAogCiAvKiBFbmFibGUgRGF0YSBSZWFkeSBHZW5lcmF0aW9uIC0gcmVsYXRpb25zaGlwIHdpdGggcHJldmlvdXMgdW5jbGVhciBpbiBkb2NzICovCkBAIC03MCwzNCArNzAsMzQgQEAKICAqIC0gb3B0aW9uIGZvciAxNiBiaXQgbGVmdCBqdXN0aWZpZWQgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19DVFJMXzJfREFUQV9BTElHTk1FTlRfMTZfQklUX0xFRlRfSlVTVElGSUVECTB4MDEKIAotLyogSW50ZXJ1cHQgcmVsYXRlZCBzdHVmZiAqLworLyogSW50ZXJydXB0IHJlbGF0ZWQgc3R1ZmYgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19BRERSCQkJMHgyMwogCiAvKiBTd2l0Y2ggZnJvbSBvciBjb21iaW5hdGlvbiBmbyBjb25kaXRpb25zIHRvIGFuZCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0JPT0xFQU5fQU5ECQkweDgwCiAKLS8qIExhdGNoIGludGVydXB0IHJlcXVlc3QsCisvKiBMYXRjaCBpbnRlcnJ1cHQgcmVxdWVzdCwKICAqIGlmIG9uIGFjayBtdXN0IGJlIGdpdmVuIGJ5IHJlYWRpbmcgdGhlIGFjayByZWdpc3RlciAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0xBVENIX1NSQwkJMHg0MAogCi0vKiBaIEludGVydXB0IG9uIEhpZ2ggKGFib3ZlIHRocmVzaG9sZCkqLworLyogWiBJbnRlcnJ1cHQgb24gSGlnaCAoYWJvdmUgdGhyZXNob2xkKSovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9DRkdfSU5URVJSVVBUX1pfSElHSAkweDIwCi0vKiBaIEludGVydXB0IG9uIExvdyAqLworLyogWiBJbnRlcnJ1cHQgb24gTG93ICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9DRkdfSU5URVJSVVBUX1pfTE9XCTB4MTAKLS8qIFkgSW50ZXJ1cHQgb24gSGlnaCAqLworLyogWSBJbnRlcnJ1cHQgb24gSGlnaCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0lOVEVSUlVQVF9ZX0hJR0gJMHgwOAotLyogWSBJbnRlcnVwdCBvbiBMb3cgKi8KKy8qIFkgSW50ZXJydXB0IG9uIExvdyAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0lOVEVSUlVQVF9ZX0xPVwkweDA0Ci0vKiBYIEludGVydXB0IG9uIEhpZ2ggKi8KKy8qIFggSW50ZXJydXB0IG9uIEhpZ2ggKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19JTlRFUlJVUFRfWF9ISUdICTB4MDIKLS8qIFggSW50ZXJ1cHQgb24gTG93ICovCisvKiBYIEludGVycnVwdCBvbiBMb3cgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19JTlRFUlJVUFRfWF9MT1cgMHgwMQogCi0vKiBSZWdpc3RlciB0aGF0IGdpdmVzIGRlc2NyaXB0aW9uIG9mIHdoYXQgY2F1c2VkIGludGVydXB0CisvKiBSZWdpc3RlciB0aGF0IGdpdmVzIGRlc2NyaXB0aW9uIG9mIHdoYXQgY2F1c2VkIGludGVycnVwdAogICogLSBsYXRjaGVkIGlmIHNldCBpbiBDRkdfQUREUkVTICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfQUREUgkJCTB4MjQKIC8qIHRvcCBiaXQgaWdub3JlZCAqLwotLyogSW50ZXJ1cHQgQWN0aXZlICovCisvKiBJbnRlcnJ1cHQgQWN0aXZlICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfSU5URVJSVVBUX0FDVElWQVRFRAkweDQwCiAvKiBJbnRlcnVwdHMgdGhhdCBoYXZlIGJlZW4gdHJpZ2dlcmVkICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfSU5URVJSVVBUX1pfSElHSAkweDIwCkBAIC0xMjMsNyArMTIzLDcgQEAKICNkZWZpbmUgTElTM0wwMkRRX1JFR19TVEFUVVNfWF9ORVdfREFUQQkJCTB4MDEKIAogLyogVGhlIGFjY2VsZXJvbWV0ZXIgcmVhZGluZ3MgLSBsb3cgYW5kIGhpZ2ggYnl0ZXMuCi1Gb3JtIG9mIGhpZ2ggYnl0ZSBkZXBlbmRhbnQgb24ganVzdGlmaWNhdGlvbiBzZXQgaW4gY3RybCByZWcgKi8KK0Zvcm0gb2YgaGlnaCBieXRlIGRlcGVuZGVudCBvbiBqdXN0aWZpY2F0aW9uIHNldCBpbiBjdHJsIHJlZyAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX09VVF9YX0xfQUREUgkJCTB4MjgKICNkZWZpbmUgTElTM0wwMkRRX1JFR19PVVRfWF9IX0FERFIJCQkweDI5CiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfT1VUX1lfTF9BRERSCQkJMHgyQQpAQCAtMTU1LDcgKzE1NSw3IEBACiAgKiBAaW50ZXI6CQl1c2VkIHRvIGNoZWNrIGlmIG5ldyBpbnRlcnJ1cHQgaGFzIGJlZW4gdHJpZ2dlcmVkCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBsaXMzbDAyZHFfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfY29yZS5jCmluZGV4IGM0YjRhYjcuLjMwNjdmOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcV9jb3JlLmMKQEAgLTc3LDcgKzc3LDcgQEAKIC8qKgogICogbGlzM2wwMmRxX3NwaV93cml0ZV9yZWdfOCgpIC0gd3JpdGUgc2luZ2xlIGJ5dGUgdG8gYSByZWdpc3RlcgogICogQGRldjogZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBjaGlsZCBvZiBhY3R1YWwgZGV2aWNlIChpaW9fZGV2IG9yIGlpb190cmlnKQotICogQHJlZ19hZGRyZXNzOiB0aGUgYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXIgdG8gYmUgd3JpdGVuCisgKiBAcmVnX2FkZHJlc3M6IHRoZSBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB0byBiZSB3cml0dGVuCiAgKiBAdmFsOiB0aGUgdmFsdWUgdG8gd3JpdGUKICAqKi8KIGludCBsaXMzbDAyZHFfc3BpX3dyaXRlX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX3JpbmcuYwppbmRleCAyYzQ2MWEzLi41MjlhM2NjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcV9yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfcmluZy5jCkBAIC0yMTcsNyArMjE3LDcgQEAKIC8qKgogICogbGlzM2wwMmRxX3JlYWRfYWxsKCkgUmVhZHMgYWxsIGNoYW5uZWxzIGN1cnJlbnRseSBzZWxlY3RlZAogICogQHN0OgkJZGV2aWNlIHNwZWNpZmljIHN0YXRlCi0gKiBAcnhfYXJyYXk6CShkbWEgY2FwYWJsZSkgcmVjaWV2ZSBhcnJheSwgbXVzdCBiZSBhdCBsZWFzdAorICogQHJ4X2FycmF5OgkoZG1hIGNhcGFibGUpIHJlY2VpdmUgYXJyYXksIG11c3QgYmUgYXQgbGVhc3QKICAqCQk0Km51bWJlciBvZiBjaGFubmVscwogICoqLwogc3RhdGljIGludCBsaXMzbDAyZHFfcmVhZF9hbGwoc3RydWN0IGxpczNsMDJkcV9zdGF0ZSAqc3QsIHU4ICpyeF9hcnJheSkKQEAgLTQwOSw3ICs0MDksNyBAQAogICoKICAqIEFzIHRoZSB0cmlnZ2VyIG1heSBvY2N1ciBvbiBhbnkgZGF0YSBlbGVtZW50IGJlaW5nIHVwZGF0ZWQgaXQgaXMKICAqIHJlYWxseSByYXRoZXIgbGlrZWx5IHRvIG9jY3VyIGR1cmluZyB0aGUgcmVhZCBmcm9tIHRoZSBwcmV2aW91cwotICogdHJpZ2dlciBldmVudC4gIFRoZSBvbmx5IHdheSB0byBkaXNjb3ZlciBpZiB0aGlzIGhhcyBvY2N1cmVkIG9uCisgKiB0cmlnZ2VyIGV2ZW50LiAgVGhlIG9ubHkgd2F5IHRvIGRpc2NvdmVyIGlmIHRoaXMgaGFzIG9jY3VycmVkIG9uCiAgKiBib2FyZHMgbm90IHN1cHBvcnRpbmcgbGV2ZWwgaW50ZXJydXB0cyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgbGluZS4KICAqIElmIGl0IGlzIGluZGljYXRpbmcgYW5vdGhlciBpbnRlcnJ1cHQgYW5kIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhCiAgKiBoYW5kbGVyIGxvb2tpbmcgYXQgaXQsIHRoZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGNvcmUgdGhhdCB3ZSBuZWVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL3NjYTMwMDAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCmluZGV4IDIzODkyODQuLmRiNzEwMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCkBAIC0xODUsNyArMTg1LDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IHNjYTMwMDBfY2hpcF9pbmZvIC0gbW9kZWwgZGVwZW5kYW50IHBhcmFtZXRlcnMKKyAqIHN0cnVjdCBzY2EzMDAwX2NoaXBfaW5mbyAtIG1vZGVsIGRlcGVuZGVudCBwYXJhbWV0ZXJzCiAgKiBAbmFtZTogCQkJbW9kZWwgaWRlbnRpZmljYXRpb24KICAqIEBzY2FsZToJCQlzdHJpbmcgY29udGFpbmluZyBmbG9hdGluZyBwb2ludCBzY2FsZSBmYWN0b3IKICAqIEB0ZW1wX291dHB1dDoJCXNvbWUgZGV2aWNlcyBoYXZlIHRlbXBlcmF0dXJlIHNlbnNvcnMuCkBAIC0yMTMsNyArMjEzLDcgQEAKICAqIHNjYTMwMDBfcmVhZF9kYXRhKCkgcmVhZCBhIHNlcmllcyBvZiB2YWx1ZXMgZnJvbSB0aGUgZGV2aWNlCiAgKiBAZGV2OgkJZGV2aWNlCiAgKiBAcmVnX2FkZHJlc3NfaGlnaDoJc3RhcnQgYWRkcmVzcyAoZGVjcmVtZW50ZWQgcmVhZCkKLSAqIEByeDoJCQlwb2ludGVyIHdoZXJlIHJlY2lldmVkIGRhdGEgaXMgcGxhY2VkLiBDYWxsZWUKKyAqIEByeDoJCQlwb2ludGVyIHdoZXJlIHJlY2VpdmVkIGRhdGEgaXMgcGxhY2VkLiBDYWxsZWUKICAqCQkJcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhpcy4KICAqIEBsZW46CQludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMF9yaW5nLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL3NjYTMwMDBfcmluZy5jCmluZGV4IGM4NzJmZGQuLmE3MzBhNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMF9yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9zY2EzMDAwX3JpbmcuYwpAQCAtNDMsNyArNDMsNyBAQAogICoJCQlsZWFkaW5nIGJ5dGUgdXNlZCBpbiBidXMgY29tbXMuCiAgKgogICogQ3VycmVudGx5IGRvZXMgbm90IHByb3ZpZGUgdGltZXN0YW1wcy4gIEFzIHRoZSBoYXJkd2FyZSBkb2Vzbid0IGFkZCB0aGVtIHRoZXkKLSAqIGNhbiBvbmx5IGJlIGluZmVycmVkIGFwcm94aW1hdGVseSBmcm9tIHJpbmcgYnVmZmVyIGV2ZW50cyBzdWNoIGFzIDUwJSBmdWxsCisgKiBjYW4gb25seSBiZSBpbmZlcnJlZCBhcHByb3hpbWF0ZWx5IGZyb20gcmluZyBidWZmZXIgZXZlbnRzIHN1Y2ggYXMgNTAlIGZ1bGwKICAqIGFuZCBrbm93bGVkZ2Ugb2Ygd2hlbiBidWZmZXIgd2FzIGxhc3QgZW1wdGllZC4gIFRoaXMgaXMgbGVmdCB0byB1c2Vyc3BhY2UuCiAgKiovCiBzdGF0aWMgaW50IHNjYTMwMDBfcmlwX2h3X3JiKHN0cnVjdCBpaW9fcmluZ19idWZmZXIgKnIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDcyOThfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3Mjk4X3JpbmcuYwppbmRleCAxOWQxYWNlLi45MDY4ZDdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDcyOThfcmluZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzI5OF9yaW5nLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLyoqCiAgKiBhZDcyOThfcG9sbF9mdW5jX3RoKCkgdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gc3BpIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIHNwaSBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NDc2X3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzQ3Nl9yaW5nLmMKaW5kZXggMWQ2NTRjOC4uOTJkOTM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NDc2X3JpbmcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc0NzZfcmluZy5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIC8qKgogICogYWQ3NDc2X3BvbGxfZnVuY190aCgpIHRoIG9mIHRyaWdnZXIgbGF1bmNoZWQgcG9sbGluZyB0byByaW5nIGJ1ZmZlcgogICoKLSAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cmluZywgbGVhdmUgdGltZXN0YW1waW5nIHVudGlsCisgKiBBcyBzYW1wbGluZyBvbmx5IG9jY3VycyBvbiBpMmMgY29tbXMgb2NjdXJyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKICAqIHRoZW4uICBTb21lIHRyaWdnZXJzIHdpbGwgZ2VuZXJhdGUgdGhlaXIgb3duIHRpbWUgc3RhbXAuICBDdXJyZW50bHkKICAqIHRoZXJlIGlzIG5vIHdheSBvZiBub3RpZnlpbmcgdGhlbSB3aGVuIG5vIG9uZSBjYXJlcy4KICAqKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzg4N19yaW5nLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc4ODdfcmluZy5jCmluZGV4IDJkN2ZlNjUuLmRhNzdmMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzg4N19yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3ODg3X3JpbmcuYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAvKioKICAqIGFkNzg4N19wb2xsX2Z1bmNfdGgoKSB0aCBvZiB0cmlnZ2VyIGxhdW5jaGVkIHBvbGxpbmcgdG8gcmluZyBidWZmZXIKICAqCi0gKiBBcyBzYW1wbGluZyBvbmx5IG9jY3VycyBvbiBzcGkgY29tbXMgb2NjdXJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAorICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gc3BpIGNvbW1zIG9jY3VycmluZywgbGVhdmUgdGltZXN0YW1waW5nIHVudGlsCiAgKiB0aGVuLiAgU29tZSB0cmlnZ2VycyB3aWxsIGdlbmVyYXRlIHRoZWlyIG93biB0aW1lIHN0YW1wLiAgQ3VycmVudGx5CiAgKiB0aGVyZSBpcyBubyB3YXkgb2Ygbm90aWZ5aW5nIHRoZW0gd2hlbiBubyBvbmUgY2FyZXMuCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3OTl4X2NvcmUuYwppbmRleCBlNTA4NDFiLi5mMDRlNjQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzk5eF9jb3JlLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogCiAJbXV0ZXhfbG9jaygmZGV2X2luZm8tPm1sb2NrKTsKIAltYXNrID0gMSA8PCB0aGlzX2F0dHItPmFkZHJlc3M7Ci0JLyogSWYgcmluZyBidWZmZXIgY2FwdHVyZSBpcyBvY2N1cmluZywgcXVlcnkgdGhlIGJ1ZmZlciAqLworCS8qIElmIHJpbmcgYnVmZmVyIGNhcHR1cmUgaXMgb2NjdXJyaW5nLCBxdWVyeSB0aGUgYnVmZmVyICovCiAJaWYgKGlpb19yaW5nX2VuYWJsZWQoZGV2X2luZm8pKSB7CiAJCWRhdGEgPSByZXQgPSBhZDc5OXhfc2luZ2xlX2NoYW5uZWxfZnJvbV9yaW5nKHN0LCBtYXNrKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3OTl4X3JpbmcuYwppbmRleCA1NmFiYzM5Li4wODc1YTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfcmluZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzk5eF9yaW5nLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogLyoqCiAgKiBhZDc5OXhfcG9sbF9mdW5jX3RoKCkgdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gaTJjIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19jb3JlLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYwppbmRleCBkZGUwOTdhLi5kZTgzYzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAJCWdvdG8gZXJyb3JfcmV0OwogCX0KIAotCS8qIElmIHJpbmcgYnVmZmVyIGNhcHR1cmUgaXMgb2NjdXJpbmcsIHF1ZXJ5IHRoZSBidWZmZXIgKi8KKwkvKiBJZiByaW5nIGJ1ZmZlciBjYXB0dXJlIGlzIG9jY3VycmluZywgcXVlcnkgdGhlIGJ1ZmZlciAqLwogCWlmIChpaW9fcmluZ19lbmFibGVkKGRldl9pbmZvKSkgewogCQltYXNrID0gbWF4MTM2M19tb2RlX3RhYmxlW3RoaXNfYXR0ci0+YWRkcmVzc10ubW9kZW1hc2s7CiAJCWRhdGEgPSBtYXgxMzYzX3NpbmdsZV9jaGFubmVsX2Zyb21fcmluZyhtYXNrLCBzdCk7CkBAIC0xNDI1LDcgKzE0MjUsNyBAQAogfQogCiAvKgotICogVG8ga2VlcCB0aGlzIG1hbmFnYWJsZSB3ZSBhbHdheXMgdXNlIG9uZSBvZiAzIHNjYW4gbW9kZXMuCisgKiBUbyBrZWVwIHRoaXMgbWFuYWdlYWJsZSB3ZSBhbHdheXMgdXNlIG9uZSBvZiAzIHNjYW4gbW9kZXMuCiAgKiBTY2FuIDAuLi4zLCAwLTEsMi0zIGFuZCAxLTAsMy0yCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IF9fbWF4MTM2M19jaGVja19ldmVudF9tYXNrKGludCB0aGlzbWFzaywgaW50IGNoZWNrbWFzaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL21heDEzNjNfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKaW5kZXggNTUzMmYzZS4uZDM2ZmNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKQEAgLTEwOCw3ICsxMDgsNyBAQAogLyoqCiAgKiBtYXgxMzYzX3BvbGxfZnVuY190aCgpIC0gdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gaTJjIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9jaHJkZXYuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vY2hyZGV2LmgKaW5kZXggOThkMWEyYy4uNGZjYjk5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9jaHJkZXYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2NocmRldi5oCkBAIC0zMyw3ICszMyw3IEBACiAvKioKICAqIHN0cnVjdCBpaW9fZXZlbnRfZGF0YSAtIFRoZSBhY3R1YWwgZXZlbnQgYmVpbmcgcHVzaGVkIHRvIHVzZXJzcGFjZQogICogQGlkOgkJZXZlbnQgaWRlbnRpZmllcgotICogQHRpbWVzdGFtcDoJYmVzdCBlc3RpbWF0ZSBvZiB0aW1lIG9mIGV2ZW50IG9jY3VyYW5jZSAob2Z0ZW4gZnJvbQorICogQHRpbWVzdGFtcDoJYmVzdCBlc3RpbWF0ZSBvZiB0aW1lIG9mIGV2ZW50IG9jY3VycmVuY2UgKG9mdGVuIGZyb20KICAqCQl0aGUgaW50ZXJydXB0IGhhbmRsZXIpCiAgKi8KIHN0cnVjdCBpaW9fZXZlbnRfZGF0YSB7CkBAIC00Miw3ICs0Miw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBpaW9fZGV0ZWN0ZWRfZXZlbnRfbGlzdCAtIGxpc3QgZWxlbWVudCBmb3IgZXZlbnRzIHRoYXQgaGF2ZSBvY2N1cmVkCisgKiBzdHJ1Y3QgaWlvX2RldGVjdGVkX2V2ZW50X2xpc3QgLSBsaXN0IGVsZW1lbnQgZm9yIGV2ZW50cyB0aGF0IGhhdmUgb2NjdXJyZWQKICAqIEBsaXN0OgkJbGlua2VkIGxpc3QgaGVhZGVyCiAgKiBAZXY6CQkJdGhlIGV2ZW50IGl0c2VsZgogICogQHNoYXJlZF9wb2ludGVyOgl1c2VkIHdoZW4gdGhlIGV2ZW50IGlzIHNoYXJlZCAtIGkuZS4gY2FuIGJlIGVzY2FsbGF0ZWQKQEAgLTk4LDcgKzk4LDcgQEAKICAqIEBsaXN0OgkJbGlzdCBoZWFkZXIKICAqIEByZWZjb3VudDoJCWFzIHRoZSBoYW5kbGVyIG1heSBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBkZXZpY2UKICAqCQkJc2lkZSBldmVudHMsIHJlZmVyZW5jZSBjb3VudGluZyBlbnN1cmVzIGNsZWFuIHJlbW92YWwKLSAqIEBleGlzdF9sb2NrOgkJcHJldmVudHMgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gcmVmY291bnQgdXNlYWdlLgorICogQGV4aXN0X2xvY2s6CQlwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byByZWZjb3VudCB1c2FnZS4KICAqIEBoYW5kbGVyOgkJZXZlbnQgaGFuZGxlciBmdW5jdGlvbiAtIGNhbGxlZCBvbiBldmVudCBpZiB0aGlzCiAgKgkJCWV2ZW50X2hhbmRsZXIgaXMgZW5hYmxlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2d5cm8vYWRpczE2MDYwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCmluZGV4IDcwMGViMzkuLmFlNTNlNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiBAdXNfdzoJCWFjdHVhbCBzcGlfZGV2aWNlIHRvIHdyaXRlIGNvbmZpZwogICogQHVzX3I6CQlhY3R1YWwgc3BpX2RldmljZSB0byByZWFkIGJhY2sgZGF0YQogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKLSAqIEBidWY6CQl0cmFuc21pdCBvciByZWNpZXZlIGJ1ZmZlcgorICogQGJ1ZjoJCXRyYW5zbWl0IG9yIHJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjA2MF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2d5cm8vYWRpczE2MDgwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCmluZGV4IGZiNDMzNmMuLmVmOWUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiBzdHJ1Y3QgYWRpczE2MDgwX3N0YXRlIC0gZGV2aWNlIGluc3RhbmNlIHNwZWNpZmljIGRhdGEKICAqIEB1czoJCQlhY3R1YWwgc3BpX2RldmljZSB0byB3cml0ZSBkYXRhCiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQotICogQGJ1ZjoJCXRyYW5zbWl0IG9yIHJlY2lldmUgYnVmZmVyCisgKiBAYnVmOgkJdHJhbnNtaXQgb3IgcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MDgwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaAppbmRleCBjMWZkNDM2NC4uMTM2OTUwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9neXJvL2FkaXMxNjI2MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaApAQCAtOTEsNyArOTEsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICogQG5lZ2F0ZToJCW5lZ2F0ZSB0aGUgc2NhbGUgcGFyYW1ldGVyCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2lpby5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9paW8uaAppbmRleCAyNDhiZGQyLi43MTI3ZjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2lpby5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaWlvLmgKQEAgLTkyLDcgKzkyLDcgQEAKICAqCQkJY2hhbmdlcwogICogQGF2YWlsYWJsZV9zY2FuX21hc2tzOiBbRFJJVkVSXSBvcHRpb25hbCBhcnJheSBvZiBhbGxvd2VkIGJpdG1hc2tzCiAgKiBAdHJpZzoJCVtJTlRFUk5dIGN1cnJlbnQgZGV2aWNlIHRyaWdnZXIgKHJpbmcgYnVmZmVyIG1vZGVzKQotICogQHBvbGxmdW5jOgkJW0RSSVZFUl0gZnVuY3Rpb24gcnVuIG9uIHRyaWdnZXIgYmVpbmcgcmVjaWV2ZWQKKyAqIEBwb2xsZnVuYzoJCVtEUklWRVJdIGZ1bmN0aW9uIHJ1biBvbiB0cmlnZ2VyIGJlaW5nIHJlY2VpdmVkCiAgKiovCiBzdHJ1Y3QgaWlvX2RldiB7CiAJaW50CQkJCWlkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2MzAwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaAppbmRleCAxZjI1ZDY4Li5jMDk1NzU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaApAQCAtOTksNyArOTksNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjMwMF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzNTAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCmluZGV4IGIwMDAwMWUuLmIxYWQ0ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCkBAIC0xMDUsNyArMTA1LDcgQEAKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGlzMTYzNTBfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaAppbmRleCA2ZmYzM2UxLi5lMzI4YmNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaApAQCAtMTcsNyArMTcsOCBAQAogI2lmbmRlZiBTUElfQURJUzE2NDAwX0hfCiAjZGVmaW5lIFNQSV9BRElTMTY0MDBfSF8KIAotI2RlZmluZSBBRElTMTY0MDBfU1RBUlRVUF9ERUxBWQkyMjAgLyogbXMgKi8KKyNkZWZpbmUgQURJUzE2NDAwX1NUQVJUVVBfREVMQVkJMjkwIC8qIG1zICovCisjZGVmaW5lIEFESVMxNjQwMF9NVEVTVF9ERUxBWSA5MCAvKiBtcyAqLwogCiAjZGVmaW5lIEFESVMxNjQwMF9SRUFEX1JFRyhhKSAgICBhCiAjZGVmaW5lIEFESVMxNjQwMF9XUklURV9SRUcoYSkgKChhKSB8IDB4ODApCkBAIC0xMzEsNyArMTMyLDcgQEAKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGlzMTY0MDBfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjQwMF9jb3JlLmMKaW5kZXggY2ZiMTA4YS4uNTQwYmRlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDBfY29yZS5jCkBAIC02LDYgKzYsNyBAQAogICoKICAqIENvcHlyaWdodCAoYykgMjAwOSBNYW51ZWwgU3RhaGwgPG1hbnVlbC5zdGFobEBpaXMuZnJhdW5ob2Zlci5kZT4KICAqIENvcHlyaWdodCAoYykgMjAwNyBKb25hdGhhbiBDYW1lcm9uIDxqaWMyM0BjYW0uYWMudWs+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQW5hbG9nIERldmljZXMgSW5jLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtOTMsNyArOTQsNiBAQAogCQkJLnR4X2J1ZiA9IHN0LT50eCArIDIsCiAJCQkuYml0c19wZXJfd29yZCA9IDgsCiAJCQkubGVuID0gMiwKLQkJCS5jc19jaGFuZ2UgPSAxLAogCQl9LAogCX07CiAKQEAgLTEzNyw3ICsxMzcsNiBAQAogCQkJLnJ4X2J1ZiA9IHN0LT5yeCwKIAkJCS5iaXRzX3Blcl93b3JkID0gOCwKIAkJCS5sZW4gPSAyLAotCQkJLmNzX2NoYW5nZSA9IDEsCiAJCX0sCiAJfTsKIApAQCAtMzc1LDcgKzM3NCw3IEBACiAJCWRldl9lcnIoZGV2LCAicHJvYmxlbSBzdGFydGluZyBzZWxmIHRlc3QiKTsKIAkJZ290byBlcnJfcmV0OwogCX0KLQorCW1zbGVlcChBRElTMTY0MDBfTVRFU1RfREVMQVkpOwogCWFkaXMxNjQwMF9jaGVja19zdGF0dXMoZGV2KTsKIAogZXJyX3JldDoKQEAgLTQ3MSwxMCArNDcwLDExIEBACiAJaWYgKHJldCkKIAkJZ290byBlcnJfcmV0OwogCi0JaWYgKHByb2RfaWQgIT0gQURJUzE2NDAwX1BST0RVQ1RfSURfREVGQVVMVCkKKwlpZiAoKHByb2RfaWQgJiAweEYwMDApICE9IEFESVMxNjQwMF9QUk9EVUNUX0lEX0RFRkFVTFQpCiAJCWRldl93YXJuKGRldiwgInVua25vd24gcHJvZHVjdCBpZCIpOwogCi0JcHJpbnRrKEtFUk5fSU5GTyBEUklWRVJfTkFNRSAiOiBwcm9kX2lkIDB4JTA0eCBhdCBDUyVkIChpcnEgJWQpXG4iLAorCisJZGV2X2luZm8oZGV2LCAiOiBwcm9kX2lkIDB4JTA0eCBhdCBDUyVkIChpcnEgJWQpXG4iLAogCQkJcHJvZF9pZCwgc3QtPnVzLT5jaGlwX3NlbGVjdCwgc3QtPnVzLT5pcnEpOwogCiAJLyogdXNlIGhpZ2ggc3BpIHNwZWVkIGlmIHBvc3NpYmxlICovCkBAIC00OTcsMTIgKzQ5NywxMiBAQAogCQkJX3JlZykKIAogc3RhdGljIEFESVMxNjQwMF9ERVZfQVRUUl9DQUxJQkJJQVMoR1lST19YLCBBRElTMTY0MDBfWEdZUk9fT0ZGKTsKLXN0YXRpYyBBRElTMTY0MDBfREVWX0FUVFJfQ0FMSUJCSUFTKEdZUk9fWSwgQURJUzE2NDAwX1hHWVJPX09GRik7Ci1zdGF0aWMgQURJUzE2NDAwX0RFVl9BVFRSX0NBTElCQklBUyhHWVJPX1osIEFESVMxNjQwMF9YR1lST19PRkYpOworc3RhdGljIEFESVMxNjQwMF9ERVZfQVRUUl9DQUxJQkJJQVMoR1lST19ZLCBBRElTMTY0MDBfWUdZUk9fT0ZGKTsKK3N0YXRpYyBBRElTMTY0MDBfREVWX0FUVFJfQ0FMSUJCSUFTKEdZUk9fWiwgQURJUzE2NDAwX1pHWVJPX09GRik7CiAKIHN0YXRpYyBBRElTMTY0MDBfREVWX0FUVFJfQ0FMSUJCSUFTKEFDQ0VMX1gsIEFESVMxNjQwMF9YQUNDTF9PRkYpOwotc3RhdGljIEFESVMxNjQwMF9ERVZfQVRUUl9DQUxJQkJJQVMoQUNDRUxfWSwgQURJUzE2NDAwX1hBQ0NMX09GRik7Ci1zdGF0aWMgQURJUzE2NDAwX0RFVl9BVFRSX0NBTElCQklBUyhBQ0NFTF9aLCBBRElTMTY0MDBfWEFDQ0xfT0ZGKTsKK3N0YXRpYyBBRElTMTY0MDBfREVWX0FUVFJfQ0FMSUJCSUFTKEFDQ0VMX1ksIEFESVMxNjQwMF9ZQUNDTF9PRkYpOworc3RhdGljIEFESVMxNjQwMF9ERVZfQVRUUl9DQUxJQkJJQVMoQUNDRUxfWiwgQURJUzE2NDAwX1pBQ0NMX09GRik7CiAKIAogc3RhdGljIElJT19ERVZfQVRUUl9JTl9OQU1FRF9SQVcoMCwgc3VwcGx5LCBhZGlzMTY0MDBfcmVhZF8xNGJpdF9zaWduZWQsCkBAIC02NDcsNyArNjQ3LDcgQEAKIAogCXJldCA9IGlpb19yaW5nX2J1ZmZlcl9yZWdpc3RlcihzdC0+aW5kaW9fZGV2LT5yaW5nLCAwKTsKIAlpZiAocmV0KSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiZmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHJpbmdcbiIpOworCQlkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIHRoZSByaW5nXG4iKTsKIAkJZ290byBlcnJvcl91bnJlZ19yaW5nX2Z1bmNzOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwX3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjQwMF9yaW5nLmMKaW5kZXggMzMyOTNmYi4uZGEyOGNiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwX3JpbmcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDBfcmluZy5jCkBAIC0xMjIsMTIgKzEyMiwxMCBAQAogCQkJLnR4X2J1ZiA9IHN0LT50eCwKIAkJCS5iaXRzX3Blcl93b3JkID0gOCwKIAkJCS5sZW4gPSAyLAotCQkJLmNzX2NoYW5nZSA9IDAsCiAJCX0sIHsKIAkJCS5yeF9idWYgPSByeCwKIAkJCS5iaXRzX3Blcl93b3JkID0gOCwKIAkJCS5sZW4gPSAyNCwKLQkJCS5jc19jaGFuZ2UgPSAxLAogCQl9LAogCX07CiAKQEAgLTE2Miw5ICsxNjAsMTAgQEAKIAkJCSAgICAgICB3b3JrX3RyaWdnZXJfdG9fcmluZyk7CiAJc3RydWN0IGlpb19yaW5nX2J1ZmZlciAqcmluZyA9IHN0LT5pbmRpb19kZXYtPnJpbmc7CiAKLQlpbnQgaSA9IDA7CisJaW50IGkgPSAwLCBqOwogCXMxNiAqZGF0YTsKIAlzaXplX3QgZGF0YXNpemUgPSByaW5nLT5hY2Nlc3MuZ2V0X2J5dGVzX3Blcl9kYXR1bShyaW5nKTsKKwl1bnNpZ25lZCBsb25nIG1hc2sgPSByaW5nLT5zY2FuX21hc2s7CiAKIAlkYXRhID0ga21hbGxvYyhkYXRhc2l6ZSAsIEdGUF9LRVJORUwpOwogCWlmIChkYXRhID09IE5VTEwpIHsKQEAgLTE3NCw5ICsxNzMsMTIgQEAKIAogCWlmIChyaW5nLT5zY2FuX2NvdW50KQogCQlpZiAoYWRpczE2NDAwX3NwaV9yZWFkX2J1cnN0KCZzdC0+aW5kaW9fZGV2LT5kZXYsIHN0LT5yeCkgPj0gMCkKLQkJCWZvciAoOyBpIDwgcmluZy0+c2Nhbl9jb3VudDsgaSsrKQorCQkJZm9yICg7IGkgPCByaW5nLT5zY2FuX2NvdW50OyBpKyspIHsKKwkJCQlqID0gX19mZnMobWFzayk7CisJCQkJbWFzayAmPSB+KDEgPDwgaik7CiAJCQkJZGF0YVtpXQk9IGJlMTZfdG9fY3B1cCgKLQkJCQkJKF9fYmUxNiAqKSYoc3QtPnJ4W2kqMl0pKTsKKwkJCQkJKF9fYmUxNiAqKSYoc3QtPnJ4W2oqMl0pKTsKKwkJCX0KIAogCS8qIEd1YXJhbnRlZWQgdG8gYmUgYWxpZ25lZCB3aXRoIDggYnl0ZSBib3VuZGFyeSAqLwogCWlmIChyaW5nLT5zY2FuX3RpbWVzdGFtcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYwppbmRleCBmM2JmMTExLi4xNzk1ZWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCkBAIC0yNTgsNyArMjU4LDcgQEAKIAkJCQkJCQkgICAtPmRldF9ldmVudHMubGlzdCkpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJvcl9yZXQ7Ci0JCS8qIFNpbmdsZSBhY2Nlc3MgZGV2aWNlIHNvIG5vb25lIGVsc2UgY2FuIGdldCB0aGUgZGF0YSAqLworCQkvKiBTaW5nbGUgYWNjZXNzIGRldmljZSBzbyBubyBvbmUgZWxzZSBjYW4gZ2V0IHRoZSBkYXRhICovCiAJCW11dGV4X2xvY2soJmV2X2ludC0+ZXZlbnRfbGlzdF9sb2NrKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzUzLmgKaW5kZXggNzBkYWJhZTYuLjNiOWM3ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oCkBAIC02Miw3ICs2Miw3IEBACiAgKiBAdXM6CQkJYWN0dWFsIHNwaV9kZXZpY2UKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGU3NzUzX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1NC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKaW5kZXggOGZhYTliMy4uMGFhMDUyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKQEAgLTgwLDcgKzgwLDcgQEAKICAqIEB1czoJCQlhY3R1YWwgc3BpX2RldmljZQogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkZTc3NTRfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU4LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaAppbmRleCBkZjViYjdiLi5jNmZkOTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaApAQCAtOTgsNyArOTgsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkZTc3NThfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU5LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaAppbmRleCBlOWQxYzQzLi5jYzc2YzJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaApAQCAtNDMsNyArNDMsNyBAQAogICogQHVzOgkJCWFjdHVhbCBzcGlfZGV2aWNlCiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRlNzc1OV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc4NTQuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCmluZGV4IDRhZDg0YTMuLjc5YTIxMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCkBAIC0xNDksNyArMTQ5LDcgQEAKICAqIEBzcGk6CQkJYWN0dWFsIHNwaV9kZXZpY2UKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGU3ODU0X3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmluZ19nZW5lcmljLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL3JpbmdfZ2VuZXJpYy5oCmluZGV4IGYyMWFjMDkuLjMyOTQ4ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmluZ19nZW5lcmljLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9yaW5nX2dlbmVyaWMuaApAQCAtMzAsNyArMzAsNyBAQAogICogQGV2ZW50X2NvZGU6CQlldmVudCBpbmRlbnRpZmljYXRpb24gY29kZQogICogQHRpbWVzdGFtcDoJCXRpbWUgb2YgZXZlbnQKICAqCi0gKiBUeXBpY2FsIHVzZWNhc2UgaXMgdG8gZXNjYWxhdGUgYSA1MCUgcmluZyBmdWxsIHRvIDc1JSBmdWxsIGlmIG5vb25lIGhhcyB5ZXQKKyAqIFR5cGljYWwgdXNlY2FzZSBpcyB0byBlc2NhbGF0ZSBhIDUwJSByaW5nIGZ1bGwgdG8gNzUlIGZ1bGwgaWYgbm8gb25lIGhhcyB5ZXQKICAqIHJlYWQgdGhlIGZpcnN0IGV2ZW50LiBDbGVhcmx5IHRoZSA1MCUgZnVsbCBpcyBubyBsb25nZXIgb2YgaW50ZXJlc3QgaW4KICAqIHR5cGljYWwgdXNlIGNhc2UuCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L1RPRE8gYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L1RPRE8KaW5kZXggYTI0ZTVlZC4uYzczM2Q3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9UT0RPCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvVE9ETwpAQCAtMSw3ICsxLDcgQEAKIFRPRE8KIC0tLS0KIAotR2V0IHRoZSBtZW1yYXIgZHJpdmVyIGNsZWFuZWQgdXAgYW5kIHVwc3RyZWFtIChkZXBlbmRhbmN5IGJsb2NraW5nIFNTVCkKK0dldCB0aGUgbWVtcmFyIGRyaXZlciBjbGVhbmVkIHVwIGFuZCB1cHN0cmVhbSAoZGVwZW5kZW5jeSBibG9ja2luZyBTU1QpCiBSZXBsYWNlIGxvbmcvc2hvcnQgcHJlc3Mgd2l0aCB0d28gdmlydHVhbCBidXR0b25zCiBSZXZpZXcgdGhlIHByaW50a3MgYW5kIGtpbGwgb2ZmIGFueSBsZWZ0IG92ZXIgU1RfRVJSOiBtZXNzYWdlcwogUmV2aWV3IHRoZSBtaXNjIGRldmljZSBpb2N0bHMgZm9yIDMyLzY0Yml0IHNhZmV0eSBhbmQgc2FuaXR5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdC5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3QuYwppbmRleCBjZTRhOWY3Li44MWMyNGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0LmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCS8qIEluaXQgdGhlIGRldmljZSAqLwogCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CiAJaWYgKHJldCkgewotCQlwcl9lcnIoImRldmljZSBjYW50IGJlIGVuYWJsZWRcbiIpOworCQlwcl9lcnIoImRldmljZSBjYW4ndCBiZSBlbmFibGVkXG4iKTsKIAkJZ290byBkb19mcmVlX21lbTsKIAl9CiAJc3N0X2Rydl9jdHgtPnBjaSA9IHBjaV9kZXZfZ2V0KHBjaSk7CkBAIC00NTMsNyArNDUzLDcgQEAKIAlwY2lfcmVzdG9yZV9zdGF0ZShwY2kpOwogCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CiAJaWYgKHJldCkKLQkJcHJfZXJyKCJkZXZpY2UgY2FudCBiZSBlbmFibGVkXG4iKTsKKwkJcHJfZXJyKCJkZXZpY2UgY2FuJ3QgYmUgZW5hYmxlZFxuIik7CiAKIAltdXRleF9sb2NrKCZzc3RfZHJ2X2N0eC0+c3N0X2xvY2spOwogCXNzdF9kcnZfY3R4LT5zc3Rfc3RhdGUgPSBTU1RfVU5fSU5JVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2FwcF9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2FwcF9pbnRlcmZhY2UuYwppbmRleCBhMzY3OTkxLi4xZDA2MjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9hcHBfaW50ZXJmYWNlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfYXBwX2ludGVyZmFjZS5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAlpZiAoIXNzdF9kcnZfY3R4LT5tbWFwX21lbSkKIAkJcmV0dXJuIC1FSU87CiAKLQkvKiByb3VuZCBpdCB1cCB0byB0aGUgcGFnZSBib25kYXJ5ICAqLworCS8qIHJvdW5kIGl0IHVwIHRvIHRoZSBwYWdlIGJvdW5kYXJ5ICAqLwogCS8qbWVtX2FyZWEgPSAodm9pZCAqKSgoKCh1bnNpZ25lZCBsb25nKXNzdF9kcnZfY3R4LT5tbWFwX21lbSkKIAkJCQkrIFBBR0VfU0laRSAtIDEpICYgUEFHRV9NQVNLKTsqLwogCW1lbV9hcmVhID0gKHZvaWQgKikgUEFHRV9BTElHTigodW5zaWduZWQgaW50KSBzc3RfZHJ2X2N0eC0+bW1hcF9tZW0pOwpAQCAtODcxLDcgKzg3MSw3IEBACiB9CiAKIC8qKgotICogaW50ZWxfc3N0X2lvY3RsX2RzcCAtIHJlY2lldmVzIHRoZSBkZXZpY2UgaW9jdGwncworICogaW50ZWxfc3N0X2lvY3RsX2RzcCAtIHJlY2VpdmVzIHRoZSBkZXZpY2UgaW9jdGwncwogICoKICAqIEBjbWQ6SW9jdGwgY21kCiAgKiBAYXJnOmRhdGEKQEAgLTEwNjcsNyArMTA2Nyw3IEBACiAJCQlyZXR2YWwgPSAtRUZBVUxUOwogCQkJYnJlYWs7CiAJCX0KLQkJcHJfZGVidWcoIlNFVF9WT0xVTUUgcmVjaWV2ZWQgZm9yICVkIVxuIiwKKwkJcHJfZGVidWcoIlNFVF9WT0xVTUUgcmVjZWl2ZWQgZm9yICVkIVxuIiwKIAkJCQlzZXRfdm9sLnN0cmVhbV9pZCk7CiAJCWlmIChtaW5vciA9PSBTVFJFQU1fTU9EVUxFICYmIHNldF92b2wuc3RyZWFtX2lkID09IDApIHsKIAkJCXByX2RlYnVnKCJpbnZhbGlkIG9wZXJhdGlvbiFcbiIpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAKIAkJCXJldHZhbCA9IC1FRkFVTFQ7CiAJCQlicmVhazsKIAkJfQotCQlwcl9kZWJ1ZygiSU9DVExfR0VUX1ZPTFVNRSByZWNpZXZlZCBmb3Igc3RyZWFtID0gJWQhXG4iLAorCQlwcl9kZWJ1ZygiSU9DVExfR0VUX1ZPTFVNRSByZWNlaXZlZCBmb3Igc3RyZWFtID0gJWQhXG4iLAogCQkJCWdldF92b2wuc3RyZWFtX2lkKTsKIAkJaWYgKG1pbm9yID09IFNUUkVBTV9NT0RVTEUgJiYgZ2V0X3ZvbC5zdHJlYW1faWQgPT0gMCkgewogCQkJcHJfZGVidWcoImludmFsaWQgb3BlcmF0aW9uIVxuIik7CkBAIC0xMTE3LDcgKzExMTcsNyBAQAogCQkJcmV0dmFsID0gLUVGQVVMVDsKIAkJCWJyZWFrOwogCQl9Ci0JCXByX2RlYnVnKCJTTkRSVl9TU1RfU0VUX1ZPTFVNRSByZWNpZXZlZCBmb3IgJWQhXG4iLAorCQlwcl9kZWJ1ZygiU05EUlZfU1NUX1NFVF9WT0xVTUUgcmVjZWl2ZWQgZm9yICVkIVxuIiwKIAkJCXNldF9tdXRlLnN0cmVhbV9pZCk7CiAJCWlmIChtaW5vciA9PSBTVFJFQU1fTU9EVUxFICYmIHNldF9tdXRlLnN0cmVhbV9pZCA9PSAwKSB7CiAJCQlyZXR2YWwgPSAtRVBFUk07CkBAIC0xMTUzLDcgKzExNTMsNyBAQAogCWNhc2UgX0lPQ19OUihTTkRSVl9TU1RfTU1BUF9DQVBUVVJFKTogewogCQlzdHJ1Y3Qgc25kX3NzdF9tbWFwX2J1ZmZzIG1tYXBfYnVmOwogCi0JCXByX2RlYnVnKCJTTkRSVl9TU1RfTU1BUF9QTEFZL0NBUFRVUkUgcmVjaWV2ZWQhXG4iKTsKKwkJcHJfZGVidWcoIlNORFJWX1NTVF9NTUFQX1BMQVkvQ0FQVFVSRSByZWNlaXZlZCFcbiIpOwogCQlpZiAobWlub3IgIT0gU1RSRUFNX01PRFVMRSkgewogCQkJcmV0dmFsID0gLUVCQURSUUM7CiAJCQlicmVhazsKQEAgLTEyMzksNyArMTIzOSw3IEBACiAJY2FzZSBfSU9DX05SKFNORFJWX1NTVF9TRVRfVEFSR0VUX0RFVklDRSk6IHsKIAkJc3RydWN0IHNuZF9zc3RfdGFyZ2V0X2RldmljZSB0YXJnZXRfZGV2aWNlOwogCi0JCXByX2RlYnVnKCJTRVRfVEFSR0VUX0RFVklDRSByZWNpZXZlZCFcbiIpOworCQlwcl9kZWJ1ZygiU0VUX1RBUkdFVF9ERVZJQ0UgcmVjZWl2ZWQhXG4iKTsKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZ0YXJnZXRfZGV2aWNlLCAodm9pZCBfX3VzZXIgKilhcmcsCiAJCQkJc2l6ZW9mKHRhcmdldF9kZXZpY2UpKSkgewogCQkJcmV0dmFsID0gLUVGQVVMVDsKQEAgLTEyNTYsNyArMTI1Niw3IEBACiAJY2FzZSBfSU9DX05SKFNORFJWX1NTVF9EUklWRVJfSU5GTyk6IHsKIAkJc3RydWN0IHNuZF9zc3RfZHJpdmVyX2luZm8gaW5mbzsKIAotCQlwcl9kZWJ1ZygiU05EUlZfU1NUX0RSSVZFUl9JTkZPIHJlY2l2ZWRcbiIpOworCQlwcl9kZWJ1ZygiU05EUlZfU1NUX0RSSVZFUl9JTkZPIHJlY2VpdmVkXG4iKTsKIAkJaW5mby52ZXJzaW9uID0gU1NUX1ZFUlNJT05fTlVNOwogCQkvKiBoYXJkIGNvZGluZywgc2h1ZCBnZXQgc3VtaG93IGxhdGVyICovCiAJCWluZm8uYWN0aXZlX3BjbV9zdHJlYW1zID0gc3N0X2Rydl9jdHgtPnN0cmVhbV9jbnQgLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHJ2X2ludGVyZmFjZS5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHJ2X2ludGVyZmFjZS5jCmluZGV4IGVhOGUyNTEuLmU5YzE4MjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2Rydl9pbnRlcmZhY2UuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kcnZfaW50ZXJmYWNlLmMKQEAgLTMxNSw3ICszMTUsNyBAQAogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoJnNzdF9kcnZfY3R4LT5wY2ktPmRldik7CiAKIAlpZiAoc3N0X2Rydl9jdHgtPnNzdF9zdGF0ZSA9PSBTU1RfU1VTUEVOREVEKSB7Ci0JCS8qIExQRSBpcyBzdXNwZW5kZWQsIHJlc3VtZSBpdCBiZWZvcmUgcHJvY2VkaW5nKi8KKwkJLyogTFBFIGlzIHN1c3BlbmRlZCwgcmVzdW1lIGl0IGJlZm9yZSBwcm9jZWVkaW5nKi8KIAkJcHJfZGVidWcoIlJlc3VtaW5nIGZyb20gU3VzcGVuZGVkIHN0YXRlXG4iKTsKIAkJcmV0dmFsID0gaW50ZWxfc3N0X3Jlc3VtZShzc3RfZHJ2X2N0eC0+cGNpKTsKIAkJaWYgKHJldHZhbCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHNwLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYwppbmRleCA2ZTVjOTE1Li5iZmZlNGM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYwpAQCAtMzUwLDcgKzM1MCw3IEBACiAKIH0KIAotLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb2VyIGRvd25sb2FkaW5nIHRoZSBjb2RlYy9wb3N0cHJvY2Vzc2luZworLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBjb2RlYy9wb3N0cHJvY2Vzc2luZwogbGlicmFyeSBpcyBzZXQgZm9yIGRvd25sb2FkIHRvIFNTVCBEU1AqLwogc3RhdGljIGludCBzc3RfdmFsaWRhdGVfbGlicmFyeShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3X2xpYiwKIAkJc3RydWN0IGxpYl9zbG90X2luZm8gKnNsb3QsCkBAIC00MDUsNyArNDA1LDcgQEAKIAogfQogCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIEZXIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgbGliYXJ5IGRvd25sb2FkCisvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIEZXIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgbGlicmFyeSBkb3dubG9hZAogVGhpcyBmdW5jdGlvbiBwcmVwYXJlcyB0aGUgbGlicmFyeSB0byBkb3dubG9hZCovCiBpbnQgc3N0X2xvYWRfbGlicmFyeShzdHJ1Y3Qgc25kX3NzdF9saWJfZG93bmxvYWQgKmxpYiwgdTggb3BzKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZndfaXBjLmggYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaAppbmRleCA4ZGYzMTNkLi4wZjBjNWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaApAQCAtMTExLDcgKzExMSw3IEBACiAjZGVmaW5lIElQQ19TU1RfUEVSSU9EX0VMQVBTRUQgMHg5NyAvKiBwZXJpb2QgZWxhcHNlZCAqLwogI2RlZmluZSBJUENfSUFfVEFSR0VUX0RFVl9DSE5HRCAweDk4IC8qIGVycm9yIGluIHByb2Nlc3NpbmcgYSBzdHJlYW0gKi8KIAotI2RlZmluZSBJUENfU1NUX0VSUk9SX0VWRU5UIDB4OTkgLyogQnVmZmVyIG92ZXIgcnVuIG9jY3VyZWQgKi8KKyNkZWZpbmUgSVBDX1NTVF9FUlJPUl9FVkVOVCAweDk5IC8qIEJ1ZmZlciBvdmVyIHJ1biBvY2N1cnJlZCAqLwogLyogTDJTIG1lc3NhZ2VzICovCiAjZGVmaW5lIElQQ19TQ19ERFJfTElOS19VUCAweEMwCiAjZGVmaW5lIElQQ19TQ19ERFJfTElOS19ET1dOIDB4QzEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbS5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKaW5kZXggNzk1ZTQyYS4uZGQ1OGJlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKQEAgLTk4LDcgKzk4LDcgQEAKIAkJaWYgKHNzdF9kcnZfY3R4LT5zdHJlYW1zW2ldLnN0YXR1cyA9PSBTVFJFQU1fVU5fSU5JVCkKIAkJCXJldHVybiBpOwogCX0KLQlwcl9kZWJ1ZygiRGlkbnQgZmluZCBlbXB0eSBzdHJlYW0gZm9yIG1yc3RcbiIpOworCXByX2RlYnVnKCJEaWRuJ3QgZmluZCBlbXB0eSBzdHJlYW0gZm9yIG1yc3RcbiIpOwogCXJldHVybiAtRUJVU1k7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbV9lbmNvZGVkLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9zdHJlYW1fZW5jb2RlZC5jCmluZGV4IDI5NzUzYzcuLmQ1ZjA3YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbV9lbmNvZGVkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtX2VuY29kZWQuYwpAQCAtOTE0LDcgKzkxNCw3IEBACiAJCSh2b2lkICopICgodW5zaWduZWQgbG9uZykgcmFyX2J1ZmZlcnMuYnVzX2FkZHJlc3MpOwogCQlwcl9kZWJ1ZygiUkFSIGJ1ZiBhZGRyIGluIERuUiAoaW5wdXQgYnVmZmVyIGZ1bmN0aW9uKTB4JWx1IiwKIAkJCQkgKHVuc2lnbmVkIGxvbmcpIHN0cl9pbmZvLT5kZWNvZGVfaWJ1Zik7Ci0JCXByX2RlYnVnKCJyYXIgaW4gRG5SIGRlY29kZSBmdW50aW9uL291dHB1dCBiX2FkZCByYXIgPTB4JWx1IiwKKwkJcHJfZGVidWcoInJhciBpbiBEblIgZGVjb2RlIGZ1bmN0aW9uL291dHB1dCBiX2FkZCByYXIgPTB4JWx1IiwKIAkJCQkodW5zaWduZWQgbG9uZykgcmFyX2J1ZmZlcnMuYnVzX2FkZHJlc3MpOwogCQkqaW5wdXRfaW5kZXggPSBpICsgMTsKIAkJc3RyX2luZm8tPmRlY29kZV9pc2l6ZSA9IGRidWZzLT5pYnVmcy0+YnVmZl9lbnRyeVtpXS5zaXplOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5jCmluZGV4IGZiMjI5MjEuLmQyMDc2MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxtaWQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmMKQEAgLTc3Myw3ICs3NzMsNyBAQAogCQlpZiAocmV0X3ZhbCkKIAkJCXJldHVybiByZXRfdmFsOwogCQlzc3RfY2FyZF92ZW5kb3JfaWQgPSAodmVuZG9yX2FkZHIudmFsdWUgJiAoTUFTSzJ8TUFTSzF8TUFTSzApKTsKLQkJcHJfZGVidWcoIm9yZ2luYWwgbiBleHRyYXRlZCB2ZW5kb3IgaWQgPSAweCV4ICVkXG4iLAorCQlwcl9kZWJ1Zygib3JpZ2luYWwgbiBleHRyYXRlZCB2ZW5kb3IgaWQgPSAweCV4ICVkXG4iLAogCQkJCXZlbmRvcl9hZGRyLnZhbHVlLCBzc3RfY2FyZF92ZW5kb3JfaWQpOwogCQlpZiAoc3N0X2NhcmRfdmVuZG9yX2lkIDwgMCB8fCBzc3RfY2FyZF92ZW5kb3JfaWQgPiAyKSB7CiAJCQlwcl9lcnIoInZlbmRvciBjYXJkIG5vdCBzdXBwb3J0ZWQhIVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmggYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmgKaW5kZXggY2E4ODFiNy4uZTc3ZGE4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxtaWQuaApAQCAtOTAsNyArOTAsNyBAQAogICogQGNhcmRfaW5kZXg6IHNvdW5kIGNhcmQgaW5kZXgKICAqIEBjYXJkX2lkOiBzb3VuZCBjYXJkIGlkIGRldGVjdGVkCiAgKiBAc3N0ZHJ2X29wczogcHRyIHRvIHNzdCBkcml2ZXIgb3BzCi0gKiBAcGRldjogcHRyIHRvIHBsYXRmcm9tIGRldmljZQorICogQHBkZXY6IHB0ciB0byBwbGF0Zm9ybSBkZXZpY2UKICAqIEBpcnE6IGludGVycnVwdCBudW1iZXIgZGV0ZWN0ZWQKICAqIEBwbWljX3N0YXR1czogRGV2aWNlIHN0YXR1cyBvZiBzb3VuZCBjYXJkCiAgKiBAaW50X2Jhc2U6IHB0ciB0byBNTUlPIGludGVycnVwdCByZWdpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9pbml0LmMgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3IvaW5pdC5jCmluZGV4IDVjMDFmMjguLjhhZjdjODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9pbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2tldWNyL2luaXQuYwpAQCAtOTAsNyArOTAsNyBAQAogCiAJcmVzdWx0ID0gRU5FX1NlbmRTY3NpQ21kKHVzLCBGRElSX1JFQUQsICZidWYsIDApOwogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiRXhlY3Rpb24gTVMgSW5pdCBDb2RlIEZhaWwgISFcbiIpOworCQlwcmludGsoS0VSTl9FUlIgIkV4ZWN1dGlvbiBNUyBJbml0IENvZGUgRmFpbCAhIVxuIik7CiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAJfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAlyZXN1bHQgPSBFTkVfU2VuZFNjc2lDbWQodXMsIEZESVJfUkVBRCwgJmJ1ZiwgMCk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpIHsKIAkJcHJpbnRrKEtFUk5fRVJSCi0JCSAgICAgICAiRXhlY3Rpb24gU00gSW5pdCBDb2RlIEZhaWwgISEgcmVzdWx0ID0gJXhcbiIsIHJlc3VsdCk7CisJCSAgICAgICAiRXhlY3V0aW9uIFNNIEluaXQgQ29kZSBGYWlsICEhIHJlc3VsdCA9ICV4XG4iLCByZXN1bHQpOwogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2tldWNyL3NtaWxtYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYwppbmRleCAyY2JlOWY4Li45NWM2ODhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYworKysgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYwpAQCAtNjQsNyArNjQsNyBAQAogZXh0ZXJuIHN0cnVjdCBBRERSRVNTICAgIE1lZGlhOwogZXh0ZXJuIHN0cnVjdCBDSVNfQVJFQSAgIENpc0FyZWE7CiAKLS8vQklUIENvbnRyb2xsIE1hY3JvCisvL0JJVCBDb250cm9sIE1hY3JvCiBCWVRFIEJpdERhdGFbXSA9IHsgMHgwMSwweDAyLDB4MDQsMHgwOCwweDEwLDB4MjAsMHg0MCwweDgwIH0gOwogI2RlZmluZSBTZXRfRF9CaXQoYSxiKSAgICAoYVsoQllURSkoKGIpLzgpXXw9IEJpdERhdGFbKGIpJThdKQogI2RlZmluZSBDbHJfRF9CaXQoYSxiKSAgICAoYVsoQllURSkoKGIpLzgpXSY9fkJpdERhdGFbKGIpJThdKQpAQCAtNzYsNyArNzYsNyBAQAogCiAKIC8vCi0vLy8vUG93ZXIgQ29udHJvbGwgJiBNZWRpYSBFeGlzdCBDaGVjayBGdW5jdGlvbgorLy8vL1Bvd2VyIENvbnRyb2wgJiBNZWRpYSBFeGlzdCBDaGVjayBGdW5jdGlvbgogLy8vLy0tLS0tIEluaXRfRF9TbWFydE1lZGlhKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vaW50IEluaXRfRF9TbWFydE1lZGlhKHZvaWQpCiAvL3sKQEAgLTU3NSw3ICs1NzUsNyBAQAogLy8gICAgcmV0dXJuKFNVQ0NFU1MpOwogLy99CiAvLwotLy8vL1Bvd2VyIENvbnRyb2xsICYgTWVkaWEgRXhpc3QgQ2hlY2sgU3Vicm91dGluZQorLy8vL1Bvd2VyIENvbnRyb2wgJiBNZWRpYSBFeGlzdCBDaGVjayBTdWJyb3V0aW5lCiAvLy8vLS0tLS0gSW5pdGlhbGl6ZV9EX01lZGlhKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy92b2lkIEluaXRpYWxpemVfRF9NZWRpYSh2b2lkKQogLy97CkBAIC03MzgsNyArNzM4LDcgQEAKIC8vICAgIHJldHVybihTVUNDRVNTKTsKIC8vfQogKi8KLS8vU21hcnRNZWRpYSBQaHlzaWNhbCBBZGRyZXNzIENvbnRyb2xsIFN1YnJvdXRpbmUKKy8vU21hcnRNZWRpYSBQaHlzaWNhbCBBZGRyZXNzIENvbnRyb2wgU3Vicm91dGluZQogLy8tLS0tLSBDb252X0RfTWVkaWFBZGRyKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbnQgQ29udl9EX01lZGlhQWRkcihzdHJ1Y3QgdXNfZGF0YSAqdXMsIERXT1JEIGFkZHIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbHN1Yi5jIGIvZHJpdmVycy9zdGFnaW5nL2tldWNyL3NtaWxzdWIuYwppbmRleCA4MGRhNjFjLi40ZmU0NzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbHN1Yi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9zbWlsc3ViLmMKQEAgLTU3LDcgKzU3LDcgQEAKICNkZWZpbmUgT0REICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAvLyBPZGQgUGFnZSBmb3IgMjU2Ynl0ZS9wYWdlCiAKIAotLy9TbWFydE1lZGlhIFJlZHVuZGFudCBidWZmZXIgZGF0YSBDb250cm9sbCBTdWJyb3V0aW5lCisvL1NtYXJ0TWVkaWEgUmVkdW5kYW50IGJ1ZmZlciBkYXRhIENvbnRyb2wgU3Vicm91dGluZQogLy8tLS0tLSBDaGVja19EX0RhdGFCbGFuaygpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbnQgQ2hlY2tfRF9EYXRhQmxhbmsoQllURSAqcmVkdW5kYW50KQogewpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAKICAgICB9CiB9CiAvKgotLy8vL1NtYXJ0TWVkaWEgUG93ZXIgQ29udHJvbGwgU3Vicm91dGluZQorLy8vL1NtYXJ0TWVkaWEgUG93ZXIgQ29udHJvbCBTdWJyb3V0aW5lCiAvLy8vLS0tLS0gQ250X0RfUmVzZXQoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvL3ZvaWQgQ250X0RfUmVzZXQodm9pZCkKIC8vewpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAKIC8vfQogLy8KICovCi0vL1NtYXJ0TWVkaWEgRUNDIENvbnRyb2xsIFN1YnJvdXRpbmUKKy8vU21hcnRNZWRpYSBFQ0MgQ29udHJvbCBTdWJyb3V0aW5lCiAvLy0tLS0tIENoZWNrX0RfUmVhZEVycm9yKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW50IENoZWNrX0RfUmVhZEVycm9yKEJZVEUgKnJlZHVuZGFudCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9saXJjL2xpcmNfZW5lMDEwMC5oIGIvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKaW5kZXggNzc2YjY5My4uMDZiZWJkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKQEAgLTgxLDcgKzgxLDcgQEAKIAogLyogQ0lSIGJsb2NrIHNldHRpbmdzICovCiAjZGVmaW5lIEVORV9DSVJfQ09ORjEJCTB4RkVDMAotI2RlZmluZSBFTkVfQ0lSX0NPTkYxX0FEQ19PTgkweDcJIC8qIHJlY2lldmVyIG9uIGdwaW80MCBlbmFibGVkICovCisjZGVmaW5lIEVORV9DSVJfQ09ORjFfQURDX09OCTB4NwkgLyogcmVjZWl2ZXIgb24gZ3BpbzQwIGVuYWJsZWQgKi8KICNkZWZpbmUgRU5FX0NJUl9DT05GMV9MRUFSTjEJKDEgPDwgMykgLyogZW5hYmxlZCBvbiBsZWFybmluZyBtb2RlICovCiAjZGVmaW5lIEVORV9DSVJfQ09ORjFfVFhfT04JMHgzMAkgLyogZW5hYmxlZCBvbiB0cmFuc21pdCAqLwogI2RlZmluZSBFTkVfQ0lSX0NPTkYxX1RYX0NBUlIJKDEgPDwgNykgLyogc2VuZCBUWCBjYXJyaWVyIG9yIG5vdCAqLwpAQCAtOTYsNyArOTYsNyBAQAogCiAvKiB0cmFuc21pdHRlciAtIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKi8KIC8qIEtCMzkyNkMgYW5kIGhpZ2hlciAqLwotLyogdHJhbnNtaXNzaW9uIGlzIHZlcnkgc2ltaWxpYXIgdG8gcmVjaWV2aW5nLCBhIGJ5dGUgaXMgd3JpdHRlbiB0byAqLworLyogdHJhbnNtaXNzaW9uIGlzIHZlcnkgc2ltaWxhciB0byByZWNlaXZpbmcsIGEgYnl0ZSBpcyB3cml0dGVuIHRvICovCiAvKiBFTkVfVFhfSU5QVVQsIGluIHNhbWUgbWFubmVyIGFzIGl0IGlzIHJlYWQgZnJvbSBzYW1wbGUgYnVmZmVyICovCiAvKiBzYW1wbGUgcGVyaW9kIGlzIGZpeGVkKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL21lbXJhci9LY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmVlYmM1Li4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvS2NvbmZpZworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLWNvbmZpZyBNUlNUX1JBUl9IQU5ETEVSCi0JdHJpc3RhdGUgIlJBUiBoYW5kbGVyIGRyaXZlciBmb3IgSW50ZWwgTW9vcmVzdG93biBwbGF0Zm9ybSIKLQlkZXBlbmRzIG9uIFJBUl9SRUdJU1RFUgotCS0tLWhlbHAtLS0KLQkgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGEgbWVtb3J5IG1hbmFnZW1lbnQgaW50ZXJmYWNlIHRvCi0JICByZXN0cmljdGVkIGFjY2VzcyByZWdpb25zIChSQVIpIGF2YWlsYWJsZSBvbiB0aGUgSW50ZWwKLQkgIE1vb3Jlc3Rvd24gcGxhdGZvcm0uCi0KLQkgIE9uY2UgbG9ja2VkIGRvd24sIHJlc3RyaWN0ZWQgYWNjZXNzIHJlZ2lvbnMgYXJlIG9ubHkKLQkgIGFjY2Vzc2libGUgYnkgc3BlY2lmaWMgaGFyZHdhcmUgb24gdGhlIHBsYXRmb3JtLiAgVGhlIHg4NgotCSAgQ1BVIGlzIHR5cGljYWxseSBub3Qgb25lIG9mIHRob3NlIHBsYXRmb3Jtcy4gIEFzIHN1Y2ggdGhpcwotCSAgZHJpdmVyIGRvZXMgbm90IGFjY2VzcyBSQVIsIGFuZCBvbmx5IHByb3ZpZGVzIGEgYnVmZmVyCi0JICBhbGxvY2F0aW9uL2Jvb2trZWVwaW5nIG1lY2hhbmlzbS4KLQotCSAgSWYgdW5zdXJlLCBzYXkgTi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvTWFrZWZpbGUgYi9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzMzNmMwLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLW9iai0kKENPTkZJR19NUlNUX1JBUl9IQU5ETEVSKQkrPSBtZW1yYXIubwotbWVtcmFyLXkJCQk6PSBtZW1yYXJfYWxsb2NhdG9yLm8gbWVtcmFyX2hhbmRsZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9UT0RPIGIvZHJpdmVycy9zdGFnaW5nL21lbXJhci9UT0RPCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzVlMDliLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvVE9ETworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVJBUiBIYW5kbGVyIChtZW1yYXIpIERyaXZlciBUT0RPIEl0ZW1zCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1NYWludGFpbmVyOiBFdWdlbmUgRXBzaHRleW4gPGV1Z2VuZS5lcHNodGV5bkBpbnRlbC5jb20+Ci0KLW1lbXJhci5oCi0tLS0tLS0tLQotMS4gVGhpcyBoZWFkZXIgZXhwb3NlcyB0aGUgZHJpdmVyJ3MgdXNlciBzcGFjZSBhbmQga2VybmVsIHNwYWNlCi0gICBpbnRlcmZhY2VzLiAgSXQgc2hvdWxkIGJlIG1vdmVkIHRvIDxsaW51eC9yYXIvbWVtcmFyLmg+LCBvcgotICAgc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLCB3aGVuIHRoaXMgbWVtcmFyIGRyaXZlciBpcyBtb3ZlZCBvdXQKLSAgIG9mIGBzdGFnaW5nJy4KLSAgICAgYS4gSXQgd291bGQgYmUgaWRlYWwgaWYgc3RhZ2luZy9yYXJfcmVnaXN0ZXIvcmFyX3JlZ2lzdGVyLmggd2FzCi0gICAgICAgIG1vdmVkIHRvIHRoZSBzYW1lIGRpcmVjdG9yeS4KLQotbWVtcmFyX2FsbG9jYXRvci5bY2hdCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTEuIEFkZHJlc3MgcG90ZW50aWFsIGZyYWdtZW50YXRpb24gaXNzdWVzIHdpdGggdGhlIG1lbXJhcl9hbGxvY2F0b3IuCi0KLTIuIEhpZGUgc3RydWN0IG1lbXJhcl9hbGxvY2F0b3IgZGV0YWlscy9maWVsZHMuICBUaGV5IG5lZWQgbm90IGJlCi0gICBleHBvc2VkIHRvIHRoZSB1c2VyLgotICAgICBhLiBGb3J3YXJkIGRlY2xhcmUgc3RydWN0IG1lbXJhcl9hbGxvY2F0b3IuCi0gICAgIGIuIE1vdmUgYWxsIHRocmVlIHN0cnVjdCBkZWZpbml0aW9ucyB0byBgbWVtcmFyX2FsbG9jYXRvci5jJwotICAgICAgICBzb3VyY2UgZmlsZS4KLSAgICAgYy4gQWRkIGEgbWVtcmFyX2FsbG9jYXRvcl9sYXJnZXN0X2ZyZWVfYXJlYSgpIGZ1bmN0aW9uLCBvcgotICAgICAgICBzb21ldGhpbmcgbGlrZSB0aGF0IHRvIGdldCBhY2Nlc3MgdG8gdGhlIHZhbHVlIG9mIHRoZSBzdHJ1Y3QKLSAgICAgICAgbWVtcmFyX2FsbG9jYXRvciAibGFyZ2VzdF9mcmVlX2FyZWEiIGZpZWxkLiAgVGhpcyBhbGxvd3MgdGhlCi0gICAgICAgIHN0cnVjdCBtZW1yYXJfYWxsb2NhdG9yIGZpZWxkcyB0byBiZSBjb21wbGV0ZWx5IGhpZGRlbiBmcm9tCi0gICAgICAgIHRoZSB1c2VyLiAgVGhlIG1lbXJhcl9oYW5kbGVyIGNvZGUgcmVhbGx5IG9ubHkgbmVlZHMgdGhpcyBmb3IKLSAgICAgICAgc3RhdGlzdGljIGdhdGhlcmluZyBvbi1kZW1hbmQuCi0gICAgIGQuIERvIHRoZSBzYW1lIGZvciB0aGUgImNhcGFjaXR5IiBmaWVsZCBhcyB0aGUKLSAgICAgICAgImxhcmdlc3RfZnJlZV9hcmVhIiBmaWVsZC4KLQotMy4gTW92ZSBtZW1yYXJfYWxsb2NhdG9yLiogdG8ga2VybmVsIGBsaWInIGRpcmVjdG9yeSBzaW5jZSBpdCBpcyBIVwotICAgbmV1dHJhbC4KLSAgICAgYS4gQWx0ZXJuYXRpdmVseSwgdXNlIGxpYi9nZW5hbGxvYy5jIGluc3RlYWQuCi0gICAgIGIuIEEga2VybmVsIHBvcnQgb2YgRG91ZyBMZWEncyBtYWxsb2MoKSBpbXBsZW1lbnRhdGlvbiBtYXkgYWxzbwotICAgICAgICBiZSBhbiBvcHRpb24uCi0KLW1lbXJhcl9oYW5kbGVyLmMKLS0tLS0tLS0tLS0tLS0tLS0KLTEuIFNwbGl0IHVzZXIgc3BhY2UgaW50ZXJmYWNlIChpb2N0bCBjb2RlKSBmcm9tIGNvcmUva2VybmVsIGNvZGUsCi0gICBlLmcuOgotICAgICBtZW1yYXJfaGFuZGxlci5jIC0+IG1lbXJhcl9jb3JlLmMsIG1lbXJhcl91c2VyLmMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyLWFiaSBiL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyLWFiaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIzZmM5OS4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL21lbXJhci1hYmkKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1XaGF0OgkJL2Rldi9tZW1yYXIKLURhdGU6CQlNYXJjaCAyMDEwCi1LZXJuZWxWZXJzaW9uOgkyLjYuMzQKLUNvbnRhY3Q6CUV1Z2VuZSBFcHNodGV5biA8ZXVnZW5lLmVwc2h0ZXluQGludGVsLmNvbT4KLURlc2NyaXB0aW9uOglUaGUgSW50ZWwgTW9vcmVzdG93biBSZXN0cmljdGVkIEFjY2VzcyBSZWdpb24gKFJBUikKLQkJSGFuZGxlciBkcml2ZXIgZXhwb3NlcyBhbiBpb2N0bCgpIGJhc2VkIGludGVyZmFjZSB0aGF0Ci0JCWFsbG93cyBhIHVzZXIgdG8gcmVzZXJ2ZSBhbmQgcmVsZWFzZSBibG9ja3Mgb2YgUkFSCi0JCW1lbW9yeS4KLQotCQlOb3RlOiAgQSBzeXNmcyBiYXNlZCBvbmUgd2FzIG5vdCBhcHByb3ByaWF0ZSBmb3IgdGhlCi0JCVJBUiBoYW5kbGVyJ3MgdXNhZ2UgbW9kZWwuCi0KLQkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0JCQkJaW9jdGwoKSBSZXF1ZXN0cwotCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQkJUkFSX0hBTkRMRVJfUkVTRVJWRQotCQktLS0tLS0tLS0tLS0tLS0tLS0tCi0JCURlc2NyaXB0aW9uOglSZXNlcnZlIFJBUiBibG9jay4KLQkJVHlwZToJCXN0cnVjdCBSQVJfYmxvY2tfaW5mbwotCQlEaXJlY3Rpb246CWluL291dAotCQlFcnJvcnM6CQlFSU5WQUwgKGludmFsaWQgUkFSIHR5cGUgb3Igc2l6ZSkKLQkJCQlFTk9NRU0gKG5vdCBlbm91Z2ggUkFSIG1lbW9yeSkKLQotCQlSQVJfSEFORExFUl9TVEFUCi0JCS0tLS0tLS0tLS0tLS0tLS0KLQkJRGVzY3JpcHRpb246CUdldCBSQVIgc3RhdGlzdGljcy4KLQkJVHlwZToJCXN0cnVjdCBSQVJfc3RhdAotCQlEaXJlY3Rpb246CWluL291dAotCQlFcnJvcnM6CQlFSU5WQUwgKGludmFsaWQgUkFSIHR5cGUpCi0KLQkJUkFSX0hBTkRMRVJfUkVMRUFTRQotCQktLS0tLS0tLS0tLS0tLS0tLS0tCi0JCURlc2NyaXB0aW9uOglSZWxlYXNlIHByZXZpb3VzbHkgcmVzZXJ2ZWQgUkFSIGJsb2NrLgotCQlUeXBlOgkJMzIgYml0IHVuc2lnbmVkIGludGVnZXIKLQkJCQkoZS5nLiB1aW50MzJfdCksIGkuZSB0aGUgUkFSICJoYW5kbGUiLgotCQlEaXJlY3Rpb246CWluCi0JCUVycm9yczoJCUVJTlZBTCAoaW52YWxpZCBSQVIgaGFuZGxlKQotCi0KLQkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0JCQlpb2N0bCgpIFJlcXVlc3QgUGFyYW1ldGVyIFR5cGVzCi0JCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCQlUaGUgc3RydWN0dXJlcyByZWZlcnJlZCB0byBhYm92ZSBhcmUgZGVmaW5lZCBhcwotCQlmb2xsb3dzOgotCi0JCS8qKgotCQkgKiBzdHJ1Y3QgUkFSX2Jsb2NrX2luZm8gLSB1c2VyIHNwYWNlIHN0cnVjdCB0aGF0Ci0JCSAqCQkJICAgZGVzY3JpYmVzIFJBUiBidWZmZXIKLQkJICogQHR5cGU6CVR5cGUgb2YgUkFSIG1lbW9yeSAoZS5nLiwKLQkJICoJCVJBUl9UWVBFX1ZJREVPIG9yIFJBUl9UWVBFX0FVRElPKSBbaW5dCi0JCSAqIEBzaXplOglSZXF1ZXN0ZWQgc2l6ZSBvZiBhIGJsb2NrIGluIGJ5dGVzIHRvCi0JCSAqCQliZSByZXNlcnZlZCBpbiBSQVIuIFtpbl0KLQkJICogQGhhbmRsZToJSGFuZGxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVmZXIgdG8KLQkJICoJCXJlc2VydmVkIGJsb2NrLiBbb3V0XQotCQkgKgotCQkgKiBUaGlzIGlzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZXhwb3NlZCB0byB0aGUgdXNlcgotCQkgKiBzcGFjZSB0aGF0IGRlc2NyaWJlcyBhIGdpdmVuIFJBUiBidWZmZXIuICBJdCB1c2VkCi0JCSAqIGFzIHRoZSBwYXJhbWV0ZXIgZm9yIHRoZSBSQVJfSEFORExFUl9SRVNFUlZFIGlvY3RsLgotCQkgKiBUaGUgYnVmZmVyJ3MgdW5kZXJseWluZyBidXMgYWRkcmVzcyBpcyBub3QgZXhwb3NlZAotCQkgKiB0byB0aGUgdXNlci4gIFVzZXIgc3BhY2UgY29kZSByZWZlcnMgdG8gdGhlIGJ1ZmZlcgotCQkgKiBlbnRpcmVseSBieSAiaGFuZGxlIi4KLQkJICovCi0JCXN0cnVjdCBSQVJfYmxvY2tfaW5mbyB7Ci0JCQlfX3UzMiB0eXBlOwotCQkJX191MzIgc2l6ZTsKLQkJCV9fdTMyIGhhbmRsZTsKLQkJfTsKLQotCQkvKioKLQkJICogc3RydWN0IFJBUl9zdGF0IC0gUkFSIHN0YXRpc3RpY3Mgc3RydWN0dXJlCi0JCSAqIEB0eXBlOgkJVHlwZSBvZiBSQVIgbWVtb3J5IChlLmcuLAotCQkgKgkJCVJBUl9UWVBFX1ZJREVPIG9yCi0JCSAqCQkJUkFSX1RZUEVfQVVESU8pIFtpbl0KLQkJICogQGNhcGFjaXR5OgkJVG90YWwgc2l6ZSBvZiBSQVIgbWVtb3J5Ci0JCSAqCQkJcmVnaW9uLiBbb3V0XQotCQkgKiBAbGFyZ2VzdF9ibG9ja19zaXplOglTaXplIG9mIHRoZSBsYXJnZXN0IHJlc2VydmFibGUKLQkJICoJCQlibG9jay4gW291dF0KLQkJICoKLQkJICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCBmb3IgUkFSX0hBTkRMRVJfU1RBVCBpb2N0bC4KLQkJICovCi0JCXN0cnVjdCBSQVJfc3RhdCB7Ci0JCQlfX3UzMiB0eXBlOwotCQkJX191MzIgY2FwYWNpdHk7Ci0JCQlfX3UzMiBsYXJnZXN0X2Jsb2NrX3NpemU7Ci0JCX07Ci0KLQkJTGFzdGx5LCB0aGUgUkFSX0hBTkRMRVJfUkVMRUFTRSBpb2N0bCBleHBlY3RzIGEKLQkJImhhbmRsZSIgdG8gdGhlIFJBUiBibG9jayBvZiBtZW1vcnkuICBJdCBpcyBhIDMyIGJpdAotCQl1bnNpZ25lZCBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXIuaCBiL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWI3M2IuLjAwMDAwMDAKLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogICAgICBSQVIgSGFuZGxlciAoL2Rldi9tZW1yYXIpIGludGVybmFsIGRyaXZlciBBUEkuCi0gKiAgICAgIENvcHlyaWdodCAoQykgMjAxMCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsCi0gKiAgICAgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICoKLSAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotICogICAgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCi0gKiAgICAgIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqICAgICAgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiAgICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqICAgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICogICAgICBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCi0gKiAgICAgIFRoZSBmdWxsIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoaXMKLSAqICAgICAgZGlzdHJpYnV0aW9uIGluIHRoZSBmaWxlIGNhbGxlZCBDT1BZSU5HLgotICovCi0KLQotI2lmbmRlZiBfTUVNUkFSX0gKLSNkZWZpbmUgX01FTVJBUl9ICi0KLSNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgotI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0KLQotLyoqCi0gKiBzdHJ1Y3QgUkFSX3N0YXQgLSBSQVIgc3RhdGlzdGljcyBzdHJ1Y3R1cmUKLSAqIEB0eXBlOgkJVHlwZSBvZiBSQVIgbWVtb3J5IChlLmcuLCBhdWRpbyB2cy4gdmlkZW8pCi0gKiBAY2FwYWNpdHk6CQlUb3RhbCBzaXplIG9mIFJBUiBtZW1vcnkgcmVnaW9uLgotICogQGxhcmdlc3RfYmxvY2tfc2l6ZToJU2l6ZSBvZiB0aGUgbGFyZ2VzdCByZXNlcnZhYmxlIGJsb2NrLgotICoKLSAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgZm9yIFJBUl9IQU5ETEVSX1NUQVQgaW9jdGwgYW5kIGZvciB0aGUKLSAqIFJBUl9nZXRfc3RhdCgpIHVzZXIgc3BhY2Ugd3JhcHBlciBmdW5jdGlvbi4KLSAqLwotc3RydWN0IFJBUl9zdGF0IHsKLQlfX3UzMiB0eXBlOwotCV9fdTMyIGNhcGFjaXR5OwotCV9fdTMyIGxhcmdlc3RfYmxvY2tfc2l6ZTsKLX07Ci0KLQotLyoqCi0gKiBzdHJ1Y3QgUkFSX2Jsb2NrX2luZm8gLSB1c2VyIHNwYWNlIHN0cnVjdCB0aGF0IGRlc2NyaWJlcyBSQVIgYnVmZmVyCi0gKiBAdHlwZToJVHlwZSBvZiBSQVIgbWVtb3J5IChlLmcuLCBhdWRpbyB2cy4gdmlkZW8pCi0gKiBAc2l6ZToJUmVxdWVzdGVkIHNpemUgb2YgYSBibG9jayB0byBiZSByZXNlcnZlZCBpbiBSQVIuCi0gKiBAaGFuZGxlOglIYW5kbGUgdGhhdCBjYW4gYmUgdXNlZCB0byByZWZlciB0byByZXNlcnZlZCBibG9jay4KLSAqCi0gKiBUaGlzIGlzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZXhwb3NlZCB0byB0aGUgdXNlciBzcGFjZSB0aGF0Ci0gKiBkZXNjcmliZXMgYSBnaXZlbiBSQVIgYnVmZmVyLiAgVGhlIGJ1ZmZlcidzIHVuZGVybHlpbmcgYnVzIGFkZHJlc3MKLSAqIGlzIG5vdCBleHBvc2VkIHRvIHRoZSB1c2VyLiAgVXNlciBzcGFjZSBjb2RlIHJlZmVycyB0byB0aGUgYnVmZmVyCi0gKiBlbnRpcmVseSBieSAiaGFuZGxlIi4KLSAqLwotc3RydWN0IFJBUl9ibG9ja19pbmZvIHsKLQlfX3UzMiB0eXBlOwotCV9fdTMyIHNpemU7Ci0JX191MzIgaGFuZGxlOwotfTsKLQotCi0jZGVmaW5lIFJBUl9JT0NUTF9CQVNFIDB4RTAKLQotLyogUmVzZXJ2ZSBSQVIgYmxvY2suICovCi0jZGVmaW5lIFJBUl9IQU5ETEVSX1JFU0VSVkUgX0lPV1IoUkFSX0lPQ1RMX0JBU0UsIDB4MDAsIHN0cnVjdCBSQVJfYmxvY2tfaW5mbykKLQotLyogUmVsZWFzZSBwcmV2aW91c2x5IHJlc2VydmVkIFJBUiBibG9jay4gKi8KLSNkZWZpbmUgUkFSX0hBTkRMRVJfUkVMRUFTRSBfSU9XKFJBUl9JT0NUTF9CQVNFLCAweDAxLCBfX3UzMikKLQotLyogR2V0IFJBUiBzdGF0cy4gKi8KLSNkZWZpbmUgUkFSX0hBTkRMRVJfU1RBVCAgICBfSU9XUihSQVJfSU9DVExfQkFTRSwgMHgwMiwgc3RydWN0IFJBUl9zdGF0KQotCi0KLSNpZmRlZiBfX0tFUk5FTF9fCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiAgICAgICAgICAgICAgIEtlcm5lbCBTaWRlIFJBUiBIYW5kbGVyIEludGVyZmFjZSAgICAgICAgICAgICAgICAqLwotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoqCi0gKiBzdHJ1Y3QgUkFSX2J1ZmZlciAtIGtlcm5lbCBzcGFjZSBzdHJ1Y3QgdGhhdCBkZXNjcmliZXMgUkFSIGJ1ZmZlcgotICogQGluZm86CQlzdHJ1Y3R1cmUgY29udGFpbmluZyBiYXNlIFJBUiBidWZmZXIgaW5mb3JtYXRpb24KLSAqIEBidXNfYWRkcmVzczoJYnVmZmVyIGJ1cyBhZGRyZXNzCi0gKgotICogU3RydWN0dXJlIHRoYXQgY29udGFpbnMgYWxsIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gYSBnaXZlbiBibG9jayBvZgotICogbWVtb3J5IGluIFJBUi4gIEl0IGlzIGdlbmVyYWxseSBvbmx5IHVzZWQgd2hlbiByZXRyaWV2aW5nIFJBUgotICogcmVsYXRlZCBidXMgYWRkcmVzc2VzLgotICoKLSAqIE5vdGU6IFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgb25seSBieSBSQVItZW5hYmxlZCBkcml2ZXJzLCBhbmQgaXMKLSAqICAgICAgIG5vdCBpbnRlbmRlZCB0byBiZSBleHBvc2VkIHRvIHRoZSB1c2VyIHNwYWNlLgotICovCi1zdHJ1Y3QgUkFSX2J1ZmZlciB7Ci0Jc3RydWN0IFJBUl9ibG9ja19pbmZvIGluZm87Ci0JZG1hX2FkZHJfdCBidXNfYWRkcmVzczsKLX07Ci0KLSNpZiBkZWZpbmVkKENPTkZJR19NUlNUX1JBUl9IQU5ETEVSKQotLyoqCi0gKiByYXJfcmVzZXJ2ZSgpIC0gcmVzZXJ2ZSBSQVIgYnVmZmVycwotICogQGJ1ZmZlcnM6CWFycmF5IG9mIFJBUl9idWZmZXJzIHdoZXJlIHR5cGUgYW5kIHNpemUgb2YgYnVmZmVycyB0bwotICoJCXJlc2VydmUgYXJlIHBhc3NlZCBpbiwgaGFuZGxlIGFuZCBidXMgYWRkcmVzcyBhcmUKLSAqCQlwYXNzZWQgb3V0Ci0gKiBAY291bnQ6CW51bWJlciBvZiBSQVJfYnVmZmVycyBpbiB0aGUgImJ1ZmZlcnMiIGFycmF5Ci0gKgotICogVGhpcyBmdW5jdGlvbiB3aWxsIHJlc2VydmUgYnVmZmVycyBpbiB0aGUgcmVzdHJpY3RlZCBhY2Nlc3MgcmVnaW9ucwotICogb2YgZ2l2ZW4gdHlwZXMuCi0gKgotICogSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWxseSByZXNlcnZlZCBidWZmZXJzLiAgU3VjY2Vzc2Z1bAotICogYnVmZmVyIHJlc2VydmF0aW9ucyB3aWxsIGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgYnVzX2FkZHJlc3MgZmllbGQKLSAqIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlIGluIHRoZSBnaXZlbiBidWZmZXJzIHZlY3Rvci4KLSAqLwotZXh0ZXJuIHNpemVfdCByYXJfcmVzZXJ2ZShzdHJ1Y3QgUkFSX2J1ZmZlciAqYnVmZmVycywKLQkJCSAgc2l6ZV90IGNvdW50KTsKLQotLyoqCi0gKiByYXJfcmVsZWFzZSgpIC0gcmVsZWFzZSBSQVIgYnVmZmVycwotICogQGJ1ZmZlcnM6CWFycmF5IG9mIFJBUl9idWZmZXJzIHdoZXJlIGhhbmRsZXMgdG8gYnVmZmVycyB0byBiZQotICoJCXJlbGVhc2VkIGFyZSBwYXNzZWQgaW4KLSAqIEBjb3VudDoJbnVtYmVyIG9mIFJBUl9idWZmZXJzIGluIHRoZSAiYnVmZmVycyIgYXJyYXkKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVsZWFzZSBSQVIgYnVmZmVycyB0aGF0IHdlcmUgcmV0cmlldmVkIHRocm91Z2gKLSAqIGEgY2FsbCB0byByYXJfcmVzZXJ2ZSgpIG9yIHJhcl9oYW5kbGVfdG9fYnVzKCkgYnkgZGVjcmVtZW50aW5nIHRoZQotICogcmVmZXJlbmNlIGNvdW50LiAgVGhlIFJBUiBidWZmZXIgd2lsbCBiZSByZWNsYWltZWQgd2hlbiB0aGUKLSAqIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLgotICoKLSAqIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsbHkgcmVsZWFzZWQgYnVmZmVycy4gIFN1Y2Nlc3NmdWwKLSAqIHJlbGVhc2VzIHdpbGwgaGF2ZSB0aGVpciBoYW5kbGUgZmllbGQgc2V0IHRvIHplcm8gaW4gdGhlIGdpdmVuCi0gKiBidWZmZXJzIHZlY3Rvci4KLSAqLwotZXh0ZXJuIHNpemVfdCByYXJfcmVsZWFzZShzdHJ1Y3QgUkFSX2J1ZmZlciAqYnVmZmVycywKLQkJCSAgc2l6ZV90IGNvdW50KTsKLQotLyoqCi0gKiByYXJfaGFuZGxlX3RvX2J1cygpIC0gY29udmVydCBhIHZlY3RvciBvZiBSQVIgaGFuZGxlcyB0byBidXMgYWRkcmVzc2VzCi0gKiBAYnVmZmVyczoJYXJyYXkgb2YgUkFSX2J1ZmZlcnMgY29udGFpbmluZyBoYW5kbGVzIHRvIGJlCi0gKgkJY29udmVydGVkIHRvIGJ1c19hZGRyZXNzZXMKLSAqIEBjb3VudDoJbnVtYmVyIG9mIFJBUl9idWZmZXJzIGluIHRoZSAiYnVmZmVycyIgYXJyYXkKLQotICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHJpZXZlIHRoZSBSQVIgYnVmZmVyIGJ1cyBhZGRyZXNzZXMsIHR5cGUgYW5kCi0gKiBzaXplIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFJBUiBoYW5kbGVzIHByb3ZpZGVkIGluIHRoZSBidWZmZXJzCi0gKiB2ZWN0b3IuCi0gKgotICogSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWxseSBjb252ZXJ0ZWQgYnVmZmVycy4gIFRoZSBidXMKLSAqIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gMCBmb3IgdW5yZWNvZ25pemVkIGhhbmRsZXMuCi0gKgotICogVGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgZWFjaCBjb3JyZXNwb25kaW5nIGJ1ZmZlciBpbiBSQVIgd2lsbCBiZQotICogaW5jcmVtZW50ZWQuICBDYWxsIHJhcl9yZWxlYXNlKCkgd2hlbiBkb25lIHdpdGggdGhlIGJ1ZmZlcnMuCi0gKi8KLWV4dGVybiBzaXplX3QgcmFyX2hhbmRsZV90b19idXMoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsCi0JCQkJc2l6ZV90IGNvdW50KTsKLQotI2Vsc2UKLQotZXh0ZXJuIGlubGluZSBzaXplX3QgcmFyX3Jlc2VydmUoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsIHNpemVfdCBjb3VudCkKLXsKLQlyZXR1cm4gMDsKLX0KLQotZXh0ZXJuIGlubGluZSBzaXplX3QgcmFyX3JlbGVhc2Uoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsIHNpemVfdCBjb3VudCkKLXsKLQlyZXR1cm4gMDsKLX0KLQotZXh0ZXJuIGlubGluZSBzaXplX3QgcmFyX2hhbmRsZV90b19idXMoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsCi0JCQkJc2l6ZV90IGNvdW50KQotewotCXJldHVybiAwOwotfQotCi0jZW5kaWYgIC8qIE1SU1RfUkFSX0hBTkRMRVIgKi8KLSNlbmRpZiAgLyogX19LRVJORUxfXyAqLwotCi0jZW5kaWYgIC8qIF9NRU1SQVJfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfYWxsb2NhdG9yLmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL21lbXJhcl9hbGxvY2F0b3IuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRmOGM1OC4uMDAwMDAwMAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL21lbXJhcl9hbGxvY2F0b3IuYworKysgL2Rldi9udWxsCkBAIC0xLDQzMiArMCwwIEBACi0vKgotICogICAgICBtZW1yYXJfYWxsb2NhdG9yIDEuMDogIEFuIGFsbG9jYXRvciBmb3IgSW50ZWwgUkFSLgotICoKLSAqICAgICAgQ29weXJpZ2h0IChDKSAyMDEwIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwKLSAqICAgICAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCi0gKiAgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKLSAqICAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogICAgICBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICogICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqICAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICogICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gKiAgICAgIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KLSAqICAgICAgVGhlIGZ1bGwgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW5jbHVkZWQgaW4gdGhpcwotICogICAgICBkaXN0cmlidXRpb24gaW4gdGhlIGZpbGUgY2FsbGVkIENPUFlJTkcuCi0gKgotICoKLSAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiAgICAgIFRoaXMgc2ltcGxlIGFsbG9jYXRvciBpbXBsZW1lbnRhdGlvbiBwcm92aWRlcyBhCi0gKiAgICAgIG1hbGxvYygpL2ZyZWUoKS1saWtlIGludGVyZmFjZSBmb3IgcmVzZXJ2aW5nIHNwYWNlIHdpdGhpbiBhCi0gKiAgICAgIHByZXZpb3VzbHkgcmVzZXJ2ZWQgYmxvY2sgb2YgbWVtb3J5LiAgSXQgaXMgbm90IHNwZWNpZmljIHRvCi0gKiAgICAgIGFueSBoYXJkd2FyZSwgbm9yIGlzIGl0IGNvdXBsZWQgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgcGFnaW5nCi0gKiAgICAgIG1lY2hhbmlzbS4KLSAqCi0gKiAgICAgIFRoZSBwcmltYXJ5IGdvYWwgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB0byBwcm92aWRlIGEgbWVhbnMKLSAqICAgICAgdG8gcGFydGl0aW9uIGFuIGFyYml0cmFyeSBibG9jayBvZiBtZW1vcnkgd2l0aG91dCBhY3R1YWxseQotICogICAgICBhY2Nlc3NpbmcgdGhlIG1lbW9yeSBvciBpbmN1cnJpbmcgYW55IGhhcmR3YXJlIHNpZGUtZWZmZWN0cwotICogICAgICAoZS5nLiBwYWdpbmcpLiAgSXQgaXMsIGluIGVmZmVjdCwgYSBib29ra2VlcGluZyBtZWNoYW5pc20gZm9yCi0gKiAgICAgIGJ1ZmZlcnMuCi0gKi8KLQotCi0jaW5jbHVkZSAibWVtcmFyX2FsbG9jYXRvci5oIgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNsdWRlIDxsaW51eC9idWcuaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLQotCi1zdHJ1Y3QgbWVtcmFyX2FsbG9jYXRvciAqbWVtcmFyX2NyZWF0ZV9hbGxvY2F0b3IodW5zaWduZWQgbG9uZyBiYXNlLAotCQkJCQkJIHNpemVfdCBjYXBhY2l0eSwKLQkJCQkJCSBzaXplX3QgYmxvY2tfc2l6ZSkKLXsKLQlzdHJ1Y3QgbWVtcmFyX2FsbG9jYXRvciAqYWxsb2NhdG9yICA9IE5VTEw7Ci0Jc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcyAqZmlyc3Rfbm9kZSA9IE5VTEw7Ci0KLQkvKgotCSAqIE1ha2Ugc3VyZSB0aGUgYmFzZSBhZGRyZXNzIGlzIGFsaWduZWQgb24gYSBibG9ja19zaXplCi0JICogYm91bmRhcnkuCi0JICoKLQkgKiBAdG9kbyBJcyB0aGlzIG5lY2Vzc2FyeT8KLQkgKi8KLQkvKiBiYXNlID0gQUxJR04oYmFzZSwgYmxvY2tfc2l6ZSk7ICovCi0KLQkvKiBWYWxpZGF0ZSBwYXJhbWV0ZXJzLgotCSAqCi0JICogTWFrZSBzdXJlIHdlIGNhbiBhbGxvY2F0ZSB0aGUgZW50aXJlIG1lbW9yeSBzcGFjZS4gIFplcm8KLQkgKiBjYXBhY2l0eSBvciBibG9jayBzaXplIGFyZSBvYnZpb3VzbHkgaW52YWxpZC4KLQkgKi8KLQlpZiAoYmFzZSA9PSAwCi0JICAgIHx8IGNhcGFjaXR5ID09IDAKLQkgICAgfHwgYmxvY2tfc2l6ZSA9PSAwCi0JICAgIHx8IFVMT05HX01BWCAtIGNhcGFjaXR5IDwgYmFzZQotCSAgICB8fCBjYXBhY2l0eSA8IGJsb2NrX3NpemUpCi0JCXJldHVybiBhbGxvY2F0b3I7Ci0KLQkvKgotCSAqIFRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gY3JlYXRpbmcgYSBtZW1vcnkgYWxsb2NhdG9yIHRoYXQKLQkgKiBpcyBvbmx5IGNhcGFibGUgb2YgaG9sZGluZyBvbmUgYmxvY2sgYnV0IHdlJ2xsIGFsbG93IGl0LAotCSAqIGFuZCBpc3N1ZSBhIGRpYWdub3N0aWMuCi0JICovCi0JV0FSTihjYXBhY2l0eSA8IGJsb2NrX3NpemUgKiAyLAotCSAgICAgIm1lbXJhcjogT25seSBvbmUgYmxvY2sgYXZhaWxhYmxlIHRvIGFsbG9jYXRvci5cbiIpOwotCi0JYWxsb2NhdG9yID0ga21hbGxvYyhzaXplb2YoKmFsbG9jYXRvciksIEdGUF9LRVJORUwpOwotCi0JaWYgKGFsbG9jYXRvciA9PSBOVUxMKQotCQlyZXR1cm4gYWxsb2NhdG9yOwotCi0JbXV0ZXhfaW5pdCgmYWxsb2NhdG9yLT5sb2NrKTsKLQlhbGxvY2F0b3ItPmJhc2UgPSBiYXNlOwotCi0JLyogUm91bmQgdGhlIGNhcGFjaXR5IGRvd24gdG8gYSBtdWx0aXBsZSBvZiBibG9ja19zaXplLiAqLwotCWFsbG9jYXRvci0+Y2FwYWNpdHkgPSAoY2FwYWNpdHkgLyBibG9ja19zaXplKSAqIGJsb2NrX3NpemU7Ci0KLQlhbGxvY2F0b3ItPmJsb2NrX3NpemUgPSBibG9ja19zaXplOwotCi0JYWxsb2NhdG9yLT5sYXJnZXN0X2ZyZWVfYXJlYSA9IGFsbG9jYXRvci0+Y2FwYWNpdHk7Ci0KLQkvKiBJbml0aWFsaXplIHRoZSBoYW5kbGUgYW5kIGZyZWUgbGlzdHMuICovCi0JSU5JVF9MSVNUX0hFQUQoJmFsbG9jYXRvci0+YWxsb2NhdGVkX2xpc3QubGlzdCk7Ci0JSU5JVF9MSVNUX0hFQUQoJmFsbG9jYXRvci0+ZnJlZV9saXN0Lmxpc3QpOwotCi0JZmlyc3Rfbm9kZSA9IGttYWxsb2Moc2l6ZW9mKCpmaXJzdF9ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGZpcnN0X25vZGUgPT0gTlVMTCkJewotCQlrZnJlZShhbGxvY2F0b3IpOwotCQlhbGxvY2F0b3IgPSBOVUxMOwotCX0gZWxzZSB7Ci0JCS8qIEZ1bGwgcmFuZ2Ugb2YgYmxvY2tzIGlzIGF2YWlsYWJsZS4gKi8KLQkJZmlyc3Rfbm9kZS0+cmFuZ2UuYmVnaW4gPSBiYXNlOwotCQlmaXJzdF9ub2RlLT5yYW5nZS5lbmQgICA9IGJhc2UgKyBhbGxvY2F0b3ItPmNhcGFjaXR5OwotCQlsaXN0X2FkZCgmZmlyc3Rfbm9kZS0+bGlzdCwKLQkJCSAmYWxsb2NhdG9yLT5mcmVlX2xpc3QubGlzdCk7Ci0JfQotCi0JcmV0dXJuIGFsbG9jYXRvcjsKLX0KLQotdm9pZCBtZW1yYXJfZGVzdHJveV9hbGxvY2F0b3Ioc3RydWN0IG1lbXJhcl9hbGxvY2F0b3IgKmFsbG9jYXRvcikKLXsKLQkvKgotCSAqIEFzc3VtZSB0aGF0IHRoZSBtZW1vcnkgYWxsb2NhdG9yIGxvY2sgaXNuJ3QgaGVsZCBhdCB0aGlzCi0JICogcG9pbnQgaW4gdGltZS4gIENhbGxlciBtdXN0IGVuc3VyZSB0aGF0LgotCSAqLwotCi0Jc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcyAqcG9zID0gTlVMTDsKLQlzdHJ1Y3QgbWVtcmFyX2FkZHJlc3NfcmFuZ2VzICpuICAgPSBOVUxMOwotCi0JaWYgKGFsbG9jYXRvciA9PSBOVUxMKQotCQlyZXR1cm47Ci0KLQltdXRleF9sb2NrKCZhbGxvY2F0b3ItPmxvY2spOwotCi0JLyogUmVjbGFpbSBmcmVlIGxpc3QgcmVzb3VyY2VzLiAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsCi0JCQkJIG4sCi0JCQkJICZhbGxvY2F0b3ItPmZyZWVfbGlzdC5saXN0LAotCQkJCSBsaXN0KSB7Ci0JCWxpc3RfZGVsKCZwb3MtPmxpc3QpOwotCQlrZnJlZShwb3MpOwotCX0KLQotCW11dGV4X3VubG9jaygmYWxsb2NhdG9yLT5sb2NrKTsKLQotCWtmcmVlKGFsbG9jYXRvcik7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgbWVtcmFyX2FsbG9jYXRvcl9hbGxvYyhzdHJ1Y3QgbWVtcmFyX2FsbG9jYXRvciAqYWxsb2NhdG9yLAotCQkJCSAgICAgc2l6ZV90IHNpemUpCi17Ci0Jc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcyAqcG9zID0gTlVMTDsKLQotCXNpemVfdCBudW1fYmxvY2tzOwotCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWRfYnl0ZXM7Ci0KLQkvKgotCSAqIEFkZHJlc3Mgb2YgYWxsb2NhdGVkIGJ1ZmZlci4gIFdlIGFzc3VtZSB0aGF0IHplcm8gaXMgbm90IGEKLQkgKiB2YWxpZCBhZGRyZXNzLgotCSAqLwotCXVuc2lnbmVkIGxvbmcgYWRkciA9IDA7Ci0KLQlpZiAoYWxsb2NhdG9yID09IE5VTEwgfHwgc2l6ZSA9PSAwKQotCQlyZXR1cm4gYWRkcjsKLQotCS8qIFJlc2VydmUgZW5vdWdoIGJsb2NrcyB0byBob2xkIHRoZSBhbW91bnQgb2YgYnl0ZXMgcmVxdWVzdGVkLiAqLwotCW51bV9ibG9ja3MgPSBESVZfUk9VTkRfVVAoc2l6ZSwgYWxsb2NhdG9yLT5ibG9ja19zaXplKTsKLQotCXJlc2VydmVkX2J5dGVzID0gbnVtX2Jsb2NrcyAqIGFsbG9jYXRvci0+YmxvY2tfc2l6ZTsKLQotCW11dGV4X2xvY2soJmFsbG9jYXRvci0+bG9jayk7Ci0KLQlpZiAocmVzZXJ2ZWRfYnl0ZXMgPiBhbGxvY2F0b3ItPmxhcmdlc3RfZnJlZV9hcmVhKSB7Ci0JCW11dGV4X3VubG9jaygmYWxsb2NhdG9yLT5sb2NrKTsKLQkJcmV0dXJuIGFkZHI7Ci0JfQotCi0JLyoKLQkgKiBJdGVyYXRlIHRocm91Z2ggdGhlIGZyZWUgbGlzdCB0byBmaW5kIGEgc3VpdGFibHkgc2l6ZWQKLQkgKiByYW5nZSBvZiBmcmVlIGNvbnRpZ3VvdXMgbWVtb3J5IGJsb2Nrcy4KLQkgKgotCSAqIFdlIGFsc28gdGFrZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcmVzZXQgdGhlIHNpemUgb2YgdGhlCi0JICogbGFyZ2VzdCBmcmVlIGFyZWEgc2l6ZSBzdGF0aXN0aWMuCi0JICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZhbGxvY2F0b3ItPmZyZWVfbGlzdC5saXN0LCBsaXN0KSB7Ci0JCXN0cnVjdCBtZW1yYXJfYWRkcmVzc19yYW5nZSAqIGNvbnN0IGZyID0gJnBvcy0+cmFuZ2U7Ci0JCXNpemVfdCBjb25zdCBjdXJyX3NpemUgPSBmci0+ZW5kIC0gZnItPmJlZ2luOwotCi0JCWlmIChjdXJyX3NpemUgPj0gcmVzZXJ2ZWRfYnl0ZXMgJiYgYWRkciA9PSAwKSB7Ci0JCQlzdHJ1Y3QgbWVtcmFyX2FkZHJlc3NfcmFuZ2UgKnJhbmdlID0gTlVMTDsKLQkJCXN0cnVjdCBtZW1yYXJfYWRkcmVzc19yYW5nZXMgKiBjb25zdCBuZXdfbm9kZSA9Ci0JCQkJa21hbGxvYyhzaXplb2YoKm5ld19ub2RlKSwgR0ZQX0tFUk5FTCk7Ci0KLQkJCWlmIChuZXdfbm9kZSA9PSBOVUxMKQotCQkJCWJyZWFrOwotCi0JCQlsaXN0X2FkZCgmbmV3X25vZGUtPmxpc3QsCi0JCQkJICZhbGxvY2F0b3ItPmFsbG9jYXRlZF9saXN0Lmxpc3QpOwotCi0JCQkvKgotCQkJICogQ2FydmUgb3V0IGFyZWEgb2YgbWVtb3J5IGZyb20gZW5kIG9mIGZyZWUKLQkJCSAqIHJhbmdlLgotCQkJICovCi0JCQlyYW5nZSAgICAgICAgPSAmbmV3X25vZGUtPnJhbmdlOwotCQkJcmFuZ2UtPmVuZCAgID0gZnItPmVuZDsKLQkJCWZyLT5lbmQgICAgIC09IHJlc2VydmVkX2J5dGVzOwotCQkJcmFuZ2UtPmJlZ2luID0gZnItPmVuZDsKLQkJCWFkZHIgICAgICAgICA9IHJhbmdlLT5iZWdpbjsKLQotCQkJLyoKLQkJCSAqIENoZWNrIGlmIGxhcmdlc3QgYXJlYSBoYXMgZGVjcmVhc2VkIGluCi0JCQkgKiBzaXplLiAgV2UnbGwgbmVlZCB0byBjb250aW51ZSBzY2FubmluZyBmb3IKLQkJCSAqIHRoZSBuZXh0IGxhcmdlc3QgYXJlYSBpZiBpdCBoYXMuCi0JCQkgKi8KLQkJCWlmIChjdXJyX3NpemUgPT0gYWxsb2NhdG9yLT5sYXJnZXN0X2ZyZWVfYXJlYSkKLQkJCQlhbGxvY2F0b3ItPmxhcmdlc3RfZnJlZV9hcmVhIC09Ci0JCQkJCXJlc2VydmVkX2J5dGVzOwotCQkJZWxzZQotCQkJCWJyZWFrOwotCQl9Ci0KLQkJLyoKLQkJICogUmVzZXQgbGFyZ2VzdCBmcmVlIGFyZWEgc2l6ZSBzdGF0aXN0aWMgYXMgbmVlZGVkLAotCQkgKiBidXQgb25seSBpZiB3ZSd2ZSBhY3R1YWxseSBhbGxvY2F0ZWQgbWVtb3J5LgotCQkgKi8KLQkJaWYgKGFkZHIgIT0gMAotCQkgICAgJiYgY3Vycl9zaXplID4gYWxsb2NhdG9yLT5sYXJnZXN0X2ZyZWVfYXJlYSkgewotCQkJYWxsb2NhdG9yLT5sYXJnZXN0X2ZyZWVfYXJlYSA9IGN1cnJfc2l6ZTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JbXV0ZXhfdW5sb2NrKCZhbGxvY2F0b3ItPmxvY2spOwotCi0JcmV0dXJuIGFkZHI7Ci19Ci0KLWxvbmcgbWVtcmFyX2FsbG9jYXRvcl9mcmVlKHN0cnVjdCBtZW1yYXJfYWxsb2NhdG9yICphbGxvY2F0b3IsCi0JCQkgICB1bnNpZ25lZCBsb25nIGFkZHIpCi17Ci0Jc3RydWN0IGxpc3RfaGVhZCAqcG9zID0gTlVMTDsKLQlzdHJ1Y3QgbGlzdF9oZWFkICp0bXAgPSBOVUxMOwotCXN0cnVjdCBsaXN0X2hlYWQgKmRzdCA9IE5VTEw7Ci0KLQlzdHJ1Y3QgbWVtcmFyX2FkZHJlc3NfcmFuZ2VzICAgICAgKmFsbG9jYXRlZCA9IE5VTEw7Ci0Jc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlIGNvbnN0ICpoYW5kbGUgICAgPSBOVUxMOwotCi0JdW5zaWduZWQgbG9uZyBvbGRfZW5kICAgICAgICA9IDA7Ci0JdW5zaWduZWQgbG9uZyBuZXdfY2h1bmtfc2l6ZSA9IDA7Ci0KLQlpZiAoYWxsb2NhdG9yID09IE5VTEwpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKGFkZHIgPT0gMCkKLQkJcmV0dXJuIDA7ICAvKiBJZ25vcmUgImZyZWUoMCkiLiAqLwotCi0JbXV0ZXhfbG9jaygmYWxsb2NhdG9yLT5sb2NrKTsKLQotCS8qIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgaGFuZGxlLiAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnkoYWxsb2NhdGVkLAotCQkJICAgICZhbGxvY2F0b3ItPmFsbG9jYXRlZF9saXN0Lmxpc3QsCi0JCQkgICAgbGlzdCkgewotCQlpZiAoYWxsb2NhdGVkLT5yYW5nZS5iZWdpbiA9PSBhZGRyKSB7Ci0JCQloYW5kbGUgPSAmYWxsb2NhdGVkLT5yYW5nZTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JLyogTm8gc3VjaCBidWZmZXIgY3JlYXRlZCBieSB0aGlzIGFsbG9jYXRvci4gKi8KLQlpZiAoaGFuZGxlID09IE5VTEwpIHsKLQkJbXV0ZXhfdW5sb2NrKCZhbGxvY2F0b3ItPmxvY2spOwotCQlyZXR1cm4gLUVGQVVMVDsKLQl9Ci0KLQkvKgotCSAqIENvYWxlc2NlIGFkamFjZW50IGNodW5rcyBvZiBtZW1vcnkgaWYgcG9zc2libGUuCi0JICoKLQkgKiBAbm90ZSBUaGlzIGlzbid0IGZ1bGwgYmxvd24gY29hbGVzY2luZyBzaW5jZSB3ZSdyZSBvbmx5Ci0JICogICAgICAgY29hbGVzY2luZyBhdCBtb3N0IHRocmVlIGNodW5rcyBvZiBtZW1vcnkuCi0JICovCi0JbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgdG1wLCAmYWxsb2NhdG9yLT5mcmVlX2xpc3QubGlzdCkgewotCQkvKiBAdG9kbyBPKG4pIHBlcmZvcm1hbmNlLiAgT3B0aW1pemUuICovCi0KLQkJc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlICogY29uc3QgY2h1bmsgPQotCQkJJmxpc3RfZW50cnkocG9zLAotCQkJCSAgICBzdHJ1Y3QgbWVtcmFyX2FkZHJlc3NfcmFuZ2VzLAotCQkJCSAgICBsaXN0KS0+cmFuZ2U7Ci0KLQkJLyogRXh0ZW5kIHNpemUgb2YgZXhpc3RpbmcgZnJlZSBhZGphY2VudCBjaHVuay4gKi8KLQkJaWYgKGNodW5rLT5lbmQgPT0gaGFuZGxlLT5iZWdpbikgewotCQkJLyoKLQkJCSAqIENodW5rICJsZXNzIHRoYW4iIHRoYW4gdGhlIG9uZSB3ZSdyZQotCQkJICogZnJlZWluZyBpcyBhZGphY2VudC4KLQkJCSAqCi0JCQkgKiBCZWZvcmU6Ci0JCQkgKgotCQkJICogICArLS0tLS0rLS0tLS0tKwotCQkJICogICB8Y2h1bmt8aGFuZGxlfAotCQkJICogICArLS0tLS0rLS0tLS0tKwotCQkJICoKLQkJCSAqIEFmdGVyOgotCQkJICoKLQkJCSAqICAgKy0tLS0tLS0tLS0tLSsKLQkJCSAqICAgfCAgIGNodW5rICAgIHwKLQkJCSAqICAgKy0tLS0tLS0tLS0tLSsKLQkJCSAqLwotCi0JCQlzdHJ1Y3QgbWVtcmFyX2FkZHJlc3NfcmFuZ2VzIGNvbnN0ICogY29uc3QgbmV4dCA9Ci0JCQkJbGlzdF9lbnRyeShwb3MtPm5leHQsCi0JCQkJCSAgIHN0cnVjdCBtZW1yYXJfYWRkcmVzc19yYW5nZXMsCi0JCQkJCSAgIGxpc3QpOwotCi0JCQljaHVuay0+ZW5kID0gaGFuZGxlLT5lbmQ7Ci0KLQkJCS8qCi0JCQkgKiBOb3cgY2hlY2sgaWYgbmV4dCBmcmVlIGNodW5rIGlzIGFkamFjZW50IHRvCi0JCQkgKiB0aGUgY3VycmVudCBleHRlbmRlZCBmcmVlIGNodW5rLgotCQkJICoKLQkJCSAqIEJlZm9yZToKLQkJCSAqCi0JCQkgKiAgICstLS0tLS0tLS0tLS0rLS0tLSsKLQkJCSAqICAgfCAgIGNodW5rICAgIHxuZXh0fAotCQkJICogICArLS0tLS0tLS0tLS0tKy0tLS0rCi0JCQkgKgotCQkJICogQWZ0ZXI6Ci0JCQkgKgotCQkJICogICArLS0tLS0tLS0tLS0tLS0tLS0rCi0JCQkgKiAgIHwgICAgICBjaHVuayAgICAgIHwKLQkJCSAqICAgKy0tLS0tLS0tLS0tLS0tLS0tKwotCQkJICovCi0JCQlpZiAoIWxpc3RfaXNfc2luZ3VsYXIocG9zKQotCQkJICAgICYmIGNodW5rLT5lbmQgPT0gbmV4dC0+cmFuZ2UuYmVnaW4pIHsKLQkJCQljaHVuay0+ZW5kID0gbmV4dC0+cmFuZ2UuZW5kOwotCQkJCWxpc3RfZGVsKHBvcy0+bmV4dCk7Ci0JCQkJa2ZyZWUobmV4dCk7Ci0JCQl9Ci0KLQkJCWxpc3RfZGVsKCZhbGxvY2F0ZWQtPmxpc3QpOwotCi0JCQluZXdfY2h1bmtfc2l6ZSA9IGNodW5rLT5lbmQgLSBjaHVuay0+YmVnaW47Ci0KLQkJCWdvdG8gZXhpdF9tZW1yYXJfZnJlZTsKLQotCQl9IGVsc2UgaWYgKGhhbmRsZS0+ZW5kID09IGNodW5rLT5iZWdpbikgewotCQkJLyoKLQkJCSAqIENodW5rICJncmVhdGVyIHRoYW4iIHRoYW4gdGhlIG9uZSB3ZSdyZQotCQkJICogZnJlZWluZyBpcyBhZGphY2VudC4KLQkJCSAqCi0JCQkgKiAgICstLS0tLS0rLS0tLS0rCi0JCQkgKiAgIHxoYW5kbGV8Y2h1bmt8Ci0JCQkgKiAgICstLS0tLS0rLS0tLS0rCi0JCQkgKgotCQkJICogQWZ0ZXI6Ci0JCQkgKgotCQkJICogICArLS0tLS0tLS0tLS0tKwotCQkJICogICB8ICAgY2h1bmsgICAgfAotCQkJICogICArLS0tLS0tLS0tLS0tKwotCQkJICovCi0KLQkJCXN0cnVjdCBtZW1yYXJfYWRkcmVzc19yYW5nZXMgY29uc3QgKiBjb25zdCBwcmV2ID0KLQkJCQlsaXN0X2VudHJ5KHBvcy0+cHJldiwKLQkJCQkJICAgc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcywKLQkJCQkJICAgbGlzdCk7Ci0KLQkJCWNodW5rLT5iZWdpbiA9IGhhbmRsZS0+YmVnaW47Ci0KLQkJCS8qCi0JCQkgKiBOb3cgY2hlY2sgaWYgcHJldmlvdXMgZnJlZSBjaHVuayBpcwotCQkJICogYWRqYWNlbnQgdG8gdGhlIGN1cnJlbnQgZXh0ZW5kZWQgZnJlZQotCQkJICogY2h1bmsuCi0JCQkgKgotCQkJICoKLQkJCSAqIEJlZm9yZToKLQkJCSAqCi0JCQkgKiAgICstLS0tKy0tLS0tLS0tLS0tLSsKLQkJCSAqICAgfHByZXZ8ICAgY2h1bmsgICAgfAotCQkJICogICArLS0tLSstLS0tLS0tLS0tLS0rCi0JCQkgKgotCQkJICogQWZ0ZXI6Ci0JCQkgKgotCQkJICogICArLS0tLS0tLS0tLS0tLS0tLS0rCi0JCQkgKiAgIHwgICAgICBjaHVuayAgICAgIHwKLQkJCSAqICAgKy0tLS0tLS0tLS0tLS0tLS0tKwotCQkJICovCi0JCQlpZiAoIWxpc3RfaXNfc2luZ3VsYXIocG9zKQotCQkJICAgICYmIHByZXYtPnJhbmdlLmVuZCA9PSBjaHVuay0+YmVnaW4pIHsKLQkJCQljaHVuay0+YmVnaW4gPSBwcmV2LT5yYW5nZS5iZWdpbjsKLQkJCQlsaXN0X2RlbChwb3MtPnByZXYpOwotCQkJCWtmcmVlKHByZXYpOwotCQkJfQotCi0JCQlsaXN0X2RlbCgmYWxsb2NhdGVkLT5saXN0KTsKLQotCQkJbmV3X2NodW5rX3NpemUgPSBjaHVuay0+ZW5kIC0gY2h1bmstPmJlZ2luOwotCi0JCQlnb3RvIGV4aXRfbWVtcmFyX2ZyZWU7Ci0KLQkJfSBlbHNlIGlmIChjaHVuay0+ZW5kIDwgaGFuZGxlLT5iZWdpbgotCQkJICAgJiYgY2h1bmstPmVuZCA+IG9sZF9lbmQpIHsKLQkJCS8qIEtlZXAgdHJhY2sgb2Ygd2hlcmUgdGhlIGVudHJ5IGNvdWxkIGJlCi0JCQkgKiBwb3RlbnRpYWxseSBtb3ZlZCBmcm9tIHRoZSAiYWxsb2NhdGVkIiBsaXN0Ci0JCQkgKiB0byB0aGUgImZyZWUiIGxpc3QgaWYgY29hbGVzY2luZyBkb2Vzbid0Ci0JCQkgKiBvY2N1ciwgbWFraW5nIHN1cmUgdGhlICJmcmVlIiBsaXN0IHJlbWFpbnMKLQkJCSAqIHNvcnRlZC4KLQkJCSAqLwotCQkJb2xkX2VuZCA9IGNodW5rLT5lbmQ7Ci0JCQlkc3QgPSBwb3M7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIE5vdGhpbmcgdG8gY29hbGVzY2UuCi0JICoKLQkgKiBNb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSAiYWxsb2NhdGVkIiBsaXN0IHRvIHRoZSAiZnJlZSIKLQkgKiBsaXN0LgotCSAqLwotCWxpc3RfbW92ZSgmYWxsb2NhdGVkLT5saXN0LCBkc3QpOwotCW5ld19jaHVua19zaXplID0gaGFuZGxlLT5lbmQgLSBoYW5kbGUtPmJlZ2luOwotCWFsbG9jYXRlZCA9IE5VTEw7Ci0KLWV4aXRfbWVtcmFyX2ZyZWU6Ci0KLQlpZiAobmV3X2NodW5rX3NpemUgPiBhbGxvY2F0b3ItPmxhcmdlc3RfZnJlZV9hcmVhKQotCQlhbGxvY2F0b3ItPmxhcmdlc3RfZnJlZV9hcmVhID0gbmV3X2NodW5rX3NpemU7Ci0KLQltdXRleF91bmxvY2soJmFsbG9jYXRvci0+bG9jayk7Ci0KLQlrZnJlZShhbGxvY2F0ZWQpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLQotCi0vKgotICBMb2NhbCBWYXJpYWJsZXM6Ci0gICAgYy1maWxlLXN0eWxlOiAibGludXgiCi0gIEVuZDoKLSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL21lbXJhcl9hbGxvY2F0b3IuaCBiL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyX2FsbG9jYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjgwZGVhLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyX2FsbG9jYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiAgICAgIENvcHlyaWdodCAoQykgMjAxMCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsCi0gKiAgICAgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICoKLSAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQotICogICAgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCi0gKiAgICAgIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqICAgICAgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiAgICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSAqICAgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICogICAgICBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCi0gKiAgICAgIFRoZSBmdWxsIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoaXMKLSAqICAgICAgZGlzdHJpYnV0aW9uIGluIHRoZSBmaWxlIGNhbGxlZCBDT1BZSU5HLgotICovCi0KLSNpZm5kZWYgTUVNUkFSX0FMTE9DQVRPUl9ICi0jZGVmaW5lIE1FTVJBUl9BTExPQ0FUT1JfSAotCi0KLSNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgotI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotCi0KLS8qKgotICogc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlIC0gc3RydWN0IHRoYXQgZGVzY3JpYmVzIGEgbWVtb3J5IHJhbmdlCi0gKiBAYmVnaW46CUJlZ2lubmluZyBvZiBhdmFpbGFibGUgYWRkcmVzcyByYW5nZS4KLSAqIEBlbmQ6CUVuZCBvZiBhdmFpbGFibGUgYWRkcmVzcyByYW5nZSwgb25lIHBhc3QgdGhlIGVuZCwKLSAqCQlpLmUuIFtiZWdpbiwgZW5kKS4KLSAqLwotc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlIHsKLS8qIHByaXZhdGU6IGludGVybmFsIHVzZSBvbmx5ICovCi0JdW5zaWduZWQgbG9uZyBiZWdpbjsKLQl1bnNpZ25lZCBsb25nIGVuZDsKLX07Ci0KLS8qKgotICogc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcyAtIGxpc3Qgb2YgYXJlYXMgb2YgbWVtb3J5LgotICogQGxpc3Q6CUxpbmtlZCBsaXN0IG9mIGFkZHJlc3MgcmFuZ2VzLgotICogQHJhbmdlOglNZW1vcnkgYWRkcmVzcyByYW5nZSBjb3JyZXNwb25kaW5nIHRvIGdpdmVuIGxpc3Qgbm9kZS4KLSAqLwotc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcyB7Ci0vKiBwcml2YXRlOiBpbnRlcm5hbCB1c2Ugb25seSAqLwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQlzdHJ1Y3QgbWVtcmFyX2FkZHJlc3NfcmFuZ2UgcmFuZ2U7Ci19OwotCi0vKioKLSAqIHN0cnVjdCBtZW1yYXJfYWxsb2NhdG9yIC0gZW5jYXBzdWxhdGlvbiBvZiB0aGUgbWVtb3J5IGFsbG9jYXRvciBzdGF0ZQotICogQGxvY2s6CQlMb2NrIHVzZWQgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIHRoZSBtZW1vcnkKLSAqCQkJYWxsb2NhdG9yIHN0YXRlLgotICogQGJhc2U6CQlCYXNlIChzdGFydCkgYWRkcmVzcyBvZiB0aGUgYWxsb2NhdG9yIG1lbW9yeQotICoJCQlzcGFjZS4KLSAqIEBjYXBhY2l0eToJCVNpemUgb2YgdGhlIGFsbG9jYXRvciBtZW1vcnkgc3BhY2UgaW4gYnl0ZXMuCi0gKiBAYmxvY2tfc2l6ZToJCVRoZSBzaXplIGluIGJ5dGVzIG9mIGluZGl2aWR1YWwgYmxvY2tzIHdpdGhpbgotICoJCQl0aGUgYWxsb2NhdG9yIG1lbW9yeSBzcGFjZS4KLSAqIEBsYXJnZXN0X2ZyZWVfYXJlYToJTGFyZ2VzdCBmcmVlIGFyZWEgb2YgbWVtb3J5IGluIHRoZSBhbGxvY2F0b3IKLSAqCQkJaW4gYnl0ZXMuCi0gKiBAYWxsb2NhdGVkX2xpc3Q6CUxpc3Qgb2YgYWxsb2NhdGVkIG1lbW9yeSBibG9jayBhZGRyZXNzCi0gKgkJCXJhbmdlcy4KLSAqIEBmcmVlX2xpc3Q6CQlMaXN0IG9mIGZyZWUgYWRkcmVzcyByYW5nZXMuCi0gKgotICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYWxsIG1lbW9yeSBhbGxvY2F0b3Igc3RhdGUsIGluY2x1ZGluZyB0aGUKLSAqIGJhc2UgYWRkcmVzcywgY2FwYWNpdHksIGZyZWUgbGlzdCwgbG9jaywgZXRjLgotICovCi1zdHJ1Y3QgbWVtcmFyX2FsbG9jYXRvciB7Ci0vKiBwcml2YXRlOiBpbnRlcm5hbCB1c2Ugb25seSAqLwotCXN0cnVjdCBtdXRleCBsb2NrOwotCXVuc2lnbmVkIGxvbmcgYmFzZTsKLQlzaXplX3QgY2FwYWNpdHk7Ci0Jc2l6ZV90IGJsb2NrX3NpemU7Ci0Jc2l6ZV90IGxhcmdlc3RfZnJlZV9hcmVhOwotCXN0cnVjdCBtZW1yYXJfYWRkcmVzc19yYW5nZXMgYWxsb2NhdGVkX2xpc3Q7Ci0Jc3RydWN0IG1lbXJhcl9hZGRyZXNzX3JhbmdlcyBmcmVlX2xpc3Q7Ci19OwotCi0vKioKLSAqIG1lbXJhcl9jcmVhdGVfYWxsb2NhdG9yKCkgLSBjcmVhdGUgYSBtZW1vcnkgYWxsb2NhdG9yCi0gKiBAYmFzZToJQWRkcmVzcyBhdCB3aGljaCB0aGUgbWVtb3J5IGFsbG9jYXRvciBiZWdpbnMuCi0gKiBAY2FwYWNpdHk6CURlc2lyZWQgc2l6ZSBvZiB0aGUgbWVtb3J5IGFsbG9jYXRvci4gIFRoaXMgdmFsdWUgbXVzdAotICoJCWJlIGxhcmdlciB0aGFuIHRoZSBibG9ja19zaXplLCBpZGVhbGx5IG1vcmUgdGhhbiB0d2ljZQotICoJCWFzIGxhcmdlIHNpbmNlIHRoZXJlIHdvdWxkbid0IGJlIG11Y2ggcG9pbnQgaW4gdXNpbmcgYQotICoJCW1lbW9yeSBhbGxvY2F0b3Igb3RoZXJ3aXNlLgotICogQGJsb2NrX3NpemU6CVRoZSBzaXplIG9mIGluZGl2aWR1YWwgYmxvY2tzIHdpdGhpbiB0aGUgbWVtb3J5Ci0gKgkJYWxsb2NhdG9yLiAgVGhpcyB2YWx1ZSBtdXN0IHNtYWxsZXIgdGhhbiB0aGUKLSAqCQljYXBhY2l0eS4KLSAqCi0gKiBDcmVhdGUgYSBtZW1vcnkgYWxsb2NhdG9yIHdpdGggdGhlIGdpdmVuIGNhcGFjaXR5IGFuZCBibG9jayBzaXplLgotICogVGhlIGNhcGFjaXR5IHdpbGwgYmUgcmVkdWNlZCB0byBiZSBhIG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLCBpZgotICogbmVjZXNzYXJ5LgotICoKLSAqIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIG1lbW9yeSBhbGxvY2F0b3IsIGlmIGNyZWF0aW9uIHN1Y2NlZWRzLAotICogb3RoZXJ3aXNlIHplcm8gaWYgY3JlYXRpb24gZmFpbHMuICBGYWlsdXJlIG1heSBvY2N1ciBpZiBub3QgZW5vdWdoCi0gKiBrZXJuZWwgbWVtb3J5IGV4aXN0cyB0byBjcmVhdGUgdGhlIG1lbXJhcl9hbGxvY2F0b3IgaW5zdGFuY2UKLSAqIGl0c2VsZiwgb3IgaWYgdGhlIGNhcGFjaXR5IGFuZCBibG9ja19zaXplIGFyZ3VtZW50cyBhcmUgbm90Ci0gKiBjb21wYXRpYmxlIG9yIG1ha2Ugc2Vuc2UuCi0gKi8KLXN0cnVjdCBtZW1yYXJfYWxsb2NhdG9yICptZW1yYXJfY3JlYXRlX2FsbG9jYXRvcih1bnNpZ25lZCBsb25nIGJhc2UsCi0JCQkJCQkgc2l6ZV90IGNhcGFjaXR5LAotCQkJCQkJIHNpemVfdCBibG9ja19zaXplKTsKLQotLyoqCi0gKiBtZW1yYXJfZGVzdHJveV9hbGxvY2F0b3IoKSAtIGRlc3Ryb3kgYWxsb2NhdG9yCi0gKiBAYWxsb2NhdG9yOglUaGUgYWxsb2NhdG9yIGJlaW5nIGRlc3Ryb3llZC4KLSAqCi0gKiBSZWNsYWltIHJlc291cmNlcyBoZWxkIGJ5IHRoZSBtZW1vcnkgYWxsb2NhdG9yLiAgVGhlIGNhbGxlciBtdXN0Ci0gKiBleHBsaWNpdGx5IGZyZWUgYWxsIG1lbW9yeSByZXNlcnZlZCBieSBtZW1yYXJfYWxsb2NhdG9yX2FsbG9jKCkKLSAqIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIE90aGVyd2lzZSBsZWFrcyB3aWxsIG9jY3VyLgotICovCi12b2lkIG1lbXJhcl9kZXN0cm95X2FsbG9jYXRvcihzdHJ1Y3QgbWVtcmFyX2FsbG9jYXRvciAqYWxsb2NhdG9yKTsKLQotLyoqCi0gKiBtZW1yYXJfYWxsb2NhdG9yX2FsbG9jKCkgLSByZXNlcnZlIGFuIGFyZWEgb2YgbWVtb3J5IG9mIGdpdmVuIHNpemUKLSAqIEBhbGxvY2F0b3I6CVRoZSBhbGxvY2F0b3IgaW5zdGFuY2UgYmVpbmcgdXNlZCB0byByZXNlcnZlIGJ1ZmZlci4KLSAqIEBzaXplOglUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgYnVmZmVyIHRvIGFsbG9jYXRlLgotICoKLSAqIFRoaXMgZnVuY3Rpb25zIHJlc2VydmVzIGFuIGFyZWEgb2YgbWVtb3J5IG1hbmFnZWQgYnkgdGhlIGdpdmVuCi0gKiBhbGxvY2F0b3IuICBJdCByZXR1cm5zIHplcm8gaWYgYWxsb2NhdGlvbiB3YXMgbm90IHBvc3NpYmxlLgotICogRmFpbHVyZSBtYXkgb2NjdXIgaWYgdGhlIGFsbG9jYXRvciBubyBsb25nZXIgaGFzIHNwYWNlIGF2YWlsYWJsZS4KLSAqLwotdW5zaWduZWQgbG9uZyBtZW1yYXJfYWxsb2NhdG9yX2FsbG9jKHN0cnVjdCBtZW1yYXJfYWxsb2NhdG9yICphbGxvY2F0b3IsCi0JCQkJICAgICBzaXplX3Qgc2l6ZSk7Ci0KLS8qKgotICogbWVtcmFyX2FsbG9jYXRvcl9mcmVlKCkgLSByZWxlYXNlIGJ1ZmZlciBzdGFydGluZyBhdCBnaXZlbiBhZGRyZXNzCi0gKiBAYWxsb2NhdG9yOglUaGUgYWxsb2NhdG9yIGluc3RhbmNlIGJlaW5nIHVzZWQgdG8gcmVsZWFzZSB0aGUgYnVmZmVyLgotICogQGFkZHJlc3M6CVRoZSBhZGRyZXNzIG9mIHRoZSBidWZmZXIgYmVpbmcgcmVsZWFzZWQuCi0gKgotICogUmVsZWFzZSBhbiBhcmVhIG9mIG1lbW9yeSBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4gIEZhaWx1cmUKLSAqIGNvdWxkIG9jY3VyIGlmIHRoZSBnaXZlbiBhZGRyZXNzIGlzIG5vdCBpbiB0aGUgYWRkcmVzcyBzcGFjZQotICogbWFuYWdlZCBieSB0aGUgYWxsb2NhdG9yLiAgUmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3Mgb3IgYW4gZXJybm8KLSAqIChuZWdhdGl2ZSB2YWx1ZSkgb24gZmFpbHVyZS4KLSAqLwotbG9uZyBtZW1yYXJfYWxsb2NhdG9yX2ZyZWUoc3RydWN0IG1lbXJhcl9hbGxvY2F0b3IgKmFsbG9jYXRvciwKLQkJCSAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7Ci0KLSNlbmRpZiAgLyogTUVNUkFSX0FMTE9DQVRPUl9IICovCi0KLQotLyoKLSAgTG9jYWwgVmFyaWFibGVzOgotICAgIGMtZmlsZS1zdHlsZTogImxpbnV4IgotICBFbmQ6Ci0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfaGFuZGxlci5jIGIvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfaGFuZGxlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmNhYThlLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyX2hhbmRsZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDEwMDcgKzAsMCBAQAotLyoKLSAqICAgICAgbWVtcmFyX2hhbmRsZXIgMS4wOiAgQW4gSW50ZWwgcmVzdHJpY3RlZCBhY2Nlc3MgcmVnaW9uIGhhbmRsZXIgZGV2aWNlCi0gKgotICogICAgICBDb3B5cmlnaHQgKEMpIDIwMTAgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbAotICogICAgICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKLSAqICAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAotICogICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiAgICAgIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKiAgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICogICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0gKiAgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAqICAgICAgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNywgVVNBLgotICogICAgICBUaGUgZnVsbCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGlzCi0gKiAgICAgIGRpc3RyaWJ1dGlvbiBpbiB0aGUgZmlsZSBjYWxsZWQgQ09QWUlORy4KLSAqCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogICAgICBNb29yZXN0b3duIHJlc3RyaWN0ZWQgYWNjZXNzIHJlZ2lvbnMgKFJBUikgcHJvdmlkZSBpc29sYXRlZAotICogICAgICBhcmVhcyBvZiBtYWluIG1lbW9yeSB0aGF0IGFyZSBvbmx5IGFjY2Vlc3NpYmxlIGJ5IGF1dGhvcml6ZWQKLSAqICAgICAgZGV2aWNlcy4KLSAqCi0gKiAgICAgIFRoZSBJbnRlbCBNb29yZXN0b3duIFJBUiBoYW5kbGVyIG1vZHVsZSBleHBvc2VzIGEga2VybmVsIHNwYWNlCi0gKiAgICAgIFJBUiBtZW1vcnkgbWFuYWdlbWVudCBtZWNoYW5pc20uICBJdCBpcyBlc3NlbnRpYWxseSBhCi0gKiAgICAgIFJBUi1zcGVjaWZpYyBhbGxvY2F0b3IuCi0gKgotICogICAgICBCZXNpZGVzIHByb3ZpZGluZyBSQVIgYnVmZmVyIG1hbmFnZW1lbnQsIHRoZSBSQVIgaGFuZGxlciBhbHNvCi0gKiAgICAgIGJlaGF2ZXMgaW4gbWFueSB3YXlzIGxpa2UgYW4gT1MgdmlydHVhbCBtZW1vcnkgbWFuYWdlci4gIEZvcgotICogICAgICBleGFtcGxlLCB0aGUgUkFSICJoYW5kbGVzIiBjcmVhdGVkIGJ5IHRoZSBSQVIgaGFuZGxlciBhcmUKLSAqICAgICAgYW5hbG9nb3VzIHRvIHVzZXIgc3BhY2UgdmlydHVhbCBhZGRyZXNzZXMuCi0gKgotICogICAgICBSQVIgbWVtb3J5IGl0c2VsZiBpcyBuZXZlciBhY2Nlc3NlZCBkaXJlY3RseSBieSB0aGUgUkFSCi0gKiAgICAgIGhhbmRsZXIuCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgotI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KLSNpbmNsdWRlIDxsaW51eC9rcmVmLmg+Ci0jaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Ci0jaW5jbHVkZSA8bGludXgvbW0uaD4KLSNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KLSNpbmNsdWRlIDxsaW51eC9pby5oPgotI2luY2x1ZGUgPGxpbnV4L3Jhcl9yZWdpc3Rlci5oPgotCi0jaW5jbHVkZSAibWVtcmFyLmgiCi0jaW5jbHVkZSAibWVtcmFyX2FsbG9jYXRvci5oIgotCi0KLSNkZWZpbmUgTUVNUkFSX1ZFUiAiMS4wIgotCi0vKgotICogTW9vcmVzdG93biBzdXBwb3J0cyB0aHJlZSByZXN0cmljdGVkIGFjY2VzcyByZWdpb25zLgotICoKLSAqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUgZmlyc3QgdHdvLCB2aWRlbyBhbmQgYXVkaW8uICBUaGUgdGhpcmQsCi0gKiByZXNlcnZlZCBmb3IgQ2hhYWJpIGFuZCB0aGUgUC11bml0LCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlaXIKLSAqIHJlc3BlY3RpdmUgZHJpdmVycy4KLSAqLwotI2RlZmluZSBNUlNUX05VTV9SQVIgMgotCi0vKiAtLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoqCi0gKiBzdHJ1Y3QgbWVtcmFyX2J1ZmZlcl9pbmZvIC0gc3RydWN0IHRoYXQga2VlcHMgdHJhY2sgb2YgYWxsIFJBUiBidWZmZXJzCi0gKiBAbGlzdDoJTGlua2VkIGxpc3Qgb2YgbWVtcmFyX2J1ZmZlcl9pbmZvIG9iamVjdHMuCi0gKiBAYnVmZmVyOglDb3JlIFJBUiBidWZmZXIgaW5mb3JtYXRpb24uCi0gKiBAcmVmY291bnQ6CVJlZmVyZW5jZSBjb3VudC4KLSAqIEBvd25lcjoJRmlsZSBoYW5kbGUgY29ycmVzcG9uZGluZyB0byBwcm9jZXNzIHRoYXQgcmVzZXJ2ZWQgdGhlCi0gKgkJYmxvY2sgb2YgbWVtb3J5IGluIFJBUi4gIFRoaXMgd2lsbCBiZSB6ZXJvIGZvciBidWZmZXJzCi0gKgkJYWxsb2NhdGVkIGJ5IG90aGVyIGRyaXZlcnMgaW5zdGVhZCBvZiBieSBhIHVzZXIgc3BhY2UKLSAqCQlwcm9jZXNzLgotICoKLSAqIFRoaXMgc3RydWN0dXJlIGVuY2Fwc3VsYXRlcyBhIGxpbmsgbGlzdCBvZiBSQVIgYnVmZmVycywgYXMgd2VsbCBhcwotICogb3RoZXIgY2hhcmFjdGVyaXN0aWNzIHNwZWNpZmljIHRvIGEgZ2l2ZW4gbGlzdCBub2RlLCBzdWNoIGFzIHRoZQotICogcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBjb3JyZXNwb25kaW5nIFJBUiBidWZmZXIuCi0gKi8KLXN0cnVjdCBtZW1yYXJfYnVmZmVyX2luZm8gewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciBidWZmZXI7Ci0Jc3RydWN0IGtyZWYgcmVmY291bnQ7Ci0Jc3RydWN0IGZpbGUgKm93bmVyOwotfTsKLQotLyoqCi0gKiBzdHJ1Y3QgbWVtcmFyX3Jhcl9pbmZvIC0gY2hhcmFjdGVyaXN0aWNzIG9mIGEgZ2l2ZW4gUkFSCi0gKiBAYmFzZToJQmFzZSBidXMgYWRkcmVzcyBvZiB0aGUgUkFSLgotICogQGxlbmd0aDoJTGVuZ3RoIG9mIHRoZSBSQVIuCi0gKiBAaW9iYXNlOglWaXJ0dWFsIGFkZHJlc3Mgb2YgUkFSIG1hcHBlZCBpbnRvIGtlcm5lbC4KLSAqIEBhbGxvY2F0b3I6CUFsbG9jYXRvciBhc3NvY2lhdGVkIHdpdGggdGhlIFJBUi4gIE5vdGUgdGhlIGFsbG9jYXRvcgotICoJCSJjYXBhY2l0eSIgbWF5IGJlIHNtYWxsZXIgdGhhbiB0aGUgUkFSIGxlbmd0aCBpZiB0aGUKLSAqCQlsZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgYWxsb2NhdG9yCi0gKgkJYmxvY2sgc2l6ZS4KLSAqIEBidWZmZXJzOglUYWJsZSB0aGF0IGtlZXBzIHRyYWNrIG9mIGFsbCByZXNlcnZlZCBSQVIgYnVmZmVycy4KLSAqIEBsb2NrOglMb2NrIHVzZWQgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIFJBUi1zcGVjaWZpYyBkYXRhCi0gKgkJc3RydWN0dXJlcy4KLSAqCi0gKiBFYWNoIFJBUiBoYXMgYW4gYXNzb2NpYXRlZCBtZW1yYXJfcmFyX2luZm8gc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzCi0gKiB3aGVyZSBpbiBtZW1vcnkgdGhlIFJBUiBpcyBsb2NhdGVkLCBob3cgbGFyZ2UgaXQgaXMsIGFuZCBhIGxpc3Qgb2YKLSAqIHJlc2VydmVkIFJBUiBidWZmZXJzIGluc2lkZSB0aGF0IFJBUi4gIEVhY2ggUkFSIGFsc28gaGFzIGEgbXV0ZXgKLSAqIGFzc29jaWF0ZWQgd2l0aCBpdCB0byByZWR1Y2UgbG9jayBjb250ZW50aW9uIHdoZW4gb3BlcmF0aW9ucyBvbgotICogbXVsdGlwbGUgUkFScyBhcmUgcGVyZm9ybWVkIGluIHBhcmFsbGVsLgotICovCi1zdHJ1Y3QgbWVtcmFyX3Jhcl9pbmZvIHsKLQlkbWFfYWRkcl90IGJhc2U7Ci0JdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0Jdm9pZCBfX2lvbWVtICppb2Jhc2U7Ci0Jc3RydWN0IG1lbXJhcl9hbGxvY2F0b3IgKmFsbG9jYXRvcjsKLQlzdHJ1Y3QgbWVtcmFyX2J1ZmZlcl9pbmZvIGJ1ZmZlcnM7Ci0Jc3RydWN0IG11dGV4IGxvY2s7Ci0JaW50IGFsbG9jYXRlZDsJLyogVHJ1ZSBpZiB3ZSBvd24gdGhpcyBSQVIgKi8KLX07Ci0KLS8qCi0gKiBBcnJheSBvZiBSQVIgY2hhcmFjdGVyaXN0aWNzLgotICovCi1zdGF0aWMgc3RydWN0IG1lbXJhcl9yYXJfaW5mbyBtZW1yYXJzW01SU1RfTlVNX1JBUl07Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKiBWYWxpZGF0ZSBSQVIgdHlwZS4gKi8KLXN0YXRpYyBpbmxpbmUgaW50IG1lbXJhcl9pc192YWxpZF9yYXJfdHlwZSh1MzIgdHlwZSkKLXsKLQlyZXR1cm4gdHlwZSA9PSBSQVJfVFlQRV9WSURFTyB8fCB0eXBlID09IFJBUl9UWVBFX0FVRElPOwotfQotCi0vKiBDaGVjayBpZiBhbiBhZGRyZXNzL2hhbmRsZSBmYWxscyB3aXRoIHRoZSBnaXZlbiBSQVIgbWVtb3J5IHJhbmdlLiAqLwotc3RhdGljIGlubGluZSBpbnQgbWVtcmFyX2hhbmRsZV9pbl9yYW5nZShzdHJ1Y3QgbWVtcmFyX3Jhcl9pbmZvICpyYXIsCi0JCQkJCSB1MzIgdmFkZHIpCi17Ci0JdW5zaWduZWQgbG9uZyBjb25zdCBpb2Jhc2UgPSAodW5zaWduZWQgbG9uZykgKHJhci0+aW9iYXNlKTsKLQlyZXR1cm4gKHZhZGRyID49IGlvYmFzZSAmJiB2YWRkciA8IGlvYmFzZSArIHJhci0+bGVuZ3RoKTsKLX0KLQotLyogUmV0cmlldmUgUkFSIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gaGFuZGxlLiAqLwotc3RhdGljIHN0cnVjdCBtZW1yYXJfcmFyX2luZm8gKm1lbXJhcl9nZXRfcmFyX2luZm8odTMyIHZhZGRyKQotewotCWludCBpOwotCWZvciAoaSA9IDA7IGkgPCBNUlNUX05VTV9SQVI7ICsraSkgewotCQlzdHJ1Y3QgbWVtcmFyX3Jhcl9pbmZvICogY29uc3QgcmFyID0gJm1lbXJhcnNbaV07Ci0JCWlmIChtZW1yYXJfaGFuZGxlX2luX3JhbmdlKHJhciwgdmFkZHIpKQotCQkJcmV0dXJuIHJhcjsKLQl9Ci0KLQlyZXR1cm4gTlVMTDsKLX0KLQotLyoqCi0gKgltZW1yYXJfZ2V0X2J1cyBhZGRyZXNzCQktCWhhbmRsZSB0byBidXMgYWRkcmVzcwotICoKLSAqCVJldHJpZXZlIGJ1cyBhZGRyZXNzIGZyb20gZ2l2ZW4gaGFuZGxlLgotICoKLSAqCVJldHVybnMgYWRkcmVzcyBjb3JyZXNwb25kaW5nIHRvIGdpdmVuIGhhbmRsZS4gIFplcm8gaWYgaGFuZGxlIGlzCi0gKglpbnZhbGlkLgotICovCi1zdGF0aWMgZG1hX2FkZHJfdCBtZW1yYXJfZ2V0X2J1c19hZGRyZXNzKAotCXN0cnVjdCBtZW1yYXJfcmFyX2luZm8gKnJhciwKLQl1MzIgdmFkZHIpCi17Ci0JdW5zaWduZWQgbG9uZyBjb25zdCBpb2Jhc2UgPSAodW5zaWduZWQgbG9uZykgKHJhci0+aW9iYXNlKTsKLQotCWlmICghbWVtcmFyX2hhbmRsZV9pbl9yYW5nZShyYXIsIHZhZGRyKSkKLQkJcmV0dXJuIDA7Ci0KLQkvKgotCSAqIEFuIGFzc3VtcHRpb24gaXMgbWFkZSB0aGF0IHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2Zmc2V0IGlzCi0JICogdGhlIHNhbWUgYXMgdGhlIGJ1cyBhZGRyZXNzIG9mZnNldCwgYXQgbGVhc3QgYmFzZWQgb24gdGhlCi0JICogd2F5IHRoaXMgZHJpdmVyIGlzIGltcGxlbWVudGVkLiAgRm9yIGV4YW1wbGUsIHZhZGRyICsgMiA9PQotCSAqIGJhZGRyICsgMi4KLQkgKgotCSAqIEB0b2RvIElzIHRoYXQgYSB2YWxpZCBhc3N1bXB0aW9uPwotCSAqLwotCXJldHVybiByYXItPmJhc2UgKyAodmFkZHIgLSBpb2Jhc2UpOwotfQotCi0vKioKLSAqCW1lbXJhcl9nZXRfcGh5c2ljYWxfYWRkcmVzcwktCWhhbmRsZSB0byBwaHlzaWNhbCBhZGRyZXNzCi0gKgotICoJUmV0cmlldmUgcGh5c2ljYWwgYWRkcmVzcyBmcm9tIGdpdmVuIGhhbmRsZS4KLSAqCi0gKglSZXR1cm5zIGFkZHJlc3MgY29ycmVzcG9uZGluZyB0byBnaXZlbiBoYW5kbGUuICBaZXJvIGlmIGhhbmRsZSBpcwotICoJaW52YWxpZC4KLSAqLwotc3RhdGljIGRtYV9hZGRyX3QgbWVtcmFyX2dldF9waHlzaWNhbF9hZGRyZXNzKAotCXN0cnVjdCBtZW1yYXJfcmFyX2luZm8gKnJhciwKLQl1MzIgdmFkZHIpCi17Ci0JLyoKLQkgKiBAdG9kbyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgYnVzIGFkZHJlc3MgYW5kIHBoeXNpY2FsCi0JICogICAgICAgYWRkcmVzcyBhcmUgdGhlIHNhbWUuICBUaGF0IGlzIHRydWUgZm9yIE1vb3Jlc3Rvd24KLQkgKiAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9uIG90aGVyIHBsYXRmb3Jtcy4gIFRoaXMKLQkgKiAgICAgICBkZWZpY2llbmN5IHNob3VsZCBiZSBhZGRyZXNzZWQgYXQgc29tZSBwb2ludC4KLQkgKi8KLQlyZXR1cm4gbWVtcmFyX2dldF9idXNfYWRkcmVzcyhyYXIsIHZhZGRyKTsKLX0KLQotLyoqCi0gKgltZW1yYXJfcmVsZWFzZV9ibG9jawktCXJlbGVhc2UgYSBibG9jayB0byB0aGUgcG9vbAotICoJQGtyZWY6IGtyZWYgb2YgYmxvY2sKLSAqCi0gKglDb3JlIGJsb2NrIHJlbGVhc2UgY29kZS4gQSBub2RlIGhhcyBoaXQgemVybyByZWZlcmVuY2VzIHNvIGNhbgotICoJYmUgcmVsZWFzZWQgYW5kIHRoZSBsaXN0cyBtdXN0IGJlIHVwZGF0ZWQuCi0gKgotICoJTm90ZTogVGhpcyBjb2RlIHJlbW92ZXMgdGhlIG5vZGUgZnJvbSBhIGxpc3QuICBNYWtlIHN1cmUgYW55IGxpc3QKLSAqCWl0ZXJhdGlvbiBpcyBwZXJmb3JtZWQgdXNpbmcgbGlzdF9mb3JfZWFjaF9zYWZlKCkuCi0gKi8KLXN0YXRpYyB2b2lkIG1lbXJhcl9yZWxlYXNlX2Jsb2NrX2koc3RydWN0IGtyZWYgKnJlZikKLXsKLQkvKgotCSAqIExhc3QgcmVmZXJlbmNlIGlzIGJlaW5nIHJlbGVhc2VkLiAgUmVtb3ZlIGZyb20gdGhlIHRhYmxlLAotCSAqIGFuZCByZWNsYWltIHJlc291cmNlcy4KLQkgKi8KLQotCXN0cnVjdCBtZW1yYXJfYnVmZmVyX2luZm8gKiBjb25zdCBub2RlID0KLQkJY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG1lbXJhcl9idWZmZXJfaW5mbywgcmVmY291bnQpOwotCi0Jc3RydWN0IFJBUl9ibG9ja19pbmZvICogY29uc3QgdXNlcl9pbmZvID0KLQkJJm5vZGUtPmJ1ZmZlci5pbmZvOwotCi0Jc3RydWN0IG1lbXJhcl9hbGxvY2F0b3IgKiBjb25zdCBhbGxvY2F0b3IgPQotCQltZW1yYXJzW3VzZXJfaW5mby0+dHlwZV0uYWxsb2NhdG9yOwotCi0JbGlzdF9kZWwoJm5vZGUtPmxpc3QpOwotCi0JbWVtcmFyX2FsbG9jYXRvcl9mcmVlKGFsbG9jYXRvciwgdXNlcl9pbmZvLT5oYW5kbGUpOwotCi0Ja2ZyZWUobm9kZSk7Ci19Ci0KLS8qKgotICoJbWVtcmFyX2luaXRfcmFyX3Jlc291cmNlcwktCWNvbmZpZ3VyZSBhIFJBUgotICoJQHJhcm51bTogcmFyIHRoYXQgaGFzIGJlZW4gYWxsb2NhdGVkCi0gKglAZGV2bmFtZTogbmFtZSBvZiBvdXIgZGV2aWNlCi0gKgotICoJSW5pdGlhbGl6ZSBSQVIgcGFyYW1ldGVycywgc3VjaCBhcyBidXMgYWRkcmVzc2VzLCBldGMgYW5kIG1ha2UKLSAqCXRoZSByZXNvdXJjZSBhY2Nlc3NpYmxlLgotICovCi1zdGF0aWMgaW50IG1lbXJhcl9pbml0X3Jhcl9yZXNvdXJjZXMoaW50IHJhcm51bSwgY2hhciBjb25zdCAqZGV2bmFtZSkKLXsKLQkvKiAtLS0tIFNhbml0eSBDaGVja3MgLS0tLQotCSAqIDEuIFJBUiBidXMgYWRkcmVzc2VzIGluIGJvdGggTGluY3JvZnQgYW5kIExhbmd3ZWxsIFJBUgotCSAqICAgIHJlZ2lzdGVycyBzaG91bGQgYmUgdGhlIHNhbWUuCi0JICogICAgYS4gVGhlcmUncyBubyB3YXkgd2UgY2FuIGRvIHRoaXMgdGhyb3VnaCBJQS4KLQkgKgotCSAqIDIuIFNlY3VyZSBkZXZpY2UgSUQgaW4gTGFuZ3dlbGwgUkFSIHJlZ2lzdGVycyBzaG91bGQgYmUgc2V0Ci0JICogICAgYXBwcm9wcmlhdGVseSwgZS5nLiBvbmx5IExQRSBETUEgZm9yIHRoZSBhdWRpbyBSQVIsIGFuZAotCSAqICAgIHNlY3VyaXR5IGZvciB0aGUgb3RoZXIgTGFuZ3dlbGwgYmFzZWQgUkFSIHJlZ2lzdGVycy4KLQkgKiAgICBhLiBUaGVyZSdzIG5vIHdheSB3ZSBjYW4gZG8gdGhpcyB0aHJvdWdoIElBLgotCSAqCi0JICogMy4gQXVkaW8gYW5kIHZpZGVvIFJBUiByZWdpc3RlcnMgYW5kIFJBUiBhY2Nlc3Mgc2hvdWxkIGJlCi0JICogICAgbG9ja2VkIGRvd24uICBJZiBub3QsIGVuYWJsZSBSQVIgYWNjZXNzIGNvbnRyb2wuICBFeGNlcHQKLQkgKiAgICBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCB0aGVyZSBpcyBubyByZWFzb24gZm9yIHRoZW0gdG8KLQkgKiAgICBiZSB1bmxvY2tlZC4KLQkgKiAgICBhLiAgV2UgY2FuIG9ubHkgZG8gdGhpcyBmb3IgdGhlIExpbmNyb2Z0IChJQSkgc2lkZS4KLQkgKgotCSAqIEB0b2RvIFNob3VsZCB0aGUgUkFSIGhhbmRsZXIgZHJpdmVyIGV2ZW4gYmUgYXdhcmUgb2YgYXVkaW8KLQkgKiAgICAgICBhbmQgdmlkZW8gUkFSIHNldHRpbmdzPwotCSAqLwotCi0JLyoKLQkgKiBSQVIgYnVmZmVyIGJsb2NrIHNpemUuCi0JICoKLQkgKiBXZSBjaG9vc2UgaXQgdG8gYmUgdGhlIHNpemUgb2YgYSBwYWdlIHRvIHNpbXBsaWZ5IHRoZQotCSAqIC9kZXYvbWVtcmFyIG1tYXAoKSBpbXBsZW1lbnRhdGlvbiBhbmQgdXNhZ2UuICBPdGhlcndpc2UKLQkgKiBwYWdpbmcgaXMgbm90IGludm9sdmVkIG9uY2UgYW4gUkFSIGlzIGxvY2tlZCBkb3duLgotCSAqLwotCXN0YXRpYyBzaXplX3QgY29uc3QgUkFSX0JMT0NLX1NJWkUgPSBQQUdFX1NJWkU7Ci0KLQlkbWFfYWRkcl90IGxvdywgaGlnaDsKLQlzdHJ1Y3QgbWVtcmFyX3Jhcl9pbmZvICogY29uc3QgcmFyID0gJm1lbXJhcnNbcmFybnVtXTsKLQotCUJVR19PTihNUlNUX05VTV9SQVIgIT0gQVJSQVlfU0laRShtZW1yYXJzKSk7Ci0JQlVHX09OKCFtZW1yYXJfaXNfdmFsaWRfcmFyX3R5cGUocmFybnVtKSk7Ci0JQlVHX09OKHJhci0+YWxsb2NhdGVkKTsKLQotCWlmIChyYXJfZ2V0X2FkZHJlc3MocmFybnVtLCAmbG93LCAmaGlnaCkgIT0gMCkKLQkJLyogTm8gUkFSIGlzIGF2YWlsYWJsZS4gKi8KLQkJcmV0dXJuIC1FTk9ERVY7Ci0KLQlpZiAobG93ID09IDAgfHwgaGlnaCA9PSAwKSB7Ci0JCXJhci0+YmFzZSAgICAgID0gMDsKLQkJcmFyLT5sZW5ndGggICAgPSAwOwotCQlyYXItPmlvYmFzZSAgICA9IE5VTEw7Ci0JCXJhci0+YWxsb2NhdG9yID0gTlVMTDsKLQkJcmV0dXJuIC1FTk9TUEM7Ci0JfQotCi0JLyoKLQkgKiBAdG9kbyBWZXJpZnkgdGhhdCBMTkMgYW5kIExOVyBSQVIgcmVnaXN0ZXIgY29udGVudHMKLQkgKiAgICAgICBhZGRyZXNzZXMsIHNlY3VyaXR5LCBldGMgYXJlIGNvbXBhdGlibGUgYW5kCi0JICogICAgICAgY29uc2lzdGVudCkuCi0JICovCi0KLQlyYXItPmxlbmd0aCA9IGhpZ2ggLSBsb3cgKyAxOwotCi0JLyogQ2xhaW0gUkFSIG1lbW9yeSBhcyBvdXIgb3duLiAqLwotCWlmIChyZXF1ZXN0X21lbV9yZWdpb24obG93LCByYXItPmxlbmd0aCwgZGV2bmFtZSkgPT0gTlVMTCkgewotCQlyYXItPmxlbmd0aCA9IDA7Ci0JCXByX2VycigiJXM6IFVuYWJsZSB0byBjbGFpbSBSQVJbJWRdIG1lbW9yeS5cbiIsCi0JCSAgICAgICBkZXZuYW1lLCByYXJudW0pOwotCQlwcl9lcnIoIiVzOiBSQVJbJWRdIGRpc2FibGVkLlxuIiwgZGV2bmFtZSwgcmFybnVtKTsKLQkJcmV0dXJuIC1FQlVTWTsKLQl9Ci0KLQlyYXItPmJhc2UgPSBsb3c7Ci0KLQkvKgotCSAqIE5vdyBtYXAgaXQgaW50byB0aGUga2VybmVsIGFkZHJlc3Mgc3BhY2UuCi0JICoKLQkgKiBOb3RlIHRoYXQgdGhlIFJBUiBtZW1vcnkgbWF5IG9ubHkgYmUgYWNjZXNzZWQgYnkgSUEKLQkgKiB3aGVuIGRlYnVnZ2luZy4gIE90aGVyd2lzZSBhdHRlbXB0cyB0byBhY2Nlc3MgdGhlCi0JICogUkFSIG1lbW9yeSB3aGVuIGl0IGlzIGxvY2tlZCBkb3duIHdpbGwgcmVzdWx0IGluCi0JICogYmVoYXZpb3Igc2ltaWxhciB0byB3cml0aW5nIHRvIC9kZXYvbnVsbCBhbmQKLQkgKiByZWFkaW5nIGZyb20gL2Rldi96ZXJvLiAgVGhpcyBiZWhhdmlvciBpcyBlbmZvcmNlZAotCSAqIGJ5IHRoZSBoYXJkd2FyZS4gIEV2ZW4gaWYgd2UgZG9uJ3QgYWNjZXNzIHRoZQotCSAqIG1lbW9yeSwgbWFwcGluZyBpdCBpbnRvIHRoZSBrZXJuZWwgcHJvdmlkZXMgdXMgd2l0aAotCSAqIGEgY29udmVuaWVudCBSQVIgaGFuZGxlIHRvIGJ1cyBhZGRyZXNzIG1hcHBpbmcuCi0JICovCi0JcmFyLT5pb2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUocmFyLT5iYXNlLCByYXItPmxlbmd0aCk7Ci0JaWYgKHJhci0+aW9iYXNlID09IE5VTEwpIHsKLQkJcHJfZXJyKCIlczogVW5hYmxlIHRvIG1hcCBSQVIgbWVtb3J5LlxuIiwgZGV2bmFtZSk7Ci0JCXJlbGVhc2VfbWVtX3JlZ2lvbihsb3csIHJhci0+bGVuZ3RoKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCi0JLyogSW5pdGlhbGl6ZSBjb3JyZXNwb25kaW5nIG1lbW9yeSBhbGxvY2F0b3IuICovCi0JcmFyLT5hbGxvY2F0b3IgPSBtZW1yYXJfY3JlYXRlX2FsbG9jYXRvcigodW5zaWduZWQgbG9uZykgcmFyLT5pb2Jhc2UsCi0JCQkJCQlyYXItPmxlbmd0aCwgUkFSX0JMT0NLX1NJWkUpOwotCWlmIChyYXItPmFsbG9jYXRvciA9PSBOVUxMKSB7Ci0JCWlvdW5tYXAocmFyLT5pb2Jhc2UpOwotCQlyZWxlYXNlX21lbV9yZWdpb24obG93LCByYXItPmxlbmd0aCk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCXByX2luZm8oIiVzOiBCUkFSWyVkXSBidXMgYWRkcmVzcyByYW5nZSA9IFsweCVseCwgMHglbHhdXG4iLAotCQlkZXZuYW1lLCByYXJudW0sICh1bnNpZ25lZCBsb25nKSBsb3csICh1bnNpZ25lZCBsb25nKSBoaWdoKTsKLQotCXByX2luZm8oIiVzOiBCUkFSWyVkXSBzaXplID0gJXp1IEtpQlxuIiwKLQkJCWRldm5hbWUsIHJhcm51bSwgcmFyLT5hbGxvY2F0b3ItPmNhcGFjaXR5IC8gMTAyNCk7Ci0KLQlyYXItPmFsbG9jYXRlZCA9IDE7Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qKgotICoJbWVtcmFyX2ZpbmlfcmFyX3Jlc291cmNlcwktCWZyZWUgdXAgUkFSIHJlc291cmNlcwotICoKLSAqCUZpbmFsaXplIFJBUiByZXNvdXJjZXMuIEZyZWUgdXAgdGhlIHJlc291cmNlIHRhYmxlcywgaGFuZCB0aGUgbWVtb3J5Ci0gKgliYWNrIHRvIHRoZSBrZXJuZWwsIHVubWFwIHRoZSBkZXZpY2UgYW5kIHJlbGVhc2UgdGhlIGFkZHJlc3Mgc3BhY2UuCi0gKi8KLXN0YXRpYyB2b2lkIG1lbXJhcl9maW5pX3Jhcl9yZXNvdXJjZXModm9pZCkKLXsKLQlpbnQgejsKLQlzdHJ1Y3QgbWVtcmFyX2J1ZmZlcl9pbmZvICpwb3M7Ci0Jc3RydWN0IG1lbXJhcl9idWZmZXJfaW5mbyAqdG1wOwotCi0JLyoKLQkgKiBAdG9kbyBEbyB3ZSBuZWVkIHRvIGhvbGQgYSBsb2NrIGF0IHRoaXMgcG9pbnQgaW4gdGltZT8KLQkgKiAgICAgICAobW9kdWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgb3IgZXhpdD8pCi0JICovCi0KLQlmb3IgKHogPSBNUlNUX05VTV9SQVI7IHotLSAhPSAwOyApIHsKLQkJc3RydWN0IG1lbXJhcl9yYXJfaW5mbyAqIGNvbnN0IHJhciA9ICZtZW1yYXJzW3pdOwotCi0JCWlmICghcmFyLT5hbGxvY2F0ZWQpCi0JCQljb250aW51ZTsKLQotCQkvKiBDbGVhbiB1cCByZW1haW5pbmcgcmVzb3VyY2VzLiAqLwotCi0JCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsCi0JCQkJCSB0bXAsCi0JCQkJCSAmcmFyLT5idWZmZXJzLmxpc3QsCi0JCQkJCSBsaXN0KSB7Ci0JCQlrcmVmX3B1dCgmcG9zLT5yZWZjb3VudCwgbWVtcmFyX3JlbGVhc2VfYmxvY2tfaSk7Ci0JCX0KLQotCQltZW1yYXJfZGVzdHJveV9hbGxvY2F0b3IocmFyLT5hbGxvY2F0b3IpOwotCQlyYXItPmFsbG9jYXRvciA9IE5VTEw7Ci0KLQkJaW91bm1hcChyYXItPmlvYmFzZSk7Ci0JCXJlbGVhc2VfbWVtX3JlZ2lvbihyYXItPmJhc2UsIHJhci0+bGVuZ3RoKTsKLQotCQlyYXItPmlvYmFzZSA9IE5VTEw7Ci0JCXJhci0+YmFzZSA9IDA7Ci0JCXJhci0+bGVuZ3RoID0gMDsKLQotCQl1bnJlZ2lzdGVyX3Jhcih6KTsKLQl9Ci19Ci0KLS8qKgotICoJbWVtcmFyX3Jlc2VydmVfYmxvY2sJLQloYW5kbGUgYW4gYWxsb2NhdGlvbiByZXF1ZXN0Ci0gKglAcmVxdWVzdDogYmxvY2sgYmVpbmcgcmVxdWVzdGVkCi0gKglAZmlscDogb3duZXIgaXQgaXMgdGllZCB0bwotICoKLSAqCUFsbG9jYXRlIGEgYmxvY2sgb2YgdGhlIHJlcXVlc3RlZCBSQVIuIElmIHN1Y2Nlc3NmdWwgcmV0dXJuIHRoZQotICoJcmVxdWVzdCBvYmplY3QgZmlsbGVkIGluIGFuZCB6ZXJvLCBpZiBub3QgcmVwb3J0IGFuIGVycm9yIGNvZGUKLSAqLwotCi1zdGF0aWMgbG9uZyBtZW1yYXJfcmVzZXJ2ZV9ibG9jayhzdHJ1Y3QgUkFSX2J1ZmZlciAqcmVxdWVzdCwKLQkJCQkgc3RydWN0IGZpbGUgKmZpbHApCi17Ci0Jc3RydWN0IFJBUl9ibG9ja19pbmZvICogY29uc3QgcmluZm8gPSAmcmVxdWVzdC0+aW5mbzsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqYnVmZmVyOwotCXN0cnVjdCBtZW1yYXJfYnVmZmVyX2luZm8gKmJ1ZmZlcl9pbmZvOwotCXUzMiBoYW5kbGU7Ci0Jc3RydWN0IG1lbXJhcl9yYXJfaW5mbyAqcmFyID0gTlVMTDsKLQotCS8qIFByZXZlbnQgYXJyYXkgb3ZlcmZsb3cuICovCi0JaWYgKCFtZW1yYXJfaXNfdmFsaWRfcmFyX3R5cGUocmluZm8tPnR5cGUpKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXJhciA9ICZtZW1yYXJzW3JpbmZvLT50eXBlXTsKLQlpZiAoIXJhci0+YWxsb2NhdGVkKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCS8qIFJlc2VydmUgbWVtb3J5IGluIFJBUi4gKi8KLQloYW5kbGUgPSBtZW1yYXJfYWxsb2NhdG9yX2FsbG9jKHJhci0+YWxsb2NhdG9yLCByaW5mby0+c2l6ZSk7Ci0JaWYgKGhhbmRsZSA9PSAwKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCWJ1ZmZlcl9pbmZvID0ga21hbGxvYyhzaXplb2YoKmJ1ZmZlcl9pbmZvKSwgR0ZQX0tFUk5FTCk7Ci0KLQlpZiAoYnVmZmVyX2luZm8gPT0gTlVMTCkgewotCQltZW1yYXJfYWxsb2NhdG9yX2ZyZWUocmFyLT5hbGxvY2F0b3IsIGhhbmRsZSk7Ci0JCXJldHVybiAtRU5PTUVNOwotCX0KLQotCWJ1ZmZlciA9ICZidWZmZXJfaW5mby0+YnVmZmVyOwotCWJ1ZmZlci0+aW5mby50eXBlID0gcmluZm8tPnR5cGU7Ci0JYnVmZmVyLT5pbmZvLnNpemUgPSByaW5mby0+c2l6ZTsKLQotCS8qIE1lbW9yeSBoYW5kbGUgY29ycmVzcG9uZGluZyB0byB0aGUgYnVzIGFkZHJlc3MuICovCi0JYnVmZmVyLT5pbmZvLmhhbmRsZSA9IGhhbmRsZTsKLQlidWZmZXItPmJ1c19hZGRyZXNzID0gbWVtcmFyX2dldF9idXNfYWRkcmVzcyhyYXIsIGhhbmRsZSk7Ci0KLQkvKgotCSAqIEtlZXAgdHJhY2sgb2Ygb3duZXIgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgY2xlYW51cCBpZgotCSAqIG5lY2Vzc2FyeS4KLQkgKi8KLQlidWZmZXJfaW5mby0+b3duZXIgPSBmaWxwOwotCi0Ja3JlZl9pbml0KCZidWZmZXJfaW5mby0+cmVmY291bnQpOwotCi0JbXV0ZXhfbG9jaygmcmFyLT5sb2NrKTsKLQlsaXN0X2FkZCgmYnVmZmVyX2luZm8tPmxpc3QsICZyYXItPmJ1ZmZlcnMubGlzdCk7Ci0JbXV0ZXhfdW5sb2NrKCZyYXItPmxvY2spOwotCi0JcmluZm8tPmhhbmRsZSA9IGJ1ZmZlci0+aW5mby5oYW5kbGU7Ci0JcmVxdWVzdC0+YnVzX2FkZHJlc3MgPSBidWZmZXItPmJ1c19hZGRyZXNzOwotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qKgotICoJbWVtcmFyX3JlbGVhc2VfYmxvY2sJCS0JcmVsZWFzZSBhIFJBUiBibG9jawotICoJQGFkZHI6IGFkZHJlc3MgaW4gUkFSIHNwYWNlCi0gKgotICoJUmVsZWFzZSBhIHByZXZpb3VzbHkgYWxsb2NhdGVkIGJsb2NrLiBSZWxlYXNlcyBhY3Qgb24gY29tcGxldGUKLSAqCWJsb2NrcywgcGFydGlhbGx5IGZyZWVpbmcgYSBibG9jayBpcyBub3Qgc3VwcG9ydGVkCi0gKi8KLQotc3RhdGljIGxvbmcgbWVtcmFyX3JlbGVhc2VfYmxvY2sodTMyIGFkZHIpCi17Ci0Jc3RydWN0IG1lbXJhcl9idWZmZXJfaW5mbyAqcG9zOwotCXN0cnVjdCBtZW1yYXJfYnVmZmVyX2luZm8gKnRtcDsKLQlzdHJ1Y3QgbWVtcmFyX3Jhcl9pbmZvICogY29uc3QgcmFyID0gbWVtcmFyX2dldF9yYXJfaW5mbyhhZGRyKTsKLQlsb25nIHJlc3VsdCA9IC1FSU5WQUw7Ci0KLQlpZiAocmFyID09IE5VTEwpCi0JCXJldHVybiAtRU5PRU5UOwotCi0JbXV0ZXhfbG9jaygmcmFyLT5sb2NrKTsKLQotCS8qCi0JICogSXRlcmF0ZSB0aHJvdWdoIHRoZSBidWZmZXIgbGlzdCB0byBmaW5kIHRoZSBjb3JyZXNwb25kaW5nCi0JICogYnVmZmVyIHRvIGJlIHJlbGVhc2VkLgotCSAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsCi0JCQkJIHRtcCwKLQkJCQkgJnJhci0+YnVmZmVycy5saXN0LAotCQkJCSBsaXN0KSB7Ci0JCXN0cnVjdCBSQVJfYmxvY2tfaW5mbyAqIGNvbnN0IGluZm8gPQotCQkJJnBvcy0+YnVmZmVyLmluZm87Ci0KLQkJLyoKLQkJICogVGFrZSBpbnRvIGFjY291bnQgaGFuZGxlIG9mZnNldHMgdGhhdCBtYXkgaGF2ZSBiZWVuCi0JCSAqIGFkZGVkIHRvIHRoZSBiYXNlIGhhbmRsZSwgc3VjaCBhcyBpbiB0aGUgZm9sbG93aW5nCi0JCSAqIHNjZW5hcmlvOgotCQkgKgotCQkgKiAgICAgdTMyIGhhbmRsZSA9IGJhc2UgKyBvZmZzZXQ7Ci0JCSAqICAgICByYXJfaGFuZGxlX3RvX2J1cyhoYW5kbGUpOwotCQkgKiAgICAgcmFyX3JlbGVhc2UoaGFuZGxlKTsKLQkJICovCi0JCWlmIChhZGRyID49IGluZm8tPmhhbmRsZQotCQkgICAgJiYgYWRkciA8IChpbmZvLT5oYW5kbGUgKyBpbmZvLT5zaXplKQotCQkgICAgJiYgbWVtcmFyX2lzX3ZhbGlkX3Jhcl90eXBlKGluZm8tPnR5cGUpKSB7Ci0JCQlrcmVmX3B1dCgmcG9zLT5yZWZjb3VudCwgbWVtcmFyX3JlbGVhc2VfYmxvY2tfaSk7Ci0JCQlyZXN1bHQgPSAwOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQltdXRleF91bmxvY2soJnJhci0+bG9jayk7Ci0KLQlyZXR1cm4gcmVzdWx0OwotfQotCi0vKioKLSAqCW1lbXJhcl9nZXRfc3RhdHMJLQlyZWFkIHN0YXRpc3RpY3MgZm9yIGEgUkFSCi0gKglAcjogc3RhdGlzdGljcyB0byBiZSBmaWxsZWQgaW4KLSAqCi0gKglSZXR1cm5zIHRoZSBzdGF0aXN0aWNzIGRhdGEgZm9yIHRoZSBSQVIsIG9yIGFuIGVycm9yIGNvZGUgaWYKLSAqCXRoZSByZXF1ZXN0IGNhbm5vdCBiZSBjb21wbGV0ZWQKLSAqLwotc3RhdGljIGxvbmcgbWVtcmFyX2dldF9zdGF0KHN0cnVjdCBSQVJfc3RhdCAqcikKLXsKLQlzdHJ1Y3QgbWVtcmFyX2FsbG9jYXRvciAqYWxsb2NhdG9yOwotCi0JaWYgKCFtZW1yYXJfaXNfdmFsaWRfcmFyX3R5cGUoci0+dHlwZSkpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKCFtZW1yYXJzW3ItPnR5cGVdLmFsbG9jYXRlZCkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KLQlhbGxvY2F0b3IgPSBtZW1yYXJzW3ItPnR5cGVdLmFsbG9jYXRvcjsKLQotCUJVR19PTihhbGxvY2F0b3IgPT0gTlVMTCk7Ci0KLQkvKgotCSAqIEFsbG9jYXRvciBjYXBhY2l0eSBkb2Vzbid0IGNoYW5nZSBvdmVyIHRpbWUuICBObwotCSAqIG5lZWQgdG8gc3luY2hyb25pemUuCi0JICovCi0Jci0+Y2FwYWNpdHkgPSBhbGxvY2F0b3ItPmNhcGFjaXR5OwotCi0JbXV0ZXhfbG9jaygmYWxsb2NhdG9yLT5sb2NrKTsKLQlyLT5sYXJnZXN0X2Jsb2NrX3NpemUgPSBhbGxvY2F0b3ItPmxhcmdlc3RfZnJlZV9hcmVhOwotCW11dGV4X3VubG9jaygmYWxsb2NhdG9yLT5sb2NrKTsKLQlyZXR1cm4gMDsKLX0KLQotLyoqCi0gKgltZW1yYXJfaW9jdGwJCS0JaW9jdGwgY2FsbGJhY2sKLSAqCUBmaWxwOiBmaWxlIGlzc3VpbmcgdGhlIHJlcXVlc3QKLSAqCUBjbWQ6IGNvbW1hbmQKLSAqCUBhcmc6IHBvaW50ZXIgdG8gY29udHJvbCBpbmZvcm1hdGlvbgotICoKLSAqCVBlcmZvcm0gb25lIG9mIHRoZSBpb2N0bHMgc3VwcG9ydGVkIGJ5IHRoZSBtZW1yYXIgZGV2aWNlCi0gKi8KLQotc3RhdGljIGxvbmcgbWVtcmFyX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLAotCQkJIHVuc2lnbmVkIGludCBjbWQsCi0JCQkgdW5zaWduZWQgbG9uZyBhcmcpCi17Ci0Jdm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7Ci0JbG9uZyByZXN1bHQgPSAwOwotCi0Jc3RydWN0IFJBUl9idWZmZXIgYnVmZmVyOwotCXN0cnVjdCBSQVJfYmxvY2tfaW5mbyAqIGNvbnN0IHJlcXVlc3QgPSAmYnVmZmVyLmluZm87Ci0Jc3RydWN0IFJBUl9zdGF0IHJhcl9pbmZvOwotCXUzMiByYXJfaGFuZGxlOwotCi0Jc3dpdGNoIChjbWQpIHsKLQljYXNlIFJBUl9IQU5ETEVSX1JFU0VSVkU6Ci0JCWlmIChjb3B5X2Zyb21fdXNlcihyZXF1ZXN0LAotCQkJCSAgIGFyZ3AsCi0JCQkJICAgc2l6ZW9mKCpyZXF1ZXN0KSkpCi0JCQlyZXR1cm4gLUVGQVVMVDsKLQotCQlyZXN1bHQgPSBtZW1yYXJfcmVzZXJ2ZV9ibG9jaygmYnVmZmVyLCBmaWxwKTsKLQkJaWYgKHJlc3VsdCAhPSAwKQotCQkJcmV0dXJuIHJlc3VsdDsKLQotCQlyZXR1cm4gY29weV90b191c2VyKGFyZ3AsIHJlcXVlc3QsIHNpemVvZigqcmVxdWVzdCkpOwotCi0JY2FzZSBSQVJfSEFORExFUl9SRUxFQVNFOgotCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhcl9oYW5kbGUsCi0JCQkJICAgYXJncCwKLQkJCQkgICBzaXplb2YocmFyX2hhbmRsZSkpKQotCQkJcmV0dXJuIC1FRkFVTFQ7Ci0KLQkJcmV0dXJuIG1lbXJhcl9yZWxlYXNlX2Jsb2NrKHJhcl9oYW5kbGUpOwotCi0JY2FzZSBSQVJfSEFORExFUl9TVEFUOgotCQlpZiAoY29weV9mcm9tX3VzZXIoJnJhcl9pbmZvLAotCQkJCSAgIGFyZ3AsCi0JCQkJICAgc2l6ZW9mKHJhcl9pbmZvKSkpCi0JCQlyZXR1cm4gLUVGQVVMVDsKLQotCQkvKgotCQkgKiBQb3B1bGF0ZSB0aGUgUkFSX3N0YXQgc3RydWN0dXJlIGJhc2VkIG9uIHRoZSBSQVIKLQkJICogdHlwZSBnaXZlbiBieSB0aGUgdXNlcgotCQkgKi8KLQkJaWYgKG1lbXJhcl9nZXRfc3RhdCgmcmFyX2luZm8pICE9IDApCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQotCQkvKgotCQkgKiBAdG9kbyBEbyB3ZSBuZWVkIHRvIHZlcmlmeSBkZXN0aW5hdGlvbiBwb2ludGVyCi0JCSAqICAgICAgICJhcmdwIiBpcyBub24temVybz8gIElzIHRoYXQgYWxyZWFkeSBkb25lIGJ5Ci0JCSAqICAgICAgIGNvcHlfdG9fdXNlcigpPwotCQkgKi8KLQkJcmV0dXJuIGNvcHlfdG9fdXNlcihhcmdwLAotCQkJCSAgICAmcmFyX2luZm8sCi0JCQkJICAgIHNpemVvZihyYXJfaW5mbykpID8gLUVGQVVMVCA6IDA7Ci0KLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVOT1RUWTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotLyoqCi0gKgltZW1yYXJfbW1hcAkJLQltbWFwIGhlbHBlciBmb3IgZGV1YmdnaW5nCi0gKglAZmlscDogaGFuZGxlIGRvaW5nIHRoZSBtYXBwaW5nCi0gKglAdm1hOiBtZW1vcnkgYXJlYQotICoKLSAqCVN1cHBvcnQgdGhlIG1tYXAgb3BlcmF0aW9uIG9uIHRoZSBSQVIgc3BhY2UgZm9yIGRlYnVnZ2luZyBzeXN0ZW1zCi0gKgl3aGVuIHRoZSBtZW1vcnkgaXMgbm90IGxvY2tlZCBkb3duLgotICovCi0KLXN0YXRpYyBpbnQgbWVtcmFyX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQotewotCS8qCi0JICogVGhpcyBtbWFwKCkgaW1wbGVtZW50YXRpb24gaXMgcHJlZG9taW5hbnRseSB1c2VmdWwgZm9yCi0JICogZGVidWdnaW5nIHNpbmNlIHRoZSBDUFUgd2lsbCBiZSBwcmV2ZW50ZWQgZnJvbSBhY2Nlc3NpbmcKLQkgKiBSQVIgbWVtb3J5IGJ5IHRoZSBoYXJkd2FyZSB3aGVuIFJBUiBpcyBwcm9wZXJseSBsb2NrZWQKLQkgKiBkb3duLgotCSAqCi0JICogSW4gb3JkZXIgZm9yIHRoaXMgaW1wbGVtZW50YXRpb24gdG8gYmUgdXNlZnVsIFJBUiBtZW1vcnkKLQkgKiBtdXN0IGJlIG5vdCBiZSBsb2NrZWQgZG93bi4gIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBkbwotCSAqIHRoYXQgd2hlbiBkZWJ1Z2dpbmcuICBETyBOT1QgbGVhdmUgUkFSIG1lbW9yeSB1bmxvY2tlZCBpbiBhCi0JICogZGVwbG95ZWQgZGV2aWNlIHRoYXQgdXRpbGl6ZXMgUkFSLgotCSAqLwotCi0Jc2l6ZV90IGNvbnN0IHNpemUgPSB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQ7Ci0KLQkvKiBVc2VycyBwYXNzIHRoZSBSQVIgaGFuZGxlIGFzIHRoZSBtbWFwKCkgb2Zmc2V0IHBhcmFtZXRlci4gKi8KLQl1bnNpZ25lZCBsb25nIGNvbnN0IGhhbmRsZSA9IHZtYS0+dm1fcGdvZmYgPDwgUEFHRV9TSElGVDsKLQotCXN0cnVjdCBtZW1yYXJfcmFyX2luZm8gKiBjb25zdCByYXIgPSBtZW1yYXJfZ2V0X3Jhcl9pbmZvKGhhbmRsZSk7Ci0JdW5zaWduZWQgbG9uZyBwZm47Ci0KLQkvKiBPbmx5IGFsbG93IHByaXZpbGVkZ2VkIGFwcHMgdG8gZ28gcG9raW5nIGFyb3VuZCB0aGlzIHdheSAqLwotCWlmICghY2FwYWJsZShDQVBfU1lTX1JBV0lPKSkKLQkJcmV0dXJuIC1FUEVSTTsKLQotCS8qIEludmFsaWQgUkFSIGhhbmRsZSBvciBzaXplIHBhc3NlZCB0byBtbWFwKCkuICovCi0JaWYgKHJhciA9PSBOVUxMCi0JICAgIHx8IGhhbmRsZSA9PSAwCi0JICAgIHx8IHNpemUgPiAoaGFuZGxlIC0gKHVuc2lnbmVkIGxvbmcpIHJhci0+aW9iYXNlKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkvKgotCSAqIFJldHJpZXZlIHBoeXNpY2FsIGFkZHJlc3MgY29ycmVzcG9uZGluZyB0byB0aGUgUkFSIGhhbmRsZSwKLQkgKiBhbmQgY29udmVydCBpdCB0byBhIHBhZ2UgZnJhbWUuCi0JICovCi0JcGZuID0gbWVtcmFyX2dldF9waHlzaWNhbF9hZGRyZXNzKHJhciwgaGFuZGxlKSA+PiBQQUdFX1NISUZUOwotCi0KLQlwcl9kZWJ1ZygibWVtcmFyOiBtYXBwaW5nIFJBUiByYW5nZSBbMHglbHgsIDB4JWx4KSBpbnRvIHVzZXIgc3BhY2UuXG4iLAotCQkgaGFuZGxlLAotCQkgaGFuZGxlICsgc2l6ZSk7Ci0KLQkvKgotCSAqIE1hcCBSQVIgbWVtb3J5IGludG8gdXNlciBzcGFjZS4gIFRoaXMgaXMgcmVhbGx5IG9ubHkgdXNlZnVsCi0JICogZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyBzaW5jZSB0aGUgbWVtb3J5IHdvbid0IGJlCi0JICogYWNjZXNzaWJsZSwgaS5lLiByZWFkcyByZXR1cm4gemVybyBhbmQgd3JpdGVzIGFyZSBpZ25vcmVkLAotCSAqIHdoZW4gUkFSIGFjY2VzcyBjb250cm9sIGlzIGVuYWJsZWQuCi0JICovCi0JaWYgKHJlbWFwX3Bmbl9yYW5nZSh2bWEsCi0JCQkgICAgdm1hLT52bV9zdGFydCwKLQkJCSAgICBwZm4sCi0JCQkgICAgc2l6ZSwKLQkJCSAgICB2bWEtPnZtX3BhZ2VfcHJvdCkpCi0JCXJldHVybiAtRUFHQUlOOwotCi0JLyogdm1hLT52bV9vcHMgPSAmbWVtcmFyX21lbV9vcHM7ICovCi0KLQlyZXR1cm4gMDsKLX0KLQotLyoqCi0gKgltZW1yYXJfb3BlbgkJLQlkZXZpY2Ugb3BlbiBtZXRob2QKLSAqCUBpbm9kZTogaW5vZGUgdG8gb3BlbgotICoJQGZpbHA6IGZpbGUgaGFuZGxlCi0gKgotICoJQXMgd2Ugc3VwcG9ydCBtdWx0aXBsZSBhcmJpdGFyeSBvcGVucyB0aGVyZSBpcyBubyB3b3JrIHRvIGJlIGRvbmUKLSAqCXJlYWxseS4KLSAqLwotCi1zdGF0aWMgaW50IG1lbXJhcl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQotewotCW5vbnNlZWthYmxlX29wZW4oaW5vZGUsIGZpbHApOwotCXJldHVybiAwOwotfQotCi0vKioKLSAqCW1lbXJhcl9yZWxlYXNlCQktCWNsb3NlIG1ldGhvZCBmb3IgbWlzY2V2Ci0gKglAaW5vZGU6IGlub2RlIG9mIGRldmljZQotICoJQGZpbHA6IGhhbmRsZSB0aGF0IGlzIGdvaW5nIGF3YXkKLSAqCi0gKglGcmVlIHVwIGFsbCB0aGUgcmVnaW9ucyB0aGF0IGJlbG9uZyB0byB0aGlzIGZpbGUgaGFuZGxlLiBXZSB1c2UKLSAqCXRoZSBoYW5kbGUgYXMgYSBuYXR1cmFsIExpbnV4IHN0eWxlICdsaWZldGltZScgaW5kaWNhdG9yIGFuZCB0bwotICoJZW5zdXJlIHJlc291cmNlcyBhcmUgbm90IGxlYWtlZCB3aGVuIHRoZWlyIG93bmVyIGV4cGxvZGVzIGluIGFuCi0gKgl1bnBsYW5uZWQgZmFzaGlvbi4KLSAqLwotCi1zdGF0aWMgaW50IG1lbXJhcl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQotewotCS8qIEZyZWUgYWxsIHJlZ2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBmaWxlIGhhbmRsZS4gKi8KLQotCXN0cnVjdCBtZW1yYXJfYnVmZmVyX2luZm8gKnBvczsKLQlzdHJ1Y3QgbWVtcmFyX2J1ZmZlcl9pbmZvICp0bXA7Ci0JaW50IHo7Ci0KLQlmb3IgKHogPSAwOyB6ICE9IE1SU1RfTlVNX1JBUjsgKyt6KSB7Ci0JCXN0cnVjdCBtZW1yYXJfcmFyX2luZm8gKiBjb25zdCByYXIgPSAmbWVtcmFyc1t6XTsKLQotCQltdXRleF9sb2NrKCZyYXItPmxvY2spOwotCi0JCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsCi0JCQkJCSB0bXAsCi0JCQkJCSAmcmFyLT5idWZmZXJzLmxpc3QsCi0JCQkJCSBsaXN0KSB7Ci0JCQlpZiAoZmlscCA9PSBwb3MtPm93bmVyKQotCQkJCWtyZWZfcHV0KCZwb3MtPnJlZmNvdW50LAotCQkJCQkgbWVtcmFyX3JlbGVhc2VfYmxvY2tfaSk7Ci0JCX0KLQotCQltdXRleF91bmxvY2soJnJhci0+bG9jayk7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLS8qKgotICoJcmFyX3Jlc2VydmUJCS0JcmVzZXJ2ZSBSQVIgbWVtb3J5Ci0gKglAYnVmZmVyczogYnVmZmVycyB0byByZXNlcnZlCi0gKglAY291bnQ6IG51bWJlciB3YW50ZWQKLSAqCi0gKglSZXNlcnZlIGEgc2VyaWVzIG9mIGJ1ZmZlcnMgaW4gdGhlIFJBUiBzcGFjZS4gUmV0dXJucyB0aGUgbnVtYmVyIG9mCi0gKglidWZmZXJzIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQKLSAqLwotCi1zaXplX3QgcmFyX3Jlc2VydmUoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqIGNvbnN0IGVuZCA9Ci0JCShidWZmZXJzID09IE5VTEwgPyBidWZmZXJzIDogYnVmZmVycyArIGNvdW50KTsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqaTsKLQotCXNpemVfdCByZXNlcnZlX2NvdW50ID0gMDsKLQotCWZvciAoaSA9IGJ1ZmZlcnM7IGkgIT0gZW5kOyArK2kpIHsKLQkJaWYgKG1lbXJhcl9yZXNlcnZlX2Jsb2NrKGksIE5VTEwpID09IDApCi0JCQkrK3Jlc2VydmVfY291bnQ7Ci0JCWVsc2UKLQkJCWktPmJ1c19hZGRyZXNzID0gMDsKLQl9Ci0KLQlyZXR1cm4gcmVzZXJ2ZV9jb3VudDsKLX0KLUVYUE9SVF9TWU1CT0wocmFyX3Jlc2VydmUpOwotCi0vKioKLSAqCXJhcl9yZWxlYXNlCQktCXJldHVybiBSQVIgYnVmZmVycwotICoJQGJ1ZmZlcnM6IGJ1ZmZlcnMgdG8gcmVsZWFzZQotICoJQHNpemU6IHNpemUgb2YgcmVsZWFzZWQgYmxvY2sKLSAqCi0gKglSZXR1cm4gYSBzZXQgb2YgYnVmZmVycyB0byB0aGUgUkFSIHBvb2wKLSAqLwotCi1zaXplX3QgcmFyX3JlbGVhc2Uoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqIGNvbnN0IGVuZCA9Ci0JCShidWZmZXJzID09IE5VTEwgPyBidWZmZXJzIDogYnVmZmVycyArIGNvdW50KTsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqaTsKLQotCXNpemVfdCByZWxlYXNlX2NvdW50ID0gMDsKLQotCWZvciAoaSA9IGJ1ZmZlcnM7IGkgIT0gZW5kOyArK2kpIHsKLQkJdTMyICogY29uc3QgaGFuZGxlID0gJmktPmluZm8uaGFuZGxlOwotCQlpZiAobWVtcmFyX3JlbGVhc2VfYmxvY2soKmhhbmRsZSkgPT0gMCkgewotCQkJLyoKLQkJCSAqIEB0b2RvIFdlIGFzc3VtZSB3ZSBzaG91bGQgZG8gdGhpcyBlYWNoIHRpbWUKLQkJCSAqICAgICAgIHRoZSByZWYgY291bnQgaXMgZGVjcmVtZW50ZWQuICBTaG91bGQKLQkJCSAqICAgICAgIHdlIGluc3RlYWQgb25seSBkbyB0aGlzIHdoZW4gdGhlIHJlZgotCQkJICogICAgICAgY291bnQgaGFzIGRyb3BwZWQgdG8gemVybywgYW5kIHRoZQotCQkJICogICAgICAgYnVmZmVyIGhhcyBiZWVuIGNvbXBsZXRlbHkKLQkJCSAqICAgICAgIHJlbGVhc2VkL3VubWFwcGVkPwotCQkJICovCi0JCQkqaGFuZGxlID0gMDsKLQkJCSsrcmVsZWFzZV9jb3VudDsKLQkJfQotCX0KLQotCXJldHVybiByZWxlYXNlX2NvdW50OwotfQotRVhQT1JUX1NZTUJPTChyYXJfcmVsZWFzZSk7Ci0KLS8qKgotICoJcmFyX2hhbmRsZV90b19idXMJLQlSQVIgdG8gYnVzIGFkZHJlc3MKLSAqCUBidWZmZXJzOiBSQVIgYnVmZmVyIHN0cnVjdHVyZQotICoJQGNvdW50OiBudW1iZXIgb2YgYnVmZmVycyB0byBjb252ZXJ0Ci0gKgotICoJVHVybiBhIGxpc3Qgb2YgUkFSIGhhbmRsZSBtYXBwaW5ncyBpbnRvIGFjdHVhbCBidXMgYWRkcmVzc2VzLiBOb3RlCi0gKgl0aGF0IHdoZW4gdGhlIGRldmljZSBpcyBsb2NrZWQgZG93biB0aGUgYnVzIGFkZHJlc3NlcyBpbiBxdWVzdGlvbgotICoJYXJlIG5vdCBDUFUgYWNjZXNzaWJsZS4KLSAqLwotCi1zaXplX3QgcmFyX2hhbmRsZV90b19idXMoc3RydWN0IFJBUl9idWZmZXIgKmJ1ZmZlcnMsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqIGNvbnN0IGVuZCA9Ci0JCShidWZmZXJzID09IE5VTEwgPyBidWZmZXJzIDogYnVmZmVycyArIGNvdW50KTsKLQlzdHJ1Y3QgUkFSX2J1ZmZlciAqaTsKLQlzdHJ1Y3QgbWVtcmFyX2J1ZmZlcl9pbmZvICpwb3M7Ci0KLQlzaXplX3QgY29udmVyc2lvbl9jb3VudCA9IDA7Ci0KLQkvKgotCSAqIEZpbmQgYWxsIGJ1cyBhZGRyZXNzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gaGFuZGxlcy4KLQkgKgotCSAqIEB0b2RvIE5vdCBsaWtpbmcgdGhpcyBuZXN0ZWQgbG9vcC4gIE9wdGltaXplLgotCSAqLwotCWZvciAoaSA9IGJ1ZmZlcnM7IGkgIT0gZW5kOyArK2kpIHsKLQkJc3RydWN0IG1lbXJhcl9yYXJfaW5mbyAqIGNvbnN0IHJhciA9Ci0JCQltZW1yYXJfZ2V0X3Jhcl9pbmZvKGktPmluZm8uaGFuZGxlKTsKLQotCQkvKgotCQkgKiBDaGVjayBpZiB3ZSBoYXZlIGEgYm9ndXMgaGFuZGxlLCBhbmQgdGhlbiBjb250aW51ZQotCQkgKiB3aXRoIHJlbWFpbmluZyBidWZmZXJzLgotCQkgKi8KLQkJaWYgKHJhciA9PSBOVUxMKSB7Ci0JCQlpLT5idXNfYWRkcmVzcyA9IDA7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCW11dGV4X2xvY2soJnJhci0+bG9jayk7Ci0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZyYXItPmJ1ZmZlcnMubGlzdCwgbGlzdCkgewotCQkJc3RydWN0IFJBUl9ibG9ja19pbmZvICogY29uc3QgdXNlcl9pbmZvID0KLQkJCQkmcG9zLT5idWZmZXIuaW5mbzsKLQotCQkJLyoKLQkJCSAqIFRha2UgaW50byBhY2NvdW50IGhhbmRsZSBvZmZzZXRzIHRoYXQgbWF5Ci0JCQkgKiBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGJhc2UgaGFuZGxlLCBzdWNoIGFzCi0JCQkgKiBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgotCQkJICoKLQkJCSAqICAgICB1MzIgaGFuZGxlID0gYmFzZSArIG9mZnNldDsKLQkJCSAqICAgICByYXJfaGFuZGxlX3RvX2J1cyhoYW5kbGUpOwotCQkJICovCi0KLQkJCWlmIChpLT5pbmZvLmhhbmRsZSA+PSB1c2VyX2luZm8tPmhhbmRsZQotCQkJICAgICYmIGktPmluZm8uaGFuZGxlIDwgKHVzZXJfaW5mby0+aGFuZGxlCi0JCQkJCQkgKyB1c2VyX2luZm8tPnNpemUpKSB7Ci0JCQkJdTMyIGNvbnN0IG9mZnNldCA9Ci0JCQkJCWktPmluZm8uaGFuZGxlIC0gdXNlcl9pbmZvLT5oYW5kbGU7Ci0KLQkJCQlpLT5pbmZvLnR5cGUgPSB1c2VyX2luZm8tPnR5cGU7Ci0JCQkJaS0+aW5mby5zaXplID0gdXNlcl9pbmZvLT5zaXplIC0gb2Zmc2V0OwotCQkJCWktPmJ1c19hZGRyZXNzID0KLQkJCQkJcG9zLT5idWZmZXIuYnVzX2FkZHJlc3MKLQkJCQkJKyBvZmZzZXQ7Ci0KLQkJCQkvKiBJbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudC4gKi8KLQkJCQlrcmVmX2dldCgmcG9zLT5yZWZjb3VudCk7Ci0KLQkJCQkrK2NvbnZlcnNpb25fY291bnQ7Ci0JCQkJYnJlYWs7Ci0JCQl9IGVsc2UgewotCQkJCWktPmJ1c19hZGRyZXNzID0gMDsKLQkJCX0KLQkJfQotCi0JCW11dGV4X3VubG9jaygmcmFyLT5sb2NrKTsKLQl9Ci0KLQlyZXR1cm4gY29udmVyc2lvbl9jb3VudDsKLX0KLUVYUE9SVF9TWU1CT0wocmFyX2hhbmRsZV90b19idXMpOwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBtZW1yYXJfZm9wcyA9IHsKLQkub3duZXIgPSBUSElTX01PRFVMRSwKLQkudW5sb2NrZWRfaW9jdGwgPSBtZW1yYXJfaW9jdGwsCi0JLm1tYXAgICAgICAgICAgID0gbWVtcmFyX21tYXAsCi0JLm9wZW4gICAgICAgICAgID0gbWVtcmFyX29wZW4sCi0JLnJlbGVhc2UgICAgICAgID0gbWVtcmFyX3JlbGVhc2UsCi0JLmxsc2VlawkJPSBub19sbHNlZWssCi19OwotCi1zdGF0aWMgc3RydWN0IG1pc2NkZXZpY2UgbWVtcmFyX21pc2NkZXYgPSB7Ci0JLm1pbm9yID0gTUlTQ19EWU5BTUlDX01JTk9SLCAgICAvKiBkeW5hbWljIGFsbG9jYXRpb24gKi8KLQkubmFtZSA9ICJtZW1yYXIiLCAgICAgICAgICAgICAgIC8qIC9kZXYvbWVtcmFyICovCi0JLmZvcHMgPSAmbWVtcmFyX2ZvcHMKLX07Ci0KLXN0YXRpYyBjaGFyIGNvbnN0IGJhbm5lcltdIF9faW5pdGRhdGEgPQotCUtFUk5fSU5GTwotCSJJbnRlbCBSQVIgSGFuZGxlcjogIiBNRU1SQVJfVkVSICIgaW5pdGlhbGl6ZWQuXG4iOwotCi0vKioKLSAqCW1lbXJhcl9yZWdpc3RyYXRpb25fY2FsbGJhY2sJLQlSQVIgb2J0YWluZWQKLSAqCUByYXI6IFJBUiBudW1iZXIKLSAqCi0gKglXZSBoYXZlIGJlZW4gZ3JhbnRlZCBvd25lcnNoaXAgb2YgdGhlIFJBUi4gQWRkIGl0IHRvIG91ciBtZW1vcnkKLSAqCW1hbmFnZW1lbnQgdGFibGVzCi0gKi8KLQotc3RhdGljIGludCBtZW1yYXJfcmVnaXN0cmF0aW9uX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgcmFyKQotewotCS8qCi0JICogV2UgaW5pdGlhbGl6ZSB0aGUgUkFSIHBhcmFtZXRlcnMgZWFybHkgb24gc28gdGhhdCB3ZSBjYW4KLQkgKiBkaXNjb250aW51ZSBtZW1yYXIgZGV2aWNlIGluaXRpYWxpemF0aW9uIGFuZCByZWdpc3RyYXRpb24KLQkgKiBpZiBzdWl0YWJseSBjb25maWd1cmVkIFJBUnMgYXJlIG5vdCBhdmFpbGFibGUuCi0JICovCi0JcmV0dXJuIG1lbXJhcl9pbml0X3Jhcl9yZXNvdXJjZXMocmFyLCBtZW1yYXJfbWlzY2Rldi5uYW1lKTsKLX0KLQotLyoqCi0gKgltZW1yYXJfaW5pdAktCWluaXRpYWxpc2UgUkFSIHN1cHBvcnQKLSAqCi0gKglJbml0aWFsaXNlIHN1cHBvcnQgZm9yIFJBUiBoYW5kbGVycy4gVGhpcyBtYXkgZ2V0IGxvYWRlZCBiZWZvcmUKLSAqCXRoZSBSQVIgc3VwcG9ydCBpcyBhY3RpdmF0ZWQsIGJ1dCB0aGUgY2FsbGJhY2tzIG9uIHRoZSByZWdpc3RyYXRpb24KLSAqCXdpbGwgaGFuZGxlIHRoYXQgc2l0dWF0aW9uIGZvciB1cyBhbnl3YXkuCi0gKi8KLQotc3RhdGljIGludCBfX2luaXQgbWVtcmFyX2luaXQodm9pZCkKLXsKLQlpbnQgZXJyOwotCWludCBpOwotCi0JcHJpbnRrKGJhbm5lcik7Ci0KLQkvKgotCSAqIFNvbWUgZGVsYXllZCBpbml0aWFsaXphdGlvbiBpcyBwZXJmb3JtZWQgaW4gdGhpcyBkcml2ZXIuCi0JICogTWFrZSBzdXJlIHJlc291cmNlcyB0aGF0IGFyZSB1c2VkIGR1cmluZyBkcml2ZXIgY2xlYW4tdXAKLQkgKiAoZS5nLiBkdXJpbmcgZHJpdmVyJ3MgcmVsZWFzZSgpIGZ1bmN0aW9uKSBhcmUgZnVsbHkKLQkgKiBpbml0aWFsaXplZCBiZWZvcmUgZmlyc3QgdXNlLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkKLQkgKiBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIHdoZW4gdGhlIGRlbGF5ZWQgaW5pdGlhbGl6YXRpb24KLQkgKiBpc24ndCBjb21wbGV0ZWQsIGxlYXZpbmcgYmVoaW5kIGEgcGFydGlhbGx5IGluaXRpYWxpemVkCi0JICogZHJpdmVyLgotCSAqCi0JICogU3VjaCBhIHNjZW5hcmlvIGNhbiBvY2N1ciB3aGVuIFJBUiBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZQotCSAqIHBsYXRmb3JtLCBhbmQgdGhlIGRyaXZlciBpcyByZWxlYXNlKClkLgotCSAqLwotCWZvciAoaSA9IDA7IGkgIT0gQVJSQVlfU0laRShtZW1yYXJzKTsgKytpKSB7Ci0JCXN0cnVjdCBtZW1yYXJfcmFyX2luZm8gKiBjb25zdCByYXIgPSAmbWVtcmFyc1tpXTsKLQkJbXV0ZXhfaW5pdCgmcmFyLT5sb2NrKTsKLQkJSU5JVF9MSVNUX0hFQUQoJnJhci0+YnVmZmVycy5saXN0KTsKLQl9Ci0KLQllcnIgPSBtaXNjX3JlZ2lzdGVyKCZtZW1yYXJfbWlzY2Rldik7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVycjsKLQotCS8qIE5vdyBjbGFpbSB0aGUgdHdvIFJBUnMgd2Ugd2FudCAqLwotCWVyciA9IHJlZ2lzdGVyX3JhcigwLCBtZW1yYXJfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCAwKTsKLQlpZiAoZXJyKQotCQlnb3RvIGZhaWw7Ci0KLQllcnIgPSByZWdpc3Rlcl9yYXIoMSwgbWVtcmFyX3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgMSk7Ci0JaWYgKGVyciA9PSAwKQotCQlyZXR1cm4gMDsKLQotCS8qIEl0IGlzIHBvc3NpYmxlIHJhciAwIHJlZ2lzdGVyZWQgYW5kIGFsbG9jYXRlZCByZXNvdXJjZXMgdGhlbiByYXIgMQotCSAgIGZhaWxlZCBzbyBkbyBhIGZ1bGwgcmVzb3VyY2UgZnJlZSAqLwotCW1lbXJhcl9maW5pX3Jhcl9yZXNvdXJjZXMoKTsKLWZhaWw6Ci0JbWlzY19kZXJlZ2lzdGVyKCZtZW1yYXJfbWlzY2Rldik7Ci0JcmV0dXJuIGVycjsKLX0KLQotLyoqCi0gKgltZW1yYXJfZXhpdAktCXVucmVnaXN0ZXIgYW5kIHVubG9hZAotICoKLSAqCVVucmVnaXN0ZXIgdGhlIGRldmljZSBhbmQgdGhlbiB1bmxvYWQgYW55IG1hcHBpbmdzIGFuZCByZWxlYXNlCi0gKgl0aGUgUkFSIHJlc291cmNlcwotICovCi0KLXN0YXRpYyB2b2lkIF9fZXhpdCBtZW1yYXJfZXhpdCh2b2lkKQotewotCW1pc2NfZGVyZWdpc3RlcigmbWVtcmFyX21pc2NkZXYpOwotCW1lbXJhcl9maW5pX3Jhcl9yZXNvdXJjZXMoKTsKLX0KLQotCi1tb2R1bGVfaW5pdChtZW1yYXJfaW5pdCk7Ci1tb2R1bGVfZXhpdChtZW1yYXJfZXhpdCk7Ci0KLQotTU9EVUxFX0FVVEhPUigiT3NzYW1hIE90aG1hbiA8b3NzYW1hLm90aG1hbkBpbnRlbC5jb20+Iik7Ci1NT0RVTEVfREVTQ1JJUFRJT04oIkludGVsIFJlc3RyaWN0ZWQgQWNjZXNzIFJlZ2lvbiBIYW5kbGVyIik7Ci1NT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1NT0RVTEVfVkVSU0lPTihNRU1SQVJfVkVSKTsKLQotCi0KLS8qCi0gIExvY2FsIFZhcmlhYmxlczoKLSAgICBjLWZpbGUtc3R5bGU6ICJsaW51eCIKLSAgRW5kOgotKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tc20vbWRwNF9vdmVybGF5LmMgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcDRfb3ZlcmxheS5jCmluZGV4IGRlMjg0YzIuLmI5YWNmNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tc20vbWRwNF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL21zbS9tZHA0X292ZXJsYXkuYwpAQCAtNjk2LDcgKzY5Niw3IEBACiAJc3RhZ2UgPSBwaXBlLT5taXhlcl9zdGFnZTsKIAltaXhlciA9IHBpcGUtPm1peGVyX251bTsKIAotCWlmIChwaXBlICE9IGN0cmwtPnN0YWdlW21peGVyXVtzdGFnZV0pCS8qIG5vdCBydW5pbmcgKi8KKwlpZiAocGlwZSAhPSBjdHJsLT5zdGFnZVttaXhlcl1bc3RhZ2VdKQkvKiBub3QgcnVubmluZyAqLwogCQlyZXR1cm47CiAKIAkvKiBNRFBfTEFZRVJNSVhFUl9JTl9DRkcsIHNoYXJkIGJ5IGJvdGggbWl4ZXIgMCBhbmQgMSAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tc20vbWRwX3BwcF9kcS5jIGIvZHJpdmVycy9zdGFnaW5nL21zbS9tZHBfcHBwX2RxLmMKaW5kZXggM2RjMWMwYy4uM2E2ODdjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHBfcHBwX2RxLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL21zbS9tZHBfcHBwX2RxLmMKQEAgLTIwMCw3ICsyMDAsNyBAQAogCQltc21fZmJfZW5zdXJlX21lbV9jb2hlcmVuY3lfYWZ0ZXJfZG1hKGpvYi0+aW5mbywgJmpvYi0+cmVxLCAxKTsKIAogCQkvKiBTY2hlZHVsZSBqb2JzIGZvciBjbGVhbnVwCi0JCSAqIEEgc2VwZXJhdGUgd29ya2VyIHRocmVhZCBkb2VzIHRoaXMgKi8KKwkJICogQSBzZXBhcmF0ZSB3b3JrZXIgdGhyZWFkIGRvZXMgdGhpcyAqLwogCQlxdWV1ZV9kZWxheWVkX3dvcmsobWRwX3BwcF9kam9iX2NsbnIsICZqb2ItPmNsZWFuZXIsCiAJCQltZHBfdGltZXJfZHVyYXRpb24pOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9tc20vbXNtX2ZiLmMgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21zbV9mYi5jCmluZGV4IGEyZjI5ZDQuLmU3ZWY4MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tc20vbXNtX2ZiLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL21zbS9tc21fZmIuYwpAQCAtODU5LDcgKzg1OSw3IEBACiAJCWJyZWFrOwogCiAJZGVmYXVsdDoKLQkJTVNNX0ZCX0VSUigibXNtX2ZiX2luaXQ6IGZiICVkIHVua293biBpbWFnZSB0eXBlIVxuIiwKKwkJTVNNX0ZCX0VSUigibXNtX2ZiX2luaXQ6IGZiICVkIHVua25vd24gaW1hZ2UgdHlwZSFcbiIsCiAJCQkgICBtZmQtPmluZGV4KTsKIAkJcmV0dXJuIHJldDsKIAl9CkBAIC0xNzkzLDkgKzE3OTMsOSBAQAogLyoKICAqIE5PVEU6IFRoZSB1c2Vyc3BhY2UgaXNzdWVzIGJsaXQgb3BlcmF0aW9ucyBpbiBhIHNlcXVlbmNlLCB0aGUgc2VxdWVuY2UKICAqIHN0YXJ0IHdpdGggYSBvcGVyYXRpb24gbWFya2VkIFNUQVJUIGFuZCBlbmRzIGluIGFuIG9wZXJhdGlvbiBtYXJrZWQKLSAqIEVORC4gSXQgaXMgZ3VyYW50ZWVkIGJ5IHRoZSB1c2Vyc3BhY2UgdGhhdCBhbGwgdGhlIGJsaXQgb3BlcmF0aW9ucworICogRU5ELiBJdCBpcyBndWFyYW50ZWVkIGJ5IHRoZSB1c2Vyc3BhY2UgdGhhdCBhbGwgdGhlIGJsaXQgb3BlcmF0aW9ucwogICogYmV0d2VlbiBTVEFSVCBhbmQgRU5EIGFyZSBvbmx5IHdpdGhpbiB0aGUgcmVnaW9ucyBvZiBhcmVhcyBkZXNpZ25hdGVkCi0gKiBieSB0aGUgU1RBUlQgYW5kIEVORCBvcGVyYXRpb25zIGFuZCB0aGF0IHRoZSB1c2Vyc3BhY2UgZG9lc250IG1vZGlmeQorICogYnkgdGhlIFNUQVJUIGFuZCBFTkQgb3BlcmF0aW9ucyBhbmQgdGhhdCB0aGUgdXNlcnNwYWNlIGRvZXNuJ3QgbW9kaWZ5CiAgKiB0aG9zZSBhcmVhcy4gSGVuY2UgaXQgd291bGQgYmUgZW5vdWdoIHRvIHBlcmZvcm0gYmFycmllci9jYWNoZSBvcGVyYXRpb25zCiAgKiBvbmx5IG9uIHRoZSBTVEFSVCBhbmQgRU5EIG9wZXJhdGlvbnMuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1jbWQtcXVldWUuaCBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1jbWQtcXVldWUuaAppbmRleCA1OWQyMjE0Li42MTQ2NTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtY21kLXF1ZXVlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWNtZC1xdWV1ZS5oCkBAIC0yMTQsNyArMjE0LDcgQEAKIAkvKgogCSAqIFdhcm5pbmc6IFRoaXMgY29kZSBjdXJyZW50bHkgb25seSB3b3JrcyB3aXRoIGRldmljZXMgdGhhdAogCSAqIGhhdmUgMjU2IHF1ZXVlcyBvciBsZXNzLiBEZXZpY2VzIHdpdGggbW9yZSB0aGFuIDE2IHF1ZXVlcwotCSAqIGFyZSBsYXllZCBvdXQgaW4gbWVtb3J5IHRvIGFsbG93IGNvcmVzIHF1aWNrIGFjY2VzcyB0bworCSAqIGFyZSBsYWlkIG91dCBpbiBtZW1vcnkgdG8gYWxsb3cgY29yZXMgcXVpY2sgYWNjZXNzIHRvCiAJICogZXZlcnkgMTZ0aCBxdWV1ZS4gVGhpcyByZWR1Y2VzIGNhY2hlIHRocmFzaGluZyB3aGVuIHlvdSBhcmUKIAkgKiBydW5uaW5nIDE2IHF1ZXVlcyBwZXIgcG9ydCB0byBzdXBwb3J0IGxvY2tsZXNzIG9wZXJhdGlvbi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1mcGEuaCBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1mcGEuaAppbmRleCA1MGE4YzkxLi4xZjA0Zjk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtZnBhLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWZwYS5oCkBAIC0xOTUsNyArMTk1LDcgQEAKIAljdm14X2ZwYV9pb2JkbWFfZGF0YV90IGRhdGE7CiAKIAkvKgotCSAqIEhhcmR3YXJlIG9ubHkgdXNlcyA2NCBiaXQgYWxsaWduZWQgbG9jYXRpb25zLCBzbyBjb252ZXJ0CisJICogSGFyZHdhcmUgb25seSB1c2VzIDY0IGJpdCBhbGlnbmVkIGxvY2F0aW9ucywgc28gY29udmVydAogCSAqIGZyb20gYnl0ZSBhZGRyZXNzIHRvIDY0LWJpdCBpbmRleAogCSAqLwogCWRhdGEucy5zY3JhZGRyID0gc2NyX2FkZHIgPj4gMzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItYm9hcmQuaCBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItYm9hcmQuaAppbmRleCA2MTFhOGUwLi5iNDY1YmVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLWJvYXJkLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci1ib2FyZC5oCkBAIC04MSw3ICs4MSw3IEBACiAgKiBAcGh5X2FkZHI6ICBUaGUgYWRkcmVzcyBvZiB0aGUgUEhZIHRvIHByb2dyYW0KICAqIEBsaW5rX2ZsYWdzOgogICogICAgICAgICAgICAgICAgICBGbGFncyB0byBjb250cm9sIGF1dG9uZWdvdGlhdGlvbi4gIEJpdCAwIGlzIGF1dG9uZWdvdGlhdGlvbgotICogICAgICAgICAgICAgICAgICBlbmFibGUvZGlzYWJsZSB0byBtYWludGFpbiBiYWNrd2FyZSBjb21wYXRhYmlsaXR5LgorICogICAgICAgICAgICAgICAgICBlbmFibGUvZGlzYWJsZSB0byBtYWludGFpbiBiYWNrd2FyZSBjb21wYXRpYmlsaXR5LgogICogQGxpbmtfaW5mbzogTGluayBzcGVlZCB0byBwcm9ncmFtLiBJZiB0aGUgc3BlZWQgaXMgemVybyBhbmQgYXV0b25lZ290aWF0aW9uCiAgKiAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQsIGFsbCBwb3NzaWJsZSBuZWdvdGlhdGlvbiBzcGVlZHMgYXJlIGFkdmVydGlzZWQuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci11dGlsLmMgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLXV0aWwuYwppbmRleCA0MWVmOGE0Li4xMzExODJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLXV0aWwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLXV0aWwuYwpAQCAtMzYyLDcgKzM2Miw3IEBACiB9CiAKIC8qKgotICogUmV0dXJucyB0aGUgSVBEL1BLTyBwb3J0IG51bWJlciBmb3IgYSBwb3J0IG9uIHRlaCBnaXZlbgorICogUmV0dXJucyB0aGUgSVBEL1BLTyBwb3J0IG51bWJlciBmb3IgYSBwb3J0IG9uIHRoZSBnaXZlbgogICogaW50ZXJmYWNlLgogICoKICAqIEBpbnRlcmZhY2U6IEludGVyZmFjZSB0byB1c2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXIuYyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXIuYwppbmRleCA1OTE1MDY2Li5lOWM1YzgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci5jCkBAIC02OTEsNyArNjkxLDcgQEAKIAogCQlpZiAoIXJldHJ5X2NudCkKIAkJCWN2bXhfZHByaW50ZigiV0FSTklORzogRklYX0lQRF9QVFJfQUxJR05NRU5UICIKLQkJCQkgICAgICJnZXRfd29yaygpIHRpbWVvdXQgb2NjdXJlZC5cbiIpOworCQkJCSAgICAgImdldF93b3JrKCkgdGltZW91dCBvY2N1cnJlZC5cbiIpOwogCiAJCS8qIEZyZWUgcGFja2V0ICovCiAJCWlmICh3b3JrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LW1kaW8uaCBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1tZGlvLmgKaW5kZXggZjQ1ZGM0OS4uZDg4YWI4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LW1kaW8uaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtbWRpby5oCkBAIC0yNTQsNyArMjU0LDcgQEAKICNkZWZpbmUgTURJT19DTEFVU0VfNDVfUkVBRF9JTkMgMgogI2RlZmluZSBNRElPX0NMQVVTRV80NV9SRUFEICAgICAzCiAKLS8qIE1NRCBpZGVudGlmaWVycywgbW9zdGx5IGZvciBhY2Nlc3NpbmcgZGV2aWNlcyB3aXRoaW5nIFhFTlBBSyBtb2R1bGVzLiAqLworLyogTU1EIGlkZW50aWZpZXJzLCBtb3N0bHkgZm9yIGFjY2Vzc2luZyBkZXZpY2VzIHdpdGhpbiBYRU5QQUsgbW9kdWxlcy4gKi8KICNkZWZpbmUgQ1ZNWF9NTURfREVWSUNFX1BNQV9QTUQgICAgICAxCiAjZGVmaW5lIENWTVhfTU1EX0RFVklDRV9XSVMgICAgICAgICAgMgogI2RlZmluZSBDVk1YX01NRF9ERVZJQ0VfUENTICAgICAgICAgIDMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wa28uaCBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wa28uaAppbmRleCBmMDY4YzE5Li5kZTM0MTJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtcGtvLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBrby5oCkBAIC05OCw3ICs5OCw3IEBACiAJLyoKIAkgKiBQS08gZG9lc24ndCBkbyBhbnkgbG9ja2luZy4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZQogCSAqIGFwcGxpY2F0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IG5vIG90aGVyIGNvcmUgaXMgYWNjZXNzaW5nCi0JICogdGhlIHNhbWUgcXVldWUgYXQgdGhlIHNtYWUgdGltZQorCSAqIHRoZSBzYW1lIHF1ZXVlIGF0IHRoZSBzYW1lIHRpbWUKIAkgKi8KIAlDVk1YX1BLT19MT0NLX05PTkUgPSAwLAogCS8qCkBAIC0zMjQsNyArMzI0LDcgQEAKICAqIC0gQ1ZNWF9QS09fTE9DS19OT05FCiAgKiAgICAgIC0gUEtPIGRvZXNuJ3QgZG8gYW55IGxvY2tpbmcuIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eQogICogICAgICAgICAgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IG5vIG90aGVyIGNvcmUKLSAqICAgICAgICAgIGlzIGFjY2Vzc2luZyB0aGUgc2FtZSBxdWV1ZSBhdCB0aGUgc21hZSB0aW1lLgorICogICAgICAgICAgaXMgYWNjZXNzaW5nIHRoZSBzYW1lIHF1ZXVlIGF0IHRoZSBzYW1lIHRpbWUuCiAgKiAtIENWTVhfUEtPX0xPQ0tfQVRPTUlDX1RBRwogICogICAgICAtIFBLTyBwZXJmb3JtcyBhbiBhdG9taWMgdGFnc3dpdGNoIHRvIGluc3VyZSBleGNsdXNpdmUKICAqICAgICAgICAgIGFjY2VzcyB0byB0aGUgb3V0cHV0IHF1ZXVlLiBUaGlzIHdpbGwgbWFpbnRhaW4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wb3cuaCBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wb3cuaAppbmRleCBiZjllMDY5Li45OTlhZWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtcG93LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBvdy5oCkBAIC0xNDkyLDggKzE0OTIsOCBAQAogLyoqCiAgKiBTd2l0Y2ggdG8gYSBOVUxMIHRhZywgd2hpY2ggZW5kcyBhbnkgb3JkZXJpbmcgb3IKICAqIHN5bmNocm9uaXphdGlvbiBwcm92aWRlZCBieSB0aGUgUE9XIGZvciB0aGUgY3VycmVudAotICogd29yayBxdWV1ZSBlbnRyeS4gIFRoaXMgb3BlcmF0aW9uIGNvbXBsZXRlcyBpbW1lZGlhdGx5LAotICogc28gY29tcGxldGV0aW9uIHNob3VsZCBub3QgYmUgd2FpdGVkIGZvci4KKyAqIHdvcmsgcXVldWUgZW50cnkuICBUaGlzIG9wZXJhdGlvbiBjb21wbGV0ZXMgaW1tZWRpYXRlbHksCisgKiBzbyBjb21wbGV0aW9uIHNob3VsZCBub3QgYmUgd2FpdGVkIGZvci4KICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1Qgd2FpdCBmb3IgcHJldmlvdXMgdGFnIHN3aXRjaGVzIHRvIGNvbXBsZXRlLAogICogc28gdGhlIGNhbGxlciBtdXN0IGVuc3VyZSB0aGF0IGFueSBwcmV2aW91cyB0YWcgc3dpdGNoZXMgaGF2ZSBjb21wbGV0ZWQuCiAgKi8KQEAgLTE1MzIsOCArMTUzMiw4IEBACiAvKioKICAqIFN3aXRjaCB0byBhIE5VTEwgdGFnLCB3aGljaCBlbmRzIGFueSBvcmRlcmluZyBvcgogICogc3luY2hyb25pemF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBQT1cgZm9yIHRoZSBjdXJyZW50Ci0gKiB3b3JrIHF1ZXVlIGVudHJ5LiAgVGhpcyBvcGVyYXRpb24gY29tcGxldGVzIGltbWVkaWF0bHksCi0gKiBzbyBjb21wbGV0ZXRpb24gc2hvdWxkIG5vdCBiZSB3YWl0ZWQgZm9yLgorICogd29yayBxdWV1ZSBlbnRyeS4gIFRoaXMgb3BlcmF0aW9uIGNvbXBsZXRlcyBpbW1lZGlhdGVseSwKKyAqIHNvIGNvbXBsZXRpb24gc2hvdWxkIG5vdCBiZSB3YWl0ZWQgZm9yLgogICogVGhpcyBmdW5jdGlvbiB3YWl0cyBmb3IgYW55IHBlbmRpbmcgdGFnIHN3aXRjaGVzIHRvIGNvbXBsZXRlCiAgKiBiZWZvcmUgcmVxdWVzdGluZyB0aGUgc3dpdGNoIHRvIE5VTEwuCiAgKi8KQEAgLTE2NzIsNyArMTY3Miw3IEBACiAKIC8qKgogICogUGVyZm9ybXMgYSB0YWcgc3dpdGNoIGFuZCB0aGVuIGFuIGltbWVkaWF0ZSBkZXNjaGVkdWxlLiBUaGlzIGNvbXBsZXRlcwotICogaW1tZWRpYXRseSwgc28gY29tcGxldGlvbiBtdXN0IG5vdCBiZSB3YWl0ZWQgZm9yLiAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVAorICogaW1tZWRpYXRlbHksIHNvIGNvbXBsZXRpb24gbXVzdCBub3QgYmUgd2FpdGVkIGZvci4gIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QKICAqIHVwZGF0ZSB0aGUgd3FlIGluIERSQU0gdG8gbWF0Y2ggYXJndW1lbnRzLgogICoKICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1Qgd2FpdCBmb3IgYW55IHByaW9yIHRhZyBzd2l0Y2hlcyB0byBjb21wbGV0ZSwgc28gdGhlCkBAIC0xNzU4LDcgKzE3NTgsNyBAQAogCiAvKioKICAqIFBlcmZvcm1zIGEgdGFnIHN3aXRjaCBhbmQgdGhlbiBhbiBpbW1lZGlhdGUgZGVzY2hlZHVsZS4gVGhpcyBjb21wbGV0ZXMKLSAqIGltbWVkaWF0bHksIHNvIGNvbXBsZXRpb24gbXVzdCBub3QgYmUgd2FpdGVkIGZvci4gIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QKKyAqIGltbWVkaWF0ZWx5LCBzbyBjb21wbGV0aW9uIG11c3Qgbm90IGJlIHdhaXRlZCBmb3IuICBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UCiAgKiB1cGRhdGUgdGhlIHdxZSBpbiBEUkFNIHRvIG1hdGNoIGFyZ3VtZW50cy4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciBhbnkgcHJpb3IgdGFnIHN3aXRjaGVzIHRvIGNvbXBsZXRlLCBzbyB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQtdXRpbC5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC11dGlsLmgKaW5kZXggMjM0Njc1Ni4uYzc0NWE3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC11dGlsLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC11dGlsLmgKQEAgLTU1LDcgKzU1LDcgQEAKIAkJcmV0dXJuIDI7CiAJZWxzZSBpZiAoaXBkX3BvcnQgPCA0MCkJLyogSW50ZXJmYWNlIDMgZm9yIGxvb3BiYWNrICovCiAJCXJldHVybiAzOwotCWVsc2UgaWYgKGlwZF9wb3J0ID09IDQwKQkvKiBOb24gZXhpc3RhbnQgaW50ZXJmYWNlIGZvciBQT1cwICovCisJZWxzZSBpZiAoaXBkX3BvcnQgPT0gNDApCS8qIE5vbiBleGlzdGVudCBpbnRlcmZhY2UgZm9yIFBPVzAgKi8KIAkJcmV0dXJuIDQ7CiAJZWxzZQogCQlwYW5pYygiSWxsZWdhbCBpcGRfcG9ydCAlZCBwYXNzZWQgdG8gSU5URVJGQUNFXG4iLCBpcGRfcG9ydCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL0tjb25maWcKaW5kZXggZjEwODJmNS4uYjA1MzA2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL29scGNfZGNvbi9LY29uZmlnCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vS2NvbmZpZwpAQCAtOSw3ICs5LDcgQEAKIAogY29uZmlnIEZCX09MUENfRENPTl8xCiAJYm9vbCAiT0xQQyBYTy0xIERDT04gc3VwcG9ydCIKLQlkZXBlbmRzIG9uIEZCX09MUENfRENPTgorCWRlcGVuZHMgb24gRkJfT0xQQ19EQ09OICYmIEdQSU9fQ1M1NTM1CiAJZGVmYXVsdCB5CiAJLS0taGVscC0tLQogCSAgRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBEQ09OIGluIFhPLTEgbW9kZWwgbGFwdG9wcy4gIFRoZSBrZXJuZWwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uX3hvXzEuYyBiL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uX3hvXzEuYwppbmRleCBiMTU0YmU3Li5iNWQyMWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbl94b18xLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL29scGNfZGNvbi9vbHBjX2Rjb25feG9fMS5jCkBAIC04MCw3ICs4MCw3IEBACiAJbG9iICY9IH4oMSA8PCBEQ09OX0lSUSk7CiAJb3V0Yihsb2IsIDB4NGQwKTsKIAotCS8qIFJlZ2lzdGVyIHRoZSBpbnRlcnVwdCBoYW5kbGVyICovCisJLyogUmVnaXN0ZXIgdGhlIGludGVycnVwdCBoYW5kbGVyICovCiAJaWYgKHJlcXVlc3RfaXJxKERDT05fSVJRLCAmZGNvbl9pbnRlcnJ1cHQsIDAsICJEQ09OIiwgZGNvbikpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJvbHBjLWRjb246IGZhaWxlZCB0byByZXF1ZXN0IERDT04ncyBpcnFcbiIpOwogCQlnb3RvIGVycl9yZXFfaXJxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29scGNfZGNvbi9vbHBjX2Rjb25feG9fMV81LmMgYi9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbl94b18xXzUuYwppbmRleCBlMjEzYjYzLi43YWE5YjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbl94b18xXzUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbl94b18xXzUuYwpAQCAtNyw2ICs3LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvYWNwaS5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgogI2luY2x1ZGUgPGFzbS9vbHBjLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcG9obWVsZnMvY3J5cHRvLmMgYi9kcml2ZXJzL3N0YWdpbmcvcG9obWVsZnMvY3J5cHRvLmMKaW5kZXggNjU0MDg2NC4uNWNjYTI0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3BvaG1lbGZzL2NyeXB0by5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9wb2htZWxmcy9jcnlwdG8uYwpAQCAtNzQ1LDcgKzc0NSw3IEBACiAKIAkvKgogCSAqIEF0IHRoaXMgcG9pbnQgTkVURlNfQ0FQQUJJTElUSUVTIHJlc3BvbnNlIGNvbW1hbmQKLQkgKiBzaG91bGQgc2V0dXAgc3VwZXJibG9jayBpbiBhIHdheSwgd2hpY2ggaXMgYWNjZXB0aWJsZQorCSAqIHNob3VsZCBzZXR1cCBzdXBlcmJsb2NrIGluIGEgd2F5LCB3aGljaCBpcyBhY2NlcHRhYmxlCiAJICogZm9yIGJvdGggY2xpZW50IGFuZCBzZXJ2ZXIsIHNvIGlmIHNlcnZlciByZWZ1c2VzIGNvbm5lY3Rpb24sCiAJICogaXQgd2lsbCBzZW5kIGVycm9yIGluIHRyYW5zYWN0aW9uIHJlc3BvbnNlLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3F1YXRlY2hfdXNiMi9xdWF0ZWNoX3VzYjIuYyBiL2RyaXZlcnMvc3RhZ2luZy9xdWF0ZWNoX3VzYjIvcXVhdGVjaF91c2IyLmMKaW5kZXggYzQ1YjA5ZS4uY2EwOThjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3F1YXRlY2hfdXNiMi9xdWF0ZWNoX3VzYjIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcXVhdGVjaF91c2IyL3F1YXRlY2hfdXNiMi5jCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAqIHZhbHVlIG9mIHRoZSBsaW5lIHN0YXR1cyBmbGFncyBmcm9tIHRoZSBwb3J0CiAgKiBAc2hhZG93TVNSOiBMYXN0IHJlY2VpdmVkIHN0YXRlIG9mIHRoZSBtb2RlbSBzdGF0dXMgcmVnaXN0ZXIsIGhvbGRzCiAgKiB0aGUgdmFsdWUgb2YgdGhlIG1vZGVtIHN0YXR1cyByZWNlaXZlZCBmcm9tIHRoZSBwb3J0Ci0gKiBAcmN2X2ZsdXNoOiBGbGFnIGluZGljYXRpbmcgdGhhdCBhIHJlY2VpdmUgZmx1c2ggaGFzIG9jY3VyZWQgb24KKyAqIEByY3ZfZmx1c2g6IEZsYWcgaW5kaWNhdGluZyB0aGF0IGEgcmVjZWl2ZSBmbHVzaCBoYXMgb2NjdXJyZWQgb24KICAqIHRoZSBoYXJkd2FyZS4KICAqIEB4bWl0X2ZsdXNoOiBGbGFnIGluZGljYXRpbmcgdGhhdCBhIHRyYW5zbWl0IGZsdXNoIGhhcyBiZWVuIHByb2Nlc3NlZCBieQogICogdGhlIGhhcmR3YXJlLgpAQCAtMTU2LDcgKzE1Niw3IEBACiAgKiBpbmNsdWRlcyB0aGUgc2l6ZSAoZXhjbHVkaW5nIGhlYWRlcikgb2YgVVJCcyB0aGF0IGhhdmUgYmVlbiBzdWJtaXR0ZWQgYnV0CiAgKiBoYXZlIG5vdCB5ZXQgYmVlbiBzZW50IHRvIHRvIHRoZSBkZXZpY2UsIGFuZCBieXRlcyB0aGF0IGhhdmUgYmVlbiBzZW50IG91dAogICogb2YgdGhlIHBvcnQgYnV0IG5vdCB5ZXQgcmVwb3J0ZWQgc2VudCBieSB0aGUgInhtaXRfZW1wdHkiIG1lc3NhZ2VzICh3aGljaAotICogaW5kaWNhdGUgdGhlIG51bWJlciBvZiBieXRlcyBzZW50IGVhY2ggdGltZSB0aGV5IGFyZSByZWNpZXZlZCwgZGVzcGl0ZSB0aGUKKyAqIGluZGljYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBlYWNoIHRpbWUgdGhleSBhcmUgcmVjZWl2ZWQsIGRlc3BpdGUgdGhlCiAgKiBtaXNsZWFkaW5nIG5hbWUpLgogICogLSBTdGFydHMgYXQgemVybyB3aGVuIHBvcnQgaXMgaW5pdGlhbGlzZWQuCiAgKiAtIGlzIGluY3JlbWVudGVkIGJ5IHRoZSBzaXplIG9mIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4gKG5vIGhlYWRlcnMpCkBAIC02NDksNyArNjQ5LDcgQEAKIAkvKiBhbHRob3VnaCB0aGUgVVNCIHNpZGUgaXMgbm93IGVtcHR5LCB0aGUgVUFSVCBpdHNlbGYgbWF5CiAJICogc3RpbGwgYmUgcHVzaGluZyBjaGFyYWN0ZXJzIG91dCBvdmVyIHRoZSBsaW5lLCBzbyB3ZSBoYXZlIHRvCiAJICogd2FpdCB0ZXN0aW5nIHRoZSBhY3R1YWwgbGluZSBzdGF0dXMgdW50aWwgdGhlIGxpbmVzIGNoYW5nZQotCSAqIGluZGljYXRpbmcgdGhhdCB0aGUgZGF0YSBpcyBkb25lIHRyYW5zZmVyaW5nLiAqLworCSAqIGluZGljYXRpbmcgdGhhdCB0aGUgZGF0YSBpcyBkb25lIHRyYW5zZmVycmluZy4gKi8KIAkvKiBGSVhNRTogc2xvdyB0aGlzIHBvbGxpbmcgZG93biBzbyBpdCBkb2Vzbid0IHJ1biB0aGUgVVNCIGJ1cyBmbGF0IG91dAogCSAqIGlmIGl0IGFjdHVhbGx5IGhhcyB0byBzcGVuZCBhbnkgdGltZSBpbiB0aGlzIGxvb3AgKHdoaWNoIGl0IG5vcm1hbGx5CiAJICogZG9lc24ndCBiZWNhdXNlIHRoZSBidWZmZXIgaXMgbmVhcmx5IGVtcHR5KSAqLwpAQCAtNzI2LDcgKzcyNiw3IEBACiAJCXJldHVybiAwOwogCX0gZWxzZSBpZiAocG9ydF9leHRyYS0+dHhfcGVuZGluZ19ieXRlcyA+PSBRVDJfRklGT19ERVBUSCkgewogCQkvKiBidWZmZXIgaXMgZnVsbCAoPT0pLiA+IHNob3VsZCBub3Qgb2NjdXIsIGJ1dCB3b3VsZCBpbmRpY2F0ZQotCQkgKiB0aGF0IGFuIG92ZXJmbG93IGhhZCBvY2N1cmVkICovCisJCSAqIHRoYXQgYW4gb3ZlcmZsb3cgaGFkIG9jY3VycmVkICovCiAJCWRiZygiJXMoKTogcG9ydCB0cmFuc21pdCBidWZmZXIgaXMgZnVsbCEiLCBfX2Z1bmNfXyk7CiAJCS8qIHNjaGVkdWxlX3dvcmsoJnBvcnQtPndvcmspOyBjb21tZW50ZWQgaW4gdmVuZG9yIGRyaXZlciAqLwogCQlyZXR1cm4gMDsKQEAgLTgyMyw3ICs4MjMsNyBAQAogCSAqIHJlZHVjZSB0aGUgZnJlZSBzcGFjZSBjb3VudCBieSB0aGUgc2l6ZSBvZiB0aGUgZGlzcGF0Y2hlZCB3cml0ZS4KIAkgKiBXaGVuIGEgInRyYW5zbWl0IGVtcHR5IiBtZXNzYWdlIGNvbWVzIGJhY2sgdXAgdGhlIFVTQiByZWFkIHN0cmVhbSwKIAkgKiB3ZSBkZWNyZW1lbnQgdGhlIGNvdW50IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVwb3J0ZWQgc2VudCwgdGh1cwotCSAqIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBzZW50IGFuZCByZWNpZXZlZCBieXRlcy4KKwkgKiBrZWVwaW5nIHRyYWNrIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2VudCBhbmQgcmVjZWl2ZWQgYnl0ZXMuCiAJICovCiAKIAlyb29tID0gKFFUMl9GSUZPX0RFUFRIIC0gcG9ydF9leHRyYS0+dHhfcGVuZGluZ19ieXRlcyk7CkBAIC0xNzk1LDcgKzE3OTUsNyBAQAogCX0KIH0KIAotLyoqIEBicmllZiBSZXRyZWl2ZSB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBmcm9tIHRoZSBkZXZpY2UKKy8qKiBAYnJpZWYgUmV0cmlldmUgdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgZnJvbSB0aGUgZGV2aWNlCiAgKgogICogSXNzdWVzIGEgR0VUX1JFR0lTVEVSIHZlbmRvci1zcGNpZmljIHJlcXVlc3Qgb3ZlciB0aGUgVVNCIGNvbnRyb2wKICAqIHBpcGUgdG8gb2J0YWluIGEgdmFsdWUgYmFjayBmcm9tIGEgc3BlY2lmaWMgcmVnaXN0ZXIgb24gYSBzcGVjaWZpYwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmggYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NoaXAvcnRtcF9waHkuaAppbmRleCA5ODQ1NGRmLi5hNTIyMjFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NoaXAvcnRtcF9waHkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NoaXAvcnRtcF9waHkuaApAQCAtNDY3LDcgKzQ2Nyw3IEBACiAJCQlEQkdQUklOVF9FUlIoIkJCUCB3cml0ZSBSJWQ9MHgleCBmYWlsLiBCdXN5Q250PSAlZC5iUENJY2xrT2ZmID0gJWQuIFxuIiwgX0ksIEJicENzci53b3JkLCBCdXN5Q250LCAoX0EpLT5iUENJY2xrT2ZmKTsJXAogCQl9CQkJCQkJCQkJCQkJCQkJCQlcCiAJfSBlbHNlIHsJCQkJCQkJXAotCQlEQkdQUklOVF9FUlIoIioqKioqKiBCQlBfV3JpdGVfTGF0Y2ggQnVmZmVyIGV4Y2VlZHMgbWF4IGJvdW5kcnkgKioqKioqIFxuIik7CVwKKwkJREJHUFJJTlRfRVJSKCIqKioqKiogQkJQX1dyaXRlX0xhdGNoIEJ1ZmZlciBleGNlZWRzIG1heCBib3VuZGFyeSAqKioqKiogXG4iKTsJXAogCX0JCQkJCQkJCQkJCQkJCQkJCQlcCiB9CiAjZW5kaWYgLyogUlRNUF9NQUNfUENJIC8vICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2JhX2FjdGlvbi5jCmluZGV4IDYyZjZmNmIuLjEzM2JjMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2JhX2FjdGlvbi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2JhX2FjdGlvbi5jCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiLi4vcnRfY29uZmlnLmgiCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAKLSNkZWZpbmUgQkFfT1JJX0lOSVRfU0VRCQkocEVudHJ5LT5UeFNlcVtUSURdKQkvKjEgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0YWwgc2VxdWVuY2UgbnVtYmVyIG9mIEJBIHNlc3Npb24gKi8KKyNkZWZpbmUgQkFfT1JJX0lOSVRfU0VRCQkocEVudHJ5LT5UeFNlcVtUSURdKQkvKjEgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIHNlcXVlbmNlIG51bWJlciBvZiBCQSBzZXNzaW9uICovCiAKICNkZWZpbmUgT1JJX1NFU1NJT05fTUFYX1JFVFJZCTgKICNkZWZpbmUgT1JJX0JBX1NFU1NJT05fVElNRU9VVAkoMjAwMCkJLyogbXMgKi8KQEAgLTE0ODcsNyArMTQ4Nyw3IEBACiAKIAkJLyoKIAkJICogZmx1c2ggYWxsIHBlbmRpbmcgcmVvcmRlcmluZyBtcGR1cwotCQkgKiBhbmQgcmVjZXZpbmcgbXBkdSB0byB1cHBlciBsYXllcgorCQkgKiBhbmQgcmVjZWl2aW5nIG1wZHUgdG8gdXBwZXIgbGF5ZXIKIAkJICogbWFrZSB0Y3AvaXAgdG8gdGFrZSBjYXJlIHJlb3JkZXJpbmcgbWVjaGFuaXNtCiAJCSAqLwogCQkvKmJhX3JlZnJlc2hfcmVvcmRlcmluZ19tcGR1cyhwQWQsIHBCQUVudHJ5KTsgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9hZXMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9hZXMuYwppbmRleCBhOTk4NzliLi5kNzBkMjI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fYWVzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2Flcy5jCkBAIC04NTgsNyArODU4LDcgQEAKIHN0YXRpYyB1aW50MzIgS1QyWzI1Nl07CiBzdGF0aWMgdWludDMyIEtUM1syNTZdOwogCi0vKiBwbGF0Zm9ybS1pbmRlcGVuZGFudAkzMi1iaXQgaW50ZWdlciBtYW5pcHVsYXRpb24JbWFjcm9zICovCisvKiBwbGF0Zm9ybS1pbmRlcGVuZGVudAkzMi1iaXQgaW50ZWdlciBtYW5pcHVsYXRpb24JbWFjcm9zICovCiAKICNkZWZpbmUJR0VUX1VJTlQzMihuLGIsaSkJCQkJCQlcCiB7CQkJCQkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2NmZy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2NmZy5jCmluZGV4IDI0ZjQzOTMuLjcyN2Y3OTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fY2ZnLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2NmZy5jCkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICAgICAgcEFkYXB0ZXIJUG9pbnRlciB0byBvdXIgYWRhcHRlcgogICAgICAgICBrZXlTdHJpbmcJV1BBIHByZS1zaGFyZWQga2V5IHN0cmluZwogICAgICAgICBwSGFzaFN0cglTdHJpbmcgdXNlZCBmb3IgcGFzc3dvcmQgaGFzaCBmdW5jdGlvbgotICAgICAgICBoYXNoU3RyTGVuCUxlbmdodCBvZiB0aGUgaGFzaCBzdHJpbmcKKyAgICAgICAgaGFzaFN0ckxlbglMZW5ndGggb2YgdGhlIGhhc2ggc3RyaW5nCiAgICAgICAgIHBQTUtCdWYJCU91dHB1dCBidWZmZXIgb2YgV1BBUFNLIGtleQogCiAgICAgUmV0dXJuOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhLmMKaW5kZXggZjZjMTkzYy4uMzM3OTllMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YS5jCkBAIC0zMzcsNyArMzM3LDcgQEAKIAogCS8qICovCiAJLyogSW4gV01NLVVBUFNELCBtbG1lIGZyYW1lIHNob3VsZCBiZSBzZXQgcHNtIGFzIHBvd2VyIHNhdmluZyBidXQgcHJvYmUgcmVxdWVzdCBmcmFtZSAqLwotCS8qIERhdGEtTnVsbCBwYWNrZXRzIGFsc2UgcGFzcyB0aHJvdWdoIE1NUmVxdWVzdCBpbiBSVDI4NjAsIGhvd2V2ZXIsIHdlIGhvcGUgY29udHJvbCB0aGUgcHNtIGJpdCB0byBwYXNzIEFQU0QgKi8KKwkvKiBEYXRhLU51bGwgcGFja2V0cyBhbHNvIHBhc3MgdGhyb3VnaCBNTVJlcXVlc3QgaW4gUlQyODYwLCBob3dldmVyLCB3ZSBob3BlIGNvbnRyb2wgdGhlIHBzbSBiaXQgdG8gcGFzcyBBUFNEICovCiAvKiAgICAgIGlmICgocEhlYWRlcl84MDJfMTEtPkZDLlR5cGUgIT0gQlRZUEVfREFUQSkgJiYgKHBIZWFkZXJfODAyXzExLT5GQy5UeXBlICE9IEJUWVBFX0NOVEwpKSAqLwogCXsKIAkJaWYgKChwSGVhZGVyXzgwMl8xMS0+RkMuU3ViVHlwZSA9PSBTVUJUWVBFX0FDVElPTikgfHwKQEAgLTE5MzMsNyArMTkzMyw3IEBACiAKIAlpZiAoVHlwZUxlbiA8PSAxNTAwKSB7CS8qIDgwMi4zLCA4MDIuMyBMTEMgKi8KIAkJLyoKLQkJICAgRGVzdE1BQyg2KSArIFNyY01BQyg2KSArIExlbmdodCgyKSArCisJCSAgIERlc3RNQUMoNikgKyBTcmNNQUMoNikgKyBMZW5ndGgoMikgKwogCQkgICBEU0FQKDEpICsgU1NBUCgxKSArIENvbnRyb2woMSkgKwogCQkgICBpZiB0aGUgRFNBUCA9IDB4QUEsIFNTQVA9MHhBQSwgQ29udG9ybCA9IDB4MDMsIGl0IGhhcyBhIDUtYnl0ZXMgU05BUCBoZWFkZXIuCiAJCSAgID0+ICsgU05BUCAoNSwgT3JpZ2luYXRpb25JRCgzKSArIGV0aGVyVHlwZSgyKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfcGNpLmMKaW5kZXggN2FmNTlmZi4uYmVmMGJiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfcGNpLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfcGNpLmMKQEAgLTQzOCwxMyArNDM4LDEzIEBACiAJLyogQWRkIFJ4IHNpemUgdG8gY2hhbm5lbCBsb2FkIGNvdW50ZXIsIHdlIHNob3VsZCBpZ25vcmUgZXJyb3IgY291bnRzICovCiAJcEFkLT5TdGFDZmcuQ0xCdXN5Qnl0ZXMgKz0gKHBSeEQtPlNETDAgKyAxNCk7CiAKLQkvKiBEcm9wIFRvRHMgcHJvbWlzY291cyBmcmFtZSwgaXQgaXMgb3BlbmVkIGR1ZSB0byBDQ1ggMiBjaGFubmVsIGxvYWQgc3RhdGlzdGljcyAqLworCS8qIERyb3AgVG9EcyBwcm9taXNjdW91cyBmcmFtZSwgaXQgaXMgb3BlbmVkIGR1ZSB0byBDQ1ggMiBjaGFubmVsIGxvYWQgc3RhdGlzdGljcyAqLwogCWlmIChwSGVhZGVyICE9IE5VTEwpIHsKIAkJaWYgKHBIZWFkZXItPkZDLlRvRHMpIHsKIAkJCXJldHVybiAoTkRJU19TVEFUVVNfRkFJTFVSRSk7CiAJCX0KIAl9Ci0JLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FudCdzIGRyb3AgaGVyZSBiZWNhdXNlIHdlIHdpbGwgZHJvcCBiZWFjb24gaW4gdGhpcyBjYXNlICovCisJLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FuJ3QncyBkcm9wIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIGRyb3AgYmVhY29uIGluIHRoaXMgY2FzZSAqLwogCS8qIEkgYW0ga2luZCBvZiBkb3VidGluZyB0aGUgVTJNIGJpdCBvcGVyYXRpb24gKi8KIAkvKiBpZiAocFJ4RC0+VTJNID09IDApICovCiAJLyogICAgICByZXR1cm4oTkRJU19TVEFUVVNfRkFJTFVSRSk7ICovCkBAIC05MzksNyArOTM5LDcgQEAKIAkvKiAqLwogCS8qICovCiAJLyogSW4gV01NLVVBUFNELCBtbG1lIGZyYW1lIHNob3VsZCBiZSBzZXQgcHNtIGFzIHBvd2VyIHNhdmluZyBidXQgcHJvYmUgcmVxdWVzdCBmcmFtZSAqLwotCS8qIERhdGEtTnVsbCBwYWNrZXRzIGFsc2UgcGFzcyB0aHJvdWdoIE1NUmVxdWVzdCBpbiBSVDI4NjAsIGhvd2V2ZXIsIHdlIGhvcGUgY29udHJvbCB0aGUgcHNtIGJpdCB0byBwYXNzIEFQU0QgKi8KKwkvKiBEYXRhLU51bGwgcGFja2V0cyBhbHNvIHBhc3MgdGhyb3VnaCBNTVJlcXVlc3QgaW4gUlQyODYwLCBob3dldmVyLCB3ZSBob3BlIGNvbnRyb2wgdGhlIHBzbSBiaXQgdG8gcGFzcyBBUFNEICovCiAJaWYgKHBIZWFkZXJfODAyXzExLT5GQy5UeXBlICE9IEJUWVBFX0RBVEEpIHsKIAkJaWYgKChwSGVhZGVyXzgwMl8xMS0+RkMuU3ViVHlwZSA9PSBTVUJUWVBFX1BST0JFX1JFUSkKIAkJICAgIHx8ICEocEFkLT5Db21tb25DZmcuYkFQU0RDYXBhYmxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YV91c2IuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3VzYi5jCmluZGV4IDdjNTZjMmYuLjU2Mzc4NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3VzYi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3VzYi5jCkBAIC03MDIsNyArNzAyLDcgQEAKIAkqcFJ4UGVuZGluZwkJCXBlbmRpbmcgcmVjZWl2ZWQgcGFja2V0IGZsYWcKIAogUmV0dXJuIFZhbHVlOgotICAgIHRoZSByZWNpZXZlZCBwYWNrZXQKKyAgICB0aGUgcmVjZWl2ZWQgcGFja2V0CiAKIE5vdGU6CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTg1MCw3ICs4NTAsNyBAQAogCS8qIEFkZCBSeCBzaXplIHRvIGNoYW5uZWwgbG9hZCBjb3VudGVyLCB3ZSBzaG91bGQgaWdub3JlIGVycm9yIGNvdW50cyAqLwogCXBBZC0+U3RhQ2ZnLkNMQnVzeUJ5dGVzICs9IChwUnhXSS0+TVBEVXRvdGFsQnl0ZUNvdW50ICsgMTQpOwogCi0JLyogRHJvcCBUb0RzIHByb21pc2NvdXMgZnJhbWUsIGl0IGlzIG9wZW5lZCBkdWUgdG8gQ0NYIDIgY2hhbm5lbCBsb2FkIHN0YXRpc3RpY3MgKi8KKwkvKiBEcm9wIFRvRHMgcHJvbWlzY3VvdXMgZnJhbWUsIGl0IGlzIG9wZW5lZCBkdWUgdG8gQ0NYIDIgY2hhbm5lbCBsb2FkIHN0YXRpc3RpY3MgKi8KIAlpZiAocEhlYWRlci0+RkMuVG9EcykgewogCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsICgiRXJyO0ZDLlRvRHNcbiIpKTsKIAkJcmV0dXJuIE5ESVNfU1RBVFVTX0ZBSUxVUkU7CkBAIC04NjAsNyArODYwLDcgQEAKIAkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLCAoInJlY2VpdmVkIHBhY2tldCB0b28gbG9uZ1xuIikpOwogCQlyZXR1cm4gTkRJU19TVEFUVVNfRkFJTFVSRTsKIAl9Ci0JLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FudCdzIGRyb3AgaGVyZSBiZWNhdXNlIHdlIHdpbGwgZHJvcCBiZWFjb24gaW4gdGhpcyBjYXNlICovCisJLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FuJ3QncyBkcm9wIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIGRyb3AgYmVhY29uIGluIHRoaXMgY2FzZSAqLwogCS8qIEkgYW0ga2luZCBvZiBkb3VidGluZyB0aGUgVTJNIGJpdCBvcGVyYXRpb24gKi8KIAkvKiBpZiAocFJ4RC0+VTJNID09IDApICovCiAJLyogICAgICByZXR1cm4oTkRJU19TVEFUVVNfRkFJTFVSRSk7ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fbWFjX3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX21hY19wY2kuYwppbmRleCAyMWVlZDI1Li5kMDZmMGE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fbWFjX3BjaS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9tYWNfcGNpLmMKQEAgLTE0NDYsNyArMTQ0Niw3IEBACiAJICAgcEFkLT5DaGVja0RtYUJ1c3lDb3VudCA9IDA7CiAJICAgfQogCSAqLwotLypLSCBEZWJ1ZzpNeSBvcmlnaW5hbCBjb2RlcyBoYXZlIHRoZSBmb2xsd29pbmcgY29kZXMsIGJ1dCBjdXJyZWNudCBjb2RlcyBkbyBub3QgaGF2ZSBpdC4gKi8KKy8qS0ggRGVidWc6TXkgb3JpZ2luYWwgY29kZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGNvZGVzLCBidXQgY3VycmVjbnQgY29kZXMgZG8gbm90IGhhdmUgaXQuICovCiAvKiBEaXNhYmxlIGZvciBzdGFiaWxpdHkuIElmIFBDSUUgTGluayBDb250cm9sIGlzIG1vZGlmaWVkIGZvciBhZHZhbmNlIHBvd2VyIHNhdmUsIHJlLWNvdmVyeSB0aGlzIGNvZGUgc2VnbWVudC4gKi8KIAlSVE1QX0lPX1dSSVRFMzIocEFkLCBQQkZfU1lTX0NUUkwsIDB4MTI4MCk7CiAvKk9QU1RBVFVTX1NFVF9GTEFHKHBBZCwgZk9QX1NUQVRVU19DTEtTRUxFQ1RfNDBNSFopOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3Nhbml0eS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3Nhbml0eS5jCmluZGV4IDZiMDAzYzkuLjNiZmI0YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zYW5pdHkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc2FuaXR5LmMKQEAgLTY3LDcgKzY3LDcgQEAKIAogCWlmICgoTXNnTGVuICE9IHNpemVvZihzdHJ1Y3QgcnRfbWxtZV9hZGRiYV9yZXEpKSkgewogCQlEQkdQUklOVChSVF9ERUJVR19UUkFDRSwKLQkJCSAoIk1sbWVBZGRCQVJlcVNhbml0eSBmYWlsIC0gbWVzc2FnZSBsZW5naHQgbm90IGNvcnJlY3QuXG4iKSk7CisJCQkgKCJNbG1lQWRkQkFSZXFTYW5pdHkgZmFpbCAtIG1lc3NhZ2UgbGVuZ3RoIG5vdCBjb3JyZWN0LlxuIikpOwogCQlyZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xMDQsNyArMTA0LDcgQEAKIAogCWlmICgoTXNnTGVuICE9IHNpemVvZihzdHJ1Y3QgcnRfbWxtZV9kZWxiYV9yZXEpKSkgewogCQlEQkdQUklOVChSVF9ERUJVR19FUlJPUiwKLQkJCSAoIk1sbWVEZWxCQVJlcVNhbml0eSBmYWlsIC0gbWVzc2FnZSBsZW5naHQgbm90IGNvcnJlY3QuXG4iKSk7CisJCQkgKCJNbG1lRGVsQkFSZXFTYW5pdHkgZmFpbCAtIG1lc3NhZ2UgbGVuZ3RoIG5vdCBjb3JyZWN0LlxuIikpOwogCQlyZXR1cm4gRkFMU0U7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc3luYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3N5bmMuYwppbmRleCBmODQxOTRkLi5hZWZlMWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc3luYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zeW5jLmMKQEAgLTY5NCw3ICs2OTQsNyBAQAogCQkJTWluaXBvcnRNTVJlcXVlc3QocEFkLCAwLCBwT3V0QnVmZmVyLCBGcmFtZUxlbik7CiAJCQlNbG1lRnJlZU1lbW9yeShwQWQsIHBPdXRCdWZmZXIpOwogCQl9Ci0JCS8qIEZvciBTQ0FOX0NJU0NPX1BBU1NJVkUsIGRvIG5vdGhpbmcgYW5kIHNpbGVudGx5IHdhaXQgZm9yIGJlYWNvbiBvciBvdGhlciBwcm9iZSByZXBvbnNlICovCisJCS8qIEZvciBTQ0FOX0NJU0NPX1BBU1NJVkUsIGRvIG5vdGhpbmcgYW5kIHNpbGVudGx5IHdhaXQgZm9yIGJlYWNvbiBvciBvdGhlciBwcm9iZSByZXNwb25zZSAqLwogCiAJCXBBZC0+TWxtZS5TeW5jTWFjaGluZS5DdXJyU3RhdGUgPSBTQ0FOX0xJU1RFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fd3BhLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fd3BhLmMKaW5kZXggMDA0MGY0NS4uNjE2ZWJlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3dwYS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV93cGEuYwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAKIAogCU5vdGU6CiAJCUFsbCB0aGVzZSBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gd3BhLmgKLQkJRm9yIHN1cHBsaWNhbnQsIHRoZXJlIGlzIG9ubHkgRUFQT0wgS2V5IG1lc3NhZ2UgYXZhbGlhYmxlCisJCUZvciBzdXBwbGljYW50LCB0aGVyZSBpcyBvbmx5IEVBUE9MIEtleSBtZXNzYWdlIGF2YWlsYWJsZQogCiAJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqLwpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAKIAkJaW50CQlwcmVmaXhfbGVuCS0JdGhlIGxlbmd0aCBvZiB0aGUgbGFiZWwKIAkJdTgJKmRhdGEJCS0JYSBzcGVjaWZpYyBkYXRhIHdpdGggdmFyaWFibGUgbGVuZ3RoCiAJCWludAkJZGF0YV9sZW4JLQl0aGUgbGVuZ3RoIG9mIGEgc3BlY2lmaWMgZGF0YQotCQlpbnQJCWxlbgkJCS0JdGhlIG91dHB1dCBsZW5naHQKKwkJaW50CQlsZW4JCQktCXRoZSBvdXRwdXQgbGVuZ3RoCiAKIAlSZXR1cm4gVmFsdWU6CiAJCXU4CSpvdXRwdXQJCS0JdGhlIGNhbGN1bGF0ZWQgcmVzdWx0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9tbG1lLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9tbG1lLmMKaW5kZXggZDljM2ZkNS4uZTQ4ZWFjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vbWxtZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL21sbWUuYwpAQCAtNjMyLDcgKzYzMiw3IEBACiAJCQlwQ2hpcE9wcy0+QXNpY0hhbHRBY3Rpb24ocEFkKTsKIAl9CiAKLQlSVE1QdXNlY0RlbGF5KDUwMDApOwkvKiAgNSBtc2VjIHRvIGd1cmFudGVlIEFudCBEaXZlcnNpdHkgdGltZXIgY2FuY2VsZWQgKi8KKwlSVE1QdXNlY0RlbGF5KDUwMDApOwkvKiAgNSBtc2VjIHRvIGd1YXJhbnRlZSBBbnQgRGl2ZXJzaXR5IHRpbWVyIGNhbmNlbGVkICovCiAKIAlNbG1lUXVldWVEZXN0cm95KCZwQWQtPk1sbWUuUXVldWUpOwogCU5kaXNGcmVlU3BpbkxvY2soJnBBZC0+TWxtZS5UYXNrTG9jayk7CkBAIC0xMTA3LDE0ICsxMTA3LDE0IEBACiAJCQkJCSpwSW5pdFR4UmF0ZUlkeCA9CiAJCQkJCSAgICBSYXRlU3dpdGNoVGFibGUxMU4xU1sxXTsKIAkJCQkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLAotCQkJCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDFTIEFQIFxuIikpOworCQkJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlLGRlZmF1bHQgdXNlIDExTiAxUyBBUCBcbiIpKTsKIAkJCQl9IGVsc2UgewogCQkJCQkqcHBUYWJsZSA9IFJhdGVTd2l0Y2hUYWJsZTExTjJTOwogCQkJCQkqcFRhYmxlU2l6ZSA9IFJhdGVTd2l0Y2hUYWJsZTExTjJTWzBdOwogCQkJCQkqcEluaXRUeFJhdGVJZHggPQogCQkJCQkgICAgUmF0ZVN3aXRjaFRhYmxlMTFOMlNbMV07CiAJCQkJCURCR1BSSU5UX1JBVyhSVF9ERUJVR19FUlJPUiwKLQkJCQkJCSAgICAgKCJEUlM6IHVua293biBtb2RlLGRlZmF1bHQgdXNlIDExTiAyUyBBUCBcbiIpKTsKKwkJCQkJCSAgICAgKCJEUlM6IHVua25vd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMlMgQVAgXG4iKSk7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQlpZiAocEFkLT5Db21tb25DZmcuVHhTdHJlYW0gPT0gMSkgewpAQCAtMTEyMyw3ICsxMTIzLDcgQEAKIAkJCQkJKnBJbml0VHhSYXRlSWR4ID0KIAkJCQkJICAgIFJhdGVTd2l0Y2hUYWJsZTExTjFTWzFdOwogCQkJCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsCi0JCQkJCQkgICAgICgiRFJTOiB1bmtvd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMVMgQVAgXG4iKSk7CisJCQkJCQkgICAgICgiRFJTOiB1bmtub3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDFTIEFQIFxuIikpOwogCQkJCX0gZWxzZSB7CiAJCQkJCSpwcFRhYmxlID0gUmF0ZVN3aXRjaFRhYmxlMTFOMlNGb3JBQmFuZDsKIAkJCQkJKnBUYWJsZVNpemUgPQpAQCAtMTEzMSwxMSArMTEzMSwxMSBAQAogCQkJCQkqcEluaXRUeFJhdGVJZHggPQogCQkJCQkgICAgUmF0ZVN3aXRjaFRhYmxlMTFOMlNGb3JBQmFuZFsxXTsKIAkJCQkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLAotCQkJCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDJTIEFQIFxuIikpOworCQkJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlLGRlZmF1bHQgdXNlIDExTiAyUyBBUCBcbiIpKTsKIAkJCQl9CiAJCQl9CiAJCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsCi0JCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUgKFN1cFJhdGVMZW49JWQsIEV4dFJhdGVMZW49JWQsIE1DU1NldFswXT0weCV4LCBNQ1NTZXRbMV09MHgleClcbiIsCisJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlIChTdXBSYXRlTGVuPSVkLCBFeHRSYXRlTGVuPSVkLCBNQ1NTZXRbMF09MHgleCwgTUNTU2V0WzFdPTB4JXgpXG4iLAogCQkJCSAgICAgIHBBZC0+U3RhQWN0aXZlLlN1cFJhdGVMZW4sCiAJCQkJICAgICAgcEFkLT5TdGFBY3RpdmUuRXh0UmF0ZUxlbiwKIAkJCQkgICAgICBwQWQtPlN0YUFjdGl2ZS5TdXBwb3J0ZWRQaHlJbmZvLk1DU1NldFswXSwKQEAgLTEzNjgsNyArMTM2OCw3IEBACiAJCQkJCWlmICgocEFkLT5TdGFDZmcuTGFzdFNjYW5UaW1lICsKIAkJCQkJICAgICAxMCAqIE9TX0haKSA8IHBBZC0+TWxtZS5Ob3czMikgewogCQkJCQkJREJHUFJJTlQoUlRfREVCVUdfVFJBQ0UsCi0JCQkJCQkJICgiTU1DSEsgLSBSb2FtaW5nLCBObyBlbGlnYWJsZSBlbnRyeSwgdHJ5IG5ldyBzY2FuIVxuIikpOworCQkJCQkJCSAoIk1NQ0hLIC0gUm9hbWluZywgTm8gZWxpZ2libGUgZW50cnksIHRyeSBuZXcgc2NhbiFcbiIpKTsKIAkJCQkJCXBBZC0+U3RhQ2ZnLlNjYW5DbnQgPSAyOwogCQkJCQkJcEFkLT5TdGFDZmcuTGFzdFNjYW5UaW1lID0KIAkJCQkJCSAgICBwQWQtPk1sbWUuTm93MzI7CkBAIC0yODI4LDcgKzI4MjgsNyBAQAogCiAvKiBJUlFMID0gUEFTU0lWRV9MRVZFTCAqLwogLyogSVJRTCA9IERJU1BBVENIX0xFVkVMICovCi0vKiBiTGlua1VwIGlzIHRvIGlkZW50aWZ5IHRoZSBpbml0YWwgbGluayBzcGVlZC4gKi8KKy8qIGJMaW5rVXAgaXMgdG8gaWRlbnRpZnkgdGhlIGluaXRpYWwgbGluayBzcGVlZC4gKi8KIC8qIFRSVUUgaW5kaWNhdGVzIHRoZSByYXRlIHVwZGF0ZSBhdCBsaW5rdXAsIHdlIHNob3VsZCBub3QgdHJ5IHRvIHNldCB0aGUgcmF0ZSBhdCA1NE1icHMuICovCiB2b2lkIE1sbWVVcGRhdGVUeFJhdGVzKHN0cnVjdCBydF9ydG1wX2FkYXB0ZXIgKnBBZCwgSU4gQk9PTEVBTiBiTGlua1VwLCB1OCBhcGlkeCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3J0bXBfaW5pdC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vcnRtcF9pbml0LmMKaW5kZXggZDM1OWExNC4uNWZhMTkzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vcnRtcF9pbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vcnRtcF9pbml0LmMKQEAgLTIwMzcsNyArMjAzNyw3IEBACiAKIAkJCXBFbnRyeS0+RklGT0NvdW50ID0gMDsKIAkJCXBFbnRyeS0+T25lU2VjVHhOb1JldHJ5T2tDb3VudCsrOwotCQkJLyogdXBkYXRlIE5vRGF0YUlkbGVDb3VudCB3aGVuIHN1Y2Vzc2Z1bCBzZW5kIHBhY2tldCB0byBTVEEuICovCisJCQkvKiB1cGRhdGUgTm9EYXRhSWRsZUNvdW50IHdoZW4gc3VjY2Vzc2Z1bCBzZW5kIHBhY2tldCB0byBTVEEuICovCiAJCQlwRW50cnktPk5vRGF0YUlkbGVDb3VudCA9IDA7CiAJCQlwRW50cnktPkNvbnRpbnVlVHhGYWlsQ250ID0gMDsKIAkJfQpAQCAtMjUxNiw3ICsyNTE2LDcgQEAKIAkvKnBBZC0+VHVybkFnZ3JCdWxrSW5Db3VudCA9IDA7ICovCiAJcEFkLT5iVXNiVHhCdWxrQWdncmUgPSAwOwogCi0JLyogaW5pdCBhcyB1bnNlZCB2YWx1ZSB0byBlbnN1cmUgZHJpdmVyIHdpbGwgc2V0IHRvIE1DVSBvbmNlLiAqLworCS8qIGluaXQgYXMgdW51c2VkIHZhbHVlIHRvIGVuc3VyZSBkcml2ZXIgd2lsbCBzZXQgdG8gTUNVIG9uY2UuICovCiAJcEFkLT5MZWRJbmRpY2F0b3JTdHJlbmd0aCA9IDB4RkY7CiAKIAlwQWQtPkNvbW1vbkNmZy5NYXhQa3RPbmVUeEJ1bGsgPSAyOwpAQCAtMzA3NiwxMSArMzA3NiwxMSBAQAogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAJUm91dGluZSBEZXNjcmlwdGlvbjoKLQkJU2V0IExFRCBTaWduYWwgU3RyZWd0aAorCQlTZXQgTEVEIFNpZ25hbCBTdHJlbmd0aAogCiAJQXJndW1lbnRzOgogCQlwQWQJCQkJCQlQb2ludGVyIHRvIG91ciBhZGFwdGVyCi0JCURibQkJCQkJCVNpZ25hbCBTdHJlZ3RoCisJCURibQkJCQkJCVNpZ25hbCBTdHJlbmd0aAogCiAJUmV0dXJuIFZhbHVlOgogCQlOb25lCkBAIC0zMDkwLDcgKzMwOTAsNyBAQAogCU5vdGU6CiAJCUNhbiBiZSBydW4gb24gYW55IElSUUwgbGV2ZWwuCiAKLQkJQWNjb3JkaW5nIHRvIE1pY3Jvc29mdCBaZXJvIENvbmZpZyBXaXJlbGVzcyBTaWduYWwgU3RyZWd0aCBkZWZpbml0aW9uIGFzIGJlbG93cy4KKwkJQWNjb3JkaW5nIHRvIE1pY3Jvc29mdCBaZXJvIENvbmZpZyBXaXJlbGVzcyBTaWduYWwgU3RyZW5ndGggZGVmaW5pdGlvbiBhcyBiZWxvd3MuCiAJCTw9IC05MCAgTm8gU2lnbmFsCiAJCTw9IC04MSAgVmVyeSBMb3cKIAkJPD0gLTcxICBMb3cKQEAgLTMxMTgsNyArMzExOCw3IEBACiAJCQluTGVkID0gMzE7CiAKIAkJLyogKi8KLQkJLyogVXBkYXRlIFNpZ25hbCBTdHJlZ3RoIHRvIGZpcm13YXJlIGlmIGNoYW5nZWQuICovCisJCS8qIFVwZGF0ZSBTaWduYWwgU3RyZW5ndGggdG8gZmlybXdhcmUgaWYgY2hhbmdlZC4gKi8KIAkJLyogKi8KIAkJaWYgKHBBZC0+TGVkSW5kaWNhdG9yU3RyZW5ndGggIT0gbkxlZCkgewogCQkJQXNpY1NlbmRDb21tYW5kVG9NY3UocEFkLCAweDUxLCAweGZmLCBuTGVkLApAQCAtMzE2Niw3ICszMTY2LDcgQEAKIAkJaWYgKHBBZC0+Q29tbW9uQ2ZnLlBTUFhsaW5rKQogCQkJcnhfZmlsdGVyX2ZsYWcgPSBQU1BYTElOSzsKIAkJZWxzZQotCQkJcnhfZmlsdGVyX2ZsYWcgPSBTVEFOT1JNQUw7CS8qIFN0YWlvbiBub3QgZHJvcCBjb250cm9sIGZyYW1lIHdpbGwgZmFpbCBXaUZpIENlcnRpZmljYXRpb24uICovCisJCQlyeF9maWx0ZXJfZmxhZyA9IFNUQU5PUk1BTDsJLyogU3RhdGlvbiBub3QgZHJvcCBjb250cm9sIGZyYW1lIHdpbGwgZmFpbCBXaUZpIENlcnRpZmljYXRpb24uICovCiAJCVJUTVBfSU9fV1JJVEUzMihwQWQsIFJYX0ZJTFRSX0NGRywgcnhfZmlsdGVyX2ZsYWcpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vc3BlY3RydW0uYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3NwZWN0cnVtLmMKaW5kZXggYzBkMmY0Mi4uY2ViNjIyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vc3BlY3RydW0uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9zcGVjdHJ1bS5jCkBAIC0xMDU4LDggKzEwNTgsOCBAQAogCQkzLiBNZWFzdXJlIFRva2VuLgogCQk0LiBNZWFzdXJlIFJlcXVlc3QgTW9kZS4KIAkJNS4gTWVhc3VyZSBSZXF1ZXN0IFR5cGUuCi0JCTYuIExlbmd0aCBvZiBSZXBvcnQgSW5mb21hdGlvbgotCQk3LiBQb2ludGVyIG9mIFJlcG9ydCBJbmZvbWF0aW9uIEJ1ZmZlci4KKwkJNi4gTGVuZ3RoIG9mIFJlcG9ydCBJbmZvcm1hdGlvbgorCQk3LiBQb2ludGVyIG9mIFJlcG9ydCBJbmZvcm1hdGlvbiBCdWZmZXIuCiAKIAlSZXR1cm4JOiBOb25lLgogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNDAwLDcgKzE0MDAsNyBAQAogCVBhcmFtZXRyczoKIAkJMS4gTUxNRSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHJlY2VpdmVkIGZyYW1lCiAJCTIuIG1lc3NhZ2UgbGVuZ3RoLgotCQkzLiBDaGFubmVsIHN3aXRjaCBhbm5vdW5jZW1lbnQgaW5mb21hdGlvbiBidWZmZXIuCisJCTMuIENoYW5uZWwgc3dpdGNoIGFubm91bmNlbWVudCBpbmZvcm1hdGlvbiBidWZmZXIuCiAKIAlSZXR1cm4JOiBOb25lLgogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNDY1LDcgKzE0NjUsNyBAQAogCVBhcmFtZXRyczoKIAkJMS4gTUxNRSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHJlY2VpdmVkIGZyYW1lCiAJCTIuIG1lc3NhZ2UgbGVuZ3RoLgotCQkzLiBNZWFzdXJlbWVudCByZXF1ZXN0IGluZm9tYXRpb24gYnVmZmVyLgorCQkzLiBNZWFzdXJlbWVudCByZXF1ZXN0IGluZm9ybWF0aW9uIGJ1ZmZlci4KIAogCVJldHVybgk6IE5vbmUuCiAJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTE1MzgsOCArMTUzOCw4IEBACiAJUGFyYW1ldHJzOgogCQkxLiBNTE1FIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgcmVjZWl2ZWQgZnJhbWUKIAkJMi4gbWVzc2FnZSBsZW5ndGguCi0JCTMuIE1lYXN1cmVtZW50IHJlcG9ydCBpbmZvbWF0aW9uIGJ1ZmZlci4KLQkJNC4gYmFzaWMgcmVwb3J0IGluZm9tYXRpb24gYnVmZmVyLgorCQkzLiBNZWFzdXJlbWVudCByZXBvcnQgaW5mb3JtYXRpb24gYnVmZmVyLgorCQk0LiBiYXNpYyByZXBvcnQgaW5mb3JtYXRpb24gYnVmZmVyLgogCiAJUmV0dXJuCTogTm9uZS4KIAk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9tbG1lLmggYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL21sbWUuaAppbmRleCBjZDFlZTNkLi5hMjg1ODUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL21sbWUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL21sbWUuaApAQCAtMzc0LDcgKzM3NCw3IEBACiBzdHJ1Y3QgcnRfaHRfcGh5X2luZm8gewogCUJPT0xFQU4gYkh0RW5hYmxlOwkvKiBJZiB3ZSBzaG91bGQgdXNlIGh0IHJhdGUuICovCiAJQk9PTEVBTiBiUHJlTkh0OwkvKiBJZiB3ZSBzaG91bGQgdXNlIGh0IHJhdGUuICovCi0JLypTdWJzdHJhY3QgZnJvbSBIVCBDYXBhYmlsaXR5IElFICovCisJLypTdWJ0cmFjdCBmcm9tIEhUIENhcGFiaWxpdHkgSUUgKi8KIAl1OCBNQ1NTZXRbMTZdOwogfTsKIApAQCAtMzkyLDcgKzM5Miw3IEBACiAJdTE2IEFtc2R1U2l6ZToxOwkvKiBNYXggcmVjZWl2aW5nIEEtTVNEVSBzaXplICovCiAJdTE2IHJzdjo1OwogCi0JLypTdWJzdHJhY3QgZnJvbSBBZGRpb250IEhUIElORk8gSUUgKi8KKwkvKlN1YnRyYWN0IGZyb20gQWRkaW9udCBIVCBJTkZPIElFICovCiAJdTggTWF4UkFtcGR1RmFjdG9yOjI7CiAJdTggTXBkdURlbnNpdHk6MzsKIAl1OCBFeHRDaGFuT2Zmc2V0OjI7CS8qIFBsZWFzZSBub3RlIHRoZSBkaWZmZXJlbmNlIHdpdGggZm9sbG93aW5nICAgICB1OCAgIE5ld0V4dENoYW5uZWxPZmZzZXQ7IGZyb20gODAyLjExbiAqLwpAQCAtNDEwLDcgKzQxMCw3IEBACiAJdTggQlNTQ29leGlzdDIwNDA7CiB9OwogCi0vKiAgIGZpZWxkIGluIEFkZHRpb25hbCBIVCBJbmZvcm1hdGlvbiBJRSAuICovCisvKiAgIGZpZWxkIGluIEFkZGl0aW9uYWwgSFQgSW5mb3JtYXRpb24gSUUgLiAqLwogc3RydWN0IFBBQ0tFRCBydF9hZGRfaHRpbmZvIHsKIAl1OCBFeHRDaGFuT2Zmc2V0OjI7CiAJdTggUmVjb21XaWR0aDoxOwpAQCAtODU3LDcgKzg1Nyw3IEBACiB9OwogCiAvKiBNTE1FIEFVWCBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRlbXBvcmFybGl5IHNldHRpbmdzIGR1cmluZyBhIGNvbm5lY3Rpb24gYXR0ZW1wdC4gKi8KLS8qIE9uY2UgdGhpcyBhdHRlbXAgc3VjY2VlZHMsIGFsbCBzZXR0aW5ncyB3aWxsIGJlIGNvcHkgdG8gcEFkLT5TdGFBY3RpdmUuICovCisvKiBPbmNlIHRoaXMgYXR0ZW1wdCBzdWNjZWVkcywgYWxsIHNldHRpbmdzIHdpbGwgYmUgY29weSB0byBwQWQtPlN0YUFjdGl2ZS4gKi8KIC8qIEEgY29ubmVjdGlvbiBhdHRlbXB0ICh1c2VyIHNldCBPSUQsIHJvYW1pbmcsIENDWCBmYXN0IHJvYW1pbmcsLi4pIGNvbnNpc3RzIG9mICovCiAvKiBzZXZlcmFsIHN0ZXBzIChKT0lOLCBBVVRILCBBU1NPQyBvciBSRUFTU09DKSBhbmQgbWF5IGZhaWwgYXQgYW55IHN0ZXAuIFdlIHB1cnBvc2VseSAqLwogLyogc2VwYXJhdGUgdGhpcyB1bmRlci10cmlhbCBzZXR0aW5ncyBhd2F5IGZyb20gcEFkLT5TdGFBY3RpdmUgc28gdGhhdCBvbmNlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X2xpbnV4LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X2xpbnV4LmMKaW5kZXggZTViMDQyNy4uMTU4MzM0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9saW51eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfbGludXguYwpAQCAtMjgzLDcgKzI4Myw3IEBACiAJQXJndW1lbnRzOgogCQlwQWQgCVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKIAkJcEluc0FNU0RVSGRyCUVXQyBBLU1TRFUgZm9ybWF0IGhhcyBleHRyYSAxNC1ieXRlcyBoZWFkZXIuIGlmIFRSVUUsIGluc2VydCB0aGlzIDE0LWJ5dGUgaGRyIGluIGZyb250IG9mIE1TRFUuCi0JCSpwU3JjVG90YWxMZW4JCQlyZXR1cm4gdG90YWwgcGFja2V0IGxlbmd0aC4gVGhpcyBsZW5naHQgaXMgY2FsY3VsYXRlZCB3aXRoIDgwMi4zIGZvcm1hdCBwYWNrZXQuCisJCSpwU3JjVG90YWxMZW4JCQlyZXR1cm4gdG90YWwgcGFja2V0IGxlbmd0aC4gVGhpcyBsZW5ndGggaXMgY2FsY3VsYXRlZCB3aXRoIDgwMi4zIGZvcm1hdCBwYWNrZXQuCiAKIAlSZXR1cm4gVmFsdWU6CiAJCU5ESVNfU1RBVFVTX1NVQ0NFU1MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfcGNpX3JidXMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfcGNpX3JidXMuYwppbmRleCBlNWZiNjdjLi5mODBhYjRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X3BjaV9yYnVzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9wY2lfcmJ1cy5jCkBAIC02MTksNyArNjE5LDcgQEAKIAkgICBPciBrZXJuZWwgd2lsbCBwYW5pYyBhZnRlciBpZmNvbmZpZyByYTAgZG93biBzb21ldGltZXMgKi8KIAogCS8qICovCi0JLyogSW5pdGFsIHRoZSBJbnRlcnJ1cHQgc291cmNlLiAqLworCS8qIEluaXRpYWwgdGhlIEludGVycnVwdCBzb3VyY2UuICovCiAJLyogKi8KIAlJbnRTb3VyY2Uud29yZCA9IDB4MDAwMDAwMDBMOwogLyogICAgICBNY3VJbnRTb3VyY2Uud29yZCA9IDB4MDAwMDAwMDBMOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydG1wLmggYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0bXAuaAppbmRleCBkMTZiMDZhLi4zYzMxMzQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0bXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0bXAuaApAQCAtNzU2LDcgKzc1Niw3IEBACiAvKiAqLwogc3RydWN0IHJ0X3ByaXZhdGUgewogCXUzMiBTeXN0ZW1SZXNldENudDsJLyogU3lzdGVtIHJlc2V0IGNvdW50ZXIgKi8KLQl1MzIgVHhSaW5nRnVsbENudDsJLyogVHggcmluZyBmdWxsIG9jY3VycmFuY2UgbnVtYmVyICovCisJdTMyIFR4UmluZ0Z1bGxDbnQ7CS8qIFR4IHJpbmcgZnVsbCBvY2N1cnJlbmNlIG51bWJlciAqLwogCXUzMiBQaHlSeEVyckNudDsJLyogUEhZIFJ4IGVycm9yIGNvdW50LCBmb3IgZGVidWcgcHVycG9zZSwgbWlnaHQgbW92ZSB0byBnbG9iYWwgY291bnRlciAqLwogCS8qIFZhcmlhYmxlcyBmb3IgV0VQIGVuY3J5cHRpb24gLyBkZWNyeXB0aW9uIGluIHJ0bXBfd2VwLmMgKi8KIAl1MzIgRkNTQ1JDMzI7CkBAIC05MjUsNyArOTI1LDcgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdHJ1Y3QgcmVvcmRlcmluZ19tcGR1IHsKIAlzdHJ1Y3QgcmVvcmRlcmluZ19tcGR1ICpuZXh0OwotCXZvaWQgKnBQYWNrZXQ7CS8qIGNvdmVydGVkIHRvIDgwMi4zIGZyYW1lICovCisJdm9pZCAqcFBhY2tldDsJLyogY29udmVydGVkIHRvIDgwMi4zIGZyYW1lICovCiAJaW50IFNlcXVlbmNlOwkJLyogc2VxdWVuY2UgbnVtYmVyIG9mIE1QRFUgKi8KIAlCT09MRUFOIGJBTVNEVTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3N0YV9pb2N0bC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9zdGFfaW9jdGwuYwppbmRleCA1NzE3ZTEyLi40OWIxMDEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3N0YV9pb2N0bC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvc3RhX2lvY3RsLmMKQEAgLTI0NjAsNyArMjQ2MCw3IEBACiAJCX0KIAl9CiAKLQl7CQkJLyogZGV0ZXJtaW5lIHRoaXMgaW9jdGwgY29tbWFuZCBpcyBjb21taW5nIGZyb20gd2hpY2ggaW50ZXJmYWNlLiAqLworCXsJCQkvKiBkZXRlcm1pbmUgdGhpcyBpb2N0bCBjb21tYW5kIGlzIGNvbWluZyBmcm9tIHdoaWNoIGludGVyZmFjZS4gKi8KIAkJcE9iai0+aW9jdGxfaWZfdHlwZSA9IElOVF9NQUlOOwogCQlwT2JqLT5pb2N0bF9pZiA9IE1BSU5fTUJTU0lEOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2J1bGsuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2J1bGsuYwppbmRleCBkMjc0NmY4Li42NzliODAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9idWxrLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg3MC9jb21tb24vcnR1c2JfYnVsay5jCkBAIC0yOTgsNyArMjk4LDcgQEAKIAkJCQkvKnx8ICggKFRoaXNCdWxrU2l6ZSAhPSAwKSAgJiYgKHBUeFdJLT5BTVBEVSA9PSAwKSkgKi8KIAkJCQkpIHsKIAkJCQkvKiBGb3IgVVNCIDEuMSBvciBwZWVyIHdoaWNoIGRpZG4ndCBzdXBwb3J0IEFNUERVLCBsaW1pdCB0aGUgQnVsa091dCBzaXplLiAqLwotCQkJCS8qIEZvciBwZXJmb3JtZW5jZSBpbiBiL2cgbW9kZSwgbm93IGp1c3QgY2hlY2sgZm9yIFVTQiAxLjEgYW5kIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBBUE1EVSBvciBub3QhIDIwMDgvMDYvMDQuICovCisJCQkJLyogRm9yIHBlcmZvcm1hbmNlIGluIGIvZyBtb2RlLCBub3cganVzdCBjaGVjayBmb3IgVVNCIDEuMSBhbmQgZGlkbid0IGNhcmUgYWJvdXQgdGhlIEFQTURVIG9yIG5vdCEgMjAwOC8wNi8wNC4gKi8KIAkJCQlwSFRUWENvbnRleHQtPkVOZXh0QnVsa091dFBvc2l0aW9uID0KIAkJCQkgICAgVG1wQnVsa0VuZFBvczsKIAkJCQlicmVhazsKQEAgLTMxMSw3ICszMTEsNyBAQAogCQkJCSAgICBUbXBCdWxrRW5kUG9zOwogCQkJCWJyZWFrOwogCQkJfSBlbHNlIGlmICgoKHBBZC0+QnVsa091dE1heFBhY2tldFNpemUgPCA1MTIpICYmICgoVGhpc0J1bGtTaXplICYgMHhmZmZmZjgwMCkgIT0gMCkpIC8qfHwgKCAoVGhpc0J1bGtTaXplICE9IDApICAmJiAocFR4V0ktPkFNUERVID09IDApKSAqLykgewkvKiBGb3IgVVNCIDEuMSBvciBwZWVyIHdoaWNoIGRpZG4ndCBzdXBwb3J0IEFNUERVLCBsaW1pdCB0aGUgQnVsa091dCBzaXplLiAqLwotCQkJCS8qIEZvciBwZXJmb3JtZW5jZSBpbiBiL2cgbW9kZSwgbm93IGp1c3QgY2hlY2sgZm9yIFVTQiAxLjEgYW5kIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBBUE1EVSBvciBub3QhIDIwMDgvMDYvMDQuICovCisJCQkJLyogRm9yIHBlcmZvcm1hbmNlIGluIGIvZyBtb2RlLCBub3cganVzdCBjaGVjayBmb3IgVVNCIDEuMSBhbmQgZGlkbid0IGNhcmUgYWJvdXQgdGhlIEFQTURVIG9yIG5vdCEgMjAwOC8wNi8wNC4gKi8KIAkJCQlwSFRUWENvbnRleHQtPkVOZXh0QnVsa091dFBvc2l0aW9uID0KIAkJCQkgICAgVG1wQnVsa0VuZFBvczsKIAkJCQlicmVhazsKQEAgLTEwMTYsNyArMTAxNiw3IEBACiAJCQkJUlRVU0JCdWxrT3V0TnVsbEZyYW1lKHBBZCk7CiAJCQl9CiAJCX0KLQkJLyogOC4gTm8gZGF0YSBhdmFsaWFibGUgKi8KKwkJLyogOC4gTm8gZGF0YSBhdmFpbGFibGUgKi8KIAkJZWxzZQogCQkJOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2RhdGEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2RhdGEuYwppbmRleCA2OTM2ODg2Li41YjcyYmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9kYXRhLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg3MC9jb21tb24vcnR1c2JfZGF0YS5jCkBAIC03MSw3ICs3MSw3IEBACiAKIAlSb3V0aW5lCURlc2NyaXB0aW9uOgogCQlUaGlzIHN1YnJvdXRpbmUgd2lsbCBzY2FuIHRocm91Z2ggcmVsZWF0aXZlIHJpbmcgZGVzY3JpcHRvciB0byBmaW5kCi0JCW91dCBhdmFsaWFibGUgZnJlZSByaW5nIGRlc2NyaXB0b3IgYW5kIGNvbXBhcmUgd2l0aCByZXF1ZXN0IHNpemUuCisJCW91dCBhdmFpbGFibGUgZnJlZSByaW5nIGRlc2NyaXB0b3IgYW5kIGNvbXBhcmUgd2l0aCByZXF1ZXN0IHNpemUuCiAKIAlBcmd1bWVudHM6CiAJCXBBZAlQb2ludGVyCXRvIG91ciBhZGFwdGVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL0tjb25maWcKaW5kZXggMWIzMTAzZi4uMzE2MmFhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvS2NvbmZpZwpAQCAtMSw2ICsxLDcgQEAKIGNvbmZpZyBSODE4N1NFCiAJdHJpc3RhdGUgIlJlYWxUZWsgUlRMODE4N1NFIFdpcmVsZXNzIExBTiBOSUMgZHJpdmVyIgogCWRlcGVuZHMgb24gUENJICYmIFdMQU4KKwlkZXBlbmRzIG9uIG0KIAlzZWxlY3QgV0lSRUxFU1NfRVhUCiAJc2VsZWN0IFdFWFRfUFJJVgogCXNlbGVjdCBFRVBST01fOTNDWDYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExLmgKaW5kZXggZGM2MDhjNy4uMTZhYTZhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExLmgKQEAgLTEwOTksNyArMTA5OSw3IEBACiAJICogbm90IHNldC4gQXMgc29tZSBjYXJkcyBtYXkgaGF2ZSBkaWZmZXJlbnQgSFcgcXVldWVzIHRoYXQKIAkgKiBvbmUgbWlnaHQgd2FudCB0byB1c2UgZm9yIGRhdGEgYW5kIG1hbmFnZW1lbnQgZnJhbWVzCiAJICogdGhlIG9wdGlvbiB0byBoYXZlIHR3byBjYWxsYmFja3MgbWlnaHQgYmUgdXNlZnVsLgotCSAqIFRoaXMgZnVjbnRpb24gY2FuJ3Qgc2xlZXAuCisJICogVGhpcyBmdW5jdGlvbiBjYW4ndCBzbGVlcC4KIAkgKi8KIAlpbnQgKCpzb2Z0bWFjX2hhcmRfc3RhcnRfeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKQEAgLTExMzgsOSArMTEzOCw5IEBACiAJICogaXQgaXMgY2FsbGVkIGluIGEgd29ya19xdWV1ZSB3aGVuIHN3aXRoY2luZyB0byBhZC1ob2MgbW9kZQogCSAqIG9yIGluIGJlaGFsZiBvZiBpd2xpc3Qgc2NhbiB3aGVuIHRoZSBjYXJkIGlzIGFzc29jaWF0ZWQKIAkgKiBhbmQgcm9vdCB1c2VyIGFzayBmb3IgYSBzY2FuLgotCSAqIHRoZSBmdWNudGlvbiBzdG9wX3NjYW4gc2hvdWxkIHN0b3AgYm90aCB0aGUgc3luY3JvIGFuZAorCSAqIHRoZSBmdW5jdGlvbiBzdG9wX3NjYW4gc2hvdWxkIHN0b3AgYm90aCB0aGUgc3luY3JvIGFuZAogCSAqIGJhY2tncm91bmQgc2Nhbm5pbmcgYW5kIGNhbiBzbGVlcC4KLQkgKiBUaGUgZnVjbnRpb24gc3RhcnRfc2NhbiBzaG91bGQgaW5pdGlhdGUgdGhlIGJhY2tncm91bmQKKwkgKiBUaGUgZnVuY3Rpb24gc3RhcnRfc2NhbiBzaG91bGQgaW5pdGlhdGUgdGhlIGJhY2tncm91bmQKIAkgKiBzY2FubmluZyBhbmQgY2FuJ3Qgc2xlZXAuCiAJICovCiAJdm9pZCAoKnNjYW5fc3luY3JvKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCmluZGV4IDc3MWUwMTkuLjczNmExNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAKIAogCiAKLS8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxpZXIgVFggcXVldWUgbWFuYWdlbWVudC4KKy8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxlciBUWCBxdWV1ZSBtYW5hZ2VtZW50LgogICogSW5zdGVhZCBvZiB1c2luZyBuZXRpZl9bc3RvcC93YWtlXV9xdWV1ZSB0aGUgZHJpdmVyCiAgKiB3aWxsIHVzZXMgdGhlc2UgdHdvIGZ1bmN0aW9uIChwbHVzIGEgcmVzZXQgb25lKSwgdGhhdAogICogd2lsbCBpbnRlcm5hbGx5IHVzZXMgdGhlIGtlcm5lbCBuZXRpZl8qIGFuZCB0YWtlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9jb3JlLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2NvcmUuYwppbmRleCA3MGFiMDA4Li4yMTU1YTc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2NvcmUuYwpAQCAtMTU5MSw3ICsxNTkxLDcgQEAKIAkJcHJpdi0+UlNTSSA9IFJTU0k7CiAJCS8qIFNRIHRyYW5zbGF0aW9uIGZvcm11bGEgaXMgcHJvdmlkZWQgYnkgU0QzIERaLiAyMDA2LjA2LjI3ICovCiAJCWlmIChxdWFsaXR5ID49IDEyNykKLQkJCXF1YWxpdHkgPSAxOyAvKjA7ICovIC8qIDAgd2lsbCBjYXVzZSBlcGMgdG8gc2hvdyBzaWduYWwgemVybyAsIHdhbGsgYXJvdWQgbm93OyAqLworCQkJcXVhbGl0eSA9IDE7IC8qMDsgKi8gLyogMCB3aWxsIGNhdXNlIGVwYyB0byBzaG93IHNpZ25hbCB6ZXJvICwgd2FsayBhcm91bmQgbm93OyAqLwogCQllbHNlIGlmIChxdWFsaXR5IDwgMjcpCiAJCQlxdWFsaXR5ID0gMTAwOwogCQllbHNlCkBAIC0zODgzLDcgKzM4ODMsNyBAQAogCSAqIElmIHRoZSBwYWNrZXQgcHJldmlvdXMgb2YgdGhlIG5pYyBwb2ludGVyIGhhcyBiZWVuCiAJICogcHJvY2Vzc2VkIHRoaXMgZG9lc24ndCBtYXR0ZXI6IGl0IHdpbGwgYmUgY2hlY2tlZAogCSAqIGhlcmUgYXQgdGhlIG5leHQgcm91bmQuIEFueXdheSBpZiBubyBtb3JlIHBhY2tldCBhcmUKLQkgKiBUWGVkIG5vIG1lbW9yeSBsZWFrIG9jY291ciBhdCBhbGwuCisJICogVFhlZCBubyBtZW1vcnkgbGVhayBvY2N1ciBhdCBhbGwuCiAJICovCiAKIAlzd2l0Y2ggKHByaSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9kbS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9kbS5jCmluZGV4IGZjNDkwNzguLjI2MTA4NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfZG0uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2RtLmMKQEAgLTEyMyw3ICsxMjMsNyBAQAogLy8KIC8vCURlc2NyaXB0aW9uOgogLy8JCUNhbGxiYWNrIGZ1bmN0aW9uIG9mIFVwZGF0ZVR4UG93ZXJXb3JrSXRlbS4KLS8vCQlCZWNhdXNlIG9mIHNvbWUgZXZlbnQgaGFwcGVuZCwgZS5nLiBDQ1ggVFBDLCBIaWdoIFBvd2VyIE1lY2hhbmlzbSwKKy8vCQlCZWNhdXNlIG9mIHNvbWUgZXZlbnQgaGFwcGVuZWQsIGUuZy4gQ0NYIFRQQywgSGlnaCBQb3dlciBNZWNoYW5pc20sCiAvLwkJV2UgdXBkYXRlIFR4IHBvd2VyIG9mIGN1cnJlbnQgY2hhbm5lbCBhZ2Fpbi4KIC8vCiB2b2lkIHJ0bDgxODBfdHhfcHdfd3EgKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTk4NCw3ICs5ODQsNyBAQAogCQl7CiAJCQlwcml2LT5Ucnl1cGluZ0NvdW50ID0gMDsKIAkJCS8vCi0JCQkvLyBXaGVuIHRyYW5zZmVyaW5nIGZyb20gQ0NLIHRvIE9GRE0sIERJRyBpcyBhbiBpbXBvcnRhbnQgaXNzdWUuCisJCQkvLyBXaGVuIHRyYW5zZmVycmluZyBmcm9tIENDSyB0byBPRkRNLCBESUcgaXMgYW4gaW1wb3J0YW50IGlzc3VlLgogCQkJLy8KIAkJCWlmKHByaXYtPkN1cnJlbnRPcGVyYVJhdGUgPT0gMjIpCiAJCQkJYlVwZGF0ZUluaXRpYWxHYWluID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfcnRsODIyNXoyLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX3J0bDgyMjV6Mi5jCmluZGV4IDJhMmFmZDUuLjNmMDlmNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfcnRsODIyNXoyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9ydGw4MjI1ejIuYwpAQCAtMzc4LDcgKzM3OCw3IEBACiAJbWFzayA9IChsb3cyaGlnaCkgPyAweDAxIDogKCgodTMyKTB4MDEpIDw8ICgxMi0xKSk7CiAKIAkvKgotCSAqIFdlIG11c3Qgc2V0IGRhdGEgcGluIHRvIEhXIGNvbnRyb2xlZCwgb3RoZXJ3aXNlIFJGIGNhbid0IGRyaXZlciBpdAorCSAqIFdlIG11c3Qgc2V0IGRhdGEgcGluIHRvIEhXIGNvbnRyb2xsZWQsIG90aGVyd2lzZSBSRiBjYW4ndCBkcml2ZXIgaXQKIAkgKiBhbmQgdmFsdWUgUkYgcmVnaXN0ZXIgd29uJ3QgYmUgYWJsZSB0byByZWFkIGJhY2sgcHJvcGVybHkuCiAJICovCiAJd3JpdGVfbmljX3dvcmQoZGV2LCBSRlBpbnNFbmFibGUsIChvdmFsMiAmICh+MHgwMSkpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODViX2luaXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODViX2luaXQuYwppbmRleCAzYmRmOWIzLi40YjBiODMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTg1Yl9pbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4NWJfaW5pdC5jCkBAIC0xMjczLDcgKzEyNzMsNyBAQAogCS8qCiAJCVN0b3AgQmVhY29uLgogCi0JCVZpc3RhIGFkZCBhIEFkaG9jIHByb2ZpbGUsIEhXIHJhZGlvIG9mZiB1bnRpbGwgT0lEX0RPVDExX1JFU0VUX1JFUVVFU1QKKwkJVmlzdGEgYWRkIGEgQWRob2MgcHJvZmlsZSwgSFcgcmFkaW8gb2ZmIHVudGlsIE9JRF9ET1QxMV9SRVNFVF9SRVFVRVNUCiAJCURyaXZlciB3b3VsZCBzZXQgTVNSPU5PX0xJTkssIHRoZW4gSFcgUmFkaW8gT04sIE1nbnRRdWV1ZSBTdHVjay4KIAkJQmVjYXVzZSBCY24gRE1BIGlzbid0IGNvbXBsZXRlLCBtZ250IHF1ZXVlIHdvdWxkIHN0dWNrIHVudGlsIEJjbiBwYWNrZXQgc2VuZC4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvS2NvbmZpZwppbmRleCAyZTY0YjIzLi43NTBjMzQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvS2NvbmZpZworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvS2NvbmZpZwpAQCAtMSw2ICsxLDcgQEAKIGNvbmZpZyBSVEw4MTkyRQogCXRyaXN0YXRlICJSZWFsVGVrIFJUTDgxOTJFIFdpcmVsZXNzIExBTiBOSUMgZHJpdmVyIgogCWRlcGVuZHMgb24gUENJICYmIFdMQU4KKwlkZXBlbmRzIG9uIG0KIAlzZWxlY3QgV0lSRUxFU1NfRVhUCiAJc2VsZWN0IFdFWFRfUFJJVgogCXNlbGVjdCBDUllQVE8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMS5oCmluZGV4IDNjYTM4ODEuLmRiZTIxYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTEuaApAQCAtMTk2Nyw3ICsxOTY3LDcgQEAKICAgICAgICAgdTE2IHByZXZfc2VxX2N0bDsgICAgICAgLyogdXNlZCB0byBkcm9wIGR1cGxpY2F0ZSBmcmFtZXMgKi8KIAogCS8qIG1hcCBvZiBhbGxvd2VkIGNoYW5uZWxzLiAwIGlzIGR1bW15ICovCi0JLy8gRklYTUU6IHJlbWViZXIgdG8gZGVmYXVsdCB0byBhIGJhc2ljIGNoYW5uZWwgcGxhbiBkZXBlbmRpbmcgb2YgdGhlIFBIWSB0eXBlCisJLy8gRklYTUU6IHJlbWVtYmVyIHRvIGRlZmF1bHQgdG8gYSBiYXNpYyBjaGFubmVsIHBsYW4gZGVwZW5kaW5nIG9mIHRoZSBQSFkgdHlwZQogI2lmZGVmIEVOQUJMRV9ET1QxMUQKIAl2b2lkKiBwRG90MTFkSW5mbzsKIAlib29sIGJHbG9iYWxEb21haW47CkBAIC0yMTIxLDcgKzIxMjEsNyBAQAogCSAqIG5vdCBzZXQuIEFzIHNvbWUgY2FyZHMgbWF5IGhhdmUgZGlmZmVyZW50IEhXIHF1ZXVlcyB0aGF0CiAJICogb25lIG1pZ2h0IHdhbnQgdG8gdXNlIGZvciBkYXRhIGFuZCBtYW5hZ2VtZW50IGZyYW1lcwogCSAqIHRoZSBvcHRpb24gdG8gaGF2ZSB0d28gY2FsbGJhY2tzIG1pZ2h0IGJlIHVzZWZ1bC4KLQkgKiBUaGlzIGZ1Y250aW9uIGNhbid0IHNsZWVwLgorCSAqIFRoaXMgZnVuY3Rpb24gY2FuJ3Qgc2xlZXAuCiAJICovCiAJaW50ICgqc29mdG1hY19oYXJkX3N0YXJ0X3htaXQpKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICAgc3RydWN0IGllZWU4MDIxMV9kZXZpY2UgKmllZWU4MDIxMSk7CkBAIC0yMTYwLDkgKzIxNjAsOSBAQAogCSAqIGl0IGlzIGNhbGxlZCBpbiBhIHdvcmtfcXVldWUgd2hlbiBzd2l0aGNpbmcgdG8gYWQtaG9jIG1vZGUKIAkgKiBvciBpbiBiZWhhbGYgb2YgaXdsaXN0IHNjYW4gd2hlbiB0aGUgY2FyZCBpcyBhc3NvY2lhdGVkCiAJICogYW5kIHJvb3QgdXNlciBhc2sgZm9yIGEgc2Nhbi4KLQkgKiB0aGUgZnVjbnRpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKKwkgKiB0aGUgZnVuY3Rpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKIAkgKiBiYWNrZ3JvdW5kIHNjYW5uaW5nIGFuZCBjYW4gc2xlZXAuCi0JICogVGhlIGZ1Y250aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCisJICogVGhlIGZ1bmN0aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCiAJICogc2Nhbm5pbmcgYW5kIGNhbid0IHNsZWVwLgogCSAqLwogCXZvaWQgKCpzY2FuX3N5bmNybykoc3RydWN0IGllZWU4MDIxMV9kZXZpY2UgKmllZWU4MDIxMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfcnguYwppbmRleCBhZGQwMTVlLi5lZDVhMzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKQEAgLTE0MjYsNyArMTQyNiw3IEBACiBzdGF0aWMgdTggcW9zX291aVtRT1NfT1VJX0xFTl0gPSB7IDB4MDAsIDB4NTAsIDB4RjIgfTsKIAogLyoKLSogTWFrZSB0aGVyIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgaGFzCisqIE1ha2UgdGhlIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgdG8gaGF2ZQogKiB0aGUgcmlnaHQgdmFsdWVzCiAqLwogc3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X3Fvc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfcW9zX2luZm9ybWF0aW9uX2VsZW1lbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwppbmRleCBmNjkyMmQ0Li43ZDRjYmEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCkBAIC0yMDIzLDcgKzIwMjMsNyBAQAogCQkJCQkJCXJldHVybiAxOwogCQkJCQkJfQogCQkJCQkJZWxzZQotCQkJCQkJewkvL2ZpbGxpbmcgdGhlIFBlZXJIVENhcC4gLy9tYXliZSBub3QgbmVjY2VzYXJ5IGFzIHdlIGNhbiBnZXQgaXRzIGluZm8gZnJvbSBjdXJyZW50X25ldHdvcmsuCisJCQkJCQl7CS8vZmlsbGluZyB0aGUgUGVlckhUQ2FwLiAvL21heWJlIG5vdCBuZWNlc3NhcnkgYXMgd2UgY2FuIGdldCBpdHMgaW5mbyBmcm9tIGN1cnJlbnRfbmV0d29yay4KIAkJCQkJCQltZW1jcHkoaWVlZS0+cEhUSW5mby0+UGVlckhUQ2FwQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUQ2FwQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUQ2FwTGVuKTsKIAkJCQkJCQltZW1jcHkoaWVlZS0+cEhUSW5mby0+UGVlckhUSW5mb0J1ZiwgbmV0d29yay0+YnNzaHQuYmRIVEluZm9CdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRJbmZvTGVuKTsKIAkJCQkJCX0KQEAgLTIxNjMsNyArMjE2Myw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxpZXIgVFggcXVldWUgbWFuYWdlbWVudC4KKy8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxlciBUWCBxdWV1ZSBtYW5hZ2VtZW50LgogICogSW5zdGVhZCBvZiB1c2luZyBuZXRpZl9bc3RvcC93YWtlXV9xdWV1ZSB0aGUgZHJpdmVyCiAgKiB3aWxsIHVzZXMgdGhlc2UgdHdvIGZ1bmN0aW9uIChwbHVzIGEgcmVzZXQgb25lKSwgdGhhdAogICogd2lsbCBpbnRlcm5hbGx5IHVzZXMgdGhlIGtlcm5lbCBuZXRpZl8qIGFuZCB0YWtlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hULmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaAppbmRleCBmOTY4ODE3Li41NmExMjBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaApAQCAtNjQsNyArNjQsNyBAQAogfUhUX0NIQU5ORUxfV0lEVEgsICpQSFRfQ0hBTk5FTF9XSURUSDsKIAogLy8KLS8vIFJlcHJlc2VudCBFeHRlbnRpb24gQ2hhbm5lbCBPZmZzZXQgaW4gSFQgQ2FwYWJpbGl0aWVzCisvLyBSZXByZXNlbnQgRXh0ZW5zaW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcwogLy8gVGhpcyBpcyBhdmFpbGFibGUgb25seSBpbiA0ME1oeiBtb2RlLgogLy8KIHR5cGVkZWYgZW51bSBfSFRfRVhUQ0hOTF9PRkZTRVR7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMKaW5kZXggYTJhNGZlOS4uZjdhOWRhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYwpAQCAtNDU5LDcgKzQ1OSw3IEBACiAvKioKICogRnVuY3Rpb246CUhUSU9UQWN0SXNEaXNhYmxlTUNTMTUKICoKLSogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZXZpbmcgTUNTMTUKKyogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZWl2aW5nIE1DUzE1CiAqCiAqIElucHV0OgogKgkJCVBBREFQVEVSCQlBZGFwdGVyLApAQCAtNDk2LDcgKzQ5Niw3IEBACiAvKioKICogRnVuY3Rpb246CUhUSU9UQWN0SXNEaXNhYmxlTUNTVHdvU3BhdGlhbFN0cmVhbQogKgotKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNldmluZyBBbGwgMiBzcyBwYWNrZXRzCisqIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2VpdmluZyBBbGwgMiBzcyBwYWNrZXRzCiAqCiAqIElucHV0OgogKgkJCVBBREFQVEVSCQlBZGFwdGVyLApAQCAtMTY4MSw3ICsxNjgxLDcgQEAKIAkvL2lmIGluIGhhbGYgTiBtb2RlLCBzZXQgdG8gMjBNIGJhbmR3aWR0aCBwbGVhc2UgMDkuMDguMjAwOCBXQi4KIAlpZiAoQmFuZHdpZHRoPT1IVF9DSEFOTkVMX1dJRFRIXzIwXzQwICYmICghaWVlZS0+R2V0SGFsZk5tb2RlU3VwcG9ydEJ5QVBzSGFuZGxlcihpZWVlKSkpCiAJIHsKLQkgCQkvLyBIYW5kbGUgSWxsZWdhbCBleHRlbnRpb24gY2hhbm5lbCBvZmZzZXQhIQorCSAJCS8vIEhhbmRsZSBJbGxlZ2FsIGV4dGVuc2lvbiBjaGFubmVsIG9mZnNldCEhCiAJCWlmKGllZWUtPmN1cnJlbnRfbmV0d29yay5jaGFubmVsPDIgJiYgT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9MT1dFUikKIAkJCU9mZnNldCA9IEhUX0VYVENITkxfT0ZGU0VUX05PX0VYVDsKIAkJaWYoT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9VUFBFUiB8fCBPZmZzZXQ9PUhUX0VYVENITkxfT0ZGU0VUX0xPV0VSKSB7CkBAIC0xNjk4LDcgKzE2OTgsNyBAQAogCiAJcEhUSW5mby0+YlN3QndJblByb2dyZXNzID0gdHJ1ZTsKIAotCS8vIFRPRE86IDIwMDcuNy4xMyBieSBFbWlseSBXYWl0IDIwMDBtcyAgaW4gb3JkZXIgdG8gZ2FyYW50ZWUgdGhhdCBzd2l0Y2hpbmcKKwkvLyBUT0RPOiAyMDA3LjcuMTMgYnkgRW1pbHkgV2FpdCAyMDAwbXMgIGluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0IHN3aXRjaGluZwogCS8vICAgYmFuZHdpZHRoIGlzIGV4ZWN1dGVkIGFmdGVyIHNjYW4gaXMgZmluaXNoZWQuIEl0IGlzIGEgdGVtcG9yYWwgc29sdXRpb24KIAkvLyAgIGJlY2F1c2Ugc29mdHdhcmUgc2hvdWxkIGdhbnJhbnRlZSB0aGUgbGFzdCBvcGVyYXRpb24gb2Ygc3dpdGNoaW5nIGJhbmR3aWR0aAogCS8vICAgaXMgZXhlY3V0ZWQgcHJvcGVybGx5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaAppbmRleCBiYWFhYzIxLi5lN2UyNmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaApAQCAtNDQsNyArNDQsNyBAQAogCXUxNgkJCQlSeFRpbWVvdXRJbmRpY2F0ZVNlcTsKIAlzdHJ1Y3QgbGlzdF9oZWFkCQlSeFBlbmRpbmdQa3RMaXN0OwogCXN0cnVjdCB0aW1lcl9saXN0CQlSeFBrdFBlbmRpbmdUaW1lcjsKLQlCQV9SRUNPUkQJCQlSeEFkbWl0dGVkQkFSZWNvcmQ7CSAvLyBGb3IgQkEgUmVjZXBpZW50CisJQkFfUkVDT1JECQkJUnhBZG1pdHRlZEJBUmVjb3JkOwkgLy8gRm9yIEJBIFJlY2lwaWVudAogCXUxNgkJCQlSeExhc3RTZXFOdW07CiAJdTgJCQkJUnhMYXN0RnJhZ051bTsKIAl1OAkJCQludW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMKaW5kZXggMjllZWNmMC4uYWQ2ODcyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYwpAQCAtMTM1LDcgKzEzNSw3IEBACiAJUmVzZXRUc0NvbW1vbkluZm8oJnBUUy0+VHNDb21tb25JbmZvKTsKIAlwVFMtPlJ4SW5kaWNhdGVTZXEgPSAweGZmZmY7IC8vIFRoaXMgaW5kaWNhdGUgdGhlIFJ4SW5kaWNhdGVTZXEgaXMgbm90IHVzZWQgbm93ISEKIAlwVFMtPlJ4VGltZW91dEluZGljYXRlU2VxID0gMHhmZmZmOyAvLyBUaGlzIGluZGljYXRlIHRoZSBSeFRpbWVvdXRJbmRpY2F0ZVNlcSBpcyBub3QgdXNlZCBub3chIQotCVJlc2V0QmFFbnRyeSgmcFRTLT5SeEFkbWl0dGVkQkFSZWNvcmQpOwkgIC8vIEZvciBCQSBSZWNlcGllbnQKKwlSZXNldEJhRW50cnkoJnBUUy0+UnhBZG1pdHRlZEJBUmVjb3JkKTsJICAvLyBGb3IgQkEgUmVjaXBpZW50CiB9CiAKIHZvaWQgVFNJbml0aWFsaXplKHN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICppZWVlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL3I4MTl4RV9waHkuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9yODE5eEVfcGh5LmMKaW5kZXggZGZhNGUxMS4uOWU3ODI4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL3I4MTl4RV9waHkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvcjgxOXhFX3BoeS5jCkBAIC0yMDMyLDEzICsyMDMyLDEzIEBACiAJewogCQljYXNlIEhUX0NIQU5ORUxfV0lEVEhfMjA6CiAJCQlyZWdCd09wTW9kZSB8PSBCV19PUE1PREVfMjBNSFo7Ci0JCSAgICAgICAvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXN1ZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCisJCSAgICAgICAvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXVzZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCiAJCQl3cml0ZV9uaWNfYnl0ZShwcml2LCBCV19PUE1PREUsIHJlZ0J3T3BNb2RlKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgSFRfQ0hBTk5FTF9XSURUSF8yMF80MDoKIAkJCXJlZ0J3T3BNb2RlICY9IH5CV19PUE1PREVfMjBNSFo7Ci0gICAgICAgIAkJLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2FzdWUgd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcworICAgICAgICAJCS8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhdXNlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKIAkJCXdyaXRlX25pY19ieXRlKHByaXYsIEJXX09QTU9ERSwgcmVnQndPcE1vZGUpOwogCQkJYnJlYWs7CiAKQEAgLTIxMTYsNyArMjExNiw3IEBACiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqZnVuY3Rpb246ICBUaGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBiYW5kd2l0aCBzd2l0Y2ggd29yay4KKyAqZnVuY3Rpb246ICBUaGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBiYW5kd2lkdGggc3dpdGNoIHdvcmsuCiAgKiAgIGlucHV0OiAgc3RydWN0IG5ldF9kZXZpY2UgKmRldgogICogICAJICAgICBIVF9DSEFOTkVMX1dJRFRICUJhbmR3aWR0aCAgLy8yME0gb3IgNDBNCiAgKiAgIAkgICAgIEhUX0VYVENITkxfT0ZGU0VUIE9mZnNldCAJICAgLy9VcHBlciwgTG93ZXIsIG9yIERvbid0IGNhcmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9LY29uZmlnIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L0tjb25maWcKaW5kZXggMjg5NjkxOS4uM2YwNTUwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L0tjb25maWcKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L0tjb25maWcKQEAgLTEsNiArMSw3IEBACiBjb25maWcgUlRMODE5MlUKIAl0cmlzdGF0ZSAiUmVhbFRlayBSVEw4MTkyVSBXaXJlbGVzcyBMQU4gTklDIGRyaXZlciIKIAlkZXBlbmRzIG9uIFBDSSAmJiBXTEFOICYmIFVTQgorCWRlcGVuZHMgb24gbQogCXNlbGVjdCBXSVJFTEVTU19FWFQKIAlzZWxlY3QgV0VYVF9QUklWCiAJc2VsZWN0IENSWVBUTwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTEuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExLmgKaW5kZXggYzBiODQ0ZC4uZTcxNmY3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMS5oCkBAIC0xOTY1LDcgKzE5NjUsNyBAQAogCXUxNiBwcmV2X3NlcV9jdGw7ICAgICAgIC8qIHVzZWQgdG8gZHJvcCBkdXBsaWNhdGUgZnJhbWVzICovCiAKIAkvKiBtYXAgb2YgYWxsb3dlZCBjaGFubmVscy4gMCBpcyBkdW1teSAqLwotCS8vIEZJWE1FOiByZW1lYmVyIHRvIGRlZmF1bHQgdG8gYSBiYXNpYyBjaGFubmVsIHBsYW4gZGVwZW5kaW5nIG9mIHRoZSBQSFkgdHlwZQorCS8vIEZJWE1FOiByZW1lbWJlciB0byBkZWZhdWx0IHRvIGEgYmFzaWMgY2hhbm5lbCBwbGFuIGRlcGVuZGluZyBvZiB0aGUgUEhZIHR5cGUKIAl2b2lkKiBwRG90MTFkSW5mbzsKIAlib29sIGJHbG9iYWxEb21haW47CiAJaW50IHJhdGU7ICAgICAgIC8qIGN1cnJlbnQgcmF0ZSAqLwpAQCAtMjExOSw3ICsyMTE5LDcgQEAKIAkgKiBub3Qgc2V0LiBBcyBzb21lIGNhcmRzIG1heSBoYXZlIGRpZmZlcmVudCBIVyBxdWV1ZXMgdGhhdAogCSAqIG9uZSBtaWdodCB3YW50IHRvIHVzZSBmb3IgZGF0YSBhbmQgbWFuYWdlbWVudCBmcmFtZXMKIAkgKiB0aGUgb3B0aW9uIHRvIGhhdmUgdHdvIGNhbGxiYWNrcyBtaWdodCBiZSB1c2VmdWwuCi0JICogVGhpcyBmdWNudGlvbiBjYW4ndCBzbGVlcC4KKwkgKiBUaGlzIGZ1bmN0aW9uIGNhbid0IHNsZWVwLgogCSAqLwogCWludCAoKnNvZnRtYWNfaGFyZF9zdGFydF94bWl0KShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpAQCAtMjE1OCw5ICsyMTU4LDkgQEAKIAkgKiBpdCBpcyBjYWxsZWQgaW4gYSB3b3JrX3F1ZXVlIHdoZW4gc3dpdGhjaW5nIHRvIGFkLWhvYyBtb2RlCiAJICogb3IgaW4gYmVoYWxmIG9mIGl3bGlzdCBzY2FuIHdoZW4gdGhlIGNhcmQgaXMgYXNzb2NpYXRlZAogCSAqIGFuZCByb290IHVzZXIgYXNrIGZvciBhIHNjYW4uCi0JICogdGhlIGZ1Y250aW9uIHN0b3Bfc2NhbiBzaG91bGQgc3RvcCBib3RoIHRoZSBzeW5jcm8gYW5kCisJICogdGhlIGZ1bmN0aW9uIHN0b3Bfc2NhbiBzaG91bGQgc3RvcCBib3RoIHRoZSBzeW5jcm8gYW5kCiAJICogYmFja2dyb3VuZCBzY2FubmluZyBhbmQgY2FuIHNsZWVwLgotCSAqIFRoZSBmdWNudGlvbiBzdGFydF9zY2FuIHNob3VsZCBpbml0aWF0ZSB0aGUgYmFja2dyb3VuZAorCSAqIFRoZSBmdW5jdGlvbiBzdGFydF9zY2FuIHNob3VsZCBpbml0aWF0ZSB0aGUgYmFja2dyb3VuZAogCSAqIHNjYW5uaW5nIGFuZCBjYW4ndCBzbGVlcC4KIAkgKi8KIAl2b2lkICgqc2Nhbl9zeW5jcm8pKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfcnguYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKaW5kZXggNDk4YjUyMC4uYTQxNDMwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfcnguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCkBAIC0xMzk5LDcgKzEzOTksNyBAQAogc3RhdGljIHU4IHFvc19vdWlbUU9TX09VSV9MRU5dID0geyAweDAwLCAweDUwLCAweEYyIH07CiAKIC8qCi0qIE1ha2UgdGhlciBzdHJ1Y3R1cmUgd2UgcmVhZCBmcm9tIHRoZSBiZWFjb24gcGFja2V0IGhhcworKiBNYWtlIHRoZSBzdHJ1Y3R1cmUgd2UgcmVhZCBmcm9tIHRoZSBiZWFjb24gcGFja2V0IHRvIGhhdmUKICogdGhlIHJpZ2h0IHZhbHVlcwogKi8KIHN0YXRpYyBpbnQgaWVlZTgwMjExX3ZlcmlmeV9xb3NfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3Fvc19pbmZvcm1hdGlvbl9lbGVtZW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKaW5kZXggNDk5MmQ2My4uNGVjMGE2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwpAQCAtMTk3Myw3ICsxOTczLDcgQEAKIAkJCQkJCQlyZXR1cm4gMTsKIAkJCQkJCX0KIAkJCQkJCWVsc2UKLQkJCQkJCXsJLy9maWxsaW5nIHRoZSBQZWVySFRDYXAuIC8vbWF5YmUgbm90IG5lY2Nlc2FyeSBhcyB3ZSBjYW4gZ2V0IGl0cyBpbmZvIGZyb20gY3VycmVudF9uZXR3b3JrLgorCQkJCQkJewkvL2ZpbGxpbmcgdGhlIFBlZXJIVENhcC4gLy9tYXliZSBub3QgbmVjZXNzYXJ5IGFzIHdlIGNhbiBnZXQgaXRzIGluZm8gZnJvbSBjdXJyZW50X25ldHdvcmsuCiAJCQkJCQkJbWVtY3B5KGllZWUtPnBIVEluZm8tPlBlZXJIVENhcEJ1ZiwgbmV0d29yay0+YnNzaHQuYmRIVENhcEJ1ZiwgbmV0d29yay0+YnNzaHQuYmRIVENhcExlbik7CiAJCQkJCQkJbWVtY3B5KGllZWUtPnBIVEluZm8tPlBlZXJIVEluZm9CdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRJbmZvQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUSW5mb0xlbik7CiAJCQkJCQl9CkBAIC0yMTEzLDcgKzIxMTMsNyBAQAogCXJldHVybiAwOwogfQogCi0vKiBmb2xsb3dpbmcgYXJlIGZvciBhIHNpbXBsaWVyIFRYIHF1ZXVlIG1hbmFnZW1lbnQuCisvKiBmb2xsb3dpbmcgYXJlIGZvciBhIHNpbXBsZXIgVFggcXVldWUgbWFuYWdlbWVudC4KICAqIEluc3RlYWQgb2YgdXNpbmcgbmV0aWZfW3N0b3Avd2FrZV1fcXVldWUgdGhlIGRyaXZlcgogICogd2lsbCB1c2VzIHRoZXNlIHR3byBmdW5jdGlvbiAocGx1cyBhIHJlc2V0IG9uZSksIHRoYXQKICAqIHdpbGwgaW50ZXJuYWxseSB1c2VzIHRoZSBrZXJuZWwgbmV0aWZfKiBhbmQgdGFrZXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVC5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hULmgKaW5kZXggY2RlNjAzZi4uMGIxYTFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hULmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hULmgKQEAgLTY0LDcgKzY0LDcgQEAKIH1IVF9DSEFOTkVMX1dJRFRILCAqUEhUX0NIQU5ORUxfV0lEVEg7CiAKIC8vCi0vLyBSZXByZXNlbnQgRXh0ZW50aW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcworLy8gUmVwcmVzZW50IEV4dGVuc2lvbiBDaGFubmVsIE9mZnNldCBpbiBIVCBDYXBhYmlsaXRpZXMKIC8vIFRoaXMgaXMgYXZhaWxhYmxlIG9ubHkgaW4gNDBNaHogbW9kZS4KIC8vCiB0eXBlZGVmIGVudW0gX0hUX0VYVENITkxfT0ZGU0VUewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jCmluZGV4IDUwZjRmNTkuLmU4OGE4MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMKQEAgLTQyMyw3ICs0MjMsNyBAQAogLyoqCiAqIEZ1bmN0aW9uOglIVElPVEFjdElzRGlzYWJsZU1DUzE1CiAqCi0qIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2V2aW5nIE1DUzE1CisqIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2VpdmluZyBNQ1MxNQogKgogKiBJbnB1dDoKICoJCQlQQURBUFRFUgkJQWRhcHRlciwKQEAgLTQ2MCw3ICs0NjAsNyBAQAogLyoqCiAqIEZ1bmN0aW9uOglIVElPVEFjdElzRGlzYWJsZU1DU1R3b1NwYXRpYWxTdHJlYW0KICoKLSogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZXZpbmcgQWxsIDIgc3MgcGFja2V0cworKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNlaXZpbmcgQWxsIDIgc3MgcGFja2V0cwogKgogKiBJbnB1dDoKICoJCQlQQURBUFRFUgkJQWRhcHRlciwKQEAgLTE0MDksNyArMTQwOSw3IEBACiAJLy9pZiBpbiBoYWxmIE4gbW9kZSwgc2V0IHRvIDIwTSBiYW5kd2lkdGggcGxlYXNlIDA5LjA4LjIwMDggV0IuCiAJaWYoQmFuZHdpZHRoPT1IVF9DSEFOTkVMX1dJRFRIXzIwXzQwICYmICghaWVlZS0+R2V0SGFsZk5tb2RlU3VwcG9ydEJ5QVBzSGFuZGxlcihpZWVlLT5kZXYpKSkKIAkgewotCQkJLy8gSGFuZGxlIElsbGVnYWwgZXh0ZW50aW9uIGNoYW5uZWwgb2Zmc2V0ISEKKwkJCS8vIEhhbmRsZSBJbGxlZ2FsIGV4dGVuc2lvbiBjaGFubmVsIG9mZnNldCEhCiAJCWlmKGllZWUtPmN1cnJlbnRfbmV0d29yay5jaGFubmVsPDIgJiYgT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9MT1dFUikKIAkJCU9mZnNldCA9IEhUX0VYVENITkxfT0ZGU0VUX05PX0VYVDsKIAkJaWYoT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9VUFBFUiB8fCBPZmZzZXQ9PUhUX0VYVENITkxfT0ZGU0VUX0xPV0VSKSB7CkBAIC0xNDI2LDcgKzE0MjYsNyBAQAogCiAJcEhUSW5mby0+YlN3QndJblByb2dyZXNzID0gdHJ1ZTsKIAotCS8vIFRPRE86IDIwMDcuNy4xMyBieSBFbWlseSBXYWl0IDIwMDBtcyAgaW4gb3JkZXIgdG8gZ2FyYW50ZWUgdGhhdCBzd2l0Y2hpbmcKKwkvLyBUT0RPOiAyMDA3LjcuMTMgYnkgRW1pbHkgV2FpdCAyMDAwbXMgIGluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0IHN3aXRjaGluZwogCS8vICAgYmFuZHdpZHRoIGlzIGV4ZWN1dGVkIGFmdGVyIHNjYW4gaXMgZmluaXNoZWQuIEl0IGlzIGEgdGVtcG9yYWwgc29sdXRpb24KIAkvLyAgIGJlY2F1c2Ugc29mdHdhcmUgc2hvdWxkIGdhbnJhbnRlZSB0aGUgbGFzdCBvcGVyYXRpb24gb2Ygc3dpdGNoaW5nIGJhbmR3aWR0aAogCS8vICAgaXMgZXhlY3V0ZWQgcHJvcGVybGx5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaAppbmRleCBiYWFhYzIxLi5lN2UyNmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaApAQCAtNDQsNyArNDQsNyBAQAogCXUxNgkJCQlSeFRpbWVvdXRJbmRpY2F0ZVNlcTsKIAlzdHJ1Y3QgbGlzdF9oZWFkCQlSeFBlbmRpbmdQa3RMaXN0OwogCXN0cnVjdCB0aW1lcl9saXN0CQlSeFBrdFBlbmRpbmdUaW1lcjsKLQlCQV9SRUNPUkQJCQlSeEFkbWl0dGVkQkFSZWNvcmQ7CSAvLyBGb3IgQkEgUmVjZXBpZW50CisJQkFfUkVDT1JECQkJUnhBZG1pdHRlZEJBUmVjb3JkOwkgLy8gRm9yIEJBIFJlY2lwaWVudAogCXUxNgkJCQlSeExhc3RTZXFOdW07CiAJdTgJCQkJUnhMYXN0RnJhZ051bTsKIAl1OAkJCQludW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMKaW5kZXggYzNmY2FhZS4uOTU3Y2U0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYwpAQCAtMTM1LDcgKzEzNSw3IEBACiAJUmVzZXRUc0NvbW1vbkluZm8oJnBUUy0+VHNDb21tb25JbmZvKTsKIAlwVFMtPlJ4SW5kaWNhdGVTZXEgPSAweGZmZmY7IC8vIFRoaXMgaW5kaWNhdGUgdGhlIFJ4SW5kaWNhdGVTZXEgaXMgbm90IHVzZWQgbm93ISEKIAlwVFMtPlJ4VGltZW91dEluZGljYXRlU2VxID0gMHhmZmZmOyAvLyBUaGlzIGluZGljYXRlIHRoZSBSeFRpbWVvdXRJbmRpY2F0ZVNlcSBpcyBub3QgdXNlZCBub3chIQotCVJlc2V0QmFFbnRyeSgmcFRTLT5SeEFkbWl0dGVkQkFSZWNvcmQpOwkgIC8vIEZvciBCQSBSZWNlcGllbnQKKwlSZXNldEJhRW50cnkoJnBUUy0+UnhBZG1pdHRlZEJBUmVjb3JkKTsJICAvLyBGb3IgQkEgUmVjaXBpZW50CiB9CiAKIHZvaWQgVFNJbml0aWFsaXplKHN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICppZWVlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9zY2F0dGVyd2Fsay5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9zY2F0dGVyd2Fsay5jCmluZGV4IDQ5ZjQwMWYuLjM1NDNhNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvc2NhdHRlcndhbGsuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3NjYXR0ZXJ3YWxrLmMKQEAgLTcxLDcgKzcxLDcgQEAKIAkJCQkgdW5zaWduZWQgaW50IG1vcmUpCiB7CiAJLyogd2Fsay0+ZGF0YSBtYXkgYmUgcG9pbnRpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIG5leHQgcGFnZTsKLQkgICBob3dldmVyLCB3ZSBrbm93IHdlIHRyYW5zZmVyZWQgYXQgbGVhc3Qgb25lIGJ5dGUuICBTbywKKwkgICBob3dldmVyLCB3ZSBrbm93IHdlIHRyYW5zZmVycmVkIGF0IGxlYXN0IG9uZSBieXRlLiAgU28sCiAJICAgd2Fsay0+ZGF0YSAtIDEgd2lsbCBiZSBhIHZpcnR1YWwgYWRkcmVzcyBpbiB0aGUgbWFwcGVkIHBhZ2UuICovCiAKIAlpZiAob3V0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTkyVV9jb3JlLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOTJVX2NvcmUuYwppbmRleCBkYTYxMmU2Li5lODFiOGFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOTJVX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOTJVX2NvcmUuYwpAQCAtNDYwLDcgKzQ2MCw3IEBACiAvKiB1OCByZWFkX3BoeV9jY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggYWRyKTsgKi8KIC8qIHU4IHJlYWRfcGh5X29mZG0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggYWRyKTsgKi8KIC8qIHRoaXMgbWlnaHQgc3RpbGwgY2FsbGVkIGluIHdoYXQgd2FzIHRoZSBQSFkgcnRsODE4NS9ydGw4MTkyIGNvbW1vbiBjb2RlCi0gKiBwbGFucyBhcmUgdG8gcG9zc2liaWx0eSB0dXJuIGl0IGFnYWluIGluIG9uZSBjb21tb24gY29kZS4uLgorICogcGxhbnMgYXJlIHRvIHBvc3NpYmlsaXR5IHR1cm4gaXQgYWdhaW4gaW4gb25lIGNvbW1vbiBjb2RlLi4uCiAgKi8KIGlubGluZSB2b2lkIGZvcmNlX3BjaV9wb3N0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CkBAIC0xMzc4LDcgKzEzNzgsNyBAQAogCQkvL3R4X2FnZ19kZXNjLT5MSU5JUCA9IDA7CiAJCS8vdHhfYWdnX2Rlc2MtPkNtZEluaXQgPSAxOwogCQl0eF9hZ2dfZGVzYy0+T2Zmc2V0ID0gIHNpemVvZih0eF9md2luZm9fODE5eF91c2IpICsgODsKLQkJLyogYWxyZWFkeSByYXcgZGF0YSwgbmVlZCBub3QgdG8gc3Vic3RyYWN0IGhlYWRlciBsZW5ndGggKi8KKwkJLyogYWxyZWFkeSByYXcgZGF0YSwgbmVlZCBub3QgdG8gc3VidHJhY3QgaGVhZGVyIGxlbmd0aCAqLwogCQl0eF9hZ2dfZGVzYy0+UGt0U2l6ZSA9IHNrYi0+bGVuICYgMHhmZmZmOwogCiAJCS8qRFdPUkQgMSovCkBAIC0yODg4LDcgKzI4ODgsNyBAQAogCVJUX1RSQUNFKENPTVBfRVBST00sICI8PT09PT09PT09PT0lcygpLCBlcHJvbXR5cGU6JWRcbiIsIF9fRlVOQ1RJT05fXywgcHJpdi0+ZXByb210eXBlKTsKIH0KIAotLy91c2VkIHRvIHN3YXAgZW5kaWFuLiBhcyBudG9obCAmIGh0b25sIGFyZSBub3QgbmVjY2Vzc2FyeSB0byBzd2FwIGVuZGlhbiwgc28gdXNlIHRoaXMgaW5zdGVhZC4KKy8vdXNlZCB0byBzd2FwIGVuZGlhbi4gYXMgbnRvaGwgJiBodG9ubCBhcmUgbm90IG5lY2Vzc2FyeSB0byBzd2FwIGVuZGlhbiwgc28gdXNlIHRoaXMgaW5zdGVhZC4KIHN0YXRpYyBpbmxpbmUgdTE2IGVuZGlhbl9zd2FwKHUxNiogZGF0YSkKIHsKIAl1MTYgdG1wID0gKmRhdGE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX0hUVHlwZS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9IVFR5cGUuaAppbmRleCAwMWY1OGI5Li4yYWM0MjE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX0hUVHlwZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfSFRUeXBlLmgKQEAgLTY1LDcgKzY1LDcgQEAKIH1IVF9DSEFOTkVMX1dJRFRILCAqUEhUX0NIQU5ORUxfV0lEVEg7CiAKIC8vCi0vLyBSZXByZXNlbnQgRXh0ZW50aW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcworLy8gUmVwcmVzZW50IEV4dGVuc2lvbiBDaGFubmVsIE9mZnNldCBpbiBIVCBDYXBhYmlsaXRpZXMKIC8vIFRoaXMgaXMgYXZhaWxhYmxlIG9ubHkgaW4gNDBNaHogbW9kZS4KIC8vCiB0eXBlZGVmIGVudW0gX0hUX0VYVENITkxfT0ZGU0VUewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9waHkuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfcGh5LmMKaW5kZXggNDE2ODRlOC4uYzQ1ODZiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9waHkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX3BoeS5jCkBAIC0xNTMxLDEzICsxNTMxLDEzIEBACiAJewogCQljYXNlIEhUX0NIQU5ORUxfV0lEVEhfMjA6CiAJCQlyZWdCd09wTW9kZSB8PSBCV19PUE1PREVfMjBNSFo7Ci0JCSAgICAgICAvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXN1ZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCisJCSAgICAgICAvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXVzZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCiAJCQl3cml0ZV9uaWNfYnl0ZShkZXYsIEJXX09QTU9ERSwgcmVnQndPcE1vZGUpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBIVF9DSEFOTkVMX1dJRFRIXzIwXzQwOgogCQkJcmVnQndPcE1vZGUgJj0gfkJXX09QTU9ERV8yME1IWjsKLQkJCS8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhc3VlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKKwkJCS8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhdXNlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKIAkJCXdyaXRlX25pY19ieXRlKGRldiwgQldfT1BNT0RFLCByZWdCd09wTW9kZSk7CiAJCQlicmVhazsKIApAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICpmdW5jdGlvbjogIFRoaXMgZnVuY3Rpb24gc2NoZWR1bGVzIGJhbmR3aXRoIHN3aXRjaCB3b3JrLgorICpmdW5jdGlvbjogIFRoaXMgZnVuY3Rpb24gc2NoZWR1bGVzIGJhbmR3aWR0aCBzd2l0Y2ggd29yay4KICAqICAgaW5wdXQ6ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2CiAgKiAgIAkgICAgIEhUX0NIQU5ORUxfV0lEVEgJQmFuZHdpZHRoICAvLzIwTSBvciA0ME0KICAqICAgCSAgICAgSFRfRVhUQ0hOTF9PRkZTRVQgT2Zmc2V0IAkgICAvL1VwcGVyLCBMb3dlciwgb3IgRG9uJ3QgY2FyZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9jbWQuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfY21kLmgKaW5kZXggM2E5NDViNS4uMmRjNzg0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9jbWQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2NtZC5oCkBAIC02NTYsNyArNjU2LDcgQEAKIC8qCiAgKiBSZXN1bHQ6CiAgKiAweDAwOiBzdWNjZXNzCi0gKiAweDAxOiBzdWNlc3MsIGFuZCBjaGVjayBSZXNwb25zZS4KKyAqIDB4MDE6IHN1Y2Nlc3MsIGFuZCBjaGVjayBSZXNwb25zZS4KICAqIDB4MDI6IGNtZCBpZ25vcmVkIGR1ZSB0byBkdXBsaWNhdGVkIHNlcXVjbmUgbnVtYmVyCiAgKiAweDAzOiBjbWQgZHJvcHBlZCBkdWUgdG8gaW52YWxpZCBjbWQgY29kZQogICogMHgwNDogcmVzZXJ2ZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2xlZC5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9sZWQuaAppbmRleCA5OTRlZjgyLi44MDg1ZTVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2xlZC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbGVkLmgKQEAgLTc4LDE0ICs3OCwxNCBAQAogfTsKIAogc3RydWN0IGxlZF9wcml2IHsKLQkvKiBhZGQgZm9yIGxlZCBjb250cm9sbCAqLworCS8qIGFkZCBmb3IgbGVkIGNvbnRyb2wgKi8KIAlzdHJ1Y3QgTEVEXzg3MXgJCVN3TGVkMDsKIAlzdHJ1Y3QgTEVEXzg3MXgJCVN3TGVkMTsKIAllbnVtIExFRF9TVFJBVEVHWV84NzF4CUxlZFN0cmF0ZWd5OwogCXU4CQkJYlJlZ1VzZUxlZDsKIAl2b2lkICgqTGVkQ29udHJvbEhhbmRsZXIpKHN0cnVjdCBfYWRhcHRlciAqcGFkYXB0ZXIsCiAJCQkJICBlbnVtIExFRF9DVExfTU9ERSBMZWRBY3Rpb24pOwotCS8qIGFkZCBmb3IgbGVkIGNvbnRyb2xsICovCisJLyogYWRkIGZvciBsZWQgY29udHJvbCAqLwogfTsKIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmMKaW5kZXggOThiYTc2MC4uODY2NTU0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmMKQEAgLTE2NjMsNyArMTY2Myw3IEBACiAJCQkgICAgICAoc3RydWN0IG5kaXNfd2xhbl9ic3NpZF9leCAqKXBkZXZfbmV0d29yayk7CiB9CiAKLS8qdGhlIGZ1Y250aW9uIGlzIGF0IHBhc3NpdmVfbGV2ZWwqLworLyp0aGUgZnVuY3Rpb24gaXMgYXQgcGFzc2l2ZV9sZXZlbCovCiB2b2lkIHI4NzEyX2pvaW5ic3NfcmVzZXQoc3RydWN0IF9hZGFwdGVyICpwYWRhcHRlcikKIHsKIAlpbnQgaTsKQEAgLTE3MjYsNyArMTcyNiw3IEBACiAJcmV0dXJuIHBodHByaXYtPmh0X29wdGlvbjsKIH0KIAotLyogdGhlIGZ1Y250aW9uIGlzID4gcGFzc2l2ZV9sZXZlbCAoaW4gY3JpdGljYWxfc2VjdGlvbikgKi8KKy8qIHRoZSBmdW5jdGlvbiBpcyA+IHBhc3NpdmVfbGV2ZWwgKGluIGNyaXRpY2FsX3NlY3Rpb24pICovCiBzdGF0aWMgdm9pZCB1cGRhdGVfaHRfY2FwKHN0cnVjdCBfYWRhcHRlciAqcGFkYXB0ZXIsIHU4ICpwaWUsIHVpbnQgaWVfbGVuKQogewogCXU4ICpwLCBtYXhfYW1wZHVfc3o7CkBAIC0xODAzLDcgKzE4MDMsNyBAQAogCX0KIH0KIAotLyp0aGUgZnVjbnRpb24gaXMgPj0gcGFzc2l2ZV9sZXZlbCovCisvKnRoZSBmdW5jdGlvbiBpcyA+PSBwYXNzaXZlX2xldmVsKi8KIHVuc2lnbmVkIGludCByODcxMl9hZGRfaHRfYWRkdF9pbmZvKHN0cnVjdCBfYWRhcHRlciAqcGFkYXB0ZXIsCiAJCQkgICAgICB1OCAqaW5faWUsIHU4ICpvdXRfaWUsCiAJCQkgICAgICB1aW50IGluX2xlbiwgdWludCAqcG91dF9sZW4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5oCmluZGV4IDJiMzViNzQuLjI3OTQ4MDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAJCQkJCQkgKiAgc2luZ2xlLXRvbmUqLwogI2RlZmluZQlXSUZJX01QX0NUWF9CQUNLR1JPVU5EX1BFTkRJTkcJMHgwMDA4MDAwMCAvKiBwZW5kaW5nIGluIGNvbnQsIHR4CiAJCQkJCSogYmFja2dyb3VuZCBkdWUgdG8gb3V0IG9mIHNrYiovCi0jZGVmaW5lCVdJRklfTVBfQ1RYX0NDS19IVwkweDAwMTAwMDAwCS8qIGluIGNvbnRpbm91cyB0eCovCisjZGVmaW5lCVdJRklfTVBfQ1RYX0NDS19IVwkweDAwMTAwMDAwCS8qIGluIGNvbnRpbnVvdXMgdHgqLwogI2RlZmluZQlXSUZJX01QX0NUWF9DQ0tfQ1MJMHgwMDIwMDAwMAkvKiBpbiBjb250LCB0eCB3aXRoIGNhcnJpZXIKIAkJCQkJCSAqIHN1cHByZXNzaW9uKi8KICNkZWZpbmUgICBXSUZJX01QX0xQQktfU1RBVEUJMHgwMDQwMDAwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tcF9waHlfcmVnZGVmLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21wX3BoeV9yZWdkZWYuaAppbmRleCBlMzg2ZmIwLi4yMzUzMmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21wX3BoeV9yZWdkZWYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21wX3BoeV9yZWdkZWYuaApAQCAtMzgsNyArMzgsNyBAQAogICogMi4gMHg4MDAvMHg5MDAvMHhBMDAvMHhDMDAvMHhEMDAvMHhFMDAKICAqIDMuIFJGIHJlZ2lzdGVyIDB4MDAtMkUKICAqIDQuIEJpdCBNYXNrIGZvciBCQi9SRiByZWdpc3RlcgotICogNS4gT3RoZXIgZGVmaW50aW9uIGZvciBCQi9SRiBSL1cKKyAqIDUuIE90aGVyIGRlZmluaXRpb24gZm9yIEJCL1JGIFIvVwogICoKICAqIDEuIFBNQUMgZHVwbGljYXRlIHJlZ2lzdGVyIGR1ZSB0byBjb25uZWN0aW9uOiBSRl9Nb2RlLCBUUnhSTiwgTnVtT2YgTC1TVEYKICAqIDEuIFBhZ2UxKDB4MTAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvdXNiX2hhbGluaXQuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3VzYl9oYWxpbml0LmMKaW5kZXggMGU5NDgzYi4uNDYyODdjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvdXNiX2hhbGluaXQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi91c2JfaGFsaW5pdC5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIAkJLyogSW5pdGlhbGl6YXRpb24gZm9yIHBvd2VyIG9uIHNlcXVlbmNlLCAqLwogCQlyODcxMl93cml0ZTgocGFkYXB0ZXIsIFNQUzBfQ1RSTCArIDEsIDB4NTMpOwogCQlyODcxMl93cml0ZTgocGFkYXB0ZXIsIFNQUzBfQ1RSTCwgMHg1Nyk7Ci0JCS8qIEVuYWJsZSBBRkUgTWFjcm8gQmxvY2sncyBCYW5kZ2FwIGFkbiBFbmFibGUgQUZFIE1hY3JvCisJCS8qIEVuYWJsZSBBRkUgTWFjcm8gQmxvY2sncyBCYW5kZ2FwIGFuZCBFbmFibGUgQUZFIE1hY3JvCiAJCSAqIEJsb2NrJ3MgTWJpYXMKIAkJICovCiAJCXZhbDggPSByODcxMl9yZWFkOChwYWRhcHRlciwgQUZFX01JU0MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3guYwppbmRleCA0NTE0NDE5Li4wMjUyNWQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3guYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3guYwpAQCAtODI0LDEzICs4MjQsMTMgQEAKIAljaGlwLT5mcGdhX21zX2hnX2NsayA9IENMS184MDsKIAljaGlwLT5mcGdhX21zXzRiaXRfY2xrID0gQ0xLXzgwOwogCWNoaXAtPmZwZ2FfbXNfMWJpdF9jbGsgPSBDTEtfNDA7Ci0JY2hpcC0+YXNpY19zZF9zZHIxMDRfY2xrID0gMjA3OwotCWNoaXAtPmFzaWNfc2Rfc2RyNTBfY2xrID0gOTk7Ci0JY2hpcC0+YXNpY19zZF9kZHI1MF9jbGsgPSA5OTsKLQljaGlwLT5hc2ljX3NkX2hzX2NsayA9IDk5OwotCWNoaXAtPmFzaWNfbW1jXzUybV9jbGsgPSA5OTsKLQljaGlwLT5hc2ljX21zX2hnX2NsayA9IDExOTsKLQljaGlwLT5hc2ljX21zXzRiaXRfY2xrID0gNzk7CisJY2hpcC0+YXNpY19zZF9zZHIxMDRfY2xrID0gMjAzOworCWNoaXAtPmFzaWNfc2Rfc2RyNTBfY2xrID0gOTg7CisJY2hpcC0+YXNpY19zZF9kZHI1MF9jbGsgPSA5ODsKKwljaGlwLT5hc2ljX3NkX2hzX2NsayA9IDk4OworCWNoaXAtPmFzaWNfbW1jXzUybV9jbGsgPSA5ODsKKwljaGlwLT5hc2ljX21zX2hnX2NsayA9IDExNzsKKwljaGlwLT5hc2ljX21zXzRiaXRfY2xrID0gNzg7CiAJY2hpcC0+YXNpY19tc18xYml0X2NsayA9IDM5OwogCWNoaXAtPnNzY19kZXB0aF9zZF9zZHIxMDQgPSBTU0NfREVQVEhfMk07CiAJY2hpcC0+c3NjX2RlcHRoX3NkX3NkcjUwID0gU1NDX0RFUFRIXzJNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X2NoaXAuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9jaGlwLmMKaW5kZXggZjQ0M2Q5Ny4uZDJmMWM3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X2NoaXAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5jCkBAIC02ODQsNiArNjg0LDExIEBACiAJUlRTWF9ERUJVR1AoImR3IGluIDB4NzI0OiAweCV4XG4iLCBsdmFsKTsKIAl2YWwgPSAodTgpbHZhbDsKIAlpZiAoISh2YWwgJiAweDgwKSkgeworCQlpZiAodmFsICYgMHgwOCkKKwkJCWNoaXAtPmx1bl9tb2RlID0gREVGQVVMVF9TSU5HTEU7CisJCWVsc2UKKwkJCWNoaXAtPmx1bl9tb2RlID0gU0RfTVNfMkxVTjsKKwogCQlpZiAodmFsICYgMHgwNCkgewogCQkJU0VUX1NESU9fRVhJU1QoY2hpcCk7CiAJCX0gZWxzZSB7CkBAIC03MDUsMTIgKzcxMCw2IEBACiAKIAkJY2hpcC0+YXNwbV9sMHNfbDFfZW4gPSAodmFsID4+IDUpICYgMHgwMzsKIAotCQlpZiAodmFsICYgMHgwOCkgewotCQkJY2hpcC0+bHVuX21vZGUgPSBERUZBVUxUX1NJTkdMRTsKLQkJfSBlbHNlIHsKLQkJCWNoaXAtPmx1bl9tb2RlID0gU0RfTVNfMkxVTjsKLQkJfQotCiAJCXZhbCA9ICh1OCkobHZhbCA+PiA4KTsKIAogCQljbGsgPSAodmFsID4+IDUpICYgMHgwNzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9jaGlwLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5oCmluZGV4IDcxM2M1ZWEuLjlmN2NkODJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9jaGlwLmgKQEAgLTE4MCw4ICsxODAsOCBAQAogI2RlZmluZSBDVVJfRVJSICAgICAgICAgICAgICAgICAweDcwICAgIC8qIGN1cnJlbnQgZXJyb3IgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIERFRl9FUlIgICAgICAgICAgICAgICAgIDB4NzEgICAgLyogc3BlY2lmaWMgY29tbWFuZCBlcnJvciAgICAgICAgICAgKi8KIAotLyotLS0tIHNlbnNlIGtleSBJbmZvbWF0aW9uIC0tLS0qLwotI2RlZmluZSBTTlNLRVlJTkZPX0xFTiAgICAgICAgICAzICAgICAgIC8qIGxlbmd0aCBvZiBzZW5zZSBrZXkgaW5mb21hdGlvbiAgICovCisvKi0tLS0gc2Vuc2Uga2V5IEluZm9ybWF0aW9uIC0tLS0qLworI2RlZmluZSBTTlNLRVlJTkZPX0xFTiAgICAgICAgICAzICAgICAgIC8qIGxlbmd0aCBvZiBzZW5zZSBrZXkgaW5mb3JtYXRpb24gICAqLwogCiAjZGVmaW5lIFNLU1YgICAgICAgICAgICAgICAgICAgIDB4ODAKICNkZWZpbmUgQ0RCX0lMTEVHQUwgICAgICAgICAgICAgMHg0MApAQCAtMjM1LDEzICsyMzUsMTMgQEAKICAgICB1bnNpZ25lZCBjaGFyICAgc2VnX25vOwkJLyogc2VnbWVudCBOby4gICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgc2Vuc2Vfa2V5OwkJLyogYnl0ZTUgOiBJTEkgICAgICAgICAgICAgICAgICAgICAgKi8KIAkJCQkJCS8qIGJpdDMtMCA6IHNlbnNlIGtleSAgICAgICAgICAgICAgKi8KLSAgICB1bnNpZ25lZCBjaGFyICAgaW5mb1s0XTsJCS8qIGluZm9tYXRpb24gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgdW5zaWduZWQgY2hhciAgIGluZm9bNF07CQkvKiBpbmZvcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgYWRfc2Vuc2VfbGVuOwkvKiBhZGRpdGlvbmFsIHNlbnNlIGRhdGEgbGVuZ3RoICAgICAqLwotICAgIHVuc2lnbmVkIGNoYXIgICBjbWRfaW5mb1s0XTsJLyogY29tbWFuZCBzcGVjaWZpYyBpbmZvbWF0aW9uICAgICAgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgY21kX2luZm9bNF07CS8qIGNvbW1hbmQgc3BlY2lmaWMgaW5mb3JtYXRpb24gICAgICAqLwogICAgIHVuc2lnbmVkIGNoYXIgICBhc2M7CQkvKiBBU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHVuc2lnbmVkIGNoYXIgICBhc2NxOwkJLyogQVNDUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgcmZ1OwkJLyogRlJVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1bnNpZ25lZCBjaGFyICAgc25zX2tleV9pbmZvWzNdOwkvKiBzZW5zZSBrZXkgc3BlY2lmaWMgaW5mb21hdGlvbiAgICAqLworICAgIHVuc2lnbmVkIGNoYXIgICBzbnNfa2V5X2luZm9bM107CS8qIHNlbnNlIGtleSBzcGVjaWZpYyBpbmZvcm1hdGlvbiAgICAqLwogfTsKIAogLyogUENJIE9wZXJhdGlvbiBSZWdpc3RlciBBZGRyZXNzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfc2NzaS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X3Njc2kuaAppbmRleCBmYWMxMjJjLi42NGI4NDk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfc2NzaS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9zY3NpLmgKQEAgLTg1LDcgKzg1LDcgQEAKICNkZWZpbmUgQ0hJUF9OT1JNQUxNT0RFCQkweDAwCiAjZGVmaW5lIENISVBfREVCVUdNT0RFCQkweDAxCiAKLS8qIFNEIFBhc3MgVGhyb3VnaCBDb21tYW5kIEV4dGVudGlvbiAqLworLyogU0QgUGFzcyBUaHJvdWdoIENvbW1hbmQgRXh0ZW5zaW9uICovCiAjZGVmaW5lIFNEX1BBU1NfVEhSVV9NT0RFCTB4RDAKICNkZWZpbmUgU0RfRVhFQ1VURV9OT19EQVRBCTB4RDEKICNkZWZpbmUgU0RfRVhFQ1VURV9SRUFECQkweEQyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3NkLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3NkLmMKaW5kZXggMjFiZmE1Ny4uOGQwNjZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9zZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3Ivc2QuYwpAQCAtMTcxOSw3ICsxNzE5LDcgQEAKIAl9CiAKIFNlYXJjaF9GaW5pc2g6Ci0JUlRTWF9ERUJVR1AoIkZpbmFsIGNob29zZW4gcGhhc2U6ICVkXG4iLCBmaW5hbF9waGFzZSk7CisJUlRTWF9ERUJVR1AoIkZpbmFsIGNob3NlbiBwaGFzZTogJWRcbiIsIGZpbmFsX3BoYXNlKTsKIAlyZXR1cm4gZmluYWxfcGhhc2U7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlci5jIGIvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyLmMKaW5kZXggNzFhNWZiYy4uODkwZWVkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyLmMKQEAgLTU1LDggKzU1LDYgQEAKICNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+CiAjaW5jbHVkZSA8bGludXgvcmFyX3JlZ2lzdGVyLmg+CiAKLSNpbmNsdWRlICIuLi9tZW1yYXIvbWVtcmFyLmgiCi0KICNpbmNsdWRlICJzZXBfZHJpdmVyX2h3X2RlZnMuaCIKICNpbmNsdWRlICJzZXBfZHJpdmVyX2NvbmZpZy5oIgogI2luY2x1ZGUgInNlcF9kcml2ZXJfYXBpLmgiCkBAIC01ODYsNyArNTg0LDcgQEAKIAlkZXZfZGJnKCZzZXAtPnBkZXYtPmRldiwgInBvbGw6IHNlbmRfY3QgaXMgJWx4IHJlcGx5IGN0IGlzICVseFxuIiwKIAkJc2VwLT5zZW5kX2N0LCBzZXAtPnJlcGx5X2N0KTsKIAotCS8qIENoZWNrIGlmIGVycm9yIG9jY3VyZWQgZHVyaW5nIHBvbGwgKi8KKwkvKiBDaGVjayBpZiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcG9sbCAqLwogCXJldHZhbDIgPSBzZXBfcmVhZF9yZWcoc2VwLCBIV19IT1NUX1NFUF9IT1NUX0dQUjNfUkVHX0FERFIpOwogCWlmIChyZXR2YWwyICE9IDB4MCkgewogCQlkZXZfd2Fybigmc2VwLT5wZGV2LT5kZXYsICJwb2xsOyBwb2xsIGVycm9yICV4XG4iLCByZXR2YWwyKTsKQEAgLTExMDYsNyArMTEwNCw3IEBACiAJCQlsbGlfYXJyYXlbY291bnRdLmJsb2NrX3NpemUpOwogCX0KIAotCS8qIFNldCBvdXRwdXQgcGFyYW1zIGFjb3JkaW5nIHRvIHRoZSBpbl9vdXQgZmxhZyAqLworCS8qIFNldCBvdXRwdXQgcGFyYW1zIGFjY29yZGluZyB0byB0aGUgaW5fb3V0IGZsYWcgKi8KIAlpZiAoaW5fb3V0X2ZsYWcgPT0gU0VQX0RSSVZFUl9JTl9GTEFHKSB7CiAJCSpsbGlfYXJyYXlfcHRyID0gbGxpX2FycmF5OwogCQlzZXAtPmRtYV9yZXNfYXJyW3NlcC0+bnJfZGNiX2NyZWF0XS5pbl9udW1fcGFnZXMgPSBudW1fcGFnZXM7CkBAIC0xNTc3LDcgKzE1NzUsNyBAQAogCiAJCS8qCiAJCSAqIElmIHRoaXMgaXMgbm90IHRoZSBsYXN0IHRhYmxlIC0KLQkJICogdGhlbiBhbGxpZ24gaXQgdG8gdGhlIGJsb2NrIHNpemUKKwkJICogdGhlbiBhbGlnbiBpdCB0byB0aGUgYmxvY2sgc2l6ZQogCQkgKi8KIAkJaWYgKCFsYXN0X3RhYmxlX2ZsYWcpCiAJCQl0YWJsZV9kYXRhX3NpemUgPQpAQCAtMTk3NCw3ICsxOTcyLDcgQEAKIAlkZXZfZGJnKCZzZXAtPnBkZXYtPmRldiwgIlNFUF9EUklWRVJfRU5UUklFU19QRVJfVEFCTEVfSU5fU0VQIGlzICV4XG4iLAogCQlTRVBfRFJJVkVSX0VOVFJJRVNfUEVSX1RBQkxFX0lOX1NFUCk7CiAKLQkvKiBDYWxsIHRoZSBmdWNudGlvbiB0aGF0IGNyZWF0ZXMgdGFibGUgZnJvbSB0aGUgbGxpIGFycmF5cyAqLworCS8qIENhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0YWJsZSBmcm9tIHRoZSBsbGkgYXJyYXlzICovCiAJZXJyb3IgPSBzZXBfY29uc3RydWN0X2RtYV90YWJsZXNfZnJvbV9sbGkoc2VwLCBsbGlfaW5fYXJyYXksCiAJCXNlcC0+ZG1hX3Jlc19hcnJbc2VwLT5ucl9kY2JfY3JlYXRdLmluX251bV9wYWdlcywKIAkJbGxpX291dF9hcnJheSwKQEAgLTIzNzIsNyArMjM3MCw2IEBACiAJaW50IGVycm9yID0gMDsKIAkvKiBDb21tYW5kIGFyZ3MgKi8KIAlzdHJ1Y3QgcmFyX2huZGxfdG9fYnVzX3N0cnVjdCBjb21tYW5kX2FyZ3M7Ci0Jc3RydWN0IFJBUl9idWZmZXIgcmFyX2J1ZjsKIAkvKiBCdXMgYWRkcmVzcyAqLwogCWRtYV9hZGRyX3QgIHJhcl9idXMgPSAwOwogCS8qIEhvbGRzIHRoZSBSQVIgYWRkcmVzcyBpbiB0aGUgc3lzdGVtIG1lbW9yeSBvZmZzZXQgKi8KQEAgLTIzODYsMTYgKzIzODMsOCBAQAogCX0KIAogCS8qIENhbGwgdG8gdHJhbnNsYXRpb24gZnVuY3Rpb24gb25seSBpZiB1c2VyIGhhbmRsZSBpcyBub3QgTlVMTCAqLwotCWlmIChjb21tYW5kX2FyZ3MucmFyX2hhbmRsZSkgewotCQltZW1zZXQoJnJhcl9idWYsIDAsIHNpemVvZihyYXJfYnVmKSk7Ci0JCXJhcl9idWYuaW5mby5oYW5kbGUgPSAodTMyKWNvbW1hbmRfYXJncy5yYXJfaGFuZGxlOwotCi0JCWlmIChyYXJfaGFuZGxlX3RvX2J1cygmcmFyX2J1ZiwgMSkgIT0gMSkgewotCQkJZXJyb3IgPSAtRUZBVUxUOwotCQkJZ290byBlbmRfZnVuY3Rpb247Ci0JCX0KLQkJcmFyX2J1cyA9IHJhcl9idWYuYnVzX2FkZHJlc3M7Ci0JfQorCWlmIChjb21tYW5kX2FyZ3MucmFyX2hhbmRsZSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCWRldl9kYmcoJnNlcC0+cGRldi0+ZGV2LCAicmFyIG1zZzsgcmFyX2FkZHJfYnVzID0gJXhcbiIsICh1MzIpcmFyX2J1cyk7CiAKIAkvKiBTZXQgdmFsdWUgaW4gdGhlIFNZU1RFTSBNRU1PUlkgb2Zmc2V0ICovCkBAIC0yNDE2LDcgKzI0MDUsNyBAQAogICoJQGNtZDogY29tbWFuZAogICoJQGFyZzogcG9pbnRlciB0byBhcmd1bWVudCBzdHJ1Y3R1cmUKICAqCi0gKglJbXBsZW1lbnQgdGhlIGlvY3RsIG1ldGhvZHMgYXZhaWxibGUgb24gdGhlIFNFUCBkZXZpY2UuCisgKglJbXBsZW1lbnQgdGhlIGlvY3RsIG1ldGhvZHMgYXZhaWxhYmxlIG9uIHRoZSBTRVAgZGV2aWNlLgogICovCiBzdGF0aWMgbG9uZyBzZXBfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyX2NvbmZpZy5oIGIvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyX2NvbmZpZy5oCmluZGV4IGQzYjkyMjAuLjEwMzM0MjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlcl9jb25maWcuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc2VwL3NlcF9kcml2ZXJfY29uZmlnLmgKQEAgLTY1LDExICs2NSwxMSBAQAogI2RlZmluZSBTRVBfRFJJVkVSX01JTl9EQVRBX1NJWkVfUEVSX1RBQkxFCQkxNgogCiAvKiBmbGFnIHRoYXQgc2lnbmlmaWVzIHRhaCB0aGUgbG9jayBpcwotY3VycmVudGx5IGhlbGQgYnkgdGhlIHByb2NjZXNzIChzdHJ1Y3QgZmlsZSkgKi8KK2N1cnJlbnRseSBoZWxkIGJ5IHRoZSBwcm9jZXNzIChzdHJ1Y3QgZmlsZSkgKi8KICNkZWZpbmUgU0VQX0RSSVZFUl9PV05fTE9DS19GTEFHICAgICAgICAgICAgICAgICAgICAgICAgMQogCiAvKiBmbGFnIHRoYXQgc2lnbmlmaWVzIHRhaCB0aGUgbG9jayBpcyBjdXJyZW50bHkgTk9UCi1oZWxkIGJ5IHRoZSBwcm9jY2VzcyAoc3RydWN0IGZpbGUpICovCitoZWxkIGJ5IHRoZSBwcm9jZXNzIChzdHJ1Y3QgZmlsZSkgKi8KICNkZWZpbmUgU0VQX0RSSVZFUl9ESVNPV05fTE9DS19GTEFHICAgICAgICAgICAgICAgICAgICAgMAogCiAvKiBpbmRpY2F0ZXMgd2hldGhlciBkcml2ZXIgaGFzIG1hcHBlZC91bm1hcHBlZCBzaGFyZWQgYXJlYSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvUkVBRE1FIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvUkVBRE1FCmluZGV4IDcwZjQ5MDk5Li5iODNiYmExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc2xpY29zcy9SRUFETUUKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvUkVBRE1FCkBAIC0zMyw3ICszMyw3IEBACiAJLSBOQVBJPwogCS0gd2FzdGVkIG92ZXJoZWFkIG9mIGV4dHJhIHN0YXRzCiAJLSBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRoaW5ncyB0aGF0IGFyZQotCSAgZWFzaWx5IGF2YWlsYmxlIGFuZCBzaG91bGRuJ3QgYmUga2VwdCBpbiBjYXJkIHN0cnVjdHVyZSwgY2FyZG51bSwgLi4uCisJICBlYXNpbHkgYXZhaWxhYmxlIGFuZCBzaG91bGRuJ3QgYmUga2VwdCBpbiBjYXJkIHN0cnVjdHVyZSwgY2FyZG51bSwgLi4uCiAJICBzbG90bnVtYmVyLCBldmVudHMsIC4uLgogCS0gZ2V0IHJpZCBvZiBzbGljX3NwaW5sb2NrIHdyYXBwZXIKIAktIHZvbGF0aWxlID09IGJhZCBkZXNpZ24gPT4gYmFkIGNvZGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbTd4eC9zbXRjZmIuYyBiL2RyaXZlcnMvc3RhZ2luZy9zbTd4eC9zbXRjZmIuYwppbmRleCBkMDA3ZTRhLi4zZTIyMzBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc203eHgvc210Y2ZiLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NtN3h4L3NtdGNmYi5jCkBAIC0yNiwxMCArMjYsNiBAQAogICoJQm95b2QueWFuZyA8Ym95b2QueWFuZ0BzaWxpY29ubW90aW9uLmNvbS5jbj4KICAqLwogCi0jaWZuZGVmIF9fS0VSTkVMX18KLSNkZWZpbmUgX19LRVJORUxfXwotI2VuZGlmCi0KICNpbmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CkBAIC05NjUsNyArOTYxLDcgQEAKIAkJZ290byBmYWlsZWQ7CiAKIAlzbXRjZmJfc2V0bW9kZShzZmIpOwotCS8qIFByaW1hcnkgZGlzcGxheSBzdGFydGluZyBmcm9tIDAgcG9zdGlvbiAqLworCS8qIFByaW1hcnkgZGlzcGxheSBzdGFydGluZyBmcm9tIDAgcG9zaXRpb24gKi8KIAlody5CYXNlQWRkcmVzc0luVlJBTSA9IDA7CiAJc2ZiLT5mYi5wYXIgPSAmaHc7CiAKQEAgLTEwMTksNiArMTAxNSw3IEBACiAJc210Y19mcmVlX2ZiX2luZm8oc2ZiKTsKIH0KIAorI2lmZGVmIENPTkZJR19QTQogLyogSmFzb24gKDA4LzE0LzIwMDkpCiAgKiBzdXNwZW5kIGZ1bmN0aW9uLCBjYWxsZWQgd2hlbiB0aGUgc3VzcGVuZCBldmVudCBpcyB0cmlnZ2VyZWQKICAqLwpAQCAtMTA1NSw3ICsxMDUyLDcgQEAKIAogCXBkZXYtPmRldi5wb3dlci5wb3dlcl9zdGF0ZSA9IG1zZzsKIAotCS8qIGFkZGl0aW9uYWx5IHR1cm4gb2ZmIGFsbCBmdW5jdGlvbiBibG9ja3MgaW5jbHVkaW5nIGludGVybmFsIFBMTHMgKi8KKwkvKiBhZGRpdGlvbmFsbHkgdHVybiBvZmYgYWxsIGZ1bmN0aW9uIGJsb2NrcyBpbmNsdWRpbmcgaW50ZXJuYWwgUExMcyAqLwogCXNtdGNfc2VxdygweDIxLCAweGZmKTsKIAogCXJldHVybiAwOwpAQCAtMTExMSw2ICsxMTA4LDcgQEAKIAogCXJldHVybiAwOwogfQorI2VuZGlmCiAKIC8qIEphc29uICgwOC8xMy8yMDA5KQogICogcGNpX2RyaXZlciBzdHJ1Y3QgdXNlZCB0byB3cmFwIHRoZSBvcmlnaW5hbCBkcml2ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL2tleWhlbHAuYyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL2tleWhlbHAuYwppbmRleCAyM2NmN2Y0Li4xNzBmMzg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9rZXloZWxwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAva2V5aGVscC5jCkBAIC02OSw3ICs2OSw3IEBACiAJbWVtc2V0KGtleV9vZmZzZXRzLCAwLCBzaXplb2Yoa2V5X29mZnNldHMpKTsKIAlrcCA9IHN0YXRlX3RibCArIG5zdGF0ZXMgKyAxOwogCXdoaWxlICgqa3ArKykgewotCQkvKiBjb3VudCBvY2N1cnJhbmNlcyBvZiBlYWNoIGZ1bmN0aW9uICovCisJCS8qIGNvdW50IG9jY3VycmVuY2VzIG9mIGVhY2ggZnVuY3Rpb24gKi8KIAkJZm9yIChpID0gMDsgaSA8IG5zdGF0ZXM7IGkrKywga3ArKykgewogCQkJaWYgKCEqa3ApCiAJCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9zcGtndWlkZS50eHQgYi9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9zcGtndWlkZS50eHQKaW5kZXggMjQzNjJlYi4uZjMyMTA1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAvc3BrZ3VpZGUudHh0CisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL3Nwa2d1aWRlLnR4dApAQCAtMTA5MSw3ICsxMDkxLDcgQEAKIAogVGhlcmUgaXMgbm8gd2F5IHRvIHNhdmUgdGhlc2Ugd2luZG93IHNldHRpbmdzLCBhbmQgeW91IGNhbiBvbmx5IGhhdmUgb25lCiB3aW5kb3cgZGVmaW5lZCBmb3IgZWFjaCB2aXJ0dWFsIGNvbnNvbGUuICBUaGVyZSBpcyBhbHNvIG5vIHdheSB0byBoYXZlCi13aW5kb3dzIGF1dG9tYXRpY2x5IGRlZmluZWQgZm9yIHNwZWNpZmljIGFwcGxpY2F0aW9ucy4KK3dpbmRvd3MgYXV0b21hdGljYWxseSBkZWZpbmVkIGZvciBzcGVjaWZpYyBhcHBsaWNhdGlvbnMuCiAKIEluIG9yZGVyIHRvIGRlZmluZSBhIHdpbmRvdywgdXNlIHRoZSByZXZpZXcga2V5cyB0byBtb3ZlIHlvdXIgcmVhZGluZwogY3Vyc29yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFyZWEgeW91IHdhbnQgdG8gZGVmaW5lLiAgVGhlbiBwcmVzcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmZzcG9ydC5jIGIvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmZzcG9ydC5jCmluZGV4IDAwN2IyNGIuLjIwZGFlNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2Zmc3BvcnQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mZnNwb3J0LmMKQEAgLTM4LDcgKzM4LDcgQEAKICogT3V0cHV0czogICAgICBOdW1iZXIgb2YgVXNlZCBCaXRzCiAqICAgICAgICAgICAgICAgMCwgaWYgdGhlIGFyZ3VtZW50IGlzIDAKICogRGVzY3JpcHRpb246ICBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBiaXRzIHVzZWQgYnkgYSBnaXZlbiBwb3dlciBvZiAyIG51bWJlcgotKiAgICAgICAgICAgICAgIE51bWJlciBjYW4gYmUgdXB0byAzMiBiaXQKKyogICAgICAgICAgICAgICBOdW1iZXIgY2FuIGJlIHVwIHRvIDMyIGJpdAogKiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmKi8KIGludCBHTE9CX0NhbGNfVXNlZF9CaXRzKHUzMiBuKQogewpAQCAtNjUzLDcgKzY1Myw3IEBACiAJfQogCWRldi0+cXVldWUtPnF1ZXVlZGF0YSA9IGRldjsKIAotCS8qIEFzIExpbnV4IGJsb2NrIGxheWVyIGRvZW5zJ3Qgc3VwcG9ydCA+NEtCIGhhcmR3YXJlIHNlY3RvciwgICovCisJLyogQXMgTGludXggYmxvY2sgbGF5ZXIgZG9lcyd0IHN1cHBvcnQgPjRLQiBoYXJkd2FyZSBzZWN0b3IsICAqLwogCS8qIEhlcmUgd2UgZm9yY2UgcmVwb3J0IDUxMiBieXRlIGhhcmR3YXJlIHNlY3RvciBzaXplIHRvIEtlcm5lbCAqLwogCWJsa19xdWV1ZV9sb2dpY2FsX2Jsb2NrX3NpemUoZGV2LT5xdWV1ZSwgNTEyKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmxhc2guYyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2ZsYXNoLmMKaW5kZXggYTJmODIwMC4uYWVhZDM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmxhc2guYworKysgYi9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mbGFzaC5jCkBAIC05NjUsNyArOTY1LDcgQEAKIAlpZiAoMCA9PSAqZmlyc3RfZmFpbGVkX2NtZCkKIAkJKmZpcnN0X2ZhaWxlZF9jbWQgPSBQZW5kaW5nQ01EW2lkeF0uU0JEQ21kSW5kZXg7CiAKLQluYW5kX2RiZ19wcmludChOQU5EX0RCR19ERUJVRywgIlVuY29ycmVjdGFibGUgZXJyb3IgaGFzIG9jY3VyZWQgIgorCW5hbmRfZGJnX3ByaW50KE5BTkRfREJHX0RFQlVHLCAiVW5jb3JyZWN0YWJsZSBlcnJvciBoYXMgb2NjdXJyZWQgIgogCQkid2hpbGUgZXhlY3V0aW5nICV1IENvbW1hbmQgJXUgYWNjZXNpbmcgQmxvY2sgJXVcbiIsCiAJCSh1bnNpZ25lZCBpbnQpcF9CVGFibGVDaGFuZ2VzRGVsdGEtPmZ0bF9jbWRfY250LAogCQlQZW5kaW5nQ01EW2lkeF0uQ01ELApAQCAtMTg3OSw3ICsxODc5LDcgQEAKIH0KIAogLyoKLSAqIFNlYWNoIGluIHRoZSBMZXZlbDIgQ2FjaGUgdGFibGUgdG8gZmluZCB0aGUgY2FjaGUgaXRlbS4KKyAqIFNlYXJjaCBpbiB0aGUgTGV2ZWwyIENhY2hlIHRhYmxlIHRvIGZpbmQgdGhlIGNhY2hlIGl0ZW0uCiAgKiBJZiBmaW5kLCByZWFkIHRoZSBkYXRhIGZyb20gdGhlIE5BTkQgcGFnZSBvZiBMMiBDYWNoZSwKICAqIE90aGVyd2lzZSwgcmV0dXJuIEZBSUwuCiAgKi8KQEAgLTM5ODksNyArMzk4OSw3IEBACiAqIElucHV0czogICAgICAgaW5kZXggdG8gYmxvY2sgdGhhdCB3YXMganVzdCBpbmNyZW1lbnRlZCBhbmQgaXMgYXQgdGhlIG1heAogKiBPdXRwdXRzOiAgICAgIFBBU1M9MCAvIEZBSUw9MQogKiBEZXNjcmlwdGlvbjogIElmIGFueSBlcmFzZSBjb3VudHMgYXQgTUFYLCBhZGp1c3RzIGVyYXNlIGNvdW50IG9mIGV2ZXJ5Ci0qICAgICAgICAgICAgICAgYmxvY2sgYnkgc3Vic3RyYWN0aW5nIGxlYXN0IHdvcm4KKyogICAgICAgICAgICAgICBibG9jayBieSBzdWJ0cmFjdGluZyBsZWFzdCB3b3JuCiAqICAgICAgICAgICAgICAgY291bnRlciBmcm9tIGNvdW50ZXIgdmFsdWUgb2YgZXZlcnkgZW50cnkgaW4gd2VhciB0YWJsZQogKiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmKi8KIHN0YXRpYyBpbnQgRlRMX0FkanVzdF9SZWxhdGl2ZV9FcmFzZV9Db3VudCh1MzIgSW5kZXhfb2ZfTUFYKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3N0ZV9ybWk0L3N5bmFwdGljc19pMmNfcm1pNC5jIGIvZHJpdmVycy9zdGFnaW5nL3N0ZV9ybWk0L3N5bmFwdGljc19pMmNfcm1pNC5jCmluZGV4IGQ1NWE4ZTQuLjNlNjhkNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zdGVfcm1pNC9zeW5hcHRpY3NfaTJjX3JtaTQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvc3RlX3JtaTQvc3luYXB0aWNzX2kyY19ybWk0LmMKQEAgLTcxLDcgKzcxLDcgQEAKICNkZWZpbmUgU1lOQVBUSUNTX1JNSTRfREVWSUNFX0NPTlRST0xfRlVOQ19OVU0JKDB4MDEpCiAKIC8qKgotICogc3RydWN0IHN5bmFwdGljc19ybWk0X2ZuX2Rlc2MgLSBjb250YWlucyB0aGUgZnVudGlvbiBkZXNjcmlwdG9yIGluZm9ybWF0aW9uCisgKiBzdHJ1Y3Qgc3luYXB0aWNzX3JtaTRfZm5fZGVzYyAtIGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZXNjcmlwdG9yIGluZm9ybWF0aW9uCiAgKiBAcXVlcnlfYmFzZV9hZGRyOiBiYXNlIGFkZHJlc3MgZm9yIHF1ZXJ5CiAgKiBAY21kX2Jhc2VfYWRkcjogYmFzZSBhZGRyZXNzIGZvciBjb21tYW5kCiAgKiBAY3RybF9iYXNlX2FkZHI6IGJhc2UgYWRkcmVzcyBmb3IgY29udHJvbApAQCAtOTIsNyArOTIsNyBAQAogfTsKIAogLyoqCi0gKiBzdHJ1Y3Qgc3luYXB0aWNzX3JtaTRfZm4gLSBjb250YWlucyB0aGUgZnVudGlvbiBpbmZvcm1hdGlvbgorICogc3RydWN0IHN5bmFwdGljc19ybWk0X2ZuIC0gY29udGFpbnMgdGhlIGZ1bmN0aW9uIGluZm9ybWF0aW9uCiAgKiBAZm5fbnVtYmVyOiBmdW5jdGlvbiBudW1iZXIKICAqIEBudW1fb2ZfZGF0YV9zb3VyY2VzOiBudW1iZXIgb2YgZGF0YSBzb3VyY2VzCiAgKiBAbnVtX29mX2RhdGFfcG9pbnRzOiBudW1iZXIgb2YgZmluZ2VycyB0b3VjaGVkCkBAIC0xNTEsNyArMTUxLDcgQEAKICAqIEBpbnB1dF9kZXY6IHBvaW50ZXIgZm9yIGlucHV0IGRldmljZQogICogQGkyY19jbGllbnQ6IHBvaW50ZXIgZm9yIGkyYyBjbGllbnQKICAqIEBib2FyZDogY29uc3RhbnQgcG9pbnRlciBmb3IgdG91Y2ggcGxhdGZvcm0gZGF0YQotICogQGZuX2xpc3RfbXV0ZXg6IG11dGV4IGZvciBmdW50aW9uIGxpc3QKKyAqIEBmbl9saXN0X211dGV4OiBtdXRleCBmb3IgZnVuY3Rpb24gbGlzdAogICogQHJtaTRfcGFnZV9tdXRleDogbXV0ZXggZm9yIHJtaTQgcGFnZQogICogQGN1cnJlbnRfcGFnZTogdmFyaWFibGUgZm9yIGludGVnZXIKICAqIEBudW1iZXJfb2ZfaW50ZXJydXB0X3JlZ2lzdGVyOiBpbnRlcnJ1cHQgcmVnaXN0ZXJzIGNvdW50CkBAIC0yNzgsNyArMjc4LDcgQEAKIAl0eGJ1ZlswXQk9IGFkZHJlc3MgJiBNQVNLXzhCSVQ7CiAJdHhidWZbMV0JPSBkYXRhOwogCXJldHZhbAkJPSBpMmNfbWFzdGVyX3NlbmQocGRhdGEtPmkyY19jbGllbnQsIHR4YnVmLCAyKTsKLQkvKiBBZGQgaW4gcmV0cnkgb24gd3JpdGVzIG9ubHkgaW4gY2VydGlhbiBlcnJvciByZXR1cm4gdmFsdWVzICovCisJLyogQWRkIGluIHJldHJ5IG9uIHdyaXRlcyBvbmx5IGluIGNlcnRhaW4gZXJyb3IgcmV0dXJuIHZhbHVlcyAqLwogCWlmIChyZXR2YWwgIT0gMikgewogCQlkZXZfZXJyKCZpMmMtPmRldiwgIiVzOmZhaWxlZDolZFxuIiwgX19mdW5jX18sIHJldHZhbCk7CiAJCXJldHZhbCA9IC1FSU87CkBAIC01NjEsNyArNTYxLDcgQEAKIAl9CiAJLyoKIAkgKiAyRCBkYXRhIHNvdXJjZXMgaGF2ZSBvbmx5IDMgYml0cyBmb3IgdGhlIG51bWJlciBvZiBmaW5nZXJzCi0JICogc3VwcG9ydGVkIC0gc28gdGhlIGVuY29kaW5nIGlzIGEgYml0IHdpZXJkLgorCSAqIHN1cHBvcnRlZCAtIHNvIHRoZSBlbmNvZGluZyBpcyBhIGJpdCB3ZWlyZC4KIAkgKi8KIAlpZiAoKHF1ZXJpZXNbMV0gJiBNQVNLXzNCSVQpIDw9IDQpCiAJCS8qIGFkZCAxIHNpbmNlIHplcm8gYmFzZWQgKi8KQEAgLTEwMjcsNyArMTAyNyw3IEBACiAgKiBzeW5hcHRpY3Nfcm1pNF9yZW1vdmUoKSAtIFJlbW92ZXMgdGhlIGkyYy1jbGllbnQgdG91Y2hzY3JlZW4gZHJpdmVyCiAgKiBAY2xpZW50OiBpMmMgY2xpZW50IHN0cnVjdHVyZSBwb2ludGVyCiAgKgotICogVGhpcyBmdW50aW9uIHVzZXMgdG8gcmVtb3ZlIHRoZSBpMmMtY2xpZW50CisgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdG8gcmVtb3ZlIHRoZSBpMmMtY2xpZW50CiAgKiB0b3VjaHNjcmVlbiBkcml2ZXIgYW5kIHJldHVybnMgaW50ZWdlci4KICAqLwogc3RhdGljIGludCBfX2RldmV4aXQgc3luYXB0aWNzX3JtaTRfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCkBAIC0xMDUzLDcgKzEwNTMsNyBAQAogICogc3luYXB0aWNzX3JtaTRfc3VzcGVuZCgpIC0gc3VzcGVuZCB0aGUgdG91Y2ggc2NyZWVuIGNvbnRyb2xsZXIKICAqIEBkZXY6IHBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZQogICoKLSAqIFRoaXMgZnVudGlvbiBpcyB1c2VkIHRvIHN1c3BlbmQgdGhlCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc3VzcGVuZCB0aGUKICAqIHRvdWNoIHBhbmVsIGNvbnRyb2xsZXIgYW5kIHJldHVybnMgaW50ZWdlcgogICovCiBzdGF0aWMgaW50IHN5bmFwdGljc19ybWk0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQpAQCAtMTA4OSw3ICsxMDg5LDcgQEAKICAqIHN5bmFwdGljc19ybWk0X3Jlc3VtZSgpIC0gcmVzdW1lIHRoZSB0b3VjaCBzY3JlZW4gY29udHJvbGxlcgogICogQGRldjogcG9pbnRlciB0byBkZXZpY2Ugc3RydWN0dXJlCiAgKgotICogVGhpcyBmdW50aW9uIGlzIHVzZWQgdG8gcmVzdW1lIHRoZSB0b3VjaCBwYW5lbAorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlc3VtZSB0aGUgdG91Y2ggcGFuZWwKICAqIGNvbnRyb2xsZXIgYW5kIHJldHVybnMgaW50ZWdlci4KICAqLwogc3RhdGljIGludCBzeW5hcHRpY3Nfcm1pNF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAKIC8qKgogICogc3luYXB0aWNzX3JtaTRfaW5pdCgpIC0gSW5pdGlhbGl6ZSB0aGUgdG91Y2hzY3JlZW4gZHJpdmVyCiAgKgotICogVGhpcyBmdW50aW9uIHVzZXMgdG8gaW5pdGlhbGl6ZXMgdGhlIHN5bmFwdGljcworICogVGhpcyBmdW5jdGlvbiB1c2VzIHRvIGluaXRpYWxpemVzIHRoZSBzeW5hcHRpY3MKICAqIHRvdWNoc2NyZWVuIGRyaXZlciBhbmQgcmV0dXJucyBpbnRlZ2VyLgogICovCiBzdGF0aWMgaW50IF9faW5pdCBzeW5hcHRpY3Nfcm1pNF9pbml0KHZvaWQpCkBAIC0xMTU4LDcgKzExNTgsNyBAQAogLyoqCiAgKiBzeW5hcHRpY3Nfcm1pNF9leGl0KCkgLSBEZS1pbml0aWFsaXplIHRoZSB0b3VjaHNjcmVlbiBkcml2ZXIKICAqCi0gKiBUaGlzIGZ1bnRpb24gdXNlcyB0byBkZS1pbml0aWFsaXplIHRoZSBzeW5hcHRpY3MKKyAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0byBkZS1pbml0aWFsaXplIHRoZSBzeW5hcHRpY3MKICAqIHRvdWNoc2NyZWVuIGRyaXZlciBhbmQgcmV0dXJucyBub25lLgogICovCiBzdGF0aWMgdm9pZCBfX2V4aXQgc3luYXB0aWNzX3JtaTRfZXhpdCh2b2lkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvX3Rpb21hcC5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvX3Rpb21hcC5oCmluZGV4IDFlMDI3M2UuLjdjYjU4NzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL190aW9tYXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9fdGlvbWFwLmgKQEAgLTM2Niw3ICszNjYsNyBAQAogICogID09PT09PT09IHNtX2ludGVycnVwdF9kc3AgPT09PT09PT0KICAqICBQdXJwb3NlOgogICogICAgICBTZXQgaW50ZXJydXB0IHZhbHVlICYgc2VuZCBhbiBpbnRlcnJ1cHQgdG8gdGhlIERTUCBwcm9jZXNzb3IocykuCi0gKiAgICAgIFRoaXMgaXMgdHlwaWNhbHkgdXNlZCB3aGVuIG1haWxib3ggaW50ZXJydXB0IG1lY2hhbmlzbXMgYWxsb3cgZGF0YQorICogICAgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gbWFpbGJveCBpbnRlcnJ1cHQgbWVjaGFuaXNtcyBhbGxvdyBkYXRhCiAgKiAgICAgIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBpbnRlcnJ1cHQgc3VjaCBhcyBmb3IgT01BUCdzIENNRC9EQVRBIHJlZ3MuCiAgKiAgUGFyYW1ldGVyczoKICAqICAgICAgZGV2X2NvbnRleHQ6ICAgIEhhbmRsZSB0byBCcmlkZ2UgZHJpdmVyIGRlZmluZWQgZGV2aWNlIGluZm8uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9jaG5sX3NtLmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9jaG5sX3NtLmMKaW5kZXggODM4MTEzMC4uNmQ2NmU3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvY2hubF9zbS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL2Nobmxfc20uYwpAQCAtNTc4LDcgKzU3OCw3IEBACiAJCX0gZWxzZSBpZiAoc3RhdF9zeW5jID09IC1FUEVSTSkgewogCQkJLyogVGhpcyBjYW4gb2NjdXIgd2hlbiB0aGUgdXNlciBtb2RlIHRocmVhZCBpcwogCQkJICogYWJvcnRlZCAoXkMpLCBvciB3aGVuIF9WV0lOMzJfV2FpdFNpbmdsZU9iamVjdCgpCi0JCQkgKiBmYWlscyBkdWUgdG8gdW5rb3duIGNhdXNlcy4gKi8KKwkJCSAqIGZhaWxzIGR1ZSB0byB1bmtub3duIGNhdXNlcy4gKi8KIAkJCS8qIEV2ZW4gdGhvdWdoIFdhaXQgZmFpbGVkLCB0aGVyZSBtYXkgYmUgc29tZXRoaW5nIGluCiAJCQkgKiB0aGUgUTogKi8KIAkJCWlmIChsaXN0X2VtcHR5KCZwY2hubC0+aW9fY29tcGxldGlvbnMpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvZHlubG9hZC9jbG9hZC5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2R5bmxvYWQvY2xvYWQuYwppbmRleCAzOTAwNDA5Li41Y2VjZDIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2R5bmxvYWQvY2xvYWQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvZHlubG9hZC9jbG9hZC5jCkBAIC03MTgsNyArNzE4LDcgQEAKIAkgKiBhcyBhIHRlbXBvcmFyeSBmb3IgLmRsbHZpZXcgcmVjb3JkIGNvbnN0cnVjdGlvbi4KIAkgKiBBbGxvY2F0ZSBzdG9yYWdlIGZvciB0aGUgd2hvbGUgdGFibGUuICBBZGQgMSB0byB0aGUgc2VjdGlvbiBjb3VudAogCSAqIGluIGNhc2UgYSB0cmFtcG9saW5lIHNlY3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYXMgd2VsbCBhcyB0aGUKLQkgKiBzaXplIG9mIHRoZSB0cmFtcG9saW5lIHNlY3Rpb24gbmFtZSBzbyBETExWaWV3IGRvZW5zJ3QgZ2V0IGxvc3QuCisJICogc2l6ZSBvZiB0aGUgdHJhbXBvbGluZSBzZWN0aW9uIG5hbWUgc28gRExMVmlldyBkb2VzJ3QgZ2V0IGxvc3QuCiAJICovCiAKIAlzaXogPSBzeW1fY291bnQgKiBzaXplb2Yoc3RydWN0IGxvY2FsX3N5bWJvbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaHcvaHdfbW11LmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaHcvaHdfbW11LmMKaW5kZXggMDE0ZjVkNS4uYzIxNGRmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2h3L2h3X21tdS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ody9od19tbXUuYwpAQCAtNTksNyArNTksNyBAQAogICogUkVUVVJOUzoKICAqCiAgKiAgICAgICBUeXBlCQk6IGh3X3N0YXR1cwotICogICAgICAgRGVzY3JpcHRpb24gICAgIDogMAkJIC0tIE5vIGVycm9ycyBvY2N1cmVkCisgKiAgICAgICBEZXNjcmlwdGlvbiAgICAgOiAwCQkgLS0gTm8gZXJyb3JzIG9jY3VycmVkCiAgKgkJCSBSRVRfQkFEX05VTExfUEFSQU0gICAgIC0tIEEgUG9pbnRlcgogICoJCQkJCQlQYXJhbWF0ZXIgd2FzIHNldCB0byBOVUxMCiAgKgpAQCAtMTAyLDcgKzEwMiw3IEBACiAgKiBSRVRVUk5TOgogICoKICAqICAgICAgIFR5cGUJICAgIAk6IGh3X3N0YXR1cwotICogICAgICAgRGVzY3JpcHRpb24gICAgIDogMAkJIC0tIE5vIGVycm9ycyBvY2N1cmVkCisgKiAgICAgICBEZXNjcmlwdGlvbiAgICAgOiAwCQkgLS0gTm8gZXJyb3JzIG9jY3VycmVkCiAgKgkJCSBSRVRfQkFEX05VTExfUEFSQU0gICAgIC0tIEEgUG9pbnRlciBQYXJhbWF0ZXIKICAqCQkJCQkJICAgd2FzIHNldCB0byBOVUxMCiAgKgkJCSBSRVRfUEFSQU1fT1VUX09GX1JBTkdFIC0tIElucHV0IFBhcmFtZXRlciBvdXQKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICogUkVUVVJOUzoKICAqCiAgKiAgICAgICBUeXBlCSAgICAJOiBod19zdGF0dXMKLSAqICAgICAgIERlc2NyaXB0aW9uICAgICA6IDAJCSAtLSBObyBlcnJvcnMgb2NjdXJlZAorICogICAgICAgRGVzY3JpcHRpb24gICAgIDogMAkJIC0tIE5vIGVycm9ycyBvY2N1cnJlZAogICoJCQkgUkVUX0JBRF9OVUxMX1BBUkFNICAgICAtLSBBIFBvaW50ZXIgUGFyYW1hdGVyCiAgKgkJCQkJCQl3YXMgc2V0IHRvIE5VTEwKICAqCQkJIFJFVF9QQVJBTV9PVVRfT0ZfUkFOR0UgLS0gSW5wdXQgUGFyYW1ldGVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvX2Nobmxfc20uaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9fY2hubF9zbS5oCmluZGV4IGQ2MGUyNTIuLjZlN2FiNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9fY2hubF9zbS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9fY2hubF9zbS5oCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAlzOCBjaG5sX21vZGU7CQkvKiBDaG5sIG1vZGUgYW5kIGF0dHJpYnV0ZXMgKi8KIAkvKiBDaG5sIEkvTyBjb21wbGV0aW9uIGV2ZW50ICh1c2VyIG1vZGUpICovCiAJdm9pZCAqdXNlcl9ldmVudDsKLQkvKiBBYnN0cmFjdCBzeW5jcm9uaXphdGlvbiBvYmplY3QgKi8KKwkvKiBBYnN0cmFjdCBzeW5jaHJvbml6YXRpb24gb2JqZWN0ICovCiAJc3RydWN0IHN5bmNfb2JqZWN0ICpzeW5jX2V2ZW50OwogCXUzMiBwcm9jZXNzOwkJLyogUHJvY2VzcyB3aGljaCBjcmVhdGVkIHRoaXMgY2hhbm5lbCAqLwogCXUzMiBjYl9hcmc7CQkvKiBBcmd1bWVudCB0byB1c2Ugd2l0aCBjYWxsYmFjayAqLwpAQCAtMTU2LDcgKzE1Niw3IEBACiAJc3RydWN0IGxpc3RfaGVhZCBpb19jb21wbGV0aW9uczsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfcGFja2V0c19saXN0OwkvKiBMaXN0IG9mIGZyZWUgSXJwcyAqLwogCXN0cnVjdCBudGZ5X29iamVjdCAqbnRmeV9vYmo7Ci0JdTMyIGJ5dGVzX21vdmVkOwkvKiBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJlZCAqLworCXUzMiBieXRlc19tb3ZlZDsJLyogVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkICovCiAKIAkvKiBGb3IgRFNQLURNQSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY2xrLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY2xrLmgKaW5kZXggYjIzOTUwMy4uNjg1MzQxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Nsay5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbGsuaApAQCAtNTUsNyArNTUsNyBAQAogICogICAgICBJbml0aWFsaXplcyBwcml2YXRlIHN0YXRlIG9mIENMSyBtb2R1bGUuCiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgotICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cmVkLgorICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cnJlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICogICAgICBDTEsgaW5pdGlhbGl6ZWQuCkBAIC03MSw3ICs3MSw3IEBACiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgogICogICAgICAwOglTdWNjZXNzLgotICoJLUVQRVJNOglFcnJvciBvY2N1cmVkIHdoaWxlIGVuYWJsaW5nIHRoZSBjbG9jay4KKyAqCS1FUEVSTToJRXJyb3Igb2NjdXJyZWQgd2hpbGUgZW5hYmxpbmcgdGhlIGNsb2NrLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKi8KQEAgLTg2LDcgKzg2LDcgQEAKICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVBFUk06ICAgICAgRXJyb3Igb2NjdXJlZCB3aGlsZSBkaXNhYmxpbmcgdGhlIGNsb2NrLgorICogICAgICAtRVBFUk06ICAgICAgRXJyb3Igb2NjdXJyZWQgd2hpbGUgZGlzYWJsaW5nIHRoZSBjbG9jay4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY21tLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY21tLmgKaW5kZXggMjdhMjFiNS4uYWZmMjIwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NtbS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbW0uaApAQCAtMTkwLDcgKzE5MCw3IEBACiAgKiAgICAgIEluaXRpYWxpemVzIHByaXZhdGUgc3RhdGUgb2YgQ01NIG1vZHVsZS4KICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6Ci0gKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VyZWQuCisgKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VycmVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKiAgICAgIENNTSBpbml0aWFsaXplZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jb2QuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jb2QuaAppbmRleCA1M2JkNGJiLi5jYjY4NGMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY29kLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NvZC5oCkBAIC0yNDksNyArMjQ5LDcgQEAKICAqICBQYXJhbWV0ZXJzOgogICogICAgICBOb25lLgogICogIFJldHVybnM6Ci0gKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VyZWQuCisgKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VycmVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKiAgICAgIEEgcmVxdWlyZW1lbnQgZm9yIGVhY2ggb2YgdGhlIG90aGVyIHB1YmxpYyBDT0QgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rldi5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rldi5oCmluZGV4IGY0MWU0NzguLmY5MmI0YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kZXYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZGV2LmgKQEAgLTQ5Nyw3ICs0OTcsNyBAQAogICogICAgICBJbml0aWFsaXplIERFVidzIHByaXZhdGUgc3RhdGUsIGtlZXBpbmcgYSByZWZlcmVuY2UgY291bnQgb24gZWFjaCBjYWxsLgogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKLSAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJlZC4KKyAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJyZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqICAgICAgVFJVRTogQSByZXF1aXJlbWVudCBmb3IgdGhlIG90aGVyIHB1YmxpYyBERVYgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rydi5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rydi5oCmluZGV4IDI1ZWYxYTIuLjljZGJkOTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kcnYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHJ2LmgKQEAgLTE1NCw3ICsxNTQsNyBAQAogICogIFBhcmFtZXRlcnM6CiAgKiAgICAgIGRydl9vYmo6ICAgICAgICBMb2NhdGlvbiB0byBzdG9yZSBjcmVhdGVkIERSViBPYmplY3QgaGFuZGxlLgogICogIFJldHVybnM6Ci0gKiAgICAgIDA6ICAgICAgICBTdWNlc3MKKyAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MKICAqICAgICAgLUVOT01FTTogICAgRmFpbGVkIGluIE1lbW9yeSBhbGxvY2F0aW9uCiAgKiAgICAgIC1FUEVSTTogICAgICBHZW5lcmFsIEZhaWx1cmUKICAqICBSZXF1aXJlczoKQEAgLTE3MCw3ICsxNzAsNyBAQAogICogICAgICBUaGVyZSBpcyBvbmUgRHJpdmVyIE9iamVjdCBmb3IgdGhlIERyaXZlciByZXByZXNlbnRpbmcKICAqICAgICAgdGhlIGRyaXZlciBpdHNlbGYuIEl0IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGRldmljZQogICogICAgICBPYmplY3RzIGFuZCB0aGUgbGlzdCBvZiBEZXZpY2UgRXh0ZW5zaW9ucyBpbiB0aGUgc3lzdGVtLgotICogICAgICBBbHNvIGl0IGNhbiBob2xkIG90aGVyIG5lY2Nlc3NhcnkKKyAqICAgICAgQWxzbyBpdCBjYW4gaG9sZCBvdGhlciBuZWNlc3NhcnkKICAqICAgICAgaW5mb3JtYXRpb24gaW4gaXRzIHN0b3JhZ2UgYXJlYS4KICAqLwogZXh0ZXJuIGludCBkcnZfY3JlYXRlKHN0cnVjdCBkcnZfb2JqZWN0ICoqZHJ2X29iaik7CkBAIC0xODAsNyArMTgwLDcgQEAKICAqICBQdXJwb3NlOgogICogICAgICBkZXN0cm95cyB0aGUgRGV2IE9iamVjdCBsaXN0LCBEcnZFeHQgbGlzdAogICogICAgICBhbmQgZGVzdHJveSB0aGUgRFJWIG9iamVjdAotICogICAgICBDYWxsZWQgdXBvbiBkcml2ZXIgdW5Mb2FkaW5nLm9yIHVuc3VjY2VzZnVsIGxvYWRpbmcgb2YgdGhlIGRyaXZlci4KKyAqICAgICAgQ2FsbGVkIHVwb24gZHJpdmVyIHVuTG9hZGluZy5vciB1bnN1Y2Nlc3NmdWwgbG9hZGluZyBvZiB0aGUgZHJpdmVyLgogICogIFBhcmFtZXRlcnM6CiAgKiAgICAgIGRyaXZlcl9vYmo6ICAgICBIYW5kbGUgdG8gRHJpdmVyIG9iamVjdCAuCiAgKiAgUmV0dXJuczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kc3BkZWZzLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHNwZGVmcy5oCmluZGV4IGMyYmEyNmMuLmVkMzJiZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kc3BkZWZzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2RzcGRlZnMuaApAQCAtNTIsNyArNTIsNyBAQAogICogICAgICBkZXZfY3R4dDogICAgSGFuZGxlIHRvIEJyaWRnZSBkcml2ZXIgZGVmaW5lZCBkZXZpY2UgY29udGV4dC4KICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCisgKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VycmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KICAqICAgICAgLUVQRVJNOiAgICAgIE90aGVyLCB1bnNwZWNpZmllZCBlcnJvci4KICAqICBSZXF1aXJlczoKICAqICAgICAgZGV2X2N0eHQgIT0gTlVMTApAQCAtOTEsNyArOTEsNyBAQAogICogICAgICBkc3BfYWRkcjogICAgICAgRFNQIGFkZHJlc3MgYXQgd2hpY2ggdG8gc3RhcnQgZXhlY3V0aW9uLgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KKyAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgogICogICAgICAtRVBFUk06ICAgICAgT3RoZXIsIHVuc3BlY2lmaWVkIGVycm9yLgogICogIFJlcXVpcmVzOgogICogICAgICBkZXZfY3R4dCAhPSBOVUxMCkBAIC0xNDIsNyArMTQyLDcgQEAKICAqICAgICAgbWVtX3R5cGU6ICAgICAgIE1lbW9yeSBzcGFjZSBvbiBEU1AgdG8gd2hpY2ggdG8gdHJhbnNmZXIuCiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgorICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cnJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCiAgKiAgICAgIC1FUEVSTTogICAgICBPdGhlciwgdW5zcGVjaWZpZWQgZXJyb3IuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIGRldl9jdHh0ICE9IE5VTEw7CkBAIC0yMDUsNyArMjA1LDcgQEAKICAqICAgICAgZGV2X2N0eHQ6ICAgIEhhbmRsZSB0byBCcmlkZ2UgZHJpdmVyIGRlZmluZWQgZGV2aWNlIGNvbnRleHQuCiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgorICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cnJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCiAgKiAgICAgIC1FUEVSTTogICAgICBPdGhlciwgdW5zcGVjaWZpZWQgZXJyb3IuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIGRldl9jdHh0ICE9IE5VTEwKQEAgLTI0OCw3ICsyNDgsNyBAQAogICogICAgICBtZW1fdHlwZTogICAgICAgTWVtb3J5IHNwYWNlIG9uIERTUCBmcm9tIHdoaWNoIHRvIHRyYW5zZmVyLgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KKyAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgogICogICAgICAtRVBFUk06ICAgICAgT3RoZXIsIHVuc3BlY2lmaWVkIGVycm9yLgogICogIFJlcXVpcmVzOgogICogICAgICBkZXZfY3R4dCAhPSBOVUxMOwpAQCAtMjc0LDcgKzI3NCw3IEBACiAgKiAgICAgIG1lbV90eXBlOiAgICAgICBNZW1vcnkgc3BhY2Ugb24gRFNQIHRvIHdoaWNoIHRvIHRyYW5zZmVyLgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KKyAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgogICogICAgICAtRVBFUk06ICAgICAgT3RoZXIsIHVuc3BlY2lmaWVkIGVycm9yLgogICogIFJlcXVpcmVzOgogICogICAgICBkZXZfY3R4dCAhPSBOVUxMOwpAQCAtNjAxLDcgKzYwMSw3IEBACiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgICAgICBTdWNjZXNzOwogICogICAgICAtRUZBVUxUOiAgICAgICAgSW52YWxpZCBjaG5sX29iai4KLSAqICAgICAgLUVUSU1FRE9VVDogVGltZW91dCBvY2N1cmVkIGJlZm9yZSBjaGFubmVsIGNvdWxkIGJlIGlkbGVkLgorICogICAgICAtRVRJTUVET1VUOiBUaW1lb3V0IG9jY3VycmVkIGJlZm9yZSBjaGFubmVsIGNvdWxkIGJlIGlkbGVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9tZ3IuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9tZ3IuaAppbmRleCBlNTA2YzRkLi40N2IwMzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvbWdyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL21nci5oCkBAIC0xNzYsNyArMTc2LDcgQEAKICAqICAgICAgbWdyX2hhbmRsZTogICAgIEhhbmRsZSB0byB0aGUgTWFuYWdlciBPYmplY3QKICAqICAgICAgZGNkX2hhbmRsZTogICAgIFB0ciB0byByZWNlaXZlIHRoZSBEQ0QgSGFuZGxlLgogICogIFJldHVybnM6Ci0gKiAgICAgIDA6ICAgICAgICBTdWNlc3MKKyAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MKICAqICAgICAgLUVQRVJNOiAgICAgIEZhaWx1cmUgdG8gZ2V0IHRoZSBIYW5kbGUKICAqICBSZXF1aXJlczoKICAqICAgICAgTUdSIGlzIGluaXRpYWxpemVkLgpAQCAtMTk1LDcgKzE5NSw3IEBACiAgKiAgICAgIGNhbGwuIEluaXRpYWxpemVzIHRoZSBEQ0QuCiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgotICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cmVkLgorICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cnJlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICogICAgICBUUlVFOiBBIHJlcXVpcmVtZW50IGZvciB0aGUgb3RoZXIgcHVibGljIE1HUiBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2Uvbm9kZS5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL25vZGUuaAppbmRleCA1M2RhMGVmLi4xNjM3MWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2Uvbm9kZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9ub2RlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKICAqICAgICAgLUVTUElQRTogICAgICAgIGlBbGcgZnVuY3Rpb25zIG5vdCBmb3VuZCBmb3IgYSBEQUlTIG5vZGUuCiAgKiAgICAgIC1FRE9NOiAgICAgICAgIGF0dHJfaW4gIT0gTlVMTCBhbmQgYXR0cl9pbi0+cHJpbyBvdXQgb2YKICAqICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS4KLSAqICAgICAgLUVQRVJNOiAgICAgICAgICBBIGZhaWx1cmUgb2NjdXJlZCwgdW5hYmxlIHRvIGFsbG9jYXRlIG5vZGUuCisgKiAgICAgIC1FUEVSTTogICAgICAgICAgQSBmYWlsdXJlIG9jY3VycmVkLCB1bmFibGUgdG8gYWxsb2NhdGUgbm9kZS4KICAqICAgICAgLUVCQURSOiAgICBQcm9jY2Vzc29yIGlzIG5vdCBpbiB0aGUgcnVubmluZyBzdGF0ZS4KICAqICBSZXF1aXJlczoKICAqICAgICAgbm9kZV9pbml0KHZvaWQpIGNhbGxlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wcm9jLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHJvYy5oCmluZGV4IDVlMDlmZDEuLmYwMGRmZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wcm9jLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3Byb2MuaApAQCAtODksNyArODksNyBAQAogICogIFJldHVybnM6CiAgKiAgICAgIDAgICAgIDogICAgICAgU1VDQ0VTUwogICogICAgICAtRUZBVUxUIDogICAgICAgSW52YWxpZCBwcm9jZXNzb3IgaGFuZGxlLgotICogICAgICAtRVRJTUU6ICAgICAgIEEgVGltZW91dCBPY2N1cmVkIGJlZm9yZSB0aGUgQ29udHJvbCBpbmZvcm1hdGlvbgorICogICAgICAtRVRJTUU6ICAgICAgIEEgVGltZW91dCBPY2N1cnJlZCBiZWZvcmUgdGhlIENvbnRyb2wgaW5mb3JtYXRpb24KICAqCQkJICBjb3VsZCBiZSBzZW50LgogICogICAgICAtRVBFUk0gICA6ICAgICAgIEdlbmVyYWwgRmFpbHVyZS4KICAqICBSZXF1aXJlczoKQEAgLTE2OSw3ICsxNjksNyBAQAogICogICAgICAwICAgICA6ICAgICAgIFN1Y2Nlc3MuCiAgKiAgICAgIC1FRkFVTFQgOiAgICAgICBJbnZhbGlkIHByb2Nlc3NvciBoYW5kbGUuCiAgKiAgICAgIC1FQkFEUjogICAgVGhlIHByb2Nlc3NvciBpcyBub3QgaW4gdGhlIFBST0NfUlVOTklORyBzdGF0ZS4KLSAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJlZCBiZWZvcmUgdGhlIERTUCByZXNwb25kZWQgdG8gdGhlCisgKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VycmVkIGJlZm9yZSB0aGUgRFNQIHJlc3BvbmRlZCB0byB0aGUKICAqCQkJICBxdWVycnkuCiAgKiAgICAgIC1FUEVSTSAgIDogICAgICAgVW5hYmxlIHRvIGdldCBSZXNvdXJjZSBJbmZvcm1hdGlvbgogICogIFJlcXVpcmVzOgpAQCAtMjI5LDcgKzIyOSw3IEBACiAgKiAgICAgIGNhbGwuCiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgotICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cmVkLgorICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cnJlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICogICAgICBUUlVFOiBBIHJlcXVpcmVtZW50IGZvciB0aGUgb3RoZXIgcHVibGljIFBST0MgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3B3ci5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3B3ci5oCmluZGV4IDVlM2FiMjEuLjBmYjA2NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wd3IuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHdyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKICAqICAgICAgMDogICAgICAgICAgICBTdWNjZXNzLgogICogICAgICAwOiBTdWNjZXNzLCBidXQgdGhlIERTUCB3YXMgYWxyZWFkeSBhc2xlZXAuCiAgKiAgICAgIC1FSU5WQUw6ICAgIFRoZSBzcGVjaWZpZWQgc2xlZXBfY29kZSBpcyBub3Qgc3VwcG9ydGVkLgotICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cmVkIHdoaWxlIHdhaXRpbmcgZm9yIERTUCBzbGVlcAorICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cnJlZCB3aGlsZSB3YWl0aW5nIGZvciBEU1Agc2xlZXAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtYXRpb24uCiAgKiAgICAgIC1FUEVSTTogICAgICAgICAgR2VuZXJhbCBmYWlsdXJlLCB1bmFibGUgdG8gc2VuZCBzbGVlcCBjb21tYW5kIHRvCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIERTUC4KQEAgLTY3LDcgKzY3LDcgQEAKICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgICAgIFN1Y2Nlc3MuCiAgKiAgICAgIDA6ICBTdWNjZXNzLCBidXQgdGhlIERTUCB3YXMgYWxyZWFkeSBhd2FrZS4KLSAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJlZCB3aGlsZSB3YWl0aW5nIGZvciB3YWtlCisgKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VycmVkIHdoaWxlIHdhaXRpbmcgZm9yIHdha2UKICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtYXRpb24uCiAgKiAgICAgIC1FUEVSTTogICAgICAgICAgR2VuZXJhbCBmYWlsdXJlLCB1bmFibGUgdG8gc2VuZCB3YWtlIGNvbW1hbmQgdG8KICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRFNQLgpAQCAtODUsNyArODUsNyBAQAogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICAgICAgU3VjY2Vzcy4KICAqICAgICAgMDogIFN1Y2Nlc3MsIGJ1dCB0aGUgRFNQIHdhcyBhbHJlYWR5IGF3YWtlLgotICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cmVkIHdoaWxlIHdhaXRpbmcgZm9yIHdha2UKKyAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJyZWQgd2hpbGUgd2FpdGluZyBmb3Igd2FrZQogICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1hdGlvbi4KICAqICAgICAgLUVQRVJNOiAgICAgICAgICBHZW5lcmFsIGZhaWx1cmUsIHVuYWJsZSB0byBzZW5kIHdha2UgY29tbWFuZCB0bwogICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEU1AuCkBAIC0xMDMsNyArMTAzLDcgQEAKICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgICAgIFN1Y2Nlc3MuCiAgKiAgICAgIDA6ICBTdWNjZXNzLCBidXQgdGhlIERTUCB3YXMgYWxyZWFkeSBhd2FrZS4KLSAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJlZCB3aGlsZSB3YWl0aW5nIGZvciB3YWtlCisgKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VycmVkIHdoaWxlIHdhaXRpbmcgZm9yIHdha2UKICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtYXRpb24uCiAgKiAgICAgIC1FUEVSTTogICAgICAgICAgR2VuZXJhbCBmYWlsdXJlLCB1bmFibGUgdG8gc2VuZCB3YWtlIGNvbW1hbmQgdG8KICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRFNQLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3BtZ3IvZGV2LmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvcG1nci9kZXYuYwppbmRleCA5YTM4ZDg2Li41MjI4MTBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvcG1nci9kZXYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvcG1nci9kZXYuYwpAQCAtNzg3LDcgKzc4Nyw3IEBACiAKIAkvKgogCSAqIEZJWE1FOiB0aGlzIGNvZGUgbmVlZHMgc3RydWN0IHByb2Nfb2JqZWN0IHRvIGhhdmUgYSBsaXN0X2hlYWQKLQkgKiBhdCB0aGUgYmVnaW5pbmcuIElmIG5vdCwgdGhpcyBjYW4gZ28gaG9ycmlibHkgd3JvbmcuCisJICogYXQgdGhlIGJlZ2lubmluZy4gSWYgbm90LCB0aGlzIGNhbiBnbyBob3JyaWJseSB3cm9uZy4KIAkgKi8KIAlsaXN0X2Zvcl9lYWNoKGN1cnIsICZkZXZfb2JqLT5wcm9jX2xpc3QpCiAJCXByb2Nfbm90aWZ5X2NsaWVudHMoKHZvaWQgKiljdXJyLCByZXQpOwpAQCAtODEwLDcgKzgxMCw3IEBACiAJaWYgKCFkZXZfbm9kZV9vYmopCiAJCXN0YXR1cyA9IC1FRkFVTFQ7CiAKLQkvKiBSZXRyaWV2ZSB0aGUgZGV2aWNlIG9iamVjdCBoYW5kbGUgb3JpZ2luYWx5IHN0b3JlZCB3aXRoCisJLyogUmV0cmlldmUgdGhlIGRldmljZSBvYmplY3QgaGFuZGxlIG9yaWdpbmFsbHkgc3RvcmVkIHdpdGgKIAkgKiB0aGUgZGV2X25vZGU6ICovCiAJaWYgKCFzdGF0dXMpIHsKIAkJLyogY2hlY2sgdGhlIGRldmljZSBzdHJpbmcgYW5kIHRoZW4gc3RvcmUgZGV2IG9iamVjdCAqLwpAQCAtOTg2LDcgKzk4Niw3IEBACiAJLyogQWRkIERldk9iamVjdCB0byB0YWlsLiAqLwogCS8qCiAJICogRklYTUU6IHRoaXMgY29kZSBuZWVkcyBzdHJ1Y3QgcHJvY19vYmplY3QgdG8gaGF2ZSBhIGxpc3RfaGVhZAotCSAqIGF0IHRoZSBiZWdpbmluZy4gSWYgbm90LCB0aGlzIGNhbiBnbyBob3JyaWJseSB3cm9uZy4KKwkgKiBhdCB0aGUgYmVnaW5uaW5nLiBJZiBub3QsIHRoaXMgY2FuIGdvIGhvcnJpYmx5IHdyb25nLgogCSAqLwogCWxpc3RfYWRkX3RhaWwoKHN0cnVjdCBsaXN0X2hlYWQgKilwcm9jX29iaiwgJmRldl9vYmotPnByb2NfbGlzdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL2Rydi5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvZHJ2LmMKaW5kZXggOGM4ODU4My4uZGI4MjE1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvZHJ2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvZHJ2LmMKQEAgLTYwOSw3ICs2MDksNyBAQAogCURCQ19SRVFVSVJFKGRldl9ub2RlX3N0cmcgIT0gTlVMTCk7CiAKIAkvKgotCSAqICBBbGxvY2F0ZSBtZW1vcnkgdG8gaG9sZCB0aGUgc3RyaW5nLiBUaGlzIHdpbGwgbGl2ZSB1bnRpbGwKKwkgKiAgQWxsb2NhdGUgbWVtb3J5IHRvIGhvbGQgdGhlIHN0cmluZy4gVGhpcyB3aWxsIGxpdmUgdW50aWwKIAkgKiAgaXQgaXMgZnJlZWQgaW4gdGhlIFJlbGVhc2UgcmVzb3VyY2VzLiBVcGRhdGUgdGhlIGRyaXZlciBvYmplY3QKIAkgKiAgbGlzdC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL25sZHIuYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL25sZHIuYwppbmRleCBmYjVjMmJhLi4wZTcwY2JhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3Ivbmxkci5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL25sZHIuYwpAQCAtNTcsOSArNTcsOSBAQAogICogICB1dXV1dXV1dXxmdWVlZWVlZXxmdWRkZGRkZHxmdWNjY2NjY3wKICAqICB3aGVyZQogICogICAgICB1ID0gdW51c2VkCi0gKiAgICAgIGNjY2NjYyA9IHByZWZlcmVkL3JlcXVpcmVkIGR5bmFtaWMgbWVtIHNlZ2lkIGZvciBjcmVhdGUgcGhhc2UgZGF0YS9jb2RlCi0gKiAgICAgIGRkZGRkZCA9IHByZWZlcmVkL3JlcXVpcmVkIGR5bmFtaWMgbWVtIHNlZ2lkIGZvciBkZWxldGUgcGhhc2UgZGF0YS9jb2RlCi0gKiAgICAgIGVlZWVlZSA9IHByZWZlcmVkL3JlcS4gZHluYW1pYyBtZW0gc2VnaWQgZm9yIGV4ZWN1dGUgcGhhc2UgZGF0YS9jb2RlCisgKiAgICAgIGNjY2NjYyA9IHByZWZlcnJlZC9yZXF1aXJlZCBkeW5hbWljIG1lbSBzZWdpZCBmb3IgY3JlYXRlIHBoYXNlIGRhdGEvY29kZQorICogICAgICBkZGRkZGQgPSBwcmVmZXJyZWQvcmVxdWlyZWQgZHluYW1pYyBtZW0gc2VnaWQgZm9yIGRlbGV0ZSBwaGFzZSBkYXRhL2NvZGUKKyAqICAgICAgZWVlZWVlID0gcHJlZmVycmVkL3JlcS4gZHluYW1pYyBtZW0gc2VnaWQgZm9yIGV4ZWN1dGUgcGhhc2UgZGF0YS9jb2RlCiAgKiAgICAgIGYgPSBmbGFnIGluZGljYXRpbmcgaWYgbWVtb3J5IGlzIHByZWZlcnJlZCBvciByZXF1aXJlZDoKICAqCSAgZiA9IDEgaWYgcmVxdWlyZWQsIGYgPSAwIGlmIHByZWZlcnJlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9wcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9wcm9jLmMKaW5kZXggYzRlNWM0ZTAuLjI0MmRkMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL3Byb2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9wcm9jLmMKQEAgLTE2NzAsNyArMTY3MCw3IEBACiAJaWYgKCFzdGF0dXMpIHsKIAkJZGV2X2RiZyhicmlkZ2UsICIlczogcHJvY2Vzc29yIGluIHN0YW5kYnkgbW9kZVxuIiwgX19mdW5jX18pOwogCQlwX3Byb2Nfb2JqZWN0LT5wcm9jX3N0YXRlID0gUFJPQ19TVE9QUEVEOwotCQkvKiBEZXN0b3J5IHRoZSBOb2RlIE1hbmFnZXIsIG1zZ19jdHJsIE1hbmFnZXIgKi8KKwkJLyogRGVzdHJveSB0aGUgTm9kZSBNYW5hZ2VyLCBtc2dfY3RybCBNYW5hZ2VyICovCiAJCWlmICghKGRldl9kZXN0cm95MihwX3Byb2Nfb2JqZWN0LT5kZXZfb2JqKSkpIHsKIAkJCS8qIERlc3Ryb3kgdGhlIG1zZ19jdHJsIGJ5IGNhbGxpbmcgbXNnX2RlbGV0ZSAqLwogCQkJZGV2X2dldF9tc2dfbWdyKHBfcHJvY19vYmplY3QtPmRldl9vYmosICZobXNnX21ncik7CkBAIC0xODI3LDcgKzE4MjcsNyBAQAogCiAJLyogVGhpcyBpcyBuZWVkZWQgb25seSB3aGVuIERldmljZSBpcyBsb2FkZWQgd2hlbiBpdCBpcwogCSAqIGFscmVhZHkgJ0FDVElWRScgKi8KLQkvKiBEZXN0b3J5IHRoZSBOb2RlIE1hbmFnZXIsIG1zZ19jdHJsIE1hbmFnZXIgKi8KKwkvKiBEZXN0cm95IHRoZSBOb2RlIE1hbmFnZXIsIG1zZ19jdHJsIE1hbmFnZXIgKi8KIAlpZiAoIWRldl9kZXN0cm95Mihwcm9jX29iai0+ZGV2X29iaikpIHsKIAkJLyogRGVzdHJveSB0aGUgbXNnX2N0cmwgYnkgY2FsbGluZyBtc2dfZGVsZXRlICovCiAJCWRldl9nZXRfbXNnX21ncihwcm9jX29iai0+ZGV2X29iaiwgJmhtc2dfbWdyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90bTYwMDAvdG02MDAwLXZpZGVvLmMgYi9kcml2ZXJzL3N0YWdpbmcvdG02MDAwL3RtNjAwMC12aWRlby5jCmluZGV4IGM4MGEzMTYuLjE3ZGI2NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90bTYwMDAvdG02MDAwLXZpZGVvLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RtNjAwMC90bTYwMDAtdmlkZW8uYwpAQCAtMTgyLDcgKzE4Miw3IEBACiAJaWYgKCFidWYpCiAJCXJldHVybjsKIAotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCiAJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9jZDE4NjUuaCBiL2RyaXZlcnMvc3RhZ2luZy90dHkvY2QxODY1LmgKaW5kZXggOTk0MDk2Ni4uOGMyYWQ2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9jZDE4NjUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2NkMTg2NS5oCkBAIC05LDcgKzksNyBAQAogICogICAgICBQbGVhc2UgRE8gY29udGFjdCBpbzgtbGludXhAc3BlY2lhbGl4LmNvLnVrIGlmIHlvdSByZXF1aXJlCiAgKiAgICAgIHN1cHBvcnQuCiAgKgotICogICAgICBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcHBlZCBpbiB0aGUgQml0V2l6YXJkIGxpbnV4IGRldmljZQorICogICAgICBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcGVkIGluIHRoZSBCaXRXaXphcmQgbGludXggZGV2aWNlCiAgKiAgICAgIGRyaXZlciBzZXJ2aWNlLiBJZiB5b3UgcmVxdWlyZSBhIGxpbnV4IGRldmljZSBkcml2ZXIgZm9yIHlvdXIKICAqICAgICAgcHJvZHVjdCwgcGxlYXNlIGNvbnRhY3QgZGV2aWNlc0BCaXRXaXphcmQubmwgZm9yIGEgcXVvdGUuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9lcGNhLmMgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2VwY2EuYwppbmRleCA3YWQzNjM4Li43ZjEzNjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2VwY2EuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2VwY2EuYwpAQCAtNyw3ICs3LDcgQEAKIAkqKiBUaGlzIGRyaXZlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IERpZ2kgKioKIAogCU11Y2ggb2YgdGhpcyBkZXNpZ24gYW5kIGNvZGUgY2FtZSBmcm9tIGVwY2EuYyB3aGljaCB3YXMKLQljb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUgVHJveSBEZSBKb25naCwgYW5kIHN1YnNxdWVudGx5CisJY29weXJpZ2h0IChDKSAxOTk0LCAxOTk1IFRyb3kgRGUgSm9uZ2gsIGFuZCBzdWJzZXF1ZW50bHkKIAltb2RpZmllZCBieSBEYXZpZCBOdWdlbnQsIENocmlzdG9waCBMYW1ldGVyLCBNaWtlIE1jTGFnYW4uCiAKIAlUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtNDcxLDcgKzQ3MSw3IEBACiAJbWVtb2ZmKGNoKTsKIAogCS8qCi0JICogVGhlIGNoYW5uZWwgaGFzIG9mZmljaWFseSBiZWVuIGNsb3NlZC4gVGhlIG5leHQgdGltZSBpdCBpcyBvcGVuZWQgaXQKKwkgKiBUaGUgY2hhbm5lbCBoYXMgb2ZmaWNpYWxseSBiZWVuIGNsb3NlZC4gVGhlIG5leHQgdGltZSBpdCBpcyBvcGVuZWQgaXQKIAkgKiB3aWxsIGhhdmUgdG8gcmVpbml0aWFsaXplZC4gU2V0IGEgZmxhZyB0byBpbmRpY2F0ZSB0aGlzLgogCSAqLwogCS8qIFByZXZlbnQgZnV0dXJlIERpZ2kgcHJvZ3JhbW1lZCBpbnRlcnJ1cHRzIGZyb20gY29taW5nIGFjdGl2ZSAqLwpAQCAtOTc1LDcgKzk3NSw3IEBACiAKIAkvKgogCSAqIE5vdGUgOiBJZiBsaWxvIHdhcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZHJpdmVyIGFuZCB0aGUgaWdub3JlCi0JICogZXBjYWNvbmZpZyBvcHRpb24gd2FzIGNob29zZW4gKGRpZ2llcGNhPTIpIHRoZW4gbmJkZXZzIGFuZCBudW1fY2FyZHMKKwkgKiBlcGNhY29uZmlnIG9wdGlvbiB3YXMgY2hvc2VuIChkaWdpZXBjYT0yKSB0aGVuIG5iZGV2cyBhbmQgbnVtX2NhcmRzCiAJICogd2lsbCBlcXVhbCAwIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgb2theTsgUENJIGNhcmRzIHdpbGwgc3RpbGwgYmUKIAkgKiBwaWNrZWQgdXAgaWYgZGV0ZWN0ZWQuCiAJICovCkBAIC0xMjMwLDE0ICsxMjMwLDE0IEBACiAJbWVtYWRkciA9IGJkLT5yZV9tYXBfbWVtYmFzZTsKIAogCS8qCi0JICogVGhlIGJlbG93IGFzc2lnbm1lbnQgd2lsbCBzZXQgYmMgdG8gcG9pbnQgYXQgdGhlIEJFR0lOSU5HIG9mIHRoZQorCSAqIFRoZSBiZWxvdyBhc3NpZ25tZW50IHdpbGwgc2V0IGJjIHRvIHBvaW50IGF0IHRoZSBCRUdJTk5JTkcgb2YgdGhlCiAJICogY2FyZHMgY2hhbm5lbCBzdHJ1Y3R1cmVzLiBGb3IgMSBjYXJkIHRoZXJlIHdpbGwgYmUgYmV0d2VlbiA4IGFuZCA2NAogCSAqIG9mIHRoZXNlIHN0cnVjdHVyZXMuCiAJICovCiAJYmMgPSBtZW1hZGRyICsgQ0hBTlNUUlVDVDsKIAogCS8qCi0JICogVGhlIGJlbG93IGFzc2lnbm1lbnQgd2lsbCBzZXQgZ2QgdG8gcG9pbnQgYXQgdGhlIEJFR0lOSU5HIG9mIGdsb2JhbAorCSAqIFRoZSBiZWxvdyBhc3NpZ25tZW50IHdpbGwgc2V0IGdkIHRvIHBvaW50IGF0IHRoZSBCRUdJTk5JTkcgb2YgZ2xvYmFsCiAJICogbWVtb3J5IGFkZHJlc3MgMHhjMDAuIFRoZSBmaXJzdCBkYXRhIGluIHRoYXQgZ2xvYmFsIG1lbW9yeSBhY3R1YWxseQogCSAqIHN0YXJ0cyBhdCBhZGRyZXNzIDB4YzFhLiBUaGUgY29tbWFuZCBpbiBwb2ludGVyIGJlZ2lucyBhdCAweGQxMC4KIAkgKi8KQEAgLTE0OTIsNyArMTQ5Miw3IEBACiAJCS8qCiAJCSAqIFRoZSB0d28gYXNzaWdubWVudHMgYmVsb3cgZ2V0IHRoZSBjdXJyZW50IG1vZGVtIHN0YXR1cwogCQkgKiAobXN0YXQpIGFuZCB0aGUgcHJldmlvdXMgbW9kZW0gc3RhdHVzIChsc3RhdCkuIFRoZXNlIGFyZQotCQkgKiB1c2VmdWwgYmVjdWFzZSBhbiBldmVudCBjb3VsZCBzaWduYWwgYSBjaGFuZ2UgaW4gbW9kZW0KKwkJICogdXNlZnVsIGJlY2F1c2UgYW4gZXZlbnQgY291bGQgc2lnbmFsIGEgY2hhbmdlIGluIG1vZGVtCiAJCSAqIHNpZ25hbHMgaXRzZWxmLgogCQkgKi8KIAkJbXN0YXQgPSByZWFkYihldmVudGJ1ZiArIDIpOwpAQCAtMTg5Nyw3ICsxODk3LDcgQEAKIAkJLyoKIAkJICogRXZlbiBpZiBoZWFkIGhhcyB3cmFwcGVkIGFyb3VuZCBvbmx5IHJlcG9ydCB0aGUgYW1vdW50IG9mCiAJCSAqIGRhdGEgdG8gYmUgZXF1YWwgdG8gdGhlIHNpemUgLSB0YWlsLiBSZW1lbWJlciBtZW1jcHkgY2FuJ3QKLQkJICogYXV0b21hdGljbHkgd3JhcCBhcm91bmQgdGhlIHJlY2VpdmUgYnVmZmVyLgorCQkgKiBhdXRvbWF0aWNhbGx5IHdyYXAgYXJvdW5kIHRoZSByZWNlaXZlIGJ1ZmZlci4KIAkJICovCiAJCWRhdGFUb1JlYWQgPSAod3JhcGdhcCA8IGJ5dGVzQXZhaWxhYmxlKSA/IHdyYXBnYXAKIAkJCQkJCQk6IGJ5dGVzQXZhaWxhYmxlOwpAQCAtMjU0Myw3ICsyNTQzLDcgQEAKIAkJCQkJYnJlYWs7CiAJCQkvKgogCQkJICogSWYgdGhlIGluZGV4IGluY3JlbWVudGVkIGFib3ZlIHJlZmVycyB0byBhCi0JCQkgKiBsZWdpdGFtYXRlIGJvYXJkIHR5cGUgc2V0IGl0IGhlcmUuCisJCQkgKiBsZWdpdGltYXRlIGJvYXJkIHR5cGUgc2V0IGl0IGhlcmUuCiAJCQkgKi8KIAkJCWlmIChpbmRleCA8IEVQQ0FfTlVNX1RZUEVTKQogCQkJCWJvYXJkLnR5cGUgPSBsb29wOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJody5oIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJody5oCmluZGV4IGMwYmE2YzAuLjhkZjJmNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kyaHcuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmh3LmgKQEAgLTMzNSw3ICszMzUsNyBAQAogaW4gZmFjdCBnZW5lcmF0ZXMgYSByZXNldCBwdWxzZSBvbiB0aGUgYm9hcmQuIFRoaXMgcHVsc2UgaXMgZ3VhcmFudGVlZCB0byBsYXN0CiBsZXNzIHRoYW4gMTAgbWlsbGlzZWNvbmRzLiBUaGUgYWRkaXRpb25hbCBkZWxheSBlbnN1cmVzIHRoZSAxNDAwIGhhcyBoYWQgdGhlCiBjaGFuY2UgdG8gcmVzcG9uZCBzdWZmaWNpZW50bHkgdG8gdGhlIGZpcnN0IHJlc2V0LiBXaHkgbm90IGEgbG9uZ2VyIGRlbGF5PyBNdWNoCi1tb3JlIHRoYW4gNTAgbWlsbGlzZWNvbmRzIGdldHMgdG8gYmUgbm90aWNhYmxlLCBidXQgdGhlIGJvYXJkIHdvdWxkIHN0aWxsIHdvcmsuCittb3JlIHRoYW4gNTAgbWlsbGlzZWNvbmRzIGdldHMgdG8gYmUgbm90aWNlYWJsZSwgYnV0IHRoZSBib2FyZCB3b3VsZCBzdGlsbCB3b3JrLgogCiBPbmNlIGFsbCAxNiBieXRlcyBvZiB0aGUgUG93ZXItb24gUmVzZXQgTWVzc2FnZSBoYXZlIGJlZW4gcmVhZCwgdGhlIGJvb3RzdHJhcAogZmlybXdhcmUgaXMgcmVhZHkgdG8gcmVjZWl2ZSBsb2Fkd2FyZS4KQEAgLTM5OSw3ICszOTksNyBAQAogCQkvLyBleHBhbmRhYmxlIHByb2R1Y3RzIG11c3QgcmVwb3J0IGEgTUFQIG9mIGF2YWlsYWJsZSBjaGFubmVscy4gU2luY2UgCiAJCS8vIGVhY2ggVUFSVCBzdXBwb3J0cyBmb3VyIHBvcnRzLCB3ZSByZXByZXNlbnQgZWFjaCBVQVJUIGZvdW5kIGJ5IGEKIAkJLy8gc2luZ2xlIGJpdC4gVXNpbmcgdHdvIGJ5dGVzIHRvIHN1cHBseSB0aGUgbWFwcGluZyBpbmZvcm1hdGlvbiB3ZQotCQkvLyByZXBvcnQgdGhlIHByZXNlbnNlIG9yIGFic2Vuc2Ugb2YgdXAgdG8gMTYgVUFSVFMsIG9yIDY0IHBvcnRzIGluCisJCS8vIHJlcG9ydCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB1cCB0byAxNiBVQVJUUywgb3IgNjQgcG9ydHMgaW4KIAkJLy8gc3RlcHMgb2YgNCBwb3J0cy4gRm9yIC1JSUVYIHByb2R1Y3RzLCB0aGUgcG9ydHMgYXJlIG51bWJlcmVkCiAJCS8vIHN0YXJ0aW5nIGF0IHRoZSBib3ggY2xvc2VzdCB0byB0aGUgY29udHJvbGxlciBpbiB0aGUgImNoYWluIi4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJsaWIuYyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kybGliLmMKaW5kZXggMGQxMGI4OS4uMTNhM2NhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJsaWIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmxpYi5jCkBAIC04MjEsNyArODIxLDcgQEAKIC8vCiAvLyBEZXNjcmlwdGlvbjoKIC8vIFN0cmlwcyBkYXRhIGZyb20gdGhlIGlucHV0IGJ1ZmZlciBhbmQgd3JpdGVzIGl0IHRvIHBEZXN0LiBJZiB0aGVyZSBpcyBhCi0vLyBjb2xsb3NhbCBibHVuZGVyLCAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLCByZXR1cm5zIC0xLgorLy8gY29sb3NzYWwgYmx1bmRlciwgKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwgcmV0dXJucyAtMS4KIC8vIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogc3RhdGljIGludApAQCAtOTA5LDcgKzkwOSw3IEBACiAvLyBSZXR1cm5zOiAgICBOdW1iZXIgb2YgYnl0ZXMgc3RyaXBwZWQsIG9yIC0xIGZvciBlcnJvcgogLy8KIC8vIERlc2NyaXB0aW9uOgotLy8gU3RyaXBzIGFueSBkYXRhIGZyb20gdGhlIGlucHV0IGJ1ZmZlci4gSWYgdGhlcmUgaXMgYSBjb2xsb3NhbCBibHVuZGVyLAorLy8gU3RyaXBzIGFueSBkYXRhIGZyb20gdGhlIGlucHV0IGJ1ZmZlci4gSWYgdGhlcmUgaXMgYSBjb2xvc3NhbCBibHVuZGVyLAogLy8gKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwgcmV0dXJucyAtMS4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZQogLy8gbnVtYmVyIG9mIGJ5dGVzIHN0cmlwcGVkLgogLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTk2Myw3ICs5NjMsNyBAQAogLy8gUmV0dXJuczogICAgTnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSwgb3IgLTEgZm9yIGVycm9yCiAvLwogLy8gRGVzY3JpcHRpb246Ci0vLyBJZiB0aGVyZSBpcyBhIGNvbGxvc2FsIGJsdW5kZXIsIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksCisvLyBJZiB0aGVyZSBpcyBhIGNvbG9zc2FsIGJsdW5kZXIsIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksCiAvLyByZXR1cm5zIC0xLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBzdHJpcHBlZC4gT3RoZXJ3aXNlLAogLy8gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBpbiB0aGUgYnVmZmVyLgogLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEwMDEsNyArMTAwMSw3IEBACiAvLwogLy8gRGVzY3JpcHRpb246CiAvLyBRdWV1ZXMgdGhlIGRhdGEgYXQgcFNvdXJjZSB0byBiZSBzZW50IGFzIGRhdGEgcGFja2V0cyB0byB0aGUgYm9hcmQuIElmIHRoZXJlCi0vLyBpcyBhIGNvbGxvc2FsIGJsdW5kZXIsIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksIHJldHVybnMgLTEuCisvLyBpcyBhIGNvbG9zc2FsIGJsdW5kZXIsIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksIHJldHVybnMgLTEuCiAvLyBPdGhlcndpc2UsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiBXaGF0IGlmIHRoZXJlIGlzIG5vdCBlbm91Z2gKIC8vIHJvb20gZm9yIGFsbCB0aGUgZGF0YT8gSWYgcENoLT5jaGFubmVsT3B0aW9ucyAmIENPX05CTE9DS19XUklURSBpcyBzZXQsIHRoZW4KIC8vIHdlIHRyYW5zZmVyIGFzIG1hbnkgY2hhcmFjdGVycyBhcyB3ZSBjYW4gbm93LCB0aGVuIHJldHVybi4gSWYgdGhpcyBiaXQgaXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2lwMm1haW4uYyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2lwMm1haW4uYwppbmRleCBlYTdhOGZiLi5iYTA3NGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pcDJtYWluLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaXAybWFpbi5jCkBAIC0xODI0LDcgKzE4MjQsNyBAQAogLy8JCWlwMnRyYWNlIChDSEFOTiwgSVRSQ19QVVRDLCAxMCwgMSwgc3RyaXAgKTsKIAogCQkvLwotCQkvLyBXZSBtYXkgbmVlZCB0byByZXN0YXJ0IGkyT3V0cHV0IGlmIGl0IGRvZXMgbm90IGZ1bGxmaWxsIHRoaXMgcmVxdWVzdAorCQkvLyBXZSBtYXkgbmVlZCB0byByZXN0YXJ0IGkyT3V0cHV0IGlmIGl0IGRvZXMgbm90IGZ1bGZpbGwgdGhpcyByZXF1ZXN0CiAJCS8vCiAJCXN0cmlwID0gaTJPdXRwdXQoIHBDaCwgcENoLT5QYnVmLCBwQ2gtPlBidWZfc3R1ZmYpOwogCQlpZiAoIHN0cmlwICE9IHBDaC0+UGJ1Zl9zdHVmZiApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4LmMgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeC5jCmluZGV4IDE3YTFiZTUuLmNiMjRjNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXguYwpAQCAtOSw3ICs5LDcgQEAKICAqICAgICAgc3VwcG9ydC4gQnV0IHBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIChzcGVjaWFsaXgudHh0KQogICogICAgICBmaXJzdC4KICAqCi0gKiAgICAgIFRoaXMgZHJpdmVyIHdhcyBkZXZlbG9wcGVkIGluIHRoZSBCaXRXaXphcmQgbGludXggZGV2aWNlCisgKiAgICAgIFRoaXMgZHJpdmVyIHdhcyBkZXZlbG9wZWQgaW4gdGhlIEJpdFdpemFyZCBsaW51eCBkZXZpY2UKICAqICAgICAgZHJpdmVyIHNlcnZpY2UuIElmIHlvdSByZXF1aXJlIGEgbGludXggZGV2aWNlIGRyaXZlciBmb3IgeW91cgogICogICAgICBwcm9kdWN0LCBwbGVhc2UgY29udGFjdCBkZXZpY2VzQEJpdFdpemFyZC5ubCBmb3IgYSBxdW90ZS4KICAqCkBAIC05NzgsNyArOTc4LDcgQEAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYnAtPmxvY2ssIGZsYWdzKTsKIAlzeF9vdXQoYnAsIENEMTg2eF9DQVIsIHBvcnRfTm8ocG9ydCkpOwogCi0JLyogVGhlIFNwZWNpYWxpeCBib2FyZCBkb2Vucyd0IGltcGxlbWVudCB0aGUgUlRTIGxpbmVzLgorCS8qIFRoZSBTcGVjaWFsaXggYm9hcmQgZG9lcyd0IGltcGxlbWVudCB0aGUgUlRTIGxpbmVzLgogCSAgIFRoZXkgYXJlIHVzZWQgdG8gc2V0IHRoZSBJUlEgbGV2ZWwuIERvbid0IHRvdWNoIHRoZW0uICovCiAJaWYgKHN4X2NydHNjdHModHR5KSkKIAkJcG9ydC0+TVNWUiA9IE1TVlJfRFRSIHwgKHN4X2luKGJwLCBDRDE4NnhfTVNWUikgJiBNU1ZSX1JUUyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeF9pbzguaCBiL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4X2lvOC5oCmluZGV4IGM2MzAwNTIuLjEyMTVkN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4X2lvOC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4X2lvOC5oCkBAIC0xMCw3ICsxMCw3IEBACiAgKiAgICAgIFBsZWFzZSBETyBjb250YWN0IGlvOC1saW51eEBzcGVjaWFsaXguY28udWsgaWYgeW91IHJlcXVpcmUKICAqICAgICAgc3VwcG9ydC4KICAqCi0gKiAgICAgIFRoaXMgZHJpdmVyIHdhcyBkZXZlbG9wcGVkIGluIHRoZSBCaXRXaXphcmQgbGludXggZGV2aWNlCisgKiAgICAgIFRoaXMgZHJpdmVyIHdhcyBkZXZlbG9wZWQgaW4gdGhlIEJpdFdpemFyZCBsaW51eCBkZXZpY2UKICAqICAgICAgZHJpdmVyIHNlcnZpY2UuIElmIHlvdSByZXF1aXJlIGEgbGludXggZGV2aWNlIGRyaXZlciBmb3IgeW91cgogICogICAgICBwcm9kdWN0LCBwbGVhc2UgY29udGFjdCBkZXZpY2VzQEJpdFdpemFyZC5ubCBmb3IgYSBxdW90ZS4KICAqCkBAIC03OSw3ICs3OSw3IEBACiAKICNkZWZpbmUgU1BFQ0lBTElYX01BR0lDCQkweDA5MDcKIAotI2RlZmluZSBTWF9DQ1JfVElNRU9VVCAxMDAwMCAgIC8qIENDUiB0aW1lb3V0LiBZb3UgbWF5IG5lZWQgdG8gd2FpdCB1cHRvCisjZGVmaW5lIFNYX0NDUl9USU1FT1VUIDEwMDAwICAgLyogQ0NSIHRpbWVvdXQuIFlvdSBtYXkgbmVlZCB0byB3YWl0IHVwIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgaW50ZXJuYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IgaXMgYXZhaWxhYmxlIGFnYWluIGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGdpdmUgaXQgYSBjb21tYW5kICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl9kZXYuYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX2Rldi5jCmluZGV4IDgyMTRjMzUuLmJjZTdkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX2Rldi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX2Rldi5jCkBAIC0yMjAsOCArMjIwLDEwIEBACiAJfQogCiAJLyogMS4gc3RvcCB0aHJlYWRzICovCi0Ja3RocmVhZF9zdG9wKHVkLT50Y3BfcngpOwotCWt0aHJlYWRfc3RvcCh1ZC0+dGNwX3R4KTsKKwlpZiAodWQtPnRjcF9yeCAmJiAhdGFza19pc19kZWFkKHVkLT50Y3BfcngpKQorCQlrdGhyZWFkX3N0b3AodWQtPnRjcF9yeCk7CisJaWYgKHVkLT50Y3BfdHggJiYgIXRhc2tfaXNfZGVhZCh1ZC0+dGNwX3R4KSkKKwkJa3RocmVhZF9zdG9wKHVkLT50Y3BfdHgpOwogCiAJLyogMi4gY2xvc2UgdGhlIHNvY2tldCAqLwogCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWJfcnguYwppbmRleCA2NDQ1ZjEyLi41MWZiZDA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX3J4LmMKQEAgLTE3MSwzMyArMTcxLDIzIEBACiAKIHN0YXRpYyBpbnQgdHdlYWtfcmVzZXRfZGV2aWNlX2NtZChzdHJ1Y3QgdXJiICp1cmIpCiB7Ci0Jc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqcmVxOwotCV9fdTE2IHZhbHVlOwotCV9fdTE2IGluZGV4OwotCWludCByZXQ7CisJc3RydWN0IHN0dWJfcHJpdiAqcHJpdiA9IChzdHJ1Y3Qgc3R1Yl9wcml2ICopIHVyYi0+Y29udGV4dDsKKwlzdHJ1Y3Qgc3R1Yl9kZXZpY2UgKnNkZXYgPSBwcml2LT5zZGV2OwogCi0JcmVxID0gKHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKikgdXJiLT5zZXR1cF9wYWNrZXQ7Ci0JdmFsdWUgPSBsZTE2X3RvX2NwdShyZXEtPndWYWx1ZSk7Ci0JaW5kZXggPSBsZTE2X3RvX2NwdShyZXEtPndJbmRleCk7CisJdXNiaXBfdWluZm8oInJlc2V0X2RldmljZSAlc1xuIiwgZGV2X25hbWUoJnVyYi0+ZGV2LT5kZXYpKTsKIAotCXVzYmlwX3VpbmZvKCJyZXNldF9kZXZpY2UgKHBvcnQgJWQpIHRvICVzXG4iLCBpbmRleCwKLQkJCQkJCWRldl9uYW1lKCZ1cmItPmRldi0+ZGV2KSk7Ci0KLQkvKiBhbGwgaW50ZXJmYWNlcyBzaG91bGQgYmUgb3duZWQgYnkgdXNiaXAgZHJpdmVyLCBzbyBqdXN0IHJlc2V0IGl0LiAgKi8KLQlyZXQgPSB1c2JfbG9ja19kZXZpY2VfZm9yX3Jlc2V0KHVyYi0+ZGV2LCBOVUxMKTsKLQlpZiAocmV0IDwgMCkgewotCQlkZXZfZXJyKCZ1cmItPmRldi0+ZGV2LCAibG9jayBmb3IgcmVzZXRcbiIpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCS8qIHRyeSB0byByZXNldCB0aGUgZGV2aWNlICovCi0JcmV0ID0gdXNiX3Jlc2V0X2RldmljZSh1cmItPmRldik7Ci0JaWYgKHJldCA8IDApCi0JCWRldl9lcnIoJnVyYi0+ZGV2LT5kZXYsICJkZXZpY2UgcmVzZXRcbiIpOwotCi0JdXNiX3VubG9ja19kZXZpY2UodXJiLT5kZXYpOwotCi0JcmV0dXJuIHJldDsKKwkvKgorCSAqIHVzYl9sb2NrX2RldmljZV9mb3JfcmVzZXQgY2F1c2VkIGEgZGVhZGxvY2s6IGl0IGNhdXNlcyB0aGUgZHJpdmVyCisJICogdG8gdW5iaW5kLiBJbiB0aGUgc2h1dGRvd24gdGhlIHJ4IHRocmVhZCBpcyBzaWduYWxsZWQgdG8gc2h1dCBkb3duCisJICogYnV0IHRoaXMgdGhyZWFkIGlzIHBlbmRpbmcgaW4gdGhlIHVzYl9sb2NrX2RldmljZV9mb3JfcmVzZXQuCisJICoKKwkgKiBJbnN0ZWFkIHF1ZXVlIHRoZSByZXNldC4KKwkgKgorCSAqIFVuZm9ydHVuYXRseSBhbiBleGlzdGluZyB1c2JpcCBjb25uZWN0aW9uIHdpbGwgYmUgZHJvcHBlZCBkdWUgdG8KKwkgKiBkcml2ZXIgdW5iaW5kaW5nLgorCSAqLworCXVzYl9xdWV1ZV9yZXNldF9kZXZpY2Uoc2Rldi0+aW50ZXJmYWNlKTsKKwlyZXR1cm4gMDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX3R4LmMgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvc3R1Yl90eC5jCmluZGV4IDU1MjNmMjUuLjY0YTUyYjI2ZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC9zdHViX3R4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3N0dWJfdHguYwpAQCAtMTcwLDcgKzE3MCw2IEBACiAJc3RydWN0IHN0dWJfcHJpdiAqcHJpdiwgKnRtcDsKIAogCXN0cnVjdCBtc2doZHIgbXNnOwotCXN0cnVjdCBrdmVjIGlvdlszXTsKIAlzaXplX3QgdHhzaXplOwogCiAJc2l6ZV90IHRvdGFsX3NpemUgPSAwOwpAQCAtMTgwLDI4ICsxNzksNzMgQEAKIAkJc3RydWN0IHVyYiAqdXJiID0gcHJpdi0+dXJiOwogCQlzdHJ1Y3QgdXNiaXBfaGVhZGVyIHBkdV9oZWFkZXI7CiAJCXZvaWQgKmlzb19idWZmZXIgPSBOVUxMOworCQlzdHJ1Y3Qga3ZlYyAqaW92ID0gTlVMTDsKKwkJaW50IGlvdm51bSA9IDA7CiAKIAkJdHhzaXplID0gMDsKIAkJbWVtc2V0KCZwZHVfaGVhZGVyLCAwLCBzaXplb2YocGR1X2hlYWRlcikpOwogCQltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwotCQltZW1zZXQoJmlvdiwgMCwgc2l6ZW9mKGlvdikpOwogCi0JCXVzYmlwX2RiZ19zdHViX3R4KCJzZXR1cCB0eGRhdGEgdXJiICVwXG4iLCB1cmIpOworCQlpZiAodXNiX3BpcGV0eXBlKHVyYi0+cGlwZSkgPT0gUElQRV9JU09DSFJPTk9VUykKKwkJCWlvdm51bSA9IDIgKyB1cmItPm51bWJlcl9vZl9wYWNrZXRzOworCQllbHNlCisJCQlpb3ZudW0gPSAyOwogCisJCWlvdiA9IGt6YWxsb2MoaW92bnVtICogc2l6ZW9mKHN0cnVjdCBrdmVjKSwgR0ZQX0tFUk5FTCk7CisKKwkJaWYgKCFpb3YpIHsKKwkJCXVzYmlwX2V2ZW50X2FkZCgmc2Rldi0+dWQsIFNERVZfRVZFTlRfRVJST1JfTUFMTE9DKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWlvdm51bSA9IDA7CiAKIAkJLyogMS4gc2V0dXAgdXNiaXBfaGVhZGVyICovCiAJCXNldHVwX3JldF9zdWJtaXRfcGR1KCZwZHVfaGVhZGVyLCB1cmIpOworCQl1c2JpcF9kYmdfc3R1Yl90eCgic2V0dXAgdHhkYXRhIHNlcW51bTogJWQgdXJiOiAlcFxuIiwKKwkJCQkJCXBkdV9oZWFkZXIuYmFzZS5zZXFudW0sIHVyYik7CisJCS8qdXNiaXBfZHVtcF9oZWFkZXIocGR1X2hlYWRlcik7Ki8KIAkJdXNiaXBfaGVhZGVyX2NvcnJlY3RfZW5kaWFuKCZwZHVfaGVhZGVyLCAxKTsKIAotCQlpb3ZbMF0uaW92X2Jhc2UgPSAmcGR1X2hlYWRlcjsKLQkJaW92WzBdLmlvdl9sZW4gID0gc2l6ZW9mKHBkdV9oZWFkZXIpOworCQlpb3ZbaW92bnVtXS5pb3ZfYmFzZSA9ICZwZHVfaGVhZGVyOworCQlpb3ZbaW92bnVtXS5pb3ZfbGVuICA9IHNpemVvZihwZHVfaGVhZGVyKTsKKwkJaW92bnVtKys7CiAJCXR4c2l6ZSArPSBzaXplb2YocGR1X2hlYWRlcik7CiAKIAkJLyogMi4gc2V0dXAgdHJhbnNmZXIgYnVmZmVyICovCi0JCWlmICh1c2JfcGlwZWluKHVyYi0+cGlwZSkgJiYgdXJiLT5hY3R1YWxfbGVuZ3RoID4gMCkgewotCQkJaW92WzFdLmlvdl9iYXNlID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7Ci0JCQlpb3ZbMV0uaW92X2xlbiAgPSB1cmItPmFjdHVhbF9sZW5ndGg7CisJCWlmICh1c2JfcGlwZWluKHVyYi0+cGlwZSkgJiYKKwkJCQl1c2JfcGlwZXR5cGUodXJiLT5waXBlKSAhPSBQSVBFX0lTT0NIUk9OT1VTICYmCisJCQkJCXVyYi0+YWN0dWFsX2xlbmd0aCA+IDApIHsKKwkJCWlvdltpb3ZudW1dLmlvdl9iYXNlID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CisJCQlpb3ZbaW92bnVtXS5pb3ZfbGVuICA9IHVyYi0+YWN0dWFsX2xlbmd0aDsKKwkJCWlvdm51bSsrOwogCQkJdHhzaXplICs9IHVyYi0+YWN0dWFsX2xlbmd0aDsKKwkJfSBlbHNlIGlmICh1c2JfcGlwZWluKHVyYi0+cGlwZSkgJiYKKwkJCQl1c2JfcGlwZXR5cGUodXJiLT5waXBlKSA9PSBQSVBFX0lTT0NIUk9OT1VTKSB7CisJCQkvKgorCQkJICogRm9yIGlzb2Nocm9ub3VzIHBhY2tldHM6IGFjdHVhbCBsZW5ndGggaXMgdGhlIHN1bSBvZgorCQkJICogdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIGluZGl2aWR1YWwsIHBhY2tldHMsIGJ1dCBhcworCQkJICogdGhlIHBhY2tldCBvZmZzZXRzIGFyZSBub3QgY2hhbmdlZCB0aGVyZSB3aWxsIGJlCisJCQkgKiBwYWRkaW5nIGJldHdlZW4gdGhlIHBhY2tldHMuIFRvIG9wdGltYWxseSB1c2UgdGhlCisJCQkgKiBiYW5kd2lkdGggdGhlIHBhZGRpbmcgaXMgbm90IHRyYW5zbWl0dGVkLgorCQkJICovCisKKwkJCWludCBpOworCQkJZm9yIChpID0gMDsgaSA8IHVyYi0+bnVtYmVyX29mX3BhY2tldHM7IGkrKykgeworCQkJCWlvdltpb3ZudW1dLmlvdl9iYXNlID0gdXJiLT50cmFuc2Zlcl9idWZmZXIgKyB1cmItPmlzb19mcmFtZV9kZXNjW2ldLm9mZnNldDsKKwkJCQlpb3ZbaW92bnVtXS5pb3ZfbGVuID0gdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5hY3R1YWxfbGVuZ3RoOworCQkJCWlvdm51bSsrOworCQkJCXR4c2l6ZSArPSB1cmItPmlzb19mcmFtZV9kZXNjW2ldLmFjdHVhbF9sZW5ndGg7CisJCQl9CisKKwkJCWlmICh0eHNpemUgIT0gc2l6ZW9mKHBkdV9oZWFkZXIpICsgdXJiLT5hY3R1YWxfbGVuZ3RoKSB7CisJCQkJZGV2X2Vycigmc2Rldi0+aW50ZXJmYWNlLT5kZXYsCisJCQkJCSJhY3R1YWwgbGVuZ3RoIG9mIHVyYiAoJWQpIGRvZXMgbm90IG1hdGNoIGlzbyBwYWNrZXQgc2l6ZXMgKCVkKVxuIiwKKwkJCQkJdXJiLT5hY3R1YWxfbGVuZ3RoLCB0eHNpemUtc2l6ZW9mKHBkdV9oZWFkZXIpKTsKKwkJCQlrZnJlZShpb3YpOworCQkJCXVzYmlwX2V2ZW50X2FkZCgmc2Rldi0+dWQsIFNERVZfRVZFTlRfRVJST1JfVENQKTsKKwkJCSAgIHJldHVybiAtMTsKKwkJCX0KIAkJfQogCiAJCS8qIDMuIHNldHVwIGlzb19wYWNrZXRfZGVzY3JpcHRvciAqLwpAQCAtMjEyLDMyICsyNTYsMzQgQEAKIAkJCWlmICghaXNvX2J1ZmZlcikgewogCQkJCXVzYmlwX2V2ZW50X2FkZCgmc2Rldi0+dWQsCiAJCQkJCQlTREVWX0VWRU5UX0VSUk9SX01BTExPQyk7CisJCQkJa2ZyZWUoaW92KTsKIAkJCQlyZXR1cm4gLTE7CiAJCQl9CiAKLQkJCWlvdlsyXS5pb3ZfYmFzZSA9IGlzb19idWZmZXI7Ci0JCQlpb3ZbMl0uaW92X2xlbiAgPSBsZW47CisJCQlpb3ZbaW92bnVtXS5pb3ZfYmFzZSA9IGlzb19idWZmZXI7CisJCQlpb3ZbaW92bnVtXS5pb3ZfbGVuICA9IGxlbjsKIAkJCXR4c2l6ZSArPSBsZW47CisJCQlpb3ZudW0rKzsKIAkJfQogCi0JCXJldCA9IGtlcm5lbF9zZW5kbXNnKHNkZXYtPnVkLnRjcF9zb2NrZXQsICZtc2csIGlvdiwKLQkJCQkgICAgIDMsIHR4c2l6ZSk7CisJCXJldCA9IGtlcm5lbF9zZW5kbXNnKHNkZXYtPnVkLnRjcF9zb2NrZXQsICZtc2csCisJCQkJCQlpb3YsICBpb3ZudW0sIHR4c2l6ZSk7CiAJCWlmIChyZXQgIT0gdHhzaXplKSB7CiAJCQlkZXZfZXJyKCZzZGV2LT5pbnRlcmZhY2UtPmRldiwKIAkJCQkic2VuZG1zZyBmYWlsZWQhLCByZXR2YWwgJWQgZm9yICV6ZFxuIiwKIAkJCQlyZXQsIHR4c2l6ZSk7CisJCQlrZnJlZShpb3YpOwogCQkJa2ZyZWUoaXNvX2J1ZmZlcik7CiAJCQl1c2JpcF9ldmVudF9hZGQoJnNkZXYtPnVkLCBTREVWX0VWRU5UX0VSUk9SX1RDUCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KIAorCQlrZnJlZShpb3YpOwogCQlrZnJlZShpc29fYnVmZmVyKTsKLQkJdXNiaXBfZGJnX3N0dWJfdHgoInNlbmQgdHhkYXRhXG4iKTsKIAogCQl0b3RhbF9zaXplICs9IHR4c2l6ZTsKIAl9CiAKLQogCXNwaW5fbG9ja19pcnFzYXZlKCZzZGV2LT5wcml2X2xvY2ssIGZsYWdzKTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwcml2LCB0bXAsICZzZGV2LT5wcml2X2ZyZWUsIGxpc3QpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uYwppbmRleCAzMzdhYmM0Li43YjFmZTQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdXNiaXBfY29tbW9uLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3VzYmlwX2NvbW1vbi5jCkBAIC0zMzMsMTAgKzMzMywxMSBAQAogCQl1c2JpcF91ZGJnKCJDTURfVU5MSU5LOiBzZXEgJXVcbiIsIHBkdS0+dS5jbWRfdW5saW5rLnNlcW51bSk7CiAJCWJyZWFrOwogCWNhc2UgVVNCSVBfUkVUX1NVQk1JVDoKLQkJdXNiaXBfdWRiZygiUkVUX1NVQk1JVDogc3QgJWQgYWwgJXUgc2YgJWQgZWMgJWRcbiIsCisJCXVzYmlwX3VkYmcoIlJFVF9TVUJNSVQ6IHN0ICVkIGFsICV1IHNmICVkICNwICVkIGVjICVkXG4iLAogCQkJCXBkdS0+dS5yZXRfc3VibWl0LnN0YXR1cywKIAkJCQlwZHUtPnUucmV0X3N1Ym1pdC5hY3R1YWxfbGVuZ3RoLAogCQkJCXBkdS0+dS5yZXRfc3VibWl0LnN0YXJ0X2ZyYW1lLAorCQkJCXBkdS0+dS5yZXRfc3VibWl0Lm51bWJlcl9vZl9wYWNrZXRzLAogCQkJCXBkdS0+dS5yZXRfc3VibWl0LmVycm9yX2NvdW50KTsKIAljYXNlIFVTQklQX1JFVF9VTkxJTks6CiAJCXVzYmlwX3VkYmcoIlJFVF9VTkxJTks6IHN0YXR1cyAlZFxuIiwgcGR1LT51LnJldF91bmxpbmsuc3RhdHVzKTsKQEAgLTUyMCw2ICs1MjEsNyBAQAogCQlycGR1LT5zdGF0dXMJCT0gdXJiLT5zdGF0dXM7CiAJCXJwZHUtPmFjdHVhbF9sZW5ndGgJPSB1cmItPmFjdHVhbF9sZW5ndGg7CiAJCXJwZHUtPnN0YXJ0X2ZyYW1lCT0gdXJiLT5zdGFydF9mcmFtZTsKKwkJcnBkdS0+bnVtYmVyX29mX3BhY2tldHMgPSB1cmItPm51bWJlcl9vZl9wYWNrZXRzOwogCQlycGR1LT5lcnJvcl9jb3VudAk9IHVyYi0+ZXJyb3JfY291bnQ7CiAJfSBlbHNlIHsKIAkJLyogdmhjaV9yeC5jICovCkBAIC01MjcsNiArNTI5LDcgQEAKIAkJdXJiLT5zdGF0dXMJCT0gcnBkdS0+c3RhdHVzOwogCQl1cmItPmFjdHVhbF9sZW5ndGgJPSBycGR1LT5hY3R1YWxfbGVuZ3RoOwogCQl1cmItPnN0YXJ0X2ZyYW1lCT0gcnBkdS0+c3RhcnRfZnJhbWU7CisJCXVyYi0+bnVtYmVyX29mX3BhY2tldHMgPSBycGR1LT5udW1iZXJfb2ZfcGFja2V0czsKIAkJdXJiLT5lcnJvcl9jb3VudAk9IHJwZHUtPmVycm9yX2NvdW50OwogCX0KIH0KQEAgLTU5NSwxMSArNTk4LDEzIEBACiAJCWNwdV90b19iZTMycygmcGR1LT5zdGF0dXMpOwogCQljcHVfdG9fYmUzMnMoJnBkdS0+YWN0dWFsX2xlbmd0aCk7CiAJCWNwdV90b19iZTMycygmcGR1LT5zdGFydF9mcmFtZSk7CisJCWNwdV90b19iZTMycygmcGR1LT5udW1iZXJfb2ZfcGFja2V0cyk7CiAJCWNwdV90b19iZTMycygmcGR1LT5lcnJvcl9jb3VudCk7CiAJfSBlbHNlIHsKIAkJYmUzMl90b19jcHVzKCZwZHUtPnN0YXR1cyk7CiAJCWJlMzJfdG9fY3B1cygmcGR1LT5hY3R1YWxfbGVuZ3RoKTsKIAkJYmUzMl90b19jcHVzKCZwZHUtPnN0YXJ0X2ZyYW1lKTsKKwkJY3B1X3RvX2JlMzJzKCZwZHUtPm51bWJlcl9vZl9wYWNrZXRzKTsKIAkJYmUzMl90b19jcHVzKCZwZHUtPmVycm9yX2NvdW50KTsKIAl9CiB9CkBAIC03MjUsNiArNzMwLDcgQEAKIAlpbnQgc2l6ZSA9IG5wICogc2l6ZW9mKCppc28pOwogCWludCBpOwogCWludCByZXQ7CisJaW50IHRvdGFsX2xlbmd0aCA9IDA7CiAKIAlpZiAoIXVzYl9waXBlaXNvYyh1cmItPnBpcGUpKQogCQlyZXR1cm4gMDsKQEAgLTc1NCwxOSArNzYwLDc1IEBACiAJCXJldHVybiAtRVBJUEU7CiAJfQogCisKIAlmb3IgKGkgPSAwOyBpIDwgbnA7IGkrKykgewogCQlpc28gPSBidWZmICsgKGkgKiBzaXplb2YoKmlzbykpOwogCiAJCXVzYmlwX2lzb19wYWtjZXRfY29ycmVjdF9lbmRpYW4oaXNvLCAwKTsKIAkJdXNiaXBfcGFja19pc28oaXNvLCAmdXJiLT5pc29fZnJhbWVfZGVzY1tpXSwgMCk7CisJCXRvdGFsX2xlbmd0aCArPSB1cmItPmlzb19mcmFtZV9kZXNjW2ldLmFjdHVhbF9sZW5ndGg7CiAJfQogCiAJa2ZyZWUoYnVmZik7CiAKKwlpZiAodG90YWxfbGVuZ3RoICE9IHVyYi0+YWN0dWFsX2xlbmd0aCkgeworCQlkZXZfZXJyKCZ1cmItPmRldi0+ZGV2LAorCQkgICJ0b3RhbCBsZW5ndGggb2YgaXNvIHBhY2tldHMgKCVkKSBub3QgZXF1YWwgdG8gYWN0dWFsIGxlbmd0aCBvZiBidWZmZXIgKCVkKVxuIiwKKwkJICB0b3RhbF9sZW5ndGgsIHVyYi0+YWN0dWFsX2xlbmd0aCk7CisKKwkJaWYgKHVkLT5zaWRlID09IFVTQklQX1NUVUIpCisJCQl1c2JpcF9ldmVudF9hZGQodWQsIFNERVZfRVZFTlRfRVJST1JfVENQKTsKKwkJZWxzZQorCQkJdXNiaXBfZXZlbnRfYWRkKHVkLCBWREVWX0VWRU5UX0VSUk9SX1RDUCk7CisKKwkJcmV0dXJuIC1FUElQRTsKKwl9CisKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTF9HUEwodXNiaXBfcmVjdl9pc28pOwogCisvKgorICogVGhpcyBmdW5jdGlvbnMgcmVzdG9yZXMgdGhlIHBhZGRpbmcgd2hpY2ggd2FzIHJlbW92ZWQgZm9yIG9wdGltaXppbmcKKyAqIHRoZSBiYW5kd2lkdGggZHVyaW5nIHRyYW5zZmVyIG92ZXIgdGNwL2lwCisgKgorICogYnVmZmVyIGFuZCBpc28gcGFja2V0cyBuZWVkIHRvIGJlIHN0b3JlZCBhbmQgYmUgaW4gcHJvcGVwZXIgZW5kaWFuIGluIHVyYgorICogYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbgorICovCitpbnQgdXNiaXBfcGFkX2lzbyhzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCwgc3RydWN0IHVyYiAqdXJiKQoreworCWludCBucCA9IHVyYi0+bnVtYmVyX29mX3BhY2tldHM7CisJaW50IGk7CisJaW50IHJldDsKKwlpbnQgYWN0dWFsb2Zmc2V0ID0gdXJiLT5hY3R1YWxfbGVuZ3RoOworCisJaWYgKCF1c2JfcGlwZWlzb2ModXJiLT5waXBlKSkKKwkJcmV0dXJuIDA7CisKKwkvKiBpZiBubyBwYWNrZXRzIG9yIGxlbmd0aCBvZiBkYXRhIGlzIDAsIHRoZW4gbm90aGluZyB0byB1bnBhY2sgKi8KKwlpZiAobnAgPT0gMCB8fCB1cmItPmFjdHVhbF9sZW5ndGggPT0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIGlmIGFjdHVhbF9sZW5ndGggaXMgdHJhbnNmZXJfYnVmZmVyX2xlbmd0aCB0aGVuIG5vIHBhZGRpbmcgaXMKKwkgKiBwcmVzZW50LgorCSovCisJaWYgKHVyYi0+YWN0dWFsX2xlbmd0aCA9PSB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBsb29wIG92ZXIgYWxsIHBhY2tldHMgZnJvbSBsYXN0IHRvIGZpcnN0ICh0byBwcmV2ZW50IG92ZXJ3cml0dGluZworCSAqIG1lbW9yeSB3aGVuIHBhZGRpbmcpIGFuZCBtb3ZlIHRoZW0gaW50byB0aGUgcHJvcGVyIHBsYWNlCisJICovCisJZm9yIChpID0gbnAtMTsgaSA+IDA7IGktLSkgeworCQlhY3R1YWxvZmZzZXQgLT0gdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5hY3R1YWxfbGVuZ3RoOworCQltZW1tb3ZlKHVyYi0+dHJhbnNmZXJfYnVmZmVyICsgdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5vZmZzZXQsCisJCQkJICB1cmItPnRyYW5zZmVyX2J1ZmZlciArIGFjdHVhbG9mZnNldCwKKwkJCQkgIHVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0uYWN0dWFsX2xlbmd0aCk7CisJfQorCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1c2JpcF9wYWRfaXNvKTsKIAogLyogc29tZSBtZW1iZXJzIG9mIHVyYiBtdXN0IGJlIHN1YnN0aXR1dGVkIGJlZm9yZS4gKi8KIGludCB1c2JpcF9yZWN2X3hidWZmKHN0cnVjdCB1c2JpcF9kZXZpY2UgKnVkLCBzdHJ1Y3QgdXJiICp1cmIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdXNiaXBfY29tbW9uLmggYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdXNiaXBfY29tbW9uLmgKaW5kZXggOWY4MDljMy4uYzc2N2Y1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3VzYmlwX2NvbW1vbi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC91c2JpcF9jb21tb24uaApAQCAtMzc5LDYgKzM3OSw4IEBACiBpbnQgdXNiaXBfcmVjdl94YnVmZihzdHJ1Y3QgdXNiaXBfZGV2aWNlICp1ZCwgc3RydWN0IHVyYiAqdXJiKTsKIC8qIHNvbWUgbWVtYmVycyBvZiB1cmIgbXVzdCBiZSBzdWJzdGl0dXRlZCBiZWZvcmUuICovCiBpbnQgdXNiaXBfcmVjdl9pc28oc3RydWN0IHVzYmlwX2RldmljZSAqdWQsIHN0cnVjdCB1cmIgKnVyYik7CisvKiBzb21lIG1lbWJlcnMgb2YgdXJiIG11c3QgYmUgc3Vic3RpdHV0ZWQgYmVmb3JlLiAqLworaW50IHVzYmlwX3BhZF9pc28oc3RydWN0IHVzYmlwX2RldmljZSAqdWQsIHN0cnVjdCB1cmIgKnVyYik7CiB2b2lkICp1c2JpcF9hbGxvY19pc29fZGVzY19wZHUoc3RydWN0IHVyYiAqdXJiLCBzc2l6ZV90ICpidWZmbGVuKTsKIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9oY2QuYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX2hjZC5jCmluZGV4IGUyMzQ4NDkuLjBmMDJhNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX2hjZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX2hjZC5jCkBAIC0xOTQsNyArMTk0LDcgQEAKICAqCiAgKiBTbywgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBvcnRzIGlzIDMxICggcG9ydCAwIHRvIHBvcnQgMzApID8KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBhY3R1YWwgdHJhbnNmZXJlZCBsZW5ndGggaW4gYnl0ZS4gSWYgbm90aGluZyBoYXMKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGFjdHVhbCB0cmFuc2ZlcnJlZCBsZW5ndGggaW4gYnl0ZS4gSWYgbm90aGluZyBoYXMKICAqIGJlZW4gY2hhbmdlZCwgcmV0dXJuIDAuIEluIHRoZSBjYXNlIHRoYXQgdGhlIG51bWJlciBvZiBwb3J0cyBpcyBsZXNzIHRoYW4gb3IKICAqIGVxdWFsIHRvIDYgKFZIQ0lfTlBPUlRTPT03KSwgcmV0dXJuIDEuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfcnguYyBiL2RyaXZlcnMvc3RhZ2luZy91c2JpcC92aGNpX3J4LmMKaW5kZXggMDliZjIzNS4uMmZmYzk2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfcnguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9yeC5jCkBAIC0xMDAsNiArMTAwLDkgQEAKIAlpZiAodXNiaXBfcmVjdl9pc28odWQsIHVyYikgPCAwKQogCQlyZXR1cm47CiAKKwkvKiByZXN0b3JlIHRoZSBwYWRkaW5nIGluIGlzbyBwYWNrZXRzICovCisJaWYgKHVzYmlwX3BhZF9pc28odWQsIHVyYikgPCAwKQorCQlyZXR1cm47CiAKIAlpZiAodXNiaXBfZGJnX2ZsYWdfdmhjaV9yeCkKIAkJdXNiaXBfZHVtcF91cmIodXJiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYwppbmRleCBkNGE0OGM0Li5hNDAwNzI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX2NhOTFjeDQyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV9jYTkxY3g0Mi5jCkBAIC02MjEsNyArNjIxLDcgQEAKIAogCS8qCiAJICogTGV0J3MgYWxsb2NhdGUgdGhlIHJlc291cmNlIGhlcmUgcmF0aGVyIHRoYW4gZnVydGhlciB1cCB0aGUgc3RhY2sgYXMKLQkgKiBpdCBhdm9pZHMgcHVzaGluZyBsb2FkcyBvZiBidXMgZGVwZW5kYW50IHN0dWZmIHVwIHRoZSBzdGFjaworCSAqIGl0IGF2b2lkcyBwdXNoaW5nIGxvYWRzIG9mIGJ1cyBkZXBlbmRlbnQgc3R1ZmYgdXAgdGhlIHN0YWNrCiAJICovCiAJcmV0dmFsID0gY2E5MWN4NDJfYWxsb2NfcmVzb3VyY2UoaW1hZ2UsIHNpemUpOwogCWlmIChyZXR2YWwpIHsKQEAgLTEwNTIsNyArMTA1Miw3IEBACiAJCXBjaV9hdHRyID0gZGVzdC0+cHJpdmF0ZTsKIAl9CiAKLQkvKiBDaGVjayB3ZSBjYW4gZG8gZnVsbGZpbGwgcmVxdWlyZWQgYXR0cmlidXRlcyAqLworCS8qIENoZWNrIHdlIGNhbiBkbyBmdWxmaWxsIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKi8KIAlpZiAoKHZtZV9hdHRyLT5hc3BhY2UgJiB+KFZNRV9BMTYgfCBWTUVfQTI0IHwgVk1FX0EzMiB8IFZNRV9VU0VSMSB8CiAJCVZNRV9VU0VSMikpICE9IDApIHsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAKIAkJZ290byBlcnJfY3ljbGU7CiAJfQogCi0JLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBmdWxsZmlsbCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uICovCisJLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBmdWxmaWxsIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gKi8KIAlpZiAoISgoKHNyYy0+dHlwZSA9PSBWTUVfRE1BX1BDSSkgJiYgKGRlc3QtPnR5cGUgPT0gVk1FX0RNQV9WTUUpKSB8fAogCQkoKHNyYy0+dHlwZSA9PSBWTUVfRE1BX1ZNRSkgJiYgKGRlc3QtPnR5cGUgPT0gVk1FX0RNQV9QQ0kpKSkpIHsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguYyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmMKaW5kZXggYjAwYTUzZS4uMTA2YWE5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX3RzaTE0OC5jCkBAIC05MjgsNyArOTI4LDcgQEAKIAlzcGluX2xvY2soJmltYWdlLT5sb2NrKTsKIAogCS8qIExldCdzIGFsbG9jYXRlIHRoZSByZXNvdXJjZSBoZXJlIHJhdGhlciB0aGFuIGZ1cnRoZXIgdXAgdGhlIHN0YWNrIGFzCi0JICogaXQgYXZvaWRzIHB1c2hpbmcgbG9hZHMgb2YgYnVzIGRlcGVuZGFudCBzdHVmZiB1cCB0aGUgc3RhY2suIElmIHNpemUKKwkgKiBpdCBhdm9pZHMgcHVzaGluZyBsb2FkcyBvZiBidXMgZGVwZW5kZW50IHN0dWZmIHVwIHRoZSBzdGFjay4gSWYgc2l6ZQogCSAqIGlzIHplcm8sIGFueSBleGlzdGluZyByZXNvdXJjZSB3aWxsIGJlIGZyZWVkLgogCSAqLwogCXJldHZhbCA9IHRzaTE0OF9hbGxvY19yZXNvdXJjZShpbWFnZSwgc2l6ZSk7CkBAIC0xMzIwLDcgKzEzMjAsNyBAQAogCiAJLyoKIAkgKiBXcml0ZXMgYXJlIHBvc3RlZC4gV2UgbmVlZCB0byBkbyBhIHJlYWQgb24gdGhlIFZNRSBidXMgdG8gZmx1c2ggb3V0Ci0JICogYWxsIG9mIHRoZSB3cml0ZXMgYmVmb3JlIHdlIGNoZWNrIGZvciBlcnJvcnMuIFdlIGNhbid0IGd1YXJlbnRlZQorCSAqIGFsbCBvZiB0aGUgd3JpdGVzIGJlZm9yZSB3ZSBjaGVjayBmb3IgZXJyb3JzLiBXZSBjYW4ndCBndWFyYW50ZWUKIAkgKiB0aGF0IHJlYWRpbmcgdGhlIGRhdGEgd2UgaGF2ZSBqdXN0IHdyaXR0ZW4gaXMgc2FmZS4gSXQgaXMgYmVsaWV2ZWQKIAkgKiB0aGF0IHRoZXJlIGlzbid0IGFueSByZWFkLCB3cml0ZSByZS1vcmRlcmluZywgc28gd2UgY2FuIHJlYWQgYW55CiAJICogbG9jYXRpb24gaW4gVk1FIHNwYWNlLCBzbyBsZXRzIHJlYWQgdGhlIERldmljZSBJRCBmcm9tIHRoZSB0c2kxNDgncwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguaCBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmgKaW5kZXggOWY5N2ZhOC4uYTNhYzJmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX3RzaTE0OC5oCkBAIC0yMTIsNyArMjEyLDcgQEAKICNkZWZpbmUgVFNJMTQ4X0xDU1JfT0ZGU0VUX09UQVQJCTB4MUMKIAogLyoKLSAqIFZNRWJ1cyBpbnRlcnVwdCBhY2sKKyAqIFZNRWJ1cyBpbnRlcnJ1cHQgYWNrCiAgKiBvZmZzZXQgIDIwMAogICovCiAjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQUNLMQkweDIwNApAQCAtNjEzLDcgKzYxMyw3IEBACiAvKgogICogIFBDSS1YIFN0YXR1cyBSZWdpc3RlciAoQ1JHICskMDU0KQogICovCi0jZGVmaW5lIFRTSTE0OF9QQ0ZTX1BDSVhTVEFUX1JTQ0VNICAgICAoMTw8MjkpCS8qIFJlY2lldmVkIFNwbGl0IENvbXAgRXJyb3IgKi8KKyNkZWZpbmUgVFNJMTQ4X1BDRlNfUENJWFNUQVRfUlNDRU0gICAgICgxPDwyOSkJLyogUmVjZWl2ZWQgU3BsaXQgQ29tcCBFcnJvciAqLwogI2RlZmluZSBUU0kxNDhfUENGU19QQ0lYU1RBVF9ETUNSU19NICAgKDc8PDI2KQkvKiBtYXggQ3VtdWxhdGl2ZSBSZWFkIFNpemUgKi8KICNkZWZpbmUgVFNJMTQ4X1BDRlNfUENJWFNUQVRfRE1PU1RfTSAgICg3PDwyMykJLyogbWF4IG91dHN0YW5kaW5nIFNwbGl0IFRyYW5zCiAJCQkJCQkgKi8KQEAgLTk4Miw4ICs5ODIsOCBAQAogI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0NOVFNfSVJRMSAgICAgKDI8PDIyKQkvKiBJUlExIHRvIENudHIgKi8KICNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9DTlRTX0lSUTIgICAgICgzPDwyMikJLyogSVJRMiB0byBDbnRyICovCiAKLSNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9FREdJU19NICAgICAgICgzPDwyMCkJLyogRWRnZSBpbnRlcnVwdCBNQVNLICovCi0jZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfRElTICAgICAoMTw8MjApCS8qIEVkZ2UgaW50ZXJ1cHQgRGlzYWJsZSAqLworI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0VER0lTX00gICAgICAgKDM8PDIwKQkvKiBFZGdlIGludGVycnVwdCBNQVNLICovCisjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfRElTICAgICAoMTw8MjApCS8qIEVkZ2UgaW50ZXJydXB0IERpc2FibGUgKi8KICNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9FREdJU19JUlExICAgICgyPDwyMCkJLyogSVJRMSB0byBFZGdlICovCiAjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfSVJRMiAgICAoMzw8MjApCS8qIElSUTIgdG8gRWRnZSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdm1lL3ZtZV9hcGkudHh0IGIvZHJpdmVycy9zdGFnaW5nL3ZtZS92bWVfYXBpLnR4dAppbmRleCBhOTEwYTBjLi40OTEwZTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdm1lL3ZtZV9hcGkudHh0CisrKyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvdm1lX2FwaS50eHQKQEAgLTYsNyArNiw3IEBACiAKIEFzIHdpdGggb3RoZXIgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgVk1FIGRldmljZSBkcml2ZXJzIHJlZ2lzdGVyCiB3aXRoIHRoZSBWTUUgc3Vic3lzdGVtLCB0eXBpY2FsbHkgY2FsbGVkIGZyb20gdGhlIGRldmljZXMgaW5pdCByb3V0aW5lLiAgVGhpcyBpcwotYWNoaWV2ZWQgdmlhIGEgY2FsbCB0byB0aGUgZm9sbHdvaW5nIGZ1bmN0aW9uOgorYWNoaWV2ZWQgdmlhIGEgY2FsbCB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgogCiAJaW50IHZtZV9yZWdpc3Rlcl9kcml2ZXIgKHN0cnVjdCB2bWVfZHJpdmVyICpkcml2ZXIpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAKID09PT09PT09PT09PT09CiAKIE1hc3RlciB3aW5kb3dzIHByb3ZpZGUgYWNjZXNzIGZyb20gdGhlIGxvY2FsIHByb2Nlc3NvcltzXSBvdXQgb250byB0aGUgVk1FIGJ1cy4KLVRoZSBudW1iZXIgb2Ygd2luZG93cyBhdmFpbGFibGUgYW5kIHRoZSBhdmFpbGFibGUgYWNjZXNzIG1vZGVzIGlzIGRlcGVuZGFudCBvbgorVGhlIG51bWJlciBvZiB3aW5kb3dzIGF2YWlsYWJsZSBhbmQgdGhlIGF2YWlsYWJsZSBhY2Nlc3MgbW9kZXMgaXMgZGVwZW5kZW50IG9uCiB0aGUgdW5kZXJseWluZyBjaGlwc2V0LiBBIHdpbmRvdyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGl0IGNhbiBiZSB1c2VkLgogCiAKQEAgLTE2Myw3ICsxNjMsNyBAQAogCiBTbGF2ZSB3aW5kb3dzIHByb3ZpZGUgZGV2aWNlcyBvbiB0aGUgVk1FIGJ1cyBhY2Nlc3MgaW50byBtYXBwZWQgcG9ydGlvbnMgb2YgdGhlCiBsb2NhbCBtZW1vcnkuIFRoZSBudW1iZXIgb2Ygd2luZG93cyBhdmFpbGFibGUgYW5kIHRoZSBhY2Nlc3MgbW9kZXMgdGhhdCBjYW4gYmUKLXVzZWQgaXMgZGVwZW5kYW50IG9uIHRoZSB1bmRlcmx5aW5nIGNoaXBzZXQuIEEgd2luZG93IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKK3VzZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB1bmRlcmx5aW5nIGNoaXBzZXQuIEEgd2luZG93IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKIGl0IGNhbiBiZSB1c2VkLgogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvS2NvbmZpZwppbmRleCAwNjFlNzMwLi5jM2JhNjkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L0tjb25maWcKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9LY29uZmlnCkBAIC0xLDYgKzEsNiBAQAogY29uZmlnIFZUNjY1NQogICAgdHJpc3RhdGUgIlZJQSBUZWNobm9sb2dpZXMgVlQ2NjU1IHN1cHBvcnQiCi0gICBkZXBlbmRzIG9uIFBDSSAmJiBXTEFOCisgICBkZXBlbmRzIG9uIFBDSSAmJiBXTEFOICYmIG0KICAgIHNlbGVjdCBXSVJFTEVTU19FWFQKICAgIHNlbGVjdCBXRVhUX1BSSVYKICAgIC0tLWhlbHAtLS0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvY2FyZC5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9jYXJkLmMKaW5kZXggOTUxYTNhOC4uMjcyMWUwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9jYXJkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9jYXJkLmMKQEAgLTExODYsNyArMTE4Niw3IEBACiAgICAgICAgICAgICB3RHVyYXRpb24gKz0gMTsgLy8gMSBUVSBmb3IgY2hhbm5lbCBzd2l0Y2hpbmcKIAogICAgICAgICAgICAgaWYgKChMT0RXT1JEKHF3U3RhcnRUU0YpID09IDApICYmIChISURXT1JEKHF3U3RhcnRUU0YpID09IDApKSB7Ci0gICAgICAgICAgICAgICAgLy8gc3RhcnQgaW1lZGlhdGVseSBieSBzZXR0aW5nIHN0YXJ0IFRTRiA9PSBjdXJyZW50IFRTRiArIDIgVFUKKyAgICAgICAgICAgICAgICAvLyBzdGFydCBpbW1lZGlhdGVseSBieSBzZXR0aW5nIHN0YXJ0IFRTRiA9PSBjdXJyZW50IFRTRiArIDIgVFUKICAgICAgICAgICAgICAgICBMT0RXT1JEKHF3U3RhcnRUU0YpID0gTE9EV09SRChxd0N1cnJUU0YpICsgMjA0ODsKICAgICAgICAgICAgICAgICBISURXT1JEKHF3U3RhcnRUU0YpID0gSElEV09SRChxd0N1cnJUU0YpOwogICAgICAgICAgICAgICAgIGlmIChMT0RXT1JEKHF3Q3VyclRTRikgPiBMT0RXT1JEKHF3U3RhcnRUU0YpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L2RldmljZV9tYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L2RldmljZV9tYWluLmMKaW5kZXggZWZhZjE5Yi4uYWQzOWM4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9kZXZpY2VfbWFpbi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvZGV2aWNlX21haW4uYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAvKiBJUF9ieXRlX2FsaWduW10gaXMgdXNlZCBmb3IgSVAgaGVhZGVyIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkCiAgICAwOiBpbmRpY2F0ZSB0aGUgSVAgaGVhZGVyIHdvbid0IGJlIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkLihEZWZhdWx0KSAuCiAgICAxOiBpbmRpY2F0ZSB0aGUgSVAgaGVhZGVyIHdpbGwgYmUgdW5zaWduZWQgbG9uZyBieXRlIGFsaWduZWQuCi0gICAgICBJbiBzb21lIGVudmlyb21lbnQsIHRoZSBJUCBoZWFkZXIgc2hvdWxkIGJlIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkLAorICAgICAgSW4gc29tZSBlbnZpcm9ubWVudCwgdGhlIElQIGhlYWRlciBzaG91bGQgYmUgdW5zaWduZWQgbG9uZyBieXRlIGFsaWduZWQsCiAgICAgICBvciB0aGUgcGFja2V0IHdpbGwgYmUgZHJvcGVkIHdoZW4gd2UgcmVjZWl2ZSBpdC4gKGVnOiBJUFZTKQogKi8KIERFVklDRV9QQVJBTShJUF9ieXRlX2FsaWduLCJFbmFibGUgSVAgaGVhZGVyIGR3b3JkIGFsaWduZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93Y21kLmMKaW5kZXggYWJkNjc0NS4uYzMwMTcwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93Y21kLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93Y21kLmMKQEAgLTU4Nyw3ICs1ODcsNyBAQAogICAgICAgICAgICAgaWYgKChwTWdtdC0+ZUN1cnJNb2RlID09IFdNQUNfTU9ERV9FU1NfU1RBKSAmJiAocE1nbXQtPmVDdXJyU3RhdGUgPT0gV01BQ19TVEFURV9KT0lOVEVEKSkgewogCiAJCS8vIENhbGwgbWdyIHRvIGJlZ2luIHRoZSBkZWF1dGhlbnRpY2F0aW9uCi0gICAgICAgICAgICAgICAgLy8gcmVhc29uID0gKDMpIGJlYWN1c2Ugc3RhIGhhcyBsZWZ0IEVTUworICAgICAgICAgICAgICAgIC8vIHJlYXNvbiA9ICgzKSBiZWNhdXNlIHN0YSBoYXMgbGVmdCBFU1MKICAgICAgICAgICAgICAgICBpZiAocE1nbXQtPmVDdXJyU3RhdGU+PSBXTUFDX1NUQVRFX0FVVEgpIHsKICAgICAgICAgICAgICAgICAgICAgdk1nckRlQXV0aGVuQmVnaW5TdGEoKHZvaWQgKilwRGV2aWNlLCBwTWdtdCwgcE1nbXQtPmFieUN1cnJCU1NJRCwgKDMpLCAmU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L3dtZ3IuaCBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd21nci5oCmluZGV4IDE0MWU4MGIuLmUzYWU1NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd21nci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd21nci5oCkBAIC0yMjAsNyArMjIwLDcgQEAKICovCiAKIAotLy8gVHggTWFuYWdtZW50IFBhY2tldCBkZXNjcmlwdG9yCisvLyBUeCBNYW5hZ2VtZW50IFBhY2tldCBkZXNjcmlwdG9yCiB0eXBlZGVmIHN0cnVjdCB0YWdTVHhNZ210UGFja2V0IHsKIAogICAgIFBVV0xBTl84MDIxMUhEUiAgICAgcDgwMjExSGVhZGVyOwpAQCAtMjMwLDcgKzIzMCw3IEBACiB9IFNUeE1nbXRQYWNrZXQsICpQU1R4TWdtdFBhY2tldDsKIAogCi0vLyBSeCBNYW5hZ21lbnQgUGFja2V0IGRlc2NyaXB0b3IKKy8vIFJ4IE1hbmFnZW1lbnQgUGFja2V0IGRlc2NyaXB0b3IKIHR5cGVkZWYgc3RydWN0IHRhZ1NSeE1nbXRQYWNrZXQgewogCiAgICAgUFVXTEFOXzgwMjExSERSICAgICBwODAyMTFIZWFkZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L0tjb25maWcKaW5kZXggYTQ0MWJhNS4uZjg5YWIyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni9LY29uZmlnCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvS2NvbmZpZwpAQCAtMSw2ICsxLDYgQEAKIGNvbmZpZyBWVDY2NTYKIAl0cmlzdGF0ZSAiVklBIFRlY2hub2xvZ2llcyBWVDY2NTYgc3VwcG9ydCIKLQlkZXBlbmRzIG9uIFVTQiAmJiBXTEFOCisJZGVwZW5kcyBvbiBVU0IgJiYgV0xBTiAmJiBtCiAJc2VsZWN0IFdJUkVMRVNTX0VYVAogCXNlbGVjdCBXRVhUX1BSSVYKIAlzZWxlY3QgRldfTE9BREVSCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3J4dHguYyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvcnh0eC5jCmluZGV4IDhmMTg1NzguLjUxODVkNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvcnh0eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvcnh0eC5jCkBAIC0xOTM4LDcgKzE5MzgsNyBAQAogICogIE91dDoKICAqICAgICAgbm9uZQogICoKLSAqIFJldHVybiBWYWx1ZTogQ01EX1NUQVRVU19QRU5ESU5HIGlmIE1BQyBUeCByZXNvdXJjZSBhdmFsaWFibGU7IG90aGVyd2lzZSBGQUxTRQorICogUmV0dXJuIFZhbHVlOiBDTURfU1RBVFVTX1BFTkRJTkcgaWYgTUFDIFR4IHJlc291cmNlIGF2YWlsYWJsZTsgb3RoZXJ3aXNlIEZBTFNFCiAgKgogLSovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvd2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93Y21kLmMKaW5kZXggYjgzYjY2MC4uMDE5ZmI1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93Y21kLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93Y21kLmMKQEAgLTQyMSw3ICs0MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICBwTWdtdC0+ZVNjYW5TdGF0ZSA9IFdNQUNfSVNfU0NBTk5JTkc7CiAgICAgICAgICAgICAgICAgICAgIHBEZXZpY2UtPmJ5U2NhbkJCVHlwZSA9IHBEZXZpY2UtPmJ5QkJUeXBlOyAgLy9sdWNhcwogICAgICAgICAgICAgICAgICAgICBwRGV2aWNlLT5iU3RvcERhdGFQa3QgPSBUUlVFOwotICAgICAgICAgICAgICAgICAgICAvLyBUdXJuIG9mZiBSQ1JfQlNTSUQgZmlsdGVyIGV2ZXJ5dGltZQorICAgICAgICAgICAgICAgICAgICAvLyBUdXJuIG9mZiBSQ1JfQlNTSUQgZmlsdGVyIGV2ZXJ5IHRpbWUKICAgICAgICAgICAgICAgICAgICAgTUFDdlJlZ0JpdHNPZmYocERldmljZSwgTUFDX1JFR19SQ1IsIFJDUl9CU1NJRCk7CiAgICAgICAgICAgICAgICAgICAgIHBEZXZpY2UtPmJ5UnhNb2RlICY9IH5SQ1JfQlNTSUQ7CiAKQEAgLTYwNCw3ICs2MDQsNyBAQAogICAgICAgICAgICAgLy8gaWYgSW5mcmEgbW9kZQogICAgICAgICAgICAgaWYgKChwTWdtdC0+ZUN1cnJNb2RlID09IFdNQUNfTU9ERV9FU1NfU1RBKSAmJiAocE1nbXQtPmVDdXJyU3RhdGUgPT0gV01BQ19TVEFURV9KT0lOVEVEKSkgewogICAgICAgICAgICAgICAgIC8vIENhbGwgbWdyIHRvIGJlZ2luIHRoZSBkZWF1dGhlbnRpY2F0aW9uCi0gICAgICAgICAgICAgICAgLy8gcmVhc29uID0gKDMpIGJlYWN1c2Ugc3RhIGhhcyBsZWZ0IEVTUworICAgICAgICAgICAgICAgIC8vIHJlYXNvbiA9ICgzKSBiZWNhdXNlIHN0YSBoYXMgbGVmdCBFU1MKIAkgICAgICBpZiAocE1nbXQtPmVDdXJyU3RhdGUgPj0gV01BQ19TVEFURV9BVVRIKSB7CiAJCXZNZ3JEZUF1dGhlbkJlZ2luU3RhKCh2b2lkICopcERldmljZSwKIAkJCQkgICAgIHBNZ210LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93bWdyLmggYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3dtZ3IuaAppbmRleCA1OTRmM2E4Li4xM2RmYjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3dtZ3IuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3dtZ3IuaApAQCAtMjE4LDcgKzIxOCw3IEBACiAKIAogCi0vLyBUeCBNYW5hZ21lbnQgUGFja2V0IGRlc2NyaXB0b3IKKy8vIFR4IE1hbmFnZW1lbnQgUGFja2V0IGRlc2NyaXB0b3IKIHR5cGVkZWYgc3RydWN0IHRhZ1NUeE1nbXRQYWNrZXQgewogCiAgICAgUFVXTEFOXzgwMjExSERSICAgICBwODAyMTFIZWFkZXI7CkBAIC0yMjgsNyArMjI4LDcgQEAKIH0gU1R4TWdtdFBhY2tldCwgKlBTVHhNZ210UGFja2V0OwogCiAKLS8vIFJ4IE1hbmFnbWVudCBQYWNrZXQgZGVzY3JpcHRvcgorLy8gUnggTWFuYWdlbWVudCBQYWNrZXQgZGVzY3JpcHRvcgogdHlwZWRlZiBzdHJ1Y3QgdGFnU1J4TWdtdFBhY2tldCB7CiAKICAgICBQVVdMQU5fODAyMTFIRFIgICAgIHA4MDIxMUhlYWRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzZG1hLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2RtYS5jCmluZGV4IDE2YjhlYzEuLmM0NjFkNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzZG1hLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNkbWEuYwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAKIAkvKgogCSAqIGlmIHRoZSBkYXRhIHJlY2VpdmVkIGV4Y2VlZHMgdGhlIHNpemUgb2YgdGhlIERNQSBidWZmZXIsCiAJICogY2xpcCB0aGUgZGF0YSB0byB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiAgdGhpcyBjYW4gbGVhZAotCSAqIHRvIGxvb3Npbmcgc29tZSBkYXRhLCBidXQgaXMgbm90IGRpZmZlcmVudCB0aGFuIGRvaW5nCisJICogdG8gbG9zaW5nIHNvbWUgZGF0YSwgYnV0IGlzIG5vdCBkaWZmZXJlbnQgdGhhbiBkb2luZwogCSAqIG5vbi1wYWNrZXQgcmVhZHMgb24gdGhlIG90aGVyIGVuZHBvaW50cy4KIAkgKi8KIAlpZiAoZHNpemUgPiBkbWFfcC0+c2l6ZSAtIGRtYV9wLT5vZmZzZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xlcDJwZXAuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbGVwMnBlcC5jCmluZGV4IDYwYjZmMzUuLjc2ODIxZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbGVwMnBlcC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbGVwMnBlcC5jCkBAIC0xMjYsNyArMTI2LDcgQEAKIAljeV9hc19waHlzaWNhbF9lbmRwb2ludF9zdGF0ZSBkZXNpcmVkOwogCiAJLyoKLQkgKiBub3RlLCB0aGVyZSBpcyBubyBlcnJvciBjaGVja2luZyBoZXJlIGJlY3Vhc2UKKwkgKiBub3RlLCB0aGVyZSBpcyBubyBlcnJvciBjaGVja2luZyBoZXJlIGJlY2F1c2UKIAkgKiBJU08gZXJyb3IgY2hlY2tpbmcgaGFwcGVucyB3aGVuIHRoZSBBUEkgaXMgY2FsbGVkLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xvd2xldmVsLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xvd2xldmVsLmMKaW5kZXggZDQzZGQ4NS4uOTZhODZkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNsb3dsZXZlbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbG93bGV2ZWwuYwpAQCAtNDMyLDcgKzQzMiw3IEBACiAqIGlzIHJlY2VpdmVkLiAgV2hlbiBhIGNvbXBsZXRlIHJlcXVlc3QgaXMgcmVjZWl2ZWQsIHRoZSBjYWxsYmFjawogKiBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdHMgb24gdGhhdCBjb250ZXh0IGlzIGNhbGxlZC4gIFdoZW4gYSBjb21wbGV0ZQogKiByZXNwb25zZSBpcyByZWNldmllZCwgdGhlIGNhbGxiYWNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdCB0aGF0Ci0qIGdlbmVyYXRlZCB0aGUgcmVwb25zZSBpcyBjYWxsZWQuCisqIGdlbmVyYXRlZCB0aGUgcmVzcG9uc2UgaXMgY2FsbGVkLgogKi8KIHZvaWQKIGN5X2FzX21haWxfYm94X2ludGVycnVwdF9oYW5kbGVyKGN5X2FzX2RldmljZSAqZGV2X3ApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc21pc2MuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbWlzYy5jCmluZGV4IDc4NTI0MTAuLjQ1NjRmYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbWlzYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbWlzYy5jCkBAIC00MjgsNyArNDI4LDcgQEAKIAkJCQlpZiAodiAmIENZX0FTX01FTV9QMF9WTV9TRVRfQ0ZHTU9ERSkKIAkJCQkJY3lfYXNfaGFsX3ByaW50X21lc3NhZ2UoCiAJCQkJCSJpbml0aWFsaXphdGlvbiBtZXNzYWdlICIKLQkJCQkJInJlY2lldmVkLCBidXQgY29uZmlnIGJpdCAiCisJCQkJCSJyZWNlaXZlZCwgYnV0IGNvbmZpZyBiaXQgIgogCQkJCQkic3RpbGwgc2V0XG4iKTsKIAogCQkJCXYgPSBjeV9hc19oYWxfcmVhZF9yZWdpc3RlcihkZXZfcC0+dGFnLApAQCAtNDM2LDcgKzQzNiw3IEBACiAJCQkJaWYgKCh2ICYgQ1lfQVNfTUVNX1JTVF9SU1RDTVBUKSA9PSAwKQogCQkJCQljeV9hc19oYWxfcHJpbnRfbWVzc2FnZSgKIAkJCQkJImluaXRpYWxpemF0aW9uIG1lc3NhZ2UgIgotCQkJCQkicmVjaWV2ZWQsIGJ1dCByZXNldCBjb21wbGV0ZSAiCisJCQkJCSJyZWNlaXZlZCwgYnV0IHJlc2V0IGNvbXBsZXRlICIKIAkJCQkJImJpdCBzdGlsbCBub3Qgc2V0XG4iKTsKIAkJCX0KIAkJCWJyZWFrOwpAQCAtMjM4MSw3ICsyMzgxLDcgQEAKIAkvKgogCSAqIHJlbGVhc2UgdGhlIHdlc3QgYnJpZGdlIG1pY3JvLV9jb250cm9sbGVyIGZyb20gcmVzZXQsCiAJICogc28gdGhhdCBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBjYW4gY29tcGxldGUuIHRoZSBhdHRlbXB0Ci0JICogdG8gcmVsZWFzZSBhbnRpb2NoIHJlc2V0IGlzIG1hZGUgdXB0byA4IHRpbWVzLgorCSAqIHRvIHJlbGVhc2UgYW50aW9jaCByZXNldCBpcyBtYWRlIHVwIHRvIDggdGltZXMuCiAJICovCiAJdiA9IDB4MDM7CiAJY291bnQgPSAweDA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNtdHAuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbXRwLmMKaW5kZXggMzY4OTg0Ni4uODU5ODM2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNtdHAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc210cC5jCkBAIC0zNDYsNyArMzQ2LDcgQEAKIAogCQlkZXZfcC0+bXRwX2V2ZW50X2NiID0gZXZlbnRfY19iOwogCQkvKgotCQkqIHdlIHJlZ2lzdGVyIGhlcmUgYmVjdWFzZSB0aGUgc3RhcnQgcmVxdWVzdCBtYXkgY2F1c2UKKwkJKiB3ZSByZWdpc3RlciBoZXJlIGJlY2F1c2UgdGhlIHN0YXJ0IHJlcXVlc3QgbWF5IGNhdXNlCiAJCSogZXZlbnRzIHRvIG9jY3VyIGJlZm9yZSB0aGUgcmVzcG9uc2UgdG8gdGhlIHN0YXJ0IHJlcXVlc3QuCiAJCSovCiAJCWN5X2FzX2xsX3JlZ2lzdGVyX3JlcXVlc3RfY2FsbGJhY2soZGV2X3AsCkBAIC00MjQsNyArNDI0LDcgQEAKIAkJZ290byBkZXN0cm95OwogCiAJLyoKLQkqIHdlIHN1Y2Vzc2Z1bGx5IHNodXRkb3duIHRoZSBzdGFjaywgc28gZGVjcmVtZW50CisJKiB3ZSBzdWNjZXNzZnVsbHkgc2h1dGRvd24gdGhlIHN0YWNrLCBzbyBkZWNyZW1lbnQKIAkqIHRvIG1ha2UgdGhlIGNvdW50IHplcm8uCiAJKi8KIAlkZXZfcC0+bXRwX2NvdW50LS07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3N0b3JhZ2UuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzc3RvcmFnZS5jCmluZGV4IDI0NTE0MDQuLjdhYmQ2YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzc3RvcmFnZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzc3RvcmFnZS5jCkBAIC0xNzczLDcgKzE3NzMsNyBAQAogCWlmICh1bml0ID4gMjU1KQogCQlyZXR1cm4gQ1lfQVNfRVJST1JfTk9fU1VDSF9VTklUOwogCi0JLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNlc3MgaWYgdGhlIG51bWJlciBvZgorCS8qIFdlIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gc3VjY2VzcyBpZiB0aGUgbnVtYmVyIG9mCiAJKiBibG9ja3MgaXMgemVybwogCSovCiAJaWYgKG51bV9ibG9ja3MgPT0gMCkgewpAQCAtMTk2OSw3ICsxOTY5LDcgQEAKIAlpZiAoY3lfYXNfZGV2aWNlX2lzX3VzYl9hc3luY19wZW5kaW5nKGRldl9wLCA2KSkKIAkJcmV0dXJuIENZX0FTX0VSUk9SX0FTWU5DX1BFTkRJTkc7CiAKLQkvKiBXZSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIHN1Y2VzcyBpZiB0aGUgbnVtYmVyIG9mCisJLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNjZXNzIGlmIHRoZSBudW1iZXIgb2YKIAkqIGJsb2NrcyBpcyB6ZXJvCiAJKi8KIAlpZiAobnVtX2Jsb2NrcyA9PSAwKQpAQCAtMzI4NSw3ICszMjg1LDcgQEAKIAlpZiAoY2FsbGJhY2sgPT0gMCkKIAkJcmV0dXJuIENZX0FTX0VSUk9SX05VTExfQ0FMTEJBQ0s7CiAKLQkvKiBXZSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIHN1Y2VzcyBpZiB0aGUgbnVtYmVyIG9mCisJLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNjZXNzIGlmIHRoZSBudW1iZXIgb2YKIAkgKiBibG9ja3MgaXMgemVybwogCSAqLwogCWlmICgoKG1pc2NfYnVmJkNZX1NESU9fQkxPQ0tNT0RFKSAhPSAwKSAmJiAoYXJndW1lbnQgPT0gMCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzdXNiLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3VzYi5jCmluZGV4IDkyZWE0MjUuLjFiNTVlNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzdXNiLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXN1c2IuYwpAQCAtNzM5LDcgKzczOSw3IEBACiAJCWN5X2FzX3VzYl9yZXNldF9lX3AwX3N0YXRlKGRldl9wKTsKIAogCQkvKgotCQkqIHdlIHJlZ2lzdGVyIGhlcmUgYmVjdWFzZSB0aGUgc3RhcnQgcmVxdWVzdCBtYXkgY2F1c2UKKwkJKiB3ZSByZWdpc3RlciBoZXJlIGJlY2F1c2UgdGhlIHN0YXJ0IHJlcXVlc3QgbWF5IGNhdXNlCiAJCSogZXZlbnRzIHRvIG9jY3VyIGJlZm9yZSB0aGUgcmVzcG9uc2UgdG8gdGhlIHN0YXJ0IHJlcXVlc3QuCiAJCSovCiAJCWN5X2FzX2xsX3JlZ2lzdGVyX3JlcXVlc3RfY2FsbGJhY2soZGV2X3AsCkBAIC04NjcsNyArODY3LDcgQEAKIAkJZ290byBkZXN0cm95OwogCiAJLyoKLQkgKiB3ZSBzdWNlc3NmdWxseSBzaHV0ZG93biB0aGUgc3RhY2ssIHNvCisJICogd2Ugc3VjY2Vzc2Z1bGx5IHNodXRkb3duIHRoZSBzdGFjaywgc28KIAkgKiBkZWNyZW1lbnQgdG8gbWFrZSB0aGUgY291bnQgemVyby4KIAkgKi8KIAljeV9hc191c2JfY2xlYW51cChkZXZfcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL21hY2gtb21hcDIvY3lhc2hhbG9tYXBfa2VybmVsLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL21hY2gtb21hcDIvY3lhc2hhbG9tYXBfa2VybmVsLmMKaW5kZXggMjFjZGIwNi4uM2JjZWRjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9tYWNoLW9tYXAyL2N5YXNoYWxvbWFwX2tlcm5lbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jeWFzaGFsb21hcF9rZXJuZWwuYwpAQCAtODcsNyArODcsNyBAQAogCiAKIC8qCi0gKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UgaGFuZGxlIHN0b3JhZ2UgZW5kcG9pbnQgdHJhbnNmZXJzIHVwdG8gNCBLQgorICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGhhbmRsZSBzdG9yYWdlIGVuZHBvaW50IHRyYW5zZmVycyB1cCB0byA0IEtCCiAgKiB3aXRoaW4gdGhlIEhBTCBpdHNlbGYuCiAgKi8KICAjZGVmaW5lIENZQVNTVE9SQUdFX1dSSVRFX0VQX05VTQkoNCkKQEAgLTEwOCwxMiArMTA4LDEyIEBACiAJCQkJKChlcCkgPT0gNikgfHwgKChlcCkgPT0gOCkpCiAKIC8qCi0gKiBwZXJzaXN0YW50LCBzdG9yZXMgY3VycmVudCBHUE1DIGludGVyZmFjZSBjZmcgbW9kZQorICogcGVyc2lzdGVudCwgc3RvcmVzIGN1cnJlbnQgR1BNQyBpbnRlcmZhY2UgY2ZnIG1vZGUKICAqLwogc3RhdGljIHVpbnQ4X3QgcG5hbmRfMTZiaXQ7CiAKIC8qCi0gKiBrZWVwIHByb2Nlc3NpbmcgbmV3IFdCIERSUSBpbiBJU1IgdW50aWxsIGFsbCBoYW5kbGVkIChwZXJmb3JtYW5jZSBmZWF0dXJlKQorICoga2VlcCBwcm9jZXNzaW5nIG5ldyBXQiBEUlEgaW4gSVNSIHVudGlsIGFsbCBoYW5kbGVkIChwZXJmb3JtYW5jZSBmZWF0dXJlKQogICovCiAjZGVmaW5lIFBST0NFU1NfTVVMVElQTEVfRFJRX0lOX0lTUiAoMSkKIApAQCAtMTU3LDcgKzE1Nyw3IEBACiAJICogZG1hX3hmZXJfc3ogLSBzaXplIG9mIHRoZSBuZXh0IGRtYSB4ZmVyIG9uIFAgcG9ydAogCSAqIHNlZ194ZmVyX2NudCAtICBjb3VudHMgeGZlcmVkIGJ5dGVzIGZvciBpbiBjdXJyZW50IHNnX2xpc3QKIAkgKgkJbWVtb3J5IHNlZ21lbnQKLQkgKiByZXFfeGZlcl9jbnQgLSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJlZCBzbyBmYXIgaW4KKwkgKiByZXFfeGZlcl9jbnQgLSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgc28gZmFyIGluCiAJICoJCWN1cnJlbnQgcmVxdWVzdAogCSAqIHJlcV9sZW5ndGggLSB0b3RhbCByZXF1ZXN0IGxlbmd0aAogCSAqLwpAQCAtMjE2MCw3ICsyMTYwLDcgQEAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGNyZWF0ZSBhIHNsZWVwIGNoYW5uZWwuCiAgKiBUaGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIHRoZSBzbGVlcCBjaGFubmVsIG9iamVjdAotICogc2xlZXAgY2hhbm5lbCAod2hpY2ggaXMgTGludXggIndhaXRfcXVldWVfaGVhZF90IHdxIiBmb3IgdGhpcyBwYXRpY3VsYXIgSEFMKQorICogc2xlZXAgY2hhbm5lbCAod2hpY2ggaXMgTGludXggIndhaXRfcXVldWVfaGVhZF90IHdxIiBmb3IgdGhpcyBwYXJ0aWN1bGFyIEhBTCkKICAqIHBhc3NlZCBhcyBhIHBvaW50ZXIsIGFuZCBhbGxwb2NhdGVkIGJ5IHRoZSBjYWxsZXIKICAqICh0eXBpY2FsbHkgYXMgYSBsb2NhbCB2YXIgb24gdGhlIHN0YWNrKSAiQ3JlYXRlIiB3b3JkIHNob3VsZCByZWFkIGFzCiAgKiAiU2xlZXBPbiIsIHRoaXMgZnVuYyBkb2Vzbid0IGFjdHVhbGx5IGNyZWF0ZSBhbnl0aGluZwpAQCAtMjM2NCw3ICsyMzY0LDcgQEAKIAkgKi8KIAljeV9hc19oYWxfZ3BtY19lbmFibGVfMTZiaXRfYnVzKGN5X3RydWUpOwogI2Vsc2UKLSAgIC8qIEFzdG9yaWEgYW5kIEdQTUMgYXJlIGFscmVhZHkgaW4gOCBiaXQgbW9kZSwganN1dCBpbml0aWFsaXplIFBOQU5EX0NGRyAqLworICAgLyogQXN0b3JpYSBhbmQgR1BNQyBhcmUgYWxyZWFkeSBpbiA4IGJpdCBtb2RlLCBqdXN0IGluaXRpYWxpemUgUE5BTkRfQ0ZHICovCiAJYXN0X3BfbmFuZF9jYXNkaV93cml0ZShDWV9BU19NRU1fUE5BTkRfQ0ZHLCAweDAwMDApOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNoYWxvbWFwX2tlcm5lbC5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc2hhbG9tYXBfa2VybmVsLmgKaW5kZXggODBkZDUzMC4uNjQyNmVhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc2hhbG9tYXBfa2VybmVsLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc2hhbG9tYXBfa2VybmVsLmgKQEAgLTIwLDcgKzIwLDcgQEAKICovCiAKIC8qCi0gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmludGlvbiBvZiB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24KKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24KICAqIGxheWVyIG9uIE9NQVAzNDMwIHRhbGtpbmcgdG8gdGhlIFdlc3QgQnJpZGdlIEFzdG9yaWEgZGV2aWNlCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc21lbW1hcC5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc21lbW1hcC5oCmluZGV4IDNlZWUxOTIuLjQ2ZjA2ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNtZW1tYXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL3BsYXQtb21hcC9pbmNsdWRlL21hY2gvd2VzdGJyaWRnZS93ZXN0YnJpZGdlLW9tYXAzLXBuYW5kLWhhbC9jeWFzbWVtbWFwLmgKQEAgLTUxLDcgKzUxLDcgQEAKICAqIAkJCQkJCQlHUE1DX0FERFIKICAqCQkJCQkJCVtBODpBMV0tPnVwRFs3OjBdCiAgKiBJTlQjCS1HUE1DX25XUF9HUElPXzYyCi0gKiBEQUNLCS1OL0MJCQkJIG5vdCBjb25lY3RlZAorICogREFDSwktTi9DCQkJCSBub3QgY29ubmVjdGVkCiAgKiBXQUtFVVAtR1BJT18xNjcKICAqIFJFU0VULUdQSU9fMTI2CiAgKiBSL0IJLUdQTUNfV0FJVDJfR1BJT182NApAQCAtMTA4LDcgKzEwOCw3IEBACiAJICoJCQkJCXdpbGwgYmUgbW9uaXRvcmVkCiAJICogUEZfRU5fRU5HSU5FIC0gMS0gRU5BQkxFUyBFTkdJTkUsIGJ1dCBpdCBuZWVkcyB0byBiZSBzdGFydGVkIGFmdGVyCiAJICoJCQkJCXRoYXQgQyBjdHJsIHJlZyBiaXQgMAotCSAqIFBGX0ZJRk9fVEhSRVNIT0xEIC0gRklGTyB0aHJlc2hob2xkIGluIG51bWJlciBvZiBCVVMoOCBvciAxNikgd29yZHMKKwkgKiBQRl9GSUZPX1RIUkVTSE9MRCAtIEZJRk8gdGhyZXNob2xkIGluIG51bWJlciBvZiBCVVMoOCBvciAxNikgd29yZHMKIAkgKiBQRl9XRUlHSFRFRF9QUklPICAtIE5VTSBvZiBjeWNsZXMgZ3JhbnRlZCB0byBQRkUgaWYgUk5EX1JPQklOCiAJICoJCQkJCXByaW9yaXRpemF0aW9uIGlzIGVuYWJsZWQKIAkgKiBQRl9ST1VORF9ST0JJTiAgLSBpZiBlbmFibGVkLCBnaXZlcyBwcmlvcml0eSB0byBvdGhlciBDUywgYnV0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2Jsb2NrL2N5YXNibGtkZXZfcXVldWUuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYmxvY2svY3lhc2Jsa2Rldl9xdWV1ZS5jCmluZGV4IDBiYmI4YTMuLmQxOTk2YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYmxvY2svY3lhc2Jsa2Rldl9xdWV1ZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYmxvY2svY3lhc2Jsa2Rldl9xdWV1ZS5jCkBAIC0yMjIsNyArMjIyLDcgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJLyogbmV3IHJlcSByZWNpZXZlZCwgaXNzdWUgaXQgdG8gdGhlIGRyaXZlciAgKi8KKwkJLyogbmV3IHJlcSByZWNlaXZlZCwgaXNzdWUgaXQgdG8gdGhlIGRyaXZlciAgKi8KIAkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKIAogCQkjaWZuZGVmIFdFU1RCUklER0VfTkRFQlVHCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2dhZGdldC9jeWFzZ2FkZ2V0LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2dhZGdldC9jeWFzZ2FkZ2V0LmMKaW5kZXggZGVmYTA1Yy4uYmU4NTFjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9nYWRnZXQvY3lhc2dhZGdldC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvZ2FkZ2V0L2N5YXNnYWRnZXQuYwpAQCAtNTg3LDYgKzU4Nyw3IEBACiAJCQkiY3lfYXNfdXNiX2VuZF9wb2ludF9jb25maWcgRVAgJXMgbWlzbWF0Y2ggIgogCQkJIm9uIGVuYWJsZWRcbiIsIGFuX2VwLT51c2JfZXBfaW5zdC5uYW1lKTsKIAkJI2VuZGlmCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFuX2Rldi0+bG9jaywgZmxhZ3MpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkZXZpY2UuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkZXZpY2UuaAppbmRleCAwYzA3MjZiNi4uNjQ1MmE5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RldmljZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkZXZpY2UuaApAQCAtMTE5LDcgKzExOSw3IEBACiAjZGVmaW5lIENZX0FTX1JFUVVFU1RfTElTVF9TVEFURV9RVUVVRUQgKDB4MDApCiAvKiBUaGUgcmVxdWVzdCBpcyBzZW50LCB3YWl0aW5nIGZvciByZXNwb25zZSAqLwogI2RlZmluZSBDWV9BU19SRVFVRVNUX0xJU1RfU1RBVEVfV0FJVElORyAoMHgwMSkKLS8qIFRoZSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCwgcHJvY2Vzc2luZyByZXBvbnNlICovCisvKiBUaGUgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQsIHByb2Nlc3NpbmcgcmVzcG9uc2UgKi8KICNkZWZpbmUgQ1lfQVNfUkVRVUVTVF9MSVNUX1NUQVRFX1JFQ0VJVkVEICgweDAyKQogLyogVGhlIHJlcXVlc3QvcmVzcG9uc2UgaXMgYmVpbmcgY2FuY2VsZWQgKi8KICNkZWZpbmUgQ1lfQVNfUkVRVUVTVF9MSVNUX1NUQVRFX0NBTkNFTElORyAoMHgwMykKQEAgLTUxNyw3ICs1MTcsNyBAQAogCWN5X2FzX2xsX3JlcXVlc3RfbGlzdF9ub2RlICpyZXF1ZXN0X3F1ZXVlX3A7CiAJLyogVGhlIGxpc3Qgbm9kZSBpbiB0aGUgcmVxdWVzdCBxdWV1ZSAqLwogCWN5X2FzX2xsX3JlcXVlc3RfbGlzdF9ub2RlICpsYXN0X25vZGVfcDsKLQkvKiBJbmRleCB1cHRvIHdoaWNoIGRhdGEgaXMgc3RvcmVkLiAqLworCS8qIEluZGV4IHVwIHRvIHdoaWNoIGRhdGEgaXMgc3RvcmVkLiAqLwogCXVpbnQxNl90IHF1ZXVlX2luZGV4OwogCS8qIEluZGV4IHRvIHRoZSBuZXh0IHJlcXVlc3QgaW4gdGhlIHF1ZXVlLiAqLwogCXVpbnQxNl90IHJxdF9pbmRleDsKQEAgLTc2OCw3ICs3NjgsNyBAQAogCXVpbnQzMl90IG10cF9jb3VudDsKIAkvKiBUaGUgTVRQIGV2ZW50IGNhbGxiYWNrIHN1cHBsaWVkIGJ5IHRoZSBjbGllbnQgKi8KIAljeV9hc19tdHBfZXZlbnRfY2FsbGJhY2sgbXRwX2V2ZW50X2NiOwotCS8qIFRoZSBjdXJyZW50IGJsb2NrIHRhYmxlIHRvIGJlIHRyYW5zZmVyZWQgKi8KKwkvKiBUaGUgY3VycmVudCBibG9jayB0YWJsZSB0byBiZSB0cmFuc2ZlcnJlZCAqLwogCWN5X2FzX210cF9ibG9ja190YWJsZSAqdHBfYmxrX3RibDsKIAogCWN5X2FzX2NfYl9xdWV1ZSAqZnVuY19jYnNfbXRwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RtYS5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RtYS5oCmluZGV4IDhkYWI1ZTkuLjE2ZGM5ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkbWEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZG1hLmgKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgY29tcGxldGVzIGEgcmVxdWVzdGVkIERNQSBvcGVyYXRpb24uCiAKICAgIFJldHVybnMKLSAgIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbW9kdWxlIGluaXRpYWxpemVkIHN1Y2Vzc2Z1bGx5CisgICBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1vZHVsZSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkKICAgIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgZHVyaW5nCiAJCWluaXRpYWxpemF0aW9uCiAgICBDWV9BU19FUlJPUl9BTFJFQURZX1JVTk5JTkcgLSB0aGUgRE1BIG1vZHVsZSB3YXMgYWxyZWFkeSBydW5uaW5nCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgIHRoZW4gZnJlZWluZyB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIERNQSBlbmRwb2ludC4KIAogICAgUmV0dXJucwotICAgQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtb2R1bGUgc2h1dGRvd24gc3VjZXNzZnVsbHkKKyAgIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbW9kdWxlIHNodXRkb3duIHN1Y2Nlc3NmdWxseQogICAgQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgRE1BIG1vZHVsZSB3YXMgbm90IHJ1bm5pbmcKIAogICAgU2VlIEFsc28KQEAgLTE2MSw3ICsxNjEsNyBAQAogCiAgICBSZXR1cm5zCiAgICBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHRyYWZmaWMgb24gdGhlIGVuZHBvaW50IGlzIGNhbmNlbGVkCi0Jc3VjZXNzZnVsbHkKKwlzdWNjZXNzZnVsbHkKIAogICAgU2VlIEFsc28KICovCkBAIC0yNjYsNyArMjY2LDcgQEAKICAgIHdpbGwgaGF2ZSB0byBtYWludGFpbiBhIGxpc3Qgb2Ygc2xlZXAgY2hhbm5lbHMgdG8gd2FrZS4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHF1ZXVlIGhhcyBkcmFpbmVkIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgcXVldWUgaGFzIGRyYWluZWQgc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfRU5EUE9JTlQgLSB0aGUgZW5kcG9pbnQgZ2l2ZW4gaXMgbm90IHZhbGlkCiAgICAqIENZX0FTX0VSUk9SX05FU1RFRF9TTEVFUCAtIEN5QXNEbWFRdWV1ZVJlcXVlc3QoKSB3YXMgcmVxdWVzdGVkCiAgICAqCW9uIGFuIGVuZHBvaW50IHdoZXJlIEN5QXNEbWFRdWV1ZVJlcXVlc3Qgd2FzIGFscmVhZHkgY2FsbGVkCkBAIC0yOTUsNyArMjk1LDcgQEAKICAgIEN5QXNIYWxEbWFTZXR1cFJlYWQoKSBmdW5jdG9pbnMuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSB2YWx1ZSB3YXMgc2V0IHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgdmFsdWUgd2FzIHNldCBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9TSVpFIC0gdGhlIHNpemUgdmFsdWUgd2FzIG5vdCB2YWxpZAogKi8KIGV4dGVybiBjeV9hc19yZXR1cm5fc3RhdHVzX3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNlcnIuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNlcnIuaAppbmRleCBmNzhkNjAyLi4yY2QwYWYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZXJyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2Vyci5oCkBAIC0yOSw3ICsyOSw3IEBACiAqLwogCiAvKiBTdW1tYXJ5Ci0gICBUaGUgZnVuY3Rpb24gY29tcGxldGVkIHN1Y2Vzc2Z1bGx5CisgICBUaGUgZnVuY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseQogKi8KICNkZWZpbmUgQ1lfQVNfRVJST1JfU1VDQ0VTUwkgKDApCiAKQEAgLTc5Niw3ICs3OTYsNyBAQAogICAgRGVzY3JpcHRpb24KICAgIFRoaXMgZXJyb3IgaXMgcmV0dXJuZWQgd2hlbiBhbiBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIHRoYXQgY2Fubm90IGJlCiAgICBjb21wbGV0ZWQgd2hpbGUgdGhlIFVTQiBzdGFjayBpcyBjb25uZWN0ZWQgdG8gYSBVU0IgaG9zdC4gIEluIG9yZGVyCi0gICB0byBzdWNlc3NmdWxseSBjb21wbGV0ZSB0aGUgZGVzaXJlZCBvcGVyYXRpb24sIEN5QXNVc2JEaXNjb25uZWN0KCkKKyAgIHRvIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgZGVzaXJlZCBvcGVyYXRpb24sIEN5QXNVc2JEaXNjb25uZWN0KCkKICAgIG11c3QgYmUgY2FsbGVkIHRvIGRpc2Nvbm5lY3QgZnJvbSB0aGUgaG9zdC4KICovCiAjZGVmaW5lIENZX0FTX0VSUk9SX1VTQl9DT05ORUNURUQgKDUzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2hhbGRvYy5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2hhbGRvYy5oCmluZGV4IDI4MTM2YWQuLjViY2JlOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNoYWxkb2MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaGFsZG9jLmgKQEAgLTU5Nyw3ICs1OTcsNyBAQAogICAgQ3lBc0hhbFNsZWVwQ2hhbm5lbC4KIAogICAgUmV0dXJucwotICAgQ3lUcnVlIGlzIHRoZSBpbml0aWFsaXphdGlvbiB3YXMgc3VjZXNzZnVsLCBhbmQgQ3lGYWxzZSBvdGhlcndpc2UKKyAgIEN5VHJ1ZSBpcyB0aGUgaW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwsIGFuZCBDeUZhbHNlIG90aGVyd2lzZQogCiAgICBTZWUgQWxzbwogICAgKiBDeUFzSGFsU2xlZXBDaGFubmVsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaW50ci5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2ludHIuaAppbmRleCAzZDcwNjNlLi42MGE2ZmZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaW50ci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNpbnRyLmgKQEAgLTY5LDcgKzY5LDcgQEAKIAogICAgUmV0dXJucwogICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIGludGVycnVwdCBtb2R1bGUgd2FzIHN0b3BwZWQKLSAgICoJc3VjZXNzZnVsbHkKKyAgICoJc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIGludGVycnVwdCBtb2R1bGUgd2FzIG5vdAogICAgKglydW5uaW5nCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNtaXNjLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzbWlzYy5oCmluZGV4IDJmMDcwMTguLmRmN2MyYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNtaXNjLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc21pc2MuaApAQCAtNjIwLDcgKzYyMCw3IEBACiAgICAqIE5lc3RhYmxlOiBZRVMKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIGZpcm13YXJlIHdhcyBzdWNlc3NmdWxseSBkb3dubG9hZGVkCisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgZmlybXdhcmUgd2FzIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFCiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKgl3YXMgbm90IGNvbmZpZ3VyZWQKQEAgLTgzNiw3ICs4MzYsNyBAQAogICAgb3duZXJzaGlwLgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgcCBwb3J0IHN1Y2Vzc2Z1bGx5IGFjcXVpcmVkIHRoZQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHAgcG9ydCBzdWNjZXNzZnVsbHkgYWNxdWlyZWQgdGhlCiAgICAqIAlyZXNvdXJjZSBvZiBpbnRlcmVzdAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRApAQCAtODc5LDcgKzg3OSw3IEBACiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogTk8KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHAgcG9ydCBzdWNlc3NmdWxseSByZWxlYXNlZAorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHAgcG9ydCBzdWNjZXNzZnVsbHkgcmVsZWFzZWQKICAgICoJdGhlIHJlc291cmNlIG9mIGludGVyZXN0CiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFCiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVECkBAIC05MjksNyArOTI5LDcgQEAKIAogICAgUmV0dXJucwogICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHRyYWNlIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4KLSAgICoJc3VjZXNzZnVsbHkgY2hhbmdlZAorICAgKglzdWNjZXNzZnVsbHkgY2hhbmdlZAogICAgKiBDWV9BU19FUlJPUl9OT19TVUNIX0JVUyAtIHRoZSBidXMgc3BlY2lmaWVkIGRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX05PX1NVQ0hfREVWSUNFIC0gdGhlIHNwZWNpZmllZCBtZWRpYS9kZXZpY2UKICAgICoJcGFpciBkb2VzIG5vdCBleGlzdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3Byb3RvY29sLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzcHJvdG9jb2wuaAppbmRleCAzMTc4MDVmLi43NzNiNjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzcHJvdG9jb2wuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzcHJvdG9jb2wuaApAQCAtNzU2LDcgKzc1Niw3IEBACiAJICogMSA6IERlYnVnIG1vZGUKIAogICAgRGVzY3JpcHRpb24KLSAgIFRoaXMgcmVwb25zZSBpcyBzZW50IHRvIHJldHVybiB0aGUgZmlybXdhcmUgdmVyc2lvbgorICAgVGhpcyByZXNwb25zZSBpcyBzZW50IHRvIHJldHVybiB0aGUgZmlybXdhcmUgdmVyc2lvbgogICAgbnVtYmVyIHRvIHRoZSByZXF1ZXN0b3IuCiAgKi8KICNkZWZpbmUgQ1lfUkVTUF9GSVJNV0FSRV9WRVJTSU9OICgxNikKQEAgLTM2NTUsNyArMzY1NSw3IEBACiAgICBUaGlzIHJlcXVlc3QgaXMgc2VudCB0byB0aGUgV2VzdCBCcmlkZ2Ugd2hlbiB0aGUgUCBwb3J0CiAgICBuZWVkcyB0byBzZW5kIGRhdGEgdG8gdGhlIEhvc3QgaW4gYSBUdXJibyBFbmRwb2ludC4KICAgIFVwb24gcmVjZWl2aW5nIHRoaXMgZXZlbnQsIEZpcm13YXJlIHdpbGwgbWFrZSB0aGUgZW5kIHBvaW50Ci0gICBhdmlsYWJsZSBmb3IgdGhlIFAgcG9ydC4gSWYgdGhlIGxlbmd0aCBpcyB6ZXJvLCB0aGVuCisgICBhdmFpbGFibGUgZm9yIHRoZSBQIHBvcnQuIElmIHRoZSBsZW5ndGggaXMgemVybywgdGhlbgogICAgZmlybXdhcmUgd2lsbCBzZW5kIGEgemVybyBsZW5ndGggcGFja2V0LgogCiAgICBEaXJlY3Rpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNzdG9yYWdlLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzc3RvcmFnZS5oCmluZGV4IDY0ZjA3OGMuLjUyYjkzYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNzdG9yYWdlLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3N0b3JhZ2UuaApAQCAtODMyLDcgKzgzMiw3IEBACiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbgogICAgKglsb2FkZWQgaW50byBXZXN0IEJyaWRnZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRSAtIGFuIGludmFsaWQgaGFuZGxlIHdhcyBwYXNzZWQgaW4KLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtb2R1bGUgc3RhcnRlZCBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1vZHVsZSBzdGFydGVkIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcKICAgICoJd2l0aCB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkKQEAgLTg4Miw3ICs4ODIsNyBAQAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRSAtIGFuIGludmFsaWQgaGFuZGxlIHdhcwogICAgKglwYXNzZWQgaW4KICAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0Ci0gICAqCWRvd24gc3VjZXNzZnVsbHkKKyAgICoJZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZAogICAgKgljb21tdW5pY2F0aW5nIHdpdGggdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORwpAQCAtOTM0LDcgKzkzNCw3IEBACiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFIC0gYW4gaW52YWxpZCBoYW5kbGUKICAgICoJd2FzIHBhc3NlZCBpbgogICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIGZ1bmN0aW9uIHdhcyByZWdpc3RlcmVkCi0gICAqCXN1Y2Vzc2Z1bGx5CisgICAqCXN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBzdGFjayBpcyBub3QgcnVubmluZwogCiAgICBTZWUgQWxzbwpAQCAtOTgxLDcgKzk4MSw3IEBACiAgICAqCWJlZW4gc3RhcnRlZAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRSAtIGFuIGludmFsaWQgaGFuZGxlIHdhcwogICAgKglwYXNzZWQgaW4KLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgcmVxdWVzdCB3YXMgc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bGx5CiAgICAqCXRyYW5zbWl0dGVkIHRvIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nCiAgICAqCXdpdGggdGhlIFdlc3QgQnJpZGdlIGRldmljZQpAQCAtMTAzNCw3ICsxMDM0LDcgQEAKICAgICoJYmVlbiBzdGFydGVkCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfSEFORExFIC0gYW4gaW52YWxpZCBoYW5kbGUKICAgICoJd2FzIHBhc3NlZCBpbgotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1lZGlhIHdhcyBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1lZGlhIHdhcyBzdWNjZXNzZnVsbHkKICAgICoJcmVsZWFzZWQKICAgICogQ1lfQVNfRVJST1JfTUVESUFfTk9UX0NMQUlNRUQgLSB0aGUgbWVkaWEgd2FzIG5vdAogICAgKgljbGFpbWVkIGJ5IHRoZSBQIHBvcnQKQEAgLTE5MDUsNyArMTkwNSw3IEBACiAgICBkaWZmZXIgYmV0d2VlbiBTRCBjYXJkcy4KIAogICAgQSBsYXJnZSBlcmFzZSBjYW4gdGFrZSBhIHdoaWxlIHRvIGNvbXBsZXRlIGRlcGVuZGluZyBvbiB0aGUgU0QKLSAgIGNhcmQuIEluIHN1Y2ggYSBjYXNlIGl0IGlzIHJlY2NvbWVuZGVkIHRoYXQgYW4gYXN5bmMgY2FsbCBpcyBtYWRlLgorICAgY2FyZC4gSW4gc3VjaCBhIGNhc2UgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbiBhc3luYyBjYWxsIGlzIG1hZGUuCiAKICAgIFJldHVybnMKICAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIEFQSSBjYWxsIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKQEAgLTE5MjYsNyArMTkyNiw3IEBACiAgICAqCXJlcXVpcmVkIGJlZm9yZSBlcmFzZSBpcyBhbGxvd2VkCiAgICAqIENZX0FTX0VSUk9SX05PX1NVQ0hfQlVTCiAgICAqIENZX0FTX0VSUk9SX05PX1NVQ0hfREVWSUNFCi0gICAqIENZX0FTX0VSUk9SX05PVF9TVVBQT1JURUQgLSBFcmFzZSBpcyBjdXJyZW5seSBvbmx5IHN1cHBvcnRlZAorICAgKiBDWV9BU19FUlJPUl9OT1RfU1VQUE9SVEVEIC0gRXJhc2UgaXMgY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCiAgICAqCW9uIFNEIGFuZCB1c2luZyBTRCBvbmx5IGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkKIApAQCAtMTk4NSw3ICsxOTg1LDcgQEAKICAgICoJdHlwZSB3YXMgbWFkZQogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluCiAgICAqCXJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9GVU5DVElPTiAtIEFuIElPIGF0dGVtcHQgd2FzIG1hZGUgdG8KQEAgLTIwNDcsNyArMjA0Nyw3IEBACiAgICAqCXBhaXIgZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogCiAqLwogY3lfYXNfcmV0dXJuX3N0YXR1c190CkBAIC0yMDk1LDcgKzIwOTUsNyBAQAogICAgKglwYWlyIGRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKICAgICovCiBjeV9hc19yZXR1cm5fc3RhdHVzX3QKIGN5X2FzX3NkaW9fcmVzZXRfY2FyZCgKQEAgLTIxMzksNyArMjEzOSw3IEBACiAgICAqIENZX0FTX0VSUk9SX05PX1NVQ0hfREVWSUNFIC0gdGhlIHNwZWNpZmllZCBtZWRpYS9kZXZpY2UgcGFpcgogICAgKglkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKLSAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzIHJlY2lldmVkCisgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcyByZWNlaXZlZAogICAgKglmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbiByZWFkaW5nCiAgICAqCWZyb20gdGhlIG1lZGlhCkBAIC0yMTk4LDcgKzIxOTgsNyBAQAogICAgKiBDWV9BU19FUlJPUl9OT19TVUNIX0RFVklDRSAtIHRoZSBzcGVjaWZpZWQgbWVkaWEvZGV2aWNlCiAgICAqIHBhaXIgZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCi0gICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcyByZWNpZXZlZAorICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMgcmVjZWl2ZWQKICAgICogZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4KICAgICogcmVhZGluZyBmcm9tIHRoZSBtZWRpYQpAQCAtMjI2Miw3ICsyMjYyLDcgQEAKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkKICAgICoJYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbgogICAgKglyZWFkaW5nIGZyb20gdGhlIG1lZGlhCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfRlVOQ1RJT04gLSBBbiBJTyBhdHRlbXB0IHdhcyBtYWRlCkBAIC0yMzE5LDcgKzIzMTksNyBAQAogICAgKglwYWlyIGRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX0FTWU5DX1BFTkRJTkcgLSBhbiBhc3luYyBvcGVyYXRpb24gaXMgcGVuZGluZwogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKLSAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzIHJlY2lldmVkCisgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcyByZWNlaXZlZAogICAgKglmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbgogICAgKglyZWFkaW5nIGZyb20gdGhlIG1lZGlhCkBAIC0yMzk2LDcgKzIzOTYsNyBAQAogICAgKiBDWV9BU19FUlJPUl9BU1lOQ19QRU5ESU5HIC0gYW4gYXN5bmMgb3BlcmF0aW9uIGlzIHBlbmRpbmcKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbgogICAgKglyZWFkaW5nIGZyb20gdGhlIG1lZGlhCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfRlVOQ1RJT04gLSBBbiBJTyBhdHRlbXB0IHdhcyBtYWRlCkBAIC0yNDcxLDcgKzI0NzEsNyBAQAogICAgKiBwYWlyIGRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4KICAgICoJcmVhZGluZyBmcm9tIHRoZSBtZWRpYQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0ZVTkNUSU9OIC0gQW4gSU8gYXR0ZW1wdCB3YXMgbWFkZQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkKICAgICoJYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvcgogICAgKglpbiByZWFkaW5nIGZyb20gdGhlIG1lZGlhCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfRlVOQ1RJT04gLSBBbiBJTyBhdHRlbXB0IHdhcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3VzYi5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3VzYi5oCmluZGV4IDRhNTQ5ZTEuLmUzYmE5Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXN1c2IuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzdXNiLmgKQEAgLTQ2NCw3ICs0NjQsNyBAQAogICAgYmUgc2VsZWN0ZWQgb24gYSBwYXJ0aXRpb25lZCBzdG9yYWdlIGRldmljZS4KIAogICAgRGVzY3JpcHRpb24KLSAgIFdlc3QgQnJpZGdlIGZpcm13YXJlIHN1cHBvcnRzIGNyZWF0aW5nIHVwdG8gdHdvCisgICBXZXN0IEJyaWRnZSBmaXJtd2FyZSBzdXBwb3J0cyBjcmVhdGluZyB1cCB0byB0d28KICAgIHBhcnRpdGlvbnMgb24gbWFzcyBzdG9yYWdlIGRldmljZXMgY29ubmVjdGVkIHRvCiAgICBXZXN0IEJyaWRnZS4gIFdoZW4gdGhlcmUgYXJlIHR3byBwYXJ0aXRpb25zIG9uIGEgZGV2aWNlLAogICAgdGhlIHVzZXIgY2FuIGNob29zZSB3aGljaCBvZiB0aGVzZSBwYXJ0aXRpb25zIHNob3VsZCBiZQpAQCAtNjk4LDcgKzY5OCw3IEBACiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCiAgICAqCWludG8gV2VzdCBCcmlkZ2UKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZyB3aXRoCiAgICAqCXRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKIApAQCAtNzUyLDcgKzc1Miw3IEBACiAgICAqIE5lc3RhYmxlOiBZRVMKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTc5MSw3ICs3OTEsNyBAQAogICAgKiBOZXN0YWJsZTogWUVTCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC04MjUsNyArODI1LDcgQEAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBZZXMgKGlmIGNiIHN1cHBsaWVkKQogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtODU1LDEzICs4NTUsMTMgQEAKICAgIHRoZSBVU0Igc3RhY2sKIAogICAgRGVzY3JpcHRpb24KLSAgIFRoaXMgZnVuY3Rpb24gc2VuZHMgYSByZXF1ZXN0IHRvIFdlc3QgQnJpZGdlIHRvIHJldHJlaXZlCisgICBUaGlzIGZ1bmN0aW9uIHNlbmRzIGEgcmVxdWVzdCB0byBXZXN0IEJyaWRnZSB0byByZXRyaWV2ZQogICAgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbgogCiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogWWVzIChpZiBjYiBzdXBwbGllZCkKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTkwNiw3ICs5MDYsNyBAQAogICAgQ2hhcHRlciA5LgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtOTkzLDcgKzk5Myw3IEBACiAgICBEZXNjcmlwdGlvbgogICAgVGhpcyBkYXRhIHN0cnVjdHVyZSB0aGUgYnVmZmVyIHRvIGhvbGQgdGhlIGRlc2NyaXB0b3IKICAgIGRhdGEsIGFuZCBhbiBpbi9vdXQgcGFyYW1ldGVyIHRpIGluZGljYXRlIHRoZQotICAgbGVuZ2h0IG9mIHRoZSBidWZmZXIgYW5kIGRlc2NyaXB0b3IgZGF0YSBpbiBieXRlcy4KKyAgIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGFuZCBkZXNjcmlwdG9yIGRhdGEgaW4gYnl0ZXMuCiAKICAgIFNlZSBBbHNvCiAgICAqIEN5QXNVc2JHZXREZXNjcmlwdG9yCkBAIC0xMDI3LDcgKzEwMjcsNyBAQAogICAgQ2hhcHRlciA5LgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtMTEwNiw3ICsxMTA2LDcgQEAKICAgICogVmFsaWQgSW4gQXN5bmNocm9ub3VzIENhbGxiYWNrOiBOTwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtMTE0MCw3ICsxMTQwLDcgQEAKICAgIEFkZCBkb2N1bWVudGF0aW9uIGFib3V0IGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gbGltaXRhdGlvbnMKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTExODEsNyArMTE4MSw3IEBACiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogTk8KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTEyMTksNyArMTIxOSw3IEBACiAgICBmdW5jdGlvbnMgc3RvcmUgYXdheSB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgdGhpcwogICAgQ3lBc1VzYkNvbW1pdENvbmZpZygpIGFjdHVhbGx5IGZpbmRzIHRoZQogICAgYmVzdCBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgZW5kcG9pbnQKLSAgIGNvbmZpZ3VyYXRpb24gYW5kIHNlbmRzIHRoc2kgb3B0aW1hbAorICAgY29uZmlndXJhdGlvbiBhbmQgc2VuZHMgdGhpcyBvcHRpbWFsCiAgICBjb25maXVyYXRpb24gZG93biB0byB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlLgogCiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogWUVTIChpZiBjYiBzdXBwbGllZCkKQEAgLTEyNjgsNyArMTI2OCw3IEBACiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogTk8KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nIHdpdGgKICAgICoJdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBVU0Igc3RhY2sgaXMgbm90IHJ1bm5pbmcKQEAgLTEzMTEsNyArMTMxMSw3IEBACiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogWUVTCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZyB3aXRoCiAgICAqCXRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgVVNCIHN0YWNrIGlzIG5vdCBydW5uaW5nCkBAIC0xMzU1LDcgKzEzNTUsNyBAQAogICAgYSB6ZXJvIGxlbmd0aCBwYWNrZXQgdHJhbnNtaXR0ZWQgdG8gdGhlIFVTQiBob3N0LgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcgd2l0aAogICAgKgl0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIFVTQiBzdGFjayBpcyBub3QgcnVubmluZwpAQCAtMTM5NSw3ICsxMzk1LDcgQEAKICAgIGluIGEgemVybyBsZW5ndGggcGFja2V0IHRyYW5zbWl0dGVkIHRvIHRoZSBVU0IgaG9zdC4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nIHdpdGgKICAgICoJdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBVU0Igc3RhY2sgaXMgbm90IHJ1bm5pbmcKQEAgLTE0MzUsNyArMTQzNSw3IEBACiAKICAgIFJldHVybnMKICAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24KLSAgICoJc3VjZXNzZnVsbHkKKyAgICoJc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIFVTQiBzdGFjayBpcyBub3QKICAgICoJcnVubmluZwogICAgKiBDWV9BU19FUlJPUl9BU1lOQ19OT1RfUEVORElORyAtIG5vIGFzeW5jaHJvbm91cyBVU0IKQEAgLTE3OTEsNyArMTc5MSw3IEBACiAgICBkZXZpY2Ugc2hvdWxkIGJlIG1hZGUgdmlzaWJsZSB0byBVU0IuCiAKICAgIERlc2NyaXB0aW9uCi0gICBXZXN0IEJyaWRnZSBmaXJtd2FyZSBzdXBwb3J0cyB0aGUgY3JlYXRpb24gb2YgdXB0byB0d28KKyAgIFdlc3QgQnJpZGdlIGZpcm13YXJlIHN1cHBvcnRzIHRoZSBjcmVhdGlvbiBvZiB1cCB0byB0d28KICAgIHBhcnRpdGlvbnMgb24gbWFzcyBzdG9yYWdlIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBXZXN0IEJyaWRnZQogICAgZGV2aWNlLiAgV2hlbiB0aGVyZSBhcmUgdHdvIHBhcnRpdGlvbnMgb24gYSBkZXZpY2UsIHRoZSB1c2VyIGNhbgogICAgY2hvb3NlIHdoaWNoIG9mIHRoZXNlIHBhcnRpdGlvbnMgc2hvdWxkIGJlIG1hZGUgdmlzaWJsZSB0byB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kcy5jIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWRzLmMKaW5kZXggOWNmZWE5NC4uYzlmMGU4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWRzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dpbmJvbmQvbWRzLmMKQEAgLTQ5Miw3ICs0OTIsNyBAQAogCiAJCQlUeERlc0luZGV4ID0gcE1kcy0+VHhEZXNJbmRleDsgLyogR2V0IHRoZSBjdXJyZW50IElEICovCiAJCQlwVHhEZXMtPkRlc2NyaXB0b3JfSUQgPSBUeERlc0luZGV4OwotCQkJcE1kcy0+VHhEZXNGcm9tW1R4RGVzSW5kZXhdID0gMjsgLyogU3RvcmluZyB0aGUgaW5mb3JtYXRpb24gb2Ygc291cmNlIGNvbW1pbmcgZnJvbSAqLworCQkJcE1kcy0+VHhEZXNGcm9tW1R4RGVzSW5kZXhdID0gMjsgLyogU3RvcmluZyB0aGUgaW5mb3JtYXRpb24gb2Ygc291cmNlIGNvbWluZyBmcm9tICovCiAJCQlwTWRzLT5UeERlc0luZGV4Kys7CiAJCQlwTWRzLT5UeERlc0luZGV4ICU9IE1BWF9VU0JfVFhfREVTQ1JJUFRPUjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvUkVBRE1FLnVidW50dSBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1JFQURNRS51YnVudHUKaW5kZXggNDdiZWFlYy4uZWRlZThiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvUkVBRE1FLnVidW50dQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9SRUFETUUudWJ1bnR1CkBAIC0xMTYsNyArMTE2LDcgQEAKIAogVGhlIEFnZXJlIFN5c3RlbXMgbGljZW5zZSBhcHBsaWVzLiBUaGlzIGlzIHdoeSBJIGluY2x1ZGUgdGhlIG9yaWdpbmFsCiBSRUFETUUud2xhZ3M0OS4gVGhlIGluc3RydWN0aW9ucyBpbiB0aGF0IGZpbGUgYXJlIGJvZ3VzIG5vdy4gSSBhbHNvCi1pbmNsdWRlIHRoZSBtYW4gcGFnZS4gRXZlbnRob3VnaCBzZXR0aW5nIHBhcmFtZXRlcnMgb24gdGhlIG1vZHVsZQoraW5jbHVkZSB0aGUgbWFuIHBhZ2UuIEV2ZW4gdGhvdWdoIHNldHRpbmcgcGFyYW1ldGVycyBvbiB0aGUgbW9kdWxlCiBkb2VzIG5vdCB3b3JrIGFueW1vcmUgYnV0IGl0IHByb3ZpZGVzIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHRoZQogc2V0dGluZ3MuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1RPRE8gYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9UT0RPCmluZGV4IDE0YWE0MTUuLjk0MDMyYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1RPRE8KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvVE9ETwpAQCAtMSw3ICsxLDcgQEAKIEZpcnN0IG9mIGFsbCwgdGhlIGJlc3QgdGhpbmcgd291bGQgYmUgdGhhdCB0aGlzIGRyaXZlciBiZWNvbWVzIG9ic29sdGUgYnkKIGFkZGluZyBzdXBwb3J0IGZvciBIZXJtZXMgSUkgYW5kIEhlcm1lcyBJSS41IGNhcmRzIHRvIHRoZSBleGlzdGluZyBvcmlub2NvCiBkcml2ZXIuIFRoZSBvcmlub2NvIGRyaXZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBIZXJtZXMgSSBiYXNlZCBjYXJkcy4KLVNpbmNlIHRoaXMgd2lsbCBub3QgaGFwcGVuIGJ5IG1hZ2ljIGFuZCBoYXMgbm90IGhhcHBlbmQgdW50aWwgbm93IHRoaXMKK1NpbmNlIHRoaXMgd2lsbCBub3QgaGFwcGVuIGJ5IG1hZ2ljIGFuZCBoYXMgbm90IGhhcHBlbmVkIHVudGlsIG5vdyB0aGlzCiBkcml2ZXIgcHJvdmlkZXMgYSBzdG9wLWdhcCBzb2x1dGlvbiBmb3IgdGhlc2UgdHlwZSBvZiBjYXJkcy4KIAogSGF2aW5nIHNhaWQgdGhhdCwgdGhlIGZvbGxvd2luZyB3aXNobGlzdCBjb21lcyB0byBtaW5kIHRvIG1ha2UgdGhlIGRyaXZlcgpAQCAtMTgsNyArMTgsNyBAQAogCS0gdGhlIGRyaXZlciBpcyBzcGxpdCBpbnRvIGEgSGVybWVzIElJIGFuZCBhIEhlcm1lcyBJSS41IHBhcnQsIGl0CiAJICB3b3VsZCBiZSBuaWNlIHRvIGhhbmRsZSBib3RoIHdpdGggb25lIG1vZHVsZSBpbnN0ZWFkIG9mIHR3bwogCS0gcmV2aWV3IGJ5IHRoZSB3aXJlbGVzcyBkZXZlbG9wZXIgY29tbXVuaXR5Ci0JLSB2ZXJpZnkgdGhlIGNvZGUgYWdhaW5zdCB0aGUgY29kaW5nIHN0YW5kYXJkcyBmb3IgYSBwcm9wcGVyIGxpbnV4CisJLSB2ZXJpZnkgdGhlIGNvZGUgYWdhaW5zdCB0aGUgY29kaW5nIHN0YW5kYXJkcyBmb3IgYSBwcm9wZXIgbGludXgKIAkgIGRyaXZlcgogCS0gcmVzb2x2ZSBsaWNlbnNlIGlzc3VlcyAoPykKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2YuYwppbmRleCBkNGJkZDNlLi5hNzMzMTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2YuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2YuYwpAQCAtNTQwLDcgKzU0MCw3IEBACiAqCiAqLkNPTkRJVElPTlMKICogRXhjZXB0IGZvciBoY2ZfYWN0aW9uIHdpdGggSENGX0FDVF9JTlRfRk9SQ0VfT04gb3IgSENGX0FDVF9JTlRfT0ZGIGFzIHBhcmFtZXRlciBvciBoY2ZfY29ubmVjdCB3aXRoIGFuIEkvTwotKiBhZGRyZXNzIChpLmUuIG5vdCBIQ0ZfRElTQ09OTkVDVCksIGFsbCBoY2YtZnVuY3Rpb24gY2FsbHMgTVVTVCBiZSBwcmVjZWVkZWQgYnkgYSBjYWxsIG9mIGhjZl9hY3Rpb24gd2l0aAorKiBhZGRyZXNzIChpLmUuIG5vdCBIQ0ZfRElTQ09OTkVDVCksIGFsbCBoY2YtZnVuY3Rpb24gY2FsbHMgTVVTVCBiZSBwcmVjZWRlZCBieSBhIGNhbGwgb2YgaGNmX2FjdGlvbiB3aXRoCiAqIEhDRl9BQ1RfSU5UX09GRiBhcyBwYXJhbWV0ZXIuCiAqIE5vdGUgdGhhdCBoY2ZfY29ubmVjdCBkZWZhdWx0cyB0byBOSUMgaW50ZXJydXB0IGRpc2FibGVkIG1vZGUsIGkuZS4gYXMgaWYgaGNmX2FjdGlvbiggSENGX0FDVF9JTlRfT0ZGICkKICogd2FzIGNhbGxlZC4KQEAgLTg0Myw3ICs4NDMsNyBAQAogKi5NT0RVTEUJCWludCBoY2ZfY250bCggSUZCUCBpZmJwLCBoY2ZfMTYgY21kICkKICouUFVSUE9TRQkJQ29ubmVjdCBvciBkaXNjb25uZWN0IGEgc3BlY2lmaWMgcG9ydCB0byBhIHNwZWNpZmljIG5ldHdvcmsuCiAqISEgIDs/Pz8/Pz8/Pz8/Pz8/Pz8/IGNvbnRpbnVlIG5lZWRzIG1vcmUgZXhwbGFuYXRpb24KLSoJCQkJcmVjb3ZlcnMgYnkgbWVhbnMgb2YgImNvbnRpbnVlIiB3aGVuIHRoZSBjb25uZWN0IHByb2NlcyBpbiBDQ1ggbW9kZSBmYWlscworKgkJCQlyZWNvdmVycyBieSBtZWFucyBvZiAiY29udGludWUiIHdoZW4gdGhlIGNvbm5lY3QgcHJvY2VzcyBpbiBDQ1ggbW9kZSBmYWlscwogKgkJCQlFbmFibGVzIG9yIGRpc2FibGVzIGRhdGEgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24gZm9yIHRoZSBOSUMuCiAqCQkJCUFjdGl2YXRlcyBzdGF0aWMgTklDIGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgcG9ydCBhdCBjb25uZWN0LgogKgkJCQlBY3RpdmF0ZXMgc3RhdGljIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBwb3J0cyBhdCBlbmFibGUuCkBAIC0xMTcwLDEyICsxMTcwLDEyIEBACiAJCWlvX2FkZHIgPSBpb19iYXNlOwogCX0KIAotI2lmIDAgLy87PyBpZiBhIHN1YnNlcXVlbnQgaGNmX2Nvbm5lY3QgaXMgcHJlY2VlZGVkIGJ5IGFuIGhjZl9kaXNjb25uZWN0IHRoZSB3YWtldXAgaXMgbm90IG5lZWRlZCAhIQorI2lmIDAgLy87PyBpZiBhIHN1YnNlcXVlbnQgaGNmX2Nvbm5lY3QgaXMgcHJlY2VkZWQgYnkgYW4gaGNmX2Rpc2Nvbm5lY3QgdGhlIHdha2V1cCBpcyBub3QgbmVlZGVkICEhCiAjaWYgSENGX1NMRUVQCiAgICAgT1VUX1BPUlRfV09SRCggLi4uLi4rSFJFR19JTywgSFJFR19JT19XQUtFVVBfQVNZTkMgKTsgCSAgICAvL09QVyBub3QgeWV0IHVzZWFibGUKIAlNU0ZfV0FJVCg4MDApOwkJCQkJCQkJLy8gTVNGLWRlZmluZWQgZnVuY3Rpb24gdG8gd2FpdCBuIG1pY3Jvc2Vjb25kcy4KIAlub3RlIHRoYXQgTVNGX1dBSVQgdXNlcyBub3QgeWV0IGRlZmluZWQhISEhIElGQl9JT0Jhc2UgYW5kIElGQl9UaWNrSW5pICh2aWEgUFJPVF9DTlRfSU5JKQotCXNvIGJlIGNhcmVmdWxsIGlmIHRoaXMgY29kZSBpcyByZXN0b3JlZAorCXNvIGJlIGNhcmVmdWwgaWYgdGhpcyBjb2RlIGlzIHJlc3RvcmVkCiAjZW5kaWYgLy8gSENGX1NMRUVQCiAjZW5kaWYgLy8gMAogCkBAIC0xNTYzLDcgKzE1NjMsNyBAQAogKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgTVNGIHRvIHN1cHBseSB0aGUgSENGIHdpdGggbmV3L21vcmUgYnVmZmVycyBmb3IgcmVjZWl2ZSBwdXJwb3Nlcy4KICogVGhlIEhDRiBjYW4gYmUgdXNlZCBpbiAyIGZhc2hpb25zOiB3aXRoIGFuZCB3aXRob3V0IGVuY2Fwc3VsYXRpb24gZm9yIGRhdGEgdHJhbnNmZXIuCiAqIFRoaXMgaXMgY29udHJvbGxlZCBhdCBjb21waWxlIHRpbWUgYnkgdGhlIEhDRl9FTkMgYml0IG9mIHRoZSBIQ0ZfRU5DQVAgc3lzdGVtIGNvbnN0YW50LgotKiBBcyBhIGNvbnNlcXVlbmNlLCBzb21lIGFkZGl0aW9uYWwgY29uc3RhaW50cyBhcHBseSB0byB0aGUgbnVtYmVyIG9mIGRlc2NyaXB0b3IgYW5kIHRoZSBidWZmZXJzIGFzc29jaWF0ZWQKKyogQXMgYSBjb25zZXF1ZW5jZSwgc29tZSBhZGRpdGlvbmFsIGNvbnN0cmFpbnRzIGFwcGx5IHRvIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvciBhbmQgdGhlIGJ1ZmZlcnMgYXNzb2NpYXRlZAogKiB3aXRoIHRoZSBmaXJzdCAyIGRlc2NyaXB0b3JzLiBJbmRlcGVuZGVudCBvZiB0aGUgZW5jYXBzdWxhdGlvbiBmZWF0dXJlLCB0aGUgQ09VTlQgZmllbGRzIGFyZSBpZ25vcmVkLgogKiBBIHNwZWNpYWwgY2FzZSBpcyB0aGUgc3VwcGx5aW5nIG9mIHRoZSBERUxXQSBkZXNjcmlwdG9yLCB3aGljaCBtdXN0IGJlIHN1cHBsaWVkIGFzIHRoZSBmaXJzdCBkZXNjcmlwdG9yLgogKgpAQCAtMTczNSw3ICsxNzM1LDcgQEAKICogLSBpbiBjYXNlIGVuY2Fwc3VsYXRpb24gYnkgdGhlIEhDRiBpcyBzZWxlY3RlZDoKICoJICAtCVRoZSBGcmFtZUxpc3QgZG9lcyBub3QgY29uc2lzdHMgb2YgYXQgbGVhc3QgMiBEZXNjcmlwdG9ycy4KICoJICAtCVRoZSBmaXJzdCBkYXRhYnVmZmVyIGRvZXMgbm90IGNvbnRhaW4gZXhhY3RseSB0aGUgKHNwYWNlIGZvcikgdGhlIDgwMi4xMSBoZWFkZXIgKD09IDI4IHdvcmRzKQotKgkgIC0JVGhlIGZpcnN0IGRhdGFidWZmZXIgZG9lcyBub3QgaGF2ZSBhIHNpemUgdG8gYWRkaXRpb25hbGx5IGFjY29tb2RhdGUgdGhlIDgwMi4zIGhlYWRlciBhbmQgdGhlCisqCSAgLQlUaGUgZmlyc3QgZGF0YWJ1ZmZlciBkb2VzIG5vdCBoYXZlIGEgc2l6ZSB0byBhZGRpdGlvbmFsbHkgYWNjb21tb2RhdGUgdGhlIDgwMi4zIGhlYWRlciBhbmQgdGhlCiAqCQlTTkFQIGhlYWRlciBvZiB0aGUgZnJhbWUgYWZ0ZXIgZW5jYXBzdWxhdGlvbiAoPT0gMzkgd29yZHMpLgogKgkgIC0JVGhlIHNlY29uZCBkYXRhYnVmZmVyIGRvZXMgbm90IGNvbnRhaW4gYXQgbGVhc3QgREEsIFNBIGFuZCAndHlwZS9sZW5ndGgnICg9PTE0IGJ5dGVzIG9yIDcgd29yZHMpCiAqISEgVGhlIDJuZCBwYXJ0IG9mIHRoZSBsaXN0IG9mIGFzc2VydHMgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIHB1dF9mcmFtZV9sc3QsIGluIG9yZGVyIHRvIGdldApAQCAtMTc2MiwxNCArMTc2MiwxNCBAQAogKgktIENvcHkgREEvU0EgZmllbGRzIGZyb20gdGhlIDJuZCBidWZmZXIKICogICAtIENhbGN1bGF0ZSB0b3RhbCBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgKHNuYXAtaGVhZGVyICsgdHlwZS1maWVsZCArIHRoZSBsZW5ndGggb2YgYWxsIGJ1ZmZlciBmcmFnbWVudHMKICogICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgODAyLjMgZnJhbWUgKGkuZSBhbGwgZGVzY3JpcHRvcnMgZXhjZXB0IHRoZSBmaXJzdCksIGJ1dCBub3QgdGhlIERlc3RpbmF0aW9uQWRkcmVzcywKLSogICAgIFNvdXJjZUFkZHJlc3MgYW5kIGxlbmdodC1maWVsZCkKKyogICAgIFNvdXJjZUFkZHJlc3MgYW5kIGxlbmd0aC1maWVsZCkKICogICAgIEFzc2VydCB0aGUgbWVzc2FnZSBsZW5ndGgKICoJICBXcml0ZSBsZW5ndGguIE5vdGUgdGhhdCB0aGUgbWVzc2FnZSBpcyBpbiBCRSBmb3JtYXQsIGhlbmNlIG9uIExFIHBsYXRmb3JtcyB0aGUgbGVuZ3RoIG11c3QgYmUgY29udmVydGVkCiAqCSAgOz8gVEhJUyBJUyBOT1QgV0hBVCBDVVJSRU5UTFkgSVMgSU1QTEVNRU5URUQKICoJLSBXcml0ZSBzbmFwIGhlYWRlci4gTm90ZSB0aGF0IHRoZSBsYXN0IGJ5dGUgb2YgdGhlIHNuYXAgaGVhZGVyIGlzIE5PVCBjb3BpZWQsIHRoYXQgYnl0ZSBpcyBhbHJlYWR5IGluCiAqCSAgcGxhY2UgYXMgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIGhjZl9lbmNhcC4KICoJTm90ZSB0aGF0IHRoZXJlIGFyZSBtYW55IHdheXMgdG8gc2tpbiBhIGNhdC4gVG8gZXhwcmVzcyB0aGUgb2Zmc2V0cyBpbiB0aGUgMXN0IGJ1ZmZlciB3aGlsZSB3cml0aW5nCi0qCXRoZSBzbmFwIGhlYWRlciwgSEZTX1RZUEUgaXMgY2hvb3NlbiBhcyBhIHJlZmVyZW5jZSBwb2ludCB0byBtYWtlIGl0IGVhc2llciB0byBncmFzcCB0aGF0IHRoZSBzbmFwIGhlYWRlcgorKgl0aGUgc25hcCBoZWFkZXIsIEhGU19UWVBFIGlzIGNob3NlbiBhcyBhIHJlZmVyZW5jZSBwb2ludCB0byBtYWtlIGl0IGVhc2llciB0byBncmFzcCB0aGF0IHRoZSBzbmFwIGhlYWRlcgogKglhbmQgZW5jYXBzdWFsdGlvbiB0eXBlIGFyZSBhdCBsZWFzdCByZWxhdGl2ZSBpbiB0aGUgcmlnaHQuCiAqODoJbW9kaWZ5IDFzdCBkZXNjcmlwdG9yIHRvIHJlZmxlY3QgbW92ZWQgcGFydCBvZiB0aGUgODAyLjMgaGVhZGVyICsgU25hcC1oZWFkZXIKICoJbW9kaWZ5IDJuZCBkZXNjcmlwdG9yIHRvIHNraXAgdGhlIG1vdmVkIHBhcnQgb2YgdGhlIDgwMi4zIGhlYWRlciAoREEvU0EKQEAgLTE5MzMsNyArMTkzMyw3IEBACiAqCUhDRl9TVUNDRVNTCQkJU3VjY2VzcwogKiEhCXZpYSBjbWRfZXhlICggdHlwZSA+PSBDRkdfUklEX0ZXX01JTiApCiAqCUhDRl9FUlJfTk9fTklDCQlOSUMgcmVtb3ZlZCBkdXJpbmcgcmV0cmlldmFsCi0qCUhDRl9FUlJfVElNRV9PVVQJRXhwZWN0ZWQgSGVybWVzIGV2ZW50IGRpZCBub3Qgb2NjdXJlIGluIGV4cGVjdGVkIHRpbWUKKyoJSENGX0VSUl9USU1FX09VVAlFeHBlY3RlZCBIZXJtZXMgZXZlbnQgZGlkIG5vdCBvY2N1ciBpbiBleHBlY3RlZCB0aW1lCiAqISEJdmlhIGNtZF9leGUgYW5kIHNldHVwX2JhcCAodHlwZSA+PSBDRkdfUklEX0ZXX01JTiApCiAqCUhDRl9FUlJfREVGVU5DVF8uLi4JSENGIGlzIGluIGRlZnVuY3QgbW9kZSAoYml0cyAweDdGIHJlZmxlY3QgY2F1c2UpCiAqCkBAIC0yOTU4LDcgKzI5NTgsNyBAQAogKgloY2Zfc2VydmljZV9uaWMgaXMgYWxzbyBza2lwcGVkIGluIHRob3NlIGNhc2VzLgogKglUbyBwcmV2ZW50IHRoYXQgaGNmX3NlcnZpY2VfbmljIHJlcG9ydHMgYm9ndXMgaW5mb3JtYXRpb24gdG8gdGhlIE1TRiB3aXRoIGFsbCAtIHBvc3NpYmx5IGRpZmZpY3VsdCB0bwogKglkZWJ1ZyAtIHVuZGVzaXJhYmxlIHNpZGUgZWZmZWN0cywgaXQgaXMgcGFyYW1vdW50IHRvIGNoZWNrIHRoZSBOSUMgcHJlc2VuY2UuIEluIGZvcm1lciBkYXlzIHRoZSBwcmVzZW5jZQotKgl0ZXN0IHdhcyBiYXNlZCBvbiB0aGUgSGVybWVzIHJlZ2lzdGVyIEhSRUdfU1dfMC4gU2luY2UgaW4gSENGX0FDVF9JTlRfT0ZGIGlzIGNob29zZW4gZm9yIHN0cmF0ZWd5IGJhc2VkIG9uCisqCXRlc3Qgd2FzIGJhc2VkIG9uIHRoZSBIZXJtZXMgcmVnaXN0ZXIgSFJFR19TV18wLiBTaW5jZSBpbiBIQ0ZfQUNUX0lOVF9PRkYgaXMgY2hvc2VuIGZvciBzdHJhdGVneSBiYXNlZCBvbgogKglIUkVHX0VWX1NUQVQsIHRoaXMgaXMgbm93IGFsc28gdXNlZCBpbiBoY2Zfc2VydmljZV9uaWMuIFRoZSBtb3RpdmF0aW9uIHRvIGNoYW5nZSBzdHJhdGVneSBpcyBwYXJ0bHkKICoJZHVlIHRvIGluY29uc2lzdGVudCBGL1cgaW1wbGVtZW50YXRpb25zIHdpdGggcmVzcGVjdCB0byBIUkVHX1NXXzAgbWFuaXB1bGF0aW9uIGFyb3VuZCByZXNldCBhbmQgZG93bmxvYWQuCiAqCU5vdGUgdGhhdCBpbiBwb2xsZWQgZW52aXJvbm1lbnRzIENhcmQgUmVtb3ZhbCBpcyBub3QgZGV0ZWN0ZWQgYnkgSU5UX09GRiB3aGljaCBtYWtlcyB0aGUgY2hlY2sgaW4KQEAgLTQwNDgsNyArNDA0OCw3IEBACiAJSENGQVNTRVJUKCB3b3JkX2xlbiA9PSAwIHx8IHdvcmRfbGVuID09IDIgfHwgd29yZF9sZW4gPT0gNCwgd29yZF9sZW4gKQogCUhDRkFTU0VSVCggd29yZF9sZW4gPT0gMCB8fCAoKGhjZl8zMilidWZwICYgMSApID09IDAsIChoY2ZfMzIpYnVmcCApCiAJSENGQVNTRVJUKCB3b3JkX2xlbiA8PSBsZW4sIE1FUkdFMiggd29yZF9sZW4sIGxlbiApICkKLQkvL3NlZSBwdXRfZnJhZyBmb3IgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24sIGJ1dCBiZSBjYXJlZnVsbCBhYm91dCB3aGF0IGFyZSBpbnQncyBhbmQgd2hhdCBhcmUKKwkvL3NlZSBwdXRfZnJhZyBmb3IgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24sIGJ1dCBiZSBjYXJlZnVsIGFib3V0IHdoYXQgYXJlIGludCdzIGFuZCB3aGF0IGFyZQogCS8vaGNmXzE2J3MKIAlpZiAoIHdvcmRfbGVuICkgewkJCQkJCQkJLy8uICBpZiB0aGVyZSBpcyBhbnl0aGluZyB0byBjb252ZXJ0CiBoY2ZfOCBjOwpAQCAtNDcxMiw3ICs0NzEyLDcgQEAKICoJTm90ZSB0aGF0IGxlbiBpcyB1bnNpZ25lZCwgc28gZXZlbiBNU0YgSS9GIHZpb2xhdGlvbiB3b3JrcyBvdXQgTy5LLgogKglUaGUgJzInIGluIHRoZSBleHByZXNzaW9uICJsZW4rMiIgaXMgdXNlZCBiZWNhdXNlIDEgd29yZCBpcyBuZWVkZWQgZm9yIEwgaXRzZWxmIGFuZCAxIHdvcmQgaXMgbmVlZGVkCiAqCWZvciB0aGUgemVyby1zZW50aW5lbAotKjg6CXVwZGF0ZSBNYWlsQm94IEluZm8gbGVuZ3RoIHJlcG9ydCB0byBNU0Ygd2l0aCAib2xkZXN0IiBNQiBJbmZvIEJsb2NrIHNpemUuIEJlIGNhcmVmdWxsIGhlcmUsIGlmIHlvdSBnZXQKKyo4Ogl1cGRhdGUgTWFpbEJveCBJbmZvIGxlbmd0aCByZXBvcnQgdG8gTVNGIHdpdGggIm9sZGVzdCIgTUIgSW5mbyBCbG9jayBzaXplLiBCZSBjYXJlZnVsIGhlcmUsIGlmIHlvdSBnZXQKICoJaGVyZSBiZWZvcmUgdGhlIE1haWxCb3ggaXMgcmVnaXN0ZXJlZCwgeW91IGNhbid0IHJlYWQgZnJvbSB0aGUgYnVmZmVyIGFkZHJlc3NlZCBieSBJRkJfTUJwIChpdCBpcyB0aGUKICoJTnVsbCBidWZmZXIpIHNvIGRvbid0IG1vdmUgdGhpcyBjb2RlIHRpbGwgdGhlIGVuZCBvZiB0aGlzIHJvdXRpbmUgYnV0IGtlZXAgaXQgd2hlcmUgdGhlcmUgaXMgZ2FydWFudGVlZAogKglhIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZmRlZi5oIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmZGVmLmgKaW5kZXggNGUyMDE3MS4uY2IxOTY2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmZGVmLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmZGVmLmgKQEAgLTMxNSw3ICszMTUsNyBAQAogCiAjaWYgSENGX0RNQQogLy8qKioqKioqKioqKioqKioqKioqKioqKioqIERNQSAoYnVzIG1hc3RlcmluZykKLQkvLyBCZSBjYXJlZnVsbCB0byB1c2UgdGhlc2UgcmVnaXN0ZXJzIG9ubHkgYXQgYSBnZW51aW5lIDMyIGJpdHMgTklDCisJLy8gQmUgY2FyZWZ1bCB0byB1c2UgdGhlc2UgcmVnaXN0ZXJzIG9ubHkgYXQgYSBnZW51aW5lIDMyIGJpdHMgTklDCiAJLy8gT24gMTYgYml0cyBOSUNzLCB0aGVzZSBhZGRyZXNzZXMgYXJlIG1hcHBlZCBpbnRvIHRoZSByYW5nZSAweDAwIHRocm91Z2ggMHgzRiB3aXRoIGFsbCBjb25zZXF1ZW5jZXMKIAkvLyB0aGVyZW9mLCBlLmcuICBIUkVHX0RNQV9DVFJMIHJlZ2lzdGVyIG1hcHMgdG8gSFJFR19DTUQuCiAjZGVmaW5lIEhSRUdfRE1BX0NUUkwJCQkJCQkweDAwNDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL3dsX3dleHQuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL3dsX3dleHQuYwppbmRleCA5ZTVkYTA4Li41MjJhMzEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi93bF93ZXh0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvd2xfd2V4dC5jCkBAIC0yNTc1LDcgKzI1NzUsNyBAQAogICAgICAgICAgKiBUaGlzIGxvb2tzIGxpa2UgYSBuaWNlIHBsYWNlIHRvIHRlc3QgaWYgdGhlIEhDRiBpcyBzdGlsbAogICAgICAgICAgKiBjb21tdW5pY2F0aW5nIHdpdGggdGhlIGNhcmQuIEl0IHNlZW1zIHRoYXQgc29tZXRpbWVzIEJBUF8xCiAgICAgICAgICAqIGdldHMgY29ycnVwdGVkLiBCeSBsb29raW5nIGF0IHRoZSBjb21tZW50cyBpbiBIQ0YgdGhlCi0gICAgICAgICAqIGNhdXNlIGlzIHN0aWxsIGEgbWlzdGVyeS4gT2theSwgdGhlIGNvbW11bmljYXRpb24gdG8gdGhlCisgICAgICAgICAqIGNhdXNlIGlzIHN0aWxsIGEgbXlzdGVyeS4gT2theSwgdGhlIGNvbW11bmljYXRpb24gdG8gdGhlCiAgICAgICAgICAqIGNhcmQgaXMgZGVhZCwgcmVzZXQgdGhlIGNhcmQgdG8gcmV2aXZlLgogICAgICAgICAgKi8KIAlpZigobHAtPmhjZkN0eC5JRkJfQ2FyZFN0YXQgJiBDQVJEX1NUQVRfREVGVU5DVCkgIT0gMCkKQEAgLTM5MjQsNyArMzkyNCw3IEBACiAJbWVtc2V0KCBtc2csIDAsIHNpemVvZiggbXNnICkpOwogCiAKLQkvKiBCZWN1YXNlIE1JQyBmYWlsdXJlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFdpcmVsZXNzIEV4dGVuc2lvbnMgeWV0LCB0aGV5CisJLyogQmVjYXVzZSBNSUMgZmFpbHVyZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBXaXJlbGVzcyBFeHRlbnNpb25zIHlldCwgdGhleQogCSAgIG11c3QgYmUgcGFzc2VkIGFzIGEgc3RyaW5nIHVzaW5nIGFuIElXRVZDVVNUT00gZXZlbnQuIEluIG9yZGVyIGZvciB0aGUKIAkgICBldmVudCB0byBiZSBlZmZlY3RpdmUsIHRoZSBzdHJpbmcgZm9ybWF0IG11c3QgYmUga25vd24gYnkgYm90aCB0aGUKIAkgICBkcml2ZXIgYW5kIHRoZSBzdXBwbGljYW50LiBUaGUgZm9sbG93aW5nIGlzIHRoZSBzdHJpbmcgZm9ybWF0IHVzZWQgYnkgdGhlCkBAIC0zOTk5LDcgKzM5OTksNyBAQAogCQltZW1jcHkoICZkYXRhLnJhd0RhdGEsICYoIGxwLT5sdHZSZWNvcmQudS51OFsxXSApLCA4OCApOwogCQl3cGFfaWUgPSB3bF9wYXJzZV93cGFfaWUoICZkYXRhLCAmbGVuZ3RoICk7CiAKLQkJLyogQmVjdWFzZSB0aGlzIGV2ZW50IChBc3NvY2lhdGlvbiBXUEEtSUUpIGlzIG5vdCBwYXJ0IG9mIHRoZSBXaXJlbGVzcworCQkvKiBCZWNhdXNlIHRoaXMgZXZlbnQgKEFzc29jaWF0aW9uIFdQQS1JRSkgaXMgbm90IHBhcnQgb2YgdGhlIFdpcmVsZXNzCiAJCUV4dGVuc2lvbnMgeWV0LCBpdCBtdXN0IGJlIHBhc3NlZCBhcyBhIHN0cmluZyB1c2luZyBhbiBJV0VWQ1VTVE9NIGV2ZW50LgogCQlJbiBvcmRlciBmb3IgdGhlIGV2ZW50IHRvIGJlIGVmZmVjdGl2ZSwgdGhlIHN0cmluZyBmb3JtYXQgbXVzdCBiZSBrbm93bgogCQlieSBib3RoIHRoZSBkcml2ZXIgYW5kIHRoZSBzdXBwbGljYW50LiBUaGUgZm9sbG93aW5nIGlzIHRoZSBzdHJpbmcgZm9ybWF0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMjUvVE9ETyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyNS9UT0RPCmluZGV4IDE0YWE0MTUuLjk0MDMyYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyNS9UT0RPCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyNS9UT0RPCkBAIC0xLDcgKzEsNyBAQAogRmlyc3Qgb2YgYWxsLCB0aGUgYmVzdCB0aGluZyB3b3VsZCBiZSB0aGF0IHRoaXMgZHJpdmVyIGJlY29tZXMgb2Jzb2x0ZSBieQogYWRkaW5nIHN1cHBvcnQgZm9yIEhlcm1lcyBJSSBhbmQgSGVybWVzIElJLjUgY2FyZHMgdG8gdGhlIGV4aXN0aW5nIG9yaW5vY28KIGRyaXZlci4gVGhlIG9yaW5vY28gZHJpdmVyIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEhlcm1lcyBJIGJhc2VkIGNhcmRzLgotU2luY2UgdGhpcyB3aWxsIG5vdCBoYXBwZW4gYnkgbWFnaWMgYW5kIGhhcyBub3QgaGFwcGVuZCB1bnRpbCBub3cgdGhpcworU2luY2UgdGhpcyB3aWxsIG5vdCBoYXBwZW4gYnkgbWFnaWMgYW5kIGhhcyBub3QgaGFwcGVuZWQgdW50aWwgbm93IHRoaXMKIGRyaXZlciBwcm92aWRlcyBhIHN0b3AtZ2FwIHNvbHV0aW9uIGZvciB0aGVzZSB0eXBlIG9mIGNhcmRzLgogCiBIYXZpbmcgc2FpZCB0aGF0LCB0aGUgZm9sbG93aW5nIHdpc2hsaXN0IGNvbWVzIHRvIG1pbmQgdG8gbWFrZSB0aGUgZHJpdmVyCkBAIC0xOCw3ICsxOCw3IEBACiAJLSB0aGUgZHJpdmVyIGlzIHNwbGl0IGludG8gYSBIZXJtZXMgSUkgYW5kIGEgSGVybWVzIElJLjUgcGFydCwgaXQKIAkgIHdvdWxkIGJlIG5pY2UgdG8gaGFuZGxlIGJvdGggd2l0aCBvbmUgbW9kdWxlIGluc3RlYWQgb2YgdHdvCiAJLSByZXZpZXcgYnkgdGhlIHdpcmVsZXNzIGRldmVsb3BlciBjb21tdW5pdHkKLQktIHZlcmlmeSB0aGUgY29kZSBhZ2FpbnN0IHRoZSBjb2Rpbmcgc3RhbmRhcmRzIGZvciBhIHByb3BwZXIgbGludXgKKwktIHZlcmlmeSB0aGUgY29kZSBhZ2FpbnN0IHRoZSBjb2Rpbmcgc3RhbmRhcmRzIGZvciBhIHByb3BlciBsaW51eAogCSAgZHJpdmVyCiAJLSByZXNvbHZlIGxpY2Vuc2UgaXNzdWVzICg/KQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJzdGEuYyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMnN0YS5jCmluZGV4IGVkNzUxZjQuLjIxZjI1YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMnN0YS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFuLW5nL3ByaXNtMnN0YS5jCkBAIC0xOTc2LDcgKzE5NzYsNyBAQAogCiAJd2xhbmRldi0+bnNkY2FwcyA9IFA4MDIxMV9OU0RDQVBfSFdGUkFHTUVOVCB8IFA4MDIxMV9OU0RDQVBfQVVUT0pPSU47CiAKLQkvKiBJbml0aWFsaXplIHRoZSBkZXZpY2UgcHJpdmF0ZSBkYXRhIHN0dWN0dXJlLiAqLworCS8qIEluaXRpYWxpemUgdGhlIGRldmljZSBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiAqLwogCWh3LT5kb3QxMV9kZXNpcmVkX2Jzc190eXBlID0gMTsKIAogCXJldHVybiB3bGFuZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZiX3NldG1vZGUuYyBiL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Yl9zZXRtb2RlLmMKaW5kZXggODc2MmE1My4uOTY2OWMyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZiX3NldG1vZGUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmJfc2V0bW9kZS5jCkBAIC03ODM0LDcgKzc4MzQsNyBAQAogCQkJCQkJPT0gNjAwKSkgewogCQkJaW5kZXgrKzsKIAkJfQotCQkvKiBBbGFuIDEwLzE5LzIwMDc7IGRvIHRoZSBzaW1pbGlhciBhZGp1c3RtZW50IGxpa2UgWEdJU2VhcmNoQ1JUMVJhdGUoKSAqLworCQkvKiBBbGFuIDEwLzE5LzIwMDc7IGRvIHRoZSBzaW1pbGFyIGFkanVzdG1lbnQgbGlrZSBYR0lTZWFyY2hDUlQxUmF0ZSgpICovCiAJCWlmICgocFZCSW5mby0+UmVmSW5kZXhbUmVmcmVzaFJhdGVUYWJsZUluZGV4XS5YUmVzID09IDEwMjQpCiAJCQkJJiYgKHBWQkluZm8tPlJlZkluZGV4W1JlZnJlc2hSYXRlVGFibGVJbmRleF0uWVJlcwogCQkJCQkJPT0gNzY4KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZnYXR5cGVzLmggYi9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmdhdHlwZXMuaAppbmRleCA0Yjg3OTUxLi5kNjEzZTg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmdhdHlwZXMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmdhdHlwZXMuaApAQCAtODUsNyArODUsNyBAQAogCQkJCQkgICAgdW5zaWduZWQgbG9uZyAqKTsKIH07CiAKLS8qIEFkZHRpb25hbCBJT0NUTCBmb3IgY29tbXVuaWNhdGlvbiB4Z2lmYiA8PiBYIGRyaXZlciAgICAgICAgKi8KKy8qIEFkZGl0aW9uYWwgSU9DVEwgZm9yIGNvbW11bmljYXRpb24geGdpZmIgPD4gWCBkcml2ZXIgICAgICAgICovCiAvKiBJZiBjaGFuZ2luZyB0aGlzLCB4Z2lmYi5oIG11c3QgYWxzbyBiZSBjaGFuZ2VkIChmb3IgeGdpZmIpICovCiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfYWx1YS5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfYWx1YS5jCmluZGV4IDJjNWZjZmUuLjMwY2JiNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2FsdWEuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9hbHVhLmMKQEAgLTQ5Niw4ICs0OTYsOCBAQAogCW5vbm9wX2RlbGF5X21zZWNzID0gdGdfcHRfZ3AtPnRnX3B0X2dwX25vbm9wX2RlbGF5X21zZWNzOwogCXNwaW5fdW5sb2NrKCZ0Z19wdF9ncF9tZW0tPnRnX3B0X2dwX21lbV9sb2NrKTsKIAkvKgotCSAqIFByb2Nlc3MgQUxVQV9BQ0NFU1NfU1RBVEVfQUNUSVZFX09QVE1JWkVEIGluIGEgc2VwZXJhdGUgY29uZGl0aW9uYWwKLQkgKiBzdGF0ZW1lbnQgc28gdGhlIGNvbXBsaWVyIGtub3dzIGV4cGxpY3RseSB0byBjaGVjayB0aGlzIGNhc2UgZmlyc3QuCisJICogUHJvY2VzcyBBTFVBX0FDQ0VTU19TVEFURV9BQ1RJVkVfT1BUTUlaRUQgaW4gYSBzZXBhcmF0ZSBjb25kaXRpb25hbAorCSAqIHN0YXRlbWVudCBzbyB0aGUgY29tcGlsZXIga25vd3MgZXhwbGljaXRseSB0byBjaGVjayB0aGlzIGNhc2UgZmlyc3QuCiAJICogRm9yIHRoZSBPcHRpbWl6ZWQgQUxVQSBhY2Nlc3Mgc3RhdGUgY2FzZSwgd2Ugd2FudCB0byBwcm9jZXNzIHRoZQogCSAqIGluY29taW5nIGZhYnJpYyBjbWQgQVNBUC4uCiAJICovCkBAIC0xMTU3LDcgKzExNTcsNyBAQAogCQlzcGluX3VubG9jaygmbHVfZ3AtPmx1X2dwX2xvY2spOwogCQkvKgogCQkgKgotCQkgKiBsdV9ncF9tZW0gaXMgYXNzb2ljYXRlZCB3aXRoIGEgc2luZ2xlCisJCSAqIGx1X2dwX21lbSBpcyBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUKIAkJICogc3RydWN0IHNlX2RldmljZS0+ZGV2X2FsdWFfbHVfZ3BfbWVtLCBhbmQgaXMgcmVsZWFzZWQgd2hlbgogCQkgKiBzdHJ1Y3Qgc2VfZGV2aWNlIGlzIHJlbGVhc2VkIHZpYSBjb3JlX2FsdWFfZnJlZV9sdV9ncF9tZW0oKS4KIAkJICoKQEAgLTE0MjksNyArMTQyOSw3IEBACiAJCX0KIAkJc3Bpbl91bmxvY2soJnRnX3B0X2dwLT50Z19wdF9ncF9sb2NrKTsKIAkJLyoKLQkJICogdGdfcHRfZ3BfbWVtIGlzIGFzc29pY2F0ZWQgd2l0aCBhIHNpbmdsZQorCQkgKiB0Z19wdF9ncF9tZW0gaXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlCiAJCSAqIHNlX3BvcnQtPnNlcF9hbHVhX3RnX3B0X2dwX21lbSwgYW5kIGlzIHJlbGVhc2VkIHZpYQogCQkgKiBjb3JlX2FsdWFfZnJlZV90Z19wdF9ncF9tZW0oKS4KIAkJICoKQEAgLTE5NjMsNyArMTk2Myw3IEBACiAJCXByaW50ayhLRVJOX0lORk8gIiVzOiBFbmFibGluZyBBTFVBIEVtdWxhdGlvbiBmb3IgU1BDLTMiCiAJCQkiIGRldmljZVxuIiwgVFJBTlNQT1JUKGRldiktPm5hbWUpOwogCQkvKgotCQkgKiBBc3NvaWNhdGUgdGhpcyBzdHJ1Y3Qgc2VfZGV2aWNlIHdpdGggdGhlIGRlZmF1bHQgQUxVQQorCQkgKiBBc3NvY2lhdGUgdGhpcyBzdHJ1Y3Qgc2VfZGV2aWNlIHdpdGggdGhlIGRlZmF1bHQgQUxVQQogCQkgKiBMVU4gR3JvdXAuCiAJCSAqLwogCQlsdV9ncF9tZW0gPSBjb3JlX2FsdWFfYWxsb2NhdGVfbHVfZ3BfbWVtKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCmluZGV4IDNmYjhlMzIuLmQyNWUyMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2RldmljZS5jCkBAIC0zNzEsNyArMzcxLDcgQEAKIAlpZiAoIShlbmFibGUpKSB7CiAJCS8qCiAJCSAqIGRldmUtPnNlX2x1bl9hY2wgd2lsbCBiZSBOVUxMIGZvciBkZW1vLW1vZGUgY3JlYXRlZCBMVU5zCi0JCSAqIHRoYXQgaGF2ZSBub3QgYmVlbiBleHBsaWN0bHkgY29uY2VydGVkIHRvIE1hcHBlZExVTnMgLT4KKwkJICogdGhhdCBoYXZlIG5vdCBiZWVuIGV4cGxpY2l0bHkgY29uY2VydGVkIHRvIE1hcHBlZExVTnMgLT4KIAkJICogc3RydWN0IHNlX2x1bl9hY2wsIGJ1dCB3ZSByZW1vdmUgZGV2ZS0+YWx1YV9wb3J0X2xpc3QgZnJvbQogCQkgKiBwb3J0LT5zZXBfYWx1YV9saXN0LiBUaGlzIGFsc28gbWVhbnMgdGhhdCBhY3RpdmUgVUFzIGFuZAogCQkgKiBOb2RlQUNMIGNvbnRleHQgc3BlY2lmaWMgUFIgbWV0YWRhdGEgZm9yIGRlbW8tbW9kZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX2xpYi5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX2xpYi5jCmluZGV4IGQ1N2FkNjcuLjFlMTkzZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19saWIuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfbGliLmMKQEAgLTQzMyw3ICs0MzMsNyBAQAogCQkvKgogCQkgKiBHbyBhaGVhZCBhbmQgZG8gdGhlIGxvd2VyIGNhc2UgY29udmVyc2lvbiBvZiB0aGUgcmVjZWl2ZWQKIAkJICogMTIgQVNDSUkgY2hhcmFjdGVycyByZXByZXNlbnRpbmcgdGhlIElTSUQgaW4gdGhlIFRyYW5zcG9ydElECi0JCSAqIGZvciBjb21wYXJpc2lvbiBhZ2FpbnN0IHRoZSBydW5uaW5nIGlTQ1NJIHNlc3Npb24ncyBJU0lEIGZyb20KKwkJICogZm9yIGNvbXBhcmlzb24gYWdhaW5zdCB0aGUgcnVubmluZyBpU0NTSSBzZXNzaW9uJ3MgSVNJRCBmcm9tCiAJCSAqIGlzY3NpX3RhcmdldC5jOmxpb19zZXNzX2dldF9pbml0aWF0b3Jfc2lkKCkKIAkJICovCiAJCWZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9maWxlLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9maWxlLmMKaW5kZXggMDJmNTUzYS4uMTUwYzQzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuYwpAQCAtMTU5LDcgKzE1OSw3IEBACiAjZW5kaWYKIC8qCWZsYWdzIHw9IE9fRElSRUNUOyAqLwogCS8qCi0JICogSWYgZmRfYnVmZmVyZWRfaW89MSBoYXMgbm90IGJlZW4gc2V0IGV4cGxpY3RseSAodGhlIGRlZmF1bHQpLAorCSAqIElmIGZkX2J1ZmZlcmVkX2lvPTEgaGFzIG5vdCBiZWVuIHNldCBleHBsaWNpdGx5ICh0aGUgZGVmYXVsdCksCiAJICogdXNlIE9fU1lOQyB0byBmb3JjZSBGSUxFSU8gd3JpdGVzIHRvIGRpc2suCiAJICovCiAJaWYgKCEoZmRfZGV2LT5mYmRfZmxhZ3MgJiBGREJEX1VTRV9CVUZGRVJFRF9JTykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wci5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfcHIuYwppbmRleCAyNTIxZjc1Li5hNzlmNTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wci5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3ByLmMKQEAgLTQ3OCw3ICs0NzgsNyBAQAogCQlicmVhazsKIAl9CiAJLyoKLQkgKiBDYXNlIHdoZXJlIHRoZSBDREIgaXMgZXhwbGljdGx5IGFsbG93ZWQgaW4gdGhlIGFib3ZlIHN3aXRjaAorCSAqIENhc2Ugd2hlcmUgdGhlIENEQiBpcyBleHBsaWNpdGx5IGFsbG93ZWQgaW4gdGhlIGFib3ZlIHN3aXRjaAogCSAqIHN0YXRlbWVudC4KIAkgKi8KIAlpZiAoIShyZXQpICYmICEob3RoZXJfY2RiKSkgewpAQCAtMzczNSw3ICszNzM1LDcgQEAKIAkJcmV0dXJuIFBZWF9UUkFOU1BPUlRfTFVfQ09NTV9GQUlMVVJFOwogCiAJaWYgKGNtZC0+ZGF0YV9sZW5ndGggPCAyNCkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJTUEMtUFI6IFJlY2lldmVkIFBSIE9VVCBwYXJhbWV0ZXIgbGlzdCIKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiU1BDLVBSOiBSZWNlaXZlZCBQUiBPVVQgcGFyYW1ldGVyIGxpc3QiCiAJCQkiIGxlbmd0aCB0b28gc21hbGw6ICV1XG4iLCBjbWQtPmRhdGFfbGVuZ3RoKTsKIAkJcmV0dXJuIFBZWF9UUkFOU1BPUlRfSU5WQUxJRF9QQVJBTUVURVJfTElTVDsKIAl9CkBAIC0zNzc4LDcgKzM3NzgsNyBAQAogCSAqLwogCWlmICghKHNwZWNfaV9wdCkgJiYgKChjZGJbMV0gJiAweDFmKSAhPSBQUk9fUkVHSVNURVJfQU5EX01PVkUpICYmCiAJICAgIChjbWQtPmRhdGFfbGVuZ3RoICE9IDI0KSkgewotCQlwcmludGsoS0VSTl9XQVJOSU5HICJTUEMtUFI6IFJlY2lldmVkIFBSIE9VVCBpbGxlZ2FsIHBhcmFtZXRlciIKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiU1BDLVBSOiBSZWNlaXZlZCBQUiBPVVQgaWxsZWdhbCBwYXJhbWV0ZXIiCiAJCQkiIGxpc3QgbGVuZ3RoOiAldVxuIiwgY21kLT5kYXRhX2xlbmd0aCk7CiAJCXJldHVybiBQWVhfVFJBTlNQT1JUX0lOVkFMSURfUEFSQU1FVEVSX0xJU1Q7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV90cmFuc3BvcnQuYwppbmRleCBiZjZhYThhLi45NTgzYjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV90cmFuc3BvcnQuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV90cmFuc3BvcnQuYwpAQCAtNzE5LDcgKzcxOSw3IEBACiAJCQljbWQtPnNlX2x1biA9IE5VTEw7CiAJCQkvKgogCQkJICogU29tZSBmYWJyaWMgbW9kdWxlcyBsaWtlIHRjbV9sb29wIGNhbiByZWxlYXNlCi0JCQkgKiB0aGVpciBpbnRlcm5hbGx5IGFsbG9jYXRlZCBJL08gcmVmcmVuY2Ugbm93IGFuZAorCQkJICogdGhlaXIgaW50ZXJuYWxseSBhbGxvY2F0ZWQgSS9PIHJlZmVyZW5jZSBub3cgYW5kCiAJCQkgKiBzdHJ1Y3Qgc2VfY21kIG5vdy4KIAkJCSAqLwogCQkJaWYgKENNRF9URk8oY21kKS0+Y2hlY2tfc3RvcF9mcmVlICE9IE5VTEwpIHsKQEAgLTIwMjksNyArMjAyOSw3IEBACiAJICogSWYgdGhlIHJlY2VpdmVkIENEQiBoYXMgYWxlYWR5IGJlZW4gQUJPUlRFRCBieSB0aGUgZ2VuZXJpYwogCSAqIHRhcmdldCBlbmdpbmUsIHdlIG5vdyBjYWxsIHRyYW5zcG9ydF9jaGVja19hYm9ydGVkX3N0YXR1cygpCiAJICogdG8gcXVldWUgYW55IGRlbGF0ZWQgVEFTS19BQk9SVEVEIHN0YXR1cyBmb3IgdGhlIHJlY2VpdmVkIENEQiB0byB0aGUKLQkgKiBmYWJyaWMgbW9kdWxlIGFzIHdlIGFyZSBleHBlY3Rpbmcgbm8gZnV0aGVyIGluY29taW5nIERBVEEgT1VUCisJICogZmFicmljIG1vZHVsZSBhcyB3ZSBhcmUgZXhwZWN0aW5nIG5vIGZ1cnRoZXIgaW5jb21pbmcgREFUQSBPVVQKIAkgKiBzZXF1ZW5jZXMgYXQgdGhpcyBwb2ludC4KIAkgKi8KIAlpZiAodHJhbnNwb3J0X2NoZWNrX2Fib3J0ZWRfc3RhdHVzKGNtZCwgMSkgIT0gMCkKQEAgLTI1MDEsNyArMjUwMSw3IEBACiAJaWYgKFNFX0RFVihjbWQpLT5kZXZfdGFza19hdHRyX3R5cGUgIT0gU0FNX1RBU0tfQVRUUl9FTVVMQVRFRCkKIAkJcmV0dXJuIDE7CiAJLyoKLQkgKiBDaGVjayBmb3IgdGhlIGV4aXN0YW5jZSBvZiBIRUFEX09GX1FVRVVFLCBhbmQgaWYgdHJ1ZSByZXR1cm4gMQorCSAqIENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIEhFQURfT0ZfUVVFVUUsIGFuZCBpZiB0cnVlIHJldHVybiAxCiAJICogdG8gYWxsb3cgdGhlIHBhc3NlZCBzdHJ1Y3Qgc2VfY21kIGxpc3Qgb2YgdGFza3MgdG8gdGhlIGZyb250IG9mIHRoZSBsaXN0LgogCSAqLwogCSBpZiAoY21kLT5zYW1fdGFza19hdHRyID09IFRBU0tfQVRUUl9IT1EpIHsKQEAgLTI1NDcsNyArMjU0Nyw3IEBACiAJaWYgKGF0b21pY19yZWFkKCZTRV9ERVYoY21kKS0+ZGV2X29yZGVyZWRfc3luYykgIT0gMCkgewogCQkvKgogCQkgKiBPdGhlcndpc2UsIGFkZCBjbWQgdy8gdGFza3MgdG8gZGVsYXllZCBjbWQgcXVldWUgdGhhdAotCQkgKiB3aWxsIGJlIGRyYWluZWQgdXBvbiBjb21wZXRpb24gb2YgSEVBRF9PRl9RVUVVRSB0YXNrLgorCQkgKiB3aWxsIGJlIGRyYWluZWQgdXBvbiBjb21wbGV0aW9uIG9mIEhFQURfT0ZfUVVFVUUgdGFzay4KIAkJICovCiAJCXNwaW5fbG9jaygmU0VfREVWKGNtZCktPmRlbGF5ZWRfY21kX2xvY2spOwogCQljbWQtPnNlX2NtZF9mbGFncyB8PSBTQ0ZfREVMQVlFRF9DTURfRlJPTV9TQU1fQVRUUjsKQEAgLTI1ODksNyArMjU4OSw3IEBACiAJfQogCS8qCiAJICogQ2FsbCB0cmFuc3BvcnRfY21kX2NoZWNrX3N0b3AoKSB0byBzZWUgaWYgYSBmYWJyaWMgZXhjZXB0aW9uCi0JICogaGFzIG9jY3VyZWQgdGhhdCBwcmV2ZW50cyBleGVjdXRpb24uCisJICogaGFzIG9jY3VycmVkIHRoYXQgcHJldmVudHMgZXhlY3V0aW9uLgogCSAqLwogCWlmICghKHRyYW5zcG9ydF9jbWRfY2hlY2tfc3RvcChjbWQsIDAsIFRSQU5TUE9SVF9QUk9DRVNTSU5HKSkpIHsKIAkJLyoKQEAgLTMxMDksNyArMzEwOSw3IEBACiAJaWYgKHJldCAhPSAwKSB7CiAJCWNtZC0+dHJhbnNwb3J0X3dhaXRfZm9yX3Rhc2tzID0gJnRyYW5zcG9ydF9ub3Bfd2FpdF9mb3JfdGFza3M7CiAJCS8qCi0JCSAqIFNldCBTQ1NJIGFkZGl0aW9uYWwgc2Vuc2UgY29kZSAoQVNDKSB0byAnTFVOIE5vdCBBY2Nlc3NhYmxlJzsKKwkJICogU2V0IFNDU0kgYWRkaXRpb25hbCBzZW5zZSBjb2RlIChBU0MpIHRvICdMVU4gTm90IEFjY2Vzc2libGUnOwogCQkgKiBUaGUgQUxVQSBhZGRpdGlvbmFsIHNlbnNlIGNvZGUgcXVhbGlmaWVyIChBU0NRKSBpcyBkZXRlcm1pbmVkCiAJCSAqIGJ5IHRoZSBBTFVBIHByaW1hcnkgb3Igc2Vjb25kYXJ5IGFjY2VzcyBzdGF0ZS4uCiAJCSAqLwpAQCAtMzg2Nyw3ICszODY3LDcgQEAKIAkJfQogCX0KIAkvKgotCSAqIENoZWNrIGZvciBhIGNhbGxiYWNrLCB1c2VkIGJ5IGFtb3VuZ3N0IG90aGVyIHRoaW5ncworCSAqIENoZWNrIGZvciBhIGNhbGxiYWNrLCB1c2VkIGJ5IGFtb25nc3Qgb3RoZXIgdGhpbmdzCiAJICogWERXUklURV9SRUFEXzEwIGVtdWxhdGlvbi4KIAkgKi8KIAlpZiAoY21kLT50cmFuc3BvcnRfY29tcGxldGVfY2FsbGJhY2spCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV91YS5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdWEuYwppbmRleCBhMmVmMzQ2Li5kZjM1NTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV91YS5jCisrKyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3VhLmMKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCQl9CiAJCS8qCiAJCSAqIE90aGVyd2lzZSBmb3IgdGhlIGRlZmF1bHQgMDBiLCByZWxlYXNlIHRoZSBVTklUIEFUVEVOVElPTgotCQkgKiBjb25kaXRpb24uICBSZXR1cm4gdGhlIEFTQy9BU0NRIG9mIHRoZSBoaWdlc3QgcHJpb3JpdHkgVUEKKwkJICogY29uZGl0aW9uLiAgUmV0dXJuIHRoZSBBU0MvQVNDUSBvZiB0aGUgaGlnaGVzdCBwcmlvcml0eSBVQQogCQkgKiAoaGVhZCBvZiB0aGUgbGlzdCkgaW4gdGhlIG91dGdvaW5nIENIRUNLX0NPTkRJVElPTiArIHNlbnNlLgogCQkgKi8KIAkJaWYgKGhlYWQpIHsKQEAgLTMwNCw3ICszMDQsNyBAQAogCSAqIG1hdGNoaW5nIHN0cnVjdCBzZV9sdW4uCiAJICoKIAkgKiBPbmNlIHRoZSByZXR1cm5pbmcgQVNDL0FTQ1EgdmFsdWVzIGFyZSBzZXQsIHdlIGdvIGFoZWFkIGFuZAotCSAqIHJlbGVhc2UgYWxsIG9mIHRoZSBVbml0IEF0dGVudGlvbiBjb25kaXRpb25zIGZvciB0aGUgYXNzb2ljYXRlZAorCSAqIHJlbGVhc2UgYWxsIG9mIHRoZSBVbml0IEF0dGVudGlvbiBjb25kaXRpb25zIGZvciB0aGUgYXNzb2NpYXRlZAogCSAqIHN0cnVjdCBzZV9sdW4uCiAJICovCiAJc3Bpbl9sb2NrKCZkZXZlLT51YV9sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGVsZXBob255L2l4ai5jIGIvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmMKaW5kZXggYjAwMTAxOS4uZDVmOTIzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmMKKysrIGIvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmMKQEAgLTE2OSw3ICsxNjksNyBAQAogICogQWRkZWQgc3VwcG9ydCBmb3IgTGludXggMi40Lngga2VybmVscy4KICAqCiAgKiBSZXZpc2lvbiAzLjc3ICAyMDAxLzAxLzA5IDA0OjAwOjUyICBlb2tlcnNvbgotICogTGluZXRlc3Qgd2lsbCBub3cgdGVzdCB0aGUgbGluZSwgZXZlbiBpZiBpdCBoYXMgcHJldmlvdXNseSBzdWNjZWRlZC4KKyAqIExpbmV0ZXN0IHdpbGwgbm93IHRlc3QgdGhlIGxpbmUsIGV2ZW4gaWYgaXQgaGFzIHByZXZpb3VzbHkgc3VjY2VlZGVkLgogICoKICAqIFJldmlzaW9uIDMuNzYgIDIwMDEvMDEvMDggMTk6Mjc6MDAgIGVva2Vyc29uCiAgKiBGaXhlZCBwcm9ibGVtIHdpdGggc3RhbmRhcmQgY2FibGUgb24gSW50ZXJuZXQgUGhvbmVDQVJELgpAQCAtMzUyLDcgKzM1Miw3IEBACiAJCX0gZWxzZSB7CiAJCQlqLT5mc2tzaXplID0gODAwMDsKIAkJCWlmKGl4amRlYnVnICYgMHgwMjAwKSB7Ci0JCQkJcHJpbnRrKCJJWEogcGhvbmUlZCAtIGFsbG9jYXRlIHN1Y2NlZGVkXG4iLCBqLT5ib2FyZCk7CisJCQkJcHJpbnRrKCJJWEogcGhvbmUlZCAtIGFsbG9jYXRlIHN1Y2NlZWRlZFxuIiwgai0+Ym9hcmQpOwogCQkJfQogCQl9CiAJfQpAQCAtNDg3LDcgKzQ4Nyw3IEBACiA4LTkJCUhhcmR3YXJlIFN0YXR1cyBSZWdpc3RlcgkJCVJlYWQgT25seQogQS1CCQlIYXJkd2FyZSBDb250cm9sIFJlZ2lzdGVyCQkJUmVhZCBXcml0ZQogQy1EIEhvc3QgVHJhbnNtaXQgKFdyaXRlKSBEYXRhIEJ1ZmZlciBBY2Nlc3MgUG9ydCAoYnVmZmVyIGlucHV0KVdyaXRlIE9ubHkKLUUtRiBIb3N0IFJlY2lldmUgKFJlYWQpIERhdGEgQnVmZmVyIEFjY2VzcyBQb3J0IChidWZmZXIgaW5wdXQpCVJlYWQgT25seQorRS1GIEhvc3QgUmVjZWl2ZSAoUmVhZCkgRGF0YSBCdWZmZXIgQWNjZXNzIFBvcnQgKGJ1ZmZlciBpbnB1dCkJUmVhZCBPbmx5CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpeGpfcmVhZF9IU1IoSVhKICpqKQpAQCAtNDE5NSw3ICs0MTk1LDcgQEAKIAkJCWl4al9Xcml0ZURTUENvbW1hbmQoMHhFMzM4LCBqKTsJLyogU2V0IEVjaG8gU3VwcHJlc3NlciBBdHRlbnVhdGlvbiB0byAwZEIgKi8KIAogCQkJLyogTm93IHdlIGNhbiBzZXQgdGhlIEFHQyBpbml0aWFsIHBhcmFtZXRlcnMgYW5kIHR1cm4gaXQgb24gKi8KLQkJCWl4al9Xcml0ZURTUENvbW1hbmQoMHhDRjkwLCBqKTsJLyogU2V0IEFHQyBNaW51bXVtIGdhaW4gKi8KKwkJCWl4al9Xcml0ZURTUENvbW1hbmQoMHhDRjkwLCBqKTsJLyogU2V0IEFHQyBNaW5pbXVtIGdhaW4gKi8KIAkJCWl4al9Xcml0ZURTUENvbW1hbmQoMHgwMDIwLCBqKTsJLyogdG8gMC4xMjUgKC0xOGRCKSAqLwogCQogCQkJaXhqX1dyaXRlRFNQQ29tbWFuZCgweENGOTEsIGopOwkvKiBTZXQgQUdDIE1heGltdW0gZ2FpbiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmggYi9kcml2ZXJzL3RlbGVwaG9ueS9peGouaAppbmRleCA0YzMyYTQzLi4yYzg0MTEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RlbGVwaG9ueS9peGouaAorKysgYi9kcml2ZXJzL3RlbGVwaG9ueS9peGouaApAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIAl1bnNpZ25lZCBpbnQgZmlyc3RyaW5nOjE7IC8qIEZpcnN0IHJpbmcgY2FkZW5jZSBpcyBjb21wbGV0ZSAqLwogCXVuc2lnbmVkIGludCBwc3RuY2hlY2s6MTsJLyogQ3VycmVudGx5IGNoZWNraW5nIHRoZSBQU1ROIExpbmUgKi8KIAl1bnNpZ25lZCBpbnQgcHN0bl9ybXI6MTsKLQl1bnNpZ25lZCBpbnQgeDozOwkvKiB1bnNlZCBiaXRzICovCisJdW5zaWduZWQgaW50IHg6MzsJLyogdW51c2VkIGJpdHMgKi8KIAogfSBJWEpfRkxBR1M7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L2h2Yy9odmNfaXVjdi5jIGIvZHJpdmVycy90dHkvaHZjL2h2Y19pdWN2LmMKaW5kZXggYzM0MjViYi4uYjZmN2Q1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvaHZjL2h2Y19pdWN2LmMKKysrIGIvZHJpdmVycy90dHkvaHZjL2h2Y19pdWN2LmMKQEAgLTI1NSw3ICsyNTUsNyBAQAogCQlkZWZhdWx0OgogCQkJd3JpdHRlbiA9IC1FSU87CiAJCX0KLQkJLyogcmVtb3ZlIGJ1ZmZlciBpZiBhbiBlcnJvciBoYXMgb2NjdXJlZCBvciByZWNlaXZlZCBkYXRhCisJCS8qIHJlbW92ZSBidWZmZXIgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkIG9yIHJlY2VpdmVkIGRhdGEKIAkJICogaXMgbm90IGNvcnJlY3QgKi8KIAkJaWYgKHJjIHx8IChyYi0+bWJ1Zi0+dmVyc2lvbiAhPSBNU0dfVkVSU0lPTikgfHwKIAkJCSAgKHJiLT5tc2cubGVuZ3RoICAgICE9IE1TR19TSVpFKHJiLT5tYnVmLT5kYXRhbGVuKSkpCkBAIC02MjAsNyArNjIwLDcgQEAKICAqCQl0aGUgaW5kZXggb2YgYW4gc3RydWN0IGh2Y19pdWN2X3ByaXZhdGUgaW5zdGFuY2UuCiAgKgogICogVGhpcyByb3V0aW5lIG5vdGlmaWVzIHRoZSBIVkMgYmFjay1lbmQgdGhhdCBhIHR0eSBoYW5ndXAgKGNhcnJpZXIgbG9zcywKLSAqIHZpcnR1YWwgb3Igb3RoZXJ3aXNlKSBoYXMgb2NjdXJlZC4KKyAqIHZpcnR1YWwgb3Igb3RoZXJ3aXNlKSBoYXMgb2NjdXJyZWQuCiAgKiBUaGUgei9WTSBJVUNWIEhWQyBkZXZpY2UgZHJpdmVyIGlnbm9yZXMgdmlydHVhbCBoYW5ndXBzICh2aGFuZ3VwKCkpCiAgKiB0byBrZWVwIGFuIGV4aXN0aW5nIElVQ1YgY29tbXVuaWNhdGlvbiBwYXRoIGVzdGFibGlzaGVkLgogICogKEJhY2tncm91bmQ6IHZoYW5ndXAoKSBpcyBjYWxsZWQgZnJvbSB1c2VyIHNwYWNlIChieSBnZXR0eSBvciBsb2dpbikgdG8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L2h2Yy9odmNfdmlvLmMgYi9kcml2ZXJzL3R0eS9odmMvaHZjX3Zpby5jCmluZGV4IDVlMmY1MmIuLmU2ZWVhMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L2h2Yy9odmNfdmlvLmMKKysrIGIvZHJpdmVycy90dHkvaHZjL2h2Y192aW8uYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiB2aW8gZHJpdmVyIGludGVyZmFjZSB0byBodmNfY29uc29sZS5jCiAgKgotICogVGhpcyBjb2RlIHdhcyBtb3ZlZCBoZXJlIHRvIGFsbG93IHRoZSByZW1haW5nIGNvZGUgdG8gYmUgcmV1c2VkIGFzIGEKKyAqIFRoaXMgY29kZSB3YXMgbW92ZWQgaGVyZSB0byBhbGxvdyB0aGUgcmVtYWluaW5nIGNvZGUgdG8gYmUgcmV1c2VkIGFzIGEKICAqIGdlbmVyaWMgcG9sbGluZyBtb2RlIHdpdGggc2VtaS1yZWxpYWJsZSB0cmFuc3BvcnQgZHJpdmVyIGNvcmUgdG8gdGhlCiAgKiBjb25zb2xlIGFuZCB0dHkgc3Vic3lzdGVtcy4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9odmMvaHZjcy5jIGIvZHJpdmVycy90dHkvaHZjL2h2Y3MuYwppbmRleCBiZWYyMzhmLi40YzhiNjY1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvaHZjL2h2Y3MuYworKysgYi9kcml2ZXJzL3R0eS9odmMvaHZjcy5jCkBAIC0xMTgsNyArMTE4LDcgQEAKICAqIGFyY2gvcG93ZXJlcGMvaW5jbHVkZS9hc20vaHZjc2VydmVyLmgKICAqCiAgKiAxLjMuMiAtPiAxLjMuMyBSZXBsYWNlZCB5aWVsZCgpIGluIGh2Y3NfY2xvc2UoKSB3aXRoIHR0eV93YWl0X3VudGlsX3NlbnQoKSB0bwotICogcHJldmVudCBwb3NzaWJsZSBsb2NrdXAgd2l0aCByZWFsdGltZSBzY2hlZHVsaW5nIGFzIHNpbWlsYXJpbHkgcG9pbnRlZCBvdXQgYnkKKyAqIHByZXZlbnQgcG9zc2libGUgbG9ja3VwIHdpdGggcmVhbHRpbWUgc2NoZWR1bGluZyBhcyBzaW1pbGFybHkgcG9pbnRlZCBvdXQgYnkKICAqIGFrcG0gaW4gaHZjX2NvbnNvbGUuICBDaGFuZ2VkIHJlc3VsdGVkIGluIHRoZSByZW1vdmFsIG9mIGh2Y3NfZmluYWxfY2xvc2UoKQogICogdG8gcmVvcmRlciBjbGVhbnVwIG9wZXJhdGlvbnMgYW5kIHByZXZlbnQgZGlzY2FyZGluZyBvZiBwZW5kaW5nIGRhdGEgZHVyaW5nCiAgKiBhbiBodmNzX2Nsb3NlKCkuICBSZW1vdmVkIHNwaW5sb2NrIHByb3RlY3Rpb24gb2YgaHZjc19zdHJ1Y3QgZGF0YSBtZW1iZXJzIGluCkBAIC01ODEsNyArNTgxLDcgQEAKIAkJCS8qCiAJCQkgKiBXZSBhcmUgc3RpbGwgb2JsaWdhdGVkIHRvIGRlbGl2ZXIgdGhlIGRhdGEgdG8gdGhlCiAJCQkgKiBoeXBlcnZpc29yIGV2ZW4gaWYgdGhlIHR0eSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZQotCQkJICogd2UgY29tbWl0ZWQgdG8gZGVsaXZlcmluZyBpdC4gIEJ1dCBkb24ndCB0cnkgdG8gd2FrZQorCQkJICogd2UgY29tbWl0dGVkIHRvIGRlbGl2ZXJpbmcgaXQuICBCdXQgZG9uJ3QgdHJ5IHRvIHdha2UKIAkJCSAqIGEgbm9uLWV4aXN0ZW50IHR0eS4KIAkJCSAqLwogCQkJaWYgKHR0eSkgewpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmaHZjc2QtPmxvY2ssIGZsYWdzKTsKIAogCS8qCi0JICogU29tZWhvdyBhbiBvcGVuIHN1Y2NlZGRlZCBidXQgdGhlIGRldmljZSB3YXMgcmVtb3ZlZCBvciB0aGUKKwkgKiBTb21laG93IGFuIG9wZW4gc3VjY2VlZGVkIGJ1dCB0aGUgZGV2aWNlIHdhcyByZW1vdmVkIG9yIHRoZQogCSAqIGNvbm5lY3Rpb24gdGVybWluYXRlZCBiZXR3ZWVuIHRoZSB2dHktc2VydmVyIGFuZCBwYXJ0bmVyIHZ0eSBkdXJpbmcKIAkgKiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUgb3BlcmF0aW9uPyAgVGhpcyBpcyBhIGNydW1teSBwbGFjZSB0byBkbyB0aGlzCiAJICogYnV0IHdlIHdhbnQgdG8ga2VlcCBpdCBhbGwgaW4gdGhlIHNwaW5sb2NrLgpAQCAtMTQyMCw3ICsxNDIwLDcgQEAKIH0KIAogLyoKLSAqIFRoaXMgaXMgcmVhbGx5IGFza2luZyBob3cgbXVjaCBjYW4gd2UgZ3VhcmVudGVlIHRoYXQgd2UgY2FuIHNlbmQgb3IgdGhhdCB3ZQorICogVGhpcyBpcyByZWFsbHkgYXNraW5nIGhvdyBtdWNoIGNhbiB3ZSBndWFyYW50ZWUgdGhhdCB3ZSBjYW4gc2VuZCBvciB0aGF0IHdlCiAgKiBhYnNvbHV0ZWx5IFdJTEwgQlVGRkVSIGlmIHdlIGNhbid0IHNlbmQgaXQuICBUaGlzIGRyaXZlciBNVVNUIGhvbm9yIHRoZQogICogcmV0dXJuIHZhbHVlLCBoZW5jZSB0aGUgcmVhc29uIGZvciBodmNzX3N0cnVjdCBidWZmZXJpbmcuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L214c2VyLmggYi9kcml2ZXJzL3R0eS9teHNlci5oCmluZGV4IDQxODc4YTYuLjBiZjc5NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L214c2VyLmgKKysrIGIvZHJpdmVycy90dHkvbXhzZXIuaApAQCAtMTEzLDcgKzExMyw3IEBACiAjZGVmaW5lIE1PWEFfTVVTVF9JSVJfUlRPCQkweDBDCiAjZGVmaW5lIE1PWEFfTVVTVF9JSVJfTFNSCQkweDA2CiAKLS8qIHJlY2lldmVkIFhvbi9Yb2ZmIG9yIHNwZWNpY2FsIGludGVycnVwdCBwZW5kaW5nICovCisvKiByZWNlaXZlZCBYb24vWG9mZiBvciBzcGVjaWNhbCBpbnRlcnJ1cHQgcGVuZGluZyAqLwogI2RlZmluZSBNT1hBX01VU1RfSUlSX1hTQwkJMHgxMAogCiAvKiBSVFMvQ1RTIGNoYW5nZSBzdGF0ZSBpbnRlcnJ1cHQgcGVuZGluZyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbl9nc20uYyBiL2RyaXZlcnMvdHR5L25fZ3NtLmMKaW5kZXggMTc2ZjYzMi4uNDdmOGNkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvbl9nc20uYworKysgYi9kcml2ZXJzL3R0eS9uX2dzbS5jCkBAIC03NCw3ICs3NCw3IEBACiAjZW5kaWYKIAogLyoKLSAqIFNlbWktYXJiaXRhcnkgYnVmZmVyIHNpemUgbGltaXRzLiAwNzEwIGlzIG5vcm1hbGx5IHJ1biB3aXRoIDMyLTY0IGJ5dGUKKyAqIFNlbWktYXJiaXRyYXJ5IGJ1ZmZlciBzaXplIGxpbWl0cy4gMDcxMCBpcyBub3JtYWxseSBydW4gd2l0aCAzMi02NCBieXRlCiAgKiBsaW1pdHMgc28gdGhpcyBpcyBwbGVudHkKICAqLwogI2RlZmluZSBNQVhfTVJVIDUxMgpAQCAtODIsNyArODIsNyBAQAogCiAvKgogICoJRWFjaCBibG9jayBvZiBkYXRhIHdlIGhhdmUgcXVldWVkIHRvIGdvIG91dCBpcyBpbiB0aGUgZm9ybSBvZgotICoJYSBnc21fbXNnIHdoaWNoIGhvbGRzIGV2ZXJ5dGhpbmcgd2UgbmVlZCBpbiBhIGxpbmsgbGF5ZXIgaW5kZXBlbmRhbnQKKyAqCWEgZ3NtX21zZyB3aGljaCBob2xkcyBldmVyeXRoaW5nIHdlIG5lZWQgaW4gYSBsaW5rIGxheWVyIGluZGVwZW5kZW50CiAgKglmb3JtYXQKICAqLwogCkBAIC0xMTkzLDggKzExOTMsOCBAQAogCQlicmVhazsKIAkJLyogT3B0aW9uYWwgdW5zdXBwb3J0ZWQgY29tbWFuZHMgKi8KIAljYXNlIENNRF9QTjoJLyogUGFyYW1ldGVyIG5lZ290aWF0aW9uICovCi0JY2FzZSBDTURfUlBOOgkvKiBSZW1vdGUgcG9ydCBuZWdvdGF0aW9uICovCi0JY2FzZSBDTURfU05DOgkvKiBTZXJ2aWNlIG5lZ290YXRpb24gY29tbWFuZCAqLworCWNhc2UgQ01EX1JQTjoJLyogUmVtb3RlIHBvcnQgbmVnb3RpYXRpb24gKi8KKwljYXNlIENNRF9TTkM6CS8qIFNlcnZpY2UgbmVnb3RpYXRpb24gY29tbWFuZCAqLwogCWRlZmF1bHQ6CiAJCS8qIFJlcGx5IHRvIGJhZCBjb21tYW5kcyB3aXRoIGFuIE5TQyAqLwogCQlidWZbMF0gPSBjb21tYW5kOwpAQCAtMjAyNiw3ICsyMDI2LDcgQEAKICAqCUBtdXg6IG11eCB0byBmcmVlCiAgKgogICoJRGlzcG9zZSBvZiBhbGxvY2F0ZWQgcmVzb3VyY2VzIGZvciBhIGRlYWQgbXV4LiBObyByZWZjb3VudGluZwotICoJYXQgcHJlc2VudCBzbyB0aGUgbXV4IG11c3QgYmUgdHJ1ZWx5IGRlYWQuCisgKglhdCBwcmVzZW50IHNvIHRoZSBtdXggbXVzdCBiZSB0cnVseSBkZWFkLgogICovCiB2b2lkIGdzbV9mcmVlX211eChzdHJ1Y3QgZ3NtX211eCAqZ3NtKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbm96b21pLmMgYi9kcml2ZXJzL3R0eS9ub3pvbWkuYwppbmRleCBmNGYxMTE2Li5mZDBhOTg1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvbm96b21pLmMKKysrIGIvZHJpdmVycy90dHkvbm96b21pLmMKQEAgLTE2NzMsNyArMTY3Myw3IEBACiAKIC8qCiAgKiBjYWxsZWQgd2hlbiB0aGUgdXNlcnNwYWNlIHByb2Nlc3Mgd3JpdGVzIHRvIHRoZSB0dHkgKC9kZXYvbm96KikuCi0gKiBEYXRhIGlzIGluc2VydGVkIGludG8gYSBmaWZvLCB3aGljaCBpcyB0aGVuIHJlYWQgYW5kIHRyYW5zZmVyZWQgdG8gdGhlIG1vZGVtLgorICogRGF0YSBpcyBpbnNlcnRlZCBpbnRvIGEgZmlmbywgd2hpY2ggaXMgdGhlbiByZWFkIGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgbW9kZW0uCiAgKi8KIHN0YXRpYyBpbnQgbnR0eV93cml0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsCiAJCSAgICAgIGludCBjb3VudCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3JvY2tldC5jIGIvZHJpdmVycy90dHkvcm9ja2V0LmMKaW5kZXggMzc4MGRhOC4uMDM2ZmVlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvcm9ja2V0LmMKKysrIGIvZHJpdmVycy90dHkvcm9ja2V0LmMKQEAgLTIwNjAsNyArMjA2MCw3IEBACiAJCQlzQ2xvY2tQcmVzY2FsZSA9IDB4MTk7CiAJCQlycF9iYXVkX2Jhc2VbaV0gPSAyMzA0MDA7CiAJCX0gZWxzZSB7Ci0JCQkvKiBtb2QgNCAoZGV2aWRlIGJ5IDUpIHByZXNjYWxlICovCisJCQkvKiBtb2QgNCAoZGl2aWRlIGJ5IDUpIHByZXNjYWxlICovCiAJCQlzQ2xvY2tQcmVzY2FsZSA9IDB4MTQ7CiAJCQlycF9iYXVkX2Jhc2VbaV0gPSA0NjA4MDA7CiAJCX0KQEAgLTIxODMsNyArMjE4Myw3IEBACiAJCXNDbG9ja1ByZXNjYWxlID0gMHgxOTsJLyogbW9kIDkgKGRpdmlkZSBieSAxMCkgcHJlc2NhbGUgKi8KIAkJcnBfYmF1ZF9iYXNlW2ldID0gMjMwNDAwOwogCX0gZWxzZSB7Ci0JCXNDbG9ja1ByZXNjYWxlID0gMHgxNDsJLyogbW9kIDQgKGRldmlkZSBieSA1KSBwcmVzY2FsZSAqLworCQlzQ2xvY2tQcmVzY2FsZSA9IDB4MTQ7CS8qIG1vZCA0IChkaXZpZGUgYnkgNSkgcHJlc2NhbGUgKi8KIAkJcnBfYmF1ZF9iYXNlW2ldID0gNDYwODAwOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLmMKaW5kZXggYjNiODgxYi4uNjYxMTUzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MC5jCkBAIC0xNjI5LDcgKzE2MjksNyBAQAogCQkJICAgIHVwLT5wb3J0LmlvdHlwZSA9PSBVUElPX0RXQVBCMzIpICYmCiAJCQkgIChpaXIgJiBVQVJUX0lJUl9CVVNZKSA9PSBVQVJUX0lJUl9CVVNZKSB7CiAJCQkvKiBUaGUgRGVzaWduV2FyZSBBUEIgVUFSVCBoYXMgYW4gQnVzeSBEZXRlY3QgKDB4MDcpCi0JCQkgKiBpbnRlcnJ1cHQgbWVhbmluZyBhbiBMQ1Igd3JpdGUgYXR0ZW1wdCBvY2N1cmVkIHdoaWxlIHRoZQorCQkJICogaW50ZXJydXB0IG1lYW5pbmcgYW4gTENSIHdyaXRlIGF0dGVtcHQgb2NjdXJyZWQgd2hpbGUgdGhlCiAJCQkgKiBVQVJUIHdhcyBidXN5LiBUaGUgaW50ZXJydXB0IG11c3QgYmUgY2xlYXJlZCBieSByZWFkaW5nCiAJCQkgKiB0aGUgVUFSVCBzdGF0dXMgcmVnaXN0ZXIgKFVTUikgYW5kIHRoZSBMQ1IgcmUtd3JpdHRlbi4gKi8KIAkJCXVuc2lnbmVkIGludCBzdGF0dXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MF9wY2kuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jCmluZGV4IDhiODkzMGYuLjczOGNlYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jCkBAIC00MzMsNyArNDMzLDcgQEAKIC8qCiAgKiBTSUlHIHNlcmlhbCBjYXJkcyBoYXZlIGFuIFBDSSBpbnRlcmZhY2UgY2hpcCB3aGljaCBhbHNvIGNvbnRyb2xzCiAgKiB0aGUgVUFSVCBjbG9ja2luZyBmcmVxdWVuY3kuIEVhY2ggVUFSVCBjYW4gYmUgY2xvY2tlZCBpbmRlcGVuZGVudGx5Ci0gKiAoZXhjZXB0IGNhcmRzIGVxdWlwZWQgd2l0aCA0IFVBUlRzKSBhbmQgaW5pdGlhbCBjbG9ja2luZyBzZXR0aW5ncworICogKGV4Y2VwdCBjYXJkcyBlcXVpcHBlZCB3aXRoIDQgVUFSVHMpIGFuZCBpbml0aWFsIGNsb2NraW5nIHNldHRpbmdzCiAgKiBhcmUgc3RvcmVkIGluIHRoZSBFRVBST00gY2hpcC4gSXQgY2FuIGNhdXNlIHByb2JsZW1zIGJlY2F1c2UgdGhpcwogICogdmVyc2lvbiBvZiBzZXJpYWwgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBkaWZmZXJlbnRseSBjbG9ja2VkIFVBUlQncwogICogb24gc2luZ2xlIFBDSSBjYXJkLiBUbyBwcmV2ZW50IHRoaXMsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBzZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9hbWJhLXBsMDExLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvYW1iYS1wbDAxMS5jCmluZGV4IDU3NzMxZTguLjZkZWVlNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9hbWJhLXBsMDExLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2FtYmEtcGwwMTEuYwpAQCAtNTIwLDcgKzUyMCw3IEBACiAKIAkvKgogCSAqIFdlIGRvbid0IGhhdmUgYSBUWCBidWZmZXIgcXVldWVkLCBzbyB0cnkgdG8gcXVldWUgb25lLgotCSAqIElmIHdlIHN1Y2Nlc2Z1bGx5IHF1ZXVlZCBhIGJ1ZmZlciwgbWFzayB0aGUgVFggSVJRLgorCSAqIElmIHdlIHN1Y2Nlc3NmdWxseSBxdWV1ZWQgYSBidWZmZXIsIG1hc2sgdGhlIFRYIElSUS4KIAkgKi8KIAlpZiAocGwwMTFfZG1hX3R4X3JlZmlsbCh1YXApID4gMCkgewogCQl1YXAtPmltICY9IH5VQVJUMDExX1RYSU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvaWNvbS5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2ljb20uYwppbmRleCA1M2E0NjgyLi44YTg2OWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvaWNvbS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9pY29tLmMKQEAgLTEyNDgsNyArMTI0OCw3IEBACiAJCX0KIAl9CiAKLQkvKiBFbmFibGUgVHJhbnNtaXR0ZXIgYW5kIFJlY2lldmVyICovCisJLyogRW5hYmxlIFRyYW5zbWl0dGVyIGFuZCBSZWNlaXZlciAqLwogCW9mZnNldCA9CiAJICAgICh1bnNpZ25lZCBsb25nKSAmSUNPTV9QT1JULT5zdGF0U3RnLT5yY3ZbMF0gLQogCSAgICAodW5zaWduZWQgbG9uZykgSUNPTV9QT1JULT5zdGF0U3RnOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCmluZGV4IGRmY2Y0YjEuLmNiMzZiMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pbXguYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaW14LmMKQEAgLTc4LDcgKzc4LDcgQEAKICNkZWZpbmUgIFVSWERfRlJNRVJSICAgICAoMTw8MTIpCiAjZGVmaW5lICBVUlhEX0JSSyAgICAgICAgKDE8PDExKQogI2RlZmluZSAgVVJYRF9QUkVSUiAgICAgICgxPDwxMCkKLSNkZWZpbmUgIFVDUjFfQURFTiAgICAgICAoMTw8MTUpIC8qIEF1dG8gZGVjdGVjdCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgIFVDUjFfQURFTiAgICAgICAoMTw8MTUpIC8qIEF1dG8gZGV0ZWN0IGludGVycnVwdCAqLwogI2RlZmluZSAgVUNSMV9BREJSICAgICAgICgxPDwxNCkgLyogQXV0byBkZXRlY3QgYmF1ZCByYXRlICovCiAjZGVmaW5lICBVQ1IxX1RSRFlFTiAgICAgKDE8PDEzKSAvKiBUcmFuc21pdHRlciByZWFkeSBpbnRlcnJ1cHQgZW5hYmxlICovCiAjZGVmaW5lICBVQ1IxX0lERU4gICAgICAgKDE8PDEyKSAvKiBJZGxlIGNvbmRpdGlvbiBpbnRlcnJ1cHQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYwppbmRleCBlYmZmNGExLi43YjFjZGE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvaXAyMnppbG9nLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2lwMjJ6aWxvZy5jCkBAIC0zNzUsNyArMzc1LDcgQEAKIAkJICogYmUgbmljZSB0byB0cmFuc21pdCBjb25zb2xlIHdyaXRlcyBqdXN0IGxpa2Ugd2Ugbm9ybWFsbHkgd291bGQgZm9yCiAJCSAqIGEgVFRZIGxpbmUuIChpZS4gYnVmZmVyZWQgYW5kIFRYIGludGVycnVwdCBkcml2ZW4pLiAgVGhhdCBpcyBub3QKIAkJICogZWFzeSBiZWNhdXNlIGNvbnNvbGUgd3JpdGVzIGNhbm5vdCBzbGVlcC4gIE9uZSBzb2x1dGlvbiBtaWdodCBiZQotCQkgKiB0byBwb2xsIG9uIGVub3VnaCBwb3J0LT54bWl0IHNwYWNlIGJlY29tbWluZyBmcmVlLiAgLURhdmVNCisJCSAqIHRvIHBvbGwgb24gZW5vdWdoIHBvcnQtPnhtaXQgc3BhY2UgYmVjb21pbmcgZnJlZS4gIC1EYXZlTQogCQkgKi8KIAkJaWYgKCEoc3RhdHVzICYgVHhfQlVGX0VNUCkpCiAJCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbS5oIGIvZHJpdmVycy90dHkvc2VyaWFsL2pzbS9qc20uaAppbmRleCAzOGE1MDljLi5iNzA0YzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbS5oCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtLmgKQEAgLTI3Myw3ICsyNzMsNyBAQAogCSB1OCBmY3RyOwkJLyogV1IJRkNUUiAtIEZlYXR1cmUgQ29udHJvbCBSZWcgKi8KIAkgdTggZWZyOwkJLyogV1IJRUZSIC0gRW5oYW5jZWQgRnVuY3Rpb24gUmVnICovCiAJIHU4IHRmaWZvOwkJLyogV1IJVFhDTlQvVFhUUkcgLSBUcmFuc21pdCBGSUZPIFJlZyAqLwotCSB1OCByZmlmbzsJCS8qIFdSCVJYQ05UL1JYVFJHIC0gUmVjaWV2ZSBGSUZPIFJlZyAqLworCSB1OCByZmlmbzsJCS8qIFdSCVJYQ05UL1JYVFJHIC0gUmVjZWl2ZSBGSUZPIFJlZyAqLwogCSB1OCB4b2ZmY2hhcjE7CS8qIFdSCVhPRkYgMSAtIFhPZmYgQ2hhcmFjdGVyIDEgUmVnICovCiAJIHU4IHhvZmZjaGFyMjsJLyogV1IJWE9GRiAyIC0gWE9mZiBDaGFyYWN0ZXIgMiBSZWcgKi8KIAkgdTggeG9uY2hhcjE7CS8qIFdSCVhPTiAxIC0gWG9uIENoYXJhY3RlciAxIFJlZyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2pzbS9qc21fbmVvLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYwppbmRleCA3OTYwZDk2Li40NTM4YzNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAJCS8qIENvcHkgZGF0YSBmcm9tIHVhcnQgdG8gdGhlIHF1ZXVlICovCiAJCW1lbWNweV9mcm9taW8oY2gtPmNoX3JxdWV1ZSArIGhlYWQsICZjaC0+Y2hfbmVvX3VhcnQtPnR4cnhidXJzdCwgbik7CiAJCS8qCi0JCSAqIFNpbmNlIFJYX0ZJRk9fREFUQV9FUlJPUiB3YXMgMCwgd2UgYXJlIGd1YXJlbnRlZWQKKwkJICogU2luY2UgUlhfRklGT19EQVRBX0VSUk9SIHdhcyAwLCB3ZSBhcmUgZ3VhcmFudGVlZAogCQkgKiB0aGF0IGFsbCB0aGUgZGF0YSBjdXJyZW50bHkgaW4gdGhlIEZJRk8gaXMgZnJlZSBvZgogCQkgKiBicmVha3MgYW5kIHBhcml0eS9mcmFtZS9vcnVuIGVycm9ycy4KIAkJICovCkBAIC0xMjEwLDcgKzEyMTAsNyBAQAogCQkJICogV2h5IHdvdWxkIEkgY2hlY2sgRVZFUlkgcG9zc2liaWxpdHkgb2YgdHlwZSBvZgogCQkJICogaW50ZXJydXB0LCB3aGVuIHdlIGtub3cgaXRzIFRYUkRZPz8/CiAJCQkgKiBCZWN1eiBmb3Igc29tZSByZWFzb24sIGV2ZW4gdGhvIHdlIGdvdCB0cmlnZ2VyZWQgZm9yIFRYUkRZLAotCQkJICogaXQgc2VlbXMgdG8gYmUgb2NjYXNzaW9uYWxseSB3cm9uZy4gSW5zdGVhZCBvZiBUWCwgd2hpY2gKKwkJCSAqIGl0IHNlZW1zIHRvIGJlIG9jY2FzaW9uYWxseSB3cm9uZy4gSW5zdGVhZCBvZiBUWCwgd2hpY2gKIAkJCSAqIGl0IHNob3VsZCBiZSwgSSB3YXMgZ2V0dGluZyB0aGluZ3MgbGlrZSBSWERZIHRvby4gV2VpcmQuCiAJCQkgKi8KIAkJCW5lb19wYXJzZV9pc3IoYnJkLCBwb3J0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTA3LmggYi9kcml2ZXJzL3R0eS9zZXJpYWwvbWF4MzEwNy5oCmluZGV4IDdhYjYzMjM5Li44NDE1ZmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvbWF4MzEwNy5oCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTA3LmgKQEAgLTM2OSw3ICszNjksNyBAQAogCXN0cnVjdCBzcGlfZGV2aWNlICpzcGk7CiAKICNpZiBkZWZpbmVkKENPTkZJR19HUElPTElCKQotCS8qIEdQSU8gY2hpcCBzdHVjdHVyZSAqLworCS8qIEdQSU8gY2hpcCBzdHJ1Y3R1cmUgKi8KIAlzdHJ1Y3QgZ3Bpb19jaGlwIGNoaXA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5jCmluZGV4IDM3ZTEzYzMuLjJmNTQ4YWY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKiAgICAxIHdvcmQuIElmIFNQSSBtYXN0ZXIgY29udHJvbGxlciBkb2Vzbid0IHN1cHBvcnQgc2NsayBmcmVxdWVuY3kgY2hhbmdlLAogICogICAgdGhlbiB0aGUgY2hhciBuZWVkIGJlIHNlbnQgb3V0IG9uZSBieSBvbmUgd2l0aCBzb21lIGRlbGF5CiAgKgotICogMi4gQ3VycmVudGx5IG9ubHkgUlggYXZhaWxhYmUgaW50ZXJycnVwdCBpcyB1c2VkLCBubyBuZWVkIGZvciB3YWl0aW5nIFRYRQorICogMi4gQ3VycmVudGx5IG9ubHkgUlggYXZhaWxhYmxlIGludGVycnJ1cHQgaXMgdXNlZCwgbm8gbmVlZCBmb3Igd2FpdGluZyBUWEUKICAqICAgIGludGVycnVwdCBmb3IgYSBsb3cgc3BlZWQgVUFSVCBkZXZpY2UKICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmggYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmgKaW5kZXggZDFlZjQzYS4uYzM3ZWE0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5oCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tcnN0X21heDMxMTAuaApAQCAtMjEsNyArMjEsNyBAQAogCiAjZGVmaW5lIFdDX0lSUV9NQVNLCQkoMHhGIDw8IDgpCiAjZGVmaW5lIFdDX1RYRV9JUlFfRU5BQkxFCSgxIDw8IDExKQkvKiBUWCBlbXB0eSBpcnEgKi8KLSNkZWZpbmUgV0NfUlhBX0lSUV9FTkFCTEUJKDEgPDwgMTApCS8qIFJYIGF2YWlsYWJlIGlycSAqLworI2RlZmluZSBXQ19SWEFfSVJRX0VOQUJMRQkoMSA8PCAxMCkJLyogUlggYXZhaWxhYmxlIGlycSAqLwogI2RlZmluZSBXQ19QQVJfSElHSF9JUlFfRU5BQkxFCSgxIDw8IDkpCiAjZGVmaW5lIFdDX1JFQ19BQ1RfSVJRX0VOQUJMRQkoMSA8PCA4KQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvbXNtX3NlcmlhbF9ocy5jIGIvZHJpdmVycy90dHkvc2VyaWFsL21zbV9zZXJpYWxfaHMuYwppbmRleCBiOTA2ZjExLi42MjQ3MDFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvbXNtX3NlcmlhbF9ocy5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tc21fc2VyaWFsX2hzLmMKQEAgLTQ5NSw3ICs0OTUsNyBAQAogICoKICAqIEludGVycnVwdHMgc2hvdWxkIGJlIGRpc2FibGVkIGJlZm9yZSB3ZSBhcmUgY2FsbGVkLCBhcwogICogd2UgbW9kaWZ5IFNldCBCYXVkIHJhdGUKLSAqIFNldCByZWNlaXZlIHN0YWxlIGludGVycnVwdCBsZXZlbCwgZGVwZW5kYW50IG9uIEJpdCBSYXRlCisgKiBTZXQgcmVjZWl2ZSBzdGFsZSBpbnRlcnJ1cHQgbGV2ZWwsIGRlcGVuZGVudCBvbiBCaXQgUmF0ZQogICogR29hbCBpcyB0byBoYXZlIGFyb3VuZCA4IG1zIGJlZm9yZSBpbmRpY2F0ZSBzdGFsZS4KICAqIHJvdW5kdXAgKCgoQml0IFJhdGUgKiAuMDA4KSAvIDEwKSArIDEKICAqLwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZ1cG9ydC0+bG9jaywgZmxhZ3MpOwogCWlmIChtc21fdXBvcnQtPmNsa19zdGF0ZSA9PSBNU01fSFNfQ0xLX09GRikgewotCQkvKiBpZ25vcmUgdGhlIGZpcnN0IGlycSAtIGl0IGlzIGEgcGVuZGluZyBpcnEgdGhhdCBvY2N1cmVkCisJCS8qIGlnbm9yZSB0aGUgZmlyc3QgaXJxIC0gaXQgaXMgYSBwZW5kaW5nIGlycSB0aGF0IG9jY3VycmVkCiAJCSAqIGJlZm9yZSBlbmFibGVfaXJxKCkgKi8KIAkJaWYgKG1zbV91cG9ydC0+cnhfd2FrZXVwLmlnbm9yZSkKIAkJCW1zbV91cG9ydC0+cnhfd2FrZXVwLmlnbm9yZSA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvb21hcC1zZXJpYWwuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9vbWFwLXNlcmlhbC5jCmluZGV4IDc2MzUzNzkuLjQ3Y2FkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9vbWFwLXNlcmlhbC5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9vbWFwLXNlcmlhbC5jCkBAIC0xMyw3ICsxMyw3IEBACiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBOb3RlOiBUaGlzIGRyaXZlciBpcyBtYWRlIHNlcGVyYXRlIGZyb20gODI1MCBkcml2ZXIgYXMgd2UgY2Fubm90CisgKiBOb3RlOiBUaGlzIGRyaXZlciBpcyBtYWRlIHNlcGFyYXRlIGZyb20gODI1MCBkcml2ZXIgYXMgd2UgY2Fubm90CiAgKiBvdmVyIGxvYWQgODI1MCBkcml2ZXIgd2l0aCBvbWFwIHBsYXRmb3JtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yCiAgKiBmZWF0dXJlcyBsaWtlIERNQSwgaXQgbWFrZXMgZWFzaWVyIHRvIGltcGxlbWVudCBmZWF0dXJlcyBsaWtlIERNQSBhbmQKICAqIGhhcmR3YXJlIGZsb3cgY29udHJvbCBhbmQgc29mdHdhcmUgZmxvdyBjb250cm9sIGNvbmZpZ3VyYXRpb24gd2l0aApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3BtYWNfemlsb2cuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9wbWFjX3ppbG9nLmMKaW5kZXggNWI5Y2RlNy4uZTFjOGQ0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL3BtYWNfemlsb2cuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvcG1hY196aWxvZy5jCkBAIC0zMzAsNyArMzMwLDcgQEAKIAkJICogV2hlbiB0aGF0IGhhcHBlbnMsIEkgZGlzYWJsZSB0aGUgcmVjZWl2ZSBzaWRlIG9mIHRoZSBkcml2ZXIuCiAJCSAqIE5vdGUgdGhhdCB3aGF0IEkndmUgYmVlbiBleHBlcmllbmNpbmcgaXMgYSByZWFsIGlycSBsb29wIHdoZXJlCiAJCSAqIEknbSBnZXR0aW5nIGZsb29kZWQgcmVnYXJkbGVzcyBvZiB0aGUgYWN0dWFsIHBvcnQgc3BlZWQuCi0JCSAqIFNvbWV0aGluZyBzdGFuZ2UgaXMgZ29pbmcgb24gd2l0aCB0aGUgSFcKKwkJICogU29tZXRoaW5nIHN0cmFuZ2UgaXMgZ29pbmcgb24gd2l0aCB0aGUgSFcKIAkJICovCiAJCWlmICgoKytsb29wcykgPiAxMDAwKQogCQkJZ290byBmbG9vZDsKQEAgLTM5Niw3ICszOTYsNyBAQAogCQkgKiBiZSBuaWNlIHRvIHRyYW5zbWl0IGNvbnNvbGUgd3JpdGVzIGp1c3QgbGlrZSB3ZSBub3JtYWxseSB3b3VsZCBmb3IKIAkJICogYSBUVFkgbGluZS4gKGllLiBidWZmZXJlZCBhbmQgVFggaW50ZXJydXB0IGRyaXZlbikuICBUaGF0IGlzIG5vdAogCQkgKiBlYXN5IGJlY2F1c2UgY29uc29sZSB3cml0ZXMgY2Fubm90IHNsZWVwLiAgT25lIHNvbHV0aW9uIG1pZ2h0IGJlCi0JCSAqIHRvIHBvbGwgb24gZW5vdWdoIHBvcnQtPnhtaXQgc3BhY2UgYmVjb21taW5nIGZyZWUuICAtRGF2ZU0KKwkJICogdG8gcG9sbCBvbiBlbm91Z2ggcG9ydC0+eG1pdCBzcGFjZSBiZWNvbWluZyBmcmVlLiAgLURhdmVNCiAJCSAqLwogCQlpZiAoIShzdGF0dXMgJiBUeF9CVUZfRU1QKSkKIAkJCXJldHVybjsKQEAgLTgwOSw3ICs4MDksNyBAQAogI2VuZGlmIC8qICFDT05GSUdfUFBDX1BNQUMgKi8KIAogLyoKLSAqIEZpeFplcm9CdWcuLi4uV29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBTQ0MgcmVjZXZpbmcgY2hhbm5lbC4KKyAqIEZpeFplcm9CdWcuLi4uV29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBTQ0MgcmVjZWl2aW5nIGNoYW5uZWwuCiAgKiBJbnNwaXJlZCBmcm9tIERhcndpbiBjb2RlLCAxNSBTZXB0LiAyMDAwICAtRGFuTQogICoKICAqIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgcHJldmVudHMgYSBwcm9ibGVtIHRoYXQgaXMgc2VlbiB3aXRoIE8nSGFyZSBBU0lDcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3NhbXN1bmcuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMKaW5kZXggMjMzNWVkYS4uOWUyZmE4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL3NhbXN1bmcuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc2Ftc3VuZy5jCkBAIC02NCw3ICs2NCw3IEBACiAjZGVmaW5lIHR4X2VuYWJsZWQocG9ydCkgKChwb3J0KS0+dW51c2VkWzBdKQogI2RlZmluZSByeF9lbmFibGVkKHBvcnQpICgocG9ydCktPnVudXNlZFsxXSkKIAotLyogZmxhZyB0byBpZ25vcmUgYWxsIGNoYXJhY3RlcnMgY29tbWluZyBpbiAqLworLyogZmxhZyB0byBpZ25vcmUgYWxsIGNoYXJhY3RlcnMgY29taW5nIGluICovCiAjZGVmaW5lIFJYU1RBVF9EVU1NWV9SRUFEICgweDEwMDAwMDAwKQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBzM2MyNHh4X3VhcnRfcG9ydCAqdG9fb3VycG9ydChzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0KQpAQCAtMjkxLDcgKzI5MSw3IEBACiAJCWdvdG8gb3V0OwogCX0KIAotCS8qIGlmIHRoZXJlIGlzbnQgYW55dGhpbmcgbW9yZSB0byB0cmFuc21pdCwgb3IgdGhlIHVhcnQgaXMgbm93CisJLyogaWYgdGhlcmUgaXNuJ3QgYW55dGhpbmcgbW9yZSB0byB0cmFuc21pdCwgb3IgdGhlIHVhcnQgaXMgbm93CiAJICogc3RvcHBlZCwgZGlzYWJsZSB0aGUgdWFydCBhbmQgZXhpdAogCSovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zaC1zY2kuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zaC1zY2kuYwppbmRleCBlYjc5NThjLi45MjBhNmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc2gtc2NpLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL3NoLXNjaS5jCkBAIC04MTIsNyArODEyLDcgQEAKIH0KIAogLyoKLSAqIEhlcmUgd2UgZGVmaW5lIGEgdHJhbnNpc3Rpb24gbm90aWZpZXIgc28gdGhhdCB3ZSBjYW4gdXBkYXRlIGFsbCBvZiBvdXIKKyAqIEhlcmUgd2UgZGVmaW5lIGEgdHJhbnNpdGlvbiBub3RpZmllciBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgYWxsIG9mIG91cgogICogcG9ydHMnIGJhdWQgcmF0ZSB3aGVuIHRoZSBwZXJpcGhlcmFsIGNsb2NrIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyBpbnQgc2NpX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwKQEAgLTE4MzYsNiArMTgzNiwxMiBAQAogCXNjaV9wb3J0ID0gJnNjaV9wb3J0c1tjby0+aW5kZXhdOwogCXBvcnQgPSAmc2NpX3BvcnQtPnBvcnQ7CiAKKwkvKgorCSAqIFJlZnVzZSB0byBoYW5kbGUgdW5pbml0aWFsaXplZCBwb3J0cy4KKwkgKi8KKwlpZiAoIXBvcnQtPm9wcykKKwkJcmV0dXJuIC1FTk9ERVY7CisKIAlyZXQgPSBzY2lfcmVtYXBfcG9ydChwb3J0KTsKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlyZXR1cm4gcmV0OwpAQCAtMTg2NiwxMyArMTg3Miw2IEBACiAJLmRhdGEJCT0gJnNjaV91YXJ0X2RyaXZlciwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNjaV9jb25zb2xlX2luaXQodm9pZCkKLXsKLQlyZWdpc3Rlcl9jb25zb2xlKCZzZXJpYWxfY29uc29sZSk7Ci0JcmV0dXJuIDA7Ci19Ci1jb25zb2xlX2luaXRjYWxsKHNjaV9jb25zb2xlX2luaXQpOwotCiBzdGF0aWMgc3RydWN0IGNvbnNvbGUgZWFybHlfc2VyaWFsX2NvbnNvbGUgPSB7CiAJLm5hbWUgICAgICAgICAgID0gImVhcmx5X3R0eVNDIiwKIAkud3JpdGUgICAgICAgICAgPSBzZXJpYWxfY29uc29sZV93cml0ZSwKQEAgLTE5MDEsMTggKzE5MDAsMTggQEAKIAlyZWdpc3Rlcl9jb25zb2xlKCZlYXJseV9zZXJpYWxfY29uc29sZSk7CiAJcmV0dXJuIDA7CiB9CisKKyNkZWZpbmUgU0NJX0NPTlNPTEUJKCZzZXJpYWxfY29uc29sZSkKKwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IF9fZGV2aW5pdCBzY2lfcHJvYmVfZWFybHlwcmludGsoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KLSNlbmRpZiAvKiBDT05GSUdfU0VSSUFMX1NIX1NDSV9DT05TT0xFICovCiAKLSNpZiBkZWZpbmVkKENPTkZJR19TRVJJQUxfU0hfU0NJX0NPTlNPTEUpCi0jZGVmaW5lIFNDSV9DT05TT0xFCSgmc2VyaWFsX2NvbnNvbGUpCi0jZWxzZQotI2RlZmluZSBTQ0lfQ09OU09MRQkwCi0jZW5kaWYKKyNkZWZpbmUgU0NJX0NPTlNPTEUJTlVMTAorCisjZW5kaWYgLyogQ09ORklHX1NFUklBTF9TSF9TQ0lfQ09OU09MRSAqLwogCiBzdGF0aWMgY2hhciBiYW5uZXJbXSBfX2luaXRkYXRhID0KIAlLRVJOX0lORk8gIlN1cGVySCBTQ0koRikgZHJpdmVyIGluaXRpYWxpemVkXG4iOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3NuX2NvbnNvbGUuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zbl9jb25zb2xlLmMKaW5kZXggY2ZmOWEzMC4uMzc3YWU3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL3NuX2NvbnNvbGUuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc25fY29uc29sZS5jCkBAIC0xNDYsNyArMTQ2LDcgQEAKIH07CiAKIC8qIHRoZSBjb25zb2xlIGRvZXMgb3V0cHV0IGluIHR3byBkaXN0aW5jdGx5IGRpZmZlcmVudCB3YXlzOgotICogc3luY2hyb25vdXMgKHJhdykgYW5kIGFzeW5jaHJvbm91cyAoYnVmZmVyZWQpLiAgaW5pdGFsbHksIGVhcmx5X3ByaW50aworICogc3luY2hyb25vdXMgKHJhdykgYW5kIGFzeW5jaHJvbm91cyAoYnVmZmVyZWQpLiAgaW5pdGlhbGx5LCBlYXJseV9wcmludGsKICAqIGRvZXMgc3luY2hyb25vdXMgb3V0cHV0LiAgYW55IGRhdGEgd3JpdHRlbiBnb2VzIGRpcmVjdGx5IHRvIHRoZSBTQUwKICAqIHRvIGJlIG91dHB1dCAoaW5jaWRlbnRhbGx5LCBpdCBpcyBpbnRlcm5hbGx5IGJ1ZmZlcmVkIGJ5IHRoZSBTQUwpCiAgKiBhZnRlciBpbnRlcnJ1cHRzIGFuZCB0aW1lcnMgYXJlIGluaXRpYWxpemVkIGFuZCBhdmFpbGFibGUgZm9yIHVzZSwKQEAgLTQ4MSw3ICs0ODEsNyBAQAogCXdoaWxlIChwb3J0LT5zY19vcHMtPnNhbF9pbnB1dF9wZW5kaW5nKCkpIHsKIAkJY2ggPSBwb3J0LT5zY19vcHMtPnNhbF9nZXRjKCk7CiAJCWlmIChjaCA8IDApIHsKLQkJCXByaW50ayhLRVJOX0VSUiAic25fY29uc29sZTogQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSAiCisJCQlwcmludGsoS0VSTl9FUlIgInNuX2NvbnNvbGU6IEFuIGVycm9yIG9jY3VycmVkIHdoaWxlICIKIAkJCSAgICAgICAib2J0YWluaW5nIGRhdGEgZnJvbSB0aGUgY29uc29sZSAoMHglMHgpXG4iLCBjaCk7CiAJCQlicmVhazsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3N1bnppbG9nLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYwppbmRleCA5OWZmOWFiLi44ZTkxNmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYwpAQCAtNDc0LDcgKzQ3NCw3IEBACiAJCSAqIGJlIG5pY2UgdG8gdHJhbnNtaXQgY29uc29sZSB3cml0ZXMganVzdCBsaWtlIHdlIG5vcm1hbGx5IHdvdWxkIGZvcgogCQkgKiBhIFRUWSBsaW5lLiAoaWUuIGJ1ZmZlcmVkIGFuZCBUWCBpbnRlcnJ1cHQgZHJpdmVuKS4gIFRoYXQgaXMgbm90CiAJCSAqIGVhc3kgYmVjYXVzZSBjb25zb2xlIHdyaXRlcyBjYW5ub3Qgc2xlZXAuICBPbmUgc29sdXRpb24gbWlnaHQgYmUKLQkJICogdG8gcG9sbCBvbiBlbm91Z2ggcG9ydC0+eG1pdCBzcGFjZSBiZWNvbW1pbmcgZnJlZS4gIC1EYXZlTQorCQkgKiB0byBwb2xsIG9uIGVub3VnaCBwb3J0LT54bWl0IHNwYWNlIGJlY29taW5nIGZyZWUuICAtRGF2ZU0KIAkJICovCiAJCWlmICghKHN0YXR1cyAmIFR4X0JVRl9FTVApKQogCQkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc3luY2xpbmsuYyBiL2RyaXZlcnMvdHR5L3N5bmNsaW5rLmMKaW5kZXggMTg4ODhkMC4uMjdkYTIzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc3luY2xpbmsuYworKysgYi9kcml2ZXJzL3R0eS9zeW5jbGluay5jCkBAIC00MDcyLDcgKzQwNzIsNyBAQAogCQogCWlmICggcmVxdWVzdF9pcnEoaW5mby0+aXJxX2xldmVsLG1nc2xfaW50ZXJydXB0LGluZm8tPmlycV9mbGFncywKIAkJaW5mby0+ZGV2aWNlX25hbWUsIGluZm8gKSA8IDAgKSB7Ci0JCXByaW50ayggIiVzKCVkKTpDYW50IHJlcXVlc3QgaW50ZXJydXB0IG9uIGRldmljZSAlcyBJUlE9JWRcbiIsCisJCXByaW50ayggIiVzKCVkKTpDYW4ndCByZXF1ZXN0IGludGVycnVwdCBvbiBkZXZpY2UgJXMgSVJRPSVkXG4iLAogCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPmlycV9sZXZlbCApOwogCQlnb3RvIGVycm91dDsKIAl9CkBAIC00MDk1LDcgKzQwOTUsNyBAQAogCQlpbmZvLT5tZW1vcnlfYmFzZSA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX21lbW9yeV9iYXNlLAogCQkJCQkJCQkweDQwMDAwKTsKIAkJaWYgKCFpbmZvLT5tZW1vcnlfYmFzZSkgewotCQkJcHJpbnRrKCAiJXMoJWQpOkNhbnQgbWFwIHNoYXJlZCBtZW1vcnkgb24gZGV2aWNlICVzIE1lbUFkZHI9JTA4WFxuIiwKKwkJCXByaW50ayggIiVzKCVkKTpDYW4ndCBtYXAgc2hhcmVkIG1lbW9yeSBvbiBkZXZpY2UgJXMgTWVtQWRkcj0lMDhYXG4iLAogCQkJCV9fRklMRV9fLF9fTElORV9fLGluZm8tPmRldmljZV9uYW1lLCBpbmZvLT5waHlzX21lbW9yeV9iYXNlICk7CiAJCQlnb3RvIGVycm91dDsKIAkJfQpAQCAtNDEwOSw3ICs0MTA5LDcgQEAKIAkJaW5mby0+bGNyX2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUoaW5mby0+cGh5c19sY3JfYmFzZSwKIAkJCQkJCQkJUEFHRV9TSVpFKTsKIAkJaWYgKCFpbmZvLT5sY3JfYmFzZSkgewotCQkJcHJpbnRrKCAiJXMoJWQpOkNhbnQgbWFwIExDUiBtZW1vcnkgb24gZGV2aWNlICVzIE1lbUFkZHI9JTA4WFxuIiwKKwkJCXByaW50ayggIiVzKCVkKTpDYW4ndCBtYXAgTENSIG1lbW9yeSBvbiBkZXZpY2UgJXMgTWVtQWRkcj0lMDhYXG4iLAogCQkJCV9fRklMRV9fLF9fTElORV9fLGluZm8tPmRldmljZV9uYW1lLCBpbmZvLT5waHlzX2xjcl9iYXNlICk7CiAJCQlnb3RvIGVycm91dDsKIAkJfQpAQCAtNDExOSw3ICs0MTE5LDcgQEAKIAkJLyogY2xhaW0gRE1BIGNoYW5uZWwgKi8KIAkJCiAJCWlmIChyZXF1ZXN0X2RtYShpbmZvLT5kbWFfbGV2ZWwsaW5mby0+ZGV2aWNlX25hbWUpIDwgMCl7Ci0JCQlwcmludGsoICIlcyglZCk6Q2FudCByZXF1ZXN0IERNQSBjaGFubmVsIG9uIGRldmljZSAlcyBETUE9JWRcbiIsCisJCQlwcmludGsoICIlcyglZCk6Q2FuJ3QgcmVxdWVzdCBETUEgY2hhbm5lbCBvbiBkZXZpY2UgJXMgRE1BPSVkXG4iLAogCQkJCV9fRklMRV9fLF9fTElORV9fLGluZm8tPmRldmljZV9uYW1lLCBpbmZvLT5kbWFfbGV2ZWwgKTsKIAkJCW1nc2xfcmVsZWFzZV9yZXNvdXJjZXMoIGluZm8gKTsKIAkJCXJldHVybiAtRU5PREVWOwpAQCAtNDEzMiw3ICs0MTMyLDcgQEAKIAl9CiAJCiAJaWYgKCBtZ3NsX2FsbG9jYXRlX2RtYV9idWZmZXJzKGluZm8pIDwgMCApIHsKLQkJcHJpbnRrKCAiJXMoJWQpOkNhbnQgYWxsb2NhdGUgRE1BIGJ1ZmZlcnMgb24gZGV2aWNlICVzIERNQT0lZFxuIiwKKwkJcHJpbnRrKCAiJXMoJWQpOkNhbid0IGFsbG9jYXRlIERNQSBidWZmZXJzIG9uIGRldmljZSAlcyBETUE9JWRcbiIsCiAJCQlfX0ZJTEVfXyxfX0xJTkVfXyxpbmZvLT5kZXZpY2VfbmFtZSwgaW5mby0+ZG1hX2xldmVsICk7CiAJCWdvdG8gZXJyb3V0OwogCX0JCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zeW5jbGlua19ndC5jIGIvZHJpdmVycy90dHkvc3luY2xpbmtfZ3QuYwppbmRleCBhMzVkZDU0Li4xOGI0OGNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zeW5jbGlua19ndC5jCisrKyBiL2RyaXZlcnMvdHR5L3N5bmNsaW5rX2d0LmMKQEAgLTM0OTEsNyArMzQ5MSw3IEBACiAKIAlpbmZvLT5yZWdfYWRkciA9IGlvcmVtYXBfbm9jYWNoZShpbmZvLT5waHlzX3JlZ19hZGRyLCBTTEdUX1JFR19TSVpFKTsKIAlpZiAoIWluZm8tPnJlZ19hZGRyKSB7Ci0JCURCR0VSUigoIiVzIGNhbnQgbWFwIGRldmljZSByZWdpc3RlcnMsIGFkZHI9JTA4WFxuIiwKKwkJREJHRVJSKCgiJXMgY2FuJ3QgbWFwIGRldmljZSByZWdpc3RlcnMsIGFkZHI9JTA4WFxuIiwKIAkJCWluZm8tPmRldmljZV9uYW1lLCBpbmZvLT5waHlzX3JlZ19hZGRyKSk7CiAJCWluZm8tPmluaXRfZXJyb3IgPSBEaWFnU3RhdHVzX0NhbnRBc3NpZ25QY2lSZXNvdXJjZXM7CiAJCWdvdG8gZXJyb3V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc3luY2xpbmttcC5jIGIvZHJpdmVycy90dHkvc3luY2xpbmttcC5jCmluZGV4IDMyNzM0MzYuLmM3NzgzMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3N5bmNsaW5rbXAuYworKysgYi9kcml2ZXJzL3R0eS9zeW5jbGlua21wLmMKQEAgLTM1OTUsNyArMzU5NSw3IEBACiAJaW5mby0+bWVtb3J5X2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUoaW5mby0+cGh5c19tZW1vcnlfYmFzZSwKIAkJCQkJCQkJU0NBX01FTV9TSVpFKTsKIAlpZiAoIWluZm8tPm1lbW9yeV9iYXNlKSB7Ci0JCXByaW50ayggIiVzKCVkKTolcyBDYW50IG1hcCBzaGFyZWQgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCisJCXByaW50ayggIiVzKCVkKTolcyBDYW4ndCBtYXAgc2hhcmVkIG1lbW9yeSwgTWVtQWRkcj0lMDhYXG4iLAogCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfbWVtb3J5X2Jhc2UgKTsKIAkJaW5mby0+aW5pdF9lcnJvciA9IERpYWdTdGF0dXNfQ2FudEFzc2lnblBjaVJlc291cmNlczsKIAkJZ290byBlcnJvdXQ7CkBAIC0zNjAzLDcgKzM2MDMsNyBAQAogCiAJaW5mby0+bGNyX2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUoaW5mby0+cGh5c19sY3JfYmFzZSwgUEFHRV9TSVpFKTsKIAlpZiAoIWluZm8tPmxjcl9iYXNlKSB7Ci0JCXByaW50ayggIiVzKCVkKTolcyBDYW50IG1hcCBMQ1IgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCisJCXByaW50ayggIiVzKCVkKTolcyBDYW4ndCBtYXAgTENSIG1lbW9yeSwgTWVtQWRkcj0lMDhYXG4iLAogCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfbGNyX2Jhc2UgKTsKIAkJaW5mby0+aW5pdF9lcnJvciA9IERpYWdTdGF0dXNfQ2FudEFzc2lnblBjaVJlc291cmNlczsKIAkJZ290byBlcnJvdXQ7CkBAIC0zNjEyLDcgKzM2MTIsNyBAQAogCiAJaW5mby0+c2NhX2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUoaW5mby0+cGh5c19zY2FfYmFzZSwgUEFHRV9TSVpFKTsKIAlpZiAoIWluZm8tPnNjYV9iYXNlKSB7Ci0JCXByaW50ayggIiVzKCVkKTolcyBDYW50IG1hcCBTQ0EgbWVtb3J5LCBNZW1BZGRyPSUwOFhcbiIsCisJCXByaW50ayggIiVzKCVkKTolcyBDYW4ndCBtYXAgU0NBIG1lbW9yeSwgTWVtQWRkcj0lMDhYXG4iLAogCQkJX19GSUxFX18sX19MSU5FX18saW5mby0+ZGV2aWNlX25hbWUsIGluZm8tPnBoeXNfc2NhX2Jhc2UgKTsKIAkJaW5mby0+aW5pdF9lcnJvciA9IERpYWdTdGF0dXNfQ2FudEFzc2lnblBjaVJlc291cmNlczsKIAkJZ290byBlcnJvdXQ7CkBAIC0zNjIyLDcgKzM2MjIsNyBAQAogCWluZm8tPnN0YXRjdHJsX2Jhc2UgPSBpb3JlbWFwX25vY2FjaGUoaW5mby0+cGh5c19zdGF0Y3RybF9iYXNlLAogCQkJCQkJCQlQQUdFX1NJWkUpOwogCWlmICghaW5mby0+c3RhdGN0cmxfYmFzZSkgewotCQlwcmludGsoICIlcyglZCk6JXMgQ2FudCBtYXAgU0NBIFN0YXR1cy9Db250cm9sIG1lbW9yeSwgTWVtQWRkcj0lMDhYXG4iLAorCQlwcmludGsoICIlcyglZCk6JXMgQ2FuJ3QgbWFwIFNDQSBTdGF0dXMvQ29udHJvbCBtZW1vcnksIE1lbUFkZHI9JTA4WFxuIiwKIAkJCV9fRklMRV9fLF9fTElORV9fLGluZm8tPmRldmljZV9uYW1lLCBpbmZvLT5waHlzX3N0YXRjdHJsX2Jhc2UgKTsKIAkJaW5mby0+aW5pdF9lcnJvciA9IERpYWdTdGF0dXNfQ2FudEFzc2lnblBjaVJlc291cmNlczsKIAkJZ290byBlcnJvdXQ7CkBAIC0zODY5LDcgKzM4NjksNyBAQAogCQkJCQlwb3J0X2FycmF5WzBdLT5pcnFfZmxhZ3MsCiAJCQkJCXBvcnRfYXJyYXlbMF0tPmRldmljZV9uYW1lLAogCQkJCQlwb3J0X2FycmF5WzBdKSA8IDAgKSB7Ci0JCQlwcmludGsoICIlcyglZCk6JXMgQ2FudCByZXF1ZXN0IGludGVycnVwdCwgSVJRPSVkXG4iLAorCQkJcHJpbnRrKCAiJXMoJWQpOiVzIENhbid0IHJlcXVlc3QgaW50ZXJydXB0LCBJUlE9JWRcbiIsCiAJCQkJX19GSUxFX18sX19MSU5FX18sCiAJCQkJcG9ydF9hcnJheVswXS0+ZGV2aWNlX25hbWUsCiAJCQkJcG9ydF9hcnJheVswXS0+aXJxX2xldmVsICk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfaW8uYyBiL2RyaXZlcnMvdHR5L3R0eV9pby5jCmluZGV4IDkzNmE0ZWEuLmQ3ZDUwYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jCisrKyBiL2RyaXZlcnMvdHR5L3R0eV9pby5jCkBAIC0yMTM0LDcgKzIxMzQsNyBAQAogICoJYWN0dWFsbHkgaGFzIGRyaXZlciBsZXZlbCBtZWFuaW5nIGFuZCB0cmlnZ2VycyBhIFZDIHJlc2l6ZS4KICAqCiAgKglMb2NraW5nOgotICoJCURyaXZlciBkZXBlbmRhbnQuIFRoZSBkZWZhdWx0IGRvX3Jlc2l6ZSBtZXRob2QgdGFrZXMgdGhlCisgKgkJRHJpdmVyIGRlcGVuZGVudC4gVGhlIGRlZmF1bHQgZG9fcmVzaXplIG1ldGhvZCB0YWtlcyB0aGUKICAqCXR0eSB0ZXJtaW9zIG11dGV4IGFuZCBjdHJsX2xvY2suIFRoZSBjb25zb2xlIHRha2VzIGl0cyBvd24gbG9jawogICoJdGhlbiBjYWxscyBpbnRvIHRoZSBkZWZhdWx0IG1ldGhvZC4KICAqLwpAQCAtMjE1NSw3ICsyMTU1LDcgQEAKICAqCXRpb2Njb25zCS0JYWxsb3cgYWRtaW4gdG8gbW92ZSBsb2dpY2FsIGNvbnNvbGUKICAqCUBmaWxlOiB0aGUgZmlsZSB0byBiZWNvbWUgY29uc29sZQogICoKLSAqCUFsbG93IHRoZSBhZG1pbnN0cmF0b3IgdG8gbW92ZSB0aGUgcmVkaXJlY3RlZCBjb25zb2xlIGRldmljZQorICoJQWxsb3cgdGhlIGFkbWluaXN0cmF0b3IgdG8gbW92ZSB0aGUgcmVkaXJlY3RlZCBjb25zb2xlIGRldmljZQogICoKICAqCUxvY2tpbmc6IHVzZXMgcmVkaXJlY3RfbG9jayB0byBndWFyZCB0aGUgcmVkaXJlY3QgaW5mb3JtYXRpb24KICAqLwpAQCAtMjI5MCw3ICsyMjkwLDcgQEAKIC8qKgogICoJdGlvY2dwZ3JwCQktCWdldCBwcm9jZXNzIGdyb3VwCiAgKglAdHR5OiB0dHkgcGFzc2VkIGJ5IHVzZXIKLSAqCUByZWFsX3R0eTogdHR5IHNpZGUgb2YgdGhlIHR0eSBwYXNlZCBieSB0aGUgdXNlciBpZiBhIHB0eSBlbHNlIHRoZSB0dHkKKyAqCUByZWFsX3R0eTogdHR5IHNpZGUgb2YgdGhlIHR0eSBwYXNzZWQgYnkgdGhlIHVzZXIgaWYgYSBwdHkgZWxzZSB0aGUgdHR5CiAgKglAcDogcmV0dXJuZWQgcGlkCiAgKgogICoJT2J0YWluIHRoZSBwcm9jZXNzIGdyb3VwIG9mIHRoZSB0dHkuIElmIHRoZXJlIGlzIG5vIHByb2Nlc3MgZ3JvdXAKQEAgLTIzNjcsNyArMjM2Nyw3IEBACiAvKioKICAqCXRpb2Nnc2lkCQktCWdldCBzZXNzaW9uIGlkCiAgKglAdHR5OiB0dHkgcGFzc2VkIGJ5IHVzZXIKLSAqCUByZWFsX3R0eTogdHR5IHNpZGUgb2YgdGhlIHR0eSBwYXNlZCBieSB0aGUgdXNlciBpZiBhIHB0eSBlbHNlIHRoZSB0dHkKKyAqCUByZWFsX3R0eTogdHR5IHNpZGUgb2YgdGhlIHR0eSBwYXNzZWQgYnkgdGhlIHVzZXIgaWYgYSBwdHkgZWxzZSB0aGUgdHR5CiAgKglAcDogcG9pbnRlciB0byByZXR1cm5lZCBzZXNzaW9uIGlkCiAgKgogICoJT2J0YWluIHRoZSBzZXNzaW9uIGlkIG9mIHRoZSB0dHkuIElmIHRoZXJlIGlzIG5vIHNlc3Npb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9pb2N0bC5jIGIvZHJpdmVycy90dHkvdHR5X2lvY3RsLmMKaW5kZXggMWExMTM1ZC4uMjE1NzRjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdHR5X2lvY3RsLmMKKysrIGIvZHJpdmVycy90dHkvdHR5X2lvY3RsLmMKQEAgLTI0Nyw3ICsyNDcsNyBAQAogCWNiYXVkID0gdGVybWlvcy0+Y19jZmxhZyAmIENCQVVEOwogCiAjaWZkZWYgQk9USEVSCi0JLyogTWFnaWMgdG9rZW4gZm9yIGFyYml0YXJ5IHNwZWVkIHZpYSBjX2lzcGVlZC9jX29zcGVlZCAqLworCS8qIE1hZ2ljIHRva2VuIGZvciBhcmJpdHJhcnkgc3BlZWQgdmlhIGNfaXNwZWVkL2Nfb3NwZWVkICovCiAJaWYgKGNiYXVkID09IEJPVEhFUikKIAkJcmV0dXJuIHRlcm1pb3MtPmNfb3NwZWVkOwogI2VuZGlmCkBAIC0yODMsNyArMjgzLDcgQEAKIAlpZiAoY2JhdWQgPT0gQjApCiAJCXJldHVybiB0dHlfdGVybWlvc19iYXVkX3JhdGUodGVybWlvcyk7CiAKLQkvKiBNYWdpYyB0b2tlbiBmb3IgYXJiaXRhcnkgc3BlZWQgdmlhIGNfaXNwZWVkKi8KKwkvKiBNYWdpYyB0b2tlbiBmb3IgYXJiaXRyYXJ5IHNwZWVkIHZpYSBjX2lzcGVlZCovCiAJaWYgKGNiYXVkID09IEJPVEhFUikKIAkJcmV0dXJuIHRlcm1pb3MtPmNfaXNwZWVkOwogCkBAIC00NDksNyArNDQ5LDcgQEAKICAqCUBuZXc6IE5ldyB0ZXJtaW9zCiAgKglAb2xkOiBPbGQgdGVybWlvcwogICoKLSAqCVByb3BvZ2F0ZSB0aGUgaGFyZHdhcmUgc3BlY2lmaWMgdGVybWluYWwgc2V0dGluZyBiaXRzIGZyb20KKyAqCVByb3BhZ2F0ZSB0aGUgaGFyZHdhcmUgc3BlY2lmaWMgdGVybWluYWwgc2V0dGluZyBiaXRzIGZyb20KICAqCXRoZSBvbGQgdGVybWlvcyBzdHJ1Y3R1cmUgdG8gdGhlIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBpbiBjYXNlcwogICoJd2hlcmUgdGhlIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgcmVjb25maWd1cmF0aW9uIG9yIGFzIGEgaGVscGVyCiAgKglpbiBzb21lIGNhc2VzIHdoZXJlIG9ubHkgbWluaW1hbCByZWNvbmZpZ3VyYXRpb24gaXMgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS92dC92dC5jIGIvZHJpdmVycy90dHkvdnQvdnQuYwppbmRleCBjODNjZGZiLi40YmVhMWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS92dC92dC5jCisrKyBiL2RyaXZlcnMvdHR5L3Z0L3Z0LmMKQEAgLTM5NjMsNyArMzk2Myw3IEBACiAgKiAgb2YgMzIgcGl4ZWxzLiBVc2Vyc3BhY2UgZm9udGRhdGEgaXMgc3RvcmVkIHdpdGggMzIgYnl0ZXMgKHNob3J0cy9pbnRzLCAKICAqICBkZXBlbmRpbmcgb24gd2lkdGgpIHJlc2VydmVkIGZvciBlYWNoIGNoYXJhY3RlciB3aGljaCBpcyBraW5kYSB3YXN0eSwgYnV0IAogICogIHRoaXMgaXMgZG9uZSBpbiBvcmRlciB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEVHQS9WR0EgZm9udHMuIEl0IAotICogIGlzIHVwdG8gdGhlIGFjdHVhbCBsb3ctbGV2ZWwgY29uc29sZS1kcml2ZXIgY29udmVydCBkYXRhIGludG8gaXRzIGZhdm9yaXRlCisgKiAgaXMgdXAgdG8gdGhlIGFjdHVhbCBsb3ctbGV2ZWwgY29uc29sZS1kcml2ZXIgY29udmVydCBkYXRhIGludG8gaXRzIGZhdm9yaXRlCiAgKiAgZm9ybWF0IChtYXliZSB3ZSBzaG91bGQgYWRkIGEgYGZvbnRvZmZzZXQnIGZpZWxkIHRvIHRoZSBgZGlzcGxheScKICAqICBzdHJ1Y3R1cmUgc28gd2Ugd29uJ3QgaGF2ZSB0byBjb252ZXJ0IHRoZSBmb250ZGF0YSBhbGwgdGhlIHRpbWUuCiAgKiAgL0plcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91aW8vdWlvX3BydXNzLmMgYi9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYwppbmRleCBkYWY2ZTc3Li5lNjdiNTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYworKysgYi9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYwpAQCAtMzksNyArMzksNyBAQAogTU9EVUxFX1BBUk1fREVTQyhleHRyYW1fcG9vbF9zeiwgImV4dGVybmFsIHJhbSBwb29sIHNpemUgdG8gYWxsb2NhdGUiKTsKIAogLyoKLSAqIEhvc3QgZXZlbnQgSVJRIG51bWJlcnMgZnJvbSBQUlVTUyAtIFBSVVNTIGNhbiBnZW5lcmF0ZSB1cHRvIDggaW50ZXJydXB0CisgKiBIb3N0IGV2ZW50IElSUSBudW1iZXJzIGZyb20gUFJVU1MgLSBQUlVTUyBjYW4gZ2VuZXJhdGUgdXAgdG8gOCBpbnRlcnJ1cHQKICAqIGV2ZW50cyB0byBBSU5UQyBvZiBBUk0gaG9zdCBwcm9jZXNzb3IgLSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgSVBDIGIvdyBQUlVTUwogICogZmlybXdhcmUgYW5kIHVzZXIgc3BhY2UgYXBwbGljYXRpb24sIGFzeW5jIG5vdGlmaWNhdGlvbiBmcm9tIFBSVSBmaXJtd2FyZQogICogdG8gdXNlciBzcGFjZSBhcHBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VlYWdsZS1hdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91ZWFnbGUtYXRtLmMKaW5kZXggYjI2OGU5Zi4uZTcxNTIxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYXRtL3VlYWdsZS1hdG0uYworKysgYi9kcml2ZXJzL3VzYi9hdG0vdWVhZ2xlLWF0bS5jCkBAIC0xMjgzLDcgKzEyODMsNyBAQAogCiAJLyogaW4gYnVsayBtb2RlIHRoZSBtb2RlbSBoYXZlIHByb2JsZW0gd2l0aCBoaWdoIHJhdGUKIAkgKiBjaGFuZ2luZyBpbnRlcm5hbCB0aW1pbmcgY291bGQgaW1wcm92ZSB0aGluZ3MsIGJ1dCB0aGUKLQkgKiB2YWx1ZSBpcyBtaXN0ZXJpb3VzLgorCSAqIHZhbHVlIGlzIG15c3RlcmlvdXMuCiAJICogQURJOTMwIGRvbid0IHN1cHBvcnQgaXQgKC1FUElQRSBlcnJvcikuCiAJICovCiAKQEAgLTE3NDMsNyArMTc0Myw3IEBACiAJCQkJZ290byBvdXQ7CiAJCX0KIAl9IGVsc2UgewotCQkvKiBUaGlzIHJlYWx5IHNob3VsZCBub3QgaGFwcGVuICovCisJCS8qIFRoaXMgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuICovCiAJCXVlYV9lcnIoSU5TX1RPX1VTQkRFVihzYyksICJiYWQgY212cyB2ZXJzaW9uICVkXG4iLCB2ZXIpOwogCQlnb3RvIG91dDsKIAl9CkBAIC0xNzk4LDcgKzE3OTgsNyBAQAogCQkJCWdvdG8gb3V0OwogCQl9CiAJfSBlbHNlIHsKLQkJLyogVGhpcyByZWFseSBzaG91bGQgbm90IGhhcHBlbiAqLworCQkvKiBUaGlzIHJlYWxseSBzaG91bGQgbm90IGhhcHBlbiAqLwogCQl1ZWFfZXJyKElOU19UT19VU0JERVYoc2MpLCAiYmFkIGNtdnMgdmVyc2lvbiAlZFxuIiwgdmVyKTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTgyOSw3ICsxODI5LDcgQEAKIAogCS8qIG1hc2sgaW50ZXJydXB0ICovCiAJc2MtPmJvb3RpbmcgPSAxOwotCS8qIFdlIG5lZWQgdG8gc2V0IHRoaXMgaGVyZSBiZWNhdXNlLCBhIGFjayB0aW1lb3V0IGNvdWxkIGhhdmUgb2NjdXJlZCwKKwkvKiBXZSBuZWVkIHRvIHNldCB0aGlzIGhlcmUgYmVjYXVzZSwgYSBhY2sgdGltZW91dCBjb3VsZCBoYXZlIG9jY3VycmVkLAogCSAqIGJ1dCBiZWZvcmUgd2Ugc3RhcnQgdGhlIHJlYm9vdCwgdGhlIGFjayBvY2N1cnMgYW5kIHNldCB0aGlzIHRvIDEuCiAJICogU28gd2Ugd2lsbCBmYWlsZWQgdG8gd2FpdCBSZWFkeSBDTVYuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWRydi5jIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1kcnYuYwppbmRleCBiNmQ0OTIzLi42MjA1MGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWRydi5jCisrKyBiL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtZHJ2LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIHRoZSBsaW5rIGJldHdlZW4gdGhlIGNvbW1vbiBoYXJkd2FyZSBwYXJ0cyBhbmQgdGhlIHN1YmRyaXZlcnMgKGUuZy4KICAqIGludGVycnVwdCBoYW5kbGluZykuCiAgKgotICogVGhlIGM2N3gwMCBoYXMgMiBTSUUncyAoc2VyaWFsIGludGVyZmFjZSBlbmdpbmUpIHdpY2ggY2FuIGJlIGNvbmZpZ3VyZWQKKyAqIFRoZSBjNjd4MDAgaGFzIDIgU0lFJ3MgKHNlcmlhbCBpbnRlcmZhY2UgZW5naW5lKSB3aGljaCBjYW4gYmUgY29uZmlndXJlZAogICogdG8gYmUgaG9zdCwgZGV2aWNlIG9yIE9URyAod2l0aCBzb21lIGxpbWl0YXRpb25zLCBFLkcuIG9ubHkgU0lFMSBjYW4gYmUgT1RHKS4KICAqCiAgKiBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24sIHRoZSBTSUUncyBhcmUgY3JlYXRlZCBhbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtaGNkLmggYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWhjZC5oCmluZGV4IDc0ZTQ0NjIuLmUzZDQ5M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtaGNkLmgKKysrIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1oY2QuaApAQCAtMzQsNyArMzQsNyBAQAogLyoKICAqIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBkZXBlbmQgb24gdGhlIENQVSBzcGVlZCwgYnVzIHNwZWVkLCAuLi4KICAqIFRoZXNlIGNhbiBiZSB0dW5lZCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCBlLmcuIGlmIGlzb2Nocm9ub3VzIHRyYW5zZmVycwotICogYXJlIHZlcnkgaW1wb3J0YW50LCBiYW5kd2l0aCBjYW4gYmUgc2FjcmlmaWNlZCB0byBndWFyYW50ZWUgdGhhdCB0aGUKKyAqIGFyZSB2ZXJ5IGltcG9ydGFudCwgYmFuZHdpZHRoIGNhbiBiZSBzYWNyaWZpY2VkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZQogICogMW1zIGRlYWRsaW5lIHdpbGwgYmUgbWV0LgogICogSWYgYnVsayB0cmFuc2ZlcnMgYXJlIGltcG9ydGFudCwgdGhlIE1BWF9GUkFNRV9CVyBjYW4gYmUgaW5jcmVhc2VkLAogICogYnV0IHNvbWUgKG9yIG1hbnkpIGlzb2Nocm9ub3VzIGRlYWRsaW5lcyBtaWdodCBub3QgYmUgbWV0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1zY2hlZC5jIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1zY2hlZC5jCmluZGV4IGY2YjNjMjUuLmEwM2ZiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtc2NoZWQuYworKysgYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLXNjaGVkLmMKQEAgLTkwNyw3ICs5MDcsNyBAQAogCiAvKiBSZW1vdmUgYWxsIHRkJ3MgZnJvbSB0aGUgbGlzdCB3aGljaCBjb21lCiAgKiBhZnRlciBsYXN0X3RkIGFuZCBhcmUgbWVhbnQgZm9yIHRoZSBzYW1lIHBpcGUuCi0gKiBUaGlzIGlzIHVzZWQgd2hlbiBhIHNob3J0IHBhY2tldCBoYXMgb2NjdXJlZCAqLworICogVGhpcyBpcyB1c2VkIHdoZW4gYSBzaG9ydCBwYWNrZXQgaGFzIG9jY3VycmVkICovCiBzdGF0aWMgaW5saW5lIHZvaWQgYzY3eDAwX2NsZWFyX3BpcGUoc3RydWN0IGM2N3gwMF9oY2QgKmM2N3gwMCwKIAkJCQkgICAgIHN0cnVjdCBjNjd4MDBfdGQgKmxhc3RfdGQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmggYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmgKaW5kZXggNWVlYjU3MC4uYjRlYTU0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5oCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaApAQCAtNTIsNyArNTIsNyBAQAogICovCiAKIC8qCi0gKiBUaGUgb25seSByZWFzb24gdG8gaGF2ZSBzZXZlcmFsIGJ1ZmZlcnMgaXMgdG8gYWNjb21vZGF0ZSBhc3N1bXB0aW9ucworICogVGhlIG9ubHkgcmVhc29uIHRvIGhhdmUgc2V2ZXJhbCBidWZmZXJzIGlzIHRvIGFjY29tbW9kYXRlIGFzc3VtcHRpb25zCiAgKiBpbiBsaW5lIGRpc2NpcGxpbmVzLiBUaGV5IGFzayBmb3IgZW1wdHkgc3BhY2UgYW1vdW50LCByZWNlaXZlIG91ciBVUkIgc2l6ZSwKICAqIGFuZCBwcm9jZWVkIHRvIGlzc3VlIHNldmVyYWwgMS1jaGFyYWN0ZXIgd3JpdGVzLCBhc3N1bWluZyB0aGV5IHdpbGwgZml0LgogICogVGhlIHZlcnkgZmlyc3Qgd3JpdGUgdGFrZXMgYSBjb21wbGV0ZSBVUkIuIEZvcnR1bmF0ZWx5LCB0aGlzIG9ubHkgaGFwcGVucwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwppbmRleCA2YTU0NjM0Li4zODVhY2I4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKKysrIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKQEAgLTQ4Myw3ICs0ODMsNyBAQAogCQl9CiAKIAkJZG9uZSArPSBuX2NoYXJhY3RlcnM7Ci0JCS8qIFRlcm1pbmF0ZSBpZiBlbmQtb2YtbWVzc2FnZSBiaXQgcmVjaWV2ZWQgZnJvbSBkZXZpY2UgKi8KKwkJLyogVGVybWluYXRlIGlmIGVuZC1vZi1tZXNzYWdlIGJpdCByZWNlaXZlZCBmcm9tIGRldmljZSAqLwogCQlpZiAoKGJ1ZmZlcls4XSAmICAweDAxKSAmJiAoYWN0dWFsID49IG5fY2hhcmFjdGVycyArIDEyKSkKIAkJCXJlbWFpbmluZyA9IDA7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCmluZGV4IDAyYjRkYmYuLjhlZWQwNWQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKQEAgLTcwMCw3ICs3MDAsNyBAQAogCS8qIFRoZSBVU0IgMi4wIHNwZWMgc2F5cyAyNTYgbXMuICBUaGlzIGlzIGNsb3NlIGVub3VnaCBhbmQgd29uJ3QKIAkgKiBleGNlZWQgdGhhdCBsaW1pdCBpZiBIWiBpcyAxMDAuIFRoZSBtYXRoIGlzIG1vcmUgY2x1bmt5IHRoYW4KIAkgKiBtYXliZSBleHBlY3RlZCwgdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhhdCBhbGwgdGltZXJzIGZvciBVU0IgZGV2aWNlcwotCSAqIGZpcmUgYXQgdGhlIHNhbWUgdGltZSB0byBnaXZlIHRoZSBDUFUgYSBicmVhayBpbmJldHdlZW4gKi8KKwkgKiBmaXJlIGF0IHRoZSBzYW1lIHRpbWUgdG8gZ2l2ZSB0aGUgQ1BVIGEgYnJlYWsgaW4gYmV0d2VlbiAqLwogCWlmIChoY2QtPnVzZXNfbmV3X3BvbGxpbmcgPyBIQ0RfUE9MTF9SSChoY2QpIDoKIAkJCShsZW5ndGggPT0gMCAmJiBoY2QtPnN0YXR1c191cmIgIT0gTlVMTCkpCiAJCW1vZF90aW1lciAoJmhjZC0+cmhfdGltZXIsIChqaWZmaWVzLyhIWi80KSArIDEpICogKEhaLzQpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCmluZGV4IDU2NGVhYTUuLjhmYjc1NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9odWIuYwpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAKIAogCS8qIG1hcmsgdGhlIGRldmljZSBhcyBpbmFjdGl2ZSwgc28gYW55IGZ1cnRoZXIgdXJiIHN1Ym1pc3Npb25zIGZvcgogCSAqIHRoaXMgZGV2aWNlIChhbmQgYW55IG9mIGl0cyBjaGlsZHJlbikgd2lsbCBmYWlsIGltbWVkaWF0ZWx5LgotCSAqIHRoaXMgcXVpZXNjZXMgZXZlcnl0aW5nIGV4Y2VwdCBwZW5kaW5nIHVyYnMuCisJICogdGhpcyBxdWllc2NlcyBldmVyeXRoaW5nIGV4Y2VwdCBwZW5kaW5nIHVyYnMuCiAJICovCiAJdXNiX3NldF9kZXZpY2Vfc3RhdGUodWRldiwgVVNCX1NUQVRFX05PVEFUVEFDSEVEKTsKIAlkZXZfaW5mbygmdWRldi0+ZGV2LCAiVVNCIGRpc2Nvbm5lY3QsIGRldmljZSBudW1iZXIgJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9lYXJseS9laGNpLWRiZ3AuYyBiL2RyaXZlcnMvdXNiL2Vhcmx5L2VoY2ktZGJncC5jCmluZGV4IDBiYzA2ZTIuLmE2YTM1MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2Vhcmx5L2VoY2ktZGJncC5jCisrKyBiL2RyaXZlcnMvdXNiL2Vhcmx5L2VoY2ktZGJncC5jCkBAIC02NDgsNyArNjQ4LDcgQEAKIAkJaWYgKCEocG9ydHNjICYgUE9SVF9DT05ORUNUKSkKIAkJCXJldHVybiAtRU5PVENPTk47CiAKLQkJLyogYm9tYiBvdXQgY29tcGxldGVseSBpZiBzb21ldGhpbmcgd2VpcmQgaGFwcGVuZCAqLworCQkvKiBib21iIG91dCBjb21wbGV0ZWx5IGlmIHNvbWV0aGluZyB3ZWlyZCBoYXBwZW5lZCAqLwogCQlpZiAoKHBvcnRzYyAmIFBPUlRfQ1NDKSkKIAkJCXJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuYwppbmRleCBmOGRkNzI2Li42ZTQyYWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmMKQEAgLTI3OCw3ICsyNzgsNyBAQAogCXJldHVybiAwOwogfQogCi0vKiBDYWxjdWxhdGVzIGZpZm8gc3RhcnQgb2YgZW5kcG9pbnQgYmFzZWQgb24gcHJlY2VlZGluZyBlbmRwb2ludHMgKi8KKy8qIENhbGN1bGF0ZXMgZmlmbyBzdGFydCBvZiBlbmRwb2ludCBiYXNlZCBvbiBwcmVjZWRpbmcgZW5kcG9pbnRzICovCiBzdGF0aWMgaW50IHVkY19zZXRfdHhmaWZvX2FkZHIoc3RydWN0IHVkY19lcCAqZXApCiB7CiAJc3RydWN0IHVkYwkqZGV2OwpAQCAtMjEzNyw3ICsyMTM3LDcgQEAKIAlpZiAodXNlX2RtYSkgewogCQkvKiBCTkEgZXZlbnQgPyAqLwogCQlpZiAodG1wICYgQU1EX0JJVChVRENfRVBTVFNfQk5BKSkgewotCQkJREJHKGRldiwgIkJOQSBlcCVkb3V0IG9jY3VyZWQgLSBERVNQVFIgPSAleCBcbiIsCisJCQlEQkcoZGV2LCAiQk5BIGVwJWRvdXQgb2NjdXJyZWQgLSBERVNQVFIgPSAleCBcbiIsCiAJCQkJCWVwLT5udW0sIHJlYWRsKCZlcC0+cmVncy0+ZGVzcHRyKSk7CiAJCQkvKiBjbGVhciBCTkEgKi8KIAkJCXdyaXRlbCh0bXAgfCBBTURfQklUKFVEQ19FUFNUU19CTkEpLCAmZXAtPnJlZ3MtPnN0cyk7CkBAIC0yMTUxLDcgKzIxNTEsNyBAQAogCX0KIAkvKiBIRSBldmVudCA/ICovCiAJaWYgKHRtcCAmIEFNRF9CSVQoVURDX0VQU1RTX0hFKSkgewotCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwgIkhFIGVwJWRvdXQgb2NjdXJlZFxuIiwgZXAtPm51bSk7CisJCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LCAiSEUgZXAlZG91dCBvY2N1cnJlZFxuIiwgZXAtPm51bSk7CiAKIAkJLyogY2xlYXIgSEUgKi8KIAkJd3JpdGVsKHRtcCB8IEFNRF9CSVQoVURDX0VQU1RTX0hFKSwgJmVwLT5yZWdzLT5zdHMpOwpAQCAtMjM1NCw3ICsyMzU0LDcgQEAKIAkJLyogQk5BID8gKi8KIAkJaWYgKGVwc3RzICYgQU1EX0JJVChVRENfRVBTVFNfQk5BKSkgewogCQkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsCi0JCQkJIkJOQSBlcCVkaW4gb2NjdXJlZCAtIERFU1BUUiA9ICUwOGx4IFxuIiwKKwkJCQkiQk5BIGVwJWRpbiBvY2N1cnJlZCAtIERFU1BUUiA9ICUwOGx4IFxuIiwKIAkJCQllcC0+bnVtLAogCQkJCSh1bnNpZ25lZCBsb25nKSByZWFkbCgmZXAtPnJlZ3MtPmRlc3B0cikpOwogCkBAIC0yMzY3LDcgKzIzNjcsNyBAQAogCS8qIEhFIGV2ZW50ID8gKi8KIAlpZiAoZXBzdHMgJiBBTURfQklUKFVEQ19FUFNUU19IRSkpIHsKIAkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsCi0JCQkiSEUgZXAlZG4gb2NjdXJlZCAtIERFU1BUUiA9ICUwOGx4IFxuIiwKKwkJCSJIRSBlcCVkbiBvY2N1cnJlZCAtIERFU1BUUiA9ICUwOGx4IFxuIiwKIAkJCWVwLT5udW0sICh1bnNpZ25lZCBsb25nKSByZWFkbCgmZXAtPnJlZ3MtPmRlc3B0cikpOwogCiAJCS8qIGNsZWFyIEhFICovCkBAIC0yMzg0LDcgKzIzODQsNyBAQAogCQkJcmVxID0gbGlzdF9lbnRyeShlcC0+cXVldWUubmV4dCwKIAkJCQkJc3RydWN0IHVkY19yZXF1ZXN0LCBxdWV1ZSk7CiAJCQkvKgotCQkJICogbGVuZ3RoIGJ5dGVzIHRyYW5zZmVyZWQKKwkJCSAqIGxlbmd0aCBieXRlcyB0cmFuc2ZlcnJlZAogCQkJICogY2hlY2sgZG1hIGRvbmUgb2YgbGFzdCBkZXNjLiBpbiBQUEJEVSBtb2RlCiAJCQkgKi8KIAkJCWlmICh1c2VfZG1hX3BwYl9kdSkgewpAQCAtMjc4NCw3ICsyNzg0LDcgQEAKIAkJCQkJLyogd3JpdGUgZmlmbyAqLwogCQkJCQl1ZGNfdHhmaWZvX3dyaXRlKGVwLCAmcmVxLT5yZXEpOwogCi0JCQkJCS8qIGxlbmdoIGJ5dGVzIHRyYW5zZmVyZWQgKi8KKwkJCQkJLyogbGVuZ2ggYnl0ZXMgdHJhbnNmZXJyZWQgKi8KIAkJCQkJbGVuID0gcmVxLT5yZXEubGVuZ3RoIC0gcmVxLT5yZXEuYWN0dWFsOwogCQkJCQlpZiAobGVuID4gZXAtPmVwLm1heHBhY2tldCkKIAkJCQkJCWxlbiA9IGVwLT5lcC5tYXhwYWNrZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5oIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuaAppbmRleCA0YmJhYmJiLi4xZDFjNzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5oCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmgKQEAgLTU4NCw3ICs1ODQsNyBAQAogICogU0VUIGFuZCBHRVQgYml0ZmllbGRzIGluIHUzMiB2YWx1ZXMKICAqIHZpYSBjb25zdGFudHMgZm9yIG1hc2svb2Zmc2V0OgogICogPGJpdF9maWVsZF9zdHViX25hbWU+IGlzIHRoZSB0ZXh0IGJldHdlZW4KLSAqIFVEQ18gYW5kIF9NQVNLfF9PRlMgb2YgYXBwcm9waWF0ZQorICogVURDXyBhbmQgX01BU0t8X09GUyBvZiBhcHByb3ByaWF0ZQogICogY29uc3RhbnQKICAqCiAgKiBzZXQgYml0ZmllbGQgdmFsdWUgaW4gdTMyIHUzMlZhbApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2F0OTFfdWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYXQ5MV91ZGMuYwppbmRleCBiYjhkZGYwLi45YjdjZGIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvYXQ5MV91ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYXQ5MV91ZGMuYwpAQCAtODI2LDcgKzgyNiw3IEBACiAJcmV0dXJuIHN0YXR1czsKIH0KIAotLyogcmVpbml0ID09IHJlc3RvcmUgaW5pdGFsIHNvZnR3YXJlIHN0YXRlICovCisvKiByZWluaXQgPT0gcmVzdG9yZSBpbml0aWFsIHNvZnR3YXJlIHN0YXRlICovCiBzdGF0aWMgdm9pZCB1ZGNfcmVpbml0KHN0cnVjdCBhdDkxX3VkYyAqdWRjKQogewogCXUzMiBpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jCmluZGV4IGMyMjUxYzQuLjgyMzE0ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKQEAgLTQyLDcgKzQyLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgdXNiX2NvbXBvc2l0ZV9kcml2ZXIgKmNvbXBvc2l0ZTsKIHN0YXRpYyBpbnQgKCpjb21wb3NpdGVfZ2FkZ2V0X2JpbmQpKHN0cnVjdCB1c2JfY29tcG9zaXRlX2RldiAqY2Rldik7CiAKLS8qIFNvbWUgc3lzdGVtcyB3aWxsIG5lZWQgcnVudGltZSBvdmVycmlkZXMgZm9yIHRoZSAgcHJvZHVjdCBpZGVudGlmZXJzCisvKiBTb21lIHN5c3RlbXMgd2lsbCBuZWVkIHJ1bnRpbWUgb3ZlcnJpZGVzIGZvciB0aGUgIHByb2R1Y3QgaWRlbnRpZmllcnMKICAqIHB1Ymxpc2hlZCBpbiB0aGUgZGV2aWNlIGRlc2NyaXB0b3IsIGVpdGhlciBudW1iZXJzIG9yIHN0cmluZ3Mgb3IgYm90aC4KICAqIFN0cmluZyBwYXJhbWV0ZXJzIGFyZSBpbiBVVEYtOCAoc3VwZXJzZXQgb2YgQVNDSUkncyA3IGJpdCBjaGFyYWN0ZXJzKS4KICAqLwpAQCAtMjA1LDE0ICsyMDUsMTQgQEAKICAqIHVzYl9pbnRlcmZhY2VfaWQoKSBpcyBjYWxsZWQgZnJvbSB1c2JfZnVuY3Rpb24uYmluZCgpIGNhbGxiYWNrcyB0bwogICogYWxsb2NhdGUgbmV3IGludGVyZmFjZSBJRHMuICBUaGUgZnVuY3Rpb24gZHJpdmVyIHdpbGwgdGhlbiBzdG9yZSB0aGF0CiAgKiBJRCBpbiBpbnRlcmZhY2UsIGFzc29jaWF0aW9uLCBDREMgdW5pb24sIGFuZCBvdGhlciBkZXNjcmlwdG9ycy4gIEl0Ci0gKiB3aWxsIGFsc28gaGFuZGxlIGFueSBjb250cm9sIHJlcXVlc3RzIHRhcmdldHRlZCBhdCB0aGF0IGludGVyZmFjZSwKKyAqIHdpbGwgYWxzbyBoYW5kbGUgYW55IGNvbnRyb2wgcmVxdWVzdHMgdGFyZ2V0ZWQgYXQgdGhhdCBpbnRlcmZhY2UsCiAgKiBwYXJ0aWN1bGFybHkgY2hhbmdpbmcgaXRzIGFsdHNldHRpbmcgdmlhIHNldF9hbHQoKS4gIFRoZXJlIG1heQogICogYWxzbyBiZSBjbGFzcy1zcGVjaWZpYyBvciB2ZW5kb3Itc3BlY2lmaWMgcmVxdWVzdHMgdG8gaGFuZGxlLgogICoKICAqIEFsbCBpbnRlcmZhY2UgaWRlbnRpZmllciBzaG91bGQgYmUgYWxsb2NhdGVkIHVzaW5nIHRoaXMgcm91dGluZSwgdG8KICAqIGVuc3VyZSB0aGF0IGZvciBleGFtcGxlIGRpZmZlcmVudCBmdW5jdGlvbnMgZG9uJ3Qgd3JvbmdseSBhc3NpZ24KICAqIGRpZmZlcmVudCBtZWFuaW5ncyB0byB0aGUgc2FtZSBpZGVudGlmaWVyLiAgTm90ZSB0aGF0IHNpbmNlIGludGVyZmFjZQotICogaWRlbnRpZmVycyBhcmUgY29uZmlndXJhdGlvbi1zcGVjaWZpYywgZnVuY3Rpb25zIHVzZWQgaW4gbW9yZSB0aGFuCisgKiBpZGVudGlmaWVycyBhcmUgY29uZmlndXJhdGlvbi1zcGVjaWZpYywgZnVuY3Rpb25zIHVzZWQgaW4gbW9yZSB0aGFuCiAgKiBvbmUgY29uZmlndXJhdGlvbiAob3IgbW9yZSB0aGFuIG9uY2UgaW4gYSBnaXZlbiBjb25maWd1cmF0aW9uKSBuZWVkCiAgKiBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgcmVsZXZhbnQgZGVzY3JpcHRvcnMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfYXVkaW8uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX2F1ZGlvLmMKaW5kZXggMDA5NzVlZC4uOWFiZWNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfYXVkaW8uYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9hdWRpby5jCkBAIC03NDIsNyArNzQyLDcgQEAKIH0KIAogLyoqCi0gKiBhdWRpb19iaW5kX2NvbmZpZyAtIGFkZCBVU0IgYXVkaW8gZnVjbnRpb24gdG8gYSBjb25maWd1cmF0aW9uCisgKiBhdWRpb19iaW5kX2NvbmZpZyAtIGFkZCBVU0IgYXVkaW8gZnVuY3Rpb24gdG8gYSBjb25maWd1cmF0aW9uCiAgKiBAYzogdGhlIGNvbmZpZ3VyYXRpb24gdG8gc3VwY2FyZCB0aGUgVVNCIGF1ZGlvIGZ1bmN0aW9uCiAgKiBDb250ZXh0OiBzaW5nbGUgdGhyZWFkZWQgZHVyaW5nIGdhZGdldCBzZXR1cAogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mX25jbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfbmNtLmMKaW5kZXggMTMwZWVlNi4uODY5MDJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfbmNtLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfbmNtLmMKQEAgLTExMSw3ICsxMTEsNyBAQAogI2RlZmluZSBOVEJfT1VUX1NJWkUJCTE2Mzg0CiAKIC8qCi0gKiBza2JzIG9mIHNpemUgbGVzcyB0aGFuIHRoYXQgd2lsbCBub3QgYmUgYWxsaWduZWQKKyAqIHNrYnMgb2Ygc2l6ZSBsZXNzIHRoYW4gdGhhdCB3aWxsIG5vdCBiZSBhbGlnbmVkCiAgKiB0byBOQ00ncyBkd050YkluTWF4U2l6ZSB0byBzYXZlIGJ1cyBiYW5kd2lkdGgKICAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5oIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuaAppbmRleCBiZWE1YjgyLi5lMzVlMjRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5oCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmgKQEAgLTIwOCwxNCArMjA4LDE0IEBACiAvKiBGcmFtZSBzdGF0dXMgZmllbGQgKi8KIC8qIFJlY2VpdmUgc2lkZSAqLwogI2RlZmluZSBGUkFNRV9PSyAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgLyogRnJhbWUgdHJhbm1pdHRlZCBvciByZWNlaXZlZCBPSyAqLwotI2RlZmluZSBGUkFNRV9FUlJPUiAgICAgICAgICAgIDB4ODAwMDAwMDAgLyogRXJyb3Igb2NjdXJlZCBvbiBmcmFtZSAqLworI2RlZmluZSBGUkFNRV9FUlJPUiAgICAgICAgICAgIDB4ODAwMDAwMDAgLyogRXJyb3Igb2NjdXJyZWQgb24gZnJhbWUgKi8KICNkZWZpbmUgU1RBUlRfRlJBTUVfTE9TVCAgICAgICAweDQwMDAwMDAwIC8qIFNUQVJUX0ZSQU1FX0xPU1QgKi8KICNkZWZpbmUgRU5EX0ZSQU1FX0xPU1QgICAgICAgICAweDIwMDAwMDAwIC8qIEVORF9GUkFNRV9MT1NUICovCiAjZGVmaW5lIFJYX0VSX05PTk9DVCAgICAgICAgICAgMHgxMDAwMDAwMCAvKiBSeCBOb24gT2N0ZXQgQWxpZ25lZCBQYWNrZXQgKi8KICNkZWZpbmUgUlhfRVJfQklUU1RVRkYgICAgICAgICAweDA4MDAwMDAwIC8qIEZyYW1lIEFib3J0ZWQgLS1SZWNlaXZlZCBwYWNrZXQKIAkJCQkJICAgICB3aXRoIGJpdCBzdHVmZiBlcnJvciAqLwogI2RlZmluZSBSWF9FUl9DUkMgICAgICAgICAgICAgIDB4MDQwMDAwMDAgLyogUmVjZWl2ZWQgcGFja2V0IHdpdGggQ1JDIGVycm9yICovCi0jZGVmaW5lIFJYX0VSX09WRVJVTiAgICAgICAgICAgMHgwMjAwMDAwMCAvKiBPdmVyLXJ1biBvY2N1cmVkIG9uIHJlY2VwdGlvbiAqLworI2RlZmluZSBSWF9FUl9PVkVSVU4gICAgICAgICAgIDB4MDIwMDAwMDAgLyogT3Zlci1ydW4gb2NjdXJyZWQgb24gcmVjZXB0aW9uICovCiAjZGVmaW5lIFJYX0VSX1BJRCAgICAgICAgICAgICAgMHgwMTAwMDAwMCAvKiBXcm9uZyBQSUQgcmVjZWl2ZWQgKi8KIC8qIFRyYW5taXQgc2lkZSAqLwogI2RlZmluZSBUWF9FUl9OQUsgICAgICAgICAgICAgIDB4MDA4MDAwMDAgLyogUmVjZWl2ZWQgTkFLIGhhbmRzaGFrZSAqLwpAQCAtMzc5LDcgKzM3OSw3IEBACiAjZGVmaW5lIFRfTFNQICAgICAgICAgMHgwMTAwMDAwMCAgICAgICAgIC8qIExvdy1zcGVlZCB0cmFuc2FjdGlvbiAqLwogI2RlZmluZSBUX1BJRCAgICAgICAgIDB4MDBjMDAwMDAgICAgICAgICAvKiBwYWNrZXQgaWQgKi8KICNkZWZpbmUgVF9OQUsgICAgICAgICAweDAwMTAwMDAwICAgICAgICAgLyogTm8gYWNrLiAqLwotI2RlZmluZSBUX1NUQUwgICAgICAgIDB4MDAwODAwMDAgICAgICAgICAvKiBTdGFsbCByZWNpZXZlZCAqLworI2RlZmluZSBUX1NUQUwgICAgICAgIDB4MDAwODAwMDAgICAgICAgICAvKiBTdGFsbCByZWNlaXZlZCAqLwogI2RlZmluZSBUX1RPICAgICAgICAgIDB4MDAwNDAwMDAgICAgICAgICAvKiB0aW1lIG91dCAqLwogI2RlZmluZSBUX1VOICAgICAgICAgIDB4MDAwMjAwMDAgICAgICAgICAvKiB1bmRlcnJ1biAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VkY19jb3JlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VkY19jb3JlLmMKaW5kZXggOTEyY2I4ZS4uMDc0OTljMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91ZGNfY29yZS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdWRjX2NvcmUuYwpAQCAtNDY0LDcgKzQ2NCw3IEBACiAKIAltYXggPSBsZTE2X3RvX2NwdShkZXNjLT53TWF4UGFja2V0U2l6ZSk7CiAKLQkvKiBEaXNhYmxlIGF1dG9tYXRpYyB6bHAgZ2VuZXJhdGlvbi4gIERyaXZlciBpcyByZXBvbnNpYmxlIHRvIGluZGljYXRlCisJLyogRGlzYWJsZSBhdXRvbWF0aWMgemxwIGdlbmVyYXRpb24uICBEcml2ZXIgaXMgcmVzcG9uc2libGUgdG8gaW5kaWNhdGUKIAkgKiBleHBsaWNpdGx5IHRocm91Z2ggcmVxLT5yZXEuemVyby4gIFRoaXMgaXMgbmVlZGVkIHRvIGVuYWJsZSBtdWx0aS10ZAogCSAqIHJlcXVlc3QuICovCiAJemx0ID0gMTsKQEAgLTY0OCw3ICs2NDgsNyBAQAogCQkJfCBFUF9RVUVVRV9IRUFEX1NUQVRVU19IQUxUKSk7CiAJZFFILT5zaXplX2lvY19pbnRfc3RzICY9IHRlbXA7CiAKLQkvKiBFbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBRSCB3aWxsIG9jY3VyZSBiZWZvcmUgcHJpbWluZy4gKi8KKwkvKiBFbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBRSCB3aWxsIG9jY3VyIGJlZm9yZSBwcmltaW5nLiAqLwogCXdtYigpOwogCiAJLyogUHJpbWUgZW5kcG9pbnQgYnkgd3JpdGluZyAxIHRvIEVORFBUUFJJTUUgKi8KQEAgLTE0NTksNyArMTQ1OSw3IEBACiAJCQkJc3RhdHVzID0gLUVJTFNFUTsKIAkJCQlicmVhazsKIAkJCX0gZWxzZQotCQkJCUVSUigiVW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCAoMHgleCkhXG4iLAorCQkJCUVSUigiVW5rbm93biBlcnJvciBoYXMgb2NjdXJyZWQgKDB4JXgpIVxuIiwKIAkJCQkJZXJyb3JzKTsKIAogCQl9IGVsc2UgaWYgKGxlMzJfdG9fY3B1KGN1cnJfdGQtPnNpemVfaW9jX3N0cykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuaCBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuaAppbmRleCAyMGFlY2VlLi5lODhjY2U1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmgKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5oCkBAIC0xNSw3ICsxNSw3IEBACiAJdTggcmVzMVsyNTZdOwogCXUxNiBjYXBsZW5ndGg7CQkvKiBDYXBhYmlsaXR5IFJlZ2lzdGVyIExlbmd0aCAqLwogCXUxNiBoY2l2ZXJzaW9uOwkJLyogSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBWZXJzaW9uICovCi0JdTMyIGhjc3BhcmFtczsJCS8qIEhvc3QgQ29udHJvbGxlciBTdHJ1Y3R1YWwgUGFyYW1ldGVycyAqLworCXUzMiBoY3NwYXJhbXM7CQkvKiBIb3N0IENvbnRyb2xsZXIgU3RydWN0dXJhbCBQYXJhbWV0ZXJzICovCiAJdTMyIGhjY3BhcmFtczsJCS8qIEhvc3QgQ29udHJvbGxlciBDYXBhYmlsaXR5IFBhcmFtZXRlcnMgKi8KIAl1OCByZXMyWzIwXTsKIAl1MzIgZGNpdmVyc2lvbjsJCS8qIERldmljZSBDb250cm9sbGVyIEludGVyZmFjZSBWZXJzaW9uICovCkBAIC01Miw3ICs1Miw3IEBACiAJdTggcmVzMVsyNTZdOwogCXUxNiBjYXBsZW5ndGg7CQkvKiBDYXBhYmlsaXR5IFJlZ2lzdGVyIExlbmd0aCAqLwogCXUxNiBoY2l2ZXJzaW9uOwkJLyogSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBWZXJzaW9uICovCi0JdTMyIGhjc3BhcmFtczsJCS8qIEhvc3QgQ29udHJvbGxlciBTdHJ1Y3R1YWwgUGFyYW1ldGVycyAqLworCXUzMiBoY3NwYXJhbXM7CQkvKiBIb3N0IENvbnRyb2xsZXIgU3RydWN0dXJhbCBQYXJhbWV0ZXJzICovCiAJdTMyIGhjY3BhcmFtczsJCS8qIEhvc3QgQ29udHJvbGxlciBDYXBhYmlsaXR5IFBhcmFtZXRlcnMgKi8KIAl1OCByZXMyWzIwXTsKIAl1MzIgZGNpdmVyc2lvbjsJCS8qIERldmljZSBDb250cm9sbGVyIEludGVyZmFjZSBWZXJzaW9uICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZ21pZGkuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jCmluZGV4IDBhYjdlMTQuLjQ3Yjg2YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jCkBAIC02Nyw3ICs2Nyw3IEBACiBtb2R1bGVfcGFyYW0oaWQsIGNoYXJwLCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoaWQsICJJRCBzdHJpbmcgZm9yIHRoZSBVU0IgTUlESSBHYWRnZXQgYWRhcHRlci4iKTsKIAotLyogU29tZSBzeXN0ZW1zIHdpbGwgd2FudCBkaWZmZXJlbnQgcHJvZHVjdCBpZGVudGlmZXJzIHB1Ymxpc2hlZCBpbiB0aGUKKy8qIFNvbWUgc3lzdGVtcyB3aWxsIHdhbnQgZGlmZmVyZW50IHByb2R1Y3QgaWRlbnRpZmllcnMgcHVibGlzaGVkIGluIHRoZQogICogZGV2aWNlIGRlc2NyaXB0b3IsIGVpdGhlciBudW1iZXJzIG9yIHN0cmluZ3Mgb3IgYm90aC4gIFRoZXNlIHN0cmluZwogICogcGFyYW1ldGVycyBhcmUgaW4gVVRGLTggKHN1cGVyc2V0IG9mIEFTQ0lJJ3MgNyBiaXQgY2hhcmFjdGVycykuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sYW5nd2VsbF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sYW5nd2VsbF91ZGMuYwppbmRleCAxZWNhOGI0Li45Y2VlODhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGFuZ3dlbGxfdWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xhbmd3ZWxsX3VkYy5jCkBAIC02NDIsNyArNjQyLDcgQEAKIAlkcWgtPmR0ZF9zdGF0dXMgJj0gZHRkX3N0YXR1czsKIAlkZXZfdmRiZygmZGV2LT5wZGV2LT5kZXYsICJkcWgtPmR0ZF9zdGF0dXMgPSAweCV4XG4iLCBkcWgtPmR0ZF9zdGF0dXMpOwogCi0JLyogZW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgZFFIIHdpbGwgb2NjdXJlIGJlZm9yZSBwcmltaW5nICovCisJLyogZW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgZFFIIHdpbGwgb2NjdXIgYmVmb3JlIHByaW1pbmcgKi8KIAl3bWIoKTsKIAogCS8qIHdyaXRlIDEgdG8gZW5kcHRwcmltZSByZWdpc3RlciB0byBQUklNRSBlbmRwb2ludCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L212X3VkY19jb3JlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbXZfdWRjX2NvcmUuYwppbmRleCBkNTQ2OGE3Li5iNjJiMjY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbXZfdWRjX2NvcmUuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbXZfdWRjX2NvcmUuYwpAQCAtMzI1LDcgKzMyNSw3IEBACiAKIAkJCS8qCiAJCQkgKiBFbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBRSCB3aWxsCi0JCQkgKiBvY2N1cmUgYmVmb3JlIHByaW1pbmcuCisJCQkgKiBvY2N1ciBiZWZvcmUgcHJpbWluZy4KIAkJCSAqLwogCQkJd21iKCk7CiAKQEAgLTMzOCw3ICszMzgsNyBAQAogCQkJJiBFUF9RVUVVRV9IRUFEX05FWFRfUE9JTlRFUl9NQVNLOzsKIAkJZHFoLT5zaXplX2lvY19pbnRfc3RzID0gMDsKIAotCQkvKiBFbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBRSCB3aWxsIG9jY3VyZSBiZWZvcmUgcHJpbWluZy4gKi8KKwkJLyogRW5zdXJlIHRoYXQgdXBkYXRlcyB0byB0aGUgUUggd2lsbCBvY2N1ciBiZWZvcmUgcHJpbWluZy4gKi8KIAkJd21iKCk7CiAKIAkJLyogUHJpbWUgdGhlIEVuZHBvaW50ICovCkBAIC0xODQ1LDcgKzE4NDUsNyBAQAogCQlyZXR1cm4gSVJRX05PTkU7CiAJfQogCi0JLyogQ2xlYXIgYWxsIHRoZSBpbnRlcnJ1cHRzIG9jY3VyZWQgKi8KKwkvKiBDbGVhciBhbGwgdGhlIGludGVycnVwdHMgb2NjdXJyZWQgKi8KIAl3cml0ZWwoc3RhdHVzLCAmdWRjLT5vcF9yZWdzLT51c2JzdHMpOwogCiAJaWYgKHN0YXR1cyAmIFVTQlNUU19FUlIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYwppbmRleCBkMDkxNTViLi4yNDY5NmY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMKQEAgLTExNyw3ICsxMTcsNyBAQAogCiAvKiBlbmFibGVfc3VzcGVuZCAtLSBXaGVuIGVuYWJsZWQsIHRoZSBkcml2ZXIgd2lsbCByZXNwb25kIHRvCiAgKiBVU0Igc3VzcGVuZCByZXF1ZXN0cyBieSBwb3dlcmluZyBkb3duIHRoZSBORVQyMjgwLiAgT3RoZXJ3aXNlLAotICogVVNCIHN1c3BlbmQgcmVxdWVzdHMgd2lsbCBiZSBpZ25vcmVkLiAgVGhpcyBpcyBhY2NlcHRpYmxlIGZvcgorICogVVNCIHN1c3BlbmQgcmVxdWVzdHMgd2lsbCBiZSBpZ25vcmVkLiAgVGhpcyBpcyBhY2NlcHRhYmxlIGZvcgogICogc2VsZi1wb3dlcmVkIGRldmljZXMKICAqLwogc3RhdGljIGludCBlbmFibGVfc3VzcGVuZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbm9raWEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9ub2tpYS5jCmluZGV4IGI1MzY0ZjlkLi41NWNhNjNhZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9ub2tpYS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9ub2tpYS5jCkBAIC0yMDMsNyArMjAzLDcgQEAKIAkJZ290byBlcnJfdXNiOwogCX0KIAotCS8qIGZpbmFseSByZWdpc3RlciB0aGUgY29uZmlndXJhdGlvbiAqLworCS8qIGZpbmFsbHkgcmVnaXN0ZXIgdGhlIGNvbmZpZ3VyYXRpb24gKi8KIAlzdGF0dXMgPSB1c2JfYWRkX2NvbmZpZyhjZGV2LCAmbm9raWFfY29uZmlnXzUwMG1hX2RyaXZlciwKIAkJCW5va2lhX2JpbmRfY29uZmlnKTsKIAlpZiAoc3RhdHVzIDwgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9wcmludGVyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcHJpbnRlci5jCmluZGV4IDEyZmY2Y2YuLmMzZjJiZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9wcmludGVyLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3ByaW50ZXIuYwpAQCAtMTI2LDcgKzEyNiw3IEBACiAjZGVmaW5lIFBSSU5URVJfVkVORE9SX05VTQkweDA1MjUJCS8qIE5ldENoaXAgKi8KICNkZWZpbmUgUFJJTlRFUl9QUk9EVUNUX05VTQkweGE0YTgJCS8qIExpbnV4LVVTQiBQcmludGVyIEdhZGdldCAqLwogCi0vKiBTb21lIHN5c3RlbXMgd2lsbCB3YW50IGRpZmZlcmVudCBwcm9kdWN0IGlkZW50aWZlcnMgcHVibGlzaGVkIGluIHRoZQorLyogU29tZSBzeXN0ZW1zIHdpbGwgd2FudCBkaWZmZXJlbnQgcHJvZHVjdCBpZGVudGlmaWVycyBwdWJsaXNoZWQgaW4gdGhlCiAgKiBkZXZpY2UgZGVzY3JpcHRvciwgZWl0aGVyIG51bWJlcnMgb3Igc3RyaW5ncyBvciBib3RoLiAgVGhlc2Ugc3RyaW5nCiAgKiBwYXJhbWV0ZXJzIGFyZSBpbiBVVEYtOCAoc3VwZXJzZXQgb2YgQVNDSUkncyA3IGJpdCBjaGFyYWN0ZXJzKS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTI3eF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyN3hfdWRjLmMKaW5kZXggMmVmZDY3My4uNzhhMzlhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTI3eF91ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMjd4X3VkYy5jCkBAIC02MDIsNyArNjAyLDcgQEAKIC8qKgogICogaW5jX2VwX3N0YXRzX2J5dGVzIC0gVXBkYXRlIGVwIHN0YXRzIGNvdW50cwogICogQGVwOiBwaHlzaWNhbCBlbmRwb2ludAotICogQGNvdW50OiBieXRlcyB0cmFuc2ZlcmVkIG9uIGVuZHBvaW50CisgKiBAY291bnQ6IGJ5dGVzIHRyYW5zZmVycmVkIG9uIGVuZHBvaW50CiAgKiBAaXNfaW46IGVwIGRpcmVjdGlvbiAoVVNCX0RJUl9JTiBvciAwKQogICovCiBzdGF0aWMgdm9pZCBpbmNfZXBfc3RhdHNfYnl0ZXMoc3RydWN0IHB4YV9lcCAqZXAsIGludCBjb3VudCwgaW50IGlzX2luKQpAQCAtODc3LDcgKzg3Nyw3IEBACiAgKiBJZiB0aGVyZSBpcyBsZXNzIHNwYWNlIGluIHJlcXVlc3QgdGhhbiBieXRlcyByZWNlaXZlZCBpbiBPVVQgZW5kcG9pbnQsCiAgKiBieXRlcyBhcmUgbGVmdCBpbiB0aGUgT1VUIGVuZHBvaW50LgogICoKLSAqIFJldHVybnMgaG93IG1hbnkgYnl0ZXMgd2VyZSBhY3R1YWxseSB0cmFuc2ZlcmVkCisgKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIHdlcmUgYWN0dWFsbHkgdHJhbnNmZXJyZWQKICAqLwogc3RhdGljIGludCByZWFkX3BhY2tldChzdHJ1Y3QgcHhhX2VwICplcCwgc3RydWN0IHB4YTI3eF9yZXF1ZXN0ICpyZXEpCiB7CkBAIC05MTQsNyArOTE0LDcgQEAKICAqIGVuZHBvaW50LiBJZiB0aGVyZSBhcmUgbm8gYnl0ZXMgdG8gdHJhbnNmZXIsIGRvZXNuJ3Qgd3JpdGUgYW55dGhpbmcKICAqIHRvIHBoeXNpY2FsIGVuZHBvaW50LgogICoKLSAqIFJldHVybnMgaG93IG1hbnkgYnl0ZXMgd2VyZSBhY3R1YWxseSB0cmFuc2ZlcmVkLgorICogUmV0dXJucyBob3cgbWFueSBieXRlcyB3ZXJlIGFjdHVhbGx5IHRyYW5zZmVycmVkLgogICovCiBzdGF0aWMgaW50IHdyaXRlX3BhY2tldChzdHJ1Y3QgcHhhX2VwICplcCwgc3RydWN0IHB4YTI3eF9yZXF1ZXN0ICpyZXEsCiAJCQl1bnNpZ25lZCBpbnQgbWF4KQpAQCAtOTkxLDcgKzk5MSw3IEBACiAgKiBjYWxsZXIgZ3VhcmFudGVlcyBhdCBsZWFzdCBvbmUgcGFja2V0IGJ1ZmZlciBpcyByZWFkeSAob3IgYSB6bHApLgogICogRG9lc24ndCBjb21wbGV0ZSB0aGUgcmVxdWVzdCwgdGhhdCdzIHRoZSBjYWxsZXIncyBqb2IKICAqCi0gKiBSZXR1cm5zIDEgaWYgcmVxdWVzdCBmdWxseSB0cmFuc2ZlcmVkLCAwIGlmIHBhcnRpYWwgdHJhbnNmZXIKKyAqIFJldHVybnMgMSBpZiByZXF1ZXN0IGZ1bGx5IHRyYW5zZmVycmVkLCAwIGlmIHBhcnRpYWwgdHJhbnNmZXIKICAqLwogc3RhdGljIGludCB3cml0ZV9maWZvKHN0cnVjdCBweGFfZXAgKmVwLCBzdHJ1Y3QgcHhhMjd4X3JlcXVlc3QgKnJlcSkKIHsKQEAgLTEwOTQsNyArMTA5NCw3IEBACiAgKiBTZW5kcyBhIHJlcXVlc3QgKG9yIGEgcGFydCBvZiB0aGUgcmVxdWVzdCkgdG8gdGhlIGNvbnRyb2wgZW5kcG9pbnQgKGVwMCBpbikuCiAgKiBJZiB0aGUgcmVxdWVzdCBkb2Vzbid0IGZpdCwgdGhlIHJlbWFpbmluZyBwYXJ0IHdpbGwgYmUgc2VudCBmcm9tIGlycS4KICAqIFRoZSByZXF1ZXN0IGlzIGNvbnNpZGVyZWQgZnVsbHkgd3JpdHRlbiBvbmx5IGlmIGVpdGhlciA6Ci0gKiAgIC0gbGFzdCB3cml0ZSB0cmFuc2ZlcmVkIGFsbCByZW1haW5pbmcgYnl0ZXMsIGJ1dCBmaWZvIHdhcyBub3QgZnVsbHkgZmlsbGVkCisgKiAgIC0gbGFzdCB3cml0ZSB0cmFuc2ZlcnJlZCBhbGwgcmVtYWluaW5nIGJ5dGVzLCBidXQgZmlmbyB3YXMgbm90IGZ1bGx5IGZpbGxlZAogICogICAtIGxhc3Qgd3JpdGUgd2FzIGEgMCBsZW5ndGggd3JpdGUKICAqCiAgKiBSZXR1cm5zIDEgaWYgcmVxdWVzdCBmdWxseSB3cml0dGVuLCAwIGlmIHJlcXVlc3Qgb25seSBwYXJ0aWFsbHkgc2VudApAQCAtMTU0OCw3ICsxNTQ4LDcgQEAKICAqIHB4YV91ZGNfd2FrZXVwIC0gRm9yY2UgdWRjIGRldmljZSBvdXQgb2Ygc3VzcGVuZAogICogQF9nYWRnZXQ6IHVzYiBnYWRnZXQKICAqCi0gKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bGwsIGVycm9yIGNvZGUgb3RoZXJ3aXNlCisgKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgZXJyb3IgY29kZSBvdGhlcndpc2UKICAqLwogc3RhdGljIGludCBweGFfdWRjX3dha2V1cChzdHJ1Y3QgdXNiX2dhZGdldCAqX2dhZGdldCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MtaHNvdGcuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MtaHNvdGcuYwppbmRleCBlZjgyNWMzLi4wOTEyNjc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvczNjLWhzb3RnLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3MzYy1oc290Zy5jCkBAIC00MSw4ICs0MSw4IEBACiAvKiBFUDBfTVBTX0xJTUlUCiAgKgogICogVW5mb3J0dW5hdGVseSB0aGVyZSBzZWVtcyB0byBiZSBhIGxpbWl0IG9mIHRoZSBhbW91bnQgb2YgZGF0YSB0aGF0IGNhbgotICogYmUgdHJhbnNmZXJlZCBieSBJTiB0cmFuc2FjdGlvbnMgb24gRVAwLiBUaGlzIGlzIGVpdGhlciAxMjcgYnl0ZXMgb3IgMwotICogcGFja2V0cyAod2hpY2ggcHJhY3RpYWxseSBtZWFucyAxIHBhY2tldCBhbmQgNjMgYnl0ZXMgb2YgZGF0YSkgd2hlbiB0aGUKKyAqIGJlIHRyYW5zZmVycmVkIGJ5IElOIHRyYW5zYWN0aW9ucyBvbiBFUDAuIFRoaXMgaXMgZWl0aGVyIDEyNyBieXRlcyBvciAzCisgKiBwYWNrZXRzICh3aGljaCBwcmFjdGljYWxseSBtZWFucyAxIHBhY2tldCBhbmQgNjMgYnl0ZXMgb2YgZGF0YSkgd2hlbiB0aGUKICAqIE1QUyBpcyBzZXQgdG8gNjQuCiAgKgogICogVGhpcyBtZWFucyBpZiB3ZSBhcmUgd2FudGluZyB0byBtb3ZlID4xMjcgYnl0ZXMgb2YgZGF0YSwgd2UgbmVlZCB0bwpAQCAtNzgzLDcgKzc4Myw3IEBACiAJCSAgICAgICBoc290Zy0+cmVncyArIFMzQ19ESUVQSU5UKGluZGV4KSk7CiAKIAkvKiBOb3RlLCB0cnlpbmcgdG8gY2xlYXIgdGhlIE5BSyBoZXJlIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHRyYW5zbWl0Ci0JICogb24gdGhlIFMzQzY0MDAgZW5kaW5nIHVwIHdpdGggdGhlIFRYRklGTyBiZWNvbW1pbmcgZnVsbC4gKi8KKwkgKiBvbiB0aGUgUzNDNjQwMCBlbmRpbmcgdXAgd2l0aCB0aGUgVFhGSUZPIGJlY29taW5nIGZ1bGwuICovCiAKIAkvKiBjaGVjayBlcCBpcyBlbmFibGVkICovCiAJaWYgKCEocmVhZGwoaHNvdGctPnJlZ3MgKyBlcGN0cmxfcmVnKSAmIFMzQ19EeEVQQ1RMX0VQRW5hKSkKQEAgLTExNzYsMTAgKzExNzYsMTAgQEAKIAkJd3JpdGVsKGN0cmwsIGhzb3RnLT5yZWdzICsgcmVnKTsKIAogCQlkZXZfZGJnKGhzb3RnLT5kZXYsCi0JCQkid3JpdGVuIER4RVBDVEw9MHglMDh4IHRvICUwOHggKER4RVBDVEw9MHglMDh4KVxuIiwKKwkJCSJ3cml0dGVuIER4RVBDVEw9MHglMDh4IHRvICUwOHggKER4RVBDVEw9MHglMDh4KVxuIiwKIAkJCWN0cmwsIHJlZywgcmVhZGwoaHNvdGctPnJlZ3MgKyByZWcpKTsKIAotCQkvKiBkb24ndCBiZWxpdmUgd2UgbmVlZCB0byBhbnl0aGluZyBtb3JlIHRvIGdldCB0aGUgRVAKKwkJLyogZG9uJ3QgYmVsaWV2ZSB3ZSBuZWVkIHRvIGFueXRoaW5nIG1vcmUgdG8gZ2V0IHRoZSBFUAogCQkgKiB0byByZXBseSB3aXRoIGEgU1RBTEwgcGFja2V0ICovCiAJfQogfQpAQCAtMTQxNiw3ICsxNDE2LDcgQEAKICAqIHRyYW5zYWN0aW9uLgogICoKICAqIE5vdGUsIHNpbmNlIHdlIGRvbid0IHdyaXRlIGFueSBkYXRhIHRvIHRoZSBUeEZJRk8sIHRoZW4gaXQgaXMKLSAqIGN1cnJlbnRseSBiZWxpdmVkIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gd2FpdCBmb3IgYW55IHNwYWNlIGluCisgKiBjdXJyZW50bHkgYmVsaWV2ZWQgdGhhdCB3ZSBkbyBub3QgbmVlZCB0byB3YWl0IGZvciBhbnkgc3BhY2UgaW4KICAqIHRoZSBUeEZJRk8uCiAgKi8KIHN0YXRpYyB2b2lkIHMzY19oc290Z19zZW5kX3pscChzdHJ1Y3QgczNjX2hzb3RnICpoc290ZywKQEAgLTE1NDAsNyArMTU0MCw3IEBACiAgKiB0aGF0IHJlcXVpcmVzIHByb2Nlc3NpbmcsIHNvIGZpbmQgb3V0IHdoYXQgaXMgaW4gdGhlcmUgYW5kIGRvIHRoZQogICogYXBwcm9wcmlhdGUgcmVhZC4KICAqCi0gKiBUaGUgUlhGSUZPIGlzIGEgdHJ1ZSBGSUZPLCB0aGUgcGFja2V0cyBjb21taW5nIG91dCBhcmUgc3RpbGwgaW4gcGFja2V0CisgKiBUaGUgUlhGSUZPIGlzIGEgdHJ1ZSBGSUZPLCB0aGUgcGFja2V0cyBjb21pbmcgb3V0IGFyZSBzdGlsbCBpbiBwYWNrZXQKICAqIGNodW5rcywgc28gaWYgeW91IGhhdmUgeCBwYWNrZXRzIHJlY2VpdmVkIG9uIGFuIGVuZHBvaW50IHlvdSdsbCBnZXQgeAogICogRklGTyBldmVudHMgZGVsaXZlcmVkLCBlYWNoIHdpdGggYSBwYWNrZXQncyB3b3J0aCBvZiBkYXRhIGluIGl0LgogICoKQEAgLTIxODgsNyArMjE4OCw3IEBACiAKIAkvKiB0aGVzZSBuZXh0IHR3byBzZWVtIHRvIGNyb3AtdXAgb2NjYXNpb25hbGx5IGNhdXNpbmcgdGhlIGNvcmUKIAkgKiB0byBzaHV0ZG93biB0aGUgVVNCIHRyYW5zZmVyLCBzbyB0cnkgY2xlYXJpbmcgdGhlbSBhbmQgbG9nZ2luZwotCSAqIHRoZSBvY2N1cmVuY2UuICovCisJICogdGhlIG9jY3VycmVuY2UuICovCiAKIAlpZiAoZ2ludHN0cyAmIFMzQ19HSU5UU1RTX0dPVVROYWtFZmYpIHsKIAkJZGV2X2luZm8oaHNvdGctPmRldiwgIkdPVVROYWtFZmYgdHJpZ2dlcmVkXG4iKTsKQEAgLTI0NjksNyArMjQ2OSw3IEBACiAJLnF1ZXVlCQk9IHMzY19oc290Z19lcF9xdWV1ZSwKIAkuZGVxdWV1ZQk9IHMzY19oc290Z19lcF9kZXF1ZXVlLAogCS5zZXRfaGFsdAk9IHMzY19oc290Z19lcF9zZXRoYWx0LAotCS8qIG5vdGUsIGRvbid0IGJlbGl2ZSB3ZSBoYXZlIGFueSBjYWxsIGZvciB0aGUgZmlmbyByb3V0aW5lcyAqLworCS8qIG5vdGUsIGRvbid0IGJlbGlldmUgd2UgaGF2ZSBhbnkgY2FsbCBmb3IgdGhlIGZpZm8gcm91dGluZXMgKi8KIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9LY29uZmlnIGIvZHJpdmVycy91c2IvaG9zdC9LY29uZmlnCmluZGV4IDk0ODNhY2QuLmUwZTA3ODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZworKysgYi9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcKQEAgLTQwMiw3ICs0MDIsNyBAQAogCWRlcGVuZHMgb24gVVNCX0ZIQ0lfSENEICYmIERFQlVHX0ZTCiAJaGVscAogCSAgU2F5ICJ5IiB0byBzZWUgc29tZSBGSENJIGRlYnVnIGluZm9ybWF0aW9uIGFuZCBzdGF0aXN0aWNzCi0JICB0aHJvdWdodCBkZWJ1Z2ZzLgorCSAgdGhyb3VnaCBkZWJ1Z2ZzLgogCiBjb25maWcgVVNCX1UxMzJfSENECiAJdHJpc3RhdGUgIkVsYW4gVTEzMiBBZGFwdGVyIEhvc3QgQ29udHJvbGxlciIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS5oIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLmgKaW5kZXggZjg2ZDNmYS4uMzMzZGRjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLmgKKysrIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLmgKQEAgLTY0NCw3ICs2NDQsNyBAQAogLyoKICAqIE9uIGNlcnRhaW4gcHBjLTQ0eCBTb0MgdGhlcmUgaXMgYSBIVyBpc3N1ZSwgdGhhdCBjb3VsZCBvbmx5IHdvcmtlZCBhcm91bmQgd2l0aAogICogZXhwbGljaXQgc3VzcGVuZC9vcGVyYXRlIG9mIE9IQ0kuIFRoaXMgZnVuY3Rpb24gaGVyZWJ5IG1ha2VzIHNlbnNlIG9ubHkgb24gdGhhdCBhcmNoLgotICogT3RoZXIgY29tbW9uIGJpdHMgYXJlIGRlcGVuZGFudCBvbiBoYXNfYW1jY191c2IyMyBxdWlyayBmbGFnLgorICogT3RoZXIgY29tbW9uIGJpdHMgYXJlIGRlcGVuZGVudCBvbiBoYXNfYW1jY191c2IyMyBxdWlyayBmbGFnLgogICovCiAjaWZkZWYgQ09ORklHXzQ0eAogc3RhdGljIGlubGluZSB2b2lkIHNldF9vaGNpX2hjZnMoc3RydWN0IGVoY2lfaGNkICplaGNpLCBpbnQgb3BlcmF0aW9uYWwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktaGNkLmMKaW5kZXggYjg0ZmY3ZS4uMTkyMjNjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9maGNpLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS1oY2QuYwpAQCAtNDAxLDcgKzQwMSw3IEBACiAJCS8qIDEgdGQgZnJvIHNldHVwLDEgZm9yIGFjayAqLwogCQlzaXplID0gMjsKIAljYXNlIFBJUEVfQlVMSzoKLQkJLyogb25lIHRkIGZvciBldmVyeSA0MDk2IGJ5dGVzKGNhbiBiZSB1cHRvIDhrKSAqLworCQkvKiBvbmUgdGQgZm9yIGV2ZXJ5IDQwOTYgYnl0ZXMoY2FuIGJlIHVwIHRvIDhrKSAqLwogCQlzaXplICs9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAvIDQwOTY7CiAJCS8qIC4uLmFkZCBmb3IgYW55IHJlbWFpbmluZyBieXRlcy4uLiAqLwogCQlpZiAoKHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAlIDQwOTYpICE9IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktdGRzLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktdGRzLmMKaW5kZXggMzhmZTA1OC4uMGVhNTc3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9maGNpLXRkcy5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS10ZHMuYwpAQCAtNDAsNyArNDAsNyBAQAogI2RlZmluZSBURF9SWEVSCQkweDAwMjAgLyogUnggZXJyb3Igb3Igbm90ICovCiAKICNkZWZpbmUgVERfTkFLCQkweDAwMTAgLyogTm8gYWNrLiAqLwotI2RlZmluZSBURF9TVEFMCQkweDAwMDggLyogU3RhbGwgcmVjaWV2ZWQgKi8KKyNkZWZpbmUgVERfU1RBTAkJMHgwMDA4IC8qIFN0YWxsIHJlY2VpdmVkICovCiAjZGVmaW5lIFREX1RPCQkweDAwMDQgLyogdGltZSBvdXQgKi8KICNkZWZpbmUgVERfVU4JCTB4MDAwMiAvKiB1bmRlcnJ1biAqLwogI2RlZmluZSBURF9OTwkJMHgwMDEwIC8qIFJ4IE5vbiBPY3RldCBBbGlnbmVkIFBhY2tldCAqLwpAQCAtMjc0LDcgKzI3NCw3IEBACiAgKiBJdCBpcyBhbHNvIHByZXBhcmluZyB0aGUgVERzIGZvciBuZXcgZnJhbWVzLiBJZiB0aGUgVHggaW50ZXJydXB0cwogICogYXJlIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGNhbGwgdGhhdCByb3V0aW5lIHRvIGdldAogICogY29uZmlybWF0aW9uIGFib3V0IHRoZSBzdWJtaXR0ZWQgZnJhbWVzLiBPdGhlcndpc2UsIHRoZSByb3V0aW5lIGlzCi0gKiBjYWxsZWQgZnJvbWUgdGhlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgZHVyaW5nIHRoZSBUeCBpbnRlcnJ1cHQuCisgKiBjYWxsZWQgZnJvbSB0aGUgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBkdXJpbmcgdGhlIFR4IGludGVycnVwdC4KICAqIEluIHRoYXQgY2FzZSB0aGUgYXBwbGljYXRpb24gaXMgaW5mb3JtZWQgYnkgY2FsbGluZyB0aGUgYXBwbGljYXRpb24KICAqIHNwZWNpZmljICdmaGNpX3RyYW5zYWN0aW9uX2NvbmZpcm0nIHJvdXRpbmUKICAqLwpAQCAtMzM3LDcgKzMzNyw3IEBACiAJCQkJCXBrdC0+c3RhdHVzID0gVVNCX1REX1JYX0VSX05PTk9DVDsKIAkJCQllbHNlCiAJCQkJCWZoY2lfZXJyKHVzYi0+ZmhjaSwgImlsbGVnYWwgZXJyb3IgIgotCQkJCQkJICJvY2N1cmVkXG4iKTsKKwkJCQkJCSAib2NjdXJyZWRcbiIpOwogCQkJfSBlbHNlIGlmICh0ZF9zdGF0dXMgJiBURF9OQUspCiAJCQkJcGt0LT5zdGF0dXMgPSBVU0JfVERfVFhfRVJfTkFLOwogCQkJZWxzZSBpZiAodGRfc3RhdHVzICYgVERfVE8pCkBAIC0zNDcsNyArMzQ3LDcgQEAKIAkJCWVsc2UgaWYgKHRkX3N0YXR1cyAmIFREX1NUQUwpCiAJCQkJcGt0LT5zdGF0dXMgPSBVU0JfVERfVFhfRVJfU1RBTEw7CiAJCQllbHNlCi0JCQkJZmhjaV9lcnIodXNiLT5maGNpLCAiaWxsZWdhbCBlcnJvciBvY2N1cmVkXG4iKTsKKwkJCQlmaGNpX2Vycih1c2ItPmZoY2ksICJpbGxlZ2FsIGVycm9yIG9jY3VycmVkXG4iKTsKIAkJfSBlbHNlIGlmICgoZXh0cmFfZGF0YSAmIFREX1RPS19JTikgJiYKIAkJCQlwa3QtPmxlbiA+IHRkX2xlbmd0aCAtIENSQ19TSVpFKSB7CiAJCQlwa3QtPnN0YXR1cyA9IFVTQl9URF9SWF9EQVRBX1VOREVSVU47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2ZoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS5oCmluZGV4IDcxYzNjYWEuLmRjNjkzOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS5oCkBAIC04Miw3ICs4Miw3IEBACiAjZGVmaW5lIFVTQl9URF9SWF9FUl9OT05PQ1QJMHg0MDAwMDAwMCAvKiBUeCBOb24gT2N0ZXQgQWxpZ25lZCBQYWNrZXQgKi8KICNkZWZpbmUgVVNCX1REX1JYX0VSX0JJVFNUVUZGCTB4MjAwMDAwMDAgLyogRnJhbWUgQWJvcnRlZC1SZWNlaXZlZCBwa3QgKi8KICNkZWZpbmUgVVNCX1REX1JYX0VSX0NSQwkweDEwMDAwMDAwIC8qIENSQyBlcnJvciAqLwotI2RlZmluZSBVU0JfVERfUlhfRVJfT1ZFUlVOCTB4MDgwMDAwMDAgLyogT3ZlciAtIHJ1biBvY2N1cmVkICovCisjZGVmaW5lIFVTQl9URF9SWF9FUl9PVkVSVU4JMHgwODAwMDAwMCAvKiBPdmVyIC0gcnVuIG9jY3VycmVkICovCiAjZGVmaW5lIFVTQl9URF9SWF9FUl9QSUQJMHgwNDAwMDAwMCAvKiB3cm9uZyBQSUQgcmVjZWl2ZWQgKi8KICNkZWZpbmUgVVNCX1REX1JYX0RBVEFfVU5ERVJVTgkweDAyMDAwMDAwIC8qIHNob3J0ZXIgdGhhbiBleHBlY3RlZCAqLwogI2RlZmluZSBVU0JfVERfUlhfREFUQV9PVkVSVU4JMHgwMTAwMDAwMCAvKiBsb25nZXIgdGhhbiBleHBlY3RlZCAqLwpAQCAtMzYzLDcgKzM2Myw3IEBACiBzdHJ1Y3QgdGQgewogCXZvaWQgKmRhdGE7CQkgLyogYSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZlciAqLwogCXVuc2lnbmVkIGludCBsZW47CSAvKiBsZW5ndGggb2YgdGhlIGRhdGEgdG8gYmUgc3VibWl0dGVkICovCi0JdW5zaWduZWQgaW50IGFjdHVhbF9sZW47IC8qIGFjdHVhbCBieXRlcyB0cmFuc2ZlcmVkIG9uIHRoaXMgdGQgKi8KKwl1bnNpZ25lZCBpbnQgYWN0dWFsX2xlbjsgLyogYWN0dWFsIGJ5dGVzIHRyYW5zZmVycmVkIG9uIHRoaXMgdGQgKi8KIAllbnVtIGZoY2lfdGFfdHlwZSB0eXBlOwkgLyogdHJhbnNhY3Rpb24gdHlwZSAqLwogCXU4IHRvZ2dsZTsJCSAvKiB0b2dnbGUgZm9yIG5leHQgdHJhbnMuIHdpdGhpbiB0aGlzIFREICovCiAJdTE2IGlzb19pbmRleDsJCSAvKiBJU08gdHJhbnNhY3Rpb24gaW5kZXggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvaW14MjEtaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2lteDIxLWhjZC5jCmluZGV4IDI1NjJlOTIuLmFmMDU3MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvaW14MjEtaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9pbXgyMS1oY2QuYwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAKICAqIChhbmQgaGVuY2Ugbm8gaW50ZXJydXB0IG9jY3VycykuCiAgKiBUaGlzIGNhdXNlcyB0aGUgdHJhbnNmZXIgaW4gcXVlc3Rpb24gdG8gaGFuZy4KICAqIFRoZSBrbHVkZ2UgYmVsb3cgY2hlY2tzIGZvciB0aGlzIGNvbmRpdGlvbiBhdCBlYWNoIFNPRiBhbmQgcHJvY2Vzc2VzIGFueQotICogYmxvY2tlZCBFVERzIChhZnRlciBhbiBhcmJpdGFyeSAxMCBmcmFtZSB3YWl0KQorICogYmxvY2tlZCBFVERzIChhZnRlciBhbiBhcmJpdHJhcnkgMTAgZnJhbWUgd2FpdCkKICAqCiAgKiBXaXRoIGEgc2luZ2xlIGFjdGl2ZSB0cmFuc2ZlciB0aGUgdXNidGVzdCB0ZXN0IHN1aXRlIHdpbGwgcnVuIGZvciBkYXlzCiAgKiB3aXRob3V0IHRoZSBrbHVkZ2UuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2lzcDExNnguaCBiL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC5oCmluZGV4IDEyZGI5NjEuLjlhMmM0MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC5oCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC5oCkBAIC0xMyw3ICsxMyw3IEBACiAKIC8qIEZ1bGwgc3BlZWQ6IG1heCAjIG9mIGJ5dGVzIHRvIHRyYW5zZmVyIGZvciBhIHNpbmdsZSB1cmIKICAgIGF0IGEgdGltZSBtdXN0IGJlIDwgMTAyNCAmJiBtdXN0IGJlIG11bHRpcGxlIG9mIDY0LgotICAgODMyIGFsbG93cyB0cmFuc2ZlcmluZyA0a2lCIHdpdGhpbiA1IGZyYW1lcy4gKi8KKyAgIDgzMiBhbGxvd3MgdHJhbnNmZXJyaW5nIDRraUIgd2l0aGluIDUgZnJhbWVzLiAqLwogI2RlZmluZSBNQVhfVFJBTlNGRVJfU0laRV9GVUxMU1BFRUQJODMyCiAKIC8qIExvdyBzcGVlZDogdGhlcmUgaXMgbm8gcmVhc29uIHRvIHNjaGVkdWxlIGluIHZlcnkgYmlnCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2lzcDEzNjItaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L2lzcDEzNjItaGNkLmMKaW5kZXggNjYyY2QwMC4uZjk3NTcwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMzYyLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTM2Mi1oY2QuYwpAQCAtNTQ2LDcgKzU0Niw3IEBACiAJCQlpZiAodXNiX3BpcGVjb250cm9sKHVyYi0+cGlwZSkpIHsKIAkJCQllcC0+bmV4dHBpZCA9IFVTQl9QSURfQUNLOwogCQkJCS8qIHNhdmUgdGhlIGRhdGEgdW5kZXJydW4gZXJyb3IgY29kZSBmb3IgbGF0ZXIgYW5kCi0JCQkJICogcHJvY2VkZSB3aXRoIHRoZSBzdGF0dXMgc3RhZ2UKKwkJCQkgKiBwcm9jZWVkIHdpdGggdGhlIHN0YXR1cyBzdGFnZQogCQkJCSAqLwogCQkJCXVyYi0+YWN0dWFsX2xlbmd0aCArPSBQVERfR0VUX0NPVU5UKHB0ZCk7CiAJCQkJQlVHX09OKHVyYi0+YWN0dWFsX2xlbmd0aCA+IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaGNkLmMKaW5kZXggZTcyODg2My4uZDU1NzIzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYwpAQCAtMTYyLDcgKzE2Miw3IEBACiAJCS8vIGNhc2UgUElQRV9JTlRFUlJVUFQ6CiAJCS8vIGNhc2UgUElQRV9CVUxLOgogCQlkZWZhdWx0OgotCQkJLyogb25lIFREIGZvciBldmVyeSA0MDk2IEJ5dGVzIChjYW4gYmUgdXB0byA4SykgKi8KKwkJCS8qIG9uZSBURCBmb3IgZXZlcnkgNDA5NiBCeXRlcyAoY2FuIGJlIHVwIHRvIDhLKSAqLwogCQkJc2l6ZSArPSB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggLyA0MDk2OwogCQkJLyogLi4uIGFuZCBmb3IgYW55IHJlbWFpbmluZyBieXRlcyAuLi4gKi8KIAkJCWlmICgodXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoICUgNDA5NikgIT0gMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb3h1MjEwaHAtaGNkLmMgYi9kcml2ZXJzL3VzYi9ob3N0L294dTIxMGhwLWhjZC5jCmluZGV4IDQ0ZTRkZWIuLjRhNzcxZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvb3h1MjEwaHAtaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9veHUyMTBocC1oY2QuYwpAQCAtMjg3OSw3ICsyODc5LDcgQEAKIAkvKiBPaywgd2UgaGF2ZSBtb3JlIGpvYiB0byBkbyEgOikgKi8KIAogCWZvciAoaSA9IDA7IGkgPCBudW0gLSAxOyBpKyspIHsKLQkJLyogR2V0IGZyZWUgbWljcm8gVVJCIHBvbGwgdGlsbCBhIGZyZWUgdXJiIGlzIHJlY2lldmVkICovCisJCS8qIEdldCBmcmVlIG1pY3JvIFVSQiBwb2xsIHRpbGwgYSBmcmVlIHVyYiBpcyByZWNlaXZlZCAqLwogCiAJCWRvIHsKIAkJCW11cmIgPSAoc3RydWN0IHVyYiAqKSBveHVfbXVyYl9hbGxvYyhveHUpOwpAQCAtMjkxMSw3ICsyOTExLDcgQEAKIAogCS8qIExhc3QgdXJiIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgICovCiAKLQkvKiBHZXQgZnJlZSBtaWNybyBVUkIgcG9sbCB0aWxsIGEgZnJlZSB1cmIgaXMgcmVjaWV2ZWQgKi8KKwkvKiBHZXQgZnJlZSBtaWNybyBVUkIgcG9sbCB0aWxsIGEgZnJlZSB1cmIgaXMgcmVjZWl2ZWQgKi8KIAlkbyB7CiAJCW11cmIgPSAoc3RydWN0IHVyYiAqKSBveHVfbXVyYl9hbGxvYyhveHUpOwogCQlpZiAoIW11cmIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3doY2kvcXNldC5jIGIvZHJpdmVycy91c2IvaG9zdC93aGNpL3FzZXQuYwppbmRleCBkYzBhYjgzLi5kNmUxNzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3doY2kvcXNldC5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3Qvd2hjaS9xc2V0LmMKQEAgLTczOSw3ICs3MzksNyBAQAogICogcHJvY2Vzc19pbmFjdGl2ZV9xdGQgLSBwcm9jZXNzIGFuIGluYWN0aXZlIChidXQgbm90IGhhbHRlZCkgcVRELgogICoKICAqIFVwZGF0ZSB0aGUgdXJiIHdpdGggdGhlIHRyYW5zZmVyIGJ5dGVzIGZyb20gdGhlIHFURCwgaWYgdGhlIHVyYiBpcwotICogY29tcGxldGVseSB0cmFuc2ZlcmVkIG9yIChpbiB0aGUgY2FzZSBvZiBhbiBJTiBvbmx5KSB0aGUgTFBGIGlzCisgKiBjb21wbGV0ZWx5IHRyYW5zZmVycmVkIG9yIChpbiB0aGUgY2FzZSBvZiBhbiBJTiBvbmx5KSB0aGUgTFBGIGlzCiAgKiBzZXQsIHRoZW4gdGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlIGFuZCB0aGUgdXJiIHNob3VsZCBiZSByZXR1cm5lZAogICogdG8gdGhlIHN5c3RlbS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC94aGNpLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYwppbmRleCA5YTM2NDVmLi4xOTZlMDE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYwpAQCAtNzQxLDcgKzc0MSw3IEBACiAJaW50CQkJcmV0dmFsOwogCiAJLyogV2FpdCBhIGJpdCBpZiBlaXRoZXIgb2YgdGhlIHJvb3RodWJzIG5lZWQgdG8gc2V0dGxlIGZyb20gdGhlCi0JICogdHJhbnNpc3Rpb24gaW50byBidXMgc3VzcGVuZC4KKwkgKiB0cmFuc2l0aW9uIGludG8gYnVzIHN1c3BlbmQuCiAJICovCiAJaWYgKHRpbWVfYmVmb3JlKGppZmZpZXMsIHhoY2ktPmJ1c19zdGF0ZVswXS5uZXh0X3N0YXRlY2hhbmdlKSB8fAogCQkJdGltZV9iZWZvcmUoamlmZmllcywKQEAgLTIwNzIsNyArMjA3Miw3IEBACiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAl2ZGV2ID0geGhjaS0+ZGV2c1t1ZGV2LT5zbG90X2lkXTsKLQkvKiBNYXJrIGVhY2ggZW5kcG9pbnQgYXMgYmVpbmcgaW4gdHJhbnNpc3Rpb24sIHNvCisJLyogTWFyayBlYWNoIGVuZHBvaW50IGFzIGJlaW5nIGluIHRyYW5zaXRpb24sIHNvCiAJICogeGhjaV91cmJfZW5xdWV1ZSgpIHdpbGwgcmVqZWN0IGFsbCBVUkJzLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1fZXBzOyBpKyspIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5oIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLmgKaW5kZXggNzExZGUyNS4uMDdlMjYzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC94aGNpLmgKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLmgKQEAgLTg3Myw3ICs4NzMsNyBAQAogI2RlZmluZSBDT01QX0NNRF9BQk9SVAkyNQogLyogU3RvcHBlZCAtIHRyYW5zZmVyIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc3RvcCBlbmRwb2ludCBjb21tYW5kICovCiAjZGVmaW5lIENPTVBfU1RPUAkyNgotLyogU2FtZSBhcyBDT01QX0VQX1NUT1BQRUQsIGJ1dCB0aGUgdHJhbnNmZXJlZCBsZW5ndGggaW4gdGhlIGV2ZW50IGlzIGludmFsaWQgKi8KKy8qIFNhbWUgYXMgQ09NUF9FUF9TVE9QUEVELCBidXQgdGhlIHRyYW5zZmVycmVkIGxlbmd0aCBpbiB0aGUgZXZlbnQgaXMgaW52YWxpZCAqLwogI2RlZmluZSBDT01QX1NUT1BfSU5WQUwJMjcKIC8qIENvbnRyb2wgQWJvcnQgRXJyb3IgLSBEZWJ1ZyBDYXBhYmlsaXR5IC0gY29udHJvbCBwaXBlIGFib3J0ZWQgKi8KICNkZWZpbmUgQ09NUF9EQkdfQUJPUlQJMjgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2ltYWdlL21pY3JvdGVrLmMgYi9kcml2ZXJzL3VzYi9pbWFnZS9taWNyb3Rlay5jCmluZGV4IGM5MGM4OWQuLmEwMDM3OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2ltYWdlL21pY3JvdGVrLmMKKysrIGIvZHJpdmVycy91c2IvaW1hZ2UvbWljcm90ZWsuYwpAQCAtNjksNyArNjksNyBAQAogICoJMjAwMDA1MTMgYWRkZWQgSURzIGZvciBhbGwgcHJvZHVjdHMgc3VwcG9ydGVkIGJ5IFdpbmRvd3MgZHJpdmVyIChqb2huKQogICoJMjAwMDA1MTQgUmV3cm90ZSBtdHNfc2NzaV9xdWV1ZWNvbW1hbmQgdG8gdXNlIFVSQnMgKGpvaG4pCiAgKgkyMDAwMDUxNCBWZXJzaW9uIDAuMC44agotICogICAgICAyMDAwMDUxNCBGaXggcmVwb3J0aW5nIG9mIG5vbi1leGlzdGFudCBkZXZpY2VzIHRvIFNDU0kgbGF5ZXIgKGpvaG4pCisgKiAgICAgIDIwMDAwNTE0IEZpeCByZXBvcnRpbmcgb2Ygbm9uLWV4aXN0ZW50IGRldmljZXMgdG8gU0NTSSBsYXllciAoam9obikKICAqCTIwMDAwNTE0IEFkZGVkIE1UU19ERUJVR19JTlQgKGpvaG4pCiAgKgkyMDAwMDUxNCBDaGFuZ2VkICJ1c2ItbWljcm90ZWsiIHRvICJtaWNyb3RlayIgZm9yIGNvbnNpc3RlbmN5IChqb2huKQogICoJMjAwMDA1MTQgU3R1cGlkIGJ1ZyBmaXhlcyAoam9obikKQEAgLTU1NywxNCArNTU3LDE0IEBACiAKIAlpZiAoICFtZW1jbXAoIHNyYi0+Y21uZCwgbXRzX3JlYWRfaW1hZ2Vfc2lnLCBtdHNfcmVhZF9pbWFnZV9zaWdfbGVuICkKICkgeyAJCXBpcGUgPSB1c2JfcmN2YnVsa3BpcGUoZGVzYy0+dXNiX2RldixkZXNjLT5lcF9pbWFnZSk7Ci0JCU1UU19ERUJVRyggInRyYW5zZmVyaW5nIGZyb20gZGVzYy0+ZXBfaW1hZ2UgPT0gJWRcbiIsCisJCU1UU19ERUJVRyggInRyYW5zZmVycmluZyBmcm9tIGRlc2MtPmVwX2ltYWdlID09ICVkXG4iLAogCQkJICAgKGludClkZXNjLT5lcF9pbWFnZSApOwogCX0gZWxzZSBpZiAoIE1UU19ESVJFQ1RJT05fSVNfSU4oc3JiLT5jbW5kWzBdKSApIHsKIAkJCXBpcGUgPSB1c2JfcmN2YnVsa3BpcGUoZGVzYy0+dXNiX2RldixkZXNjLT5lcF9yZXNwb25zZSk7Ci0JCQlNVFNfREVCVUcoICJ0cmFuc2ZlcmluZyBmcm9tIGRlc2MtPmVwX3Jlc3BvbnNlID09ICVkXG4iLAorCQkJTVRTX0RFQlVHKCAidHJhbnNmZXJyaW5nIGZyb20gZGVzYy0+ZXBfcmVzcG9uc2UgPT0gJWRcbiIsCiAJCQkJICAgKGludClkZXNjLT5lcF9yZXNwb25zZSk7CiAJfSBlbHNlIHsKLQkJTVRTX0RFQlVHKCJ0cmFuc2ZlcmluZyB0byBkZXNjLT5lcF9vdXQgPT0gJWRcbiIsCisJCU1UU19ERUJVRygidHJhbnNmZXJyaW5nIHRvIGRlc2MtPmVwX291dCA9PSAlZFxuIiwKIAkJCSAgKGludClkZXNjLT5lcF9vdXQpOwogCQlwaXBlID0gdXNiX3NuZGJ1bGtwaXBlKGRlc2MtPnVzYl9kZXYsZGVzYy0+ZXBfb3V0KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9taXNjL2lvd2Fycmlvci5jIGIvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYwppbmRleCBlNTczZTQ3MDQuLmEyMTkwYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL21pc2MvaW93YXJyaW9yLmMKKysrIGIvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYwpAQCAtNDAsNyArNDAsNyBAQAogI2lmZGVmIENPTkZJR19VU0JfRFlOQU1JQ19NSU5PUlMKICNkZWZpbmUgSU9XQVJSSU9SX01JTk9SX0JBU0UJMAogI2Vsc2UKLSNkZWZpbmUgSU9XQVJSSU9SX01JTk9SX0JBU0UJMjA4CS8vIFNLRUxFVE9OX01JTk9SX0JBU0UgMTkyICsgMTYsIG5vdCBvZmZpY2FsIHlldAorI2RlZmluZSBJT1dBUlJJT1JfTUlOT1JfQkFTRQkyMDgJLy8gU0tFTEVUT05fTUlOT1JfQkFTRSAxOTIgKyAxNiwgbm90IG9mZmljaWFsIHlldAogI2VuZGlmCiAKIC8qIGludGVycnVwdCBpbnB1dCBxdWV1ZSBzaXplICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9vdGcvaXNwMTMwMV9vbWFwLmMgYi9kcml2ZXJzL3VzYi9vdGcvaXNwMTMwMV9vbWFwLmMKaW5kZXggOGM2ZmRlZi4uZTI1NzAwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivb3RnL2lzcDEzMDFfb21hcC5jCisrKyBiL2RyaXZlcnMvdXNiL290Zy9pc3AxMzAxX29tYXAuYwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAKIAlpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBpc3ApOwogCWlzcC0+Y2xpZW50ID0gaTJjOwogCi0JLyogdmVyaWZ5IHRoZSBjaGlwIChzaG91bGRuJ3QgYmUgbmVjZXNhcnkpICovCisJLyogdmVyaWZ5IHRoZSBjaGlwIChzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5KSAqLwogCXN0YXR1cyA9IGlzcDEzMDFfZ2V0X3UxNihpc3AsIElTUDEzMDFfVkVORE9SX0lEKTsKIAlpZiAoc3RhdHVzICE9IEkyQ19WRU5ET1JfSURfUEhJTElQUykgewogCQlkZXZfZGJnKCZpMmMtPmRldiwgIm5vdCBwaGlsaXBzIGlkOiAlZFxuIiwgc3RhdHVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL290Zy9sYW5nd2VsbF9vdGcuYyBiL2RyaXZlcnMvdXNiL290Zy9sYW5nd2VsbF9vdGcuYwppbmRleCA3ZjliOGNkLi5lOTczZmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9vdGcvbGFuZ3dlbGxfb3RnLmMKKysrIGIvZHJpdmVycy91c2Ivb3RnL2xhbmd3ZWxsX290Zy5jCkBAIC01ODAsNyArNTgwLDcgQEAKIAkJdGltZSA9IFRCX0JVU19TVVNQRU5EOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlkZXZfZGJnKGxudy0+ZGV2LCAidW5rb3duIHRpbWVyLCBjYW5ub3QgZW5hYmxlIGl0XG4iKTsKKwkJZGV2X2RiZyhsbnctPmRldiwgInVua25vd24gdGltZXIsIGNhbm5vdCBlbmFibGUgaXRcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMzgxLDcgKzEzODEsNyBAQAogCQkJfSBlbHNlIGlmICghaW90Zy0+aHNtLmFfYnVzX3JlcSAmJiBpb3RnLT5vdGcuaG9zdCAmJgogCQkJCQlpb3RnLT5vdGcuaG9zdC0+Yl9obnBfZW5hYmxlKSB7CiAJCQkJLyogSXQgaXMgbm90IHNhZmUgZW5vdWdoIHRvIGRvIGEgZmFzdAotCQkJCSAqIHRyYW5zaXN0aW9uIGZyb20gQV9XQUlUX0JDT04gdG8KKwkJCQkgKiB0cmFuc2l0aW9uIGZyb20gQV9XQUlUX0JDT04gdG8KIAkJCQkgKiBBX1NVU1BFTkQgKi8KIAkJCQltc2xlZXAoMTAwMDApOwogCQkJCWlmIChpb3RnLT5oc20uYV9idXNfcmVxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2FpcmNhYmxlLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvYWlyY2FibGUuYwppbmRleCAwZGI2YWNlLi5hYmEyMDFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvYWlyY2FibGUuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvYWlyY2FibGUuYwpAQCAtMTYsNyArMTYsNyBAQAogICogV2hlbiByZWFkaW5nIHRoZSBwcm9jZXNzIGlzIGFsbW9zdCBlcXVhbCBleGNlcHQgdGhhdCB0aGUgaGVhZGVyIHN0YXJ0cyB3aXRoCiAgKiAweDAwIDB4MjAuCiAgKgotICogVGhlIGRldmljZSBzaW1wbHkgbmVlZCBzb21lIHN0dWZmIHRvIHVuZGVyc3RhbmQgZGF0YSBjb21taW5nIGZyb20gdGhlIHVzYgorICogVGhlIGRldmljZSBzaW1wbHkgbmVlZCBzb21lIHN0dWZmIHRvIHVuZGVyc3RhbmQgZGF0YSBjb21pbmcgZnJvbSB0aGUgdXNiCiAgKiBidWZmZXI6IFRoZSBGaXJzdCBhbmQgU2Vjb25kIGJ5dGUgaXMgdXNlZCBmb3IgYSBIZWFkZXIsIHRoZSBUaGlyZCBhbmQgRm91cnRoCiAgKiB0ZWxscyB0aGUgIGRldmljZSB0aGUgYW1vdW50IG9mIGluZm9ybWF0aW9uIHRoZSBwYWNrYWdlIGhvbGRzLgogICogUGFja2FnZXMgYXJlIDYwIGJ5dGVzIGxvbmcgSGVhZGVyIFN0dWZmLgpAQCAtMzAsNyArMzAsNyBAQAogICogb25lLgogICoKICAqIFRoZSBkcml2ZXIgcmVnaXN0ZXJzIGhpbXNlbGYgd2l0aCB0aGUgVVNCLXNlcmlhbCBjb3JlIGFuZCB0aGUgVVNCIENvcmUuIEkgaGFkCi0gKiB0byBpbXBsZW1lbnQgYSBwcm9iZSBmdW5jdGlvbiBhZ2FpbnMgVVNCLXNlcmlhbCwgYmVjYXVzZSBvdGhlciB3YXksIHRoZQorICogdG8gaW1wbGVtZW50IGEgcHJvYmUgZnVuY3Rpb24gYWdhaW5zdCBVU0Itc2VyaWFsLCBiZWNhdXNlIG90aGVyIHdheSwgdGhlCiAgKiBkcml2ZXIgd2FzIGF0dGFjaGluZyBoaW1zZWxmIHRvIGJvdGggaW50ZXJmYWNlcy4gSSBoYXZlIHRyeWVkIHdpdGggZGlmZmVyZW50CiAgKiBjb25maWd1cmF0aW9ucyBvZiB1c2Jfc2VyaWFsX2RyaXZlciB3aXRoIG91dCBleGl0LCBvbmx5IHRoZSBwcm9iZSBmdW5jdGlvbgogICogY291bGQgaGFuZGxlIHRoaXMgY29ycmVjdGx5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCmluZGV4IDRkZjNlMGMuLjBmMTFhZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTB4LmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODFGMikgfSwgLyogQzEwMDcgSEYgYmFuZCBSRklEIGNvbnRyb2xsZXIgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgyMTgpIH0sIC8qIExpcG93c2t5IEluZHVzdHJpZSBFbGVrdHJvbmlrIEdtYkgsIEhBUlAtMSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODIyQikgfSwgLyogTW9kZW0gRURHRShHU00pIENvbWFuZGVyIDIgKi8KLQl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgyNkIpIH0sIC8qIEN5Z25hbCBJbnRlZ3JhdGVkIFByb2R1Y3RzLCBJbmMuLCBGYXN0dHJheCBHUFMgZGVtb3N0cmF0aW9uIG1vZHVsZSAqLworCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODI2QikgfSwgLyogQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4sIEZhc3R0cmF4IEdQUyBkZW1vbnN0cmF0aW9uIG1vZHVsZSAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODI5MykgfSwgLyogVGVsZWdlc3lzIEVUUlgyVVNCICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MkY5KSB9LCAvKiBQcm9jeW9uIEFWUyAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODM0MSkgfSwgLyogU2llbWVucyBNQzM1UFUgR1BSUyBNb2RlbSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeXByZXNzX204LmMKaW5kZXggOTg3ZTliZi4uZDk5MDZlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jCkBAIC0zNSw3ICszNSw3IEBACiAgKgogICogIExvbm5pZSBNZW5kZXogPGRpZ25vbWVAZ21haWwuY29tPgogICogIDA0LTEwLTIwMDQKLSAqCURyaXZlciBtb2RpZmllZCB0byBzdXBwb3J0IGR5bmFtaWMgbGluZSBzZXR0aW5ncy4gIFZhcmlvdXMgaW1wcm92bWVudHMKKyAqCURyaXZlciBtb2RpZmllZCB0byBzdXBwb3J0IGR5bmFtaWMgbGluZSBzZXR0aW5ncy4gIFZhcmlvdXMgaW1wcm92ZW1lbnRzCiAgKiAgICAgIGFuZCBmZWF0dXJlcy4KICAqCiAgKiAgTmVpbCBXaGVsY2hlbApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2Z0ZGlfc2lvLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwppbmRleCA2NTk2N2IzLi5hOTczYzdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYwpAQCAtMTcsNyArMTcsNyBAQAogICogU2VlIERvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoaXMKICAqIGRyaXZlcgogICoKLSAqIFNlZSBodHRwOi8vZnRkaS11c2Itc2lvLnNvdXJjZWZvcmdlLm5ldCBmb3IgdXB0byBkYXRlIHRlc3RpbmcgaW5mbworICogU2VlIGh0dHA6Ly9mdGRpLXVzYi1zaW8uc291cmNlZm9yZ2UubmV0IGZvciB1cCB0byBkYXRlIHRlc3RpbmcgaW5mbwogICoJYW5kIGV4dHJhIGRvY3VtZW50YXRpb24KICAqCiAgKiBDaGFuZ2UgZW50cmllcyBmcm9tIDIwMDQgYW5kIGVhcmxpZXIgY2FuIGJlIGZvdW5kIGluIHZlcnNpb25zIG9mIHRoaXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMKaW5kZXggZjFhZWRmYS4uYWJmMDk1YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCkBAIC0xOTgxLDcgKzE5ODEsNyBAQAogCWlmIChjb2RlID09IElPU1BfU1RBVFVTX09QRU5fUlNQKSB7CiAJCWVkZ2VfcG9ydC0+dHhDcmVkaXRzID0gR0VUX1RYX0JVRkZFUl9TSVpFKGJ5dGUzKTsKIAkJZWRnZV9wb3J0LT5tYXhUeENyZWRpdHMgPSBlZGdlX3BvcnQtPnR4Q3JlZGl0czsKLQkJZGJnKCIlcyAtIFBvcnQgJXUgT3BlbiBSZXNwb25zZSBJbml0YWwgTVNSID0gJTAyeCBUeEJ1ZmZlclNpemUgPSAlZCIsIF9fZnVuY19fLCBlZGdlX3NlcmlhbC0+cnhQb3J0LCBieXRlMiwgZWRnZV9wb3J0LT50eENyZWRpdHMpOworCQlkYmcoIiVzIC0gUG9ydCAldSBPcGVuIFJlc3BvbnNlIEluaXRpYWwgTVNSID0gJTAyeCBUeEJ1ZmZlclNpemUgPSAlZCIsIF9fZnVuY19fLCBlZGdlX3NlcmlhbC0+cnhQb3J0LCBieXRlMiwgZWRnZV9wb3J0LT50eENyZWRpdHMpOwogCQloYW5kbGVfbmV3X21zcihlZGdlX3BvcnQsIGJ5dGUyKTsKIAogCQkvKiBzZW5kIHRoZSBjdXJyZW50IGxpbmUgc2V0dGluZ3MgdG8gdGhlIHBvcnQgc28gd2UgYXJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuaCBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5oCmluZGV4IGRjZWQ3ZWMuLmFkOWMxZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5oCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5oCkBAIC02OCw3ICs2OCw3IEBACiAjZGVmaW5lIFBST0NfU0VUX0NPTV9FTlRSWQkJMgogCiAKLS8qIFRoZSBmb2xsb3dpbmcgc3R1cmN0dXJlIGlzIHBhc3NlZCB0byB0aGUgd3JpdGUgKi8KKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGlzIHBhc3NlZCB0byB0aGUgd3JpdGUgKi8KIHN0cnVjdCBwcm9jV3JpdGUgewogCWludAlDb21tYW5kOwogCXVuaW9uIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb190aS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMKaW5kZXggZDg0MzQ5MS4uMGFhYzAwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX3RpLmMKQEAgLTQzMyw3ICs0MzMsNyBAQAogCiAJLyogV2UgY2FuIG9ubHkgc2VuZCBhIG1heGltdW0gb2YgMSBhbGlnbmVkIGJ5dGUgcGFnZSBhdCBhIHRpbWUgKi8KIAotCS8qIGNhbHVsYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgbGVmdCBpbiB0aGUgZmlyc3QgcGFnZSAqLworCS8qIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGxlZnQgaW4gdGhlIGZpcnN0IHBhZ2UgKi8KIAl3cml0ZV9sZW5ndGggPSBFUFJPTV9QQUdFX1NJWkUgLQogCQkJCShzdGFydF9hZGRyZXNzICYgKEVQUk9NX1BBR0VfU0laRSAtIDEpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGljb24uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpY29uLmMKaW5kZXggYTFkZDRkNC4uMWI1NjMzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGljb24uYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aWNvbi5jCkBAIC0xMTYsNyArMTE2LDcgQEAKIAkJfSBlbHNlIHsKIAkJCWlmICgoZGF0YVswXSA9PSAweDAwKSAmJiAoZGF0YVsxXSA9PSAweDAxKSkgewogCQkJCXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7Ci0JCQkJLyogQ1RTIHN0YXR1cyBpbmZvbWF0aW9uIHBhY2thZ2UgKi8KKwkJCQkvKiBDVFMgc3RhdHVzIGluZm9ybWF0aW9uIHBhY2thZ2UgKi8KIAkJCQlpZiAoZGF0YVsyXSA9PSAweDAwKQogCQkJCQlwcml2LT5jdHMgPSBmYWxzZTsKIAkJCQllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL2VuZV91YjYyNTAuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvZW5lX3ViNjI1MC5jCmluZGV4IDA4ZTAzNzQuLjBlNWFhZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2UvZW5lX3ViNjI1MC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvZW5lX3ViNjI1MC5jCkBAIC01NjIsNyArNTYyLDcgQEAKIAogCXJlc3VsdCA9IGVuZV9zZW5kX3Njc2lfY21kKHVzLCBGRElSX1JFQUQsIE5VTEwsIDApOwogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKSB7Ci0JCVVTX0RFQlVHUCgiRXhlY3Rpb24gU0QgSW5pdCBDb2RlIEZhaWwgISFcbiIpOworCQlVU19ERUJVR1AoIkV4ZWN1dGlvbiBTRCBJbml0IENvZGUgRmFpbCAhIVxuIik7CiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAJfQogCkBAIC01ODEsNyArNTgxLDcgQEAKIAogCXJlc3VsdCA9IGVuZV9zZW5kX3Njc2lfY21kKHVzLCBGRElSX1JFQUQsICZidWYsIDApOwogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKSB7Ci0JCVVTX0RFQlVHUCgiRXhlY3Rpb24gU0QgSW5pdCBDb2RlIEZhaWwgISFcbiIpOworCQlVU19ERUJVR1AoIkV4ZWN1dGlvbiBTRCBJbml0IENvZGUgRmFpbCAhIVxuIik7CiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYwppbmRleCA2Yjk5ODJjLi4wOWU1MmJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jCisrKyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaXNkMjAwLmMKQEAgLTE1MTAsNyArMTUxMCw3IEBACiAgKiBQcm90b2NvbCBhbmQgVHJhbnNwb3J0IGZvciB0aGUgSVNEMjAwIEFTSUMKICAqCiAgKiBUaGlzIHByb3RvY29sIGFuZCB0cmFuc3BvcnQgYXJlIGZvciBBVEEgZGV2aWNlcyBjb25uZWN0ZWQgdG8gYW4gSVNEMjAwCi0gKiBBU0lDLiAgQW4gQVRBUEkgZGV2aWNlIHRoYXQgaXMgY29uZWN0ZWQgYXMgYSBzbGF2ZSBkZXZpY2Ugd2lsbCBiZQorICogQVNJQy4gIEFuIEFUQVBJIGRldmljZSB0aGF0IGlzIGNvbm5lY3RlZCBhcyBhIHNsYXZlIGRldmljZSB3aWxsIGJlCiAgKiBkZXRlY3RlZCBpbiB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGFuZCB0aGUgcHJvdG9jb2wgd2lsbAogICogYmUgY2hhbmdlZCB0byBhbiBBVEFQSSBwcm90b2NvbCAoVHJhbnNwYXJlbnQgU0NTSSkuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS9zY3NpZ2x1ZS5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zY3NpZ2x1ZS5jCmluZGV4IDY4OWVlMWYuLjEzYjhiY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2NzaWdsdWUuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3Njc2lnbHVlLmMKQEAgLTEyMyw3ICsxMjMsNyBAQAogewogCXN0cnVjdCB1c19kYXRhICp1cyA9IGhvc3RfdG9fdXMoc2Rldi0+aG9zdCk7CiAKLQkvKiBNYW55IGRldmljZXMgaGF2ZSB0cm91YmxlIHRyYW5zZmVyaW5nIG1vcmUgdGhhbiAzMktCIGF0IGEgdGltZSwKKwkvKiBNYW55IGRldmljZXMgaGF2ZSB0cm91YmxlIHRyYW5zZmVycmluZyBtb3JlIHRoYW4gMzJLQiBhdCBhIHRpbWUsCiAJICogd2hpbGUgb3RoZXJzIGhhdmUgdHJvdWJsZSB3aXRoIG1vcmUgdGhhbiA2NEsuIEF0IHRoaXMgdGltZSB3ZQogCSAqIGFyZSBsaW1pdGluZyBib3RoIHRvIDMySyAoNjQgc2VjdG9yZXMpLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3NodXR0bGVfdXNiYXQuYwppbmRleCBiZDNmNDE1Li4wYjAwMDkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3NodXR0bGVfdXNiYXQuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3NodXR0bGVfdXNiYXQuYwpAQCAtMzQwLDcgKzM0MCw3IEBACiB9CiAKIC8qCi0gKiBTdG9yZXMgY3JpdGljYWwgaW5mb3JtYXRpb24gaW4gaW50ZXJuYWwgcmVnaXN0ZXJzIGluIHByZXBhcnRpb24gZm9yIHRoZSBleGVjdXRpb24KKyAqIFN0b3JlcyBjcml0aWNhbCBpbmZvcm1hdGlvbiBpbiBpbnRlcm5hbCByZWdpc3RlcnMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBleGVjdXRpb24KICAqIG9mIGEgY29uZGl0aW9uYWwgdXNiYXRfcmVhZF9ibG9ja3Mgb3IgdXNiYXRfd3JpdGVfYmxvY2tzIGNhbGwuCiAgKi8KIHN0YXRpYyBpbnQgdXNiYXRfc2V0X3NodXR0bGVfZmVhdHVyZXMoc3RydWN0IHVzX2RhdGEgKnVzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvY3J5cHRvLmMgYi9kcml2ZXJzL3VzYi93dXNiY29yZS9jcnlwdG8uYwppbmRleCA4MjdjODdmLi43ZTRiZjk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi93dXNiY29yZS9jcnlwdG8uYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS9jcnlwdG8uYwpAQCAtMTgwLDcgKzE4MCw3IEBACiAgKiAgICAgdXNpbmcgdGhlIDE0IGJ5dGVzIG9mIEBhIHRvIGZpbGwgdXAKICAqICAgICBiMS57bWFjX2hlYWRlcixlMCxzZWN1cml0eV9yZXNlcnZlZCxwYWRkaW5nfS4KICAqCi0gKiBOT1RFOiBUaGUgZGVmaW5pdG9uIG9mIGwoYSkgaW4gV1VTQjEuMFs2LjVdIHZzIHRoZSBkZWZpbml0aW9uIG9mCisgKiBOT1RFOiBUaGUgZGVmaW5pdGlvbiBvZiBsKGEpIGluIFdVU0IxLjBbNi41XSB2cyB0aGUgZGVmaW5pdGlvbiBvZgogICogICAgICAgbChtKSBpcyBvcnRob2dvbmFsLCB0aGV5IGJlYXIgbm8gcmVsYXRpb25zaGlwLCBzbyBpdCBpcyBub3QKICAqICAgICAgIGluIGNvbmZsaWN0IHdpdGggdGhlIHBhcmFtZXRlcidzIHJlbGF0aW9uIHRoYXQKICAqICAgICAgIFdVU0IxLjBbNi40LjJdKSBkZWZpbmVzLgpAQCAtMjcyLDcgKzI3Miw3IEBACiAKIAkvKiBOb3cgd2UgY3J5cHQgdGhlIE1JQyBUYWcgKCppdikgd2l0aCBBeCAtLSB2YWx1ZXMgcGVyIFdVU0IxLjBbNi41XQogCSAqIFRoZSBwcm9jZWR1cmUgaXMgdG8gQUVTIGNyeXB0IHRoZSBBMCBibG9jayBhbmQgWE9SIHRoZSBNSUMKLQkgKiBUYWcgYWdhaW5zIGl0OyB3ZSBvbmx5IGRvIHRoZSBmaXJzdCA4IGJ5dGVzIGFuZCBwbGFjZSBpdAorCSAqIFRhZyBhZ2FpbnN0IGl0OyB3ZSBvbmx5IGRvIHRoZSBmaXJzdCA4IGJ5dGVzIGFuZCBwbGFjZSBpdAogCSAqIGRpcmVjdGx5IGluIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCiAJICoKIAkgKiBQT1MgQ3J5cHRvIEFQSTogc2l6ZSBpcyBhc3N1bWVkIHRvIGJlIEFFUydzIGJsb2NrIHNpemUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS9yZXNlcnZhdGlvbi5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmVzZXJ2YXRpb24uYwppbmRleCA0ZWQ5NzM2Li42ZjRmYWZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi93dXNiY29yZS9yZXNlcnZhdGlvbi5jCisrKyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3Jlc2VydmF0aW9uLmMKQEAgLTcxLDcgKzcxLDcgQEAKIAogLyoqCiAgKiB3dXNiaGNfcnN2X2VzdGFibGlzaCAtIGVzdGFibGlzaCBhIHJlc2VydmF0aW9uIGZvciB0aGUgY2x1c3RlcgotICogQHd1c2JoYzogdGhlIFdVU0IgSEMgcmVxdWVzdGluZyBhIGJhbmR3aXRoIHJlc2VydmF0aW9uCisgKiBAd3VzYmhjOiB0aGUgV1VTQiBIQyByZXF1ZXN0aW5nIGEgYmFuZHdpZHRoIHJlc2VydmF0aW9uCiAgKi8KIGludCB3dXNiaGNfcnN2X2VzdGFibGlzaChzdHJ1Y3Qgd3VzYmhjICp3dXNiaGMpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS9yaC5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmguYwppbmRleCBjMTc1YjczLi4zOWRlMzkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi93dXNiY29yZS9yaC5jCisrKyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3JoLmMKQEAgLTEzMyw3ICsxMzMsNyBAQAogICogICAgICAgICAgIGJpZyBvZiBhIHByb2JsZW0gW2FuZCB3ZSBjYW4ndCBtYWtlIGl0IGFuIHNwaW5sb2NrCiAgKiAgICAgICAgICAgYmVjYXVzZSBvdGhlciBwYXJ0cyBuZWVkIHRvIHRha2UgaXQgYW5kIHNsZWVwXSAuCiAgKgotICogICAgICAgICAgIEB1c2JfaGNkIGlzIHJlZmNvdW50ZWQsIHNvIGl0IHdvbid0IGRpc3NhcGVhciB1bmRlciB1cworICogICAgICAgICAgIEB1c2JfaGNkIGlzIHJlZmNvdW50ZWQsIHNvIGl0IHdvbid0IGRpc2FwcGVhciB1bmRlciB1cwogICogICAgICAgICAgIGFuZCBiZWZvcmUga2lsbGluZyBhIGhvc3QsIHRoZSBwb2xsaW5nIG9mIHRoZSByb290IGh1YgogICogICAgICAgICAgIHdvdWxkIGJlIHN0b3BwZWQgYW55d2F5LgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS93YS1ycGlwZS5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtcnBpcGUuYwppbmRleCA4Y2I5ZDgwLi5jYTgwMTcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi93dXNiY29yZS93YS1ycGlwZS5jCisrKyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXJwaXBlLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqCiAgKiBSUElQRQogICoKLSAqICAgVGFyZ2V0dGVkIGF0IGRpZmZlcmVudCBkb3duc3RyZWFtIGVuZHBvaW50cworICogICBUYXJnZXRlZCBhdCBkaWZmZXJlbnQgZG93bnN0cmVhbSBlbmRwb2ludHMKICAqCiAgKiAgIERlc2NyaXB0b3I6IHVzZSB0byBjb25maWcgdGhlIHJlbW90ZSBwaXBlLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXhmZXIuYyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXhmZXIuYwppbmRleCA4NGI3NDRjLi42Y2NkOTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi93dXNiY29yZS93YS14ZmVyLmMKKysrIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EteGZlci5jCkBAIC02MSw3ICs2MSw3IEBACiAgKgogICogICAgIFR3byBtZXRob2RzIGl0IGNvdWxkIGJlIGRvbmU6CiAgKgotICogICAgIChhKSBzZXQgdXAgYSB0aW1lciBldmVyeXRpbWUgYW4gcnBpcGUncyB1c2UgY291bnQgZHJvcHMgdG8gMQorICogICAgIChhKSBzZXQgdXAgYSB0aW1lciBldmVyeSB0aW1lIGFuIHJwaXBlJ3MgdXNlIGNvdW50IGRyb3BzIHRvIDEKICAqICAgICAgICAgKHdoaWNoIG1lYW5zIHVudXNlZCkgb3Igd2hlbiBhIHRyYW5zZmVyIGVuZHMuIFJlc2V0IHRoZQogICogICAgICAgICB0aW1lciB3aGVuIGEgeGZlciBpcyBxdWV1ZWQuIElmIHRoZSB0aW1lciBleHBpcmVzLCByZWxlYXNlCiAgKiAgICAgICAgIHRoZSBycGlwZSBbc2VlIHJwaXBlX2VwX2Rpc2FibGUoKV0uCkBAIC0xNDAsNyArMTQwLDcgQEAKIAogCXN0cnVjdCB3YWhjICp3YTsJCS8qIFdpcmUgYWRhcHRlciB3ZSBhcmUgcGx1Z2dlZCB0byAqLwogCXN0cnVjdCB1c2JfaG9zdF9lbmRwb2ludCAqZXA7Ci0Jc3RydWN0IHVyYiAqdXJiOwkJLyogVVJCIHdlIGFyZSB0cmFuc2ZlcmluZyBmb3IgKi8KKwlzdHJ1Y3QgdXJiICp1cmI7CQkvKiBVUkIgd2UgYXJlIHRyYW5zZmVycmluZyBmb3IgKi8KIAlzdHJ1Y3Qgd2Ffc2VnICoqc2VnOwkJLyogdHJhbnNmZXIgc2VnbWVudHMgKi8KIAl1OCBzZWdzLCBzZWdzX3N1Ym1pdHRlZCwgc2Vnc19kb25lOwogCXVuc2lnbmVkIGlzX2luYm91bmQ6MTsKQEAgLTE2MSw3ICsxNjEsNyBAQAogfQogCiAvKgotICogRGVzdG9yeSBhIHRyYW5zZmVyIHN0cnVjdHVyZQorICogRGVzdHJveSBhIHRyYW5zZmVyIHN0cnVjdHVyZQogICoKICAqIE5vdGUgdGhhdCB0aGUgeGZlci0+c2VnW2luZGV4XSB0aGluZ2llcyBmb2xsb3cgdGhlIFVSQiBsaWZlIGN5Y2xlLAogICogc28gd2UgbmVlZCB0byBwdXQgdGhlbSwgbm90IGZyZWUgdGhlbS4KQEAgLTQ5NCw3ICs0OTQsNyBAQAogICogZnVuY3Rpb24gZG9lcyBhbG1vc3QgdGhlIHNhbWUgdGhpbmcgYW5kIHRoZXkgd29yayBjbG9zZWx5CiAgKiB0b2dldGhlci4KICAqCi0gKiBJZiB0aGUgc2VnIHJlcXVlc3QgaGFzIGZhaWxlZCBidXQgdGhpcyBEVE8gcGhhc2UgaGFzIHN1Y2VlZGVkLAorICogSWYgdGhlIHNlZyByZXF1ZXN0IGhhcyBmYWlsZWQgYnV0IHRoaXMgRFRPIHBoYXNlIGhhcyBzdWNjZWVkZWQsCiAgKiB3YV9zZWdfY2IoKSBoYXMgYWxyZWFkeSBmYWlsZWQgdGhlIHNlZ21lbnQgYW5kIG1vdmVkIHRoZQogICogc3RhdHVzIHRvIFdBX1NFR19FUlJPUiwgc28gdGhpcyB3aWxsIGdvIHRocm91Z2ggJ2Nhc2UgMCcgYW5kCiAgKiBlZmZlY3RpdmVseSBkbyBub3RoaW5nLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd3VzYmhjLmggYi9kcml2ZXJzL3VzYi93dXNiY29yZS93dXNiaGMuaAppbmRleCA2YmQ0MjZiLi4zYTJkMDkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi93dXNiY29yZS93dXNiaGMuaAorKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93dXNiaGMuaApAQCAtMjMxLDcgKzIzMSw3IEBACiAgKgogICogICAgTW9zdCBvZiB0aGUgdGltZXMgd2hlbiB5b3UgbmVlZCB0byB1c2UgaXQsIGl0IHdpbGwgYmUgbm9uLU5VTEwsCiAgKiAgICBzbyB0aGVyZSBpcyBubyByZWFsIG5lZWQgdG8gY2hlY2sgZm9yIGl0ICh3dXNiX2RldiB3aWxsCi0gKiAgICBkaXNzYXBlYXIgYmVmb3JlIHVzYl9kZXYpLgorICogICAgZGlzYXBwZWFyIGJlZm9yZSB1c2JfZGV2KS4KICAqCiAgKiAgLSBUaGUgZm9sbG93aW5nIGZpZWxkcyBuZWVkIHRvIGJlIGZpbGxlZCBvdXQgYmVmb3JlIGNhbGxpbmcKICAqICAgIHd1c2JoY19jcmVhdGUoKTogcG9ydHNfbWF4LCBtbWNpZXNfbWF4LCBtbWNpZV97YWRkLHJtfS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL2RyaXZlci5jIGIvZHJpdmVycy91d2IvZHJpdmVyLmMKaW5kZXggMDhiZDZkYi4uM2U1NDU0YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXdiL2RyaXZlci5jCisrKyBiL2RyaXZlcnMvdXdiL2RyaXZlci5jCkBAIC02MSw3ICs2MSw3IEBACiAKIAogLyoqCi0gKiBJZiBhIGJlYWNvbiBkaXNzYXBlYXJzIGZvciBsb25nZXIgdGhhbiB0aGlzLCB0aGVuIHdlIGNvbnNpZGVyIHRoZQorICogSWYgYSBiZWFjb24gZGlzYXBwZWFycyBmb3IgbG9uZ2VyIHRoYW4gdGhpcywgdGhlbiB3ZSBjb25zaWRlciB0aGUKICAqIGRldmljZSB3aG8gd2FzIHJlcHJlc2VudGVkIGJ5IHRoYXQgYmVhY29uIHRvIGJlIGdvbmUuCiAgKgogICogRUNNQS0zNjhbMTcuMi4zLCBsYXN0IHBhcmFdIGVzdGFibGlzaGVzIHRoYXQgYSBkZXZpY2UgbXVzdCBub3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL2RycC5jIGIvZHJpdmVycy91d2IvZHJwLmMKaW5kZXggYThkODNlMi4uM2ZiY2Y3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvZHJwLmMKKysrIGIvZHJpdmVycy91d2IvZHJwLmMKQEAgLTI3LDcgKzI3LDcgQEAKIAogLyogRFJQIENvbmZsaWN0IEFjdGlvbnMgKFtFQ01BLTM2OCAybmQgRWRpdGlvbl0gMTcuNC42KSAqLwogZW51bSB1d2JfZHJwX2NvbmZsaWN0X2FjdGlvbiB7Ci0JLyogUmVzZXJ2YXRpb24gaXMgbWFudGFpbmVkLCBubyBhY3Rpb24gbmVlZGVkICovCisJLyogUmVzZXJ2YXRpb24gaXMgbWFpbnRhaW5lZCwgbm8gYWN0aW9uIG5lZWRlZCAqLwogCVVXQl9EUlBfQ09ORkxJQ1RfTUFOVEFJTiA9IDAsCiAJCiAJLyogdGhlIGRldmljZSBzaGFsbCBub3QgdHJhbnNtaXQgZnJhbWVzIGluIGNvbmZsaWN0aW5nIE1BU3MgaW4KQEAgLTc0MSwxMiArNzQxLDEyIEBACiAgKiBEUlAgbm90aWZpY2F0aW9ucyBjYW4gb2NjdXIgZm9yIHRocmVlIGRpZmZlcmVudCByZWFzb25zOgogICoKICAqIC0gVVdCX0RSUF9OT1RJRl9EUlBfSUVfUkVDVkQ6IG9uZSBvciBtb3JlIERSUCBJRXMgd2l0aCB0aGUgUkMgYXMKLSAqICAgdGhlIHRhcmdldCBvciBzb3VyY2UgaGF2ZSBiZWVuIHJlY2lldmVkLgorICogICB0aGUgdGFyZ2V0IG9yIHNvdXJjZSBoYXZlIGJlZW4gcmVjZWl2ZWQuCiAgKgogICogICBUaGVzZSBEUlAgSUVzIGNvdWxkIGJlIG5ldyBvciBmb3IgYW4gZXhpc3RpbmcgcmVzZXJ2YXRpb24uCiAgKgogICogICBJZiB0aGUgRFJQIElFIGZvciBhbiBleGlzdGluZyByZXNlcnZhdGlvbiBjZWFzZXMgdG8gYmUgdG8KLSAqICAgcmVjaWV2ZWQgZm9yIGF0IGxlYXN0IG1NYXhMb3N0QmVhY29ucywgdGhlIHJlc2VydmF0aW9uIHNob3VsZCBiZQorICogICByZWNlaXZlZCBmb3IgYXQgbGVhc3QgbU1heExvc3RCZWFjb25zLCB0aGUgcmVzZXJ2YXRpb24gc2hvdWxkIGJlCiAgKiAgIGNvbnNpZGVyZWQgdG8gYmUgdGVybWluYXRlZC4gIE5vdGUgdGhhdCB0aGUgVEVSTUlOQVRFIHJlYXNvbiAoc2VlCiAgKiAgIGJlbG93KSBtYXkgbm90IGFsd2F5cyBiZSBzaWduYWxsZWQgKGUuZy4sIHRoZSByZW1vdGUgZGV2aWNlIGhhcwogICogICB0d28gb3IgbW9yZSByZXNlcnZhdGlvbnMgZXN0YWJsaXNoZWQgd2l0aCB0aGUgUkMpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91d2IvbGMtcmMuYyBiL2RyaXZlcnMvdXdiL2xjLXJjLmMKaW5kZXggYjAwOTFjNy4uYjQzOTVmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvbGMtcmMuYworKysgYi9kcml2ZXJzL3V3Yi9sYy1yYy5jCkBAIC0xNjgsNyArMTY4LDcgQEAKIAl9CiAKIAlpZiAodXdiX21hY19hZGRyX3Vuc2V0KCZhZGRyKSB8fCB1d2JfbWFjX2FkZHJfYmNhc3QoJmFkZHIpKSB7Ci0JCWFkZHIuZGF0YVswXSA9IDB4MDI7IC8qIGxvY2FsbHkgYWRtaW5zdGVyZWQgYW5kIHVuaWNhc3QgKi8KKwkJYWRkci5kYXRhWzBdID0gMHgwMjsgLyogbG9jYWxseSBhZG1pbmlzdGVyZWQgYW5kIHVuaWNhc3QgKi8KIAkJZ2V0X3JhbmRvbV9ieXRlcygmYWRkci5kYXRhWzFdLCBzaXplb2YoYWRkci5kYXRhKS0xKTsKIAogCQlyZXN1bHQgPSB1d2JfcmNfbWFjX2FkZHJfc2V0KHJjLCAmYWRkcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3V3Yi9yZXNldC5jIGIvZHJpdmVycy91d2IvcmVzZXQuYwppbmRleCAyNzg0OTI5Li4zZGU2MzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3V3Yi9yZXNldC5jCisrKyBiL2RyaXZlcnMvdXdiL3Jlc2V0LmMKQEAgLTUyLDcgKzUyLDcgQEAKIAkiY2FuY2VsbGVkIiwKIAkiaW52YWxpZCBzdGF0ZSIsCiAJImludmFsaWQgc2l6ZSIsCi0JImFjayBub3QgcmVjaWV2ZWQiLAorCSJhY2sgbm90IHJlY2VpdmVkIiwKIAkibm8gbW9yZSBhc2llIG5vdGlmaWNhdGlvbiIsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3V3Yi91bWMtZGV2LmMgYi9kcml2ZXJzL3V3Yi91bWMtZGV2LmMKaW5kZXggY2NkMjE4NC4uYjI5NDhlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvdW1jLWRldi5jCisrKyBiL2RyaXZlcnMvdXdiL3VtYy1kZXYuYwpAQCAtNzgsNyArNzgsNyBAQAogICogRmlyc3Qgd2UgdW5yZWdpc3RlciB0aGUgZGV2aWNlLCBtYWtlIHN1cmUgdGhlIGRyaXZlciBjYW4gZG8gaXQncwogICogcmVzb3VyY2UgcmVsZWFzZSB0aGluZyBhbmQgdGhlbiB3ZSB0cnkgdG8gcmVsZWFzZSBhbnkgbGVmdCBvdmVyCiAgKiByZXNvdXJjZXMuIFdlIHRha2UgYSByZWYgdG8gdGhlIGRldmljZSwgdG8gbWFrZSBzdXJlIGl0IGRvZXNuJ3QKLSAqIGRpc3NhcGVhciB1bmRlciBvdXIgZmVldC4KKyAqIGRpc2FwcGVhciB1bmRlciBvdXIgZmVldC4KICAqLwogdm9pZCB1bWNfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IHVtY19kZXYgKnVtYykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYXRtZWxfbGNkZmIuYyBiL2RyaXZlcnMvdmlkZW8vYXRtZWxfbGNkZmIuYwppbmRleCBjY2VjZjk5Li40NDg0YzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2F0bWVsX2xjZGZiLmMKKysrIGIvZHJpdmVycy92aWRlby9hdG1lbF9sY2RmYi5jCkBAIC02MzcsNyArNjM3LDcgQEAKICAqICAJbWFnbml0dWRlIHdoaWNoIG5lZWRzIHRvIGJlIHNjYWxlZCBpbiB0aGlzIGZ1bmN0aW9uIGZvciB0aGUgaGFyZHdhcmUuCiAgKglUaGluZ3MgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gYXJlIGhvdyBtYW55IGNvbG9yIHJlZ2lzdGVycywgaWYKICAqCWFueSwgYXJlIHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50IGNvbG9yIHZpc3VhbC4gV2l0aCB0cnVlY29sb3IgbW9kZQotICoJbm8gY29sb3IgcGFsZXR0ZXMgYXJlIHN1cHBvcnRlZC4gSGVyZSBhIHBzdWVkbyBwYWxldHRlIGlzIGNyZWF0ZWQKKyAqCW5vIGNvbG9yIHBhbGV0dGVzIGFyZSBzdXBwb3J0ZWQuIEhlcmUgYSBwc2V1ZG8gcGFsZXR0ZSBpcyBjcmVhdGVkCiAgKgl3aGljaCB3ZSBzdG9yZSB0aGUgdmFsdWUgaW4gcHNldWRvX3BhbGV0dGUgaW4gc3RydWN0IGZiX2luZm8uIEZvcgogICoJcHNldWRvY29sb3IgbW9kZSB3ZSBoYXZlIGEgbGltaXRlZCBjb2xvciBwYWxldHRlLiBUbyBkZWFsIHdpdGggdGhpcwogICoJd2UgY2FuIHByb2dyYW0gd2hhdCBjb2xvciBpcyBkaXNwbGF5ZWQgZm9yIGEgcGFydGljdWxhciBwaXhlbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYyBiL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYwppbmRleCBkNDM3YjNkLi5lYmI4OTNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMKKysrIGIvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jCkBAIC0zMTI0LDEyICszMTI0LDEyIEBACiAJCU0gPSBwbGxfcmVnc1syXTsKIAogCQkvKgotCQkgKiBQTEwgRmVlZGJhY2sgRGl2aWRlciBOIChEZXBlbmRhbnQgb24gQ0xPQ0tfQ05UTCk6CisJCSAqIFBMTCBGZWVkYmFjayBEaXZpZGVyIE4gKERlcGVuZGVudCBvbiBDTE9DS19DTlRMKToKIAkJICovCiAJCU4gPSBwbGxfcmVnc1s3ICsgKGNsb2NrX2NudGwgJiAzKV07CiAKIAkJLyoKLQkJICogUExMIFBvc3QgRGl2aWRlciBQIChEZXBlbmRhbnQgb24gQ0xPQ0tfQ05UTCk6CisJCSAqIFBMTCBQb3N0IERpdmlkZXIgUCAoRGVwZW5kZW50IG9uIENMT0NLX0NOVEwpOgogCQkgKi8KIAkJUCA9IDEgPDwgKHBsbF9yZWdzWzZdID4+ICgoY2xvY2tfY250bCAmIDMpIDw8IDEpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdHkvbWFjaDY0X2N1cnNvci5jIGIvZHJpdmVycy92aWRlby9hdHkvbWFjaDY0X2N1cnNvci5jCmluZGV4IDJiYThiM2MuLjQ2ZjcyZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXR5L21hY2g2NF9jdXJzb3IuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F0eS9tYWNoNjRfY3Vyc29yLmMKQEAgLTUxLDcgKzUxLDcgQEAKICAqIHRvIGEgbGFyZ2VyIG51bWJlciBhbmQgc2F0dXJhdGUgQ1VSX0hPUlpfUE9TTiB0byB6ZXJvLgogICoKICAqIGlmIFkgYmVjb21lcyBuZWdhdGl2ZSwgQ1VSX1ZFUlRfT0ZGU0VUIG11c3QgYmUgYWRqdXN0ZWQgdG8gYSBsYXJnZXIgbnVtYmVyLAotICogQ1VSX09GRlNFVCBtdXN0IGJlIGFkanVzdGVkIHRvIGEgcG9pbnQgdG8gdGhlIGFwcHJvcHJhaXRlIGxpbmUgaW4gdGhlIGN1cnNvcgorICogQ1VSX09GRlNFVCBtdXN0IGJlIGFkanVzdGVkIHRvIGEgcG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGxpbmUgaW4gdGhlIGN1cnNvcgogICogZGVmaW5pdGF0aW9uIGFuZCBDVVJfVkVSVF9QT1NOIG11c3QgYmUgc2F0dXJhdGVkIHRvIHplcm8uCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdTEyMDBmYi5jIGIvZHJpdmVycy92aWRlby9hdTEyMDBmYi5jCmluZGV4IDRlYTE4N2QuLjVkZmYzMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXUxMjAwZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F1MTIwMGZiLmMKQEAgLTE1NzIsNyArMTU3Miw3IEBACiAJLyogQ29weSBtb25pdG9yIHNwZWNzIGZyb20gcGFuZWwgZGF0YSAqLwogCS8qIGZpeG1lOiB3ZSdyZSBzZXR0aW5nIHVwIExDRCBjb250cm9sbGVyIHdpbmRvd3MsIHNvIHRoZXNlIGRvbnQgZ2l2ZSBhCiAJZGFtbiBhcyB0byB3aGF0IHRoZSBtb25pdG9yIHNwZWNzIGFyZSAodGhlIHBhbmVsIGl0c2VsZiBkb2VzLCBidXQgdGhhdAotCWlzbnQgZG9uZSBoZXJlLi4uc28gbWF5YmUgbmVlZCBhIGdlbmVyaWMgY2F0Y2hhbGwgbW9uaXRvciBzZXR0aW5nPz8/ICovCisJaXNuJ3QgZG9uZSBoZXJlLi4uc28gbWF5YmUgbmVlZCBhIGdlbmVyaWMgY2F0Y2hhbGwgbW9uaXRvciBzZXR0aW5nPz8/ICovCiAJbWVtY3B5KCZmYmktPm1vbnNwZWNzLCAmcGFuZWwtPm1vbnNwZWNzLCBzaXplb2Yoc3RydWN0IGZiX21vbnNwZWNzKSk7CiAKIAkvKiBXZSBmaXJzdCB0cnkgdGhlIHVzZXIgbW9kZSBwYXNzZWQgaW4gYXJndW1lbnQuIElmIHRoYXQgZmFpbGVkLApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNkLmMgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYwppbmRleCBhZjYwOTgzLi5jNjUzM2JhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYwpAQCAtMTA5LDcgKzEwOSw3IEBACiAjZGVmaW5lIENPUkdJQkxfQkFUVExPVyAgICAgICAweDAyCiAKIC8qCi0gKiBUaGlzIGlzIG9ubHkgYSBwc3VlZG8gSTJDIGludGVyZmFjZS4gV2UgY2FuJ3QgdXNlIHRoZSBzdGFuZGFyZCBrZXJuZWwKKyAqIFRoaXMgaXMgb25seSBhIHBzZXVkbyBJMkMgaW50ZXJmYWNlLiBXZSBjYW4ndCB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbAogICogcm91dGluZXMgYXMgdGhlIGludGVyZmFjZSBpcyB3cml0ZSBvbmx5LiBXZSBqdXN0IGFzc3VtZSB0aGUgZGF0YSBpcyBhY2tlZC4uLgogICovCiBzdGF0aWMgdm9pZCBsY2R0Z19zc3BfaTJjX3NlbmQoc3RydWN0IGNvcmdpX2xjZCAqbGNkLCB1aW50OF90IGRhdGEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sb2NvbW9sY2QuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jCmluZGV4IGJiY2EzMTIuLmJlMjBiNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jCkBAIC02LDcgKzYsNyBAQAogICogR1BMIHYyCiAgKgogICogVGhpcyBkcml2ZXIgYXNzdW1lcyBzaW5nbGUgQ1BVLiBUaGF0J3Mgb2theSwgYmVjYXVzZSBjb2xsaWUgaXMKLSAqIHNsaWdodGx5IG9sZCBoYXJkd2FyZSwgYW5kIG5vb25lIGlzIGdvaW5nIHRvIHJldHJvZml0IHNlY29uZCBDUFUgdG8KKyAqIHNsaWdodGx5IG9sZCBoYXJkd2FyZSwgYW5kIG5vIG9uZSBpcyBnb2luZyB0byByZXRyb2ZpdCBzZWNvbmQgQ1BVIHRvCiAgKiBvbGQgUERBLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmZpbi1scTAzNXExLWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2JmaW4tbHEwMzVxMS1mYi5jCmluZGV4IGM4ZTFmMDQuLjIzYjZjNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmZpbi1scTAzNXExLWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9iZmluLWxxMDM1cTEtZmIuYwpAQCAtMTU0LDggKzE1NCwxMCBAQAogCiAJcmV0ID0gbHEwMzVxMV9jb250cm9sKHNwaSwgTFEwMzVfU0hVVF9DVEwsIExRMDM1X09OKTsKIAlyZXQgfD0gbHEwMzVxMV9jb250cm9sKHNwaSwgTFEwMzVfRFJJVkVSX09VVFBVVF9DVEwsIGN0bC0+bW9kZSk7Ci0JaWYgKHJldCkKKwlpZiAocmV0KSB7CisJCWtmcmVlKGN0bCk7CiAJCXJldHVybiByZXQ7CisJfQogCiAJc3BpX3NldF9kcnZkYXRhKHNwaSwgY3RsKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iZmluX2FkdjczOTNmYi5oIGIvZHJpdmVycy92aWRlby9iZmluX2FkdjczOTNmYi5oCmluZGV4IDhjN2Y5ZTQuLmNkNTkxYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmZpbl9hZHY3MzkzZmIuaAorKysgYi9kcml2ZXJzL3ZpZGVvL2JmaW5fYWR2NzM5M2ZiLmgKQEAgLTg3LDEyICs4NywxMiBAQAogCiBzdGF0aWMgY29uc3QgdTggaW5pdF9OVFNDW10gPSB7CiAJMHgwMCwgMHgxRSwJLyogUG93ZXIgdXAgYWxsIERBQ3MgYW5kIFBMTCAqLwotCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLworCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLwogCTB4OEMsIDB4MUYsCS8qIE5UU0MgU3ViY2FycmllciBGcmVxdWVuY3kgKi8KIAkweDhELCAweDdDLAkvKiBOVFNDIFN1YmNhcnJpZXIgRnJlcXVlbmN5ICovCiAJMHg4RSwgMHhGMCwJLyogTlRTQyBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwpAQCAtMTA5LDEyICsxMDksMTIgQEAKIAogc3RhdGljIGNvbnN0IHU4IGluaXRfUEFMW10gPSB7CiAJMHgwMCwgMHgxRSwJLyogUG93ZXIgdXAgYWxsIERBQ3MgYW5kIFBMTCAqLwotCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLwotCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJ0aW9uIG1hdHJpeCAqLworCTB4QzMsIDB4MjYsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzUsIDB4MTIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzIsIDB4NEEsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QzYsIDB4NUUsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkQsIDB4MTksCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLworCTB4QkYsIDB4NDIsCS8qIFByb2dyYW0gUkdCLT5ZQ3JDYiBDb2xvciBTcGFjZSBjb252ZXJzaW9uIG1hdHJpeCAqLwogCTB4OEMsIDB4Q0IsCS8qIFBBTCBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwogCTB4OEQsIDB4OEEsCS8qIFBBTCBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwogCTB4OEUsIDB4MDksCS8qIFBBTCBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9jb25zb2xlL2ZiY29uLmMgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZmJjb24uYwppbmRleCBjNTgzOTM0Li44NzQ1NjM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZmJjb24uYworKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZmJjb24uYwpAQCAtMzcwLDcgKzM3MCw2IEBACiB7CiAJc3RydWN0IGZiX2luZm8gKmluZm8gPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGZiX2luZm8sIHF1ZXVlKTsKIAlzdHJ1Y3QgZmJjb25fb3BzICpvcHMgPSBpbmZvLT5mYmNvbl9wYXI7Ci0Jc3RydWN0IGRpc3BsYXkgKnA7CiAJc3RydWN0IHZjX2RhdGEgKnZjID0gTlVMTDsKIAlpbnQgYzsKIAlpbnQgbW9kZTsKQEAgLTM4Niw3ICszODUsNiBAQAogCQlyZXR1cm47CiAJfQogCi0JcCA9ICZmYl9kaXNwbGF5W3ZjLT52Y19udW1dOwogCWMgPSBzY3JfcmVhZHcoKHUxNiAqKSB2Yy0+dmNfcG9zKTsKIAltb2RlID0gKCFvcHMtPmN1cnNvcl9mbGFzaCB8fCBvcHMtPmN1cnNvcl9zdGF0ZS5lbmFibGUpID8KIAkJQ01fRVJBU0UgOiBDTV9EUkFXOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9jb25zb2xlL2ZvbnRfbWluaV80eDYuYyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9mb250X21pbmlfNHg2LmMKaW5kZXggYTE5YTdmMy4uZmE2ZTY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9jb25zb2xlL2ZvbnRfbWluaV80eDYuYworKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZm9udF9taW5pXzR4Ni5jCkBAIC0xLDUgKzEsNSBAQAogCi0vKiBIYW5kIGNvbXBvc2VkICJNaW5pc2N1bGUiIDR4NiBmb250LCB3aXRoIGJpbmFyeSBkYXRhIGdlbmVyYXRlZCB1c2luZworLyogSGFuZCBjb21wb3NlZCAiTWludXNjdWxlIiA0eDYgZm9udCwgd2l0aCBiaW5hcnkgZGF0YSBnZW5lcmF0ZWQgdXNpbmcKICAqIFBlcmwgc3R1Yi4KICAqCiAgKiBVc2UgJ3BlcmwgLXggbWluaV80eDYuYyA8IG1pbmlfNHg2LmMgPiBuZXdfdmVyc2lvbi5jJyB0byByZWdlbmVyYXRlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2RhOHh4LWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2RhOHh4LWZiLmMKaW5kZXggOGQ2MWVmOS4uOGI3ZDQ3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9kYTh4eC1mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZGE4eHgtZmIuYwpAQCAtNzYzLDcgKzc2Myw3IEBACiAKIAkvKgogCSAqIFNldCBmbGFnIHRvIDAgYW5kIHdhaXQgZm9yIGlzciB0byBzZXQgdG8gMS4gSXQgd291bGQgc2VlbSB0aGVyZSBpcyBhCi0JICogcmFjZSBjb25kaXRpb24gaGVyZSB3aGVyZSB0aGUgSVNSIGNvdWxkIGhhdmUgb2NjdXJlZCBqdXN0IGJlZm9yZSBvcgorCSAqIHJhY2UgY29uZGl0aW9uIGhlcmUgd2hlcmUgdGhlIElTUiBjb3VsZCBoYXZlIG9jY3VycmVkIGp1c3QgYmVmb3JlIG9yCiAJICoganVzdCBhZnRlciB0aGlzIHNldC4gQnV0IHNpbmNlIHdlIGFyZSBqdXN0IGNvYXJzZWx5IHdhaXRpbmcgZm9yCiAJICogYSBmcmFtZSB0byBjb21wbGV0ZSB0aGVuIHRoYXQncyBPSy4gaS5lLiBpZiB0aGUgZnJhbWUgY29tcGxldGVkCiAJICoganVzdCBiZWZvcmUgdGhpcyBjb2RlIGV4ZWN1dGVkIHRoZW4gd2UgaGF2ZSB0byB3YWl0IGFub3RoZXIgZnVsbApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9kaXNwbGF5L2Rpc3BsYXktc3lzZnMuYyBiL2RyaXZlcnMvdmlkZW8vZGlzcGxheS9kaXNwbGF5LXN5c2ZzLmMKaW5kZXggZjZhMDlhYi4uMGM2NDdkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9kaXNwbGF5L2Rpc3BsYXktc3lzZnMuYworKysgYi9kcml2ZXJzL3ZpZGVvL2Rpc3BsYXkvZGlzcGxheS1zeXNmcy5jCkBAIC0xODIsNyArMTgyLDcgQEAKIAltdXRleF9sb2NrKCZkZGV2LT5sb2NrKTsKIAlkZXZpY2VfdW5yZWdpc3RlcihkZGV2LT5kZXYpOwogCW11dGV4X3VubG9jaygmZGRldi0+bG9jayk7Ci0JLy8gTWFyayBkZXZpY2UgaW5kZXggYXMgYXZhbGlhYmxlCisJLy8gTWFyayBkZXZpY2UgaW5kZXggYXMgYXZhaWxhYmxlCiAJbXV0ZXhfbG9jaygmYWxsb2NhdGVkX2RzcF9sb2NrKTsKIAlpZHJfcmVtb3ZlKCZhbGxvY2F0ZWRfZHNwLCBkZGV2LT5pZHgpOwogCW11dGV4X3VubG9jaygmYWxsb2NhdGVkX2RzcF9sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZWZpZmIuYyBiL2RyaXZlcnMvdmlkZW8vZWZpZmIuYwppbmRleCA3MDQ3N2MyLi40ZWIzOGRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2VmaWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9lZmlmYi5jCkBAIC01Myw2ICs1Myw3IEBACiAJTV9NQl83XzEsCS8qIE1hY0Jvb2ssIDd0aCByZXYuICovCiAJTV9NQl9TUiwJLyogTWFjQm9vaywgMm5kIGdlbiwgKFNhbnRhIFJvc2EpICovCiAJTV9NQkEsCQkvKiBNYWNCb29rIEFpciAqLworCU1fTUJBXzMsCS8qIE1hY2Jvb2sgQWlyLCAzcmQgcmV2ICovCiAJTV9NQlAsCQkvKiBNYWNCb29rIFBybyAqLwogCU1fTUJQXzIsCS8qIE1hY0Jvb2sgUHJvIDJuZCBnZW4gKi8KIAlNX01CUF8yXzIsCS8qIE1hY0Jvb2sgUHJvIDIsMm5kIGdlbiAqLwpAQCAtNjQsNDMgKzY1LDU0IEBACiAJTV9NQlBfNl8xLAkvKiBNYWNCb29rIFBybywgNiwxdGggZ2VuICovCiAJTV9NQlBfNl8yLAkvKiBNYWNCb29rIFBybywgNiwydGggZ2VuICovCiAJTV9NQlBfN18xLAkvKiBNYWNCb29rIFBybywgNywxdGggZ2VuICovCisJTV9NQlBfOF8yLAkvKiBNYWNCb29rIFBybywgOCwybmQgZ2VuICovCiAJTV9VTktOT1dOCS8qIHBsYWNlaG9sZGVyICovCiB9OwogCisjZGVmaW5lIE9WRVJSSURFX05PTkUJMHgwCisjZGVmaW5lIE9WRVJSSURFX0JBU0UJMHgxCisjZGVmaW5lIE9WRVJSSURFX1NUUklERQkweDIKKyNkZWZpbmUgT1ZFUlJJREVfSEVJR0hUCTB4NAorI2RlZmluZSBPVkVSUklERV9XSURUSAkweDgKKwogc3RhdGljIHN0cnVjdCBlZmlmYl9kbWlfaW5mbyB7CiAJY2hhciAqb3B0bmFtZTsKIAl1bnNpZ25lZCBsb25nIGJhc2U7CiAJaW50IHN0cmlkZTsKIAlpbnQgd2lkdGg7CiAJaW50IGhlaWdodDsKKwlpbnQgZmxhZ3M7CiB9IGRtaV9saXN0W10gX19pbml0ZGF0YSA9IHsKLQlbTV9JMTddID0geyAiaTE3IiwgMHg4MDAxMDAwMCwgMTQ3MiAqIDQsIDE0NDAsIDkwMCB9LAotCVtNX0kyMF0gPSB7ICJpMjAiLCAweDgwMDEwMDAwLCAxNzI4ICogNCwgMTY4MCwgMTA1MCB9LCAvKiBndWVzcyAqLwotCVtNX0kyMF9TUl0gPSB7ICJpbWFjNyIsIDB4NDAwMTAwMDAsIDE3MjggKiA0LCAxNjgwLCAxMDUwIH0sCi0JW01fSTI0XSA9IHsgImkyNCIsIDB4ODAwMTAwMDAsIDIwNDggKiA0LCAxOTIwLCAxMjAwIH0sIC8qIGd1ZXNzICovCi0JW01fSTI0XzhfMV0gPSB7ICJpbWFjOCIsIDB4YzAwNjAwMDAsIDIwNDggKiA0LCAxOTIwLCAxMjAwIH0sCi0JW01fSTI0XzEwXzFdID0geyAiaW1hYzEwIiwgMHhjMDAxMDAwMCwgMjA0OCAqIDQsIDE5MjAsIDEwODAgfSwKLQlbTV9JMjdfMTFfMV0gPSB7ICJpbWFjMTEiLCAweGMwMDEwMDAwLCAyNTYwICogNCwgMjU2MCwgMTQ0MCB9LAotCVtNX01JTkldPSB7ICJtaW5pIiwgMHg4MDAwMDAwMCwgMjA0OCAqIDQsIDEwMjQsIDc2OCB9LAotCVtNX01JTklfM18xXSA9IHsgIm1pbmkzMSIsIDB4NDAwMTAwMDAsIDEwMjQgKiA0LCAxMDI0LCA3NjggfSwKLQlbTV9NSU5JXzRfMV0gPSB7ICJtaW5pNDEiLCAweGMwMDEwMDAwLCAyMDQ4ICogNCwgMTkyMCwgMTIwMCB9LAotCVtNX01CXSA9IHsgIm1hY2Jvb2siLCAweDgwMDAwMDAwLCAyMDQ4ICogNCwgMTI4MCwgODAwIH0sCi0JW01fTUJfNV8xXSA9IHsgIm1hY2Jvb2s1MSIsIDB4ODAwMTAwMDAsIDIwNDggKiA0LCAxMjgwLCA4MDAgfSwKLQlbTV9NQl82XzFdID0geyAibWFjYm9vazYxIiwgMHg4MDAxMDAwMCwgMjA0OCAqIDQsIDEyODAsIDgwMCB9LAotCVtNX01CXzdfMV0gPSB7ICJtYWNib29rNzEiLCAweDgwMDEwMDAwLCAyMDQ4ICogNCwgMTI4MCwgODAwIH0sCi0JW01fTUJBXSA9IHsgIm1iYSIsIDB4ODAwMDAwMDAsIDIwNDggKiA0LCAxMjgwLCA4MDAgfSwKLQlbTV9NQlBdID0geyAibWJwIiwgMHg4MDAxMDAwMCwgMTQ3MiAqIDQsIDE0NDAsIDkwMCB9LAotCVtNX01CUF8yXSA9IHsgIm1icDIiLCAwLCAwLCAwLCAwIH0sIC8qIHBsYWNlaG9sZGVyICovCi0JW01fTUJQXzJfMl0gPSB7ICJtYnAyMiIsIDB4ODAwMTAwMDAsIDE0NzIgKiA0LCAxNDQwLCA5MDAgfSwKLQlbTV9NQlBfU1JdID0geyAibWJwMyIsIDB4ODAwMzAwMDAsIDIwNDggKiA0LCAxNDQwLCA5MDAgfSwKLQlbTV9NQlBfNF0gPSB7ICJtYnA0IiwgMHhjMDA2MDAwMCwgMjA0OCAqIDQsIDE5MjAsIDEyMDAgfSwKLQlbTV9NQlBfNV8xXSA9IHsgIm1icDUxIiwgMHhjMDAxMDAwMCwgMjA0OCAqIDQsIDE0NDAsIDkwMCB9LAotCVtNX01CUF81XzJdID0geyAibWJwNTIiLCAweGMwMDEwMDAwLCAyMDQ4ICogNCwgMTkyMCwgMTIwMCB9LAotCVtNX01CUF81XzNdID0geyAibWJwNTMiLCAweGQwMDEwMDAwLCAyMDQ4ICogNCwgMTQ0MCwgOTAwIH0sCi0JW01fTUJQXzZfMV0gPSB7ICJtYnA2MSIsIDB4OTAwMzAwMDAsIDIwNDggKiA0LCAxOTIwLCAxMjAwIH0sCi0JW01fTUJQXzZfMl0gPSB7ICJtYnA2MiIsIDB4OTAwMzAwMDAsIDIwNDggKiA0LCAxNjgwLCAxMDUwIH0sCi0JW01fTUJQXzdfMV0gPSB7ICJtYnA3MSIsIDB4YzAwMTAwMDAsIDIwNDggKiA0LCAxMjgwLCA4MDAgfSwKLQlbTV9VTktOT1dOXSA9IHsgTlVMTCwgMCwgMCwgMCwgMCB9CisJW01fSTE3XSA9IHsgImkxNyIsIDB4ODAwMTAwMDAsIDE0NzIgKiA0LCAxNDQwLCA5MDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9JMjBdID0geyAiaTIwIiwgMHg4MDAxMDAwMCwgMTcyOCAqIDQsIDE2ODAsIDEwNTAsIE9WRVJSSURFX05PTkUgfSwgLyogZ3Vlc3MgKi8KKwlbTV9JMjBfU1JdID0geyAiaW1hYzciLCAweDQwMDEwMDAwLCAxNzI4ICogNCwgMTY4MCwgMTA1MCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX0kyNF0gPSB7ICJpMjQiLCAweDgwMDEwMDAwLCAyMDQ4ICogNCwgMTkyMCwgMTIwMCwgT1ZFUlJJREVfTk9ORSB9LCAvKiBndWVzcyAqLworCVtNX0kyNF84XzFdID0geyAiaW1hYzgiLCAweGMwMDYwMDAwLCAyMDQ4ICogNCwgMTkyMCwgMTIwMCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX0kyNF8xMF8xXSA9IHsgImltYWMxMCIsIDB4YzAwMTAwMDAsIDIwNDggKiA0LCAxOTIwLCAxMDgwLCBPVkVSUklERV9OT05FIH0sCisJW01fSTI3XzExXzFdID0geyAiaW1hYzExIiwgMHhjMDAxMDAwMCwgMjU2MCAqIDQsIDI1NjAsIDE0NDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NSU5JXT0geyAibWluaSIsIDB4ODAwMDAwMDAsIDIwNDggKiA0LCAxMDI0LCA3NjgsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NSU5JXzNfMV0gPSB7ICJtaW5pMzEiLCAweDQwMDEwMDAwLCAxMDI0ICogNCwgMTAyNCwgNzY4LCBPVkVSUklERV9OT05FIH0sCisJW01fTUlOSV80XzFdID0geyAibWluaTQxIiwgMHhjMDAxMDAwMCwgMjA0OCAqIDQsIDE5MjAsIDEyMDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NQl0gPSB7ICJtYWNib29rIiwgMHg4MDAwMDAwMCwgMjA0OCAqIDQsIDEyODAsIDgwMCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX01CXzVfMV0gPSB7ICJtYWNib29rNTEiLCAweDgwMDEwMDAwLCAyMDQ4ICogNCwgMTI4MCwgODAwLCBPVkVSUklERV9OT05FIH0sCisJW01fTUJfNl8xXSA9IHsgIm1hY2Jvb2s2MSIsIDB4ODAwMTAwMDAsIDIwNDggKiA0LCAxMjgwLCA4MDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NQl83XzFdID0geyAibWFjYm9vazcxIiwgMHg4MDAxMDAwMCwgMjA0OCAqIDQsIDEyODAsIDgwMCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX01CQV0gPSB7ICJtYmEiLCAweDgwMDAwMDAwLCAyMDQ4ICogNCwgMTI4MCwgODAwLCBPVkVSUklERV9OT05FIH0sCisJLyogMTEiIE1hY2Jvb2sgQWlyIDMsMSBwYXNzZXMgdGhlIHdyb25nIHN0cmlkZSAqLworCVtNX01CQV8zXSA9IHsgIm1iYTMiLCAwLCAyMDQ4ICogNCwgMCwgMCwgT1ZFUlJJREVfU1RSSURFIH0sCisJW01fTUJQXSA9IHsgIm1icCIsIDB4ODAwMTAwMDAsIDE0NzIgKiA0LCAxNDQwLCA5MDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NQlBfMl0gPSB7ICJtYnAyIiwgMCwgMCwgMCwgMCwgT1ZFUlJJREVfTk9ORSB9LCAvKiBwbGFjZWhvbGRlciAqLworCVtNX01CUF8yXzJdID0geyAibWJwMjIiLCAweDgwMDEwMDAwLCAxNDcyICogNCwgMTQ0MCwgOTAwLCBPVkVSUklERV9OT05FIH0sCisJW01fTUJQX1NSXSA9IHsgIm1icDMiLCAweDgwMDMwMDAwLCAyMDQ4ICogNCwgMTQ0MCwgOTAwLCBPVkVSUklERV9OT05FIH0sCisJW01fTUJQXzRdID0geyAibWJwNCIsIDB4YzAwNjAwMDAsIDIwNDggKiA0LCAxOTIwLCAxMjAwLCBPVkVSUklERV9OT05FIH0sCisJW01fTUJQXzVfMV0gPSB7ICJtYnA1MSIsIDB4YzAwMTAwMDAsIDIwNDggKiA0LCAxNDQwLCA5MDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NQlBfNV8yXSA9IHsgIm1icDUyIiwgMHhjMDAxMDAwMCwgMjA0OCAqIDQsIDE5MjAsIDEyMDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9NQlBfNV8zXSA9IHsgIm1icDUzIiwgMHhkMDAxMDAwMCwgMjA0OCAqIDQsIDE0NDAsIDkwMCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX01CUF82XzFdID0geyAibWJwNjEiLCAweDkwMDMwMDAwLCAyMDQ4ICogNCwgMTkyMCwgMTIwMCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX01CUF82XzJdID0geyAibWJwNjIiLCAweDkwMDMwMDAwLCAyMDQ4ICogNCwgMTY4MCwgMTA1MCwgT1ZFUlJJREVfTk9ORSB9LAorCVtNX01CUF83XzFdID0geyAibWJwNzEiLCAweGMwMDEwMDAwLCAyMDQ4ICogNCwgMTI4MCwgODAwLCBPVkVSUklERV9OT05FIH0sCisJW01fTUJQXzhfMl0gPSB7ICJtYnA4MiIsIDB4OTAwMTAwMDAsIDE0NzIgKiA0LCAxNDQwLCA5MDAsIE9WRVJSSURFX05PTkUgfSwKKwlbTV9VTktOT1dOXSA9IHsgTlVMTCwgMCwgMCwgMCwgMCwgT1ZFUlJJREVfTk9ORSB9CiB9OwogCiBzdGF0aWMgaW50IHNldF9zeXN0ZW0oY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmlkKTsKQEAgLTEzOCw2ICsxNTAsNyBAQAogCUVGSUZCX0RNSV9TWVNURU1fSUQoIkFwcGxlIEluYy4iLCAiTWFjQm9vazYsMSIsIE1fTUJfNl8xKSwKIAlFRklGQl9ETUlfU1lTVEVNX0lEKCJBcHBsZSBJbmMuIiwgIk1hY0Jvb2s3LDEiLCBNX01CXzdfMSksCiAJRUZJRkJfRE1JX1NZU1RFTV9JRCgiQXBwbGUgSW5jLiIsICJNYWNCb29rQWlyMSwxIiwgTV9NQkEpLAorCUVGSUZCX0RNSV9TWVNURU1fSUQoIkFwcGxlIEluYy4iLCAiTWFjQm9va0FpcjMsMSIsIE1fTUJBXzMpLAogCUVGSUZCX0RNSV9TWVNURU1fSUQoIkFwcGxlIENvbXB1dGVyLCBJbmMuIiwgIk1hY0Jvb2tQcm8xLDEiLCBNX01CUCksCiAJRUZJRkJfRE1JX1NZU1RFTV9JRCgiQXBwbGUgQ29tcHV0ZXIsIEluYy4iLCAiTWFjQm9va1BybzIsMSIsIE1fTUJQXzIpLAogCUVGSUZCX0RNSV9TWVNURU1fSUQoIkFwcGxlIENvbXB1dGVyLCBJbmMuIiwgIk1hY0Jvb2tQcm8yLDIiLCBNX01CUF8yXzIpLApAQCAtMTUxLDE5ICsxNjQsMjYgQEAKIAlFRklGQl9ETUlfU1lTVEVNX0lEKCJBcHBsZSBJbmMuIiwgIk1hY0Jvb2tQcm82LDEiLCBNX01CUF82XzEpLAogCUVGSUZCX0RNSV9TWVNURU1fSUQoIkFwcGxlIEluYy4iLCAiTWFjQm9va1BybzYsMiIsIE1fTUJQXzZfMiksCiAJRUZJRkJfRE1JX1NZU1RFTV9JRCgiQXBwbGUgSW5jLiIsICJNYWNCb29rUHJvNywxIiwgTV9NQlBfN18xKSwKKwlFRklGQl9ETUlfU1lTVEVNX0lEKCJBcHBsZSBJbmMuIiwgIk1hY0Jvb2tQcm84LDIiLCBNX01CUF84XzIpLAogCXt9LAogfTsKIAorI2RlZmluZSBjaG9vc2VfdmFsdWUoZG1pdmFsdWUsIGZ3dmFsdWUsIGZpZWxkLCBmbGFncykgKHsJXAorCQl0eXBlb2YoZnd2YWx1ZSkgX3JldF8gPSBmd3ZhbHVlOwkJXAorCQlpZiAoKGZsYWdzKSAmIChmaWVsZCkpCQkJCVwKKwkJCV9yZXRfID0gZG1pdmFsdWU7CQkJXAorCQllbHNlIGlmICgoZnd2YWx1ZSkgPT0gMCkJCQlcCisJCQlfcmV0XyA9IGRtaXZhbHVlOwkJCVwKKwkJX3JldF87CQkJCQkJXAorCX0pCisKIHN0YXRpYyBpbnQgc2V0X3N5c3RlbShjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqaWQpCiB7CiAJc3RydWN0IGVmaWZiX2RtaV9pbmZvICppbmZvID0gaWQtPmRyaXZlcl9kYXRhOwotCWlmIChpbmZvLT5iYXNlID09IDApCi0JCXJldHVybiAwOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiZWZpZmI6IGRtaSBkZXRlY3RlZCAlcyAtIGZyYW1lYnVmZmVyIGF0ICVwICIKLQkJCSAiKCVkeCVkLCBzdHJpZGUgJWQpXG4iLCBpZC0+aWRlbnQsCi0JCQkgKHZvaWQgKilpbmZvLT5iYXNlLCBpbmZvLT53aWR0aCwgaW5mby0+aGVpZ2h0LAotCQkJIGluZm8tPnN0cmlkZSk7CisJaWYgKGluZm8tPmJhc2UgPT0gMCAmJiBpbmZvLT5oZWlnaHQgPT0gMCAmJiBpbmZvLT53aWR0aCA9PSAwCisJCQkmJiBpbmZvLT5zdHJpZGUgPT0gMCkKKwkJcmV0dXJuIDA7CiAKIAkvKiBUcnVzdCB0aGUgYm9vdGxvYWRlciBvdmVyIHRoZSBETUkgdGFibGVzICovCiAJaWYgKHNjcmVlbl9pbmZvLmxmYl9iYXNlID09IDApIHsKQEAgLTE3MSw0MCArMTkxLDQ3IEBACiAJCXN0cnVjdCBwY2lfZGV2ICpkZXYgPSBOVUxMOwogCQlpbnQgZm91bmRfYmFyID0gMDsKICNlbmRpZgotCQlzY3JlZW5faW5mby5sZmJfYmFzZSA9IGluZm8tPmJhc2U7CisJCWlmIChpbmZvLT5iYXNlKSB7CisJCQlzY3JlZW5faW5mby5sZmJfYmFzZSA9IGNob29zZV92YWx1ZShpbmZvLT5iYXNlLAorCQkJCXNjcmVlbl9pbmZvLmxmYl9iYXNlLCBPVkVSUklERV9CQVNFLAorCQkJCWluZm8tPmZsYWdzKTsKIAogI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKLQkJLyogbWFrZSBzdXJlIHRoYXQgdGhlIGFkZHJlc3MgaW4gdGhlIHRhYmxlIGlzIGFjdHVhbGx5IG9uIGEKLQkJICogVkdBIGRldmljZSdzIFBDSSBCQVIgKi8KKwkJCS8qIG1ha2Ugc3VyZSB0aGF0IHRoZSBhZGRyZXNzIGluIHRoZSB0YWJsZSBpcyBhY3R1YWxseQorCQkJICogb24gYSBWR0EgZGV2aWNlJ3MgUENJIEJBUiAqLwogCi0JCWZvcl9lYWNoX3BjaV9kZXYoZGV2KSB7Ci0JCQlpbnQgaTsKLQkJCWlmICgoZGV2LT5jbGFzcyA+PiA4KSAhPSBQQ0lfQ0xBU1NfRElTUExBWV9WR0EpCi0JCQkJY29udGludWU7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgREVWSUNFX0NPVU5UX1JFU09VUkNFOyBpKyspIHsKLQkJCQlyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIGVuZDsKKwkJCWZvcl9lYWNoX3BjaV9kZXYoZGV2KSB7CisJCQkJaW50IGk7CisJCQkJaWYgKChkZXYtPmNsYXNzID4+IDgpICE9IFBDSV9DTEFTU19ESVNQTEFZX1ZHQSkKKwkJCQkJY29udGludWU7CisJCQkJZm9yIChpID0gMDsgaSA8IERFVklDRV9DT1VOVF9SRVNPVVJDRTsgaSsrKSB7CisJCQkJCXJlc291cmNlX3NpemVfdCBzdGFydCwgZW5kOwogCi0JCQkJc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBpKTsKLQkJCQlpZiAoc3RhcnQgPT0gMCkKLQkJCQkJYnJlYWs7Ci0JCQkJZW5kID0gcGNpX3Jlc291cmNlX2VuZChkZXYsIGkpOwotCQkJCWlmIChzY3JlZW5faW5mby5sZmJfYmFzZSA+PSBzdGFydCAmJgotCQkJCQkJc2NyZWVuX2luZm8ubGZiX2Jhc2UgPCBlbmQpIHsKLQkJCQkJZm91bmRfYmFyID0gMTsKKwkJCQkJc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LCBpKTsKKwkJCQkJaWYgKHN0YXJ0ID09IDApCisJCQkJCQlicmVhazsKKwkJCQkJZW5kID0gcGNpX3Jlc291cmNlX2VuZChkZXYsIGkpOworCQkJCQlpZiAoc2NyZWVuX2luZm8ubGZiX2Jhc2UgPj0gc3RhcnQgJiYKKwkJCQkJICAgIHNjcmVlbl9pbmZvLmxmYl9iYXNlIDwgZW5kKSB7CisJCQkJCQlmb3VuZF9iYXIgPSAxOworCQkJCQl9CiAJCQkJfQogCQkJfQotCQl9Ci0JCWlmICghZm91bmRfYmFyKQotCQkJc2NyZWVuX2luZm8ubGZiX2Jhc2UgPSAwOworCQkJaWYgKCFmb3VuZF9iYXIpCisJCQkJc2NyZWVuX2luZm8ubGZiX2Jhc2UgPSAwOwogI2VuZGlmCisJCX0KIAl9CiAJaWYgKHNjcmVlbl9pbmZvLmxmYl9iYXNlKSB7Ci0JCWlmIChzY3JlZW5faW5mby5sZmJfbGluZWxlbmd0aCA9PSAwKQotCQkJc2NyZWVuX2luZm8ubGZiX2xpbmVsZW5ndGggPSBpbmZvLT5zdHJpZGU7Ci0JCWlmIChzY3JlZW5faW5mby5sZmJfd2lkdGggPT0gMCkKLQkJCXNjcmVlbl9pbmZvLmxmYl93aWR0aCA9IGluZm8tPndpZHRoOwotCQlpZiAoc2NyZWVuX2luZm8ubGZiX2hlaWdodCA9PSAwKQotCQkJc2NyZWVuX2luZm8ubGZiX2hlaWdodCA9IGluZm8tPmhlaWdodDsKKwkJc2NyZWVuX2luZm8ubGZiX2xpbmVsZW5ndGggPSBjaG9vc2VfdmFsdWUoaW5mby0+c3RyaWRlLAorCQkJc2NyZWVuX2luZm8ubGZiX2xpbmVsZW5ndGgsIE9WRVJSSURFX1NUUklERSwKKwkJCWluZm8tPmZsYWdzKTsKKwkJc2NyZWVuX2luZm8ubGZiX3dpZHRoID0gY2hvb3NlX3ZhbHVlKGluZm8tPndpZHRoLAorCQkJc2NyZWVuX2luZm8ubGZiX3dpZHRoLCBPVkVSUklERV9XSURUSCwKKwkJCWluZm8tPmZsYWdzKTsKKwkJc2NyZWVuX2luZm8ubGZiX2hlaWdodCA9IGNob29zZV92YWx1ZShpbmZvLT5oZWlnaHQsCisJCQlzY3JlZW5faW5mby5sZmJfaGVpZ2h0LCBPVkVSUklERV9IRUlHSFQsCisJCQlpbmZvLT5mbGFncyk7CiAJCWlmIChzY3JlZW5faW5mby5vcmlnX3ZpZGVvX2lzVkdBID09IDApCiAJCQlzY3JlZW5faW5mby5vcmlnX3ZpZGVvX2lzVkdBID0gVklERU9fVFlQRV9FRkk7CiAJfSBlbHNlIHsKQEAgLTIxNCw2ICsyNDEsMTMgQEAKIAkJc2NyZWVuX2luZm8ub3JpZ192aWRlb19pc1ZHQSA9IDA7CiAJCXJldHVybiAwOwogCX0KKworCXByaW50ayhLRVJOX0lORk8gImVmaWZiOiBkbWkgZGV0ZWN0ZWQgJXMgLSBmcmFtZWJ1ZmZlciBhdCAlcCAiCisJCQkgIiglZHglZCwgc3RyaWRlICVkKVxuIiwgaWQtPmlkZW50LAorCQkJICh2b2lkICopc2NyZWVuX2luZm8ubGZiX2Jhc2UsIHNjcmVlbl9pbmZvLmxmYl93aWR0aCwKKwkJCSBzY3JlZW5faW5mby5sZmJfaGVpZ2h0LCBzY3JlZW5faW5mby5sZmJfbGluZWxlbmd0aCk7CisKKwogCXJldHVybiAxOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2VwOTN4eC1mYi5jIGIvZHJpdmVycy92aWRlby9lcDkzeHgtZmIuYwppbmRleCBiMzU4ZDA0Li5jYmRiMWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2VwOTN4eC1mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZXA5M3h4LWZiLmMKQEAgLTQ1Niw3ICs0NTYsNyBAQAogCSAqIFRoZXJlIGlzIGEgYnVnIGluIHRoZSBlcDkzeHggZnJhbWVidWZmZXIgd2hpY2ggY2F1c2VzIHByb2JsZW1zCiAJICogaWYgYml0IDI3IG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGlzIHNldC4KIAkgKiBTZWU6IGh0dHA6Ly9tYXJjLmluZm8vP2w9bGludXgtYXJtLWtlcm5lbCZtPTExMDA2MTI0NTUwMjAwMCZ3PTIKLQkgKiBUaGVyZSBkb2VzIG5vdCBzZWVtIHRvIGJlIGFueSBvZmZpY2FsIGVycmF0YSBmb3IgdGhpcywgYnV0IEkKKwkgKiBUaGVyZSBkb2VzIG5vdCBzZWVtIHRvIGJlIGFueSBvZmZpY2lhbCBlcnJhdGEgZm9yIHRoaXMsIGJ1dCBJCiAJICogaGF2ZSBjb25maXJtZWQgdGhlIHByb2JsZW0gZXhpc3RzIG9uIG15IGhhcmR3YXJlIChlcDkzMTUpIGF0CiAJICogbGVhc3QuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZibWVtLmMgYi9kcml2ZXJzL3ZpZGVvL2ZibWVtLmMKaW5kZXggZTJiZjk1My4uZTBjMjI4NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJtZW0uYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZibWVtLmMKQEAgLTE1MDcsNyArMTUwNyw3IEBACiAJCQkocHJpbWFyeSAmJiBnZW5fYXBlciAmJiBnZW5fYXBlci0+Y291bnQgJiYKIAkJCSBnZW5fYXBlci0+cmFuZ2VzWzBdLmJhc2UgPT0gVkdBX0ZCX1BIWVMpKSB7CiAKLQkJCXByaW50ayhLRVJOX0VSUiAiZmI6IGNvbmZsaWN0aW5nIGZiIGh3IHVzYWdlICIKKwkJCXByaW50ayhLRVJOX0lORk8gImZiOiBjb25mbGljdGluZyBmYiBodyB1c2FnZSAiCiAJCQkgICAgICAgIiVzIHZzICVzIC0gcmVtb3ZpbmcgZ2VuZXJpYyBkcml2ZXJcbiIsCiAJCQkgICAgICAgbmFtZSwgcmVnaXN0ZXJlZF9mYltpXS0+Zml4LmlkKTsKIAkJCXVucmVnaXN0ZXJfZnJhbWVidWZmZXIocmVnaXN0ZXJlZF9mYltpXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zic3lzZnMuYyBiL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jCmluZGV4IGY0YTMyNzcuLjA0MjUxY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jCkBAIC0zMyw3ICszMyw3IEBACiAgKiBmb3IgZHJpdmVyIHByaXZhdGUgZGF0YSAoaW5mby0+cGFyKS4gaW5mby0+cGFyIChpZiBhbnkpIHdpbGwgYmUKICAqIGFsaWduZWQgdG8gc2l6ZW9mKGxvbmcpLgogICoKLSAqIFJldHVybnMgdGhlIG5ldyBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqIFJldHVybnMgdGhlIG5ldyBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAgKgogICovCiBzdHJ1Y3QgZmJfaW5mbyAqZnJhbWVidWZmZXJfYWxsb2Moc2l6ZV90IHNpemUsIHN0cnVjdCBkZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZm0yZmIuYyBiL2RyaXZlcnMvdmlkZW8vZm0yZmIuYwppbmRleCAxYjBmZWI4Li5kMDUzM2I3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZtMmZiLmMKKysrIGIvZHJpdmVycy92aWRlby9mbTJmYi5jCkBAIC00NSw3ICs0NSw3IEBACiAgKglidWZmZXIgbmVlZHMgYW4gYW1vdW50IG9mIG1lbW9yeSBvZiAxLjc2OS40NzIgYnl0ZXMgd2hpY2gKICAqCWlzIG5lYXIgdG8gMiBNQnl0ZSAodGhlIGFsbG9jYXRlZCBhZGRyZXNzIHNwYWNlIG9mIFpvcnJvMikuCiAgKglUaGUgbWVtb3J5IGlzIGNoYW5uZWwgaW50ZXJsZWF2ZWQuIFRoYXQgbWVhbnMgZXZlcnkgY2hhbm5lbAotICoJb3ducyBmb3VyIFZSQU1zLiBVbmZvcnR1bmF0bHkgbW9zdCBGcmFtZU1hc3RlcnMgSUkgYXJlCisgKglvd25zIGZvdXIgVlJBTXMuIFVuZm9ydHVuYXRlbHkgbW9zdCBGcmFtZU1hc3RlcnMgSUkgYXJlCiAgKglub3QgYXNzZW1ibGVkIHdpdGggbWVtb3J5IGZvciB0aGUgYWxwaGEgY2hhbm5lbC4gSW4gdGhpcwogICoJY2FzZSBpdCBjb3VsZCBiZSBwb3NzaWJsZSB0byBhZGQgdGhlIGZyYW1lIGJ1ZmZlciBpbnRvIHRoZQogICoJbm9ybWFsIG1lbW9yeSBwb29sLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mc2wtZGl1LWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYwppbmRleCA5MDQ4Zjg3Li5iZWRmNWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYwpAQCAtODgyLDcgKzg4Miw3IEBACiAgKiB3aGljaCBuZWVkcyB0byBiZSBzY2FsZWQgaW4gdGhpcyBmdW5jdGlvbiBmb3IgdGhlIGhhcmR3YXJlLiBUaGluZ3MgdG8gdGFrZQogICogaW50byBjb25zaWRlcmF0aW9uIGFyZSBob3cgbWFueSBjb2xvciByZWdpc3RlcnMsIGlmIGFueSwgYXJlIHN1cHBvcnRlZCB3aXRoCiAgKiB0aGUgY3VycmVudCBjb2xvciB2aXN1YWwuIFdpdGggdHJ1ZWNvbG9yIG1vZGUgbm8gY29sb3IgcGFsZXR0ZXMgYXJlCi0gKiBzdXBwb3J0ZWQuIEhlcmUgYSBwc3VlZG8gcGFsZXR0ZSBpcyBjcmVhdGVkIHdoaWNoIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbgorICogc3VwcG9ydGVkLiBIZXJlIGEgcHNldWRvIHBhbGV0dGUgaXMgY3JlYXRlZCB3aGljaCB3ZSBzdG9yZSB0aGUgdmFsdWUgaW4KICAqIHBzZXVkb19wYWxldHRlIGluIHN0cnVjdCBmYl9pbmZvLiBGb3IgcHNldWRvY29sb3IgbW9kZSB3ZSBoYXZlIGEgbGltaXRlZAogICogY29sb3IgcGFsZXR0ZS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9nYmVmYi5jIGIvZHJpdmVycy92aWRlby9nYmVmYi5jCmluZGV4IDkzMzg5OWQuLjdlN2I3YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZ2JlZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2diZWZiLmMKQEAgLTcyMSw3ICs3MjEsNyBAQAogCiAJICAgVGlsZXMgaGF2ZSB0aGUgYWR2YW50YWdlIHRoYXQgdGhleSBjYW4gYmUgYWxsb2NhdGVkIGluZGl2aWR1YWxseSBpbgogCSAgIG1lbW9yeS4gSG93ZXZlciwgdGhpcyBtYXBwaW5nIGlzIG5vdCBsaW5lYXIgYXQgYWxsLCB3aGljaCBpcyBub3QKLQkgICByZWFsbHkgY29udmllbmllbnQuIEluIG9yZGVyIHRvIHN1cHBvcnQgbGluZWFyIGFkZHJlc3NpbmcsIHRoZSBHQkUKKwkgICByZWFsbHkgY29udmVuaWVudC4gSW4gb3JkZXIgdG8gc3VwcG9ydCBsaW5lYXIgYWRkcmVzc2luZywgdGhlIEdCRQogCSAgIERNQSBoYXJkd2FyZSBpcyBmb29sZWQgaW50byB0aGlua2luZyB0aGUgc2NyZWVuIGlzIG9ubHkgb25lIHRpbGUKIAkgICBsYXJnZSBhbmQgYnV0IGhhcyBhIGdyZWF0ZXIgaGVpZ2h0LCBzbyB0aGF0IHRoZSBETUEgdHJhbnNmZXIgY292ZXJzCiAJICAgdGhlIHNhbWUgcmVnaW9uLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9nZW9kZS9seGZiLmggYi9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaAppbmRleCBiZThjY2I0Li5jZmNkODA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaAorKysgYi9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaApAQCAtMTE3LDcgKzExNyw3IEBACiB9OwogCiAjZGVmaW5lIEdQX0JMVF9TVEFUVVNfQ0UJCSgxIDw8IDQpCS8qIGNtZCBidWYgZW1wdHkgKi8KLSNkZWZpbmUgR1BfQkxUX1NUQVRVU19QQgkJKDEgPDwgMCkJLyogcHJpbWF0aXZlIGJ1c3kgKi8KKyNkZWZpbmUgR1BfQkxUX1NUQVRVU19QQgkJKDEgPDwgMCkJLyogcHJpbWl0aXZlIGJ1c3kgKi8KIAogCiAvKiBEaXNwbGF5IENvbnRyb2xsZXIgcmVnaXN0ZXJzICh0YWJsZSA2LTQ3IGZyb20gdGhlIGRhdGEgYm9vaykgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vaTgxMC9pODEwX2FjY2VsLmMgYi9kcml2ZXJzL3ZpZGVvL2k4MTAvaTgxMF9hY2NlbC5jCmluZGV4IGY1YmVkZWUuLjc2NzJkMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vaTgxMC9pODEwX2FjY2VsLmMKKysrIGIvZHJpdmVycy92aWRlby9pODEwL2k4MTBfYWNjZWwuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAgKiBAcGFyOiBwb2ludGVyIHRvIGk4MTBmYl9wYXIgc3RydWN0dXJlCiAgKgogICogREVTQ1JJUFRJT046Ci0gKiBDaGVja3Mvd2FpdHMgZm9yIHN1ZmZpY2VudCBzcGFjZSBpbiByaW5nYnVmZmVyIG9mIHNpemUKKyAqIENoZWNrcy93YWl0cyBmb3Igc3VmZmljaWVudCBzcGFjZSBpbiByaW5nYnVmZmVyIG9mIHNpemUKICAqIHNwYWNlLiAgUmV0dXJucyB0aGUgdGFpbCBvZiB0aGUgYnVmZmVyCiAgKi8gCiBzdGF0aWMgaW5saW5lIHUzMiBiZWdpbl9pcmluZyhzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIHNwYWNlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBPdmVybGF5RGV2aWNlLmMgYi9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYwppbmRleCBhOGM5NzEzLi4wYWVlYWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYworKysgYi9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYwpAQCAtNDE3LDcgKzQxNyw3IEBACiAJLyoqKioqKioqKioqKioqKioqIEhvcml6b250YWwgZGVjaW1hdGlvbi9zY2FsaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogCS8qCi0JICogTm93IHdlIGhhbmRsZSB0aGUgaG9yaXpvbnRhbCBjYXNlLCB0aGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJpc29uIG9mCisJICogTm93IHdlIGhhbmRsZSB0aGUgaG9yaXpvbnRhbCBjYXNlLCB0aGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mCiAJICogdGhlIHZlcnRpY2FsIGNhc2UgaW4gdGhhdCB3ZSBkZWNpbWF0ZSBieSBmYWN0b3JzIG9mIDIuICBhcyB3ZSBhcmUKIAkgKiB3b3JraW5nIGluIHdvcmRzIHdlIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBkZWNpbWF0ZSBieSB0aGVzZQogCSAqIGZhY3RvcnMuICBhcyB3ZSBhbHdheXMgaGF2ZSB0byBoYXZlIGEgYnVmZmVyIHdoaWNoIGlzIGFsaWduZWQgdG8gYQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBSZWcuaCBiL2RyaXZlcnMvdmlkZW8va3lyby9TVEc0MDAwUmVnLmgKaW5kZXggMjQ0NTQ5ZS4uNWQ2MjY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBSZWcuaAorKysgYi9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwMFJlZy5oCkBAIC0xNiw3ICsxNiw3IEBACiAKIC8qCiAgKiBNYWNyb3MgdGhhdCBhY2Nlc3MgbWVtb3J5IG1hcHBlZCBjYXJkIHJlZ2lzdGVycyBpbiBQQ0kgc3BhY2UKLSAqIEFkZCBhbiBhcHByb3ByYWl0ZSBzZWN0aW9uIGZvciB5b3VyIE9TIG9yIHByb2Nlc3NvciBhcmNoaXRlY3R1cmUuCisgKiBBZGQgYW4gYXBwcm9wcmlhdGUgc2VjdGlvbiBmb3IgeW91ciBPUyBvciBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlLgogICovCiAjaWYgZGVmaW5lZChfX0tFUk5FTF9fKQogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9EQUMxMDY0LmggYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9EQUMxMDY0LmgKaW5kZXggYzZlZDc4MC4uMWU2ZTQ1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfREFDMTA2NC5oCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX0RBQzEwNjQuaApAQCAtNDYsNyArNDYsNyBAQAogI2RlZmluZSAgICAgIE0xMDY0X1hEVklDTEtDVFJMX0RWSUxPT1BDVEwgICAgICAgMHgzMAogCS8qIENSVEMyIHBpeGVsIGNsb2NrIGFsbG93ZWQgdG8oMCkvYmxvY2tlZCBmcm9tKDEpIGRyaXZpbmcgQ1JUQzIgKi8KICNkZWZpbmUgICAgICBNMTA2NF9YRFZJQ0xLQ1RSTF9DMkRWSUNMS0VOICAgICAgIDB4NDAKLQkvKiBQMVBMTCBsb29wIGZpbHRlciBiYW5kd2l0aCBzZWxlY3Rpb24gKi8KKwkvKiBQMVBMTCBsb29wIGZpbHRlciBiYW5kd2lkdGggc2VsZWN0aW9uICovCiAjZGVmaW5lICAgICAgTTEwNjRfWERWSUNMS0NUUkxfUDFMT09QQldEVENUTCAgICAweDgwCiAjZGVmaW5lIE0xMDY0X1hDVVJDT0wwUkVECTB4MDgKICNkZWZpbmUgTTEwNjRfWENVUkNPTDBHUkVFTgkweDA5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9UaTMwMjYuYyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jCmluZGV4IDgzNWFhYWEuLjlhNDRjZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jCkBAIC0zODcsNyArMzg3LDcgQEAKIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YTUlTQ0NUUkxdID0gVFZQMzAyNl9YTUlTQ0NUUkxfREFDX1BVUCB8IFRWUDMwMjZfWE1JU0NDVFJMX0RBQ184QklUIHwgVFZQMzAyNl9YTUlTQ0NUUkxfUFNFTF9ESVMgfCBUVlAzMDI2X1hNSVNDQ1RSTF9QU0VMX0xPVzsKIAkJCWJyZWFrOwogCQljYXNlIDE2OgotCQkJLyogWExBVENIQ1RSTCBzaG91bGQgYmUgXzRfMSAvIF8yXzEuLi4gV2h5IGlzIG5vdD8gKF8yXzEgaXMgdXNlZCBldmVyeXRpbWUpICovCisJCQkvKiBYTEFUQ0hDVFJMIHNob3VsZCBiZSBfNF8xIC8gXzJfMS4uLiBXaHkgaXMgbm90PyAoXzJfMSBpcyB1c2VkIGV2ZXJ5IHRpbWUpICovCiAJCQlody0+REFDcmVnW1BPUzMwMjZfWFRSVUVDT0xPUkNUUkxdID0gKG1pbmZvLT5mYmNvbi52YXIuZ3JlZW4ubGVuZ3RoID09IDUpID8gKFRWUDMwMjZfWFRSVUVDT0xPUkNUUkxfRElSRUNUQ09MT1IgfCBUVlAzMDI2X1hUUlVFQ09MT1JDVFJMX09SR0JfMTU1NSkgOiAoVFZQMzAyNl9YVFJVRUNPTE9SQ1RSTF9ESVJFQ1RDT0xPUiB8IFRWUDMwMjZfWFRSVUVDT0xPUkNUUkxfUkdCXzU2NSk7CiAJCQlody0+REFDcmVnW1BPUzMwMjZfWE1VWENUUkxdID0gbXV4Y3RybCB8IFRWUDMwMjZfWE1VWENUUkxfUElYRUxfMTZCSVQ7CiAJCQlody0+REFDcmVnW1BPUzMwMjZfWENMS0NUUkxdID0gVFZQMzAyNl9YQ0xLQ1RSTF9TUkNfUExMIHwgVFZQMzAyNl9YQ0xLQ1RSTF9ESVYyOwpAQCAtMzk5LDcgKzM5OSw3IEBACiAJCQlody0+REFDcmVnW1BPUzMwMjZfWENMS0NUUkxdID0gVFZQMzAyNl9YQ0xLQ1RSTF9TUkNfUExMIHwgVFZQMzAyNl9YQ0xLQ1RSTF9ESVY0OwogCQkJYnJlYWs7CiAJCWNhc2UgMzI6Ci0JCQkvKiBYTEFUQ0hDVFJMIHNob3VsZCBiZSBfMl8xIC8gXzFfMS4uLiBXaHkgaXMgbm90PyAoXzJfMSBpcyB1c2VkIGV2ZXJ5dGltZSkgKi8KKwkJCS8qIFhMQVRDSENUUkwgc2hvdWxkIGJlIF8yXzEgLyBfMV8xLi4uIFdoeSBpcyBub3Q/IChfMl8xIGlzIHVzZWQgZXZlcnkgdGltZSkgKi8KIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YTVVYQ1RSTF0gPSBtdXhjdHJsIHwgVFZQMzAyNl9YTVVYQ1RSTF9QSVhFTF8zMkJJVDsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5jIGIvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5jCmluZGV4IDVjZTZmYTYuLjQ0YmY4ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuYworKysgYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmMKQEAgLTYyMSw3ICs2MjEsNyBAQAogCQl2YXItPnlvZmZzZXQgPSB2YXItPnlyZXNfdmlydHVhbCAtIHZhci0+eXJlczsKIAogCWlmIChicHAgPT0gMTYgJiYgdmFyLT5ncmVlbi5sZW5ndGggPT0gNSkgewotCQlicHAtLTsgLyogYW4gYXJ0aWZpY2FsIHZhbHVlIC0gMTUgKi8KKwkJYnBwLS07IC8qIGFuIGFydGlmaWNpYWwgdmFsdWUgLSAxNSAqLwogCX0KIAogCWZvciAocmdidCA9IHRhYmxlOyByZ2J0LT5icHAgPCBicHA7IHJnYnQrKyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmggYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmgKaW5kZXggZjk2YTQ3MS4uMTFlZDU3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5oCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuaApAQCAtMTIsNyArMTIsNyBAQAogI3VuZGVmIE1BVFJPWEZCX0RFQlVHCiAKIC8qIGhlYXZ5IGRlYnVnZ2luZzogKi8KLS8qIC0tIGxvZ3MgcHV0Y1tzXSwgc28gZXZlcnl0aW1lIGEgY2hhciBpcyBkaXNwbGF5ZWQsIGl0J3MgbG9nZ2VkICovCisvKiAtLSBsb2dzIHB1dGNbc10sIHNvIGV2ZXJ5IHRpbWUgYSBjaGFyIGlzIGRpc3BsYXllZCwgaXQncyBsb2dnZWQgKi8KICN1bmRlZiBNQVRST1hGQl9ERUJVR19IRUFWWQogCiAvKiBUaGlzIG9uZSBfY291bGRfIGNhdXNlIGluZmluaXRlIGxvb3BzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL251YzkwMGZiLmggYi9kcml2ZXJzL3ZpZGVvL251YzkwMGZiLmgKaW5kZXggNmMyM2FhMy4uYmM3YzkzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9udWM5MDBmYi5oCisrKyBiL2RyaXZlcnMvdmlkZW8vbnVjOTAwZmIuaApAQCAtOCw3ICs4LDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgQXV0aGVyOgorICogICBBdXRob3I6CiAgKiAgICAgICAgV2FuZyBRaWFuZyhydXJhbGl0eS5saW51eEBnbWFpbC5jb20pICAyMDA5LzEyLzE2CiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwL0tjb25maWcgYi9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZwppbmRleCAxNWU3ZjE5Li4xOTZmYTJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZworKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZwpAQCAtNjQsNyArNjQsNyBAQAogCWRlcGVuZHMgb24gRkJfT01BUCAmJiBGQl9PTUFQX0xDRENfRVhURVJOQUwKIAloZWxwCiAJICBTYXkgWSBoZXJlLCBpZiB5b3VyIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIGFyZSBjYXBhYmxlIG9mCi0JICBub3RpZnlpbmcgdGhlIGZyYW1lIGJ1ZmZlciBkcml2ZXIgd2hlbiBhIGNoYW5nZSBoYXMgb2NjdXJlZCBpbgorCSAgbm90aWZ5aW5nIHRoZSBmcmFtZSBidWZmZXIgZHJpdmVyIHdoZW4gYSBjaGFuZ2UgaGFzIG9jY3VycmVkIGluCiAJICB0aGUgZnJhbWUgYnVmZmVyIGNvbnRlbnQgYW5kIHRodXMgYSByZWxvYWQgb2YgdGhlIGltYWdlIGRhdGEgdG8KIAkgIHRoZSBleHRlcm5hbCBmcmFtZSBidWZmZXIgaXMgcmVxdWlyZWQuIElmIHVuc3VyZSwgc2F5IE4uCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vb21hcDIvZHNzL2hkbWkuYyBiL2RyaXZlcnMvdmlkZW8vb21hcDIvZHNzL2hkbWkuYwppbmRleCAwZDQ0ZjA3Li5hOTgxZGVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL29tYXAyL2Rzcy9oZG1pLmMKKysrIGIvZHJpdmVycy92aWRlby9vbWFwMi9kc3MvaGRtaS5jCkBAIC01ODcsNyArNTg3LDcgQEAKIAlzdHJ1Y3QgaGRtaV9jbSBjbTsKIAlzdHJ1Y3Qgb21hcF92aWRlb190aW1pbmdzIGVkaWRfdGltaW5nczsKIAotCS8qIHNlYWNoIGJsb2NrIDAsIHRoZXJlIGFyZSA0IERURHMgYXJyYW5nZWQgaW4gcHJpb3JpdHkgb3JkZXIgKi8KKwkvKiBzZWFyY2ggYmxvY2sgMCwgdGhlcmUgYXJlIDQgRFREcyBhcnJhbmdlZCBpbiBwcmlvcml0eSBvcmRlciAqLwogCWZvciAoY291bnQgPSAwOyBjb3VudCA8IEVESURfU0laRV9CTE9DSzBfVElNSU5HX0RFU0NSSVBUT1I7IGNvdW50KyspIHsKIAkJY3VycmVudF9kZXNjcmlwdG9yX2FkZHJzID0KIAkJCUVESURfREVTQ1JJUFRPUl9CTE9DSzBfQUREUkVTUyArCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3B4YTN4eC1nY3UuYyBiL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jCmluZGV4IGNmNGJlYjkuLjAyODNjNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jCkBAIC0yNSw3ICsyNSw3IEBACiAKIC8qCiAgKiBXQVJOSU5HOiBUaGlzIGNvbnRyb2xsZXIgaXMgYXR0YWNoZWQgdG8gU3lzdGVtIEJ1cyAyIG9mIHRoZSBQWEEgd2hpY2gKLSAqIG5lZWRzIGl0cyBhcmJpdGVyIHRvIGJlIGVuYWJsZWQgZXhwbGljdGx5IChDS0VOQiAmIDE8PDkpLgorICogbmVlZHMgaXRzIGFyYml0ZXIgdG8gYmUgZW5hYmxlZCBleHBsaWNpdGx5IChDS0VOQiAmIDE8PDkpLgogICogVGhlcmUgaXMgY3VycmVudGx5IG5vIHdheSB0byBkbyB0aGlzIGZyb20gTGludXgsIHNvIHlvdSBuZWVkIHRvIHRlYWNoCiAgKiB5b3VyIGJvb3Rsb2FkZXIgZm9yIG5vdy4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zM2MtZmIuYyBiL2RyaXZlcnMvdmlkZW8vczNjLWZiLmMKaW5kZXggNjgxN2QxOC4uM2I2Y2RjYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vczNjLWZiLmMKKysrIGIvZHJpdmVycy92aWRlby9zM2MtZmIuYwpAQCAtNDgsNyArNDgsNyBAQAogI3VuZGVmIHdyaXRlbAogI2RlZmluZSB3cml0ZWwodiwgcikgZG8geyBcCiAJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiAlMDh4ID0+ICVwXG4iLCBfX2Z1bmNfXywgKHVuc2lnbmVkIGludCl2LCByKTsgXAotCV9fcmF3X3dyaXRlbCh2LCByKTsgfSB3aGlsZSgwKQorCV9fcmF3X3dyaXRlbCh2LCByKTsgfSB3aGlsZSAoMCkKICNlbmRpZiAvKiBGQl9TM0NfREVCVUdfUkVHV1JJVEUgKi8KIAogLyogaXJxX2ZsYWdzIGJpdHMgKi8KQEAgLTUxOCw3ICs1MTgsNyBAQAogCiAJCWRhdGEgPSBWSURUQ09OMl9MSU5FVkFMKHZhci0+eXJlcyAtIDEpIHwKIAkJICAgICAgIFZJRFRDT04yX0hPWlZBTCh2YXItPnhyZXMgLSAxKTsKLQkJd3JpdGVsKGRhdGEsIHJlZ3MgK3NmYi0+dmFyaWFudC52aWR0Y29uICsgOCApOworCQl3cml0ZWwoZGF0YSwgcmVncyArIHNmYi0+dmFyaWFudC52aWR0Y29uICsgOCk7CiAJfQogCiAJLyogd3JpdGUgdGhlIGJ1ZmZlciBhZGRyZXNzICovCkBAIC0xMzA0LDYgKzEzMDQsNyBAQAogCiBzdGF0aWMgaW50IF9fZGV2aW5pdCBzM2NfZmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKKwljb25zdCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2lkICpwbGF0aWQ7CiAJc3RydWN0IHMzY19mYl9kcml2ZXJkYXRhICpmYmRydjsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OwogCXN0cnVjdCBzM2NfZmJfcGxhdGRhdGEgKnBkOwpAQCAtMTMxMiw3ICsxMzEzLDggQEAKIAlpbnQgd2luOwogCWludCByZXQgPSAwOwogCi0JZmJkcnYgPSAoc3RydWN0IHMzY19mYl9kcml2ZXJkYXRhICopcGxhdGZvcm1fZ2V0X2RldmljZV9pZChwZGV2KS0+ZHJpdmVyX2RhdGE7CisJcGxhdGlkID0gcGxhdGZvcm1fZ2V0X2RldmljZV9pZChwZGV2KTsKKwlmYmRydiA9IChzdHJ1Y3QgczNjX2ZiX2RyaXZlcmRhdGEgKilwbGF0aWQtPmRyaXZlcl9kYXRhOwogCiAJaWYgKGZiZHJ2LT52YXJpYW50Lm5yX3dpbmRvd3MgPiBTM0NfRkJfTUFYX1dJTikgewogCQlkZXZfZXJyKGRldiwgInRvbyBtYW55IHdpbmRvd3MsIGNhbm5vdCBhdHRhY2hcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zM2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL3MzZmIuYwppbmRleCBkZGVkYWQ5Li5jNDQ4MmYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3MzZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3MzZmIuYwpAQCAtNzEsOSArNzEsOSBAQAogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHMzX25hbWVzW10gPSB7IlMzIFVua25vd24iLCAiUzMgVHJpbzMyIiwgIlMzIFRyaW82NCIsICJTMyBUcmlvNjRWKyIsCiAJCQkiUzMgVHJpbzY0VVYrIiwgIlMzIFRyaW82NFYyL0RYIiwgIlMzIFRyaW82NFYyL0dYIiwKLQkJCSJTMyBQbGF0by9QWCIsICJTMyBBdXJvcmE2NFZQIiwgIlMzIFZpcmdlIiwKKwkJCSJTMyBQbGF0by9QWCIsICJTMyBBdXJvcmE2NFYrIiwgIlMzIFZpcmdlIiwKIAkJCSJTMyBWaXJnZS9WWCIsICJTMyBWaXJnZS9EWCIsICJTMyBWaXJnZS9HWCIsCi0JCQkiUzMgVmlyZ2UvR1gyIiwgIlMzIFZpcmdlL0dYMlAiLCAiUzMgVmlyZ2UvR1gyUCIsCisJCQkiUzMgVmlyZ2UvR1gyIiwgIlMzIFZpcmdlL0dYMisiLCAiIiwKIAkJCSJTMyBUcmlvM0QvMVgiLCAiUzMgVHJpbzNELzJYIiwgIlMzIFRyaW8zRC8yWCIsCiAJCQkiUzMgVHJpbzNEIn07CiAKQEAgLTkwLDkgKzkwLDggQEAKICNkZWZpbmUgQ0hJUF85ODhfVklSR0VfVlgJMHgwQQogI2RlZmluZSBDSElQXzM3NV9WSVJHRV9EWAkweDBCCiAjZGVmaW5lIENISVBfMzg1X1ZJUkdFX0dYCTB4MEMKLSNkZWZpbmUgQ0hJUF8zNTZfVklSR0VfR1gyCTB4MEQKLSNkZWZpbmUgQ0hJUF8zNTdfVklSR0VfR1gyUAkweDBFCi0jZGVmaW5lIENISVBfMzU5X1ZJUkdFX0dYMlAJMHgwRgorI2RlZmluZSBDSElQXzM1N19WSVJHRV9HWDIJMHgwRAorI2RlZmluZSBDSElQXzM1OV9WSVJHRV9HWDJQCTB4MEUKICNkZWZpbmUgQ0hJUF8zNjBfVFJJTzNEXzFYCTB4MTAKICNkZWZpbmUgQ0hJUF8zNjJfVFJJTzNEXzJYCTB4MTEKICNkZWZpbmUgQ0hJUF8zNjhfVFJJTzNEXzJYCTB4MTIKQEAgLTM1OSw3ICszNTgsOSBAQAogCXZnYV93KHBhci0+c3RhdGUudmdhYmFzZSwgVkdBX01JU19XLCByZWd2YWwgfCBWR0FfTUlTX0VOQl9QTExfTE9BRCk7CiAKIAkvKiBTZXQgUzMgY2xvY2sgcmVnaXN0ZXJzICovCi0JaWYgKHBhci0+Y2hpcCA9PSBDSElQXzM2MF9UUklPM0RfMVggfHwKKwlpZiAocGFyLT5jaGlwID09IENISVBfMzU3X1ZJUkdFX0dYMiB8fAorCSAgICBwYXItPmNoaXAgPT0gQ0hJUF8zNTlfVklSR0VfR1gyUCB8fAorCSAgICBwYXItPmNoaXAgPT0gQ0hJUF8zNjBfVFJJTzNEXzFYIHx8CiAJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM2Ml9UUklPM0RfMlggfHwKIAkgICAgcGFyLT5jaGlwID09IENISVBfMzY4X1RSSU8zRF8yWCkgewogCQl2Z2Ffd3NlcShwYXItPnN0YXRlLnZnYWJhc2UsIDB4MTIsIChuIC0gMikgfCAoKHIgJiAzKSA8PCA2KSk7CS8qIG4gYW5kIHR3byBiaXRzIG9mIHIgKi8KQEAgLTU2MCw3ICs1NjEsOSBAQAogCXByX2RlYnVnKCJmYiVkOiBvZmZzZXQgcmVnaXN0ZXIgICAgICAgOiAlZFxuIiwgaW5mby0+bm9kZSwgb2Zmc2V0X3ZhbHVlKTsKIAlzdmdhX3djcnRfbXVsdGkocGFyLT5zdGF0ZS52Z2FiYXNlLCBzM19vZmZzZXRfcmVncywgb2Zmc2V0X3ZhbHVlKTsKIAotCWlmIChwYXItPmNoaXAgIT0gQ0hJUF8zNjBfVFJJTzNEXzFYICYmCisJaWYgKHBhci0+Y2hpcCAhPSBDSElQXzM1N19WSVJHRV9HWDIgJiYKKwkgICAgcGFyLT5jaGlwICE9IENISVBfMzU5X1ZJUkdFX0dYMlAgJiYKKwkgICAgcGFyLT5jaGlwICE9IENISVBfMzYwX1RSSU8zRF8xWCAmJgogCSAgICBwYXItPmNoaXAgIT0gQ0hJUF8zNjJfVFJJTzNEXzJYICYmCiAJICAgIHBhci0+Y2hpcCAhPSBDSElQXzM2OF9UUklPM0RfMlgpIHsKIAkJdmdhX3djcnQocGFyLT5zdGF0ZS52Z2FiYXNlLCAweDU0LCAweDE4KTsgLyogTSBwYXJhbWV0ZXIgKi8KQEAgLTYwNCw3ICs2MDcsOSBAQAogCQl2Z2Ffd2NydChwYXItPnN0YXRlLnZnYWJhc2UsIDB4NjYsIDB4OTApOwogCX0KIAotCWlmIChwYXItPmNoaXAgPT0gQ0hJUF8zNjBfVFJJTzNEXzFYIHx8CisJaWYgKHBhci0+Y2hpcCA9PSBDSElQXzM1N19WSVJHRV9HWDIgfHwKKwkgICAgcGFyLT5jaGlwID09IENISVBfMzU5X1ZJUkdFX0dYMlAgfHwKKwkgICAgcGFyLT5jaGlwID09IENISVBfMzYwX1RSSU8zRF8xWCB8fAogCSAgICBwYXItPmNoaXAgPT0gQ0hJUF8zNjJfVFJJTzNEXzJYIHx8CiAJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM2OF9UUklPM0RfMlggfHwKIAkgICAgcGFyLT5jaGlwID09IENISVBfMzY1X1RSSU8zRCAgICB8fApAQCAtNjE3LDggKzYyMiw3IEBACiAJCXZnYV93Y3J0KHBhci0+c3RhdGUudmdhYmFzZSwgMHg2NiwgMHg4MSk7CiAJfQogCi0JaWYgKHBhci0+Y2hpcCA9PSBDSElQXzM1Nl9WSVJHRV9HWDIgIHx8Ci0JICAgIHBhci0+Y2hpcCA9PSBDSElQXzM1N19WSVJHRV9HWDJQIHx8CisJaWYgKHBhci0+Y2hpcCA9PSBDSElQXzM1N19WSVJHRV9HWDIgIHx8CiAJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM1OV9WSVJHRV9HWDJQIHx8CiAJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM2MF9UUklPM0RfMVggfHwKIAkgICAgcGFyLT5jaGlwID09IENISVBfMzYyX1RSSU8zRF8yWCB8fApAQCAtNjc0LDYgKzY3OCw4IEBACiAJCXByX2RlYnVnKCJmYiVkOiA4IGJpdCBwc2V1ZG9jb2xvclxuIiwgaW5mby0+bm9kZSk7CiAJCXN2Z2Ffd2NydF9tYXNrKHBhci0+c3RhdGUudmdhYmFzZSwgMHg1MCwgMHgwMCwgMHgzMCk7CiAJCWlmIChpbmZvLT52YXIucGl4Y2xvY2sgPiAyMDAwMCB8fAorCQkgICAgcGFyLT5jaGlwID09IENISVBfMzU3X1ZJUkdFX0dYMiB8fAorCQkgICAgcGFyLT5jaGlwID09IENISVBfMzU5X1ZJUkdFX0dYMlAgfHwKIAkJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM2MF9UUklPM0RfMVggfHwKIAkJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM2Ml9UUklPM0RfMlggfHwKIAkJICAgIHBhci0+Y2hpcCA9PSBDSElQXzM2OF9UUklPM0RfMlgpCkBAIC03MDIsNyArNzA4LDkgQEAKIAkJfSBlbHNlIHsKIAkJCXN2Z2Ffd2NydF9tYXNrKHBhci0+c3RhdGUudmdhYmFzZSwgMHg1MCwgMHgxMCwgMHgzMCk7CiAJCQlzdmdhX3djcnRfbWFzayhwYXItPnN0YXRlLnZnYWJhc2UsIDB4NjcsIDB4MzAsIDB4RjApOwotCQkJaWYgKHBhci0+Y2hpcCAhPSBDSElQXzM2MF9UUklPM0RfMVggJiYKKwkJCWlmIChwYXItPmNoaXAgIT0gQ0hJUF8zNTdfVklSR0VfR1gyICYmCisJCQkgICAgcGFyLT5jaGlwICE9IENISVBfMzU5X1ZJUkdFX0dYMlAgJiYKKwkJCSAgICBwYXItPmNoaXAgIT0gQ0hJUF8zNjBfVFJJTzNEXzFYICYmCiAJCQkgICAgcGFyLT5jaGlwICE9IENISVBfMzYyX1RSSU8zRF8yWCAmJgogCQkJICAgIHBhci0+Y2hpcCAhPSBDSElQXzM2OF9UUklPM0RfMlgpCiAJCQkJaG11bCA9IDI7CkBAIC03MjcsNyArNzM1LDkgQEAKIAkJfSBlbHNlIHsKIAkJCXN2Z2Ffd2NydF9tYXNrKHBhci0+c3RhdGUudmdhYmFzZSwgMHg1MCwgMHgxMCwgMHgzMCk7CiAJCQlzdmdhX3djcnRfbWFzayhwYXItPnN0YXRlLnZnYWJhc2UsIDB4NjcsIDB4NTAsIDB4RjApOwotCQkJaWYgKHBhci0+Y2hpcCAhPSBDSElQXzM2MF9UUklPM0RfMVggJiYKKwkJCWlmIChwYXItPmNoaXAgIT0gQ0hJUF8zNTdfVklSR0VfR1gyICYmCisJCQkgICAgcGFyLT5jaGlwICE9IENISVBfMzU5X1ZJUkdFX0dYMlAgJiYKKwkJCSAgICBwYXItPmNoaXAgIT0gQ0hJUF8zNjBfVFJJTzNEXzFYICYmCiAJCQkgICAgcGFyLT5jaGlwICE9IENISVBfMzYyX1RSSU8zRF8yWCAmJgogCQkJICAgIHBhci0+Y2hpcCAhPSBDSElQXzM2OF9UUklPM0RfMlgpCiAJCQkJaG11bCA9IDI7CkBAIC0xMDY5LDYgKzEwNzksMTYgQEAKIAkJCWluZm8tPnNjcmVlbl9zaXplID0gMiA8PCAyMDsKIAkJCWJyZWFrOwogCQl9CisJfSBlbHNlIGlmIChwYXItPmNoaXAgPT0gQ0hJUF8zNTdfVklSR0VfR1gyIHx8CisJCSAgIHBhci0+Y2hpcCA9PSBDSElQXzM1OV9WSVJHRV9HWDJQKSB7CisJCXN3aXRjaCAoKHJlZ3ZhbCAmIDB4QzApID4+IDYpIHsKKwkJY2FzZSAxOiAvKiA0TUIgKi8KKwkJCWluZm8tPnNjcmVlbl9zaXplID0gNCA8PCAyMDsKKwkJCWJyZWFrOworCQljYXNlIDM6IC8qIDJNQiAqLworCQkJaW5mby0+c2NyZWVuX3NpemUgPSAyIDw8IDIwOworCQkJYnJlYWs7CisJCX0KIAl9IGVsc2UKIAkJaW5mby0+c2NyZWVuX3NpemUgPSBzM19tZW1zaXplc1tyZWd2YWwgPj4gNV0gPDwgMTA7CiAJaW5mby0+Zml4LnNtZW1fbGVuID0gaW5mby0+c2NyZWVuX3NpemU7CkBAIC0xMjY4LDggKzEyODgsOCBAQAogCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUzMsIDB4NTYzMSksIC5kcml2ZXJfZGF0YSA9IENISVBfMzI1X1ZJUkdFfSwKIAl7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1MzLCAweDg4M0QpLCAuZHJpdmVyX2RhdGEgPSBDSElQXzk4OF9WSVJHRV9WWH0sCiAJe1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9TMywgMHg4QTAxKSwgLmRyaXZlcl9kYXRhID0gQ0hJUF9YWFhfVklSR0VfRFhHWH0sCi0Je1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9TMywgMHg4QTEwKSwgLmRyaXZlcl9kYXRhID0gQ0hJUF8zNTZfVklSR0VfR1gyfSwKLQl7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1MzLCAweDhBMTEpLCAuZHJpdmVyX2RhdGEgPSBDSElQXzM1N19WSVJHRV9HWDJQfSwKKwl7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX1MzLCAweDhBMTApLCAuZHJpdmVyX2RhdGEgPSBDSElQXzM1N19WSVJHRV9HWDJ9LAorCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUzMsIDB4OEExMSksIC5kcml2ZXJfZGF0YSA9IENISVBfMzU5X1ZJUkdFX0dYMlB9LAogCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUzMsIDB4OEExMiksIC5kcml2ZXJfZGF0YSA9IENISVBfMzU5X1ZJUkdFX0dYMlB9LAogCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfUzMsIDB4OEExMyksIC5kcml2ZXJfZGF0YSA9IENISVBfMzZYX1RSSU8zRF8xWF8yWH0sCiAJe1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9TMywgMHg4OTA0KSwgLmRyaXZlcl9kYXRhID0gQ0hJUF8zNjVfVFJJTzNEfSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiLWkyYy5jIGIvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmItaTJjLmMKaW5kZXggYjE2ZTYxMy4uYmI3MWZlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmItaTJjLmMKKysrIGIvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmItaTJjLmMKQEAgLTE1OSw4ICsxNTksNyBAQAogCQllbHNlCiAJCQlkZXZfd2FybigmY2hhbi0+cGFyLT5wY2lkZXYtPmRldiwKIAkJCQkgIkZhaWxlZCB0byByZWdpc3RlciBJMkMgYnVzICVzLlxuIiwgbmFtZSk7Ci0JfSBlbHNlCi0JCWNoYW4tPnBhciA9IE5VTEw7CisJfQogCiAJcmV0dXJuIHJjOwogfQpAQCAtMTcwLDkgKzE2OSw4IEBACiAJc3RydWN0IHNhdmFnZWZiX3BhciAqcGFyID0gaW5mby0+cGFyOwogCXBhci0+Y2hhbi5wYXIJPSBwYXI7CiAKLQlzd2l0Y2goaW5mby0+Zml4LmFjY2VsKSB7Ci0JY2FzZSBGQl9BQ0NFTF9QUk9TQVZBR0VfRERSSzoKLQljYXNlIEZCX0FDQ0VMX1BST1NBVkFHRV9QTToKKwlzd2l0Y2ggKHBhci0+Y2hpcCkgeworCWNhc2UgUzNfUFJPU0FWQUdFOgogCQlwYXItPmNoYW4ucmVnICAgICAgICAgPSBDUl9TRVJJQUwyOwogCQlwYXItPmNoYW4uaW9hZGRyICAgICAgPSBwYXItPm1taW8udmJhc2U7CiAJCXBhci0+Y2hhbi5hbGdvLnNldHNkYSA9IHByb3NhdmFnZV9ncGlvX3NldHNkYTsKQEAgLTE4MCw3ICsxNzgsNyBAQAogCQlwYXItPmNoYW4uYWxnby5nZXRzZGEgPSBwcm9zYXZhZ2VfZ3Bpb19nZXRzZGE7CiAJCXBhci0+Y2hhbi5hbGdvLmdldHNjbCA9IHByb3NhdmFnZV9ncGlvX2dldHNjbDsKIAkJYnJlYWs7Ci0JY2FzZSBGQl9BQ0NFTF9TQVZBR0U0OgorCWNhc2UgUzNfU0FWQUdFNDoKIAkJcGFyLT5jaGFuLnJlZyA9IENSX1NFUklBTDE7CiAJCWlmIChwYXItPnBjaWRldi0+cmV2aXNpb24gPiAxICYmICEoVkdBckNSKDB4YTYsIHBhcikgJiAweDQwKSkKIAkJCXBhci0+Y2hhbi5yZWcgPSBDUl9TRVJJQUwyOwpAQCAtMTkwLDggKzE4OCw4IEBACiAJCXBhci0+Y2hhbi5hbGdvLmdldHNkYSA9IHByb3NhdmFnZV9ncGlvX2dldHNkYTsKIAkJcGFyLT5jaGFuLmFsZ28uZ2V0c2NsID0gcHJvc2F2YWdlX2dwaW9fZ2V0c2NsOwogCQlicmVhazsKLQljYXNlIEZCX0FDQ0VMX1NBVkFHRTIwMDA6Ci0JCXBhci0+Y2hhbi5yZWcgICAgICAgICA9IDB4ZmYyMDsKKwljYXNlIFMzX1NBVkFHRTIwMDA6CisJCXBhci0+Y2hhbi5yZWcgICAgICAgICA9IE1NX1NFUklBTDE7CiAJCXBhci0+Y2hhbi5pb2FkZHIgICAgICA9IHBhci0+bW1pby52YmFzZTsKIAkJcGFyLT5jaGFuLmFsZ28uc2V0c2RhID0gc2F2YWdlNF9ncGlvX3NldHNkYTsKIAkJcGFyLT5jaGFuLmFsZ28uc2V0c2NsID0gc2F2YWdlNF9ncGlvX3NldHNjbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiLmggYi9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYi5oCmluZGV4IGU0YzNmMjEuLjRlOTQ5MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiLmgKKysrIGIvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmIuaApAQCAtMTUzLDcgKzE1Myw3IEBACiAJdW5zaWduZWQgY2hhciBDUlRDWzI1XTsgICAgICAgLyogQ3J0YyBDb250cm9sbGVyICovCiAJdW5zaWduZWQgY2hhciBTZXF1ZW5jZXJbNV07ICAgLyogVmlkZW8gU2VxdWVuY2VyICovCiAJdW5zaWduZWQgY2hhciBHcmFwaGljc1s5XTsgICAgLyogVmlkZW8gR3JhcGhpY3MgKi8KLQl1bnNpZ25lZCBjaGFyIEF0dHJpYnV0ZVsyMV07ICAvKiBWaWRlbyBBdHJpYnV0ZSAqLworCXVuc2lnbmVkIGNoYXIgQXR0cmlidXRlWzIxXTsgIC8qIFZpZGVvIEF0dHJpYnV0ZSAqLwogCiAJdW5zaWduZWQgaW50IG1vZGUsIHJlZnJlc2g7CiAJdW5zaWduZWQgY2hhciBTUjA4LCBTUjBFLCBTUjBGOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmJfZHJpdmVyLmMgYi9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYl9kcml2ZXIuYwppbmRleCA0ODc5MTFlLi5hMmRjMWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYl9kcml2ZXIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYl9kcml2ZXIuYwpAQCAtMzg1LDcgKzM4NSw3IEBACiAJQkNJX1NFTkQoR2xvYmFsQml0bWFwRGVzY3JpcHRvcik7CiAKIAkvKgotCSAqIEkgZG9uJ3Qga25vdyB3aHksIHNlbmRpbmcgdGhpcyB0d2ljZSBmaXhlcyB0aGUgaW50aWFsIGJsYWNrIHNjcmVlbiwKKwkgKiBJIGRvbid0IGtub3cgd2h5LCBzZW5kaW5nIHRoaXMgdHdpY2UgZml4ZXMgdGhlIGluaXRpYWwgYmxhY2sgc2NyZWVuLAogCSAqIHByZXZlbnRzIFggZnJvbSBjcmFzaGluZyBhdCBsZWFzdCBpbiBUb3NoaWJhIGxhcHRvcHMgd2l0aCBTYXZhZ2VJWC4KIAkgKiAtLVRvbnkKIAkgKi8KQEAgLTIyMTEsNyArMjIxMSw3IEBACiAJCWdvdG8gZmFpbGVkX21taW87CiAKIAl2aWRlb19sZW4gPSBzYXZhZ2VfaW5pdF9odyhwYXIpOwotCS8qIEZJWE1FOiBjYW50IGJlIG5lZ2F0aXZlICovCisJLyogRklYTUU6IGNhbid0IGJlIG5lZ2F0aXZlICovCiAJaWYgKHZpZGVvX2xlbiA8IDApIHsKIAkJZXJyID0gdmlkZW9fbGVuOwogCQlnb3RvIGZhaWxlZF9tbWlvOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zaF9tb2JpbGVfbGNkY2ZiLmMgYi9kcml2ZXJzL3ZpZGVvL3NoX21vYmlsZV9sY2RjZmIuYwppbmRleCA3NTc2NjViLi45YmNjNjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3NoX21vYmlsZV9sY2RjZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3NoX21vYmlsZV9sY2RjZmIuYwpAQCAtNjQzLDcgKzY0Myw3IEBACiAJCQljb250aW51ZTsKIAogCQlib2FyZF9jZmcgPSAmY2gtPmNmZy5ib2FyZF9jZmc7Ci0JCWlmICh0cnlfbW9kdWxlX2dldChib2FyZF9jZmctPm93bmVyKSAmJiBib2FyZF9jZmctPmRpc3BsYXlfb24pIHsKKwkJaWYgKGJvYXJkX2NmZy0+ZGlzcGxheV9vbiAmJiB0cnlfbW9kdWxlX2dldChib2FyZF9jZmctPm93bmVyKSkgewogCQkJYm9hcmRfY2ZnLT5kaXNwbGF5X29uKGJvYXJkX2NmZy0+Ym9hcmRfZGF0YSwgY2gtPmluZm8pOwogCQkJbW9kdWxlX3B1dChib2FyZF9jZmctPm93bmVyKTsKIAkJfQpAQCAtNjg4LDcgKzY4OCw3IEBACiAJCX0KIAogCQlib2FyZF9jZmcgPSAmY2gtPmNmZy5ib2FyZF9jZmc7Ci0JCWlmICh0cnlfbW9kdWxlX2dldChib2FyZF9jZmctPm93bmVyKSAmJiBib2FyZF9jZmctPmRpc3BsYXlfb2ZmKSB7CisJCWlmIChib2FyZF9jZmctPmRpc3BsYXlfb2ZmICYmIHRyeV9tb2R1bGVfZ2V0KGJvYXJkX2NmZy0+b3duZXIpKSB7CiAJCQlib2FyZF9jZmctPmRpc3BsYXlfb2ZmKGJvYXJkX2NmZy0+Ym9hcmRfZGF0YSk7CiAJCQltb2R1bGVfcHV0KGJvYXJkX2NmZy0+b3duZXIpOwogCQl9CkBAIC0xMDMyLDYgKzEwMzIsNDkgQEAKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIFNjcmVlbiBibGFua2luZy4gQmVoYXZpb3IgaXMgYXMgZm9sbG93czoKKyAqIEZCX0JMQU5LX1VOQkxBTks6IHNjcmVlbiB1bmJsYW5rZWQsIGNsb2NrcyBlbmFibGVkCisgKiBGQl9CTEFOS19OT1JNQUw6IHNjcmVlbiBibGFua2VkLCBjbG9ja3MgZW5hYmxlZAorICogRkJfQkxBTktfVlNZTkMsCisgKiBGQl9CTEFOS19IU1lOQywKKyAqIEZCX0JMQU5LX1BPV0VST0ZGOiBzY3JlZW4gYmxhbmtlZCwgY2xvY2tzIGRpc2FibGVkCisgKi8KK3N0YXRpYyBpbnQgc2hfbW9iaWxlX2xjZGNfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3Qgc2hfbW9iaWxlX2xjZGNfY2hhbiAqY2ggPSBpbmZvLT5wYXI7CisJc3RydWN0IHNoX21vYmlsZV9sY2RjX3ByaXYgKnAgPSBjaC0+bGNkYzsKKworCS8qIGJsYW5rIHRoZSBzY3JlZW4/ICovCisJaWYgKGJsYW5rID4gRkJfQkxBTktfVU5CTEFOSyAmJiBjaC0+Ymxhbmtfc3RhdHVzID09IEZCX0JMQU5LX1VOQkxBTkspIHsKKwkJc3RydWN0IGZiX2ZpbGxyZWN0IHJlY3QgPSB7CisJCQkud2lkdGggPSBpbmZvLT52YXIueHJlcywKKwkJCS5oZWlnaHQgPSBpbmZvLT52YXIueXJlcywKKwkJfTsKKwkJc2hfbW9iaWxlX2xjZGNfZmlsbHJlY3QoaW5mbywgJnJlY3QpOworCX0KKwkvKiB0dXJuIGNsb2NrcyBvbj8gKi8KKwlpZiAoYmxhbmsgPD0gRkJfQkxBTktfTk9STUFMICYmIGNoLT5ibGFua19zdGF0dXMgPiBGQl9CTEFOS19OT1JNQUwpIHsKKwkJc2hfbW9iaWxlX2xjZGNfY2xrX29uKHApOworCX0KKwkvKiB0dXJuIGNsb2NrcyBvZmY/ICovCisJaWYgKGJsYW5rID4gRkJfQkxBTktfTk9STUFMICYmIGNoLT5ibGFua19zdGF0dXMgPD0gRkJfQkxBTktfTk9STUFMKSB7CisJCS8qIG1ha2Ugc3VyZSB0aGUgc2NyZWVuIGlzIHVwZGF0ZWQgd2l0aCB0aGUgYmxhY2sgZmlsbCBiZWZvcmUKKwkJICogc3dpdGNoaW5nIHRoZSBjbG9ja3Mgb2ZmLiBvbmUgdnN5bmMgaXMgbm90IGVub3VnaCBzaW5jZQorCQkgKiBibGFua2luZyBtYXkgb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIHJlZnJlc2guIGRlZmVycmVkIGlvCisJCSAqIG1vZGUgd2lsbCByZWVuYWJsZSB0aGUgY2xvY2tzIGFuZCB1cGRhdGUgdGhlIHNjcmVlbiBpbiB0aW1lLAorCQkgKiBzbyBpdCBkb2VzIG5vdCBuZWVkIHRoaXMuICovCisJCWlmICghaW5mby0+ZmJkZWZpbykgeworCQkJc2hfbW9iaWxlX3dhaXRfZm9yX3ZzeW5jKGluZm8pOworCQkJc2hfbW9iaWxlX3dhaXRfZm9yX3ZzeW5jKGluZm8pOworCQl9CisJCXNoX21vYmlsZV9sY2RjX2Nsa19vZmYocCk7CisJfQorCisJY2gtPmJsYW5rX3N0YXR1cyA9IGJsYW5rOworCXJldHVybiAwOworfQorCiBzdGF0aWMgc3RydWN0IGZiX29wcyBzaF9tb2JpbGVfbGNkY19vcHMgPSB7CiAJLm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCiAJLmZiX3NldGNvbHJlZwk9IHNoX21vYmlsZV9sY2RjX3NldGNvbHJlZywKQEAgLTEwNDAsNiArMTA4Myw3IEBACiAJLmZiX2ZpbGxyZWN0CT0gc2hfbW9iaWxlX2xjZGNfZmlsbHJlY3QsCiAJLmZiX2NvcHlhcmVhCT0gc2hfbW9iaWxlX2xjZGNfY29weWFyZWEsCiAJLmZiX2ltYWdlYmxpdAk9IHNoX21vYmlsZV9sY2RjX2ltYWdlYmxpdCwKKwkuZmJfYmxhbmsJPSBzaF9tb2JpbGVfbGNkY19ibGFuaywKIAkuZmJfcGFuX2Rpc3BsYXkgPSBzaF9tb2JpbGVfZmJfcGFuX2Rpc3BsYXksCiAJLmZiX2lvY3RsICAgICAgID0gc2hfbW9iaWxlX2lvY3RsLAogCS5mYl9vcGVuCT0gc2hfbW9iaWxlX29wZW4sCkBAIC0xMjU0LDcgKzEyOTgsNyBAQAogCiAJc3dpdGNoKGFjdGlvbikgewogCWNhc2UgRkJfRVZFTlRfU1VTUEVORDoKLQkJaWYgKHRyeV9tb2R1bGVfZ2V0KGJvYXJkX2NmZy0+b3duZXIpICYmIGJvYXJkX2NmZy0+ZGlzcGxheV9vZmYpIHsKKwkJaWYgKGJvYXJkX2NmZy0+ZGlzcGxheV9vZmYgJiYgdHJ5X21vZHVsZV9nZXQoYm9hcmRfY2ZnLT5vd25lcikpIHsKIAkJCWJvYXJkX2NmZy0+ZGlzcGxheV9vZmYoYm9hcmRfY2ZnLT5ib2FyZF9kYXRhKTsKIAkJCW1vZHVsZV9wdXQoYm9hcmRfY2ZnLT5vd25lcik7CiAJCX0KQEAgLTEyNjcsNyArMTMxMSw3IEBACiAJCW11dGV4X3VubG9jaygmY2gtPm9wZW5fbG9jayk7CiAKIAkJLyogSERNSSBtdXN0IGJlIGVuYWJsZWQgYmVmb3JlIExDREMgY29uZmlndXJhdGlvbiAqLwotCQlpZiAodHJ5X21vZHVsZV9nZXQoYm9hcmRfY2ZnLT5vd25lcikgJiYgYm9hcmRfY2ZnLT5kaXNwbGF5X29uKSB7CisJCWlmIChib2FyZF9jZmctPmRpc3BsYXlfb24gJiYgdHJ5X21vZHVsZV9nZXQoYm9hcmRfY2ZnLT5vd25lcikpIHsKIAkJCWJvYXJkX2NmZy0+ZGlzcGxheV9vbihib2FyZF9jZmctPmJvYXJkX2RhdGEsIGluZm8pOwogCQkJbW9kdWxlX3B1dChib2FyZF9jZmctPm93bmVyKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zaF9tb2JpbGVfbGNkY2ZiLmggYi9kcml2ZXJzL3ZpZGVvL3NoX21vYmlsZV9sY2RjZmIuaAppbmRleCA0NjM1ZWVkLi5mMTZjYjU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3NoX21vYmlsZV9sY2RjZmIuaAorKysgYi9kcml2ZXJzL3ZpZGVvL3NoX21vYmlsZV9sY2RjZmIuaApAQCAtMzcsNiArMzcsNyBAQAogCXN0cnVjdCBjb21wbGV0aW9uIHZzeW5jX2NvbXBsZXRpb247CiAJc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIGRpc3BsYXlfdmFyOwogCWludCB1c2VfY291bnQ7CisJaW50IGJsYW5rX3N0YXR1czsKIAlzdHJ1Y3QgbXV0ZXggb3Blbl9sb2NrOwkJLyogcHJvdGVjdHMgdGhlIHVzZSBjb3VudGVyICovCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3NtNTAxZmIuYyBiL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jCmluZGV4IDQ2ZDFhNjQuLjU2ZWY2YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jCkBAIC0yNjUsNyArMjY1LDcgQEAKIAlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbnVtZXJhdG9yOwogfQogCi0vKiBzbTUwMWZiX2h6X3RvX3BzIGlzIGlkZW50aWNhbCB0byB0aGUgb3Bvc2l0ZSB0cmFuc2Zvcm0gKi8KKy8qIHNtNTAxZmJfaHpfdG9fcHMgaXMgaWRlbnRpY2FsIHRvIHRoZSBvcHBvc2l0ZSB0cmFuc2Zvcm0gKi8KIAogI2RlZmluZSBzbTUwMWZiX2h6X3RvX3BzKHgpIHNtNTAxZmJfcHNfdG9faHooeCkKIApAQCAtMTcxOSw3ICsxNzE5LDcgQEAKIAkgICAgICAgKGhlYWQgPT0gSEVBRF9DUlQpID8gJnNtNTAxZmJfb3BzX2NydCA6ICZzbTUwMWZiX29wc19wbmwsCiAJICAgICAgIHNpemVvZihzdHJ1Y3QgZmJfb3BzKSk7CiAKLQkvKiB1cGRhdGUgb3BzIGRlcGVuZGFudCBvbiB3aGF0IHdlJ3ZlIGJlZW4gcGFzc2VkICovCisJLyogdXBkYXRlIG9wcyBkZXBlbmRlbnQgb24gd2hhdCB3ZSd2ZSBiZWVuIHBhc3NlZCAqLwogCiAJaWYgKChwZC0+ZmxhZ3MgJiBTTTUwMUZCX0ZMQUdfVVNFX0hXQ1VSU09SKSA9PSAwKQogCQlwYXItPm9wcy5mYl9jdXJzb3IgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zc3RmYi5jIGIvZHJpdmVycy92aWRlby9zc3RmYi5jCmluZGV4IDJhYjcwNDEuLjIzMDFjMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc3N0ZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3NzdGZiLmMKQEAgLTIyMSw3ICsyMjEsNyBAQAogCXdoaWxlKDEpIHsKIAkJaWYgKF9fc3N0X3JlYWQodmJhc2UsIFNUQVRVUykgJiBTVEFUVVNfRkJJX0JVU1kpIHsKIAkJCWZfZGRkcHJpbnRrKCJzdGF0dXM6IGJ1c3lcbiIpOwotLyogRklYTUUgYmFzaWNhbHksIHRoaXMgaXMgYSBidXN5IHdhaXQuIG1heWJlIG5vdCB0aGF0IGdvb2QuIG9oIHdlbGw7CisvKiBGSVhNRSBiYXNpY2FsbHksIHRoaXMgaXMgYSBidXN5IHdhaXQuIG1heWJlIG5vdCB0aGF0IGdvb2QuIG9oIHdlbGw7CiAgKiB0aGlzIGlzIGEgc21hbGwgbG9vcCBhZnRlciBhbGwuCiAgKiBPciBtYXliZSB3ZSBzaG91bGQgdXNlIG1kZWxheSgpIG9yIHVkZWxheSgpIGhlcmUgaW5zdGVhZCA/ICovCiAJCQljb3VudCA9IDA7CkBAIC01MDEsNyArNTAxLDcgQEAKIAl9CiAKIAlpZiAoSVNfVk9PRE9PMihwYXIpKSB7Ci0JCS8qIHZvb2RvbzIgaGFzIDMyIHBpeGVsIHdpZGUgdGlsZXMgLCBCVVQgc3RhbmdlIHRoaW5ncworCQkvKiB2b29kb28yIGhhcyAzMiBwaXhlbCB3aWRlIHRpbGVzICwgQlVUIHN0cmFuZ2UgdGhpbmdzCiAJCSAgIGhhcHBlbiB3aXRoIG9kZCBudW1iZXIgb2YgdGlsZXMgKi8KIAkJcGFyLT50aWxlc19pbl9YID0gKGluZm8tPnZhci54cmVzICsgNjMgKSAvIDY0ICogMjsKIAl9IGVsc2UgewpAQCAtOTIwLDExICs5MjAsMTEgQEAKICAqIHdlIGdldCB0aGUgMXN0IGJ5dGUgKE0gdmFsdWUpIG9mIHByZXNldCBmMSxmNyBhbmQgZkIKICAqIHdoeSB0aG9zZSAzID8gbW1taC4uLiBmb3Igbm93LCBpJ2xsIGRvIGl0IHRoZSBnbGlkZSB3YXkuLi4KICAqIGFuZCBhc2sgcXVlc3Rpb25zIGxhdGVyLiBhbnl3YXksIGl0IHNlZW1zIHRoYXQgYWxsIHRoZSBmcmVxIHJlZ2lzdGVycyBhcmUKLSAqIHJlYWx5IGF0IHRoZWlyIGRlZmF1bHQgc3RhdGUgKGNmIHNwZWNzKSBzbyBpIGFzayBhZ2Fpbiwgd2h5IHRob3NlIDMgcmVncyA/CisgKiByZWFsbHkgYXQgdGhlaXIgZGVmYXVsdCBzdGF0ZSAoY2Ygc3BlY3MpIHNvIGkgYXNrIGFnYWluLCB3aHkgdGhvc2UgMyByZWdzID8KICAqIG1tbW1oLi4gaXQgc2VlbXMgdGhhdCdzIG11Y2ggbW9yZSB1Z2x5IHRoYW4gaSB0aG91Z2h0LiB3ZSB1c2UgZjAgYW5kIGZBIGZvcgogICogcGxsIHByb2dyYW1taW5nLCBzbyBpbiBmYWN0LCB3ZSAqaG9wZSogdGhhdCB0aGUgZjEsIGY3ICYgZkIgd29uJ3QgYmUKICAqIHRvdWNoZWQuLi4KLSAqIGlzIGl0IHJlYWx5IHNhZmUgPyBob3cgY2FuIGkgcmVzZXQgdGhpcyByYW1kYWMgPyBnZWVlLi4uCisgKiBpcyBpdCByZWFsbHkgc2FmZSA/IGhvdyBjYW4gaSByZXNldCB0aGlzIHJhbWRhYyA/IGdlZWUuLi4KICAqLwogc3RhdGljIGludCBfX2RldmluaXQgc3N0X2RldGVjdF9pY3Moc3RydWN0IGZiX2luZm8gKmluZm8pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3N0aWNvcmUuaCBiL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oCmluZGV4IDdmZTViZTQuLmFkZGY3YjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oCisrKyBiL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oCkBAIC03OSw3ICs3OSw3IEBACiAJIHU4IGN1cnJfbW9uOwkJCS8qIGN1cnJlbnQgbW9uaXRvciBjb25maWd1cmVkICovCiAJIHU4IGZyaWVuZGx5X2Jvb3Q7CQkvKiBpbiBmcmllbmRseSBib290IG1vZGUgKi8KIAlzMTYgcG93ZXI7CQkJLyogcG93ZXIgY2FsY3VsYXRpb24gKGluIFdhdHRzKSAqLwotCXMzMiBmcmVxX3JlZjsJCQkvKiBmcmVxdWVuY3kgcmVmcmVuY2UgKi8KKwlzMzIgZnJlcV9yZWY7CQkJLyogZnJlcXVlbmN5IHJlZmVyZW5jZSAqLwogCXUzMiBzdGlfbWVtX2FkZHI7CQkvKiBwb2ludGVyIHRvIGdsb2JhbCBzdGkgbWVtb3J5IChzaXplPXN0aV9tZW1fcmVxdWVzdCkgKi8KIAl1MzIgZnV0dXJlX3B0cjsgCQkvKiBwb2ludGVyIHRvIGZ1dHVyZSBkYXRhICovCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby90ZGZ4ZmIuYyBiL2RyaXZlcnMvdmlkZW8vdGRmeGZiLmMKaW5kZXggM2VlNWU2My4uYTk5Yjk5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby90ZGZ4ZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3RkZnhmYi5jCkBAIC04NzcsMTIgKzg3NywxMiBAQAogCWVsc2UKIAkJdGRmeF9yb3AgPSBUREZYX1JPUF9YT1I7CiAKLQkvKiBhc3VtZSBhbHdheXMgcmVjdC0+aGVpZ2h0IDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgcmVjdC0+aGVpZ2h0IDwgNDA5NiAqLwogCWlmIChkeSArIHJlY3QtPmhlaWdodCA+IDQwOTUpIHsKIAkJZHN0YmFzZSA9IHN0cmlkZSAqIGR5OwogCQlkeSA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyByZWN0LT53aWR0aCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIHJlY3QtPndpZHRoIDwgNDA5NiAqLwogCWlmIChkeCArIHJlY3QtPndpZHRoID4gNDA5NSkgewogCQlkc3RiYXNlICs9IGR4ICogYnBwID4+IDM7CiAJCWR4ID0gMDsKQEAgLTkxNSwyMiArOTE1LDIyIEBACiAJdTMyIGRzdGJhc2UgPSAwOwogCXUzMiBzcmNiYXNlID0gMDsKIAotCS8qIGFzdW1lIGFsd2F5cyBhcmVhLT5oZWlnaHQgPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyBhcmVhLT5oZWlnaHQgPCA0MDk2ICovCiAJaWYgKHN5ICsgYXJlYS0+aGVpZ2h0ID4gNDA5NSkgewogCQlzcmNiYXNlID0gc3RyaWRlICogc3k7CiAJCXN5ID0gMDsKIAl9Ci0JLyogYXN1bWUgYWx3YXlzIGFyZWEtPndpZHRoIDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgYXJlYS0+d2lkdGggPCA0MDk2ICovCiAJaWYgKHN4ICsgYXJlYS0+d2lkdGggPiA0MDk1KSB7CiAJCXNyY2Jhc2UgKz0gc3ggKiBicHAgPj4gMzsKIAkJc3ggPSAwOwogCX0KLQkvKiBhc3VtZSBhbHdheXMgYXJlYS0+aGVpZ2h0IDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgYXJlYS0+aGVpZ2h0IDwgNDA5NiAqLwogCWlmIChkeSArIGFyZWEtPmhlaWdodCA+IDQwOTUpIHsKIAkJZHN0YmFzZSA9IHN0cmlkZSAqIGR5OwogCQlkeSA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyBhcmVhLT53aWR0aCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIGFyZWEtPndpZHRoIDwgNDA5NiAqLwogCWlmIChkeCArIGFyZWEtPndpZHRoID4gNDA5NSkgewogCQlkc3RiYXNlICs9IGR4ICogYnBwID4+IDM7CiAJCWR4ID0gMDsKQEAgLTEwMDMsMTIgKzEwMDMsMTIgQEAKICNlbHNlCiAJc3JjZm10ID0gMHg0MDAwMDA7CiAjZW5kaWYKLQkvKiBhc3VtZSBhbHdheXMgaW1hZ2UtPmhlaWdodCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIGltYWdlLT5oZWlnaHQgPCA0MDk2ICovCiAJaWYgKGR5ICsgaW1hZ2UtPmhlaWdodCA+IDQwOTUpIHsKIAkJZHN0YmFzZSA9IHN0cmlkZSAqIGR5OwogCQlkeSA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyBpbWFnZS0+d2lkdGggPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyBpbWFnZS0+d2lkdGggPCA0MDk2ICovCiAJaWYgKGR4ICsgaW1hZ2UtPndpZHRoID4gNDA5NSkgewogCQlkc3RiYXNlICs9IGR4ICogYnBwID4+IDM7CiAJCWR4ID0gMDsKQEAgLTExMjQsNyArMTEyNCw3IEBACiAJCSAqIGxvd2VyIGhhbGYgKGxlYXN0IHNpZ25pZmljYW50IDY0IGJpdHMpIG9mIGEgMTI4IGJpdCB3b3JkCiAJCSAqIGFuZCBwYXR0ZXJuIDEgdGhlIHVwcGVyIGhhbGYuIElmIHlvdSBleGFtaW5lIHRoZSBkYXRhIG9mCiAJCSAqIHRoZSBjdXJzb3IgaW1hZ2UgdGhlIGdyYXBoaWNzIGNhcmQgdXNlcyB0aGVuIGZyb20gdGhlCi0JCSAqIGJlZ2luaW5nIHlvdSBzZWUgbGluZSBvbmUgb2YgcGF0dGVybiAwLCBsaW5lIG9uZSBvZgorCQkgKiBiZWdpbm5pbmcgeW91IHNlZSBsaW5lIG9uZSBvZiBwYXR0ZXJuIDAsIGxpbmUgb25lIG9mCiAJCSAqIHBhdHRlcm4gMSwgbGluZSB0d28gb2YgcGF0dGVybiAwLCBsaW5lIHR3byBvZiBwYXR0ZXJuIDEsCiAJCSAqIGV0YyBldGMuIFRoZSBsaW5lYXIgc3RyaWRlIGZvciB0aGUgY3Vyc29yIGlzIGFsd2F5cyAxNiBieXRlcwogCQkgKiAoMTI4IGJpdHMpIHdoaWNoIGlzIHRoZSBtYXhpbXVtIGN1cnNvciB3aWR0aCB0aW1lcyB0d28gZm9yCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3RtaW9mYi5jIGIvZHJpdmVycy92aWRlby90bWlvZmIuYwppbmRleCA5NzEwYmY4Li4wYzM0MWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3RtaW9mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdG1pb2ZiLmMKQEAgLTM1OSw3ICszNTksNyBAQAogewogCXN0cnVjdCB0bWlvZmJfcGFyICpwYXIgPSBpbmZvLT5wYXI7CiAJLyoKLQkgKiBUaGlzIGNvZGUgY2FuIGJlIGNhbGxlZCB3aGl0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLgorCSAqIFRoaXMgY29kZSBjYW4gYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC4KIAkgKiBTbyBpbnN0ZWFkIG9mIHJlbGF5aW5nIG9uIGlycSB0byB0cmlnZ2VyIHRoZSBldmVudCwKIAkgKiBwb2xsIHRoZSBzdGF0ZSB0aWxsIHRoZSBuZWNlc3NhcnkgY29tbWFuZCBpcyBleGVjdXRlZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdWRsZmIuYyBiL2RyaXZlcnMvdmlkZW8vdWRsZmIuYwppbmRleCAyYzgzNjRlLi42ODA0MWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3VkbGZiLmMKKysrIGIvZHJpdmVycy92aWRlby91ZGxmYi5jCkBAIC03NjksNyArNzY5LDcgQEAKIAogCQkvKgogCQkgKiBJZiB3ZSBoYXZlIGEgZGFtYWdlLWF3YXJlIGNsaWVudCwgdHVybiBmYl9kZWZpbyAib2ZmIgotCQkgKiBUbyBhdm9pZCBwZXJmIGltYWN0IG9mIHVuZWNlc3NhcnkgcGFnZSBmYXVsdCBoYW5kbGluZy4KKwkJICogVG8gYXZvaWQgcGVyZiBpbWFjdCBvZiB1bm5lY2Vzc2FyeSBwYWdlIGZhdWx0IGhhbmRsaW5nLgogCQkgKiBEb25lIGJ5IHJlc2V0dGluZyB0aGUgZGVsYXkgZm9yIHRoaXMgZmJfaW5mbyB0byBhIHZlcnkKIAkJICogbG9uZyBwZXJpb2QuIFBhZ2VzIHdpbGwgYmVjb21lIHdyaXRhYmxlIGFuZCBzdGF5IHRoYXQgd2F5LgogCQkgKiBSZXNldCB0byBub3JtYWwgdmFsdWUgd2hlbiBhbGwgY2xpZW50cyBoYXZlIGNsb3NlZCB0aGlzIGZiLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby92Z2ExNmZiLmMgYi9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYwppbmRleCAyOGNjYWI0Li41M2IyYzVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYwpAQCAtMTUyLDcgKzE1Miw3IEBACiB9CiAKIC8qIFNldCB0aGUgRW5hYmxlIFNldC9SZXNldCBSZWdpc3RlciBhbmQgcmV0dXJuIGl0cyBvbGQgdmFsdWUuICAKLSAgIFRoZSBjb2RlIGhlcmUgYWx3YXlzIHVzZXMgdmFsdWUgMHhmIGZvciB0aHNpIHJlZ2lzdGVyLiAqLworICAgVGhlIGNvZGUgaGVyZSBhbHdheXMgdXNlcyB2YWx1ZSAweGYgZm9yIHRoaXMgcmVnaXN0ZXIuICovCiBzdGF0aWMgaW5saW5lIGludCBzZXRzcihpbnQgc3IpCiB7CiAJaW50IG9sZHNyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby92aWEvY2hpcC5oIGIvZHJpdmVycy92aWRlby92aWEvY2hpcC5oCmluZGV4IDc4MWYzYWEuLjI5ZDcwMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmlhL2NoaXAuaAorKysgYi9kcml2ZXJzL3ZpZGVvL3ZpYS9jaGlwLmgKQEAgLTEzOSw3ICsxMzksNiBAQAogCiBzdHJ1Y3QgY3J0X3NldHRpbmdfaW5mb3JtYXRpb24gewogCWludCBpZ2FfcGF0aDsKLQlpbnQgcmVmcmVzaF9yYXRlOwogfTsKIAogc3RydWN0IHRtZHNfc2V0dGluZ19pbmZvcm1hdGlvbiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZpYS9ody5jIGIvZHJpdmVycy92aWRlby92aWEvaHcuYwppbmRleCA1NzI4ZmQ3Li5kYzRjNzc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZpYS9ody5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdmlhL2h3LmMKQEAgLTIwMDIsMTMgKzIwMDIsMTUgQEAKIAlpbnQgaTsKIAlpbnQgaW5kZXggPSAwOwogCWludCBoX2FkZHIsIHZfYWRkcjsKLQl1MzIgcGxsX0RfTiwgY2xvY2s7CisJdTMyIHBsbF9EX04sIGNsb2NrLCByZWZyZXNoID0gdmlhZmJfcmVmcmVzaDsKKworCWlmICh2aWFmYl9TQU1NX09OICYmIHNldF9pZ2EgPT0gSUdBMikKKwkJcmVmcmVzaCA9IHZpYWZiX3JlZnJlc2gxOwogCiAJZm9yIChpID0gMDsgaSA8IHZpZGVvX21vZGUtPm1vZGVfYXJyYXk7IGkrKykgewogCQlpbmRleCA9IGk7CiAKLQkJaWYgKGNydF90YWJsZVtpXS5yZWZyZXNoX3JhdGUgPT0gdmlhcGFyaW5mby0+Ci0JCQljcnRfc2V0dGluZ19pbmZvLT5yZWZyZXNoX3JhdGUpCisJCWlmIChjcnRfdGFibGVbaV0ucmVmcmVzaF9yYXRlID09IHJlZnJlc2gpCiAJCQlicmVhazsKIAl9CiAKQEAgLTIwMTksNyArMjAyMSw3IEBACiAJaWYgKCh2aWFmYl9MQ0RfT04gfCB2aWFmYl9EVklfT04pCiAJICAgICYmIHZpZGVvX21vZGUtPmNydGNbMF0uY3J0Yy5ob3JfYWRkciA9PSA2NDAKIAkgICAgJiYgdmlkZW9fbW9kZS0+Y3J0Y1swXS5jcnRjLnZlcl9hZGRyID09IDQ4MAotCSAgICAmJiB2aWFwYXJpbmZvLT5jcnRfc2V0dGluZ19pbmZvLT5yZWZyZXNoX3JhdGUgPT0gNjApIHsKKwkgICAgJiYgcmVmcmVzaCA9PSA2MCkgewogCQkvKiBUaGUgYm9yZGVyIGlzIDggcGl4ZWxzLiAqLwogCQljcnRfcmVnLmhvcl9ibGFua19zdGFydCA9IGNydF9yZWcuaG9yX2JsYW5rX3N0YXJ0IC0gODsKIApAQCAtMjA3MCw3ICsyMDcyLDYgQEAKIAlpbml0X2x2ZHNfY2hpcF9pbmZvKCk7CiAKIAl2aWFwYXJpbmZvLT5jcnRfc2V0dGluZ19pbmZvLT5pZ2FfcGF0aCA9IElHQTE7Ci0JdmlhcGFyaW5mby0+Y3J0X3NldHRpbmdfaW5mby0+cmVmcmVzaF9yYXRlID0gdmlhZmJfcmVmcmVzaDsKIAogCS8qU2V0IElHQSBwYXRoIGZvciBlYWNoIGRldmljZSAqLwogCXZpYWZiX3NldF9pZ2FfcGF0aCgpOwpAQCAtMjA4MywxMyArMjA4NCw5IEBACiAJCXZpYXBhcmluZm8tPmx2ZHNfc2V0dGluZ19pbmZvLT5sY2RfbW9kZTsKIH0KIAotdm9pZCB2aWFmYl91cGRhdGVfZGV2aWNlX3NldHRpbmcoaW50IGhyZXMsIGludCB2cmVzLAotCWludCBicHAsIGludCB2bW9kZV9yZWZyZXNoLCBpbnQgZmxhZykKK3ZvaWQgdmlhZmJfdXBkYXRlX2RldmljZV9zZXR0aW5nKGludCBocmVzLCBpbnQgdnJlcywgaW50IGJwcCwgaW50IGZsYWcpCiB7CiAJaWYgKGZsYWcgPT0gMCkgewotCQl2aWFwYXJpbmZvLT5jcnRfc2V0dGluZ19pbmZvLT5yZWZyZXNoX3JhdGUgPQotCQkJdm1vZGVfcmVmcmVzaDsKLQogCQl2aWFwYXJpbmZvLT50bWRzX3NldHRpbmdfaW5mby0+aF9hY3RpdmUgPSBocmVzOwogCQl2aWFwYXJpbmZvLT50bWRzX3NldHRpbmdfaW5mby0+dl9hY3RpdmUgPSB2cmVzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZpYS9ody5oIGIvZHJpdmVycy92aWRlby92aWEvaHcuaAppbmRleCA3Mjk1MjYzLi44ODU4NTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZpYS9ody5oCisrKyBiL2RyaXZlcnMvdmlkZW8vdmlhL2h3LmgKQEAgLTk0OSw4ICs5NDksNyBAQAogdm9pZCBfX2RldmluaXQgdmlhZmJfaW5pdF9kYWMoaW50IHNldF9pZ2EpOwogaW50IHZpYWZiX2dldF9waXhjbG9jayhpbnQgaHJlcywgaW50IHZyZXMsIGludCB2bW9kZV9yZWZyZXNoKTsKIGludCB2aWFmYl9nZXRfcmVmcmVzaChpbnQgaHJlcywgaW50IHZyZXMsIHUzMiBmbG9hdF9yZWZyZXNoKTsKLXZvaWQgdmlhZmJfdXBkYXRlX2RldmljZV9zZXR0aW5nKGludCBocmVzLCBpbnQgdnJlcywgaW50IGJwcCwKLQkJCSAgIGludCB2bW9kZV9yZWZyZXNoLCBpbnQgZmxhZyk7Cit2b2lkIHZpYWZiX3VwZGF0ZV9kZXZpY2Vfc2V0dGluZyhpbnQgaHJlcywgaW50IHZyZXMsIGludCBicHAsIGludCBmbGFnKTsKIAogdm9pZCB2aWFmYl9zZXRfaWdhX3BhdGgodm9pZCk7CiB2b2lkIHZpYWZiX3NldF9wcmltYXJ5X2NvbG9yX3JlZ2lzdGVyKHU4IGluZGV4LCB1OCByZWQsIHU4IGdyZWVuLCB1OCBibHVlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmMgYi9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5jCmluZGV4IGQwNWNjYjYuLjM1NDU4YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmMKKysrIGIvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuYwpAQCAtMTc0LDcgKzE3NCw3IEBACiAJfQogCiAJLyogSWYgYWRqdXN0IEdhbW1hIHZhbHVlIGluIFNBTU0sIGZpbGwgSUdBMSwKLQkgICBJR0EyIEdhbW1hIHRhYmxlIHNpbXVsdGFub3VzLiAqLworCSAgIElHQTIgR2FtbWEgdGFibGUgc2ltdWx0YW5lb3VzLiAqLwogCS8qIFN3aXRjaCB0byBJR0EyIEdhbW1hIFRhYmxlICovCiAJaWYgKChhY3RpdmVfZGV2aWNlX2Ftb3VudCA+IDEpICYmCiAJCSEoKHZpYXBhcmluZm8tPmNoaXBfaW5mby0+Z2Z4X2NoaXBfbmFtZSA9PQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuaCBiL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmgKaW5kZXggMTY3MGJhOC4uZjIzYmUxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuaAorKysgYi9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5oCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIF9fVklBVVRJTElUWV9IX18KICNkZWZpbmUgX19WSUFVVElMSVRZX0hfXwogCi0vKiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gZ2V0IGluZm9tYXRpb24gYWJvdXQgZGV2aWNlJ3Mgc3RhdGUgKi8KKy8qIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgZGV2aWNlJ3Mgc3RhdGUgKi8KIHZvaWQgdmlhZmJfZ2V0X2RldmljZV9zdXBwb3J0X3N0YXRlKHUzMiAqc3VwcG9ydF9zdGF0ZSk7CiB2b2lkIHZpYWZiX2dldF9kZXZpY2VfY29ubmVjdF9zdGF0ZSh1MzIgKmNvbm5lY3Rfc3RhdGUpOwogYm9vbCB2aWFmYl9sY2RfZ2V0X3N1cHBvcnRfZXhwYW5kX3N0YXRlKHUzMiB4cmVzLCB1MzIgeXJlcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFmYmRldi5jIGIvZHJpdmVycy92aWRlby92aWEvdmlhZmJkZXYuYwppbmRleCBmNTU1Yjg5Li5hNTQyYmVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFmYmRldi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYWZiZGV2LmMKQEAgLTE4MiwxMyArMTgyLDI0IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IGdldF92YXJfcmVmcmVzaChzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcikKK3sKKwl1MzIgaHRvdGFsLCB2dG90YWw7CisKKwlodG90YWwgPSB2YXItPmxlZnRfbWFyZ2luICsgdmFyLT54cmVzICsgdmFyLT5yaWdodF9tYXJnaW4KKwkJKyB2YXItPmhzeW5jX2xlbjsKKwl2dG90YWwgPSB2YXItPnVwcGVyX21hcmdpbiArIHZhci0+eXJlcyArIHZhci0+bG93ZXJfbWFyZ2luCisJCSsgdmFyLT52c3luY19sZW47CisJcmV0dXJuIFBJQ09TMktIWih2YXItPnBpeGNsb2NrKSAqIDEwMDAgLyAoaHRvdGFsICogdnRvdGFsKTsKK30KKwogc3RhdGljIGludCB2aWFmYl9jaGVja192YXIoc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAJc3RydWN0IGZiX2luZm8gKmluZm8pCiB7Ci0JaW50IGh0b3RhbCwgdnRvdGFsLCBkZXB0aDsKKwlpbnQgZGVwdGgsIHJlZnJlc2g7CiAJc3RydWN0IFZpZGVvTW9kZVRhYmxlICp2bW9kZV9lbnRyeTsKIAlzdHJ1Y3QgdmlhZmJfcGFyICpwcGFyID0gaW5mby0+cGFyOwotCXUzMiBsb25nX3JlZnJlc2gsIGxpbmU7CisJdTMyIGxpbmU7CiAKIAlERUJVR19NU0coS0VSTl9JTkZPICJ2aWFmYl9jaGVja192YXIhXG4iKTsKIAkvKiBTYW5pdHkgY2hlY2sgKi8KQEAgLTIzMSwxNyArMjQyLDExIEBACiAJLyogQmFzZWQgb24gdmFyIHBhc3NlZCBpbiB0byBjYWxjdWxhdGUgdGhlIHJlZnJlc2gsCiAJICogYmVjYXVzZSBvdXIgZHJpdmVyIHVzZSBzb21lIG1vZGVzIHNwZWNpYWwuCiAJICovCi0JaHRvdGFsID0gdmFyLT54cmVzICsgdmFyLT5sZWZ0X21hcmdpbiArCi0JdmFyLT5yaWdodF9tYXJnaW4gKyB2YXItPmhzeW5jX2xlbjsKLQl2dG90YWwgPSB2YXItPnlyZXMgKyB2YXItPnVwcGVyX21hcmdpbiArCi0JCXZhci0+bG93ZXJfbWFyZ2luICsgdmFyLT52c3luY19sZW47Ci0JbG9uZ19yZWZyZXNoID0gMTAwMDAwMDAwMFVMIC8gdmFyLT5waXhjbG9jayAqIDEwMDA7Ci0JbG9uZ19yZWZyZXNoIC89IChodG90YWwgKiB2dG90YWwpOwotCi0JdmlhZmJfcmVmcmVzaCA9IHZpYWZiX2dldF9yZWZyZXNoKHZhci0+eHJlcywgdmFyLT55cmVzLCBsb25nX3JlZnJlc2gpOworCXJlZnJlc2ggPSB2aWFmYl9nZXRfcmVmcmVzaCh2YXItPnhyZXMsIHZhci0+eXJlcywKKwkJZ2V0X3Zhcl9yZWZyZXNoKHZhcikpOwogCiAJLyogQWRqdXN0IHZhciBhY2NvcmRpbmcgdG8gb3VyIGRyaXZlcidzIG93biB0YWJsZSAqLwotCXZpYWZiX2ZpbGxfdmFyX3RpbWluZ19pbmZvKHZhciwgdmlhZmJfcmVmcmVzaCwgdm1vZGVfZW50cnkpOworCXZpYWZiX2ZpbGxfdmFyX3RpbWluZ19pbmZvKHZhciwgcmVmcmVzaCwgdm1vZGVfZW50cnkpOwogCWlmICh2YXItPmFjY2VsX2ZsYWdzICYgRkJfQUNDRUxGX1RFWFQgJiYKIAkJIXBwYXItPnNoYXJlZC0+dmRldi0+ZW5naW5lX21taW8pCiAJCXZhci0+YWNjZWxfZmxhZ3MgPSAwOwpAQCAtMjUzLDEyICsyNTgsMTMgQEAKIHsKIAlzdHJ1Y3QgdmlhZmJfcGFyICp2aWFwYXIgPSBpbmZvLT5wYXI7CiAJc3RydWN0IFZpZGVvTW9kZVRhYmxlICp2bW9kZV9lbnRyeSwgKnZtb2RlX2VudHJ5MSA9IE5VTEw7CisJaW50IHJlZnJlc2g7CiAJREVCVUdfTVNHKEtFUk5fSU5GTyAidmlhZmJfc2V0X3BhciFcbiIpOwogCiAJdmlhZmJfdXBkYXRlX2ZpeChpbmZvKTsKIAl2aWFwYXItPmRlcHRoID0gZmJfZ2V0X2NvbG9yX2RlcHRoKCZpbmZvLT52YXIsICZpbmZvLT5maXgpOwogCXZpYWZiX3VwZGF0ZV9kZXZpY2Vfc2V0dGluZyh2aWFmYmluZm8tPnZhci54cmVzLCB2aWFmYmluZm8tPnZhci55cmVzLAotCQl2aWFmYmluZm8tPnZhci5iaXRzX3Blcl9waXhlbCwgdmlhZmJfcmVmcmVzaCwgMCk7CisJCXZpYWZiaW5mby0+dmFyLmJpdHNfcGVyX3BpeGVsLCAwKTsKIAogCXZtb2RlX2VudHJ5ID0gdmlhZmJfZ2V0X21vZGUodmlhZmJpbmZvLT52YXIueHJlcywgdmlhZmJpbmZvLT52YXIueXJlcyk7CiAJaWYgKHZpYWZiX2R1YWxfZmIpIHsKQEAgLTI2Niw3ICsyNzIsNyBAQAogCQkJdmlhZmJpbmZvMS0+dmFyLnlyZXMpOwogCQl2aWFmYl91cGRhdGVfZGV2aWNlX3NldHRpbmcodmlhZmJpbmZvMS0+dmFyLnhyZXMsCiAJCQl2aWFmYmluZm8xLT52YXIueXJlcywgdmlhZmJpbmZvMS0+dmFyLmJpdHNfcGVyX3BpeGVsLAotCQkJdmlhZmJfcmVmcmVzaDEsIDEpOworCQkJMSk7CiAJfSBlbHNlIGlmICh2aWFmYl9TQU1NX09OID09IDEpIHsKIAkJREVCVUdfTVNHKEtFUk5fSU5GTwogCQkidmlhZmJfc2Vjb25kX3hyZXMgPSAlZCwgdmlhZmJfc2Vjb25kX3lyZXMgPSAlZCwgYnBwID0gJWRcbiIsCkBAIC0yNzUsMTQgKzI4MSwxOSBAQAogCQkJdmlhZmJfc2Vjb25kX3lyZXMpOwogCiAJCXZpYWZiX3VwZGF0ZV9kZXZpY2Vfc2V0dGluZyh2aWFmYl9zZWNvbmRfeHJlcywKLQkJCXZpYWZiX3NlY29uZF95cmVzLCB2aWFmYl9icHAxLCB2aWFmYl9yZWZyZXNoMSwgMSk7CisJCQl2aWFmYl9zZWNvbmRfeXJlcywgdmlhZmJfYnBwMSwgMSk7CiAJfQogCisJcmVmcmVzaCA9IHZpYWZiX2dldF9yZWZyZXNoKGluZm8tPnZhci54cmVzLCBpbmZvLT52YXIueXJlcywKKwkJZ2V0X3Zhcl9yZWZyZXNoKCZpbmZvLT52YXIpKTsKIAlpZiAodm1vZGVfZW50cnkpIHsKLQkJaWYgKHZpYWZiX2R1YWxfZmIgJiYgdmlhcGFyLT5pZ2FfcGF0aCA9PSBJR0EyKQorCQlpZiAodmlhZmJfZHVhbF9mYiAmJiB2aWFwYXItPmlnYV9wYXRoID09IElHQTIpIHsKIAkJCXZpYWZiX2JwcDEgPSBpbmZvLT52YXIuYml0c19wZXJfcGl4ZWw7Ci0JCWVsc2UKKwkJCXZpYWZiX3JlZnJlc2gxID0gcmVmcmVzaDsKKwkJfSBlbHNlIHsKIAkJCXZpYWZiX2JwcCA9IGluZm8tPnZhci5iaXRzX3Blcl9waXhlbDsKKwkJCXZpYWZiX3JlZnJlc2ggPSByZWZyZXNoOworCQl9CiAKIAkJaWYgKGluZm8tPnZhci5hY2NlbF9mbGFncyAmIEZCX0FDQ0VMRl9URVhUKQogCQkJaW5mby0+ZmxhZ3MgJj0gfkZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEOwpAQCAtMTc5NSwxNCArMTgwNiw5IEBACiAJZGVmYXVsdF92YXIueHJlc192aXJ0dWFsID0gZGVmYXVsdF94cmVzOwogCWRlZmF1bHRfdmFyLnlyZXNfdmlydHVhbCA9IGRlZmF1bHRfeXJlczsKIAlkZWZhdWx0X3Zhci5iaXRzX3Blcl9waXhlbCA9IHZpYWZiX2JwcDsKLQlkZWZhdWx0X3Zhci5waXhjbG9jayA9Ci0JICAgIHZpYWZiX2dldF9waXhjbG9jayhkZWZhdWx0X3hyZXMsIGRlZmF1bHRfeXJlcywgdmlhZmJfcmVmcmVzaCk7Ci0JZGVmYXVsdF92YXIubGVmdF9tYXJnaW4gPSAoZGVmYXVsdF94cmVzID4+IDMpICYgMHhmODsKLQlkZWZhdWx0X3Zhci5yaWdodF9tYXJnaW4gPSAzMjsKLQlkZWZhdWx0X3Zhci51cHBlcl9tYXJnaW4gPSAxNjsKLQlkZWZhdWx0X3Zhci5sb3dlcl9tYXJnaW4gPSA0OwotCWRlZmF1bHRfdmFyLmhzeW5jX2xlbiA9IGRlZmF1bHRfdmFyLmxlZnRfbWFyZ2luOwotCWRlZmF1bHRfdmFyLnZzeW5jX2xlbiA9IDQ7CisJdmlhZmJfZmlsbF92YXJfdGltaW5nX2luZm8oJmRlZmF1bHRfdmFyLCB2aWFmYl9nZXRfcmVmcmVzaCgKKwkJZGVmYXVsdF92YXIueHJlcywgZGVmYXVsdF92YXIueXJlcywgdmlhZmJfcmVmcmVzaCksCisJCXZpYWZiX2dldF9tb2RlKGRlZmF1bHRfdmFyLnhyZXMsIGRlZmF1bHRfdmFyLnlyZXMpKTsKIAl2aWFmYl9zZXR1cF9maXhpbmZvKCZ2aWFmYmluZm8tPmZpeCwgdmlhcGFyaW5mbyk7CiAJdmlhZmJpbmZvLT52YXIgPSBkZWZhdWx0X3ZhcjsKIApAQCAtMTg0MSwxNSArMTg0Nyw5IEBACiAJCWRlZmF1bHRfdmFyLnhyZXNfdmlydHVhbCA9IHZpYWZiX3NlY29uZF92aXJ0dWFsX3hyZXM7CiAJCWRlZmF1bHRfdmFyLnlyZXNfdmlydHVhbCA9IHZpYWZiX3NlY29uZF92aXJ0dWFsX3lyZXM7CiAJCWRlZmF1bHRfdmFyLmJpdHNfcGVyX3BpeGVsID0gdmlhZmJfYnBwMTsKLQkJZGVmYXVsdF92YXIucGl4Y2xvY2sgPQotCQkgICAgdmlhZmJfZ2V0X3BpeGNsb2NrKHZpYWZiX3NlY29uZF94cmVzLCB2aWFmYl9zZWNvbmRfeXJlcywKLQkJICAgIHZpYWZiX3JlZnJlc2gpOwotCQlkZWZhdWx0X3Zhci5sZWZ0X21hcmdpbiA9ICh2aWFmYl9zZWNvbmRfeHJlcyA+PiAzKSAmIDB4Zjg7Ci0JCWRlZmF1bHRfdmFyLnJpZ2h0X21hcmdpbiA9IDMyOwotCQlkZWZhdWx0X3Zhci51cHBlcl9tYXJnaW4gPSAxNjsKLQkJZGVmYXVsdF92YXIubG93ZXJfbWFyZ2luID0gNDsKLQkJZGVmYXVsdF92YXIuaHN5bmNfbGVuID0gZGVmYXVsdF92YXIubGVmdF9tYXJnaW47Ci0JCWRlZmF1bHRfdmFyLnZzeW5jX2xlbiA9IDQ7CisJCXZpYWZiX2ZpbGxfdmFyX3RpbWluZ19pbmZvKCZkZWZhdWx0X3ZhciwgdmlhZmJfZ2V0X3JlZnJlc2goCisJCQlkZWZhdWx0X3Zhci54cmVzLCBkZWZhdWx0X3Zhci55cmVzLCB2aWFmYl9yZWZyZXNoMSksCisJCQl2aWFmYl9nZXRfbW9kZShkZWZhdWx0X3Zhci54cmVzLCBkZWZhdWx0X3Zhci55cmVzKSk7CiAKIAkJdmlhZmJfc2V0dXBfZml4aW5mbygmdmlhZmJpbmZvMS0+Zml4LCB2aWFwYXJpbmZvMSk7CiAJCXZpYWZiX2NoZWNrX3ZhcigmZGVmYXVsdF92YXIsIHZpYWZiaW5mbzEpOwpAQCAtMjAwNCwyMiArMjAwNCwyNCBAQAogICovCiBpbnQgX19pbml0IHZpYWZiX2luaXQodm9pZCkKIHsKLQl1MzIgZHVtbXk7CisJdTMyIGR1bW15X3gsIGR1bW15X3k7CiAjaWZuZGVmIE1PRFVMRQogCWNoYXIgKm9wdGlvbiA9IE5VTEw7CiAJaWYgKGZiX2dldF9vcHRpb25zKCJ2aWFmYiIsICZvcHRpb24pKQogCQlyZXR1cm4gLUVOT0RFVjsKIAl2aWFmYl9zZXR1cChvcHRpb24pOwogI2VuZGlmCi0JaWYgKHBhcnNlX21vZGUodmlhZmJfbW9kZSwgJmR1bW15LCAmZHVtbXkpCi0JCXx8IHBhcnNlX21vZGUodmlhZmJfbW9kZTEsICZkdW1teSwgJmR1bW15KQorCWlmIChwYXJzZV9tb2RlKHZpYWZiX21vZGUsICZkdW1teV94LCAmZHVtbXlfeSkKKwkJfHwgIXZpYWZiX2dldF9tb2RlKGR1bW15X3gsIGR1bW15X3kpCisJCXx8IHBhcnNlX21vZGUodmlhZmJfbW9kZTEsICZkdW1teV94LCAmZHVtbXlfeSkKKwkJfHwgIXZpYWZiX2dldF9tb2RlKGR1bW15X3gsIGR1bW15X3kpCiAJCXx8IHZpYWZiX2JwcCA8IDAgfHwgdmlhZmJfYnBwID4gMzIKIAkJfHwgdmlhZmJfYnBwMSA8IDAgfHwgdmlhZmJfYnBwMSA+IDMyCiAJCXx8IHBhcnNlX2FjdGl2ZV9kZXYoKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlwcmludGsoS0VSTl9JTkZPCi0gICAgICAgIlZJQSBHcmFwaGljcyBJbnRlcmdyYXRpb24gQ2hpcHNldCBmcmFtZWJ1ZmZlciAlZC4lZCBpbml0aWFsaXppbmdcbiIsCisgICAgICAgIlZJQSBHcmFwaGljcyBJbnRlZ3JhdGlvbiBDaGlwc2V0IGZyYW1lYnVmZmVyICVkLiVkIGluaXRpYWxpemluZ1xuIiwKIAkgICAgICAgVkVSU0lPTl9NQUpPUiwgVkVSU0lPTl9NSU5PUik7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3cxMDBmYi5jIGIvZHJpdmVycy92aWRlby93MTAwZmIuYwppbmRleCBkOGIxMmMzLi5jOGJlOGFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3cxMDBmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdzEwMGZiLmMKQEAgLTEzMDYsNyArMTMwNiw3IEBACiAJdW5pb24gZ3JhcGhpY192X2Rpc3BfdSBncmFwaGljX3ZfZGlzcDsKIAl1bmlvbiBjcnRjX3RvdGFsX3UgY3J0Y190b3RhbDsKIAotCS8qIHczMjAwIGRvZXNudCBsaWtlIHVuZGVmaW5lZCBiaXRzIGJlaW5nIHNldCBzbyB6ZXJvIHJlZ2lzdGVyIHZhbHVlcyBmaXJzdCAqLworCS8qIHczMjAwIGRvZXNuJ3QgbGlrZSB1bmRlZmluZWQgYml0cyBiZWluZyBzZXQgc28gemVybyByZWdpc3RlciB2YWx1ZXMgZmlyc3QgKi8KIAogCWFjdGl2ZV9oX2Rpc3AudmFsID0gMDsKIAlhY3RpdmVfaF9kaXNwLmYuYWN0aXZlX2hfc3RhcnQ9bW9kZS0+bGVmdF9tYXJnaW47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL21hc3RlcnMvb21hcF9oZHEuYyBiL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jCmluZGV4IDM4ZTk2YWIuLjVlZjM4NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jCisrKyBiL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jCkBAIC01NDUsNyArNTQ1LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIFNlY29uZCB3cml0ZSwgZGF0YSB0cmFuc2ZlcmVkLiBSZWxlYXNlIHRoZSBtb2R1bGUgKi8KKwkvKiBTZWNvbmQgd3JpdGUsIGRhdGEgdHJhbnNmZXJyZWQuIFJlbGVhc2UgdGhlIG1vZHVsZSAqLwogCWlmIChoZHFfZGF0YS0+aW5pdF90cmFucyA+IDEpIHsKIAkJb21hcF9oZHFfcHV0KGhkcV9kYXRhKTsKIAkJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZoZHFfZGF0YS0+aGRxX211dGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZyBiL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZwppbmRleCBiNjlkNzE0Li4xYjBmOThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL0tjb25maWcKKysrIGIvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCkBAIC05MzMsNyArOTMzLDcgQEAKIAlkZXBlbmRzIG9uIFNPQ19QTlg4MzM1CiAJaGVscAogCSAgSGFyZHdhcmUgZHJpdmVyIGZvciB0aGUgUE5YODMzeCdzIHdhdGNoZG9nLiBUaGlzIGlzIGEKLQkgIHdhdGNoZG9nIHRpbWVyIHRoYXQgd2lsbCByZWJvb3QgdGhlIG1hY2hpbmUgYWZ0ZXIgYSBwcm9ncmFtYWJsZQorCSAgd2F0Y2hkb2cgdGltZXIgdGhhdCB3aWxsIHJlYm9vdCB0aGUgbWFjaGluZSBhZnRlciBhIHByb2dyYW1tYWJsZQogCSAgdGltZXIgaGFzIGV4cGlyZWQgYW5kIG5vIHByb2Nlc3MgaGFzIHdyaXR0ZW4gdG8gL2Rldi93YXRjaGRvZyBkdXJpbmcKIAkgIHRoYXQgdGltZS4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZSBiL2RyaXZlcnMvd2F0Y2hkb2cvTWFrZWZpbGUKaW5kZXggZDUyMGJmOS4uM2Y4NjA4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3dhdGNoZG9nL01ha2VmaWxlCkBAIC00LDcgKzQsNyBAQAogCiAjIE9ubHkgb25lIHdhdGNoZG9nIGNhbiBzdWNjZWVkLiBXZSBwcm9iZSB0aGUgSVNBL1BDSS9VU0IgYmFzZWQKICMgd2F0Y2hkb2ctY2FyZHMgZmlyc3QsIHRoZW4gdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyB3YXRjaGRvZwotIyBkcml2ZXJzIGFuZCB0aGVuIHRoZSBhcmNoaXRlY3R1cmUgaW5kZXBlbmRhbnQgInNvZnRkb2ciIGRyaXZlci4KKyMgZHJpdmVycyBhbmQgdGhlbiB0aGUgYXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50ICJzb2Z0ZG9nIiBkcml2ZXIuCiAjIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3VyIElTQS9QQ0kvVVNCIGNhcmQgaXNuJ3QgZGV0ZWN0ZWQgdGhhdAogIyB5b3UgY2FuIGZhbGwgYmFjayB0byBhbiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgZHJpdmVyIGFuZCBpZgogIyB0aGF0IGFsc28gZmFpbHMgdGhlbiB5b3UgY2FuIGZhbGwgYmFjayB0byB0aGUgc29mdHdhcmUgd2F0Y2hkb2cKQEAgLTE1Myw3ICsxNTMsNyBAQAogIyBYZW4KIG9iai0kKENPTkZJR19YRU5fV0RUKSArPSB4ZW5fd2R0Lm8KIAotIyBBcmNoaXRlY3R1cmUgSW5kZXBlbmRhbnQKKyMgQXJjaGl0ZWN0dXJlIEluZGVwZW5kZW50CiBvYmotJChDT05GSUdfV004MzFYX1dBVENIRE9HKSArPSB3bTgzMXhfd2R0Lm8KIG9iai0kKENPTkZJR19XTTgzNTBfV0FUQ0hET0cpICs9IHdtODM1MF93ZHQubwogb2JqLSQoQ09ORklHX01BWDYzWFhfV0FUQ0hET0cpICs9IG1heDYzeHhfd2R0Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvYWNxdWlyZXdkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMKaW5kZXggMmZmY2U0ZC4uYjZhMmI1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqCVRoZW9yeSBvZiBPcGVyYXRpb246CiAgKgkJVGhlIFdhdGNoLURvZyBUaW1lciBpcyBwcm92aWRlZCB0byBlbnN1cmUgdGhhdCBzdGFuZGFsb25lCiAgKgkJU3lzdGVtcyBjYW4gYWx3YXlzIHJlY292ZXIgZnJvbSBjYXRhc3Ryb3BoaWMgY29uZGl0aW9ucyB0aGF0Ci0gKgkJY2F1c2VkIHRoZSBDUFUgdG8gY3Jhc2guIFRoaXMgY29uZGl0aW9uIG1heSBoYXZlIG9jY3VyZWQgYnkKKyAqCQljYXVzZWQgdGhlIENQVSB0byBjcmFzaC4gVGhpcyBjb25kaXRpb24gbWF5IGhhdmUgb2NjdXJyZWQgYnkKICAqCQlleHRlcm5hbCBFTUkgb3IgYSBzb2Z0d2FyZSBidWcuIFdoZW4gdGhlIENQVSBzdG9wcyB3b3JraW5nCiAgKgkJY29ycmVjdGx5LCBoYXJkd2FyZSBvbiB0aGUgYm9hcmQgd2lsbCBlaXRoZXIgcGVyZm9ybSBhIGhhcmR3YXJlCiAgKgkJcmVzZXQgKGNvbGQgYm9vdCkgb3IgYSBub24tbWFza2FibGUgaW50ZXJydXB0IChOTUkpIHRvIGJyaW5nIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9tcGM4eHh4X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9tcGM4eHh4X3dkdC5jCmluZGV4IDY3MDlkNzIuLjUyOGJjZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvbXBjOHh4eF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL21wYzh4eHhfd2R0LmMKQEAgLTE5NSw3ICsxOTUsNyBAQAogCiAJaWYgKCFvZmRldi0+ZGV2Lm9mX21hdGNoKQogCQlyZXR1cm4gLUVJTlZBTDsKLQl3ZHRfdHlwZSA9IG1hdGNoLT5kYXRhOworCXdkdF90eXBlID0gb2ZkZXYtPmRldi5vZl9tYXRjaC0+ZGF0YTsKIAogCWlmICghZnJlcSB8fCBmcmVxID09IC0xKQogCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvcGM4NzQxM193ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvcGM4NzQxM193ZHQuYwppbmRleCAxMzlkNzczLi5iN2MxMzkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3BjODc0MTNfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9wYzg3NDEzX3dkdC5jCkBAIC00OSw3ICs0OSw3IEBACiAjZGVmaW5lIFdEVF9EQVRBX0lPX1BPUlQgICAgKFdEVF9JTkRFWF9JT19QT1JUKzEpCiAjZGVmaW5lIFNXQ19MRE4gICAgICAgICAgICAgMHgwNAogI2RlZmluZSBTSU9DRkcyICAgICAgICAgICAgIDB4MjIJLyogU2VyaWFsIElPIHJlZ2lzdGVyICovCi0jZGVmaW5lIFdEQ1RMICAgICAgICAgICAgICAgMHgxMAkvKiBXYXRjaGRvZy1UaW1lci1Db250cm9sbC1SZWdpc3RlciAqLworI2RlZmluZSBXRENUTCAgICAgICAgICAgICAgIDB4MTAJLyogV2F0Y2hkb2ctVGltZXItQ29udHJvbC1SZWdpc3RlciAqLwogI2RlZmluZSBXRFRPICAgICAgICAgICAgICAgIDB4MTEJLyogV2F0Y2hkb2cgdGltZW91dCByZWdpc3RlciAqLwogI2RlZmluZSBXRENGRyAgICAgICAgICAgICAgIDB4MTIJLyogV2F0Y2hkb2cgY29uZmlnIHJlZ2lzdGVyICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvc2JjNzI0MF93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvc2JjNzI0MF93ZHQuYwppbmRleCA2N2RkZWIxLi5mZjExNTA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3NiYzcyNDBfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9zYmM3MjQwX3dkdC5jCkBAIC0yNzMsNyArMjczLDcgQEAKIAogCS8qIFRoZSBJTyBwb3J0IDB4MDQzIHVzZWQgdG8gZGlzYWJsZSB0aGUgd2F0Y2hkb2cKIAkgKiBpcyBhbHJlYWR5IGNsYWltZWQgYnkgdGhlIHN5c3RlbSB0aW1lciwgc28gd2UKLQkgKiBjYW50IHJlcXVlc3RfcmVnaW9uKCkgaXQgLi4uKi8KKwkgKiBjYW4ndCByZXF1ZXN0X3JlZ2lvbigpIGl0IC4uLiovCiAKIAlpZiAodGltZW91dCA8IDEgfHwgdGltZW91dCA+IFNCQzcyNDBfTUFYX1RJTUVPVVQpIHsKIAkJdGltZW91dCA9IFNCQzcyNDBfVElNRU9VVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvc2NoMzExeF93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvc2NoMzExeF93ZHQuYwppbmRleCBiNjFhYjFjLi5jN2NmNGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3NjaDMxMXhfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9zY2gzMTF4X3dkdC5jCkBAIC0yMDEsNyArMjAxLDcgQEAKIAlzcGluX2xvY2soJnNjaDMxMXhfd2R0X2RhdGEuaW9fbG9jayk7CiAKIAkvKiAtLSBXYXRjaGRvZyB0aW1lciBjb250cm9sIC0tCi0JICogQml0IDAgICBTdGF0dXMgQml0OiAwID0gVGltZXIgY291bnRpbmcsIDEgPSBUaW1lb3V0IG9jY3VyZWQKKwkgKiBCaXQgMCAgIFN0YXR1cyBCaXQ6IDAgPSBUaW1lciBjb3VudGluZywgMSA9IFRpbWVvdXQgb2NjdXJyZWQKIAkgKiBCaXQgMSAgIFJlc2VydmVkCiAJICogQml0IDIgICBGb3JjZSBUaW1lb3V0OiAxID0gRm9yY2VzIFdEIHRpbWVvdXQgZXZlbnQgKHNlbGYtY2xlYW5pbmcpCiAJICogQml0IDMgICBQMjAgRm9yY2UgVGltZW91dCBlbmFibGVkOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9zaHdkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9zaHdkdC5jCmluZGV4IDRlM2U3ZWIuLmRiODRmMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvc2h3ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3Nod2R0LmMKQEAgLTUwLDcgKzUwLDcgQEAKICAqIG5lY3NzYXJ5LgogICoKICAqIEFzIGEgcmVzdWx0IG9mIHRoaXMgdGltaW5nIHByb2JsZW0sIHRoZSBvbmx5IG1vZGVzIHRoYXQgYXJlIHBhcnRpY3VsYXJseQotICogZmVhc2libGUgYXJlIHRoZSA0MDk2IGFuZCB0aGUgMjA0OCBkaXZpc29ycywgd2hpY2ggeWVpbGQgNS4yNSBhbmQgMi42Mm1zCisgKiBmZWFzaWJsZSBhcmUgdGhlIDQwOTYgYW5kIHRoZSAyMDQ4IGRpdmlzb3JzLCB3aGljaCB5aWVsZCA1LjI1IGFuZCAyLjYybXMKICAqIG92ZXJmbG93IHBlcmlvZHMgcmVzcGVjdGl2ZWx5LgogICoKICAqIEFsc28sIHNpbmNlIHdlIGNhbid0IHJlYWxseSBleHBlY3QgdXNlcnNwYWNlIHRvIGJlIHJlc3BvbnNpdmUgZW5vdWdoCmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3Ntc2MzN2I3ODdfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3Ntc2MzN2I3ODdfd2R0LmMKaW5kZXggZGY4OGNmYS4uZTk3YjA0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9zbXNjMzdiNzg3X3dkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvc21zYzM3Yjc4N193ZHQuYwpAQCAtMTkxLDcgKzE5MSw3IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgd2R0X3RpbWVyX2N0cmwodW5zaWduZWQgY2hhciByZWcpCiB7CiAJLyogLS0gV2F0Y2hkb2cgdGltZXIgY29udHJvbCAtLQotCSAqIEJpdCAwICAgU3RhdHVzIEJpdDogMCA9IFRpbWVyIGNvdW50aW5nLCAxID0gVGltZW91dCBvY2N1cmVkCisJICogQml0IDAgICBTdGF0dXMgQml0OiAwID0gVGltZXIgY291bnRpbmcsIDEgPSBUaW1lb3V0IG9jY3VycmVkCiAJICogQml0IDEgICBQb3dlciBMRUQgVG9nZ2xlOiAwID0gRGlzYWJsZSBUb2dnbGUsIDEgPSBUb2dnbGUgYXQgMSBIegogCSAqIEJpdCAyICAgRm9yY2UgVGltZW91dDogMSA9IEZvcmNlcyBXRCB0aW1lb3V0IGV2ZW50IChzZWxmLWNsZWFuaW5nKQogCSAqIEJpdCAzICAgUDIwIEZvcmNlIFRpbWVvdXQgZW5hYmxlZDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvc3A4MDVfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3NwODA1X3dkdC5jCmluZGV4IDBhMGVmZTcuLjBkODBlMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvc3A4MDVfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9zcDgwNV93ZHQuYwpAQCAtOTAsNyArOTAsNyBAQAogCS8qCiAJICogc3A4MDUgcnVucyBjb3VudGVyIHdpdGggZ2l2ZW4gdmFsdWUgdHdpY2UsIGFmdGVyIHRoZSBlbmQgb2YgZmlyc3QKIAkgKiBjb3VudGVyIGl0IGdpdmVzIGFuIGludGVycnVwdCBhbmQgdGhlbiBzdGFydHMgY291bnRlciBhZ2Fpbi4gSWYKLQkgKiBpbnRlcnJ1cHQgYWxyZWFkeSBvY2N1cmVkIHRoZW4gaXQgcmVzZXRzIHRoZSBzeXN0ZW0uIFRoaXMgaXMgd2h5CisJICogaW50ZXJydXB0IGFscmVhZHkgb2NjdXJyZWQgdGhlbiBpdCByZXNldHMgdGhlIHN5c3RlbS4gVGhpcyBpcyB3aHkKIAkgKiBsb2FkIGlzIGhhbGYgb2Ygd2hhdCBzaG91bGQgYmUgcmVxdWlyZWQuCiAJICovCiAJbG9hZCA9IGRpdl91NjQocmF0ZSwgMikgKiB0aW1lb3V0IC0gMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2V2ZW50cy5jIGIvZHJpdmVycy94ZW4vZXZlbnRzLmMKaW5kZXggMDM2MzQzYi4uNDJkNmM5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vZXZlbnRzLmMKKysrIGIvZHJpdmVycy94ZW4vZXZlbnRzLmMKQEAgLTUsNyArNSw3IEBACiAgKiBkb21haW4gZ2V0cyAxMDI0IGV2ZW50IGNoYW5uZWxzLCBidXQgTlJfSVJRIGlzIG5vdCB0aGF0IGxhcmdlLCB3ZQogICogbXVzdCBkeW5hbWljYWxseSBtYXAgaXJxczwtPmV2ZW50IGNoYW5uZWxzLiAgVGhlIGV2ZW50IGNoYW5uZWxzCiAgKiBpbnRlcmZhY2Ugd2l0aCB0aGUgcmVzdCBvZiB0aGUga2VybmVsIGJ5IGRlZmluaW5nIGEgeGVuIGludGVycnVwdAotICogY2hpcC4gIFdoZW4gYW4gZXZlbnQgaXMgcmVjaWV2ZWQsIGl0IGlzIG1hcHBlZCB0byBhbiBpcnEgYW5kIHNlbnQKKyAqIGNoaXAuICBXaGVuIGFuIGV2ZW50IGlzIHJlY2VpdmVkLCBpdCBpcyBtYXBwZWQgdG8gYW4gaXJxIGFuZCBzZW50CiAgKiB0aHJvdWdoIHRoZSBub3JtYWwgaW50ZXJydXB0IHByb2Nlc3NpbmcgcGF0aC4KICAqCiAgKiBUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBldmVudHMgd2hpY2ggY2FuIGJlIG1hcHBlZCB0byBhbiBldmVudApAQCAtNDE2LDcgKzQxNiw3IEBACiAjaWZkZWYgQ09ORklHX1g4Nl9JT19BUElDCiAJLyoKIAkgKiBGb3IgYW4gSFZNIGd1ZXN0IG9yIGRvbWFpbiAwIHdoaWNoIHNlZSAicmVhbCIgKGVtdWxhdGVkIG9yCi0JICogYWN0dWFsIHJlcGVjdGl2ZWx5KSBHU0lzIHdlIGFsbG9jYXRlIGR5bmFtaWMgSVJRcworCSAqIGFjdHVhbCByZXNwZWN0aXZlbHkpIEdTSXMgd2UgYWxsb2NhdGUgZHluYW1pYyBJUlFzCiAJICogZS5nLiB0aG9zZSBjb3JyZXNwb25kaW5nIHRvIGV2ZW50IGNoYW5uZWxzIG9yIE1TSXMKIAkgKiBldGMuIGZyb20gdGhlIHJhbmdlIGFib3ZlIHRob3NlICJyZWFsIiBHU0lzIHRvIGF2b2lkCiAJICogY29sbGlzaW9ucy4KZGlmZiAtLWdpdCBhL2ZzL2FkZnMvbWFwLmMgYi9mcy9hZGZzL21hcC5jCmluZGV4IGQxYTU5MzIuLjY5MzVmMDUyIDEwMDY0NAotLS0gYS9mcy9hZGZzL21hcC5jCisrKyBiL2ZzL2FkZnMvbWFwLmMKQEAgLTUxLDcgKzUxLDcgQEAKIAogLyoKICAqIFRoaXMgaXMgZnVuLiAgV2UgbmVlZCB0byBsb2FkIHVwIHRvIDE5IGJpdHMgZnJvbSB0aGUgbWFwIGF0IGFuCi0gKiBhcmJpdGFyeSBiaXQgYWxpZ25tZW50LiAgKFdlJ3JlIGxpbWl0ZWQgdG8gMTkgYml0cyBieSBGKyB2ZXJzaW9uIDIpLgorICogYXJiaXRyYXJ5IGJpdCBhbGlnbm1lbnQuICAoV2UncmUgbGltaXRlZCB0byAxOSBiaXRzIGJ5IEYrIHZlcnNpb24gMikuCiAgKi8KICNkZWZpbmUgR0VUX0ZSQUdfSUQoX21hcCxfc3RhcnQsX2lkbWFzaykJCQkJXAogCSh7CQkJCQkJCQlcCmRpZmYgLS1naXQgYS9mcy9hZnMvY2FjaGUuYyBiL2ZzL2Fmcy9jYWNoZS5jCmluZGV4IDBmYjMxNWQuLjU3Nzc2M2MzIDEwMDY0NAotLS0gYS9mcy9hZnMvY2FjaGUuYworKysgYi9mcy9hZnMvY2FjaGUuYwpAQCAtOTgsNyArOTgsNyBAQAogfQogCiAvKgotICogcHJvdmlkZSBuZXcgYXV4aWxsaWFyeSBjYWNoZSBkYXRhCisgKiBwcm92aWRlIG5ldyBhdXhpbGlhcnkgY2FjaGUgZGF0YQogICovCiBzdGF0aWMgdWludDE2X3QgYWZzX2NlbGxfY2FjaGVfZ2V0X2F1eChjb25zdCB2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKIAkJCQkgICAgICAgdm9pZCAqYnVmZmVyLCB1aW50MTZfdCBidWZtYXgpCkBAIC0xMTcsNyArMTE3LDcgQEAKIH0KIAogLyoKLSAqIGNoZWNrIHRoYXQgdGhlIGF1eGlsbGlhcnkgZGF0YSBpbmRpY2F0ZXMgdGhhdCB0aGUgZW50cnkgaXMgc3RpbGwgdmFsaWQKKyAqIGNoZWNrIHRoYXQgdGhlIGF1eGlsaWFyeSBkYXRhIGluZGljYXRlcyB0aGF0IHRoZSBlbnRyeSBpcyBzdGlsbCB2YWxpZAogICovCiBzdGF0aWMgZW51bSBmc2NhY2hlX2NoZWNrYXV4IGFmc19jZWxsX2NhY2hlX2NoZWNrX2F1eCh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKIAkJCQkJCSAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwKQEAgLTE1MCw3ICsxNTAsNyBAQAogfQogCiAvKgotICogcHJvdmlkZSBuZXcgYXV4aWxsaWFyeSBjYWNoZSBkYXRhCisgKiBwcm92aWRlIG5ldyBhdXhpbGlhcnkgY2FjaGUgZGF0YQogICovCiBzdGF0aWMgdWludDE2X3QgYWZzX3Zsb2NhdGlvbl9jYWNoZV9nZXRfYXV4KGNvbnN0IHZvaWQgKmNvb2tpZV9uZXRmc19kYXRhLAogCQkJCQkgICAgdm9pZCAqYnVmZmVyLCB1aW50MTZfdCBidWZtYXgpCkBAIC0xNzIsNyArMTcyLDcgQEAKIH0KIAogLyoKLSAqIGNoZWNrIHRoYXQgdGhlIGF1eGlsbGlhcnkgZGF0YSBpbmRpY2F0ZXMgdGhhdCB0aGUgZW50cnkgaXMgc3RpbGwgdmFsaWQKKyAqIGNoZWNrIHRoYXQgdGhlIGF1eGlsaWFyeSBkYXRhIGluZGljYXRlcyB0aGF0IHRoZSBlbnRyeSBpcyBzdGlsbCB2YWxpZAogICovCiBzdGF0aWMKIGVudW0gZnNjYWNoZV9jaGVja2F1eCBhZnNfdmxvY2F0aW9uX2NhY2hlX2NoZWNrX2F1eCh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKQEAgLTI4Myw3ICsyODMsNyBAQAogfQogCiAvKgotICogcHJvdmlkZSBuZXcgYXV4aWxsaWFyeSBjYWNoZSBkYXRhCisgKiBwcm92aWRlIG5ldyBhdXhpbGlhcnkgY2FjaGUgZGF0YQogICovCiBzdGF0aWMgdWludDE2X3QgYWZzX3Zub2RlX2NhY2hlX2dldF9hdXgoY29uc3Qgdm9pZCAqY29va2llX25ldGZzX2RhdGEsCiAJCQkJCXZvaWQgKmJ1ZmZlciwgdWludDE2X3QgYnVmbWF4KQpAQCAtMzA5LDcgKzMwOSw3IEBACiB9CiAKIC8qCi0gKiBjaGVjayB0aGF0IHRoZSBhdXhpbGxpYXJ5IGRhdGEgaW5kaWNhdGVzIHRoYXQgdGhlIGVudHJ5IGlzIHN0aWxsIHZhbGlkCisgKiBjaGVjayB0aGF0IHRoZSBhdXhpbGlhcnkgZGF0YSBpbmRpY2F0ZXMgdGhhdCB0aGUgZW50cnkgaXMgc3RpbGwgdmFsaWQKICAqLwogc3RhdGljIGVudW0gZnNjYWNoZV9jaGVja2F1eCBhZnNfdm5vZGVfY2FjaGVfY2hlY2tfYXV4KHZvaWQgKmNvb2tpZV9uZXRmc19kYXRhLAogCQkJCQkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwKZGlmZiAtLWdpdCBhL2ZzL2Fmcy9jZWxsLmMgYi9mcy9hZnMvY2VsbC5jCmluZGV4IDBkNWVlYWRmLi4zYzA5MGI3IDEwMDY0NAotLS0gYS9mcy9hZnMvY2VsbC5jCisrKyBiL2ZzL2Fmcy9jZWxsLmMKQEAgLTI5Myw3ICsyOTMsNyBAQAogCQlpZiAoIWNlbGwpIHsKIAkJCS8qIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIHVzZXIgdHJpZXMgdG8gbW91bnQKIAkJCSAqIHdoZW4gcm9vdCBjZWxsIGlzIG5vdCBzZXQuIFJldHVybiBhbiBpbXBvc3NpYmx5Ci0JCQkgKiBiaXp6YXJlIGVycm5vIHRvIGFsZXJ0IHRoZSB1c2VyLiBUaGluZ3MgbGlrZQorCQkJICogYml6YXJyZSBlcnJubyB0byBhbGVydCB0aGUgdXNlci4gVGhpbmdzIGxpa2UKIAkJCSAqIEVOT0VOVCBtaWdodCBiZSAibW9yZSBhcHByb3ByaWF0ZSIgYnV0IHRoZXkgaGFwcGVuCiAJCQkgKiBmb3Igb3RoZXIgcmVhc29ucy4KIAkJCSAqLwpkaWZmIC0tZ2l0IGEvZnMvYXR0ci5jIGIvZnMvYXR0ci5jCmluZGV4IDEwMDdlZDYuLjkxZGJlMmEgMTAwNjQ0Ci0tLSBhL2ZzL2F0dHIuYworKysgYi9mcy9hdHRyLmMKQEAgLTEyOCw3ICsxMjgsNyBAQAogICogc2V0YXR0cl9jb3B5IG11c3QgYmUgY2FsbGVkIHdpdGggaV9tdXRleCBoZWxkLgogICoKICAqIHNldGF0dHJfY29weSB1cGRhdGVzIHRoZSBpbm9kZSdzIG1ldGFkYXRhIHdpdGggdGhhdCBzcGVjaWZpZWQKLSAqIGluIGF0dHIuIE5vdGljYWJseSBtaXNzaW5nIGlzIGlub2RlIHNpemUgdXBkYXRlLCB3aGljaCBpcyBtb3JlIGNvbXBsZXgKKyAqIGluIGF0dHIuIE5vdGljZWFibHkgbWlzc2luZyBpcyBpbm9kZSBzaXplIHVwZGF0ZSwgd2hpY2ggaXMgbW9yZSBjb21wbGV4CiAgKiBhcyBpdCByZXF1aXJlcyBwYWdlY2FjaGUgdXBkYXRlcy4KICAqCiAgKiBUaGUgaW5vZGUgaXMgbm90IG1hcmtlZCBhcyBkaXJ0eSBhZnRlciB0aGlzIG9wZXJhdGlvbi4gVGhlIHJhdGlvbmFsZSBpcwpkaWZmIC0tZ2l0IGEvZnMvYXV0b2ZzNC9yb290LmMgYi9mcy9hdXRvZnM0L3Jvb3QuYwppbmRleCA5NjgwNGExLi5mNTVhZTIzIDEwMDY0NAotLS0gYS9mcy9hdXRvZnM0L3Jvb3QuYworKysgYi9mcy9hdXRvZnM0L3Jvb3QuYwpAQCAtNjEyLDcgKzYxMiw3IEBACiAgKiBzZXQgdGhlIERNQU5BR0VEX0FVVE9NT1VOVCBhbmQgRE1BTkFHRURfVFJBTlNJVCBmbGFncyBvbiB0aGUgbGVhdmVzCiAgKiBvZiB0aGUgZGlyZWN0b3J5IHRyZWUuIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGF1dG9tb3VudCBmbGFnCiAgKiBmb2xsb3dpbmcgYSBtb3VudCBvciByZXN0b3JlIGl0IGFmdGVyIGFuIGV4cGlyZSBiZWNhdXNlIHRoZXNlIG1vdW50cwotICogYXJlIGFsd2F5cyBjb3ZlcmVkLiBIb3dldmVyLCBpdCBpcyBuZWNjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZXNlCisgKiBhcmUgYWx3YXlzIGNvdmVyZWQuIEhvd2V2ZXIsIGl0IGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB0aGVzZQogICogZmxhZ3MgYXJlIGNsZWFyIG9uIG5vbi1lbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjYWxscwogICogZHVyaW5nIHBhdGggd2Fsa3MuCiAgKi8KZGlmZiAtLWdpdCBhL2ZzL2JlZnMvQ2hhbmdlTG9nIGIvZnMvYmVmcy9DaGFuZ2VMb2cKaW5kZXggY2U4Yzc4Ny4uNzVhNDYxYyAxMDA2NDQKLS0tIGEvZnMvYmVmcy9DaGFuZ2VMb2cKKysrIGIvZnMvYmVmcy9DaGFuZ2VMb2cKQEAgLTI0LDcgKzI0LDcgQEAKIAogVmVyc2lvbiAwLjY0ICgyMDAyLTAyLTA3KQogPT09PT09PT09PQotKiBEaWQgdGhlIHN0cmluZyBjb21wYXJpc2lvbiByZWFsbHkgcmlnaHQgdGhpcyB0aW1lIChidHJlZS5jKSBbV0RdCisqIERpZCB0aGUgc3RyaW5nIGNvbXBhcmlzb24gcmVhbGx5IHJpZ2h0IHRoaXMgdGltZSAoYnRyZWUuYykgW1dEXQogCiAqIEZpeGVkIHVwIHNvbWUgcGxhY2VzIHdoZXJlIEkgYXNzdW1lZCB0aGF0IGEgbG9uZyBpbnQgY291bGQgaG9sZAogCWEgcG9pbnRlciB2YWx1ZS4gKGJ0cmVlLmMpIFtXRF0KQEAgLTExNCw3ICsxMTQsNyBAQAogCU1vcmUgZmxleGlibGUuIFdpbGwgc29vbiBiZSBjb250cm9sbGFibGUgYXQgbW91bnQgdGltZSAKIAkoc2VlIFRPRE8pLiBbV0RdCiAKLSogUmV3cm90ZSBkYXRhc3RyZWFtIHBvc2l0b24gbG9va3Vwcy4KKyogUmV3cm90ZSBkYXRhc3RyZWFtIHBvc2l0aW9uIGxvb2t1cHMuCiAJKGRhdGFzdHJlYW0uYykgW1dEXQogCiAqIE1vdmVkIHRoZSBUT0RPIGxpc3QgdG8gaXRzIG93biBmaWxlLgpAQCAtMTUwLDcgKzE1MCw3IEBACiAqIEFudG9uIGFsc28gdG9sZCBtZSB0aGF0IHRoZSBibG9ja3NpemUgaXMgbm90IGFsbG93ZWQgdG8gYmUgbGFyZ2VyIHRoYW4gCiAJdGhlIHBhZ2Ugc2l6ZSBpbiBsaW51eCwgd2hpY2ggaXMgNGsgaTM4Ni4gT29wcy4gQWRkZWQgYSB0ZXN0IGZvciAKIAkoYmxvY2tzaXplID4gUEFHRV9TSVpFKSwgYW5kIHJlZnVzZSB0byBtb3VudCBpbiB0aGF0IGNhc2UuIFdoYXQgdGhpcyAKLQlwcmFjdGljYWx5IG1lYW5zIGlzIHRoYXQgOGsgYmxvY2tzaXplIHZvbHVtZXMgd29uJ3Qgd29yayB3aXRob3V0IGEgbWFqb3IKKwlwcmFjdGljYWxseSBtZWFucyBpcyB0aGF0IDhrIGJsb2Nrc2l6ZSB2b2x1bWVzIHdvbid0IHdvcmsgd2l0aG91dCBhIG1ham9yCiAJcmVzdHJ1Y3R1cmluZyBvZiB0aGUgZHJpdmVyIChvciBhbiBhbHBoYSBvciBvdGhlciA2NGJpdCBoYXJkd2FyZSkuIFtXRF0KIAogKiBDbGVhbmVkIHVwIHRoZSBiZWZzX2NvdW50X2Jsb2NrcygpIGZ1bmN0aW9uLiBNdWNoIHNtYXJ0ZXIgbm93LiAKQEAgLTE4Myw3ICsxODMsNyBAQAogCXN0cnVjdHVyZXMgaW50byB0aGUgZ2VuZXJpYyBwb2ludGVyIGZpZWxkcyBvZiB0aGUgcHVibGljIHN0cnVjdHVyZXMgCiAJd2l0aCBrbWFsbG9jKCkuIHB1dF9zdXBlciBhbmQgcHV0X2lub2RlIGZyZWUgdGhlbS4gVGhpcyBhbGxvd3MgdXMgbm90IAogCXRvIGhhdmUgdG8gdG91Y2ggdGhlIGRlZmluaXRpb25zIG9mIHRoZSBwdWJsaWMgc3RydWN0dXJlcyBpbiAKLQlpbmNsdWRlL2xpbnV4L2ZzLmguIEFsc28sIGJlZnNfaW5vZGVfaW5mbyBpcyBodWdlIChiZWN1YXNlIG9mIHRoZSAKKwlpbmNsdWRlL2xpbnV4L2ZzLmguIEFsc28sIGJlZnNfaW5vZGVfaW5mbyBpcyBodWdlIChiZWNhdXNlIG9mIHRoZSAKIAlzeW1saW5rIHN0cmluZykuIChzdXBlci5jLCBpbm9kZS5jLCBiZWZzX2ZzLmgpIFtXRF0KIAogKiBGaXhlZCBhIHRoaW5rbyB0aGF0IHdhcyBjb3JydXB0aW5nIGZpbGUgcmVhZHMgYWZ0ZXIgdGhlIGZpcnN0IGJsb2NrX3J1biAKQEAgLTQwNCw3ICs0MDQsNyBAQAogCiAqIEZpeGVkIGNvbXBpbGUgZXJyb3JzIG9uIDIuNC4xIGtlcm5lbCAoV0QpCiAJUmVzb2x2ZSByZWplY3RlZCBwYXRjaGVzCi0JQWNjb21vZGF0ZSBjaGFuZ2VkIE5MUyBpbnRlcmZhY2UgKHV0aWwuaCkKKwlBY2NvbW1vZGF0ZSBjaGFuZ2VkIE5MUyBpbnRlcmZhY2UgKHV0aWwuaCkKIAlOZWVkZWQgdG8gaW5jbHVkZSA8bGludXgvc2xhYi5oPiBpbiBtb3N0IGZpbGVzCiAJTWFrZWZpbGUgY2hhbmdlcwogCWZzL0NvbmZpZy5pbiBjaGFuZ2VzCmRpZmYgLS1naXQgYS9mcy9iZWZzL2JlZnNfZnNfdHlwZXMuaCBiL2ZzL2JlZnMvYmVmc19mc190eXBlcy5oCmluZGV4IDc4OTNlYWEuLmViNTU3ZDkgMTAwNjQ0Ci0tLSBhL2ZzL2JlZnMvYmVmc19mc190eXBlcy5oCisrKyBiL2ZzL2JlZnMvYmVmc19mc190eXBlcy5oCkBAIC0yMzQsNyArMjM0LDcgQEAKIH0gUEFDS0VEIGJlZnNfYnRyZWVfc3VwZXI7CiAKIC8qCi0gKiBIZWFkZXIgc3R1Y3R1cmUgb2YgZWFjaCBidHJlZSBub2RlCisgKiBIZWFkZXIgc3RydWN0dXJlIG9mIGVhY2ggYnRyZWUgbm9kZQogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAJZnM2NCBsZWZ0OwpkaWZmIC0tZ2l0IGEvZnMvYmVmcy9idHJlZS5jIGIvZnMvYmVmcy9idHJlZS5jCmluZGV4IDQyMDJkYjcuLmE2NmM5YjEgMTAwNjQ0Ci0tLSBhL2ZzL2JlZnMvYnRyZWUuYworKysgYi9mcy9iZWZzL2J0cmVlLmMKQEAgLTUsNyArNSw3IEBACiAgKgogICogTGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHUEwuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBkZXRhaWxzLgogICoKLSAqIDIwMDItMDItMDU6IFNlcmdleSBTLiBLb3N0eWxpb3YgYWRkZWQgYmluYXJ5IHNlYXJjaCB3aXRoaW5nCisgKiAyMDAyLTAyLTA1OiBTZXJnZXkgUy4gS29zdHlsaW92IGFkZGVkIGJpbmFyeSBzZWFyY2ggd2l0aGluCiAgKiAJCWJ0cmVlIG5vZGVzLgogICoKICAqIE1hbnkgdGhhbmtzIHRvOgpkaWZmIC0tZ2l0IGEvZnMvYmVmcy9saW51eHZmcy5jIGIvZnMvYmVmcy9saW51eHZmcy5jCmluZGV4IDA2NDU3ZWQuLjU0YjhjMjggMTAwNjQ0Ci0tLSBhL2ZzL2JlZnMvbGludXh2ZnMuYworKysgYi9mcy9iZWZzL2xpbnV4dmZzLmMKQEAgLTczNCw3ICs3MzQsNyBAQAogCiAvKiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgcmVzcG9uc2liaWx0aXkgb2YgZ2V0dGluZyB0aGUKICAqIGZpbGVzeXN0ZW0gcmVhZHkgZm9yIHVubW91bnRpbmcuIAotICogQmFzaWNseSwgd2UgZnJlZSBldmVyeXRoaW5nIHRoYXQgd2UgYWxsb2NhdGVkIGluCisgKiBCYXNpY2FsbHksIHdlIGZyZWUgZXZlcnl0aGluZyB0aGF0IHdlIGFsbG9jYXRlZCBpbgogICogYmVmc19yZWFkX2lub2RlCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZmxhdC5jIGIvZnMvYmluZm10X2ZsYXQuYwppbmRleCA4MTEzODRiLi4zOTdkMzA1IDEwMDY0NAotLS0gYS9mcy9iaW5mbXRfZmxhdC5jCisrKyBiL2ZzL2JpbmZtdF9mbGF0LmMKQEAgLTcxNyw3ICs3MTcsNyBAQAogCSAqIGhlbHAgc2ltcGxpZnkgYWxsIHRoaXMgbXVtYm8ganVtYm8KIAkgKgogCSAqIFdlJ3ZlIGdvdCB0d28gZGlmZmVyZW50IHNlY3Rpb25zIG9mIHJlbG9jYXRpb24gZW50cmllcy4KLQkgKiBUaGUgZmlyc3QgaXMgdGhlIEdPVCB3aGljaCByZXNpZGVzIGF0IHRoZSBiZWdpbmluZyBvZiB0aGUgZGF0YSBzZWdtZW50CisJICogVGhlIGZpcnN0IGlzIHRoZSBHT1Qgd2hpY2ggcmVzaWRlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHNlZ21lbnQKIAkgKiBhbmQgaXMgdGVybWluYXRlZCB3aXRoIGEgLTEuICBUaGlzIG9uZSBjYW4gYmUgcmVsb2NhdGVkIGluIHBsYWNlLgogCSAqIFRoZSBzZWNvbmQgaXMgdGhlIGV4dHJhIHJlbG9jYXRpb24gZW50cmllcyB0YWNrZWQgYWZ0ZXIgdGhlIGltYWdlJ3MKIAkgKiBkYXRhIHNlZ21lbnQuIFRoZXNlIHJlcXVpcmUgYSBsaXR0bGUgbW9yZSBwcm9jZXNzaW5nIGFzIHRoZSBlbnRyeSBpcwpkaWZmIC0tZ2l0IGEvZnMvYmlvLmMgYi9mcy9iaW8uYwppbmRleCA0ZDZkNGI2Li44NDBhMGQ3IDEwMDY0NAotLS0gYS9mcy9iaW8uYworKysgYi9mcy9iaW8uYwpAQCAtMTQzNiw3ICsxNDM2LDcgQEAKICAqICAgcHJlZmVycmVkIHdheSB0byBlbmQgSS9PIG9uIGEgYmlvLCBpdCB0YWtlcyBjYXJlIG9mIGNsZWFyaW5nCiAgKiAgIEJJT19VUFRPREFURSBvbiBlcnJvci4gQGVycm9yIGlzIDAgb24gc3VjY2VzcywgYW5kIGFuZCBvbmUgb2YgdGhlCiAgKiAgIGVzdGFibGlzaGVkIC1FeHh4eCAoLUVJTywgZm9yIGluc3RhbmNlKSBlcnJvciB2YWx1ZXMgaW4gY2FzZQotICogICBzb21ldGhpbmcgd2VudCB3cm9uZy4gTm9vbmUgc2hvdWxkIGNhbGwgYmlfZW5kX2lvKCkgZGlyZWN0bHkgb24gYQorICogICBzb21ldGhpbmcgd2VudCB3cm9uZy4gTm8gb25lIHNob3VsZCBjYWxsIGJpX2VuZF9pbygpIGRpcmVjdGx5IG9uIGEKICAqICAgYmlvIHVubGVzcyB0aGV5IG93biBpdCBhbmQgdGh1cyBrbm93IHRoYXQgaXQgaGFzIGFuIGVuZF9pbwogICogICBmdW5jdGlvbi4KICAqKi8KZGlmZiAtLWdpdCBhL2ZzL2Jsb2NrX2Rldi5jIGIvZnMvYmxvY2tfZGV2LmMKaW5kZXggYzE1MTFjNi4uNTE0N2JkZCAxMDA2NDQKLS0tIGEvZnMvYmxvY2tfZGV2LmMKKysrIGIvZnMvYmxvY2tfZGV2LmMKQEAgLTY1Myw3ICs2NTMsNyBAQAogICogQHdob2xlOiB3aG9sZSBibG9jayBkZXZpY2UgY29udGFpbmluZyBAYmRldiwgbWF5IGVxdWFsIEBiZGV2CiAgKiBAaG9sZGVyOiBob2xkZXIgdHJ5aW5nIHRvIGNsYWltIEBiZGV2CiAgKgotICogVGVzdCB3aHRoZXIgQGJkZXYgY2FuIGJlIGNsYWltZWQgYnkgQGhvbGRlci4KKyAqIFRlc3Qgd2hldGhlciBAYmRldiBjYW4gYmUgY2xhaW1lZCBieSBAaG9sZGVyLgogICoKICAqIENPTlRFWFQ6CiAgKiBzcGluX2xvY2soJmJkZXZfbG9jaykuCmRpZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfbWFwLmMgYi9mcy9idHJmcy9leHRlbnRfbWFwLmMKaW5kZXggMmI2YzEyZS4uYTI0YTNmMiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZXh0ZW50X21hcC5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9tYXAuYwpAQCAtMjQzLDcgKzI0Myw3IEBACiAgKiBJbnNlcnQgQGVtIGludG8gQHRyZWUgb3IgcGVyZm9ybSBhIHNpbXBsZSBmb3J3YXJkL2JhY2t3YXJkIG1lcmdlIHdpdGgKICAqIGV4aXN0aW5nIG1hcHBpbmdzLiAgVGhlIGV4dGVudF9tYXAgc3RydWN0IHBhc3NlZCBpbiB3aWxsIGJlIGluc2VydGVkCiAgKiBpbnRvIHRoZSB0cmVlIGRpcmVjdGx5LCB3aXRoIGFuIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRha2VuLCBvciBhCi0gKiByZWZlcmVuY2UgZHJvcHBlZCBpZiB0aGUgbWVyZ2UgYXR0ZW1wdCB3YXMgc3VjY2Vzc2Z1bGwuCisgKiByZWZlcmVuY2UgZHJvcHBlZCBpZiB0aGUgbWVyZ2UgYXR0ZW1wdCB3YXMgc3VjY2Vzc2Z1bC4KICAqLwogaW50IGFkZF9leHRlbnRfbWFwcGluZyhzdHJ1Y3QgZXh0ZW50X21hcF90cmVlICp0cmVlLAogCQkgICAgICAgc3RydWN0IGV4dGVudF9tYXAgKmVtKQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggNjU0MTMzOS4uNWNjNjRhYjljIDEwMDY0NAotLS0gYS9mcy9idHJmcy9pbm9kZS5jCisrKyBiL2ZzL2J0cmZzL2lub2RlLmMKQEAgLTIzMjEsNyArMjMyMSw3IEBACiAKIAkJLyoKIAkJICogaWYgcmV0ID09IDAgbWVhbnMgd2UgZm91bmQgd2hhdCB3ZSB3ZXJlIHNlYXJjaGluZyBmb3IsIHdoaWNoCi0JCSAqIGlzIHdlaXJkLCBidXQgcG9zc2libGUsIHNvIG9ubHkgc2NyZXcgd2l0aCBwYXRoIGlmIHdlIGRpZG50CisJCSAqIGlzIHdlaXJkLCBidXQgcG9zc2libGUsIHNvIG9ubHkgc2NyZXcgd2l0aCBwYXRoIGlmIHdlIGRpZG4ndAogCQkgKiBmaW5kIHRoZSBrZXkgYW5kIHNlZSBpZiB3ZSBoYXZlIHN0dWZmIHRoYXQgbWF0Y2hlcwogCQkgKi8KIAkJaWYgKHJldCA+IDApIHsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3JlbG9jYXRpb24uYyBiL2ZzL2J0cmZzL3JlbG9jYXRpb24uYwppbmRleCA1ODI1MGUwLi4xOTlhODAxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9yZWxvY2F0aW9uLmMKKysrIGIvZnMvYnRyZnMvcmVsb2NhdGlvbi5jCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQAogCQlyb290ID0gbmV4dC0+cm9vdDsKIAkJQlVHX09OKCFyb290KTsKIAotCQkvKiBubyBvdGhlciBjaG9pY2UgZm9yIG5vbi1yZWZlcm5jZSBjb3VudGVkIHRyZWUgKi8KKwkJLyogbm8gb3RoZXIgY2hvaWNlIGZvciBub24tcmVmZXJlbmNlcyBjb3VudGVkIHRyZWUgKi8KIAkJaWYgKCFyb290LT5yZWZfY293cykKIAkJCXJldHVybiByb290OwogCmRpZmYgLS1naXQgYS9mcy9jYWNoZWZpbGVzL2ludGVyZmFjZS5jIGIvZnMvY2FjaGVmaWxlcy9pbnRlcmZhY2UuYwppbmRleCAzN2ZlMTAxLi4xMDY0ODA1IDEwMDY0NAotLS0gYS9mcy9jYWNoZWZpbGVzL2ludGVyZmFjZS5jCisrKyBiL2ZzL2NhY2hlZmlsZXMvaW50ZXJmYWNlLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQAogfQogCiAvKgotICogdXBkYXRlIHRoZSBhdXhpbGxpYXJ5IGRhdGEgZm9yIGFuIG9iamVjdCBvYmplY3Qgb24gZGlzaworICogdXBkYXRlIHRoZSBhdXhpbGlhcnkgZGF0YSBmb3IgYW4gb2JqZWN0IG9iamVjdCBvbiBkaXNrCiAgKi8KIHN0YXRpYyB2b2lkIGNhY2hlZmlsZXNfdXBkYXRlX29iamVjdChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKl9vYmplY3QpCiB7CmRpZmYgLS1naXQgYS9mcy9jZXBoL2FkZHIuYyBiL2ZzL2NlcGgvYWRkci5jCmluZGV4IDM3MzY4YmEuLmUxNTljNTIgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvYWRkci5jCisrKyBiL2ZzL2NlcGgvYWRkci5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiBjb250ZXh0IG5lZWRzIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3NkIHdyaXRlIGR1cmluZyB3cml0ZWJhY2suCiAgKgogICogU2ltaWxhcmx5LCBzdHJ1Y3QgY2VwaF9pbm9kZV9pbmZvIG1haW50YWlucyBhIHNldCBvZiBjb3VudGVycyB0bwotICogY291bnQgZGlydHkgcGFnZXMgb24gdGhlIGlub2RlLiAgSW4gdGhlIGFic2Vuc2Ugb2Ygc25hcHNob3RzLAorICogY291bnQgZGlydHkgcGFnZXMgb24gdGhlIGlub2RlLiAgSW4gdGhlIGFic2VuY2Ugb2Ygc25hcHNob3RzLAogICogaV93cmJ1ZmZlcl9yZWYgPT0gaV93cmJ1ZmZlcl9yZWZfaGVhZCA9PSB0aGUgZGlydHkgcGFnZSBjb3VudC4KICAqCiAgKiBXaGVuIGEgc25hcHNob3QgaXMgdGFrZW4gKHRoYXQgaXMsIHdoZW4gdGhlIGNsaWVudCByZWNlaXZlcwpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9jYXBzLmMgYi9mcy9jZXBoL2NhcHMuYwppbmRleCA2YjYxZGVkLi41MzIzYzMzIDEwMDY0NAotLS0gYS9mcy9jZXBoL2NhcHMuYworKysgYi9mcy9jZXBoL2NhcHMuYwpAQCAtNzY1LDcgKzc2NSw3IEBACiAJCQlpZiAodG91Y2gpIHsKIAkJCQlzdHJ1Y3QgcmJfbm9kZSAqcTsKIAotCQkJCS8qIHRvdWNoIHRoaXMgKyBwcmVjZWVkaW5nIGNhcHMgKi8KKwkJCQkvKiB0b3VjaCB0aGlzICsgcHJlY2VkaW5nIGNhcHMgKi8KIAkJCQlfX3RvdWNoX2NhcChjYXApOwogCQkJCWZvciAocSA9IHJiX2ZpcnN0KCZjaS0+aV9jYXBzKTsgcSAhPSBwOwogCQkJCSAgICAgcSA9IHJiX25leHQocSkpIHsKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvc25hcC5jIGIvZnMvY2VwaC9zbmFwLmMKaW5kZXggMGFlZTY2Yi4uZTg2ZWMxMSAxMDA2NDQKLS0tIGEvZnMvY2VwaC9zbmFwLmMKKysrIGIvZnMvY2VwaC9zbmFwLmMKQEAgLTM0Miw3ICszNDIsNyBAQAogCW51bSA9IDA7CiAJc25hcGMtPnNlcSA9IHJlYWxtLT5zZXE7CiAJaWYgKHBhcmVudCkgewotCQkvKiBpbmNsdWRlIGFueSBvZiBwYXJlbnQncyBzbmFwcyBvY2N1cmluZyBfYWZ0ZXJfIG15CisJCS8qIGluY2x1ZGUgYW55IG9mIHBhcmVudCdzIHNuYXBzIG9jY3VycmluZyBfYWZ0ZXJfIG15CiAJCSAgIHBhcmVudCBiZWNhbWUgbXkgcGFyZW50ICovCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJlbnQtPmNhY2hlZF9jb250ZXh0LT5udW1fc25hcHM7IGkrKykKIAkJCWlmIChwYXJlbnQtPmNhY2hlZF9jb250ZXh0LT5zbmFwc1tpXSA+PQpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9BVVRIT1JTIGIvZnMvY2lmcy9BVVRIT1JTCmluZGV4IDdmN2ZhM2MuLmVhOTQwYjEgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvQVVUSE9SUworKysgYi9mcy9jaWZzL0FVVEhPUlMKQEAgLTM1LDcgKzM1LDcgQEAKIE1pa2xvcyBTemVyZWRpIAogS2F6ZW9uIHRlYW0gZm9yIHZhcmlvdXMgZml4ZXMgZXNwZWNpYWxseSBmb3IgMi40IHZlcnNpb24uCiBBc3NlciBGZXJubyAoQ2hhbmdlIE5vdGlmeSBzdXBwb3J0KQotU2hhZ2d5IChEYXZlIEtsZWlrYW1wKSBmb3IgaW51bWVyYWJsZSBzbWFsbCBmcyBzdWdnZXN0aW9ucyBhbmQgc29tZSBnb29kIGNsZWFudXAKK1NoYWdneSAoRGF2ZSBLbGVpa2FtcCkgZm9yIGlubnVtZXJhYmxlIHNtYWxsIGZzIHN1Z2dlc3Rpb25zIGFuZCBzb21lIGdvb2QgY2xlYW51cAogR3VudGVyIEt1a2t1a2sgKHRlc3RpbmcgYW5kIHN1Z2dlc3Rpb25zIGZvciBzdXBwb3J0IG9mIG9sZCBzZXJ2ZXJzKQogSWdvciBNYW1tZWRvdiAoREZTIHN1cHBvcnQpCiBKZWZmIExheXRvbiAobWFueSwgbWFueSBmaXhlcywgYXMgd2VsbCBhcyBncmVhdCB3b3JrIG9uIHRoZSBjaWZzIEtlcmJlcm9zIGNvZGUpCmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNfZGZzX3JlZi5jIGIvZnMvY2lmcy9jaWZzX2Rmc19yZWYuYwppbmRleCAwYTI2NWFkLi4yYjY4YWM1IDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNfZGZzX3JlZi5jCisrKyBiL2ZzL2NpZnMvY2lmc19kZnNfcmVmLmMKQEAgLTUzLDcgKzUzLDcgQEAKICAqCiAgKiBFeHRyYWN0cyBzaGFyZW5hbWUgZm9ybSBmdWxsIFVOQy4KICAqIGkuZS4gc3RyaXBzIGZyb20gVU5DIHRyYWlsaW5nIHBhdGggdGhhdCBpcyBub3QgcGFydCBvZiBzaGFyZQotICogbmFtZSBhbmQgZml4dXAgbWlzc2luZyAnXCcgaW4gdGhlIGJlZ2luaW5nIG9mIERGUyBub2RlIHJlZmZlcmFsCisgKiBuYW1lIGFuZCBmaXh1cCBtaXNzaW5nICdcJyBpbiB0aGUgYmVnaW5uaW5nIG9mIERGUyBub2RlIHJlZmZlcmFsCiAgKiBpZiBuZWNlc3NhcnkuCiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gc2hhcmUgbmFtZSBvbiBzdWNjZXNzIG9yIEVSUl9QVFIgb24gZXJyb3IuCiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgcmV0dXJuZWQgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9jaWZzc21iLmMgYi9mcy9jaWZzL2NpZnNzbWIuYwppbmRleCA5MDRhYTQ3Li4yNjQ0YTVkIDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNzbWIuYworKysgYi9mcy9jaWZzL2NpZnNzbWIuYwpAQCAtNTI0Nyw3ICs1MjQ3LDcgQEAKIAkgKiBTYW1iYSBzZXJ2ZXIgaWdub3JlcyBzZXQgb2YgZmlsZSBzaXplIHRvIHplcm8gZHVlIHRvIGJ1Z3MgaW4gc29tZQogCSAqIG9sZGVyIGNsaWVudHMsIGJ1dCB3ZSBzaG91bGQgYmUgcHJlY2lzZSAtIHdlIHVzZSBTZXRGaWxlU2l6ZSB0bwogCSAqIHNldCBmaWxlIHNpemUgYW5kIGRvIG5vdCB3YW50IHRvIHRydW5jYXRlIGZpbGUgc2l6ZSB0byB6ZXJvCi0JICogYWNjaWRlbnRseSBhcyBoYXBwZW5lZCBvbiBvbmUgU2FtYmEgc2VydmVyIGJldGEgYnkgcHV0dGluZworCSAqIGFjY2lkZW50YWxseSBhcyBoYXBwZW5lZCBvbiBvbmUgU2FtYmEgc2VydmVyIGJldGEgYnkgcHV0dGluZwogCSAqIHplcm8gaW5zdGVhZCBvZiAtMSBoZXJlCiAJICovCiAJZGF0YV9vZmZzZXQtPkVuZE9mRmlsZSA9IGNwdV90b19sZTY0KE5PX0NIQU5HRV82NCk7CmRpZmYgLS1naXQgYS9mcy9jaWZzL2Nvbm5lY3QuYyBiL2ZzL2NpZnMvY29ubmVjdC5jCmluZGV4IDhkNmMxN2EuLjZlMmIyYWQgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY29ubmVjdC5jCisrKyBiL2ZzL2NpZnMvY29ubmVjdC5jCkBAIC0xNTcyLDcgKzE1NzIsNyBAQAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JLyogbm93IGNoZWNrIGlmIHNpZ25pbmcgbW9kZSBpcyBhY2NlcHRpYmxlICovCisJLyogbm93IGNoZWNrIGlmIHNpZ25pbmcgbW9kZSBpcyBhY2NlcHRhYmxlICovCiAJaWYgKChzZWNGbGFncyAmIENJRlNTRUNfTUFZX1NJR04pID09IDAgJiYKIAkgICAgKHNlcnZlci0+c2VjTW9kZSAmIFNFQ01PREVfU0lHTl9SRVFVSVJFRCkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0yOTMzLDcgKzI5MzMsNyBAQAogCQlpZiAobW91bnRfZGF0YSAhPSBtb3VudF9kYXRhX2dsb2JhbCkKIAkJCWtmcmVlKG1vdW50X2RhdGEpOwogCQkvKiBJZiBmaW5kX3VuYyBzdWNjZWVkZWQgdGhlbiByYyA9PSAwIHNvIHdlIGNhbiBub3QgZW5kICovCi0JCS8qIHVwIGFjY2lkZW50bHkgZnJlZWluZyBzb21lb25lIGVsc2VzIHRjb24gc3RydWN0ICovCisJCS8qIHVwIGFjY2lkZW50YWxseSBmcmVlaW5nIHNvbWVvbmUgZWxzZXMgdGNvbiBzdHJ1Y3QgKi8KIAkJaWYgKHRjb24pCiAJCQljaWZzX3B1dF90Y29uKHRjb24pOwogCQllbHNlIGlmIChwU2VzSW5mbykKZGlmZiAtLWdpdCBhL2ZzL2NpZnMvZGlyLmMgYi9mcy9jaWZzL2Rpci5jCmluZGV4IGRkNWYyMjkuLjllYTY1Y2YgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvZGlyLmMKKysrIGIvZnMvY2lmcy9kaXIuYwpAQCAtMTg5LDcgKzE4OSw3IEBACiAJCQlpbm9kZS0+aV9zYiwgbW9kZSwgb2ZsYWdzLCAmb3Bsb2NrLCAmZmlsZUhhbmRsZSwgeGlkKTsKIAkJLyogRUlPIGNvdWxkIGluZGljYXRlIHRoYXQgKHBvc2l4IG9wZW4pIG9wZXJhdGlvbiBpcyBub3QKIAkJICAgc3VwcG9ydGVkLCBkZXNwaXRlIHdoYXQgc2VydmVyIGNsYWltZWQgaW4gY2FwYWJpbGl0eQotCQkgICBuZWdvdGF0aW9uLiAgRVJFTU9URSBpbmRpY2F0ZXMgREZTIGp1bmN0aW9uLCB3aGljaCBpcyBub3QKKwkJICAgbmVnb3RpYXRpb24uICBFUkVNT1RFIGluZGljYXRlcyBERlMganVuY3Rpb24sIHdoaWNoIGlzIG5vdAogCQkgICBoYW5kbGVkIGluIHBvc2l4IG9wZW4gKi8KIAogCQlpZiAocmMgPT0gMCkgewpkaWZmIC0tZ2l0IGEvZnMvY29uZmlnZnMvZGlyLmMgYi9mcy9jb25maWdmcy9kaXIuYwppbmRleCA5MGZmM2NiLi4zMzEzZGQxIDEwMDY0NAotLS0gYS9mcy9jb25maWdmcy9kaXIuYworKysgYi9mcy9jb25maWdmcy9kaXIuYwpAQCAtOTkwLDcgKzk5MCw3IEBACiAgKiBUaGlzIGRlc2NyaWJlcyB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGhlbHBlcnMuCiAgKgogICogQWxsb3cgYW5vdGhlciBrZXJuZWwgc3lzdGVtIHRvIGRlcGVuZCBvbiBhIGNvbmZpZ19pdGVtLiAgSWYgdGhpcwotICogaGFwcGVucywgdGhlIGl0ZW0gY2Fubm90IGdvIGF3YXkgdW50aWwgdGhlIGRlcGVuZGFudCBjYW4gbGl2ZSB3aXRob3V0CisgKiBoYXBwZW5zLCB0aGUgaXRlbSBjYW5ub3QgZ28gYXdheSB1bnRpbCB0aGUgZGVwZW5kZW50IGNhbiBsaXZlIHdpdGhvdXQKICAqIGl0LiAgVGhlIGlkZWEgaXMgdG8gZ2l2ZSBjbGllbnQgbW9kdWxlcyBhcyBzaW1wbGUgYW4gaW50ZXJmYWNlIGFzCiAgKiBwb3NzaWJsZS4gIFdoZW4gYSBzeXN0ZW0gYXNrcyB0aGVtIHRvIGRlcGVuZCBvbiBhbiBpdGVtLCB0aGV5IGp1c3QKICAqIGNhbGwgY29uZmlnZnNfZGVwZW5kX2l0ZW0oKS4gIElmIHRoZSBpdGVtIGlzIGxpdmUgYW5kIHRoZSBjbGllbnQKZGlmZiAtLWdpdCBhL2ZzL2RsbS9sb2NrLmMgYi9mcy9kbG0vbG9jay5jCmluZGV4IDA0YjhjNDQuLjU2ZDZiZmMgMTAwNjQ0Ci0tLSBhL2ZzL2RsbS9sb2NrLmMKKysrIGIvZnMvZGxtL2xvY2suYwpAQCAtNTE5LDcgKzUxOSw3IEBACiAJfQogfQogCi0vKiBXaGVuIGFsbCByZWZlcmVuY2VzIHRvIHRoZSByc2IgYXJlIGdvbmUgaXQncyB0cmFuc2ZlcmVkIHRvCisvKiBXaGVuIGFsbCByZWZlcmVuY2VzIHRvIHRoZSByc2IgYXJlIGdvbmUgaXQncyB0cmFuc2ZlcnJlZCB0bwogICAgdGhlIHRvc3NlZCBsaXN0IGZvciBsYXRlciBkaXNwb3NhbC4gKi8KIAogc3RhdGljIHZvaWQgcHV0X3JzYihzdHJ1Y3QgZGxtX3JzYiAqcikKZGlmZiAtLWdpdCBhL2ZzL2RsbS9sb3djb21tcy5jIGIvZnMvZGxtL2xvd2NvbW1zLmMKaW5kZXggYmZmYTFlNy4uNWUyYzcxZjA1IDEwMDY0NAotLS0gYS9mcy9kbG0vbG93Y29tbXMuYworKysgYi9mcy9kbG0vbG93Y29tbXMuYwpAQCAtODEwLDcgKzgxMCw3IEBACiAKIAkvKgogCSAqIEFkZCBpdCB0byB0aGUgYWN0aXZlIHF1ZXVlIGluIGNhc2Ugd2UgZ290IGRhdGEKLQkgKiBiZXdlZW4gcHJvY2Vzc2luZyB0aGUgYWNjZXB0IGFkZGluZyB0aGUgc29ja2V0CisJICogYmV0d2VlbiBwcm9jZXNzaW5nIHRoZSBhY2NlcHQgYWRkaW5nIHRoZSBzb2NrZXQKIAkgKiB0byB0aGUgcmVhZF9zb2NrZXRzIGxpc3QKIAkgKi8KIAlpZiAoIXRlc3RfYW5kX3NldF9iaXQoQ0ZfUkVBRF9QRU5ESU5HLCAmYWRkY29uLT5mbGFncykpCmRpZmYgLS1naXQgYS9mcy9kbG0vcmVjb3Zlci5jIGIvZnMvZGxtL3JlY292ZXIuYwppbmRleCBlZGE0M2YzLi4xNDYzODIzIDEwMDY0NAotLS0gYS9mcy9kbG0vcmVjb3Zlci5jCisrKyBiL2ZzL2RsbS9yZWNvdmVyLmMKQEAgLTMwNCw3ICszMDQsNyBAQAogfQogCiAvKgotICogUHJvcG9nYXRlIHRoZSBuZXcgbWFzdGVyIG5vZGVpZCB0byBsb2NrcworICogUHJvcGFnYXRlIHRoZSBuZXcgbWFzdGVyIG5vZGVpZCB0byBsb2NrcwogICogVGhlIE5FV19NQVNURVIgZmxhZyB0ZWxscyBkbG1fcmVjb3Zlcl9sb2NrcygpIHdoaWNoIHJzYidzIHRvIGNvbnNpZGVyLgogICogVGhlIE5FV19NQVNURVIyIGZsYWcgdGVsbHMgcmVjb3Zlcl9sdmIoKSBhbmQgc2V0X2xvY2tzX3B1cmdlZCgpIHdoaWNoCiAgKiByc2IncyB0byBjb25zaWRlci4KZGlmZiAtLWdpdCBhL2ZzL2VjcnlwdGZzL21haW4uYyBiL2ZzL2VjcnlwdGZzL21haW4uYwppbmRleCBjMjdjMGVjLi5mZGIyZWIwIDEwMDY0NAotLS0gYS9mcy9lY3J5cHRmcy9tYWluLmMKKysrIGIvZnMvZWNyeXB0ZnMvbWFpbi5jCkBAIC0yNzYsNyArMjc2LDcgQEAKIC8qKgogICogZWNyeXB0ZnNfcGFyc2Vfb3B0aW9ucwogICogQHNiOiBUaGUgZWNyeXB0ZnMgc3VwZXIgYmxvY2sKLSAqIEBvcHRpb25zOiBUaGUgb3B0aW9ucyBwYXNlZCB0byB0aGUga2VybmVsCisgKiBAb3B0aW9uczogVGhlIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBrZXJuZWwKICAqCiAgKiBQYXJzZSBtb3VudCBvcHRpb25zOgogICogZGVidWc9TiAJICAgLSBlY3J5cHRmc192ZXJib3NpdHkgbGV2ZWwgZm9yIGRlYnVnIG91dHB1dApAQCAtODQwLDcgKzg0MCw3IEBACiAJfQogCXJjID0gZWNyeXB0ZnNfaW5pdF9tZXNzYWdpbmcoKTsKIAlpZiAocmMpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJGYWlsdXJlIG9jY3VyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byAiCisJCXByaW50ayhLRVJOX0VSUiAiRmFpbHVyZSBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvICIKIAkJCQkiaW5pdGlhbGl6ZSB0aGUgY29tbXVuaWNhdGlvbnMgY2hhbm5lbCB0byAiCiAJCQkJImVjcnlwdGZzZFxuIik7CiAJCWdvdG8gb3V0X2Rlc3Ryb3lfa3RocmVhZDsKZGlmZiAtLWdpdCBhL2ZzL2V2ZW50cG9sbC5jIGIvZnMvZXZlbnRwb2xsLmMKaW5kZXggZWQzODgwMS4uZjljZmQxNiAxMDA2NDQKLS0tIGEvZnMvZXZlbnRwb2xsLmMKKysrIGIvZnMvZXZlbnRwb2xsLmMKQEAgLTE4MSw3ICsxODEsNyBAQAogCiAJLyoKIAkgKiBUaGlzIGlzIGEgc2luZ2xlIGxpbmtlZCBsaXN0IHRoYXQgY2hhaW5zIGFsbCB0aGUgInN0cnVjdCBlcGl0ZW0iIHRoYXQKLQkgKiBoYXBwZW5lZCB3aGlsZSB0cmFuc2ZlcmluZyByZWFkeSBldmVudHMgdG8gdXNlcnNwYWNlIHcvb3V0CisJICogaGFwcGVuZWQgd2hpbGUgdHJhbnNmZXJyaW5nIHJlYWR5IGV2ZW50cyB0byB1c2Vyc3BhY2Ugdy9vdXQKIAkgKiBob2xkaW5nIC0+bG9jay4KIAkgKi8KIAlzdHJ1Y3QgZXBpdGVtICpvdmZsaXN0OwpAQCAtNjA2LDcgKzYwNiw3IEBACiAJICogV2UgZG8gbm90IG5lZWQgdG8gaG9sZCAiZXAtPm10eCIgaGVyZSBiZWNhdXNlIHRoZSBlcG9sbCBmaWxlCiAJICogaXMgb24gdGhlIHdheSB0byBiZSByZW1vdmVkIGFuZCBubyBvbmUgaGFzIHJlZmVyZW5jZXMgdG8gaXQKIAkgKiBhbnltb3JlLiBUaGUgb25seSBoaXQgbWlnaHQgY29tZSBmcm9tIGV2ZW50cG9sbF9yZWxlYXNlX2ZpbGUoKSBidXQKLQkgKiBob2xkaW5nICJlcG11dGV4IiBpcyBzdWZmaWNlbnQgaGVyZS4KKwkgKiBob2xkaW5nICJlcG11dGV4IiBpcyBzdWZmaWNpZW50IGhlcmUuCiAJICovCiAJbXV0ZXhfbG9jaygmZXBtdXRleCk7CiAKQEAgLTcyMCw3ICs3MjAsNyBAQAogCS8qCiAJICogV2UgZG9uJ3Qgd2FudCB0byBnZXQgImZpbGUtPmZfbG9jayIgYmVjYXVzZSBpdCBpcyBub3QKIAkgKiBuZWNlc3NhcnkuIEl0IGlzIG5vdCBuZWNlc3NhcnkgYmVjYXVzZSB3ZSdyZSBpbiB0aGUgInN0cnVjdCBmaWxlIgotCSAqIGNsZWFudXAgcGF0aCwgYW5kIHRoaXMgbWVhbnMgdGhhdCBub29uZSBpcyB1c2luZyB0aGlzIGZpbGUgYW55bW9yZS4KKwkgKiBjbGVhbnVwIHBhdGgsIGFuZCB0aGlzIG1lYW5zIHRoYXQgbm8gb25lIGlzIHVzaW5nIHRoaXMgZmlsZSBhbnltb3JlLgogCSAqIFNvLCBmb3IgZXhhbXBsZSwgZXBvbGxfY3RsKCkgY2Fubm90IGhpdCBoZXJlIHNpbmNlIGlmIHdlIHJlYWNoIHRoaXMKIAkgKiBwb2ludCwgdGhlIGZpbGUgY291bnRlciBhbHJlYWR5IHdlbnQgdG8gemVybyBhbmQgZmdldCgpIHdvdWxkIGZhaWwuCiAJICogVGhlIG9ubHkgaGl0IG1pZ2h0IGNvbWUgZnJvbSBlcF9mcmVlKCkgYnV0IGJ5IGhvbGRpbmcgdGhlIG11dGV4CkBAIC0xMTEyLDcgKzExMTIsNyBAQAogCQkJCSAqIFRyaWdnZXIgbW9kZSwgd2UgbmVlZCB0byBpbnNlcnQgYmFjayBpbnNpZGUKIAkJCQkgKiB0aGUgcmVhZHkgbGlzdCwgc28gdGhhdCB0aGUgbmV4dCBjYWxsIHRvCiAJCQkJICogZXBvbGxfd2FpdCgpIHdpbGwgY2hlY2sgYWdhaW4gdGhlIGV2ZW50cwotCQkJCSAqIGF2YWlsYWJpbGl0eS4gQXQgdGhpcyBwb2ludCwgbm9vbmUgY2FuIGluc2VydAorCQkJCSAqIGF2YWlsYWJpbGl0eS4gQXQgdGhpcyBwb2ludCwgbm8gb25lIGNhbiBpbnNlcnQKIAkJCQkgKiBpbnRvIGVwLT5yZGxsaXN0IGJlc2lkZXMgdXMuIFRoZSBlcG9sbF9jdGwoKQogCQkJCSAqIGNhbGxlcnMgYXJlIGxvY2tlZCBvdXQgYnkKIAkJCQkgKiBlcF9zY2FuX3JlYWR5X2xpc3QoKSBob2xkaW5nICJtdHgiIGFuZCB0aGUKZGlmZiAtLWdpdCBhL2ZzL2V4b2ZzL2NvbW1vbi5oIGIvZnMvZXhvZnMvY29tbW9uLmgKaW5kZXggNWU3NGFkMy4uM2JiZDQ2OSAxMDA2NDQKLS0tIGEvZnMvZXhvZnMvY29tbW9uLmgKKysrIGIvZnMvZXhvZnMvY29tbW9uLmgKQEAgLTExNSw3ICsxMTUsNyBAQAogICogRGVzY3JpYmVzIHRoZSByYWlkIHVzZWQgaW4gdGhlIEZTLiBJdCBpcyBwYXJ0IG9mIHRoZSBkZXZpY2UgdGFibGUuCiAgKiBUaGlzIGhlcmUgaXMgdGFrZW4gZnJvbSB0aGUgcE5GUy1vYmplY3RzIGRlZmluaXRpb24uIEluIGV4b2ZzIHdlCiAgKiB1c2Ugb25lIHJhaWQgcG9saWN5IHRocm91Z2gtb3V0IHRoZSBmaWxlc3lzdGVtLiAoTk9URTogdGhlIGZ1bm55Ci0gKiBhbGlnbm1lbnQgYXQgYmVnaW5pbmcuIFdlIHRha2UgY2FyZSBvZiBpdCBhdCBleG9mc19kZXZpY2VfdGFibGUuCisgKiBhbGlnbm1lbnQgYXQgYmVnaW5uaW5nLiBXZSB0YWtlIGNhcmUgb2YgaXQgYXQgZXhvZnNfZGV2aWNlX3RhYmxlLgogICovCiBzdHJ1Y3QgZXhvZnNfZHRfZGF0YV9tYXAgewogCV9fbGUzMgljYl9udW1fY29tcHM7CkBAIC0xMzYsNyArMTM2LDcgQEAKIAl1OAlzeXN0ZW1pZFtPU0RfU1lTVEVNSURfTEVOXTsKIAlfX2xlNjQJbG9uZ19uYW1lX29mZnNldDsJLyogSWYgITAgdGhlbiBvZmZzZXQtaW4tZmlsZSAqLwogCV9fbGUzMglvc2RuYW1lX2xlbjsJCS8qICovCi0JdTgJb3NkbmFtZVs0NF07CQkvKiBFbWJiZWRlZCwgVXN1c2FsbHkgYW4gYXNjaSB1dWlkICovCisJdTgJb3NkbmFtZVs0NF07CQkvKiBFbWJiZWRlZCwgVXN1YWxseSBhbiBhc2NpIHV1aWQgKi8KIH0gX19wYWNrZWQ7CiAKIC8qCmRpZmYgLS1naXQgYS9mcy9leHQyL2JhbGxvYy5jIGIvZnMvZXh0Mi9iYWxsb2MuYwppbmRleCAwZDA2ZjRlLi44ZjQ0Y2VmIDEwMDY0NAotLS0gYS9mcy9leHQyL2JhbGxvYy5jCisrKyBiL2ZzL2V4dDIvYmFsbG9jLmMKQEAgLTg1MCw3ICs4NTAsNyBAQAogCQlyc3Zfd2luZG93X3JlbW92ZShzYiwgbXlfcnN2KTsKIAogCS8qCi0JICogTGV0J3MgYm9vayB0aGUgd2hvbGUgYXZhbGlhYmxlIHdpbmRvdyBmb3Igbm93LiAgV2Ugd2lsbCBjaGVjayB0aGUKKwkgKiBMZXQncyBib29rIHRoZSB3aG9sZSBhdmFpbGFibGUgd2luZG93IGZvciBub3cuICBXZSB3aWxsIGNoZWNrIHRoZQogCSAqIGRpc2sgYml0bWFwIGxhdGVyIGFuZCB0aGVuLCBpZiB0aGVyZSBhcmUgZnJlZSBibG9ja3MgdGhlbiB3ZSBhZGp1c3QKIAkgKiB0aGUgd2luZG93IHNpemUgaWYgaXQncyBsYXJnZXIgdGhhbiByZXF1ZXN0ZWQuCiAJICogT3RoZXJ3aXNlLCB3ZSB3aWxsIHJlbW92ZSB0aGlzIG5vZGUgZnJvbSB0aGUgdHJlZSBuZXh0IHRpbWUKQEAgLTEzNTcsOSArMTM1Nyw5IEBACiAJCQlnb3RvIGFsbG9jYXRlZDsKIAl9CiAJLyoKLQkgKiBXZSBtYXkgZW5kIHVwIGEgYm9ndXMgZWFsaWVyIEVOT1NQQyBlcnJvciBkdWUgdG8KKwkgKiBXZSBtYXkgZW5kIHVwIGEgYm9ndXMgZWFybGllciBFTk9TUEMgZXJyb3IgZHVlIHRvCiAJICogZmlsZXN5c3RlbSBpcyAiZnVsbCIgb2YgcmVzZXJ2YXRpb25zLCBidXQKLQkgKiB0aGVyZSBtYXliZSBpbmRlZWQgZnJlZSBibG9ja3MgYXZhbGlhYmxlIG9uIGRpc2sKKwkgKiB0aGVyZSBtYXliZSBpbmRlZWQgZnJlZSBibG9ja3MgYXZhaWxhYmxlIG9uIGRpc2sKIAkgKiBJbiB0aGlzIGNhc2UsIHdlIGp1c3QgZm9yZ2V0IGFib3V0IHRoZSByZXNlcnZhdGlvbnMKIAkgKiBqdXN0IGRvIGJsb2NrIGFsbG9jYXRpb24gYXMgd2l0aG91dCByZXNlcnZhdGlvbnMuCiAJICovCmRpZmYgLS1naXQgYS9mcy9leHQyL2lub2RlLmMgYi9mcy9leHQyL2lub2RlLmMKaW5kZXggYzQ3ZjcwNi4uNzg4ZTA5YSAxMDA2NDQKLS0tIGEvZnMvZXh0Mi9pbm9kZS5jCisrKyBiL2ZzL2V4dDIvaW5vZGUuYwpAQCAtMzA1LDcgKzMwNSw3IEBACiAJCXJldHVybiBpbmQtPmJoLT5iX2Jsb2NrbnI7CiAKIAkvKgotCSAqIEl0IGlzIGdvaW5nIHRvIGJlIHJlZmVyZWQgZnJvbSBpbm9kZSBpdHNlbGY/IE9LLCBqdXN0IHB1dCBpdCBpbnRvCisJICogSXQgaXMgZ29pbmcgdG8gYmUgcmVmZXJyZWQgZnJvbSBpbm9kZSBpdHNlbGY/IE9LLCBqdXN0IHB1dCBpdCBpbnRvCiAJICogdGhlIHNhbWUgY3lsaW5kZXIgZ3JvdXAgdGhlbi4KIAkgKi8KIAliZ19zdGFydCA9IGV4dDJfZ3JvdXBfZmlyc3RfYmxvY2tfbm8oaW5vZGUtPmlfc2IsIGVpLT5pX2Jsb2NrX2dyb3VwKTsKQEAgLTkxMyw3ICs5MTMsNyBAQAogICoKICAqCVdoZW4gd2UgZG8gdHJ1bmNhdGUoKSB3ZSBtYXkgaGF2ZSB0byBjbGVhbiB0aGUgZW5kcyBvZiBzZXZlcmFsIGluZGlyZWN0CiAgKglibG9ja3MgYnV0IGxlYXZlIHRoZSBibG9ja3MgdGhlbXNlbHZlcyBhbGl2ZS4gQmxvY2sgaXMgcGFydGlhbGx5Ci0gKgl0cnVuY2F0ZWQgaWYgc29tZSBkYXRhIGJlbG93IHRoZSBuZXcgaV9zaXplIGlzIHJlZmVyZWQgZnJvbSBpdCAoYW5kCisgKgl0cnVuY2F0ZWQgaWYgc29tZSBkYXRhIGJlbG93IHRoZSBuZXcgaV9zaXplIGlzIHJlZmVycmVkIGZyb20gaXQgKGFuZAogICoJaXQgaXMgb24gdGhlIHBhdGggdG8gdGhlIGZpcnN0IGNvbXBsZXRlbHkgdHJ1bmNhdGVkIGRhdGEgYmxvY2ssIGluZGVlZCkuCiAgKglXZSBoYXZlIHRvIGZyZWUgdGhlIHRvcCBvZiB0aGF0IHBhdGggYWxvbmcgd2l0aCBldmVyeXRoaW5nIHRvIHRoZSByaWdodAogICoJb2YgdGhlIHBhdGguIFNpbmNlIG5vIGFsbG9jYXRpb24gcGFzdCB0aGUgdHJ1bmNhdGlvbiBwb2ludCBpcyBwb3NzaWJsZQpAQCAtOTkwLDcgKzk5MCw3IEBACiAgKglAcDoJYXJyYXkgb2YgYmxvY2sgbnVtYmVycwogICoJQHE6CXBvaW50cyBpbW1lZGlhdGVseSBwYXN0IHRoZSBlbmQgb2YgYXJyYXkKICAqCi0gKglXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVyZWQgZnJvbSB0aGF0IGFycmF5IChudW1iZXJzIGFyZQorICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcnJlZCBmcm9tIHRoYXQgYXJyYXkgKG51bWJlcnMgYXJlCiAgKglzdG9yZWQgYXMgbGl0dGxlLWVuZGlhbiAzMi1iaXQpIGFuZCB1cGRhdGluZyBAaW5vZGUtPmlfYmxvY2tzCiAgKglhcHByb3ByaWF0ZWx5LgogICovCkBAIC0xMDMwLDcgKzEwMzAsNyBAQAogICoJQHE6CXBvaW50ZXIgaW1tZWRpYXRlbHkgcGFzdCB0aGUgZW5kIG9mIGFycmF5CiAgKglAZGVwdGg6CWRlcHRoIG9mIHRoZSBicmFuY2hlcyB0byBmcmVlCiAgKgotICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcmVkIGZyb20gdGhlc2UgYnJhbmNoZXMgKG51bWJlcnMgYXJlCisgKglXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVycmVkIGZyb20gdGhlc2UgYnJhbmNoZXMgKG51bWJlcnMgYXJlCiAgKglzdG9yZWQgYXMgbGl0dGxlLWVuZGlhbiAzMi1iaXQpIGFuZCB1cGRhdGluZyBAaW5vZGUtPmlfYmxvY2tzCiAgKglhcHByb3ByaWF0ZWx5LgogICovCmRpZmYgLS1naXQgYS9mcy9leHQyL3N1cGVyLmMgYi9mcy9leHQyL3N1cGVyLmMKaW5kZXggNzczMTY5NS4uMGE3OGRhZSAxMDA2NDQKLS0tIGEvZnMvZXh0Mi9zdXBlci5jCisrKyBiL2ZzL2V4dDIvc3VwZXIuYwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAKIAogLyogUmVhZCBkYXRhIGZyb20gcXVvdGFmaWxlIC0gYXZvaWQgcGFnZWNhY2hlIGFuZCBzdWNoIGJlY2F1c2Ugd2UgY2Fubm90IGFmZm9yZAogICogYWNxdWlyaW5nIHRoZSBsb2Nrcy4uLiBBcyBxdW90YSBmaWxlcyBhcmUgbmV2ZXIgdHJ1bmNhdGVkIGFuZCBxdW90YSBjb2RlCi0gKiBpdHNlbGYgc2VyaWFsaXplcyB0aGUgb3BlcmF0aW9ucyAoYW5kIG5vb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKKyAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm8gb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKICAqIHdlIGRvbid0IGhhdmUgdG8gYmUgYWZyYWlkIG9mIHJhY2VzICovCiBzdGF0aWMgc3NpemVfdCBleHQyX3F1b3RhX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUsIGNoYXIgKmRhdGEsCiAJCQkgICAgICAgc2l6ZV90IGxlbiwgbG9mZl90IG9mZikKZGlmZiAtLWdpdCBhL2ZzL2V4dDIveGF0dHIuYyBiL2ZzL2V4dDIveGF0dHIuYwppbmRleCBjMmU0ZGNlLi41Mjk5NzA2IDEwMDY0NAotLS0gYS9mcy9leHQyL3hhdHRyLmMKKysrIGIvZnMvZXh0Mi94YXR0ci5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiAgICstLS0tLS0tLS0tLS0tLS0tLS0rCiAgKgogICogVGhlIGJsb2NrIGhlYWRlciBpcyBmb2xsb3dlZCBieSBtdWx0aXBsZSBlbnRyeSBkZXNjcmlwdG9ycy4gVGhlc2UgZW50cnkKLSAqIGRlc2NyaXB0b3JzIGFyZSB2YXJpYWJsZSBpbiBzaXplLCBhbmQgYWxsaWduZWQgdG8gRVhUMl9YQVRUUl9QQUQKKyAqIGRlc2NyaXB0b3JzIGFyZSB2YXJpYWJsZSBpbiBzaXplLCBhbmQgYWxpZ25lZCB0byBFWFQyX1hBVFRSX1BBRAogICogYnl0ZSBib3VuZGFyaWVzLiBUaGUgZW50cnkgZGVzY3JpcHRvcnMgYXJlIHNvcnRlZCBieSBhdHRyaWJ1dGUgbmFtZSwKICAqIHNvIHRoYXQgdHdvIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9ja3MgY2FuIGJlIGNvbXBhcmVkIGVmZmljaWVudGx5LgogICoKZGlmZiAtLWdpdCBhL2ZzL2V4dDMvYmFsbG9jLmMgYi9mcy9leHQzL2JhbGxvYy5jCmluZGV4IDE1MzI0MjE4Li5mZTUyMjk3IDEwMDY0NAotLS0gYS9mcy9leHQzL2JhbGxvYy5jCisrKyBiL2ZzL2V4dDMvYmFsbG9jLmMKQEAgLTU5MCw3ICs1OTAsNyBAQAogCQkJCUJVRkZFUl9UUkFDRShkZWJ1Z19iaCwgIkRlbGV0ZWQhIik7CiAJCQkJaWYgKCFiaDJqaChiaXRtYXBfYmgpLT5iX2NvbW1pdHRlZF9kYXRhKQogCQkJCQlCVUZGRVJfVFJBQ0UoZGVidWdfYmgsCi0JCQkJCQkiTm8gY29tbWl0ZWQgZGF0YSBpbiBiaXRtYXAiKTsKKwkJCQkJCSJObyBjb21taXR0ZWQgZGF0YSBpbiBiaXRtYXAiKTsKIAkJCQlCVUZGRVJfVFJBQ0UyKGRlYnVnX2JoLCBiaXRtYXBfYmgsICJiaXRtYXAiKTsKIAkJCQlfX2JyZWxzZShkZWJ1Z19iaCk7CiAJCQl9CkBAIC0xMDYzLDcgKzEwNjMsNyBAQAogCQlyc3Zfd2luZG93X3JlbW92ZShzYiwgbXlfcnN2KTsKIAogCS8qCi0JICogTGV0J3MgYm9vayB0aGUgd2hvbGUgYXZhbGlhYmxlIHdpbmRvdyBmb3Igbm93LiAgV2Ugd2lsbCBjaGVjayB0aGUKKwkgKiBMZXQncyBib29rIHRoZSB3aG9sZSBhdmFpbGFibGUgd2luZG93IGZvciBub3cuICBXZSB3aWxsIGNoZWNrIHRoZQogCSAqIGRpc2sgYml0bWFwIGxhdGVyIGFuZCB0aGVuLCBpZiB0aGVyZSBhcmUgZnJlZSBibG9ja3MgdGhlbiB3ZSBhZGp1c3QKIAkgKiB0aGUgd2luZG93IHNpemUgaWYgaXQncyBsYXJnZXIgdGhhbiByZXF1ZXN0ZWQuCiAJICogT3RoZXJ3aXNlLCB3ZSB3aWxsIHJlbW92ZSB0aGlzIG5vZGUgZnJvbSB0aGUgdHJlZSBuZXh0IHRpbWUKQEAgLTE0NTYsNyArMTQ1Niw3IEBACiAgKgogICogZXh0M19zaG91bGRfcmV0cnlfYWxsb2MoKSBpcyBjYWxsZWQgd2hlbiBFTk9TUEMgaXMgcmV0dXJuZWQsIGFuZCBpZgogICogaXQgaXMgcHJvZml0YWJsZSB0byByZXRyeSB0aGUgb3BlcmF0aW9uLCB0aGlzIGZ1bmN0aW9uIHdpbGwgd2FpdAotICogZm9yIHRoZSBjdXJyZW50IG9yIGNvbW1pdGluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSwgYW5kIHRoZW4KKyAqIGZvciB0aGUgY3VycmVudCBvciBjb21taXR0aW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlLCBhbmQgdGhlbgogICogcmV0dXJuIFRSVUUuCiAgKgogICogaWYgdGhlIHRvdGFsIG51bWJlciBvZiByZXRyaWVzIGV4Y2VlZCB0aHJlZSB0aW1lcywgcmV0dXJuIEZBTFNFLgpAQCAtMTYzMiw5ICsxNjMyLDkgQEAKIAkJCWdvdG8gYWxsb2NhdGVkOwogCX0KIAkvKgotCSAqIFdlIG1heSBlbmQgdXAgYSBib2d1cyBlYWxpZXIgRU5PU1BDIGVycm9yIGR1ZSB0bworCSAqIFdlIG1heSBlbmQgdXAgYSBib2d1cyBlYXJsaWVyIEVOT1NQQyBlcnJvciBkdWUgdG8KIAkgKiBmaWxlc3lzdGVtIGlzICJmdWxsIiBvZiByZXNlcnZhdGlvbnMsIGJ1dAotCSAqIHRoZXJlIG1heWJlIGluZGVlZCBmcmVlIGJsb2NrcyBhdmFsaWFibGUgb24gZGlzaworCSAqIHRoZXJlIG1heWJlIGluZGVlZCBmcmVlIGJsb2NrcyBhdmFpbGFibGUgb24gZGlzawogCSAqIEluIHRoaXMgY2FzZSwgd2UganVzdCBmb3JnZXQgYWJvdXQgdGhlIHJlc2VydmF0aW9ucwogCSAqIGp1c3QgZG8gYmxvY2sgYWxsb2NhdGlvbiBhcyB3aXRob3V0IHJlc2VydmF0aW9ucy4KIAkgKi8KZGlmZiAtLWdpdCBhL2ZzL2V4dDMvaW5vZGUuYyBiL2ZzL2V4dDMvaW5vZGUuYwppbmRleCBmZTI1NDFkLi42OGIyZTQzIDEwMDY0NAotLS0gYS9mcy9leHQzL2lub2RlLmMKKysrIGIvZnMvZXh0My9pbm9kZS5jCkBAIC0yMDU1LDcgKzIwNTUsNyBAQAogICoKICAqCVdoZW4gd2UgZG8gdHJ1bmNhdGUoKSB3ZSBtYXkgaGF2ZSB0byBjbGVhbiB0aGUgZW5kcyBvZiBzZXZlcmFsCiAgKglpbmRpcmVjdCBibG9ja3MgYnV0IGxlYXZlIHRoZSBibG9ja3MgdGhlbXNlbHZlcyBhbGl2ZS4gQmxvY2sgaXMKLSAqCXBhcnRpYWxseSB0cnVuY2F0ZWQgaWYgc29tZSBkYXRhIGJlbG93IHRoZSBuZXcgaV9zaXplIGlzIHJlZmVyZWQKKyAqCXBhcnRpYWxseSB0cnVuY2F0ZWQgaWYgc29tZSBkYXRhIGJlbG93IHRoZSBuZXcgaV9zaXplIGlzIHJlZmVycmVkCiAgKglmcm9tIGl0IChhbmQgaXQgaXMgb24gdGhlIHBhdGggdG8gdGhlIGZpcnN0IGNvbXBsZXRlbHkgdHJ1bmNhdGVkCiAgKglkYXRhIGJsb2NrLCBpbmRlZWQpLiAgV2UgaGF2ZSB0byBmcmVlIHRoZSB0b3Agb2YgdGhhdCBwYXRoIGFsb25nCiAgKgl3aXRoIGV2ZXJ5dGhpbmcgdG8gdGhlIHJpZ2h0IG9mIHRoZSBwYXRoLiBTaW5jZSBubyBhbGxvY2F0aW9uCkBAIC0yMTg0LDcgKzIxODQsNyBAQAogICogQGZpcnN0OglhcnJheSBvZiBibG9jayBudW1iZXJzCiAgKiBAbGFzdDoJcG9pbnRzIGltbWVkaWF0ZWx5IHBhc3QgdGhlIGVuZCBvZiBhcnJheQogICoKLSAqIFdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJlZCBmcm9tIHRoYXQgYXJyYXkgKG51bWJlcnMgYXJlIHN0b3JlZCBhcworICogV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcnJlZCBmcm9tIHRoYXQgYXJyYXkgKG51bWJlcnMgYXJlIHN0b3JlZCBhcwogICogbGl0dGxlLWVuZGlhbiAzMi1iaXQpIGFuZCB1cGRhdGluZyBAaW5vZGUtPmlfYmxvY2tzIGFwcHJvcHJpYXRlbHkuCiAgKgogICogV2UgYWNjdW11bGF0ZSBjb250aWd1b3VzIHJ1bnMgb2YgYmxvY2tzIHRvIGZyZWUuICBDb252ZW5pZW50bHksIGlmIHRoZXNlCkBAIC0yMjcyLDcgKzIyNzIsNyBAQAogICoJQGxhc3Q6CXBvaW50ZXIgaW1tZWRpYXRlbHkgcGFzdCB0aGUgZW5kIG9mIGFycmF5CiAgKglAZGVwdGg6CWRlcHRoIG9mIHRoZSBicmFuY2hlcyB0byBmcmVlCiAgKgotICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcmVkIGZyb20gdGhlc2UgYnJhbmNoZXMgKG51bWJlcnMgYXJlCisgKglXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVycmVkIGZyb20gdGhlc2UgYnJhbmNoZXMgKG51bWJlcnMgYXJlCiAgKglzdG9yZWQgYXMgbGl0dGxlLWVuZGlhbiAzMi1iaXQpIGFuZCB1cGRhdGluZyBAaW5vZGUtPmlfYmxvY2tzCiAgKglhcHByb3ByaWF0ZWx5LgogICovCkBAIC0zMjkxLDcgKzMyOTEsNyBAQAogCWlmIChleHQzX3Nob3VsZF9qb3VybmFsX2RhdGEoaW5vZGUpKQogCQlyZXQgPSAzICogKGJwcCArIGluZGlyZWN0cykgKyAyOwogCWVsc2UKLQkJcmV0ID0gMiAqIChicHAgKyBpbmRpcmVjdHMpICsgMjsKKwkJcmV0ID0gMiAqIChicHAgKyBpbmRpcmVjdHMpICsgaW5kaXJlY3RzICsgMjsKIAogI2lmZGVmIENPTkZJR19RVU9UQQogCS8qIFdlIGtub3cgdGhhdCBzdHJ1Y3R1cmUgd2FzIGFscmVhZHkgYWxsb2NhdGVkIGR1cmluZyBkcXVvdF9pbml0aWFsaXplIHNvCmRpZmYgLS1naXQgYS9mcy9leHQzL3Jlc2l6ZS5jIGIvZnMvZXh0My9yZXNpemUuYwppbmRleCAxMDhiMTQyLi43OTE2ZTRjZSAxMDA2NDQKLS0tIGEvZnMvZXh0My9yZXNpemUuYworKysgYi9mcy9leHQzL3Jlc2l6ZS5jCkBAIC0xMDA5LDcgKzEwMDksNyBAQAogCiAJaWYgKHRlc3Rfb3B0KHNiLCBERUJVRykpCiAJCXByaW50ayhLRVJOX0RFQlVHICJFWFQzLWZzOiBleHRlbmRpbmcgbGFzdCBncm91cCBmcm9tICJFM0ZTQkxLCi0JCSAgICAgICAiIHVwdG8gIkUzRlNCTEsiIGJsb2Nrc1xuIiwKKwkJICAgICAgICIgdXAgdG8gIkUzRlNCTEsiIGJsb2Nrc1xuIiwKIAkJICAgICAgIG9fYmxvY2tzX2NvdW50LCBuX2Jsb2Nrc19jb3VudCk7CiAKIAlpZiAobl9ibG9ja3NfY291bnQgPT0gMCB8fCBuX2Jsb2Nrc19jb3VudCA9PSBvX2Jsb2Nrc19jb3VudCkKZGlmZiAtLWdpdCBhL2ZzL2V4dDMvc3VwZXIuYyBiL2ZzL2V4dDMvc3VwZXIuYwppbmRleCAwNzE2ODlmLi4zYzZhOWUwIDEwMDY0NAotLS0gYS9mcy9leHQzL3N1cGVyLmMKKysrIGIvZnMvZXh0My9zdXBlci5jCkBAIC0yOTI1LDcgKzI5MjUsNyBAQAogCiAvKiBSZWFkIGRhdGEgZnJvbSBxdW90YWZpbGUgLSBhdm9pZCBwYWdlY2FjaGUgYW5kIHN1Y2ggYmVjYXVzZSB3ZSBjYW5ub3QgYWZmb3JkCiAgKiBhY3F1aXJpbmcgdGhlIGxvY2tzLi4uIEFzIHF1b3RhIGZpbGVzIGFyZSBuZXZlciB0cnVuY2F0ZWQgYW5kIHF1b3RhIGNvZGUKLSAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm9vbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQorICogaXRzZWxmIHNlcmlhbGl6ZXMgdGhlIG9wZXJhdGlvbnMgKGFuZCBubyBvbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQogICogd2UgZG9uJ3QgaGF2ZSB0byBiZSBhZnJhaWQgb2YgcmFjZXMgKi8KIHN0YXRpYyBzc2l6ZV90IGV4dDNfcXVvdGFfcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSwgY2hhciAqZGF0YSwKIAkJCSAgICAgICBzaXplX3QgbGVuLCBsb2ZmX3Qgb2ZmKQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9iYWxsb2MuYyBiL2ZzL2V4dDQvYmFsbG9jLmMKaW5kZXggOTdiOTcwZS4uMWM2NzEzOSAxMDA2NDQKLS0tIGEvZnMvZXh0NC9iYWxsb2MuYworKysgYi9mcy9leHQ0L2JhbGxvYy5jCkBAIC01NDcsNyArNTQ3LDcgQEAKICAqCiAgKiBleHQ0X3Nob3VsZF9yZXRyeV9hbGxvYygpIGlzIGNhbGxlZCB3aGVuIEVOT1NQQyBpcyByZXR1cm5lZCwgYW5kIGlmCiAgKiBpdCBpcyBwcm9maXRhYmxlIHRvIHJldHJ5IHRoZSBvcGVyYXRpb24sIHRoaXMgZnVuY3Rpb24gd2lsbCB3YWl0Ci0gKiBmb3IgdGhlIGN1cnJlbnQgb3IgY29tbWl0aW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlLCBhbmQgdGhlbgorICogZm9yIHRoZSBjdXJyZW50IG9yIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gdG8gY29tcGxldGUsIGFuZCB0aGVuCiAgKiByZXR1cm4gVFJVRS4KICAqCiAgKiBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIHJldHJpZXMgZXhjZWVkIHRocmVlIHRpbWVzLCByZXR1cm4gRkFMU0UuCmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2ZzL2V4dDQvZXh0ZW50cy5jCmluZGV4IGRkMmNiNTAuLjQ4OTBkNmYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0ZW50cy5jCisrKyBiL2ZzL2V4dDQvZXh0ZW50cy5jCkBAIC0xNzI5LDcgKzE3MjksNyBAQAogCQlCVUdfT04obnBhdGgtPnBfZGVwdGggIT0gcGF0aC0+cF9kZXB0aCk7CiAJCWVoID0gbnBhdGhbZGVwdGhdLnBfaGRyOwogCQlpZiAobGUxNl90b19jcHUoZWgtPmVoX2VudHJpZXMpIDwgbGUxNl90b19jcHUoZWgtPmVoX21heCkpIHsKLQkJCWV4dF9kZWJ1ZygibmV4dCBsZWFmIGlzbnQgZnVsbCglZClcbiIsCisJCQlleHRfZGVidWcoIm5leHQgbGVhZiBpc24ndCBmdWxsKCVkKVxuIiwKIAkJCQkgIGxlMTZfdG9fY3B1KGVoLT5laF9lbnRyaWVzKSk7CiAJCQlwYXRoID0gbnBhdGg7CiAJCQlnb3RvIHJlcGVhdDsKQEAgLTI1MzMsNyArMjUzMyw3IEBACiAvKgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZXh0NF9leHRfbWFwX2Jsb2NrcygpIGlmIHNvbWVvbmUgdHJpZXMgdG8gd3JpdGUKICAqIHRvIGFuIHVuaW5pdGlhbGl6ZWQgZXh0ZW50LiBJdCBtYXkgcmVzdWx0IGluIHNwbGl0dGluZyB0aGUgdW5pbml0aWFsaXplZAotICogZXh0ZW50IGludG8gbXVsdGlwbGUgZXh0ZW50cyAodXB0byB0aHJlZSAtIG9uZSBpbml0aWFsaXplZCBhbmQgdHdvCisgKiBleHRlbnQgaW50byBtdWx0aXBsZSBleHRlbnRzICh1cCB0byB0aHJlZSAtIG9uZSBpbml0aWFsaXplZCBhbmQgdHdvCiAgKiB1bmluaXRpYWxpemVkKS4KICAqIFRoZXJlIGFyZSB0aHJlZSBwb3NzaWJpbGl0aWVzOgogICogICBhPiBUaGVyZSBpcyBubyBzcGxpdCByZXF1aXJlZDogRW50aXJlIGV4dGVudCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQKQEAgLTMxNzQsNyArMzE3NCw3IEBACiAJCQkJCQkgICBwYXRoLCBmbGFncyk7CiAJCS8qCiAJCSAqIEZsYWcgdGhlIGlub2RlKG5vbiBhaW8gY2FzZSkgb3IgZW5kX2lvIHN0cnVjdCAoYWlvIGNhc2UpCi0JCSAqIHRoYXQgdGhpcyBJTyBuZWVkcyB0byBjb252ZXJ0aW9uIHRvIHdyaXR0ZW4gd2hlbiBJTyBpcworCQkgKiB0aGF0IHRoaXMgSU8gbmVlZHMgdG8gY29udmVyc2lvbiB0byB3cml0dGVuIHdoZW4gSU8gaXMKIAkJICogY29tcGxldGVkCiAJCSAqLwogCQlpZiAoaW8gJiYgIShpby0+ZmxhZyAmIEVYVDRfSU9fRU5EX1VOV1JJVFRFTikpIHsKQEAgLTM0NjAsMTAgKzM0NjAsMTAgQEAKIAkJZXh0NF9leHRfbWFya191bmluaXRpYWxpemVkKCZuZXdleCk7CiAJCS8qCiAJCSAqIGlvX2VuZCBzdHJ1Y3R1cmUgd2FzIGNyZWF0ZWQgZm9yIGV2ZXJ5IElPIHdyaXRlIHRvIGFuCi0JCSAqIHVuaW5pdGlhbGl6ZWQgZXh0ZW50LiBUbyBhdm9pZCB1bmVjZXNzYXJ5IGNvbnZlcnNpb24sCisJCSAqIHVuaW5pdGlhbGl6ZWQgZXh0ZW50LiBUbyBhdm9pZCB1bm5lY2Vzc2FyeSBjb252ZXJzaW9uLAogCQkgKiBoZXJlIHdlIGZsYWcgdGhlIElPIHRoYXQgcmVhbGx5IG5lZWRzIHRoZSBjb252ZXJzaW9uLgogCQkgKiBGb3Igbm9uIGFzeWNuIGRpcmVjdCBJTyBjYXNlLCBmbGFnIHRoZSBpbm9kZSBzdGF0ZQotCQkgKiB0aGF0IHdlIG5lZWQgdG8gcGVyZm9ybSBjb252ZXJ0aW9uIHdoZW4gSU8gaXMgZG9uZS4KKwkJICogdGhhdCB3ZSBuZWVkIHRvIHBlcmZvcm0gY29udmVyc2lvbiB3aGVuIElPIGlzIGRvbmUuCiAJCSAqLwogCQlpZiAoKGZsYWdzICYgRVhUNF9HRVRfQkxPQ0tTX1BSRV9JTykpIHsKIAkJCWlmIChpbyAmJiAhKGlvLT5mbGFnICYgRVhUNF9JT19FTkRfVU5XUklUVEVOKSkgewpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9mc3luYy5jIGIvZnMvZXh0NC9mc3luYy5jCmluZGV4IDdmNzQwMTkuLjQ2NzNiYzAgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZnN5bmMuYworKysgYi9mcy9leHQ0L2ZzeW5jLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogCQkgKiB0byB0aGUgd29yay10by1iZSBzY2hlZHVsZSBpcyBmcmVlZC4KIAkJICoKIAkJICogVGh1cyB3ZSBuZWVkIHRvIGtlZXAgdGhlIGlvIHN0cnVjdHVyZSBzdGlsbCB2YWxpZCBoZXJlIGFmdGVyCi0JCSAqIGNvbnZlcnRpb24gZmluaXNoZWQuIFRoZSBpbyBzdHJ1Y3R1cmUgaGFzIGEgZmxhZyB0bworCQkgKiBjb252ZXJzaW9uIGZpbmlzaGVkLiBUaGUgaW8gc3RydWN0dXJlIGhhcyBhIGZsYWcgdG8KIAkJICogYXZvaWQgZG91YmxlIGNvbnZlcnRpbmcgZnJvbSBib3RoIGZzeW5jIGFuZCBiYWNrZ3JvdW5kIHdvcmsKIAkJICogcXVldWUgd29yay4KIAkJICovCmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmMKaW5kZXggMWE4NjI4Mi4uYWQ4ZTMwMyAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbm9kZS5jCisrKyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtMjU4OCw3ICsyNTg4LDcgQEAKICAqIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgaG9sZXMgZmlsbGVkIGZyb20gZXh0NF9wYWdlX21rd3JpdGUoKS4gV2UgZXZlbiBkb24ndAogICogbmVlZCB0byBmaWxlIHRoZSBpbm9kZSB0byB0aGUgdHJhbnNhY3Rpb24ncyBsaXN0IGluIG9yZGVyZWQgbW9kZSBiZWNhdXNlIGlmCiAgKiB3ZSBhcmUgd3JpdGluZyBiYWNrIGRhdGEgYWRkZWQgYnkgd3JpdGUoKSwgdGhlIGlub2RlIGlzIGFscmVhZHkgdGhlcmUgYW5kIGlmCi0gKiB3ZSBhcmUgd3JpdGluZyBiYWNrIGRhdGEgbW9kaWZpZWQgdmlhIG1tYXAoKSwgbm9vbmUgZ3VhcmFudGVlcyBpbiB3aGljaAorICogd2UgYXJlIHdyaXRpbmcgYmFjayBkYXRhIG1vZGlmaWVkIHZpYSBtbWFwKCksIG5vIG9uZSBndWFyYW50ZWVzIGluIHdoaWNoCiAgKiB0cmFuc2FjdGlvbiB0aGUgZGF0YSB3aWxsIGhpdCB0aGUgZGlzay4gSW4gY2FzZSB3ZSBhcmUgam91cm5hbGluZyBkYXRhLCB3ZQogICogY2Fubm90IHN0YXJ0IHRyYW5zYWN0aW9uIGRpcmVjdGx5IGJlY2F1c2UgdHJhbnNhY3Rpb24gc3RhcnQgcmFua3MgYWJvdmUgcGFnZQogICogbG9jayBzbyB3ZSBoYXZlIHRvIGRvIHNvbWUgbWFnaWMuCkBAIC0yNjkwLDcgKzI2OTAsNyBAQAogCiAvKgogICogVGhpcyBpcyBjYWxsZWQgdmlhIGV4dDRfZGFfd3JpdGVwYWdlcygpIHRvCi0gKiBjYWx1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGNyZWRpdHMgdG8gcmVzZXJ2ZSB0byBmaXQKKyAqIGNhbGN1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGNyZWRpdHMgdG8gcmVzZXJ2ZSB0byBmaXQKICAqIGEgc2luZ2xlIGV4dGVudCBhbGxvY2F0aW9uIGludG8gYSBzaW5nbGUgdHJhbnNhY3Rpb24sCiAgKiBleHQ0X2RhX3dyaXRwZWFnZXMoKSB3aWxsIGxvb3AgY2FsbGluZyB0aGlzIGJlZm9yZQogICogdGhlIGJsb2NrIGFsbG9jYXRpb24uCkBAIC0zMzA0LDcgKzMzMDQsNyBAQAogCSAqIHRoZSBwYWdlcyBieSBjYWxsaW5nIHJlZGlydHlfcGFnZV9mb3Jfd3JpdGVwYWdlKCkgYnV0IHRoYXQKIAkgKiB3b3VsZCBiZSB1Z2x5IGluIHRoZSBleHRyZW1lLiAgU28gaW5zdGVhZCB3ZSB3b3VsZCBuZWVkIHRvCiAJICogcmVwbGljYXRlIHBhcnRzIG9mIHRoZSBjb2RlIGluIHRoZSBhYm92ZSBmdW5jdGlvbnMsCi0JICogc2ltcGxpZnlpbmcgdGhlbSBiZWN1YXNlIHdlIHdvdWxkbid0IGFjdHVhbGx5IGludGVuZCB0bworCSAqIHNpbXBsaWZ5aW5nIHRoZW0gYmVjYXVzZSB3ZSB3b3VsZG4ndCBhY3R1YWxseSBpbnRlbmQgdG8KIAkgKiB3cml0ZSBvdXQgdGhlIHBhZ2VzLCBidXQgcmF0aGVyIG9ubHkgY29sbGVjdCBjb250aWd1b3VzCiAJICogbG9naWNhbCBibG9jayBleHRlbnRzLCBjYWxsIHRoZSBtdWx0aS1ibG9jayBhbGxvY2F0b3IsIGFuZAogCSAqIHRoZW4gdXBkYXRlIHRoZSBidWZmZXIgaGVhZHMgd2l0aCB0aGUgYmxvY2sgYWxsb2NhdGlvbnMuCkBAIC0zNjk0LDcgKzM2OTQsNyBAQAogICoKICAqIFRoZSB1bndycml0dGVuIGV4dGVudHMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gd3JpdHRlbiB3aGVuIERJTyBpcyBjb21wbGV0ZWQuCiAgKiBGb3IgYXN5bmMgZGlyZWN0IElPLCBzaW5jZSB0aGUgSU8gbWF5IHN0aWxsIHBlbmRpbmcgd2hlbiByZXR1cm4sIHdlCi0gKiBzZXQgdXAgYW4gZW5kX2lvIGNhbGwgYmFjayBmdW5jdGlvbiwgd2hpY2ggd2lsbCBkbyB0aGUgY29udmVydGlvbgorICogc2V0IHVwIGFuIGVuZF9pbyBjYWxsIGJhY2sgZnVuY3Rpb24sIHdoaWNoIHdpbGwgZG8gdGhlIGNvbnZlcnNpb24KICAqIHdoZW4gYXN5bmMgZGlyZWN0IElPIGNvbXBsZXRlZC4KICAqCiAgKiBJZiB0aGUgT19ESVJFQ1Qgd3JpdGUgd2lsbCBleHRlbmQgdGhlIGZpbGUgdGhlbiBhZGQgdGhpcyBpbm9kZSB0byB0aGUKQEAgLTM3MTcsNyArMzcxNyw3IEBACiAgCQkgKiBXZSBjb3VsZCBkaXJlY3Qgd3JpdGUgdG8gaG9sZXMgYW5kIGZhbGxvY2F0ZS4KIAkJICoKICAJCSAqIEFsbG9jYXRlZCBibG9ja3MgdG8gZmlsbCB0aGUgaG9sZSBhcmUgbWFya2VkIGFzIHVuaW5pdGlhbGl6ZWQKLSAJCSAqIHRvIHByZXZlbnQgcGFyYWxlbCBidWZmZXJlZCByZWFkIHRvIGV4cG9zZSB0aGUgc3RhbGUgZGF0YQorIAkJICogdG8gcHJldmVudCBwYXJhbGxlbCBidWZmZXJlZCByZWFkIHRvIGV4cG9zZSB0aGUgc3RhbGUgZGF0YQogIAkJICogYmVmb3JlIERJTyBjb21wbGV0ZSB0aGUgZGF0YSBJTy4KIAkJICoKICAJCSAqIEFzIHRvIHByZXZpb3VzbHkgZmFsbG9jYXRlZCBleHRlbnRzLCBleHQ0IGdldF9ibG9jawpAQCAtMzc3OCw3ICszNzc4LDcgQEAKIAkJCWludCBlcnI7CiAJCQkvKgogCQkJICogZm9yIG5vbiBBSU8gY2FzZSwgc2luY2UgdGhlIElPIGlzIGFscmVhZHkKLQkJCSAqIGNvbXBsZXRlZCwgd2UgY291bGQgZG8gdGhlIGNvbnZlcnRpb24gcmlnaHQgaGVyZQorCQkJICogY29tcGxldGVkLCB3ZSBjb3VsZCBkbyB0aGUgY29udmVyc2lvbiByaWdodCBoZXJlCiAJCQkgKi8KIAkJCWVyciA9IGV4dDRfY29udmVydF91bndyaXR0ZW5fZXh0ZW50cyhpbm9kZSwKIAkJCQkJCQkgICAgIG9mZnNldCwgcmV0KTsKQEAgLTQwMjUsNyArNDAyNSw3IEBACiAgKgogICoJV2hlbiB3ZSBkbyB0cnVuY2F0ZSgpIHdlIG1heSBoYXZlIHRvIGNsZWFuIHRoZSBlbmRzIG9mIHNldmVyYWwKICAqCWluZGlyZWN0IGJsb2NrcyBidXQgbGVhdmUgdGhlIGJsb2NrcyB0aGVtc2VsdmVzIGFsaXZlLiBCbG9jayBpcwotICoJcGFydGlhbGx5IHRydW5jYXRlZCBpZiBzb21lIGRhdGEgYmVsb3cgdGhlIG5ldyBpX3NpemUgaXMgcmVmZXJlZAorICoJcGFydGlhbGx5IHRydW5jYXRlZCBpZiBzb21lIGRhdGEgYmVsb3cgdGhlIG5ldyBpX3NpemUgaXMgcmVmZXJyZWQKICAqCWZyb20gaXQgKGFuZCBpdCBpcyBvbiB0aGUgcGF0aCB0byB0aGUgZmlyc3QgY29tcGxldGVseSB0cnVuY2F0ZWQKICAqCWRhdGEgYmxvY2ssIGluZGVlZCkuICBXZSBoYXZlIHRvIGZyZWUgdGhlIHRvcCBvZiB0aGF0IHBhdGggYWxvbmcKICAqCXdpdGggZXZlcnl0aGluZyB0byB0aGUgcmlnaHQgb2YgdGhlIHBhdGguIFNpbmNlIG5vIGFsbG9jYXRpb24KQEAgLTQxNjksNyArNDE2OSw3IEBACiAgKiBAZmlyc3Q6CWFycmF5IG9mIGJsb2NrIG51bWJlcnMKICAqIEBsYXN0Oglwb2ludHMgaW1tZWRpYXRlbHkgcGFzdCB0aGUgZW5kIG9mIGFycmF5CiAgKgotICogV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcmVkIGZyb20gdGhhdCBhcnJheSAobnVtYmVycyBhcmUgc3RvcmVkIGFzCisgKiBXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVycmVkIGZyb20gdGhhdCBhcnJheSAobnVtYmVycyBhcmUgc3RvcmVkIGFzCiAgKiBsaXR0bGUtZW5kaWFuIDMyLWJpdCkgYW5kIHVwZGF0aW5nIEBpbm9kZS0+aV9ibG9ja3MgYXBwcm9wcmlhdGVseS4KICAqCiAgKiBXZSBhY2N1bXVsYXRlIGNvbnRpZ3VvdXMgcnVucyBvZiBibG9ja3MgdG8gZnJlZS4gIENvbnZlbmllbnRseSwgaWYgdGhlc2UKQEAgLTQyNjEsNyArNDI2MSw3IEBACiAgKglAbGFzdDoJcG9pbnRlciBpbW1lZGlhdGVseSBwYXN0IHRoZSBlbmQgb2YgYXJyYXkKICAqCUBkZXB0aDoJZGVwdGggb2YgdGhlIGJyYW5jaGVzIHRvIGZyZWUKICAqCi0gKglXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVyZWQgZnJvbSB0aGVzZSBicmFuY2hlcyAobnVtYmVycyBhcmUKKyAqCVdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJyZWQgZnJvbSB0aGVzZSBicmFuY2hlcyAobnVtYmVycyBhcmUKICAqCXN0b3JlZCBhcyBsaXR0bGUtZW5kaWFuIDMyLWJpdCkgYW5kIHVwZGF0aW5nIEBpbm9kZS0+aV9ibG9ja3MKICAqCWFwcHJvcHJpYXRlbHkuCiAgKi8KQEAgLTU0NzgsNyArNTQ3OCw3IEBACiB9CiAKIC8qCi0gKiBDYWx1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGNyZWRpdHMgdG8gcmVzZXJ2ZSB0byBmaXQKKyAqIENhbGN1bGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGNyZWRpdHMgdG8gcmVzZXJ2ZSB0byBmaXQKICAqIHRoZSBtb2RpZmljYXRpb24gb2YgYSBzaW5nbGUgcGFnZXMgaW50byBhIHNpbmdsZSB0cmFuc2FjdGlvbiwKICAqIHdoaWNoIG1heSBpbmNsdWRlIG11bHRpcGxlIGNodW5rcyBvZiBibG9jayBhbGxvY2F0aW9ucy4KICAqCmRpZmYgLS1naXQgYS9mcy9leHQ0L21iYWxsb2MuYyBiL2ZzL2V4dDQvbWJhbGxvYy5jCmluZGV4IGE1ODM3YTguLmQ4YTE2ZWUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbWJhbGxvYy5jCisrKyBiL2ZzL2V4dDQvbWJhbGxvYy5jCkBAIC05Miw3ICs5Miw3IEBACiAgKiBiZXR3ZWVuIENQVXMuIEl0IGlzIHBvc3NpYmxlIHRvIGdldCBzY2hlZHVsZWQgYXQgdGhpcyBwb2ludC4KICAqCiAgKiBUaGUgbG9jYWxpdHkgZ3JvdXAgcHJlYWxsb2Mgc3BhY2UgaXMgdXNlZCBsb29raW5nIGF0IHdoZXRoZXIgd2UgaGF2ZQotICogZW5vdWdoIGZyZWUgc3BhY2UgKHBhX2ZyZWUpIHdpdGhpbmcgdGhlIHByZWFsbG9jIHNwYWNlLgorICogZW5vdWdoIGZyZWUgc3BhY2UgKHBhX2ZyZWUpIHdpdGhpbiB0aGUgcHJlYWxsb2Mgc3BhY2UuCiAgKgogICogSWYgd2UgY2FuJ3QgYWxsb2NhdGUgYmxvY2tzIHZpYSBpbm9kZSBwcmVhbGxvYyBvci9hbmQgbG9jYWxpdHkgZ3JvdXAKICAqIHByZWFsbG9jIHRoZW4gd2UgbG9vayBhdCB0aGUgYnVkZHkgY2FjaGUuIFRoZSBidWRkeSBjYWNoZSBpcyByZXByZXNlbnRlZApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9taWdyYXRlLmMgYi9mcy9leHQ0L21pZ3JhdGUuYwppbmRleCBkMWJhZmE1Li45MjgxNmI0IDEwMDY0NAotLS0gYS9mcy9leHQ0L21pZ3JhdGUuYworKysgYi9mcy9leHQ0L21pZ3JhdGUuYwpAQCAtNTE3LDcgKzUxNyw3IEBACiAJICogc3RhcnQgd2l0aCBvbmUgY3JlZGl0IGFjY291bnRlZCBmb3IKIAkgKiBzdXBlcmJsb2NrIG1vZGlmaWNhdGlvbi4KIAkgKgotCSAqIEZvciB0aGUgdG1wX2lub2RlIHdlIGFscmVhZHkgaGF2ZSBjb21taXRlZCB0aGUKKwkgKiBGb3IgdGhlIHRtcF9pbm9kZSB3ZSBhbHJlYWR5IGhhdmUgY29tbWl0dGVkIHRoZQogCSAqIHRyYXNjYXRpb24gdGhhdCBjcmVhdGVkIHRoZSBpbm9kZS4gTGF0ZXIgYXMgYW5kCiAJICogd2hlbiB3ZSBhZGQgZXh0ZW50cyB3ZSBleHRlbnQgdGhlIGpvdXJuYWwKIAkgKi8KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuYwppbmRleCAyMjU0NmFkLi4wNTY0NzRiIDEwMDY0NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9zdXBlci5jCkBAIC02MTcsNyArNjE3LDcgQEAKIAkgKiBmaWxlc3lzdGVtIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4gbWFya2VkIHJlYWQvb25seSBhbmQgdGhlCiAJICogam91cm5hbCBoYXMgYmVlbiBhYm9ydGVkLiAgV2UgcmV0dXJuIDEgYXMgYSBoaW50IHRvIGNhbGxlcnMKIAkgKiB3aG8gbWlnaHQgd2hhdCB0byB1c2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tCi0JICogZXh0NF9ncnBfbG9ja2VkX2Vycm9yKCkgdG8gZGlzdGluZ3Vpc2ggYmV3ZWVuIHRoZQorCSAqIGV4dDRfZ3JwX2xvY2tlZF9lcnJvcigpIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlCiAJICogRVJST1JTX0NPTlQgYW5kIEVSUk9SU19STyBjYXNlLCBhbmQgcGVyaGFwcyByZXR1cm4gbW9yZQogCSAqIGFnZ3Jlc3NpdmVseSBmcm9tIHRoZSBleHQ0IGZ1bmN0aW9uIGluIHF1ZXN0aW9uLCB3aXRoIGEKIAkgKiBtb3JlIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCkBAIC00NjI0LDcgKzQ2MjQsNyBAQAogCiAvKiBSZWFkIGRhdGEgZnJvbSBxdW90YWZpbGUgLSBhdm9pZCBwYWdlY2FjaGUgYW5kIHN1Y2ggYmVjYXVzZSB3ZSBjYW5ub3QgYWZmb3JkCiAgKiBhY3F1aXJpbmcgdGhlIGxvY2tzLi4uIEFzIHF1b3RhIGZpbGVzIGFyZSBuZXZlciB0cnVuY2F0ZWQgYW5kIHF1b3RhIGNvZGUKLSAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm9vbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQorICogaXRzZWxmIHNlcmlhbGl6ZXMgdGhlIG9wZXJhdGlvbnMgKGFuZCBubyBvbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQogICogd2UgZG9uJ3QgaGF2ZSB0byBiZSBhZnJhaWQgb2YgcmFjZXMgKi8KIHN0YXRpYyBzc2l6ZV90IGV4dDRfcXVvdGFfcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSwgY2hhciAqZGF0YSwKIAkJCSAgICAgICBzaXplX3QgbGVuLCBsb2ZmX3Qgb2ZmKQpkaWZmIC0tZ2l0IGEvZnMvZnJlZXZ4ZnMvdnhmc19mc2hlYWQuYyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfZnNoZWFkLmMKaW5kZXggNzg5NDhiNC4uYzlhNmE5NCAxMDA2NDQKLS0tIGEvZnMvZnJlZXZ4ZnMvdnhmc19mc2hlYWQuYworKysgYi9mcy9mcmVldnhmcy92eGZzX2ZzaGVhZC5jCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJZ290byBvdXRfZnJlZV9wZnA7CiAJfQogCWlmICghVlhGU19JU0lMVChWWEZTX0lOTyhpbmZwLT52c2lfc3RpbGlzdCkpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAidnhmczogc3RydWN0dWFsIGxpc3QgaW5vZGUgaXMgb2Ygd3JvbmcgdHlwZSAoJXgpXG4iLAorCQlwcmludGsoS0VSTl9FUlIgInZ4ZnM6IHN0cnVjdHVyYWwgbGlzdCBpbm9kZSBpcyBvZiB3cm9uZyB0eXBlICgleClcbiIsCiAJCQkJVlhGU19JTk8oaW5mcC0+dnNpX3N0aWxpc3QpLT52aWlfbW9kZSAmIFZYRlNfVFlQRV9NQVNLKTsgCiAJCWdvdG8gb3V0X2lwdXRfc3RpbGlzdDsKIAl9CmRpZmYgLS1naXQgYS9mcy9mcmVldnhmcy92eGZzX2xvb2t1cC5jIGIvZnMvZnJlZXZ4ZnMvdnhmc19sb29rdXAuYwppbmRleCA2YzUxMzFkLi4zMzYwZjFlIDEwMDY0NAotLS0gYS9mcy9mcmVldnhmcy92eGZzX2xvb2t1cC5jCisrKyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfbG9va3VwLmMKQEAgLTE2Miw3ICsxNjIsNyBAQAogLyoqCiAgKiB2eGZzX2lub2RlX2J5X25hbWUgLSBmaW5kIGlub2RlIG51bWJlciBmb3IgZGVudHJ5CiAgKiBAZGlwOglkaXJlY3RvcnkgdG8gc2VhcmNoIGluCi0gKiBAZHA6CQlkZW50cnkgd2Ugc2VhY2ggZm9yCisgKiBAZHA6CQlkZW50cnkgd2Ugc2VhcmNoIGZvcgogICoKICAqIERlc2NyaXB0aW9uOgogICogICB2eGZzX2lub2RlX2J5X25hbWUgZmluZHMgb3V0IHRoZSBpbm9kZSBudW1iZXIgb2YKZGlmZiAtLWdpdCBhL2ZzL2ZyZWV2eGZzL3Z4ZnNfb2x0LmggYi9mcy9mcmVldnhmcy92eGZzX29sdC5oCmluZGV4IGQ4MzI0MjkuLmI3YjNhZjUgMTAwNjQ0Ci0tLSBhL2ZzL2ZyZWV2eGZzL3Z4ZnNfb2x0LmgKKysrIGIvZnMvZnJlZXZ4ZnMvdnhmc19vbHQuaApAQCAtNjAsNyArNjAsNyBAQAogICoKICAqIFRoZSBPYmplY3QgTG9jYXRpb24gVGFibGUgaGVhZGVyIGlzIHBsYWNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2gKICAqIE9MVCBleHRlbnQuICBJdCBpcyB1c2VkIHRvIGZpbmcgY2VydGFpbiBmaWxlc3lzdGVtLXdpZGUgbWV0YWRhdGEsIGUuZy4KLSAqIHRoZSBpbml0YWwgaW5vZGUgbGlzdCwgdGhlIGZpbGVzZXQgaGVhZGVyIG9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi4KKyAqIHRoZSBpbml0aWFsIGlub2RlIGxpc3QsIHRoZSBmaWxlc2V0IGhlYWRlciBvciB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uCiAgKi8KIHN0cnVjdCB2eGZzX29sdCB7CiAJdV9pbnQzMl90CW9sdF9tYWdpYzsJLyogbWFnaWMgbnVtYmVyCQkJKi8KZGlmZiAtLWdpdCBhL2ZzL2ZzLXdyaXRlYmFjay5jIGIvZnMvZnMtd3JpdGViYWNrLmMKaW5kZXggYjVlZDU0MS4uMzQ1OTFlZTggMTAwNjQ0Ci0tLSBhL2ZzL2ZzLXdyaXRlYmFjay5jCisrKyBiL2ZzL2ZzLXdyaXRlYmFjay5jCkBAIC0xNDQsNyArMTQ0LDcgQEAKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqICAgVGhpcyBkb2VzIFdCX1NZTkNfTk9ORSBvcHBvcnR1bmlzdGljIHdyaXRlYmFjay4gVGhlIElPIGlzIG9ubHkKLSAqICAgc3RhcnRlZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgd2UgbWFrZSBubyBndWFyZW50ZWVzIG9uCisgKiAgIHN0YXJ0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIHdlIG1ha2Ugbm8gZ3VhcmFudGVlcyBvbgogICogICBjb21wbGV0aW9uLiBDYWxsZXIgbmVlZCBub3QgaG9sZCBzYiBzX3Vtb3VudCBzZW1hcGhvcmUuCiAgKgogICovCmRpZmYgLS1naXQgYS9mcy9mdXNlL2ZpbGUuYyBiL2ZzL2Z1c2UvZmlsZS5jCmluZGV4IDZlYTAwNzMuLjgyYTY2NDYgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZmlsZS5jCisrKyBiL2ZzL2Z1c2UvZmlsZS5jCkBAIC01MjMsNyArNTIzLDcgQEAKIAkJZ290byBvdXQ7CiAKIAkvKgotCSAqIFBhZ2Ugd3JpdGViYWNrIGNhbiBleHRlbmQgYmV5b25kIHRoZSBsaWZ0aW1lIG9mIHRoZQorCSAqIFBhZ2Ugd3JpdGViYWNrIGNhbiBleHRlbmQgYmV5b25kIHRoZSBsaWZldGltZSBvZiB0aGUKIAkgKiBwYWdlLWNhY2hlIHBhZ2UsIHNvIG1ha2Ugc3VyZSB3ZSByZWFkIGEgcHJvcGVybHkgc3luY2VkCiAJICogcGFnZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2ZzL2dmczIvYm1hcC5jIGIvZnMvZ2ZzMi9ibWFwLmMKaW5kZXggZWYzZGM0Yi4uNzRhZGQyZCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9ibWFwLmMKKysrIGIvZnMvZ2ZzMi9ibWFwLmMKQEAgLTExMzYsNyArMTEzNiw3IEBACiAgKiBlYXJsaWVyIHZlcnNpb25zIG9mIEdGUzIgaGF2ZSBhIGJ1ZyBpbiB0aGUgc3R1ZmZlZCBmaWxlIHJlYWRpbmcKICAqIGNvZGUgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSBidWZmZXIgb3ZlcnJ1biBpZiB0aGUgc2l6ZSBpcyBsYXJnZXIKICAqIHRoYW4gdGhlIG1heCBzdHVmZmVkIGZpbGUgc2l6ZS4gSW4gb3JkZXIgdG8gcHJldmVudCB0aGlzIGZyb20KLSAqIG9jY3VyaW5nLCBzdWNoIGZpbGVzIGFyZSB1bnN0dWZmZWQsIGJ1dCBpbiBvdGhlciBjYXNlcyB3ZSBjYW4KKyAqIG9jY3VycmluZywgc3VjaCBmaWxlcyBhcmUgdW5zdHVmZmVkLCBidXQgaW4gb3RoZXIgY2FzZXMgd2UgY2FuCiAgKiBqdXN0IHVwZGF0ZSB0aGUgaW5vZGUgc2l6ZSBkaXJlY3RseS4KICAqCiAgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG9yIC12ZSBvbiBlcnJvcgpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9nbG9jay5jIGIvZnMvZ2ZzMi9nbG9jay5jCmluZGV4IGUyNDMxMzEuLmYwNzY0M2UgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvZ2xvY2suYworKysgYi9mcy9nZnMyL2dsb2NrLmMKQEAgLTExMjMsNyArMTEyMyw3IEBACiAgKiBAbnVtYmVyOiB0aGUgbG9jayBudW1iZXIKICAqIEBnbG9wczogdGhlIGdsb2NrIG9wZXJhdGlvbnMgZm9yIHRoZSB0eXBlIG9mIGdsb2NrCiAgKiBAc3RhdGU6IHRoZSBzdGF0ZSB0byBhY3F1aXJlIHRoZSBnbG9jayBpbgotICogQGZsYWdzOiBtb2RpZmllciBmbGFncyBmb3IgdGhlIGFxdWlzaXRpb24KKyAqIEBmbGFnczogbW9kaWZpZXIgZmxhZ3MgZm9yIHRoZSBhY3F1aXNpdGlvbgogICogQGdoOiB0aGUgc3RydWN0IGdmczJfaG9sZGVyCiAgKgogICogUmV0dXJuczogZXJybm8KZGlmZiAtLWdpdCBhL2ZzL2dmczIvc3VwZXIuYyBiL2ZzL2dmczIvc3VwZXIuYwppbmRleCBlYzczZWQ3Li5hNGUyM2Q2IDEwMDY0NAotLS0gYS9mcy9nZnMyL3N1cGVyLmMKKysrIGIvZnMvZ2ZzMi9zdXBlci5jCkBAIC02NTcsNyArNjU3LDcgQEAKICAqIEBzZHA6IHRoZSBmaWxlIHN5c3RlbQogICoKICAqIFRoaXMgZnVuY3Rpb24gZmx1c2hlcyBkYXRhIGFuZCBtZXRhIGRhdGEgZm9yIGFsbCBtYWNoaW5lcyBieQotICogYXF1aXJpbmcgdGhlIHRyYW5zYWN0aW9uIGxvZyBleGNsdXNpdmVseS4gIEFsbCBqb3VybmFscyBhcmUKKyAqIGFjcXVpcmluZyB0aGUgdHJhbnNhY3Rpb24gbG9nIGV4Y2x1c2l2ZWx5LiAgQWxsIGpvdXJuYWxzIGFyZQogICogZW5zdXJlZCB0byBiZSBpbiBhIGNsZWFuIHN0YXRlIGFzIHdlbGwuCiAgKgogICogUmV0dXJuczogZXJybm8KZGlmZiAtLWdpdCBhL2ZzL2piZC9jb21taXQuYyBiL2ZzL2piZC9jb21taXQuYwppbmRleCBkYTg3MWVlLi42OWIxODA0IDEwMDY0NAotLS0gYS9mcy9qYmQvY29tbWl0LmMKKysrIGIvZnMvamJkL2NvbW1pdC5jCkBAIC0zNjIsNyArMzYyLDcgQEAKIAkgKiB3ZSBkbyBub3QgcmVxdWlyZSBpdCB0byByZW1lbWJlciBleGFjdGx5IHdoaWNoIG9sZCBidWZmZXJzIGl0CiAJICogaGFzIHJlc2VydmVkLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGV4aXN0aW5nIGJlaGF2aW91cgogCSAqIHRoYXQgbXVsdGlwbGUgam91cm5hbF9nZXRfd3JpdGVfYWNjZXNzKCkgY2FsbHMgdG8gdGhlIHNhbWUKLQkgKiBidWZmZXIgYXJlIHBlcmZlY3RseSBwZXJtaXNzYWJsZS4KKwkgKiBidWZmZXIgYXJlIHBlcmZlY3RseSBwZXJtaXNzaWJsZS4KIAkgKi8KIAl3aGlsZSAoY29tbWl0X3RyYW5zYWN0aW9uLT50X3Jlc2VydmVkX2xpc3QpIHsKIAkJamggPSBjb21taXRfdHJhbnNhY3Rpb24tPnRfcmVzZXJ2ZWRfbGlzdDsKZGlmZiAtLWdpdCBhL2ZzL2piZC9qb3VybmFsLmMgYi9mcy9qYmQvam91cm5hbC5jCmluZGV4IGViMTE2MDEuLmIzNzEzYWYgMTAwNjQ0Ci0tLSBhL2ZzL2piZC9qb3VybmFsLmMKKysrIGIvZnMvamJkL2pvdXJuYWwuYwpAQCAtNzcwLDcgKzc3MCw3IEBACiAJam91cm5hbC0+al93YnVmc2l6ZSA9IG47CiAJam91cm5hbC0+al93YnVmID0ga21hbGxvYyhuICogc2l6ZW9mKHN0cnVjdCBidWZmZXJfaGVhZCopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWpvdXJuYWwtPmpfd2J1ZikgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBDYW50IGFsbG9jYXRlIGJocyBmb3IgY29tbWl0IHRocmVhZFxuIiwKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogQ2FuJ3QgYWxsb2NhdGUgYmhzIGZvciBjb21taXQgdGhyZWFkXG4iLAogCQkJX19mdW5jX18pOwogCQlnb3RvIG91dF9lcnI7CiAJfQpAQCAtODMxLDcgKzgzMSw3IEBACiAJam91cm5hbC0+al93YnVmc2l6ZSA9IG47CiAJam91cm5hbC0+al93YnVmID0ga21hbGxvYyhuICogc2l6ZW9mKHN0cnVjdCBidWZmZXJfaGVhZCopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWpvdXJuYWwtPmpfd2J1ZikgewotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBDYW50IGFsbG9jYXRlIGJocyBmb3IgY29tbWl0IHRocmVhZFxuIiwKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogQ2FuJ3QgYWxsb2NhdGUgYmhzIGZvciBjb21taXQgdGhyZWFkXG4iLAogCQkJX19mdW5jX18pOwogCQlnb3RvIG91dF9lcnI7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvamJkL3Jldm9rZS5jIGIvZnMvamJkL3Jldm9rZS5jCmluZGV4IGQyOTAxODMuLjMwNWE5MDcgMTAwNjQ0Ci0tLSBhL2ZzL2piZC9yZXZva2UuYworKysgYi9mcy9qYmQvcmV2b2tlLmMKQEAgLTcxLDcgKzcxLDcgQEAKICAqIHN3aXRjaGluZyBoYXNoIHRhYmxlcyB1bmRlciB0aGVtLiBGb3Igb3BlcmF0aW9ucyBvbiB0aGUgbGlzdHMgb2YgZW50cmllcyBpbgogICogdGhlIGhhc2ggdGFibGUgal9yZXZva2VfbG9jayBpcyB1c2VkLgogICoKLSAqIEZpbmFsbHksIGFsc28gcmVwbGF5IGNvZGUgdXNlcyB0aGUgaGFzaCB0YWJsZXMgYnV0IGF0IHRoaXMgbW9tZW50IG5vb25lIGVsc2UKKyAqIEZpbmFsbHksIGFsc28gcmVwbGF5IGNvZGUgdXNlcyB0aGUgaGFzaCB0YWJsZXMgYnV0IGF0IHRoaXMgbW9tZW50IG5vIG9uZSBlbHNlCiAgKiBjYW4gdG91Y2ggdGhlbSAoZmlsZXN5c3RlbSBpc24ndCBtb3VudGVkIHlldCkgYW5kIGhlbmNlIG5vIGxvY2tpbmcgaXMKICAqIG5lZWRlZC4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvamJkL3RyYW5zYWN0aW9uLmMgYi9mcy9qYmQvdHJhbnNhY3Rpb24uYwppbmRleCA1YjJlNGMzLi42MGQyMzE5IDEwMDY0NAotLS0gYS9mcy9qYmQvdHJhbnNhY3Rpb24uYworKysgYi9mcy9qYmQvdHJhbnNhY3Rpb24uYwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAKIAkgKiBieSAzMHggb3IgbW9yZS4uLgogCSAqCiAJICogV2UgdHJ5IGFuZCBvcHRpbWl6ZSB0aGUgc2xlZXAgdGltZSBhZ2FpbnN0IHdoYXQgdGhlIHVuZGVybHlpbmcgZGlzawotCSAqIGNhbiBkbywgaW5zdGVhZCBvZiBoYXZpbmcgYSBzdGF0aWMgc2xlZXAgdGltZS4gIFRoaXMgaXMgdXNlZnVsbCBmb3IKKwkgKiBjYW4gZG8sIGluc3RlYWQgb2YgaGF2aW5nIGEgc3RhdGljIHNsZWVwIHRpbWUuICBUaGlzIGlzIHVzZWZ1bCBmb3IKIAkgKiB0aGUgY2FzZSB3aGVyZSBvdXIgc3RvcmFnZSBpcyBzbyBmYXN0IHRoYXQgaXQgaXMgbW9yZSBvcHRpbWFsIHRvIGdvCiAJICogYWhlYWQgYW5kIGZvcmNlIGEgZmx1c2ggYW5kIHdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiB0byBiZSBjb21taXR0ZWQKIAkgKiB0aGFuIGl0IGlzIHRvIHdhaXQgZm9yIGFuIGFyYml0cmFyeSBhbW91bnQgb2YgdGltZSBmb3IgbmV3IHdyaXRlcnMgdG8KZGlmZiAtLWdpdCBhL2ZzL2piZDIvY29tbWl0LmMgYi9mcy9qYmQyL2NvbW1pdC5jCmluZGV4IGZhMzZkNzYuLjIwYWY2MmYgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvY29tbWl0LmMKKysrIGIvZnMvamJkMi9jb21taXQuYwpAQCAtNDAzLDcgKzQwMyw3IEBACiAJICogd2UgZG8gbm90IHJlcXVpcmUgaXQgdG8gcmVtZW1iZXIgZXhhY3RseSB3aGljaCBvbGQgYnVmZmVycyBpdAogCSAqIGhhcyByZXNlcnZlZC4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBleGlzdGluZyBiZWhhdmlvdXIKIAkgKiB0aGF0IG11bHRpcGxlIGpiZDJfam91cm5hbF9nZXRfd3JpdGVfYWNjZXNzKCkgY2FsbHMgdG8gdGhlIHNhbWUKLQkgKiBidWZmZXIgYXJlIHBlcmZlY3RseSBwZXJtaXNzYWJsZS4KKwkgKiBidWZmZXIgYXJlIHBlcmZlY3RseSBwZXJtaXNzaWJsZS4KIAkgKi8KIAl3aGlsZSAoY29tbWl0X3RyYW5zYWN0aW9uLT50X3Jlc2VydmVkX2xpc3QpIHsKIAkJamggPSBjb21taXRfdHJhbnNhY3Rpb24tPnRfcmVzZXJ2ZWRfbGlzdDsKZGlmZiAtLWdpdCBhL2ZzL2piZDIvam91cm5hbC5jIGIvZnMvamJkMi9qb3VybmFsLmMKaW5kZXggOTA0MDdiOC4uYWJhOGViYSAxMDA2NDQKLS0tIGEvZnMvamJkMi9qb3VybmFsLmMKKysrIGIvZnMvamJkMi9qb3VybmFsLmMKQEAgLTkxNyw3ICs5MTcsNyBAQAogCWpvdXJuYWwtPmpfd2J1ZnNpemUgPSBuOwogCWpvdXJuYWwtPmpfd2J1ZiA9IGttYWxsb2MobiAqIHNpemVvZihzdHJ1Y3QgYnVmZmVyX2hlYWQqKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFqb3VybmFsLT5qX3didWYpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogQ2FudCBhbGxvY2F0ZSBiaHMgZm9yIGNvbW1pdCB0aHJlYWRcbiIsCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IENhbid0IGFsbG9jYXRlIGJocyBmb3IgY29tbWl0IHRocmVhZFxuIiwKIAkJCV9fZnVuY19fKTsKIAkJZ290byBvdXRfZXJyOwogCX0KQEAgLTk4Myw3ICs5ODMsNyBAQAogCWpvdXJuYWwtPmpfd2J1ZnNpemUgPSBuOwogCWpvdXJuYWwtPmpfd2J1ZiA9IGttYWxsb2MobiAqIHNpemVvZihzdHJ1Y3QgYnVmZmVyX2hlYWQqKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFqb3VybmFsLT5qX3didWYpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogQ2FudCBhbGxvY2F0ZSBiaHMgZm9yIGNvbW1pdCB0aHJlYWRcbiIsCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IENhbid0IGFsbG9jYXRlIGJocyBmb3IgY29tbWl0IHRocmVhZFxuIiwKIAkJCV9fZnVuY19fKTsKIAkJZ290byBvdXRfZXJyOwogCX0KZGlmZiAtLWdpdCBhL2ZzL2piZDIvcmV2b2tlLmMgYi9mcy9qYmQyL3Jldm9rZS5jCmluZGV4IDlhZDMyMWYuLjY5ZmQ5MzUgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvcmV2b2tlLmMKKysrIGIvZnMvamJkMi9yZXZva2UuYwpAQCAtNzEsNyArNzEsNyBAQAogICogc3dpdGNoaW5nIGhhc2ggdGFibGVzIHVuZGVyIHRoZW0uIEZvciBvcGVyYXRpb25zIG9uIHRoZSBsaXN0cyBvZiBlbnRyaWVzIGluCiAgKiB0aGUgaGFzaCB0YWJsZSBqX3Jldm9rZV9sb2NrIGlzIHVzZWQuCiAgKgotICogRmluYWxseSwgYWxzbyByZXBsYXkgY29kZSB1c2VzIHRoZSBoYXNoIHRhYmxlcyBidXQgYXQgdGhpcyBtb21lbnQgbm9vbmUgZWxzZQorICogRmluYWxseSwgYWxzbyByZXBsYXkgY29kZSB1c2VzIHRoZSBoYXNoIHRhYmxlcyBidXQgYXQgdGhpcyBtb21lbnQgbm8gb25lIGVsc2UKICAqIGNhbiB0b3VjaCB0aGVtIChmaWxlc3lzdGVtIGlzbid0IG1vdW50ZWQgeWV0KSBhbmQgaGVuY2Ugbm8gbG9ja2luZyBpcwogICogbmVlZGVkLgogICovCmRpZmYgLS1naXQgYS9mcy9qYmQyL3RyYW5zYWN0aW9uLmMgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKaW5kZXggMWQxMTkxMC4uMDVmYTc3YSAxMDA2NDQKLS0tIGEvZnMvamJkMi90cmFuc2FjdGlvbi5jCisrKyBiL2ZzL2piZDIvdHJhbnNhY3Rpb24uYwpAQCAtMTQwMyw3ICsxNDAzLDcgQEAKIAogCS8qCiAJICogT25jZSB3ZSBkcm9wIHRfdXBkYXRlcywgaWYgaXQgZ29lcyB0byB6ZXJvIHRoZSB0cmFuc2FjdGlvbgotCSAqIGNvdWxkIHN0YXJ0IGNvbW1pdGluZyBvbiB1cyBhbmQgZXZlbnR1YWxseSBkaXNhcHBlYXIuICBTbworCSAqIGNvdWxkIHN0YXJ0IGNvbW1pdHRpbmcgb24gdXMgYW5kIGV2ZW50dWFsbHkgZGlzYXBwZWFyLiAgU28KIAkgKiBvbmNlIHdlIGRvIHRoaXMsIHdlIG11c3Qgbm90IGRlcmVmZXJlbmNlIHRyYW5zYWN0aW9uCiAJICogcG9pbnRlciBhZ2Fpbi4KIAkgKi8KZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL1RPRE8gYi9mcy9qZmZzMi9UT0RPCmluZGV4IDVkM2VhNDAuLmNhMjg5NjQgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL1RPRE8KKysrIGIvZnMvamZmczIvVE9ETwpAQCAtMTEsNyArMTEsNyBAQAogIC0gY2hlY2twb2ludGluZyAoZG8gd2UgbmVlZCB0aGlzPyBzY2FuIGlzIHF1aXRlIGZhc3QpCiAgLSBtYWtlIHRoZSBzY2FuIGNvZGUgcG9wdWxhdGUgcmVhbCBpbm9kZXMgc28gcmVhZF9pbm9kZSBqdXN0IGFmdGVyIAogCW1vdW50IGRvZXNuJ3QgaGF2ZSB0byByZWFkIHRoZSBmbGFzaCB0d2ljZSBmb3IgbGFyZ2UgZmlsZXMuCi0JTWFrZSB0aGlzIGEgcGVyLWlub2RlIG9wdGlvbiwgY2hhbmdhYmxlIHdpdGggY2hhdHRyLCBzbyB5b3UgY2FuCisJTWFrZSB0aGlzIGEgcGVyLWlub2RlIG9wdGlvbiwgY2hhbmdlYWJsZSB3aXRoIGNoYXR0ciwgc28geW91IGNhbgogCWRlY2lkZSB3aGljaCBpbm9kZXMgc2hvdWxkIGJlIGluLWNvcmUgaW1tZWRpYXRlbHkgYWZ0ZXIgbW91bnQuCiAgLSB0ZXN0LCB0ZXN0LCB0ZXN0CiAKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL3JlYWRpbm9kZS5jIGIvZnMvamZmczIvcmVhZGlub2RlLmMKaW5kZXggZDMyZWU5NC4uMmFiMWEwZCAxMDA2NDQKLS0tIGEvZnMvamZmczIvcmVhZGlub2RlLmMKKysrIGIvZnMvamZmczIvcmVhZGlub2RlLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqCiAgKiBSZXR1cm5zOiAwIGlmIHRoZSBkYXRhIENSQyBpcyBjb3JyZWN0OwogICogCSAgICAxIC0gaWYgaW5jb3JyZWN0OwotICoJICAgIGVycm9yIGNvZGUgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqCSAgICBlcnJvciBjb2RlIGlmIGFuIGVycm9yIG9jY3VycmVkLgogICovCiBzdGF0aWMgaW50IGNoZWNrX25vZGVfZGF0YShzdHJ1Y3QgamZmczJfc2JfaW5mbyAqYywgc3RydWN0IGpmZnMyX3RtcF9kbm9kZV9pbmZvICp0bikKIHsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL3N1bW1hcnkuYyBiL2ZzL2pmZnMyL3N1bW1hcnkuYwppbmRleCA4MDAxNzFkLi5lNTM3ZmIwIDEwMDY0NAotLS0gYS9mcy9qZmZzMi9zdW1tYXJ5LmMKKysrIGIvZnMvamZmczIvc3VtbWFyeS5jCkBAIC0xMjEsNyArMTIxLDcgQEAKIAl0ZW1wLT5ub2RldHlwZSA9IHJpLT5ub2RldHlwZTsKIAl0ZW1wLT5pbm9kZSA9IHJpLT5pbm87CiAJdGVtcC0+dmVyc2lvbiA9IHJpLT52ZXJzaW9uOwotCXRlbXAtPm9mZnNldCA9IGNwdV90b19qZTMyKG9mcyk7IC8qIHJlbGF0aXZlIG9mZnNldCBmcm9tIHRoZSBiZWdpbmluZyBvZiB0aGUgamViICovCisJdGVtcC0+b2Zmc2V0ID0gY3B1X3RvX2plMzIob2ZzKTsgLyogcmVsYXRpdmUgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgamViICovCiAJdGVtcC0+dG90bGVuID0gcmktPnRvdGxlbjsKIAl0ZW1wLT5uZXh0ID0gTlVMTDsKIApAQCAtMTM5LDcgKzEzOSw3IEBACiAKIAl0ZW1wLT5ub2RldHlwZSA9IHJkLT5ub2RldHlwZTsKIAl0ZW1wLT50b3RsZW4gPSByZC0+dG90bGVuOwotCXRlbXAtPm9mZnNldCA9IGNwdV90b19qZTMyKG9mcyk7CS8qIHJlbGF0aXZlIGZyb20gdGhlIGJlZ2luaW5nIG9mIHRoZSBqZWIgKi8KKwl0ZW1wLT5vZmZzZXQgPSBjcHVfdG9famUzMihvZnMpOwkvKiByZWxhdGl2ZSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGplYiAqLwogCXRlbXAtPnBpbm8gPSByZC0+cGlubzsKIAl0ZW1wLT52ZXJzaW9uID0gcmQtPnZlcnNpb247CiAJdGVtcC0+aW5vID0gcmQtPmlubzsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL3didWYuYyBiL2ZzL2pmZnMyL3didWYuYwppbmRleCAwN2VlMTU0Li40NTE1YmVhIDEwMDY0NAotLS0gYS9mcy9qZmZzMi93YnVmLmMKKysrIGIvZnMvamZmczIvd2J1Zi5jCkBAIC0xMTE2LDcgKzExMTYsNyBAQAogCiAvKgogICogT24gTkFORCB3ZSB0cnkgdG8gbWFyayB0aGlzIGJsb2NrIGJhZC4gSWYgdGhlIGJsb2NrIHdhcyBlcmFzZWQgbW9yZQotICogdGhhbiBNQVhfRVJBU0VfRkFJTFVSRVMgd2UgbWFyayBpdCBmaW5hbHkgYmFkLgorICogdGhhbiBNQVhfRVJBU0VfRkFJTFVSRVMgd2UgbWFyayBpdCBmaW5hbGx5IGJhZC4KICAqIERvbid0IGNhcmUgYWJvdXQgZmFpbHVyZXMuIFRoaXMgYmxvY2sgcmVtYWlucyBvbiB0aGUgZXJhc2UtcGVuZGluZwogICogb3IgYmFkYmxvY2sgbGlzdCBhcyBsb25nIGFzIG5vYm9keSBtYW5pcHVsYXRlcyB0aGUgZmxhc2ggd2l0aAogICogYSBib290bG9hZGVyIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuCmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2RtYXAuYyBiL2ZzL2pmcy9qZnNfZG1hcC5jCmluZGV4IGM5MmVhM2IuLjQ0OTY4NzIgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfZG1hcC5jCisrKyBiL2ZzL2pmcy9qZnNfZG1hcC5jCkBAIC0xNjQ5LDcgKzE2NDksNyBAQAogCQl9CiAKIAkJLyogc2VhcmNoIHRoZSB0cmVlIHdpdGhpbiB0aGUgZG1hcCBjb250cm9sIHBhZ2UgZm9yCi0JCSAqIHN1ZmZpY2VudCBmcmVlIHNwYWNlLiAgaWYgc3VmZmljaWVudCBmcmVlIHNwYWNlIGlzIGZvdW5kLAorCQkgKiBzdWZmaWNpZW50IGZyZWUgc3BhY2UuICBpZiBzdWZmaWNpZW50IGZyZWUgc3BhY2UgaXMgZm91bmQsCiAJCSAqIGRiRmluZExlYWYoKSByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGVhZiBhdCB3aGljaAogCQkgKiBmcmVlIHNwYWNlIHdhcyBmb3VuZC4KIAkJICovCkBAIC0yNzQ0LDcgKzI3NDQsNyBAQAogCQkJLyogY2hlY2sgd2hpY2ggKGxlYWZubyBvciBidWRkeSkgaXMgdGhlIGxlZnQgYnVkZHkuCiAJCQkgKiB0aGUgbGVmdCBidWRkeSBnZXRzIHRvIGNsYWltIHRoZSBibG9ja3MgcmVzdWx0aW5nCiAJCQkgKiBmcm9tIHRoZSBqb2luIHdoaWxlIHRoZSByaWdodCBnZXRzIHRvIGNsYWltIG5vbmUuCi0JCQkgKiB0aGUgbGVmdCBidWRkeSBpcyBhbHNvIGVsaWdhYmxlIHRvIHBhcnRpY2lwYXRlIGluCisJCQkgKiB0aGUgbGVmdCBidWRkeSBpcyBhbHNvIGVsaWdpYmxlIHRvIHBhcnRpY2lwYXRlIGluCiAJCQkgKiBhIGpvaW4gYXQgdGhlIG5leHQgaGlnaGVyIGxldmVsIHdoaWxlIHRoZSByaWdodAogCQkJICogaXMgbm90LgogCQkJICoKZGlmZiAtLWdpdCBhL2ZzL2pmcy9qZnNfZXh0ZW50LmMgYi9mcy9qZnMvamZzX2V4dGVudC5jCmluZGV4IDVkM2JiZDEuLmU1ZmU4NTAgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfZXh0ZW50LmMKKysrIGIvZnMvamZzL2pmc19leHRlbnQuYwpAQCAtMTI2LDcgKzEyNiw3IEBACiAKIAkvKiBhbGxvY2F0ZSB0aGUgZGlzayBibG9ja3MgZm9yIHRoZSBleHRlbnQuICBpbml0aWFsbHksIGV4dEJhbGxvYygpCiAJICogd2lsbCB0cnkgdG8gYWxsb2NhdGUgZGlzayBibG9ja3MgZm9yIHRoZSByZXF1ZXN0ZWQgc2l6ZSAoeGxlbikuCi0JICogaWYgdGhpcyBmYWlscyAoeGxlbiBjb250aWd1b3VzIGZyZWUgYmxvY2tzIG5vdCBhdmFsaWFibGUpLCBpdCdsbAorCSAqIGlmIHRoaXMgZmFpbHMgKHhsZW4gY29udGlndW91cyBmcmVlIGJsb2NrcyBub3QgYXZhaWxhYmxlKSwgaXQnbGwKIAkgKiB0cnkgdG8gYWxsb2NhdGUgYSBzbWFsbGVyIG51bWJlciBvZiBibG9ja3MgKHByb2R1Y2luZyBhIHNtYWxsZXIKIAkgKiBleHRlbnQpLCB3aXRoIHRoaXMgc21hbGxlciBudW1iZXIgb2YgYmxvY2tzIGNvbnNpc3Rpbmcgb2YgdGhlCiAJICogcmVxdWVzdGVkIG51bWJlciBvZiBibG9ja3Mgcm91bmRlZCBkb3duIHRvIHRoZSBuZXh0IHNtYWxsZXIKQEAgLTQ4MSw3ICs0ODEsNyBAQAogICoKICAqCQlpbml0aWFsbHksIHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGRpc2sgYmxvY2tzIGZvciB0aGUKICAqCQlyZXF1ZXN0ZWQgc2l6ZSAobmJsb2NrcykuICBpZiB0aGlzIGZhaWxzIChuYmxvY2tzCi0gKgkJY29udGlndW91cyBmcmVlIGJsb2NrcyBub3QgYXZhbGlhYmxlKSwgd2UnbGwgdHJ5IHRvIGFsbG9jYXRlCisgKgkJY29udGlndW91cyBmcmVlIGJsb2NrcyBub3QgYXZhaWxhYmxlKSwgd2UnbGwgdHJ5IHRvIGFsbG9jYXRlCiAgKgkJYSBzbWFsbGVyIG51bWJlciBvZiBibG9ja3MgKHByb2R1Y2luZyBhIHNtYWxsZXIgZXh0ZW50KSwgd2l0aAogICoJCXRoaXMgc21hbGxlciBudW1iZXIgb2YgYmxvY2tzIGNvbnNpc3Rpbmcgb2YgdGhlIHJlcXVlc3RlZAogICoJCW51bWJlciBvZiBibG9ja3Mgcm91bmRlZCBkb3duIHRvIHRoZSBuZXh0IHNtYWxsZXIgcG93ZXIgb2YgMgpAQCAtNTc1LDcgKzU3NSw3IEBACiAgKgkJdG8gYSBuZXcgc2V0IG9mIGJsb2Nrcy4gIElmIG1vdmluZyB0aGUgZXh0ZW50LCB3ZSBpbml0aWFsbHkKICAqCQl3aWxsIHRyeSB0byBhbGxvY2F0ZSBkaXNrIGJsb2NrcyBmb3IgdGhlIHJlcXVlc3RlZCBzaXplCiAgKgkJKG5ld25ibGtzKS4gIGlmIHRoaXMgZmFpbHMgKG5ldyBjb250aWd1b3VzIGZyZWUgYmxvY2tzIG5vdAotICoJCWF2YWxpYWJsZSksIHdlJ2xsIHRyeSB0byBhbGxvY2F0ZSBhIHNtYWxsZXIgbnVtYmVyIG9mCisgKgkJYXZhaWxhYmxlKSwgd2UnbGwgdHJ5IHRvIGFsbG9jYXRlIGEgc21hbGxlciBudW1iZXIgb2YKICAqCQlibG9ja3MgKHByb2R1Y2luZyBhIHNtYWxsZXIgZXh0ZW50KSwgd2l0aCB0aGlzIHNtYWxsZXIKICAqCQludW1iZXIgb2YgYmxvY2tzIGNvbnNpc3Rpbmcgb2YgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YKICAqCQlibG9ja3Mgcm91bmRlZCBkb3duIHRvIHRoZSBuZXh0IHNtYWxsZXIgcG93ZXIgb2YgMgpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19pbWFwLmMgYi9mcy9qZnMvamZzX2ltYXAuYwppbmRleCAzYTA5NDIzLi5lZDUzYTQ3IDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2ltYXAuYworKysgYi9mcy9qZnMvamZzX2ltYXAuYwpAQCAtMTA2OSw3ICsxMDY5LDcgQEAKIAkJICovCiAJCWlmIChpYWdwLT5uZnJlZWV4dHMgPT0gY3B1X3RvX2xlMzIoRVhUU1BFUklBRyAtIDEpKSB7CiAJCQkvKiBpbiBwcmVwYXJhdGlvbiBmb3IgcmVtb3ZpbmcgdGhlIGlhZyBmcm9tIHRoZQotCQkJICogYWcgZXh0ZW50IGZyZWUgbGlzdCwgcmVhZCB0aGUgaWFncyBwcmVjZWVkaW5nCisJCQkgKiBhZyBleHRlbnQgZnJlZSBsaXN0LCByZWFkIHRoZSBpYWdzIHByZWNlZGluZwogCQkJICogYW5kIGZvbGxvd2luZyB0aGUgaWFnIG9uIHRoZSBhZyBleHRlbnQgZnJlZQogCQkJICogbGlzdC4KIAkJCSAqLwpAQCAtMTA5NSw3ICsxMDk1LDcgQEAKIAkJaW50IGlub2ZyZWVmd2QgPSBsZTMyX3RvX2NwdShpYWdwLT5pbm9mcmVlZndkKTsKIAogCQkvKiBpbiBwcmVwYXJhdGlvbiBmb3IgcmVtb3ZpbmcgdGhlIGlhZyBmcm9tIHRoZQotCQkgKiBhZyBpbm9kZSBmcmVlIGxpc3QsIHJlYWQgdGhlIGlhZ3MgcHJlY2VlZGluZworCQkgKiBhZyBpbm9kZSBmcmVlIGxpc3QsIHJlYWQgdGhlIGlhZ3MgcHJlY2VkaW5nCiAJCSAqIGFuZCBmb2xsb3dpbmcgdGhlIGlhZyBvbiB0aGUgYWcgaW5vZGUgZnJlZQogCQkgKiBsaXN0LiAgYmVmb3JlIHJlYWRpbmcgdGhlc2UgaWFncywgd2UgbXVzdCBtYWtlCiAJCSAqIHN1cmUgdGhhdCB3ZSBhbHJlYWR5IGRvbid0IGhhdmUgdGhlbSBpbiBoYW5kCkBAIC0xNjgxLDcgKzE2ODEsNyBAQAogCSAqIHRyeSB0byBhbGxvY2F0ZSBhIG5ldyBleHRlbnQgb2YgZnJlZSBpbm9kZXMuCiAJICovCiAJaWYgKGFkZGV4dCkgewotCQkvKiBpZiBmcmVlIHNwYWNlIGlzIG5vdCBhdmFsaWFibGUgZm9yIHRoaXMgbmV3IGV4dGVudCwgdHJ5CisJCS8qIGlmIGZyZWUgc3BhY2UgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBuZXcgZXh0ZW50LCB0cnkKIAkJICogYmVsb3cgdG8gYWxsb2NhdGUgYSBmcmVlIGFuZCBleGlzdGluZyAoYWxyZWFkeSBiYWNrZWQpCiAJCSAqIGlub2RlIGZyb20gdGhlIGFnLgogCQkgKi8KQEAgLTIwMzYsNyArMjAzNiw3IEBACiAKIAkvKiBjaGVjayBpZiB0aGlzIGlzIHRoZSBsYXN0IGZyZWUgaW5vZGUgd2l0aGluIHRoZSBpYWcuCiAJICogaWYgc28sIGl0IHdpbGwgaGF2ZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGFnIGZyZWUKLQkgKiBpbm9kZSBsaXN0LCBzbyBnZXQgdGhlIGlhZ3MgcHJlY2VlZGluZyBhbmQgZm9sbG93aW5nCisJICogaW5vZGUgbGlzdCwgc28gZ2V0IHRoZSBpYWdzIHByZWNlZGluZyBhbmQgZm9sbG93aW5nCiAJICogaXQgb24gdGhlIGxpc3QuCiAJICovCiAJaWYgKGlhZ3AtPm5mcmVlaW5vcyA9PSBjcHVfdG9fbGUzMigxKSkgewpAQCAtMjIwOCw3ICsyMjA4LDcgQEAKIAogCS8qIGNoZWNrIGlmIHRoaXMgaXMgdGhlIGxhc3QgZnJlZSBleHRlbnQgd2l0aGluIHRoZQogCSAqIGlhZy4gIGlmIHNvLCB0aGUgaWFnIG11c3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBhZwotCSAqIGZyZWUgZXh0ZW50IGxpc3QsIHNvIGdldCB0aGUgaWFncyBwcmVjZWVkaW5nIGFuZAorCSAqIGZyZWUgZXh0ZW50IGxpc3QsIHNvIGdldCB0aGUgaWFncyBwcmVjZWRpbmcgYW5kCiAJICogZm9sbG93aW5nIHRoZSBpYWcgb24gdGhpcyBsaXN0LgogCSAqLwogCWlmIChpYWdwLT5uZnJlZWV4dHMgPT0gY3B1X3RvX2xlMzIoMSkpIHsKQEAgLTI1MDQsNyArMjUwNCw3IEBACiAJCX0KIAogCi0JCS8qIGdldCB0aGUgbmV4dCBhdmFsaWFibGUgaWFnIG51bWJlciAqLworCQkvKiBnZXQgdGhlIG5leHQgYXZhaWxhYmxlIGlhZyBudW1iZXIgKi8KIAkJaWFnbm8gPSBpbWFwLT5pbV9uZXh0aWFnOwogCiAJCS8qIG1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgbm90IGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGlub2RlCkBAIC0yNjE1LDcgKzI2MTUsNyBAQAogCiAJCWR1cGxpY2F0ZUlYdHJlZShzYiwgYmxrbm8sIHhsZW4sICZ4YWRkcik7CiAKLQkJLyogdXBkYXRlIHRoZSBuZXh0IGF2YWxpYWJsZSBpYWcgbnVtYmVyICovCisJCS8qIHVwZGF0ZSB0aGUgbmV4dCBhdmFpbGFibGUgaWFnIG51bWJlciAqLwogCQlpbWFwLT5pbV9uZXh0aWFnICs9IDE7CiAKIAkJLyogQWRkIHRoZSBpYWcgdG8gdGhlIGlhZyBmcmVlIGxpc3Qgc28gd2UgZG9uJ3QgbG9zZSB0aGUgaWFnCmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2xvZ21nci5oIGIvZnMvamZzL2pmc19sb2dtZ3IuaAppbmRleCA5MjM2YmM0Li5lMzhjMjE1IDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2xvZ21nci5oCisrKyBiL2ZzL2pmcy9qZnNfbG9nbWdyLmgKQEAgLTI4OCw3ICsyODgsNyBAQAogCQkvKgogCQkgKglTWU5DUFQ6IGxvZyBzeW5jIHBvaW50CiAJCSAqCi0JCSAqIHJlcGxheSBsb2cgdXB0byBzeW5jcHQgYWRkcmVzcyBzcGVjaWZpZWQ7CisJCSAqIHJlcGxheSBsb2cgdXAgdG8gc3luY3B0IGFkZHJlc3Mgc3BlY2lmaWVkOwogCQkgKi8KIAkJc3RydWN0IHsKIAkJCV9fbGUzMiBzeW5jOwkvKiA0OiBzeW5jcHQgYWRkcmVzcyAoMCA9IGhlcmUpICovCmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX21ldGFwYWdlLmggYi9mcy9qZnMvamZzX21ldGFwYWdlLmgKaW5kZXggZDk0ZjhkOS4uYTc4YmVkYSAxMDA2NDQKLS0tIGEvZnMvamZzL2pmc19tZXRhcGFnZS5oCisrKyBiL2ZzL2pmcy9qZnNfbWV0YXBhZ2UuaApAQCAtNzUsNyArNzUsNyBAQAogZXh0ZXJuIHZvaWQgZm9yY2VfbWV0YXBhZ2Uoc3RydWN0IG1ldGFwYWdlICopOwogCiAvKgotICogaG9sZF9tZXRhcGFnZSBhbmQgcHV0X21ldGFwYWdlIGFyZSB1c2VkIGluIGNvbmp1Y3Rpb24uICBUaGUgcGFnZSBsb2NrCisgKiBob2xkX21ldGFwYWdlIGFuZCBwdXRfbWV0YXBhZ2UgYXJlIHVzZWQgaW4gY29uanVuY3Rpb24uICBUaGUgcGFnZSBsb2NrCiAgKiBpcyBub3QgZHJvcHBlZCBiZXR3ZWVuIHRoZSB0d28sIHNvIG5vIG90aGVyIHRocmVhZHMgY2FuIGdldCBvciByZWxlYXNlCiAgKiB0aGUgbWV0YXBhZ2UKICAqLwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc190eG5tZ3IuYyBiL2ZzL2pmcy9qZnNfdHhubWdyLmMKaW5kZXggOTQ2Njk1Ny4uZjZjYzBjMCAxMDA2NDQKLS0tIGEvZnMvamZzL2pmc190eG5tZ3IuYworKysgYi9mcy9qZnMvamZzX3R4bm1nci5jCkBAIC02MzYsNyArNjM2LDcgQEAKIAkgKiB0aGUgaW5vZGUgb2YgdGhlIHBhZ2UgYW5kIGF2YWlsYWJsZSB0byBhbGwgYW5vbnltb3VzCiAJICogdHJhbnNhY3Rpb25zIHVudGlsIHR4Q29tbWl0KCkgdGltZSBhdCB3aGljaCBwb2ludAogCSAqIHRoZXkgYXJlIHRyYW5zZmVycmVkIHRvIHRoZSB0cmFuc2FjdGlvbiB0bG9jayBsaXN0IG9mCi0JICogdGhlIGNvbW1pdGluZyB0cmFuc2FjdGlvbiBvZiB0aGUgaW5vZGUpCisJICogdGhlIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gb2YgdGhlIGlub2RlKQogCSAqLwogCWlmICh4dGlkID09IDApIHsKIAkJdGxjay0+dGlkID0gdGlkOwpkaWZmIC0tZ2l0IGEvZnMvamZzL3Jlc2l6ZS5jIGIvZnMvamZzL3Jlc2l6ZS5jCmluZGV4IDFhYmEwMDMuLjhlYTVlZmIgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9yZXNpemUuYworKysgYi9mcy9qZnMvcmVzaXplLmMKQEAgLTU3LDcgKzU3LDcgQEAKICAqIDIuIGNvbXB1dGUgbmV3IEZTQ0tTaXplIGZyb20gbmV3IExWU2l6ZTsKICAqIDMuIHNldCBuZXcgRlNTaXplIGFzIE1JTihGU1NpemUsIExWU2l6ZS0oTG9nU2l6ZStGU0NLU2l6ZSkpIHdoZXJlCiAgKiAgICBhc3NlcnQobmV3IEZTU2l6ZSA+PSBvbGQgRlNTaXplKSwKLSAqICAgIGkuZS4sIGZpbGUgc3lzdGVtIG11c3Qgbm90IGJlIHNocmlua2VkOworICogICAgaS5lLiwgZmlsZSBzeXN0ZW0gbXVzdCBub3QgYmUgc2hydW5rOwogICovCiBpbnQgamZzX2V4dGVuZGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHM2NCBuZXdMVlNpemUsIGludCBuZXdMb2dTaXplKQogewpAQCAtMTgyLDcgKzE4Miw3IEBACiAJICovCiAJbmV3RlNTaXplID0gbmV3TFZTaXplIC0gbmV3TG9nU2l6ZSAtIG5ld0ZTQ0tTaXplOwogCi0JLyogZmlsZSBzeXN0ZW0gY2Fubm90IGJlIHNocmlua2VkICovCisJLyogZmlsZSBzeXN0ZW0gY2Fubm90IGJlIHNocnVuayAqLwogCWlmIChuZXdGU1NpemUgPCBibXAtPmRiX21hcHNpemUpIHsKIAkJcmMgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2ZzL2pmcy9zdXBlci5jIGIvZnMvamZzL3N1cGVyLmMKaW5kZXggZWVjYTQ4YS4uMDZjOGE2NyAxMDA2NDQKLS0tIGEvZnMvamZzL3N1cGVyLmMKKysrIGIvZnMvamZzL3N1cGVyLmMKQEAgLTY0NCw3ICs2NDQsNyBAQAogCiAvKiBSZWFkIGRhdGEgZnJvbSBxdW90YWZpbGUgLSBhdm9pZCBwYWdlY2FjaGUgYW5kIHN1Y2ggYmVjYXVzZSB3ZSBjYW5ub3QgYWZmb3JkCiAgKiBhY3F1aXJpbmcgdGhlIGxvY2tzLi4uIEFzIHF1b3RhIGZpbGVzIGFyZSBuZXZlciB0cnVuY2F0ZWQgYW5kIHF1b3RhIGNvZGUKLSAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm9vbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQorICogaXRzZWxmIHNlcmlhbGl6ZXMgdGhlIG9wZXJhdGlvbnMgKGFuZCBubyBvbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQogICogd2UgZG9uJ3QgaGF2ZSB0byBiZSBhZnJhaWQgb2YgcmFjZXMgKi8KIHN0YXRpYyBzc2l6ZV90IGpmc19xdW90YV9yZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlLCBjaGFyICpkYXRhLAogCQkJICAgICAgc2l6ZV90IGxlbiwgbG9mZl90IG9mZikKZGlmZiAtLWdpdCBhL2ZzL2xvZ2ZzL2Rldl9tdGQuYyBiL2ZzL2xvZ2ZzL2Rldl9tdGQuYwppbmRleCA3NDY2ZTlkLi4zMzllMTdlIDEwMDY0NAotLS0gYS9mcy9sb2dmcy9kZXZfbXRkLmMKKysrIGIvZnMvbG9nZnMvZGV2X210ZC5jCkBAIC02MCw3ICs2MCw3IEBACiAgKiBhc3luY2hyb25vdXMgcHJvcGVydGllcy4gIFNvIGp1c3QgdG8gcHJldmVudCB0aGUgZmlyc3QgaW1wbGVtZW50b3Igb2Ygc3VjaAogICogYSB0aGluZyBmcm9tIGJyZWFraW5nIGxvZ2ZzIGluIDIzNTAsIHdlIGRvIHRoZSB1c3VhbCBwb2ludGxlc3MgZGFuY2UgdG8KICAqIGRlY2xhcmUgYSBjb21wbGV0aW9uIHZhcmlhYmxlIGFuZCB3YWl0IGZvciBjb21wbGV0aW9uIGJlZm9yZSByZXR1cm5pbmcKLSAqIGZyb20gbXRkX2VyYXNlKCkuICBXaGF0IGFuIGV4Y2VyY2lzZSBpbiBmdXRpbGl0eSEKKyAqIGZyb20gbXRkX2VyYXNlKCkuICBXaGF0IGFuIGV4ZXJjaXNlIGluIGZ1dGlsaXR5IQogICovCiBzdGF0aWMgdm9pZCBsb2dmc19lcmFzZV9jYWxsYmFjayhzdHJ1Y3QgZXJhc2VfaW5mbyAqZWkpCiB7CmRpZmYgLS1naXQgYS9mcy9sb2dmcy9kaXIuYyBiL2ZzL2xvZ2ZzL2Rpci5jCmluZGV4IGY5ZGRmMGMuLjllZDg5ZDEgMTAwNjQ0Ci0tLSBhL2ZzL2xvZ2ZzL2Rpci5jCisrKyBiL2ZzL2xvZ2ZzL2Rpci5jCkBAIC05Miw3ICs5Miw3IEBACiAgKiBzbyBzaG9ydCBuYW1lcyAobGVuIDw9IDkpIGRvbid0IGV2ZW4gb2NjdXB5IHRoZSBjb21wbGV0ZSAzMmJpdCBuYW1lCiAgKiBzcGFjZS4gIEEgcHJpbWUgPjI1NiBlbnN1cmVzIHNob3J0IG5hbWVzIHF1aWNrbHkgc3ByZWFkIHRoZSAzMmJpdAogICogbmFtZSBzcGFjZS4gIEFkZCBhYm91dCAyNiBmb3IgdGhlIGVzdGltYXRlZCBhbW91bnQgb2YgaW5mb3JtYXRpb24KLSAqIG9mIGVhY2ggY2hhcmFjdGVyIGFuZCBwaWNrIGEgcHJpbWUgbmVhcmJ5LCBwcmVmZXJyYWJseSBhIGJpdC1zcGFyc2UKKyAqIG9mIGVhY2ggY2hhcmFjdGVyIGFuZCBwaWNrIGEgcHJpbWUgbmVhcmJ5LCBwcmVmZXJhYmx5IGEgYml0LXNwYXJzZQogICogb25lLgogICovCiBzdGF0aWMgdTMyIGhhc2hfMzIoY29uc3QgY2hhciAqcywgaW50IGxlbiwgdTMyIHNlZWQpCmRpZmYgLS1naXQgYS9mcy9sb2dmcy9yZWFkd3JpdGUuYyBiL2ZzL2xvZ2ZzL3JlYWR3cml0ZS5jCmluZGV4IGVlOTlhOWYuLjllMjIwODUgMTAwNjQ0Ci0tLSBhL2ZzL2xvZ2ZzL3JlYWR3cml0ZS5jCisrKyBiL2ZzL2xvZ2ZzL3JlYWR3cml0ZS5jCkBAIC0xNjE2LDcgKzE2MTYsNyBAQAogCQllcnIgPSBsb2dmc193cml0ZV9idWYoaW5vZGUsIHBhZ2UsIGZsYWdzKTsKIAkJaWYgKCFlcnIgJiYgc2hyaW5rX2xldmVsKGdjX2xldmVsKSA9PSAwKSB7CiAJCQkvKiBSZXdyaXRlIGNhbm5vdCBtYXJrIHRoZSBpbm9kZSBkaXJ0eSBidXQgaGFzIHRvCi0JCQkgKiB3cml0ZSBpdCBpbW1lZGlhdGx5LgorCQkJICogd3JpdGUgaXQgaW1tZWRpYXRlbHkuCiAJCQkgKiBROiBDYW4ndCB3ZSBqdXN0IGNyZWF0ZSBhbiBhbGlhcyBmb3IgdGhlIGlub2RlCiAJCQkgKiBpbnN0ZWFkPyAgQW5kIGlmIG5vdCwgd2h5IG5vdD8KIAkJCSAqLwpkaWZmIC0tZ2l0IGEvZnMvbWJjYWNoZS5jIGIvZnMvbWJjYWNoZS5jCmluZGV4IGEyNTQ0NGFiLi4yZjE3NGJlIDEwMDY0NAotLS0gYS9mcy9tYmNhY2hlLmMKKysrIGIvZnMvbWJjYWNoZS5jCkBAIC01NDIsNyArNTQyLDcgQEAKICAqIG1iX2NhY2hlX2VudHJ5X2ZpbmRfZmlyc3QoKQogICoKICAqIEZpbmQgdGhlIGZpcnN0IGNhY2hlIGVudHJ5IG9uIGEgZ2l2ZW4gZGV2aWNlIHdpdGggYSBjZXJ0YWluIGtleSBpbgotICogYW4gYWRkaXRpb25hbCBpbmRleC4gQWRkaXRvbmFsIG1hdGNoZXMgY2FuIGJlIGZvdW5kIHdpdGgKKyAqIGFuIGFkZGl0aW9uYWwgaW5kZXguIEFkZGl0aW9uYWwgbWF0Y2hlcyBjYW4gYmUgZm91bmQgd2l0aAogICogbWJfY2FjaGVfZW50cnlfZmluZF9uZXh0KCkuIFJldHVybnMgTlVMTCBpZiBubyBtYXRjaCB3YXMgZm91bmQuIFRoZQogICogcmV0dXJuZWQgY2FjaGUgZW50cnkgaXMgbG9ja2VkIGZvciBzaGFyZWQgYWNjZXNzICgibXVsdGlwbGUgcmVhZGVycyIpLgogICoKZGlmZiAtLWdpdCBhL2ZzL25hbWVpLmMgYi9mcy9uYW1laS5jCmluZGV4IDNjYjYxNmQuLmU2Y2Q2MTEgMTAwNjQ0Ci0tLSBhL2ZzL25hbWVpLmMKKysrIGIvZnMvbmFtZWkuYwpAQCAtNzAsNyArNzAsNyBAQAogICogbmFtZSBpbmRpY2F0ZWQgYnkgdGhlIHN5bWxpbmsuIFRoZSBvbGQgY29kZSBhbHdheXMgY29tcGxhaW5lZCB0aGF0IHRoZQogICogbmFtZSBhbHJlYWR5IGV4aXN0cywgZHVlIHRvIG5vdCBmb2xsb3dpbmcgdGhlIHN5bWxpbmsgZXZlbiBpZiBpdHMgdGFyZ2V0CiAgKiBpcyBub25leGlzdGVudC4gIFRoZSBuZXcgc2VtYW50aWNzIGFmZmVjdHMgYWxzbyBta25vZCgpIGFuZCBsaW5rKCkgd2hlbgotICogdGhlIG5hbWUgaXMgYSBzeW1saW5rIHBvaW50aW5nIHRvIGEgbm9uLWV4aXN0YW50IG5hbWUuCisgKiB0aGUgbmFtZSBpcyBhIHN5bWxpbmsgcG9pbnRpbmcgdG8gYSBub24tZXhpc3RlbnQgbmFtZS4KICAqCiAgKiBJIGRvbid0IGtub3cgd2hpY2ggc2VtYW50aWNzIGlzIHRoZSByaWdodCBvbmUsIHNpbmNlIEkgaGF2ZSBubyBhY2Nlc3MKICAqIHRvIHN0YW5kYXJkcy4gQnV0IEkgZm91bmQgYnkgdHJpYWwgdGhhdCBIUC1VWCA5LjAgaGFzIHRoZSBmdWxsICJuZXciCmRpZmYgLS1naXQgYS9mcy9uY3Bmcy9pbm9kZS5jIGIvZnMvbmNwZnMvaW5vZGUuYwppbmRleCAwMGExZDFjLi4wMjUwZTRjIDEwMDY0NAotLS0gYS9mcy9uY3Bmcy9pbm9kZS5jCisrKyBiL2ZzL25jcGZzL2lub2RlLmMKQEAgLTU5Niw3ICs1OTYsNyBAQAogLyoJc2VydmVyLT5wcml2LmRhdGEgPSBOVUxMOwkJKi8KIAogCXNlcnZlci0+bSA9IGRhdGE7Ci0JLyogQWx0aG91Z2h0IGFueXRoaW5nIHByb2R1Y2luZyB0aGlzIGlzIGJ1Z2d5LCBpdCBoYXBwZW5zCisJLyogQWx0aG91Z2ggYW55dGhpbmcgcHJvZHVjaW5nIHRoaXMgaXMgYnVnZ3ksIGl0IGhhcHBlbnMKIAkgICBub3cgYmVjYXVzZSBvZiBQQVRIX01BWCBjaGFuZ2VzLi4gKi8KIAlpZiAoc2VydmVyLT5tLnRpbWVfb3V0IDwgMSkgewogCQlzZXJ2ZXItPm0udGltZV9vdXQgPSAxMDsKZGlmZiAtLWdpdCBhL2ZzL25mcy9jYWxsYmFja194ZHIuYyBiL2ZzL25mcy9jYWxsYmFja194ZHIuYwppbmRleCAxNGUwZjkzLi4wMGVjZjYyIDEwMDY0NAotLS0gYS9mcy9uZnMvY2FsbGJhY2tfeGRyLmMKKysrIGIvZnMvbmZzL2NhbGxiYWNrX3hkci5jCkBAIC0yNDEsNyArMjQxLDcgQEAKIAogCWFyZ3MtPmNibF9sYXlvdXRfdHlwZSA9IG50b2hsKCpwKyspOwogCS8qIERlcGl0ZSB0aGUgc3BlYydzIHhkciwgaW9tb2RlIHJlYWxseSBiZWxvbmdzIGluIHRoZSBGSUxFIHN3aXRjaCwKLQkgKiBhcyBpdCBpcyB1bnVzZWFibGUgYW5kIGlnbm9yZWQgd2l0aCB0aGUgb3RoZXIgdHlwZXMuCisJICogYXMgaXQgaXMgdW51c2FibGUgYW5kIGlnbm9yZWQgd2l0aCB0aGUgb3RoZXIgdHlwZXMuCiAJICovCiAJaW9tb2RlID0gbnRvaGwoKnArKyk7CiAJYXJncy0+Y2JsX2xheW91dGNoYW5nZWQgPSBudG9obCgqcCsrKTsKZGlmZiAtLWdpdCBhL2ZzL25mcy9maWxlLmMgYi9mcy9uZnMvZmlsZS5jCmluZGV4IDNhYzViZDYuLjJmMDkzZWQgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9maWxlLmMKKysrIGIvZnMvbmZzL2ZpbGUuYwpAQCAtMzAxLDcgKzMwMSw3IEBACiAgKiBkaXNrLCBidXQgaXQgcmV0cmlldmVzIGFuZCBjbGVhcnMgY3R4LT5lcnJvciBhZnRlciBzeW5jaGluZywgZGVzcGl0ZQogICogdGhlIHR3byBiZWluZyBzZXQgYXQgdGhlIHNhbWUgdGltZSBpbiBuZnNfY29udGV4dF9zZXRfd3JpdGVfZXJyb3IoKS4KICAqIFRoaXMgaXMgYmVjYXVzZSB0aGUgZm9ybWVyIGlzIHVzZWQgdG8gbm90aWZ5IHRoZSBfbmV4dF8gY2FsbCB0bwotICogbmZzX2ZpbGVfd3JpdGUoKSB0aGF0IGEgd3JpdGUgZXJyb3Igb2NjdXJlZCwgYW5kIGhlbmNlIGNhdXNlIGl0IHRvCisgKiBuZnNfZmlsZV93cml0ZSgpIHRoYXQgYSB3cml0ZSBlcnJvciBvY2N1cnJlZCwgYW5kIGhlbmNlIGNhdXNlIGl0IHRvCiAgKiBmYWxsIGJhY2sgdG8gZG9pbmcgYSBzeW5jaHJvbm91cyB3cml0ZS4KICAqLwogc3RhdGljIGludApkaWZmIC0tZ2l0IGEvZnMvbmZzL25hbWVzcGFjZS5jIGIvZnMvbmZzL25hbWVzcGFjZS5jCmluZGV4IDkxNjZmY2IuLjg5ZmMxNjAgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9uYW1lc3BhY2UuYworKysgYi9mcy9uZnMvbmFtZXNwYWNlLmMKQEAgLTE0OCw2NyArMTQ4LDY0IEBACiAJcmV0dXJuIHBzZXVkb2ZsYXZvcjsKIH0KIAotc3RhdGljIHJwY19hdXRoZmxhdm9yX3QgbmZzX25lZ290aWF0ZV9zZWN1cml0eShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKK3N0YXRpYyBpbnQgbmZzX25lZ290aWF0ZV9zZWN1cml0eShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCisJCQkJICBjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCisJCQkJICBycGNfYXV0aGZsYXZvcl90ICpmbGF2b3IpCiB7Ci0JaW50IHN0YXR1cyA9IDA7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJc3RydWN0IG5mczRfc2VjaW5mb19mbGF2b3JzICpmbGF2b3JzOwogCWludCAoKnNlY2luZm8pKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgbmZzNF9zZWNpbmZvX2ZsYXZvcnMgKik7Ci0JcnBjX2F1dGhmbGF2b3JfdCBmbGF2b3IgPSBSUENfQVVUSF9VTklYOworCWludCByZXQgPSAtRVBFUk07CiAKIAlzZWNpbmZvID0gTkZTX1BST1RPKHBhcmVudC0+ZF9pbm9kZSktPnNlY2luZm87CiAJaWYgKHNlY2luZm8gIT0gTlVMTCkgewogCQlwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMKTsKIAkJaWYgKCFwYWdlKSB7Ci0JCQlzdGF0dXMgPSAtRU5PTUVNOworCQkJcmV0ID0gLUVOT01FTTsKIAkJCWdvdG8gb3V0OwogCQl9CiAJCWZsYXZvcnMgPSBwYWdlX2FkZHJlc3MocGFnZSk7Ci0JCXN0YXR1cyA9IHNlY2luZm8ocGFyZW50LT5kX2lub2RlLCAmZGVudHJ5LT5kX25hbWUsIGZsYXZvcnMpOwotCQlmbGF2b3IgPSBuZnNfZmluZF9iZXN0X3NlYyhmbGF2b3JzLCBkZW50cnktPmRfaW5vZGUpOworCQlyZXQgPSBzZWNpbmZvKHBhcmVudC0+ZF9pbm9kZSwgJmRlbnRyeS0+ZF9uYW1lLCBmbGF2b3JzKTsKKwkJKmZsYXZvciA9IG5mc19maW5kX2Jlc3Rfc2VjKGZsYXZvcnMsIGRlbnRyeS0+ZF9pbm9kZSk7CiAJCXB1dF9wYWdlKHBhZ2UpOwogCX0KIAotCXJldHVybiBmbGF2b3I7Ci0KIG91dDoKLQlzdGF0dXMgPSAtRU5PTUVNOwotCXJldHVybiBzdGF0dXM7CisJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHJwY19hdXRoZmxhdm9yX3QgbmZzX2xvb2t1cF93aXRoX3NlYyhzdHJ1Y3QgbmZzX3NlcnZlciAqc2VydmVyLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCi0JCQkJICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBwYXRoICpwYXRoLAotCQkJCSAgICAgc3RydWN0IG5mc19maCAqZmgsIHN0cnVjdCBuZnNfZmF0dHIgKmZhdHRyKQorc3RhdGljIGludCBuZnNfbG9va3VwX3dpdGhfc2VjKHN0cnVjdCBuZnNfc2VydmVyICpzZXJ2ZXIsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKKwkJCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBwYXRoICpwYXRoLAorCQkJICAgICAgIHN0cnVjdCBuZnNfZmggKmZoLCBzdHJ1Y3QgbmZzX2ZhdHRyICpmYXR0ciwKKwkJCSAgICAgICBycGNfYXV0aGZsYXZvcl90ICpmbGF2b3IpCiB7Ci0JcnBjX2F1dGhmbGF2b3JfdCBmbGF2b3I7CiAJc3RydWN0IHJwY19jbG50ICpjbG9uZTsKIAlzdHJ1Y3QgcnBjX2F1dGggKmF1dGg7CiAJaW50IGVycjsKIAotCWZsYXZvciA9IG5mc19uZWdvdGlhdGVfc2VjdXJpdHkocGFyZW50LCBwYXRoLT5kZW50cnkpOwotCWlmIChmbGF2b3IgPCAwKQorCWVyciA9IG5mc19uZWdvdGlhdGVfc2VjdXJpdHkocGFyZW50LCBwYXRoLT5kZW50cnksIGZsYXZvcik7CisJaWYgKGVyciA8IDApCiAJCWdvdG8gb3V0OwogCWNsb25lICA9IHJwY19jbG9uZV9jbGllbnQoc2VydmVyLT5jbGllbnQpOwotCWF1dGggICA9IHJwY2F1dGhfY3JlYXRlKGZsYXZvciwgY2xvbmUpOworCWF1dGggICA9IHJwY2F1dGhfY3JlYXRlKCpmbGF2b3IsIGNsb25lKTsKIAlpZiAoIWF1dGgpIHsKLQkJZmxhdm9yID0gLUVJTzsKKwkJZXJyID0gLUVJTzsKIAkJZ290byBvdXRfc2h1dGRvd247CiAJfQogCWVyciA9IHNlcnZlci0+bmZzX2NsaWVudC0+cnBjX29wcy0+bG9va3VwKGNsb25lLCBwYXJlbnQtPmRfaW5vZGUsCiAJCQkJCQkgICZwYXRoLT5kZW50cnktPmRfbmFtZSwKIAkJCQkJCSAgZmgsIGZhdHRyKTsKLQlpZiAoZXJyIDwgMCkKLQkJZmxhdm9yID0gZXJyOwogb3V0X3NodXRkb3duOgogCXJwY19zaHV0ZG93bl9jbGllbnQoY2xvbmUpOwogb3V0OgotCXJldHVybiBmbGF2b3I7CisJcmV0dXJuIGVycjsKIH0KICNlbHNlIC8qIENPTkZJR19ORlNfVjQgKi8KLXN0YXRpYyBpbmxpbmUgcnBjX2F1dGhmbGF2b3JfdCBuZnNfbG9va3VwX3dpdGhfc2VjKHN0cnVjdCBuZnNfc2VydmVyICpzZXJ2ZXIsCi0JCQkJICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKLQkJCQkgICAgIHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgbmZzX2ZoICpmaCwKLQkJCQkgICAgIHN0cnVjdCBuZnNfZmF0dHIgKmZhdHRyKQorc3RhdGljIGlubGluZSBpbnQgbmZzX2xvb2t1cF93aXRoX3NlYyhzdHJ1Y3QgbmZzX3NlcnZlciAqc2VydmVyLAorCQkJCSAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAorCQkJCSAgICAgIHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3QgbmZzX2ZoICpmaCwKKwkJCQkgICAgICBzdHJ1Y3QgbmZzX2ZhdHRyICpmYXR0ciwKKwkJCQkgICAgICBycGNfYXV0aGZsYXZvcl90ICpmbGF2b3IpCiB7CiAJcmV0dXJuIC1FUEVSTTsKIH0KQEAgLTIzNCw3ICsyMzEsNyBAQAogCXN0cnVjdCBuZnNfZmggKmZoID0gTlVMTDsKIAlzdHJ1Y3QgbmZzX2ZhdHRyICpmYXR0ciA9IE5VTEw7CiAJaW50IGVycjsKLQlycGNfYXV0aGZsYXZvcl90IGZsYXZvciA9IDE7CisJcnBjX2F1dGhmbGF2b3JfdCBmbGF2b3IgPSBSUENfQVVUSF9VTklYOwogCiAJZHByaW50aygiLS0+IG5mc19kX2F1dG9tb3VudCgpXG4iKTsKIApAQCAtMjU1LDEzICsyNTIsOCBAQAogCWVyciA9IHNlcnZlci0+bmZzX2NsaWVudC0+cnBjX29wcy0+bG9va3VwKHNlcnZlci0+Y2xpZW50LCBwYXJlbnQtPmRfaW5vZGUsCiAJCQkJCQkgICZwYXRoLT5kZW50cnktPmRfbmFtZSwKIAkJCQkJCSAgZmgsIGZhdHRyKTsKLQlpZiAoZXJyID09IC1FUEVSTSkgewotCQlmbGF2b3IgPSBuZnNfbG9va3VwX3dpdGhfc2VjKHNlcnZlciwgcGFyZW50LCBwYXRoLT5kZW50cnksIHBhdGgsIGZoLCBmYXR0cik7Ci0JCWlmIChmbGF2b3IgPCAwKQotCQkJZXJyID0gZmxhdm9yOwotCQllbHNlCi0JCQllcnIgPSAwOwotCX0KKwlpZiAoZXJyID09IC1FUEVSTSAmJiBORlNfUFJPVE8ocGFyZW50LT5kX2lub2RlKS0+c2VjaW5mbyAhPSBOVUxMKQorCQllcnIgPSBuZnNfbG9va3VwX3dpdGhfc2VjKHNlcnZlciwgcGFyZW50LCBwYXRoLT5kZW50cnksIHBhdGgsIGZoLCBmYXR0ciwgJmZsYXZvcik7CiAJZHB1dChwYXJlbnQpOwogCWlmIChlcnIgIT0gMCkgewogCQltbnQgPSBFUlJfUFRSKGVycik7CmRpZmYgLS1naXQgYS9mcy9uZnMvbmZzNGZpbGVsYXlvdXQuaCBiL2ZzL25mcy9uZnM0ZmlsZWxheW91dC5oCmluZGV4IDA4NWEzNTQuLjdjNDQ1NzkgMTAwNjQ0Ci0tLSBhL2ZzL25mcy9uZnM0ZmlsZWxheW91dC5oCisrKyBiL2ZzL25mcy9uZnM0ZmlsZWxheW91dC5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAicG5mcy5oIgogCiAvKgotICogRmllbGQgdGVzdGluZyBzaG93cyB3ZSBuZWVkIHRvIHN1cHBvcnQgdXB0byA0MDk2IHN0cmlwZSBpbmRpY2VzLgorICogRmllbGQgdGVzdGluZyBzaG93cyB3ZSBuZWVkIHRvIHN1cHBvcnQgdXAgdG8gNDA5NiBzdHJpcGUgaW5kaWNlcy4KICAqIFdlIHN0b3JlIGVhY2ggaW5kZXggYXMgYSB1OCAodTMyIG9uIHRoZSB3aXJlKSB0byBrZWVwIHRoZSBtZW1vcnkgZm9vdHByaW50CiAgKiByZWFzb25hYmxlLiBUaGlzIGluIHR1cm4gbWVhbnMgd2Ugc3VwcG9ydCBhIG1heGltdW0gb2YgMjU2CiAgKiBSRkMgNTY2MSBtdWx0aXBhdGhfbGlzdDQgc3RydWN0dXJlcy4KZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0cHJvYy5jIGIvZnMvbmZzL25mczRwcm9jLmMKaW5kZXggZGZkMWU2ZC4uOWJmNDFlYSAxMDA2NDQKLS0tIGEvZnMvbmZzL25mczRwcm9jLmMKKysrIGIvZnMvbmZzL25mczRwcm9jLmMKQEAgLTIyMDQsOCArMjIwNCw2IEBACiAJCWdvdG8gb3V0OwogCX0KIAlyZXQgPSBuZnM0X2xvb2t1cF9yb290KHNlcnZlciwgZmhhbmRsZSwgaW5mbyk7Ci0JaWYgKHJldCA8IDApCi0JCXJldCA9IC1FQUdBSU47CiBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTIyMjYsNyArMjIyNCw3IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKIAkJc3RhdHVzID0gbmZzNF9sb29rdXBfcm9vdF9zZWMoc2VydmVyLCBmaGFuZGxlLCBpbmZvLCBmbGF2X2FycmF5W2ldKTsKLQkJaWYgKHN0YXR1cyA9PSAwKQorCQlpZiAoc3RhdHVzICE9IC1FUEVSTSkKIAkJCWJyZWFrOwogCX0KIAlpZiAoc3RhdHVzID09IDApCmRpZmYgLS1naXQgYS9mcy9uZnNfY29tbW9uL25mc2FjbC5jIGIvZnMvbmZzX2NvbW1vbi9uZnNhY2wuYwppbmRleCBlYzBmMjc3Li42OTQwNDM5IDEwMDY0NAotLS0gYS9mcy9uZnNfY29tbW9uL25mc2FjbC5jCisrKyBiL2ZzL25mc19jb21tb24vbmZzYWNsLmMKQEAgLTE3Myw3ICsxNzMsNyBAQAogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJYnJlYWs7CiAJCWNhc2UgQUNMX01BU0s6Ci0JCQkvKiBTb2xhcmlzIHNvbWV0aW1lcyBzZXRzIGFkZGl0b25hbCBiaXRzIGluIHRoZSBtYXNrICovCisJCQkvKiBTb2xhcmlzIHNvbWV0aW1lcyBzZXRzIGFkZGl0aW9uYWwgYml0cyBpbiB0aGUgbWFzayAqLwogCQkJZW50cnktPmVfcGVybSAmPSBTX0lSV1hPOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9mcy9uZnNkL25mczN4ZHIuYyBiL2ZzL25mc2QvbmZzM3hkci5jCmluZGV4IDdlODRhODUuLmFkNDhmYWMgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZzM3hkci5jCisrKyBiL2ZzL25mc2QvbmZzM3hkci5jCkBAIC03MDIsNyArNzAyLDcgQEAKIAkJKnArKyA9IGh0b25sKHJlc3AtPmVvZik7CiAJCSpwKysgPSBodG9ubChyZXNwLT5jb3VudCk7CS8qIHhkciBvcGFxdWUgY291bnQgKi8KIAkJeGRyX3Jlc3NpemVfY2hlY2socnFzdHAsIHApOwotCQkvKiBub3cgdXBkYXRlIHJxc3RwLT5ycV9yZXMgdG8gcmVmbGVjdCBkYXRhIGFzd2VsbCAqLworCQkvKiBub3cgdXBkYXRlIHJxc3RwLT5ycV9yZXMgdG8gcmVmbGVjdCBkYXRhIGFzIHdlbGwgKi8KIAkJcnFzdHAtPnJxX3Jlcy5wYWdlX2xlbiA9IHJlc3AtPmNvdW50OwogCQlpZiAocmVzcC0+Y291bnQgJiAzKSB7CiAJCQkvKiBuZWVkIHRvIHBhZCB0aGUgdGFpbCAqLwpkaWZmIC0tZ2l0IGEvZnMvbmZzZC9uZnM0c3RhdGUuYyBiL2ZzL25mc2QvbmZzNHN0YXRlLmMKaW5kZXggZmJkZTZmNy4uNGIzNmVjMyAxMDA2NDQKLS0tIGEvZnMvbmZzZC9uZnM0c3RhdGUuYworKysgYi9mcy9uZnNkL25mczRzdGF0ZS5jCkBAIC0zMDU1LDcgKzMwNTUsNyBAQAogCWlmIChPTkVfU1RBVEVJRChzdGF0ZWlkKSAmJiAoZmxhZ3MgJiBSRF9TVEFURSkpCiAJCXJldHVybiBuZnNfb2s7CiAJZWxzZSBpZiAobG9ja3NfaW5fZ3JhY2UoKSkgewotCQkvKiBBbnN3ZXIgaW4gcmVtYWluaW5nIGNhc2VzIGRlcGVuZHMgb24gZXhpc3RhbmNlIG9mCisJCS8qIEFuc3dlciBpbiByZW1haW5pbmcgY2FzZXMgZGVwZW5kcyBvbiBleGlzdGVuY2Ugb2YKIAkJICogY29uZmxpY3Rpbmcgc3RhdGU7IHNvIHdlIG11c3Qgd2FpdCBvdXQgdGhlIGdyYWNlIHBlcmlvZC4gKi8KIAkJcmV0dXJuIG5mc2Vycl9ncmFjZTsKIAl9IGVsc2UgaWYgKGZsYWdzICYgV1JfU1RBVEUpCkBAIC0zNjc1LDcgKzM2NzUsNyBAQAogLyoKICAqIEFsbG9jIGEgbG9jayBvd25lciBzdHJ1Y3R1cmUuCiAgKiBDYWxsZWQgaW4gbmZzZDRfbG9jayAtIHRoZXJlZm9yZSwgT1BFTiBhbmQgT1BFTl9DT05GSVJNIChpZiBuZWVkZWQpIGhhcyAKLSAqIG9jY3VyZWQuIAorICogb2NjdXJyZWQuIAogICoKICAqIHN0cmhhc2h2YWwgPSBsb2NrX293bmVyc3RyX2hhc2h2YWwgCiAgKi8KZGlmZiAtLWdpdCBhL2ZzL25mc2QvbmZzeGRyLmMgYi9mcy9uZnNkL25mc3hkci5jCmluZGV4IDRjZTAwNWQuLjY1ZWM1OTUgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZzeGRyLmMKKysrIGIvZnMvbmZzZC9uZnN4ZHIuYwpAQCAtNDUxLDcgKzQ1MSw3IEBACiAJKnArKyA9IGh0b25sKHJlc3AtPmNvdW50KTsKIAl4ZHJfcmVzc2l6ZV9jaGVjayhycXN0cCwgcCk7CiAKLQkvKiBub3cgdXBkYXRlIHJxc3RwLT5ycV9yZXMgdG8gcmVmbGVjdCBkYXRhIGFzd2VsbCAqLworCS8qIG5vdyB1cGRhdGUgcnFzdHAtPnJxX3JlcyB0byByZWZsZWN0IGRhdGEgYXMgd2VsbCAqLwogCXJxc3RwLT5ycV9yZXMucGFnZV9sZW4gPSByZXNwLT5jb3VudDsKIAlpZiAocmVzcC0+Y291bnQgJiAzKSB7CiAJCS8qIG5lZWQgdG8gcGFkIHRoZSB0YWlsICovCmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jIGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYwppbmRleCA2YjEzMDVkLi45ZmRlMWMwIDEwMDY0NAotLS0gYS9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jCisrKyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMKQEAgLTE2NCw3ICsxNjQsNyBAQAogCQkgZmQsIHJlc3BvbnNlKTsKIAkvKgogCSAqIG1ha2Ugc3VyZSB0aGUgcmVzcG9uc2UgaXMgdmFsaWQsIGlmIGludmFsaWQgd2UgZG8gbm90aGluZyBhbmQgZWl0aGVyCi0JICogdXNlcnNwYWNlIGNhbiBzZW5kIGEgdmFsaWQgcmVzcG9uY2Ugb3Igd2Ugd2lsbCBjbGVhbiBpdCB1cCBhZnRlciB0aGUKKwkgKiB1c2Vyc3BhY2UgY2FuIHNlbmQgYSB2YWxpZCByZXNwb25zZSBvciB3ZSB3aWxsIGNsZWFuIGl0IHVwIGFmdGVyIHRoZQogCSAqIHRpbWVvdXQKIAkgKi8KIAlzd2l0Y2ggKHJlc3BvbnNlKSB7CmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvaW5vdGlmeS9pbm90aWZ5X2Zzbm90aWZ5LmMgYi9mcy9ub3RpZnkvaW5vdGlmeS9pbm90aWZ5X2Zzbm90aWZ5LmMKaW5kZXggMDM0OGQwYy4uZTNjYmQ3NCAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2lub3RpZnkvaW5vdGlmeV9mc25vdGlmeS5jCisrKyBiL2ZzL25vdGlmeS9pbm90aWZ5L2lub3RpZnlfZnNub3RpZnkuYwpAQCAtMTk0LDcgKzE5NCw3IEBACiAKIHN0YXRpYyB2b2lkIGlub3RpZnlfZnJlZV9ncm91cF9wcml2KHN0cnVjdCBmc25vdGlmeV9ncm91cCAqZ3JvdXApCiB7Ci0JLyogaWRlYWxseSB0aGUgaWRyIGlzIGVtcHR5IGFuZCB3ZSB3b24ndCBoaXQgdGhlIEJVRyBpbiB0ZWggY2FsbGJhY2sgKi8KKwkvKiBpZGVhbGx5IHRoZSBpZHIgaXMgZW1wdHkgYW5kIHdlIHdvbid0IGhpdCB0aGUgQlVHIGluIHRoZSBjYWxsYmFjayAqLwogCWlkcl9mb3JfZWFjaCgmZ3JvdXAtPmlub3RpZnlfZGF0YS5pZHIsIGlkcl9jYWxsYmFjaywgZ3JvdXApOwogCWlkcl9yZW1vdmVfYWxsKCZncm91cC0+aW5vdGlmeV9kYXRhLmlkcik7CiAJaWRyX2Rlc3Ryb3koJmdyb3VwLT5pbm90aWZ5X2RhdGEuaWRyKTsKZGlmZiAtLWdpdCBhL2ZzL25vdGlmeS9tYXJrLmMgYi9mcy9ub3RpZnkvbWFyay5jCmluZGV4IDUwYzAwODUuLjI1MmFiMWYgMTAwNjQ0Ci0tLSBhL2ZzL25vdGlmeS9tYXJrLmMKKysrIGIvZnMvbm90aWZ5L21hcmsuYwpAQCAtMjQsNyArMjQsNyBAQAogICogcmVmZXJlbmNpbmcgdGhpcyBvYmplY3QuICBUaGUgb2JqZWN0IHR5cGljYWxseSB3aWxsIGxpdmUgaW5zaWRlIHRoZSBrZXJuZWwKICAqIHdpdGggYSByZWZjbnQgb2YgMiwgb25lIGZvciBlYWNoIGxpc3QgaXQgaXMgb24gKGlfbGlzdCwgZ19saXN0KS4gIEFueSB0YXNrCiAgKiB3aGljaCBjYW4gZmluZCB0aGlzIG9iamVjdCBob2xkaW5nIHRoZSBhcHByb3ByaWV0ZSBsb2NrcywgY2FuIHRha2UgYSByZWZlcmVuY2UKLSAqIGFuZCB0aGUgb2JqZWN0IGl0c2VsZiBpcyBndWFyZW50ZWVkIHRvIHN1cnZpdmUgdW50aWwgdGhlIHJlZmVyZW5jZSBpcyBkcm9wcGVkLgorICogYW5kIHRoZSBvYmplY3QgaXRzZWxmIGlzIGd1YXJhbnRlZWQgdG8gc3Vydml2ZSB1bnRpbCB0aGUgcmVmZXJlbmNlIGlzIGRyb3BwZWQuCiAgKgogICogTE9DS0lORzoKICAqIFRoZXJlIGFyZSAzIHNwaW5sb2NrcyBpbnZvbHZlZCB3aXRoIGZzbm90aWZ5IGlub2RlIG1hcmtzIGFuZCB0aGV5IE1VU1QKZGlmZiAtLWdpdCBhL2ZzL250ZnMvYXR0cmliLmMgYi9mcy9udGZzL2F0dHJpYi5jCmluZGV4IGY1MDk0ZWUuLmYxNGZkZTIgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvYXR0cmliLmMKKysrIGIvZnMvbnRmcy9hdHRyaWIuYwpAQCAtMTk3LDcgKzE5Nyw3IEBACiAJfSBlbHNlIGlmIChjdHhfbmVlZHNfcmVzZXQpIHsKIAkJLyoKIAkJICogSWYgdGhlcmUgaXMgbm8gYXR0cmlidXRlIGxpc3QsIHJlc3RvcmluZyB0aGUgc2VhcmNoIGNvbnRleHQKLQkJICogaXMgYWNvbXBsaXNoZWQgc2ltcGx5IGJ5IGNvcHlpbmcgdGhlIHNhdmVkIGNvbnRleHQgYmFjayBvdmVyCisJCSAqIGlzIGFjY29tcGxpc2hlZCBzaW1wbHkgYnkgY29weWluZyB0aGUgc2F2ZWQgY29udGV4dCBiYWNrIG92ZXIKIAkJICogdGhlIGNhbGxlciBzdXBwbGllZCBjb250ZXh0LiAgSWYgdGhlcmUgaXMgYW4gYXR0cmlidXRlIGxpc3QsCiAJCSAqIHRoaW5ncyBhcmUgbW9yZSBjb21wbGljYXRlZCBhcyB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBtYXBwaW5nCiAJCSAqIG9mIG1mdCByZWNvcmRzIGFuZCByZXN1bHRpbmcgcG90ZW50aWFsIGNoYW5nZXMgaW4gcG9pbnRlcnMuCkBAIC0xMTgxLDcgKzExODEsNyBAQAogICogZm9yLCBpLmUuIGlmIG9uZSB3YW50cyB0byBhZGQgdGhlIGF0dHJpYnV0ZSB0byB0aGUgbWZ0IHJlY29yZCB0aGlzIGlzIHRoZQogICogY29ycmVjdCBwbGFjZSB0byBpbnNlcnQgaXRzIGF0dHJpYnV0ZSBsaXN0IGVudHJ5IGludG8uCiAgKgotICogV2hlbiAtZXJybm8gIT0gLUVOT0VOVCwgYW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcgdGhlIGxvb2t1cC4gIEBjdHgtPmF0dHIgaXMKKyAqIFdoZW4gLWVycm5vICE9IC1FTk9FTlQsIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgbG9va3VwLiAgQGN0eC0+YXR0ciBpcwogICogdGhlbiB1bmRlZmluZWQgYW5kIGluIHBhcnRpY3VsYXIgeW91IHNob3VsZCBub3QgcmVseSBvbiBpdCBub3QgY2hhbmdpbmcuCiAgKi8KIGludCBudGZzX2F0dHJfbG9va3VwKGNvbnN0IEFUVFJfVFlQRSB0eXBlLCBjb25zdCBudGZzY2hhciAqbmFtZSwKZGlmZiAtLWdpdCBhL2ZzL250ZnMvY29tcHJlc3MuYyBiL2ZzL250ZnMvY29tcHJlc3MuYwppbmRleCBlZjllZDg1Li5lZTQxNDRjIDEwMDY0NAotLS0gYS9mcy9udGZzL2NvbXByZXNzLmMKKysrIGIvZnMvbnRmcy9jb21wcmVzcy5jCkBAIC01MDEsNyArNTAxLDcgQEAKIAlWQ04gc3RhcnRfdmNuID0gKCgoczY0KWluZGV4IDw8IFBBR0VfQ0FDSEVfU0hJRlQpICYgfmNiX3NpemVfbWFzaykgPj4KIAkJCXZvbC0+Y2x1c3Rlcl9zaXplX2JpdHM7CiAJLyoKLQkgKiBUaGUgZmlyc3QgdmNuIGFmdGVyIHRoZSBsYXN0IHdhbnRlZCB2Y24gKG1pbnVtdW0gYWxpZ25tZW50IGlzIGFnYWluCisJICogVGhlIGZpcnN0IHZjbiBhZnRlciB0aGUgbGFzdCB3YW50ZWQgdmNuIChtaW5pbXVtIGFsaWdubWVudCBpcyBhZ2FpbgogCSAqIFBBR0VfQ0FDSEVfU0laRS4KIAkgKi8KIAlWQ04gZW5kX3ZjbiA9ICgoKChzNjQpKGluZGV4ICsgMVVMKSA8PCBQQUdFX0NBQ0hFX1NISUZUKSArIGNiX3NpemUgLSAxKQpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9pbm9kZS5jIGIvZnMvbnRmcy9pbm9kZS5jCmluZGV4IDBiNTZjNmIuLmMwNWQ2ZGMgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvaW5vZGUuYworKysgYi9mcy9udGZzL2lub2RlLmMKQEAgLTYyMiw3ICs2MjIsNyBAQAogCSAqLwogCS8qIEV2ZXJ5b25lIGdldHMgYWxsIHBlcm1pc3Npb25zLiAqLwogCXZpLT5pX21vZGUgfD0gU19JUldYVUdPOwotCS8qIElmIHJlYWQtb25seSwgbm9vbmUgZ2V0cyB3cml0ZSBwZXJtaXNzaW9ucy4gKi8KKwkvKiBJZiByZWFkLW9ubHksIG5vIG9uZSBnZXRzIHdyaXRlIHBlcm1pc3Npb25zLiAqLwogCWlmIChJU19SRE9OTFkodmkpKQogCQl2aS0+aV9tb2RlICY9IH5TX0lXVUdPOwogCWlmIChtLT5mbGFncyAmIE1GVF9SRUNPUkRfSVNfRElSRUNUT1JZKSB7CkBAIC0yNTI5LDcgKzI1MjksNyBAQAogCQkgKiBzcGVjaWZpZXMgdGhhdCB0aGUgYmVoYXZpb3VyIGlzIHVuc3BlY2lmaWVkIHRodXMgd2UgZG8gbm90CiAJCSAqIGhhdmUgdG8gZG8gYW55dGhpbmcuICBUaGlzIG1lYW5zIHRoYXQgaW4gb3VyIGltcGxlbWVudGF0aW9uCiAJCSAqIGluIHRoZSByYXJlIGNhc2UgdGhhdCB0aGUgZmlsZSBpcyBtbWFwKClwZWQgYW5kIGEgd3JpdGUKLQkJICogb2NjdXJlZCBpbnRvIHRoZSBtbWFwKClwZWQgcmVnaW9uIGp1c3QgYmV5b25kIHRoZSBmaWxlIHNpemUKKwkJICogb2NjdXJyZWQgaW50byB0aGUgbW1hcCgpcGVkIHJlZ2lvbiBqdXN0IGJleW9uZCB0aGUgZmlsZSBzaXplCiAJCSAqIGFuZCB3cml0ZXBhZ2UgaGFzIG5vdCB5ZXQgYmVlbiBjYWxsZWQgdG8gd3JpdGUgb3V0IHRoZSBwYWdlCiAJCSAqICh3aGljaCB3b3VsZCBjbGVhciB0aGUgYXJlYSBiZXlvbmQgdGhlIGZpbGUgc2l6ZSkgYW5kIHdlIG5vdwogCQkgKiBleHRlbmQgdGhlIGZpbGUgc2l6ZSB0byBpbmNvcnBvcmF0ZSB0aGlzIGRpcnR5IHJlZ2lvbgpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9sYXlvdXQuaCBiL2ZzL250ZnMvbGF5b3V0LmgKaW5kZXggOGIyNTQ5Zi4uZmFlY2U3MSAxMDA2NDQKLS0tIGEvZnMvbnRmcy9sYXlvdXQuaAorKysgYi9mcy9udGZzL2xheW91dC5oCkBAIC0yODYsNyArMjg2LDcgQEAKICAqIGZyYWdtZW50ZWQuIFZvbHVtZSBmcmVlIHNwYWNlIGluY2x1ZGVzIHRoZSBlbXB0eSBwYXJ0IG9mIHRoZSBtZnQgem9uZSBhbmQKICAqIHdoZW4gdGhlIHZvbHVtZSdzIGZyZWUgODglIGFyZSB1c2VkIHVwLCB0aGUgbWZ0IHpvbmUgaXMgc2hydW5rIGJ5IGEgZmFjdG9yCiAgKiBvZiAyLCB0aHVzIG1ha2luZyBtb3JlIHNwYWNlIGF2YWlsYWJsZSBmb3IgbW9yZSBmaWxlcy9kYXRhLiBUaGlzIHByb2Nlc3MgaXMKLSAqIHJlcGVhdGVkIGV2ZXJ5dGltZSB0aGVyZSBpcyBubyBtb3JlIGZyZWUgc3BhY2UgZXhjZXB0IGZvciB0aGUgbWZ0IHpvbmUgdW50aWwKKyAqIHJlcGVhdGVkIGV2ZXJ5IHRpbWUgdGhlcmUgaXMgbm8gbW9yZSBmcmVlIHNwYWNlIGV4Y2VwdCBmb3IgdGhlIG1mdCB6b25lIHVudGlsCiAgKiB0aGVyZSByZWFsbHkgaXMgbm8gbW9yZSBmcmVlIHNwYWNlLgogICovCiAKQEAgLTE2NTcsMTMgKzE2NTcsMTMgQEAKICAqCXBvaW50ZWQgdG8gYnkgdGhlIE93bmVyIGZpZWxkIHdhcyBwcm92aWRlZCBieSBhIGRlZmF1bHRpbmcgbWVjaGFuaXNtCiAgKglyYXRoZXIgdGhhbiBleHBsaWNpdGx5IHByb3ZpZGVkIGJ5IHRoZSBvcmlnaW5hbCBwcm92aWRlciBvZiB0aGUKICAqCXNlY3VyaXR5IGRlc2NyaXB0b3IuICBUaGlzIG1heSBhZmZlY3QgdGhlIHRyZWF0bWVudCBvZiB0aGUgU0lEIHdpdGgKLSAqCXJlc3BlY3QgdG8gaW5oZXJpdGVuY2Ugb2YgYW4gb3duZXIuCisgKglyZXNwZWN0IHRvIGluaGVyaXRhbmNlIG9mIGFuIG93bmVyLgogICoKICAqIFNFX0dST1VQX0RFRkFVTFRFRCAtIFRoaXMgYm9vbGVhbiBmbGFnLCB3aGVuIHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIFNJRCBpbgogICoJdGhlIEdyb3VwIGZpZWxkIHdhcyBwcm92aWRlZCBieSBhIGRlZmF1bHRpbmcgbWVjaGFuaXNtIHJhdGhlciB0aGFuCiAgKglleHBsaWNpdGx5IHByb3ZpZGVkIGJ5IHRoZSBvcmlnaW5hbCBwcm92aWRlciBvZiB0aGUgc2VjdXJpdHkKICAqCWRlc2NyaXB0b3IuICBUaGlzIG1heSBhZmZlY3QgdGhlIHRyZWF0bWVudCBvZiB0aGUgU0lEIHdpdGggcmVzcGVjdCB0bwotICoJaW5oZXJpdGVuY2Ugb2YgYSBwcmltYXJ5IGdyb3VwLgorICoJaW5oZXJpdGFuY2Ugb2YgYSBwcmltYXJ5IGdyb3VwLgogICoKICAqIFNFX0RBQ0xfUFJFU0VOVCAtIFRoaXMgYm9vbGVhbiBmbGFnLCB3aGVuIHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIHNlY3VyaXR5CiAgKglkZXNjcmlwdG9yIGNvbnRhaW5zIGEgZGlzY3JldGlvbmFyeSBBQ0wuICBJZiB0aGlzIGZsYWcgaXMgc2V0IGFuZCB0aGUKQEAgLTE2NzQsNyArMTY3NCw3IEBACiAgKglwb2ludGVkIHRvIGJ5IHRoZSBEYWNsIGZpZWxkIHdhcyBwcm92aWRlZCBieSBhIGRlZmF1bHRpbmcgbWVjaGFuaXNtCiAgKglyYXRoZXIgdGhhbiBleHBsaWNpdGx5IHByb3ZpZGVkIGJ5IHRoZSBvcmlnaW5hbCBwcm92aWRlciBvZiB0aGUKICAqCXNlY3VyaXR5IGRlc2NyaXB0b3IuICBUaGlzIG1heSBhZmZlY3QgdGhlIHRyZWF0bWVudCBvZiB0aGUgQUNMIHdpdGgKLSAqCXJlc3BlY3QgdG8gaW5oZXJpdGVuY2Ugb2YgYW4gQUNMLiAgVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgdGhlCisgKglyZXNwZWN0IHRvIGluaGVyaXRhbmNlIG9mIGFuIEFDTC4gIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGlmIHRoZQogICoJRGFjbFByZXNlbnQgZmxhZyBpcyBub3Qgc2V0LgogICoKICAqIFNFX1NBQ0xfUFJFU0VOVCAtIFRoaXMgYm9vbGVhbiBmbGFnLCB3aGVuIHNldCwgIGluZGljYXRlcyB0aGF0IHRoZSBzZWN1cml0eQpAQCAtMTY4Niw3ICsxNjg2LDcgQEAKICAqCXBvaW50ZWQgdG8gYnkgdGhlIFNhY2wgZmllbGQgd2FzIHByb3ZpZGVkIGJ5IGEgZGVmYXVsdGluZyBtZWNoYW5pc20KICAqCXJhdGhlciB0aGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQgYnkgdGhlIG9yaWdpbmFsIHByb3ZpZGVyIG9mIHRoZQogICoJc2VjdXJpdHkgZGVzY3JpcHRvci4gIFRoaXMgbWF5IGFmZmVjdCB0aGUgdHJlYXRtZW50IG9mIHRoZSBBQ0wgd2l0aAotICoJcmVzcGVjdCB0byBpbmhlcml0ZW5jZSBvZiBhbiBBQ0wuICBUaGlzIGZsYWcgaXMgaWdub3JlZCBpZiB0aGUKKyAqCXJlc3BlY3QgdG8gaW5oZXJpdGFuY2Ugb2YgYW4gQUNMLiAgVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgdGhlCiAgKglTYWNsUHJlc2VudCBmbGFnIGlzIG5vdCBzZXQuCiAgKgogICogU0VfU0VMRl9SRUxBVElWRSAtIFRoaXMgYm9vbGVhbiBmbGFnLCB3aGVuIHNldCwgaW5kaWNhdGVzIHRoYXQgdGhlIHNlY3VyaXR5CkBAIC0yMjgzLDcgKzIyODMsNyBAQAogCS8vCQkgICB0aGUga2V5X2xlbmd0aCBpcyB6ZXJvLCB0aGVuIHRoZSB2Y24gaW1tZWRpYXRlbHkKIAkvLwkJICAgZm9sbG93cyB0aGUgSU5ERVhfRU5UUllfSEVBREVSLiBSZWdhcmRsZXNzIG9mCiAJLy8JCSAgIGtleV9sZW5ndGgsIHRoZSBhZGRyZXNzIG9mIHRoZSA4LWJ5dGUgYm91bmRhcnkKLQkvLwkJICAgYWxsaWduZWQgdmNuIG9mIElOREVYX0VOVFJZe19IRUFERVJ9ICppZSBpcyBnaXZlbiBieQorCS8vCQkgICBhbGlnbmVkIHZjbiBvZiBJTkRFWF9FTlRSWXtfSEVBREVSfSAqaWUgaXMgZ2l2ZW4gYnkKIAkvLwkJICAgKGNoYXIqKWllICsgbGUxNl90b19jcHUoaWUqKS0+bGVuZ3RoKSAtIHNpemVvZihWQ04pLAogCS8vCQkgICB3aGVyZSBzaXplb2YoVkNOKSBjYW4gYmUgaGFyZGNvZGVkIGFzIDggaWYgd2FudGVkLiAqLwogfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpIElOREVYX0VOVFJZOwpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9sb2dmaWxlLmMgYi9mcy9udGZzL2xvZ2ZpbGUuYwppbmRleCA0ZGFkY2RmLi5jNzFkZTI5IDEwMDY0NAotLS0gYS9mcy9udGZzL2xvZ2ZpbGUuYworKysgYi9mcy9udGZzL2xvZ2ZpbGUuYwpAQCAtNjY5LDcgKzY2OSw3IEBACiAgKiBvZiBjYXNlcyB3aGVyZSB3ZSB0aGluayB0aGF0IGEgdm9sdW1lIGlzIGRpcnR5IHdoZW4gaW4gZmFjdCBpdCBpcyBjbGVhbi4KICAqIFRoaXMgc2hvdWxkIG9ubHkgYWZmZWN0IHZvbHVtZXMgdGhhdCBoYXZlIG5vdCBiZWVuIHNodXRkb3duIGNsZWFubHkgYnV0IGRpZAogICogbm90IGhhdmUgYW55IHBlbmRpbmcsIG5vbi1jaGVjay1wb2ludGVkIGkvbywgaS5lLiB0aGV5IHdlcmUgY29tcGxldGVseSBpZGxlCi0gKiBhdCBsZWFzdCBmb3IgdGhlIGZpdmUgc2Vjb25kcyBwcmVjZWVkaW5nIHRoZSB1bmNsZWFuIHNodXRkb3duLgorICogYXQgbGVhc3QgZm9yIHRoZSBmaXZlIHNlY29uZHMgcHJlY2VkaW5nIHRoZSB1bmNsZWFuIHNodXRkb3duLgogICoKICAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSAkTG9nRmlsZSBqb3VybmFsIGhhcyBhbHJlYWR5IGJlZW4gY29uc2lzdGVuY3kKICAqIGNoZWNrZWQgYnkgYSBjYWxsIHRvIG50ZnNfY2hlY2tfbG9nZmlsZSgpIGFuZCBpbiBwYXJ0aWN1bGFyIGlmIHRoZSAkTG9nRmlsZQpkaWZmIC0tZ2l0IGEvZnMvbnRmcy9sb2dmaWxlLmggYi9mcy9udGZzL2xvZ2ZpbGUuaAppbmRleCBiNWE2ZjA4Li5hYTJiNmFjIDEwMDY0NAotLS0gYS9mcy9udGZzL2xvZ2ZpbGUuaAorKysgYi9mcy9udGZzL2xvZ2ZpbGUuaApAQCAtMjIyLDcgKzIyMiw3IEBACiAvKiAyNCovCXNsZTY0IGZpbGVfc2l6ZTsJLyogVXNhYmxlIGJ5dGUgc2l6ZSBvZiB0aGUgbG9nIGZpbGUuICBJZiB0aGUKIAkJCQkgICByZXN0YXJ0X2FyZWFfb2Zmc2V0ICsgdGhlIG9mZnNldCBvZiB0aGUKIAkJCQkgICBmaWxlX3NpemUgYXJlID4gNTEwIHRoZW4gY29ycnVwdGlvbiBoYXMKLQkJCQkgICBvY2N1cmVkLiAgVGhpcyBpcyB0aGUgdmVyeSBmaXJzdCBjaGVjayB3aGVuCisJCQkJICAgb2NjdXJyZWQuICBUaGlzIGlzIHRoZSB2ZXJ5IGZpcnN0IGNoZWNrIHdoZW4KIAkJCQkgICBzdGFydGluZyB3aXRoIHRoZSByZXN0YXJ0X2FyZWEgYXMgaWYgaXQKIAkJCQkgICBmYWlscyBpdCBtZWFucyB0aGF0IHNvbWUgb2YgdGhlIGFib3ZlIHZhbHVlcwogCQkJCSAgIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHRoZSBtdWx0aSBzZWN0b3IKZGlmZiAtLWdpdCBhL2ZzL250ZnMvbWZ0LmMgYi9mcy9udGZzL21mdC5jCmluZGV4IDMyNmU3NDcuLjM4Mjg1N2YgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvbWZ0LmMKKysrIGIvZnMvbnRmcy9tZnQuYwpAQCAtNzMsNyArNzMsNyBAQAogCQlpZiAoaW5kZXggPiBlbmRfaW5kZXggfHwgKGlfc2l6ZSAmIH5QQUdFX0NBQ0hFX01BU0spIDwgb2ZzICsKIAkJCQl2b2wtPm1mdF9yZWNvcmRfc2l6ZSkgewogCQkJcGFnZSA9IEVSUl9QVFIoLUVOT0VOVCk7Ci0JCQludGZzX2Vycm9yKHZvbC0+c2IsICJBdHRlbXQgdG8gcmVhZCBtZnQgcmVjb3JkIDB4JWx4LCAiCisJCQludGZzX2Vycm9yKHZvbC0+c2IsICJBdHRlbXB0IHRvIHJlYWQgbWZ0IHJlY29yZCAweCVseCwgIgogCQkJCQkid2hpY2ggaXMgYmV5b25kIHRoZSBlbmQgb2YgdGhlIG1mdC4gICIKIAkJCQkJIlRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIG50ZnMgIgogCQkJCQkiZHJpdmVyLiIsIG5pLT5tZnRfbm8pOwpAQCAtMTQ0Miw3ICsxNDQyLDcgQEAKIAkJLy8gTm90ZTogSXQgd2lsbCBuZWVkIHRvIGJlIGEgc3BlY2lhbCBtZnQgcmVjb3JkIGFuZCBpZiBub25lIG9mCiAJCS8vIHRob3NlIGFyZSBhdmFpbGFibGUgaXQgZ2V0cyByYXRoZXIgY29tcGxpY2F0ZWQuLi4KIAkJbnRmc19lcnJvcih2b2wtPnNiLCAiTm90IGVub3VnaCBzcGFjZSBpbiB0aGlzIG1mdCByZWNvcmQgdG8gIgotCQkJCSJhY2NvbW9kYXRlIGV4dGVuZGVkIG1mdCBiaXRtYXAgYXR0cmlidXRlICIKKwkJCQkiYWNjb21tb2RhdGUgZXh0ZW5kZWQgbWZ0IGJpdG1hcCBhdHRyaWJ1dGUgIgogCQkJCSJleHRlbnQuICBDYW5ub3QgaGFuZGxlIHRoaXMgeWV0LiIpOwogCQlyZXQgPSAtRU9QTk9UU1VQUDsKIAkJZ290byB1bmRvX2FsbG9jOwpAQCAtMTg3OSw3ICsxODc5LDcgQEAKIAkJLy8gYW5kIHdlIHdvdWxkIHRoZW4gbmVlZCB0byB1cGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhpcyBtZnQKIAkJLy8gcmVjb3JkIGFwcHJvcHJpYXRlbHkuICBUaGlzIGlzIHJhdGhlciBjb21wbGljYXRlZC4uLgogCQludGZzX2Vycm9yKHZvbC0+c2IsICJOb3QgZW5vdWdoIHNwYWNlIGluIHRoaXMgbWZ0IHJlY29yZCB0byAiCi0JCQkJImFjY29tb2RhdGUgZXh0ZW5kZWQgbWZ0IGRhdGEgYXR0cmlidXRlICIKKwkJCQkiYWNjb21tb2RhdGUgZXh0ZW5kZWQgbWZ0IGRhdGEgYXR0cmlidXRlICIKIAkJCQkiZXh0ZW50LiAgQ2Fubm90IGhhbmRsZSB0aGlzIHlldC4iKTsKIAkJcmV0ID0gLUVPUE5PVFNVUFA7CiAJCWdvdG8gdW5kb19hbGxvYzsKQEAgLTIzNTcsNyArMjM1Nyw3IEBACiAJfQogI2lmZGVmIERFQlVHCiAJcmVhZF9sb2NrX2lycXNhdmUoJm1mdGJtcF9uaS0+c2l6ZV9sb2NrLCBmbGFncyk7Ci0JbnRmc19kZWJ1ZygiU3RhdHVzIG9mIG1mdGJtcCBhZnRlciBpbml0aWFsaXplZCBleHRlbnRpb246ICIKKwludGZzX2RlYnVnKCJTdGF0dXMgb2YgbWZ0Ym1wIGFmdGVyIGluaXRpYWxpemVkIGV4dGVuc2lvbjogIgogCQkJImFsbG9jYXRlZF9zaXplIDB4JWxseCwgZGF0YV9zaXplIDB4JWxseCwgIgogCQkJImluaXRpYWxpemVkX3NpemUgMHglbGx4LiIsCiAJCQkobG9uZyBsb25nKW1mdGJtcF9uaS0+YWxsb2NhdGVkX3NpemUsCmRpZmYgLS1naXQgYS9mcy9udGZzL3J1bmxpc3QuYyBiL2ZzL250ZnMvcnVubGlzdC5jCmluZGV4IDU2YTlhNmQyLi5lYWM3ZDY3IDEwMDY0NAotLS0gYS9mcy9udGZzL3J1bmxpc3QuYworKysgYi9mcy9udGZzL3J1bmxpc3QuYwpAQCAtMTI0Myw3ICsxMjQzLDcgQEAKICAqIHdyaXRlLgogICoKICAqIFRoaXMgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHRoZSBtYXBwaW5nIHBhaXJzIGFycmF5IG9mIGEgcnVubGlzdCB0byBjb21wcmVzcwotICogYSBnaXZlbiBsb2dpY2FsIGNsdXN0ZXIgbnVtYmVyIChsY24pIG9yIGEgc3BlY2lmaWMgcnVuIGxlbmd0aCB0byB0aGUgbWludW11bQorICogYSBnaXZlbiBsb2dpY2FsIGNsdXN0ZXIgbnVtYmVyIChsY24pIG9yIGEgc3BlY2lmaWMgcnVuIGxlbmd0aCB0byB0aGUgbWluaW11bQogICogc2l6ZSBwb3NzaWJsZS4KICAqCiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIG9uIHN1Y2Nlc3MuICBPbiBlcnJvciwgaS5lLiB0aGUKZGlmZiAtLWdpdCBhL2ZzL250ZnMvc3VwZXIuYyBiL2ZzL250ZnMvc3VwZXIuYwppbmRleCAyOTA5OWEwLi5iNTI3MDZkIDEwMDY0NAotLS0gYS9mcy9udGZzL3N1cGVyLmMKKysrIGIvZnMvbnRmcy9zdXBlci5jCkBAIC00NTgsNyArNDU4LDcgQEAKIAkgKiB0aGUgdm9sdW1lIG9uIGJvb3QgYW5kIHVwZGF0ZXMgdGhlbS4KIAkgKgogCSAqIFdoZW4gcmVtb3VudGluZyByZWFkLW9ubHksIG1hcmsgdGhlIHZvbHVtZSBjbGVhbiBpZiBubyB2b2x1bWUgZXJyb3JzCi0JICogaGF2ZSBvY2N1cmVkLgorCSAqIGhhdmUgb2NjdXJyZWQuCiAJICovCiAJaWYgKChzYi0+c19mbGFncyAmIE1TX1JET05MWSkgJiYgISgqZmxhZ3MgJiBNU19SRE9OTFkpKSB7CiAJCXN0YXRpYyBjb25zdCBjaGFyICplcyA9ICIuICBDYW5ub3QgcmVtb3VudCByZWFkLXdyaXRlLiI7CkBAIC0xMjY5LDcgKzEyNjksNyBAQAogCQkJCQkiaGliZXJuYXRlZCBvbiB0aGUgdm9sdW1lLiIpOwogCQkJcmV0dXJuIDA7CiAJCX0KLQkJLyogQSByZWFsIGVycm9yIG9jY3VyZWQuICovCisJCS8qIEEgcmVhbCBlcnJvciBvY2N1cnJlZC4gKi8KIAkJbnRmc19lcnJvcih2b2wtPnNiLCAiRmFpbGVkIHRvIGZpbmQgaW5vZGUgbnVtYmVyIGZvciAiCiAJCQkJImhpYmVyZmlsLnN5cy4iKTsKIAkJcmV0dXJuIHJldDsKQEAgLTEzNzAsNyArMTM3MCw3IEBACiAJCQlOVm9sU2V0UXVvdGFPdXRPZkRhdGUodm9sKTsKIAkJCXJldHVybiB0cnVlOwogCQl9Ci0JCS8qIEEgcmVhbCBlcnJvciBvY2N1cmVkLiAqLworCQkvKiBBIHJlYWwgZXJyb3Igb2NjdXJyZWQuICovCiAJCW50ZnNfZXJyb3Iodm9sLT5zYiwgIkZhaWxlZCB0byBmaW5kIGlub2RlIG51bWJlciBmb3IgJFF1b3RhLiIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtMTQ1NCw3ICsxNDU0LDcgQEAKIAkJCU5Wb2xTZXRVc25Kcm5sU3RhbXBlZCh2b2wpOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KLQkJLyogQSByZWFsIGVycm9yIG9jY3VyZWQuICovCisJCS8qIEEgcmVhbCBlcnJvciBvY2N1cnJlZC4gKi8KIAkJbnRmc19lcnJvcih2b2wtPnNiLCAiRmFpbGVkIHRvIGZpbmQgaW5vZGUgbnVtYmVyIGZvciAiCiAJCQkJIiRVc25Kcm5sLiIpOwogCQlyZXR1cm4gZmFsc2U7CkBAIC0yMjkyLDcgKzIyOTIsNyBAQAogCW50ZnNfY29tbWl0X2lub2RlKHZvbC0+bWZ0X2lubyk7CiAKIAkvKgotCSAqIElmIGEgcmVhZC13cml0ZSBtb3VudCBhbmQgbm8gdm9sdW1lIGVycm9ycyBoYXZlIG9jY3VyZWQsIG1hcmsgdGhlCisJICogSWYgYSByZWFkLXdyaXRlIG1vdW50IGFuZCBubyB2b2x1bWUgZXJyb3JzIGhhdmUgb2NjdXJyZWQsIG1hcmsgdGhlCiAJICogdm9sdW1lIGNsZWFuLiAgQWxzbywgcmUtY29tbWl0IGFsbCBhZmZlY3RlZCBpbm9kZXMuCiAJICovCiAJaWYgKCEoc2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkpKSB7CkBAIC0yNDk2LDcgKzI0OTYsNyBAQAogCWlmICh2b2wtPm5yX2NsdXN0ZXJzICYgNjMpCiAJCW5yX2ZyZWUgKz0gNjQgLSAodm9sLT5ucl9jbHVzdGVycyAmIDYzKTsKIAl1cF9yZWFkKCZ2b2wtPmxjbmJtcF9sb2NrKTsKLQkvKiBJZiBlcnJvcnMgb2NjdXJlZCB3ZSBtYXkgd2VsbCBoYXZlIGdvbmUgYmVsb3cgemVybywgZml4IHRoaXMuICovCisJLyogSWYgZXJyb3JzIG9jY3VycmVkIHdlIG1heSB3ZWxsIGhhdmUgZ29uZSBiZWxvdyB6ZXJvLCBmaXggdGhpcy4gKi8KIAlpZiAobnJfZnJlZSA8IDApCiAJCW5yX2ZyZWUgPSAwOwogCW50ZnNfZGVidWcoIkV4aXRpbmcuIik7CkBAIC0yNTYxLDcgKzI1NjEsNyBAQAogCX0KIAludGZzX2RlYnVnKCJGaW5pc2hlZCByZWFkaW5nICRNRlQvJEJJVE1BUCwgbGFzdCBpbmRleCA9IDB4JWx4LiIsCiAJCQlpbmRleCAtIDEpOwotCS8qIElmIGVycm9ycyBvY2N1cmVkIHdlIG1heSB3ZWxsIGhhdmUgZ29uZSBiZWxvdyB6ZXJvLCBmaXggdGhpcy4gKi8KKwkvKiBJZiBlcnJvcnMgb2NjdXJyZWQgd2UgbWF5IHdlbGwgaGF2ZSBnb25lIGJlbG93IHplcm8sIGZpeCB0aGlzLiAqLwogCWlmIChucl9mcmVlIDwgMCkKIAkJbnJfZnJlZSA9IDA7CiAJbnRmc19kZWJ1ZygiRXhpdGluZy4iKTsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2FsbG9jLmMgYi9mcy9vY2ZzMi9hbGxvYy5jCmluZGV4IGIyN2EwZDguLjQ4YWE5YzcgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2FsbG9jLmMKKysrIGIvZnMvb2NmczIvYWxsb2MuYwpAQCAtNDUxOSw3ICs0NTE5LDcgQEAKIH0KIAogLyoKLSAqIEhlbHBlciBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIGJlZ2luaW5nIG9mIGFuIGluc2VydC4KKyAqIEhlbHBlciBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpbnNlcnQuCiAgKgogICogVGhpcyBjb21wdXRlcyBhIGZldyB0aGluZ3MgdGhhdCBhcmUgY29tbW9ubHkgdXNlZCBpbiB0aGUgcHJvY2VzcyBvZgogICogaW5zZXJ0aW5nIGludG8gdGhlIGJ0cmVlOgpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvYW9wcy5oIGIvZnMvb2NmczIvYW9wcy5oCmluZGV4IGVjZWI0NTYuLjc1Y2YzYWQgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2FvcHMuaAorKysgYi9mcy9vY2ZzMi9hb3BzLmgKQEAgLTcxLDcgKzcxLDcgQEAKIAogLyoKICAqIFVzaW5nIGEgbmFtZWQgZW51bSByZXByZXNlbnRpbmcgbG9jayB0eXBlcyBpbiB0ZXJtcyBvZiAjTiBiaXQgc3RvcmVkIGluCi0gKiBpb2NiLT5wcml2YXRlLCB3aGljaCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciBjb21tdW5pY2F0aW9uIGJld3RlZW4KKyAqIGlvY2ItPnByaXZhdGUsIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbgogICogb2NmczJfZGlvX2VuZF9pbygpIGFuZCBvY2ZzMl9maWxlX2Fpb193cml0ZS9yZWFkKCkuCiAgKi8KIGVudW0gb2NmczJfaW9jYl9sb2NrX2JpdHMgewpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYyBiL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKaW5kZXggMjQ2MWViMy4uNjQzNzIwMiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYworKysgYi9mcy9vY2ZzMi9jbHVzdGVyL2hlYXJ0YmVhdC5jCkBAIC0yMjc1LDcgKzIyNzUsNyBAQAogCWtmcmVlKGhzKTsKIH0KIAotLyogaGIgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGFuZCBpc3N1ZWluZyAqLworLyogaGIgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGFuZCBpc3N1aW5nICovCiAKIHN0YXRpYyBzdHJ1Y3QgbzJoYl9jYWxsYmFjayAqaGJjYWxsX2Zyb21fdHlwZShlbnVtIG8yaGJfY2FsbGJhY2tfdHlwZSB0eXBlKQogewpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvY2x1c3Rlci9xdW9ydW0uYyBiL2ZzL29jZnMyL2NsdXN0ZXIvcXVvcnVtLmMKaW5kZXggYTg3MzY2Ny4uOGY5Y2VhMSAxMDA2NDQKLS0tIGEvZnMvb2NmczIvY2x1c3Rlci9xdW9ydW0uYworKysgYi9mcy9vY2ZzMi9jbHVzdGVyL3F1b3J1bS5jCkBAIC04OSw3ICs4OSw3IEBACiAJfTsKIH0KIAotLyogSW5kaWNhdGUgdGhhdCBhIHRpbWVvdXQgb2NjdXJlZCBvbiBhIGhlYXJiZWF0IHJlZ2lvbiB3cml0ZS4gVGhlCisvKiBJbmRpY2F0ZSB0aGF0IGEgdGltZW91dCBvY2N1cnJlZCBvbiBhIGhlYXJiZWF0IHJlZ2lvbiB3cml0ZS4gVGhlCiAgKiBvdGhlciBub2RlcyBpbiB0aGUgY2x1c3RlciBtYXkgY29uc2lkZXIgdXMgZGVhZCBhdCB0aGF0IHRpbWUgc28gd2UKICAqIHdhbnQgdG8gImZlbmNlIiBvdXJzZWx2ZXMgc28gdGhhdCB3ZSBkb24ndCBzY3JpYmJsZSBvbiB0aGUgZGlzawogICogYWZ0ZXIgdGhleSB0aGluayB0aGV5J3ZlIHJlY292ZXJlZCB1cy4gVGhpcyBjYW4ndCBzb2x2ZSBhbGwKQEAgLTI2MSw3ICsyNjEsNyBAQAogCXNwaW5fdW5sb2NrKCZxcy0+cXNfbG9jayk7CiB9CiAKLS8qIFRoaXMgaXMgYW5hbGFnb3VzIHRvIGhiX3VwLiAgYXMgYSBub2RlJ3MgY29ubmVjdGlvbiBjb21lcyB1cCB3ZSBkZWxheSB0aGUKKy8qIFRoaXMgaXMgYW5hbG9nb3VzIHRvIGhiX3VwLiAgYXMgYSBub2RlJ3MgY29ubmVjdGlvbiBjb21lcyB1cCB3ZSBkZWxheSB0aGUKICAqIHF1b3J1bSBkZWNpc2lvbiB1bnRpbCB3ZSBzZWUgaXQgaGVhcnRiZWF0aW5nLiAgdGhlIGhvbGQgd2lsbCBiZSBkcm9wZWQgaW4KICAqIGhiX3VwIG9yIGhiX2Rvd24uICBpdCBtaWdodCBiZSBwZXJwZXR1YXRlZCBieSBjb25fZXJyIHVudGlsIGhiX2Rvd24uICBpZgogICogaXQncyBhbHJlYWR5IGhlYXJ0YmVhdGluZyB3ZSB3ZSBtaWdodCBiZSBkcm9wcGluZyBhIGhvbGQgdGhhdCBjb25uX3VwIGdvdC4KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2NsdXN0ZXIvdGNwLmMgYi9mcy9vY2ZzMi9jbHVzdGVyL3RjcC5jCmluZGV4IGVlMDRmZjUuLmRiNWVlNGIgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2NsdXN0ZXIvdGNwLmMKKysrIGIvZnMvb2NmczIvY2x1c3Rlci90Y3AuYwpAQCAtNTY1LDcgKzU2NSw3IEBACiAJICogdGhlIHdvcmsgcXVldWUgYWN0dWFsbHkgYmVpbmcgdXAuICovCiAJaWYgKCF2YWxpZCAmJiBvMm5ldF93cSkgewogCQl1bnNpZ25lZCBsb25nIGRlbGF5OwotCQkvKiBkZWxheSBpZiB3ZSdyZSB3aXRoaW5nIGEgUkVDT05ORUNUX0RFTEFZIG9mIHRoZQorCQkvKiBkZWxheSBpZiB3ZSdyZSB3aXRoaW4gYSBSRUNPTk5FQ1RfREVMQVkgb2YgdGhlCiAJCSAqIGxhc3QgYXR0ZW1wdCAqLwogCQlkZWxheSA9IChubi0+bm5fbGFzdF9jb25uZWN0X2F0dGVtcHQgKwogCQkJIG1zZWNzX3RvX2ppZmZpZXMobzJuZXRfcmVjb25uZWN0X2RlbGF5KCkpKQpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jIGIvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jCmluZGV4IDlkNjc2MTAuLmZlZGU1N2UgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2RsbS9kbG1tYXN0ZXIuYworKysgYi9mcy9vY2ZzMi9kbG0vZGxtbWFzdGVyLmMKQEAgLTgwOCw3ICs4MDgsNyBAQAogCQkJCWRsbV9tbGVfZGV0YWNoX2hiX2V2ZW50cyhkbG0sIG1sZSk7CiAJCQlkbG1fcHV0X21sZShtbGUpOwogCQkJbWxlID0gTlVMTDsKLQkJCS8qIHRoaXMgaXMgbGFtZSwgYnV0IHdlIGNhbnQgd2FpdCBvbiBlaXRoZXIKKwkJCS8qIHRoaXMgaXMgbGFtZSwgYnV0IHdlIGNhbid0IHdhaXQgb24gZWl0aGVyCiAJCQkgKiB0aGUgbWxlIG9yIGxvY2tyZXMgd2FpdHF1ZXVlIGhlcmUgKi8KIAkJCWlmIChtaWcpCiAJCQkJbXNsZWVwKDEwMCk7CkBAIC04NDMsNyArODQzLDcgQEAKIAogCS8qIGZpbmFsbHkgYWRkIHRoZSBsb2NrcmVzIHRvIGl0cyBoYXNoIGJ1Y2tldCAqLwogCV9fZGxtX2luc2VydF9sb2NrcmVzKGRsbSwgcmVzKTsKLQkvKiBzaW5jZSB0aGlzIGxvY2tyZXMgaXMgbmV3IGl0IGRvZXNudCBub3QgcmVxdWlyZSB0aGUgc3BpbmxvY2sgKi8KKwkvKiBzaW5jZSB0aGlzIGxvY2tyZXMgaXMgbmV3IGl0IGRvZXNuJ3Qgbm90IHJlcXVpcmUgdGhlIHNwaW5sb2NrICovCiAJZGxtX2xvY2tyZXNfZ3JhYl9pbmZsaWdodF9yZWZfbmV3KGRsbSwgcmVzKTsKIAogCS8qIGlmIHRoaXMgbm9kZSBkb2VzIG5vdCBiZWNvbWUgdGhlIG1hc3RlciBtYWtlIHN1cmUgdG8gZHJvcApkaWZmIC0tZ2l0IGEvZnMvb2NmczIvaW5vZGUuYyBiL2ZzL29jZnMyL2lub2RlLmMKaW5kZXggMTc3ZDNhNi4uYjRjOGJiNiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvaW5vZGUuYworKysgYi9mcy9vY2ZzMi9pbm9kZS5jCkBAIC04MzUsNyArODM1LDcgQEAKIAogCS8qIElmIHdlIGhhdmUgYWxsb3dkIHdpcGUgb2YgdGhpcyBpbm9kZSBmb3IgYW5vdGhlciBub2RlLCBpdAogCSAqIHdpbGwgYmUgbWFya2VkIGhlcmUgc28gd2UgY2FuIHNhZmVseSBza2lwIGl0LiBSZWNvdmVyeSB3aWxsCi0JICogY2xlYW51cCBhbnkgaW5vZGVzIHdlIG1pZ2h0IGluYWR2ZXJ0YW50bHkgc2tpcCBoZXJlLiAqLworCSAqIGNsZWFudXAgYW55IGlub2RlcyB3ZSBtaWdodCBpbmFkdmVydGVudGx5IHNraXAgaGVyZS4gKi8KIAlpZiAob2ktPmlwX2ZsYWdzICYgT0NGUzJfSU5PREVfU0tJUF9ERUxFVEUpCiAJCWdvdG8gYmFpbF91bmxvY2s7CiAKQEAgLTkxNyw3ICs5MTcsNyBAQAogCSAqIHRoZSBpbm9kZSBvcGVuIGxvY2sgaW4gb2NmczJfcmVhZF9sb2NrZWRfaW5vZGUoKS4gV2hlbiB3ZQogCSAqIGdldCB0byAtPmRlbGV0ZV9pbm9kZSgpLCBlYWNoIG5vZGUgdHJpZXMgdG8gY29udmVydCBpdCdzCiAJICogbG9jayB0byBhbiBleGNsdXNpdmUuIFRyeWxvY2tzIGFyZSBzZXJpYWxpemVkIGJ5IHRoZSBpbm9kZQotCSAqIG1ldGEgZGF0YSBsb2NrLiBJZiB0aGUgdXBjb252ZXJ0IHN1Y2VlZHMsIHdlIGtub3cgdGhlIGlub2RlCisJICogbWV0YSBkYXRhIGxvY2suIElmIHRoZSB1cGNvbnZlcnQgc3VjY2VlZHMsIHdlIGtub3cgdGhlIGlub2RlCiAJICogaXMgbm8gbG9uZ2VyIGxpdmUgYW5kIGNhbiBiZSBkZWxldGVkLgogCSAqCiAJICogVGhvdWdoIHdlIGNhbGwgdGhpcyB3aXRoIHRoZSBtZXRhIGRhdGEgbG9jayBoZWxkLCB0aGUKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2pvdXJuYWwuYyBiL2ZzL29jZnMyL2pvdXJuYWwuYwppbmRleCBkY2MyZDkzLi5iMTQxYTQ0IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9qb3VybmFsLmMKKysrIGIvZnMvb2NmczIvam91cm5hbC5jCkBAIC0xMzY4LDcgKzEzNjgsNyBAQAogCQltbG9nX2Vycm5vKHN0YXR1cyk7CiAKIAkvKiBOb3cgaXQgaXMgcmlnaHQgdGltZSB0byByZWNvdmVyIHF1b3Rhcy4uLiBXZSBoYXZlIHRvIGRvIHRoaXMgdW5kZXIKLQkgKiBzdXBlcmJsb2NrIGxvY2sgc28gdGhhdCBub29uZSBjYW4gc3RhcnQgdXNpbmcgdGhlIHNsb3QgKGFuZCBjcmFzaCkKKwkgKiBzdXBlcmJsb2NrIGxvY2sgc28gdGhhdCBubyBvbmUgY2FuIHN0YXJ0IHVzaW5nIHRoZSBzbG90IChhbmQgY3Jhc2gpCiAJICogYmVmb3JlIHdlIHJlY292ZXIgaXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgcm1fcXVvdGFfdXNlZDsgaSsrKSB7CiAJCXFyZWMgPSBvY2ZzMl9iZWdpbl9xdW90YV9yZWNvdmVyeShvc2IsIHJtX3F1b3RhW2ldKTsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2pvdXJuYWwuaCBiL2ZzL29jZnMyL2pvdXJuYWwuaAppbmRleCA2MTgwZGExLi42OGNmMmY2IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9qb3VybmFsLmgKKysrIGIvZnMvb2NmczIvam91cm5hbC5oCkBAIC0yMTUsNyArMjE1LDcgQEAKIAkJLyogV0FSTklORzogVGhpcyBvbmx5IGtpY2tzIG9mZiBhIHNpbmdsZQogCQkgKiBjaGVja3BvaW50LiBJZiBzb21lb25lIHJhY2VzIHlvdSBhbmQgYWRkcyBtb3JlCiAJCSAqIG1ldGFkYXRhIHRvIHRoZSBqb3VybmFsLCB5b3Ugd29uJ3Qga25vdywgYW5kIHdpbGwKLQkJICogd2luZCB1cCB3YWl0aW5nICphbG90KiBsb25nZXIgdGhhbiBuZWNlc3NhcnkuIFJpZ2h0CisJCSAqIHdpbmQgdXAgd2FpdGluZyAqYSBsb3QqIGxvbmdlciB0aGFuIG5lY2Vzc2FyeS4gUmlnaHQKIAkJICogbm93IHdlIG9ubHkgdXNlIHRoaXMgaW4gY2xlYXJfaW5vZGUgc28gdGhhdCdzCiAJCSAqIE9LLiAqLwogCQlvY2ZzMl9zdGFydF9jaGVja3BvaW50KG9zYik7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9uYW1laS5jIGIvZnMvb2NmczIvbmFtZWkuYwppbmRleCAyOGYyY2MxLi5lNWQ3MzhjIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9uYW1laS5jCisrKyBiL2ZzL29jZnMyL25hbWVpLmMKQEAgLTIxMjgsNyArMjEyOCw3IEBACiB9CiAKIC8qKgotICogb2NmczJfcHJlcF9uZXdfb3JwaGFuZWRfZmlsZSgpIC0gUHJlcGFyZSB0aGUgb3JwaGFuIGRpciB0byByZWNpZXZlIGEgbmV3bHkKKyAqIG9jZnMyX3ByZXBfbmV3X29ycGhhbmVkX2ZpbGUoKSAtIFByZXBhcmUgdGhlIG9ycGhhbiBkaXIgdG8gcmVjZWl2ZSBhIG5ld2x5CiAgKiBhbGxvY2F0ZWQgZmlsZS4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgdHlwaWNhbCAnYWRkIHRvIG9ycGhhbiBkaXInCiAgKiBvcGVyYXRpb24gaW4gdGhhdCB0aGUgaW5vZGUgZG9lcyBub3QgeWV0IGV4aXN0LiBUaGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlCiAgKiB0aGUgb3JwaGFuIGRpciBzdHJpbmdpZmllcyB0aGUgaW5vZGUgYmxvY2sgbnVtYmVyIHRvIGNvbWUgdXAgd2l0aCBpdCdzCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9vY2ZzMl9mcy5oIGIvZnMvb2NmczIvb2NmczJfZnMuaAppbmRleCBiZjJlNzc2Li5iNjhmODdhIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9vY2ZzMl9mcy5oCisrKyBiL2ZzL29jZnMyL29jZnMyX2ZzLmgKQEAgLTQ0MSw3ICs0NDEsNyBAQAogc3RydWN0IG9jZnMyX2Jsb2NrX2NoZWNrIHsKIC8qMDAqLwlfX2xlMzIgYmNfY3JjMzJlOwkvKiA4MDIuMyBFdGhlcm5ldCBJSSBDUkMzMiAqLwogCV9fbGUxNiBiY19lY2M7CQkvKiBTaW5nbGUtZXJyb3ItY29ycmVjdGlvbiBwYXJpdHkgdmVjdG9yLgotCQkJCSAgIFRoaXMgaXMgYSBzaW1wbGUgSGFtbWluZyBjb2RlIGRlcGVuZGFudAorCQkJCSAgIFRoaXMgaXMgYSBzaW1wbGUgSGFtbWluZyBjb2RlIGRlcGVuZGVudAogCQkJCSAgIG9uIHRoZSBibG9ja3NpemUuICBPQ0ZTMidzIG1heGltdW0KIAkJCQkgICBibG9ja3NpemUsIDRLLCByZXF1aXJlcyAxNiBwYXJpdHkgYml0cywKIAkJCQkgICBzbyB3ZSBmaXQgaW4gX19sZTE2LiAqLwpAQCAtNzUwLDcgKzc1MCw3IEBACiAJCQkJCQkJICBhZnRlciBhbiB1bmNsZWFuCiAJCQkJCQkJICBzaHV0ZG93biAqLwogCQl9IGpvdXJuYWwxOwotCX0gaWQxOwkJCQkvKiBJbm9kZSB0eXBlIGRlcGVuZGFudCAxICovCisJfSBpZDE7CQkJCS8qIElub2RlIHR5cGUgZGVwZW5kZW50IDEgKi8KIC8qQzAqLwl1bmlvbiB7CiAJCXN0cnVjdCBvY2ZzMl9zdXBlcl9ibG9jawlpX3N1cGVyOwogCQlzdHJ1Y3Qgb2NmczJfbG9jYWxfYWxsb2MJaV9sYWI7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9xdW90YV9nbG9iYWwuYyBiL2ZzL29jZnMyL3F1b3RhX2dsb2JhbC5jCmluZGV4IDI3OWFlZjYuLjkyZmNkNTcgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL3F1b3RhX2dsb2JhbC5jCisrKyBiL2ZzL29jZnMyL3F1b3RhX2dsb2JhbC5jCkBAIC01NTYsNyArNTU2LDcgQEAKIAlzcGluX3VubG9jaygmZHFfZGF0YV9sb2NrKTsKIAllcnIgPSBvY2ZzMl9xaW5mb19sb2NrKGluZm8sIGZyZWVpbmcpOwogCWlmIChlcnIgPCAwKSB7Ci0JCW1sb2coTUxfRVJST1IsICJGYWlsZWQgdG8gbG9jayBxdW90YSBpbmZvLCBsb29zaW5nIHF1b3RhIHdyaXRlIgorCQltbG9nKE1MX0VSUk9SLCAiRmFpbGVkIHRvIGxvY2sgcXVvdGEgaW5mbywgbG9zaW5nIHF1b3RhIHdyaXRlIgogCQkJICAgICAgICIgKHR5cGU9JWQsIGlkPSV1KVxuIiwgZHF1b3QtPmRxX3R5cGUsCiAJCQkgICAgICAgKHVuc2lnbmVkKWRxdW90LT5kcV9pZCk7CiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvcmVzZXJ2YXRpb25zLmggYi9mcy9vY2ZzMi9yZXNlcnZhdGlvbnMuaAppbmRleCAxZTQ5Y2MyLi40MmMyYjgwIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9yZXNlcnZhdGlvbnMuaAorKysgYi9mcy9vY2ZzMi9yZXNlcnZhdGlvbnMuaApAQCAtMjksNyArMjksNyBAQAogc3RydWN0IG9jZnMyX2FsbG9jX3Jlc2VydmF0aW9uIHsKIAlzdHJ1Y3QgcmJfbm9kZQlyX25vZGU7CiAKLQl1bnNpZ25lZCBpbnQJcl9zdGFydDsJLyogQmVnaW5pbmcgb2YgY3VycmVudCB3aW5kb3cgKi8KKwl1bnNpZ25lZCBpbnQJcl9zdGFydDsJLyogQmVnaW5uaW5nIG9mIGN1cnJlbnQgd2luZG93ICovCiAJdW5zaWduZWQgaW50CXJfbGVuOwkJLyogTGVuZ3RoIG9mIHRoZSB3aW5kb3cgKi8KIAogCXVuc2lnbmVkIGludAlyX2xhc3RfbGVuOwkvKiBMZW5ndGggb2YgbW9zdCByZWNlbnQgYWxsb2MgKi8KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL3N0YWNrZ2x1ZS5oIGIvZnMvb2NmczIvc3RhY2tnbHVlLmgKaW5kZXggOGNlNzM5OC4uMWVjNTZmZCAxMDA2NDQKLS0tIGEvZnMvb2NmczIvc3RhY2tnbHVlLmgKKysrIGIvZnMvb2NmczIvc3RhY2tnbHVlLmgKQEAgLTEyNiw3ICsxMjYsNyBAQAogCSAqCiAJICogLT5jb25uZWN0KCkgbXVzdCBub3QgcmV0dXJuIHVudGlsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdAogCSAqCi0JICogIC0gTm9kZSBkb3duIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBmaWxlc3lzdGVtIHdpbGwgYmUgcmVjaWV2ZWQKKwkgKiAgLSBOb2RlIGRvd24gbm90aWZpY2F0aW9ucyBmb3IgdGhlIGZpbGVzeXN0ZW0gd2lsbCBiZSByZWNlaXZlZAogCSAqICAgIGFuZCBwYXNzZWQgdG8gY29ubi0+Y2NfcmVjb3ZlcnlfaGFuZGxlcigpLgogCSAqICAtIExvY2tpbmcgcmVxdWVzdHMgZm9yIHRoZSBmaWxlc3lzdGVtIHdpbGwgYmUgcHJvY2Vzc2VkLgogCSAqLwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvc3ViYWxsb2MuYyBiL2ZzL29jZnMyL3N1YmFsbG9jLmMKaW5kZXggYWI2ZTIwNi4uYmE1ZDk3ZSAxMDA2NDQKLS0tIGEvZnMvb2NmczIvc3ViYWxsb2MuYworKysgYi9mcy9vY2ZzMi9zdWJhbGxvYy5jCkBAIC0xNTExLDcgKzE1MTEsNyBAQAogCQltYXhfYml0cyA9IGxlMTZfdG9fY3B1KGdkLT5iZ19iaXRzKTsKIAogCQkvKiBUYWlsIGdyb3VwcyBpbiBjbHVzdGVyIGJpdG1hcHMgd2hpY2ggYXJlbid0IGNwZwotCQkgKiBhbGlnbmVkIGFyZSBwcm9uZSB0byBwYXJ0aWFsIGV4dGVudGlvbiBieSBhIGZhaWxlZAorCQkgKiBhbGlnbmVkIGFyZSBwcm9uZSB0byBwYXJ0aWFsIGV4dGVuc2lvbiBieSBhIGZhaWxlZAogCQkgKiBmcyByZXNpemUuIElmIHRoZSBmaWxlIHN5c3RlbSByZXNpemUgbmV2ZXIgZ290IHRvCiAJCSAqIHVwZGF0ZSB0aGUgZGlub2RlIGNsdXN0ZXIgY291bnQsIHRoZW4gd2UgZG9uJ3Qgd2FudAogCQkgKiB0byB0cnVzdCBhbnkgY2x1c3RlcnMgcGFzdCBpdCwgcmVnYXJkbGVzcyBvZiB3aGF0CkBAIC0yNDU5LDcgKzI0NTksNyBAQAogCS8qIFRoZSBhbGxvY19iaCBjb21lcyBmcm9tIG9jZnMyX2ZyZWVfZGlub2RlKCkgb3IKIAkgKiBvY2ZzMl9mcmVlX2NsdXN0ZXJzKCkuICBUaGUgY2FsbGVycyBoYXZlIGFsbCBsb2NrZWQgdGhlCiAJICogYWxsb2NhdG9yIGFuZCBnb3R0ZW4gYWxsb2NfYmggZnJvbSB0aGUgbG9jayBjYWxsLiAgVGhpcwotCSAqIHZhbGlkYXRlcyB0aGUgZGlub2RlIGJ1ZmZlci4gIEFueSBjb3JydXB0aW9uIHRoYXQgaGFzIGhhcHBlbmRlZAorCSAqIHZhbGlkYXRlcyB0aGUgZGlub2RlIGJ1ZmZlci4gIEFueSBjb3JydXB0aW9uIHRoYXQgaGFzIGhhcHBlbmVkCiAJICogaXMgYSBjb2RlIGJ1Zy4gKi8KIAlCVUdfT04oIU9DRlMyX0lTX1ZBTElEX0RJTk9ERShmZSkpOwogCUJVR19PTigoY291bnQgKyBzdGFydF9iaXQpID4gb2NmczJfYml0c19wZXJfZ3JvdXAoY2wpKTsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL3N1cGVyLmMgYi9mcy9vY2ZzMi9zdXBlci5jCmluZGV4IDY5ZmExMWIuLjVhNTIxYzcgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL3N1cGVyLmMKKysrIGIvZnMvb2NmczIvc3VwZXIuYwpAQCAtNzgsNyArNzgsNyBAQAogc3RydWN0IGttZW1fY2FjaGUgKm9jZnMyX2RxdW90X2NhY2hlcDsKIHN0cnVjdCBrbWVtX2NhY2hlICpvY2ZzMl9xZl9jaHVua19jYWNoZXA7CiAKLS8qIE9DRlMyIG5lZWRzIHRvIHNjaGVkdWxlIHNldmVyYWwgZGlmZmVybnQgdHlwZXMgb2Ygd29yayB3aGljaAorLyogT0NGUzIgbmVlZHMgdG8gc2NoZWR1bGUgc2V2ZXJhbCBkaWZmZXJlbnQgdHlwZXMgb2Ygd29yayB3aGljaAogICogcmVxdWlyZSBjbHVzdGVyIGxvY2tpbmcsIGRpc2sgSS9PLCByZWNvdmVyeSB3YWl0cywgZXRjLiBTaW5jZSB0aGVzZQogICogdHlwZXMgb2Ygd29yayB0ZW5kIHRvIGJlIGhlYXZ5IHdlIGF2b2lkIHVzaW5nIHRoZSBrZXJuZWwgZXZlbnRzCiAgKiB3b3JrcXVldWUgYW5kIHNjaGVkdWxlIG9uIG91ciBvd24uICovCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi94YXR0ci5jIGIvZnMvb2NmczIveGF0dHIuYwppbmRleCA1N2EyMTVkLi44MWVjZjljIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi94YXR0ci5jCisrKyBiL2ZzL29jZnMyL3hhdHRyLmMKQEAgLTM1NTQsNyArMzU1NCw3IEBACiAJZG93bl93cml0ZSgmT0NGUzJfSShpbm9kZSktPmlwX3hhdHRyX3NlbSk7CiAJLyoKIAkgKiBTY2FuIGlub2RlIGFuZCBleHRlcm5hbCBibG9jayB0byBmaW5kIHRoZSBzYW1lIG5hbWUKLQkgKiBleHRlbmRlZCBhdHRyaWJ1dGUgYW5kIGNvbGxlY3Qgc2VhcmNoIGluZm9tYXRpb24uCisJICogZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCBjb2xsZWN0IHNlYXJjaCBpbmZvcm1hdGlvbi4KIAkgKi8KIAlyZXQgPSBvY2ZzMl94YXR0cl9pYm9keV9maW5kKGlub2RlLCBuYW1lX2luZGV4LCBuYW1lLCAmeGlzKTsKIAlpZiAocmV0KQpAQCAtMzU3OCw3ICszNTc4LDcgQEAKIAkJCWdvdG8gY2xlYW51cDsKIAl9CiAKLQkvKiBDaGVjayB3aGV0aGVyIHRoZSB2YWx1ZSBpcyByZWZjb3VudGVkIGFuZCBkbyBzb21lIHByZXBhcnRpb24uICovCisJLyogQ2hlY2sgd2hldGhlciB0aGUgdmFsdWUgaXMgcmVmY291bnRlZCBhbmQgZG8gc29tZSBwcmVwYXJhdGlvbi4gKi8KIAlpZiAoT0NGUzJfSShpbm9kZSktPmlwX2R5bl9mZWF0dXJlcyAmIE9DRlMyX0hBU19SRUZDT1VOVF9GTCAmJgogCSAgICAoIXhpcy5ub3RfZm91bmQgfHwgIXhicy5ub3RfZm91bmQpKSB7CiAJCXJldCA9IG9jZnMyX3ByZXBhcmVfcmVmY291bnRfeGF0dHIoaW5vZGUsIGRpLCAmeGksCmRpZmYgLS1naXQgYS9mcy9wYXJ0aXRpb25zL2NoZWNrLmMgYi9mcy9wYXJ0aXRpb25zL2NoZWNrLmMKaW5kZXggYWM1NDY5Ny4uZDU0NWU5NyAxMDA2NDQKLS0tIGEvZnMvcGFydGl0aW9ucy9jaGVjay5jCisrKyBiL2ZzL3BhcnRpdGlvbnMvY2hlY2suYwpAQCAtNTAwLDcgKzUwMCw3IEBACiAJLyogZXZlcnl0aGluZyBpcyB1cCBhbmQgcnVubmluZywgY29tbWVuY2UgKi8KIAlyY3VfYXNzaWduX3BvaW50ZXIocHRibC0+cGFydFtwYXJ0bm9dLCBwKTsKIAotCS8qIHN1cHByZXNzIHVldmVudCBpZiB0aGUgZGlzayBzdXByZXNzZXMgaXQgKi8KKwkvKiBzdXBwcmVzcyB1ZXZlbnQgaWYgdGhlIGRpc2sgc3VwcHJlc3NlcyBpdCAqLwogCWlmICghZGV2X2dldF91ZXZlbnRfc3VwcHJlc3MoZGRldikpCiAJCWtvYmplY3RfdWV2ZW50KCZwZGV2LT5rb2JqLCBLT0JKX0FERCk7CiAKQEAgLTU4NSw3ICs1ODUsNyBAQAogCS8qCiAJICogSWYgYW55IHBhcnRpdGlvbiBjb2RlIHRyaWVkIHRvIHJlYWQgYmV5b25kIEVPRCwgdHJ5CiAJICogdW5sb2NraW5nIG5hdGl2ZSBjYXBhY2l0eSBldmVuIGlmIHBhcnRpdGlvbiB0YWJsZSBpcwotCSAqIHN1Y2Vzc2Z1bGx5IHJlYWQgYXMgd2UgY291bGQgYmUgbWlzc2luZyBzb21lIHBhcnRpdGlvbnMuCisJICogc3VjY2Vzc2Z1bGx5IHJlYWQgYXMgd2UgY291bGQgYmUgbWlzc2luZyBzb21lIHBhcnRpdGlvbnMuCiAJICovCiAJaWYgKHN0YXRlLT5hY2Nlc3NfYmV5b25kX2VvZCkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HCmRpZmYgLS1naXQgYS9mcy9wcm9jL2Jhc2UuYyBiL2ZzL3Byb2MvYmFzZS5jCmluZGV4IDVhNjcwYzEuLmRkNjYyOGQgMTAwNjQ0Ci0tLSBhL2ZzL3Byb2MvYmFzZS5jCisrKyBiL2ZzL3Byb2MvYmFzZS5jCkBAIC0yMjAsNyArMjIwLDcgQEAKIAl9CiAKIAkvKgotCSAqIE5vb25lIGVsc2UgaXMgYWxsb3dlZC4KKwkgKiBObyBvbmUgZWxzZSBpcyBhbGxvd2VkLgogCSAqLwogCW1tcHV0KG1tKTsKIAlyZXR1cm4gRVJSX1BUUigtRVBFUk0pOwpkaWZmIC0tZ2l0IGEvZnMvcHN0b3JlL0tjb25maWcgYi9mcy9wc3RvcmUvS2NvbmZpZwppbmRleCA4NjdkMGFjLi44MDA3YWU3IDEwMDY0NAotLS0gYS9mcy9wc3RvcmUvS2NvbmZpZworKysgYi9mcy9wc3RvcmUvS2NvbmZpZwpAQCAtMSw1ICsxLDUgQEAKIGNvbmZpZyBQU1RPUkUKLQlib29sICJQZXJzaXN0YW50IHN0b3JlIHN1cHBvcnQiCisJYm9vbCAiUGVyc2lzdGVudCBzdG9yZSBzdXBwb3J0IgogCWRlZmF1bHQgbgogCWhlbHAKIAkgICBUaGlzIG9wdGlvbiBlbmFibGVzIGdlbmVyaWMgYWNjZXNzIHRvIHBsYXRmb3JtIGxldmVsCmRpZmYgLS1naXQgYS9mcy9xdW90YS9kcXVvdC5jIGIvZnMvcXVvdGEvZHF1b3QuYwppbmRleCBmY2M4YWU3Li5kM2MwMzJmIDEwMDY0NAotLS0gYS9mcy9xdW90YS9kcXVvdC5jCisrKyBiL2ZzL3F1b3RhL2RxdW90LmMKQEAgLTQ0Miw3ICs0NDIsNyBAQAogICovCiBpbnQgZHF1b3RfY29tbWl0KHN0cnVjdCBkcXVvdCAqZHF1b3QpCiB7Ci0JaW50IHJldCA9IDAsIHJldDIgPSAwOworCWludCByZXQgPSAwOwogCXN0cnVjdCBxdW90YV9pbmZvICpkcW9wdCA9IHNiX2Rxb3B0KGRxdW90LT5kcV9zYik7CiAKIAltdXRleF9sb2NrKCZkcW9wdC0+ZHFpb19tdXRleCk7CkBAIC00NTQsMTUgKzQ1NCwxMCBAQAogCXNwaW5fdW5sb2NrKCZkcV9saXN0X2xvY2spOwogCS8qIEluYWN0aXZlIGRxdW90IGNhbiBiZSBvbmx5IGlmIHRoZXJlIHdhcyBlcnJvciBkdXJpbmcgcmVhZC9pbml0CiAJICogPT4gd2UgaGF2ZSBiZXR0ZXIgbm90IHdyaXRpbmcgaXQgKi8KLQlpZiAodGVzdF9iaXQoRFFfQUNUSVZFX0IsICZkcXVvdC0+ZHFfZmxhZ3MpKSB7CisJaWYgKHRlc3RfYml0KERRX0FDVElWRV9CLCAmZHF1b3QtPmRxX2ZsYWdzKSkKIAkJcmV0ID0gZHFvcHQtPm9wc1tkcXVvdC0+ZHFfdHlwZV0tPmNvbW1pdF9kcWJsayhkcXVvdCk7Ci0JCWlmIChpbmZvX2RpcnR5KCZkcW9wdC0+aW5mb1tkcXVvdC0+ZHFfdHlwZV0pKSB7Ci0JCQlyZXQyID0gZHFvcHQtPm9wc1tkcXVvdC0+ZHFfdHlwZV0tPndyaXRlX2ZpbGVfaW5mbygKLQkJCQkJCWRxdW90LT5kcV9zYiwgZHF1b3QtPmRxX3R5cGUpOwotCQl9Ci0JCWlmIChyZXQgPj0gMCkKLQkJCXJldCA9IHJldDI7Ci0JfQorCWVsc2UKKwkJcmV0ID0gLUVJTzsKIG91dF9zZW06CiAJbXV0ZXhfdW5sb2NrKCZkcW9wdC0+ZHFpb19tdXRleCk7CiAJcmV0dXJuIHJldDsKQEAgLTk1Niw3ICs5NTEsNyBAQAogCiAvKgogICogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZHF1b3RzIGZyb20gaW5vZGUgYW5kIGFkZCBkcXVvdCB0byBsaXN0IGZvciBmcmVlaW5nCi0gKiBpZiB3ZSBoYXZlIHRoZSBsYXN0IHJlZmVyZWNlIHRvIGRxdW90CisgKiBpZiB3ZSBoYXZlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBkcXVvdAogICogV2UgY2FuJ3QgcmFjZSB3aXRoIGFueWJvZHkgYmVjYXVzZSB3ZSBob2xkIGRxcHRyX3NlbSBmb3Igd3JpdGluZy4uLgogICovCiBzdGF0aWMgaW50IHJlbW92ZV9pbm9kZV9kcXVvdF9yZWYoc3RydWN0IGlub2RlICppbm9kZSwgaW50IHR5cGUsCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9qb3VybmFsLmMgYi9mcy9yZWlzZXJmcy9qb3VybmFsLmMKaW5kZXggYzc3NTE0Yi4uYzVlODJlYyAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMvam91cm5hbC5jCisrKyBiL2ZzL3JlaXNlcmZzL2pvdXJuYWwuYwpAQCAtMSw3ICsxLDcgQEAKIC8qCiAqKiBXcml0ZSBhaGVhZCBsb2dnaW5nIGltcGxlbWVudGF0aW9uIGNvcHlyaWdodCBDaHJpcyBNYXNvbiAyMDAwCiAqKgotKiogVGhlIGJhY2tncm91bmQgY29tbWl0cyBtYWtlIHRoaXMgY29kZSB2ZXJ5IGludGVyZWxhdGVkLCBhbmQKKyoqIFRoZSBiYWNrZ3JvdW5kIGNvbW1pdHMgbWFrZSB0aGlzIGNvZGUgdmVyeSBpbnRlcnJlbGF0ZWQsIGFuZAogKiogb3Zlcmx5IGNvbXBsZXguICBJIG5lZWQgdG8gcmV0aGluayB0aGluZ3MgYSBiaXQuLi4uVGhlIG1ham9yIHBsYXllcnM6CiAqKgogKiogam91cm5hbF9iZWdpbiAtLSBjYWxsIHdpdGggdGhlIG51bWJlciBvZiBibG9ja3MgeW91IGV4cGVjdCB0byBsb2cuCkBAIC0yNzI1LDcgKzI3MjUsNyBAQAogCQkJCQkJIFJFSVNFUkZTX0RJU0tfT0ZGU0VUX0lOX0JZVEVTIC8KIAkJCQkJCSBzYi0+c19ibG9ja3NpemUgKyAyKTsKIAotCS8qIFNhbml0eSBjaGVjayB0byBzZWUgaXMgdGhlIHN0YW5kYXJkIGpvdXJuYWwgZml0dGluZyB3aXRoaW5nIGZpcnN0IGJpdG1hcAorCS8qIFNhbml0eSBjaGVjayB0byBzZWUgaXMgdGhlIHN0YW5kYXJkIGpvdXJuYWwgZml0dGluZyB3aXRoaW4gZmlyc3QgYml0bWFwCiAJICAgKGFjdHVhbCBmb3Igc21hbGwgYmxvY2tzaXplcykgKi8KIAlpZiAoIVNCX09ORElTS19KT1VSTkFMX0RFVklDRShzYikgJiYKIAkgICAgKFNCX0pPVVJOQUxfMXN0X1JFU0VSVkVEX0JMT0NLKHNiKSArCmRpZmYgLS1naXQgYS9mcy9yZWlzZXJmcy9sb2NrLmMgYi9mcy9yZWlzZXJmcy9sb2NrLmMKaW5kZXggYjg3YWEyYy4uN2RmMWNlNCAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMvbG9jay5jCisrKyBiL2ZzL3JlaXNlcmZzL2xvY2suYwpAQCAtMTUsNyArMTUsNyBAQAogICogZm9yIHRoaXMgbXV0ZXgsIG5vIG5lZWQgZm9yIGEgc3lzdGVtIHdpZGUgbXV0ZXggZmFjaWxpdHkuCiAgKgogICogQWxzbyB0aGlzIGxvY2sgaXMgb2Z0ZW4gcmVsZWFzZWQgYmVmb3JlIGEgY2FsbCB0aGF0IGNvdWxkIGJsb2NrIGJlY2F1c2UKLSAqIHJlaXNlcmZzIHBlcmZvcm1hbmNlcyB3ZXJlIHBhcnRpYWx5IGJhc2VkIG9uIHRoZSByZWxlYXNlIHdoaWxlIHNjaGVkdWxlKCkKKyAqIHJlaXNlcmZzIHBlcmZvcm1hbmNlcyB3ZXJlIHBhcnRpYWxseSBiYXNlZCBvbiB0aGUgcmVsZWFzZSB3aGlsZSBzY2hlZHVsZSgpCiAgKiBwcm9wZXJ0eSBvZiB0aGUgQmtsLgogICovCiB2b2lkIHJlaXNlcmZzX3dyaXRlX2xvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpzKQpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMvc3VwZXIuYyBiL2ZzL3JlaXNlcmZzL3N1cGVyLmMKaW5kZXggMGFhYjA0Zi4uYjIxNmZmNiAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMvc3VwZXIuYworKysgYi9mcy9yZWlzZXJmcy9zdXBlci5jCkBAIC0zOTMsNyArMzkzLDcgQEAKIAkvKiBib2R5IG9mICJzYXZlIiBsaW5rICovCiAJbGluayA9IElOT0RFX1BLRVkoaW5vZGUpLT5rX2Rpcl9pZDsKIAotCS8qIHB1dCAic2F2ZSIgbGluayBpbm90IHRyZWUsIGRvbid0IGNoYXJnZSBxdW90YSB0byBhbnlvbmUgKi8KKwkvKiBwdXQgInNhdmUiIGxpbmsgaW50byB0cmVlLCBkb24ndCBjaGFyZ2UgcXVvdGEgdG8gYW55b25lICovCiAJcmV0dmFsID0KIAkgICAgcmVpc2VyZnNfaW5zZXJ0X2l0ZW0odGgsICZwYXRoLCAma2V5LCAmaWgsIE5VTEwsIChjaGFyICopJmxpbmspOwogCWlmIChyZXR2YWwpIHsKQEAgLTIxMDQsNyArMjEwNCw3IEBACiAKIC8qIFJlYWQgZGF0YSBmcm9tIHF1b3RhZmlsZSAtIGF2b2lkIHBhZ2VjYWNoZSBhbmQgc3VjaCBiZWNhdXNlIHdlIGNhbm5vdCBhZmZvcmQKICAqIGFjcXVpcmluZyB0aGUgbG9ja3MuLi4gQXMgcXVvdGEgZmlsZXMgYXJlIG5ldmVyIHRydW5jYXRlZCBhbmQgcXVvdGEgY29kZQotICogaXRzZWxmIHNlcmlhbGl6ZXMgdGhlIG9wZXJhdGlvbnMgKGFuZCBub29uZSBlbHNlIHNob3VsZCB0b3VjaCB0aGUgZmlsZXMpCisgKiBpdHNlbGYgc2VyaWFsaXplcyB0aGUgb3BlcmF0aW9ucyAoYW5kIG5vIG9uZSBlbHNlIHNob3VsZCB0b3VjaCB0aGUgZmlsZXMpCiAgKiB3ZSBkb24ndCBoYXZlIHRvIGJlIGFmcmFpZCBvZiByYWNlcyAqLwogc3RhdGljIHNzaXplX3QgcmVpc2VyZnNfcXVvdGFfcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSwgY2hhciAqZGF0YSwKIAkJCQkgICBzaXplX3QgbGVuLCBsb2ZmX3Qgb2ZmKQpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMveGF0dHIuYyBiL2ZzL3JlaXNlcmZzL3hhdHRyLmMKaW5kZXggNWMxMWNhOC4uNDdkMmE0NCAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMveGF0dHIuYworKysgYi9mcy9yZWlzZXJmcy94YXR0ci5jCkBAIC0zOTYsNyArMzk2LDcgQEAKIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGRpci0+aV9tYXBwaW5nOwogCXN0cnVjdCBwYWdlICpwYWdlOwogCS8qIFdlIGNhbiBkZWFkbG9jayBpZiB3ZSB0cnkgdG8gZnJlZSBkZW50cmllcywKLQkgICBhbmQgYW4gdW5saW5rL3JtZGlyIGhhcyBqdXN0IG9jY3VyZWQgLSBHRlBfTk9GUyBhdm9pZHMgdGhpcyAqLworCSAgIGFuZCBhbiB1bmxpbmsvcm1kaXIgaGFzIGp1c3Qgb2NjdXJyZWQgLSBHRlBfTk9GUyBhdm9pZHMgdGhpcyAqLwogCW1hcHBpbmdfc2V0X2dmcF9tYXNrKG1hcHBpbmcsIEdGUF9OT0ZTKTsKIAlwYWdlID0gcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgbiA+PiBQQUdFX0NBQ0hFX1NISUZULCBOVUxMKTsKIAlpZiAoIUlTX0VSUihwYWdlKSkgewpkaWZmIC0tZ2l0IGEvZnMvc3F1YXNoZnMvY2FjaGUuYyBiL2ZzL3NxdWFzaGZzL2NhY2hlLmMKaW5kZXggMjZiMTVhZS4uYzM3YjUyMCAxMDA2NDQKLS0tIGEvZnMvc3F1YXNoZnMvY2FjaGUuYworKysgYi9mcy9zcXVhc2hmcy9jYWNoZS5jCkBAIC0xMDQsNyArMTA0LDcgQEAKIAkJCWVudHJ5ID0gJmNhY2hlLT5lbnRyeVtpXTsKIAogCQkJLyoKLQkJCSAqIEluaXRpYWxpc2UgY2hvb3NlbiBjYWNoZSBlbnRyeSwgYW5kIGZpbGwgaXQgaW4gZnJvbQorCQkJICogSW5pdGlhbGlzZSBjaG9zZW4gY2FjaGUgZW50cnksIGFuZCBmaWxsIGl0IGluIGZyb20KIAkJCSAqIGRpc2suCiAJCQkgKi8KIAkJCWNhY2hlLT51bnVzZWQtLTsKQEAgLTI4Niw3ICsyODYsNyBAQAogCiAKIC8qCi0gKiBDb3B5IHVwdG8gbGVuZ3RoIGJ5dGVzIGZyb20gY2FjaGUgZW50cnkgdG8gYnVmZmVyIHN0YXJ0aW5nIGF0IG9mZnNldCBieXRlcworICogQ29weSB1cCB0byBsZW5ndGggYnl0ZXMgZnJvbSBjYWNoZSBlbnRyeSB0byBidWZmZXIgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzCiAgKiBpbnRvIHRoZSBjYWNoZSBlbnRyeS4gIElmIHRoZXJlJ3Mgbm90IGxlbmd0aCBieXRlcyB0aGVuIGNvcHkgdGhlIG51bWJlciBvZgogICogYnl0ZXMgYXZhaWxhYmxlLiAgSW4gYWxsIGNhc2VzIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZC4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvS2NvbmZpZyBiL2ZzL3ViaWZzL0tjb25maWcKaW5kZXggZDc0NDA5MC4uZjhiMDE2MCAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvS2NvbmZpZworKysgYi9mcy91Ymlmcy9LY29uZmlnCkBAIC00Nyw3ICs0Nyw3IEBACiAJYm9vbCAiRW5hYmxlIGRlYnVnZ2luZyBzdXBwb3J0IgogCWRlcGVuZHMgb24gVUJJRlNfRlMKIAlzZWxlY3QgREVCVUdfRlMKLQlzZWxlY3QgS0FMTFNZTVNfQUxMCisJc2VsZWN0IEtBTExTWU1TCiAJaGVscAogCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBVQklGUyBkZWJ1Z2dpbmcgc3VwcG9ydC4gSXQgbWFrZXMgc3VyZSB2YXJpb3VzCiAJICBhc3NlcnRpb25zLCBzZWxmLWNoZWNrcywgZGVidWdnaW5nIG1lc3NhZ2VzIGFuZCB0ZXN0IG1vZGVzIGFyZSBjb21waWxlZApkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvYnVkZ2V0LmMgYi9mcy91Ymlmcy9idWRnZXQuYwppbmRleCBjOGZmMGQxLi44YjNhN2RhIDEwMDY0NAotLS0gYS9mcy91Ymlmcy9idWRnZXQuYworKysgYi9mcy91Ymlmcy9idWRnZXQuYwpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAJCWlmIChsaWFiMiA8IGxpYWIxKQogCQkJcmV0dXJuIC1FQUdBSU47CiAKLQkJZGJnX2J1ZGcoIm5ldyBsaWFiaWxpdHkgJWxsZCAobm90IHNocmlua2VkKSIsIGxpYWIyKTsKKwkJZGJnX2J1ZGcoIm5ldyBsaWFiaWxpdHkgJWxsZCAobm90IHNocnVuaykiLCBsaWFiMik7CiAKIAkJLyogTGlhYmlsaXR5IGRpZCBub3Qgc2hyaW5rIGFnYWluLCB0cnkgR0MgKi8KIAkJZGJnX2J1ZGcoIlJ1biBHQyIpOwpkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvY29tbWl0LmMgYi9mcy91Ymlmcy9jb21taXQuYwppbmRleCBiMTQ4ZmJjLi4xYmQwMWRlIDEwMDY0NAotLS0gYS9mcy91Ymlmcy9jb21taXQuYworKysgYi9mcy91Ymlmcy9jb21taXQuYwpAQCAtNTc3LDcgKzU3Nyw3IEBACiAJc2l6ZV90IHN6OwogCiAJaWYgKCEodWJpZnNfY2hrX2ZsYWdzICYgVUJJRlNfQ0hLX09MRF9JRFgpKQotCQlnb3RvIG91dDsKKwkJcmV0dXJuIDA7CiAKIAlJTklUX0xJU1RfSEVBRCgmbGlzdCk7CiAKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2RlYnVnLmMgYi9mcy91Ymlmcy9kZWJ1Zy5jCmluZGV4IGYyNWE3MzMuLjAwNGQzNzQgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL2RlYnVnLmMKKysrIGIvZnMvdWJpZnMvZGVidWcuYwpAQCAtOTcyLDExICs5NzIsMzkgQEAKIHZvaWQgZGJnX3NhdmVfc3BhY2VfaW5mbyhzdHJ1Y3QgdWJpZnNfaW5mbyAqYykKIHsKIAlzdHJ1Y3QgdWJpZnNfZGVidWdfaW5mbyAqZCA9IGMtPmRiZzsKLQotCXViaWZzX2dldF9scF9zdGF0cyhjLCAmZC0+c2F2ZWRfbHN0KTsKKwlpbnQgZnJlZWFibGVfY250OwogCiAJc3Bpbl9sb2NrKCZjLT5zcGFjZV9sb2NrKTsKKwltZW1jcHkoJmQtPnNhdmVkX2xzdCwgJmMtPmxzdCwgc2l6ZW9mKHN0cnVjdCB1Ymlmc19scF9zdGF0cykpOworCisJLyoKKwkgKiBXZSB1c2UgYSBkaXJ0eSBoYWNrIGhlcmUgYW5kIHplcm8gb3V0IEBjLT5mcmVlYWJsZV9jbnQsIGJlY2F1c2UgaXQKKwkgKiBhZmZlY3RzIHRoZSBmcmVlIHNwYWNlIGNhbGN1bGF0aW9ucywgYW5kIFVCSUZTIG1pZ2h0IG5vdCBrbm93IGFib3V0CisJICogYWxsIGZyZWVhYmxlIGVyYXNlYmxvY2tzLiBJbmRlZWQsIHdlIGtub3cgYWJvdXQgZnJlZWFibGUgZXJhc2VibG9ja3MKKwkgKiBvbmx5IHdoZW4gd2UgcmVhZCB0aGVpciBscHJvcHMsIGFuZCB3ZSBkbyB0aGlzIG9ubHkgbGF6aWx5LCB1cG9uIHRoZQorCSAqIG5lZWQuIFNvIGF0IGFueSBnaXZlbiBwb2ludCBvZiB0aW1lIEBjLT5mcmVlYWJsZV9jbnQgbWlnaHQgYmUgbm90CisJICogZXhhY3RseSBhY2N1cmF0ZS4KKwkgKgorCSAqIEp1c3Qgb25lIGV4YW1wbGUgYWJvdXQgdGhlIGlzc3VlIHdlIGhpdCB3aGVuIHdlIGRpZCBub3QgemVybworCSAqIEBjLT5mcmVlYWJsZV9jbnQuCisJICogMS4gVGhlIGZpbGUtc3lzdGVtIGlzIG1vdW50ZWQgUi9PLCBjLT5mcmVlYWJsZV9jbnQgaXMgJTAuIFdlIHNhdmUgdGhlCisJICogICAgYW1vdW50IG9mIGZyZWUgc3BhY2UgaW4gQGQtPnNhdmVkX2ZyZWUKKwkgKiAyLiBXZSByZS1tb3VudCBSL1csIHdoaWNoIG1ha2VzIFVCSUZTIHRvIHJlYWQgdGhlICJsc2F2ZSIKKwkgKiAgICBpbmZvcm1hdGlvbiBmcm9tIGZsYXNoLCB3aGVyZSB3ZSBjYWNoZSBMRUJzIGZyb20gdmFyaW91cworCSAqICAgIGNhdGVnb3JpZXMgKCd1Ymlmc19yZW1vdW50X2ZzKCknIC0+ICd1Ymlmc19scHRfaW5pdCgpJworCSAqICAgIC0+ICdscHRfaW5pdF93cigpJyAtPiAncmVhZF9sc2F2ZSgpJyAtPiAndWJpZnNfbHB0X2xvb2t1cCgpJworCSAqICAgIC0+ICd1Ymlmc19nZXRfcG5vZGUoKScgLT4gJ3VwZGF0ZV9jYXRzKCknCisJICogICAgLT4gJ3ViaWZzX2FkZF90b19jYXQoKScpLgorCSAqIDMuIExzYXZlIGNvbnRhaW5zIGEgZnJlZWFibGUgZXJhc2VibG9jaywgYW5kIEBjLT5mcmVlYWJsZV9jbnQKKwkgKiAgICBiZWNvbWVzICUxLgorCSAqIDQuIFdlIGNhbGN1bGF0ZSB0aGUgYW1vdW50IG9mIGZyZWUgc3BhY2Ugd2hlbiB0aGUgcmUtbW91bnQgaXMKKwkgKiAgICBmaW5pc2hlZCBpbiAnZGJnX2NoZWNrX3NwYWNlX2luZm8oKScgYW5kIGl0IGRvZXMgbm90IG1hdGNoCisJICogICAgQGQtPnNhdmVkX2ZyZWUuCisJICovCisJZnJlZWFibGVfY250ID0gYy0+ZnJlZWFibGVfY250OworCWMtPmZyZWVhYmxlX2NudCA9IDA7CiAJZC0+c2F2ZWRfZnJlZSA9IHViaWZzX2dldF9mcmVlX3NwYWNlX25vbG9jayhjKTsKKwljLT5mcmVlYWJsZV9jbnQgPSBmcmVlYWJsZV9jbnQ7CiAJc3Bpbl91bmxvY2soJmMtPnNwYWNlX2xvY2spOwogfQogCkBAIC05OTMsMTIgKzEwMjEsMTUgQEAKIHsKIAlzdHJ1Y3QgdWJpZnNfZGVidWdfaW5mbyAqZCA9IGMtPmRiZzsKIAlzdHJ1Y3QgdWJpZnNfbHBfc3RhdHMgbHN0OwotCWxvbmcgbG9uZyBhdmFpbCwgZnJlZTsKKwlsb25nIGxvbmcgZnJlZTsKKwlpbnQgZnJlZWFibGVfY250OwogCiAJc3Bpbl9sb2NrKCZjLT5zcGFjZV9sb2NrKTsKLQlhdmFpbCA9IHViaWZzX2NhbGNfYXZhaWxhYmxlKGMsIGMtPm1pbl9pZHhfbGVicyk7CisJZnJlZWFibGVfY250ID0gYy0+ZnJlZWFibGVfY250OworCWMtPmZyZWVhYmxlX2NudCA9IDA7CisJZnJlZSA9IHViaWZzX2dldF9mcmVlX3NwYWNlX25vbG9jayhjKTsKKwljLT5mcmVlYWJsZV9jbnQgPSBmcmVlYWJsZV9jbnQ7CiAJc3Bpbl91bmxvY2soJmMtPnNwYWNlX2xvY2spOwotCWZyZWUgPSB1Ymlmc19nZXRfZnJlZV9zcGFjZShjKTsKIAogCWlmIChmcmVlICE9IGQtPnNhdmVkX2ZyZWUpIHsKIAkJdWJpZnNfZXJyKCJmcmVlIHNwYWNlIGNoYW5nZWQgZnJvbSAlbGxkIHRvICVsbGQiLApAQCAtMjgwNiw0MCArMjgzNywzOCBAQAogCXN0cnVjdCB1Ymlmc19kZWJ1Z19pbmZvICpkID0gYy0+ZGJnOwogCiAJc3ByaW50ZihkLT5kZnNfZGlyX25hbWUsICJ1YmklZF8lZCIsIGMtPnZpLnViaV9udW0sIGMtPnZpLnZvbF9pZCk7Ci0JZC0+ZGZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkLT5kZnNfZGlyX25hbWUsIGRmc19yb290ZGlyKTsKLQlpZiAoSVNfRVJSKGQtPmRmc19kaXIpKSB7Ci0JCWVyciA9IFBUUl9FUlIoZC0+ZGZzX2Rpcik7Ci0JCXViaWZzX2VycigiY2Fubm90IGNyZWF0ZSBcIiVzXCIgZGVidWdmcyBkaXJlY3RvcnksIGVycm9yICVkXG4iLAotCQkJICBkLT5kZnNfZGlyX25hbWUsIGVycik7CisJZm5hbWUgPSBkLT5kZnNfZGlyX25hbWU7CisJZGVudCA9IGRlYnVnZnNfY3JlYXRlX2RpcihmbmFtZSwgZGZzX3Jvb3RkaXIpOworCWlmIChJU19FUlJfT1JfTlVMTChkZW50KSkKIAkJZ290byBvdXQ7Ci0JfQorCWQtPmRmc19kaXIgPSBkZW50OwogCiAJZm5hbWUgPSAiZHVtcF9scHJvcHMiOwogCWRlbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZuYW1lLCBTX0lXVVNSLCBkLT5kZnNfZGlyLCBjLCAmZGZzX2ZvcHMpOwotCWlmIChJU19FUlIoZGVudCkpCisJaWYgKElTX0VSUl9PUl9OVUxMKGRlbnQpKQogCQlnb3RvIG91dF9yZW1vdmU7CiAJZC0+ZGZzX2R1bXBfbHByb3BzID0gZGVudDsKIAogCWZuYW1lID0gImR1bXBfYnVkZyI7CiAJZGVudCA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoZm5hbWUsIFNfSVdVU1IsIGQtPmRmc19kaXIsIGMsICZkZnNfZm9wcyk7Ci0JaWYgKElTX0VSUihkZW50KSkKKwlpZiAoSVNfRVJSX09SX05VTEwoZGVudCkpCiAJCWdvdG8gb3V0X3JlbW92ZTsKIAlkLT5kZnNfZHVtcF9idWRnID0gZGVudDsKIAogCWZuYW1lID0gImR1bXBfdG5jIjsKIAlkZW50ID0gZGVidWdmc19jcmVhdGVfZmlsZShmbmFtZSwgU19JV1VTUiwgZC0+ZGZzX2RpciwgYywgJmRmc19mb3BzKTsKLQlpZiAoSVNfRVJSKGRlbnQpKQorCWlmIChJU19FUlJfT1JfTlVMTChkZW50KSkKIAkJZ290byBvdXRfcmVtb3ZlOwogCWQtPmRmc19kdW1wX3RuYyA9IGRlbnQ7CiAKIAlyZXR1cm4gMDsKIAogb3V0X3JlbW92ZToKLQllcnIgPSBQVFJfRVJSKGRlbnQpOwotCXViaWZzX2VycigiY2Fubm90IGNyZWF0ZSBcIiVzXCIgZGVidWdmcyBkaXJlY3RvcnksIGVycm9yICVkXG4iLAotCQkgIGZuYW1lLCBlcnIpOwogCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShkLT5kZnNfZGlyKTsKIG91dDoKKwllcnIgPSBkZW50ID8gUFRSX0VSUihkZW50KSA6IC1FTk9ERVY7CisJdWJpZnNfZXJyKCJjYW5ub3QgY3JlYXRlIFwiJXNcIiBkZWJ1Z2ZzIGRpcmVjdG9yeSwgZXJyb3IgJWRcbiIsCisJCSAgZm5hbWUsIGVycik7CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvbHB0LmMgYi9mcy91Ymlmcy9scHQuYwppbmRleCA3Mjc3NWQzLi5lZjUxNTVlIDEwMDY0NAotLS0gYS9mcy91Ymlmcy9scHQuYworKysgYi9mcy91Ymlmcy9scHQuYwpAQCAtMTI3MCwxMCArMTI3MCw5IEBACiAJbG51bSA9IGJyYW5jaC0+bG51bTsKIAlvZmZzID0gYnJhbmNoLT5vZmZzOwogCXBub2RlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHViaWZzX3Bub2RlKSwgR0ZQX05PRlMpOwotCWlmICghcG5vZGUpIHsKLQkJZXJyID0gLUVOT01FTTsKLQkJZ290byBvdXQ7Ci0JfQorCWlmICghcG5vZGUpCisJCXJldHVybiAtRU5PTUVNOworCiAJaWYgKGxudW0gPT0gMCkgewogCQkvKgogCQkgKiBUaGlzIHBub2RlIHdhcyBub3Qgd3JpdHRlbiB3aGljaCBqdXN0IG1lYW5zIHRoYXQgdGhlIExFQgpkaWZmIC0tZ2l0IGEvZnMvdWJpZnMvc3VwZXIuYyBiL2ZzL3ViaWZzL3N1cGVyLmMKaW5kZXggNmRkZDk5Ny4uYzc1ZjYxMyAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvc3VwZXIuYworKysgYi9mcy91Ymlmcy9zdXBlci5jCkBAIC0xNTY4LDYgKzE1NjgsNyBAQAogCW11dGV4X2xvY2soJmMtPnVtb3VudF9tdXRleCk7CiAJZGJnX3NhdmVfc3BhY2VfaW5mbyhjKTsKIAljLT5yZW1vdW50aW5nX3J3ID0gMTsKKwljLT5yb19tb3VudCA9IDA7CiAKIAllcnIgPSBjaGVja19mcmVlX3NwYWNlKGMpOwogCWlmIChlcnIpCkBAIC0xNjc2LDEzICsxNjc3LDEzIEBACiAJfQogCiAJZGJnX2dlbigicmUtbW91bnRlZCByZWFkLXdyaXRlIik7Ci0JYy0+cm9fbW91bnQgPSAwOwogCWMtPnJlbW91bnRpbmdfcncgPSAwOwogCWVyciA9IGRiZ19jaGVja19zcGFjZV9pbmZvKGMpOwogCW11dGV4X3VubG9jaygmYy0+dW1vdW50X211dGV4KTsKIAlyZXR1cm4gZXJyOwogCiBvdXQ6CisJYy0+cm9fbW91bnQgPSAxOwogCXZmcmVlKGMtPm9ycGhfYnVmKTsKIAljLT5vcnBoX2J1ZiA9IE5VTEw7CiAJaWYgKGMtPmJndCkgewpkaWZmIC0tZ2l0IGEvZnMvdWZzL2lub2RlLmMgYi9mcy91ZnMvaW5vZGUuYwppbmRleCAyN2E0YmFiLi5lNzY1NzQzIDEwMDY0NAotLS0gYS9mcy91ZnMvaW5vZGUuYworKysgYi9mcy91ZnMvaW5vZGUuYwpAQCAtNzgsNyArNzgsNyBAQAogCiAvKgogICogUmV0dXJucyB0aGUgbG9jYXRpb24gb2YgdGhlIGZyYWdtZW50IGZyb20KLSAqIHRoZSBiZWdpbmluZyBvZiB0aGUgZmlsZXN5c3RlbS4KKyAqIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVzeXN0ZW0uCiAgKi8KIAogc3RhdGljIHU2NCB1ZnNfZnJhZ19tYXAoc3RydWN0IGlub2RlICppbm9kZSwgc2VjdG9yX3QgZnJhZywgYm9vbCBuZWVkc19sb2NrKQpkaWZmIC0tZ2l0IGEvZnMvdWZzL3N1cGVyLmMgYi9mcy91ZnMvc3VwZXIuYwppbmRleCA3NjkzZDYyLi4zOTE1YWRlIDEwMDY0NAotLS0gYS9mcy91ZnMvc3VwZXIuYworKysgYi9mcy91ZnMvc3VwZXIuYwpAQCAtNDgzLDkgKzQ4Myw5IEBACiB9CiAKIC8qCi0gKiBEaWZmcmVudCB0eXBlcyBvZiBVRlMgaG9sZCBmc19jc3RvdGFsIGluIGRpZmZlcmVudAotICogcGxhY2VzLCBhbmQgdXNlIGRpZmZyZW50IGRhdGEgc3RydWN0dXJlIGZvciBpdC4KLSAqIFRvIG1ha2UgdGhpbmdzIHNpbXBsaWVyIHdlIGp1c3QgY29weSBmc19jc3RvdGFsIHRvIHVmc19zYl9wcml2YXRlX2luZm8KKyAqIERpZmZlcmVudCB0eXBlcyBvZiBVRlMgaG9sZCBmc19jc3RvdGFsIGluIGRpZmZlcmVudAorICogcGxhY2VzLCBhbmQgdXNlIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZSBmb3IgaXQuCisgKiBUbyBtYWtlIHRoaW5ncyBzaW1wbGVyIHdlIGp1c3QgY29weSBmc19jc3RvdGFsIHRvIHVmc19zYl9wcml2YXRlX2luZm8KICAqLwogc3RhdGljIHZvaWQgdWZzX3NldHVwX2NzdG90YWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIHsKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2FvcHMuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2FvcHMuYwppbmRleCA1MmRiZDE0Li43OWNlMzhiIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfYW9wcy5jCkBAIC0xMjk1LDcgKzEyOTUsNyBAQAogICogSWYgdGhlIHByaXZhdGUgYXJndW1lbnQgaXMgbm9uLU5VTEwgX194ZnNfZ2V0X2Jsb2NrcyBzaWduYWxzIHVzIHRoYXQgd2UKICAqIG5lZWQgdG8gaXNzdWUgYSB0cmFuc2FjdGlvbiB0byBjb252ZXJ0IHRoZSByYW5nZSBmcm9tIHVud3JpdHRlbiB0byB3cml0dGVuCiAgKiBleHRlbnRzLiAgSW4gY2FzZSB0aGlzIGlzIHJlZ3VsYXIgc3luY2hyb25vdXMgSS9PIHdlIGp1c3QgY2FsbCB4ZnNfZW5kX2lvCi0gKiB0byBkbyB0aGlzIGFuZCB3ZSBhcmUgZG9uZS4gIEJ1dCBpbiBjYXNlIHRoaXMgd2FzIGEgc3VjY2Vzc2Z1bGwgQUlPCisgKiB0byBkbyB0aGlzIGFuZCB3ZSBhcmUgZG9uZS4gIEJ1dCBpbiBjYXNlIHRoaXMgd2FzIGEgc3VjY2Vzc2Z1bCBBSU8KICAqIHJlcXVlc3QgdGhpcyBoYW5kbGVyIGlzIGNhbGxlZCBmcm9tIGludGVycnVwdCBjb250ZXh0LCBmcm9tIHdoaWNoIHdlCiAgKiBjYW4ndCBzdGFydCB0cmFuc2FjdGlvbnMuICBJbiB0aGF0IGNhc2Ugb2ZmbG9hZCB0aGUgSS9PIGNvbXBsZXRpb24gdG8KICAqIHRoZSB3b3JrcXVldWVzIHdlIGFsc28gdXNlIGZvciBidWZmZXJlZCBJL08gY29tcGxldGlvbi4KZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfYnVmLmMKaW5kZXggNTk2YmIyYy4uNWVhNDAyMCAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfYnVmLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfYnVmLmMKQEAgLTEyMCw3ICsxMjAsNyBAQAogICogVGhlIHVubG9ja2VkIGNoZWNrIGlzIHNhZmUgaGVyZSBiZWNhdXNlIGl0IG9ubHkgb2NjdXJzIHdoZW4gdGhlcmUgYXJlIG5vdAogICogYl9scnVfcmVmIGNvdW50cyBsZWZ0IG9uIHRoZSBpbm9kZSB1bmRlciB0aGUgcGFnLT5wYWdfYnVmX2xvY2suIGl0IGlzIHRoZXJlCiAgKiB0byBvcHRpbWlzZSB0aGUgc2hyaW5rZXIgcmVtb3ZpbmcgdGhlIGJ1ZmZlciBmcm9tIHRoZSBMUlUgYW5kIGNhbGxpbmcKLSAqIHhmc19idWZfZnJlZSgpLiBpLmUuIGl0IHJlbW92ZXMgYW4gdW5uZWNjZXNzYXJ5IHJvdW5kIHRyaXAgb24gdGhlCisgKiB4ZnNfYnVmX2ZyZWUoKS4gaS5lLiBpdCByZW1vdmVzIGFuIHVubmVjZXNzYXJ5IHJvdW5kIHRyaXAgb24gdGhlCiAgKiBidF9scnVfbG9jay4KICAqLwogU1RBVElDIHZvaWQKQEAgLTM4MCw3ICszODAsNyBAQAogfQogCiAvKgotICoJTWFwIGJ1ZmZlciBpbnRvIGtlcm5lbCBhZGRyZXNzLXNwYWNlIGlmIG5lc3NlY2FyeS4KKyAqCU1hcCBidWZmZXIgaW50byBrZXJuZWwgYWRkcmVzcy1zcGFjZSBpZiBuZWNlc3NhcnkuCiAgKi8KIFNUQVRJQyBpbnQKIF94ZnNfYnVmX21hcF9wYWdlcygKZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2ZpbGUuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2ZpbGUuYwppbmRleCA1MmFhZGZiLi5mNDIxM2JhIDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19maWxlLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfZmlsZS5jCkBAIC0zODEsNyArMzgxLDcgQEAKIAogLyoKICAqIElmIHRoaXMgd2FzIGEgZGlyZWN0IG9yIHN5bmNocm9ub3VzIEkvTyB0aGF0IGZhaWxlZCAoc3VjaCBhcyBFTk9TUEMpIHRoZW4KLSAqIHBhcnQgb2YgdGhlIEkvTyBtYXkgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gZGlzayBiZWZvcmUgdGhlIGVycm9yIG9jY3VyZWQuICBJbgorICogcGFydCBvZiB0aGUgSS9PIG1heSBoYXZlIGJlZW4gd3JpdHRlbiB0byBkaXNrIGJlZm9yZSB0aGUgZXJyb3Igb2NjdXJyZWQuICBJbgogICogdGhpcyBjYXNlIHRoZSBvbi1kaXNrIGZpbGUgc2l6ZSBtYXkgaGF2ZSBiZWVuIGFkanVzdGVkIGJleW9uZCB0aGUgaW4tbWVtb3J5CiAgKiBmaWxlIHNpemUgYW5kIG5vdyBuZWVkcyB0byBiZSB0cnVuY2F0ZWQgYmFjay4KICAqLwpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9wcy5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9wcy5jCmluZGV4IDlmZjdmYzYuLmRkMjE3ODQgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvcHMuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19pb3BzLmMKQEAgLTcwLDcgKzcwLDcgQEAKIAogLyoKICAqIElmIHRoZSBsaW51eCBpbm9kZSBpcyB2YWxpZCwgbWFyayBpdCBkaXJ0eS4KLSAqIFVzZWQgd2hlbiBjb21taXRpbmcgYSBkaXJ0eSBpbm9kZSBpbnRvIGEgdHJhbnNhY3Rpb24gc28gdGhhdAorICogVXNlZCB3aGVuIGNvbW1pdHRpbmcgYSBkaXJ0eSBpbm9kZSBpbnRvIGEgdHJhbnNhY3Rpb24gc28gdGhhdAogICogdGhlIGlub2RlIHdpbGwgZ2V0IHdyaXR0ZW4gYmFjayBieSB0aGUgbGludXggY29kZQogICovCiB2b2lkCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19zeW5jLmMgYi9mcy94ZnMvbGludXgtMi42L3hmc19zeW5jLmMKaW5kZXggNTk0Y2Q4Mi4uOWNmMzVhNiAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3luYy5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5bmMuYwpAQCAtNDAxLDcgKzQwMSw3IEBACiAvKgogICogU2Vjb25kIHN0YWdlIG9mIGEgcXVpZXNjZS4gVGhlIGRhdGEgaXMgYWxyZWFkeSBzeW5jZWQsIG5vdyB3ZSBoYXZlIHRvIHRha2UKICAqIGNhcmUgb2YgdGhlIG1ldGFkYXRhLiBOZXcgdHJhbnNhY3Rpb25zIGFyZSBhbHJlYWR5IGJsb2NrZWQsIHNvIHdlIG5lZWQgdG8KLSAqIHdhaXQgZm9yIGFueSByZW1haW5pbmcgdHJhbnNhY3Rpb25zIHRvIGRyYWluIG91dCBiZWZvcmUgcHJvY2VkaW5nLgorICogd2FpdCBmb3IgYW55IHJlbWFpbmluZyB0cmFuc2FjdGlvbnMgdG8gZHJhaW4gb3V0IGJlZm9yZSBwcm9jZWVkaW5nLgogICovCiB2b2lkCiB4ZnNfcXVpZXNjZV9hdHRyKApkaWZmIC0tZ2l0IGEvZnMveGZzL3F1b3RhL3hmc19kcXVvdC5jIGIvZnMveGZzL3F1b3RhL3hmc19kcXVvdC5jCmluZGV4IDdlMjQxNjQuLjZmYTIxNDYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9xdW90YS94ZnNfZHF1b3QuYworKysgYi9mcy94ZnMvcXVvdGEveGZzX2RxdW90LmMKQEAgLTYwMCw3ICs2MDAsNyBAQAogCiAJLyoKIAkgKiBSZXNlcnZhdGlvbiBjb3VudGVycyBhcmUgZGVmaW5lZCBhcyByZXNlcnZhdGlvbiBwbHVzIGN1cnJlbnQgdXNhZ2UKLQkgKiB0byBhdm9pZCBoYXZpbmcgdG8gYWRkIGV2ZXJ5dGltZS4KKwkgKiB0byBhdm9pZCBoYXZpbmcgdG8gYWRkIGV2ZXJ5IHRpbWUuCiAJICovCiAJZHFwLT5xX3Jlc19iY291bnQgPSBiZTY0X3RvX2NwdShkZHFwLT5kX2Jjb3VudCk7CiAJZHFwLT5xX3Jlc19pY291bnQgPSBiZTY0X3RvX2NwdShkZHFwLT5kX2ljb3VudCk7CmRpZmYgLS1naXQgYS9mcy94ZnMvcXVvdGEveGZzX3FtX2Jodi5jIGIvZnMveGZzL3F1b3RhL3hmc19xbV9iaHYuYwppbmRleCA3NzRkN2VjLi5hMGE4MjlhIDEwMDY0NAotLS0gYS9mcy94ZnMvcXVvdGEveGZzX3FtX2Jodi5jCisrKyBiL2ZzL3hmcy9xdW90YS94ZnNfcW1fYmh2LmMKQEAgLTEzNCw3ICsxMzQsNyBAQAogCQkgKi8KIAkJaWYgKHF1b3Rhb25kaXNrICYmICFYRlNfUU1fTkVFRF9RVU9UQUNIRUNLKG1wKSkgewogCQkJLyoKLQkJCSAqIElmIGFuIGVycm9yIG9jY3VyZWQsIHFtX21vdW50X3F1b3RhcyBjb2RlCisJCQkgKiBJZiBhbiBlcnJvciBvY2N1cnJlZCwgcW1fbW91bnRfcXVvdGFzIGNvZGUKIAkJCSAqIGhhcyBhbHJlYWR5IGRpc2FibGVkIHF1b3Rhcy4gU28sIGp1c3QgZmluaXNoCiAJCQkgKiBtb3VudGluZywgYW5kIGdldCBvbiB3aXRoIHRoZSBib3JpbmcgbGlmZQogCQkJICogd2l0aG91dCBkaXNrIHF1b3Rhcy4KZGlmZiAtLWdpdCBhL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3lzY2FsbHMuYyBiL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3lzY2FsbHMuYwppbmRleCBjODJmMDY3Li4wZDYyYTA3IDEwMDY0NAotLS0gYS9mcy94ZnMvcXVvdGEveGZzX3FtX3N5c2NhbGxzLmMKKysrIGIvZnMveGZzL3F1b3RhL3hmc19xbV9zeXNjYWxscy5jCkBAIC0xNzIsNyArMTcyLDcgQEAKIAkvKgogCSAqIE5leHQgd2UgbWFrZSB0aGUgY2hhbmdlcyBpbiB0aGUgcXVvdGEgZmxhZyBpbiB0aGUgbW91bnQgc3RydWN0LgogCSAqIFRoaXMgaXNuJ3QgcHJvdGVjdGVkIGJ5IGEgcGFydGljdWxhciBsb2NrIGRpcmVjdGx5LCBiZWNhdXNlIHdlCi0JICogZG9uJ3Qgd2FudCB0byB0YWtlIGEgbXJsb2NrIGV2ZXJ5dGltZSB3ZSBkZXBlbmQgb24gcXVvdGFzIGJlaW5nIG9uLgorCSAqIGRvbid0IHdhbnQgdG8gdGFrZSBhIG1ybG9jayBldmVyeSB0aW1lIHdlIGRlcGVuZCBvbiBxdW90YXMgYmVpbmcgb24uCiAJICovCiAJbXAtPm1fcWZsYWdzICY9IH4oZmxhZ3MpOwogCkBAIC0zNTQsNyArMzU0LDcgQEAKIAkJcmV0dXJuIFhGU19FUlJPUihFSU5WQUwpOwogCX0KIAkvKgotCSAqIElmIGV2ZXJ5dGhpbmcncyB1cHRvLWRhdGUgaW5jb3JlLCB0aGVuIGRvbid0IHdhc3RlIHRpbWUuCisJICogSWYgZXZlcnl0aGluZydzIHVwIHRvLWRhdGUgaW5jb3JlLCB0aGVuIGRvbid0IHdhc3RlIHRpbWUuCiAJICovCiAJaWYgKChtcC0+bV9xZmxhZ3MgJiBmbGFncykgPT0gZmxhZ3MpCiAJCXJldHVybiBYRlNfRVJST1IoRUVYSVNUKTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmX2l0ZW0uYyBiL2ZzL3hmcy94ZnNfYnVmX2l0ZW0uYwppbmRleCBlNTQxM2Q5Ni4uN2I3ZTAwNSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19idWZfaXRlbS5jCisrKyBiL2ZzL3hmcy94ZnNfYnVmX2l0ZW0uYwpAQCAtOTkyLDcgKzk5Miw3IEBACiAJbGFzdHRhcmcgPSBYRlNfQlVGX1RBUkdFVChicCk7CiAKIAkvKgotCSAqIElmIHRoZSB3cml0ZSB3YXMgYXN5bmNocm9ub3VzIHRoZW4gbm9vbmUgd2lsbCBiZSBsb29raW5nIGZvciB0aGUKKwkgKiBJZiB0aGUgd3JpdGUgd2FzIGFzeW5jaHJvbm91cyB0aGVuIG5vIG9uZSB3aWxsIGJlIGxvb2tpbmcgZm9yIHRoZQogCSAqIGVycm9yLiAgQ2xlYXIgdGhlIGVycm9yIHN0YXRlIGFuZCB3cml0ZSB0aGUgYnVmZmVyIG91dCBhZ2Fpbi4KIAkgKgogCSAqIER1cmluZyBzeW5jIG9yIHVtb3VudCB3ZSdsbCB3cml0ZSBhbGwgcGVuZGluZyBidWZmZXJzIGFnYWluCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lub2RlLmMgYi9mcy94ZnMveGZzX2lub2RlLmMKaW5kZXggNzQyYzgzMy4uYTM3NDgwYSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pbm9kZS5jCisrKyBiL2ZzL3hmcy94ZnNfaW5vZGUuYwpAQCAtMjc4OSw3ICsyNzg5LDcgQEAKIAogCS8qCiAJICogV2UgY2FuJ3QgZmx1c2ggdGhlIGlub2RlIHVudGlsIGl0IGlzIHVucGlubmVkLCBzbyB3YWl0IGZvciBpdCBpZiB3ZQotCSAqIGFyZSBhbGxvd2VkIHRvIGJsb2NrLiAgV2Uga25vdyBub29uZSBuZXcgY2FuIHBpbiBpdCwgYmVjYXVzZSB3ZSBhcmUKKwkgKiBhcmUgYWxsb3dlZCB0byBibG9jay4gIFdlIGtub3cgbm8gb25lIG5ldyBjYW4gcGluIGl0LCBiZWNhdXNlIHdlIGFyZQogCSAqIGhvbGRpbmcgdGhlIGlub2RlIGxvY2sgc2hhcmVkIGFuZCB5b3UgbmVlZCB0byBob2xkIGl0IGV4Y2x1c2l2ZWx5IHRvCiAJICogcGluIHRoZSBpbm9kZS4KIAkgKgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZS5oIGIvZnMveGZzL3hmc19pbm9kZS5oCmluZGV4IGY3NTMyMDAuLmZmNGUyYTMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW5vZGUuaAorKysgYi9mcy94ZnMveGZzX2lub2RlLmgKQEAgLTExMSw3ICsxMTEsNyBAQAogICogR2VuZXJhbGx5LCB3ZSBkbyBub3Qgd2FudCB0byBob2xkIHRoZSBpX3Jsb2NrIHdoaWxlIGhvbGRpbmcgdGhlCiAgKiBpX2lsb2NrLiBIaWVyYXJjaHkgaXMgaV9pb2xvY2sgZm9sbG93ZWQgYnkgaV9ybG9jay4KICAqCi0gKiB4ZnNfaXB0cl90IGNvbnRhaW5zIGFsbCB0aGUgaW5vZGUgZmllbGRzIHVwdG8gYW5kIGluY2x1ZGluZyB0aGUKKyAqIHhmc19pcHRyX3QgY29udGFpbnMgYWxsIHRoZSBpbm9kZSBmaWVsZHMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUKICAqIGlfbW5leHQgYW5kIGlfbXByZXYgZmllbGRzLCBpdCBpcyB1c2VkIGFzIGEgbWFya2VyIGluIHRoZSBpbm9kZQogICogY2hhaW4gb2ZmIHRoZSBtb3VudCBzdHJ1Y3R1cmUgYnkgeGZzX3N5bmMgY2FsbHMuCiAgKi8KQEAgLTMzNiw3ICszMzYsNyBAQAogCiAvKgogICogUHJvamVjdCBxdW90YSBpZCBoZWxwZXJzIChwcmV2aW91c2x5IHByb2ppZCB3YXMgMTZiaXQgb25seQotICogYW5kIHVzaW5nIHR3byAxNmJpdCB2YWx1ZXMgdG8gaG9sZCBuZXcgMzJiaXQgcHJvamlkIHdhcyBjaG9vc2VuCisgKiBhbmQgdXNpbmcgdHdvIDE2Yml0IHZhbHVlcyB0byBob2xkIG5ldyAzMmJpdCBwcm9qaWQgd2FzIGNob3NlbgogICogdG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCAib2xkIiBmaWxlc3lzdGVtcykuCiAgKi8KIHN0YXRpYyBpbmxpbmUgcHJpZF90CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2xvZ19wcml2LmggYi9mcy94ZnMveGZzX2xvZ19wcml2LmgKaW5kZXggMTVkYmYxZi4uZmZhZTY5MiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19sb2dfcHJpdi5oCisrKyBiL2ZzL3hmcy94ZnNfbG9nX3ByaXYuaApAQCAtNTcwLDcgKzU3MCw3IEBACiAgKiBXaGVuIHdlIGNyYWNrIGFuIGF0b21pYyBMU04sIHdlIHNhbXBsZSBpdCBmaXJzdCBzbyB0aGF0IHRoZSB2YWx1ZSB3aWxsIG5vdAogICogY2hhbmdlIHdoaWxlIHdlIGFyZSBjcmFja2luZyBpdCBpbnRvIHRoZSBjb21wb25lbnQgdmFsdWVzLiBUaGlzIG1lYW5zIHdlCiAgKiB3aWxsIGFsd2F5cyBnZXQgY29uc2lzdGVudCBjb21wb25lbnQgdmFsdWVzIHRvIHdvcmsgZnJvbS4gVGhpcyBzaG91bGQgYWx3YXlzCi0gKiBiZSB1c2VkIHRvIHNtYXBsZSBhbmQgY3JhY2sgTFNOcyB0YWh0IGFyZSBzdG9yZWQgYW5kIHVwZGF0ZWQgaW4gYXRvbWljCisgKiBiZSB1c2VkIHRvIHNhbXBsZSBhbmQgY3JhY2sgTFNOcyB0aGF0IGFyZSBzdG9yZWQgYW5kIHVwZGF0ZWQgaW4gYXRvbWljCiAgKiB2YXJpYWJsZXMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19sb2dfcmVjb3Zlci5jIGIvZnMveGZzL3hmc19sb2dfcmVjb3Zlci5jCmluZGV4IDBjNGE1NjEuLjVjYzQ2NGEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfbG9nX3JlY292ZXIuYworKysgYi9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogCS8qCiAJICogV2UgZG8gbG9nIEkvTyBpbiB1bml0cyBvZiBsb2cgc2VjdG9ycyAoYSBwb3dlci1vZi0yCiAJICogbXVsdGlwbGUgb2YgdGhlIGJhc2ljIGJsb2NrIHNpemUpLCBzbyB3ZSByb3VuZCB1cCB0aGUKLQkgKiByZXF1ZXN0ZWQgc2l6ZSB0byBhY29tbW9kYXRlIHRoZSBiYXNpYyBibG9ja3MgcmVxdWlyZWQKKwkgKiByZXF1ZXN0ZWQgc2l6ZSB0byBhY2NvbW1vZGF0ZSB0aGUgYmFzaWMgYmxvY2tzIHJlcXVpcmVkCiAJICogZm9yIGNvbXBsZXRlIGxvZyBzZWN0b3JzLgogCSAqCiAJICogSW4gYWRkaXRpb24sIHRoZSBidWZmZXIgbWF5IGJlIHVzZWQgZm9yIGEgbm9uLXNlY3Rvci0KQEAgLTExMiw3ICsxMTIsNyBAQAogCSAqIGFuIGlzc3VlLiAgTm9yIHdpbGwgdGhpcyBiZSBhIHByb2JsZW0gaWYgdGhlIGxvZyBJL08gaXMKIAkgKiBkb25lIGluIGJhc2ljIGJsb2NrcyAoc2VjdG9yIHNpemUgMSkuICBCdXQgb3RoZXJ3aXNlIHdlCiAJICogZXh0ZW5kIHRoZSBidWZmZXIgYnkgb25lIGV4dHJhIGxvZyBzZWN0b3IgdG8gZW5zdXJlCi0JICogdGhlcmUncyBzcGFjZSB0byBhY2NvbW9kYXRlIHRoaXMgcG9zc2libGlsaXR5LgorCSAqIHRoZXJlJ3Mgc3BhY2UgdG8gYWNjb21tb2RhdGUgdGhpcyBwb3NzaWJpbGl0eS4KIAkgKi8KIAlpZiAobmJibGtzID4gMSAmJiBsb2ctPmxfc2VjdEJCc2l6ZSA+IDEpCiAJCW5iYmxrcyArPSBsb2ctPmxfc2VjdEJCc2l6ZTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnNfaW5vZGUuYyBiL2ZzL3hmcy94ZnNfdHJhbnNfaW5vZGUuYwppbmRleCAxNjA4NGQ4Li4wNDhiMGM2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3RyYW5zX2lub2RlLmMKKysrIGIvZnMveGZzL3hmc190cmFuc19pbm9kZS5jCkBAIC04MSw3ICs4MSw3IEBACiAgKgogICoKICAqIEdyYWJzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbm9kZSB3aGljaCB3aWxsIGJlIGRyb3BwZWQgd2hlbiB0aGUgdHJhbnNhY3Rpb24KLSAqIGlzIGNvbW1pdGVkLiAgVGhlIGlub2RlIHdpbGwgYWxzbyBiZSB1bmxvY2tlZCBhdCB0aGF0IHBvaW50LiAgVGhlIGlub2RlCisgKiBpcyBjb21taXR0ZWQuICBUaGUgaW5vZGUgd2lsbCBhbHNvIGJlIHVubG9ja2VkIGF0IHRoYXQgcG9pbnQuICBUaGUgaW5vZGUKICAqIG11c3QgYmUgbG9ja2VkLCBhbmQgaXQgY2Fubm90IGJlIGFzc29jaWF0ZWQgd2l0aCBhbnkgdHJhbnNhY3Rpb24uCiAgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYyBiL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYwppbmRleCBjNDhiNDIxLi5iN2E1ZmU3IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3Zub2Rlb3BzLmMKKysrIGIvZnMveGZzL3hmc192bm9kZW9wcy5jCkBAIC05NTMsNyArOTUzLDcgQEAKIAkJICogSWYgd2UgcHJldmlvdXNseSB0cnVuY2F0ZWQgdGhpcyBmaWxlIGFuZCByZW1vdmVkIG9sZCBkYXRhCiAJCSAqIGluIHRoZSBwcm9jZXNzLCB3ZSB3YW50IHRvIGluaXRpYXRlICJlYXJseSIgd3JpdGVvdXQgb24KIAkJICogdGhlIGxhc3QgY2xvc2UuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gY29tYmF0IHRoZSBub3RvcmlvdXMKLQkJICogTlVMTCBmaWxlcyBwcm9ibGVtIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBub3RpY2FibGUgZnJvbSBhCisJCSAqIE5VTEwgZmlsZXMgcHJvYmxlbSB3aGljaCBpcyBwYXJ0aWN1bGFybHkgbm90aWNlYWJsZSBmcm9tIGEKIAkJICogdHJ1bmNhdGUgZG93biwgYnVmZmVyZWQgKHJlLSl3cml0ZSAoZGVsYWxsb2MpLCBmb2xsb3dlZCBieQogCQkgKiBhIGNyYXNoLiAgV2hhdCB3ZSBhcmUgZWZmZWN0aXZlbHkgZG9pbmcgaGVyZSBpcwogCQkgKiBzaWduaWZpY2FudGx5IHJlZHVjaW5nIHRoZSB0aW1lIHdpbmRvdyB3aGVyZSB3ZSdkIG90aGVyd2lzZQpAQCAtOTgyLDcgKzk4Miw3IEBACiAJCSAqCiAJCSAqIEZ1cnRoZXIsIGNoZWNrIGlmIHRoZSBpbm9kZSBpcyBiZWluZyBvcGVuZWQsIHdyaXR0ZW4gYW5kCiAJCSAqIGNsb3NlZCBmcmVxdWVudGx5IGFuZCB3ZSBoYXZlIGRlbGF5ZWQgYWxsb2NhdGlvbiBibG9ja3MKLQkJICogb3VzdGFuZGluZyAoZS5nLiBzdHJlYW1pbmcgd3JpdGVzIGZyb20gdGhlIE5GUyBzZXJ2ZXIpLAorCQkgKiBvdXRzdGFuZGluZyAoZS5nLiBzdHJlYW1pbmcgd3JpdGVzIGZyb20gdGhlIE5GUyBzZXJ2ZXIpLAogCQkgKiB0cnVuY2F0aW5nIHRoZSBibG9ja3MgcGFzdCBFT0Ygd2lsbCBjYXVzZSBmcmFnbWVudGF0aW9uIHRvCiAJCSAqIG9jY3VyLgogCQkgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjdGJsLmggYi9pbmNsdWRlL2FjcGkvYWN0YmwuaAppbmRleCBkNDFjOTQ4Li5mMTM4MDI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWN0YmwuaAorKysgYi9pbmNsdWRlL2FjcGkvYWN0YmwuaApAQCAtMjkwLDcgKzI5MCw3IEBACiAjZGVmaW5lIEFDUElfRkFEVF9BUElDX0NMVVNURVIgICAgICAoMTw8MTgpCS8qIDE4OiBbVjRdIEFsbCBsb2NhbCBBUElDcyBtdXN0IHVzZSBjbHVzdGVyIG1vZGVsIChBQ1BJIDMuMCkgKi8KICNkZWZpbmUgQUNQSV9GQURUX0FQSUNfUEhZU0lDQUwgICAgICgxPDwxOSkJLyogMTk6IFtWNF0gQWxsIGxvY2FsIHhfYVBJQ3MgbXVzdCB1c2UgcGh5c2ljYWwgZGVzdCBtb2RlIChBQ1BJIDMuMCkgKi8KIAotLyogVmFsdWVzIGZvciBwcmVmZXJyZWRfcHJvZmlsZSAoUHJlZmVyZWQgUG93ZXIgTWFuYWdlbWVudCBQcm9maWxlcykgKi8KKy8qIFZhbHVlcyBmb3IgcHJlZmVycmVkX3Byb2ZpbGUgKFByZWZlcnJlZCBQb3dlciBNYW5hZ2VtZW50IFByb2ZpbGVzKSAqLwogCiBlbnVtIGFjcGlfcHJlZmVyZWRfcG1fcHJvZmlsZXMgewogCVBNX1VOU1BFQ0lGSUVEID0gMCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgKaW5kZXggOTQyZDMwYi4uMGRkNGU4NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgKQEAgLTE5Miw3ICsxOTIsNyBAQAogICogU0lHQlVTIHNpX2NvZGVzCiAgKi8KICNkZWZpbmUgQlVTX0FEUkFMTgkoX19TSV9GQVVMVHwxKQkvKiBpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50ICovCi0jZGVmaW5lIEJVU19BRFJFUlIJKF9fU0lfRkFVTFR8MikJLyogbm9uLWV4aXN0YW50IHBoeXNpY2FsIGFkZHJlc3MgKi8KKyNkZWZpbmUgQlVTX0FEUkVSUgkoX19TSV9GQVVMVHwyKQkvKiBub24tZXhpc3RlbnQgcGh5c2ljYWwgYWRkcmVzcyAqLwogI2RlZmluZSBCVVNfT0JKRVJSCShfX1NJX0ZBVUxUfDMpCS8qIG9iamVjdCBzcGVjaWZpYyBoYXJkd2FyZSBlcnJvciAqLwogLyogaGFyZHdhcmUgbWVtb3J5IGVycm9yIGNvbnN1bWVkIG9uIGEgbWFjaGluZSBjaGVjazogYWN0aW9uIHJlcXVpcmVkICovCiAjZGVmaW5lIEJVU19NQ0VFUlJfQVIJKF9fU0lfRkFVTFR8NCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaAppbmRleCAzMmM0NWU1Li5iZDI5N2EyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC03NzMsNyArNzczLDcgQEAKICAqIHRoZSBzZWN0aW9ucyB0aGF0IGhhcyB0aGlzIHJlc3RyaWN0aW9uIChvciBzaW1pbGFyKQogICogaXMgbG9jYXRlZCBiZWZvcmUgdGhlIG9uZXMgcmVxdWlyaW5nIFBBR0VfU0laRSBhbGlnbm1lbnQuCiAgKiBOT1NBVkVfREFUQSBzdGFydHMgYW5kIGVuZHMgd2l0aCBhIFBBR0VfU0laRSBhbGlnbm1lbnQgd2hpY2gKLSAqIG1hdGNoZXMgdGhlIHJlcXVpcm1lbnQgb2YgUEFHRV9BTElHTkVEX0RBVEEuCisgKiBtYXRjaGVzIHRoZSByZXF1aXJlbWVudCBvZiBQQUdFX0FMSUdORURfREFUQS4KICAqCiAgKiB1c2UgMCBhcyBwYWdlX2FsaWduIGlmIHBhZ2VfYWxpZ25lZCBkYXRhIGlzIG5vdCB1c2VkICovCiAjZGVmaW5lIFJXX0RBVEFfU0VDVElPTihjYWNoZWxpbmUsIHBhZ2VhbGlnbmVkLCBpbml0dGFzaykJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCBhZDU3NzBmLi4yMDI0MjRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC05NSw3ICs5NSw3IEBACiAgKiBkcm1fY29yZSwgZHJtX2RyaXZlciwgZHJtX2ttcwogICogZHJtX2NvcmUgbGV2ZWwgY2FuIGJlIHVzZWQgaW4gdGhlIGdlbmVyaWMgZHJtIGNvZGUuIEZvciBleGFtcGxlOgogICogCWRybV9pb2N0bCwgZHJtX21tLCBkcm1fbWVtb3J5Ci0gKiBUaGUgbWFjcm8gZGVmaW5pdG9uIG9mIERSTV9ERUJVRyBpcyB1c2VkLgorICogVGhlIG1hY3JvIGRlZmluaXRpb24gb2YgRFJNX0RFQlVHIGlzIHVzZWQuCiAgKiAJRFJNX0RFQlVHKGZtdCwgYXJncy4uLikKICAqIAlUaGUgZGVidWcgaW5mbyBieSB1c2luZyB0aGUgRFJNX0RFQlVHIGNhbiBiZSBvYnRhaW5lZCBieSBhZGRpbmcKICAqIAl0aGUgYm9vdCBvcHRpb24gb2YgImRybS5kZWJ1Zz0xIi4KQEAgLTgwOCw3ICs4MDgsNyBAQAogCSAqCiAJICogXHJldHVybiBGbGFncywgb3InZWQgdG9nZXRoZXIgYXMgZm9sbG93czoKIAkgKgotCSAqIERSTV9TQ0FOT1VUUE9TX1ZBTElEID0gUXVlcnkgc3VjY2Vzc2Z1bGwuCisJICogRFJNX1NDQU5PVVRQT1NfVkFMSUQgPSBRdWVyeSBzdWNjZXNzZnVsLgogCSAqIERSTV9TQ0FOT1VUUE9TX0lOVkJMID0gSW5zaWRlIHZibGFuay4KIAkgKiBEUk1fU0NBTk9VVFBPU19BQ0NVUkFURSA9IFJldHVybmVkIHBvc2l0aW9uIGlzIGFjY3VyYXRlLiBBIGxhY2sgb2YKIAkgKiB0aGlzIGZsYWcgbWVhbnMgdGhhdCByZXR1cm5lZCBwb3NpdGlvbiBtYXkgYmUgb2Zmc2V0IGJ5IGEgY29uc3RhbnQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmluZGV4IGFhZWMwOTcuLmQ5NDY4NGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaApAQCAtNjUsNyArNjUsNyBAQAogICAgIE1PREVfSF9JTExFR0FMLAkvKiBtb2RlIGhhcyBpbGxlZ2FsIGhvcml6b250YWwgdGltaW5ncyAqLwogICAgIE1PREVfVl9JTExFR0FMLAkvKiBtb2RlIGhhcyBpbGxlZ2FsIGhvcml6b250YWwgdGltaW5ncyAqLwogICAgIE1PREVfQkFEX1dJRFRILAkvKiByZXF1aXJlcyBhbiB1bnN1cHBvcnRlZCBsaW5lcGl0Y2ggKi8KLSAgICBNT0RFX05PTU9ERSwJLyogbm8gbW9kZSB3aXRoIGEgbWFjaGluZyBuYW1lICovCisgICAgTU9ERV9OT01PREUsCS8qIG5vIG1vZGUgd2l0aCBhIG1hdGNoaW5nIG5hbWUgKi8KICAgICBNT0RFX05PX0lOVEVSTEFDRSwJLyogaW50ZXJsYWNlZCBtb2RlIG5vdCBzdXBwb3J0ZWQgKi8KICAgICBNT0RFX05PX0RCTEVTQ0FOLAkvKiBkb3VibGVzY2FuIG1vZGUgbm90IHN1cHBvcnRlZCAqLwogICAgIE1PREVfTk9fVlNDQU4sCS8qIG11bHRpc2NhbiBtb2RlIG5vdCBzdXBwb3J0ZWQgKi8KQEAgLTMyMSw3ICszMjEsNyBAQAogCiAJLyoKIAkgKiBGbGlwIHRvIHRoZSBnaXZlbiBmcmFtZWJ1ZmZlci4gIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFnZQotCSAqIGZsaXAgaW9jdGwgZGVzY2liZWQgaW4gZHJtX21vZGUuaCwgc3BlY2lmaWNhbGx5LCB0aGUKKwkgKiBmbGlwIGlvY3RsIGRlc2NyaWJlZCBpbiBkcm1fbW9kZS5oLCBzcGVjaWZpY2FsbHksIHRoZQogCSAqIGltcGxlbWVudGF0aW9uIG11c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGFuZCBibG9jayBhbGwKIAkgKiByZW5kZXJpbmcgdG8gdGhlIGN1cnJlbnQgZmIgdW50aWwgdGhlIGZsaXAgaGFzIGNvbXBsZXRlZC4KIAkgKiBJZiB1c2Vyc3BhY2Ugc2V0IHRoZSBldmVudCBmbGFnIGluIHRoZSBpb2N0bCwgdGhlIGV2ZW50CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW0uaCBiL2luY2x1ZGUvZHJtL2RybV9tbS5oCmluZGV4IGIxZTc4MDkuLmMyZjkzYTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9tbS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9tbS5oCkBAIC01Niw3ICs1Niw3IEBACiB9OwogCiBzdHJ1Y3QgZHJtX21tIHsKLQkvKiBMaXN0IG9mIGFsbCBtZW1vcnkgbm9kZXMgdGhhdCBpbW1lZGlhdGx5IHByZWNlZWQgYSBmcmVlIGhvbGUuICovCisJLyogTGlzdCBvZiBhbGwgbWVtb3J5IG5vZGVzIHRoYXQgaW1tZWRpYXRlbHkgcHJlY2VkZSBhIGZyZWUgaG9sZS4gKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGhvbGVfc3RhY2s7CiAJLyogaGVhZF9ub2RlLm5vZGVfbGlzdCBpcyB0aGUgbGlzdCBvZiBhbGwgbWVtb3J5IG5vZGVzLCBvcmRlcmVkCiAJICogYWNjb3JkaW5nIHRvIHRoZSAoaW5jcmVhc2luZykgc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IG5vZGUuICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW9kZS5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGUuaAppbmRleCBhZTZiN2EzLi5jNDk2MWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQAogI2RlZmluZSBEUk1fTU9ERV9DVVJTT1JfTU9WRQkoMTw8MSkKIAogLyoKLSAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgaW4gZmxhZ3MgZGlmZnJlbnQgbWVtYmVycyBhcmUgdXNlZC4KKyAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgaW4gZmxhZ3MgZGlmZmVyZW50IG1lbWJlcnMgYXJlIHVzZWQuCiAgKgogICogQ1VSU09SX0JPIHVzZXMKICAqICAgIGNydGMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL21nYV9kcm0uaCBiL2luY2x1ZGUvZHJtL21nYV9kcm0uaAppbmRleCBjMTYwOTdmLi5mY2E4MTcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9tZ2FfZHJtLmgKKysrIGIvaW5jbHVkZS9kcm0vbWdhX2RybS5oCkBAIC0xMDcsNyArMTA3LDcgQEAKICAqLwogI2RlZmluZSBNR0FfTlJfU0FSRUFfQ0xJUFJFQ1RTCTgKIAotLyogMiBoZWFwcyAoMSBmb3IgY2FyZCwgMSBmb3IgYWdwKSwgZWFjaCBkaXZpZGVkIGludG8gdXB0byAxMjgKKy8qIDIgaGVhcHMgKDEgZm9yIGNhcmQsIDEgZm9yIGFncCksIGVhY2ggZGl2aWRlZCBpbnRvIHVwIHRvIDEyOAogICogcmVnaW9ucywgc3ViamVjdCB0byBhIG1pbmltdW0gcmVnaW9uIHNpemUgb2YgKDE8PDE2KSA9PSA2NGsuCiAgKgogICogQ2xpZW50cyBtYXkgc3ViZGl2aWRlIHJlZ2lvbnMgaW50ZXJuYWxseSwgYnV0IHdoZW4gc2hhcmluZyBiZXR3ZWVuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9yYWRlb25fZHJtLmggYi9pbmNsdWRlL2RybS9yYWRlb25fZHJtLmgKaW5kZXggM2RlYzQxYy4uM2JjZTFhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vcmFkZW9uX2RybS5oCisrKyBiL2luY2x1ZGUvZHJtL3JhZGVvbl9kcm0uaApAQCAtNjQxLDcgKzY0MSw3IEBACiB9IGRybV9yYWRlb25fdmVydGV4Ml90OwogCiAvKiB2MS4zIC0gb2Jzb2xldGVzIGRybV9yYWRlb25fdmVydGV4MgotICogICAgICAtIGFsbG93cyBhcmJpdGFyaWx5IGxhcmdlIGNsaXByZWN0IGxpc3QKKyAqICAgICAgLSBhbGxvd3MgYXJiaXRyYXJpbHkgbGFyZ2UgY2xpcHJlY3QgbGlzdAogICogICAgICAtIGFsbG93cyB1cGRhdGluZyBvZiB0Y2wgcGFja2V0LCB2ZWN0b3IgYW5kIHNjYWxhciBzdGF0ZQogICogICAgICAtIGFsbG93cyBtZW1vcnktZWZmaWNpZW50IGRlc2NyaXB0aW9uIG9mIHN0YXRlIHVwZGF0ZXMKICAqICAgICAgLSBhbGxvd3Mgc3RhdGUgdG8gYmUgZW1pdHRlZCB3aXRob3V0IGEgcHJpbWl0aXZlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9zYXZhZ2VfZHJtLmggYi9pbmNsdWRlL2RybS9zYXZhZ2VfZHJtLmgKaW5kZXggNDg2M2NmNi4uODE4ZDQ5YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vc2F2YWdlX2RybS5oCisrKyBiL2luY2x1ZGUvZHJtL3NhdmFnZV9kcm0uaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBfX1NBVkFHRV9TQVJFQV9ERUZJTkVTX18KICNkZWZpbmUgX19TQVZBR0VfU0FSRUFfREVGSU5FU19fCiAKLS8qIDIgaGVhcHMgKDEgZm9yIGNhcmQsIDEgZm9yIGFncCksIGVhY2ggZGl2aWRlZCBpbnRvIHVwdG8gMTI4CisvKiAyIGhlYXBzICgxIGZvciBjYXJkLCAxIGZvciBhZ3ApLCBlYWNoIGRpdmlkZWQgaW50byB1cCB0byAxMjgKICAqIHJlZ2lvbnMsIHN1YmplY3QgdG8gYSBtaW5pbXVtIHJlZ2lvbiBzaXplIG9mICgxPDwxNikgPT0gNjRrLgogICoKICAqIENsaWVudHMgbWF5IHN1YmRpdmlkZSByZWdpb25zIGludGVybmFsbHksIGJ1dCB3aGVuIHNoYXJpbmcgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgKaW5kZXggYTZiZDExNy4uNjJhMGU0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaAorKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oCkBAIC01MCwxMCArNTAsMTAgQEAKICAqCiAgKiBAZnBmbjoJCWZpcnN0IHZhbGlkIHBhZ2UgZnJhbWUgbnVtYmVyIHRvIHB1dCB0aGUgb2JqZWN0CiAgKiBAbHBmbjoJCWxhc3QgdmFsaWQgcGFnZSBmcmFtZSBudW1iZXIgdG8gcHV0IHRoZSBvYmplY3QKLSAqIEBudW1fcGxhY2VtZW50OgludW1iZXIgb2YgcHJlZmVyZWQgcGxhY2VtZW50cwotICogQHBsYWNlbWVudDoJCXByZWZlcmVkIHBsYWNlbWVudHMKLSAqIEBudW1fYnVzeV9wbGFjZW1lbnQ6CW51bWJlciBvZiBwcmVmZXJlZCBwbGFjZW1lbnRzIHdoZW4gbmVlZCB0byBldmljdCBidWZmZXIKLSAqIEBidXN5X3BsYWNlbWVudDoJcHJlZmVyZWQgcGxhY2VtZW50cyB3aGVuIG5lZWQgdG8gZXZpY3QgYnVmZmVyCisgKiBAbnVtX3BsYWNlbWVudDoJbnVtYmVyIG9mIHByZWZlcnJlZCBwbGFjZW1lbnRzCisgKiBAcGxhY2VtZW50OgkJcHJlZmVycmVkIHBsYWNlbWVudHMKKyAqIEBudW1fYnVzeV9wbGFjZW1lbnQ6CW51bWJlciBvZiBwcmVmZXJyZWQgcGxhY2VtZW50cyB3aGVuIG5lZWQgdG8gZXZpY3QgYnVmZmVyCisgKiBAYnVzeV9wbGFjZW1lbnQ6CXByZWZlcnJlZCBwbGFjZW1lbnRzIHdoZW4gbmVlZCB0byBldmljdCBidWZmZXIKICAqCiAgKiBTdHJ1Y3R1cmUgaW5kaWNhdGluZyB0aGUgcGxhY2VtZW50IHlvdSByZXF1ZXN0IGZvciBhbiBvYmplY3QuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmggYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oCmluZGV4IDk2MGI1MjEuLjA5YWYyZDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmgKKysrIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaApAQCAtMjIzLDkgKzIyMyw5IEBACiAJICogQG1lbTo6bW1fbm9kZSBzaG91bGQgYmUgc2V0IHRvIGEgbm9uLW51bGwgdmFsdWUsIGFuZAogCSAqIEBtZW06OnN0YXJ0IHNob3VsZCBiZSBzZXQgdG8gYSB2YWx1ZSBpZGVudGlmeWluZyB0aGUgYmVnaW5uaW5nCiAJICogb2YgdGhlIHJhbmdlIGFsbG9jYXRlZCwgYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHplcm8uCi0JICogSWYgdGhlIG1lbW9yeSByZWdpb24gYWNjb21vZGF0ZSB0aGUgYnVmZmVyIG9iamVjdCwgQG1lbTo6bW1fbm9kZQorCSAqIElmIHRoZSBtZW1vcnkgcmVnaW9uIGFjY29tbW9kYXRlIHRoZSBidWZmZXIgb2JqZWN0LCBAbWVtOjptbV9ub2RlCiAJICogc2hvdWxkIGJlIHNldCB0byBOVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMC4KLQkgKiBJZiBhIHN5c3RlbSBlcnJvciBvY2N1cmVkLCBwcmV2ZW50aW5nIHRoZSByZXF1ZXN0IHRvIGJlIGZ1bGZpbGxlZCwKKwkgKiBJZiBhIHN5c3RlbSBlcnJvciBvY2N1cnJlZCwgcHJldmVudGluZyB0aGUgcmVxdWVzdCB0byBiZSBmdWxmaWxsZWQsCiAJICogdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgogCSAqCiAJICogTm90ZSB0aGF0IEBtZW06Om1tX25vZGUgd2lsbCBvbmx5IGJlIGRlcmVmZXJlbmNlZCBieQpAQCAtODQxLDcgKzg0MSw3IEBACiAgKiBkaWZmZXJlbnQgb3JkZXIsIGVpdGhlciBieSB3aWxsIG9yIGFzIGEgcmVzdWx0IG9mIGEgYnVmZmVyIGJlaW5nIGV2aWN0ZWQKICAqIHRvIG1ha2Ugcm9vbSBmb3IgYSBidWZmZXIgYWxyZWFkeSByZXNlcnZlZC4gKEJ1ZmZlcnMgYXJlIHJlc2VydmVkIGJlZm9yZQogICogdGhleSBhcmUgZXZpY3RlZCkuIFRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtIHByZXZlbnRzIHN1Y2ggZGVhZGxvY2tzIGZyb20KLSAqIG9jY3VyaW5nOgorICogb2NjdXJyaW5nOgogICogMSkgQnVmZmVycyBhcmUgcmVzZXJ2ZWQgd2l0aCB0aGUgbHJ1IHNwaW5sb2NrIGhlbGQuIFVwb24gc3VjY2Vzc2Z1bAogICogcmVzZXJ2YXRpb24gdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBscnUgbGlzdC4gVGhpcyBzdG9wcyBhIHJlc2VydmVkIGJ1ZmZlcgogICogZnJvbSBiZWluZyBldmljdGVkLiBIb3dldmVyIHRoZSBscnUgc3BpbmxvY2sgaXMgcmVsZWFzZWQgYmV0d2VlbiB0aGUgdGltZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdm13Z2Z4X2RybS5oIGIvaW5jbHVkZS9kcm0vdm13Z2Z4X2RybS5oCmluZGV4IDY1MGU2YmYuLjVjMzY0MzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3Ztd2dmeF9kcm0uaAorKysgYi9pbmNsdWRlL2RybS92bXdnZnhfZHJtLmgKQEAgLTU5Miw3ICs1OTIsNyBAQAogLyoqCiAgKiBEUk1fVk1XX1VQREFURV9MQVlPVVQgLSBVcGRhdGUgbGF5b3V0CiAgKgotICogVXBkYXRlcyB0aGUgcHJlZmVyZWQgbW9kZXMgYW5kIGNvbm5lY3Rpb24gc3RhdHVzIGZvciBjb25uZWN0b3JzLiBUaGUKKyAqIFVwZGF0ZXMgdGhlIHByZWZlcnJlZCBtb2RlcyBhbmQgY29ubmVjdGlvbiBzdGF0dXMgZm9yIGNvbm5lY3RvcnMuIFRoZQogICogY29tbWFuZCBjb25pc2l0cyBvZiBvbmUgZHJtX3Ztd191cGRhdGVfbGF5b3V0X2FyZyBwb2ludGluZyBvdXQgYSBhcnJheQogICogb2YgbnVtX291dHB1dHMgZHJtX3Ztd19yZWN0J3MuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1iYS9jbGNkLmggYi9pbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC5oCmluZGV4IDI0ZDI2ZWYuLmU4MmUzZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYW1iYS9jbGNkLmgKKysrIGIvaW5jbHVkZS9saW51eC9hbWJhL2NsY2QuaApAQCAtMTM2LDcgKzEzNiw3IEBACiAJaW50CSgqY2hlY2spKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpOwogCiAJLyoKLQkgKiBDb21wdWxzYXJ5LiAgRGVjb2RlIGZiLT5mYi52YXIgaW50byByZWdzLT4qLiAgSW4gdGhlIGNhc2Ugb2YKKwkgKiBDb21wdWxzb3J5LiAgRGVjb2RlIGZiLT5mYi52YXIgaW50byByZWdzLT4qLiAgSW4gdGhlIGNhc2Ugb2YKIAkgKiBmaXhlZCB0aW1pbmcsIHNldCByZWdzLT4qIHRvIHRoZSByZWdpc3RlciB2YWx1ZXMgcmVxdWlyZWQuCiAJICovCiAJdm9pZAkoKmRlY29kZSkoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgY2xjZF9yZWdzICpyZWdzKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1iYS9tbWNpLmggYi9pbmNsdWRlL2xpbnV4L2FtYmEvbW1jaS5oCmluZGV4IGY2MDIyNzAuLjIxMTE0ODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYW1iYS9tbWNpLmgKKysrIGIvaW5jbHVkZS9saW51eC9hbWJhL21tY2kuaApAQCAtMzAsMTUgKzMwLDE1IEBACiAgKiBAY2RfaW52ZXJ0OiB0cnVlIGlmIHRoZSBncGlvX2NkIHBpbiB2YWx1ZSBpcyBhY3RpdmUgbG93CiAgKiBAY2FwYWJpbGl0aWVzOiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBibG9jayBhcyBpbXBsZW1lbnRlZCBpbgogICogdGhpcyBwbGF0Zm9ybSwgc2lnbmlmeSBhbnl0aGluZyBNTUNfQ0FQXyogZnJvbSBtbWMvaG9zdC5oCi0gKiBAZG1hX2ZpbHRlcjogZnVuY3Rpb24gdXNlZCB0byBzZWxlY3QgYW4gYXByb3ByaWF0ZSBSWCBhbmQgVFgKKyAqIEBkbWFfZmlsdGVyOiBmdW5jdGlvbiB1c2VkIHRvIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBSWCBhbmQgVFgKICAqIERNQSBjaGFubmVsIHRvIGJlIHVzZWQgZm9yIERNQSwgaWYgYW5kIG9ubHkgaWYgeW91J3JlIGRlcGxveWluZyB0aGUKICAqIGdlbmVyaWMgRE1BIGVuZ2luZQogICogQGRtYV9yeF9wYXJhbTogcGFyYW1ldGVyIHBhc3NlZCB0byB0aGUgRE1BIGFsbG9jYXRpb24KLSAqIGZpbHRlciBpbiBvcmRlciB0byBzZWxlY3QgYW4gYXByb3ByaWF0ZSBSWCBjaGFubmVsLiBJZgorICogZmlsdGVyIGluIG9yZGVyIHRvIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBSWCBjaGFubmVsLiBJZgogICogdGhlcmUgaXMgYSBiaWRpcmVjdGlvbmFsIFJYK1RYIGNoYW5uZWwsIHRoZW4ganVzdCBzcGVjaWZ5CiAgKiB0aGlzIGFuZCBsZWF2ZSBkbWFfdHhfcGFyYW0gc2V0IHRvIE5VTEwKICAqIEBkbWFfdHhfcGFyYW06IHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlIERNQSBhbGxvY2F0aW9uCi0gKiBmaWx0ZXIgaW4gb3JkZXIgdG8gc2VsZWN0IGFuIGFwcm9wcmlhdGUgVFggY2hhbm5lbC4gSWYgdGhpcworICogZmlsdGVyIGluIG9yZGVyIHRvIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBUWCBjaGFubmVsLiBJZiB0aGlzCiAgKiBpcyBOVUxMIHRoZSBkcml2ZXIgd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGUgUlggY2hhbm5lbCBhcyBhCiAgKiBiaWRpcmVjdGlvbmFsIGNoYW5uZWwKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jYW4vZXJyb3IuaCBiL2luY2x1ZGUvbGludXgvY2FuL2Vycm9yLmgKaW5kZXggZDQxMjdmZC4uNTk1ODA3NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jYW4vZXJyb3IuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nhbi9lcnJvci5oCkBAIC01MSw3ICs1MSw3IEBACiAjZGVmaW5lIENBTl9FUlJfUFJPVF9CSVQxICAgICAgICAweDEwIC8qIHVuYWJsZSB0byBzZW5kIHJlY2Vzc2l2ZSBiaXQgKi8KICNkZWZpbmUgQ0FOX0VSUl9QUk9UX09WRVJMT0FEICAgIDB4MjAgLyogYnVzIG92ZXJsb2FkICovCiAjZGVmaW5lIENBTl9FUlJfUFJPVF9BQ1RJVkUgICAgICAweDQwIC8qIGFjdGl2ZSBlcnJvciBhbm5vdW5jZW1lbnQgKi8KLSNkZWZpbmUgQ0FOX0VSUl9QUk9UX1RYICAgICAgICAgIDB4ODAgLyogZXJyb3Igb2NjdXJlZCBvbiB0cmFuc21pc3Npb24gKi8KKyNkZWZpbmUgQ0FOX0VSUl9QUk9UX1RYICAgICAgICAgIDB4ODAgLyogZXJyb3Igb2NjdXJyZWQgb24gdHJhbnNtaXNzaW9uICovCiAKIC8qIGVycm9yIGluIENBTiBwcm90b2NvbCAobG9jYXRpb24pIC8gZGF0YVszXSAqLwogI2RlZmluZSBDQU5fRVJSX1BST1RfTE9DX1VOU1BFQyAgMHgwMCAvKiB1bnNwZWNpZmllZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jYW4vbmV0bGluay5oIGIvaW5jbHVkZS9saW51eC9jYW4vbmV0bGluay5oCmluZGV4IDMyNTBkZTkuLjM0NTQyZDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY2FuL25ldGxpbmsuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nhbi9uZXRsaW5rLmgKQEAgLTE3LDcgKzE3LDcgQEAKIC8qCiAgKiBDQU4gYml0LXRpbWluZyBwYXJhbWV0ZXJzCiAgKgotICogRm9yIGZ1dGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlYWQgY2hhcHRlciAiOCBCSVQgVElNSU5HCisgKiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlYWQgY2hhcHRlciAiOCBCSVQgVElNSU5HCiAgKiBSRVFVSVJFTUVOVFMiIG9mIHRoZSAiQm9zY2ggQ0FOIFNwZWNpZmljYXRpb24gdmVyc2lvbiAyLjAiCiAgKiBhdCBodHRwOi8vd3d3LnNlbWljb25kdWN0b3JzLmJvc2NoLmRlL3BkZi9jYW4yc3BlYy5wZGYuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2FuL3BsYXRmb3JtL21jcDI1MXguaCBiL2luY2x1ZGUvbGludXgvY2FuL3BsYXRmb3JtL21jcDI1MXguaAppbmRleCA4ZTIwNTQwLi4wODlmZTQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nhbi9wbGF0Zm9ybS9tY3AyNTF4LmgKKysrIGIvaW5jbHVkZS9saW51eC9jYW4vcGxhdGZvcm0vbWNwMjUxeC5oCkBAIC0xMiw2ICsxMiw3IEBACiAvKioKICAqIHN0cnVjdCBtY3AyNTF4X3BsYXRmb3JtX2RhdGEgLSBNQ1AyNTFYIFNQSSBDQU4gY29udHJvbGxlciBwbGF0Zm9ybSBkYXRhCiAgKiBAb3NjaWxsYXRvcl9mcmVxdWVuY3k6ICAgICAgIC0gb3NjaWxsYXRvciBmcmVxdWVuY3kgaW4gSHoKKyAqIEBpcnFfZmxhZ3M6ICAgICAgICAgICAgICAgICAgLSBJUlFGIGNvbmZpZ3VyYXRpb24gZmxhZ3MKICAqIEBib2FyZF9zcGVjaWZpY19zZXR1cDogICAgICAgLSBjYWxsZWQgYmVmb3JlIHByb2JpbmcgdGhlIGNoaXAgKHBvd2VyLHJlc2V0KQogICogQHRyYW5zY2VpdmVyX2VuYWJsZTogICAgICAgICAtIGNhbGxlZCB0byBwb3dlciBvbi9vZmYgdGhlIHRyYW5zY2VpdmVyCiAgKiBAcG93ZXJfZW5hYmxlOiAgICAgICAgICAgICAgIC0gY2FsbGVkIHRvIHBvd2VyIG9uL29mZiB0aGUgbWNwICphbmQqIHRoZQpAQCAtMjQsNiArMjUsNyBAQAogCiBzdHJ1Y3QgbWNwMjUxeF9wbGF0Zm9ybV9kYXRhIHsKIAl1bnNpZ25lZCBsb25nIG9zY2lsbGF0b3JfZnJlcXVlbmN5OworCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwogCWludCAoKmJvYXJkX3NwZWNpZmljX3NldHVwKShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKTsKIAlpbnQgKCp0cmFuc2NlaXZlcl9lbmFibGUpKGludCBlbmFibGUpOwogCWludCAoKnBvd2VyX2VuYWJsZSkgKGludCBlbmFibGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZGsuaCBiL2luY2x1ZGUvbGludXgvY2RrLmgKaW5kZXggMDkwOGRhZi4uODAwOTNhOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZGsuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nkay5oCkBAIC0xNDksNyArMTQ5LDcgQEAKIC8qCiAgKglEZWZpbmUgdGhlIG1lbW9yeSBtYXBwaW5nIHN0cnVjdHVyZS4gVGhpcyBzdHJ1Y3R1cmUgaXMgcG9pbnRlZCB0byBieQogICoJdGhlIG1lbXAgZmllbGQgaW4gdGhlIHN0bGNka2hkciBzdHJ1Y3QuIEFzIG1hbnkgYXMgdGhlc2Ugc3RydWN0dXJlcwotICoJYXMgcmVxdWlyZWQgYXJlIGxheWVkIG91dCBpbiBzaGFyZWQgbWVtb3J5IHRvIGRlZmluZSBob3cgdGhlIHJlc3Qgb2YKKyAqCWFzIHJlcXVpcmVkIGFyZSBsYWlkIG91dCBpbiBzaGFyZWQgbWVtb3J5IHRvIGRlZmluZSBob3cgdGhlIHJlc3Qgb2YKICAqCXNoYXJlZCBtZW1vcnkgaXMgZGl2aWRlZCB1cC4gVGhlcmUgd2lsbCBiZSBvbmUgZm9yIGVhY2ggcG9ydC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgY2RrbWVtIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oIGIvaW5jbHVkZS9saW51eC9jZmFnMTI4NjRiLmgKaW5kZXggNmY5ZjE5ZC4uYjQ1NGRmYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZmFnMTI4NjRiLmgKKysrIGIvaW5jbHVkZS9saW51eC9jZmFnMTI4NjRiLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIC8qCiAgKiBHZXQgdGhlIHJlZnJlc2ggcmF0ZSBvZiB0aGUgTENECiAgKgotICogUmV0dXJucyB0aGUgcmVmcmVzaCByYXRlIChoZXJ0enMpLgorICogUmV0dXJucyB0aGUgcmVmcmVzaCByYXRlIChoZXJ0eikuCiAgKi8KIGV4dGVybiB1bnNpZ25lZCBpbnQgY2ZhZzEyODY0Yl9nZXRyYXRlKHZvaWQpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2Nncm91cC5oIGIvaW5jbHVkZS9saW51eC9jZ3JvdXAuaAppbmRleCBlNjU0ZmEyLi41YWM3ZWJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Nncm91cC5oCisrKyBiL2luY2x1ZGUvbGludXgvY2dyb3VwLmgKQEAgLTI0MCw3ICsyNDAsNyBAQAogCS8qIEZvciBSQ1UtcHJvdGVjdGVkIGRlbGV0aW9uICovCiAJc3RydWN0IHJjdV9oZWFkIHJjdV9oZWFkOwogCi0JLyogTGlzdCBvZiBldmVudHMgd2hpY2ggdXNlcnNwYWNlIHdhbnQgdG8gcmVjaWV2ZSAqLworCS8qIExpc3Qgb2YgZXZlbnRzIHdoaWNoIHVzZXJzcGFjZSB3YW50IHRvIHJlY2VpdmUgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGV2ZW50X2xpc3Q7CiAJc3BpbmxvY2tfdCBldmVudF9saXN0X2xvY2s7CiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jbTQwMDBfY3MuaCBiL2luY2x1ZGUvbGludXgvY200MDAwX2NzLmgKaW5kZXggNzJiZmVmZC4uM2M0YWFjNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jbTQwMDBfY3MuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NtNDAwMF9jcy5oCkBAIC0yMCw3ICsyMCw3IEBACiB9IGF0cmVxX3Q7CiAKIAotLyogd2hhdCBpcyBwYXJ0aWN1bGFybHkgc3R1cGlkIGluIHRoZSBvcmlnaW5hbCBkcml2ZXIgaXMgdGhlIGFyY2gtZGVwZW5kYW50CisvKiB3aGF0IGlzIHBhcnRpY3VsYXJseSBzdHVwaWQgaW4gdGhlIG9yaWdpbmFsIGRyaXZlciBpcyB0aGUgYXJjaC1kZXBlbmRlbnQKICAqIG1lbWJlciBzaXplcy4gVGhpcyBsZWFkcyB0byBDT05GSUdfQ09NUEFUIGJyZWFrYWdlLCBzaW5jZSAzMmJpdCB1c2Vyc3BhY2UKICAqIHdpbGwgbGF5IG91dCB0aGUgc3RydWN0dXJlIG1lbWJlcnMgZGlmZmVyZW50bHkgdGhhbiB0aGUgNjRiaXQga2VybmVsLgogICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29uZmlnZnMuaCBiL2luY2x1ZGUvbGludXgvY29uZmlnZnMuaAppbmRleCBkZGI3YTk3Li42NDU3NzhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9jb25maWdmcy5oCkBAIC0yMTgsNyArMjE4LDcgQEAKICAqIGdyb3VwIGNoaWxkcmVuLiAgZGVmYXVsdF9ncm91cHMgbWF5IGNvZXhpc3QgYWxvbmdzaXplIG1ha2VfZ3JvdXAoKSBvcgogICogbWFrZV9pdGVtKCksIGJ1dCBpZiB0aGUgZ3JvdXAgd2lzaGVzIHRvIGhhdmUgb25seSBkZWZhdWx0X2dyb3VwcwogICogY2hpbGRyZW4gKGRpc2FsbG93aW5nIG1rZGlyKDIpKSwgaXQgbmVlZCBub3QgcHJvdmlkZSBlaXRoZXIgZnVuY3Rpb24uCi0gKiBJZiB0aGUgZ3JvdXAgaGFzIGNvbW1pdCgpLCBpdCBzdXBwb3J0cyBwZW5kaW5nIGFuZCBjb21taXRlZCAoYWN0aXZlKQorICogSWYgdGhlIGdyb3VwIGhhcyBjb21taXQoKSwgaXQgc3VwcG9ydHMgcGVuZGluZyBhbmQgY29tbWl0dGVkIChhY3RpdmUpCiAgKiBpdGVtcy4KICAqLwogc3RydWN0IGNvbmZpZ2ZzX2l0ZW1fb3BlcmF0aW9ucyB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NwZXIuaCBiL2luY2x1ZGUvbGludXgvY3Blci5oCmluZGV4IDM3MmEyNTguLmMyMzA0OTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3Blci5oCisrKyBiL2luY2x1ZGUvbGludXgvY3Blci5oCkBAIC0zMTAsNyArMzEwLDcgQEAKIAlfX3U4CWNwdWlkWzQ4XTsKIH07CiAKLS8qIElBMzIvWDY0IFByb2Nlc3NvciBFcnJvciBJbmZvbWF0aW9uIFN0cnVjdHVyZSAqLworLyogSUEzMi9YNjQgUHJvY2Vzc29yIEVycm9yIEluZm9ybWF0aW9uIFN0cnVjdHVyZSAqLwogc3RydWN0IGNwZXJfaWFfZXJyX2luZm8gewogCXV1aWRfbGUJZXJyX3R5cGU7CiAJX191NjQJdmFsaWRhdGlvbl9iaXRzOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZWNvbXByZXNzL21tLmggYi9pbmNsdWRlL2xpbnV4L2RlY29tcHJlc3MvbW0uaAppbmRleCA0Y2I3MmI5Li43OTI1YmYwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RlY29tcHJlc3MvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L2RlY29tcHJlc3MvbW0uaApAQCAtMTYsNyArMTYsNyBAQAogCiAvKgogICogU29tZSBhcmNoaXRlY3R1cmVzIHdhbnQgdG8gZW5zdXJlIHRoZXJlIGlzIG5vIGxvY2FsIGRhdGEgaW4gdGhlaXIKLSAqIHByZS1ib290IGVudmlyb25tZW50LCBzbyB0aGF0IGRhdGEgY2FuIGFyYml0YXJpbHkgcmVsb2NhdGVkICh2aWEKKyAqIHByZS1ib290IGVudmlyb25tZW50LCBzbyB0aGF0IGRhdGEgY2FuIGFyYml0cmFyaWx5IHJlbG9jYXRlZCAodmlhCiAgKiBHT1QgcmVmZXJlbmNlcykuICBUaGlzIGlzIGFjaGlldmVkIGJ5IGRlZmluaW5nIFNUQVRJQ19SV19EQVRBIHRvCiAgKiBiZSBudWxsLgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oIGIvaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaAppbmRleCA5YmViZDdmLi5lZWU3YWRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCisrKyBiL2luY2x1ZGUvbGludXgvZG1hZW5naW5lLmgKQEAgLTQzNCw3ICs0MzQsNyBAQAogICoJemVybyBvciBlcnJvciBjb2RlCiAgKiBAZGV2aWNlX3R4X3N0YXR1czogcG9sbCBmb3IgdHJhbnNhY3Rpb24gY29tcGxldGlvbiwgdGhlIG9wdGlvbmFsCiAgKgl0eHN0YXRlIHBhcmFtZXRlciBjYW4gYmUgc3VwcGxpZWQgd2l0aCBhIHBvaW50ZXIgdG8gZ2V0IGEKLSAqCXN0cnVjdCB3aXRoIGF1eGlsYXJ5IHRyYW5zZmVyIHN0YXR1cyBpbmZvcm1hdGlvbiwgb3RoZXJ3aXNlIHRoZSBjYWxsCisgKglzdHJ1Y3Qgd2l0aCBhdXhpbGlhcnkgdHJhbnNmZXIgc3RhdHVzIGluZm9ybWF0aW9uLCBvdGhlcndpc2UgdGhlIGNhbGwKICAqCXdpbGwganVzdCByZXR1cm4gYSBzaW1wbGUgc3RhdHVzIGNvZGUKICAqIEBkZXZpY2VfaXNzdWVfcGVuZGluZzogcHVzaCBwZW5kaW5nIHRyYW5zYWN0aW9ucyB0byBoYXJkd2FyZQogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RyYmQuaCBiL2luY2x1ZGUvbGludXgvZHJiZC5oCmluZGV4IGQxOGQ2NzMuLmNlYzQ2N2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZHJiZC5oCisrKyBiL2luY2x1ZGUvbGludXgvZHJiZC5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KIAotLyogQWx0b3VnaCB0aGUgTGludXggc291cmNlIGNvZGUgbWFrZXMgYSBkaWZmZXJlbmNlIGJldHdlZW4KKy8qIEFsdGhvdWdoIHRoZSBMaW51eCBzb3VyY2UgY29kZSBtYWtlcyBhIGRpZmZlcmVuY2UgYmV0d2VlbgogICAgZ2VuZXJpYyBlbmRpYW5uZXNzIGFuZCB0aGUgYml0ZmllbGRzJyBlbmRpYW5uZXNzLCB0aGVyZSBpcyBubwogICAgYXJjaGl0ZWN0dXJlIGFzIG9mIExpbnV4LTIuNi4yNC1yYzQgd2hlcmUgdGhlIGJpdGZpbGVkcycgZW5kaWFubmVzcwogICAgZG9lcyBub3QgbWF0Y2ggdGhlIGdlbmVyaWMgZW5kaWFubmVzcy4gKi8KQEAgLTE4NCw3ICsxODQsNyBAQAogCS8qIFRoZXNlIHRlbXBvcmFsIHN0YXRlcyBhcmUgYWxsIHVzZWQgb24gdGhlIHdheQogCSAqIGZyb20gPj0gQ19DT05ORUNURUQgdG8gVW5jb25uZWN0ZWQuCiAJICogVGhlICdkaXNjb25uZWN0IHJlYXNvbicgc3RhdGVzCi0JICogSSBkbyBub3QgYWxsb3cgdG8gY2hhbmdlIGJld2VlbiB0aGVtLiAqLworCSAqIEkgZG8gbm90IGFsbG93IHRvIGNoYW5nZSBiZXR3ZWVuIHRoZW0uICovCiAJQ19USU1FT1VULAogCUNfQlJPS0VOX1BJUEUsCiAJQ19ORVRXT1JLX0ZBSUxVUkUsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RyYmRfbGltaXRzLmggYi9pbmNsdWRlL2xpbnV4L2RyYmRfbGltaXRzLmgKaW5kZXggYmIyNjRhNS4uMjQ2ZjU3NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kcmJkX2xpbWl0cy5oCisrKyBiL2luY2x1ZGUvbGludXgvZHJiZF9saW1pdHMuaApAQCAtNDMsNyArNDMsNyBAQAogCiAvKiBuZXQgeyAqLwogICAvKiB0aW1lb3V0LCB1bml0IGNlbnRpIHNlY29uZHMKLSAgICogbW9yZSB0aGFuIG9uZSBtaW51dGUgdGltZW91dCBpcyBub3QgdXNlZnVsbCAqLworICAgKiBtb3JlIHRoYW4gb25lIG1pbnV0ZSB0aW1lb3V0IGlzIG5vdCB1c2VmdWwgKi8KICNkZWZpbmUgRFJCRF9USU1FT1VUX01JTiAxCiAjZGVmaW5lIERSQkRfVElNRU9VVF9NQVggNjAwCiAjZGVmaW5lIERSQkRfVElNRU9VVF9ERUYgNjAgICAgICAgLyogNiBzZWNvbmRzICovCkBAIC02OCw3ICs2OCw3IEBACiAjZGVmaW5lIERSQkRfTUFYX0VQT0NIX1NJWkVfTUFYIDIwMDAwCiAjZGVmaW5lIERSQkRfTUFYX0VQT0NIX1NJWkVfREVGIDIwNDgKIAotICAvKiBJIGRvbid0IHRoaW5rIHRoYXQgYSB0Y3Agc2VuZCBidWZmZXIgb2YgbW9yZSB0aGFuIDEwTSBpcyB1c2VmdWxsICovCisgIC8qIEkgZG9uJ3QgdGhpbmsgdGhhdCBhIHRjcCBzZW5kIGJ1ZmZlciBvZiBtb3JlIHRoYW4gMTBNIGlzIHVzZWZ1bCAqLwogI2RlZmluZSBEUkJEX1NOREJVRl9TSVpFX01JTiAgMAogI2RlZmluZSBEUkJEX1NOREJVRl9TSVpFX01BWCAgKDEwPDwyMCkKICNkZWZpbmUgRFJCRF9TTkRCVUZfU0laRV9ERUYgIDAKQEAgLTEwMSw3ICsxMDEsNyBAQAogI2RlZmluZSBEUkJEX1JBVEVfTUFYICg0IDw8IDIwKQogI2RlZmluZSBEUkJEX1JBVEVfREVGIDI1MCAgLyoga2Ivc2Vjb25kICovCiAKLSAgLyogbGVzcyB0aGFuIDcgd291bGQgaGl0IHBlcmZvcm1hbmNlIHVubmVjY2Vzc2FyaWx5LgorICAvKiBsZXNzIHRoYW4gNyB3b3VsZCBoaXQgcGVyZm9ybWFuY2UgdW5uZWNlc3NhcmlseS4KICAgICogMzgzMyBpcyB0aGUgbGFyZ2VzdCBwcmltZSB0aGF0IHN0aWxsIGRvZXMgZml0CiAgICAqIGludG8gNjQgc2VjdG9ycyBvZiBhY3Rpdml0eSBsb2cgKi8KICNkZWZpbmUgRFJCRF9BTF9FWFRFTlRTX01JTiAgNwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmggYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAppbmRleCBjOGZjYmRkLi5kYzgwZDgyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaAorKysgYi9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaApAQCAtNjE0LDcgKzYxNCw3IEBACiAgKiB2YWx1ZXMgb2YgY29ycmVzcG9uZGluZyBiaXRzIGluIGZlYXR1cmVzW10ucmVxdWVzdGVkLiBCaXRzIGluIC5yZXF1ZXN0ZWQKICAqIG5vdCBzZXQgaW4gLnZhbGlkIG9yIG5vdCBjaGFuZ2VhYmxlIGFyZSBpZ25vcmVkLgogICoKLSAqIFJldHVybnMgJUVJTlZBTCB3aGVuIC52YWxpZCBjb250YWlucyB1bmRlZmluZWQgb3IgbmV2ZXItY2hhbmdhYmxlIGJpdHMKKyAqIFJldHVybnMgJUVJTlZBTCB3aGVuIC52YWxpZCBjb250YWlucyB1bmRlZmluZWQgb3IgbmV2ZXItY2hhbmdlYWJsZSBiaXRzCiAgKiBvciBzaXplIGlzIG5vdCBlcXVhbCB0byByZXF1aXJlZCBudW1iZXIgb2YgZmVhdHVyZXMgd29yZHMgKDMyLWJpdCBibG9ja3MpLgogICogUmV0dXJucyA+PSAwIGlmIHJlcXVlc3Qgd2FzIGNvbXBsZXRlZDsgYml0cyBzZXQgaW4gdGhlIHZhbHVlIG1lYW46CiAgKiAgICVFVEhUT09MX0ZfVU5TVVBQT1JURUQgLSB0aGVyZSB3ZXJlIGJpdHMgc2V0IGluIC52YWxpZCB0aGF0IGFyZSBub3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRwb2xsLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50cG9sbC5oCmluZGV4IGY2ODU2YTUuLmYzNjI3MzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRwb2xsLmgKKysrIGIvaW5jbHVkZS9saW51eC9ldmVudHBvbGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgaW5jbHVkZS9saW51eC9ldmVudHBvbGwuaCAoIEVmZmljZW50IGV2ZW50IHBvbGxpbmcgaW1wbGVtZW50YXRpb24gKQorICogIGluY2x1ZGUvbGludXgvZXZlbnRwb2xsLmggKCBFZmZpY2llbnQgZXZlbnQgcG9sbGluZyBpbXBsZW1lbnRhdGlvbiApCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxLC4uLiwyMDA2CSBEYXZpZGUgTGliZW56aQogICoKICAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9leHBvcnRmcy5oIGIvaW5jbHVkZS9saW51eC9leHBvcnRmcy5oCmluZGV4IDMzYTQyZjIuLjNhNGNlZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXhwb3J0ZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2V4cG9ydGZzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQAogICogZW5jb2RlX2ZoOgogICogICAgQGVuY29kZV9maCBzaG91bGQgc3RvcmUgaW4gdGhlIGZpbGUgaGFuZGxlIGZyYWdtZW50IEBmaCAodXNpbmcgYXQgbW9zdAogICogICAgQG1heF9sZW4gYnl0ZXMpIGluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYnkgQGRlY29kZV9maCB0byByZWNvdmVyIHRoZQotICogICAgZmlsZSByZWZlcmVkIHRvIGJ5IHRoZSAmc3RydWN0IGRlbnRyeSBAZGUuICBJZiB0aGUgQGNvbm5lY3RhYmxlIGZsYWcgaXMKKyAqICAgIGZpbGUgcmVmZXJyZWQgdG8gYnkgdGhlICZzdHJ1Y3QgZGVudHJ5IEBkZS4gIElmIHRoZSBAY29ubmVjdGFibGUgZmxhZyBpcwogICogICAgc2V0LCB0aGUgZW5jb2RlX2ZoKCkgc2hvdWxkIHN0b3JlIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gc28gdGhhdCBhIGdvb2QKICAqICAgIGF0dGVtcHQgY2FuIGJlIG1hZGUgdG8gZmluZCBub3Qgb25seSB0aGUgZmlsZSBidXQgYWxzbyBpdCdzIHBsYWNlIGluIHRoZQogICogICAgZmlsZXN5c3RlbS4gICBUaGlzIHR5cGljYWxseSBtZWFucyBzdG9yaW5nIGEgcmVmZXJlbmNlIHRvIGRlLT5kX3BhcmVudCBpbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mYi5oIGIvaW5jbHVkZS9saW51eC9mYi5oCmluZGV4IGIyYTM2MzkuLmRmNzI4YzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZiLmgKQEAgLTUzNCwxNCArNTM0LDE0IEBACiAjZGVmaW5lIEZCX0VWRU5UX0dFVF9DT05TT0xFX01BUCAgICAgICAgMHgwNwogLyogICAgICBDT05TT0xFLVNQRUNJRklDOiBzZXQgY29uc29sZSB0byBmcmFtZWJ1ZmZlciBtYXBwaW5nICovCiAjZGVmaW5lIEZCX0VWRU5UX1NFVF9DT05TT0xFX01BUCAgICAgICAgMHgwOAotLyogICAgICBBIGhhcmR3YXJlIGRpc3BsYXkgYmxhbmsgY2hhbmdlIG9jY3VyZWQgKi8KKy8qICAgICAgQSBoYXJkd2FyZSBkaXNwbGF5IGJsYW5rIGNoYW5nZSBvY2N1cnJlZCAqLwogI2RlZmluZSBGQl9FVkVOVF9CTEFOSyAgICAgICAgICAgICAgICAgIDB4MDkKIC8qICAgICAgUHJpdmF0ZSBtb2RlbGlzdCBpcyB0byBiZSByZXBsYWNlZCAqLwogI2RlZmluZSBGQl9FVkVOVF9ORVdfTU9ERUxJU1QgICAgICAgICAgIDB4MEEKIC8qCVRoZSByZXNvbHV0aW9uIG9mIHRoZSBwYXNzZWQgaW4gZmJfaW5mbyBhYm91dCB0byBjaGFuZ2UgYW5kCiAgICAgICAgIGFsbCB2YydzIHNob3VsZCBiZSBjaGFuZ2VkICAgICAgICAgKi8KICNkZWZpbmUgRkJfRVZFTlRfTU9ERV9DSEFOR0VfQUxMCTB4MEIKLS8qCUEgc29mdHdhcmUgZGlzcGxheSBibGFuayBjaGFuZ2Ugb2NjdXJlZCAqLworLyoJQSBzb2Z0d2FyZSBkaXNwbGF5IGJsYW5rIGNoYW5nZSBvY2N1cnJlZCAqLwogI2RlZmluZSBGQl9FVkVOVF9DT05CTEFOSyAgICAgICAgICAgICAgIDB4MEMKIC8qICAgICAgR2V0IGRyYXdpbmcgcmVxdWlyZW1lbnRzICAgICAgICAqLwogI2RlZmluZSBGQl9FVkVOVF9HRVRfUkVRICAgICAgICAgICAgICAgIDB4MEQKQEAgLTgwNSw3ICs4MDUsNyBAQAogLyogQSBkcml2ZXIgbWF5IHNldCB0aGlzIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBpdCBkb2VzIHdhbnQgYSBzZXRfcGFyIHRvIGJlCiAgKiBjYWxsZWQgZXZlcnkgdGltZSB3aGVuIGZiY29uX3N3aXRjaCBpcyBleGVjdXRlZC4gVGhlIGFkdmFudGFnZSBpcyB0aGF0IHdpdGgKICAqIHRoaXMgZmxhZyBzZXQgeW91IGNhbiByZWFsbHkgYmUgc3VyZSB0aGF0IHNldF9wYXIgaXMgYWx3YXlzIGNhbGxlZCBiZWZvcmUKLSAqIGFueSBvZiB0aGUgZnVuY3Rpb25zIGRlcGVuZGFudCBvbiB0aGUgY29ycmVjdCBoYXJkd2FyZSBzdGF0ZSBvciBhbHRlcmluZworICogYW55IG9mIHRoZSBmdW5jdGlvbnMgZGVwZW5kZW50IG9uIHRoZSBjb3JyZWN0IGhhcmR3YXJlIHN0YXRlIG9yIGFsdGVyaW5nCiAgKiB0aGF0IHN0YXRlLCBldmVuIGlmIHlvdSBhcmUgdXNpbmcgc29tZSBicm9rZW4gWCByZWxlYXNlcy4gVGhlIGRpc2FkdmFudGFnZQogICogaXMgdGhhdCBpdCBpbnRyb2R1Y2VzIHVud2FudGVkIGRlbGF5cyB0byBldmVyeSBjb25zb2xlIHN3aXRjaCBpZiBzZXRfcGFyCiAgKiBpcyBzbG93LiBJdCBpcyBhIGdvb2QgaWRlYSB0byB0cnkgdGhpcyBmbGFnIGluIHRoZSBkcml2ZXJzIGluaXRpYWxpemF0aW9uCkBAIC04NzcsNyArODc3LDcgQEAKIAl2b2lkICpmYmNvbl9wYXI7ICAgICAgICAgICAgICAgIC8qIGZiY29uIHVzZS1vbmx5IHByaXZhdGUgYXJlYSAqLwogCS8qIEZyb20gaGVyZSBvbiBldmVyeXRoaW5nIGlzIGRldmljZSBkZXBlbmRlbnQgKi8KIAl2b2lkICpwYXI7Ci0JLyogd2UgbmVlZCB0aGUgUENJIG9yIHNpbWlsaWFyIGFwZXJ0dXJlIGJhc2Uvc2l6ZSBub3QKKwkvKiB3ZSBuZWVkIHRoZSBQQ0kgb3Igc2ltaWxhciBhcGVydHVyZSBiYXNlL3NpemUgbm90CiAJICAgc21lbV9zdGFydC9zaXplIGFzIHNtZW1fc3RhcnQgbWF5IGp1c3QgYmUgYW4gb2JqZWN0CiAJICAgYWxsb2NhdGVkIGluc2lkZSB0aGUgYXBlcnR1cmUgc28gbWF5IG5vdCBhY3R1YWxseSBvdmVybGFwICovCiAJc3RydWN0IGFwZXJ0dXJlc19zdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maXJld2lyZS1jZGV2LmggYi9pbmNsdWRlL2xpbnV4L2ZpcmV3aXJlLWNkZXYuaAppbmRleCA1OWVhNDA2Li40ZmYwOTg4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZpcmV3aXJlLWNkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZpcmV3aXJlLWNkZXYuaApAQCAtOTAwLDcgKzkwMCw3IEBACiAKIC8qKgogICogc3RydWN0IGZ3X2NkZXZfYWxsb2NhdGVfaXNvX3Jlc291cmNlIC0gKERlKWFsbG9jYXRlIGEgY2hhbm5lbCBvciBiYW5kd2lkdGgKLSAqIEBjbG9zdXJlOglQYXNzZWQgYmFjayB0byB1c2Vyc3BhY2UgaW4gY29ycmVwb25kaW5nIGlzbyByZXNvdXJjZSBldmVudHMKKyAqIEBjbG9zdXJlOglQYXNzZWQgYmFjayB0byB1c2Vyc3BhY2UgaW4gY29ycmVzcG9uZGluZyBpc28gcmVzb3VyY2UgZXZlbnRzCiAgKiBAY2hhbm5lbHM6CUlzb2Nocm9ub3VzIGNoYW5uZWxzIG9mIHdoaWNoIG9uZSBpcyB0byBiZSAoZGUpYWxsb2NhdGVkCiAgKiBAYmFuZHdpZHRoOglJc29jaHJvbm91cyBiYW5kd2lkdGggdW5pdHMgdG8gYmUgKGRlKWFsbG9jYXRlZAogICogQGhhbmRsZToJSGFuZGxlIHRvIHRoZSBhbGxvY2F0aW9uLCB3cml0dGVuIGJ5IHRoZSBrZXJuZWwgKG9ubHkgdmFsaWQgaW4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaAppbmRleCAxYjk1YWYzLi5kYmQ4NjBhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9mcy5oCkBAIC00NjUsNyArNDY1LDcgQEAKIAlzdHJ1Y3QgdGltZXNwZWMJaWFfY3RpbWU7CiAKIAkvKgotCSAqIE5vdCBhbiBhdHRyaWJ1dGUsIGJ1dCBhbiBhdXhpbGFyeSBpbmZvIGZvciBmaWxlc3lzdGVtcyB3YW50aW5nIHRvCisJICogTm90IGFuIGF0dHJpYnV0ZSwgYnV0IGFuIGF1eGlsaWFyeSBpbmZvIGZvciBmaWxlc3lzdGVtcyB3YW50aW5nIHRvCiAJICogaW1wbGVtZW50IGFuIGZ0cnVuY2F0ZSgpIGxpa2UgbWV0aG9kLiAgTk9URTogZmlsZXN5c3RlbSBzaG91bGQKIAkgKiBjaGVjayBmb3IgKGlhX3ZhbGlkICYgQVRUUl9GSUxFKSwgYW5kIG5vdCBmb3IgKGlhX2ZpbGUgIT0gTlVMTCkuCiAJICovCkBAIC02NDksNyArNjQ5LDcgQEAKIH0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZChzaXplb2YobG9uZykpKSk7CiAJLyoKIAkgKiBPbiBtb3N0IGFyY2hpdGVjdHVyZXMgdGhhdCBhbGlnbm1lbnQgaXMgYWxyZWFkeSB0aGUgY2FzZTsgYnV0Ci0JICogbXVzdCBiZSBlbmZvcmNlZCBoZXJlIGZvciBDUklTLCB0byBsZXQgdGhlIGxlYXN0IHNpZ25maWNhbnQgYml0CisJICogbXVzdCBiZSBlbmZvcmNlZCBoZXJlIGZvciBDUklTLCB0byBsZXQgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdAogCSAqIG9mIHN0cnVjdCBwYWdlJ3MgIm1hcHBpbmciIHBvaW50ZXIgYmUgdXNlZCBmb3IgUEFHRV9NQVBQSU5HX0FOT04uCiAJICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNjYWNoZS1jYWNoZS5oIGIvaW5jbHVkZS9saW51eC9mc2NhY2hlLWNhY2hlLmgKaW5kZXggYjg1ODFjMC4uNzY0MjdlNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mc2NhY2hlLWNhY2hlLmgKKysrIGIvaW5jbHVkZS9saW51eC9mc2NhY2hlLWNhY2hlLmgKQEAgLTIzNiw3ICsyMzYsNyBAQAogCS8qIHVucGluIGFuIG9iamVjdCBpbiB0aGUgY2FjaGUgKi8KIAl2b2lkICgqdW5waW5fb2JqZWN0KShzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCk7CiAKLQkvKiBzdG9yZSB0aGUgdXBkYXRlZCBhdXhpbGxpYXJ5IGRhdGEgb24gYW4gb2JqZWN0ICovCisJLyogc3RvcmUgdGhlIHVwZGF0ZWQgYXV4aWxpYXJ5IGRhdGEgb24gYW4gb2JqZWN0ICovCiAJdm9pZCAoKnVwZGF0ZV9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KTsKIAogCS8qIGRpc2NhcmQgdGhlIHJlc291cmNlcyBwaW5uZWQgYnkgYW4gb2JqZWN0IGFuZCBlZmZlY3QgcmV0aXJlbWVudCBpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mc2NhY2hlLmggYi9pbmNsdWRlL2xpbnV4L2ZzY2FjaGUuaAppbmRleCBlYzBkYWQ1Li43YzRkNzJmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZzY2FjaGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZzY2FjaGUuaApAQCAtMTAyLDkgKzEwMiw5IEBACiAJICovCiAJdm9pZCAoKmdldF9hdHRyKShjb25zdCB2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwgdWludDY0X3QgKnNpemUpOwogCi0JLyogZ2V0IHRoZSBhdXhpbGxpYXJ5IGRhdGEgZnJvbSBuZXRmcyBkYXRhCisJLyogZ2V0IHRoZSBhdXhpbGlhcnkgZGF0YSBmcm9tIG5ldGZzIGRhdGEKIAkgKiAtIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGFic2VudCBpZiB0aGUgaW5kZXggY2FycmllcyBubyBzdGF0ZSBkYXRhCi0JICogLSBzaG91bGQgc3RvcmUgdGhlIGF1eGlsbGlhcnkgZGF0YSBpbiB0aGUgYnVmZmVyCisJICogLSBzaG91bGQgc3RvcmUgdGhlIGF1eGlsaWFyeSBkYXRhIGluIHRoZSBidWZmZXIKIAkgKiAtIHNob3VsZCByZXR1cm4gdGhlIGFtb3VudCBvZiBhbW91bnQgc3RvcmVkCiAJICogLSBub3QgcGVybWl0dGVkIHRvIHJldHVybiBhbiBlcnJvcgogCSAqIC0gdGhlIG5ldGZzIGRhdGEgZnJvbSB0aGUgY29va2llIGJlaW5nIHVzZWQgYXMgdGhlIHNvdXJjZSBpcwpAQCAtMTE3LDcgKzExNyw3IEBACiAJLyogY29uc3VsdCB0aGUgbmV0ZnMgYWJvdXQgdGhlIHN0YXRlIG9mIGFuIG9iamVjdAogCSAqIC0gdGhpcyBmdW5jdGlvbiBjYW4gYmUgYWJzZW50IGlmIHRoZSBpbmRleCBjYXJyaWVzIG5vIHN0YXRlIGRhdGEKIAkgKiAtIHRoZSBuZXRmcyBkYXRhIGZyb20gdGhlIGNvb2tpZSBiZWluZyB1c2VkIGFzIHRoZSB0YXJnZXQgaXMKLQkgKiAgIHByZXNlbnRlZCwgYXMgaXMgdGhlIGF1eGlsbGlhcnkgZGF0YQorCSAqICAgcHJlc2VudGVkLCBhcyBpcyB0aGUgYXV4aWxpYXJ5IGRhdGEKIAkgKi8KIAllbnVtIGZzY2FjaGVfY2hlY2thdXggKCpjaGVja19hdXgpKHZvaWQgKmNvb2tpZV9uZXRmc19kYXRhLAogCQkJCQkgICBjb25zdCB2b2lkICpkYXRhLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oaWQuaCBiL2luY2x1ZGUvbGludXgvaGlkLmgKaW5kZXggYmIyOWJiMS4uNDJmN2UyZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9oaWQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2hpZC5oCkBAIC03OTksNyArNzk5LDcgQEAKICAqCiAgKiBDYWxsIHRoaXMgaW4gcHJvYmUgZnVuY3Rpb24gKmFmdGVyKiBoaWRfcGFyc2UuIFRoaXMgd2lsbCBzZXR1cCBIVyBidWZmZXJzCiAgKiBhbmQgc3RhcnQgdGhlIGRldmljZSAoaWYgbm90IGRlZmZlcmVkIHRvIGRldmljZSBvcGVuKS4gaGlkX2h3X3N0b3AgbXVzdCBiZQotICogY2FsbGVkIGlmIHRoaXMgd2FzIHN1Y2Nlc3NmdWxsLgorICogY2FsbGVkIGlmIHRoaXMgd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IF9fbXVzdF9jaGVjayBoaWRfaHdfc3RhcnQoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYsCiAJCXVuc2lnbmVkIGludCBjb25uZWN0X21hc2spCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hwX3NkYy5oIGIvaW5jbHVkZS9saW51eC9ocF9zZGMuaAppbmRleCA5ZGIzZDQ1Li5kMzkyOTc1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2hwX3NkYy5oCisrKyBiL2luY2x1ZGUvbGludXgvaHBfc2RjLmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogI2RlZmluZSBIUF9TRENfU1RBVFVTX1JFRwkweDQwCS8qIERhdGEgZnJvbSBhbiBpODA0MiByZWdpc3RlciAqLwogI2RlZmluZSBIUF9TRENfU1RBVFVTX0hJTENNRCAgICAweDUwCS8qIENvbW1hbmQgZnJvbSBISUwgTUxDICovCiAjZGVmaW5lIEhQX1NEQ19TVEFUVVNfSElMREFUQSAgIDB4NjAJLyogRGF0YSBmcm9tIEhJTCBNTEMgKi8KLSNkZWZpbmUgSFBfU0RDX1NUQVRVU19QVVAJMHg3MAkvKiBTdWNlc3NmdWwgcG93ZXItdXAgc2VsZiB0ZXN0ICovCisjZGVmaW5lIEhQX1NEQ19TVEFUVVNfUFVQCTB4NzAJLyogU3VjY2Vzc2Z1bCBwb3dlci11cCBzZWxmIHRlc3QgKi8KICNkZWZpbmUgSFBfU0RDX1NUQVRVU19LQ09PS0VECTB4ODAJLyogS2V5IGZyb20gY29va2VkIGtiZCAqLwogI2RlZmluZSBIUF9TRENfU1RBVFVTX0tSUEcJMHhjMAkvKiBLZXkgZnJvbSBSZXBlYXQgR2VuICovCiAjZGVmaW5lIEhQX1NEQ19TVEFUVVNfS01PRF9TVVAJMHgxMAkvKiBTaGlmdCBrZXkgaXMgdXAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaTJvLmggYi9pbmNsdWRlL2xpbnV4L2kyby5oCmluZGV4IDllN2ExMmQuLmE2ZGVlZjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaTJvLmgKKysrIGIvaW5jbHVkZS9saW51eC9pMm8uaApAQCAtODI2LDcgKzgyNiw3IEBACiAgKglAYzogSTJPIGNvbnRyb2xsZXIKICAqCiAgKglUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCBhIG1lc3NhZ2UgZnJhbWUuIElmIG5vIG1lc3NhZ2UgZnJhbWUgaXMKLSAqCWF2YWlsYWJsZSBkbyBub3Qgd2FpdCB1bnRpbCBvbmUgaXMgYXZhaWxhYmUgKHNlZSBhbHNvIGkyb19tc2dfZ2V0X3dhaXQpLgorICoJYXZhaWxhYmxlIGRvIG5vdCB3YWl0IHVudGlsIG9uZSBpcyBhdmFpbGFibGUgKHNlZSBhbHNvIGkyb19tc2dfZ2V0X3dhaXQpLgogICoJVGhlIHJldHVybmVkIHBvaW50ZXIgdG8gdGhlIG1lc3NhZ2UgZnJhbWUgaXMgbm90IGluIEkvTyBtZW1vcnksIGl0IGlzCiAgKglhbGxvY2F0ZWQgZnJvbSBhIG1lbXBvb2wuIEJ1dCBiZWNhdXNlIGEgTUZBIGlzIGFsbG9jYXRlZCBmcm9tIHRoZQogICoJY29udHJvbGxlciB0b28gaXQgaXMgZ3VhcmFudGVlZCB0aGF0IGkyb19tc2dfcG9zdCgpIHdpbGwgbmV2ZXIgZmFpbC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmggYi9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oCmluZGV4IDk0M2M5YjUuLmJlYTBhYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgKKysrIGIvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaApAQCAtOTgsNyArOTgsNyBAQAogICogQG5leHQ6CXBvaW50ZXIgdG8gdGhlIG5leHQgaXJxYWN0aW9uIGZvciBzaGFyZWQgaW50ZXJydXB0cwogICogQGlycToJaW50ZXJydXB0IG51bWJlcgogICogQGRpcjoJcG9pbnRlciB0byB0aGUgcHJvYy9pcnEvTk4vbmFtZSBlbnRyeQotICogQHRocmVhZF9mbjoJaW50ZXJ1cHQgaGFuZGxlciBmdW5jdGlvbiBmb3IgdGhyZWFkZWQgaW50ZXJydXB0cworICogQHRocmVhZF9mbjoJaW50ZXJydXB0IGhhbmRsZXIgZnVuY3Rpb24gZm9yIHRocmVhZGVkIGludGVycnVwdHMKICAqIEB0aHJlYWQ6CXRocmVhZCBwb2ludGVyIGZvciB0aHJlYWRlZCBpbnRlcnJ1cHRzCiAgKiBAdGhyZWFkX2ZsYWdzOglmbGFncyByZWxhdGVkIHRvIEB0aHJlYWQKICAqIEB0aHJlYWRfbWFzazoJYml0bWFzayBmb3Iga2VlcGluZyB0cmFjayBvZiBAdGhyZWFkIGFjdGl2aXR5CkBAIC00ODQsNyArNDg0LDcgQEAKICAgIFByb3BlcnRpZXM6CiAgICAqIElmIHRhc2tsZXRfc2NoZWR1bGUoKSBpcyBjYWxsZWQsIHRoZW4gdGFza2xldCBpcyBndWFyYW50ZWVkCiAgICAgIHRvIGJlIGV4ZWN1dGVkIG9uIHNvbWUgY3B1IGF0IGxlYXN0IG9uY2UgYWZ0ZXIgdGhpcy4KLSAgICogSWYgdGhlIHRhc2tsZXQgaXMgYWxyZWFkeSBzY2hlZHVsZWQsIGJ1dCBpdHMgZXhjZWN1dGlvbiBpcyBzdGlsbCBub3QKKyAgICogSWYgdGhlIHRhc2tsZXQgaXMgYWxyZWFkeSBzY2hlZHVsZWQsIGJ1dCBpdHMgZXhlY3V0aW9uIGlzIHN0aWxsIG5vdAogICAgICBzdGFydGVkLCBpdCB3aWxsIGJlIGV4ZWN1dGVkIG9ubHkgb25jZS4KICAgICogSWYgdGhpcyB0YXNrbGV0IGlzIGFscmVhZHkgcnVubmluZyBvbiBhbm90aGVyIENQVSAob3Igc2NoZWR1bGUgaXMgY2FsbGVkCiAgICAgIGZyb20gdGFza2xldCBpdHNlbGYpLCBpdCBpcyByZXNjaGVkdWxlZCBmb3IgbGF0ZXIuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lwbWkuaCBiL2luY2x1ZGUvbGludXgvaXBtaS5oCmluZGV4IDA0NWYyZjIuLmNhODVjZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaXBtaS5oCisrKyBiL2luY2x1ZGUvbGludXgvaXBtaS5oCkBAIC0xMTEsNyArMTExLDcgQEAKICAqIEEgTEFOIEFkZHJlc3MuICBUaGlzIGlzIGFuIGFkZHJlc3MgdG8vZnJvbSBhIExBTiBpbnRlcmZhY2UgYnJpZGdlZAogICogYnkgdGhlIEJNQywgbm90IGFuIGFkZHJlc3MgYWN0dWFsbHkgb3V0IG9uIHRoZSBMQU4uCiAgKgotICogQSBjb25jaW91cyBkZWNpc2lvbiB3YXMgbWFkZSBoZXJlIHRvIGRldmlhdGUgc2xpZ2h0bHkgZnJvbSB0aGUgSVBNSQorICogQSBjb25zY2lvdXMgZGVjaXNpb24gd2FzIG1hZGUgaGVyZSB0byBkZXZpYXRlIHNsaWdodGx5IGZyb20gdGhlIElQTUkKICAqIHNwZWMuICBXZSBkbyBub3QgdXNlIHJxU1dJRCBhbmQgcnNTV0lEIGxpa2UgaXQgc2hvd3MgaW4gdGhlCiAgKiBtZXNzYWdlLiAgSW5zdGVhZCwgd2UgdXNlIHJlbW90ZV9TV0lEIGFuZCBsb2NhbF9TV0lELiAgVGhpcyBtZWFucwogICogdGhhdCBhbnkgbWVzc2FnZSAoYSByZXF1ZXN0IG9yIHJlc3BvbnNlKSBmcm9tIGFub3RoZXIgZGV2aWNlIHdpbGwKQEAgLTI1OSw3ICsyNTksNyBAQAogCXZvaWQgKCpkb25lKShzdHJ1Y3QgaXBtaV9yZWN2X21zZyAqbXNnKTsKIAogCS8qIFBsYWNlLWhvbGRlciBmb3IgdGhlIGRhdGEsIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIGFib3V0Ci0JICAgdGhlIHNpemUgb3IgZXhpc3RhbmNlIG9mIHRoaXMsIHNpbmNlIGl0IG1heSBjaGFuZ2UuICovCisJICAgdGhlIHNpemUgb3IgZXhpc3RlbmNlIG9mIHRoaXMsIHNpbmNlIGl0IG1heSBjaGFuZ2UuICovCiAJdW5zaWduZWQgY2hhciAgIG1zZ19kYXRhW0lQTUlfTUFYX01TR19MRU5HVEhdOwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pc2RuL2hkbGMuaCBiL2luY2x1ZGUvbGludXgvaXNkbi9oZGxjLmgKaW5kZXggNGIzZWNjNC4uOTY1MjEzNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pc2RuL2hkbGMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lzZG4vaGRsYy5oCkBAIC0yLDcgKzIsNyBAQAogICogaGRsYy5oICAtLSAgR2VuZXJhbCBwdXJwb3NlIElTRE4gSERMQyBkZWNvZGVyLgogICoKICAqIEltcGxlbWVudGF0aW9uIG9mIGEgSERMQyBkZWNvZGVyL2VuY29kZXIgaW4gc29mdHdhcmUuCi0gKiBOZWNjZXNzYXJ5IGJlY2F1c2Ugc29tZSBJU0ROIGRldmljZXMgZG9uJ3QgaGF2ZSBIRExDCisgKiBOZWNlc3NhcnkgYmVjYXVzZSBzb21lIElTRE4gZGV2aWNlcyBkb24ndCBoYXZlIEhETEMKICAqIGNvbnRyb2xsZXJzLgogICoKICAqIENvcHlyaWdodCAoQykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXhqdXNlci5oIGIvaW5jbHVkZS9saW51eC9peGp1c2VyLmgKaW5kZXggODhiNDU4OS4uOTRhYjVlOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9peGp1c2VyLmgKKysrIGIvaW5jbHVkZS9saW51eC9peGp1c2VyLmgKQEAgLTUwLDcgKzUwLDcgQEAKICogSU9DVEwncyB1c2VkIGZvciB0aGUgUXVpY2tuZXQgVGVsZXBob255IENhcmRzCiAqCiAqIElmIHlvdSB1c2UgdGhlIElYSkNUTF9URVNUUkFNIGNvbW1hbmQsIHRoZSBjYXJkIG11c3QgYmUgcG93ZXIgY3ljbGVkIHRvCi0qIHJlc2V0IHRoZSBTUkFNIHZhbHVlcyBiZWZvcmUgZnV0aGVyIHVzZS4KKyogcmVzZXQgdGhlIFNSQU0gdmFsdWVzIGJlZm9yZSBmdXJ0aGVyIHVzZS4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9qaWZmaWVzLmggYi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaAppbmRleCA5MjJhYTMxLi5mOTc2NzJhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaApAQCAtNDIsNyArNDIsNyBAQAogLyogTEFUQ0ggaXMgdXNlZCBpbiB0aGUgaW50ZXJ2YWwgdGltZXIgYW5kIGZ0YXBlIHNldHVwLiAqLwogI2RlZmluZSBMQVRDSCAgKChDTE9DS19USUNLX1JBVEUgKyBIWi8yKSAvIEhaKQkvKiBGb3IgZGl2aWRlciAqLwogCi0vKiBTdXBwb3NlIHdlIHdhbnQgdG8gZGV2aWRlIHR3byBudW1iZXJzIE5PTSBhbmQgREVOOiBOT00vREVOLCB0aGVuIHdlIGNhbgorLyogU3VwcG9zZSB3ZSB3YW50IHRvIGRpdmlkZSB0d28gbnVtYmVycyBOT00gYW5kIERFTjogTk9NL0RFTiwgdGhlbiB3ZSBjYW4KICAqIGltcHJvdmUgYWNjdXJhY3kgYnkgc2hpZnRpbmcgTFNIIGJpdHMsIGhlbmNlIGNhbGN1bGF0aW5nOgogICogICAgIChOT00gPDwgTFNIKSAvIERFTgogICogVGhpcyBob3dldmVyIG1lYW5zIHRyb3VibGUgZm9yIGxhcmdlIE5PTSwgYmVjYXVzZSAoTk9NIDw8IExTSCkgbWF5IG5vCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t0aW1lLmggYi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgKaW5kZXggZTFjZWFhOS4uNjAzYmVjMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rdGltZS5oCisrKyBiL2luY2x1ZGUvbGludXgva3RpbWUuaApAQCAtMzUsNyArMzUsNyBAQAogICoKICAqIE9uIDMyLWJpdCBDUFVzIGFuIG9wdGltaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGltZXNwZWMgc3RydWN0dXJlCiAgKiBpcyB1c2VkIHRvIGF2b2lkIGV4cGVuc2l2ZSBjb252ZXJzaW9ucyBmcm9tIGFuZCB0byB0aW1lc3BlY3MuIFRoZQotICogZW5kaWFuLWF3YXJlIG9yZGVyIG9mIHRoZSB0diBzdHJ1Y3QgbWVtYmVycyBpcyBjaG9vc2VuIHRvIGFsbG93CisgKiBlbmRpYW4tYXdhcmUgb3JkZXIgb2YgdGhlIHR2IHN0cnVjdCBtZW1iZXJzIGlzIGNob3NlbiB0byBhbGxvdwogICogbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgb24gdGhlIHR2NjQgbWVtYmVyIG9mIHRoZSB1bmlvbiB0b28sIHdoaWNoCiAgKiBmb3IgY2VydGFpbiBvcGVyYXRpb25zIHByb2R1Y2VzIGJldHRlciBjb2RlLgogICoKQEAgLTE1OCw3ICsxNTgsNyBAQAogICogQGxoczoJbWludWVuZAogICogQHJoczoJc3VidHJhaGVuZAogICoKLSAqIFJldHVybnMgdGhlIHJlbWFpbmRlciBvZiB0aGUgc3Vic3RyYWN0aW9uCisgKiBSZXR1cm5zIHRoZSByZW1haW5kZXIgb2YgdGhlIHN1YnRyYWN0aW9uCiAgKi8KIHN0YXRpYyBpbmxpbmUga3RpbWVfdCBrdGltZV9zdWIoY29uc3Qga3RpbWVfdCBsaHMsIGNvbnN0IGt0aW1lX3QgcmhzKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9sZWQtbG0zNTMwLmggYi9pbmNsdWRlL2xpbnV4L2xlZC1sbTM1MzAuaAppbmRleCBiYjY5ZDIwLi41ODU5MmZhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xlZC1sbTM1MzAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xlZC1sbTM1MzAuaApAQCAtNDEsNyArNDEsNyBAQAogI2RlZmluZSBMTTM1MzBfUkFNUF9USU1FXzhzCQkoNykKIAogLyogQUxTIFJlc2lzdG9yIFNlbGVjdCAqLwotI2RlZmluZSBMTTM1MzBfQUxTX0lNUERfWgkJKDB4MDApIC8qIEFMUyBJbXBlZGVuY2UgKi8KKyNkZWZpbmUgTE0zNTMwX0FMU19JTVBEX1oJCSgweDAwKSAvKiBBTFMgSW1wZWRhbmNlICovCiAjZGVmaW5lIExNMzUzMF9BTFNfSU1QRF8xM181M2tPaG0JKDB4MDEpCiAjZGVmaW5lIExNMzUzMF9BTFNfSU1QRF85XzAxa09obQkoMHgwMikKICNkZWZpbmUgTE0zNTMwX0FMU19JTVBEXzVfNDFrT2htCSgweDAzKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9saWJhdGEuaCBiL2luY2x1ZGUvbGludXgvbGliYXRhLmgKaW5kZXggYzcxZjQ2OS4uN2Y2NzVhYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9saWJhdGEuaAorKysgYi9pbmNsdWRlL2xpbnV4L2xpYmF0YS5oCkBAIC0zNjQsNyArMzY0LDcgQEAKIAlBVEFfRUhfQ01EX1RJTUVPVVRfVEFCTEVfU0laRSA9IDYsCiAKIAkvKiBIb3JrYWdlIHR5cGVzLiBNYXkgYmUgc2V0IGJ5IGxpYmF0YSBvciBjb250cm9sbGVyIG9uIGRyaXZlcwotCSAgIChzb21lIGhvcmthZ2UgbWF5IGJlIGRyaXZlL2NvbnRyb2xsZXIgcGFpciBkZXBlbmRhbnQgKi8KKwkgICAoc29tZSBob3JrYWdlIG1heSBiZSBkcml2ZS9jb250cm9sbGVyIHBhaXIgZGVwZW5kZW50ICovCiAKIAlBVEFfSE9SS0FHRV9ESUFHTk9TVElDCT0gKDEgPDwgMCksCS8qIEZhaWxlZCBib290IGRpYWcgKi8KIAlBVEFfSE9SS0FHRV9OT0RNQQk9ICgxIDw8IDEpLAkvKiBETUEgcHJvYmxlbXMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbHJ1X2NhY2hlLmggYi9pbmNsdWRlL2xpbnV4L2xydV9jYWNoZS5oCmluZGV4IDc4ZmJmMjQuLjZhNGZhYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbHJ1X2NhY2hlLmgKKysrIGIvaW5jbHVkZS9saW51eC9scnVfY2FjaGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgKgogICogRFJCRCBjdXJyZW50bHkgKE1heSAyMDA5KSBvbmx5IHVzZXMgNjEgZWxlbWVudHMgb24gdGhlIHJlc3luYyBscnVfY2FjaGUKICAqICh0b3RhbCBtZW1vcnkgdXNhZ2UgMiBwYWdlcyksIGFuZCB1cCB0byAzODMzIGVsZW1lbnRzIG9uIHRoZSBhY3RfbG9nCi0gKiBscnVfY2FjaGUsIHRvdGFsbGluZyB+MjE1IGtCIGZvciA2NGJpdCBhcmNoaXRlY2h0dXJlLCB+NTMgcGFnZXMuCisgKiBscnVfY2FjaGUsIHRvdGFsbGluZyB+MjE1IGtCIGZvciA2NGJpdCBhcmNoaXRlY3R1cmUsIH41MyBwYWdlcy4KICAqCiAgKiBXZSB1c3VhbGx5IGRvIG5vdCBhY3R1YWxseSBmcmVlIHRoZXNlIG9iamVjdHMgYWdhaW4sIGJ1dCBvbmx5ICJyZWN5Y2xlIgogICogdGhlbSwgYXMgdGhlIGNoYW5nZSAiaW5kZXg6IC1vbGRfbGFiZWwsICtMQ19GUkVFIiB3b3VsZCBuZWVkIGEgdHJhbnNhY3Rpb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZkL3dtODM1MC9wbWljLmggYi9pbmNsdWRlL2xpbnV4L21mZC93bTgzNTAvcG1pYy5oCmluZGV4IGU3ODZmZTkuLjU3OWI1MGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbWZkL3dtODM1MC9wbWljLmgKKysrIGIvaW5jbHVkZS9saW51eC9tZmQvd204MzUwL3BtaWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBwbWljLmggIC0tICBQb3dlciBNYW5hZ21lbnQgRHJpdmVyIGZvciBXb2xmc29uIFdNODM1MCBQTUlDCisgKiBwbWljLmggIC0tICBQb3dlciBNYW5hZ2VtZW50IERyaXZlciBmb3IgV29sZnNvbiBXTTgzNTAgUE1JQwogICoKICAqIENvcHlyaWdodCAyMDA3IFdvbGZzb24gTWljcm9lbGVjdHJvbmljcyBQTEMKICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggNzYwNmQ3ZC4uNjkyZGJhZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtNjA4LDcgKzYwOCw3IEBACiAjZW5kaWYKIAogLyoKLSAqIERlZmluZSB0aGUgYml0IHNoaWZ0cyB0byBhY2Nlc3MgZWFjaCBzZWN0aW9uLiAgRm9yIG5vbi1leGlzdGFudAorICogRGVmaW5lIHRoZSBiaXQgc2hpZnRzIHRvIGFjY2VzcyBlYWNoIHNlY3Rpb24uICBGb3Igbm9uLWV4aXN0ZW50CiAgKiBzZWN0aW9ucyB3ZSBkZWZpbmUgdGhlIHNoaWZ0IGFzIDA7IHRoYXQgcGx1cyBhIDAgbWFzayBlbnN1cmVzCiAgKiB0aGUgY29tcGlsZXIgd2lsbCBvcHRpbWlzZSBhd2F5IHJlZmVyZW5jZSB0byB0aGVtLgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tYy9kd19tbWMuaCBiL2luY2x1ZGUvbGludXgvbW1jL2R3X21tYy5oCmluZGV4IGMwMjA3YTcuLmJkZDdjZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW1jL2R3X21tYy5oCisrKyBiL2luY2x1ZGUvbGludXgvbW1jL2R3X21tYy5oCkBAIC05OCw3ICs5OCw3IEBACiAgKiBFVkVOVF9EQVRBX0NPTVBMRVRFIGlzIHNldCBpbiBAcGVuZGluZ19ldmVudHMsIGFsbCBkYXRhLXJlbGF0ZWQKICAqIGludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZCBhbmQgQGRhdGFfc3RhdHVzIHVwZGF0ZWQgd2l0aCBhCiAgKiBzbmFwc2hvdCBvZiBTUi4gU2ltaWxhcmx5LCBiZWZvcmUgRVZFTlRfQ01EX0NPTVBMRVRFIGlzIHNldCwgdGhlCi0gKiBDTURSRFkgaW50ZXJ1cHQgbXVzdCBiZSBkaXNhYmxlZCBhbmQgQGNtZF9zdGF0dXMgdXBkYXRlZCB3aXRoIGEKKyAqIENNRFJEWSBpbnRlcnJ1cHQgbXVzdCBiZSBkaXNhYmxlZCBhbmQgQGNtZF9zdGF0dXMgdXBkYXRlZCB3aXRoIGEKICAqIHNuYXBzaG90IG9mIFNSLCBhbmQgYmVmb3JlIEVWRU5UX1hGRVJfQ09NUExFVEUgY2FuIGJlIHNldCwgdGhlCiAgKiBieXRlc194ZmVyZWQgZmllbGQgb2YgQGRhdGEgbXVzdCBiZSB3cml0dGVuLiBUaGlzIGlzIGVuc3VyZWQgYnkKICAqIHVzaW5nIGJhcnJpZXJzLgpAQCAtMTcyLDcgKzE3Miw3IEBACiAjZGVmaW5lIERXX01DSV9RVUlSS19JRE1BQ19EVE8JCQlCSVQoMCkKIC8qIGRlbGF5IG5lZWRlZCBiZXR3ZWVuIHJldHJpZXMgb24gc29tZSAyLjExYSBpbXBsZW1lbnRhdGlvbnMgKi8KICNkZWZpbmUgRFdfTUNJX1FVSVJLX1JFVFJZX0RFTEFZCQlCSVQoMSkKLS8qIEhpZ2ggU3BlZWQgQ2FwYWJsZSAtIFN1cHBvcnRzIEhTIGNhcmRzICh1cHRvIDUwTUh6KSAqLworLyogSGlnaCBTcGVlZCBDYXBhYmxlIC0gU3VwcG9ydHMgSFMgY2FyZHMgKHVwIHRvIDUwTUh6KSAqLwogI2RlZmluZSBEV19NQ0lfUVVJUktfSElHSFNQRUVECQkJQklUKDIpCiAvKiBVbnJlbGlhYmxlIGNhcmQgZGV0ZWN0aW9uICovCiAjZGVmaW5lIERXX01DSV9RVUlSS19CUk9LRU5fQ0FSRF9ERVRFQ1RJT04JQklUKDMpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21yb3V0ZTYuaCBiL2luY2x1ZGUvbGludXgvbXJvdXRlNi5oCmluZGV4IDlkMmRlYjIuLmEzNzU5Y2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbXJvdXRlNi5oCisrKyBiL2luY2x1ZGUvbGludXgvbXJvdXRlNi5oCkBAIC0yNDksNyArMjQ5LDcgQEAKICAqIFN0cnVjdHVyZSB1c2VkIHRvIGNvbW11bmljYXRlIGZyb20ga2VybmVsIHRvIG11bHRpY2FzdCByb3V0ZXIuCiAgKiBXZSdsbCBvdmVybGF5IHRoZSBzdHJ1Y3R1cmUgb250byBhbiBNTEQgaGVhZGVyIChub3QgYW4gSVB2NiBoZWRlciBsaWtlIGlnbXBtc2d7fQogICogdXNlZCBmb3IgSVB2NCBpbXBsZW1lbnRhdGlvbikuIFRoaXMgaXMgYmVjYXVzZSB0aGlzIHN0cnVjdHVyZSB3aWxsIGJlIHBhc3NlZCB2aWEgYW4KLSAqIElQdjYgcmF3IHNvY2tldCwgb24gd2ljaCBhbiBhcHBsaWNhdGlvbiB3aWxsIG9ubHkgcmVjZWl2ZXIgdGhlIHBheWxvYWQgaS5lIHRoZSBkYXRhIGFmdGVyCisgKiBJUHY2IHJhdyBzb2NrZXQsIG9uIHdoaWNoIGFuIGFwcGxpY2F0aW9uIHdpbGwgb25seSByZWNlaXZlciB0aGUgcGF5bG9hZCBpLmUgdGhlIGRhdGEgYWZ0ZXIKICAqIHRoZSBJUHY2IGhlYWRlciBhbmQgYWxsIHRoZSBleHRlbnNpb24gaGVhZGVycy4gKFNlZSBzZWN0aW9uIDMgb2YgUkZDIDM1NDIpCiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvY2ZpLmggYi9pbmNsdWRlL2xpbnV4L210ZC9jZmkuaAppbmRleCAwZDgyM2YyLi5kMjQ5MjU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9jZmkuaAorKysgYi9pbmNsdWRlL2xpbnV4L210ZC9jZmkuaApAQCAtMzA4LDcgKzMwOCw3IEBACiAJCiAJYWRkciA9IChjbWRfb2ZzICogdHlwZSkgKiBpbnRlcmxlYXZlOwogCi0JLyogTW9kaWZ5IHRoZSB1bmxvY2sgYWRkcmVzcyBpZiB3ZSBhcmUgaW4gY29tcGF0aWJsaXR5IG1vZGUuCisJLyogTW9kaWZ5IHRoZSB1bmxvY2sgYWRkcmVzcyBpZiB3ZSBhcmUgaW4gY29tcGF0aWJpbGl0eSBtb2RlLgogCSAqIEZvciAxNmJpdCBkZXZpY2VzIG9uIDggYml0IGJ1c3NlcwogCSAqIGFuZCAzMmJpdCBkZXZpY2VzIG9uIDE2IGJpdCBidXNzZXMKIAkgKiBzZXQgdGhlIGxvdyBiaXQgb2YgdGhlIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jZSBvZiB0aGUgYWRkcmVzcy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaCBiL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaAppbmRleCBhZTY3ZWY1Li5kNDQxOTI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCkBAIC00MTYsOSArNDE2LDkgQEAKICAqIEBzZWxlY3RfY2hpcDoJW1JFUExBQ0VBQkxFXSBzZWxlY3QgY2hpcCBucgogICogQGJsb2NrX2JhZDoJCVtSRVBMQUNFQUJMRV0gY2hlY2ssIGlmIHRoZSBibG9jayBpcyBiYWQKICAqIEBibG9ja19tYXJrYmFkOglbUkVQTEFDRUFCTEVdIG1hcmsgdGhlIGJsb2NrIGJhZAotICogQGNtZF9jdHJsOgkJW0JPQVJEU1BFQ0lGSUNdIGhhcmR3YXJlc3BlY2lmaWMgZnVudGlvbiBmb3IgY29udHJvbGxpbmcKKyAqIEBjbWRfY3RybDoJCVtCT0FSRFNQRUNJRklDXSBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciBjb250cm9sbGluZwogICoJCQlBTEUvQ0xFL25DRS4gQWxzbyB1c2VkIHRvIHdyaXRlIGNvbW1hbmQgYW5kIGFkZHJlc3MKLSAqIEBpbml0X3NpemU6CQlbQk9BUkRTUEVDSUZJQ10gaGFyZHdhcmVzcGVjaWZpYyBmdW50aW9uIGZvciBzZXR0aW5nCisgKiBAaW5pdF9zaXplOgkJW0JPQVJEU1BFQ0lGSUNdIGhhcmR3YXJlc3BlY2lmaWMgZnVuY3Rpb24gZm9yIHNldHRpbmcKICAqCQkJbXRkLT5vb2JzaXplLCBtdGQtPndyaXRlc2l6ZSBhbmQgc28gb24uCiAgKgkJCUBpZF9kYXRhIGNvbnRhaW5zIHRoZSA4IGJ5dGVzIHZhbHVlcyBvZiBOQU5EX0NNRF9SRUFESUQuCiAgKgkJCVJldHVybiB3aXRoIHRoZSBidXMgd2lkdGguCkBAIC00MzcsNyArNDM3LDcgQEAKICAqIEBlcmFzZV9jbWQ6CQlbSU5URVJOXSBlcmFzZSBjb21tYW5kIHdyaXRlIGZ1bmN0aW9uLCBzZWxlY3RhYmxlIGR1ZQogICoJCQl0byBBTkQgc3VwcG9ydC4KICAqIEBzY2FuX2JidDoJCVtSRVBMQUNFQUJMRV0gZnVuY3Rpb24gdG8gc2NhbiBiYWQgYmxvY2sgdGFibGUKLSAqIEBjaGlwX2RlbGF5OgkJW0JPQVJEU1BFQ0lGSUNdIGNoaXAgZGVwZW5kZW50IGRlbGF5IGZvciB0cmFuc2ZlcmluZworICogQGNoaXBfZGVsYXk6CQlbQk9BUkRTUEVDSUZJQ10gY2hpcCBkZXBlbmRlbnQgZGVsYXkgZm9yIHRyYW5zZmVycmluZwogICoJCQlkYXRhIGZyb20gYXJyYXkgdG8gcmVhZCByZWdzICh0UikuCiAgKiBAc3RhdGU6CQlbSU5URVJOXSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgTkFORCBkZXZpY2UKICAqIEBvb2JfcG9pOgkJcG9pc29uIHZhbHVlIGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQveGlwLmggYi9pbmNsdWRlL2xpbnV4L210ZC94aXAuaAppbmRleCAzNmVmY2JhLi5hYmVkNGRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L210ZC94aXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L210ZC94aXAuaApAQCAtNTEsNyArNTEsNyBAQAogICogCXJldHVybiBpbiB1c2VjcyB0aGUgZWxhcHNlZCB0aW1lYmV0d2VlbiBub3cgYW5kIHRoZSByZWZlcmVuY2UgeCBhcwogICogCXJldHVybmVkIGJ5IHhpcF9jdXJydGltZSgpLgogICoKLSAqIAlub3RlIDE6IGNvbnZlcnRpb24gdG8gdXNlYyBjYW4gYmUgYXBwcm94aW1hdGVkLCBhcyBsb25nIGFzIHRoZQorICogCW5vdGUgMTogY29udmVyc2lvbiB0byB1c2VjIGNhbiBiZSBhcHByb3hpbWF0ZWQsIGFzIGxvbmcgYXMgdGhlCiAgKiAJCXJldHVybmVkIHZhbHVlIGlzIDw9IHRoZSByZWFsIGVsYXBzZWQgdGltZS4KICAqIAlub3RlIDI6IHRoaXMgc2hvdWxkIGJlIGFibGUgdG8gY29wZSB3aXRoIGEgZmV3IHNlY29uZHMgd2l0aG91dAogICogCQlvdmVyZmxvd2luZy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci5oCmluZGV4IGVlZWMwMGEuLjdmYTk1ZGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaApAQCAtMjcwLDcgKzI3MCw4IEBACiAJCQkJCSAgICB1bnNpZ25lZCBpbnQgZGF0YW9mZiwKIAkJCQkJICAgIHVuc2lnbmVkIGludCBsZW4sCiAJCQkJCSAgICB1X2ludDhfdCBwcm90b2NvbCk7Ci0JaW50CQkoKnJvdXRlKShzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LCBzdHJ1Y3QgZmxvd2kgKmZsKTsKKwlpbnQJCSgqcm91dGUpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGRzdF9lbnRyeSAqKmRzdCwKKwkJCQkgc3RydWN0IGZsb3dpICpmbCwgYm9vbCBzdHJpY3QpOwogCXZvaWQJCSgqc2F2ZXJvdXRlKShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgc3RydWN0IG5mX3F1ZXVlX2VudHJ5ICplbnRyeSk7CiAJaW50CQkoKnJlcm91dGUpKHN0cnVjdCBza19idWZmICpza2IsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXQuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oCmluZGV4IGVjMzMzZDguLjVhMjYyZTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oCisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldC5oCkBAIC0yOTMsNyArMjkzLDcgQEAKIAkvKiBMb2NrIHByb3RlY3RpbmcgdGhlIHNldCBkYXRhICovCiAJcndsb2NrX3QgbG9jazsKIAkvKiBSZWZlcmVuY2VzIHRvIHRoZSBzZXQgKi8KLQlhdG9taWNfdCByZWY7CisJdTMyIHJlZjsKIAkvKiBUaGUgY29yZSBzZXQgdHlwZSAqLwogCXN0cnVjdCBpcF9zZXRfdHlwZSAqdHlwZTsKIAkvKiBUaGUgdHlwZSB2YXJpYW50IGRvaW5nIHRoZSByZWFsIGpvYiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2FoYXNoLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYWhhc2guaAppbmRleCBlYzlkOWJlLi5hMDE5NmFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYWhhc2guaAorKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYWhhc2guaApAQCAtNTE1LDggKzUxNSw3IEBACiAJaWYgKGgtPm5ldG1hc2sgIT0gSE9TVF9NQVNLKQogCQlOTEFfUFVUX1U4KHNrYiwgSVBTRVRfQVRUUl9ORVRNQVNLLCBoLT5uZXRtYXNrKTsKICNlbmRpZgotCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX1JFRkVSRU5DRVMsCi0JCSAgICAgIGh0b25sKGF0b21pY19yZWFkKCZzZXQtPnJlZikgLSAxKSk7CisJTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfUkVGRVJFTkNFUywgaHRvbmwoc2V0LT5yZWYgLSAxKSk7CiAJTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfTUVNU0laRSwgaHRvbmwobWVtc2l6ZSkpOwogCWlmICh3aXRoX3RpbWVvdXQoaC0+dGltZW91dCkpCiAJCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX1RJTUVPVVQsIGh0b25sKGgtPnRpbWVvdXQpKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19ncmUuaCBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19ncmUuaAppbmRleCAyYTEwZWZkLi42YTA2NjRjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fZ3JlLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX2dyZS5oCkBAIC02MCw3ICs2MCw3IEBACiAJX19iZTE2IHBheWxvYWRfbGVuOwkvKiBzaXplIG9mIHBwcCBwYXlsb2FkLCBub3QgaW5jLiBncmUgaGVhZGVyICovCiAJX19iZTE2IGNhbGxfaWQ7CQkvKiBwZWVyJ3MgY2FsbF9pZCBmb3IgdGhpcyBzZXNzaW9uICovCiAJX19iZTMyIHNlcTsJCS8qIHNlcXVlbmNlIG51bWJlci4gIFByZXNlbnQgaWYgUz09MSAqLwotCV9fYmUzMiBhY2s7CQkvKiBzZXEgbnVtYmVyIG9mIGhpZ2hlc3QgcGFja2V0IHJlY2lldmVkIGJ5ICovCisJX19iZTMyIGFjazsJCS8qIHNlcSBudW1iZXIgb2YgaGlnaGVzdCBwYWNrZXQgcmVjZWl2ZWQgYnkgKi8KIAkJCQkvKiAgc2VuZGVyIGluIHRoaXMgc2Vzc2lvbiAqLwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidGFibGVzLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvZWJ0YWJsZXMuaAppbmRleCAxYzZmMGM1Li44Nzk3ZWQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvZWJ0YWJsZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvZWJ0YWJsZXMuaApAQCAtOTIsNyArOTIsNyBAQAogCiAvKiBUaGlzIGlzIGEgaGFjayB0byBtYWtlIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIGFuIGVidF9lbnRyeSBzdHJ1Y3QgYW5kIGFuCiAgKiBlYnRfZW50cmllcyBzdHJ1Y3Qgd2hlbiB0cmF2ZXJzaW5nIHRoZSBlbnRyaWVzIGZyb20gc3RhcnQgdG8gZW5kLgotICogVXNpbmcgdGhpcyBzaW1wbGlmaWVzIHRoZSBjb2RlIGFsb3QsIHdoaWxlIHN0aWxsIGJlaW5nIGFibGUgdG8gdXNlCisgKiBVc2luZyB0aGlzIHNpbXBsaWZpZXMgdGhlIGNvZGUgYSBsb3QsIHdoaWxlIHN0aWxsIGJlaW5nIGFibGUgdG8gdXNlCiAgKiBlYnRfZW50cmllcy4KICAqIENvbnRyYXJ5LCBpcHRhYmxlcyBkb2Vzbid0IHVzZSBzb21ldGhpbmcgbGlrZSBlYnRfZW50cmllcyBhbmQgdGhlcmVmb3JlIHVzZXMKICAqIGRpZmZlcmVudCB0ZWNobmlxdWVzIGZvciBuYW1pbmcgdGhlIHBvbGljeSBhbmQgc3VjaC4gU28sIGlwdGFibGVzIGRvZXNuJ3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmZzNC5oIGIvaW5jbHVkZS9saW51eC9uZnM0LmgKaW5kZXggYjUyOGY2ZC4uMTc4ZmFmZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZnM0LmgKKysrIGIvaW5jbHVkZS9saW51eC9uZnM0LmgKQEAgLTM1OSw3ICszNTksNyBAQAogCQkJCQkJLyogRXJyb3IgMTAwNzMgaXMgdW51c2VkLiAqLwogCU5GUzRFUlJfQ0xJRU5USURfQlVTWQk9IDEwMDc0LAkvKiBjbGllbnRpZCBoYXMgc3RhdGUgKi8KIAlORlM0RVJSX1BORlNfSU9fSE9MRQk9IDEwMDc1LAkvKiBJTyB0byBfU1BBUlNFIGZpbGUgaG9sZSAqLwotCU5GUzRFUlJfU0VRX0ZBTFNFX1JFVFJZCT0gMTAwNzYsCS8qIHJldHJ5IG5vdCBvcmlnaW9uYWwgKi8KKwlORlM0RVJSX1NFUV9GQUxTRV9SRVRSWQk9IDEwMDc2LAkvKiByZXRyeSBub3Qgb3JpZ2luYWwgKi8KIAlORlM0RVJSX0JBRF9ISUdIX1NMT1QJPSAxMDA3NywJLyogc2VxdWVuY2UgYXJnIGJhZCAqLwogCU5GUzRFUlJfREVBRFNFU1NJT04JPSAxMDA3OCwJLyogcGVyc2lzdGVudCBzZXNzaW9uIGRlYWQgKi8KIAlORlM0RVJSX0VOQ1JfQUxHX1VOU1VQUCA9IDEwMDc5LAkvKiBTU1YgYWxnIG1pc21hdGNoICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25mc2QvZXhwb3J0LmggYi9pbmNsdWRlL2xpbnV4L25mc2QvZXhwb3J0LmgKaW5kZXggYmQzMTYxNS4uODQwNThlYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZnNkL2V4cG9ydC5oCisrKyBiL2luY2x1ZGUvbGludXgvbmZzZC9leHBvcnQuaApAQCAtODAsNyArODAsNyBAQAogCiAvKgogICogV2Uga2VlcCBhbiBhcnJheSBvZiBwc2V1ZG9mbGF2b3JzIHdpdGggdGhlIGV4cG9ydCwgaW4gb3JkZXIgZnJvbSBtb3N0Ci0gKiB0byBsZWFzdCBwcmVmZXJyZWQuICBGb3IgdGhlIGZvcnNlZWFibGUgZnV0dXJlLCB3ZSBkb24ndCBleHBlY3QgbW9yZQorICogdG8gbGVhc3QgcHJlZmVycmVkLiAgRm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUsIHdlIGRvbid0IGV4cGVjdCBtb3JlCiAgKiB0aGFuIHRoZSBlaWdodCBwc2V1ZG9mbGF2b3JzIG51bGwsIHVuaXgsIGtyYjUsIGtyYjVpLCBrcmI1cCwgc2twbTMsCiAgKiBzcGttM2ksIGFuZCBzcGttM3AgKGFuZCB1c2luZyBhbGwgOCBhdCBvbmNlIHNob3VsZCBiZSByYXJlKS4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZnNkL25mc2ZoLmggYi9pbmNsdWRlL2xpbnV4L25mc2QvbmZzZmguaAppbmRleCA4MGQ1NWJiLi5mNzZkODBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25mc2QvbmZzZmguaAorKysgYi9pbmNsdWRlL2xpbnV4L25mc2QvbmZzZmguaApAQCAtNDksNyArNDksNyBAQAogICoKICAqIFRoZSBhdXRoX3R5cGUgZmllbGQgc3BlY2lmaWVzIGhvdyB0aGUgZmlsZWhhbmRsZSBjYW4gYmUgYXV0aGVudGljYXRlZAogICogVGhpcyBtaWdodCBhbGxvdyBhIGZpbGUgdG8gYmUgY29uZmlybWVkIHRvIGJlIGluIGEgd3JpdGFibGUgcGFydCBvZiBhCi0gKiBmaWxldHJlZSB3aXRob3V0IGNoZWNraW5nIHRoZSBwYXRoIGZyb20gaXQgdXB0byB0aGUgcm9vdC4KKyAqIGZpbGV0cmVlIHdpdGhvdXQgY2hlY2tpbmcgdGhlIHBhdGggZnJvbSBpdCB1cCB0byB0aGUgcm9vdC4KICAqIEN1cnJlbnQgdmFsdWVzOgogICogICAgIDAgIC0gTm8gYXV0aGVudGljYXRpb24uICBmYl9hdXRoIGlzIDAgYnl0ZXMgbG9uZwogICogUG9zc2libGUgZnV0dXJlIHZhbHVlczoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS9saW51eC9ubDgwMjExLmgKaW5kZXggMzAwMjIxOC4uYmJmYTEwOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ubDgwMjExLmgKKysrIGIvaW5jbHVkZS9saW51eC9ubDgwMjExLmgKQEAgLTQxNCw3ICs0MTQsNyBAQAogICogQF9fTkw4MDIxMV9DTURfQUZURVJfTEFTVDogaW50ZXJuYWwgdXNlCiAgKi8KIGVudW0gbmw4MDIxMV9jb21tYW5kcyB7Ci0vKiBkb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9yIGFkZCBhbnl0aGluZyBpbmJldHdlZW4sIHRoaXMgaXMgQUJJISAqLworLyogZG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBvciBhZGQgYW55dGhpbmcgYmV0d2VlbiwgdGhpcyBpcyBBQkkhICovCiAJTkw4MDIxMV9DTURfVU5TUEVDLAogCiAJTkw4MDIxMV9DTURfR0VUX1dJUEhZLAkJLyogY2FuIGR1bXAgKi8KQEAgLTg2MCw3ICs4NjAsNyBAQAogICoJVGhpcyBjYW4gYmUgdXNlZCB0byBtYXNrIG91dCBhbnRlbm5hcyB3aGljaCBhcmUgbm90IGF0dGFjaGVkIG9yIHNob3VsZAogICoJbm90IGJlIHVzZWQgZm9yIHJlY2VpdmluZy4gSWYgYW4gYW50ZW5uYSBpcyBub3Qgc2VsZWN0ZWQgaW4gdGhpcyBiaXRtYXAKICAqCXRoZSBoYXJkd2FyZSBzaG91bGQgbm90IGJlIGNvbmZpZ3VyZWQgdG8gcmVjZWl2ZSBvbiB0aGlzIGFudGVubmEuCi0gKglGb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0b24gc2VlIEBOTDgwMjExX0FUVFJfV0lQSFlfQU5URU5OQV9UWC4KKyAqCUZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gc2VlIEBOTDgwMjExX0FUVFJfV0lQSFlfQU5URU5OQV9UWC4KICAqCiAgKiBATkw4MDIxMV9BVFRSX1dJUEhZX0FOVEVOTkFfQVZBSUxfVFg6IEJpdG1hcCBvZiBhbnRlbm5hcyB3aGljaCBhcmUgYXZhaWxhYmxlCiAgKglmb3IgY29uZmlndXJhdGlvbiBhcyBUWCBhbnRlbm5hcyB2aWEgdGhlIGFib3ZlIHBhcmFtZXRlcnMuCkBAIC04OTEsNyArODkxLDcgQEAKICAqIEBfX05MODAyMTFfQVRUUl9BRlRFUl9MQVNUOiBpbnRlcm5hbCB1c2UKICAqLwogZW51bSBubDgwMjExX2F0dHJzIHsKLS8qIGRvbid0IGNoYW5nZSB0aGUgb3JkZXIgb3IgYWRkIGFueXRoaW5nIGluYmV0d2VlbiwgdGhpcyBpcyBBQkkhICovCisvKiBkb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9yIGFkZCBhbnl0aGluZyBiZXR3ZWVuLCB0aGlzIGlzIEFCSSEgKi8KIAlOTDgwMjExX0FUVFJfVU5TUEVDLAogCiAJTkw4MDIxMV9BVFRSX1dJUEhZLApAQCAtMTQxOSw3ICsxNDE5LDcgQEAKICAqIAk4MDIuMTEgY291bnRyeSBpbmZvcm1hdGlvbiBlbGVtZW50IHdpdGggcmVndWxhdG9yeSBpbmZvcm1hdGlvbiBpdAogICogCXRoaW5rcyB3ZSBzaG91bGQgY29uc2lkZXIuIGNmZzgwMjExIG9ubHkgcHJvY2Vzc2VzIHRoZSBjb3VudHJ5CiAgKgljb2RlIGZyb20gdGhlIElFLCBhbmQgcmVsaWVzIG9uIHRoZSByZWd1bGF0b3J5IGRvbWFpbiBpbmZvcm1hdGlvbgotICoJc3RydWN0dXJlIHBhc2VkIGJ5IHVzZXJzcGFjZSAoQ1JEQSkgZnJvbSBvdXIgd2lyZWxlc3MtcmVnZGIuCisgKglzdHJ1Y3R1cmUgcGFzc2VkIGJ5IHVzZXJzcGFjZSAoQ1JEQSkgZnJvbSBvdXIgd2lyZWxlc3MtcmVnZGIuCiAgKglJZiBhIGNoYW5uZWwgaXMgZW5hYmxlZCBidXQgdGhlIGNvdW50cnkgY29kZSBpbmRpY2F0ZXMgaXQgc2hvdWxkCiAgKgliZSBkaXNhYmxlZCB3ZSBkaXNhYmxlIHRoZSBjaGFubmVsIGFuZCByZS1lbmFibGUgaXQgdXBvbiBkaXNhc3NvY2lhdGlvbi4KICAqLwpAQCAtMTU5OCw3ICsxNTk4LDcgQEAKICAqIEBOTDgwMjExX01FU0hDT05GX1JFVFJZX1RJTUVPVVQ6IHNwZWNpZmllcyB0aGUgaW5pdGlhbCByZXRyeSB0aW1lb3V0IGluCiAgKiBtaWxsaXNlY29uZCB1bml0cywgdXNlZCBieSB0aGUgUGVlciBMaW5rIE9wZW4gbWVzc2FnZQogICoKLSAqIEBOTDgwMjExX01FU0hDT05GX0NPTkZJUk1fVElNRU9VVDogc3BlY2lmaWVzIHRoZSBpbml0YWwgY29uZmlybSB0aW1lb3V0LCBpbgorICogQE5MODAyMTFfTUVTSENPTkZfQ09ORklSTV9USU1FT1VUOiBzcGVjaWZpZXMgdGhlIGluaXRpYWwgY29uZmlybSB0aW1lb3V0LCBpbgogICogbWlsbGlzZWNvbmQgdW5pdHMsIHVzZWQgYnkgdGhlIHBlZXIgbGluayBtYW5hZ2VtZW50IHRvIGNsb3NlIGEgcGVlciBsaW5rCiAgKgogICogQE5MODAyMTFfTUVTSENPTkZfSE9MRElOR19USU1FT1VUOiBzcGVjaWZpZXMgdGhlIGhvbGRpbmcgdGltZW91dCwgaW4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaAppbmRleCAyMDI2ZjllLi42MjFkZmExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9ub3RpZmllci5oCkBAIC0yMzcsNyArMjM3LDcgQEAKIAkJCQkJKiBlbmFibGluZyBpbnRlcnJ1cHRzLiBNdXN0IG5vdCBzbGVlcCwKIAkJCQkJKiBtdXN0IG5vdCBmYWlsICovCiAKLS8qIFVzZWQgZm9yIENQVSBob3RwbHVnIGV2ZW50cyBvY2N1cmluZyB3aGlsZSB0YXNrcyBhcmUgZnJvemVuIGR1ZSB0byBhIHN1c3BlbmQKKy8qIFVzZWQgZm9yIENQVSBob3RwbHVnIGV2ZW50cyBvY2N1cnJpbmcgd2hpbGUgdGFza3MgYXJlIGZyb3plbiBkdWUgdG8gYSBzdXNwZW5kCiAgKiBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MKICAqLwogI2RlZmluZSBDUFVfVEFTS1NfRlJPWkVOCTB4MDAxMApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9vbWFwM2lzcC5oIGIvaW5jbHVkZS9saW51eC9vbWFwM2lzcC5oCmluZGV4IDE1MDgyMmIuLmI2MTExZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvb21hcDNpc3AuaAorKysgYi9pbmNsdWRlL2xpbnV4L29tYXAzaXNwLmgKQEAgLTI1MCw3ICsyNTAsNyBAQAogLyogQ29udGFpbnMgdGhlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgSG9yaXpvbnRhbCBNZWRpYW4gRmlsdGVyICovCiBzdHJ1Y3Qgb21hcDNpc3BfaDNhX2FmX2htZiB7CiAJX191OCBlbmFibGU7CS8qIFN0YXR1cyBvZiBIb3Jpem9udGFsIE1lZGlhbiBGaWx0ZXIgKi8KLQlfX3U4IHRocmVzaG9sZDsJLyogVGhyZXNoaG9sZCBWYWx1ZSBmb3IgSG9yaXpvbnRhbCBNZWRpYW4gRmlsdGVyICovCisJX191OCB0aHJlc2hvbGQ7CS8qIFRocmVzaG9sZCBWYWx1ZSBmb3IgSG9yaXpvbnRhbCBNZWRpYW4gRmlsdGVyICovCiB9OwogCiAvKiBDb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBJSVIgRmlsdGVycyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wYWdlX2Nncm91cC5oIGIvaW5jbHVkZS9saW51eC9wYWdlX2Nncm91cC5oCmluZGV4IGY1ZGUyMWQuLjk2MWVjYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGFnZV9jZ3JvdXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BhZ2VfY2dyb3VwLmgKQEAgLTEzOCw3ICsxMzgsNyBAQAogCiAjZGVmaW5lIFBDR19BUlJBWUlEX09GRlNFVAkoQklUU19QRVJfTE9ORyAtIFBDR19BUlJBWUlEX1dJRFRIKQogLyoKLSAqIFplcm8gdGhlIHNoaWZ0IGNvdW50IGZvciBub24tZXhpc3RhbnQgZmllbGRzLCB0byBwcmV2ZW50IGNvbXBpbGVyCisgKiBaZXJvIHRoZSBzaGlmdCBjb3VudCBmb3Igbm9uLWV4aXN0ZW50IGZpZWxkcywgdG8gcHJldmVudCBjb21waWxlcgogICogd2FybmluZ3MgYW5kIGVuc3VyZSByZWZlcmVuY2VzIGFyZSBvcHRpbWl6ZWQgYXdheS4KICAqLwogI2RlZmluZSBQQ0dfQVJSQVlJRF9TSElGVAkoUENHX0FSUkFZSURfT0ZGU0VUICogKFBDR19BUlJBWUlEX1dJRFRIICE9IDApKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2lfcmVncy5oIGIvaW5jbHVkZS9saW51eC9wY2lfcmVncy5oCmluZGV4IDViN2U2YjEuLmJlMDEzODAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGNpX3JlZ3MuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BjaV9yZWdzLmgKQEAgLTIyMyw3ICsyMjMsNyBAQAogI2RlZmluZSAgUENJX1BNX0NBUF9QTUVfQ0xPQ0sJMHgwMDA4CS8qIFBNRSBjbG9jayByZXF1aXJlZCAqLwogI2RlZmluZSAgUENJX1BNX0NBUF9SRVNFUlZFRCAgICAweDAwMTAgIC8qIFJlc2VydmVkIGZpZWxkICovCiAjZGVmaW5lICBQQ0lfUE1fQ0FQX0RTSQkJMHgwMDIwCS8qIERldmljZSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiAqLwotI2RlZmluZSAgUENJX1BNX0NBUF9BVVhfUE9XRVIJMHgwMUMwCS8qIEF1eGlsbGlhcnkgcG93ZXIgc3VwcG9ydCBtYXNrICovCisjZGVmaW5lICBQQ0lfUE1fQ0FQX0FVWF9QT1dFUgkweDAxQzAJLyogQXV4aWxpYXJ5IHBvd2VyIHN1cHBvcnQgbWFzayAqLwogI2RlZmluZSAgUENJX1BNX0NBUF9EMQkJMHgwMjAwCS8qIEQxIHBvd2VyIHN0YXRlIHN1cHBvcnQgKi8KICNkZWZpbmUgIFBDSV9QTV9DQVBfRDIJCTB4MDQwMAkvKiBEMiBwb3dlciBzdGF0ZSBzdXBwb3J0ICovCiAjZGVmaW5lICBQQ0lfUE1fQ0FQX1BNRQkJMHgwODAwCS8qIFBNRSBwaW4gc3VwcG9ydGVkICovCkBAIC00MzUsNyArNDM1LDcgQEAKICNkZWZpbmUgIFBDSV9FWFBfTE5LQ0FQX0wwU0VMCTB4MDAwMDcwMDAgLyogTDBzIEV4aXQgTGF0ZW5jeSAqLwogI2RlZmluZSAgUENJX0VYUF9MTktDQVBfTDFFTAkweDAwMDM4MDAwIC8qIEwxIEV4aXQgTGF0ZW5jeSAqLwogI2RlZmluZSAgUENJX0VYUF9MTktDQVBfQ0xLUE0JMHgwMDA0MDAwMCAvKiBMMSBDbG9jayBQb3dlciBNYW5hZ2VtZW50ICovCi0jZGVmaW5lICBQQ0lfRVhQX0xOS0NBUF9TREVSQwkweDAwMDgwMDAwIC8qIFN1cHJpc2UgRG93biBFcnJvciBSZXBvcnRpbmcgQ2FwYWJsZSAqLworI2RlZmluZSAgUENJX0VYUF9MTktDQVBfU0RFUkMJMHgwMDA4MDAwMCAvKiBTdXJwcmlzZSBEb3duIEVycm9yIFJlcG9ydGluZyBDYXBhYmxlICovCiAjZGVmaW5lICBQQ0lfRVhQX0xOS0NBUF9ETExMQVJDCTB4MDAxMDAwMDAgLyogRGF0YSBMaW5rIExheWVyIExpbmsgQWN0aXZlIFJlcG9ydGluZyBDYXBhYmxlICovCiAjZGVmaW5lICBQQ0lfRVhQX0xOS0NBUF9MQk5DCTB4MDAyMDAwMDAgLyogTGluayBCYW5kd2lkdGggTm90aWZpY2F0aW9uIENhcGFiaWxpdHkgKi8KICNkZWZpbmUgIFBDSV9FWFBfTE5LQ0FQX1BOCTB4ZmYwMDAwMDAgLyogUG9ydCBOdW1iZXIgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyZl9ldmVudC5oIGIvaW5jbHVkZS9saW51eC9wZXJmX2V2ZW50LmgKaW5kZXggMDRkNzVhOC4uZWU5ZjFlNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJmX2V2ZW50LmgKKysrIGIvaW5jbHVkZS9saW51eC9wZXJmX2V2ZW50LmgKQEAgLTY2Miw3ICs2NjIsNyBAQAogCWludCAgKCpjb21taXRfdHhuKQkoc3RydWN0IHBtdSAqcG11KTsgLyogb3B0aW9uYWwgKi8KIAkvKgogCSAqIFdpbGwgY2FuY2VsIHRoZSB0cmFuc2FjdGlvbiwgYXNzdW1lcyAtPmRlbCgpIGlzIGNhbGxlZAotCSAqIGZvciBlYWNoIHN1Y2Nlc3NmdWxsIC0+YWRkKCkgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi4KKwkgKiBmb3IgZWFjaCBzdWNjZXNzZnVsIC0+YWRkKCkgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi4KIAkgKi8KIAl2b2lkICgqY2FuY2VsX3R4bikJKHN0cnVjdCBwbXUgKnBtdSk7IC8qIG9wdGlvbmFsICovCiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waWQuaCBiL2luY2x1ZGUvbGludXgvcGlkLmgKaW5kZXggZWZjZWRhMC4uMzFhZmI3ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9waWQuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BpZC5oCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBxdWlja2x5IGZyb20gdGhlIG51bWVyaWMgcGlkIHZhbHVlLiAgVGhlIGF0dGFjaGVkIHByb2Nlc3NlcyBtYXkgYmUKICAqIHF1aWNrbHkgYWNjZXNzZWQgYnkgZm9sbG93aW5nIHBvaW50ZXJzIGZyb20gc3RydWN0IHBpZC4KICAqCi0gKiBTdG9yaW5nIHBpZF90IHZhbHVlcyBpbiB0aGUga2VybmVsIGFuZCByZWZlcmluZyB0byB0aGVtIGxhdGVyIGhhcyBhCisgKiBTdG9yaW5nIHBpZF90IHZhbHVlcyBpbiB0aGUga2VybmVsIGFuZCByZWZlcnJpbmcgdG8gdGhlbSBsYXRlciBoYXMgYQogICogcHJvYmxlbS4gIFRoZSBwcm9jZXNzIG9yaWdpbmFsbHkgd2l0aCB0aGF0IHBpZCBtYXkgaGF2ZSBleGl0ZWQgYW5kIHRoZQogICogcGlkIGFsbG9jYXRvciB3cmFwcGVkLCBhbmQgYW5vdGhlciBwcm9jZXNzIGNvdWxkIGhhdmUgY29tZSBhbG9uZwogICogYW5kIGJlZW4gYXNzaWduZWQgdGhhdCBwaWQuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9wa3Rfc2NoZWQuaAppbmRleCBiMTAzMmEzLi4zYTAyZTAyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvcGt0X3NjaGVkLmgKQEAgLTIyMyw3ICsyMjMsNyBAQAogCV9fdTMyCQlsaW1pdDsgICAgICAgIC8qIEhBUkQgbWF4aW1hbCBxdWV1ZSBsZW5ndGggKGJ5dGVzKSAgICAqLwogCV9fdTMyCQlxdGhfbWluOyAgICAgIC8qIE1pbiBhdmVyYWdlIGxlbmd0aCB0aHJlc2hvbGQgKGJ5dGVzKSAqLwogCV9fdTMyCQlxdGhfbWF4OyAgICAgIC8qIE1heCBhdmVyYWdlIGxlbmd0aCB0aHJlc2hvbGQgKGJ5dGVzKSAqLwotCV9fdTMyCQlEUDsgICAgICAgICAgIC8qIHVwdG8gMl4zMiBEUHMgKi8KKwlfX3UzMgkJRFA7ICAgICAgICAgICAvKiB1cCB0byAyXjMyIERQcyAqLwogCV9fdTMyCQliYWNrbG9nOwogCV9fdTMyCQlxYXZlOwogCV9fdTMyCQlmb3JjZWQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BvbGwuaCBiL2luY2x1ZGUvbGludXgvcG9sbC5oCmluZGV4IDFhMmNjZDYuLmNmNDAwMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcG9sbC5oCisrKyBiL2luY2x1ZGUvbGludXgvcG9sbC5oCkBAIC04Miw3ICs4Miw3IEBACiB9CiAKIC8qCi0gKiBTY2FsZWFibGUgdmVyc2lvbiBvZiB0aGUgZmRfc2V0LgorICogU2NhbGFibGUgdmVyc2lvbiBvZiB0aGUgZmRfc2V0LgogICovCiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCBiL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaAppbmRleCBhZjdjMzZhLi5hM2JmYmRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgKKysrIGIvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oCkBAIC0yOSw3ICsyOSw3IEBACiAJcHJlZmV0Y2h3KHgpCS0gcHJlZmV0Y2hlcyB0aGUgY2FjaGVsaW5lIGF0ICJ4IiBmb3Igd3JpdGUKIAlzcGluX2xvY2tfcHJlZmV0Y2goeCkgLSBwcmVmZXRjaGVzIHRoZSBzcGlubG9jayAqeCBmb3IgdGFraW5nCiAJCi0JdGhlcmUgaXMgYWxzbyBQUkVGRVRDSF9TVFJJREUgd2hpY2ggaXMgdGhlIGFyY2hpdGVjdXJlLXByZWZlcmVkIAorCXRoZXJlIGlzIGFsc28gUFJFRkVUQ0hfU1RSSURFIHdoaWNoIGlzIHRoZSBhcmNoaXRlY3VyZS1wcmVmZXJyZWQgCiAJImxvb2thaGVhZCIgc2l6ZSBmb3IgcHJlZmV0Y2hpbmcgc3RyZWFtZWQgb3BlcmF0aW9ucy4KIAkKICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3B4YTJ4eF9zc3AuaCBiL2luY2x1ZGUvbGludXgvcHhhMnh4X3NzcC5oCmluZGV4IDJmNjkxZTQuLjQ0ODM1ZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcHhhMnh4X3NzcC5oCisrKyBiL2luY2x1ZGUvbGludXgvcHhhMnh4X3NzcC5oCkBAIC0xMjIsNyArMTIyLDcgQEAKICNkZWZpbmUgU1NDUjFfVFNSRQkJKDEgPDwgMjEpCS8qIFRyYW5zbWl0IFNlcnZpY2UgUmVxdWVzdCBFbmFibGUgKi8KICNkZWZpbmUgU1NDUjFfUlNSRQkJKDEgPDwgMjApCS8qIFJlY2VpdmUgU2VydmljZSBSZXF1ZXN0IEVuYWJsZSAqLwogI2RlZmluZSBTU0NSMV9USU5URQkJKDEgPDwgMTkpCS8qIFJlY2VpdmVyIFRpbWUtb3V0IEludGVycnVwdCBlbmFibGUgKi8KLSNkZWZpbmUgU1NDUjFfUElOVEUJCSgxIDw8IDE4KQkvKiBQZXJpcGhlcmFsIFRyYWlsaW5nIEJ5dGUgSW50ZXJ1cHQgRW5hYmxlICovCisjZGVmaW5lIFNTQ1IxX1BJTlRFCQkoMSA8PCAxOCkJLyogUGVyaXBoZXJhbCBUcmFpbGluZyBCeXRlIEludGVycnVwdCBFbmFibGUgKi8KICNkZWZpbmUgU1NDUjFfSUZTCQkoMSA8PCAxNikJLyogSW52ZXJ0IEZyYW1lIFNpZ25hbCAqLwogI2RlZmluZSBTU0NSMV9TVFJGCQkoMSA8PCAxNSkJLyogU2VsZWN0IEZJRk8gb3IgRUZXUiAqLwogI2RlZmluZSBTU0NSMV9FRldSCQkoMSA8PCAxNCkJLyogRW5hYmxlIEZJRk8gV3JpdGUvUmVhZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yYWlkL21kX3AuaCBiL2luY2x1ZGUvbGludXgvcmFpZC9tZF9wLmgKaW5kZXggZmZhMmVmYi4uNzVjYmY0ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yYWlkL21kX3AuaAorKysgYi9pbmNsdWRlL2xpbnV4L3JhaWQvbWRfcC5oCkBAIC0yNTEsNyArMjUxLDcgQEAKIAlfX2xlNjQJdXRpbWU7CQkvKiA0MCBiaXRzIHNlY29uZCwgMjQgYnRlcyBtaWNyb3NlY29uZHMgKi8KIAlfX2xlNjQJZXZlbnRzOwkJLyogaW5jcmVtZW50ZWQgd2hlbiBzdXBlcmJsb2NrIHVwZGF0ZWQgKi8KIAlfX2xlNjQJcmVzeW5jX29mZnNldDsJLyogZGF0YSBiZWZvcmUgdGhpcyBvZmZzZXQgKGZyb20gZGF0YV9vZmZzZXQpIGtub3duIHRvIGJlIGluIHN5bmMgKi8KLQlfX2xlMzIJc2JfY3N1bTsJLyogY2hlY2tzdW0gdXB0byBkZXZzW21heF9kZXZdICovCisJX19sZTMyCXNiX2NzdW07CS8qIGNoZWNrc3VtIHVwIHRvIGRldnNbbWF4X2Rldl0gKi8KIAlfX2xlMzIJbWF4X2RldjsJLyogc2l6ZSBvZiBkZXZzW10gYXJyYXkgdG8gY29uc2lkZXIgKi8KIAlfX3U4CXBhZDNbNjQtMzJdOwkvKiBzZXQgdG8gMCB3aGVuIHdyaXRpbmcgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mcy5oIGIvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mcy5oCmluZGV4IDBhMzg0MmEuLmVjYTc1ZGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzLmgKQEAgLTE1NTcsNyArMTU1Nyw3IEBACiAvKiBXaGVuIGluc2VydGluZyBhbiBpdGVtLiAqLwogI2RlZmluZSBNX0lOU0VSVAknaScKIC8qIFdoZW4gaW5zZXJ0aW5nIGludG8gKGRpcmVjdG9yaWVzIG9ubHkpIG9yIGFwcGVuZGluZyBvbnRvIGFuIGFscmVhZHkKLSAgIGV4aXN0YW50IGl0ZW0uICovCisgICBleGlzdGVudCBpdGVtLiAqLwogI2RlZmluZSBNX1BBU1RFCQkncCcKIC8qIFdoZW4gZGVsZXRpbmcgYW4gaXRlbS4gKi8KICNkZWZpbmUgTV9ERUxFVEUJJ2QnCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKaW5kZXggODNiZDJlMi4uNGVjMmMwMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaApAQCAtODU0LDcgKzg1NCw3IEBACiAKIC8qCiAgKiBPcHRpbWlzZSBTRCBmbGFncyBmb3IgcG93ZXIgc2F2aW5nczoKLSAqIFNEX0JBTEFOQ0VfTkVXSURMRSBoZWxwcyBhZ3Jlc3NpdmUgdGFzayBjb25zb2xpZGF0aW9uIGFuZCBwb3dlciBzYXZpbmdzLgorICogU0RfQkFMQU5DRV9ORVdJRExFIGhlbHBzIGFnZ3Jlc3NpdmUgdGFzayBjb25zb2xpZGF0aW9uIGFuZCBwb3dlciBzYXZpbmdzLgogICogS2VlcCBkZWZhdWx0IFNEIGZsYWdzIGlmIHNjaGVkX3tzbXQsbWN9X3Bvd2VyX3NhdmluZz0wCiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKaW5kZXggZDllNTJmYS4uZDBhZTkwYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCkBAIC00NzQsNyArNDc0LDcgQEAKIGV4dGVybiB2b2lkIHNrYl9kc3Rfc2V0X25vcmVmKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkc3RfZW50cnkgKmRzdCk7CiAKIC8qKgotICogc2tiX2RzdF9pc19ub3JlZiAtIFRlc3QgaWYgc2tiIGRzdCBpc250IHJlZmNvdW50ZWQKKyAqIHNrYl9kc3RfaXNfbm9yZWYgLSBUZXN0IGlmIHNrYiBkc3QgaXNuJ3QgcmVmY291bnRlZAogICogQHNrYjogYnVmZmVyCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBza2JfZHN0X2lzX25vcmVmKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NtYzkxeC5oIGIvaW5jbHVkZS9saW51eC9zbWM5MXguaAppbmRleCBiYzIxZGI1Li43NjE5OWI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NtYzkxeC5oCisrKyBiL2luY2x1ZGUvbGludXgvc21jOTF4LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgUlBDX0xFRF8xMAkoMHgwMikJLyogTEVEID0gMTBNYnBzIGxpbmsgZGV0ZWN0ICovCiAjZGVmaW5lIFJQQ19MRURfRkQJKDB4MDMpCS8qIExFRCA9IEZ1bGwgRHVwbGV4IE1vZGUgKi8KICNkZWZpbmUgUlBDX0xFRF9UWF9SWAkoMHgwNCkJLyogTEVEID0gVFggb3IgUlggcGFja2V0IG9jY3VycmVkICovCi0jZGVmaW5lIFJQQ19MRURfMTAwCSgweDA1KQkvKiBMRUQgPSAxMDBNYnBzIGxpbmsgZGVjdGVjdCAqLworI2RlZmluZSBSUENfTEVEXzEwMAkoMHgwNSkJLyogTEVEID0gMTAwTWJwcyBsaW5rIGRldGVjdCAqLwogI2RlZmluZSBSUENfTEVEX1RYCSgweDA2KQkvKiBMRUQgPSBUWCBwYWNrZXQgb2NjdXJyZWQgKi8KICNkZWZpbmUgUlBDX0xFRF9SWAkoMHgwNykJLyogTEVEID0gUlggcGFja2V0IG9jY3VycmVkICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29ja2V0LmggYi9pbmNsdWRlL2xpbnV4L3NvY2tldC5oCmluZGV4IGVkYmIxZDAuLmQyYjVlOTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc29ja2V0LmgKKysrIGIvaW5jbHVkZS9saW51eC9zb2NrZXQuaApAQCAtODgsNyArODgsNyBAQAogfTsKIAogLyoKLSAqCUFuY2lsbGlhcnkgZGF0YSBvYmplY3QgaW5mb3JtYXRpb24gTUFDUk9TCisgKglBbmNpbGxhcnkgZGF0YSBvYmplY3QgaW5mb3JtYXRpb24gTUFDUk9TCiAgKglUYWJsZSA1LTE0IG9mIFBPU0lYIDEwMDMuMWcKICAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oIGIvaW5jbHVkZS9saW51eC9zb3VuZGNhcmQuaAppbmRleCAxOTA0YWZlLi5mZTIwNGZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oCisrKyBiL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmgKQEAgLTEyMzEsNyArMTIzMSw3IEBACiAjZGVmaW5lIFNFUV9QQU5OSU5HKGRldiwgdm9pY2UsIHBvcykgU0VRX0NPTlRST0woZGV2LCB2b2ljZSwgQ1RMX1BBTiwgKHBvcysxMjgpIC8gMikKIAogLyoKLSAqIFRpbWluZyBhbmQgc3luY3Jvbml6YXRpb24gbWFjcm9zCisgKiBUaW1pbmcgYW5kIHN5bmNocm9uaXphdGlvbiBtYWNyb3MKICAqLwogCiAjZGVmaW5lIF9USU1FUl9FVkVOVChldiwgcGFybSkJCXtfU0VRX05FRURCVUYoOCk7XApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcGkvc3BpZGV2LmggYi9pbmNsdWRlL2xpbnV4L3NwaS9zcGlkZXYuaAppbmRleCBiZjA1NzBhLi41MmQ5ZWQwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NwaS9zcGlkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NwaS9zcGlkZXYuaApAQCAtNjYsNyArNjYsNyBAQAogICogYXJlIGluIGEgZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2UgKGFuZCBtYXkgYmUgb2YgZGlmZmVyZW50IHNpemVzIGluIHNvbWUKICAqIGNhc2VzLCBzdWNoIGFzIDMyLWJpdCBpMzg2IHVzZXJzcGFjZSBvdmVyIGEgNjQtYml0IHg4Nl82NCBrZXJuZWwpLgogICogWmVyby1pbml0aWFsaXplIHRoZSBzdHJ1Y3R1cmUsIGluY2x1ZGluZyBjdXJyZW50bHkgdW51c2VkIGZpZWxkcywgdG8KLSAqIGFjY29tb2RhdGUgcG90ZW50aWFsIGZ1dHVyZSB1cGRhdGVzLgorICogYWNjb21tb2RhdGUgcG90ZW50aWFsIGZ1dHVyZSB1cGRhdGVzLgogICoKICAqIFNQSV9JT0NfTUVTU0FHRSBnaXZlcyB1c2Vyc3BhY2UgdGhlIGVxdWl2YWxlbnQgb2Yga2VybmVsIHNwaV9zeW5jKCkuCiAgKiBQYXNzIGl0IGFuIGFycmF5IG9mIHJlbGF0ZWQgdHJhbnNmZXJzLCB0aGV5J2xsIGV4ZWN1dGUgdG9nZXRoZXIuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmggYi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgKaW5kZXggODBlNTM1OC4uMGIyMmQ1MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oCisrKyBiL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaApAQCAtODEsNyArODEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrX3R5cGVzLmg+CiAKIC8qCi0gKiBQdWxsIHRoZSBhcmNoX3NwaW4qKCkgZnVuY3Rpb25zL2RlY2xhcmF0aW9ucyAoVVAtbm9uZGVidWcgZG9lc250IG5lZWQgdGhlbSk6CisgKiBQdWxsIHRoZSBhcmNoX3NwaW4qKCkgZnVuY3Rpb25zL2RlY2xhcmF0aW9ucyAoVVAtbm9uZGVidWcgZG9lc24ndCBuZWVkIHRoZW0pOgogICovCiAjaWZkZWYgQ09ORklHX1NNUAogIyBpbmNsdWRlIDxhc20vc3BpbmxvY2suaD4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3RtbWFjLmggYi9pbmNsdWRlL2xpbnV4L3N0bW1hYy5oCmluZGV4IGUxMDM1MjkuLmYyOTE5N2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3RtbWFjLmgKKysrIGIvaW5jbHVkZS9saW51eC9zdG1tYWMuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBfX1NUTU1BQ19QTEFURk9STV9EQVRBCiAjZGVmaW5lIF9fU1RNTUFDX1BMQVRGT1JNX0RBVEEKIAotLyogcGxhdGZyb20gZGF0YSBmb3IgcGxhdGZyb20gZGV2aWNlIHN0cnVjdHVyZSdzIHBsYXRmcm9tX2RhdGEgZmllbGQgKi8KKy8qIHBsYXRmb3JtIGRhdGEgZm9yIHBsYXRmb3JtIGRldmljZSBzdHJ1Y3R1cmUncyBwbGF0Zm9ybV9kYXRhIGZpZWxkICovCiAKIC8qIFByaXZhdGUgZGF0YSBmb3IgdGhlIFNUTSBvbi1ib2FyZCBldGhlcm5ldCBkcml2ZXIgKi8KIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0b3BfbWFjaGluZS5oIGIvaW5jbHVkZS9saW51eC9zdG9wX21hY2hpbmUuaAppbmRleCAxODA4OTYwLi4wOTJkYzliIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N0b3BfbWFjaGluZS5oCisrKyBiL2luY2x1ZGUvbGludXgvc3RvcF9tYWNoaW5lLmgKQEAgLTEwNSw3ICsxMDUsNyBAQAogICogQGNwdXM6IHRoZSBjcHVzIHRvIHJ1biB0aGUgQGZuKCkgb24gKE5VTEwgPSBhbnkgb25saW5lIGNwdSkKICAqCiAgKiBEZXNjcmlwdGlvbjogVGhpcyBjYXVzZXMgYSB0aHJlYWQgdG8gYmUgc2NoZWR1bGVkIG9uIGV2ZXJ5IGNwdSwKLSAqIGVhY2ggb2Ygd2hpY2ggZGlzYWJsZXMgaW50ZXJydXB0cy4gIFRoZSByZXN1bHQgaXMgdGhhdCBub29uZSBpcworICogZWFjaCBvZiB3aGljaCBkaXNhYmxlcyBpbnRlcnJ1cHRzLiAgVGhlIHJlc3VsdCBpcyB0aGF0IG5vIG9uZSBpcwogICogaG9sZGluZyBhIHNwaW5sb2NrIG9yIGluc2lkZSBhbnkgb3RoZXIgcHJlZW1wdC1kaXNhYmxlZCByZWdpb24gd2hlbgogICogQGZuKCkgcnVucy4KICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9jYWNoZS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvY2FjaGUuaAppbmRleCA3ODk4ZWExLi44ZDJlZWYxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9jYWNoZS5oCisrKyBiL2luY2x1ZGUvbGludXgvc3VucnBjL2NhY2hlLmgKQEAgLTM1LDEwICszNSwxMCBAQAogICogRWFjaCBjYWNoZSBtdXN0IGJlIHJlZ2lzdGVyZWQgc28gdGhhdCBpdCBjYW4gYmUgY2xlYW5lZCByZWd1bGFybHkuCiAgKiBXaGVuIHRoZSBjYWNoZSBpcyB1bnJlZ2lzdGVyZWQsIGl0IGlzIGZsdXNoZWQgY29tcGxldGVseS4KICAqCi0gKiBFbnRyaWVzIGhhdmUgYSByZWYgY291bnQgYW5kIGEgJ2hhc2hlZCcgZmxhZyB3aGljaCBjb3VudHMgdGhlIGV4aXN0YW5jZQorICogRW50cmllcyBoYXZlIGEgcmVmIGNvdW50IGFuZCBhICdoYXNoZWQnIGZsYWcgd2hpY2ggY291bnRzIHRoZSBleGlzdGVuY2UKICAqIGluIHRoZSBoYXNoIHRhYmxlLgogICogV2Ugb25seSBleHBpcmUgZW50cmllcyB3aGVuIHJlZmNvdW50IGlzIHplcm8uCi0gKiBFeGlzdGFuY2UgaW4gdGhlIGNhY2hlIGlzIGNvdW50ZWQgIHRoZSByZWZjb3VudC4KKyAqIEV4aXN0ZW5jZSBpbiB0aGUgY2FjaGUgaXMgY291bnRlZCAgdGhlIHJlZmNvdW50LgogICovCiAKIC8qIEV2ZXJ5IGNhY2hlIGl0ZW0gaGFzIGEgY29tbW9uIGhlYWRlciB0aGF0IGlzIHVzZWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y2F1dGhfZ3NzLmggYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNhdXRoX2dzcy5oCmluZGV4IGNhN2Q3MjUuLjgzYmJlZTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y2F1dGhfZ3NzLmgKKysrIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjYXV0aF9nc3MuaApAQCAtMiw3ICsyLDcgQEAKICAqIGxpbnV4L2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y2F1dGhfZ3NzLmgKICAqCiAgKiBCcnVjZSBGaWVsZHMgPGJmaWVsZHNAdW1pY2guZWR1PgotICogQ29weXJpZ2h0IChjKSAyMDAyIFRoZSBSZWdlbnRzIG9mIHRoZSBVbnZpZXJzaXR5IG9mIE1pY2hpZ2FuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgTWljaGlnYW4KICAqLwogCiAjaWZuZGVmIF9MSU5VWF9TVU5SUENfU1ZDQVVUSF9HU1NfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zeXNkZXYuaCBiL2luY2x1ZGUvbGludXgvc3lzZGV2LmgKaW5kZXggOGE3NWRhNS4uZGZiMDc4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zeXNkZXYuaAorKysgYi9pbmNsdWRlL2xpbnV4L3N5c2Rldi5oCkBAIC03LDEzICs3LDEzIEBACiAgKiBXZSBzdGlsbCBoYXZlIGEgbm90aW9uIG9mIGEgZHJpdmVyIGZvciBhIHN5c3RlbSBkZXZpY2UsIGJlY2F1c2Ugd2Ugc3RpbGwKICAqIHdhbnQgdG8gcGVyZm9ybSBiYXNpYyBvcGVyYXRpb25zIG9uIHRoZXNlIGRldmljZXMuIAogICoKLSAqIFdlIGFsc28gc3VwcG9ydCBhdXhpbGxhcnkgZHJpdmVycyBiaW5kaW5nIHRvIGRldmljZXMgb2YgYSBjZXJ0YWluIGNsYXNzLgorICogV2UgYWxzbyBzdXBwb3J0IGF1eGlsaWFyeSBkcml2ZXJzIGJpbmRpbmcgdG8gZGV2aWNlcyBvZiBhIGNlcnRhaW4gY2xhc3MuCiAgKiAKICAqIFRoaXMgYWxsb3dzIGNvbmZpZ3VyYWJsZSBkcml2ZXJzIHRvIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgZm9yIGRldmljZXMgb2YKICAqIGEgY2VydGFpbiB0eXBlLiBBbmQsIGl0IGFsbG93cyBjbGFzcyBkZWZpbml0aW9ucyB0byByZXNpZGUgaW4gZ2VuZXJpYwogICogY29kZSB3aGlsZSBhcmNoLXNwZWNpZmljIGNvZGUgY2FuIHJlZ2lzdGVyIHNwZWNpZmljIGRyaXZlcnMuCiAgKgotICogQXV4aWxsYXJ5IGRyaXZlcnMgcmVnaXN0ZXJlZCB3aXRoIGEgTlVMTCBjbHMgYXJlIHJlZ2lzdGVyZWQgYXMgZHJpdmVycworICogQXV4aWxpYXJ5IGRyaXZlcnMgcmVnaXN0ZXJlZCB3aXRoIGEgTlVMTCBjbHMgYXJlIHJlZ2lzdGVyZWQgYXMgZHJpdmVycwogICogZm9yIGFsbCBzeXN0ZW0gZGV2aWNlcywgYW5kIGdldCBub3RpZmljYXRpb24gY2FsbHMgZm9yIGVhY2ggZGV2aWNlLiAKICAqLwogCkBAIC03MCw3ICs3MCw3IEBACiBleHRlcm4gdm9pZCBzeXNkZXZfY2xhc3NfcmVtb3ZlX2ZpbGUoc3RydWN0IHN5c2Rldl9jbGFzcyAqLAogCXN0cnVjdCBzeXNkZXZfY2xhc3NfYXR0cmlidXRlICopOwogLyoqCi0gKiBBdXhpbGxhcnkgc3lzdGVtIGRldmljZSBkcml2ZXJzLgorICogQXV4aWxpYXJ5IHN5c3RlbSBkZXZpY2UgZHJpdmVycy4KICAqLwogCiBzdHJ1Y3Qgc3lzZGV2X2RyaXZlciB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RpbWVycXVldWUuaCBiL2luY2x1ZGUvbGludXgvdGltZXJxdWV1ZS5oCmluZGV4IGQyNGFhYmEuLmE1MjBmZDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdGltZXJxdWV1ZS5oCisrKyBiL2luY2x1ZGUvbGludXgvdGltZXJxdWV1ZS5oCkBAIC0yNCw3ICsyNCw3IEBACiAJCQkJCQlzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKTsKIAogLyoqCi0gKiB0aW1lcnF1ZXVlX2dldG5leHQgLSBSZXR1cm5zIHRoZSB0aW1lciB3aXRoIHRoZSBlYXJsaWVzIGV4cGlyYXRpb24gdGltZQorICogdGltZXJxdWV1ZV9nZXRuZXh0IC0gUmV0dXJucyB0aGUgdGltZXIgd2l0aCB0aGUgZWFybGllc3QgZXhwaXJhdGlvbiB0aW1lCiAgKgogICogQGhlYWQ6IGhlYWQgb2YgdGltZXJxdWV1ZQogICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdHJhY2Vob29rLmggYi9pbmNsdWRlL2xpbnV4L3RyYWNlaG9vay5oCmluZGV4IDNhMmU2NmQuLmViY2ZhNGUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdHJhY2Vob29rLmgKKysrIGIvaW5jbHVkZS9saW51eC90cmFjZWhvb2suaApAQCAtMTY5LDcgKzE2OSw3IEBACiAgKiB0cmFjZWhvb2tfdHJhY2VyX3Rhc2sgLSByZXR1cm4gdGhlIHRhc2sgdGhhdCBpcyB0cmFjaW5nIHRoZSBnaXZlbiB0YXNrCiAgKiBAdHNrOgkJdGFzayB0byBjb25zaWRlcgogICoKLSAqIFJldHVybnMgTlVMTCBpZiBub29uZSBpcyB0cmFjaW5nIEB0YXNrLCBvciB0aGUgJnN0cnVjdCB0YXNrX3N0cnVjdAorICogUmV0dXJucyBOVUxMIGlmIG5vIG9uZSBpcyB0cmFjaW5nIEB0YXNrLCBvciB0aGUgJnN0cnVjdCB0YXNrX3N0cnVjdAogICogcG9pbnRlciB0byBpdHMgdHJhY2VyLgogICoKICAqIE11c3QgY2FsbGVkIHVuZGVyIHJjdV9yZWFkX2xvY2soKS4gIFRoZSBwb2ludGVyIHJldHVybmVkIG1pZ2h0IGJlIGtlcHQKQEAgLTQ0OCw3ICs0NDgsNyBAQAogICoKICAqIFJldHVybiB6ZXJvIHRvIGNoZWNrIGZvciBhIHJlYWwgcGVuZGluZyBzaWduYWwgbm9ybWFsbHkuCiAgKiBSZXR1cm4gLTEgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBzaWdsb2NrIHRvIHJlcGVhdCB0aGUgY2hlY2suCi0gKiBSZXR1cm4gYSBzaWduYWwgbnVtYmVyIHRvIGluZHVjZSBhbiBhcnRpZmljYWwgc2lnbmFsIGRlbGl2ZXJ5LAorICogUmV0dXJuIGEgc2lnbmFsIG51bWJlciB0byBpbmR1Y2UgYW4gYXJ0aWZpY2lhbCBzaWduYWwgZGVsaXZlcnksCiAgKiBzZXR0aW5nICpAaW5mbyBhbmQgKkByZXR1cm5fa2EgdG8gc3BlY2lmeSBpdHMgZGV0YWlscyBhbmQgYmVoYXZpb3IuCiAgKgogICogVGhlIEByZXR1cm5fa2EtPnNhX2hhbmRsZXIgdmFsdWUgY29udHJvbHMgdGhlIGRpc3Bvc2l0aW9uIG9mIHRoZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91Y2IxNDAwLmggYi9pbmNsdWRlL2xpbnV4L3VjYjE0MDAuaAppbmRleCAxYjQ3OTA5Li41Yzc1MTUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VjYjE0MDAuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VjYjE0MDAuaApAQCAtOCw3ICs4LDcgQEAKICAqICBDb3B5cmlnaHQ6CU1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KICAqCiAgKiBTcGxpdGluZyBkb25lIGJ5OiBNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPgotICogSWYgc29tZXRoaW5nIGRvZXNudCB3b3JrIGFuZCBpdCB3b3JrZWQgYmVmb3JlIHNwbGl0aW5nLCBlLW1haWwgbWUsCisgKiBJZiBzb21ldGhpbmcgZG9lc24ndCB3b3JrIGFuZCBpdCB3b3JrZWQgYmVmb3JlIHNwbGl0aW5nLCBlLW1haWwgbWUsCiAgKiBkb250IGJvdGhlciBOaWNvbGFzIHBsZWFzZSA7LSkKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmgKaW5kZXggZTYzZWZlYi4uNjVmNzhjYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi5oCkBAIC02MjMsNyArNjIzLDcgQEAKICAqIFVTQiBodWJzLiAgVGhhdCBtYWtlcyBpdCBzdGF5IHRoZSBzYW1lIHVudGlsIHN5c3RlbXMgYXJlIHBoeXNpY2FsbHkKICAqIHJlY29uZmlndXJlZCwgYnkgcmUtY2FibGluZyBhIHRyZWUgb2YgVVNCIGRldmljZXMgb3IgYnkgbW92aW5nIFVTQiBob3N0CiAgKiBjb250cm9sbGVycy4gIEFkZGluZyBhbmQgcmVtb3ZpbmcgZGV2aWNlcywgaW5jbHVkaW5nIHZpcnR1YWwgcm9vdCBodWJzCi0gKiBpbiBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIG1vZHVsZXMsIGRvZXMgbm90IGNoYW5nZSB0aGVzZSBwYXRoIGlkZW50aWZlcnM7CisgKiBpbiBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIG1vZHVsZXMsIGRvZXMgbm90IGNoYW5nZSB0aGVzZSBwYXRoIGlkZW50aWZpZXJzOwogICogbmVpdGhlciBkb2VzIHJlYm9vdGluZyBvciByZS1lbnVtZXJhdGluZy4gIFRoZXNlIGFyZSBtb3JlIHVzZWZ1bCBpZGVudGlmaWVycwogICogdGhhbiBjaGFuZ2VhYmxlICgidW5zdGFibGUiKSBvbmVzIGxpa2UgYnVzIG51bWJlcnMgb3IgZGV2aWNlIGFkZHJlc3Nlcy4KICAqCkBAIC03OTMsNyArNzkzLDcgQEAKICAqCXVzYl9zZXRfaW50ZmRhdGEoKSB0byBhc3NvY2lhdGUgZHJpdmVyLXNwZWNpZmljIGRhdGEgd2l0aCB0aGUKICAqCWludGVyZmFjZS4gIEl0IG1heSBhbHNvIHVzZSB1c2Jfc2V0X2ludGVyZmFjZSgpIHRvIHNwZWNpZnkgdGhlCiAgKglhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLAotICoJcmV0dXJuIC1FTk9ERVYsIGlmIGdlbnVpbmUgSU8gZXJyb3JzIG9jY3VyZWQsIGFuIGFwcHJvcHJpYXRlCisgKglyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlCiAgKgluZWdhdGl2ZSBlcnJubyB2YWx1ZS4KICAqIEBkaXNjb25uZWN0OiBDYWxsZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIG5vIGxvbmdlciBhY2Nlc3NpYmxlLCB1c3VhbGx5CiAgKgliZWNhdXNlIGl0cyBkZXZpY2UgaGFzIGJlZW4gKG9yIGlzIGJlaW5nKSBkaXNjb25uZWN0ZWQgb3IgdGhlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaCBiL2luY2x1ZGUvbGludXgvdXNiL2NvbXBvc2l0ZS5oCmluZGV4IDNkMjlhN2QuLjg4MmEwODRhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaApAQCAtMTg4LDcgKzE4OCw3IEBACiAgKiBAYmluZCgpIG1ldGhvZCBpcyB0aGVuIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbGwgdGhlIGZ1bmN0aW9ucyBhbmQgdGhlbgogICogY2FsbCBAdXNiX2FkZF9mdW5jdGlvbigpIGZvciB0aGVtLgogICoKLSAqIFRob3NlIGZ1bmN0aW9ucyB3b3VsZCBub3JtYWxseSBiZSBpbmRlcGVuZGFudCBvZiBlYWNoIG90aGVyLCBidXQgdGhhdCdzCisgKiBUaG9zZSBmdW5jdGlvbnMgd291bGQgbm9ybWFsbHkgYmUgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlciwgYnV0IHRoYXQncwogICogbm90IG1hbmRhdG9yeS4gIENEQyBXTUMgZGV2aWNlcyBhcmUgYW4gZXhhbXBsZSB3aGVyZSBmdW5jdGlvbnMgb2Z0ZW4KICAqIGRlcGVuZCBvbiBvdGhlciBmdW5jdGlvbnMsIHdpdGggc29tZSBmdW5jdGlvbnMgc3Vic2lkaWFyeSB0byBvdGhlcnMuCiAgKiBTdWNoIGludGVyZGVwZW5kZW5jeSBtYXkgYmUgbWFuYWdlZCBpbiBhbnkgd2F5LCBzbyBsb25nIGFzIGFsbCBvZiB0aGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL2VoY2lfZGVmLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9laGNpX2RlZi5oCmluZGV4IDY1NjM4MDIuLmU0OWRmZDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL2VoY2lfZGVmLmgKKysrIGIvaW5jbHVkZS9saW51eC91c2IvZWhjaV9kZWYuaApAQCAtMTU5LDcgKzE1OSw3IEBACiAjZGVmaW5lIFVTQk1PREVfQ01fSURMRQkoMDw8MCkJCS8qIGlkbGUgc3RhdGUgKi8KIAogLyogTW9vcmVzdG93biBoYXMgc29tZSBub24tc3RhbmRhcmQgcmVnaXN0ZXJzLCBwYXJ0aWFsbHkgZHVlIHRvIHRoZSBmYWN0IHRoYXQKLSAqIGl0cyBFSENJIGNvbnRyb2xsZXIgaGFzIGJvdGggVFQgYW5kIExQTSBzdXBwb3J0LiBIT1NUUEN4IGFyZSBleHRlbnRpb25zIHRvCisgKiBpdHMgRUhDSSBjb250cm9sbGVyIGhhcyBib3RoIFRUIGFuZCBMUE0gc3VwcG9ydC4gSE9TVFBDeCBhcmUgZXh0ZW5zaW9ucyB0bwogICogUE9SVFNDeAogICovCiAjZGVmaW5lIEhPU1RQQzAJCTB4ODQJCS8qIEhPU1RQQyBleHRlbnNpb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL2Z1bmN0aW9uZnMuaCBiL2luY2x1ZGUvbGludXgvdXNiL2Z1bmN0aW9uZnMuaAppbmRleCA2ZjY0OWMxLi43NTg3ZWY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9mdW5jdGlvbmZzLmgKKysrIGIvaW5jbHVkZS9saW51eC91c2IvZnVuY3Rpb25mcy5oCkBAIC00NSw3ICs0NSw3IEBACiAgKiB8IG9mZiB8IG5hbWUgICAgICB8IHR5cGUgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgKiB8LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiAgKiB8ICAgMCB8IG1hZ2ljICAgICB8IExFMzIgICAgICAgICB8IEZVTkNUSU9ORlNfe0ZTLEhTfV9ERVNDUklQVE9SU19NQUdJQyB8Ci0gKiB8ICAgNCB8IGxlbmdodCAgICB8IExFMzIgICAgICAgICB8IGxlbmd0aCBvZiB0aGUgd2hvbGUgZGF0YSBjaHVuayAgICAgICB8CisgKiB8ICAgNCB8IGxlbmd0aCAgICB8IExFMzIgICAgICAgICB8IGxlbmd0aCBvZiB0aGUgd2hvbGUgZGF0YSBjaHVuayAgICAgICB8CiAgKiB8ICAgOCB8IGZzX2NvdW50ICB8IExFMzIgICAgICAgICB8IG51bWJlciBvZiBmdWxsLXNwZWVkIGRlc2NyaXB0b3JzICAgICB8CiAgKiB8ICAxMiB8IGhzX2NvdW50ICB8IExFMzIgICAgICAgICB8IG51bWJlciBvZiBoaWdoLXNwZWVkIGRlc2NyaXB0b3JzICAgICB8CiAgKiB8ICAxNiB8IGZzX2Rlc2NycyB8IERlc2NyaXB0b3JbXSB8IGxpc3Qgb2YgZnVsbC1zcGVlZCBkZXNjcmlwdG9ycyAgICAgICB8CkBAIC04Niw3ICs4Niw3IEBACiAgKiB8ICAgMCB8IGxhbmcgICAgfCBMRTE2ICAgICAgICAgICAgICB8IGxhbmd1YWdlIGNvZGUgICAgICAgICAgICAgICAgICAgICAgfAogICogfCAgIDIgfCBzdHJpbmdzIHwgU3RyaW5nW3N0cl9jb3VudF0gfCBhcnJheSBvZiBzdHJpbmdzIGluIGdpdmVuIGxhbmd1YWdlIHwKICAqCi0gKiBGb3IgZWFjaCBzdHJpbmcgdGhlciBpcyBvbmUgc3RyaW5ncyBlbnRyeSAoaWUuIHRoZXJlIGFyZSBzdHJfY291bnQKKyAqIEZvciBlYWNoIHN0cmluZyB0aGVyZSBpcyBvbmUgc3RyaW5ncyBlbnRyeSAoaWUuIHRoZXJlIGFyZSBzdHJfY291bnQKICAqIHN0cmluZyBlbnRyaWVzKS4gIEVhY2ggU3RyaW5nIGlzIGEgTlVMIHRlcm1pbmF0ZWQgc3RyaW5nIGVuY29kZWQgaW4KICAqIFVURi04LgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9nYWRnZXQuaCBiL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCmluZGV4IDAwNjQxMmMuLmU1MzgxNzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCkBAIC03Miw3ICs3Miw3IEBACiAgKiBCdWxrIGVuZHBvaW50cyBjYW4gdXNlIGFueSBzaXplIGJ1ZmZlcnMsIGFuZCBjYW4gYWxzbyBiZSB1c2VkIGZvciBpbnRlcnJ1cHQKICAqIHRyYW5zZmVycy4gaW50ZXJydXB0LW9ubHkgZW5kcG9pbnRzIGNhbiBiZSBtdWNoIGxlc3MgZnVuY3Rpb25hbC4KICAqCi0gKiBOT1RFOiAgdGhpcyBpcyBhbmFsYWdvdXMgdG8gJ3N0cnVjdCB1cmInIG9uIHRoZSBob3N0IHNpZGUsIGV4Y2VwdCB0aGF0CisgKiBOT1RFOiAgdGhpcyBpcyBhbmFsb2dvdXMgdG8gJ3N0cnVjdCB1cmInIG9uIHRoZSBob3N0IHNpZGUsIGV4Y2VwdCB0aGF0CiAgKiBpdCdzIHRoaW5uZXIgYW5kIHByb21vdGVzIG1vcmUgcHJlLWFsbG9jYXRpb24uCiAgKi8KIApAQCAtMjY5LDcgKzI2OSw3IEBACiAgKgogICogQ29udHJvbCBlbmRwb2ludHMgLi4uIGFmdGVyIGdldHRpbmcgYSBzZXR1cCgpIGNhbGxiYWNrLCB0aGUgZHJpdmVyIHF1ZXVlcwogICogb25lIHJlc3BvbnNlIChldmVuIGlmIGl0IHdvdWxkIGJlIHplcm8gbGVuZ3RoKS4gIFRoYXQgZW5hYmxlcyB0aGUKLSAqIHN0YXR1cyBhY2ssIGFmdGVyIHRyYW5zZmVyaW5nIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZSByZXNwb25zZS4gIFNldHVwCisgKiBzdGF0dXMgYWNrLCBhZnRlciB0cmFuc2ZlcnJpbmcgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlIHJlc3BvbnNlLiAgU2V0dXAKICAqIGZ1bmN0aW9ucyBtYXkgcmV0dXJuIG5lZ2F0aXZlIGVycm9yIGNvZGVzIHRvIGdlbmVyYXRlIHByb3RvY29sIHN0YWxscy4KICAqIChOb3RlIHRoYXQgc29tZSBVU0IgZGV2aWNlIGNvbnRyb2xsZXJzIGRpc2FsbG93IHByb3RvY29sIHN0YWxsIHJlc3BvbnNlcwogICogaW4gc29tZSBjYXNlcy4pICBXaGVuIGNvbnRyb2wgcmVzcG9uc2VzIGFyZSBkZWZlcnJlZCAodGhlIHJlc3BvbnNlIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9taWRpLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9taWRpLmgKaW5kZXggMWQxMDQwOC4uYzhjNTJlMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IvbWlkaS5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL21pZGkuaApAQCAtNzAsNyArNzAsNyBAQAogCV9fdTggIGJKYWNrSUQ7CiAJX191OCAgYk5ySW5wdXRQaW5zOwkJLyogcCAqLwogCXN0cnVjdCB1c2JfbWlkaV9zb3VyY2VfcGluIHBpbnNbXTsgLyogW3BdICovCi0JLypfX3U4ICBpSmFjazsgIC0tIG9tbWl0dGVkIGR1ZSB0byB2YXJpYWJsZS1zaXplZCBwaW5zW10gKi8KKwkvKl9fdTggIGlKYWNrOyAgLS0gb21pdHRlZCBkdWUgdG8gdmFyaWFibGUtc2l6ZWQgcGluc1tdICovCiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAogI2RlZmluZSBVU0JfRFRfTUlESV9PVVRfU0laRShwKQkoNyArIDIgKiAocCkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi93dXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi93dXNiLmgKaW5kZXggNjNlYmRjYy4uMGM0ZDRjYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2Ivd3VzYi5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3d1c2IuaApAQCAtMTI2LDcgKzEyNiw3IEBACiAvKioKICAqIFdVU0IgSUU6IENoYW5uZWwgU3RvcCAoV1VTQjEuMFs3LjUuOF0pCiAgKgotICogVGVsbHMgZGV2aWNlcyB0aGUgaG9zdCBpcyBnb2luZyB0byBzdG9wIHNlbmRpbmcgTU1DcyBhbmQgd2lsbCBkaXNzYXBlYXIuCisgKiBUZWxscyBkZXZpY2VzIHRoZSBob3N0IGlzIGdvaW5nIHRvIHN0b3Agc2VuZGluZyBNTUNzIGFuZCB3aWxsIGRpc2FwcGVhci4KICAqLwogc3RydWN0IHd1aWVfY2hhbm5lbF9zdG9wIHsKIAlzdHJ1Y3Qgd3VpZV9oZHIgaGRyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91d2IuaCBiL2luY2x1ZGUvbGludXgvdXdiLmgKaW5kZXggN2ZjOTc0Ni4uYjBjNTY0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91d2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3V3Yi5oCkBAIC0yNzQsNyArMjc0LDcgQEAKIAogLyoqCiAgKiBzdHJ1Y3QgdXdiX2RycF9hdmFpbCAtIGEgcmFkaW8gY29udHJvbGxlcidzIHZpZXcgb2YgTUFTIHVzYWdlCi0gKiBAZ2xvYmFsOiAgIE1BUyB1bnVzZWQgYnkgbmVpZ2hib3JzIChleGNsdWRpbmcgcmVzZXJ2YXRpb25zIHRhcmdldHRlZAorICogQGdsb2JhbDogICBNQVMgdW51c2VkIGJ5IG5laWdoYm9ycyAoZXhjbHVkaW5nIHJlc2VydmF0aW9ucyB0YXJnZXRlZAogICogICAgICAgICAgICBvciBvd25lZCBieSB0aGUgbG9jYWwgcmFkaW8gY29udHJvbGxlcikgb3IgdGhlIGJlYW9uIHBlcmlvZAogICogQGxvY2FsOiAgICBNQVMgdW51c2VkIGJ5IGxvY2FsIGVzdGFibGlzaGVkIHJlc2VydmF0aW9ucwogICogQHBlbmRpbmc6ICBNQVMgdW51c2VkIGJ5IGxvY2FsIHBlbmRpbmcgcmVzZXJ2YXRpb25zCkBAIC03MDIsMTAgKzcwMiwxMCBAQAogCWVkYy0+dGltZXN0YXJ0ID0gamlmZmllczsKIH0KIAotLyogQ2FsbGVkIHdoZW4gYW4gZXJyb3Igb2NjdXJlZC4KKy8qIENhbGxlZCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLgogICogVGhpcyBpcyB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgb2YgYWNjZXB0YWJsZSBlcnJvcnMgcGVyIHRpbWUKICAqIHBlcmlvZCBoYXMgYmVlbiBleGNlZWRlZC4gSXQgaXMgbm90IGFjY3VyYXRlIGFzIHRoZXJlIGFyZSBjYXNlcyBpbiB3aGljaAotICogdGhpcyBzY2hlbWUgd2lsbCBub3Qgd29yaywgZm9yIGV4YW1wbGUgaWYgdGhlcmUgYXJlIHBlcmlvZGljIG9jY3VyZW5jZXMKKyAqIHRoaXMgc2NoZW1lIHdpbGwgbm90IHdvcmssIGZvciBleGFtcGxlIGlmIHRoZXJlIGFyZSBwZXJpb2RpYyBvY2N1cnJlbmNlcwogICogb2YgZXJyb3JzIHRoYXQgc3RyYWRkbGUgdXBkYXRlcyB0byB0aGUgc3RhcnQgdGltZS4gVGhpcyBzY2hlbWUgaXMKICAqIHN1ZmZpY2llbnQgZm9yIG91ciB1c2FnZS4KICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3V3Yi91bWMuaCBiL2luY2x1ZGUvbGludXgvdXdiL3VtYy5oCmluZGV4IDRiNGZjMGYuLjdiNDg0MjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXdiL3VtYy5oCisrKyBiL2luY2x1ZGUvbGludXgvdXdiL3VtYy5oCkBAIC0xMzIsNyArMTMyLDcgQEAKICAqCiAgKiBGSVhNRTogVGhpcyBpcyBhcyBkaXJ0eSBhcyBpdCBnZXRzLCBidXQgd2UgbmVlZCBzb21lIHdheSB0byBjaGVjawogICogdGhlIGNvcnJlY3QgdHlwZSBvZiB1bWNfZGV2LT5wYXJlbnQgKHNvIHRoYXQgZm9yIGV4YW1wbGUsIHdlIGNhbgotICogY2FzdCB0byBwY2lfZGV2KS4gQ2FzdGluZyB0byBwY2lfZGV2IGlzIG5lY2VzYXJ5IGJlY2F1c2UgYXQgc29tZQorICogY2FzdCB0byBwY2lfZGV2KS4gQ2FzdGluZyB0byBwY2lfZGV2IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGF0IHNvbWUKICAqIHBvaW50IHdlIG5lZWQgdG8gcmVxdWVzdCByZXNvdXJjZXMgZnJvbSB0aGUgZGV2aWNlLiBNYXBwaW5nIGlzCiAgKiBlYXNpbHkgb3ZlciBjb21lIChpb3JlbWFwIGFuZCBzdHVmZiBhcmUgYnVzIGFnbm9zdGljKSwgYnV0IGhvb2tpbmcKICAqIHVwIHRvIHNvbWUgZXJyb3IgaGFuZGxlcnMgKHN1Y2ggYXMgcGNpIGVycm9yIGhhbmRsZXJzKSBtaWdodCBuZWVkCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZnYWFyYi5oIGIvaW5jbHVkZS9saW51eC92Z2FhcmIuaAppbmRleCBlOWUxNTI0Li45YzMxMjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ZnYWFyYi5oCisrKyBiL2luY2x1ZGUvbGludXgvdmdhYXJiLmgKQEAgLTc4LDcgKzc4LDcgQEAKICAqICAgICB3ZXRoZXIgdGhlIGNhcmQgaXMgZG9pbmcgbGVnYWN5IGRlY29kaW5nIGZvciB0aGF0IHR5cGUgb2YgcmVzb3VyY2UuIElmCiAgKiAgICAgeWVzLCB0aGUgbG9jayBpcyAiY29udmVydGVkIiBpbnRvIGEgbGVnYWN5IHJlc291cmNlIGxvY2suCiAgKiAgICAgVGhlIGFyYml0ZXIgd2lsbCBmaXJzdCBsb29rIGZvciBhbGwgVkdBIGNhcmRzIHRoYXQgbWlnaHQgY29uZmxpY3QKLSAqICAgICBhbmQgZGlzYWJsZSB0aGVpciBJT3MgYW5kL29yIE1lbW9yeSBhY2Nlc3MsIGlubGN1ZGluZyBWR0EgZm9yd2FyZGluZworICogICAgIGFuZCBkaXNhYmxlIHRoZWlyIElPcyBhbmQvb3IgTWVtb3J5IGFjY2VzcywgaW5jbHVkaW5nIFZHQSBmb3J3YXJkaW5nCiAgKiAgICAgb24gUDJQIGJyaWRnZXMgaWYgbmVjZXNzYXJ5LCBzbyB0aGF0IHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2VzIGNhbgogICogICAgIGJlIHVzZWQuIFRoZW4sIHRoZSBjYXJkIGlzIG1hcmtlZCBhcyBsb2NraW5nIHRoZXNlIHJlc291cmNlcyBhbmQKICAqICAgICB0aGUgSU8gYW5kL29yIE1lbW9yeSBhY2Nlc3NlIGFyZSBlbmFibGVkIG9uIHRoZSBjYXJkIChpbmNsdWRpbmcKQEAgLTE4Nyw3ICsxODcsNyBAQAogICogICAgIHZnYV9jb25mbGljdHMKICAqCiAgKiAgICAgQXJjaGl0ZWN0dXJlcyBzaG91bGQgZGVmaW5lIHRoaXMgaWYgdGhleSBoYXZlIHNldmVyYWwKLSAqICAgICBpbmRlcGVuZGFudCBQQ0kgZG9tYWlucyB0aGF0IGNhbiBhZmZvcmQgY29uY3VycmVudCBWR0EKKyAqICAgICBpbmRlcGVuZGVudCBQQ0kgZG9tYWlucyB0aGF0IGNhbiBhZmZvcmQgY29uY3VycmVudCBWR0EKICAqICAgICBkZWNvZGluZwogICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvd2ltYXguaCBiL2luY2x1ZGUvbGludXgvd2ltYXguaAppbmRleCA0ZmRjYzU2Li45ZjZiNzdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3dpbWF4LmgKKysrIGIvaW5jbHVkZS9saW51eC93aW1heC5oCkBAIC0xMTQsNyArMTE0LDcgQEAKIAlXSU1BWF9HTkxfUkVTRVRfSUZJRFggPSAxLAogfTsKIAotLyogQXRyaWJ1dGVzIGZvciB3aW1heF9zdGF0ZV9nZXQoKSAqLworLyogQXR0cmlidXRlcyBmb3Igd2ltYXhfc3RhdGVfZ2V0KCkgKi8KIGVudW0gewogCVdJTUFYX0dOTF9TVEdFVF9JRklEWCA9IDEsCiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC94aWxpbnhmYi5oIGIvaW5jbHVkZS9saW51eC94aWxpbnhmYi5oCmluZGV4IGYyNDYzZjUuLjVhMTU1YTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgveGlsaW54ZmIuaAorKysgYi9pbmNsdWRlL2xpbnV4L3hpbGlueGZiLmgKQEAgLTE2LDcgKzE2LDcgQEAKIC8qIE1MMzAwLzQwMyByZWZlcmVuY2UgZGVzaWduIGZyYW1lYnVmZmVyIGRyaXZlciBwbGF0Zm9ybSBkYXRhIHN0cnVjdCAqLwogc3RydWN0IHhpbGlueGZiX3BsYXRmb3JtX2RhdGEgewogCXUzMiByb3RhdGVfc2NyZWVuOwkvKiBGbGFnIHRvIHJvdGF0ZSBkaXNwbGF5IDE4MCBkZWdyZWVzICovCi0JdTMyIHNjcmVlbl9oZWlnaHRfbW07CS8qIFBoeXNpY2FsIGRpbWVudGlvbnMgb2Ygc2NyZWVuIGluIG1tICovCisJdTMyIHNjcmVlbl9oZWlnaHRfbW07CS8qIFBoeXNpY2FsIGRpbWVuc2lvbnMgb2Ygc2NyZWVuIGluIG1tICovCiAJdTMyIHNjcmVlbl93aWR0aF9tbTsKIAl1MzIgeHJlcywgeXJlczsJCS8qIHJlc29sdXRpb24gb2Ygc2NyZWVuIGluIHBpeGVscyAqLwogCXUzMiB4dmlydCwgeXZpcnQ7CS8qIHJlc29sdXRpb24gb2YgbWVtb3J5IGJ1ZmZlciAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9kYXZpbmNpL2RtMzU1X2NjZGMuaCBiL2luY2x1ZGUvbWVkaWEvZGF2aW5jaS9kbTM1NV9jY2RjLmgKaW5kZXggZGY4YTdiMS4uYWRmMmZlNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9kYXZpbmNpL2RtMzU1X2NjZGMuaAorKysgYi9pbmNsdWRlL21lZGlhL2RhdmluY2kvZG0zNTVfY2NkYy5oCkBAIC0xOTMsNyArMTkzLDcgQEAKICNkZWZpbmUgQ0NEQ19ERlRfVEFCTEVfU0laRQkxNgogLyoKICAqIE1haW4gU3RydWN0dXJlIGZvciB2ZXJ0aWNhbCBkZWZlY3QgY29ycmVjdGlvbi4gVmVydGljYWwgZGVmZWN0Ci0gKiBjb3JyZWN0aW9uIGNhbiBjb3JyZWN0IHVwdG8gMTYgZGVmZWN0cyBpZiBkZWZlY3RzIGxlc3MgdGhhbiAxNgorICogY29ycmVjdGlvbiBjYW4gY29ycmVjdCB1cCB0byAxNiBkZWZlY3RzIGlmIGRlZmVjdHMgbGVzcyB0aGFuIDE2CiAgKiB0aGVuIHBhZCB0aGUgcmVzdCB3aXRoIDAKICAqLwogc3RydWN0IGNjZGNfdmVydGljYWxfZGZ0IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvZGF2aW5jaS9pc2lmLmggYi9pbmNsdWRlL21lZGlhL2RhdmluY2kvaXNpZi5oCmluZGV4IGIwYjc0YWQuLjdmM2Q3NmE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL2RhdmluY2kvaXNpZi5oCisrKyBiL2luY2x1ZGUvbWVkaWEvZGF2aW5jaS9pc2lmLmgKQEAgLTE5OSw3ICsxOTksNyBAQAogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSoqIENvbG9yIFNwYWNlIENvbnZlcnRpb24gKENTQykKKyoqIENvbG9yIFNwYWNlIENvbnZlcnNpb24gKENTQykKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIElTSUZfQ1NDX05VTV9DT0VGRgkxNgogc3RydWN0IGlzaWZfY29sb3Jfc3BhY2VfY29udiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL2xpcmMuaCBiL2luY2x1ZGUvbWVkaWEvbGlyYy5oCmluZGV4IDY2NzhhMTY5Li40YjNhYjI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL2xpcmMuaAorKysgYi9pbmNsdWRlL21lZGlhL2xpcmMuaApAQCAtMTM3LDcgKzEzNyw3IEBACiAgKi8KICNkZWZpbmUgTElSQ19TRVRfUkVDX0ZJTFRFUl9TUEFDRSAgICAgIF9JT1coJ2knLCAweDAwMDAwMDFiLCBfX3UzMikKIC8qCi0gKiBpZiBmaWx0ZXIgY2Fubm90IGJlIHNldCBpbmRlcGVuZGFudGx5IGZvciBwdWxzZS9zcGFjZSwgdGhpcyBzaG91bGQKKyAqIGlmIGZpbHRlciBjYW5ub3QgYmUgc2V0IGluZGVwZW5kZW50bHkgZm9yIHB1bHNlL3NwYWNlLCB0aGlzIHNob3VsZAogICogYmUgdXNlZAogICovCiAjZGVmaW5lIExJUkNfU0VUX1JFQ19GSUxURVIgICAgICAgICAgICBfSU9XKCdpJywgMHgwMDAwMDAxYywgX191MzIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC85cC5oIGIvaW5jbHVkZS9uZXQvOXAvOXAuaAppbmRleCA2Yjc1YTY5Li5jZGYyZThhYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvOXAuaAorKysgYi9pbmNsdWRlL25ldC85cC85cC5oCkBAIC0xMTksNyArMTE5LDcgQEAKICAqIEBQOV9UUkVBRDogcmVxdWVzdCB0byB0cmFuc2ZlciBkYXRhIGZyb20gYSBmaWxlIG9yIGRpcmVjdG9yeQogICogQFA5X1JSRUFEOiByZXNwb25zZSB3aXRoIGRhdGEgcmVxdWVzdGVkCiAgKiBAUDlfVFdSSVRFOiByZXVxZXN0IHRvIHRyYW5zZmVyIGRhdGEgdG8gYSBmaWxlCi0gKiBAUDlfUldSSVRFOiByZXNwb25zZSB3aXRoIG91dCBtdWNoIGRhdGEgd2FzIHRyYW5zZmVyZWQgdG8gZmlsZQorICogQFA5X1JXUklURTogcmVzcG9uc2Ugd2l0aCBvdXQgbXVjaCBkYXRhIHdhcyB0cmFuc2ZlcnJlZCB0byBmaWxlCiAgKiBAUDlfVENMVU5LOiBmb3JnZXQgYWJvdXQgYSBoYW5kbGUgdG8gYW4gZW50aXR5IHdpdGhpbiB0aGUgZmlsZSBzeXN0ZW0KICAqIEBQOV9SQ0xVTks6IHJlc3BvbnNlIHdoZW4gc2VydmVyIGhhcyBmb3Jnb3R0ZW4gYWJvdXQgdGhlIGhhbmRsZQogICogQFA5X1RSRU1PVkU6IHJlcXVlc3QgdG8gcmVtb3ZlIGFuIGVudGl0eSBmcm9tIHRoZSBoaWVyYXJjaHkKQEAgLTI5NCw3ICsyOTQsNyBAQAogICoKICAqIFFJRCB0eXBlcyBhcmUgYSBzdWJzZXQgb2YgcGVybWlzc2lvbnMgLSB0aGV5IGFyZSBwcmltYXJpbHkKICAqIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBzZW1hbnRpY3MgZm9yIGEgZmlsZSBzeXN0ZW0gZW50aXR5IHZpYQotICogYSBqdW1wLXRhYmxlLiAgVGhlaXIgdmFsdWUgaXMgYWxzbyB0aGUgbW9zdCBzaWduaWZpZ2FudCAxNiBiaXRzCisgKiBhIGp1bXAtdGFibGUuICBUaGVpciB2YWx1ZSBpcyBhbHNvIHRoZSBtb3N0IHNpZ25pZmljYW50IDE2IGJpdHMKICAqIG9mIHRoZSBwZXJtaXNzaW9uX3QKICAqCiAgKiBTZWUgQWxzbzogaHR0cDovL3BsYW45LmJlbGwtbGFicy5jb20vbWFnaWMvbWFuMmh0bWwvMi9zdGF0CkBAIC0zNjYsOCArMzY2LDggQEAKIC8qKgogICogc3RydWN0IHA5X3N0YXQgLSBmaWxlIHN5c3RlbSBtZXRhZGF0YSBpbmZvcm1hdGlvbgogICogQHNpemU6IGxlbmd0aCBwcmVmaXggZm9yIHRoaXMgc3RhdCBzdHJ1Y3R1cmUgaW5zdGFuY2UKLSAqIEB0eXBlOiB0aGUgdHlwZSBvZiB0aGUgc2VydmVyIChlcXVpdmlsZW50IHRvIGEgbWFqb3IgbnVtYmVyKQotICogQGRldjogdGhlIHN1Yi10eXBlIG9mIHRoZSBzZXJ2ZXIgKGVxdWl2aWxlbnQgdG8gYSBtaW5vciBudW1iZXIpCisgKiBAdHlwZTogdGhlIHR5cGUgb2YgdGhlIHNlcnZlciAoZXF1aXZhbGVudCB0byBhIG1ham9yIG51bWJlcikKKyAqIEBkZXY6IHRoZSBzdWItdHlwZSBvZiB0aGUgc2VydmVyIChlcXVpdmFsZW50IHRvIGEgbWlub3IgbnVtYmVyKQogICogQHFpZDogdW5pcXVlIGlkIGZyb20gdGhlIHNlcnZlciBvZiB0eXBlICZwOV9xaWQKICAqIEBtb2RlOiBQbGFuIDkgZm9ybWF0IHBlcm1pc3Npb25zIG9mIHR5cGUgJnA5X3Blcm1fdAogICogQGF0aW1lOiBMYXN0IGFjY2Vzcy9yZWFkIHRpbWUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKaW5kZXggMGEzMDk3Ny4uODVjMTQxMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKKysrIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogICogVHJhbnNwb3J0IHVzZSBhbiBhcnJheSB0byB0cmFjayBvdXRzdGFuZGluZyByZXF1ZXN0cwogICogaW5zdGVhZCBvZiBhIGxpc3QuICBXaGlsZSB0aGlzIG1heSBpbmN1cnIgb3ZlcmhlYWQgZHVyaW5nIGluaXRpYWwKICAqIGFsbG9jYXRpb24gb3IgZXhwYW5zaW9uLCBpdCBtYWtlcyByZXF1ZXN0IGxvb2t1cCBtdWNoIGVhc2llciBhcyB0aGUKLSAqIHRhZyBpZCBpcyBhIGluZGV4IGludG8gYW4gYXJyYXkuICAoV2UgdXNlIHRhZysxIHNvIHRoYXQgd2UgY2FuIGFjY29tb2RhdGUKKyAqIHRhZyBpZCBpcyBhIGluZGV4IGludG8gYW4gYXJyYXkuICAoV2UgdXNlIHRhZysxIHNvIHRoYXQgd2UgY2FuIGFjY29tbW9kYXRlCiAgKiB0aGUgLTEgdGFnIGZvciB0aGUgVF9WRVJTSU9OIHJlcXVlc3QpLgogICogVGhpcyBhbHNvIGhhcyB0aGUgbmljZSBlZmZlY3Qgb2Ygb25seSBoYXZpbmcgdG8gYWxsb2NhdGUgd2FpdF9xdWV1ZXMKICAqIG9uY2UsIGluc3RlYWQgb2YgY29uc3RhbnRseSBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIHRoZW0uICBJdHMgcG9zc2libGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKaW5kZXggODI4NjhmMS4uOGYwOGM3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKKysrIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogLyogRGVmYXVsdC4gQWRkIFBheWxvYWQgdG8gUERVIGJlZm9yZSBzZW5kaW5nIGl0IGRvd24gdG8gdHJhbnNwb3J0IGxheWVyICovCiAjZGVmaW5lIFA5X1RSQU5TX1BSRUZfUEFZTE9BRF9ERUYgIDB4MAotLyogU2VuZCBwYXkgbG9hZCBzZXBlcmF0ZWx5IHRvIHRyYW5zcG9ydCBsYXllciBhbG9uZyB3aXRoIFBEVS4qLworLyogU2VuZCBwYXkgbG9hZCBzZXBhcmF0ZWx5IHRvIHRyYW5zcG9ydCBsYXllciBhbG9uZyB3aXRoIFBEVS4qLwogI2RlZmluZSBQOV9UUkFOU19QUkVGX1BBWUxPQURfU0VQICAweDEKIAogLyoqCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jYWlmL2NmY25mZy5oIGIvaW5jbHVkZS9uZXQvY2FpZi9jZmNuZmcuaAppbmRleCBmNjg4NDc4Li5mMzNkMzYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9jYWlmL2NmY25mZy5oCisrKyBiL2luY2x1ZGUvbmV0L2NhaWYvY2ZjbmZnLmgKQEAgLTY5LDcgKzY5LDcgQEAKICAqCQljZmNuZmdfYWRkX2FkYXB0X2xheWVyIHRvIHNwZWNpZnkgUEhZIGZvciB0aGUgbGluay4KICAqIEBwcmVmOglUaGUgcGh5IChsaW5rIGxheWVyKSBwcmVmZXJlbmNlLgogICogQGZjczoJU3BlY2lmeSBpZiBjaGVja3N1bSBpcyB1c2VkIGluIENBSUYgRnJhbWluZyBMYXllci4KLSAqIEBzdHg6CVNwZWNpZnkgaWYgU3RhcnQgT2YgRnJhbWUgZVh0ZW50aW9uIGlzIHVzZWQuCisgKiBAc3R4OglTcGVjaWZ5IGlmIFN0YXJ0IE9mIEZyYW1lIGV4dGVuc2lvbiBpcyB1c2VkLgogICovCiAKIHZvaWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2dlbl9zdGF0cy5oIGIvaW5jbHVkZS9uZXQvZ2VuX3N0YXRzLmgKaW5kZXggZmExNTc3MS4uYTc5YjZjZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvZ2VuX3N0YXRzLmgKKysrIGIvaW5jbHVkZS9uZXQvZ2VuX3N0YXRzLmgKQEAgLTExLDcgKzExLDcgQEAKIAlzdHJ1Y3Qgc2tfYnVmZiAqICBza2I7CiAJc3RydWN0IG5sYXR0ciAqICAgdGFpbDsKIAotCS8qIEJhY2t3YXJkIGNvbXBhdGFiaWxpdHkgKi8KKwkvKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCiAJaW50ICAgICAgICAgICAgICAgY29tcGF0X3RjX3N0YXRzOwogCWludCAgICAgICAgICAgICAgIGNvbXBhdF94c3RhdHM7CiAJdm9pZCAqICAgICAgICAgICAgeHN0YXRzOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKaW5kZXggMzBiNDllZC4uZDUxNmYwMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaAorKysgYi9pbmNsdWRlL25ldC9pcF92cy5oCkBAIC01Miw3ICs1Miw3IEBACiAJICovCiAJaWYgKGxpa2VseShza2ItPmRldiAmJiBza2ItPmRldi0+bmRfbmV0KSkKIAkJcmV0dXJuIGRldl9uZXQoc2tiLT5kZXYpOwotCWlmIChza2JfZHN0KHNrYiktPmRldikKKwlpZiAoc2tiX2RzdChza2IpICYmIHNrYl9kc3Qoc2tiKS0+ZGV2KQogCQlyZXR1cm4gZGV2X25ldChza2JfZHN0KHNrYiktPmRldik7CiAJV0FSTihza2ItPnNrLCAiTWF5YmUgc2tiX3NrbmV0IHNob3VsZCBiZSB1c2VkIGluICVzKCkgYXQgbGluZTolZFxuIiwKIAkJICAgICAgX19mdW5jX18sIF9fTElORV9fKTsKQEAgLTkyLDcgKzkyLDcgQEAKIH0KIC8qCiAgKiBUaGlzIG9uZSBuZWVkZWQgZm9yIHNpbmdsZV9vcGVuX25ldCBzaW5jZSBuZXQgaXMgc3RvcmVkIGRpcmVjdGx5IGluCi0gKiBwcml2YXRlIG5vdCBhcyBhIHN0cnVjdCBpLmUuIHNlcV9maWxlX25ldCBjYW50IGJlIHVzZWQuCisgKiBwcml2YXRlIG5vdCBhcyBhIHN0cnVjdCBpLmUuIHNlcV9maWxlX25ldCBjYW4ndCBiZSB1c2VkLgogICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXQgKnNlcV9maWxlX3NpbmdsZV9uZXQoc3RydWN0IHNlcV9maWxlICpzZXEpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcmRhL2lybGFwLmggYi9pbmNsdWRlL25ldC9pcmRhL2lybGFwLmgKaW5kZXggMTdmY2Q5Ni4uZmI0Yjc2ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXJkYS9pcmxhcC5oCisrKyBiL2luY2x1ZGUvbmV0L2lyZGEvaXJsYXAuaApAQCAtMjA0LDcgKzIwNCw3IEBACiAKIAlub3RpZnlfdCBub3RpZnk7IC8qIENhbGxiYWNrcyB0byBJckxNUCAqLwogCi0JaW50ICAgIG10dF9yZXF1aXJlZDsgIC8qIE1pbnVtdW0gdHVybmFyb3VuZCB0aW1lIHJlcXVpcmVkICovCisJaW50ICAgIG10dF9yZXF1aXJlZDsgIC8qIE1pbmltdW0gdHVybmFyb3VuZCB0aW1lIHJlcXVpcmVkICovCiAJaW50ICAgIHhib2ZzX2RlbGF5OyAgIC8qIE5yIG9mIFhCT0YncyB1c2VkIHRvIE1UVCAqLwogCWludCAgICBib2ZzX2NvdW50OyAgICAvKiBOZWdvdGlhdGVkIGV4dHJhIEJPRnMgKi8KIAlpbnQgICAgbmV4dF9ib2ZzOyAgICAgLyogTmVnb3RpYXRlZCBleHRyYSBCT0ZzIGFmdGVyIG5leHQgZnJhbWUgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2lyZGEvd3JhcHBlci5oIGIvaW5jbHVkZS9uZXQvaXJkYS93cmFwcGVyLmgKaW5kZXggMjk0MmFkNi4uZWVmNTNlYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXJkYS93cmFwcGVyLmgKKysrIGIvaW5jbHVkZS9uZXQvaXJkYS93cmFwcGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAKIAogI2RlZmluZSBJUkRBX1RSQU5TIDB4MjAgICAgLyogQXN5bmNocm9ub3VzIHRyYW5zcGFyZW5jeSBtb2RpZmllciAqLyAgICAgICAKIAotLyogU3RhdGVzIGZvciByZWNldmluZyBhIGZyYW1lIGluIGFzeW5jIG1vZGUgKi8KKy8qIFN0YXRlcyBmb3IgcmVjZWl2aW5nIGEgZnJhbWUgaW4gYXN5bmMgbW9kZSAqLwogZW51bSB7CiAJT1VUU0lERV9GUkFNRSwgCiAJQkVHSU5fRlJBTUUsIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXVjdi9pdWN2LmggYi9pbmNsdWRlL25ldC9pdWN2L2l1Y3YuaAppbmRleCAyMDVhMzM2Li4xMTIxYmFhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pdWN2L2l1Y3YuaAorKysgYi9pbmNsdWRlL25ldC9pdWN2L2l1Y3YuaApAQCAtMTczLDcgKzE3Myw3IEBACiAJLyoKIAkgKiBUaGUgbWVzc2FnZV9wZW5kaW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciBhbiBpY3V2IGludGVycnVwdAogCSAqIHR5cGUgMHgwNiBvciB0eXBlIDB4MDcgaGFzIGJlZW4gcmVjZWl2ZWQuIEEgbmV3IG1lc3NhZ2UgaXMKLQkgKiBhdmFpbGFiZSBhbmQgY2FuIGJlIHJlY2VpdmVkIHdpdGggaXVjdl9tZXNzYWdlX3JlY2VpdmUuCisJICogYXZhaWxhYmxlIGFuZCBjYW4gYmUgcmVjZWl2ZWQgd2l0aCBpdWN2X21lc3NhZ2VfcmVjZWl2ZS4KIAkgKi8KIAl2b2lkICgqbWVzc2FnZV9wZW5kaW5nKShzdHJ1Y3QgaXVjdl9wYXRoICosIHN0cnVjdCBpdWN2X21lc3NhZ2UgKik7CiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2l3X2hhbmRsZXIuaCBiL2luY2x1ZGUvbmV0L2l3X2hhbmRsZXIuaAppbmRleCAzYWZkYjIxLi41ZDVhNmE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pd19oYW5kbGVyLmgKKysrIGIvaW5jbHVkZS9uZXQvaXdfaGFuZGxlci5oCkBAIC05MSw3ICs5MSw3IEBACiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGhlIGltcGxlbWVudGF0aW9uIGdvYWxzIHdlcmUgYXMgZm9sbG93IDoKICAqCW8gT2J2aW91cyA6IHlvdSBzaG91bGQgbm90IG5lZWQgYSBQaEQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nLAotICoJCXRoZSBiZW5lZml0IGlzIGVhc2llciBtYWludGFpbmFuY2UuCisgKgkJdGhlIGJlbmVmaXQgaXMgZWFzaWVyIG1haW50ZW5hbmNlLgogICoJbyBGbGV4aWJsZSA6IGl0IHNob3VsZCBhY2NvbW1vZGF0ZSBhIHdpZGUgdmFyaWV0eSBvZiBkcml2ZXIKICAqCQlpbXBsZW1lbnRhdGlvbnMgYW5kIGJlIGFzIGZsZXhpYmxlIGFzIHRoZSBvbGQgQVBJLgogICoJbyBMZWFuIDogaXQgc2hvdWxkIGJlIGVmZmljaWVudCBtZW1vcnkgd2lzZSB0byBtaW5pbWlzZSB0aGUgaW1wYWN0CkBAIC0xMjksNyArMTI5LDcgQEAKICAqCiAgKiBGdW5jdGlvbnMgcHJvdG90eXBlIHVzZXMgdW5pb24gaXdyZXFfZGF0YQogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIFNvbWUgd291bGQgaGF2ZSBwcmVmZXJlZCBmdW5jdGlvbnMgZGVmaW5lZCB0aGlzIHdheSA6CisgKiBTb21lIHdvdWxkIGhhdmUgcHJlZmVycmVkIGZ1bmN0aW9ucyBkZWZpbmVkIHRoaXMgd2F5IDoKICAqCXN0YXRpYyBpbnQgbXlkcml2ZXJfaW9jdGxfc2V0cmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCAKICAqCQkJCQkgIGxvbmcgcmF0ZSwgaW50IGF1dG8pCiAgKiAxKSBUaGUga2VybmVsIGNvZGUgZG9lc24ndCAidmFsaWRhdGUiIHRoZSBjb250ZW50IG9mIGl3cmVxX2RhdGEsIGFuZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKaW5kZXggY2VmZTFiMy4uMDI1ZDRjYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAorKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCkBAIC0xMjk0LDcgKzEyOTQsNyBAQAogICogYWNjZWxlcmF0aW9uIChpLmUuIGl3bHdpZmkpLiBUaG9zZSBkcml2ZXJzIHNob3VsZCBwcm92aWRlIHVwZGF0ZV90a2lwX2tleQogICogaGFuZGxlci4KICAqIFRoZSB1cGRhdGVfdGtpcF9rZXkoKSBjYWxsIHVwZGF0ZXMgdGhlIGRyaXZlciB3aXRoIHRoZSBuZXcgcGhhc2UgMSBrZXkuCi0gKiBUaGlzIGhhcHBlbnMgZXZlcnl0aW1lIHRoZSBpdjE2IHdyYXBzIGFyb3VuZCAoZXZlcnkgNjU1MzYgcGFja2V0cykuIFRoZQorICogVGhpcyBoYXBwZW5zIGV2ZXJ5IHRpbWUgdGhlIGl2MTYgd3JhcHMgYXJvdW5kIChldmVyeSA2NTUzNiBwYWNrZXRzKS4gVGhlCiAgKiBzZXRfa2V5KCkgY2FsbCB3aWxsIGhhcHBlbiBvbmx5IG9uY2UgZm9yIGVhY2gga2V5ICh1bmxlc3MgdGhlIEFQIGRpZAogICogcmVrZXlpbmcpLCBpdCB3aWxsIG5vdCBpbmNsdWRlIGEgdmFsaWQgcGhhc2UgMSBrZXkuIFRoZSB2YWxpZCBwaGFzZSAxIGtleSBpcwogICogcHJvdmlkZWQgYnkgdXBkYXRlX3RraXBfa2V5IG9ubHkuIFRoZSB0cmlnZ2VyIHRoYXQgbWFrZXMgbWFjODAyMTEgY2FsbCB0aGlzCkBAIC0xNzUzLDggKzE3NTMsMTkgQEAKICAqIAl0aGF0IFRYL1JYX1NUT1AgY2FuIHBhc3MgTlVMTCBmb3IgdGhpcyBwYXJhbWV0ZXIuCiAgKglUaGUgQGJ1Zl9zaXplIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlIGFjdGlvbiBpcyBzZXQgdG8KICAqCSVJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUwgYW5kIGluZGljYXRlcyB0aGUgcGVlcidzIHJlb3JkZXIKLSAqCWJ1ZmZlciBzaXplIChudW1iZXIgb2Ygc3ViZnJhbWVzKSBmb3IgdGhpcyBzZXNzaW9uIC0tIGFnZ3JlZ2F0ZXMKLSAqCWNvbnRhaW5pbmcgbW9yZSBzdWJmcmFtZXMgdGhhbiB0aGlzIG1heSBub3QgYmUgdHJhbnNtaXR0ZWQgdG8gdGhlIHBlZXIuCisgKglidWZmZXIgc2l6ZSAobnVtYmVyIG9mIHN1YmZyYW1lcykgZm9yIHRoaXMgc2Vzc2lvbiAtLSB0aGUgZHJpdmVyCisgKgltYXkgbmVpdGhlciBzZW5kIGFnZ3JlZ2F0ZXMgY29udGFpbmluZyBtb3JlIHN1YmZyYW1lcyB0aGFuIHRoaXMKKyAqCW5vciBzZW5kIGFnZ3JlZ2F0ZXMgaW4gYSB3YXkgdGhhdCBsb3N0IGZyYW1lcyB3b3VsZCBleGNlZWQgdGhlCisgKglidWZmZXIgc2l6ZS4gSWYganVzdCBsaW1pdGluZyB0aGUgYWdncmVnYXRlIHNpemUsIHRoaXMgd291bGQgYmUKKyAqCXBvc3NpYmxlIHdpdGggYSBidWZfc2l6ZSBvZiA4OgorICoJIC0gVFg6IDEuLi4uLjcKKyAqCSAtIFJYOiAgMi4uLi43IChsb3N0IGZyYW1lICMxKQorICoJIC0gVFg6ICAgICAgICA4Li4xLi4uCisgKgl3aGljaCBpcyBpbnZhbGlkIHNpbmNlICMxIHdhcyBub3cgcmUtdHJhbnNtaXR0ZWQgd2VsbCBwYXN0IHRoZQorICoJYnVmZmVyIHNpemUgb2YgOC4gQ29ycmVjdCB3YXlzIHRvIHJldHJhbnNtaXQgIzEgd291bGQgYmU6CisgKgkgLSBUWDogICAgICAgMSBvciAxOCBvciA4MQorICoJRXZlbiAiMTg5IiB3b3VsZCBiZSB3cm9uZyBzaW5jZSAxIGNvdWxkIGJlIGxvc3QgYWdhaW4uCisgKgogICoJUmV0dXJucyBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KICAqCVRoZSBjYWxsYmFjayBjYW4gc2xlZXAuCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGt0X3NjaGVkLmggYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaAppbmRleCBkOTU0OWFmLi42NWFmYzQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaAorKysgYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaApAQCAtMzIsNyArMzIsNyBAQAogICAgCiAgICBUaGUgcmVzdWx0OiBbMzRdODYgaXMgbm90IGdvb2QgY2hvaWNlIGZvciBRb1Mgcm91dGVyIDotKAogCi0gICBUaGUgdGhpbmdzIGFyZSBub3Qgc28gYmFkLCBiZWNhdXNlIHdlIG1heSB1c2UgYXJ0aWZpY2FsCisgICBUaGUgdGhpbmdzIGFyZSBub3Qgc28gYmFkLCBiZWNhdXNlIHdlIG1heSB1c2UgYXJ0aWZpY2lhbAogICAgY2xvY2sgZXZhbHVhdGVkIGJ5IGludGVncmF0aW9uIG9mIG5ldHdvcmsgZGF0YSBmbG93CiAgICBpbiB0aGUgbW9zdCBjcml0aWNhbCBwbGFjZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3JvdXRlLmggYi9pbmNsdWRlL25ldC9yb3V0ZS5oCmluZGV4IGY4ODQyOWMuLjhmY2UwNjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3JvdXRlLmgKKysrIGIvaW5jbHVkZS9uZXQvcm91dGUuaApAQCAtNjQsNiArNjQsNyBAQAogCiAJX19iZTMyCQkJcnRfZHN0OwkvKiBQYXRoIGRlc3RpbmF0aW9uCSovCiAJX19iZTMyCQkJcnRfc3JjOwkvKiBQYXRoIHNvdXJjZQkJKi8KKwlpbnQJCQlydF9yb3V0ZV9paWY7CiAJaW50CQkJcnRfaWlmOwogCWludAkJCXJ0X29pZjsKIAlfX3UzMgkJCXJ0X21hcms7CkBAIC04MCwxMiArODEsMTIgQEAKIAogc3RhdGljIGlubGluZSBib29sIHJ0X2lzX2lucHV0X3JvdXRlKHN0cnVjdCBydGFibGUgKnJ0KQogewotCXJldHVybiBydC0+cnRfaWlmICE9IDA7CisJcmV0dXJuIHJ0LT5ydF9yb3V0ZV9paWYgIT0gMDsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHJ0X2lzX291dHB1dF9yb3V0ZShzdHJ1Y3QgcnRhYmxlICpydCkKIHsKLQlyZXR1cm4gcnQtPnJ0X2lpZiA9PSAwOworCXJldHVybiBydC0+cnRfcm91dGVfaWlmID09IDA7CiB9CiAKIHN0cnVjdCBpcF9ydF9hY2N0IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NvY2suaCBiL2luY2x1ZGUvbmV0L3NvY2suaAppbmRleCBkYTA1MzRkLi4wMTgxMGEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9zb2NrLmgKKysrIGIvaW5jbHVkZS9uZXQvc29jay5oCkBAIC0xNzQ5LDcgKzE3NDksNyBAQAogCiAvKgogICogS2VybmVsIHNvY2tldHMsIGYuZS4gcnRubCBvciBpY21wX3NvY2tldCwgYXJlIGEgcGFydCBvZiBhIG5hbWVzcGFjZS4KLSAqIFRoZXkgc2hvdWxkIG5vdCBob2xkIGEgcmVmZXJyZW5jZSB0byBhIG5hbWVzcGFjZSBpbiBvcmRlciB0byBhbGxvdworICogVGhleSBzaG91bGQgbm90IGhvbGQgYSByZWZlcmVuY2UgdG8gYSBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYWxsb3cKICAqIHRvIHN0b3AgaXQuCiAgKiBTb2NrZXRzIGFmdGVyIHNrX2NoYW5nZV9uZXQgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIHNrX3JlbGVhc2Vfa2VybmVsCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RyYW5zcF92Ni5oIGIvaW5jbHVkZS9uZXQvdHJhbnNwX3Y2LmgKaW5kZXggZWViMDc3ZC4uYTgxMjJkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdHJhbnNwX3Y2LmgKKysrIGIvaW5jbHVkZS9uZXQvdHJhbnNwX3Y2LmgKQEAgLTE2LDcgKzE2LDcgQEAKIAogc3RydWN0IGZsb3dpNjsKIAotLyogZXh0ZW50aW9uIGhlYWRlcnMgKi8KKy8qIGV4dGVuc2lvbiBoZWFkZXJzICovCiBleHRlcm4gaW50CQkJCWlwdjZfZXh0aGRyc19pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQJCQkJaXB2Nl9leHRoZHJzX2V4aXQodm9pZCk7CiBleHRlcm4gaW50CQkJCWlwdjZfZnJhZ19pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvd2ltYXguaCBiL2luY2x1ZGUvbmV0L3dpbWF4LmgKaW5kZXggMzQ2MWFhMS4uYzc5OWJhNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvd2ltYXguaAorKysgYi9pbmNsdWRlL25ldC93aW1heC5oCkBAIC0yODYsNyArMjg2LDcgQEAKICAqICAgICBkb2VzIG5vdCBkaXNjb25uZWN0IHRoZSBkZXZpY2UgZnJvbSB0aGUgYnVzIGFuZCByZXR1cm4gMC4KICAqICAgICBJZiB0aGF0IGZhaWxzLCBpdCBzaG91bGQgcmVzb3J0IHRvIHNvbWUgc29ydCBvZiBjb2xkIG9yIGJ1cwogICogICAgIHJlc2V0IChldmVuIGlmIGl0IGltcGxpZXMgYSBidXMgZGlzY29ubmVjdGlvbiBhbmQgZGV2aWNlCi0gKiAgICAgZGlzc2FwZWFyYW5jZSkuIEluIHRoYXQgY2FzZSwgLUVOT0RFViBzaG91bGQgYmUgcmV0dXJuZWQgdG8KKyAqICAgICBkaXNhcHBlYXJhbmNlKS4gSW4gdGhhdCBjYXNlLCAtRU5PREVWIHNob3VsZCBiZSByZXR1cm5lZCB0bwogICogICAgIGluZGljYXRlIHRoZSBkZXZpY2UgaXMgZ29uZS4KICAqICAgICBUaGlzIG9wZXJhdGlvbiBoYXMgdG8gYmUgc3luY2hyb25vdXMsIGFuZCByZXR1cm4gb25seSB3aGVuIHRoZQogICogICAgIHJlc2V0IGlzIGNvbXBsZXRlLiBJbiBjYXNlIG9mIGhhdmluZyBoYWQgdG8gcmVzb3J0IHRvIGJ1cy9jb2xkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC93cGFuLXBoeS5oIGIvaW5jbHVkZS9uZXQvd3Bhbi1waHkuaAppbmRleCA4NTkyNjIzLi5kODZmZmZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC93cGFuLXBoeS5oCisrKyBiL2luY2x1ZGUvbmV0L3dwYW4tcGh5LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAlzdHJ1Y3QgbXV0ZXggcGliX2xvY2s7CiAKIAkvKgotCSAqIFRoaXMgaXMgYSBQSUIgYWNvcmRpbmcgdG8gODAyLjE1LjQtMjAwNi4KKwkgKiBUaGlzIGlzIGEgUElCIGFjY29yZGluZyB0byA4MDIuMTUuNC0yMDA2LgogCSAqIFdlIGRvIG5vdCBwcm92aWRlIHRpbWluZy1yZWxhdGVkIHZhcmlhYmxlcywgYXMgdGhleQogCSAqIGFyZW4ndCB1c2VkIG91dHNpZGUgb2YgZHJpdmVyCiAJICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3J4cnBjL3BhY2tldC5oIGIvaW5jbHVkZS9yeHJwYy9wYWNrZXQuaAppbmRleCA5YjJjMzA4Li5mMjkwMmVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3J4cnBjL3BhY2tldC5oCisrKyBiL2luY2x1ZGUvcnhycGMvcGFja2V0LmgKQEAgLTE0OCw3ICsxNDgsNyBAQAogICogS2VyYmVyb3Mgc2VjdXJpdHkgdHlwZS0yIHJlc3BvbnNlIHBhY2tldAogICovCiBzdHJ1Y3QgcnhrYWRfcmVzcG9uc2UgewotCV9fYmUzMgkJdmVyc2lvbjsJLyogdmVyc2lvbiBvZiB0aGlzIHJlcG9uc2UgdHlwZSAqLworCV9fYmUzMgkJdmVyc2lvbjsJLyogdmVyc2lvbiBvZiB0aGlzIHJlc3BvbnNlIHR5cGUgKi8KIAlfX2JlMzIJCV9fcGFkOwogCiAJLyogZW5jcnlwdGVkIGJpdCBvZiB0aGUgcmVzcG9uc2UgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9mYy9mY19mY3AuaCBiL2luY2x1ZGUvc2NzaS9mYy9mY19mY3AuaAppbmRleCA4YTE0M2NhLi42NTJkZWMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvZmMvZmNfZmNwLmgKKysrIGIvaW5jbHVkZS9zY3NpL2ZjL2ZjX2ZjcC5oCkBAIC03NSw3ICs3NSw3IEBACiAjZGVmaW5lCUZDUF9QVEFfU0lNUExFCSAgICAwCS8qIHNpbXBsZSB0YXNrIGF0dHJpYnV0ZSAqLwogI2RlZmluZQlGQ1BfUFRBX0hFQURRCSAgICAxCS8qIGhlYWQgb2YgcXVldWUgdGFzayBhdHRyaWJ1dGUgKi8KICNkZWZpbmUJRkNQX1BUQV9PUkRFUkVEICAgICAyCS8qIG9yZGVyZWQgdGFzayBhdHRyaWJ1dGUgKi8KLSNkZWZpbmUJRkNQX1BUQV9BQ0EJICAgIDQJLyogYXV0by4gY29udGlnZW50IGFsbGVnaWFuY2UgKi8KKyNkZWZpbmUJRkNQX1BUQV9BQ0EJICAgIDQJLyogYXV0by4gY29udGluZ2VudCBhbGxlZ2lhbmNlICovCiAjZGVmaW5lCUZDUF9QVEFfTUFTSwkgICAgNwkvKiBtYXNrIGZvciB0YXNrIGF0dHJpYnV0ZSBmaWVsZCAqLwogI2RlZmluZQlGQ1BfUFJJX1NISUZUCSAgICAzCS8qIHByaW9yaXR5IGZpZWxkIHN0YXJ0cyBpbiBiaXQgMyAqLwogI2RlZmluZQlGQ1BfUFJJX1JFU1ZEX01BU0sgIDB4ODAJLyogcmVzZXJ2ZWQgYml0cyBpbiBwcmlvcml0eSBmaWVsZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL2lzY3NpX2lmLmggYi9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaAppbmRleCBjM2UxY2JjLi5kZGIwNDU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaAorKysgYi9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaApAQCAtMjkyLDcgKzI5Miw3IEBACiAJSVNDU0lfUEFSQU1fUEVSU0lTVEVOVF9QT1JULAogCUlTQ1NJX1BBUkFNX1NFU1NfUkVDT1ZFUllfVE1PLAogCi0JLyogcGFzZWQgaW4gdGhyb3VnaCBiaW5kIGNvbm4gdXNpbmcgdHJhbnNwb3J0X2ZkICovCisJLyogcGFzc2VkIGluIHRocm91Z2ggYmluZCBjb25uIHVzaW5nIHRyYW5zcG9ydF9mZCAqLwogCUlTQ1NJX1BBUkFNX0NPTk5fUE9SVCwKIAlJU0NTSV9QQVJBTV9DT05OX0FERFJFU1MsCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9saWJmYy5oIGIvaW5jbHVkZS9zY3NpL2xpYmZjLmgKaW5kZXggMjQxOTNjMS4uYTNjYmRhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL2xpYmZjLmgKKysrIGIvaW5jbHVkZS9zY3NpL2xpYmZjLmgKQEAgLTI2MCw3ICsyNjAsNyBAQAogLyoqCiAgKiBzdHJ1Y3QgZmNfc2VxX2Vsc19kYXRhIC0gRUxTIGRhdGEgdXNlZCBmb3IgcGFzc2luZyBFTFMgc3BlY2lmaWMgcmVzcG9uc2VzCiAgKiBAcmVhc29uOiBUaGUgcmVhc29uIGZvciByZWplY3Rpb24KLSAqIEBleHBsYW46IFRoZSBleHBsYWluYXRpb24gb2YgdGhlIHJlamVjdGlvbgorICogQGV4cGxhbjogVGhlIGV4cGxhbmF0aW9uIG9mIHRoZSByZWplY3Rpb24KICAqCiAgKiBNYWlubHkgdXNlZCBieSB0aGUgZXhjaGFuZ2UgbWFuYWdlciBsYXllci4KICAqLwpAQCAtNTI1LDcgKzUyNSw3IEBACiAJCQlzdHJ1Y3QgZmNfZnJhbWUgKik7CiAKIAkvKgotCSAqIFNlbmQgYW4gRUxTIHJlc3BvbnNlIHVzaW5nIGluZm9tYXRpb24gZnJvbSB0aGUgcmVjZWl2ZWQgZnJhbWUuCisJICogU2VuZCBhbiBFTFMgcmVzcG9uc2UgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVjZWl2ZWQgZnJhbWUuCiAJICoKIAkgKiBTVEFUVVM6IE9QVElPTkFMCiAJICovCkBAIC02NjMsNyArNjYzLDcgQEAKIAlpbnQgKCpycG9ydF9sb2dvZmYpKHN0cnVjdCBmY19ycG9ydF9wcml2ICopOwogCiAJLyoKLQkgKiBSZWNpZXZlIGEgcmVxdWVzdCBmcm9tIGEgcmVtb3RlIHBvcnQuCisJICogUmVjZWl2ZSBhIHJlcXVlc3QgZnJvbSBhIHJlbW90ZSBwb3J0LgogCSAqCiAJICogU1RBVFVTOiBPUFRJT05BTAogCSAqLwpAQCAtNzA0LDcgKzcwNCw3IEBACiAJCQkJCSB2b2lkICopKTsKIAogCS8qCi0JICogQ2xlYW51cCB0aGUgRkNQIGxheWVyLCB1c2VkIGR1cnJpbmcgbGluayBkb3duIGFuZCByZXNldAorCSAqIENsZWFudXAgdGhlIEZDUCBsYXllciwgdXNlZCBkdXJpbmcgbGluayBkb3duIGFuZCByZXNldAogCSAqCiAJICogU1RBVFVTOiBPUFRJT05BTAogCSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL2xpYmlzY3NpX3RjcC5oIGIvaW5jbHVkZS9zY3NpL2xpYmlzY3NpX3RjcC5oCmluZGV4IGU2YjlmZDIuLmFjMGNjMWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9saWJpc2NzaV90Y3AuaAorKysgYi9pbmNsdWRlL3Njc2kvbGliaXNjc2lfdGNwLmgKQEAgLTUyLDcgKzUyLDcgQEAKIAlpc2NzaV9zZWdtZW50X2RvbmVfZm5fdAkqZG9uZTsKIH07CiAKLS8qIFNvY2tldCBjb25uZWN0aW9uIHJlY2lldmUgaGVscGVyICovCisvKiBTb2NrZXQgY29ubmVjdGlvbiByZWNlaXZlIGhlbHBlciAqLwogc3RydWN0IGlzY3NpX3RjcF9yZWN2IHsKIAlzdHJ1Y3QgaXNjc2lfaGRyCSpoZHI7CiAJc3RydWN0IGlzY3NpX3NlZ21lbnQJc2VnbWVudDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9vc2RfaW5pdGlhdG9yLmggYi9pbmNsdWRlL3Njc2kvb3NkX2luaXRpYXRvci5oCmluZGV4IDUzYTllODguLjBhNTA3OTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9vc2RfaW5pdGlhdG9yLmgKKysrIGIvaW5jbHVkZS9zY3NpL29zZF9pbml0aWF0b3IuaApAQCAtMjY1LDcgKzI2NSw3IEBACiAgKiBAb3NpICAgICAgICAgICAtIFJlY2lldnMgYSBtb3JlIGRldGFpbGVkIGVycm9yIHJlcG9ydCBpbmZvcm1hdGlvbiAob3B0aW9uYWwpLgogICogQHNpbGVudCAgICAgICAgLSBEbyBub3QgcHJpbnQgdG8gZG1zZyAoRXZlbiBpZiBlbmFibGVkKQogICogQGJhZF9vYmpfbGlzdCAgLSBTb21lIGNvbW1hbmRzIGFjdCBvbiBtdWx0aXBsZSBvYmplY3RzLiBGYWlsZWQgb2JqZWN0cyB3aWxsCi0gKiAgICAgICAgICAgICAgICAgIGJlIHJlY2lldmVkIGhlcmUgKG9wdGlvbmFsKQorICogICAgICAgICAgICAgICAgICBiZSByZWNlaXZlZCBoZXJlIChvcHRpb25hbCkKICAqIEBtYXhfb2JqICAgICAgIC0gU2l6ZSBvZiBAYmFkX29ial9saXN0LgogICogQGJhZF9hdHRyX2xpc3QgLSBMaXN0IG9mIGZhaWxpbmcgYXR0cmlidXRlcyAob3B0aW9uYWwpCiAgKiBAbWF4X2F0dHIgICAgICAtIFNpemUgb2YgQGJhZF9hdHRyX2xpc3QuCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmggYi9pbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmgKaW5kZXggZTdlMzg1OC4uZjFmMjY0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL3Njc2lfaG9zdC5oCisrKyBiL2luY2x1ZGUvc2NzaS9zY3NpX2hvc3QuaApAQCAtNDYsNyArNDYsNyBAQAogZW51bSB7CiAJU0NTSV9RREVQVEhfREVGQVVMVCwJLyogZGVmYXVsdCByZXF1ZXN0ZWQgY2hhbmdlLCBlLmcuIGZyb20gc3lzZnMgKi8KIAlTQ1NJX1FERVBUSF9RRlVMTCwJLyogc2NzaS1tbCByZXF1ZXN0ZWQgZHVlIHRvIHF1ZXVlIGZ1bGwgKi8KLQlTQ1NJX1FERVBUSF9SQU1QX1VQLAkvKiBzY3NpLW1sIHJlcXVlc3RlZCBkdWUgdG8gdGhyZXNoaG9sZCBldmVudCAqLworCVNDU0lfUURFUFRIX1JBTVBfVVAsCS8qIHNjc2ktbWwgcmVxdWVzdGVkIGR1ZSB0byB0aHJlc2hvbGQgZXZlbnQgKi8KIH07CiAKIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmggYi9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaAppbmRleCA1OTgxNmZlLi4yYTY1MTY3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaAorKysgYi9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaApAQCAtMTkyLDkgKzE5Miw5IEBACiAgKgogICogVGhpcyBzdHJ1Y3R1cmUgZXhpc3RzIGZvciBlYWNoIEZDIHBvcnQgaXMgYSB2aXJ0dWFsIEZDIHBvcnQuIFZpcnR1YWwKICAqIHBvcnRzIHNoYXJlIHRoZSBwaHlzaWNhbCBsaW5rIHdpdGggdGhlIFBoeXNpY2FsIHBvcnQuIEVhY2ggdmlydHVhbAotICogcG9ydHMgaGFzIGEgdW5pcXVlIHByZXNlbnNlIG9uIHRoZSBTQU4sIGFuZCBtYXkgYmUgaW5zdGFudGlhdGVkIHZpYQorICogcG9ydHMgaGFzIGEgdW5pcXVlIHByZXNlbmNlIG9uIHRoZSBTQU4sIGFuZCBtYXkgYmUgaW5zdGFudGlhdGVkIHZpYQogICogTlBJViwgVmlydHVhbCBGYWJyaWNzLCBvciB2aWEgYWRkaXRpb25hbCBBTFBBcy4gQXMgdGhlIHZwb3J0IGlzIGEKLSAqIHVuaXF1ZSBwcmVzZW5zZSwgZWFjaCB2cG9ydCBoYXMgaXQncyBvd24gdmlldyBvZiB0aGUgZmFicmljLAorICogdW5pcXVlIHByZXNlbmNlLCBlYWNoIHZwb3J0IGhhcyBpdCdzIG93biB2aWV3IG9mIHRoZSBmYWJyaWMsCiAgKiBhdXRoZW50aWNhdGlvbiBwcml2aWxlZ2UsIGFuZCBwcmlvcml0aWVzLgogICoKICAqIEEgdmlydHVhbCBwb3J0IG1heSBzdXBwb3J0IDEgb3IgbW9yZSBGQzQgcm9sZXMuIFR5cGljYWxseSBpdCBpcyBhCkBAIC0zNzAsNyArMzcwLDcgQEAKIC8qCiAgKiBGQyBTQ1NJIFRhcmdldCBBdHRyaWJ1dGVzCiAgKgotICogVGhlIFNDU0kgVGFyZ2V0IGlzIGNvbnNpZGVyZWQgYW4gZXh0ZW50aW9uIG9mIGEgcmVtb3RlIHBvcnQgKGFzCisgKiBUaGUgU0NTSSBUYXJnZXQgaXMgY29uc2lkZXJlZCBhbiBleHRlbnNpb24gb2YgYSByZW1vdGUgcG9ydCAoYXMKICAqIGEgcmVtb3RlIHBvcnQgY2FuIGJlIG1vcmUgdGhhbiBhIFNDU0kgVGFyZ2V0KS4gV2l0aGluIHRoZSBzY3NpCiAgKiBzdWJzeXN0ZW0sIHdlIGxlYXZlIHRoZSBUYXJnZXQgYXMgYSBzZXBhcmF0ZSBlbnRpdHkuIERvaW5nIHNvCiAgKiBwcm92aWRlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggcHJpb3IgRkMgdHJhbnNwb3J0IGFwaSdzLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmggYi9pbmNsdWRlL3NvdW5kL2FjOTdfY29kZWMuaAppbmRleCBmMWRjZWZlNC4uMDJjYmI1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKQEAgLTM4NSw3ICszODUsNyBAQAogI2RlZmluZSBBQzk3X1NDQVBfREVURUNUX0JZX1ZFTkRPUiAoMTw8OCkgLyogdXNlIHZlbmRvciByZWdpc3RlcnMgZm9yIHJlYWQgdGVzdHMgKi8KICNkZWZpbmUgQUM5N19TQ0FQX05PX1NQRElGCSgxPDw5KQkvKiBkb24ndCBidWlsZCBTUERJRiBjb250cm9scyAqLwogI2RlZmluZSBBQzk3X1NDQVBfRUFQRF9MRUQJKDE8PDEwKQkvKiBFQVBEIGFzIG11dGUgTEVEICovCi0jZGVmaW5lIEFDOTdfU0NBUF9QT1dFUl9TQVZFCSgxPDwxMSkJLyogY2FwYWJsZSBmb3IgYWdncmVzaXZlIHBvd2VyLXNhdmluZyAqLworI2RlZmluZSBBQzk3X1NDQVBfUE9XRVJfU0FWRQkoMTw8MTEpCS8qIGNhcGFibGUgZm9yIGFnZ3Jlc3NpdmUgcG93ZXItc2F2aW5nICovCiAKIC8qIGFjOTctPmZsYWdzICovCiAjZGVmaW5lIEFDOTdfSEFTX1BDX0JFRVAJKDE8PDApCS8qIGZvcmNlIFBDIFNwZWFrZXIgdXNhZ2UgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvY29udHJvbC5oIGIvaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKaW5kZXggZTY3ZGIyOC4uNDA0YWNiOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKQEAgLTE5MSw3ICsxOTEsNyBAQAogICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc3NmdWwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgogICoKICAqIEFsbCBzbGF2ZXMgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIChyZXR1cm5pbmcgdGhlIHNhbWUgaW5mb3JtYXRpb24KLSAqIHZpYSBpbmZvIGNhbGxiYWNrKS4gIFRoZSBmdWNudGlvbiBkb2Vzbid0IGNoZWNrIGl0LCBzbyBpdCdzIHlvdXIKKyAqIHZpYSBpbmZvIGNhbGxiYWNrKS4gIFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNoZWNrIGl0LCBzbyBpdCdzIHlvdXIKICAqIHJlc3BvbnNpYmlsaXR5LgogICoKICAqIEFsc28sIHNvbWUgYWRkaXRpb25hbCBsaW1pdGF0aW9uczoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvY3M0Nnh4X2RzcF9zcG9zLmggYi9pbmNsdWRlL3NvdW5kL2NzNDZ4eF9kc3Bfc3Bvcy5oCmluZGV4IDQ5YjAzYzkuLjgwMDhjNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvY3M0Nnh4X2RzcF9zcG9zLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9jczQ2eHhfZHNwX3Nwb3MuaApAQCAtMTQ3LDcgKzE0Nyw3IEBACiB9OwogCiBzdHJ1Y3QgZHNwX3Nwb3NfaW5zdGFuY2UgewotCXN0cnVjdCBkc3Bfc3ltYm9sX2Rlc2Mgc3ltYm9sX3RhYmxlOyAvKiBjdXJyZW50bHkgYXZhaWxibGUgbG9hZGVkIHN5bWJvbHMgaW4gU1AgKi8KKwlzdHJ1Y3QgZHNwX3N5bWJvbF9kZXNjIHN5bWJvbF90YWJsZTsgLyogY3VycmVudGx5IGF2YWlsYWJsZSBsb2FkZWQgc3ltYm9scyBpbiBTUCAqLwogCiAJaW50IG5tb2R1bGVzOwogCXN0cnVjdCBkc3BfbW9kdWxlX2Rlc2MgKiBtb2R1bGVzOyAvKiBtb2R1bGVzIGxvYWRlZCBpbnRvIFNQICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKaW5kZXggMTc3NGZmNS4uMWY1OWVhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCisrKyBiL2luY2x1ZGUvc291bmQvaGRzcG0uaApAQCAtMTkzLDcgKzE5Myw3IEBACiAgKiAzMjc2OCBCeXRlcwogICovCiAKLS8qIG9yZ2FuaXNhdGlvbiBpcyA2NCBjaGFubmVsZmFkZXIgaW4gYSBjb250aW5vdXMgbWVtb3J5IGJsb2NrICovCisvKiBvcmdhbmlzYXRpb24gaXMgNjQgY2hhbm5lbGZhZGVyIGluIGEgY29udGludW91cyBtZW1vcnkgYmxvY2sgKi8KIC8qIGVxdWl2YWxlbnQgdG8gaGFyZHdhcmUgZGVmaW5pdGlvbiwgbWF5YmUgZm9yIGZ1dHVyZSBmZWF0dXJlIG9mIG1tYXAgb2YKICAqIHRoZW0KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9zb2MtZGFwbS5oIGIvaW5jbHVkZS9zb3VuZC9zb2MtZGFwbS5oCmluZGV4IGRkYzJiM2QuLmY3MmMxMDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvc29jLWRhcG0uaAorKysgYi9pbmNsdWRlL3NvdW5kL3NvYy1kYXBtLmgKQEAgLTIzLDcgKzIzLDcgQEAKIC8qCiAgKiBTb0MgZHluYW1pYyBhdWRpbyBwb3dlciBtYW5hZ2VtZW50CiAgKgotICogV2UgY2FuIGhhdmUgdXB0byA0IHBvd2VyIGRvbWFpbnMKKyAqIFdlIGNhbiBoYXZlIHVwIHRvIDQgcG93ZXIgZG9tYWlucwogICogCTEuIENvZGVjIGRvbWFpbiAtIFZSRUYsIFZNSUQKICAqICAgICBVc3VhbGx5IGNvbnRyb2xsZWQgYXQgY29kZWMgcHJvYmUvcmVtb3ZlLCBhbHRob3VnaCBjYW4gYmUgc2V0CiAgKiAgICAgYXQgc3RyZWFtIHRpbWUgaWYgcG93ZXIgaXMgbm90IG5lZWRlZCBmb3Igc2lkZXRvbmUsIGV0Yy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2Jhc2UuaCBiL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2Jhc2UuaAppbmRleCBjMTVlZDUwLi4xZDNiNWIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9iYXNlLmgKKysrIGIvaW5jbHVkZS90YXJnZXQvdGFyZ2V0X2NvcmVfYmFzZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBOb3RlIHRoYXQgYm90aCBpbmNsdWRlL3Njc2kvc2NzaV9jbW5kLmg6TUFYX0NPTU1BTkRfU0laRSBhbmQKICAqIGluY2x1ZGUvbGludXgvYmxrZGV2Lmg6QkxPQ0tfTUFYX0NEQiBhcyBvZiB2Mi42LjM2LXJjNCBzdGlsbCB1c2UKICAqIDE2LWJ5dGUgQ0RCcyBieSBkZWZhdWx0IGFuZCByZXF1aXJlIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yCi0gKiAzMi1ieXRlIENEQnMgdG8gYmVjYXN1ZSBvZiBsZWdhY3kgaXNzdWVzLgorICogMzItYnl0ZSBDREJzIHRvIGJlY2F1c2Ugb2YgbGVnYWN5IGlzc3Vlcy4KICAqCiAgKiBXaXRoaW4gVENNIENvcmUgdGhlcmUgYXJlIG5vIHN1Y2ggbGVnYWN5IGxpbWl0aWF0aW9ucywgc28gd2UgZ28gYWhlYWQKICAqIHVzZSAzMi1ieXRlIENEQnMgYnkgZGVmYXVsdCBhbmQgdXNlIGluY2x1ZGUvc2NzaS9zY3NpLmg6c2NzaV9jb21tYW5kX3NpemUoKQpAQCAtMzAyLDcgKzMwMiw3IEBACiAKIAogLyoKLSAqIFVzZWQgYnkgVENNIENvcmUgaW50ZXJuYWxseSB0byBzaWduYWwgaWYgPj0gU1BDLTMgcGVyaXN0ZW50IHJlc2VydmF0aW9ucworICogVXNlZCBieSBUQ00gQ29yZSBpbnRlcm5hbGx5IHRvIHNpZ25hbCBpZiA+PSBTUEMtMyBwZXJzaXN0ZW50IHJlc2VydmF0aW9ucwogICogZW11bGF0aW9uIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIG9yIHJ1bm5pbmcgaW4gd2l0aCBUQ00vcFNDU0kgcGFzc3Rocm91Z2gKICAqIG1vZGUKICAqLwpAQCAtOTM0LDcgKzkzNCw3IEBACiAJc3RydWN0IGxpc3RfaGVhZAlhY2xfbm9kZV9saXN0OwogCXN0cnVjdCBzZV9sdW4JCSp0cGdfbHVuX2xpc3Q7CiAJc3RydWN0IHNlX2x1bgkJdHBnX3ZpcnRfbHVuMDsKLQkvKiBMaXN0IG9mIFRDTSBzZXNzaW9ucyBhc3NvaWNhdGVkIHd0aCB0aGlzIFRQRyAqLworCS8qIExpc3Qgb2YgVENNIHNlc3Npb25zIGFzc29jaWF0ZWQgd3RoIHRoaXMgVFBHICovCiAJc3RydWN0IGxpc3RfaGVhZAl0cGdfc2Vzc19saXN0OwogCS8qIFBvaW50ZXIgdG8gJEZBQlJJQ19NT0QgZGVwZW5kZW50IGNvZGUgKi8KIAlzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmFicmljX29wcyAqc2VfdHBnX3RmbzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19vcHMuaCBiL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19vcHMuaAppbmRleCA1ZWI4YjFhLi5kYzc4Zjc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfb3BzLmgKKysrIGIvaW5jbHVkZS90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX29wcy5oCkBAIC0zNSw3ICszNSw3IEBACiAJLyoKIAkgKiBPcHRpb25hbCBmdW5jdGlvbiBwb2ludGVyIGZvciBUQ00gdG8gcGVyZm9ybSBjb21tYW5kIG1hcAogCSAqIGZyb20gVENNIHByb2Nlc3NpbmcgdGhyZWFkIGNvbnRleHQsIGZvciB0aG9zZSBzdHJ1Y3Qgc2VfY21kCi0JICogaW5pdGFsbHkgYWxsb2NhdGVkIGluIGludGVycnVwdCBjb250ZXh0LgorCSAqIGluaXRpYWxseSBhbGxvY2F0ZWQgaW4gaW50ZXJydXB0IGNvbnRleHQuCiAJICovCiAJaW50ICgqbmV3X2NtZF9tYXApKHN0cnVjdCBzZV9jbWQgKik7CiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8va3lyby5oIGIvaW5jbHVkZS92aWRlby9reXJvLmgKaW5kZXggZGJhN2RlMi4uYzU2Mzk2OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS92aWRlby9reXJvLmgKKysrIGIvaW5jbHVkZS92aWRlby9reXJvLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAl1MzIgUElYQ0xLOwkvKiBQaXhlbCBDbG9jayAgICAgICAqLwogCXUzMiBIQ0xLOwkvKiBIb3IgQ2xvY2sgICAgICAgICAqLwogCi0JLyogVXNlZnVsbCB0byBob2xkIGRlcHRoIGhlcmUgZm9yIExpbnV4ICovCisJLyogVXNlZnVsIHRvIGhvbGQgZGVwdGggaGVyZSBmb3IgTGludXggKi8KIAl1OCBQSVhERVBUSDsKIAogI2lmZGVmIENPTkZJR19NVFJSCmRpZmYgLS1naXQgYS9pbmNsdWRlL3ZpZGVvL25lb21hZ2ljLmggYi9pbmNsdWRlL3ZpZGVvL25lb21hZ2ljLmgKaW5kZXggMDhiNjYzNy4uYmM1MDEzZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS92aWRlby9uZW9tYWdpYy5oCisrKyBiL2luY2x1ZGUvdmlkZW8vbmVvbWFnaWMuaApAQCAtMTI5LDcgKzEyOSw3IEBACiAJdW5zaWduZWQgY2hhciBDUlRDWzI1XTsJCS8qIENydGMgQ29udHJvbGxlciAqLwogCXVuc2lnbmVkIGNoYXIgU2VxdWVuY2VyWzVdOwkvKiBWaWRlbyBTZXF1ZW5jZXIgKi8KIAl1bnNpZ25lZCBjaGFyIEdyYXBoaWNzWzldOwkvKiBWaWRlbyBHcmFwaGljcyAqLwotCXVuc2lnbmVkIGNoYXIgQXR0cmlidXRlWzIxXTsJLyogVmlkZW8gQXRyaWJ1dGUgKi8KKwl1bnNpZ25lZCBjaGFyIEF0dHJpYnV0ZVsyMV07CS8qIFZpZGVvIEF0dHJpYnV0ZSAqLwogCiAJdW5zaWduZWQgY2hhciBHZW5lcmFsTG9ja1JlZzsKIAl1bnNpZ25lZCBjaGFyIEV4dENSVERpc3BBZGRyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS92aWRlby9uZXdwb3J0LmggYi9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaAppbmRleCAwMDFiOTM1Li4zZDdjNGI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaAorKysgYi9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaApAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTYgRGF2aWQgUy4gTWlsbGVyIChkbUBlbmdyLnNnaS5jb20pCiAgKiAKLSAqIFVsZiBDYXJsc3NvbiAtIENvbXBhYmlsaXR5IHdpdGggdGhlIElSSVggc3RydWN0dXJlcyBhZGRlZAorICogVWxmIENhcmxzc29uIC0gQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBJUklYIHN0cnVjdHVyZXMgYWRkZWQKICAqLwogCiAjaWZuZGVmIF9TR0lfTkVXUE9SVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3ZpZGVvL3Npc2ZiLmggYi9pbmNsdWRlL3ZpZGVvL3Npc2ZiLmgKaW5kZXggZmRkNzRmMS4uNmRjNWRmOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS92aWRlby9zaXNmYi5oCisrKyBiL2luY2x1ZGUvdmlkZW8vc2lzZmIuaApAQCAtMTUxLDcgKzE1MSw3IEBACiAJX191MzIgIHNpc2ZiX3Jlc3VsdFs0XTsKIH07CiAKLS8qIEFkZHRpb25hbCBJT0NUTHMgZm9yIGNvbW11bmljYXRpb24gc2lzZmIgPD4gWCBkcml2ZXIgICAgICAgICAgICAgICAgKi8KKy8qIEFkZGl0aW9uYWwgSU9DVExzIGZvciBjb21tdW5pY2F0aW9uIHNpc2ZiIDw+IFggZHJpdmVyICAgICAgICAgICAgICAgICovCiAvKiBJZiBjaGFuZ2luZyB0aGlzLCB2Z2F0eXBlcy5oIG11c3QgYWxzbyBiZSBjaGFuZ2VkIChmb3IgWCBkcml2ZXIpICAgICovCiAKIC8qIGlvY3RsIGZvciBpZGVudGlmeWluZyBhbmQgZ2l2aW5nIHNvbWUgaW5mbyAoZXNwLiBtZW1vcnkgaGVhcCBzdGFydCkgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8vc3N0ZmIuaCBiL2luY2x1ZGUvdmlkZW8vc3N0ZmIuaAppbmRleCBiNTJmMDczLi5jNDQ5ZWFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL3ZpZGVvL3NzdGZiLmgKKysrIGIvaW5jbHVkZS92aWRlby9zc3RmYi5oCkBAIC0xNTYsNyArMTU2LDcgQEAKICNkZWZpbmUgREFDX1JFQUQJCUZCSUlOSVQyCS8qIGluIHJlbWFwIG1vZGUgKi8KICNkZWZpbmUgRkJJSU5JVDMJCTB4MDIxYwkJLyogZmJpIGNvbnRyb2xzICovCiAjICBkZWZpbmUgRElTQUJMRV9URVhUVVJFCSAgQklUKDYpCi0jICBkZWZpbmUgWV9TV0FQX09SSUdJTl9TSElGVAkgIDIyCQkvKiBZIHN3YXAgc3Vic3RyYWN0aW9uIHZhbHVlICovCisjICBkZWZpbmUgWV9TV0FQX09SSUdJTl9TSElGVAkgIDIyCQkvKiBZIHN3YXAgc3VidHJhY3Rpb24gdmFsdWUgKi8KICNkZWZpbmUgSFNZTkMJCQkweDAyMjAKICNkZWZpbmUgVlNZTkMJCQkweDAyMjQKICNkZWZpbmUgREFDX0RBVEEJCTB4MDIyYwpAQCAtMjEyLDkgKzIxMiw5IEBACiAjICBkZWZpbmUgREFDUkVHX0NSMF8yNEJQUAkgIDB4NTAJCS8qIG1vZGUgNSAqLwogI2RlZmluZQlEQUNSRUdfQ1IxX0kJCTB4MDUKICNkZWZpbmUgREFDUkVHX0NDX0kJCTB4MDYKLSMgIGRlZmluZSBEQUNSRUdfQ0NfQ0xLQQkgIEJJVCg3KQkvKiBjbGsgQSBjb250cm9sZWQgYnkgcmVncyAqLworIyAgZGVmaW5lIERBQ1JFR19DQ19DTEtBCSAgQklUKDcpCS8qIGNsayBBIGNvbnRyb2xsZWQgYnkgcmVncyAqLwogIyAgZGVmaW5lIERBQ1JFR19DQ19DTEtBX0MJICAoMjw8NCkJLyogY2xrIEEgdXNlcyByZWcgQyAqLwotIyAgZGVmaW5lIERBQ1JFR19DQ19DTEtCCSAgQklUKDMpCS8qIGNsayBCIGNvbnRyb2xlZCBieSByZWdzICovCisjICBkZWZpbmUgREFDUkVHX0NDX0NMS0IJICBCSVQoMykJLyogY2xrIEIgY29udHJvbGxlZCBieSByZWdzICovCiAjICBkZWZpbmUgREFDUkVHX0NDX0NMS0JfRAkgIDMJCS8qIGNsa0IgdXNlcyByZWcgRCAqLwogI2RlZmluZSBEQUNSRUdfQUMwX0kJCTB4NDgJCS8qIGNsb2NrIEEgcmVnIEMgKi8KICNkZWZpbmUgREFDUkVHX0FDMV9JCQkweDQ5CmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9pbnRlcmZhY2UvZWxmbm90ZS5oIGIvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2VsZm5vdGUuaAppbmRleCA3YTgyNjJjLi4wMzYwYjE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbi9pbnRlcmZhY2UvZWxmbm90ZS5oCisrKyBiL2luY2x1ZGUveGVuL2ludGVyZmFjZS9lbGZub3RlLmgKQEAgLTUxLDcgKzUxLDcgQEAKIAogLyoKICAqIFRoZSBvZmZzZXQgb2YgdGhlIEVMRiBwYWRkciBmaWVsZCBmcm9tIHRoZSBhY3V0YWwgcmVxdWlyZWQKLSAqIHBzdWVkby1waHlzaWNhbCBhZGRyZXNzIChudW1lcmljKS4KKyAqIHBzZXVkby1waHlzaWNhbCBhZGRyZXNzIChudW1lcmljKS4KICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBrZXJuZWxzCiAgKiB3aGljaCB3cm90ZSBfX1BBR0VfT0ZGU0VUIGludG8gdGhhdCBmaWVsZC4gVGhpcyBmaWVsZCBkZWZhdWx0cyB0byAwCmRpZmYgLS1naXQgYS9pbml0L2RvX21vdW50cy5jIGIvaW5pdC9kb19tb3VudHMuYwppbmRleCAzZTAxMTIxLi5jMDg1MWE4IDEwMDY0NAotLS0gYS9pbml0L2RvX21vdW50cy5jCisrKyBiL2luaXQvZG9fbW91bnRzLmMKQEAgLTE4Niw3ICsxODYsNyBAQAogCQlnb3RvIGRvbmU7CiAKIAkvKgotCSAqIHRyeSBub24tZXhpc3RhbnQsIGJ1dCB2YWxpZCBwYXJ0aXRpb24sIHdoaWNoIG1heSBvbmx5IGV4aXN0CisJICogdHJ5IG5vbi1leGlzdGVudCwgYnV0IHZhbGlkIHBhcnRpdGlvbiwgd2hpY2ggbWF5IG9ubHkgZXhpc3QKIAkgKiBhZnRlciByZXZhbGlkYXRpbmcgdGhlIGRpc2ssIGxpa2UgcGFydGl0aW9uZWQgbWQgZGV2aWNlcwogCSAqLwogCXdoaWxlIChwID4gcyAmJiBpc2RpZ2l0KHBbLTFdKSkKZGlmZiAtLWdpdCBhL2lwYy9tc2cuYyBiL2lwYy9tc2cuYwppbmRleCAwZTczMmU5Li43Mzg1ZGUyIDEwMDY0NAotLS0gYS9pcGMvbXNnLmMKKysrIGIvaXBjL21zZy5jCkBAIC03MDQsNyArNzA0LDcgQEAKIAltc3EtPnFfc3RpbWUgPSBnZXRfc2Vjb25kcygpOwogCiAJaWYgKCFwaXBlbGluZWRfc2VuZChtc3EsIG1zZykpIHsKLQkJLyogbm9vbmUgaXMgd2FpdGluZyBmb3IgdGhpcyBtZXNzYWdlLCBlbnF1ZXVlIGl0ICovCisJCS8qIG5vIG9uZSBpcyB3YWl0aW5nIGZvciB0aGlzIG1lc3NhZ2UsIGVucXVldWUgaXQgKi8KIAkJbGlzdF9hZGRfdGFpbCgmbXNnLT5tX2xpc3QsICZtc3EtPnFfbWVzc2FnZXMpOwogCQltc3EtPnFfY2J5dGVzICs9IG1zZ3N6OwogCQltc3EtPnFfcW51bSsrOwpAQCAtODQyLDcgKzg0Miw3IEBACiAJCSAqIERpc2FibGUgcHJlZW1wdGlvbi4gIFdlIGRvbid0IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHF1ZXVlCiAJCSAqIGFuZCBnZXR0aW5nIGEgcmVmZXJlbmNlIHdvdWxkIGRlZmVhdCB0aGUgaWRlYSBvZiBhIGxvY2tsZXNzCiAJCSAqIG9wZXJhdGlvbiwgdGh1cyB0aGUgY29kZSByZWxpZXMgb24gcmN1IHRvIGd1YXJhbnRlZSB0aGUKLQkJICogZXhpc3RhbmNlIG9mIG1zcToKKwkJICogZXhpc3RlbmNlIG9mIG1zcToKIAkJICogUHJpb3IgdG8gZGVzdHJ1Y3Rpb24sIGV4cHVuZ2VfYWxsKC1FSVJETSkgY2hhbmdlcyByX21zZy4KIAkJICogVGh1cyBpZiByX21zZyBpcyAtRUFHQUlOLCB0aGVuIHRoZSBxdWV1ZSBub3QgeWV0IGRlc3Ryb3llZC4KIAkJICogcmN1X3JlYWRfbG9jaygpIHByZXZlbnRzIHByZWVtcHRpb24gYmV0d2VlbiByZWFkaW5nIHJfbXNnCmRpZmYgLS1naXQgYS9pcGMvc2VtLmMgYi9pcGMvc2VtLmMKaW5kZXggYWUwNDBhMC4uMzQxOTNlZCAxMDA2NDQKLS0tIGEvaXBjL3NlbS5jCisrKyBiL2lwYy9zZW0uYwpAQCAtMTM2Miw3ICsxMzYyLDcgQEAKIAkgKiBzZW1pZCBpZGVudGlmaWVycyBhcmUgbm90IHVuaXF1ZSAtIGZpbmRfYWxsb2NfdW5kbyBtYXkgaGF2ZQogCSAqIGFsbG9jYXRlZCBhbiB1bmRvIHN0cnVjdHVyZSwgaXQgd2FzIGludmFsaWRhdGVkIGJ5IGFuIFJNSUQKIAkgKiBhbmQgbm93IGEgbmV3IGFycmF5IHdpdGggcmVjZWl2ZWQgdGhlIHNhbWUgaWQuIENoZWNrIGFuZCBmYWlsLgotCSAqIFRoaXMgY2FzZSBjYW4gYmUgZGV0ZWN0ZWQgY2hlY2tpbmcgdW4tPnNlbWlkLiBUaGUgZXhpc3RhbmNlIG9mCisJICogVGhpcyBjYXNlIGNhbiBiZSBkZXRlY3RlZCBjaGVja2luZyB1bi0+c2VtaWQuIFRoZSBleGlzdGVuY2Ugb2YKIAkgKiAidW4iIGl0c2VsZiBpcyBndWFyYW50ZWVkIGJ5IHJjdS4KIAkgKi8KIAllcnJvciA9IC1FSURSTTsKZGlmZiAtLWdpdCBhL2lwYy9zaG0uYyBiL2lwYy9zaG0uYwppbmRleCA4NjQ0NDUyLi43MjlhY2I3IDEwMDY0NAotLS0gYS9pcGMvc2htLmMKKysrIGIvaXBjL3NobS5jCkBAIC0xMDU2LDcgKzEwNTYsNyBAQAogCS8qCiAJICogV2UgbmVlZCBsb29rIG5vIGZ1cnRoZXIgdGhhbiB0aGUgbWF4aW11bSBhZGRyZXNzIGEgZnJhZ21lbnQKIAkgKiBjb3VsZCBwb3NzaWJseSBoYXZlIGxhbmRlZCBhdC4gQWxzbyBjYXN0IHRoaW5ncyB0byBsb2ZmX3QgdG8KLQkgKiBwcmV2ZW50IG92ZXJmbG93cyBhbmQgbWFrZSBjb21wYXJpc2lvbnMgdnMuIGVxdWFsLXdpZHRoIHR5cGVzLgorCSAqIHByZXZlbnQgb3ZlcmZsb3dzIGFuZCBtYWtlIGNvbXBhcmlzb25zIHZzLiBlcXVhbC13aWR0aCB0eXBlcy4KIAkgKi8KIAlzaXplID0gUEFHRV9BTElHTihzaXplKTsKIAl3aGlsZSAodm1hICYmIChsb2ZmX3QpKHZtYS0+dm1fZW5kIC0gYWRkcikgPD0gc2l6ZSkgewpkaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0X3RyZWUuYyBiL2tlcm5lbC9hdWRpdF90cmVlLmMKaW5kZXggMzdiMmJlYS4uZTk5ZGRhMCAxMDA2NDQKLS0tIGEva2VybmVsL2F1ZGl0X3RyZWUuYworKysgYi9rZXJuZWwvYXVkaXRfdHJlZS5jCkBAIC02MDcsNyArNjA3LDcgQEAKIAkJc3Bpbl9sb2NrKCZoYXNoX2xvY2spOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZ0cmVlLT5jaHVua3MsIGxpc3QpIHsKIAkJCXN0cnVjdCBhdWRpdF9jaHVuayAqY2h1bmsgPSBmaW5kX2NodW5rKG5vZGUpOwotCQkJLyogdGhpcyBjb3VsZCBiZSBOVUxMIGlmIHRoZSB3YXRjaCBpcyBkaWVpbmcgZWxzZSB3aGVyZS4uLiAqLworCQkJLyogdGhpcyBjb3VsZCBiZSBOVUxMIGlmIHRoZSB3YXRjaCBpcyBkeWluZyBlbHNlIHdoZXJlLi4uICovCiAJCQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gY2h1bmstPm1hcmsuaS5pbm9kZTsKIAkJCW5vZGUtPmluZGV4IHw9IDFVPDwzMTsKIAkJCWlmIChpdGVyYXRlX21vdW50cyhjb21wYXJlX3Jvb3QsIGlub2RlLCByb290X21udCkpCmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuYwppbmRleCBmNDlhMDMxLi5iMzM1MTNhIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXRzYy5jCisrKyBiL2tlcm5lbC9hdWRpdHNjLmMKQEAgLTEwMTEsNyArMTAxMSw3IEBACiAvKgogICogdG9fc2VuZCBhbmQgbGVuX3NlbnQgYWNjb3VudGluZyBhcmUgdmVyeSBsb29zZSBlc3RpbWF0ZXMuICBXZSBhcmVuJ3QKICAqIHJlYWxseSB3b3JyaWVkIGFib3V0IGEgaGFyZCBjYXAgdG8gTUFYX0VYRUNWRV9BVURJVF9MRU4gc28gbXVjaCBhcyBiZWluZwotICogd2l0aGluIGFib3V0IDUwMCBieXRlcyAobmV4dCBwYWdlIGJvdW5kcnkpCisgKiB3aXRoaW4gYWJvdXQgNTAwIGJ5dGVzIChuZXh0IHBhZ2UgYm91bmRhcnkpCiAgKgogICogd2h5IHNucHJpbnRmPyAgYW4gaW50IGlzIHVwIHRvIDEyIGRpZ2l0cyBsb25nLiAgaWYgd2UganVzdCBhc3N1bWVkIHdoZW4KICAqIGxvZ2dpbmcgdGhhdCBhWyVkXT0gd2FzIGdvaW5nIHRvIGJlIDE2IGNoYXJhY3RlcnMgbG9uZyB3ZSB3b3VsZCBiZSB3YXN0aW5nCmRpZmYgLS1naXQgYS9rZXJuZWwvY2dyb3VwLmMgYi9rZXJuZWwvY2dyb3VwLmMKaW5kZXggZTMxYjIyMC4uMjVjN2ViNSAxMDA2NDQKLS0tIGEva2VybmVsL2Nncm91cC5jCisrKyBiL2tlcm5lbC9jZ3JvdXAuYwpAQCAtMTU3LDcgKzE1Nyw3IEBACiB9OwogCiAvKgotICogY2dyb3VwX2V2ZW50IHJlcHJlc2VudHMgZXZlbnRzIHdoaWNoIHVzZXJzcGFjZSB3YW50IHRvIHJlY2lldmUuCisgKiBjZ3JvdXBfZXZlbnQgcmVwcmVzZW50cyBldmVudHMgd2hpY2ggdXNlcnNwYWNlIHdhbnQgdG8gcmVjZWl2ZS4KICAqLwogc3RydWN0IGNncm91cF9ldmVudCB7CiAJLyoKZGlmZiAtLWdpdCBhL2tlcm5lbC9jcHUuYyBiL2tlcm5lbC9jcHUuYwppbmRleCBjOTVmYzRkLi4xMmI3NDU4IDEwMDY0NAotLS0gYS9rZXJuZWwvY3B1LmMKKysrIGIva2VybmVsL2NwdS5jCkBAIC0xMjYsNyArMTI2LDcgQEAKICNlbHNlIC8qICNpZiBDT05GSUdfSE9UUExVR19DUFUgKi8KIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnX2JlZ2luKHZvaWQpIHt9CiBzdGF0aWMgdm9pZCBjcHVfaG90cGx1Z19kb25lKHZvaWQpIHt9Ci0jZW5kaWYJLyogI2VzbGUgI2lmIENPTkZJR19IT1RQTFVHX0NQVSAqLworI2VuZGlmCS8qICNlbHNlICNpZiBDT05GSUdfSE9UUExVR19DUFUgKi8KIAogLyogTmVlZCB0byBrbm93IGFib3V0IENQVXMgZ29pbmcgdXAvZG93bj8gKi8KIGludCBfX3JlZiByZWdpc3Rlcl9jcHVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKZGlmZiAtLWdpdCBhL2tlcm5lbC9kZWJ1Zy9kZWJ1Z19jb3JlLmMgYi9rZXJuZWwvZGVidWcvZGVidWdfY29yZS5jCmluZGV4IGNlZmQ0YTEuLmJhZDY3ODYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9kZWJ1Zy9kZWJ1Z19jb3JlLmMKKysrIGIva2VybmVsL2RlYnVnL2RlYnVnX2NvcmUuYwpAQCAtNTM4LDcgKzUzOCw3IEBACiAKIAkvKgogCSAqIEZvciBzaW5nbGUgc3RlcHBpbmcsIHRyeSB0byBvbmx5IGVudGVyIG9uIHRoZSBwcm9jZXNzb3IKLQkgKiB0aGF0IHdhcyBzaW5nbGUgc3RlcHBpbmcuICBUbyBnYXVyZCBhZ2FpbnN0IGEgZGVhZGxvY2ssIHRoZQorCSAqIHRoYXQgd2FzIHNpbmdsZSBzdGVwcGluZy4gIFRvIGd1YXJkIGFnYWluc3QgYSBkZWFkbG9jaywgdGhlCiAJICoga2VybmVsIHdpbGwgb25seSB0cnkgZm9yIHRoZSB2YWx1ZSBvZiBzc3RlcF90cmllcyBiZWZvcmUKIAkgKiBnaXZpbmcgdXAgYW5kIGNvbnRpbnVpbmcgb24uCiAJICovCmRpZmYgLS1naXQgYS9rZXJuZWwvZGVidWcva2RiL2tkYl9tYWluLmMgYi9rZXJuZWwvZGVidWcva2RiL2tkYl9tYWluLmMKaW5kZXggNmJjNmUzYi4uYmUxNDc3OSAxMDA2NDQKLS0tIGEva2VybmVsL2RlYnVnL2tkYi9rZGJfbWFpbi5jCisrKyBiL2tlcm5lbC9kZWJ1Zy9rZGIva2RiX21haW4uYwpAQCAtNDQxLDkgKzQ0MSw5IEBACiAgKglzeW1ib2wgbmFtZSwgYW5kIG9mZnNldCB0byB0aGUgY2FsbGVyLgogICoKICAqCVRoZSBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBhIG51bWVyaWMgdmFsdWUgKGRlY2ltYWwgb3IKLSAqCWhleGlkZWNpbWFsKSwgYSBzeW1ib2wgbmFtZSwgYSByZWdpc3RlciBuYW1lIChwcmVjZWVkZWQgYnkgdGhlCisgKgloZXhpZGVjaW1hbCksIGEgc3ltYm9sIG5hbWUsIGEgcmVnaXN0ZXIgbmFtZSAocHJlY2VkZWQgYnkgdGhlCiAgKglwZXJjZW50IHNpZ24pLCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIGEgbnVtZXJpYyB2YWx1ZQotICoJKHByZWNlZWRlZCBieSBhIGRvbGxhciBzaWduKSBvciBhIHNpbXBsZSBhcml0aG1ldGljIGV4cHJlc3Npb24KKyAqCShwcmVjZWRlZCBieSBhIGRvbGxhciBzaWduKSBvciBhIHNpbXBsZSBhcml0aG1ldGljIGV4cHJlc3Npb24KICAqCWNvbnNpc3Rpbmcgb2YgYSBzeW1ib2wgbmFtZSwgKy8tLCBhbmQgYSBudW1lcmljIGNvbnN0YW50IHZhbHVlCiAgKgkob2Zmc2V0KS4KICAqIFBhcmFtZXRlcnM6CkBAIC0xMzM1LDcgKzEzMzUsNyBAQAogICoJZXJyb3IJCVRoZSBoYXJkd2FyZS1kZWZpbmVkIGVycm9yIGNvZGUKICAqCXJlYXNvbjIJCWtkYidzIGN1cnJlbnQgcmVhc29uIGNvZGUuCiAgKgkJCUluaXRpYWxseSBlcnJvciBidXQgY2FuIGNoYW5nZQotICoJCQlhY29yZGluZyB0byBrZGIgc3RhdGUuCisgKgkJCWFjY29yZGluZyB0byBrZGIgc3RhdGUuCiAgKglkYl9yZXN1bHQJUmVzdWx0IGNvZGUgZnJvbSBicmVhayBvciBkZWJ1ZyBwb2ludC4KICAqCXJlZ3MJCVRoZSBleGNlcHRpb24gZnJhbWUgYXQgdGltZSBvZiBmYXVsdC9icmVha3BvaW50LgogICoJCQlzaG91bGQgYWx3YXlzIGJlIHZhbGlkLgpkaWZmIC0tZ2l0IGEva2VybmVsL2RlYnVnL2tkYi9rZGJfc3VwcG9ydC5jIGIva2VybmVsL2RlYnVnL2tkYi9rZGJfc3VwcG9ydC5jCmluZGV4IDZiMjQ4NWQuLjU1MzJkZDMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9kZWJ1Zy9rZGIva2RiX3N1cHBvcnQuYworKysgYi9rZXJuZWwvZGVidWcva2RiL2tkYl9zdXBwb3J0LmMKQEAgLTU0NSw3ICs1NDUsNyBAQAogICoJTWFzayBmb3IgcHJvY2VzcyBzdGF0ZS4KICAqIE5vdGVzOgogICoJVGhlIG1hc2sgZm9sZHMgZGF0YSBmcm9tIHNldmVyYWwgc291cmNlcyBpbnRvIGEgc2luZ2xlIGxvbmcgdmFsdWUsIHNvCi0gKgliZSBjYXJlZnVsbCBub3QgdG8gb3ZlcmxhcCB0aGUgYml0cy4gIFRBU0tfKiBiaXRzIGFyZSBpbiB0aGUgTFNCLAorICoJYmUgY2FyZWZ1bCBub3QgdG8gb3ZlcmxhcCB0aGUgYml0cy4gIFRBU0tfKiBiaXRzIGFyZSBpbiB0aGUgTFNCLAogICoJc3BlY2lhbCBjYXNlcyBsaWtlIFVOUlVOTkFCTEUgYXJlIGluIHRoZSBNU0IuICBBcyBvZiAyLjYuMTAtcmMxIHRoZXJlCiAgKglpcyBubyBvdmVybGFwIGJldHdlZW4gVEFTS18qIGFuZCBFWElUXyogYnV0IHRoYXQgbWF5IG5vdCBhbHdheXMgYmUKICAqCXRydWUsIHNvIEVYSVRfKiBiaXRzIGFyZSBzaGlmdGVkIGxlZnQgMTYgYml0cyBiZWZvcmUgYmVpbmcgc3RvcmVkIGluCmRpZmYgLS1naXQgYS9rZXJuZWwvZXhpdC5jIGIva2VybmVsL2V4aXQuYwppbmRleCA2YTQ4OGFkLi5mNWQyZjYzIDEwMDY0NAotLS0gYS9rZXJuZWwvZXhpdC5jCisrKyBiL2tlcm5lbC9leGl0LmMKQEAgLTg0MSw3ICs4NDEsNyBAQAogCS8qIExldCBmYXRoZXIga25vdyB3ZSBkaWVkCiAJICoKIAkgKiBUaHJlYWQgc2lnbmFscyBhcmUgY29uZmlndXJhYmxlLCBidXQgeW91IGFyZW4ndCBnb2luZyB0byB1c2UKLQkgKiB0aGF0IHRvIHNlbmQgc2lnbmFscyB0byBhcmJpdGFyeSBwcm9jZXNzZXMuCisJICogdGhhdCB0byBzZW5kIHNpZ25hbHMgdG8gYXJiaXRyYXJ5IHByb2Nlc3Nlcy4KIAkgKiBUaGF0IHN0b3BzIHJpZ2h0IG5vdy4KIAkgKgogCSAqIElmIHRoZSBwYXJlbnQgZXhlYyBpZCBkb2Vzbid0IG1hdGNoIHRoZSBleGVjIGlkIHdlIHNhdmVkCmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL2NoaXAuYyBiL2tlcm5lbC9pcnEvY2hpcC5jCmluZGV4IDFkYWZjODYuLjRhZjFlMmIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9pcnEvY2hpcC5jCisrKyBiL2tlcm5lbC9pcnEvY2hpcC5jCkBAIC00MTUsNyArNDE1LDcgQEAKICAqCUBkZXNjOgl0aGUgaW50ZXJydXB0IGRlc2NyaXB0aW9uIHN0cnVjdHVyZSBmb3IgdGhpcyBpcnEKICAqCiAgKglJbnRlcnJ1cHQgb2NjdXJlcyBvbiB0aGUgZmFsbGluZyBhbmQvb3IgcmlzaW5nIGVkZ2Ugb2YgYSBoYXJkd2FyZQotICoJc2lnbmFsLiBUaGUgb2NjdXJlbmNlIGlzIGxhdGNoZWQgaW50byB0aGUgaXJxIGNvbnRyb2xsZXIgaGFyZHdhcmUKKyAqCXNpZ25hbC4gVGhlIG9jY3VycmVuY2UgaXMgbGF0Y2hlZCBpbnRvIHRoZSBpcnEgY29udHJvbGxlciBoYXJkd2FyZQogICoJYW5kIG11c3QgYmUgYWNrZWQgaW4gb3JkZXIgdG8gYmUgcmVlbmFibGVkLiBBZnRlciB0aGUgYWNrIGFub3RoZXIKICAqCWludGVycnVwdCBjYW4gaGFwcGVuIG9uIHRoZSBzYW1lIHNvdXJjZSBldmVuIGJlZm9yZSB0aGUgZmlyc3Qgb25lCiAgKglpcyBoYW5kbGVkIGJ5IHRoZSBhc3NvY2lhdGVkIGV2ZW50IGhhbmRsZXIuIElmIHRoaXMgaGFwcGVucyBpdApkaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMKaW5kZXggMTJhODBmZC4uMDdjMTYxMSAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9tYW5hZ2UuYworKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jCkBAIC0xMDUxLDYgKzEwNTEsNyBAQAogCXJlZ2lzdGVyX2lycV9wcm9jKGlycSwgZGVzYyk7CiAJbmV3LT5kaXIgPSBOVUxMOwogCXJlZ2lzdGVyX2hhbmRsZXJfcHJvYyhpcnEsIG5ldyk7CisJZnJlZV9jcHVtYXNrX3ZhcihtYXNrKTsKIAogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL21pZ3JhdGlvbi5jIGIva2VybmVsL2lycS9taWdyYXRpb24uYwppbmRleCBiYzYxOTQ2Li40NzQyMDkwIDEwMDY0NAotLS0gYS9rZXJuZWwvaXJxL21pZ3JhdGlvbi5jCisrKyBiL2tlcm5lbC9pcnEvbWlncmF0aW9uLmMKQEAgLTM1LDcgKzM1LDcgQEAKIAkgKiBkbyB0aGUgZGlzYWJsZSwgcmUtcHJvZ3JhbSwgZW5hYmxlIHNlcXVlbmNlLgogCSAqIFRoaXMgaXMgKm5vdCogcGFydGljdWxhcmx5IGltcG9ydGFudCBmb3IgbGV2ZWwgdHJpZ2dlcmVkCiAJICogYnV0IGluIGEgZWRnZSB0cmlnZ2VyIGNhc2UsIHdlIG1pZ2h0IGJlIHNldHRpbmcgcnRlCi0JICogd2hlbiBhbiBhY3RpdmUgdHJpZ2dlciBpcyBjb21taW5nIGluLiBUaGlzIGNvdWxkCisJICogd2hlbiBhbiBhY3RpdmUgdHJpZ2dlciBpcyBjb21pbmcgaW4uIFRoaXMgY291bGQKIAkgKiBjYXVzZSBzb21lIGlvYXBpY3MgdG8gbWFsLWZ1bmN0aW9uLgogCSAqIEJlaW5nIHBhcmFub2lkIGkgZ3Vlc3MhCiAJICoKZGlmZiAtLWdpdCBhL2tlcm5lbC9rZXhlYy5jIGIva2VybmVsL2tleGVjLmMKaW5kZXggNGUyNDBhMy4uNTU5MzZmOSAxMDA2NDQKLS0tIGEva2VybmVsL2tleGVjLmMKKysrIGIva2VybmVsL2tleGVjLmMKQEAgLTE0NCw3ICsxNDQsNyBAQAogCS8qIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgZGVzdGluYXRpb24gcGFnZXMgKi8KIAlJTklUX0xJU1RfSEVBRCgmaW1hZ2UtPmRlc3RfcGFnZXMpOwogCi0JLyogSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiB1bnVzZWFibGUgcGFnZXMgKi8KKwkvKiBJbml0aWFsaXplIHRoZSBsaXN0IG9mIHVudXNhYmxlIHBhZ2VzICovCiAJSU5JVF9MSVNUX0hFQUQoJmltYWdlLT51bnVzZWFibGVfcGFnZXMpOwogCiAJLyogUmVhZCBpbiB0aGUgc2VnbWVudHMgKi8KQEAgLTQ1NCw3ICs0NTQsNyBAQAogCS8qIERlYWwgd2l0aCB0aGUgZGVzdGluYXRpb24gcGFnZXMgSSBoYXZlIGluYWR2ZXJ0ZW50bHkgYWxsb2NhdGVkLgogCSAqCiAJICogSWRlYWxseSBJIHdvdWxkIGNvbnZlcnQgbXVsdGktcGFnZSBhbGxvY2F0aW9ucyBpbnRvIHNpbmdsZQotCSAqIHBhZ2UgYWxsb2NhdGlvbnMsIGFuZCBhZGQgZXZlcnl0aW5nIHRvIGltYWdlLT5kZXN0X3BhZ2VzLgorCSAqIHBhZ2UgYWxsb2NhdGlvbnMsIGFuZCBhZGQgZXZlcnl0aGluZyB0byBpbWFnZS0+ZGVzdF9wYWdlcy4KIAkgKgogCSAqIEZvciBub3cgaXQgaXMgc2ltcGxlciB0byBqdXN0IGZyZWUgdGhlIHBhZ2VzLgogCSAqLwpAQCAtNjAyLDcgKzYwMiw3IEBACiAJLyogV2FsayB0aHJvdWdoIGFuZCBmcmVlIGFueSBleHRyYSBkZXN0aW5hdGlvbiBwYWdlcyBJIG1heSBoYXZlICovCiAJa2ltYWdlX2ZyZWVfcGFnZV9saXN0KCZpbWFnZS0+ZGVzdF9wYWdlcyk7CiAKLQkvKiBXYWxrIHRocm91Z2ggYW5kIGZyZWUgYW55IHVudXNlYWJsZSBwYWdlcyBJIGhhdmUgY2FjaGVkICovCisJLyogV2FsayB0aHJvdWdoIGFuZCBmcmVlIGFueSB1bnVzYWJsZSBwYWdlcyBJIGhhdmUgY2FjaGVkICovCiAJa2ltYWdlX2ZyZWVfcGFnZV9saXN0KCZpbWFnZS0+dW51c2VhYmxlX3BhZ2VzKTsKIAogfQpkaWZmIC0tZ2l0IGEva2VybmVsL2t0aHJlYWQuYyBiL2tlcm5lbC9rdGhyZWFkLmMKaW5kZXggNjg0YWIzZi4uM2IzNGQyNyAxMDA2NDQKLS0tIGEva2VybmVsL2t0aHJlYWQuYworKysgYi9rZXJuZWwva3RocmVhZC5jCkBAIC0xMzksNyArMTM5LDcgQEAKICAqIGluIEBub2RlLCB0byBnZXQgTlVNQSBhZmZpbml0eSBmb3Iga3RocmVhZCBzdGFjaywgb3IgZWxzZSBnaXZlIC0xLgogICogV2hlbiB3b2tlbiwgdGhlIHRocmVhZCB3aWxsIHJ1biBAdGhyZWFkZm4oKSB3aXRoIEBkYXRhIGFzIGl0cwogICogYXJndW1lbnQuIEB0aHJlYWRmbigpIGNhbiBlaXRoZXIgY2FsbCBkb19leGl0KCkgZGlyZWN0bHkgaWYgaXQgaXMgYQotICogc3RhbmRhbG9uZSB0aHJlYWQgZm9yIHdoaWNoIG5vb25lIHdpbGwgY2FsbCBrdGhyZWFkX3N0b3AoKSwgb3IKKyAqIHN0YW5kYWxvbmUgdGhyZWFkIGZvciB3aGljaCBubyBvbmUgd2lsbCBjYWxsIGt0aHJlYWRfc3RvcCgpLCBvcgogICogcmV0dXJuIHdoZW4gJ2t0aHJlYWRfc2hvdWxkX3N0b3AoKScgaXMgdHJ1ZSAod2hpY2ggbWVhbnMKICAqIGt0aHJlYWRfc3RvcCgpIGhhcyBiZWVuIGNhbGxlZCkuICBUaGUgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSB6ZXJvCiAgKiBvciBhIG5lZ2F0aXZlIGVycm9yIG51bWJlcjsgaXQgd2lsbCBiZSBwYXNzZWQgdG8ga3RocmVhZF9zdG9wKCkuCmRpZmYgLS1naXQgYS9rZXJuZWwvbGF0ZW5jeXRvcC5jIGIva2VybmVsL2xhdGVuY3l0b3AuYwppbmRleCBlZTc0YjM1Li4zNzYwNjZlIDEwMDY0NAotLS0gYS9rZXJuZWwvbGF0ZW5jeXRvcC5jCisrKyBiL2tlcm5lbC9sYXRlbmN5dG9wLmMKQEAgLTE1Myw3ICsxNTMsNyBAQAogfQogCiAvKioKLSAqIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeSAtIHJlY29yZCBhbiBvY2N1cmVkIGxhdGVuY3kKKyAqIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeSAtIHJlY29yZCBhbiBvY2N1cnJlZCBsYXRlbmN5CiAgKiBAdHNrIC0gdGhlIHRhc2sgc3RydWN0IG9mIHRoZSB0YXNrIGhpdHRpbmcgdGhlIGxhdGVuY3kKICAqIEB1c2VjcyAtIHRoZSBkdXJhdGlvbiBvZiB0aGUgbGF0ZW5jeSBpbiBtaWNyb3NlY29uZHMKICAqIEBpbnRlciAtIDEgaWYgdGhlIHNsZWVwIHdhcyBpbnRlcnJ1cHRpYmxlLCAwIGlmIHVuaW50ZXJydXB0aWJsZQpkaWZmIC0tZ2l0IGEva2VybmVsL2xvY2tkZXAuYyBiL2tlcm5lbC9sb2NrZGVwLmMKaW5kZXggMGQyMDU4ZC4uNTNhNjg5NSAxMDA2NDQKLS0tIGEva2VybmVsL2xvY2tkZXAuYworKysgYi9rZXJuZWwvbG9ja2RlcC5jCkBAIC0yMzA5LDcgKzIzMDksNyBAQAogCWlmICh1bmxpa2VseShjdXJyLT5oYXJkaXJxc19lbmFibGVkKSkgewogCQkvKgogCQkgKiBOZWl0aGVyIGlycSBub3IgcHJlZW1wdGlvbiBhcmUgZGlzYWJsZWQgaGVyZQotCQkgKiBzbyB0aGlzIGlzIHJhY3kgYnkgbmF0dXJlIGJ1dCBsb29zaW5nIG9uZSBoaXQKKwkJICogc28gdGhpcyBpcyByYWN5IGJ5IG5hdHVyZSBidXQgbG9zaW5nIG9uZSBoaXQKIAkJICogaW4gYSBzdGF0IGlzIG5vdCBhIGJpZyBkZWFsLgogCQkgKi8KIAkJX19kZWJ1Z19hdG9taWNfaW5jKHJlZHVuZGFudF9oYXJkaXJxc19vbik7CkBAIC0yNjIwLDcgKzI2MjAsNyBAQAogCWlmICghZ3JhcGhfbG9jaygpKQogCQlyZXR1cm4gMDsKIAkvKgotCSAqIE1ha2Ugc3VyZSB3ZSBkaWRudCByYWNlOgorCSAqIE1ha2Ugc3VyZSB3ZSBkaWRuJ3QgcmFjZToKIAkgKi8KIAlpZiAodW5saWtlbHkoaGxvY2tfY2xhc3ModGhpcyktPnVzYWdlX21hc2sgJiBuZXdfbWFzaykpIHsKIAkJZ3JhcGhfdW5sb2NrKCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvbW9kdWxlLmMgYi9rZXJuZWwvbW9kdWxlLmMKaW5kZXggMWY5ZjdiYy4uZDU5MzhhNSAxMDA2NDQKLS0tIGEva2VybmVsL21vZHVsZS5jCisrKyBiL2tlcm5lbC9tb2R1bGUuYwpAQCAtODA5LDcgKzgwOSw3IEBACiAJCXdhaXRfZm9yX3plcm9fcmVmY291bnQobW9kKTsKIAogCW11dGV4X3VubG9jaygmbW9kdWxlX211dGV4KTsKLQkvKiBGaW5hbCBkZXN0cnVjdGlvbiBub3cgbm9vbmUgaXMgdXNpbmcgaXQuICovCisJLyogRmluYWwgZGVzdHJ1Y3Rpb24gbm93IG5vIG9uZSBpcyB1c2luZyBpdC4gKi8KIAlpZiAobW9kLT5leGl0ICE9IE5VTEwpCiAJCW1vZC0+ZXhpdCgpOwogCWJsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4oJm1vZHVsZV9ub3RpZnlfbGlzdCwKQEAgLTI3NzcsNyArMjc3Nyw3IEBACiAJbW9kLT5zdGF0ZSA9IE1PRFVMRV9TVEFURV9DT01JTkc7CiAKIAkvKiBOb3cgc2V3IGl0IGludG8gdGhlIGxpc3RzIHNvIHdlIGNhbiBnZXQgbG9ja2RlcCBhbmQgb29wcwotCSAqIGluZm8gZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcuICBOb29uZSBzaG91bGQgYWNjZXNzIHVzLCBzaW5jZQorCSAqIGluZm8gZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcuICBObyBvbmUgc2hvdWxkIGFjY2VzcyB1cywgc2luY2UKIAkgKiBzdHJvbmdfdHJ5X21vZHVsZV9nZXQoKSB3aWxsIGZhaWwuCiAJICogbG9ja2RlcC9vb3BzIGNhbiBydW4gYXN5bmNocm9ub3VzLCBzbyB1c2UgdGhlIFJDVSBsaXN0IGluc2VydGlvbgogCSAqIGZ1bmN0aW9uIHRvIGluc2VydCBpbiBhIHdheSBzYWZlIHRvIGNvbmN1cnJlbnQgcmVhZGVycy4KQEAgLTI5NzEsNyArMjk3MSw3IEBACiAJZWxzZQogCQluZXh0dmFsID0gKHVuc2lnbmVkIGxvbmcpbW9kLT5tb2R1bGVfY29yZSttb2QtPmNvcmVfdGV4dF9zaXplOwogCi0JLyogU2NhbiBmb3IgY2xvc2VzdCBwcmVjZWVkaW5nIHN5bWJvbCwgYW5kIG5leHQgc3ltYm9sLiAoRUxGCisJLyogU2NhbiBmb3IgY2xvc2VzdCBwcmVjZWRpbmcgc3ltYm9sLCBhbmQgbmV4dCBzeW1ib2wuIChFTEYKIAkgICBzdGFydHMgcmVhbCBzeW1ib2xzIGF0IDEpLiAqLwogCWZvciAoaSA9IDE7IGkgPCBtb2QtPm51bV9zeW10YWI7IGkrKykgewogCQlpZiAobW9kLT5zeW10YWJbaV0uc3Rfc2huZHggPT0gU0hOX1VOREVGKQpkaWZmIC0tZ2l0IGEva2VybmVsL211dGV4LmMgYi9rZXJuZWwvbXV0ZXguYwppbmRleCBhNTg4OWZiLi5jNDE5NWZhIDEwMDY0NAotLS0gYS9rZXJuZWwvbXV0ZXguYworKysgYi9rZXJuZWwvbXV0ZXguYwpAQCAtMjQ1LDcgKzI0NSw3IEBACiAJCX0KIAkJX19zZXRfdGFza19zdGF0ZSh0YXNrLCBzdGF0ZSk7CiAKLQkJLyogZGlkbnQgZ2V0IHRoZSBsb2NrLCBnbyB0byBzbGVlcDogKi8KKwkJLyogZGlkbid0IGdldCB0aGUgbG9jaywgZ28gdG8gc2xlZXA6ICovCiAJCXNwaW5fdW5sb2NrX211dGV4KCZsb2NrLT53YWl0X2xvY2ssIGZsYWdzKTsKIAkJcHJlZW1wdF9lbmFibGVfbm9fcmVzY2hlZCgpOwogCQlzY2hlZHVsZSgpOwpkaWZmIC0tZ2l0IGEva2VybmVsL3BhZGF0YS5jIGIva2VybmVsL3BhZGF0YS5jCmluZGV4IDc1MTAxOTQuLmI5MTk0MWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wYWRhdGEuYworKysgYi9rZXJuZWwvcGFkYXRhLmMKQEAgLTI2Miw3ICsyNjIsNyBAQAogCQkvKgogCQkgKiBUaGlzIGNwdSBoYXMgdG8gZG8gdGhlIHBhcmFsbGVsIHByb2Nlc3Npbmcgb2YgdGhlIG5leHQKIAkJICogb2JqZWN0LiBJdCdzIHdhaXRpbmcgaW4gdGhlIGNwdSdzIHBhcmFsbGVsaXphdGlvbiBxdWV1ZSwKLQkJICogc28gZXhpdCBpbWVkaWF0ZWx5LgorCQkgKiBzbyBleGl0IGltbWVkaWF0ZWx5LgogCQkgKi8KIAkJaWYgKFBUUl9FUlIocGFkYXRhKSA9PSAtRU5PREFUQSkgewogCQkJZGVsX3RpbWVyKCZwZC0+dGltZXIpOwpAQCAtMjg0LDcgKzI4NCw3IEBACiAJLyoKIAkgKiBUaGUgbmV4dCBvYmplY3QgdGhhdCBuZWVkcyBzZXJpYWxpemF0aW9uIG1pZ2h0IGhhdmUgYXJyaXZlZCB0bwogCSAqIHRoZSByZW9yZGVyIHF1ZXVlcyBpbiB0aGUgbWVhbnRpbWUsIHdlIHdpbGwgYmUgY2FsbGVkIGFnYWluCi0JICogZnJvbSB0aGUgdGltZXIgZnVuY3Rpb24gaWYgbm9vbmUgZWxzZSBjYXJlcyBmb3IgaXQuCisJICogZnJvbSB0aGUgdGltZXIgZnVuY3Rpb24gaWYgbm8gb25lIGVsc2UgY2FyZXMgZm9yIGl0LgogCSAqLwogCWlmIChhdG9taWNfcmVhZCgmcGQtPnJlb3JkZXJfb2JqZWN0cykKIAkJCSYmICEocGluc3QtPmZsYWdzICYgUEFEQVRBX1JFU0VUKSkKQEAgLTUxNSw3ICs1MTUsNyBAQAogCXB1dF9vbmxpbmVfY3B1cygpOwogfQogCi0vKiBSZXBsYWNlIHRoZSBpbnRlcm5hbCBjb250cm9sIHN0dWN0dXJlIHdpdGggYSBuZXcgb25lLiAqLworLyogUmVwbGFjZSB0aGUgaW50ZXJuYWwgY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBhIG5ldyBvbmUuICovCiBzdGF0aWMgdm9pZCBwYWRhdGFfcmVwbGFjZShzdHJ1Y3QgcGFkYXRhX2luc3RhbmNlICpwaW5zdCwKIAkJCSAgIHN0cnVjdCBwYXJhbGxlbF9kYXRhICpwZF9uZXcpCiB7CkBAIC03NjgsNyArNzY4LDcgQEAKIH0KIAogIC8qKgotICogcGFkYXRhX3JlbW92ZV9jcHUgLSByZW1vdmUgYSBjcHUgZnJvbSB0aGUgb25lIG9yIGJvdGgoc2VyaWFsIGFuZCBwYXJhbGVsbCkKKyAqIHBhZGF0YV9yZW1vdmVfY3B1IC0gcmVtb3ZlIGEgY3B1IGZyb20gdGhlIG9uZSBvciBib3RoKHNlcmlhbCBhbmQgcGFyYWxsZWwpCiAgKiAgICAgICAgICAgICAgICAgICAgIHBhZGF0YSBjcHVtYXNrcy4KICAqCiAgKiBAcGluc3Q6IHBhZGF0YSBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEva2VybmVsL3BhcmFtcy5jIGIva2VybmVsL3BhcmFtcy5jCmluZGV4IDBkYTE0MTEuLjdhYjM4OGEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wYXJhbXMuYworKysgYi9rZXJuZWwvcGFyYW1zLmMKQEAgLTk1LDcgKzk1LDcgQEAKIAkvKiBGaW5kIHBhcmFtZXRlciAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyYW1zOyBpKyspIHsKIAkJaWYgKHBhcmFtZXEocGFyYW0sIHBhcmFtc1tpXS5uYW1lKSkgewotCQkJLyogTm9vbmUgaGFuZGxlZCBOVUxMLCBzbyBkbyBpdCBoZXJlLiAqLworCQkJLyogTm8gb25lIGhhbmRsZWQgTlVMTCwgc28gZG8gaXQgaGVyZS4gKi8KIAkJCWlmICghdmFsICYmIHBhcmFtc1tpXS5vcHMtPnNldCAhPSBwYXJhbV9zZXRfYm9vbCkKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCURFQlVHUCgiVGhleSBhcmUgZXF1YWwhICBDYWxsaW5nICVwXG4iLApkaWZmIC0tZ2l0IGEva2VybmVsL3Bvc2l4LWNwdS10aW1lcnMuYyBiL2tlcm5lbC9wb3NpeC1jcHUtdGltZXJzLmMKaW5kZXggNjdmZWE5ZC4uMDc5MWIxMyAxMDA2NDQKLS0tIGEva2VybmVsL3Bvc2l4LWNwdS10aW1lcnMuYworKysgYi9rZXJuZWwvcG9zaXgtY3B1LXRpbWVycy5jCkBAIC0xMzQ3LDcgKzEzNDcsNyBAQAogCiAJLyoKIAkgKiBOb3cgdGhhdCBhbGwgdGhlIHRpbWVycyBvbiBvdXIgbGlzdCBoYXZlIHRoZSBmaXJpbmcgZmxhZywKLQkgKiBub29uZSB3aWxsIHRvdWNoIHRoZWlyIGxpc3QgZW50cmllcyBidXQgdXMuICBXZSdsbCB0YWtlCisJICogbm8gb25lIHdpbGwgdG91Y2ggdGhlaXIgbGlzdCBlbnRyaWVzIGJ1dCB1cy4gIFdlJ2xsIHRha2UKIAkgKiBlYWNoIHRpbWVyJ3MgbG9jayBiZWZvcmUgY2xlYXJpbmcgaXRzIGZpcmluZyBmbGFnLCBzbyBubwogCSAqIHRpbWVyIGNhbGwgd2lsbCBpbnRlcmZlcmUuCiAJICovCmRpZmYgLS1naXQgYS9rZXJuZWwvcG9zaXgtdGltZXJzLmMgYi9rZXJuZWwvcG9zaXgtdGltZXJzLmMKaW5kZXggNGMwMTI0OS4uZTU0OThkNyAxMDA2NDQKLS0tIGEva2VybmVsL3Bvc2l4LXRpbWVycy5jCisrKyBiL2tlcm5lbC9wb3NpeC10aW1lcnMuYwpAQCAtMzEzLDcgKzMxMyw3IEBACiAgKiByZXN0YXJ0ZWQgKGkuZS4gd2UgaGF2ZSBmbGFnZ2VkIHRoaXMgaW4gdGhlIHN5c19wcml2YXRlIGVudHJ5IG9mIHRoZQogICogaW5mbyBibG9jaykuCiAgKgotICogVG8gcHJvdGVjdCBhZ2luc3QgdGhlIHRpbWVyIGdvaW5nIGF3YXkgd2hpbGUgdGhlIGludGVycnVwdCBpcyBxdWV1ZWQsCisgKiBUbyBwcm90ZWN0IGFnYWluc3QgdGhlIHRpbWVyIGdvaW5nIGF3YXkgd2hpbGUgdGhlIGludGVycnVwdCBpcyBxdWV1ZWQsCiAgKiB3ZSByZXF1aXJlIHRoYXQgdGhlIGl0X3JlcXVldWVfcGVuZGluZyBmbGFnIGJlIHNldC4KICAqLwogdm9pZCBkb19zY2hlZHVsZV9uZXh0X3RpbWVyKHN0cnVjdCBzaWdpbmZvICppbmZvKQpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2VyL21haW4uYyBiL2tlcm5lbC9wb3dlci9tYWluLmMKaW5kZXggOGVhYmE1Zi4uZGU5YWVmOCAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL21haW4uYworKysgYi9rZXJuZWwvcG93ZXIvbWFpbi5jCkBAIC0yMjQsNyArMjI0LDcgQEAKICAqIHdyaXRpbmcgdG8gJ3N0YXRlJy4gIEl0IGZpcnN0IHNob3VsZCByZWFkIGZyb20gJ3dha2V1cF9jb3VudCcgYW5kIHN0b3JlCiAgKiB0aGUgcmVhZCB2YWx1ZS4gIFRoZW4sIGFmdGVyIGNhcnJ5aW5nIG91dCBpdHMgb3duIHByZXBhcmF0aW9ucyBmb3IgdGhlIHN5c3RlbQogICogdHJhbnNpdGlvbiB0byBhIHNsZWVwIHN0YXRlLCBpdCBzaG91bGQgd3JpdGUgdGhlIHN0b3JlZCB2YWx1ZSB0bwotICogJ3dha2V1cF9jb3VudCcuICBJZiB0aGF0IGZhaWxzLCBhdCBsZWFzdCBvbmUgd2FrZXVwIGV2ZW50IGhhcyBvY2N1cmVkIHNpbmNlCisgKiAnd2FrZXVwX2NvdW50Jy4gIElmIHRoYXQgZmFpbHMsIGF0IGxlYXN0IG9uZSB3YWtldXAgZXZlbnQgaGFzIG9jY3VycmVkIHNpbmNlCiAgKiAnd2FrZXVwX2NvdW50JyB3YXMgcmVhZCBhbmQgJ3N0YXRlJyBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uICBPdGhlcndpc2UsIGl0CiAgKiBpcyBhbGxvd2VkIHRvIHdyaXRlIHRvICdzdGF0ZScsIGJ1dCB0aGUgdHJhbnNpdGlvbiB3aWxsIGJlIGFib3J0ZWQgaWYgdGhlcmUKICAqIGFyZSBhbnkgd2FrZXVwIGV2ZW50cyBkZXRlY3RlZCBhZnRlciAnd2FrZXVwX2NvdW50JyB3YXMgd3JpdHRlbiB0by4KZGlmZiAtLWdpdCBhL2tlcm5lbC9zY2hlZC5jIGIva2VybmVsL3NjaGVkLmMKaW5kZXggYTg4NDU1MS4uNDgwMTM2MyAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkLmMKKysrIGIva2VybmVsL3NjaGVkLmMKQEAgLTIzMDksNyArMjMwOSw3IEBACiAgKiBDYXVzZSBhIHByb2Nlc3Mgd2hpY2ggaXMgcnVubmluZyBvbiBhbm90aGVyIENQVSB0byBlbnRlcgogICoga2VybmVsLW1vZGUsIHdpdGhvdXQgYW55IGRlbGF5LiAodG8gZ2V0IHNpZ25hbHMgaGFuZGxlZC4pCiAgKgotICogTk9URTogdGhpcyBmdW5jdGlvbiBkb2VzbnQgaGF2ZSB0byB0YWtlIHRoZSBydW5xdWV1ZSBsb2NrLAorICogTk9URTogdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gdGFrZSB0aGUgcnVucXVldWUgbG9jaywKICAqIGJlY2F1c2UgYWxsIGl0IHdhbnRzIHRvIGVuc3VyZSBpcyB0aGF0IHRoZSByZW1vdGUgdGFzayBlbnRlcnMKICAqIHRoZSBrZXJuZWwuIElmIHRoZSBJUEkgcmFjZXMgYW5kIHRoZSB0YXNrIGhhcyBiZWVuIG1pZ3JhdGVkCiAgKiB0byBhbm90aGVyIENQVSB0aGVuIG5vIGhhcm0gaXMgZG9uZSBhbmQgdGhlIHB1cnBvc2UgaGFzIGJlZW4KQEAgLTQ5OTcsNyArNDk5Nyw3IEBACiAJICovCiAJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZwLT5waV9sb2NrLCBmbGFncyk7CiAJLyoKLQkgKiBUbyBiZSBhYmxlIHRvIGNoYW5nZSBwLT5wb2xpY3kgc2FmZWx5LCB0aGUgYXByb3ByaWF0ZQorCSAqIFRvIGJlIGFibGUgdG8gY2hhbmdlIHAtPnBvbGljeSBzYWZlbHksIHRoZSBhcHByb3ByaWF0ZQogCSAqIHJ1bnF1ZXVlIGxvY2sgbXVzdCBiZSBoZWxkLgogCSAqLwogCXJxID0gX190YXNrX3JxX2xvY2socCk7CkBAIC01NzE2LDcgKzU3MTYsNyBAQAogCWRvX2VhY2hfdGhyZWFkKGcsIHApIHsKIAkJLyoKIAkJICogcmVzZXQgdGhlIE5NSS10aW1lb3V0LCBsaXN0aW5nIGFsbCBmaWxlcyBvbiBhIHNsb3cKLQkJICogY29uc29sZSBtaWdodCB0YWtlIGFsb3Qgb2YgdGltZToKKwkJICogY29uc29sZSBtaWdodCB0YWtlIGEgbG90IG9mIHRpbWU6CiAJCSAqLwogCQl0b3VjaF9ubWlfd2F0Y2hkb2coKTsKIAkJaWYgKCFzdGF0ZV9maWx0ZXIgfHwgKHAtPnN0YXRlICYgc3RhdGVfZmlsdGVyKSkKQEAgLTYzMzEsNiArNjMzMSw5IEBACiAJCWJyZWFrOwogI2VuZGlmCiAJfQorCisJdXBkYXRlX21heF9pbnRlcnZhbCgpOworCiAJcmV0dXJuIE5PVElGWV9PSzsKIH0KIApkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkX2F1dG9ncm91cC5jIGIva2VybmVsL3NjaGVkX2F1dG9ncm91cC5jCmluZGV4IDU5NDZhYzUuLjQyOTI0MmYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZF9hdXRvZ3JvdXAuYworKysgYi9rZXJuZWwvc2NoZWRfYXV0b2dyb3VwLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogCXN0cnVjdCBhdXRvZ3JvdXAgKmFnID0gYXV0b2dyb3VwX2NyZWF0ZSgpOwogCiAJYXV0b2dyb3VwX21vdmVfZ3JvdXAocCwgYWcpOwotCS8qIGRyb3AgZXh0cmEgcmVmcmVuY2UgYWRkZWQgYnkgYXV0b2dyb3VwX2NyZWF0ZSgpICovCisJLyogZHJvcCBleHRyYSByZWZlcmVuY2UgYWRkZWQgYnkgYXV0b2dyb3VwX2NyZWF0ZSgpICovCiAJYXV0b2dyb3VwX2tyZWZfcHV0KGFnKTsKIH0KIEVYUE9SVF9TWU1CT0woc2NoZWRfYXV0b2dyb3VwX2NyZWF0ZV9hdHRhY2gpOwpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkX2ZhaXIuYyBiL2tlcm5lbC9zY2hlZF9mYWlyLmMKaW5kZXggYzdlYzVjOC4uN2YwMDc3MiAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkX2ZhaXIuYworKysgYi9rZXJuZWwvc2NoZWRfZmFpci5jCkBAIC0zMDYyLDcgKzMwNjIsNyBAQAogCiAJLyoKIAkgKiBpZiAqaW1iYWxhbmNlIGlzIGxlc3MgdGhhbiB0aGUgYXZlcmFnZSBsb2FkIHBlciBydW5uYWJsZSB0YXNrCi0JICogdGhlcmUgaXMgbm8gZ2F1cmFudGVlIHRoYXQgYW55IHRhc2tzIHdpbGwgYmUgbW92ZWQgc28gd2UnbGwgaGF2ZQorCSAqIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGFueSB0YXNrcyB3aWxsIGJlIG1vdmVkIHNvIHdlJ2xsIGhhdmUKIAkgKiBhIHRoaW5rIGFib3V0IGJ1bXBpbmcgaXRzIHZhbHVlIHRvIGZvcmNlIGF0IGxlYXN0IG9uZSB0YXNrIHRvIGJlCiAJICogbW92ZWQKIAkgKi8KQEAgLTM4MjAsNiArMzgyMCwxNyBAQAogCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGJhbGFuY2luZyk7CiAKK3N0YXRpYyB1bnNpZ25lZCBsb25nIF9fcmVhZF9tb3N0bHkgbWF4X2xvYWRfYmFsYW5jZV9pbnRlcnZhbCA9IEhaLzEwOworCisvKgorICogU2NhbGUgdGhlIG1heCBsb2FkX2JhbGFuY2UgaW50ZXJ2YWwgd2l0aCB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4KKyAqIFRoaXMgdHJhZGVzIGxvYWQtYmFsYW5jZSBsYXRlbmN5IG9uIGxhcmdlciBtYWNoaW5lcyBmb3IgbGVzcyBjcm9zcyB0YWxrLgorICovCitzdGF0aWMgdm9pZCB1cGRhdGVfbWF4X2ludGVydmFsKHZvaWQpCit7CisJbWF4X2xvYWRfYmFsYW5jZV9pbnRlcnZhbCA9IEhaKm51bV9vbmxpbmVfY3B1cygpLzEwOworfQorCiAvKgogICogSXQgY2hlY2tzIGVhY2ggc2NoZWR1bGluZyBkb21haW4gdG8gc2VlIGlmIGl0IGlzIGR1ZSB0byBiZSBiYWxhbmNlZCwKICAqIGFuZCBpbml0aWF0ZXMgYSBiYWxhbmNpbmcgb3BlcmF0aW9uIGlmIHNvLgpAQCAtMzg0OSwxMCArMzg2MCw3IEBACiAKIAkJLyogc2NhbGUgbXMgdG8gamlmZmllcyAqLwogCQlpbnRlcnZhbCA9IG1zZWNzX3RvX2ppZmZpZXMoaW50ZXJ2YWwpOwotCQlpZiAodW5saWtlbHkoIWludGVydmFsKSkKLQkJCWludGVydmFsID0gMTsKLQkJaWYgKGludGVydmFsID4gSFoqbnVtX29ubGluZV9jcHVzKCkvMTApCi0JCQlpbnRlcnZhbCA9IEhaKm51bV9vbmxpbmVfY3B1cygpLzEwOworCQlpbnRlcnZhbCA9IGNsYW1wKGludGVydmFsLCAxVUwsIG1heF9sb2FkX2JhbGFuY2VfaW50ZXJ2YWwpOwogCiAJCW5lZWRfc2VyaWFsaXplID0gc2QtPmZsYWdzICYgU0RfU0VSSUFMSVpFOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfcnQuYyBiL2tlcm5lbC9zY2hlZF9ydC5jCmluZGV4IGRiMzA4Y2IuLmU3Y2ViZGMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZF9ydC5jCisrKyBiL2tlcm5lbC9zY2hlZF9ydC5jCkBAIC0xMzc4LDcgKzEzNzgsNyBAQAogCQl0YXNrID0gcGlja19uZXh0X3B1c2hhYmxlX3Rhc2socnEpOwogCQlpZiAodGFza19jcHUobmV4dF90YXNrKSA9PSBycS0+Y3B1ICYmIHRhc2sgPT0gbmV4dF90YXNrKSB7CiAJCQkvKgotCQkJICogSWYgd2UgZ2V0IGhlcmUsIHRoZSB0YXNrIGhhc250IG1vdmVkIGF0IGFsbCwgYnV0CisJCQkgKiBJZiB3ZSBnZXQgaGVyZSwgdGhlIHRhc2sgaGFzbid0IG1vdmVkIGF0IGFsbCwgYnV0CiAJCQkgKiBpdCBoYXMgZmFpbGVkIHRvIHB1c2guICBXZSB3aWxsIG5vdCB0cnkgYWdhaW4sCiAJCQkgKiBzaW5jZSB0aGUgb3RoZXIgY3B1cyB3aWxsIHB1bGwgZnJvbSB1cyB3aGVuIHRoZXkKIAkJCSAqIGFyZSByZWFkeS4KQEAgLTE0ODgsNyArMTQ4OCw3IEBACiAJCQkvKgogCQkJICogV2UgY29udGludWUgd2l0aCB0aGUgc2VhcmNoLCBqdXN0IGluCiAJCQkgKiBjYXNlIHRoZXJlJ3MgYW4gZXZlbiBoaWdoZXIgcHJpbyB0YXNrCi0JCQkgKiBpbiBhbm90aGVyIHJ1bnF1ZXVlLiAobG93IGxpa2VseWhvb2QKKwkJCSAqIGluIGFub3RoZXIgcnVucXVldWUuIChsb3cgbGlrZWxpaG9vZAogCQkJICogYnV0IHBvc3NpYmxlKQogCQkJICovCiAJCX0KZGlmZiAtLWdpdCBhL2tlcm5lbC9zaWduYWwuYyBiL2tlcm5lbC9zaWduYWwuYwppbmRleCBkYzE3OTI5Li43MTY1YWY1IDEwMDY0NAotLS0gYS9rZXJuZWwvc2lnbmFsLmMKKysrIGIva2VybmVsL3NpZ25hbC5jCkBAIC0xODg3LDcgKzE4ODcsNyBAQAogCWZvciAoOzspIHsKIAkJc3RydWN0IGtfc2lnYWN0aW9uICprYTsKIAkJLyoKLQkJICogVHJhY2luZyBjYW4gaW5kdWNlIGFuIGFydGlmaWNhbCBzaWduYWwgYW5kIGNob29zZSBzaWdhY3Rpb24uCisJCSAqIFRyYWNpbmcgY2FuIGluZHVjZSBhbiBhcnRpZmljaWFsIHNpZ25hbCBhbmQgY2hvb3NlIHNpZ2FjdGlvbi4KIAkJICogVGhlIHJldHVybiB2YWx1ZSBpbiBAc2lnbnIgZGV0ZXJtaW5lcyB0aGUgZGVmYXVsdCBhY3Rpb24sCiAJCSAqIGJ1dCBAaW5mby0+c2lfc2lnbm8gaXMgdGhlIHNpZ25hbCBudW1iZXIgd2Ugd2lsbCByZXBvcnQuCiAJCSAqLwpAQCAtMjcxMSw4ICsyNzExLDggQEAKIC8qKgogICogIHN5c19ydF9zaWdhY3Rpb24gLSBhbHRlciBhbiBhY3Rpb24gdGFrZW4gYnkgYSBwcm9jZXNzCiAgKiAgQHNpZzogc2lnbmFsIHRvIGJlIHNlbnQKLSAqICBAYWN0OiB0aGUgdGhyZWFkIGdyb3VwIElEIG9mIHRoZSB0aHJlYWQKLSAqICBAb2FjdDogdGhlIFBJRCBvZiB0aGUgdGhyZWFkCisgKiAgQGFjdDogbmV3IHNpZ2FjdGlvbgorICogIEBvYWN0OiB1c2VkIHRvIHNhdmUgdGhlIHByZXZpb3VzIHNpZ2FjdGlvbgogICogIEBzaWdzZXRzaXplOiBzaXplIG9mIHNpZ3NldF90IHR5cGUKICAqLwogU1lTQ0FMTF9ERUZJTkU0KHJ0X3NpZ2FjdGlvbiwgaW50LCBzaWcsCmRpZmYgLS1naXQgYS9rZXJuZWwvc29mdGlycS5jIGIva2VybmVsL3NvZnRpcnEuYwppbmRleCA3MzVkODcwLi4xNzRmOTc2IDEwMDY0NAotLS0gYS9rZXJuZWwvc29mdGlycS5jCisrKyBiL2tlcm5lbC9zb2Z0aXJxLmMKQEAgLTU2Nyw3ICs1NjcsNyBAQAogLyoqCiAgKiB0YXNrbGV0X2hydGltZXJfaW5pdCAtIEluaXQgYSB0YXNrbGV0L2hydGltZXIgY29tYm8gZm9yIHNvZnRpcnEgY2FsbGJhY2tzCiAgKiBAdHRpbWVyOgkgdGFza2xldF9ocnRpbWVyIHdoaWNoIGlzIGluaXRpYWxpemVkCi0gKiBAZnVuY3Rpb246CSBocnRpbWVyIGNhbGxiYWNrIGZ1bnRpb24gd2hpY2ggZ2V0cyBjYWxsZWQgZnJvbSBzb2Z0aXJxIGNvbnRleHQKKyAqIEBmdW5jdGlvbjoJIGhydGltZXIgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggZ2V0cyBjYWxsZWQgZnJvbSBzb2Z0aXJxIGNvbnRleHQKICAqIEB3aGljaF9jbG9jazogY2xvY2sgaWQgKENMT0NLX01PTk9UT05JQy9DTE9DS19SRUFMVElNRSkKICAqIEBtb2RlOgkgaHJ0aW1lciBtb2RlIChIUlRJTUVSX01PREVfQUJTL0hSVElNRVJfTU9ERV9SRUwpCiAgKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC90aW1lL2ppZmZpZXMuYyBiL2tlcm5lbC90aW1lL2ppZmZpZXMuYwppbmRleCBiMmZhNTA2Li5hNDcwMTU0IDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS9qaWZmaWVzLmMKKysrIGIva2VybmVsL3RpbWUvamlmZmllcy5jCkBAIC0zNCw3ICszNCw3IEBACiAgKiBpbmFjY3VyYWNpZXMgY2F1c2VkIGJ5IG1pc3NlZCBvciBsb3N0IHRpbWVyCiAgKiBpbnRlcnJ1cHRzIGFuZCB0aGUgaW5hYmlsaXR5IGZvciB0aGUgdGltZXIKICAqIGludGVycnVwdCBoYXJkd2FyZSB0byBhY2N1cmF0bHkgdGljayBhdCB0aGUKLSAqIHJlcXVlc3RlZCBIWiB2YWx1ZS4gSXQgaXMgYWxzbyBub3QgcmVjY29tZW5kZWQKKyAqIHJlcXVlc3RlZCBIWiB2YWx1ZS4gSXQgaXMgYWxzbyBub3QgcmVjb21tZW5kZWQKICAqIGZvciAidGljay1sZXNzIiBzeXN0ZW1zLgogICovCiAjZGVmaW5lIE5TRUNfUEVSX0pJRkZZCSgodTMyKSgoKCh1NjQpTlNFQ19QRVJfU0VDKTw8OCkvQUNUSFopKQpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZXJfc3RhdHMuYyBiL2tlcm5lbC90aW1lL3RpbWVyX3N0YXRzLmMKaW5kZXggMmYzYjU4NS4uYTVkMGEzYSAxMDA2NDQKLS0tIGEva2VybmVsL3RpbWUvdGltZXJfc3RhdHMuYworKysgYi9rZXJuZWwvdGltZS90aW1lcl9zdGF0cy5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAkJCSAgICAgIHVuc2lnbmVkIGludCB0aW1lcl9mbGFnKQogewogCS8qCi0JICogSXQgZG9lc250IG1hdHRlciB3aGljaCBsb2NrIHdlIHRha2U6CisJICogSXQgZG9lc24ndCBtYXR0ZXIgd2hpY2ggbG9jayB3ZSB0YWtlOgogCSAqLwogCXJhd19zcGlubG9ja190ICpsb2NrOwogCXN0cnVjdCBlbnRyeSAqZW50cnksIGlucHV0OwpkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL2Z0cmFjZS5jIGIva2VybmVsL3RyYWNlL2Z0cmFjZS5jCmluZGV4IGMwNzVmNGUuLmVlMjRmYTEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS9mdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvZnRyYWNlLmMKQEAgLTEyNjgsNyArMTI2OCw3IEBACiAJCXAtPmZsYWdzID0gMEw7CiAKIAkJLyoKLQkJICogRG8gdGhlIGluaXRpYWwgcmVjb3JkIGNvbnZlcnRpb24gZnJvbSBtY291bnQganVtcAorCQkgKiBEbyB0aGUgaW5pdGlhbCByZWNvcmQgY29udmVyc2lvbiBmcm9tIG1jb3VudCBqdW1wCiAJCSAqIHRvIHRoZSBOT1AgaW5zdHJ1Y3Rpb25zLgogCQkgKi8KIAkJaWYgKCFmdHJhY2VfY29kZV9kaXNhYmxlKG1vZCwgcCkpIHsKQEAgLTM0MjUsNyArMzQyNSw3IEBACiAJYXRvbWljX3NldCgmdC0+dHJhY2luZ19ncmFwaF9wYXVzZSwgMCk7CiAJYXRvbWljX3NldCgmdC0+dHJhY2Vfb3ZlcnJ1biwgMCk7CiAJdC0+ZnRyYWNlX3RpbWVzdGFtcCA9IDA7Ci0JLyogbWFrZSBjdXJyX3JldF9zdGFjayB2aXNhYmxlIGJlZm9yZSB3ZSBhZGQgdGhlIHJldF9zdGFjayAqLworCS8qIG1ha2UgY3Vycl9yZXRfc3RhY2sgdmlzaWJsZSBiZWZvcmUgd2UgYWRkIHRoZSByZXRfc3RhY2sgKi8KIAlzbXBfd21iKCk7CiAJdC0+cmV0X3N0YWNrID0gcmV0X3N0YWNrOwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3JpbmdfYnVmZmVyLmMgYi9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYwppbmRleCBkOWM4YmNhLi4wZWY3YjRiIDEwMDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYworKysgYi9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYwpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAKIAlyZXR1cm4gbG9jYWxfcmVhZCgmYnBhZ2UtPmVudHJpZXMpICYgUkJfV1JJVEVfTUFTSzsKIH0KIAotLyogU2l6ZSBpcyBkZXRlcm1pbmVkIGJ5IHdoYXQgaGFzIGJlZW4gY29tbWl0ZWQgKi8KKy8qIFNpemUgaXMgZGV0ZXJtaW5lZCBieSB3aGF0IGhhcyBiZWVuIGNvbW1pdHRlZCAqLwogc3RhdGljIGlubGluZSB1bnNpZ25lZCByYl9wYWdlX3NpemUoc3RydWN0IGJ1ZmZlcl9wYWdlICpicGFnZSkKIHsKIAlyZXR1cm4gcmJfcGFnZV9jb21taXQoYnBhZ2UpOwpAQCAtMjkzMiw3ICsyOTMyLDcgQEAKIAkvKgogCSAqIGNwdV9idWZmZXItPnBhZ2VzIGp1c3QgbmVlZHMgdG8gcG9pbnQgdG8gdGhlIGJ1ZmZlciwgaXQKIAkgKiAgaGFzIG5vIHNwZWNpZmljIGJ1ZmZlciBwYWdlIHRvIHBvaW50IHRvLiBMZXRzIG1vdmUgaXQgb3V0Ci0JICogIG9mIG91ciB3YXkgc28gd2UgZG9uJ3QgYWNjaWRlbnRseSBzd2FwIGl0LgorCSAqICBvZiBvdXIgd2F5IHNvIHdlIGRvbid0IGFjY2lkZW50YWxseSBzd2FwIGl0LgogCSAqLwogCWNwdV9idWZmZXItPnBhZ2VzID0gcmVhZGVyLT5saXN0LnByZXY7CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZS5jIGIva2VybmVsL3RyYWNlL3RyYWNlLmMKaW5kZXggOTU0MWMyNy4uZDM4YzE2YSAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlLmMKKysrIGIva2VybmVsL3RyYWNlL3RyYWNlLmMKQEAgLTMyMzksNyArMzIzOSw3IEBACiAJCXRyYWNlX3NlcV9pbml0KCZpdGVyLT5zZXEpOwogCiAJLyoKLQkgKiBJZiB0aGVyZSB3YXMgbm90aGluZyB0byBzZW5kIHRvIHVzZXIsIGluc3BpdGUgb2YgY29uc3VtaW5nIHRyYWNlCisJICogSWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gc2VuZCB0byB1c2VyLCBpbiBzcGl0ZSBvZiBjb25zdW1pbmcgdHJhY2UKIAkgKiBlbnRyaWVzLCBnbyBiYWNrIHRvIHdhaXQgZm9yIG1vcmUgZW50cmllcy4KIAkgKi8KIAlpZiAoc3JldCA9PSAtRUJVU1kpCmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvdHJhY2VfY2xvY2suYyBiL2tlcm5lbC90cmFjZS90cmFjZV9jbG9jay5jCmluZGV4IDY4NWE2N2QuLjYzMDI3NDcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS90cmFjZV9jbG9jay5jCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZV9jbG9jay5jCkBAIC00Niw3ICs0Niw3IEBACiB9CiAKIC8qCi0gKiB0cmFjZV9jbG9jaygpOiAnaW5iZXR3ZWVuJyB0cmFjZSBjbG9jay4gTm90IGNvbXBsZXRlbHkgc2VyaWFsaXplZCwKKyAqIHRyYWNlX2Nsb2NrKCk6ICdiZXR3ZWVuJyB0cmFjZSBjbG9jay4gTm90IGNvbXBsZXRlbHkgc2VyaWFsaXplZCwKICAqIGJ1dCBub3QgY29tcGxldGVseSBpbmNvcnJlY3Qgd2hlbiBjcm9zc2luZyBDUFVzIGVpdGhlci4KICAqCiAgKiBUaGlzIGlzIGJhc2VkIG9uIGNwdV9jbG9jaygpLCB3aGljaCB3aWxsIGFsbG93IGF0IG1vc3QgfjEgamlmZnkgb2YKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZV9lbnRyaWVzLmggYi9rZXJuZWwvdHJhY2UvdHJhY2VfZW50cmllcy5oCmluZGV4IDE1MTZjYjMuLmUzMjc0NGMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS90cmFjZV9lbnRyaWVzLmgKKysrIGIva2VybmVsL3RyYWNlL3RyYWNlX2VudHJpZXMuaApAQCAtMjcsNyArMjcsNyBAQAogICoJICBpbiB0aGUgc3RydWN0dXJlLgogICoKICAqICAgKiBmb3Igc3RydWN0dXJlcyB3aXRoaW4gc3RydWN0dXJlcywgdGhlIGZvcm1hdCBvZiB0aGUgaW50ZXJuYWwKLSAqCXN0cnVjdHVyZSBpcyBsYXllZCBvdXQuIFRoaXMgYWxsb3dzIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUKKyAqCXN0cnVjdHVyZSBpcyBsYWlkIG91dC4gVGhpcyBhbGxvd3MgdGhlIGludGVybmFsIHN0cnVjdHVyZQogICoJdG8gYmUgZGVjaXBoZXJlZCBmb3IgdGhlIGZvcm1hdCBmaWxlLiBBbHRob3VnaCB0aGVzZSBtYWNyb3MKICAqCW1heSBiZWNvbWUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgaW50ZXJuYWwgc3RydWN0dXJlLCB0aGV5CiAgKgl3aWxsIGNyZWF0ZSBhIGNvbXBpbGUgZXJyb3IgaWYgaXQgaGFwcGVucy4gU2luY2UgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvdHJhY2VfZnVuY3Rpb25zX2dyYXBoLmMgYi9rZXJuZWwvdHJhY2UvdHJhY2VfZnVuY3Rpb25zX2dyYXBoLmMKaW5kZXggNzZiMDU5OC4uOTYyY2RiMiAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlX2Z1bmN0aW9uc19ncmFwaC5jCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZV9mdW5jdGlvbnNfZ3JhcGguYwpAQCAtOTA1LDcgKzkwNSw3IEBACiAgKgogICogcmV0dXJucyAxIGlmCiAgKiAgLSB3ZSBhcmUgaW5zaWRlIGlycSBjb2RlCi0gKiAgLSB3ZSBqdXN0IGV4dGVyZWQgaXJxIGNvZGUKKyAqICAtIHdlIGp1c3QgZW50ZXJlZCBpcnEgY29kZQogICoKICAqIHJldHVubnMgMCBpZgogICogIC0gZnVuY2dyYXBoLWludGVycnVwdHMgb3B0aW9uIGlzIHNldApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3RyYWNlX2lycXNvZmYuYyBiL2tlcm5lbC90cmFjZS90cmFjZV9pcnFzb2ZmLmMKaW5kZXggOTJiNmUxZS4uYTQ5NjliNCAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlX2lycXNvZmYuYworKysgYi9rZXJuZWwvdHJhY2UvdHJhY2VfaXJxc29mZi5jCkBAIC04MCw3ICs4MCw3IEBACiAgKiBza2lwIHRoZSBsYXRlbmN5IGlmIHRoZSBzZXF1ZW5jZSBoYXMgY2hhbmdlZCAtIHNvbWUgb3RoZXIgc2VjdGlvbgogICogZGlkIGEgbWF4aW11bSBhbmQgY291bGQgZGlzdHVyYiBvdXIgbWVhc3VyZW1lbnQgd2l0aCBzZXJpYWwgY29uc29sZQogICogcHJpbnRvdXRzLCBldGMuIFRydWx5IGNvaW5jaWRpbmcgbWF4aW11bSBsYXRlbmNpZXMgc2hvdWxkIGJlIHJhcmUKLSAqIGFuZCB3aGF0IGhhcHBlbnMgdG9nZXRoZXIgaGFwcGVucyBzZXBhcmF0ZWx5IGFzIHdlbGwsIHNvIHRoaXMgZG9lc250CisgKiBhbmQgd2hhdCBoYXBwZW5zIHRvZ2V0aGVyIGhhcHBlbnMgc2VwYXJhdGVseSBhcyB3ZWxsLCBzbyB0aGlzIGRvZXNuJ3QKICAqIGRlY3JlYXNlIHRoZSB2YWxpZGl0eSBvZiB0aGUgbWF4aW11bSBmb3VuZDoKICAqLwogc3RhdGljIF9fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wCXVuc2lnbmVkIGxvbmcgbWF4X3NlcXVlbmNlOwpkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jIGIva2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jCmluZGV4IDg0MzViNDMuLjM1ZDU1YTMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYworKysgYi9rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMKQEAgLTE4MzksNyArMTgzOSw3IEBACiAJa2ZyZWUodHAtPmNhbGwucHJpbnRfZm10KTsKIH0KIAotLyogTWFrZSBhIGRlYnVnZnMgaW50ZXJmYWNlIGZvciBjb250cm9saW5nIHByb2JlIHBvaW50cyAqLworLyogTWFrZSBhIGRlYnVnZnMgaW50ZXJmYWNlIGZvciBjb250cm9sbGluZyBwcm9iZSBwb2ludHMgKi8KIHN0YXRpYyBfX2luaXQgaW50IGluaXRfa3Byb2JlX3RyYWNlKHZvaWQpCiB7CiAJc3RydWN0IGRlbnRyeSAqZF90cmFjZXI7CmRpZmYgLS1naXQgYS9rZXJuZWwvdXNlci1yZXR1cm4tbm90aWZpZXIuYyBiL2tlcm5lbC91c2VyLXJldHVybi1ub3RpZmllci5jCmluZGV4IGViMjdmZDMuLjkyY2I3MDYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC91c2VyLXJldHVybi1ub3RpZmllci5jCisrKyBiL2tlcm5lbC91c2VyLXJldHVybi1ub3RpZmllci5jCkBAIC0yMCw3ICsyMCw3IEBACiAKIC8qCiAgKiBSZW1vdmVzIGEgcmVnaXN0ZXJlZCB1c2VyIHJldHVybiBub3RpZmllci4gIE11c3QgYmUgY2FsbGVkIGZyb20gYXRvbWljCi0gKiBjb250ZXh0LCBhbmQgZnJvbSB0aGUgc2FtZSBjcHUgcmVnaXN0cmF0aW9uIG9jY3VyZWQgaW4uCisgKiBjb250ZXh0LCBhbmQgZnJvbSB0aGUgc2FtZSBjcHUgcmVnaXN0cmF0aW9uIG9jY3VycmVkIGluLgogICovCiB2b2lkIHVzZXJfcmV0dXJuX25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IHVzZXJfcmV0dXJuX25vdGlmaWVyICp1cm4pCiB7CmRpZmYgLS1naXQgYS9rZXJuZWwvd2FpdC5jIGIva2VybmVsL3dhaXQuYwppbmRleCBiMDMxMGViLi5mNDVlYThkIDEwMDY0NAotLS0gYS9rZXJuZWwvd2FpdC5jCisrKyBiL2tlcm5lbC93YWl0LmMKQEAgLTE0Miw3ICsxNDIsNyBAQAogICogd29rZW4gdXAgdGhyb3VnaCB0aGUgcXVldWUuCiAgKgogICogVGhpcyBwcmV2ZW50cyB3YWl0ZXIgc3RhcnZhdGlvbiB3aGVyZSBhbiBleGNsdXNpdmUgd2FpdGVyCi0gKiBhYm9ydHMgYW5kIGlzIHdva2VuIHVwIGNvbmN1cnJlbnRseSBhbmQgbm9vbmUgd2FrZXMgdXAKKyAqIGFib3J0cyBhbmQgaXMgd29rZW4gdXAgY29uY3VycmVudGx5IGFuZCBubyBvbmUgd2FrZXMgdXAKICAqIHRoZSBuZXh0IHdhaXRlci4KICAqLwogdm9pZCBhYm9ydF9leGNsdXNpdmVfd2FpdCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICp3YWl0LApkaWZmIC0tZ2l0IGEva2VybmVsL3dvcmtxdWV1ZS5jIGIva2VybmVsL3dvcmtxdWV1ZS5jCmluZGV4IDA0ZWY4MzAuLjg4NTlhNDEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC93b3JrcXVldWUuYworKysgYi9rZXJuZWwvd29ya3F1ZXVlLmMKQEAgLTEyOTEsNyArMTI5MSw3IEBACiAJCQlyZXR1cm4gdHJ1ZTsKIAkJc3Bpbl91bmxvY2tfaXJxKCZnY3dxLT5sb2NrKTsKIAotCQkvKiBDUFUgaGFzIGNvbWUgdXAgaW5iZXR3ZWVuLCByZXRyeSBtaWdyYXRpb24gKi8KKwkJLyogQ1BVIGhhcyBjb21lIHVwIGluIGJldHdlZW4sIHJldHJ5IG1pZ3JhdGlvbiAqLwogCQljcHVfcmVsYXgoKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9saWIvYml0bWFwLmMgYi9saWIvYml0bWFwLmMKaW5kZXggNzQxZmFlOS4uOTFlMGNjZiAxMDA2NDQKLS0tIGEvbGliL2JpdG1hcC5jCisrKyBiL2xpYi9iaXRtYXAuYwpAQCAtODMwLDcgKzgzMCw3IEBACiAgKiAgQG9yaWcgKGkuZS4gYml0cyAzLCA1LCA3IGFuZCA5KSB3ZXJlIGFsc28gc2V0LgogICoKICAqICBXaGVuIGJpdCAxMSBpcyBzZXQgaW4gQG9yaWcsIGl0IG1lYW5zIHR1cm4gb24gdGhlIGJpdCBpbgotICogIEBkc3QgY29ycmVzcG9uZGluZyB0byB3aGF0ZXZlciBpcyB0aGUgdHdlbHRoIGJpdCB0aGF0IGlzCisgKiAgQGRzdCBjb3JyZXNwb25kaW5nIHRvIHdoYXRldmVyIGlzIHRoZSB0d2VsZnRoIGJpdCB0aGF0IGlzCiAgKiAgdHVybmVkIG9uIGluIEByZWxtYXAuICBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlcmUgd2VyZQogICogIG9ubHkgdGVuIGJpdHMgdHVybmVkIG9uIGluIEByZWxtYXAgKDMwLi4zOSksIHNvIHRoYXQgYml0CiAgKiAgMTEgd2FzIHNldCBpbiBAb3JpZyBoYWQgbm8gYWZmZWN0IG9uIEBkc3QuCmRpZmYgLS1naXQgYS9saWIvYnRyZWUuYyBiL2xpYi9idHJlZS5jCmluZGV4IGM5YzZmMDMuLjJhMzQzOTIgMTAwNjQ0Ci0tLSBhL2xpYi9idHJlZS5jCisrKyBiL2xpYi9idHJlZS5jCkBAIC0xMSw3ICsxMSw3IEBACiAgKiBzZWUgaHR0cDovL3Byb2dyYW1taW5nLmtpY2tzLWFzcy5uZXQva2VybmVsLXBhdGNoZXMvdm1hX2xvb2t1cC9idHJlZS5wYXRjaAogICoKICAqIEEgcmVsYXRpdmVseSBzaW1wbGUgQitUcmVlIGltcGxlbWVudGF0aW9uLiAgSSBoYXZlIHdyaXR0ZW4gaXQgYXMgYSBsZWFybmluZwotICogZXhjZXJjaXNlIHRvIHVuZGVyc3RhbmQgaG93IEIrVHJlZXMgd29yay4gIFR1cm5lZCBvdXQgdG8gYmUgdXNlZnVsIGFzIHdlbGwuCisgKiBleGVyY2lzZSB0byB1bmRlcnN0YW5kIGhvdyBCK1RyZWVzIHdvcmsuICBUdXJuZWQgb3V0IHRvIGJlIHVzZWZ1bCBhcyB3ZWxsLgogICoKICAqIEIrVHJlZXMgY2FuIGJlIHVzZWQgc2ltaWxhciB0byBMaW51eCByYWRpeCB0cmVlcyAod2hpY2ggZG9uJ3QgaGF2ZSBhbnl0aGluZwogICogaW4gY29tbW9uIHdpdGggdGV4dGJvb2sgcmFkaXggdHJlZXMsIGJld2FyZSkuICBQcmVyZXF1aXNpdGUgZm9yIHRoZW0gd29ya2luZwpAQCAtNTQxLDcgKzU0MSw3IEBACiAJaW50IGksIG5vX2xlZnQsIG5vX3JpZ2h0OwogCiAJaWYgKGZpbGwgPT0gMCkgewotCQkvKiBCZWNhdXNlIHdlIGRvbid0IHN0ZWFsIGVudHJpZXMgZnJvbSBhIG5laWdib3VyLCB0aGlzIGNhc2UKKwkJLyogQmVjYXVzZSB3ZSBkb24ndCBzdGVhbCBlbnRyaWVzIGZyb20gYSBuZWlnaGJvdXIsIHRoaXMgY2FzZQogCQkgKiBjYW4gaGFwcGVuLiAgUGFyZW50IG5vZGUgY29udGFpbnMgYSBzaW5nbGUgY2hpbGQsIHRoaXMKIAkJICogbm9kZSwgc28gbWVyZ2luZyB3aXRoIGEgc2libGluZyBuZXZlciBoYXBwZW5zLgogCQkgKi8KZGlmZiAtLWdpdCBhL2xpYi9kZWNvbXByZXNzX3VueHouYyBiL2xpYi9kZWNvbXByZXNzX3VueHouYwppbmRleCBjZWNkMjNkLi45ZjM0ZWI1IDEwMDY0NAotLS0gYS9saWIvZGVjb21wcmVzc191bnh6LmMKKysrIGIvbGliL2RlY29tcHJlc3NfdW54ei5jCkBAIC04Myw3ICs4Myw3IEBACiAgKiAgICBzYWZldHlfbWFyZ2luID0gMTI4ICsgdW5jb21wcmVzc2VkX3NpemUgKiA4IC8gMzI3NjggKyA2NTUzNgogICogICAgICAgICAgICAgICAgICA9IDEyOCArICh1bmNvbXByZXNzZWRfc2l6ZSA+PiAxMikgKyA2NTUzNgogICoKLSAqIEZvciBjb21wYXJpc2lvbiwgYWNjb3JkaW5nIHRvIGFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMsIHRoZQorICogRm9yIGNvbXBhcmlzb24sIGFjY29yZGluZyB0byBhcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5jLCB0aGUKICAqIGVxdWl2YWxlbnQgZm9ybXVsYSBmb3IgRGVmbGF0ZSBpcyB0aGlzOgogICoKICAqICAgIHNhZmV0eV9tYXJnaW4gPSAxOCArICh1bmNvbXByZXNzZWRfc2l6ZSA+PiAxMikgKyAzMjc2OApkaWZmIC0tZ2l0IGEvbGliL3BhcnNlci5jIGIvbGliL3BhcnNlci5jCmluZGV4IDZlODllY2EuLmRjYmFhZWYgMTAwNjQ0Ci0tLSBhL2xpYi9wYXJzZXIuYworKysgYi9saWIvcGFyc2VyLmMKQEAgLTEzLDcgKzEzLDcgQEAKIAogLyoqCiAgKiBtYXRjaF9vbmU6IC0gRGV0ZXJtaW5lcyBpZiBhIHN0cmluZyBtYXRjaGVzIGEgc2ltcGxlIHBhdHRlcm4KLSAqIEBzOiB0aGUgc3RyaW5nIHRvIGV4YW1pbmUgZm9yIHByZXNlbnNlIG9mIHRoZSBwYXR0ZXJuCisgKiBAczogdGhlIHN0cmluZyB0byBleGFtaW5lIGZvciBwcmVzZW5jZSBvZiB0aGUgcGF0dGVybgogICogQHA6IHRoZSBzdHJpbmcgY29udGFpbmluZyB0aGUgcGF0dGVybgogICogQGFyZ3M6IGFycmF5IG9mICVNQVhfT1BUX0FSR1MgJnN1YnN0cmluZ190IGVsZW1lbnRzLiBVc2VkIHRvIHJldHVybiBtYXRjaAogICogbG9jYXRpb25zLgpkaWZmIC0tZ2l0IGEvbGliL3RpbWVycXVldWUuYyBiL2xpYi90aW1lcnF1ZXVlLmMKaW5kZXggZTNhMTA1MC4uMTkxMTc2YSAxMDA2NDQKLS0tIGEvbGliL3RpbWVycXVldWUuYworKysgYi9saWIvdGltZXJxdWV1ZS5jCkBAIC01LDcgKzUsNyBAQAogICogIFVzZXMgcmJ0cmVlcyBmb3IgcXVpY2sgbGlzdCBhZGRzIGFuZCBleHBpcmF0aW9uLgogICoKICAqICBOT1RFOiBBbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbmVlZCB0byBiZSBzZXJpYWxpemVkCi0gKiAgdG8gYXZvaWQgcmFjZXMuIE5vIGxvY2tpbmcgaXMgZG9uZSBieSB0aGlzIGxpYmFyeSBjb2RlLgorICogIHRvIGF2b2lkIHJhY2VzLiBObyBsb2NraW5nIGlzIGRvbmUgYnkgdGhpcyBsaWJyYXJ5IGNvZGUuCiAgKgogICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKZGlmZiAtLWdpdCBhL21tL2JhY2tpbmctZGV2LmMgYi9tbS9iYWNraW5nLWRldi5jCmluZGV4IDBkOWEwMzYuLmJlZmM4NzUgMTAwNjQ0Ci0tLSBhL21tL2JhY2tpbmctZGV2LmMKKysrIGIvbW0vYmFja2luZy1kZXYuYwpAQCAtNzg3LDcgKzc4Nyw3IEBACiAgKiBqaWZmaWVzIGZvciBlaXRoZXIgYSBCREkgdG8gZXhpdCBjb25nZXN0aW9uIG9mIHRoZSBnaXZlbiBAc3luYyBxdWV1ZQogICogb3IgYSB3cml0ZSB0byBjb21wbGV0ZS4KICAqCi0gKiBJbiB0aGUgYWJzZW5zZSBvZiB6b25lIGNvbmdlc3Rpb24sIGNvbmRfcmVzY2hlZCgpIGlzIGNhbGxlZCB0byB5aWVsZAorICogSW4gdGhlIGFic2VuY2Ugb2Ygem9uZSBjb25nZXN0aW9uLCBjb25kX3Jlc2NoZWQoKSBpcyBjYWxsZWQgdG8geWllbGQKICAqIHRoZSBwcm9jZXNzb3IgaWYgbmVjZXNzYXJ5IGJ1dCBvdGhlcndpc2UgZG9lcyBub3Qgc2xlZXAuCiAgKgogICogVGhlIHJldHVybiB2YWx1ZSBpcyAwIGlmIHRoZSBzbGVlcCBpcyBmb3IgdGhlIGZ1bGwgdGltZW91dC4gT3RoZXJ3aXNlLApkaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IDA2ZGU1YWEuLjhlZTNiZDggMTAwNjQ0Ci0tLSBhL21tL2h1Z2V0bGIuYworKysgYi9tbS9odWdldGxiLmMKQEAgLTE0Niw3ICsxNDYsNyBAQAogCQlpZiAocmctPmZyb20gPiB0KQogCQkJcmV0dXJuIGNoZzsKIAotCQkvKiBXZSBvdmVybGFwIHdpdGggdGhpcyBhcmVhLCBpZiBpdCBleHRlbmRzIGZ1dGhlciB0aGFuCisJCS8qIFdlIG92ZXJsYXAgd2l0aCB0aGlzIGFyZWEsIGlmIGl0IGV4dGVuZHMgZnVydGhlciB0aGFuCiAJCSAqIHVzIHRoZW4gd2UgbXVzdCBleHRlbmQgb3Vyc2VsdmVzLiAgQWNjb3VudCBmb3IgaXRzCiAJCSAqIGV4aXN0aW5nIHJlc2VydmF0aW9uLiAqLwogCQlpZiAocmctPnRvID4gdCkgewpAQCAtODQyLDcgKzg0Miw3IEBACiB9CiAKIC8qCi0gKiBJbmNyZWFzZSB0aGUgaHVnZXRsYiBwb29sIHN1Y2ggdGhhdCBpdCBjYW4gYWNjb21vZGF0ZSBhIHJlc2VydmF0aW9uCisgKiBJbmNyZWFzZSB0aGUgaHVnZXRsYiBwb29sIHN1Y2ggdGhhdCBpdCBjYW4gYWNjb21tb2RhdGUgYSByZXNlcnZhdGlvbgogICogb2Ygc2l6ZSAnZGVsdGEnLgogICovCiBzdGF0aWMgaW50IGdhdGhlcl9zdXJwbHVzX3BhZ2VzKHN0cnVjdCBoc3RhdGUgKmgsIGludCBkZWx0YSkKQEAgLTg5MCw3ICs4OTAsNyBAQAogCiAJLyoKIAkgKiBUaGUgc3VycGx1c19saXN0IG5vdyBjb250YWlucyBfYXRfbGVhc3RfIHRoZSBudW1iZXIgb2YgZXh0cmEgcGFnZXMKLQkgKiBuZWVkZWQgdG8gYWNjb21vZGF0ZSB0aGUgcmVzZXJ2YXRpb24uICBBZGQgdGhlIGFwcHJvcHJpYXRlIG51bWJlcgorCSAqIG5lZWRlZCB0byBhY2NvbW1vZGF0ZSB0aGUgcmVzZXJ2YXRpb24uICBBZGQgdGhlIGFwcHJvcHJpYXRlIG51bWJlcgogCSAqIG9mIHBhZ2VzIHRvIHRoZSBodWdldGxiIHBvb2wgYW5kIGZyZWUgdGhlIGV4dHJhcyBiYWNrIHRvIHRoZSBidWRkeQogCSAqIGFsbG9jYXRvci4gIENvbW1pdCB0aGUgZW50aXJlIHJlc2VydmF0aW9uIGhlcmUgdG8gcHJldmVudCBhbm90aGVyCiAJICogcHJvY2VzcyBmcm9tIHN0ZWFsaW5nIHRoZSBwYWdlcyBhcyB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcG9vbCBidXQKQEAgLTIwNDMsNyArMjA0Myw3IEBACiAJICogVGhpcyBuZXcgVk1BIHNob3VsZCBzaGFyZSBpdHMgc2libGluZ3MgcmVzZXJ2YXRpb24gbWFwIGlmIHByZXNlbnQuCiAJICogVGhlIFZNQSB3aWxsIG9ubHkgZXZlciBoYXZlIGEgdmFsaWQgcmVzZXJ2YXRpb24gbWFwIHBvaW50ZXIgd2hlcmUKIAkgKiBpdCBpcyBiZWluZyBjb3BpZWQgZm9yIGFub3RoZXIgc3RpbGwgZXhpc3RpbmcgVk1BLiAgQXMgdGhhdCBWTUEKLQkgKiBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIHJlc2VydmF0aW9uIG1hcCBpdCBjYW5ub3QgZGlzc2FwcGVhciB1bnRpbAorCSAqIGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgcmVzZXJ2YXRpb24gbWFwIGl0IGNhbm5vdCBkaXNhcHBlYXIgdW50aWwKIAkgKiBhZnRlciB0aGlzIG9wZW4gY2FsbCBjb21wbGV0ZXMuICBJdCBpcyB0aGVyZWZvcmUgc2FmZSB0byB0YWtlIGEKIAkgKiBuZXcgcmVmZXJlbmNlIGhlcmUgd2l0aG91dCBhZGRpdGlvbmFsIGxvY2tpbmcuCiAJICovCkBAIC0yNDkwLDcgKzI0OTAsNyBAQAogCS8qCiAJICogQ3VycmVudGx5LCB3ZSBhcmUgZm9yY2VkIHRvIGtpbGwgdGhlIHByb2Nlc3MgaW4gdGhlIGV2ZW50IHRoZQogCSAqIG9yaWdpbmFsIG1hcHBlciBoYXMgdW5tYXBwZWQgcGFnZXMgZnJvbSB0aGUgY2hpbGQgZHVlIHRvIGEgZmFpbGVkCi0JICogQ09XLiBXYXJuIHRoYXQgc3VjaCBhIHNpdHVhdGlvbiBoYXMgb2NjdXJlZCBhcyBpdCBtYXkgbm90IGJlIG9idmlvdXMKKwkgKiBDT1cuIFdhcm4gdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGhhcyBvY2N1cnJlZCBhcyBpdCBtYXkgbm90IGJlIG9idmlvdXMKIAkgKi8KIAlpZiAoaXNfdm1hX3Jlc3Zfc2V0KHZtYSwgSFBBR0VfUkVTVl9VTk1BUFBFRCkpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORwpkaWZmIC0tZ2l0IGEvbW0vaHdwb2lzb24taW5qZWN0LmMgYi9tbS9od3BvaXNvbi1pbmplY3QuYwppbmRleCAwOTQ4ZjEwLi5jN2ZjN2ZkIDEwMDY0NAotLS0gYS9tbS9od3BvaXNvbi1pbmplY3QuYworKysgYi9tbS9od3BvaXNvbi1pbmplY3QuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIEluamVjdCBhIGh3cG9pc29uIG1lbW9yeSBmYWlsdXJlIG9uIGEgYXJiaXRhcnkgcGZuICovCisvKiBJbmplY3QgYSBod3BvaXNvbiBtZW1vcnkgZmFpbHVyZSBvbiBhIGFyYml0cmFyeSBwZm4gKi8KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaAppbmRleCAzNDM4ZGQ0Li45ZDBjZWQ4IDEwMDY0NAotLS0gYS9tbS9pbnRlcm5hbC5oCisrKyBiL21tL2ludGVybmFsLmgKQEAgLTE2Miw3ICsxNjIsNyBAQAogfQogCiAvKgotICogSXRlcmF0b3Igb3ZlciBhbGwgc3VicGFnZXMgd2l0aGluZyB0aGUgbWF4aW1hbGx5IGFsaWduZWQgZ2lnYW50aWMKKyAqIEl0ZXJhdG9yIG92ZXIgYWxsIHN1YnBhZ2VzIHdpdGhpbiB0aGUgbWF4aW1hbGx5IGFsaWduZWQgZ2lnYW50aWMKICAqIHBhZ2UgJ2Jhc2UnLiAgSGFuZGxlIGFueSBkaXNjb250aWd1aXR5IGluIHRoZSBtZW1fbWFwLgogICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICptZW1fbWFwX25leHQoc3RydWN0IHBhZ2UgKml0ZXIsCmRpZmYgLS1naXQgYS9tbS9rbWVtbGVhay5jIGIvbW0va21lbWxlYWsuYwppbmRleCA4NDIyNWYzLi5jMWQ1ODY3IDEwMDY0NAotLS0gYS9tbS9rbWVtbGVhay5jCisrKyBiL21tL2ttZW1sZWFrLmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogfSB3aGlsZSAoMCkKIAogLyoKLSAqIE1hY3JvIGludm9rZWQgd2hlbiBhIHNlcmlvdXMga21lbWxlYWsgY29uZGl0aW9uIG9jY3VyZWQgYW5kIGNhbm5vdCBiZQorICogTWFjcm8gaW52b2tlZCB3aGVuIGEgc2VyaW91cyBrbWVtbGVhayBjb25kaXRpb24gb2NjdXJyZWQgYW5kIGNhbm5vdCBiZQogICogcmVjb3ZlcmVkIGZyb20uIEttZW1sZWFrIHdpbGwgYmUgZGlzYWJsZWQgYW5kIGZ1cnRoZXIgYWxsb2NhdGlvbi9mcmVlaW5nCiAgKiB0cmFjaW5nIG5vIGxvbmdlciBhdmFpbGFibGUuCiAgKi8KQEAgLTEwMDYsNyArMTAwNiw3IEBACiAKIC8qCiAgKiBNZW1vcnkgc2Nhbm5pbmcgaXMgYSBsb25nIHByb2Nlc3MgYW5kIGl0IG5lZWRzIHRvIGJlIGludGVycnVwdGFibGUuIFRoaXMKLSAqIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHN1Y2ggaW50ZXJydXB0IGNvbmRpdGlvbiBvY2N1cmVkLgorICogZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgc3VjaCBpbnRlcnJ1cHQgY29uZGl0aW9uIG9jY3VycmVkLgogICovCiBzdGF0aWMgaW50IHNjYW5fc2hvdWxkX3N0b3Aodm9pZCkKIHsKQEAgLTE3MzMsNyArMTczMyw3IEBACiAKIAlpZiAoYXRvbWljX3JlYWQoJmttZW1sZWFrX2Vycm9yKSkgewogCQkvKgotCQkgKiBTb21lIGVycm9yIG9jY3VyZWQgYW5kIGttZW1sZWFrIHdhcyBkaXNhYmxlZC4gVGhlcmUgaXMgYQorCQkgKiBTb21lIGVycm9yIG9jY3VycmVkIGFuZCBrbWVtbGVhayB3YXMgZGlzYWJsZWQuIFRoZXJlIGlzIGEKIAkJICogc21hbGwgY2hhbmNlIHRoYXQga21lbWxlYWtfZGlzYWJsZSgpIHdhcyBjYWxsZWQgaW1tZWRpYXRlbHkKIAkJICogYWZ0ZXIgc2V0dGluZyBrbWVtbGVha19pbml0aWFsaXplZCBhbmQgd2UgbWF5IGVuZCB1cCB3aXRoCiAJCSAqIHR3byBjbGVhbi11cCB0aHJlYWRzIGJ1dCBzZXJpYWxpemVkIGJ5IHNjYW5fbXV0ZXguCmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jCmluZGV4IDFiYmU3ODUuLjk0MmRmYzcgMTAwNjQ0Ci0tLSBhL21tL2tzbS5jCisrKyBiL21tL2tzbS5jCkBAIC03MjAsNyArNzIwLDcgQEAKIAkJc3dhcHBlZCA9IFBhZ2VTd2FwQ2FjaGUocGFnZSk7CiAJCWZsdXNoX2NhY2hlX3BhZ2Uodm1hLCBhZGRyLCBwYWdlX3RvX3BmbihwYWdlKSk7CiAJCS8qCi0JCSAqIE9rIHRoaXMgaXMgdHJpY2t5LCB3aGVuIGdldF91c2VyX3BhZ2VzX2Zhc3QoKSBydW4gaXQgZG9lc250CisJCSAqIE9rIHRoaXMgaXMgdHJpY2t5LCB3aGVuIGdldF91c2VyX3BhZ2VzX2Zhc3QoKSBydW4gaXQgZG9lc24ndAogCQkgKiB0YWtlIGFueSBsb2NrLCB0aGVyZWZvcmUgdGhlIGNoZWNrIHRoYXQgd2UgYXJlIGdvaW5nIHRvIG1ha2UKIAkJICogd2l0aCB0aGUgcGFnZWNvdW50IGFnYWluc3QgdGhlIG1hcGNvdW50IGlzIHJhY2V5IGFuZAogCQkgKiBPX0RJUkVDVCBjYW4gaGFwcGVuIHJpZ2h0IGFmdGVyIHRoZSBjaGVjay4KZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuYwppbmRleCAxZjBiNDYwLi4wMTBmOTE2IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKKysrIGIvbW0vbWVtY29udHJvbC5jCkBAIC0xNDY2LDcgKzE0NjYsNyBAQAogCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJLyoKLQkJCQkgKiBXZSB3YW50IHRvIGRvIG1vcmUgdGFyZ2V0dGVkIHJlY2xhaW0uCisJCQkJICogV2Ugd2FudCB0byBkbyBtb3JlIHRhcmdldGVkIHJlY2xhaW0uCiAJCQkJICogZXhjZXNzID4+IDIgaXMgbm90IHRvIGV4Y2Vzc2l2ZSBzbyBhcyB0bwogCQkJCSAqIHJlY2xhaW0gdG9vIG11Y2gsIG5vciB0b28gbGVzcyB0aGF0IHdlIGtlZXAKIAkJCQkgKiBjb21pbmcgYmFjayB0byByZWNsYWltIGZyb20gdGhpcyBjZ3JvdXAKQEAgLTIyNjUsNyArMjI2NSw3IEBACiAgKiAtIGNvbXBvdW5kX2xvY2sgaXMgaGVsZCB3aGVuIG5yX3BhZ2VzID4gMQogICoKICAqIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbyAiY2hhcmdlIiBub3IgY3NzX2dldCB0byBuZXcgY2dyb3VwLiBJdCBzaG91bGQgYmUKLSAqIGRvbmUgYnkgYSBjYWxsZXIoX19tZW1fY2dyb3VwX3RyeV9jaGFyZ2Ugd291bGQgYmUgdXNlZnVsbCkuIElmIEB1bmNoYXJnZSBpcworICogZG9uZSBieSBhIGNhbGxlcihfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZSB3b3VsZCBiZSB1c2VmdWwpLiBJZiBAdW5jaGFyZ2UgaXMKICAqIHRydWUsIHRoaXMgZnVuY3Rpb24gZG9lcyAidW5jaGFyZ2UiIGZyb20gb2xkIGNncm91cCwgYnV0IGl0IGRvZXNuJ3QgaWYKICAqIEB1bmNoYXJnZSBpcyBmYWxzZSwgc28gYSBjYWxsZXIgc2hvdWxkIGRvICJ1bmNoYXJnZSIuCiAgKi8KQEAgLTIzMTgsNyArMjMxOCw3IEBACiAJICogV2UgY2hhcmdlcyBhZ2FpbnN0ICJ0byIgd2hpY2ggbWF5IG5vdCBoYXZlIGFueSB0YXNrcy4gVGhlbiwgInRvIgogCSAqIGNhbiBiZSB1bmRlciBybWRpcigpLiBCdXQgaW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgY2FsbGVyIG9mCiAJICogdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGZvcmNlX2VtcHR5KCkgYW5kIG1vdmUgY2hhcmdlLCBzbyBpdCdzCi0JICogZ2FyYW50ZWVkIHRoYXQgInRvIiBpcyBuZXZlciByZW1vdmVkLiBTbywgd2UgZG9uJ3QgY2hlY2sgcm1kaXIKKwkgKiBndWFyYW50ZWVkIHRoYXQgInRvIiBpcyBuZXZlciByZW1vdmVkLiBTbywgd2UgZG9uJ3QgY2hlY2sgcm1kaXIKIAkgKiBzdGF0dXMgaGVyZS4KIAkgKi8KIAltb3ZlX3VubG9ja19wYWdlX2Nncm91cChwYywgJmZsYWdzKTsKQEAgLTI2NDgsNyArMjY0OCw3IEBACiAJCWJhdGNoLT5tZW1jZyA9IG1lbTsKIAkvKgogCSAqIGRvX2JhdGNoID4gMCB3aGVuIHVubWFwcGluZyBwYWdlcyBvciBpbm9kZSBpbnZhbGlkYXRlL3RydW5jYXRlLgotCSAqIEluIHRob3NlIGNhc2VzLCBhbGwgcGFnZXMgZnJlZWQgY29udGlub3VzbHkgY2FuIGJlIGV4cGVjdGVkIHRvIGJlIGluCisJICogSW4gdGhvc2UgY2FzZXMsIGFsbCBwYWdlcyBmcmVlZCBjb250aW51b3VzbHkgY2FuIGJlIGV4cGVjdGVkIHRvIGJlIGluCiAJICogdGhlIHNhbWUgY2dyb3VwIGFuZCB3ZSBoYXZlIGNoYW5jZSB0byBjb2FsZXNjZSB1bmNoYXJnZXMuCiAJICogQnV0IHdlIGRvIHVuY2hhcmdlIG9uZSBieSBvbmUgaWYgdGhpcyBpcyBraWxsZWQgYnkgT09NKFRJRl9NRU1ESUUpCiAJICogYmVjYXVzZSB3ZSB3YW50IHRvIGRvIHVuY2hhcmdlIGFzIHNvb24gYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9tbS9tZW1vcnktZmFpbHVyZS5jIGIvbW0vbWVtb3J5LWZhaWx1cmUuYwppbmRleCAzN2ZlYjlmLi4yYjlhNWVlIDEwMDY0NAotLS0gYS9tbS9tZW1vcnktZmFpbHVyZS5jCisrKyBiL21tL21lbW9yeS1mYWlsdXJlLmMKQEAgLTIwOCw3ICsyMDgsNyBAQAogCSAqIERvbid0IHVzZSBmb3JjZSBoZXJlLCBpdCdzIGNvbnZlbmllbnQgaWYgdGhlIHNpZ25hbAogCSAqIGNhbiBiZSB0ZW1wb3JhcmlseSBibG9ja2VkLgogCSAqIFRoaXMgY291bGQgY2F1c2UgYSBsb29wIHdoZW4gdGhlIHVzZXIgc2V0cyBTSUdCVVMKLQkgKiB0byBTSUdfSUdOLCBidXQgaG9wZWZ1bGx5IG5vb25lIHdpbGwgZG8gdGhhdD8KKwkgKiB0byBTSUdfSUdOLCBidXQgaG9wZWZ1bGx5IG5vIG9uZSB3aWxsIGRvIHRoYXQ/CiAJICovCiAJcmV0ID0gc2VuZF9zaWdfaW5mbyhTSUdCVVMsICZzaSwgdCk7ICAvKiBzeW5jaHJvbm91cz8gKi8KIAlpZiAocmV0IDwgMCkKQEAgLTYzNCw3ICs2MzQsNyBAQAogCQkgKiB3aGVuIHRoZSBwYWdlIGlzIHJlcmVhZCBvciBkcm9wcGVkLiAgSWYgYW4KIAkJICogYXBwbGljYXRpb24gYXNzdW1lcyBpdCB3aWxsIGFsd2F5cyBnZXQgZXJyb3Igb24KIAkJICogZnN5bmMsIGJ1dCBkb2VzIG90aGVyIG9wZXJhdGlvbnMgb24gdGhlIGZkIGJlZm9yZQotCQkgKiBhbmQgdGhlIHBhZ2UgaXMgZHJvcHBlZCBpbmJldHdlZW4gdGhlbiB0aGUgZXJyb3IKKwkJICogYW5kIHRoZSBwYWdlIGlzIGRyb3BwZWQgYmV0d2VlbiB0aGVuIHRoZSBlcnJvcgogCQkgKiB3aWxsIG5vdCBiZSBwcm9wZXJseSByZXBvcnRlZC4KIAkJICoKIAkJICogVGhpcyBjYW4gYWxyZWFkeSBoYXBwZW4gZXZlbiB3aXRob3V0IGh3cG9pc29uZWQKQEAgLTcyOCw3ICs3MjgsNyBAQAogICogVGhlIHRhYmxlIG1hdGNoZXMgdGhlbSBpbiBvcmRlciBhbmQgY2FsbHMgdGhlIHJpZ2h0IGhhbmRsZXIuCiAgKgogICogVGhpcyBpcyBxdWl0ZSB0cmlja3kgYmVjYXVzZSB3ZSBjYW4gYWNjZXNzIHBhZ2UgYXQgYW55IHRpbWUKLSAqIGluIGl0cyBsaXZlIGN5Y2xlLCBzbyBhbGwgYWNjZXNzZXMgaGF2ZSB0byBiZSBleHRyZW1seSBjYXJlZnVsLgorICogaW4gaXRzIGxpdmUgY3ljbGUsIHNvIGFsbCBhY2Nlc3NlcyBoYXZlIHRvIGJlIGV4dHJlbWVseSBjYXJlZnVsLgogICoKICAqIFRoaXMgaXMgbm90IGNvbXBsZXRlLiBNb3JlIHN0YXRlcyBjb3VsZCBiZSBhZGRlZC4KICAqIEZvciBhbnkgbWlzc2luZyBzdGF0ZSBkb24ndCBhdHRlbXB0IHJlY292ZXJ5LgpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmMKaW5kZXggMzIxZmM3NC4uYTJhY2FmOCAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5X2hvdHBsdWcuYworKysgYi9tbS9tZW1vcnlfaG90cGx1Zy5jCkBAIC03MjQsNyArNzI0LDcgQEAKIAkJCSAgICAgICBwZm4pOwogCQkJZHVtcF9wYWdlKHBhZ2UpOwogI2VuZGlmCi0JCQkvKiBCZWNhc3VlIHdlIGRvbid0IGhhdmUgYmlnIHpvbmUtPmxvY2suIHdlIHNob3VsZAorCQkJLyogQmVjYXVzZSB3ZSBkb24ndCBoYXZlIGJpZyB6b25lLT5sb2NrLiB3ZSBzaG91bGQKIAkJCSAgIGNoZWNrIHRoaXMgYWdhaW4gaGVyZS4gKi8KIAkJCWlmIChwYWdlX2NvdW50KHBhZ2UpKSB7CiAJCQkJbm90X21hbmFnZWQrKzsKZGlmZiAtLWdpdCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuYwppbmRleCBiMDQwNmQ3Li4zNDEzMmY4IDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKKysrIGIvbW0vbWlncmF0ZS5jCkBAIC0zNzUsNyArMzc1LDcgQEAKIAkJICogcmVkbyB0aGUgYWNjb3VudGluZyB0aGF0IGNsZWFyX3BhZ2VfZGlydHlfZm9yX2lvIHVuZGlkLAogCQkgKiBidXQgd2UgY2FuJ3QgdXNlIHNldF9wYWdlX2RpcnR5IGJlY2F1c2UgdGhhdCBmdW5jdGlvbgogCQkgKiBpcyBhY3R1YWxseSBhIHNpZ25hbCB0aGF0IGFsbCBvZiB0aGUgcGFnZSBoYXMgYmVjb21lIGRpcnR5LgotCQkgKiBXaGVyYXMgb25seSBwYXJ0IG9mIG91ciBwYWdlIG1heSBiZSBkaXJ0eS4KKwkJICogV2hlcmVhcyBvbmx5IHBhcnQgb2Ygb3VyIHBhZ2UgbWF5IGJlIGRpcnR5LgogCQkgKi8KIAkJX19zZXRfcGFnZV9kaXJ0eV9ub2J1ZmZlcnMobmV3cGFnZSk7CiAgCX0KZGlmZiAtLWdpdCBhL21tL21yZW1hcC5jIGIvbW0vbXJlbWFwLmMKaW5kZXggMWRlOThkNC4uYTdjMWY5ZiAxMDA2NDQKLS0tIGEvbW0vbXJlbWFwLmMKKysrIGIvbW0vbXJlbWFwLmMKQEAgLTI3Nyw5ICsyNzcsMTYgQEAKIAlpZiAob2xkX2xlbiA+IHZtYS0+dm1fZW5kIC0gYWRkcikKIAkJZ290byBFZmF1bHQ7CiAKLQlpZiAodm1hLT52bV9mbGFncyAmIChWTV9ET05URVhQQU5EIHwgVk1fUEZOTUFQKSkgewotCQlpZiAobmV3X2xlbiA+IG9sZF9sZW4pCisJLyogTmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IGEgZ3Jvd2luZyBtYXBwaW5nICovCisJaWYgKG5ld19sZW4gPiBvbGRfbGVuKSB7CisJCXVuc2lnbmVkIGxvbmcgcGdvZmY7CisKKwkJaWYgKHZtYS0+dm1fZmxhZ3MgJiAoVk1fRE9OVEVYUEFORCB8IFZNX1BGTk1BUCkpCiAJCQlnb3RvIEVmYXVsdDsKKwkJcGdvZmYgPSAoYWRkciAtIHZtYS0+dm1fc3RhcnQpID4+IFBBR0VfU0hJRlQ7CisJCXBnb2ZmICs9IHZtYS0+dm1fcGdvZmY7CisJCWlmIChwZ29mZiArIChuZXdfbGVuID4+IFBBR0VfU0hJRlQpIDwgcGdvZmYpCisJCQlnb3RvIEVpbnZhbDsKIAl9CiAKIAlpZiAodm1hLT52bV9mbGFncyAmIFZNX0xPQ0tFRCkgewpkaWZmIC0tZ2l0IGEvbW0vbm9ib290bWVtLmMgYi9tbS9ub2Jvb3RtZW0uYwppbmRleCBlOTlmNmNkMS4uOTEwOTA0OSAxMDA2NDQKLS0tIGEvbW0vbm9ib290bWVtLmMKKysrIGIvbW0vbm9ib290bWVtLmMKQEAgLTE1MCw3ICsxNTAsNyBAQAogewogCS8qCiAJICogV2UgbmVlZCB0byB1c2UgTUFYX05VTU5PREVTIGluc3RlYWQgb2YgTk9ERV9EQVRBKDApLT5ub2RlX2lkCi0JICogIGJlY2F1c2UgaW4gc29tZSBjYXNlIGxpa2UgTm9kZTAgZG9lc250IGhhdmUgUkFNIGluc3RhbGxlZAorCSAqICBiZWNhdXNlIGluIHNvbWUgY2FzZSBsaWtlIE5vZGUwIGRvZXNuJ3QgaGF2ZSBSQU0gaW5zdGFsbGVkCiAJICogIGxvdyByYW0gd2lsbCBiZSBvbiBOb2RlMQogCSAqIFVzZSBNQVhfTlVNTk9ERVMgd2lsbCBtYWtlIHN1cmUgYWxsIHJhbmdlcyBpbiBlYXJseV9ub2RlX21hcFtdCiAJICogIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIG9ubHkgTm9kZTAgcmVsYXRlZApkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IGQ2ZTdiYTcuLjI3NDdmNWU1YSAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxvYy5jCisrKyBiL21tL3BhZ2VfYWxsb2MuYwpAQCAtOTQyLDcgKzk0Miw3IEBACiAJCQkgKiBJZiBicmVha2luZyBhIGxhcmdlIGJsb2NrIG9mIHBhZ2VzLCBtb3ZlIGFsbCBmcmVlCiAJCQkgKiBwYWdlcyB0byB0aGUgcHJlZmVycmVkIGFsbG9jYXRpb24gbGlzdC4gSWYgZmFsbGluZwogCQkJICogYmFjayBmb3IgYSByZWNsYWltYWJsZSBrZXJuZWwgYWxsb2NhdGlvbiwgYmUgbW9yZQotCQkJICogYWdyZXNzaXZlIGFib3V0IHRha2luZyBvd25lcnNoaXAgb2YgZnJlZSBwYWdlcworCQkJICogYWdncmVzc2l2ZSBhYm91dCB0YWtpbmcgb3duZXJzaGlwIG9mIGZyZWUgcGFnZXMKIAkJCSAqLwogCQkJaWYgKHVubGlrZWx5KGN1cnJlbnRfb3JkZXIgPj0gKHBhZ2VibG9ja19vcmRlciA+PiAxKSkgfHwKIAkJCQkJc3RhcnRfbWlncmF0ZXR5cGUgPT0gTUlHUkFURV9SRUNMQUlNQUJMRSB8fApAQCAtMzkyNiw3ICszOTI2LDcgQEAKIAogLyoKICAqIFRoZSB6b25lIHJhbmdlcyBwcm92aWRlZCBieSB0aGUgYXJjaGl0ZWN0dXJlIGRvIG5vdCBpbmNsdWRlIFpPTkVfTU9WQUJMRQotICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGFudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsCisgKiBiZWNhdXNlIGl0IGlzIHNpemVkIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZS4gVW5saWtlIHRoZSBvdGhlciB6b25lcywKICAqIHRoZSBzdGFydGluZyBwb2ludCBmb3IgWk9ORV9NT1ZBQkxFIGlzIG5vdCBmaXhlZC4gSXQgbWF5IGJlIGRpZmZlcmVudAogICogaW4gZWFjaCBub2RlIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiBlYWNoIG5vZGUgYW5kIGhvdyBldmVubHkga2VybmVsY29yZQogICogaXMgZGlzdHJpYnV0ZWQuIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGFkanVzdHMgdGhlIHpvbmUgcmFuZ2VzCmRpZmYgLS1naXQgYS9tbS9wYWdlX2Nncm91cC5jIGIvbW0vcGFnZV9jZ3JvdXAuYwppbmRleCBhMTJjYzNmLi45OTA1NTAxIDEwMDY0NAotLS0gYS9tbS9wYWdlX2Nncm91cC5jCisrKyBiL21tL3BhZ2VfY2dyb3VwLmMKQEAgLTM3Nyw3ICszNzcsNyBAQAogICogQG5ldzogbmV3IGlkCiAgKgogICogUmV0dXJucyBvbGQgaWQgYXQgc3VjY2VzcywgMCBhdCBmYWlsdXJlLgotICogKFRoZXJlIGlzIG5vIG1lbV9jZ3JvdXAgdXNlaW5nIDAgYXMgaXRzIGlkKQorICogKFRoZXJlIGlzIG5vIG1lbV9jZ3JvdXAgdXNpbmcgMCBhcyBpdHMgaWQpCiAgKi8KIHVuc2lnbmVkIHNob3J0IHN3YXBfY2dyb3VwX2NtcHhjaGcoc3dwX2VudHJ5X3QgZW50LAogCQkJCQl1bnNpZ25lZCBzaG9ydCBvbGQsIHVuc2lnbmVkIHNob3J0IG5ldykKZGlmZiAtLWdpdCBhL21tL3BlcmNwdS5jIGIvbW0vcGVyY3B1LmMKaW5kZXggNTVkNGQxMS4uYTE2MGRiMyAxMDA2NDQKLS0tIGEvbW0vcGVyY3B1LmMKKysrIGIvbW0vcGVyY3B1LmMKQEAgLTM0Miw3ICszNDIsNyBAQAogICogQGNodW5rOiBjaHVuayBvZiBpbnRlcmVzdAogICoKICAqIERldGVybWluZSB3aGV0aGVyIGFyZWEgbWFwIG9mIEBjaHVuayBuZWVkcyB0byBiZSBleHRlbmRlZCB0bwotICogYWNjb21vZGF0ZSBhIG5ldyBhbGxvY2F0aW9uLgorICogYWNjb21tb2RhdGUgYSBuZXcgYWxsb2NhdGlvbi4KICAqCiAgKiBDT05URVhUOgogICogcGNwdV9sb2NrLgpAQCAtNDMxLDcgKzQzMSw3IEBACiAgKiBkZXBlbmRpbmcgb24gQGhlYWQsIGlzIHJlZHVjZWQgYnkgQHRhaWwgYnl0ZXMgYW5kIEB0YWlsIGJ5dGUgYmxvY2sKICAqIGlzIGluc2VydGVkIGFmdGVyIHRoZSB0YXJnZXQgYmxvY2suCiAgKgotICogQGNodW5rLT5tYXAgbXVzdCBoYXZlIGVub3VnaCBmcmVlIHNsb3RzIHRvIGFjY29tb2RhdGUgdGhlIHNwbGl0LgorICogQGNodW5rLT5tYXAgbXVzdCBoYXZlIGVub3VnaCBmcmVlIHNsb3RzIHRvIGFjY29tbW9kYXRlIHRoZSBzcGxpdC4KICAqCiAgKiBDT05URVhUOgogICogcGNwdV9sb2NrLgpAQCAtMTQzNSw3ICsxNDM1LDcgQEAKIAkvKgogCSAqIERldGVybWluZSBtaW5fdW5pdF9zaXplLCBhbGxvY19zaXplIGFuZCBtYXhfdXBhIHN1Y2ggdGhhdAogCSAqIGFsbG9jX3NpemUgaXMgbXVsdGlwbGUgb2YgYXRvbV9zaXplIGFuZCBpcyB0aGUgc21hbGxlc3QKLQkgKiB3aGljaCBjYW4gYWNjb21vZGF0ZSA0ayBhbGlnbmVkIHNlZ21lbnRzIHdoaWNoIGFyZSBlcXVhbCB0bworCSAqIHdoaWNoIGNhbiBhY2NvbW1vZGF0ZSA0ayBhbGlnbmVkIHNlZ21lbnRzIHdoaWNoIGFyZSBlcXVhbCB0bwogCSAqIG9yIGxhcmdlciB0aGFuIG1pbl91bml0X3NpemUuCiAJICovCiAJbWluX3VuaXRfc2l6ZSA9IG1heF90KHNpemVfdCwgc2l6ZV9zdW0sIFBDUFVfTUlOX1VOSVRfU0laRSk7CkBAIC0xNTUwLDcgKzE1NTAsNyBAQAogICogQGF0b21fc2l6ZTogYWxsb2NhdGlvbiBhdG9tIHNpemUKICAqIEBjcHVfZGlzdGFuY2VfZm46IGNhbGxiYWNrIHRvIGRldGVybWluZSBkaXN0YW5jZSBiZXR3ZWVuIGNwdXMsIG9wdGlvbmFsCiAgKiBAYWxsb2NfZm46IGZ1bmN0aW9uIHRvIGFsbG9jYXRlIHBlcmNwdSBwYWdlCi0gKiBAZnJlZV9mbjogZnVudGlvbiB0byBmcmVlIHBlcmNwdSBwYWdlCisgKiBAZnJlZV9mbjogZnVuY3Rpb24gdG8gZnJlZSBwZXJjcHUgcGFnZQogICoKICAqIFRoaXMgaXMgYSBoZWxwZXIgdG8gZWFzZSBzZXR0aW5nIHVwIGVtYmVkZGVkIGZpcnN0IHBlcmNwdSBjaHVuayBhbmQKICAqIGNhbiBiZSBjYWxsZWQgd2hlcmUgcGNwdV9zZXR1cF9maXJzdF9jaHVuaygpIGlzIGV4cGVjdGVkLgpAQCAtMTY3OCw3ICsxNjc4LDcgQEAKICAqIHBjcHVfcGFnZV9maXJzdF9jaHVuayAtIG1hcCB0aGUgZmlyc3QgY2h1bmsgdXNpbmcgUEFHRV9TSVpFIHBhZ2VzCiAgKiBAcmVzZXJ2ZWRfc2l6ZTogdGhlIHNpemUgb2YgcmVzZXJ2ZWQgcGVyY3B1IGFyZWEgaW4gYnl0ZXMKICAqIEBhbGxvY19mbjogZnVuY3Rpb24gdG8gYWxsb2NhdGUgcGVyY3B1IHBhZ2UsIGFsd2F5cyBjYWxsZWQgd2l0aCBQQUdFX1NJWkUKLSAqIEBmcmVlX2ZuOiBmdW50aW9uIHRvIGZyZWUgcGVyY3B1IHBhZ2UsIGFsd2F5cyBjYWxsZWQgd2l0aCBQQUdFX1NJWkUKKyAqIEBmcmVlX2ZuOiBmdW5jdGlvbiB0byBmcmVlIHBlcmNwdSBwYWdlLCBhbHdheXMgY2FsbGVkIHdpdGggUEFHRV9TSVpFCiAgKiBAcG9wdWxhdGVfcHRlX2ZuOiBmdW5jdGlvbiB0byBwb3B1bGF0ZSBwdGUKICAqCiAgKiBUaGlzIGlzIGEgaGVscGVyIHRvIGVhc2Ugc2V0dGluZyB1cCBwYWdlLXJlbWFwcGVkIGZpcnN0IHBlcmNwdQpkaWZmIC0tZ2l0IGEvbW0vc2xhYi5jIGIvbW0vc2xhYi5jCmluZGV4IDU2ODgwM2YuLjQ2YTljMTYgMTAwNjQ0Ci0tLSBhL21tL3NsYWIuYworKysgYi9tbS9zbGFiLmMKQEAgLTg3OCw3ICs4NzgsNyBAQAogCW5jID0ga21hbGxvY19ub2RlKG1lbXNpemUsIGdmcCwgbm9kZSk7CiAJLyoKIAkgKiBUaGUgYXJyYXlfY2FjaGUgc3RydWN0dXJlcyBjb250YWluIHBvaW50ZXJzIHRvIGZyZWUgb2JqZWN0LgotCSAqIEhvd2V2ZXIsIHdoZW4gc3VjaCBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgb3IgdHJhbnNmZXJlZCB0byBhbm90aGVyCisJICogSG93ZXZlciwgd2hlbiBzdWNoIG9iamVjdHMgYXJlIGFsbG9jYXRlZCBvciB0cmFuc2ZlcnJlZCB0byBhbm90aGVyCiAJICogY2FjaGUgdGhlIHBvaW50ZXJzIGFyZSBub3QgY2xlYXJlZCBhbmQgdGhleSBjb3VsZCBiZSBjb3VudGVkIGFzCiAJICogdmFsaWQgcmVmZXJlbmNlcyBkdXJpbmcgYSBrbWVtbGVhayBzY2FuLiBUaGVyZWZvcmUsIGttZW1sZWFrIG11c3QKIAkgKiBub3Qgc2NhbiBzdWNoIG9iamVjdHMuCkBAIC0yNjA2LDcgKzI2MDYsNyBAQAogICoKICAqIFRoZSBjYWNoZSBtdXN0IGJlIGVtcHR5IGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKgotICogVGhlIGNhbGxlciBtdXN0IGd1YXJhbnRlZSB0aGF0IG5vb25lIHdpbGwgYWxsb2NhdGUgbWVtb3J5IGZyb20gdGhlIGNhY2hlCisgKiBUaGUgY2FsbGVyIG11c3QgZ3VhcmFudGVlIHRoYXQgbm8gb25lIHdpbGwgYWxsb2NhdGUgbWVtb3J5IGZyb20gdGhlIGNhY2hlCiAgKiBkdXJpbmcgdGhlIGttZW1fY2FjaGVfZGVzdHJveSgpLgogICovCiB2b2lkIGttZW1fY2FjaGVfZGVzdHJveShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwKQpkaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jCmluZGV4IGY4ODE4NzQuLjk0ZDJhMzMgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYworKysgYi9tbS9zbHViLmMKQEAgLTY0LDcgKzY0LDcgQEAKICAqICAgd2UgbXVzdCBzdGF5IGF3YXkgZnJvbSBpdCBmb3IgYSB3aGlsZSBzaW5jZSB3ZSBtYXkgY2F1c2UgYSBib3VuY2luZwogICogICBjYWNoZWxpbmUgaWYgd2UgdHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2suIFNvIGdvIG9udG8gdGhlIG5leHQgc2xhYi4KICAqICAgSWYgYWxsIHBhZ2VzIGFyZSBidXN5IHRoZW4gd2UgbWF5IGFsbG9jYXRlIGEgbmV3IHNsYWIgaW5zdGVhZCBvZiByZXVzaW5nCi0gKiAgIGEgcGFydGlhbCBzbGFiLiBBIG5ldyBzbGFiIGhhcyBub29uZSBvcGVyYXRpbmcgb24gaXQgYW5kIHRodXMgdGhlcmUgaXMKKyAqICAgYSBwYXJ0aWFsIHNsYWIuIEEgbmV3IHNsYWIgaGFzIG5vIG9uZSBvcGVyYXRpbmcgb24gaXQgYW5kIHRodXMgdGhlcmUgaXMKICAqICAgbm8gZGFuZ2VyIG9mIGNhY2hlbGluZSBjb250ZW50aW9uLgogICoKICAqICAgSW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgZHVyaW5nIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBpbiBvcmRlciB0bwpAQCAtMTkyOSw3ICsxOTI5LDcgQEAKIAllbHNlIHsKICNpZmRlZiBDT05GSUdfQ01QWENIR19MT0NBTAogCQkvKgotCQkgKiBUaGUgY21weGNoZyB3aWxsIG9ubHkgbWF0Y2ggaWYgdGhlcmUgd2FzIG5vIGFkZGl0b25hbAorCQkgKiBUaGUgY21weGNoZyB3aWxsIG9ubHkgbWF0Y2ggaWYgdGhlcmUgd2FzIG5vIGFkZGl0aW9uYWwKIAkJICogb3BlcmF0aW9uIGFuZCBpZiB3ZSBhcmUgb24gdGhlIHJpZ2h0IHByb2Nlc3Nvci4KIAkJICoKIAkJICogVGhlIGNtcHhjaGcgZG9lcyB0aGUgZm9sbG93aW5nIGF0b21pY2FsbHkgKHdpdGhvdXQgbG9jayBzZW1hbnRpY3MhKQpAQCAtMzU0Nyw3ICszNTQ3LDcgQEAKIAogCXJldCA9IHNsYWJfYWxsb2MocywgZ2ZwZmxhZ3MsIE5VTUFfTk9fTk9ERSwgY2FsbGVyKTsKIAotCS8qIEhvbm9yIHRoZSBjYWxsIHNpdGUgcG9pbnRlciB3ZSByZWNpZXZlZC4gKi8KKwkvKiBIb25vciB0aGUgY2FsbCBzaXRlIHBvaW50ZXIgd2UgcmVjZWl2ZWQuICovCiAJdHJhY2Vfa21hbGxvYyhjYWxsZXIsIHJldCwgc2l6ZSwgcy0+c2l6ZSwgZ2ZwZmxhZ3MpOwogCiAJcmV0dXJuIHJldDsKQEAgLTM1NzcsNyArMzU3Nyw3IEBACiAKIAlyZXQgPSBzbGFiX2FsbG9jKHMsIGdmcGZsYWdzLCBub2RlLCBjYWxsZXIpOwogCi0JLyogSG9ub3IgdGhlIGNhbGwgc2l0ZSBwb2ludGVyIHdlIHJlY2lldmVkLiAqLworCS8qIEhvbm9yIHRoZSBjYWxsIHNpdGUgcG9pbnRlciB3ZSByZWNlaXZlZC4gKi8KIAl0cmFjZV9rbWFsbG9jX25vZGUoY2FsbGVyLCByZXQsIHNpemUsIHMtPnNpemUsIGdmcGZsYWdzLCBub2RlKTsKIAogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuYyBiL21tL3NwYXJzZS5jCmluZGV4IDkzMjUwMjAuLmFhNjRiMTIgMTAwNjQ0Ci0tLSBhL21tL3NwYXJzZS5jCisrKyBiL21tL3NwYXJzZS5jCkBAIC01MDAsNyArNTAwLDcgQEAKIAkgKiBzbyBhbGxvYyAyTSAod2l0aCAyTSBhbGlnbikgYW5kIDI0IGJ5dGVzIGluIHR1cm4gd2lsbAogCSAqIG1ha2UgbmV4dCAyTSBzbGlwIHRvIG9uZSBtb3JlIDJNIGxhdGVyLgogCSAqIHRoZW4gaW4gYmlnIHN5c3RlbSwgdGhlIG1lbW9yeSB3aWxsIGhhdmUgYSBsb3Qgb2YgaG9sZXMuLi4KLQkgKiBoZXJlIHRyeSB0byBhbGxvY2F0ZSAyTSBwYWdlcyBjb250aW5vdXNseS4KKwkgKiBoZXJlIHRyeSB0byBhbGxvY2F0ZSAyTSBwYWdlcyBjb250aW51b3VzbHkuCiAJICoKIAkgKiBwb3dlcnBjIG5lZWQgdG8gY2FsbCBzcGFyc2VfaW5pdF9vbmVfc2VjdGlvbiByaWdodCBhZnRlciBlYWNoCiAJICogc3BhcnNlX2Vhcmx5X21lbV9tYXBfYWxsb2MsIHNvIGFsbG9jYXRlIHVzZW1hcF9tYXAgYXQgZmlyc3QuCmRpZmYgLS1naXQgYS9tbS91dGlsLmMgYi9tbS91dGlsLmMKaW5kZXggZjEyNjk3NS4uZTdiMTAzYSAxMDA2NDQKLS0tIGEvbW0vdXRpbC5jCisrKyBiL21tL3V0aWwuYwpAQCAtMjI3LDcgKzIyNyw3IEBACiAvKgogICogTGlrZSBnZXRfdXNlcl9wYWdlc19mYXN0KCkgZXhjZXB0IGl0cyBJUlEtc2FmZSBpbiB0aGF0IGl0IHdvbid0IGZhbGwKICAqIGJhY2sgdG8gdGhlIHJlZ3VsYXIgR1VQLgotICogSWYgdGhlIGFyY2hpdGVjdHVyZSBub3Qgc3VwcG9ydCB0aGlzIGZ1Y250aW9uLCBzaW1wbHkgcmV0dXJuIHdpdGggbm8KKyAqIElmIHRoZSBhcmNoaXRlY3R1cmUgbm90IHN1cHBvcnQgdGhpcyBmdW5jdGlvbiwgc2ltcGx5IHJldHVybiB3aXRoIG5vCiAgKiBwYWdlIHBpbm5lZAogICovCiBpbnQgX19hdHRyaWJ1dGVfXygod2VhaykpIF9fZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LApkaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYwppbmRleCBmNzNiODY1Li5jN2Y1YTZkIDEwMDY0NAotLS0gYS9tbS92bXNjYW4uYworKysgYi9tbS92bXNjYW4uYwpAQCAtMTA2NSw3ICsxMDY1LDcgQEAKIAkJICogc3Vycm91bmRpbmcgdGhlIHRhZyBwYWdlLiAgT25seSB0YWtlIHRob3NlIHBhZ2VzIG9mCiAJCSAqIHRoZSBzYW1lIGFjdGl2ZSBzdGF0ZSBhcyB0aGF0IHRhZyBwYWdlLiAgV2UgbWF5IHNhZmVseQogCQkgKiByb3VuZCB0aGUgdGFyZ2V0IHBhZ2UgcGZuIGRvd24gdG8gdGhlIHJlcXVlc3RlZCBvcmRlcgotCQkgKiBhcyB0aGUgbWVtX21hcCBpcyBndWFyZW50ZWVkIHZhbGlkIG91dCB0byBNQVhfT1JERVIsCisJCSAqIGFzIHRoZSBtZW1fbWFwIGlzIGd1YXJhbnRlZWQgdmFsaWQgb3V0IHRvIE1BWF9PUkRFUiwKIAkJICogd2hlcmUgdGhhdCBwYWdlIGlzIGluIGEgZGlmZmVyZW50IHpvbmUgd2Ugd2lsbCBkZXRlY3QKIAkJICogaXQgZnJvbSBpdHMgem9uZSBpZCBhbmQgYWJvcnQgdGhpcyBibG9jayBzY2FuLgogCQkgKi8KQEAgLTIyMjQsNyArMjIyNCw3IEBACiAgKiAgIG8gYSAxNk0gRE1BIHpvbmUgdGhhdCBpcyBiYWxhbmNlZCB3aWxsIG5vdCBiYWxhbmNlIGEgem9uZSBvbiBhbnkKICAqICAgICByZWFzb25hYmxlIHNpemVkIG1hY2hpbmUKICAqICAgbyBPbiBhbGwgb3RoZXIgbWFjaGluZXMsIHRoZSB0b3Agem9uZSBtdXN0IGJlIGF0IGxlYXN0IGEgcmVhc29uYWJsZQotICogICAgIHByZWNlbnRhZ2Ugb2YgdGhlIG1pZGRsZSB6b25lcy4gRm9yIGV4YW1wbGUsIG9uIDMyLWJpdCB4ODYsIGhpZ2htZW0KKyAqICAgICBwZXJjZW50YWdlIG9mIHRoZSBtaWRkbGUgem9uZXMuIEZvciBleGFtcGxlLCBvbiAzMi1iaXQgeDg2LCBoaWdobWVtCiAgKiAgICAgd291bGQgbmVlZCB0byBiZSBhdCBsZWFzdCAyNTZNIGZvciBpdCB0byBiZSBiYWxhbmNlIGEgd2hvbGUgbm9kZS4KICAqICAgICBTaW1pbGFybHksIG9uIHg4Ni02NCB0aGUgTm9ybWFsIHpvbmUgd291bGQgbmVlZCB0byBiZSBhdCBsZWFzdCAxRwogICogICAgIHRvIGJhbGFuY2UgYSBub2RlIG9uIGl0cyBvd24uIFRoZXNlIHNlZW1lZCBsaWtlIHJlYXNvbmFibGUgcmF0aW9zLgpkaWZmIC0tZ2l0IGEvbmV0LzgwMjFxL3ZsYW5wcm9jLmMgYi9uZXQvODAyMXEvdmxhbnByb2MuYwppbmRleCBkMTMxNGNmLi5kOTQwYzQ5IDEwMDY0NAotLS0gYS9uZXQvODAyMXEvdmxhbnByb2MuYworKysgYi9uZXQvODAyMXEvdmxhbnByb2MuYwpAQCAtNTQsNyArNTQsNyBAQAogCiAvKgogICoJU3RydWN0dXJlcyBmb3IgaW50ZXJmYWNpbmcgd2l0aCB0aGUgL3Byb2MgZmlsZXN5c3RlbS4KLSAqCVZMQU4gY3JlYXRlcyBpdHMgb3duIGRpcmVjdG9yeSAvcHJvYy9uZXQvdmxhbiB3aXRoIHRoZSBmb2xvd2luZworICoJVkxBTiBjcmVhdGVzIGl0cyBvd24gZGlyZWN0b3J5IC9wcm9jL25ldC92bGFuIHdpdGggdGhlIGZvbGxvd2luZwogICoJZW50cmllczoKICAqCWNvbmZpZwkJZGV2aWNlIHN0YXR1cy9jb25maWd1cmF0aW9uCiAgKgk8ZGV2aWNlPgllbnRyeSBmb3IgZWFjaCAgZGV2aWNlCmRpZmYgLS1naXQgYS9uZXQvOXAvY2xpZW50LmMgYi9uZXQvOXAvY2xpZW50LmMKaW5kZXggMmNjYmYwNC4uNDhiOGUwOCAxMDA2NDQKLS0tIGEvbmV0LzlwL2NsaWVudC5jCisrKyBiL25ldC85cC9jbGllbnQuYwpAQCAtMTc4LDcgKzE3OCw3IEBACiAgKiBAdGFnOiBudW1lcmljIGlkIGZvciB0cmFuc2FjdGlvbgogICoKICAqIHRoaXMgaXMgYSBzaW1wbGUgYXJyYXkgbG9va3VwLCBidXQgd2lsbCBncm93IHRoZQotICogcmVxdWVzdF9zbG90cyBhcyBuZWNlc3NhcnkgdG8gYWNjb21vZGF0ZSB0cmFuc2FjdGlvbgorICogcmVxdWVzdF9zbG90cyBhcyBuZWNlc3NhcnkgdG8gYWNjb21tb2RhdGUgdHJhbnNhY3Rpb24KICAqIGlkcyB3aGljaCBkaWQgbm90IHByZXZpb3VzbHkgaGF2ZSBhIHNsb3QuCiAgKgogICogdGhpcyBjb2RlIHJlbGllcyBvbiB0aGUgY2xpZW50IHNwaW5sb2NrIHRvIG1hbmFnZSBsb2NrcywgaXRzCmRpZmYgLS1naXQgYS9uZXQvOXAvdHJhbnNfY29tbW9uLmMgYi9uZXQvOXAvdHJhbnNfY29tbW9uLmMKaW5kZXggOTE3MmFiNy4uZDQ3ODgwZSAxMDA2NDQKLS0tIGEvbmV0LzlwL3RyYW5zX2NvbW1vbi5jCisrKyBiL25ldC85cC90cmFuc19jb21tb24uYwpAQCAtMzYsNyArMzYsNyBAQAogRVhQT1JUX1NZTUJPTChwOV9yZWxlYXNlX3JlcV9wYWdlcyk7CiAKIC8qKgotICogcDlfbnJfcGFnZXMgLSBSZXR1cm4gbnVtYmVyIG9mIHBhZ2VzIG5lZWRlZCB0byBhY2NvbW9kYXRlIHRoZSBwYXlsb2FkLgorICogcDlfbnJfcGFnZXMgLSBSZXR1cm4gbnVtYmVyIG9mIHBhZ2VzIG5lZWRlZCB0byBhY2NvbW1vZGF0ZSB0aGUgcGF5bG9hZC4KICAqLwogaW50CiBwOV9ucl9wYWdlcyhzdHJ1Y3QgcDlfcmVxX3QgKnJlcSkKQEAgLTU1LDcgKzU1LDcgQEAKICAqIEByZXE6IFJlcXVlc3QgdG8gYmUgc2VudCB0byBzZXJ2ZXIuCiAgKiBAcGRhdGFfb2ZmOiBkYXRhIG9mZnNldCBpbnRvIHRoZSBmaXJzdCBwYWdlIGFmdGVyIHRyYW5zbGF0aW9uIChndXApLgogICogQHBkYXRhX2xlbjogVG90YWwgbGVuZ3RoIG9mIHRoZSBJTy4gZ3VwIG1heSBub3QgcmV0dXJuIHJlcXVlc3RlZCAjIG9mIHBhZ2VzLgotICogQG5yX3BhZ2VzOiBudW1iZXIgb2YgcGFnZXMgdG8gYWNjb21vZGF0ZSB0aGUgcGF5bG9hZAorICogQG5yX3BhZ2VzOiBudW1iZXIgb2YgcGFnZXMgdG8gYWNjb21tb2RhdGUgdGhlIHBheWxvYWQKICAqIEBydzogSW5kaWNhdGVzIGlmIHRoZSBwYWdlcyBhcmUgZm9yIHJlYWQgb3Igd3JpdGUuCiAgKi8KIGludApkaWZmIC0tZ2l0IGEvbmV0LzlwL3V0aWwuYyBiL25ldC85cC91dGlsLmMKaW5kZXggYjg0NjE5Yi4uZGE2YWY4MSAxMDA2NDQKLS0tIGEvbmV0LzlwL3V0aWwuYworKysgYi9uZXQvOXAvdXRpbC5jCkBAIC02Nyw3ICs2Nyw3IEBACiAKIC8qKgogICogcDlfaWRwb29sX2Rlc3Ryb3kgLSBjcmVhdGUgYSBuZXcgcGVyLWNvbm5lY3Rpb24gaWQgcG9vbAotICogQHA6IGlkcG9vbCB0byBkZXN0b3J5CisgKiBAcDogaWRwb29sIHRvIGRlc3Ryb3kKICAqLwogCiB2b2lkIHA5X2lkcG9vbF9kZXN0cm95KHN0cnVjdCBwOV9pZHBvb2wgKnApCmRpZmYgLS1naXQgYS9uZXQvYXRtL2JyMjY4NC5jIGIvbmV0L2F0bS9icjI2ODQuYwppbmRleCBmY2UyZWFlLi4yMjUyYzIwIDEwMDY0NAotLS0gYS9uZXQvYXRtL2JyMjY4NC5jCisrKyBiL25ldC9hdG0vYnIyNjg0LmMKQEAgLTUwOSw3ICs1MDksNyBAQAogCXdyaXRlX2xvY2tfaXJxKCZkZXZzX2xvY2spOwogCW5ldF9kZXYgPSBicjI2ODRfZmluZF9kZXYoJmJlLmlmc3BlYyk7CiAJaWYgKG5ldF9kZXYgPT0gTlVMTCkgewotCQlwcl9lcnIoInRyaWVkIHRvIGF0dGFjaCB0byBub24tZXhpc3RhbnQgZGV2aWNlXG4iKTsKKwkJcHJfZXJyKCJ0cmllZCB0byBhdHRhY2ggdG8gbm9uLWV4aXN0ZW50IGRldmljZVxuIik7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBlcnJvcjsKIAl9CmRpZmYgLS1naXQgYS9uZXQvYXRtL2xlYy5oIGIvbmV0L2F0bS9sZWMuaAppbmRleCA5ZDE0ZDE5Li5kZmMwNzE5IDEwMDY0NAotLS0gYS9uZXQvYXRtL2xlYy5oCisrKyBiL25ldC9hdG0vbGVjLmgKQEAgLTM1LDcgKzM1LDcgQEAKICAqIE9wZXJhdGlvbnMgdGhhdCBMQU5FMiBjYXBhYmxlIGRldmljZSBjYW4gZG8uIFR3byBmaXJzdCBmdW5jdGlvbnMKICAqIGFyZSB1c2VkIHRvIG1ha2UgdGhlIGRldmljZSBkbyB0aGluZ3MuIFNlZSBzcGVjIDMuMS4zIGFuZCAzLjEuNC4KICAqCi0gKiBUaGUgdGhpcmQgZnVuY3Rpb24gaXMgaW50ZW50ZWQgZm9yIHRoZSBNUE9BIGNvbXBvbmVudCBzaXR0aW5nIG9uCisgKiBUaGUgdGhpcmQgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIHRoZSBNUE9BIGNvbXBvbmVudCBzaXR0aW5nIG9uCiAgKiB0b3Agb2YgdGhlIExBTkUgZGV2aWNlLiBUaGUgTVBPQSBjb21wb25lbnQgYXNzaWducyBpdCdzIG93biBmdW5jdGlvbgogICogdG8gKCphc3NvY2lhdGVfaW5kaWNhdG9yKSgpIGFuZCB0aGUgTEFORSBkZXZpY2Ugd2lsbCB1c2UgdGhhdAogICogZnVuY3Rpb24gdG8gdGVsbCBhYm91dCBUTFZzIGl0IHNlZXMgZmxvYXRpbmcgdGhyb3VnaC4KZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3NvZnQtaW50ZXJmYWNlLmMgYi9uZXQvYmF0bWFuLWFkdi9zb2Z0LWludGVyZmFjZS5jCmluZGV4IDllZDI2MTQuLjgyNGUxZjYgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3NvZnQtaW50ZXJmYWNlLmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvc29mdC1pbnRlcmZhY2UuYwpAQCAtNDc0LDcgKzQ3NCw3IEBACiAJCWdvdG8gZHJvcHBlZDsKIAlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBzb2Z0X2lmYWNlKTsKIAotCS8qIHNob3VsZCBub3QgYmUgbmVjY2VzYXJ5IGFueW1vcmUgYXMgd2UgdXNlIHNrYl9wdWxsX3Jjc3VtKCkKKwkvKiBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBhbnltb3JlIGFzIHdlIHVzZSBza2JfcHVsbF9yY3N1bSgpCiAJICogVE9ETzogcGxlYXNlIHZlcmlmeSB0aGlzIGFuZCByZW1vdmUgdGhpcyBUT0RPCiAJICogLS0gRGVjIDIxc3QgMjAwOSwgU2ltb24gV3VuZGVybGljaCAqLwogCmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMKaW5kZXggMjIxNjYyMC4uYzgzZjYxOCAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfY29yZS5jCisrKyBiL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYwpAQCAtMTg4Myw3ICsxODgzLDcgQEAKIAlyZWFkX3VubG9jaygmaGNpX3Rhc2tfbG9jayk7CiB9CiAKLS8qIC0tLS0tIEhDSSBSWCB0YXNrIChpbmNvbWluZyBkYXRhIHByb2NjZXNzaW5nKSAtLS0tLSAqLworLyogLS0tLS0gSENJIFJYIHRhc2sgKGluY29taW5nIGRhdGEgcHJvY2Vzc2luZykgLS0tLS0gKi8KIAogLyogQUNMIGRhdGEgcGFja2V0ICovCiBzdGF0aWMgaW5saW5lIHZvaWQgaGNpX2FjbGRhdGFfcGFja2V0KHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQpkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYwppbmRleCBmNzczMDhlLi4yOTlmZTU2IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYwpAQCAtNjc5LDcgKzY3OSw3IEBACiAKIAkJaWYgKG9wdCA9PSBCVF9GTFVTSEFCTEVfT0ZGKSB7CiAJCQlzdHJ1Y3QgbDJjYXBfY29ubiAqY29ubiA9IGwyY2FwX3BpKHNrKS0+Y29ubjsKLQkJCS8qIHByb2NlZWQgZnV0aGVyIG9ubHkgd2hlbiB3ZSBoYXZlIGwyY2FwX2Nvbm4gYW5kCisJCQkvKiBwcm9jZWVkIGZ1cnRoZXIgb25seSB3aGVuIHdlIGhhdmUgbDJjYXBfY29ubiBhbmQKIAkJCSAgIE5vIEZsdXNoIHN1cHBvcnQgaW4gdGhlIExNICovCiAJCQlpZiAoIWNvbm4gfHwgIWxtcF9ub19mbHVzaF9jYXBhYmxlKGNvbm4tPmhjb24tPmhkZXYpKSB7CiAJCQkJZXJyID0gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfZmRiLmMgYi9uZXQvYnJpZGdlL2JyX2ZkYi5jCmluZGV4IDg4NDg1Y2MuLmNjNGQzYzUgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfZmRiLmMKKysrIGIvbmV0L2JyaWRnZS9icl9mZGIuYwpAQCAtMTY5LDcgKzE2OSw3IEBACiAJc3Bpbl91bmxvY2tfYmgoJmJyLT5oYXNoX2xvY2spOwogfQogCi0vKiBGbHVzaCBhbGwgZW50cmllcyByZWZlcmluZyB0byBhIHNwZWNpZmljIHBvcnQuCisvKiBGbHVzaCBhbGwgZW50cmllcyByZWZlcnJpbmcgdG8gYSBzcGVjaWZpYyBwb3J0LgogICogaWYgZG9fYWxsIGlzIHNldCBhbHNvIGZsdXNoIHN0YXRpYyBlbnRyaWVzCiAgKi8KIHZvaWQgYnJfZmRiX2RlbGV0ZV9ieV9wb3J0KHN0cnVjdCBuZXRfYnJpZGdlICpiciwKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfaW9jdGwuYyBiL25ldC9icmlkZ2UvYnJfaW9jdGwuYwppbmRleCBjYjQzMzEyLi4zZDlmY2EwIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX2lvY3RsLmMKKysrIGIvbmV0L2JyaWRnZS9icl9pb2N0bC5jCkBAIC0xMDYsNyArMTA2LDcgQEAKIC8qCiAgKiBMZWdhY3kgaW9jdGwncyB0aHJvdWdoIFNJT0NERVZQUklWQVRFCiAgKiBUaGlzIGludGVyZmFjZSBpcyBkZXByZWNhdGVkIGJlY2F1c2UgaXQgd2FzIHRvbyBkaWZmaWN1bHQgdG8KLSAqIHRvIGRvIHRoZSB0cmFuc2xhdGlvbiBmb3IgMzIvNjRiaXQgaW9jdGwgY29tcGF0YWJpbGl0eS4KKyAqIHRvIGRvIHRoZSB0cmFuc2xhdGlvbiBmb3IgMzIvNjRiaXQgaW9jdGwgY29tcGF0aWJpbGl0eS4KICAqLwogc3RhdGljIGludCBvbGRfZGV2X2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIGludCBjbWQpCiB7CmRpZmYgLS1naXQgYS9uZXQvY2FpZi9jYWlmX3NvY2tldC5jIGIvbmV0L2NhaWYvY2FpZl9zb2NrZXQuYwppbmRleCA4MTg0YzAzLi4zN2E0MDM0IDEwMDY0NAotLS0gYS9uZXQvY2FpZi9jYWlmX3NvY2tldC5jCisrKyBiL25ldC9jYWlmL2NhaWZfc29ja2V0LmMKQEAgLTg1Miw3ICs4NTIsNyBAQAogCXNvY2stPnN0YXRlID0gU1NfQ09OTkVDVElORzsKIAlzay0+c2tfc3RhdGUgPSBDQUlGX0NPTk5FQ1RJTkc7CiAKLQkvKiBDaGVjayBwcmlvcml0eSB2YWx1ZSBjb21taW5nIGZyb20gc29ja2V0ICovCisJLyogQ2hlY2sgcHJpb3JpdHkgdmFsdWUgY29taW5nIGZyb20gc29ja2V0ICovCiAJLyogaWYgcHJpb3JpdHkgdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGl0IHdpbGwgYmUgYWp1c3RlZCAqLwogCWlmIChjZl9zay0+c2suc2tfcHJpb3JpdHkgPiBDQUlGX1BSSU9fTUFYKQogCQljZl9zay0+Y29ubl9yZXEucHJpb3JpdHkgPSBDQUlGX1BSSU9fTUFYOwpkaWZmIC0tZ2l0IGEvbmV0L2Nhbi9iY20uYyBiL25ldC9jYW4vYmNtLmMKaW5kZXggODcxYTBhZC4uNTdiMWFlZCAxMDA2NDQKLS0tIGEvbmV0L2Nhbi9iY20uYworKysgYi9uZXQvY2FuL2JjbS5jCkBAIC0zODcsNyArMzg3LDcgQEAKIH0KIAogLyoKLSAqIGJjbV90eF90aW1lb3V0X2hhbmRsZXIgLSBwZXJmb3JtZXMgY3ljbGljIENBTiBmcmFtZSB0cmFuc21pc3Npb25zCisgKiBiY21fdHhfdGltZW91dF9oYW5kbGVyIC0gcGVyZm9ybXMgY3ljbGljIENBTiBmcmFtZSB0cmFuc21pc3Npb25zCiAgKi8KIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBiY21fdHhfdGltZW91dF9oYW5kbGVyKHN0cnVjdCBocnRpbWVyICpocnRpbWVyKQogewpkaWZmIC0tZ2l0IGEvbmV0L2NlcGgvb3NkX2NsaWVudC5jIGIvbmV0L2NlcGgvb3NkX2NsaWVudC5jCmluZGV4IDNiOTFkNjUuLjUwYWYwMjcgMTAwNjQ0Ci0tLSBhL25ldC9jZXBoL29zZF9jbGllbnQuYworKysgYi9uZXQvY2VwaC9vc2RfY2xpZW50LmMKQEAgLTkxNyw3ICs5MTcsNyBAQAogLyoKICAqIFBpY2sgYW4gb3NkICh0aGUgZmlyc3QgJ3VwJyBvc2QgaW4gdGhlIHBnKSwgYWxsb2NhdGUgdGhlIG9zZCBzdHJ1Y3QKICAqIChhcyBuZWVkZWQpLCBhbmQgc2V0IHRoZSByZXF1ZXN0IHJfb3NkIGFwcHJvcHJpYXRlbHkuICBJZiB0aGVyZSBpcwotICogbm8gdXAgb3NkLCBzZXQgcl9vc2QgdG8gTlVMTC4gIE1vdmUgdGhlIHJlcXVlc3QgdG8gdGhlIGFwcHJvcGlhdGUgbGlzdAorICogbm8gdXAgb3NkLCBzZXQgcl9vc2QgdG8gTlVMTC4gIE1vdmUgdGhlIHJlcXVlc3QgdG8gdGhlIGFwcHJvcHJpYXRlIGxpc3QKICAqICh1bnNlbnQsIGhvbWVsZXNzKSBvciBsZWF2ZSBvbiBpbi1mbGlnaHQgbHJ1LgogICoKICAqIFJldHVybiAwIGlmIHVuY2hhbmdlZCwgMSBpZiBjaGFuZ2VkLCBvciBuZWdhdGl2ZSBvbiBlcnJvci4KZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmMKaW5kZXggM2RhOWZiMC4uOTU2ZDNiMCAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmMKKysrIGIvbmV0L2NvcmUvZGV2LmMKQEAgLTIwOTEsNyArMjA5MSw3IEBACiAJCXUzMiBmZWF0dXJlczsKIAogCQkvKgotCQkgKiBJZiBkZXZpY2UgZG9lc250IG5lZWQgc2tiLT5kc3QsIHJlbGVhc2UgaXQgcmlnaHQgbm93IHdoaWxlCisJCSAqIElmIGRldmljZSBkb2Vzbid0IG5lZWQgc2tiLT5kc3QsIHJlbGVhc2UgaXQgcmlnaHQgbm93IHdoaWxlCiAJCSAqIGl0cyBob3QgaW4gdGhpcyBjcHUgY2FjaGUKIAkJICovCiAJCWlmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfWE1JVF9EU1RfUkVMRUFTRSkKQEAgLTIxNTEsNyArMjE1MSw3IEBACiAJCW5za2ItPm5leHQgPSBOVUxMOwogCiAJCS8qCi0JCSAqIElmIGRldmljZSBkb2VzbnQgbmVlZCBuc2tiLT5kc3QsIHJlbGVhc2UgaXQgcmlnaHQgbm93IHdoaWxlCisJCSAqIElmIGRldmljZSBkb2Vzbid0IG5lZWQgbnNrYi0+ZHN0LCByZWxlYXNlIGl0IHJpZ2h0IG5vdyB3aGlsZQogCQkgKiBpdHMgaG90IGluIHRoaXMgY3B1IGNhY2hlCiAJCSAqLwogCQlpZiAoZGV2LT5wcml2X2ZsYWdzICYgSUZGX1hNSVRfRFNUX1JFTEVBU0UpCkBAIC0yOTcwLDggKzI5NzAsOCBAQAogICogd2hlbiBDT05GSUdfTkVUX0NMU19BQ1QgaXM/IG90aGVyd2lzZSBzb21lIHVzZWxlc3MgaW5zdHJ1Y3Rpb25zCiAgKiBhIGNvbXBhcmUgYW5kIDIgc3RvcmVzIGV4dHJhIHJpZ2h0IG5vdyBpZiB3ZSBkb250IGhhdmUgaXQgb24KICAqIGJ1dCBoYXZlIENPTkZJR19ORVRfQ0xTX0FDVAotICogTk9URTogVGhpcyBkb2VzbnQgc3RvcCBhbnkgZnVuY3Rpb25hbGl0eTsgaWYgeW91IGRvbnQgaGF2ZQotICogdGhlIGluZ3Jlc3Mgc2NoZWR1bGVyLCB5b3UganVzdCBjYW50IGFkZCBwb2xpY2llcyBvbiBpbmdyZXNzLgorICogTk9URTogVGhpcyBkb2Vzbid0IHN0b3AgYW55IGZ1bmN0aW9uYWxpdHk7IGlmIHlvdSBkb250IGhhdmUKKyAqIHRoZSBpbmdyZXNzIHNjaGVkdWxlciwgeW91IGp1c3QgY2FuJ3QgYWRkIHBvbGljaWVzIG9uIGluZ3Jlc3MuCiAgKgogICovCiBzdGF0aWMgaW50IGluZ19maWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldl9xdWV1ZSAqcnhxKQpAQCAtMzgwMCw3ICszODAwLDcgQEAKIAkJICogd2l0aCBuZXRwb2xsJ3MgcG9sbF9uYXBpKCkuICBPbmx5IHRoZSBlbnRpdHkgd2hpY2gKIAkJICogb2J0YWlucyB0aGUgbG9jayBhbmQgc2VlcyBOQVBJX1NUQVRFX1NDSEVEIHNldCB3aWxsCiAJCSAqIGFjdHVhbGx5IG1ha2UgdGhlIC0+cG9sbCgpIGNhbGwuICBUaGVyZWZvcmUgd2UgYXZvaWQKLQkJICogYWNjaWRlbnRseSBjYWxsaW5nIC0+cG9sbCgpIHdoZW4gTkFQSSBpcyBub3Qgc2NoZWR1bGVkLgorCQkgKiBhY2NpZGVudGFsbHkgY2FsbGluZyAtPnBvbGwoKSB3aGVuIE5BUEkgaXMgbm90IHNjaGVkdWxlZC4KIAkJICovCiAJCXdvcmsgPSAwOwogCQlpZiAodGVzdF9iaXQoTkFQSV9TVEFURV9TQ0hFRCwgJm4tPnN0YXRlKSkgewpAQCAtNjMzNiw3ICs2MzM2LDcgQEAKIAkJaWYgKGRldi0+cnRubF9saW5rX29wcykKIAkJCWNvbnRpbnVlOwogCi0JCS8qIFB1c2ggcmVtYWluZyBuZXR3b3JrIGRldmljZXMgdG8gaW5pdF9uZXQgKi8KKwkJLyogUHVzaCByZW1haW5pbmcgbmV0d29yayBkZXZpY2VzIHRvIGluaXRfbmV0ICovCiAJCXNucHJpbnRmKGZiX25hbWUsIElGTkFNU0laLCAiZGV2JWQiLCBkZXYtPmlmaW5kZXgpOwogCQllcnIgPSBkZXZfY2hhbmdlX25ldF9uYW1lc3BhY2UoZGV2LCAmaW5pdF9uZXQsIGZiX25hbWUpOwogCQlpZiAoZXJyKSB7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jCmluZGV4IDIzMmIxODcuLmFmYjhhZmIgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2ZpbHRlci5jCisrKyBiL25ldC9jb3JlL2ZpbHRlci5jCkBAIC00MjUsNyArNDI1LDcgQEAKICAqIEFzIHdlIGRvbnQgd2FudCB0byBjbGVhciBtZW1bXSBhcnJheSBmb3IgZWFjaCBwYWNrZXQgZ29pbmcgdGhyb3VnaAogICogc2tfcnVuX2ZpbHRlcigpLCB3ZSBjaGVjayB0aGF0IGZpbHRlciBsb2FkZWQgYnkgdXNlciBuZXZlciB0cnkgdG8gcmVhZAogICogYSBjZWxsIGlmIG5vdCBwcmV2aW91c2x5IHdyaXR0ZW4sIGFuZCB3ZSBjaGVjayBhbGwgYnJhbmNoZXMgdG8gYmUgc3VyZQotICogYSBtYWxpY2lvdXMgdXNlciBkb2VzbnQgdHJ5IHRvIGFidXNlIHVzLgorICogYSBtYWxpY2lvdXMgdXNlciBkb2Vzbid0IHRyeSB0byBhYnVzZSB1cy4KICAqLwogc3RhdGljIGludCBjaGVja19sb2FkX2FuZF9zdG9yZXMoc3RydWN0IHNvY2tfZmlsdGVyICpmaWx0ZXIsIGludCBmbGVuKQogewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbGlua193YXRjaC5jIGIvbmV0L2NvcmUvbGlua193YXRjaC5jCmluZGV4IDAxYTExMDEuLmE3YjM0MjEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2xpbmtfd2F0Y2guYworKysgYi9uZXQvY29yZS9saW5rX3dhdGNoLmMKQEAgLTEyOSw3ICsxMjksNyBAQAogCWlmICghY2FuY2VsX2RlbGF5ZWRfd29yaygmbGlua3dhdGNoX3dvcmspKQogCQlyZXR1cm47CiAKLQkvKiBPdGhlcndpc2Ugd2UgcmVzY2hlZHVsZSBpdCBhZ2FpbiBmb3IgaW1tZWRpYXRlIGV4ZWN0aW9uLiAqLworCS8qIE90aGVyd2lzZSB3ZSByZXNjaGVkdWxlIGl0IGFnYWluIGZvciBpbW1lZGlhdGUgZXhlY3V0aW9uLiAqLwogCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmbGlua3dhdGNoX3dvcmssIDApOwogfQogCmRpZmYgLS1naXQgYS9uZXQvY29yZS9ydG5ldGxpbmsuYyBiL25ldC9jb3JlL3J0bmV0bGluay5jCmluZGV4IDQ5ZjdlYTUuLmQ3YzRiYjQgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5jCisrKyBiL25ldC9jb3JlL3J0bmV0bGluay5jCkBAIC0xOTYsNyArMTk2LDcgQEAKICAqIGFzIGZhaWx1cmUgb2YgdGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHVubGlrZWx5LCBpdCBjYW4gb25seSBoYXBwZW4gZHVlCiAgKiB0byBsYWNrIG9mIG1lbW9yeSB3aGVuIGFsbG9jYXRpbmcgdGhlIGNoYWluIHRvIHN0b3JlIGFsbCBtZXNzYWdlCiAgKiBoYW5kbGVycyBmb3IgYSBwcm90b2NvbC4gTWVhbnQgZm9yIHVzZSBpbiBpbml0IGZ1bmN0aW9ucyB3aGVyZSBsYWNrCi0gKiBvZiBtZW1vcnkgaW1wbGllcyBubyBzZW5zZSBpbiBjb250aW51ZWluZy4KKyAqIG9mIG1lbW9yeSBpbXBsaWVzIG5vIHNlbnNlIGluIGNvbnRpbnVpbmcuCiAgKi8KIHZvaWQgcnRubF9yZWdpc3RlcihpbnQgcHJvdG9jb2wsIGludCBtc2d0eXBlLAogCQkgICBydG5sX2RvaXRfZnVuYyBkb2l0LCBydG5sX2R1bXBpdF9mdW5jIGR1bXBpdCkKQEAgLTE0NDAsNyArMTQ0MCw3IEBACiBlcnJvdXQ6CiAJaWYgKGVyciA8IDAgJiYgbW9kaWZpZWQgJiYgbmV0X3JhdGVsaW1pdCgpKQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJBIGxpbmsgY2hhbmdlIHJlcXVlc3QgZmFpbGVkIHdpdGggIgotCQkgICAgICAgInNvbWUgY2hhbmdlcyBjb21pdHRlZCBhbHJlYWR5LiBJbnRlcmZhY2UgJXMgbWF5ICIKKwkJICAgICAgICJzb21lIGNoYW5nZXMgY29tbWl0dGVkIGFscmVhZHkuIEludGVyZmFjZSAlcyBtYXkgIgogCQkgICAgICAgImhhdmUgYmVlbiBsZWZ0IHdpdGggYW4gaW5jb25zaXN0ZW50IGNvbmZpZ3VyYXRpb24sICIKIAkJICAgICAgICJwbGVhc2UgY2hlY2suXG4iLCBkZXYtPm5hbWUpOwogCmRpZmYgLS1naXQgYS9uZXQvY29yZS9za2J1ZmYuYyBiL25ldC9jb3JlL3NrYnVmZi5jCmluZGV4IDgwMWRkMDguLjdlYmVlZDAgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3NrYnVmZi5jCisrKyBiL25ldC9jb3JlL3NrYnVmZi5jCkBAIC0yMjY3LDcgKzIyNjcsNyBAQAogICogb2YgYnl0ZXMgYWxyZWFkeSBjb25zdW1lZCBhbmQgdGhlIG5leHQgY2FsbCB0bwogICogc2tiX3NlcV9yZWFkKCkgd2lsbCByZXR1cm4gdGhlIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBibG9jay4KICAqCi0gKiBOb3RlIDE6IFRoZSBzaXplIG9mIGVhY2ggYmxvY2sgb2YgZGF0YSByZXR1cm5lZCBjYW4gYmUgYXJiaXRhcnksCisgKiBOb3RlIDE6IFRoZSBzaXplIG9mIGVhY2ggYmxvY2sgb2YgZGF0YSByZXR1cm5lZCBjYW4gYmUgYXJiaXRyYXJ5LAogICogICAgICAgdGhpcyBsaW1pdGF0aW9uIGlzIHRoZSBjb3N0IGZvciB6ZXJvY29weSBzZXFldWVudGFsCiAgKiAgICAgICByZWFkcyBvZiBwb3RlbnRpYWxseSBub24gbGluZWFyIGRhdGEuCiAgKgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc29jay5jIGIvbmV0L2NvcmUvc29jay5jCmluZGV4IDdkZmVkNzkuLjZlODE5NzggMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3NvY2suYworKysgYi9uZXQvY29yZS9zb2NrLmMKQEAgLTIxNSw3ICsyMTUsNyBAQAogX191MzIgc3lzY3RsX3dtZW1fZGVmYXVsdCBfX3JlYWRfbW9zdGx5ID0gU0tfV01FTV9NQVg7CiBfX3UzMiBzeXNjdGxfcm1lbV9kZWZhdWx0IF9fcmVhZF9tb3N0bHkgPSBTS19STUVNX01BWDsKIAotLyogTWF4aW1hbCBzcGFjZSBlYXRlbiBieSBpb3ZlYyBvciBhbmNpbGxpYXJ5IGRhdGEgcGx1cyBzb21lIHNwYWNlICovCisvKiBNYXhpbWFsIHNwYWNlIGVhdGVuIGJ5IGlvdmVjIG9yIGFuY2lsbGFyeSBkYXRhIHBsdXMgc29tZSBzcGFjZSAqLwogaW50IHN5c2N0bF9vcHRtZW1fbWF4IF9fcmVhZF9tb3N0bHkgPSBzaXplb2YodW5zaWduZWQgbG9uZykqKDIqVUlPX01BWElPVis1MTIpOwogRVhQT1JUX1NZTUJPTChzeXNjdGxfb3B0bWVtX21heCk7CiAKQEAgLTExNzUsNyArMTE3NSw3IEBACiB2b2lkIHNrX2ZyZWUoc3RydWN0IHNvY2sgKnNrKQogewogCS8qCi0JICogV2Ugc3Vic3RyYWN0IG9uZSBmcm9tIHNrX3dtZW1fYWxsb2MgYW5kIGNhbiBrbm93IGlmCisJICogV2Ugc3VidHJhY3Qgb25lIGZyb20gc2tfd21lbV9hbGxvYyBhbmQgY2FuIGtub3cgaWYKIAkgKiBzb21lIHBhY2tldHMgYXJlIHN0aWxsIGluIHNvbWUgdHggcXVldWUuCiAJICogSWYgbm90IG51bGwsIHNvY2tfd2ZyZWUoKSB3aWxsIGNhbGwgX19za19mcmVlKHNrKSBsYXRlcgogCSAqLwpAQCAtMTE4NSwxMCArMTE4NSwxMCBAQAogRVhQT1JUX1NZTUJPTChza19mcmVlKTsKIAogLyoKLSAqIExhc3Qgc29ja19wdXQgc2hvdWxkIGRyb3AgcmVmZXJyZW5jZSB0byBzay0+c2tfbmV0LiBJdCBoYXMgYWxyZWFkeQotICogYmVlbiBkcm9wcGVkIGluIHNrX2NoYW5nZV9uZXQuIFRha2luZyByZWZlcnJlbmNlIHRvIHN0b3BwaW5nIG5hbWVzcGFjZQorICogTGFzdCBzb2NrX3B1dCBzaG91bGQgZHJvcCByZWZlcmVuY2UgdG8gc2stPnNrX25ldC4gSXQgaGFzIGFscmVhZHkKKyAqIGJlZW4gZHJvcHBlZCBpbiBza19jaGFuZ2VfbmV0LiBUYWtpbmcgcmVmZXJlbmNlIHRvIHN0b3BwaW5nIG5hbWVzcGFjZQogICogaXMgbm90IGFuIG9wdGlvbi4KLSAqIFRha2UgcmVmZXJyZW5jZSB0byBhIHNvY2tldCB0byByZW1vdmUgaXQgZnJvbSBoYXNoIF9hbGl2ZV8gYW5kIGFmdGVyIHRoYXQKKyAqIFRha2UgcmVmZXJlbmNlIHRvIGEgc29ja2V0IHRvIHJlbW92ZSBpdCBmcm9tIGhhc2ggX2FsaXZlXyBhbmQgYWZ0ZXIgdGhhdAogICogZGVzdHJveSBpdCBpbiB0aGUgY29udGV4dCBvZiBpbml0X25ldC4KICAqLwogdm9pZCBza19yZWxlYXNlX2tlcm5lbChzdHJ1Y3Qgc29jayAqc2spCmRpZmYgLS1naXQgYS9uZXQvZGNjcC9vdXRwdXQuYyBiL25ldC9kY2NwL291dHB1dC5jCmluZGV4IDc4NGQzMDIxLi4xMzZkNDFjIDEwMDY0NAotLS0gYS9uZXQvZGNjcC9vdXRwdXQuYworKysgYi9uZXQvZGNjcC9vdXRwdXQuYwpAQCAtMTQzLDcgKzE0Myw3IEBACiB9CiAKIC8qKgotICogZGNjcF9kZXRlcm1pbmVfY2NtcHMgIC0gIEZpbmQgb3V0IGFib3V0IENDSUQtc3BlY2ZpYyBwYWNrZXQtc2l6ZSBsaW1pdHMKKyAqIGRjY3BfZGV0ZXJtaW5lX2NjbXBzICAtICBGaW5kIG91dCBhYm91dCBDQ0lELXNwZWNpZmljIHBhY2tldC1zaXplIGxpbWl0cwogICogV2Ugb25seSBjb25zaWRlciB0aGUgSEMtc2VuZGVyIENDSUQgZm9yIHNldHRpbmcgdGhlIENDTVBTIChSRkMgNDM0MCwgMTQuKSwKICAqIHNpbmNlIHRoZSBSWCBDQ0lEIGlzIHJlc3RyaWN0ZWQgdG8gZmVlZGJhY2sgcGFja2V0cyAoQWNrcyksIHdoaWNoIGFyZSBzbWFsbAogICogaW4gY29tcGFyaXNvbiB3aXRoIHRoZSBkYXRhIHRyYWZmaWMuIEEgdmFsdWUgb2YgMCBtZWFucyAibm8gY3VycmVudCBDQ01QUyIuCmRpZmYgLS1naXQgYS9uZXQvZHNhL212ODhlNjEzMS5jIGIvbmV0L2RzYS9tdjg4ZTYxMzEuYwppbmRleCBiYjJiNDFiLi4zZGE0MTg4IDEwMDY0NAotLS0gYS9uZXQvZHNhL212ODhlNjEzMS5jCisrKyBiL25ldC9kc2EvbXY4OGU2MTMxLmMKQEAgLTE0LDYgKzE0LDEzIEBACiAjaW5jbHVkZSAiZHNhX3ByaXYuaCIKICNpbmNsdWRlICJtdjg4ZTZ4eHguaCIKIAorLyoKKyAqIFN3aXRjaCBwcm9kdWN0IElEcworICovCisjZGVmaW5lIElEXzYwODUJCTB4MDRhMAorI2RlZmluZSBJRF82MDk1CQkweDA5NTAKKyNkZWZpbmUgSURfNjEzMQkJMHgxMDYwCisKIHN0YXRpYyBjaGFyICptdjg4ZTYxMzFfcHJvYmUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHN3X2FkZHIpCiB7CiAJaW50IHJldDsKQEAgLTIxLDkgKzI4LDExIEBACiAJcmV0ID0gX19tdjg4ZTZ4eHhfcmVnX3JlYWQoYnVzLCBzd19hZGRyLCBSRUdfUE9SVCgwKSwgMHgwMyk7CiAJaWYgKHJldCA+PSAwKSB7CiAJCXJldCAmPSAweGZmZjA7Ci0JCWlmIChyZXQgPT0gMHgwOTUwKQorCQlpZiAocmV0ID09IElEXzYwODUpCisJCQlyZXR1cm4gIk1hcnZlbGwgODhFNjA4NSI7CisJCWlmIChyZXQgPT0gSURfNjA5NSkKIAkJCXJldHVybiAiTWFydmVsbCA4OEU2MDk1Lzg4RTYwOTVGIjsKLQkJaWYgKHJldCA9PSAweDEwNjApCisJCWlmIChyZXQgPT0gSURfNjEzMSkKIAkJCXJldHVybiAiTWFydmVsbCA4OEU2MTMxIjsKIAl9CiAKQEAgLTEyNCw3ICsxMzMsNyBAQAogCSAqIElnbm9yZSByZW1vdmVkIHRhZyBkYXRhIG9uIGRvdWJseSB0YWdnZWQgcGFja2V0cywgZGlzYWJsZQogCSAqIGZsb3cgY29udHJvbCBtZXNzYWdlcywgZm9yY2UgZmxvdyBjb250cm9sIHByaW9yaXR5IHRvIHRoZQogCSAqIGhpZ2hlc3QsIGFuZCBzZW5kIGFsbCBzcGVjaWFsIG11bHRpY2FzdCBmcmFtZXMgdG8gdGhlIENQVQotCSAqIHBvcnQgYXQgdGhlIGhpZ2VzdCBwcmlvcml0eS4KKwkgKiBwb3J0IGF0IHRoZSBoaWdoZXN0IHByaW9yaXR5LgogCSAqLwogCVJFR19XUklURShSRUdfR0xPQkFMMiwgMHgwNSwgMHgwMGZmKTsKIApAQCAtMTY0LDYgKzE3Myw3IEBACiAKIHN0YXRpYyBpbnQgbXY4OGU2MTMxX3NldHVwX3BvcnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcCkKIHsKKwlzdHJ1Y3QgbXY4OGU2eHh4X3ByaXZfc3RhdGUgKnBzID0gKHZvaWQgKikoZHMgKyAxKTsKIAlpbnQgYWRkciA9IFJFR19QT1JUKHApOwogCXUxNiB2YWw7CiAKQEAgLTE3MSwxMCArMTgxLDEzIEBACiAJICogTUFDIEZvcmNpbmcgcmVnaXN0ZXI6IGRvbid0IGZvcmNlIGxpbmssIHNwZWVkLCBkdXBsZXgKIAkgKiBvciBmbG93IGNvbnRyb2wgc3RhdGUgdG8gYW55IHBhcnRpY3VsYXIgdmFsdWVzIG9uIHBoeXNpY2FsCiAJICogcG9ydHMsIGJ1dCBmb3JjZSB0aGUgQ1BVIHBvcnQgYW5kIGFsbCBEU0EgcG9ydHMgdG8gMTAwMCBNYi9zCi0JICogZnVsbCBkdXBsZXguCisJICogKDEwMCBNYi9zIG9uIDYwODUpIGZ1bGwgZHVwbGV4LgogCSAqLwogCWlmIChkc2FfaXNfY3B1X3BvcnQoZHMsIHApIHx8IGRzLT5kc2FfcG9ydF9tYXNrICYgKDEgPDwgcCkpCi0JCVJFR19XUklURShhZGRyLCAweDAxLCAweDAwM2UpOworCQlpZiAocHMtPmlkID09IElEXzYwODUpCisJCQlSRUdfV1JJVEUoYWRkciwgMHgwMSwgMHgwMDNkKTsgLyogMTAwIE1iL3MgKi8KKwkJZWxzZQorCQkJUkVHX1dSSVRFKGFkZHIsIDB4MDEsIDB4MDAzZSk7IC8qIDEwMDAgTWIvcyAqLwogCWVsc2UKIAkJUkVHX1dSSVRFKGFkZHIsIDB4MDEsIDB4MDAwMyk7CiAKQEAgLTI4Niw2ICsyOTksOCBAQAogCW12ODhlNnh4eF9wcHVfc3RhdGVfaW5pdChkcyk7CiAJbXV0ZXhfaW5pdCgmcHMtPnN0YXRzX211dGV4KTsKIAorCXBzLT5pZCA9IFJFR19SRUFEKFJFR19QT1JUKDApLCAweDAzKSAmIDB4ZmZmMDsKKwogCXJldCA9IG12ODhlNjEzMV9zd2l0Y2hfcmVzZXQoZHMpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvbmV0L2RzYS9tdjg4ZTZ4eHguaCBiL25ldC9kc2EvbXY4OGU2eHh4LmgKaW5kZXggZWIwZTBhYS4uNjExNTZjYTIgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvbXY4OGU2eHh4LmgKKysrIGIvbmV0L2RzYS9tdjg4ZTZ4eHguaApAQCAtMzksNiArMzksOCBAQAogCSAqIEhvbGQgdGhpcyBtdXRleCBvdmVyIHNuYXBzaG90ICsgZHVtcCBzZXF1ZW5jZXMuCiAJICovCiAJc3RydWN0IG11dGV4CXN0YXRzX211dGV4OworCisJaW50CQlpZDsgLyogc3dpdGNoIHByb2R1Y3QgaWQgKi8KIH07CiAKIHN0cnVjdCBtdjg4ZTZ4eHhfaHdfc3RhdCB7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9jaXBzb19pcHY0LmMgYi9uZXQvaXB2NC9jaXBzb19pcHY0LmMKaW5kZXggMDk0ZTE1MC4uYTBhZjdlYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvY2lwc29faXB2NC5jCisrKyBiL25ldC9pcHY0L2NpcHNvX2lwdjQuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2F0ZWdvcnkgcmFuZ2VzIHBlcm1pdHRlZCBpbiB0aGUgcmFuZ2VkIGNhdGVnb3J5IHRhZwogICogKHRhZyAjNSkuICBZb3UgbWF5IG5vdGUgdGhhdCB0aGUgSUVURiBkcmFmdCBzdGF0ZXMgdGhhdCB0aGUgbWF4aW11bSBudW1iZXIKICAqIG9mIGNhdGVnb3J5IHJhbmdlcyBpcyA3LCBidXQgaWYgdGhlIGxvdyBlbmQgb2YgdGhlIGxhc3QgY2F0ZWdvcnkgcmFuZ2UgaXMKLSAqIHplcm8gdGhlbiBpdCBpcyBwb3NzaWJpbGUgdG8gZml0IDggY2F0ZWdvcnkgcmFuZ2VzIGJlY2F1c2UgdGhlIHplcm8gc2hvdWxkCisgKiB6ZXJvIHRoZW4gaXQgaXMgcG9zc2libGUgdG8gZml0IDggY2F0ZWdvcnkgcmFuZ2VzIGJlY2F1c2UgdGhlIHplcm8gc2hvdWxkCiAgKiBiZSBvbWl0dGVkLiAqLwogI2RlZmluZSBDSVBTT19WNF9UQUdfUk5HX0NBVF9NQVggICAgICA4CiAKQEAgLTQzOCw3ICs0MzgsNyBAQAogICoKICAqIERlc2NyaXB0aW9uOgogICogU2VhcmNoIHRoZSBET0kgZGVmaW5pdGlvbiBsaXN0IGZvciBhIERPSSBkZWZpbml0aW9uIHdpdGggYSBET0kgdmFsdWUgdGhhdAotICogbWF0Y2hlcyBAZG9pLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJpbGUgZm9yIGNhbGxpbmcgcmN1X3JlYWRfW3VuXWxvY2soKS4KKyAqIG1hdGNoZXMgQGRvaS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgcmN1X3JlYWRfW3VuXWxvY2soKS4KICAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBET0kgZGVmaW5pdGlvbiBvbiBzdWNjZXNzIGFuZCBOVUxMIG9uIGZhaWx1cmUuCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgY2lwc29fdjRfZG9pICpjaXBzb192NF9kb2lfc2VhcmNoKHUzMiBkb2kpCkBAIC0xMjkzLDcgKzEyOTMsNyBAQAogCQkJcmV0dXJuIHJldF92YWw7CiAKIAkJLyogVGhpcyB3aWxsIHNlbmQgcGFja2V0cyB1c2luZyB0aGUgIm9wdGltaXplZCIgZm9ybWF0IHdoZW4KLQkJICogcG9zc2liaWxlIGFzIHNwZWNpZmllZCBpbiAgc2VjdGlvbiAzLjQuMi42IG9mIHRoZQorCQkgKiBwb3NzaWJsZSBhcyBzcGVjaWZpZWQgaW4gIHNlY3Rpb24gMy40LjIuNiBvZiB0aGUKIAkJICogQ0lQU08gZHJhZnQuICovCiAJCWlmIChjaXBzb192NF9yYm1fb3B0Zm10ICYmIHJldF92YWwgPiAwICYmIHJldF92YWwgPD0gMTApCiAJCQl0YWdfbGVuID0gMTQ7CkBAIC0xNzUyLDcgKzE3NTIsNyBAQAogfQogCiAvKioKLSAqIGNpcHNvX3Y0X2Vycm9yIC0gU2VuZCB0aGUgY29ycmVjdCByZXBvbnNlIGZvciBhIGJhZCBwYWNrZXQKKyAqIGNpcHNvX3Y0X2Vycm9yIC0gU2VuZCB0aGUgY29ycmVjdCByZXNwb25zZSBmb3IgYSBiYWQgcGFja2V0CiAgKiBAc2tiOiB0aGUgcGFja2V0CiAgKiBAZXJyb3I6IHRoZSBlcnJvciBjb2RlCiAgKiBAZ2F0ZXdheTogQ0lQU08gZ2F0ZXdheSBmbGFnCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9maWJfdHJpZS5jIGIvbmV0L2lwdjQvZmliX3RyaWUuYwppbmRleCBiOTJjODZmLi5lOTAxM2Q2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9maWJfdHJpZS5jCisrKyBiL25ldC9pcHY0L2ZpYl90cmllLmMKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiAgIEhhbnMgTGlzcyA8aGFucy5saXNzQGl0cy51dS5zZT4gIFVwcHNhbGEgVW5pdmVyc2l0ZXQKICAqCi0gKiBUaGlzIHdvcmsgaXMgYmFzZWQgb24gdGhlIExQQy10cmllIHdoaWNoIGlzIG9yaWdpbmFsbHkgZGVzY2liZWQgaW46CisgKiBUaGlzIHdvcmsgaXMgYmFzZWQgb24gdGhlIExQQy10cmllIHdoaWNoIGlzIG9yaWdpbmFsbHkgZGVzY3JpYmVkIGluOgogICoKICAqIEFuIGV4cGVyaW1lbnRhbCBzdHVkeSBvZiBjb21wcmVzc2lvbiBtZXRob2RzIGZvciBkeW5hbWljIHRyaWVzCiAgKiBTdGVmYW4gTmlsc3NvbiBhbmQgTWF0dGkgVGlra2FuZW4uIEFsZ29yaXRobWljYSwgMzMoMSk6MTktMzMsIDIwMDIuCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pY21wLmMgYi9uZXQvaXB2NC9pY21wLmMKaW5kZXggYTkxZGMxNi4uZTVmOGE3MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaWNtcC5jCisrKyBiL25ldC9pcHY0L2ljbXAuYwpAQCAtNzA0LDcgKzcwNCw3IEBACiAJICovCiAKIAkvKgotCSAqCUNoZWNrIHRoZSBvdGhlciBlbmQgaXNudCB2aW9sYXRpbmcgUkZDIDExMjIuIFNvbWUgcm91dGVycyBzZW5kCisJICoJQ2hlY2sgdGhlIG90aGVyIGVuZCBpc24ndCB2aW9sYXRpbmcgUkZDIDExMjIuIFNvbWUgcm91dGVycyBzZW5kCiAJICoJYm9ndXMgcmVzcG9uc2VzIHRvIGJyb2FkY2FzdCBmcmFtZXMuIElmIHlvdSBzZWUgdGhpcyBtZXNzYWdlCiAJICoJZmlyc3QgY2hlY2sgeW91ciBuZXRtYXNrIG1hdGNoZXMgYXQgYm90aCBlbmRzLCBpZiBpdCBkb2VzIHRoZW4KIAkgKglnZXQgdGhlIG90aGVyIHZlbmRvciB0byBmaXggdGhlaXIga2l0LgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYwppbmRleCA2N2YyNDFiLi40NTljMDExIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9vdXRwdXQuYworKysgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYwpAQCAtNjAzLDcgKzYwMyw3IEBACiAJCS8qIElGOiBpdCBkb2Vzbid0IGZpdCwgdXNlICdtdHUnIC0gdGhlIGRhdGEgc3BhY2UgbGVmdCAqLwogCQlpZiAobGVuID4gbXR1KQogCQkJbGVuID0gbXR1OwotCQkvKiBJRjogd2UgYXJlIG5vdCBzZW5kaW5nIHVwdG8gYW5kIGluY2x1ZGluZyB0aGUgcGFja2V0IGVuZAorCQkvKiBJRjogd2UgYXJlIG5vdCBzZW5kaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIHBhY2tldCBlbmQKIAkJICAgdGhlbiBhbGlnbiB0aGUgbmV4dCBzdGFydCBvbiBhbiBlaWdodCBieXRlIGJvdW5kYXJ5ICovCiAJCWlmIChsZW4gPCBsZWZ0KQl7CiAJCQlsZW4gJj0gfjc7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcGNvbmZpZy5jIGIvbmV0L2lwdjQvaXBjb25maWcuYwppbmRleCAyYjA5Nzc1Li5jYmZmMmVjIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcGNvbmZpZy5jCisrKyBiL25ldC9pcHY0L2lwY29uZmlnLmMKQEAgLTE0NDQsNyArMTQ0NCw3IEBACiAJCXJvb3Rfc2VydmVyX2FkZHIgPSBhZGRyOwogCiAJLyoKLQkgKiBVc2UgZGVmYXVsdHMgd2hlcmVldmVyIGFwcGxpY2FibGUuCisJICogVXNlIGRlZmF1bHRzIHdoZXJldmVyIGFwcGxpY2FibGUuCiAJICovCiAJaWYgKGljX2RlZmF1bHRzKCkgPCAwKQogCQlyZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIuYyBiL25ldC9pcHY0L25ldGZpbHRlci5jCmluZGV4IGYzYzBiNTQuLjQ2MTRiYWIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci5jCisrKyBiL25ldC9pcHY0L25ldGZpbHRlci5jCkBAIC0yMjEsOSArMjIxLDEwIEBACiAJcmV0dXJuIGNzdW07CiB9CiAKLXN0YXRpYyBpbnQgbmZfaXBfcm91dGUoc3RydWN0IGRzdF9lbnRyeSAqKmRzdCwgc3RydWN0IGZsb3dpICpmbCkKK3N0YXRpYyBpbnQgbmZfaXBfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LAorCQkgICAgICAgc3RydWN0IGZsb3dpICpmbCwgYm9vbCBzdHJpY3QgX19hbHdheXNfdW51c2VkKQogewotCXN0cnVjdCBydGFibGUgKnJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleSgmaW5pdF9uZXQsICZmbC0+dS5pcDQpOworCXN0cnVjdCBydGFibGUgKnJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleShuZXQsICZmbC0+dS5pcDQpOwogCWlmIChJU19FUlIocnQpKQogCQlyZXR1cm4gUFRSX0VSUihydCk7CiAJKmRzdCA9ICZydC0+ZHN0OwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2FycF90YWJsZXMuYyBiL25ldC9pcHY0L25ldGZpbHRlci9hcnBfdGFibGVzLmMKaW5kZXggNGI1ZDQ1Ny4uODliYzdlNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2FycF90YWJsZXMuYworKysgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvYXJwX3RhYmxlcy5jCkBAIC03Niw3ICs3Niw3IEBACiB9CiAKIC8qCi0gKiBVbmZvcnR1bmF0bHksIF9iIGFuZCBfbWFzayBhcmUgbm90IGFsaWduZWQgdG8gYW4gaW50IChvciBsb25nIGludCkKKyAqIFVuZm9ydHVuYXRlbHksIF9iIGFuZCBfbWFzayBhcmUgbm90IGFsaWduZWQgdG8gYW4gaW50IChvciBsb25nIGludCkKICAqIFNvbWUgYXJjaGVzIGRvbnQgY2FyZSwgdW5yb2xsaW5nIHRoZSBsb29wIGlzIGEgd2luIG9uIHRoZW0uCiAgKiBGb3Igb3RoZXIgYXJjaGVzLCB3ZSBvbmx5IGhhdmUgYSAxNmJpdCBhbGlnbmVtZW50LgogICovCkBAIC0xODc0LDcgKzE4NzQsNyBAQAogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycjE7CiAKLQkvKiBOb29uZSBlbHNlIHdpbGwgYmUgZG93bmluZyBzZW0gbm93LCBzbyB3ZSB3b24ndCBzbGVlcCAqLworCS8qIE5vIG9uZSBlbHNlIHdpbGwgYmUgZG93bmluZyBzZW0gbm93LCBzbyB3ZSB3b24ndCBzbGVlcCAqLwogCXJldCA9IHh0X3JlZ2lzdGVyX3RhcmdldHMoYXJwdF9idWlsdGluX3RnLCBBUlJBWV9TSVpFKGFycHRfYnVpbHRpbl90ZykpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycjI7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfdGFibGVzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfdGFibGVzLmMKaW5kZXggZmZjZWEwZC4uNzA0OTE1MCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX3RhYmxlcy5jCisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9pcF90YWJsZXMuYwpAQCAtMjIzMyw3ICsyMjMzLDcgQEAKIAlpZiAocmV0IDwgMCkKIAkJZ290byBlcnIxOwogCi0JLyogTm9vbmUgZWxzZSB3aWxsIGJlIGRvd25pbmcgc2VtIG5vdywgc28gd2Ugd29uJ3Qgc2xlZXAgKi8KKwkvKiBObyBvbmUgZWxzZSB3aWxsIGJlIGRvd25pbmcgc2VtIG5vdywgc28gd2Ugd29uJ3Qgc2xlZXAgKi8KIAlyZXQgPSB4dF9yZWdpc3Rlcl90YXJnZXRzKGlwdF9idWlsdGluX3RnLCBBUlJBWV9TSVpFKGlwdF9idWlsdGluX3RnKSk7CiAJaWYgKHJldCA8IDApCiAJCWdvdG8gZXJyMjsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMKaW5kZXggMjFiY2Y0Ny4uOWM3MWIyNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMKKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9jb3JlLmMKQEAgLTUyMSw3ICs1MjEsNyBAQAogfQogRVhQT1JUX1NZTUJPTChuZl9uYXRfcHJvdG9jb2xfcmVnaXN0ZXIpOwogCi0vKiBOb29uZSBzdG9yZXMgdGhlIHByb3RvY29sIGFueXdoZXJlOyBzaW1wbHkgZGVsZXRlIGl0LiAqLworLyogTm8gb25lIHN0b3JlcyB0aGUgcHJvdG9jb2wgYW55d2hlcmU7IHNpbXBseSBkZWxldGUgaXQuICovCiB2b2lkIG5mX25hdF9wcm90b2NvbF91bnJlZ2lzdGVyKGNvbnN0IHN0cnVjdCBuZl9uYXRfcHJvdG9jb2wgKnByb3RvKQogewogCXNwaW5fbG9ja19iaCgmbmZfbmF0X2xvY2spOwpAQCAtNTMyLDcgKzUzMiw3IEBACiB9CiBFWFBPUlRfU1lNQk9MKG5mX25hdF9wcm90b2NvbF91bnJlZ2lzdGVyKTsKIAotLyogTm9vbmUgdXNpbmcgY29ubnRyYWNrIGJ5IHRoZSB0aW1lIHRoaXMgY2FsbGVkLiAqLworLyogTm8gb25lIHVzaW5nIGNvbm50cmFjayBieSB0aGUgdGltZSB0aGlzIGNhbGxlZC4gKi8KIHN0YXRpYyB2b2lkIG5mX25hdF9jbGVhbnVwX2Nvbm50cmFjayhzdHJ1Y3QgbmZfY29ubiAqY3QpCiB7CiAJc3RydWN0IG5mX2Nvbm5fbmF0ICpuYXQgPSBuZl9jdF9leHRfZmluZChjdCwgTkZfQ1RfRVhUX05BVCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9yYXcuYyBiL25ldC9pcHY0L3Jhdy5jCmluZGV4IDJkM2M3MmUuLmJjZWFlYzQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3Jhdy5jCisrKyBiL25ldC9pcHY0L3Jhdy5jCkBAIC02MjIsNyArNjIyLDcgQEAKIHN0YXRpYyB2b2lkIHJhd19jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dCkKIHsKIAkvKgotCSAqIFJhdyBzb2NrZXRzIG1heSBoYXZlIGRpcmVjdCBrZXJuZWwgcmVmZXJlbmVjZXMuIEtpbGwgdGhlbS4KKwkgKiBSYXcgc29ja2V0cyBtYXkgaGF2ZSBkaXJlY3Qga2VybmVsIHJlZmVyZW5jZXMuIEtpbGwgdGhlbS4KIAkgKi8KIAlpcF9yYV9jb250cm9sKHNrLCAwLCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcm91dGUuYyBiL25ldC9pcHY0L3JvdXRlLmMKaW5kZXggNGIwYzgxMS4uYzFhY2Y2OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvcm91dGUuYworKysgYi9uZXQvaXB2NC9yb3V0ZS5jCkBAIC04MjEsNyArODIxLDcgQEAKIH0KIAogLyoKLSAqIFBlcnR1YmF0aW9uIG9mIHJ0X2dlbmlkIGJ5IGEgc21hbGwgcXVhbnRpdHkgWzEuLjI1Nl0KKyAqIFBlcnR1cmJhdGlvbiBvZiBydF9nZW5pZCBieSBhIHNtYWxsIHF1YW50aXR5IFsxLi4yNTZdCiAgKiBVc2luZyA4IGJpdHMgb2Ygc2h1ZmZsaW5nIGVuc3VyZSB3ZSBjYW4gY2FsbCBydF9jYWNoZV9pbnZhbGlkYXRlKCkKICAqIG1hbnkgdGltZXMgKDJeMjQpIHdpdGhvdXQgZ2l2aW5nIHJlY2VudCBydF9nZW5pZC4KICAqIEplbmtpbnMgaGFzaCBpcyBzdHJvbmcgZW5vdWdoIHRoYXQgbGl0bGUgY2hhbmdlcyBvZiBydF9nZW5pZCBhcmUgT0suCkBAIC0xMTkxLDcgKzExOTEsNyBAQAogI2VuZGlmCiAJLyoKIAkgKiBTaW5jZSBsb29rdXAgaXMgbG9ja2ZyZWUsIHdlIG11c3QgbWFrZSBzdXJlCi0JICogcHJldmlvdXMgd3JpdGVzIHRvIHJ0IGFyZSBjb21pdHRlZCB0byBtZW1vcnkKKwkgKiBwcmV2aW91cyB3cml0ZXMgdG8gcnQgYXJlIGNvbW1pdHRlZCB0byBtZW1vcnkKIAkgKiBiZWZvcmUgbWFraW5nIHJ0IHZpc2libGUgdG8gb3RoZXIgQ1BVUy4KIAkgKi8KIAlyY3VfYXNzaWduX3BvaW50ZXIocnRfaGFzaF90YWJsZVtoYXNoXS5jaGFpbiwgcnQpOwpAQCAtMTg5MSw2ICsxODkxLDcgQEAKICNpZmRlZiBDT05GSUdfSVBfUk9VVEVfQ0xBU1NJRAogCXJ0aC0+ZHN0LnRjbGFzc2lkID0gaXRhZzsKICNlbmRpZgorCXJ0aC0+cnRfcm91dGVfaWlmID0gZGV2LT5pZmluZGV4OwogCXJ0aC0+cnRfaWlmCT0gZGV2LT5pZmluZGV4OwogCXJ0aC0+ZHN0LmRldgk9IGluaXRfbmV0Lmxvb3BiYWNrX2RldjsKIAlkZXZfaG9sZChydGgtPmRzdC5kZXYpOwpAQCAtMjAyNiw2ICsyMDI3LDcgQEAKIAlydGgtPnJ0X2tleV9zcmMJPSBzYWRkcjsKIAlydGgtPnJ0X3NyYwk9IHNhZGRyOwogCXJ0aC0+cnRfZ2F0ZXdheQk9IGRhZGRyOworCXJ0aC0+cnRfcm91dGVfaWlmID0gaW5fZGV2LT5kZXYtPmlmaW5kZXg7CiAJcnRoLT5ydF9paWYgCT0gaW5fZGV2LT5kZXYtPmlmaW5kZXg7CiAJcnRoLT5kc3QuZGV2CT0gKG91dF9kZXYpLT5kZXY7CiAJZGV2X2hvbGQocnRoLT5kc3QuZGV2KTsKQEAgLTIyMDIsNiArMjIwNCw3IEBACiAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX0NMQVNTSUQKIAlydGgtPmRzdC50Y2xhc3NpZCA9IGl0YWc7CiAjZW5kaWYKKwlydGgtPnJ0X3JvdXRlX2lpZiA9IGRldi0+aWZpbmRleDsKIAlydGgtPnJ0X2lpZgk9IGRldi0+aWZpbmRleDsKIAlydGgtPmRzdC5kZXYJPSBuZXQtPmxvb3BiYWNrX2RldjsKIAlkZXZfaG9sZChydGgtPmRzdC5kZXYpOwpAQCAtMjQwMSw3ICsyNDA0LDggQEAKIAlydGgtPnJ0X21hcmsgICAgPSBvbGRmbHA0LT5mbG93aTRfbWFyazsKIAlydGgtPnJ0X2RzdAk9IGZsNC0+ZGFkZHI7CiAJcnRoLT5ydF9zcmMJPSBmbDQtPnNhZGRyOwotCXJ0aC0+cnRfaWlmCT0gMDsKKwlydGgtPnJ0X3JvdXRlX2lpZiA9IDA7CisJcnRoLT5ydF9paWYJPSBvbGRmbHA0LT5mbG93aTRfb2lmID8gOiBkZXZfb3V0LT5pZmluZGV4OwogCS8qIGdldCByZWZlcmVuY2VzIHRvIHRoZSBkZXZpY2VzIHRoYXQgYXJlIHRvIGJlIGhvbGQgYnkgdGhlIHJvdXRpbmcKIAkgICBjYWNoZSBlbnRyeSAqLwogCXJ0aC0+ZHN0LmRldgk9IGRldl9vdXQ7CkBAIC0yNzE2LDYgKzI3MjAsNyBAQAogCQlydC0+cnRfa2V5X2RzdCA9IG9ydC0+cnRfa2V5X2RzdDsKIAkJcnQtPnJ0X2tleV9zcmMgPSBvcnQtPnJ0X2tleV9zcmM7CiAJCXJ0LT5ydF90b3MgPSBvcnQtPnJ0X3RvczsKKwkJcnQtPnJ0X3JvdXRlX2lpZiA9IG9ydC0+cnRfcm91dGVfaWlmOwogCQlydC0+cnRfaWlmID0gb3J0LT5ydF9paWY7CiAJCXJ0LT5ydF9vaWYgPSBvcnQtPnJ0X29pZjsKIAkJcnQtPnJ0X21hcmsgPSBvcnQtPnJ0X21hcms7CkBAIC0yNzI1LDcgKzI3MzAsNiBAQAogCQlydC0+cnRfdHlwZSA9IG9ydC0+cnRfdHlwZTsKIAkJcnQtPnJ0X2RzdCA9IG9ydC0+cnRfZHN0OwogCQlydC0+cnRfc3JjID0gb3J0LT5ydF9zcmM7Ci0JCXJ0LT5ydF9paWYgPSBvcnQtPnJ0X2lpZjsKIAkJcnQtPnJ0X2dhdGV3YXkgPSBvcnQtPnJ0X2dhdGV3YXk7CiAJCXJ0LT5ydF9zcGVjX2RzdCA9IG9ydC0+cnRfc3BlY19kc3Q7CiAJCXJ0LT5wZWVyID0gb3J0LT5wZWVyOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2xwLmMgYi9uZXQvaXB2NC90Y3BfbHAuYwppbmRleCA2NTZkNDMxLi43MmY3MjE4IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfbHAuYworKysgYi9uZXQvaXB2NC90Y3BfbHAuYwpAQCAtMTIsNyArMTIsNyBAQAogICogICAgIHdpdGhpbiBjb25nX2F2b2lkLgogICogICBvIEVycm9yIGNvcnJlY3RpbmcgaW4gcmVtb3RlIEhaLCB0aGVyZWZvcmUgcmVtb3RlIEhaIHdpbGwgYmUga2VlcGVkCiAgKiAgICAgb24gY2hlY2tpbmcgYW5kIHVwZGF0aW5nLgotICogICBvIEhhbmRsaW5nIGNhbGN1bGF0aW9uIG9mIE9uZS1XYXktRGVsYXkgKE9XRCkgd2l0aGluIHJ0dF9zYW1wbGUsIHNpY25lCisgKiAgIG8gSGFuZGxpbmcgY2FsY3VsYXRpb24gb2YgT25lLVdheS1EZWxheSAoT1dEKSB3aXRoaW4gcnR0X3NhbXBsZSwgc2luY2UKICAqICAgICBPV0QgaGF2ZSBhIHNpbWlsYXIgbWVhbmluZyBhcyBSVFQuIEFsc28gY29ycmVjdCB0aGUgYnVnZ3kgZm9ybXVsYXIuCiAgKiAgIG8gSGFuZGxlIHJlYWN0aW9uIGZvciBFYXJseSBDb25nZXN0aW9uIEluZGljYXRpb24gKEVDSSkgd2l0aGluCiAgKiAgICAgcGt0c19hY2tlZCwgYXMgbWVudGlvbmVkIHdpdGhpbiBwc2V1ZG8gY29kZS4KZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9vdXRwdXQuYyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuYwppbmRleCA4YjBkMDE2Li4xNzM4OGM3IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjQvdGNwX291dHB1dC5jCkBAIC03Myw3ICs3Myw3IEBACiAJdGNwX2FkdmFuY2Vfc2VuZF9oZWFkKHNrLCBza2IpOwogCXRwLT5zbmRfbnh0ID0gVENQX1NLQl9DQihza2IpLT5lbmRfc2VxOwogCi0JLyogRG9uJ3Qgb3ZlcnJpZGUgTmFnbGUgaW5kZWZpbmF0ZWx5IHdpdGggRi1SVE8gKi8KKwkvKiBEb24ndCBvdmVycmlkZSBOYWdsZSBpbmRlZmluaXRlbHkgd2l0aCBGLVJUTyAqLwogCWlmICh0cC0+ZnJ0b19jb3VudGVyID09IDIpCiAJCXRwLT5mcnRvX2NvdW50ZXIgPSAzOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfeWVhaC5jIGIvbmV0L2lwdjQvdGNwX3llYWguYwppbmRleCBkYzdmNDMxLi4wNWMzYjZmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfeWVhaC5jCisrKyBiL25ldC9pcHY0L3RjcF95ZWFoLmMKQEAgLTIwLDcgKzIwLDcgQEAKICNkZWZpbmUgVENQX1lFQUhfREVMVEEgICAgICAgIDMgLy9sb2cgbWluaW11bSBmcmFjdGlvbiBvZiBjd25kIHRvIGJlIHJlbW92ZWQgb24gbG9zcwogI2RlZmluZSBUQ1BfWUVBSF9FUFNJTE9OICAgICAgMSAvL2xvZyBtYXhpbXVtIGZyYWN0aW9uIHRvIGJlIHJlbW92ZWQgb24gZWFybHkgZGVjb25nZXN0aW9uCiAjZGVmaW5lIFRDUF9ZRUFIX1BIWSAgICAgICAgICA4IC8vbGluIG1heGltdW0gZGVsdGEgZnJvbSBiYXNlCi0jZGVmaW5lIFRDUF9ZRUFIX1JITyAgICAgICAgIDE2IC8vbGluIG1pbnVtdW0gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIHJ0dCB0byBjb25zaWRlciBjb21wZXRpdGlvbiBvbiBsb3NzCisjZGVmaW5lIFRDUF9ZRUFIX1JITyAgICAgICAgIDE2IC8vbGluIG1pbmltdW0gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIHJ0dCB0byBjb25zaWRlciBjb21wZXRpdGlvbiBvbiBsb3NzCiAjZGVmaW5lIFRDUF9ZRUFIX1pFVEEgICAgICAgIDUwIC8vbGluIG1pbmltdW0gbnVtYmVyIG9mIHN0YXRlIHN3aXRjaHMgdG8gcmVzZXQgcmVub19jb3VudAogCiAjZGVmaW5lIFRDUF9TQ0FMQUJMRV9BSV9DTlQJIDEwMFUKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcC5jIGIvbmV0L2lwdjQvdWRwLmMKaW5kZXggNTg4ZjQ3YS4uZjg3YThlYiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdWRwLmMKKysrIGIvbmV0L2lwdjQvdWRwLmMKQEAgLTE4OSw3ICsxODksNyBAQAogICogIEBzazogICAgICAgICAgc29ja2V0IHN0cnVjdCBpbiBxdWVzdGlvbgogICogIEBzbnVtOiAgICAgICAgcG9ydCBudW1iZXIgdG8gbG9vayB1cAogICogIEBzYWRkcl9jb21wOiAgQUYtZGVwZW5kZW50IGNvbXBhcmlzb24gb2YgYm91bmQgbG9jYWwgSVAgYWRkcmVzc2VzCi0gKiAgQGhhc2gyX251bGxhZGRyOiBBRi1kZXBlbmRhbnQgaGFzaCB2YWx1ZSBpbiBzZWNvbmRhcnkgaGFzaCBjaGFpbnMsCisgKiAgQGhhc2gyX251bGxhZGRyOiBBRi1kZXBlbmRlbnQgaGFzaCB2YWx1ZSBpbiBzZWNvbmRhcnkgaGFzaCBjaGFpbnMsCiAgKiAgICAgICAgICAgICAgICAgICB3aXRoIE5VTEwgYWRkcmVzcwogICovCiBpbnQgdWRwX2xpYl9nZXRfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHNudW0sCmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9wb2xpY3kuYyBiL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCmluZGV4IDEzZTBlN2YuLmQyMGEwNWUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCisrKyBiL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCkBAIC03NCw2ICs3NCw3IEBACiAJcnQtPnJ0X2tleV9kc3QgPSBmbDQtPmRhZGRyOwogCXJ0LT5ydF9rZXlfc3JjID0gZmw0LT5zYWRkcjsKIAlydC0+cnRfdG9zID0gZmw0LT5mbG93aTRfdG9zOworCXJ0LT5ydF9yb3V0ZV9paWYgPSBmbDQtPmZsb3dpNF9paWY7CiAJcnQtPnJ0X2lpZiA9IGZsNC0+Zmxvd2k0X2lpZjsKIAlydC0+cnRfb2lmID0gZmw0LT5mbG93aTRfb2lmOwogCXJ0LT5ydF9tYXJrID0gZmw0LT5mbG93aTRfbWFyazsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FkZHJjb25mLmMgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCmluZGV4IDNkYWFmM2MuLjE0OTM1MzQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FkZHJjb25mLmMKKysrIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwpAQCAtMTA4NCw3ICsxMDg0LDcgQEAKIAljYXNlIElQVjZfU0FERFJfUlVMRV9QUklWQUNZOgogCSAgICB7CiAJCS8qIFJ1bGUgNzogUHJlZmVyIHB1YmxpYyBhZGRyZXNzCi0JCSAqIE5vdGU6IHByZWZlciB0ZW1wcmFyeSBhZGRyZXNzIGlmIHVzZV90ZW1wYWRkciA+PSAyCisJCSAqIE5vdGU6IHByZWZlciB0ZW1wb3JhcnkgYWRkcmVzcyBpZiB1c2VfdGVtcGFkZHIgPj0gMgogCQkgKi8KIAkJaW50IHByZWZ0bXAgPSBkc3QtPnByZWZzICYgKElQVjZfUFJFRkVSX1NSQ19QVUJMSUN8SVBWNl9QUkVGRVJfU1JDX1RNUCkgPwogCQkJCSEhKGRzdC0+cHJlZnMgJiBJUFY2X1BSRUZFUl9TUkNfVE1QKSA6CkBAIC0xOTY4LDcgKzE5NjgsNyBAQAogCQkJCQkgKiAgdG8gdGhlIHN0b3JlZCBsaWZldGltZSBzaW5jZSB3ZSdsbAogCQkJCQkgKiAgYmUgdXBkYXRpbmcgdGhlIHRpbWVzdGFtcCBiZWxvdywKIAkJCQkJICogIGVsc2Ugd2UnbGwgc2V0IGl0IGJhY2sgdG8gdGhlCi0JCQkJCSAqICBtaW51bXVtLgorCQkJCQkgKiAgbWluaW11bS4KIAkJCQkJICovCiAJCQkJCWlmIChwcmVmZXJlZF9sZnQgIT0gaWZwLT5wcmVmZXJlZF9sZnQpIHsKIAkJCQkJCXZhbGlkX2xmdCA9IHN0b3JlZF9sZnQ7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZl9pbmV0Ni5jIGIvbmV0L2lwdjYvYWZfaW5ldDYuYwppbmRleCA0YjEzZDVkLi5hZmNjNzA5IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZl9pbmV0Ni5jCisrKyBiL25ldC9pcHY2L2FmX2luZXQ2LmMKQEAgLTExMTMsNyArMTExMyw3IEBACiAJLyoKIAkgKglpcG5nd2cgQVBJIGRyYWZ0IG1ha2VzIGNsZWFyIHRoYXQgdGhlIGNvcnJlY3Qgc2VtYW50aWNzCiAJICoJZm9yIFRDUCBhbmQgVURQIGlzIHRvIGNvbnNpZGVyIG9uZSBUQ1AgYW5kIFVEUCBpbnN0YW5jZQotCSAqCWluIGEgaG9zdCBhdmFpbGlhYmxlIGJ5IGJvdGggSU5FVCBhbmQgSU5FVDYgQVBJcyBhbmQKKwkgKglpbiBhIGhvc3QgYXZhaWxhYmxlIGJ5IGJvdGggSU5FVCBhbmQgSU5FVDYgQVBJcyBhbmQKIAkgKglhYmxlIHRvIGNvbW11bmljYXRlIHZpYSBib3RoIG5ldHdvcmsgcHJvdG9jb2xzLgogCSAqLwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggMTgyMDg4Ny4uNDZjZjdiZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X291dHB1dC5jCisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtNzc5LDcgKzc3OSw3IEBACiAJCS8qIElGOiBpdCBkb2Vzbid0IGZpdCwgdXNlICdtdHUnIC0gdGhlIGRhdGEgc3BhY2UgbGVmdCAqLwogCQlpZiAobGVuID4gbXR1KQogCQkJbGVuID0gbXR1OwotCQkvKiBJRjogd2UgYXJlIG5vdCBzZW5kaW5nIHVwdG8gYW5kIGluY2x1ZGluZyB0aGUgcGFja2V0IGVuZAorCQkvKiBJRjogd2UgYXJlIG5vdCBzZW5kaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIHBhY2tldCBlbmQKIAkJICAgdGhlbiBhbGlnbiB0aGUgbmV4dCBzdGFydCBvbiBhbiBlaWdodCBieXRlIGJvdW5kYXJ5ICovCiAJCWlmIChsZW4gPCBsZWZ0KQl7CiAJCQlsZW4gJj0gfjc7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci5jCmluZGV4IDM5YWFjYTIuLjI4YmMxZjYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRlci5jCkBAIC05MCw5ICs5MCwxOCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IG5mX2lwNl9yb3V0ZShzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LCBzdHJ1Y3QgZmxvd2kgKmZsKQorc3RhdGljIGludCBuZl9pcDZfcm91dGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0LAorCQkJc3RydWN0IGZsb3dpICpmbCwgYm9vbCBzdHJpY3QpCiB7Ci0JKmRzdCA9IGlwNl9yb3V0ZV9vdXRwdXQoJmluaXRfbmV0LCBOVUxMLCAmZmwtPnUuaXA2KTsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IGlwdjZfcGluZm8gZmFrZV9waW5mbzsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IGluZXRfc29jayBmYWtlX3NrID0geworCQkvKiBtYWtlcyBpcDZfcm91dGVfb3V0cHV0IHNldCBSVDZfTE9PS1VQX0ZfSUZBQ0U6ICovCisJCS5zay5za19ib3VuZF9kZXZfaWYgPSAxLAorCQkucGluZXQ2ID0gKHN0cnVjdCBpcHY2X3BpbmZvICopICZmYWtlX3BpbmZvLAorCX07CisJY29uc3Qgdm9pZCAqc2sgPSBzdHJpY3QgPyAmZmFrZV9zayA6IE5VTEw7CisKKwkqZHN0ID0gaXA2X3JvdXRlX291dHB1dChuZXQsIHNrLCAmZmwtPnUuaXA2KTsKIAlyZXR1cm4gKCpkc3QpLT5lcnJvcjsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNl90YWJsZXMuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZfdGFibGVzLmMKaW5kZXggMGIyYWY5Yi4uNWExYzZmMiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNl90YWJsZXMuYworKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2X3RhYmxlcy5jCkBAIC0yMjQ4LDcgKzIyNDgsNyBAQAogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycjE7CiAKLQkvKiBOb29uZSBlbHNlIHdpbGwgYmUgZG93bmluZyBzZW0gbm93LCBzbyB3ZSB3b24ndCBzbGVlcCAqLworCS8qIE5vIG9uZSBlbHNlIHdpbGwgYmUgZG93bmluZyBzZW0gbm93LCBzbyB3ZSB3b24ndCBzbGVlcCAqLwogCXJldCA9IHh0X3JlZ2lzdGVyX3RhcmdldHMoaXA2dF9idWlsdGluX3RnLCBBUlJBWV9TSVpFKGlwNnRfYnVpbHRpbl90ZykpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycjI7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZGVmcmFnX2lwdjZfaG9va3MuYyBiL25ldC9pcHY2L25ldGZpbHRlci9uZl9kZWZyYWdfaXB2Nl9ob29rcy5jCmluZGV4IDk3YzViMjEuLmNkZDZkMDQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9kZWZyYWdfaXB2Nl9ob29rcy5jCisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9uZl9kZWZyYWdfaXB2Nl9ob29rcy5jCkBAIC03MSw3ICs3MSw3IEBACiAJaWYgKHJlYXNtID09IE5VTEwpCiAJCXJldHVybiBORl9TVE9MRU47CiAKLQkvKiBlcnJvciBvY2N1cmVkIG9yIG5vdCBmcmFnbWVudGVkICovCisJLyogZXJyb3Igb2NjdXJyZWQgb3Igbm90IGZyYWdtZW50ZWQgKi8KIAlpZiAocmVhc20gPT0gc2tiKQogCQlyZXR1cm4gTkZfQUNDRVBUOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuYwppbmRleCA1NmZhMTI1Li40ZjQ5ZTVkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jCisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKQEAgLTE2MjIsNiArMTYyMiw3IEBACiAJCW9wdF9za2IgPSBza2JfY2xvbmUoc2tiLCBHRlBfQVRPTUlDKTsKIAogCWlmIChzay0+c2tfc3RhdGUgPT0gVENQX0VTVEFCTElTSEVEKSB7IC8qIEZhc3QgcGF0aCAqLworCQlzb2NrX3Jwc19zYXZlX3J4aGFzaChzaywgc2tiLT5yeGhhc2gpOwogCQlpZiAodGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiLCB0Y3BfaGRyKHNrYiksIHNrYi0+bGVuKSkKIAkJCWdvdG8gcmVzZXQ7CiAJCWlmIChvcHRfc2tiKQpAQCAtMTY0OSw3ICsxNjUwLDggQEAKIAkJCQlfX2tmcmVlX3NrYihvcHRfc2tiKTsKIAkJCXJldHVybiAwOwogCQl9Ci0JfQorCX0gZWxzZQorCQlzb2NrX3Jwc19zYXZlX3J4aGFzaChzaywgc2tiLT5yeGhhc2gpOwogCiAJaWYgKHRjcF9yY3Zfc3RhdGVfcHJvY2Vzcyhzaywgc2tiLCB0Y3BfaGRyKHNrYiksIHNrYi0+bGVuKSkKIAkJZ290byByZXNldDsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3VkcC5jIGIvbmV0L2lwdjYvdWRwLmMKaW5kZXggZDcwMzdjMC4uMTVjMzc3NCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdWRwLmMKKysrIGIvbmV0L2lwdjYvdWRwLmMKQEAgLTUwNSw2ICs1MDUsOSBAQAogCWludCByYzsKIAlpbnQgaXNfdWRwbGl0ZSA9IElTX1VEUExJVEUoc2spOwogCisJaWYgKCFpcHY2X2FkZHJfYW55KCZpbmV0Nl9zayhzayktPmRhZGRyKSkKKwkJc29ja19ycHNfc2F2ZV9yeGhhc2goc2ssIHNrYi0+cnhoYXNoKTsKKwogCWlmICgheGZybTZfcG9saWN5X2NoZWNrKHNrLCBYRlJNX1BPTElDWV9JTiwgc2tiKSkKIAkJZ290byBkcm9wOwogCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxhcC5jIGIvbmV0L2lyZGEvaXJsYXAuYwppbmRleCA3ODNjNWYzLi4wMDViNDI0IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxhcC5jCisrKyBiL25ldC9pcmRhL2lybGFwLmMKQEAgLTE2NSw3ICsxNjUsNyBAQAogCiAJaXJsYXBfYXBwbHlfZGVmYXVsdF9jb25uZWN0aW9uX3BhcmFtZXRlcnMoc2VsZik7CiAKLQlzZWxmLT5OMyA9IDM7IC8qICMgY29ubmVjdGlvbnMgYXR0ZW10cyB0byB0cnkgYmVmb3JlIGdpdmluZyB1cCAqLworCXNlbGYtPk4zID0gMzsgLyogIyBjb25uZWN0aW9ucyBhdHRlbXB0cyB0byB0cnkgYmVmb3JlIGdpdmluZyB1cCAqLwogCiAJc2VsZi0+c3RhdGUgPSBMQVBfTkRNOwogCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxhcF9ldmVudC5jIGIvbmV0L2lyZGEvaXJsYXBfZXZlbnQuYwppbmRleCBkNDM0Yzg4Li5iYjQ3MDIxIDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxhcF9ldmVudC5jCisrKyBiL25ldC9pcmRhL2lybGFwX2V2ZW50LmMKQEAgLTcwOCw3ICs3MDgsNyBAQAogCiAJCQkJc2VsZi0+ZnJhbWVfc2VudCA9IFRSVUU7CiAJCQl9Ci0JCQkvKiBSZWFkanVzdCBvdXIgdGltZXIgdG8gYWNjb21vZGF0ZSBkZXZpY2VzCisJCQkvKiBSZWFkanVzdCBvdXIgdGltZXIgdG8gYWNjb21tb2RhdGUgZGV2aWNlcwogCQkJICogZG9pbmcgZmFzdGVyIG9yIHNsb3dlciBkaXNjb3ZlcnkgdGhhbiB1cy4uLgogCQkJICogSmVhbiBJSSAqLwogCQkJaXJsYXBfc3RhcnRfcXVlcnlfdGltZXIoc2VsZiwgaW5mby0+UywgaW5mby0+cyk7CkBAIC05MzEsNyArOTMxLDcgQEAKIAkJaXJsYXBfc2VuZF9ycl9mcmFtZShzZWxmLCBDTURfRlJBTUUpOwogCiAJCS8qIFRoZSB0aW1lciBpcyBzZXQgdG8gaGFsZiB0aGUgbm9ybWFsIHRpbWVyIHRvIHF1aWNrbHkKLQkJICogZGV0ZWN0IGEgZmFpbHVyZSB0byBuZWdvY2lhdGUgdGhlIG5ldyBjb25uZWN0aW9uCisJCSAqIGRldGVjdCBhIGZhaWx1cmUgdG8gbmVnb3RpYXRlIHRoZSBuZXcgY29ubmVjdGlvbgogCQkgKiBwYXJhbWV0ZXJzLiBJckxBUCA2LjExLjMuMiwgbm90ZSAzLgogCQkgKiBOb3RlIHRoYXQgY3VycmVudGx5IHdlIGRvbid0IHByb2Nlc3MgdGhpcyBmYWlsdXJlCiAJCSAqIHByb3Blcmx5LCBhcyB3ZSBzaG91bGQgZG8gYSBxdWljayBkaXNjb25uZWN0LgpAQCAtMTA1Miw3ICsxMDUyLDcgQEAKIAkJCQlyZXR1cm4gLUVQUk9UTzsKIAkJCX0KIAotCQkJLyogU3Vic3RyYWN0IHNwYWNlIHVzZWQgYnkgdGhpcyBza2IgKi8KKwkJCS8qIFN1YnRyYWN0IHNwYWNlIHVzZWQgYnkgdGhpcyBza2IgKi8KIAkJCXNlbGYtPmJ5dGVzX2xlZnQgLT0gc2tiLT5sZW47CiAjZWxzZQkvKiBDT05GSUdfSVJEQV9EWU5BTUlDX1dJTkRPVyAqLwogCQkJLyogV2luZG93IGhhcyBiZWVuIGFkanVzdGVkIGZvciB0aGUgbWF4IHBhY2tldApAQCAtMTgwOCw3ICsxODA4LDcgQEAKIAogCQkJCXJldHVybiAtRVBST1RPOyAvKiBUcnkgYWdhaW4gbGF0ZXIgKi8KIAkJCX0KLQkJCS8qIFN1YnN0cmFjdCBzcGFjZSB1c2VkIGJ5IHRoaXMgc2tiICovCisJCQkvKiBTdWJ0cmFjdCBzcGFjZSB1c2VkIGJ5IHRoaXMgc2tiICovCiAJCQlzZWxmLT5ieXRlc19sZWZ0IC09IHNrYi0+bGVuOwogI2Vsc2UJLyogQ09ORklHX0lSREFfRFlOQU1JQ19XSU5ET1cgKi8KIAkJCS8qIFdpbmRvdyBoYXMgYmVlbiBhZGp1c3RlZCBmb3IgdGhlIG1heCBwYWNrZXQKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybGFwX2ZyYW1lLmMgYi9uZXQvaXJkYS9pcmxhcF9mcmFtZS5jCmluZGV4IDY4ODIyMmMuLjhjMDA0MTYgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybGFwX2ZyYW1lLmMKKysrIGIvbmV0L2lyZGEvaXJsYXBfZnJhbWUuYwpAQCAtODQ4LDcgKzg0OCw3IEBACiAJICogdGhvdWdoIElyTEFQIGlzIGN1cnJlbnRseSBzZW5kaW5nIHRoZSAqbGFzdCogZnJhbWUgb2YgdGhlCiAJICogdHgtd2luZG93LCB0aGUgZHJpdmVyIG1vc3QgbGlrZWx5IGhhcyBvbmx5IGp1c3Qgc3RhcnRlZAogCSAqIHNlbmRpbmcgdGhlICpmaXJzdCogZnJhbWUgb2YgdGhlIHNhbWUgdHgtd2luZG93LgotCSAqIEkuZS4gd2UgYXJlIGFsd2F5cyBhdCB0aGUgdmVyeSBiZWdpbmluZyBvZiBvciBUeCB3aW5kb3cuCisJICogSS5lLiB3ZSBhcmUgYWx3YXlzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBvciBUeCB3aW5kb3cuCiAJICogTm93LCB3ZSBhcmUgc3VwcG9zZWQgdG8gc2V0IHRoZSBmaW5hbCB0aW1lciBmcm9tIHRoZSBlbmQKIAkgKiBvZiBvdXIgdHgtd2luZG93IHRvIGxldCB0aGUgb3RoZXIgcGVlciByZXBseS4gU28sIHdlIG5lZWQKIAkgKiB0byBhZGQgZXh0cmEgdGltZSB0byBjb21wZW5zYXRlIGZvciB0aGUgZmFjdCB0aGF0IHdlCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxtcF9ldmVudC5jIGIvbmV0L2lyZGEvaXJsbXBfZXZlbnQuYwppbmRleCBjMWZiNWRiLi45NTA1YTdkIDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxtcF9ldmVudC5jCisrKyBiL25ldC9pcmRhL2lybG1wX2V2ZW50LmMKQEAgLTQ5OCw3ICs0OTgsNyBAQAogCXN3aXRjaCAoZXZlbnQpIHsKICNpZmRlZiBDT05GSUdfSVJEQV9VTFRSQQogCWNhc2UgTE1fVURBVEFfSU5ESUNBVElPTjoKLQkJLyogVGhpcyBpcyBtb3N0IGJpenphcmUuIFRob3NlIHBhY2tldHMgYXJlICBha2EgdW5yZWxpYWJsZQorCQkvKiBUaGlzIGlzIG1vc3QgYml6YXJyZS4gVGhvc2UgcGFja2V0cyBhcmUgIGFrYSB1bnJlbGlhYmxlCiAJCSAqIGNvbm5lY3RlZCwgYWthIElyTFBUIG9yIFNPQ0tfREdSQU0vSVJEQVBST1RPX1VOSVREQVRBLgogCQkgKiBXaHkgZG8gd2UgcGFzcyB0aGVtIGFzIFVsdHJhID8/PyBKZWFuIElJICovCiAJCWlybG1wX2Nvbm5sZXNzX2RhdGFfaW5kaWNhdGlvbihzZWxmLCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJuZXQvaXJuZXQuaCBiL25ldC9pcmRhL2lybmV0L2lybmV0LmgKaW5kZXggMGQ4MmZmNS4uOTc5ZWNiMiAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJuZXQvaXJuZXQuaAorKysgYi9uZXQvaXJkYS9pcm5ldC9pcm5ldC5oCkBAIC03Myw3ICs3Myw3IEBACiAgKiBJbmZpbml0ZSB0aGFua3MgdG8gdGhvc2UgYnJhdmUgc291bHMgZm9yIHByb3ZpZGluZyB0aGUgaW5mcmFzdHJ1Y3R1cmUKICAqIHVwb24gd2hpY2ggSXJORVQgaXMgYnVpbHQuCiAgKgotICogVGhhbmtzIHRvIGFsbCBteSBjb2xsZWd1ZXMgaW4gSFAgZm9yIGhlbHBpbmcgbWUuIEluIHBhcnRpY3VsYXIsCisgKiBUaGFua3MgdG8gYWxsIG15IGNvbGxlYWd1ZXMgaW4gSFAgZm9yIGhlbHBpbmcgbWUuIEluIHBhcnRpY3VsYXIsCiAgKiB0aGFua3MgdG8gU2FsaWwgUHJhZGhhbiBhbmQgQmlsbCBTZXJyYSBmb3IgVzJrIHRlc3RpbmcuLi4KICAqIFRoYW5rcyB0byBMdWl6IE1hZ2FsaGFlcyBmb3IgaXJuZXRkIGFuZCBtdWNoIHRlc3RpbmcuLi4KICAqCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcnF1ZXVlLmMgYi9uZXQvaXJkYS9pcnF1ZXVlLmMKaW5kZXggODQ5YWFmMC4uOTcxNWU2ZSAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJxdWV1ZS5jCisrKyBiL25ldC9pcmRhL2lycXVldWUuYwpAQCAtNDAsNyArNDAsNyBAQAogICoJbyB0aGUgaGFzaCBmdW5jdGlvbiBmb3IgaW50cyBpcyBwYXRoZXRpYyAoYnV0IGNvdWxkIGJlIGNoYW5nZWQpCiAgKglvIGxvY2tpbmcgaXMgc29tZXRpbWUgc3VzcGljaW91cyAoZXNwZWNpYWxseSBkdXJpbmcgZW51bWVyYXRpb24pCiAgKglvIG1vc3QgdXNlcnMgaGF2ZSBvbmx5IGEgZmV3IGVsZW1lbnRzICg9PSBvdmVyaGVhZCkKLSAqCW8gbW9zdCB1c2VycyBuZXZlciB1c2Ugc2VhY2gsIHNvIGRvbid0IGJlbmVmaXQgZnJvbSBoYXNoaW5nCisgKglvIG1vc3QgdXNlcnMgbmV2ZXIgdXNlIHNlYXJjaCwgc28gZG9uJ3QgYmVuZWZpdCBmcm9tIGhhc2hpbmcKICAqIFByb2JsZW0gYWxyZWFkeSBmaXhlZCA6CiAgKglvIG5vdCA2NCBiaXQgY29tcGxpYW50IChtb3N0IHVzZXJzIGRvIGhhc2h2ID0gKGludCkgc2VsZikKICAqCW8gaGFzaGJpbl9yZW1vdmUoKSBpcyBicm9rZW4gPT4gdXNlIGhhc2hiaW5fcmVtb3ZlX3RoaXMoKQpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJ0dHAuYyBiL25ldC9pcmRhL2lydHRwLmMKaW5kZXggZjYwNTRmOS4uOWQ5YWY0NiAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJ0dHAuYworKysgYi9uZXQvaXJkYS9pcnR0cC5jCkBAIC0xMTkzLDcgKzExOTMsNyBAQAogLyoKICAqIEZ1bmN0aW9uIGlydHRwX2Nvbm5lY3RfY29uZmlybSAoaGFuZGxlLCBxb3MsIHNrYikKICAqCi0gKiAgICBTZXZpY2UgdXNlciBjb25maXJtcyBUU0FQIGNvbm5lY3Rpb24gd2l0aCBwZWVyLgorICogICAgU2VydmljZSB1c2VyIGNvbmZpcm1zIFRTQVAgY29ubmVjdGlvbiB3aXRoIHBlZXIuCiAgKgogICovCiBzdGF0aWMgdm9pZCBpcnR0cF9jb25uZWN0X2NvbmZpcm0odm9pZCAqaW5zdGFuY2UsIHZvaWQgKnNhcCwKZGlmZiAtLWdpdCBhL25ldC9pcmRhL3Fvcy5jIGIvbmV0L2lyZGEvcW9zLmMKaW5kZXggMmIwMDk3NC4uMWI1MWJjZiAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvcW9zLmMKKysrIGIvbmV0L2lyZGEvcW9zLmMKQEAgLTM5LDE2ICszOSwxNiBAQAogI2luY2x1ZGUgPG5ldC9pcmRhL2lybGFwX2ZyYW1lLmg+CiAKIC8qCi0gKiBNYXhpbXVtIHZhbHVlcyBvZiB0aGUgYmF1ZCByYXRlIHdlIG5lZ29jaWF0ZSB3aXRoIHRoZSBvdGhlciBlbmQuCisgKiBNYXhpbXVtIHZhbHVlcyBvZiB0aGUgYmF1ZCByYXRlIHdlIG5lZ290aWF0ZSB3aXRoIHRoZSBvdGhlciBlbmQuCiAgKiBNb3N0IG9mdGVuLCB5b3UgZG9uJ3QgaGF2ZSB0byBjaGFuZ2UgdGhhdCwgYmVjYXVzZSBMaW51eC1JckRBIHdpbGwKICAqIHVzZSB0aGUgbWF4aW11bSBvZmZlcmVkIGJ5IHRoZSBsaW5rIGxheWVyLCB3aGljaCB1c3VhbGx5IHdvcmtzIGZpbmUuCiAgKiBJbiBzb21lIHZlcnkgcmFyZSBjYXNlcywgeW91IG1heSB3YW50IHRvIGxpbWl0IGl0IHRvIGxvd2VyIHNwZWVkcy4uLgogICovCiBpbnQgc3lzY3RsX21heF9iYXVkX3JhdGUgPSAxNjAwMDAwMDsKIC8qCi0gKiBNYXhpbXVtIHZhbHVlIG9mIHRoZSBsYXAgZGlzY29ubmVjdCB0aW1lciB3ZSBuZWdvY2lhdGUgd2l0aCB0aGUgb3RoZXIgZW5kLgorICogTWF4aW11bSB2YWx1ZSBvZiB0aGUgbGFwIGRpc2Nvbm5lY3QgdGltZXIgd2UgbmVnb3RpYXRlIHdpdGggdGhlIG90aGVyIGVuZC4KICAqIE1vc3Qgb2Z0ZW4sIHRoZSB2YWx1ZSBiZWxvdyByZXByZXNlbnQgdGhlIGJlc3QgY29tcHJvbWlzZSwgYnV0IHNvbWUgdXNlcgotICogbWF5IHdhbnQgdG8ga2VlcCB0aGUgTEFQIGFsaXZlIGxvbmd1ZXIgb3Igc2hvcnRlciBpbiBjYXNlIG9mIGxpbmsgZmFpbHVyZS4KKyAqIG1heSB3YW50IHRvIGtlZXAgdGhlIExBUCBhbGl2ZSBsb25nZXIgb3Igc2hvcnRlciBpbiBjYXNlIG9mIGxpbmsgZmFpbHVyZS4KICAqIFJlbWVtYmVyIHRoYXQgdGhlIHRocmVzaG9sZCB0aW1lIChlYXJseSB3YXJuaW5nKSBpcyBmaXhlZCB0byAzcy4uLgogICovCiBpbnQgc3lzY3RsX21heF9ub3JlcGx5X3RpbWUgPSAxMjsKQEAgLTQxMSw3ICs0MTEsNyBAQAogCSAqIEZpeCB0eCBkYXRhIHNpemUgYWNjb3JkaW5nIHRvIHVzZXIgbGltaXRzIC0gSmVhbiBJSQogCSAqLwogCWlmIChxb3MtPmRhdGFfc2l6ZS52YWx1ZSA+IHN5c2N0bF9tYXhfdHhfZGF0YV9zaXplKQotCQkvKiBBbGxvdyBub24gZGlzY3JldGUgYWRqdXN0ZW1lbnQgdG8gYXZvaWQgbG9vc2luZyBjYXBhY2l0eSAqLworCQkvKiBBbGxvdyBub24gZGlzY3JldGUgYWRqdXN0ZW1lbnQgdG8gYXZvaWQgbG9zaW5nIGNhcGFjaXR5ICovCiAJCXFvcy0+ZGF0YV9zaXplLnZhbHVlID0gc3lzY3RsX21heF90eF9kYXRhX3NpemU7CiAJLyoKIAkgKiBPdmVycmlkZSBUeCB3aW5kb3cgaWYgdXNlciByZXF1ZXN0IGl0LiAtIEplYW4gSUkKZGlmZiAtLWdpdCBhL25ldC9pcmRhL3RpbWVyLmMgYi9uZXQvaXJkYS90aW1lci5jCmluZGV4IDAzMzViYTAuLmY0MThjYjIgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL3RpbWVyLmMKKysrIGIvbmV0L2lyZGEvdGltZXIuYwpAQCAtNTksNyArNTksNyBAQAogCSAqIHNsb3QgdGltZSwgcGx1cyBhZGQgc29tZSBleHRyYSB0aW1lIHRvIHByb3Blcmx5IHJlY2VpdmUgdGhlIGxhc3QKIAkgKiBkaXNjb3ZlcnkgcGFja2V0ICh3aGljaCBpcyBsb25nZXIgZHVlIHRvIGV4dHJhIGRpc2NvdmVyeSBpbmZvKSwKIAkgKiB0byBhdm9pZCBtZXNzaW5nIHdpdGggZm9yIGluY29tbWluZyBjb25uZWN0aW9ucyByZXF1ZXN0cyBhbmQKLQkgKiB0byBhY2NvbW9kYXRlIGRldmljZXMgdGhhdCBwZXJmb3JtIGRpc2NvdmVyeSBzbG93ZXIgdGhhbiB1cy4KKwkgKiB0byBhY2NvbW1vZGF0ZSBkZXZpY2VzIHRoYXQgcGVyZm9ybSBkaXNjb3Zlcnkgc2xvd2VyIHRoYW4gdXMuCiAJICogSmVhbiBJSSAqLwogCXRpbWVvdXQgPSAoKHN5c2N0bF9zbG90X3RpbWVvdXQgKiBIWiAvIDEwMDApICogKFMgLSBzKQogCQkgICArIFhJREVYVFJBX1RJTUVPVVQgKyBTTUFMTEJVU1lfVElNRU9VVCk7CmRpZmYgLS1naXQgYS9uZXQvaXVjdi9hZl9pdWN2LmMgYi9uZXQvaXVjdi9hZl9pdWN2LmMKaW5kZXggOTYzN2U0NS4uOTg2YjJhNSAxMDA2NDQKLS0tIGEvbmV0L2l1Y3YvYWZfaXVjdi5jCisrKyBiL25ldC9pdWN2L2FmX2l1Y3YuYwpAQCAtMjUwLDcgKzI1MCw3IEBACiAgKglQUk1EQVRBWzAuLjZdCXNvY2tldCBkYXRhIChtYXggNyBieXRlcyk7CiAgKglQUk1EQVRBWzddCXNvY2tldCBkYXRhIGxlbmd0aCB2YWx1ZSAobGVuIGlzIDB4ZmYgLSBQUk1EQVRBWzddKQogICoKLSAqIFRoZSBzb2NrZXQgZGF0YSBsZW5ndGggaXMgY29tcHV0ZWQgYnkgc3Vic3RyYWN0aW5nIHRoZSBzb2NrZXQgZGF0YSBsZW5ndGgKKyAqIFRoZSBzb2NrZXQgZGF0YSBsZW5ndGggaXMgY29tcHV0ZWQgYnkgc3VidHJhY3RpbmcgdGhlIHNvY2tldCBkYXRhIGxlbmd0aAogICogdmFsdWUgZnJvbSAweEZGLgogICogSWYgdGhlIHNvY2tldCBkYXRhIGxlbiBpcyBncmVhdGVyIDcsIHRoZW4gUFJNREFUQSBjYW4gYmUgdXNlZCBmb3Igc3BlY2lhbAogICogbm90aWZpY2F0aW9ucyAoc2VlIGl1Y3Zfc29ja19zaHV0ZG93bik7IGFuZCBmdXJ0aGVyLApkaWZmIC0tZ2l0IGEvbmV0L2l1Y3YvaXVjdi5jIGIvbmV0L2l1Y3YvaXVjdi5jCmluZGV4IDFlZTVkYWIuLjhmMTU2YmQgMTAwNjQ0Ci0tLSBhL25ldC9pdWN2L2l1Y3YuYworKysgYi9uZXQvaXVjdi9pdWN2LmMKQEAgLTczNSw3ICs3MzUsNyBAQAogCXN0cnVjdCBpdWN2X2lycV9saXN0ICpwLCAqbjsKIAogCS8qCi0JICogV2hlbiBhIHBhdGggaXMgc2V2ZXJlZCwgdGhlIHBhdGhpZCBjYW4gYmUgcmV1c2VkIGltbWVkaWF0bHkKKwkgKiBXaGVuIGEgcGF0aCBpcyBzZXZlcmVkLCB0aGUgcGF0aGlkIGNhbiBiZSByZXVzZWQgaW1tZWRpYXRlbHkKIAkgKiBvbiBhIGl1Y3YgY29ubmVjdCBvciBhIGNvbm5lY3Rpb24gcGVuZGluZyBpbnRlcnJ1cHQuIFJlbW92ZQogCSAqIGFsbCBlbnRyaWVzIGZyb20gdGhlIHRhc2sgcXVldWUgdGhhdCByZWZlciB0byBhIHN0YWxlIHBhdGhpZAogCSAqIChpdWN2X3BhdGhfdGFibGVbaXhdID09IE5VTEwpLiBPbmx5IHRoZW4gZG8gdGhlIGl1Y3YgY29ubmVjdApAQCAtODA3LDcgKzgwNyw3IEBACiAJc3Bpbl9sb2NrX2JoKCZpdWN2X3RhYmxlX2xvY2spOwogCS8qIFJlbW92ZSBoYW5kbGVyIGZyb20gdGhlIGl1Y3ZfaGFuZGxlcl9saXN0LiAqLwogCWxpc3RfZGVsX2luaXQoJmhhbmRsZXItPmxpc3QpOwotCS8qIFNldmVyIGFsbCBwYXRoaWRzIHN0aWxsIHJlZmVyaW5nIHRvIHRoZSBoYW5kbGVyLiAqLworCS8qIFNldmVyIGFsbCBwYXRoaWRzIHN0aWxsIHJlZmVycmluZyB0byB0aGUgaGFuZGxlci4gKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocCwgbiwgJmhhbmRsZXItPnBhdGhzLCBsaXN0KSB7CiAJCWl1Y3Zfc2V2ZXJfcGF0aGlkKHAtPnBhdGhpZCwgTlVMTCk7CiAJCWl1Y3ZfcGF0aF90YWJsZVtwLT5wYXRoaWRdID0gTlVMTDsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKaW5kZXggYTQwNDAxNy4uYzE4Mzk2YyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKQEAgLTk3LDcgKzk3LDcgQEAKIAlzaXplX3Qgc3VwcF9yYXRlc19sZW47CiAKIAkvKgotCSAqIER1cmluZyBhc3NvY2F0aW9uLCB3ZSBzYXZlIGFuIEVSUCB2YWx1ZSBmcm9tIGEgcHJvYmUgcmVzcG9uc2Ugc28KKwkgKiBEdXJpbmcgYXNzb2NpYXRpb24sIHdlIHNhdmUgYW4gRVJQIHZhbHVlIGZyb20gYSBwcm9iZSByZXNwb25zZSBzbwogCSAqIHRoYXQgd2UgY2FuIGZlZWQgRVJQIGluZm8gdG8gdGhlIGRyaXZlciB3aGVuIGhhbmRsaW5nIHRoZQogCSAqIGFzc29jaWF0aW9uIGNvbXBsZXRlcy4gdGhlc2UgZmllbGRzIHByb2JhYmx5IHdvbid0IGJlIHVwLXRvLWRhdGUKIAkgKiBvdGhlcndpc2UsIHlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHVzZSB0aGVtLgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jIGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jCmluZGV4IDhkNjViNDcuLjMzNmNhOWQgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYworKysgYi9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMKQEAgLTYyOCw3ICs2MjgsNyBAQAogICoKICAqIEBtcGF0aDogbWVzaCBwYXRoIHdob3NlIHF1ZXVlIGhhcyB0byBiZSBmcmVlZAogICoKLSAqIExvY2tpbmc6IHRoZSBmdW5jdGlvbiBtdXN0IG1lIGNhbGxlZCB3aXRoaW5nIGEgcmN1X3JlYWRfbG9jayByZWdpb24KKyAqIExvY2tpbmc6IHRoZSBmdW5jdGlvbiBtdXN0IG1lIGNhbGxlZCB3aXRoaW4gYSByY3VfcmVhZF9sb2NrIHJlZ2lvbgogICovCiB2b2lkIG1lc2hfcGF0aF9mbHVzaF9wZW5kaW5nKHN0cnVjdCBtZXNoX3BhdGggKm1wYXRoKQogewpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYyBiL25ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMKaW5kZXggZGJkZWJlZGEuLmMwNmFhM2EgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMKKysrIGIvbmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYwpAQCAtMjU5LDcgKzI1OSw3IEBACiAJCX0KIAl9CiAKLQkvKiB0cnkgdG8gc2FtcGxlIHVwIHRvIGhhbGYgb2YgdGhlIGF2YWlsYmxlIHJhdGVzIGR1cmluZyBlYWNoIGludGVydmFsICovCisJLyogdHJ5IHRvIHNhbXBsZSB1cCB0byBoYWxmIG9mIHRoZSBhdmFpbGFibGUgcmF0ZXMgZHVyaW5nIGVhY2ggaW50ZXJ2YWwgKi8KIAltaS0+c2FtcGxlX2NvdW50ICo9IDQ7CiAKIAljdXJfcHJvYiA9IDA7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvcmM4MDIxMV9waWQuaCBiL25ldC9tYWM4MDIxMS9yYzgwMjExX3BpZC5oCmluZGV4IDY1MTBmOGUuLjE5MTExYzcgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9yYzgwMjExX3BpZC5oCisrKyBiL25ldC9tYWM4MDIxMS9yYzgwMjExX3BpZC5oCkBAIC03Nyw3ICs3Nyw3IEBACiB9OwogCiBzdHJ1Y3QgcmNfcGlkX2V2ZW50IHsKLQkvKiBUaGUgdGltZSB3aGVuIHRoZSBldmVudCBvY2N1cmVkICovCisJLyogVGhlIHRpbWUgd2hlbiB0aGUgZXZlbnQgb2NjdXJyZWQgKi8KIAl1bnNpZ25lZCBsb25nIHRpbWVzdGFtcDsKIAogCS8qIEV2ZW50IElEIG51bWJlciAqLwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguYwppbmRleCBhYTVjYzM3Li5jNWQ0NTMwIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvcnguYworKysgYi9uZXQvbWFjODAyMTEvcnguYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAgKiBzcGVjcyB3ZXJlIHNhbmUgZW5vdWdoIHRoaXMgdGltZSBhcm91bmQgdG8gcmVxdWlyZSBwYWRkaW5nIGVhY2ggQS1NU0RVCiAgKiBzdWJmcmFtZSB0byBhIGxlbmd0aCB0aGF0IGlzIGEgbXVsdGlwbGUgb2YgZm91ci4KICAqCi0gKiBQYWRkaW5nIGxpa2UgQXRoZXJvcyBoYXJkd2FyZSBhZGRzIHdoaWNoIGlzIGluYmV0d2VlbiB0aGUgODAyLjExIGhlYWRlciBhbmQKKyAqIFBhZGRpbmcgbGlrZSBBdGhlcm9zIGhhcmR3YXJlIGFkZHMgd2hpY2ggaXMgYmV0d2VlbiB0aGUgODAyLjExIGhlYWRlciBhbmQKICAqIHRoZSBwYXlsb2FkIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZSBkcml2ZXIgaXMgcmVxdWlyZWQgdG8gbW92ZSB0aGUgODAyLjExCiAgKiBoZWFkZXIgdG8gYmUgZGlyZWN0bHkgaW4gZnJvbnQgb2YgdGhlIHBheWxvYWQgaW4gdGhhdCBjYXNlLgogICovCkBAIC0yNTQxLDcgKzI1NDEsNiBAQAogCQkgKiBzYW1lIFRJRCBmcm9tIHRoZSBzYW1lIHN0YXRpb24KIAkJICovCiAJCXJ4LT5za2IgPSBza2I7Ci0JCXJ4LT5mbGFncyA9IDA7CiAKIAkJQ0FMTF9SWEgoaWVlZTgwMjExX3J4X2hfZGVjcnlwdCkKIAkJQ0FMTF9SWEgoaWVlZTgwMjExX3J4X2hfY2hlY2tfbW9yZV9kYXRhKQpAQCAtMjYxMiw2ICsyNjExLDcgQEAKIAkJLnNkYXRhID0gc3RhLT5zZGF0YSwKIAkJLmxvY2FsID0gc3RhLT5sb2NhbCwKIAkJLnF1ZXVlID0gdGlkLAorCQkuZmxhZ3MgPSAwLAogCX07CiAJc3RydWN0IHRpZF9hbXBkdV9yeCAqdGlkX2FnZ19yeDsKIApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uYwppbmRleCBkMDMxMWEzLi4xM2U4YzMwIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uYworKysgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uYwpAQCAtNDcsOSArNDcsOSBAQAogICogU3RhdGlvbiBlbnRyaWVzIGFyZSBhZGRlZCBieSBtYWM4MDIxMSB3aGVuIHlvdSBlc3RhYmxpc2ggYSBsaW5rIHdpdGggYQogICogcGVlci4gVGhpcyBtZWFucyBkaWZmZXJlbnQgdGhpbmdzIGZvciB0aGUgZGlmZmVyZW50IHR5cGUgb2YgaW50ZXJmYWNlcwogICogd2Ugc3VwcG9ydC4gRm9yIGEgcmVndWxhciBzdGF0aW9uIHRoaXMgbWVhbiB3ZSBhZGQgdGhlIEFQIHN0YSB3aGVuIHdlCi0gKiByZWNlaXZlIGFuIGFzc29jYXRpb24gcmVzcG9uc2UgZnJvbSB0aGUgQVAuIEZvciBJQlNTIHRoaXMgb2NjdXJzIHdoZW4KKyAqIHJlY2VpdmUgYW4gYXNzb2NpYXRpb24gcmVzcG9uc2UgZnJvbSB0aGUgQVAuIEZvciBJQlNTIHRoaXMgb2NjdXJzIHdoZW4KICAqIGdldCB0byBrbm93IGFib3V0IGEgcGVlciBvbiB0aGUgc2FtZSBJQlNTLiBGb3IgV0RTIHdlIGFkZCB0aGUgc3RhIGZvcgotICogdGhlIHBlZXIgaW1lZGlhdGVseSB1cG9uIGRldmljZSBvcGVuLiBXaGVuIHVzaW5nIEFQIG1vZGUgd2UgYWRkIHN0YXRpb25zCisgKiB0aGUgcGVlciBpbW1lZGlhdGVseSB1cG9uIGRldmljZSBvcGVuLiBXaGVuIHVzaW5nIEFQIG1vZGUgd2UgYWRkIHN0YXRpb25zCiAgKiBmb3IgZWFjaCByZXNwZWN0aXZlIHN0YXRpb24gdXBvbiByZXF1ZXN0IGZyb20gdXNlcnNwYWNlIHRocm91Z2ggbmw4MDIxMS4KICAqCiAgKiBJbiBvcmRlciB0byByZW1vdmUgYSBTVEEgaW5mbyBzdHJ1Y3R1cmUsIHZhcmlvdXMgc3RhX2luZm9fZGVzdHJveV8qKCkKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKaW5kZXggNTc2ODExNC4uYjJmOTU5NiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKQEAgLTE3Myw3ICsxNzMsNyBAQAogLyoqCiAgKiBlbnVtIHBsaW5rX3N0YXRlIC0gc3RhdGUgb2YgYSBtZXNoIHBlZXIgbGluayBmaW5pdGUgc3RhdGUgbWFjaGluZQogICoKLSAqIEBQTElOS19MSVNURU46IGluaXRpYWwgc3RhdGUsIGNvbnNpZGVyZWQgdGhlIGltcGxpY2l0IHN0YXRlIG9mIG5vbiBleGlzdGFudAorICogQFBMSU5LX0xJU1RFTjogaW5pdGlhbCBzdGF0ZSwgY29uc2lkZXJlZCB0aGUgaW1wbGljaXQgc3RhdGUgb2Ygbm9uIGV4aXN0ZW50CiAgKiAJbWVzaCBwZWVyIGxpbmtzCiAgKiBAUExJTktfT1BOX1NOVDogbWVzaCBwbGluayBvcGVuIGZyYW1lIGhhcyBiZWVuIHNlbnQgdG8gdGhpcyBtZXNoIHBlZXIKICAqIEBQTElOS19PUE5fUkNWRDogbWVzaCBwbGluayBvcGVuIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkIGZyb20gdGhpcyBtZXNoIHBlZXIKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvS2NvbmZpZyBiL25ldC9uZXRmaWx0ZXIvS2NvbmZpZwppbmRleCBjM2Y5ODhhLi4zMmJmZjZkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL0tjb25maWcKKysrIGIvbmV0L25ldGZpbHRlci9LY29uZmlnCkBAIC02NTIsNyArNjUyLDYgQEAKIGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQUREUlRZUEUKIAl0cmlzdGF0ZSAnImFkZHJ0eXBlIiBhZGRyZXNzIHR5cGUgbWF0Y2ggc3VwcG9ydCcKIAlkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRAotCWRlcGVuZHMgb24gKElQVjYgfHwgSVBWNj1uKQogCS0tLWhlbHAtLS0KIAkgIFRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gbWF0Y2ggd2hhdCByb3V0aW5nIHRoaW5rcyBvZiBhbiBhZGRyZXNzLAogCSAgZWcuIFVOSUNBU1QsIExPQ0FMLCBCUk9BRENBU1QsIC4uLgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYwppbmRleCBiY2E5Njk5Li5hMTEzZmYwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYworKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfaXAuYwpAQCAtMzM4LDggKzMzOCw3IEBACiAJTkxBX1BVVF9JUEFERFI0KHNrYiwgSVBTRVRfQVRUUl9JUF9UTywgaHRvbmwobWFwLT5sYXN0X2lwKSk7CiAJaWYgKG1hcC0+bmV0bWFzayAhPSAzMikKIAkJTkxBX1BVVF9VOChza2IsIElQU0VUX0FUVFJfTkVUTUFTSywgbWFwLT5uZXRtYXNrKTsKLQlOTEFfUFVUX05FVDMyKHNrYiwgSVBTRVRfQVRUUl9SRUZFUkVOQ0VTLAotCQkgICAgICBodG9ubChhdG9taWNfcmVhZCgmc2V0LT5yZWYpIC0gMSkpOworCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX1JFRkVSRU5DRVMsIGh0b25sKHNldC0+cmVmIC0gMSkpOwogCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX01FTVNJWkUsCiAJCSAgICAgIGh0b25sKHNpemVvZigqbWFwKSArIG1hcC0+bWVtc2l6ZSkpOwogCWlmICh3aXRoX3RpbWVvdXQobWFwLT50aW1lb3V0KSkKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9pcG1hYy5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMKaW5kZXggNWU3OTAxNy4uMDBhMzMyNCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMKKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX2lwbWFjLmMKQEAgLTQzNCw4ICs0MzQsNyBAQAogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAlOTEFfUFVUX0lQQUREUjQoc2tiLCBJUFNFVF9BVFRSX0lQLCBodG9ubChtYXAtPmZpcnN0X2lwKSk7CiAJTkxBX1BVVF9JUEFERFI0KHNrYiwgSVBTRVRfQVRUUl9JUF9UTywgaHRvbmwobWFwLT5sYXN0X2lwKSk7Ci0JTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfUkVGRVJFTkNFUywKLQkJICAgICAgaHRvbmwoYXRvbWljX3JlYWQoJnNldC0+cmVmKSAtIDEpKTsKKwlOTEFfUFVUX05FVDMyKHNrYiwgSVBTRVRfQVRUUl9SRUZFUkVOQ0VTLCBodG9ubChzZXQtPnJlZiAtIDEpKTsKIAlOTEFfUFVUX05FVDMyKHNrYiwgSVBTRVRfQVRUUl9NRU1TSVpFLAogCQkgICAgICBodG9ubChzaXplb2YoKm1hcCkKIAkJCSAgICArIChtYXAtPmxhc3RfaXAgLSBtYXAtPmZpcnN0X2lwICsgMSkgKiBtYXAtPmRzaXplKSk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfYml0bWFwX3BvcnQuYwppbmRleCAxNjVmMDliLi42YjM4ZWI4IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9iaXRtYXBfcG9ydC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2JpdG1hcF9wb3J0LmMKQEAgLTMyMCw4ICszMjAsNyBAQAogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAlOTEFfUFVUX05FVDE2KHNrYiwgSVBTRVRfQVRUUl9QT1JULCBodG9ucyhtYXAtPmZpcnN0X3BvcnQpKTsKIAlOTEFfUFVUX05FVDE2KHNrYiwgSVBTRVRfQVRUUl9QT1JUX1RPLCBodG9ucyhtYXAtPmxhc3RfcG9ydCkpOwotCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX1JFRkVSRU5DRVMsCi0JCSAgICAgIGh0b25sKGF0b21pY19yZWFkKCZzZXQtPnJlZikgLSAxKSk7CisJTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfUkVGRVJFTkNFUywgaHRvbmwoc2V0LT5yZWYgLSAxKSk7CiAJTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfTUVNU0laRSwKIAkJICAgICAgaHRvbmwoc2l6ZW9mKCptYXApICsgbWFwLT5tZW1zaXplKSk7CiAJaWYgKHdpdGhfdGltZW91dChtYXAtPnRpbWVvdXQpKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jCmluZGV4IGQ2YjQ4MjMuLjkxNTJlNjkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYworKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMKQEAgLTI2LDYgKzI2LDcgQEAKIAogc3RhdGljIExJU1RfSEVBRChpcF9zZXRfdHlwZV9saXN0KTsJCS8qIGFsbCByZWdpc3RlcmVkIHNldCB0eXBlcyAqLwogc3RhdGljIERFRklORV9NVVRFWChpcF9zZXRfdHlwZV9tdXRleCk7CQkvKiBwcm90ZWN0cyBpcF9zZXRfdHlwZV9saXN0ICovCitzdGF0aWMgREVGSU5FX1JXTE9DSyhpcF9zZXRfcmVmX2xvY2spOwkJLyogcHJvdGVjdHMgdGhlIHNldCByZWZzICovCiAKIHN0YXRpYyBzdHJ1Y3QgaXBfc2V0ICoqaXBfc2V0X2xpc3Q7CQkvKiBhbGwgaW5kaXZpZHVhbCBzZXRzICovCiBzdGF0aWMgaXBfc2V0X2lkX3QgaXBfc2V0X21heCA9IENPTkZJR19JUF9TRVRfTUFYOyAvKiBtYXggbnVtYmVyIG9mIHNldHMgKi8KQEAgLTMwMSwxMyArMzAyLDE4IEBACiBzdGF0aWMgaW5saW5lIHZvaWQKIF9faXBfc2V0X2dldChpcF9zZXRfaWRfdCBpbmRleCkKIHsKLQlhdG9taWNfaW5jKCZpcF9zZXRfbGlzdFtpbmRleF0tPnJlZik7CisJd3JpdGVfbG9ja19iaCgmaXBfc2V0X3JlZl9sb2NrKTsKKwlpcF9zZXRfbGlzdFtpbmRleF0tPnJlZisrOworCXdyaXRlX3VubG9ja19iaCgmaXBfc2V0X3JlZl9sb2NrKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCiBfX2lwX3NldF9wdXQoaXBfc2V0X2lkX3QgaW5kZXgpCiB7Ci0JYXRvbWljX2RlYygmaXBfc2V0X2xpc3RbaW5kZXhdLT5yZWYpOworCXdyaXRlX2xvY2tfYmgoJmlwX3NldF9yZWZfbG9jayk7CisJQlVHX09OKGlwX3NldF9saXN0W2luZGV4XS0+cmVmID09IDApOworCWlwX3NldF9saXN0W2luZGV4XS0+cmVmLS07CisJd3JpdGVfdW5sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOwogfQogCiAvKgpAQCAtMzI0LDcgKzMzMCw3IEBACiAJc3RydWN0IGlwX3NldCAqc2V0ID0gaXBfc2V0X2xpc3RbaW5kZXhdOwogCWludCByZXQgPSAwOwogCi0JQlVHX09OKHNldCA9PSBOVUxMIHx8IGF0b21pY19yZWFkKCZzZXQtPnJlZikgPT0gMCk7CisJQlVHX09OKHNldCA9PSBOVUxMKTsKIAlwcl9kZWJ1Zygic2V0ICVzLCBpbmRleCAldVxuIiwgc2V0LT5uYW1lLCBpbmRleCk7CiAKIAlpZiAoZGltIDwgc2V0LT50eXBlLT5kaW1lbnNpb24gfHwKQEAgLTM1Niw3ICszNjIsNyBAQAogCXN0cnVjdCBpcF9zZXQgKnNldCA9IGlwX3NldF9saXN0W2luZGV4XTsKIAlpbnQgcmV0OwogCi0JQlVHX09OKHNldCA9PSBOVUxMIHx8IGF0b21pY19yZWFkKCZzZXQtPnJlZikgPT0gMCk7CisJQlVHX09OKHNldCA9PSBOVUxMKTsKIAlwcl9kZWJ1Zygic2V0ICVzLCBpbmRleCAldVxuIiwgc2V0LT5uYW1lLCBpbmRleCk7CiAKIAlpZiAoZGltIDwgc2V0LT50eXBlLT5kaW1lbnNpb24gfHwKQEAgLTM3OCw3ICszODQsNyBAQAogCXN0cnVjdCBpcF9zZXQgKnNldCA9IGlwX3NldF9saXN0W2luZGV4XTsKIAlpbnQgcmV0ID0gMDsKIAotCUJVR19PTihzZXQgPT0gTlVMTCB8fCBhdG9taWNfcmVhZCgmc2V0LT5yZWYpID09IDApOworCUJVR19PTihzZXQgPT0gTlVMTCk7CiAJcHJfZGVidWcoInNldCAlcywgaW5kZXggJXVcbiIsIHNldC0+bmFtZSwgaW5kZXgpOwogCiAJaWYgKGRpbSA8IHNldC0+dHlwZS0+ZGltZW5zaW9uIHx8CkBAIC0zOTcsNyArNDAzLDYgQEAKICAqIEZpbmQgc2V0IGJ5IG5hbWUsIHJlZmVyZW5jZSBpdCBvbmNlLiBUaGUgcmVmZXJlbmNlIG1ha2VzIHN1cmUgdGhlCiAgKiB0aGluZyBwb2ludGVkIHRvLCBkb2VzIG5vdCBnbyBhd2F5IHVuZGVyIG91ciBmZWV0LgogICoKLSAqIFRoZSBuZm5sIG11dGV4IG11c3QgYWxyZWFkeSBiZSBhY3RpdmF0ZWQuCiAgKi8KIGlwX3NldF9pZF90CiBpcF9zZXRfZ2V0X2J5bmFtZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgaXBfc2V0ICoqc2V0KQpAQCAtNDIzLDE1ICs0MjgsMTIgQEAKICAqIHJlZmVyZW5jZSBjb3VudCBieSAxLiBUaGUgY2FsbGVyIHNoYWxsIG5vdCBhc3N1bWUgdGhlIGluZGV4CiAgKiB0byBiZSB2YWxpZCwgYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgogICoKLSAqIFRoZSBuZm5sIG11dGV4IG11c3QgYWxyZWFkeSBiZSBhY3RpdmF0ZWQuCiAgKi8KIHZvaWQKIGlwX3NldF9wdXRfYnlpbmRleChpcF9zZXRfaWRfdCBpbmRleCkKIHsKLQlpZiAoaXBfc2V0X2xpc3RbaW5kZXhdICE9IE5VTEwpIHsKLQkJQlVHX09OKGF0b21pY19yZWFkKCZpcF9zZXRfbGlzdFtpbmRleF0tPnJlZikgPT0gMCk7CisJaWYgKGlwX3NldF9saXN0W2luZGV4XSAhPSBOVUxMKQogCQlfX2lwX3NldF9wdXQoaW5kZXgpOwotCX0KIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlwX3NldF9wdXRfYnlpbmRleCk7CiAKQEAgLTQ0MSw3ICs0NDMsNiBAQAogICogY2FuJ3QgYmUgZGVzdHJveWVkLiBUaGUgc2V0IGNhbm5vdCBiZSByZW5hbWVkIGR1ZSB0bwogICogdGhlIHJlZmVyZW5jaW5nIGVpdGhlci4KICAqCi0gKiBUaGUgbmZubCBtdXRleCBtdXN0IGFscmVhZHkgYmUgYWN0aXZhdGVkLgogICovCiBjb25zdCBjaGFyICoKIGlwX3NldF9uYW1lX2J5aW5kZXgoaXBfc2V0X2lkX3QgaW5kZXgpCkBAIC00NDksNyArNDUwLDcgQEAKIAljb25zdCBzdHJ1Y3QgaXBfc2V0ICpzZXQgPSBpcF9zZXRfbGlzdFtpbmRleF07CiAKIAlCVUdfT04oc2V0ID09IE5VTEwpOwotCUJVR19PTihhdG9taWNfcmVhZCgmc2V0LT5yZWYpID09IDApOworCUJVR19PTihzZXQtPnJlZiA9PSAwKTsKIAogCS8qIFJlZmVyZW5jZWQsIHNvIGl0J3Mgc2FmZSAqLwogCXJldHVybiBzZXQtPm5hbWU7CkBAIC01MTUsMTAgKzUxNiw3IEBACiBpcF9zZXRfbmZubF9wdXQoaXBfc2V0X2lkX3QgaW5kZXgpCiB7CiAJbmZubF9sb2NrKCk7Ci0JaWYgKGlwX3NldF9saXN0W2luZGV4XSAhPSBOVUxMKSB7Ci0JCUJVR19PTihhdG9taWNfcmVhZCgmaXBfc2V0X2xpc3RbaW5kZXhdLT5yZWYpID09IDApOwotCQlfX2lwX3NldF9wdXQoaW5kZXgpOwotCX0KKwlpcF9zZXRfcHV0X2J5aW5kZXgoaW5kZXgpOwogCW5mbmxfdW5sb2NrKCk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpcF9zZXRfbmZubF9wdXQpOwpAQCAtNTI2LDcgKzUyNCw3IEBACiAvKgogICogQ29tbXVuaWNhdGlvbiBwcm90b2NvbCB3aXRoIHVzZXJzcGFjZSBvdmVyIG5ldGxpbmsuCiAgKgotICogV2UgYWxyZWFkeSBsb2NrZWQgYnkgbmZubF9sb2NrLgorICogVGhlIGNvbW1hbmRzIGFyZSBzZXJpYWxpemVkIGJ5IHRoZSBuZm5sIG11dGV4LgogICovCiAKIHN0YXRpYyBpbmxpbmUgYm9vbApAQCAtNjU3LDcgKzY1NSw2IEBACiAJCXJldHVybiAtRU5PTUVNOwogCXJ3bG9ja19pbml0KCZzZXQtPmxvY2spOwogCXN0cmxjcHkoc2V0LT5uYW1lLCBuYW1lLCBJUFNFVF9NQVhOQU1FTEVOKTsKLQlhdG9taWNfc2V0KCZzZXQtPnJlZiwgMCk7CiAJc2V0LT5mYW1pbHkgPSBmYW1pbHk7CiAKIAkvKgpAQCAtNjkwLDggKzY4Nyw4IEBACiAKIAkvKgogCSAqIEhlcmUsIHdlIGhhdmUgYSB2YWxpZCwgY29uc3RydWN0ZWQgc2V0IGFuZCB3ZSBhcmUgcHJvdGVjdGVkCi0JICogYnkgbmZubF9sb2NrLiBGaW5kIHRoZSBmaXJzdCBmcmVlIGluZGV4IGluIGlwX3NldF9saXN0IGFuZAotCSAqIGNoZWNrIGNsYXNoaW5nLgorCSAqIGJ5IHRoZSBuZm5sIG11dGV4LiBGaW5kIHRoZSBmaXJzdCBmcmVlIGluZGV4IGluIGlwX3NldF9saXN0CisJICogYW5kIGNoZWNrIGNsYXNoaW5nLgogCSAqLwogCWlmICgocmV0ID0gZmluZF9mcmVlX2lkKHNldC0+bmFtZSwgJmluZGV4LCAmY2xhc2gpKSAhPSAwKSB7CiAJCS8qIElmIHRoaXMgaXMgdGhlIHNhbWUgc2V0IGFuZCByZXF1ZXN0ZWQsIGlnbm9yZSBlcnJvciAqLwpAQCAtNzUxLDMxICs3NDgsNTEgQEAKIAkgICAgICAgY29uc3Qgc3RydWN0IG5sYXR0ciAqIGNvbnN0IGF0dHJbXSkKIHsKIAlpcF9zZXRfaWRfdCBpOworCWludCByZXQgPSAwOwogCiAJaWYgKHVubGlrZWx5KHByb3RvY29sX2ZhaWxlZChhdHRyKSkpCiAJCXJldHVybiAtSVBTRVRfRVJSX1BST1RPQ09MOwogCi0JLyogUmVmZXJlbmNlcyBhcmUgcHJvdGVjdGVkIGJ5IHRoZSBuZm5sIG11dGV4ICovCisJLyogQ29tbWFuZHMgYXJlIHNlcmlhbGl6ZWQgYW5kIHJlZmVyZW5jZXMgYXJlCisJICogcHJvdGVjdGVkIGJ5IHRoZSBpcF9zZXRfcmVmX2xvY2suCisJICogRXh0ZXJuYWwgc3lzdGVtcyAoaS5lLiB4dF9zZXQpIG11c3QgY2FsbAorCSAqIGlwX3NldF9wdXR8Z2V0X25mbmxfKiBmdW5jdGlvbnMsIHRoYXQgd2F5IHdlCisJICogY2FuIHNhZmVseSBjaGVjayByZWZlcmVuY2VzIGhlcmUuCisJICoKKwkgKiBsaXN0OnNldCB0aW1lciBjYW4gb25seSBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZQorCSAqIGNvdW50ZXIsIHNvIGlmIGl0J3MgYWxyZWFkeSB6ZXJvLCB3ZSBjYW4gcHJvY2VlZAorCSAqIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jay4KKwkgKi8KKwlyZWFkX2xvY2tfYmgoJmlwX3NldF9yZWZfbG9jayk7CiAJaWYgKCFhdHRyW0lQU0VUX0FUVFJfU0VUTkFNRV0pIHsKIAkJZm9yIChpID0gMDsgaSA8IGlwX3NldF9tYXg7IGkrKykgewotCQkJaWYgKGlwX3NldF9saXN0W2ldICE9IE5VTEwgJiYKLQkJCSAgICAoYXRvbWljX3JlYWQoJmlwX3NldF9saXN0W2ldLT5yZWYpKSkKLQkJCQlyZXR1cm4gLUlQU0VUX0VSUl9CVVNZOworCQkJaWYgKGlwX3NldF9saXN0W2ldICE9IE5VTEwgJiYgaXBfc2V0X2xpc3RbaV0tPnJlZikgeworCQkJCXJldCA9IElQU0VUX0VSUl9CVVNZOworCQkJCWdvdG8gb3V0OworCQkJfQogCQl9CisJCXJlYWRfdW5sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOwogCQlmb3IgKGkgPSAwOyBpIDwgaXBfc2V0X21heDsgaSsrKSB7CiAJCQlpZiAoaXBfc2V0X2xpc3RbaV0gIT0gTlVMTCkKIAkJCQlpcF9zZXRfZGVzdHJveV9zZXQoaSk7CiAJCX0KIAl9IGVsc2UgewogCQlpID0gZmluZF9zZXRfaWQobmxhX2RhdGEoYXR0cltJUFNFVF9BVFRSX1NFVE5BTUVdKSk7Ci0JCWlmIChpID09IElQU0VUX0lOVkFMSURfSUQpCi0JCQlyZXR1cm4gLUVOT0VOVDsKLQkJZWxzZSBpZiAoYXRvbWljX3JlYWQoJmlwX3NldF9saXN0W2ldLT5yZWYpKQotCQkJcmV0dXJuIC1JUFNFVF9FUlJfQlVTWTsKKwkJaWYgKGkgPT0gSVBTRVRfSU5WQUxJRF9JRCkgeworCQkJcmV0ID0gLUVOT0VOVDsKKwkJCWdvdG8gb3V0OworCQl9IGVsc2UgaWYgKGlwX3NldF9saXN0W2ldLT5yZWYpIHsKKwkJCXJldCA9IC1JUFNFVF9FUlJfQlVTWTsKKwkJCWdvdG8gb3V0OworCQl9CisJCXJlYWRfdW5sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOwogCiAJCWlwX3NldF9kZXN0cm95X3NldChpKTsKIAl9CiAJcmV0dXJuIDA7CitvdXQ6CisJcmVhZF91bmxvY2tfYmgoJmlwX3NldF9yZWZfbG9jayk7CisJcmV0dXJuIHJldDsKIH0KIAogLyogRmx1c2ggc2V0cyAqLwpAQCAtODM0LDYgKzg1MSw3IEBACiAJc3RydWN0IGlwX3NldCAqc2V0OwogCWNvbnN0IGNoYXIgKm5hbWUyOwogCWlwX3NldF9pZF90IGk7CisJaW50IHJldCA9IDA7CiAKIAlpZiAodW5saWtlbHkocHJvdG9jb2xfZmFpbGVkKGF0dHIpIHx8CiAJCSAgICAgYXR0cltJUFNFVF9BVFRSX1NFVE5BTUVdID09IE5VTEwgfHwKQEAgLTg0MywyNSArODYxLDMzIEBACiAJc2V0ID0gZmluZF9zZXQobmxhX2RhdGEoYXR0cltJUFNFVF9BVFRSX1NFVE5BTUVdKSk7CiAJaWYgKHNldCA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT0VOVDsKLQlpZiAoYXRvbWljX3JlYWQoJnNldC0+cmVmKSAhPSAwKQotCQlyZXR1cm4gLUlQU0VUX0VSUl9SRUZFUkVOQ0VEOworCisJcmVhZF9sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOworCWlmIChzZXQtPnJlZiAhPSAwKSB7CisJCXJldCA9IC1JUFNFVF9FUlJfUkVGRVJFTkNFRDsKKwkJZ290byBvdXQ7CisJfQogCiAJbmFtZTIgPSBubGFfZGF0YShhdHRyW0lQU0VUX0FUVFJfU0VUTkFNRTJdKTsKIAlmb3IgKGkgPSAwOyBpIDwgaXBfc2V0X21heDsgaSsrKSB7CiAJCWlmIChpcF9zZXRfbGlzdFtpXSAhPSBOVUxMICYmCi0JCSAgICBTVFJFUShpcF9zZXRfbGlzdFtpXS0+bmFtZSwgbmFtZTIpKQotCQkJcmV0dXJuIC1JUFNFVF9FUlJfRVhJU1RfU0VUTkFNRTI7CisJCSAgICBTVFJFUShpcF9zZXRfbGlzdFtpXS0+bmFtZSwgbmFtZTIpKSB7CisJCQlyZXQgPSAtSVBTRVRfRVJSX0VYSVNUX1NFVE5BTUUyOworCQkJZ290byBvdXQ7CisJCX0KIAl9CiAJc3RybmNweShzZXQtPm5hbWUsIG5hbWUyLCBJUFNFVF9NQVhOQU1FTEVOKTsKIAotCXJldHVybiAwOworb3V0OgorCXJlYWRfdW5sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOworCXJldHVybiByZXQ7CiB9CiAKIC8qIFN3YXAgdHdvIHNldHMgc28gdGhhdCBuYW1lL2luZGV4IHBvaW50cyB0byB0aGUgb3RoZXIuCiAgKiBSZWZlcmVuY2VzIGFuZCBzZXQgbmFtZXMgYXJlIGFsc28gc3dhcHBlZC4KICAqCi0gKiBXZSBhcmUgcHJvdGVjdGVkIGJ5IHRoZSBuZm5sIG11dGV4IGFuZCByZWZlcmVuY2VzIGFyZQotICogbWFuaXB1bGF0ZWQgb25seSBieSBob2xkaW5nIHRoZSBtdXRleC4gVGhlIGtlcm5lbCBpbnRlcmZhY2VzCisgKiBUaGUgY29tbWFuZHMgYXJlIHNlcmlhbGl6ZWQgYnkgdGhlIG5mbmwgbXV0ZXggYW5kIHJlZmVyZW5jZXMgYXJlCisgKiBwcm90ZWN0ZWQgYnkgdGhlIGlwX3NldF9yZWZfbG9jay4gVGhlIGtlcm5lbCBpbnRlcmZhY2VzCiAgKiBkbyBub3QgaG9sZCB0aGUgbXV0ZXggYnV0IHRoZSBwb2ludGVyIHNldHRpbmdzIGFyZSBhdG9taWMKICAqIHNvIHRoZSBpcF9zZXRfbGlzdCBhbHdheXMgY29udGFpbnMgdmFsaWQgcG9pbnRlcnMgdG8gdGhlIHNldHMuCiAgKi8KQEAgLTg3NCw3ICs5MDAsNiBAQAogCXN0cnVjdCBpcF9zZXQgKmZyb20sICp0bzsKIAlpcF9zZXRfaWRfdCBmcm9tX2lkLCB0b19pZDsKIAljaGFyIGZyb21fbmFtZVtJUFNFVF9NQVhOQU1FTEVOXTsKLQl1MzIgZnJvbV9yZWY7CiAKIAlpZiAodW5saWtlbHkocHJvdG9jb2xfZmFpbGVkKGF0dHIpIHx8CiAJCSAgICAgYXR0cltJUFNFVF9BVFRSX1NFVE5BTUVdID09IE5VTEwgfHwKQEAgLTg5MywyMyArOTE4LDIxIEBACiAJdG8gPSBpcF9zZXRfbGlzdFt0b19pZF07CiAKIAkvKiBGZWF0dXJlcyBtdXN0IG5vdCBjaGFuZ2UuCi0JICogTm90IGFuIGFydGlmaWNhbCByZXN0cmljdGlvbiBhbnltb3JlLCBhcyB3ZSBtdXN0IHByZXZlbnQKKwkgKiBOb3QgYW4gYXJ0aWZpY2lhbCByZXN0cmljdGlvbiBhbnltb3JlLCBhcyB3ZSBtdXN0IHByZXZlbnQKIAkgKiBwb3NzaWJsZSBsb29wcyBjcmVhdGVkIGJ5IHN3YXBwaW5nIGluIHNldGxpc3QgdHlwZSBvZiBzZXRzLiAqLwogCWlmICghKGZyb20tPnR5cGUtPmZlYXR1cmVzID09IHRvLT50eXBlLT5mZWF0dXJlcyAmJgogCSAgICAgIGZyb20tPnR5cGUtPmZhbWlseSA9PSB0by0+dHlwZS0+ZmFtaWx5KSkKIAkJcmV0dXJuIC1JUFNFVF9FUlJfVFlQRV9NSVNNQVRDSDsKIAotCS8qIE5vIG1hZ2ljIGhlcmU6IHJlZiBtdW5naW5nIHByb3RlY3RlZCBieSB0aGUgbmZubF9sb2NrICovCiAJc3RybmNweShmcm9tX25hbWUsIGZyb20tPm5hbWUsIElQU0VUX01BWE5BTUVMRU4pOwotCWZyb21fcmVmID0gYXRvbWljX3JlYWQoJmZyb20tPnJlZik7Ci0KIAlzdHJuY3B5KGZyb20tPm5hbWUsIHRvLT5uYW1lLCBJUFNFVF9NQVhOQU1FTEVOKTsKLQlhdG9taWNfc2V0KCZmcm9tLT5yZWYsIGF0b21pY19yZWFkKCZ0by0+cmVmKSk7CiAJc3RybmNweSh0by0+bmFtZSwgZnJvbV9uYW1lLCBJUFNFVF9NQVhOQU1FTEVOKTsKLQlhdG9taWNfc2V0KCZ0by0+cmVmLCBmcm9tX3JlZik7CiAKKwl3cml0ZV9sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOworCXN3YXAoZnJvbS0+cmVmLCB0by0+cmVmKTsKIAlpcF9zZXRfbGlzdFtmcm9tX2lkXSA9IHRvOwogCWlwX3NldF9saXN0W3RvX2lkXSA9IGZyb207CisJd3JpdGVfdW5sb2NrX2JoKCZpcF9zZXRfcmVmX2xvY2spOwogCiAJcmV0dXJuIDA7CiB9CkBAIC05MjYsNyArOTQ5LDcgQEAKIHsKIAlpZiAoY2ItPmFyZ3NbMl0pIHsKIAkJcHJfZGVidWcoInJlbGVhc2Ugc2V0ICVzXG4iLCBpcF9zZXRfbGlzdFtjYi0+YXJnc1sxXV0tPm5hbWUpOwotCQlfX2lwX3NldF9wdXQoKGlwX3NldF9pZF90KSBjYi0+YXJnc1sxXSk7CisJCWlwX3NldF9wdXRfYnlpbmRleCgoaXBfc2V0X2lkX3QpIGNiLT5hcmdzWzFdKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0xMDY4LDcgKzEwOTEsNyBAQAogCS8qIElmIHRoZXJlIHdhcyBhbiBlcnJvciBvciBzZXQgaXMgZG9uZSwgcmVsZWFzZSBzZXQgKi8KIAlpZiAocmV0IHx8ICFjYi0+YXJnc1syXSkgewogCQlwcl9kZWJ1ZygicmVsZWFzZSBzZXQgJXNcbiIsIGlwX3NldF9saXN0W2luZGV4XS0+bmFtZSk7Ci0JCV9faXBfc2V0X3B1dChpbmRleCk7CisJCWlwX3NldF9wdXRfYnlpbmRleChpbmRleCk7CiAJfQogCiAJLyogSWYgd2UgZHVtcCBhbGwgc2V0cywgY29udGludWUgd2l0aCBkdW1waW5nIGxhc3Qgb25lcyAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2xpc3Rfc2V0LmMKaW5kZXggYTQ3YzMyOS4uZTkxNTllOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfbGlzdF9zZXQuYworKysgYi9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9saXN0X3NldC5jCkBAIC00MywxNCArNDMsMTkgQEAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHNldF9lbGVtICoKIGxpc3Rfc2V0X2VsZW0oY29uc3Qgc3RydWN0IGxpc3Rfc2V0ICptYXAsIHUzMiBpZCkKIHsKLQlyZXR1cm4gKHN0cnVjdCBzZXRfZWxlbSAqKSgoY2hhciAqKW1hcC0+bWVtYmVycyArIGlkICogbWFwLT5kc2l6ZSk7CisJcmV0dXJuIChzdHJ1Y3Qgc2V0X2VsZW0gKikoKHZvaWQgKiltYXAtPm1lbWJlcnMgKyBpZCAqIG1hcC0+ZHNpemUpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBzZXRfdGVsZW0gKgorbGlzdF9zZXRfdGVsZW0oY29uc3Qgc3RydWN0IGxpc3Rfc2V0ICptYXAsIHUzMiBpZCkKK3sKKwlyZXR1cm4gKHN0cnVjdCBzZXRfdGVsZW0gKikoKHZvaWQgKiltYXAtPm1lbWJlcnMgKyBpZCAqIG1hcC0+ZHNpemUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wKIGxpc3Rfc2V0X3RpbWVvdXQoY29uc3Qgc3RydWN0IGxpc3Rfc2V0ICptYXAsIHUzMiBpZCkKIHsKLQljb25zdCBzdHJ1Y3Qgc2V0X3RlbGVtICplbGVtID0KLQkJKGNvbnN0IHN0cnVjdCBzZXRfdGVsZW0gKikgbGlzdF9zZXRfZWxlbShtYXAsIGlkKTsKKwljb25zdCBzdHJ1Y3Qgc2V0X3RlbGVtICplbGVtID0gbGlzdF9zZXRfdGVsZW0obWFwLCBpZCk7CiAKIAlyZXR1cm4gaXBfc2V0X3RpbWVvdXRfdGVzdChlbGVtLT50aW1lb3V0KTsKIH0KQEAgLTU4LDE5ICs2MywxMSBAQAogc3RhdGljIGlubGluZSBib29sCiBsaXN0X3NldF9leHBpcmVkKGNvbnN0IHN0cnVjdCBsaXN0X3NldCAqbWFwLCB1MzIgaWQpCiB7Ci0JY29uc3Qgc3RydWN0IHNldF90ZWxlbSAqZWxlbSA9Ci0JCShjb25zdCBzdHJ1Y3Qgc2V0X3RlbGVtICopIGxpc3Rfc2V0X2VsZW0obWFwLCBpZCk7CisJY29uc3Qgc3RydWN0IHNldF90ZWxlbSAqZWxlbSA9IGxpc3Rfc2V0X3RlbGVtKG1hcCwgaWQpOwogCiAJcmV0dXJuIGlwX3NldF90aW1lb3V0X2V4cGlyZWQoZWxlbS0+dGltZW91dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1saXN0X3NldF9leGlzdChjb25zdCBzdHJ1Y3Qgc2V0X3RlbGVtICplbGVtKQotewotCXJldHVybiBlbGVtLT5pZCAhPSBJUFNFVF9JTlZBTElEX0lEICYmCi0JICAgICAgICFpcF9zZXRfdGltZW91dF9leHBpcmVkKGVsZW0tPnRpbWVvdXQpOwotfQotCiAvKiBTZXQgbGlzdCB3aXRob3V0IGFuZCB3aXRoIHRpbWVvdXQgKi8KIAogc3RhdGljIGludApAQCAtMTQ2LDExICsxNDMsMTEgQEAKIAlzdHJ1Y3Qgc2V0X3RlbGVtICplOwogCiAJZm9yICg7IGkgPCBtYXAtPnNpemU7IGkrKykgewotCQllID0gKHN0cnVjdCBzZXRfdGVsZW0gKilsaXN0X3NldF9lbGVtKG1hcCwgaSk7CisJCWUgPSBsaXN0X3NldF90ZWxlbShtYXAsIGkpOwogCQlzd2FwKGUtPmlkLCBpZCk7CisJCXN3YXAoZS0+dGltZW91dCwgdGltZW91dCk7CiAJCWlmIChlLT5pZCA9PSBJUFNFVF9JTlZBTElEX0lEKQogCQkJYnJlYWs7Ci0JCXN3YXAoZS0+dGltZW91dCwgdGltZW91dCk7CiAJfQogfQogCkBAIC0xNjQsNyArMTYxLDcgQEAKIAkJLyogTGFzdCBlbGVtZW50IHJlcGxhY2VkOiBlLmcuIGFkZCBuZXcsYmVmb3JlLGxhc3QgKi8KIAkJaXBfc2V0X3B1dF9ieWluZGV4KGUtPmlkKTsKIAlpZiAod2l0aF90aW1lb3V0KG1hcC0+dGltZW91dCkpCi0JCWxpc3RfZWxlbV90YWRkKG1hcCwgaSwgaWQsIHRpbWVvdXQpOworCQlsaXN0X2VsZW1fdGFkZChtYXAsIGksIGlkLCBpcF9zZXRfdGltZW91dF9zZXQodGltZW91dCkpOwogCWVsc2UKIAkJbGlzdF9lbGVtX2FkZChtYXAsIGksIGlkKTsKIApAQCAtMTcyLDExICsxNjksMTEgQEAKIH0KIAogc3RhdGljIGludAotbGlzdF9zZXRfZGVsKHN0cnVjdCBsaXN0X3NldCAqbWFwLCBpcF9zZXRfaWRfdCBpZCwgdTMyIGkpCitsaXN0X3NldF9kZWwoc3RydWN0IGxpc3Rfc2V0ICptYXAsIHUzMiBpKQogewogCXN0cnVjdCBzZXRfZWxlbSAqYSA9IGxpc3Rfc2V0X2VsZW0obWFwLCBpKSwgKmI7CiAKLQlpcF9zZXRfcHV0X2J5aW5kZXgoaWQpOworCWlwX3NldF9wdXRfYnlpbmRleChhLT5pZCk7CiAKIAlmb3IgKDsgaSA8IG1hcC0+c2l6ZSAtIDE7IGkrKykgewogCQliID0gbGlzdF9zZXRfZWxlbShtYXAsIGkgKyAxKTsKQEAgLTMwOCwxMSArMzA1LDExIEBACiAJCQkJIChiZWZvcmUgPT0gMCB8fAogCQkJCSAgKGJlZm9yZSA+IDAgJiYKIAkJCQkgICBuZXh0X2lkX2VxKG1hcCwgaSwgcmVmaWQpKSkpCi0JCQkJcmV0ID0gbGlzdF9zZXRfZGVsKG1hcCwgaWQsIGkpOworCQkJCXJldCA9IGxpc3Rfc2V0X2RlbChtYXAsIGkpOwogCQkJZWxzZSBpZiAoYmVmb3JlIDwgMCAmJgogCQkJCSBlbGVtLT5pZCA9PSByZWZpZCAmJgogCQkJCSBuZXh0X2lkX2VxKG1hcCwgaSwgaWQpKQotCQkJCXJldCA9IGxpc3Rfc2V0X2RlbChtYXAsIGlkLCBpICsgMSk7CisJCQkJcmV0ID0gbGlzdF9zZXRfZGVsKG1hcCwgaSArIDEpOwogCQl9CiAJCWJyZWFrOwogCWRlZmF1bHQ6CkBAIC0zNjksOCArMzY2LDcgQEAKIAlOTEFfUFVUX05FVDMyKHNrYiwgSVBTRVRfQVRUUl9TSVpFLCBodG9ubChtYXAtPnNpemUpKTsKIAlpZiAod2l0aF90aW1lb3V0KG1hcC0+dGltZW91dCkpCiAJCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX1RJTUVPVVQsIGh0b25sKG1hcC0+dGltZW91dCkpOwotCU5MQV9QVVRfTkVUMzIoc2tiLCBJUFNFVF9BVFRSX1JFRkVSRU5DRVMsCi0JCSAgICAgIGh0b25sKGF0b21pY19yZWFkKCZzZXQtPnJlZikgLSAxKSk7CisJTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfUkVGRVJFTkNFUywgaHRvbmwoc2V0LT5yZWYgLSAxKSk7CiAJTkxBX1BVVF9ORVQzMihza2IsIElQU0VUX0FUVFJfTUVNU0laRSwKIAkJICAgICAgaHRvbmwoc2l6ZW9mKCptYXApICsgbWFwLT5zaXplICogbWFwLT5kc2l6ZSkpOwogCWlwc2V0X25lc3RfZW5kKHNrYiwgbmVzdGVkKTsKQEAgLTQ2MSwxNiArNDU3LDEzIEBACiAJc3RydWN0IHNldF90ZWxlbSAqZTsKIAl1MzIgaTsKIAotCS8qIFdlIHJ1biBwYXJhbGxlbCB3aXRoIG90aGVyIHJlYWRlcnMgKHRlc3QgZWxlbWVudCkKLQkgKiBidXQgYWRkaW5nL2RlbGV0aW5nIG5ldyBlbnRyaWVzIGlzIGxvY2tlZCBvdXQgKi8KLQlyZWFkX2xvY2tfYmgoJnNldC0+bG9jayk7Ci0JZm9yIChpID0gbWFwLT5zaXplIC0gMTsgaSA+PSAwOyBpLS0pIHsKLQkJZSA9IChzdHJ1Y3Qgc2V0X3RlbGVtICopIGxpc3Rfc2V0X2VsZW0obWFwLCBpKTsKLQkJaWYgKGUtPmlkICE9IElQU0VUX0lOVkFMSURfSUQgJiYKLQkJICAgIGxpc3Rfc2V0X2V4cGlyZWQobWFwLCBpKSkKLQkJCWxpc3Rfc2V0X2RlbChtYXAsIGUtPmlkLCBpKTsKKwl3cml0ZV9sb2NrX2JoKCZzZXQtPmxvY2spOworCWZvciAoaSA9IDA7IGkgPCBtYXAtPnNpemU7IGkrKykgeworCQllID0gbGlzdF9zZXRfdGVsZW0obWFwLCBpKTsKKwkJaWYgKGUtPmlkICE9IElQU0VUX0lOVkFMSURfSUQgJiYgbGlzdF9zZXRfZXhwaXJlZChtYXAsIGkpKQorCQkJbGlzdF9zZXRfZGVsKG1hcCwgaSk7CiAJfQotCXJlYWRfdW5sb2NrX2JoKCZzZXQtPmxvY2spOworCXdyaXRlX3VubG9ja19iaCgmc2V0LT5sb2NrKTsKIAogCW1hcC0+Z2MuZXhwaXJlcyA9IGppZmZpZXMgKyBJUFNFVF9HQ19QRVJJT0QobWFwLT50aW1lb3V0KSAqIEhaOwogCWFkZF90aW1lcigmbWFwLT5nYyk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwppbmRleCBmMjg5MzA2Li5jOTdiZDQ1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKQEAgLTU5NSw3ICs1OTUsNyBAQAogCQkJYXRvbWljX2luYygmZGVzdC0+aW5hY3Rjb25ucyk7CiAJfSBlbHNlIHsKIAkJLyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGluY3JlYXNlCi0JCSAgIHRoZSBwZXJpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovCisJCSAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqLwogCQlhdG9taWNfaW5jKCZkZXN0LT5wZXJzaXN0Y29ubnMpOwogCX0KIApAQCAtNjU3LDcgKzY1Nyw3IEBACiAJCX0KIAl9IGVsc2UgewogCQkvKiBJdCBpcyBhIHBlcnNpc3RlbnQgY29ubmVjdGlvbi90ZW1wbGF0ZSwgc28gZGVjcmVhc2UKLQkJICAgdGhlIHBlcmlzdGVudCBjb25uZWN0aW9uIGNvdW50ZXIgKi8KKwkJICAgdGhlIHBlcnNpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovCiAJCWF0b21pY19kZWMoJmRlc3QtPnBlcnNpc3Rjb25ucyk7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKaW5kZXggMzM3MzNjOC4uYWU0NzA5MCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwpAQCAtMzEyMCw3ICszMTIwLDcgQEAKIHN0YXRpYyBpbnQgaXBfdnNfZ2VubF9kdW1wX2RhZW1vbnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiB7Ci0Jc3RydWN0IG5ldCAqbmV0ID0gc2tiX25ldChza2IpOworCXN0cnVjdCBuZXQgKm5ldCA9IHNrYl9za25ldChza2IpOwogCXN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gbmV0X2lwdnMobmV0KTsKIAogCW11dGV4X2xvY2soJl9faXBfdnNfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggZjI3NmRmOS4uODdlNDBlYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYworKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCkBAIC0xMzEsNyArMTMxLDcgQEAKIHsKIAlsaXN0X2RlbCgmZW4tPmxpc3QpOwogCS8qCi0JICogV2UgZG9uJ3Qga2ZyZWUgZGVzdCBiZWNhdXNlIGl0IGlzIHJlZmVyZWQgZWl0aGVyIGJ5IGl0cyBzZXJ2aWNlCisJICogV2UgZG9uJ3Qga2ZyZWUgZGVzdCBiZWNhdXNlIGl0IGlzIHJlZmVycmVkIGVpdGhlciBieSBpdHMgc2VydmljZQogCSAqIG9yIHRoZSB0cmFzaCBkZXN0IGxpc3QuCiAJICovCiAJYXRvbWljX2RlYygmZW4tPmRlc3QtPnJlZmNudCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCmluZGV4IGNiMWM5OTEuLjkwZjYxOGEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCkBAIC0xNTIsNyArMTUyLDcgQEAKIAl3cml0ZV9sb2NrKCZzZXQtPmxvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBlcCwgJnNldC0+bGlzdCwgbGlzdCkgewogCQkvKgotCQkgKiBXZSBkb24ndCBrZnJlZSBkZXN0IGJlY2F1c2UgaXQgaXMgcmVmZXJlZCBlaXRoZXIKKwkJICogV2UgZG9uJ3Qga2ZyZWUgZGVzdCBiZWNhdXNlIGl0IGlzIHJlZmVycmVkIGVpdGhlcgogCQkgKiBieSBpdHMgc2VydmljZSBvciBieSB0aGUgdHJhc2ggZGVzdCBsaXN0LgogCQkgKi8KIAkJYXRvbWljX2RlYygmZS0+ZGVzdC0+cmVmY250KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jCmluZGV4IGIwMjdjY2MuLmQxMmVkNTMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMKKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYwpAQCAtNTY2LDcgKzU2Niw3IEBACiAJICogU0hVVERPV04gc2VudCBmcm9tIHRoZSBjbGllbnQsIHdhaXRpbmYgZm9yIFNIVVQgQUNLIGZyb20gdGhlIHNlcnZlcgogCSAqLwogCS8qCi0JICogV2UgcmVjaWV2ZWQgdGhlIGRhdGEgY2h1Y2ssIGtlZXAgdGhlIHN0YXRlIHVuY2hhbmdlZC4gSSBhc3N1bWUKKwkgKiBXZSByZWNlaXZlZCB0aGUgZGF0YSBjaHVjaywga2VlcCB0aGUgc3RhdGUgdW5jaGFuZ2VkLiBJIGFzc3VtZQogCSAqIHRoYXQgc3RpbGwgZGF0YSBjaHVuY2tzICBjYW4gYmUgcmVjZWl2ZWQgYnkgYm90aCB0aGUgcGVlcnMgaW4KIAkgKiBTSFVET1dOIHN0YXRlCiAJICovCkBAIC02MzMsNyArNjMzLDcgQEAKIAkgKiBTSFVURE9XTiBzZW50IGZyb20gdGhlIHNlcnZlciwgd2FpdGluZiBmb3IgU0hVVERPV04gQUNLIGZyb20gY2xpZW50CiAJICovCiAJLyoKLQkgKiBXZSByZWNpZXZlZCB0aGUgZGF0YSBjaHVjaywga2VlcCB0aGUgc3RhdGUgdW5jaGFuZ2VkLiBJIGFzc3VtZQorCSAqIFdlIHJlY2VpdmVkIHRoZSBkYXRhIGNodWNrLCBrZWVwIHRoZSBzdGF0ZSB1bmNoYW5nZWQuIEkgYXNzdW1lCiAJICogdGhhdCBzdGlsbCBkYXRhIGNodW5ja3MgIGNhbiBiZSByZWNlaXZlZCBieSBib3RoIHRoZSBwZWVycyBpbgogCSAqIFNIVURPV04gc3RhdGUKIAkgKi8KQEAgLTcwMSw3ICs3MDEsNyBAQAogCSAqIFNIVVRET1dOIEFDSyBmcm9tIHRoZSBjbGllbnQsIGF3YWl0aW5nIGZvciBTSFVURE9XTiBDT00gZnJvbSBzZXJ2ZXIKIAkgKi8KIAkvKgotCSAqIFdlIHJlY2lldmVkIHRoZSBkYXRhIGNodWNrLCBrZWVwIHRoZSBzdGF0ZSB1bmNoYW5nZWQuIEkgYXNzdW1lCisJICogV2UgcmVjZWl2ZWQgdGhlIGRhdGEgY2h1Y2ssIGtlZXAgdGhlIHN0YXRlIHVuY2hhbmdlZC4gSSBhc3N1bWUKIAkgKiB0aGF0IHN0aWxsIGRhdGEgY2h1bmNrcyAgY2FuIGJlIHJlY2VpdmVkIGJ5IGJvdGggdGhlIHBlZXJzIGluCiAJICogU0hVRE9XTiBzdGF0ZQogCSAqLwpAQCAtNzcxLDcgKzc3MSw3IEBACiAJICogU0hVVERPV04gQUNLIGZyb20gdGhlIHNlcnZlciwgYXdhaXRpbmcgZm9yIFNIVVRET1dOIENPTSBmcm9tIGNsaWVudAogCSAqLwogCS8qCi0JICogV2UgcmVjaWV2ZWQgdGhlIGRhdGEgY2h1Y2ssIGtlZXAgdGhlIHN0YXRlIHVuY2hhbmdlZC4gSSBhc3N1bWUKKwkgKiBXZSByZWNlaXZlZCB0aGUgZGF0YSBjaHVjaywga2VlcCB0aGUgc3RhdGUgdW5jaGFuZ2VkLiBJIGFzc3VtZQogCSAqIHRoYXQgc3RpbGwgZGF0YSBjaHVuY2tzICBjYW4gYmUgcmVjZWl2ZWQgYnkgYm90aCB0aGUgcGVlcnMgaW4KIAkgKiBTSFVET1dOIHN0YXRlCiAJICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKaW5kZXggOTQxMjg2Yy4uMmUxYzExZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYwpAQCAtNDUzLDcgKzQ1Myw3IEBACiAJICAgUkVKRUNUIHdpbGwgZ2l2ZSBzcHVyaW91cyB3YXJuaW5ncyBoZXJlLiAqLwogCS8qIE5GX0NUX0FTU0VSVChhdG9taWNfcmVhZCgmY3QtPmN0X2dlbmVyYWwudXNlKSA9PSAxKTsgKi8KIAotCS8qIE5vIGV4dGVybmFsIHJlZmVyZW5jZXMgbWVhbnMgbm9vbmUgZWxzZSBjb3VsZCBoYXZlCisJLyogTm8gZXh0ZXJuYWwgcmVmZXJlbmNlcyBtZWFucyBubyBvbmUgZWxzZSBjb3VsZCBoYXZlCiAJICAgY29uZmlybWVkIHVzLiAqLwogCU5GX0NUX0FTU0VSVCghbmZfY3RfaXNfY29uZmlybWVkKGN0KSk7CiAJcHJfZGVidWcoIkNvbmZpcm1pbmcgY29ubnRyYWNrICVwXG4iLCBjdCk7CkBAIC05MDEsNyArOTAxLDcgQEAKIAlyZXQgPSBsM3Byb3RvLT5nZXRfbDRwcm90byhza2IsIHNrYl9uZXR3b3JrX29mZnNldChza2IpLAogCQkJCSAgICZkYXRhb2ZmLCAmcHJvdG9udW0pOwogCWlmIChyZXQgPD0gMCkgewotCQlwcl9kZWJ1Zygibm90IHByZXBhcmVkIHRvIHRyYWNrIHlldCBvciBlcnJvciBvY2N1cmVkXG4iKTsKKwkJcHJfZGVidWcoIm5vdCBwcmVwYXJlZCB0byB0cmFjayB5ZXQgb3IgZXJyb3Igb2NjdXJyZWRcbiIpOwogCQlORl9DVF9TVEFUX0lOQ19BVE9NSUMobmV0LCBlcnJvcik7CiAJCU5GX0NUX1NUQVRfSU5DX0FUT01JQyhuZXQsIGludmFsaWQpOwogCQlyZXQgPSAtcmV0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19hc24xLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX2FzbjEuYwppbmRleCA4Njc4ODIzLi5iY2Q1ZWQ2IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX2FzbjEuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX2FzbjEuYwpAQCAtNjMxLDcgKzYzMSw3IEBACiAJCUNIRUNLX0JPVU5EKGJzLCAyKTsKIAkJY291bnQgPSAqYnMtPmN1cisrOwogCQljb3VudCA8PD0gODsKLQkJY291bnQgPSAqYnMtPmN1cisrOworCQljb3VudCArPSAqYnMtPmN1cisrOwogCQlicmVhazsKIAljYXNlIFNFTUk6CiAJCUJZVEVfQUxJR04oYnMpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM19tYWluLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwppbmRleCA1MzNhMTgzLi4xOGIyY2U1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX21haW4uYwpAQCAtNzMxLDEwICs3MzEsMTAgQEAKIAogCQltZW1zZXQoJmZsMiwgMCwgc2l6ZW9mKGZsMikpOwogCQlmbDIuZGFkZHIgPSBkc3QtPmlwOwotCQlpZiAoIWFmaW5mby0+cm91dGUoKHN0cnVjdCBkc3RfZW50cnkgKiopJnJ0MSwKLQkJCQkgICBmbG93aTRfdG9fZmxvd2koJmZsMSkpKSB7Ci0JCQlpZiAoIWFmaW5mby0+cm91dGUoKHN0cnVjdCBkc3RfZW50cnkgKiopJnJ0MiwKLQkJCQkJICAgZmxvd2k0X3RvX2Zsb3dpKCZmbDIpKSkgeworCQlpZiAoIWFmaW5mby0+cm91dGUoJmluaXRfbmV0LCAoc3RydWN0IGRzdF9lbnRyeSAqKikmcnQxLAorCQkJCSAgIGZsb3dpNF90b19mbG93aSgmZmwxKSwgZmFsc2UpKSB7CisJCQlpZiAoIWFmaW5mby0+cm91dGUoJmluaXRfbmV0LCAoc3RydWN0IGRzdF9lbnRyeSAqKikmcnQyLAorCQkJCQkgICBmbG93aTRfdG9fZmxvd2koJmZsMiksIGZhbHNlKSkgewogCQkJCWlmIChydDEtPnJ0X2dhdGV3YXkgPT0gcnQyLT5ydF9nYXRld2F5ICYmCiAJCQkJICAgIHJ0MS0+ZHN0LmRldiAgPT0gcnQyLT5kc3QuZGV2KQogCQkJCQlyZXQgPSAxOwpAQCAtNzU1LDEwICs3NTUsMTAgQEAKIAogCQltZW1zZXQoJmZsMiwgMCwgc2l6ZW9mKGZsMikpOwogCQlpcHY2X2FkZHJfY29weSgmZmwyLmRhZGRyLCAmZHN0LT5pbjYpOwotCQlpZiAoIWFmaW5mby0+cm91dGUoKHN0cnVjdCBkc3RfZW50cnkgKiopJnJ0MSwKLQkJCQkgICBmbG93aTZfdG9fZmxvd2koJmZsMSkpKSB7Ci0JCQlpZiAoIWFmaW5mby0+cm91dGUoKHN0cnVjdCBkc3RfZW50cnkgKiopJnJ0MiwKLQkJCQkJICAgZmxvd2k2X3RvX2Zsb3dpKCZmbDIpKSkgeworCQlpZiAoIWFmaW5mby0+cm91dGUoJmluaXRfbmV0LCAoc3RydWN0IGRzdF9lbnRyeSAqKikmcnQxLAorCQkJCSAgIGZsb3dpNl90b19mbG93aSgmZmwxKSwgZmFsc2UpKSB7CisJCQlpZiAoIWFmaW5mby0+cm91dGUoJmluaXRfbmV0LCAoc3RydWN0IGRzdF9lbnRyeSAqKikmcnQyLAorCQkJCQkgICBmbG93aTZfdG9fZmxvd2koJmZsMiksIGZhbHNlKSkgewogCQkJCWlmICghbWVtY21wKCZydDEtPnJ0NmlfZ2F0ZXdheSwgJnJ0Mi0+cnQ2aV9nYXRld2F5LAogCQkJCQkgICAgc2l6ZW9mKHJ0MS0+cnQ2aV9nYXRld2F5KSkgJiYKIAkJCQkgICAgcnQxLT5kc3QuZGV2ID09IHJ0Mi0+ZHN0LmRldikKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX2RjY3AuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX2RjY3AuYwppbmRleCA5YWU1N2M1Li4yZTY2NGE2IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19kY2NwLmMKKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fZGNjcC5jCkBAIC05OCw3ICs5OCw3IEBACiAjZGVmaW5lIHNJVglDVF9EQ0NQX0lOVkFMSUQKIAogLyoKLSAqIERDQ1Agc3RhdGUgdHJhbnNpc3Rpb24gdGFibGUKKyAqIERDQ1Agc3RhdGUgdHJhbnNpdGlvbiB0YWJsZQogICoKICAqIFRoZSBhc3N1bXB0aW9uIGlzIHRoZSBzYW1lIGFzIGZvciBUQ1AgdHJhY2tpbmc6CiAgKgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jCmluZGV4IDZmNGVlNzAuLjY3NzJiMTEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMKQEAgLTEwNyw5ICsxMDcsOSBAQAogLyogYWJvcnQgICAgICAgICovIHtzQ0wsIHNDTCwgc0NMLCBzQ0wsIHNDTCwgc0NMLCBzQ0wsIHNDTH0sCiAvKiBzaHV0ZG93biAgICAgKi8ge3NDTCwgc0NMLCBzQ1csIHNDRSwgc1NTLCBzU1MsIHNTUiwgc1NBfSwKIC8qIHNodXRkb3duX2FjayAqLyB7c1NBLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTQSwgc1NBLCBzU0F9LAotLyogZXJyb3IgICAgICAgICovIHtzQ0wsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NTLCBzU1IsIHNTQX0sLyogQ2FudCBoYXZlIFN0YWxlIGNvb2tpZSovCisvKiBlcnJvciAgICAgICAgKi8ge3NDTCwgc0NMLCBzQ1csIHNDRSwgc0VTLCBzU1MsIHNTUiwgc1NBfSwvKiBDYW4ndCBoYXZlIFN0YWxlIGNvb2tpZSovCiAvKiBjb29raWVfZWNobyAgKi8ge3NDTCwgc0NMLCBzQ0UsIHNDRSwgc0VTLCBzU1MsIHNTUiwgc1NBfSwvKiA1LjIuNCAtIEJpZyBUT0RPICovCi0vKiBjb29raWVfYWNrICAgKi8ge3NDTCwgc0NMLCBzQ1csIHNDRSwgc0VTLCBzU1MsIHNTUiwgc1NBfSwvKiBDYW50IGNvbWUgaW4gb3JpZyBkaXIgKi8KKy8qIGNvb2tpZV9hY2sgICAqLyB7c0NMLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzU0F9LC8qIENhbid0IGNvbWUgaW4gb3JpZyBkaXIgKi8KIC8qIHNodXRkb3duX2NvbXAqLyB7c0NMLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzQ0x9CiAJfSwKIAl7CkBAIC0xMjEsNyArMTIxLDcgQEAKIC8qIHNodXRkb3duICAgICAqLyB7c0lWLCBzQ0wsIHNDVywgc0NFLCBzU1IsIHNTUywgc1NSLCBzU0F9LAogLyogc2h1dGRvd25fYWNrICovIHtzSVYsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NBLCBzU0EsIHNTQX0sCiAvKiBlcnJvciAgICAgICAgKi8ge3NJViwgc0NMLCBzQ1csIHNDTCwgc0VTLCBzU1MsIHNTUiwgc1NBfSwKLS8qIGNvb2tpZV9lY2hvICAqLyB7c0lWLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzU0F9LC8qIENhbnQgY29tZSBpbiByZXBseSBkaXIgKi8KKy8qIGNvb2tpZV9lY2hvICAqLyB7c0lWLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzU0F9LC8qIENhbid0IGNvbWUgaW4gcmVwbHkgZGlyICovCiAvKiBjb29raWVfYWNrICAgKi8ge3NJViwgc0NMLCBzQ1csIHNFUywgc0VTLCBzU1MsIHNTUiwgc1NBfSwKIC8qIHNodXRkb3duX2NvbXAqLyB7c0lWLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzQ0x9CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYwppbmRleCBiY2Y0N2ViLi4yMzdjYzE5IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYwpAQCAtNzA3LDcgKzcwNyw3IEBACiB9CiAKIC8qIExvY2F0ZSBhIFNEUCBoZWFkZXIgKG9wdGlvbmFsbHkgYSBzdWJzdHJpbmcgd2l0aGluIHRoZSBoZWFkZXIgdmFsdWUpLAotICogb3B0aW9uYWxseSBzdG9wcGluZyBhdCB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSB0ZXJtIGhlYWRlciwgcGFyc2UKKyAqIG9wdGlvbmFsbHkgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHRlcm0gaGVhZGVyLCBwYXJzZQogICogaXQgYW5kIHJldHVybiB0aGUgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIGRhdGEgd2UncmUgaW50ZXJlc3RlZCBpbi4KICAqLwogaW50IGN0X3NpcF9nZXRfc2RwX2hlYWRlcihjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsIGNvbnN0IGNoYXIgKmRwdHIsCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3F1ZXVlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3F1ZXVlLmMKaW5kZXggNWFiMjJlMi4uNWI0NjZjZCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfcXVldWUuYwpAQCAtMTM0LDcgKzEzNCw3IEBACiAJY29uc3Qgc3RydWN0IG5mX2FmaW5mbyAqYWZpbmZvOwogCWNvbnN0IHN0cnVjdCBuZl9xdWV1ZV9oYW5kbGVyICpxaDsKIAotCS8qIFFVRVVFID09IERST1AgaWYgbm9vbmUgaXMgd2FpdGluZywgdG8gYmUgc2FmZS4gKi8KKwkvKiBRVUVVRSA9PSBEUk9QIGlmIG5vIG9uZSBpcyB3YWl0aW5nLCB0byBiZSBzYWZlLiAqLwogCXJjdV9yZWFkX2xvY2soKTsKIAogCXFoID0gcmN1X2RlcmVmZXJlbmNlKHF1ZXVlX2hhbmRsZXJbcGZdKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfVENQTVNTLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X1RDUE1TUy5jCmluZGV4IDZlNmI0NmMuLjllNjNiNDMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIveHRfVENQTVNTLmMKKysrIGIvbmV0L25ldGZpbHRlci94dF9UQ1BNU1MuYwpAQCAtMTY2LDcgKzE2Niw3IEBACiAJcmN1X3JlYWRfbG9jaygpOwogCWFpID0gbmZfZ2V0X2FmaW5mbyhmYW1pbHkpOwogCWlmIChhaSAhPSBOVUxMKQotCQlhaS0+cm91dGUoKHN0cnVjdCBkc3RfZW50cnkgKiopJnJ0LCAmZmwpOworCQlhaS0+cm91dGUoJmluaXRfbmV0LCAoc3RydWN0IGRzdF9lbnRyeSAqKikmcnQsICZmbCwgZmFsc2UpOwogCXJjdV9yZWFkX3VubG9jaygpOwogCiAJaWYgKHJ0ICE9IE5VTEwpIHsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfYWRkcnR5cGUuYyBiL25ldC9uZXRmaWx0ZXIveHRfYWRkcnR5cGUuYwppbmRleCAyMjIwYjg1Li5iNzdkMzgzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X2FkZHJ0eXBlLmMKKysrIGIvbmV0L25ldGZpbHRlci94dF9hZGRydHlwZS5jCkBAIC0zMiwxMSArMzIsMzIgQEAKIE1PRFVMRV9BTElBUygiaXA2dF9hZGRydHlwZSIpOwogCiAjaWYgZGVmaW5lZChDT05GSUdfSVA2X05GX0lQVEFCTEVTKSB8fCBkZWZpbmVkKENPTkZJR19JUDZfTkZfSVBUQUJMRVNfTU9EVUxFKQotc3RhdGljIHUzMiB4dF9hZGRydHlwZV9ydDZfdG9fdHlwZShjb25zdCBzdHJ1Y3QgcnQ2X2luZm8gKnJ0KQorc3RhdGljIHUzMiBtYXRjaF9sb29rdXBfcnQ2KHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgKmFkZHIpCiB7CisJY29uc3Qgc3RydWN0IG5mX2FmaW5mbyAqYWZpbmZvOworCXN0cnVjdCBmbG93aTYgZmxvdzsKKwlzdHJ1Y3QgcnQ2X2luZm8gKnJ0OwogCXUzMiByZXQ7CisJaW50IHJvdXRlX2VycjsKIAotCWlmICghcnQpCisJbWVtc2V0KCZmbG93LCAwLCBzaXplb2YoZmxvdykpOworCWlwdjZfYWRkcl9jb3B5KCZmbG93LmRhZGRyLCBhZGRyKTsKKwlpZiAoZGV2KQorCQlmbG93LmZsb3dpNl9vaWYgPSBkZXYtPmlmaW5kZXg7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisKKwlhZmluZm8gPSBuZl9nZXRfYWZpbmZvKE5GUFJPVE9fSVBWNik7CisJaWYgKGFmaW5mbyAhPSBOVUxMKQorCQlyb3V0ZV9lcnIgPSBhZmluZm8tPnJvdXRlKG5ldCwgKHN0cnVjdCBkc3RfZW50cnkgKiopJnJ0LAorCQkJCQlmbG93aTZfdG9fZmxvd2koJmZsb3cpLCAhIWRldik7CisJZWxzZQorCQlyb3V0ZV9lcnIgPSAxOworCisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwlpZiAocm91dGVfZXJyKQogCQlyZXR1cm4gWFRfQUREUlRZUEVfVU5SRUFDSEFCTEU7CiAKIAlpZiAocnQtPnJ0NmlfZmxhZ3MgJiBSVEZfUkVKRUNUKQpAQCAtNDgsNiArNjksOSBAQAogCQlyZXQgfD0gWFRfQUREUlRZUEVfTE9DQUw7CiAJaWYgKHJ0LT5ydDZpX2ZsYWdzICYgUlRGX0FOWUNBU1QpCiAJCXJldCB8PSBYVF9BRERSVFlQRV9BTllDQVNUOworCisKKwlkc3RfcmVsZWFzZSgmcnQtPmRzdCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNjUsMTggKzg5LDggQEAKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKChYVF9BRERSVFlQRV9MT0NBTCB8IFhUX0FERFJUWVBFX0FOWUNBU1QgfAotCSAgICAgWFRfQUREUlRZUEVfVU5SRUFDSEFCTEUpICYgbWFzaykgewotCQlzdHJ1Y3QgcnQ2X2luZm8gKnJ0OwotCQl1MzIgdHlwZTsKLQkJaW50IGlmaW5kZXggPSBkZXYgPyBkZXYtPmlmaW5kZXggOiAwOwotCi0JCXJ0ID0gcnQ2X2xvb2t1cChuZXQsIGFkZHIsIE5VTEwsIGlmaW5kZXgsICEhZGV2KTsKLQotCQl0eXBlID0geHRfYWRkcnR5cGVfcnQ2X3RvX3R5cGUocnQpOwotCi0JCWRzdF9yZWxlYXNlKCZydC0+ZHN0KTsKLQkJcmV0dXJuICEhKG1hc2sgJiB0eXBlKTsKLQl9CisJICAgICBYVF9BRERSVFlQRV9VTlJFQUNIQUJMRSkgJiBtYXNrKQorCQlyZXR1cm4gISEobWFzayAmIG1hdGNoX2xvb2t1cF9ydDYobmV0LCBkZXYsIGFkZHIpKTsKIAlyZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9jb25udHJhY2suYyBiL25ldC9uZXRmaWx0ZXIveHRfY29ubnRyYWNrLmMKaW5kZXggMmMwMDg2YS4uNDgxYTg2ZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci94dF9jb25udHJhY2suYworKysgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm50cmFjay5jCkBAIC0xOTUsNyArMTk1LDcgQEAKIAkJcmV0dXJuIGluZm8tPm1hdGNoX2ZsYWdzICYgWFRfQ09OTlRSQUNLX1NUQVRFOwogCWlmICgoaW5mby0+bWF0Y2hfZmxhZ3MgJiBYVF9DT05OVFJBQ0tfRElSRUNUSU9OKSAmJgogCSAgICAoQ1RJTkZPMkRJUihjdGluZm8pID09IElQX0NUX0RJUl9PUklHSU5BTCkgXgotCSAgICAhIShpbmZvLT5pbnZlcnRfZmxhZ3MgJiBYVF9DT05OVFJBQ0tfRElSRUNUSU9OKSkKKwkgICAgIShpbmZvLT5pbnZlcnRfZmxhZ3MgJiBYVF9DT05OVFJBQ0tfRElSRUNUSU9OKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKGluZm8tPm1hdGNoX2ZsYWdzICYgWFRfQ09OTlRSQUNLX09SSUdTUkMpCmRpZmYgLS1naXQgYS9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfZG9tYWluaGFzaC5jIGIvbmV0L25ldGxhYmVsL25ldGxhYmVsX2RvbWFpbmhhc2guYwppbmRleCBkMzdiN2Y4Li5kZTBkOGU0IDEwMDY0NAotLS0gYS9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfZG9tYWluaGFzaC5jCisrKyBiL25ldC9uZXRsYWJlbC9uZXRsYWJlbF9kb21haW5oYXNoLmMKQEAgLTEwOSw3ICsxMDksNyBAQAogICoKICAqIERlc2NyaXB0aW9uOgogICogVGhpcyBpcyB0aGUgaGFzaGluZyBmdW5jdGlvbiBmb3IgdGhlIGRvbWFpbiBoYXNoIHRhYmxlLCBpdCByZXR1cm5zIHRoZQotICogY29ycmVjdCBidWNrZXQgbnVtYmVyIGZvciB0aGUgZG9tYWluLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJpbGUgZm9yCisgKiBjb3JyZWN0IGJ1Y2tldCBudW1iZXIgZm9yIHRoZSBkb21haW4uICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcgogICogZW5zdXJpbmcgdGhhdCB0aGUgaGFzaCB0YWJsZSBpcyBwcm90ZWN0ZWQgd2l0aCBlaXRoZXIgYSBSQ1UgcmVhZCBsb2NrIG9yIHRoZQogICogaGFzaCB0YWJsZSBsb2NrLgogICoKQEAgLTEzNCw3ICsxMzQsNyBAQAogICoKICAqIERlc2NyaXB0aW9uOgogICogU2VhcmNoZXMgdGhlIGRvbWFpbiBoYXNoIHRhYmxlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgaGFzaCB0YWJsZQotICogZW50cnkgaWYgZm91bmQsIG90aGVyd2lzZSBOVUxMIGlzIHJldHVybmVkLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJpbGUgZm9yCisgKiBlbnRyeSBpZiBmb3VuZCwgb3RoZXJ3aXNlIE5VTEwgaXMgcmV0dXJuZWQuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcgogICogZW5zdXJpbmcgdGhhdCB0aGUgaGFzaCB0YWJsZSBpcyBwcm90ZWN0ZWQgd2l0aCBlaXRoZXIgYSBSQ1UgcmVhZCBsb2NrIG9yIHRoZQogICogaGFzaCB0YWJsZSBsb2NrLgogICoKQEAgLTE2NSw3ICsxNjUsNyBAQAogICogU2VhcmNoZXMgdGhlIGRvbWFpbiBoYXNoIHRhYmxlIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgaGFzaCB0YWJsZQogICogZW50cnkgaWYgYW4gZXhhY3QgbWF0Y2ggaXMgZm91bmQsIGlmIGFuIGV4YWN0IG1hdGNoIGlzIG5vdCBwcmVzZW50IGluIHRoZQogICogaGFzaCB0YWJsZSB0aGVuIHRoZSBkZWZhdWx0IGVudHJ5IGlzIHJldHVybmVkIGlmIHZhbGlkIG90aGVyd2lzZSBOVUxMIGlzCi0gKiByZXR1cm5lZC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2liaWxlIGVuc3VyaW5nIHRoYXQgdGhlIGhhc2ggdGFibGUgaXMKKyAqIHJldHVybmVkLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBlbnN1cmluZyB0aGF0IHRoZSBoYXNoIHRhYmxlIGlzCiAgKiBwcm90ZWN0ZWQgd2l0aCBlaXRoZXIgYSBSQ1UgcmVhZCBsb2NrIG9yIHRoZSBoYXNoIHRhYmxlIGxvY2suCiAgKgogICovCkBAIC0xOTMsNyArMTkzLDcgQEAKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqIEdlbmVyYXRlIGFuIGF1ZGl0IHJlY29yZCBmb3IgYWRkaW5nIGEgbmV3IE5ldExhYmVsL0xTTSBtYXBwaW5nIGVudHJ5IHdpdGgKLSAqIHRoZSBnaXZlbiBpbmZvcm1hdGlvbi4gIENhbGxlciBpcyByZXNwb25zaWJpbGUgZm9yIGhvbGRpbmcgdGhlIG5lY2Vzc2FyeQorICogdGhlIGdpdmVuIGluZm9ybWF0aW9uLiAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIHRoZSBuZWNlc3NhcnkKICAqIGxvY2tzLgogICoKICAqLwpAQCAtNjA1LDcgKzYwNSw3IEBACiAgKgogICogRGVzY3JpcHRpb246CiAgKiBMb29rIHRocm91Z2ggdGhlIGRvbWFpbiBoYXNoIHRhYmxlIHNlYXJjaGluZyBmb3IgYW4gZW50cnkgdG8gbWF0Y2ggQGRvbWFpbiwKLSAqIHJldHVybiBhIHBvaW50ZXIgdG8gYSBjb3B5IG9mIHRoZSBlbnRyeSBvciBOVUxMLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJpbGUKKyAqIHJldHVybiBhIHBvaW50ZXIgdG8gYSBjb3B5IG9mIHRoZSBlbnRyeSBvciBOVUxMLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZQogICogZm9yIGVuc3VyaW5nIHRoYXQgcmN1X3JlYWRfW3VuXWxvY2soKSBpcyBjYWxsZWQuCiAgKgogICovCmRpZmYgLS1naXQgYS9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfbWdtdC5jIGIvbmV0L25ldGxhYmVsL25ldGxhYmVsX21nbXQuYwppbmRleCA5OThlODVlLi40ZjI1MWIxIDEwMDY0NAotLS0gYS9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfbWdtdC5jCisrKyBiL25ldC9uZXRsYWJlbC9uZXRsYWJlbF9tZ210LmMKQEAgLTI1OSw3ICsyNTksNyBAQAogICoKICAqIERlc2NyaXB0aW9uOgogICogVGhpcyBmdW5jdGlvbiBpcyBhIGhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBMSVNUQUxMIGFuZCBMSVNUREVGIGNvbW1hbmQKLSAqIGhhbmRsZXJzLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJpbGUgZm9yIGVuc3VyaW5nIHRoYXQgdGhlIFJDVSByZWFkIGxvY2sKKyAqIGhhbmRsZXJzLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGUgUkNVIHJlYWQgbG9jawogICogaXMgaGVsZC4gIFJldHVybnMgemVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZXMgb24gZmFpbHVyZS4KICAqCiAgKi8KZGlmZiAtLWdpdCBhL25ldC9yZHMvaWJfc2VuZC5jIGIvbmV0L3Jkcy9pYl9zZW5kLmMKaW5kZXggYzQ3YTUxMS4uN2M0ZGNlOCAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9pYl9zZW5kLmMKKysrIGIvbmV0L3Jkcy9pYl9zZW5kLmMKQEAgLTM1NSw3ICszNTUsNyBAQAogICoKICAqIENvbmNlcHR1YWxseSwgd2UgaGF2ZSB0d28gY291bnRlcnM6CiAgKiAgLQlzZW5kIGNyZWRpdHM6IHRoaXMgdGVsbHMgdXMgaG93IG1hbnkgV1JzIHdlJ3JlIGFsbG93ZWQKLSAqCXRvIHN1Ym1pdCB3aXRob3V0IG92ZXJydW5pbmcgdGhlIHJlY2lldmVyJ3MgcXVldWUuIEZvcgorICoJdG8gc3VibWl0IHdpdGhvdXQgb3ZlcnJ1bmluZyB0aGUgcmVjZWl2ZXIncyBxdWV1ZS4gRm9yCiAgKgllYWNoIFNFTkQgV1Igd2UgcG9zdCwgd2UgZGVjcmVtZW50IHRoaXMgYnkgb25lLgogICoKICAqICAtCXBvc3RlZCBjcmVkaXRzOiB0aGlzIHRlbGxzIHVzIGhvdyBtYW55IFdScyB3ZSByZWNlbnRseQpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pd19jbS5jIGIvbmV0L3Jkcy9pd19jbS5jCmluZGV4IDcxMmNmMmQuLjNhNjBhMTUgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaXdfY20uYworKysgYi9uZXQvcmRzL2l3X2NtLmMKQEAgLTE4MSw3ICsxODEsNyBAQAogCXVuc2lnbmVkIGludCBzZW5kX3NpemUsIHJlY3Zfc2l6ZTsKIAlpbnQgcmV0OwogCi0JLyogVGhlIG9mZnNldCBvZiAxIGlzIHRvIGFjY29tb2RhdGUgdGhlIGFkZGl0aW9uYWwgQUNLIFdSLiAqLworCS8qIFRoZSBvZmZzZXQgb2YgMSBpcyB0byBhY2NvbW1vZGF0ZSB0aGUgYWRkaXRpb25hbCBBQ0sgV1IuICovCiAJc2VuZF9zaXplID0gbWluX3QodW5zaWduZWQgaW50LCByZHNfaXdkZXYtPm1heF93cnMsIHJkc19pd19zeXNjdGxfbWF4X3NlbmRfd3IgKyAxKTsKIAlyZWN2X3NpemUgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIHJkc19pd2Rldi0+bWF4X3dycywgcmRzX2l3X3N5c2N0bF9tYXhfcmVjdl93ciArIDEpOwogCXJkc19pd19yaW5nX3Jlc2l6ZShzZW5kX3JpbmcsIHNlbmRfc2l6ZSAtIDEpOwpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pd19yZG1hLmMgYi9uZXQvcmRzL2l3X3JkbWEuYwppbmRleCA1OTUwOWU5Li42ZGVhYTc3IDEwMDY0NAotLS0gYS9uZXQvcmRzL2l3X3JkbWEuYworKysgYi9uZXQvcmRzL2l3X3JkbWEuYwpAQCAtMTIyLDcgKzEyMiw3IEBACiAjZWxzZQogCQkJLyogRklYTUUgLSBuZWVkcyB0byBjb21wYXJlIHRoZSBsb2NhbCBhbmQgcmVtb3RlCiAJCQkgKiBpcGFkZHIvcG9ydCB0dXBsZSwgYnV0IHRoZSBpcGFkZHIgaXMgdGhlIG9ubHkKLQkJCSAqIGF2YWlsYWJsZSBpbmZvbWF0aW9uIGluIHRoZSByZHNfc29jayAoYXMgdGhlIHJlc3QgYXJlCisJCQkgKiBhdmFpbGFibGUgaW5mb3JtYXRpb24gaW4gdGhlIHJkc19zb2NrIChhcyB0aGUgcmVzdCBhcmUKIAkJCSAqIHplcm8nZWQuICBJdCBkb2Vzbid0IGFwcGVhciB0byBiZSBwcm9wZXJseSBwb3B1bGF0ZWQKIAkJCSAqIGR1cmluZyBjb25uZWN0aW9uIHNldHVwLi4uCiAJCQkgKi8KZGlmZiAtLWdpdCBhL25ldC9yZHMvaXdfc2VuZC5jIGIvbmV0L3Jkcy9pd19zZW5kLmMKaW5kZXggNjI4MGVhMC4uNTQ1ZDhlZSAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9pd19zZW5kLmMKKysrIGIvbmV0L3Jkcy9pd19zZW5kLmMKQEAgLTMwNyw3ICszMDcsNyBAQAogICoKICAqIENvbmNlcHR1YWxseSwgd2UgaGF2ZSB0d28gY291bnRlcnM6CiAgKiAgLQlzZW5kIGNyZWRpdHM6IHRoaXMgdGVsbHMgdXMgaG93IG1hbnkgV1JzIHdlJ3JlIGFsbG93ZWQKLSAqCXRvIHN1Ym1pdCB3aXRob3V0IG92ZXJydW5pbmcgdGhlIHJlY2lldmVyJ3MgcXVldWUuIEZvcgorICoJdG8gc3VibWl0IHdpdGhvdXQgb3ZlcnJ1bmluZyB0aGUgcmVjZWl2ZXIncyBxdWV1ZS4gRm9yCiAgKgllYWNoIFNFTkQgV1Igd2UgcG9zdCwgd2UgZGVjcmVtZW50IHRoaXMgYnkgb25lLgogICoKICAqICAtCXBvc3RlZCBjcmVkaXRzOiB0aGlzIHRlbGxzIHVzIGhvdyBtYW55IFdScyB3ZSByZWNlbnRseQpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuYwppbmRleCAzNWI5YzJlLi5kNThhZTVmIDEwMDY0NAotLS0gYS9uZXQvcmRzL3NlbmQuYworKysgYi9uZXQvcmRzL3NlbmQuYwpAQCAtMTE2LDcgKzExNiw3IEBACiB9CiAKIC8qCi0gKiBXZSdyZSBtYWtpbmcgdGhlIGNvbmNpb3VzIHRyYWRlLW9mZiBoZXJlIHRvIG9ubHkgc2VuZCBvbmUgbWVzc2FnZQorICogV2UncmUgbWFraW5nIHRoZSBjb25zY2lvdXMgdHJhZGUtb2ZmIGhlcmUgdG8gb25seSBzZW5kIG9uZSBtZXNzYWdlCiAgKiBkb3duIHRoZSBjb25uZWN0aW9uIGF0IGEgdGltZS4KICAqICAgUHJvOgogICogICAgICAtIHR4IHF1ZXVlaW5nIGlzIGEgc2ltcGxlIGZpZm8gbGlzdApkaWZmIC0tZ2l0IGEvbmV0L3Jvc2Uvcm9zZV9yb3V0ZS5jIGIvbmV0L3Jvc2Uvcm9zZV9yb3V0ZS5jCmluZGV4IDA4ZGNkMmYuLjQ3OWNhZTUgMTAwNjQ0Ci0tLSBhL25ldC9yb3NlL3Jvc2Vfcm91dGUuYworKysgYi9uZXQvcm9zZS9yb3NlX3JvdXRlLmMKQEAgLTU4Nyw3ICs1ODcsNyBAQAogCiAvKgogICoJQ2hlY2sgdGhhdCB0aGUgZGV2aWNlIGdpdmVuIGlzIGEgdmFsaWQgQVguMjUgaW50ZXJmYWNlIHRoYXQgaXMgInVwIi4KLSAqIAljYWxsZWQgd2hpdGggUlROTAorICogCWNhbGxlZCB3aXRoIFJUTkwKICAqLwogc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpyb3NlX2F4MjVfZGV2X2ZpbmQoY2hhciAqZGV2bmFtZSkKIHsKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfYXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCmluZGV4IDE1ODczZTEuLjE0YjQyZjQgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmMKKysrIGIvbmV0L3NjaGVkL2FjdF9hcGkuYwpAQCAtOTk5LDcgKzk5OSw3IEBACiAJc3dpdGNoIChuLT5ubG1zZ190eXBlKSB7CiAJY2FzZSBSVE1fTkVXQUNUSU9OOgogCQkvKiB3ZSBhcmUgZ29pbmcgdG8gYXNzdW1lIGFsbCBvdGhlciBmbGFncwotCQkgKiBpbXBseSBjcmVhdGUgb25seSBpZiBpdCBkb2VzbnQgZXhpc3QKKwkJICogaW1wbHkgY3JlYXRlIG9ubHkgaWYgaXQgZG9lc24ndCBleGlzdAogCQkgKiBOb3RlIHRoYXQgQ1JFQVRFIHwgRVhDTCBpbXBsaWVzIHRoYXQKIAkJICogYnV0IHNpbmNlIHdlIHdhbnQgYXZvaWQgYW1iaWd1aXR5IChlZyB3aGVuIGZsYWdzCiAJCSAqIGlzIHplcm8pIHRoZW4ganVzdCBzZXQgdGhpcwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9wZWRpdC5jIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCmluZGV4IDUwYzdjMDYuLjdhZmZlOWEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYworKysgYi9uZXQvc2NoZWQvYWN0X3BlZGl0LmMKQEAgLTE2MSw3ICsxNjEsNyBAQAogCQkJfQogCQkJaWYgKG9mZnNldCA+IDAgJiYgb2Zmc2V0ID4gc2tiLT5sZW4pIHsKIAkJCQlwcl9pbmZvKCJ0YyBmaWx0ZXIgcGVkaXQiCi0JCQkJCSIgb2Zmc2V0ICVkIGNhbnQgZXhjZWVkIHBrdCBsZW5ndGggJWRcbiIsCisJCQkJCSIgb2Zmc2V0ICVkIGNhbid0IGV4Y2VlZCBwa3QgbGVuZ3RoICVkXG4iLAogCQkJCSAgICAgICBvZmZzZXQsIHNrYi0+bGVuKTsKIAkJCQlnb3RvIGJhZDsKIAkJCX0KZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9lbV9tZXRhLmMgYi9uZXQvc2NoZWQvZW1fbWV0YS5jCmluZGV4IGE0ZGU2N2UuLjQ5MTMwZTggMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9lbV9tZXRhLmMKKysrIGIvbmV0L3NjaGVkL2VtX21ldGEuYwpAQCAtNDcsNyArNDcsNyBAQAogICogCW9uIHRoZSBtZXRhIHR5cGUuIE9idmlvdXNseSwgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBtdXN0IGFsc28KICAqIAliZSBwcm92aWRlZCBmb3Igbm9uLW51bWVyaWMgdHlwZXMuCiAgKgotICogCUFkZGl0aW9uYWx5LCB0eXBlIGRlcGVuZGFudCBtb2RpZmllcnMgc3VjaCBhcyBzaGlmdCBvcGVyYXRvcnMKKyAqIAlBZGRpdGlvbmFsbHksIHR5cGUgZGVwZW5kZW50IG1vZGlmaWVycyBzdWNoIGFzIHNoaWZ0IG9wZXJhdG9ycwogICogCW9yIG1hc2sgbWF5IGJlIGFwcGxpZWQgdG8gZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXkuIEFzIG9mIG5vdywKICAqIAl0aGUgdmFyaWFibGUgbGVuZ3RoIHR5cGUgc3VwcG9ydHMgc2hpZnRpbmcgdGhlIGJ5dGUgc3RyaW5nIHRvCiAgKiAJdGhlIHJpZ2h0LCBlYXRpbmcgdXAgYW55IG51bWJlciBvZiBvY3RldHMgYW5kIHRodXMgc3VwcG9ydGluZwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9odGIuYyBiL25ldC9zY2hlZC9zY2hfaHRiLmMKaW5kZXggZTE0MjlhOC4uMjliOTQyYyAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9odGIuYworKysgYi9uZXQvc2NoZWQvc2NoX2h0Yi5jCkBAIC0xODMsNyArMTgzLDcgQEAKICAqIGZpbHRlcnMgaW4gcWRpc2MgYW5kIGluIGlubmVyIG5vZGVzIChpZiBoaWdoZXIgZmlsdGVyIHBvaW50cyB0byB0aGUgaW5uZXIKICAqIG5vZGUpLiBJZiB3ZSBlbmQgdXAgd2l0aCBjbGFzc2lkIE1BSk9SOjAgd2UgZW5xdWV1ZSB0aGUgc2tiIGludG8gc3BlY2lhbAogICogaW50ZXJuYWwgZmlmbyAoZGlyZWN0KS4gVGhlc2UgcGFja2V0cyB0aGVuIGdvIGRpcmVjdGx5IHRocnUuIElmIHdlIHN0aWxsCi0gKiBoYXZlIG5vIHZhbGlkIGxlYWYgd2UgdHJ5IHRvIHVzZSBNQUpPUjpkZWZhdWx0IGxlYWYuIEl0IHN0aWxsIHVuc3VjY2Vzc2Z1bGwKKyAqIGhhdmUgbm8gdmFsaWQgbGVhZiB3ZSB0cnkgdG8gdXNlIE1BSk9SOmRlZmF1bHQgbGVhZi4gSXQgc3RpbGwgdW5zdWNjZXNzZnVsCiAgKiB0aGVuIGZpbmlzaCBhbmQgcmV0dXJuIGRpcmVjdCBxdWV1ZS4KICAqLwogI2RlZmluZSBIVEJfRElSRUNUICgoc3RydWN0IGh0Yl9jbGFzcyAqKS0xTCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfbmV0ZW0uYyBiL25ldC9zY2hlZC9zY2hfbmV0ZW0uYwppbmRleCBlZGJiZjdhLi42OWMzNWY2IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX25ldGVtLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9uZXRlbS5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAl1MzIgcm5kID0gbmV0X3JhbmRvbSgpOwogCiAJLyoKLQkgKiBNYWtlcyBhIGNvbXBhcmlzaW9uIGJldHdlZW4gcm5kIGFuZCB0aGUgdHJhbnNpdGlvbgorCSAqIE1ha2VzIGEgY29tcGFyaXNvbiBiZXR3ZWVuIHJuZCBhbmQgdGhlIHRyYW5zaXRpb24KIAkgKiBwcm9iYWJpbGl0aWVzIG91dGdvaW5nIGZyb20gdGhlIGN1cnJlbnQgc3RhdGUsIHRoZW4gZGVjaWRlcyB0aGUKIAkgKiBuZXh0IHN0YXRlIGFuZCBpZiB0aGUgbmV4dCBwYWNrZXQgaGFzIHRvIGJlIHRyYW5zbWl0dGVkIG9yIGxvc3QuCiAJICogVGhlIGZvdXIgc3RhdGVzIGNvcnJlc3BvbmQgdG86CkBAIC0yMTIsOSArMjEyLDkgQEAKICAqIEdlbmVyYXRlcyBsb3NzZXMgYWNjb3JkaW5nIHRvIHRoZSBHaWxiZXJ0LUVsbGlvdCBsb3NzIG1vZGVsIG9yCiAgKiBpdHMgc3BlY2lhbCBjYXNlcyAgKEdpbGJlcnQgb3IgU2ltcGxlIEdpbGJlcnQpCiAgKgotICogTWFrZXMgYSBjb21wYXJpc2lvbiBiZXR3ZWVuIHJhbmRvbSBudW1iZXIgYW5kIHRoZSB0cmFuc2l0aW9uCisgKiBNYWtlcyBhIGNvbXBhcmlzb24gYmV0d2VlbiByYW5kb20gbnVtYmVyIGFuZCB0aGUgdHJhbnNpdGlvbgogICogcHJvYmFiaWxpdGllcyBvdXRnb2luZyBmcm9tIHRoZSBjdXJyZW50IHN0YXRlLCB0aGVuIGRlY2lkZXMgdGhlCi0gKiBuZXh0IHN0YXRlLiBBIHNlY29uZCByYW5kb20gbnVtYmVyIGlzIGV4dHJhY3RlZCBhbmQgdGhlIGNvbXBhcmlzaW9uCisgKiBuZXh0IHN0YXRlLiBBIHNlY29uZCByYW5kb20gbnVtYmVyIGlzIGV4dHJhY3RlZCBhbmQgdGhlIGNvbXBhcmlzb24KICAqIHdpdGggdGhlIGxvc3MgcHJvYmFiaWxpdHkgb2YgdGhlIGN1cnJlbnQgc3RhdGUgZGVjaWRlcyBpZiB0aGUgbmV4dAogICogcGFja2V0IHdpbGwgYmUgdHJhbnNtaXR0ZWQgb3IgbG9zdC4KICAqLwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwppbmRleCA2YjA0Mjg3Li4wNjk4Y2FkIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9hc3NvY2lvbGEuYworKysgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYwpAQCAtMTU5Myw3ICsxNTkzLDcgQEAKIAlzdHJ1Y3Qgc2N0cF9jaHVuayAqYWNrOwogCXN0cnVjdCBzY3RwX2NodW5rICp0bXA7CiAKLQkvKiBXZSBjYW4gcmVtb3ZlIGFsbCB0aGUgZW50cmllcyBmcm9tIHRoZSBxdWV1ZSB1cHRvCisJLyogV2UgY2FuIHJlbW92ZSBhbGwgdGhlIGVudHJpZXMgZnJvbSB0aGUgcXVldWUgdXAgdG8KIAkgKiB0aGUgIlBlZXItU2VxdWVuY2UtTnVtYmVyIi4KIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWNrLCB0bXAsICZhc29jLT5hc2NvbmZfYWNrX2xpc3QsCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmMKaW5kZXggZGRiYmY3Yy4uODY1ZTY4ZiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvYXV0aC5jCisrKyBiL25ldC9zY3RwL2F1dGguYwpAQCAtMTEzLDcgKzExMyw3IEBACiAJcmV0dXJuIG5ldzsKIH0KIAotLyogRnJlZSB0aGUgc2hhcmVkIGtleSBzdHVjdHVyZSAqLworLyogRnJlZSB0aGUgc2hhcmVkIGtleSBzdHJ1Y3R1cmUgKi8KIHN0YXRpYyB2b2lkIHNjdHBfYXV0aF9zaGtleV9mcmVlKHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNoX2tleSkKIHsKIAlCVUdfT04oIWxpc3RfZW1wdHkoJnNoX2tleS0+a2V5X2xpc3QpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQAogCWtmcmVlKHNoX2tleSk7CiB9CiAKLS8qIERlc3RvcnkgdGhlIGVudGlyZSBrZXkgbGlzdC4gIFRoaXMgaXMgZG9uZSBkdXJpbmcgdGhlCisvKiBEZXN0cm95IHRoZSBlbnRpcmUga2V5IGxpc3QuICBUaGlzIGlzIGRvbmUgZHVyaW5nIHRoZQogICogYXNzb2Npb24gYW5kIGVuZHBvaW50IGZyZWUgcHJvY2Vzcy4KICAqLwogdm9pZCBzY3RwX2F1dGhfZGVzdHJveV9rZXlzKHN0cnVjdCBsaXN0X2hlYWQgKmtleXMpCkBAIC0zMjQsNyArMzI0LDcgQEAKIAlpZiAoIXBlZXJfa2V5X3ZlY3RvciB8fCAhbG9jYWxfa2V5X3ZlY3RvcikKIAkJZ290byBvdXQ7CiAKLQkvKiBGaWd1cmUgb3V0IHRoZSBvcmRlciBpbiB3aWNoIHRoZSBrZXlfdmVjdG9ycyB3aWxsIGJlCisJLyogRmlndXJlIG91dCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGtleV92ZWN0b3JzIHdpbGwgYmUKIAkgKiBhZGRlZCB0byB0aGUgZW5kcG9pbnQgc2hhcmVkIGtleS4KIAkgKiBTQ1RQLUFVVEgsIFNlY3Rpb24gNi4xOgogCSAqICAgVGhpcyBpcyBwZXJmb3JtZWQgYnkgc2VsZWN0aW5nIHRoZSBudW1lcmljYWxseSBzbWFsbGVyIGtleQpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvaW5wdXQuYyBiL25ldC9zY3RwL2lucHV0LmMKaW5kZXggODI2NjYxYi4uNTQzNmM2OSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvaW5wdXQuYworKysgYi9uZXQvc2N0cC9pbnB1dC5jCkBAIC0xMDM0LDcgKzEwMzQsNyBAQAogKiAgICBhc3NvY2lhdGlvbi4KICoKICogVGhpcyBtZWFucyB0aGF0IGFueSBjaHVua3MgdGhhdCBjYW4gaGVscCB1cyBpZGVudGlmeSB0aGUgYXNzb2NpYXRpb24gbmVlZAotKiB0byBiZSBsb29rZWQgYXQgdG8gZmluZCB0aGlzIGFzc29jYXRpb24uCisqIHRvIGJlIGxvb2tlZCBhdCB0byBmaW5kIHRoaXMgYXNzb2NpYXRpb24uCiAqLwogc3RhdGljIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpfX3NjdHBfcmN2X3dhbGtfbG9va3VwKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgICAgY29uc3QgdW5pb24gc2N0cF9hZGRyICpsYWRkciwKZGlmZiAtLWdpdCBhL25ldC9zY3RwL291dHB1dC5jIGIvbmV0L3NjdHAvb3V0cHV0LmMKaW5kZXggNjA2MDBkMy4uYjRmM2NmMCAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvb3V0cHV0LmMKKysrIGIvbmV0L3NjdHAvb3V0cHV0LmMKQEAgLTUxMCw3ICs1MTAsNyBAQAogCQlzaC0+Y2hlY2tzdW0gPSBzY3RwX2VuZF9ja3N1bShjcmMzMik7CiAJfSBlbHNlIHsKIAkJaWYgKGRzdC0+ZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfU0NUUF9DU1VNKSB7Ci0JCQkvKiBubyBuZWVkIHRvIHNlZWQgcHN1ZWRvIGNoZWNrc3VtIGZvciBTQ1RQICovCisJCQkvKiBubyBuZWVkIHRvIHNlZWQgcHNldWRvIGNoZWNrc3VtIGZvciBTQ1RQICovCiAJCQluc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9QQVJUSUFMOwogCQkJbnNrYi0+Y3N1bV9zdGFydCA9IChza2JfdHJhbnNwb3J0X2hlYWRlcihuc2tiKSAtCiAJCQkgICAgICAgICAgICAgICAgICAgIG5za2ItPmhlYWQpOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmMKaW5kZXggMjZkYzAwNTEuLmJmOTJhNWIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL291dHF1ZXVlLmMKKysrIGIvbmV0L3NjdHAvb3V0cXVldWUuYwpAQCAtMTc3LDEzICsxNzcsMTMgQEAKICAqIDMpIElmIHRoZSBtaXNzaW5nIHJlcG9ydCBjb3VudCBmb3IgVFNOIHQgaXMgdG8gYmUKICAqIGluY3JlbWVudGVkIGFjY29yZGluZyB0byBbUkZDMjk2MF0gYW5kCiAgKiBbU0NUUF9TVEVXQVJULTIwMDJdLCBhbmQgQ0hBTkdFT1ZFUl9BQ1RJVkUgaXMgc2V0LAotICogdGhlbiB0aGUgc2VuZGVyIE1VU1QgZnV0aGVyIGV4ZWN1dGUgc3RlcHMgMy4xIGFuZAorICogdGhlbiB0aGUgc2VuZGVyIE1VU1QgZnVydGhlciBleGVjdXRlIHN0ZXBzIDMuMSBhbmQKICAqIDMuMiB0byBkZXRlcm1pbmUgaWYgdGhlIG1pc3NpbmcgcmVwb3J0IGNvdW50IGZvcgogICogVFNOIHQgU0hPVUxEIE5PVCBiZSBpbmNyZW1lbnRlZC4KICAqCiAgKiAzLjMpIElmIDMuMSBhbmQgMy4yIGRvIG5vdCBkaWN0YXRlIHRoYXQgdGhlIG1pc3NpbmcKICAqIHJlcG9ydCBjb3VudCBmb3IgdCBzaG91bGQgbm90IGJlIGluY3JlbWVudGVkLCB0aGVuCi0gKiB0aGUgc2VuZGVyIFNPVUxEIGluY3JlbWVudCBtaXNzaW5nIHJlcG9ydCBjb3VudCBmb3IKKyAqIHRoZSBzZW5kZXIgU0hPVUxEIGluY3JlbWVudCBtaXNzaW5nIHJlcG9ydCBjb3VudCBmb3IKICAqIHQgKGFjY29yZGluZyB0byBbUkZDMjk2MF0gYW5kIFtTQ1RQX1NURVdBUlRfMjAwMl0pLgogICovCiBzdGF0aWMgaW5saW5lIGludCBzY3RwX2NhY2Nfc2tpcChzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnByaW1hcnksCkBAIC04NDMsNyArODQzLDcgQEAKIAkJY2FzZSBTQ1RQX0NJRF9FQ05fQ1dSOgogCQljYXNlIFNDVFBfQ0lEX0FTQ09ORl9BQ0s6CiAJCQlvbmVfcGFja2V0ID0gMTsKLQkJCS8qIEZhbGwgdGhyb3VnaHQgKi8KKwkJCS8qIEZhbGwgdGhyb3VnaCAqLwogCiAJCWNhc2UgU0NUUF9DSURfU0FDSzoKIAkJY2FzZSBTQ1RQX0NJRF9IRUFSVEJFQVQ6CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMgYi9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKaW5kZXggYjIxYjIxOC4uNWY4NmVlNGIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYworKysgYi9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKQEAgLTQ4Miw3ICs0ODIsNyBAQAogCSAqIElmIHRoZSB0aW1lciB3YXMgYSBoZWFydGJlYXQsIHdlIG9ubHkgaW5jcmVtZW50IGVycm9yIGNvdW50cwogCSAqIHdoZW4gd2UgYWxyZWFkeSBoYXZlIGFuIG91dHN0YW5kaW5nIEhFQVJUQkVBVCB0aGF0IGhhcyBub3QKIAkgKiBiZWVuIGFja25vd2xlZGdlZC4KLQkgKiBBZGRpdGlvbmFseSwgc29tZSB0cmFucG9ydCBzdGF0ZXMgaW5oaWJpdCBlcnJvciBpbmNyZW1lbnRzLgorCSAqIEFkZGl0aW9uYWxseSwgc29tZSB0cmFucG9ydCBzdGF0ZXMgaW5oaWJpdCBlcnJvciBpbmNyZW1lbnRzLgogCSAqLwogCWlmICghaXNfaGIpIHsKIAkJYXNvYy0+b3ZlcmFsbF9lcnJvcl9jb3VudCsrOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCA0YjRlYjdjLi43Njc5MjA4IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYworKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwpAQCAtNTUxLDcgKzU1MSw3IEBACiAJCSAqCiAJCSAqIFRoaXMgbWVhbnMgdGhhdCBpZiB3ZSBvbmx5IHdhbnQgdG8gYWJvcnQgYXNzb2NpYXRpb25zCiAJCSAqIGluIGFuIGF1dGhlbnRpY2F0ZWQgd2F5IChpLmUgQVVUSCtBQk9SVCksIHRoZW4gd2UKLQkJICogY2FuJ3QgZGVzdHJveSB0aGlzIGFzc29jaWF0aW9uIGp1c3QgYmVjdWFzZSB0aGUgcGFja2V0CisJCSAqIGNhbid0IGRlc3Ryb3kgdGhpcyBhc3NvY2lhdGlvbiBqdXN0IGJlY2F1c2UgdGhlIHBhY2tldAogCQkgKiB3YXMgbWFsZm9ybWVkLgogCQkgKi8KIAkJaWYgKHNjdHBfYXV0aF9yZWN2X2NpZChTQ1RQX0NJRF9BQk9SVCwgYXNvYykpCkBAIC0xNTQ2LDcgKzE1NDYsNyBAQAogfQogCiAvKgotICogSGFuZGxlIHNpbXVsdGFub3VzIElOSVQuCisgKiBIYW5kbGUgc2ltdWx0YW5lb3VzIElOSVQuCiAgKiBUaGlzIG1lYW5zIHdlIHN0YXJ0ZWQgYW4gSU5JVCBhbmQgdGhlbiB3ZSBnb3QgYW4gSU5JVCByZXF1ZXN0IGZyb20KICAqIG91ciBwZWVyLgogICoKQEAgLTIwNzksNyArMjA3OSw3IEBACiAJICogUkZDIDI5NjAsIFNlY3Rpb24gMy4zLjcKIAkgKiAgICBJZiBhbiBlbmRwb2ludCByZWNlaXZlcyBhbiBBQk9SVCB3aXRoIGEgZm9ybWF0IGVycm9yIG9yIGZvciBhbgogCSAqICAgIGFzc29jaWF0aW9uIHRoYXQgZG9lc24ndCBleGlzdCwgaXQgTVVTVCBzaWxlbnRseSBkaXNjYXJkIGl0LgotCSAqIEJlY2FzdWUgdGhlIGxlbmd0aCBpcyAiaW52YWxpZCIsIHdlIGNhbid0IHJlYWxseSBkaXNjYXJkIGp1c3QKKwkgKiBCZWNhdXNlIHRoZSBsZW5ndGggaXMgImludmFsaWQiLCB3ZSBjYW4ndCByZWFsbHkgZGlzY2FyZCBqdXN0CiAJICogYXMgd2UgZG8gbm90IGtub3cgaXRzIHRydWUgbGVuZ3RoLiAgU28sIHRvIGJlIHNhZmUsIGRpc2NhcmQgdGhlCiAJICogcGFja2V0LgogCSAqLwpAQCAtMjEyMCw3ICsyMTIwLDcgQEAKIAkgKiBSRkMgMjk2MCwgU2VjdGlvbiAzLjMuNwogCSAqICAgIElmIGFuIGVuZHBvaW50IHJlY2VpdmVzIGFuIEFCT1JUIHdpdGggYSBmb3JtYXQgZXJyb3Igb3IgZm9yIGFuCiAJICogICAgYXNzb2NpYXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LCBpdCBNVVNUIHNpbGVudGx5IGRpc2NhcmQgaXQuCi0JICogQmVjYXN1ZSB0aGUgbGVuZ3RoIGlzICJpbnZhbGlkIiwgd2UgY2FuJ3QgcmVhbGx5IGRpc2NhcmQganVzdAorCSAqIEJlY2F1c2UgdGhlIGxlbmd0aCBpcyAiaW52YWxpZCIsIHdlIGNhbid0IHJlYWxseSBkaXNjYXJkIGp1c3QKIAkgKiBhcyB3ZSBkbyBub3Qga25vdyBpdHMgdHJ1ZSBsZW5ndGguICBTbywgdG8gYmUgc2FmZSwgZGlzY2FyZCB0aGUKIAkgKiBwYWNrZXQuCiAJICovCkBAIC0yMzgxLDcgKzIzODEsNyBAQAogCSAqIFJGQyAyOTYwLCBTZWN0aW9uIDMuMy43CiAJICogICAgSWYgYW4gZW5kcG9pbnQgcmVjZWl2ZXMgYW4gQUJPUlQgd2l0aCBhIGZvcm1hdCBlcnJvciBvciBmb3IgYW4KIAkgKiAgICBhc3NvY2lhdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QsIGl0IE1VU1Qgc2lsZW50bHkgZGlzY2FyZCBpdC4KLQkgKiBCZWNhc3VlIHRoZSBsZW5ndGggaXMgImludmFsaWQiLCB3ZSBjYW4ndCByZWFsbHkgZGlzY2FyZCBqdXN0CisJICogQmVjYXVzZSB0aGUgbGVuZ3RoIGlzICJpbnZhbGlkIiwgd2UgY2FuJ3QgcmVhbGx5IGRpc2NhcmQganVzdAogCSAqIGFzIHdlIGRvIG5vdCBrbm93IGl0cyB0cnVlIGxlbmd0aC4gIFNvLCB0byBiZSBzYWZlLCBkaXNjYXJkIHRoZQogCSAqIHBhY2tldC4KIAkgKi8KQEAgLTI0NDgsNyArMjQ0OCw3IEBACiAJICogUkZDIDI5NjAsIFNlY3Rpb24gMy4zLjcKIAkgKiAgICBJZiBhbiBlbmRwb2ludCByZWNlaXZlcyBhbiBBQk9SVCB3aXRoIGEgZm9ybWF0IGVycm9yIG9yIGZvciBhbgogCSAqICAgIGFzc29jaWF0aW9uIHRoYXQgZG9lc24ndCBleGlzdCwgaXQgTVVTVCBzaWxlbnRseSBkaXNjYXJkIGl0LgotCSAqIEJlY2FzdWUgdGhlIGxlbmd0aCBpcyAiaW52YWxpZCIsIHdlIGNhbid0IHJlYWxseSBkaXNjYXJkIGp1c3QKKwkgKiBCZWNhdXNlIHRoZSBsZW5ndGggaXMgImludmFsaWQiLCB3ZSBjYW4ndCByZWFsbHkgZGlzY2FyZCBqdXN0CiAJICogYXMgd2UgZG8gbm90IGtub3cgaXRzIHRydWUgbGVuZ3RoLiAgU28sIHRvIGJlIHNhZmUsIGRpc2NhcmQgdGhlCiAJICogcGFja2V0LgogCSAqLwpAQCAtMzg1NSw3ICszODU1LDcgQEAKIH0KIAogLyoKLSAqIFNDVFAtQVVUSCBTZWN0aW9uIDYuMyBSZWNldmluZyBhdXRoZW50aWNhdGVkIGNodWtucworICogU0NUUC1BVVRIIFNlY3Rpb24gNi4zIFJlY2VpdmluZyBhdXRoZW50aWNhdGVkIGNodWtucwogICoKICAqICAgIFRoZSByZWNlaXZlciBNVVNUIHVzZSB0aGUgSE1BQyBhbGdvcml0aG0gaW5kaWNhdGVkIGluIHRoZSBITUFDCiAgKiAgICBJZGVudGlmaWVyIGZpZWxkLiAgSWYgdGhpcyBhbGdvcml0aG0gd2FzIG5vdCBzcGVjaWZpZWQgYnkgdGhlCkBAIC00MjMxLDcgKzQyMzEsNyBAQAogCSAqCiAJICogVGhpcyBtZWFucyB0aGF0IGlmIHdlIG9ubHkgd2FudCB0byBhYm9ydCBhc3NvY2lhdGlvbnMKIAkgKiBpbiBhbiBhdXRoZW50aWNhdGVkIHdheSAoaS5lIEFVVEgrQUJPUlQpLCB0aGVuIHdlCi0JICogY2FuJ3QgZGVzdHJveSB0aGlzIGFzc29jaWF0aW9uIGp1c3QgYmVjdWFzZSB0aGUgcGFja2V0CisJICogY2FuJ3QgZGVzdHJveSB0aGlzIGFzc29jaWF0aW9uIGp1c3QgYmVjYXVzZSB0aGUgcGFja2V0CiAJICogd2FzIG1hbGZvcm1lZC4KIAkgKi8KIAlpZiAoc2N0cF9hdXRoX3JlY3ZfY2lkKFNDVFBfQ0lEX0FCT1JULCBhc29jKSkKQEAgLTQ0MDIsOSArNDQwMiw5IEBACiB9CiAKIC8qIEhhbmRsZSBwcm90b2NvbCB2aW9sYXRpb24gb2YgYW4gaW52YWxpZCBjaHVuayBidW5kbGluZy4gIEZvciBleGFtcGxlLAotICogd2hlbiB3ZSBoYXZlIGFuIGFzc29jaWF0aW9uIGFuZCB3ZSByZWNpZXZlIGJ1bmRsZWQgSU5JVC1BQ0ssIG9yCisgKiB3aGVuIHdlIGhhdmUgYW4gYXNzb2NpYXRpb24gYW5kIHdlIHJlY2VpdmUgYnVuZGxlZCBJTklULUFDSywgb3IKICAqIFNIVURPV04tQ09NUExFVEUsIG91ciBwZWVyIGlzIGNsZWFybHkgdmlvbGF0aW9uZyB0aGUgIk1VU1QgTk9UIGJ1bmRsZSIKLSAqIHN0YXRlbWVudCBmcm9tIHRoZSBzcGVjcy4gIEFkZGl0aW5hbGx5LCB0aGVyZSBtaWdodCBiZSBhbiBhdHRhY2tlcgorICogc3RhdGVtZW50IGZyb20gdGhlIHNwZWNzLiAgQWRkaXRpb25hbGx5LCB0aGVyZSBtaWdodCBiZSBhbiBhdHRhY2tlcgogICogb24gdGhlIHBhdGggYW5kIHdlIG1heSBub3Qgd2FudCB0byBjb250aW51ZSB0aGlzIGNvbW11bmljYXRpb24uCiAgKi8KIHN0YXRpYyBzY3RwX2Rpc3Bvc2l0aW9uX3Qgc2N0cF9zZl92aW9sYXRpb25fY2h1bmsoCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zb2NrZXQuYyBiL25ldC9zY3RwL3NvY2tldC5jCmluZGV4IDM5NTFhMTAuLmRlYjgyZTMgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NvY2tldC5jCisrKyBiL25ldC9zY3RwL3NvY2tldC5jCkBAIC0xMTkzLDcgKzExOTMsNyBAQAogICogYW4gZW5kcG9pbnQgdGhhdCBpcyBtdWx0aS1ob21lZC4gIE11Y2ggbGlrZSBzY3RwX2JpbmR4KCkgdGhpcyBjYWxsCiAgKiBhbGxvd3MgYSBjYWxsZXIgdG8gc3BlY2lmeSBtdWx0aXBsZSBhZGRyZXNzZXMgYXQgd2hpY2ggYSBwZWVyIGNhbiBiZQogICogcmVhY2hlZC4gIFRoZSB3YXkgdGhlIFNDVFAgc3RhY2sgdXNlcyB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgdG8gc2V0IHVwCi0gKiB0aGUgYXNzb2NpYXRpb24gaXMgaW1wbGVtZW50YXRpb24gZGVwZW5kYW50LiAgVGhpcyBmdW5jdGlvbiBvbmx5CisgKiB0aGUgYXNzb2NpYXRpb24gaXMgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50LiAgVGhpcyBmdW5jdGlvbiBvbmx5CiAgKiBzcGVjaWZpZXMgdGhhdCB0aGUgc3RhY2sgd2lsbCB0cnkgdG8gbWFrZSB1c2Ugb2YgYWxsIHRoZSBhZGRyZXNzZXMgaW4KICAqIHRoZSBsaXN0IHdoZW4gbmVlZGVkLgogICoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3VscGV2ZW50LmMgYi9uZXQvc2N0cC91bHBldmVudC5jCmluZGV4IGFhNzJlODkuLmRmZjI3ZDUgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3VscGV2ZW50LmMKKysrIGIvbmV0L3NjdHAvdWxwZXZlbnQuYwpAQCAtNTU0LDcgKzU1NCw3IEBACiAJbWVtY3B5KCZzc2YtPnNzZl9pbmZvLCAmY2h1bmstPnNpbmZvLCBzaXplb2Yoc3RydWN0IHNjdHBfc25kcmN2aW5mbykpOwogCiAJLyogUGVyIFRTVldHIGRpc2N1c3Npb24gd2l0aCBSYW5keS4gQWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvCi0JICogcmVzc2VtYmxlIGEgZnJhZ21lbnRlZCBtZXNzYWdlLgorCSAqIHJlc2VtYmxlIGEgZnJhZ21lbnRlZCBtZXNzYWdlLgogCSAqLwogCXNzZi0+c3NmX2luZm8uc2luZm9fZmxhZ3MgPSBjaHVuay0+Y2h1bmtfaGRyLT5mbGFnczsKIApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvdWxwcXVldWUuYyBiL25ldC9zY3RwL3VscHF1ZXVlLmMKaW5kZXggMTc2NzgxOC4uZjJkMWRlNyAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvdWxwcXVldWUuYworKysgYi9uZXQvc2N0cC91bHBxdWV1ZS5jCkBAIC0yNDAsNyArMjQwLDcgQEAKIAkJfSBlbHNlIHsKIAkJCS8qCiAJCQkgKiBJZiBmcmFnbWVudCBpbnRlcmxlYXZlIGlzIGVuYWJsZWQsIHdlCi0JCQkgKiBjYW4gcXVldWUgdGhpcyB0byB0aGUgcmVjaWV2ZSBxdWV1ZSBpbnN0ZWFkCisJCQkgKiBjYW4gcXVldWUgdGhpcyB0byB0aGUgcmVjZWl2ZSBxdWV1ZSBpbnN0ZWFkCiAJCQkgKiBvZiB0aGUgbG9iYnkuCiAJCQkgKi8KIAkJCWlmIChzY3RwX3NrKHNrKS0+ZnJhZ19pbnRlcmxlYXZlKQpkaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIvbmV0L3NvY2tldC5jCmluZGV4IDUyMTI0NDcuLjMxMGQxNmIgMTAwNjQ0Ci0tLSBhL25ldC9zb2NrZXQuYworKysgYi9uZXQvc29ja2V0LmMKQEAgLTI5ODYsNyArMjk4Niw3IEBACiAKIC8qIFNpbmNlIG9sZCBzdHlsZSBicmlkZ2UgaW9jdGwncyBlbmR1cCB1c2luZyBTSU9DREVWUFJJVkFURQogICogZm9yIHNvbWUgb3BlcmF0aW9uczsgdGhpcyBmb3JjZXMgdXNlIG9mIHRoZSBuZXdlciBicmlkZ2UtdXRpbHMgdGhhdAotICogdXNlIGNvbXBhdGlhYmxlIGlvY3RscworICogdXNlIGNvbXBhdGlibGUgaW9jdGxzCiAgKi8KIHN0YXRpYyBpbnQgb2xkX2JyaWRnZV9pb2N0bChjb21wYXRfdWxvbmdfdCBfX3VzZXIgKmFyZ3ApCiB7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL2F1dGhfZ3NzL2dzc19rcmI1X21lY2guYyBiL25ldC9zdW5ycGMvYXV0aF9nc3MvZ3NzX2tyYjVfbWVjaC5jCmluZGV4IDkwMjJmMGEuLjBhOWEyZWMgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvYXV0aF9nc3MvZ3NzX2tyYjVfbWVjaC5jCisrKyBiL25ldC9zdW5ycGMvYXV0aF9nc3MvZ3NzX2tyYjVfbWVjaC5jCkBAIC00MjcsNyArNDI3LDcgQEAKIGNvbnRleHRfZGVyaXZlX2tleXNfcmM0KHN0cnVjdCBrcmI1X2N0eCAqY3R4KQogewogCXN0cnVjdCBjcnlwdG9faGFzaCAqaG1hYzsKLQlzdGF0aWMgY29uc3QgY2hhciBzaWdrZXljb25zdGFudFtdID0gInNpZ25hdHVyZWtleSI7CisJY2hhciBzaWdrZXljb25zdGFudFtdID0gInNpZ25hdHVyZWtleSI7CiAJaW50IHNsZW4gPSBzdHJsZW4oc2lna2V5Y29uc3RhbnQpICsgMTsJLyogaW5jbHVkZSBudWxsIHRlcm1pbmF0b3IgKi8KIAlzdHJ1Y3QgaGFzaF9kZXNjIGRlc2M7CiAJc3RydWN0IHNjYXR0ZXJsaXN0IHNnWzFdOwpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jIGIvbmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jCmluZGV4IGJjZGFlNzguLjhkMGY3ZDMgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYworKysgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL3N2Y2F1dGhfZ3NzLmMKQEAgLTExMDEsNyArMTEwMSw3IEBACiAKIAkvKiBjcmVkZW50aWFsIGlzOgogCSAqICAgdmVyc2lvbig9PTEpLCBwcm9jKDAsMSwyLDMpLCBzZXEsIHNlcnZpY2UgKDEsMiwzKSwgaGFuZGxlCi0JICogYXQgbGVhc3QgNSB1MzJzLCBhbmQgaXMgcHJlY2VlZGVkIGJ5IGxlbmd0aCwgc28gdGhhdCBtYWtlcyA2LgorCSAqIGF0IGxlYXN0IDUgdTMycywgYW5kIGlzIHByZWNlZGVkIGJ5IGxlbmd0aCwgc28gdGhhdCBtYWtlcyA2LgogCSAqLwogCiAJaWYgKGFyZ3YtPmlvdl9sZW4gPCA1ICogNCkKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHNvY2suYyBiL25ldC9zdW5ycGMveHBydHNvY2suYwppbmRleCAxZTMzNmEwLi5iZjAwNWQzIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3hwcnRzb2NrLmMKKysrIGIvbmV0L3N1bnJwYy94cHJ0c29jay5jCkBAIC01MDQsNyArNTA0LDcgQEAKICAqICAgRUFHQUlOOglUaGUgc29ja2V0IHdhcyBibG9ja2VkLCBwbGVhc2UgY2FsbCBhZ2FpbiBsYXRlciB0bwogICoJCWNvbXBsZXRlIHRoZSByZXF1ZXN0CiAgKiBFTk9UQ09OTjoJQ2FsbGVyIG5lZWRzIHRvIGludm9rZSBjb25uZWN0IGxvZ2ljIHRoZW4gY2FsbCBhZ2FpbgotICogICAgb3RoZXI6CVNvbWUgb3RoZXIgZXJyb3Igb2NjdXJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CisgKiAgICBvdGhlcjoJU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CiAgKi8KIHN0YXRpYyBpbnQgeHNfdWRwX3NlbmRfcmVxdWVzdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spCiB7CkBAIC01OTAsNyArNTkwLDcgQEAKICAqICAgRUFHQUlOOglUaGUgc29ja2V0IHdhcyBibG9ja2VkLCBwbGVhc2UgY2FsbCBhZ2FpbiBsYXRlciB0bwogICoJCWNvbXBsZXRlIHRoZSByZXF1ZXN0CiAgKiBFTk9UQ09OTjoJQ2FsbGVyIG5lZWRzIHRvIGludm9rZSBjb25uZWN0IGxvZ2ljIHRoZW4gY2FsbCBhZ2FpbgotICogICAgb3RoZXI6CVNvbWUgb3RoZXIgZXJyb3Igb2NjdXJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CisgKiAgICBvdGhlcjoJU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CiAgKgogICogWFhYOiBJbiB0aGUgY2FzZSBvZiBzb2Z0IHRpbWVvdXRzLCBzaG91bGQgd2UgZXZlbnR1YWxseSBnaXZlIHVwCiAgKglpZiBzZW5kbXNnIGlzIG5vdCBhYmxlIHRvIG1ha2UgcHJvZ3Jlc3M/CmRpZmYgLS1naXQgYS9uZXQvdGlwYy9saW5rLmMgYi9uZXQvdGlwYy9saW5rLmMKaW5kZXggNDM2MzlmZi4uZWJmMzM4ZiAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvbGluay5jCisrKyBiL25ldC90aXBjL2xpbmsuYwpAQCAtMjQ3MSw3ICsyNDcxLDcgQEAKICAqIEEgcGVuZGluZyBtZXNzYWdlIGJlaW5nIHJlLWFzc2VtYmxlZCBtdXN0IHN0b3JlIGNlcnRhaW4gdmFsdWVzCiAgKiB0byBoYW5kbGUgc3Vic2VxdWVudCBmcmFnbWVudHMgY29ycmVjdGx5LiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucwogICogaGVscCBzdG9yaW5nIHRoZXNlIHZhbHVlcyBpbiB1bnVzZWQsIGF2YWlsYWJsZSBmaWVsZHMgaW4gdGhlCi0gKiBwZW5kaW5nIG1lc3NhZ2UuIFRoaXMgbWFrZXMgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB1bmVjZXNzYXJ5LgorICogcGVuZGluZyBtZXNzYWdlLiBUaGlzIG1ha2VzIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gdW5uZWNlc3NhcnkuCiAgKi8KIAogc3RhdGljIHZvaWQgc2V0X2xvbmdfbXNnX3NlcW5vKHN0cnVjdCBza19idWZmICpidWYsIHUzMiBzZXFubykKZGlmZiAtLWdpdCBhL25ldC90aXBjL25hbWVfZGlzdHIuYyBiL25ldC90aXBjL25hbWVfZGlzdHIuYwppbmRleCBjOWZhNmRmLi44MDAyNWExIDEwMDY0NAotLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmMKKysrIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAogCWJ1ZiA9IG5hbWVkX3ByZXBhcmVfYnVmKFdJVEhEUkFXQUwsIElURU1fU0laRSwgMCk7CiAJaWYgKCFidWYpIHsKLQkJd2FybigiV2l0aGRyYXdsIGRpc3RyaWJ1dGlvbiBmYWlsdXJlXG4iKTsKKwkJd2FybigiV2l0aGRyYXdhbCBkaXN0cmlidXRpb24gZmFpbHVyZVxuIik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCAxNjYzZTFhLi4zYTQzYTgzIDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBAIC0yMDcsNyArMjA3LDcgQEAKIAkJLyoKIAkJICogVGhpcyBtYXkgbG9vayBsaWtlIGFuIG9mZiBieSBvbmUgZXJyb3IgYnV0IGl0IGlzIGEgYml0IG1vcmUKIAkJICogc3VidGxlLiAxMDggaXMgdGhlIGxvbmdlc3QgdmFsaWQgQUZfVU5JWCBwYXRoIGZvciBhIGJpbmRpbmcuCi0JCSAqIHN1bl9wYXRoWzEwOF0gZG9lc250IGFzIHN1Y2ggZXhpc3QuICBIb3dldmVyIGluIGtlcm5lbCBzcGFjZQorCQkgKiBzdW5fcGF0aFsxMDhdIGRvZXNuJ3QgYXMgc3VjaCBleGlzdC4gIEhvd2V2ZXIgaW4ga2VybmVsIHNwYWNlCiAJCSAqIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgaXQgaXMgYSB2YWxpZCBtZW1vcnkgbG9jYXRpb24gaW4gb3VyCiAJCSAqIGtlcm5lbCBhZGRyZXNzIGJ1ZmZlci4KIAkJICovCmRpZmYgLS1naXQgYS9uZXQvd2Fucm91dGVyL3dhbnByb2MuYyBiL25ldC93YW5yb3V0ZXIvd2FucHJvYy5jCmluZGV4IDExZjI1YzcuLmYzNDYzOTUgMTAwNjQ0Ci0tLSBhL25ldC93YW5yb3V0ZXIvd2FucHJvYy5jCisrKyBiL25ldC93YW5yb3V0ZXIvd2FucHJvYy5jCkBAIC01MSw3ICs1MSw3IEBACiAKIC8qCiAgKglTdHJ1Y3R1cmVzIGZvciBpbnRlcmZhY2luZyB3aXRoIHRoZSAvcHJvYyBmaWxlc3lzdGVtLgotICoJUm91dGVyIGNyZWF0ZXMgaXRzIG93biBkaXJlY3RvcnkgL3Byb2MvbmV0L3JvdXRlciB3aXRoIHRoZSBmb2xvd2luZworICoJUm91dGVyIGNyZWF0ZXMgaXRzIG93biBkaXJlY3RvcnkgL3Byb2MvbmV0L3JvdXRlciB3aXRoIHRoZSBmb2xsb3dpbmcKICAqCWVudHJpZXM6CiAgKgljb25maWcJCWRldmljZSBjb25maWd1cmF0aW9uCiAgKglzdGF0dXMJCWdsb2JhbCBkZXZpY2Ugc3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3JlZy5jIGIvbmV0L3dpcmVsZXNzL3JlZy5jCmluZGV4IDMzMzJkNWIuLmFiODAxYTEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9yZWcuYworKysgYi9uZXQvd2lyZWxlc3MvcmVnLmMKQEAgLTgwOSw3ICs4MDksNyBAQAogCWlmIChyKSB7CiAJCS8qCiAJCSAqIFdlIHdpbGwgZGlzYWJsZSBhbGwgY2hhbm5lbHMgdGhhdCBkbyBub3QgbWF0Y2ggb3VyCi0JCSAqIHJlY2lldmVkIHJlZ3VsYXRvcnkgcnVsZSB1bmxlc3MgdGhlIGhpbnQgaXMgY29taW5nCisJCSAqIHJlY2VpdmVkIHJlZ3VsYXRvcnkgcnVsZSB1bmxlc3MgdGhlIGhpbnQgaXMgY29taW5nCiAJCSAqIGZyb20gYSBDb3VudHJ5IElFIGFuZCB0aGUgQ291bnRyeSBJRSBoYWQgbm8gaW5mb3JtYXRpb24KIAkJICogYWJvdXQgYSBiYW5kLiBUaGUgSUVFRSA4MDIuMTEgc3BlYyBhbGxvd3MgZm9yIGFuIEFQCiAJCSAqIHRvIHNlbmQgb25seSBhIHN1YnNldCBvZiB0aGUgcmVndWxhdG9yeSBydWxlcyBhbGxvd2VkLApAQCAtODM4LDcgKzgzOCw3IEBACiAJICAgIHJlcXVlc3Rfd2lwaHkgJiYgcmVxdWVzdF93aXBoeSA9PSB3aXBoeSAmJgogCSAgICByZXF1ZXN0X3dpcGh5LT5mbGFncyAmIFdJUEhZX0ZMQUdfU1RSSUNUX1JFR1VMQVRPUlkpIHsKIAkJLyoKLQkJICogVGhpcyBnYXVyYW50ZWVzIHRoZSBkcml2ZXIncyByZXF1ZXN0ZWQgcmVndWxhdG9yeSBkb21haW4KKwkJICogVGhpcyBndWFyYW50ZWVzIHRoZSBkcml2ZXIncyByZXF1ZXN0ZWQgcmVndWxhdG9yeSBkb21haW4KIAkJICogd2lsbCBhbHdheXMgYmUgdXNlZCBhcyBhIGJhc2UgZm9yIGZ1cnRoZXIgcmVndWxhdG9yeQogCQkgKiBzZXR0aW5ncwogCQkgKi8KZGlmZiAtLWdpdCBhL25ldC94MjUveDI1X2ZhY2lsaXRpZXMuYyBiL25ldC94MjUveDI1X2ZhY2lsaXRpZXMuYwppbmRleCA0MDYyMDc1Li5mNzdlNGU3IDEwMDY0NAotLS0gYS9uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMKKysrIGIvbmV0L3gyNS94MjVfZmFjaWxpdGllcy5jCkBAIC0zMSw3ICszMSw3IEBACiAgKiB4MjVfcGFyc2VfZmFjaWxpdGllcyAtIFBhcnNlIGZhY2lsaXRpZXMgZnJvbSBza2IgaW50byB0aGUgZmFjaWxpdGllcyBzdHJ1Y3RzCiAgKgogICogQHNrYjogc2tfYnVmZiB0byBwYXJzZQotICogQGZhY2lsaXRpZXM6IFJlZ3VsYXIgZmFjaWxpdGVzLCB1cGRhdGVkIGFzIGZhY2lsaXRpZXMgYXJlIGZvdW5kCisgKiBAZmFjaWxpdGllczogUmVndWxhciBmYWNpbGl0aWVzLCB1cGRhdGVkIGFzIGZhY2lsaXRpZXMgYXJlIGZvdW5kCiAgKiBAZHRlX2ZhY3M6IElUVSBEVEUgZmFjaWxpdGllcywgdXBkYXRlZCBhcyBEVEUgZmFjaWxpdGllcyBhcmUgZm91bmQKICAqIEB2Y19mYWNfbWFzazogbWFzayBpcyB1cGRhdGVkIHdpdGggYWxsIGZhY2lsaXRpZXMgZm91bmQKICAqCmRpZmYgLS1naXQgYS9uZXQveDI1L3gyNV9mb3J3YXJkLmMgYi9uZXQveDI1L3gyNV9mb3J3YXJkLmMKaW5kZXggMjVhODEwNzkuLmM1NDFiNjIgMTAwNjQ0Ci0tLSBhL25ldC94MjUveDI1X2ZvcndhcmQuYworKysgYi9uZXQveDI1L3gyNV9mb3J3YXJkLmMKQEAgLTMxLDcgKzMxLDcgQEAKIAkJZ290byBvdXRfbm9fcm91dGU7CiAKIAlpZiAoKG5laWdoX25ldyA9IHgyNV9nZXRfbmVpZ2gocnQtPmRldikpID09IE5VTEwpIHsKLQkJLyogVGhpcyBzaG91bGRudCBoYXBwZW4sIGlmIGl0IG9jY3VycyBzb21laG93CisJCS8qIFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgaWYgaXQgb2NjdXJzIHNvbWVob3cKIAkJICogZG8gc29tZXRoaW5nIHNlbnNpYmxlCiAJCSAqLwogCQlnb3RvIG91dF9wdXRfcm91dGU7CkBAIC00NSw3ICs0NSw3IEBACiAJfQogCiAJLyogUmVtb3RlIGVuZCBzZW5kaW5nIGEgY2FsbCByZXF1ZXN0IG9uIGFuIGFscmVhZHkKLQkgKiBlc3RhYmxpc2hlZCBMQ0k/IEl0IHNob3VsZG50IGhhcHBlbiwganVzdCBpbiBjYXNlLi4KKwkgKiBlc3RhYmxpc2hlZCBMQ0k/IEl0IHNob3VsZG4ndCBoYXBwZW4sIGp1c3QgaW4gY2FzZS4uCiAJICovCiAJcmVhZF9sb2NrX2JoKCZ4MjVfZm9yd2FyZF9saXN0X2xvY2spOwogCWxpc3RfZm9yX2VhY2goZW50cnksICZ4MjVfZm9yd2FyZF9saXN0KSB7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IDNkMTVkM2UuLjVkMWQ2MGQgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCisrKyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC04OTQsNyArODk0LDcgQEAKIAl1MzIgKmY7CiAKIAlubGggPSBubG1zZ19wdXQoc2tiLCBwaWQsIHNlcSwgWEZSTV9NU0dfTkVXU1BESU5GTywgc2l6ZW9mKHUzMiksIDApOwotCWlmIChubGggPT0gTlVMTCkgLyogc2hvdWxkbnQgcmVhbGx5IGhhcHBlbiAuLi4gKi8KKwlpZiAobmxoID09IE5VTEwpIC8qIHNob3VsZG4ndCByZWFsbHkgaGFwcGVuIC4uLiAqLwogCQlyZXR1cm4gLUVNU0dTSVpFOwogCiAJZiA9IG5sbXNnX2RhdGEobmxoKTsKQEAgLTk1NCw3ICs5NTQsNyBAQAogCXUzMiAqZjsKIAogCW5saCA9IG5sbXNnX3B1dChza2IsIHBpZCwgc2VxLCBYRlJNX01TR19ORVdTQURJTkZPLCBzaXplb2YodTMyKSwgMCk7Ci0JaWYgKG5saCA9PSBOVUxMKSAvKiBzaG91bGRudCByZWFsbHkgaGFwcGVuIC4uLiAqLworCWlmIChubGggPT0gTlVMTCkgLyogc2hvdWxkbid0IHJlYWxseSBoYXBwZW4gLi4uICovCiAJCXJldHVybiAtRU1TR1NJWkU7CiAKIAlmID0gbmxtc2dfZGF0YShubGgpOwpAQCAtMTM2MSw3ICsxMzYxLDcgQEAKIAlpZiAoIXhwKQogCQlyZXR1cm4gZXJyOwogCi0JLyogc2hvdWxkbnQgZXhjbCBiZSBiYXNlZCBvbiBubGggZmxhZ3M/PworCS8qIHNob3VsZG4ndCBleGNsIGJlIGJhc2VkIG9uIG5saCBmbGFncz8/CiAJICogQWhhISB0aGlzIGlzIGFudGktbmV0bGluayByZWFsbHkgaS5lICBtb3JlIHBma2V5IGRlcml2ZWQKIAkgKiBpbiBuZXRsaW5rIGV4Y2wgaXMgYSBmbGFnIGFuZCB5b3Ugd291bGRudCBuZWVkCiAJICogYSB0eXBlIFhGUk1fTVNHX1VQRFBPTElDWSAtIEpIUyAqLwpkaWZmIC0tZ2l0IGEvc2FtcGxlcy9LY29uZmlnIGIvc2FtcGxlcy9LY29uZmlnCmluZGV4IGUwM2NmMGUuLjQxMDYzZTcgMTAwNjQ0Ci0tLSBhL3NhbXBsZXMvS2NvbmZpZworKysgYi9zYW1wbGVzL0tjb25maWcKQEAgLTU1LDcgKzU1LDcgQEAKIAkgIElmIGluIGRvdWJ0LCBzYXkgIk4iIGhlcmUuCiAKIGNvbmZpZyBTQU1QTEVfS0RCCi0JdHJpc3RhdGUgIkJ1aWxkIGtkYiBjb21tYW5kIGV4bWFwbGUgLS0gbG9hZGFibGUgbW9kdWxlcyBvbmx5IgorCXRyaXN0YXRlICJCdWlsZCBrZGIgY29tbWFuZCBleGFtcGxlIC0tIGxvYWRhYmxlIG1vZHVsZXMgb25seSIKIAlkZXBlbmRzIG9uIEtHREJfS0RCICYmIG0KIAloZWxwCiAJICBCdWlsZCBhbiBleGFtcGxlIG9mIGhvdyB0byBkeW5hbWljYWxseSBhZGQgdGhlIGhlbGxvCmRpZmYgLS1naXQgYS9zYW1wbGVzL2h3X2JyZWFrcG9pbnQvZGF0YV9icmVha3BvaW50LmMgYi9zYW1wbGVzL2h3X2JyZWFrcG9pbnQvZGF0YV9icmVha3BvaW50LmMKaW5kZXggYmQwZjMzNy4uMDYzNjUzOSAxMDA2NDQKLS0tIGEvc2FtcGxlcy9od19icmVha3BvaW50L2RhdGFfYnJlYWtwb2ludC5jCisrKyBiL3NhbXBsZXMvaHdfYnJlYWtwb2ludC9kYXRhX2JyZWFrcG9pbnQuYwpAQCAtMTksNyArMTksNyBAQAogICoKICAqIFRoaXMgZmlsZSBpcyBhIGtlcm5lbCBtb2R1bGUgdGhhdCBwbGFjZXMgYSBicmVha3BvaW50IG92ZXIga3N5bV9uYW1lIGtlcm5lbAogICogdmFyaWFibGUgdXNpbmcgSGFyZHdhcmUgQnJlYWtwb2ludCByZWdpc3Rlci4gVGhlIGNvcnJlc3BvbmRpbmcgaGFuZGxlciB3aGljaAotICogcHJpbnRzIGEgYmFja3RyYWNlIGlzIGludm9rZWQgZXZlcnl0aW1lIGEgd3JpdGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbgorICogcHJpbnRzIGEgYmFja3RyYWNlIGlzIGludm9rZWQgZXZlcnkgdGltZSBhIHdyaXRlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgb24KICAqIHRoYXQgdmFyaWFibGUuCiAgKgogICogQ29weXJpZ2h0IChDKSBJQk0gQ29ycG9yYXRpb24sIDIwMDkKZGlmZiAtLWdpdCBhL3NjcmlwdHMvTWFrZWZpbGUubW9kcG9zdCBiL3NjcmlwdHMvTWFrZWZpbGUubW9kcG9zdAppbmRleCA3ZDIyMDU2Li41NmRmYWZjIDEwMDY0NAotLS0gYS9zY3JpcHRzL01ha2VmaWxlLm1vZHBvc3QKKysrIGIvc2NyaXB0cy9NYWtlZmlsZS5tb2Rwb3N0CkBAIC0zNSwxNCArMzUsMTQgQEAKICMgS0JVSUxEX01PRFBPU1RfV0FSTiBjYW4gYmUgc2V0IHRvIGF2b2lkIGVycm9yIG91dCBpbiBjYXNlIG9mIHVuZGVmaW5lZAogIyBzeW1ib2xzIGluIHRoZSBmaW5hbCBtb2R1bGUgbGlua2luZyBzdGFnZQogIyBLQlVJTERfTU9EUE9TVF9OT0ZJTkFMIGNhbiBiZSBzZXQgdG8gc2tpcCB0aGUgZmluYWwgbGluayBvZiBtb2R1bGVzLgotIyBUaGlzIGlzIHNvbGVseSB1c2VmdWxsIHRvIHNwZWVkIHVwIHRlc3QgY29tcGlsZXMKKyMgVGhpcyBpcyBzb2xlbHkgdXNlZnVsIHRvIHNwZWVkIHVwIHRlc3QgY29tcGlsZXMKIFBIT05ZIDo9IF9tb2Rwb3N0CiBfbW9kcG9zdDogX19tb2Rwb3N0CiAKIGluY2x1ZGUgaW5jbHVkZS9jb25maWcvYXV0by5jb25mCiBpbmNsdWRlIHNjcmlwdHMvS2J1aWxkLmluY2x1ZGUKIAotIyBXaGVuIGJ1aWxkaW5nIGV4dGVybmFsIG1vZHVsZXMgbG9hZCB0aGUgS2J1aWxkIGZpbGUgdG8gcmV0cmVpdmUgRVhUUkFfU1lNQk9MUyBpbmZvCisjIFdoZW4gYnVpbGRpbmcgZXh0ZXJuYWwgbW9kdWxlcyBsb2FkIHRoZSBLYnVpbGQgZmlsZSB0byByZXRyaWV2ZSBFWFRSQV9TWU1CT0xTIGluZm8KIGlmbmVxICgkKEtCVUlMRF9FWFRNT0QpLCkKIAogIyBzZXQgc3JjICsgb2JqIC0gdGhleSBtYXkgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIHRoZSAubW9kLmMgZmlsZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jaGVja3BhdGNoLnBsIGIvc2NyaXB0cy9jaGVja3BhdGNoLnBsCmluZGV4IDhmOWUzOTQuLmQ4NjcwODEgMTAwNzU1Ci0tLSBhL3NjcmlwdHMvY2hlY2twYXRjaC5wbAorKysgYi9zY3JpcHRzL2NoZWNrcGF0Y2gucGwKQEAgLTE5NDYsMTMgKzE5NDYsMTMgQEAKICMgcHJpbnRrIHNob3VsZCB1c2UgS0VSTl8qIGxldmVscy4gIE5vdGUgdGhhdCBmb2xsb3cgb24gcHJpbnRrJ3Mgb24gdGhlCiAjIHNhbWUgbGluZSBkbyBub3QgbmVlZCBhIGxldmVsLCBzbyB3ZSB1c2UgdGhlIGN1cnJlbnQgYmxvY2sgY29udGV4dAogIyB0byB0cnkgYW5kIGZpbmQgYW5kIHZhbGlkYXRlIHRoZSBjdXJyZW50IHByaW50ay4gIEluIHN1bW1hcnkgdGhlIGN1cnJlbnQKLSMgcHJpbnRrIGluY2x1ZGVzIGFsbCBwcmVjZWVkaW5nIHByaW50aydzIHdoaWNoIGhhdmUgbm8gbmV3bGluZSBvbiB0aGUgZW5kLgorIyBwcmludGsgaW5jbHVkZXMgYWxsIHByZWNlZGluZyBwcmludGsncyB3aGljaCBoYXZlIG5vIG5ld2xpbmUgb24gdGhlIGVuZC4KICMgd2UgYXNzdW1lIHRoZSBmaXJzdCBiYWQgcHJpbnRrIGlzIHRoZSBvbmUgdG8gcmVwb3J0LgogCQlpZiAoJGxpbmUgPX4gL1xicHJpbnRrXCgoPyFLRVJOXylccyoiLykgewogCQkJbXkgJG9rID0gMDsKIAkJCWZvciAobXkgJGxuID0gJGxpbmVuciAtIDE7ICRsbiA+PSAkZmlyc3RfbGluZTsgJGxuLS0pIHsKIAkJCQkjcHJpbnQgIkNIRUNLPCRsaW5lc1skbG4gLSAxXVxuIjsKLQkJCQkjIHdlIGhhdmUgYSBwcmVjZWVkaW5nIHByaW50ayBpZiBpdCBlbmRzCisJCQkJIyB3ZSBoYXZlIGEgcHJlY2VkaW5nIHByaW50ayBpZiBpdCBlbmRzCiAJCQkJIyB3aXRoICJcbiIgaWdub3JlIGl0LCBlbHNlIGl0IGlzIHRvIGJsYW1lCiAJCQkJaWYgKCRsaW5lc1skbG4gLSAxXSA9fiBte1xicHJpbnRrXCh9KSB7CiAJCQkJCWlmICgkcmF3bGluZXNbJGxuIC0gMV0gIX4gbXtcXG4ifSkgewpAQCAtMjA0NCw3ICsyMDQ0LDcgQEAKIAkJCWZvciAobXkgJG4gPSAwOyAkbiA8ICQjZWxlbWVudHM7ICRuICs9IDIpIHsKIAkJCQkkb2ZmICs9IGxlbmd0aCgkZWxlbWVudHNbJG5dKTsKIAotCQkJCSMgUGljayB1cCB0aGUgcHJlY2VlZGluZyBhbmQgc3VjY2VlZGluZyBjaGFyYWN0ZXJzLgorCQkJCSMgUGljayB1cCB0aGUgcHJlY2VkaW5nIGFuZCBzdWNjZWVkaW5nIGNoYXJhY3RlcnMuCiAJCQkJbXkgJGNhID0gc3Vic3RyKCRvcGxpbmUsIDAsICRvZmYpOwogCQkJCW15ICRjYyA9ICcnOwogCQkJCWlmIChsZW5ndGgoJG9wbGluZSkgPj0gKCRvZmYgKyBsZW5ndGgoJGVsZW1lbnRzWyRuICsgMV0pKSkgewpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9kdGMvbGliZmR0L2xpYmZkdC5oIGIvc2NyaXB0cy9kdGMvbGliZmR0L2xpYmZkdC5oCmluZGV4IGNlODBlNGYuLmZmNjI0NmYgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvZHRjL2xpYmZkdC9saWJmZHQuaAorKysgYi9zY3JpcHRzL2R0Yy9saWJmZHQvbGliZmR0LmgKQEAgLTYxLDcgKzYxLDcgQEAKICNkZWZpbmUgRkRUX0VSUl9OT1RGT1VORAkxCiAJLyogRkRUX0VSUl9OT1RGT1VORDogVGhlIHJlcXVlc3RlZCBub2RlIG9yIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0ICovCiAjZGVmaW5lIEZEVF9FUlJfRVhJU1RTCQkyCi0JLyogRkRUX0VSUl9FWElTVFM6IEF0dGVtcGVkIHRvIGNyZWF0ZSBhIG5vZGUgb3IgcHJvcGVydHkgd2hpY2gKKwkvKiBGRFRfRVJSX0VYSVNUUzogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIG5vZGUgb3IgcHJvcGVydHkgd2hpY2gKIAkgKiBhbHJlYWR5IGV4aXN0cyAqLwogI2RlZmluZSBGRFRfRVJSX05PU1BBQ0UJCTMKIAkvKiBGRFRfRVJSX05PU1BBQ0U6IE9wZXJhdGlvbiBuZWVkZWQgdG8gZXhwYW5kIHRoZSBkZXZpY2UKZGlmZiAtLWdpdCBhL3NjcmlwdHMvZHRjL2xpdmV0cmVlLmMgYi9zY3JpcHRzL2R0Yy9saXZldHJlZS5jCmluZGV4IGM5MjA5ZDUuLjI2ZDBlMWUgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvZHRjL2xpdmV0cmVlLmMKKysrIGIvc2NyaXB0cy9kdGMvbGl2ZXRyZWUuYwpAQCAtMTU1LDcgKzE1NSw3IEBACiAJCQl9CiAJCX0KIAotCQkvKiBpZiBubyBjb2xsaXNpb24gb2NjdXJlZCwgYWRkIGNoaWxkIHRvIHRoZSBvbGQgbm9kZS4gKi8KKwkJLyogaWYgbm8gY29sbGlzaW9uIG9jY3VycmVkLCBhZGQgY2hpbGQgdG8gdGhlIG9sZCBub2RlLiAqLwogCQlpZiAobmV3X2NoaWxkKQogCQkJYWRkX2NoaWxkKG9sZF9ub2RlLCBuZXdfY2hpbGQpOwogCX0KZGlmZiAtLWdpdCBhL3NjcmlwdHMvZ2VuX2luaXRyYW1mc19saXN0LnNoIGIvc2NyaXB0cy9nZW5faW5pdHJhbWZzX2xpc3Quc2gKaW5kZXggNTVjYWVjZC4uZTEyYjFhNyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9nZW5faW5pdHJhbWZzX2xpc3Quc2gKKysrIGIvc2NyaXB0cy9nZW5faW5pdHJhbWZzX2xpc3Quc2gKQEAgLTI4NCw3ICsyODQsNyBAQAogZG9uZQogCiAjIElmIG91dHB1dF9maWxlIGlzIHNldCB3ZSB3aWxsIGdlbmVyYXRlIGNwaW8gYXJjaGl2ZSBhbmQgY29tcHJlc3MgaXQKLSMgd2UgYXJlIGNhcmVmdWxsIHRvIGRlbGV0ZSB0bXAgZmlsZXMKKyMgd2UgYXJlIGNhcmVmdWwgdG8gZGVsZXRlIHRtcCBmaWxlcwogaWYgWyAhIC16ICR7b3V0cHV0X2ZpbGV9IF07IHRoZW4KIAlpZiBbIC16ICR7Y3Bpb19maWxlfSBdOyB0aGVuCiAJCWNwaW9fdGZpbGU9IiQobWt0ZW1wICR7VE1QRElSOi0vdG1wfS9jcGlvZmlsZS5YWFhYWFgpIgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9rZXJuZWwtZG9jIGIvc2NyaXB0cy9rZXJuZWwtZG9jCmluZGV4IDlmODUwMTIuLmQ3OTMwMDEgMTAwNzU1Ci0tLSBhL3NjcmlwdHMva2VybmVsLWRvYworKysgYi9zY3JpcHRzL2tlcm5lbC1kb2MKQEAgLTE3MDUsNyArMTcwNSw3IEBACiAKIAkkcGFyYW0gPSB4bWxfZXNjYXBlKCRwYXJhbSk7CiAKLQkjIHN0cmlwIHNwYWNlcyBmcm9tICRwYXJhbSBzbyB0aGF0IGl0IGlzIG9uZSBjb250aW5vdXMgc3RyaW5nCisJIyBzdHJpcCBzcGFjZXMgZnJvbSAkcGFyYW0gc28gdGhhdCBpdCBpcyBvbmUgY29udGludW91cyBzdHJpbmcKIAkjIG9uIEBwYXJhbWV0ZXJsaXN0OwogCSMgdGhpcyBmaXhlcyBhIHByb2JsZW0gd2hlcmUgY2hlY2tfc2VjdGlvbnMoKSBjYW5ub3QgZmluZAogCSMgYSBwYXJhbWV0ZXIgbGlrZSAiYWRkcls2ICsgMl0iIGJlY2F1c2UgaXQgYWN0dWFsbHkgYXBwZWFycwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9wYWNrYWdlL2J1aWxkdGFyIGIvc2NyaXB0cy9wYWNrYWdlL2J1aWxkdGFyCmluZGV4IDgzYzljMDQuLjhhN2IxNTUgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvcGFja2FnZS9idWlsZHRhcgorKysgYi9zY3JpcHRzL3BhY2thZ2UvYnVpbGR0YXIKQEAgLTkyLDcgKzkyLDcgQEAKIAkJZWNobyAiIiA+JjIKIAkJZWNobyAnKiogKiogKiogIFdBUk5JTkcgICoqICoqICoqJyA+JjIKIAkJZWNobyAiIiA+JjIKLQkJZWNobyAiWW91ciBhcmNoaXRlY3R1cmUgZGlkIG5vdCBkZWZpbmUgYW55IGFyY2hpdGVjdHVyZS1kZXBlbmRhbnQgZmlsZXMiID4mMgorCQllY2hvICJZb3VyIGFyY2hpdGVjdHVyZSBkaWQgbm90IGRlZmluZSBhbnkgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyIgPiYyCiAJCWVjaG8gInRvIGJlIHBsYWNlZCBpbnRvIHRoZSB0YXJiYWxsLiBQbGVhc2UgYWRkIHRob3NlIHRvICR7MH0gLi4uIiA+JjIKIAkJZWNobyAiIiA+JjIKIAkJc2xlZXAgNQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9ydC10ZXN0ZXIvcnQtdGVzdGVyLnB5IGIvc2NyaXB0cy9ydC10ZXN0ZXIvcnQtdGVzdGVyLnB5CmluZGV4IDhjODFkNzYuLjM0MTg2Y2EgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvcnQtdGVzdGVyL3J0LXRlc3Rlci5weQorKysgYi9zY3JpcHRzL3J0LXRlc3Rlci9ydC10ZXN0ZXIucHkKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICAgICAgICAgIGZvciBzIGluIHN0YXQ6CiAJCSAgICBzID0gcy5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCh0ZXN0b3BbMF0pOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBTZXBlcmF0ZSBzdGF0dXMgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2VwYXJhdGUgc3RhdHVzIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBzWzI6XS5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9IGFuYWx5c2UodmFsLCB0ZXN0b3AsIGRhdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYgLS1naXQgYS9zZWN1cml0eS9hcHBhcm1vci9tYXRjaC5jIGIvc2VjdXJpdHkvYXBwYXJtb3IvbWF0Y2guYwppbmRleCA1Y2I0ZGMxLi4wNmQ3NjRjIDEwMDY0NAotLS0gYS9zZWN1cml0eS9hcHBhcm1vci9tYXRjaC5jCisrKyBiL3NlY3VyaXR5L2FwcGFybW9yL21hdGNoLmMKQEAgLTE5NSw3ICsxOTUsNyBAQAogICoKICAqIFVucGFjayBhIGRmYSB0aGF0IGhhcyBiZWVuIHNlcmlhbGl6ZWQuICBUbyBmaW5kIGluZm9ybWF0aW9uIG9uIHRoZSBkZmEKICAqIGZvcm1hdCBsb29rIGluIERvY3VtZW50YXRpb24vYXBwYXJtb3IudHh0Ci0gKiBBc3N1bWVzIHRoZSBkZmEgQGJsb2Igc3RyZWFtIGhhcyBiZWVuIGFsaWduZWQgb24gYSA4IGJ5dGUgYm91bmRyeQorICogQXNzdW1lcyB0aGUgZGZhIEBibG9iIHN0cmVhbSBoYXMgYmVlbiBhbGlnbmVkIG9uIGEgOCBieXRlIGJvdW5kYXJ5CiAgKgogICogUmV0dXJuczogYW4gdW5wYWNrZWQgZGZhIHJlYWR5IGZvciBtYXRjaGluZyBvciBFUlJfUFRSIG9uIGZhaWx1cmUKICAqLwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvYXBwYXJtb3IvcG9saWN5X3VucGFjay5jIGIvc2VjdXJpdHkvYXBwYXJtb3IvcG9saWN5X3VucGFjay5jCmluZGV4IGViMzcwMGUuLmUzM2FhZjcgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2FwcGFybW9yL3BvbGljeV91bnBhY2suYworKysgYi9zZWN1cml0eS9hcHBhcm1vci9wb2xpY3lfdW5wYWNrLmMKQEAgLTM1OSw3ICszNTksNyBAQAogICogQGU6IHNlcmlhbGl6ZWQgZGF0YSBleHRlbnQgaW5mb3JtYXRpb24gIChOT1QgTlVMTCkKICAqIEBwcm9maWxlOiBwcm9maWxlIHRvIGFkZCB0aGUgYWNjZXB0IHRhYmxlIHRvIChOT1QgTlVMTCkKICAqCi0gKiBSZXR1cm5zOiAxIGlmIHRhYmxlIHN1Y2Nlc2Z1bGx5IHVucGFja2VkCisgKiBSZXR1cm5zOiAxIGlmIHRhYmxlIHN1Y2Nlc3NmdWxseSB1bnBhY2tlZAogICovCiBzdGF0aWMgYm9vbCB1bnBhY2tfdHJhbnNfdGFibGUoc3RydWN0IGFhX2V4dCAqZSwgc3RydWN0IGFhX3Byb2ZpbGUgKnByb2ZpbGUpCiB7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9zZWxpbnV4L25ldGxhYmVsLmMgYi9zZWN1cml0eS9zZWxpbnV4L25ldGxhYmVsLmMKaW5kZXggMWMyZmM0Ni4uYzNiZjNlZCAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc2VsaW51eC9uZXRsYWJlbC5jCisrKyBiL3NlY3VyaXR5L3NlbGludXgvbmV0bGFiZWwuYwpAQCAtMTUxLDcgKzE1MSw3IEBACiAgKgogICogRGVzY3JpcHRpb246CiAgKiBDYWxsZWQgd2hlbiB0aGUgTmV0TGFiZWwgc3RhdGUgb2YgYSBza19zZWN1cml0eV9zdHJ1Y3QgbmVlZHMgdG8gYmUgcmVzZXQuCi0gKiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmlsZSBmb3IgYWxsIHRoZSBOZXRMYWJlbCBza19zZWN1cml0eV9zdHJ1Y3QgbG9ja2luZy4KKyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGFsbCB0aGUgTmV0TGFiZWwgc2tfc2VjdXJpdHlfc3RydWN0IGxvY2tpbmcuCiAgKgogICovCiB2b2lkIHNlbGludXhfbmV0bGJsX3NrX3NlY3VyaXR5X3Jlc2V0KHN0cnVjdCBza19zZWN1cml0eV9zdHJ1Y3QgKnNrc2VjKQpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc2VsaW51eC9zcy9zZXJ2aWNlcy5jIGIvc2VjdXJpdHkvc2VsaW51eC9zcy9zZXJ2aWNlcy5jCmluZGV4IGVhN2MwMWYuLjZlZjRhZjQgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NlbGludXgvc3Mvc2VydmljZXMuYworKysgYi9zZWN1cml0eS9zZWxpbnV4L3NzL3NlcnZpY2VzLmMKQEAgLTI4MDYsNyArMjgwNiw3IEBACiAJY2FzZSBBVURJVF9TVUJKX0NMUjoKIAljYXNlIEFVRElUX09CSl9MRVZfTE9XOgogCWNhc2UgQVVESVRfT0JKX0xFVl9ISUdIOgotCQkvKiB3ZSBkbyBub3QgYWxsb3cgYSByYW5nZSwgaW5kaWNhdGVkIGJ5IHRoZSBwcmVzZW5zZSBvZiAnLScgKi8KKwkJLyogd2UgZG8gbm90IGFsbG93IGEgcmFuZ2UsIGluZGljYXRlZCBieSB0aGUgcHJlc2VuY2Ugb2YgJy0nICovCiAJCWlmIChzdHJjaHIocnVsZXN0ciwgJy0nKSkKIAkJCXJldHVybiAtRUlOVkFMOwogCQlicmVhazsKQEAgLTMwNzUsNyArMzA3NSw3IEBACiAgKiBEZXNjcmlwdGlvbjoKICAqIENvbnZlcnQgdGhlIGdpdmVuIE5ldExhYmVsIHNlY3VyaXR5IGF0dHJpYnV0ZXMgaW4gQHNlY2F0dHIgaW50byBhCiAgKiBTRUxpbnV4IFNJRC4gIElmIHRoZSBAc2VjYXR0ciBmaWVsZCBkb2VzIG5vdCBjb250YWluIGEgZnVsbCBTRUxpbnV4Ci0gKiBTSUQvY29udGV4dCB0aGVuIHVzZSBTRUNJTklUU0lEX05FVE1TRyBhcyB0aGUgZm91bmRhdGlvbi4gIElmIHBvc3NpYmlsZSB0aGUKKyAqIFNJRC9jb250ZXh0IHRoZW4gdXNlIFNFQ0lOSVRTSURfTkVUTVNHIGFzIHRoZSBmb3VuZGF0aW9uLiAgSWYgcG9zc2libGUgdGhlCiAgKiAnY2FjaGUnIGZpZWxkIG9mIEBzZWNhdHRyIGlzIHNldCBhbmQgdGhlIENBQ0hFIGZsYWcgaXMgc2V0OyB0aGlzIGlzIHRvCiAgKiBhbGxvdyB0aGUgQHNlY2F0dHIgdG8gYmUgdXNlZCBieSBOZXRMYWJlbCB0byBjYWNoZSB0aGUgc2VjYXR0ciB0byBTSUQKICAqIGNvbnZlcnNpb24gZm9yIGZ1dHVyZSBsb29rdXBzLiAgUmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlcyBvbgpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc21hY2svc21hY2tfYWNjZXNzLmMgYi9zZWN1cml0eS9zbWFjay9zbWFja19hY2Nlc3MuYwppbmRleCA4NjQ1M2RiLi45NjM3ZTEwIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zbWFjay9zbWFja19hY2Nlc3MuYworKysgYi9zZWN1cml0eS9zbWFjay9zbWFja19hY2Nlc3MuYwpAQCAtNDMxLDcgKzQzMSw3IEBACiAgKiBzbWFja19mcm9tX3NlY2lkIC0gZmluZCB0aGUgU21hY2sgbGFiZWwgYXNzb2NpYXRlZCB3aXRoIGEgc2VjaWQKICAqIEBzZWNpZDogYW4gaW50ZWdlciB0aGF0IG1pZ2h0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIFNtYWNrIGxhYmVsCiAgKgotICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFwcHJvcHJhaXRlIFNtYWNrIGxhYmVsIGlmIHRoZXJlIGlzIG9uZSwKKyAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBhcHByb3ByaWF0ZSBTbWFjayBsYWJlbCBpZiB0aGVyZSBpcyBvbmUsCiAgKiBvdGhlcndpc2UgYSBwb2ludGVyIHRvIHRoZSBpbnZhbGlkIFNtYWNrIGxhYmVsLgogICovCiBjaGFyICpzbWFja19mcm9tX3NlY2lkKGNvbnN0IHUzMiBzZWNpZCkKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3NtYWNrL3NtYWNrX2xzbS5jIGIvc2VjdXJpdHkvc21hY2svc21hY2tfbHNtLmMKaW5kZXggMjNjN2E2ZC4uYzZmOGZjYSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc21hY2svc21hY2tfbHNtLmMKKysrIGIvc2VjdXJpdHkvc21hY2svc21hY2tfbHNtLmMKQEAgLTE3OTQsNyArMTc5NCw3IEBACiAgKiBDYXNleSBzYXlzIHRoYXQgQ0lQU08gaXMgZ29vZCBlbm91Z2ggZm9yIG5vdy4KICAqIEl0IGNhbiBiZSB1c2VkIHRvIGVmZmVjdC4KICAqIEl0IGNhbiBhbHNvIGJlIGFidXNlZCB0byBlZmZlY3Qgd2hlbiBuZWNlc3NhcnkuCi0gKiBBcHBvbG9naWVzIHRvIHRoZSBUU0lHIGdyb3VwIGluIGdlbmVyYWwgYW5kIEdXIGluIHBhcnRpY3VsYXIuCisgKiBBcG9sb2dpZXMgdG8gdGhlIFRTSUcgZ3JvdXAgaW4gZ2VuZXJhbCBhbmQgR1cgaW4gcGFydGljdWxhci4KICAqLwogc3RhdGljIHZvaWQgc21hY2tfdG9fc2VjYXR0cihjaGFyICpzbWFjaywgc3RydWN0IG5ldGxibF9sc21fc2VjYXR0ciAqbmxzcCkKIHsKQEAgLTI1MzAsNyArMjUzMCw3IEBACiAJc3dpdGNoIChzYnAtPnNfbWFnaWMpIHsKIAljYXNlIFNNQUNLX01BR0lDOgogCQkvKgotCQkgKiBDYXNleSBzYXlzIHRoYXQgaXQncyBhIGxpdHRsZSBlbWJhcmFzc2luZworCQkgKiBDYXNleSBzYXlzIHRoYXQgaXQncyBhIGxpdHRsZSBlbWJhcnJhc3NpbmcKIAkJICogdGhhdCB0aGUgc21hY2sgZmlsZSBzeXN0ZW0gZG9lc24ndCBkbwogCQkgKiBleHRlbmRlZCBhdHRyaWJ1dGVzLgogCQkgKi8KQEAgLTMwODQsNyArMzA4NCw3IEBACiAJLyoKIAkgKiBXZSBuZWVkIHRvIGRlY2lkZSBpZiB3ZSB3YW50IHRvIGxhYmVsIHRoZSBpbmNvbWluZyBjb25uZWN0aW9uIGhlcmUKIAkgKiBpZiB3ZSBkbyB3ZSBvbmx5IG5lZWQgdG8gbGFiZWwgdGhlIHJlcXVlc3Rfc29jayBhbmQgdGhlIHN0YWNrIHdpbGwKLQkgKiBwcm9wb2dhdGUgdGhlIHdpcmUtbGFiZWwgdG8gdGhlIHNvY2sgd2hlbiBpdCBpcyBjcmVhdGVkLgorCSAqIHByb3BhZ2F0ZSB0aGUgd2lyZS1sYWJlbCB0byB0aGUgc29jayB3aGVuIGl0IGlzIGNyZWF0ZWQuCiAJICovCiAJaGRyID0gaXBfaGRyKHNrYik7CiAJYWRkci5zaW5fYWRkci5zX2FkZHIgPSBoZHItPnNhZGRyOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc21hY2svc21hY2tmcy5jIGIvc2VjdXJpdHkvc21hY2svc21hY2tmcy5jCmluZGV4IDkwZDFiYmEuLmY5MzQ2MDEgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NtYWNrL3NtYWNrZnMuYworKysgYi9zZWN1cml0eS9zbWFjay9zbWFja2ZzLmMKQEAgLTIwOCw3ICsyMDgsNyBAQAogCWlmICgqcHBvcyAhPSAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAkvKgotCSAqIE1pbm9yIGhhY2sgZm9yIGJhY2t3YXJkIGNvbXBhdGFiaWxpdHkKKwkgKiBNaW5vciBoYWNrIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAJICovCiAJaWYgKGNvdW50IDwgKFNNS19PTE9BRExFTikgfHwgY291bnQgPiBTTUtfTE9BRExFTikKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0yMjMsNyArMjIzLDcgQEAKIAl9CiAKIAkvKgotCSAqIE1vcmUgb24gdGhlIG1pbm9yIGhhY2sgZm9yIGJhY2t3YXJkIGNvbXBhdGFiaWxpdHkKKwkgKiBNb3JlIG9uIHRoZSBtaW5vciBoYWNrIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAJICovCiAJaWYgKGNvdW50ID09IChTTUtfT0xPQURMRU4pKQogCQlkYXRhW1NNS19PTE9BRExFTl0gPSAnLSc7CkBAIC05MjcsNyArOTI3LDcgQEAKIAkJfQogCX0gZWxzZSB7CiAJCS8qIHdlIGRlbGV0ZSB0aGUgdW5sYWJlbGVkIGVudHJ5LCBvbmx5IGlmIHRoZSBwcmV2aW91cyBsYWJlbAotCQkgKiB3YXNudCB0aGUgc3BlY2lhbCBDSVBTTyBvcHRpb24gKi8KKwkJICogd2Fzbid0IHRoZSBzcGVjaWFsIENJUFNPIG9wdGlvbiAqLwogCQlpZiAoc2twLT5zbWtfbGFiZWwgIT0gc21hY2tfY2lwc29fb3B0aW9uKQogCQkJcmMgPSBuZXRsYmxfY2ZnX3VubGJsX3N0YXRpY19kZWwoJmluaXRfbmV0LCBOVUxMLAogCQkJCQkmc2twLT5zbWtfaG9zdC5zaW5fYWRkciwgJnNrcC0+c21rX21hc2ssCmRpZmYgLS1naXQgYS9zZWN1cml0eS90b21veW8vbG9hZF9wb2xpY3kuYyBiL3NlY3VyaXR5L3RvbW95by9sb2FkX3BvbGljeS5jCmluZGV4IGJiYWRhN2MuLjMzMTJlNTYgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3RvbW95by9sb2FkX3BvbGljeS5jCisrKyBiL3NlY3VyaXR5L3RvbW95by9sb2FkX3BvbGljeS5jCkBAIC0yMyw3ICsyMyw3IEBACiAJICogSWYgdGhlIGluaXRyZCBpbmNsdWRlcyAvc2Jpbi9pbml0IGJ1dCByZWFsLXJvb3QtZGV2IGhhcyBub3QKIAkgKiBtb3VudGVkIG9uIC8geWV0LCBhY3RpdmF0aW5nIE1BQyB3aWxsIGJsb2NrIHRoZSBzeXN0ZW0gc2luY2UKIAkgKiBwb2xpY2llcyBhcmUgbm90IGxvYWRlZCB5ZXQuCi0JICogVGh1cywgbGV0IGRvX2V4ZWN2ZSgpIGNhbGwgdGhpcyBmdW5jdGlvbiBldmVyeXRpbWUuCisJICogVGh1cywgbGV0IGRvX2V4ZWN2ZSgpIGNhbGwgdGhpcyBmdW5jdGlvbiBldmVyeSB0aW1lLgogCSAqLwogCXN0cnVjdCBwYXRoIHBhdGg7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL2FvYS9jb2RlY3MvdGFzLmMgYi9zb3VuZC9hb2EvY29kZWNzL3Rhcy5jCmluZGV4IGZkMjE4OGMuLjU4ODA0YzcgMTAwNjQ0Ci0tLSBhL3NvdW5kL2FvYS9jb2RlY3MvdGFzLmMKKysrIGIvc291bmQvYW9hL2NvZGVjcy90YXMuYwpAQCAtMTcwLDcgKzE3MCw3IEBACiAJLyogYW5hbHlzaW5nIHRoZSB2b2x1bWUgYW5kIG1peGVyIHRhYmxlcyBzaG93cwogCSAqIHRoYXQgdGhleSBhcmUgc2ltaWxhciBlbm91Z2ggd2hlbiB3ZSBzaGlmdAogCSAqIHRoZSBtaXhlciB0YWJsZSBkb3duIGJ5IDQgYml0cy4gVGhlIGVycm9yCi0JICogaXMgbWluaXNjdWxlLCBpbiBqdXN0IG9uZSBpdGVtIHRoZSBlcnJvcgorCSAqIGlzIG1pbnVzY3VsZSwgaW4ganVzdCBvbmUgaXRlbSB0aGUgZXJyb3IKIAkgKiBpcyAxLCBhdCBhIHZhbHVlIG9mIDB4MDdmMTdiIChtaXhlciB0YWJsZQogCSAqIHZhbHVlIGlzIDB4MDdmMTdhKSAqLwogCXRtcCA9IHRhc19nYWludGFibGVbbGVmdF07CmRpZmYgLS1naXQgYS9zb3VuZC9hcm0vcHhhMnh4LXBjbS1saWIuYyBiL3NvdW5kL2FybS9weGEyeHgtcGNtLWxpYi5jCmluZGV4IDg4MDhiODIuLjc2ZTBkNTYgMTAwNjQ0Ci0tLSBhL3NvdW5kL2FybS9weGEyeHgtcGNtLWxpYi5jCisrKyBiL3NvdW5kL2FybS9weGEyeHgtcGNtLWxpYi5jCkBAIC0xNDAsNiArMTQwLDkgQEAKIAlpZiAoIXBydGQgfHwgIXBydGQtPnBhcmFtcykKIAkJcmV0dXJuIDA7CiAKKwlpZiAocHJ0ZC0+ZG1hX2NoID09IC0xKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCURDU1IocHJ0ZC0+ZG1hX2NoKSAmPSB+RENTUl9SVU47CiAJRENTUihwcnRkLT5kbWFfY2gpID0gMDsKIAlEQ01EKHBydGQtPmRtYV9jaCkgPSAwOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fbWVtb3J5LmMgYi9zb3VuZC9jb3JlL3BjbV9tZW1vcnkuYwppbmRleCA5MTdlNDA1Li4xNTBjYjdlIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9tZW1vcnkuYworKysgYi9zb3VuZC9jb3JlL3BjbV9tZW1vcnkuYwpAQCAtMjUzLDcgKzI1Myw3IEBACiAgKiBzbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlcyAtIHByZS1hbGxvY2F0aW9uIGZvciB0aGUgZ2l2ZW4gRE1BIHR5cGUKICAqIEBzdWJzdHJlYW06IHRoZSBwY20gc3Vic3RyZWFtIGluc3RhbmNlCiAgKiBAdHlwZTogRE1BIHR5cGUgKFNORFJWX0RNQV9UWVBFXyopCi0gKiBAZGF0YTogRE1BIHR5cGUgZGVwZW5kYW50IGRhdGEKKyAqIEBkYXRhOiBETUEgdHlwZSBkZXBlbmRlbnQgZGF0YQogICogQHNpemU6IHRoZSByZXF1ZXN0ZWQgcHJlLWFsbG9jYXRpb24gc2l6ZSBpbiBieXRlcwogICogQG1heDogdGhlIG1heC4gYWxsb3dlZCBwcmUtYWxsb2NhdGlvbiBzaXplCiAgKgpAQCAtMjc4LDEwICsyNzgsMTAgQEAKIEVYUE9SVF9TWU1CT0woc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXMpOwogCiAvKioKLSAqIHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwgLSBwcmUtYWxsb2NhdGlvbiBmb3IgY29udGlub3VzIG1lbW9yeSB0eXBlIChhbGwgc3Vic3RyZWFtcykKKyAqIHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzX2Zvcl9hbGwgLSBwcmUtYWxsb2NhdGlvbiBmb3IgY29udGludW91cyBtZW1vcnkgdHlwZSAoYWxsIHN1YnN0cmVhbXMpCiAgKiBAcGNtOiB0aGUgcGNtIGluc3RhbmNlCiAgKiBAdHlwZTogRE1BIHR5cGUgKFNORFJWX0RNQV9UWVBFXyopCi0gKiBAZGF0YTogRE1BIHR5cGUgZGVwZW5kYW50IGRhdGEKKyAqIEBkYXRhOiBETUEgdHlwZSBkZXBlbmRlbnQgZGF0YQogICogQHNpemU6IHRoZSByZXF1ZXN0ZWQgcHJlLWFsbG9jYXRpb24gc2l6ZSBpbiBieXRlcwogICogQG1heDogdGhlIG1heC4gYWxsb3dlZCBwcmUtYWxsb2NhdGlvbiBzaXplCiAgKgpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9wY21fbmF0aXZlLmMgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwppbmRleCBmZTVjODAzLi4xYTA3NzUwIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYworKysgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwpAQCAtNDYwLDcgKzQ2MCw3IEBACiAJCQkJICAgUE1fUU9TX0NQVV9ETUFfTEFURU5DWSwgdXNlY3MpOwogCXJldHVybiAwOwogIF9lcnJvcjoKLQkvKiBoYXJkd2FyZSBtaWdodCBiZSB1bnVzZWFibGUgZnJvbSB0aGlzIHRpbWUsCisJLyogaGFyZHdhcmUgbWlnaHQgYmUgdW51c2FibGUgZnJvbSB0aGlzIHRpbWUsCiAJICAgc28gd2UgZm9yY2UgYXBwbGljYXRpb24gdG8gcmV0cnkgdG8gc2V0CiAJICAgdGhlIGNvcnJlY3QgaGFyZHdhcmUgcGFyYW1ldGVyIHNldHRpbmdzICovCiAJcnVudGltZS0+c3RhdHVzLT5zdGF0ZSA9IFNORFJWX1BDTV9TVEFURV9PUEVOOwpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMgYi9zb3VuZC9jb3JlL3NlcS9zZXFfZHVtbXkuYwppbmRleCBmM2JkYzU0Li4xZDdkOTBjIDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3NlcS9zZXFfZHVtbXkuYworKysgYi9zb3VuZC9jb3JlL3NlcS9zZXFfZHVtbXkuYwpAQCAtNTAsNyArNTAsNyBAQAogCiAJb3B0aW9uIHNuZC1zZXEtZHVtbXkgcG9ydHM9NAogCi0gIFRoZSBtb2RsZSBvcHRpb24gImR1cGxleD0xIiBlbmFibGVzIGR1cGxleCBvcGVyYXRpb24gdG8gdGhlIHBvcnQuCisgIFRoZSBtb2RlbCBvcHRpb24gImR1cGxleD0xIiBlbmFibGVzIGR1cGxleCBvcGVyYXRpb24gdG8gdGhlIHBvcnQuCiAgIEluIGR1cGxleCBtb2RlLCBhIHBhaXIgb2YgcG9ydHMgYXJlIGNyZWF0ZWQgaW5zdGVhZCBvZiBzaW5nbGUgcG9ydCwKICAgYW5kIGV2ZW50cyBhcmUgdHVubmVsZWQgYmV0d2VlbiBwYWlyLXBvcnRzLiAgRm9yIGV4YW1wbGUsIGlucHV0IHRvCiAgIHBvcnQgQSBpcyBzZW50IHRvIG91dHB1dCBwb3J0IG9mIGFub3RoZXIgcG9ydCBCIGFuZCB2aWNlIHZlcnNhLgpkaWZmIC0tZ2l0IGEvc291bmQvY29yZS92bWFzdGVyLmMgYi9zb3VuZC9jb3JlL3ZtYXN0ZXIuYwppbmRleCBhODk5NDhhLi5hMzlkM2Q4IDEwMDY0NAotLS0gYS9zb3VuZC9jb3JlL3ZtYXN0ZXIuYworKysgYi9zb3VuZC9jb3JlL3ZtYXN0ZXIuYwpAQCAtMjMzLDcgKzIzMyw3IEBACiAgKiBBZGQgYSBzbGF2ZSBjb250cm9sIHRvIHRoZSBncm91cCB3aXRoIHRoZSBnaXZlbiBtYXN0ZXIgY29udHJvbAogICoKICAqIEFsbCBzbGF2ZXMgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIChyZXR1cm5pbmcgdGhlIHNhbWUgaW5mb3JtYXRpb24KLSAqIHZpYSBpbmZvIGNhbGxiYWNrKS4gIFRoZSBmdWNudGlvbiBkb2Vzbid0IGNoZWNrIGl0LCBzbyBpdCdzIHlvdXIKKyAqIHZpYSBpbmZvIGNhbGxiYWNrKS4gIFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNoZWNrIGl0LCBzbyBpdCdzIHlvdXIKICAqIHJlc3BvbnNpYmlsaXR5LgogICoKICAqIEFsc28sIHNvbWUgYWRkaXRpb25hbCBsaW1pdGF0aW9uczoKZGlmZiAtLWdpdCBhL3NvdW5kL2RyaXZlcnMvcGNtLWluZGlyZWN0Mi5jIGIvc291bmQvZHJpdmVycy9wY20taW5kaXJlY3QyLmMKaW5kZXggM2M5M2MyMy4uZTczZmFmZCAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy9wY20taW5kaXJlY3QyLmMKKysrIGIvc291bmQvZHJpdmVycy9wY20taW5kaXJlY3QyLmMKQEAgLTI2NCw3ICsyNjQsNyBAQAogCQlpZiAoZGlmZiA8IC0oc25kX3BjbV9zZnJhbWVzX3QpIChydW50aW1lLT5ib3VuZGFyeSAvIDIpKQogCQkJZGlmZiArPSBydW50aW1lLT5ib3VuZGFyeTsKIAkJLyogbnVtYmVyIG9mIGJ5dGVzICJhZGRlZCIgYnkgQUxTQSBpbmNyZWFzZXMgdGhlIG51bWJlciBvZgotCQkgKiBieXRlcyB3aGljaCBhcmUgcmVhZHkgdG8gImJlIHRyYW5zZmVyZWQgdG8gSFciLyJwbGF5ZWQiCisJCSAqIGJ5dGVzIHdoaWNoIGFyZSByZWFkeSB0byAiYmUgdHJhbnNmZXJyZWQgdG8gSFciLyJwbGF5ZWQiCiAJCSAqIFRoZW4sIHNldCByZWMtPmFwcGxfcHRyIHRvIG5vdCBjb3VudCBieXRlcyB0d2ljZSBuZXh0IHRpbWUuCiAJCSAqLwogCQlyZWMtPnN3X3JlYWR5ICs9IChpbnQpZnJhbWVzX3RvX2J5dGVzKHJ1bnRpbWUsIGRpZmYpOwpAQCAtMzMwLDcgKzMzMCw3IEBACiAJCS8qIGNvcHkgYnl0ZXMgZnJvbSBpbnRlcm1lZGlhdGUgYnVmZmVyIHBvc2l0aW9uIHN3X2RhdGEgdG8gdGhlCiAJCSAqIEhXIGFuZCByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4KIAkJICogRnVydGhlcm1vcmUsIHNldCBod19yZWFkeSB0byAwLCBpZiB0aGUgZmlmbyBpc24ndCBlbXB0eQotCQkgKiBub3cgPT4gbW9yZSBjb3VsZCBiZSB0cmFuc2ZlcmVkIHRvIGZpZm8KKwkJICogbm93ID0+IG1vcmUgY291bGQgYmUgdHJhbnNmZXJyZWQgdG8gZmlmbwogCQkgKi8KIAkJYnl0ZXMgPSBjb3B5KHN1YnN0cmVhbSwgcmVjLCBieXRlcyk7CiAJCXJlYy0+Ynl0ZXMyaHcgKz0gYnl0ZXM7CmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3Z4L3Z4X3BjbS5jIGIvc291bmQvZHJpdmVycy92eC92eF9wY20uYwppbmRleCAzNWEyZjcxLi41ZTg5N2IyIDEwMDY0NAotLS0gYS9zb3VuZC9kcml2ZXJzL3Z4L3Z4X3BjbS5jCisrKyBiL3NvdW5kL2RyaXZlcnMvdngvdnhfcGNtLmMKQEAgLTExODksNyArMTE4OSw3IEBACiAKIAogLyoKLSAqIHZ4X2luaXRfYXVkaW9faW8gLSBjaGVjayB0aGUgYXZhaWxhYmUgYXVkaW8gaS9vIGFuZCBhbGxvY2F0ZSBwaXBlIGFycmF5cworICogdnhfaW5pdF9hdWRpb19pbyAtIGNoZWNrIHRoZSBhdmFpbGFibGUgYXVkaW8gaS9vIGFuZCBhbGxvY2F0ZSBwaXBlIGFycmF5cwogICovCiBzdGF0aWMgaW50IHZ4X2luaXRfYXVkaW9faW8oc3RydWN0IHZ4X2NvcmUgKmNoaXApCiB7CmRpZmYgLS1naXQgYS9zb3VuZC9pc2Evc2IvZW11ODAwMC5jIGIvc291bmQvaXNhL3NiL2VtdTgwMDAuYwppbmRleCAwYzQwOTUxLi41ZDYxZjVhIDEwMDY0NAotLS0gYS9zb3VuZC9pc2Evc2IvZW11ODAwMC5jCisrKyBiL3NvdW5kL2lzYS9zYi9lbXU4MDAwLmMKQEAgLTM3MCw3ICszNzAsNyBAQAogCiAvKgogICogU2l6ZSB0aGUgb25ib2FyZCBtZW1vcnkuCi0gKiBUaGlzIGlzIHdyaXR0ZW4gc28gYXMgbm90IHRvIG5lZWQgYXJiaXRhcnkgZGVsYXlzIGFmdGVyIHRoZSB3cml0ZS4gSXQKKyAqIFRoaXMgaXMgd3JpdHRlbiBzbyBhcyBub3QgdG8gbmVlZCBhcmJpdHJhcnkgZGVsYXlzIGFmdGVyIHRoZSB3cml0ZS4gSXQKICAqIHNlZW1zIHRoYXQgdGhlIG9ubHkgd2F5IHRvIGRvIHRoaXMgaXMgdG8gdXNlIHRoZSBvbmUgY2hhbm5lbCBhbmQga2VlcAogICogcmVhbGxvY2F0aW5nIGJldHdlZW4gcmVhZCBhbmQgd3JpdGUuCiAgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS93YXZlZnJvbnQvd2F2ZWZyb250X21pZGkuYyBiL3NvdW5kL2lzYS93YXZlZnJvbnQvd2F2ZWZyb250X21pZGkuYwppbmRleCBmMTRhN2MwLi42NTMyOWYzIDEwMDY0NAotLS0gYS9zb3VuZC9pc2Evd2F2ZWZyb250L3dhdmVmcm9udF9taWRpLmMKKysrIGIvc291bmQvaXNhL3dhdmVmcm9udC93YXZlZnJvbnRfbWlkaS5jCkBAIC01MzcsNyArNTM3LDcgQEAKIAl9CiAKIAkvKiBUdXJuIG9uIFZpcnR1YWwgTUlESSwgYnV0IGZpcnN0ICphbHdheXMqIHR1cm4gaXQgb2ZmLAotCSAgIHNpbmNlIG90aGVyd2lzZSBjb25zZWN0dXRpdmUgcmVsb2FkcyBvZiB0aGUgZHJpdmVyIHdpbGwKKwkgICBzaW5jZSBvdGhlcndpc2UgY29uc2VjdXRpdmUgcmVsb2FkcyBvZiB0aGUgZHJpdmVyIHdpbGwKIAkgICBuZXZlciBjYXVzZSB0aGUgaGFyZHdhcmUgdG8gZ2VuZXJhdGUgdGhlIGluaXRpYWwgImludGVybmFsIiBvciAKIAkgICAiZXh0ZXJuYWwiIHNvdXJjZSBieXRlcyBpbiB0aGUgTUlESSBkYXRhIHN0cmVhbS4gVGhpcwogCSAgIGlzIHByZXR0eSBpbXBvcnRhbnQsIHNpbmNlIHRoZSBpbnRlcm5hbCBoYXJkd2FyZSBnZW5lcmFsbHkgd2lsbApkaWZmIC0tZ2l0IGEvc291bmQvaXNhL3dzcy93c3NfbGliLmMgYi9zb3VuZC9pc2Evd3NzL3dzc19saWIuYwppbmRleCA5MTkxYjMyLi4yYTQyY2MzIDEwMDY0NAotLS0gYS9zb3VuZC9pc2Evd3NzL3dzc19saWIuYworKysgYi9zb3VuZC9pc2Evd3NzL3dzc19saWIuYwpAQCAtNDI0LDcgKzQyNCw3IEBACiAKIAkvKgogCSAqIFdhaXQgZm9yIChwb3NzaWJsZSAtLSBkdXJpbmcgaW5pdCBhdXRvLWNhbGlicmF0aW9uIG1heSBub3QgYmUgc2V0KQotCSAqIGNhbGlicmF0aW9uIHByb2Nlc3MgdG8gc3RhcnQuIE5lZWRzIHVwdG8gNSBzYW1wbGUgcGVyaW9kcyBvbiBBRDE4NDgKKwkgKiBjYWxpYnJhdGlvbiBwcm9jZXNzIHRvIHN0YXJ0LiBOZWVkcyB1cCB0byA1IHNhbXBsZSBwZXJpb2RzIG9uIEFEMTg0OAogCSAqIHdoaWNoIGF0IHRoZSBzbG93ZXN0IHBvc3NpYmxlIHJhdGUgb2YgNS41MTI1IGtIeiBtZWFucyA5MDcgdXMuCiAJICovCiAJbXNsZWVwKDEpOwpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL2FjOTdfY29kZWMuYyBiL3NvdW5kL29zcy9hYzk3X2NvZGVjLmMKaW5kZXggODU0YzMwMy4uMGNkMjNkOSAxMDA2NDQKLS0tIGEvc291bmQvb3NzL2FjOTdfY29kZWMuYworKysgYi9zb3VuZC9vc3MvYWM5N19jb2RlYy5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKgogICogSGlzdG9yeQogICogTWF5IDAyLCAyMDAzIExpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+Ci0gKglSZW1vdmVkIG5vbiBleGlzdGFudCBXTTk3MDAKKyAqCVJlbW92ZWQgbm9uIGV4aXN0ZW50IFdNOTcwMAogICoJQWRkZWQgc3VwcG9ydCBmb3IgV005NzA1LCBXTTk3MDgsIFdNOTcwOSwgV005NzEwLCBXTTk3MTEKICAqCVdNOTcxMiBhbmQgV005NzE3CiAgKiBNYXIgMjgsIDIwMDIgUmFuZG9scGggQmVudHNvbiA8YmVudHNvbkBob2xtc2pvZW4uY29tPgpAQCAtNDQxLDcgKzQ0MSw3IEBACiB9CiAKIC8qIHJlYWQgb3Igd3JpdGUgdGhlIHJlY21hc2ssIHRoZSBhYzk3IGNhbiByZWFsbHkgaGF2ZSBsZWZ0IGFuZCByaWdodCByZWNvcmRpbmcKLSAgIGlucHV0cyBpbmRlcGVuZGFudGx5IHNldCwgYnV0IE9TUyBkb2Vzbid0IHNlZW0gdG8gd2FudCB1cyB0byBleHByZXNzIHRoYXQgdG8KKyAgIGlucHV0cyBpbmRlcGVuZGVudGx5IHNldCwgYnV0IE9TUyBkb2Vzbid0IHNlZW0gdG8gd2FudCB1cyB0byBleHByZXNzIHRoYXQgdG8KICAgIHRoZSB1c2VyLiB0aGUgY2FsbGVyIGd1YXJhbnRlZXMgdGhhdCB3ZSBoYXZlIGEgc3VwcG9ydGVkIGJpdCBzZXQsIGFuZCB0aGV5CiAgICBtdXN0IGJlIGhvbGRpbmcgdGhlIGNhcmQncyBzcGlubG9jayAqLwogc3RhdGljIGludCBhYzk3X3JlY21hc2tfaW8oc3RydWN0IGFjOTdfY29kZWMgKmNvZGVjLCBpbnQgcncsIGludCBtYXNrKSAKQEAgLTc1NCw3ICs3NTQsNyBAQAogCWlmKChjb2RlYy0+Y29kZWNfb3BzID09ICZudWxsX29wcykgJiYgKGYgJiA0KSkKIAkJY29kZWMtPmNvZGVjX29wcyA9ICZkZWZhdWx0X2RpZ2l0YWxfb3BzOwogCQotCS8qIEEgZGV2aWNlIHdoaWNoIHRoaW5rcyBpdHMgYSBtb2RlbSBidXQgaXNudCAqLworCS8qIEEgZGV2aWNlIHdoaWNoIHRoaW5rcyBpdHMgYSBtb2RlbSBidXQgaXNuJ3QgKi8KIAlpZihjb2RlYy0+ZmxhZ3MgJiBBQzk3X0RFTFVERURfTU9ERU0pCiAJCWNvZGVjLT5tb2RlbSA9IDA7CiAJCQpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL2F1ZGlvLmMgYi9zb3VuZC9vc3MvYXVkaW8uYwppbmRleCA3ZGY0OGEyLi40Yjk1OGIxIDEwMDY0NAotLS0gYS9zb3VuZC9vc3MvYXVkaW8uYworKysgYi9zb3VuZC9vc3MvYXVkaW8uYwpAQCAtNTE0LDcgKzUxNCw3IEBACiAJCQkJY291bnQgKz0gZG1hcC0+Ynl0ZXNfaW5fdXNlOwkvKiBQb2ludGVyIHdyYXAgbm90IGhhbmRsZWQgeWV0ICovCiAJCQljb3VudCArPSBkbWFwLT5ieXRlX2NvdW50ZXI7CiAJCQotCQkJLyogU3Vic3RyYWN0IGN1cnJlbnQgY291bnQgZnJvbSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gYnkgYXBwICovCisJCQkvKiBTdWJ0cmFjdCBjdXJyZW50IGNvdW50IGZyb20gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGJ5IGFwcCAqLwogCQkJY291bnQgPSBkbWFwLT51c2VyX2NvdW50ZXIgLSBjb3VudDsKIAkJCWlmIChjb3VudCA8IDApCiAJCQkJY291bnQgPSAwOwpAQCAtOTMxLDcgKzkzMSw3IEBACiAJCQlpZiAoY291bnQgPCBkbWFwX291dC0+ZnJhZ21lbnRfc2l6ZSAmJiBkbWFwX291dC0+cWhlYWQgIT0gMCkKIAkJCQljb3VudCArPSBkbWFwX291dC0+Ynl0ZXNfaW5fdXNlOwkvKiBQb2ludGVyIHdyYXAgbm90IGhhbmRsZWQgeWV0ICovCiAJCQljb3VudCArPSBkbWFwX291dC0+Ynl0ZV9jb3VudGVyOwotCQkJLyogU3Vic3RyYWN0IGN1cnJlbnQgY291bnQgZnJvbSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gYnkgYXBwICovCisJCQkvKiBTdWJ0cmFjdCBjdXJyZW50IGNvdW50IGZyb20gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGJ5IGFwcCAqLwogCQkJY291bnQgPSBkbWFwX291dC0+dXNlcl9jb3VudGVyIC0gY291bnQ7CiAJCQlpZiAoY291bnQgPCAwKQogCQkJCWNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9kbWFzb3VuZC9kbWFzb3VuZF9jb3JlLmMgYi9zb3VuZC9vc3MvZG1hc291bmQvZG1hc291bmRfY29yZS5jCmluZGV4IDg3ZTJjNzIuLmM5MTgzMTMgMTAwNjQ0Ci0tLSBhL3NvdW5kL29zcy9kbWFzb3VuZC9kbWFzb3VuZF9jb3JlLmMKKysrIGIvc291bmQvb3NzL2RtYXNvdW5kL2RtYXNvdW5kX2NvcmUuYwpAQCAtMTAyMSw3ICsxMDIxLDcgQEAKIAljYXNlIFNORENUTF9EU1BfU1lOQzoKIAkJLyogVGhpcyBjYWxsLCBlZmZlY3RpdmVseSwgaGFzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBTTkRDVExfRFNQX1JFU0VUCiAJCSAgIGV4Y2VwdCB0aGF0IGl0IHdhaXRzIGZvciBvdXRwdXQgdG8gZmluaXNoIGJlZm9yZSByZXNldHRpbmcKLQkJICAgZXZlcnl0aGluZyAtIHJlYWQsIGhvd2V2ZXIsIGlzIGtpbGxlZCBpbWVkaWF0ZWx5LgorCQkgICBldmVyeXRoaW5nIC0gcmVhZCwgaG93ZXZlciwgaXMga2lsbGVkIGltbWVkaWF0ZWx5LgogCQkqLwogCQlyZXN1bHQgPSAwIDsKIAkJaWYgKGZpbGUtPmZfbW9kZSAmIEZNT0RFX1dSSVRFKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9vc3MvbWlkaWJ1Zi5jIGIvc291bmQvb3NzL21pZGlidWYuYwppbmRleCBjZWVkYjFlLi44Y2RiMmNmIDEwMDY0NAotLS0gYS9zb3VuZC9vc3MvbWlkaWJ1Zi5jCisrKyBiL3NvdW5kL29zcy9taWRpYnVmLmMKQEAgLTI5NSw3ICsyOTUsNyBAQAogCiAJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAJCXsKLQkJCS8qIEJST0tFIEJST0tFIEJST0tFIC0gQ0FOVCBETyBUSElTIFdJVEggQ0xJICEhICovCisJCQkvKiBCUk9LRSBCUk9LRSBCUk9LRSAtIENBTidUIERPIFRISVMgV0lUSCBDTEkgISEgKi8KIAkJCS8qIHllcywgdGhpbmsgdGhlIHNhbWUsIHNvIEkgcmVtb3ZlZCB0aGUgY2xpKCkgYnJhY2tldHMgCiAJCQkJUVVFVUVfQllURSBpcyBwcm90ZWN0ZWQgYWdhaW5zdCBpbnRlcnJ1cHRzICovCiAJCQlpZiAoY29weV9mcm9tX3VzZXIoKGNoYXIgKikgJnRtcF9kYXRhLCAmKGJ1ZilbY10sIDEpKSB7CmRpZmYgLS1naXQgYS9zb3VuZC9vc3Mvc2JfY2FyZC5jIGIvc291bmQvb3NzL3NiX2NhcmQuYwppbmRleCA4NGVmNGQwLi5mYjVkNzI1IDEwMDY0NAotLS0gYS9zb3VuZC9vc3Mvc2JfY2FyZC5jCisrKyBiL3NvdW5kL29zcy9zYl9jYXJkLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogc291bmQvb3NzL3NiX2NhcmQuYwogICoKLSAqIERldGVjdGlvbiByb3V0aW5lIGZvciB0aGUgSVNBIFNvdW5kIEJsYXN0ZXIgYW5kIGNvbXBhdGFibGUgc291bmQKKyAqIERldGVjdGlvbiByb3V0aW5lIGZvciB0aGUgSVNBIFNvdW5kIEJsYXN0ZXIgYW5kIGNvbXBhdGlibGUgc291bmQKICAqIGNhcmRzLgogICoKICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgKEdQTCkKZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9zYl9lc3MuYyBiL3NvdW5kL29zcy9zYl9lc3MuYwppbmRleCA5ODkwY2YyLi41Yzc3M2RmIDEwMDY0NAotLS0gYS9zb3VuZC9vc3Mvc2JfZXNzLmMKKysrIGIvc291bmQvb3NzL3NiX2Vzcy5jCkBAIC0xNjgsNyArMTY4LDcgQEAKICAqIGNvcnJlc3BvbmRpbmcgcGxheWJhY2sgbGV2ZWxzLCB1bmxlc3MgcmVjbWFzayBzYXlzIHRoZXkgYXJlbid0IHJlY29yZGVkLiBJbgogICogdGhlIGxhdHRlciBjYXNlIHRoZSByZWNvcmRpbmcgdm9sdW1lcyBhcmUgMC4KICAqIE5vdyByZWNvcmRpbmcgbGV2ZWxzIG9mIGlucHV0cyBjYW4gYmUgY29udHJvbGxlZCwgYnkgY2hhbmdpbmcgdGhlIHBsYXliYWNrCi0gKiBsZXZlbHMuIEZ1dGhlcm1vcmUgc2V2ZXJhbCBkZXZpY2VzIGNhbiBiZSByZWNvcmRlZCB0b2dldGhlciAod2hpY2ggaXMgbm90CisgKiBsZXZlbHMuIEZ1cnRoZXJtb3JlIHNldmVyYWwgZGV2aWNlcyBjYW4gYmUgcmVjb3JkZWQgdG9nZXRoZXIgKHdoaWNoIGlzIG5vdAogICogcG9zc2libGUgd2l0aCB0aGUgRVMxNjg4KS4KICAqIEJlc2lkZXMgdGhlIHNlcGFyYXRlIHJlY29yZGluZyBsZXZlbCBjb250cm9sIGZvciBlYWNoIGlucHV0LCB0aGUgY29tbW9uCiAgKiByZWNvcmRpbmcgbGV2ZWwgY2FuIGFsc28gYmUgY29udHJvbGxlZCBieSBSRUNMRVYgYXMgZGVzY3JpYmVkIGFib3ZlLgpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL3N3YXJtX2NzNDI5N2EuYyBiL3NvdW5kL29zcy9zd2FybV9jczQyOTdhLmMKaW5kZXggNDQzNTdkOC4uMDlkNDY0OCAxMDA2NDQKLS0tIGEvc291bmQvb3NzL3N3YXJtX2NzNDI5N2EuYworKysgYi9zb3VuZC9vc3Mvc3dhcm1fY3M0Mjk3YS5jCkBAIC04NzUsNyArODc1LDcgQEAKIAkJaWYgKHMtPnByb3BfYWRjLmZtdCAmIEFGTVRfUzggfHwgcy0+cHJvcF9hZGMuZm10ICYgQUZNVF9VOCkgewogCQkJLy8gCiAJCQkvLyBub3cgb25seSB1c2UgMTYgYml0IGNhcHR1cmUsIGR1ZSB0byB0cnVuY2F0aW9uIGlzc3VlCi0JCQkvLyBpbiB0aGUgY2hpcCwgbm90aWNhYmxlIGRpc3RvcnRpb24gb2NjdXJzLgorCQkJLy8gaW4gdGhlIGNoaXAsIG5vdGljZWFibGUgZGlzdG9ydGlvbiBvY2N1cnMuCiAJCQkvLyBhbGxvY2F0ZSBidWZmZXIgYW5kIHRoZW4gY29udmVydCBmcm9tIDE2IGJpdCB0byAKIAkJCS8vIDggYml0IGZvciB0aGUgdXNlciBidWZmZXIuCiAJCQkvLwpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL3ZpZGMuYyBiL3NvdW5kL29zcy92aWRjLmMKaW5kZXggZjBlMGNhYS4uMTJiYTI4ZSAxMDA2NDQKLS0tIGEvc291bmQvb3NzL3ZpZGMuYworKysgYi9zb3VuZC9vc3MvdmlkYy5jCkBAIC0yMjcsNyArMjI3LDcgQEAKIAkJfSBlbHNlIHsKIAkJCS8qcHJpbnRrKCJWSURDOiBpbnRlcm5hbCAlZCAlZCAlZFxuIiwgcmF0ZSwgcmF0ZV9pbnQsIGh3cmF0ZSk7Ki8KIAkJCWh3Y3RybD0weDAwMDAwMDAzOwotCQkJLyogQWxsb3cgcm91Z2x5IDAuNCUgdG9sZXJhbmNlICovCisJCQkvKiBBbGxvdyByb3VnaGx5IDAuNCUgdG9sZXJhbmNlICovCiAJCQlpZiAoZGlmZl9pbnQgPiAocmF0ZS8yNTYpKQogCQkJCXJhdGU9cmF0ZV9pbnQ7CiAJCX0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuYwppbmRleCA0MzgyZDBmLi5kOGY2ZmQ2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWQxODg5LmMKKysrIGIvc291bmQvcGNpL2FkMTg4OS5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKglQTSBzdXBwb3J0CiAgKglNSURJIHN1cHBvcnQKICAqCUdhbWUgUG9ydCBzdXBwb3J0Ci0gKglTRyBETUEgc3VwcG9ydCAodGhpcyB3aWxsIG5lZWQgKmFsb3QqIG9mIHdvcmspCisgKglTRyBETUEgc3VwcG9ydCAodGhpcyB3aWxsIG5lZWQgKmEgbG90KiBvZiB3b3JrKQogICovCiAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXNpaHBpL2FzaWhwaS5jIGIvc291bmQvcGNpL2FzaWhwaS9hc2locGkuYwppbmRleCBmNTNhMzFlLi5mOGNjYzk2NyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FzaWhwaS9hc2locGkuYworKysgYi9zb3VuZC9wY2kvYXNpaHBpL2FzaWhwaS5jCkBAIC05NjMsNyArOTYzLDcgQEAKIAogCS8qPyBhbHNvIGNoZWNrIEFTSTUwMDAgc2FtcGxlcmF0ZSBzb3VyY2UKIAkgICAgSWYgZXh0ZXJuYWwsIG9ubHkgc3VwcG9ydCBleHRlcm5hbCByYXRlLgotCSAgICBJZiBpbnRlcm5hbCBhbmQgb3RoZXIgc3RyZWFtIHBsYXlpbmcsIGNhbnQgc3dpdGNoCisJICAgIElmIGludGVybmFsIGFuZCBvdGhlciBzdHJlYW0gcGxheWluZywgY2FuJ3Qgc3dpdGNoCiAJKi8KIAogCWluaXRfdGltZXIoJmRwY20tPnRpbWVyKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hc2locGkvaHBpLmggYi9zb3VuZC9wY2kvYXNpaHBpL2hwaS5oCmluZGV4IDZmYzAyNWMuLjI1NTQyOWMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hc2locGkvaHBpLmgKKysrIGIvc291bmQvcGNpL2FzaWhwaS9ocGkuaApAQCAtNzI1LDcgKzcyNSw3IEBACiAjZGVmaW5lIEhQSV9QQURfVElUTEVfTEVOICAgICAgICAgICAgICAgNjQKIC8qKiBUaGUgdGV4dCBzdHJpbmcgY29udGFpbmluZyB0aGUgY29tbWVudC4gKi8KICNkZWZpbmUgSFBJX1BBRF9DT01NRU5UX0xFTiAgICAgICAgICAgICAyNTYKLS8qKiBUaGUgUFRZIHdoZW4gdGhlIHR1bmVyIGhhcyBub3QgcmVjaWV2ZWQgYW55IFBUWS4gKi8KKy8qKiBUaGUgUFRZIHdoZW4gdGhlIHR1bmVyIGhhcyBub3QgcmVjZWl2ZWQgYW55IFBUWS4gKi8KICNkZWZpbmUgSFBJX1BBRF9QUk9HUkFNX1RZUEVfSU5WQUxJRCAgICAweGZmZmYKIC8qKiBcfSAqLwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXNpaHBpL2hwaTYwMDAuYyBiL3NvdW5kL3BjaS9hc2locGkvaHBpNjAwMC5jCmluZGV4IDNlM2MyZWYuLjhjOGFhYzQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hc2locGkvaHBpNjAwMC5jCisrKyBiL3NvdW5kL3BjaS9hc2locGkvaHBpNjAwMC5jCkBAIC00MjMsNyArNDIzLDcgQEAKIAogCWFvLnByaXYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaHBpX2h3X29iaiksIEdGUF9LRVJORUwpOwogCWlmICghYW8ucHJpdikgewotCQlIUElfREVCVUdfTE9HKEVSUk9SLCAiY2FudCBnZXQgbWVtIGZvciBhZGFwdGVyIG9iamVjdFxuIik7CisJCUhQSV9ERUJVR19MT0coRVJST1IsICJjYW4ndCBnZXQgbWVtIGZvciBhZGFwdGVyIG9iamVjdFxuIik7CiAJCXBoci0+ZXJyb3IgPSBIUElfRVJST1JfTUVNT1JZX0FMTE9DOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmMgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYwppbmRleCA2MjA1MjViLi4yMmU5ZjA4IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYworKysgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYwpAQCAtNDY2LDcgKzQ2Niw3IEBACiAKIAlhby5wcml2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGhwaV9od19vYmopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWFvLnByaXYpIHsKLQkJSFBJX0RFQlVHX0xPRyhFUlJPUiwgImNhbnQgZ2V0IG1lbSBmb3IgYWRhcHRlciBvYmplY3RcbiIpOworCQlIUElfREVCVUdfTE9HKEVSUk9SLCAiY2FuJ3QgZ2V0IG1lbSBmb3IgYWRhcHRlciBvYmplY3RcbiIpOwogCQlwaHItPmVycm9yID0gSFBJX0VSUk9SX01FTU9SWV9BTExPQzsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hc2locGkvaHBpX2ludGVybmFsLmggYi9zb3VuZC9wY2kvYXNpaHBpL2hwaV9pbnRlcm5hbC5oCmluZGV4IGFmNjc4YmUuLjNiOWZkMTEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hc2locGkvaHBpX2ludGVybmFsLmgKKysrIGIvc291bmQvcGNpL2FzaWhwaS9ocGlfaW50ZXJuYWwuaApAQCAtNjA3LDcgKzYwNyw3IEBACiAjZW5kaWYKIAogc3RydWN0IGhwaV9idWZmZXIgewotICAvKiogcGxhY2Vob2RlciBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eSAoc2VlIGR3QnVmZmVyU2l6ZSkgKi8KKyAgLyoqIHBsYWNlaG9kZXIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKHNlZSBkd0J1ZmZlclNpemUpICovCiAJc3RydWN0IGhwaV9tc2dfZm9ybWF0IHJlc2VydmVkOwogCXUzMiBjb21tYW5kOyAvKio8IEhQSV9CVUZGRVJfQ01EX3h4eCovCiAJdTMyIHBjaV9hZGRyZXNzOyAvKio8IFBDSSBwaHlzaWNhbCBhZGRyZXNzIG9mIGJ1ZmZlciBmb3IgRFNQIERNQSAqLwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FzaWhwaS9ocGltc2d4LmMgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaW1zZ3guYwppbmRleCBiY2JkZjMwLi4zNjAwMjhiIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXNpaHBpL2hwaW1zZ3guYworKysgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaW1zZ3guYwpAQCAtNzIyLDcgKzcyMiw3IEBACiAJCXJldHVybiBwaHItPmVycm9yOwogCX0KIAlpZiAoaHIuZXJyb3IgPT0gMCkgewotCQkvKiB0aGUgYWRhcHRlciB3YXMgY3JlYXRlZCBzdWNjZXNmdWxseQorCQkvKiB0aGUgYWRhcHRlciB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkKIAkJICAgc2F2ZSB0aGUgbWFwcGluZyBmb3IgZnV0dXJlIHVzZSAqLwogCQlocGlfZW50cnlfcG9pbnRzW2hyLnUucy5hZGFwdGVyX2luZGV4XSA9IGVudHJ5X3BvaW50X2Z1bmM7CiAJCS8qIHByZXBhcmUgYWRhcHRlciAocHJlLW9wZW4gc3RyZWFtcyBldGMuKSAqLwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuaCBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmgKaW5kZXggZWNiOGY0ZC4uMDJmNmUwOCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuaAorKysgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5oCkBAIC0xMDQsNyArMTA0LDcgQEAKICNkZWZpbmUgTUlYX1BMQVlCKHgpICh2b3J0ZXgtPm1peHBsYXliW3hdKQogI2RlZmluZSBNSVhfU1BESUYoeCkgKHZvcnRleC0+bWl4c3BkaWZbeF0pCiAKLSNkZWZpbmUgTlJfV1RQQiAweDIwCQkvKiBXVCBjaGFubmVscyBwZXIgZWFoYyBiYW5rLiAqLworI2RlZmluZSBOUl9XVFBCIDB4MjAJCS8qIFdUIGNoYW5uZWxzIHBlciBlYWNoIGJhbmsuICovCiAKIC8qIFN0cnVjdHMgKi8KIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX2EzZC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfYTNkLmMKaW5kZXggZjRhYThmZjYuLjlhZThiM2IgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX2EzZC5jCisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX2EzZC5jCkBAIC01Myw3ICs1Myw3IEBACiB9CiAKICNlbmRpZgotLyogQXRtb3NwaGVyaWMgYWJzb3JidGlvbi4gKi8KKy8qIEF0bW9zcGhlcmljIGFic29ycHRpb24uICovCiAKIHN0YXRpYyB2b2lkCiBhM2RzcmNfU2V0QXRtb3NUYXJnZXQoYTNkc3JjX3QgKiBhLCBzaG9ydCBhYSwgc2hvcnQgYiwgc2hvcnQgYywgc2hvcnQgZCwKQEAgLTgzNSw3ICs4MzUsNyBAQAogCQlwYXJhbXNbaV0gPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVtpXTsKIAkvKiBUcmFuc2xhdGUgZ2VuZXJpYyBmaWx0ZXIgcGFyYW1zIHRvIGEzZCBmaWx0ZXIgcGFyYW1zLiAqLwogCXZvcnRleF9hM2RfdHJhbnNsYXRlX2ZpbHRlcihhLT5maWx0ZXIsIHBhcmFtcyk7Ci0JLyogQXRtb3NwaGVyaWMgYWJzb3JidGlvbiBhbmQgZmlsdGVyaW5nLiAqLworCS8qIEF0bW9zcGhlcmljIGFic29ycHRpb24gYW5kIGZpbHRlcmluZy4gKi8KIAlhM2RzcmNfU2V0QXRtb3NUYXJnZXQoYSwgYS0+ZmlsdGVyWzBdLAogCQkJICAgICAgYS0+ZmlsdGVyWzFdLCBhLT5maWx0ZXJbMl0sCiAJCQkgICAgICBhLT5maWx0ZXJbM10sIGEtPmZpbHRlcls0XSk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MF9wY20uYyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX3BjbS5jCmluZGV4IDU0MzlkNjYuLjMzZjBiYTUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX3BjbS5jCisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX3BjbS5jCkBAIC01MTUsNyArNTE1LDcgQEAKIAkJcmV0dXJuIC1FTk9ERVY7CiAKIAkvKiBpZHggaW5kaWNhdGVzIHdoaWNoIGtpbmQgb2YgUENNIGRldmljZS4gQURCLCBTUERJRiwgSTJTIGFuZCBBM0Qgc2hhcmUgdGhlIAotCSAqIHNhbWUgZG1hIGVuZ2luZS4gV1QgdXNlcyBpdCBvd24gc2VwYXJhdGUgZG1hIGVuZ2luZSB3aGNpaCBjYW50IGNhcHR1cmUuICovCisJICogc2FtZSBkbWEgZW5naW5lLiBXVCB1c2VzIGl0IG93biBzZXBhcmF0ZSBkbWEgZW5naW5lIHdoaWNoIGNhbid0IGNhcHR1cmUuICovCiAJaWYgKGlkeCA9PSBWT1JURVhfUENNX0FEQikKIAkJbnJfY2FwdCA9IG5yOwogCWVsc2UKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9henQzMzI4LmMgYi9zb3VuZC9wY2kvYXp0MzMyOC5jCmluZGV4IDU3MTVjNGQwLi45YjdhNjM0IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXp0MzMyOC5jCisrKyBiL3NvdW5kL3BjaS9henQzMzI4LmMKQEAgLTE0MCw3ICsxNDAsNyBAQAogICogIFBvc3NpYmxlIHJlbWVkaWVzOgogICogIC0gdXNlIHNwZWFrZXIgKGFtcGxpZmllcikgb3V0cHV0IGluc3RlYWQgb2YgaGVhZHBob25lIG91dHB1dAogICogICAgKGluIGNhc2UgY3JhY2tsaW5nIGlzIGR1ZSB0byBvdmVybG9hZGVkIG91dHB1dCBjbGlwcGluZykKLSAqICAtIHBsdWcgY2FyZCBpbnRvIGEgZGlmZmVyZW50IFBDSSBzbG90LCBwcmVmZXJyYWJseSBvbmUgdGhhdCBpc24ndCBzaGFyZWQKKyAqICAtIHBsdWcgY2FyZCBpbnRvIGEgZGlmZmVyZW50IFBDSSBzbG90LCBwcmVmZXJhYmx5IG9uZSB0aGF0IGlzbid0IHNoYXJlZAogICogICAgdG9vIG11Y2ggKHRoaXMgaGVscHMgYSBsb3QsIGJ1dCBub3QgY29tcGxldGVseSEpCiAgKiAgLSBnZXQgcmlkIG9mIFBDSSBWR0EgY2FyZCwgdXNlIEFHUCBpbnN0ZWFkCiAgKiAgLSB1cGdyYWRlIG9yIGRvd25ncmFkZSBCSU9TCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNi5oIGIvc291bmQvcGNpL2NhMDEwNi9jYTAxMDYuaAppbmRleCBmYzUzYjliLi5lOGU4Y2NjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNi5oCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2LmgKQEAgLTUxLDcgKzUxLDcgQEAKICAqICAgIEFkZCBzdXBwb3J0IGZvciBtdXRlIGNvbnRyb2wgb24gU0IgTGl2ZSAyNGJpdCAoY2FyZHMgdy8gU1BJIERBQykKICAqCiAgKgotICogIFRoaXMgY29kZSB3YXMgaW5pdGFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgorICogIFRoaXMgY29kZSB3YXMgaW5pdGlhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKICAqICBDb3B5cmlnaHQgKGMpIGJ5IEZyYW5jaXNjbyBNb3JhZXMgPGZtb3JhZXNAbmMucnIuY29tPgogICoKICAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTE3NSw3ICsxNzUsNyBAQAogLyogQ0EwMTA2IHBvaW50ZXItb2Zmc2V0IHJlZ2lzdGVyIHNldCwgYWNjZXNzZWQgdGhyb3VnaCB0aGUgUFRSIGFuZCBEQVRBIHJlZ2lzdGVycyAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS8qIEluaXRhbGx5IGFsbCByZWdpc3RlcnMgZnJvbSAweDAwIHRvIDB4M2YgaGF2ZSB6ZXJvIGNvbnRlbnRzLiAqLworLyogSW5pdGlhbGx5IGFsbCByZWdpc3RlcnMgZnJvbSAweDAwIHRvIDB4M2YgaGF2ZSB6ZXJvIGNvbnRlbnRzLiAqLwogI2RlZmluZSBQTEFZQkFDS19MSVNUX0FERFIJMHgwMAkJLyogQmFzZSBETUEgYWRkcmVzcyBvZiBhIGxpc3Qgb2YgcG9pbnRlcnMgdG8gZWFjaCBwZXJpb2Qvc2l6ZSAqLwogCQkJCQkJLyogT25lIGxpc3QgZW50cnk6IDQgYnl0ZXMgZm9yIERNQSBhZGRyZXNzLCAKIAkJCQkJCSAqIDQgYnl0ZXMgZm9yIHBlcmlvZF9zaXplIDw8IDE2LgpAQCAtMjIzLDcgKzIyMyw3IEBACiAgKiBUaGUgamFjayBoYXMgNCBwb2xlcy4gSSB3aWxsIGNhbGwgMSAtIFRpcCwgMiAtIE5leHQgdG8gMSwgMyAtIE5leHQgdG8gMiwgNCAtIE5leHQgdG8gMwogICogRm9yIEFuYWxvZ3VlOiAxIC0+IENlbnRlciBTcGVha2VyLCAyIC0+IFN1YiBXb29mZXIsIDMgLT4gR3JvdW5kLCA0IC0+IEdyb3VuZAogICogRm9yIERpZ2l0YWw6IDEgLT4gRnJvbnQgU1BESUYsIDIgLT4gUmVhciBTUERJRiwgMyAtPiBDZW50ZXIvU3Vid29vZmVyIFNQRElGLCA0IC0+IEdyb3VuZC4KLSAqIFN0YW5kYXJkIDQgcG9sZSBWaWRlbyBBL1YgY2FibGUgd2l0aCBSQ0Egb3V0cHV0czogMSAtPiBXaGl0ZSwgMiAtPiBZZWxsb3csIDMgLT4gU2hlaWxkIG9uIGFsbCB0aHJlZSwgNCAtPiBSZWQuCisgKiBTdGFuZGFyZCA0IHBvbGUgVmlkZW8gQS9WIGNhYmxlIHdpdGggUkNBIG91dHB1dHM6IDEgLT4gV2hpdGUsIDIgLT4gWWVsbG93LCAzIC0+IFNoaWVsZCBvbiBhbGwgdGhyZWUsIDQgLT4gUmVkLgogICogU28sIGZyb20gdGhpcyB5b3UgY2FuIHNlZSB0aGF0IHlvdSBjYW5ub3QgdXNlIGEgU3RhbmRhcmQgNCBwb2xlIFZpZGVvIEEvViBjYWJsZSB3aXRoIHRoZSBTQiBBdWRpZ3kgTFMgY2FyZC4KICAqLwogLyogVGhlIEZyb250IFNQRElGIFBDTSBnZXRzIG1peGVkIHdpdGggc2FtcGxlcyBmcm9tIHRoZSBBQzk3IGNvZGVjLCBzbyBjYW4gb25seSB3b3JrIGZvciBTdGVyZW8gUENNIGFuZCBub3QgQUMzL0RUUwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWFpbi5jIGIvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWFpbi5jCmluZGV4IDAxYjQ5MzguLjQzNzc1OTIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X21haW4uYworKysgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9tYWluLmMKQEAgLTExNyw3ICsxMTcsNyBAQAogICogICAgREFDOiBVbmtub3duCiAgKiAgICBUcnlpbmcgdG8gaGFuZGxlIGl0IGxpa2UgdGhlIFNCMDQxMC4KICAqCi0gKiAgVGhpcyBjb2RlIHdhcyBpbml0YWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CisgKiAgVGhpcyBjb2RlIHdhcyBpbml0aWFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgogICogIENvcHlyaWdodCAoYykgYnkgRnJhbmNpc2NvIE1vcmFlcyA8Zm1vcmFlc0BuYy5yci5jb20+CiAgKgogICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWl4ZXIuYyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X21peGVyLmMKaW5kZXggNjMwYWE0OS4uODRmM2Y5MiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWl4ZXIuYworKysgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9taXhlci5jCkBAIC00Miw3ICs0Miw3IEBACiAgKiAgMC4wLjE4CiAgKiAgICBBZGQgc3VwcG9ydCBmb3IgbXV0ZSBjb250cm9sIG9uIFNCIExpdmUgMjRiaXQgKGNhcmRzIHcvIFNQSSBEQUMpCiAgKgotICogIFRoaXMgY29kZSB3YXMgaW5pdGFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgorICogIFRoaXMgY29kZSB3YXMgaW5pdGlhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKICAqICBDb3B5cmlnaHQgKGMpIGJ5IEZyYW5jaXNjbyBNb3JhZXMgPGZtb3JhZXNAbmMucnIuY29tPgogICoKICAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X3Byb2MuYyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X3Byb2MuYwppbmRleCBiYTk2NDI4Li5jNjk0NDY0YiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfcHJvYy5jCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X3Byb2MuYwpAQCAtNDIsNyArNDIsNyBAQAogICogIDAuMC4xOAogICogICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIExpbmUtaW4gY2FwdHVyZSBvbiBTQiBMaXZlIDI0Yml0LgogICoKLSAqICBUaGlzIGNvZGUgd2FzIGluaXRhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKKyAqICBUaGlzIGNvZGUgd2FzIGluaXRpYWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CiAgKiAgQ29weXJpZ2h0IChjKSBieSBGcmFuY2lzY28gTW9yYWVzIDxmbW9yYWVzQG5jLnJyLmNvbT4KICAqCiAgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY21pcGNpLmMgYi9zb3VuZC9wY2kvY21pcGNpLmMKaW5kZXggYjViYjAzNi4uZjRlNTczNSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NtaXBjaS5jCisrKyBiL3NvdW5kL3BjaS9jbWlwY2kuYwpAQCAtNzMsNyArNzMsNyBAQAogbW9kdWxlX3BhcmFtX2FycmF5KGZtX3BvcnQsIGxvbmcsIE5VTEwsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhmbV9wb3J0LCAiRk0gcG9ydC4iKTsKIG1vZHVsZV9wYXJhbV9hcnJheShzb2Z0X2FjMywgYm9vbCwgTlVMTCwgMDQ0NCk7Ci1NT0RVTEVfUEFSTV9ERVNDKHNvZnRfYWMzLCAiU29md2FyZS1jb252ZXJzaW9uIG9mIHJhdyBTUERJRiBwYWNrZXRzIChtb2RlbCAwMzMgb25seSkuIik7CitNT0RVTEVfUEFSTV9ERVNDKHNvZnRfYWMzLCAiU29mdHdhcmUtY29udmVyc2lvbiBvZiByYXcgU1BESUYgcGFja2V0cyAobW9kZWwgMDMzIG9ubHkpLiIpOwogI2lmZGVmIFNVUFBPUlRfSk9ZU1RJQ0sKIG1vZHVsZV9wYXJhbV9hcnJheShqb3lzdGlja19wb3J0LCBpbnQsIE5VTEwsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhqb3lzdGlja19wb3J0LCAiSm95c3RpY2sgcG9ydCBhZGRyZXNzLiIpOwpAQCAtNjU2LDggKzY1Niw4IEBACiB9CiAKIC8qCi0gKiBQcm9ncmFtIHBsbCByZWdpc3RlciBiaXRzLCBJIGFzc3VtZSB0aGF0IHRoZSA4IHJlZ2lzdGVycyAweGY4IHVwdG8gMHhmZgotICogYXJlIG1hcHBlZCBvbnRvIHRoZSA4IEFEQy9EQUMgc2FtcGxpbmcgZnJlcXVlbmN5IHdoaWNoIGNhbiBiZSBjaG9vc2VuCisgKiBQcm9ncmFtIHBsbCByZWdpc3RlciBiaXRzLCBJIGFzc3VtZSB0aGF0IHRoZSA4IHJlZ2lzdGVycyAweGY4IHVwIHRvIDB4ZmYKKyAqIGFyZSBtYXBwZWQgb250byB0aGUgOCBBREMvREFDIHNhbXBsaW5nIGZyZXF1ZW5jeSB3aGljaCBjYW4gYmUgY2hvc2VuCiAgKiBhdCB0aGUgcmVnaXN0ZXIgQ01fUkVHX0ZVTkNUUkwxICgweDA0KS4KICAqIFByb2JsZW06IG90aGVyIHdheXMgYXJlIGFsc28gcG9zc2libGUgKGFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGF0PykKICAqLwpAQCAtNjY2LDcgKzY2Niw3IEBACiAJdW5zaWduZWQgaW50IHJlZyA9IENNX1JFR19QTEwgKyBzbG90OwogCS8qCiAJICogR3Vlc3MgdGhhdCB0aGlzIHByb2dyYW1zIGF0IHJlZy4gMHgwNCB0aGUgcG9zIDE1OjEzLzEyOjEwCi0JICogZm9yIERTRkMvQVNGQyAoMDAwIHVwdG8gMTExKS4KKwkgKiBmb3IgRFNGQy9BU0ZDICgwMDAgdXAgdG8gMTExKS4KIAkgKi8KIAogCS8qIEZJWE1FOiBJbml0IChEbyB3ZSd2ZSB0byBzZXQgYW4gb3RoZXIgcmVnaXN0ZXIgZmlyc3QgYmVmb3JlIHByb2dyYW1taW5nPykgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jdHhmaS9jdGF0Yy5jIGIvc291bmQvcGNpL2N0eGZpL2N0YXRjLmMKaW5kZXggYjkzMjE1NC4uMTNmMzNjMCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2N0eGZpL2N0YXRjLmMKKysrIGIvc291bmQvcGNpL2N0eGZpL2N0YXRjLmMKQEAgLTE2MjcsNyArMTYyNyw3IEBACiAgKiAgQ3JlYXRlcyBhbmQgaW5pdGlhbGl6ZXMgYSBoYXJkd2FyZSBtYW5hZ2VyLgogICoKICAqICBDcmVhdGVzIGttYWxsb2NhdGVkIGN0X2F0YyBzdHJ1Y3R1cmUuIEluaXRpYWxpemVzIGhhcmR3YXJlLgotICogIFJldHVybnMgMCBpZiBzdWNlZWRzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIGZhaWxzLgorICogIFJldHVybnMgMCBpZiBzdWNjZWVkcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBmYWlscy4KICAqLwogCiBpbnQgX19kZXZpbml0IGN0X2F0Y19jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMgYi9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYwppbmRleCAwY2Y0MDBmLi5hNWM5NTdkIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYworKysgYi9zb3VuZC9wY2kvY3R4ZmkvY3RodzIwazEuYwpAQCAtMTI4NSw3ICsxMjg1LDcgQEAKIAlod193cml0ZV8yMGt4KGh3LCBQVFBBTFgsIHB0cF9waHlzX2xvdyk7CiAJaHdfd3JpdGVfMjBreChodywgUFRQQUhYLCBwdHBfcGh5c19oaWdoKTsKIAlod193cml0ZV8yMGt4KGh3LCBUUk5DVEwsIHRybmN0bCk7Ci0JaHdfd3JpdGVfMjBreChodywgVFJOSVMsIDB4MjAwYzAxKTsgLyogcmVhbHkgbmVlZGVkPyAqLworCWh3X3dyaXRlXzIwa3goaHcsIFRSTklTLCAweDIwMGMwMSk7IC8qIHJlYWxseSBuZWVkZWQ/ICovCiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9lbXUxMGsxL21lbW9yeS5jIGIvc291bmQvcGNpL2VtdTEwazEvbWVtb3J5LmMKaW5kZXggOTU3YTMxMS4uYzI1MDYxNCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvbWVtb3J5LmMKKysrIGIvc291bmQvcGNpL2VtdTEwazEvbWVtb3J5LmMKQEAgLTI0OCw3ICsyNDgsNyBAQAogLyoKICAqIG1hcCB0aGUgZ2l2ZW4gbWVtb3J5IGJsb2NrIG9uIFBUQi4KICAqIGlmIHRoZSBibG9jayBpcyBhbHJlYWR5IG1hcHBlZCwgdXBkYXRlIHRoZSBsaW5rIG9yZGVyLgotICogaWYgbm8gZW1wdHkgcGFnZXMgYXJlIGZvdW5kLCB0cmllcyB0byByZWxlYXNlIHVuc2VkIG1lbW9yeSBibG9ja3MKKyAqIGlmIG5vIGVtcHR5IHBhZ2VzIGFyZSBmb3VuZCwgdHJpZXMgdG8gcmVsZWFzZSB1bnVzZWQgbWVtb3J5IGJsb2NrcwogICogYW5kIHJldHJ5IHRoZSBtYXBwaW5nLgogICovCiBpbnQgc25kX2VtdTEwazFfbWVtYmxrX21hcChzdHJ1Y3Qgc25kX2VtdTEwazEgKmVtdSwgc3RydWN0IHNuZF9lbXUxMGsxX21lbWJsayAqYmxrKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VtdTEwazEvcDE2di5jIGIvc291bmQvcGNpL2VtdTEwazEvcDE2di5jCmluZGV4IDYxYjhhYjMuLmE4MWRjNDQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lbXUxMGsxL3AxNnYuYworKysgYi9zb3VuZC9wY2kvZW11MTBrMS9wMTZ2LmMKQEAgLTY5LDcgKzY5LDcgQEAKICAqICAgIEFEQzogUGhpbGlwcyAxMzYxVCAoU3RlcmVvIDI0Yml0KQogICogICAgREFDOiBDUzQzODItSyAoOC1jaGFubmVsLCAyNGJpdCwgMTkyS2h6KQogICoKLSAqICBUaGlzIGNvZGUgd2FzIGluaXRhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKKyAqICBUaGlzIGNvZGUgd2FzIGluaXRpYWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CiAgKiAgQ29weXJpZ2h0IChjKSBieSBGcmFuY2lzY28gTW9yYWVzIDxmbW9yYWVzQG5jLnJyLmNvbT4KICAqCiAgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZW11MTBrMS9wMTZ2LmggYi9zb3VuZC9wY2kvZW11MTBrMS9wMTZ2LmgKaW5kZXggMDBmNDgxNy4uNGUwZWUxYSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2VtdTEwazEvcDE2di5oCisrKyBiL3NvdW5kL3BjaS9lbXUxMGsxL3AxNnYuaApAQCAtNTksNyArNTksNyBAQAogICogICAgQURDOiBQaGlsaXBzIDEzNjFUIChTdGVyZW8gMjRiaXQpCiAgKiAgICBEQUM6IENTNDM4Mi1LICg4LWNoYW5uZWwsIDI0Yml0LCAxOTJLaHopCiAgKgotICogIFRoaXMgY29kZSB3YXMgaW5pdGFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgorICogIFRoaXMgY29kZSB3YXMgaW5pdGlhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKICAqICBDb3B5cmlnaHQgKGMpIGJ5IEZyYW5jaXNjbyBNb3JhZXMgPGZtb3JhZXNAbmMucnIuY29tPgogICoKICAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTg2LDcgKzg2LDcgQEAKICAqIFRoZSBzYW1wbGUgcmF0ZSBpcyBhbHNvIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgcmVnaXN0ZXJzIHRoYXQgY29udHJvbCB0aGUgcmF0ZSBvZiB0aGUgRU1VMTBLMiBzYW1wbGUgcmF0ZSBjb252ZXJ0ZXJzLgogICovCiAKLS8qIEluaXRhbGx5IGFsbCByZWdpc3RlcnMgZnJvbSAweDAwIHRvIDB4M2YgaGF2ZSB6ZXJvIGNvbnRlbnRzLiAqLworLyogSW5pdGlhbGx5IGFsbCByZWdpc3RlcnMgZnJvbSAweDAwIHRvIDB4M2YgaGF2ZSB6ZXJvIGNvbnRlbnRzLiAqLwogI2RlZmluZSBQTEFZQkFDS19MSVNUX0FERFIJMHgwMAkJLyogQmFzZSBETUEgYWRkcmVzcyBvZiBhIGxpc3Qgb2YgcG9pbnRlcnMgdG8gZWFjaCBwZXJpb2Qvc2l6ZSAqLwogCQkJCQkJLyogT25lIGxpc3QgZW50cnk6IDQgYnl0ZXMgZm9yIERNQSBhZGRyZXNzLCAKIAkJCQkJCSAqIDQgYnl0ZXMgZm9yIHBlcmlvZF9zaXplIDw8IDE2LgpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYyBiL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMKaW5kZXggMmM3OWU5Ni4uNDMwZjQxZCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYworKysgYi9zb3VuZC9wY2kvaGRhL2hkYV9jb2RlYy5jCkBAIC0zNjYxLDcgKzM2NjEsNyBAQAogICogd2l0aCB0aGUgcHJvcGVyIHBhcmFtZXRlcnMgZm9yIHNldCB1cC4KICAqIG9wcy5jbGVhbnVwIHNob3VsZCBiZSBjYWxsZWQgaW4gaHdfZnJlZSBmb3IgY2xlYW4gdXAgb2Ygc3RyZWFtcy4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMCBpZiBzdWNjZXNzZnVsbCwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgogICovCiBpbnQgX19kZXZpbml0IHNuZF9oZGFfYnVpbGRfcGNtcyhzdHJ1Y3QgaGRhX2J1cyAqYnVzKQogewpAQCAtNDg1MSw3ICs0ODUxLDcgQEAKICAqCiAgKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bC4KICAqCi0gKiBUaGlzIGZ1Y250aW9uIGlzIGRlZmluZWQgb25seSB3aGVuIFBPV0VSX1NBVkUgaXNuJ3Qgc2V0LgorICogVGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIG9ubHkgd2hlbiBQT1dFUl9TQVZFIGlzbid0IHNldC4KICAqIEluIHRoZSBwb3dlci1zYXZlIG1vZGUsIHRoZSBjb2RlYyBpcyByZXN1bWVkIGR5bmFtaWNhbGx5LgogICovCiBpbnQgc25kX2hkYV9yZXN1bWUoc3RydWN0IGhkYV9idXMgKmJ1cykKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfY29uZXhhbnQuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfY29uZXhhbnQuYwppbmRleCA2OWUzMzg2Li5hZDk3ZDkzIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2NvbmV4YW50LmMKKysrIGIvc291bmQvcGNpL2hkYS9wYXRjaF9jb25leGFudC5jCkBAIC0zMDM1LDYgKzMwMzUsNyBAQAogCVNORF9QQ0lfUVVJUksoMHgxN2FhLCAweDIxYzYsICJUaGlua3BhZCBFZGdlIDEzIiwgQ1hUNTA2Nl9BU1VTKSwKICAJU05EX1BDSV9RVUlSSygweDE3YWEsIDB4MjE1ZSwgIkxlbm92byBUaGlua3BhZCIsIENYVDUwNjZfVEhJTktQQUQpLAogCVNORF9QQ0lfUVVJUksoMHgxN2FhLCAweDIxZGEsICJMZW5vdm8gWDIyMCIsIENYVDUwNjZfVEhJTktQQUQpLAorCVNORF9QQ0lfUVVJUksoMHgxN2FhLCAweDIxZGIsICJMZW5vdm8gWDIyMC10YWJsZXQiLCBDWFQ1MDY2X1RISU5LUEFEKSwKIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHgzOGFmLCAiTGVub3ZvIEc1NjAiLCBDWFQ1MDY2X0FTVVMpLAogCVNORF9QQ0lfUVVJUktfVkVORE9SKDB4MTdhYSwgIkxlbm92byIsIENYVDUwNjZfSURFQVBBRCksIC8qIEZhbGxiYWNrIGZvciBMZW5vdm9zIHdpdGhvdXQgZG9jayBtaWMgKi8KIAl7fQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwppbmRleCAyNTE3NzNlLi43MTU2MTVhIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYworKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwpAQCAtMTI4MCw2ICsxMjgwLDM5IEBACiAJCQkJCSAgICAgc3RyZWFtX3RhZywgZm9ybWF0LCBzdWJzdHJlYW0pOwogfQogCitzdGF0aWMgdm9pZCBudmhkbWlfOGNoXzd4X3NldF9pbmZvX2ZyYW1lX3BhcmFtZXRlcnMoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsCisJCQkJCQkgICAgaW50IGNoYW5uZWxzKQoreworCXVuc2lnbmVkIGludCBjaGFubWFzazsKKwlpbnQgY2hhbiA9IGNoYW5uZWxzID8gKGNoYW5uZWxzIC0gMSkgOiAxOworCisJc3dpdGNoIChjaGFubmVscykgeworCWRlZmF1bHQ6CisJY2FzZSAwOgorCWNhc2UgMjoKKwkJY2hhbm1hc2sgPSAweDAwOworCQlicmVhazsKKwljYXNlIDQ6CisJCWNoYW5tYXNrID0gMHgwODsKKwkJYnJlYWs7CisJY2FzZSA2OgorCQljaGFubWFzayA9IDB4MGI7CisJCWJyZWFrOworCWNhc2UgODoKKwkJY2hhbm1hc2sgPSAweDEzOworCQlicmVhazsKKwl9CisKKwkvKiBTZXQgdGhlIGF1ZGlvIGluZm9mcmFtZSBjaGFubmVsIGFsbG9jYXRpb24gYW5kIGNoZWNrc3VtIGZpZWxkcy4gIFRoZQorCSAqIGNoYW5uZWwgY291bnQgaXMgY29tcHV0ZWQgaW1wbGljaXRseSBieSB0aGUgaGFyZHdhcmUuICovCisJc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywgMHgxLCAwLAorCQkJTnZfVkVSQl9TRVRfQ2hhbm5lbF9BbGxvY2F0aW9uLCBjaGFubWFzayk7CisKKwlzbmRfaGRhX2NvZGVjX3dyaXRlKGNvZGVjLCAweDEsIDAsCisJCQlOdl9WRVJCX1NFVF9JbmZvX0ZyYW1lX0NoZWNrc3VtLAorCQkJKDB4NzEgLSBjaGFuIC0gY2hhbm1hc2spKTsKK30KKwogc3RhdGljIGludCBudmhkbWlfOGNoXzd4X3BjbV9jbG9zZShzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLAogCQkJCSAgIHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLAogCQkJCSAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQpAQCAtMTI5OCw2ICsxMzMxLDEwIEBACiAJCQkJQUNfVkVSQl9TRVRfU1RSRUFNX0ZPUk1BVCwgMCk7CiAJfQogCisJLyogVGhlIGF1ZGlvIGhhcmR3YXJlIHNlbmRzIGEgY2hhbm5lbCBjb3VudCBvZiAweDcgKDhjaCkgd2hlbiBhbGwgdGhlCisJICogc3RyZWFtcyBhcmUgZGlzYWJsZWQuICovCisJbnZoZG1pXzhjaF83eF9zZXRfaW5mb19mcmFtZV9wYXJhbWV0ZXJzKGNvZGVjLCA4KTsKKwogCXJldHVybiBzbmRfaGRhX211bHRpX291dF9kaWdfY2xvc2UoY29kZWMsICZzcGVjLT5tdWx0aW91dCk7CiB9CiAKQEAgLTEzMDgsMzcgKzEzNDUsMTYgQEAKIAkJCQkgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogewogCWludCBjaHM7Ci0JdW5zaWduZWQgaW50IGRhdGFEQ0MxLCBkYXRhRENDMiwgY2hhbiwgY2hhbm1hc2ssIGNoYW5uZWxfaWQ7CisJdW5zaWduZWQgaW50IGRhdGFEQ0MxLCBkYXRhRENDMiwgY2hhbm5lbF9pZDsKIAlpbnQgaTsKIAogCW11dGV4X2xvY2soJmNvZGVjLT5zcGRpZl9tdXRleCk7CiAKIAljaHMgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPmNoYW5uZWxzOwotCWNoYW4gPSBjaHMgPyAoY2hzIC0gMSkgOiAxOwogCi0Jc3dpdGNoIChjaHMpIHsKLQlkZWZhdWx0OgotCWNhc2UgMDoKLQljYXNlIDI6Ci0JCWNoYW5tYXNrID0gMHgwMDsKLQkJYnJlYWs7Ci0JY2FzZSA0OgotCQljaGFubWFzayA9IDB4MDg7Ci0JCWJyZWFrOwotCWNhc2UgNjoKLQkJY2hhbm1hc2sgPSAweDBiOwotCQlicmVhazsKLQljYXNlIDg6Ci0JCWNoYW5tYXNrID0gMHgxMzsKLQkJYnJlYWs7Ci0JfQogCWRhdGFEQ0MxID0gQUNfRElHMV9FTkFCTEUgfCBBQ19ESUcxX0NPUFlSSUdIVDsKIAlkYXRhRENDMiA9IDB4MjsKIAotCS8qIHNldCB0aGUgQXVkaW8gSW5mb3JGcmFtZSBDaGFubmVsIEFsbG9jYXRpb24gKi8KLQlzbmRfaGRhX2NvZGVjX3dyaXRlKGNvZGVjLCAweDEsIDAsCi0JCQlOdl9WRVJCX1NFVF9DaGFubmVsX0FsbG9jYXRpb24sIGNoYW5tYXNrKTsKLQogCS8qIHR1cm4gb2ZmIFNQRElGIG9uY2U7IG90aGVyd2lzZSB0aGUgSUVDOTU4IGJpdHMgd29uJ3QgYmUgdXBkYXRlZCAqLwogCWlmIChjb2RlYy0+c3BkaWZfc3RhdHVzX3Jlc2V0ICYmIChjb2RlYy0+c3BkaWZfY3RscyAmIEFDX0RJRzFfRU5BQkxFKSkKIAkJc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywKQEAgLTE0MTMsMTAgKzE0MjksNyBAQAogCQl9CiAJfQogCi0JLyogc2V0IHRoZSBBdWRpbyBJbmZvIEZyYW1lIENoZWNrc3VtICovCi0Jc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywgMHgxLCAwLAotCQkJTnZfVkVSQl9TRVRfSW5mb19GcmFtZV9DaGVja3N1bSwKLQkJCSgweDcxIC0gY2hhbiAtIGNoYW5tYXNrKSk7CisJbnZoZG1pXzhjaF83eF9zZXRfaW5mb19mcmFtZV9wYXJhbWV0ZXJzKGNvZGVjLCBjaHMpOwogCiAJbXV0ZXhfdW5sb2NrKCZjb2RlYy0+c3BkaWZfbXV0ZXgpOwogCXJldHVybiAwOwpAQCAtMTUxMiw2ICsxNTI1LDExIEBACiAJc3BlYy0+bXVsdGlvdXQubWF4X2NoYW5uZWxzID0gODsKIAlzcGVjLT5wY21fcGxheWJhY2sgPSAmbnZoZG1pX3BjbV9wbGF5YmFja184Y2hfN3g7CiAJY29kZWMtPnBhdGNoX29wcyA9IG52aGRtaV9wYXRjaF9vcHNfOGNoXzd4OworCisJLyogSW5pdGlhbGl6ZSB0aGUgYXVkaW8gaW5mb2ZyYW1lIGNoYW5uZWwgbWFzayBhbmQgY2hlY2tzdW0gdG8gc29tZXRoaW5nCisJICogdmFsaWQgKi8KKwludmhkbWlfOGNoXzd4X3NldF9pbmZvX2ZyYW1lX3BhcmFtZXRlcnMoY29kZWMsIDgpOworCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKaW5kZXggMTJjNmY0NS4uNTI5MjhkOSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKKysrIGIvc291bmQvcGNpL2hkYS9wYXRjaF9yZWFsdGVrLmMKQEAgLTU0OSw3ICs1NDksNyBAQAogCiAvKgogICogQ29udHJvbCB0aGUgbW9kZSBvZiBwaW4gd2lkZ2V0IHNldHRpbmdzIHZpYSB0aGUgbWl4ZXIuICAicGMiIGlzIHVzZWQKLSAqIGluc3RlYWQgb2YgIiUiIHRvIGF2b2lkIGNvbnNlcXVlbmNlcyBvZiBhY2NpZGVudGx5IHRyZWF0aW5nIHRoZSAlIGFzCisgKiBpbnN0ZWFkIG9mICIlIiB0byBhdm9pZCBjb25zZXF1ZW5jZXMgb2YgYWNjaWRlbnRhbGx5IHRyZWF0aW5nIHRoZSAlIGFzCiAgKiBiZWluZyBwYXJ0IG9mIGEgZm9ybWF0IHNwZWNpZmllci4gIE1heGltdW0gYWxsb3dlZCBsZW5ndGggb2YgYSB2YWx1ZSBpcwogICogNjMgY2hhcmFjdGVycyBwbHVzIE5VTEwgdGVybWluYXRvci4KICAqCkBAIC05ODM2LDcgKzk4MzYsNyBAQAogCiAJU05EX1BDSV9RVUlSSygweDEwMjgsIDB4MDIwZCwgIkRlbGwgSW5zcGlyb24gNTMwIiwgQUxDODg4XzZTVF9ERUxMKSwKIAotCVNORF9QQ0lfUVVJUksoMHgxMDNjLCAweDJhM2QsICJIUCBQYXZpbGxpb24iLCBBTEM4ODNfNlNUX0RJRyksCisJU05EX1BDSV9RVUlSSygweDEwM2MsIDB4MmEzZCwgIkhQIFBhdmlsaW9uIiwgQUxDODgzXzZTVF9ESUcpLAogCVNORF9QQ0lfUVVJUksoMHgxMDNjLCAweDJhNGYsICJIUCBTYW1iYSIsIEFMQzg4OF8zU1RfSFApLAogCVNORF9QQ0lfUVVJUksoMHgxMDNjLCAweDJhNjAsICJIUCBMdWNrbm93IiwgQUxDODg4XzNTVF9IUCksCiAJU05EX1BDSV9RVUlSSygweDEwM2MsIDB4MmE2MSwgIkhQIE5ldHRsZSIsIEFMQzg4M182U1RfRElHKSwKQEAgLTE0MTI0LDcgKzE0MTI0LDcgQEAKIH07CiAKIHN0YXRpYyBoZGFfbmlkX3QgYWxjMjY5X2FkY19jYW5kaWRhdGVzW10gPSB7Ci0JMHgwOCwgMHgwOSwgMHgwNywKKwkweDA4LCAweDA5LCAweDA3LCAweDExLAogfTsKIAogI2RlZmluZSBhbGMyNjlfbW9kZXMJCWFsYzI2MF9tb2RlcwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9zaWdtYXRlbC5jIGIvc291bmQvcGNpL2hkYS9wYXRjaF9zaWdtYXRlbC5jCmluZGV4IDA1ZmNkNjAuLjk0ZDE5YzAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfc2lnbWF0ZWwuYworKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3NpZ21hdGVsLmMKQEAgLTI0NzUsNyArMjQ3NSw3IEBACiAgCiAJc3BlYy0+aHBfc3dpdGNoID0gdWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gPyBuaWQgOiAwOwogCi0JLyogY2hlY2sgdG8gYmUgc3VyZSB0aGF0IHRoZSBwb3J0cyBhcmUgdXB0byBkYXRlIHdpdGgKKwkvKiBjaGVjayB0byBiZSBzdXJlIHRoYXQgdGhlIHBvcnRzIGFyZSB1cCB0byBkYXRlIHdpdGgKIAkgKiBzd2l0Y2ggY2hhbmdlcwogCSAqLwogCXN0YWNfaXNzdWVfdW5zb2xfZXZlbnQoY29kZWMsIG5pZCk7CkBAIC0zNDA4LDYgKzM0MDgsOSBAQAogCWhkYV9uaWRfdCBjb25uW0hEQV9NQVhfTlVNX0lOUFVUU107CiAJaW50IGksIG51bXM7CiAKKwlpZiAoIShnZXRfd2NhcHMoY29kZWMsIG11eCkgJiBBQ19XQ0FQX0NPTk5fTElTVCkpCisJCXJldHVybiAtMTsKKwogCW51bXMgPSBzbmRfaGRhX2dldF9jb25uZWN0aW9ucyhjb2RlYywgbXV4LCBjb25uLCBBUlJBWV9TSVpFKGNvbm4pKTsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtczsgaSsrKQogCQlpZiAoY29ubltpXSA9PSBuaWQpCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9hdXJlb24uYyBiL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jCmluZGV4IDJmNjI1MjIuLjNlNGY4YzEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jCkBAIC0xNDgsNyArMTQ4LDcgQEAKIAl1ZGVsYXkoMTAwKTsKIAkvKgogCSAqIHNlbmQgZGV2aWNlIGFkZHJlc3MsIGNvbW1hbmQgYW5kIHZhbHVlLAotCSAqIHNraXBwaW5nIGFjayBjeWNsZXMgaW5iZXR3ZWVuCisJICogc2tpcHBpbmcgYWNrIGN5Y2xlcyBpbiBiZXR3ZWVuCiAJICovCiAJZm9yIChqID0gMDsgaiA8IDM7IGorKykgewogCQlzd2l0Y2ggKGopIHsKQEAgLTIxNDMsNyArMjE0Myw3IEBACiAJCWljZS0+bnVtX3RvdGFsX2FkY3MgPSAyOwogCX0KIAotCS8qIHRvIHJlbWViZXIgdGhlIHJlZ2lzdGVyIHZhbHVlcyBvZiBDUzg0MTUgKi8KKwkvKiB0byByZW1lbWJlciB0aGUgcmVnaXN0ZXIgdmFsdWVzIG9mIENTODQxNSAqLwogCWljZS0+YWttID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNuZF9ha200eHh4KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFpY2UtPmFrbSkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9pY2UxNzEyLmMgYi9zb3VuZC9wY2kvaWNlMTcxMi9pY2UxNzEyLmMKaW5kZXggNGZjNmQ4Yi4uZjQ1OTRkNyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2ljZTE3MTIvaWNlMTcxMi5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MTIuYwpAQCAtMjc1NSw3ICsyNzU1LDcgQEAKIAkJCXJldHVybiBlcnI7CiAJCX0KIAkJaWYgKGMtPm1wdTQwMV8xX25hbWUpCi0JCQkvKiAgUHJlZmVyZWQgbmFtZSBhdmFpbGFibGUgaW4gY2FyZF9pbmZvICovCisJCQkvKiAgUHJlZmVycmVkIG5hbWUgYXZhaWxhYmxlIGluIGNhcmRfaW5mbyAqLwogCQkJc25wcmludGYoaWNlLT5ybWlkaVswXS0+bmFtZSwKIAkJCQkgc2l6ZW9mKGljZS0+cm1pZGlbMF0tPm5hbWUpLAogCQkJCSAiJXMgJWQiLCBjLT5tcHU0MDFfMV9uYW1lLCBjYXJkLT5udW1iZXIpOwpAQCAtMjc3Miw3ICsyNzcyLDcgQEAKIAkJCQlyZXR1cm4gZXJyOwogCQkJfQogCQkJaWYgKGMtPm1wdTQwMV8yX25hbWUpCi0JCQkJLyogIFByZWZlcmVkIG5hbWUgYXZhaWxhYmxlIGluIGNhcmRfaW5mbyAqLworCQkJCS8qICBQcmVmZXJyZWQgbmFtZSBhdmFpbGFibGUgaW4gY2FyZF9pbmZvICovCiAJCQkJc25wcmludGYoaWNlLT5ybWlkaVsxXS0+bmFtZSwKIAkJCQkJIHNpemVvZihpY2UtPnJtaWRpWzFdLT5uYW1lKSwKIAkJCQkJICIlcyAlZCIsIGMtPm1wdTQwMV8yX25hbWUsCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaWNlMTcxMi9wb250aXMuYyBiL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jCmluZGV4IGNkYjg3M2YuLjkyYzExNjAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jCkBAIC03NjgsNyArNzY4LDcgQEAKIAlpY2UtPm51bV90b3RhbF9kYWNzID0gMjsKIAlpY2UtPm51bV90b3RhbF9hZGNzID0gMjsKIAotCS8qIHRvIHJlbWViZXIgdGhlIHJlZ2lzdGVyIHZhbHVlcyAqLworCS8qIHRvIHJlbWVtYmVyIHRoZSByZWdpc3RlciB2YWx1ZXMgKi8KIAlpY2UtPmFrbSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzbmRfYWttNHh4eCksIEdGUF9LRVJORUwpOwogCWlmICghIGljZS0+YWttKQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pY2UxNzEyL3Byb2RpZ3lfaGlmaS5jIGIvc291bmQvcGNpL2ljZTE3MTIvcHJvZGlneV9oaWZpLmMKaW5kZXggNmE5ZmVlMy4uNzY0Y2M5M2QgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pY2UxNzEyL3Byb2RpZ3lfaGlmaS5jCisrKyBiL3NvdW5kL3BjaS9pY2UxNzEyL3Byb2RpZ3lfaGlmaS5jCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQAogCSogZG9uJ3QgY2FsbCBzbmRfaWNlMTcxMl9ncGlvX2dldC9wdXQoKSwgb3RoZXJ3aXNlIGl0J3Mgb3ZlcndyaXR0ZW4KIAkqLwogCWljZS0+Z3Bpby5zYXZlZFswXSA9IDA7Ci0JLyogdG8gcmVtZWJlciB0aGUgcmVnaXN0ZXIgdmFsdWVzICovCisJLyogdG8gcmVtZW1iZXIgdGhlIHJlZ2lzdGVyIHZhbHVlcyAqLwogCiAJaWNlLT5ha20gPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc25kX2FrbTR4eHgpLCBHRlBfS0VSTkVMKTsKIAlpZiAoISBpY2UtPmFrbSkKQEAgLTExMjgsNyArMTEyOCw3IEBACiAJKiBkb24ndCBjYWxsIHNuZF9pY2UxNzEyX2dwaW9fZ2V0L3B1dCgpLCBvdGhlcndpc2UgaXQncyBvdmVyd3JpdHRlbgogCSovCiAJaWNlLT5ncGlvLnNhdmVkWzBdID0gMDsKLQkvKiB0byByZW1lYmVyIHRoZSByZWdpc3RlciB2YWx1ZXMgKi8KKwkvKiB0byByZW1lbWJlciB0aGUgcmVnaXN0ZXIgdmFsdWVzICovCiAKIAlpY2UtPmFrbSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzbmRfYWttNHh4eCksIEdGUF9LRVJORUwpOwogCWlmICghIGljZS0+YWttKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2ludGVsOHgwLmMgYi9zb3VuZC9wY2kvaW50ZWw4eDAuYwppbmRleCA2MjlhNTQ5Li42Yzg5NmRiIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaW50ZWw4eDAuYworKysgYi9zb3VuZC9wY2kvaW50ZWw4eDAuYwpAQCAtNTM0LDcgKzUzNCw3IEBACiAJCXVkZWxheSgxMCk7CiAJfSB3aGlsZSAodGltZS0tKTsKIAotCS8qIGFjY2VzcyB0byBzb21lIGZvcmJpZGRlbiAobm9uIGV4aXN0YW50KSBhYzk3IHJlZ2lzdGVycyB3aWxsIG5vdAorCS8qIGFjY2VzcyB0byBzb21lIGZvcmJpZGRlbiAobm9uIGV4aXN0ZW50KSBhYzk3IHJlZ2lzdGVycyB3aWxsIG5vdAogCSAqIHJlc2V0IHRoZSBzZW1hcGhvcmUuIFNvIGV2ZW4gaWYgeW91IGRvbid0IGdldCB0aGUgc2VtYXBob3JlLCBzdGlsbAogCSAqIGNvbnRpbnVlIHRoZSBhY2Nlc3MuIFdlIGRvbid0IG5lZWQgdGhlIHNlbWFwaG9yZSBhbnl3YXkuICovCiAJc25kX3ByaW50ayhLRVJOX0VSUiAiY29kZWNfc2VtYXBob3JlOiBzZW1hcGhvcmUgaXMgbm90IHJlYWR5IFsweCV4XVsweCV4XVxuIiwKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pbnRlbDh4MG0uYyBiL3NvdW5kL3BjaS9pbnRlbDh4MG0uYwppbmRleCAyYWU4ZDI5Li4yNzcwOWYwIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaW50ZWw4eDBtLmMKKysrIGIvc291bmQvcGNpL2ludGVsOHgwbS5jCkBAIC0zMzEsNyArMzMxLDcgQEAKIAkJdWRlbGF5KDEwKTsKIAl9IHdoaWxlICh0aW1lLS0pOwogCi0JLyogYWNjZXNzIHRvIHNvbWUgZm9yYmlkZGVuIChub24gZXhpc3RhbnQpIGFjOTcgcmVnaXN0ZXJzIHdpbGwgbm90CisJLyogYWNjZXNzIHRvIHNvbWUgZm9yYmlkZGVuIChub24gZXhpc3RlbnQpIGFjOTcgcmVnaXN0ZXJzIHdpbGwgbm90CiAJICogcmVzZXQgdGhlIHNlbWFwaG9yZS4gU28gZXZlbiBpZiB5b3UgZG9uJ3QgZ2V0IHRoZSBzZW1hcGhvcmUsIHN0aWxsCiAJICogY29udGludWUgdGhlIGFjY2Vzcy4gV2UgZG9uJ3QgbmVlZCB0aGUgc2VtYXBob3JlIGFueXdheS4gKi8KIAlzbmRfcHJpbnRrKEtFUk5fRVJSICJjb2RlY19zZW1hcGhvcmU6IHNlbWFwaG9yZSBpcyBub3QgcmVhZHkgWzB4JXhdWzB4JXhdXG4iLApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL21peGFydC9taXhhcnRfY29yZS5jIGIvc291bmQvcGNpL21peGFydC9taXhhcnRfY29yZS5jCmluZGV4IGQzMzUwZjMuLjNkZjBmNTMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9taXhhcnQvbWl4YXJ0X2NvcmUuYworKysgYi9zb3VuZC9wY2kvbWl4YXJ0L21peGFydF9jb3JlLmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogCWlmICghIHRpbWVvdXQpIHsKIAkJLyogZXJyb3IgLSBubyBhY2sgKi8KIAkJbXV0ZXhfdW5sb2NrKCZtZ3ItPm1zZ19tdXRleCk7Ci0JCXNuZF9wcmludGsoS0VSTl9FUlIgImVycm9yOiBubyByZXBvbnNlIG9uIG1zZyAleFxuIiwgbXNnX2ZyYW1lKTsKKwkJc25kX3ByaW50ayhLRVJOX0VSUiAiZXJyb3I6IG5vIHJlc3BvbnNlIG9uIG1zZyAleFxuIiwgbXNnX2ZyYW1lKTsKIAkJcmV0dXJuIC1FSU87CiAJfQogCkBAIC0yNzgsNyArMjc4LDcgQEAKIAllcnIgPSBnZXRfbXNnKG1nciwgJnJlc3AsIG1zZ19mcmFtZSk7CiAKIAlpZiggcmVxdWVzdC0+bWVzc2FnZV9pZCAhPSByZXNwLm1lc3NhZ2VfaWQgKQotCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJSRVBPTlNFIEVSUk9SIVxuIik7CisJCXNuZF9wcmludGsoS0VSTl9FUlIgIlJFU1BPTlNFIEVSUk9SIVxuIik7CiAKIAltdXRleF91bmxvY2soJm1nci0+bXNnX211dGV4KTsKIAlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3BjeGhyL3BjeGhyX2NvcmUuYyBiL3NvdW5kL3BjaS9wY3hoci9wY3hocl9jb3JlLmMKaW5kZXggODMzZTcxOC4uMzA0NDExYyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3BjeGhyL3BjeGhyX2NvcmUuYworKysgYi9zb3VuZC9wY2kvcGN4aHIvcGN4aHJfY29yZS5jCkBAIC0xMDQyLDExICsxMDQyLDExIEBACiAJaW50IGksIGo7CiAKIAlpZiAobWdyLT5zcmNfaXRfZHNwICYgUENYSFJfSVJRX0ZSRVFfQ0hBTkdFKQotCQlzbmRfcHJpbnRkZCgiVEFTS0xFVCA6IFBDWEhSX0lSUV9GUkVRX0NIQU5HRSBldmVudCBvY2N1cmVkXG4iKTsKKwkJc25kX3ByaW50ZGQoIlRBU0tMRVQgOiBQQ1hIUl9JUlFfRlJFUV9DSEFOR0UgZXZlbnQgb2NjdXJyZWRcbiIpOwogCWlmIChtZ3ItPnNyY19pdF9kc3AgJiBQQ1hIUl9JUlFfVElNRV9DT0RFKQotCQlzbmRfcHJpbnRkZCgiVEFTS0xFVCA6IFBDWEhSX0lSUV9USU1FX0NPREUgZXZlbnQgb2NjdXJlZFxuIik7CisJCXNuZF9wcmludGRkKCJUQVNLTEVUIDogUENYSFJfSVJRX1RJTUVfQ09ERSBldmVudCBvY2N1cnJlZFxuIik7CiAJaWYgKG1nci0+c3JjX2l0X2RzcCAmIFBDWEhSX0lSUV9OT1RJRlkpCi0JCXNuZF9wcmludGRkKCJUQVNLTEVUIDogUENYSFJfSVJRX05PVElGWSBldmVudCBvY2N1cmVkXG4iKTsKKwkJc25kX3ByaW50ZGQoIlRBU0tMRVQgOiBQQ1hIUl9JUlFfTk9USUZZIGV2ZW50IG9jY3VycmVkXG4iKTsKIAlpZiAobWdyLT5zcmNfaXRfZHNwICYgKFBDWEhSX0lSUV9GUkVRX0NIQU5HRSB8IFBDWEhSX0lSUV9USU1FX0NPREUpKSB7CiAJCS8qIGNsZWFyIGV2ZW50cyBGUkVRX0NIQU5HRSBhbmQgVElNRV9DT0RFICovCiAJCXBjeGhyX2luaXRfcm1oKHBybWgsIENNRF9URVNUX0lUKTsKQEAgLTEwNTUsNyArMTA1NSw3IEBACiAJCQkgICAgZXJyLCBwcm1oLT5zdGF0WzBdKTsKIAl9CiAJaWYgKG1nci0+c3JjX2l0X2RzcCAmIFBDWEhSX0lSUV9BU1lOQykgewotCQlzbmRfcHJpbnRkZCgiVEFTS0xFVCA6IFBDWEhSX0lSUV9BU1lOQyBldmVudCBvY2N1cmVkXG4iKTsKKwkJc25kX3ByaW50ZGQoIlRBU0tMRVQgOiBQQ1hIUl9JUlFfQVNZTkMgZXZlbnQgb2NjdXJyZWRcbiIpOwogCiAJCXBjeGhyX2luaXRfcm1oKHBybWgsIENNRF9BU1lOQyk7CiAJCXBybWgtPmNtZFswXSB8PSAxOwkvKiBhZGQgU0VMX0FTWU5DX0VWRU5UUyAqLwpAQCAtMTIzMyw3ICsxMjMzLDcgQEAKIAlyZWcgPSBQQ1hIUl9JTlBMKG1nciwgUENYSFJfUExYX0wyUENJREIpOwogCVBDWEhSX09VVFBMKG1nciwgUENYSFJfUExYX0wyUENJREIsIHJlZyk7CiAKLQkvKiB0aW1lciBpcnEgb2NjdXJlZCAqLworCS8qIHRpbWVyIGlycSBvY2N1cnJlZCAqLwogCWlmIChyZWcgJiBQQ1hIUl9JUlFfVElNRVIpIHsKIAkJaW50IHRpbWVyX3RvZ2dsZSA9IHJlZyAmIFBDWEhSX0lSUV9USU1FUjsKIAkJLyogaXMgYSAyNCBiaXQgY291bnRlciAqLwpAQCAtMTI4OCw3ICsxMjg4LDcgQEAKIAlpZiAocmVnICYgUENYSFJfSVJRX01BU0spIHsKIAkJaWYgKHJlZyAmIFBDWEhSX0lSUV9BU1lOQykgewogCQkJLyogYXMgd2UgZGlkbid0IHJlcXVlc3QgYW55IGFzeW5jIG5vdGlmaWNhdGlvbnMsCi0JCQkgKiBzb21lIGtpbmQgb2YgeHJ1biBlcnJvciB3aWxsIHByb2JhYmx5IG9jY3VyZWQKKwkJCSAqIHNvbWUga2luZCBvZiB4cnVuIGVycm9yIHdpbGwgcHJvYmFibHkgb2NjdXJyZWQKIAkJCSAqLwogCQkJLyogYmV0dGVyIHJlc3luY2hyb25pemUgYWxsIHN0cmVhbXMgbmV4dCBpbnRlcnJ1cHQgOiAqLwogCQkJbWdyLT5kc3BfdGltZV9sYXN0ID0gUENYSFJfRFNQX1RJTUVfSU5WQUxJRDsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9ybWU5Ni5jIGIvc291bmQvcGNpL3JtZTk2LmMKaW5kZXggZDVmNWI0NC4uOWZmMjQ3ZiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3JtZTk2LmMKKysrIGIvc291bmQvcGNpL3JtZTk2LmMKQEAgLTE1MCw3ICsxNTAsNyBAQAogI2RlZmluZSBSTUU5Nl9SQ1JfQklUUE9TX0YxIDI4CiAjZGVmaW5lIFJNRTk2X1JDUl9CSVRQT1NfRjIgMjkKIAotLyogQWRkaXRvbmFsIHJlZ2lzdGVyIGJpdHMgKi8KKy8qIEFkZGl0aW9uYWwgcmVnaXN0ZXIgYml0cyAqLwogI2RlZmluZSBSTUU5Nl9BUl9XU0VMICAgICAgICgxIDw8IDApCiAjZGVmaW5lIFJNRTk2X0FSX0FOQUxPRyAgICAgKDEgPDwgMSkKICNkZWZpbmUgUk1FOTZfQVJfRlJFUVBBRF8wICAoMSA8PCAyKQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKaW5kZXggYTMyM2VhZi4uOTQ5NjkxYSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYworKysgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCkBAIC0zOTEsNyArMzkxLDcgQEAKIAogLyogU3RhdHVzMiBSZWdpc3RlciBiaXRzICovIC8qIE1BREkgT05MWSAqLwogCi0jZGVmaW5lIEhEU1BNX3ZlcnNpb24wICgxPDwwKQkvKiBub3QgcmVhbHkgZGVmaW5lZCBidXQgSSBndWVzcyAqLworI2RlZmluZSBIRFNQTV92ZXJzaW9uMCAoMTw8MCkJLyogbm90IHJlYWxseSBkZWZpbmVkIGJ1dCBJIGd1ZXNzICovCiAjZGVmaW5lIEhEU1BNX3ZlcnNpb24xICgxPDwxKQkvKiBpbiBmb3JtZXIgY2FyZHMgaXQgd2FzID8/PyAqLwogI2RlZmluZSBIRFNQTV92ZXJzaW9uMiAoMTw8MikKIApAQCAtOTM2LDcgKzkzNiw3IEBACiAJc3RydWN0IHNuZF9rY29udHJvbCAqcGxheWJhY2tfbWl4ZXJfY3Rsc1tIRFNQTV9NQVhfQ0hBTk5FTFNdOwogCS8qIGJ1dCBpbnB1dCB0byBtdWNoLCBzbyBub3QgdXNlZCAqLwogCXN0cnVjdCBzbmRfa2NvbnRyb2wgKmlucHV0X21peGVyX2N0bHNbSERTUE1fTUFYX0NIQU5ORUxTXTsKLQkvKiBmdWxsIG1peGVyIGFjY2Vzc2FibGUgb3ZlciBtaXhlciBpb2N0bCBvciBod2RlcC1kZXZpY2UgKi8KKwkvKiBmdWxsIG1peGVyIGFjY2Vzc2libGUgb3ZlciBtaXhlciBpb2N0bCBvciBod2RlcC1kZXZpY2UgKi8KIAlzdHJ1Y3QgaGRzcG1fbWl4ZXIgKm1peGVyOwogCiAJc3RydWN0IGhkc3BtX3RjbyAqdGNvOyAgLyogTlVMTCBpZiBubyBUQ08gZGV0ZWN0ZWQgKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9zaXM3MDE5LmMgYi9zb3VuZC9wY2kvc2lzNzAxOS5jCmluZGV4IDFiOGY2NzQuLjJiNWM3YTk1IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvc2lzNzAxOS5jCisrKyBiL3NvdW5kL3BjaS9zaXM3MDE5LmMKQEAgLTMwOCw3ICszMDgsNyBAQAogCXUzMiBpbnRyLCBzdGF0dXM7CiAKIAkvKiBXZSBvbmx5IHVzZSB0aGUgRE1BIGludGVycnVwdHMsIGFuZCB3ZSBkb24ndCBlbmFibGUgYW55IG90aGVyCi0JICogc291cmNlIG9mIGludGVycnVwdHMuIEJ1dCwgaXQgaXMgcG9zc2libGUgdG8gc2VlIGFuIGludGVydXB0CisJICogc291cmNlIG9mIGludGVycnVwdHMuIEJ1dCwgaXQgaXMgcG9zc2libGUgdG8gc2VlIGFuIGludGVycnVwdAogCSAqIHN0YXR1cyB0aGF0IGRpZG4ndCBhY3R1YWxseSBpbnRlcnJ1cHQgdXMsIHNvIGVsaW1pbmF0ZSBhbnl0aGluZwogCSAqIHdlJ3JlIG5vdCBleHBlY3RpbmcgdG8gYXZvaWQgZmFsc2VseSBjbGFpbWluZyBhbiBJUlEsIGFuZCBhbgogCSAqIGVuc3VpbmcgZW5kbGVzcyBsb29wLgpAQCAtNzczLDcgKzc3Myw3IEBACiAJCXZwZXJpb2QgPSAwOwogCX0KIAotCS8qIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpbXBsZW1lbnRzIHRoZSB0aW1pbmcgc3luY3Jvbml6YXRpb24sIHNvCisJLyogVGhlIGludGVycnVwdCBoYW5kbGVyIGltcGxlbWVudHMgdGhlIHRpbWluZyBzeW5jaHJvbml6YXRpb24sIHNvCiAJICogc2V0dXAgaXRzIHN0YXRlLgogCSAqLwogCXRpbWluZy0+ZmxhZ3MgfD0gVk9JQ0VfU1lOQ19USU1JTkc7CkBAIC0xMTM5LDcgKzExMzksNyBAQAogCSAqLwogCW91dGwoU0lTX0RNQV9DU1JfUENJX1NFVFRJTkdTLCBpbyArIFNJU19ETUFfQ1NSKTsKIAotCS8qIFJlc2V0IHRoZSBzeW5jcm9uaXphdGlvbiBncm91cHMgZm9yIGFsbCBvZiB0aGUgY2hhbm5lbHMKKwkvKiBSZXNldCB0aGUgc3luY2hyb25pemF0aW9uIGdyb3VwcyBmb3IgYWxsIG9mIHRoZSBjaGFubmVscwogCSAqIHRvIGJlIGFzeW5jcm9ub3VzLiBJZiB3ZSBzdGFydCBkb2luZyBTUERJRiBvciA1LjEgc291bmQsIGV0Yy4KIAkgKiB3ZSdsbCBuZWVkIHRvIGNoYW5nZSBob3cgd2UgaGFuZGxlIHRoZXNlLiBVbnRpbCB0aGVuLCB3ZSBqdXN0CiAJICogYXNzaWduIHN1Yi1taXhlciAwIHRvIGFsbCBwbGF5YmFjayBjaGFubmVscywgYW5kIGF2b2lkIGFueQpkaWZmIC0tZ2l0IGEvc291bmQvcHBjL3NuZF9wczMuYyBiL3NvdW5kL3BwYy9zbmRfcHMzLmMKaW5kZXggZWRjZThhMi4uYmM4MjNhNSAxMDA2NDQKLS0tIGEvc291bmQvcHBjL3NuZF9wczMuYworKysgYi9zb3VuZC9wcGMvc25kX3BzMy5jCkBAIC0zNTgsNyArMzU4LDcgQEAKIAkJICogZmlsbGluZyBkdW1teSBkYXRhLCBzZXJpYWwgYXV0b21hdGljYWxseSBzdGFydCB0bwogCQkgKiBjb25zdW1lIHRoZW0gYW5kIHRoZW4gd2lsbCBnZW5lcmF0ZSBub3JtYWwgYnVmZmVyCiAJCSAqIGVtcHR5IGludGVycnVwdHMuCi0JCSAqIElmIGJvdGggYnVmZmVyIHVuZGVyZmxvdyBhbmQgYnVmZmVyIGVtcHR5IGFyZSBvY2N1cmVkLAorCQkgKiBJZiBib3RoIGJ1ZmZlciB1bmRlcmZsb3cgYW5kIGJ1ZmZlciBlbXB0eSBhcmUgb2NjdXJyZWQsCiAJCSAqIGl0IGlzIGJldHRlciB0byBkbyBub21hbCBkYXRhIHRyYW5zZmVyIHRoYW4gZW1wdHkgb25lCiAJCSAqLwogCQlzbmRfcHMzX3Byb2dyYW1fZG1hKGNhcmQsCmRpZmYgLS1naXQgYS9zb3VuZC9wcGMvc25kX3BzM19yZWcuaCBiL3NvdW5kL3BwYy9zbmRfcHMzX3JlZy5oCmluZGV4IDAzZmRlZTQuLjJlNjMwMjAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BwYy9zbmRfcHMzX3JlZy5oCisrKyBiL3NvdW5kL3BwYy9zbmRfcHMzX3JlZy5oCkBAIC0xMjUsNyArMTI1LDcgQEAKICAgIHRyYW5zZmVycy4gIEFueSBpbnRlcnJ1cHRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FuY2VsZWQgdHJhbnNmZXJzCiAgICB3aWxsIG9jY3VyIGFzIGlmIHRoZSB0cmFuc2ZlciBoYWQgZmluaXNoZWQuCiAgICBTaW5jZSB0aGlzIGJpdCBpcyBkZXNpZ25lZCB0byByZWNvdmVyIGZyb20gRE1BIHJlbGF0ZWQgaXNzdWVzCi0gICB3aGljaCBhcmUgY2F1c2VkIGJ5IHVucHJlZGljdGFibGUgc2l0dWF0aW9ucywgaXQgaXMgcHJlZmVyZWQgdG8gd2FpdAorICAgd2hpY2ggYXJlIGNhdXNlZCBieSB1bnByZWRpY3RhYmxlIHNpdHVhdGlvbnMsIGl0IGlzIHByZWZlcnJlZCB0byB3YWl0CiAgICBmb3Igbm9ybWFsIERNQSB0cmFuc2ZlciBlbmQgd2l0aG91dCB1c2luZyB0aGlzIGJpdC4KICovCiAjZGVmaW5lIFBTM19BVURJT19DT05GSUdfQ0xFQVIgICAgICAgICAgKDEgPDwgOCkgIC8qIFJXSVZGICovCkBAIC0zMTYsMTMgKzMxNiwxMyBAQAogCiAvKgogQXVkaW8gUG9ydCBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCi1JbmRpY2F0ZXMgSW50ZXJydXB0IHN0YXR1cywgd2hpY2ggaW50ZXJydXB0IGhhcyBvY2N1cmVkLCBhbmQgY2FuIGNsZWFyCitJbmRpY2F0ZXMgSW50ZXJydXB0IHN0YXR1cywgd2hpY2ggaW50ZXJydXB0IGhhcyBvY2N1cnJlZCwgYW5kIGNhbiBjbGVhcgogZWFjaCBpbnRlcnJ1cHQgaW4gdGhpcyByZWdpc3Rlci4KIFdyaXRpbmcgMWIgdG8gYSBmaWVsZCBjb250YWluaW5nIDFiIGNsZWFycyBmaWVsZCBhbmQgZGUtYXNzZXJ0cyBpbnRlcnJ1cHQuCiBXcml0aW5nIDBiIHRvIGEgZmllbGQgaGFzIG5vIGVmZmVjdC4KIEZpZWxkIHZhdWxlcyBhcmUgdGhlIGZvbGxvd2luZzoKLTAgLSBJbnRlcnJ1cHQgaGFzbid0IG9jY3VyZWQuCi0xIC0gSW50ZXJydXB0IGhhcyBvY2N1cmVkLgorMCAtIEludGVycnVwdCBoYXNuJ3Qgb2NjdXJyZWQuCisxIC0gSW50ZXJydXB0IGhhcyBvY2N1cnJlZC4KIAogCiAgMzEgICAgICAgICAgICAyNCAyMyAgICAgICAgICAgMTYgMTUgICAgICAgICAgICA4IDcgICAgICAgICAgICAgMApAQCAtNDczLDcgKzQ3Myw3IEBACiAvKgogU2FtcGxpbmcgUmF0ZQogU3BlY2lmaWVzIHRoZSBkaXZpZGUgcmF0aW8gb2YgdGhlIGJpdCBjbG9jayAoY2xvY2sgb3V0cHV0Ci1mcm9tIGJjbGtvKSB1c2VkIGJ5IHRoZSAzLXdpcmUgQXVkaW8gT3V0cHV0IENsb2NrLCB3aGNpaAorZnJvbSBiY2xrbykgdXNlZCBieSB0aGUgMy13aXJlIEF1ZGlvIE91dHB1dCBDbG9jaywgd2hpY2gKIGlzIGFwcGxpZWQgdG8gdGhlIG1hc3RlciBjbG9jayBzZWxlY3RlZCBieSBtY2tzZWwuCiBEYXRhIG91dHB1dCBpcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGlzIGNsb2NrLgogKi8KQEAgLTc1Niw3ICs3NTYsNyBAQAogRE9ORSBpbmRpY2F0ZXMgdGhlIHByZXZpb3VzIHJlcXVlc3QgaGFzIGNvbXBsZXRlZC4KIEVWRU5UIGluZGljYXRlcyB0aGF0IHRoZSBETUEgZW5naW5lIGlzIHdhaXRpbmcgZm9yIHRoZSBFVkVOVCB0byBvY2N1ci4KIFBFTkRJTkcgaW5kaWNhdGVzIHRoYXQgdGhlIERNQSBlbmdpbmUgaGFzIG5vdCBzdGFydGVkIHByb2Nlc3NpbmcgdGhpcwotcmVxdWVzdCwgYnV0IHRoZSBFVkVOVCBoYXMgb2NjdXJlZC4KK3JlcXVlc3QsIGJ1dCB0aGUgRVZFTlQgaGFzIG9jY3VycmVkLgogRE1BIGluZGljYXRlcyB0aGF0IHRoZSBkYXRhIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzLgogTk9USUZZIGluZGljYXRlcyB0aGF0IHRoZSBub3RpZmllciBzaWduYWxsaW5nIGVuZCBvZiB0cmFuc2ZlciBpcyBiZWluZyB3cml0dGVuLgogQ0xFQVIgaW5kaWNhdGVkIHRoYXQgdGhlIHByZXZpb3VzIHRyYW5zZmVyIHdhcyBjbGVhcmVkLgpAQCAtODI0LDcgKzgyNCw3IEBACiAKIC8qCiBQUzNfQVVESU9fRE1BU0laRSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiAxMjgtYnl0ZSBibG9ja3MgKyAxIHRvIHRyYW5zZmVyLgotU28gYSB2YWx1ZSBvZiAwIG1lYW5zIDEyOC1ieXRlcyB3aWxsIGdldCB0cmFuc2ZlcmVkLgorU28gYSB2YWx1ZSBvZiAwIG1lYW5zIDEyOC1ieXRlcyB3aWxsIGdldCB0cmFuc2ZlcnJlZC4KIAogCiAgMzEgICAgICAgICAgICAyNCAyMyAgICAgICAgICAgMTYgMTUgICAgICAgICAgICA4IDcgICAgICAgICAgICAgMApkaWZmIC0tZ2l0IGEvc291bmQvc29jL2F0bWVsL2F0bWVsX3NzY19kYWkuYyBiL3NvdW5kL3NvYy9hdG1lbC9hdG1lbF9zc2NfZGFpLmMKaW5kZXggNWQyMzBjZS4uN2ZiZmEwNSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2F0bWVsL2F0bWVsX3NzY19kYWkuYworKysgYi9zb3VuZC9zb2MvYXRtZWwvYXRtZWxfc3NjX2RhaS5jCkBAIC02NzIsNyArNjcyLDcgQEAKIAkvKiByZS1lbmFibGUgaW50ZXJydXB0cyAqLwogCXNzY193cml0ZWwoc3NjX3AtPnNzYy0+cmVncywgSUVSLCBzc2NfcC0+c3NjX3N0YXRlLnNzY19pbXIpOwogCi0JLyogUmUtZW5hYmxlIHJlY2lldmUgYW5kIHRyYW5zbWl0IGFzIGFwcHJvcHJpYXRlICovCisJLyogUmUtZW5hYmxlIHJlY2VpdmUgYW5kIHRyYW5zbWl0IGFzIGFwcHJvcHJpYXRlICovCiAJY3IgPSAwOwogCWNyIHw9CiAJICAgIChzc2NfcC0+c3NjX3N0YXRlLnNzY19zciAmIFNTQ19CSVQoU1JfUlhFTikpID8gU1NDX0JJVChDUl9SWEVOKSA6IDA7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2FsYzU2MjMuYyBiL3NvdW5kL3NvYy9jb2RlY3MvYWxjNTYyMy5jCmluZGV4IDRmMzc3YzkuLmVlY2ZmYjUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvYWxjNTYyMy5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvYWxjNTYyMy5jCkBAIC00ODEsNyArNDgxLDcgQEAKIH07CiAKIC8qIE5vdGUgOiBwbGwgY29kZSBmcm9tIG9yaWdpbmFsIGFsYzU2MjMgZHJpdmVyLiBOb3Qgc3VyZSBvZiBob3cgZ29vZCBpdCBpcyAqLwotLyogdXNlZnVsbCBvbmx5IGZvciBtYXN0ZXIgbW9kZSAqLworLyogdXNlZnVsIG9ubHkgZm9yIG1hc3RlciBtb2RlICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IF9wbGxfZGl2IGNvZGVjX21hc3Rlcl9wbGxfZGl2W10gPSB7CiAKIAl7ICAyMDQ4MDAwLCAgODE5MjAwMCwJMHgwZWEwfSwKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvbG00ODU3LmMgYi9zb3VuZC9zb2MvY29kZWNzL2xtNDg1Ny5jCmluZGV4IDcyZGU0N2UuLjJjMmE2ODEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvbG00ODU3LmMKKysrIGIvc291bmQvc29jL2NvZGVjcy9sbTQ4NTcuYwpAQCAtMTYxLDcgKzE2MSw3IEBACiAJCWxtNDg1N19nZXRfbW9kZSwgbG00ODU3X3NldF9tb2RlKSwKIH07CiAKLS8qIFRoZXJlIGlzIGEgZGVtdXggaW5iZXR3ZWVuIHRoZSB0aGUgaW5wdXQgc2lnbmFsIGFuZCB0aGUgb3V0cHV0IHNpZ25hbHMuCisvKiBUaGVyZSBpcyBhIGRlbXV4IGJldHdlZW4gdGhlIGlucHV0IHNpZ25hbCBhbmQgdGhlIG91dHB1dCBzaWduYWxzLgogICogQ3VycmVudGx5IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIG1vZGVsIGl0IGluIEFTb0MgYW5kIHNpbmNlIGl0IGRvZXMgbm90IG1ha2UKICAqIG11Y2ggb2YgYSBkaWZmZXJlbmNlIGluIHByYWN0aWNlIHNpbXBseSBjb25uZWN0IHRoZSBpbnB1dCBkaXJlY2x0eSB0byB0aGUKICAqIG91dHB1dHMuICovCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzI2LmggYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzI2LmgKaW5kZXggNjJiMWYyMi4uNjdmMTljMyAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMyNi5oCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljMjYuaApAQCAtMTQsMTQgKzE0LDE0IEBACiAjZGVmaW5lIEFJQzI2X1BBR0VfQUREUihwYWdlLCBvZmZzZXQpCSgocGFnZSA8PCA2KSB8IG9mZnNldCkKICNkZWZpbmUgQUlDMjZfTlVNX1JFR1MJCQlBSUMyNl9QQUdFX0FERFIoMywgMCkKIAotLyogUGFnZSAwOiBBdXhpbGxhcnkgZGF0YSByZWdpc3RlcnMgKi8KKy8qIFBhZ2UgMDogQXV4aWxpYXJ5IGRhdGEgcmVnaXN0ZXJzICovCiAjZGVmaW5lIEFJQzI2X1JFR19CQVQxCQkJQUlDMjZfUEFHRV9BRERSKDAsIDB4MDUpCiAjZGVmaW5lIEFJQzI2X1JFR19CQVQyCQkJQUlDMjZfUEFHRV9BRERSKDAsIDB4MDYpCiAjZGVmaW5lIEFJQzI2X1JFR19BVVgJCQlBSUMyNl9QQUdFX0FERFIoMCwgMHgwNykKICNkZWZpbmUgQUlDMjZfUkVHX1RFTVAxCQkJQUlDMjZfUEFHRV9BRERSKDAsIDB4MDkpCiAjZGVmaW5lIEFJQzI2X1JFR19URU1QMgkJCUFJQzI2X1BBR0VfQUREUigwLCAweDBBKQogCi0vKiBQYWdlIDE6IEF1eGlsbGFyeSBjb250cm9sIHJlZ2lzdGVycyAqLworLyogUGFnZSAxOiBBdXhpbGlhcnkgY29udHJvbCByZWdpc3RlcnMgKi8KICNkZWZpbmUgQUlDMjZfUkVHX0FVWF9BREMJCUFJQzI2X1BBR0VfQUREUigxLCAweDAwKQogI2RlZmluZSBBSUMyNl9SRUdfU1RBVFVTCQlBSUMyNl9QQUdFX0FERFIoMSwgMHgwMSkKICNkZWZpbmUgQUlDMjZfUkVHX1JFRkVSRU5DRQkJQUlDMjZfUEFHRV9BRERSKDEsIDB4MDMpCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmMgYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmMKaW5kZXggM2JlZGFiMi4uNmM0M2MxMyAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3guYwpAQCAtODg0LDcgKzg4NCw3IEBACiAJaWYgKGJ5cGFzc19wbGwpCiAJCXJldHVybiAwOwogCi0JLyogVXNlIFBMTCwgY29tcHV0ZSBhcHJvcHJpYXRlIHNldHVwIGZvciBqLCBkLCByIGFuZCBwLCB0aGUgY2xvc2VzdAorCS8qIFVzZSBQTEwsIGNvbXB1dGUgYXBwcm9wcmlhdGUgc2V0dXAgZm9yIGosIGQsIHIgYW5kIHAsIHRoZSBjbG9zZXN0CiAJICogb25lIHdpbnMgdGhlIGdhbWUuIFRyeSB3aXRoIGQ9PTAgZmlyc3QsIG5leHQgd2l0aCBkIT0wLgogCSAqIENvbnN0cmFpbnRzIGZvciBqIGFyZSBhY2NvcmRpbmcgdG8gdGhlIGRhdGFzaGVldC4KIAkgKiBUaGUgc3lzY2xrIGlzIGRpdmlkZWQgYnkgMTAwMCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzLgpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBkYWMzMy5jIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBkYWMzMy5jCmluZGV4IGViMWEwYjQuLjA4MmU5ZDUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwZGFjMzMuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGRhYzMzLmMKQEAgLTEwMjcsNyArMTAyNyw3IEBACiAJCS8qCiAJCSAqIEZvciBGSUZPIGJ5cGFzcyBtb2RlOgogCQkgKiBFbmFibGUgdGhlIEZJRk8gYnlwYXNzIChEaXNhYmxlIHRoZSBGSUZPIHVzZSkKLQkJICogU2V0IHRoZSBCQ0xLIGFzIGNvbnRpbm91cworCQkgKiBTZXQgdGhlIEJDTEsgYXMgY29udGludW91cwogCQkgKi8KIAkJZmlmb2N0cmxfYSB8PSBEQUMzM19GQllQQVM7CiAJCWFpY3RybF9iIHw9IERBQzMzX0JDTEtPTjsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvdHdsNDAzMC5jIGIvc291bmQvc29jL2NvZGVjcy90d2w0MDMwLmMKaW5kZXggODUxMjgwMC4uNTc1MjM4ZCAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy90d2w0MDMwLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy90d2w0MDMwLmMKQEAgLTI4MSw3ICsyODEsNyBAQAogCQkJCSBpLCB2YWwsIHR3bDQwMzBfcmVnW2ldKTsKIAkJfQogCX0KLQlkZXZfZGJnKGNvZGVjLT5kZXYsICJGb3VuZCAlZCBub24gbWFjaGluZyByZWdpc3RlcnMuICVzXG4iLAorCWRldl9kYmcoY29kZWMtPmRldiwgIkZvdW5kICVkIG5vbi1tYXRjaGluZyByZWdpc3RlcnMuICVzXG4iLAogCQkgZGlmZmVyZW5jZSwgZGlmZmVyZW5jZSA/ICJOb3QgT0siIDogIk9LIik7CiB9CiAKQEAgLTIwMTgsNyArMjAxOCw3IEBACiAJdTggbW9kZTsKIAogCS8qIElmIHRoZSBzeXN0ZW0gbWFzdGVyIGNsb2NrIGlzIG5vdCAyNk1IeiwgdGhlIHZvaWNlIFBDTSBpbnRlcmZhY2UgaXMKLQkgKiBub3QgYXZpbGFibGUuCisJICogbm90IGF2YWlsYWJsZS4KIAkgKi8KIAlpZiAodHdsNDAzMC0+c3lzY2xrICE9IDI2MDAwKSB7CiAJCWRldl9lcnIoY29kZWMtPmRldiwgIlRoZSBib2FyZCBpcyBjb25maWd1cmVkIGZvciAldSBIeiwgd2hpbGUiCkBAIC0yMDI4LDcgKzIwMjgsNyBAQAogCX0KIAogCS8qIElmIHRoZSBjb2RlYyBtb2RlIGlzIG5vdCBvcHRpb24yLCB0aGUgdm9pY2UgUENNIGludGVyZmFjZSBpcyBub3QKLQkgKiBhdmlsYWJsZS4KKwkgKiBhdmFpbGFibGUuCiAJICovCiAJbW9kZSA9IHR3bDQwMzBfcmVhZF9yZWdfY2FjaGUoY29kZWMsIFRXTDQwMzBfUkVHX0NPREVDX01PREUpCiAJCSYgVFdMNDAzMF9PUFRfTU9ERTsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204NTgwLmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODU4MC5jCmluZGV4IDhmNmI1ZWUuLjRiYmMwYTcgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd204NTgwLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg1ODAuYwpAQCAtNzcyLDcgKzc3Miw3IEBACiAJCQlyZWcgJj0gfihXTTg1ODBfUFdSRE4xX1BXRE4gfCBXTTg1ODBfUFdSRE4xX0FMTERBQ1BEKTsKIAkJCXNuZF9zb2Nfd3JpdGUoY29kZWMsIFdNODU4MF9QV1JETjEsIHJlZyk7CiAKLQkJCS8qIE1ha2UgVk1JRCBoaWdoIGltcGVkZW5jZSAqLworCQkJLyogTWFrZSBWTUlEIGhpZ2ggaW1wZWRhbmNlICovCiAJCQlyZWcgPSBzbmRfc29jX3JlYWQoY29kZWMsICBXTTg1ODBfQURDX0NPTlRST0wxKTsKIAkJCXJlZyAmPSB+MHgxMDA7CiAJCQlzbmRfc29jX3dyaXRlKGNvZGVjLCBXTTg1ODBfQURDX0NPTlRST0wxLCByZWcpOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg3NTMuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204NzUzLmMKaW5kZXggM2YwOWRlZS4uZmZhMmZmZSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg3NTMuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODc1My5jCkBAIC0xMzEyLDcgKzEzMTIsNyBAQAogCVNORFJWX1BDTV9GTVRCSVRfUzI0X0xFKQogCiAvKgotICogVGhlIFdNODc1MyBzdXBwb3J0cyB1cHRvIDQgZGlmZmVyZW50IGFuZCBtdXR1YWxseSBleGNsdXNpdmUgREFJCisgKiBUaGUgV004NzUzIHN1cHBvcnRzIHVwIHRvIDQgZGlmZmVyZW50IGFuZCBtdXR1YWxseSBleGNsdXNpdmUgREFJCiAgKiBjb25maWd1cmF0aW9ucy4gVGhpcyBnaXZlcyAyIFBDTSdzIGF2YWlsYWJsZSBmb3IgdXNlLCBoaWZpIGFuZCB2b2ljZS4KICAqIE5PVEU6IFRoZSBWb2ljZSBQQ00gY2Fubm90IHBsYXkgb3IgY2FwdHVyZSBhdWRpbyB0byB0aGUgQ1BVIGFzIGl0J3MgREFJCiAgKiBpcyBjb25uZWN0ZWQgYmV0d2VlbiB0aGUgd204NzUzIGFuZCBhIEJUIGNvZGVjIG9yIEdTTSBtb2RlbS4KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTA0LmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODkwNC5jCmluZGV4IDQ0M2FlNTguLjliM2JiYTQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTA0LmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg5MDQuYwpAQCAtMTg5NSw3ICsxODk1LDcgQEAKIAogCXByX2RlYnVnKCJGdmNvPSVkSHpcbiIsIHRhcmdldCk7CiAKLQkvKiBGaW5kIGFuIGFwcHJvcHJhaXRlIEZMTF9GUkFUSU8gYW5kIGZhY3RvciBpdCBvdXQgb2YgdGhlIHRhcmdldCAqLworCS8qIEZpbmQgYW4gYXBwcm9wcmlhdGUgRkxMX0ZSQVRJTyBhbmQgZmFjdG9yIGl0IG91dCBvZiB0aGUgdGFyZ2V0ICovCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmxsX2ZyYXRpb3MpOyBpKyspIHsKIAkJaWYgKGZsbF9mcmF0aW9zW2ldLm1pbiA8PSBGcmVmICYmIEZyZWYgPD0gZmxsX2ZyYXRpb3NbaV0ubWF4KSB7CiAJCQlmbGxfZGl2LT5mbGxfZnJhdGlvID0gZmxsX2ZyYXRpb3NbaV0uZmxsX2ZyYXRpbzsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTU1LmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk1NS5jCmluZGV4IDVlMDIxNGQuLjNjNzE5ODcgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTU1LmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg5NTUuYwpAQCAtMTc2LDcgKzE3Niw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIExvb2t1cCB0YWJsZSBzcGVjaWZpeWluZyBTUkFURSAodGFibGUgMjUgaW4gZGF0YXNoZWV0KTsgc29tZSBvZiB0aGUKKy8qIExvb2t1cCB0YWJsZSBzcGVjaWZ5aW5nIFNSQVRFICh0YWJsZSAyNSBpbiBkYXRhc2hlZXQpOyBzb21lIG9mIHRoZQogICogb3V0cHV0IGZyZXF1ZW5jaWVzIGhhdmUgYmVlbiByb3VuZGVkIHRvIHRoZSBzdGFuZGFyZCBmcmVxdWVuY2llcwogICogdGhleSBhcmUgaW50ZW5kZWQgdG8gbWF0Y2ggd2hlcmUgdGhlIGVycm9yIGlzIHNsaWdodC4gKi8KIHN0YXRpYyBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5NjIuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTYyLmMKaW5kZXggM2I3MWRkNi4uNTAwMDExZSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5NjIuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk2Mi5jCkBAIC0zMTM3LDcgKzMxMzcsNyBAQAogCiAJcHJfZGVidWcoIkZMTCBGdmNvPSVkSHpcbiIsIHRhcmdldCk7CiAKLQkvKiBGaW5kIGFuIGFwcHJvcHJhaXRlIEZMTF9GUkFUSU8gYW5kIGZhY3RvciBpdCBvdXQgb2YgdGhlIHRhcmdldCAqLworCS8qIEZpbmQgYW4gYXBwcm9wcmlhdGUgRkxMX0ZSQVRJTyBhbmQgZmFjdG9yIGl0IG91dCBvZiB0aGUgdGFyZ2V0ICovCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmxsX2ZyYXRpb3MpOyBpKyspIHsKIAkJaWYgKGZsbF9mcmF0aW9zW2ldLm1pbiA8PSBGcmVmICYmIEZyZWYgPD0gZmxsX2ZyYXRpb3NbaV0ubWF4KSB7CiAJCQlmbGxfZGl2LT5mbGxfZnJhdGlvID0gZmxsX2ZyYXRpb3NbaV0uZmxsX2ZyYXRpbzsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkxLmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk5MS5jCmluZGV4IDI4ZmRmZDYuLjNjMmVlMWIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkxLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg5OTEuYwpAQCAtOTgxLDcgKzk4MSw3IEBACiAJCXJlZyA9IHNuZF9zb2NfcmVhZChjb2RlYywgV004OTkxX0NMT0NLSU5HXzIpOwogCQlzbmRfc29jX3dyaXRlKGNvZGVjLCBXTTg5OTFfQ0xPQ0tJTkdfMiwgcmVnIHwgV004OTkxX1NZU0NMS19TUkMpOwogCi0JCS8qIHNldCB1cCBOICwgZnJhY3Rpb25hbCBtb2RlIGFuZCBwcmUtZGl2aXNvciBpZiBuZWNjZXNzYXJ5ICovCisJCS8qIHNldCB1cCBOICwgZnJhY3Rpb25hbCBtb2RlIGFuZCBwcmUtZGl2aXNvciBpZiBuZWNlc3NhcnkgKi8KIAkJc25kX3NvY193cml0ZShjb2RlYywgV004OTkxX1BMTDEsIHBsbF9kaXYubiB8IFdNODk5MV9TRE0gfAogCQkJICAgICAgKHBsbF9kaXYuZGl2MiA/IFdNODk5MV9QUkVTQ0FMRSA6IDApKTsKIAkJc25kX3NvY193cml0ZShjb2RlYywgV004OTkxX1BMTDIsICh1OCkocGxsX2Rpdi5rPj44KSk7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODk5My5jIGIvc291bmQvc29jL2NvZGVjcy93bTg5OTMuYwppbmRleCAzNzlmYTIyLi4wNTZhZWY5IDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3dtODk5My5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkzLmMKQEAgLTMyNCw3ICszMjQsNyBAQAogCiAJcHJfZGVidWcoIkZ2Y289JWRIelxuIiwgdGFyZ2V0KTsKIAotCS8qIEZpbmQgYW4gYXBwcm9wcmFpdGUgRkxMX0ZSQVRJTyBhbmQgZmFjdG9yIGl0IG91dCBvZiB0aGUgdGFyZ2V0ICovCisJLyogRmluZCBhbiBhcHByb3ByaWF0ZSBGTExfRlJBVElPIGFuZCBmYWN0b3IgaXQgb3V0IG9mIHRoZSB0YXJnZXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmbGxfZnJhdGlvcyk7IGkrKykgewogCQlpZiAoZmxsX2ZyYXRpb3NbaV0ubWluIDw9IEZyZWYgJiYgRnJlZiA8PSBmbGxfZnJhdGlvc1tpXS5tYXgpIHsKIAkJCWZsbF9kaXYtPmZsbF9mcmF0aW8gPSBmbGxfZnJhdGlvc1tpXS5mbGxfZnJhdGlvOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5OTQuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTk0LmMKaW5kZXggM2RjNjRjOC4uMzI5MDMzMyAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5OTQuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk5NC5jCkBAIC04MiwxOCArODIsMTggQEAKIAogCWludCBtYmNfZW5hWzNdOwogCi0JLyogUGxhdGZvcm0gZGVwZW5kYW50IERSQyBjb25maWd1cmF0aW9uICovCisJLyogUGxhdGZvcm0gZGVwZW5kZW50IERSQyBjb25maWd1cmF0aW9uICovCiAJY29uc3QgY2hhciAqKmRyY190ZXh0czsKIAlpbnQgZHJjX2NmZ1tXTTg5OTRfTlVNX0RSQ107CiAJc3RydWN0IHNvY19lbnVtIGRyY19lbnVtOwogCi0JLyogUGxhdGZvcm0gZGVwZW5kYW50IFJlVHVuZSBtb2JpbGUgY29uZmlndXJhdGlvbiAqLworCS8qIFBsYXRmb3JtIGRlcGVuZGVudCBSZVR1bmUgbW9iaWxlIGNvbmZpZ3VyYXRpb24gKi8KIAlpbnQgbnVtX3JldHVuZV9tb2JpbGVfdGV4dHM7CiAJY29uc3QgY2hhciAqKnJldHVuZV9tb2JpbGVfdGV4dHM7CiAJaW50IHJldHVuZV9tb2JpbGVfY2ZnW1dNODk5NF9OVU1fRVFdOwogCXN0cnVjdCBzb2NfZW51bSByZXR1bmVfbW9iaWxlX2VudW07CiAKLQkvKiBQbGF0Zm9ybSBkZXBlbmRhbnQgTUJDIGNvbmZpZ3VyYXRpb24gKi8KKwkvKiBQbGF0Zm9ybSBkZXBlbmRlbnQgTUJDIGNvbmZpZ3VyYXRpb24gKi8KIAlpbnQgbWJjX2NmZzsKIAljb25zdCBjaGFyICoqbWJjX3RleHRzOwogCXN0cnVjdCBzb2NfZW51bSBtYmNfZW51bTsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd205MDgxLmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtOTA4MS5jCmluZGV4IDU1Y2RmMjkuLjkxYzZiMzkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd205MDgxLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTkwODEuYwpAQCAtMzA1LDcgKzMwNSw3IEBACiAvKgogICogU3RvcCBhbnkgYXR0ZW1wdHMgdG8gY2hhbmdlIHNwZWFrZXIgbW9kZSB3aGlsZSB0aGUgc3BlYWtlciBpcyBlbmFibGVkLgogICoKLSAqIFdlIGFsc28gaGF2ZSBzb21lIHNwZWNpYWwgYW50aS1wb3AgY29udHJvbHMgZGVwZW5kYW50IG9uIHNwZWFrZXIKKyAqIFdlIGFsc28gaGF2ZSBzb21lIHNwZWNpYWwgYW50aS1wb3AgY29udHJvbHMgZGVwZW5kZW50IG9uIHNwZWFrZXIKICAqIG1vZGUgd2hpY2ggbXVzdCBiZSBjaGFuZ2VkIGFsb25nIHdpdGggdGhlIG1vZGUuCiAgKi8KIHN0YXRpYyBpbnQgc3BlYWtlcl9tb2RlX3B1dChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKQEAgLTQ1Niw3ICs0NTYsNyBAQAogCiAJcHJfZGVidWcoIkZ2Y289JWRIelxuIiwgdGFyZ2V0KTsKIAotCS8qIEZpbmQgYW4gYXBwcm9wcmFpdGUgRkxMX0ZSQVRJTyBhbmQgZmFjdG9yIGl0IG91dCBvZiB0aGUgdGFyZ2V0ICovCisJLyogRmluZCBhbiBhcHByb3ByaWF0ZSBGTExfRlJBVElPIGFuZCBmYWN0b3IgaXQgb3V0IG9mIHRoZSB0YXJnZXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmbGxfZnJhdGlvcyk7IGkrKykgewogCQlpZiAoZmxsX2ZyYXRpb3NbaV0ubWluIDw9IEZyZWYgJiYgRnJlZiA8PSBmbGxfZnJhdGlvc1tpXS5tYXgpIHsKIAkJCWZsbF9kaXYtPmZsbF9mcmF0aW8gPSBmbGxfZnJhdGlvc1tpXS5mbGxfZnJhdGlvOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2lteC9pbXgtc3NpLmMgYi9zb3VuZC9zb2MvaW14L2lteC1zc2kuYwppbmRleCBiYzkyZWM2Li5hYzJkZWQ5IDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvaW14L2lteC1zc2kuYworKysgYi9zb3VuZC9zb2MvaW14L2lteC1zc2kuYwpAQCAtMTYsNyArMTYsNyBAQAogICogc2FuZSBwcm9jZXNzb3IgdmVuZG9ycyBoYXZlIGEgRklGTyBwZXIgQUM5NyBzbG90LCB0aGUgaS5NWCBoYXMgb25seQogICogb25lIEZJRk8gd2hpY2ggY29tYmluZXMgYWxsIHZhbGlkIHJlY2VpdmUgc2xvdHMuIFdlIGNhbm5vdCBldmVuIHNlbGVjdAogICogd2hpY2ggc2xvdHMgd2Ugd2FudCB0byByZWNlaXZlLiBUaGUgV005NzEyIHdpdGggd2hpY2ggdGhpcyBkcml2ZXIKLSAqIHdhcyBkZXZlbG9wcGVkIHdpdGggYWx3YXlzIHNlbmRzIEdQSU8gc3RhdHVzIGRhdGEgaW4gc2xvdCAxMiB3aGljaAorICogd2FzIGRldmVsb3BlZCB3aXRoIGFsd2F5cyBzZW5kcyBHUElPIHN0YXR1cyBkYXRhIGluIHNsb3QgMTIgd2hpY2gKICAqIHdlIHJlY2VpdmUgaW4gb3VyIChQQ00tKSBkYXRhIHN0cmVhbS4gVGhlIG9ubHkgY2hhbmNlIHdlIGhhdmUgaXMgdG8KICAqIG1hbnVhbGx5IHNraXAgdGhpcyBkYXRhIGluIHRoZSBGSVEgaGFuZGxlci4gV2l0aCBzYW1wbGluZyByYXRlcyBkaWZmZXJlbnQKICAqIGZyb20gNDgwMDBIeiBub3QgZXZlcnkgZnJhbWUgaGFzIHZhbGlkIHJlY2VpdmUgZGF0YSwgc28gdGhlIHJhdGlvCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mva2lya3dvb2Qva2lya3dvb2QtZG1hLmMgYi9zb3VuZC9zb2Mva2lya3dvb2Qva2lya3dvb2QtZG1hLmMKaW5kZXggMGZkNmE2My4uZTEzYzZjZSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2tpcmt3b29kL2tpcmt3b29kLWRtYS5jCisrKyBiL3NvdW5kL3NvYy9raXJrd29vZC9raXJrd29vZC1kbWEuYwpAQCAtMTMyLDcgKzEzMiw3IEBACiAJcHJpdiA9IHNuZF9zb2NfZGFpX2dldF9kbWFfZGF0YShjcHVfZGFpLCBzdWJzdHJlYW0pOwogCXNuZF9zb2Nfc2V0X3J1bnRpbWVfaHdwYXJhbXMoc3Vic3RyZWFtLCAma2lya3dvb2RfZG1hX3NuZF9odyk7CiAKLQkvKiBFbnN1cmUgdGhhdCBhbGwgY29uc3RyYWludHMgbGlua2VkIHRvIGRtYSBidXJzdCBhcmUgZnVsbGZpbGxlZCAqLworCS8qIEVuc3VyZSB0aGF0IGFsbCBjb25zdHJhaW50cyBsaW5rZWQgdG8gZG1hIGJ1cnN0IGFyZSBmdWxmaWxsZWQgKi8KIAllcnIgPSBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfbWlubWF4KHJ1bnRpbWUsCiAJCQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX0JZVEVTLAogCQkJcHJpdi0+YnVyc3QgKiAyLApAQCAtMTcwLDcgKzE3MCw3IEBACiAKIAkJLyoKIAkJICogRW5hYmxlIEVycm9yIGludGVycnVwdHMuIFdlJ3JlIG9ubHkgYWNrJ2luZyB0aGVtIGJ1dAotCQkgKiBpdCdzIHVzZWZ1bGwgZm9yIGRpYWdub3N0aWNzCisJCSAqIGl0J3MgdXNlZnVsIGZvciBkaWFnbm9zdGljcwogCQkgKi8KIAkJd3JpdGVsKCh1bnNpZ25lZCBsb25nKS0xLCBwcml2LT5pbyArIEtJUktXT09EX0VSUl9NQVNLKTsKIAl9CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbWlkLXg4Ni9zc3RfcGxhdGZvcm0uYyBiL3NvdW5kL3NvYy9taWQteDg2L3NzdF9wbGF0Zm9ybS5jCmluZGV4IGVlMmMyMjQuLmIyZTkxOTggMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9taWQteDg2L3NzdF9wbGF0Zm9ybS5jCisrKyBiL3NvdW5kL3NvYy9taWQteDg2L3NzdF9wbGF0Zm9ybS5jCkBAIC00NDAsNyArNDQwLDcgQEAKIAogCXNuZF9zb2NfdW5yZWdpc3Rlcl9kYWlzKCZwZGV2LT5kZXYsIEFSUkFZX1NJWkUoc3N0X3BsYXRmb3JtX2RhaSkpOwogCXNuZF9zb2NfdW5yZWdpc3Rlcl9wbGF0Zm9ybSgmcGRldi0+ZGV2KTsKLQlwcl9kZWJ1Zygic3N0X3BsYXRmb3JtX3JlbW92ZSBzdWNlc3NcbiIpOworCXByX2RlYnVnKCJzc3RfcGxhdGZvcm1fcmVtb3ZlIHN1Y2Nlc3NcbiIpOwogCXJldHVybiAwOwogfQogCkBAIC00NjMsNyArNDYzLDcgQEAKIHN0YXRpYyB2b2lkIF9fZXhpdCBzc3Rfc29jX3BsYXRmb3JtX2V4aXQodm9pZCkKIHsKIAlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3Rlcigmc3N0X3BsYXRmb3JtX2RyaXZlcik7Ci0JcHJfZGVidWcoInNzdF9zb2NfcGxhdGZvcm1fZXhpdCBzdWNlc3NcbiIpOworCXByX2RlYnVnKCJzc3Rfc29jX3BsYXRmb3JtX2V4aXQgc3VjY2Vzc1xuIik7CiB9CiBtb2R1bGVfZXhpdChzc3Rfc29jX3BsYXRmb3JtX2V4aXQpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvb21hcC9hbXMtZGVsdGEuYyBiL3NvdW5kL3NvYy9vbWFwL2Ftcy1kZWx0YS5jCmluZGV4IDMxNjdiZTYuLjQ2MmNiY2IgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9vbWFwL2Ftcy1kZWx0YS5jCisrKyBiL3NvdW5kL3NvYy9vbWFwL2Ftcy1kZWx0YS5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKICAqLwogCiAvKiBUbyBhY3R1YWxseSBhcHBseSBhbnkgbW9kZW0gY29udHJvbGxlZCBjb25maWd1cmF0aW9uIGNoYW5nZXMgdG8gdGhlIGNvZGVjLAotICogd2UgbXVzdCBjb25uZWN0IGNvZGVjIERBSSBwaW5zIHRvIHRoZSBtb2RlbSBmb3IgYSBtb21lbnQuICBCZSBjYXJlZnVsbCBub3QKKyAqIHdlIG11c3QgY29ubmVjdCBjb2RlYyBEQUkgcGlucyB0byB0aGUgbW9kZW0gZm9yIGEgbW9tZW50LiAgQmUgY2FyZWZ1bCBub3QKICAqIHRvIGludGVyZmVyZSB3aXRoIG91ciBkaWdpdGFsIG11dGUgZnVuY3Rpb24gdGhhdCBzaGFyZXMgdGhlIHNhbWUgaGFyZHdhcmUuICovCiBzdGF0aWMgc3RydWN0IHRpbWVyX2xpc3QgY3g4MTgwMV90aW1lcjsKIHN0YXRpYyBib29sIGN4ODE4MDFfY21kX3BlbmRpbmc7CkBAIC00MDIsOSArNDAyLDkgQEAKIAogCiAvKgotICogRXZlbiBpZiBub3QgdmVyeSB1c2VmdWxsLCB0aGUgc291bmQgY2FyZCBjYW4gc3RpbGwgd29yayB3aXRob3V0IGFueSBvZiB0aGUKKyAqIEV2ZW4gaWYgbm90IHZlcnkgdXNlZnVsLCB0aGUgc291bmQgY2FyZCBjYW4gc3RpbGwgd29yayB3aXRob3V0IGFueSBvZiB0aGUKICAqIGFib3ZlIGZ1bmN0b25hbGl0eSBhY3RpdmF0ZWQuICBZb3UgY2FuIHN0aWxsIGNvbnRyb2wgaXRzIGF1ZGlvIGlucHV0L291dHB1dAotICogY29uc3RlbGxhdGlvbiBhbmQgc3BlYWtlcnBob25lIGdhaW4gZnJvbSB1c2Vyc3BhY2UgYnkgaXNzdWVpbmcgQVQgY29tbWFuZHMKKyAqIGNvbnN0ZWxsYXRpb24gYW5kIHNwZWFrZXJwaG9uZSBnYWluIGZyb20gdXNlcnNwYWNlIGJ5IGlzc3VpbmcgQVQgY29tbWFuZHMKICAqIG92ZXIgdGhlIG1vZGVtIHBvcnQuCiAgKi8KIApkaWZmIC0tZ2l0IGEvc291bmQvc29jL3B4YS9weGEyeHgtcGNtLmMgYi9zb3VuZC9zb2MvcHhhL3B4YTJ4eC1wY20uYwppbmRleCAwMmZiNjY0Li4yY2UwYjJkIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvcHhhL3B4YTJ4eC1wY20uYworKysgYi9zb3VuZC9zb2MvcHhhL3B4YTJ4eC1wY20uYwpAQCAtNjUsNiArNjUsNyBAQAogCWlmIChwcnRkLT5kbWFfY2ggPj0gMCkgewogCQlweGFfZnJlZV9kbWEocHJ0ZC0+ZG1hX2NoKTsKIAkJcHJ0ZC0+ZG1hX2NoID0gLTE7CisJCXBydGQtPnBhcmFtcyA9IE5VTEw7CiAJfQogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvcHhhL3p5bG9uaXRlLmMgYi9zb3VuZC9zb2MvcHhhL3p5bG9uaXRlLmMKaW5kZXggYWM1NzcyNi4uYjY0NDU3NSAxMDA2NDQKLS0tIGEvc291bmQvc29jL3B4YS96eWxvbml0ZS5jCisrKyBiL3NvdW5kL3NvYy9weGEvenlsb25pdGUuYwpAQCAtMTY3LDcgKzE2Nyw3IEBACiAJLmNvZGVjX25hbWUgPSAid205NzEzLWNvZGVjIiwKIAkucGxhdGZvcm1fbmFtZSA9ICJweGEtcGNtLWF1ZGlvIiwKIAkuY3B1X2RhaV9uYW1lID0gInB4YTJ4eC1hYzk3IiwKLQkuY29kZWNfbmFtZSA9ICJ3bTk3MTMtaGlmaSIsCisJLmNvZGVjX2RhaV9uYW1lID0gIndtOTcxMy1oaWZpIiwKIAkuaW5pdCA9IHp5bG9uaXRlX3dtOTcxM19pbml0LAogfSwKIHsKQEAgLTE3Niw3ICsxNzYsNyBAQAogCS5jb2RlY19uYW1lID0gIndtOTcxMy1jb2RlYyIsCiAJLnBsYXRmb3JtX25hbWUgPSAicHhhLXBjbS1hdWRpbyIsCiAJLmNwdV9kYWlfbmFtZSA9ICJweGEyeHgtYWM5Ny1hdXgiLAotCS5jb2RlY19uYW1lID0gIndtOTcxMy1hdXgiLAorCS5jb2RlY19kYWlfbmFtZSA9ICJ3bTk3MTMtYXV4IiwKIH0sCiB7CiAJLm5hbWUgPSAiV005NzEzIFZvaWNlIiwKQEAgLTE4NCw3ICsxODQsNyBAQAogCS5jb2RlY19uYW1lID0gIndtOTcxMy1jb2RlYyIsCiAJLnBsYXRmb3JtX25hbWUgPSAicHhhLXBjbS1hdWRpbyIsCiAJLmNwdV9kYWlfbmFtZSA9ICJweGEtc3NwLWRhaS4yIiwKLQkuY29kZWNfbmFtZSA9ICJ3bTk3MTMtdm9pY2UiLAorCS5jb2RlY19kYWlfbmFtZSA9ICJ3bTk3MTMtdm9pY2UiLAogCS5vcHMgPSAmenlsb25pdGVfdm9pY2Vfb3BzLAogfSwKIH07CmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc2Ftc3VuZy9uZW8xOTczX3dtODc1My5jIGIvc291bmQvc29jL3NhbXN1bmcvbmVvMTk3M193bTg3NTMuYwppbmRleCA3OGJmZGIzLi40NTIyMzA5IDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mvc2Ftc3VuZy9uZW8xOTczX3dtODc1My5jCisrKyBiL3NvdW5kL3NvYy9zYW1zdW5nL25lbzE5NzNfd204NzUzLmMKQEAgLTIyOCw3ICsyMjgsNyBAQAogCVNPQ19EQVBNX1BJTl9TV0lUQ0goIkhhbmRzZXQgTWljIiksCiB9OwogCi0vKiBHVEEwMiBzcGVjaWZpYyByb3V0ZXMgYW5kIGNvbnRyb2xscyAqLworLyogR1RBMDIgc3BlY2lmaWMgcm91dGVzIGFuZCBjb250cm9scyAqLwogCiAjaWZkZWYgQ09ORklHX01BQ0hfTkVPMTk3M19HVEEwMgogCkBAIC0zNzIsNyArMzcyLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogR1RBMDEgc3BlY2lmaWMgY29udHJvbGxzICovCisvKiBHVEEwMSBzcGVjaWZpYyBjb250cm9scyAqLwogCiAjaWZkZWYgQ09ORklHX01BQ0hfTkVPMTk3M19HVEEwMQogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29jLWNvcmUuYyBiL3NvdW5kL3NvYy9zb2MtY29yZS5jCmluZGV4IDRkZGE1ODkuLmI3NmI3NGQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9zb2MtY29yZS5jCisrKyBiL3NvdW5kL3NvYy9zb2MtY29yZS5jCkBAIC05Miw4ICs5Miw4IEBACiBzdGF0aWMgaW50IGZvcm1hdF9yZWdpc3Rlcl9zdHIoc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjLAogCQkJICAgICAgIHVuc2lnbmVkIGludCByZWcsIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKIHsKLQlpbnQgd29yZHNpemUgPSBjb2RlYy0+ZHJpdmVyLT5yZWdfd29yZF9zaXplICogMjsKLQlpbnQgcmVnc2l6ZSA9IG1pbl9ieXRlc19uZWVkZWQoY29kZWMtPmRyaXZlci0+cmVnX2NhY2hlX3NpemUpICogMjsKKwlpbnQgd29yZHNpemUgPSBtaW5fYnl0ZXNfbmVlZGVkKGNvZGVjLT5kcml2ZXItPnJlZ19jYWNoZV9zaXplKSAqIDI7CisJaW50IHJlZ3NpemUgPSBjb2RlYy0+ZHJpdmVyLT5yZWdfd29yZF9zaXplICogMjsKIAlpbnQgcmV0OwogCWNoYXIgdG1wYnVmW2xlbiArIDFdOwogCWNoYXIgcmVnYnVmW3JlZ3NpemUgKyAxXTsKQEAgLTEzMiw4ICsxMzIsOCBAQAogCXNpemVfdCB0b3RhbCA9IDA7CiAJbG9mZl90IHAgPSAwOwogCi0Jd29yZHNpemUgPSBjb2RlYy0+ZHJpdmVyLT5yZWdfd29yZF9zaXplICogMjsKLQlyZWdzaXplID0gbWluX2J5dGVzX25lZWRlZChjb2RlYy0+ZHJpdmVyLT5yZWdfY2FjaGVfc2l6ZSkgKiAyOworCXdvcmRzaXplID0gbWluX2J5dGVzX25lZWRlZChjb2RlYy0+ZHJpdmVyLT5yZWdfY2FjaGVfc2l6ZSkgKiAyOworCXJlZ3NpemUgPSBjb2RlYy0+ZHJpdmVyLT5yZWdfd29yZF9zaXplICogMjsKIAogCWxlbiA9IHdvcmRzaXplICsgcmVnc2l6ZSArIDIgKyAxOwogCmRpZmYgLS1naXQgYS9zb3VuZC91c2IvNmZpcmUvZmlybXdhcmUuYyBiL3NvdW5kL3VzYi82ZmlyZS9maXJtd2FyZS5jCmluZGV4IDkwODFhNTQuLjg2YzFhMzEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi82ZmlyZS9maXJtd2FyZS5jCisrKyBiL3NvdW5kL3VzYi82ZmlyZS9maXJtd2FyZS5jCkBAIC03Niw3ICs3Niw3IEBACiAJdTE2IGFkZHJlc3M7CiAJdTggbGVuOwogCXU4IGRhdGFbMjU2XTsKLQljaGFyIGVycm9yOyAvKiB0cnVlIGlmIGFuIGVycm9yIG9jY3VyZWQgcGFyc2luZyB0aGlzIHJlY29yZCAqLworCWNoYXIgZXJyb3I7IC8qIHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQgcGFyc2luZyB0aGlzIHJlY29yZCAqLwogCiAJdTggbWF4X2xlbjsgLyogbWF4aW11bSByZWNvcmQgbGVuZ3RoIGluIHdob2xlIGloZXggKi8KIApAQCAtMTA3LDcgKzEwNyw3IEBACiAKIC8qCiAgKiByZXR1cm5zIHRydWUgaWYgcmVjb3JkIGlzIGF2YWlsYWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICogaWZmIGFuIGVycm9yIG9jY3VyZWQsIGZhbHNlIHdpbGwgYmUgcmV0dXJuZWQgYW5kIHJlY29yZC0+ZXJyb3Igd2lsbCBiZSB0cnVlLgorICogaWZmIGFuIGVycm9yIG9jY3VycmVkLCBmYWxzZSB3aWxsIGJlIHJldHVybmVkIGFuZCByZWNvcmQtPmVycm9yIHdpbGwgYmUgdHJ1ZS4KICAqLwogc3RhdGljIGJvb2wgdXNiNmZpcmVfZndfaWhleF9uZXh0X3JlY29yZChzdHJ1Y3QgaWhleF9yZWNvcmQgKnJlY29yZCkKIHsKZGlmZiAtLWdpdCBhL3NvdW5kL3VzYi9taWRpLmMgYi9zb3VuZC91c2IvbWlkaS5jCmluZGV4IGI0YjM5YzAuLmY5Mjg5MTAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi9taWRpLmMKKysrIGIvc291bmQvdXNiL21pZGkuYwpAQCAtMTMwMSw2ICsxMzAxLDcgQEAKIAljYXNlIFVTQl9JRCgweDE1Y2EsIDB4MDEwMSk6IC8qIFRleHRlY2ggVVNCIE1pZGkgQ2FibGUgKi8KIAljYXNlIFVTQl9JRCgweDE1Y2EsIDB4MTgwNik6IC8qIFRleHRlY2ggVVNCIE1pZGkgQ2FibGUgKi8KIAljYXNlIFVTQl9JRCgweDFhODYsIDB4NzUyZCk6IC8qIFFpbkhlbmcgQ0gzNDUgIlVTQjIuMC1NSURJIiAqLworCWNhc2UgVVNCX0lEKDB4ZmMwOCwgMHgwMTAxKTogLyogVW5rbm93biB2ZW5kb3IgQ2FibGUgKi8KIAkJZXAtPm1heF90cmFuc2ZlciA9IDQ7CiAJCWJyZWFrOwogCQkvKgpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL21peGVyLmMgYi9zb3VuZC91c2IvbWl4ZXIuYwppbmRleCA1ZTQ3NzU3Li42ZWMzM2I2IDEwMDY0NAotLS0gYS9zb3VuZC91c2IvbWl4ZXIuYworKysgYi9zb3VuZC91c2IvbWl4ZXIuYwpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKIC8qCiAgKiBwYXJzZSBhIGZlYXR1cmUgdW5pdAogICoKLSAqIG1vc3Qgb2YgY29udHJvbGxzIGFyZSBkZWZpbmVkIGhlcmUuCisgKiBtb3N0IG9mIGNvbnRyb2xzIGFyZSBkZWZpbmVkIGhlcmUuCiAgKi8KIHN0YXRpYyBpbnQgcGFyc2VfYXVkaW9fZmVhdHVyZV91bml0KHN0cnVjdCBtaXhlcl9idWlsZCAqc3RhdGUsIGludCB1bml0aWQsIHZvaWQgKl9mdHIpCiB7CmRpZmYgLS1naXQgYS9zb3VuZC91c2IvcXVpcmtzLmMgYi9zb3VuZC91c2IvcXVpcmtzLmMKaW5kZXggMzU1NzU5Yi4uZWMwN2U2MiAxMDA2NDQKLS0tIGEvc291bmQvdXNiL3F1aXJrcy5jCisrKyBiL3NvdW5kL3VzYi9xdWlya3MuYwpAQCAtMjY2LDcgKzI2Niw3IEBACiAgKiBhdWRpby1pbnRlcmZhY2UgcXVpcmtzCiAgKgogICogcmV0dXJucyB6ZXJvIGlmIG5vIHN0YW5kYXJkIGF1ZGlvL01JREkgcGFyc2luZyBpcyBuZWVkZWQuCi0gKiByZXR1cm5zIGEgcG9zdGl2ZSB2YWx1ZSBpZiBzdGFuZGFyZCBhdWRpby9taWRpIGludGVyZmFjZXMgYXJlIHBhcnNlZAorICogcmV0dXJucyBhIHBvc2l0aXZlIHZhbHVlIGlmIHN0YW5kYXJkIGF1ZGlvL21pZGkgaW50ZXJmYWNlcyBhcmUgcGFyc2VkCiAgKiBhZnRlciB0aGlzLgogICogcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlIGF0IGVycm9yLgogICovCmRpZmYgLS1naXQgYS9zb3VuZC91c2IvdXN4MnkvdXN4Mnlod2RlcHBjbS5jIGIvc291bmQvdXNiL3VzeDJ5L3VzeDJ5aHdkZXBwY20uYwppbmRleCAyODdlZjczLi5hNTEzNDBmIDEwMDY0NAotLS0gYS9zb3VuZC91c2IvdXN4MnkvdXN4Mnlod2RlcHBjbS5jCisrKyBiL3NvdW5kL3VzYi91c3gyeS91c3gyeWh3ZGVwcGNtLmMKQEAgLTIwLDcgKzIwLDcgQEAKICBhdCBzdGFuZGFyZCBzYW1wbGVyYXRlcywKICB3aGF0IGxlZCB0byB0aGlzIHBhcnQgb2YgdGhlIHVzeDJ5IG1vZHVsZTogCiAgSXQgcHJvdmlkZXMgdGhlIGFsc2Ega2VybmVsIGhhbGYgb2YgdGhlIHVzeDJ5LWFsc2EtamFjayBkcml2ZXIgcGFpci4KLSBUaGUgcGFpciB1c2VzIGEgaGFyZHdhcmUgZGVwZW5kYW50IGFsc2EtZGV2aWNlIGZvciBtbWFwZWQgcGNtIHRyYW5zcG9ydC4KKyBUaGUgcGFpciB1c2VzIGEgaGFyZHdhcmUgZGVwZW5kZW50IGFsc2EtZGV2aWNlIGZvciBtbWFwZWQgcGNtIHRyYW5zcG9ydC4KICBBZHZhbnRhZ2UgYWNoaWV2ZWQ6CiAgICAgICAgICBUaGUgdXNiX2hjIG1vdmVzIHBjbSBkYXRhIGZyb20vaW50byBtZW1vcnkgdmlhIERNQS4KICAgICAgICAgIFRoYXQgbWVtb3J5IGlzIG1tYXBlZCBieSBqYWNrJ3MgdXN4MnkgZHJpdmVyLgpAQCAtMzgsNyArMzgsNyBAQAogICAgICAgICAgMnBlcmlvZHMgd29ya3MgYnV0IGlzIHVzZWxlc3MgY2F1c2Ugb2YgY3JhY2tsaW5nKS4KIAogIFRoaXMgaXMgYSBmaXJzdCAicHJvb2Ygb2YgY29uY2VwdCIgaW1wbGVtZW50YXRpb24uCi0gTGF0ZXIsIGZ1bmN0aW9uYWxpdGllcyBzaG91bGQgbWlncmF0ZSB0byBtb3JlIGFwcm9wcmlhdGUgcGxhY2VzOgorIExhdGVyLCBmdW5jdGlvbmFsaXRpZXMgc2hvdWxkIG1pZ3JhdGUgdG8gbW9yZSBhcHByb3ByaWF0ZSBwbGFjZXM6CiAgVXNlcmxhbmQ6CiAgLSBUaGUgamFja2QgY291bGQgbW1hcCBpdHMgZmxvYXQtcGNtIGJ1ZmZlcnMgZGlyZWN0bHkgZnJvbSBhbHNhLWxpYi4KICAtIGFsc2EtbGliIGNvdWxkIHByb3ZpZGUgcG93ZXIgb2YgMiBwZXJpb2Qgc2l6ZWQgc2hhcGluZyBjb21iaW5lZCB3aXRoIGludC9mbG9hdApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmMgYi90b29scy9wZXJmL3V0aWwvcHJvYmUtZXZlbnQuYwppbmRleCA1ZGRlZTY2Li5mMDIyMzE2IDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvcHJvYmUtZXZlbnQuYworKysgYi90b29scy9wZXJmL3V0aWwvcHJvYmUtZXZlbnQuYwpAQCAtMjM0LDcgKzIzNCw2IEBACiAKIAkvKiBTZWFyY2hpbmcgdHJhY2UgZXZlbnRzIGNvcnJlc3BvbmRpbmcgdG8gcHJvYmUgZXZlbnQgKi8KIAludGV2cyA9IGZpbmRfcHJvYmVfdHJhY2VfZXZlbnRzKGZkLCBwZXYsIHRldnMsIG1heF90ZXZzKTsKLQljbG9zZShmZCk7CiAKIAlpZiAobnRldnMgPiAwKSB7CS8qIFN1Y2NlZWRlZCB0byBmaW5kIHRyYWNlIGV2ZW50cyAqLwogCQlwcl9kZWJ1ZygiZmluZCAlZCBwcm9iZV90cmFjZV9ldmVudHMuXG4iLCBudGV2cyk7CkBAIC0zODgsNyArMzg3LDYgQEAKIAl9CiAKIAlyZXQgPSBmaW5kX2xpbmVfcmFuZ2UoZmQsIGxyKTsKLQljbG9zZShmZCk7CiAJaWYgKHJldCA9PSAwKSB7CiAJCXByX3dhcm5pbmcoIlNwZWNpZmllZCBzb3VyY2UgbGluZSBpcyBub3QgZm91bmQuXG4iKTsKIAkJcmV0dXJuIC1FTk9FTlQ7CkBAIC01MTIsMTkgKzUxMCwxOCBAQAogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCi0JZmQgPSBvcGVuX3ZtbGludXgobW9kdWxlKTsKLQlpZiAoZmQgPCAwKSB7Ci0JCXByX3dhcm5pbmcoIkZhaWxlZCB0byBvcGVuIGRlYnVnIGluZm9ybWF0aW9uIGZpbGUuXG4iKTsKLQkJcmV0dXJuIGZkOwotCX0KLQogCXNldHVwX3BhZ2VyKCk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbnBldnMgJiYgcmV0ID49IDA7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgbnBldnMgJiYgcmV0ID49IDA7IGkrKykgeworCQlmZCA9IG9wZW5fdm1saW51eChtb2R1bGUpOworCQlpZiAoZmQgPCAwKSB7CisJCQlwcl93YXJuaW5nKCJGYWlsZWQgdG8gb3BlbiBkZWJ1ZyBpbmZvcm1hdGlvbiBmaWxlLlxuIik7CisJCQlyZXQgPSBmZDsKKwkJCWJyZWFrOworCQl9CiAJCXJldCA9IHNob3dfYXZhaWxhYmxlX3ZhcnNfYXQoZmQsICZwZXZzW2ldLCBtYXhfdmxzLCBfZmlsdGVyLAogCQkJCQkgICAgIGV4dGVybnMpOwotCi0JY2xvc2UoZmQpOworCX0KIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcHJvYmUtZmluZGVyLmMgYi90b29scy9wZXJmL3V0aWwvcHJvYmUtZmluZGVyLmMKaW5kZXggMTk0ZjllMi4uYjdjODVjZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZpbmRlci5jCisrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1maW5kZXIuYwpAQCAtMjczLDYgKzI3MywyNSBAQAogCXJldHVybiBkd2FyZl9mb3Jtc3RyaW5nKCZhdHRyKTsKIH0KIAorLyogR2V0IGEgbGluZSBudW1iZXIgYW5kIGZpbGUgbmFtZSBmb3IgZ2l2ZW4gYWRkcmVzcyAqLworc3RhdGljIGludCBjdV9maW5kX2xpbmVpbmZvKER3YXJmX0RpZSAqY3VkaWUsIHVuc2lnbmVkIGxvbmcgYWRkciwKKwkJCSAgICBjb25zdCBjaGFyICoqZm5hbWUsIGludCAqbGluZW5vKQoreworCUR3YXJmX0xpbmUgKmxpbmU7CisJRHdhcmZfQWRkciBsYWRkcjsKKworCWxpbmUgPSBkd2FyZl9nZXRzcmNfZGllKGN1ZGllLCAoRHdhcmZfQWRkcilhZGRyKTsKKwlpZiAobGluZSAmJiBkd2FyZl9saW5lYWRkcihsaW5lLCAmbGFkZHIpID09IDAgJiYKKwkgICAgYWRkciA9PSAodW5zaWduZWQgbG9uZylsYWRkciAmJiBkd2FyZl9saW5lbm8obGluZSwgbGluZW5vKSA9PSAwKSB7CisJCSpmbmFtZSA9IGR3YXJmX2xpbmVzcmMobGluZSwgTlVMTCwgTlVMTCk7CisJCWlmICghKmZuYW1lKQorCQkJLyogbGluZSBudW1iZXIgaXMgdXNlbGVzcyB3aXRob3V0IGZpbGVuYW1lICovCisJCQkqbGluZW5vID0gMDsKKwl9CisKKwlyZXR1cm4gKmxpbmVubyA/OiAtRU5PRU5UOworfQorCiAvKiBDb21wYXJlIGRpZW5hbWUgYW5kIHRuYW1lICovCiBzdGF0aWMgYm9vbCBkaWVfY29tcGFyZV9uYW1lKER3YXJmX0RpZSAqZHdfZGllLCBjb25zdCBjaGFyICp0bmFtZSkKIHsKQEAgLTQ5Nyw3ICs1MTYsMjAgQEAKIHN0YXRpYyBEd2FyZl9EaWUgKmRpZV9maW5kX2lubGluZWZ1bmMoRHdhcmZfRGllICpzcF9kaWUsIER3YXJmX0FkZHIgYWRkciwKIAkJCQkgICAgICBEd2FyZl9EaWUgKmRpZV9tZW0pCiB7Ci0JcmV0dXJuIGRpZV9maW5kX2NoaWxkKHNwX2RpZSwgX19kaWVfZmluZF9pbmxpbmVfY2IsICZhZGRyLCBkaWVfbWVtKTsKKwlEd2FyZl9EaWUgdG1wX2RpZTsKKworCXNwX2RpZSA9IGRpZV9maW5kX2NoaWxkKHNwX2RpZSwgX19kaWVfZmluZF9pbmxpbmVfY2IsICZhZGRyLCAmdG1wX2RpZSk7CisJaWYgKCFzcF9kaWUpCisJCXJldHVybiBOVUxMOworCisJLyogSW5saW5lZCBmdW5jdGlvbiBjb3VsZCBiZSByZWN1cnNpdmUuIFRyYWNlIGl0IHVudGlsIGZhaWwgKi8KKwl3aGlsZSAoc3BfZGllKSB7CisJCW1lbWNweShkaWVfbWVtLCBzcF9kaWUsIHNpemVvZihEd2FyZl9EaWUpKTsKKwkJc3BfZGllID0gZGllX2ZpbmRfY2hpbGQoc3BfZGllLCBfX2RpZV9maW5kX2lubGluZV9jYiwgJmFkZHIsCisJCQkJCSZ0bXBfZGllKTsKKwl9CisKKwlyZXR1cm4gZGllX21lbTsKIH0KIAogLyogV2Fsa2VyIG9uIGxpbmVzIChOb3RlOiBsaW5lIG51bWJlciB3aWxsIG5vdCBiZSBzb3J0ZWQpICovCkBAIC0xMzk1LDYgKzE0MjcsMTAgQEAKIAkgICAgIWRpZV9jb21wYXJlX25hbWUoc3BfZGllLCBwcC0+ZnVuY3Rpb24pKQogCQlyZXR1cm4gRFdBUkZfQ0JfT0s7CiAKKwkvKiBDaGVjayBkZWNsYXJlZCBmaWxlICovCisJaWYgKHBwLT5maWxlICYmIHN0cnRhaWxjbXAocHAtPmZpbGUsIGR3YXJmX2RlY2xfZmlsZShzcF9kaWUpKSkKKwkJcmV0dXJuIERXQVJGX0NCX09LOworCiAJcGYtPmZuYW1lID0gZHdhcmZfZGVjbF9maWxlKHNwX2RpZSk7CiAJaWYgKHBwLT5saW5lKSB7IC8qIEZ1bmN0aW9uIHJlbGF0aXZlIGxpbmUgKi8KIAkJZHdhcmZfZGVjbF9saW5lKHNwX2RpZSwgJnBmLT5sbm8pOwpAQCAtMTQ1MSw2ICsxNDg3LDcgQEAKIAlpZiAoIWRiZykgewogCQlwcl93YXJuaW5nKCJObyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3VuZCBpbiB0aGUgdm1saW51eCAtICIKIAkJCSJwbGVhc2UgcmVidWlsZCB3aXRoIENPTkZJR19ERUJVR19JTkZPPXkuXG4iKTsKKwkJY2xvc2UoZmQpOwkvKiBXaXRob3V0IGR3ZmxfZW5kKCksIGZkIGlzbid0IGNsb3NlZC4gKi8KIAkJcmV0dXJuIC1FQkFERjsKIAl9CiAKQEAgLTE2ODYsMTEgKzE3MjMsOSBAQAogCUR3YXJmX0RpZSBjdWRpZSwgc3BkaWUsIGluZGllOwogCUR3YXJmICpkYmcgPSBOVUxMOwogCUR3ZmwgKmR3ZmwgPSBOVUxMOwotCUR3YXJmX0xpbmUgKmxpbmU7Ci0JRHdhcmZfQWRkciBsYWRkciwgZWFkZHIsIGJpYXMgPSAwOwotCWNvbnN0IGNoYXIgKnRtcDsKLQlpbnQgbGluZW5vLCByZXQgPSAwOwotCWJvb2wgZm91bmQgPSBmYWxzZTsKKwlEd2FyZl9BZGRyIF9hZGRyLCBiYXNlYWRkciwgYmlhcyA9IDA7CisJY29uc3QgY2hhciAqZm5hbWUgPSBOVUxMLCAqZnVuYyA9IE5VTEwsICp0bXA7CisJaW50IGJhc2VsaW5lID0gMCwgbGluZW5vID0gMCwgcmV0ID0gMDsKIAogCS8qIE9wZW4gdGhlIGxpdmUgbGludXgga2VybmVsICovCiAJZGJnID0gZHdmbF9pbml0X2xpdmVfa2VybmVsX2R3YXJmKGFkZHIsICZkd2ZsLCAmYmlhcyk7CkBAIC0xNzExLDY4ICsxNzQ2LDc5IEBACiAJCWdvdG8gZW5kOwogCX0KIAotCS8qIEZpbmQgYSBjb3JyZXNwb25kaW5nIGxpbmUgKi8KLQlsaW5lID0gZHdhcmZfZ2V0c3JjX2RpZSgmY3VkaWUsIChEd2FyZl9BZGRyKWFkZHIpOwotCWlmIChsaW5lKSB7Ci0JCWlmIChkd2FyZl9saW5lYWRkcihsaW5lLCAmbGFkZHIpID09IDAgJiYKLQkJICAgIChEd2FyZl9BZGRyKWFkZHIgPT0gbGFkZHIgJiYKLQkJICAgIGR3YXJmX2xpbmVubyhsaW5lLCAmbGluZW5vKSA9PSAwKSB7Ci0JCQl0bXAgPSBkd2FyZl9saW5lc3JjKGxpbmUsIE5VTEwsIE5VTEwpOwotCQkJaWYgKHRtcCkgewotCQkJCXBwdC0+bGluZSA9IGxpbmVubzsKLQkJCQlwcHQtPmZpbGUgPSBzdHJkdXAodG1wKTsKLQkJCQlpZiAocHB0LT5maWxlID09IE5VTEwpIHsKLQkJCQkJcmV0ID0gLUVOT01FTTsKLQkJCQkJZ290byBlbmQ7Ci0JCQkJfQotCQkJCWZvdW5kID0gdHJ1ZTsKKwkvKiBGaW5kIGEgY29ycmVzcG9uZGluZyBsaW5lIChmaWxlbmFtZSBhbmQgbGluZW5vKSAqLworCWN1X2ZpbmRfbGluZWluZm8oJmN1ZGllLCBhZGRyLCAmZm5hbWUsICZsaW5lbm8pOworCS8qIERvbid0IGNhcmUgd2hldGhlciBpdCBmYWlsZWQgb3Igbm90ICovCisKKwkvKiBGaW5kIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiAobmFtZSwgYmFzZWxpbmUgYW5kIGJhc2VhZGRyKSAqLworCWlmIChkaWVfZmluZF9yZWFsX3N1YnByb2dyYW0oJmN1ZGllLCAoRHdhcmZfQWRkcilhZGRyLCAmc3BkaWUpKSB7CisJCS8qIEdldCBmdW5jdGlvbiBlbnRyeSBpbmZvcm1hdGlvbiAqLworCQl0bXAgPSBkd2FyZl9kaWVuYW1lKCZzcGRpZSk7CisJCWlmICghdG1wIHx8CisJCSAgICBkd2FyZl9lbnRyeXBjKCZzcGRpZSwgJmJhc2VhZGRyKSAhPSAwIHx8CisJCSAgICBkd2FyZl9kZWNsX2xpbmUoJnNwZGllLCAmYmFzZWxpbmUpICE9IDApCisJCQlnb3RvIHBvc3Q7CisJCWZ1bmMgPSB0bXA7CisKKwkJaWYgKGFkZHIgPT0gKHVuc2lnbmVkIGxvbmcpYmFzZWFkZHIpCisJCQkvKiBGdW5jdGlvbiBlbnRyeSAtIFJlbGF0aXZlIGxpbmUgbnVtYmVyIGlzIDAgKi8KKwkJCWxpbmVubyA9IGJhc2VsaW5lOworCQllbHNlIGlmIChkaWVfZmluZF9pbmxpbmVmdW5jKCZzcGRpZSwgKER3YXJmX0FkZHIpYWRkciwKKwkJCQkJICAgICAmaW5kaWUpKSB7CisJCQlpZiAoZHdhcmZfZW50cnlwYygmaW5kaWUsICZfYWRkcikgPT0gMCAmJgorCQkJICAgIF9hZGRyID09IGFkZHIpCisJCQkJLyoKKwkJCQkgKiBhZGRyIGlzIGF0IGFuIGlubGluZSBmdW5jdGlvbiBlbnRyeS4KKwkJCQkgKiBJbiB0aGlzIGNhc2UsIGxpbmVubyBzaG91bGQgYmUgdGhlIGNhbGwtc2l0ZQorCQkJCSAqIGxpbmUgbnVtYmVyLgorCQkJCSAqLworCQkJCWxpbmVubyA9IGRpZV9nZXRfY2FsbF9saW5lbm8oJmluZGllKTsKKwkJCWVsc2UgeworCQkJCS8qCisJCQkJICogYWRkciBpcyBpbiBhbiBpbmxpbmUgZnVuY3Rpb24gYm9keS4KKwkJCQkgKiBTaW5jZSBsaW5lbm8gcG9pbnRzIG9uZSBvZiB0aGUgbGluZXMKKwkJCQkgKiBvZiB0aGUgaW5saW5lIGZ1bmN0aW9uLCBiYXNlbGluZSBzaG91bGQKKwkJCQkgKiBiZSB0aGUgZW50cnkgbGluZSBvZiB0aGUgaW5saW5lIGZ1bmN0aW9uLgorCQkJCSAqLworCQkJCXRtcCA9IGR3YXJmX2RpZW5hbWUoJmluZGllKTsKKwkJCQlpZiAodG1wICYmCisJCQkJICAgIGR3YXJmX2RlY2xfbGluZSgmc3BkaWUsICZiYXNlbGluZSkgPT0gMCkKKwkJCQkJZnVuYyA9IHRtcDsKIAkJCX0KIAkJfQogCX0KIAotCS8qIEZpbmQgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uICovCi0JaWYgKGRpZV9maW5kX3JlYWxfc3VicHJvZ3JhbSgmY3VkaWUsIChEd2FyZl9BZGRyKWFkZHIsICZzcGRpZSkpIHsKLQkJdG1wID0gZHdhcmZfZGllbmFtZSgmc3BkaWUpOwotCQlpZiAoIXRtcCB8fCBkd2FyZl9lbnRyeXBjKCZzcGRpZSwgJmVhZGRyKSAhPSAwKQotCQkJZ290byBlbmQ7Citwb3N0OgorCS8qIE1ha2UgYSByZWxhdGl2ZSBsaW5lIG51bWJlciBvciBhbiBvZmZzZXQgKi8KKwlpZiAobGluZW5vKQorCQlwcHQtPmxpbmUgPSBsaW5lbm8gLSBiYXNlbGluZTsKKwllbHNlIGlmIChmdW5jKQorCQlwcHQtPm9mZnNldCA9IGFkZHIgLSAodW5zaWduZWQgbG9uZyliYXNlYWRkcjsKIAotCQlpZiAocHB0LT5saW5lKSB7Ci0JCQlpZiAoZGllX2ZpbmRfaW5saW5lZnVuYygmc3BkaWUsIChEd2FyZl9BZGRyKWFkZHIsCi0JCQkJCQkmaW5kaWUpKSB7Ci0JCQkJLyogYWRkciBpbiBhbiBpbmxpbmUgZnVuY3Rpb24gKi8KLQkJCQl0bXAgPSBkd2FyZl9kaWVuYW1lKCZpbmRpZSk7Ci0JCQkJaWYgKCF0bXApCi0JCQkJCWdvdG8gZW5kOwotCQkJCXJldCA9IGR3YXJmX2RlY2xfbGluZSgmaW5kaWUsICZsaW5lbm8pOwotCQkJfSBlbHNlIHsKLQkJCQlpZiAoZWFkZHIgPT0gYWRkcikgewkvKiBGdW5jdGlvbiBlbnRyeSAqLwotCQkJCQlsaW5lbm8gPSBwcHQtPmxpbmU7Ci0JCQkJCXJldCA9IDA7Ci0JCQkJfSBlbHNlCi0JCQkJCXJldCA9IGR3YXJmX2RlY2xfbGluZSgmc3BkaWUsICZsaW5lbm8pOwotCQkJfQotCQkJaWYgKHJldCA9PSAwKSB7Ci0JCQkJLyogTWFrZSBhIHJlbGF0aXZlIGxpbmUgbnVtYmVyICovCi0JCQkJcHB0LT5saW5lIC09IGxpbmVubzsKLQkJCQlnb3RvIGZvdW5kOwotCQkJfQotCQl9Ci0JCS8qIFdlIGRvbid0IGhhdmUgYSBsaW5lIG51bWJlciwgbGV0J3MgdXNlIG9mZnNldCAqLwotCQlwcHQtPm9mZnNldCA9IGFkZHIgLSAodW5zaWduZWQgbG9uZyllYWRkcjsKLWZvdW5kOgotCQlwcHQtPmZ1bmN0aW9uID0gc3RyZHVwKHRtcCk7CisJLyogRHVwbGljYXRlIHN0cmluZ3MgKi8KKwlpZiAoZnVuYykgeworCQlwcHQtPmZ1bmN0aW9uID0gc3RyZHVwKGZ1bmMpOwogCQlpZiAocHB0LT5mdW5jdGlvbiA9PSBOVUxMKSB7CiAJCQlyZXQgPSAtRU5PTUVNOwogCQkJZ290byBlbmQ7CiAJCX0KLQkJZm91bmQgPSB0cnVlOwogCX0KLQorCWlmIChmbmFtZSkgeworCQlwcHQtPmZpbGUgPSBzdHJkdXAoZm5hbWUpOworCQlpZiAocHB0LT5maWxlID09IE5VTEwpIHsKKwkJCWlmIChwcHQtPmZ1bmN0aW9uKSB7CisJCQkJZnJlZShwcHQtPmZ1bmN0aW9uKTsKKwkJCQlwcHQtPmZ1bmN0aW9uID0gTlVMTDsKKwkJCX0KKwkJCXJldCA9IC1FTk9NRU07CisJCQlnb3RvIGVuZDsKKwkJfQorCX0KIGVuZDoKIAlpZiAoZHdmbCkKIAkJZHdmbF9lbmQoZHdmbCk7Ci0JaWYgKHJldCA+PSAwKQotCQlyZXQgPSBmb3VuZCA/IDEgOiAwOworCWlmIChyZXQgPT0gMCAmJiAoZm5hbWUgfHwgZnVuYykpCisJCXJldCA9IDE7CS8qIEZvdW5kIGEgcG9pbnQgKi8KIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xODQwLDYgKzE4ODYsMTAgQEAKIAlzdHJ1Y3QgbGluZV9maW5kZXIgKmxmID0gcGFyYW0tPmRhdGE7CiAJc3RydWN0IGxpbmVfcmFuZ2UgKmxyID0gbGYtPmxyOwogCisJLyogQ2hlY2sgZGVjbGFyZWQgZmlsZSAqLworCWlmIChsci0+ZmlsZSAmJiBzdHJ0YWlsY21wKGxyLT5maWxlLCBkd2FyZl9kZWNsX2ZpbGUoc3BfZGllKSkpCisJCXJldHVybiBEV0FSRl9DQl9PSzsKKwogCWlmIChkd2FyZl90YWcoc3BfZGllKSA9PSBEV19UQUdfc3VicHJvZ3JhbSAmJgogCSAgICBkaWVfY29tcGFyZV9uYW1lKHNwX2RpZSwgbHItPmZ1bmN0aW9uKSkgewogCQlsZi0+Zm5hbWUgPSBkd2FyZl9kZWNsX2ZpbGUoc3BfZGllKTsKQEAgLTE4OTIsNiArMTk0Miw3IEBACiAJaWYgKCFkYmcpIHsKIAkJcHJfd2FybmluZygiTm8gZGVidWcgaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIHZtbGludXggLSAiCiAJCQkicGxlYXNlIHJlYnVpbGQgd2l0aCBDT05GSUdfREVCVUdfSU5GTz15LlxuIik7CisJCWNsb3NlKGZkKTsJLyogV2l0aG91dCBkd2ZsX2VuZCgpLCBmZCBpc24ndCBjbG9zZWQuICovCiAJCXJldHVybiAtRUJBREY7CiAJfQogCmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvc3RyaW5nLmMgYi90b29scy9wZXJmL3V0aWwvc3RyaW5nLmMKaW5kZXggOGZjMGJkMy4uYjlhOTg1ZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYworKysgYi90b29scy9wZXJmL3V0aWwvc3RyaW5nLmMKQEAgLTg1LDcgKzg1LDcgQEAKIAogLyoKICAqIEhlbHBlciBmdW5jdGlvbiBmb3Igc3BsaXR0aW5nIGEgc3RyaW5nIGludG8gYW4gYXJndi1saWtlIGFycmF5LgotICogb3JpZ2luYWx5IGNvcGllZCBmcm9tIGxpYi9hcmd2X3NwbGl0LmMKKyAqIG9yaWdpbmFsbHkgY29waWVkIGZyb20gbGliL2FyZ3Zfc3BsaXQuYwogICovCiBzdGF0aWMgY29uc3QgY2hhciAqc2tpcF9zZXAoY29uc3QgY2hhciAqY3ApCiB7CmRpZmYgLS1naXQgYS90b29scy9wb3dlci94ODYveDg2X2VuZXJneV9wZXJmX3BvbGljeS94ODZfZW5lcmd5X3BlcmZfcG9saWN5LmMgYi90b29scy9wb3dlci94ODYveDg2X2VuZXJneV9wZXJmX3BvbGljeS94ODZfZW5lcmd5X3BlcmZfcG9saWN5LmMKaW5kZXggZDk2NzhhMy4uMjYxOGVmMiAxMDA2NDQKLS0tIGEvdG9vbHMvcG93ZXIveDg2L3g4Nl9lbmVyZ3lfcGVyZl9wb2xpY3kveDg2X2VuZXJneV9wZXJmX3BvbGljeS5jCisrKyBiL3Rvb2xzL3Bvd2VyL3g4Ni94ODZfZW5lcmd5X3BlcmZfcG9saWN5L3g4Nl9lbmVyZ3lfcGVyZl9wb2xpY3kuYwpAQCAtNDYsNyArNDYsNyBAQAogICoKICAqICBwZXJmb3JtYW5jZQogICoJUGVyZm9ybWFuY2UgaXMgcGFyYW1vdW50LgotICoJVW53aWxsaW5nIHRvIHNhY3JhZmljZSBhbnkgcGVyZm9ybWFuY2UKKyAqCVVud2lsbGluZyB0byBzYWNyaWZpY2UgYW55IHBlcmZvcm1hbmNlCiAgKglmb3IgdGhlIHNha2Ugb2YgZW5lcmd5IHNhdmluZy4gKGhhcmR3YXJlIGRlZmF1bHQpCiAgKgogICogIG5vcm1hbApkaWZmIC0tZ2l0IGEvdmlydC9rdm0vZXZlbnRmZC5jIGIvdmlydC9rdm0vZXZlbnRmZC5jCmluZGV4IDM2NTY4NDkuLjczMzU4ZDIgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2V2ZW50ZmQuYworKysgYi92aXJ0L2t2bS9ldmVudGZkLmMKQEAgLTkwLDcgKzkwLDcgQEAKIAkgKiBXZSBrbm93IG5vIG5ldyBldmVudHMgd2lsbCBiZSBzY2hlZHVsZWQgYXQgdGhpcyBwb2ludCwgc28gYmxvY2sKIAkgKiB1bnRpbCBhbGwgcHJldmlvdXNseSBvdXRzdGFuZGluZyBldmVudHMgaGF2ZSBjb21wbGV0ZWQKIAkgKi8KLQlmbHVzaF93b3JrKCZpcnFmZC0+aW5qZWN0KTsKKwlmbHVzaF93b3JrX3N5bmMoJmlycWZkLT5pbmplY3QpOwogCiAJLyoKIAkgKiBJdCBpcyBub3cgc2FmZSB0byByZWxlYXNlIHRoZSBvYmplY3QncyByZXNvdXJjZXMKQEAgLTU3OCw3ICs1NzgsNyBAQAogCiAJbXV0ZXhfbG9jaygma3ZtLT5zbG90c19sb2NrKTsKIAotCS8qIFZlcmlmeSB0aGF0IHRoZXJlIGlzbnQgYSBtYXRjaCBhbHJlYWR5ICovCisJLyogVmVyaWZ5IHRoYXQgdGhlcmUgaXNuJ3QgYSBtYXRjaCBhbHJlYWR5ICovCiAJaWYgKGlvZXZlbnRmZF9jaGVja19jb2xsaXNpb24oa3ZtLCBwKSkgewogCQlyZXQgPSAtRUVYSVNUOwogCQlnb3RvIHVubG9ja19mYWlsOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKaW5kZXggNTU2ZTNlZi4uNjMzMDY1MyAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYworKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC0xMDM3LDYgKzEwMzcsMTcgQEAKIAlyZXR1cm4gZmF1bHRfcGZuOwogfQogCitpbnQgZ2V0X3VzZXJfcGFnZV9ub3dhaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCB3cml0ZSwgc3RydWN0IHBhZ2UgKipwYWdlKQoreworCWludCBmbGFncyA9IEZPTExfVE9VQ0ggfCBGT0xMX05PV0FJVCB8IEZPTExfSFdQT0lTT04gfCBGT0xMX0dFVDsKKworCWlmICh3cml0ZSkKKwkJZmxhZ3MgfD0gRk9MTF9XUklURTsKKworCXJldHVybiBfX2dldF91c2VyX3BhZ2VzKHRzaywgbW0sIHN0YXJ0LCAxLCBmbGFncywgcGFnZSwgTlVMTCwgTlVMTCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX3VzZXJfcGFnZV9od3BvaXNvbih1bnNpZ25lZCBsb25nIGFkZHIpCiB7CiAJaW50IHJjLCBmbGFncyA9IEZPTExfVE9VQ0ggfCBGT0xMX0hXUE9JU09OIHwgRk9MTF9XUklURTsKQEAgLTEwNzAsNyArMTA4MSwxNCBAQAogCQlpZiAod3JpdGFibGUpCiAJCQkqd3JpdGFibGUgPSB3cml0ZV9mYXVsdDsKIAotCQlucGFnZXMgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHIsIDEsIHdyaXRlX2ZhdWx0LCBwYWdlKTsKKwkJaWYgKGFzeW5jKSB7CisJCQlkb3duX3JlYWQoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CisJCQlucGFnZXMgPSBnZXRfdXNlcl9wYWdlX25vd2FpdChjdXJyZW50LCBjdXJyZW50LT5tbSwKKwkJCQkJCSAgICAgYWRkciwgd3JpdGVfZmF1bHQsIHBhZ2UpOworCQkJdXBfcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKKwkJfSBlbHNlCisJCQlucGFnZXMgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHIsIDEsIHdyaXRlX2ZhdWx0LAorCQkJCQkJICAgICBwYWdlKTsKIAogCQkvKiBtYXAgcmVhZCBmYXVsdCBhcyB3cml0YWJsZSBpZiBwb3NzaWJsZSAqLwogCQlpZiAodW5saWtlbHkoIXdyaXRlX2ZhdWx0KSAmJiBucGFnZXMgPT0gMSkgewpAQCAtMTA5Myw3ICsxMTExLDggQEAKIAkJCXJldHVybiBnZXRfZmF1bHRfcGZuKCk7CiAKIAkJZG93bl9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwotCQlpZiAoY2hlY2tfdXNlcl9wYWdlX2h3cG9pc29uKGFkZHIpKSB7CisJCWlmIChucGFnZXMgPT0gLUVIV1BPSVNPTiB8fAorCQkJKCFhc3luYyAmJiBjaGVja191c2VyX3BhZ2VfaHdwb2lzb24oYWRkcikpKSB7CiAJCQl1cF9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwogCQkJZ2V0X3BhZ2UoaHdwb2lzb25fcGFnZSk7CiAJCQlyZXR1cm4gcGFnZV90b19wZm4oaHdwb2lzb25fcGFnZSk7Cg==